发明内容
有鉴于此,本发明提供了一种基于现场可编程门阵列(FPGA)的JPEG2000图像解码装置及方法,能够进行高码率、高帧率的JPEG2000图像实时解码输出,同时还具备高度的灵活性。
为达上述目的,本发明的技术方案具体是这样实现的:
一种基于现场可编程门阵列FPGA的JPEG2000图像解码装置,该装置包括:解码控制器,码流输入缓存,码流解析器,嵌入式优化截断编码EBCOT解码器,逆量化器,外部存储控制器,逆小波变换运算器,多分量转换器和像素输出缓存;
其中,解码控制器分别与码流输入缓存、码流解析器、EBCOT解码器、逆量化器、外部存储控制器、逆小波变换运算器、多分量转换器和像素输出缓存连接,用于进行各组件的控制;
码流输入缓存、码流解析器、EBCOT解码器、逆量化器和外部存储控制器依次连接,依次完成JPEG2000码流的输入、码流解析和参数提取、码块数据解压缩、码块数据逆量化和子带数据重建及存储;
外部存储控制器、逆小波变换运算器、多分量转换器和像素输出缓存依次连接,依次完成子带数据读入和逆小波变换、图像数据的多分量转换,最后输出像素数据和相关时序信号;
外部存储控制器与逆量化器和逆小波变换运算器相连接,另外又与外部存储相连接,实现解码数据的存取控制。
较佳地,所述码流解析器包括:解析内核,几何协处理器和码块压缩数据缓存;
解析内核从码流中提取图像级全局几何参数,并根据几何协处理器提供的每个码块的几何参数提取码流中每个码块的码块压缩数据和码块解码参数;将码块压缩数据和码块解码参数送入码块压缩数据缓存进行缓冲;几何协处理器根据所述解析内核提取的图像级全局几何参数计算出码流中每个码块的几何参数,并将其提供给码流解析内核。
较佳地,所述EBCOT解码器包括:算术解码器,位平面建模器和码块位平面存储器;
算术解码器从码块压缩数据缓存提取码块压缩数据和码块解码参数,并和位平面建模器配合完成码块压缩数据的解码运算,得到码块的位平面数据和码块所属信息,并存入位平面存储器;
位平面存储器将数据送至逆量化器。
较佳地,所述逆量化器包括:逆量化单元,帧存储接口,码块小波数据缓存;
逆量化单元从解码控制器获取量化表等相关解码参数对从所述位平面存储器接收的码块位平面数据进行逆量化计算;
帧存储接口按照码块所属信息完成对应子带小波数据地址换算,逆量化后的码块小波数据经由内部码块小波数据缓存缓冲后按照对应子带小波数据地址通过外部存储控制器存入外部存储器。
较佳地,所述逆小波变换运算器包括:计算控制器,数据管理单元,逆小波变换内核单元;
计算控制单元根据图像及子带几何参数和小波变换级数生成整个计算过程的调度控制,协调控制数据管理单元和逆小波变换内核单元的并行运行;
数据管理单元在调度控制安排下完成逆小波变换所需的数据访存和数据缓冲存储;
逆小波变换内核单元进行逆小波变换计算,并将最终输出送至多分量转换器进行分量转换。
较佳地,该装置包含多个EBCOT解码器并行运行,多个EBCOT解码器按照分时复用从码块压缩数据缓存读取各自所需的码块压缩数据;且各EBCOT解码器输出解码进度指示以供查询和控制;
所述逆量化器从多个EBCOT解码器接收解码后的位平面数据,通过查询各个EBCOT解码器的完成状态,将当前已就绪的码块位平面数据从相应EBCOT解码器读出并进行逆量化。
一种基于FPGA的JPEG2000图像解码方法,该方法包括:
码流输入缓存从外部的码流提供装置接收JPEG2000码流数据并进行缓冲,缓冲后的JPEG2000码流送入码流解析器;
码流解析器对JPEG2000码流进行解析,得到各码块压缩数据和码块解码参数;
EBCOT解码器从码流解析器读取各码块压缩数据和码块解码参数,进行各码块的位平面数据的解压缩计算;
逆量化器读取EBCOT解码器输出的位平面数据并依据量化步长进行逆量化计算,得到逆量化后的码块小波数据;将所述逆量化后的码块小波数据写至外部存储器以重建图像各子带小波系数;
逆小波变换运算器从外部存储中读入各子带小波系数并进行二维逆小波变换计算,计算结果输出至多分量转换器进行分量转换;
多分量转换器根据解码参数进行分量转换操作,并将分量转换后的像素分量数据送入像素输出缓存;
像素输出缓存从多分量转换器接收像素分量数据,并根据确定的像素输出时钟速率进行图像数据输出,同时送出相关图像行帧时序指示。
较佳地,所述码流解析器对JPEG2000码流进行解析,得到各码块压缩数据和码块解码参数,包括:
码流解析器从码流输入缓存读取JPEG2000码流数据,恢复出码流内含的全局解码参数信息;根据全局解码参数中的渐进参数、几何参数信息和离散小波变换DWT级数参数调用内部几何协处理器计算出当前码流各码块的具体几何信息,内部码流解析内核在码块几何信息基础上解析码流进而提取出各码块压缩数据和码块解码参数。
较佳地,所述EBCOT解码器从码流解析器读取各码块压缩数据和码块解码参数,进行各码块的位平面数据的解压缩计算,包括:
EBCOT解码器从码流解析器内部的码块压缩数据缓存读取各码块压缩数据和码块解码参数,通过EBCOT解码器内部的算术解码器和位平面建模器对码块进行逐个位平面的计算,在此计算过程中将使用码块压缩数据和码块解码参数作为解码输入。
较佳地,所述逆量化器读取EBCOT解码器输出的位平面数据并依据量化步长进行逆量化计算,得到逆量化后的码块小波数据,包括:
逆量化器根据码块解码参数获取当前码块的量化参数以计算当前的量化步长,读取EBCOT解码器输出的位平面数据并依据量化步长由内部的逆量化单元进行逆量化计算,得到逆量化后的码块小波数据。
由上述技术方案可见,本发明的这种基于FPGA的JPEG2000图像解码装置和方法,通过FPGA具备的完善的硬件逻辑电路资源,实现了符合JPEG2000图像解码标准,并专用于JPEG2000图像解码的逻辑电路,达到高码率、高帧率的JPEG2000图像实时解码输出的要求,同时基于FPGA的硬件可编程特性,使其灵活性很高,在不更换芯片的前提下,很容易通过修改逻辑电路设计实现性能和功能的提升,后续发展空间很大。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明进一步详细说明。
本发明主要是基于FPGA具备的完善的硬件逻辑电路资源,设计了专用于JPEG2000图像解码的逻辑电路,实现了高码率、高帧率的JPEG2000图像实时解码输出,同时基于FPGA的硬件可编程特性,使其灵活性很高,在不更换芯片的前提下,很容易通过修改逻辑电路设计实现性能和功能的提升,后续发展空间很大。
具体设计如图1所示,包括:解码控制器100,码流输入缓存200,码流解析器300,嵌入式优化截断编码(EBCOT)解码器400,逆量化器500,外部存储控制器600,逆小波变换运算器700,多分量转换器800,像素输出缓存900;
解码控制器100分别与码流输入缓存200、码流解析器300、EBCOT解码器400、逆量化器500、外部存储控制器600、逆小波变换运算器700、多分量转换器800和像素输出缓存900连接,根据从外部接收到的各种控制指令,完成对JPEG2000图像码流的解码控制;
码流输入缓存200、码流解析器300、EBCOT解码器400、逆量化器500和外部存储控制器600依次连接,完成JPEG2000码流的输入、码流解析和参数提取、码块数据解压缩、码块数据逆量化和子带数据重建及存储;
外部存储控制器600、逆小波变换运算器700、多分量转换器800和像素输出缓存900依次连接,完成子带数据读入和逆小波变换、图像数据的多分量转换,最后输出像素数据和相关时序信号;
外部存储控制器600与逆量化器500和逆小波变换运算器700相连接,另外又与外部存储(一般为SDRAM)相连接,实现解码数据的存取控制。
其中解码控制器100通过外部接口与外部的控制主机建立通讯,接收外部的解码控制指令并对外返回解码状态信息,解码控制器100控制并协调码流输入缓存200、码流解析器300、EBCOT解码器400、逆量化器500、外部存储控制器600、逆小波变换运算器700、多分量转换器800和像素输出缓存900,完成JPEG2000图像的硬件解码。
码流输入缓存200完成外部JPEG2000图像码流的输入适配并将缓冲后的码流送至码流解析器300,像素输出缓存900完成像素输出数据的缓冲存储以提供适配后的像素数据输出。
其中码流解析器300包括:解析内核310,几何协处理器320,码块压缩数据缓存330;
码流解析器300按照JPEG2000标准由解析内核310对码流进行解析,码流解析器300在解析过程中需要每个码块的几何参数信息,在码流解析器300内部包括一个几何协处理器320,几何协处理器320根据解析提取的图像级全局几何参数计算出码流中每个码块的几何参数,将其提供给码流解析内核310来完成码块压缩数据和码块解码参数的正确提取。解析内核310提取码块压缩数据和相关解码参数,并由内部码块压缩数据缓存330缓冲后送至EBCOT解码器400。解析内核310提取的相关解码参数同时送至解码控制器100并由解码控制器100送至其他解码功能模块使用。为具备应对数字电影领域对高分辨率、高码率和高帧率要求的解码能力,在JPEG2000的码流解析时可以使用动态存储分片管理技术对码块压缩数据缓存330进行有效的使用,码块压缩数据缓存330可在内部缓冲存储多个码块的压缩数据及码块解码参数,有效降低了对缓存的容量要求,动态存储分片管理完成存储内部分片区域的空闲标记、写入标记、就绪标记和使用标记。
EBCOT解码器400包括:算术解码器410,位平面建模器420,码块位平面存储器430;
EBCOT解码器400通过内部算术解码器410和位平面建模器420完成码块压缩数据的解码运算,将位平面数据和码块所属信息存入本地位平面存储器430,本地位平面存储器430将数据再送至逆量化器500。其中,解码所需的码块的压缩数据及码块解码参数可以从码块压缩数据缓存330中获取,另外,解码参数也可以从解码控制器100中获取;在较佳实施中通过采用多个EBCOT解码器并行运行可极大提高系统的EBCOT解码能力,多个EBCOT解码器可按照分时复用从码块压缩数据缓存330读取各自所需的码块压缩数据。因此在具体实施中EBCOT解码器的实际使用个数可按照需要加以调整,不限于只使用一个实例。
逆量化器500包括:逆量化单元510,帧存储接口520,码块小波数据缓存530;
逆量化器500从解码控制器100获取量化表等相关解码参数,逆量化单元510对接收的码块位平面数据进行逆量化计算,帧存储接口520按照码块所属信息完成对应子带小波数据地址换算,逆量化后的码块小波数据经由内部码块小波数据缓存530缓冲后按照对应子带小波数据地址通过外部存储控制器600存入外部SDRAM,该缓冲存储器530使用动态存储分片管理技术提供多个码块小波系数的缓冲存储,逆量化器500对就绪的码块小波数据在调度后通过外部存储控制器600写入外部存储器以重构图像的各级子带小波数据。在较佳实施中逆量化器500可从多个EBCOT解码器接收解码后的位平面数据,通过查询各个EBCOT解码器的完成状态,将当前已就绪的码块位平面数据从相应EBCOT解码器读出并进行逆量化,由此可支持多EBCOT解码器的并行运行。
外部存储控制器600实现对外部存储器的实际物理访问操作,将外部存储器虚拟成一个多端口存储器来实现解码器的多通道并行输入/输出。外部存储器可存储多帧图像的子带小波数据,以此实现图像级别的流水操作。
逆小波变换运算器700包括:计算控制器710,数据管理单元720,逆小波变换内核单元730。
逆小波变换运算器700内部由计算控制单元710、数据管理单元720和逆小波变换内核单元730构成,计算控制单元710根据图像及子带几何参数和小波变换级数生成整个计算过程的调度控制,数据管理单元720在调度控制安排下完成逆小波变换所需的数据访存和数据本地缓冲存储,逆小波变换内核单元730采用基于提升架构的流水线实现,逆小波变换内核模块具体使用9/7小波提升架构并具备16位定点精度。计算控制单元710协调控制数据管理单元720和逆小波变换内核单元730的并行运行,高速完成图像的各级逆小波变换计算工作。
逆小波变换运算器700的最终输出送至多分量转换器800进行分量转换,多分量转换器800内部使用像素级流水线实现像素数据的实时分量转换,多分量转换器700具备16位定点精度。像素输出缓存900从多分量转换器800接收像素分量数据并在内部进行缓冲以供外部装置读取,解码控制器100根据图像几何参数和输出图像帧率设定像素输出时钟速率并由像素输出缓存900送出相关图像行帧时序指示。
利用上述解码装置在进行JPEG2000图像码流的解码时,具体的解码流程如图2所示,包括如下步骤:
步骤201,接收并缓存码流;
码流输入缓存200根据解码控制器100的控制从外部的码流提供装置接收JPEG2000码流数据并进行缓冲,缓冲后的JPEG2000码流将送入码流解析器300。
其中,码流输入缓存200可以采用先进先出(FIFO)的缓冲方式。
步骤202,码流解析
码流解析器300根据解码控制器100的控制在码流输入200的数据就绪后对JPEG2000码流进行解析。
码流解析器300从码流输入缓存200读取JPEG2000码流数据进行码流解析,恢复出码流内含的全局解码参数信息;根据全局解码参数中的渐进参数、几何参数信息和离散小波变换(DWT)级数参数等调用几何协处理器320计算出当前码流各码块的具体几何信息,码流解析内核310在码块几何信息基础上解析码流进而提取出各码块压缩数据和码块解码参数,并通过码块压缩数据缓存330缓冲后送至EBCOT解码器400。
其中,码块压缩数据缓存330可以使用动态存储分片管理技术来有效使用数据缓存。
步骤203,EBCOT解码
EBCOT解码器400根据解码控制器100的控制在码块压缩数据缓存330的数据就绪后进行码块位平面数据的解压缩计算。
EBCOT解码器400从码流解析器300内部的码块压缩数据缓存330读取各码块压缩数据和码块解码参数,进行各码块的位平面数据的解压缩计算,具体地,通过EBCOT解码器400内部的算术解码器410和位平面建模器420对码块进行逐个位平面的计算,在此计算过程中将使用码块压缩数据和码块解码参数作为解码输入,在码块的位平面数据全部计算完毕后将码块的位平面数据和码块解码参数存储至位平面存储器430,再由位平面存储器430将数据送至逆量化器500。
其中,EBCOT解码器400可以有多个,多个EBCOT解码器400可以利用码块压缩数据的块间独立性进行多个码块的并行解码,各EBCOT解码器400之间功能独立,为实现多个EBCOT解码器400之间的协调,各EBCOT解码器可以输出解码进度指示以供查询和控制。
步骤204,逆量化及图像重建
逆量化器500根据解码控制器100的控制,在查询到EBCOT解码器400输出的码块位平面数据就绪指示后进行逆量化及图像重建。
逆量化器500根据码块解码参数从解码控制器100中获取当前码块的量化参数以计算当前的量化步长,读取EBCOT解码器输出的位平面数据并依据量化步长由逆量化单元510进行逆量化计算,逆量化后的码块小波数据存储在码块小波数据缓存530中,帧存储接口520根据码块解码参数完成当前码块数据对应的外部子带小波数据存储地址的换算,并通过外部存储控制器600将逆量化后的码块小波数据写至外部存储器以重建图像各子带小波系数;
其中,数据外部存储控制器600实现对外部存储器的实际物理访问操作,从逆量化器500接收数据访问请求并作出响应,执行逆量化后的码块小波数据写出操作;从逆小波变换运算器700接收数据访问请求并作出响应,完成各子带小波系数的读取和中间数据的访存;外部存储器600可存储多帧图像的子带小波数据,以此实现图像级别流水操作的数据隔离。
步骤205,逆小波变换
逆小波变换运算器700根据解码控制器100的控制在外部存储中的各子带小波系数就绪后进行二维逆小波变换的计算。
计算控制器710根据解码控制器100给出的小波变换级数以及各子带几何参数生成计算过程控制,逆小波变换运算器700内部的数据管理单元720根据计算过程控制通过外部存储控制器600进行子带小波系数的访存操作,逆小波变换运算器内部的逆小波变换内核单元730在计算过程控制下对各子带小波系数进行各级逆小波变换,逆小波变换内核模块具可以使用9/7小波提升架构实现,具备16位定点精度,逆小波变换运算器700的最终输出送至多分量转换器800进行分量转换。
步骤206,分量转换
多分量转换器800根据解码控制器100的控制进行像素分量转换。
多分量转换器800根据解码控制器100给出的解码参数对其内部的分量转换电路进行参数配置,具体为设定内部矩阵向量乘电路的矩阵参数,多分量转换器800按照像素流水方式完成规定的分量转换操作,其具备16位定点精度,并将分量转换后的像素分量数据送入像素输出缓存900;
步骤207,解码码流输出
像素输出缓存900根据解码控制器100的控制进行解码码流的输出。
像素输出缓存900从多分量转换器800接收像素分量数据流水输出并在内部进行缓冲以供外部装置读取,并根据解码控制器100通过图像几何参数和输出图像帧率确定的像素输出时钟速率进行图像数据输出,同时送出相关图像行帧时序指示。
由上述的实施例可见,由于近年来FPGA技术取得了巨大发展,现在已从最初只能面向小规模纯逻辑替代的应用转变成为能够面向复杂的高计算密集型应用。现阶段FPGA器件中除了集成有丰富的可配置逻辑块资源(CLB)之外,还包括大量的面向计算密集应用的嵌入式DSP硬件功能单元(如DSP48)、块RAM(block RAM)、分布式存储器、时钟管理模块(DCM)和用于高速通信的串行收发单元。同时围绕FPGA设计开发流程,各FPGA厂商推出了一系列的前后端开发工具以及FPGA的在片逻辑分析测试工具,在软硬件上保证了在FPGA上可靠地实现高性能计算。因此,本发明的这种基于FPGA的JPEG2000图像解码装置和方法,完全可以达到高码率、高帧率的JPEG2000图像实时解码输出的要求,同时基于FPGA的硬件可编程特性,使其灵活性很高,在不更换芯片的前提下,很容易通过修改逻辑电路设计实现性能和功能的提升,后续发展空间很大。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。