图片是什么学习

矢量图和位图

  • 先从概念说起:矢量图是根据几何特性来绘制图形,是用线段和曲线描述图像,矢量可以是一个点或一条线,矢量图只能靠软件生成,矢量图文件占用内在空间较小,因为这种类型的图像文件包含独立的分离图像,可以*无限制的重新组合;
  • 位图图像也称为点阵图像,位图使用我们称为像素的一格一格的小点来描述图像。
  • 最大的区别,矢量图形与分辨率无关,可以将它缩放到任意大小和以任意分辨率在输出设备上打印出来,都不会影响清晰度,而位图是由一个一个像素点产生,当放大图像时,像素点也放大了,但每个像素点表示的颜色是单一的,所以在位图放大后就会出现咱们平时所见到的马赛克状。
  • 位图表现的色彩比较丰富,可以表现出色彩丰富的图象,可逼真表现自然界各类实物;而矢量图形色彩不丰富,无法表现逼真的实物,矢量图常常用来表示标识、图标、Logo等简单直接的图像。
  • 位图的文件类型很多,如.bmp.pcx.gif.jpg.tifphotoshop.psd\color{red}{*.bmp、*.pcx、*.gif、*.jpg、*.tif、photoshop的*.psd}∗.bmp、∗.pcx、∗.gif、∗.jpg、∗.tif、photoshop的∗.psd等;
    矢量图形格式也很多,如AdobeIllustrator的*.AI、.EPS和SVG、AutoCAD的.dwg和dxf、Corel DRAW的*.cdr等。
  • 由于位图表现的色彩比较丰富,所以占用的空间会很大,颜色信息越多,占用空间越大,图像越清晰,占用空间越大;\color{red}{由于矢量图形表现的图像颜色比较单一,所以所占用的空间会很小}由于矢量图形表现的图像颜色比较单一,所以所占用的空间会很小。
  • 经过软件矢量图可以很轻松的转化为位图,而位图要想转换为矢量图必须经过复杂而庞大的数据处理,而且生成的矢量图质量也会有很大的出入。
  • 位图的像素都分配有特定的位置和颜色值。每个像素的颜色信息由RGB组合或者灰度值表示。
  • 根据位深度,可将位图分为1、4、8、16、24及32位图像等。每个像素使用的信息位数越多,可用的颜色就越多,颜色表现就越逼真,相应的数据量越大。例如,位深度为 1 的像素位图只有两个可能的值(黑色和白色),所以又称为二值位图。位深度为 8 的图像有 28(即 256)个可能的值。位深度为 8 的灰度模式图像有 256 个可能的灰色值。
  • RGB图像由三个颜色通道组成。8 位/通道的 RGB 图像中的每个通道有 256 个可能的值,这意味着该图像有 1600 万个以上可能的颜色值。有时将带有 8 位/通道 (bpc) 的 RGB 图像称作 24 位图像(8 位 x 3 通道 = 24 位数据/像素)。[2]通常将使用24位RGB组合数据位表示的的位图称为真彩色位图。

各种图片编码格式详解(bmp,jpg,png)

  • 图像是二维数据,数据在内存中只能一维存储,二维转一维有不同的对应方式。比较常见的只有两种方式: 按像素“行排列”从上往下或者从下往上。
  • 不过好像只有bmp图片格式以及windows下的GDI,GDI+是从下往上排列,其它比如DirectX,OpenGL,Cocoa(NSImage, UIImage),OpenCV等都是从上往下排列。
  • JPEGmp3\color{red}{JPEG格式在图片中的地位相当于mp3格式在音乐中的地位一样}JPEG格式在图片中的地位相当于mp3格式在音乐中的地位一样
  • 约等于2.86MB,这个文件大小看过小说的人都能想象到,大概应该是150w字到200w字,而经过JPEG压缩后,其大小能达到300KB左右,压缩比一般为1:8左右
  • 前面提到过JPEG是有损压缩,所谓有损, 西\color{red}{就是把图片中不重要,人眼对其不敏感的东西过滤掉,以达到压缩文件大小的目的}就是把图片中不重要,人眼对其不敏感的东西过滤掉,以达到压缩文件大小的目的,比如12345.0000000001这个数字,我们可以将其视为12345
  • 接下来,在存储过程中,我们可以使用一些特殊的方式对存储结构进行优化,以达到进一步压缩文件大小的目的。所以,对原始图像信息进行JPEG编码的过程就分为两大步:第一步,去除视觉上的多余信息,即空间冗余度;第二步,去除数据本身的多余信息,即结构冗余度。
  • 从这里,就可以看出,计算出来的 Y、Cr 和 Cb 分量,会出现大量的小数,即浮点数,从而导致了在JPEG 编码过程中会出现大量的浮点数的运算(耗时操作),当然经过一定的优化,这些浮点数运算可以用移位与加法这些计算机能更快速处理的方式来对其进行编码。
  • 可以明显看到,亮度图的细节更加丰富。JPEG把图像转换为YCbCr之后,就可以针对数据得重要程度的不同做不同的处理。这就是为什么JPEG一般使用这种颜色空间的原因。
  • 而这一步为后面的图像压缩起了铺垫作用,所以DCTJPEG\color{red}{DCT变换是JPEG压缩算法的核心。}DCT变换是JPEG压缩算法的核心。
  • 前面我们提到过,人眼对计算机色彩中的高频信息部分不敏感,所以如果能将图像中的高频部分过滤掉就可以实现对图像的压缩了。
  • 经过DCT变换,可以把一个数组分解成数个数组的和,如果我们数组视为一个一维矩阵,那么可以把结果看做是一系列矩阵的和。
  • 讲过DCT变换之后,整个图像的能量都被集中在了左上角的直流分量中。再来看一个普遍一点的例子:可以明显看出,DCT变化后,矩阵被分成了直流分量和交流分量两个部分,而一直到这里,这个过程都是可逆的,图像仍然是无损的,而这一步为后面的图像压缩起了铺垫作用,所以DCT变换是JPEG压缩算法的核心。

参考文章

上一篇:位图在Android中压缩PNG – > JPEG,反之亦然


下一篇:centos7系统-疑难杂症-gd库不支持jpeg解决办法