【点云StatisticalOutlierFilter】python-pcl:去除离群点
生活随笔
收集整理的這篇文章主要介紹了
【点云StatisticalOutlierFilter】python-pcl:去除离群点
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
點(diǎn)云去除離群點(diǎn)
方法:StatisticalOutlierFilter
原理:使用K近鄰方法找到點(diǎn)云中每個(gè)點(diǎn)k近鄰,計(jì)算出標(biāo)準(zhǔn)距離;設(shè)置倆個(gè)點(diǎn)之間距離超過標(biāo)準(zhǔn)距離*std倍數(shù)的為離群點(diǎn)。
結(jié)果:將點(diǎn)云分為倆部分,內(nèi)點(diǎn)以及離群點(diǎn)。通過設(shè)置 set_negative 可保存離群點(diǎn)的點(diǎn)云文件,也可保存內(nèi)點(diǎn)點(diǎn)云文件。
官方示例效果如下:
原始點(diǎn)云:
內(nèi)點(diǎn)點(diǎn)云:
離群點(diǎn)云:
可以看到柱子腿旁邊的離散的點(diǎn)被去掉了。
官方數(shù)據(jù)集的效果比較好,具體應(yīng)用到自己的數(shù)據(jù)集上,點(diǎn)云密度太大,一個(gè)是耗時(shí),另一個(gè)效果也不是那么好。
# -*- coding: utf-8 -*-
# http://pointclouds.org/documentation/tutorials/statistical_outlier.php
# http://svn.pointclouds.org/data/tutorials/table_scene_lms400.pcd# <離群點(diǎn)去除,并分別存儲不同的文件>
import pcldef main():p = pcl.load("D:/tests/tutorials/table_scene_lms400.pcd")# 使用K近鄰的50個(gè)點(diǎn)計(jì)算標(biāo)準(zhǔn)距離,距離超過標(biāo)準(zhǔn)距離1倍的被認(rèn)為是離群點(diǎn)fil = p.make_statistical_outlier_filter()fil.set_mean_k(50)fil.set_std_dev_mul_thresh(1.0)pcl.save(fil.filter(),"D:/tests/tutorials/table_scene_lms400_inliers.pcd")fil.set_negative(True) #保存不滿足條件的,即離群點(diǎn)文件pcl.save(fil.filter(),"D:/tests/tutorials/table_scene_lms400_outliers.pcd")if __name__ == "__main__":main()
總結(jié)
以上是生活随笔為你收集整理的【点云StatisticalOutlierFilter】python-pcl:去除离群点的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用OpenCV,Python和dlib
- 下一篇: 求一个好听的劲舞团家族名字