1)10bit是什么?与8bit相比有何优势?
2)如何理解YUV444、YUV422、YUV420、YUV411?YUV420为何不命名为“更合理的YUV411”?
Q:10bit是什么?与8bit相比有何优势?
“bit是色深的单位,色深即色彩深度,色彩深度是计算机图形学领域表示在位图或者视频帧缓冲区中储存1像素的颜色所用的位数。色彩深度越高,可用的颜色越多“,这是维基百科对色深的解释。
但色深更精简的意思是:同一种颜色有多少种灰阶划分(也可以简单理解为一种颜色有多少种亮度)。
n bit意味着使用了2^n个灰阶来表示红绿蓝三原色的亮度,10bit则使用了至少1024个灰阶,是普通8bit的4倍。(下图为8bit--256个灰阶)
显色数与灰阶不同,每个像素的显色数为(2^n)(2^n)(2^n)(其中n为bit数),从感性认知角度来看,8bit仅能显示约1600万+个颜色单位,而10bit能显示10亿多个颜色单位,能表达出比8bit视频更细腻的色彩。比如,10bit视频相比8bit视频,尤其是高质量的内容,10bit能比8bit保留更多的细节,也不容易产生色带(banding)。
Q2:如何理解YUV444、YUV422、YUV420、YUV411?YUV420为何不命名为“更合理的YUV411”?
人眼对亮度敏感而对色度不敏感,因此在YUV格式中减少UV的数据量,能够在不影响用户观看效果的情况下有效地压缩总体的数据量。而含有不同色度分量的编码方式,UV数据的减少量和方式也有所不同,这也是为什么会有YUV444、YUV422、YUV420、YUV411...下面我们用更具象的方法,带大家更好地理解他们之间的区别。
1)YUV444
采样时每个信号的色度UV信号全部采取,还原图像时每个像素的三个分量信息完整,此格式占用空间最大。
特点:每1个Y分量用1组UV分量,单个像素占用空间为3byte=1byte(Y)+1byte(U)+1byte(V)
① 未采样前的YUV数据:
② 采样:(简单理解为)YUV444采样时,每一行四个像素中4:4:4抽样,即每一行U取4个,V取4个
③ 还原的像素:
2)YUV422
采样时每个信号的色度UV信号分别每隔一个采样,还原图像时使用相邻采样点不同的UV信号补充。
特点:每2个Y分量用1组UV分量,单个像素占用空间为2byte=1byte(Y)+1/2byte(U)+1/2byte(V)
① 未采样前的YUV数据:
② 采样:(简单理解为)YUV422采样时,每一行四个像素中4:2:2抽样,即每一行U取2个,V取2个
③ 还原的像素:
3)YUV420
YUV420并不意味着只有Y、U分量,而没有V分量。它指的是对每行扫描线来说,只有一种色度分量以2:1的抽样率存储。相邻的扫描行存储不同的色度分量, 也就是说, 如果一行是4:2:0的话, 下一行就是4:0:2, 再下一行是4:2:0...以此类推,因此有人说YUV420更准确的命名应该叫YUV420YUV402。
特点:每4个Y分量用1组UV分量,单个像素占用空间为1.5byte=1byte(Y)+1/4byte(U)+1/4byte(V)
① 未采样前的YUV数据:
② 采样:(简单理解为)YUV420采样时,
第一行 4:2:0抽样,即第一行U取2个,V取0个
第二行 4:0:2抽样,即第二行U取0个,V取2个
③ 还原的像素:
4)YUV411
采样时每个信号的色度UV信号分别每隔3个采样,还原的时候使用相邻采样点不同的UV信号补充。
特点:每4个Y分量用1组UV分量,单个像素占用空间为1.5byte=1byte(Y)+1/4byte(U)+1/4byte(V)
① 未采样前的YUV数据:
② 采样:(简单理解为)YUV411采样时,每一行四个像素中 4:1:1抽样,即每一行U取1个,V取1个
③ 还原的像素:
读到这里,大家对YUV有更了解一点吗?YUV411与YUV420看似都是每4个Y分量用1组UV分量,为什么还会有所区分,420为何不是叫“更合理的411”,你心中有答案了吗?如果还不确定,我们再温习一遍:
虽然YUV420和YUV411就Y、U、V数量上而言是一样的,但区别在于YUV411是在水平方向上对色度进行4:1抽样,每行中都含有U和V;而YUV420对每行扫描线来说,只有一种色度分量以2:1的抽样率存储,在水平方向上每一行除了Y只有U或V,但是下一行中会有上一行中缺少的色度(如上一行只有V的话,下一行就只有U),每行必有Y,只有U或者V的一种。因此若把YUV420命名为“更合理的YUV411”,可能也不太合理噢~