大幅图像的分块细化加速算法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
e - , 为设置进程的调度程序参数准备数据 , - , 设置调度程序类标识符 , E7E6CIF$E7[7=G / E7=>JD$E7[7=G ;
( ( CHE6CIF[H , ) E7E6CIF$E7[71E6CIF) SgCH[EC= / EC= ; - , 设置实时 优先级 , ( ( CHE6CIF[H , ) E7E6CIF$E7[71E6CIF) SgCH[Hh>F97F / " ; - , 设置时 间片的微秒数 , ( ( CHE6CIF[H , ) E7E6CIF$E7[71E6CIF) SgCH[HhF97F / hU6>HUI; -, 设 置秒数 , -
在边界子块 #344/3/中的 细 化 结 果 一 致 , 故经覆盖不会影响最终 的细化结果。 不受覆盖影响。 %$1 位于其它区域, 覆盖方法能保证边界细化正 所以, 目标 1 与边界平行时, 确。线状目标 1 ( 或其延长线) 与边界倾斜相交时, 线状目标 1 在边界子块 #344/3/中的情况有:
图!
算法流程
#$1 横跨 #344/3/, 根 据 D5&E5/(F 迭 代 算 法 , 1 被切割的两段
线 细 化 后 的 骨 架 易 向 点 8、 8/ 一 定 分 别 位 于 #677/6/ 和 #*77/*/ 中 , , 而 1 包含在边界子块 #344/3/中的线细化后的骨架两 见图 G ( H) 端 的 易 向 点 0、 见 图 G( , 即 有 0、 0/ 一 定 不 位 于 #6**/6/ 中 , 9) 0/ 长 从而保证覆盖分割后的两段骨架能保持连通。 度大于 88/, 可进行类似的分析, !$ 对 于 1 一 端 位 于 #366/3/和 #677/6/中 , 不再赘述。
!+(/&) 分析了这种方法的正确性。 图 C 中, 01 和 0 2 为 相 邻 子 块 , #344/3/ 为 !5(/&) 的 边 界 子 块,修正的方法是将 #344/3/中 的 #6**/6/ 细 化 结 果 覆 盖 相 邻 子 块 ( 的细化结果。 设宽度小于 (/ 线状目标 1 与边 #377/3/和 #477/4/) #"! !""#$!% 计算机工程与应用
图G 线状目标与边界倾斜相交
总之, 边界子块覆盖法消除了线状目标在子块边界细化产 生的骨架歧变, 同时还能有效地解决线状目标交叉问题。
%$%
时间与空间复杂性分析
由 D5&E5/(F 迭代算法可知, 算法的时 间 复 杂 性 取 决 于 图 像
的幅度、 判断是否删除和存取像素的 ; 邻点的速度。内存空间 作者设计了修正这种歧变的方法—— —边界子块覆盖法。 该法根据图像中线状目标可能的最大宽度 (B, 分别在子块边 界区域设定 !+(/&) 和 (&!+(/ 的边界子块, 边界子块被相邻 子块平分, 对边界子块进行细化, 然后将细化结果中间宽度 (/ 的区域覆盖相邻子块的相对应的区域。下面就纵向边界子块 与图像的数据量和数据存储方式相关。 表 # 中描述了三种情况 进行细化处理的时空复杂性。设图像幅度为 % &’ , 9 为迭代次 数, # 为判断单个像素是否删除的平均时间, : 为判断像素是否 删除所需的邻接点数, ; 为存取一个像素所需时间, (&) 为 子 块的幅度, 9/ 为 子 块 的 平 均 迭 代 次 数 , 横 向 和 纵 向 分 割 的 子 块 块数分别为 <、 =, (/ 为 边 界 子 块 的 宽 度 。 可 忽 略 数 组 元 素 的 访 问时间。 采用分块细化算法时间包括边界子块及子块的数据存取 和细化时间。相对于细化处理, 数据的存取时间可忽略。因此, ( 下转 #GC 页)
大幅图像的分块细化加速算法
陈国军 叶飞跃 ( 石油大学计算机系, 山东东营 !’)"(# )
;6<=/0: 34>?@A<=/0B!(%$?>2
摘 要 文章在分析大规模二值图像特点和细化算法基本原理的基础上, 提出一种分块细化大幅图像的算法。 该算法首
先将大幅图像分割成若干子块, 然后分别对各子块进行细化, 最后将子块细化的结果拼接成原图的骨架。算法有效地解 决了大幅图像细化处理的时空矛盾, 提高了大幅图像的细化速度。 关键词 图像处理 二值图像 细化 骨架 文献标识码 C 中图分类号 DE%F#
% ! ./01/234 细化算法
经典迭代算法是由 ./01/234 提出的, 主要思想是循环扫描 图像上的每个像素, 删除满足一定条件的像素( 置 值 为 ") , 直
分块细化
为了节省内存空间, 大幅二值图像采用位存储像素增加了
像素的值需经过以下 访问点像素的时间开销。确定点( #, $) 计算:
识别和理解提供了基础。 细化就是在保持图像中线状目标的拓 扑性质不变的情况下, 提取线状目标的骨架( 线的宽度为 # 的 中轴) 的过程。经典的算法是采用迭代的方法, 逐步删除边缘 点。该算法需多次扫描图像中的各个像素, 判断是否删除时需 读取相邻像素的值进行处理。针对不同的应用, 目前已发表许 多细化算法 化的效果。 在工程应用中, 往往涉及到大幅二值图像的处理, 图像数 据量大, 占用内存空间多。采用数组元素存放图像中一个像素 值( 时, 存取像素值速度快, " 表示白点或背景色, # 表示黑点) 但需要的内存空间大, 如 #"!&",#"!&" 像素的图 像 需 #""- 字 节的内存空间。若采用字节中的一位存放一个像素值, 需 但这时存取图像中的像素值需确定所在 的 字 节 和 #!$’- 字节, 位, 增加了计算量, 影响了整幅图的细化速度。文 *%+中提出了一 种通过图像分割技术划分子块, 实现细化加速的算法。该算法 将图像中单个线状目标分割成子块,建立子块间的拓扑结构, 算法需较多内存空间, 且算法处理线状目标的三分叉和三分叉 以上情况复杂。 文章提出了一种直接对图像逻辑上划分成等长 宽的若干子块,子块的数据采用按数组元素存放一个像素值, 然后分别细化子块, 最后对子块进行拼接, 形成以位存放的 数据。
%$#
子块划分与细化
将大幅图像( 逻辑上划分成满足内存空间要求的等 % &’ )
的子块 *+,, 见图 %, 子块中没有源像素的元素值置 ": 规模( (&))
*+,( !, ") )
! "
-+, ( !.+&(, ".,&))""!.+&("(*#, """.,&)"’ *#
否则
对每一块采用上述算法进行细化。在实际应用中, 可根据 需求设计面向应用要求的子块细化次序。 如在交互矢量化的应 用中, 前台显示当前已细化的子块并进行交互操作, 后台进行 ( , …, 见图 %。 子块的细化。可采用的次序为 *##, *#!、 *!!、 *!#) 对每个子块 ?5@ 使用同 一 个 数 组 空 间 进 行 细 化 , 细化之前 需将子块对应的图像数据赋给数组, 细化后将结果保存到细化 数据缓冲区里。 由于细化前后的数据采用按位存储, 因此, 取图 像数据和写细化结果需确定字节和位。
划分子块 ! 子块细化 ! 子块修正 ! 子块拼接
界平行时, 线状目标 1 在边界子块 #344/3/中的情况有:
ห้องสมุดไป่ตู้
&$1 位于边界子块中的区域 #6**/6/内,子块 #344/3/进行细化 得到 1 的骨架,然后用细化结果中的 #6**/6/覆盖相邻子块的细 化结果, 从而在边界处可得到 1 的骨架。 或 #477/4/ ) 内, 或 02 ) 中细化结果与 !$1 位 于 #377/3/( 1 在 01 (
9#:""7"!7"&7"("% 9!:%&8# 中至少有一个像素值为 # 9%:"( ( ""( ") ) 9&:"!8# 或 %+!8# ( %+! 的含义是当 "!8" 时 " 的联结数) 9’:"&8# 或 %+&8# ( %+& 的含义是当 "&8" 时 " 的联结数)
该算法实质是不断剥去线状目标边缘上的像素, 是否删除 像素决定于邻域像素的结构, 因而大幅图像的规模和数据存储 格式影响细化的速度, 反映到算法时间效率即是迭代次数和访 前者与线状目标的最大宽度有关, 后者与 问 5 邻域点的时间, 图像数据在内存中的表示有关。
#
问题的提出
细化是二值图像处理中一个很重要的技术,为图像分析、
时, 建立以 " 到没有像素删除为止。方法是在扫描像素 "( #, $) 为中心的 %,% 窗口。称 " 周围的 5 个像素为 " 的 5 邻域( 见图 。""、 #) "#… ") 称为 " 的 5 邻点。点 " 是否可删除依赖于 " 的 5 邻域中像素的分布。 定义联结数为点 " 的 5 邻域中互相分离的 联结成分的个数, 即
!<$%-#4%: T? 24/Q =I2/30> , CM24JIQ HIJHJQ> = 24/??/?@ =0@JI/24< KJI = 0=I@>6Q3=0> /<=@> 24IJM@4 QMU1/P/1/?@ /<=@>$C2 K/IQ2, C 0=I@>6Q3=0> /<=@> /Q 1/P/1>1 /?2J H=I2Q, =?1 H=I2Q =I> 24/??>1 I>QH>32/P>0R , K/?=00R , 24> 24/??>1 H=I2Q =I> AJ/?2>1 2J@>24>I =?1 KJI< 24> /<=@>VQ QW>0>2J?$D4/Q =0@JI/24< >KK>32/P>0R QJ0P>Q 3J?2I=1/32/J? U>2X>>? QH=3> =?1 2/<> =UJM2 24/?Y ?/?@ /<=@> =?1 QH>>1Q 24/??/?@ /<=@>$ =1;>,-?$: /<=@> HIJ3>QQ/?@ , U/?=IR /<=@> , 24/??/?@ , QW>0>2J?
=J ( F9H[CH ( @A[2@3Y, @A[A\]P^) _/ <‘QQP<< ) a EC=>HJ ( bTB@:3:c: 896CHK96H EH8C96G 76> >DH CU> => @PBZ
; A3(P EC=DC=HLd>b )
; 返回 S# , C9HUC> ( S# ) - , 函数调用出错,
*#, !, %+
%&’( %(6%(%)%") 7! ( %()%*%*7#%*7!) ( 8" , !, &
其中当 "*8# 时 %(8" , 否则 %(8# 。
!% !! !# !& ! !" !’ !( !)
, 这些改进算法减少了细化的时间或提高了细
图#
像素的 5 邻域
扫描时, 删除同时满足以下条件的像素:
%$!
子块边界修正
由于按固定大小和方式划分子块, 无疑破坏了原图中线状
图C
纵向边界子块
目标的连通性与一致性, 从而引起子块边界细化后线状目标骨 架的歧变。如粗线被切分在相邻子块里时, 分别会在各个子块 中进行细化, 细化的结果在子块合并时发生变化, 如图 A 所示, 虚线为子块间的边界, 白线为细化后的骨架。对线状目标平行 且被边界切分成两部分时, 将会在子块中分别生成骨架, 在拼 接时, 会形成两条线, 破坏了线的一致性。 而当线状目标与边界 线倾斜相交时, 子块细化后, 骨架与边界线的交点发生偏离, 骨 架发生断裂, 破坏了线的连通性。
作者简介: 陈国军, 讲师, 主要研究方向为图形图像处理及虚拟现实技术。叶飞跃, 教授, 研究方向为工程及网络数据库。
计算机工程与应用 !""#$!% #"#
所在字节: &’( ( !, ") )( #*# ) + ,-./0120345,06!77% ( ,-./018 20345,0 为每行字节数) 所在的位: 95/)!:; 值 $( ) !, ") )( &’( ( !, ") 77( ;*95/) < "=#> 另外, 大幅图像中粗线状目标较少、 较短时, 会影响整个算 法的迭代次数。 为此, 采用分块细化算法, 将图像逻辑上划分为 等大小的子块, 每块子块用数组元素存放点像素, 大大减少访 同时还将粗线状目标尽可能划分到少 问 ; 邻域点的时间开销, 数子块中, 降低了不含粗线的子块迭代次数。 算法流程如图 ! 。
文章编号 #""!65%%#6( !""# ) !%6"#"#6"!
! "#$% &’())()* !+*,-(%’. /,- # 0#-*1234#+1 5.#*1
6’1) 78,98) :1 "1(;81
( G>H=I2<>?2 JK LJ<HM2>I N3/>?3> , O?/P>IQ/2R SK E>2IJ0>M<, GJ?@R/?@ !’)"(# )