📄 chap09.htm
字号:
<html>
<!-- Mirrored from www.lgui.net/column/book1/chap09.htm by HTTrack Website Copier/3.x [XR&CO'2005], Mon, 21 Mar 2005 13:20:25 GMT -->
<head>
<meta http-equiv=Content-Type content="text/html; charset=GB2312">
<link rel=Edit-Time-Data href="chap09.files/editdata.html" >
<title>第9章 图象的压缩编码,JPEG压缩编码标准</title>
<style><!--
.Normal
{text-align:justify;
text-justify:inter-ideograph;
text-indent:0pt;
line-height:normal;
font-size:10.5pt;
font-family:"Times New Roman";}
.MsoBodyText
{text-align:justify;
text-justify:inter-ideograph;
text-indent:24.95pt;
line-height:20.0pt;
font-size:12.0pt;
font-family:"Times New Roman";}
.MsoBodyTextFirstIndent
{text-align:justify;
text-justify:inter-ideograph;
text-indent:21.0pt;
line-height:20.0pt;
font-size:12.0pt;
font-family:"Times New Roman";}
.a
{text-align:center;
text-indent:0pt;
line-height:20.0pt;
font-size:12.0pt;
font-family:"Times New Roman";}
-->
</style>
</head>
<body lang=ZH-CN link=blue vlink=purple class="Normal" bgcolor="#FFFFFF">
<div style='layout-grid:15.6pt'>
<h1><a name="_Toc486331907"></a><a name="_Toc486332907"></a><a
name="_Toc486339016"></a><a name="_Toc454810881"></a><a name="_Toc454856655"><span><span>第<span
lang=EN-US>9</span></span></span></a><span><span><span style='font-family:黑体;"Times New Roman"'>章</span>
</span></span><span><span><span
style='font-family:黑体;"Times New Roman"'>图象的压缩编码,</span><span
lang=EN-US>JPEG</span></span></span><span><span><span style='font-family:黑体;"Times New Roman"'>压缩编码标准</span></span></span></h1>
<p style='line-height:18.0pt'><span style='font-family:宋体;
"Times New Roman"'>在介绍图象的压缩编码之前,先考虑一个问题:为什么要压缩?其实这个问题不用我回答,你也能想得到。因为图象信息的数据量实在是太惊人了。举一个例子就明白:一张</span><span
lang=EN-US>A4(210mm×297mm) </span><span style='font-family:宋体;"Times New Roman";"Times New Roman"'>幅面的照片,若用中等分辨率</span><span
lang=EN-US>(300dpi)</span><span style='font-family:宋体;"Times New Roman";"Times New Roman"'>的扫描仪按真彩色扫描,其数据量为多少?让我们来计算一下:共有</span><span
lang=EN-US>(300×210/25.4) ×(300×297/25.4)</span><span style='font-family:宋体;
"Times New Roman"'>个象素,每个象素占</span><span
lang=EN-US>3</span><span style='font-family:宋体;
"Times New Roman"'>个字节,其数据量为</span><span lang=EN-US>26M</span><span
style='font-family:宋体;"Times New Roman"'>字节,其数据量之大可见一斑了。</span></p>
<p style='line-height:18.0pt'><span style='font-family:宋体;
"Times New Roman"'>如今在</span><span
lang=EN-US>Internet</span><span style='font-family:宋体;"Times New Roman";"Times New Roman"'>上,传统基于字符界面的应用逐渐被能够浏览图象信息的</span><span
lang=EN-US>WWW(World Wide Web)</span><span style='font-family:宋体;"Times New Roman";"Times New Roman"'>方式所取代。</span><span
lang=EN-US>WWW</span><span style='font-family:宋体;
"Times New Roman"'>尽管漂亮,但是也带来了一个问题:图象信息的数据量太大了,本来就已经非常紧张的网络带宽变得更加不堪重负,使得</span><span
lang=EN-US>World Wide Web</span><span style='font-family:宋体;"Times New Roman";"Times New Roman"'>变成了</span><span
lang=EN-US>World Wide Wait</span><span style='font-family:宋体;"Times New Roman";"Times New Roman"'>。</span></p>
<p style='line-height:18.0pt'><span style='font-family:宋体;
"Times New Roman"'>总之,大数据量的图象信息会给存储器的存储容量,通信干线信道的带宽,以及计算机的处理速度增加极大的压力。单纯靠增加存储器容量,提高信道带宽以及计算机的处理速度等方法来解决这个问题是不现实的,这时就要考虑压缩。</span></p>
<p style='line-height:18.0pt'><span style='font-family:宋体;
"Times New Roman"'>压缩的理论基础是信息论。从信息论的角度来看,压缩就是去掉信息中的冗余,即保留不确定的信息,去掉确定的信息</span><span
lang=EN-US>(</span><span style='font-family:宋体;
"Times New Roman"'>可推知的</span><span lang=EN-US>)</span><span
style='font-family:宋体;"Times New Roman"'>,也就是用一种更接近信息本质的描述来代替原有冗余的描述。这个本质的东西就是信息量</span><span
lang=EN-US>(</span><span style='font-family:宋体;
"Times New Roman"'>即不确定因素</span><span lang=EN-US>)</span><span
style='font-family:宋体;"Times New Roman"'>。</span></p>
<p style='line-height:18.0pt'><span style='font-family:宋体;
"Times New Roman"'>压缩可分为两大类:第一类压缩过程是可逆的,也就是说,从压缩后的图象能够完全恢复出原来的图象,信息没有任何丢失,称为无损压缩;第二类压缩过程是不可逆的,无法完全恢复出原图象,信息有一定的丢失,称为有损压缩。选择哪一类压缩,要折衷考虑,尽管我们希望能够无损压缩,但是通常有损压缩的压缩比</span><span
lang=EN-US>(</span><span style='font-family:宋体;
"Times New Roman"'>即原图象占的字节数与压缩后图象占的字节数之比,压缩比越大,说明压缩效率越高</span><span
lang=EN-US>)</span><span style='font-family:宋体;
"Times New Roman"'>比无损压缩的高。</span></p>
<p style='line-height:18.0pt'><span style='font-family:宋体;
"Times New Roman"'>图象压缩一般通过改变图象的表示方式来达到,因此压缩和编码是分不开的。图象压缩的主要应用是图象信息的传输和存储,可广泛地应用于广播电视、电视会议、计算机通讯、传真、多媒体系统、医学图象、卫星图象等领域。</span></p>
<p style='line-height:18.0pt'><span style='font-family:宋体;
"Times New Roman"'>压缩编码的方法有很多,主要分成以下四大类:</span><span
lang=EN-US>(1)</span><span style='font-family:宋体;
"Times New Roman"'>象素编码;</span><span lang=EN-US>(2)</span><span
style='font-family:宋体;"Times New Roman"'>预测编码;</span><span lang=EN-US>(3)</span><span
style='font-family:宋体;"Times New Roman"'>变换编码;</span><span lang=EN-US>(4)</span><span
style='font-family:宋体;"Times New Roman"'>其它方法。</span></p>
<p style='line-height:18.0pt'><span style='font-family:宋体;
"Times New Roman"'>所谓象素编码是指,编码时对每个象素单独处理,不考虑象素之间的相关性。在象素编码中常用的几种方法有:</span><span
lang=EN-US>(1)</span><span style='font-family:宋体;
"Times New Roman"'>脉冲编码调制</span><span lang=EN-US>(Pulse Code Modulation</span><span style='font-family:宋体;
"Times New Roman"'>,简称</span><span lang=EN-US>PCM)</span><span
style='font-family:宋体;"Times New Roman"'>;</span><span lang=EN-US>(2)</span><span style='font-family:
宋体;"Times New Roman"'>熵编码</span><span
lang=EN-US>(Entropy Coding)</span><span style='font-family:宋体;"Times New Roman";"Times New Roman"'>;</span><span
lang=EN-US>(3)</span><span style='font-family:宋体;
"Times New Roman"'>行程编码</span><span lang=EN-US>(Run Length Coding)</span><span style='font-family:宋体;
"Times New Roman"'>;</span><span lang=EN-US>(4)</span><span
style='font-family:宋体;"Times New Roman"'>位平面编码</span><span lang=EN-US>(Bit Plane
Coding)</span><span
style='font-family:宋体;"Times New Roman"'>。其中我们要介绍的是熵编码中的哈夫曼</span><span lang=EN-US>(Huffman)</span><span
style='font-family:宋体;"Times New Roman"'>编码和行程编码</span><span lang=EN-US>(</span><span
style='font-family:宋体;"Times New Roman"'>以读取</span><span lang=EN-US>.PCX</span><span
style='font-family:宋体;"Times New Roman"'>文件为例</span><span lang=EN-US>)</span><span style='font-family:
宋体;"Times New Roman"'>。</span></p>
<p style='line-height:18.0pt'><span style='font-family:宋体;
"Times New Roman"'>所谓预测编码是指,去除相邻象素之间的相关性和冗余性,只对新的信息进行编码。举个简单的例子,因为象素的灰度是连续的,所以在一片区域中,相邻象素之间灰度值的差别可能很小。如果我们只记录第一个象素的灰度,其它象素的灰度都用它与前一个象素灰度之差来表示,就能起到压缩的目的。如</span><span
lang=EN-US>248</span><span style='font-family:宋体;
"Times New Roman"'>,</span><span lang=EN-US>2</span><span
style='font-family:宋体;"Times New Roman"'>,</span><span lang=EN-US>1</span><span style='font-family:
宋体;"Times New Roman"'>,</span><span
lang=EN-US>0</span><span style='font-family:宋体;
"Times New Roman"'>,</span><span lang=EN-US>1</span><span
style='font-family:宋体;"Times New Roman"'>,</span><span lang=EN-US>3</span><span style='font-family:
宋体;"Times New Roman"'>,实际上这</span><span
lang=EN-US>6</span><span style='font-family:宋体;
"Times New Roman"'>个象素的灰度是</span><span lang=EN-US>248</span><span
style='font-family:宋体;"Times New Roman"'>,</span><span lang=EN-US>250</span><span style='font-family:
宋体;"Times New Roman"'>,</span><span
lang=EN-US>251</span><span style='font-family:宋体;
"Times New Roman"'>,</span><span lang=EN-US>251</span><span
style='font-family:宋体;"Times New Roman"'>,</span><span lang=EN-US>252</span><span style='font-family:
宋体;"Times New Roman"'>,</span><span
lang=EN-US>255</span><span style='font-family:宋体;
"Times New Roman"'>。表示</span><span lang=EN-US>250</span><span
style='font-family:宋体;"Times New Roman"'>需要</span><span lang=EN-US>8</span><span style='font-family:
宋体;"Times New Roman"'>个比特,而表示</span><span
lang=EN-US>2</span><span style='font-family:宋体;
"Times New Roman"'>只需要两个比特,这样就实现了压缩。</span></p>
<p style='line-height:18.0pt'><span style='font-family:宋体;
"Times New Roman"'>常用的预测编码有Δ调制</span><span
lang=EN-US>(Delta Modulation</span><span style='font-family:宋体;"Times New Roman";"Times New Roman"'>,简称</span><span
lang=EN-US>DM)</span><span style='font-family:宋体;
"Times New Roman"'>;微分预测编码</span><span lang=EN-US>(Differential Pulse
Code Modulation</span><span style='font-family:宋体;"Times New Roman";"Times New Roman"'>,</span><span
lang=EN-US>DPCM)</span><span style='font-family:宋体;
"Times New Roman"'>,具体的细节在此就不详述了。</span></p>
<p style='line-height:18.0pt'><span style='font-family:宋体;
"Times New Roman"'>所谓变换编码是指,将给定的图象变换到另一个数据域</span><span
lang=EN-US>(</span><span style='font-family:宋体;
"Times New Roman"'>如频域</span><span lang=EN-US>)</span><span
style='font-family:宋体;"Times New Roman"'>上,使得大量的信息能用较少的数据来表示,从而达到压缩的目的。变换编码有很多,如</span><span
lang=EN-US>(1)</span><span style='font-family:宋体;
"Times New Roman"'>离散傅立叶变换</span><span lang=EN-US>(Discrete Fourier
Transform</span><span style='font-family:宋体;
"Times New Roman"'>,简称</span><span lang=EN-US>DFT)</span><span
style='font-family:宋体;"Times New Roman"'>;</span><span lang=EN-US>(2)</span><span style='font-family:
宋体;"Times New Roman"'>离散余弦变换</span><span
lang=EN-US>(Discrete Cosine Transform</span><span style='font-family:宋体;
"Times New Roman"'>,简称</span><span
lang=EN-US>DCT)</span><span style='font-family:宋体;
"Times New Roman"'>;</span><span lang=EN-US>(3)</span><span
style='font-family:宋体;"Times New Roman"'>离散哈达玛变换</span><span lang=EN-US>(Discrete
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -