Skip navigation

Pontpár-alapú regisztráció OpenCV-ben

OpenCV pontkijelölés

Korábban már foglalkoztunk az egéresemény kezelésével a Python-OpenCV programjainkban (Numpy képreprezentáció). A 06_01_ocv_mouse_click.py példaprogramunk ezt kiegészíti a pontok tömbben való feljegyzésével és a egy jelölő képmátrixba rajzolásával.

  • Pontot kijelölni a bal egérgomb lenyomásával tudunk.
  • Az r billentyű törli a pontlistát és visszaállítja az eredeti képet.
  • A q billentyűvel léphetünk ki a programból.

Merev-test transzformáció keresése és végrehajtása

06_02_ocv_reg_rigid.py példaprogramunk betölt két képet, amelyek egymás elforgatottjai, és lehetőséget biztosít pontpárok kijelölésével azok illesztésére. Fontos, hogy a pontpárok megadási sorrendje egyező legyen a két képen! Legalább 3 pontpárra van szükségünk a transzformáció számításához.

Feladatok

Próbáljuk ki az előző példaporgramot!

  • Kattintsunk legalább 3 pontpárra a képeken!
  • Bővítsük a kijelölést további párokkal!
  • Figyeljük a konzolra kiírt forgatómátrix determináns értéket!
  • Kattintsunk minél pontosabban és kisebb-nagyobb hibákkal is!
  • A cv2.estimateRigidTransform függvény utolsó paraméterét vegyük igazra!
  • Próbáljuk ki a cv2.getAffineTransform függvényt is!

Kiterjesztés perspektív transzformáció keresésére

  • Legalább 4 pontpár szükséges!
    • if (len(refPts) == len(movPts)) and (len(refPts) >= 4):
  • cv2.findHomography() kell. A method paraméter 0 legyen. Lehetséges használati mód:
    • M, mask = cv2.findHomography(mov_pts, src_pts, 0)
  • Perspektív transzformáció végrehajtása képen (warpPerspective):
    • image_reg = cv2.warpPerspective(clone2, M, (w, h))