Skip navigation

Halszem optika kalibrációja a Matlab OCamCalib Toolbox-szal

Előismeret

A halszem optika kalibrációjához Davide Scaramuzza OCamCalib Toolbox-át használjuk (ZIP a csatolmányban). A kalibrációhoz szükséges képeket maga a tömörített állomány is tartalmazza.

Megjegyzés: Ez a leírás az OCamCalib Toolbox hivatalos segédanyaga alapján készült. A képek is erről az oldalról származnak.

A kalibráció lépései

  1. Toolbox indítása: Matlab alatt a letöltött Toolbox könyvtárába lépve indítsuk el az ocam_calib programot.
    A Toolbox főablaka

  2. Képek betöltése: Kattintsunk a Toolbox főablakában a Read Images gombra.

    1. A program kéri, hogy adjuk meg a képfájlok fájlnevét számozás és kiterjesztés nélkül (VMRImage).

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

    2. Ezután a program kéri a fájlok kiterjesztését:

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

    3. A program elkezdi betölteni a képeket.

      Loading image 1...2...3...4...5...6...7...8...9...10... done

  3. Sarokpontok detektálása: Kattintsunk a Toolbox főablakában az Extract grid corners gombra.

    1. A program megkérdezi, hogy mely képekre szeretnénk lefuttatni a sarokpont keresést. Válasszuk az alapbeállítást (vagyis, hogy minden képre) és nyomjunk ENTER-t.

      Extraction of the grid corners on the images Type the images you want to process (e.g. [1 2 3], [] = all images) =

    2. Adjuk meg az sarokpontok számát az X-tengely, Y-tengely mentén!

      Number of squares along the X direction ([]=10) = 5 Number of squares along the Y direction ([]=10) = 6

    3. Adjuk meg sakktábla-minta négyzetének méretét!

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

    4. Adjuk meg a képeken az omnidirekcionális középpont koordinátáit!

      X coordinate (along height) of the omnidirectional image center = ([]=384) = Y coordinate (along width) of the omnidirectional image center = ([]=512) =

    5. Ezután a program megkérdezi, hogy szeretnénk-e használni az automatikus sarokpont kinyerést? Vélasszuk az az alapbeállítást (vagyis, hogy igen) és nyomjunk ENTER-t.

      EXTRACTION OF THE GRID CORNERS Do you want to use the automatic image selection or do you want to process the images individually ( [] = automatic, other = individual )?

      • Sarokpontok automatikus detektálása:  A program megkérdezi, hogy szeretnénk-e megváltoztatni a kijelölt pontok pozícióját. Válasszuk a NO opciót és nyomjunk le bármilyen karaktert. Bizonyos esetekben néhány sarokpont hiányozhat, ekkor szükséges, hogy újrapozícionáljuk a sarokpontokat, mint a 37-es, a 38-as és a 40-es képen.Processing image 1..

      • Sarokpontok kézi kijelölése: Amennyiben nem a programra bízzuk a sarokpontok megtalálását, kijelölhetjük azokat magunk is a képen. Természetesen itt is kapunk segítséget. A sarokpont kereséshez adjuk meg az ablakméretet.

        Do you want your clicking to be assisted by a corner detector ? ( [] = yes, other = no ) ENTER

        Window size for corner finder (wintx and winty):
        wintx ([] = 8) =
        winty ([] = 8) =


        Window size = 17x17

        Processing image 1...
        Using (wintx,winty)=(8,8) - Window size = 17x17
        Press ENTER and then Click on the extreme corners of the rectangular complete pattern (the first clicked corner is the origin)...

  4. Kalibráció: Kattintsunk a Toolbox főpaneljén a Calibration gombra! A program megkérdezi, hogy hányadfokú polinómmal számoljon. A válasz attól függ, hogy melyik algoritmussal szeretnénk dolgozni, de válasszuk az alapértelmezett 4-et. A program kiszámolja a paramétereket és az alábbi diagramot mutatja:
    calibration results

  5. Omnidirekcionális középpont megtalálása: A Toolbox főablakában kattintsunk a Find center gombra! A program iteratív módon minden képre megpróbálja meghatározni az omnidirekcionális középpontot.

    0.44 ± 0.28 0.37 ± 0.25 0.38 ± 0.24 0.42 ± 0.21 0.29 ± 0.18 0.32 ± 0.14 0.33 ± 0.18 0.46 ± 0.22 0.40 ± 0.31 0.36 ± 0.20

    Average error [pixels]

    0.377502

    Sum of squared errors

    81.896493

    xc =

    3.832866677912270e+002

    yc =

    5.163646215408636e+002

    >>

    A kalibrációs paramétereket az ocam_models.ss változóban tárolja a program. Ez a változó az FF függvény polinomiális együtthatókat tartalmazza.

    F=a0+a1ρ+a2ρ2+a3ρ3+a4ρ4
    ahol a ρ az omnidirekcionális kép középponttól mért távolsága (pixelben).
  6. Kalibrációs értékek finomítása: A Toolbox főablakában kattintsunk a Calibration refinement gombra. A program megkérdezi, hogy mennyi legyen a maximális iterációszám. Nyomjunk ENTER-t.

    This function alternately refines EXTRINSIC and INTRINSIC calibration parameters by using a non linear minimization method Because of the computations involved this refinement can take some seconds Loop interrupting: Press enter to stop refinement. (OCamCalib GUI must be selected!)

    Maximum number of iterations ([] = 100, 0 = abort, -1 = no limit) =


    Iteration 1
    Starting refinement of EXTRINSIC parameters...
    Optimizing chessboard pose 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
    Chessboard pose 1 optimized
    Starting refinement of INTRINSIC parameters...
    Sum of squared errors: 137.670161

    A paraméterek finomítása után már rákattinthatunk a Toolbox főablakában az Analyze error és a Show calib results gombra is.

  7. Képekre történő visszavetítés: A Toolbox főablakában kattintsunk a Reproject on images gombra. A program elvégzi a visszavetítést és megmutatja a képeket.

  8. Külső paraméterek megtekintése: Kattintsunk a Toobox főablakában a Show Extrinsic gombra. A program egy háromdimenziós diagramban megmutatja, hogy a kamerához képest hogyan helyezkedett el a sakktábla-minta az egyes képeken.
    show extrinsic

  9. A hiba elemzése: A Toolbox főablakában az Analyze Error gombra kattintva megjelenik egy ablak az egyes pontok visszavetítési hibáiról.

  10. Sarokpontok újraszámolása: A Toolbox főablakában a Recompute corners gombra kattintva a program újraszámolja a sarokpontokat.

  11. Kalibrációs értékek megtekintése: A Toolbox főablakában a Show calib results gombra kattintva egy diagram jelenik meg a kalibrációs értékekkel, valamint a program kiírja az átlagos visszavetítési hibát képenként, az összesített átlagos hibát és a négyzetes hibaösszeget.

  12. show calib results

    Average reprojection error computed for each chessboard [pixels]:

    0.44 ± 0.28
    0.37 ± 0.25
    0.38 ± 0.24
    0.42 ± 0.21
    0.29 ± 0.18
    0.32 ± 0.14
    0.33 ± 0.18
    0.46 ± 0.22
    0.40 ± 0.31
    0.36 ± 0.20

    Average error [pixels]
    0.377502

    Sum of squared errors

    81.896493

    xc =
    3.832866677912270e+002

    yc =
    5.163646215408636e+002

    >>

  13. A kaibrációs értékek kimentése, betöltése: A kalibrációs értékeket a Toobox főablakában lévő Save paranccsal tudjuk kimenteni. A lementett fájl Omni_Calib_Results.mat fájlnéven lesz lementve. Az Export Data gombra kattintva kalibrációs értékeket a calib_results.txt fájlba menti a program, amely használható a külső programok számára is. A kalibrációs paramétereket a Load gombra kattintva lehet betölteni.