欢迎您光临五金加工厂,如有问题请及时联系我们。

怎么理解PNG、JPEG、RGB、YUV?

作者:五金加工
文章来源:本站

  这些是图像的格式,jpg和png是我们最常用的照片格式,平时我们拍照片,手机里的图片大部分都是JPG格式。RGB是一种色彩模式,通常我们手机显示屏,电脑显示屏的显示模式都是RGB模式。学做PS有点PS基础的人都知道这些格式!图像格式的种类比较多,格式是PS的用法不同的要求,不同的格式!

  要彻底搞明白这几个东西,我们要先理解几个概念。

  1.存储格式

  众所周知,不管我们使用的计算机还是手机,不管是图片、音频、视频、文本等各种文件,在最底层,都只有0和1这两个元素。

  而存储格式就是按照相应的规定,把代表一个文件(图片、音频、视频、文本等)的0和1遵照这个规定存储起来,当我们打开这个文件的时候,计算机又遵循这个规定把文件展现出来。

  明白了这个,我们再来看看题主提出的PNG和JPEG,这两个东西均是图片的存储格式。他们描述了一张图片的完整信息,计算机或者其他图像设备遵循这个格式来存储或者显示这个格式的图片。每种图片的存储格式均有其优缺点,这里我们不做更深的探讨。

  2.颜色模型

  提起“三原色”这个名词,大多是人并不陌生,咱们五彩斑斓的世界,均是由这三原色搭配混合而成。而RGB光从字面理解即是红色(red)、绿色(Green)、蓝色(Blue)总称。在工业界,RGB色彩模式就是一种颜色标准,通过对这三个颜色通道的变化以及相互之间的叠加来得到各种各样的颜色,比如咱们的显示屏。

  当我们提到RGB色彩模式时,最简单的理解就是它描述了一个像素点的颜色的值,这个点的颜色分别由多少红色(R)、多少绿色(G)、多少蓝色(B)搭配混合而成。

  而当我们提到RGB格式时,它所代表的,是下面我们要讲的颜色编码。

  3.颜色编码

  其实这个和存储格式类似,就是将描述颜色的数字按照一定的格式存储起来,YUV即是一种颜色编码的方法,上述提到的RGB格式也是颜色编码的方法。

  YUV中,Y即代表亮度,U和V则代表色度,以此来描述影像的色彩和饱和度。常用在各种视频处理组件中。

  PNG是一种无损压缩格式,也就是说经过PNG编码后的图像解码后可以保留源文件全部信息。

  JPEG是一种有损压缩格式。其压缩比例可达1:100,一般在1:10左右,右侧的值越大,文件越小,但清晰度也越低。

  YUV是针对每一个像素的,提取像素的亮度、色差。

  RGB是像素点色彩值的最直观表述,位图的每个像素可以用RGB格式表述。

  矢量图与位图

  矢量图与位图均为图像的表述方式,矢量图可以理解为在我们口中描述图形的方法,比如:图A:一个半径10cm的绿色实心圆,重点包括:圆、实心、绿色、半径为10cm、圆心位置,这些信息只需要很少的字节即可记录图A,因而,矢量图所占空间较小;还有一个特点就是放大以后不会变形,因为不管放多大,其特征都是固定的。矢量图缺点也很明显,难以表述复杂场景。基于矢量图放大不变形的特点,目前有一个重要的应用场景是电子地图。

  位图的基本单元为像素,位图即是像素的集合,具体到某一张平面图片,将其量化为width*heigh的像素矩阵,每个像素使用一定的规则(RGB或YUV,稍后细述)进行表述,得到整个图片的二进制文件格式即为位图。不经过处理的位图持有原图的全部数字化信息,图片文件比矢量图要大很多。

  二、RGB

  位图的每个像素可以用RGB格式表述,RGB也是像素点色彩值的最直观表述,常用的RGB包括RGB565、RGB888,表示不同的量化级别,以RGB888为例,分别采用8个bit表示红色、蓝色和绿色,各色值的量化范围为[0,255],可以表述2^24个色值。一幅720*1080的图片如果用RGB888表述的话大小为:720*1080*3=2M左右,文件较大,一般都要进行压缩处理。当前大部分的压缩处理算法是不是基于RGB的,而是针对YUV的。还有一种ARGB格式,在RGB的基础上,加上了Alpha通道,可以处理图片的透明部分。

  三、YUV

  RGB是把图片的每一个像素值用RGB的格式进行表述,YUV是另一种表述格式,也是针对每一个像素的,提取像素的亮度(Y分量)、色差(UV分量)。RGB的存储中,每个像素的R分量G分量B分量是挨着存放的,而YUV则是分为Y块、U块、V块三个矩阵,人眼最敏感的Y块全量保留,UV分块则可进行压缩处理。YUV的格式包括:YUV444、YUV422、YUV420、YUV411,表示不同的压缩比例,YUV444为源像素值。怎么理解呢,看下述步骤:

  首先,取相领的2*2的四个像素

  [Y1,U1,V1][Y2,U2,V2]

  [Y3,U3,V3][Y4,U4,V4]

  

怎么理解PNG、JPEG、RGB、YUV?

  YUV444即为上述的四个值全部保留,YUV各占1Byte,四个像素所需空间为4*3=12B

  YUV422为U值两个像素取一个、V值也是两个像素取一个,结果为:

  [Y1,U1,V2][Y2,U1,V2]

  [Y3,U3,V4][Y4,U4,V4]

  

怎么理解PNG、JPEG、RGB、YUV?

  四个像素所占空间为4*2=8B

  YUV411四个像素使用一个像素的UV分量,编码结果为:

  [Y1,U1,V3][Y2,U1,V3]

  [Y3,U1,V3][Y4,U1,V3]

  所占空间为4*3/2=6Byte

  YUV420并非不要V分量,而是以行为单位,一行取U值,一行取V值

  扩展一下源像素,第三、四行为:

  

怎么理解PNG、JPEG、RGB、YUV?

  [Y5,U5,V5][Y6,U6,V6]

  [Y7,U7,V7][Y8,U8,V8]

  YUV420的编码结果为:

  [Y1,U1,无][Y2,U1,无]

  [Y3,U3,无][Y4,U3,无]

  [Y5,无,V5][Y6,无,V5]

  [Y7,无,V7][Y8,无,V7]

  8个像素所占空间为8*3/2=12Byte,4个像素的话为6B

  一幅720*1080的图片YUV420格式的大小为:720*1080*3/2=1M左右,是RGB的一半。

  

怎么理解PNG、JPEG、RGB、YUV?

  RGB与YUV的转换公式:

  ?

  矩阵形式:

  ?

  要注意的是在写代码实现上,两者的存储方式不同,RGB连在一起,YUV分块存放。

  四、JPEG

  JPEG是一种有损压缩格式,其压缩比可达1:100,一般在1:10左右,右侧的值越大,文件越小,但清晰度也越低,其算法 的实现原理有非常多的文章描述的很清楚了,也不是很复杂,下面是我看到的几篇比较好的,推荐给大家:

  中文:

  https://blog.csdn.net/newchenxf/article/details/51719597/

  https://blog.csdn.net/asdzheng/article/details/51779038

  英文资料中维基上的就很全:

  https://en.wikipedia.org/wiki/JPEG

  总体说来,先压缩UV分量,然后分别对Y、U、V块进行离散余弦变换,将变换完的矩阵使用量化矩阵(和压缩比有关系)进行量化,Z字形拉平矩阵,哈夫曼编码。

  五、PNG

  PNG是一种无损压缩格式,也就是说经过PNG编码后的图像解码后可以保留源文件全部信息。当然,这个只是理论的,在实际算法中,与PNG支持的色度有关,比如,PNG表示一个颜色值使用8bit,则可以表示256种颜色,也就是说编码及解码可以达到256种颜色的还原,24位的PNG和RGB的精确度是一致的。PNG算法压缩原理利用的是图像相邻的色值有大面积重复部分,比如说,拍摄的蓝天白云,其蓝天部分的色值重复率就很高。PNG算法中首先按图像从左到右、从上到下获得各像素点的色值,然后在表示色值M之前会加一个重复个数的值N,表示该M色值往后N位全就都是M色值,N最大可表示的值取决于重复个数的二进制位,比如8位,最多可表示256个重复值,超过256,即使仍然是相同颜色,也要需要新起色值表示,这样重复色块就合并成数量+色值的表示,从而达到压缩效果。图像重合块越多,PNG的压缩效果就越好

  

这些是图像的格式,jpg和png是我们最常用的照片格式,平时我们拍照片,手机里的图片大部分都是JPG格式。RGB是一种色彩模式,通常我们手机显示屏,电脑显示屏的显示模式都是RGB模式。学做PS有点PS基础的人都知道这些格式!图像格式的种类比较多,格式是PS的用法不同的要求,不同的格式!

来源:文章来源于网络,如有侵权请联系我们删除。本文由五金加工编辑,欢迎分享本文,转载请保留出处和链接!