仿真编码器(精选8篇)
仿真编码器 篇1
0引言
在多媒体通信中,视频图像数据量最大,视频质量要求最高,与其相关的应用领域最广,随着视频通信应用领域的进一步扩大,视频压缩技术显得越来越重要。笔者研究的编码器是数据压缩技术中最重要的组成部分,所采用的数据压缩技术利用了图像的空间相关性,即DCT(离散余弦变换)变换后的非相关性和统计冗余性[1],采用量化和熵编码技术能够较好地提高编码性能,进行有效的数据压缩。
1数据压缩编码器的功能定义
数据压缩编码器的任务就是对经DCT变换后的DCT矩阵进行量化或编码处理,以达到数据压缩的目的[2]。其主要由量化器、Z扫描电路、游程编码器和可变长编码器4部分组成。各个功能模块流水工作,流水控制就是对各个模块的输出码流序号进行控制。各个模块的具体设计是在MAX+PLUS II软件平台上采用逻辑电路和VHDL语言相结合的方法。本文重点介绍其中量化器的设计。
2量化器的设计
2.1 量化器的功能分析
量化器的功能是接收DCT系数,根据量化矩阵、量化步长及系数特点进行量化,最后输出量化的DCT系数。接收到的DCT系数在与常数16相乘后(可用移位乘法实现),再除以相对应的量化矩阵中的值和量化步长之积,因此需要一个乘法器和除法器来完成相应功能。此外,对于连续输入的DCT系数应设置一个输入缓冲器(设置为可存储8×8的系数块,容量为128b)予以接收存储,以便以后进行量化处理。量化矩阵的存储容量为128b,再加上相应的控制模块,就组成了量化器的总体结构[3]。
为了更好地进行时序控制,笔者在设计中提出了顺序号控制思想,即与量化系数同时输出量化系数的顺序号(1到64,即是以8×8的系数块为单位),这样既可以区别不同的量化系数,又方便以后进行模块的流水控制。
2.2 量化器的结构设计
量化器的总体功能结构见图1。
图1中,输入端的复位和使能信号用来复位/启动量化器;帧内/非帧内信号用来区分读取的数据是帧内还是非帧内的DC系数,以进行不同的处理;量化步长和DCT系数需要输入;最后输出的是量化后的DCT系数及顺序号、符号(输入的DCT系数有正、负之分)。
2.2.1 DCT系数缓冲器
DCT系数缓冲器用来存储DCT系数,这里采用的是先进先出堆栈,其读写信号由量化控制器给出。使用先进先出堆栈的另一个好处是可以同时进行读写操作。
2.2.2 乘法器
DCT变换是将数据域从时域变换到频域,在频域平面上变换系数是二维频域变量u和v的函数。对应于u=0、v=0的系数称为直流分量,即DC系数。对于非帧内DC系数,需要用量化步长乘以量化矩阵作为除数,所以要用到乘法器。在这里量化步长输入后需要经过一个左移一位的电路(相当于乘2),再与量化矩阵和DCT系数相对应的值相乘。这里的量化矩阵设为默认矩阵,可以通过帧内/非帧内标志来选择量化矩阵类型,1代表帧内量化矩阵,0代表非帧内量化矩阵,其控制信号由量化控制器给出。
2.2.3 除法器
除法器是量化器的核心功能模块,能进行除法运算,并将除法结果四舍五入。根据DC系数的特点,有两种除法方式:①对于帧内DC系数的量化,除数固定为8,采用右移三位的除法,因为帧内DC系数的值一般比较大,采用移位除法可大大缩短除法所占用的时钟周期;②对于非帧内DC系数,除数由乘法器给出,除法方式选择和除法控制信号又由量化控制器给出。这里的除法器选用的是MAX+PLUS II中LPM库里的高速DIVIDE器件。
另外,由于DCT系数是有符号的,因此在除法运算之前,要将DCT系数转化为绝对值与符号,运算时采用绝对值,结果与系数符号一起输出。
2.2.4 控制器
控制器的功能为除法选择、控制与计数。其内设计数器,可进行计数控制,范围为0~64,0代表初始状态,1~64分别代表处理的响应DCT系数。根据帧内/非帧内信号形成除法选择标志送入触发器,并向缓冲器输出读写控制信号,每做完一个8×8 DCT系数矩阵的量化,计数器清零,重新开始计数。
量化器的工作过程如下:复位信号有效时,所有内部寄存器清零,使能端有效时,量化器开始工作,量化控制器计数,缓冲器接受DCT系数。如果是帧内DC系数则送入移位寄存器,若是非帧内DC系数,则从量化矩阵中顺序读出数据,与移位后的量化步长相乘,结果与缓冲器读出的DCT系数一起送入除法器继续除法,得出的除法结果经舍入模块最后输出结果。
3软件仿真结果
当逻辑设计完成后,通过MAX+PLUS II可编程逻辑开发环境所提供的仿真工具,对设计模块进行了仿真,以确定设计模块的功能,并验证逻辑关系及定时关系是否满足设计要求。量化器的部分仿真波形见图2[4]。
仿真时所用的时钟周期均为100ns。仿真的目的是检验量化器是否完成对DCT系数量化的功能,通过对帧内DC系数和非帧内DC系数分别测试,经过3个时钟周期的运算和延迟,可以看出量化器输出的数据准确地完成了对输入数据的除法和取整功能。
4结束语
在对数据压缩编码器中量化器的功能及其在整个编码器中的任务进行分析的基础上,设计出量化器的总体结构,并分析了它的工作流程,最后进行了仿真。在具体的调试过程中,充分利用MAX+PLUS II软件的仿真功能,对设计反复验证修改,直到达到理想的结果。
参考文献
[1]马小虎,张明敏,严华明,等.多媒体数据压缩标准及实现[M].北京:清华大学出版社,1996.
[2]钟声.图像压缩技术及应用[J].电子学报,1995,23(10):117-132.
[3]付宇卓.MPEG-2视频编码器模块的结构设计[D].哈尔滨:哈尔滨工业大学,2001:25-27.
[4]黄贤武,王加俊,李家华.数字图像处理与压缩编码技术[M].西安:西安电子科技大学出版社,2000.
仿真编码器 篇2
空时网格编码和0FDM相结合通信系统发射端框图如图1所示。将要发送的数据信息比特经过串/并变换,形成n路并行的数据比特流。这n路并行的数据比特流送入n个空时网格编码器。在文献[1]中给出了空时网格编码器的构造。每一个空时网格编码器同时输出2路数据信息:D1i(t)和D2i(t)(i=1,2,……n;代表第i路编码器输出),其中D1i(t)对应第一个发射天线的数据信息,D2i(t)对应第2个发射天线的数据信息。然后n路的D1i(t)(i=1,2……,n)经过傅立叶逆变换,加上循环前缀形成一个OFDM码元。n路的D2i(t)(i=1,2,……,n)也经过傅立叶逆变换,加上循环前缀形成另一个OFDM码元。为了进行信道估计笔者引入了训练符号;训练符号经过串/并变换,形成n路并行的符号流;这n路并行的符号流被送入n个空时网格编码器。每个空时网格编码器同时输出 2路符号信息:T1i(t)和T2i(t)(i=1,2,……n;i代表第i路编码器输出)。n个T1i(t)和T2i(t)分别经过傅立叶逆变换,加上循环前缀后形成另外两个OFDM码元。然后按照图2的帧格式分别进行打包,打包后的数据经过数模变换形成s1(t)和s2(t),分别同时通过第1个发射天线、第2个发射天线发送出去。
采用图2
[1] [2] [3]
预编码的反馈方式的仿真 篇3
预编码技术是指接收端在已知信道状态信息的情况下, 通过在发送端对信号做一个预先的处理, 以方便接收端进行信号检测。在发射端利用信道状态信息对发射信号做预处理来减小系统误码率、提系统吞吐量的方法。利用信道信息不仅可以对发射功率进行注水, 使信道达到最大传输容量, 还可以对利用信道信息进行对信源预编码。
预编码技术用于下行多用户MIMO信道, 即多天线广播信道, 多天线广播信道系统由一个基站和K个接收端组成。由于多天线广播信道中多个接收终端之间无法实现信息共享, 使得终端之间无法协同进行信号检测。为了实现多用户在同一时域和频域上进行通信, 必须在基站发送端通过预编码进行信号处理, 抑制空间上的多用户干扰, 使得每个用户可以区分自己的信号, 实现多用户通信。
反馈的方式有标量量化反馈、矢量量化反馈、基于码本的反馈, 等等。对于不同的反馈算法, 对预编码的性能会产生不同的影响, 本文主要讨论基于码本的反馈研究及仿真。
2 基于码本的预编码反馈方式
基于码本的反馈是指先定义一个发送端和接收端都知道的预编码矩阵集—— 即为码本, 在移动终端从码本里选出最适合的矩阵之后, 仅需将该矩阵在码本里的序号索引 (PMI) 反馈回发送端。
如图1所示, 在基于码本的预编码方式中Nt, 接收端不需要把信道矩阵H反馈给发射端, 而是在接收端根据信道估计得到的信道矩阵H按照一定的规则从包含多个预编码矩阵的预编码码本中选择出预编码矩阵, 并通过反馈信道把此预编码矩阵的码本号反馈给发射端, 由于发射端知道码本号对应的预编码矩阵, 这样既能保证系统的性能, 又能节约反馈带宽。
码本反馈的基本思想是将L=2B个代表不同波束方向码字分别放置在收发两端, 接收端根据获得的信道信息在L个码字中选择最佳码字, 并将代表这个码字在码本中位置的信息以B个比特的二进制形式反馈回发射端, 发射端从预存的码本中取出这个位置上的码字进行预编码。有限反馈预编码思想其实是将空间分割成B个子空间, 根据选码准则选出码字, 接收端通过反馈的这个码字信息来告知发射端当前信道处于哪个区域, 来完成预编码。基于码本的反馈涉及到两个方面的问题:一是如何设计码本;二是按照什么样的准则从码本中选择预编码矩阵。相对基站知道完美的信道状态信息相比, 反馈的有限性或多或少会使系统的总体性能变差, 比如说误码率、容量等, 所以码本设计的好坏影响着有限反馈系统的性能。本节将简要介绍两种经典的码本:离散傅里叶变换码本和格拉斯曼码本。
2.1 离散傅里叶变换码本
离散傅里叶变换码本, 简称DFT码本, 将信号的时域采样变换变换为其离散时间傅里叶变换的频域采样。其变换两端的序列是有限长的, 而实际上这两组序列都应该被认为是离散周期信号的主值序列。有限长的离散信号做离散傅里叶变换也应当将其看做其周期延拓。
构成DFT码本的码字均为酉矩阵:表示码本W里第i个酉矩阵, 它满足
在发送天线数目为Nt的M I MO系统中, 生成尺寸为L离散傅里叶变换码本的方法为生成LNt×LNt的离散傅里叶变换方阵, 方阵中的元素为
式中, P (m , n) 是矩阵P的第m行第n列的元素。离散傅里叶变换码本为Nt×Nt的矩阵。截取此离散傅里叶变换方阵的前Nt行, 这个Nt行矩阵可以写成
式中, C为Nt×LNt矩阵。最后在C中取Nt个列向量组成离散傅里叶变换码本, 其中第i个酉矩阵为
从码本中选择预编码矩阵的准则大体可以分为两类方式:一种是基于性能指标的选择;另一种是基于量化的选择。性能指标包括总的吞吐量、信干噪比、误帧率等, 收端根据信道矩阵选择能够最大化实现上述某种性能的预编码矩阵。而基于量化准则的选择则需要对信道矩阵进行奇异值分解, 然后在码本中选择与右奇异矩阵均方误差最小的矩阵作为选择使用的预编码矩阵。
2.2 格拉斯曼码本
格拉斯曼码本设计是一种典型的预编码矩阵量化算法, 其基本思想是将码本设计问题转化成格拉斯曼子空间投影问题。基于格拉斯曼空间装箱的码本设计中, 是典型的数学最优化问题。格拉斯曼空间G (m , n) 指所有m维欧氏空间Em的维子空间的集合。格拉斯曼空间装箱问题为当M一定时, 在Em中找到含从M个n维子空间的集合, 使其是这个格拉斯曼空间的最佳近似, 即要确保这个集合中任两条线间距离的最小值最大化。
格拉斯曼线性封装是一维空间G (m , 1) 中关于最优化线包的问题。当发送天线数为Nt时, m=Nt。在Em中找出M条直线的集合, 使得集合中任意两条直线的最小距离最大。Em中找出M条直线的集合为
式中, vi为Em中的一个向量, 且|vi| =1。对应了Em中的一条直线。最大化码本中任意两条直线的最小距离为d (vi, vj) , 此处两条直线的距离定义为两直线之间的夹角的正弦值, 即
上述设计准则等价为在Em中找到一组向量使得码本V具有最大的δ (V) 为
根据以上准则, 可以利用数学中线性封装得到具有任意发送天线数Nt和M个向量数的Nt×M维的格拉斯曼码本。
在实际系统中, 令格拉斯曼码本的预编码矩阵为P, P为Nt×M矩阵。利用信道矩阵H对格拉斯曼码本进行遍历
再对遍历结果进行奇异值分解
式中, U为酉矩阵;Λ为对角矩阵, 在Λ的对角元素中找出最小奇异值。遍历所有矩阵后, 在得到的所有最小奇异值找出最大的值。含有最大值的最小奇异值的码本为最佳码本, 最后只需反馈其码本序号到发送端。
3 基于MATLAB的仿真分析
3.1 仿真框图
如图2所示, 基于码本反馈将实际信道量与码本遍历, 经过SVD分解找出最大的最小奇异值, 再把最大的最小奇异值的码本序号分别反馈到发送端和前馈到接收端, 接收端再利用最大的最小奇异值进行编码和解码。
3.2 仿真结果分析
设发射天线数Nt= 4, 接收天线数Nr= 4的瑞利衰落信道下发送40, 000个信源序列, 调制方式为QPSK , 通过T H P进行预编码。接收端都是采用MMSE接收机算法来实现。在7 bit离散傅里叶变换码本反馈和7bit格拉斯曼码本的MIMO系统进行预编码, 性噪比在-6dB到14dB的的情况下的误码率进行仿真分析。
图3中, 横坐标为信噪比, 纵坐标为误码率。其中, 格拉斯曼码本反馈的系统的误码率用带圈的线表示, 用离散傅里叶变换码本反馈的系统的误码率用带方格的线表示。可见, 在相同信噪比的情况下用离散傅里叶变换码本反馈的系统的误码率明显高于用格拉斯曼码本反馈的系统。总之, 格拉斯曼码本性能明显好于离散傅里叶变换码本的性能。
4 结束语
本文主要对基于码本的预编码的反馈方式进行了研究, 对预编码的反馈的背景进行了介绍, 重点论述了预编码的反馈方法, 包括离散傅里叶变换码本反馈和格拉斯曼码本反馈。最后用Matlab仿真了这两种反馈方式对预编码性能的影响, 得到了以下结论:格拉斯曼码本反馈的性能要好于离散傅里叶变换码本反馈的性能。但是格拉斯曼码本的设计却比离散傅里叶变换码本的设计要复杂。
综上所述, 预编码的反馈只能反馈有限的信息量, 两种经典的反馈方式可以达到理想的性能。目前, 预编码的反馈方式的研究是在这两种经典的反馈方式的基础上找到系统性能更好、反馈量更低、设计实现更简单的反馈方式。预编码的反馈方式的研究仍然是MIMO预编码技术的一项重要课题。
摘要:本文主要对预编码的反馈方式进行研究。首先介绍了预编码技术, 然后分别对离散傅里叶变换码本反馈法和格拉斯曼码本反馈方式进行介绍和分析。最后在Matlab上对系统误码率进行仿真, 比较不同反馈方式对于预编码性能的影响。格拉斯曼码本反馈法的性能好于离散傅里叶变换码本的性能, 但是格拉斯曼码本反馈更复杂。
关键词:多输入多输出,信道状态信息,预编码,码本
参考文献
[1]张玉艳, 翠波.移动通信[M].北京:人民邮电出版社, 2010:1-6
[2]魏红, 游思琴.移动通信技术与系统应用[M].北京:人民邮电出版社, 2010:1-5
[3]Tolga M.Duman, Ali Ghrayeb著.艾渤, 唐世刚译.MIMO通信系统编码[M].北京:电子工业出版社, 2007:5-14, 32-52.
[4]肖扬.MIMO无线通信系统[M].北京:人民邮电出版社, 2009:14-31.
[5]邱玲, 许杰等.多用户、多小区MIMO通信技术[M].北京:人民邮电出版社, 2011:49-57, 117-133
[6]包婷婷.MIMO系统有限反馈预编码技术研究[D].南京邮电大学, 2010
[7]王选朝.MIMO系统的预编技术研究[D].上海师范大学, 2011
[8]贾蓉.MIMO系统中的非线性预编码技术研究[D].电子科技大学, 2009
[9]吴琪.MIMO无线通信系统中的模代数非线性预编码技术研究[D].电子科技大学, 2008
仿真编码器 篇4
关键词:脉冲编码调制(PCM),仿真,MATLAB,误差
PCM(Pulse Code Modulation),脉冲编码调制,将连续变化的模拟信号进行抽样、量化和编码以产生二进制符号的过程,对信号进行数字化传输,提高通信系统的有效性和可靠性。其理论简单,应用成熟,因具有提供很高带宽,满足用户的大数据量的传输;噪声不积累;支持从2M至155M的各种速率;通过SDH设备进行网络传输;线路协议简单;线路使用费用便宜;接口丰富便于用户连接内部网络;可以承载更多的数据传输业务等优点。目前脉冲编码调制在通信、微波接力通信及同轴电缆等方面都获得广泛的应用。下面,我们将通过MATLAB_R2014a软件对脉冲编码调制进行仿真,并分析其误差。
1 抽样的MATLAB仿真
脉冲编码调制抽样的MATLAB程序设计步骤:
1)确定话音信号为模拟信号;
2)根据输入的话音信号,选择抽样频率,对原始话音信号进行抽样;
3)编写程序,画出其抽样图形如图1所示。
图是幅值为、角频率为的正弦信号,抽样周期为,采取的抽样频率,原始信号的频率为,远大于原始信号最大频率的2倍,满足奈奎斯特抽样定理,抽样后的信号包含原始信号的全部信息,故解调时可以恢复信号。
2 量化的MATLAB仿真及误差分析
模拟信号抽样后变成时间上离散的信号,但仍然是模拟信号[2]。这个抽样信号必须经过量化才能称为数字信号。量化是将时域离散幅度连续的脉冲幅度调制信号(PAM)进行变换为幅度离散取值信号的过程,具体分为均匀量化和非均匀量化两种。
2.1 非均匀量化的MATLAB仿真及误差分析
1)确定话音信号为模拟信号;
2)根据均匀量化的原理设计均匀量化的算法程序;
3)选取量化电平分别为8和64,绘制量化波形如图2和3所示。
图2和图3是对幅值为1、角频率为1的原始信号的均匀量化,量化电平分别为8和64,从量化后(量化电平为8时)的信号可以明显地看出,该信号与原始信号相比,曲线不再那么平滑,量化误差较为明显,如果增大量化电平,取量化电平为64时,此时量化后的信号基本与原始信号重合,所以量化效果更好。但是均匀量化所需传输码组的长度较长,信道所需带宽较大,系统的有效性不好。量化信号与原始信号有一定的误差存在,即量化噪声。量化电平为8时,量化间隔为,量化误差曲线较为稀疏,而且量化误差很大。将量化电平提高到64,量化间隔为,量化误差曲线很密集,量化误差的最大值只有0.015左右。综合图2和图3可以看出:量化电平为64的量化曲线的量化误差明显小于量化电平为8的量化误差,所以随着量化电平的增大,量化效果越好。
2.2 非均匀量化的MATLAB仿真及误差分析
1)确定话音信号为模拟信号;2)根据分非均匀量化的原理设计算法程序;3)选取量化电平分别为8和64,绘制量化波形如图4和5所示。
图4和图5是对幅值为1、角频率为1的正弦信号进行非均匀量化仿真得到的量化波形。图4的量化电平为8,从图中可以看出,得到的量化波形的误差很大,尤其是当原始信号的幅值变大时,量化间隔就越小,随之量化误差就越大;图5的量化电平为64,相比较于图4的量化效果要好得多,更为接近原始信号的波形。从图中看出,量化电平取8,量化间隔较大,量化误差高达0.5,此时量化效果不好;量化电平取64,一个周期内最大量化误差存在于原始信号的峰值部分,最大误差仅为0.075左右,误差很小,所以能够很好地对原始信号进行了量化。
可以得出结论:非均匀量化对于小信号的量化效果较好,幅值越大,误差越大,随着量化电平的增加,其量化效果越好。
3 PCM编码的MATLAB仿真
(1)确定话音信号为模拟信号;
(2)根据PCM编码原理设计编码的算法程序;
(3)分别取量化电平为8和64进行编码,并绘制编码后的码组,如图6和7所示。
图6和图7是量化电平分别为8和64的编码显示以及对应的信噪比。从图中可以看出,量化电平为8和64的量化信噪比分别为7.3951和24.2567,量化电平越大,量化信噪比越大,量化效果就越好。量化级数为8时,量化值的编码位数是3位二进制码;当量化级数增加为64时,其编码位数变为5位,对于语音信号的编码效果越好,代价就是增加编码位数,降低码元传输速率,系统的有效性也相应地随之有所降低。
4 PCM译码MATLAB仿真及误差分析
1)确定话音信号为模拟信号;
2)根据非均匀量化原理设计PCM编译码的算法程序;
3)绘制并比较原始信号和译码之后的波形如图8所示。
图8是采用13折线A率译码后恢复得到的信号波形。从图中可以看出,随着原始信号的幅值的增加,恢复出信号的最值部分会出现凹陷,这也验证了A律对于小信号的编码效果较好,对于较大信号则会出现失真的现象。非均匀编码对小信号有较好的量化效果,而且编码之后的位数比二进制少得多,故会使得编码位数的减少,从而降低信号的冗余度,进而增加通信系统的有效性。随着量化电平的增加,模拟信号转换为二进制所需的位数就越多,对模拟信号的量化效果也就越好,但是,为了保证通信系统的有效性,所以选取A律13折线的编码方式,编码效果好,又能够保证通信系统的有效性。
5 PCM通信系统抗噪性能仿真
1)确定话音信号为模拟信号;
2)对信号进行PCM编码,加入随机噪声(信噪比范围为-25d B-25d B),最后进行译码;
3)画出PCM系统的误码率,分析其抗噪性能。
图9是脉冲编码调制系统加高斯白噪声之后译码后统计得到的输出误码率[1]。从仿真图中可以看出,信噪比越大,误码率越来越低,与理论相符;尤其是当信噪比达到5d B时,误码率几乎为0。
6 结论
本文对脉冲编码调制系统的过程进行MATLAB仿真以及分析,以探究和验证脉冲编码调制的抽样、量化、编码和解码的过程,以及对于编码和解码误差的分析,完成了对通信系统性能的比较分析,验证了PCM系统数字传输的正确性,且仿真表明,通信系统的信噪比越高,系统的有效性就越好。
参考文献
[1]郭文彬,桑林.通信原理——基于MATLAB的计算机仿真[M].北京:北京邮电大学出版社,2006.
随机网络编码数据传输的仿真实现 篇5
网络编码技术[1,2]是由路由传输技术扩展而来的, 就路由传输技术来说, 中间节点只负责复制和转发接收到的信息, 而对于网络编码技术而言, 中间节点不仅具有直接复制和转发信息的功能, 还可以对接收到的信息进行编码后再进行转发。
采用网络编码技术实现数据传输的关键是构造网络编码方案。随机网络编码构造算法[3]由于事先不需要获知网络的全局拓扑知识, 也不需要事先确定节点各链路的编码向量, 从而具有较好的可扩展性和可实施性, 备受人们青睐。
在对网络编码进行教学与科研的过程中, 常常需要有实验环节或仿真计算, 可以采用自编模拟程序的方式[4], 但这种方式需要编制大量的程序, 同时存在不直观、不利于对实验结果进行分析和比较的缺点;文献[5]提出了一种基于Window套接字编程的网络编码仿真实现方法, 但只涉及最简单的有限域的异或运算, 也只能适应于最简单的“蝴蝶网络”;还有一些学者选择NS和OPNET等仿真软件来实现[6], 但这些软件的优势在于对高层协议的支持, 而要实现网络编码数据传输的模拟, 必须对其进行扩展, 由于这些软件使用起来较为复杂, 扩展具有一定的难度;此外, 还可以采用硬件的方法构造实验平台[7,8], 但必须采用特殊的硬件, 实现起来较麻烦。本文提出了一种简便的随机网络编码数据传输的仿真实现方法, 它不需要特定的软、硬件支持, 在一般的实验室内就可以实现, 同时又不同于软件仿真, 具有一定的直观性。在局域网内选取相互连接的若干终端来模拟网络节点, 以套接字 (IP地址+端口号) 代表节点间的有向链路, 采用UDP数据传输来模拟有向链路的数据流动, 从而实现了对单源组播网络的模拟。在节点上运用Java编程[9]实现了有限域的算术运算, 根据网络编码数据传输策略, 各节点采用Java套接字编程方法实现数据的接收与发送, 中间节点调用有限域的算术运算方法对输出信道进行编码, 形成了编码数据包, 宿点接收数据包, 调用有限域的算术运算方法, 对接收的数据进行解码而恢复出源点播出的信息。采用Java编程实现各部分的功能, 形成了一个完整的软件系统, 各节点只需要依次运行该系统并输入相关的信息便可以工作, 各节点的相互作用便实现随机网络编码的数据传输。仿真结果表明提出的方法是有效的, 且该方法具有软硬件要求低、操作方便的特点, 并易于掌握和实现。提出的方法适用于在一般的单源组播网络上实现随机网络编码的数据传输仿真, 为网络编码的实验环节与仿真计算提供了有效的方法。
1 随机网络编码数据传输策略
一个单源组播网络可以用一个有向无环图表示, 其中有一个源点、若干宿点以及若干中间节点, 节点间存在有向链路, 为了描述方便, 各链路的容量均为1个单位, 称之为信道。源点产生数据, 各节点采用网络编码技术进行数据传输, 宿点接收信息后通过解码恢复出源点产生的信息。
对于一个节点v, 记In (v) 为输入信道集, Out (v) 为输出信道集。
在一个单源组播网络上采用随机网络编码方法实现数据传输, 设源点至宿点集的组播容量为C, 选定正整数n (n≤C) 作为组播率, 则在每一代 (或称每一轮) , 源点产生n个数据包, 记为 (X1, X2, …, Xn) , 每一个数据包对应一个全局编码向量。
源点产生的数据包对应的全局编码向量是一个n维向量, 每一个分量是有限域F上的一个字符, 记第i个数据包对应的全局编码向量为Vi, Vi为单位向量, 它除了第i个分量为1外, 其余分量全为0。
一般来说, 对于源点或中间节点, 设其接收到 (若为中间节点) 或产生 (若为源点) 的数据包为Y1, Y2, …, Yp, 当节点为源点时, 则p=n, 当节点为中间节点v时, p=|In (v) |。各个数据包对应的全局编码向量为 (T1, T2, …, Tp) , 每个全局编码向量也是n维的。若该节点需要传输信息至m (m=|Out (v) |) 条输出信道, 则对于第i (1≤i≤m) 条输出信道, 节点在有限域F上分别随机产生p个随机数 (xi, 1, xi, 2, ..., xi, p) , 分别与 (Y1, Y2, …, Yp) 相对应。节点为第i条输出信道进行编码, 产生输出数据包为。
节点向第i条输出信道发送全局编码向量TOi和数据包Zi, 记为TOi||Zi。
对于宿点, 至少需要从n条输入信道中接收数据包和相应的全局编码向量, 利用全局编码向量和数据包构成一个n维线性方程组, 采用高斯消元法求解线性方程组就可以恢复出源点播出的数据包 (X1, X2, …, Xn) 。
2 有限域的算术运算
网络编码操作在有限域上, 在编码过程中, 涉及到有限域字符之间的加、乘运算, 在解码过程中, 涉及到有限域字符之间的加、减 (有限域的字符的相减运算与相加运算一致) 、乘、除运算, 因此, 在实现随机网络编码数据传输过程, 节点必须能实现有限域的算术运算[10]。
选定有限域的阶和相应的本源多项式, 本文选定有限域为GF (28) , 相应的本原多项式为x8+x4+x3+x+1, 从而本文中有限域中的字符为8位二进制数, 可以用一个字节 (byte) 表示。根据有限域的运算规则, 两个字符的算术运算的结果仍为8位二进制数。运用Java编程构造一个类, 记为GF.class, 类中以静态方法给出了有限域GF (28) 中两个字符的加、乘、除运算, 三个主要方法如下:
节点在进行编码或解码时, 如要实现有限域的运算, 只需把GF.class类包含进来, 同时在需要实现相应运算的地方调用该类中相应的静态方法即可。
3 随机网络编码数据传输技术的仿真实现
本文以一个典型的单源组播网络为例 (如图1所示) 来说明如何在实验室构造随机网络编码数据传输的仿真实现模型, 只要根据单源组播网络拓扑的节点和链路情况对模型的参数进行修改, 构造出的模型也适合一般的单源组播网络。
3.1 单源组播网络的仿真
在图1所示的单源组播网络中, 节点S是数据源点, 节点1、节点2、节点3、节点4、节点5均为中间节点, 节点T1和T2为宿点, 源点产生信息经过网络编码后由输出信道传输至网络, 中间结点把接收到信息进行网络编码后再由其输出信道进行转发, 宿点通过输入信道接收数据包后, 由各输入信道的全局编码向量和数据包的内容构造线性方程组, 通过求解线性方程组恢复出源点产生的信息。
为了对图1的网络拓扑进行模拟, 在局域网内选择8个网络终端, 它们同处在一个C类地址 (172.16.101) 的网段内, 各网络终端采用集线器或交换机相连接, 其IP地址的分配如图2所示。
用网络终端来代表单源组播网络的节点, 用网络套接字 (IP地址+端口号) 来代表节点间的有向信道, 采用UDP数据通信来表示有向信道上的数据传输, 并运用Java套接字编程来实现。由图1可以看出, 源点S至宿点集的组播容量为3, 因此选定整数3为组播率, 源点每一代产生3个数据包, 相当于源点分别从3条虚拟单位信道中接收到3个数据包。
有向信道与套接字的对应关系如图3所示。在图3中, 单源组播网络的每一条有向信道对应一个套接字, 例如:源点至节点1的单位有向信道与套接字 (172.16.101.11:10011) 对应, 从而源点向节点1传输数据相当于源点向该套接字发送一个UDP数据包;同理, 节点2至节点5的有向信道与套接字 (172.16.101.15:1022) 对应, 节点2向节点5发送数据相当于节点2向该套接字发送一个UDP数据包。因此, 采用套接字来模拟有向信道, 就可以在局域网内实现对图1的单源组播网络的仿真。
3.2 源点S的工作流程
源点需要确定每代产生的数据包个数n, 也称之为组播率;同时需要确定输出信道数, 每一个输出数据包对应一条输出信道, 而每一条输出信道与一个套接字相联系, 因此需要确定每个输出数据包送往的IP地址和端口号。当以上工作完成后, 把每代传输的数据等成n等分, 每一等分构成一个输入数据包, 本文中采用人工的办法, 为每一个数据包输入等长的数据内容。然后为每一个输出数据包产生一个局部编码向量, 并求出全局编码向量和编码后的数据包, 再通过Java套接字编程把编码后的数据包传输至指定的套接字。
源点的工作主要包括以下5个部分内容:
(1) 键入组播率和输出信道数;
(2) 键入输出信道对应的套接字;
(3) 输入每一代要传输的数据;
(4) 为每一输出信道运用随机网络编码方法生成数据编码并生成相应的全局网络编码向量, 形成数据包;
(5) 根据给定的套接字发送UDP数据包。
运行我们开发的系统, 源点的运行界面如图4和图5所示, 通过图4的界面, 可以输入源点的组播率 (输入信道数) , 源点的输出信道数以及各输出信道对应的套接字;通过图5的界面输入每一代发送的数据包内容, 在本例中, 源点每一代发送3个数据包, 3个数据包应等长。
3.3 中间节点的工作流程
中间节点分别从上游节点接收数据, 然后分别转发至下游节点, 根据网络拓扑确定输入信道数, 以及每一输入信道对应的端口号;还需要确定输出信道数, 以及每输出信道对应的套接字。例如, 对于节点5来说, 其输入信道数为4, 对应的端口号分别为10021, 10022, 10023, 10024。而输出信道数为2, 对应的套接字分别为 (172.16.101.10033) 和 (172.16.101.17:10041) 。
中间节点的工作流程如下:
(1) 键入输入信道数以及各信道对应的端口号;
(2) 键入输出信道数及各信道对应的套接字;
(3) 从各输入信道对应的端口中接收数据包;
(4) 根据接收到的数据包, 采用随机网络编码方法为每一输出信道产生输出数据包;
(5) 根据给定的套接字发送UDP数据包。
中间节点的运行界面如图6所示, 通过这一界面, 可以输入中间节点的输入信道数以及每条输入信道对应的套接字, 由于每条输入信道的IP地址均为本机地址, 故只需输入相应的端口号;通过这一界面, 还需键入输出信道数以及每条输出信道对应的套接字。图6是节点5的运行界面, 从中可以看出, 节点的输入信道有4条, 对应的端口号分别为:10021、10022、10023、10024;而输出信道有2条, 对应的套接字为: (172.16.101.16:10033) 、 (172.16.101.17:10041) 。
3.4 宿点的工作流程
宿点需要从输入信道接收数据, 然后进行解码运算, 再恢复出源点播出的信息, 宿点的工作过程如下:
(1) 键入输入信道数以及各信道对应的端口号;
(2) 从各输入信道对应的端口中接收数据包;
(3) 根据接收到的数据包, 析出每一数据包的全局编码向量, 形成一个n维线性方程组, 通过高斯消元法, 求解该线性方程组, 恢复出源点播出的信息。
宿点的运行界面如图7和图8所示, 其中通过图7的界面输入宿点的输入信道的信息, 而图8的界面显示宿点恢复出源点产生的信息。
3.5 程序的执行
当上述各节的程序录入后, 则必须按一定的顺序运行各节点的程序, 即按T1, T2, 5, 4, 3, 2, 1, S的顺序启动程序运行, 当节点S的程序运行后, 每一代输入三个数据包的数据内容, 见图5, 然后点击“发送数据”按钮, 于是宿点T1和T2收到源点S播出的信息, 见图8。
4 结论
在实验室内构造出了一个随机网络编码数据传输的仿真实现模型, 在局域网内选择若干相互连接的网络终端代表网络节点, 以套接字代表节点间的有向信道, 以UDP数据通信表示有向信道的数据传输, 从而对单源组播网络进行了仿真, 采用Java编程实现了有限域的算术运算, 根据随机网络编码数据传输的算法分别编写源点、中间节点、宿点的编码和解码程序, 形成了一个完整的软件系统, 每一节点运行该系统并输入相应的信息, 各节点相互作用便可以实现随机线性网络编码的数据传输。
本文给出了一个实例, 仿真结果表明了方法的有效性, 只要根据单源组播网络的链路情况修改本模型的参数, 模型可以应用于一般的单源组播网络, 给出的方法具有软硬件要求低、操作方便的特点, 并易于掌握和实现。提出的方法为网络编码的实验环节与仿真计算提供了有效的方法。
参考文献
[1]陶少国, 黄佳庆, 杨宗凯等.网络编码研究综述[J].小型微型计算机系统, 2008, 29 (4) :583-592.
[2]范宇.基于RS码的网络编码层设计[J].软件, 2013, 34 (5) :92-95.
[3]Ho T, Medard M, Koetter R, et al.A random linear network coding approach to multicast[J].IEEE Transactions on Information Theory, 2006, 52 (10) :4413-4430.
[4]蒲保兴, 王伟平.线性网络编码运算代价的估算与分析[J].通信学报, 2011, 32 (5) :47-55.
[5]沈明, 蒲保兴, 唐彬.基于Windows套接字编程的网络编码仿真实现[J].软件, 2012, 33[2]:11-14.
[6]李令雄, 洪江守, 龙冬阳.NS仿真器的一个网络编码扩展[J].计算机科学, 2009, 36 (7) :71-73.
[7]Gibb G, Lockwood J, Naous J et al.Net FPGA-an open platform for teaching how to build gigabit-rate network switches and routers[J].IEEE Transactions on Education, 2008, 51 (3) :364–369.
[8]张明龙, 李挥, 李亦宁等.基于网络编码多信源组播通信系统[J].电子产品世界, 2011.3:23-25.
[9]梁宏涛.基于Java的设备故障诊断系统的设计与应用[J].软件, 2013, 34 (7) :5-6.
频谱编码超分辨率成像分析与仿真 篇6
关键词:频谱编码,超分辨率,傅里叶透镜,码分复用
0 引言
随着遥感图像分辨率需求的不断提高以及遥感卫星朝着小型化方向发展,轻小型和高分辨率光学遥感器已经成为世界各国航天界在空间遥感领域研究的热点问题。但由于CCD加工工艺的瓶颈限制,寻找一种能够利用现有低分辨率的CCD来获得高分辨率的数字图像的方法更具有迫切性。超分辨率成像技术就是在这些需求背景下应运而生的,它是一种非常经济、非常有效的实现遥感卫星高分辨率和小型化的技术途径[1]。
1 频谱编码超分辨率原理
2005年,以色列Tel Aviv大学的Jonathan Solomon等人率先提出将CDMA(码分复用)技术应用于超分辨率成像中。这种方法同样不需要任何运动部件[2]。它基于CDMA技术,通过在透镜之前放置编码板,对频谱的重叠部分采用不同的编码,这些编码相互正交,且编码必须在目标的傅里叶平面上。如图1所示[3]。
在很多成像系统中,CCD像元的大小限制了系统的空间分辨率。这种CCD欠采样过程会引起频谱混叠,是由于在频域中相当于将输入的信号频谱乘上一个光栅,其光栅常数为fs,结果是输入信号带宽在采样频率的各个整数倍处进行复制。由于输入的信号带宽较大,所以基频和左右相邻的复制频谱相混叠,如图2所示。因此,数字处理系统进行重建时,可有效利用的基频信息已经大大减少。为了解决目前的图像重建系统存在的问题,须遏制该过程中欠采样引起的频率混叠。现在采用的新方法是根据Shannon提出的优化信息传输的原理,对信号进行适当地编码来抵抗信道内的干扰[3,4]。
利用频谱编码技术来优化采样系统的方法是在成像系统中插入一块频谱编码板,如图1所示,根据CCD的内部结构在光学系统中对输入图像信息提前编码,致使信息经过CCD时,不受其影响而产生混叠,之后经计算机解码重建原图像。
2 频谱编码板设计
由于要在信号的频域面对其进行CDMA编码,所以频谱编码板必须安装在系统的频域面上。故而首先要确定系统的频域面的位置。
以一个普通的傅里叶透镜成像系统为例,如图3所示。
当输入平面位于透镜前,计算光源共轭面上场分布为[5]
当输入面紧贴透镜,即d0(28)0时,上述公式有:
在这种情况下,衍射物体的复振幅透过率与观察面上的场分布,虽不是准确的傅里叶变换关系,但只相差一个二次相位因子。
所以,将频谱编码板紧贴透镜安置,则其编码板平面与CCD探测器平面互为非准确的傅里叶变换关系。但由于不考虑图像初始相位的关系,所以二次相位因子可以忽略。对于一个由多个透镜组成的傅里叶透镜系统而言,编码板应安放在光学系统的入射光瞳处。
实际上,在航空航天遥感应用中,目标距离远大于遥感相机的焦距,所以有f≈q。所以有:
根据掩码板平面和探测器平面的傅里叶变换关系可得到掩码板单元的尺寸大小:
其中s为探测器单元间距。
要实现超分辨率因子为c的频谱编码,则掩码板单元尺寸应为
要使经过编码的信号不发生混叠,那么编码应为两两正交的非极性码。以一维图像为例,也就是使rank(A)=c。其中A=[A1,A2,…,Ac],c为超分辨率因子。A1、A2、…、Ac分别为c种两两正交的0、1编码。以一维超分辨率因子为c=2的编码为例,可以有:A1=[0,1]T,A2=[1,0]T。此时,掩码板的能量利用率为50%。
实际上,可以有能量利用率更高的正交编码,如:A1=[1,1]T,A2=[1,0]T,此时编码模板的能量利用率为75%。
如图4为能量利用率为75%的二维正交编码图,其超分辨率因子为2。
3 频谱编码超分辨率仿真
为证明用频谱编码法超越CCD分辨率成像的可行性,课题组利用黑白相间的图像做了一维和二维频谱编码法的计算机模拟仿真。如图5所示,假设CCD的采样频率小于两倍的图像截止频率ν<2νimage,则无法满足Nyquist采样定理。因此CCD直接获取的图像分辨率明显下降。而原图经过一维的频谱编码后,再经过复原后获得的图像可完全恢复至原有的图像分辨率。
当CCD采样频谱不满足采样定理时,其图像频谱就会产生混叠,从而造成图像频谱的失真,最终导致图像的分辨率下降[6]。如图6所示。
而采用频谱编码法,不同频域的信息经过不同的正交编码,即使同时传输也不会发生混叠。而获取图像信息后,经过傅里叶变换到频域,再经过相应的解码,其频谱信息即可恢复。如图7所示。
二维的频谱编码法并没有原理性的差别,只是其编码设计较一维编码而言更加复杂,编码板制作更加困难。其仿真结果如图8所示[7]。
4 影响因素分析
在理想情况下,一维和二维的频谱编码超分辨率成像都可几乎无失真的实现原分辨率图像的复原。但实际情况并非都如此。
一方面,编码导致光通量下降。针对这点,可采取两种方法:一是如前文所说采用能量利用率更高的正交编码方式;二是由于实际图像的能量都主要集中在低频部分,在频谱面低频区域设置感兴趣区域ROI,对ROI区域不进行编码,而只对其它区域(高频部分)进行编码。
另一方面,由于CCD像元并不是理想的单位脉冲,而是有一定尺寸的单元。假设CCD单元间距为s,有效尺寸为d,则实际CCD频谱应如图9所示。
实际上在像元尺寸和像元间距确定的情况下,sinc(Δv)应为已知的;所以解码时应考虑各个编码部分的权数sinc(Δv)。即可消除CCD傅里叶变换受像元尺寸的影响。如图7中可见,其恢复图像黑色方块中有明显的白点,也是由于其系数误差影响,在图像复原时加上权数sinc(Δv),即可消除其影响了。
5 结论
基于频谱编码法的超分辨率图像获取技术突破传统光学相机依赖于增大系统焦距和孔径来提高空间分辨率的方法,在不增加系统焦距和孔径的条件下,理论上可使CCD相机的几何分辨率提高2倍以上[8]。通过理论研究和仿真,对频谱编码板进行了简单设计,分析了影响复原效果的两种因素,并给出了简要的解决方案。
参考文献
[1]鲜海滢,傅志中,万群,等.基于分块的自适应超分辨率算法[J].光电工程,2011,38(9):119-123.XIAN Hai-ying,FU Zhi-zhong,WAN Qun,et al.Block-based Adaptive Super Resolution Algorithm[J].Opto-Electronic Engineering,2011,38(9):119-123.
[2]Zeev Zalevsky,Vicente Mico,Javier Garciab.Nanophotonics for optical super resolution from aninformation theoretical perspective:a review[J].Journal of Nanophotonics(S1934-2608),2009,3:032502-1-032502-18.
[3]Jonathan Solomon,Zeev Zalevsky,David Mendlovic.Geometric superresolution by code division multiplexing[J].Applied Optics(S1559-128X),2005,44(1):32-40.
[4]David Mendlovic,Adolf W Lohmann,Naim Konforti,et al.One-dimensional superresolution optical system for temporally restricted objects[J].Applied Optics(S1559-128X),1997,36(11):2353-2359.
[5]苏显渝,李继陶.信息光学[M].北京:科学出版社,1999:49-53.SU Xian-yu,LI Ji-tao.Information optics[M].北京:Science Press,1999:49-53.
[6]赵秀影,苏耘,王敬梅,等.一种频率域解混叠的CCD图像超分辨重建方法[J].计算机应用研究,2010,27(1):368-373.ZHAO Xiu-ying,SU Yun,WANG Jing-mei,et al.Kind of reconstruction method of CCD aliasing image in frequency domain[J].Application Research of Computers,2010,27(1):368-373.
[7]David Mendlovic,Irena Kiryuschev,Zeev Zalevsky,et al.Two-dimensional superresolution optical system for temporally restricted objects[J].Applied Optics(S1559-128X),1997,36(26):6687-6691.
仿真编码器 篇7
由于视频本身具有数据量巨大、占用网络带宽等特点, 对网络通信系统的有限带宽、存储空间以及计算机的计算能力都提出了更高要求。而无线网络环境下, 通信的时延变化频繁, 丢包率高, 易受干扰等特点, 对视频传输的可靠性提出了更高的挑战。
视频必须经过编码才能在网络上进行有效的传输, 视频图像编解码标准也比较繁杂, 应用广泛的有国际标准化组织的MPEG、国际电信联盟电信部ITU-T的H.261、H.263、H.264, 以及MDC、AVC等。H.264作为蓝光光盘的编码标准, 其拥有的高数据压缩比, 高网络适应能力等特点, 而日益流行起来。
目前的网络仿真器, 如NS2、OPNET等, NS2以其良好结构的仿真器, 公开的源代码等诸多优点, 在研究领域得到广泛使用。而NS2虽然在内核中提供了FTP、CBR、Telnet、Web等传统网络应用的流量发生器, 但却没有提供H.264编码视频的视频流量发生器。
本文在SVEF框架 (可伸缩视频流评估框架) 的基础上, 结合NS2平台, 提出了一种利用NS2建立无线网络中研究H.264编码视频传输仿真平台的方法, 扩展了NS2流量发生器模块, 通过建立模型实例, 对H.264视频流在无线网络环境下传输进行了仿真。仿真实验表明, 我们提出的H.264视频流传输仿真方法是可行有效的。
1 H.264视频编码特性
H.264标准压缩系统由视频编码层 (VCL) 和网络抽象层 (NAL) 两部分组成。VCL中包括编码器与解码器, 主要功能是视频数据压缩编码和解码, 它包括变换编码、运动补偿、熵编码等压缩单元, 同时也可以传输按当前的网络情况调整的编码参数。网络抽象则用于为视频编码层提供一个与网络无关的统一接口, 它负责对视频数据进行封装打包后使其在网络中传送, 它采用统一的数据格式, 包括单个字节的包头信息、多个字节的视频数据与组帧、逻辑信道信令、定时信息、序列结束信号等。包头中包含存储标志和类型标志。存储标志用于指示当前数据不属于被参考的帧。类型标志用于指示图像数据的类型。
2 NS2中H.264视频流量仿真模块扩展方法
2.1 H.264视频流量仿真原理及模型
由于NS2并没有H.264视频流量发生器, 同时, H.264编码的视频流量并不能简单的定义为UDP或者CBR流量。因为H.264的编码特性, 其码率具有较强的突发性和随机性, 在仿真的时候, 为了达到与实际近似的仿真效果, 我们以真实有效的原始视频文件作为信源, 提取视频的关键帧和数据量等信息, 以此作为流量发生器的输入。
(1) 基于SVEF框架, 对原始YUV视频进行编码, 然后用H.264解码器生成原始视频流文件。在解码trace文件中, 要记录提取帧序号、帧类型、时间戳、帧大小等信息, 以作为NS2流量生成的原始输入。
(2) 在原始视频流trace文件中插入NAL单元所对应帧号。将原始视频流trace文件转换成可用于NS2的发送流量trace文件。
(3) 编写NS2仿真脚本, 在NS2中进行仿真。NS2中, 一个Source代理, 用于转换NS2发送trace文件并生成相应的数据包。在接收端, 一个Sink的代理被用于接受SVC数据包, 并记录相关信息, 如接收时间, 包的大小, 帧序号等。
(4) 对仿真结果进行评估。Sink代理生成的接收流量trace文件可以计算数据包级别的端到端的延时, 或者计算丢包率, 也可以用来生成SVEF所需要的文件格式。
(5) 还原H.264视频文件。用NAL单元滤波器生成NAL单元trace文件。这个过程中, 太迟到达的帧和那些不可被编码的帧将被去除。接下来, NAL单元trace文件可以用来还原H.264视频文件。最终, 我们可以将接收并处理过的H.264视频文件转换成YUV视频进行播放。为了比较PSNR, 我们还需要通过拷贝前帧来弥补丢失的帧。丢失的帧可以根据NAL单元跟踪文件中的帧序号识别。
3 NAL单元头格式定义
通过UDP协议传输视频流时, 需要定义NAL单元头格式。NAL单元头主要包含三个参数, Lid、Tid和Qid。Lid是基础层ID, 主要用来表示这一层属于哪一个NAL单元, Tid是时间分级ID, 用来控制帧率。Qid是品质层ID, 用来控制可以被调节品质的视频子流。
4 NS2视频流量生成模块
在SVEF框架的解码器产生的trace文件中包括了其实际的地址, 数据长度, Tid序号, 包类型, 帧序号以及是否可被丢等信息。而ns2发送trace文件中需要有发送的时间, 帧的大小, Tid序号, 和对应的帧序号。我们需要对其进行一定的处理, 使需要的数据和字段相对应, 并将帧序号插入到ns2发送trace文件中, 以便用接收的trace文件还原视频。
5 接收视频修补模块
PSNR是最普遍, 最广泛使用的评鉴画质的客观量测法, 因此我们采用PSNR来评估接收到视频的质量, 需要对接收到的视频进行修补, 对丢失的帧, 以其完整的前一帧填补, 才能计算出相应的PSNR。我们改进了修补程序, 使其可以对任意分辨率的视频进行修补。
6 仿真实例
6.1 仿真环境
仿真环境基于ns2.35, 网络中存在三个无线节点, 节点0以固定码率0.2Mbps向节点1传输H.264视频流量, 以固定码率0.3Mbps向节点2传输FTP流量。
分别以内容相同, 时间长为10秒, 帧率为30帧/秒, 分辨率为VGA、CIF的两段视频作为ns2流量生成器的输入源, 同时分别设置网络MAC层协议为802.11和802.11e, 以上文提到的方法进行仿真实验。
6.2 测试结果与分析
测试得到的两种分辨率H.264视频在802.11和802.11e的网络环境下的端到端延时 (见图1) 和丢包率 (见表2) 。
从图1中, 我们可以看出传输cif分辨率时, 在802.11e协议下, 延时具有较大波动, 这主要是因为H.264视频具有较高的突发性, 在其I帧传输时, 因其I帧所含信息量较大, 所以会造成较高延时。同时, 图1也反映出了802.11e虽然一定程度增加了延时, 却大幅降低了丢包率, 最大化的保留了I帧, 这也是重新打包视频的关键所在。图1中, 802.11e协议下, 延时也没有呈现出一定的规律性, 是因为VGA分辨率大幅增加了画面信息量, 在0.2Mbps的网络环境下, I帧因为数据量过大, 造成延时急剧升高, 最终大多被丢弃, 因此, 其延时并没有规律性的大幅波动。
图2反映出了, Cif视频在802.11协议和802.11e协议下传输后, 由于802.11e可以保留更多的I帧, 因此形成了更多的波峰, 最终合成的视频中, 其平均PSNR和画面表现也更为出色。Vga分辨率在802.11和802.11e协议下传输后计算的峰值信噪比比较相近, 由于我们设定的带宽为0.2Mbps, 无法适应Vga分辨率的高码率传输, 因此在802.11e协议下, 虽然其丢包率更低, 但是由于I帧同样大量丢失, 仍然无法还原出更多的画面, 最终造成了二者非常接近的PSNR。
7 结论
本文对ns2平台上的H.264视频传输仿真进行了探讨和分析, 以SVEF框架为基础, 完成了原始H.264视频流到ns2发送流量的转换, 使之可以产生ns2仿真可用的视频传输流量。同时改进了其视频修补模块, 使其可以对任意分辨率视频进行处理, 拓展了实验视频素材的选择, 以便更好地评估实验结果。最后通过仿真实例, 验证了VGA、CIF不同分辨率的视频在不同MAC协议下的表现, 对比证明了我们设计的仿真方案能够有效反映出不同场景下无线网络的H.264视频传输性能。
摘要:H.264编码的视频包含视频编码层和网络抽象层, 因其具有高压缩比、节省网络带宽等适合在不同网络上传输的特性, 被越来越多地应用在各类视频服务场景中。而ns2以其开源、扩展性好等特点, 也被广泛用于各类网络场景的仿真。我们设计并实现了H.264编码视频流量发生器, 并完善了对接收端接收视频进行处理的工作, 以便更好的评估仿真结果。最后通过实验, 对我们提出的视频传输仿真方案进行验证, 证明我们设计的仿真方案能够有效反映出不同场景下无线网络的H.264视频传输性能。摘要
关键词:H.264,无线传输,仿真,视频
参考文献
[1]陈亮, 张正华.基于日.264无线视频传输的码率控制算法研究及实现 (D) .扬州大学, 2012.
[2]周建利.基于H.264的视频传输技术研究 (D) .西安电子科技大学, 2012.
[3]陈正宇.基于NS-2的无线网络视频QoS平台的实现[J].电子设计工程, Vol 17No.10 2009 (10) .
[4]王明伟, 王奇, 杨洁, 林建中.基NS-2的视频流仿真方法研究[J].计算机技术与发展, 2010 (2) .
[5]Ke C H, Shieh C, Hwang W, etal.An evaluation framework frame from realistic simulations of MPEG video transmission[J].Journal of Information Science and Engineering, 2008, 24 (2) 425.
[6]梅旭, 周应权, 陈起.基于NS-2的QoS控制方法试验平台的仿真和实现[J].科学技术与工程, 2006, 6 (2) :216-219.
[7]江雍, 林其伟.一种基于Evalvid的H.264视频Qos评估系统的研究[J].电视技术, 2007 (10) .
仿真编码器 篇8
1974年,Massey提出编码调制[1](CM,Coded Modulation)的概念,其中心思想是将编码与调制结合起来实现系统的最优化设计,以提高数据传输系统的性能。高效编码调制与传统的将纠错编码与调制分离的技术相比,其最大的优越性就在于能够在既不展宽频带又不降低有效数据传输率的前提下,提高系统的性能。1982年,Ungerboeck提出网格编码调制 [2](TCM),通过二进制集合分割方法将二进制标签矢量映射到星座点上实现。但TCM除了好码的设计和搜索的复杂度过高以外,其结构本身存在部分交叠的信号星座集,在衰落信道下系统性能较差等缺点。多级编码调制[3](MLCM)的完整方案是H.Imai在1977年提出的,MLCM中使用多级的编码来保护信号点的每一个二进制向量元素,每一级编码器的码型选择是以欧氏距离最大化为依据的。在接收端,每个码字都经过多级译码,从最低级开始的,高级考虑前一级的译码结果。MLCM方案的最大优点在于:码率设计的可调性,可实现不等错误保护(UEP),分量码选择灵活,且易于使用信道容量规则,是Rayleigh衰落信道下有效地编码调制方案之一。
目前对MLCM的理论研究主要集中在以下三个方面。 第一,分量码的设计。MLCM各级的分量码可以选择BCH码,卷积码,LDPC码等,各级码率的设计主要使用信道容量规则[1]。第二,映射规则的选择。文献[4]指出,采用MASK调制方式,在AWGN信道下最佳的MLCM设计准则为信道容量规则加UP映射,在Rayleigh衰落信道下最佳设计准则为信道容量规则加BP映射。第三,译码算法的选择。目前常用的译码算法主要有多级译码[3](MSD)和多级并行译码[5](PDL)两种。MSD算法是一种准最佳译码方法,其译码过程是分阶段进行的,前一级的译码结果为后一级提供参考,提高信息传输的可靠性,但存在"错误传播"和译码时延高的问题;P.Schramm提出的PDL译码算法很好地解决了MSD算法的问题,其各级译码是独立完成的,各级译码器之间不存在关联,但会造成信息的丢失。
上面的两种译码算法都存在一定的缺陷,MSD算法性能较好但不易实现,PDL算法容易实现但会造成性能的下降。针对译码算法的缺陷,本文主要研究了一种联合LDPC码多级编码调制的迭代判决算法,并建立了MLCM-ID系统方案和仿真模型。仿真结果表明,采用迭代判决的方法可以有效地提高系统的性能。
2 多级编码调制的基本原理
2.1 多级编码调制系统方案
一般来讲,由纠错编码和数字调制组成的MLCM方案中,通常有以下几个模块:串并转换器、多级编码器和映射器,如图1所示。MLCM系统设计中有最为关键的两个部分:其一为MLCM的每一级编码器设计,其二为信号星座的映射设计。
在发送端,信源信息经串并转换后并行进入MLCM编码器,每一路进行独立的二元编码,在特定的集分割规则下编码器输出数据被映射成信号的星座点,进而完成编码调制过程。在接收端,则进行相应的反映射和译码操作。
在AWGN信道下,传统的MLCM系统中在编码器和星座映射之间一般不设置交织器;而在衰落信道下,为离散突发错误和避免多级译码的误码传播,则需要在其间设置比特交织器或符号交织器。
系统的总编码效率为各级分量码编码效率的总和,这也正是MLC这种编码调制方案的最大优点之一:码率可调整或码率设计灵活,它也为信道容量设计规则的提出准备了必要的条件。同时,由于每一级分量码都是等长度的,因此在数据信息源的不同块间没有干扰存在,这样也可避免译码错误对各级数据块的传播。
2.2 多级编码调制的译码算法
若MLCM系统采用最大似然译码算法,则其计算复杂度随信息位呈几何级数增长,因而准最佳似然译码算法是当前的研究热点。传统MLCM译码处理算法以非迭代方式进行,通常有以下两种:一种是多级译码(MSD),另一种则是并行译码(PDL),如图 2、图 3所示。
MSD是一种渐进最佳的译码算法,采用逐级译码方式,前级译码输出均为后级译码提供信息参考,其复杂度较最大似然算法低很多,是一种较为理想的译码方法,但存在着"错误传播"的问题,即前级的误码会通过反馈,造成后级的译码错误。相比之下,PDL在级与级之间没有反馈,各级并行独立译码,因而结构相对简单,译码延迟小,但译码性能较差,仅适合于对误码性能要求不高的情况。
3 MLCM迭代判决译码算法
随着Turbo概念的提出和BICM-ID[6]技术的深入研究,有理由相信:若在MLCM每级编码器与星座映射间均插入比特交织器,并将"编码器-交织器-星座映射"视为一种多级并行的级联编码,则采用迭代译码方法可获得更大的处理增益。根据Turbo迭代原理[7],对于某一系统的各个子系统,只要满足以下两个条件:
a)子系统间存在着约束或关联;
b)子系统间存在着交织或隐交织。
即可使用迭代处理方式对各子系统的逆过程进行联合处理,从而取得大的处理增益。
由图 1可见,MLCM系统满足上述两个条件,因而可以采用迭代方式进行联合处理。这里参考BICM-ID模型,提出一种MLCM-ID系统模型,事实上,在MLCM-ID体制中,BICM-ID可视为其级数为1时的一个特例。
为便于算法描述,将图 1的MLCM系统结构图等效为图 4所示的NG(Normal Graph)图。在此图中,各符号含义如下:
a) P表示串并转换,输出矢量记:
b) Ci(i = 0, 1, …, m-1)表示编码器,输出矢量记:
c) Пi(i = 0, 1, …, m-1)表示交织器,输出矢量记:
d) M表示星座映射,经过信道后的有噪接收矢量记:Y。
将NG图中的P、Ci、Пi和M等各个符号,等价为MLCM-ID系统的若干子系统。定义算子
MLCM-ID系统的迭代处理算法,描述如下:
初始化:设定最大迭代次数Imax。
步骤1:当迭代次数<Imax时,进行迭代
步骤2:迭代结束后,判决输出
4 联合LDPC码的MLCM-ID系统仿真模型
本节根据上面介绍的MLCM迭代判决算法,建立联合LDPC码的MLCM-ID系统仿真模型。
MLCM系统的分量码可以进行灵活的选择,本文使用LPDC码作为分量码,其主要原因有三:首先,LDPC码可以取得比Turbo码更接近香农限的性能,目前最好的非规则LDPC码在AWGN信道下距香农限仅0.0045dB;其次,LDPC码采用基于因子图的并行迭代译码算法,不仅保证了低的误比特率,而且并行译码大大降低了译码时延;再次,不同码长和码率的LDPC码比较容易构建,系统可以在较大的码率空间内选择分量码。另外,由文献[8]可知,LDPC校验矩阵的随机性构造及其稀疏性表明其译码器拥有一个内置的交织器,因此在MLCM系统中,即使不使用交织器,也能取得较好的性能,在仿真模型中可以省略交织部分,减小系统的复杂度。
系统调制方式选择常用的8PSK,星座映射方式使用UP映射,如图 5所示,这种映射方式通过每一级的分割,使每一级内部子集的最小欧氏距离最大化。
根据以上分析,建立MLCM-ID系统的仿真模型,如图 6所示。
发送端经串并变换将数据分为x1,x2,x3三级比特流进行传输,多级编码器对并行比特流进行LDPC编码得到c1,c2,c3,经过星座映射成8进制星座点。ri为第i级的信道输出序列, Li,li分别是解调器和译码器输出的外信息,Ei,ei分别是输入译码器和解调器的先验信息。联合译码的解调过程是在译码器和解调器之间的外信息反复迭代直至收敛的过程。图 6中的虚线部分是MSD算法的反馈译码过程,即前一级的译码结果为后面的级提供译码信息。
5 仿真结果与分析
本节根据上一节建立的仿真模型,对MLCM-ID系统进行仿真分析。本文采用PEG算法构造的非规则LDPC码,码长为1084比特,码率为0.4723,多级编码器的每一级码率相同,8PSK调制方式,UP映射方式,内迭代为30次,外迭代分别为1次和5次,在AWGN信道条件下进行仿真。
由仿真结果可以看出,在多级编码调制中使用迭代判决能够明显提高系统的性能。图 7是在PDL算法的基础上对每一级的译码进行迭代处理的误比特率仿真图,从图中可以看出,使用迭代判决算法可以提高性能约1.5dB,迭代一次的性能已经可以取得不错的效果,而迭代5次的效果并不明显,且随信噪比的提高对性能的提高越来越小。
同样地,对MSD算法(即图 6虚线表示的部分)中的每一级使用迭代判决,其性能如图 8所示,可以看到迭代对MSD算法提高的性能并没有PDL算法那么明显,这是由于MSD算法的级与级之间存在反馈,前一级的译码结果会为后面的级提供参考,因此对后面的级使用迭代判决所取得的性能提升是比较有限的,而PDL算法每一级译码是独立的,迭代判决对每一级都有较大的性能提升。如图 9所示,在MLCM-MSD系统,第一级的性能最差,第三级的性能最好,这就是MLCM的不等错误保护特性,在使用UP映射时,第一级星座点的最小欧式距离最小,而第三级星座点的最小欧式距离最大,第三级具有更高的比特保护度;迭代一次后,第一级的性能有较为明显的提高,而后两级的性能提高并不明显。
由以上仿真可以得出结论:在MLCM系统使用迭代判决能够明显提升系统的性能,每一级的迭代能够强化该级的比特保护度;对于PDL算法的每一级都有较大性能提升,因而整体的性能就有较大提升,而对于MSD算法,后面两级的性能提升比较有限,但可以强化第一级的性能,因此可以有效地解决"错误传播"的问题;迭代次数选择1次就可以取得不错的效果,随着迭代次数的增加,性能提升就越来越小,而系统的开销和译码时延却越来越大,因此,实际应用中使用一次迭代比较合理。
6 小 结
本文研究了一种多级编码调制的迭代判决算法,以LDPC做为系统分量码,并建立MLCM-ID系统方案和仿真模型。通过计算机仿真发现,采用迭代判决的方法可以提高MLCM系统每一级的性能,从而有效地提高整个系统的性能。
摘要:论文介绍了多级编码调制的基本原理和译码算法,以LDPC码作为多级编码调制的分量码,在译码过程中引入了迭代思想,分析了一种适用于多级编码调制的迭代判决算法,并建立了MLCM-ID系统模型。计算机仿真表明,该算法能够有效地提高系统性能,具有一定的应用价值。
关键词:多级编码调制,LDPC,迭代译码算法
参考文献
[1]Udo Wachsmann,Robert F.H.Fischer,and JohannesB.Huber,Multilevel Codes:Theoretical Concepts andPractical Design Rules[J].IEEE Transactions on Infor-mation Theory,1999,45(5):1361-1391.
[2]Ungerboeck G,Trellis Codes Modulation with RedundantSignal State Sets Part 2:State of the Art[J].IEEE Com-munications Magazine,1987,(2):12-21.
[3]H Imai and S Hirakawa.A New Multilevel Coding Meth-od Using Error Correcting Codes[J].IEEE Transactionson Information Theory,1977,pp.371-377.
[4]Dongfeng Yuan,Cheng-Xiang Wang,Qi Yao,Zhi-Gang Cao.A Novel Criterion for Optimum MultilevelCoding Systems in Mobile Fading Channels[J].ChineseJournal of Electronics,2001.
[5]P.Schramm.Multilevel coding with independent deco-ding on levels for efficient communication on static andinterleaved fading channels[A].IEEE PIMRC'97[C],Helsinki,Finland,1997:1196-1200.
[6]X.Li and J.A.Ritcey,Bit-interleaved Coded Modula-tion with Iterative Decoding Using Soft Feedback[J].E-lectronic Letters,1998,34(10):942-943.
[7]Udo Wachsmann and Johannes Huber.Power and Band-width Efficient Digital Communication Using Turbo Codesin Multilevel Codes[J].European Transactions on Tele-communications,1995,6(5):557-567.