散斑图的对比度及强度自相关计算代码
点击次数:
%本代码(matlab)是根据定义式用于计算CCD拍摄的一张散斑图的对比度和自相关分布
ob=imread('/Users/happylife/Desktop/panda.png');%读取图片
ob=ob(:,:,1);
Iout=im2double(ob);
Nr=size(Iout,1);%获取矩阵行长度
Nc=size(Iout,2);%获取矩阵列长度
G=zeros(Nr,Nc);
DIout=(Iout-mean(Iout(:))).^2;%%mean:算整个二维矩阵的平均值
Contrast=sqrt(mean(DIout(:)))/mean(Iout(:));%对比度计算
%%%%%强度自相关计算。公式为:G(delta_x,delta_y)=\int{I(x,y)I(x+delta_x,y+delta_y)}dxdy.本程序是该公式的离散化体现
for l=-Nr/4:Nr/4
for m=-Nc/4:Nc/4
xrc=Nr/2+1+l;
yrc=Nc/2+1+m;
Ic1=zeros(Nr,Nc);
Ic1(Nr/2+1-Nr/4:Nr/2+1+Nr/4-1,Nc/2+1-Nc/4:Nc/2+1+Nc/4-1)=Iout(xrc-Nr/4:xrc+Nr/4-1,yrc-Nc/4:yrc+Nc/4-1);
G(Nr/2+1+l,Nc/2+1+m)=sum(sum(Iout.*Ic1))/(Nr*Nc);
end
end
g=G/(mean(Iout(:)))^2;%归一化强度自相关