⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jpg.htm

📁 大家都想知的JPG编码方法,GOOD
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0058)http://mti.xidian.edu.cn/multimedia/multi/course1-5-7.html -->
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=gb2312"><LINK 
href="JPG.files/xCSS.css" rel=stylesheet><LINK href="JPG.files/x_course.css" 
rel=stylesheet>
<META content="MSHTML 6.00.2900.2180" name=GENERATOR></HEAD>
<BODY bgColor=white leftMargin=6 topMargin=0>
<TABLE cellSpacing=0 cellPadding=0 width=550 border=0>
  <TBODY>
  <TR>
    <TD vAlign=top width="100%"><BR>
      <DIV class=xTitle align=center>5.7 JPEG压缩编码</DIV><FONT lang=ZH-CN face=宋体 
      color=#ff0000>
      <P>5.7.1 JPEG算法概要</P>
      <DIR></DIR></B></FONT><FONT lang=ZH-CN face=宋体>
      <P>JPEG(Joint Photographic Experts Group) 是一个由 
      ISO和IEC两个组织机构联合组成的一个专家组,负责制定静态的数字图像数据压缩编码标准,这个专家组开发的算法称为JPEG算法,并且成为国际上通用的标准,因此又称为JPEG标准。JPEG是一个适用范围很广的静态图像数据压缩标准,既可用于灰度图像又可用于彩色图像。</P>
      <P>JPEG专家组开发了两种基本的压缩算法,一种是采用以离散余弦变换(Discrete Cosine 
      Transform,DCT)为基础的有损压缩算法,另一种是采用以预测技术为基础的无损压缩算法。使用有损压缩算法时,在压缩比为25:1的情况下,压缩后还原得到的图像与原始图像相比较,非图像专家难于找出它们之间的区别,因此得到了广泛的应用。例如,在V-CD和DVD-Video电视图像压缩技术中,就使用JPEG的有损压缩算法来取消空间方向上的冗余数据。为了在保证图像质量的前提下进一步提高压缩比,近年来JPEG专家组正在制定JPEG 
      2000(简称JP 2000)标准,这个标准中将采用小波变换(wavelet)算法。</P>
      <P>JPEG压缩是有损压缩,它利用了人的视角系统的特性,使用量化和无损压缩编码相结合来去掉视角的冗余信息和数据本身的冗余信息。JPEG算法框图如图5-13所示,压缩编码大致分成三个步骤:</P>
      <OL>
        <LI>使用正向离散余弦变换(<B>f</B>orward <B>d</B>iscrete <B>c</B>osine 
        <B>t</B>ransform,FDCT)把空间域表示的图变换成频率域表示的图。 
        <LI>使用加权函数对DCT系数进行量化,这个加权函数对于人的视觉系统是最佳的。 
        <LI>使用霍夫曼可变字长编码器对量化系数进行编码。</LI></OL>
      <P>译码或者叫做解压缩的过程与压缩编码过程正好相反。</P>
      <P>JPEG算法与彩色空间无关,因此“RGB到YUV变换”和“YUV到RGB变换”不包含在JPEG算法中。JPEG算法处理的彩色图像是单独的彩色分量图像,因此它可以压缩来自不同彩色空间的数据,如RGB, 
      YCbCr和CMYK。</P>
      <P align=center><IMG height=351 src="JPG.files/imgc5248.gif" 
width=468></P>
      <P align=center>图5-13 JPEG压缩编码-解压缩算法框图</P>
      <P> </P>
      <DIR></FONT><B><FONT lang=ZH-CN face=宋体 color=#ff0000>
      <P>5.7.2 JPEG算法的主要计算步骤</P></DIR></B></FONT><FONT lang=ZH-CN face=宋体>
      <P>JPEG压缩编码算法的主要计算步骤如下:</P>
      <OL>
        <LI>正向离散余弦变换(FDCT)。 
        <LI>量化(quantization)。 
        <LI>Z字形编码(zigzag scan)。 
        <LI>使用差分脉冲编码调制(<B>d</B>ifferential <B>p</B>ulse <B>c</B>ode 
        <B>m</B>odulation,DPCM)对直流系数(DC)进行编码。 
        <LI>使用行程长度编码(<B>r</B>un-<B>l</B>ength <B>e</B>ncoding,RLE)对交流系数(AC)进行编码。 

        <LI>熵编码(entropy coding)。</LI></OL></FONT><B><FONT lang=ZH-CN face=宋体 
      color=#800080>
      <P>1. 正向离散余弦变换</P></B></FONT><FONT lang=ZH-CN face=宋体>
      <P>下面对正向离散余弦变换(FDCT)变换作几点说明。</P>
      <P>(1) 
      对每个单独的彩色图像分量,把整个分量图像分成8×8的图像块,如图5-14所示,并作为两维离散余弦变换DCT的输入。通过DCT变换,把能量集中在少数几个系数上。</P>
      <P align=center><IMG height=119 src="JPG.files/imgc5249.gif" 
width=401></P>
      <P align=center>图5-14 离散余弦变换</P>
      <P>(2) DCT变换使用下式计算,</P>
      <P><IMG height=45 src="JPG.files/imgc5250.gif" width=454> ...... 
      (5-1)<BR>它的逆变换使用下式计算,</P>
      <P><IMG height=53 src="JPG.files/imgc5251.gif" width=449> ...... 
      (5-2)<BR>上面两式中,<BR><I>C(u), C(v) </I>= 1/<IMG height=22 
      src="JPG.files/imgc5252.gif" width=25>, 当<I>u, v</I> = 0;<BR><I>C(u), C(v) 
      </I>= 1, 其他。<BR><I>f(i, j)</I>经DCT变换之后,<I>F(0,0)</I>是直流系数,其他为交流系数。</P>
      <P>(3) 在计算两维的DCT变换时,可使用下面的计算式把两维的DCT变换变成一维的DCT变换,</P>
      <P align=center><IMG height=50 src="JPG.files/imgc5253.gif" width=304>  
      ............ (5-3)</P>
      <P align=center><IMG height=51 src="JPG.files/imgc5254.gif" 
      width=313> ............. (5-4)</P>
      <P align=center><IMG height=160 src="JPG.files/imgc5255.gif" 
width=437></P>
      <P align=center>图5-15 两维DCT变换方法</P>
      <P>实际的计算方法可参看[6]</P></FONT><B><FONT lang=ZH-CN face=宋体 color=#800080>
      <P>2. 量化</P></B></FONT><FONT lang=ZH-CN face=宋体>
      <P>量化是对经过FDCT变换后的频率系数进行量化。量化的目的是减小非“0”系数的幅度以及增加“0”值系数的数目。量化是图像质量下降的最主要原因。</P>
      <P>对于有损压缩算法,JPEG算法使用如图5-16所示的均匀量化器进行量化,量化步距是按照系数所在的位置和每种颜色分量的色调值来确定。因为人眼对亮度信号比对色差信号更敏感,因此使用了两种量化表:如表5-05所示的亮度量化值和表5-06所示的色差量化值。此外,由于人眼对低频分量的图像比对高频分量的图像更敏感,因此图中的左上角的量化步距要比右下角的量化步距小。表5-05和表5-06中的数值对CCIR 
      601标准电视图像已经是最佳的。如果不使用这两种表,你也可以把自己的量化表替换它们。</P>
      <P align=center><IMG height=160 src="JPG.files/imgc5256.gif" 
width=181></P>
      <P align=center>图5-16 均匀量化器</P>
      <DIR><B>
      <P>表5-05 亮度量化值表 表5-06 色度量化值</P>
      <P align=center><IMG height=205 src="JPG.files/imgc5257.gif" 
width=510></P>
      <P align=center> </P></DIR></FONT><FONT lang=ZH-CN face=宋体 color=#800080>
      <P>3. Z字形编排</P></B></FONT><FONT lang=ZH-CN face=宋体>
      <P>量化后的系数要重新编排,目的是为了增加连续的“0”系数的个数,就是“0”的游程长度,方法是按照Z字形的式样编排,如图5-17所示。这样就把一个8 
      <FONT face=Symbol>&acute;</FONT> 8的矩阵变成一个1 <FONT face=Symbol>&acute;</FONT> 
      64的矢量,频率较低的系数放在矢量的顶部。</P>
      <P align=center>
      <HR align=right width="8%" SIZE=2>
      <IMG height=237 src="JPG.files/imgc5258.gif" width=396> 
      <P></P>
      <P align=center>图5-17 量化DCT系数的编排</P></FONT>
      <P align=center>
      <CENTER>
      <TABLE borderColor=#000000 cellSpacing=1 cellPadding=1 width=256 
        border=1><TBODY>
        <TR>
          <TD vAlign=top width="13%"><FONT lang=ZH-CN face=宋体>
            <P align=center>0</FONT></P></TD>
          <TD vAlign=top width="13%"><FONT lang=ZH-CN face=宋体>
            <P align=center>1</FONT></P></TD>
          <TD vAlign=top width="13%"><FONT lang=ZH-CN face=宋体>
            <P align=center>5</FONT></P></TD>
          <TD vAlign=top width="13%"><FONT lang=ZH-CN face=宋体>
            <P align=center>6</FONT></P></TD>
          <TD vAlign=top width="11%"><FONT lang=ZH-CN face=宋体>
            <P align=center>14</FONT></P></TD>
          <TD vAlign=top width="12%"><FONT lang=ZH-CN face=宋体>
            <P align=center>15</FONT></P></TD>
          <TD vAlign=top width="12%"><FONT lang=ZH-CN face=宋体>
            <P align=center>27</FONT></P></TD>
          <TD vAlign=top width="13%"><FONT lang=ZH-CN face=宋体>
            <P align=center>28</FONT></P></TD></TR>
        <TR>
          <TD vAlign=top width="13%"><FONT lang=ZH-CN face=宋体>
            <P align=center>2</FONT></P></TD>
          <TD vAlign=top width="13%"><FONT lang=ZH-CN face=宋体>
            <P align=center>4</FONT></P></TD>
          <TD vAlign=top width="13%"><FONT lang=ZH-CN face=宋体>
            <P align=center>7</FONT></P></TD>
          <TD vAlign=top width="13%"><FONT lang=ZH-CN face=宋体>
            <P align=center>13</FONT></P></TD>
          <TD vAlign=top width="11%"><FONT lang=ZH-CN face=宋体>
            <P align=center>16</FONT></P></TD>
          <TD vAlign=top width="12%"><FONT lang=ZH-CN face=宋体>
            <P align=center>26</FONT></P></TD>
          <TD vAlign=top width="12%"><FONT lang=ZH-CN face=宋体>
            <P align=center>29</FONT></P></TD>
          <TD vAlign=top width="13%"><FONT lang=ZH-CN face=宋体>
            <P align=center>42</FONT></P></TD></TR>
        <TR>
          <TD vAlign=top width="13%"><FONT lang=ZH-CN face=宋体>
            <P align=center>3</FONT></P></TD>
          <TD vAlign=top width="13%"><FONT lang=ZH-CN face=宋体>
            <P align=center>8</FONT></P></TD>
          <TD vAlign=top width="13%"><FONT lang=ZH-CN face=宋体>
            <P align=center>12</FONT></P></TD>
          <TD vAlign=top width="13%"><FONT lang=ZH-CN face=宋体>
            <P align=center>17</FONT></P></TD>
          <TD vAlign=top width="11%"><FONT lang=ZH-CN face=宋体>
            <P align=center>25</FONT></P></TD>
          <TD vAlign=top width="12%"><FONT lang=ZH-CN face=宋体>
            <P align=center>30</FONT></P></TD>
          <TD vAlign=top width="12%"><FONT lang=ZH-CN face=宋体>
            <P align=center>41</FONT></P></TD>
          <TD vAlign=top width="13%"><FONT lang=ZH-CN face=宋体>
            <P align=center>43</FONT></P></TD></TR>
        <TR>
          <TD vAlign=top width="13%"><FONT lang=ZH-CN face=宋体>
            <P align=center>9</FONT></P></TD>
          <TD vAlign=top width="13%"><FONT lang=ZH-CN face=宋体>
            <P align=center>11</FONT></P></TD>
          <TD vAlign=top width="13%"><FONT lang=ZH-CN face=宋体>
            <P align=center>18</FONT></P></TD>
          <TD vAlign=top width="13%"><FONT lang=ZH-CN face=宋体>
            <P align=center>24</FONT></P></TD>
          <TD vAlign=top width="11%"><FONT lang=ZH-CN face=宋体>
            <P align=center>31</FONT></P></TD>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -