Megoldás

Algoritmus

algoritmus

Vanishing point/line meghatározása


Az első megoldandó részfeladat a vanishing point-ok meghatározása. Egy jó megközelítést kínál a probléma megoldására [5]. Ha a képet megszűrjük egy Canny éldetektorral, akkor megfelelő paraméterek választása esetén egy vonalas outputot kapunk, ahol a vonalak a képen felismert éleket jelölik. Az éldetektor algoritmusa a következő [6]:

1: Gauss-simítással az input kép skála-tér képének előállítása
2: A második derivált nulla-átmeneteinek keresése a legnagyobb első derivált iránya szerint
3: A nem-maximális élpontok elnyomása
4: Hiszterézis-küszöbölés
5: Jellemző-szintézis

Az éldetektált képre végre kell hajtani egy Hough-transzformációt. Egyenes detektálása Hough-transzformációval a következőképp végezhető el:

A kép egy (xi, yi) pontjának a Hough-térben yi = axi + b egyenes felel meg. Az egy egyenesbe eső pontokhoz tartozó egyenesek a Hough-tér felett egy pontban metszik egymást. Függőleges egyeneseknél y = ax + b a végtelenbe fut, ezért korlátos függvényt, egy

Hough trafó (korlátos függvénnyel)

alakú szinuszoidgörbét szoktak helyette használni, mivel az egy egyenesbe eső pontokhoz tartozó szinuszoidg örbék szintén egy pontban metszik egymást. [4] Az élekhez tartozó egyenesek egy átlagos perspektivikus képen általában nem egy pontban metszik egymást a raszteres ábrázolásból eredő pontatlanság miatt. Ezért az "egy pontban metszés" fogalmat úgy kell módosítanunk jelen esetben, hogy "egy adott sugarú körben metszés". E kör sugara annál nagyobb, minél távolabb esik a középpontja a kép középpontjától (mert annál nagyobb a pontatlanság). A módszer alkalmazásának hatására a vanishing point-ok azon körök középpontjai lesznek, melyek nagyon sok egyenes metszéspontjaiként állnak elő.

A méretek meghatározása

A fentebb leírt single view metrology algoritmus MatLab-ban viszonylag könnyen implementálható, viszont egy kicsit problémás a paraméterbeolvasó GUI-k elkészítése ebben a nyelvben. Így terveink szerint egy különálló kis interaktív program haználatával adhatja meg a felhasználó a Rtalp,Rteto, Vtalp, Vteto objektumpontok pixeles koordinátáit, valamint a referenciaobjektum magasságát tetszőleges mértékegységben. A modul JAVA Swing/2D vagy Visual C++ programozási nyelven készülne, outputja egy - a MatLab rendszer által paraméterként beolvasandó adatfájl lenne.

A MatLab-scriptünkben felhasználnánk internetes forrásokban fellelhető Canny-éldetektort és Hough-transzformátort.


3: R - Referencia, V - Vizsgálandó
4: vl - Vanishing Line

A teljes PDF dokumentáció letölthető innen.


Valid CSS!    Valid XHTML 1.0 Transitional