Contents — find the section you need
Kamerayı hafifçe yana kaydırıp aynı sahneyi tekrar çektiğinizde, yakındaki nesnelerin arka plana göre uzaktaki nesnelere göre daha fazla kaydığını görürsünüz. Bu paralaks, 2 boyutlu görüntülerden 3 boyutlu şekli ve kamera hareketini kurtarmanızı sağlar. Ancak görüntüler arasında "aynı fiziksel noktayı" eşleştirmek yeterli değildir. Uyumsuzluklar, lens bozulması, saf dönüş, düzlemler ve hareketli nesnelerle dolu gerçek görüntülerde, hangi nokta çiftlerinin tek bir kamera hareketiyle tutarlı olduğunu belirlemeniz gerekir. Epipolar geometri, tam olarak bunu yapmak için kullanılan ortak dildir.
Bu sadece stereo ölçümle ilgili değil. Hareketten Yapı (SfM), Görsel Odometri, Görsel SLAM, AR düzlem takibi, robot kendi kendine konumlandırma ve COLMAP'ın seyrek yeniden yapılandırması, hepsi yazışmalara ve izdüşümsel geometriye dayanmaktadır. Bu makale, koordinat çerçevelerini baştan sona açık tutarak, her matrisin ne anlama geldiğini, hangi tahmin edicinin seçileceğini ve sonuca ne zaman güvenmemeniz gerektiğini birbirine bağlar.
Stereo kameralı bir araca örnekResim: Subaru WRX S4 2.0GT-S EyeSight (Tokumeigakarinoaoshima, CC BY-SA 4.0), Wikimedia Commons. Dış görünüm, kamera iç yapısının yakın çekimi değil.
0. 30 Saniyelik Özet
-
İki kamera merkezi ve bir 3B noktası tarafından oluşturulan düzleme epipolar düzlem denir. Bu düzlem Her görüntüyü bir çizgi olarak keser, böylece bir görüntüdeki karşılık gelen bir nokta, diğer görüntüde yalnızca o çizgi üzerinde - epipolar çizgi üzerinde - görünebilir.
-
Kalibre edilmemiş görüntüler için Temel Matris F, \mathbf{x}'^\mathsf{T}F\mathbf{x}=0'ü sağlar. Bilinen içsel değerlere sahip normalize edilmiş koordinatlarda, Temel Matris E=[\mathbf{t}]_\times R kullanılır. E, dönüşü R ve ötelemenin yönünü kurtarır, ancak tek bir monoküler iki görüntü çifti, ötelemenin mutlak ölçeğini kurtaramaz.
-
Normalize edilmiş 8 noktalı algoritma, uygulaması kolay doğrusal bir başlangıç tahminidir; 5 noktalı algoritma, kalibre edilmiş bir kamera için daha az eşleşme gerektiren minimal bir çözücüdür. Her ikisi de uyumsuzluklara karşı hassastır, bu nedenle pratikte aykırı değerleri RANSAC/USAC ile kaldırır ve yeniden projeksiyon hatasıyla değerlendirirsiniz.
-
Üçgenleme, iki görüş hattının kesişimini bulur, Ancak paralaks küçük olduğunda, taban çizgisi kısa olduğunda veya görüntü gürültüsü büyük olduğunda derinlik kararsız hale gelir. Tahminden sonra, demet ayarlaması kamera pozisyonlarını ve 3B noktalarını birlikte iyileştirir.
-
Sadece düzlemsel bir sahne veya neredeyse tamamen dönen bir kamera için, homografi H görüntüleri iyi tanımlar ve F/E aracılığıyla öteleme/derinlik kurtarma bozulur. Model seçimi yalnızca iç nokta sayısına dayanmamalıdır — artıkları, paralaksı, uzamsal dağılımı ve kiiraliteyi birlikte kontrol edin.
1. Koordinatlardan İki Görünümlü Projeksiyon Yazma
Bir dünya koordinat noktasının homojen koordinat \mathbf{X}=(X,Y,Z,1)^\mathsf{T} olduğunu varsayalım. Ölçeğe kadar iğne deliği kamera projeksiyonu şu şekilde yazılır:
Burada \tilde{\mathbf{x}}=(u,v,1)^\mathsf{T} homojen görüntü koordinatı, K ise içsel koordinattır. Matris ve R\in SO(3) ve \mathbf{t}, dünyadan kameraya olan dışsal pozdur. Tipik olarak
burada f_x,f_y, piksel birimlerindeki odak uzaklıklarıdır, (c_x,c_y), ana noktadır ve s, eğimdir. Bozulma düzeltildikten sonra, normalleştirilmiş görüntü koordinatı \mathbf{x}=K^{-1}\tilde{\mathbf{x}} olur. Bundan sonra, sol kamerayı P_1=K[I\mid\mathbf{0}] ve sağ kamerayı P_2=K[R\mid\mathbf{t}] ile referans olarak alın.
Şekilde, C,C' kamera merkezleridir ve segment CC' temel çizgidir. X noktası ve iki merkez tarafından tanımlanan düzlem, sol görüntü düzlemini epipolar çizgi l ve sağ görüntü düzlemini l' olarak keser. Sol görüntüde karşılık gelen nokta \mathbf{x} bulunduğunda, sağ görüntüdeki 2 boyutlu arama bölgesi tek bir çizgiye iner. Düzeltilmiş bir stereo çifti için bu çizgi yataydır ve karşılık araması aynı tarama çizgisi boyunca 1 boyutlu bir aramaya dönüşür.
2. Temel Matris ve Temel Matris
Sadece dışsal pozisyona odaklanarak, kalibre edilmiş, normalleştirilmiş koordinatları (\mathbf{x},\mathbf{x}') düşünün. Sol kameradan noktaya olan görüş hattı yönü \mathbf{x}, sağ kameranın çerçevesinde ise R\mathbf{x}'dir. Öteleme vektörü \mathbf{t} ve iki görüş hattının aynı düzlemde bulunması, sıfır skaler üçlü çarpım olarak yazılabilir:
Burada [\mathbf{t}]_\times, çapraz çarpımın ters simetrik matris formudur.
Bu E=[\mathbf{t}]_\times R, Temel Matris olarak adlandırılır. E, keyfi bir 3\times3 matris değildir; iki sıfır olmayan tekil değerinin eşit olması koşuluyla 2. mertebeye sahiptir. SVD yoluyla E=U\operatorname{diag}(s,s,0)V^\mathsf{T} formuna yansıtma, bu fiziksel kısıtlamayı geri kazandırır.
Kalibre edilmemiş durumda, doğrudan ham piksel koordinatları kullanıldığında,
ve F Temel Matristir. F\tilde{\mathbf{x}}, sağdaki görüntüde epipolar çizgi l''ü, F^\mathsf{T}\tilde{\mathbf{x}}' ise soldaki görüntüde l çizgisini verir. F içsel parametreleri absorbe ettiği için, görüntü çiftlerinin geometrik doğrulaması için uygundur, ancak pozisyonun metrik birimlerde yorumlanması kalibrasyon gerektirir.
| Matris | Koordinatlar | Gerekli bilinen miktar | Şekil kısıtlaması | Elde edilen sonuç | Ana kullanım |
|---|---|---|---|---|---|
| F | Ham piksel homojen koordinatları | Yok | 2. sıra, 7 Serbestlik Derecesi | Epipolar çizgiler | Kalibre edilmemiş SfM, yazışma doğrulaması |
| E | K^{-1}\tilde{\mathbf{x}} | Her iki kameranın K | 2. sıra, tekil değerler (s,s,0) | R ve \mathbf{t} yönü | VO, SLAM, kalibre edilmiş stereo |
| H | Düzlemde veya saf dönüş altında pikseller | Düzlem veya dönüş modeli | Genellikle 8 DoF | Düzlemsel çarpıtma | AR düzlemleri, görüntü birleştirme |
Epipolün Size Anlattıkları
Sağ kameranın merkezinin sol görüntüye yansıdığı nokta, F\mathbf{e}=0 koşulunu sağlayan sol epipol \mathbf{e}'tir. Benzer şekilde F^\mathsf{T}\mathbf{e}'=0 de. Eğer epipol görüntünün içinde yer alıyorsa, epipolar çizgiler radyal olarak yakınlaşır ve bu da kameranın kabaca ileri veya geri hareket ettiğini gösterir. Eğer sonsuzda yer alıyorsa, çizgiler neredeyse paraleldir ve bu da yana doğru harekete yakın bir şeyi gösterir. Bu yararlı bir teşhis yöntemidir, ancak tek başına kötü bir tahmin de doğal olmayan bir epipol konumuna yol açabilir, bu nedenle hareketi asla sadece buna dayanarak belirlememelisiniz.
3. Eşleşmelerden Matrisin Tahmini: 8 Noktalı Algoritma
Tek bir eşleşme \tilde{\mathbf{x}}=(u,v,1)^\mathsf{T} ve \tilde{\mathbf{x}}'=(u',v',1)^\mathsf{T}, F'ın dokuz girdisi üzerinde tek bir doğrusal kısıtlama sağlar. Örneğin \mathbf{f}=\operatorname{vec}(F) ile
Sekiz veya daha fazla eşleşmeyi A matrisine yığarak, 8 noktalı algoritma A\mathbf{f}=0'ün en küçük tekil vektörünü alır. İsim, serbestlik derecelerini karşılayan sekiz eşleşmeden gelir, ancak gerçek, gürültülü durumda, en küçük kareler yöntemiyle çok daha fazla nokta kullanılır.
Ham piksel koordinatlarıyla çözmek, koordinat değerlerinin büyüklüğünden kaynaklanan kötü koşullandırmaya yol açar. Hartley'nin normalleştirilmiş 8 noktalı algoritması, her görüntünün nokta kümesini benzerlik dönüşümleriyle T,T' normalleştirir, böylece merkez sıfır olur ve ortalama mesafe \sqrt{2} olur, bu uzayda çözer ve sonunda
Ayrıca, elde edilen F'nin SVD'sini almak ve en küçük tekil değeri sıfırlamak, 2. sırayı zorunlu kılar. Bu küçük bir uygulama detayı gibi görünse de, çözüm kararlılığını güçlü bir şekilde etkiler.
Kalibre edilirse, aynı fikir normalleştirilmiş eşleşmelerden E'nin ilk tahminini oluşturur. Ancak 8 noktadan elde edilen doğrusal çözüm, Temel Matrisin daha güçlü tekil değer kısıtlamasını otomatik olarak karşılamaz. E=U\operatorname{diag}(\sigma_1,\sigma_2,\sigma_3)V^\mathsf{T}'i hesaplayıp \operatorname{diag}((\sigma_1+\sigma_2)/2,(\sigma_1+\sigma_2)/2,0) ile değiştirerek projeksiyonunu yaparsınız.
4. 5 Noktalı Algoritma: Kalibre Edildiğinde Minimal Örneği Küçültme
Temel Matrisin 5 serbestlik derecesi vardır. 5 noktalı algoritma, 5 eşleşmeden sonlu bir E aday kümesi bulan minimal bir çözücüdür; Nistér yöntemi, sıfır uzayını polinom kısıtlamalarına yerleştirerek 10'a kadar gerçek çözüm adayı sayar. Hem türetme hem de uygulama 8 noktalı algoritmadan daha karmaşıktır, ancak RANSAC hipotezi başına yalnızca 5 noktaya ihtiyaç duymanın faydası çok büyüktür.
Verilen iç nokta oranı w, tek bir çekimin tümünün iç noktalardan oluşma olasılığı w^s, başarısızlık olasılığı p ve minimum örneklem boyutu s için, gerekli yineleme tahmini şöyledir:
w=0.5,p=0.01 için: s=8 yaklaşık 1177 yinelemeye ihtiyaç duyarken, s=5 yaklaşık 145 yinelemeye ihtiyaç duyar. Pratikte bu, PROSAC gibi yöntemlerin eşleşme kalitesine göre örneklem çekmesi ve adaptif olarak sonlanması nedeniyle doğrudan bir karşılaştırma değildir. Yine de, 5 noktalı algoritmanın değeri düşük iç nokta oranı ortamlarında açıktır.
OpenCV'nin findEssentialMat algoritması, 5 noktalı aile uygulamalarıyla birlikte RANSAC/LMEDS'i sağlar ve recoverPose aday ayrıştırmayı ve kiiralite kontrolünü ele alır. Uygulayıcılar için, girdinin bozulmamış/normalleştirilmiş olup olmadığını ve eşik değerinin hangi koordinat birimlerini kullandığını doğrulamak, "5 noktalı algoritmayı çağırdık" gerçeğinden daha önemlidir.
5. RANSAC: Aykırı Değerleri Varsayarak Geometriyi Kullanma
SIFT, ORB, SuperPoint ve LoFTR gibi eşleştiriciler, tekrarlanan dokular, yansımalar, tekrarlayan ızgaralar ve tıkanma nedeniyle uyumsuzluklar üretir. F algoritmasını en küçük kareler yöntemiyle tüm eşleşmelere uydurmak, az sayıda hatanın tüm matrisi bozmasına izin verir. RANSAC aşağıdakileri tekrarlar:
-
Rastgele minimum bir eşleşme kümesi seçin ve bir F veya E hipotezi oluşturun. 2. Her bir eşleşme için kalıntıyı hesaplayın ve eşik içindeki noktaları iç noktalar olarak işaretleyin.
-
En çok desteğe sahip hipotezi veya en iyi sağlam puanı koruyun.
-
Tüm nihai iç noktaları kullanarak yeniden tahmin edin ve gerekirse doğrusal olmayan optimizasyonla iyileştirin.
Epipolar kısıtlamayı yalnızca cebirsel hata \mathbf{x}'^\mathsf{T}F\mathbf{x} kullanarak eşiklememelisiniz, çünkü bu F'nin ölçeğine bağlıdır. Pratikte, bunun yerine genellikle Sampson mesafesi kullanılır.
bu, geometrik hatanın birinci dereceden bir yaklaşımıdır - her bir eşleşmenin epipolar çizgisine olan mesafesinin normalize edilmiş bir ölçüsüdür. Piksel koordinatlarındaki eşik, görüntü çözünürlüğüne, anahtar nokta yerelleştirme doğruluğuna, kalıntı bozulmasına ve bulanıklığa bağlıdır. Evrensel bir "1 px" yoktur. Bunu, kalıntı histogramını ve iç noktaların görüntü üzerindeki uzamsal dağılımını görselleştirerek ayarlarsınız.
Mevcut OpenCV ayrıca USAC ailesi sağlam tahminleme yöntemini de sunmaktadır. Kalite sıralı örnekleme, yerel optimizasyon ve dejenerasyon kontrollerini birleştirerek, düz RANSAC'tan daha hızlı ve daha kararlı olabilir. Bununla birlikte, istatistiksel aykırı değer reddi, "çoğunluğun tek, statik bir katı cisim hareketini izlediği" varsayımının ötesine asla geçemez. Çerçevenin büyük bir kısmı hareket eden bir araç veya kişi ise, anlamsal maskeler, hareket segmentasyonu, IMU veya derinlik gibi diğer bilgileri eklemeniz gerekir.
6. E'u Pozlara Ayırmak ve Doğru Adayı Seçmek
Düzeltilmiş bir E=U\operatorname{diag}(s,s,0)V^\mathsf{T} için,
dönme adayları R=UWV^\mathsf{T} veya UW^\mathsf{T}V^\mathsf{T} ve öteleme yönü adayları \pm U_{:,3} elde edilir. İşaret ve dönmenin 4 kombinasyonu vardır. Burada önemli olan, iki görünüm kısıtlamasının tek başına hepsini aynı E ile cebirsel olarak tutarlı hale getirmesidir.
Seçim, kiiralite (pozitif derinlik) kullanır. Her aday için, az sayıda iç nokta üçgenleştirin ve her iki kamera çerçevesinde en çok nokta için Z>0 verenini seçin. Ek olarak, döndürme matrisinin determinantının +1 olup olmadığını, yeniden projeksiyon hatasının küçük olup olmadığını ve yeterli paralaks olup olmadığını kontrol edin. Özellikle hatırlanması gereken bir sınırlama: \mathbf{t} yalnızca yön bakımından kurtarılabilir. \mathbf{t} ve tüm 3B noktalarının aynı faktörle ölçeklendirilmesi, projeksiyonu değiştirmez. Bilinen bir stereo taban çizgisi, tekerlek odometrisi, IMU, bilinen boyutta bir nesne veya GNSS ölçek sağlayabilir.
7. Üçgenleme: İki Işından 3 Boyutlu Bir Noktaya
Projeksiyon denklemi \mathbf{x}\times(P\mathbf{X})=\mathbf{0}, her görünüm için iki bağımsız denklem üretir. DLT üçgenlemesi, iki görünümden üst üste yığılmış doğrusal sistemi A\mathbf{X}=0, SVD yoluyla çözer; basittir ve OpenCV'nin triangulatePoints'si bu forma yakındır. Örneğin, \mathbf{p}_{ij}^\mathsf{T}'ün P_i'in j -inci satırı olduğunu varsayarsak, bir nokta (u_i,v_i) şu sonucu verir:
Sondaki homojen bileşene bölmeden önce, w'in aşırı küçük olmadığından emin olun.
Düzeltilmiş yatay stereo çifti için bu daha sezgiseldir. d=u_L-u_R eşitsizliği (sol ve sağ arasındaki yatay koordinat farkı), f odak uzaklığı ve B taban çizgisi ile,
Derinlik hatası yaklaşık olarak \delta Z\simeq \frac{Z^2}{fB}\delta d'tür. Uzaklık arttıkça ve odak uzaklığı veya taban çizgisi kısaldıkça, aynı 1 piksellik eşitsizlik hatasından kaynaklanan derinlik hatası da artar. Bu nedenle, "eşleşti, bu yüzden nokta bulutuna ekle" demek yerine, kalite kontrol noktaları olarak üçgenleme açısı, eşitsizlik, yeniden projeksiyon hatası ve pozitif derinliği kullanın.
Doğrusal üçgenleme yalnızca bir başlangıç tahminidir; görüntü gürültüsünü doğru şekilde en aza indirmez. Kamera pozisyonlarını P_i ve noktaları \mathbf{X}_j birlikte optimize eden paket ayarlaması,
Burada \rho, Huber veya Cauchy gibi sağlam bir kayıp fonksiyonudur ve \pi perspektif bölümüdür. Bu nedenle COLMAP, Theia veya Ceres Solver kullanan yeniden yapılandırmalar doğruluk kazanır. Ölçü serbestliğini sabitlemek için ilk kamerayı orijine yerleştirin ve gerekirse bilinen bir ölçeği sabitleyin.
8. Epipolar Geometri ve Homografi Arasında Seçim
Sahnedeki her nokta tek bir düzlemde \pi yer aldığında veya kamera saf bir dönüşe uğradığında, görüntüler arasındaki ilişki 3×3 homografi \tilde{\mathbf{x}}'\sim H\tilde{\mathbf{x}} ile iyi bir şekilde tanımlanır. Eğer düzlemin normali \mathbf{n} ve mesafesi d ile kalibre edilirse,
Saf dönüş altında, öteleme terimi kaybolur ve H=KRK^{-1} olur. Bir poster, bir masa, bir bina cephesi veya uzak bir sahneyi gösteren görüntüler için H mükemmel bir model haline gelir ve AR düzlemsel ankrajları ve görüntü birleştirme için doğal ilk tercihtir.
Ancak, yalnızca düzlemsel verilerden F/E'yı tahmin etmek, 3B yapıyı ötelemeden istikrarlı bir şekilde ayıramazken birçok görünür iç nokta bırakabilir. Tersine, genel, düzlemsel olmayan bir sahneyi tek bir H'ye zorlamak, yakın ve uzak nesnelerin tutarsız bir şekilde bozulmasına neden olur. Uygulamada, hem F/E hem de H'u RANSAC ile tahmin edin ve yeniden yapılandırmadan sonra artıkları, açıklanan nokta sayısını, nokta dağılımını ve paralaksı karşılaştırın. Bir modeli yalnızca eşleşme sayısına göre kabul edip etmeyeceğinize karar verirseniz, büyük bir düzlemsel duvara veya görüntünün merkezine hakim bir düzleme doğru çekilirsiniz.
| Durum | İlk aday | Elde edilen sonuç | Uyarılar |
|---|---|---|---|
| Kalibre edilmiş, genel 3B, öteleme mevcut | E + 5 noktalı algoritma | Göreceli poz, seyrek derinlik | Ölçek belirsiz, düşük paralaksta kararsız |
| Kalibre edilmemiş görüntü çifti | F + normalize edilmiş 8 noktalı algoritma | Epipolar çizgiler, yazışma doğrulaması | K olmadan fiziksel pozu yorumlamayın |
| Neredeyse düzlemsel, poster, masa | H + 4 noktalı algoritma | Düzlemsel çarpıtma, düzlemsel poz adayları | Düzlem dışı derinlik yok |
| Saf döndürme / panorama | H | Görüntü hizalama, döndürme | Öteleme ve derinlik gözlemlenemez |
| 2B gözlemlerle bilinen 3B harita | PnP + RANSAC | Mutlak poz | Harita kalitesine ve ölçeğine bağlıdır |
9. Kalibrasyon Bir Ön İşleme Adımı Değildir — Modelin Bir Parçasıdır
K ve bozulma katsayılarını tahmin etmek için birden fazla mesafede, eğimde ve görüntü konumunda bir dama tahtası, Charuco veya AprilTag ızgarası çekin. Brown-Conrady radyal bozulması, normalleştirilmiş yarıçap r^2=x^2+y^2 için kabaca şu şekilde ifade edilir:
Geniş açılı ve balık gözü lensler için, standart bir iğne deliği bozulma modelini zorlamayın; OpenCV'nin balık gözü modelini veya kullanılan lense uygun bir modeli seçin. Kalibrasyonun ortalama yeniden projeksiyon hatası küçük olsa bile, hata yapısı görüntü kenarlarında, farklı odak uzaklıklarında, sıcaklıkla, odakla veya çözünürlük değişiklikleriyle kayabilir.
İki görünüm işleme girmeden önce, kalibrasyon değerlerinin mevcut yakalamanızla aynı çözünürlük, kırpma ve dijital yakınlaştırma koşullarında elde edildiğini doğrulayın. E'i undistortPoints ile normalleştirilmiş noktalardan tahmin etmekle, bozulmamış görüntülerden F'ı tahmin etmek arasında kolayca karışıklık yaşanabilir. Bir API'nin dahili olarak odak uzaklığı, ana nokta ve bozulmayı kullanıp kullanmadığını veya önceden düzeltilmiş koordinatları bekleyip beklemediğini her zaman okuyun. Stereo bir düzenek için, her iki kameranın içsel parametrelerine ek olarak, stereoCalibrate ile göreceli pozisyonu bulun ve stereoRectify ile epipolar çizgileri yataya düzeltin.
10. OpenCV'de Minimal Bir İşlem Hattı
Aşağıda, kalibre edilmiş tek gözlü bir kameranın iki karesinden göreceli pozisyonu ve kalite filtreli seyrek 3B nokta kümesini elde etmek için iskelet verilmiştir. Özellikler için ORB kullanır, ancak bu, yakalama koşullarına bağlı olarak SIFT veya öğrenme tabanlı bir eşleştirici ile değiştirilebilir. Pratikte ayrıca pozlama, hareketli nesneler ve zaman senkronizasyonunu da kaydedersiniz.
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)
Bu örnek, ham pikselleri ve K'ü doğrudan findEssentialMat'e aktarır, ancak bozulma ihmal edilemez ise, önce undistortPoints'dan normalleştirilmiş noktaları aktarın ve ilgili API formuna geçin. Ayrıca, recoverPose tarafından döndürülen \mathbf{t}'yi "kat edilen mesafe" olarak ele almak da bir hatadır. Ölçek gerektiren uygulamalar, bunu bilinen bir taban çizgisi, VIO, tekerlek odometrisi, derinlik sensörü veya benzeri bir şeyle sınırlandırmalıdır.
COLMAP, özellik çıkarma, eşleştirme, geometrik doğrulama, artımlı haritalama ve demet ayarlamasını tek bir bağlantılı işlem hattı olarak uygular. Küçük veri kümeleri için, kamera modelini ve yeniden yapılandırmayı GUI aracılığıyla inceleyebilirsiniz. Komut satırında, kamera modeli seçimi, EXIF odak uzaklığının nasıl ele alındığı, eşleştirme stratejisi (kapsamlı/sıralı/kelime ağacı) ve görüntü çiftleri arasındaki zaman aralığı hem doğruluğu hem de hesaplama maliyetini belirler. Yeniden yapılandırmadan sonra, nokta sayısını değil, kayıtlı görüntü sayısını, ortalama yeniden projeksiyon hatasını, görüntü başına gözlem sayısını ve nokta bulutundaki boşlukları kontrol edin.
11. Yaygın Hata Durumları ve Teşhisleri
Küçük Paralaks, Taban Çizgisi Yok
İleri hareket, uzak bir sahne veya kısa bir kare aralığı ile derinlik elde etmeden yine de eşleşmeler elde edebilirsiniz. Epipolar çizgiler makul görünüyorsa ancak üçgenleme açısı sıfıra yakınsa, derinliği güncellemek yerine güncellemeyi erteleyin. Temel çözümler, anahtar kareleri daha uzak aralıklarla yerleştirmek, yanal hareketle gözlemler yakalamak veya bilinen bir taban çizgisine sahip bir stereo donanım kullanmaktır.
Saf Dönme veya Düzlemsel Dejenerasyon
Paslama çekimlerinde veya yalnızca bir duvar içeren bir görüş alanında, H açıklayıcı güce sahiptir. E için yüksek bir iç nokta sayısı, mutlaka öteleme gözlemlendiği anlamına gelmez. H ve E arasındaki rekabeti kaydedin ve üçgenlemeden sonra pozitif derinlik oranına ve medyan paralaksa göre kapılama yapın. AR poster takibinde bu bir başarısızlık değil, doğru model seçimidir.
Uyumsuzluklar, Tekrarlayan Desenler, Yansımalar
Pencereler, karolar, kitaplıklar, LCD ekranlar ve su yüzeyleri benzer yerel tanımlayıcılar üretir. Oran testini, karşılıklı en yakın komşu eşleştirmesini ve geometrik RANSAC'ı katmanlayın ve iç noktaların tüm görüntüye yayılıp yayılmadığını kontrol edin. Ayna görüntüleri ve saydam nesneler, katı cisim ve Lambert yansıma varsayımını bozar, bu nedenle eşik ayarlaması ne kadar yapılırsa yapılsın sizi kurtaramaz.
Dinamik Nesneler ve Çoklu Hareketler
RANSAC yalnızca en büyük tek hareketi seçer. Arka plan azınlıkta ise, bunun yerine bir arabanın hareketini tahmin edebilir. Uygulamanıza bağlı olarak, insanları/araçları anlamsal olarak hariç tutmayı, optik akışı kümelemeyi, çoklu model tahmini çalıştırmayı veya derinlik/IMU ile hizalamayı seçebilirsiniz.
Lens Bozulması, Yuvarlanan Deklanşör, Asenkronizasyon
Düzeltilmemiş geniş açılı bir kenar kullanmak, epipolar çizgilerde sistematik eğrilik bırakır. Hızlı hareket sırasında yuvarlanan deklanşörle, tek bir kare içinde tutum değişir, bu nedenle tek bir E yalnızca bir yaklaşımdır. Stereo bir çift için sol/sağ pozlama zamanlamasında hafif bir sapma bile, hareketli nesneler için sahte eşitsizlik üretir. Küresel deklanşör, kısa pozlama, satır zamanlama modeli, IMU tabanlı düzeltme ve donanım senkronizasyonunu göz önünde bulundurun.
Sayısal ve Koordinat Çerçevesi Kazaları
Piksel ve normalleştirilmiş koordinatların karıştırılması, R,\mathbf{t} için dünya-kamera ile kamera-dünya koordinatlarının karıştırılması, sol/sağ nokta sırasının değiştirilmesi ve bir görüntüyü yeniden boyutlandırdıktan sonra K'in güncellenmesinin unutulması yaygın hatalardır. Tahmini değerleri olduğu gibi kabul etmeyin — eşleşmeleri ve epipolar çizgileri üst üste bindirin ve her iki kamerada da pozitif derinlik, yeniden projeksiyon hatası, \det R=1 ve R^\mathsf{T}R\simeq I için kontrolleri otomatikleştirin.
12. Pratik Değerlendirme Ölçütleri ve Tasarım Kontrol Listesi
"Bir matris geri geldi" diye iki görünüm tahminini başarılı saymayın. Eşleşme sayısı doku miktarına bağlı olarak çarpıtılır ve ortalama hata tek başına birkaç iyi noktayı gizleyebilir. Aşağıdakileri kare başına kaydetmek, daha sonra sensör/eşleştirici/poz tahmini zincirinde bir şeyin nerede bozulduğunu ayırt etmenizi sağlar:
- Algılama sayısı, oran testi geçme sayısı, RANSAC iç nokta sayısı/oranı, görüntü ızgara hücreleri boyunca dağılım
- Medyan ve üst yüzdelik dilim Sampson mesafesi ve yeniden projeksiyon hatası, pozitif derinlik oranı, üçgenleme açısı dağılımı
- H ile E/F için destek sayısı ve sağlamlık puanı ve bir modelin kabul edilme veya reddedilme nedeni
- Tahmin edilen dönüşün büyüklüğü, öteleme yönünün zamansal sürekliliği, ölçeklendirilmiş harici bir sensörle tutarlılık
- Pozlama süresi, kazanç, IMU açısal hızı, sol/sağ zaman kayması, bulanıklık metriği, görüntü maske oranı
Araştırma veya ürün değerlendirmesi için, gerçek veriler mevcutsa, göreceli dönüş hatası, öteleme yönü hatası, yörünge ATE/RPE ve mutlak/göreceli derinlik hatasını ayrı ayrı raporlayın. Tek gözlü iki görüşlü öteleme ölçek belirsizliği içerdiğinden, hatanın normalleştirmeden sonra mı yoksa Sim(3) hizalamasından sonra mı oluştuğunu açıkça belirtin. Başarısız kareleri ortalamadan çıkarmak yerine, her bir hatanın hangi dejenerasyon veya görsel koşul altında meydana geldiğini belirtmek, sistemin sınırlarını daha dürüst bir şekilde iletir.
13. Son Gelişmeler: Öğrenme Geometrinin Yerini Aldı mı?
Öğrenmeye dayalı anahtar noktalar ve tanımlayıcılar (SuperPoint), kaba-ince eşleştiriciler (LoFTR) ve genel amaçlı eşleşme tahmini (LightGlue ve benzeri), düşük doku veya bakış açısı değişimi altında klasik tanımlayıcılardan daha fazla aday eşleşme üretebilir. Ancak bir ağ tarafından döndürülen eşleşmeler yine de yanlış olabilir ve kamera hareketi, düzlemler, yuvarlanan deklanşör ve ölçek gibi fiziksel belirsizlikler ortadan kalkmaz. Pratik SfM/SLAM'de, öğrenilen bir eşleştiricinin çıktısını E/F/H'ın sağlam tahmini artı demet ayarlaması yoluyla doğrulayan hibrit bir kurulum, pratik seçim olmaya devam etmektedir.
Daha geniş bir düzeyde, NeRF ve 3B Gaussian Splatting gibi sinirsel/açık sahne temsilleri de birden fazla görünümde tutarlılığı kullanır. Bunlar, çekici yeni görünüm sentezine olanak tanır, ancak kamera pozisyonunun ve gözlem geometrisinin kalitesine duyarlıdır ve birçok uygulama COLMAP'tan türetilen pozisyonlarla başlatılır. Büyük ölçekli, dinamik ve yansıtıcı ortamlar için eşleşme, derinlik, segmentasyon, atalet verileri ve zamanlama modellerinin birlikte tahmin edilmesi üzerine araştırmalar devam etmektedir.
Bu nedenle, daha yeni bir modeli benimseme kararı yalnızca "ORB'ye kıyasla eşleşme sayısı arttı mı" sorusuna dayanmamalıdır; aynı zamanda tahmin sonrası iç nokta dağılımını, pozisyon hatasını, hesaplama gecikmesini, GPU gereksinimlerini, eğitim koşullarının dışında arızayı ve lisanslamayı da hesaba katmalıdır. Geometri, modası geçmiş bir ön işleme adımı değildir; öğrenilen bir modelin çıktısını gerçek 3B yapıya karşı kontrol eden doğrulayıcı olmaya devam etmektedir.
14. Sonuç
Epipolar geometri, iki görüntü arasındaki eşleşmeleri "en benzer görünen noktalar"dan "tek bir kamera hareketiyle açıklanabilen noktalar"a yükselten çerçevedir. İçsel parametreler biliniyorsa, E=[\mathbf{t}]_\times R aracılığıyla göreceli pozisyona geçersiniz; değilse, F ile epipolar çizgileri ve eşleşmeleri doğrularsınız. 8 noktalı algoritma, anlama ve başlatma için temeldir, 5 noktalı algoritma sağlam tahmin için verimli bir minimal çözücüdür, RANSAC aykırı değerleri varsayan mekanizmadır ve üçgenleme artı demet ayarlaması 3B'ye köprüdür.
Ancak, paralaks yoksa, yalnızca bir düzlem varsa, saf dönüş varsa, birçok hareketli nesne varsa veya ağır bozulma/eşzamansızlık varsa, döndürülen matris fiziksel olarak anlamlı derinlik veya öteleme garanti etmez. Homografiye karşı model seçimini tasarlamak, kalibrasyon koşullarını yönetmek, yeniden projeksiyon hatasını ve pozitif derinliği kontrol etmek ve harici ölçekle tek bir işlem hattında birleştirmek, tekrarlanabilir bilgisayar görüşüne yol açan şeydir.
Epipolar bir çizgi, eşleşmeyi benzersiz bir şekilde belirler mi?
Aramayı bir çizgiye daraltır.
Görüntü kanıtı yine de noktayı belirlemelidir ve tekrar veya örtüşme belirsizliğe yol açabilir.Referanslar (Birincil Kaynaklar ve Resmi Belgeler)
- Hartley & Zisserman, Bilgisayar Görüşünde Çoklu Görünüm Geometrisi (yazarın resmi sayfası)
- Longuet-Higgins, İki projeksiyondan bir sahneyi yeniden yapılandırmak için bir bilgisayar algoritması (1981, Royal Society)
- Hartley, Sekiz Noktalı Algoritmanın Savunmasında (IEEE TPAMI, 1997)
- Nistér, Beş Noktalı Göreceli Poz Probleminin Etkin Bir Çözümü (IEEE TPAMI, 2004)
- Fischler & Bolles, Rastgele Örneklem Konsensüsü (ACM İletişimleri, 1981)
- OpenCV — Epipolar Geometri eğitimi
- OpenCV — calib3d: findEssentialMat / recoverPose
- COLMAP resmi dokümantasyonu
- Schönberger & Frahm, Hareketten Yapı Oluşturma Yeniden Gözden Geçirildi (CVPR 2016)
- Sarlin ve diğerleri, LightGlue (ICCV 2023)
Yorumlar
Lütfen önce giriş yapın.
Henüz veri yok.