图像压缩解压过程

本文主要介绍从摄像机获取图像,然后经过压缩、封装成一个文件,之后再被解压显示出来的过程。以下是图像压缩解压的整个流程图:

图像压缩解压过程_第1张图片

图 图像压缩解压的流程图

  • 从摄像头捕获图像

常见的感光元件有CCDCMOS材料。在摄像机内部,实际景物的光信号被CCD/CMOS转换为电信号,然后经过A/D转换输出量化电平值。此时输出的数据是未经过压缩处理的原始图像数据,称为RAW-DATA

但是,有些摄像机内部可以直接对量化后的图像电平值进行JPEG压缩,减小输出的数据量。

  • 数据压缩

该环节是对摄像头输出的图像进行数据压缩,减小文件数据量,比如我们生活中通常使用JPEG对图像进行压缩、用MPEG4对视频进行压缩。此时输出的数据是经过压缩的,是一连串01的数据,通常称为码流(CodeStream)。

对图像和视频的压缩方法很多种,主要可以分为无损压缩和有损压缩两大类。对于静态图像,常见的有JPEG有损压缩和PNG无损压缩。对于视频,常见的有M-JPEG压缩和MPEG4压缩。

顺带说一下M-JPEG压缩与MPEG4压缩的区别。M-JPEG压缩是利用JPEG压缩技术对视频的每一帧图像分别进行压缩;而MPEG4压缩考虑了图像帧与帧之间的关系(比如两帧之间的图像内容通常相差不大,有很多相同的信息),在JPEG基础上应用了差分预测、运动补偿等方式对图像进一步压缩,达到更大的压缩比。

  • 数据封装

图像数据封装是用数据描述实际的图像数据,称为该类型数据为元数据(meta-data)。元数据即数据的数据。数据封装之后,输出的就是图像/视频文件。

数据封装的作用有两层含义:

  • 对于外部系统,数据封装使用的元数据向外界描述自身的概况,比如是什么类型的文件,尺寸大小,方便外界快速了解本文件的概况。
  • 对于内部的实际数据,数据封装通过元数据描述了实际数据的属性,比如一帧图像数据有多长,图像像素的排列方式是怎样的等。

当然,数据封装的目的主要还是在外界对象和实际数据之间建立接口,方便外界对象能正确、快速地访问到实际数据。所以,数据封装是在实际数据和访问对象之间的中间层。

图像压缩解压过程_第2张图片

  • 数据解压

数据解压将存储在图像/视频文件中的压缩后的数据解压还原成RAW-DATA

在解压过程中涉及到两个重要的问题:

  • 需要解压的数据码流在文件中的具体哪个位置呢?
  • 如何知道图像 / 视频数据采用哪种压缩方式,该采用哪种解压方式呢?

封装产生的元数据在这一环节发挥了重要作用。首先,我们可以通过元数据定位到数据码流的具体位置。另外,我们可以通过文件后缀名,或者封装产生的元数据判断当前文件使用的是哪种压缩方式(例如,PBMPGMPPM格式的图像的文件在最开始的几个字节会说明图像是属于什么类型的,例如PBMP1P4……),从而确定应该采用哪种解压方式还原数据。最后对数据码流进行解压还原,最终输出的是图像的RAW-DATA,不会解压元数据。

解压之后,程序会将数据从硬盘空间转移到主内存空间,便于之后的处理。

  • 显卡

解压完图像之后,图像RAW-DATA被存放在主内存空间。之后,会被搬移到显卡内存空间,进行D/A转换,将量化之后的数字图像信号转换为模拟信号。

  • 显示器

最后,通过显示器将电信号转换为光信号,从而显示出完整的原图像。

从存储在硬盘中的图像/视频文件,到最终显示出原图像/视频,图像/视频数据的存储位置发生了以下变化:

你可能感兴趣的:(图像处理)