Piotr Kozyra
Paweł Chuchła
Korekcja zniekształceń geometrycznych w
kamerach
str. 2
1.Wstęp
Niniejsza praca ma na celu przybliżenie analizy i korekcji zniekształceń
geometrycznych kamer cyfrowych . Zdecydowano się na przyjęcie do analizy zniekształceń
radialnych ze względu na uproszczenie obliczeń.
2.Przetwarzanie obrazów
Komputerowy zapis obrazów posiada wiele różnych formatów i sposobów. Ze
względu na złożoność budowy naturalnego środowiska wszystkie modele zapisu są pewnymi
przybliżeniami opisu otoczenia. Liczba kolorów w świecie rzeczywistym jest nieskończona.
Jednakże ludzkie oko dostrzega tylko pewien zakres barw , są to barwy z zakresu widzialnego
widma światła. Przeniesienie danych cech otoczenia na postać cyfrową jest trudne i związane
z pewnymi ograniczeniami. Układy komputerowe mają skończoną liczbę pamięci oraz
skończone możliwości pobierania i przetwarzania energii a tym samym skończoną liczbę
bodźców które mogą oddziaływać na układ.
Układy cyfrowe mają pewne ograniczenia wynikające z złożoności budowy
naturalnego środowiska. W celu możliwości przetwarzania obrazu stosuje się kilka
uproszczeń takich jak :ograniczenie zdolności rozpoznawania szczegółów, ograniczenie ilości
rozpoznawanych stanów obrazu (kolorów) , analiza obrazu płaskiego statycznego zamiast
przestrzennego i dynamicznego.
Redukcja zdolności rozpoznawania szczegółów zrealizowana jest poprzez
dyskretyzację obrazu przeprowadzoną w wyniku podziału obrazu na siatkę punktów pikseli.
Obraz taki jest reprezentowany przez siatkę MxN pikseli, która określa liczbę spróbkowanych
punktów w pionie i w poziomie. Rozmiar siatki jest określany jako rozdzielczość ekranu.
Większa liczba pikseli powoduje zwiększenie szczegółowości obrazu a więc możliwość
przekazania więcej informacji o danym obiekcie reprezentowanym cyfrowo. Zwiększenie
wielkości siatki- rozdzielczości powoduje też zwiększenie złożoności obliczeń ze względu na
konieczność większej liczby działań gdyż wzrosła liczba punktów. Kompromisem jest dobór
odpowiedniej szczegółowości a szybkości przetwarzania obrazu
Rysunek 1 Prostokątna siatka obrazu cyfrowego o rozdzielczości MxN
str. 3
Drugim ważnym ograniczeniem jest liczba kolorów mogących zostać zapisana.
Najpopularniejszymi
obecnie
przestrzeniami
kolorów
są
postacie:
binarna,
monochromatyczna, kolorowa w przestrzeni RGB i kolorowa w przestrzeni HSV
Obraz binarny jest reprezentacją w której piksel przyjmuje jedną z dwóch wartości
albo barwę białą albo barwę czarną .
Obraz monochromatyczny najczęściej występuje w postaci obrazu szarościowego.
Posiada szereg skwantowanych wartości pikseli które mogą przyjmować wartości z
określonego przedziału . Dla ośmiobitowej reprezentacji obraz taki posiada wartości
graniczne 0 (czerń) i 255 (biel) . Wartości między tym punktami granicznymi są odcieniami.
Liczba poziomów jasności jest potęgą liczby dwa i zależy od liczby bitów przeznaczonych na
zapis obrazu przez kartę graficzną
Obraz RGB jest obrazem o złożonej postaci zapisu . Istotą tego zapisu jest przypisanie
jednemu pikselowi trzech składowych o różnych poziomach jasności :czerwonej , zielonej i
niebieskiej. Przestrzeń RGB jest przestrzenią euklidesową a liczba kolorów możliwych do
zapisania wynosi ponad 16.5 miliona.
3.Zniekształcenia obrazów
Ze względu na tani koszt produkcji pojawiło się wiele elementów cyfrowych ,
aparatów, soczewek których jakość przetwarzania dodatkowo utrudnia przetwarzanie
obrazów. Do jednych z takich utrudnień należą zniekształcenia tangecjalne. Spowodowane są
niedokładnością umiejscowienia matrycy względem soczewki , kiedy istnieje
nierównoległość umiejscowienia soczewki względem płaszczyzny matrycy.
Rysunek 2 Model powstawania zniekształceo tangecjalnych
str. 4
Rysunek 3 Rzeczywisty model zniekształceo tangecjalnych
Zniekształcenia te mogą zostać skorygowane poprzez wyprowadzenie dwóch nowych
parametrów p1 i p2 , gdzie r jest odległością punktów od środka matrycy
𝑥
𝑠𝑘𝑜𝑟𝑦𝑔𝑜𝑤𝑎𝑛𝑒
= 𝑥 + [2𝑝
1
𝑦 + 𝑝
2
𝑟
2
+ 2𝑥
2
]
𝑦
𝑠𝑘𝑜𝑟𝑦𝑔𝑜𝑤𝑎𝑛𝑒
= 𝑥 + [2𝑝
1
𝑟
2
+ 2𝑥
2
+ 𝑝
2
𝑥]
Innymi popularnymi zniekształceniami w przetwarzaniu cyfrowym obrazów jest błąd
w pozycji matrycy wynikający z konstrukcji soczewki. Są to zniekształcenia radialne .
Spowodowane są faktem iż promienie padające na obszar brzegu soczewki są bardziej
zakrzywiane, niż promienie świetlne padające w jej środku. Z tego powodu zniekształcenia
radialne najmniej widoczne są w centrum matrycy i najbardziej na rogach matrycy gdzie
promień zniekształcenia jest już większy
Rysunek 4 Przykład powstawania zniekształceo radialnych
str. 5
Rysunek 5 Rzeczywisty obraz zniekształceo radialnych ,
poszczególne koła są obszarami o jednakowym zniekształceniu
Korekcji zniekształceń można dokonać poprzez wyznaczenie dwóch parametrów k
1
i k
2
.
Takie rozwiązanie jest poprawne dla większości kamer . W sporadycznych przypadkach
trzeba zastosować współczynnik k
3.
𝑥 = 𝑥(1 + 𝑘
1
𝑟
2
+ 𝑘
2
𝑟
4
+ 𝑘
3
𝑟
6
)
𝑦 = 𝑦(1 + 𝑘
1
𝑟
2
+ 𝑘
2
𝑟
4
+ 𝑘
3
𝑟
6
)
4.Symulacja zniekształceń w programie Matlab
W pracy przyjęto model zniekształceń radialnych w którym promień zniekształcenia
jest zależny od promienia rzeczywistego .
𝑟
𝑘
𝑟 = 𝑎
𝑛
𝑟
𝑛
4
𝑛=0
Obraz testowy (rys 4) został wczytany do pakietu matlab w postaci RGB a następnie
przekonwertowany do obrazu monochromatycznego
a = imread('test3.png');
[z2 map]=rgb2ind(a,65500);
Następnie obraz poddano zniekształceniu geometrycznemu w postaci zależności promienia
zniekształconego
r2=r+k0*r^2+k2*r^3+k3*r^4;
gdzie
k0=1.65e-4;
k2=6.92*10^(-7);
k3=8.29*10^(-9);
Wynik zniekształcenia został pokazany na rysunku 7
str. 6
Rysunek 6 Obraz testowy
Rysunek 7 Obraz zniekształcony radialnie
Proces zniekształcenia został zrealizowany w sposób iteracyjny. Dla każdego piksela
wyznaczany jest nowa współrzędna w obrazie zniekształconym.
for k1=1:300
for k=1:300
r=sqrt((k1-xs)^2+(k-ys)^2); %promień obrazu orginalnego
r2=r+k0*r^2+k2*r^3+k3*r^4; %promień zniekształcenia
kat=atan((k-150)/(k1-150)); %wyliczenie kąta między wsp x,y
x2=round(r2*cos(kat))+150; %wyliczenie nowej współrzędnej x
y2=round(r2*sin(kat))+150; %wyliczenie nowej współrzędnej y
if (r>0 && x2>0 && x2<wymiar(1) && y2>0 && y2<wymiar(2))
z3(k1,k)=z2(x2,y2);
end
end
end
str. 7
W celu wyliczenia współrzednej x i y zastosowano właściwości matematyczne przestrzeni
geometrycznej. Współrzędne kartezjańskie zamieniono na biegunowe gdzie do opisu
wykorzystywany jest kąt między promieniem r a osią Ox oraz promień x. Dla nowych
współrzędnych promień jest zmienny natomiast kąt jest bez zmian.
xs=round(wymiar(1)/2); % wyznaczenie współrzędnej x środka obrazu
ys=round(wymiar(2)/2); % wyznaczenie współrzędnej y środka obrazu
W tak zniekształconym obrazie spróbowano usunąć zakłócenie.
Wyznaczono kontur obrazu i wyznaczono środek zniekształceń geometrycznych obrazu
BW2=bwperim(z3,8);
srodek=regionprops(BW2,'centroid');
centr = cat(1, srodek.Centroid);
xs1=round(mean(centr(:,1)));
ys1=round(mean(centr(:,2)));
Następnie podzielono obraz na na punkty charakterystyczne
ff=regionprops(BW2,
'ConvexHull'
);
zzzz=cat(1, ff.ConvexHull);
Potem przez poszczególne części obrazu wyznaczono funkcją
polyfit(x,y,3)
wielomian
stopnia 4 obrazujący poszczególne zniekształcenia . Potem dokonano minimalizacji funkcji
Efektem prac było wyliczenie współcznników funkcji zniekształcenia które różniły się od
zadanego pierwotnie zniekształceń
Wyliczone współczynniki:
k02=0.000165;
k22=6.92*10^(-7);
k32=8.29*10^(-9);
Rysunek 8 Obraz po korekcji zniekształceo (lewy ) , obraz przez zniekształceniem (prawy)
str. 8
5.Podsumowanie
Jak można zauważyć korekcja zniekształceń nie przywróciła w 100% formatu
dawnego obrazu . Widoczne są jeszcze drobne zniekształcenia na krawędziach obrazu.
Niedokładność odtworzenia spowodowania jest niedokładnością obliczeń oraz błędami
zaokrąglenia wynikającą ze skończonej reprezentacji liczby zmiennoprzecinkowej.
Dodatkowo współrzędnie pikseli musza być liczbą całkowitą więc i w tym punkcie dochodzi
do zniekształcenia odwzorowania. Sam proces obliczeniowy jest złożony i pracochłonny .
Złożoność algorytmu zakłócającego w przypadku obrazu kwadratowego wynosi 𝑛
2
gdzie n
jest liczbą pikseli na jednej ścianki. Dla obrazu 300x300 px program wykonywał się już w
zauważalny czasowo sposób. W przypadku obrazka testowego o wymiarach 900x900px
proces trwał porównywalnie dłużej . Usuwanie zniekształceń jest jeszcze bardziej
pracochłonne i czasochłonne w porównaniu z zakłócaniem .Pokazuje to iż problem
złożoności przetwarzania obrazów w postaci cyfrowej jest procesem skomplikowanym
matematyczne ze względu na mnogość operacji do wykonania.
Rosnąca popularność optyki i elektroniki cyfrowej spowodowała polepszenie rozwoju
tej dziedziny. Kamery cyfrowe i aparaty dysponują doskonalszymi elementami. W tanich
cyfrówkach efekt zniekształceń radialnych jest coraz rzadziej spotykany . Obecnie efekt ten
występuję w kamerach bronchoskopowych używanych w diagnostyce medycznej. W
przypadku technicznym efekt radialności obrazu jest efektem niekorzystnym lecz nie można
go zniwelować w jednoznaczny sposób mechaniczny.
Zniekształcenia geometryczne radialne powstają też w naturze. Inaczej są zwane
efektem rybiego oka ze względu na podobnie zniekształcony obraz w oku ryby. Programy
graficzne posiadają odpowiednie filtry to wprowadzania tego typu zniekształceń. Często w
celach artystycznych efekt ten jest dodawany do fotografii i powoduje urozmaicenie
oglądanych zdjęć.
Skorygowanie
zniekształceń
obrazu
cyfrowego
jest
procesem
operacji
matematycznych realizowanych na zbiorze pikseli. W zależności od spodziewanego efektu
korygując staramy się wydobyć obraz orginalny. Od sposobu modelowania zjawiska oraz
przyjętego sposobu obliczeń zależy czas działania i uzyskany efekt. Jednakże największą
zagadką korekcji jest odpowiedź na pytanie jak wygląda orginalny obraz i czy można go
wyliczyć?