Halcon三维测量(1):基于深度图的测量

    技术2022-07-10  161

    1.Halcon测量有两种方式,

    一种是对点云模型处理。对点云(x,y,z)做连通域分割,或使用数组排序处理的方式。对深度图X,Y,Z的处理。本文重点讲解将深度图拆分成X,Y,Z视差图。将图像从三维转换成二维,以二维图像的处理手段处理三维数据。

    一.拆分深度图

    从左到右依次为原深度图,X,Y,Z视差图

    二.测距

    方法1 二值化方法寻找边缘轮廓线
    选中第一部分测量区域二值化,提取边缘轮廓 选中第二部分测量区域二值化,提取边缘轮廓
    方法2:Canny算法寻找边缘轮廓线

    edges_sub_pix ( ImageReduced1,//输入图像 Edges2,//输出区域 'canny', //Canny算法 1,//高斯滤波参数 20, //低阈值 40//高阈值 )

    边缘检测之Canny算法详解

    方法3:将轮廓线拟合成直线,测距

    gen_contour_region_xld (Regions, Contours, 'border') input: 1. Regions //输入区域 2. 'border'//区域外边界 Output: 3. Contours//输出轮廓 crop_contours_xld (Contours, CroppedContours, R1[0]+2, R1[1]+2, R1[2]+2, R1[3]-2, 'false') 用矩形裁剪轮廓 Input: 4. Contours//输入的轮廓 5. R1[0]+2, R1[1]+2, R1[2]+2, R1[3]-2//裁剪轮廓的矩形对角线坐标 6. 'false' //裁剪的是闭合区域则设置为’true’,但轮廓线设置为’false’ 7. concat_obj (Contours1, Contours2, ObjectsConcat) 将两个区域,数组,轮廓线…合并到一个数组中。 input: Contours1, Contours2 output: ObjectsConcat fit_line_contour_xld (Edges2, 'tukey', -1, 0, 5, 2, RowBegin2, ColBegin2, RowEnd2, ColEnd2, Nr1, Nc1, Dist1) 用线段近似XLD轮廓 Inpute: 8. Edges2 //输入轮廓 9. 'tukey' //线拟合算法 加权“最小二乘”线拟合 10. 用于计算的最大轮廓点数(所有点为-1) 11. 拟合时忽略轮廓开始和结束点的数量。 12. 最大迭代次数 6. 13. RowBegin2 //线段的起始点的行坐标。 14. ColBegin2 //线段的起始点的列坐标。 15. RowEnd2 //线段的终止点的行坐标。 10 ColEnd2 //线段的终止点的列坐标。 16. Nr1 //线段法向量的行坐标 17. Nc1 //线段法向量的列坐标 13.Dist1 //直线参数:直线到原点的距离

    三.高度差计算

    1.视差图的概念:同一颜色的区域深度相同 2.在高度z视差图上截取两部分区域,计算区域的平均值即刻代表区域高度。

    Processed: 0.009, SQL: 9