日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

(2)点云库处理学习——剔除点云值

發(fā)布時間:2023/12/29 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (2)点云库处理学习——剔除点云值 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1、主要參考

1.1參考地址

(1)

點云離群點剔除 — open3d python_Coding的葉子的博客-CSDN博客_離群點去除

(2)

open3d之點云異常值去除(筆記5)_Satellite_H的博客-CSDN博客

(3)斯坦福經典兔子的點云數(shù)據(jù)下載地址

下載地址

Model : Bunny

1.2兔子的實驗

(1)代碼

import open3d as o3d import numpy as np # from copy import deepcopy # from matplotlib import pyplot as pltpath = "D:/RGBD_CAMERA/python_3d_process/bunny.ply" pcd = o3d.io.read_point_cloud(path) # path為文件路徑# o3d.io.write_point_cloud("chenbunny.pcd",pcd) #可以保存數(shù)據(jù),或者修改為其它格式的如pcdo3d.visualization.draw_geometries([pcd])

(2)通過鍵盤的+和-可以控制點云大小,鼠標可以滾動視角

2、剔除的方法?

2.1無效值剔除

詳見我的上一篇blob

(1)點云庫PCL學習——點云的格式、PCD文件的打開和顯示_chencaw的博客-CSDN博客

?無效值包括空值和無限值。空值一般用NaN表示。open3d中對應的剔除函數(shù)為remove_non_finite_points。當remove_nan為True時,剔除空值。當remove_infinite為True時表示去除無限值。?

2.2統(tǒng)計方式剔除

(1)函數(shù)的具體定義

remove_statistical_outlier(nb_neighbors,std_ratio,print_progress = False)

該函數(shù)用于刪除距離其鄰居較遠的點

(2)參數(shù)定義

  • ?nb_neighbors :?目標點周圍的點數(shù)。它指定考慮多少鄰居來計算給定點的平均距離。
  • std_ratio :?std_ratio標準差比率。它允許根據(jù)跨點云的平均距離的標準偏差設置閾值級別。這個數(shù)字越低,過濾器就越激進。
  • print_progress :?為True時,可以顯示處理進度 打印進度條
  • ?(3)測試代碼

    import open3d as o3d import numpy as np from copy import deepcopy##--(1)去除無效值------------------ path = "D:/RGBD_CAMERA/python_3d_process/1_hezi.pcd" pcd = o3d.io.read_point_cloud(path) # path為文件路徑 # pcd.paint_uniform_color([0, 0, 1])#指定顯示為藍色 pcd = pcd.remove_non_finite_points(remove_nan = True, remove_infinite = False) #剔除無效值nan##--(2)統(tǒng)計方法剔除----------------- ##--拷貝一波,對比一起顯示--chen 20221129 pcd2 = deepcopy(pcd) # pcd2.paint_uniform_color([1, 0, 0])#指定顯示為藍色 pcd2.translate((0, 800, 0)) #整體進行y軸方向平移 res2 = pcd2.remove_statistical_outlier(20, 0.5, print_progress = False)#統(tǒng)計方法剔除 # res2 = pcd2.remove_statistical_outlier(20, 0.1, print_progress = False)#統(tǒng)計方法剔除 # res2 = pcd2.remove_statistical_outlier(20, 0.01, print_progress = False)#統(tǒng)計方法剔除 # res2 = pcd2.remove_statistical_outlier(50, 0.1, print_progress = False)#統(tǒng)計方法剔除 pcd2 = res2[0] #返回點云,和點云索引##--(3)顯示一下----------------- o3d.visualization.draw_geometries([pcd,pcd2], #點云列表window_name="離群點剔除對比顯示",point_show_normal=False) # 窗口高度 # o3d.visualization.draw_geometries([pcd,pcd2], #點云列表 # window_name="離群點剔除對比顯示", # point_show_normal=False, # width=800, # 窗口寬度 # height=600) # 窗口高度

    (4)測試結果,

    1)左圖的參數(shù)(20, 0.5)

    ?2)左圖的參數(shù)(20, 0.1)

    ?3)左圖的參數(shù)(20, 0.01)

    ?4)左圖參數(shù)(50, 0.1)

    2.3 半徑濾波方式剔除

    (1)函數(shù)

    remove_radius_outlier(nb_points, radius,print_progress = False)

    函數(shù)功能:刪除給定半徑的給定球體中小于 nb_points 的點的函數(shù)

    (2)參數(shù)說明

    nb_points?(int)半徑內的點數(shù)。它允許您選擇球體應包含的最少點數(shù)

    radius?(float)球體半徑。它定義了將用于計算鄰居的球體的半徑

    print_progress?(bool,?optional,?default=False)設置為 True 以打印進度條

    (3)測試代碼

    (4)測試結果

    1)左圖的統(tǒng)計濾波參數(shù)(20, 0.5),中間為原圖,右側半徑濾波參數(shù)(20,2)

    ?2)左圖的統(tǒng)計濾波參數(shù)(20, 0.5),中間為原圖,右側半徑濾波參數(shù)(10,2)

    ?3)左圖的統(tǒng)計濾波參數(shù)(20, 0.5),中間為原圖,右側半徑濾波參數(shù)(10,5)

    總結

    以上是生活随笔為你收集整理的(2)点云库处理学习——剔除点云值的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。