[英]DCT implementation
我正在嘗試為彩色JPEG實現基於DCT的圖像壓縮算法。 我是圖像處理的新手,因此需要幫助。 我需要澄清一個算法。
我從這里使用DCT實現
因此,這是我所了解的算法:
創建3個矩陣(每個通道1個:紅色,綠色,藍色):
int rgb = bufferedImage.getRGB(i, j); int red = (rgb >> 16) & 0xFF; int green = (rgb >> 8) & 0xFF; int blue = rgb & 0xFF;
將矩陣增加到其大小,以便可以將其分成8x8的塊(其中8是DCT矩陣的大小N)
在這里我不知道該怎么辦。 我可以:
因此,在這里我得到了3種用於紅色,綠色和藍色的矩陣。 然后,我將這些矩陣轉換為一個RGB矩陣,並創建新的BufferedImage並使用setRGB方法設置像素值。 然后將圖像保存到文件。
額外問題:
如果您想執行實施步驟,建議閱讀:
關於您的問題:
1)JPEG標准對色彩空間一無所知,也不在乎是否使用RGB或YCbCr或CMYK。 有幾種指定顏色空間的JPEG文件格式(例如JFIF,EXIF,ADOBE),通常是YCbCr。
使用YCbCr的原因是遵循集中信息的JPEG趨勢。 Y成分中的信息往往比Cb或Cr成分有用。 使用YCbCr,您可以對每個Cb采樣4個Y,對每個Y采樣Cr(甚至16個)。這將壓縮的數據量減少了1/2。
請注意,JPEG文件格式指定了采樣限制(JPEG允許2:3采樣,而大多數實現則不允許)。
2)將DCT系數進行游程編碼,然后進行霍夫曼編碼(或算術編碼)。 您必須同時使用兩者。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.