欢迎光临
我们一直在努力

【Halcon】halcon中的常用算子的中文说明加解析

一、算子分类与核心解析

1. 图像基础运算算子

这类算子主要用于图像像素级的加减乘除、格式转换、裁剪等基础操作。

表格

算子核心功能关键参数说明典型使用场景
sub_image 图像灰度相减 (Img1 – Img2) Mult=1, Add=0 表示直接相减(无缩放 / 偏移) 背景差分、缺陷检测(减去基准图找差异)
mult_image 图像灰度相乘(你备注的 “相加” 是笔误) Mult=0.015, Add=0 表示 Img1×Img2×0.015 图像增强、掩膜加权运算
convert_image_type 转换图像数据类型 'int2' 表示 16 位有符号整型 避免运算溢出(如相减可能出现负数)
crop_part 裁剪图像区域 Row=0, Column=0, Width, Height 提取感兴趣区域 (ROI)
scale_image_max 图像对比度最大化 增强图像视觉辨识度
rotate_image 图像旋转 Angle=90, 'constant' 表示旋转后填充常数 校正倾斜图像(如文字、条码)
tile_images 拼接多幅图像 2, 'horizontal' 表示 2 幅水平拼接 可视化多步处理结果
compose3/decompose3 RGB 图像合成 / 拆分 彩色图像通道处理
invert_image 图像反相(255 – 灰度值) 暗背景转亮背景,突出目标
fill_interlace 修复隔行扫描图像 'odd' 修复奇数行 解决工业相机采集的图像拼接问题
polar_trans_image 笛卡尔坐标↔极坐标转换 圆心 (Row,Column)、半径范围 处理环形 / 圆形区域(如表盘、瓶盖)

2. 图像滤波与增强算子

这类算子用于降噪、平滑、边缘增强等预处理。

表格

算子核心功能关键参数场景
median_rect 矩形中值滤波 41,41 滤波核大小 去除椒盐噪声(如工业图像中的斑点)
smooth_image 图像平滑 'deriche2', 0.2 平滑算法 / 系数 降噪,保留边缘
gray_erosion_rect 灰度腐蚀 矩形核大小 弱化亮区域,突出暗细节
gray_closing/gray_opening 灰度闭 / 开运算 结构元素 填充小暗孔 / 去除小亮噪点
hysteresis_threshold 滞后阈值分割 10,20 高低阈值 边缘检测(如 Canny 算法的阈值环节)

3. 区域分割与提取算子

这类算子是视觉处理的核心,用于从图像中分割出目标区域。

表格

算子核心功能关键参数场景
auto_threshold 自动多阈值分割 10 直方图波谷最小距离 多灰度目标分割(如多色零件)
bin_threshold 单阈值分割 简单黑白图像分割
char_threshold 字符专用阈值分割 6,95 直方图波峰参数 字符识别 (OCR) 的阈值提取
dyn_threshold 动态阈值分割 3, 'light' 偏差 / 亮目标 不均匀光照下的分割(如曲面物体)
regiongrowing 区域生长 邻域大小、灰度差、最小面积 相似灰度区域合并(如纹理分割)
fast_threshold 快速阈值分割 灰度范围 + 最小面积 实时性要求高的场景
check_difference 图像差异分割 'diff_outside', -255,15 缺陷检测(对比基准图找差异)
select_shape_std 选指定特征区域 'max_area',70 选最大面积 提取主要目标(如最大的零件)

4. 区域形态学与操作算子

对分割后的区域进行形态学处理、合并、筛选等。

表格

算子核心功能关键参数场景
closing/fill_up_shape 区域闭运算 / 填充 'area',1,40 填充小面积孔洞 修复区域孔洞(如字符断笔)
intersection/difference 区域交 / 差运算 提取重叠 / 非重叠区域
complement 区域补集 提取背景区域
union2/concat_obj 区域合并 合并分散的目标区域
select_region_point 选择包含指定点的区域 点坐标 (Row,Column) 定位点击位置的目标
partition_dynamic 区域动态分割 特征阈值 按区域特征(如灰度)拆分

5. 轮廓 (XLD) 处理算子

Halcon 中最核心的轮廓操作,用于提取、筛选、拟合、变换轮廓。

表格

算子核心功能关键参数场景
lines_gauss/lines_color 提取灰度 / 彩色线条 高斯核、宽度阈值 提取边缘、标线、轮廓
select_contours_xld 筛选轮廓 'closed'/'curvature' 选封闭轮廓 / 曲率符合要求的轮廓
select_shape_xld 按形态筛选轮廓 'contlength',15,500 长度范围 过滤过短 / 过长的轮廓
fit_circle_contour_xld 轮廓拟合成圆 拟合算法、精度 检测圆形目标(如焊点、圆孔)
gen_contour_region_xld 从区域生成轮廓 'border_holes' 包含孔洞边界 提取区域的边缘轮廓
union_collinear_contours_xld 连接共线轮廓 最大间距、角度差 修复断裂的直线(如道路标线)
gen_parallels_xld 生成平行轮廓 距离、角度 提取平行线(如轨道、边框)
test_xld_point 测试点是否在轮廓内 点坐标 判断目标是否在指定区域内
split_contours_xld 拆分轮廓 'polygon',1,5 把复杂轮廓拆分成简单段

6. 矩阵与坐标变换算子

用于 2D/3D 坐标转换、位姿计算,是视觉引导、机械手定位的核心。

表格

算子核心功能关键参数场景
hom_mat2d_identity/hom_mat3d_identity 生成单位矩阵 变换的初始矩阵
hom_mat2d_translate/scale/rotate 2D 平移 / 缩放 / 旋转 平移量、缩放因子、角度 2D 图像配准、校正
hom_mat3d_rotate/translate/compose 3D 旋转 / 平移 / 矩阵相乘 旋转轴、角度、平移量 3D 位姿计算(机械手抓取)
pose_to_hom_mat3d/hom_mat3d_to_pose 位姿↔矩阵转换 视觉与机器人坐标系转换
vector_to_proj_hom_mat2d 透视变换矩阵计算 4 对对应点坐标 图像矫正(如透视畸变校正)
affine_trans_contour_xld 轮廓仿射变换 变换矩阵 轮廓的平移 / 旋转 / 缩放

7. 特征提取算子

提取图像 / 区域 / 轮廓的关键特征(坐标、角度、灰度等)。

表格

算子核心功能关键参数场景
local_max/local_min 提取灰度极值点 检测亮点 / 暗点(如焊点、缺陷)
critical_points_sub_pix 亚像素级关键点提取 'facet' 提取算法 高精度特征点定位
orientation_region/orientation_points_xld 提取区域 / 轮廓方向 目标角度校正(如文字倾斜)
min_max_gray 提取区域灰度极值 目标灰度特征分析
area_center_xld 计算轮廓中心坐标 目标定位(如零件中心)
gray_histo 计算灰度直方图 阈值选择的依据

8. 可视化与交互算子

用于图像显示、交互操作(如鼠标取点)。

表格

算子核心功能关键参数场景
dev_set_color/dev_set_draw/dev_set_shape 设置显示颜色 / 填充方式 / 形状 'cyan'/'margin'/'ellipse' 可视化区分不同目标
dev_set_part 设置显示区域 行 / 列范围 聚焦显示感兴趣区域
get_mposition 获取鼠标坐标 窗口句柄 交互选择 ROI
paint_xld/paint_gray 绘制轮廓 / 灰度图像 颜色 / 灰度值 可视化处理结果

二、关键使用示例

示例 1:图像相减找差异(缺陷检测)

hdevelop

* 读取基准图和检测图
read_image(Image1, 'reference.png')
read_image(Image2, 'test.png')
* 转换为整型(避免相减溢出)
convert_image_type(Image1, ImageConverted1, 'int2')
convert_image_type(Image2, ImageConverted2, 'int2')
* 图像相减(Image1 – Image2)
sub_image(ImageConverted1, ImageConverted2, ImageSub, 1, 0)
* 转换回8位灰度图,便于后续处理
convert_image_type(ImageSub, ImageSub8, 'byte')
* 阈值分割提取差异区域
bin_threshold(ImageSub8, Regions)
* 筛选有效缺陷区域(面积过滤)
select_shape_std(Regions, DefectRegions, 'max_area', 70)

示例 2:提取圆形轮廓并拟合

hdevelop

* 读取图像并预处理
read_image(Image, 'circle.png')
median_rect(Image, ImageMedian, 5, 5) * 降噪
* 提取边缘
lines_gauss(ImageMedian, Lines, 1.5, 1, 8, 'light', 'true', 'true', 'true')
* 筛选圆形相关轮廓
select_contours_xld(Lines, SelectedContours, 'closed', 0, 20, 0, 0)
* 拟合成圆,获取圆心和半径
fit_circle_contour_xld(SelectedContours, 'ahuber', -1, 2, 0, 3, 2, Row, Column, Radius, StartPhi, EndPhi, PointOrder)
* 可视化结果
dev_set_color('red')
gen_circle_contour_xld(ContCircle, Row, Column, Radius, 0, rad(360), 'positive', 1.0)
dev_display(ContCircle)

示例 3:3D 位姿转换(机械手抓取)

hdevelop

* 生成3D单位矩阵
hom_mat3d_identity(HomMat3DIdentity)
* 绕Z轴旋转(抓取角度)
hom_mat3d_rotate(HomMat3DIdentity, rad(90), 'z', 0, 0, 0, HomMat3D_RZ)
* 平移到目标位置
hom_mat3d_translate(HomMat3D_RZ, 100, 200, 50, HomMat3D_Trans)
* 转换为机器人位姿
hom_mat3d_to_pose(HomMat3D_Trans, PoseGrasp)


总结

  • 核心分类:这些算子可分为图像运算、滤波增强、区域分割、轮廓处理、矩阵变换、特征提取、可视化 7 大类,覆盖视觉处理全流程;
  • 关键技巧:
    • 图像运算前需用convert_image_type转换数据类型,避免溢出;
    • 分割前优先滤波降噪(如median_rect),提升分割准确性;
    • 轮廓处理后需筛选(select_contours_xld),过滤无效轮廓;
  • 典型场景:图像相减用于缺陷检测、轮廓拟合用于尺寸测量、矩阵变换用于视觉引导,是工业视觉最常用的三类场景。
  • 赞(0)
    未经允许不得转载:171主机测评 » 【Halcon】halcon中的常用算子的中文说明加解析
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址