二值线形图像移动圆矢量化方法

文档序号:6597510阅读:337来源:国知局
专利名称:二值线形图像移动圆矢量化方法
二值线形图像移动圆矢量化方法
技术领域
本发明属于计算机数字图像处理技术领域,具体是一种二值线形图像的矢量化方法。
背景技术
二值线形图像是工程上常见的图像,如扫面的地形图、林业调查区划线形图等,为 了在地理信息系统等计算机专门软件系统中进一步分析处理,必须进行矢量化。常见的矢 量化方法有1、基于细化的矢量化方法。该类方法的优点是算法简单、比较容易实现,缺点 是丢失了线宽信息、抗噪声能力比较差、不利于人机交互操作。2、基于邻接图的矢量化方 法。该类方法不经细化直接对图形进行识别,抗噪性能明显加强,邻接图结构可节省存储空 间,利用其邻接关系能有效进行线段的特征提取和识别。缺点是难以处理实际图纸中的复 杂情况,这类方法对行程编码扫描方向的依赖性导致斜线矢量化的质量较差。3、正交方向 搜索法。该算法的优点是不经细化,将搜索范围集中于黑像素域,从单像素的判别转为对区 域的搜索。缺点是不适合图像的细线和细微结构的识别处理,特别在线条交叉区域的判断 算法复杂。

发明内容
本发明需要解决的技术问题是针对现有技术中,二值线形图像矢量化方法的上述
不足,提出一个精度高、抗边缘噪声能力强、无需细化、不必遍历所有像素、矢量化过程中自
动测量线宽因而对于线宽差别大的图像有很好的自适应性、具有线宽信息、矢量化过程中
自动识别轮廓、交叉点判别能力强、既适合全图自动操作也适合进行人机交互操作的二值
线形图像移动圆矢量化方法。 解决上述技术问题的技术方案是 (1)用常规方法打开一个二值图像文件; (2)确定矢量化起始点通过鼠标点击图像确定或计算机 自动扫描二值图像确定,若采用后一方法确定,则从图像左上角开始,逐行扫描, 遇到的首个图像像素点作为起始点; (3)通过起始点确定起始圆心a :通过起始点作垂直于横轴的直线,取该直线通过 图像部分的线段中点,过此中点作垂直于纵轴的直线,取纵横两线段中的较短者的中点为 起始圆心,并将纵横两线段中较短的线段长度称为"线段长";
(4)取一大于1的实数K和一大于1的实数入; (5)以线段长的K倍为直径D,以步骤(3)确定的圆心a为圆心画移动圆;画移动 圆时先到圆周坐标查找表中查找直径为D的圆周像素坐标,若查到则将查到的圆周像素坐 标加上移动圆圆心a的像素坐标,得到移动圆的圆周像素坐标;若查不到则用Bresenham算 法生成圆心在原点、直径为D的圆周像素坐标,加上移动圆圆心a的像素坐标,得到移动圆 的圆周像素坐标,同时将直径D和圆心在原点的圆周像素坐标添加到圆周坐标查找表中;
(6)确定前进方向对起始圆,设此圆与图像相交有两个弧段,任取其中一个弧段 所在的方向为前进方向,将另一个方向记录进分叉记录表,记录下起始圆心a的坐标和线 段长,获取前进方向弧段的弦;对非起始圆,则两个弧段中有一个与已矢量化部分相交,另 一个不相交,取不相交弧段所在方向为前进方向; (7)连接心弦线确定弦的中点,记录弦中点坐标作为矢量化的节点,连接圆心与 弦中点,得"心弦线"线段; (8)K值调整与否的确定若心弦线跑出图像,则移动圆太大,縮小K值,令K二 k/ 入,按步骤(5)处理;若图像噪声枝严重,则增大K值,令K二k *入,亦按步骤(5)处理; 无需调整K值的则按下一步骤(9)处理; (9)检查是否有分叉若在前进方向有多个相交弧段,则线形图像分叉,应选择其 中一个为前进方向,其余分叉方向记录进分叉记录表,记录各自的弦长作为线段长和弦中 点作为圆心,待处理; (10)线条是否到头或是否遇到已处理部分的检查若没有到头也没有遇到已处 理部分则按步骤(5)处理,否则按步骤(11)处理; (11)若是线条到头,则按步骤(12)处理,若是遇到已处理部分,则前进方向的最 后一条弦和已处理部分相交于一点,在最后一个移动圆内必有一个分叉点a,找出分叉点 a,连接该分叉点和最后一个弦中点;寻找分叉点的方法是设最后一个移动圆圆心坐标为 (xd, yd),分叉记录表中的圆心坐标为(x, y),满足
min[(x-xd)2+(y-yd)2] 的(x, y)即为所求的分叉点坐标(xa, yj,将分叉点a从分叉记录表中删除,再按 步骤(12)处理; (12)检查分叉记录表是否为空若非空,则在分叉记录表中读取一个分叉点获得 圆心和线段长,并将取中的分叉点在分叉记录表中删除,按步骤(5)处理;否则按下一步骤
(13)处理; (13)用鼠标手工点击图像或计算机自动扫描查找新的起始点; (14)若找到新的起始点,按步骤(5)处理,否则按下一步骤(15)处理; (15)根据由所有弦中点组成的节点进行矢量化,消除冗余节点;算法如下对相
邻三节点ki,kw,ki+2,用Bresenham画线算法画节点kt和节点ki+2之间的连线,若ki+1刚好
在此连线上则删除该节点,否则保留;反复扫描所有节点,直至无节点删除为止; (16)输出结果。 本发明的有益效果在于一、精度高。当线形图像为直线时,移动圆和线形图像相 交弧段的弦和线形图像的中心线垂直,这时矢量化结果严格通过中心线,不存在误差。当线 形图像为非直线时,相交弧段的弦和中心线接近垂直,也具有很高的精度。二、抗边缘噪声 能力强。当移动圆直径适当大,就能避免边缘枝、毛剌的干扰。三、无需细化。矢量化过程 中中心线直接提取,无细化过程,不必遍历所有像素。四、对线宽变化具有自适应性。矢量 化过程中通过测定相交弦的长度自动测量线宽因而对于线宽差别大的图像有很好的自适 应性,同时具有线宽信息。五、自动识别轮廓和分叉点。矢量化过程中通过相交弧段的数量 可以自动识别轮廓和分叉点。六、本方法既适合全图自动操作,也适合人机交互操作。

图1为本方法的流程图。 图2为本方法实施例中矢量化开始时选择起始点示意图。 图3为本方法中通过起始点确定起始圆心的示意图。 图4为本方法中确定线段长、前进方向、弦中点、心弦线示意图。 图5为本方法中心弦线跑出图像落入背景,移动圆直径过大示意图。 图6为本方法中噪声枝存在,增大移动圆直径示意图。 图7为本方法中矢量化前进过程中出现分叉情况示意图。 图8为本方法中一条线矢量化到头的示意图。 图9为本方法中遇到已处理情况示意图。 图10为本方法实施例输出结果。
具体实施方式
下面本发明结合实施例并参照附图作进一步详述 需说明的是,本申请材料中简称二值图像上的线形物体为图像,其他部分为背景, 而整个图像称为二值图像;矢量化过程中的圆称为移动圆;所有长度单位为像素。
本方法的流程参见图l。 步骤l,用常规方法打开一个二值图像文件; 步骤2,确定矢量化起始点按如下两种方法中的一种确定起始点一是通过鼠标 点击确定,图2中A点所示为用鼠标点击图像确定的起始点,选定的起始点尽量靠近图像的 中心线。二是计算机自动扫描二值图像确定一个起始点,从图像左上角开始,逐行扫描,遇 到的首个图像像素点作为起始点。图2中B点所示为计算机自动扫描二值图像确定的一个 起始点,图中左上部直线为扫描路线,都落在背景上,B点为扫描遇到的第一个图像像素;
步骤3,通过起始点确定起始圆心通过起始点作垂直于横轴的直线,取该直线通 过图像部分线段的中点,过此中点作垂直于纵轴的直线,取纵横两线段中的较短者的中点 为起始圆心。如图3中过A点(白色像素)作垂直于横轴的直线,通过图像部分的线段长 为19个像素,过其中点,即从上往下数的第IO个像素(图中交叉处的黑色像素)作垂直于 纵轴的直线,通过图像部分的线段长为12个像素。横向线段(12个像素)比纵向线段(19 个像素)短,所以选择横向线段的中点作为起始圆心a,即从左往右第6或第7个像素作为 起始圆心,图中所示为第6个像素(深灰色像素)。若以B点作为起始点,则起始圆心在像 素b处。本发明将纵横两线段中较短的线段长称为"线段长";
步骤4,取一大于1的实数K和一大于1的实数入; 步骤5,以线段长的K倍为直径D,以步骤3确定的圆心a为圆心画移动圆,见图 4 ;画圆采用Bresenham算法(见孙家广等《计算机图形学》第三版,清华大学出版社,1999 年)。画移动圆时先到圆周坐标查找表中查找直径为D的圆周像素坐标,若查到则将查到的 圆周像素坐标加上移动圆圆心a的像素坐标,得到移动圆的圆周像素坐标;若查不到则用 Bresenham算法生成圆心在原点、直径为D的圆周像素坐标,加上移动圆圆心a的像素坐标, 得到移动圆的圆周像素坐标,同时将直径D和圆心在原点的圆周像素坐标添加到圆周坐标 查找表中;
步骤6,确定前进方向对起始圆,设此圆与图像相交有2个弧段,任取其中一个弧 段所在的方向为前进方向,将另一个方向记录进分叉记录表,即记录起始圆心a的坐标和 线段长。获取前进方向弧段的弦,如图4中的线段CD。对非起始圆,则两个弧段中有一个与 已矢量化部分相交,另一个不相交,取不相交弧段所在方向为前进方向,如图8从A到B所 示; 步骤7,连接心弦线确定线段CD中点,称为弦中点,如图4中的白色像素b。记录 弦中点坐标作为矢量化的节点。连接圆心与弦中点,此线段称为"心弦线",如图4中的ab, a—> b方向为矢量化前进方向; 步骤8,K值调整与否的确定若心弦线跑出图像,如图5所示,则说明移动圆太大, 縮小K值,令K = k/ "转步骤5 ;若图像噪声枝严重,如图6所示,则增大K值,令K = k * 入,转步骤5 ;无需调整K值则转步骤9 ; 步骤9,检查是否有分叉若在前进方向碰到多个相交弧段,则出现了线形图像分 叉的情况,如图7中以A点为圆心的圆,有2个弦中点。此时选择其中一个为前进方向,将 其余的分叉方向记录进分叉记录表,记录各自的弦长作为线段长和弦中点作为圆心,待处 理; 步骤IO,线条是否到头或是否遇到已处理部分的检查若没有到头也没有遇到已 处理部分则转步骤(5),否则转步骤(11); 步骤ll,处理线条到头或遇到已处理部分情况图8所示为线条到头的情形,转步 骤12。如果是碰到已处理部分,如图9所示,从A到B的白色线条是刚矢量化的矢量线条, 前进方向的最后一条弦和已处理部分相交于c点,则在最后一个移动圆内必有一个分叉点 a,找出分叉点a,连接该分叉点和最后一个弦中点d。寻找分叉点的方法设最后一个移动 圆圆心坐标为(Xd,yd),分叉记录表中的圆心坐标为(x,y),满足
min [ (x_xd) 2+ (y-yd) 2] 的(x,y)即为所求的分叉点坐标(xa,ya)。将分叉点a从分叉记录表中删除,转步 骤12 ; 步骤12,检查分叉记录表是否为空若非空,则在分叉记录表中读取一个分叉点
获得圆心和线段长,并将取中的分叉点在分叉记录表中删除,转步骤5 ;否则转步骤13 ; 步骤13,用鼠标手工点击图像或计算机自动扫描查找新的起始点;
步骤14,如找到新的起始点,转步骤5,否则转步骤15 ; 步骤15,根据由所有弦中点组成的节点进行矢量化,消除冗余节点;算法如下对 相邻三节点ki,kw,ki+2,用Bresenham画线算法画节点和节点ki+2之间的连线,若ki+1刚 好在此连线上则删除该节点,否则保留;反复扫描所有节点,直至无节点可以删除;
步骤16,输出结果。其矢量化结果如图10中的深色线条所示。
权利要求
一种二值线形图像移动圆矢量化方法,其特征在于按如下步骤进行(1)用常规方法打开一个二值图像文件;(2)确定矢量化起始点通过鼠标点击图像确定或计算机自动扫描二值图像确定,若采用后一方法确定,则从图像左上角开始,逐行扫描,遇到的首个图像像素点作为起始点;(3)通过起始点确定起始圆心a通过起始点作垂直于横轴的直线,取该直线通过图像部分的线段中点,过此中点作垂直于纵轴的直线,取纵横两线段中的较短者的中点为起始圆心,并将纵横两线段中较短的线段长度称为“线段长”;(4)取一大于1的实数K和一大于1的实数λ;(5)以线段长的K倍为直径D,以步骤(3)确定的圆心a为圆心画移动圆;画移动圆时先到圆周坐标查找表中查找直径为D的圆周像素坐标,若查到则将查到的圆周像素坐标加上移动圆圆心a的像素坐标,得到移动圆的圆周像素坐标;若查不到则用Bresenham算法生成圆心在原点、直径为D的圆周像素坐标,加上移动圆圆心a的像素坐标,得到移动圆的圆周像素坐标,同时将直径D和圆心在原点的圆周像素坐标添加到圆周坐标查找表中;(6)确定前进方向对起始圆,设此圆与图像相交有两个弧段,任取其中一个弧段所在的方向为前进方向,将另一个方向记录进分叉记录表,记录下起始圆心a的坐标和线段长,获取前进方向弧段的弦;对非起始圆,则两个弧段中有一个与已矢量化部分相交,另一个不相交,取不相交弧段所在方向为前进方向;(7)连接心弦线确定弦的中点,记录弦中点坐标作为矢量化的节点,连接圆心与弦中点,得“心弦线”线段;(8)K值调整与否的确定若心弦线跑出图像,则移动圆太大,缩小K值,令K=k/λ,按步骤(5)处理;若图像噪声枝严重,则增大K值,令K=k*λ,亦按步骤(5)处理;无需调整K值的则按下一步骤(9)处理;(9)检查是否有分叉若在前进方向有多个相交弧段,则线形图像分叉,应选择其中一个为前进方向,其余分叉方向记录进分叉记录表,记录各自的弦长作为线段长和弦中点作为圆心,待处理;(10)线条是否到头或是否遇到已处理部分的检查若没有到头也没有遇到已处理部分则按步骤(5)处理,否则按步骤(11)处理;(11)若是线条到头,则按步骤(12)处理,若是遇到已处理部分,则前进方向的最后一条弦和已处理部分相交于一点,在最后一个移动圆内必有一个分叉点a,找出分叉点a,连接该分叉点和最后一个弦中点;寻找分叉点的方法是设最后一个移动圆圆心坐标为(xd,yd),分叉记录表中的圆心坐标为(x,y),满足min[(x-xd)2+(y-yd)2]的(x,y)即为所求的分叉点坐标(xa,ya),将分叉点a从分叉记录表中删除,再按步骤(12)处理;(12)检查分叉记录表是否为空若非空,则在分叉记录表中读取一个分叉点获得圆心和线段长,并将取中的分叉点在分叉记录表中删除,按步骤(5)处理;否则按下一步骤(13)处理;(13)用鼠标手工点击图像或计算机自动扫描查找新的起始点;(14)若找到新的起始点,按步骤(5)处理,否则按下一步骤(15)处理;(15)根据由所有弦中点组成的节点进行矢量化,消除冗余节点;算法如下对相邻三节点ki,ki+1,ki+2,用Bresenham画线算法画节点ki和节点ki+2之间的连线,若ki+1刚好在此连线上则删除该节点,否则保留;反复扫描所有节点,直至无节点删除为止;(16)输出结果。
全文摘要
一种二值线形图像移动圆矢量化方法,属计算机数字图像处理技术领域。在线形物图像上画一个圆,在没有分叉的情况下,圆和图像有两条弧相交。连接相交弧的弦并确定弦的中点。让圆心移动到弦的中点,产生新的圆、弦和弦中点,如此重复,形成一系列的弦中点,这些弦中点的连线就是图像中心线。取圆的直径等于弦长乘上一个常数,圆的大小根据局部性质自动调整,考虑线宽、精度、图像边缘噪声枝等3个因素。如果在前进方向碰到多个相交弧段,则出现了线形图像分叉的情况。此时选择其中一个为前进方向,将其余的分叉方向记录进分叉记录表,待处理。本发明具有精度高、抗噪声能力强、线宽自适应、保留线宽信息、无需细化、交叉点识别能力强等特点。
文档编号G06T9/00GK101794452SQ20101003979
公开日2010年8月4日 申请日期2010年1月18日 优先权日2010年1月18日
发明者葛宏立 申请人:浙江林学院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1