基础知识_02编解码

RAW,BMP,PNG,JPG

常见图片格式基本知识及转换、显示工具:https://blog.csdn.net/sjnjab/article/details/134507551
矢量图、位图、RGB、YUV、JPEG、PNG的理解:https://blog.csdn.net/kcstrong/article/details/81705693
【FPGA图像处理实战】- YUV444与YUV422互转:https://fpga.eetrend.com/blog/2024/100579119.html

BMP,PNG,JPG

JPG:使用一种失真的压缩标准算法,可以选择压缩率,默认的压缩率在70%左右。一张图片在多次压缩解压后,会肉眼可见地失真。
PNG:无损数据压缩格式,包含8位、24位、32位三种格式,32位支持透明形式(多了8bits透明度alpha)。
BMP:原始图像数据,一般有header标识数据的存储结构。
同一张图片三种格式的占用空间:BMP>PNG>JPG

raw原始数据文件

raw原始pixel数据文件主要包含RGB和YUV两种数据格式,这两种数据格式的相关介绍很多,这里不再赘述。RGB包含RGB565,RGB888,ARGB8888,ABGR8888等,YUV包含YUV444,YUV422,YUV420等。
YUV的存储方式包含packed和planner两种方式。
packed:连续存储Y分量,然后依次交叉存储UV分量,常见的有NV12,NV21等;
planner:连续存储Y分量,然后再连续存储U分量(或V分量),最后存储V分量(或U分量),常见的有I420,YV12等。

RGB,YUV

YUV的优势

便于压缩编码。RGB表示的每种颜色都是由红光、绿光、蓝光组合而成的,我们分别使用R、G、B三个分量来表示红光、绿光、蓝光,每个像素的三个分量之间存在着相关性。所以通常会把RGB转换成YUV进行压缩
数据量相对RGB来说更小。前面我们有分析过,同样分辨率的图像,YUV444存储的数据量与RGB相同,但YUV422和YUV420却只需要存储RGB的数据量的 2/3 和 1/2 。
能够兼容老式黑白电视。Y分量单独显示是其实就是黑白图像,因此YUV由彩色转黑白只需要去除UV相关的数据就可以了。

YUV与RGB之间的转换

YUV与RGB之间的转换是存在标准的,常见的标准有:

1
2
3
ITU-R BT.601(标清)
ITU-R BT.709(高清)
ITU-R BT.2020(超高清)。

不同的标准有不同的准换公式,同时还要区分不同的Color Range
Color Range用于指定RGB分量的取值范围,可分为Full Range(取值范围为0255)和Limited Range(取值范围为16235)。

yuv444,422,420

以黑点表示采样该像素点的Y分量,以空心圆圈表示采用该像素点的UV分量,如下图所示。
4:4:4 表示不降低色度(UV)通道的采样率。每个 Y 分量对应一组 UV 分量。
4:2:2 表示 2:1 水平下采样,没有垂直下采样。每两个 Y 分量共享一组 UV 分量。
4:2:0 表示 2:1 水平下采样,同时 2:1 垂直下采样。每四个 Y 分量共享一组 UV 分量。

YUV420,YUV420P,YUV420SP(,NV12,NV21)

常见的基于 YUV 4:2:0 采样的格式如下表:

基于 YUV 4:2:0 采样的格式主要有 YUV 420P 和 YUV 420SP 两种类型,每个类型又对应其他具体格式。

1
2
3
4
5
6
YUV 420P 类型
YU12 格式
YV12 格式
YUV 420SP 类型
NV12 格式
NV21 格式

YUV 420P 和 YUV 420SP 都是基于 Planar 平面格式 进行存储的,先存储所有的 Y 分量后, YUV420P 类型就会先存储所有的 U 分量或者 V 分量,而 YUV420SP 则是按照 UV 或者 VU 的交替顺序进行存储了,具体查看看下图

YUV420P 和YUV420SP

YUV420P 的格式:

其在码流中的表现形式为:

YUV420SP的格式:

其在码流中的表现形式为:

YU12和YV12格式

YU12 和 YV12 格式都属于 YUV 420P 类型,即先存储 Y 分量,再存储 U、V 分量,区别在于:YU12 是先 Y 再 U 后 V,而 YV12 是先 Y 再 V 后 U 。YV 12 的存储格式如下图所示:

YU 12 又称作 I420 格式,它的存储格式就是把 V 和 U 反过来了。

NV12和NV21格式

NV12 和 NV21 格式都属于 YUV420SP 类型。它也是先存储了 Y 分量,但接下来并不是再存储所有的 U 或者 V 分量,而是把 UV 分量交替连续存储。

需要注意的是,
NV12是iOS中有的模式,它的存储顺序是先存Y分量,再YV进行交替存储。
NV21是Android中有的模式,它的存储顺序是先存Y分量,再VU交替存储。

参考

视频图像格式 NV21-NV12-YUV420P 的区别:https://blog.csdn.net/linda012518/article/details/106636942
音视频编解码: YUV存储格式中的YUV420P,YUV420SP,NV12, NV21理解(转):https://www.cnblogs.com/yongdaimi/p/10696214.html

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×