该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
使用小波包进行分解和重构
为了克服小波分解在高频段的频率分辨率较差,而在低频段的时间分辨率较差的缺点,人们在小波分解的基础上提出了小波包分解。小波包分解提高了信号的时频分辨率。比小波分解更高级,对信号的分解重构更能体现多分辨率的特征。是一种更精细的信号分析方法。
小波包方法是小波分解的推广,它提供了更丰富的信号分析方法。小波包元素是由三个参数确定波形,分别是:位置、尺度和频率。
对一个给定的正交小波函数,可以生成一组小波包基。每一个小波包基里提供一种特定的信号分析方法,它可以保存信号的能量并根据特征进行精确的重构。小波包可以对一个给定的信号进行大量不同的分解。
在正交小波分解过程中,一般是将低频系数分解为两部分。分解后得到一个近似系数向量和一个细节系数向量。在两个连续的近似系数中丢失的信息可以在细节系数中得到。下一步是将近似系数向量进一步分解为两个部分,而细节系数向量不再分解。
在小波包分解中,每一个细节系数向量也使用近似系数向量分解同样的分法分为两部分。因此它提供了更丰富的分析方法:在一维情况下,它产生一个完整的二叉树;在二维情况下,它产生一个完整的四叉树。
代码如下:
clear;
clc;
figure(1);
%读出原始图像
subplot(1,2,1);
input=imread('lena.jpg');
imshow(input);
title('原始图像');
%三色分离
input=double(input);
inputr=input(:,:,1);
inputg=input(:,:,2);
inputb=double(input(:,:,3));
%对原图像R分量做小波包分解
wpr=wpdec2(inputr,2,'db2','shannon'); %用db2小波对图像小波包两层分解
%对原图像G分量做小波包分解
wpg=wpdec2(inputg,2,'db2','shannon'); %用db2小波对图像小波包两层分解
%对原图像B分量做小波包分解
wpb=wpdec2(inputb,2,'db2','shannon'); %用db2小波对图像小波包两层分解
% 二维小波包分解的重构
wpr=wprec2(wpr);
wpg=wprec2(wpg);
wpb=wprec2(wpb);
%合并原图像的RGB三分量
output(:,:,1)=wpr;
output(:,:,2)=wpg;
output(:,:,3)=wpb;
subplot(1,2,2);
B=uint8(output);
imshow(B);
title('合成后原图像');