当前位置:文档之家› 小波图像分解与合成的设计报告内容

小波图像分解与合成的设计报告内容

小波图像分解与合成的设计报告内容小波图像分解与合成的设计报告内容一、小波图像分解与合成及阈值测试概述(一)、haar小波与Daubechies小波分解与重构概述根据haar函数定义,可得出当N=2时,哈尔(haar)正规化变换矩阵为,因为haar矩阵是正交矩阵,具可分离变换性质,对二维的像素矩阵,可由连续2次运用一维的haar小波变换来实现,如对图像像素矩阵的每一行求变换后,再对其每一列求变换可得二维haar小波变换,这叫标准分解,如果交替地对每一行和每一列像素值进行变换,则为非标准分解。

并且可利用矩阵形式的优点,对1×N的像素矩阵分解成若干个1×2的矩阵与上述N=2的haar正规化变换矩阵作一维的haar小波变换,减少计算量,实现haar小波分解。

因为正规化的haar变换矩阵为对称变换矩阵,其逆变换矩阵和正变换的相同,只要把原来每次变换后得到的矩阵数值再作一次变换,则可以实现重构。

Haar小波在时域上是不连续的,因此分析性能并不很好,但它的计算简单。

这里程序采用非标准分解方法。

在变换矩阵中,第一列变换得到图像像素均值,为图像像素低频分量,第二列得到图像像素差值,为高频分量,原像素值第i对像素分解的低频和高频分量值分别存在矩阵的i和N/2+i处。

重构时取回这两个数值,再与逆变换矩阵相乘存回原处,则实现重构。

根据Daubechies小波的定义,可设计出一组满足正交化要求的滤波器,利用卷积模板实现低通和高通功能,主要步骤为:1.利用Matlab中的Daubechies小波滤波器计算函数dbaux求出滤波器作模板系数,对dbN,滤波器长度为2N,这里求db9,其滤波器长度为18。

2.由于图像像素只有有限的2N个非零值,就需要解决边界问题。

Matlab软件里缺省的分解模式sym采用对称周期化扩展技术。

也就是将图像的四个边界先做对称处理的矩阵拓展,避免了边界的不连续性。

如图(这里以256×256为例,即从标号0到255):_________|______________________________________|______________ |—|—|—|—|—|—|—|———|——|——|——|——|——|——|——||2 |1 |0 |0 |1 |2 |3 |......|252 |253 |254 |255 |255 |254 |253 | |—|—|—|—|—|—|—|———|——|——|——|——|——|——|——|_________|______________________________________|______________对1×M的矩阵像数值,其dbN一次变换(低通、高通)后输出的总长度为M+2(N-1),矩阵拓展长度为M+4×(N-1)。

如对1×256,一次变换后低通、高通系数总长度为272,则矩阵需对称拓展至288再作卷积运算。

3.将模板上系数与矩阵(一维)对应象素相乘再求和(卷积运算)。

4.将所得数存到相应位置。

5.模板右移两个像素,再做同样计算,直至计算完最后2N个像素为止。

分解(正变换)与重构(逆变换)的滤波器可在MA TLAB中用以下命令得到:逆变换的低通滤波器rh=dbaux(N)逆变换的高通滤波器rg(n)=-(-1)^n×rh(2N-n+1); (n=1,2,...,2N)正变换的低通滤波器h=rh(2N:-1:1);正变换的高通滤波器g(n)=(-1)^n×rh(n) ; (n=1,2,…,2N)重构过程为高低频滤波器与各个矩阵卷积后再相加来恢复图像数据的,卷积解释与分解类似,但要根据分解时扩展矩阵方式,重构时对矩阵向前或向后插入零,保证输出的矩阵长度为原矩阵长度。

从定义可以知道,db1变换即为haar小波变换,所以对像素矩阵长度不为2的倍数的图像,haar小波变换也可以用同样方法作分解与重构(低通为[0.5 0.5],高通为[-0.50.5])。

如要正规化,分解与重构滤波器乘以即可。

这里的三级非标准小波分解与重构采用八带分解方法,即每级对低频部分分解,对每一级分解的高频部分不再进一步分解。

(二)、关于阈值测试小波变换对图像压缩可以分为以下几个主要步骤:1.利用离散小波变换将图像分解成为低频分量,高频的水平边缘分量,垂直边缘分量和对角边缘分量。

2.对低频和高频的图像根据人类的视觉生理和心理特点作不同的量化和编码处理,进行压缩。

3.利用小波逆变换还原出原来的图像。

其中量化工作有很多方式,这里采用阈值的设置,对采用不同小波变换后得到的低频和高频图像设置不同阈值后得到的分解图像的含“0”数目及重构产生的不同图像文件大小作分析,即为本次报告阈值测试的目的。

程序用Matlab中小波函数分解图像,设置阈值后再重构保存图像,比较不同阈值设置的测试结果。

这里要做一些补充说明:因为并没有要求对分解图像作进一步的量化及编码处理后压缩存放,而是重构后存放,所以并不能对不同小波的压缩率好坏作出结论。

只能根据测试结果及小波定义作一些概括性的分析。

并且由于Matlab中保存PNG格式的图像文件,与其他程序(如photoshop 6.0)保存的PNG文件有偏差,这里为保证对比的一致性,对真彩色图像先用Matlab对图像文件读入后保存,再作测试,保证原始图像与重构图像存放条件的一致性。

对索引图像,因为其读入图像矩阵数值并不是图像颜色值,对其作测试后重构的图像,失真程度厉害,不具有实际意义,最终还是转换为真彩色图像作比较,这里不作讨论。

二、源程序(程序注释中已含程序的使用方法)(1).3级非标准小波分解与重构程序①多级非标准haar小波分解程序l 源程序:nstdhaardec2.m②多级非标准haar小波重构程序l 源程序:nstdhaarrec2.m③多级非标准小波分解程序l 源程序:mydwt2.m④多级非标准小波重构程序l 源程序:myidwt2.m(2).haar小波3级非标准规格化分解和重构过程的演示程序(使用自定义的haar函数,可自选图像文件,真彩色或索引色,但限于像素为2倍数的对称图像)l 源程序1:nstdhaardemo.ml 对不同图像格式的处理说明:如输入的是彩色真彩图片,要做如下处理:装载入的图像数值矩阵X为三维矩阵,有R、G、B三个分量的二维数值,须分别对每一维的数据都做分解与重构,再转换为uint8数据类型显示其彩色图像。

如输入的是黑白图片,即输入的矩阵X为二维矩阵,只对其作分解与重构即可。

(3).使用小波变换在不同阈值下压缩图像的测试程序(使用Matlab函数,可自选图像文件(真彩色或索引图)、小波函数、分解级数及阈值的增加值)l 源程序:thresholdtestdemo.m(4).不同小波在不同分解模式下3级分解与重构图像演示程序(课程设计内容外补充)l 源程序:modetest.m一:引言本文从二维小波理论出发,对其在图像处理的应用上进行了一些分析和处理,力图反映出小波分析在图像处理方面有着其独特的特点。

本文就以下几点进行阐述:①小波基本概念②图像压缩③图像消噪④图象增强⑤图象平滑处理二:小波基本概念小波定义:设,其傅立叶变换为,当满足允许条件,即完全重构条件或恒等分辨条件. 时,我们称为一个基本小波或母小波,将母函数经伸缩和平移后,得。

我们称其为一个小波序列。

其中a为伸缩因子,b为平移因子。

小波变换是一种信号的时间——尺度分析方法,他具有多分辨率分析的特点,而且在时频两域都具有表征信号局部特征的能力,是一种窗口大小固定不变但其形状可变,时间窗和频率窗都可变的时频局部化分析方法。

即再低频部分具有较高的频率分辨率和时间分辨率,在高频部分具有较高的时间分辨率和较低的频率分辨率,很适合探测正常信号中夹带的瞬态反常现象并展示其成分,所以被誉为分析信号的显微镜。

波分析是把信号分解成低频al和高频dl两部分,在分解中,低频al中失去的信息由高频dl 捕获。

在下一层的分解中,又将al分解成低频a2和高频d2两部分,低频a2中失去的信息由高频d2捕获,如此类推下去,可以进行更深层次的分解。

二维小波函数是通过一维小波函数经过张量积变换得到的,二维小波函数分解是把尺度j的低频部分分解成四部分:尺度j+1的低频部分和三个方向(水平、垂直、斜线)的高频部分。

三:图像压缩对于图像来说,如果需要进行快速或实时传输以及大量存储,就需要对图像数据进行压缩。

在同样的通信容量下,如果图像数据压缩后在传输,就可以传输更多的图像信息。

例如,用普通的电话线传输图像信息。

图像压缩研究的就是寻找高压缩比的方法且压缩后的图像要有合适的信噪比,在压缩传输后还要恢复原信号,斌且在压缩、传输、恢复的过程中,还要求图像的失真度小。

这就是图像压缩的研究问题。

图像数据往往存在各种信息的冗余、如空间冗余、信息熵冗余、视觉冗余和结构冗余等等。

所谓压缩就是去掉各种冗余,保留对我们有用的信息。

图像压缩的过程常称为编码。

相对的,图像的恢复当然就是解码了。

图像压缩的方法通常可分为有失真编码和无失真编码两大类:无失真编码方法如改进的霍夫曼编码。

有失真编码方法的还原图像较之原始图像存在着一些误差,但视觉效果是可以接受的。

常见的方法有预测编码、变换编码、量化编码、信息熵编码、分频带编码和结构编码等等。

而将小波分析引入图像压缩的范畴也是一个重要的手段,并且有着它自己的特点。

它的特点在于压缩比高、压缩速度快,压缩后能保持信号与图像的特征基本不变,且在传递过程中可以抗干扰等等。

下面我们就举一个粒子来说明怎样用小波分析进行图像压缩。

例如现在有一个二维图像(文件名为),我们利用二维小波分析来进行图像压缩。

由原理可知,一个图像作小波分解后,可得到一系列不同分辨率的子图像,不同分辨率的子图像对应的频率是不相同的。

高分辨率(高频)子图像上大部分点的数值都接近于0,越是高就越是明显。

而对于一个图像来说,表现一个图像的最主要的部分是低频部分,所以最简单的压缩方法是利用小波分解去掉图像的高频部分而只保留低频部分。

程序大致如下:clear%装入图像load wbarb;%显示图像syms X;subplot(221);image(coast);colormap(map)title('原始图像');axis squaredisp('压缩前图像X的大小');whos('coast')%对图像用小波进行层小波分解[c,s]=wavedec2(X,2,'bior3.7');%提取小波分解结构中的一层的低频系数和高频系数cal=appcoef2(c,s,'bior3.7',1);%水平方向ch1=detcoef2('h',c,s,1);%垂直方向cv1=detcoef2('v',c,s,1);%斜线方向cd1=detcoef2('d',c,s,1);%各频率成份重构a1=wrcoef2('a',c,s,'bior3.7',1);h1=wrcoef2('h',c,s,'bior3.7',1);v1=wrcoef2('v',c,s,'bior3.7',1);d1=wrcoef2('d',c,s,'bior3.7',1);c1=[a1,h1;v1,d1];%显示分频信息subplot(222);image(c1);axis square;title ('分解后低频和高频信息');%进行图像压缩%保留小波分解第一层低频信息%首先对第一层信息进行量化编码ca1=appcoef(c,s,'bior3.7',1);ca1=wcodemat(ca1,440,'mat',0);%改变图像高度并显示ca1=0.5*ca1;subplot(223);image(ca1);colormap(map);axis square;title('第一次压缩图像');disp('第一次压缩图像的大小为:'); whos('ca1')%保留小波分解第二层低频信息进行压缩ca2=appcoef2(c,s,'bior3.7',2);%首先对第二层信息进行量化编码ca2=wcodemat(ca2,440,'mat',0);%改变图像高度并显示ca2=0.25*ca2;subplot(224);image(ca2);colormap(map);axis square;title('第二次压缩图像');disp('第二次压缩图像的大小为:'); whos('ca2')输出结果如图:NameSizeBytesclass压缩前图像X256×256524288Double array第一次压缩图像Ca1135×135145800Double array第二次压缩图像Ca275×7545000Double array在这里可以看出,第一次压缩我们是提取原始图像中小波分解第一层的低频信息,此时压缩效果较好,压缩比较小(约为1/3大小)。

相关主题