实验平均梯度与图像的模糊程度(matlab 代码)

参考:
http://blog.csdn.net/u013165921/article/details/78156202
平均梯度就是一幅图像的梯度图上所有点的均值。它反映了图像中的微小细节反差和纹理变化特征,同时也能反映出图像的清晰度。一般来说平均梯度越大,图像层次也就越丰富,变化就越多,图像也就越清晰。所以我们可以把平均梯度当做一系列模糊程度的评价标准。下面就用实验验证上面的话是否正确。

matlab代码

以下是求整幅图像的平均梯度强度,当然也可以比较某一区域的强度,主要是比较某一区域并不清楚要选哪一块进行说明,索性直接用整幅图像。

clc;
clear;
close all;

img = imread('images/lena.jpg');
img = im2double(img);

[~,~,imxy] = my_gradient(img);
% figure;imshow(imxy,[]);title('图像梯度');

% 求原图的平均梯度
s1 = mean(imxy(:));
% 求1次高斯模糊后图像的平均梯度
f1 = fspecial('gaussian',5,1);
img1 =imfilter(img,f1,'replicate');
%my_gradient是用来求梯度的
[~,~,imxy] = my_gradient(img1);
s2 = mean(imxy(:));
figure;imshow(img1);title('一次高斯模糊');
% 求2次高斯模糊后图像的平均梯度
f2 = fspecial('gaussian',5,1);
img2 =imfilter(img1,f2,'replicate');
[imx,imy,imxy] = my_gradient(img2);
s3 = mean(imxy(:));
figure;imshow(img2);title('2次高斯模糊');

结论

我们会发现经过2次高斯模糊的图像的平均梯度的值最小,而没有经过平滑的图像的平均梯度值是最大的。

你可能感兴趣的:(matlab)