一种图像中断裂曲线闭合方法与流程

文档序号:12671202阅读:461来源:国知局
一种图像中断裂曲线闭合方法与流程

本发明涉及图像处理和计算机视觉技术领域,具体是为一种对图像中断裂的曲线进行闭合的图像中断裂曲线闭合方法。



背景技术:

随着计算机视觉领域的不断发展,目前在图像理解和智能识别跟踪等图像处理分析中,经常需要得到有效的物体外边缘轮廓。在通过传统的边缘检测方法检测出来的图像中,经常会出现因漏检而断裂的图像边缘,因而要想办法对这些断裂的边缘进行闭合,得到完整的物体外轮廓边缘。

当前有许多用于图像中断裂曲线闭合的方法,其中与本发明较接近的技术方案为:文献(张麟瑞,贾玉林,程科。简单图像闭合外边缘轮廓提取。红外与激光工程,2006,35(3):367-370)提出一种模仿流水特性的外边界闭合算法,该方法流水特性认为如果曲线段不闭合并且缺口较大,就会全部被侵蚀掉,所以这种方法只能使缺口比较小的曲线段进行比较准确的闭合,如果缺口较大不但不能闭合,反而将整个曲线段去除了;文献(黄超。基于块边缘模式的闭合边界提取算法。重庆职业技术学院学报,2006,15(6):145-148)提出一种从DCT域提取的闭合边界的算法,该算法主要是从DCT域中根据每个块边缘的模式利用块边缘来构建的图像边缘,在构建图像边缘的过程中,从一个块边缘找到下一个最优块边缘进行连接是使用了最佳优先搜索算法,其主要利用完美形态法则的接近、连续性,、凸性等属性,从其基本思路中可以看出这种得到闭合边界的算法主要适用于图像中有很多小的块边缘,而对于那些图像中的物体边缘只是缺一个小口子的情况并不适用;文献(冯子亮,王翠芹,施关民。一种基于主动生长的边缘连接算法。计算机应用研究,2009,26(10):3954-3956)提出了一种基于主动生长的边缘连接闭合算法,该算法是先检测出图中边缘端点的位置和方向,再在端点处进行主动边缘生长并通过退化操作实现边缘的正确连接,这种方法虽然可以使有较大间隔的边缘也实现闭合,但是由于边缘的生长是基于自身的方向的,如果图中杂线较多,即使使用了退化操作,依然会使得闭合后的图像边缘非常混乱;发明专利(钮圣虓,陈更生。申请号:201110243717.5,名称:由断点出发可并行实现的边缘连接算法。)提出了一种根据断点位置和断点所在线段的延长线方向信息来选择与该断点连接的可连接边缘点,首先检测出图像中的断点并且标记,由断点开始沿断点所在边缘线逆向追踪一定范围内的边缘点并且做好标记,从断点处展开一个边长自适应的搜索框,在外边框位置搜索其他边缘上可连接边缘点,没有搜索到则扩大范围搜索,搜索到以后则开始在边框位置搜索该断点所在边缘上标记的边缘点,没有搜索到则直接连接该断点和之前搜索到的可连接边缘点,搜索到则做该边缘点的中心对称点,然后找到与该中心对称点距离最近的可连接边缘点和该断点进行连接,这种算法在每一个断点连接时都需要大量地搜索边缘点,比较麻烦,而且没有利用好边缘的方向信息,因为与断点所在边缘上的边缘点的中心对称点距离最近的可连接边缘点所在的边缘方向并不一定是断点所在边缘的边缘延长线的方向,所以很有可能选错相对应的可连接边缘点。

综上所述,当前用于图像中断裂曲线闭合的方法存在着如下不足:(1)对缺口比较大的曲线段不能够进行准确闭合;(2)不能够准确找到相对应的断点进行连接,闭合的时候很容易和杂边进行连接。



技术实现要素:

针对图像中曲线边缘存在断裂现象且当前方法难以解决的不足,本发明提出了一种对图像中断裂的曲线进行闭合的图像中断裂曲线闭合方法。

所述的一种图像中断裂曲线闭合方法,其特征在于包括步骤如下:

步骤1:对图像进行二值化,并通过细化,将图像中存在的曲线变成单像素曲线;

步骤2:遍历图像中所有像素点,找到一个曲线的断点p;

步骤3:存储步骤2中找到的断点p的坐标和断点p所在线段的延伸方向,然后进入步骤2循环,直到遍历完图像中所有像素点,则结束循环,进入步骤4,

步骤4:找到步骤3)中符合闭合要求的两个断点,符合闭合要求需要满足以下全部条件:

4.1)两个断点之间的距离平方d小于预先设定的阈值D,距离平方的计算如公式(4)所示:

d=(x1-x2)2+(y1-y2)2 (4)

4.2)两个断点所在线段的延伸方向需要满足以下条件之一:

(4.2.1)direct1=8或者direct2=8

(4.2.2)-6<=direct1-direct2<=-2

(4.2.3)2<=direct1-direct2<=6

4.3)两个断点的坐标值需要满足以下条件之一:

(4.3.1)|x1-x2|<num

(4.3.2)|y1-y2|<num

其中,num为某个小阈值,用于限定两个断点所在线段处于同一直线的某个范围内,x1和x2分别表示两个断点的横坐标,y1和y2分别表示两个断点的纵坐标,direct1和direct2分别为这两个断点对应的曲线段延伸方向;

步骤5:对步骤4中找到的两个断点进行闭合,然后进入步骤4循环,直到闭合了所有可以闭合的断点,则停止循环;闭合的方法是在两个断点之间绘制二次B样条曲线,具体方法为执行以下两个步骤:

步骤5.1:取第一个断点为二次B样条曲线的第一个和第二个控制点point1和point2,第二个断点为二次B样条曲线的第三个控制点point3,根据这三个控制点绘制第一段二次B样条曲线;

步骤5.2:取第一个断点为二次B样条曲线的第一个控制点point1,第二个断点为二次B样条曲线的第二个和第三个控制点point2和point3,根据这三个控制点绘制第二段二次B样条曲线。

所述的一种图像中断裂曲线闭合方法,其特征在于步骤2)中的确定像素点p为曲线的断点需要满足以下条件之一:

(2.1)B(p)=1;

(2.2)B(p)=2并且C2(p)=1;

(2.3)B(p)=3并且点p的8邻域点灰度值要满足以下条件之一:

(2.3.1)p7=1并且p0=1并且p1=1;

(2.3.2)p1=1并且p2=1并且p3=1;

(2.3.3)p3=1并且p4=1并且p5=1;

(2.3.4)p5=1并且p6=1并且p7=1,

其中,B(p)为有序集{p0,p1,p2,p3,p4,p5,p6,p7}中非0元素的数量,p0,p1,p2,p3,p4,p5,p6,p7分别表示点p的8邻域点的灰度值,C2(p)为有序集{p0,p1,p2,p3,p4,p5,p6,p7}中“11”模式的数量,“11”模式指有序集中相邻两个元素为非0、并且该相邻两个元素两边相邻元素都为0的情况,有序集中首尾两个元素也为相邻元素。

所述的一种图像中断裂曲线闭合方法,其特征在于步骤3)中具体判断线段延伸方向的步骤如下:

步骤3.1:判断步骤2中(2.1)、(2.2)两种情况的断点所在线段的延伸方向的具体步骤如下:

步骤3.1.1:存储当前点p到pointList中,其中pointList表示用于存储断点所在曲线上像素点的数组,然后判断当前点p是不是曲线终点,如果是终点则进入步骤3.1.4;如果不是终点则进入步骤3.1.2;判断该点是终点需要满足以下条件之一:

(3.1.1.1)B(p)=0;

(3.1.1.2)B(p)>=2,但以下两种情况除外:若B(p)=2并且C2(p)=1,不能判断为终点,令p1,p3,p5,p7均为0;若B(p)=3并且C3(p)=1,不能判断为终点,令p1,p3,p5,p7均为0;

其中C3(p)为有序集{p0,p1,p2,p3,p4,p5,p6,p7}中“111”模式的数量,“111”模式指有序集中相邻三个元素为非0、并且该相邻三个元素两边相邻元素都为0的情况,有序集中首尾两个元素也为相邻元素;

步骤3.1.2:由当前点p定位到与点p相邻的下一个点,利用当前点p的8邻域点灰度值通过公式(1)和(2)进行处理:

其中x,y分别表示当前点p的横坐标和纵坐标;

步骤3.1.3:记录经过步骤3.1.2处理后的点p的8邻域点的灰度值,即更新p0,p1,p2,p3,p4,p5,p6,p7的值,如果8邻域点中有某个点的灰度值大于0,并且这个点在pointList中已经存在,则令记录该点灰度值的pk等于0,k=0,1,2,…,7,进入步骤3.1.1循环,直到达到预先设定的循环次数,则进入步骤3.1.4;

步骤3.1.4:计算pointList中所有点的平均坐标点,根据该平均坐标点与该线段断点的相对位置根据公式(5)来判断线段的延伸方向,其中ax,ay分别表示平均坐标点的横坐标和纵坐标,bx,by分别表示该线段断点的横坐标和纵坐标,如果该平均坐标点和该线段断点坐标重合,则置该线段的延伸方向为8;

步骤3.2:判断步骤2中(2.3)情况的断点所在线段的延伸方向,可以根据式(3)直接进行判断:

通过使用本发明的方法对图像中断裂曲线进行闭合,可以得到的有益效果如下:图像中曲线或大或小的断裂处都可以进行正确的闭合,并且因为本发明是通过断点之间有选择性地选择连接,可以避免杂边与物体真实边缘的连接,得到完整物体边缘的同时又不会导致边界的杂乱。

附图说明

图1为本发明中像素点p的8邻域示意图;

图2为本发明判断线段延伸方向的关系图;

图3为本发明中三个控制点控制一段二次B样条曲线图;

图4为本发明实施例选取的二值化图像;

图5为本发明实施例选取的细化后的图像;

图6为本发明处理之后的效果图。

具体实施方式

下面结合实施例来详细阐述本发明的断裂曲线闭合方法的具体实施方式。应当理解,此处所描述的具体实施例仅仅用于解释本发明,并不用于限定本发明。

本发明的一种图像中断裂曲线闭合方法,包括如下步骤:

步骤1:对图像进行二值化,并通过细化,将图像中存在的曲线变成单像素曲线,在本实施例中,二值化图如图4所示,细化后的图像如图5所示;

步骤2:遍历图像中像素点,找到一个曲线的断点,确定某一个像素点p为曲线的断点需要满足以下条件之一:

(2.1)B(p)=1;

(2.2)B(p)=2并且C2(p)=1;

(2.3)B(p)=3并且点p的8邻域点灰度值要满足以下条件之一:

(2.3.1)p7=1并且p0=1并且p1=1;

(2.3.2)p1=1并且p2=1并且p3=1;

(2.3.3)p3=1并且p4=1并且p5=1;

(2.3.4)p5=1并且p6=1并且p7=1;

其中,B(p)为有序集{p0,p1,p2,p3,p4,p5,p6,p7}中非0元素的数量,p0,p1,p2,p3,p4,p5,p6,p7分别表示点p的8邻域点的灰度值,C2(p)为有序集{p0,p1,p2,p3,p4,p5,p6,p7}中“11”模式的数量,“11”模式指有序集中相邻两个元素为非0、并且该相邻两个元素两边相邻元素都为0的情况,有序集中首尾两个元素也为相邻元素;

步骤3:存储步骤2中找到的断点p的坐标和断点p所在线段的延伸方向,然后进入步骤2循环,直到遍历完图像中所有像素点,则结束循环,进入步骤4,具体判断线段延伸方向的步骤如下:

步骤3.1:判断步骤2中(2.1)、(2.2)两种情况的断点所在线段的延伸方向的具体步骤如下:

步骤3.1.1:存储当前点p到pointList中,其中pointList表示用于存储断点所在曲线上像素点的数组,然后判断当前点p是不是曲线终点,如果是终点则进入步骤3.1.4;如果不是终点则进入步骤3.1.2;判断该点是终点需要满足以下条件之一:

(3.1.1.1)B(p)=0;

(3.1.1.2)B(p)>=2,但以下两种情况除外:

(3.1.1.2.1)若B(p)=2并且C2(p)=1,不能判断为终点,令p1,p3,p5,p7均为0;

(3.1.1.2.2)若B(p)=3并且C3(p)=1,不能判断为终点,令p1,p3,p5,p7均为0;其中C3(p)为有序集{p0,p1,p2,p3,p4,p5,p6,p7}中“111”模式的数量,“111”模式指有序集中相邻三个元素为非0、并且该相邻三个元素两边相邻元素都为0的情况,有序集中首尾两个元素也为相邻元素;

步骤3.1.2:由当前点p定位到与点p相邻的下一个点,利用当前点p的8邻域点灰度值通过公式(1)和(2)进行处理:

其中x,y分别表示当前点p的横坐标和纵坐标;

步骤3.1.3:记录经过步骤3.1.2处理后的点p的8邻域点的灰度值,即更新p0,p1,p2,p3,p4,p5,p6,p7的值,如果8邻域点中有某个点的灰度值大于0,并且这个点在pointList中已经存在,则令记录该点灰度值的pk(k=0,1,2,…,7)等于0,进入步骤3.1.1循环,直到达到指定的循环次数,则进入步骤3.1.4,这个次数由预先设定;在本实例中这个次数设定为47;

步骤3.1.4:计算pointList中所有点的平均坐标点,根据该平均坐标点与该线段断点的相对位置根据公式(5)来判断线段的延伸方向,其中ax,ay分别表示平均坐标点的横坐标和纵坐标,bx,by分别表示该线段断点的横坐标和纵坐标,具体判断关系图如图2所示,如果该平均坐标点和该线段断点坐标重合,则置该线段的延伸方向为8;

步骤3.2:判断步骤2中(2.3)情况的断点所在线段的延伸方向,可以根据式(3)直接进行判断:

步骤4:找到符合闭合要求的两个断点,符合闭合要求需要满足以下全部条件:

4.1)两个断点之间的距离平方d小于预先设定的阈值D,距离平方的计算如公式(4)所示,阈值D规定了多少距离平方之内的断点可以进行闭合;在本实例中D设置为1000;

d=(x1-x2)2+(y1-y2)2 (4)

4.2)两个断点所在线段的延伸方向需要满足以下条件之一:

(4.2.1)direct1=8或者direct2=8

(4.2.2)-6<=direct1-direct2<=-2

(4.2.3)2<=direct1-direct2<=6

4.3)两个断点的坐标值需要满足以下条件之一:

(4.3.1)|x1-x2|<num

(4.3.2)|y1-y2|<num

其中,num为某个小阈值,用于限定两个断点所在线段处于同一直线的某个范围内,在本实例中num设定为10,x1和x2分别表示两个断点的横坐标,y1和y2分别表示两个断点的纵坐标,direct1和direct2分别为这两个断点对应的曲线段延伸方向;

步骤5:对步骤4中找到的两个断点进行闭合,然后进入步骤4循环,直到闭合了所有可以闭合的断点,则停止循环,闭合的方法是在两个断点之间绘制二次B样条曲线,由第一个控制点point1、第二个控制点point2和第三个控制点point3控制的二次B样条曲线绘制图如图3的曲线所示,具体方法为执行以下两个步骤:

步骤5.1:取第一个断点为二次B样条曲线的第一个和第二个控制点point1和point2,第二个断点为二次B样条曲线的第三个控制点point3,根据这三个控制点绘制第一段二次B样条曲线;

步骤5.2:取第一个断点为二次B样条曲线的第一个控制点point1,第二个断点为二次B样条曲线的第二个和第三个控制点point2和point3,根据这三个控制点绘制第二段二次B样条曲线;

通过以上步骤的处理,可以得到如图6所示的效果图,与图5的比较可以发现,该图像中曲线的断裂处都进行了闭合。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1