簡體   English   中英

圖像壓縮-離散余弦變換后的之字形

[英]Image compressing - zigzag after Discrete Cosine Transform

我正在嘗試制作從相機壓縮圖像的應用程序。 我有墊子圖像和3個單獨的通道陣列。 我發現了一些關於離散余弦變換DCT的知識,並讀到了我應該做之字形算法( 我在這里找到了有關之字形的東西)
我知道DCT可以輸出數組,但是我看不到之字形也可以在哪里輸出。
也許有一個帶有輸入和輸出數組的之字形算法(或帶之字形的dct)的簡單示例?

圖片來自此Wikipedia文章

TL,DR:請參見下面的粗體部分。

從2D像素值數組開始。 有64個字節的信息。

在此處輸入圖片說明

在施加偏移並計算DCT之后,輸出是頻率系數的2D數組。 因此,現在有64個浮點值。

在此處輸入圖片說明

這是JPEG壓縮工作原理的關鍵。 陣列左上方(低頻)的頻率系數對圖像質量的影響比陣列右下方(高頻)的頻率系數重要。

因此,下一步是將量化應用於數組。 量化將可變數量的位分配給數組中的每個值。 左上方的值獲得更多位,而右下方的值獲得更少位。 量化后,陣列看起來像這樣。

在此處輸入圖片說明

注意,右下角的許多值現在為零。 所以最后我們進入了鋸齒形的樣子:

在此處輸入圖片說明

之字形的目的是將量化的DCT系數的2D數組轉換為1D數組,其中第一個元素來自2D數組的左上角,隨后的元素來自右下角。 之字形之后,數組看起來像這樣

-26 -3 0 -3 -2 -6 2 -4 1 -3 1 1 5 1 2 -1 1 -1 2 0 0 0 0 0 -1 -1 0 0 ...

其中...全部為0。根據需要的壓縮程度,可以在任意點處切掉數組。 在此示例中,在19個元素之后對數組進行斬波是質量和壓縮之間的良好折衷。 因此,與存儲原始的64個原始像素值相反,僅前19個元素被存儲在JPEG文件中。

請注意,在切掉鋸齒形輸出之后,還有其他壓縮步驟。 這些在鏈接的文章中進行了描述。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM