小波的秘密9_图像处理应用:图像增强

本文介绍了使用小波变换进行图像增强的技术,包括低频系数增强和高频系数衰减的方法,以及如何通过小波分析实现图像的钝化和锐化处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.前言:

图像增强问题的基本目标是对图像进行一定的处理,使其结果比原图更适合用于特定的应用领域。

在图像增强领域,图像增强问题主要通过时域和频域两种方法进行处理。时域方法通过直接在图像上作用算子来解决。频域上通过修改傅里叶变换系数来解决。这两种方法的优劣还是十分明显的,时域方法速度快但是会失去很多点点间的关联性信息;频域方法可以很详细的分离出点点间的相关信息,但是比较耗时,需要做傅里叶正反变换,计算量很大。

2.小波分析的优势

小波分析是对时域和频域的权衡结果。傅里叶分析在所有点的分辨率都是原始图像的尺度,对于问题本身的要求,我们可能并不需要这么大的分辨率,而单纯的进行时域分析又显得十分的粗糙。小波的灵活性在于我们可以选择任意的分解层数,尽量减少计算量。

小波变换将一份图像分解成大小、位置和方向都不同的分量。在做逆变换之前可以改变小波变换域中某些系数的大小,从而实现图像增强的目标。

3.低频系数增强,高频系数衰减

[cpp]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. <span style="font-size:18px;">clear all;  
  2. load sinsin  
  3. subplot(121);image(X); %画出原始图像  
  4. colormap(map);  
  5. xlabel('(a)原始图像');  
  6. axis square  
  7. %下面进行图像的增强处理  
  8. %用小波函数sym4对X进行2层小波分解  
  9. [c,s]=wavedec2(X,2,'sym4');  
  10. sizec=size(c);  
  11. %对分解系数进行处理以突出轮廓部分,弱化细节部分  
  12. for i=1:sizec(2)  
  13.    if(c(i)>350)  
  14.       c(i)=2*c(i);  
  15.    else  
  16.       c(i)=0.5*c(i);  
  17.    end  
  18. end  
  19. xx=waverec2(c,s,'sym4'); %下面对处理后的系数进行重构  
  20. %画出重构后的图像  
  21. subplot(122);image(xx);  
  22. colormap(map);  
  23. xlabel('(b)增强图像');  
  24. axis square</span><span style="font-size:24px;">  
  25. </span>  



4.钝化处理

所谓的钝化操作,就是保留图像的低频部分。在时域中,我们可以直接进行平滑滤波;在频域中,直接提取低频成分就好。
[cpp]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. clear all;  
  2. load chess         % 读入chess信号  
  3. % 分别保存用DCT方法和小波方法的变换系数  
  4. blur1=X;  
  5. blur2=X;  
  6. % 对原图像做二维离散余弦变换  
  7. subplot(221);image(wcodemat(X,192));  
  8. colormap(gray(256));xlabel('(a)原始图像');  
  9. subplot(222);image(wcodemat(X,192));  
  10. colormap(gray(256));xlabel('(b)原始图像');  
  11. ff1=dct2(X);  
  12. % 对变换结果在频域做BUTTERWORTH滤波  
  13. for i=1:256  
  14.    for j=1:256  
  15.       ff1(i,j)=ff1(i,j)/(1+((i*j+j*j)/8192)^2);  
  16.    end  
  17. end  
  18. % 重建变换后的图像  
  19. blur1=idct2(ff1);  
  20. % 对图像做2层的二维小波分解  
  21. [c,l]=wavedec2(X,2,'db3');  
  22. csize=size(c);  
  23. % 对低频系数进行放大处理,并抑制高频系数  
  24. for i=1:csize(2);  
  25.    if(c(i)>300)  
  26.       c(i)=c(i)*2;  
  27.    else  
  28.       c(i)=c(i)/2;  
  29.    end  
  30. end  
  31. % 通过处理后的小波系数重建图像  
  32. blur2=waverec2(c,l,'db3');  
  33. % 显示三幅图像  
  34. subplot(223);image(wcodemat(blur1,192));  
  35. colormap(gray(256));xlabel('(c)采用DCT方法钝化图像');  
  36. subplot(224);image(wcodemat(blur2,192));  
  37. colormap(gray(256));xlabel('(d)采用小波方法钝化图像');  
运行结果:
采用DCT在频域做滤波的方法得到的钝化结果更为平滑,这是因为DCT的方法分辨率很高。而小波方法在很多地方有不连续现象,因为我们对系数做放大或抑制在与之两侧有间断,而且分解层数很低,没有完全分离出频域的信息。

5.锐化处理

锐化的目标与钝化刚好相反,是为了突出高频信息,抑制低频信息。
[cpp]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1.  clear all;  
  2. load chess;           % 读入chess信号  
  3. % 分别保存用DCT方法和小波方法的变换系数  
  4. blur1=X;  
  5. blur2=X;  
  6. subplot(221);image(wcodemat(X,192));  
  7. colormap(gray(256));xlabel('(a)原始图像');  
  8. subplot(222);image(wcodemat(X,192));  
  9. colormap(gray(256));xlabel('(b)原始图像');  
  10. % 对原图像做二维离散余弦变换  
  11. ff1=dct2(X);  
  12. % 对变换结果在频域做BUTTERWORTH滤波  
  13. for i=1:256  
  14.    for j=1:256  
  15.       ff1(i,j)=ff1(i,j)/(1+(32768/(i*i+j*j))^2);  
  16.    end  
  17. end  
  18. % 重建变换后的图像  
  19. blur1=idct2(ff1);  
  20. % 对图像做2层的二维小波分解  
  21. [c,l]=wavedec2(X,2,'db3');  
  22. csize=size(c);  
  23. % 对低频系数进行放大处理,并抑制高频系数  
  24. for i=1:csize(2);  
  25.    if(abs(c(i))<300)  
  26.       c(i)=c(i)*2;  
  27.    else  
  28.       c(i)=c(i)/2;  
  29.    end  
  30. end  
  31. % 通过处理后的小波系数重建图像  
  32. blur2=waverec2(c,l,'db3');  
  33. subplot(223);image(wcodemat(blur1,192));  
  34. colormap(gray(256));xlabel('(c)采用DCT方法锐化图像');  
  35. subplot(224);image(wcodemat(blur2,192));  
  36. colormap(gray(256));xlabel('(d)采用小波方法锐化图像');  
图像处理结果:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值