RGB 顏色編碼
- RGB顏色編碼格式
每種顏色都可以用(紅,綠,藍)三種原色來表示,將RGB分別取不同的值,展示不同的顏色。
-
RGB顏色編碼像素點
用RGB表示的圖像中,每個像素點都有紅、綠、藍三個原色,每種顏色都占用8 bit存儲,一個像素點占用3個字節
當有一張 1280 * 720 大小的圖片時,該圖片中有 1280 * 720個像素點,其中每個像素點都采用RGB編碼格式,那么這張圖片就會占用1280 * 720 * 3 / 1024 / 1024 = 2.63MB的存儲空間。
YUV 顏色編碼
-
YUV 顏色編碼
采用的是明亮度和色度來指定像素的顏色:
Y表示明亮度(Luminance或Luma),也就是灰度值
U(Cb)表示色調(Chrominance)
V(Cr)表示飽和度(Chroma)
YUV顏色編碼像素點
為什么使用YUV:
采用不同的YUV采樣格式可以達到:降低占用的存儲空間,節省帶寬YUV采樣格式:
YUV4:4:4:每個Y分量對應自己的UV分量
YUV4:2:2:兩個Y分量共用一套UV分量
YUV4:2:0:4個Y分量共用一套UV分量
其中最常用的YUV格式則是YUV4:2:0
YUV采樣格式 - YUV4:4:4
YUV4:4:4 采樣格式,表示其中的Y、U、V三個分量的采樣比例是相同的,每個分量占用8bit,一個像素點占用1個字節。與RGB顏色編碼相比,并沒有節省帶寬,占用的存儲空間也沒有減少
可以簡單理解為:原始像素原樣輸出,沒有任何壓縮
假設原始圖像的像素為(一對[]表示一個像素點):
[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];
還原的像素點 = 原始圖像的像素,為:
[Y0, U0, V0]; [Y1, U1, V1]; [Y2, U2, V2]; [Y3, U3, V3];
YUV4:4:4中Y、U、V分量的采樣比例相同,既可以理解為原始圖像像素點原樣輸出,存儲空間沒有任何變化
一張 1280 * 720 大小的圖片,在 YUV 4:4:4 采樣時的大小為:
(12807208 + 12807208 + 12807208)/8/1024/1024 = 2.64 MB
YUV采樣格式 - YUV4:2:2
YUV4:2:2采樣格式,是指其中Y分量的采樣是UV分量的2倍,即Y分量與UV分量是按照2:1的比例采樣。舉例說明:如果水平方向有10個像素點,通過這種采樣格式,最終采樣了10個Y分量,5個UV分量
每采樣一個像素點,都會采樣Y分量,而U、V分量則會間隔一個采集一個
[圖片上傳失敗...(image-c28a7e-1599700497463)]
假設原始圖像的像素為(一對[]表示一個像素點):
[Y0, U0, V0]; [Y1, U1, V1]; [Y2, U2, V2]; [Y3, U3, V3];
將原始圖像像素按照YUV4:2:2采樣的碼流為:
Y0, U0, Y1, V1, Y2, U2, Y3, V3
最后映射還原的像素點為:
[Y0, U0, V1]; [Y1, U0, V1]; [Y2, U2, V3]; [Y3, U2, V3];
YUV4:2:2采樣格式,每采樣一個像素點,都會采樣Y分量,而U、V分量則會間隔一個采集一個,本質是通過左右相鄰像素點共用U/V分量。
一張 1280 * 720 大小的圖片,在 YUV 4:2:2 采樣時的大小為:
(12807208 + (1280720)/28 + (1280720)/28)/8/1024/1024 = 1.76 MB
相比RGB顏色編碼格式,節省了 1/3的存儲空間,同時節約了在傳輸時的帶寬
YUV采樣格式 - YUV4:2:0
YUV4:2:0采樣格式,并不是只采樣U分量,而不采樣V分量,而是在每一行掃描時,只掃描一種U/V其中一種色度分量,而Y按照2:1的方式采樣。
可以簡單的理解在田字格的4個像素點中,4個Y分量共用了一套UV分量,
假設原始圖像的像素為(一對[]表示一個像素點):
[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,
最后映射還原的像素點為:
[Y0, U0, V5]; [Y1, U0, V5]; [Y2, U2, V7]; [Y3, U2, V7];
[Y5, U0, V5]; [Y6, U0, V5]; [Y7, U2, V7]; [Y8, U2, V7];
YUV4:2:0采樣格式,是實際開發中最常用的顏色編碼格式,相比YUV4:2:2采樣格式,更能節省空間。是指在2*2的田字格中有4個像素點,其中4個Y分量共用一套UV分量,其本質是通過田字格的上下左右像素點共用U/V分量。
一張 1280 * 720 大小的圖片,在 YUV 4:2:0 采樣時的大小為:
(12807208 + (1280720)/48 + (1280720)/48)/8/1024/1024 = 1.32 MB