视频压缩:什么是离散余弦变换?
我已经实现了一种称为离散余弦变换的图像/视频变换技术。 MPEG视频编码中使用了此技术。我的算法基于以下网址中提出的想法:
http://vsr.informatik.tu-chemnitz.de/~jan/MPEG/HTML/mpeg_tech.html
现在,我可以转换黑白图像的8x8部分,例如:
0140 0124 0124 0132 0130 0139 0102 0088 0140 0123 0126 0132 0134 0134 0088 0117 0143 0126 0126 0133 0134 0138 0081 0082 0148 0126 0128 0136 0137 0134 0079 0130 0147 0128 0126 0137 0138 0145 0132 0144 0147 0131 0123 0138 0137 0140 0145 0137 0142 0135 0122 0137 0140 0138 0143 0112 0140 0138 0125 0137 0140 0140 0148 0143
在此图像中,所有重要信息位于右上角。转换后的块如下所示:
1041 0039 -023 0044 0027 0000 0021 -019 -050 0044 -029 0000 0009 -014 0032 -010 0000 0000 0000 0000 -018 0010 -017 0000 0014 -019 0010 0000 0000 0016 -012 0000 0010 -010 0000 0000 0000 0000 0000 0000 -016 0021 -014 0010 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 -010 0013 -014 0010 0000 0000
现在,我需要知道如何利用这种转变?我想在同一张图片(或者另一张图片)中检测其他8x8块,它们代表良好的匹配。
另外,这种转变给我带来了什么?为什么存储在转换后图像右上角的信息很重要?
解决方案
回答
如果我没记错的话,此矩阵可让我们通过压缩将数据保存到文件中。
如果进一步阅读,则会发现要从该最终矩阵读取的数据的Z型模式。最重要的数据在左上角,最不重要的数据在右下角。这样,如果我们在某个时候停止书写,仅将其余部分视为0,即使它们不是,则将获得图像的有损近似值。
丢弃的值数量增加了压缩,但以图像保真度为代价。
但我相信其他人可以给我们更好的解释。
回答
DCT的结果是将原始源转换为频域。左上方的条目存储"幅度","基本"频率,以及沿水平和垂直轴的频率增加。 DCT的结果通常是在更常见的较低频率(左上象限)处的振幅集合,而在较高频率处的条目较少。正如lassevk所提到的,通常将这些较高的频率归零,因为它们通常只占信号源的很小一部分。但是,这确实会导致信息丢失。为了完成压缩,通常在DCT的源上使用无损压缩。这是进行压缩的地方,因为所有这些零运行都压缩为几乎没有。
使用DCT查找相似区域的一个可能优势是,我们可以对低频值(左上角)进行首次通过匹配。这减少了我们需要匹配的值的数量。如果找到低频值匹配项,则可以增加对较高频率的比较。
希望这可以帮助
回答
我建议我们选择一份《数字视频压缩》,它是有关图像和视频压缩算法的一个很好的概述。
回答
我从《数据压缩书》中学到了所有有关DCT的知识。除了对数据压缩领域进行了很好的介绍之外,它在即将结束的章节中还介绍了有损图像压缩,其中介绍了JPEG和DCT。
回答
Anthony Cramp的回答对我来说很好。正如他提到的,DCT将数据转换到频域。 DCT在视频压缩中被大量使用,因为人类视觉系统对高频变化的敏感度必须降低,因此将较高的频率值归零会导致文件较小,而对人类对视频质量的感知几乎没有影响。
在使用DCT比较图像方面,我猜唯一真正的好处是如果我们切掉了较高频率的数据,因此只有较少的数据集可进行搜索/匹配。诸如Harr小波之类的东西可能会提供更好的图像匹配结果。