博客專欄

        EEPW首頁 > 博客 > 大盤點!三維點云去噪算法,涉及深度學習等(1)

        大盤點!三維點云去噪算法,涉及深度學習等(1)

        發布人:計算機視覺工坊 時間:2023-07-11 來源:工程師 發布文章
        1 什么是去噪1.1 噪聲

        噪聲:也稱為孤立點/離群點/異常點,是指點云數據中的不相關或不希望存在的干擾信號或誤差。噪聲來源:環境光線的明亮程度、測量設備精度及系統誤差、物體材料及表面的紋理和人為抖動等因素影響。

        1.2 噪聲來源

        環境光線的明亮程度、測量設備精度及系統誤差、物體材料及表面的紋理和人為抖動等因素。

        1.3 點云去噪

        在點云數據中,通過適當的濾波和處理方法,去除無用或噪聲點,以提高數據質量和準確性的過程。

        2 常見的去噪算法2.1 統計濾波

        1 原理

        去除明顯分布稀疏的離群點。根據給定均值與方差,可剔除方差之外的點,即方差之外的點是正確點。

        2 舉例

        一點云中有50個點,每個點的鄰近點個數設置為8,則50個點(8領域)的平均值計算如下:圖片則算出50個點的平均值,設置距離閾值σ,若平均值在閾值之外的視為離群點,在點云數據中去除。

        3 核心代碼

        —--統計濾波
        //創建濾波器。對每個點分析的臨近點的個數設置為50,并將標準差的倍數設置為1,這意味著如果一個點的距
        離超出了平均距離一個標準差以上,則該點被標記為離群點,并將它移除,存儲起來
        pcl::Statistical0utlierRemowal<pcl : : PointIYZ>Sor;
        sor. setInputCloud (cloud);//設置待波波的點云
        sor.setMeamK (50);         //設置在進行統計時考慮查詢點鄰近點數
        Sor. setStddevMu1Thresh(1); //設置判斷是否為高群點的閾值,里邊的數字表示標準差的倍數,1個標準差以上就是離群點。
        //即。當判斷點的k近鄰平均距高(mean distance)大于全局的1倍標準差+平均距離(global distances meanm and standard),則為離群點。

        2.2 直通濾波

        1 原理

        根據點云的屬性(屬性比如x,y,z,顏色值等),在點的屬性上設置范圍,對點進行濾波,保留范圍內的或保留范圍外的,則去除離群點。

        2 舉例

        在一個點云數據中,取z軸0~1范圍內的點云進行保存。

        3 核心代碼

        //創建濾波器對象
        pcl::PassThrough<pcl::PointXYZ> pass;
        pass.setInputCloud (c1oud);
        pass.setFi1terFie1dName ("z");//濾波字段名被設置為z軸方向
        pass.setFi1terLimits (0.0,1.0);//設置在過濾方向上的過濾范圍
        // pass.setKeepOrganized(true);//保持有序點云結構,該功能用于有序點云才有意義。
        pass.setNegative (true);//設置保留范圍內的點還是過濾掉范圍內的點,標志為false時保留范圍內的點
        2.3 半徑濾波

        1 原理

        設定濾波半徑,計算每個點在其半徑范圍內的其他點的個數。半徑范圍內其他點個數少于某一設定的閾值的點將被濾除。

        2 舉例設置半徑為d,分別考察黃藍綠三點,若點個數的閾值為1,則黃色點將被濾除;若閾值為2,則黃色點和綠色點都將被濾除。圖片3 核心代碼

        ror.setInputC1oud(c1oud_in);     //輸入點云
        ror.setRadiusSearch(0.1);        //設置半徑為0.1m范圍內找臨近點
        ror.setMinNeighborsInRadius(10); // 設置查詢點的鄰域點集數小于10刪除
        ror.fi1ter(*cloud_radius);       //執行濾波
        2.4 條件濾波

        1 原理

        根據點云數據的某些屬性或特征進行篩選,可以一次刪除滿足對輸入的點云設定的一個或多個條件指標的所有的數據點,如點的法線方向、點的強度值、點的顏色等屬性來篩選點云數據。

        條件濾波和直通濾波的區別:

        條件濾波基于點的任何屬性或特征進行篩選,而直通濾波只能基于軸向范圍進行篩選。

        2.5 中值濾波

        1 原理

        是常用的非線性濾波方法,用于去除圖像或信號中的噪聲。它通過將像素值替換為其鄰域窗口內的中值來實現去噪的效果。

        2 步驟

        • 定義一個固定大小的鄰域窗口,通常是一個正方形或矩形窗口。
        • 將窗口內的像素值按照從小到大的順序進行排序。
        • 取排序后的像素值的中間值作為中心像素的新值,用于替換原始像素值。
        • 對圖像中的每個像素都應用上述步驟,以完成中值濾波。
        • 如下圖3×3的內核(也可看做窗口,或者模版):

        圖片image.png

        2.6 均值濾波

        1 原理

        是一種常用的線性濾波方法,通過計算鄰域窗口內像素值的平均值來實現去噪的效果。但會破壞圖像細節,使圖像變得模糊。

        2 舉例

        3×3的內核(也可看做窗口,或者模版)中,包含了9個點及對應像素值。在對該區域進行濾波過程為:對P1~P9九個像素的灰度值求平均,代替中間P5的灰度值。圖片中值濾波和均值濾波的區別

        • 中值濾波能夠更好地處理脈沖噪聲或孤立的離群點,因為它選擇中值作為替代值,而不受異常值的影響。
        • 中值濾波去除脈沖噪聲或孤立的離群點,均值濾波能夠平滑信號或圖像。
        • 相比之下中值濾波運行速度更快


        *博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。



        關鍵詞: AI

        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 唐山市| 恩平市| 陇川县| 惠安县| 罗江县| 托里县| 莒南县| 慈溪市| 家居| 高平市| 梁山县| 安仁县| 衡东县| 连南| 维西| 华坪县| 自治县| 安宁市| 重庆市| 衡阳县| 陆丰市| 启东市| 班玛县| 蕉岭县| 南汇区| 台江县| 南康市| 铜陵市| 关岭| 汨罗市| 崇文区| 郑州市| 山丹县| 巴彦淖尔市| 榆林市| 阜城县| 翁牛特旗| 黑水县| 曲水县| 喜德县| 华坪县|