本发明属于计算机视觉和图像处理技术领域,具体涉及一种保留局部边缘方向的图像边缘提取方法的设计。
背景技术:
现有的图像边缘提取方法主要分为两大类:一种是以一阶微分为基础的边缘检测算子,通过计算一阶导数局部最大值来检测图像边缘,如:roberts算子、prewitt算子、sobel算子、canny算子等,另一种是以二阶微分为基础的边缘检测算子,通过寻求二阶导数中的过零点来检测边缘,如:log算子。
现有的图片边缘提取方法都是处理单通道或者灰度图像的,而且在局部处理上都是只计算边缘的大小而忽略了边缘的方向性。
技术实现要素:
本发明的目的是为了解决现有的图片边缘提取方法在提取边缘过程中对局部边缘方向缺失的问题,提出了一种保留局部边缘方向的图像边缘提取方法。
本发明的技术方案为:一种保留局部边缘方向的图像边缘提取方法,包括以下步骤:
s1、读入待处理的三通道rgb图片。
s2、设置边缘提取阈值threshold。
s3、将待处理的三通道rgb图片转化为灰度图片。
s4、根据边缘提取阈值threshold,使用边缘提取算子对灰度图片进行边缘提取,得到边缘图。
步骤s4包括以下分步骤:
s41、将灰度图片划分为多个3*3的像素块。
s42、对于灰度图片中的每个3*3的像素块,将其四个角上的像素值减去2倍阈值threshold后与3*3像素块中间的像素值比较,若差值大于或等于中间像素值,则将3*3像素块的相应位置设置为1,若差值小于中间像素值,则将3*3像素块的相应位置设置为0。
s43、对于灰度图片中的每个3*3的像素块,将其中间像素上下左右的四个像素点的像素值减去阈值threshold后与3*3像素块中间的像素值比较,若差值大于或等于中间像素值,则将3*3像素块的相应位置设置为1,若差值小于中间像素值,则将3*3像素块的相应位置设置为0,得到一个3*3的特征矩阵。
s44、对步骤s43得到的特征矩阵从左到右,从上到下进行2进制编码,得到一个10进制的编码值。
s45、将步骤s44得到的编码值添加进对应3*3像素块的中间像素位置,得到边缘图。
本发明的有益效果是:本发明提供的一种保留局部边缘方向的图像边缘提取方法,通过设定边缘提取阈值threshold,在3*3的局部区域比较阈值后,由位置进行二进制编码,得到一个记录了不同位置比较结果的0-255的数值,这个编码数值就包含了3*3的局部区域中的边缘方向。本发明通过阈值和保留的边缘方向实现了在提取图片边缘的基础上,保留图片边缘的局部方向,使得处理后得到的边缘图保留了更多的局部信息。
附图说明
图1所示为本发明实施例提供的一种保留局部边缘方向的图像边缘提取方法流程图。
图2所示为本发明实施例提供的编码值计算过程示意图。
具体实施方式
现在将参考附图来详细描述本发明的示例性实施方式。应当理解,附图中示出和描述的实施方式仅仅是示例性的,意在阐释本发明的原理和精神,而并非限制本发明的范围。
本发明实施例提供了一种保留局部边缘方向的图像边缘提取方法,如图1所示,包括以下步骤:
s1、读入待处理的三通道rgb图片,得到h*w*3大小的数组数据(h,w分别为图片的高和宽)。
s2、设置边缘提取阈值threshold。
在提取图像边缘前,要对提取的边缘的强度进行初始化,设定边缘提取阈值threshold,以达到提取一定强度边缘的目的。本发明实施例中,边缘提取阈值threshold设置为20。
s3、将待处理的三通道rgb图片转化为灰度图片,得到h*w的灰度图。
将待处理的三通道rgb图片转化为灰度图片的具体方法为本领域公知的常规技术,在此不再赘述。
s4、根据边缘提取阈值threshold,使用边缘提取算子对灰度图片进行边缘提取,得到边缘图。
数字图像中,灰度值变化比较剧烈的地方,就定义为边缘。本发明实施例中,步骤s4包括以下分步骤:
s41、将灰度图片划分为多个3*3的像素块。
s42、对于灰度图片中的每个3*3的像素块,将其四个角上的像素值减去2倍阈值threshold后与3*3像素块中间的像素值比较,若差值大于或等于中间像素值,则将3*3像素块的相应位置设置为1,若差值小于中间像素值,则将3*3像素块的相应位置设置为0。
s43、对于灰度图片中的每个3*3的像素块,将其中间像素上下左右的四个像素点的像素值减去阈值threshold后与3*3像素块中间的像素值比较,若差值大于或等于中间像素值,则将3*3像素块的相应位置设置为1,若差值小于中间像素值,则将3*3像素块的相应位置设置为0,得到一个3*3的特征矩阵。
由于步骤s42~s43未对3*3像素块中间像素值进行阈值比较处理,因此得到的3*3的特征矩阵中间位置没有数值。
s44、对步骤s43得到的特征矩阵从左到右,从上到下进行2进制编码,得到一个10进制的编码值。
由于步骤s43得到的3*3的特征矩阵中间位置没有数值,因此对其进行编码后得到的是一个8位的2进制数值,对其进行2进制编码后得到的10进制的编码值介于[0,255]之间,该编码值中包含了3*3的局部区域中的边缘方向。如图2所示给出了本发明实施例中,当边缘提取阈值threshold设置为20时对一个3*3像素块进行编码值计算的过程及结果,最终得到的编码值为143。
s45、将步骤s44得到的编码值添加进对应3*3像素块的中间像素位置,得到边缘图。
由于本发明实施例中,边缘提取算子使用3*3的矩阵像素块,使得最后得到的边缘图上下左右各少一维像素,最终生成的边缘图大小为(h-2)*(w-2)。由于步骤s44得到的编码值中包含了3*3的局部区域中的边缘方向,因此本发明在提取图片边缘的基础上,保留图片边缘的局部方向,使得处理后得到的边缘图保留了更多的局部信息。
本领域的普通技术人员将会意识到,这里所述的实施例是为了帮助读者理解本发明的原理,应被理解为本发明的保护范围并不局限于这样的特别陈述和实施例。本领域的普通技术人员可以根据本发明公开的这些技术启示做出各种不脱离本发明实质的其它各种具体变形和组合,这些变形和组合仍然在本发明的保护范围内。