gusucode.com > Diabetic retinopathy > lda_image_processing.m

    
function [Y gout] =lda_image_processing(C,maxDC,gamma,thresh1,thresh2,g1,g2,g3,g4)

[h w d]=size(C);

 Y=C;
 X=C(:,:,1);
 U=C(:,:,2);
 V=C(:,:,3);
 
 
  
  enh_X=X;
 
  
 E=zeros(14);
 H=zeros(14); % Final gain factor
 
 E0=(X(1,1)*X(1,1));
 
 

 
 for i=1:h
     for j=i:h
         if((i>1) || (j>1))
             E(i+j-2)=E(i+j-2)+(X(i,j)*X(i,j));
         end
     end
 end
 

E_denom=(E(1)+E(2))/5;
E_num=0;
for i=3:14
    E_num=E_num+E(i);
end
E_num=E_num/58;


 
HSV_factor=E_num/(E_denom+.01);
gamma_u=1+(gamma-1)*lamda_weighting_function(HSV_factor,thresh1,thresh2); 
gout=(g1+g2+g3+g4+gamma_u)/5;
gamma_u=gout;

 xdc=X(1,1)/8;
 nxdc=xdc/maxDC;
 enxdc=(nxdc^(1/gamma_u)+(1-(1-nxdc)^(1/gamma_u)))/2;
 exdc=enxdc*maxDC;
 
  factor=(.01+exdc)/(.01+xdc);
  enh_X(1,1)=factor*X(1,1);
 
  lamda1=1;

  lamda2=factor;
 
 

 

enh_cum_E=enh_X(1,1)*enh_X(1,1);
cum_E=E0;

for n=1:14
    H(n)=enh_cum_E/cum_E;
    for i=1:h
        for j=1:w
            if(i+j-2==n)
                if(n<=2)
                enh_X(i,j)=sqrt(lamda1*H(n))*X(i,j);
                else
                  enh_X(i,j)=sqrt(lamda2*H(n))*X(i,j);
                end
                enh_cum_E=enh_cum_E+(enh_X(i,j)*enh_X(i,j));
                cum_E=cum_E+(X(i,j)*X(i,j));
            end
        end
    end
end
    
    
    

 Y(:,:,1)=enh_X;
 Y(:,:,2)=U;
 Y(:,:,3)=V;
 
 return