在進行色彩格式轉換的時候,經常會遇到色彩量化位數的改變,比如說從 24bit RGB888 到 16bit RGB565 的色彩轉換。所謂量化壓縮與量化補償都是我個人所提出的概念,現說明如下。
量化壓縮,舉例:
24bit RGB888 -> 16bit RGB565 的轉換
24ibt RGB888 R7 R6 R5 R4 R3 R2 R1 R0 G7 G6 G5 G4 G3 G2 G1 G0 B7 B6 B5 B4 B3 B2 B1 B0
16bit RGB565 R7 R6 R5 R4 R3 G7 G6 G5 G4 G3 G2 B7 B6 B5 B4 B3
量化位數從8bit到5bit或6bit,取原8bit的高位,量化上做了壓縮,卻損失了精度。
量化補償,舉例:
16bit RGB565 -> 24bit RGB888 的轉換
16bit RGB565 R4 R3 R2 R1 R0 G5 G4 G3 G2 G1 G0 B4 B3 B2 B1 B0
24ibt RGB888 R4 R3 R2 R1 R0 0 0 0 G5 G4 G3 G2 G1 G0 0 0 B4 B3 B2 B1 B0 0 0 0
24ibt RGB888 R4 R3 R2 R1 R0 R2 R1 R0 G5 G4 G3 G2 G1 G0 G1 G0 B4 B3 B2 B1 B0 B2 B1 B0
說明:第二行的 24bit RGB888 資料為轉換後,未進行補償的資料,在精度上會有損失
第三行的 24bit RGB888 資料為經過量化補償的資料,對低位元做了量化補償
可以很容易的證明,這樣的補償方法是一種合理的線性補償。補償的原理很簡單,大家仔細想一下就明白了,因此不再詳細說明。
總結一下:
量化壓縮的方法:三個字取高位
量化補償的方法:
1. 將原資料填充至高位
2. 對於低位元,用原始資料的低位元進行補償
3. 如果仍然有未填充的位元,繼續使用原始資料的低位元進行迴圈補償
解釋一下迴圈補償的概念:
8bit RGB332 -> 24bit RGB888 的轉換
8bit RGB332 R2 R1 R0 G2 G1 G0 B1 B0
24bit RGB888 R2 R1 R0 0 0 0 0 0 G2 G1 G0 0 0 0 0 0 B1 B0 0 0 0 0 0 0
24bit RGB888 R2 R1 R0 R2 R1 R0 0 0 G2 G1 G0 G2 G1 G0 0 0 B1 B0 B1 B0 0 0 0 0
24bit RGB888 R2 R1 R0 R2 R1 R0 R2 R1 G2 G1 G0 G2 G1 G0 G2 G1 B1 B0 B1 B0 B1 B0 0 0
24bit RGB888 R2 R1 R0 R2 R1 R0 R2 R1 G2 G1 G0 G2 G1 G0 G2 G1 B1 B0 B1 B0 B1 B0 B1 B0
看了這個,應該明白則麼回事了吧,其中B分量,進行了四輪的補償,達到要求。
量化補償的必要性,從直覺上講,我所提出的這種補償方法是正確的(因為我並沒有嚴格的去證明),進行這樣的補償,在做色彩各式轉換的時候,能夠明顯的改善色彩效果,減少精度上的損失。
對256色調色板模式的認識和應用,順便講一下這個,因為量化壓縮和量化補償剛好可以應用到調色板模式下。大家都知道,很早以前就有人提過出256 色的標準調色板的概念(有的人又稱之為抖動調色板或者萬能調色板),其實這樣的調色板並不神秘。256色中,一個圖元點用8bit表示,那麼如果採用 8bit RGB332 的格式,一切問題都可以想通,並且可以進行很好的處理了。對於每個 RGB332 的顏色,都可以使用量化補償的做法,將其轉換為 24bit RGB888 的顏色格式,然後將其設置為調色板即可。這樣,實質上是將256色調色板模式,轉換為了 8bit RGB332 的圖元格式。這樣的調色板方式,更加利於某些方面的處理,比如調色板匹配、Alpha混合等。由於採用了這樣的方法,一個圖元點的顏色值,與其實際的 RGB顏色值,可以很方便的通過量化補償的方法轉換出來,然後就可以對各個顏色分量進行計算,計算完畢,再使用量化壓縮的方法,就可以生成最終需要的顏色 值。而所謂的調色板匹配的問題,當然也更加好解決了。關鍵是要把問題想通,把握事物的本質,才能找到簡單而優美的解決問題的方法。
以前我對標準調色板的認識也存在很多錯誤,導致在分析和解決問題上,沒有能找到最好的方法。網上也有許多人寫過有關256色模式下 Alpha Blending 的文章,但是都存在許多認識上的不足,導致最後給出的演算法時間和空間的複雜度都太大。


來源:http://bbs.51cto.com/viewthread.php?tid=419482&extra=page%3D1%26orderby%3Ddateline

台南小新 發表在 痞客邦 PIXNET 留言(0) 人氣()