大盤(pán)點(diǎn)!三維點(diǎn)云去噪算法,涉及深度學(xué)習等(1)
噪聲:也稱(chēng)為孤立點(diǎn)/離群點(diǎn)/異常點(diǎn),是指點(diǎn)云數據中的不相關(guān)或不希望存在的干擾信號或誤差。噪聲來(lái)源:環(huán)境光線(xiàn)的明亮程度、測量設備精度及系統誤差、物體材料及表面的紋理和人為抖動(dòng)等因素影響。
1.2 噪聲來(lái)源環(huán)境光線(xiàn)的明亮程度、測量設備精度及系統誤差、物體材料及表面的紋理和人為抖動(dòng)等因素。
1.3 點(diǎn)云去噪在點(diǎn)云數據中,通過(guò)適當的濾波和處理方法,去除無(wú)用或噪聲點(diǎn),以提高數據質(zhì)量和準確性的過(guò)程。
2 常見(jiàn)的去噪算法2.1 統計濾波1 原理
去除明顯分布稀疏的離群點(diǎn)。根據給定均值與方差,可剔除方差之外的點(diǎn),即方差之外的點(diǎn)是正確點(diǎn)。
2 舉例
一點(diǎn)云中有50個(gè)點(diǎn),每個(gè)點(diǎn)的鄰近點(diǎn)個(gè)數設置為8,則50個(gè)點(diǎn)(8領(lǐng)域)的平均值計算如下:則算出50個(gè)點(diǎn)的平均值,設置距離閾值σ,若平均值在閾值之外的視為離群點(diǎn),在點(diǎn)云數據中去除。
3 核心代碼
—--統計濾波2.2 直通濾波
//創(chuàng )建濾波器。對每個(gè)點(diǎn)分析的臨近點(diǎn)的個(gè)數設置為50,并將標準差的倍數設置為1,這意味著(zhù)如果一個(gè)點(diǎn)的距
離超出了平均距離一個(gè)標準差以上,則該點(diǎn)被標記為離群點(diǎn),并將它移除,存儲起來(lái)
pcl::Statistical0utlierRemowal<pcl : : PointIYZ>Sor;
sor. setInputCloud (cloud);//設置待波波的點(diǎn)云
sor.setMeamK (50); //設置在進(jìn)行統計時(shí)考慮查詢(xún)點(diǎn)鄰近點(diǎn)數
Sor. setStddevMu1Thresh(1); //設置判斷是否為高群點(diǎn)的閾值,里邊的數字表示標準差的倍數,1個(gè)標準差以上就是離群點(diǎn)。
//即。當判斷點(diǎn)的k近鄰平均距高(mean distance)大于全局的1倍標準差+平均距離(global distances meanm and standard),則為離群點(diǎn)。
1 原理
根據點(diǎn)云的屬性(屬性比如x,y,z,顏色值等),在點(diǎn)的屬性上設置范圍,對點(diǎn)進(jìn)行濾波,保留范圍內的或保留范圍外的,則去除離群點(diǎn)。
2 舉例
在一個(gè)點(diǎn)云數據中,取z軸0~1范圍內的點(diǎn)云進(jìn)行保存。
3 核心代碼
//創(chuàng )建濾波器對象2.3 半徑濾波
pcl::PassThrough<pcl::PointXYZ> pass;
pass.setInputCloud (c1oud);
pass.setFi1terFie1dName ("z");//濾波字段名被設置為z軸方向
pass.setFi1terLimits (0.0,1.0);//設置在過(guò)濾方向上的過(guò)濾范圍
// pass.setKeepOrganized(true);//保持有序點(diǎn)云結構,該功能用于有序點(diǎn)云才有意義。
pass.setNegative (true);//設置保留范圍內的點(diǎn)還是過(guò)濾掉范圍內的點(diǎn),標志為false時(shí)保留范圍內的點(diǎn)
1 原理
設定濾波半徑,計算每個(gè)點(diǎn)在其半徑范圍內的其他點(diǎn)的個(gè)數。半徑范圍內其他點(diǎn)個(gè)數少于某一設定的閾值的點(diǎn)將被濾除。
2 舉例設置半徑為d,分別考察黃藍綠三點(diǎn),若點(diǎn)個(gè)數的閾值為1,則黃色點(diǎn)將被濾除;若閾值為2,則黃色點(diǎn)和綠色點(diǎn)都將被濾除。3 核心代碼
ror.setInputC1oud(c1oud_in); //輸入點(diǎn)云2.4 條件濾波
ror.setRadiusSearch(0.1); //設置半徑為0.1m范圍內找臨近點(diǎn)
ror.setMinNeighborsInRadius(10); // 設置查詢(xún)點(diǎn)的鄰域點(diǎn)集數小于10刪除
ror.fi1ter(*cloud_radius); //執行濾波
1 原理
根據點(diǎn)云數據的某些屬性或特征進(jìn)行篩選,可以一次刪除滿(mǎn)足對輸入的點(diǎn)云設定的一個(gè)或多個(gè)條件指標的所有的數據點(diǎn),如點(diǎn)的法線(xiàn)方向、點(diǎn)的強度值、點(diǎn)的顏色等屬性來(lái)篩選點(diǎn)云數據。
條件濾波和直通濾波的區別:
條件濾波基于點(diǎn)的任何屬性或特征進(jìn)行篩選,而直通濾波只能基于軸向范圍進(jìn)行篩選。
2.5 中值濾波1 原理
是常用的非線(xiàn)性濾波方法,用于去除圖像或信號中的噪聲。它通過(guò)將像素值替換為其鄰域窗口內的中值來(lái)實(shí)現去噪的效果。
2 步驟
- 定義一個(gè)固定大小的鄰域窗口,通常是一個(gè)正方形或矩形窗口。
- 將窗口內的像素值按照從小到大的順序進(jìn)行排序。
- 取排序后的像素值的中間值作為中心像素的新值,用于替換原始像素值。
- 對圖像中的每個(gè)像素都應用上述步驟,以完成中值濾波。
- 如下圖3×3的內核(也可看做窗口,或者模版):
image.png
1 原理
是一種常用的線(xiàn)性濾波方法,通過(guò)計算鄰域窗口內像素值的平均值來(lái)實(shí)現去噪的效果。但會(huì )破壞圖像細節,使圖像變得模糊。
2 舉例
3×3的內核(也可看做窗口,或者模版)中,包含了9個(gè)點(diǎn)及對應像素值。在對該區域進(jìn)行濾波過(guò)程為:對P1~P9九個(gè)像素的灰度值求平均,代替中間P5的灰度值。中值濾波和均值濾波的區別
- 中值濾波能夠更好地處理脈沖噪聲或孤立的離群點(diǎn),因為它選擇中值作為替代值,而不受異常值的影響。
- 中值濾波去除脈沖噪聲或孤立的離群點(diǎn),均值濾波能夠平滑信號或圖像。
- 相比之下中值濾波運行速度更快
*博客內容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀(guān)點(diǎn),如有侵權請聯(lián)系工作人員刪除。