用matlab评价融合图像的熵值、平均值、标准差、平均梯度、相关系数

%处理过后的图像
RGB_up=imread('存储路径');
imf=RGB_up;
df=double(imf);

%进行融合影像评价时使用,原图像
RGB=imread('存储路径');
immul=RGB;
dmul=double(immul);

r=df(:,:,1);
g=df(:,:,2);
b=df(:,:,3);
R=dmul(:,:,1);
G=dmul(:,:,2);
B=dmul(:,:,3);

r_1 = r;
g_1 = g;
b_1 = b;
R_1 = R;
G_1 = G;
B_1 = B;

r_1(r_1 == 0)=[];
g_1(g_1 == 0)=[];
b_1(b_1 == 0)=[];
R_1(R_1 == 0)=[];
G_1(G_1 == 0)=[];
B_1(B_1 == 0)=[];

%求均值
mean_r = mean2(r_1);
mean_g = mean2(g_1);
mean_b = mean2(b_1);
mean_R = mean2(R_1);
mean_G = mean2(G_1);
mean_B = mean2(B_1);

%求标准偏差
std_r=std2(r_1);
std_g=std2(g_1);
std_b=std2(b_1);

%%%%%%%%%%%计算各波段的熵值%%%%%%%%%%%%%%%%
[mf,nf,kf] = size(imf);
Img_size = length(r_1); %图像像素点的总个数
L=256; %图像的灰度级
H_R=0;
H_G=0;
H_B=0;
nk_R=zeros(L,1);
nk_G=zeros(L,1);
nk_B=zeros(L,1);

for i=1:1:mf
for j=1:1:nf
if(df(i,j,1) ~= 0)
Img_level_R=df(i,j,1)+1; %获取图像的灰度级
nk_R(Img_level_R)=nk_R(Img_level_R)+1; %统计每个灰度级像素的点数
end
end
end
for k=1:L
Ps_R(k)=nk_R(k)/Img_size; %计算每一个灰度级像素点所占的概率
if Ps_R(k)~=0; %去掉概率为0的像素点
H_R=-Ps_R(k)*log2(Ps_R(k))+H_R; %求熵值的公式
end
end

for i=1:1:mf
for j=1:1:nf
if(df(i,j,2) ~= 0)
Img_level_G=df(i,j,2)+1; %获取图像的灰度级
nk_G(Img_level_G)=nk_G(Img_level_G)+1; %统计每个灰度级像素的点数
end
end
end
for k=1:L
Ps_G(k)=nk_G(k)/Img_size; %计算每一个灰度级像素点所占的概率
if Ps_G(k)~=0; %去掉概率为0的像素点
H_G=-Ps_G(k)*log2(Ps_G(k))+H_G; %求熵值的公式
end
end
for i=1:1:mf
for j=1:1:nf
if(df(i,j,3) ~= 0)
Img_level_B=df(i,j,3)+1; %获取图像的灰度级
nk_B(Img_level_B)=nk_B(Img_level_B)+1; %统计每个灰度级像素的点数
end
end
end
for k=1:L
Ps_B(k)=nk_B(k)/Img_size; %计算每一个灰度级像素点所占的概率
if Ps_B(k)~=0; %去掉概率为0的像素点
H_B=-Ps_B(k)*log2(Ps_B(k))+H_B; %求熵值的公式
end
end


%%%%%%%%%%%求各个波段相关系数,融合图像与源图像的相关程度%%%%%%%
q3=0;q4=0;p_r=0;
for i=1:mf
for j=1:nf
if(r(i,j) ~= 0 && R(i,j) ~= 0) %~=在matlab中表示不等于
q3=q3+(r(i,j)-mean_r)*(R(i,j)-mean_R);
q4=q4+sqrt(((r(i,j)-mean_r)^2)*((R(i,j)-mean_R)^2)); %sqrt是matlab软件的平方根函数
end
end
end
p_r=q3/q4;

q11=0;q12=0;p_g=0;
for i=1:mf
for j=1:nf
if(g

(i,j) ~= 0 && G(i,j) ~= 0)
q11=q11+(g(i,j)-mean_g)*(G(i,j)-mean_G);
q12=q12+sqrt(((g(i,j)-mean_g)^2)*((G(i,j)-mean_G)^2));
end
end
end
p_g=q11/q12;

q13=0;q14=0;p_b=0;
for i=1:mf
for j=1:nf
if(b(i,j) ~= 0 && B(i,j) ~= 0)
q13=q13+(b(i,j)-mean_b)*(B(i,j)-mean_B);
q14=q14+sqrt(((b(i,j)-mean_b)^2)*((B(i,j)-mean_B)^2));
end
end
end
p_b=q13/q14;


%%%%%%%%%%%%%%%%%计算各波段清晰度,平均梯度%%%%%%%%%%%%%%%
g_R=0;
g_G=0;
g_B=0;
G_R=0;
G_G=0;
G_B=0;
for i=1:mf-1
for j=1:nf-1
if(r(i,j) ~= 0 && r(i+1,j)~= 0 && r(i,j+1)~= 0)
g_R=g_R+sqrt((((r(i+1,j)-r(i,j))^2 +(r(i,j+1)-r(i,j))^2 ))/2);
end
if(g(i,j) ~= 0 && g(i+1,j)~= 0 && g(i,j+1)~= 0)
g_G=g_G+sqrt((((g(i+1,j)-g(i,j))^2+(g(i,j+1)-g(i,j))^2))/2);
end
if(b(i,j) ~= 0 && b(i+1,j)~= 0 && b(i,j+1)~= 0)
g_B=g_B+sqrt((((b(i+1,j)-b(i,j))^2+(b(i,j+1)-b(i,j))^2))/2);
end

end
end

G_R=g_R/Img_size;
G_G=g_G/Img_size;
G_B=g_B/Img_size;















相关文档
最新文档