影像梯度

影像梯度(Image gradient)是指影像强度和颜色的方向性变化。影像的梯度在影像处理中是基础的一环。举例来说,Canny边缘检测器(Canny edge detector)用计算影像梯度来做边缘检测。在数位影像处理软件或是绘图软件中,影像的梯度也可以用来将颜色做渐进式的混合,例如右图中可以将绿色从左到右渐进的变成蓝色。

蓝色到绿色的颜色梯度。

以下用影像的强度函数(intensity function)的梯度作为范例说明。影像的强度函数是一个双变数函数,变数分别是纵轴和横轴的座标值,此时强度函数的梯度即为一个二维的向量,分别代表纵轴和横轴方向的导数。对于每个像素点,梯度向量的方向为可能的最大强度变化,而梯度向量的长度则是对应到该方向变化的比例。[1]

因为在数位影像中的强度函数是离散的数据点,要计算这个函数的导数,需要假设这个离散的强度函数是从连续函数抽样来的。有了这个假设(在加上其它假设),许多估计法可以计算离散强度函数的导数。最常被使用到的方法是计算影像和一个滤波器卷积,像是索伯算子(Sobel operator)或Prewitt算子(Prewitt operator)。

电脑视觉

 
左图为一张猫的强度影像,代表像素的明暗度。中图为横轴方向的梯度影像,表示影像强度在水平方向的变化。相同的,右图为纵轴方向的梯度影像,表示影像强度在垂直方向的变化。梯度影像中,灰色的部分代表较小的梯度,黑色的部分代表较大的梯度。可以观察在原图像素值变化较大的部分(黑白的边界),在梯度影像有较大的梯度。

在电脑视觉的应用里,影像的梯度可以用来抽取影像中的资讯。可以借由用卷积滤波器(例如Sobel滤波器),从原始影像生成一张梯度影像。梯度影像的每个像素点的值是由原图同位置像素在某特定方向的变化计算出的,在应用上通常会计算横轴和纵轴的梯度影像。

边缘检测是梯度影像最常见的应用之一。在计算出梯度影像之后,具有比较大梯度的像素,就是边缘可能的位置。Canny边缘检测器就是一个借由影像梯度来做边缘检测的算法。

影像梯度也可以帮助抽取和配对影像的特征(feature)。使用不同的相机拍摄相同的场景时,因为相机本身的参数不同,拍出来的影像可能会有截然不同的像数值。此时,若以影像的像素值作为配对两影像的标准,会因为相同物体在两影像有不同的像数值导致配对失败。此时可以计算梯度影像最为一个更加可靠的特征,因为尽管相机参数或是场景的亮度不同,梯度较高(通常是物体边界)的位置不会改变,所以梯度影像对于相机参数和场景亮度的变化较不敏感,比较适合作为配对特征的依据。

数学

一张影像的梯度即为他的偏微分,根据横轴和纵轴的方向表示为一个向量:[2]:165

 ,
  是对x的导数 (x方向的梯度)
  是对y的导数 (y方向的梯度)

一张影像的导数可以用有限差分估计(finite differences)。如果使用中央差分,可以用一维滤波器和影像 的卷积来估计对y的导数, 代表一维的卷积运算:

 

这个 2×1 的滤波器会让影像平移半个像素的位置,为了避免这个状况,可以使用 3×1 的滤波器:

 

梯度的方向可以由下式计算:[2]:706

 ,

而梯度的大小可以由下式计算:[3]

 

参考文献

  1. ^ Jacobs, David. "Image gradients页面存档备份,存于互联网档案馆)." Class Notes for CMSC 426 (2005)
  2. ^ 2.0 2.1 Gonzalez, Rafael; Richard Woods. Digital Image Processing 3rd. Upper Saddle River, New Jersey: Pearson Education, Inc. [2019-06-27]. ISBN 978-0-13-168728-8. (原始内容存档于2022-06-01). 
  3. ^ 存档副本. [2019-06-27]. (原始内容存档于2021-07-23).