Contents — find the section you need
Geser kamera sedikit ke samping dan rekam adegan yang sama, dan objek di dekatnya akan bergeser lebih banyak terhadap latar belakang daripada objek yang jauh. Paralaks ini memungkinkan Anda untuk memulihkan bentuk 3D dan gerakan kamera dari gambar 2D. Tetapi sekadar mencocokkan "titik fisik yang sama" di seluruh gambar tidaklah cukup. Dalam gambar nyata yang penuh dengan ketidaksesuaian, distorsi lensa, rotasi murni, bidang, dan objek bergerak, Anda perlu menentukan pasangan titik mana yang konsisten dengan gerakan kamera tunggal. Geometri epipolar adalah bahasa umum untuk melakukan hal itu.
Ini bukan hanya tentang pengukuran stereo. Struktur dari Gerak (SfM), Odometri Visual, SLAM Visual, pelacakan bidang AR, lokalisasi mandiri robot, dan rekonstruksi sparse COLMAP semuanya bergantung pada korespondensi dan geometri proyektif. Artikel ini menjaga kerangka koordinat tetap jelas, menghubungkan arti setiap matriks, estimator mana yang harus dipilih, dan kapan Anda tidak boleh mempercayai hasilnya.
Contoh kendaraan dengan kamera stereoGambar: Subaru WRX S4 2.0GT-S EyeSight (Tokumeigakarinoaoshima, CC BY-SA 4.0), Wikimedia Commons. Tampilan eksterior, bukan close-up dari bagian dalam kamera.
0. Ringkasan 30 Detik
- Bidang yang dibentuk oleh dua pusat kamera dan satu titik 3D disebut bidang epipolar. Bidang ini memotong setiap gambar sebagai garis, sehingga titik yang sesuai di Satu gambar hanya dapat muncul pada garis tersebut — garis epipolar — pada gambar lainnya.
- Untuk gambar yang tidak terkalibrasi, Matriks Fundamental F memenuhi \mathbf{x}'^\mathsf{T}F\mathbf{x}=0. Dalam koordinat yang dinormalisasi dengan intrinsik yang diketahui, Matriks Esensial E=[\mathbf{t}]_\times R digunakan. E memulihkan rotasi R dan arah translasi, tetapi pasangan dua pandangan monokular tunggal tidak dapat memulihkan skala absolut translasi.
- Algoritma 8-titik yang dinormalisasi adalah estimasi awal linier yang mudah diimplementasikan; algoritma 5-titik adalah pemecah minimal yang membutuhkan lebih sedikit korespondensi untuk kamera yang terkalibrasi. Keduanya rapuh terhadap ketidakcocokan, jadi dalam praktiknya Anda menghapus outlier dengan RANSAC/USAC dan mengevaluasi dengan kesalahan reproyeksi.
- Triangulasi menemukan perpotongan dua garis pandang, tetapi kedalaman menjadi tidak stabil ketika paralaks kecil, garis dasar pendek, atau gambar Derau yang dihasilkan besar. Setelah estimasi, penyesuaian bundel secara bersamaan memperbaiki pose kamera dan titik 3D.
- Untuk adegan yang hanya planar, atau kamera yang hampir murni berputar, homografi H menggambarkan gambar dengan baik, dan pemulihan translasi/kedalaman melalui F/E mengalami degenerasi. Pemilihan model tidak boleh hanya bergantung pada jumlah inlier — periksa residual, paralaks, distribusi spasial, dan cheirality secara bersamaan.
1. Menulis Proyeksi Dua-Tampilan dari Koordinat
Misalkan titik koordinat dunia adalah koordinat homogen \mathbf{X}=(X,Y,Z,1)^\mathsf{T}. Proyeksi kamera lubang jarum, hingga skala, ditulis
Di sini \tilde{\mathbf{x}}=(u,v,1)^\mathsf{T} adalah koordinat gambar homogen, K adalah matriks intrinsik, dan R\in SO(3) dan \mathbf{t} adalah Posisi ekstrinsik dunia-ke-kamera. Biasanya
di mana f_x,f_y adalah panjang fokus dalam satuan piksel, (c_x,c_y) adalah titik utama, dan s adalah kemiringan. Setelah distorsi dikoreksi, koordinat gambar yang dinormalisasi adalah \mathbf{x}=K^{-1}\tilde{\mathbf{x}}. Mulai dari sini, gunakan kamera kiri sebagai referensi dengan P_1=K[I\mid\mathbf{0}] dan kamera kanan sebagai P_2=K[R\mid\mathbf{t}].
2. Matriks Esensial dan Matriks Fundamental
Dengan berfokus murni pada pose ekstrinsik, pertimbangkan koordinat yang telah dikalibrasi dan dinormalisasi (\mathbf{x},\mathbf{x}'). Arah garis pandang dari kamera kiri ke titik tersebut adalah \mathbf{x}, dan dalam bingkai kamera kanan adalah R\mathbf{x}. Fakta bahwa vektor translasi \mathbf{t} dan kedua garis pandang terletak pada bidang yang sama dapat ditulis sebagai hasil perkalian skalar tiga kali lipat nol:
Di sini [\mathbf{t}]_\times adalah bentuk matriks simetris miring dari hasil perkalian silang.
E=[\mathbf{t}]_\times R ini disebut Matriks Esensial. E bukanlah matriks 3\times3 sembarang — matriks ini memiliki rank 2, dengan batasan bahwa kedua nilai singular tak nolnya sama. Proyeksi melalui SVD ke bentuk E=U\operatorname{diag}(s,s,0)V^\mathsf{T} mengembalikan batasan fisik ini.
Untuk kasus yang tidak dikalibrasi menggunakan koordinat piksel mentah secara langsung,
dan F adalah Matriks Fundamental. F\tilde{\mathbf{x}} memberikan garis epipolar l' pada gambar kanan, dan F^\mathsf{T}\tilde{\mathbf{x}}' memberikan garis l pada gambar kiri. Karena F menyerap parameter intrinsik, matriks ini nyaman untuk verifikasi geometris pasangan gambar, tetapi interpretasi pose dalam satuan metrik memerlukan kalibrasi.
| Matriks | Koordinat | Kuantitas yang diketahui yang dibutuhkan | Batasan bentuk | Apa yang Anda dapatkan | Penggunaan utama |
|---|---|---|---|---|---|
| F | Koordinat homogen piksel mentah | Tidak ada | peringkat 2, 7 DoF | Garis epipolar | SfM yang tidak dikalibrasi, verifikasi korespondensi |
| E | K^{-1}\tilde{\mathbf{x}} | Kedua kamera K | peringkat 2, nilai singular (s,s,0) | Arah R dan \mathbf{t} | VO, SLAM, stereo terkalibrasi |
| H | Piksel pada bidang atau di bawah rotasi murni | Model bidang atau rotasi | Umumnya 8 DoF | Warp planar | Bidang AR, penyambungan gambar |
Apa yang Diberitahukan Epipole kepada Anda
Titik di mana pusat kamera kanan diproyeksikan ke gambar kiri adalah epipole kiri \mathbf{e}, yang memenuhi F\mathbf{e}=0. Demikian pula F^\mathsf{T}\mathbf{e}'=0. Jika epipole terletak di dalam gambar, garis epipolar bertemu secara radial, menunjukkan kamera bergerak kira-kira ke depan atau ke belakang. Jika terletak di tak terhingga, garis-garis tersebut hampir sejajar, menunjukkan sesuatu yang mendekati gerakan menyamping. Ini adalah diagnostik yang berguna, tetapi perkiraan yang buruk saja juga dapat menghasilkan posisi epipole yang tidak wajar, jadi Anda tidak boleh menentukan gerakan hanya dari ini saja.
3. Memperkirakan Matriks dari Korespondensi: Algoritma 8 Titik
Satu korespondensi \tilde{\mathbf{x}}=(u,v,1)^\mathsf{T} dan \tilde{\mathbf{x}}'=(u',v',1)^\mathsf{T} memberikan satu batasan linier pada sembilan entri F. Dengan \mathbf{f}=\operatorname{vec}(F) , misalnya
Menumpuk delapan atau lebih korespondensi ke dalam matriks A , algoritma 8-titik mengambil vektor singular terkecil dari A\mathbf{f}=0 . Nama tersebut berasal dari delapan korespondensi yang memenuhi derajat kebebasan, tetapi dalam kasus nyata yang bising, lebih banyak titik digunakan dengan metode kuadrat terkecil.
Penyelesaian dengan koordinat piksel mentah menyebabkan kondisi buruk dari besarnya nilai koordinat. Algoritma 8-titik ternormalisasi Hartley menormalisasi himpunan titik setiap gambar dengan transformasi kesamaan T,T' sehingga centroidnya nol dan jarak rata-ratanya adalah \sqrt{2}, menyelesaikannya di ruang tersebut, dan akhirnya memulihkan
Selanjutnya, mengambil SVD dari F yang dihasilkan dan menolkan nilai singular terkecil akan memberlakukan rank 2. Ini tampak seperti detail implementasi kecil, tetapi sangat memengaruhi stabilitas solusi.
Jika dikalibrasi, ide yang sama membangun perkiraan awal E dari korespondensi yang dinormalisasi. Tetapi solusi linier dari 8 titik tidak secara otomatis memenuhi batasan nilai singular yang lebih kuat dari Matriks Esensial. Anda menghitung E=U\operatorname{diag}(\sigma_1,\sigma_2,\sigma_3)V^\mathsf{T} dan menggantinya dengan \operatorname{diag}((\sigma_1+\sigma_2)/2,(\sigma_1+\sigma_2)/2,0) untuk memproyeksikannya.
4. Algoritma 5 Titik: Memperkecil Sampel Minimal Saat Dikaliibrasi
Matriks Esensial memiliki 5 derajat kebebasan. Algoritma 5 titik adalah pemecah minimal yang menemukan himpunan terbatas kandidat E dari 5 korespondensi; metode Nistér menggantikan ruang nol ke dalam kendala polinomial, menghitung hingga 10 kandidat solusi nyata. Baik derivasi maupun implementasinya lebih kompleks daripada algoritma 8 titik, tetapi manfaat hanya membutuhkan 5 titik per hipotesis RANSAC sangat besar.
Dengan rasio inlier w, probabilitas bahwa satu kali pengambilan sampel semuanya merupakan inlier adalah w^s, probabilitas kegagalan p, dan ukuran sampel minimal s, perkiraan iterasi yang dibutuhkan adalah
Untuk w=0.5,p=0.01: s=8 membutuhkan sekitar 1177 iterasi, sedangkan s=5 membutuhkan sekitar 145. Dalam praktiknya, ini bukanlah perbandingan yang mudah, karena metode seperti PROSAC mengambil sampel berdasarkan urutan kualitas kecocokan dan berhenti secara adaptif. Namun demikian, nilai algoritma 5-titik jelas terlihat di lingkungan dengan rasio inlier rendah.
OpenCV findEssentialMat menyediakan RANSAC/LMEDS bersama dengan implementasi keluarga 5-titik, dan recoverPose menangani dekomposisi kandidat dan pemeriksaan cherialitas. Bagi para pengimplementasi, memastikan apakah input tidak terdistorsi/dinormalisasi dan satuan koordinat mana yang digunakan ambang batas lebih penting daripada fakta bahwa "kami memanggil algoritma 5-titik."
5. RANSAC: Menggunakan Geometri Sambil Mengasumsikan Outlier
Pencocok seperti SIFT, ORB, SuperPoint, dan LoFTR menghasilkan ketidakcocokan dari tekstur berulang, refleksi, grid berulang, dan oklusi. Menyesuaikan F ke semua korespondensi dengan metode kuadrat terkecil memungkinkan sejumlah kecil kesalahan merusak seluruh matriks. RANSAC mengulangi hal berikut:
-
Pilih secara acak serangkaian korespondensi minimal dan bangun hipotesis F atau E.
-
Hitung residual untuk setiap korespondensi, tandai yang berada dalam ambang batas sebagai inlier.
-
Pertahankan hipotesis dengan dukungan terbanyak, atau skor robust terbaik.
-
Estimasi ulang menggunakan semua inlier akhir, dan perbaiki dengan optimasi nonlinier jika diperlukan.
Anda tidak boleh menggunakan ambang batas kendala epipolar hanya dengan menggunakan kesalahan aljabar \mathbf{x}'^\mathsf{T}F\mathbf{x} saja, karena bergantung pada skala F. Dalam praktiknya, jarak Sampson
biasanya digunakan sebagai gantinya. Ini adalah perkiraan orde pertama dari kesalahan geometris — ukuran yang dinormalisasi dari jarak setiap korespondensi ke garis epipolarnya. Ambang batas dalam koordinat piksel bergantung pada resolusi gambar, akurasi lokalisasi titik kunci, distorsi residual, dan keburaman. Tidak ada "1 px" universal. Anda menyesuaikannya dengan memvisualisasikan histogram residual dan distribusi spasial inlier pada gambar.
OpenCV saat ini juga menawarkan estimasi robust keluarga USAC. Dengan menggabungkan pengambilan sampel yang diurutkan berdasarkan kualitas, optimasi lokal, dan pemeriksaan degenerasi, metode ini dapat lebih cepat dan lebih stabil daripada RANSAC biasa. Namun, penolakan outlier statistik tidak pernah dapat melampaui asumsi bahwa "mayoritas mengikuti satu gerakan benda kaku statis." Jika sebagian besar frame adalah kendaraan bergerak atau seseorang, Anda perlu menambahkan informasi lain seperti mask semantik, segmentasi gerakan, IMU, atau kedalaman.
6. Menguraikan E menjadi Pose dan Memilih Kandidat yang Tepat
Untuk E=U\operatorname{diag}(s,s,0)V^\mathsf{T} yang telah dikoreksi, menggunakan
memberikan kandidat rotasi R=UWV^\mathsf{T} atau UW^\mathsf{T}V^\mathsf{T}, dan kandidat arah translasi \pm U_{:,3}. Terdapat 4 kombinasi tanda dan rotasi. Yang penting di sini adalah bahwa batasan dua pandangan saja membuat semuanya konsisten secara aljabar dengan E yang sama.
Seleksi menggunakan cheirality (kedalaman positif). Untuk setiap kandidat, triangulasi sejumlah kecil titik inlier dan pilih mana pun yang memberikan Z>0 untuk titik terbanyak di kedua bingkai kamera. Selain itu, periksa apakah determinan matriks rotasi adalah +1, apakah kesalahan reproyeksi kecil, dan apakah ada paralaks yang cukup. Satu batasan yang perlu diingat secara khusus: \mathbf{t} hanya dapat dipulihkan hingga arah. Penskalaan \mathbf{t} dan semua titik 3D dengan faktor yang sama membuat proyeksi tidak berubah. Garis dasar stereo yang diketahui, odometri roda, IMU, objek dengan ukuran yang diketahui, atau GNSS dapat memberikan skala.
7. Triangulasi: Dari Dua Sinar ke Titik 3D
Persamaan proyeksi \mathbf{x}\times(P\mathbf{X})=\mathbf{0} menghasilkan dua persamaan independen per tampilan. Triangulasi DLT menyelesaikan sistem linier A\mathbf{X}=0, yang disusun dari dua tampilan, melalui SVD; ini sederhana, dan triangulatePoints dari OpenCV mendekati bentuk ini. Misalnya, dengan membiarkan \mathbf{p}_{ij}^\mathsf{T} menjadi baris ke-j dari P_i, sebuah titik (u_i,v_i) memberikan
Sebelum membagi dengan komponen homogen di akhir, periksa apakah w tidak terlalu kecil.
Untuk pasangan stereo horizontal yang telah diperbaiki, ini lebih intuitif. Dengan disparitas d=u_L-u_R (perbedaan koordinat horizontal antara kiri dan kanan), panjang fokus f, dan garis dasar B,
Kesalahan kedalaman kira-kira \delta Z\simeq \frac{Z^2}{fB}\delta d. Semakin jauh, dan semakin pendek panjang fokus atau garis dasar, semakin besar kesalahan kedalaman dari kesalahan disparitas 1 piksel yang sama. Jadi, daripada "cocok, jadi tambahkan ke awan titik," gunakan sudut triangulasi, disparitas, kesalahan reproyeksi, dan kedalaman positif sebagai gerbang kualitas.
Triangulasi linier hanyalah perkiraan awal — ia tidak meminimalkan noise gambar dengan benar. Penyesuaian bundel, yang secara bersamaan mengoptimalkan pose kamera P_i dan titik \mathbf{X}_j, menyelesaikan
di mana \rho adalah kerugian yang kuat seperti Huber atau Cauchy, dan \pi adalah pembagian perspektif. Inilah sebabnya mengapa rekonstruksi menggunakan COLMAP, Theia, atau Ceres Solver mendapatkan akurasi. Untuk memperbaiki kebebasan pengukur, tempatkan kamera pertama di titik asal, dan jika perlu, tetapkan satu skala yang diketahui.
8. Memilih Antara Geometri Epipolar dan Homografi
Ketika setiap titik dalam adegan terletak pada satu bidang \pi, atau kamera mengalami rotasi murni, korespondensi antara gambar dijelaskan dengan baik oleh homografi 3×3 \tilde{\mathbf{x}}'\sim H\tilde{\mathbf{x}}. Jika dikalibrasi, dengan normal bidang \mathbf{n} dan jarak d ,
Di bawah rotasi murni, suku translasi menghilang dan H=KRK^{-1} . Untuk poster, meja, fasad bangunan, atau rekaman yang bergerak melintasi pemandangan jauh, H menjadi model yang sangat baik, dan merupakan pilihan pertama yang alami untuk jangkar planar AR dan penyambungan gambar.
Namun, memperkirakan F/E dari data planar saja dapat menghasilkan banyak inlier yang tampak, sementara tidak mampu memisahkan struktur 3D dari translasi secara stabil. Sebaliknya, memaksa pemandangan umum yang tidak planar menjadi satu H menyebabkan objek dekat dan jauh melengkung secara tidak konsisten. Dalam implementasi, perkirakan F/E dan H dengan RANSAC dan bandingkan residual, jumlah titik yang dijelaskan, distribusi titik, dan paralaks setelah rekonstruksi. Jika Anda memutuskan apakah akan menerima model berdasarkan jumlah kecocokan saja, Anda akan tertarik ke arah dinding planar besar atau bidang yang mendominasi pusat gambar.
| Situasi | Kandidat pertama | Apa yang Anda dapatkan | Peringatan |
|---|---|---|---|
| Terkalibrasi, 3D umum, translasi ada | E + algoritma 5 titik | Pose relatif, kedalaman jarang | Skala tidak ditentukan, tidak stabil pada paralaks rendah |
| Pasangan gambar tidak terkalibrasi | F + algoritma 8 titik yang dinormalisasi | Garis epipolar, verifikasi korespondensi | Jangan menafsirkan pose fisik tanpa K |
| Hampir planar, poster, meja | H + algoritma 4 titik | Warp planar, kandidat pose planar | Tidak ada kedalaman di luar bidang |
| Rotasi murni / panorama | H | Penyelarasan gambar, rotasi | Translasi dan kedalaman tidak dapat diamati |
| Peta 3D yang diketahui dengan pengamatan 2D | PnP + RANSAC | Pose absolut | Bergantung pada kualitas dan skala peta |
9. Kalibrasi Bukan Langkah Pra-pemrosesan — Ini Bagian dari Model
Ambil gambar grid checkerboard, Charuco, atau AprilTag pada beberapa jarak, kemiringan, dan posisi gambar untuk memperkirakan K dan koefisien distorsi. Distorsi radial Brown–Conrady secara kasar dinyatakan, untuk radius yang dinormalisasi r^2=x^2+y^2 , sebagai
Untuk lensa sudut lebar dan lensa fisheye, jangan memaksakan model distorsi lubang jarum standar — pilih model fisheye OpenCV atau model yang sesuai dengan lensa yang digunakan. Bahkan ketika kesalahan reproyeksi rata-rata kalibrasi kecil, struktur kesalahan dapat bergeser di tepi gambar, pada panjang fokus yang berbeda, dengan suhu, dengan fokus, atau dengan perubahan resolusi.
Sebelum memasuki pemrosesan dua tampilan, pastikan nilai kalibrasi diperoleh pada resolusi, pemotongan, dan kondisi zoom digital yang sama dengan tangkapan Anda saat ini. Sangat mudah untuk mencampuradukkan estimasi E dari titik-titik yang dinormalisasi melalui undistortPoints dengan estimasi F dari gambar yang tidak terdistorsi. Selalu baca apakah API menggunakan panjang fokus, titik utama, dan distorsi secara internal, atau mengharapkan koordinat yang sudah dikoreksi. Untuk rig stereo, selain intrinsik kedua kamera, temukan pose relatif dengan stereoCalibrate dan perbaiki garis epipolar menjadi horizontal dengan stereoRectify.
10. Pipeline Minimal di OpenCV
Berikut adalah kerangka untuk mendapatkan pose relatif dan kumpulan titik 3D sparse yang difilter kualitas dari dua frame kamera monokuler yang telah dikalibrasi. Ini menggunakan ORB untuk fitur, tetapi ini dapat diganti dengan SIFT atau pencocok berbasis pembelajaran tergantung pada kondisi pengambilan gambar. Dalam praktiknya, Anda juga akan mencatat eksposur, objek bergerak, dan sinkronisasi waktu.
import cv2 as cv
import numpy as np
# K, dist are values calibrated for this capture resolution and lens
orb = cv.ORB_create(nfeatures=3000)
kp1, des1 = orb.detectAndCompute(img1, None)
kp2, des2 = orb.detectAndCompute(img2, None)
matches = cv.BFMatcher(cv.NORM_HAMMING).knnMatch(des1, des2, k=2)
good = [m for m, n in matches if m.distance < 0.75 * n.distance]
p1 = np.float32([kp1[m.queryIdx].pt for m in good])
p2 = np.float32([kp2[m.trainIdx].pt for m in good])
# threshold is in pixel units. Decide it from the residual distribution, not an initial guess.
E, mask = cv.findEssentialMat(p1, p2, K, method=cv.USAC_MAGSAC,
prob=0.999, threshold=1.0)
in1, in2 = p1[mask.ravel() != 0], p2[mask.ravel() != 0]
count, R, t, pose_mask = cv.recoverPose(E, in1, in2, K)
# P1, P2 are for normalized coordinates. Scale is arbitrary, so t's length is not a physical unit.
n1 = cv.undistortPoints(in1.reshape(-1, 1, 2), K, dist).reshape(-1, 2)
n2 = cv.undistortPoints(in2.reshape(-1, 1, 2), K, dist).reshape(-1, 2)
P1 = np.hstack([np.eye(3), np.zeros((3, 1))])
P2 = np.hstack([R, t])
X4 = cv.triangulatePoints(P1, P2, n1.T, n2.T)
X = (X4[:3] / X4[3]).T
# Further filter by positive depth in both views, reprojection error, and triangulation angle.
z1 = X[:, 2]
z2 = (R @ X.T + t).T[:, 2]
valid = (z1 > 0) & (z2 > 0) & np.isfinite(X).all(axis=1)
Contoh ini meneruskan piksel mentah dan K langsung ke findEssentialMat, tetapi jika distorsi tidak dapat diabaikan, pertama-tama teruskan titik yang dinormalisasi dari undistortPoints dan beralih ke bentuk API yang sesuai. Merupakan kesalahan juga untuk memperlakukan \mathbf{t} yang dikembalikan oleh recoverPose sebagai "jarak tempuh." Aplikasi yang membutuhkan skala harus membatasinya dengan garis dasar yang diketahui, VIO, odometri roda, sensor kedalaman, atau yang serupa.
COLMAP mengimplementasikan ekstraksi fitur, pencocokan, verifikasi geometris, pemetaan inkremental, dan penyesuaian bundel sebagai satu alur kerja yang terhubung. Untuk dataset kecil, Anda dapat memeriksa model kamera dan rekonstruksi melalui GUI. Pada baris perintah, pilihan model kamera, bagaimana panjang fokus EXIF ditangani, strategi pencocokan (menyeluruh/sekuensial/pohon kosakata), dan interval waktu antara pasangan gambar mengatur akurasi dan biaya komputasi. Setelah rekonstruksi, periksa bukan jumlah titik tetapi jumlah gambar yang terdaftar, kesalahan reproyeksi rata-rata, jumlah pengamatan per gambar, dan celah dalam awan titik.
11. Kondisi Kegagalan Umum dan Cara Mendiagnosisnya
Paralaks Kecil, Tanpa Garis Dasar
Dengan gerakan maju, pemandangan yang jauh, atau interval bingkai yang pendek, Anda mungkin masih mendapatkan korespondensi tanpa mendapatkan kedalaman. Jika garis epipolar terlihat wajar tetapi sudut triangulasi mendekati nol, tunda pembaruan kedalaman daripada memaksanya. Perbaikan mendasar adalah dengan memberi jarak keyframe lebih jauh, menangkap pengamatan dengan gerakan menyamping, atau menggunakan rig stereo dengan garis dasar yang diketahui.
Rotasi Murni atau Degenerasi Planar
Dalam bidikan panning atau bidang pandang yang hanya berisi dinding, H memiliki daya penjelas. Jumlah inlier yang tinggi untuk E tidak selalu berarti translasi telah diamati. Catat persaingan antara H dan E, dan lakukan gating pada tingkat kedalaman positif dan paralaks median setelah triangulasi. Dalam pelacakan poster AR, ini bukanlah kegagalan — melainkan pemilihan model yang tepat.
Ketidaksesuaian, Pola Berulang, Refleksi
Jendela, ubin, rak buku, layar LCD, dan permukaan air menghasilkan deskriptor lokal yang serupa. Lapisi uji rasio, pencocokan tetangga terdekat bersama, dan RANSAC geometris, dan periksa apakah titik-titik inlier tersebar di seluruh gambar. Gambar cermin dan objek transparan melanggar asumsi benda kaku, reflektansi Lambertian itu sendiri, jadi tidak ada penyesuaian ambang batas yang akan menyelamatkan Anda.
Objek Dinamis dan Gerakan Ganda
RANSAC hanya memilih gerakan tunggal terbesar. Jika latar belakang adalah minoritas, ia mungkin malah memperkirakan gerakan mobil. Tergantung pada aplikasi Anda, pilih dari pengecualian semantik orang/kendaraan, pengelompokan aliran optik, menjalankan estimasi multi-model, atau penyelarasan dengan kedalaman/IMU.
Distorsi Lensa, Rolling Shutter, Asinkronisasi
Penggunaan tepi sudut lebar yang tidak terkoreksi meninggalkan kelengkungan sistematis pada garis epipolar. Dengan rolling shutter selama gerakan cepat, sikap berubah dalam satu frame, sehingga satu E hanya merupakan perkiraan. Bahkan sedikit offset dalam pengaturan waktu eksposur kiri/kanan untuk pasangan stereo menghasilkan disparitas palsu untuk objek bergerak. Pertimbangkan rana global, eksposur singkat, model pengaturan waktu baris, koreksi berbasis IMU, dan sinkronisasi perangkat keras.
Kesalahan Numerik dan Koordinat-Frame
Mencampur koordinat piksel dan koordinat yang dinormalisasi, membingungkan koordinat dunia-ke-kamera versus kamera-ke-dunia untuk R,\mathbf{t}, menukar urutan titik kiri/kanan, dan lupa memperbarui K setelah mengubah ukuran gambar adalah kesalahan umum. Jangan menerima nilai estimasi begitu saja — tumpang tindih korespondensi dan garis epipolar, dan otomatiskan pemeriksaan kedalaman positif di kedua kamera, kesalahan reproyeksi, \det R=1, dan R^\mathsf{T}R\simeq I.
12. Metrik Evaluasi Praktis dan Daftar Periksa Desain
Jangan menyebut estimasi dua pandangan sebagai sukses hanya karena "matriksnya kembali." Jumlah kecocokan dipengaruhi oleh jumlah tekstur, dan kesalahan rata-rata saja dapat menyembunyikan beberapa titik yang baik. Menyimpan informasi berikut per frame memungkinkan Anda untuk membedakan di mana letak kesalahan dalam rantai sensor/pencocok/estimasi pose:
- Jumlah deteksi, jumlah lulus uji rasio, jumlah/rasio inlier RANSAC, distribusi di seluruh sel grid gambar
- Median dan persentil atas jarak Sampson dan kesalahan reproyeksi, tingkat kedalaman positif, distribusi sudut triangulasi
- Jumlah dukungan dan skor robust untuk H versus E/F, dan alasan model diterima atau ditolak
- Besaran rotasi yang diestimasi, kontinuitas temporal arah translasi, konsistensi dengan sensor eksternal yang diskalakan
- Waktu eksposur, gain, kecepatan sudut IMU, offset waktu kiri/kanan, metrik blur, rasio mask gambar
Untuk penelitian atau evaluasi produk dengan data kebenaran (ground truth) yang tersedia, laporkan kesalahan rotasi relatif, kesalahan arah translasi, ATE/RPE lintasan, dan kesalahan kedalaman absolut/relatif secara terpisah. Karena translasi dua pandangan monokular bersifat ambigu skala, nyatakan dengan jelas apakah kesalahan terjadi setelah normalisasi atau setelah penyelarasan Sim(3). Daripada mengecualikan frame yang gagal dari rata-rata, mencatat degenerasi atau kondisi visual mana yang menyebabkan setiap kegagalan akan mengkomunikasikan batasan sistem dengan lebih jujur.
13. Perkembangan Terkini: Apakah Pembelajaran Telah Menggantikan Geometri?
Titik kunci dan deskriptor berbasis pembelajaran (SuperPoint), pencocok kasar-ke-halus (LoFTR), dan estimasi korespondensi tujuan umum (LightGlue dan sejenisnya) dapat menghasilkan lebih banyak kandidat kecocokan daripada deskriptor klasik dalam perubahan tekstur atau sudut pandang yang rendah. Tetapi korespondensi yang dikembalikan oleh jaringan masih bisa salah, dan ambiguitas fisik dari gerakan kamera, bidang, rolling shutter, dan skala tidak hilang. Dalam SfM/SLAM praktis, pengaturan hibrida yang memverifikasi output pencocok yang dipelajari melalui estimasi robust dari E/F/H ditambah penyesuaian bundel tetap menjadi pilihan praktis.
Pada tingkat yang lebih luas, representasi adegan neural/eksplisit seperti NeRF dan 3D Gaussian Splatting juga memanfaatkan konsistensi di berbagai tampilan. Hal ini memungkinkan sintesis tampilan baru yang menarik, tetapi sensitif terhadap kualitas pose kamera dan geometri pengamatan, dan banyak implementasi menginisialisasi dengan pose yang berasal dari COLMAP. Penelitian terus berlanjut pada estimasi bersama korespondensi, kedalaman, segmentasi, data inersia, dan model waktu untuk lingkungan skala besar, dinamis, dan reflektif.
Oleh karena itu, keputusan untuk mengadopsi model yang lebih baru tidak hanya bergantung pada "apakah jumlah kecocokan meningkat dibandingkan dengan ORB" — tetapi juga harus mempertimbangkan distribusi inlier pasca-estimasi, kesalahan pose, latensi komputasi, persyaratan GPU, kerusakan di luar kondisi pelatihan, dan perizinan. Geometri bukanlah langkah pra-pemrosesan yang ketinggalan zaman; geometri tetap menjadi verifikator yang memeriksa output model yang dipelajari terhadap struktur 3D nyata.
14. Kesimpulan
Geometri epipolar adalah kerangka kerja yang meningkatkan korespondensi antara dua gambar dari "titik-titik yang terlihat paling mirip" menjadi "titik-titik yang dapat dijelaskan oleh satu gerakan kamera." Jika intrinsik diketahui, Anda melanjutkan ke pose relatif melalui E=[\mathbf{t}]_\times R; jika tidak, Anda memverifikasi garis epipolar dan korespondensi dengan F. Algoritma 8 titik adalah dasar untuk pemahaman dan inisialisasi, algoritma 5 titik adalah pemecah minimal yang efisien untuk estimasi yang kuat, RANSAC adalah mekanisme yang mengasumsikan outlier, dan triangulasi ditambah penyesuaian bundel adalah jembatan menuju 3D.
Namun, ketika tidak ada paralaks, hanya bidang datar, rotasi murni, banyak objek bergerak, atau distorsi/asinkronisasi yang berat, matriks yang dikembalikan tidak menjamin kedalaman atau translasi yang bermakna secara fisik. Merancang pemilihan model berdasarkan homografi, mengelola kondisi kalibrasi, memeriksa kesalahan reproyeksi dan kedalaman positif, serta menggabungkannya dengan skala eksternal ke dalam satu alur kerja adalah hal yang mengarah pada visi komputer yang dapat direproduksi.
Apakah garis epipolar secara unik menentukan kecocokan?
Garis tersebut mempersempit pencarian ke sebuah garis.
Bukti gambar masih harus menunjukkan lokasi titik, dan pengulangan atau oklusi dapat menimbulkan ambiguitas.Referensi (Sumber Primer dan Dokumentasi Resmi)
- Hartley & Zisserman, Multiple View Geometry in Computer Vision (halaman resmi penulis)
- Longuet-Higgins, A computer algorithm for reconstructing a scene from two projections (1981, Royal Society)
- Hartley, In Defense of the Eight-Point Algorithm (IEEE TPAMI, 1997)
- Nistér, An Efficient Solution to the Five-Point Relative Pose Problem (IEEE TPAMI, 2004)
- [Fischler & Bolles, Random Sample] Konsensus (Komunikasi ACM, 1981)
- OpenCV — Tutorial Geometri Epipolar
- OpenCV — calib3d: findEssentialMat / recoverPose
- Dokumentasi resmi COLMAP
- Schönberger & Frahm, Struktur-dari-Gerakan Ditinjau Kembali (CVPR 2016)
- Sarlin dkk., LightGlue (ICCV 2023)
Komentar
Silakan masuk terlebih dahulu.
Belum ada data.