dct变换的目的?
dct变换为了分离高频和低频信息,之后通过量化和熵编码进行数据压缩。
h264的dct变换量化是怎么做的?
h264的dct变换
h264的dct变换采用的是整数变化,减少了浮点数运算的耗时和不同机器的差别。
通常来说dct变换是对4x4的子块进行,变化后低频信息集中在左上角。
h264的dct变换步骤
- 亮度 16x16 帧内预测块亮度 16x16 块,首先被划分成 16 个 4x4 的小块做整数变换。变换之后将 16 个 4x4 小块的 DC 系数都拿出来,组成一个 4x4 的 DC 块,再对这个 4x4 的 DC 块进行 Hadamard 变换。然后,再总体进行量化操作。
- 对于除亮度 16x16 帧内预测块之外的其它亮度块,都是直接划分成 4x4 的块进行整数变换,之后再进行量化操作就可以了。
- 对于 YUV420 图像,色度块大小是 8x8。我们先将 8x8 色度块划分成 4 个 4x4 的小块做整数变换。变换之后将 4 个小块的 DC 系数拿出来,组成一个 2x2 的 DC 块,再对这个 2x2 的 DC 块进行 Hadamard 变换。最后总体进行量化操作。
块效应是什么阶段产生的?
- 变换和量化阶段:在视频编码中,像素块经过离散余弦变换(DCT)和量化后,会导致高频分量被丢弃或者减少精度。这种信息损失会导致块边界处的明显视觉不连续性,特别是在低码率压缩下更为明显。(主要原因)
- 运动补偿和帧间预测:在视频中,为了利用时间相关性进行压缩,会使用运动补偿和帧间预测技术。这些技术可能会在运动较大或者复杂的区域产生估计误差,进而增加块效应的可见性。