一种基于FPGA的JPEG2000编码并行运算方法与流程

文档序号:20679812发布日期:2020-05-08 18:17阅读:595来源:国知局
一种基于FPGA的JPEG2000编码并行运算方法与流程

本发明涉及图像处理及图像编码领域,尤其涉及一种基于fpga的jpeg2000编码并行运算方法。



背景技术:

目前jpeg2000是基于小波变换和算术编码的图像压缩标准,其运算复杂,特别在视频采集实时存储方面,对性能要求更高。

现阶段业界常用的jepg2000编码有两种办法:一种是基于gpu/dsp进行实时图像的编码,虽然gpu/dsp性能强大,支持此编码算法运算,但gpu/dsp一般不独立使用,需要附带处理器,内存条及其他辅助芯片,导致硬件电路设计复杂,故功耗和硬件体积较大,不适用于低功耗的嵌入式应用。另一种是基于adi的adv212专用编码芯片,单adv212芯片只支持到720p,且需要附带fpga做为接口转换和控制,硬件电路设计复杂。不足以支持现在常用的1080p和4k的图像应用场景。



技术实现要素:

本发明所要解决的技术问题是,提供一种支持嵌入式图像实时编码,同时兼容实时性和功耗性能的基于fpga的jpeg2000编码并行运算方法。

为了解决上述技术问题,本发明是通过以下技术方案实现的:一种基于fpga的jpeg2000编码并行运算方法,包括jpeg2000编码,所述jpeg2000编码流程如下:首先把图像进行分割,形成多个正方形的图像tile,接着每个图像tile可单独编码成tile位流,最后所有tile位流汇总成整个编码文件;所述每个图像tile的编码过程包括颜色转换、小波变换、算术编码及位流组织四个部分;结合jpeg2000编码流程和编码位流组织,所述jpeg2000编码可从三个层面实现并行运算,该三个层面分别为对图像帧数据进行并行处理的层面一、对tile数据进行并行处理的层面二以及对band数据进行并行处理的层面三。

进一步地,所述层面一中,实时的图像输入中每帧图像运算完成后成为独立的jp2文件,可对图像帧数据并行运算;所述层面二中,图像帧的tile数据在jp2文件内对应单独的位流数据包,仅位流头信息有少许区别,可对tile数据进行并行处理;所述层面三中,tile数据经过小波变换后的band数据在tile位流中对应独立的位流信息段,可对band数据进行并行处理。

进一步地,所述图像tile进行n级小波变换后有3n+1个band数据,每个band数据可进行单独的算术编码,形成band位流,所有band位流汇总成一个独立的tile位流。

进一步地,所述三个层面的并行运算使用同一套并行处理方法实现,从而实现待处理数据包、处理模块以及处理后数据的调度和整理;所述并行处理方法的具体步骤如下:

s1、将待处理数据包中每个待处理数据都按顺序暂存在缓存中,等待调度模块读取;

s2、调度模块实时检查各运算模块的状态,一旦某个运算模块空闲,即刻把待处理数据发送到该运算模块进行运算;

s3、运算模块负责具体的数据运算,运算完成后数据被发送到组织模块;

s4、组织模块把收到的数据按格式组织成规范的数据包,形成处理后数据,然后重新按顺序写入缓存,等待下级运算。

进一步地,所述待处理数据包括图像帧数据、tile数据和band数据。

进一步地,所述并行处理方法整体的运算过程都按流水线运算设计,每个运算模块完成当前运算后可即刻进行下次运算,故如果并行处理有k个运算模块,即可支持运算时间缩短至1/k,所述jpeg2000的整体编码时间可计算为:t(实际编码时间)=t(单核编码时间)/k(图像帧)/k(tile)/k(band);结合上述公式,对jpeg2000的实际编码数据可以根据调整三个层面的并行运算模块数量来决定,以便适配不同的应用场景。

与现有技术相比,本发明的有益之处在于:这种基于fpga的jpeg2000编码并行运算方法支持1080p@60hz、8k@1hz的jepg2000图像编码,其功耗和硬件体积都支持嵌入式的使用,且可调整运算模块个数来适配不同的应用需求,基于单片可编程逻辑fpga来独立实现jpeg2000的编码,同时兼容实时性和功耗性能要求。

附图说明:

图1是本发明一种基于fpga的jpeg2000编码并行运算方法运算模块流程示意图;

图2是本发明一种基于fpga的jpeg2000编码并行运算方法并行运算层面示意图。

图中:1、待处理数据;2、调度模块;3、处理模块;4、组织模块;5、处理后数据;6、图像帧数据;7、tile数据;8、band数据。

具体实施方式:

下面结合附图和具体实施方式对本发明进行详细描述。

一种基于fpga的jpeg2000编码并行运算方法,包括jpeg2000编码,所述jpeg2000编码流程如下:首先把图像进行分割,形成多个正方形的图像tile,接着每个图像tile可单独编码成tile位流,最后所有tile位流汇总成整个编码文件;所述每个图像tile的编码过程包括颜色转换、小波变换、算术编码及位流组织四个部分,所述图像tile进行n级小波变换后有3n+1个band数据,每个band数据可进行单独的算术编码,形成band位流,所有band位流汇总成一个独立的tile位流。

为了多方面提高jpeg2000的实时编码能力,如图2所示,结合jpeg2000编码流程和编码位流组织,所述jpeg2000编码可从三个层面实现并行运算,该三个层面分别为对图像帧数据6进行并行处理的层面一、对tile数据7进行并行处理的层面二以及对band数据8进行并行处理的层面三。

所述层面一中,实时的图像输入中每帧图像运算完成后成为独立的jp2文件,可对图像帧数据6并行运算。

所述层面二中,图像帧的tile数据7在jp2文件内对应单独的位流数据包,仅位流头信息有少许区别,可对tile数据7进行并行处理。

所述层面三中,tile数据7经过小波变换后的band数据8在tile位流中对应独立的位流信息段,可对band数据8进行并行处理。

结合并行运算的特点,上述三个层面的并行运算可以使用同一套并行处理方法实现,主要实现待处理数据包1、处理模块3以及处理后数据5的调度和整理,所述待处理数据包1括图像帧数据6、tile数据7和band数据8。

为了以便满足本发明中三个层面的并行运算要求,如图1所示,所述并行处理方法的具体步骤如下:

s1、将待处理数据包1中每个待处理数据都按顺序暂存在缓存中,等待调度模2块读取;

s2、调度模块2实时检查各运算模块3的状态,一旦某个运算模块3空闲,即刻把待处理数据发送到该运算模块3进行运算;

s3、运算模块3负责具体的数据运算,运算完成后数据被发送到组织模块4;

s4、组织模块4把收到的数据按格式组织成规范的数据包,形成处理后数据5,然后重新按顺序写入缓存,等待下级运算。

上述并行处理方法整体的运算过程都按流水线运算设计,每个运算模块完成当前运算后可即刻进行下次运算,故如果并行处理有k个运算模块,即可支持运算时间缩短至1/k,所述jpeg2000的整体编码时间可计算为:t(实际编码时间)=t(单核编码时间)/k(图像帧)/k(tile)/k(band);结合上述公式,对jpeg2000的实际编码数据可以根据调整三个层面的并行运算模块数量来决定,以便适配不同的应用场景。

这种基于fpga的jpeg2000编码并行运算方法支持1080p@60hz、8k@1hz的jepg2000图像编码,其功耗和硬件体积都支持嵌入式的使用,且可调整运算模块个数来适配不同的应用需求,基于单片可编程逻辑fpga来独立实现jpeg2000的编码,同时兼容实时性和功耗性能要求。

需要强调的是:以上仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,凡是依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1