一种基于FPGA的MJPEG压缩实现方法和FPGA技术

技术编号:15625196 阅读:88 留言:0更新日期:2017-06-14 06:16
本发明专利技术实施例提供了一种基于FPGA的MJPEG压缩方法和FPGA,对缓存的视频数据流进行离散余弦变换,然后再将视频数据流进行Z变换,将经过Z变换的视频数据流进行量化,然后对视频数据流进行行程长度编码,压缩视频数据流的大小。经过本发明专利技术的实施,利用FPGA具有丰富的可编程资源的特点,在FPGA上实现MJPEG压缩,保证了压缩的实时性和可扩展性。

【技术实现步骤摘要】
一种基于FPGA的MJPEG压缩实现方法和FPGA
本专利技术涉及视频图像处理领域,尤其涉及一种基于FPGA的MJPEG压缩实现方法和FPGA。
技术介绍
在视频图像传输系统中,大量视频图像数据流的传输称为系统瓶颈;通过MJPEG压缩算法,可以大大减少视频图像数据传输时所需要的存储空间和网络带宽。由于MJPEG压缩算法比较复杂,现有的MJPEG压缩算法一般是采用软件来实现;但是算法的实时性和可扩展性都受到很大限制,尤其是对多路高分辨率、高帧率视频图像数据流压缩处理,如1080p60f、4k60f。
技术实现思路
本专利技术旨在解决现有技术MJPEG压缩算法实现实时性和可扩展性差的问题。为解决上述技术问题,本专利技术提供一种基于FPGA的MJPEG压缩实现方法,包括:对缓存的视频数据流进行离散余弦变换;将经过离散余弦变换后的所述视频数据流进行Z变换;将经过Z变换的所述视频数据流进行量化,并对量化后的所述视频数据流进行行程编码;对经过行程编码后的所述视频数据流按照熵的大小进行编码,压缩所述视频数据流的大小。可选的,所述对经过行程编码后的所述视频数据流按照熵的大小进行编码包括:对经过行程编码后的所述视频数据流进行哈夫曼编码。可选的,所述将经过Z变换的视频数据流进行量化包括:根据预存的量化系数的倒数,对相应的视频数据流进行量化。可选的,在所述对缓存的视频数据流进行离散余弦变换之前,还包括:判断所述缓存的视频数据流是否为YCbCr格式,若否,则将所述视频数据流转成YCbCr格式。可选的,在所述对缓存的视频数据流进行离散余弦变换之前,还包括:将所述YCbCr格式的视频数据流中的YY分量和CbCr分量分别缓存。本专利技术还提供一种FPGA,包括:离散余弦变换模块,用于对缓存的视频数据流进行离散余弦变换;Z变换模块,用于将经过离散余弦变换后的所述视频数据流进行Z变换;量化模块,用于将经过Z变换的视频数据流进行量化;第一编码模块,用于对量化后的所述视频数据流进行行程编码;第二编码模块,用于对经过行程编码后的所述视频数据流按照熵的大小进行编码,压缩所述视频数据流的大小。可选的,所述第二编码模块还用于:对经过行程编码后的所述视频数据流进行哈夫曼编码。可选的,所述量化模块还用于:根据预存的量化系数的倒数,对相应的视频数据流进行量化。可选的,还包括转换模块,用于:在所述离散余弦变换模块将所述缓存的视频数据流进行离散余弦变换之前,判断所述视频数据流是否为YCbCr格式,若否,则将所述视频数据流转成YCbCr格式。可选的,还包括缓存模块,用于将所述YCbCr格式的视频数据流中的YY分量和CbCr分量分别缓存。本专利技术的有益效果是:本专利技术实施例提供了一种基于FPGA的MJPEG压缩实现方法和FPGA,对缓存的视频数据流进行离散余弦变换,然后再将视频数据流进行Z变换,将经过Z变换的视频数据流进行量化,然后对视频数据流进行行程编码,以及哈夫曼编码,进一步压缩视频数据流的大小。经过本专利技术的实施,利用FPGA具有丰富的可编程逻辑资源的特点,在FPGA上实现MJPEG压缩,保证了压缩的实时性和可扩展性。附图说明图1为本专利技术实施例一的基于FPGA的MJPEG压缩方法流程图;图2为本专利技术实施例二的FPGA组成示意图;图3为本专利技术实施例三的基于FPGA的MJPEG压缩系统组成示意图。具体实施方式下面通过具体实施方式结合附图对本专利技术实施例作进一步详细说明。实施例一:本实施例提供一种基于FPGA的MJPEG压缩方法,请参见图1,具体包括:S101、对缓存的视频数据流进行离散余弦变换;S102、将经过离散余弦变换的视频数据流进行Z变换;S103、将经过Z变换的视频数据流进行量化,并对量化后的所述视频数据流进行行程编码,压缩视频数据流的大小。从信息论的角度来说,压缩就是去掉信息中的冗余,保留不确定的信息,用一种更接近信息本质的描述来代替原有冗余的描述。压缩主要分为两类:有损压缩和无损压缩,其中,如果丢失个别的数据不会造成太大的影响,这时忽略他们是个好注意,这就是有损压缩。有损压缩广泛应用于动画、声音和图像文件中,典型的代表就是影碟文件格式的MPEG、音乐文件格式mp3和图像文件格式jpg。本实施例中的MJPEG同样是一种有损压缩。在另一些情况中,则可能会要求压缩数据必须准确无误,便有了无损压缩格式,比如常见的zip、rar等等。在本实施例中,由于MJPEG压缩方法是以宏块MB=8*8bits为基本单元来进行的,因此对输入的视频数据流需要先进行缓存。输入的视频数据流按照地址递增顺序依次进行缓存,在本实施例中,以输入视频流格式为1080p60f,采样率YCbCr为4:2:2为例,缓存的大小应该为1920*8=15360@24bits。在按照地址递增顺序将将视频数据流进行缓存时,当写地址超过13455后即写满两个MB,即可以开始缓存的视频数据流的读取。然后,当写地址超过15359之后,即写满了8行,则按照原有MB读地址写入数据。且写地址与读地址之间应该保持一定程度上的间隙,避免缓存被写满而导致数据丢失。其中,间隙GAP的范围可以设定为大于等于128。因此,当缓存数据超过了13455之后,就可以继续进行后续的处理过程,后续各处理流程可以在单位时间即MB内处理完输入的MB数据,以满足实时处理的要求。在本实施例中,对缓存的视频数据流进行离散余弦变换。视频图像数据相互之间具有一定的相关性,这种相关性在时域观测不够直观,通过离散余弦变换DCT,可以去掉其相关性,从频域来观测视频图像数据。视频图像数据经过DCT变换后的输出频谱是二维的,左上角区域为低频区,右下角区域为高频区。之后,经过DCT变换之后,再对视频数据流进行Z变换,Z变换是将DCT变换的输出按Z形扫描,将低频数据串接起来。将经过DCT变换的视频数据流进行Z变换,以一个MB为基本单元,采用乒乓存储的方式,先顺序写入,再按特定地址读出即可。然后,对经过Z变换的视频数据流进行量化。量化后剩下的都是低频区数据,高频区数据大多变成0,基于此可以进行进一步的图像压缩过程。量化等级0~255一共256个,在本实施例中,将经过Z变换的视频数据流进行量化可以包括:根据预存的量化系数的倒数,对对应的视频数据流进行量化。量化时,将量化系数的倒数与经过Z变换的视频数据流相乘。其中,不同地址的视频数据流,其相应的量化系数也是不同的。经过量化后的视频数据流会出现大量为零的数据,即大量的连零串,对于连零串的信息,仅需要记录其为零的个数即可,这样可以很大程度的减小数据传输带宽。在本实施例中,通过行程编码(Run-LengthEncoding,RLE),就可以实现将连续全零的信息仅记录其个数,从而达到压缩视频数据流的大小的目的。此外,在本实施例中,在对量化后的视频数据流进行行程编码之后,还可以包括:对经过行程编码后的视频数据流按照熵的大小进行编码。为了进一步减小数据传输带宽,按照信息量的大小为输入视频数据流分配码字,这样编码后得到的视频数据流传输带宽可以降到更低。在经过RLE编码之后,按照熵的大小进行编码,即用长码编码熵较大的数据,用短码编码熵较小的数据。在本实施例中,可以采用哈夫曼编码进行熵编码,哈夫曼编码所需要的码字可以预先存储在码表中。此外,还可以本文档来自技高网...
一种基于FPGA的MJPEG压缩实现方法和FPGA

【技术保护点】
一种基于FPGA的MJPEG压缩实现方法,包括:对缓存的视频数据流进行离散余弦变换;将经过离散余弦变换后的所述视频数据流进行Z变换;将经过Z变换的所述视频数据流进行量化,并对量化后的所述视频数据流进行行程编码;对经过行程编码后的所述视频数据流按照熵的大小进行编码,压缩所述视频数据流的大小。

【技术特征摘要】
1.一种基于FPGA的MJPEG压缩实现方法,包括:对缓存的视频数据流进行离散余弦变换;将经过离散余弦变换后的所述视频数据流进行Z变换;将经过Z变换的所述视频数据流进行量化,并对量化后的所述视频数据流进行行程编码;对经过行程编码后的所述视频数据流按照熵的大小进行编码,压缩所述视频数据流的大小。2.如权利要求1所述的基于FPGA的MJPEG压缩实现方法,其特征在于,所述对经过行程编码后的所述视频数据流按照熵的大小进行编码包括:对所述视频流数据进行哈夫曼编码。3.如权利要求1所述的基于FPGA的MJPEG压缩实现方法,其特征在于,所述将经过Z变换的视频数据流进行量化包括:根据预存的量化系数的倒数,对相应的视频数据流进行量化。4.如权利要求1-3任一项所述的基于FPGA的MJPEG压缩实现方法,其特征在于,在所述对缓存的视频数据流进行离散余弦变换之前,还包括:判断所述缓存的视频数据流是否为YCbCr格式,若否,则将所述视频数据流转成YCbCr格式。5.如权利要求4所述的基于FPGA的MJPEG压缩实现方法,其特征在于,在所述对缓存的视频数据流进行离散余弦变换之前,还包括:将所述YCbCr格...

【专利技术属性】
技术研发人员:陈乔乔
申请(专利权)人:深圳市紫光同创电子有限公司
类型:发明
国别省市:广东,44

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

1