2008-08-07 46 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。如果您試圖找到形狀並可以製作參考形狀,這是識別它們的一種方法。