2016-04-06 48 views
2

Nesnenin nokta bulutu var ve sonra belirli bir düzlemde bulunan tüm noktalardan nokta bulutu oluşturuyorum. Bu nokta bulutu şu gibi bir şeye benziyor: enter image description herePCL - Yoğun alanlarda bulunmayan filtreleme noktaları

Bu dikdörtgede olmayan tüm ek noktaları filtrelemek istiyorum. Düzlem için tüm noktaları aldığımda, aynı düzlemde olduğu düşünülen ilgili olmayan noktalar vardır. Bunları filtrelemek istiyorum, bu yüzden sadece dikdörtgenin içindeki noktalarla çalışabilirim.

Nokta bulutları ve nesne modelleme ile çalışmak için çok yeni, bu yüzden ne aradığımı bilmek zor. StatisticalOutlierRemoval'u kullanmayı denedim, ancak (sürpriz olmayan) bu ekstralar her zaman biraz fazla yoğun olduğunda, her zaman ekstra noktaları alamaz. Parametrelerini filtrelemede daha agresif olacak şekilde değiştirirseniz, ilgilendiğim dikdörtgenin noktalarını kaldırmaya başlarım.

filters kullanılabilir bir sürü var biliyorum, ama gerçekten nasıl bilmiyorum Bu problemi çözmek için en uygun çalışma ya da hangisidir. Her birini deneme yanılma ile geçebilirdim, ama birisinin beni doğru yöne yönlendirebileceğini umuyorum. Bu sonucu elde etmenin bir yolu var mı?

cevap

1

Sen deneyebilirsiniz:

  • 'r' (setRadiusSearch) ve boyutlar ve bulutun yoğunluğuna göre 'k' (setMinNeighborsInRadius) değerleri ile Radious Outlier Removal kullanın. Aptallık kuralı olarak, bu değerler ne kadar yüksekse, filtreleme ile ilgilendiğiniz noktaları filtreleme şansınız o kadar yüksek olur. Eğer aslında ilginç noktaların koordinatlarını biliyorsanız

  • Kullanım Pass Through Filter, setFilterLimits sahip bir "sınırlayıcı kutu" ve kutunun dışında bu şekilde Everithing filtre edilecektir inşa etmek koordinatlar kullanın.

Eğer SOR filtrenin parametrelerini değiştirmeye çalıştığında, size kaldırılacak istemediğini noktaları kaldırmak başladığını söylediği gibi, Filtre sayesinde muhtemelen Geçiş en iyi bahistir.

Umarım bu size yardımcı olur.

1

David gibi RadiusOutlierRemovalı deneyebilirim. Verilerinizin çoğunlukla 2 boyutlu olduğunu varsayarsak - Bulunduğunuz bulutun yoğunluğunu dikdörtgenizde belirleyin (D/nokta/D). Dikdörtgenizdeki en zayıf nokta, sadece D/4 komşularına sahip bir köşedir (daha kısa kenardan daha büyük olmayan maksimum yarıçap için). X'in güvenlik faktörü ile artık tüm noktaları mahallelerinde D/(X * 4) 'den daha düşük yoğunlukta filtreleyebilirsiniz. Dikdörtgenin daha kısa kenarına eşit olan bir yarıçap r ile başlar ve daha büyük, daha uzak aykırı kümeleri elde etmek için (D * r²)/(4 * X) komşularından daha azıyla noktayı kaldırırsınız. Dikdörtgene yakın daha küçük kümeleri yakalamak için bu işlemi yarıçapı azaltarak tekrarlarsınız.

+0

Bölge büyütme segmentasyonu (http://pointclouds.org/documentation/tutorials/region_growing_segmentation.php) kullanarak sona erdim ve daha sonra kümenin en fazla puanı aldığı her şeyi kullandım. Bu ihtiyaçlar için iyi çalışıyor gibi görünüyor. Bunun kötü bir fikir olacağını herhangi bir sebep var mı? – dnc253