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、 4:2:2、 4:2:0
等,其中我们最需要关注的是4:2:0
A
:一块 A*2 个像素的概念区域,一般 A=4B
:第一行的色度采样数目C
:第二行的色度采样数目
6. YUV 的存储格式可以分为 3 大类,是哪三类?
Planar(平面)
:①Y、U、V 分量分开单独存储 ②名称通常以字母 p 结尾Semi-Planar(半平面)
:①Y 分量单独存储,U、V 分量交错存储 ②名称通常以字母 sp 结尾Packed(紧凑)
:Y、U、V分量交错存储
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
复制代码
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END