整理孔洞目录架构

This commit is contained in:
MaJunwei 2026-04-02 09:09:54 +08:00
parent e25eb291ee
commit 609330131c

View File

@ -1,17 +0,0 @@
我需要做一个算法,用于检测一个点云数据中的圆孔,最终输出圆孔的中心点和法向量
我提供:
1. 点的结构体使用SVzNLPointXYZ头文件 D:/Develop/DetectHole/include/VZNL_Types.h
2. 算法的思想可以参考D:/Develop/algoLib/sourceCode/channelSpaceMeasure.cpp
3. 测试的点云文件的加载可以参考D:/Develop/VZNLSDK/Utils/VzKernel/Src下的VzLaserTxtFile.cpp、VzLasFile.cpp、VzPureTxtFile.cpp、VzPlyFile.cpp和VzPcdFile.cpp的实现可以支持读取pcd,txt文件
4. 点云测试文件在D:/Develop/DetectHole/test
需求:
1. 检测点云数据中的圆孔,最终输出圆孔的中心点和法向量
2. 将必要的功能都做成一个单独的函数
3. 算法使用标准C++进行开发
算法开发思路:
1. 要求输入点云必须为栅格化后的数据,输入参数为点集,行数,列数
2. 对点云进行横向和纵向两种方式进行单线遍历找到每条线的凹坑信息具体为Z值会进行异变可以使用相邻点进行连线相邻点可以为2个点也可以是多个可以作为算法参数将相邻两条线求他们的夹角如果角度大于某个参数阈值默认70°那么认为是很大跳变是凹坑信息如果小于某个参数阈值默认-70°我们认为是噪点所以正常点应该是在-70°~70°范围内记录下来横向和纵向两种方式得到的凹坑端点信息即坑上的点
3. 将记录下来的点拟合为一个椭圆。
4. 根据拟合的椭圆向外扩展具体扩展的大小为一个参数扩展后认为这是一个基本面的圈第1个圈再向外扩展一圈第2个圈找两个圈中间的点云然后使用这些点云进行x,y平面拟合
5. 根据第4步的拟合平面计算出来此平面的法向量这个法向量为最终输出的法向量
6. 根据拟合的椭圆第3步来获取其中心点的x,y值z值通过拟合平面参数进行计算。