一种自适应熵编码器的利记博彩app

文档序号:7555186阅读:187来源:国知局
专利名称:一种自适应熵编码器的利记博彩app
技术领域
本发明涉及数字视频处理领域,尤其涉及一种自适应熵编码器及其硬件实现方法。
背景技术
随着音视频产业的不断发展,视频图像的分辨率日益提高,由此带来的数据量越来越大。如何将这些视频图像数据有效地存储以及实时传输已经成为人们日益关注的焦点。高效的视频图像编码技术无疑是解决这个问题的一个有效途径。国际上出现了 MPEG-4、H.264/AVC等视频编码标准,我国也制定了中国的视频编码标准AVS。上述视频编码标准可以在保持视频主观质量的前提下,对视频信号进行高效的压缩,从而显著地降低存储空间和传输带宽要求。其中,熵编码技术是上述视频编码标准中的重要组成部分,可以有效的去除压缩比特流中的统计冗余,进一步提高视频的压缩效率。常用的熵编码技术有霍夫曼(Huffman)编码、算术编码和指数哥伦布编码。霍夫曼(Huffman)编码需要事先存储码表,内存需求大,而且Huffman码字必定是整数比特长,而且使用的概率模型是固定不变的,编码效果不是最佳的。而算术编码器可以很好的解决这个问题,它突破了 Huffman只能按整数比特逼近信源熵的限制,得到了比变长码更好的编码效果,然而,算术编码计算复杂度较高,硬件实现复杂,不容易达到高速的编码速度。指数哥伦布编码是一种可变长前缀码,码字很有规律,可以通过硬件计算得到码字,不仅无需事先建立和存储码表,而且还可以根据信源概率分布函数灵活调整编码阶数,能够达到很高的编码效率。由于其具有以上优点,指数哥伦布编码已被国际视频编码标准
H.264/AVC以及中国的视频编码标准AVS所采用作为熵编码的组成部分。目前,熵编码技术一般是在数字信号处理器(DSP,Digital Signal Processor)平台上采用软件的方法实现。采用软件的方法实现的熵编码器,通常速度较低,很难满足实时编码的速度要求;近年来,许多基于算术编码的熵编码方法在硬件上得以实现,达到高清(1920X1080)或标清视频的实时编码速度要求,但仍然无法满足超高清(3840X2160)视频的实时编码的速度要求。此外,低功耗设计也逐渐成为了衡量一个编码器性能优劣的一个指标。

发明内容
有鉴于此,本发明的目的在于提供一种自适应熵编码器,用以解决视频图像编码中,由于熵编码运算复杂度高、计算量过大而引起的熵编码速度低下,难以满足超高清或高清视频实时压缩的问题。本发明一种高速自适应熵编码器是通过以下技术方案实现的:所述自适应熵编码器,至少包括:零游程编码模块,对输入有效标志信号有效时的待编码数据进行自适应零游程编码,得到零游程编码后的游程数据及游程有效标志信号;非负映射模块与零游程编码模块连接,将游程有效标志信号有效时的零游程编码后的游程数据从整数范围映射到非负空间,输出映射后的非负数据及非负有效标志信号;指数哥伦布编码器阶数更新模块与非负映射模块连接,接收输入样本连零指数和映射后的非负数据及非负有效标志信号,对非负有效标志信号有效时的非负数据进行上下文建模,并计算出非负数据合理的指数哥伦布编码阶数;指数哥伦布编码模块分别与非负映射模块、指数哥伦布编码器阶数更新模块相连,接收并对非负有效标志信号有效时的非负数据进行指数哥伦布编码阶数的指数哥伦布编码,得到并输出熵编码码流及码流有效标志信息。本发明的有益效果在于:(I)本发明的各个模块均无需乘法操作,计算复杂度低,适合硬件快速实现;(2)各个模块形成了流水线结构,内部还可以再进行流水线分割,充分利用了硬件的并行性;(3)结构简单,所需硬件资源少,编码速度快,能够广泛应用于超高清视频实时编码领域;(4)功耗低,能够广泛应用于移动设备的实时编码。本发明的自适应熵编码器,该熵编码器由零游程编码模块、非负映射模块、指数哥伦布编码器阶数更新模块和指数哥伦布编码模块组成。各个模块内部均无需乘法操作,适合于硬件实现;采用了多级流水操作方式,充分利用硬件的并行性来提高编码速度,降低功耗。可应用于超高清或高清实时视频编码芯片等对编码速度要求较高的领域中,也可应用于无线设备对图像视频编码的场合。


图1是本发明的自适应熵编码器的结构框图;图2是本发明的零游程编码模块的主要结构图;图3是本发明的非负映射模块的主要结构图;图4是本发明的指数哥伦布编码器阶数更新模块的主要结构图;图5是本发明的指数哥伦布编码模块的结构框图;图6是本发明的指数哥伦布编码模块内部各模块的主要结构图;图7是本发明的自适应熵编码器在现场可编程门阵列(FPGA)上实现后得到的实现结果。
具体实施例方式以下结合附图和具体实例对本发明的各个功能模块以其工作流程作详细介绍。请参阅图1示出的本发明的自适应熵编码器,来自外部的输入信号包括:待编码数据D (16位参考位宽),输入有效标志信号VD (位宽I位),输入样本连零指数Q (5位参考位宽),时钟信号和复位信号。时钟信号和复位信号是全局信号,作用于内部所有模块,为了简明,在本发明所有图中都没有标出时钟和复位信号。当复位信号有效时,所有模块复位到初始状态。自适应熵编码器的输出信号包括:熵编码码流C(64位参考位宽)及码流有效标志信息VC(位宽I位)。整个自适应熵编码器化分为4级流水结构,如图中的虚线所示。图中信号线上标记的数据为该信号的参考位宽。所述自适应熵编码器包括:零游程编码模块,接收待编码数据有效标志信号VD和待编码数据D,其中,输入信号也是自适应熵编码器的外部输入信号。零游程编码模块的作用是对输入有效标志信号VD有效时的有效待编码数据D进行自适应零游程编码,输出零游程编码后的游程数据R及游程有效标志信号VR。输入的零游程有效标志信号VD为高电平时有效,则输入的待编码数据D是有效的,输入的零游程有效标志信号VD为低电平,则表示待编码数据D无效。当游程有效标志信号VR为高电平时,则表示输出的零游程编码后的游程数据R是有效的,当输出游程有效标志信号VR为低电平时,则表示输出的零游程编码后的游程数据R无效;非负映射模块与零游程编码模块连接,将游程有效标志信号VR有效时的零游程编码后的游程数据R从整数范围映射到非负空间,输出映射后的非负数据M及非负有效标志信号VM。当非负有效标志信号VM为高电平时,则表示输出的映射后的非负数据M是有效的,当非负有效标志信号VM为低电平时,则输出的映射后的非负数据M无效;指数哥伦布编码器阶数更新模块与非负映射模块连接,接收输入样本连零指数Q、非负数据M和非负有效标志信号VM,对非负有效标志信号有效时的非负数据M进行上下文建模,计算出非负数据M合理的指数哥伦布编码阶数K ;指数哥伦布编码模块分别与非负映射模块、指数哥伦布编码器阶数更新模块相连,接收并对非负有效标志信号VM有效时的非负数据M进行指数哥伦布编码阶数K的指数哥伦布编码,得到并输出熵编码码流C及码流有效标志信息VC。其中熵编码码流C及其码流有效标志信息VC是自适应熵编码器的输出信号。输出的熵编码码流有效标志信号VC为高电平时,则表示输出的熵编码码流C为有效,输出的熵编码码流有效标志信号VC为低电平时,则表示输出的熵编码码流C为无效。下面结合附图,对各个模块及其工作流程进行详细介绍。(I)、零游程编码模块本发明中的零游程编码模块实现了一种只对0系数进行游程编码的零游程编码。这种零游程编码包含两种工作模式:普通模式和零游程模式,并在两种工作模式之间不断切换完成编码。该零游程编编码的初始模式为普通模式时,在普通模式下直接将输入的待编码数据输出,若连续输入待编码数据D为0的个数达到2个时,便进入零游程模式;在零游程模式下,没有数据输出,只对输入待编码数据D中的0的个数进行计数,不进行输出,直到输入待编码数据D为非0数据时退出零游程模式,并输出待编码数据D连续0的个数和该非0数据。所以,该方法就是对顺序样本在两个模式之间不断的转换而实现编码的。例如:该零游程编码输入数据为:-5 004204000000009 2,则输出为:_5 0 0
042 040069 20可见,当样本中有大量连续为0的时候,可以有效的压缩样本的长度。请参阅图2为本发明的零游程编码模块的主要结构图,主要由一个先入先出数据缓存器FIFO、比较器、计数器、多个延时单元Z_\控制器、第一选择器、第二选择器、第一加法器,以及一些其他逻辑单元组成,所述逻辑单元如图2中的非门、与门和与非门。该零游程编码模块的输入零游程有效标志信号VD为有效时,将待编码数据D写入一个先入先出数据缓存器FIFO,这里将零游程有效标志信号VD当作先入先出数据缓存器FIFO的写使能信号WE,待编码数据写入到先入先出数据缓存器FIFO内部需要一个时钟。然后,将从先入先出数据缓冲器FIFO中读出的数据DT与比较器的0端进行比较:如果数据DT等于0,计数器加1,清零信号m为0 ;如果数据DT不为0,清零信号m为1,计数器的计数值清O。计数器的输出信息同时也输入到第一加法器中,与常数2做差。第一加法器的输出信息接入到第二选择器中;从先入先出数据缓存器FIFO的读出的数据DT和将数据DT延时了一个时钟周期后的数据DT2输入到第一选择器中,第一选择器的输出信息接入到第二选择器中。我们将计数器的计数值用cnt表示,当计数值cnt大于等于2时,令一中间信号n为1,否则n为O。清零信号m和一中间信号n相与得到另一中间信号mn,延时单兀Tx将另一中间信号mn延时一个时钟后得到暂存信号mn_t,再将暂存信号mn_t延时一个时钟得到暂存信号mn_t2 ;当中间信号mn为I或者先入先出数据缓存器FIFO的空指示信号EMPTY为I时,先入先出数据缓存器FIFO的读使能信号RE为‘0’,否则读使能信号RE为‘I’;由于先入先出数据缓存器FIFO的读出需要一个时钟,故将读使能信号RE信号延时一个时钟后得到读出数据D的有效标志信号VDT。将信号中间信号n,另一中间信号mn,暂存信号mn_t,暂存信号mn_t2以及读出待编码数据D的有效标志信号VDT输入到控制器中,控制器输出选择信号MA、MB给入第一选择器和第二选择器以得到零游程编码后的游程数据R,控制器还输出游程有效标志信号VR。为了使零游程编码模块的性能得到进一步的提升,我们在关键路径中插入寄存器,减少关键路径的长度,提高编码模块的主频。图中的点划线部分表示需要用一个时钟(可看作插入了寄存器):如先入先出数据缓存器FIFO的写操作和读操作;计数器的计数和清零操作以及中间信号n和另一中间信号m信号进行与非操作。此外,在虚线位置插入寄存器,形成流水线操作。表I描述了控制器的输入输出行为模型(表示不关心)。表I控制器的输入输出行为模型
权利要求
1.一种自适应熵编码器,其特征在于,至少包括: 零游程编码模块,对输入有效标志信号有效时的待编码数据进行自适应零游程编码,得到零游程编码后的游程数据及游程有效标志信号; 非负映射模块与零游程编码模块连接,将游程有效标志信号有效时的零游程编码后的游程数据从整数范围映射到非负空间,输出映射后的非负数据及非负有效标志信号; 指数哥伦布编码器阶数更新模块与非负映射模块连接,接收输入样本连零指数和映射后的非负数据及非负有效标志信号,对非负有效标志信号有效时的非负数据进行上下文建模,并计算出非负数据合理的指数哥伦布编码阶数; 指数哥伦布编码模块分别与非负映射模块、指数哥伦布编码器阶数更新模块相连,接收并对非负有效标志信号有效时的非负数据进行指数哥伦布编码阶数的指数哥伦布编码,得到并输出熵编码码流及码流有效标志信息。
2.如权利要求1所述的自适应熵编码器,其特征在于,所述零游程编码模块实现的零游程编码包括普通模式和零游程模式两种工作模式,并在两种工作模式之间不断切换完成编码;在普通模式下,直接将输入待编码的数据输出,当连续输入待编码数据为O达到2个时,进入零游程模式;在零游程模式下,只对输入待编码数据中的O的个数进行计数,不进行输出,当输入待编码数据非O数据时退出零游程模式,并输出待编码数据中连续O的个数和该非O数据。
3.如权利要求1所述的自适应熵编码器,其特征在于,非负映射模块使用了取反、移位、加法和二选一操作。
4.如权利要求1所述的自适应熵编码器,其特征在于,指数哥伦布编码器阶数更新模块需要对输入非负映射模块输出的非负有效标志信号有效时的非负数据及其三个上文进行分析,得到该输入非负数据合理的指数哥伦布编码阶数。
5.如权利要求1所述的自适应熵编码器,其特征在于,指数哥伦布编码器阶数更新模块中采用首I探测的方式计算一个数的以2为底的对数值。
6.如权利要求1所述的自适应熵编码器,其特征在于,指数哥伦布编码模块包括:编码值计算模块、编码值长度计算模块、累加控制模块和码流产生模块,其中: 编码值计算模块,利用非负有效标志信号有效时的非负数据和指数哥伦布编码阶数,计算出非负数据的二进制编码值及编码值有效信号; 编码值长度计算模块与编码值计算模块连接,对编码值计算模块得到的二进制编码值、二进制编码值有效信号以及指数哥伦布编码阶数,计算得到二进制编码值的有效比特位长度及二进制编码值长度有效信号; 累加控制模块与编码值长度计算模块连接,对编码值长度计算模块得到二进制编码值的有效比特位长度及二进制编码值长度有效信号进行累加,输出码流的累加长度、累加二进制编码值长度有效信号和码流输出控制信号; 码流产生模块与编码值计算模块和累加控制模块连接,接收并按照二进制编码值、二进制编码值有效信号、累加长度、累加二进制编码值长度有效信号、以及码流输出控制信号,对编码值计算模块产生的二进制编码值进行合并,并输出合并后的熵编码码流数据及输出码流有效标志信号。
全文摘要
本发明公开了一种自适应熵编码器,包括零游程编码模块对输入有效标志信号有效时的待编码数据进行自适应零游程编码,得到零游程编码后的游程数据及游程有效标志信号;非负映射模块将游程有效标志信号有效时的零游程编码后的游程数据从整数范围映射到非负空间,输出映射后的非负数据及非负有效标志信号;指数哥伦布编码器阶数更新模块接收输入样本连零指数和映射后的非负数据及非负有效标志信号,对非负有效标志信号有效时的非负数据进行上下文建模,并计算出非负数据合理的指数哥伦布编码阶数;指数哥伦布编码模块接收并对非负有效标志信号有效时的非负数据进行指数哥伦布编码阶数的指数哥伦布编码,得到并输出熵编码码流及码流有效标志信息。
文档编号H04N7/26GK103200407SQ20131013087
公开日2013年7月10日 申请日期2013年4月16日 优先权日2013年4月16日
发明者孙健, 任国强, 徐永刚, 吴威, 吴钦章 申请人:中国科学院光电技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1