• 大小: 91KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-16
  • 语言: Matlab
  • 标签:

资源简介

用matlab编写的二维最大熵和最小交叉熵实现图像的分割,之后再用灰度值进行图像增强。

资源截图

代码片段和文件信息

%二维最大熵法和交叉熵法结合
close all;
clear all; 
clc; 
%读入红外灰度图像
I=imread(‘13.bmp‘);  
%  I=imread(‘D:\hdtx\000000014.bmp‘); 
% I=imread(‘D:\hdtx\2.bmp‘);
% I=imread(‘D:\hdtx\1.bmp‘);
%显示红外图像
subplot(221); 
imshow(I); 
% a=histeq(a); 
% a=medfilt2(a);
a0=double(I);
%求解图像的长度
[mn]=size(I); 
L=256;
h=1; 
HA=zeros(256256);
H=zeros(LL);
a1=zeros(mn); 
PA(256256)=0;
Hll=0;
hmax=0;
vll=0;
mll=0;
H0=zeros(256256);
H1=zeros(256256);
% 计算平均领域灰度的一维灰度直方图 
for i=1:m 
    for j=1:n 
        for k=-h:h 
            for w=-h:h; 
                p=i+k; 
                q=j+w; 
                if (p<=0)|( p>m) 
                    p=i; 
                end 
                if (q<=0)|(q>n) 
                    q=j; 
                end 
                 a1(ij)=a0(pq)+a1(ij); 
             end 
        end 
        a2(ij)=uint8(1/9*a1(ij)); 
    end 
end 
fxy=zeros(256256); 
% 计算二维直方图 
for i=1:m 
    for j=1:n 
        c1=a0(ij); 
        d=double(a2(ij)); 
        fxy(c1+1d+1)=fxy(c1+1d+1)+1; 
     end 
end 
  
Pxy=fxy/m/n;    
%利用递推算法求解最大熵
%-----求解图片的最大熵----%
for i=1:256
    for j=1:256
      if(Pxy(ij)==0)
          Hll=Hll;
          vll=vll;
      else
          Hll=Hll-Pxy(ij)*log(Pxy(ij));
          vll=vll+i*j*Pxy(ij);
      end 
       mll=mll+Pxy(ij)*log(i*j);
    end 
end 
%---------------------------%
%----递推求解
PA(11)=Pxy(11);
if (PA(11)==0)
    HA(11)=0; 
     v1(11)=0;
     m1(11)=0;
else 
    HA(11)=-PA(11)*log(PA(11)); 
end 
for s=2:L
    PA(s1)=PA(s-11)+Pxy(s1);
    v1(s1)=0;
    m1(s1)=0;
    for t=2:L
         v1(1t)=0;
          m1(1t)=0;
          PA(1t)=PA(1t-1)+Pxy(1t);
          PA(st)=PA(st-1)+PA(s-1t)-PA(s-1t-1)+Pxy(st);
          m1(st)=m1(st-1)+m1(s-1t)-m1(s-1t-1)+Pxy(st)*log(t*s);
    end 
end 
for s=2:L
    if(Pxy(s1)==0)
        HA(s1)=HA(s-11);
    else 
    HA(s1)=HA(s-11)-Pxy(s1)*log(Pxy(s1));
    end 
end 
    for t=2:L
         if(Pxy(1t)==0)
         HA(1t)=HA(1t-1);
         else 
         HA(1t)=HA(1t-1)-Pxy(1t)*log(Pxy(1t));
         end 
    end 
    for s=2:L
       for t=2:L
         if(Pxy(st)==0)
         HA(st)=HA(st-1)+HA(s-1t)-HA(s-1t-1);
         v1(st)=v1(st-1)+v1(s-1t)-v1(s-1t-1);
         else 
         HA(st)=HA(st-1)+HA(s-1t)-HA(s-1t-1)-Pxy(st)*log(Pxy(st));
         v1(st)=v1(st-1)+v1(s-1t)-v1(s-1t-1)+t*s*Pxy(st);
         end 
    end 
end 
Px=1-PA;
for s=1:256
    for t=1:256
        if(PA(st)>=0.00001&Px(st)>=0.00001)
            H(st)=log(PA(st))+log(Px(st))+HA(st)/PA(st)+(Hll-HA(st))/Px(st);
            I7(st)=(v1(st)/PA(st))*m1(st)+((vll-v1(st))/Px(st))*(mll-m1(st));
        else 
            H(st)=0;
        end 
    end
end
Hmax=max(max(H(:)));
I7max=max(max(I7(:)));
r1=(Hmax^2-I7max)/(I7max^2-I7max+Hmax-Hmax^2);
r2=1-r1;
for i=1:256
    for j=1:256
        HH(ij)=r1*H(ij)+r2*

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      77878  2012-04-10 08:55  二维最大熵与交叉熵结合\1.bmp

     文件      77878  2012-04-16 22:13  二维最大熵与交叉熵结合\11.bmp

     文件      77878  2012-04-16 22:13  二维最大熵与交叉熵结合\12.bmp

     文件      77878  2012-04-16 22:13  二维最大熵与交叉熵结合\13.bmp

     文件       4296  2012-05-10 19:32  二维最大熵与交叉熵结合\shou1.m

     文件       4202  2012-05-10 19:31  二维最大熵与交叉熵结合\shou2.m

     文件       4084  2012-05-10 19:33  二维最大熵与交叉熵结合\shou3.m

     文件       4089  2012-05-10 19:17  二维最大熵与交叉熵结合\shou4.m

     目录          0  2012-11-15 20:08  二维最大熵与交叉熵结合

----------- ---------  ---------- -----  ----

               328183                    9


评论

共有 条评论

相关资源