13.2 非线性变化的图像增强和补偿——基于DWT的图像自适应增强 (matlab程序)

1.简述

      

在实际应用当中,有时候需要进行图像增强来改善图像的视觉效果。在此问题处理当中,按照颜色可以分为灰度图像增强和彩色图像增强。按照作用域分类,可以分为空域处理和频域处理。

图像空域处理方法通常有灰度变换,直方图均衡,图像平滑和锐化。频域处理有DFT变换,采用滤波的方法进行图像增强。现有的方法自适应的效果都比较差,这里提出一种模糊自适应的方法——基于DWT的图像自适应增强。

2.代码

 

clear all;
B = double(imread('lena.bmp'));            
A = B(:,:,1);
s = size(A); s1 = s(1,1); s2 = s(1,2);
figure,imshow(A/256);

%%    对图像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];

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);
 

 

 

猜你喜欢

转载自blog.csdn.net/m0_57943157/article/details/131524411
今日推荐