Langkah demi Langkah Estimasi Pose Kamera untuk Pelacakan Visual dan Penanda Planar

21

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?
Jav_Rock
sumber
Saya tidak jelas tentang renormalisasi yang Anda lakukan: 1. H adalah homografi yang ditemukan dari data menggunakan beberapa prosedur (katakanlah SVD). 2. inv (K) * H = A adalah hal yang Anda kerjakan di sini. Kemudian Anda menjadikan q1 = a1 / norm (a1) dan q2 = a2 / norm (a2) sebagai kolom ortonormal dari matriks rotasi, dan menjadikan q3 = q1xq2 ... Kemudian Anda mengambil t / (sesuatu) untuk mendapatkan vektor terjemahan. Bagaimana Anda bisa membagi q1 dan q2 dengan hal-hal yang mungkin berbeda, dan bagaimana Anda memilih apa yang akan dibagi? Atau adalah gagasan bahwa prosedur SVD dan perkalian dengan inv (K) memberikan sesuatu yang dekat tetapi tidak cukup ortogonal / matriks rotasi ortonormal, sehingga th
user2600616
Tetapi bagaimana saya bisa mendapatkan poin 3D (X, Y, 1)?
waschbaer

Jawaban:

19

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

K=[αusu00αvv0001]

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 .αvuvfαu=kufαv=kvfkukvuv

  • disebut titik utama, biasanya koordinat pusat gambar.c=[u0,v0]T

  • adalah condong, hanya non-nol jika u danadalah non-tegak lurus.suv

Sebuah kamera dikalibrasi saat intrinsik diketahui. Ini dapat dilakukan dengan mudah sehingga tidak mempertimbangkan tujuan dalam visi komputer, tetapi langkah sepele yang off-line.

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×4R3×3t

Aplikasi visi komputer fokus pada memperkirakan matriks ini.

[R|t]=[R11R12R13TxR21R22R23TyR31R32R33Tz]

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×3Z=0HM=(X,Y,0)TmP=K[R|t]

m~=K[R1R2R3t][XY01]

=K[R1R2t][XY1]

H=K[R1R2t]

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:HK[R|t]H1H2R1R2R3[R|t]

R3=R1R2

Karena redundansi perlu dinormalisasi membaginya dengan, misalnya, elemen [3,4] dari matriks.[R|t]

Jav_Rock
sumber
4
Saya pikir itu menyesatkan untuk mengatakan kalibrasi itu "mudah dan bukan tujuan CV". Dalam kasus biasa kita juga perlu memperkirakan parameter distorsi. Alih-alih kalibrasi sendiri, saya akan merekomendasikan kalibrasi planar (Zhang - Teknik Baru yang Fleksibel untuk Kalibrasi Kamera) karena lebih fleksibel jika prosedur kalibrasi terpisah dapat dilakukan. Anda juga memiliki kesalahan kecil dalam "Jika saya memiliki homografi, bagaimana saya bisa mendapatkan pose kamera?" karena Anda tidak memperhitungkan kalibrasi (H_ {calib} = K ^ -1H).
buq2
3
pose kamera dari homografi salah. Ada beberapa cara untuk melakukannya 'beberapa di antaranya sangat tidak sepele.
mirror2image
Saya tidak mengerti mengapa itu salah. Saya menghitungnya dengan cara ini dan bekerja. Mengapa Anda mengatakan itu salah?
Jav_Rock
3
Anda menulis di bagian terakhir bahwa H ^ 1 dan R ^ 1 dan sama, tetapi di bagian ke-3 Anda menyatakan bahwa H = K [RT] yang berarti bahwa R ^ 1 sebenarnya K ^ -1H ^ 1. Tapi ini tidak sepenuhnya benar karena ada jumlah H yang tak terbatas yang akan memenuhi persamaan dan akan menyebabkan masalah ketika menyelesaikan R ^ 1, R ^ 2 dan T (skala yang tidak diketahui). Jawaban Anda mengabaikan kalibrasi intrinsik dan distorsi yang kuat dan beberapa persamaan salah karena alasan ini bukan jawaban yang baik untuk pertanyaan tersebut.
buq2
Ya, saya kehilangan matriks kalibrasi pada langkah ketiga ketika saya mengambil ini dari kode saya dan saya kalikan dengan K dalam fungsi kode yang berbeda.
Jav_Rock
3

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 Anda focalLengthInMM / sensorWidthInMM * imageHeight.

Emiswelt
sumber
Apa itu matriks intrinsik yang diskalakan dengan benar?
Guig
1
Saya telah memperbarui jawaban saya. Silakan lihat di atas.
Emiswelt
Hey @Emiswelt, bukankah panjang fokusnya focalLengthInMM / sensorWidthInMM * imageWidth? Mengapa Anda memilih ketinggian?
El Marce