gusucode.com > 红外图像增强及目标检测演示界面matlab源码程序 > code/LocalFeatureImEn.m
function LocalFeatureImEn X=U_Open; if (X==0) errordlg('图像打开失败');break; end label=inputdlg('若图像为暗目标图像,请输入0,否则输入1','图像类型标志',1,{'1'}); label=str2num(char(label)); if(isrgb(X)) X=rgb2gray(X); end if(label==1) [row col]=size(X); X=im2double(X(20:row-20,30:col-30)); elseif(label==0) X=im2double(X); X=max(X(:))-X; else errordlg('输入图像类型错误');break; end tic global EnLabel if(EnLabel=='m') g=LocalMenaChange(X,1,2); elseif(EnLabel=='v') g=LocalStdChange(X,3); elseif(EnLabel=='f') g=Normal2CorrEstim2(X,5); else errordlg('输入参数错误');break; end figure colormap(gray) subplot(1,2,1) imagesc(X) title('原图像') subplot(1,2,2) imagesc(g) title('增强图像') msgbox(['所用时间',num2str(toc),'秒']); %============================================================================ function N_Corr=Normal2CorrEstim2(f,L) m0=mean2(f); [row col]=size(f); N_Corr=zeros(row,col); for i=L+1:row-L for j=L+1:col-L if(f(i,j)>m0) A=f(i-L:i+L,j-L:j+L); mA=mean2(A); if(f(i,j)>mA) [X Y]=meshgrid(-L:L,-L:L); dZ=std2(A); dt=111/(dZ+50); Z=exp(-(X.^2+Y.^2)/(2*dt^2))/(2*pi*dt^2); N_Corr(i,j)=corr2(A,Z); end end end end %============================================================ function g=LocalMenaChange(f,ll,LL) m0=mean2(f); [row col]=size(f); g=zeros(row,col); for i=LL+1:row-LL for j=LL+1:col-LL if(f(i,j)>m0) a=f(i-ll:i+ll,j-ll:j+ll); mean_a=mean2(a); %if(f(i,j)>mean_a) if(mean_a>m0) A=f(i-LL:i+LL,j-LL:j+LL); mean_A=mean2(A); if(mean_a>mean_A) g(i,j)=(mean_a-mean_A)/mean_a; end end end end end %============================================================================ function g=LocalStdChange(f,LL) m0=mean2(f);dt0=std2(f); [row col]=size(f); g=zeros(row,col); for i=LL+1:row-LL for j=LL+1:col-LL if(f(i,j)>m0) A=f(i-LL:i+LL,j-LL:j+LL); %[sgf,T]=BTW_CLS_V_Segmentation(A); dt=std2(A); g(i,j)=dt; end end end