什么是平均梯度介绍
平均梯度(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));