1. 程式人生 > >【整理】RGB和YUV色彩模式

【整理】RGB和YUV色彩模式

在視訊和影象編碼中,常用的色彩模式主要有RGB和YUV兩大類。

1.RGB

RGB色彩模式是對紅(Red)綠(Green)藍(Blue)三原色進行疊加得到需要的顏色。


RGB色彩模式為每一個紅、綠、藍分量分配了0~255範圍內的亮度值。如下圖分別表示了紅、綠、藍從0到255的顏色變化過程。


 RGB色彩模式通常用格式RGB(0,0,0)來表示顏色,括號中的3個數字分別表示紅、綠、藍的亮度值。如:黑色RGB(0,0,0)、白色RGB(255,255,255)、紅色RGB(255,0,0)。


由於紅、綠、藍可以按照不同的比例混合,則能夠表示16777216 種顏色(256 x 256 x 256 = 16777216),這個標準幾乎包括了人類視力所能感知的所有顏色。

 當紅、綠、藍三種顏色分量相同時就會形成灰色,比如RGB(128,128,128)。灰度顏色有256種變化,即從RGB(0,0,0)到RGB(255,255,255)共256種顏色。


RGB色彩模式在輸出時需要3個獨立的影象訊號同時傳輸,頻寬佔用較高。

常見的RGB格式有:RGB1, RGB4, RGB8, RGB565, RGB555, RGB24, RGB32, ARGB32等。在OpenCore中,支援的RGB格式包括:RGB8,RGB12,RGB16,RGB24等。RGB模式通常用於最原始的視訊資料和影象。

目前Android Camera人臉識別只支援RGB565。

(1)那什麼是RGB565呢?

The RGB565 color format is the same as the RGB555 color format, except that 6 bits are used for the green value instead of 5. Therefore, all 16 bits are in use. The organization of the pixels in the image buffer is from left to right and bottom up.
  RGB565彩色模式, 一個畫素佔兩個位元組, 其中:
  低位元組的前5位用來表示B(BLUE)
  低位元組的後三位+高位元組的前三位用來表示G(Green)
  高位元組的後5位用來表示R(RED)
  Memory Layout如圖:


(2)RGB565,RGB555,RGB888的區別

正常的RGB24是由24位即3個位元組來描述一個畫素,R、G、B各8位。而實際使用中為了減少影象資料的尺寸,如視訊領域,對R、G、B所使用的位數進行的縮減,如你所說的RGB565和RGB555。
RGB565 就是R-5bit,G-6bit,B-5bit
RGB555 就是R-5bit,G-5bit,B-5bit
RGB888 就是R-8bit,G-8bit,B-8bit ;其實這就是RGB24

至於Bitmap那是在RGB的畫素資料基礎上增加點陣圖頭資料而形成的檔案格式。


一般BMP是RGB888, JPEG是YUV的, 其他的要看對這種格式的描述或者問當事人。

RGB565 是16位的,2個位元組,5+6+5,第一位元組的前5位是R,後三位+第二位元組前三位是G,第二位元組後5位是B。

RGB555 也是16位的,2個位元組,RGB各5位,有1位未用。

RGB888 是24位的,3個位元組。

在Android平臺中,Bitmap可以是ARGB_8888(每個畫素4個位元組)或者RGB_565(每個畫素2個位元組)編碼的,參考:Bitmap.Config

2.YUV

YUV,是一種顏色編碼方法。
YUV是編譯true-color顏色空間(color space)的種類,Y'UV, YUV, YCbCr,YPbPr等專有名詞都可以稱為YUV,彼此有重疊。“Y”表示明亮度(Luminance、Luma),“U”和“V”則是色度、濃度(Chrominance、Chroma),Y'UV, YUV, YCbCr, YPbPr 常常有些混用的情況,其中 YUV 和 Y'UV 通常用來描述類比訊號,而相反的 YCbCr 與 YPbPr 則是用來描述數位的影像訊號,例如在一些壓縮格式內 MPEG、JPEG 中,但在現今,YUV 通常已經在電腦系統上廣泛使用。YUV Formats分成兩個格式:
緊縮格式(packed formats):將Y、U、V值儲存成Macro Pixels陣列,和RGB的存放方式類似。
平面格式(planar formats):將Y、U、V的三個份量分別存放在不同的矩陣中。
緊縮格式(packed format)中的YUV是混合在一起的,對於YUV4:4:4格式而言,用緊縮格式很合適的,因此就有了UYVY、YUYV等。

平面格式(planar formats)是指每Y份量,U份量和V份量都是以獨立的平面組織的,也就是說所有的U份量必須在Y份量後面,而V份量在所有的U份量後面,此一格式適用於取樣(subsample)。平面格式(planar format)有I420(4:2:0)、YV12、IYUV等。