www.gusucode.com > 二进小波和非线性变换的图像增强matlab源码程序 > WaveletEnhance_IE3_Global.m
% 基于DWT的图像自适应增强 (电子学报1999.vol.27,No.9) clear all; % B = double(imread('LENNA.bmp'));%gray21.tiff B = double(imread('lena.bmp'));%gray21.tiff A = B(:,:,1); %ff=[1,1,1;,1,1,1;1,1,1]/9; %A = imfilter(A,ff,'replicate'); s = size(A); s1 = s(1,1); s2 = s(1,2); figure,imshow(A/256); %noise = randn(size(A)); %PSF = fspecial('motion',6,0); %Blurred = imfilter(I,PSF,'circular'); %A = A + noise; % (1) -------------对图像A作小波变换------------------------ h = sqrt(2)*[-1/8,1/4,3/4,1/4,-1/8]; % g = sqrt(2)*[0,0,-1/4,1/2,-1/4]; %h=sqrt(2)*[0.02674876,-0.01686412,-0.07822327,0.26686412,0.6029492,0.26686412,-0.07822327,-0.01686412,0.02674876]; %g=sqrt(2)*[0.0456359,-0.02877176,-0.2956359,0.5575435,-0.2956359,-0.02877176,0.0456359]; DEPTH = 4; % 小波分解的层数 b = 0.2; c = 5; a = 1/(1/(1+exp(c*(b-1)))-1/(1+exp(c*(1+b)))); k = 1; ALL = A; while (k <= DEPTH) [ALL,ALH,AHL,AHH] = MyDWT2(ALL,h,g); M = max(max(ALH)); ALH = ALH/M; ALH = a*(1./(1+exp(c*(b-ALH)))-1./(1+exp(c*(b+ALH)))); ALH = M*ALH; M = max(max(AHL)); AHL = AHL/M; AHL = a*(1./(1+exp(c*(b-AHL)))-1./(1+exp(c*(b+AHL)))); AHL = M*AHL; M = max(max(AHH)); AHH = AHH/M; AHH = a*(1./(1+exp(c*(b-AHH)))-1./(1+exp(c*(b+AHH)))); AHH = M*AHH; s1 = s1/2; s2 = s2/2; B(1:s1,1:s2) = ALL; B(1:s1,s2+1:2*s2) = ALH; B(s1+1:2*s1,1:s2) = AHL; B(s1+1:2*s1,s2+1:2*s2) = AHH; ALH = zeros(s1,s2); AHL = zeros(s1,s2);AHH = zeros(s1,s2); k = k+1; end h1 = sqrt(2)*[1/4,1/2,1/4]; g1 = sqrt(2)*[-1/8,-1/4,3/4,-1/4,-1/8,0,0]; k = k-1; while (k >= 1) if ( k==DEPTH ) ALL = B(1:s1,1:s2); end ALH = B(1:s1,s2+1:2*s2); AHL = B(s1+1:2*s1,1:s2); AHH = B(s1+1:2*s1,s2+1:2*s2); ALL = MyDWT2(ALL,ALH,AHL,AHH,h1,g1); s1 = s1*2; s2 = s2*2; k = k-1; end A0=ALL; figure,imshow(A0/256);