且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

《新编计算机科学概论》一1.3 非数值信息的编码

更新时间:2022-03-16 03:22:20

1.3 非数值信息的编码

编码通常指在人和机器之间进行信息转换的一种体系,是人们在实践中逐步创造的一种用较少的符号来表达较复杂信息的表示方法。比如我们前面谈到的数字,实际上就是一种编码,用一串数符代表规模更大的数。人们用0 ~ 9这十个数字的组合,表达的概念远比10要丰富得多。编码的基本目的是为了信息交流,人们研究编码是为了以更简便的形式表达更丰富的信息。
随着现代计算机运用的深入,计算机不仅仅用于科学计算,实际上更大量的工作是用于处理人们日常工作和生活中最常使用的信息形式,也就是所谓的非数值型数据。计算机中使用不同的编码来表示和存储数字、文字符号、声音、图片和图像(视频)等不同类型的信息。计算机科学中研究编码的目的是为了方便计算机表示、处理和存储各种类型的信息。由于计算机硬件能够直接识别和处理的只是0、1这样的二进制信息,因此必须研究在计算机中如何通过二进制编码来表示和处理这些非数值型数据。由于非数值型数据所使用的二进制编码并不表示数值,所以也将非数值型数据称为符号数据。
数字计算机的存储器按位存储,所以在计算机上处理的信息必须按位的形式表示。而世界上大量堆积的信息是文本形式的,就像装满图书馆的书报和杂志。通过对二进制编码的研究,使得计算机不仅能处理数字,还能表示、存储、处理和提供人类交流中所使用的各种信息,包括视觉信息(如文字和图片)、听觉信息(如语言、声音及音乐),还有混合信息(如动画和电影)等。所有这些信息类型都要求使用各自的编码方式。

1.3.1 字符的编码

  1. ASCII码
    字符是非数值型数据的基础,字符与字符串数据是计算机中用得最多的非数值型数据。在使用计算机的过程中,人们需要利用字符与字符串编写程序、表示文字及各类信息,以便与计算机进行交流。为了使计算机硬件能够识别和处理字符,必须对字符按一定规则用二进制进行编码,使得系统里的每一个字符有唯一的编码;文本中还存在数字和标点符号,所以也必须有它们的编码。简单地说,所有字母、数字和符号都要编码,这样的系统称作字符编码集,每一个编码称作字符编码。注意文本中的数字与前面我们讨论的数值是不一样的。在文本中的数字,计算机将其视为字符,而不能进行算术运算。

电子计算机是美国人首先发明的,他们最先制定了符合他们使用习惯的美国标准信息交换标准码(American Standard Code for Information Interchange),简称ASCII码。
ASCII编码是由美国国家标准学会(American National Standard Institute,简称ANSI)制定的标准单字节字符编码方案,用于基于文本的数据。它最初是美国国家标准,供不同计算机在相互通信时用作共同遵守的西文字符编码标准,后来被国际标准化组织(International Organization for Standardization,简称ISO)定为国际标准,称为ISO 646标准,适用于所有拉丁字母。
ASCII 码使用指定的7位或8位二进制数组合来表示128或256种可能的字符。标准 ASCII码也称为基础ASCII码,使用7位二进制数来表示所有的大写和小写字母、数字0到9、标点符号,以及在美式英语中使用的特殊控制字符。如图1?3所示为标准ASCII表。
其中:0 ~ 32及127(共34个)是控制字符或通信专用字符(其余为可显示字符),如控制符LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BS(退格)、BEL(振铃)等;通信专用字符SOH(文头)、EOT(文尾)、ACK(确认)等。ASCII值为8、9、10 和13分别转换为退格、制表、换行和回车字符,它们并没有特定的图形显示,但会对文本显示有不同的影响。33 ~ 126 (共94个)是字符,其中48 ~ 57为0 ~ 9十个阿拉伯数字; 65 ~ 90为26个大写英文字母,97 ~ 122为26个小写英文字母,其余为一些标点符号、运算符号等。
同时还要注意,在标准ASCII中,其最高位(b7)用作奇偶校验位。所谓奇偶校验是指在代码传送过程中用来检验是否出现错误的一种方法,一般分奇校验和偶校验两种。奇校验规定:正确的代码一个字节中1的个数必须是奇数,若非奇数则在最高位添1。偶校验规定:正确的代码一个字节中1的个数必须是偶数,若非偶数则在最高位添1。
后128个称为扩展ASCII码,许多系统都支持使用扩展ASCII。扩展ASCII 码允许将每个字符的第8位用于确定附加的128个特殊符号字符、外来语字母和图形符号。

进制 十六进制 十
进制 字符 八
进制 十六进制 十
进制 字符 八
进制 十六进制 十
进制 字符 八
进制 十六进制 十
进制 字符
00 00 0 nul 40 20 32 sp 100 40 64 @ 140 60 96 '
01 01 1 soh 41 21 33 ! 101 41 65 A 141 61 97 a
02 02 2 stx 42 22 34 " 102 42 66 B 142 62 98 b
03 03 3 etx 43 23 35 # 103 43 67 C 143 63 99 c
04 04 4 eot 44 24 36 $ 104 44 68 D 144 64 100 d
05 05 5 enq 45 25 37 % 105 45 69 E 145 65 101 e
06 06 6 ack 46 26 38 & 106 46 70 F 146 66 102 f
07 07 7 bel 47 27 39 ` 107 47 71 G 147 67 103 g
10 08 8 bs 50 28 40 ( 110 48 72 H 150 68 104 h
11 09 9 ht 51 29 41 ) 111 49 73 I 151 69 105 i
12 0a 10 nl 52 2a 42 * 112 4a 74 J 152 6a 106 j
13 0b 11 vt 53 2b 43 + 113 4b 75 K 153 6b 107 k
14 0c 12 ff 54 2c 44 , 114 4c 76 L 154 6c 108 l
15 0d 13 er 55 2d 45 - 115 4d 77 M 155 6d 109 m
16 0e 14 so 56 2e 46 . 116 4e 78 N 156 6e 110 n
17 0f 15 si 57 2f 47 / 117 4f 79 O 157 6f 111 o
20 10 16 dle 60 30 48 0 120 50 80 P 160 70 112 p
21 11 17 dc1 61 31 49 1 121 51 81 Q 161 71 113 q
22 12 18 dc2 62 32 50 2 122 52 82 R 162 72 114 r
23 13 19 dc3 63 33 51 3 123 53 83 S 163 73 115 s
24 14 20 dc4 64 34 52 4 124 54 84 T 164 74 116 t
25 15 21 nak 65 35 53 5 125 55 85 U 165 75 117 u
26 16 22 syn 66 36 54 6 126 56 86 V 166 76 118 v
27 17 23 etb 67 37 55 7 127 57 87 W 167 77 119 w
30 18 24 can 70 38 56 8 130 58 88 X 170 78 120 x
31 19 25 em 71 39 57 9 131 59 89 Y 171 79 121 y
32 1a 26 sub 72 3a 58 : 132 5a 90 Z 172 7a 122 z
33 1b 27 esc 73 3b 59 ; 133 5b 91 [ 173 7b 123 {
34 1c 28 fs 74 3c 60 < 134 5c 92 174 7c 124 |
35 1d 29 gs 75 3d 61 = 135 5d 93 ] 175 7d 125 }
36 1e 30 re 76 3e 62 > 136 5e 94 ^ 176 7e 126 ~
37 1f 31 us 77 3f 63 ? 137 5f 95 _ 177 7f 127 del

图1?3 标准ASCII表
ASCII码是计算机世界里最重要的标准,但它存在严重的国际化问题。ASCII码只适用于美国,它并不完全适用于其他以非英语为主要语言的国家,如希腊文、阿拉伯文、希伯来文和西里尔文,对于东方以汉字为代表的象形文字这一巨大的集合更是无能为力。

  1. 汉字的编码
    汉字也是字符,与西文字符比较,汉字数量大,字形复杂,同音字多,这就给汉字在计算机内部的存储、传输、交换、输入、输出等带来了一系列问题。为了能直接使用西文标准键盘输入汉字,还必须为汉字设计相应的输入编码,以适应计算机处理汉字的需要。

(1)国标码
1980年我国颁布了《信息交换用汉字编码字符集基本集》代号为GB2312-80,是国家规定的用于汉字信息处理使用的代码依据,这种编码称为国标码。在国标码的字符集***收录了6 763个常用汉字和682个非汉字字符(图形、符号),其中一级汉字3 755个,以汉语拼音为序排列,二级汉字3 008个,以偏旁部首进行排列。
国标GB2312-80规定,所有的国标汉字与符号组成一个94×94的矩阵,在此方阵中,每一行称为一个“区” (区号为01 ~ 94),每一列称为一个“位”(位号为01 ~ 94),该方阵实际组成了一个具有94个区,每个区内有94个位的汉字字符集,每一个汉字或符号在码表中都有一个唯一的位置编码,称为该字符的区位码。
使用区位码方法输入汉字时,必须先在表中查找汉字并找出对应的代码才能输入。区位码输入汉字的优点是无重码,而且输入码与内部编码的转换方便。
(2)机内码
汉字的机内码是计算机系统内部对汉字进行存储、处理、传输统一使用的代码,又称为汉字内码。汉字内码是与ASCII码对应的,用二进制对汉字进行的编码。由于汉字数量多,一般用两个字节来存放汉字的内码,即双字节字符集(double-byte character set,简称DBCS)。在计算机内汉字字符必须与英文字符区别开,以免造成混乱。英文字符的机内码是用一个字节来存放ASCII码,一个ASCII码占一个字节的低7位,最高位为“0”,为了区分,汉字机内码中两个字节的最高位均置“1”。
例如,汉字“中”的国标码为5650H (0101011001010000)2,机内码为D6D0H (110101101101 0000)2。
需要注意的是,在汉字字符集中,为了显示和打印等排版的需要,也定义了英文和其他语言中的符号,这些符号在计算机中是作为中文文字处理的,不再是它原来语种的符号。这些符号称为全角符号,比如字符“A”与字母“A”之间的区别。
(3)汉字的输入编码
汉字输入通常有键盘输入、语音输入、手写输入等方法,都有一定的优缺点。键盘输入方式:将每个汉字用一个或几个英文键表示,这种表示方法称为汉字的“输入编码”。输入编码与内码不同,它是专为解决汉字输入设计的,汉字输入后仍是以内码存储在计算机中,这种转换由系统中特殊的部分自动进行。输入编码的基本元素是标准键盘上可见的字母符号。汉字输入编码种类很多,根据输入编码的方式大体可将汉字输入编码分为四类:
1)数字编码。如电报码、区位码等。特点:难于记忆,不易推广。
2)字音编码。如拼音码等。特点:简单易学,但重码多。
3)字形编码。如五笔字型、表形码等。特点:重码少,输入快,但不易掌握。
4)音形编码。如自然码、快速码等。特点:规则简单,重码少,但不易掌握。

  1. Unicode码
    尽管多年来ASCII码占据主要地位,但是现在其他更具扩展性的代码也越来越普及,这些代码能够表示各种语言的文档资料。其中之一是Unicode,它是由硬件及软件的多家主导厂商共同研制开发的,并很快得到计算界的支持。这种代码采用唯一的16位模式来表示每一个符号。因此,Unicode由65 536个不同的位模式组成——足以表示用中文、日文和希伯来文等语言书写的文档资料。

Unicode即统一码,又称万国码,是一种以满足跨语言、跨平台进行文本转换、处理的要求为目的设计的计算机字符编码。它为每种语言中的每个字符设定了统一并且唯一的二进制编码。Unicode 的编码方式与 ISO 10646 的通用字元集(亦称通用字符集)概念相对应,使用16位的编码空间,也就是每个字符占用两个字节。实际上目前版本的 Unicode 尚未填充满这16位编码,保留了大量空间作为特殊使用或将来扩展。上述16位 Unicode 字符构成基本多文种平面(Basic Multilingual Plane,简称 BMP)。Unicode 中定义了16个辅助平面,辅助平面字符占用4字节编码空间,共需占据32位,理论上最多能表示231个字符,完全可以涵盖一切语言所用的符号。
对于中文而言,Unicode 16编码已经包含了GB18030的所有汉字(27 484个字),目前Unicode标准准备把康熙字典的所有汉字放入Unicode编码中。
总之,Unicode扩展自ASCII字元集。Unicode使用16位元编码,并可扩展到32位,这使得Unicode能够表示世界上所有书写语言中可能用于计算机通信的字元、象形文字和其他符号。Unicode最初打算作为ASCII的补充,可能的话,最终将代替它。
1.3.2 静态图像的编码
静态图像是与动态图像相对应的概念,专门指单幅的图形。在计算机应用中经常需要用到各种图像的显示与处理,比如统计图、照片等。

  1. 位图图像
    在用位图表示图像的方法中,图像被分成像素矩阵,也称点阵,每个像素是一个小点。像素的大小取决于分辨率。同样大小的图像,分辨率越高,意味着每个点越小,图像质量越精细,显示得更加清楚,但是需要更多的内存来存储图像。一般用单位长度的点数来描述图像分辨率,比如一般屏幕显示的分辨率为72 dpi(Dot Per Inch,每英寸的点数)。打印机通常可以支持300 ~ 600 dpi。

在把图像分成像素之后,每一个像素被赋值为一个位模式。模式的尺寸和值取决于图像。对于一个仅有黑白点组成的图像(如棋盘),一个1位模式已足够表示一个像素。0模式表示黑像素,1模式表示白像素。然后,模式被依次记录并存储在计算机中。
对于多级灰度的图像,可以通过增加位模式的长度来表示灰色级。例如,可以使用2位模式来显示四重灰度级。黑色像素被表示成00,深灰色像素被表示成01,浅灰色像素被表示成10,白色像素被表示成11。位模式越大,能够表示的明暗变化越细致。
如果是表示彩色图像,则每一种彩色像素被分解成3种主色:红、绿和蓝(RGB),然后将测出每一种颜色的强度,并用一种位模式(通常8位)分配给它。换句话说,每一个像素有3位模式:一个用于表示红色的强度,一个用于表示绿色的强度,一个用于表示蓝色的强度。常用的彩色模式为8位和24位。8位模式能够提供256种可用颜色,具备一定的色彩,且文件不是很大。24位模式又称为真彩模式,它能够提供1 677万色(256×256×256=16 777 216),能够真实体现自然的所有颜色,是颜色质量最高的格式之一。
位图文件的基本编码格式为BMP(bitmap的缩写)文件。BMP是一种与硬件设备无关的图像文件格式,使用非常广泛。它采用位映射存储格式,图像深度可选l位、4位、8位及24位等模式。由于没有采用任何压缩技术,BMP文件所占用的空间很大。BMP文件存储数据时,图像的扫描方式是按从左到右、从下到上的顺序。在有些资料中也将位图格式称为光栅格式。
标签图像文件(Tagged Image File Format,TIFF)格式是图像专业领域使用较广泛的一种编码形式,主要用来存储照片和艺术图等对图像质量要求较高的平面图像。该格式支持256色、24位真彩色、32位色、48位色等多种色彩位,同时支持RGB、CMYK以及YCbCr等多种色彩模式,支持多平台。

  1. 图像压缩编码
    为了存储和传输数据,在保留原有内容的条件下,缩小所涉及数据的大小是有益的(有时也是必须的)。这个技术称为数据压缩。数据压缩方案有两类。一类是无损压缩,一类是有损压缩。无损方案在压缩过程中是不丢失信息的,如文本数据的压缩。有损方案在压缩过程中是会发生信息丢失的。通常有损技术比无损技术提供更大的压缩,因此在可以忽略小错误的数据压缩中应用很广泛,如图像和音频。

图形压缩编码主要考虑到位图文件体积太大,对存储和传输都产生很大压力,因此人们研究通过编码的形式,在保证图像具备一定质量的前提下,缩小图像文件的大小。TIFF文件不压缩时,文件体积较大;同时它支持RAW、RLE、LZW、JPEG、CCITT3/4等多种压缩编码方式,可以将文件体积压缩到较小的尺寸。
压缩编码按其对图像质量的影响可分为无损压缩和有损压缩两类。所谓无损压缩是指压缩后图像质量没有下降,只是文件大小减小,压缩后再需要显示时,能够百分之百地还原成未压缩时的图像状态。有损压缩是指在不影响图像使用的前提下,为加大压缩效率,尽可能减小文件的大小,且可以接受一些图像质量上的损失,有损压缩后不能够百分之百地还原。
当前最主流的图像压缩方式是JPEG(Joint Photographic Experts Group,联合图像专家组)编码格式,文件后缀名为“.jpg”或“.jpeg”。前面介绍过,TIFF文件也可以使用该压缩编码实现。JPEG压缩技术十分先进,既能支持无损压缩,也支持大压缩比的有损压缩。JPEG是一种很灵活的格式,具有调节图像质量的功能,允许用不同的压缩比例对文件进行压缩,支持多种压缩级别,压缩比率通常在10 : 1到40 : 1之间,压缩比越大,品质就越低;可以根据需要在图像质量和文件尺寸之间找到平衡点。JPEG格式压缩的主要是高频信息,对色彩的信息保留较好,适合应用于互联网,可减少图像的传输时间。
随着高素质数码相机的普及,RAW格式文件应用越来越多。RAW格式文件被称为数字底片(digital negative),即拍摄时从影像传感器得到的电信号在模数转换(A/D转换)后,不经过其他处理而直接存储的影像文件格式,反映的是从影像传感器中得到的最原始的信息。其优点是影像质量最高,具有很大的动态范围和很宽的色域度,很多参数可以在不影响画质的情况下进行后期调整。其缺点是RAW格式文件占用存储空间较大,其字节数通常是拍摄像素数的1.5倍左右,以2 000万像素的数码相机为例,对于同一幅照片其RAW文件大小可能会有30 MB以上,而JPEG格式的文件通常只有5 MB大小。另外,RAW格式不同于BMP、JPEG等格式,RAW的代码中没有头文件,这使得很多软件不支持对它的读取和编辑,通用性差。随着技术的进步,越来越多的软件支持对RAW格式的浏览和编辑。

  1. 矢量图
    位图图像表示法存在的问题是,一幅特定的图像采用精确位模式表示后,必须存储在计算机中。随后,如果想重新调整图像的大小,就必须改变像素的大小,这将产生波纹状或颗粒状的图像。而矢量图表示方法并不存储位模式,它是将图像分解成一些曲线和直线的组合,其中每一曲线或直线由数学公式表示。例如,一根直线可以通过它的端点坐标来作图,圆则可以通过它的圆心坐标和半径长度来作图。这些公式的组合都被存储在计算机中。当图像要显示或打印时,将图像的尺寸作为输入传给系统,系统重新设计图像的大小并用相同的公式画出图像。在这种情况下,每一次画图像,公式也将重新估算一次。

一般工程制图软件都使用矢量图方式保存,以便于按图元的方式对图像进行编辑。典型的格式是Auto Desk公司的AutoCAD所使用的DWG格式。
1.3.3 动态数据的编码

  1. 音频
    音频包括各种声音信息形式。基本思想即将音频转换成数字的数据,并使用位模式存储它们。音频实际上是模拟量,它是连续性的,而计算机中的数字并不是连续的,需要通过一个过程将连续的音频转化为数字,我们称之为采样。采样的具体方法是以相等的间隔来测量信号的值,并量化采样值。采样的时间间隔称为采样频率。量化就是给采样值分配值(从一个值集中),将采样值做近似处理。具体原理大家可以参考信号处理技术中的采样定理。

与描述静态图像类似,采样频率越高,相当于图像分辨率越高,则音频文件越大;采样量化越精细,相当于像素深度越大,音频文件也越大。采样频率一般有11 025 Hz(11 kHz)、22 05 0Hz
(22 kHz)和44 100 Hz(44 kHz)三种,采样位数一般是8位或16位。音频文件的尺寸通常很大,在计算机中也是以压缩编码形式存在为主。未压缩音频文件的大小可按下面的公式估算:
音频文件大小=(采样频率×量化位数×声道)×时间/8(1 Byte= 8bit)
其中,声道是音频文件一个特殊之处。声道是在空间上区分音频来源的一种技术,通过多声道合成技术可以形成逼真的立体现场感觉,一般话音使用单声道就可以了,普通的音乐使用双声道可以产生立体声效果,高级的方式可以使用4 ~ 6个声道甚至8个声道来合成高保真的立体声环境。以单声道为基准,多一个声道,文件的大小几乎增加一倍。
音频编码方式也有非压缩编码和压缩编码两类,压缩编码又分为有损压缩和无损压缩两种。基本的音频编码是PCM(Pulse Code Modulation,脉冲编码调制)。PCM编码的最大优点就是音质好,最大的缺点就是未压缩导致体积大。我们常见的Audio CD就采用了PCM编码,一张光盘的容量只能容纳72分钟的音乐信息。基本的WAV文件通常都使用PCM编码,因此它们通常都很大。目前公认的无损音频编码是APE,在真正无损的前提下提供50% ~ 70%的压缩比。
MP3(MPEG Audio Layer-3)是目前最为普遍的音频压缩编码格式,是MPEG-1的衍生编码方案。MP3可以做到12:1的压缩比并保持音质基本可接受。

  1. 视频
    视频是单幅图像在时间上的连续表示,是典型的动态数据类型。一部电影就是一系列的帧一张接一张地播放而形成运动的图像。动态视频的基础是前面讨论过的静态单幅图像,在这里称为帧。通过研究,发现帧与帧之间的图像内容通常有很大相关性,动态视频压缩的基础理论就是在单幅图像压缩的基础上,再结合帧与帧之间的相关性,进行进一步压缩。其基本思想是:如果前一帧包含的内容,下一帧可以不记录,只记录与前一帧的变化即可以通过适当处理前一帧生成后一帧。显然,这种思想对处理能力有相当高的要求。这也是为什么视频是在计算机硬件发展到一定程度后才大量运用的原因之一。另外,在动态图像应用中,音频通常是伴随进行的,现在很难想象一部没有声音的动画或电影能受到欢迎。

目前最有影响的视频编码技术是MPEG(Moving Pictures Experts Group,动态图像专家组),它是国际标准化组织(ISO/IEC)制定的技术标准。MPEG标准主要有MPEG-1、MPEG-2、MPEG-4、MPEG-7及MPEG-21等5个。MPEG标准的视频压缩编码技术主要利用了具有运动补偿的帧间压缩编码技术以减小时间冗余度,利用DCT技术以减小图像的空间冗余度,利用熵编码在信息表示方面减小了统计冗余度。这几种技术的综合运用大大增强了压缩性能。
随着高清视频的发展,ISO/IEC与国际电联(ITU-T)联合组建的联合视频组(JVT)共同制定了新数字视频编码标准,发布了H.264高性能的视频编解码技术,ISO/IEC称之为MPEG-4 AVC(Advanced Video Coding,高级视频编码),成为MPEG-4标准的第10部分即MPEG-4 Part 10(标准号ISO/IEC 14496-10)。
H.264最大的优势是具有很高的数据压缩比率,在同等图像质量的条件下,H.264的压缩比是MPEG-2的两倍以上,是MPEG-4的1.5 ~ 2倍。通常MPEG-2压缩比为25 : 1,而H.264的压缩比达到惊人的102 : 1!H.264是在MPEG-4技术的基础之上建立起来的,其编解码流程主要包括5个部分:帧间和帧内预测(Estimation)、变换(Transform)和反变换、量化(Quantization)和反量化、环路滤波(Loop Filter)、熵编码(Entropy Coding)。H.264/MPEG-4 AVC(H.264)是最新、最有前途的视频压缩标准,被普遍认为是最有影响力的行业标准。它保留了以往压缩技术的优点和精华又具有其他压缩技术无法比拟的许多优点:
1)低码流(Low Bit Rate):在同等图像质量下,采用H.264技术压缩后的数据量只有MPEG-2的1/8、MPEG-4的1/3。
2)高质量的图像:H.264能提供连续、流畅的高质量图像(DVD质量)。
3)容错能力强:H.264有效地处理在不稳定网络环境下容易发生的丢包等错误。
4)网络适应性强:H.264提供了网络适应层(Network Adaptation Layer),使得H.264的文件能容易地在不同网络上传输(如互联网、移动通信网等)。
目前,H.264最直接的应用是在网络视频领域,通过互联网或无线网络传输,提供高质量视频服务,包括视频点播、视频会议、远程监控等。