图像梯度算法中算子的由来
相关概念
如何求图像的梯度?
求图像的梯度,一般是对灰度图像或者彩色图像进行操作。数字图像就是离散的点值谱,也可以叫二维离散函数。图像的梯度就是这个二维离散函数的求导。
导数(Derivative)是微积分中的重要基础概念。在百度百科里面是这样解释的:当函数y=f(x)的自变量X在一点x0上产生一个增量Δx时,函数输出值的增量Δy与自变量增量Δx的比值在Δx趋于0时的极限a如果存在,a即为在x0处的导数,记作f’(x0)或df/dx(x0)。
图像的求导就是水平方向或者垂直方向的,相邻两个像素之间的差值。
图像梯度: G(x,y) = dx(i,j) + dy(i,j);
dx(i,j) = I(i+1,j) - I(i,j);
dy(i,j) = I(i,j+1) - I(i,j);
其中,I是图像像素的值(如:RGB值),(i,j)为像素的坐标。
图像梯度一般也可以用中值差分:
dx(i,j) = [I(i+1,j) - I(i-1,j)]/2;
dy(i,j) = [I(i,j+1) - I(i,j-1)]/2;
图像中一阶微分怎么求?
首先看一下一维的微分公式Δf = f(x+1) – f(x), 对于一幅二维的数字图像f(x,y)而言,需要完
成XY两个方向上的微分,所以有如下的公式:
分别对X,Y两个方向上求出它们的偏微分,最终得到梯度Delta F.
对于离散的图像来说,一阶微分的数学表达相当于两个相邻像素的差值,根据选择的梯度算
子不同,效果可能有所不同,但是基本原理不会变化。最常见的算子为Roberts算子,其它
常见还有Sobel,Prewitt等算子。以Roberts算子为例的X,Y的梯度计算演示如下图:
一、问题
1、图像梯度和算子之间是什么关系?为什么求图像的梯度要用到算子?
图像的梯度可以用一阶导数和二阶偏导数来求解。但是图像以矩阵的形式存储的,不能像数学理论中对直线或者曲线求导一样,对一幅图像的求导相当于对一个平面、曲面求导。对图像的操作,我们采用模板对原图像进行卷积运算,从而达到我们想要的效果。而获取一幅图像的梯度就转化为:模板(Roberts、Prewitt、Sobel、Lapacian算子)对原图像进行卷积,不过这里的模板并不是随便设计的,而是根据数学中求导理论推导出来的。下面就逐一分析各梯度算子的推导过程。
2、算子的推导
1、知识引入:
在一维连续数集上有函数f(x),我们可以通过求导获得该函数在任一点的斜率,根据导数的定义有:
在二维连续数集上有函数f(x,y),我们也可以通过求导获得该函数在x和y分量的偏导数,根据定义有:
2、梯度和Roberts算子:
对于图像来说,是一个二维的离散型数集,通过推广二维连续型求函数偏导的方法,来求得图像的偏导数,即在(x,y)处的最大变化率,也就是这里的梯度:
梯度是一个矢量,则(x,y)处的梯度表示为:
其大小为:
因为平方和平方根需要大量的计算开销,所以使用绝对值来近似梯度幅值:
方向与α(x,y)正交:
其对应的模板为:
上面是图像的垂直和水平梯度,但我们有时候也需要对角线方向的梯度,定义如下:
对应模板为:
上述模板就是Roberts交叉梯度算子。
- 1
- 2
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算子图像进行卷积运算时,当响应的绝对值超过指定阈值时,那么该点就是被检测出来的孤立点,具体输出如下:
部分引用参考来源:
http://blog.csdn.net/swj110119/article/details/51777422
http://blog.csdn.net/jia20003/article/details/7562092
图像梯度算法中算子的由来相关推荐
- 图像降噪算法——中值滤波/均值滤波/高斯滤波/双边滤波
图像降噪算法--中值滤波/均值滤波/高斯滤波/双边滤波 图像降噪算法--中值滤波/均值滤波/高斯滤波/双边滤波 1. 基本原理 2. C++代码实现 3. 结论 图像降噪算法--中值滤波/均值滤波/高 ...
- opencv-python图像处理 ----图像梯度、Sobel算子
一.图像的梯度处理 1.Sobel算子 梯度可以按照x方向或者y方向求梯度,其实就是在看像素点的差异变化情况,比如黑白物体的交界,其像素值变化差异是非常大的. 求梯度计算使用的函数就叫做Sobel算子 ...
- 数字图像处理:(1)图像梯度以及算子应用
1.数学意义上的梯度 在理解图像梯度是什么的时候,我们首先要回忆一下以前学习过得梯度是什么? 见链接: https://blog.csdn.net/m0_37957160/article/detail ...
- 图像梯度的解释及相关梯度算子的实现
本文将介绍图像梯度的应用以及一些相关梯度算子的实现 一.什么是梯度? 梯度不是一个实数,它是一个有大小有方向的向量.现在以一个二元函数举例,假设一个二元函数f(x,y),在某点的梯度有: 整理后得到: ...
- OpenCV+python:图像梯度
1,图像梯度的概念 梯度简单来说就是求导,在图像上表现出来的就是提取图像的边缘(无论是横向的.纵向的.斜方向的等等),所需要的是一个核模板.模板的不同结果也不同.所以能够看到,全部的这些个算子函数,归 ...
- OpenCV——图像梯度与边缘检测(python实现)
OpenCV--图像梯度与边缘检测 6.1 简介 严格的说,梯度计算需要求导数.但是图像梯度的计算,是通过计算像素值的差得到梯度的近似值.图像梯度表示的是图像变化的速度,反映了图像的边缘信息. 边缘是 ...
- matlab 灰度共生矩阵熵,结合灰度共生矩阵和熵的图像修复算法
摘 要: 利用灰度共生矩阵提取图像纹理特征值,然后根据熵值的大小来实现模块大小的选择.另外,在寻找最佳匹配块时,同时考虑了颜色信息的差异和空间距离的因素.最后,给出了客观评价图像修复质量的PSNR度量 ...
- 基于DSP的图像旋转算法数据调度策略
基于DSP的图像旋转算法数据调度策略 [日期:2008-8-14] 来源:电子技术应用 作者:李筱琳,冯 燕,何亦征 [字体:大 中 小] <script src="http://w ...
- 策略梯度算法简明教程
为什么需要策略梯度 基于值的强化学习方法一般是确定性的,给定一个状态就能计算出每种可能动作的奖励(确定值),但这种确定性的方法无法处理一些现实的问题,比如玩100把石头剪刀布的游戏,最好的解法是随机的 ...
最新文章
- echarts图表实例
- 文件签名魔塔50层android反编译破解
- String是一个很普通的类 - Java那些事儿
- c语言各类随机函数,怎样让c语言中的随机函数真正随机?
- [转载] python中pass的使用_Python pass详细介绍及实例代码
- 看大厂NLP的面试经验之后的一些思考总结
- 基于Springboot的景区旅游管理系统 JAVA MySQL
- php怎么生成缩略图,php怎么生成缩略图
- 苹果iPhone/iPad不越狱怎么破解付费APP?
- 测试项目实战----RuoYi后台管理系统
- DroidCam---将手机转为电脑外接摄像头的软件(提供下载链接)
- 计算机与生活的ppt,计算机应用基础说课PPT
- 如何解决百度识图中图片被限制百度防盗链破解方法
- win10任务栏假死原因和解决方法
- 常见十大量化投资策略
- MADlib——基于SQL的数据挖掘解决方案(24)——分类之决策树
- css cursor 鼠标指针样式总结
- 腾讯云服务器部署(保姆级)
- C#中,System.ComponentModel.Container详解
- 华为服务器怎么进入系统,服务器怎么进入系统