一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于分水岭约束和边缘连接的图像分割算法

2022-11-12 11:14:30 来源:中国专利 TAG:


1.本发明属于计算机视觉中的图像分割技术领域,具体涉及一种基于分水岭约束和边缘连接的图像分割算法。


背景技术:

2.图像分割是计算机视觉领域中最基本的问题之一,在图像识别,目标检测,医学诊断,工业质检等众多领域有着广泛的应用。图像分割根据亮度、颜色、空间纹理或者几何形状将图像分割成互不相交,有意义的子区域,分割结果对后续图像处理具有非常大的影响,分割效果好可以使得后续工作顺利进行。
3.目前图像分割主要有基于阈值、边缘、区域、聚类、图论和深度学习的方法。基于阈值的分割方法计算简单,效率较高,但对噪声比较敏感,鲁棒性不高。基于聚类的方法可以得到不错的分割效果,但该方法耗时太长,不适合实时性要求较高的场景。基于图论的方法可以对大多数图像进行分割并取得良好的效果,但是该方法计算量较大,需要交互实现分割。基于边缘的分割方法边缘定位准确,速度快,但该方法不能保证边缘的连续性和封闭性。近些年随着卷积神经网络的发展,推动了图像分割领域的飞速发展,取得了令人满意的效果,但是深度学习需要较大的计算能力和大量的样本训练,所以在某些特定的场景中还需使用传统图像分割算法。
4.为了解决基于边缘分割方法存在的问题。已经有许多方法被提出来解决这个问题。例如,基于边缘连续性的边缘检测算法,采用蚁群算法进行边缘连接;完全基于边缘信息的快速图像分割算法,提出四向扫描区域填充算法从边缘图中完整地提取出有意义的对象;其他算法如hough变换、形态学方法、曲线拟合等。以上算法虽然可以将断裂边缘进行连接,但不能保证得到的边缘是原始图像中真实存在的边缘。
5.在现有的图像分割算法中,分水岭算法对弱边缘具有良好响应并且区域边界属于单像素链。分水岭算法得到的超分割区域边界可以完整地保留原始图像中大多数弱边缘和强边缘信息。


技术实现要素:

6.本发明的目的是克服现有技术的不足,提供一种基于分水岭约束和边缘连接的图像分割算法,它能够快速提取图像中边缘封闭区域,并能够适用于多种环境场景,具有较好的灵活性和移植性,为后续区域合并和图像识别任务提供了特征依据。
7.本发明所提出的技术问题是这样解决的:
8.一种基于分水岭约束和边缘连接的图像分割算法,包括以下步骤:
9.步骤1:获取初始边缘图。将rgb彩色图像转换为灰度图像,并将其进行高斯滤波,使用并行化加速后的边缘检测算法得到初始边缘图;
10.步骤2:获取超分割边缘图。利用梯度幅值图,计算出分水岭算法所需的标记点,将高斯滤波之后的图像作为输入图像,使用基于标记的分水岭算法得到超分割效果图,并将
其转换为单通道得到超分割边缘图;
11.步骤3:确定断裂边缘的搜索初始点。其特征在于将步骤1获得的初始边缘图进行断点检测。若断点间距离小于所设阈值,对其进行距离连接。然后进行伪断点去除操作,重新进行断点检测。利用步骤2获得超分割边缘图,将未处于超分割边缘上的断点根据局部连接的方法更新在超分割边缘上。将所有断点作为边缘搜索的初始点。
12.步骤4:搜索断裂边缘,获取边缘封闭轮廓。将步骤3获取的断点为搜索起始点,将步骤2获取的超分割边缘图作为搜索路径,采用局部梯度最大的方法进行搜索,待所有断点搜索完毕,进行迭代搜索,最终达到终止条件得到完整的边缘轮廓,进而获得边缘分割的效果。
13.进一步,所述步骤1具体包括以下步骤:
14.步骤1.1:将rgb彩色图像转换为灰色图像:
15.步骤1.2:对灰色图像进行高斯滤波:
16.步骤1.3:计算滤波后图像的梯度幅值图和边缘方向图:
17.步骤1.4:根据梯度幅值图和边缘方向图,获取锚点图:
18.步骤1.5:连接锚点,获取初始边缘图。
19.进一步,所述步骤2具体包括以下步骤:
20.步骤2.1:获取分水岭算法所需的标记点:
21.通过利用梯度图g[x,y],将整幅图像的局部最大值点作为标记点。以像素点(xi,yi)为中心,与其八邻域的像素梯度幅值进行比较,若该点的梯度幅值大于其他像素点梯度幅值,则将该点作为标记点。
[0022][0023]
其中,i-》p表示像素点i的八邻域像素点p,(p=1,2,

8)。mark[x,y]表示标记图。
[0024]
步骤2.2:获取超分割边缘图:
[0025]
将高斯滤波后的图像转换为三通道图像作为输入图像,利用步骤2.1得到的标记点,使用分水岭算法得到超分割边缘图,并且转换为单通道图。
[0026]
进一步,所述步骤3具体包括以下步骤:
[0027]
步骤3.1:断点检测:
[0028]
断点检测的主要方法是首先使边缘像素值为255,背景值为0,然后遍历初始边缘图,统计每个像素的八邻域中与边缘相邻的像素个数n,若n≤1,则该像素点为一个断点。
[0029][0030]
其中,n代表与边缘相邻的像素个数,emap[x
i->p
,y
i->p
]为像素点x的像素值,p为八邻域的第p邻域;
[0031]
步骤3.2:断点距离连接:
[0032]
根据步骤3.1得到的断点,设置一个距离阈值,计算两两断点之间的距离,满足阈值之内的断点进行直线连接。
[0033]
d=|x
1-x2| |y
1-y2|
[0034][0035]
其中,d代表两个断点之间的距离,k代表断点距离阈值。
[0036]
步骤3.3:去除伪断点:
[0037]
在确定边缘初始搜索点之前,需要将断点中存在的伪断点进行去除,主要方法是将所有断点位置处的值为0,重新检测边缘图中的断点。这样将会去除掉伪断点,同时将其他位置断点更新为与其相邻的边缘点。
[0038]
emap[xi,yi]=0,(xi,yi)∈bp[(x
b1
,y
b1
),(x
b2
,y
b2
)

(x
bn
,y
bn
)]
[0039]
其中,bp表示断点集合,emap[xi,yi]表示像素点(xi,yi)的边缘像素值;
[0040]
步骤3.4:将所有断点更新到超分割边缘上:
[0041]
主要方法是首先判断当前断点是否处于超分割边缘上,若不在超分割边缘上,以断点为中心的八邻域,先判断与断点相邻边缘点的位置,然后找到与其关于该断点对称的三个像素点,其中梯度最大值点作为新的断点,直到将断点更新到超分割边缘上为止。
[0042]
通过以上步骤,可以得到边缘搜索的初始点位置。
[0043]
进一步,所述步骤4具体包括以下步骤:
[0044]
步骤4.1:在超分割边缘上搜索断裂边缘:
[0045]
若假设第b个断点的边缘方向d[xb,yb]=0(水平方向),即初始搜索路径为水平方向,先判断该断点相邻的边缘像素位于(x
b-1,y
b-1),(x
b-1,yb),(x
b-1,yb 1),找出(xb,y
b-1),(xb 1,y
b-1),(xb 1,yb),(xb 1,yb 1),(xb,yb 1)存在的超分割边缘像素,选择具有最大梯度幅值的邻域像素点,若该像素点不属于边缘像素,则将其加入边缘像素集合,并作为新的搜索起点。若与该断点相邻的边缘像素位于(xb 1,y
b-1),(xb 1,yb),(xb 1,yb 1),则搜索(xb,y
b-1),(x
b-1,y
b-1),(x
b-1,yb),(x
b-1,yb 1),(xb,yb 1),重复上述操作。若当前断点的边缘方向为垂直方向,先判断该断点相邻的边缘像素位于(x
b-1,y
b-1),(xb,y
b-1),(xb 1,y
b-1),找出(x
b-1,yb),(x
b-1,yb 1),(xb,yb 1),(xb 1,yb 1),(xb 1,yb)存在的超分割边缘像素,选择具有最大梯度幅值的邻域像素点作为新的搜索点。若与该断点相邻的边缘像素位于(x
b-1,yb 1),(xb,yb 1),(xb 1,yb 1),则搜索(x
b-1,yb),(x
b-1,y
b-1),(xb,y
b-1),(xb 1,y
b-1),(xb 1,yb),重复上述操作。重复上述操作。从新的搜索点继续进行搜索,直到断点数目保持不变为止。
[0046]
步骤4.2:对新的断点位置进行方向取反:
[0047]
所有断点搜索完毕之后,对生成的边缘图再次进行断点检测,还将存在一部分断点,由于这部分断点受边缘方向约束,采用方向取反操作,重新进行边缘搜索。
[0048]
步骤4.3:重复步骤4.1和步骤4.2,直到断点数目与上一次搜索的断点数目相等则停止搜索,最终得到完整的封闭边缘轮廓。
[0049]
由于采用了上述技术方案,本发明的有益效果如下:
[0050]
1、利用edrawing算法提取出图像中高质量的边缘链条,并对其进行并行化加速,提高了算法的运行效率,同时提供了图像的初始边缘信息。
[0051]
2、利用基于标记的分水岭算法,得到含有弱边缘信息的超分割边缘图,为断裂边缘的搜索提供了搜索路径,保证了边缘搜索的有效性。
[0052]
3、定义断点并提出搜索策略,提出从断点位置进行断裂边缘搜索,将超分割边缘
图作为断裂边缘的路径图,利用边缘部分梯度较高的特点进行边缘搜索,得到封闭的边缘轮廓,进而得到图像分割效果。
附图说明
[0053]
图1为本发明所述算法的流程图;
[0054]
图2为初始边缘检测的效果示意图;
[0055]
图3为超分割边缘的效果示意图;
[0056]
图4为完整边缘的示意图;
[0057]
图5为cuda加速流程图;
[0058]
图6为断点示意图;
[0059]
图7为断点距离连接示意图;
[0060]
图8为伪断点示意图;
[0061]
图9为断点更新在超分割边缘上的示意图;
[0062]
图10为边缘搜索的示意图;
[0063]
图11为建筑场景原图;
[0064]
图12位建筑场景分割示意图;
[0065]
图13为室内场景原图;
[0066]
图14为室内场景分割示意图。
具体实施方式
[0067]
下面根据附图1-14对本发明的具体实施方法进行进一步说明。
[0068]
本实施例提供一种基于分水岭约束和边缘连接的图像分割算法,其流程图如图1所示,首先对图像进行初始边缘检测,得到初步的边缘信息,然后利用分水岭算法得到超分割边缘路径搜索图,最后进行断裂边缘连接得到封闭边缘轮廓,进而得到精确的分割结果,包括以下步骤:
[0069]
步骤1,输入rgb图像,使用edrawing算法得到初始边缘图像。
[0070]
步骤1.1:将输入rgb图像进行灰度化,采用加权平均法,三通道按照不同的权重进行加权平均计算每个像素对应的灰度值。由公式可得每个像素的灰度值gray:
[0071]
gray=r*0.299 g*0.587 b*0.114
[0072]
其中,r、g、b分别代表rgb色彩空间中的红色分量、绿色分量和蓝色分量。
[0073]
遍历所有像素可得到输入rgb图像对应的灰度图。
[0074]
步骤1.2:使用大小为5
×
5,标准差为δ=1的高斯核对灰度图进行滤波平滑处理。
[0075][0076]
gauss[x,y]=gray[x,y]*h[x,y]
[0077]
其中,(x,y)代表像素点,gray[x,y]代表灰度图,h[x,y]代表高斯滤波器,gauss[x,y]表示滤波图。
[0078]
步骤1.3:计算滤波后图像的梯度幅值图和边缘方向图:
[0079]
基于高斯滤波的图像,使用sobel算子分别计算出每个像素的水平梯度、垂直梯度gy
和梯度幅值g。
[0080][0081][0082]
g[x,y]=|g
x
| |gy|
[0083]
其中,g
x
为水平梯度,gy为垂直梯度,遍历图像中所有像素则可获得图像像素梯度幅值图。
[0084]
同时,通过比较每个像素的水平梯度g
x
和垂直梯度gy。若|g
x
|≤|gy|,则认为该像素的边缘方向为水平方向。若|g
x
|>|gy|,则认为该像素点的方向为垂直方向,通过遍历图像中所有像素可获得边缘方向图。
[0085][0086]
其中,d[x,y]代表边缘方向图。
[0087]
步骤1.4:根据梯度幅值图和边缘方向图,获取锚点图:
[0088]
假设当前像素点是水平方向,则比较与之相邻的上下两个像素,如果当前像素点的梯度幅值和相邻的上下两个像素梯度幅值的差大于或等于锚点阈值,则该像素点为锚点。若该像素点是垂直方向,则比较左右两个相邻像素。
[0089][0090]
其中,amap[x,y]代表锚点图,th
anchor
代表锚点阈值。
[0091]
通过遍历整幅图像中所有像素进行上述操作可获取锚点图像。
[0092]
步骤1.5:连接锚点,绘制初始边缘图emap:
[0093]
首先初始化边缘链条集合e={e1,e2,...,em}=0,对任意锚点(xi,yi)的8邻域像素点进行搜索,若当前锚点像素的边缘方向为水平方向,即初始搜索路径为水平方向,则对水平左右6个邻域搜索。首先搜索(x
i-1,y
i-1),(x
i-1,yi)和(x
i-1,yi 1),然后判断g[x
i-1,y
i-1]、g[x
i-1,yi]与g[x
i-1,yi 1]中的最大值,选择其中梯度幅值最大的像素点,若该像素点不在边缘像素集合中,则将其加入边缘像素集合,并将其作为新的搜索点重复进行上述步骤。如果无符合搜索条件的点,则搜索(xi 1,y
i-1),(xi 1,yi)和(xi 1,yi 1),重复上述步骤。若当前锚点像素的边缘方向为垂直方向,即初始搜索路径为垂直方向,则对垂直上下6个邻域搜索。首先搜索(x
i-1,yi 1),(xi,yi 1)和(xi 1,yi 1),然后判断g[x
i-1,yi 1]、g[xi,yi 1]与g[xi 1,yi 1]中的最大值,选择其中梯度幅值最大的像素点,若该像素点不在边缘像素集合中,则将其加入边缘像素集合,并将其作为新的搜索点重复进行上述步骤。如果无符合搜索条件的点,则搜索(x
i-1,y
i-1),(xi,y
i-1)和(xi 1,y
i-1),重复上述步骤。对所有的锚点重复进行上述步骤可获得一系列单像素边缘链条e。即获得了初始边缘图。
[0094]
步骤2:获取超分割边缘图。利用sobel算子得到的梯度幅值图,计算出分水岭算法所需的标记点,将高斯滤波之后的图像作为输入图像,使用基于标记的分水岭算法得到超分割效果图,并将其转换为单通道得到超分割边缘图;
[0095]
步骤2.1:计算分水岭算法所需的标记点:
[0096]
通过利用梯度图g(x,y),将整幅图像的局部最大值点作为标记点。以像素点(x,y)为中心,与其八邻域的像素梯度幅值进行比较,若该点的梯度幅值大于其他像素点梯度幅值,则将该点作为标记点。
[0097][0098]
其中,i-》p表示像素点i的八邻域像素点p,(p=1,2,

8)。mark[x,y]表示标记图。
[0099]
步骤2.2:获取超分割边缘图:
[0100]
将高斯滤波后的图像转换为三通道图像作为输入图像,利用步骤2.1得到的标记点,使用分水岭算法得到超分割边缘图,并将其转换为单通道图。
[0101]
wmap[x,y]=cvtcolor(watershed(gauss[x,y],mark[x,y]),bgr2gray)
[0102]
其中,wmap[x,y]代表超分割边缘图,cvtcolor(f[x,y],bgr2gray)表示将三通道图f[x,y]转换为单通道,watershed()表示分水岭处理。
[0103]
步骤3:确定断裂边缘的搜索初始点。将步骤1获得的初始边缘图进行断点检测。若断点间距离小于所设阈值,对其进行距离连接。然后进行伪断点去除操作,重新进行断点检测。利用步骤2获得超分割边缘图,将未处于超分割边缘上的断点根据局部连接的方法更新在超分割边缘上。将所有断点作为边缘搜索的初始点。
[0104]
步骤3.1:获取初始边缘图中的断点:
[0105]
断点的存在表示边缘存在断裂现象,断点也是断裂边缘搜索断裂边缘的起点。断点检测的主要方法是首先使边缘像素值为255,背景为0,然后遍历初始边缘图,统计每个像素八邻域中与边缘相邻的像素个数n,如果n≤1,则该像素点为一个断点。
[0106][0107]
其中,n代表与边缘相邻的像素个数,emap[x
i->p
,y
i->p
]为像素点x的像素值,p为八邻域的第p邻域。
[0108]
步骤3.2:断点距离连接:
[0109]
对于得到的断点,设置一个距离阈值,计算两两断点之间的距离,满足阈值内的断点进行直线连接。距离阈值设置为4。
[0110]
d=|x
1-x2| |y
1-y2|
[0111][0112]
其中,d代表两个断点之间的距离,k代表断点距离阈值。
[0113]
步骤3.3:去除伪断点:
[0114]
在确定边缘初始搜索点之前,需要将断点中存在的伪断点进行去除,主要方法是将所有断点位置处的值为0,重新检测边缘图中的断点。这样将会去除掉伪断点,同时将其
他位置断点更新为与其相邻的边缘点。
[0115]
emap[xi,yi]=0,(xi,yi)∈bp[(x
b1
,y
b1
),(x
b2
,y
b2
)

(x
bn
,y
bn
)]
[0116]
其中,bp表示断点集合。emap[xi,yi]表示像素点(xi,yi)的边缘像素值。
[0117]
步骤3.4:将所有断点更新到超分割边缘上:
[0118]
为了使初始搜索点沿着超分割边缘进行搜索,需要保证所有断点位置处于超分割边缘上,主要方法是首先判断当前断点是否处于超分割边缘上,若不在超分割边缘上,以断点为中心的八邻域,先判断与断点相邻边缘点的位置,然后找到与其对称的三个像素点中的梯度最大值点,将其更新为新的断点,直到将断点更新到超分割边缘上为止。
[0119]
若假设当前断点为(xb,yb),与其相邻的边缘点为(xb,y
b-1),判断g[x
b-1,yb 1],g[xb,yb 1],g[xb 1,yb 1]的梯度最大值点,将其更新为新的断点;若与断点相邻的边缘点为(xb,yb 1),则判断g[x
b-1,y
b-1],g[xb,y
b-1],g[xb 1,y
b-1];若与断点相邻的边缘点为(x
b-1,y
b-1),则判断g[xb 1,yb],g[xb,yb 1],g[xb 1,yb 1];若与断点相邻的边缘点为(xb 1,yb 1),则判断g[x
b-1,yb],g[x
b-1,y
b-1],g[xb,y
b-1];与断点相邻的边缘点位于(xb 1,yb),(x
b-1,yb),(x
b-1,yb 1),(xb 1,y
b-1),同理。重复上述步骤,直到将断点更新到超分割边缘上为止。
[0120]
通过以上步骤,可以得到边缘搜索的初始点位置。
[0121]
步骤4:搜索断裂边缘,获取边缘封闭轮廓。将步骤3获取的断点为搜索起始点,将步骤2获取的超分割边缘图作为搜索路径,采用局部梯度最大的方法进行搜索,待所有断点搜索完毕,进行迭代搜索,最终达到终止条件得到完整的边缘轮廓,进而获得边缘分割的效果。
[0122]
以断点(xi,yi)为中心,其八邻域作为局部搜索窗口,具体步骤为:
[0123]
步骤4.1:搜索断裂边缘:
[0124]
若假设第b个断点的边缘方向d[xb,yb]=0(水平方向),即初始搜索路径为水平方向,先判断该断点相邻的边缘像素位于(x
b-1,y
b-1),(x
b-1,yb),(x
b-1,yb 1),找出(xb,y
b-1),(xb 1,y
b-1),(xb 1,yb),(xb 1,yb 1),(xb,yb 1)存在的超分割边缘像素,选择具有最大梯度幅值的邻域像素点,若该像素点不属于边缘像素,则将其加入边缘像素集合,并作为新的搜索起点。若与该断点相邻的边缘像素位于(xb 1,y
b-1),(xb 1,yb),(xb 1,yb 1),则搜索(xb,y
b-1),(x
b-1,y
b-1),(x
b-1,yb),(x
b-1,yb 1),(xb,yb 1),重复上述操作。若当前断点的边缘方向为垂直方向,先判断该断点相邻的边缘像素位于(x
b-1,y
b-1),(xb,y
b-1),(xb 1,y
b-1),找出(x
b-1,yb),(x
b-1,yb 1),(xb,yb 1),(xb 1,yb 1),(xb 1,yb)存在的超分割边缘像素,选择具有最大梯度幅值的邻域像素点作为新的搜索点。若与该断点相邻的边缘像素位于(x
b-1,yb 1),(xb,yb 1),(xb 1,yb 1),则搜索(x
b-1,yb),(x
b-1,y
b-1),(xb,y
b-1),(xb 1,y
b-1),(xb 1,yb),重复上述操作。重复上述操作。从新的搜索点继续进行搜索,直到断点数目保持不变为止。
[0125]
步骤4.2:所有断点搜索完毕之后,对生成的边缘图再次进行断点检测,对每个断点位置的边缘方向取反,重新进行新一轮搜索。
[0126]
步骤4.3:重复步骤4.1和步骤4.2,直到断点数目与上一次搜索的断点数目相等时停止搜索,最终得到完整的封闭边缘轮廓。
[0127]
本发明通过提取图像中的边缘信息,找出边缘之间的断裂边缘,从而得到边缘封
闭轮廓,进而得到图像分割效果。主要应用于图像识别,医学图像处理,工业质检领域。应用本发明方法进行分割效果的示意图参见图11到图14。
[0128]
以上所示的实施例仅是本发明的优选实施方式进行描述,并非对本发明的范围进行限定,在不脱离本发明设计精神的前提下,本领域普通技术人员对本发明的技术方案做出的各种变形和改进,均应落入本发明权利要求书确定的保护范围内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献