中国工程建设焊接协会网站,中国建设银行网站进不去,中国室内设计师,awds网站开发留学一、图像测量概述图像测量是通过机器视觉技术对图像中的目标尺寸#xff08;长度、角度、面积、距离等#xff09;进行非接触式量化分析的技术#xff0c;广泛应用于工业检测#xff08;零件尺寸公差、装配间隙#xff09;、医疗影像#xff08;器官大小#xff09;、精…一、图像测量概述图像测量是通过机器视觉技术对图像中的目标尺寸长度、角度、面积、距离等进行非接触式量化分析的技术广泛应用于工业检测零件尺寸公差、装配间隙、医疗影像器官大小、精密制造等领域。其核心优势是高精度、非接触、高效率可替代传统卡尺、千分尺等接触式测量工具适应自动化生产线需求。图像测量的一般流程图像采集工业相机 镜头需校准消除畸变预处理去噪、增强、边缘提取特征提取目标边缘、轮廓、关键点几何参数计算长度、角度、面积等结果输出与分析与标准值对比判断合格性。二、图像测量的关键参数与方法1. 长度测量直线长度两点间距离如零件边缘的直线段长度。曲线长度轮廓线的总长度如管道的弯曲部分。2. 角度测量两直线或边缘的夹角如零件的倒角角度、多边形内角。3. 面积测量区域的像素数量转换为实际面积如薄膜的孔洞面积。4. 距离测量两平行直线的间距如板材厚度、两平行线间隙。点到直线的距离如圆心到边缘的距离。5. 圆 / 椭圆参数测量直径、半径、圆心坐标如轴承内圈直径。三、Halcon 测量核心算子测量类型关键算子功能描述边缘提取edges_sub_pix提取亚像素级边缘高精度测量基础直线拟合fit_line_contour_xld从边缘轮廓拟合直线获取直线参数圆 / 椭圆拟合fit_circle_contour_xld、fit_ellipse_contour_xld从轮廓拟合圆 / 椭圆获取直径、圆心等距离计算distance_pp、distance_pl两点距离、点到直线距离角度计算angle_ll两直线夹角长度计算length_xld轮廓线长度面积计算area_center区域面积与中心坐标相机校准calibrate_cameras消除镜头畸变建立像素与实际尺寸的映射四、Halcon 测量实例实例 1零件直线边缘长度测量亚像素级场景测量金属零件某条直线边缘的实际长度需先完成相机校准获取像素 - 毫米转换系数。dev_update_off () * 1. 读取图像并预处理 read_image (PartImage, metal_part.png) dev_close_window () get_image_size (PartImage, Width, Height) dev_open_window (0, 0, Width, Height, black, WindowHandle) dev_display (PartImage) disp_continue_message (WindowHandle, black, true) stop () * 2. 提取亚像素边缘高精度测量核心 edges_sub_pix (PartImage, Edges, canny, 1, 20, 40) // Canny算法提取边缘 * 3. 筛选目标边缘假设为水平边缘通过方向筛选 select_contours_xld (Edges, SelectedEdges, direction, -0.1, 0.1, 0, 0) // 保留接近水平的边缘 * 4. 拟合直线获取直线端点 fit_line_contour_xld (SelectedEdges, tukey, -1, 0, 5, 2, RowBegin, ColBegin, RowEnd, ColEnd, Nr, Nc, Dist) * 5. 计算长度像素单位 distance_pp (RowBegin, ColBegin, RowEnd, ColEnd, LengthPix) // 两点距离像素 * 6. 转换为实际长度假设校准后1像素0.01毫米 PixelToMM : 0.01 LengthMM : LengthPix * PixelToMM * 7. 显示结果 dev_display (PartImage) dev_set_color (red) gen_contour_polygon_xld (Contour, [RowBegin, RowEnd], [ColBegin, ColEnd]) dev_display (Contour) disp_message (WindowHandle, 长度: LengthMM$6.3f mm, window, 10, 10, red, true) stop ()实例 2圆孔直径测量圆拟合场景测量机械零件上圆孔的直径通过拟合圆轮廓计算直径。dev_update_off () * 1. 读取图像并提取圆孔区域 read_image (HoleImage, part_with_hole.png) dev_close_window () get_image_size (HoleImage, Width, Height) dev_open_window (0, 0, Width, Height, black, WindowHandle) * 2. 预处理二值化形态学去噪 threshold (HoleImage, Region, 50, 200) // 分割圆孔区域假设孔为暗区域 opening_circle (Region, HoleRegion, 5) // 去除噪声 connection (HoleRegion, SingleHole) // 提取单个圆孔 * 3. 提取圆孔边缘亚像素级 gen_contour_region_xld (SingleHole, HoleContour, border) // 生成区域轮廓 edges_sub_pix (HoleImage, EdgeContour, canny, 1, 30, 60) // 提取边缘 reduce_domain (EdgeContour, SingleHole, HoleEdge) // 筛选圆孔内的边缘 * 4. 拟合圆获取圆心和半径 fit_circle_contour_xld (HoleEdge, algebraic, -1, 0, 0, 3, 2, Row, Column, Radius, StartPhi, EndPhi, PointOrder) * 5. 计算直径转换为实际单位 PixelToMM : 0.02 // 校准后1像素0.02毫米 DiameterMM : 2 * Radius * PixelToMM * 6. 显示结果 dev_display (HoleImage) dev_set_color (green) dev_display (HoleContour) gen_circle_contour_xld (CircleContour, Row, Column, Radius, 0, 6.28318, positive, 1) dev_set_color (red) dev_display (CircleContour) disp_message (WindowHandle, 直径: DiameterMM$6.3f mm, window, 10, 10, red, true) stop ()实例 3两平行线间距测量厚度测量场景测量薄片材料的厚度两平行边缘的距离。dev_update_off () * 1. 读取图像并提取上下边缘 read_image (SheetImage, thin_sheet.png) dev_close_window () get_image_size (SheetImage, Width, Height) dev_open_window (0, 0, Width, Height, black, WindowHandle) * 2. 提取亚像素边缘 edges_sub_pix (SheetImage, Edges, sobel, vertical, 3, 20, 40) // 提取垂直边缘薄片边缘为垂直方向 * 3. 分割上下两条边缘 split_contours_xld (Edges, SplitEdges, 10, 1) // 分割长轮廓为短段 select_contours_xld (SplitEdges, TopEdge, position, row, 0, Height/2, 0, 0) // 上边缘行坐标较小 select_contours_xld (SplitEdges, BottomEdge, position, row, Height/2, Height, 0, 0) // 下边缘行坐标较大 * 4. 拟合两条平行线 fit_line_contour_xld (TopEdge, orthogonal, -1, 0, 5, 2, RowT1, ColT1, RowT2, ColT2, NrT, NcT, DistT) fit_line_contour_xld (BottomEdge, orthogonal, -1, 0, 5, 2, RowB1, ColB1, RowB2, ColB2, NrB, NcB, DistB) * 5. 计算两平行线间距厚度 distance_lr (RowT1, ColT1, RowT2, ColT2, RowB1, ColB1, RowB2, ColB2, DistancePix) // 线到线距离像素 PixelToMM : 0.015 ThicknessMM : DistancePix * PixelToMM * 6. 显示结果 dev_display (SheetImage) dev_set_color (blue) gen_contour_polygon_xld (TopLine, [RowT1, RowT2], [ColT1, ColT2]) gen_contour_polygon_xld (BottomLine, [RowB1, RowB2], [ColB1, ColB2]) dev_display (TopLine) dev_display (BottomLine) disp_message (WindowHandle, 厚度: ThicknessMM$6.3f mm, window, 10, 10, blue, true) stop ()实例 4角度测量两直线夹角场景测量机械零件倒角的角度。dev_update_off () * 1. 读取图像并提取倒角边缘 read_image (ChamferImage, part_chamfer.png) dev_close_window () get_image_size (ChamferImage, Width, Height) dev_open_window (0, 0, Width, Height, black, WindowHandle) * 2. 提取亚像素边缘 edges_sub_pix (ChamferImage, Edges, canny, 1, 20, 50) * 3. 筛选倒角的两条边缘 select_contours_xld (Edges, ChamferEdges, length, 50, 1000, 0, 0) // 筛选长边缘 split_contours_xld (ChamferEdges, TwoEdges, 1, 1) // 分割为两条边缘 * 4. 拟合两条直线 fit_line_contour_xld (TwoEdges[0], tukey, -1, 0, 5, 2, Row1_1, Col1_1, Row1_2, Col1_2, Nr1, Nc1, Dist1) fit_line_contour_xld (TwoEdges[1], tukey, -1, 0, 5, 2, Row2_1, Col2_1, Row2_2, Col2_2, Nr2, Nc2, Dist2) * 5. 计算夹角弧度转角度 angle_ll (Row1_1, Col1_1, Row1_2, Col1_2, Row2_1, Col2_1, Row2_2, Col2_2, AngleRad) AngleDeg : rad(AngleRad) // 转换为角度 * 6. 显示结果 dev_display (ChamferImage) dev_set_color (red) gen_contour_polygon_xld (Line1, [Row1_1, Row1_2], [Col1_1, Col1_2]) gen_contour_polygon_xld (Line2, [Row2_1, Row2_2], [Col2_1, Col2_2]) dev_display (Line1) dev_display (Line2) disp_message (WindowHandle, 夹角: AngleDeg$6.1f °, window, 10, 10, red, true) stop ()五、图像测量的精度优化技巧相机校准必须进行相机内参校准calibrate_cameras和畸变矫正gen_image_mapmap_image消除镜头畸变对测量的影响亚像素边缘提取使用edges_sub_pix替代像素级边缘将测量精度提升至 0.1 像素级别光照控制确保光照均匀避免反光或阴影导致边缘模糊可使用同轴光源、环形光源拟合算法选择直线拟合优先用tukey抗离群点圆拟合优先用geometric几何误差最小多次测量取平均对同一目标进行多次测量不同位置或角度减少随机误差ROI 限制通过reduce_domain限制测量区域排除无关背景干扰。六、总结图像测量的核心是从图像中提取高精度几何特征并通过相机校准将像素单位转换为实际物理单位。Halcon 提供了从边缘提取到参数计算的完整算子链结合亚像素技术和抗干扰拟合算法可实现微米级测量精度。实际应用中需重点关注光照、校准和边缘质量以确保测量结果的可靠性。