2 görüntü üzerinden hesaplanan homografi ile başaşağı aynı görüntü üzerinden hesaplanan homografi arasındaki bağlantı nedir?


9

OpenCV ile , bu iki görüntü arasındaki homografiyi hesaplıyorum:

ilk görüntü

ve

ikinci resim

Sağ taraftaki garip beyaz form hakkında endişelenmeyin, bunun nedeni kullandığım akıllı telefon tutucusudur. FindHomography () işlevi ( Hızlı özellik dedektörü ve HammingLUT tanımlayıcı eşleştiricisi ile algılanan noktaları kullanarak ) tarafından verilen homografi :

A = [ 1.412817430564191,  0.0684947165270289,  -517.7751355800591;
     -0.002927297251810,  1.210310757993256,     39.56631316477566;
      0.000290600259844, -9.348301989015293e-05,  1]

Şimdi, aynı işlemi, imagemagick kullanarak (aslında, 90 derece döndürme veya 270 derece ...). İşte buradalar:

ilk görüntü baş aşağı

ve

ikinci görüntü baş aşağı

Bu görüntülerle homografi şöyle olur:

B = [ 0.7148688519736168,  0.01978048500375845,  325.8330631554814;
     -0.1706219498833541,  0.8666521745094313,    64.72944905752504;
     -0.0002078857275647, -5.080048486810413e-05,  1]

Şimdi soru, A ve B'yi nasıl ilişkilendiriyorsunuz? A'nın ilk iki diyagonal değeri, B'de aynı olanın tersine yakındır, ancak çok kesin değildir (0.71486885 yerine .707805537). Nihai amacım pahalı bir görüntü döndürme hesaplamaktan kaçınarak nihai matrisi dönüştürmek için istenen ilişkiyi kullanmaktı.

Yanıtlar:


4

Bence homografi matrisi formülüne bakarken:

Hba=RtnTd
nerede R rotasyon matrisi b ile ilgili olarak döndürülür a; t çeviri vektörü a için b; n ve dsırasıyla düzlemin normal vektörü ve düzleme olan mesafedir (bkz. Homografi-3D düzlemden düzlem denklemine ).

İki matris arasındaki ilişki, düzlemin normal vektöründe yatmaktadır. Bu nedenle, düzlemin normal vektörünü (homografi matrisinden) almanız ve rotasyona uygulamanız ve ardından yukarıdaki formülü kullanarak homografi matrisini hesaplamanız gerekir. Homografi matrisinin doğru ayrışması için bu kod örneklerine ve bu makaleye bakabilirsiniz .


Ne demek istediğini anlamıyorum. Denklemden, normal olanı aldım Mat invT = 1./t; Mat n = invT.t() * (H - R);(aslında, bu n/d). Şimdi, "rotasyonu ona uygulamak" bana 3x1 vektör veriyor, ama homografi matrisini tekrar hesaplamak için nasıl kullanabilirim? Teşekkürler
Stéphane Péchard

Daha fazla bilgi eklendi, umarım bunu netleştirir.
Geerten

neden - t / d değil + t / d?
Maystro
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.