【技术实现步骤摘要】
基于FPGA的LCEVC视频编码装置及方法
[0001]本专利技术属于视频编码领域,涉及一种基于FPGA的LCEVC视频编码装置及方法。
技术介绍
[0002]随着视频技术的快速发展以及人们对于视频质量日益增长的需求,用户对于视频压缩编码、低延迟编解码和传输的要求越来越高。用户对视频的要求从以前的标清到现在的高清、超高清。随着视频分辨率、帧率、位深的不断增加,视频的数据量也随之激增,这就给视频的传输和存储带来了很大的挑战。所以,对视频进行编码是非常必要的。
[0003]由于FPGA本身具有强大的并行处理能力和高度可定制能力,将FPGA与视频编码相结合是一个很有价值的方向。低复杂度增强视频编码(LCEVC)是动态图像专家组(MPEG)新提出的一种视频编码标准,LCEVC在几乎不增加视频编码复杂度的前提下,利用基本层的码流和额外的增强层码流来提高基本编码器的压缩效率。将FPGA与LCEVC相结合,利用FPGA的并行处理的优势,可以极大的减少编码时间。但是由于LCEVC的熵编码部分采用的是Huffman编码,这种编码方式虽然复杂度低,但是同时压缩率也不高,所以有必要对熵编码部分进行优化,在不增加复杂度的同时能提高其压缩率。
技术实现思路
[0004]有鉴于此,本专利技术的目的在于提供一种基于FPGA的LCEVC视频编码装置及方法。
[0005]为达到上述目的,本专利技术提供如下技术方案:
[0006]一方面,提供一种基于FPGA的LCEVC视频编码装置,包括:
[0007]存 ...
【技术保护点】
【技术特征摘要】
1.一种基于FPGA的LCEVC视频编码装置,其特征在于:包括:存储模块:用于存储输入的视频图像数据以及相关模块的计算结果;读写模块:用于对存储模块中的数据进行读出和写入,读写模块通过转换用户接口与AXI接口访问存储模块;包含读写两个模块,在读写模块中设计FIFO模块用于缓存输入与输出的数据,用户接口利用读写长度接口、读写起始地址、读写使能信号、读写数据、读写数据有效、读写最后数据标志、读写准备信号信号所组成,用户通过输入读写起始地址以及读写长度利用AXI的突发读写功能将读写的数据持续性地从存储模块中读出;控制模块:用于控制各模块工作;接口模块:用于缓存上采样模块、做差模块读出与写入存储模块时的数据,并与上采样模块、做差模块进行数据交互,接口模块中的数据读写由控制模块控制;上采样模块:通过AXI总线协议与存储模块连接,由垂直采样模块、水平采样模块及RAM组成,先进行垂直上采样,再将垂直方向上的采样结果存入移位寄存器中,当移位寄存器中有4个数据后,将这4个数据进行水平采样并输出结果,上采样模块通过接口模块从存储模块的原始数据进行处理,并将处理完成后的数据通过接口模块进行缓存,最终进入存储模块中;做差模块:用于将输入数据与上采样模块输出的数据相减,得到残差数据,做差模块通过接口模块从存储模块中得到上采样后的数据与原始数据,做差后的数据进入接口模块中已被下次使用,同时将残差数据送入转换模块中进行后续处理;转换模块:用于对残差数据进行计算,将残差数据从空间域中的像素形式转换至变换域;量化模块:由cal_QMC模块、cal_DSW模块、cal_DZ模块和cal_quat模块构成;c所述al_QMC模块用于计算量化矩阵系数QMC,所述cal_DSW模块用于计算直接量化步长,所述cal_DZ模块用于计算量化死区,所述cal_Quat用于根据转换输出及相关参数计算量化输出;熵编码模块:由行程编码模块和霍夫曼编码模块构成;所述行程编码模块由输入数据处理单元、统计模块和编码模块构成;所述输入数据处理单元用于输入数据,所述统计模块1用于分析输入的数据,对输入数据中的residual和zeros进行统计,所述编码模块用于对统计得到的residual和zeros进行编码,编码后得到不同状态下的码本值;所述霍夫曼编码模块由统计模块2、排序模块和二叉树编码模块构成,所述统计模块2用于统计输入数据的重复出现的次数,所述排序模块用于对统计后的数据进行排序,所述二叉树编码模块用于将排序模块的输出形成二叉树从而进行编码;码流组织模块:用于对压缩码流进行打包,数据包由包头和包体两部分组成,包头包括霍夫曼编码的码流头信息,这些信息按照RLE编码后的state的顺序依次写入;包体包含霍夫曼编码后的结果。2.一种基于FPGA的LCEVC视频编码方法,其特征在于:包括以下步骤:S1:对于给定格式、给定参数的输入视频,采用基于Lanczos插值信息的分块下采样方法进行两次下采样,并将处理结果送至基本编码器模块;S2:将下采样后的视频经过基本编码器编码重建后,作为整个系统的输入数据送入上采样模块,得到上采样后的视频图像;再将下采样后的视频图像与上采样后的视频图像相减得到残差,上采样操作同样执行两次,所以将得到两个残差,分别命名为L1层残差和L2层
残差;将L1、L2层残差分别进行转换、量化;S3:将量化后的数据送入熵编码模块进行计算,输出码流。3.根据权利要求2所述的基于FPGA的LCEVC视频编码方法,其特征在于:步骤S1具体包括以下步骤:S11:所述Lanczos插值是将给定的样本像素映射到Lanczos核函数进行图像缩放,即分别计算离样本像素最近像素点的权重信息,然后加权平均,得到最后的输出值;Lanczos插值算法的核函数是一个sinc窗函数,由以下公式表示:对于二维图像的插值,点(x,y)的插值函数为:其中表示x向下取整,参数b是一个正整数,用于决定Lanczos核的大小。4.根据权利要求2所述的基于FPGA的LCEVC视频编码方法,其特征在于:步骤S2具体包括以下步骤:S21:经过基本编码器重建后的图像数据被存放到存储模块,通过AXI总线协议与上采样模块相连,并通过相关接口模块和控制模块控制数据的写入与读出;S22:将S21中进入基本编码器模块的视频图像经过重建后送入上采样模块进行上采样插值;S23:将经过上采样模块处理后的图像数据与源图像数据做差得到残差数据,并将残差数据送入转换模块进行转换操作;S24:将S23中得到的各layer进行量化操作,每个layer单独并行的进行量化计算;量化是将信号的连续取值或者大量的离散取值映射为有限多个离散幅值;将转换后得到的各层数据送入量化模块,在量化模块中,Cal_QMC是计算量化矩阵系数模块,Cal_DSW是计算直接量化步长模块,Cal_DZ是计算量化死区模块,Cal_Quat计算量化输出模块;ROM中存储的是量化矩阵,FIFO中存储的是转换模块的输出数据;idx是layer的索引,表示是第几个layer在进行量化,Cal_over是量化结束信号;参数确定以后,量化的使能信号en拉高,Cal_Quat模块启动,从FIFO中读出转换后的系数,计算得到量化输出;当量化结束以后,结束标志Cal_over拉高。5.根据权利要求4所述的基于FPGA的LCEVC视频编码方法,其特征在于:步骤S21中,存储部分由四个模块组成,其中,DDR4为真实物理片外RAM器件,DDR4_RW为AXI总线与用户接口之间的读写转换模块,两者之间通过AXI总线相连;Ctrl为控制模块,DRAM_rw_interface为计算模块读出与写入DDR时的数据缓冲区域;DDR4_RW模块通过转换用户接口与AXI接口进行访问DDR4模块,其中包含读写模块,在读写模块中设计fifo模块用于缓存输入与输出的数据,用户接口仅利用读写长度接口
(ddr_user_xx_datalen)、读写起始地址(ddr_user_xx_addr)、读写使能信号(ddr_user_xx_en)、读写数据(ddr_user_xx_data)、读写数据有效(ddr_user_xx_valid)、读写最后数据标志(ddr_user_xx_last)、读写准备信号(ddr_user_xx_ready)信号所组成,用户通过输入读写起始地址以及读写长度,利用AXI的突发读写功能将读写的数据持续性地从DDR4中读出;将从DDR4中读取的数据存入DDRM_rw_interface中的RAM中,RAM的读写控制通过Ctrl模块控制。6.根据权利要求4所述的基于FPGA的LCEVC视频编码方法,其特征在于:步骤S22所述上采样模块的具体步骤如下:使用sap_type代表采样模式:00表示在水平和垂直方向都不进行采样;10表示在水平和垂直方向上都要进行采样;01表示仅在水平方向进行采样,默认为两个方向都不采样;din表示输入数据;din_valid表示输入数据有效数据;dout表示输出数据;dout_valid是输出数据有效标志;ver_odd_even_flag和hor_odd_even_flag是输入数据奇偶标志;Ver是垂直采样模块,Hor是水平采样模块;数据输入后根据采样模式sap_type来选择采用哪种采样模式;若不进行采样则直接将输入的数据直接输出;若只进行水平方向的采样,则在水平采样模块的输入端选择仅传递输入数据,然后进行水平采样计算并输出;若要在两个方向上进行采样,则将采样流程分为两个步骤:第一个步骤为正常的移位计算过程,第二个步骤为当垂直方向采样后输出最后一个数据是需要进行扩展并在扩展后计算后两个数据;采样时先进行垂直上采样,再将垂直方向上的采样结果存入移位寄存器中,待移位寄存器中有4个数据后,将这4个数据作为水平采样的数据进行计...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。