YUV 顏色編碼采用的是 明亮度 和 色度 來指定像素的顏色,而色度又定義了顏色的兩個方面:色調和飽和度。
其中:
- Y 表示明亮度(Luminance、Luma)
 - U 和 V 表示色度(Chrominance、Chroma)(U,V 分別是藍色通道和紅色通道)
 

其中:
- Y 通道數值越高,圖片則越亮
 - U 通道數值越高,顏色就越接近藍色
 - V 通道數值越高,顏色就越接近紅色
 
其歷史來源是歐洲的電視系統采用的一種顏色編碼方式,主要是為了讓信號支持新的彩色電視,但也繼續支持黑白電視。如果是黑白電視,只使用 Y 通道信號就足夠。
YUV色彩編碼格式由其色度抽樣方式 + 存儲方式決定。
1. 色度抽樣方式
色度抽樣方式用 J:A:B 表示
- J:最小水平抽樣的的寬度,一般為4
 - A:最小水平抽樣區域第一行的色度抽樣
 - B:最小水平抽樣區域第二行的色度抽樣
 
下圖是常見的抽樣方式:

注意:
- 4:2:0並不是只抽樣第一行的色度,是第一行和第二行輪番抽樣的:4:2:0 -> 4:0:2 -> 4:2:0
 - 不管是哪種抽樣方式,亮度Y都是全抽樣的,不同之處在於U、V分量的抽樣率
 - 常用的4:2:0的U、V都是半抽樣,所以抽樣后的數據量是RGB24一半。(RGB24相當於全抽樣)
 
2. YUV存儲方式
YUV存儲方式主要分為兩種:Packeted 和 Planar。
- planar 平面格式:將YUV分量分別存儲到矩陣,每一個分量矩陣稱為一個平面。
 - packed 打包模式 :每個像素點的 Y、U、V 分量是連續交替存儲的。
 
於是根據采樣方式和存儲格式的不同,就有了多種 YUV 格式。
以下鏈接包含了常見的YUV格式信息:
https://www.fourcc.org/yuv.php
3.常見格式
3.1 基於 YUV 4:2:0 采樣的格式
基於 YUV 4:2:0 采樣的格式主要有 YUV 420P 和 YUV 420SP 兩種類型
YUV 420P 和 YUV 420SP 都是基於 Planar 平面模式進行存儲的,兩者都是先存儲所有的 Y 分量后,
- YUV420P 類型會再存儲所有的 U 分量或者 V 分量,采用的是三平面方式進行存儲
 


- YUV420SP 則是按照 UV 或者 VU 的交替順序進行存儲,采用的是兩平面方式進行存儲
 


YUV 420P 類型又對應其它具體格式:
- YU12 格式(又稱作 I420 格式,先 Y 再 U 后 V)
 

- YV12 格式(先 Y 再 V 后 U)
 

YUV 420SP 類型又對應其它具體格式:
- NV12 格式(IOS 中有的模式,先Y,再UV 進行交替存儲)
 - NV21 格式(Android 中有的模式,先Y,再VU 進行交替存儲)
 
3.2 基於 YUV 4:2:2 采樣的格式
YUV 4:2:2 采樣規定了 Y 和 UV 分量按照 2: 1 的比例采樣,兩個 Y 分量公用一組 UV 分量。
基於 YUV 4:2:2 采樣的格式主要有 YUYV 格式、UYVY 格式 和 YUV 422P 格式三種類型:
- YUYV 格式是采用Packed格式進行存儲的,指每個像素點都采用 Y 分量,但是每隔一個像素采樣它的 UV 分量。
 

- UYVY 格式是采用Packed格式進行存儲,它的順序和 YUYV 相反,先采用 U 分量再采樣 Y 分量
 

- YUV 422P 格式,又叫做 I422,采用的是Planar格式、三平面進行存儲,先存儲所有的 Y 分量,再存儲所有的 U 分量,再存儲所有的 V 分量。
 
