該算法在RANSAC和空間檢索樹的基礎上實現的。
算法思路:
1、點雲抽希、法線估計
2、出局點索引存儲聲明
3、平面檢測
for (size_t i = 0; i < cloudTemp->points.size(); i++)
{
判斷為出局點;
if (檢索一定量的臨近點)
{
判斷搜索點集是否符合要求;
存儲搜索的點集 ;
}
RANSAC平面擬合(ransac計算平面模型參數);
判斷平面擬合的正確性;
/*
* 利用擬合平面 計算點雲到該面距離, 設置容差 判斷點雲是否在平面內
*/
for (size_t j = 0; j < tr_cloud->points.size(); j++)
{
判斷出局點;
判斷 平面法向與點法向的一致性 (求解兩個空間向量的夾角);
存儲平面內的點集;
更新出局點;
}
//平面的噪點 離群點剔除
//...
存儲平面數據;
}
效果如下: