二值图像中一种改进的细化算法
张 敏
(西安工业学院 陕西 西安 710032)
摘 要: 讨论了模式识别的基本问题之一图像的细化处理, 通过对一些常用的图像细化算法的分析, 考虑到这些算法
在实用中的不足性, 提出了针对一幅黑色背景白色图像的二值图像的细化算法。文中介绍了该算法的思想原理, 并给出了
具体的
流程
快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计
图、用V C 编写的源代码以及实验效果图, 实验结果表明此算法能准确地对一幅二值图像进行细化, 得到图像的
边缘轮廓, 因此该算法在图像的细化处理上有较好的应用前景。
关键词: 细化处理; 二值图像; 模式识别; 算法
中图分类号: TN 91414 文献标识码: A 文章编号: 1004 373X (2005) 19 096 03
An Im proved Th inn ing A lgor ithm for B inary Image
ZHAN G M in
(X i′an Institu te of Techno logy, X i′an, 710032, Ch ina)
Abs tra c t: Sh inn ing p rocess, a basic p rob lem fo r pat tern recogn it ion is studied in th is paper1Based on analyzing several common
schem es, an algo rithm of figu re sh inn ing is p ropo sed, w h ich aim s at a b inarizat ion figu re that is an im age w ith w h iteöb lack ( targetö
background) , then a detailed flow p rocess diagram and o riginal code based on V C are given1Experim en ts show that the p recise edge of
figu re is go tten using th is algo rithm , and therefo re the schem e is an at tract ive schem e fo r p ract ical system s1
Ke yw o rds: sh inn ing p rocess; b inary im age; pat tern recogn it ion; algo rithm
收稿日期: 2005 06 30
1 引 言
在计算机模式识别中为了对图像特征进行有效地提取
及矢量化处理, 一般都要先进行细化处理。模式的细化是图
像处理的一个基本技术, 他适用于模式的数据压缩、特征分
析等方面。针对不同的应用, 已经发表了许多细化算法[ 1, 2 ] ,
这些细化算法减少了细化时间或改进了细化效果。
在实际应用中, 往往涉及到大幅二值图像的处理, 细
化处理算法的优劣、实现方法的好坏及难易程度直接影响
到图像识别的速度和原图的重构。数字图像的细化处理是
一种使用击中击不中变换的数学形态学算法, 他是在图像
二值化以后, 在保证图像连通性的基础上从二值图像中删
除边缘象素, 提取线宽为 1 个象素的中心线的图像处理过
程。细化算法的种类很多, 目前常用的细化算法主要是快
速算法和O PTA 算法。快速算法的原理是判断出图像的
边界点并逐步消除, O PTA 算法的原理是构造一个模板,
将模板值和图像值依据删除条件决定是否删除某点的象
素值。通过对这些常用算法的研究发现这些算法基本上都
是针对白色背景黑色图像的二值图像进行的, 如果碰到一
些黑色背景白色图像二值图像, 常用的算法则不能对其进
行细化。而如果先将这些图像进行反色处理, 然后再进行
细化处理, 则势必会影响到整个图像的识别速度。针对这
种情况, 本文提出了一种简单可行的方法, 对原有的图像
细化算法进行了改进, 使之可以对一幅黑色背景白色图像
的二值图像进行细化处理, 并给出了程序的
流程图
破产流程图 免费下载数据库流程图下载数据库流程图下载研究框架流程图下载流程图下载word
及V C
源代码。
2 改进的OPTA 算法
211 细化原理
根据文献[ 3 ]提出的O PTA 细化算法可知, 判断一个
象素点在细化过程中是否可以删除, 应该和该点周围 8 邻
域内的其他 8 个点综合来判断。所以通过数学逻辑计算,
也设置了一个 5×5 邻域的S 模板, 如表 1 所示, S 模板中
各位置上的取值取决于模板所对应图像中的象素值, 如果
S 模板某一个位置上所对应的象素值为 255 (白色) , 则在
模板上该位置赋值为 1, 否则为 0。
表 1 5×5 的邻域S 模板
S [ 0 ] [ 0 ] S [ 0 ] [ 1 ] S [ 0 ] [ 2 ] S [ 0 ] [ 3 ] S [ 0 ] [ 4 ]
S [ 1 ] [ 0 ] S [ 1 ] [ 1 ] S [ 1 ] [ 2 ] S [ 1 ] [ 3 ] S [ 1 ] [ 4 ]
S [ 2 ] [ 0 ] S [ 2 ] [ 1 ] S [ 2 ] [ 2 ] S [ 2 ] [ 3 ] S [ 2 ] [ 4 ]
S [ 3 ] [ 0 ] S [ 3 ] [ 1 ] S [ 3 ] [ 2 ] S [ 3 ] [ 3 ] S [ 3 ] [ 4 ]
S [ 4 ] [ 0 ] S [ 4 ] [ 1 ] S [ 4 ] [ 2 ] S [ 4 ] [ 3 ] S [ 4 ] [ 4 ]
N (S [ 2 ] [ 2 ])表示以S [ 2 ] [ 2 ]为中心的 3×3 邻域内目
标象素 (即白点)的个数;
T (S [ 2 ] [ 2 ])表示以 S [ 2 ] [ 2 ]为中心点的 3×3 邻域中
由 S [ 1 ] [ 2 ]开始按逆时针方向再旋转到 S [ 1 ] [ 2 ]时值 0→
69
电 子 技 术 张 敏: 二值图像中一种改进的细化算法
© 1995-2006 Tsinghua Tongfang Optical Disc Co., Ltd. All rights reserved.
1 的变化次数。
T (S [ 1 ] [ 2 ])表示以 S [ 1 ] [ 2 ]为中心点的 3×3 邻域中
由 S [ 0 ] [ 2 ]开始按逆时针方向再旋转到 S [ 0 ] [ 2 ]时值由 0
→1 的变化次数。
T (S [ 2 ] [ 1 ])表示以 S [ 2 ] [ 1 ]为中心点的 3×3 邻域中
S [ 1 ] [ 1 ] 开始按逆时针方向再旋转到 S [ 1 ] [ 1 ]时值 0→1
的变化次数。
当 S [ 2 ] [ 2 ]的值为 1 (白点) 时, 如果同时满足下面 4
个条件, 则可以删除这个象素点:
(1) 2≤N (S [ 2 ] [ 2 ]) ≤6
(2) T (S [ 2 ] [ 2 ]) = 1
(3) S [ 1 ] [ 2 ]3 S [ 2 ] [ 1 ]3 S [ 2 ] [ 3 ]= 0, 或者 T (S [ 1 ]
[ 2 ]) ! = 1
(4) S [ 1 ] [ 2 ]3 S [ 2 ] [ 1 ]3 S [ 3 ] [ 2 ]= 0, 或者 T (S [ 2 ]
[ 1 ]) ! = 1
若上述 4 个条件中有一个不满足, 则保留该象素点,
重复判断象素点直至没有象素点可以删除。
图 1 图像细化流程图
212 实现步骤
(1)获得原图像的首地址和图像的高、宽信息。
(2)开辟一块内存缓冲区, 并初始化为 0。
(3)如果当前象素为黑, 则跳过该点。
(4) 如果当前象素为白, 则定义一个 5×5 的数组, 计
算数组中各位置上的值, 为防止越界不处理外围的 2 行和
2 列象素, 从第 3 行第 3 列开始判断, 将S 模板中心覆盖在
欲判断的象素上, 由模板覆盖下的各个象素值得到模板上
相应位置上的值。即若象素值为 255 (白点) , 则模板的同
样位置上赋 1 值, 否则赋 0 值。
(5)依此判断 S 模板中心点是否同时满足 4 个判断条
件, 是则删除该点, 否则判断下一个象素点。
(6)重复执行 (3) , (4) , (5) 直到所有的象素点处理完
一遍, 没有点可以删除为止。
213 细化流程
图像细化流程图如图 1 所示。
214 程序实现
根据文献[ 4 ], 可以得到该细化算法的实现代码:
M odi= TRU E;
w h ile (M odi)
{ M odi = FAL SE;
öö初始化新分配的内存, 设定初始值为 0
lpD st = (char 3 ) lpN ewD IBB its;
m em set (lpD st, (BYT E) 0, lW idth3 lH eigh t) ;
fo r ( j = 2; j < lH eigh t- 2; j+ + )
{ fo r ( i= 2; i< lW idth- 2; i+ + )
{ Condit ion1= FAL SE;
Condit ion2= FAL SE;
Condit ion3= FAL SE;
Condit ion4= FAL SE;
öö指向源图像倒数第 j 行, 第 i 个象素的指针
lpSrc= (char3 ) lpD IBB its+ lW idth3 j + i;
öö指向目标图像倒数第 j 行, 第 i 个象素的指针
lpD st= (char3 ) lpN ewD IBB its+ lW idth3 j+ i;
p ixel= (unsigned char) 3 lpSrc;
öö如果源图像中当前点为黑色, 则跳过
else if (p ixel= = 0)
con tinue;
öö获得当前点相邻的 5×5 区域内象素值, 白色用
1 代表, 黑色用 0 代表
fo r (m = 0; m < 5; m + + )
{ fo r (n= 0; n< 5; n+ + )
{
s [m ] [n ]= ( (unsigned char) 3 ( lpSrc+ ( (4- m ) - 2)3 lW idth+ n- 2) ) ö255;
}
}
öö逐个判断条件
öö判断 2≤N (s[2 ] [2 ])≤6
Coun t= s[1 ] [1 ]+ s[1 ] [2 ]+ s[1 ] [3 ]+ s[2 ] [1 ]+ s[2 ] [3 ]
+ s[3 ] [1 ] + s [3 ] [2 ]+ s[3 ] [3 ];
if (Coun t> = 2 && Coun t< = 6)
Condit ion1= TRU E;
öö判断 T (s[2 ] [2 ]) = 1
Coun t= 0;
if (s[1 ] [2 ]= = 0 && s[1 ] [1 ]= = 1)Coun t+ + ;
if (s[1 ] [1 ]= = 0 && s[2 ] [1 ]= = 1)Coun t+ + ;
if (s[2 ] [1 ]= = 0 && s[3 ] [1 ]= = 1)Coun t+ + ;
if (s[3 ] [1 ]= = 0 && s[3 ] [2 ]= = 1)Coun t+ + ;
if (s[3 ] [2 ]= = 0 && s[3 ] [3 ]= = 1)Coun t+ + ;
if (s[3 ] [3 ]= = 0 && s[2 ] [3 ]= = 1)Coun t+ + ;
if (s[2 ] [3 ]= = 0 && s[1 ] [3 ]= = 1)Coun t+ + ;
if (s[1 ] [3 ]= = 0 && s[1 ] [2 ]= = 1)Coun t+ + ;
if (Coun t= = 1)
Condit ion2= TRU E;
öö判断 s [ 1 ] [ 2 ]3 s [ 2 ] [ 1 ]3 s [ 2 ] [ 3 ] = 0, 或者 T (s [ 1 ] [ 2 ])
! = 1
if (s[1 ] [2 ]3 s[2 ] [1 ]3 s[2 ] [3 ]= = 0)
Condit ion3 = TRU E;
else
{ Coun t= 0;
if (s[0 ] [2 ]= = 0 && s[0 ] [1 ]= = 1)Coun t+ + ;
if (s[0 ] [1 ]= = 0 && s[1 ] [1 ]= = 1)Coun t+ + ;
if (s[1 ] [1 ]= = 0 && s[2 ] [1 ]= = 1)Coun t+ + ;
if (s[2 ] [1 ]= = 0 && s[2 ] [2 ]= = 1)Coun t+ + ;
if (s[2 ] [2 ]= = 0 && s[2 ] [3 ]= = 1)Coun t+ + ;
if (s[2 ] [3 ]= = 0 && s[1 ] [3 ]= = 1)Coun t+ + ;
79
《现代电子技术》2005 年第 19 期总第 210 期 þ 电子技术应用ü
© 1995-2006 Tsinghua Tongfang Optical Disc Co., Ltd. All rights reserved.
if (s[1 ] [3 ]= = 0 && s[0 ] [3 ]= = 1)Coun t+ + ;
if (s[0 ] [3 ]= = 0 && s[0 ] [2 ]= = 1)Coun t+ + ;
if (Coun t! = 1)
Condit ion3= TRU E;
}öö判断 s[1 ] [2 ]3 s[2 ] [1 ]3 s[3 ] [2 ]= 0, 或者 T (s[2 ] [1 ]) ! = 1
if (s[1 ] [2 ]3 s[2 ] [1 ]3 s[3 ] [2 ]= = 0)
Condit ion4= TRU E;
else
{ Coun t= 0;
if (s[1 ] [1 ]= = 0 && s[1 ] [0 ]= = 1)Coun t+ + ;
if (s[1 ] [0 ]= = 0 && s[2 ] [0 ]= = 1)Coun t+ + ;
if (s[2 ] [0 ]= = 0 && s[3 ] [0 ]= = 1)Coun t+ + ;
if (s[3 ] [0 ]= = 0 && s[3 ] [1 ]= = 1)Coun t+ + ;
if (s[3 ] [1 ]= = 0 && s[3 ] [2 ]= = 1)Coun t+ + ;
if (s[3 ] [2 ]= = 0 && s[2 ] [2 ]= = 1)Coun t+ + ;
if (s[2 ] [2 ]= = 0 && s[1 ] [2 ]= = 1)Coun t+ + ;
if (s[1 ] [2 ]= = 0 && s[1 ] [1 ]= = 1)Coun t+ + ;
if (Coun t! = 1)
Condit ion4= TRU E;
}
if (Condit ion1 && Condit ion2 && Condit ion3 &&
Condit ion4)
{ 3 lpD st= (unsigned char) 0;
M odi= TRU E; }
else
{3 lpD st= (unsigned char) 255;
}
}
}
3 实验结果
对拍摄到的一幅啤酒瓶的瓶口和瓶底图首先进行了
二值化处理, 然后进行了细化处理, 实验结果如下:
其中图 2 (a)为拍摄的啤酒瓶瓶口的原图, 图 2 (b) 为
其二值化以后的图像, 图 2 (c)为其细化后的图像。图 3 (a)
为拍摄的啤酒瓶瓶底的原图, 图 3 (b) 为其二值化以后的
图像。图 3 (c)为其细化后的图像。由图中可以明显看出, 该
算法的细化结果是比较理想的。
4 结 语
通过在原有的O PTA 算法的基础上提出了一种基于
V C 的细化处理算法, 他可以实现对一幅黑色背景白色图像
的二值图像进行细化。详细介绍了该算法的原理、实现过
程、程序流程图以及算法实现的原代码, 通过给出的处理后
的效果图, 可以看出该算法在实验中取得了较好的效果。
图 2 瓶口图像处理
图 3 瓶底图像处理
参 考 文 献
[1 ] 章毓晋 1 图像分割 [M ] 1 北京: 科学出版社, 20011
[ 2 ] 贾永红1 数字图像处理 [M ] 1 武汉: 武汉大学出版社, 20031
[ 3 ] 杨淑莹 1V C+ + 图像处理程序设计 [M ] 1 北京: 清华大学
出版社, 20031
[ 4 ] 何斌 1V isual C+ + 数字图像处理 [M ] 1 北京: 人民邮电出
版社, 20021
[5 ] 李云, 胡学龙 1 二值图像中标定目标区域的几何特征提取
[J ] 1 微机发展, 2002 (3) : 55 571
[ 6 ] 杨枝灵, 王开 1V isual C+ + 数字图像获取、处理及实践应用
[M ] 1 北京: 人民邮电出版社, 20031
作者简介 张 敏 女, 1971 年出生, 讲师。主要研究方向为计算机软件、图像处理。
(上接第 95 页)
交织距阵构造的约束长度可选择, 对信道中长突发差错误
码率的纠错能力就强。在实现连续数据流交织时, M , N 选
择越大, 需要的存储空间越大, 输出会产生 2M N 个符号
的延时, 因此, 在实际数字通信系统中应根据实际情况合
理地选择M , N 值才能更好地发挥交织编码器的作用。
交织编码技术是将连续误码分散成非连续误码, 增强
了纠错码的约束长度。数字通信系统采用纠错码与交织编
码, 具有既能纠正随机差错, 又能克服突发性差错的功能,
大大提高了通信质量。运用 FPGA 技术进行设计, 不但大
大缩小了电路的体积, 提高了电路的稳定性, 而且先进的
开发工具也缩短了整个设计调试的周期也大为的缩短。
参 考 文 献
[ 1 ] 冯玉珉 1 通信系统原理 [M ]1 北京: 清华大学出版社, 20031
[ 2 ] 冯涛, 王程 1M ax+ P lusÊ 入门与提高 [M ] 1 北京: 人民
邮电出版社, 20021
[ 3 ] 潘松, 黄继业 1EDA 技术使用教程 [M ] 1 北京: 科学出版
社, 20031
[ 4 ] 林明权 1V HDL 数字控制系统设计范例 [M ] 1 北京: 电子
工业出版社, 20031
[ 5 ] M ark Zw o lin sk i1D igita l System D esign w ith V HDL [M ] 1
北京: 电子工业出版社, 20041
[ 6 ] 刘常树 1 数字逻辑电路 [M ]1 北京: 国防工业出版社, 20021
作者简介 王 炜 男, 1963 年出生, 硕士毕业, 副教授。
89
电 子 技 术 张 敏: 二值图像中一种改进的细化算法
© 1995-2006 Tsinghua Tongfang Optical Disc Co., Ltd. All rights reserved.