Başlamak için, kameranın üzerindeki her noktanın 2D pozisyonu var. Ve bizim hedefimiz bu noktaların 3D konumunu yeniden inşa etmek. Basitleştirmek için, biz her kamera düşündüğümüz noktayı görmek varsayalım.Bizim yeniden yapmak için, en az iki 2D koordinatları, yani 2 kamera gerekir.
Gösterimler:
Biz aşağıdaki gösterimler kullanın:
- i kaydetti kamera mesured 2D pozisyonu (Ui * Vi *);
- (Ui, Vi) kamera i bir 3D noktanın tahmin koordinatları vardır.
- Biz sayısını n dikkat kameralar.
- Bir 3D nokta kaydetti:
Bu noktada homojen koordinat yazılmış, aynı zamanda 4 katsayıları vardır.
P matrix:
matris P 2D (kamera locate) 3D (dünya locate) bir dönüşüm matrisidir. Ifadesi aşağıdaki biridir:
Matrisi P ayrıca MATLAB tarafından gönderilen parametreleri ile exprimated bir matristir. Matris K esas parametrelerinin matrisidir. fu ve fv fokal kameranın mesafe ve u0 temsil ve ana noktası v0 koordinatları. R dönme matrisi (3x3) ve T çeviri vektör (3x1) 'dir.
Bize kamera 3D koordinatları çıkıntılı bir kamera llet arasında P matrisi. Nitekim, biz Ui ve Vi hesaplayabiliriz:
Sorun:
Bir noktanın 3D yeri bulmak için, her kamera noktasının ölçülen konumu ve tahmin konum arasındaki mesafeyi en aza indirmek istiyoruz. Biz bu denkleme Özetle:
Amacımız bunu en aza indirmek için, bu yüzden denklemi çözmek istiyorsanız e (x) = 0 .
Emsal denklem bu sistemde reasumed edilebilir:
Her Kamera Bu denklemde 2. lignes vardır. Bir de bir matris 2n x 4 matris
Böylece, biz kullanarak çözebileceğiniz bir sistem elde SVD geliştirilir OpenCV .
Ilkesi, SVD A o şekilde matris ayrıştırmak t:
U ve V, iki ortogonal matris olup, S ve bir çapraz biridir.
Fonksyonunun cvSVD arasında OpenCV bir kare matris getirmek için bize empoze.
Dolayısıyla, gelin görme sadece iki kamera varsa, bir kare ve biz bu yöntemi uygulayabilirsiniz.
Diğer durumlarda, biz çarpmaktır kolay bir yol kullanmak onun transpoze matris soldaki A.
Biz de bir kare matris elde 4x4 , ve biz normal yöntemi uygulayabilirsiniz.
cvSVD bize matrisler S ve V. Biz S. minimum değerini araştırın döndürür
köşegen matris S tekil değerler yapılmıştır. Sonra biz bu değerlerin minimum aramak ve karşılık gelen Vi (lign vektör). (Dim = 4) almak zorunda. Bu vektör sayesinde, 3D pozisyon X var:
Çözüm:
Bu yöntem iyi biridir, ama sorun, biz şimdiye kadar tüm kameralar tarafından görülmez yeniden istersiniz nesnedir. Biz matris nesnesi (bir noktaya yeniden en az 2 kamera ...) görmek kameraları Bir tek ayarlamak zorunda!
Bugün 88 Kişi 109 ziyaretçi (124 klik) Toplam 321439784858941325