整理孔洞目录架构
This commit is contained in:
parent
e25eb291ee
commit
609330131c
@ -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值通过拟合平面参数进行计算。
|
||||
Loading…
x
Reference in New Issue
Block a user