摘 要:本文研究的是小波变换在数字图像处理中的应用,文中介绍了数字图像处理的基本概念和小波变换的基本理论。基于图像小波理论,对图像小波变换的实现技术——Mallat算法进行了分析,并且根据Mallat算法应用VC++编程实现了图像小波变换。
关键词:小波变换; 数字图像处理; Mallat算法
引言
在近代科学研究、军事技术等领域中,获得图像信息非常重要,并且更重要的是将图像信息进行处理,在大量复杂的图像中,找出我们所需要的信息,变得越来越重要了。尤其是在当今科学技术迅速发展的时代,对图像信息处理提出了更高的要求,需要更加迅速、准确、可靠地获得有用的信息。小波变换能够对图像信息进行很好的处理,本文详细讨论了小波编码算法的工作原理及关键技术。
1 小波编码系统的优点
数字图像信号像素间一般都具有相关性,相邻之间、相邻列之间的相关性最强,其相关系数呈指规律衰减。图像中相关性的存在,是图像压缩的理论依据,使得能针对性地采用某种相关的手段去除冗余信息,达到压缩的目的。利用变换编码可以有效地消除像素间的相关性,从而获得较好的压缩效果。其基本原理就是将在时域描述的信号(如声音信号)或在空域描述的信号(如图像信号)经变换到正交向量空间(即变换域)中进行描述,在变换域的描述中各信号分量之间的相关性很小或互不相关,即能量得以集中。
2 小波变换编码工作原理及程序实现
2.1 图像小波变换的实现技术—Mallat 算法
Mallat算法是在多分辨率分析(MAR)的基础之上提出,它主要是利用MAR中空间塔式分解的多分辨特性,将计算小波系数与信号中滤波器相结合构造了一个计算小波系数的塔式分解算法,大大简化了小波系数的计算。它是小波变换的核心。
2.2 小波变换在图像变换中的应用
2.2.1 图像小波变换的重构
小波变换进行图像重构实质上是相当于分别对图像数据的行和列做一维小波逆变换。对通过水平跟垂直滤波,离散小波将一级变换后图像的4个子图进行合成。对多级变换后的图像,则先对其信息集中的图进行重构,然后逐层进行。其重构过程如图1所示,先对进行合成行成;然后逐层完成。实质上小波重构是小波分解的逆过程。
2.3 程序
2.3.1 小波正变换
在前面已介绍了小波变换的原理。下面给出用VC++编程实现小波正变换的程序代码。首先对二维小波变换进行分析。FWT_2D()函数的功能是对图像进行分解,形成子带图像以便于压缩。
2.3.2 小波逆变换
下面给出用VC++编程实现小波逆变换的程序代码。首先对二维小波逆变换函数FWT_2D()进行分析,它是FWT_2D()的一个反变换,其主要作用是将分解的图像合成来恢复出原图像的基本信息。
小波反变换代码
void FWT::FWT_2D (double *p_input, double *p_output, int m_rowLong, int m_colLong, int m_steps, int m_extendmode)
{
int i;
// p_m_temp_in用于存放填充边界后的输入数据
// p_m_temp_out用于存放填充边界后的输出数据
double *p_m_temp_in = new double 田丽华.编码理论. 西安:西安电子科技大学出版社,2003