发明内容
本发明的主要目的在于解决现有边缘提取方法提取的图像边缘不够准确,难以用于对图像进行边缘增强的技术问题。
本发明第一方面提供了一种基于Canny算法的边缘增强方法,所述边缘增强方法包括:
获取原图像;
使用Canny算法对所述原图像进行边缘检测;
在确定边缘像素点之前,获取用于确定边缘像素点的阈值经验值以及将所述原图像输入到预先训练好的Enet网络中获取用于确定边缘像素点的阈值参考值;
为所述阈值经验值和所述阈值参考值分配权重系数并计算得到阈值修正值;
以所述阈值修正值作为高阈值,并基于所述高阈值按预设比例计算得到低阈值;
使用双阈值算法检测和连接图像边缘,对所述原图像中的边缘进行增强。
在本发明一种可选的实施方式中,所述使用Canny算法对所述原图像进行边缘检测包括:
对所述原图像进行高斯滤波处理;
对高斯处理后的所述原图像进行求导和梯度计算;
以及对获得梯度幅值进行非极大值抑制处理。
在本发明一种可选的实施方式中,所述将所述原图像输入到预先训练好的Enet网络中获取用于确定边缘像素点的阈值参考值包括:
使用Enet网络对所述原图像进行分割,提取出图像中的边缘特征;
获取所述边缘特征中各像素点的梯度幅值,并以所述梯度幅值作为所述阈值参考值。
在本发明一种可选的实施方式中,所述将所述原图像输入到预先训练好的Enet网络中获取用于确定边缘像素点的阈值参考值之前包括:
预先构造用于提取图像边缘特征的Enet网络;
向所述Enet网络中输入具有不同目标类型的训练图片对Enet网络进行训练,以使所述Enet网络满足不同类型目标轮廓的识别。
在本发明一种可选的实施方式中,所述阈值修正值Rxy=α*R1+(1-α)*RP xy,其中,R1为阈值经验值,RP xy为阈值参考值,α大于零且小于等于1,x、y为像素点在图像矩阵中的坐标。
在本发明一种可选的实施方式中,所述低阈值TL=K*TH,其中,TH为高阈值,K大于零小于1。
在本发明一种可选的实施方式中,所述使用双阈值算法检测和连接图像边缘,对所述原图像中的边缘进行增强包括:
如果像素点的梯度值高于所述高阈值,则标记所述像素点为强边缘像素点;
如果像素点的梯度值低于所述高阈值且高于所述低阈值,则标记所述像素点为弱边缘像素点;
如果像素点的梯度值低于所述低阈值,则舍去;
连接图像边缘时,先连接所述强边缘像素点,再连接所述弱边缘像素点。
本发明第二方面提供了一种图像边缘增强装置,所述图像边缘增强装置包括:
获取模块,用于获取原图像;
边缘检测模块,用于使用Canny算法对所述原图像进行边缘检测;
阈值获取模块,用于在确定边缘像素点之前,获取用于确定边缘像素点的阈值经验值以及将所述原图像输入到预先训练好的Enet网络中获取用于确定边缘像素点的阈值参考值;
阈值修正模块,用于为所述阈值经验值和所述阈值参考值分配权重系数并计算得到阈值修正值;
双阈值确定模块,用于以所述阈值修正值作为高阈值,并基于所述高阈值按预设比例计算得到低阈值;
边缘增强模块,用于使用双阈值算法检测和连接图像边缘,对所述原图像中的边缘进行增强。
本发明第三方面提供了一种图像边缘增强设备,所述图像边缘增强设备包括:存储器和至少一个处理器,所述存储器中存储有指令,所述存储器和所述至少一个处理器通过线路互连;
所述至少一个处理器调用所述存储器中的所述指令,以使得所述图像边缘增强设备执行如上述任一项所述的基于Canny算法的边缘增强方法。
本发明第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述任一项所述的基于Canny算法的边缘增强方法。
有益效果:本发明提供了一种基于Canny算法的边缘增强方法、装置、设备及存储介质,方法包括:获取原图像;使用Canny算法对原图像进行边缘检测;在确定边缘像素点之前,获取用于确定边缘像素点的阈值经验值以及将原图像输入到预先训练好的Enet网络中获取用于确定边缘像素点的阈值参考值;为阈值经验值和阈值参考值分配权重系数并计算得到阈值修正值;以阈值修正值作为高阈值,并基于高阈值按预设比例计算得到低阈值;使用双阈值算法检测和连接图像边缘,对原图像中的边缘进行增强。本发明的方法结合了神经网络对图像中每个像素点的阈值提出参考值并修正,同时保留了固定阈值的优点,通过调整权重系数可以适应不同类型的图像,检测的精度高,图像增强效果更佳。
具体实施方式
本发明实施例提供了一种基于Canny算法的边缘增强方法、装置、设备及存储介质。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”或“具有”及其任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为便于理解,下面对本发明实施例的具体流程进行描述,请参阅图1,本发明第一方面提供了一种基于Canny算法的边缘增强方法,所述边缘增强方法包括:
S100、获取原图像;
S200、使用Canny算法对所述原图像进行边缘检测;
在本实施例中,本发明的方法主要是基于Canny算法来实现对原图像进行边缘检测,当然本发明的方法也可以用于其他的边缘检测算法;
S300、在确定边缘像素点之前,获取用于确定边缘像素点的阈值经验值以及将所述原图像输入到预先训练好的Enet网络中获取用于确定边缘像素点的阈值参考值;
在本实施例中,本发明方法的发明点在于对Canny算法中选择阈值的方式进行了改进,一方面在对于某一类的目标的边缘进行识别时,即采用了其阈值经验值,又结合了由神经网络给出的参考值,来判断像素点是否为边缘像素点;
S400、为所述阈值经验值和所述阈值参考值分配权重系数并计算得到阈值修正值;
在本实施例中,在具体使用阈值经验值和阈值参考值的过程中,可以为阈值经验值和阈值参考值分配不同的权重系数,即调整两个值的占比来适应不同的应用场景,比如有时对于某一类的图像,使用阈值经验值已经可以获得较好的边缘识别效果,此时,就可以为阈值经验值分配更大的权重系数来获得更好的边缘识别效果;
S500、以所述阈值修正值作为高阈值,并基于所述高阈值按预设比例计算得到低阈值;
在本实施例中,本发明技术方案同样采用双阈值算法来生成图像中的边缘,本发明中的高阈值和低阈值之间是比例关系,高阈值和低阈值主要是为了给出一个合理的边缘区间,避免采用单一阈值导致在一些小目标场景中,生成的边缘过于密集,导致后期边缘增强后的图片难以用于目标识别网络的识别;
S600、使用双阈值算法检测和连接图像边缘,对所述原图像中的边缘进行增强。
具体来说,本发明技术方案提取图像中边缘并增强的主要目的是对图像中的目标进行增强之后,将增强后的图片用于目标识别(比如行人检测),图像中包含的目标可以更加的突出,以此来提高行人检测的效率和准确度。
在本发明一种可选的实施方式中,所述使用Canny算法对所述原图像进行边缘检测包括:
对所述原图像进行高斯滤波处理;
在本实施例中,本发明的方法首先需要对原图像进行高斯滤波,高斯滤波是一种卷积算法,但是需要挑选符合高斯分布的卷积核,由于滤波的结果直观上是模糊的效果,因此也叫高斯模糊,通过选择合适的卷积核,在图像细节进行模糊时,可以更多的保留图像总体的灰度分布特征。
对高斯处理后的所述原图像进行求导和梯度计算;
在本实施例中,图像中的边缘可以指向各个方向,因此Canny算法使用四个算子来检测图像中的水平、垂直和对角边缘,边缘检测的算子(如Roberts,Prewitt,Sobel等)返回水平Gx和垂直Gy方向的一阶导数值,由此便可以确定像素点的梯度G和方向θ。
θ=arctan(Gy/Gx)
其中G为梯度强度,θ表示梯度方向,arctan为反正切函数,以Sobel算子为例说明如何计算梯度强度和方向。
x和y方向的Sobel算子分别为:
其中Sx表示x方向的Sobel算子,用于检测y方向的边缘;Sy表示y方向的Sobel算子,用于检测x方向的边缘(边缘方向和梯度方向垂直)。
若图像中一个3x3的窗口为A,要计算梯度的像素点为e,则和Sobel算子进行卷积之后,像素点e在x和y方向的梯度值分别为:
其中*为卷积符号,sum表示矩阵中所有元素相加求和。根据上述的G和θ公式便可以计算出像素点e的梯度和方向;
以及对获得梯度幅值进行非极大值抑制处理。
在本实施例中,非极大值抑制是一种边缘稀疏技术,非极大值抑制的作用在于“瘦”边,对图像进行梯度计算后,仅仅基于梯度值提取的边缘仍然很模糊,对于标准,对边缘有且应当只有一个准确的响应,而非极大值抑制则可以帮助将局部最大值之外的所有梯度值抑制为0,对梯度图像中每个像素进行非极大值抑制的算法是:将当前像素的梯度强度与沿正负梯度方向上的两个像素进行比较;如果当前像素的梯度强度与另外两个像素相比最大,则该像素点保留为边缘点,否则该像素点将被抑制。
在本发明一种可选的实施方式中,所述将所述原图像输入到预先训练好的Enet网络中获取用于确定边缘像素点的阈值参考值包括:
使用Enet网络对所述原图像进行分割,提取出图像中的边缘特征;
在本实施例中,Enet网络用于原图像的矩阵进行卷积运算,提取轮廓和形态等特征,并根据这些特征获取边缘特征,参见图2,在一种具体的方式中,Enet网络具体包括有四个依次级联的卷积模块,第一个卷积模块主要用于卷积图像的颜色信息,在第一个卷积模块中,输出3*32*H*W的矩阵,第二个卷积模块卷积图像的形状信息,在第二个卷积模块中,输出128*32*H/2*W/2的矩阵,第三个卷积模块主要用于卷积图像的轮廓信息,在第三个卷积模块中,输出128*32*H/2*W/2的矩阵,第四个卷积模块主要用于特征合并以及调整图像的输出尺寸,在第四个卷积模块中,输出32*1*H*W的矩阵,本发明技术方案原图像输入ENet网络后,输出阈值参考值结果是与原图像尺寸相同的矩阵,通道为1,即结果为1*H*W的矩阵。
获取所述边缘特征中各像素点的梯度幅值,并以所述梯度幅值作为所述阈值参考值。
在本实施例中,由于原图像输入ENet网络后输出的阈值参考值结果为与原图像尺寸相同的矩阵,这样就可以实现原图像中的各像素点矩阵对应,从而可以为原图像中每个边缘像素点提供不同的阈值参考值,避免了单一阈值导致的边缘识别不准确。
在本发明一种可选的实施方式中,所述将所述原图像输入到预先训练好的Enet网络中获取用于确定边缘像素点的阈值参考值之前包括:
预先构造用于提取图像边缘特征的Enet网络;
向所述Enet网络中输入具有不同目标类型的训练图片对Enet网络进行训练,以使所述Enet网络满足不同类型目标轮廓的识别。
在本实施例中,Enet网络可以选择现有的Enet网络结构,在使用过程中,只需要将其输出的最后一个卷积模块替换成32*1*H*W的模块,或者是在最后增加一个卷积模块以保证输出的矩阵大小和原图像的尺寸大小相同,向Enet网络中输入具有不同目标类型的训练图片对Enet网络进行训练的目的在于优化模型中的损失函数,使得Enet网络在图片分割时能够更准确的分割出目标的边缘,由于模型训练的数据包括有不同的目标,这样对于任何类型的目标都可以给出合适的阈值参考值。
在本发明一种可选的实施方式中,所述阈值修正值Rxy=α*R1+(1-α)*RP xy,其中,R1为阈值经验值,RP xy为阈值参考值,α大于零且小于等于1,x、y为像素点在图像矩阵中的坐标。在本实施例中,比如,α可以选择0.1、0.3、0.4、0.5、0.6和0.8等,在一种实施例中,为了适用更多的场景中,α选择0.5。
在本发明一种可选的实施方式中,所述低阈值TL=K*TH,其中,TH为高阈值,K大于零小于1。在本实施例中,比如,K可以为0.3、0.5和0.9等,K的取值越小,低阈值越小,需要去除的像素点越少,保留的细节越多,同时,伪边缘也越多,为了兼顾准确性和后续更好的识别出目标的边缘,K取值0.4。
在本发明一种可选的实施方式中,所述使用双阈值算法检测和连接图像边缘,对所述原图像中的边缘进行增强包括:
如果像素点的梯度值高于所述高阈值,则标记所述像素点为强边缘像素点;
如果像素点的梯度值低于所述高阈值且高于所述低阈值,则标记所述像素点为弱边缘像素点;
如果像素点的梯度值低于所述低阈值,则舍去;
连接图像边缘时,先连接所述强边缘像素点,再连接所述弱边缘像素点。
在本实施例中,在进行非极大值抑制之后,剩余的像素可以更准确地表示图像中的实际边缘,然而,仍然存在由于噪声和颜色变化引起的一些边缘像素,为了解决这些杂散响应,必须用弱梯度值过滤边缘像素,并保留具有高梯度值的边缘像素,可以通过选择高低阈值来实现。如果边缘像素的梯度值高于高阈值,则将其标记为强边缘像素;如果边缘像素的梯度值小于高阈值并且大于低阈值,则将其标记为弱边缘像素;如果边缘像素的梯度值小于低阈值,则会被抑制,阈值的选择取决于给定输入图像的内容。
参见图3,本发明第二方面提供了一种图像边缘增强装置,所述图像边缘增强装置包括:
获取模块10,用于获取原图像;
边缘检测模块20,用于使用Canny算法对所述原图像进行边缘检测;
阈值获取模块30,用于在确定边缘像素点之前,获取用于确定边缘像素点的阈值经验值以及将所述原图像输入到预先训练好的Enet网络中获取用于确定边缘像素点的阈值参考值;
阈值修正模块40,用于为所述阈值经验值和所述阈值参考值分配权重系数并计算得到阈值修正值;
双阈值确定模块50,用于以所述阈值修正值作为高阈值,并基于所述高阈值按预设比例计算得到低阈值;
边缘增强模块60,用于使用双阈值算法检测和连接图像边缘,对所述原图像中的边缘进行增强。
图4是本发明实施例提供的一种图像边缘增强设备的结构示意图,该基于图像边缘增强设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器70(central processing units,CPU)(例如,一个或一个以上处理器)和存储器80,一个或一个以上存储应用程序或数据的存储介质90(例如一个或一个以上海量存储设备)。其中,存储器和存储介质可以是短暂存储或持久存储。存储在存储介质的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对图像边缘增强设备中的一系列指令操作。更进一步地,处理器可以设置为与存储介质通信,在图像边缘增强设备上执行存储介质中的一系列指令操作。
图像边缘增强设备还可以包括一个或一个以上电源100,一个或一个以上有线或无线网络接口110,一个或一个以上输入输出接口120,和/或,一个或一个以上操作***,例如Windows Serve,Mac OS X,Unix,Linux,FreeBSD等等。本领域技术人员可以理解,图4示出的图像边缘增强设备结构并不构成对图像边缘增强设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
本发明还提供一种计算机可读存储介质,该计算机可读存储介质可以为非易失性计算机可读存储介质,该计算机可读存储介质也可以为易失性计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在计算机上运行时,使得计算机执行所述的基于Canny算法的边缘增强方法的步骤。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***或装置、单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。