求比较两个图清晰度的代码,有谢谢谢谢啦

比如拍了两张照片,要比较哪一张更加清楚的代码,matlab ,c,OpenCV都可以(用灰度函数,拉普拉斯算子等)

写个matlab算下差分,应该有个指标可以衡量一下

 function out_val=difference_absolute(img);
I=rgb2gray(img);
[m,n]=size(I);
f=0.0;
I=double(I);
for x=1:m-1;
    for y=1:n-1;
        Ix=I(x+1,y)-I(x,y);
        Iy=I(x,y+1)-I(x,y);
        f=f+abs(Ix)+abs(Iy);
    end
end
out_val=f/m/n;

或者算下方差,opencv里面有算方差的函数,或者用清晰度来评价:

 function L=EAV(f)
f=double(f);
[m,n]=size(f);
f=[zeros(m,1) f zeros(m,1)];
f=[zeros(1,n+2);f;zeros(1,n+2)];

for i=2:m  %i代表行
    for j=2:n   %j代表列
        H=(4+2*sqrt(2))*f(i,j)-f(i,j-1)-f(i,j+1)-f(i-1,j)-f(i+1,j)-sqrt(2)/2*f(i+1,j+1)-sqrt(2)/2*f(i+1,j-1)-sqrt(2)/2*f(i-1,j+1)-sqrt(2)/2*f(i-1,j-1);
        g(i,j)=abs(H);
    end 
end
 L=sum(sum(g));%得出评价函数L的值