联合信源信道可变长符号级可逆编解码方法技术

技术编号:15038341 阅读:90 留言:0更新日期:2017-04-05 12:41
针对通信编码领域中信源编码釆用可变长编码带来错误扩散和解码端直接釆用联合信源信道可变长符号级解码方法由于码字符号过多引起复杂度过高这两个问题,提出了一种联合信源信道可变长符号级可逆编解码方法。在编码端,将信源编码输出码流再进行二进制游程编码,随后釆用可逆变长码对游程长度进行熵编码,最终得到信源的可逆变长码码流;在解码端,釆用联合信源信道可变长符号级解码算法进行解码。大大减少了信源码流的码字符号个数,降低了解码复杂度;同时,解码端不但可以正向解码,而且,在正向解码出现错误后还可以进行反向解码,大大降低了错误扩散程度,提高了通信系统的传输性能。该方法适用于图像、视频等多媒体传输系统。

【技术实现步骤摘要】

本专利技术涉及通信编码领域的一种联合信源信道编解码方法,特别是涉及一种联合信源信道可变长符号级可逆编解码方法。
技术介绍
近年来,联合信源信道编解码技术受到人们的日益关注。该技术与传统通信系统的编解码技术不同,它充分利用信源和信道之间的相关性,通过将信源编码和信道编码进行联合优化设计取得了优越的编码效果,在通信编码领域中应用日渐广泛。大部分图像、视频压缩编码标准都是采用可变长编码方法,取得了较好的压缩效果。但是可变长编码在提高压缩效率的同时也增加了编码比特流的错误敏感性,即使发生一个比特的错误也会导致后面的数据失去同步,无法解码,从而导致错误扩散。因此,基于可变长码的联合信源信道编解码技术逐渐成为当今研究的热点之一。在已有的研究成果当中,一般将可变长编码与信道编码进行级联编码,以提供强的差错保护。但是这些方法仍然无法从根本上解决可变长编码带来的错误扩散问题,尤其当码流中的关键部分出现错误,会导致传输质量下降很多。而在解码端,一般采用基于比特级网格图的比特后验概率译码算法进行解码。但是这些方法都忽视了可变长码字的整体性,无法充分利用信源可变长编码的剩余冗余,影响了系统的传输性能。针对这个问题,有人又提出了联合信源信道可变长符号级解码方法,该方法充分利用信源码字的先验特性,进一步提高了编解码系统的传输性能。然而这种方法仍然存在一个问题就是其解码复杂度与信源编码的码字符号个数呈线性关系,复杂度随着码字符号个数的增加而迅速提高。而常用的信源编码标准中一般都含有几十甚至上百个变长码字,若直接采用联合信源信道可变长符号级解码方法,将会导致实际通信系统中的复杂度过高,远远超过现行的软、硬件的计算能力,引起更大的问题。
技术实现思路
为了解决信源编码采用可变长编码引起错误扩散和解码端直接采用联合信源信道可变长符号级解码方法由于码字符号过多引起复杂度过高这两个问题,本专利技术提供了一种联合信源信道可变长符号级可逆编解码方法。该方法设计了一种信源码流二次编码模型,提出了一种将信源编码输出码流再进行二进制游程编码,随后采用可逆变长码对游程长度进行熵编码的编码算法,通过此算法进行编码后,解码端采用联合信源信道可变长符号级解码算法进行解码,解码时,解码端不但可以正向解码,而且,当正向解码出现错误时,解码端还可以进行反向解码,即实现了可逆解码。本专利技术解决其技术问题所采用的技术方案是:在编码端,对于基于块的图像、视频编码方法,以宏块(或块)为单位,将信源编码输出码流进行二进制游程编码,将连“0”串中“0”的个数或连“1”串中“1”的个数映射为一个数值小于预先统计长度的串长度1,串长度1代表连续且交错出现的连“0”串或连“1”串的游程长度,随后采用可逆变长码对连“0”串或连“1”串的游程长度进行熵编码,根据变长最佳编码定理,对出现概率大的游程长度赋予短码字,而对出现概率小的游程长度赋予长码字,最终得到信源的可逆变长码码流,该信源输出码流进行信道编码后输入到信道中进行传输。在解码端,采用联合信源信道可变长符号级解码算法进行解码,正向解码时,解码器以宏块为单位接收数据码流并进行错误检测,如果该宏块未检测到错误,则将该宏块进行解码,并继续接收下一个宏块进行解码,如果之后所有的宏块都没有检测到错误,则一直保持正向解码到下一个重同步码,无需反向解码,而当检测到某一宏块出现错误即正向解码出现错误时,则记录该错误宏块位置,然后解码器自动寻找下一个重同步码,并进行反向解码;反向解码时,仍然以宏块为单位接收数据码流,然后将接收码流进行倒置后再进行错误检测,如果该宏块未检测到错误,则将该宏块进行解码,并继续反向接收下一个宏块进行解码,直到解码到正向解码出现错误的宏块为止,而当检测到某一宏块出现错误即反向解码出现错误时,则停止反向解码,同样记录该错误宏块位置,则该宏块和正向解码出现错误的宏块之间的宏块数据为无法解码的数据,解码时将其丢弃。这样,在解码端即实现了联合信源信道可变长符号级可逆解码。另外,对连“0”串或连“1”串的游程长度进行熵编码时,本专利技术并不限制只采用可逆变长码这一种熵编码方案,当解码端只需要实现联合信源信道可变长符号级解码而不需要实现可逆解码时,可以选择除可逆变长码之外的可变长码进行熵编码,具体可以依据实际应用需求选取不同的熵编码方案。本说明书中的具体实施例中除了给出采用可逆变长码的熵编码方案外,还给出了一种可变长码的熵编码方案示例,见表1所示。附图1为本专利技术的实施流程。本专利技术的有益效果是:通过在编码端将信源编码输出码流再进行二进制游程编码,将连“0”串中“0”的个数或连“1”串中“1”的个数映射为一个数值小于预先统计长度的串长度I,并采用可逆变长码对连“0”串或连“1”串的游程长度进行熵编码,大大减少了最终信源输出码流中的码字符号个数,为采用联合信源信道可变长符号级解码方法提供了可行性,降低了其解码复杂度;同时,解码端不但可以正向解码,在正向解码出现错误之后还可以进行反向解码,大大降低了错误扩散程度,提高了通信系统的传输性能。而且,解码端仅需在正向解码出现错误时才进行反向解码,不会导致解码效率的大幅降低。该方法仅需扫描一遍码流即可完成编码过程,计算复杂度低。附图说明图1联合信源信道可变长符号级可逆编解码方法流程图图中,1信源编码,2二进制游程编码,3游程长度熵编码,4信道编码,5信道,6联合信源信道可变长符号级可逆解码,7信源编码输出码流,8连续且交错出现的连“0”串或连“1”串的游程长度数据串,9最终信源的可逆变长码码流,10信道编码输出码流,11解码端接收码流,虚线方框单元为本专利技术提出的二次编码模型。图2解码过程示意图:正向解码未发现错误,无需反向解码图3解码过程示意图:正向解码发现错误后,停止正向解码并进行反向解码图4基本解码过程示意图图2、3、4中,12重同步码,13~18代表两个重同步码之间的每一个宏块数据单元,从1开始依次排序,13为第1个,14为第2个,15为第i个,16为第i+1个,17为第j个,18为第k个,19正向解码未发现错误,20正向解码,并发现错误,21反向解码,并发现错误,22丢弃的宏块数据。具体实施方式1.二进制游程编码传统的游程编码需要按顺序给出具有相同值的连续串的数值和个数,而大部分信源编码产生的码流都是二进制码流,只含有“0”或“1”两种符号,并且连“0”串和连“1”串是相互交错出现的。因此,我们只需要首先假定码流最开始时为连“0”串或连“1”串,再顺次统计连“0”串中“0”的个数和连“1”串中“1”的个数即可,而不用表示该连续串为连“0”串还是连“1”串。根据统计,在大部分信源编码标准所产生的码流中,连“0”串中“0”的个数和连“1”串中“1”的个数一般都是有限的。因此,针对不同的信源编码方法,将连“0”串中“0”的个数或和“1”串中“1”的个数映射为一个数值小于预先统计长度L的串长度1,串长度1代表连续且交错出现的连“0”串或连“1”串的游程长度,最终得到二进制游程编码之后的游程长度数据串,该数据串为连续且交错出现的连“0”串或连“1”串的游程长度数据串。采用二进制游程编码之后所得到的游程长度的个数是很少的,那么这些游程长度所对应的熵编码的码字符号个数自然也很少,这样就大大降低了最终信源输出码本文档来自技高网
...

【技术保护点】
一种联合信源信道可变长符号级可逆编解码方法,在编码端,以宏块或块为单位,将信源编码输出码流再进行二进制游程编码,将连“0”串中“0”的个数或连“1”串中“1”的个数映射为一个数值小于预先统计长度L的串长度1,串长度1代表连续且交错出现的连“0”串或连“1”串的游程长度,随后采用可逆变长码对连“0”串或连“1”串的游程长度进行熵编码,根据变长最佳编码定理,对出现概率大的游程长度赋予短码字,而对出现概率小的游程长度赋予长码字,最终得到信源的可逆变长码码流,在解码端,采用联合信源信道可变长符号级解码算法进行解码,正向解码时,解码器以宏块为单位接收数据码流并进行错误检测,如果该宏块未检测到错误,则将该宏块进行解码,并继续接收下一个宏块进行解码,如果之后所有的宏块都没有检测到错误,则一直保持正向解码到下一个重同步码,无需反向解码,而当检测到某一宏块出现错误即正向解码出现错误时,则记录该错误宏块位置,然后解码器自动寻找下一个重同步码,并进行反向解码,反向解码时,仍然以宏块为单位接收数据码流,然后将接收码流进行倒置后再进行错误检测,如果该宏块未检测到错误,则将该宏块进行解码,并继续反向接收下一个宏块进行解码,直到解码到正向解码出现错误的宏块为止,而当检测到某一宏块出现错误即反向解码出现错误时,则停止反向解码,同样记录该错误宏块位置,则该宏块和正向解码出现错误的宏块之间的宏块数据为无法解码的数据,解码时将其丢弃,这样,在解码端即实现了联合信源信道可变长符号级可逆解码。...

【技术特征摘要】
1.一种联合信源信道可变长符号级可逆编解码方法,在编码端,以宏块或块为单位,将信源编码输出码流再进行二进制游程编码,将连“0”串中“0”的个数或连“1”串中“1”的个数映射为一个数值小于预先统计长度L的串长度1,串长度1代表连续且交错出现的连“0”串或连“1”串的游程长度,随后采用可逆变长码对连“0”串或连“1”串的游程长度进行熵编码,根据变长最佳编码定理,对出现概率大的游程长度赋予短码字,而对出现概率小的游程长度赋予长码字,最终得到信源的可逆变长码码流,在解码端,采用联合信源信道可变长符号级解码算法进行解码,正向解码时,解码器以宏块为单位接收数据码流并进行错误检测,如果该宏块未检测到错误,则将该宏块进行解码,并继续接收下一个宏块进行解码,如果之后所有的宏块都没有检测到错误,则一直保持正向解码到下一个重同步码,无需反向解码,而当检测到某一宏块出现错误即正向解码出现错误时,则记录该错误宏块位置,然后...

【专利技术属性】
技术研发人员:包训阳
申请(专利权)人:天津君邦科技有限公司
类型:发明
国别省市:天津;12

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1