• Rezultati Niso Bili Najdeni

3.4 Delovanje algoritmov

3.4.1 Homografija

Prvi postopek obdelave slike, ki je nujen za pravilno interpretiranje slike in izvedbo meritve kota, je postopek homografije. To je postopek projektivne preslikave slike med dvema ravninama. Ta postopek je nujen zato, ker je ravnina, na kateri je senzor kamere, ni vzporedna ravnini, v kateri se nahaja kontura preizkušanca, ki nam služi za izvedbo meritve kota (slika 3.39).

Metodologija raziskave

Slika 3.39: Prikaz razlike med merilno (rdečo) in merjeno ravnino (modra).

Za pravilno merjenje kota, bi morali normali omenjenih ravnin biti vzporedni, vendar zaradi konstrukcije naprave, saj konstrukcija geometrijsko ovira pogled na preizkušanec. Zaradi tega je kamera postavljena pod kotom in gleda navzdol na konstrukcijo.

Ravno tako predstavlja problem, da se preizkušanec tekom preoblikovanja pomika v navpični smeri. Za namen prikaza problema, si obliko preizkušanca aproksimirajmo s parabolo. Tekom preoblikovanja se teme omenjene parabole pomika v navpični smeri, in zaradi tega razdalja med temenom in kamero ni konstantna. To pomeni, da tudi neka trivialna geometrijska rešitev ne pride v poštev, saj bi za tak model morali v vsakem trenutku poznati razdaljo med senzorjem kamere in temenom parabole. Ker to ni možno v trenutni rešitvi, poleg tega pa je bila želja to rešiti s pomočjo algoritmov za obdelavo slike, je bila uporabljena homografija.

Homografija je v osnovi zelo preprost postopek, ki zajema preslikavo ene ravnine v drugo.

Gre torej za transformacije med dvema ravninama do mere natančno. V splošnem lahko

kjer je H homografska 3x3 matrika, ki vsebuje 8 prostostnih stopenj, saj se člen h33privzame, da je enak nič. Členi v homografski matriki skrbijo za projektivno preslikavo med dvema ravninama. Koordinati x' in y' sta koordinati na sliki, ki jo zajame kamera, koordinati x in y pa sta željeni koordinati, z znano lokacijo na izhodni sliki [12]. Sistem enačb rešujemo tako, da homogene koordinate normaliziramo.

𝑥 =00𝑥 + ℎ01𝑦 + ℎ02

20𝑥 + ℎ21𝑦 + ℎ22 (3.2)

Metodologija raziskave

y= 10𝑥 + ℎ11𝑦 + ℎ12

20𝑥 + ℎ21𝑦 + ℎ22 (3.3)

V splošnem pa predpostavka, da je člen h33 enak nič lahko napačna. Zato se v splošnem lahko rešimo problem rešujemo z metodo singularnega razcepa matrike [13].

S homografsko preslikavo tako pretvorimo sliko, ki je zajeta s kamero v eni ravnini in jo priredimo s projektivno preslikavo na željeno ravnino, ki je vzporedna z ravnino, na kateri se nahaja kontura preoblikovanca. Na ta način lahko nato izmerimo kot, kakor da bi kamera bila postavljena pravokotno na ravnino merjenja. V praksi to izgleda tako, da so na konstrukciji označene lokacije točk, za katere poznamo njihove realne koordinate. Nato na sliki, ki je zajeta s kamero in prikazana na grafičnem vmesniku z dvoklikom izberemo te točke in takrat se izračuna homografija oziroma projektivna preslikava, s klicem na funkcijo findHomography() iz programske knjižice OpenCV. Ta proces se izvede le enkrat, nato vse sledeče slike le uporabijo že določeno homografsko matriko in jo aplicirajo na vsako sliko.

Algoritem v programski knjižici OpenCV:

cv.findHomography( srcPoints, dstPoints[, method[, ransacReprojThreshold[, mask[, maxIters[, confidence]]]]] )

Preglednica 3.10: Prikaz parametrov algoritma cv.findHomography.

Parameter Opis

srcPoints Koordinate točk na merilni ravnini.

dstPoints Koordinate točk na merjeni ravnini.

method Metoda za izračun homografske matrike.

(default = 0 – Uporaba metode najmanjših kvadratov).

rasnacReprojThreshold Največja dovoljena napaka pri reprojekciji.

(ni uporabljeno)

mask Maska uproabljena pri RANSAC metodi.

(ni uproabljeno)

maxIters Največje število iteracij pri RANSAC

metodi (ni uporabljeno)

confidence Nivo zanesljivosti [0, 1]. (Ni uporabljeno) Preko zgornjega klica lahko prvič izračunamo homografijo, funkcija nam vrne t.i. masko, ki jo nato uporabimo na vsaki sliki zajeti s kamero, in sicer z uporabo metode iz knjižice OpenCV cv.warpPerspective.

cv.warpPerspective( src, M, dsize[, dst[, flags[, borderMode[, borderValue]]]] )

Metodologija raziskave

Preglednica 3.11: Prikaz parametrov algoritma cv.warpPerspective.

Parameter Opis

src Izvorna slika, na kateri bo uporabljen

algoritem.

M 3 x 3 transformacijska matrika.

dsize Velikost izhodiščne slike.

dst Izhodiščna slika, ki ima enako velikost in

tip podatkov kakor src.

Flags Kombinacija interpolacijskih metod.

borderMode Metoda ekstrapolacije na robovih slike.

borderValue Vrednost uporabljena na robu slike, v kolikor je konstanta vrednost

Na sliki 3.40 je prikazana uporaba homografije na igralni karti, ki je položena na mizo.

Razlika med snemalno (merilno) ravnino in ravnino mize (merjeno) je očitna. Z uporabo homografije pa dosežemo to, da se slika lahko transformira z uporabo projektivne preslikave, kakor da sta merilna in merjena ravnina vzporedni. To pomeni, da bodo tudi meritve kota v tem primeru lahko pravilne.

Slika 3.40: Prikaz uporabe homografije. Na levi sliki je igralna karta položena na mizi, na desni se z uporabo homografije levo sliko spremeni tako, da se doseže efekt, kakor da je kamera pravokotno

usmerjena na mizo.

Na sami napravi, se homografija opravi s pomočjo vnaprej označenih točk na prvi (sprednji) plošči same naprave. Točke so prikazane na sliki 3.14 (predpostavljeno je, da je izhodišče koordinatnega sistema v točki T1).

Metodologija raziskave

Slika 3.41: Prikaz točk na konstrukcij z znanimi koordinatami za izvedbo homografije.

Uporabnik pred začetkom uporabe na zaslonu z dvoklikom označi točke v zaporedju od T1

do T4. Znane koordinate so predstavljene v preglednici 3.12.

Preglednica 3.12: Prikaz koordinat znanih točk za homografijo.

Točka Koordinate (x ; y) [mm]

T1 (0 ; 0)

T2 (80 ; 0)

T3 (80; 20,2)

T4 (0 ; 20,2)

Pri označevanju je potrebna večja previdnost, saj lahko pri uporabi dvoklika izberemo napačno točko na zaslonu, kar pomeni, da homografija ne bo bila izvedena pravilno in bodo rezultati meritve lahko napačni. Za ponovitev homografije je potrebno preko tipke za zagon kamere najprej kamero zaustaviti nato ponovno pognati.