JPEG2000的前置知识
一、小波变换
1.引言
在《数字图像处理》中学习的理论,在 JPEG2000 的底层实现中找到了完美的工程映射:
图像金字塔在标准中化身为多级小波变换(DWT)的塔式频带分解结构,为渐进传输和 ROI 编码奠定了基础
子带编码演变成了极其精妙的 EBCOT 算法,通过位平面编码和 MQ 算术编码器,实现了失真可控的嵌入式码流生成
而作为理论原型的哈尔变换,在 JPEG2000 中被更高效的 Le Gall 5/3 整数小波所取代,它利用提升方案(Lifting Scheme)实现了严格的无损可逆变换。
2.小波变换的推导
(1)常用滤波方法:
均值滤波是指任意一点的像素值,都是周围NxM 个像素值的均值。例如下图中,红色点的像素值是其周围蓝色背景区域像素值之和除25,25=5x5 是蓝色区域的大小。

这里我们要强调一个事情,就是区分什么是核。本质上,这一步操作就是,原始图像乘以1/25的5* 5矩阵

注:
1)随着核大小逐渐变大,会让图像变得更加模糊;
2)如果设置为核大小为(1,1),则结果就是原始图像。
在使用邻域平均法去噪的同时也使得边界变得模糊。而中值滤波是非线性的图像处理 方法,在去噪的同时可以兼顾到边界信息的保留。选一个含有奇数点的窗口,将这个窗口在图像上扫描,把窗口中所含的像素点按灰度级的升或降序排列,取位于中间的灰度值来代替该点的灰度值。计算过程如下图所示:

注:
1)随着核大小逐渐变大,会让图像变得更加模糊;
2)核必须是大于1的奇数,如3、5、7等;
图像高斯平滑也是邻域平均的思想对图像进行平滑的一种方法,在图像高斯平滑中,对图像进行平均时,不同位置的像素被赋予了不同的权重。高斯平滑与简单平滑不同,它在对邻域内像素进行平均时,给予不同位置的像素不同的权值,下图的所示的 3x3 和 5x5 邻域的高斯模板。

注:
1)随着核大小逐渐变大,会让图像变得更加模糊;
2)核大小(N, N)必须是大于1的奇数,如3、5、7等;
(2)图像金字塔:
定义:以多个分辨率来表示图像的一种有效且概念简单的结构是图像金字塔
如图下图所示,它包括了四层图像,将这一层一层的图像比喻成金字塔。图像金字塔可以通过梯次向下采样获得,直到达到某个终止条件才停止采样,在向下采样中,层级越高,则图像越小,分辨率越低。

向上取样:


向下取样:


基于图像金字塔理论,小波变换的本质是一种可逆的残差编码:它将图像的能量剥离,把全局结构收敛至最底层的 LL 近似子带(核心块),而将所有不可预测的边缘与纹理作为高频残差(LH/HL/HH 子带)。解码时,只需以 LL 子带为基底,逐级叠加高频残差,即可实现完美的无损重构。
书上其中有相关实现:

(3)子带编码-------共轭正交镜像滤波器组 (Conjugate Quadrature Filters, CQF)
实际上依据教材来说,这里让人看的云里雾里,我个人看了很长时间,我只觉得这只是在介绍信号与系统的相关知识,但是这章总是有意义的,他这里最重要的是介绍了以下的结构。
如下图所示:

这里的实现方法实际上很有趣
我第一眼看到这个图时,我就意识到右侧的幅频特性图,很明显,这是频谱的互补与抵消。
右侧的高通滤波器中心频率为pai,如果将高通滤波后的信号做下采样,根据采样定理,它的频谱会在频域内发生折叠(混叠)。
并且这两个频带是功率互补的,他们的平方和就是一个完美的直线。很明显这是一个全通系统,毫无能量损失。
到这里,我就很好奇,这究竟是怎么设计的,看下面的公式,对于第一次了解的我真的是第一次震惊!
因为解码端的综合滤波器 g1(n) 在设计时,故意引入了一个 (−1)n 的符号交替。
在频域上,这相当于把高通信号的频谱平移了 π (也就是翻转了 180 度)。
当解码端把两路信号相加时,低通信号正常叠加,而高通信号因为被翻转了相位,它折叠相位相差 180 度。

我实际上很讨厌先看公式,虽然公式包含了大量的信息,一直理解公式反而舍本逐末。
但是我相信天才的想法肯定不是先从公式来的,反而是一种直觉,很感性的东西,最后落实在公式,所以说我在写博客时,很讨厌上来就写公式,反而是我更喜欢讨论我看到这段文章时第一时间的感悟,最后才会简单看看公式。
(4)哈尔变换、尺度函数
实际上这部分没有什么说的呢,他只是一个函数的定义,又落实在了一个矩阵里面,他的主要作用是配合尺度函数多分辨率分析的入门演示。
它的矩阵形式极其简单(只有 +1 和 -1),这意味着在硬件上它不需要乘法器,只需要加减法和移位就能完成变换。
具体见下图:

到此为止,关于小波函数的前置知识就已经铺垫结束,现在正式进入小波函数!
