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, Contours2output: ObjectsConcatfit_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视差图上截取两部分区域,计算区域的平均值即刻代表区域高度。