图像梯度算法

来源:互联网 发布:网络部面试问题有哪些 编辑:程序博客网 时间:2024/05/29 04:10

求图像的梯度,一般是指灰度图像或者彩色图像上的操作。数字图像就是离散的点值谱,也可以叫二维离散函数。图像的梯度就是这个二维离散函数的求导。
导数(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;

举一个简单的灰度图像梯度计算函数为例:

function g_img1=gredient(g1)g1_img1(:,:) =(g1(1:end-1,:) - g1(2:end,:));g1_img1(end+1,:) = g1_img1(end,:);g2_img1(:,:) =(g1(:,1:end-1) - g1(:,2:end));g2_img1(:,end+1) = g2_img1(:,end);g_img1=g1_img1 + g2_img1;

这段代码将计算灰度图一水平和垂直两个方向的梯度。每一行的值变成该行与下一行的差值,每一列的值变成该列与下一列的差值。(为了保持尺寸同原图一致,避免后续计算问题,复制一行一列出来。)最后将得到的两幅图相加。这样新的图包含了水平梯度和垂直梯度的变化信息。

0 0