Homográfia - És hogyan lehet kiszámítani?

Hé, visszajövök! Izgatott vagyok, és alig várom, hogy befejezzem a blog elkészítését és közzétételét. Remélhetőleg örömmel olvassuk el.

Fotó: Antoine Dautry az Unsplash-en
Rólam és ez a blog sorozat!
Siddharth vagyok. Önálló vezetési mérnök vagyok az elektromos járművek indításánál, Los Angeles-i székhelyén, észleléssel kapcsolatos problémákkal foglalkozom. Szeretem programozni a robotokat, hogy azok láthassák a körülöttünk lévő világot. A @Aviralksingh kollégámmal együtt tervezem ezt a blog sorozatot írni, hogy elmagyarázzam a számítógépes látás és a robotika legalapvetőbb fogalmait, mögötte a matematikát, amely segít a technológiák, például az autonóm autók vagy a kibővített valóság észlelési feladatainak végrehajtásában. Ez a második blogom a sorozatban. Ha többet tud rólam vagy az első blogomról, olvassa el ezt:

Most merüljünk be.

Ez a blog két nézet homográfiájáról szól. Ez magában foglalna néhány matematikai derivációt: D. Nyugodtan hagyja ki a blog ezen részeit, ha nem sokat foglalkozik a matematika szakterületével. Ennek a blognak a feltétele az alapvető számítógépes látás (pl. Perspektíva geometria) és a lineáris algebra. A tartalom nagy része Richard Hartley „Multiview Geometry in Computer Vision” című részéből származik. Javasolnám, hogy olvassa el ennek a könyvnek a 13. fejezetét „Jelenet síkok és homográfiák”, hogy jobban megértse ezt a témát.

Íme néhány téma, amelyre a blog sor kerül.

  1. Mi a homográfia? Számítása perspektíva kamera mátrixok segítségével.
  2. A homográfia kiszámítása pontmegfelelésekkel.
  3. Homogén legkisebb négyzet alakú oldat.
  4. Különbség a homográfia és az alapvető mátrix között (azok számára, akik ismerik az alapvető mátrixot).

A homográfia két kamera és egy világsík vetület geometriáját írja le. Egyszerűen fogalmazva: a homográfia a világnézetben fekvő pontok képeit térképezi az egyik kameranézetből a másikra. Projektív kapcsolat, mivel csak a síkok és a vonalak metszéspontjától függ. Amint az alábbi ábrán látható:

Sík homográfia

H leképezi az x és x 'pontot, mivel az összes X pont (az x és x megfelelõ világpontok) ugyanabban a síkban fekszik. Tegyük fel, hogy két nézet vetítési mátrixai vannak

ahol s a kétértelműséget jelölő méretaránytényező, amikor átalakítunk a képtérről világtérre a 3D információk veleszületett vesztesége miatt. Ezt a kétértelműséget már előző blogomban kifejtettem. E blog kedvéért tegyük fel, hogy az első kamera referenciaként működik, és ennélfogva az első kamera forgató mátrixa Identitás és a fordítás nulla. A fenti egyenletek felhasználásával könnyen következtethetünk erre

Így a homográfia kiszámítható két kamera közötti relatív forgatás és transzláció alkalmazásával. De gyakran előfordul, hogy nincs két relatív póz a két nézet között (vagy másképp fogalmazva nem mindig van két kalibrált kamera), és mégis ki kell számítanunk az első kép és a második kép közötti leképezést. a sík pontok képe a világon.

Tegyük fel, hogy bármilyen emblémát (mondjuk a Georgia Tech emblémát) hirdetni akarunk a kapuban egy futball-mérkőzés élő közvetítése közben.

Mint ez

Hogyan csináljuk ezt? Ezt a problémát homográfiai problémaként fogalmazhatjuk meg, feltételezve, hogy van már egy logóval ellátott góltér. Tehát két kamera nézetünk van: az egyik a kamera, amelyről a videót készítették, a másik pedig az a hipotetikus kamera, ahonnan a logó képe készült. Mindkét nézetnek közös kapufasíkja van (világsík), amelyen a logó kivetül. Most ki kell számítanunk a két kamera nézet közötti leképezést. Mivel az egyik kamera hipotetikus, nem tudjuk kiszámítani a két kamera közötti relatív pózot. Tehát ebben az esetben a pontszámakat használjuk a homográfia kiszámításához. A pontmegfelelések a megfelelő kamerapárok (x, x ') párjai a két kamera nézetben, amelyekről már tudunk. Ezeket a megfeleléseket felhasználhatjuk egy olyan leképezéshez, amely felhasználható az adott világsíkon fekvő összes többi pont megfelelésének kiszámításához.

A homográfia kiszámítása pontmegfelelésekkel

Mielőtt elkezdené a homográfia kiszámítását a pontmegfelelések segítségével, röviden tárgyaljuk a homográfia mátrixának néhány tulajdonságát. A homográfia az első nézetben a pontokat a második nézet pontaihoz köti, és mivel egyik nézetben semmi nem korlátozott, teljes rangú (= 3) mátrix. Ezenkívül a homográfiát egy skálán meghatározzuk (c az fenti egyenletben), azaz megváltoztatható egy nullán kívüli állandóval, a projektív transzformáció befolyása nélkül. Így a homográfia 8 szabadságfokú, bár 9 elemet tartalmaz (3x3 mátrix), azaz ismeretlen számú, amelyet meg kell oldani. 8. A labdarúgó-gólpaszt példájában csak 4 pontra lenne szükségünk, mivel minden pont x és y koordináták, és összesen 8 ismeretlen van H megoldására egy egyedi megoldáshoz. Ez a négy pont lehet a kapu négy sarka.

Ha 4-nél több pont van, akkor túl meghatározott eset lenne, ezért a legkevesebb négyzet alakú megoldást kell használnunk h megtalálására

Hartley és Zisserman javasolta a normalizálási lépést a h kiszámítása előtt, hogy zaj jelenlétében az Ah = 0 egyenlethez tartozó megoldást stabilabbá tegyék, és megakadályozzák a helyes eredmény eltérését. Az ötlet az, hogy kiszámítsuk a T és T 'transzformációs mátrixot, amelyek x és x' transzformálódnak úgy, hogy ezeknek a pontoknak a centridja koordináta eredete és rögzített átlagos távolsága az eredettől. A H 'kiszámítása után a transzformált pontokból visszanyerhetjük az eredeti homográfia mátrixot a felhasználásával

Homogén Least Square megoldás

Az SVD könnyen kiszámítható a C ++ Eigen könyvtár segítségével. Itt van a kóddarab, amely kiszámítja a homográfiát a megfelelőségek alapján.

A logóra a kapufalon való kivetítéshez tartozó teljes kód elérhető a github adattáron:

Különbség a homográfiai mátrix és az alapvető mátrix között

Annak ellenére, hogy még egyetlen blogomban sem magyaráztam meg az alapvető mátrixot, de az érthetőség kedvéért röviden el akarom magyarázni a két mátrix közötti különbséget.

Az alapvető mátrix a világpont két nézet közötti leképezése, de egy pont képét az egyik nézet epipoláris vonalává teszi a második nézetben¹. A második nézet pontja lehet az epipoláris vonal bármely pontján. Mivel a második nézetben a vonalra korlátozódik, ez egy ranghiányos (= 2) mátrix, ellentétben a homográfiával, amely egy teljes rangsorú mátrix. Az alapvető mátrix független a jelenet szerkezetétől, ellentétben a homográfiával, amely megköveteli, hogy az összes világpont egy síkon feküdjön. Így a homográfia az alapvető mátrix különleges esete. A homográfiát általában egy sík másik síkra való leképezésére használják, míg az alapvető mátrixot a jelenet szerkezetének mélységének kiszámításához használják különböző mélységű objektumokkal.

Most, hogy a blog végén vagyunk, remélhetőleg világosan megérti az olvasókat arról, hogy mi a homográfia, és hogyan kell kiszámítani a homográfia mátrixot, hogy ez alapvető alkotóeleme legyen a fantasztikus számítógépes látásprojektekben.

Irodalom

[1] Epipoláris geometria (Stanford University CS 231A), Kenji Hata és Silvio Savarese

https://web.stanford.edu/class/cs231a/course_notes/03-epipolar-geometry.pdf