> 教育经验 > 什么是平均梯度介绍

什么是平均梯度介绍

什么是平均梯度介绍

平均梯度(meangradient):指图像的边界或影线两侧附近灰度有明显差异,即灰度变化率大,这种变化率的大小可用来表示图像清晰度。它反映了图像微小细节反差变化的速率,即图像多维方向上密度变化的速率,表征图像的相对清晰程度。

平均梯度定义

平均梯度即图像的清晰度(definition),反映图像对细节对比的表达能力,计算公式为

图像梯度: 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) = /2;

dy(i,j) = /2;

图像边缘一般都是通过对图像进行梯度运算来实现的。

上面说的是简单的梯度定义,其实还有更多更复杂的梯度公式。

平均梯度梯度公式

white210:

平均梯度越大,图像层次越多,也就越清晰。其定义为:

式中:F(i,j)为图像的第i行,第j列的灰度值;M、N分别为图像的总行数和总列数。

单幅图像的平均梯度值计算MATLAB源程序:

说明:该程序的作用是计算输入图像img的平均梯度值AVEGRAD

平均梯度值可以衡量图像细节反差表达的能力,是图形融合结果的一个评价算子之一

function AVEGRAD=avegrad(img)

%%%% this function is used to calculate theaverage gradient of an image.

%%%%平均梯度可敏感地反映图像对微小细节反差表达的能力,可用来评价图像的模糊程度

%%%%在图像中,某一方向的灰度级变化率大,它的梯度也就大。因此,可以用平均梯度值来衡量图像的清晰度,还同时反映出图像中微小细节反差和纹理变换特征。

img=double(img);

=size(img);

gradval=zeros(M,N); %%% save the gradient value of single pixel

diffX=zeros(M,N); %%% save the differential value of X orient

diffY=zeros(M,N); %%% save the differential value of Y orient

tempX=zeros(M,N);

tempY=zeros(M,N);

tempX(1:M,1:(N-1))=img(1:M,2:N);

tempY(1:(M-1),1:N)=img(2:M,1:N);

diffX=tempX-img;

diffY=tempY-img;

diffX(1:M,N)=0; %%% the boundery set to 0

diffY(M,1:N)=0;

diffX=diffX.*diffX;

diffY=diffY.*diffY;

AVEGRAD=(diffX+diffY)/2;

AVEGRAD=sum(sum(sqrt(AVEGRAD)));

AVEGRAD=AVEGRAD/((M-1)*(N-1));