前言:RGB 和 YUV 都是色彩空間模型秆剪,下面來分別介紹下
一、RGB顏色編碼
顏色編碼格式国旷,是指每種顏色都可以用
三種顏色來表示,將
分別取不同的值狈癞,會展示不同的顏色(即三原色)茄靠。
使用編碼的圖像中國呢,每個(gè)像素點(diǎn)都是由紅蝶桶、綠慨绳、藍(lán)三個(gè)顏色組成,每種顏色在內(nèi)存中都占用
(一個(gè)字節(jié)),即一個(gè)像素點(diǎn)占用
,加上透明度,所以一個(gè)像素點(diǎn)在內(nèi)存中占用
(4個(gè)字節(jié))脐雪。
當(dāng)有一張 大小的圖片時(shí)厌小,該圖片中有 個(gè)像素點(diǎn),其中每個(gè)像素點(diǎn)都采用战秋,那么這張圖片就會占用 的存儲空間璧亚。
二、YUV顏色編碼
顏色編碼采用的是
和
來指定像素的顏色脂信,其中Y表示明亮度(Luminance Luma)癣蟋,U和V表示色度(Chrominance chroma),而色度狰闪,又定義了顏色的色調(diào)和飽和度疯搅。
,如下圖所示埋泵,和RGB類似幔欧,每個(gè)像素先都包含Y、U丽声、V3個(gè)分量琐馆,但是其中Y和UV是可以分離的,沒有UV信息恒序,也是可以顯示圖片的,只不過的黑白的谁撼。
使用YUV的優(yōu)勢
- 降低占用的存儲空間
- 節(jié)省帶寬
對于YUV圖像來說歧胁,并不是每個(gè)像素點(diǎn)都需要包含Y、U厉碟、V三個(gè)分量喊巍,我們可以根據(jù)不同的采樣格式,有以下幾種采樣格式
-
YUV4:4:4
:每個(gè)Y分量對應(yīng)自己的UV分量 -
YUV4:2:2
:兩個(gè)Y分量共用一套UV分量 -
YUV4:2:0
:4個(gè)Y分量共用一套UV分量
其中最常用的YUV格式則是YUV4:2:0
YUV采樣格式 - YUV4:4:4
YUV4:4:4 采樣格式箍鼓,表示其中的Y崭参、U、V
三個(gè)分量的采樣比例是相同的
款咖,所以每個(gè)像素點(diǎn)的分量信息都是完整的何暮,每個(gè)分量占用8bit,一個(gè)像素點(diǎn)占用1個(gè)字節(jié)铐殃。與RGB顏色編碼相比海洼,并沒有節(jié)省帶寬,占用的存儲空間也沒有減少
可以簡單理解為:原始像素原樣輸出富腊,沒有任何壓縮
坏逢,如下圖所示
假設(shè)原始圖像的像素為(一對[]表示一個(gè)像素點(diǎn)):
[Y0, U0, V0]; [Y1, U1, V1]; [Y2, U2, V2]; [Y3, U3, V3];
將原始圖像像素按照
YUV4:4:4
采樣的碼流為(相對原始像素是原樣輸出):
Y0, U0, V0, Y1, U1, V1, Y2, U2, V2, Y3, U3, V3
最后映射還原的像素點(diǎn) = 原始圖像的像素,為:
[Y0, U0, V0]; [Y1, U1, V1]; [Y2, U2, V2]; [Y3, U3, V3];
其中映射過程如下圖所示
YUV采樣格式 - YUV4:2:2
YUV4:2:2
采樣格式,是指其中Y分量的采樣是UV分量的2倍是整,即Y
分量與UV
分量是按照2:1的比例采樣
肖揣。舉例說明:如果水平方向有10個(gè)像素點(diǎn),通過這種采樣格式浮入,最終采樣了10個(gè)Y分量龙优,5個(gè)UV分量
可以通俗的理解為:每采樣一個(gè)像素點(diǎn),都會采樣Y分量舵盈,而U陋率、V分量則會間隔一個(gè)采集一個(gè)
,如圖所示
假設(shè)原始圖像的像素為(一對[]表示一個(gè)像素點(diǎn)):
[Y0, U0, V0]; [Y1, U1, V1]; [Y2, U2, V2]; [Y3, U3, V3];
將原始圖像像素按照
YUV4:2:2
采樣的碼流為:
Y0, U0, Y1, V1, Y2, U2, Y3, V3
最后映射還原的像素點(diǎn)為:
[Y0, U0, V1]; [Y1, U0, V1]; [Y2, U2, V3]; [Y3, U2, V3];
其映射過程如圖所示
YUV采樣格式 - YUV4:2:0
YUV4:2:0采樣格式秽晚,并不是只采樣U分量瓦糟,而不采樣V分量,而是在每一行
掃描時(shí)赴蝇,只掃描
一種U/V其中一種色度分量
菩浙,而Y
按照2:1
的方式采樣。
舉例說明:
- 當(dāng)?shù)谝恍袙呙钑r(shí)句伶,
YU
按照2:1的方式采樣 - 當(dāng)?shù)诙袙呙钑r(shí)劲蜻,
YV
按照2:1的方式采樣
對于每個(gè)色度分量來說,在水平方向和豎直方向的采樣 和 Y分享相比都是2:1
可以簡單的理解為:在田字格的4個(gè)像素點(diǎn)中考余,4個(gè)Y分量共用了一套UV分量
先嬉,如圖所示
假設(shè)原始圖像的像素為(一對[]表示一個(gè)像素點(diǎn)):
[Y0, U0, V0]; [Y1, U1, V1]; [Y2, U2, V2]; [Y3, U3, V3];
[Y5, U5, V5]; [Y6, U6, V6]; [Y7, U7, V7]; [Y8, U8, V8];
將原始圖像像素按照
YUV4:2:0
采樣的碼流為:
Y0, U0, Y1, Y2, U2, Y3,
Y5, V5, Y6, Y7, V7, Y8,
最后映射還原的像素點(diǎn)為:
[Y0, U0, V5]; [Y1, U0, V5]; [Y2, U2, V7]; [Y3, U2, V7];
[Y5, U0, V5]; [Y6, U0, V5]; [Y7, U2, V7]; [Y8, U2, V7];
其映射過程如圖所示
總結(jié)
YUV4:4:4
中Y、U楚堤、V分量的采樣比例相同
疫蔓,既可以理解為原始圖像像素點(diǎn)原樣輸出
,存儲空間沒有任何變化YUV4:2:2
采樣格式身冬,是指每采樣一個(gè)像素點(diǎn)衅胀,都會采樣Y分量,而U酥筝、V分量則會間隔一個(gè)采集一個(gè)滚躯,本質(zhì)是通過左右相鄰
像素點(diǎn)共用U/V分量
。相比RGB顏色編碼格式嘿歌,節(jié)省了 1/3的存儲空間掸掏,同時(shí)節(jié)約了在傳輸時(shí)的帶寬YUV4:2:0
采樣格式,是實(shí)際開發(fā)中最常用的顏色編碼格式宙帝,相比YUV4:2:2
采樣格式阅束,更能節(jié)省空間。是指在2*2的田字格中有4個(gè)像素點(diǎn)茄唐,其中4個(gè)Y分量共用一套UV分量
息裸,其本質(zhì)是通過田字格的上下左右
像素點(diǎn)共用U/V分量
三蝇更、RGB — YUV 顏?色編碼轉(zhuǎn)換
對于圖像顯示器來說,它是通過 RGB
模型來顯示圖像的呼盆,而在傳輸圖像數(shù)據(jù)時(shí)又是使用 YUV
模型年扩,這是因?yàn)?YUV
模
型可以節(jié)省帶寬。因此就需要采集圖像時(shí)將 RGB
模型轉(zhuǎn)換到 YUV
模型访圃,顯示時(shí)再將YUV
模型轉(zhuǎn)換為RGB
模型.
-
RGB
到YUV
的轉(zhuǎn)換厨幻,就是將圖像所有像素點(diǎn)的R、G腿时、B
分量轉(zhuǎn)換到Y况脆、U、V
分量批糟。
YUV 轉(zhuǎn)RGB
R = Y + 1.14 * V
G = Y - 0.39 * U - 0.58 * V
B = Y + 2.03 * U
RGB轉(zhuǎn)YUV
Y = 0.299 * R + 0.587 * G + 0.114 * B
U = -0.147 * R - 0.289 * G + 0.436 * B
V = 0.615 * R - 0.515 * G - 0.100 * B