文章目录
1.图像的表示方式–RGB
我们都知道视频都是由图片组成的,任何一个图像都可以由RGB组成,凡是渲染到屏幕上的东西,都要转换为RGB的表示形式。当屏幕要显示某篇文字或者某幅图像时,就会把这幅图像的每一个像素点的RGB通道分别对应的屏幕位置上的子像素点绘制到屏幕上,从而显示整个图像,而每个像素点都由三个子像素点组成。那么像素里的子像素又改如何表示呢?主要有以下两种:
- 浮点表示:
取值范围为0.0~1.0,比如,在OpenGL ES中对每一个子像素点的表示使用的就是这种表达方式。 - 整数表示:
取值范围为0~255或者00~FF,8个比特表示一个子像素,32个比特表示一个像素,这就是类似于某些平台上表示图像格式的RGBA_8888数据格式。比如,Android平台上RGB_565的表示方法为16比特模式表示一个像素,R用5个比特来表示,G用6个比特来表示,B用5个比特来表示。
对于一幅图像,一般使用整数表示方法来进行描述。
每一张图像的裸数据(bitmap 位图)都是很大的。对于图像的裸数据来讲,直接在网络上进行传输也是不太可能的,所以就有了图像的压缩格式,比如JPEG压缩:JPEG是静态图像压缩标准,由ISO制定。JPEG图像压缩算法在提供良好的压缩性能的同时,具有较好的重建质量。这种算法被广泛应用于图像处理领域,当然其也是一种有损压缩。但是,这种压缩不能直接应用于视频压缩,因为对于视频来讲,还有一个时域上的因素需要考虑,也就是说,不仅仅要考虑帧内编码,还要考虑帧间编码。视频采用的是更成熟的算法。
2.视频的表示方式–YUV
对于视频帧的裸数据表示,其实更多的是YUV数据格式的表示,YUV主要应用于优化彩色视频信号的传输,使其向后兼容老式黑白电视。与RGB视频信号传输相比,它最大的优点在于只需要占用极少的频宽(RGB要求三个独立的视频信号同时传输)。其中 “Y”表示明亮度(Luminance或Luma),也称灰阶值;而 “U”和“V”表示的则是色度(Chrominance或Chroma),它们的作用是描述影像的色彩及饱和度,用于指定像素的颜色。“亮度”是透过RGB输入信号来建立的,方法是将RGB信号的特定部分叠加到一起。“色度”则定义了颜色的两