电子编码(精选七篇)
电子编码 篇1
1 材料与方法
1.1生物信息学数据库和软件
文章涉及到的生物信息学数据库和分析软件名称及网址如下:GenBank 数据库(http://www.ncbi.nlm.nih.gov/);BLAST 序列比对程序(http://www.ncbi.nlm.nih.gov/blast/)[7];序列拼接网上在线软件CAP3(http://pbil.univ-lyon1.fr/cap3.php)[8];开放阅读框在线预测程序(http:∥www.ncbi.nlm.nih.gov/gorf/gorf.html)[9];Protparam蛋白质理化性质在线分析程序及ProtScale蛋白质疏水性分析软件(http://expasy.org/tools/protparam.html)[10];TMHMM跨膜区分析软件(http://www.cbs.dtu.dk/services/TMHMM-2.0/);蛋白质信号肽预测程序(http://www.cbs.dtu.dk/services/SignalP/)[11];PSORT蛋白质亚细胞定位预测站点(http://wolfpsort.org/);SMART结构功能域分析服务器(http://smart.embl-heidelberg.de/)[12];蛋白质二级结构在线预测工具SSPro4.0(http://download.igb.uci.edu/sspro4.html); 同源模建服务器(http://swissmodel.expasy.org/)[13] ;蛋白质功能在线预测网站ProtFun(http://www.cbs.dtu.dk/services/ProtFun/)。
1.2编码美洲螯龙虾PGRP的cDNA电子克隆方法
以果蝇PGRP-SC2的氨基酸序列(GenBank:CAD89184.1)做为查询序列,通过tBLASTn程序搜索GenBank的美洲螯龙虾EST序列,获得相似度较高的EST,以获得的EST为种子序列,在美洲螯龙虾EST数据库中进行BLASTn搜索,将获得的相似度很高的EST用CAP3程序拼接成重叠群(contig),用此重叠群作为种子进一步重复上述步骤,直至不能获得更多的延伸。将不能再延伸的重叠群(cDNA)用ORF Finder在线程序预测开放阅读框和编码的氨基酸序列。
1.3美洲螯龙虾PGRP的生物信息学分析
对蛋白质各种性质的分析和预测利用前文提到的在线软件进行;多序列比对及同源性分析采用Clustal X软件;Blast搜索获得黑腹果蝇与美洲螯龙虾PGRP相似的各种PGRP并下载,SMART服务器识别其PGRP结构域序列,对PGRP结构域序列利用MEGA软件进行系统发育树分析。
2 结果
2.1编码PGRP的cDNA克隆及开放阅读框
利用果蝇PGRP-SC2氨基酸序列检索到相关的美洲螯龙虾EST,获得的EST经过拼接和电子克隆延伸,最后获得一段长920 bp的序列。ORF分析发现它含有一个长度为834 bp的开放阅读框,编码277个氨基酸(图1),起始密码子为ATG,终止密码子为TGA,5′和3′端分别含有65 bp和20 bp的非翻译序列。将氨基酸序列用BLAST程序在GenBank蛋白质数据库中搜索获得的结果表明它是一种PGRP(表1)。
2.2PGRP的基本理化性质
该蛋白分子式为C1347H2035N381O404S25,分子量为30.8317 kD,理论等电点为5.82,含有20种基本氨基酸,其中含量最高的为Gal(9.7%),最低为Trp(2.5%);含有负电荷氨基酸残基31(Asp和Glu)个,正电荷氨基酸残基23(Arg和Lys)个。蛋白质水溶液在280 nm处的消光系数为60 360(所有半胱氨酸形成胱氨酸状态下)或59 360(所有半胱氨酸处于还原状态下)。该蛋白的平均亲水系数为-0.302,不稳定系数为35.78,在水溶液中属于稳定蛋白。
2.3PGRP的亲/疏水性预测和分析
该蛋白亲/疏水性计算结果见图2。N端7~15氨基酸VIAVGLVVL形成一个强疏水性区域,后续的分析表明这段序列位于信号肽内。
2.4PGRP的信号肽和跨膜区分析
跨膜区分析表明美洲螯龙虾PGRP不含跨膜区,N端1~20氨基酸形成信号肽(图3),信号肽切除位点是第20位Cys与第21位Gln之间,因此该PGRP是一种分泌蛋白。
h. α-螺旋;e. 延伸链;t. β-转角;c. 无规卷曲h. α-helix;e. extended strand;t. β-turn;c. coil
2.5PGRP的亚细胞定位
美洲螯龙虾PGRP的亚细胞定位分析结果见表2,其分布在细胞外的可能性为66.7%,远高于分布在囊泡、内质网、线粒体中的可能性。表明该蛋白分泌到细胞外(血淋巴或细胞外表)面发挥生物学作用。
2.6PGRP结构功能域分析
美洲螯龙虾PGRP的结构功能域分析表明该蛋白除了N端20个氨基酸组成的信号肽外,还有2个序列重叠的结构域:1)氨基酸残基107~249形成PGRP结构域;2)氨基酸残基115~255形成1个Ami_2结构域(图4)。PGRP结构域存在于动物肽聚糖结合蛋白家族及某些细菌的同源蛋白中,它们和噬菌体T3溶菌酶具有同源性[14]。另外,小鼠细胞因子Tag7也属于PGRP家族[15]。含有Ami_2结构域的蛋白包括具有N-乙酰-L-丙氨酸酰胺酶活性的锌酰胺酶,此酶的活性是裂解细菌细胞壁上N-乙酰胞壁酸和L氨基酸之间的酰胺键。
2.7二级结构和三级结构预测
用SSPro 4.5服务器预测美洲螯龙虾PGRP的二级结构。结果表明,该蛋白由20.58% α-螺旋、22.38%延伸链、7.22%β-转角和49.82%无规卷曲组成。无规卷曲和较短的延伸链散布在整个蛋白链中,比较长的α-螺旋分布在5个区域(图5)。将该PGRP序列提交同源建模服务器SWISS-MODEl进行三维结构的同源预测,结果获得该蛋白涵盖PGRP结构域的103~269氨基酸残残基范围的三维结构模型(图6)。美洲螯龙虾PGRP结构域特点是由5个β-折叠片(延伸链)排列成一扭曲的平面,外部由5个α-螺旋包围,整个结构域呈球状结构。
2.8PGRP系统发育树分析
通过BLAST搜索在数据库中没有发现其他甲壳动物PGRP,但美洲螯龙虾与其他众多的无脊椎动物PGRP具有相似性。有趣的是,显著性较强(E值越小,显著性越强)的结果并不属于昆虫类(与甲壳动物同属节肢动物门),而是乌贼(Euprymna scolopes)、牡蛎(Crassostrea gigas)、大竹蛏(Solen grandis)、文昌鱼(Branchiostoma japonicum)等海洋生物或囊螺(Physella acuta)这种水生生物,蜜蜂(Apis koschevnikovi; A.andreniformis)、蚊子(Anopheles darlingi)等昆虫类PGRP显著性稍次之(表1),也许相似的环境使进化地位不同的物种在病原识别分子上产生了趋同进化。鉴于果蝇PGRP具有更丰富的实验数据可以参考,笔者选择黑腹果蝇不同种类PGRP与美洲螯龙虾PGRP的PGRP结构域进行多序列比较并构建NJ系统发育树(图7)。美洲螯龙虾PGRP与黑腹果蝇PGRP-SC2聚为一个分支。
2.9PGRP功能预测与分析
将美洲螯龙虾PGRP提交ProtFun 2.2 Server进行功能预测,预测结果认为该蛋白是酶的几率较大(1.992),GO(Gene Ontology)分类(表3)提示该蛋白参与免疫反应的可能性和机率较高,说明该蛋白是美洲螯龙虾免疫分子系统的成分。
3 讨论
所有的多细胞动物都具有以一套免疫相关基因产物为基础的天然免疫系统来抵抗各种入侵的微生物,包括识别病原、调节一系列基因的表达并做出生理反应[16]。当前,对于节肢动物免疫系统的功能的知识主要来自几种有限的模式生物,特别是大量研究集中在双翅目的黑腹果蝇和冈比亚按蚊(A-nopheles gambiae)[1]。随着其他几种昆虫基因组测序完成,其免疫相关基因也有所研究和报道[17,18]。但对于节肢动物的另一重要组成部分——甲壳动物的免疫相关基因的系统研究相对较少,目前只有对蚤状溞免疫系统基因组成的报道[1]。
PGRP蛋白家族成员的结构特点是在C端有1个PGRP结构域,约含165个氨基酸,从昆虫到哺乳动物具有一定的保守性,并和噬菌体及细菌2型酰胺酶同源,这说明动物PGRP和原核生物2型酰胺酶可能起源于共同的祖先基因[19]。PGRP结构域之外序列差异较大。果蝇基因组含有13个PGRP基因,基因的转录本经过可变剪接形成19个不同的PGRPs。根据蛋白大小可把果蝇PGRP分为短型(S)和长型(L)。短型PGRP约含200个氨基酸残基,具有信号肽和1个PGRP结构域。长型PGRP大小至少是短型的2倍,在C端有1个或2个PGRP结构域。长型和短型PGRP的N端都有一段PGRP种类特异性的序列,这段序列与其他PGRP或其他任何蛋白没有同源性。果蝇PGRP有的是跨膜蛋白(PGRP-LC和PGRP-LF)或细胞质内蛋白(PGRP-LE),而其他PGRP具有信号肽,是分泌蛋白。笔者研究的美洲螯龙虾PGRP含有277个氨基酸,含有1个PGRP结构域,具有信号肽,细胞定位分析显示蛋白质位于细胞外,因此此蛋白类似于果蝇短型和分泌型的PGRP。基于PGRP结构域的系统发育树分析也显示此蛋白和果蝇PGRP-SC2及PGRP-SD较为相似。由于缺乏实验的资料,尚无法推测此蛋白的功能,但果蝇PGRP的相关资料可以作为参考。果蝇通过PGRP-SC1/2和PGRP-LB的酰胺酶活性将细菌的肽聚糖裂解为无活性的胞壁肽,从而降低肽聚糖引发的Imd信号强度;果蝇血淋巴中的PGRP-SA和PGRP-SD能够识别赖氨酸型的肽聚糖并与之相互作用,引发蛋白酶级联反应,裂解Spaetzle前体成活性的Toll受体的配体,激活Toll信号,引发抗菌肽转录以抵抗细菌的侵染。
在果蝇基因组中有多个基因编码PGRP并通过mRNA的可变剪接产生多种PGRP,而在当前唯一完成测序的甲壳动物基因组中没有发现PGRP基因[1]。对目前GenBank收录的甲壳动物EST数据库分析发现,属于PGRP的EST非常少见。除了文章报道的美洲螯龙虾PGRP的EST外,只在另一种甲壳动物旧金山湾卤虫(Artemia franciscana)中发现了PGRP相关EST。最近的研究发现,淡水小龙虾(Pacifastacus leniusculus)对肽聚糖的识别不需要PGRP,而是由2种丝氨酸蛋白酶同源物及脂多糖和β-1‚3葡聚糖结合蛋白(LGBP)复合体来实现识别的功能[20]。因为还没有在更多的甲壳动物发现这一现象,因此不能判断此就是甲壳动物肽聚糖识别的普遍机制,但PGRP在大部分甲壳动物的缺乏,表明在病原识别机制上甲壳动物有着与昆虫不同的多样性和灵活性。支持这一观点的另一证据是对水蚤(Daphnia pulex)免疫基因的研究,革兰氏阴性菌结合蛋白(GNBP)基因在水蚤基因组中有11个拷贝,在果蝇中只有3个拷贝。笔者认为GNBP基因在水蚤基因组的扩增,可能使某些GNBP行使了在昆虫中由PGRP所行使的功能[1]。
4 结论
一种网络编码和信道编码的联合设计 篇2
网络编码 (Network Coding) 是2000年由香港中文大学R.Ahlswede等人基于网络信息流的概念首次提出的。通过允许网络节点进行编码, 可以获得网络多播速率的最大流限, 即网络资源利用的理论上限, 而通过传统的路由和复制并不一定能够获得该最大流限。继R.Ahlswede等人提出网络编码的概念后, 网络编码便被广泛应用到通信网络的各个方面。
在无线网络中, 由于物理层的广播特性, 节点发送的数据包能够同时被其他几个节点检测并接收到, 因此网络编码更多地应用到无线网络中[1]。文献[2]表明, 结合网络编码不仅可以降低复杂性, 而且可以设计节能的路由算法;文献[3]表明, 在不断变化的无线网络环境中采用机会网络编码 (ONC) 可以大大提高网络的吞吐量。物理层网络编码[4]利用同时到达的电磁波的叠加特性, 从理论层面进一步提高了网络的吞吐量。文献[5]表明, 在双向无线中继信道中利用网络编码的优势。文献[6]描述了直接应用网络编码的方法。文献[7,8]表明, 在双向中继信道和多址中继信道中采用网络编码和信道编码的联合设计获得了额外的分集增益。文献[9]是基于二进制对称信道的硬判决物理层网络编码与信道编码的联合设计。
相比较之前的工作, 本文提出了一种新型的物理层网络编码和信道编码的联合设计方案, 并分析了物理层网络编码的信道容量。通过仿真实验表明, 提出的机制能够接近信道的容量极限。
1网络编码系统模型
网络编码典型的系统模型如图1所示, 节点n1和n2是两个独立的源节点, 节点n3是中继节点。首先节点n1和n2同时分别发送数据包U1和U2到中继节点n3, X1和X2分别是数据包U1和U2经过信道编码和调制之后的信号, 假设网络编码的系统模型是完全同步的, 信号为等功率发送, 同时考虑传输信道中的加性高斯白噪声, 均值为0, 再假设加性高斯白噪声方差为σ2, 则多址信道的输出Y=X1+X2+N, 中继节点n3对接收到的信号进行网络编码, 输出信号为
2网络编码和信道编码的联合设计
本文提出的网络编码和信道编码的联合设计如图2所示, 不同于传统的网络编码方案, 该设计采用混合编码方式, 实现了联合网络信道编码, 它基于物理层网络编码和信道编码 (LDPC码) [10,11,12], 解码器采用软输入软输出系统, 信道为加性高斯白噪声信道。
图2中, Ui=[ui, 0, ui, 1, ui, 2, …, ui, N-1]表示节点ni发送的数据包, 其中i=1, 2。
假设发送的数据包具有相同的长度N, 二进制比特ui, j∈{0, 1}相互独立并均匀分布, j=0, 1, 2, …, N-1, 并假设节点n1和n2使用了相同的信道编码方式, 即使用LDPC编码器进行编码;Γ表示LDPC编码器的映射函数;Γ-1表示LDPC解码器的映射函数;Di=[di, 0, di, 1, di, 2, …, di, M-1]表示LDPC编码器编码之后的码字, 长度为M, di, m∈{0, 1}, i=1, 2;码速为N/M, 则:
由于LDPC码是一种线性码, 并且网络编码也具有线性映射关系。在特殊情况下, 即没有传输错误的情况下:
假设系统考虑BPSK调制, 该系统也能够被扩展到QPSK调制, 以致高速率的16QAM调制, 则Xi=[xi, 0, xi, 1, xi, 2, …, xi, M-1]表示调制后的符号, 能够被表示成:
xi, j=1-2di, j, i=1, 2 且j=0, 1, 2, …, M-1 (4)
Y=[y0, y1, y2, …, yM-1]是多接入信道的输出, 可以表示为:
式中:nj表示加性高斯白噪声项;方差为σ2。由于考虑BPSK信道调制, 则ξj=2或-2或0。
若在中继节点n3处采用软检测电路, 则可以用对数似然比函数 (LLR) 表示软检测电路的输出信号, 即可推出式 (7) :
式中:L () 表示对数似然比函数。由式 (1) 和 (2) 可推出:
式中:L (Δ) ={L (Δ0) , L (Δ1) , L (Δ2) , …, L (ΔM-1) }。
由于:
则:
当加性高斯白噪声信道的输入为s时, 则输出yj可表示为:
式中:Eb表示每比特的传输能量;σ2表示噪声方差。
由式 (8) 可知, 数据包 U1⊕U2被LDPC编码器编码[11]和BPSK调制映射方式进行调制, 则LDPC解码器就能够对其进行解码, 即:
3信道容量分析
文献[4]仅仅分析了BSC信道的物理层网络编码容量, 本文进一步分析了高斯信道 (AWGN) 下BPSK调制的信道容量。
图3是基于高斯信道的物理层网络编码和信道编码联合设计的等效虚拟系统。其中, 虚拟信道 (VC) 是整个信道的子信道, 子信道的输入为Xi, 输出为Yi, Zi表示子信道的噪声。即:
Xi+Zi=Yi, 去掉下标i, 则:X+Z=Y。
虚拟信道 (VC) 的信道容量为CV。则:
式中:h (y) 表示接收信号信息熵;h (z) 表示噪声信息熵, 则
式中:X1, X2分别表示节点n1, n2在i时刻的输入。因为X1, X2和Z是相互独立的, 所以ρ和Z是相互独立的。则虚拟信道的输出Y的概率密度函数 (PDF) :
式中:p () 表示 () 发生的概率;g () 表示正态分布的概率密度函数, 则:
由于每比特的传输能量为Eb, 并且采用BPSK调制, 则可知:
由此可得:
又根据微分熵的定义可知:
则由式 (12) , 式 (16) , 式 (17) 可以计算出基于BPSK调制的高斯白噪声子信道的信息容量CV。
假设两路信号每比特的传输能量为Eb, 信噪比定义为SNR=Eb/σ2。几种不同机制下的网络编码容量如图4所示, 其中PS代表高斯信道物理层网络编码容量;TS表示传统机制网络编码容量;DS表示分离机制网络编码的容量。
由图4可知, 在低信噪比下, DS机制性能略优于PS机制性能, PS机制性能优于TS机制性能。但在高信噪比, PS性能大大优于DS机制性能, 能够达到1 b/s的传输速率, 而DS机制仅能达到0.72 b/s的传输速率。因为在高信噪比的情况下, DS机制中两路发射信号当做了彼此的干扰信号, 从而降低了系统性能。PS和DS机制性能远远优于TS机制性能, TS由于采用了时分复用, 最大仅获得0.6 b/s的传输速率。
4仿真结果比较
传统的网络编码方案 (分离机制方案) 是由两部分组成的, 一个是信道编码, 一个是网路编码。本文的设计方案不同于传统的网络编码方案, 是一种采用混合编码方式实现联合网络信道编码的方案, 基于物理层网络编码和信道编码 (LDPC码) 。
LDPC码是一种具有稀疏校验矩阵的线性分组纠错码, 几乎适用于所有的信道。LDPC码多用户检测器是应用于多接入信道中的一种典型的信道编码方式。LDPC编码器采用 (1 024, 6, 12) 码的规则矩阵, 码速为1/2, 使用30次迭代, 性能如图5所示。
当系统的误码率为10-5时, 可以被认为是无误码传输。 从图5可以看出, 误码率为10-5时, 提出的PS机制性能与其理论性能仅仅相差 0.6 dB, 并且提出的PS机制相比DS机制获得1.0 dB编码增益, 相比TS机制获得1.6 dB的编码增益。
5结论
网络编码自提出之后, 广泛应用于通信网络的各个方面, 尤其是无线通信网络环境。本文主要研究了在无线网络中物理层网络编码的设计, 提出了多址信道中一种联合网络编码和信道编码的设计方案。该设计方案利用了LDPC编码和网络编码的线性以及软输入软输出模块设计, 不仅减少了编译码复杂度, 而且在高的信噪比情况下可以获得良好的性能。同时, 由本文提出的设计方案与传统的方案相比至少能够获得1.60倍增益。
摘要:网络编码技术可以大幅度提高网络的吞吐量和鲁棒性, 因此已成为近年来的研究热点。在研究无线网络中物理层网络编码技术的基础上, 提出了多址信道中一种联合网络编码和信道编码的设计方案。该设计利用LDPC码和网络编码的线性特性以及软输入软输出模块设计, 不仅减少了编译码的复杂度, 而且在高的信噪比情况下可以获得良好的性能。仿真结果表明, 该设计方案不仅容易实现, 而且性能接近网络信道容量的上限, 相比传统的设计技术至少能够提高1.6倍的增益。
关键词:无线网络,物理层网络编码,信道编码,多址信道,LDPC多用户检测器
参考文献
[1] DEB S, EFFROS M, HO T, et al. Network coding for wireless applications: a brief tutorial [C]// Proc. Intern. Workshop on Wireless Ad-hoc and Sensor Networks (IWWAN) . [S.l.]: IWWAN, 2005: 21-28.
[2]WU Y, CHOU P A, KUNG S Y.Minimum-energy multi-cast in mobile ad hoc networks using network coding[J].IEEE Trans.on Commun., 2005, 53 (11) :1906-1908.
[3] KATTI S, KATABI D, HU W, et al. The importance of being opportunistic practical network coding for wireless environments [C]//Proceedings of SIGCOMM. Allerton: SIGCOMM, 2006: 414-419.
[4] ZHANG S, LIEW S, LAM P. Physical layer network coding [C]//Proc. of ACM MobiCom′06. LA, USA: ACM, 2006: 358-365.
[5] POPOVSKI P, YOMO H. Physical network coding in two-way wireless relay channels [C]//Proceedings of IEEE ICC′07. [S.l.]: IEEE, 2007: 707-712.
[6]WU Y, CHOU P, KUNG S.Information exchange in wire-less networks with network coding and physical-layer broad-cast[C]//Conference on Information sciences and Systems.MA, USA:Johns Hopkins University, 2004:501-511.
[7] HAUSL C, HAGENAUER J. Iterative network and channel decoding for the two-way relay channel [C]//Proc. of IEEE ICC’06. Istanbul, Turkey: IEEE, 2006: 11-18.
[8]HAUSL C, DUPRAZ P.Joint network-channel coding forthe multiple-access relay channels[C]//Proc.of Intern.Workshop on Wireless Ad-hoc and Sensor Networks (IW-WAN) , New York, USA:IWWAN, 2006:19-22.
[9] ZHANG S, LIEW S, LAM P. Physical layer network coding [DB/OL]. [2009-08-07]. http://arxiv.org/ftp/arxiv/papers.
[10] RAZAGHI P, YU Wei. Bilayer low-density parity check codes for decode-and-forward in relay channels [J]. IEEE Trans. on Inform.Theory, 2007, 53 (10) : 3723-3739.
[11] GALLAGER R G. Bilayer low-density parity-check codes [J]. IEEE Trans. on Information Theory, 1962, 8 (1) : 21-28.
电子编码 篇3
关键词:数据压缩,动态编码,线性编码,Huffman树,编码算法
0引言
数据压缩是通过减少计算机中所存储数据或者通信传播中数据的冗余度,达到增大数据密度,最终使数据的存储空间减少的技术。数据压缩在许多领域都有应用,如中文检索、数据采集、数据存储、数据通信等。通常数据压缩可分为有损压缩与无损压缩。无损压缩是解码后的数据与压缩之前的原始数据完全一致,是基于信息熵原理的可逆编码。目前常用的可逆编码有Huffman编码、算术编码、行程编码与LZW编码等。
Huffman编码为通用数据压缩方法,是大多数压缩程序的基础,并往往作为完整压缩过程中的一个步骤。Huffman编码效率高,运算速度快,实现方式灵活,应用范围很广泛。表1列出了该编码算法在当今流行压缩软件的运用[1]。
1Huffman编码算法
1.1Huffman编码
Huffman编码是1952年由Huffman提出的一种编码方法。这种编码方法根据信源数据符号发生的概率进行编码。在信源数据中出现概率越大的符号,相应的码长越短;出现概率越小的符号,其码长越长,从而达到用尽可能少的码表示信源数据,它在变长编码中是最佳的。
现假设信源空间A为:
现用码符号集X:{x1,x2,…,xN},对信源空间A中的每个符号ai(i=1,2,…,N)进行编码。
算法描述如下:
(1) 把信源符号按其出现概率的大小顺序排列起来;
(2) 把最末两个具有最小概率的元素之概率加起来;
(3) 把该概率之和同其余概率由大到小排列,然后再把两个最小概率加起来,进行重新排列;
(4) 重复步骤,直到最后只剩下两个概率为止。从最后两个概率开始逐步向前进行编码。约定概率大的赋予0,小的赋予1。
Huffman编码的具体做法是通过构造Huffman树进行编码,如下:
(1) 根据给定的N个权值的集合W = {w1,w2,…,wN},构成N棵二叉树的集合 F = {T1,T2,…,TN},其中每棵二叉树Ti的根结点的权值为wi ,其左右子树均为空;
(2) 在 F中选取两棵根结点的权值最小的树作为左、右子树构造一棵新的二叉树,且置新的二叉树的根结点的权值为其左、右子树上根结点的权值之和;
(3) 从 F中删除这两棵树,同时将新得到的二叉树加入 F中;
(4) 重复(2) 和(3),直至 F只含一棵树为止。这棵树便是 Huffman树。
在这棵 Huffman树中,每个叶结点代表一个信源符号ai, 叶结点的权值 wi则代表ai出现的概率,即P(ai),叶结点路径长度即编码长度。同时,约定结点概率大的分支编码为0,概率小的分支编码为1,若两节点概率相等,则参考以该节点为根的子树高度,约定子树高度较小(包括相等)的节点编码为0,较大的节点编码为1。所得编码即为 Huffman编码。
分析易知Huffman编码主要涉及到构树思想及求和、重排序操作,树构造完成后才开始依次编码,这样做不仅增加了时间复杂度,同时实现比较复杂。针对不足:文献[2]通过对权值相等且最小的多树进行规范,排除Huffman树二异性的同时使得Huffman编码长度趋于均匀,从而降低了信息在传输和辨别中的出错率;文献[3]通过在动态Huffman编码过程中插入一个查找器,以便查找重复串去除冗余,使得编码压缩同时具有动态Huffman编码和LZW编码的优点,从而提高性能。但笔者发现多数算法均依赖于树结构的实现(文献[2]对Huffman树进行规范,文献[3]的动态Huffman编码核心即是构造Huffman树),实现和操作起来复杂,且时空复杂度较高。也有不依赖于树结构的算法,文献[4]通过归纳出规范Huffman树中信源节点的编号规律,并通过线性结构实现,空间复杂度大为减低,但仍然是针对Huffman树寻找规律,实质上并没有脱离构树思想。结合以上分析,本文提出了一种基于一次排序动态编码的Huffman*编码,从编码思想上摒弃构树,直接简化为线形编码,从而提高了时空效率,同时大大降低了实现及操作的复杂性。下面则具体介绍Huffman*编码算法。
1.2Huffman*编码
同样设信源A的信源空间为:
其中
现用码符号集X:{x1,x2,…,xN},对信源空间A中的每个符号ai(i=1,2,…,N)进行编码。
算法描述如下:
(1) 把信源符号按其出现概率的从大到小顺序排列起来,设顺序为N,N-1,…,1,其概率分别为P(N),P(N-1),…,P(1);
(2) 将N-1以后的概率累加起来,记为Sum(N-1),并与P(N)比较;
(3) 约定:若Sum(N-1)大于P(N),P(N)编码为1,Sum(N-1) 编码为0;反之,P(N)编码为0,Sum(N-1) 编码为1;
(4) 将N-2以后的概率累加,记为Sum(N-2),并与P(N-1)比较,若前者大,P(N-1)在Sum(N-1)基础之上追加编码1,Sum(N-2)追加编码0;否则,P(N-1)追加编码0,Sum(N-2)追加编码1。重复步骤,直至所有信源符号被编码。
编码过程如图1所示。
结合图1与算法描述分析:首先是求和操作,即求Sum(N-1),并与P(N)比较,并按照约定优先完成P(N)编码,然后求Sum(N-2),并与P(N-1)比较,再按约定编码,如此按照编码方向依次类推,直致编码完成。其中,i (i=1,2 ,…,N) 对应的编码即信源空间A中某一符号aj的编码。Huffman*编码采用前缀编码,对于任意ai∈A,ai编码唯一,所以Huffman*编码具有唯一性。下面通过实例具体展示两种编码思想。
1.3算法实例
设有编码输入X:{x1,x2,x3,x4,x5 ,x6}。其频率分布分别为P(x1)=0.4,P(x2)=0.3,P(x3)=0.1,P(x4)=0.1,P(x5)=0.06,P(x6)=0.04,现求其最佳霍夫曼编码W = {w1,w2,w3,w4,w5,w6}。下面以该实例来分别介绍传统Huffman编码和Huffman*编码思想及具体过程。
1.3.1 Huffman编码
按照节1.1算法描述及具体操作,初始时有六棵二叉树,分别记为T1,T2,T3,T4,T5,T6,则二叉树集合F={T1,T2,T3,T4,T5,T6}。首先将概率最小的两棵树构造新的二叉树,即T6与T5构成新二叉树,记为T7,然后删除T6 和T5,得出F={T1,T2,T3,T4,T7}。其次再对概率最小的两者操作,依次类推,直到构造出最后一棵树F={Ti},即Huffman树。最后按照约定,概率大的分支编码0,概率小的分支编码1,完成全部编码即得到Huffman编码。详细如图2所示,编码结果如表2所示。
由此可以看出,传统Huffman编码过程就是不断构树的过程。下面介绍Huffman*编码。
1.3.2 Huffman* 编码
按照1.2节算法描述,首先求Sum(w2),并与P(w1)比较,优先确定概率大的信源的编码,通过比较与算法约定,易得w1编码为1,Sum(w2)编码为0。然后求Sum(w3),并P(w2)比较得出P(w2)编码为00,Sum(w3)编码为01,按从右至左编码方向以此类推,通过不断追加编码,直至所有信源符号被编码,详细过程如图3所示。
由1.3.1节与1.3.2 节不难得出,采用两种算法,所得编码W={w1,w2,w3,w4,w5,w6}完全相同,则Huffman*算法所得到的编码与Huffman树构造出的编码完全一致。在编码一致的情况下,下面对两者的编码算法进行分析与比较。
2算法分析与比较
参考对象:信源空间A。
下面在此参考对象上,对两者的时间复杂度和空间复杂度做详细分析。
2.1时间复杂度
Huffman*编码与Huffman编码均需要一次遍历,以完成对信源的排序,因此在算法第(1)步的时间复杂度相同。对于步骤(2)以后,二者处理有着极大区别:Huffman算法总是将最末两个最小概率相加,然后进行重排序,直至剩下最后两个元素,也即完成构树工作,然后进行依次编码(如图2所示);Huffman*算法则是在概率比较的同时进行编码,优先确定概率大的元素的编码,依次推进,直至所有信源符号被编码(如图1所示)。以下是两者时间复杂度的比较。
2.1.1 Huffman 编码
Huffman编码涉及重排序,而第(3)步常用两种排序方式,即冒泡排序和插入排序,前者的关键操作是比较与交换,后者的关键操作是定位与移动。设求和、交换、定位、移动操作一次分别记为1,考虑最坏情况,1次比较之后则对应着可能的多次交换及移动操作。
冒泡排序一次排序的时间复杂度为O[N(N-1)],则综合时间复杂度至少为:
O(y)= O[N(N-1)]+ O[(N-1)(N-2)]+…+O(1) (1)
共N-1项,即:
O(y)=O(N3) (2)
插入排序一次排序的时间复杂度为O[log2(N-2)+1+(N-2)],三项分别代表为定位、求和和移动,所以其综合时间复杂度为:
O(y)=O[log2(N-2)+1+(N-2)]+
O[log2(N-3)+1+(N-3)]+…+O(1+1+1) (3)
共N-2项,可以算出以下表达式:
O(y)=O[( log2(N-2)+ …+1)+(N+1)(N-2)/2] (4)
即:
O(y)=O(N2) (5)
2.1.2 Huffman* 编码
对于排序完成的信源,Huffman*算法是直接进行累计求和,在概率比较的同时进行编码,时间复杂度集中于累计求和。为一致,记求和操作一次记为1,则第一次累计求和有N-1个概率,求和操作为N-2,时间复杂度即为O(N-2),综合时间复杂度为:
O(y)=O(N-2)+O(N-3)+……+O(1) (6)
共N-2项,记为:
O(y)=O[(N-1)(N-2)/2] (7)
简化为:
O(y)= O(N2) (8)
2.1.3 分析与比较
通过时间复杂度表达式(2)、(5)和(8)的粗略比较,Huffman*算法时间复杂度显然要比Huffman算法采用冒泡排序实现的低很多,与Huffman算法的插入排序实现的相同;但精确比较,如表达式(4)和(7)所展示,仍然可得出Huffman*算法更胜一筹。由于N+1,N-1,N-2均大于零,显然对于表达式(N+1)(N-2) 恒大于表达式(N-1)(N-2)。那么O[(N-1)(N-2)/2]恒小于 O[(log2(N-2)+ ……+1)+(N+1)(N-2)/2],即得证。
2.2空间复杂度
设保存信源信息所需的空间为1,由于Huffman编码需要构造构造 Huffman树 ,对于信源空间A,其叶子数也为N,非叶子结点数为N-1,所以空间复杂度为:
O(S)=O(2N-1) (9)
Huffman*编码对每个信源符号编码,空间为N,同时需要Sum(i)(i=2,3,…,N-1)的辅助编码,空间复杂度为:
O(S)=O(2N-2) (10)
由表达式(9)和(10)很容易得出两者的空间复杂度相差无几。
2.3结论
时间复杂度上Huffman*编码明显优于采用冒泡排序的Huffman编码,故以下比较主要集中于Huffman*编码和采用插入排序的Huffman编码之间。通过时间复杂度与空间复杂度的比较很容易看出,空间效率上,Huffman*编码比Huffman编码的优势体现并不明显,但是时间复杂度,前者明显低于后者,尤其在信号量少的时候,Huffman*编码的优势更为突出。当N取不同值时,由表达式(4)、(7)、(9)和(10)可分别算出的时间复杂度和空间复杂度,表3给出了两者的直观比较。
3总结
Huffman算法是一种高效的数据压缩算法,在许多领域都有应用。其编码算法的好坏直接影响到编码效率,针对传统Huffman算法的不足,提出了一种可行的、高效的Huffman*编码算法。将传统的重排序简化为一次排序,编码思想摒弃构树,简化为线性编码,通过概率比较的同时进行编码,优先确定权重大的信源的编码,从而降低了时间复杂度;同时避免了树结构操作的复杂性,便于实现和移植。实践证明Huffman*算法是有效的,且编码效率略高于传统Huffman编码。尤其在对大量独立的小型文件(图片等)进行压缩时,时间效率明显提高。
参考文献
[1]张风林,刘思峰.一个改进的Huffman数据压缩算法[J].计算机工程与应用,2007,43(2):73-74.
[2]韩俊英,韩虎.Huffman算法的分析与改进[J].兰州铁道学院学报:自然科学版,2003,22(3):120-121.
[3]游晓明,陈传波,刘升.数据压缩算法分析与改进[J].小型微型计算机系统,1999,20(8):570-573.
[4]李伟生,李域,王涛.一种不用建造Huffman树的高效Huffman编码算法[J].中国图象图形学报,2005,10(3):382-387.
[5]龚声蓉,王林,刘纯平,等.多媒体技术应用[M].北京:人民邮电出版社,2008.
电子编码 篇4
在以包交换为基础的通信网络中,如IP网和第三代移动通信网络,由于网络拥塞、信道干扰和噪声等原因,实时、全双工和交互的音频及多媒体通信也同样会遭遇网络丢包问题,这将导致音频质量受到严重影响。减小这种因丢包而导致音频质量下降的方法大体分为基于编码器的和基于解码器的抗丢包算法两大类[1]:
(1)基于编码器的抗丢包算法主要有自动重发请求、前向纠错、交织编码和分层编码等。
(2)基于解码器的差错隐藏等算法,如插值、嵌入和复制等。
但这些方法存在时延大、冗余编码容易出错、使用环境受限制、存在误码隐藏等缺陷。
在这种背景下,本文针对目前音频传输中存在的问题,深入研究了多描述算法在音频编码与传输领域的应用。
1 多描述音频编码算法框架
依据一般感知音频编解码器原理,提出了一种新的基于多描述编码技术的具有较好抗丢包性能的高质量音频编解码算法框架,框架的核心思想是在音频信源分析与合成以及量化与编码这两个层面上进行多描述的处理。
首先,在音频信号处理的层面进行多描述的分析与合成。然后,在量化和编码的层面分别对听觉掩蔽门限和听觉剩余信号进行多描述编解码。
1.1 多描述抗丢包音频编码算法框架
图1给出了多描述抗丢包音频编码算法框架原理框图。多描述抗丢包音频编码算法框架的编码过程为:原始音频信号分成两路,一路利用时频分析工具得到频域参数;另一路进行心理声学模型分析得到与当前音频帧相关的听觉掩蔽门限。听觉剩余信号分析利用听觉掩蔽门限去除频域系数中的听觉不相干信息或不相干度得到去除了听觉不相干性的、在听觉意义上白化的剩余信号。然后,将表征本帧音频信号信息的剩余信号和掩蔽门限送给多描述编码器进行多描述处理,得到N个可以进行单独或联合多描述解码的描述,及描述1~描述N;再将这N个描述进行无失真编码(如Huffman编码),以消除信源统计多余度,进一步压缩比特率。最后,分别将形成的N个描述比特流送入信道。其中,描述的个数N一般取2。
1.2 多描述抗丢包音频解码算法框架
图2给出了多描述抗丢包音频解码算法框架原理框图。多描述抗丢包音频解码算法框架的解码过程为:该框架首先接收来自信道的多个描述比特流,并对接收到的描述比特流进行解包和无失真解码;其次,进行多描述解码,分别得到解码掩蔽门限和剩余信号;最后,利用掩蔽门限和剩余信号重构频域音频参数,并对频域音频参数进行时频反变换得到重构音频信号。
2 标量量化多描述编解码算法
2.1 标量量化双描述编解码算法
根据标量量化双描述编解码算法原理[2],图3给出了标量量化双描述编解码原理图。
编解码过程为:信源x通过编码器编码得到索引l,这个过程是一般信源编码器的编码过程;这个索引l再通过匹配函数a(·)匹配成一个索引对(i,j),这个索引对就是这个信源的两个描述,这样就把一个索引匹配成了两个描述,这个过程就是标量量化双描述的编码过程。当描述被送到解码端后,解码端再根据接收到的描述的个数选择一个多描述解码器进行解码:当只接收到一个描述(i或j)时,选择边解码器g0或g2对其进行解码;当接收到两个描述时,选择中央解码器g1对其进行解码。
2.2 标量量化三描述编解码算法
基于双描述三解码器结构的标量量化双描述编解码算法的基础上,本文研究了一种基于三描述七解码器结构的标量量化三描述编解码算法。
图4给出了基于三描述七解码器结构的标量量化三描述编解码原理图。
其过程为:信源x通过编码器编码得到索引l,这个过程也是一般信源编码器的编码过程;索引l再通过匹配函数a(·)匹配成一个索引集合(h,i,j),这个索引集合就是这个信源的三个描述,这样就把一个索引匹配成了三个描述,这个过程就是标量量化三描述编码过程。当描述被送到解码端后,解码端再根据接收到的描述的个数选择一个多描述解码器进行解码:当只接收到一个描述(h,i或j)时,选择边解码器g0、g1或g6对其进行解码;当接收到两个描述(h和i、i和j或h和j)时,选择边解码器g2、g4或g5对其进行解码;当接收到三个描述(h,i,j)时,选择中央解码器g3对其进行解码。
标量量化三描述编解码器各模块功能如下:
a)信源x,此信源可为语音、音频、图像和视频等,在本文中为音频信源;
b)编码器,此编码器为一般的编码器,包括有损和无损的、感知或一般的语音、音频、图像和视频等信源编码器,它把信源x编码为索引l;
c)a(·)是一个匹配器,这部分也是标量量化三描述编解码器中最重要的部分,它把索引匹配成索引集合(h,i,j),其本质是完成了标量量化三描述编码功能,把一个索引标量量化为三个描述(h,i,j)。
d)g0、g1、g2、g3、g4、g5、g6、g7、都是多描述解码器,但功能不同:g0、g1、g6分别是相应单个描述的边解码器,它们在接收到h,i或j后,可分别解码产生信号0ˆx、1ˆx和ˆx6;g2、g4、g5分别是两个描述的边解码器,在接收到h和i、h和j或i和j后,可分别解码产生信号2ˆx、4ˆx或5ˆx;g3是中央解码器,在接收到全部三个描述信号(h,i,j)后,可解码产生信号3ˆx。
下面以一个具体索引值为例说明整个过程:
信源x经过编码器后,索引l值的范围为1~10,即编码器量化x的量化区间共有十个,编码器的量化区间如图5。
根据信源的特点和引入的冗余度,匹配器使用图6来实现匹配函数a(·)的功能,即把索引l匹配成三个描述:h、i和j。
这个匹配过程的本质是用三个三描述标量量化器(分别对应量化后的索引值为h、i和j)来代替单描述标量量化器(对应量化后的索引值为l)。因为调整三描述标量量化器的精度可以控制在三描述之间引入的冗余度,即三个多描述标量量化器的精度越高,引入的冗余度就越高,所以可以设计不同的三维图来实现多种冗余度的三描述标量量化器。这四个量化器的量化区间之间的对应关系如图7所示。
至此,标量量化三描述编码器通过匹配函数a(·)匹配出三个描述,即索引集合(h,i,j),再将这三个描述发送到解码端,解码端的解码过程如下:
(1)当接收到h、i和j时,解码器g3可以根据图6查找到唯一的l值。解码器首先在图6中找到h、i和j分别对应的坐标位置,然后再找到图4.6中三维空间中的值l,这个值就是多描述标量量化前的值。至此,解码器根据h、i和j的值无损的解出信号l。
(2)当只接收到h和i时,解码器g2可以根据图6中的数据估算出l的值。估算的方法有很多种:例如,解码器g2可以把图6中垂直于h轴的平面和垂直于i轴的平面相交线上对应的数据的平均值、最大值或最小值作为l的值。
(3)当只接收到i和j时,解码器g4可以根据图6中的数据估算出l的值。估算的方法和(2)一样。
(4)当只接收到h和j时,解码器g5可以根据图6中的数据估算出l的值。估算的方法和(2)一样。
(5)当只接收到h时,解码器g0可以根据图6中的数据估算出l的值。估算的方法有很多种:例如,解码器g0可以把图6中垂直于h轴的平面上对应的数据的平均值、最大值或最小值作为l的值。
(6)当只接收到i时,解码器g1可以根据图6中的数据估算出l的值。估算的方法和(2)一样。
(7)当只接收到j时,解码器g6可以根据图6中的数据估算出l的值。估算的方法和(2)一样。
3 标量量化多描述编码测试结果对比分析
表1和表2列出了的单描述、双描述和三描述客观测试结果。与单描述编码相比,双描述和三描述的编码分别增加了25%和50%的编码比特率,也就是每多一个描述,我们增加25%的比特率用以对增加的描述产生的多余度进行编码。
从客观测试的对比的结果来看,编解码采用多描述(双描述或三描述)编码的方法带来的好处是非常明显的。从表1和表2中可以看到,采用多描述的算法的编解码器的抗丢包性能都比单描述算法的抗丢包性能好虽然对于语音信号,三描述算法在理想信道情况下不如单描述算法的音质,但是在非理想信道模式下,随着丢包率的增加,三描述算法的音质下降得比较慢,并最终超过了单描述算法的音质,所以采用多描述算法的感知编码器都有很好的抗丢包性能。对于音乐信号,三描述的抗丢包性能比双描述的抗丢包性能好;对于语音信号,三描述的抗丢包性能和双描述的抗丢包性基本相同。
4 结语
本文依据感知音频编解码器基本原理提出了一种多描述抗丢包感知音频编解码算法框架,研究了标量量化双描述编解码算法,提出了标量量化三描述算法,但并未囊括所有的多描述算法研究和设计的多描述抗丢包音频编解码算法框架和多描述算法能够在较高的丢包率(20%-30%)时能够
保持自然的音频和语音质量,在严重丢包(40%-60%)时仍能够保持较好的音频和可懂语音质量。
摘要:本文依据感知音频编解码基本原理,研究和设计了一种基于多描述编码技术的高质量音频编码算法。这种算法具有较好抗丢包性能,算法的总体思路是先在分析与合成的层面上把音频分解为听觉掩蔽门限和剩余信号,然后在量化和编码层面上分别对音频的听觉掩蔽门限和剩余信号进行多描述处理。结果表明,在所提出的多描述抗丢包音频编解码算法框架下,多描述算法的抗丢包性能明显优于单描述的抗丢包性能,标量量化多描述算法的抗丢包性能比奇偶分离双描述算法和对偶变换双描述算法的抗丢包性能都要好。
关键词:音频编码,多描述编码,信源编码,多媒体通信,数据压缩
参考文献
[1]C.Perkins,O.Hodson,and V.Hardman,“A Survey of Packet Loss Recovery Techniques for Streaming Audio,I”EEE network,vol.12,no.5,pp.40-48,Sept-Oct 1998.
[2]Vaishampayan V A,“Design of multiple description scalar quantizers,”IEEE Trans.Information Theory,vol.39,pp.821-834,May 1993.
[3]M.Orchard,Y.Wang,V.Vaishampayan,and A.Reibman,“Redundancy rate distortion analysis of multiple description image coding using pairwise correlating transforms,i”n Proc.IEEE Int.Conf.Image Processing(ICIP’97),vol.I,Santa Barbara,CA,pp.608–611,Oct.1997.
[4]Y.Wang,M.T.Orchard,V.Vaishampayan,and A.R.Reibman,“Multiple description coding using pairwise correlating transforms,”IEEE Trans.Image Processing,vol.10,pp.351-366,Mar.2001.
电子编码 篇5
关键词:嵌入式系统,优先级编码器,键盘接口,中断,自动重复
1 引 言
大量的嵌入式产品,比如微波炉、传真机、复印机、激光打印机、销售点(POS)终端、可编程逻辑控制器(PLC)等,依赖于键盘或小键盘接口用于用户的输入[1]。在实际系统应用中,出于成本的考虑,经常采用非编码矩阵键盘,在需要大量按键输入的情况下,如果直接使用通用I/O端口扩展,就会需要较多的I/O端口,但是由于嵌入式处理器可供扩展的通用I/O端口较少[2,3],这就要求优化键盘接口的设计,用尽量少的I/O口线实现尽可能多的键盘输入[2]。文献[2]中提出了采用二极管和三极管组合实现键盘接口的方案,使用六个I/O口实现了5×5的矩阵键盘,并且理论上还可以进行键盘的扩充,但是由于只能进行行的扩充,这使得软件扫描按键的行数增加,加重了处理器的负担;文献[3]中采用ARM9处理器进行扩展,使用了ARM9的数据线来代替I/O端口扩展键盘,充分利用了32位微处理器的数据宽度优势,采用八位数据线和八个I/O端口实现了8×8矩阵键盘的扩展,但是这种方案不适合低端的处理器。
另外,键盘的工作方式大多采用周期中断轮询扫描,尽管周期中断轮询可以在一定程度上提高嵌入式处理器的工作效率,但系统在工作时,并不经常需要按键输入,周期中断轮询将使得处理器经常处于空扫状态[4],浪费了CPU时间,不利于降低嵌入式产品的功耗;这就要求优化键盘工作方式,进一步提高嵌入式处理器的工作效率。
针对上述问题,本文提出一种采用优先级编码器进行键盘接口设计的方案,并且以优先级编码器74HC147为例进行了4×9的非编码矩阵键盘的扩展,并给出了硬件设计以及软件设计。
2 硬件设计
2.1 硬件实现
为优化键盘接口设计,使用尽可能少的的I/O端口实现较多的按键输入,可以采用多路复用接口的方法。文章采用10线-4线编码器74HC147进行了4×9矩阵键盘的扩展,为进一步提高嵌入式处理器的工作效率,采用了中断工作方式。矩阵键盘的行线直接连接到处理器的四个作为输出的I/O端口,列线经74HC147连接到处理器的作为输入的I/O端口,使用八个I/O端口实现了4×9的矩阵键盘,并且由于只有四根行线,在进行扫描时减少了扫描的行数;为避免由于按键的抖动重复触发中断,增加了一级滤波电路,IRQ端连接到处理器的中断请求端,这样,当有键按下时IRQ端由高电平变低电平,向处理器发出中断请求,如图1所示。
2.2 工作原理
系统初始化时通过PO1~PO4向行线输出低电平。在没有键按下时,列线均为高电平,IRQ端输出高电平。只要有任何一个键被按下,则IRQ端的输出由高电平变为低电平,从而向处理器提出中断请求,转入按键中断服务程序。在按键中断服务程序中,启动内部定时中断,定时中断的定时时间略大于按键的抖动时间便可实现消抖,并在定时中断服务程序中进行按键识别、按键自动重复的处理。按键识别采用扫描法实现,依次通过行线输出低电平,通过PI1~PI4读取列线经74HC147编码以后的值,如果不是全1值,则表示有键按下,然后形成扫描码。按键的处理过程如图2所示。
编码器74HC147的输入低电平有效,如果输入都为高电平,则输出都为高电平,表示没有键被按下;当有键按下时,74HC147的某个输入变为低电平,则输出按键所在列的编码。由于74HC147编码器本身的特性,74HC147的I9输入端优先级最高,I1输入端优先级最低[5],因此接口电路不能处理一个以上的键被同时按下的情形,然而嵌入式系统通常不需要具有像终端或者计算机系统上的键盘的全部特征那样的键盘[1]。当有多个键同时被按下时,74HC147输出端为被按下键中所在优先级最高一列的负逻辑表示的编号。正是由于这一点,也简化了键盘接口软件的设计,在软件设计中不需要考虑多个键同时被按下的问题。如果在实际应用中需要组合按键,可以考虑增加独立式按键来解决。
3 软件设计
3.1 矩阵键盘驱动状态机
为了能够很好地进行自动重复按键的处理,将按键的处理过程抽象成有限状态机[1],按键的状态分为四个状态,按键状态以及状态间的转换条件如图3所示。从“键未按下”状态到“抖动处理”状态的切换在按键中断服务程序中完成;其他的状态切换都在定时中断服务程序中完成。在系统初始化时,应允许IRQ中断,禁止所使用进行按键处理的内部定时中断。
自动重复开始延迟时间通过设定一个自动重复开始延迟计数器来实现,自动重复延迟时间通过设定一个自动重复延迟计数器实现。这两个延迟计数器采用全局变量实现。
如果按键速度较快,一个键还没有完全释放,而另一个键又被按下,由于按键的机械特性可能不会导致引发中断请求;同时为了避免一个键刚释放但还没有来得及修改按键状态,而在定时中断产生时恰好又发生按键的抖动;另一方面由于需要使用全局变量来保存按键状态,考虑由于中断嵌套原因以及按键中断服务程序和定时中断服务程序中对按键状态全局变量的修改问题。因此在文献[1]的基础上增加了“等待启动自动重复”状态到“抖动处理”状态的切换、“自动重复”状态到“抖动处理”状态的切换。
3.2 键盘的输入处理
键盘的输入处理采用“生产者-消费者”模型,通过建立循环FIFO队列作为缓冲区,定时中断服务线程将按键的扫描码存入FIFO队列,后台线程可以从FIFO队列中取得按键的扫描码。对FIFO队列的存入和读取应该注意同步问题以及有限缓冲问题。
3.3 按键中断服务程序(图4)
当有键按下时触发中断,从而执行按键中断服务程序,在按键中断服务程序中启动定时中断;由于可能存在上一次按键释放后还没有来得及在定时中断服务程序中修改按键状态以及在一个键还没有释放而此时又有优先级较高的键被按下的情况,因此在按键中断程序中应先判断按键状态是否是“键未按下”状态,如果是则应先禁止内部定时中断。按键中断服务程序的流程图如图4所示。
3.4 内部定时中断服务程序
在定时中断服务程序中进行按键识别、自动重复按键处理,并将获取的按键扫描码存入FIFO队列,同时完成按键状态的切换。流程图如图5所示。
(1)抖动处理状态下的按键处理。
如果是抖动处理状态,说明已经达到消抖时间延迟,则进行键盘扫描,将获得的按键扫描码存入缓冲区,同时将此扫描码保存在全局变量中,以便在等待启动自动重复状态以及自动重复状态下进行重复按键的判断;然后修改按键状态为等待启动自动重复状态,并设定自动重复开始延迟计数器。
(2)等待启动自动重复状态下的按键处理。
在等待启动自动重复状态下,先将自动重复开始延迟计数器减1,然后判断是否为0,如果为0,则进行按键扫描获得扫描码,并和抖动处理状态下获得的扫描码比较,如果相同则是重复按键,将扫描码存入缓冲区,然后修改状态为自动重复状态,并设定自动重复延迟计数器;不同则不是重复按键,将按键状态修改为抖动处理状态。
(3)自动重复状态下的按键处理。
在自动重复状态下,先将自动重复延迟计数器减1,然后判断是否为0,如果为0,则进行按键扫描获得扫描码,并和抖动处理状态下获得的扫描码比较,如果相同则是重复按键,将扫描码存入缓冲区,不同则不是重复按键,将按键状态修改为抖动处理状态。
4 结束语
本文提出了一种用于嵌入式系统的采用优先级编码器进行非编码矩阵键盘接口设计的方案,并以4×9的非编码矩阵键盘为例给出了硬件设计图以及工作原理,同时给出了键盘驱动有限状态机模型和中断服务程序的设计。这种方案硬件设计简单,仅使用八个I/O端口便实现了4×9矩阵键盘的扩展;采用中断工作方式,并通过内部定时中断实现了消抖、按键识别以及按键自动重复处理,提高了I/O端口利用率以及嵌入式处理器的效率;采用键盘驱动状态机,简化了软件设计。本文提出的键盘接口硬件设计特别是软件设计方案在实际应用时根据具体要求稍加修改即可使用。
参考文献
[1]LABROSSE J J.嵌入式系统构件[M].袁勤勇,黄绍金,唐菁,译.北京:机械工业出版社,2002.
[2]慕春棣.嵌入式系统的构建[M].北京:清华大学出版社,2004.
[3]吴金华,李驹光,韦安.基于ARM9的多行列键盘设计及其驱动实现[J].微计算机信息,2008,2-2:123-124.
[4]何立民.MCS-51系列单片机应用系统设计-系统配置与接口技术[M].北京:北京航空航天大学出版社,2001.
电子编码 篇6
21世纪, 国际社会已进入信息化时代。信息论作为信息科学和技术的基本理论, 犹如信息科学大厦的地基, 在信息社会中占据越来越重要的地位。信息论的创始人Shannon, 他在1949年发表了《保密通信的信息理论》, 是每一位研究信息学者必读的一篇文章[1]。随着信息技术的发展, 编码技术已经在媒体技术、网络技术、无线通信技术、数字电视技术等方面得到广泛应用[2]。信息论、错误控制编码和密码学是现在数字通信系统中的三大支柱。信息论基础是应用概率论、随机过程和近世代数等方法研究信息的存储、传输和处理中一般规律的学科, 主要解决通信过程中信息传输的有效性、可靠性与安全性的问题, 是信息科学和通信科学领域中的一门基础理论[3,4]。
信息论将信息的传递作为一种统计现象来考虑, 给出了估算通信信道容量的方法。信息传输和信息压缩是信息论研究中的两大领域。紧致码在信息论的研究中有着至关重要的作用, 并且具有重大实际意义。
本文的目的是用信息论观点对紧致码进行若干研究, 以Shannon, Fano和Huffman三种编码方法为例, 分别介绍它们的编码原理以及相关证明, 进一步得出结论。
2 紧致码
这里我们介绍一种特殊的信源分布, 如果其中各消息概率满足pi
其中hi为任意正整数, 对信源进行二进制编码, 该编码为最佳编码, 或者说获得码是紧致码[5]。
编码效率
下面我们将对上述结论进行证明。
3 三种编码法及其证明
3.1对于Shannon编码的证明
首先介绍Shannon编码方法。步骤如下:
(1) 将信源发出的M个消息, 按其概率递减顺序进行排列, 得
3.2对于Fano编码的证明
对Fano编码的思路与Shannon编码类似。首先介绍Fano编码方法[7]。步骤如下:
(1) 信源发出的M个消息, 按其概率递减顺序排列, 得
把消息集{x1, x2, …xM}按其概率大小分解成两个子集, 使两个子集的概率之和尽可能相等, 把第一个子集编码为0, 第二个子集编码为1, 作为代码组的第一个码元;
(2) 对子集做第二次分解, 同样分解成两个子集, 并使两个子集概率之和尽可能接近相等, 再把第一个子集编码为0, 第二个子集编码为1, 作为第二个代码组的码元;
(3) 如此一直进行下去, 直到各子集仅含一个消息为止;
(4) 将逐次分解过程中得到的码元排列起来就是各消息代码。下面证明作上述操作后得到的每个消息对应的码长为hi。
由上述可知对于紧致码用Fano编码法进行编码后每个信源对应的码长也为hi。
3.3对于Huffman编码的证明
同样首先引出Huffman编码[8]。将信源符号按概率递减的次序排列;
(1) 将概率最小的两个符号连在一起。将这两个符号的概率之和写在他们的结合节点上。将这两个分别标记为0和1;
(2) 将这两个概率和看作一个新符号的概率。重新排列信源符号, 并将概率最小的两个信源符号, 将他们绑定在一起构成一个新的概率。每一次我们把两个符号结合在一起是符号总数减1。每当把两个概率结合在一起时, 总是把两个分支标记为0和1;
(3) 将此过程继续下去直至只剩一个概率, 就完成了Huffman树的构造;
(4) 对于任意符号的码字, 找到从最后节点到该符号的一个路径, 反向追踪路径并读出分支的码字, 即为该符号的码字。
下面开始证明。
首先我们考虑最特殊也是最理想的一种情况, 信源概率分布如表1所示,
对于这种信源分布显然每个信源编码后的码长为hi。
对于一个信源空间X, 其概率分布为
其中hi为任意正整数。将其按概率降序排列为
下面用反证法进行证明。
现在回到Huffman方法。由上面的结论可知, 对于上述的一个信源空间进行Huffman编码, 每一次合并重排后, 最下面的两个信源符号, 也就是概率最小的两个信源的概率一定是相等的。因为每一次合并重排后, 原信源空间会形成一个新的信源空间, 原来概率最小的两个信源符号合并成一个新的信源符号, 也就是说形成一个新的概率分布, 由于相加的两个概率相等, 则相加得到的新的概率仍然满足p=2-h, 也就是说新的概率分布仍然满足, 则同样满足结论。这个结论当我们引入Huffman tree的概念后对证明就会变得极其有用。
下面先介绍一些树的基本概念, 然后引出Huffman tree的概念。
(1) 路径和路径长度。在一棵树中, 从一个结点往下可以达到的孩子或孙子结点之间的通路, 称为路径。通路中分支的数目称为路径长度。若规定根结点的层数为1, 则从根结点到第L层结点的路径长度为L-1。
(2) 结点的权及带权路径长度。若将树中结点赋给一个有着某种含义的数值, 则这个数值称为该结点的权。结点的带权路径长度为:从根结点到该结点之间的路径长度与该结点的权的乘积。
(3) 树的带权路径长度。树的带权路径长度规定为所有叶子结点的带权路径长度之和, 记为WPL。
然后是Huffman tree的构造。
假设有n个权值, 则构造出的Huffman tree有n个叶子结点。n个权值分别设为w1w2……wn, 则Huffman tree的构造规则为:
(1) 将w1w2……wn看成是有n棵树的森林 (每棵树仅有一个结点) ;
(2) 在森林中选出两个根结点的权值最小的树合并, 作为一棵新树的左、右子树, 且新树的根结点权值为其左、右子树根结点权值之和;
(3) 从森林中删除选取的两棵树, 并将新树加入森林;
(4) 重复 (2) 、 (3) 步, 直到森林中只剩一棵树为止, 该树即为所求得的Huffman tree。
此时在看结论2我们会发现, 在Hufuman tree中每个节点的两个子节点权值, 在这里也就是信源符号对应的概率一定是相等的, 举个例子就是如图1所示。
也就是说, 从根结点开始进行分支, 每i次分支得到的两个子节点概率为2-i, 反之概率为的节点一定是经过第hi次分支得到。由于Human tree的定义, 某一结点的路径长度就等于得到该节点所需的分支次数, 因此对于紧致码每个概率为的信源进行Huffman编码后其码长一定为hi。
4结论
本文针对一种被称为紧致码的特殊的信源空间分布, 分别用Shannon, Fano和Huffman三种编码方法对其进行了证明, 发现对于某种特殊的信源分布的紧致码, 平均码长与其信源概率分布有关。我们引入Huffman tree构造方法证明了Huffman编码方法的情况, 简化了对于这种特殊的信源分布的紧致码编码过程, 具有重要的实际意义。
参考文献
[1]王鹤鸣.从信息化发展历程看密码学发展——专访西安电子科技大学通信工程学院王育民教授[J].信息安全与通信保密, 2011 (11) :13-19.
[2]邓家先.与编码课程教学改革探讨[J].电子教学学报, 2007 (02) :111-114
[3]陈运.信息论与编码[M].北京:电子工业出版社, 2007.
[4]D CMac Kay.Information Theory, Inference, and Learning Algorithms[M].Cambridge:Cambridge University Press, 2000.
[5]曹雪虹, 张宗橙.信息论与编码[M].北京:清华大学出版社, 2004 (03) .
[6]曲炜, 朱诗兵.信息论基础及应用[M].北京:清华大学出版社, 2005 (01) .
[7]沈世镒, 吴忠华.信息论基础与应用[M].北京:高等教育出版社, 2004.
[8]傅祖芸.信息论——基础理论与应用[M].北京:电子工业出版社, 2001.
电子编码 篇7
H.264标准是新一代视频压缩标准,与前一代H.263标准相比,其编码效率提高一倍以上,但编码器的复杂度和计算量大为提高。仅就最低档次Baseline而言,H.264编码器存在以下问题:复杂度是H.263的10倍多,计算量增大;H.264采用多参考帧技术,要求处理器体系构架对处理器的数据调度机制以及片内外存储器的组织有新的考虑;H.264中新增加的编码技术(整数变化、去方块滤波等)要求现有的媒体处理指令集必须进行扩展;复杂度的增加导致H.264芯片的实现周期和产品成熟周期大大延长。
针对以上问题,笔者设计一个简化的H.264编码器,只保留标准的H263视频编码基本模块,并改进耗时较多的运动估计等算法模块来减少计算时间,满足实时通信的要求。
2 H.264视频编码器的简化
H.264与H.263视频编码标准的原理相同,是基于块的混合编码,通过运动补偿和帧间预测去除时域冗余,通过变换编码去除频域冗余。H.264标准又使用了多参考帧预测、7种不同大小的块预测模式以及1/4像素精度的运动估计、帧内预测、整数变换等技术,编码效率大幅提高,但也增加了编码器的复杂程度。笔者去除H.264标准中的SP帧预测、B帧预测、环路滤波、加权预测、帧场自适应预测,只使用1个参考帧,不使用码率控制、算术编码和率失真优化方式,在7种模式选择中只选择16×16和8×8两种模式。经过上述简化,得到了一个功能相对简单的编码器。
3 H.264视频编码器的算法改进
笔者使用Intel公司开发的Intel Vtune Performance Analyzer软件来测试各模块的运算时间,各模块占总运算时间的比重如表1所示。这4个部分约占运算总时间的80%,要提高编码器的运算时间,就必须对这些模块进行优化。笔者对运动估计搜索算法、帧间模式选择算法和插值算法进行改进。
3.1 改进的基于起点预测的快速运动搜索算法
1)交叉菱形运动搜索模板
在文献[1]的实验中,利用FS对13幅不同运动程度的视频图像进行运动估计,得出运动矢量概率分布规律如下:
(1)视频序列的运动矢量在空间分布上存在中心偏置特性,即运动矢量的分布以(0,0)为中心向外发散,具有梯度下降的特性,并且大部分运动矢量分布在[-4,4]的中心区域窗内。
(2)约有75%左右的运动矢量分布在水平和垂直方向上,而只有8%左右的运动矢量分布在相同半径的其他方向上,这说明运动矢量有交叉偏置特性。
基于以上所述,运动矢量的概率分布具有交叉-中心偏置分布特性。依据该特性,设计了交叉菱形搜索模板,如图1所示。图1a和图1b分别为大交叉菱形模板(LCSP)和小交叉菱形模板(SCSP)。在进行整像素搜索时,采用两步搜索算法,第一步采用大交叉菱形模板进行搜索,第二步以第一步得到的最佳匹配点为中心,采用小菱形模板进行搜索,得到最终的最佳匹配点。例如,如果第一步搜索得到的最佳匹配点在大交叉菱形模板的最右侧,那就以该点为中心进行第二步的搜索,搜索点位置见图1c。
2)自适应提前中止策略
由文献[1]的运动矢量概率分布统计结果发现,有45%的运动矢量是零矢量,这说明大部分图像块是静止的。如果能找到一个合适的阈值,使得在搜索时,若当前块的像素差值(SAD)小于该阈值,则直接中止搜索过程,这将大幅度降低算法的计算时间。笔者采用提前中止策略来自适应地选择阈值。在图像的运动过程中,当前宏块的运动特性和周围相邻宏块的运动特性相关性比较大,可以通过周围相邻块的运动矢量和SAD值来自适应的选择阈值。步骤如下:
(1)首先,判断当前块左边、上边、右上边3个相邻宏块的运动矢量是否全为零,如果成立,此时当前块的运动矢量为零的概率较大,则选择这3个宏块对应的SAD的最大值作为阈值;
(2)其次,如果当前块左边、上边、右上边3个相邻宏块的运动矢量不全为零,则选择这3个宏块对应的SAD最小值作为阈值,因为这时当前块的运动矢量为零的概率不如(1)中情况,选择最小的SAD作为阈值能保证搜索的精确性。
3)改进后的快速运动搜索算法
根据以上阐述,笔者采用一种基于起点预测的交叉菱形运动搜索算法[2],具体步骤如下:
(1)整像素搜索。首先,对初始搜索点对应的宏块进行运动估计并计算当前宏块的SAD值,如果SAD值小于阈值,则认为初始搜索点是最佳匹配点,转到步骤(3),否则进行步骤(2);
(2)采用图2a所示模板搜索初始搜索点周围步长为2的4个点,得出最佳匹配点,然后以这个最佳匹配点为中心,采用图2b所示模板搜索周围步长为1的4个点,得到最佳匹配点,转到步骤(3);如果第一步搜索得到的最佳匹配点在大交叉菱形模板的最右侧,那就以该点为中心进行第二步的搜索,搜索点位置见图2c所示;
(3)半像素搜索。采用图2b所示模板搜索最佳匹配点周围步长为1的4个半像素点,得出最佳的匹配点。
3.2 帧间编码模式选择算法的改进
H.264视频编码标准规定,在进行帧间编码时,编码器对所有模式进行遍历,并计算各种宏块模式(包括帧内预测模式)的编码代价,选择最小代价宏块模式作为最终编码模式,但这需要对每一种可能的宏块模式进行运动搜索和率失真优化计算,使得计算量急剧增加,不适合实时编码的要求。基于以上思想,笔者采用了文献[3]提出的基于图像宏块纹理特性的算法进行帧间模式选择。从图像宏块纹理特性和宏块运动特性进行模式选择,同时考虑skip模式和B帧的direct模式等。
本算法从时域角度出发,根据前后帧相同位置宏块之间的SAD来判断宏块的纹理特性
式中:xi,j和yi,j代表了当前帧和前一帧的位置处的像素值。首先进行16×16模式,如果计算得到的SAD小于指定的阈值T,就选择16×16模式,否则继续进行8×8预测模式并得到最终的最佳预测模式。由于每一帧图像的运动剧烈程度是不一样的,因此T的选择是动态的
式中:M,N分别为一帧图像的宽和高;w为系数,随QP动态设置,并由实验和统计得出。本帧间预测模式都没有使用帧内预测。
3.3 插值算法的修改
为了提高预测精度,减小预测残差能量,H.264标准采用1/4像素的运动估计并在参考帧中只存在整像素采样点,所以需要对参考帧首先进行1/2像素位置插值,再进行1/4像素位置插值。从文献[4]得知,计算一个1/2像素位置的插值点需要4次乘法、6次加法、1次移位,计算一个1/4像素位置插值点需要2次加法、1次移位,则对一幅CIF图像的亮度分量进行插值,大约需要352×288×3×4次乘法,352×288×(3×6+12×2)次加法以及相应的移位运算,运算复杂度非常高。本算法以JM86源代码为基础,仅保留1/2像素点的插值运算,舍去1/4像素点的插值运算。H.264标准是以1/4像素进行运动搜索和运动补偿的,所以需将整像素和亚像素中关于1/4像素点的搜索位置调整到1/2像素点,不再进行1/4像素的运动搜索,运算量减少很多,编码速度大大提高,但像素的精度没有优化前精细,图像质量会降低,码率会随之增加。
4 实验结果分析
实验的硬件环境采用奔腾4处理器、主频2.0 GHz的PC,内存512 Mbyte,以JVT发布的JM8.6为基础,使用baseline profile档次,参数为CAVLC熵编码,关闭多帧参考和NAL,不采用RD模式,编码的序列除首帧外,其余各帧都是P帧,只使用16×16和8×8两种模式,测试序列均为QCIF格式。实验结果见表2。
以上6个测试序列的编码速率都在20 f/s(帧/秒)以上,以牺牲少许编码性能来换得较高的编码速度。
最后,笔者以H.263编码器作为参考进行性能比较。实验的软、硬件条件一样,编码模式只用16×16和8×8两种模式,运动搜索算法都为改进后的搜索算法,实验结果见表3。在本编码器的PSNR普遍比H.263高的情况下,本编码器的比特率比H.263的低,这说明在相同条件下,本编码器的编码性能要高于H.263编码器。
5 小结
笔者简化的编码器模块的设计参照H.263编码标准,功能上相当于H.263编码器,但又有H.264标准的码流。因此,在对计算复杂度和速度要求很高的实时传输系统和DSP系统中都可使用本编码器来替代原来的H.263编码器,实际应用价值很大。
参考文献
[1]梁燕,刘文耀.基于起点预测的自适应快速搜索算法[J].计算机工程,2005,19:1-3.
[2]XU J B,PO L M,CHEUNG C K.Adaptive motion tracking block matching algorithms for video coding[J].IEEE Trans.Circuits and Systems for Video Technology,1999,9(7):1025-1029.
[3]沈芳.H264标准的帧间模式选择快速算法[J].图像处理,2006 (6):230-232.