Saya tahu Anda dapat menghitung homografi dari gambar ke bidang kamera menggunakan titik korespondensi antara "model sempurna" dan titik gambar.
Saya melakukannya untuk lapangan sepakbola, dan telah menggunakan deteksi tepi untuk menemukan garis putih di lapangan.
Tapi kamera tidak (selalu) menutupi semua pitch, jadi saya tidak bisa melihat semua sudut ... dan saya hanya sudut yang 100% diketahui poin dalam model (tidak ada poin berbeda lainnya).
Jadi masalahnya adalah bahwa kecuali jika garis berpotongan dengan garis lain dan membentuk sudut, saya hanya tahu titik-titik gambar dari garis, bukan itu sesuai dengan koordinat "dunia nyata / sempurna" dalam model.
Apakah ada cara saya bisa menggunakan garis yang terdeteksi untuk menghitung homografi, atau bahkan hanya satu set kandidat homografi , bahkan jika garis yang terdeteksi tidak berpotongan satu sama lain dan membuat sudut?
Contoh gambar, menunjukkan pitch, bidang pandang kami, dan titik-titik pitch di mana saya dapat mengetahui koordinat dunia nyata / model yang sesuai (lingkaran hijau), dan contoh 2 garis yang mungkin sama sekali tidak berguna karena di bidang pandang kami , Saya tidak tahu persis di titik mana mereka memulai atau berhenti di dunia nyata / model lapangan yang sesuai:
Garis merah adalah contoh garis yang ingin saya gunakan, tetapi saya tidak tahu koordinat dunia nyata mereka, dan agak sulit untuk memperkirakannya karena tergantung pada pose kamera, titik koresponden bisa "di mana saja".
sumber
Jawaban:
Saya akan menjelaskan dua pendekatan untuk ini:
1) Satu pendekatan akan membutuhkan algoritma pencocokan garis. Setelah mencocokkan garis, Anda bisa menggunakan titik akhir garis untuk menghitung homografi. Untuk mencapai itu deskriptor berbasis EDLine atau LSD baru-baru ini diusulkan dalam OpenCV. Juga, hashing dan pencocokan cepat dari mereka juga diterapkan. Lihat videonya di sini:
http://www.youtube.com/watch?v=MqMjvSkM39k
http://www.youtube.com/watch?v=naSWTlbg3To
Repositori opencv_contrib baru-baru ini berisi kode sumber untuk metode ini.
Jika titik akhir garis berisik, Anda dapat langsung menggunakan garis untuk menghitung homografinya. Makalah seperti itu kemudian akan membaca:
2) Ada satu metode khusus untuk bidang yang diberikan di sini:
dan
Idenya adalah sebagai berikut: Setiap baris, ditentukan oleh koefisiennya memetakan ke pada gambar lain menggunakan:li=(u,v,1)T l′i=(x,y,1)T
Dalam bentuk ini persamaan dapat langsung dicolokkan ke metode DLT:
Satu-satunya perbedaan adalah normalisasi, yang akan Anda temukan dalam referensi di atas.
Menambahkan Elips: Setiap titik kebohongan pada irisan kerucut jika . Ini menimbulkan hubungan transformasi:x C xTCx=0
Referensi di atas juga menjelaskan cara memasukkan batasan ini ke algoritma DLT.
Dengan menggunakan elips dan garis, dimungkinkan untuk memperoleh hubungan proyektif yang kuat.
sumber
Jika garis tidak paralel, Anda dapat menghitung titik persimpangan mereka dan menggunakannya sebagai titik referensi. Dalam lukisan Anda, Anda dapat menggunakan titik ungu juga:
By the way, persimpangan garis tidak perlu berada di gambar. Selama garisnya paralel
Jika garisnya paralel, Anda bisa menggunakannya untuk mendapatkan kendala tambahan. Misalnya jika Anda memiliki N <4 poin dan garis K Anda mungkin dapat memperkirakan transformasi
Ingatlah bahwa persamaan transformasi proyektif adalah:
Tujuan Anda adalah untuk menemukan koefisiena11,a12,a13,a21,a22,a23,a31,a32
Jadi, jika ada garis yang memetakan ke , maka:ax+by+c=0 Ax′+By′+C
Itu dapat ditulis ulang sebagai:
( x , y ) a x + b y + c = 0A,B,C adalah nilai yang diketahui, karena Anda menghitung persamaan garis. Anda dapat memasukkan titik mana saja untuk yang , dan mendapatkan kendala tambahan. Gabungkan keduanya bersama dengan kendala yang Anda dapatkan dari poin, dan Anda mungkin mendapatkan informasi tambahan. Perhatikan bahwa Anda tidak akan mendapatkan lebih banyak informasi dari lebih dari dua titik, karena titik ketiga mana pun akan menambahkan garis dependen linier ke dalam matriks batasan.(x,y) ax+by+c=0
Referensi tambahan " Estimasi homografi oleh Elan Dubrovsky " - Lihat bagian 2.3.1, estimasi homografi dari garis.
sumber