%---------------------------------------------------------------------
% 基于DS证据理论三通道融合分类
%---------------------------------------------------------------------
clc;
clear;
%------------------------建立特征库--------------------------------------
%读入待分类图像
I=imread('litu.jpg');
%显示待分类图像
imshow(I);
figure;
%从待分类图像上选取三类样本图像
i1=1:15
I11=I(29,10+i1,:);
I12=I(30,10+i1,:);
I1=[I11,I12];
i2=1:10;
I21=I(38,31+i2,:);
I22=I(36,31+i2,:);
I2=[I21,I22];
i3=1:20;
I31=I(5,6+i3,:);
I32=I(6,6+i3,:);
I3=[I31,I32];
RI1=I1(:,:,1);
GI1=I1(:,:,2);
BI1=I1(:,:,3);
RI2=I2(:,:,1);
GI2=I2(:,:,2);
BI2=I2(:,:,3);
RI3=I3(:,:,1);
GI3=I3(:,:,2);
BI3=I3(:,:,3);
%分别计算每一类的均值
E11=sum(sum(RI1))/30;
E12=sum(sum(GI1))/30;
E13=sum(sum(BI1))/30;
E21=sum(sum(RI2))/20;
E22=sum(sum(GI2))/20;
E23=sum(sum(BI2))/20;
E31=sum(sum(RI3))/40;
E32=sum(sum(GI3))/40;
E33=sum(sum(BI3))/40;
%分别计算每一类的方差
sita11=var([RI1]);
sita12=var([GI1]);
sita13=var([BI1]);
sita21=var([RI2]);
sita22=var([GI2]);
sita23=var([BI2]);
sita31=var([RI3]);
sita32=var([GI3]);
sita33=var([BI3]);
%------------------------分别计算三通道的概率分配---------------------------------------
R=I(:,:,1);G=I(:,:,2);B=I(:,:,3);
%将R通道作为输入
xq11=R;
xq1=double(xq11)
%计算每个点的基本概率分配
for j=1:3, t=1:43 ,p=1:52;
mu1=[E11,E21,E31];
sigma1=[sita11,sita21,sita31];
X(p,t,j)=(1/(sigma1(j)*sqrt(2*pi)))*exp(-(xq1(p,t)-mu1(j)).^2/(2*sigma1(j)^2));
end
%将概率归一化即为待分类区域在R通道中的基本分配概率
for t=1:43,p=1:52;
L(p,t)=X(p,t,1)+X(p,t,2)+X(p,t,3);
end
L1=ones(52,43);
for j=1:3;
x(:,:,j)=(L1./L).*((1/(sigma1(j)*sqrt(2*pi)))*exp(-(xq1-mu1(j)).^2/(2*sigma1(j)^2)));
end
%将G通道作为输入
xq21=G;
xq2=double(xq21);
%计算每个点的基本概率分配
for j=1:3
mu2=[E12,E22,E32];
sigma2=[sita12,sita22,sita32];
Y(:,:,j)=(1/(sigma2(j)*sqrt(2*pi)))*exp(-(xq2-mu2(j)).^2/(2*sigma2(j)^2));
end
%将概率归一化即为待分类区域在R通道中的基本分配概率
for t=1:43, p=1:52
M1(p,t)=Y(p,t,1)+Y(p,t,2)+Y(p,t,3);
end
for j=1:3
y(:,:,j)=(L1./M1).*((1/(sigma2(j)*sqrt(2*pi)))*exp(-(xq2-mu2(j)).^2/(2*sigma2(j)^2)));
end
%将B通道作为输入
xq31=B;
xq3=double(xq31);
%计算每个点的基本概率分配
for j=1:3
mu3=[E13,E23,E33];
sigma3=[sita13,sita23,sita33];
Z(:,:,j)=(1/(sigma3(j)*sqrt(2*pi)))*exp(-(xq3-mu3(j)).^2/(2*sigma3(j)^2));
end
%将概率归一化即为待分类区域在B通道中的基本分配概率
for t=1:43, p=1:52
M2(p,t)=Z(p,t,1)+Z(p,t,2)+Z(p,t,3);
end
for j=1:3
z(:,:,j)=(L1./M2).*((1/(sigma3(j)*sqrt(2*pi)))*exp(-(xq3-mu3(j)).^2/(2*sigma3(j)^2)));
end
%---------------------基于DS证据理论三通道融合-----------------------------
m11=x(:,:,1);
m12=x(:,:,2);
m13=x(:,:,3);
m21=y(:,:,1);m22=y(:,:,2),m23=y(:,:,3);
m31=z(:,:,1);m32=z(:,:,2),m33=z(:,:,3);
%计算归一化因子
K1=m11.*m22.*m33+m11.*m22.*m32+m11.*m23.*m32+m11.*m23.*m33+m11.*m21.*m32+m11.*m21.*m33+m11.*m22.*m31+m11.*m23.*m31+m12.*m21.*m33+m12.*m23.*m31+m12.*m21.*m32+m12.*m23.*m33+m12.*m21.*m31+m12.*m22.*m31+m12.*m22.*m33+m12.*m23.*m32+m13.*m21.*m32+m13.*m22.*m31+m13.*m21.*m31+m13.*m22.*m32+m13.*m21.*m33+m13.*m22.*m33+m13.*m23.*m31+m13.*m23.*m32;
% 利用DS理论将三个通道的概率分配值直接融合
for p=1:52;
for t=1:43;
m1(p,t)=m11(p,t).*m21(p,t).*m31(p,t)/(1-K1(p,t));
m2(p,t)=m12(p,t).*m22(p,t).*m32(p,t)/(1-K1(p,t));
m3(p,t)=m13(p,t).*m23(p,t).*m33(p,t)/(1-K1(p,t));
end
end
%-----------------------决策显示最终的分类图像-----------------------------
for q=1:52;
U(:,:,q)=[m1(q,:);m2(q,:);m3(q,:)];
end
%每个点对哪一类概率最大规定该点属于此类
%将每个点赋值用不同的颜色显示
for s=1:43
for q=1:52
if U(1,s,q)==max(U(:,s,q));
result(q,s,1)=1,result(q,s,2)=0,result(q,s,3)=0;
elseif U(2,s,q)==max(U(:,s,q));
result(q,s,1)=0,result(q,s,2)=1,result(q,s,3)=0;
else result(q,s,1)=0,result(q,s,2)=0,result(q,s,3)=1;
end
end
end
%显示最终的分类图像
imshow(result);