Saya telah bekerja pada topik estimasi pose kamera untuk augmented reality dan aplikasi pelacakan visual untuk sementara waktu dan saya pikir meskipun ada banyak informasi terperinci tentang tugas tersebut, masih ada banyak kebingungan dan kesalahpahaman.
Saya pikir pertanyaan-pertanyaan selanjutnya pantas untuk dijawab selangkah demi selangkah.
- Apa itu intrinsik kamera?
- Apa itu ekstrinsik kamera?
- Bagaimana cara saya menghitung homografi dari penanda planar?
- Jika saya memiliki homografi, bagaimana saya bisa mendapatkan pose kamera?
Jawaban:
Penting untuk dipahami bahwa satu-satunya masalah di sini adalah mendapatkan parameter ekstrinsik. Intrinsik kamera dapat diukur secara off-line dan ada banyak aplikasi untuk tujuan itu.
Apa itu intrinsik kamera?
Kamera parameter intrinsik biasanya disebut matriks kalibrasi kamera, . Kita bisa menulisK
dimana
α v u v f α u = k u f α v = k v f k u k v u vαu dan adalah faktor skala dalam arah koordinat dan , dan sebanding dengan panjang fokus kamera: dan . dan adalah jumlah piksel per satuan jarak dalam arah dan .αv u v f αu=kuf αv=kvf ku kv u v
disebut titik utama, biasanya koordinat pusat gambar.c=[u0,v0]T
adalah condong, hanya non-nol jika u danadalah non-tegak lurus.s u v
Sebuah kamera dikalibrasi saat intrinsik diketahui. Ini dapat dilakukan dengan mudah sehingga tidak mempertimbangkan tujuan dalam visi komputer, tetapi langkah sepele yang off-line.
Beberapa tautan:
ftp://svr-ftp.eng.cam.ac.uk/pub/reports/mendonca_self-calibration.pdf
Apa itu ekstrinsik kamera?
Ekstrinsik Kamera atau Parameter Eksternal adalah matriks 3 × 4 yang sesuai dengan transformasi euclidean dari sistem koordinat dunia ke sistem koordinat kamera. R merupakan 3 × 3 matriks rotasi dan t terjemahan.[R|t] 3×4 R 3×3 t
Aplikasi visi komputer fokus pada memperkirakan matriks ini.
Bagaimana cara saya menghitung homografi dari penanda planar?
Homografi adalah matriks 3 × homogen yang menghubungkan bidang 3D dan proyeksi gambarnya. Jika kita memiliki bidang Z = 0 homografi H yang memetakan titik M = ( X , Y , 0 ) T ke pesawat ini dan titik 2D yang sesuai m di bawah proyeksi P = K [ R | t ] adalah3×3 Z=0 H M=(X,Y,0)T m P=K[R|t]
Untuk menghitung homografi, kita perlu pasangan dunia berpasangan. Jika kami memiliki penanda planar, kami dapat memproses gambarnya untuk mengekstrak fitur dan kemudian mendeteksi fitur-fitur tersebut di layar untuk mendapatkan kecocokan.
Kami hanya perlu 4 pasang untuk menghitung homografi menggunakan Direct Linear Transform.
Jika saya memiliki homografi, bagaimana saya bisa mendapatkan pose kamera?
Homografi dan kamera berpose K [ R | t ] berisi informasi yang sama dan mudah untuk berpindah dari satu ke yang lain. Kolom terakhir dari keduanya adalah vektor terjemahan. Kolom satu H 1 dan dua H 2 dari homografi juga merupakan kolom satu R 1 dan dua R 2 dari matriks pose kamera. Hanya tersisa kolom tiga R 3 dari [ R | t ] , dan karena harus ortogonal, dapat dihitung sebagai produk-silang dari kolom satu dan dua:H K[R|t] H1 H2 R1 R2 R3 [R|t]
Karena redundansi perlu dinormalisasi membaginya dengan, misalnya, elemen [3,4] dari matriks.[R|t]
sumber
Sementara menjelaskan kasus dua dimensi dengan sangat baik, jawaban yang diajukan oleh Jav_Rock tidak memberikan solusi yang valid untuk pose kamera dalam ruang tiga dimensi. Perhatikan bahwa untuk masalah ini ada beberapa kemungkinan solusi.
Makalah ini menyediakan formula tertutup untuk penguraian homografinya, tetapi formulanya agak rumit.
OpenCV 3 sudah mengimplementasikan persis dekomposisi ini ( decomposeHomographyMat ). Diberikan homografi dan matriks intrinsik yang diskalakan dengan benar, fungsi ini menyediakan satu set empat kemungkinan rotasi dan terjemahan.
Matriks intrinsik dalam hal ini perlu diberikan dalam satuan piksel, yang berarti titik utama Anda biasanya
(imageWidth / 2, imageHeight / 2)
dan biasanya panjang fokus AndafocalLengthInMM / sensorWidthInMM * imageHeight
.sumber
focalLengthInMM / sensorWidthInMM * imageWidth
? Mengapa Anda memilih ketinggian?