YUV格式

前言

最近要修改HEVC解码器的Direct Show Filter,涉及视频输出格式的转换,好好学习了一下YUV。

简介

一般来说一个像素是RGB三色组成,那YUV是什么?YUV是将RGB转换成亮度Y,以及色度U和V。

这个转换是有历史的:先是有黑白电视,后来有彩色电视,彩色电视为了兼容黑白电视,使用了YUV颜色空间。传输的数据是YUV都有的,对于黑白电视,只显示其中的亮度(Y),而彩色电视则将YUV转换成RGB进行显示。

后来科学家们发现人眼系统(HVS)对亮度比色度敏感,YUV比较符合这一规律。也就是说对于敏感的亮度占用比重大一些,色度比重小一些,对人眼是差不多的。所以出现了目前主流的YUV4:2:0,色度是亮度的1/4大小。

YUV分类

首先分为2大类,packed yuv 和 planar yuv。

packed yuv 就是YUV挨着,组成一个单位; planar yuv 就是先存放所有的Y,然后存放U或者V。

planar yuv 比较常用

  • YV12,YYYYYYVVVVVUUUU
  • NV12, YYYYYYYUVUVUVUVUVUVUV
  • IYUV 和 I420 是一种,YYYYUUUUVVVV

对于色度的采样有以下几种:

  • 4:4:4 是没有下采样的;
  • 4:2:2 是水平进行了下采样,行没有下采样;
  • 4:2:0 是行和列都进行了下采样。

RGB转YUV

RGB与YUV的转换方法是,先YUV 4:4:4转RGB,然后YUV4:4:4转其他(比如YUV4:2:0)。

RGB到YUV的转换有2种,差别是第二种Green占的比重更大,Blue占的比重更小。据说是人眼对Green更敏感?

Y' = 0.299R + 0.587G + 0.114B Y' = 0.2125R + 0.7154G + 0.0721B

Loading Disqus comments...
Table of Contents