第 36 卷
第 13 期
V .36 No.13
ol
·图形图
像处理·
计 算 机 工 程
Computer Engineering
2010 年 7 月
y 2010
Jul
文章编号:1000—3428(2010)13—0192—02
文献标识码:A
中图分类号:TP311.52
基于区域生长的彩色图像分割算法
范 伟
(重庆理工大学计算机科学与工程学院,重庆 400054)
摘 要: 针对传统种子区域生长算法在分割具有复杂纹理的彩色图像中存在的问题,提出一种改进的种子区域生长算法,该算法在 YCbCr
颜色空间中进行,采用离散余弦变换提取图像纹理特征值,进行自动种子及种子区域的生长,并用区域合并改善过度分割。实验结果表明,
该算法能有效提高图像分割的精确性。
关键词:种子生长;区域生长;区域合并;彩色图像分割
Color Image Segmentation Algorithm Based on Region Growth
(College of Computer Science and Engineering, Chongqing University of Technology, Chongqing 400054)
FAN Wei
【Abstract】Color image with complicated texture is insufficiently dealt with a traditional seed region growth method. Aiming at this problem, an
improved seeded region growth method to segment color image is presented. The research is based on YCbCr model. The texture features are
obtained by discrete cosine transform. The seeds and seeded region are produced automatically. The region-merging is used to improve the image
segmentation result. Experimental results show the algorithm can effectively improve segmentation accuracy for different image natures.
【Key words】seed growth; region growing; region merging; color image segmentation
1 概述
2.1 颜色空间的选择
本文采用 YCbCr 颜色空间,因为它的离散性、与人的视
觉感知的同一性、亮度和色度分离等特性,比较适合用在色
彩分析上。把 RGB 空间进行非线性转换就可以得到 YCbCr
彩色空间,如式(1)所示。
⎤
⎥
⎥
⎥
⎦
16
⎡
⎢
128
⎢
⎢
128
⎣
⎤
⎥
⎥
⎥
⎦
Y
⎡
⎢
C
⎢
⎢
C
⎣
目前 YCbCr 广泛应用在图像和影像存储格式中,比如
128.553
74.203
−
93.786
−
24.966
112
18.214
−
65.481
39.797
112
⎡
⎢
+ −
⎢
⎢
⎣
(1)
R
G
B
⎡
⎢
⎢
⎢
⎣
⎤
⎥
⎥
⎥
⎦
×
⎤
⎥
⎥
⎥
⎦
=
b
r
JPEG 和 MPEG 等[3-5]。
2.2 自动种子的生长算法
区域生长算法对种子点极为敏感,所以,种子点的选取
极为重要,在以往的算法中,只考虑到像素点与它相邻的
8 个像素点的相似度,为能改善纹理方面可能发生的问题,
本文的算法除使用颜色判断外,还增加纹理相似度的判断。
2.2.1 颜色特征值的提取
首先对每一个像素点取一个 n×n 的区域,计算出它的 Y
局部平均值 r LC ,Cb 局部平均值 b LC 和 Cr 局部平均值 r LC ,
用这几个值将来计算颜色的相似度。
2.2.2 纹理特征值的提取
对于每一个像素点在同样大小的区域上,使用 DCT 转换
计算出它的频率系数。其中,区域的大小值 n 先预设为 8,
在实际操作中,可以根据纹理的特性做调整,如果图像的纹
理较粗,n 值就要大一些以便能包含正确的特征,如果纹理
基金项目:重庆市自然科学基金资助项目(CSTC2008BB2065)
作者简介:范 伟(1970-),男,高级工程师、硕士,主研方向:图
像处理
收稿日期:2010-01-05 E-mail:climberfan@163.com
图像分割是图像分析和模式识别的首要问题,也是图像
处理的经典难题之一,它决定了图像的最终分析质量和模式
识别的判别结果。目前的图像分割技术主要有阈值分割技术、
基于边缘的技术、基于区域的技术和综合技术 [1]。其中,基
于区域的算法是利用同一个区域内的像素点具有相似的颜色
值和纹理值等特征来进行分割。纹理特征值的提取一般采用
傅里叶变换把彩色图像信号从空域转化到频域内[2],这种方
法对于一些纹理区别不是很明显的彩色图像,可以得到不错
的分割效果,但是对于纹理复杂的图像,类似的方法无法达
到很好的效果。本文针对已有算法中的一些不足,给出一种
改进算法。
2 改进的种子区域生成算法
本文算法的流程如图 1 所示。
图 1 本文所提算法的流程
首先将彩色图像转换到 YCbCr 颜色空间,其次计算像素
点的颜色特征值和纹理特征值,利用得到的特征值选取种子,
进行种子区域生长和种子区域的合并,最后输出处理结果。
—192—
较细,就使用较小的 n 值,这样可以加快算法执行的时间。
DCT 的转换过程如下:
Y
((
)
i
bL
C
ij
=
Y
−
Y
(
bL
2
2
j
)
)
i
...
+ +
...
+ +
C
((
C
(
)
rL
)
i
rL
−
C
rj
2
)
i
2
(5)
i
( )
j
( )
i j
( , )
x
×
=
D
(2
⎡
⎢
⎣
C C
1
n
2
n
n
1
1
−
−
∑ ∑
x
y
0
0
=
=
f x y
( , ) cos
⎤
⎦ (2)
⎥
其中,n 是区域的大小;f(x,y)为空间域中在区域(x,y)位置的
强度系数;D(i,j)为频率系数,当 i 为 1 时,C(i)为 1/ 2 ,否
则为 0,当 j 为 1 时,C(j)为 1/ 2 ,否则为 0。
i
1)
+ π
n
2
1)
+
n
2
⎤
⎥
⎦
⎡
⎢
⎣
cos
(2
π
y
j
在实际操作中,不把所有的频率系数都算出来,而是取
其中几个有代表性的,依次为 D(0,1), D(1,1)及 D(1,0)。另外,
由于 DCT 的计算需要很多时间,实际上相邻点的纹理特征理
论上相差不大,因此,只需要把其中一个像素点的纹理特征
计算出来,然后把和它相邻的 8 个像素点也设定为同样的特
征值,即每个 3×3 的区域里只执行一次 DCT 转换,在这个
区域中的 9 个像素点拥有同样的纹理特征。
2.2.3 种子的自动选取算法
当每一个像素点的所有特征值都准备好了之后,下一步
就开始生成种子。要成为种子必须满足下列 2 个条件:
(1)种子必须和它周围的点有高度的纹理相似性,对区域
中心像素点的 8 个方向做测试(垂直、水平、以及 2 个对角),
最大和最小系数的差值必须小于一个临界值(t1),见式(3):
D
D
D
(0,1)
(1,1)
(1, 0 )
m ax
m ax
m ax
−
−
−
D
D
D
(0,1)
(1,1)
(1, 0)
m in
m in
m in
<
t
<
<
t
1
1
t
1
(3)
其中,t1 为一个正的实数,t1 越大越容易形成种子。如果
8 个方向的测试都满足上式,则该像素点可以作为候选种子。
(2)种子必须和它周围的点有高度的颜色相似性,对区域
中心像素点的 8 个方向做测试,使用欧氏距离来衡量其相似
度,其距离必须小于一个临界值(t2),见式(4):
2
L
L
)
−
−
((
Y
(
j
) )
+ ⋅⋅⋅
Y i
((
)
C i C
(4)
其中,t2 为一个正的实数,而 i 和 j 为相对于种子相反方向上
位于区域边缘上的点。如果这 8 个方向上的点都满足上式,
则这个像素点可以做为候选种子。
<2
j
) )
(
t
L
L
2
r
r
一个像素点如果同时满足上面 2 个条件,就可以归类为
种子。在种子的生成过程中,如果产生相连接的情形,就把
连在一起的种子视为一颗种子。另外条件 1 和条件 2 中临界
值的选取要根据分割的需要适时调整,临界值设定过大,就
会有较多的像素点被归类为种子,最后可能会因为种子连在
一起而造成某些区域与其他区域合并在一起,无法被正确的
分割出来;相反,如果临界值设定的过小,种子则不易生成,
某些区域可能完全没有种子,导致区域也不能被分割出来。
2.3 种子区域的生长
在区域生长过程中,用颜色特征值来做为生长的依据,
主要有下面 3 个步骤:
(1)计算每一个初始区域的平均颜色特征值,为每个区域
设定一个标签符号。
(2)在这些区域的周围寻找未处理的像素点,计算这些像
素点是否可以归类到与它相邻的那个区域。
(3)如果仍有未归类的像素点,则继续执行第(2)步。
在第(1)步完成后,先用欧氏距离计算每一对初始区域间
的颜色距离,然后找到其最小值,设定为变量 min dr。
在第(2)步中,使用相对欧氏距离为判断的标准,表达式
如下:
)i
, (
bLC
其中,i 为即将归类的那个像素点;j 为与 i 相邻的区域,而
rLC 属于待处理像素点 i 的特征值,而 jY ,
, (
bLY
(
)i
rjC 则是与 i 相邻的区域 j 的平均值,求出的值代表相似
bjC ,
差异的程度越小,代表越相似。
)i
在已有的算法中,区域生长是从相似度最近的那个唯一
像素点开始生长,每当一个像素点被归类后,就要寻找下
一个具有最高相似度的像素点来处理,表面上看起来似乎很
合理,实际上这个排序动作会花费大量时间,而取得的效果
却并不明显。本文制定一个可变的临界值做为种子区域生长
的标准,定义如下:
t
3
=
min dr
I
× (6)
a
其中,I 为一个正的常数;a 初始设定为 1,随着时间的推移
和需求的出现,a 呈现递增的趋势,所以,临界值会越来越
大。同一时间正在生长的像素点只要和区域的相似度差异小
于临界值 t3,就可以把它归类到最相似的那个相邻区域,接
着把它周围尚未处理的点加入准备生长的行列。如果相似度
差异大于临界值 t3,则这个点就处于暂停的状态,暂时不归
类。随着区域越往边界生长,算出来的相似度差异就越来越
大,等到生长中的点都处于暂停状态,就调高 a 值,使得 t3
增大,然后再去检查那些处于暂停状态的点是否满足临界值,
如果满足则生长继续,如果任然没有满足,则继续调高 a 值
直到生长的动作重新开始运行。生长的步骤一直进行到所有
的像素点都被归类为止,此时整张图像已经大致被分割完成。
2.4 区域的合并处理
因为在种子产生的过程中,可能会有一些区域里产生了
几个种子,生长后就会产生过度分割。这时候应该把属于同
一区域的合成一块。为了改善过度分割,设定 2 个合并条件:
(1)区域间的相似度越相近的越有可能合并;
(2)区域包含太少像素点的区域应该合并。
在条件(1)中,使用颜色和纹理的相似度距离来判断区域
是否能合并,相似度距离计算公式如式(7)和式(8):
颜色距离:
c R R
(
,
i
)
j
=
Y
(
min(
纹理距离:
−
i
Y
i
2
)
j
Y
2
+
C
bi
C
(
+
2
+
bi
C
C
−
2
,
ri
2
)
bj
Y
i
+
2
C
(
ri
+
C
b j
−
2
C
rj
2
)
+
C
r j
2
)
(7)
d R R
(
,
i
)
=
j
min(
(
D
i
D
i
(0,1)
−
D
j
(0,1))
(0,1)
+ +
L
D
j
2
+ +
L
2
(1,0) ,
(
(1,0)
D
i
(0,1)
D
j
−
D
j
2
(1,0))
+ +
L
D
j
2
(1,0) )
(8)
这里设定 2 个临界值 t4 和 t5 为正的实数,当 2 个区域 Ri
和 Rj 间的 c(Ri, Rj)小于临界值 t4 且 d(Ri, Rj)小于临界值 t5,
则可以把这 2 块合并。在条件(2)中,如果一个区域包含的像
素点少于一个临界值,则找一个与它颜色相似度最高的临近
区域进行合并。
3 实验结果
在 Matlab7.0 环境下随机抽取了一些自然图片进行算法
的验证。图 2(a)为使用文献[2]的算法所得出的效果图,白色
的线条代表分割线,图 2(b)则是本文所提算法的分割结果,
可以发现本文算法的分割效果比较好。由于篇幅所限,还有
多幅图片没有一一列出。 (下转第 196 页)
—193—