一种点线检测融合的物体边缘检测方法及***
技术领域
本发明涉及边缘检测技术领域,尤其涉及一种点线检测融合的物体边缘检测方法及***。
背景技术
随着社会的发展与计算机硬件的性能提升,人们青睐于解决如何使用计算机代替人类完成重复性、耗时且枯燥的工作,如目前广泛使用的车牌识别、安全监控***以及要求更高的自动驾驶技术;在计算机视觉领域,许多任务中常会涉及到物体边缘检测算法,车牌的边缘定位,自动驾驶技术中车道线检测以及工业检测中零件的定位等,在复杂情景中,受环境或硬件因素影响,导致物体边缘常出现不闭合情况。
发明内容
本发明的目的在于提供一种点线检测融合的物体边缘检测方法及***,通过在获取图像边缘点的基础上,进一步对图像进行角点检测,同时将满足预设条件的角点纳入到边缘点中,从而使得边缘图像连续。
本发明通过下述技术方案实现:
一种点线检测融合的物体边缘检测方法,包括以下步骤:
构建第一边缘点点集:对输入图像进行边缘检测,以获取多个边缘点,从多个所述边缘点中选择像素梯度大于预设像素梯度的边缘点构建第一边缘点点集;
构建角点点集:对输入图像进行角点检测,以获取多个角点,并用角点的坐标和角点的像素梯度构建角点点集;
构建边缘图:将第一角点加入所述第一边缘点点集,以构建第二边缘点点集,并用所述第二边缘点点集构建边缘图;
其中,所述第一角点为所述角点点集中满足预设条件的角点;所述预设条件为:所述角点与所述第一边缘点的距离在预设距离内,且所述角点与所述第一边缘点在梯度方向的夹角差值小于预设夹角差值。
优选地,构建所述第一边缘点点集包括以下子步骤:
对所述输入图像进行高斯平滑处理;
用CannyLines边缘检测法检测所述输入图像的边缘,以获取所述输入图像多个的边缘点;
获取所述边缘点的像素梯度;
对所述边缘点的像素梯度进行非极大值抑制,以获取第一边缘点;
将所述第一边缘点的像素梯度与预设像素梯度进行比较,选择像素梯度大于所述预设像素梯度的第一边缘点构建所述第一边缘点点集。
优选地,所述预设像素梯度大于所述输入图像像素梯总值的70%。
优选地,构建所述角点点集包括以下子步骤:
对所述输入图像进行高斯滤波处理;
用Harris角点检测法对所述输入图像进行角点检测,以获取所述输入图像多个的角点;
获取所述角点的像素梯度;
对所述角点的像素梯度进行非极大值抑制过滤,以获取第一角点,用所述第一角点的坐标和所述第一角点的像素梯度构建所述角点点集。
优选地,按下式获取所述边缘点或所述角点的像素梯度:
水平方向:
垂直方向:
则:
dx=f(x,y)*Sobelx(x,y)
dy=f(x,y)*Sobely(x,y)
梯度幅值:
M(x,y)=|dx(x,y)|+|dy(x,y)|
梯度方向:
θM=arctan(dy/dx)
其中,f(x,y)表示在像素坐标(x,y)处的像素值大小,Sobelx为水平方向的计算梯度核,Sobely为垂直方向的计算梯度核,M(x,y)为每个像素点处的梯度幅值,θM为每个像素点处的梯度方向,dx为水平方向梯度,dy为为垂直方向梯度。
优选地,构建所述边缘图包括以下子步骤:
获取与所述角点相邻的第二边缘点;其中,所述第二边缘点属于所述第一边缘点点集,所述角点属于所述角点点集;
获取所述第二边缘点与所述角点的第一距离;
若所述第一距离小于所述预设距离,则获取所述角点与所述第二边缘点在梯度方向的夹角差值;
若所述夹角差值小于所述预设夹角差值,则将所述角点加入所述第一边缘点点集,得到所述第二边缘点点集;
对所述第二边缘点点集采用最小二乘线段拟合构建边缘图。
一种点线检测融合的物体边缘检测***,包括边缘点构建模块、角点构建模块以及边缘图构建模块;
所述边缘点构建模块,用于对输入图像进行边缘检测,以获取多个边缘点,从多个所述边缘点中选择像素梯度大于预设像素梯度的边缘点构建第一边缘点点集;
所述角点构建模块,用于对输入图像进行角点检测,以获取多个角点,并用角点的坐标和角点的像素梯度构建角点点集;
所述边缘图构建模块,用于将第一角点加入所述第一边缘点点集,以构建第二边缘点点集,并用所述第二边缘点点集构建边缘图;
其中,所述第一角点为所述角点点集中满足预设条件的角点;所述预设条件为:所述角点与所述第一边缘点的距离在预设距离内,且所述角点与所述第一边缘点在梯度方向的夹角差值小于预设夹角差值。
优选地,所述边缘点构建模块包括以下处理过程:
对所述输入图像进行高斯平滑处理;
用CannyLines边缘检测法检测所述输入图像的边缘,以获取所述输入图像的边缘点;
获取所述边缘点的像素梯度;
对所述边缘点的像素梯度进行非极大值抑制,获取第一边缘点;
将所述第一边缘点的像素梯度与预设像素梯度进行比较,选择像素梯度大于所述预设像素梯度的第一边缘点构建所述第一边缘点点集。
优选地,所述边缘图构建模块包括以下处理过程:
对所述输入图像进行高斯滤波处理;
用Harris角点检测法对所述输入图像进行角点检测,以获取所述输入图像的角点;
获取所述角点的像素梯度;
对所述角点的像素梯度进行非极大值抑制过滤,获取第一角点,用所述第一角点的坐标和所述第一角点的像素梯度构建所述角点点集。
优选地,所述边缘图构建模块包括以下处理过程:
获取与所述角点相邻的第二边缘点;其中,所述第二边缘点属于所述第一边缘点点集,所述角点属于所述角点点集;
获取所述第二边缘点与所述角点的第一距离;
若所述第一距离小于所述预设距离,则获取所述角点与所述第二边缘点在梯度方向的夹角差值;
若所述夹角差值小于所述预设夹角差值,则将所述角点加入所述第一边缘点点集,得到所述第二边缘点点集;
对所述第二边缘点点集采用最小二乘线段拟合构建边缘图。
本发明与现有技术相比,具有如下的优点和有益效果:
通过在获取图像边缘点的基础上,进一步对图像进行角点检测,同时将满足预设条件的角点纳入到边缘点中,从而使得边缘图像连续。
附图说明
此处所说明的附图用来提供对本发明实施例的进一步理解,构成本申请的一部分,并不构成对本发明实施例的限定。在附图中:
图1为本发明的流程框图;
图2为本发明构建边缘图的流程示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施例和附图,对本发明作进一步的详细说明,本发明的示意性实施方式及其说明仅用于解释本发明,并不作为对本发明的限定。
实施例
一种点线检测融合的物体边缘检测方法,如图1所示,包括以下步骤:
获取待检测物体边缘的图像,并对图像进行边缘检测,以获取多个边缘点,并从多个边缘点中选择像素梯度大于预设像素梯度的边缘点构建第一边缘点点集;
对图像进行角点检测,以获取多个角点,并用角点的坐标和角点的像素梯度构建角点点集;
将第一角点加入第一边缘点点集,以构建第二边缘点点集,并用第二边缘点点集构建边缘图;
其中,第一角点为角点点集中满足预设条件的角点;预设条件为:角点与第一边缘点的距离在预设距离内,且角点与第一边缘点在梯度方向的夹角差值小于预设夹角差值。
在传统的物体边缘检测技术中,通常是单纯的依靠点特征或线特征来对物体边缘进行检测,由于单一的检测手段都或多或少的存在不足,因此,都不能很好的达到检测效果。例如:基于梯度的一阶二阶微分算法需要提供一定的阈值判断该点是否属于边缘,由于在不同情境下受光照、温度、采集设备像素或物体轮廓完整性影响,阈值难以兼顾所有轮廓的情况,导致检测结果出现误检或漏检;基于特征点角点检测边缘,在轮廓为曲线情况下边缘定位较差,同时受物体轮廓形状影响,该方法使用容易受到限制;基于无参数的canny算子cannypf检测边缘时,在线段交叉点处存在线段不连续问题,致使线段不闭合。基于此,申请人经长期研究后发现,通过将线特征与点特征结合起来对物体边缘进行检测,可有效规避上述问题。具体地,考虑到基于边缘检测获取图像的边缘点,由于受光照、物体轮廓或者其它外在因素的影响,获取的边缘点图像并不连续,因此在本方案中,通过在获取图像边缘点的基础上,进一步对图像进行角点检测,获取待检测图像的角点,同时将满足预设条件的角点纳入到边缘点中,并采用最小二乘线段对所有的边缘点进行拟合,从而使得边缘图像连续。
其中,在本实施例中,构建第一边缘点点集包括以下子步骤:
对输入图像进行高斯平滑处理,降低干扰;
使用无参数canny算子cannypf检测输入图像的边缘,以获取输入图像的边缘点;
并按下式获取边缘点的像素梯度:
水平方向:
垂直方向:
则:
dx=f(x,y)*Sobelx(x,y)
dy=f(x,y)*Sobely(x,y)
梯度幅值:
M(x,y)=|dx(x,y)|+|dy(x,y)|
梯度方向:
θM=arctan(dy/dx)
其中,f(x,y)表示在像素坐标(x,y)处的像素值大小,Sobelx为水平方向的计算梯度核,Sobely为垂直方向的计算梯度核,M(x,y)为每个像素点处的梯度幅值,θM为每个像素点处的梯度方向,dx为水平方向梯度,dy为为垂直方向梯度。
由于获取的边缘点可能并不是真正的边缘点,因此,在本申请中通过对边缘点的像素梯度进行非极大值抑制,剔除部分非边缘的点,进而留下真正的边缘点(第一边缘点);
高斯滤波和非极大值抑制虽然能很好的抑制噪声的影响,但复杂情景下仍有误检的产生,因此在本申请中,为了进一步的减小误差,加入边缘过滤,以实现抑制微小噪声的干扰。具体地,将第一边缘点的像素梯度与预设像素梯度进行比较,选择像素梯度大于预设像素梯度的第一边缘点构建第一边缘点点集。作为优选地,预设像素梯度大于输入图像像素梯总值的70%。
进一步地,构建角点点集包括以下子步骤:
对图像进行高斯滤波处理,去除图像中的噪声;
用Harris角点检测法对图像进行角点检测,以获取图像的角点;
其中,Harris角点检测数学原理为:
其中w(x,y)是窗口函数,I(x+u,y+v)是平移后的图像灰度,I(x,y)是平移前图像灰度,E(u,v)是将图像窗口平移[u,v]产生的灰度变化;
根据泰勒展开:
f(x+u,y+v)≈f(x,y)+ufx(x,y)+vfy(x,y)
于是对于局部微小的移动量[u,v],E(u,v)表达式可以更新为:
矩阵M表达式为:
上式中w函数表示窗口函数,M矩阵是大小为2*2的偏导数矩阵,通过计算矩阵的两个特征值λ1、λ2对像素点分类:
(1)λ1>>λ2或λ1<<λ2,该像素点位于边缘区域;
(2)λ1、λ2都较大且数值相当,该像素点位角点;
(3)λ1、λ2都很小,该像素点位于像素平坦区域;
根据上述特征构建角点响应函数:
R=detM-k(traceM)2
detM=λ1λ2
traceM=λ1+λ2
其中k是常量,一般取值位0.04~0.06,traceM表示矩阵M主对角线所有元素的和,detM表示矩阵M的行列式。
按下式获取角点的像素梯度;
水平方向:
垂直方向:
则:
dx=f(x,y)*Sobelx(x,y)
dy=f(x,y)*Sobely(x,y)
梯度幅值:
M(x,y)=|dx(x,y)|+|dy(x,y)|
梯度方向:
θM=arctan(dy/dx)
其中,f(x,y)表示在像素坐标(x,y)处的像素值大小,Sobelx为水平方向的计算梯度核,Sobely为垂直方向的计算梯度核,M(x,y)为每个像素点处的梯度幅值,θM为每个像素点处的梯度方向。
同样,由Harris角点检测法获取的角点可能并不是真正的角点,因此,在本实施例中同样对角点的像素梯度进行非极大值抑制过滤,剔除部分非角点的点,进而留下真正的角点(第一角点),用留下的角点的坐标和角点的像素梯度构建角点点集。
进一步地,在本实施例中,如图2所示,为了使得角点能够将边缘图像的不连续出连接上,同时又需要使得连接处的误差尽可能小,因此需要判断角点是否位于当前边缘上。具体地,包括以下子步骤:
从第一边缘点点集中选取与角点相邻的第二边缘点;其中,角点属于角点点集;
计算角点与相邻第二边缘点之间的第一距离;
若第一距离小于预设距离,则获取该角点与该第二边缘点在梯度方向的夹角差值;
若夹角差值小于预设夹角差值,则将该角点加入第一边缘点点集,当所有的角点都与相相邻的第二边缘点计算完毕,则得到第二边缘点点集;
对第二边缘点点集采用最小二乘线段拟合以构建边缘图。
一种点线检测融合的物体边缘检测***,包括边缘点构建模块、角点构建模块以及边缘图构建模块;
边缘点构建模块,用于对输入图像进行边缘检测,以获取多个边缘点,并从多个角点中选择像素梯度大于预设像素梯度的边缘点构建第一边缘点点集;
角点构建模块,用于对输入图像进行角点检测,以获取多个角点,并用多个角点的坐标和角点的像素梯度构建角点点集;
边缘图构建模块,用于将第一角点加入第一边缘点点集,以构建第二边缘点点集,并用第二边缘点点集构建边缘图;
其中,第一角点为角点点集中满足预设条件的角点;预设条件为:角点与第一边缘点的距离在预设距离内,且角点与第一边缘点在梯度方向的夹角差值小于预设夹角差值。
其中,在本实施例中,边缘点构建模块包括以下处理过程:
对输入图像进行高斯平滑处理;
用CannyLines边缘检测法检测输入图像的边缘,以获取输入图像的边缘点;
获取边缘点的像素梯度;
对边缘点的像素梯度进行非极大值抑制,获取第一边缘点;
将第一边缘点的像素梯度与预设像素梯度进行比较,选择像素梯度大于预设像素梯度的第一边缘点构建第一边缘点点集。
边缘图构建模块包括以下处理过程:
对输入图像进行高斯滤波处理;
用Harris角点检测法对输入图像进行角点检测,以获取输入图像的角点;
获取角点的像素梯度;
对角点的像素梯度进行非极大值抑制过滤,获取第一角点,用第一角点的坐标和第一角点的像素梯度构建角点点集。
边缘图构建模块包括以下处理过程:
获取与角点相邻的第二边缘点;其中,第二边缘点属于第一边缘点点集,角点属于角点点集;
获取第二边缘点与角点的第一距离;
若第一距离小于预设距离,则获取角点与第二边缘点在梯度方向的夹角差值;
若夹角差值小于预设夹角差值,则将角点加入第一边缘点点集,得到第二边缘点点集;
对第二边缘点点集采用最小二乘线段拟合构建边缘图。
通过边缘检测获取图像的边缘点,由于受光照、物体轮廓或者其它外在因素的影响,获取的边缘点图像并不连续,因此在本方案中,通过对图像进行角点检测,获取待检测图像的角点,将满足预设条件的角点纳入到边缘点中,并采用最小二乘线段对所有的边缘点进行拟合,从而使得边缘图像连续。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。