Pemfilteran RANSAC Estimasi Homografi

10

Saya menggunakan algoritma RANSAC untuk estimasi homografi antara pasangan gambar yang diambil dengan kamera yang tidak memiliki terjemahan di antara mereka (rotasi murni dan perubahan skala / zoom). Ini bekerja dengan baik di setengah dari kasus. Output yang benar terlihat seperti ini:

masukkan deskripsi gambar di sini

Garis merah adalah korespondensi yang difilter dan segiempat menggambarkan bagaimana homografi mengubah perspektif.

Namun, kadang-kadang, banyak kasus buruk terjadi, seperti ini:

masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini

Saya sudah memiliki tes sederhana di loop RANSAC. Itu membuat segiempat sederhana (satuan persegi) dan mengubahnya dengan transformasi sampel. Kemudian terlihat apakah transformasinya tetap cembung.

Namun, masih ada sekelompok segiempat cekung keluar.

Apakah Anda tahu cara menguji homografi dengan benar, jika berperilaku "baik" dan menyaring solusi yang salah?

Saya menemukan beberapa kode di mana mereka menguji bahwa tidak satu pun dari tiga titik yang diubah adalah colinear. Tapi ini tampaknya tidak cukup karena tidak akan menyaring deltoids dan segiempat "tidak valid" lainnya ...

Libor
sumber

Jawaban:

4

Ada masalah dalam memeriksa apakah homografinya OK atau tidak.

Algoritma untuk memeriksa homografi yang benar mungkin menarik bagi seseorang, jadi saya akan menuliskannya di sini:

ABDC

A:(w/2,h/2,1.0)B:(w/2,h/2,1.0)C:(w/2,h/2,1.0)D:(w/2,h/2,1.0)

w,h

ABDCC=HC

uv

d1:A+(DA)s=A+usd2:B+(CB)t=B+vt

d1=d2

t=1d[(ByAy)ux(BxAx)uy]

s=1d[(AxBx)vy(AyBy)vx]

s,t(0,1)

s,t(λ,1.0λ)λ=0.01

Masalah yang lebih lama, diperbaiki di algoritme di atas:

Saya menemukan masalah di sini - memiliki homografi tertentu, tes dapat lulus untuk segiempat lebih kecil, tetapi tidak untuk yang lebih besar. Inilah sebabnya mengapa beberapa homografi "sakit" melewati.

Kotak hijau mewakili gambar sumber, oranye adalah yang diubah. Seperti yang Anda lihat, tangan kiri berbentuk cembung, tetapi mulai berubah bentuk karena sumbernya lebih besar:

masukkan deskripsi gambar di sini

Akhirnya sumber yang lebih besar menghasilkan non-konversi segi empat:

masukkan deskripsi gambar di sini

(x,y,w)xyw

Saya telah memperbaiki algoritme yang sesuai.

Libor
sumber
1

x_i \sim Hx_i^'\sum_{j=1\dots n}\|x_j - Hx_j^'\|H^'x^' = H^'x\sum_{j=1\dots n}\|x_j - Hx_j^'\| + \|x_j^' - H^'x\|

Lihat Hartley dan Zisserman - Multiple View Geometry on Computer Vision bab 4.2 dan khususnya 4.2.3 dan persamaan (4.8).

buq2
sumber
Segiempat yang ditampilkan hanya diletakkan di sana. Saya yakin tentang korespondensi karena cocok sangat baik. Saya telah menggunakan algoritma DLT yang dinormalisasi yang disarankan oleh Hartley & Zisserman dan kemudian menggunakan perbaikan berulang dan pencocokan terpandu seperti yang Anda sebutkan.
Libor
Namun fit dari Homography tidak dapat yang baik seperti pada gambar pertama ada dua kelompok poin: orang-orang di gedung apartemen (yang mungkin di pesawat yang sama) dan orang-orang di pohon-pohon (yang mungkin tidak bahkan di pesawat yang sama di dalam grup mereka sendiri). Apakah Anda yakin tidak bermaksud menggunakan matriks fundamental?
buq2
Garis menghubungkan titik yang sesuai dan saya memeriksa semuanya - ketika gambar disejajarkan, mereka semua bertemu. Saat saya mengecualikan pasangan gambar yang cocok salah, itu menghasilkan panorama yang bagus.
Libor
Gambar dibuat menggunakan kamera yang berputar, sehingga mungkin tampak bahwa pesawat berubah, tetapi karena kamera berputar tentang pusat optik, saya cukup yakin homografinya diperkirakan. Saya bahkan dapat menghitung panjang fokus dan matriks rotasi darinya. Tapi masalahnya ada di tempat lain, kekhasan dalam perangkat lunak saya yang harus saya temukan ...
Libor
Ahh, Anda tidak memasukkan informasi bahwa tidak ada terjemahan antara kamera. Kemudian Anda benar dan homografi menggambarkan transformasi antara gambar.
buq2