音视频 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

复制代码
相关文章
相关标签/搜索