圖像處理術語解釋:什麼是PRGBA和Alpha預乘(Premultiplied Alpha )

☞ ░ 前往老猿Python博文目錄

Alpha預乘(Premultiplied Alpha)和PRGBA

一般來說四通道圖像數據保存的都是ARGB或RGBA,其R、G、B值還沒有進行任何透明化處理,但這種格式在圖像合成時會存在兩個問題:

  1. 由於對有Alpha通道的圖片進行合成處理時,先要獲取原始圖像RGB的值,這個原始圖像真正的RGB值必須考慮Alpha通道,因此會進行一次計算:源圖像像素顏色 X alpha。如果這種計算都在合成時進行處理,性能處理壓力就會集中在合成階段;
  2. 在圖像合成時,有時需要進行插值處理,即根據兩個圖像的差異,採用插值計算來生成一個或多箇中間圖像,這種插值一般都是以RGB值進行插值計算,但帶Alpha通道的圖像RGB並不是最終顯示顏色的RGB,因此這種插值可能效果不理想。

爲了解決這個問題,在圖像處理過程中引入了預乘 (premultiplied)這個概念,經過預乘處理的圖像格式就稱爲PRGBA。預乘的算式是NewR=OldR*Alpha,Alpha取值爲0-1(如果爲0-255,除以255即可),保存的數據通常稱爲(ar,ag,ab,a),這樣PRGBA格式的像素四通道值保存了真正展現時的像素RGB值,又保存了Alpha通道的值,既解決了前面說的兩個問題,又可以還原原始RGBA數據。

PRGBA這個表示方法,由於預乘後保存的值是整數,會丟失小數點後的數值,很大可能引入誤差,特別是RGB值本身很小Alpha很大的情況下,這個誤差可能會比較大。

關於阿爾法通道、RGBA的更多內容請參考《圖像(層)正常混合模式詳解(上)》、《百度百科-RGBA》。

更多圖形圖像處理術語請參考《圖像處理術語解釋:圖像的灰度、色相、飽和度、亮度、明度、阿爾法通道、HSL、HSV、RGBA、ARGB和PRGBA概念以及Premultiplied Alpha(Alpha預乘)等基礎概念詳解》。

跟老猿學Python、學5G!

☞ ░ 前往老猿Python博文目錄

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章