簡體   English   中英

將代碼從DCT更改為離散余弦逆變換?

[英]Change Code from DCT to Inverse Discrete Cosine Transformation?

對於一個項目,我必須演示JPEG壓縮以及DCTII和IDCT的轉換。 我不知道如何執行此公式。 但是我找到了一個提供Java代碼和在線IDE進行測試的網站。 https://ide.geeksforgeeks.org/FnC3bRJEAr在這里您可以看到代碼。

DCT的公式IDCT的公式

(來自Wikipedia / JPEG的公式)

那么,必須對代碼進行哪些更改?

我嘗試切換公式中的for循環和變量,但是我得到的值肯定是錯誤的,其他嘗試會導致錯誤消息。

DCT和IDCT之間的唯一區別是考慮了系數。

您應該將代碼中的第46行替換為

sum = sum + ck*cl*dct1;

其中ck和cl的計算方法如第24-34行,但對於k和l

並在第49行中抑制ci * cj

順便說一句,此Java代碼效率極低。 預計算Math.sqrt(2),Math.sqrt(n)並將余弦放在表中,它將至少快3倍。

您的求和運算正在做矩陣乘法。 您將8x8數據矩陣與8x8 DCT矩陣相乘。

DCT矩陣是正交的,因此其逆是其轉置。

因此,您應該能夠通過交換u和v來求逆。

暫無
暫無

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

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