文章目录
- 一、图像分割
- 二、间断检测
- 2.1 概述
- 2.2 点检测
- 2.3 线检测
- 2.4 边缘检测
- 三、边缘连接
- 3.1 概述
- 3.2 Hough变换
- 3.3 例子
- 3.4 Hough变换的具体步骤
- 3.5 Hough变换的法线表示形式
- 3.6 Hough变换的扩展
- 四、阈值处理
- 4.1 概述
- 4.2 计算基本全局阈值算法
- 4.3 自适应阈值
- 五、基于区域的分割
- 5.1 概述
- 5.2 区域生长
- 5.3 区域的分裂与合并
一、图像分割
1. 图像分割定义:是指把图像分成各具特性的区域并提取出感兴趣目标的技术和过程。特性可以是灰度、颜色、纹理等;目标可以对应单个区域,也可以对应多个区域。
2. 图像分割的目的:将图像划分为不同区域。
3. 图像分割的原理:图像分割算法是基于亮度值的不连续性和相似性。
(1) 不连续性是基于亮度的不连续变化分割图像,如图像边缘。
(2) 根据制定的准则将图像分割为相似的区域,如阈值处理、区域生长、区域分离和聚合。
二、间断检测
2.1 概述
1. 间断检测分为点检测、线检测和边缘检测。
2. 寻找间断的一般方法:对整幅图像使用一个模板进行检测,这一过程包括计算模板所包围区域内灰度级与模板系数乘积之和,在图像中任意点的模板响应由下列公式给出:
R
=
W
1
∗
Z
1
+
W
2
∗
Z
2
+
.
.
.
.
.
W
9
∗
Z
9
R=W_1*Z_1+W_2*Z_2+.....W_9*Z_9
R=W1∗Z1+W2∗Z2+.....W9∗Z9。
这里
Z
i
Z_i
Zi 是与模板系数相联系的像素灰度级,模板响应定义是对于它的中心位置。
2.2 点检测
1. 使用如下图所示的模板,如果 ∣ R ∣ ≥ T |R| ≥ T ∣R∣≥T,则在模板中心位置检测到一个点。其中, T T T 是阈值, R R R 是模板计算值。
2. 如果一个孤立点与它周围的点不同,则可以使用该模板进行检测。(该点的灰度级与其背景的差异相当大并且它所在的位置是一个均匀或近似均匀的区域)
注意:如果模板响应为
0
0
0,则表示在灰度级为常数的区域。
2.3 线检测
1. 四个线检测模板如下图所示:
(1) 第一个模板对水平线有最大响应。
(2) 第二个模板对
45
°
45°
45° 方向线有最大响应。
(3) 第三个模板对垂直线有最大响应。
(4) 第四个模板对
−
45
°
-45°
−45° 方向线有最大响应。
2. 用
R
1
R_1
R1,
R
2
R_2
R2,
R
3
R_3
R3 和
R
4
R_4
R4 分别代表水平、
45
°
45°
45°、垂直和
−
45
°
-45°
−45° 方向线的模板响应。在图像中心的点,如果
∣
R
i
∣
>
∣
R
j
∣
|R_i| > |R_j|
∣Ri∣>∣Rj∣,
j
≠
i
j ≠i
j=i,则此点被认为与在模板
i
i
i 方向上的线更相关。
例:如果
∣
R
1
∣
>
∣
R
j
∣
|R_1| > |R_j|
∣R1∣>∣Rj∣,
j
=
2
,
3
,
4
j = 2,3,4
j=2,3,4,则该点与水平线有更大的关联。
注:在灰度恒定的区域,上述
4
4
4 个模板的响应均为零。
2.4 边缘检测
1. 区分 “边缘” 和 “线”:边缘——图像局部区域特征不相同的那些区域间的分界线;线——具有很小宽度的其中间区域具有相同的图像特征。
2. 常见的边缘模型:
(1) 台阶边缘是指在
1
1
1 个像素的距离上发生两个灰度级间理想的过渡。
(2) 一个更接近灰度斜坡的剖面。斜坡的斜度与边缘的模糊程度成反比,在这个模型中,不再存在一条细的(
1
1
1 像素宽)轨迹。相反,一个边缘点现在是斜坡中包含的任何点,而一条边缘线段是一组已连接起来的这样的点。
3. (1) 在边缘斜面上,一阶导数为正,其它区域为零。 (2) 在边缘与黑色交界处,二阶导数为正。 (3) 在边缘与亮色交界处,二阶导数为负。 (4) 沿着斜坡和灰度为常数的区域二阶导数为零。
4. 结论:(1) 一阶导数可用于检测图像中的一个点是否在边缘上。 (2) 二阶导数可以判断一个边缘像素是在边缘亮的一边还是暗的一边。 (3) 一条连接二阶导数正值和负值的虚构直线将在边缘中点附近穿过零点。 (4) 一阶导数使用梯度算子,二阶导数使用拉普拉斯算子。
三、边缘连接
3.1 概述
1. 为什么需要边缘连接:由于噪声、照明等原因产生边缘间断,使得一组像素难以完整形成边缘;因此,在边缘检测算法后,使用连接过程将间断的边缘像素组合成完整边缘。
2. 局部处理:分析图像中每个边缘点 ( x , y ) (x,y) (x,y) 的一个邻域内的像素,根据某种准则将相似点进行连接,由满足该准则的像素连接形成边缘。
3.2 Hough变换
1. Hough变换问题的提出:在找出边界点集之后,需要连接形成完整的边界图形描述。
2. Hough变换的基本思想:
(1) 对于边界上的
n
n
n 个点的点集,找出共线的点集和直线方程。
(2) 对于任意两点的直线方程:
y
=
a
x
+
b
y = ax + b
y=ax+b,构造一个参数
a
a
a,
b
b
b 的平面,从而有如下结论:
①
x
y
xy
xy 平面上的任意一条直线
y
=
a
x
+
b
y=ax+b
y=ax+b,对应在参数
a
b
ab
ab 平面上都有一个点。
② 过 x y xy xy 平面一个点 ( x , y ) (x,y) (x,y) 的所有直线,构成参数 a b ab ab 平面上的一条直线。
③ 如果点 ( x 1 , y 1 ) (x_1,y_1) (x1,y1) 与点 ( x 2 , y 2 ) (x_2,y_2) (x2,y2) 共线,那么这两点在参数 a b ab ab 平面上的直线将有一个交点,具有相同的 a a a 和 b b b。
④ 在参数 a b ab ab 平面上相交直线最多的点,对应的 x y xy xy 平面上的直线就是我们的解。
⑤ 得到点 A ( a , b ) A(a,b) A(a,b) 是我们的解(相交直线最多), ( a , b ) (a,b) (a,b) 对应到图像坐标系 x y xy xy 中所求直线的斜率和截距。
3.3 例子
1. 如下图四个点:
A
.
(
0
,
0
)
A. (0,0)
A.(0,0),
B
.
(
1
,
1
)
B. (1,1)
B.(1,1),
C
.
(
2
,
2
)
C. (2,2)
C.(2,2),
D
.
(
3
,
3
)
D. (3,3)
D.(3,3)。
y
=
a
x
+
b
y = ax + b
y=ax+b,
b
=
−
x
a
+
y
b = −xa + y
b=−xa+y。
在关于
b
b
b 和
a
a
a 的方程中带入四个点则
b
=
0
b=0
b=0;
b
=
−
a
+
1
b=-a+1
b=−a+1;
b
=
−
2
a
+
2
b=-2a+2
b=−2a+2;
b
=
−
3
a
+
3
b=-3a+3
b=−3a+3。
2. 为了找到交点,首先将
a
,
b
a,b
a,b 离散化,假定
a
,
b
a, b
a,b 的范围在
[
−
2
,
2
]
[-2,2]
[−2,2] 之间,
a
=
[
−
2
,
−
1
,
0
,
1
,
2
]
a=[-2,-1,0,1,2]
a=[−2,−1,0,1,2],
b
=
[
−
2
,
−
1
,
0
,
1
,
2
]
b=[-2,-1,0,1,2]
b=[−2,−1,0,1,2],同时定义
5
∗
5
5*5
5∗5 二维数组,每个位置对应
a
,
b
a,b
a,b 空间中离散化的点。
(1) 对于直线
b
=
−
a
+
1
b=-a+1
b=−a+1:让
a
a
a 在区间
[
−
2
,
−
1
,
0
,
1
,
2
]
[-2,-1,0,1,2]
[−2,−1,0,1,2] 内取值,可以得到直线
b
=
−
a
+
1
b=-a+1
b=−a+1 上的
5
5
5 个点
(
−
2
,
3
)
(-2, 3)
(−2,3),
(
−
1
,
2
)
(-1,2)
(−1,2),
(
0
,
1
)
(0,1)
(0,1),
(
1
,
0
)
(1,0)
(1,0),
(
2
,
−
1
)
(2,-1)
(2,−1),注意到
(
−
2
,
3
)
(-2,3)
(−2,3) 不在表格内。
(2) 对于直线 b = 0 b=0 b=0:让 a a a 在区间 [ − 2 , − 1 , 0 , 1 , 2 ] [-2,-1,0,1,2] [−2,−1,0,1,2] 内取值,可以得到直线 b = 0 b=0 b=0 上的 5 5 5 个点 ( − 2 , 0 ) (-2, 0) (−2,0), ( − 1 , 0 ) (-1,0) (−1,0), ( 0 , 0 ) (0,0) (0,0), ( 1 , 0 ) (1,0) (1,0), ( 2 , 0 ) (2,0) (2,0)。注意到 ( 1 , 0 ) (1,0) (1,0) 在对应的表格中再次出现,累加起来变成了 2 2 2。
(3) 对于直线 b = − 2 a + 2 b=-2a+2 b=−2a+2:让 a a a 在区间 [ − 2 , − 1 , 0 , 1 , 2 ] [-2,-1,0,1,2] [−2,−1,0,1,2] 内取值,可以得到直线 b = − 2 a + 2 b=-2a+2 b=−2a+2 上的 5 5 5 个点 ( − 2 , 6 ) (-2, 6) (−2,6), ( − 1 , 4 ) (-1,4) (−1,4), ( 0 , 2 ) (0,2) (0,2), ( 1 , 0 ) (1,0) (1,0), ( 2 , − 2 ) (2,-2) (2,−2)。注意到 ( 1 , 0 ) (1,0) (1,0) 在对应的表格中再次出现,累加起来变成了 3 3 3。
(4) 对于直线 b = − 3 a + 3 b=-3a+3 b=−3a+3:让 a a a 在区间 [ − 2 , − 1 , 0 , 1 , 2 ] [-2,-1,0,1,2] [−2,−1,0,1,2] 内取值,可以得到直线 b = − 3 a + 3 b=-3a+3 b=−3a+3 上的 5 5 5 个点 ( − 2 , 9 ) (-2, 9) (−2,9), ( − 1 , 6 ) (-1,6) (−1,6), ( 0 , 3 ) (0,3) (0,3), ( 1 , 0 ) (1,0) (1,0), ( 2 , − 3 ) (2,-3) (2,−3)。注意到 ( 1 , 0 ) (1,0) (1,0) 在对应的表格中再次出现,累加起来变成了 4 4 4。找到数组内最大值对应的参数,即 a = 1 a=1 a=1, b = 0 b=0 b=0;写出 4 4 4 个点所在的方程为 y = x y=x y=x。
3.4 Hough变换的具体步骤
1. 首先确定参数 a a a, b b b 的每个取值区间,等间隔的离散化,建立对应的二维表格。
2. 对于图像中的每个边缘点,在参数直线代入 a a a 的离散值得量化的 b b b 值,得到一组参数空间点,判断数据点在对应的表格中是否出现,出现加 1 1 1。
3. 找到表格中最大数对应的参数值 a a a 和 b b b,写出直线方程。
3.5 Hough变换的法线表示形式
1. 由于垂直直线的斜率 a a a 为无穷大,我们改用极坐标形式 x c o s θ + y s i n θ = ρ xcosθ + ysinθ = ρ xcosθ+ysinθ=ρ。
2. 参数平面为 θ , ρ θ,ρ θ,ρ,对应不是直线而是正弦曲线。
3. 使用交点累加器,或交点统计直方图,找出相交线段最多的参数空间的点。
4. 然后找出该点对应的 x y xy xy 平面的直线线段。
3.6 Hough变换的扩展
1. Hough变换不只对直线,也可以用于圆:
2. 在参数空间里建立一个3D(三个参数的空间)的累加单元的数组 A A A,其元素可写为 A ( a , b , r ) A(a,b,r) A(a,b,r)。
3. 让 a a a 和 b b b 依次变化并根据式计算出 r r r,并对 A A A 累加: A ( a , b , r ) = A ( a , b , r ) + 1 A(a,b,r)=A(a,b,r)+1 A(a,b,r)=A(a,b,r)+1。从理论上说,计算量和累加器尺寸随参数个数的增加是指数增加的,所以实际中Hough变换比较适合检测较简单曲线上的点。
四、阈值处理
4.1 概述
1. 阈值处理操作: 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)]。 f ( x , y ) f(x,y) f(x,y) 是点 ( x , y ) (x,y) (x,y) 的灰度级, p ( x , y ) p(x,y) p(x,y) 表示该点的局部性质,如以 ( x , y ) (x,y) (x,y) 为中心的邻域的平均灰度级。
2. 阈值处理后的图像 g ( x , y ) g(x,y) g(x,y) 定义如下:
3. 标记为 1 1 1 的像素对应于对象,标记为 0 0 0 的像素对应于背景。当 T T T 仅取决于 f ( x , y ) f(x,y) f(x,y),阈值称为全局的;当 T T T 取决于 f ( x , y ) f(x,y) f(x,y) 和 p ( x , y ) p(x,y) p(x,y),阈值是局部的;当 T T T 取决于空间坐标 x x x 和 y y y,阈值就是动态的或自适应的。
4.2 计算基本全局阈值算法
1. 选择一个 T T T 的初始估计值。
2. 用 T T T 分割图像,生成两组像素: G 1 G_1 G1 由所有灰度值大于 T T T 的像素组成,而 G 2 G_2 G2 由所有灰度值小于或等于 T T T 的像素组成。
3. 对区域 G 1 G_1 G1 和 G 2 G_2 G2 中的所有像素计算平均灰度值 µ 1 µ_1 µ1 和 µ 2 µ_2 µ2。
4. 计算新的阈值: T = 1 / 2 ( µ 1 + µ 2 ) T=1/2(µ_1+µ_2) T=1/2(µ1+µ2)。
5. 重复步骤 2 2 2 到 4 4 4,直到逐次迭代所得的 T T T 值之差小于事先定义的参数 T 0 T_0 T0。
4.3 自适应阈值
1. 单一全局阈值存在的问题:不均匀亮度图像无法有效分割。
2. 方法:将图像进一步细分为子图像,并对不同的子图像使用不同的阈值处理。
解决的关键问题:如何将图像进行细分和如何为得到的子图像估计阈值。
自适应阈值:取决于像素在子图像中的位置。
五、基于区域的分割
5.1 概述
1. 目标:将区域
R
R
R 划分为若干个子区域
R
1
R_1
R1,
R
2
R_2
R2,…,
R
n
R_n
Rn,这些子区域满足
5
5
5 个条件:
(1) 完备性:
∑
R
i
=
R
∑R_i=R
∑Ri=R。
(2) 连通性:每个
R
i
R_i
Ri 都是一个连通区域。
(3) 独立性:对于任意
i
≠
j
i≠j
i=j,
R
i
∩
R
j
=
Ф
R_i∩R_j= Ф
Ri∩Rj=Ф。
(4) 单一性:每个区域内的灰度级相等,
P
(
R
i
)
=
T
R
U
E
P(R_i)= TRUE
P(Ri)=TRUE,
i
=
1
,
2
,
…
,
n
i = 1,2,…,n
i=1,2,…,n。
(5) 互斥性:任两个区域的灰度级不等,
P
(
R
i
∪
R
j
)
=
F
A
L
S
E
P(R_i∪R_j)= FALSE
P(Ri∪Rj)=FALSE,
i
≠
j
i≠j
i=j。
2. 基于区域的分割方法分两类:(1) 区域生长。 (2) 区域分裂与合并。
5.2 区域生长
1. 区域生长的算法实现:
(1) 根据图像的不同应用选择一个或一组种子,它或者是最亮或最暗的点,或者是位于点簇中心的点。
(2) 选择一个描述符(条件)。
(3) 从该种子开始向外扩张,首先把种子像素加入结果集合,然后不断将与集合中各个像素连通、且满足描述符的像素加入集合。
(4) 上一过程进行到不再有满足条件的新结点加入集合为止。
2. 例子:
(1) 种子选择准则:最亮的点。
(2) 相似性准则:新加入像素值与已生长的区域的平均值之差的绝对值小于
2
2
2(含不等于),且为
4
4
4 连通。
(3) 终止准则:没有像素加入。
5.3 区域的分裂与合并
1. 生长方法:先从单个种子像素开始通过不断接纳新像素,最后得到整个区域。
另外一种分割的想法:先从整幅图像开始通过不断分裂,得到各个区域(在实际中,先将图像分成任意大小且不重叠的区域,然后再合并或分裂这些区域,以满足分割的要求)。在这类方法中,常根据图像的统计特性设定图像区域属性的一致性测度。
注:基于灰度统计特性;区域的边缘信息来决定是否对区域进行合并或分裂。
2. 算法实现:
(1) 将图像分成分成大小相等的四个区域。
(2) 对每个区域不满足相似性准则的继续划分。
(3) 如果相邻的区域满足特定的准则,则将其合并。
(4) 反复进行(1)和(2)操作,直至不再有新的分裂与合并为止。
3. 例子:
4. 对于灰度图象的一些可以选择的分裂-合并准则:
(1) 同一区域中最大灰度值与最小灰度值之差或方差小于某选定的阈值。
(2) 两个区域的平均灰度值之差及方差小于某个选定的阈值。
(3) 两个区域的灰度分布函数之差小于某个选定的阈值。
(4) 两个区域的某种图像统计特征值的差小于等于某个阈值。
5. 例子如下。图中红色区域为目标,其它区域为背景,它们都具有常数灰度值。
(1) 对整个图像
R
R
R,
P
(
R
)
=
F
A
L
S
E
P(R)=FALSE
P(R)=FALSE,(
P
(
R
)
=
T
R
U
E
P(R)=TRUE
P(R)=TRUE 代表在
R
R
R 中的所有像素都具有相同的灰度值),所以先将其分裂成如图 (a) 所示的四个正方形区域。
(2) 由于左上角区域满足
P
P
P,所以不必继续分裂,其它三个区域继续分裂而得到 (b)。
(3) 此时除包括目标下部的两个子区域外,其它区域都可分别按目标和背景合并。对下面的两个子区域继续分裂可得到 (c ),因为此时所有区域都已满足
P
P
P,所以最后一次合并可得到 (d) 的分割结果。