⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rltentrpthreshold2d.m

📁 一种彩色分割的算法,基于各个波段进行分割,然后将分割的结果进行融合
💻 M
字号:
function [KL,KJ,KG]=rltentrpthreshold2D(im)
% RLTENTRPTHRESHOLD2D thresholds gray-scale image using Local Relative Entropy, 
% Joint Relative Entropy and Globle Relative Entropy methods
% input is image IM
% output are:
% KL : local relative entropy threshold
% KJ : joint relative entropy threshold
% KG : global relative entropy threshold
% Programmed By Yingzi (Eliza) Du on 03/08/2004

mn=min(min(im))+1;
mx=max(max(im))+1;
his2 = hist2D(im);
Nm=zeros(1,256);
k=0;

ml=100000;
mj=100000;
mg=-100000;
his=hist(im);
for i=mn:mx
    if his(i)>0
       k=k+1;
    end;
    Nm(i)=k;
end;  

for i=mn:mx-1;
   Hge=0;
   Hle=0;
   Hje=0;
   Pa=sum(sum(his2(mn:i,mn:i)));
   Pb=sum(sum(his2(mn:i,i+1:mx)));
   Pc=sum(sum(his2(i+1:mx,i+1:mx)));
   Pd=sum(sum(his2(i+1:mx,mn:i)));
   qa=0;
   qb=0;
   qc=0;
   qd=0;
   %this part to make sure there is no 0 for the information calculation
   %calculate the new local, joint and relative entgopy
   Hr=0;
   hisa=his2(mn:i,mn:i);
   hisb=his2(mn:i,i:mx);
   hisc=his2(i+1:mx,i+1:mx);
   hisd=his2(i+1:mx,mn:i);
   area1=Nm(i);
   area2=Nm(mx)-area1;
   if (Pa>0)
      qa=Pa/area1/area1;
      Hle=-Pa.*log(qa./(Pa+Pc));
      hisa=(hisa==0)+hisa;
      Hle=Hle+sum(sum(hisa.*log(hisa)));
      Hge=Pa*log(qa);
   end;
   if (Pb>0)
      qb=Pb/area2/area1;
      Hje=-Pb*log(qb/(Pb+Pd));
      hisb=(hisb==0)+hisb;
      Hje=Hje+sum(sum(hisb.*log(hisb)));
      Hge=Hge+Pb*log(qb);
  end;
   if (Pc>0 )
     qc=Pc/area2/area2;
     Hle=Hle-Pc*log(qc/(Pa+Pc));
     hisc=(hisc==0)+hisc;
     Hle=Hle+sum(sum(hisc.*log(hisc)));
     Hge=Hge+Pc*log(qc);
   end;
   if (Pd>0)
      qd=Pd/area1/area2;
      Hje=Hje+Pd*log(qd/(Pb+Pd));
      hisd=(hisd==0)+hisd;
      Hje=Hje+sum(sum(hisd.*log(hisd)));
      Hge=Hge+Pd*log(qd);
   end;
   if Pa+Pc>0
     Hle=Hle./(Pa+Pc)-log(Pa+Pc);
     if Hle<ml
      ml=Hle;
      KL=i-1;
     end; 
   end;
   if (Pb+Pd>0)
      Hje=Hje./(Pb+Pd)-log(Pb+Pd);
      if(Hje<mj )
       mj=Hje;
       KJ=i-1;
      end;
   end;
   if Hge>mg
      mg=Hge;
      KG=i-1;
   end;
end;



   
   
   
   
   
   
   
   
   
   
   

      

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -