可以把图像看成二维离散函数,图像梯度其实就是这个二维离散函数的求导:
图像梯度: G(x,y) = dx i + dy 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;
图像边缘一般都是通过对图像进行梯度运算来实现的。
③“到目前为止,边缘检测最通用的方法是检测亮度值的不连续性。这样的不连续性是用一阶和二阶导数来检测的。而图像处理中选择的一阶导数即梯度,二阶导数通常用拉普拉斯算子来计算”[Conzalez]
④梯度是一个向量,它的基本属性是:它指向图像f在坐标(x,y)处的最大变化率方向。最大变化率出现时的角度由α(x,y)给出。按惯例,用于计算梯度的导数用一幅图像中的一个小邻域上的像素值的差来近似。如,对于(图 *),垂直方向的梯度用Gx给出,水平梯度用Gy给出。
⑤求出的梯度作为边缘检测的一个判别准则。
边缘检测的基本意图是使用如下两个基本准则之一在图像中找到亮度快速变化的地方:A找到亮度的一阶导数(即梯度)比指定阈值大的地方;B找到亮度的二阶导数有零交叉的地方。对于A:如果像素(x,y)处梯度≥阈值T,则此点被当作边缘(输出二值图像的对应像素被置1),否则不是。
⑥Sobel、Priwitt、Roberts、LoG、Canny即是滤波模板,又可以称作导数估计器——不管是滤波还是求梯度还是边缘检测,最基本的知识是线性空间的卷积操作(这是基础)。
fspecial函数用于建立预定义的滤波算子,其语法格式为:
h =fspecial(type)
h =fspecial(type,para)
其中type指定算子的类型,para指定相应的参数;
type的类型有:
[1 1 1;0 00;-1 -1 -1].
8、'sobel'
Sobel horizontal edge-emphasizing filter
用于边缘提取,无参数
H = FSPECIAL('sobel') returns3-by-3 filter that emphasizeshorizontal edges utilizing the smoothing effectby approximating avertical gradient. If you need to emphasizevertical edges, transpose the filter H: H'.
Gx及Gy分别代表经横向及纵向边缘检测的图像灰度值,如果为一幅图像有竖直边缘,该竖直边缘的水平两侧灰度将存在差异,同理如果存在水平边缘,该边缘的垂直两侧灰度将存在差异,soble算子利用这种差异实现竖直边缘和水平边缘的检测。