免费智能真题库 > 历年试卷 > 系统分析师 > 2016年上半年 系统分析师 上午试卷 综合知识
  第62题      
  知识点:   压缩编码技术   编码   视频
  关键词:   视频   帧间编码   帧内编码   编码        章/节:   计算机应用       

 
MPEG-1视频中的帧间编码主要采用了(62),帧内编码主要采用了(63)。
 
 
  A.  算术编码
 
  B.  基于帧间预测的霍夫曼编码
 
  C.  行程编码
 
  D.  基于运动补偿的帧间预测编码
 
 
 

 
  第62题    2015年上半年  
   56%
MPEG-1视频编码标准中定义了(62)种不同类型的视频帧,其中没有使用帧间编码能够直接作为索引点的是(63)。
  第63题    2012年上半年  
   56%
以下关于哈夫曼编码的叙述中,正确的是(63)。
  第63题    2009年上半年  
   43%
计算机对声音信号进行处理前,必须将它转换成为数字信号,最基本的声音信号数字化方法是取样-量化法。若量化后的每个声音样本用1..
   知识点讲解    
   · 压缩编码技术    · 编码    · 视频
 
       压缩编码技术
        本节主要介绍数据压缩的相关技术和标准。对于多媒体数据压缩算法而言,数据质量是压缩的效果,数据量是压缩的能力,计算复杂度是压缩的代价,这需要综合考虑。
                      数据压缩概述
                      数据之所以能够压缩,是因为基本原始信源的数据存在着很大的冗余度。一般来说,多媒体数据中存在以下种类的数据冗余。
                      (1)空间冗余(几何冗余):一幅图像的背景及其景物中,在某点自身与其相邻的一些区域内,常存在有规则的相关性。例如,一幅蔚蓝的天空中漂浮着白云的图像,其蔚蓝的天空及白云本身都具有较强的相关性,这种相关性的图像部分,在数据中就表现为冗余。空间冗余是视频图像中常见的一种冗余。
                      (2)时间冗余:对于电视动画类的图像,其序列中前后相邻的两幅图像之间呈现较强的相关性,这就反映为时间冗余。如某一帧图像经过时间t后,在某下一帧图像中带有较强的相关性(即画面像素相似)。
                      (3)知觉冗余:知觉冗余是指那些处于人们听觉和视觉分辨率以下的视、音频信号,若在编码时舍去这种在感知门限以下的信号,虽然这会使恢复原信号产生一定的失真,但并不能为人们所感知,为此,此种超出人们感知能力部分的编码就称为知觉冗余。例如:一般的视频图像采用28的灰度等级,而人们的视觉分辨率仅达26的等级,此差额即为知觉冗余。
                      (4)信息熵冗余:信息熵是指一组数据所携带的信息量。它一般定义为:
                      
                      其中N为数据类数或码元个数,Pi为码元Yi发生的概率。由定义,为使单数据量d接近于或等于H,应设:
                      
                      其中b(yi)是分配给码元Yi的比特数,理论上应取byi)=-log2pi,实际上在应用中很难估计出{p0p1,…,pn-1}。因此一般取by0)=by1)=…=byN-1)。这样所得的d必然大于H,由此带来的冗余称为信息熵冗余或编码冗余。
                      (5)结构冗余:有些图像从大的区域上看存在着非常强的纹理结构,例如,布纹图像和草席图像,我们说它们在结构上存在冗余。
                      (6)知识冗余:有许多图像的理解与某些基础知识有相当大的相关性。例如:人脸的图像有固定的结构,比如,嘴的上方有鼻子,鼻子的上方有眼睛,鼻子位于正面图像的中线上等。这类规律性的结构可由先验知识和背景知识得到,此类冗余称为知识冗余。
                      数据压缩技术可以分为两大类:一类是无损压缩编码法,也称为冗余压缩法、熵编码法;另一类是有损压缩编码法,也称为熵压缩法。
                      (1)无损压缩法:去掉或减少了数据的冗余,这些冗余值可以重新插入到数据中,因此是可逆的,也是无失真压缩。它通常使用的是统计编码技术,包括哈夫曼编码、算术编码、行程编码等。它的压缩比较低,通常是2:1~5:1。
                      (2)有损压缩法:压缩了熵,会减少信息量,因此是不可逆的。它通常可以分为特征抽取和量化两大类。特征抽取包括基于模式的编码、分形编码等;量化包括零记忆量化、预测编码、直接映射、变换编码等方法。其中,预测编码和变换编码是最常见的方法。有损压缩能够达到较高的压缩比。对于声音可达4:1~8:1,对于动态的视频数据更是可高达100:1~400:1之多。
                      数据压缩标准
                      常用的数据压缩标准如下:
                      (1)JPEG(Joint Photographic Experts Group,联合图像专家组)。这是采用基于DCT(Discrete Cosine Transform,离散余弦变换)和可变长编码的算法。它的关键技术是变换编码、量化、差分编码、哈夫曼编码和行程编码等。JPEG 2000作为JPEG标准的一个更新换代标准,它的目标是进一步改进目前压缩算法的性能,以适应低带宽、高噪声的环境,以及医疗图像、电子图书馆、传真、Internet上服务和保安等方面的应用。它与传统JPEG最大的不同,在于它放弃了JPEG所采用的以离散余弦变换为主的区块编码方式,而采用以离散小波转换为主的多解析编码方式。
                      (2)MPEG。MPEG(动态图像专家组)是ISO(International Standards Organization,国际标准化组织)制定和发布的视频、音频和数据的压缩标准。它的三大特点是兼容性好;压缩比高,可达200:1;数据的损失很小。MPEG采用预测和插补两种帧间编码技术。MPEG视频压缩算法中包含两种基本技术:一种是基于16×16子块的运动补偿技术,用来减少帧序列的时域冗余;另一种是基于DCT的压缩,用于减少帧序列的空域冗余,在帧内压缩及帧间预测中均使用了DCT变换。运动补偿算法是当前视频图像压缩技术中使用最普遍的方法之一。常用的MPEG标准如下表所示。
                      
                      MPEG主要标准
                      (3)DVI(Digital Visual Interface,数字视频接口)。与MPEG-1相当,可达VHS(Video Home System,家用录像系统)水平,压缩后数据传输速率为1.5Mbps。为了扩大DVI的应用,Intel公司还推出了DVI算法的软件解码算法,可以将未压缩的数字视频文件压缩为原来的1/5~1/10。
                      (4)H.261。它主要是针对在ISDN上实现电信会议应用,特别是面对面的可视电话和视频会议而设计的。它的算法类似于MPEG(Moving Pictures Experts Group,动态图像专家组),但实时编码比MPEG占用CPU小,它在图像质量与运动幅度间采取了折中,即剧烈运动的图像要比相对静止的图像的质量差。它属于恒定码流可变质量编码。它采用CIF(Common Intermediate Format,通用中间格式)和QCIF(四分之一CIF)作为可视电话的视频格式。
                      (5)H.263。它主要是针对低带宽通信而设计的,它在低带宽下能够提供比H.261更好的图像效果。不仅支持CIF和QCIF,还支持SQCIF(八分之一CIF)、4CIF、16CIF。后来又推出了H.263,增加了在易误码、易丢包、异构网络下的传输效果,现在已基本代替了H.261。
 
       编码
               编码过程
               在给定了软件设计规格说明书后,下一步的工作就是编写代码。一般来说,编码工作可以分为四个步骤:
               (1)确定源程序的标准格式,制订编程规范。
               (2)准备编程环境,包括软硬件平台的选择,包括操作系统、编程语言、集成开发环境等。
               (3)编写代码。
               (4)进行代码审查,以提高编码质量。为提高审查的效率,在代码审查前需要准备一份检查清单,并设定此次审查须找到的bug数量。在审查时,要检查软件规格说明书与编码内容是否一致;代码对硬件和操作系统资源的访问是否正确;中断控制模块是否正确等。
               编码准则
               在嵌入式系统中,由于资源有限,且实时性和可靠性要求较高,因此,在开发嵌入式软件时,要注意对执行时间、存储空间和开发/维护时间这三种资源的使用进行优化。也就是说,代码的执行速度要越快越好,系统占用的存储空间要越小越好,软件开发和维护的时间要越少越好。
               具体来说,在编写代码时,需要做到以下几点:
               .保持函数短小精悍。一个函数应该只实现一个功能,如果函数的代码过于复杂,将多个功能混杂在一起,就很难具备可靠性和可维护性。另外,要限制函数的长度,一般来说,一个函数的长度最好不要超过100行。
               .封装代码。将数据以及对其进行操作的代码封装在一个实体中,其他代码不能直接访问这些数据。例如,全局变量必须在使用该变量的函数或模块内定义。对代码进行封装的结果就是消除了代码之间的依赖性,提高了对象的内聚性,使封装后的代码对其他行为的依赖性较小。
               .消除冗余代码。例如,将一个变量赋给它自己,初始化或设置一个变量后却从不使用它,等等。研究表明,即使是无害的冗余也往往和程序的缺陷高度关联。
               .减少实时代码。实时代码不但容易出错、编写成本较高,而且调试成本可能更高。如果可能,最好将对执行时间要求严格的代码转移到一个单独的任务或者程序段中。
               .编写优雅流畅的代码。
               .遵守代码编写标准并借助检查工具。用自动检验工具寻找缺陷比人工调试便宜,而且能捕捉到通过传统测试检查不到的各种问题。
               编码技术
                      编程规范
                      在嵌入式软件开发过程中,遵守编程规范,养成良好的编程习惯,这是非常重要的,将直接影响到所编写代码的质量。
                      编程规范主要涉及的三方面内容:
                      .命名规则。从编译器的角度,一个合法的变量名由字母、数字和下画线三种字符组成,且第一个字符必须为字母或下画线。但是从程序员的角度,一个好的名字不仅要合法,还要载有足够的信息,做到“见名知意”,并且在语意清晰、不含歧义的前提下,尽可能地简短。
                      .编码格式。在程序布局时,要使用缩进规则,例如变量的定义和可执行语句要缩进一级,当函数的参数过长时,也要缩进。另外,括弧的使用要整齐配对,要善于使用空格和空行来美化代码。例如,在二元运算符与其运算对象之间,要留有空格;在变量定义和代码之间要留有空行;在不同功能的代码段之间也要用空行隔开。
                      .注释的书写。注释的典型内容包括:函数的功能描述;设计过程中的决策,如数据结构和算法的选择;错误的处理方式;复杂代码的设计思想等。在书写注释时要注意,注释的内容应该与相应的代码保持一致,同时要避免不必要的注释,过犹不及。
                      性能优化
                      由于嵌入式系统对实时性的要求较高,因此一般要求对代码的性能进行优化,使代码的执行速度越快越好。以算术运算为例,在编写代码时,需要仔细地选择和使用算术运算符。一般来说,整数的算术运算最快,其次是带有硬件支持的浮点运算,而用软件来实现的浮点运算是非常慢的。因此,在编码时要遵守以下准则:
                      .尽量使用整数(char、short、int和long)的加法和减法。
                      .如果没有硬件支持,尽量避免使用乘法。
                      .尽量避免使用除法。
                      .如果没有硬件支持,尽量避免使用浮点数。
                      下图是一个例子,其中两段代码的功能完全一样,都是对一个结构体数组的各个元素进行初始化,但采用两种不同的方法来实现。下图(a)采用数组下标的方法,在定位第i个数组元素时,需要将i乘以结构体元素的大小,再加上数组的起始地址。下图(b)采用的是指针访问的方法,先把指针fp初始化为数组的起始地址,然后每访问完一个数组元素,就把fp加1,指向下一个元素。在一个奔腾4的PC上,将这两段代码分别重复10 700次,右边这段代码需要1ms,而左边这段代码需要2.13ms。
                      
                      算术运算性能优化的例子
 
       视频
        视频是动态的画面序列,这些画面以超过每秒24帧的速度播放,便可以使观察者产生平滑、连续的视觉效果。视频类似于我们熟知的电影和电视,有声有色。电影采用了每秒24幅画面的播放速度,电视采用了每秒25幅或30幅画面的播放速度。视频图像可来自于录像带、影碟、电视、摄像机等,这些模拟视频信号可通过视频采集卡转换成数字视频信号,以便计算机进行处理和存储。
   题号导航      2016年上半年 系统分析师 上午试卷 综合知识   本试卷我的完整做题情况  
1 /
2 /
3 /
4 /
5 /
6 /
7 /
8 /
9 /
10 /
11 /
12 /
13 /
14 /
15 /
 
16 /
17 /
18 /
19 /
20 /
21 /
22 /
23 /
24 /
25 /
26 /
27 /
28 /
29 /
30 /
 
31 /
32 /
33 /
34 /
35 /
36 /
37 /
38 /
39 /
40 /
41 /
42 /
43 /
44 /
45 /
 
46 /
47 /
48 /
49 /
50 /
51 /
52 /
53 /
54 /
55 /
56 /
57 /
58 /
59 /
60 /
 
61 /
62 /
63 /
64 /
65 /
66 /
67 /
68 /
69 /
70 /
71 /
72 /
73 /
74 /
75 /
 
第62题    在手机中做本题