本章主要记录常用的阈值分割算子
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 MinGray≤g≤MaxGray.
- 对于矢量场图像,阈值不应用于灰度值,而是应用于矢量的长度。
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 go≥gt+offset
- LightDark = “dark”, g o ≤ g t − o f f s e t g_{o} \le g_{t} - offset go≤gt−offset
- 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 gt−offset≤go≤gt+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 gt−offset>go∨go>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(StdDevScale∗d(x,y),AbsThreshold) if StdDevScale≥0min(StdDevScale∗d(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 的分水岭分隔,则依次合并这些流域。