06_Machine Vision_图像分割
图像分割 Segmentation
图像分割是将图像划分成多个有意义的区域,当已经成功提取出感兴趣的对象时,分割过程就应该停止。
传统的图像分割算法主要基于像素的相似性(阈值定义相似区域)和不连续性(像素突变)来划分。
基于阈值的分割可表示为:
g
(
x
,
y
)
=
{
1
,
if
f
(
x
,
y
)
>
T
0
,
if
f
(
x
,
y
)
≤
T
g(x,y) = \begin{cases} 1, & \text{if } f(x,y) > T \\ 0, & \text{if } f(x,y) \leq T \end{cases}
g(x,y)={1,0,if f(x,y)>Tif f(x,y)≤T
( T ) 作为门槛值,可表示为:
T
=
T
[
x
,
y
,
p
(
x
,
y
)
,
f
(
x
,
y
)
]
T = T[x,y,p(x,y),f(x,y)]
T=T[x,y,p(x,y),f(x,y)]
其中 ( T ) 可选择为:
- 全局阈值
基于全图的灰度值决定,适用于光照均匀的图像,比如黑白文本识别 - 局部阈值
依赖于像素点和邻域点的灰度值,适用于光照不均匀的图像 - 自适应阈值
每个区域岁为止变化值不一样,适用于复杂的图像
启发式确定全局阈值:
- 选择一个初始估计值 𝑇
- 使用 𝑇 对图像进行分割,这将产生两个像素组:
- G 1 G_1 G1:所有灰度值 > T T T 的像素
- G 2 G_2 G2:所有灰度值 ≤ T T T 的像素
- 计算这两个区域的像素的平均灰度值 μ 1 \mu_1 μ1 和 μ 2 \mu_2 μ2
- 计算新的阈值,公式如下:
T = 0.5 × ( μ 1 + μ 2 ) T = 0.5 \times (\mu_1 + \mu_2) T=0.5×(μ1+μ2) - 重复步骤 2 到 4,直到连续迭代中的阈值
T
T
T 小于与设定参数
自适应局部阈值 - 将原始图像划分为小区域
- 初步分割后,可以通过直方图分析确定那个区域错误分割后,进一步分割
- 对不同的子区域选择不同的阈值进行分割
不连续性检测
最简单的方式是用一个卷积滤波器来检测图像中的不连续性。设计不同的滤波器。
三种不连续检测的方法:
-
点检测
[ − 1 − 1 − 1 − 1 8 − 1 − 1 − 1 − 1 ] \begin{bmatrix} -1 & -1 & -1 \\ -1 & 8 & -1 \\ -1 & -1 & -1 \end{bmatrix} ⎣⎡−1−1−1−18−1−1−1−1⎦⎤R = ∑ i = 1 9 w i z i R = \sum_{i=1}^{9} w_i z_i R=i=1∑9wizi
可识别出孤立的中心点。
-
线检测
-
Horizontal Edge Detection Kernel
[ − 1 − 1 − 1 2 2 2 − 1 − 1 − 1 ] \begin{bmatrix} -1 & -1 & -1 \\ 2 & 2 & 2 \\ -1 & -1 & -1 \end{bmatrix} ⎣⎡−12−1−12−1−12−1⎦⎤ -
+45° Edge Detection Kernel
[ − 1 − 1 2 − 1 2 − 1 2 − 1 − 1 ] \begin{bmatrix} -1 & -1 & 2 \\ -1 & 2 & -1 \\ 2 & -1 & -1 \end{bmatrix} ⎣⎡−1−12−12−12−1−1⎦⎤ -
Vertical Edge Detection Kernel
[ − 1 2 − 1 − 1 2 − 1 − 1 2 − 1 ] \begin{bmatrix} -1 & 2 & -1 \\ -1 & 2 & -1 \\ -1 & 2 & -1 \end{bmatrix} ⎣⎡−1−1−1222−1−1−1⎦⎤ -
-45° Edge Detection Kernel
[ 2 − 1 − 1 − 1 2 − 1 − 1 − 1 2 ] \begin{bmatrix} 2 & -1 & -1 \\ -1 & 2 & -1 \\ -1 & -1 & 2 \end{bmatrix} ⎣⎡2−1−1−12−1−1−12⎦⎤
-