2008-08-07 74 views
14

我已经实现了一种称为离散余弦变换的图像/视频变换技术。这种技术用于MPEG视频编码。我根据我的以下网址提出的意见算法:视频压缩:什么是离散余弦变换?

http://vsr.informatik.tu-chemnitz.de/~jan/MPEG/HTML/mpeg_tech.html

现在我可以将黑白图像的8×8部分,如:

 
0140 0124 0124 0132 0130 0139 0102 0088 
0140
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
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块。

另外,这种转换给了我什么?为什么存储在转换图像右上角的信息很重要?

回答

1

如果我没有记错,这个矩阵允许你将数据保存到压缩文件中。

如果您进一步阅读,您会发现从最终矩阵中读取的数据的锯齿形图案。最重要的数据在左上角,而在右下角则最不重要。因此,如果您在某个时间点停止书写,并将其余部分视为0,即使它们不是,您也会得到图像的有损近似值。

您扔掉的数值会以图像保真度为代价提高压缩率。

但我确定别人可以给你一个更好的解释。

14

DCT的结果是将原始信号源转换到频域。左上角条目存储“幅度”,“基本”频率和频率沿水平和垂直轴增加。 DCT的结果通常是更常用的较低频率(左上象限)处的幅度集合,而较高频率处的条目较少。正如lassevk提到的那样,通常只是将这些较高的频率归零,因为它们通常构成信号源的非常小的部分。但是,这确实会导致信息丢失。为了完成压缩,通常在DCT的源上使用无损压缩。这是压缩进入的地方,因为所有这些零运算都被压缩到几乎没有。

使用DCT找到相似区域的一个可能的优点是您可以对低频值(左上角)进行第一次匹配匹配。这减少了您需要匹配的值的数量。如果您发现低频值的匹配,您可以增加比较较高的频率。

希望这有助于

4

我从The Data Compression Book了解到关于DCT的所有知识。除了作为数据压缩领域的一个很好的介绍之外,它还有一章介绍JPEG和DCT的有损图像压缩。

1

Anthony Cramp的回答看起来不错。正如他所提到的,DCT将数据转换到频域。 DCT广泛用于视频压缩,因为人类视觉系统必须对高频变化较不敏感,因此归零较高的频率值会导致较小的文件,而对人类对视频质量的感知几乎没有影响。

在使用DCT比较图像方面,我认为唯一的好处是如果切掉较高频率的数据,因此只有一小部分数据用于搜索/匹配。像哈尔小波这样的东西可以提供更好的图像匹配结果。

2

通过首先查看一维情况,可以更容易地了解这些类型转换的基本概念。图像here显示了一个方波和几个无限序列的第一项。看着它,请注意,如果术语的函数相加在一起,它们开始接近方波的形状。你加起来的术语越多,近似值就越好。但是,要从一个近似的准确信号中得出结论,必须对无限多的项进行求和。原因是方波是不连续的。如果将方波看作时间的函数,则零时间内从-1变为1。要表达这样的事物需要一个无限的系列。再看看系列术语的情节。第一个是红色,第二个是黄色。连续的术语有更多的“上下”转换。这些来自每个学期不断增加的频率。用方波作为时间的函数,并且每个序列项都是频率函数,有两个等价表示:时间函数和频率函数(1 /时间)。

在现实世界中,没有方波。零时间没有任何事情发生。音频信号例如占用20Hz至20KHz的范围,其中Hz是1 /次。这些东西可以用有限序列表示'。

对于图像,数学是相同的,但有两样东西是不同的。首先,它是二维的。其次,时间概念没有意义。在一维意义上,方波仅仅是一个函数,它给出了我们所说的是时间的论点的一些数值。 (静态)图像是一个函数,它为每对行,每列的数量提供一个数值。换句话说,图像是2D空间的函数,即矩形区域。像这样的功能可以用空间频率来表示。要了解什么是空间频率,请考虑8位灰度级图像和一对相邻像素。在图像中可能发生的最突变的变化是从0(例如黑色)到255(例如白色)在1个像素的距离上。这直接对应于系列表示的最高频率(最后)项。

图像的二维傅立叶(或余弦)变换产生与图像大小相同的值的数组,表示相同的信息而不是空间的函数,但是是1 /空间的函数。该信息按照从原始最高行和列余数的对角线的最低到最高频率排序。一个例子是here

对于图像压缩,您可以转换图像,丢弃一些较高频率的项目,并将剩余的频率项目反转换为一张图像,该图像比原始图像细节更少。虽然它转换回相同大小的图像(删除的项目替换为零),但在频域中占用较少的空间。

查看它的另一种方法是将图像缩小到较小的尺寸。例如,如果您尝试通过丢弃一行中的四个像素中的三个以及四个行中的三个来缩小图像的大小,则会有1/4的大小的数组,但图像看起来很糟糕。在大多数情况下,这是通过2D内插器完成的,该内插器通过对较大图像像素的矩形组进行平均来产生新像素。在这种情况下,插值的效果与频域中的序列项相似,只是计算速度更快。

要做更多的事情,我将参考傅里叶变换作为例子。关于该主题的任何好的讨论将说明傅立叶和余弦变换是如何相关的。图像的傅里叶变换不能直接看到,因为它是由复数构成的。它已经被分成了两种信息,即数字的实数和虚数部分。通常情况下,您会看到这些图片或图表。但是将复数分解为幅度和相位角度更有意义(通常)。这只是在复平面上取一个复数并切换到极坐标。

对于音频信号,可以考虑组合的正弦函数和余弦函数在它们的参数中采用了一个有意义的数量来将函数来回移动(作为信号表示的一部分)。对于图像,相位信息描述了该系列的每个项如何相对于频率空间中的其他项进行偏移。在图像中,边缘(有希望)非常清晰,以至于它们在频域中具有最低的频率项。这并不是因为它们是突然转换,而是因为它们具有例如许多黑色区域毗邻很多较亮的区域。考虑边缘的一维切片。灰度为零,然后转换并保持在那里。可视化正弦波,它是第一个近似项,它在sin(0)处穿过信号转换点的中点。该项的相位角对应于图像空间中的位移。这是一个伟大illustraion可用here。如果您试图找到形状并可以制作参考形状,这是识别它们的一种方法。