1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > Halcon三维测量(4):点云图转深度图+点云滤波(补洞)+断线拟合

Halcon三维测量(4):点云图转深度图+点云滤波(补洞)+断线拟合

时间:2023-10-28 09:02:02

相关推荐

Halcon三维测量(4):点云图转深度图+点云滤波(补洞)+断线拟合

对于三维测量的套路,都是将图像转成二维进行测量和处理

我仍然以这个开关检测项目为例,开关点云有x,y,z,三个空间坐标如果对这个三维点云直接处理,有一个思路我提供给大家,将点云模型完全调平,然后针对x,y,z其中一个坐标进行测量,其实这种思路也是将三维图转为平面。

一.点云图转深度图+点云滤波

本篇着重讲解如何将点云模型转为深度图的思路。

1.将点云模型拆分成x,y,z三个数组,这里的数据可以自动清空,具体请补充一下数据存储,堆和栈的内容。

2.这里提出一个手法,将点云数据拆分成三个数组之后,有很多点事有小数位的,这里为了提高精度,会把数组中的坐标乘以10或100,视情况而定,如此图像的细节会更加清晰,可以理解为拉伸图像。

x:=point_coord_x1*10y:=point_coord_y1*10

3.之后观察调平的点云,以x,y为Row和Column,z为灰度值,建立深度图。此时可以将图像当成二维图像处理。

4.细心地朋友可能会发现,这个生成的深度图是有孔洞的。这与物料的反光或者遮挡有关,如下是缺失点云数据的点云模型。

如下是缺失点的深度图

5.刚说到,可以对深度图运用二维的处理,这里分别运用中值滤波,高斯滤波,均值滤波对图像进行处理,填充孔洞。

二.断线拟合

这里讲的是二维的处理手法

有时候直接调用提取边缘的算子呢,提取出的边缘线存在断线,或交叉线,对于边缘拟合造成了很大的麻烦,这里点出断线拟合的思路。

1.将线段打散成点

2.对点基于行或列排序

注意这里排序很重要,不排序拟合直线时会出现交叉点

排序后效果图

3.拟合线

edges_sub_pix (ImageReduced1, Edges1, 'canny', 1,5, 25)count_obj (Edges1, Number1)for Idle:=1 to Number1 by 1select_obj (Edges1, EdgeContour, Idle)*把线变为点get_contour_xld(EdgeContour, RowS,ColumnS)Row1:=[Row1,RowS]Column1:=[Column1,ColumnS]endfortuple_sort_index (Row1, Indices)tuple_length(Row1,Length)NewRow:=[]NewColumn:=[]if(Length>=1)*方法1NewRow:=subset(Row1,Indices)NewColumn:=subset(Column1,Indices)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。