Camera Calibration Toolbox

background image

1

Akademia Górniczo-Hutnicza w Krakowie

Wydział Inżynierii Mechanicznej i Robotyki

Katedra Robotyki i Mechatroniki

Camera Calibration Toolbox for Matlab

Opis narzędzia i sposobu wykorzystania jego możliwości do kalibracji kamery

background image

2

1. Problem kalibracji systemu wizyjnego


Podczas tworzenia stanowiska z jednym robotem i systemem mamy zwykle do czynienia z następującą

sytuacją:

Robot jest przymocowany na stałe sztywno do stanowiska

Jako globalny układ współrzędnych wygodnie jest obrać układ związany z robotem – przemawia za tym
wygoda zadawania współrzędnych w programie sterującym lub przez operatora.

Położenie i orientacja kamery względem układu związanego z robotem nie są dokładnie znane, ich
wyznaczenie jest jednym z celów kalibracji

Takie podejście można uzasadnić tym, że kamerę umieszcza się tam, gdzie jednocześnie spełnia ona
swoje zadanie najlepiej (zadanie „obserwacji” przestrzeni roboczej) i gdzie jest ją najwygodniej
umieścić. Można również ująć to następujący sposób: położenie i orientacja kamery są zależne od
ustawienia kamery wynikającego z jej zadania i możliwości montażu, natomiast nie możemy zadać
kamerze z góry określonych wartości położenia i orientacji nie zwracając uwagi na możliwość
osiągnięcia tych wartości w praktyce i wynikający z tego obszar widzenia kamery.
W przypadku takiego rozwiązania możliwe jest dowolne „dostrajanie” położenia kamery związane z
korekcją zasięgu widzenia. Może być to związane np. ze zmianami w przestrzeni roboczej. W takiej
sytuacji należy po prostu przeprowadzić kalibrację w celu otrzymania nowych parametrów – ręczny
pomiar położenia orientacji i położenia kamery nie jest potrzebny.

Na czas kalibracji stanowiska jest w nim umieszczony wzorzec o znanym położeniu i orientacji

Wzorzec w postaci przedmiotu będącego punktem odniesienia o określonym przez proces kalibracji
kształcie, wymiarach i kolorach bądź innych cechach jest umieszczony w znanym położeniu i orientacji
względem układu związanego z robotem.
Robot może np. uchwycić wzorzec w pewnym jego punkcie który można uznać za początek układu
współrzędnych związanego z wzorcem – otrzymujemy możliwe do obliczenia położenie o orientację
tego układu względem układu globalnego (związanego z robotem)



Dowolny przedmiot umieszczony w zasięgu widzenia systemu wizyjnego w zależności od możliwości

tego systemu może być opisany przy pomocy cech takich jak kształt, położenie, orientacja względem
kamery. W stanowisku zrobotyzowanym potrzeba natomiast określenia położenia i orientacji przedmiotu
względem układu współrzędnych związanego z robotem.

Jednym z celów kalibracji jest wyznaczenie położenia i orientacji kamery względem układu związanego z

robotem – dzięki temu dane z dowolnego systemu wizyjnego (po odpowiednim przekształceniu) można
zinterpretować w układzie globalnym (związanym z robotem), co w rezultacie tworzy kompletne stanowisko
z robotem ze sprzężeniem wizyjnym.

background image

3

Innym celem jest natomiast wyznaczenie parametrów kamery – nie zawsze są one znane i nie zawsze jest

dostęp do informacji o nich. Kalibracja umożliwia również zbadanie cech kamery takich jak: ogniskowa,
punkt skupienia czy zniekształcenia geometryczne. Jest to o tyle istotne, że w przypadku kalibracji
otrzymujemy informacje o konkretnym egzemplarzu kamery pracującym w warunkach, w jakich będzie on
pracował po przeprowadzeniu kalibracji co daje nam rzeczywisty i dokładny obraz jakości i parametrów
systemu jakim dysponujemy.

Poniższe rysunki ilustrują opisany powyżej problem kalibracji i jej cel:
(p/o oznacza położenie i orientację)

Rys 1.1. Układy współrzędnych podczas kalibracji

Rys 1.2. Układy współrzędnych po przeprowadzeniu kalibracji

Ro

b

o

t

W

z

o

rz

e

c

K

a

m

e

ra

p/o kamery (globalne)

nieznane

p/

o w

zo

rca

(g

lob

aln

e)

zn

an

e

p/o w

zorca

wzglę

dem ka

mery

wyzn

acz

ane p

odcz

as ka

libra

cji

Ro

b

o

t

K

a

m

e

ra

p/o kamery (globa

lne)

znane

p/o

prz

ed

mio

tu (g

lob

aln

e)

mo

żliw

e d

o o

blicz

en

ia

p/o p

rzedm

iotu w

zglę

dem

kam

ery

zna

ne

P

rz

e

d

m

io

t

background image

4

2. Camera Calibration Toolbox

– opis narzędzia

Informacje ogólne

Przybornik Camera Calibration Toolbox jest narzędziem opracowanym przez Jean-Yves Bouguet,

doktora Wydziału Inżynierii Elektrycznej California Institute of Technology w Pasadenie.

Narzędzie jest udostępniane do pobrania jako przybornik z GUI dla Matlaba w wersji 5.0 i wyższych,

dostępny do pobrania pod adresem [1], oraz w wersji napisanej w języku C, udostępnione w ramach otwartej
biblioteki „Open Source Computer Vision Library” (link do strony pobierania: [2]).

Instalacja i uruchomienie narzędzia

po rozpakowaniu archiwum *.zip należy umieścić w zbiorze path ścieżkę wskazującą na folder w
którym znajdują się pliki *.m narzędzia

przybornik z graficznym interfejsem GUI uruchomić można z poziomu Matlaba poleceniem calib lub
calib_gui

Dane wejściowe do kalibracji

Do przeprowadzenia kalibracji należy przygotować następujące elementy:

płaski i dokładnie wykonany wzorzec (szachownica)

wymiar pojedynczego pola wzorca

należy wybrać pewien obszar na wzorcu o wymiarze n x m pól który będzie brany pod uwagę
podczas kalibracji (Uwaga: najlepiej wybrać obszar w którym łatwo jest rozpoznać narożniki, czyli
taki, którego narożniki nie zlewają się z nie wykorzystywaną częścią wzorca)

należy określić który z narożników będzie stanowił punkt odniesienia (początek lokalnego układu
współrzędnych związanego z wzorcem) i pamiętać o wybranym narożniku podczas całego procesu
kalibracji

wykonać serię zdjęć wzorca przy pomocy kalibrowanej kamery, w różnych położeniach i orientacji
wzorca (Uwaga: położenie i orientacja kamery powinny być stałe)

aby móc wykorzystać dane z kalibracji do ustalenia położenia i orientacji kamery względem układu
współrzędnych związanego z robotem należy wybrać jako punkt odniesienia narożnik wybranego
obszaru na wzorcu, którego położenie względem układu związanego z robotem jest znane oraz znać
orientację wzorca względem układu związanego z robotem (Uwaga: wystarczą dane o położeniu i
orientacji wzorca względem układu związanego z robotem dla jednego z fotografowanych położeń)

katalog w którym znajdują się zdjęcia należy ustawić jako aktualny katalog roboczy w Matlabie

background image

5

Parametry zwracane przez program

Po przeprowadzeniu kalibracji w przestrzeni roboczej Matlaba znajdują się zmienne przechowujące

parametry kalibracji oraz jej wyniki. Poniżej zestawiono poszczególne parametry i opisano ich znaczenie:

rodzaj

parametrów

zmienna

przechowująca

parametr

wymiary

zmiennej

znaczenie

wewnętrzne

fc

2x1

Długość ogniskowej [piksele]

cc

2x1

Odległość punktu skupienia [jednostka w jakiej podawane

były dane podczas kalibracji]

alpha_c

1x1

Kąt pomiędzy osiami X i Y [stopnie]

kc

5x1

Zniekształcenia osiowe i styczne [współczynnik]

zewnętrzne

Rc_<nr_obrazu>

3x3

Macierz rotacji dla obrazu o numerze <nr_obrazu>

Tc_<nr_obrazu>

3x1

Macierz translacji dla obrazu o numerze <nr_obrazu>

Wykorzystanie wyników kalibracji

Opisane powyżej dane wewnętrzne można wykorzystać jako informacje o jakości systemu wizyjnego,

które mogą pomóc w ocenie/modyfikacji kalibrowanego stanowiska.

Dane zewnętrzne, czyli macierze rotacji i translacji mogą posłużyć do ustalenia położenia i orientacji

kamery względem globalnego (związanego z robotem) układu współrzędnych. Mając dane macierze rotacji i
translacji wzorca względem kamery dla poszczególnych fotografii można wybrać jedną z fotografii (pod
warunkiem że znamy położenie i orientację wzorca względem robota podczas wykonywania danej fotografii)
i po odpowiednich przekształceniach otrzymamy położenie i orientację kamery względem robota.

background image

6

3.

Przykład kalibracji kamery z wykorzystaniem Camera Calibration Toolbox

Uruchomienie aplikacji z poziomu Matlaba:

>> calib

Do wyboru są 3 opcje: wczytanie wszystkich obrazów od razu do pamięci, wczytywanie ich kolejno oraz wyjście z

programu

Po kliknięciu przycisku „Standard” wyświetlone zostaje okno z pozostałymi funkcjami programu:

W celu podania nazw plików ze zdjęciami należy kliknąć przycisk „Image Names”

. Picture 17.jpg Picture 26.jpg Picture 35.jpg Picture 5.jpg
.. Picture 18.jpg Picture 27.jpg Picture 36.jpg Picture 6.jpg
Picture 1.jpg Picture 19.jpg Picture 28.jpg Picture 37.jpg Picture 7.jpg
Picture 10.jpg Picture 2.jpg Picture 29.jpg Picture 38.jpg Picture 8.jpg
Picture 11.jpg Picture 20.jpg Picture 3.jpg Picture 39.jpg Picture 9.jpg
Picture 12.jpg Picture 21.jpg Picture 30.jpg Picture 4.jpg Thumbs.db
Picture 13.jpg Picture 22.jpg Picture 31.jpg Picture 40.jpg folder.dat
Picture 14.jpg Picture 23.jpg Picture 32.jpg Picture 41.jpg
Picture 15.jpg Picture 24.jpg Picture 33.jpg Picture 42.jpg
Picture 16.jpg Picture 25.jpg Picture 34.jpg Picture 43.jpg

background image

7

Zostają załadowane pliki znajdujące się w katalogu roboczym


Basename camera calibration images (without number nor suffix): Picture

Program pyta o początkowe znaki nazwy plików które będzie wczytywał. Ponieważ pliki znajdujące się w folderze

m

ają nazwy w formacie „Picture XX” gdzie XX to numer obrazu, podano jako nazwę bazową: „Picture ”





Image format: ([]='r'='ras', 'b'='bmp', 't'='tif', 'p'='pgm', 'j'='jpg',
'm'='ppm') j

Program oczekuje teraz na wprowadzenie przez użytkownika typu plików graficznych jakie mają zostać

załadowane

Jako typ pliku wybrano „j”, co oznacza pliki w formacie *.jpg

Loading image
1...2...3...4...5...6...7...8...9...10...11...12...13...14...15...16...17...18.
..19...20...21...22...23...24...25...26...27...28...29...30...31...32...33...34
...35...36...37...38...39...40...41...42...43...
done


Program wyświetla załadowane pliki

background image

8

Kolejnym etapem jest wydobywanie narożników ze zdjęć:

Extraction of the grid corners on the images
Number(s) of image(s) to process ([] = all images) = 22:32

Należy wskazać numery zdjęć, które mają być brane pod uwagę podczas kalibracji. Wybrano zdjęcia o numerach

od 22 do 23. Pozostawienie pustego miejsca wskazuje na wszystkie obrazy znajdujące się w katalogu.





Ustalenie rozmiaru okna dla wy

szukiwarki narożników

Wybrano rozmiar domyślny poprzez pozostawienie pustego pola


Window size for corner finder (wintx and winty):
wintx ([] = 5) =
winty ([] = 5) =
Window size = 11x11




Program pyta czy zastosować automatyczne liczenie prostokątów



Do you want to use the automatic square counting mechanism (0=[]=default)
or do you always want to enter the number of squares manually (1,other)?

Wybrano liczenie automatyczne





Rozpoczęcie analizy obrazu „Picture 22.jpg”


Processing image 22...
Using (wintx,winty)=(5,5) - Window size = 11x11 (Note: To reset the window
size, run script clearwin)







background image

9

Wskazanie narożników

Click on the four extreme corners of the rectangular complete pattern (the
first clicked corner is the origin)...


Należy wskazać na cztery kolejne narożniki fragmentu mxn kratek przy pomocy którego przeprowadzamy

kalibrację

UWAGA: Należy w przypadku wszystkich obrazów wybranych do kalibracji jako pierwszy narożnik wskazywać

ten sam punkt na wzorcu i powinien to być ten punkt dla którego znane są położenie i orientacja (wystarczy

znajomość tych cech tylko dla jednego zdjęcia)


Określenie ilości pól wzdłuż osi X i Y:


Could not count the number of squares in the grid. Enter manually.
Number of squares along the X direction ([]=10) = 4
Number of squares along the Y direction ([]=10) = 5

Jak widać, automatyczne liczenie nie powiodło się, program prosi o ręczne wprowadzenie ilości pól.

Wprowadzono odpowiednie wartości.

background image

10

Określenie wymiaru pojedynczego pola:


Size dX of each square along the X direction ([]=100mm) = 40
Size dY of each square along the Y direction ([]=100mm) = 40

Wprowadzono odpowiednie wymiary.

Wprowadzenie współczynników zniekształceń


If the guessed grid corners (red crosses on the image) are not close to the
actual corners,
it is necessary to enter an initial guess for the radial distortion factor kc
(useful for subpixel detection)
Need of an initial guess for distortion? ([]=no, other=yes)

W przypadku gdy czerwone znaki + (widoczne na poprzedniej stronie

) nie pokrywają się z rzeczywistymi

punktami przecięcia wzorca można wprowadzić współczynnik zniekształcenia dzięki któremu program

zmodyfikuje utworzoną siatkę. Jego wartości wynosi w praktyce od -1 do 1. W przypadku zastosowania

współczynnika można obejrzeć efekt i w razie potrzeby ponownie zmodyfikować współczynnik. W tym przypadku

nie użyto współczynnika zniekształceń.


Następuje wydobywanie krawędzi

Corner extraction...


Ten sam proces przeprowadzany jest dla kolejnych zdjęć.

Rozmiar okna, wymiary k

ratek oraz ilości kratek wzdłuż prostych X i Y proponowane są takie jakie zostały

wprowadzone wcześniej. Po zakończeniu analizy ostatniego zdjęcia wyświetlany jest napis:

done



Uruchomienie procesu kalibracji

W celu uruchomienia procesu kalibracji należy kliknąć przycisk „Calibration”

Seria komunikatów o zdjęciach które nie zostały wykorzystane w kalibracji:


WARNING: Need to extract grid corners on image 1 - This image is now set
inactive

background image

11

WARNING: Need to extract grid corners on image 2 - This image is now set
inactive
WARNING: Need to extract grid corners on image 3 - This image is now set
inactive
WARNING: Need to extract grid corners on image 4 - This image is now set
inactive
WARNING: Need to extract grid corners on image 5 - This image is now set
inactive
WARNING: Need to extract grid corners on image 6 - This image is now set
inactive
WARNING: Need to extract grid corners on image 7 - This image is now set
inactive
WARNING: Need to extract grid corners on image 8 - This image is now set
inactive
WARNING: Need to extract grid corners on image 9 - This image is now set
inactive
WARNING: Need to extract grid corners on image 10 - This image is now set
inactive
WARNING: Need to extract grid corners on image 11 - This image is now set
inactive
WARNING: Need to extract grid corners on image 12 - This image is now set
inactive
WARNING: Need to extract grid corners on image 13 - This image is now set
inactive
WARNING: Need to extract grid corners on image 14 - This image is now set
inactive
WARNING: Need to extract grid corners on image 15 - This image is now set
inactive
WARNING: Need to extract grid corners on image 16 - This image is now set
inactive
WARNING: Need to extract grid corners on image 17 - This image is now set
inactive
WARNING: Need to extract grid corners on image 18 - This image is now set
inactive
WARNING: Need to extract grid corners on image 19 - This image is now set
inactive
WARNING: Need to extract grid corners on image 20 - This image is now set
inactive
WARNING: Need to extract grid corners on image 21 - This image is now set
inactive
WARNING: Need to extract grid corners on image 33 - This image is now set
inactive
WARNING: Need to extract grid corners on image 34 - This image is now set
inactive
WARNING: Need to extract grid corners on image 35 - This image is now set
inactive
WARNING: Need to extract grid corners on image 36 - This image is now set
inactive
WARNING: Need to extract grid corners on image 37 - This image is now set
inactive
WARNING: Need to extract grid corners on image 38 - This image is now set
inactive
WARNING: Need to extract grid corners on image 39 - This image is now set
inactive
WARNING: Need to extract grid corners on image 40 - This image is now set
inactive
WARNING: Need to extract grid corners on image 41 - This image is now set
inactive

background image

12

WARNING: Need to extract grid corners on image 42 - This image is now set
inactive
WARNING: Need to extract grid corners on image 43 - This image is now set
inactive

Optymalizacja parametrów: współczynnik proporcjonalności, ogniskowa, punkt skupienia, kąt pomiędzy

krawędziami kratek (nie został zoptymalizowany), zniekształcenia (niezupełnie zoptymalizowane)



Aspect ratio optimized (est_aspect_ratio = 1) -> both components of fc are
estimated (DEFAULT).
Principal point optimized (center_optim=1) - (DEFAULT). To reject principal
point, set center_optim=0
Skew not optimized (est_alpha=0) - (DEFAULT)
Distortion not fully estimated (defined by the variable est_dist):
Sixth order distortion not estimated (est_dist(5)=0) - (DEFAULT) .
Initialization of the principal point at the center of the image.
Initialization of the intrinsic parameters using the vanishing points of planar
patterns.

Initialization of the intrinsic parameters - Number of images: 11


Wypisanie parametrów kalibracji (najpierw przed, a następnie po optymalizacji). Te i inne parametry zostają

zapisane w przestrzeni roboczej. Można je zapisać na dysku klikając przycisk „Save”.



Calibration parameters after initialization:

Focal Length: fc = [ 862.90282 862.90282 ]
Principal point: cc = [ 319.50000 239.50000 ]
Skew: alpha_c = [ 0.00000 ] => angle of pixel = 90.00000 degrees
Distortion: kc = [ 0.00000 0.00000 0.00000 0.00000 0.00000 ]

Main calibration optimization procedure - Number of images: 11
Gradient descent iterations:
1...2...3...4...5...6...7...8...9...10...11...12...13...14...15...16...17...18.
..19...20...21...22...23...24...25...26...27...28...29...30...done
Estimation of uncertainties...done


Calibration results after optimization (with uncertainties):

Focal Length: fc = [ 840.76314 840.27962 ] ± [ 20.49455 20.45415 ]
Principal point: cc = [ 318.39471 254.68520 ] ± [ 13.45152 15.66744 ]
Skew: alpha_c = [ 0.00000 ] ± [ 0.00000 ] => angle of pixel axes
= 90.00000 ± 0.00000 degrees
Distortion: kc = [ 0.29300 -3.22058 0.02060 0.00245 0.00000 ]
± [ 0.16613 1.60011 0.00632 0.00481 0.00000 ]
Pixel error: err = [ 0.84073 0.83030 ]

Note: The numerical errors are approximately three times the standard
deviations (for reference).

background image

13

4.

Przeglądanie i interpretacja otrzymanych wyników

Wymiary ogniskowej i punktu skupienia zostały wyznaczone z względnie dużymi niepewnościami. W

celu obniżenia wartości niepewności należało by przeprowadzić dokładniej procedurę wyznaczania
krawędzi.

Ogniskowa soczewki oraz punkt skupienia mają różne wartości we wzajemnie prostopadłych kierunkach,

występują także zniekształcenia, co świadczy o niedoskonałościach geometrycznych soczewki.

Kąt pomiędzy krawędziami pikseli kamery jest równy 90°.

Klikając przycisk „Reproject on images” można przeglądać jak wyglądają punkty rzutowane po kalibracji

przez program na tle wcześniej utworzonych punktów:

background image

14

Klikając na przycisk „Analyse error” otrzymujemy wykres błędów odwzorowania poszczególnych

wewnętrznych narożników dla każdego ze zdjęć [błąd w pikselach]:

background image

15

Chcąc obejrzeć jak program rozpoznał poszczególne położenia i orientację wzorca względem kamery

należy kliknąć „Show extrinsic”:

W powyższym trybie można przełączać się pomiędzy widokiem wzorca „ruchomego” względem kamery,

lub na odwrót.

Macierze translacji i rotacji układu związanego z wzorcem względem układu związanego z kamerą

wyznaczone dla wzorca z fotografii „Picture 22.jpg”:


Tc_22 =
-70.8519
97.9226
551.0323

Rc_22 =
0.9624 -0.2702 0.0262
-0.2706 -0.9468 0.1740
-0.0223 -0.1746 -0.9844

background image

16

5.

Źródła:

[1]

http://www.vision.caltech.edu/bouguetj/calib_doc/download/TOOLBOX_calib.zip

[2]

http://sourceforge.net/project/showfiles.php?group_id=22870

[3]

http://www.vision.caltech.edu/bouguetj/calib_doc/index.html

[4] prezentacja „Metoda kalibracji Jean Yves Bouguet Toolbox Matlab”


Wyszukiwarka

Podobne podstrony:
Control System Toolbox
Dirkon camera obscura do składania
Instrukcja obsługi Nokia Fun Camera PL
pinhole camera
Introduction to multivariate calibration in analytical chemistry
V80 Camera Training V2
INSTRUKCJA OBSŁUGI CAR KEYS MICRO CAMERA 808, 809 PL
Camera Raw 6 1 ReadMe
Effective Calibration WRIR98 4005
camera system
Kody błędów Opel Calibra, SAM NAPRAWIAM
Color Video Camera Operation
Halley Calibration Tool SOP
How to find hidden cameras
Polski opis Calibre - Szybki start, Opisy programów FREE
accessory toolbox assembly
camera obscura
HONDA Ridgeline Rear Camera System Owner's Manual
Opel Calibra

więcej podobnych podstron