前一段时间在看ffmpeg的源代码的时候对Frame结构中为什么要有四个元素来表示原始图像数据表示不理解。
RGB图像格式下只需要用一个元素来表示图像数据 因为只有一个位面,RGB数据的采样率是一致的
YUV图像格式下分别存在YUV三个位面,一个亮度,两个色度,而且每个位面的采样率、大小等还不一致
但是为什么存在第四个位面一直没搞明白为啥,今天终于明白啦。
原来在计算机图形学上还存在一个Alpha位面,指明一张图片的透明度。32位操作系统中几乎所有显卡都具有32位数据总线。所以在表示红,绿,蓝三色每 个8个位元之后,还剩余8个位元用来表示透明度。白色的alpha象素用以定义不透明的彩色象素,而黑色的alpha象素用以定义透明象素,黑白之间的灰 阶用来定义半透明象素。
wiki
阿尔法通道(α Channel或Alpha Channel)是指一张图片的透明和半透明度。例如:一个使用每个像素16位元储存的位图,对于图形中的每一个像素而言,可能以5个位元表示红色,5个位元表示绿色,5个位元表示蓝色,最后一个位元是阿尔法。在这种情况下,它要么表示透明要么不是,因为阿尔法位元只有0或1两种不同表示的可能性。又如一个使用32个位元储存的位图,每8个位元表示红绿蓝,和阿尔法通道。在这种情况下,就不光可以表示透明还是不透明,阿尔法通道还可以表示256级的半透明度,因为阿尔法通道有8个位元可以有256种不同的资料表示可能性。
(zzcqh) |