zoukankan      html  css  js  c++  java
  • JPEG编码

         

      jpeg整个的编码过程实现:

           第一步:8*8的源图像数据变为范围为 -128~127  

           第二步:对转换范围后的数据进行DCT变换 ,并四舍五入取接近的整数,公式为FDCT变换公式。一共得到 64个 DCT  变换系数。u=0且v=0  时,称为DC系数,是64个图像采样平均值。剩下的63个系数称为AC系数。

           第三步:对这64个DCT变换系数根据亮度量化表和色度量化表进行量化。

           第四步:对量化后的系数进行采用zig-zag(“Z”字形)扫描,然后对量化后的DC系数进行 DPCM 编码,对量化后的AC系数进行行程编码。

           第五步:对DPCM编码后的DC系数和行程编码后的AC系数继续进行熵编码,最后得到压缩后的图像数据

           DCT变换过程

           FDCT变换公式:

          每个8*8二维源图像采集数据块,实际上是64点离散信号,该信号是空间二维参数x和y的函数。离散余弦的变换的的每个变换系数值由64个输入信号唯一确定。在频域平面上变换系数是二维频域变量u和v的函数。对应于u=0,v=0的系数,称作直流分量,即DC系数,其余63个系数称作AC系数,即交流分量。

               

          图像基础知识

          在图像处理中,为了利用人的视角特性,从而降低数据量,通常把 RGB 空间表示的彩色图像变换到其他色彩空间。

          现在常用的色彩空间变换有三种:YIQ,YUV 和 YCrCb。

          每一种色彩空间都产生一种亮度分量信号和两种色度分量信号,而每一种变换使用的参数都是为了适应某种类型的显示设备。

         YIQ:用于NTSC彩色电视制式

         YUV:用于PAL和SECAM彩色电视制式

         YCbCr:用于计算机显示器

         这三种彩色空间变换都会产生一种亮度分量信号和两种色度分量信号,然后把这些信号单独存储,显示的时候一起显示。

         JPEG编码过程框图如下:

     

       量化表是控制 JPEG 压缩比的关键,这个步骤除掉了一些高频量;另一个重要原因是所有图片的点与点之间会有一个色彩过渡的过程,大量的图像信息被包含在低频率中,经过量化处理后,在高频率段,将出现大量连续的零。

         

  • 相关阅读:
    Intent的跳转和传值
    Intent传值的学习
    Activity,Window,View之间是什么关系?
    MATCH_PARENT和FILL_PARENT之间的区别?
    Activity的运行过程
    onCreate和onStart谁的开销大?
    SDKManager连不上墙外的网,列表刷新不出来怎么办?
    AndroidEclipse里的视图里想添加SDK Manager但是找不到怎么办?
    出现“Unable to resolve target 'android-XXX'”怎么处理?
    安卓进程的生命周期
  • 原文地址:https://www.cnblogs.com/greenteaone/p/1757714.html
Copyright © 2011-2022 走看看