数字图像梯度(the gradient of the image)

第七节 方向导数与梯度

图像梯度

方向导数 

数字图像梯度(the gradient of the image)

有限差分 

数字图像梯度(the gradient of the image)

 梯度

数字图像梯度(the gradient of the image)

 图像梯度

 图像梯度的定义

       图像函数f(x,y)在点(x,y)的梯度是一个具有大小和方向的矢量,设为Gx 和 Gy 分别表示x方向和y方向的梯度,这个梯度的矢量可以表示为:

数字图像梯度(the gradient of the image)

由此可见,梯度指出了在(x,y)处f的最大变化率的方向。

这个矢量的幅度为

数字图像梯度(the gradient of the image)

图像处理中一阶微分是用梯度幅值来实现的。

方向角

数字图像梯度(the gradient of the image)

对于数字图像而言,图像可看成二维离散函数,图像梯度其实就是这个二维离散函数的求导,如下:

数字图像梯度(the gradient of the image)

分别对X,Y两个方向上求出它们的偏微分,最终得到梯度Delta F。

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);

图像梯度一般也可以用中值差分:

  dx(i,j) = [I(i+1,j) - I(i-1,j)]/2;
  dy(i,j) = [I(i,j+1) - I(i,j-1)]/2;

图像边缘一般都是对图像进行梯度运算来实现的。梯度的正负反映其边缘的走势,相当于方向。由于图像在计算机中以数字图像的形式进行存储,即图像是离散的数字信号,对数字图像的梯度使用差分来代替连续信号中的微分。

数字图像中,更多的使用差分来近似导数,最简单的梯度近似表达式如下:

数字图像梯度(the gradient of the image)

       梯度的方向是函数f(x,y)变化最快的方向,当图像中存在边缘时,一定有较大的梯度值,相反,当图像中有比较平滑的部分时,灰度值变化较小,则相应的梯度也较小,图像处理中把梯度的模简称为梯度,由图像梯度构成的图像成为梯度图像。

        对于离散的图像来说,一阶微分的数学表达相当于两个相邻像素的差值,根据选择的梯度算子不同,效果可能有所不同,但是基本原理不会变化。最常见的算子为Roberts算子,其它常见还有Sobel,Prewitt等算子。

Roberts算子

计算Roberts为例的X,Y的梯度演示如下图:

数字图像梯度(the gradient of the image)

图像微分(梯度计算)是图像边缘提取的重要的中间步骤,根据X,Y方向的梯度向量值,可以得到如下两个重要参数振幅magnitude, 角度theta,计算公式如下:

数字图像梯度(the gradient of the image)

                                                                     Theta = tan-1(yGradient/xGradient)

       magnitude表示边缘强度信息,theta预言边缘的方向走势。假如对一幅数字图像,求出magnitude之后与原来每个像素点对应值相加,则图像边缘将被大大加强,轮廓更加明显,是一个很典型的sharp filter的效果。

Sobel算子

数字图像梯度(the gradient of the image)

       该算子包含两组3x3的矩阵,分别为横向及纵向,将之与图像作平面卷积,即可分别得出横向及纵向的亮度差分近似值。如果以A代表原始图像,Gx及Gy分别代表经横向及纵向边缘检测的图像灰度值,其公式如下:

具体计算如下:

数字图像梯度(the gradient of the image)

图像的每一个像素的横向及纵向灰度值通过以下公式结合,来计算该点灰度的大小:

数字图像梯度(the gradient of the image)

通常,为了提高效率使用不开平方的近似值:

数字图像梯度(the gradient of the image)

然后可用以下公式计算梯度方向:

数字图像梯度(the gradient of the image)

若图像为: 

数字图像梯度(the gradient of the image)

则使用近似公式的计算的结果为:

数字图像梯度(the gradient of the image)

        这样的形式很好理解,假如中间为边缘,那么边缘两侧的亮度差距就会变大,乘以符号相反的系数,会使得最终的结果达到很大的值,在图像上来看就是白色;而不是边缘的区域,左右两边或者上下两边就会抵消,在图像上看就是黑色。

       物理意义为:梯度的方向是函数f(x,y)变化最快的方向,当图像中存在边缘时,一定有较大的梯度值,相反,当图像中有比较平滑的部分时,灰度值变化较小,则相应的梯度也较小,图像处理中把梯度的模简称为梯度,由图像梯度构成的图像成为梯度图像。求导操作不仅能够捕获轮廓,人影和一些纹理信息,还能进一步弱化光照的影响。

Scharr算子 

数字图像梯度(the gradient of the image)

 举例

我们先考虑下x方向,选取某个像素,假设其像素值是100,沿x方向的相邻像素分别是90,90,90,则根据上面的计算其x方向梯度分别是10,0,0。这里只取变化率的绝对值,表明变化的大小即可。

数字图像梯度(the gradient of the image)


我们看到,100和90之间亮度相差10,并不是很明显,与一大群90的连续灰度值在一起,轮廓必然是模糊的。我们注意到,如果相邻像素灰度值有变化,那么梯度就有值,如果相邻像素灰度值没有变化,那么梯度就为0。如果我们把梯度值与对应的像素相加,那么灰度值没有变化的,像素值不变,而有梯度值的,灰度值变大了。

数字图像梯度(the gradient of the image)
       我们看到,相加后的新图像,原图像像素点100与90亮度只相差10,现在是110与90,亮度相差20了,对比度显然增强了,尤其是图像中物体的轮廓和边缘,与背景大大加强了区别,这就是用梯度来增强图像的原理。