一、平面度算法思路
通过离散点拟合平面,也就是说,要找到一个平面z=ax+by+c,使这平面到各个点的“距离”最近,根据最小二乘法,,也就是说我们要求得一组a,b,c,使得对于已有的离散点来说,S的值最小,系数矩阵的逆矩阵求得此算法参考原文:https://blog.csdn.net/qq_45427038/article/details/100139330
由此理论可得出:
1.平面拟合的平面方程、平面度。
2.接下来我们尝试带入自定义的点云数据计算:
(0.05、0.95)为点到平面度的距离排序后,去除最大百分之5与最小百分之5的数据,起滤波作用,视情况而定可以,数据无需滤波设置为1.在这里插入图片描述
运行结果:在这里插入图片描述
二、halcon3D显示+点云裁剪
1.尝试用百度的点云数据计算平面度,以此文件为例实验,26924个点云数据。在这里插入图片描述
2.使用halcon3D显示此点云:在这里插入图片描述
此时也不得不感叹halcon的强大,万计的数据也只需要不到0.5s,由于时间原因就没有去尝试更大的文件,应该上百万的点云读取显示时间也应该在10s内。在这里插入图片描述
2.点云转深度图裁剪
此裁剪方法便是使用halcon中draw_rectangle1算子划分区域,用选中的大区域减去需要删除的区域,结果如图所示:在这里插入图片描述
3.计算平面度
刚刚利用halcon得到此3D模型,便可以用此3D模型的点云直接带入刚才我们在C#中所写的平面度计算函数,与各大厂商的SDK平面度算法做对比,FlatnessNew为厂商SDK所提供的平面度算法,Flatness则为我们刚刚C#代码中带入3组Float[](分别为X、Y、Z三轴的坐标)所计算出的结果,误差均在0.1内。在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
PS:初来乍到,希望与各位大佬互相学习讨论共同进步,若有问题请指正,QQ:1607928152

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐