首页 百科知识 二维哈尔小波变换

二维哈尔小波变换

时间:2022-10-05 百科知识 版权反馈
【摘要】:一个图像块是一个二维的数据阵列,进行小波变换时可以对阵列的每一行进行变换,然后对行变换之后的阵列的每一列进行变换,最后对经过变换之后的图像数据阵列进行编码。为使读者对用小波变换压缩图像有一个完整的概念,还是从求均值与求差值开始。这样做的好处是可提高小波图像编码的效率。为进一步理解小波变换的基本原理和在图像处理中的应用,我们可使用MATLAB软件中的小波变换工具箱编写小波变换程序,对原始图像进行分解和重构。

假设有一幅灰度图像,其中的一个图像块用矩阵表示为

使用灰度表示的图像如图6.38所示。

图6.38 图像矩阵A的灰度图

一个图像块是一个二维的数据阵列,进行小波变换时可以对阵列的每一行进行变换,然后对行变换之后的阵列的每一列进行变换,最后对经过变换之后的图像数据阵列进行编码。

1. 求均值与求差值

为使读者对用小波变换压缩图像有一个完整的概念,还是从求均值(averaging)与求差值(differencing)开始。在图像块矩阵中,第一行的像素值为

R0:[64 2 3 61 60 6 7 57]

步骤1:在R0行上取每一对像素的平均值,并将结果放到新一行N0的前4个位置,其余的4个数是R0行每一对像素的第一个数与其相应的平均值之差。这个变换过程如下所示。

R0:

求差值:

N0:[33 32 33 32 31 -29 27 -25]

64-33=31,3-32=-29,60-33=27,7-32=-25

步骤2:对行N0的前4个数使用与步骤1相同的方法,得到两个平均值和两个系数,并放在新一行N1的前4个位置,其余的4个细节系数直接从行N0复制到N1的相应位置上。整个过程如下所示:

N0:

求差值:

N1:[32.5 32.5 0.5 0.5 31 -29 27 -25]

33-32.5=0.5、33-32.5=0.5

步骤3:用与步骤1和步骤2相同的方法,对剩余的一对平均值求平均值和差值,

N1:

求差值:

N1:[32.5 0 0.5 0.5 31 -29 27 -25]

32.5-32.5=0

2. 图像矩阵的计算

使用求均值和求差值的方法,对矩阵的每一行进行计算,得到:

其中,每一行的第一个元素是该行像素值的平均值,其余的是这行的细节系数。使用同样的方法,对AR的每一列进行计算,得到:

其中,左上角的元素表示整个图像块的像素值的平均值,其余是该图像块的细节系数。根据这个事实,如果从矩阵中去掉表示图像的某些细节系数,事实证明重构的图像质量仍然可以接受。具体做法是设置一个阈值δ,例如δ≤5 的细节系数就把它当做“0”看待,这样经过变换之后的矩阵ARC就变成:

Aδ与ARC相比,“0”的数目增加了18个,也就是去掉了18个细节系数。这样做的好处是可提高小波图像编码的效率。对Aδ矩阵进行逆变换,得到了重构的近似矩阵:

图6.39是原始图和经过去掉某些细节系数之后重构的图,也许很难断定哪一幅是原图,哪一幅是重构图。这说明图像质量的损失还是能够接受的。图6.40是各种阈值重构图像的比较。

图6.39 原图与重构图像的比较

3. 变换实例

为进一步理解小波变换的基本原理和在图像处理中的应用,我们可使用MATLAB软件中的小波变换工具箱(Wavelet Toolbox)编写小波变换程序,对原始图像进行分解和重构。

图6.41表示图像分解和重构过程。利用小波变换,用户可以按照应用要求获得不同分辨率的图像。

图6.40 各种阈值重构图像的比较

(a)原始图像;(b)δ≤5;(c)δ≤10;(d)δ≤20

图6.41 小波图像分解与重构

如图6.42所示的不同分辨率下的Lena图像,其中

图(a)表示原始的Lena图像;

图(b)表示通过一级小波变换可得到1/4分辨率的图像;

图(c)表示通过二级小波变换可得到1/8分辨率的图像;

图(d)表示通过三级小波变换可得到1/16分辨率的图像。

使用小波分解可产生多种分辨率图像。

图6.42 使用小波分解产生多种分辨率图像

(a)原始图像;(b)1/4分辨率图像;(c)1/8分辨率图像;(d)1/16分辨率图像

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈