【Halcon】图像分割中的 regiongrowing 与dyn_threshold 动态阈值 算法详解对比

图像分割中的 regiongrowing 与动态阈值算法详解对比

在使用 HALCON 进行图像处理时,图像分割是最常见也最关键的操作之一。本文将深入讲解 regiongrowing 算子的原理与使用方法,并与另一常见方法——动态阈值 (dyn_threshold) 进行详细对比,帮助你根据不同应用场景选择合适的分割策略。


一、regiongrowing 算子详解

1. 算子功能

regiongrowing 是基于区域生长的分割方法,能将图像中灰度值相近的相邻像素块合并成一个连通区域,适用于灰度变化平缓、结构清晰的目标提取。

2. 算子格式

regiongrowing(Image : Regions : Row, Column, Tolerance, MinSize)
参数说明:
  • Image:输入的单通道图像(支持 byte, int1, int2, real 等类型)
  • Regions:输出的区域集合(Region数组)
  • Row, Column:指定栅格大小(必须为奇数),控制比较粒度,默认通常为 3
  • Tolerance:灰度值差异容差,决定是否合并相邻块
  • MinSize:过滤小区域的最小像素数阈值

3. 算法原理

  1. 将图像划分为 Row x Column 的小块;
  2. 比较相邻块的中心像素灰度值;
  3. 若差值小于等于 Tolerance,则合并区域;
  4. 最后剔除面积小于 MinSize 的区域。

4. 示例代码

read_image(Image, 'fabrik')
mean_image(Image, Mean, 5, 5)
regiongrowing(Mean, Regions, 5, 5, 6.0, 100)

二、dyn_threshold 算子简介

1. 功能概述

动态阈值通过比较当前像素与模糊背景图的灰度差异,实现前景/背景分离,适用于背景不均但结构明显的目标提取。

2. 算子格式

dyn_threshold(Image, Background, RegionDynThresh, Threshold, 'light')
  • Image:原图
  • Background:模糊图像或局部平均图像
  • RegionDynThresh:输出的前景区域
  • Threshold:差值阈值(像素 - 背景 > 阈值 即为前景)

3. 示例代码

mean_image(Image, Background, 15, 15)
dyn_threshold(Image, Background, RegionDynThresh, 10, 'light')

三、两者详细对比

特性 regiongrowing dyn_threshold
核心思想 从种子点开始区域扩展 前景/背景灰度差判断
操作单位 块级别区域合并 单像素灰度比较
是否考虑连通性
是否自动生长
是否依赖模糊图像 ❌(可选预处理) ✅(必须)
输出结果 多区域(Region数组) 二值区域(Region)

使用场景对比

场景 更适合 regiongrowing 更适合 dyn_threshold
背景复杂、目标灰度一致
背景光照不均匀
连通区域提取需求强
实时性能要求

类比通俗理解

  • regiongrowing 类似“从一点开始涂色”,相近颜色会不断扩展;
  • dyn_threshold 更像是“背景图减原图”,亮出前景。

四、总结

对比维度 regiongrowing dyn_threshold
连通区域分割
灰度不均背景
算法逻辑 局部相似性扩张 背景减法式阈值
应用举例 焊点、颗粒提取 字符、污点检测

建议:

  • 若需区域结构连通且灰度一致,可选 regiongrowing
  • 若背景不均,目标明显,可用 dyn_threshold

你可能感兴趣的:(halcon聚沙成塔,算法,计算机视觉,人工智能)