2D kamera kullanarak 3D Konum tahmini


9

Bir kameram (iPhone) var, görüntüde özelliklerini çok iyi bildiğim bir 3D kontrol nesnesim var. (Kontrol nesnem). Hareket halindeki ikincil bir nesne de vardır. Nihai hedef, belirli bir süre için hareketli nesnenin 3D yörüngesini oluşturmaktır. (İzleme)

Sormayı seviyorum, öğrenebilir miyim?

  • Telefonun kontrol nesnesine uzaklığı (tartışma amacıyla, kameranın belirli bir yükseklikte olduğunu ve bunların hiçbirinin bilinmediğini, ancak kamera bilinen yüzeye dik olduğunu varsayalım)

  • Nesneyi sonraki her karede bulabileceğim ikincil nesne. Amacım, 3D yörüngesini yukarıda belirttiğim gibi tahmin etmektir.

Bonus soru, sistemi kontrol nesnesine olan mesafenin (tercih edilmese de) ayarlanabileceği şekilde yapabiliriz, bu ikinci noktaya yardımcı olur mu?


Bu alandaki literatüre aşina mısınız? Değilse bazı makaleler önerebilirim, ancak uyarılmalıdır: matematik söz konusudur.
Emre

@ emre bazı işaretçiler sağlamak harika olurdu. Matematik sorun değil, matematiği seviyoruz.
Ktuncer


@emre İnceleme kağıdına hızlıca baktım .. Bu daha çok izleme için, nesneyi kolayca takip edebilirim, sorun bu değil. Nesnenin piksel olduğu noktayı sabitleyebilirim. Sorun, nesnenin 3B alanda olmasıdır. Mümkün mü? Temel olarak, bir referans çerçevesi olarak kullanabileceğim özellikleri bildiğim 3B alanda başka bir nesnem var ama bu kadar.
Ktuncer

Üzgünüm, yanlış kağıt. Belki Bilinmeyen Ortamlar İçin Vizyon Tabanlı 3D Yörünge İzlemeyi adapte edebilirsiniz [PDF]? Stereo kamera kullanıyorlar; bu senin için bir olasılık mı?
Emre

Yanıtlar:


15

Nesnenizde bilinen 6 nokta (bilinen 3D koordinatları, ve ) varsa, nesnenin koordinat sistemiyle ilgili kameranın konumunu hesaplayabilirsiniz.X,YZ

Önce bazı temel bilgiler.

Homojen koordinat, homojen koordinat ölçek faktörü olarak eklediğimiz öklid koordinatının vektör sunumudur. . Kendi hesaplamalarınızda mümkün olduğunca sık tutmaya çalışın (yani homojen koordinatı son öğesiyle bölerek "normalleştirdiğiniz" anlamına gelir: ). Ayrıca, 2D için (bu ve(X,Y,Z)ωX=ω[XYZ1]Tω=1XXωx=ω[XY1]ω,X,YZ2D veya 3D nokta olsun, her nokta için farklıdır). Homojen koordinat sunumu matematiği kolaylaştırır.

Kamera matrisi, 3D dünyasından görüntü sensörüne projeksiyon matrisidir:3×4

x=PX

Burada (piksel birimleri ile) görüntü sensörü üzerindeki bir nokta ve bir (kendi birimler olarak milimetre sahip sağlar ki) 3D noktası öngörülmüştür.xX

İki 3 vektör arasındaki çapraz ürünün, matris-vektör-çarpma olarak tanımlanabileceğini hatırlıyoruz:

v×u=(v)xu=[0v3v2v30v1v2v10]u

Ayrıca çapraz üretim not etmek de yararlıdır .v×v=0

Şimdi projeksiyon matrisini önceki denklemlerden çözmeye çalışalım . Projeksiyon denklemini sol taraftan s çapraz ürün matrisi ile :Px

(x)xx=(x)xPX=0

Aha! Sonuç sıfır vektör olmalıdır. Şimdi denklemi açarsak:

[0wyw0xyx0][P1,1P1,2P1,3P1,4P2,1P2,2P2,3P2,4P3,1P3,2P3,3P3,4]X=[P3,4WyP2,1XwP2,2YwP2,4Ww+P3,1XyP2,3Zw+P3,2Yy+P3,3ZyP1,4Ww+P1,1XwP3,4Wx+P1,2YwP3,1Xx+P1,3ZwP3,2YxP3,3ZxP2,4Wx+P2,1XxP1,4WyP1,1Xy+P2,2YxP1,2Yy+P2,3ZxP1,3Zy]=0

Biraz yeniden düzenleme ile projeksiyon matrisini matrisin dışına çıkarabiliriz :P

[0000XwYwZwWwXyYyZyWyXwYwZwWw0000XxYxZxWxXyYyZyWyXxYxZxWx0000][P1P2P3]=0

Nerede Pn devri n: kamera matrisinin th satırı P. Önceki (büyük) matris denkleminin son satırı, ilk iki satırın doğrusal birleşimidir, bu nedenle ek bilgi getirmez ve dışarıda bırakılabilir.

Küçük bir duraklama, böylece zorlarımızı toplayalım. Bilinen her 3D-> 2D yazışma için önceki matris denkleminin oluşturulması gerektiğini unutmayın (en az 6 tane olmalıdır).

Şimdi, her nokta yazışması için, yukarıdaki matrisin ilk iki satırını hesaplayın, 2×12 matrislerin üst üste gelmesi ve yeni matris elde edilmesi A hangisi için

A[P1P2P3]=0

12 bilinmeyen ve (en azından) 12 denklemimiz olduğu için bu çözülebilir. Tek sorun şu ki önemsiz cevabı istemiyoruz

[P1P2P3]=0

Neyse ki zorlamak için tekil değer ayrışmasını (SVD) kullanabiliriz

[P1P2P3]=1

Denklemleri çözmek için matrisinin SVD'sini hesaplayın ve en küçük öz değerine karşılık gelen tekil vektörü seçin. Bu vektör, A matrisinin null vektörü ve aynı zamanda kamera matrisi için çözümdür . Sadece, ayrıştırılması ve form .AP[P1P2P3]TP

Şimdi nesneye olan mesafeyi bilmek istediniz. şöyle tanımlanır:P

P=K[RRC]

burada , nesnelerin başlangıç ​​noktasına göre kamera konumudur. Bu çözülebilecek hesaplayarak ler boş vektör.CPP

(Hartley, Zisserman - Bilgisayarlı Görmede Çoklu Görünüş Geometrisi)

Son olarak, iki kare için kamera konumunu hesapladığınızda, için iki denklemi çözerek bilinmeyen nesnelerin konumlarını (veya nesnenin bazı noktalarının konumlarını) hesaplayabilirsiniz :X

x1=P1Xx2=P2X

Bu, kamera matrislerini nasıl çözdüğümüzle neredeyse aynı şekilde gider:

(x1)xP1X=0(x2)xP2X=0

Ve bunun gibi.


Kameranın 3B konumunu hesaplamanın yolunun OpenCV solvePnp ile eşdeğer olduğunu söylemek doğru mu? docs.opencv.org/2.4/modules/calib3d/doc/… (sayfada solvePnP öğesini arayın. # ile bir URL yapıştıramıyorum)
gregoiregentil
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.