Stereo kameralardan yoğun nokta bulutları nasıl elde edilir?


12

Sahne rekonstrüksiyonu için bir stereo kamera kullanmaya çalışıyorum, ancak genellikle sadece seyrek nokta bulutları elde edebilirim (yani görüntünün yarısından fazlası uygun derinlik bilgisine sahip değildir).

Stereo işleme algoritmalarının görüntülerde doku varlığına bağlı olduğunu ve eşitlik aralığı veya korelasyon penceresi boyutu gibi daha iyi sonuçlar elde etmek için ayarlanabilecek birkaç parametreye sahip olduğunu fark ediyorum. Bu parametreleri ayarladığım kadarıyla, Kinect gibi aktif bir sensör kullanılarak elde edilebilecek şeylere uzaktan bile yakın sonuçlar elde edemiyorum.

Bunu istememin sebebi, çoğu zaman bitişik bölgelere karşılık gelen nokta bulutlarının bir eşleşme elde etmem için yeterli örtüşmemesi, bu nedenle yeniden yapılanma ciddi şekilde bozuluyor.

Computer Vision uzmanlarına sorum şu: genel olarak daha yoğun nokta bulutları elde etmek için ne yapabilirim (ofis ortamımı keyfi olarak değiştirmeden)?


Bu iyi bir soru, ama daha fazla detayın gerekli olduğunu düşünüyorum. Eşleşmeleri hesaplamak için hangi algoritmaları denediniz? "Bitişik bölgeler" ve "örtüşme" ile ne demek istediğinizi açıklar mısınız?
Josh Vander Hook

"Bitişik bölgeler" dediğimde, fiziksel alanın eşdeğer olmayan, ancak "örtüşme" olarak adlandırdığım boş olmayan bir kavşağa sahip kısımlarını kastediyorum. Yani, bir ICP algoritmasında eşleştirilebilen ve birleştirilebilen nokta bulutları oluşturacak bölgeler.
georgebrindeiro

Algoritma hakkında, hala bulabildiğim en basit çözümü kullanıyorum: stereo_image_proc ROS düğümü, OpenCV'de bulunan global blok eşleştirme algoritmasını uygular. ROS düğümü veya daha iyi sonuçlar verdiği bilinen diğer algoritmalar aracılığıyla doğrudan erişilemeyen parametre ayarlarını duymakla çok ilgileniyorum.
georgebrindeiro

Yanıtlar:


4

Göze çarpan nokta algılamayı atlamayı deneyebilir ve görüntünün üzerinde yoğun bir şekilde örnek (ızgara gibi) ve her örnek noktasında bir özellik tanımlayıcısı hesaplayabilirsiniz. Muhtemelen her piksel için bir tanımlayıcı hesaplamak kadar ileri gidebilirsiniz.

Ölçek değişmezliğini kaybedebilirsiniz, ancak nesnelerin her iki görüntüde yaklaşık olarak aynı ölçekte olacağı için stereo görüş için çok fazla zarar vermeyeceğini düşünüyorum.

Başka bir yaklaşım, birden fazla göze çarpan nokta algılama algoritmasını birleştirmek olabilir: köşeler, kenarlar, lekeler vb. Daha sonra, algılanan tüm noktalar için aynı özellik tanımlayıcı algoritmasını kullanmanız gerekir, ancak bu ikinci bölümün uygulanması biraz zor olabilir.


2

Böylece geçmişte kullandığım stereo görüntü işleme algoritmaları piksel piksel uygulandı. Sadece iğne deliği kamera modelini kullandık ve derinlik tahminlerimiz gerçekle eşleşene kadar ölçüm bandı ile bazı eski moda ölçümler yaptık.

Bir çift paralel kamera için denklemler:

  • d= kameralar arasındaki mesafenin yarısı
  • f= kameraların odak uzaklığı (aynı olduğu varsayılır)
  • Koordinat Çerçeveleri:
    • x,y,z= kameralar arasındaki koordinat çerçevesi (yani kamera temel çerçevesi)
    • uR,vR kamera robotun perspektifinden sağ kamerada koordinatlar (u yatay, v dikey)
    • uL,vL sol kamerada kamera koordinatları
    • Not: kamera koordinatlarının kökleri kameralar arasındaki koordinat çerçevesinde bulunur (yani u eksenleri ters yönlere bakar)

uL=f(xd)z ,uR=f(x+d)z

zuR=f(x+d) ,zuL=f(xd)

z(uRuL)=2df

z=2dfuRuL

y=vLz+dff

x=uLz+dff

Bu denklemleri kullanarak yoğun bir stereo bulut hesaplayabilirsiniz. Kameralarınızdaki her piksel için bir tane.


Çaba için teşekkürler, ama stereo modellemeye aşinayım. Sorun genellikle tam olarak sol ve sağ kameralardaki (u, v) koordinatları arasındaki yazışmadır. muksie bununla nasıl başa çıkılacağı konusunda bazı fikirler verdi ve sylvain.joyeux, daha iyi sonuçlara yol açan harika bir stereo kütüphaneye dikkat çekti ...
georgebrindeiro

1

"Görüntünün yarısından fazlası uygun derinlik bilgisine sahip değil" derken, hangi yarısı?

Karşılaştığımız bir konu, nesneye olan mesafe taban çizginizle aynı büyüklükte ise (genellikle çok geniş açılı kameralarla ilişkilendirilirse), "standart" yoğun stereo algoritmaların çok iyi çalışmadığıdır. Libelas kütüphanesini kullanıyoruz ve geliştiricileri bize bunun "büyük temel stereo" olarak adlandırıldığını ve başka bir sorun olduğunu söyledi.


Görüntünün yarısının uygun derinlik bilgisi olmadığını söylediğimde, tüm piksellerin yalnızca yarısının hesaplanmış eşitsizliklere sahip olması gerektiğini kastediyorum (bir bitişik bölge oluşturması gerekmez). Uzaklık-nesne / taban çizgisi oranı ile bahsettiğinizle aynı sorunu yaşamıyorum, ancak bu kütüphaneyi duymak çok ilginçti ve bu bir sorun olabilir. Teşekkürler!
georgebrindeiro

1
Her iki durumda da, bunun için bir ROS sarıcı bulduğumdan beri libelaları deneyeceğim !
georgebrindeiro

0

KITTI Stereo Benchmark liderlerine bir göz atın . Bu kıyaslama, belirli bir noktada bir eşitsizlik üretmeme algoritmalarını cezalandırır, bu nedenle en iyi performans gösterenler yoğun çıktılar üretir (birçok noktada tahminleri için fazla zemine sahip olmasalar bile). Bazı yöntemlerde, deneyebileceğiniz bağlı olan herkese açık bir kod bulunur.

Uzun zaman aldıkları için cezalandırılmadığına dikkat edin, bu nedenle birçok yöntem çalıştırılacak görüntü başına dakika sırasını alacaktır ve uygulamanız için uygun olmayabilir. Bir GPN'de hala bir saniyeden daha az bir sürede çalışırken, çok iyi sonuçlanmış olsa da, birçok CNN tabanlı yöntem tanıtıldı. Bunlardan en az birinin (CRL) genel kodu vardır.

Görüntülerinizde bunlarla hala iyi derinlik tahminleri almıyorsanız, sadece görünür bir yaklaşımdan mümkün olanın sınırlarını görüyor olabilirsiniz. Noktaları iyi bir şekilde eşleştirebilmek için bölgede temel olarak belirgin bir doku olması gerekir ya da tekstüre olmayan bölgelerde bazı güçlü varsayımlar (örneğin, pürüzsüzlük) yapmak için bir temele ihtiyacınız vardır.

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.