[ZZ] 边缘检测 梯度与Roberts、Prewitt、Sobel、Lapacian算子
2017-08-06 16:15
489 查看
http://blog.csdn.net/swj110119/article/details/51777422
一、学习心得:
学习图像处理的过程中,刚开始遇到图像梯度和一些算子的概念,这两者到底是什么关系,又有什么不同,一直困扰着我。后来在看到图像分割这一模块后才恍然大悟,其实图像的梯度可以用一阶导数和二阶偏导数来求解。但是图像以矩阵的形式存储的,不能像数学理论中对直线或者曲线求导一样,对一幅图像的求导相当于对一个平面、曲面求导。对图像的操作,我们采用模板对原图像进行卷积运算,从而达到我们想要的效果。而获取一幅图像的梯度就转化为:模板(Roberts、Prewitt、Sobel、Lapacian算子)对原图像进行卷积,不过这里的模板并不是随便设计的,而是根据数学中求导理论推导出来的。下面就逐一分析各梯度算子的推导过程。
二、算子推导过程
1、知识引入:
在一维连续数集上有函数f(x),我们可以通过求导获得该函数在任一点的斜率,根据导数的定义有:
在二维连续数集上有函数f(x,y),我们也可以通过求导获得该函数在x和y分量的偏导数,根据定义有:
2、梯度和Roberts算子:
对于图像来说,是一个二维的离散型数集,通过推广二维连续型求函数偏导的方法,来求得图像的偏导数,即在(x,y)处的最大变化率,也就是这里的梯度:
梯度是一个矢量,则(x,y)处的梯度表示为:
其大小为:
因为平方和平方根需要大量的计算开销,所以使用绝对值来近似梯度幅值:
方向与α(x,y)正交:
其对应的模板为:
上面是图像的垂直和水平梯度,但我们有时候也需要对角线方向的梯度,定义如下:
对应模板为:
2*2大小的模板在概念上很简单,但是他们对于用关于中心点对称的模板来计算边缘方向不是很有用,其最小模板大小为3*3。3*3模板考虑了中心点对段数据的性质,并携带有关于边缘方向的更多信息。
3、Prewitt和Sobel算子:
在3*3模板中:
我如下定义水平、垂直和两对角线方向的梯度:
该定义下的算子称之为Prewitt算子:
Sobel算子是在Prewitt算子的基础上改进的,在中心系数上使用一个权值2,相比较Prewitt算子,Sobel模板能够较好的抑制(平滑)噪声。
计算公式为:
Sobel算子:
上述所有算子都是通过求一阶导数来计算梯度的,用于线的检测,在图像处理中,通常用于边缘检测。在图像处理过程中,除了检测线,有时候也需要检测特殊点,这就需要用二阶导数进行检测。
4、Lapacian算子:
一阶导数:
二阶导数:
我们感兴趣的是关于点x的二阶导数,故将上式中的变量减1后,得到:
在图像处理中通过拉普拉斯模板求二阶导数,其定义如下:
对应模板为:
模板中心位置的数字是-8而不是-4,是因为要使这些系数之和为0,当遇到恒定湖对区域时,模板响应应将0。
在用lapacian算子图像进行卷积运算时,当响应的绝对值超过指定阈值时,那么该点就是被检测出来的孤立点,具体输出如下:
一、学习心得:
学习图像处理的过程中,刚开始遇到图像梯度和一些算子的概念,这两者到底是什么关系,又有什么不同,一直困扰着我。后来在看到图像分割这一模块后才恍然大悟,其实图像的梯度可以用一阶导数和二阶偏导数来求解。但是图像以矩阵的形式存储的,不能像数学理论中对直线或者曲线求导一样,对一幅图像的求导相当于对一个平面、曲面求导。对图像的操作,我们采用模板对原图像进行卷积运算,从而达到我们想要的效果。而获取一幅图像的梯度就转化为:模板(Roberts、Prewitt、Sobel、Lapacian算子)对原图像进行卷积,不过这里的模板并不是随便设计的,而是根据数学中求导理论推导出来的。下面就逐一分析各梯度算子的推导过程。
二、算子推导过程
1、知识引入:
在一维连续数集上有函数f(x),我们可以通过求导获得该函数在任一点的斜率,根据导数的定义有:
在二维连续数集上有函数f(x,y),我们也可以通过求导获得该函数在x和y分量的偏导数,根据定义有:
2、梯度和Roberts算子:
对于图像来说,是一个二维的离散型数集,通过推广二维连续型求函数偏导的方法,来求得图像的偏导数,即在(x,y)处的最大变化率,也就是这里的梯度:
梯度是一个矢量,则(x,y)处的梯度表示为:
其大小为:
因为平方和平方根需要大量的计算开销,所以使用绝对值来近似梯度幅值:
方向与α(x,y)正交:
其对应的模板为:
上面是图像的垂直和水平梯度,但我们有时候也需要对角线方向的梯度,定义如下:
对应模板为:
上述模板就是Roberts交叉梯度算子。
2*2大小的模板在概念上很简单,但是他们对于用关于中心点对称的模板来计算边缘方向不是很有用,其最小模板大小为3*3。3*3模板考虑了中心点对段数据的性质,并携带有关于边缘方向的更多信息。
3、Prewitt和Sobel算子:
在3*3模板中:
我如下定义水平、垂直和两对角线方向的梯度:
该定义下的算子称之为Prewitt算子:
Sobel算子是在Prewitt算子的基础上改进的,在中心系数上使用一个权值2,相比较Prewitt算子,Sobel模板能够较好的抑制(平滑)噪声。
计算公式为:
Sobel算子:
上述所有算子都是通过求一阶导数来计算梯度的,用于线的检测,在图像处理中,通常用于边缘检测。在图像处理过程中,除了检测线,有时候也需要检测特殊点,这就需要用二阶导数进行检测。
4、Lapacian算子:
一阶导数:
二阶导数:
我们感兴趣的是关于点x的二阶导数,故将上式中的变量减1后,得到:
在图像处理中通过拉普拉斯模板求二阶导数,其定义如下:
对应模板为:
模板中心位置的数字是-8而不是-4,是因为要使这些系数之和为0,当遇到恒定湖对区域时,模板响应应将0。
在用lapacian算子图像进行卷积运算时,当响应的绝对值超过指定阈值时,那么该点就是被检测出来的孤立点,具体输出如下:
相关文章推荐
- 图像梯度特征的常用边缘检测算子:Sobel、Prewitt、Roberts
- Unity之梯度应用实现Roberts、Prewitt、Sobel边缘检测
- 边缘检测类(包括Roberts, Sobel, Prewitt, Kirsch等算子的边缘检测算法) - wtuyzh的专栏 - CSDNBlog
- 梯度与Roberts、Prewitt、Sobel、Lapacian算子
- 13. 用Roberts、Sobel、Prewitt和Laplace算子对一幅灰度图像进行边缘检测。观察异同。
- 几种边缘检测算子的比较Roberts,Sobel,Prewitt,LOG,Canny
- 使用roberts Prewitt Sobel 三种算子对raw格式图像进行边缘检测
- matlab边缘检测代码(包含roberts,sobel,prewitt三种算子)
- OpenCV2马拉松第14圈——边缘检测(Sobel,prewitt,roberts)
- 图像边缘检测与边缘增强处理——(Roberts、prewitt、sobel)
- 边缘检测 (4)Prewitt边缘算子
- Opencv图像识别从零到精通(19)----Robert,prewitt,Sobel边缘检测
- 边缘检测之Sobel检测算子
- 边缘检测,Roberts 算子,Sobel算子,Canny 算子
- 边缘检测的各种微分算子比较(Sobel,Robert,Prewitt,Laplacian,Canny)
- 摄像头 Roberts 算子 边缘检测 opencv
- 图像处理中各种边缘检测的微分算子简单比较(Sobel,Robert, Prewitt,Laplacian,Canny)
- 【opencv学习之二十六】边缘检测算子:Canny,Sobel,Laplacian
- 图像处理中各种边缘检测的微分算子简单比较(Sobel,Robert, Prewitt,Laplacian,Canny)
- 图像处理中各种边缘检测的微分算子简单比较(Sobel,Robert, Prewitt,Laplacian,Canny)