一种二值图像连通区域标记的新算法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
为了克服线标记法和区域增长法的缺点 ,本文提出了一种 基于区域增长法和线标记法的新方法 。该方法不仅充分利用区 域的邻域信息 ,而且一次扫描就可以标记出图像中所有目标物 体 ,不会出现标号冲突的现象 ,真正做到了快速、简单。为了提高 算法的效率 ,减少比较次数 ,本文还提出了对其的优化策略。
1 本文算法
的边界时出现对内存的非法操作 ,申请一个比原始图像尺寸 上 、下 、左 、右各大一个像素的临时图像 ;由于元素的删除和增 加操作始终在数据结构的顶部进行 ,所以我们采用堆栈作为 存放目标段的数据结构 。在上述伪代码中 , Obj表示二值图 像中的目标物体 , seg表示目标段 , L 表示段的标记值 , U 表示 未标记的目标段集 , stack表示存放目标段的堆栈 , push_ stack 和 pop_stack分别表示入栈和出栈 。 1. 2 算法优化
到目前为止 ,图像的标记算法有很多种 ,这些方法大致可 以分为以下 3类 :
像素标记法 根据标记过程中对图像扫描次数的不同可 以分为 :两次扫描法 [1 ] 、单向反复扫描法 [2 ]以及双向反复扫 描法 [3 ] 。两次扫描法第一次扫描时记录冲突的标记并形成 等价对 (存储在特殊的数据结构中 ) ,第二次扫描时 ,把等价 标记中最小的标记赋予所有等价标记对应的像素点 。单向反 复扫描法 ,反复扫描图像 ,并在同一连通区域内传播最小标 号 ,直到没有标号变化为止 。双向反复扫描法 ,正向和反向反 复扫描图像 ,并在邻域内传播标号 ,直到没有标号变化为止 。
本算法综合了线标记法和区域增长法的优点 , 把连通区 域的目标段作为区域增长的“种子段 ”, 充分利用区域的邻域 信息 ,对图像只需要进行一次扫描就可以标记出所有连通区 域 。但是由于每个目标段都需要对上下两行进行扫描判断 (有些判断必定是重复操作 ) , 为了进一步提高算法效率 , 本 文提出优化策略 。
Key words: connected region; labeling; line labeling; region grow ing
0 引言
灰度图像进行阈值分割得到二值图像 (一般背景像素为 255,目标像素为 0) ,为了提取不同区域的特征 ,常常先要对 连通区域进行标记 。连通区域标记是指将图像中符合某种连 通规则 (4邻域连通和 8邻域连通 )的像素用相同的标号表示 出来 。这种方法在工业检测 ,光学字符识别 (Op tical Character Recognition, OCR)等领域有广泛的应用 ,如文本识别的图文 分割 、零件图像提取等 ,是图像处理和目标识别的基础 ,标记 算法的速度直接影响到图像的分析效率 。
表 1 二值图像连通区域的标记算法比较
图 序号
连通 区域 个数
标记时间 /m s 单向反复 两次 线标 区域 扫描法 扫描法 号法 增长法
本文 算法
1
824
885
33
82
486
79
2 3 136 16 872 3 386 1 960 888
217
3 4 074 27 696 33 316 11 335 255
(hongbog_cd@163. com ) 摘 要 :在线标记和区域增长的基础上提出了一种二值图像连通区域标记的快速算法 。该算法 综合了线标记法和区域增长法的优点 ,对图像进行一次扫描就可以标记所有连通区域 ,避免了重复标 记问题 ;同时该算法不受标记的区域形状影响 ,具有良好的鲁棒性 。提出对此算法的进一步优化策 略 ,有效地降低了其搜索次数 。最后与传统算法进行了比较 ,试验结果表明该算法是快速和高效的 。 关键词 :连通区域 ;标记 ;线标记 ;区域增长 中图分类号 : TP391; TP301 文献标识码 : A
1. 1 算法描述 当连通区域形状不规则时 ,传统的像素标记法以及线标
记法执行效率严重下降 ,算法的大部分时间浪费在对冲突标 记的处理上 (见图 1) 。
图 1 标记冲突的情形 而区域增长法当图像中的连通区域的面积较大时 ,需要 对每个目标像素点进行 8邻域的判断 ,效率也极大下降 。本 文提出的新算法不受连通区域的形状和面积因素的影响 ,很 好地克服了以上算法的缺点 。
如图 2所示 ,假设当前处理的目标段为目标段 ⑤,目标段 ⑤覆盖了目标段 ⑦,但是没有覆盖目标段 ⑧。所以在后续的 处理操作中 ,目标段 ⑧需要对上下两行都进行扫描 ,但目标段 ⑦就只需要对下一行进行扫描 。这样根据两个目标段是否覆 盖的准则就可以进一步地减少搜索量 ,从而提高算法效率 。
图中连通区域 2中有 6个目标段 ,在算法优化之前 ,每一 段需要对该段的上下两行进行扫描 ,共需扫描 12 次 ;算法优 化后 ,总共只需扫描 9 次 (目标段 ⑤作为连通区域的起始段 没必要对其上一行进行扫描 ) 。当图像中连通区域的形状比 较规则 ,不同行的目标段上下覆盖时 ,优化后减少的运算量还 是相当可观的 ,大约较优化前减少了 10%左右 。
线标记法 [4 ] 将目标段 (目标物体同一行中两个边界点 像素集合 ,包括边界点 )作为连通体检测的基本单元 ,第一次 扫描时记录冲突的标记并形成等价对 ;第二次扫描时用等价 标记中最小的标号赋予所有等价标号对应的像素点 。
在线标记法的基础上发展起来的算法有基于跑长码的标 记算法 [5 ] 、基于游程的标记算法 [6 ]等 。
第 11期
来自百度文库
高红波等 :一种二值图像连通区域标记的新算法
2 77 7
本算法从上往下 、从左向右对图像进行扫描 ,采用 8邻域 连通 。基本思想如下 :找到连通区域的第一个目标段 (如图 2 目标段 ①,第 1行的第 1列到第 3列 ) ,标记该段并且压入堆 栈 ,作为“区域增长 ”的种子段 。检查当前段的上下两行是否 有重叠并且未标记的目标段 。如果不存在重叠的目标段就把 当前段弹出堆栈 ;如果存在 (目标段 ③,第 2行的第 2列到第 5 列 ) ,标记该段并且压入堆栈 ,作为新的“种子段 ”。后续操作 不断从堆栈中取出种子段 ,重复上述操作直到堆栈为空 (标记 完一个连通区域 ) 。接着搜索图像中下一个未标记的连通区 域 ,重复上述操作直到图像中所有的连通区域标记完毕 。
118
4
1
581
56
32 8 499 51
结论 : 1)图像 1大小为 799 ×599,连通区域比较规则 ,单向反复扫 描法 、两次扫描法 、线标号法以及区域增长法速度都比较快 。 2)图像 2大小为 2 048 ×1 024;连通区域形状不太规则 , 单向反复扫描法 、两次扫描法以及线标号法算法效率有一定 程度的下降 ;区域增长法速度较快 。 3)图像 3 大小为 799 ×599,连通区域形状严重不规则 (标记冲突现象非常严重 ) ,单向扫描法 、两次扫描法以及线 标号算法效率严重下降 ;但是区域增长法由于其鲁棒性 ,效率 基本不受影响 。 4)图像 4 大小为 800 ×600,图中只有一个目标物体 (大 小为 750 ×650的矩形 ) ,此时单向反复扫描法 、两次扫描法以 及线标号法都比较快 ,但是区域增长法对每个目标像素点都 要进行 8邻域的判断 ,效率严重下降 。如果当图像中连通区 域比较大时 (如卫星遥感图像 ) ,区域增长法就不能满足实时 性的要求 。 从以上结论可以看出 ,线标记法以连通区域的目标段作 为检测单元 ,当连通区域比较规则时 ,速度较快 ;区域增长
图 2 线标记法示意图 (图中有 10个目标段 ,分别以 ①~⑩表示 ) 算法的实现过程用伪代码描述如下 : Fo r each seg∈Obj if L ( seg) =U push_stack ( seg) ; L ←L + 1; W h ile stack is not emp ty seg←pop. stack () ; for each segNew←N ( seg) if L ( segNew) = U push_stack ( segNew) ; else pop _stack () ; 为了不破坏原图像 ,同时为了避免当目标像素位于图像
由于采用的是 8邻域连通 ,所以本行目标段 ( Xs1 , Xe1 ) 和 上下两行目标段 ( Xs2 , Xe2 ) 重叠的准则是 : Xs1 - 1 ≤ Xe2 并且 Xe1 + 1 ≥ Xs2。
图 2中第一个连通区域的目标段入栈先后顺序为目标段 ①→目标段 ③→目标段 ②→目标段 ④;出栈顺序正好相反 。
2 试验结果分析
为了评价本文算法及其改进算法的效率 ,我们设计了传 统的单向反复扫描法 、两次扫描法 、线扫描法以及区域增长法 做对比试验 。本文用大量的二值图像对 5种算法进行了测试 比较 ,测试结果表明本文算法的平均效率远远优于其他四种 算法 。我们给出了 4 种具有典型意义的二值图像的测试结 果 ,如 表 1 所示 。所 有 算 法 均 运 行 在 P4 /2. 0 GHz/512 MB DDR的 PC环境中 。
New connected com ponen t labeling a lgor ithm for b inary image
GAO Hong2bo, WANG W ei2xing (S chool of E lectron ic Eng ineering, U n iversity of E lectron ic S cience & Technology of Ch ina,
假设当前 行 某 个 目 标 段 (记 目 标 段 1) 左 右 两 端 点 为
( Xs1 , Xe1 ) ,上一行或者下一行的某个目标段 (记目标段 2) 左 右两端点为 ( Xs2 , Xe2 ) ,目标段 1覆盖目标段 2的准则是 : Xs1 ≤ Xs2 并且 Xe1 ≥ Xe2。如果目标段 1覆盖了目标段 2,这样在后续 的处理操作中 ,目标段 2只需要对其上一行 (此时目标段 2位 于目标段 1的上一行 ) 或者下一行 (此时目标段 2位于目标段 1的下一行 ) 进行扫描判断 ,从而避免了重复操作 。
收稿日期 : 2007 - 05 - 24;修回日期 : 2007 - 07 - 23。 作者简介 :高红波 (1982 - ) ,男 ,四川成都人 ,硕士研究生 ,主要研究方向 :图像处理 、模式识别 ; 王卫星 ( 1959 - ) ,男 ,湖南邵阳人 ,教授 、 博士生导师 ,主要研究方向 :计算机视觉 、模式识别 、图像处理 。
区域增长法 [7 ] 依次扫描二值图像中的每个像素点 ,当 找到某个未标记的目标像素时 ,将其压入堆栈并从该点开始 反复标记其邻域 ,直到堆栈为空 。8邻域连通准则下 ,区域增 长的扫描次数可以由 8次降到平均 4次 [8 ] 。
此外还有基于四叉树 [9 ]的表示以及用于特殊体系的计 算机的并行标记算法 [10 ]等 。
第 27卷第 11 2007年 11月
期
计算机应用 Computer App lications
Vol. 27 No. 11 Nov. 2007
文章编号 : 1001 - 9081 (2007) 11 - 2776 - 02
一种二值图像连通区域标记的新算法
高红波 ,王卫星 (电子科技大学 电子工程学院 ,成都 610054)
Chengdu S ichuan 610054, Ch ina)
Abstract: A new algorithm based on line2labeling and region2grow ing was p roposed for binary connected component labeling. A ll the connected components were labeled w ith one pass, and had no label collisions. The algorithm was independent of the shapes of the connected regions. Then the new algorithm was op tim ized and the search time was reduced. The comparative experiments with traditional algorithm s show that this new method is more efficient and effective.
1 本文算法
的边界时出现对内存的非法操作 ,申请一个比原始图像尺寸 上 、下 、左 、右各大一个像素的临时图像 ;由于元素的删除和增 加操作始终在数据结构的顶部进行 ,所以我们采用堆栈作为 存放目标段的数据结构 。在上述伪代码中 , Obj表示二值图 像中的目标物体 , seg表示目标段 , L 表示段的标记值 , U 表示 未标记的目标段集 , stack表示存放目标段的堆栈 , push_ stack 和 pop_stack分别表示入栈和出栈 。 1. 2 算法优化
到目前为止 ,图像的标记算法有很多种 ,这些方法大致可 以分为以下 3类 :
像素标记法 根据标记过程中对图像扫描次数的不同可 以分为 :两次扫描法 [1 ] 、单向反复扫描法 [2 ]以及双向反复扫 描法 [3 ] 。两次扫描法第一次扫描时记录冲突的标记并形成 等价对 (存储在特殊的数据结构中 ) ,第二次扫描时 ,把等价 标记中最小的标记赋予所有等价标记对应的像素点 。单向反 复扫描法 ,反复扫描图像 ,并在同一连通区域内传播最小标 号 ,直到没有标号变化为止 。双向反复扫描法 ,正向和反向反 复扫描图像 ,并在邻域内传播标号 ,直到没有标号变化为止 。
本算法综合了线标记法和区域增长法的优点 , 把连通区 域的目标段作为区域增长的“种子段 ”, 充分利用区域的邻域 信息 ,对图像只需要进行一次扫描就可以标记出所有连通区 域 。但是由于每个目标段都需要对上下两行进行扫描判断 (有些判断必定是重复操作 ) , 为了进一步提高算法效率 , 本 文提出优化策略 。
Key words: connected region; labeling; line labeling; region grow ing
0 引言
灰度图像进行阈值分割得到二值图像 (一般背景像素为 255,目标像素为 0) ,为了提取不同区域的特征 ,常常先要对 连通区域进行标记 。连通区域标记是指将图像中符合某种连 通规则 (4邻域连通和 8邻域连通 )的像素用相同的标号表示 出来 。这种方法在工业检测 ,光学字符识别 (Op tical Character Recognition, OCR)等领域有广泛的应用 ,如文本识别的图文 分割 、零件图像提取等 ,是图像处理和目标识别的基础 ,标记 算法的速度直接影响到图像的分析效率 。
表 1 二值图像连通区域的标记算法比较
图 序号
连通 区域 个数
标记时间 /m s 单向反复 两次 线标 区域 扫描法 扫描法 号法 增长法
本文 算法
1
824
885
33
82
486
79
2 3 136 16 872 3 386 1 960 888
217
3 4 074 27 696 33 316 11 335 255
(hongbog_cd@163. com ) 摘 要 :在线标记和区域增长的基础上提出了一种二值图像连通区域标记的快速算法 。该算法 综合了线标记法和区域增长法的优点 ,对图像进行一次扫描就可以标记所有连通区域 ,避免了重复标 记问题 ;同时该算法不受标记的区域形状影响 ,具有良好的鲁棒性 。提出对此算法的进一步优化策 略 ,有效地降低了其搜索次数 。最后与传统算法进行了比较 ,试验结果表明该算法是快速和高效的 。 关键词 :连通区域 ;标记 ;线标记 ;区域增长 中图分类号 : TP391; TP301 文献标识码 : A
1. 1 算法描述 当连通区域形状不规则时 ,传统的像素标记法以及线标
记法执行效率严重下降 ,算法的大部分时间浪费在对冲突标 记的处理上 (见图 1) 。
图 1 标记冲突的情形 而区域增长法当图像中的连通区域的面积较大时 ,需要 对每个目标像素点进行 8邻域的判断 ,效率也极大下降 。本 文提出的新算法不受连通区域的形状和面积因素的影响 ,很 好地克服了以上算法的缺点 。
如图 2所示 ,假设当前处理的目标段为目标段 ⑤,目标段 ⑤覆盖了目标段 ⑦,但是没有覆盖目标段 ⑧。所以在后续的 处理操作中 ,目标段 ⑧需要对上下两行都进行扫描 ,但目标段 ⑦就只需要对下一行进行扫描 。这样根据两个目标段是否覆 盖的准则就可以进一步地减少搜索量 ,从而提高算法效率 。
图中连通区域 2中有 6个目标段 ,在算法优化之前 ,每一 段需要对该段的上下两行进行扫描 ,共需扫描 12 次 ;算法优 化后 ,总共只需扫描 9 次 (目标段 ⑤作为连通区域的起始段 没必要对其上一行进行扫描 ) 。当图像中连通区域的形状比 较规则 ,不同行的目标段上下覆盖时 ,优化后减少的运算量还 是相当可观的 ,大约较优化前减少了 10%左右 。
线标记法 [4 ] 将目标段 (目标物体同一行中两个边界点 像素集合 ,包括边界点 )作为连通体检测的基本单元 ,第一次 扫描时记录冲突的标记并形成等价对 ;第二次扫描时用等价 标记中最小的标号赋予所有等价标号对应的像素点 。
在线标记法的基础上发展起来的算法有基于跑长码的标 记算法 [5 ] 、基于游程的标记算法 [6 ]等 。
第 11期
来自百度文库
高红波等 :一种二值图像连通区域标记的新算法
2 77 7
本算法从上往下 、从左向右对图像进行扫描 ,采用 8邻域 连通 。基本思想如下 :找到连通区域的第一个目标段 (如图 2 目标段 ①,第 1行的第 1列到第 3列 ) ,标记该段并且压入堆 栈 ,作为“区域增长 ”的种子段 。检查当前段的上下两行是否 有重叠并且未标记的目标段 。如果不存在重叠的目标段就把 当前段弹出堆栈 ;如果存在 (目标段 ③,第 2行的第 2列到第 5 列 ) ,标记该段并且压入堆栈 ,作为新的“种子段 ”。后续操作 不断从堆栈中取出种子段 ,重复上述操作直到堆栈为空 (标记 完一个连通区域 ) 。接着搜索图像中下一个未标记的连通区 域 ,重复上述操作直到图像中所有的连通区域标记完毕 。
118
4
1
581
56
32 8 499 51
结论 : 1)图像 1大小为 799 ×599,连通区域比较规则 ,单向反复扫 描法 、两次扫描法 、线标号法以及区域增长法速度都比较快 。 2)图像 2大小为 2 048 ×1 024;连通区域形状不太规则 , 单向反复扫描法 、两次扫描法以及线标号法算法效率有一定 程度的下降 ;区域增长法速度较快 。 3)图像 3 大小为 799 ×599,连通区域形状严重不规则 (标记冲突现象非常严重 ) ,单向扫描法 、两次扫描法以及线 标号算法效率严重下降 ;但是区域增长法由于其鲁棒性 ,效率 基本不受影响 。 4)图像 4 大小为 800 ×600,图中只有一个目标物体 (大 小为 750 ×650的矩形 ) ,此时单向反复扫描法 、两次扫描法以 及线标号法都比较快 ,但是区域增长法对每个目标像素点都 要进行 8邻域的判断 ,效率严重下降 。如果当图像中连通区 域比较大时 (如卫星遥感图像 ) ,区域增长法就不能满足实时 性的要求 。 从以上结论可以看出 ,线标记法以连通区域的目标段作 为检测单元 ,当连通区域比较规则时 ,速度较快 ;区域增长
图 2 线标记法示意图 (图中有 10个目标段 ,分别以 ①~⑩表示 ) 算法的实现过程用伪代码描述如下 : Fo r each seg∈Obj if L ( seg) =U push_stack ( seg) ; L ←L + 1; W h ile stack is not emp ty seg←pop. stack () ; for each segNew←N ( seg) if L ( segNew) = U push_stack ( segNew) ; else pop _stack () ; 为了不破坏原图像 ,同时为了避免当目标像素位于图像
由于采用的是 8邻域连通 ,所以本行目标段 ( Xs1 , Xe1 ) 和 上下两行目标段 ( Xs2 , Xe2 ) 重叠的准则是 : Xs1 - 1 ≤ Xe2 并且 Xe1 + 1 ≥ Xs2。
图 2中第一个连通区域的目标段入栈先后顺序为目标段 ①→目标段 ③→目标段 ②→目标段 ④;出栈顺序正好相反 。
2 试验结果分析
为了评价本文算法及其改进算法的效率 ,我们设计了传 统的单向反复扫描法 、两次扫描法 、线扫描法以及区域增长法 做对比试验 。本文用大量的二值图像对 5种算法进行了测试 比较 ,测试结果表明本文算法的平均效率远远优于其他四种 算法 。我们给出了 4 种具有典型意义的二值图像的测试结 果 ,如 表 1 所示 。所 有 算 法 均 运 行 在 P4 /2. 0 GHz/512 MB DDR的 PC环境中 。
New connected com ponen t labeling a lgor ithm for b inary image
GAO Hong2bo, WANG W ei2xing (S chool of E lectron ic Eng ineering, U n iversity of E lectron ic S cience & Technology of Ch ina,
假设当前 行 某 个 目 标 段 (记 目 标 段 1) 左 右 两 端 点 为
( Xs1 , Xe1 ) ,上一行或者下一行的某个目标段 (记目标段 2) 左 右两端点为 ( Xs2 , Xe2 ) ,目标段 1覆盖目标段 2的准则是 : Xs1 ≤ Xs2 并且 Xe1 ≥ Xe2。如果目标段 1覆盖了目标段 2,这样在后续 的处理操作中 ,目标段 2只需要对其上一行 (此时目标段 2位 于目标段 1的上一行 ) 或者下一行 (此时目标段 2位于目标段 1的下一行 ) 进行扫描判断 ,从而避免了重复操作 。
收稿日期 : 2007 - 05 - 24;修回日期 : 2007 - 07 - 23。 作者简介 :高红波 (1982 - ) ,男 ,四川成都人 ,硕士研究生 ,主要研究方向 :图像处理 、模式识别 ; 王卫星 ( 1959 - ) ,男 ,湖南邵阳人 ,教授 、 博士生导师 ,主要研究方向 :计算机视觉 、模式识别 、图像处理 。
区域增长法 [7 ] 依次扫描二值图像中的每个像素点 ,当 找到某个未标记的目标像素时 ,将其压入堆栈并从该点开始 反复标记其邻域 ,直到堆栈为空 。8邻域连通准则下 ,区域增 长的扫描次数可以由 8次降到平均 4次 [8 ] 。
此外还有基于四叉树 [9 ]的表示以及用于特殊体系的计 算机的并行标记算法 [10 ]等 。
第 27卷第 11 2007年 11月
期
计算机应用 Computer App lications
Vol. 27 No. 11 Nov. 2007
文章编号 : 1001 - 9081 (2007) 11 - 2776 - 02
一种二值图像连通区域标记的新算法
高红波 ,王卫星 (电子科技大学 电子工程学院 ,成都 610054)
Chengdu S ichuan 610054, Ch ina)
Abstract: A new algorithm based on line2labeling and region2grow ing was p roposed for binary connected component labeling. A ll the connected components were labeled w ith one pass, and had no label collisions. The algorithm was independent of the shapes of the connected regions. Then the new algorithm was op tim ized and the search time was reduced. The comparative experiments with traditional algorithm s show that this new method is more efficient and effective.