【HALCON系列----阈值分割】



本章主要记录常用的阈值分割算子

1、 全局阈值分割

threshold(Image : Region : MinGray, MaxGray : )

  • 全局阈值分割适用于环境稳定,目标与背景存在明显的灰度差的场合,一般其直方图会会存在两个波峰:目标和背景,阈值就是物体与背景之间的最小值。
  • 输入图像的灰度值满足以下条件的所有像素点作为一个区域返回: M i n G r a y ≤ g ≤ M a x G r a y MinGray \le g \le MaxGray MinGraygMaxGray.
  • 对于矢量场图像,阈值不应用于灰度值,而是应用于矢量的长度。

2、二进制阈值分割

binary_threshold(Image : Region : Method, LightDark : UsedThreshold)

  • 使用自动确定的全局阈值分割单个通道图像,并在region中返回分割的区域。
  • Method 代表分割方法,主要有两种,都只能用于双峰直方图的图像:
    • 最大可分离(max_separability) :调用根据Otsu基于灰度直方图的自动阈值处理,。该算法首先计算图像的直方图,然后使用统计矩来找到将像素划分为前景和背景的最佳阈值,并最大化这两类之间的可分性。适用于byte和uint2的图像。倾向于确定UsedThreshold的较小值。此外,它对直方图中远离光谱其他部分的薄孤立峰不太敏感,而且通常比“smooth_histo”更快。
    • 直方图平滑(smooth_histo):首先确定灰度值的相对直方图,然后从直方图中提取相关的最小值,这些最小值被用作阈值操作的参数。为了减少最小值的数量,使用高斯平滑,直到在平滑的直方图中只有一个最小值。将阈值设置为该最小值。
  • 如果LightDark=“light”,则会选择灰度值大于或等于所选阈值的所有像素。
  • 如果LightDark=“dark”,则会选择灰度值小于所选阈值的所有像素。

3、局部阈值

dyn_threshold(OrigImage, ThresholdImage : RegionDynThresh : Offset, LightDark : )

  • 当前背景之间差异明显时,可以设置全局阈值,但是很多情况下由于背景不均一,目标体经常表现为比背景局部亮一些或者暗一些,无法确定全局阈值,需要通过其邻域找到一个合适的阈值进行分割。
  • 此算子的输入图像有两种: g o g_{o} go 代表初始图像OrigImage, g t g_{t} gt代表ThresholdImage,选择满足条件的所有像素
  • LightDark = “light”, g o ≥ g t + o f f s e t g_{o} \ge g_{t} + offset gogt+offset
  • LightDark = “dark”, g o ≤ g t − o f f s e t g_{o} \le g_{t} - offset gogtoffset
  • LightDark = “equal”, g t − o f f s e t ≤ g o ≤ g t + o f f s e t g_{t} - offset\le g_{o} \le g_{t} + offset gtoffsetgogt+offset
  • LightDark = “not equal”, g t − o f f s e t > g o ∨ g o > g t + o f f s e t g_{t} - offset>g_{o} \vee g_{o}> g_{t} + offset gtoffset>gogo>gt+offset
  • 通常ThresholdImage阈值图像是原始图像的平滑版本,可以用过mean_image、me dian_image、gauss_filter等得到。
  • offset不要设置为零,一般5-40之间,选择的偏移越大,提取的区域越小。

4、可变阈值分割

var_threshold(Image : Region : MaskWidth, MaskHeight, StdDevScale, AbsThreshold, LightDark : )

  • 输入图像具有较高的局部标准偏差(正的StdDevScale)或较低的局部标准差(负的StdDevScale),可以在照明不均匀或者有噪声的背景上分割阈值。
  • MaskWidth,MaskHeight :用于滤波平滑的掩膜尺寸,决定了要分割的对象的大小。如果选择得太大,则非常接近的对象可能会合并。
  • StdDevScale:标准差乘数因子,被用作图像中噪声的度量。通过StdDevScale进行缩放以反映所需的灵敏度。介于-1.0和1.0之间,建议值为0.2。如果参数过高或过低,则可能会返回一个空区域或完整区域。
  • AbsThreshold:在图像的均匀区域中,标准偏差较低;因此,单个灰度值的影响是高的。为了降低操作员在均匀区域的灵敏度,可以调整AbsThreshold。因此,可以忽略均匀环境中的小灰度值变化。请注意,对于StdDevScale的负值,AbsThreshold也应选择为负值。
  • 可变阈值的计算: V ( x , y ) = { max ⁡ ( S t d D e v S c a l e ∗ d ( x , y ) , A b s T h r e s h o l d )  if  S t d D e v S c a l e ≥ 0 min ⁡ ( S t d D e v S c a l e ∗ d ( x , y ) , A b s T h r e s h o l d )  if  S t d D e v S c a l e < 0 V(x,y) = \begin{cases} &\max(StdDevScale * d(x,y), AbsThreshold)\text{ if } StdDevScale\ge 0 \\ &\min(StdDevScale * d(x,y), AbsThreshold) \text{ if } StdDevScale < 0 \end{cases} V(x,y)={max(StdDevScaled(x,y),AbsThreshold) if StdDevScale0min(StdDevScaled(x,y),AbsThreshold) if StdDevScale<0
    其中 d(x,y)代表该位置像素周围掩膜中的标准偏差
    • LightDark 与上述一样。V(x,y) 类似于上述的offset。

5、自动阈值

auto_threshold(Image : Regions : Sigma : )

  • 使用多个阈值对单通道图像进行分割,首先确定灰度值的绝对直方图,从直方图中提取相关的最小值,这些最小值被连续地用于阈值操作的参数。
  • 参数Sigma的缩放是指图像的原始灰度值。值选择得越大,提取的区域就越少。

6、快速全局阈值分割

fast_threshold(Image : Region : MinGray, MaxGray, MinSize : )

  • 快速全局阈值分割:选择灰度值满足条件的像素聚合为一个区域
  • MinSize : 选取的最小尺寸大小,限制region面积的大小

7、分水岭阈值分割

watersheds_threshold(Image : Basins : Threshold : )

  • 提取分水岭盆地,主要分两步:
    • 通过分水岭算法获得图像盆地
    • 如果盆地被小于Threshold 的分水岭分隔,则依次合并这些流域。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值