Kamera kalibrasyonu / pim deliği kamera modeli ve 3B pozisyonu


10

Kalibre edilmiş bir kameram var ve gerçek parametrelerim var. Ayrıca, gerçek dünyadaki düzlemsel bir yüzey üzerindeki bir noktaya (dünya kaynaklı) göre dışsal parametrelerim var. Bu nokta, gerçek dünya koordinatlarında [0,0,0], [0,0,1] normalinde başlangıç ​​noktası olarak belirledim.

Bu dışsal parametrelerden, burada kullanarak dünya düzlemi 3d koordinatlarında kamera konumunu ve rotasyonunu çalıştırabilirim: http://en.wikipedia.org/wiki/Camera_resectioning

Şimdi [x, y] için görüntü koordinatlarını çıkardığım ikinci bir nokta daha var. Şimdi dünya koordinat sisteminde bu noktanın 3B pozisyonunu nasıl alabilirim?

Sanırım buradaki sezgi, kameranın optik merkezinden (yukarıda açıklandığı gibi 3D konumuna sahip olduğum), kameranın görüntü düzlemi [x, y] ve daha sonra bir ışını izlemem gerektiğidir. üstte tanımladığım gerçek dünya düzlemim aracılığıyla.

Şimdi normal bildiğim ve o düzlemi gösterdiğim gibi, bir dünya koordinatıyla 3d düzlemi bir düzlemle kesişebilirim. Anlamadığım şey, görüntü düzlemini bir pikselden çıkarken 3d konumunu ve yönünü nasıl bulduğum. Bu beni şaşırtan farklı koordinat sistemleri üzerinden dönüşüm.


Bu cevabı kontrol edin, yardımcı olabilir. Bir şeyin tamamlanabileceğini / tamamlanabileceğini düşünüyorsanız bana söyleyin. dsp.stackexchange.com/a/2737/1473
Jav_Rock

Yanıtlar:


6

Dışsallara sahipseniz, o zaman çok kolaydır. Dışsallara sahip olmak, "kamera pozu" na ve homografiye sahip olmakla aynıdır. Stackoverflow'daki bu gönderiyi kontrol edin .

Çeviri ve döndürme olarak tanımlanan kamera pozu olarak da adlandırılan dışsallara sahipsiniz:

Pose=[R|t]=[R11R12R13txR21R22R23tyR31R32R33tz]

Sen alabilirsiniz eşyazımı gelen Pose bu şekilde:

H=1tz[R1xR2xtxR1yR2ytyR1zR2ztz]

Ardından, Homografiyi puanlarla çarparak 2D noktalarınızı karşılık gelen 3D noktalara yansıtabilirsiniz:

p2D=[xy1] Ekle z=1 onları homojen hale getirmek

p3D=Hp2D

p=p/p(z) Noktaları normalleştirin


burada p (z) ile ne demek istiyorsun?
Belal Homaidan

3

İki seçeneğiniz vardır, iki düzlem arasında geri projeksiyon veya projeksiyon kullanın (homografi).

P

P=K[RRC]Xreprojected=P+x

CXV=ω[XYZ1]Tω=1

u=XreprojectedCv=uuL(t)=C+tv

Eğer uçaktan varsa Eğer çözebilir denklemi için .Π=[π1π2π3π4]T,π1X+π2Y+π3Z+π4=0L(t)=Πt

kullanmaya karar verirseniz , görüntülenen düzlem ile kamera sensörü düzlemi arasındaki çıkıntı olarak tanımlanan homografi matrisini hesaplamanız gerekir :3×3H

Xplane=[XY01]Tx=PXplane=H[XY1]T

Şimdi : x

Xplane=H1x

Fotoğraf makinesini kalibre ederken hesaplamadıysanız (muhtemelen doğrudan doğrusal dönüşüm, DLT kullanarak), aşağıdaki formülasyonu kullanabilirsiniz:H

H=R+1dTNT

Burada , kameranın düzlemden ve . (Ma, Soatto, Kosecká, Sastry - Görüntülerden Geometrik Modellere 3 Boyutlu Vizyona Davet, s. 132)dT=RC


2

İkinci noktanın 3B konumunu bilemezsiniz. Kameranın ortasından sonsuza kadar ışın üzerindeki noktalardan herhangi biri olabilir.

Aşağıdakileri yapabilirsiniz:

  • Gerçek hayat sahnesine benzeyen önceden tanımlanmış bir 3d alan oluşturun
  • Farklı açılardan ışınların kesişimini kullanarak farklı bir açıdan daha fazla görüntü noktası elde edin, 3d noktanın yaklaşık değerini elde edebilirsiniz.

Dayan. 3d ışının düzlemsel yüzeyle kesiştiği 3d dünya noktasını bulabilir miyim? 3D dünya koordinatını ve bu düzlemin normal bir 3d dünyasını bildiğim gibi ..... bulmaya çalıştığım 3d nokta, düzlemsel yüzeyin kesiştiği nokta! (Üzgünüm, açıklamamın yeterince iyi olmadığını düşünüyorum)
Çita

Düzlemsel yüzeyle ne demek istiyorsun? Görüntü düzlemi mi, yoksa sıfır dünya düzlemi mi? İkincisi durumunda, kavşağı hesaplayabilirsiniz, ancak bu 3d sahnenizin 3d değil 2d :) olduğu anlamına gelir (çünkü bir uçaktır).
Geerten

Evet, üzgünüm, bu benim başıma gelmedi. Ne dediğini anlıyorum, görsel olarak bana gerçekten mantıklı gelmiyor. Evet, benim sahnem aslında "2d" çünkü görüntü düzlemim var ve gerçek dünya uçağım var [0,0,0] 'ın üzerinde olduğu ve [0,0, 1], dolayısıyla bu gerçek dünya düzleminde yatan her nokta [x, y, 0] biçimindedir. Kesişimi ax + by + cz + d = 0 ile hesaplayabileceğimi biliyorum, ama sorun yaşadığım şey bu. (Bir sonraki yorumda devam edecek)
Çita

Kamera merkezimde / orijinimde başlayan ve gerçek dünyaya [x, y, z] ve gerçek dünyaya [nx, ny, nz] sahip olan bir ışınım var. Bu noktadan [u, v] görüntü düzlemini kesen ve sonra [x, y, 0] 'da gerçek dünya düzlemiyle kesişen bir ışın ateşlemem gerekiyor (almak istediğim bu x, y). Sorun yaşadığım ilk bit, görüntü düzlemi ile kesişme. Bunu nasıl yaptığımı göremiyorum?
Çita

Şuna bakmak isteyebilirsiniz: en.wikipedia.org/wiki/Line-plane_intersection
Geerten
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.