background image

 

 

 

Piotr Kozyra 

Paweł Chuchła 

 

Korekcja zniekształceń geometrycznych w 

kamerach 

 

 

background image

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 

 

background image

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 

 

background image

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 

 

background image

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

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  

background image

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

 

background image

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)

 

 

 

 

 

background image

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ć?