📄 waveletenhance_ie3_global.m
字号:
% 基于DWT的图像自适应增强 (电子学报1999.vol.27,No.9)
clear all;
B = double(imread('LENNA.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 = MyIDWT2(ALL,ALH,AHL,AHH,h1,g1);
s1 = s1*2; s2 = s2*2;
k = k-1;
end
A0=ALL;
figure,imshow(A0/256);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -