视频压缩:什么是离散余弦变换?

时间:2020-03-05 18:38:18  来源:igfitidea点击:

我已经实现了一种称为离散余弦变换的图像/视频变换技术。 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小波之类的东西可能会提供更好的图像匹配结果。