数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测

图像锐化处理及边缘检测

  • 一.图像边缘锐化
    • 1.介绍
    • 2.边缘锐化方法
      • 2.1一阶,二阶微分运算
      • 2.2梯度运算
      • 2.3二阶微分-拉普拉斯算子
      • 2.4高频提升滤波器
      • 2.5自适应边界检测
      • 2.6锐化算子总结
  • 二.微分运算和梯度锐化
    • 1.微分运算
      • 1.1单向微分运算
      • 1.2双向微分运算
    • 2.梯度锐化
      • 2.1直接以梯度值代替
      • 2.2辅以门限来判断
      • 2.3给边缘规定一个特定的灰度级
      • 2.3给背景规定灰度级
      • 2.4根据梯度二值化图像
  • 三.边缘检测
    • 1.梯度算子
    • 2.Roberts提出的交叉微分算子--Roberts边缘检测算子
    • 3.Sobel梯度算子--Sobel边缘检测算子
    • 4.Prewitt梯度算子--Prewitt边缘检测算子
    • 5.二阶微分-拉普拉斯算子--高斯-拉普拉斯(LOG)算子
    • 6.Krisch边缘检测
    • 7.锐化算子总结
  • 四.基于MATLAB的图像边缘检测
  • 五.试验-目标物体的轮廓提取

一.图像边缘锐化

1.介绍

  1. 图像边缘锐化处理的目的
缘锐化处理的目的主要是为了增强边界。因为一幅图中,不同内容不同物体的区别是图像的亮度值不同,在边界上反映了很大的变化,所以锐化的目的是突出它的细节,或者增强被模糊了的细节。
有的图像照的细节很模糊,比如很多地方看不清,那么可以增强一下,增强图像的边缘,目的是为了以后进行处理,

在这里插入图片描述

图像锐化主要靠边界的不同,在边界上的不同之处,所以锐化为了从不同求差异,求差异得用剪的方法,这个数和这个数的区别在哪里,用剪。就是用微分运算,在微分运算的基础上做梯度锐化,再做边缘检测。
微分运算是最基本的,介绍微分运算的基本方法。
梯度运算,梯度锐化就是物体的边界很清晰,而且物体内部的数据保留不变,尽量保留原来的一些图像数据,只是在边缘上给它增强,这是锐化。
介绍边缘检测的算子,
这章的目的是为了告诉大家怎样增强边界,怎么提取边界,

我们对物体的识别,要看形状,要看颜色,所以对边界的提取很重要。

数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第1张图片

  1. 常见边缘类型
边缘是有方向性的,一个物体的边缘可能是水平的,也可能是垂直的,只有垂直于边缘上的数据量是变化很大的,和边缘一致的点,边缘上的点,变化是很小的。
这说明,我们不能任意地去找出它的最大变化量,必须沿着垂直边缘的方向上才可以找到最大的变化量。所以,看到边缘是变化很平缓的,垂直于边缘上的这两侧数据量变化很大。
因此,边缘是在局部不连续的图像的特征。这个局部的像素不连续了,不连续就是不一致了,比如说蓝的突然就变白了,这时候就产生边缘了。那么是局部亮度变化最显著的部分,所以边缘就是变化最显著的部分。有灰度值的变化,颜色分量的变化,纹理结构的突变都可以构成边缘的变化。
这一章主要研究灰度值的变化,如果考虑真彩色,那就是颜色分量的变化。
所以我要想找边缘,就要找他的变化量-数据的变化量,在某一个方向上的变化量,这个变化量只能用减法,一提到变化就只能是减法,就是相邻两个像素的差值。

底下为常见的边缘类型:
阶跃性的边缘就是突变,从黑的突然变成白的,反之亦然,像素值的变化率很大,从0变为255,或从最低值变为最高值,
脉冲型的,从0变高,高一会再低,
屋顶型,从黑的渐渐的变到最高,然后从高的再渐渐变到最低。

如果对这3种数据做拆分,就是从从右列减去左列,取某一行来说,
阶跃型:在物体内部,差是0,白的内部差是0,那么只有在边界处,取的最高值,所以它的一阶导数有最大值。对一阶倒数再求导,再求它的变化率,那么二阶导数是过零的,
脉冲型:一阶倒数有一个最高值,还有一个最低值,且也有过0的情况出现。那么2阶倒数有最高值也有最低值。

数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第2张图片
数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第3张图片

在数学上,对于连续函数,连续变化量用微分。在数字图像处理中,它是离散的,每个坐标点是由x,y一个水平一个垂直两个方向构成的,所以离散就用差分表示。
一元函数,它的一阶微分等于它在水平方向的变化量,x代表水平方向,变化量等于右列减去左列,这是一阶微分。
对一阶微分微分,用差分定义,如果右列和左列相同,数值量相同,这个物体在内部,这个值一差分,是很低的数据,如果是在边界的话,一差分就有很高的值。
对一阶微分再求导,对之前的倒数再求导,相当于这里有一撇,

2.边缘锐化方法

2.1一阶,二阶微分运算

数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第4张图片

  1. 单向微分运算
如下:数据是左黑右白
一阶微分求偏移量(微分量),当前像素减去左列。
假设说有一个图像数据,左边很黑,右边很亮,右列减去左列之后的结果如下:
在边界处有一个很大的值,在物体内部的值都很小,所以右列减去左列,如果边界是是垂直方向上的,就是右列减左列。

数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第5张图片

如下:数据是上黑下白
右列减去左列就得不到边界了,右列减去左列所得的值基本都为0或很小,没有最大值。
什么时候取最大值,用下行减上行,所以在上行和下一行的交界处。
所以单向微分的作用是水平方向微分或是对竖直方向微分。
以上是两个方向微分对图像的作用。

以下为微分效果:

纵向微分运算
数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第6张图片
横向微分运算
数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第7张图片

要获得水平方向的边界,就是下一行减去上一行,要得到垂直方向的边界,就是右列减去左列。

如果想同时获得水平方向和垂直方向的边界,我们就要进行双向一次微分,在灰度图上,在纵方向和横方向2个方向同时进行微分,进行完,把纵方向的微分取平方,加上水平方向的微分取平方,所得到的的数据就是双向一次微分。
  1. 双向一次微分运算
    在这里插入图片描述
    数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第8张图片
做双向 一次微分就得到全部的边界。
什么原理:如上图,如果每一点求一下水平方向的偏差,为0.纵向偏差也为0。所以0的平方相加再开平方还是0.因此内部点全部为0.
在任意边界上,如果纵向有偏差,水平方向没有偏差,但是纵向上有一个最大值,水平方向有最大值,把两个最大值累加起来,就使得它在两个方向上都有边界,
  1. 微分运算对图像的作用
    数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第9张图片

2.2梯度运算

  1. 梯度运算
    数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第10张图片
我们在求边缘方向时不知道边缘在什么方向,梯度是一个矢量分别沿x和y进行运算,在x方向求一次微分,在y方向求一次微分,这样就构成了一个矢量,变化率叫做梯度。
我们要把梯度变成一个标量,一个可处理量:把x方向求绝对值,y方向求绝对值,直接得到梯度。或者把两个值取最大值,或者把两个方向平方再开放得到梯度。
最后。第3个方法是数学计算的梯度,在软件上3种方法通用。

之前讲的是水平方向和垂直方向求梯度,下面讲其他。
  1. Robert提出的交叉微分算子
不是在水平或垂直方向,而是在对角线上求梯度,如下图。
将2个梯度取绝对值,或取平方再开方,或取最大值。

数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第11张图片

  1. Sobel算子
如下图,要求z5的梯度:
既有平湖作用,又有差分作用,先平滑再微分。

数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第12张图片

  1. Prewitt算子
    数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第13张图片
  2. 梯度锐化模板
在求梯度时往往用模板的方法,上一章讲了模板进行卷积运算的过程和方法,求梯度时用模板也是非常快速和方便的。
上一章讲模板是为了平滑作用,模板系数都是正值,然后累加求和,取总和的系数分之一。
这一章的模板有正有负,求的是偏差,
  1. 用于边缘增强的梯度法
    数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第14张图片
图像增强,一个求的是边界,物体内部保持不变;一个是只求边界,不要物体内部。这是两个模板的算法。

2.3二阶微分-拉普拉斯算子

  1. 拉普拉斯算子
    数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第15张图片
图像的二次导数表达式,有两个方向,它的梯度等于每个方向的梯度的二次微分。
由水平和垂直两个分量相加,得到下面的公式:
弄明白位置,知道系数,推导出这样一个模板,如下:

数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第16张图片
数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第17张图片

拉普拉斯算子的中间系数值比较大,而且有一个原则,靠近它的是比较大的,这是属于高斯型的。

拉普拉斯算子进行运算的特点:
如下图,

数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第18张图片

拉普拉斯算子的特点是原始图像和拉普拉斯图像叠加到一起。
仅仅求完拉普拉斯变换以后,这个图像非常暗。
差分以后,数值都相同的,都为黑值了,而且2个数相减,整个亮度都降低。
如果既保留它的内部信息,又加强它的边界,往往用下图中的公式,
这个公式是在原图形的基础上加上梯度值,用这个公式计算之后,图像既保留它内部的数据量,而且边界增强。
对中心系数为负的用负号,为正的用加号,如果把这两个叠加到一起,能报出锐化处理效果,又能复原背景信息。如果是不单纯求取边缘,而是加强边界,就让图像加上梯度值就可以。

数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第19张图片

如下为拉普拉斯算子的推导过程:
这个公式是既保留细节又加强边界,在计算时候首先要算出它的梯度来,我们把两个公式合成为一个公式。
最下面的,合成公式得出一个模板:

数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第20张图片

下图为合成公式得出的模板

所以我们对于图像运算,对于一个二维矩阵,求它的变化量,而且还要加强变化量,保持物体内部。用模板卷积运算就可以。而不是带着上面的公式计算,那就很麻烦。
用卷积方法,把模板放在大矩阵中,让模板在图像中逐点漫游,一个像素对着它的中心求出它的卷积和,卷积值,然后再求下一个卷积值,一个像素一个像素地漫游。
那么求的过程是什么?
模板放在图像中,模板大小所对应的像素下面,模板系数值乘以像素值对应累加求和,就得到当前像素的值。
在图像中用卷积运算很快。
在图像处理中一般不采用这个大公式,而是用卷积的方法。

数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第21张图片

这个模板和之前仅有梯度的方法区别在于:
之前仅有梯度的方法:这个公式仅仅得到一个梯度,把这梯度用模板表示出来,卷积以后仅有梯度信息,即边界信息。
这个模板:既有梯度信息,又有图像内部信息,所以模板不同,它的直接效果不同,
  1. 高斯-拉普拉斯算子(LOG)算子
    数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第22张图片
如上图:
高斯-拉普拉斯算子(LOG)算子的矩阵的中心系数很高,24,它是一个5*5模板,离他越近的系数值越大,离他越远的系数值越小,

如下为高斯和的特点:
拉普拉斯算子的中心距离很大,越远与位置加权系数越近。

数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第23张图片

2.4高频提升滤波器

高频提升滤波器就相当于之前的公式。
高频就是边界,相当于边界提升滤波器。
微分可以求信号的变化率,经过把这个高频加强,微分能够求的变化率,把高分加强。

数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第24张图片

下面公式内容:像素乘以一个系数再加上或者减去它的梯度

在这里插入图片描述
线性锐化滤波和高频提升滤波
数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第25张图片

2.5自适应边界检测

数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第26张图片

一个物体有任意方向,水平的,垂直的,45度的,135度的,我们不知道这个物体到底在哪个方向上取得边界。这时可以采用多个边缘检测算子,这个方向上没有,再看一下别的方向有没有,挨个检测。
我们要定义很多方向的求方向边界的这个梯度锐化的模板,所以采用多个边缘检测算子,哪个方向取得最大值,那么人为当前方向上是有边界的。
所以不同的检测算子,采用不同方向。
这里有4个检测算子,那就是4个方向,这样就可以把图像在任何方向自动地计算。找出最大的,就求出当前点的梯度了。

实现步骤
数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第27张图片
Kirsch边缘检测算子

Kirsch边缘检测算子制定了很多方向,然后求各方向的卷积值,梯度值,找出一个最大的作为当前点的梯度,

数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第28张图片

2.6锐化算子总结

要想做一个检测边界,好的检测结果是什么:

数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第29张图片
算子比较
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第30张图片

二.微分运算和梯度锐化

1.微分运算

微分主要是在图像上进行拼插,求变化率。这种偏差,在微分上,基本微分由横向微分,纵向微分,和双向。

数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第31张图片
微分运算作用
数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第32张图片
总结

双向微分可以吧物体的整个的各个方向的梯度都找到,这幅图中可以看到它的灰度,微分之后计算产生的数据量的特点:
微分之后,物体内部都为0,相似区域都为0,有变化的区域就可以认为是边界,但是如果数据变化量很小,也认为是边界,就会产生很多毛刺,所以把边界指定一个阈值,如果边界大于阈值,认为是真正的数据跳跃的边界,我们就可以把边界增强一下,增强就是直接给边界255。
物体内部不想要,小于阈值直接置黑就可以。对于这幅图,把边界再增强。
多以对于这幅图,用纵向或横向微分,它的效果不能把圆的各个方向的边界找到,找全,而数学上推导双向微分能够找全。
但是微分之后图的特点是特别暗。即使有边界,边界的偏差量也很小,那么对这幅图来说,就需要梯度锐化把这个边界给加强,如果直接以梯度值代替,就会很暗很暗,边界也会模糊,但是要给边界规定一个门限,我就找到这个边界,规定一个门限为30。
大于30认为是梯度值。
求出这个梯度之后,直接把梯度给增亮,直接给定一个固定的值,比如这里是白色,背景为黑,  边界为白,直接给它增加一个值,比如加100,或直接给定255。然后根据梯度可以二值化图像。
找到真正的边界后,我把边界置白,把物体置黑,或者在边缘规定的特定的灰度级上,把边界置白,物体保持不变。或者把背景规定一个灰度级,边界给增强。

1.1单向微分运算

只能检测一个方向,水平或垂直

数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第33张图片

  1. 纵向微分运算
    数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第34张图片
    实现步骤
    数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第35张图片
  2. 横向微分运算
    数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第36张图片
    数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第37张图片

1.2双向微分运算

数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第38张图片

同时检测2个方向,水平和垂直
检测,在水平方向取微分,在垂直方向取微分,这是两个矢量,一个水平方向,一个垂直方向。
在数学上对于任意一点,它在任意方向上的梯度等于这个梯度的公式,等于它对梯度方向的倒数,算出来时水平方向的微分乘以方向角cos,加上垂直方向角乘以sin。
梯度要想求得最大值,必须求导,令导数为0,对这个数字取导的话,cos的导数是-sin,sin的导数是cos,等于0的话,可求得在哪个方向上的导数。
在某个方向上的角度方向,有最大值时候,那么这个角度等于arctan在垂直方向的导数,垂直方向的导数除以它在水平方向的微分。
我们把求梯度时候,在数学上求梯度等于这两个方向上的平方再开方,梯度角是这个式子。
如果我们通过双向微分,我们就可以知道,可计算出来它在哪个角度上有最大值,它的最大的梯度是什么。前提是先算每不同方向的梯度,或者是不同方向的微分后,这是双向微分。
  1. 双向一次微分运算
    在这里插入图片描述
    数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第39张图片
    实现步骤
    数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第40张图片

2.梯度锐化

图像平滑使得图像的边界或物体的轮廓变得模糊了。为了减少这种影响,再用一下锐化技术,使得边界再清晰。
平滑能去掉噪声,去完噪声后,导致边界模糊,然后运用锐化技术,再把边界增强,这样一幅图,感官上提高了很多。
梯度锐化就是求出梯度之后,对这幅图怎么办?
1,这个图直接用梯度值来代替,所以就没有物体内部的信息量了。
2,辅以门限来判断。梯度规定一个灰度值,判断它是不是边界。
3,给边缘规定一个特定的灰度级。求出梯度了,把梯度值加的很大。
4,给背景规定一个灰度级,根据梯度来二值化图像。

2.1直接以梯度值代替

数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第41张图片

双方向一次微分,包括水平方向和垂直方向。
梯度算完后,双向微分就能求出最大的梯度值。
如果两个相邻像素值相等,这个值就很小;如果这个梯度值不大,这个值也很小,

2.2辅以门限来判断

数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第42张图片

算完梯度后,这个梯度非常低,有的数与数偏差不大,比如200201201相对于200是有变化,但是变化很小,不作为边界,边界要求变化很大的,不能把弱小的变化认为就是边界。
给定阈值,如果变化率超过了一定阈值,认为是边界,因为边界值算出来以后还是很小。所以就给加上100,目的是增强亮度。
还要判断,加上100,是否会超过255,超过的话就直接等于255就可以。
对偏差的变化率取了阈值,在它变化很小时,本来是物体内部的数据的亮度,由于照相时光度不均匀产生的偏差,很小的话不考虑进去,人为它不是边界。
只有大于一定阈值,才认为是边界。
复以门限就是阈值。

实现步骤
数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第43张图片
数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第44张图片

2.3给边缘规定一个特定的灰度级

数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第45张图片

用前面说过的双向一次微分法计算出梯度,然后判断它是否大于阈值,如果是则直接给它一个值;不是的话就为原来的像素值。

数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第46张图片

如下效果图,边界更清晰了。

数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第47张图片

2.3给背景规定灰度级

数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第48张图片

2.4根据梯度二值化图像

原来,二值化图像阈值设定用直方图方法,迭代图方法,或人工算方法,现在二值化阈值是靠梯度来二值化的。

下图公式中:
如果梯度大于阈值,认为是梯度,就置白。否则我就置黑。

数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第49张图片
数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第50张图片

如下效果图:
更改阈值,边界为30,图像很平滑,但是有些毛刺。一些多余的厚度。像素有些厚度,如果阈值取得大些,就会使得它产生断点,而且有很多小噪声。利用上一章介绍的图像平滑-噪声消除技术可以将这个噪声去掉。

数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第51张图片

三.边缘检测

1.梯度算子

梯度是一阶导数,一阶导数在水平方向和垂直方向分别有个分量,实际上是一个矢量,我要把这个矢量变成可以标志的标量,那么可以看一下它的幅值。
幅值计算,一个是把这两个分量的平方再开方,还有一个就是直接取各个分量的绝对值然后求和,还有直接取平方,或求两个的最大值。
方向角可以用arctan来表示,这是说我们前边用微分运算,求得水平方向和垂直方向的梯度,最后把它们用标量化来算出这样一个公式。
后面介绍的Roboter算子,Sobel算子,高斯,Prete算子都有GxGy的分量,对这两个分量都是在这个一阶微分的基础上算的,对这两个分量算完之后,也需要取梯度。
所以上一节用横向微分和纵向微分,这一节用算子,是算子计算出来垂直和水平方向的梯度值,然后仍然需要这样计算出它的梯度的幅值。

2.Roberts提出的交叉微分算子–Roberts边缘检测算子

水平方向求微分是右链减左链,垂直向量是当前像素减上一行的。
而Robert提出的交叉微分,如下图:
那么水平方向,垂直方向就按这个模板来做,所以对于一个像素来说,它求的是向对角线右下角作为水平分量,然后它的对角线左下角作为垂直分量,最后把这个分量取绝对值,或是平方和,或平方和开方。

数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第52张图片
编程实现
数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第53张图片
实现步骤
数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第54张图片

效果图:
两个对角方向的减,然后取平方,因此它具有平滑的效果,不像只是单纯水平或垂直

数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第55张图片

3.Sobel梯度算子–Sobel边缘检测算子

一个3*3模板,有一部分平滑再加上锐化,左图为水平方向分量,右图为垂直方向分量。

数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第56张图片

如下图:
模板方式计算,就是求卷积。
左图水平边缘Sobel算子和右图锤之边缘Sobel算子都计算后,取和。累计取和,就等于当前中心像素的值。
模板在图像上一一移动-漫游。
模板大小是奇数的,大于等于3.

数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第57张图片
实现步骤
数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第58张图片
效果图

Sobel计算后:
水平和垂直两个方向都算,算完之后取边界最大的地方,效果很好。

数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第59张图片

4.Prewitt梯度算子–Prewitt边缘检测算子

Prewitt和Sobel的区别就在于系数上的不同,系数改一下就可以。

数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第60张图片
Prewitt边缘检测算子
数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第61张图片

5.二阶微分-拉普拉斯算子–高斯-拉普拉斯(LOG)算子

  1. 理论基础
二阶导数,没有水平分量和垂直分量,不需要单独算一个水平的梯度,二阶导数算完一阶梯度之后,再算一阶梯度就得到二阶导数的梯度。
那么再进一步扩展可以变成系数为正边缘为负,把它幅值再增加。

数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第62张图片

下图为写成模板的形式:

数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第63张图片

下图为:
F原来的信息加上或减去梯度,梯度如果是负值就减,梯度是正值就加。这是既保留原图像的内部信息,又算出它的边界信息。
也是一个二阶微分,它的系数是它有高斯的平滑模板和拉普拉斯的锐化模板相结合的算子。
这是5*5算子。

数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第64张图片

高斯-拉普拉斯(LOG)算子
5*5模板

数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第65张图片

  1. 高斯-拉普拉斯算子
    数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第66张图片
    数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第67张图片
    实现步骤
    在这里插入图片描述
    效果图
    数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第68张图片

6.Krisch边缘检测

在这里插入图片描述
数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第69张图片
实现步骤
数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第70张图片
效果图

找的都是各个方向的最大点,每一点都找到所以它的边界就比较宽,

数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第71张图片

7.锐化算子总结

数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第72张图片
数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第73张图片
数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第74张图片
数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第75张图片
数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第76张图片
数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第77张图片
数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第78张图片
实现步骤
数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第79张图片

四.基于MATLAB的图像边缘检测

例1检测图像中的线段

%检测图像中的线段
clear all;
close all;
clc;
I=imread('lena.bmp');
I=im2double(I);  %边缘检测必须要灰度化,彩色图像变为灰度图像

%给定边缘检测模板
h1=[-1,-1,-1;2,2,2;-1,-1,-1]; %边缘检测模板,表示线段为水平线段
h2=[-1,-1,2;-1,2,-1;2,-1,-1]; %45°线段
h3=[-1,2,-1;-1,2,-1;-1,2,-1]; %垂直线段
h4=[2,-1,-1;-1,2,-1;-1,-1,2]; %-45°线段

%conv2/imfilter
J1=conv2(h1,I); % 进行卷积运算 
J2=conv2(h2,I); % 进行卷积运算 
J3=conv2(h3,I); % 进行卷积运算 
J4=conv2(h4,I); % 进行卷积运算 
J=J1+J2+J3+J4;  %四条线段叠加

figure;
subplot(321);imshow(I);
subplot(322);imshow(J1);
subplot(323);imshow(J2);
subplot(324);imshow(J3);
subplot(325);imshow(J4);
subplot(326);imshow(J);

例2用Roberts算子进行图像的边缘检测

%用Roberts算子进行图像的边缘检测
clear all;
close all;
clc;
I=imread('细胞256.bmp');
I=im2double(I);%转换为double型

%roberts算子,对角减。
[J,thresh]=edge(I,'roberts',35/255);%roberts算子进行边缘检测,这个函数作用是
%返回分割阀值,变成2值图.分割阀值的作用是该函数忽略小于阀值的像素,大于阈值置白
%小于阈值置黑.35/255,35为阈值,255为设定的黑。
figure;
subplot(121),imshow( I);
subplot(122),imshow(J);  

例3用prewitt算子做边缘检测

%用prewitt算子做边缘检测
clear all;
close all;
clc;
I=imread('细胞256.bmp');
I=im2double(I);

[J,thresh]=edge(I,'prewitt',[],'both');%prewitt算子进行边缘检测,[]表示系统自
%动计算阀值.二值化horizontal(水平),vertical(垂直),both(两者兼有).
%both(两者兼有)的算法实现:先算出水平值和垂直值,两者平方和开方或两者最大值或绝
%对值之和。
figure;
subplot(121),imshow(I);
subplot(122),imshow(J);

例4用sobel算子做边缘检测

%用sobel算子做边缘检测
clear all;
close all;
clc;
I=imread('细胞256.bmp');
I=im2double(I);
[J,thresh]=edge(I,'sobel',[],'both');%sobel算子进行边缘检测,[]表示系统自动
%计算阀值二值化,horizontal(水平),vertical(垂直),both(两者兼有).1.取两者绝对
%值之和或取两者大的或者平方开方)
figure;
subplot(121),imshow(I);
subplot(122),imshow(J);

例5用用函数fspecial()产生预定义模板

%用函数fspecial()产生预定义模板
clear all;
close all;
clc;
format rat;
I=imread('细胞256.bmp');
%I=rgb2gray(I);
I=im2double(I);

hsobel=fspecial('sobel');%sobel算子
hprewitt=fspecial('prewitt');%prewitt
hlaplacian=fspecial('laplacian');%laplacian
hlog=fspecial('log',3); %log

format short;%设置输出数据格式,精确度保持六位

J1=imfilter(I,hsobel); %sobel算子滤波,线性检测
J2=imfilter(I,hprewitt);
J3=imfilter(I,hlaplacian);
J4=imfilter(I,hlog);

figure;
subplot(321),imshow(I);
subplot(322),imshow(J1);
subplot(323),imshow(J2);
subplot(324),imshow(J3);
subplot(325),imshow(J4);

例6用函数fspecial()和imfilter()提取图像边缘

%用函数fspecial()和imfilter()提取图像边缘
clear all;
close all;
clc;

I=imread('细胞256.bmp');
I=im2double(I);
h=fspecial('laplacian');%拉普拉斯算子

J=imfilter(I,h,'replicate');%图像滤波,'replicate'边界选项,边界怎么处理的.
%这里表示图像大小通过复制外边界的通过值来拓展,大小和原图一样
K=im2bw(J,80/255);%变为二值图像,二值化. 80/255这是阈值
figure;
subplot(121);imshow(J); %图像滤波后图像
subplot(122);imshow(K);%二值化后图像

例7用Canny算子对含有噪声的图像做边缘检测

%用Canny算子对含有噪声的图像做边缘检测
clear all;
close all;
clc;
I=imread('细胞256.bmp');
I=im2double(I);
J=imnoise(I,'gaussian',0,0.01);%添加高斯噪声,均值和方差
[K,thresh]=edge(I,'canny');%canny算子边缘检测
figure;
subplot(131);imshow(I);
subplot(132);imshow(J);
subplot(133);imshow(K);

五.试验-目标物体的轮廓提取

实现功能
数字图像处理-Digital Image Processing(DIP)--6图像锐化处理及边缘检测_第80张图片
要求1
在这里插入图片描述

你可能感兴趣的:(数字图像处理和计算机视觉)