3D kamera kalibrációjának programozása C++ nyelven

OData támogatás
Konzulens:
Dr. Iváncsy Szabolcs
Automatizálási és Alkalmazott Informatikai Tanszék

Jelen szakdolgozat témája egy nagysebességű kamera, mely PC-hez kötve 3D-s képalkotásra is képes. Többféle mérési módja is van, melyek különböző pontosság elérése alkalmasak különböző működési sebesség mellett. Az eltérő mérési módjai mellett eltérő paramétereket is képes mérni, mindezt akár egyszerre is, ezért ezek ún. MultiScan kamera. Most csak demonstrációs céllal egy egyszerűbb elrendezés összeállítása és működésbe helyezése, illetve kalibrálása volt a cél.

A kalibrálás ebben a rendszerben a kamera által alkotott képeket hivatott valós mértékegységekkel ellátni, hisz a kamera alapvetően pixeles felbontásban dolgozik. Ha például egy minőségellenőrzési feladatot kívánunk megoldani kameránkkal, valószínűleg szükség lehet a valós méretek ismeretére. A kalibráció első körben csak a mért és valós értékek közti összefüggés megállapítása, második körben azonban így lehetővé válik a rektifikáció, azaz ezen adatok felhasználásával a képek oly módon történő méretbeli változtatásai, hogy minden szomszédos pixel között azonos távolság legyen megfeleltethető valós mértékegységekkel. A kalibrálás két lépésből áll a Ranger kameránál: először is egy Look-Up Table-t (LUT) kell létrehozni egy etalon segítségével, mely tartalmazza a kamera koordináta rendszerének egyes pontjai, és a valós koordináták közti összefüggéseket. A második lépés ennek a LUT-nak a PC-re küldött képeken való alkalmazása.

A cég, ahol csináltam szakdolgozatomat, egy komplexebb szoftverrel kívánja használni a kamerát, amely LabVIEW környezetben készül. A feladat kiírásakor a kamerához tartozó LabVIEW toolkit aktuális verziója nem volt alkalmas a kalibrációra, csak a C++ nyelvhez tartozó SDK segítségével tűnt megoldhatónak a feladat. Ezért kaptam először úgy a feladatot, hogy egy C++ nyelven írt ActiveX vezérlőként kellene implementálnom a kalibrálást, melyet aztán meg tudnak hívni LabVIEW-ból is. Kis idő múltán, ahogy belevetettem magam a feladatba, találkoztam egy a mérnöki munkára jellemző problémával, mégpedig hogy a specifikációk és a körülmények változhatnak, ahogy halad a munka. Ugyanis, mikor arra került a sor, hogy a LUT-ot hogyan is alkalmazzuk az egyes képekre, kiderült, hogy a legfrissebb LabVIEW toolkit már megoldja a kalibrálás ezen részét, és mivel ez gyorsabb és egyszerűbb működést jelent az alapvetően LabVIEW környezetben írt programnak, ehhez kellett alkalmazkodnom, a C++ nyelvű ActiveX ötlete pedig elvetésre került, helyette egy egyszerű kalibrációt kipróbáló LabVIEW user interface-t kellett írnom.

Letölthető fájlok

A témához tartozó fájlokat csak bejelentkezett felhasználók tölthetik le.