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