分布式视频编码(DVC)的像素域与小波域Wyner - Ziv方法
像素域Wyner - Ziv方法
在像素域的分布式视频编码中,采用了一种特定的框架来实现高效的视频编码。
编码框架
该框架由帧内编码器和帧间解码器组成。对于奇数帧($X_{2i - 1}$ 和 $X_{2i + 1}$),使用传统的帧内编码和解码方法。而对于偶数帧 $X_{2i}$,其编码过程如下:
1. 在编码器端,将相邻像素分组为向量 $x$,并使用一对格型矢量量化器(LVQ)对其进行量化。
2. 计算两个格型量化的差值符号 $q_x$,并使用Slepian - Wolf编码器对其进行编码。
3. 所有的奇偶校验位存储在缓冲区中,准备根据解码器的需求发送。
在解码器端:
1. 首先,从 $X_{2i - 1}$ 和 $X_{2i + 1}$ 进行插值(或运动补偿插值),得到边信息 $Y_{2i}$。
2. 对 $Y_{2i}$ 使用与编码器相同的两个LVQ进行量化,得到 $q_y$。
3. 使用 $q_y$ 和接收到的奇偶校验位进行LDPC解码,恢复 $q_x$,并进行LVQ解码恢复 $Q(x)$。
4. 最后,使用 $y$ 来重建 $x$,得到最终的重建结果 $\hat{x}$。
使用一对格型量化器和LDPC,比使用标量量化(SQ)和Turbo编码具有更好的效率。同时,基于快速算法的LVQ不会使编码器的复杂度比SQ高很多,并且编码器中省略了复杂的运动估计,因此该系统具有低复杂度的编码器。
实现细节
-
LVQ编码
:纯LVQ是将输入向量 $x$ 编码为最接近它的格点 $Q(x)$ 的索引。使用快速算法来实现。带有边信息的LVQ编码过程如下:
1. 分别获取 $Q(x)$ 和 $Q_1(x)$,计算差值向量 $T(x) = Q(x) - Q_1(x)$,并将 $T(x)$ 发送到解码器。
2. 获取 $Q(y)$,并找到 $Q(y)$ 周围的所有格点,即 ${Q(y_1), Q(y_2), \cdots, Q(y_{N - 1})}$,其中 $N$ 是差值向量的数量。
3. 计算 $S_i = T(x) + Q(y_i)$($i = 1, \cdots, N$),其中 $Q(y_N) = Q(y)$。
4. 从 $S_i$($i = 1, \cdots, N$)中确定子格点,显然只有 $Q_1(x)$ 是子格点,从而得到 $Q_1(x)$。
5. 找到 $Q(x)$,即 $Q(x) = T(x) + Q_1(x)$。
由于 $T(x)$ 代表一组格点,因此只发送 $T(x)$ 可以实现压缩,压缩率由 $N$ 决定。
-
重建 :在重建过程中,如果 $y$ 在 $Q(x)$ 指示的区域内,则将 $y$ 作为重建结果,即 $\hat{x} = y$,否则,将格区域内最接近 $y$ 的点作为恢复结果。
-
Slepian - Wolf编解码器 :对于固定速率的LDPC,将其所有奇偶校验位存储在缓冲区中,然后根据解码器的需求,逐步发送部分奇偶校验位,直到消息传递算法(MPA)收敛。MPA用于处理接收到的奇偶校验位和 $q_y$,$q_y$ 类似于通过二元对称信道的 $q_x$ 的噪声版本。
实验结果
实验条件与相关研究类似,仅统计偶数帧的亮度。使用格型 $A_2$,尝试了不同的 $N$ 值($N = 7, 13, 31, 61, 217$,对应的像素比特数分别为 $1.5, 2, 2.5, 3, 4$)。实验包括:
1. 比较LVQ + LDPC与SQ + LDPC,以验证LVQ的功能。
2. 将该系统与视频标准编码H.263 +(I - B - I - B和I - I - I - I)进行比较。
实验结果表明,在该分布式视频编码(DVC)中,LVQ的性能优于SQ,整个系统的PSNR比相关研究提高了约1dB,并且比H.263 +的帧内编码高4 - 8dB。对于高运动的Foreman序列,该技术的性能优于没有运动补偿的情况。
下面是像素域编码框架的mermaid流程图:
graph LR
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px
A(编码器):::process --> B(分组为向量x):::process
B --> C(LVQ量化):::process
C --> D(计算差值符号qx):::process
D --> E(Slepian - Wolf编码):::process
E --> F(存储奇偶校验位):::process
G(解码器):::process --> H(插值得到Y2i):::process
H --> I(LVQ量化得到qy):::process
I --> J(接收奇偶校验位):::process
J --> K(LDPC解码恢复qx):::process
K --> L(LVQ解码恢复Q(x)):::process
L --> M(重建x得到x̂):::process
F --> J
小波域Wyner - Ziv方法
在小波域中提出了一种基于格型矢量量化的分布式视频编码范式。
动机
现有的一些实用DVC系统中,Anne Aaron和Bernd Girod提出了一种低复杂度编码器的方案,该方案基于DCT域。然而,离散小波变换(DWT)可以克服块式DCT带来的“块效应”,并在图像编码中实现更好的编码性能。因此,在该方案中,希望在小波域中建立DVC方案。同时,使用一对格型矢量量化器(LVQ)来消除小波系数之间的依赖关系,与基于标量量化(SQ)的方案不同。
边信息在DVC中非常重要,边信息的依赖性越强,Slepian - Wolf编解码器的负担就越小,发送的比特数也越少。为了获得更好的边信息,提出了使用部分解码的当前帧来细化重建和更新边信息,并给出了一种新的搜索策略,即修改的加权最小绝对距离(MWMAD),用于小波系数向量重建的运动搜索。
编码框架概述
该框架主要基于相关研究的编码架构,但有一些不同之处,如用DWT代替DCT,用LVQ代替SQ,并将像素域的运动补偿细化概念扩展到小波域,并给出了向量重建的新搜索策略。
系统由帧内编码器和帧间解码器组成。对于奇数帧($X_{2i - 1}$ 和 $X_{2i + 1}$),使用传统的帧内编码和解码方法。对于偶数帧 $X_{2i}$,编码过程如下:
1. 进行DWT后,将小波系数分组为向量,并使用一对格型矢量量化器进行量化。
2. 对于每个小波子带,使用Turbo编码器对差值向量的符号序列进行编码。
3. 速率兼容打孔Turbo码(RCPT)的奇偶校验位存储在缓冲区中,准备根据解码器的需求发送。
在解码器端,边信息逐步细化:
1. 首先,对 $Y_1$ 进行DWT分解,其最低频率系数用作 $X_{2i}$ 最低频率符号的边信息。
2. 组织恢复的最低频率和 $Y_1$ 中的其他频率系数,进行DWT逆变换,首次得到部分解码的当前帧 $\hat{X}
{2i}$。
3. 基于 $\hat{X}
{2i}$、恢复的 $X_{2i - 1}’$ 和 $X_{2i + 1}’$ 进行运动补偿细化,得到更准确的 $X_{2i}’$。
4. 对于第二个频率,将 $X_{2i}’$ 用作边信息 $Y_2$,更新边信息并开始第二次Wyner - Ziv解码。
5. 这种细化过程用于逐步重建,直到所有频率系数都被解码。
使用DWT和一对格型量化器可以获得与DCT和SQ相同或更好的效率。同时,细化重建提高了重建帧的质量,并且由于更新的边信息,减轻了Turbo编码的负担。基于快速算法的格型矢量量化不会使编码器的复杂度比相关研究高很多,尽管细化会使解码器由于运动搜索而更复杂,但这不会影响友好的上行链路应用。
编码框架详细内容
- 格型矢量量化小波系数 :在LVQ中,输入向量 $x$ 被编码为最接近它的格点 $Q(x)$ 对应的索引。对于每个输入向量 $x$,使用一对相同维度的格型量化器,即精细量化 $Q(\cdot)$ 和粗糙量化 $Q_1(\cdot)$。计算差值向量 $T(x) = Q(x) - Q_1(x)$,并将其发送到解码器。如果 $x$ 和边信息 $y$ 存在于相同的粗糙Voronoi单元中,则可以在解码器无损计算 $Q(x)$。在重建时,使用边信息,将 $Q(x)$ 指示的Voronoi单元中最接近边信息的点作为最终重建结果。
在该方案中,使用 $A_2$ 格型对小波系数进行量化。在每个频率子带中,形成二维向量,并使用 $2M_k$ 量化级别进行量化,其中 $2M_k \in {0, 8, 16, 32, 64, 128, 256, 512, 1024}$。$2M_k = 0$ 表示不发送比特,相应的边信息系数用作重建结果。这些量化级别分别对应于每个像素0、1.5、2、2.5、3、3.5、4、4.5、5比特,对应的LVQ比特率(差值向量的数量)为 $N = 7, 13, 31, 61, 127, 217, 469, 919$。
通过训练多个序列并尝试所有可能的组合,以降低量化级别随频率级别增加为目标,确定了整个图像的量化组合。最终得到的“最优”量化标签提高了PSNR。
以下是小波系数量化参数的表格:
| 量化级别 $2M_k$ | 比特/像素 | LVQ比特率 $N$ |
| — | — | — |
| 0 | 0 | - |
| 8 | 1.5 | 7 |
| 16 | 2 | 13 |
| 32 | 2.5 | 31 |
| 64 | 3 | 61 |
| 128 | 3.5 | 127 |
| 256 | 4 | 217 |
| 512 | 4.5 | 469 |
| 1024 | 5 | 919 |
-
运动补偿加权插值 :该插值仅用于获取最低频率子带的原始边信息 $Y_1$。在DVC中,平均插值是一种简单实用的方法,但没有更多考虑运动区域。在该系统中,$Y_1$ 来自运动补偿插值,使用一种简单的多帧加权插值来克服插值帧中的重叠和空缺。具体过程如下:
1. 固定帧 $X_{2i + 1}’$,对于 $X_{2i + 1}’$ 中的块 $b_{2i + 1}$,在 $X_{2i - 1}’$ 中搜索最匹配的块 $b_{2i - 1}$ 及其运动向量 $(v_x, v_y)$,在插值帧 $Y_{2i}^b$ 的位置 $(v_x/2, v_y/2)$ 处,得到插值块 $(b_{2i + 1} + b_{2i - 1}) / 2$。
2. 固定 $X_{2i - 1}’$,对于 $X_{2i - 1}’$ 中的块 $b_{2i - 1}’$,在 $X_{2i + 1}’$ 中搜索匹配的块 $b_{2i + 1}’$,在插值帧 $Y_{2i}^f$ 的相同位置得到插值块 $(b_{2i - 1}’ + b_{2i + 1}’) / 2$。
3. 最终的插值边信息为:$y_{2i} = \alpha x_{2i - 1}’ + \beta x_{2i + 1}’ + \gamma y_{2i}^b + \delta y_{2i}^f$,其中 $y_{2i}$、$x_{2i + 1}’$、$x_{2i - 1}’$、$y_{2i}^b$、$y_{2i}^f$ 分别是 $Y_{2i}$、$X_{2i + 1}’$、$X_{2i - 1}’$、$Y_{2i}^b$、$Y_{2i}^f$ 的像素,$\alpha$、$\beta$、$\gamma$、$\delta$ 是相应的加权系数。假设相邻帧之间的运动是均匀的。 -
运动补偿细化 :运动补偿细化的目标是从解码的当前帧中获得更准确的重建和边信息。这与之前的运动补偿插值不同,因为之前的插值中解码器没有关于当前帧的任何信息。
使用解码的低频系数和边信息中的其他高频系数来恢复部分解码的帧。基于这个解码的当前帧及其前后帧,可以得到更好的重建结果,这反过来又会使下一个频率的边信息更准确,从而减轻高频中的Turbo解码负担。
在Wyner - Ziv编码过程中,由于重建过程的局限性,需要对解码的Wyner - Ziv帧进行细化。当重建结果和边信息之间的差异大于阈值时,细化过程开始:
$\sum_{(m,n) \in Block} |\hat{x}
{2i}(m, n) - y
{2i}(m, n)| \geq \Delta$,其中 $(m, n)$ 是像素的坐标。
块搜索基于以下匹配准则:$MWMAD = MAD(x, y) \times |\hat{C} {2i} - C {ref}| / K$,其中 $\hat{C} {2i}$ 和 $C {ref}$ 是与刚解码的子带相同子带中的小波系数,$\hat{C} {2i}$ 来自 $\hat{X} {2i}$,$C_{ref}$ 来自参考帧,$K$ 是使用LVQ对 $\hat{C} {2i}$ 和 $C {ref}$ 进行量化时相同量化输出的数量。该准则一方面限制了参考帧中与重建小波系数相差较大的块,另一方面促进了量化输出与 $\hat{X}_{2i}$ 相同数量最多的块。搜索的目标是找到最小的MWMAD来补偿重建帧 $\hat{X}$。
下面是小波域编码框架的mermaid流程图:
graph LR
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px
A(编码器):::process --> B(DWT):::process
B --> C(分组为向量):::process
C --> D(LVQ量化):::process
D --> E(计算差值向量):::process
E --> F(Turbo编码):::process
F --> G(存储奇偶校验位):::process
H(解码器):::process --> I(运动补偿加权插值得到Y1):::process
I --> J(DWT分解):::process
J --> K(最低频率系数作边信息):::process
K --> L(组织系数进行DWT逆变换):::process
L --> M(得到部分解码帧X̂2i):::process
M --> N(运动补偿细化):::process
N --> O(更新边信息):::process
O --> P(Wyner - Ziv解码):::process
P --> Q(逐步重建直到所有频率系数解码):::process
G --> P
以上就是像素域和小波域Wyner - Ziv方法的详细介绍,通过这些方法可以实现高效的分布式视频编码。后续将继续介绍实验结果和总结。
分布式视频编码(DVC)的像素域与小波域Wyner - Ziv方法
实验结果
为了验证小波域分布式视频编码(DVC)系统的性能,针对Foreman和Carphone两个QCIF视频序列的前101帧进行了对比实验。实验仅统计偶数帧的亮度,假设帧率为15帧/秒。采用了来自相关研究的RCPT,实验条件与过往研究类似,使用双正交9/7小波变换。
实验对比内容如下:
1. 将小波域的DVC系统与DCT域的相关研究进行PSNR对比。
2. 对比小波域系统与像素域编码系统(基于LVQ但省略了小波变换和运动补偿细化)的性能。
3. 研究运动补偿细化技术(部分MR仅对重建进行细化,全MR对重建和边信息都进行细化)对系统的影响。
4. 展示标准H.263 +的帧间编码效率(I - B - I - B)。
实验结果以率失真曲线的形式展示在图中,具体结论如下:
1.
小波域DVC性能提升
:小波域的DVC系统在PSNR上比DCT域的相关研究提高了最多1dB。这表明使用离散小波变换(DWT)和格型量化能够取得更好的编码效果,在Foreman和Carphone序列中都有体现。虽然在Carphone序列中,小波变换相比像素域的性能提升不明显,但整体上仍具有优势。
2.
运动补偿细化技术的作用
:运动补偿细化技术显著改善了DVC系统的重建效果,尤其在低码率和高运动序列中表现突出。如果将细化应用于边信息,能够减轻Turbo编码的负担,在250Kb/s的码率下可节省多达20Kb的比特数。
以下是实验对比情况的表格总结:
| 对比项目 | 结果 |
| — | — |
| 小波域DVC vs DCT域研究 | 小波域PSNR最多提升1dB |
| 小波域 vs 像素域 | 小波域整体有优势,Carphone序列提升不明显 |
| 运动补偿细化(部分MR) | 改善重建效果 |
| 运动补偿细化(全MR) | 改善重建效果,节省比特数 |
| 小波域DVC vs H.263 + I - B - I - B | 体现小波域DVC性能特点 |
总结
通过在小波域实现基于格型矢量量化(LVQ)的分布式视频编码系统,并引入运动补偿细化技术,取得了优于参考系统的性能。但该系统仍存在一些不足:
1.
运动补偿细化的局限性
:运动补偿细化技术在低运动序列中的效果不显著,实验结果未达到预期。
2.
系统的其他缺陷
:码率由反馈决定,且未充分利用小波变换的可扩展性。
未来的工作可以朝着高维格型矢量量化和变换域分布式视频编码的方向发展,以进一步提升系统性能,克服现有系统的不足。
下面是实验结果分析的mermaid流程图:
graph LR
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px
A(实验设置):::process --> B(小波域DVC):::process
A --> C(DCT域研究):::process
A --> D(像素域编码):::process
A --> E(H.263 + I - B - I - B):::process
B --> F(PSNR对比):::process
C --> F
B --> G(与像素域对比):::process
D --> G
B --> H(运动补偿细化研究):::process
B --> I(与H.263 +对比):::process
E --> I
F --> J(小波域性能提升结论):::process
G --> K(小波域与像素域对比结论):::process
H --> L(运动补偿细化效果结论):::process
I --> M(与H.263 +对比结论):::process
综上所述,像素域和小波域的Wyner - Ziv方法为分布式视频编码提供了有效的解决方案。小波域方法结合了DWT和LVQ的优势,并通过运动补偿细化技术进一步优化了性能,但仍有改进空间,未来的研究有望推动分布式视频编码技术的发展。
超级会员免费看
11

被折叠的 条评论
为什么被折叠?



