一种链码与图论技术相结合的图像曲线提取方法

文档序号:10726437阅读:226来源:国知局
一种链码与图论技术相结合的图像曲线提取方法
【专利摘要】本发明公开了一种链码与图论技术相结合的图像曲线提取方法。本发明利用链码方式提取线段有序点,然后根据所有线段的端点、不同线段的交点,利用图论技术对所有线段进行重组,最终得到所有连续曲线的有序序列。相交曲线会产生不同路径的闭合和非闭合曲线,这会大大增加提取难度,本发明利用图论技术解决了该相交技术难题,克服了现有方法的不足;同时采用链码方式提取曲线,中间数据存储是采用自己实现的动态数组,从而增加了处理断点连续的能力,达到了很好的效果。
【专利说明】
一种链码与图论技术相结合的图像曲线提取方法
技术领域
[0001]本发明属于计算机视觉领域,涉及到图像中曲线的提取方法,特别涉及到链码与图论技术相结合的图像曲线提取方法。
【背景技术】
[0002]曲线提取是计算机视觉领域的一个基本问题,有着重要的理论意义和广泛的应用价值,可以应用在图像处理中,其中包括一些工业应用中。通过链码方式得到曲线序列已经有过很多的研究,但是对于图像中不同曲线相交的情况,这方面研究甚少。
[0003]目前常用的图像曲线提取方法有基于EM迭代的曲线提取算法,EM算法是机器学习、模式分类领域用于重估特征分布参数的重要方法。该算法主要通过两个步骤来实现,首先是E步骤(Expectat1n,利用现有样本对未知变量分布进行估计),利用两个先验点采用切线导向法预测出下一个目标点。之后是M步骤(Maximum,对位置变量的分布进行最大后验估计),对目标点的坐标进行调整优化,将搜索到的黑游程正中间的点作为最终目标点。还有提取算法是扫描图像曲线轮廓关键点及其提取处理算法,该算法可自动逐行检测扫描行中的黑游程,当相继行中的黑游程满足一定的条件准则时即可取出相应的黑游程边界点,并形成关键点,依据这些关键点,利用B样条曲线理论来拟合曲线,最终即可实现对图像曲线的提取。这两种方法的缺点是搜索过程复杂,计算量大并且计算过程复杂,当交叉曲线过多的时,不利于提取,并且没有进行断点连续处理的能力。
[0004]中国科学院深圳先进技术研究院的专利,申请号为CN2013104444859,“图像特征曲线提取方法及系统”,提出了一种图像特征曲线提取方法,通过近似曲线和调和向量场得到最优的特征曲线。优点是得到的图像特征曲线能够保证光滑和弯曲特征,缺点是会出现失真,不能原原本本还原成原曲线,不适应对大规模曲线相交情况,同时也没有考虑到断点连续问题。

【发明内容】

[0005]为了克服上述现有技术的问题,本发明提供了一种链码与图论技术相结合的图像曲线提取方法。
[0006]本发明提供了一种链码与图论技术相结合的图像曲线提取方法,包括:
[0007]步骤100,利用MATLAB工具库对图像进行预处理,得到单一像素宽度的二值图。
[0008]步骤200,对步骤100所得的二值图进行扫描,并对扫描后所得图像上每个灰度值非O的像素点进行处理,得到端点数组D1、交点数组Jl和结果图,具体过程如下:步骤201,如果灰度值非O的像素点周围的8邻域中没有灰度值为非O的像素点,则该像素点为孤立的噪声点,让其灰度值为O去除噪声点。步骤202,如果灰度值非O的像素点周围的8邻域内只有一个灰度值为255的像素点,则该像素点为曲线的端点,将这些端点保存到端点数组Dl中。步骤203,如果灰度值非O的像素点周围的8邻域中灰度值为255的像素点的数目大于等于3,则该像素点为曲线相交处的交点,将这些交点保存到交点数组JI中;去除曲线中这些交点,得到结果图。
[0009]步骤300,处理步骤200所得结果图,得到端点数组D2,并提取连接端点的曲线段,具体过程如下:步骤301,扫描步骤200所得的结果图,得到所有端点,将这些端点保存到端点数组D2中。步骤302,对于步骤200所得结果图,利用步骤301所得端点数组D2以及8邻域链码方式,即8邻域顺时针搜索,根据端点搜索以及曲线中点的连通关系将所有连接端点的曲线段序列有序化提取出来,这些曲线段都是非闭合曲线。
[0010]步骤400,对步骤203所得交点数组Jl进行分类,得到交点数组J2;提取连接端点与交点的曲线段,并添加到相应的曲线中,具体过程如下:步骤401,利用8邻域链码方式将交点数组Jl中所有邻域连通的交点归为一类,从而得到若干类交点集合;对于每一类交点集合,统计其中每个交点周围8邻域中点的个数,选择个数最多的交点作为中心交点,将这些中心交点保存到交点数组J2中。步骤402,将步骤401所得的若干类交点集合与交点数组J2进行组合,并通过曲线首末端点的8领域搜索每一类交点集合,在交点集合找到后,提取相应中心交点到曲线端点的曲线段,把曲线段添加到对应的曲线中;组合过程中,通过外部给定设置的半径参数,使得尽可能多的不连接但相互间距离小于直径的端点包含在同一个圆中,圆心坐标为所有端点的中心点,所述中心点为所有端点的横纵坐标的平均值,这种圆心是新产生的交点;更新端点数组D2,即从端点数组D2中去除这些端点,同时更新交点数组J2,即把这些端点加到交点数组J2中;提取圆心到所有端点的曲线段,并将曲线段添加到相应的曲线中。
[0011 ]步骤500,将步骤400所得的全部曲线转化成图的结构,获取所有顶点之间的路径,具体过程如下:步骤501,将步骤400所得曲线的首末端点转化成图的顶点,曲线转化成图的边,相同端点的不同曲线用不同的边表示,端点和边都用数字进行编号,得到由边和点组成的图;图的顶点编号和图的边编号唯一,两顶点之间有多条边;步骤502,生成一个曲线首末端点到编号的映射,同时生成端点数组D2和交点数组J2到数字编号的映射;步骤503,通过栈实现深度优先遍历函数获取所有顶点之间的路径,闭合曲线是从端点到端点,非闭合曲线是从交点到交点,顺序不同但是边和点相同的路径是同一条路径。
[0012]步骤600,根据步骤501所得图顶点和图边的编号及步骤502所得映射,将步骤503所得全部路径还原成曲线,实现曲线重组,进而得到需要的闭合和非闭合曲线,每一条曲线都是由有序序列点组成,所有曲线放进曲线链表中,输出是曲线结构体链表序列。
[0013]有益效果:本发明利用链码方式提取线段有序点,然后根据所有线段的端点、不同线段的交点,利用图论技术对所有线段进行重组,最终得到所有连续曲线的有序序列;利用图论技术解决了相交曲线会产生不同路径的闭合和非闭合曲线这一技术难题,克服了现有方法的不足。同时采用链码方式提取曲线,中间数据存储是采用自己实现的动态数组,从而增加了处理断点连续的能力,达到了很好的效果。
【附图说明】
[0014]图1是非闭合曲线和闭合曲线相交测试图。
[0015]图2是非闭合曲线和闭合曲线相交测试结果图一。
[0016]图3是非闭合曲线和闭合曲线相交测试结果图二。
[0017]图4是非闭合曲线和闭合曲线相交测试结果图三。
[0018]图5是非闭合曲线和闭合曲线相交测试结果图四。
[0019]图6是非闭合曲线和闭合曲线相交测试结果图五。
[0020]图7是非闭合曲线和闭合曲线相交测试结果图六。
[0021]其中,图1是第一张输入测试图像,经过方法处理得到了3条非闭合曲线和3条闭合曲线。把结果曲线序列输出到图像得到了 6幅结果图像。图2是图1处理后得到第一条非闭合曲线转化成的结果图,图3是图1处理后得到的第二条非闭合曲线转化成的结果图,图4是图1处理后得到的第三条非闭合曲线转化成的结果图,图5是图1处理后得到的第一条闭合曲线转化成的结果图,图6是图1处理后得到的第二条闭合曲线转化成的结果图,图7是图1处理后得到的第三条闭合曲线转化成的结果图。
[0022]图8是闭合曲线相交测试图。
[0023]图9是闭合曲线相交测试结果图一。
[0024]图10是闭合曲线相交测试结果图二。
[0025]图11是闭合曲线相交测试结果图三。
[0026]图12是闭合曲线相交测试结果图四。
[0027]图13是闭合曲线相交测试结果图五。
[0028]图14是闭合曲线相交测试结果图六。
[0029]其中,图8是第二张输入测试图像,经过方法处理得到了6条闭合曲线。把结果曲线序列输出到图像得到了 6幅结果图像。图9是图8处理后得到的第一条闭合曲线转化成的结果图,图10是图8处理后得到的第二条闭合曲线转化成的结果图,图11是图8处理后得到的第三条闭合曲线转化成的结果图,图12是图8处理后得到的第四条闭合曲线转化成的结果图,图13是图8处理后得到的第五条闭合曲线转化成的结果图,图14是图8处理后得到的第六条闭合曲线转化成的结果图。
[0030]图15是带断点测试图。
[0031]图16是带断点测试结果图一。
[0032]图17是带断点测试结果图二。
[0033]图18是带断点测试结果图三。
[0034]图19是带断点测试结果图四。
[0035]图20是带断点测试结果图五。
[0036]图21是带断点测试结果图六。
[0037]其中,图15是第三张输入测试图像,经过方法处理并且进行了断点连接,同样得到3条非闭合曲线和3条闭合曲线。把结果曲线序列输出到图像得到了 6幅结果图像。图16是图15处理后得到第一条非闭合曲线转化成的结果图,图17是图15处理后得到的第二条非闭合曲线转化成的结果图,图18是图15处理后得到的第三条非闭合曲线转化成的结果图,图19是图15处理后得到的第一条闭合曲线转化成的结果图,图20是图15处理后得到的第二条闭合曲线转化成的结果图,图21是图15处理后得到的第三条闭合曲线转化成的结果图。
【具体实施方式】
[0038]为使本发明解决的技术问题、采用的技术方案和达到的技术效果更加清楚,下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部内容。
[0039]请参照图1至图7,图8至图14,图15至图21本实施例的链码与图论技术相结合的图像曲线提取方法,包括以下步骤:
[0040]步骤1:利用MATLAB工具库对图1进行预处理,得到单一像素宽度的二值图,具体过程如下:
[0041 ]步骤1-1,利用MATLAB工具库里的rgb2gray函数将图1转化为灰度图。
[0042]步骤1-2,利用MATLAB工具库里的im2bw函数对步骤1-1所得灰度图进行二值化处理生成二值图。
[0043]步骤1-3,利用MATLAB工具库里的bwmorph函数对步骤1-2所得二值图进行细化处理,得到单一像素宽度的二值图。
[0044]步骤2:对步骤1-3所得的二值图进行扫描,并对扫描后所得图像上每个灰度值非O的像素点进行处理,得到端点数组D1、交点数组Jl和结果图,具体过程如下:
[0045]步骤2-1,如果灰度值非O的像素点周围的8邻域中没有灰度值为非O的像素点,则该像素点为孤立的噪声点,操作是让其灰度值为O来去除噪声点。
[0046]步骤2-2,如果灰度值非O的像素点周围的8邻域内只有一个灰度值为255的像素点,则该像素点为曲线的端点,操作是将这些端点保存到端点数组Dl中。
[0047]步骤2-3,如果灰度值非O的像素点周围的8邻域中灰度值为255的像素点的数目大于等于3,则该像素点为曲线相交处的点,操作是将这些交点保存到交点数组Jl中,并且去除曲线中这种点。在实际图像中,对于每两条曲线相交处,得到的可能不止一个点,而是包括很多点。即对于每个相交处,都会产生一些符合要求的点集,需要把这些点都存储到交点数组Jl中,并且去除曲线中的这些点,得到结果图。
[0048]步骤3:处理步骤2所得结果图,得到端点数组D2,并提取连接端点的曲线段,具体过程如下:
[0049]步骤3-1,扫描步骤2所得的结果图,得到所有端点,将这些端点保存到端点数组D2中。这些端点不仅包含了第一次扫描得到的端点也包含了原相交曲线去除交点后新产生的端点。
[0050]步骤3-2,对于步骤2所得结果图,利用步骤3-1所得端点数组D2以及8邻域链码方式(即8邻域顺时针搜索),根据端点搜索以及曲线中点的连通关系将所有连接端点的曲线段序列有序化提取出来。这些曲线段都是非闭合曲线。
[0051]步骤4:对步骤2-3所得交点数组Jl进行分类,得到交点数组J2;提取连接端点与交点的曲线段,并添加到相应的曲线中,具体过程如下:
[0052]步骤4-1,利用8邻域链码方式将交点数组Jl中所有邻域连通的点归为一类,从而得到若干类交点集合;对于每一类交点集合,统计其中每个点周围8邻域中点的个数,选择个数最多的点作为中心交点,将这些中心交点保存到交点数组J2中。分类后交点集合的个数即为交点数组J 2中点的个数。
[0053]步骤4-2,将步骤4-1所得的若干类交点集合与交点数组J2进行组合,并通过曲线首末端点的8领域搜索每一类交点集合,在交点集合找到后,提取相应中心交点到曲线端点的曲线段,把曲线段添加到对应的曲线中;组合过程中,同时需要考虑断点连续的问题,通过外部给定设置的半径参数,使得尽可能多的不连接但相互间距离小于直径的端点包含在同一个圆中,圆心坐标为所有端点的中心点(所有端点的横纵坐标的平均值),这种圆心是新产生的交点。更新端点数组D2即从端点数组D2中去除这些端点,同时更新交点数组J2即把这些端点加到交点数组J2中。提取圆心到所有端点的曲线段,并将曲线段添加到相应的曲线中。
[0054]步骤5:将步骤4所得的全部曲线转化成图的结构,通过算法获取所有顶点之间的路径,具体过程如下:
[0055]步骤5-1,将步骤4所得曲线的首末端点转化成图的顶点,曲线转化成图的边,相同端点的不同曲线用不同的边表示,端点和边都用数字进行编号,得到由边和点组成的图。图的顶点编号和图的边编号都是唯一的,两顶点之间会有多条边。
[0056]步骤5-2,生成一个曲线首末端点到编号的映射,同时生成端点数组D2和交点数组J2到数字编号的映射。
[0057]步骤5-3,通过栈实现深度优先遍历函数获取所有顶点之间的路径。由于存在闭合曲线和非闭合曲线,两种曲线对应的路径不一样,闭合曲线是从端点到端点,非闭合曲线是从交点到交点,因此获取时需要实现不同的深度优先遍历函数,并且认为顺序不同但是边和点相同的路径是同一条路径。所以获取闭合曲线时还需要判断两条路径是不是同一条。
[0058]步骤6:根据步骤5-1所得图顶点和图边的编号及步骤5-2所得映射,将步骤5-3所得全部路径(由数字编号序列组成)还原成曲线从而实现曲线重组,进而得到需要的闭合和非闭合曲线。每一条曲线都是由有序序列点组成,所有曲线放进曲线链表中,输出是曲线结构体链表序列。将结果曲线序列转化为图像得到了 6幅结果图像,如图2—图7。
[0059]最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
【主权项】
1.一种链码与图论技术相结合的图像曲线提取方法,其特征在于,所述链码与图论技术相结合的图像曲线提取方法包括: 步骤10,利用MATLAB工具库对图像进行预处理,得到单一像素宽度的二值图; 步骤200,对步骤100所得的二值图进行扫描,并对扫描后所得图像上每个灰度值非O的像素点进行处理,得到端点数组D1、交点数组Jl和结果图,具体过程如下: 步骤201,如果灰度值非O的像素点周围的8邻域中没有灰度值为非O的像素点,则该像素点为孤立的噪声点,让其灰度值为O去除噪声点; 步骤202,如果灰度值非O的像素点周围的8邻域内只有一个灰度值为255的像素点,则该像素点为曲线的端点,将这些端点保存到端点数组Dl中; 步骤203,如果灰度值非O的像素点周围的8邻域中灰度值为255的像素点的数目大于等于3,则该像素点为曲线相交处的交点,将这些交点保存到交点数组Jl中;去除曲线中这些交点,得到结果图; 步骤300,处理步骤200所得结果图,得到端点数组D2,并提取连接端点的曲线段,具体过程如下: 步骤301,扫描步骤200所得的结果图,得到所有端点,将这些端点保存到端点数组D2中; 步骤302,对于步骤200所得结果图,利用步骤301所得端点数组D2以及8邻域链码方式,即8邻域顺时针搜索,根据端点搜索以及曲线中点的连通关系将所有连接端点的曲线段序列有序化提取出来,这些曲线段都是非闭合曲线; 步骤400,对步骤203所得交点数组Jl进行分类,得到交点数组J2;提取连接端点与交点的曲线段,并添加到相应的曲线中,具体过程如下: 步骤401,利用8邻域链码方式将交点数组Jl中所有邻域连通的交点归为一类,从而得到若干类交点集合;对于每一类交点集合,统计其中每个交点周围8邻域中点的个数,选择个数最多的交点作为中心交点,将这些中心交点保存到交点数组J2中; 步骤402,将步骤401所得的若干类交点集合与交点数组J2进行组合,并通过曲线首末端点的8领域搜索每一类交点集合,在交点集合找到后,提取相应中心交点到曲线端点的曲线段,把曲线段添加到对应的曲线中;组合过程中,通过外部给定设置的半径参数,使得尽可能多的不连接但相互间距离小于直径的端点包含在同一个圆中,圆心坐标为所有端点的中心点,所述中心点为所有端点的横纵坐标的平均值,这种圆心是新产生的交点;更新端点数组D2,即从端点数组D2中去除这些端点,同时更新交点数组J2,即把这些端点加到交点数组J2中;提取圆心到所有端点的曲线段,并将曲线段添加到相应的曲线中; 步骤500,将步骤400所得的全部曲线转化成图的结构,获取所有顶点之间的路径,具体过程如下: 步骤501,将步骤400所得曲线的首末端点转化成图的顶点,曲线转化成图的边,相同端点的不同曲线用不同的边表示,端点和边都用数字进行编号,得到由边和点组成的图;图的顶点编号和图的边编号唯一,两顶点之间有多条边; 步骤502,生成一个曲线首末端点到编号的映射,同时生成端点数组D2和交点数组J2到数字编号的映射; 步骤503,通过栈实现深度优先遍历函数获取所有顶点之间的路径,闭合曲线是从端点到端点,非闭合曲线是从交点到交点,顺序不同但是边和点相同的路径是同一条路径; 步骤600,根据步骤501所得图顶点和图边的编号及步骤502所得映射,将步骤503所得全部路径还原成曲线,实现曲线重组,进而得到需要的闭合和非闭合曲线,每一条曲线都是由有序序列点组成,所有曲线放进曲线链表中,输出是曲线结构体链表序列。
【文档编号】G06T7/00GK106097350SQ201610421447
【公开日】2016年11月9日
【申请日】2016年6月15日 公开号201610421447.5, CN 106097350 A, CN 106097350A, CN 201610421447, CN-A-106097350, CN106097350 A, CN106097350A, CN201610421447, CN201610421447.5
【发明人】贾棋, 徐秀娟, 许真珍, 赵小薇, 王倩, 王宇新, 刘斌
【申请人】大连理工大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1