比如拍了两张照片,要比较哪一张更加清楚的代码,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的值