音視頻 day16 YUV

1. YUV 是什麼?

  • YUV: 是一種顏色編碼方法,跟 RGB 是同一個級別的概念,普遍應用於多媒體領域中。也就是說,圖像中每個像素的顏色信息,除了能夠用 RGB 的方式表示,也能夠用 YUV 的方法表示。
  • RGB 數據由 R、G、B 三個份量組成
  • YUV 數據由 Y、U、V 三個份量組成,如今一般說的 YUV 指的是 YCbCr。
  • Y:表示亮度(Luminance、Luma),佔 8bit(1 個字節)
  • Cb、Cr:表示色度(Chrominance、Chroma)
  • Cb(U):藍色色度份量,佔 8bit(1 字節)
  • Cr(V):紅色色度份量,佔 8bit(1 字節)

2. 和 RGB 對象,YUV 有哪些不一樣或優點呢?

  • YUV體積更小: 若是使用 RGB,好比RGB888 格式下,一個像素須要佔用 24bit(3 字節);若是使用 YUV,一個像素能夠減小至平均只佔用 12bit(1.5 字節)
  • YUV 兼容性更好: ①YUV 出現於黑白電視到彩色電視的過渡期,黑白電視僅須要接收 Y 份量便可
  • 組成結構更佳: 由於人眼結構對 Y 份量的識別能力特別好,而對 UV 份量的識別較弱,因此能夠適當壓縮 UV 份量,在不影響人眼識別的狀況下,達到更小數據的傳輸體積

3. 人眼的視網膜上,分佈着兩種感光細胞,是哪兩種?分別有什麼做用?

  • 兩種感光細胞:視杆細胞、視錐細胞
  • 視杆細胞: ①感知光線的強弱 ②沒有色彩識別功能 ③負責夜間非彩色視覺
  • 視錐細胞: ①感知顏色 ②負責白天彩色視覺 ③ 若是你的視錐細胞發育不正常,數量太少,那感知顏色就會受阻,可能會致使你色弱

4. 兩種感光細胞的含量不一樣,形成什麼結果?

  • 人眼中有上億個感光細胞,其實視杆細胞佔了 95%,而視錐細胞僅佔 5%
  • 所以,人眼對亮度的敏感程度要高於對色度的敏感程度,人眼對於亮度的分辨要比對顏色的分辨精細一些。
  • 若是把圖像的色度份量減小一些,人眼也絲毫感受不到變化和差別。

5. YUV 的採樣格式常見的有哪三種?

  • 採樣格式一般用 A:B:C 的形式來表示,好比 4:4:四、 4:2:二、 4:2:0 等,其中咱們最須要關注的是 4:2:0
  • A:一塊 A*2 個像素的概念區域,通常 A=4
  • B:第一行的色度採樣數目
  • C:第二行的色度採樣數目

image.png

色度二次採樣

6. YUV 的存儲格式能夠分爲 3 大類,是哪三類?

  • Planar(平面):①Y、U、V 份量分開單獨存儲 ②名稱一般以字母 p 結尾
  • Semi-Planar(半平面):①Y 份量單獨存儲,U、V 份量交錯存儲 ②名稱一般以字母 sp 結尾
  • Packed(緊湊):Y、U、V份量交錯存儲

image.png

 I420

7. 將其餘圖片格式轉 YUV

ffmpeg -i in.png -s 512x512 -pix_fmt yuv420p out.yuv
複製代碼
  • 上述命令生成的yuv文件大小是:393216字節 = 512 * 512 * 1.5字節。

8. 展現 YUV 圖片

ffplay -s 512x512 -pix_fmt yuv420p out.yuv
複製代碼

9. 顯示單個份量

  • 可使用過濾器(filter)顯示其中的單個份量(r、g、b、y、u、v)。
# 只顯示r份量
ffplay -vf extractplanes=r in.png
 # 只顯示g份量
ffplay -vf extractplanes=g in.png
 # 只顯示b份量
ffplay -vf extractplanes=b in.png
 # 只顯示y份量
ffplay -video_size 512x512 -pixel_format yuv420p -vf extractplanes=y in.yuv
# 只顯示y份量
ffplay -video_size 512x512 -pixel_format yuv420p -vf extractplanes=u in.yuv
# 只顯示y份量
ffplay -video_size 512x512 -pixel_format yuv420p -vf extractplanes=v in.yuv

複製代碼
相關文章
相關標籤/搜索