[英]Change Code from DCT to Inverse Discrete Cosine Transformation?
對於一個項目,我必須演示JPEG壓縮以及DCTII和IDCT的轉換。 我不知道如何執行此公式。 但是我找到了一個提供Java代碼和在線IDE進行測試的網站。 https://ide.geeksforgeeks.org/FnC3bRJEAr在這里您可以看到代碼。
(來自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.