首页> 中国专利> 应用于JPEG2000的基于二维离散小波逆变换的硬件设计方法

应用于JPEG2000的基于二维离散小波逆变换的硬件设计方法

摘要

应用于JPEG2000的基于二维离散小波逆变换的硬件设计方法,属于图像编解码技术领域。本发明解决了现有的小波逆变换频率低下,计算资源复用程度低,缓存消耗过大以及控制复杂的问题。本发明通过对协议中给定公式进行等价变形,打破奇偶数据计算时的相互等待过程,自由地进行分步计算,减少冗余存储。针对变形公式各自的特点,提出了交替扫描和栅栏型扫描两种数据读取方式,并针对并行变换行列一维方向分别设计基于流水的数据流,使硬件结构关键路径仅为一个乘法器,并可时分复用计算单元,减少面积消耗并提高吞吐率。所述方法能够在面积、吞吐率、存储器以及计算单元间寻得较好的折衷。本发明可应用于JPEG2000图像编解码系统。

著录项

  • 公开/公告号CN104539973A

    专利类型发明专利

  • 公开/公告日2015-04-22

    原文格式PDF

  • 申请/专利权人 哈尔滨工业大学;

    申请/专利号CN201510046773.8

  • 发明设计人 王进祥;韩谨恒;陆嵩;付方发;

    申请日2015-01-29

  • 分类号H04N19/63;H04N19/42;

  • 代理机构哈尔滨市松花江专利商标事务所;

  • 代理人杨立超

  • 地址 150001 黑龙江省哈尔滨市南岗区西大直街92号

  • 入库时间 2023-12-18 08:15:34

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-11-03

    授权

    授权

  • 2015-05-20

    实质审查的生效 IPC(主分类):H04N19/63 申请日:20150129

    实质审查的生效

  • 2015-04-22

    公开

    公开

说明书

技术领域

本发明涉及一种应用于JPEG2000的硬件设计方法,尤其涉及一种应用于JPEG2000的二维离散 小波逆变换(IDWT)的硬件设计方法,属于图像编解码技术领域。

背景技术

JPEG2000静止图像压缩标准创造性地引入了两种离散小波变换核,结合优化截断的嵌入式块编 码算法,因而使其具有比传统JPEG协议更加优越的性能。

JPEG2000采用了离散小波作为时频域变换算法,并引入了5/3和9/7两种小波基分别应用于无损 和有损模式。不少开源软件公开了源代码,各大硬件制造公司纷纷推出了商用级编解码芯片,但并未 开放硬件代码。

现有的DWT/IDWT硬件结构由于提升格式算法中向下取整符号的存在,使奇偶数据的计算需相 互等待,既难以分步计算,减少冗余存储和复用并行存储单元,也限制了数据通路的关键路径分割, 导致频率低下,还难以时分复用计算单元,达到面积最优。同时由于在现有的数据扫描方式下未能对 数据流进行合理高效的设计,使行列并行变换时的转置存储消耗过大且控制复杂。

发明内容

本发明的目的是提出一种应用于JPEG2000的基于二维离散小波逆变换的硬件设计方法,以解决 针对现有的小波逆变换频率低下,计算资源复用程度低,缓存消耗过大以及控制复杂的问题。

本发明为解决上述技术问题所采用的技术方案是:

本发明所述的应用于JPEG2000的基于二维离散小波逆变换的硬件设计方法,是按照以下步骤实 现的:步骤一、对JPEG2000中给定的一维小波提升格式进行等价变形,其中一维离散小波逆变换的 等价变形过程为:

根据JPEG2000中给定的一维小波提升格式,如式(1)和式(2)所示,Si和di分别表示输入的 偶数位和奇数位数据,和为变换后的偶数位和奇数位数据,γ、δ、α、β和k均为JPEG2000 协议里的固定定常系数,i-1,i+1表示前一个,后一个数,其余均为中间变量;

对于5/3小波打开其向下取整符号,如式(3)所示,而对于9/7小波,对等式两边同时乘以伸缩 因子,依据伸缩因子的不同,得到三种不同的变形公式,分别命名为DS、DD、SS型,如式(4)~ (6)所示:

5/3小波一级提升过程

9/7小波伸缩过程Si(2)=kSidi(2)=1kdi

9/7小波一级提升过程Si(1)=Si(2)-δ×(di-1(2)+di(2))di(1)=di(2)-γ(Si(1)+Si+1(1))---(2)

9/7小波二级提升过程Si(0)=Si(1)-β×(di-1(1)+di(1))di(0)=di(1)-α(Si(0)+Si+1(0))

5/3小波一级提升过程

DS型:

9/7小波一级提升过程kδ×Si(1)=k2δSi-(di-1+di)kγδdi(1)=1γδdi-(kδSi(1)+kδSi+1(1))

9/7小波二级提升过程kβγδ×Si(0)=1βγ×(kδ×Si(1))-(kγδ×di-1(1)+kγδ×di(1))kαβγδ×di(0)=1αβ(kγδdi(1))-(kβγδSi(0)+kβγδSi+1(0))---(4)

9/7小波伸缩过程Si(0)=βγδk×(kβγδSi(0))di(0)=αβγδk×(kαβγδdi(0))

SS型:

9/7小波一级提升过程1k×Si(1)=Si-δk2×(di-1+di)1γk×di(1)=1γδ×(δk2di)-(1kSi(1)+1kSi+1(1))

9/7小波二级提升过程1k×Si(0)=-1kSi(1)-βγ×(1γk×di-1(1)+1γk×di(1))1αk×di(0)=1αβ×(βkdi(1))-(1kSi(0)+1kSi+1(0))---(5)

9/7小波伸缩过程Si(0)=k×(1kSi(0))di(0)=αk×(1αkdi(0))

DD型:

9/7小波一级提升过程kδ×Si(1)=k2δSi-(di-1+di)kdi(1)=di-γδ×(kδSi(1)+kδSi+1(1))

9/7小波二级提升过程kβ×Si(0)=1βγ×(γkSi(1))-(k×di-1(1)+k×di(1))k×di(0)=k×di(1)-αβ×(kβSi(0)+kβSi+1(0))---(6)

9/7小波伸缩过程Si(0)=βk×(kβSi(0))di(0)=1k×(kdi(0));

步骤二、根据步骤一的变形公式,通过交替扫描方式或栅栏扫描方式读取小波逆变换所需的输入 数据,交替扫描方式对上述三种变形公式均适用,而栅栏扫描方式仅适用于DD型和SS型;

步骤三、将步骤一中变换后的数据写回,其中对于栅栏扫描方式按照栅栏扫描方式写回,对于交 替扫描方式按“z字形”方式写回;

步骤四、对于栅栏扫描方式,用栅栏扫描硬件结构实现二维小波逆变换,所述栅栏扫描硬件结构 包括:

用于在行方向进行一维小波逆变换的行逆变换模块、用于在列方向进行一维小波逆变换的列逆变 换模块,所述行逆变换模块、列逆变换模块均包含用于完成一级提升过程的一级提升子模块、用于完 成二级提升过程的二级提升子模块和用于完成伸缩过程的伸缩子模块;

对于交替扫描方式,用交替扫描硬件结构实现二维小波逆变换,所述交替扫描硬件结构除栅栏扫 描硬件结构所包括的模块外,还包括用于将列逆变换模块的输出数据重排,并将重排后的数据作为行 逆变换模块的输入数据的单寄存器重排模块;

步骤五、基于步骤一所述的变形公式、步骤四所述的模块并依据步骤二和步骤三所述的数据读取 和写回方式,采用硬件设计原则分别设计行逆变换和列逆变换的数据流图;

步骤六、根据步骤五所述的数据流图设计得到列逆变换模块的硬件结构,其中DS型公式在交替 扫描方式下所对应的列逆变换硬件结构为:

一级提升子模块和二级提升子模块均包含5个二路选择器M1、M2、M3、M4、M5,2个加法器 A1、A2,1个乘法器、2个开关S1、S2,3个单寄存器R1、R4、R5,3个乒乓寄存器R2、R3和R6;

单寄存器R1的数据输入端为提升子模块的数据输入端,数据输出端移出的数据同时输入至二路 选择器M1的1数据输入端和开关S1的输入端,开关S1的输出端接至乒乓寄存器R6的输入端,乒 乓寄存器R6的输出端同时接在二路选择器M1的0数据输入端和加法器A1的输入端,二路选择器 M1的输出端与乘法器的一个输入端相连,乘法器的另一输入端与二路选择器M2的输出端相连,定 常系数输入至二路选择器M2的两个输入端;

其中,一级提升子模块中,定常系数输入至M2的1数据输入端,定常系数输入至M2 的0数据输入端,二级提升子模块中,定常系数输入至M2的1数据输入端,定常系数输入 至M2的0数据输入端;

乘法器的输出端接入乒乓寄存器R2的输入端,R2的输出端同时接入二路选择器M3的0数据输 入端和二路选择器M4的1数据输入端,M3的数据输出端接入加法器A1的一个输入端,加法器A1 的输出端接入乒乓寄存器R3的输入端,R3的输出端同时接入M3的1数据输入端和开关S2的输入 端,S2的输出端接在单寄存器R4的输入端,R4的输出端同时接在加法器A2的一个输入端和二路选 择器M5的1数据输入端,A2的另一输入端接在M4的输出端,A2的输出端接在单寄存器R5的输入 端,R5的输出端同时接在M4的0数据输入端和M5的0数据输入端,M5的输出端即为提升子模块 的数据输出端;

伸缩子模块包含一个乘法器和一个二路选择器,乘法器的一个输入端和输出端分别为伸缩子模块 的输入端和输出端,伸缩子模块的输入端与二级提升子模块的输出端相连,伸缩子模块的输出端即为 列逆变换模块的输出端,乘法器的另一个输入端为二路选择器的输出端,定常系数和分别 输入至二路选择器的1数据输入端和0数据输入端;

步骤七、根据步骤五所述的数据流图设计得到行逆变换模块的硬件结构,其中DS型公式在交替 扫描方式下所对应的行逆变换硬件结构为:

一级提升子模块和二级提升子模块均包含5个二路选择器M1、M2、M3、M4、M5,2个加法器 A1、A2,1个乘法器、两个开关S1、S2,4个单寄存器R1、R2、R3、R4,两个存储器Mem1、Mem2;

单寄存器R1的输入端为提升子模块的数据输入端,R1的输出端同时接在二路选择器M1的1数 据输入端和开关S1的输入端,S1的输出端接在存储器Mem1的输入端,Mem1的输出端同时接在加 法器A1的一个输入端和M1的0数据输入端,M1的数据输出端接在乘法器的一个输入端,乘法器的 另一输入端接在二路选择器M2的输出端,定常系数输入至M2的数据输入端,一级提升子模块中, 定常系数输入至1数据输入端,定常系数输入至0数据输入端,二级提升子模块中,定常系数 输入至1数据输入端,定常系数输入至0数据输入端;

乘法器的输出端接在寄存器R2的输入端,R2的数据输出端同时接在M3的0数据输入端和M4 的1数据输入端,M3的输出端接在加法器A1的另一输入端,加法器A1的输出端接在寄存器R3的 输入端,寄存器R3的输出端同时接在M3的1数据输入端和开关S2的输入端,开关S2的输出端接 在寄存器R4的输入端,R4的输出端同时接在加法器A2的输入端和二路选择器M5的1数据输入端, 加法器A2的另一输入端接在M4的输出端,加法器A2的输出端接在存储器Mem2的输入端,Mem2 的输出端同时接在M4的0数据输入端和二路选择器M5的0数据输入端,M5的输出端即为提升子模 块的数据输出端;

二级提升子模块中,寄存器R3和存储器Mem1的位置互换;

步骤八、根据步骤四所述的单寄存器重排模块包括寄存器R和二路选择器M0、M1,二路选择器 M0的1数据输入端和M1的0数据输入端接在单寄存器重排模块的数据输入端,M0的输出端接在寄 存器R的输入端,R的输出端同时接在M0的0数据输入端和M1的1数据输入端,M1的输出端即为 重排后的数据输出端;

重排过程以四个时钟周期为一个阶段,寄存器在一个阶段内的前三个时钟周期进行数据更新,所 更新的数据为输入数据,在第四个时钟周期保持,输出数据在第三个周期由输入数据直接提供,在其 余三个周期由寄存器提供;

步骤九、根据步骤五所述的数据流图设计得到列逆变换模块的硬件结构,其中DD型公式在栅栏 扫描方式下所对应的列逆变换硬件结构为:

一级提升子模块和二级提升子模块均包含7个单寄存器R1、R2、R3、R4、R5、R6、R7,6个二 路选择器M1、M2、M3、M4、M5、M6,3个开关S1、S2、S3,2个加法器A1、A2,1个乘法器;

单寄存器R1的输入端为提升子模块的数据输入端,R1的输出端同时接在M1的1数据输入端和 S1的输入端,S1的输出端接在R3的输入端,R3的输出端同时接在A1的一个输入端和S3的输入端, M1的输出端接在乘法器的一个输入端,乘法器的输出端接在R2的输入端,R2的输出端同时接在M3 的0数据输入端、M5的1数据输入端、S2的输入端,M3的输出端接在A1的另一个输入端,A1的 输出端接在R7的输入端,R7的输出端同时接在M1的0数据输入端和M3的1数据输入端,S3的输 出端接在R4的输入端,R4的输出端接在M4的0数据输入端,M4的输出端接在A2的一个输入端, A2的输出端接在R5的输入端,R5的输出端同时接在M6的1数据输入端和M4的1数据输入端,S2 的输出端接在R6的输入端,R6的输出端同时接在M5的0数据输入端和M6的0数据输入端;

一级提升子模块中,定常系数和γδ分别输入至M2的1数据输入端和0数据输入端,二级提 升子模块中,定常系数和αβ分别输入至M2的1数据输入端和0数据输入端,M6的输出端就是 提升子模块的数据输出端;

伸缩子模块包含1个乘法器和1个二路数据选择器,乘法器的一个输入端和输出端分别为伸缩子 模块的输入输出端,伸缩子模块的输入端与二级提升子模块的输出端相连,伸缩子模块的输出端即为 列逆变换模块的输出端,定常系数和分别输入至二路数据选择器的1和0数据输入端;

步骤十、根据步骤五所述的数据流图设计得到行逆变换模块的硬件结构,其中DD型公式在栅栏 扫描方式下所对应的行逆变换硬件结构为:

一级提升子模块和二级提升子模块均包含5个单寄存器R1、R2、R3、R4、R5,8个二路选择器 M1、M2、M3、M4、M5、M6、M7、M8,2个加法器A1、A2,两个存储器Mem1、Mem2,1个乘 法器;

R1的输入端为提升子模块的输入端,R1的输出端同时接在M1的0数据输入端、M6的1数据输 入端和R4的输入端,M1的输出端接在乘法器的一个输入端,乘法器的输出端接在R2的输入端,R2 的输出端同时接在M3的1数据输入端、M5的1数据输入端和M4的0数据输入端,M3的输出端接 在Mem1的数据输入端,Mem1的输出端同时接在M4的1数据输入端和M5的0数据输入端,M5 的数据输出端同时接在A2的一个输入端和M8的0数据输入端,A2的输出端同时接在M8的1数据 输入端和M7的0数据输入端,M7的输出端接在Mem2的输入端,Mem2的输出端同时接在A2的另 一输入端和M6的0数据输入端,M6的输出端接在A1的一个输入端,A1的另一输入端接在M4的 输出端,A1的输出端接在R3的输入端,R3的输出端同时接在M1的1数据输入端和M3的0数据输 入端,R4的输出端接在R5的输入端,R5的输出端接在M7的1数据输入端;

一级提升子模块中,定常系数和γδ分别输入至M2的0数据输入端和1数据输入端,二级提 升子模块中,定常系数和αβ分别输入至M2的0数据输入端和1数据输入端,M8的输出端即为 提升子模块的数据输出端;

行逆变换模块中的伸缩子模块与列逆变换模块中的伸缩子模块硬件结构相同,定常系数和分别输入至二路选择器的0、1数据输入端,二路选择器由所处理数据所属列的奇偶性控制,当列为偶 数时,选择0数据输入端作为输出,否则,选择1数据输入端作为输出;

步骤十一、根据步骤五所述的数据流图设计得到列逆变换模块的硬件结构,其中SS型公式在栅 栏扫描方式下所对应的列逆变换模块为:

一级提升子模块和二级提升子模块均包含7个单寄存器R1、R2、R3、R4、R5、R6、R7,6个二 路选择器M1、M2、M3、M4、M5、M6,两个加法器A1、A2,1个乘法器、1个反向二路选择器 D1,1个开关;

单寄存器R1的输入端为提升子模块的输入端,R1的输出端同时接在R2的输入端和M4的0数 据输入端,R2的输出端接在M1的0数据输入端,M1的输出端接在加法器A1的一个输入端,A1的 输出端接在R3的输入端,R3的输出端同时接在开关的输入端、M1的1数据输入端和M2的0数据 输入端,开关的输出端接在R4的输入端,R4的输出端接在M2的1数据输入端,M2的输出端同时 接在M3的1数据输入端和A2的一个输入端,A2的输出端接在R5的输入端,R5的输出端同时接在 M3的0数据输入端和M5的0数据输入端,R6的输出端同时接在M4的1数据输入端和A1的另一 个输入端,R6的输入端接在反向二路选择器D1的0数据输出端,M4的输出端接在乘法器的一个输 入端,乘法器的另一个输入端接在M6的输出端,乘法器的输出端接在D1的输入端,D1的1数据输 出端接在R7的输入端,R7的输出端接在M5的1数据输入端,M3的输出端即为提升子模块的数据 输出端;

一级提升子模块中,定常系数输入至M6的1数据输入端,定常系数输入至0数据输入端, 二级提升子模块中,定常系数输入至M6的1数据输入端,定常系数βγ输入至0数据输入端;

伸缩子模块包含一个乘法器和一个二路数据选择器,乘法器的输出端和一个输入端分别为伸缩子 模块的输入端、输出端,伸缩子模块的输入端与二级提升子模块的输出端相连,伸缩子模块的输出端 即为列逆变换模块的输出端,乘法器的另一个输入端接在二路数据选择器的输出端,定常定常系数k和 αk分别输入至二路数据选择器的1和0数据端;

步骤十二、根据步骤五所述的数据流图设计得到行逆变换模块的硬件结构,其中SS型公式在栅 栏扫描方式下所对应的行逆变换模块为:

一级提升子模块和二级提升子模块均包含4个寄存器R1、R2、R3、R4,8个二路选择器M1、 M2、M3、M4、M5、M6、M7、M8,2个加法器A1、A2,两个双端口存储器Mem1、Mem2,1个乘 法器;

R1的输入端为提升子模块的输入端,R1的输出端同时接在M1的0数据输入端和M8的1数据 输入端,M1的输出端接在A1的一个输入端,A1的另一个输入端接在M4的输出端,A1的输出端同 时接在Mem1的输入端和M2的1数据输入端,Mem1的输出端同时接在M2的0数据输入端和M1 的1数据输入端,M2的输出端接在R2的输入端,R2的输出端同时接在M3的0数据输入端和A2的 一个数据输入端,A2的另一输入端接在M5的数据输出端,A2的输出端同时接在M3的1数据输出 端和M6的0数据输入端,M6的输出端接在Mem2的输入端,Mem2的输出端同时接在M8的0数据 输入端和M5的1数据输入端,M8的输出端同时接在M4的0数据输入端和乘法器的一个输入端,乘 法器的输出端接在R3的输入端,R3的输出端同时接在M4的1数据输入端、M5的0数据输入端和 R4的输入端,R4的输出端接在M6的1数据输入端,M3的输出端即为提升子模块的数据输出端;

一级提升子模块中,定常系数和分别输入至乘法器的0、1数据输入端,二级提升子模块 中,定常系数和βγ分别输入至乘法器的0、1数据输入端;

行逆变换模块中的伸缩子模块与列逆变换模块中的伸缩子模块硬件结构相同,定常系数αk和k 分别输入至二路选择器的0、1数据输入端,所有的二路数据选择器均由所处理数据所属列的奇偶性控 制,当列为偶数时,选择0数据输入端作为输出,否则,选择1数据输入端作为输出。

本发明的有益效果是:

1、通过对JPEG2000协议中给出的小波逆变换公式进行等价变形,打开5/3小波的向下取整符号, 使数据的分步计算更加灵活,同时为9/7小波提供多种变形格式,针对变形格式各自的特点,给出交 替扫描和栅栏扫描两种数据读取方式,为数据流的设计提供了更大的灵活性,使计算资源高度复用, 复用程度可提高40%~50%。

2、针对两种扫描方式进行数据流设计时,保证每级提升过程中任意时钟周期内最多只有一个乘法 器和两个加法器在工作,且三个计算单元并不级联,同时使并行变换的存储节点只有两个,从而保证 可通过时分复用技术使由数据流映射的硬件电路中的提升模块只有1M2A(1乘法器两加法器)计算 单元,且关键路径只有一个乘法器的延时,整体硬件结构仅有四个存储单元,从而达到面积最优,时 序最优以及存储最优。

3、交替扫描方式下应用的单寄存器重排模块结构简单,而栅栏型扫描方式下完全无需重排逻辑, 消除片上转置存储单元以及存储单元产生的控制复杂度,同时提高了行列模块的并行度,降低了 片上能耗。

4、行列并行解码,提高吞吐率的同时降低访问外部存储器产生的能耗。

附图说明

图1为三级8×8单元采用具体实施方式一所述的按列方向交替扫描方式进行存储器数据读取的原 理示意图,图中LL、HL、LH、HH为JPEG2000规定的子带标识,数字标号为小波变换级数;

图2为三级8×8单元采用具体实施方式一所述的按列方向栅栏扫描方式进行存储器数据读写的原 理示意图;

图3为三级8×8单元采用具体实施方式一所述的匹配列方向交替扫描方式进行存储器数据写回的 原理示意图;

图4为两列交替扫描方式下小波逆变换的总体硬件结构图;

图5为基于列的栅栏扫描方式下小波变换/逆变换的总体硬件结构图;

图6为DS型变形格式在交替扫描方式下的列(行)数据流图,图中T表示时钟周期,<<<1表示 算术左移,虚线表示省略的后续数据流;

图7为DS型变形格式在交替扫描方式下的行(列)数据流图;

图8为基于图6中提升过程设计的硬件结构图;

图9为基于图7中提升过程设计的硬件结构图;

图10为基于图6或图7伸缩过程设计的硬件结构图;

图11为基于图4中单寄存器重排模块的数据输入输出顺序图;

图12为基于图11设计的硬件结构图;

图13为DD型变形格式在栅栏扫描方式下的列(行)数据流图;

图14为DD型变形格式在栅栏扫描方式下的行(列)数据流图,图中C为列(行)数;

图15为基于图13中提升过程设计的硬件结构图;

图16为基于图14中提升过程设计的硬件结构图;

图17为SS型变形格式在栅栏扫描方式下的列(行)数据流图;

图18为SS型变形格式在栅栏扫描方式下的行(列)数据流图;

图19为基于图17中提升过程设计的硬件结构图;

图20为基于图18中提升过程设计的硬件结构图;

图21为基于图6、图7、图13、图14、图17和图18伸缩过程设计的硬件结构图。

具体实施方式

结合附图进一步详细说明本发明的具体实施方式。

具体实施方式一:下面结合图1~图21说明本实施方式,本实施方式所述的一种应用于JPEG2000 的基于二维离散小波逆变换的硬件设计方法,包括以下步骤:

步骤一、对JPEG2000中给定的一维小波提升格式进行等价变形,其中一维离散小波逆变换的等 价变形过程为:

根据JPEG2000中给定的一维小波提升格式,如式(1)和式(2)所示,Si(i在0到一维方向待处理 总数据的一半范围内)和di分别表示输入的偶数位和奇数位数据,和为变换后的偶数位和奇数 位数据,γ、δ、α、β和k均为JPEG2000协议里的固定定常系数,i-1,i+1表示前一个,后一个 数,其余均为中间变量;5/3小波仅含有一级提升过程,而9/7小波含有两级提升过程和一级伸缩过 程,二者的提升格式具有相似的形式,5/3小波可看作9/7小波的特例。

对于5/3小波打开其向下取整符号,如式(3)所示,而对于9/7小波,对等式两边同时乘以伸缩 因子,依据伸缩因子的不同,得到三种不同的变形公式,分别命名为DS、DD、SS型,如式(4)~ (6)所示:

5/3小波一级提升过程

9/7小波伸缩过程Si(2)=kSidi(2)=1kdi

9/7小波一级提升过程Si(1)=Si(2)-δ×(di-1(2)+di(2))di(1)=di(2)-γ(Si(1)+Si+1(1))---(2)

9/7小波二级提升过程Si(0)=Si(1)-β×(di-1(1)+di(1))di(0)=di(1)-α(Si(0)+Si+1(0))

5/3小波一级提升过程

DS型:

9/7小波一级提升过程kδ×Si(1)=k2δSi-(di-1+di)kγδdi(1)=1γδdi-(kδSi(1)+kδSi+1(1))

9/7小波二级提升过程kβγδ×Si(0)=1βγ×(kδ×Si(1))-(kγδ×di-1(1)+kγδ×di(1))kαβγδ×di(0)=1αβ(kγδdi(1))-(kβγδSi(0)+kβγδSi+1(0))---(4)

9/7小波伸缩过程Si(0)=βγδk×(kβγδSi(0))di(0)=αβγδk×(kαβγδdi(0))

SS型:

9/7小波一级提升过程1k×Si(1)=Si-δk2×(di-1+di)1γk×di(1)=1γδ×(δk2di)-(1kSi(1)+1kSi+1(1))

9/7小波二级提升过程1k×Si(0)=-1kSi(1)-βγ×(1γk×di-1(1)+1γk×di(1))1αk×di(0)=1αβ×(βkdi(1))-(1kSi(0)+1kSi+1(0))---(5)

9/7小波伸缩过程Si(0)=k×(1kSi(0))di(0)=αk×(1αkdi(0))

DD型:

9/7小波一级提升过程kδ×Si(1)=k2δSi-(di-1+di)kdi(1)=di-γδ×(kδSi(1)+kδSi+1(1))

9/7小波二级提升过程kβ×Si(0)=1βγ×(γkSi(1))-(k×di-1(1)+k×di(1))k×di(0)=k×di(1)-αβ×(kβSi(0)+kβSi+1(0))---(6)

9/7小波伸缩过程Si(0)=βk×(kβSi(0))di(0)=1k×(kdi(0));

步骤二、根据步骤一的变形公式,通过交替扫描方式或栅栏扫描方式读取小波逆变换所需的输入 数据,交替扫描方式对上述三种变形公式均适用,而栅栏扫描方式仅适用于DD型和SS型(图1交 替扫描,图2栅栏扫描);

步骤三、将步骤一中变换后的数据写回,其中对于栅栏扫描方式按照栅栏扫描方式写回,对于交 替扫描方式按如图3所示“z字形”方式写回(图3对应交替扫描方式获取数据,数据写回方式);

步骤四、对于栅栏扫描方式,用栅栏扫描硬件结构实现二维小波逆变换,所述栅栏扫描硬件结构 包括:

用于在行方向进行一维小波逆变换的行逆变换模块、用于在列方向进行一维小波逆变换的列逆变 换模块,所述行逆变换模块、列逆变换模块均包含用于完成一级提升过程的一级提升子模块、用于完 成二级提升过程的二级提升子模块和用于完成伸缩过程的伸缩子模块;

对于交替扫描方式,用交替扫描硬件结构实现二维小波逆变换,所述交替扫描硬件结构除栅栏扫 描硬件结构所包括的模块外,还包括用于将列逆变换模块的输出数据重排,并将重排后的数据作为行 逆变换模块的输入数据的单寄存器重排模块(图4对应交替扫描的总体硬件结构框图(包含了连接关 系)、图5对应栅栏扫描方式的总体硬件结构框图(包含了连接关系));

步骤五、基于步骤一所述的变形公式、步骤四所述的模块并依据步骤二和步骤三所述的数据读取 和写回方式,采用硬件设计原则分别设计行逆变换和列逆变换的数据流图(总的数据流图设计原则, 交替扫描方式下的数据流图包括:图6为DS型列逆变换数据流,图7为DS型行逆变换数据流;栅 栏扫描方式下的数据流图包括:图13为DD型列逆变换数据流,图14为DD型行逆变换数据流,图 17为SS型列逆变换数据流,图18为SS型行逆变换数据流);

步骤六、根据步骤五所述的数据流图设计得到列逆变换模块的硬件结构,其中DS型公式在交替 扫描方式下所对应的列逆变换硬件结构为:

一级提升子模块和二级提升子模块均包含5个二路选择器M1、M2、M3、M4、M5,2个加法器 A1、A2,1个乘法器、2个开关S1、S2,3个单寄存器R1、R4、R5,3个乒乓寄存器R2、R3和R6;

单寄存器R1的数据输入端为提升子模块的数据输入端,数据输出端移出的数据同时输入至二路 选择器M1的1数据输入端和开关S1的输入端,开关S1的输出端接至乒乓寄存器R6的输入端,乒 乓寄存器R6的输出端同时接在二路选择器M1的0数据输入端和加法器A1的输入端,二路选择器 M1的输出端与乘法器的一个输入端相连,乘法器的另一输入端与二路选择器M2的输出端相连,定 常系数输入至二路选择器M2的两个输入端;

其中,一级提升子模块中,定常系数输入至M2的1数据输入端,定常系数输入至M2 的0数据输入端,二级提升子模块中,定常系数输入至M2的1数据输入端,定常系数输入 至M2的0数据输入端;

乘法器的输出端接入乒乓寄存器R2的输入端,R2的输出端同时接入二路选择器M3的0数据输 入端和二路选择器M4的1数据输入端,M3的数据输出端接入加法器A1的一个输入端,加法器A1 的输出端接入乒乓寄存器R3的输入端,R3的输出端同时接入M3的1数据输入端和开关S2的输入 端,S2的输出端接在单寄存器R4的输入端,R4的输出端同时接在加法器A2的一个输入端和二路选 择器M5的1数据输入端,A2的另一输入端接在M4的输出端,A2的输出端接在单寄存器R5的输入 端,R5的输出端同时接在M4的0数据输入端和M5的0数据输入端,M5的输出端即为提升子模块 的数据输出端;

伸缩子模块包含一个乘法器和一个二路选择器,乘法器的一个输入端和输出端分别为伸缩子模块 的输入端和输出端,伸缩子模块的输入端与二级提升子模块的输出端相连,伸缩子模块的输出端即为 列逆变换模块的输出端,乘法器的另一个输入端为二路选择器的输出端,定常系数和分别 输入至二路选择器的1数据输入端和0数据输入端(图8为DS型列逆变换模块中提升子模块硬件结 构,两级提升子模块用一个图说明的,图10为伸缩子模块硬件结构);

步骤七、根据步骤五所述的数据流图设计得到行逆变换模块的硬件结构,其中DS型公式在交替 扫描方式下所对应的行逆变换硬件结构为:

一级提升子模块和二级提升子模块均包含5个二路选择器M1、M2、M3、M4、M5,2个加法器 A1、A2,1个乘法器、两个开关S1、S2,4个单寄存器R1、R2、R3、R4,两个存储器Mem1、Mem2;

单寄存器R1的输入端为提升子模块的数据输入端,R1的输出端同时接在二路选择器M1的1数 据输入端和开关S1的输入端,S1的输出端接在存储器Mem1的输入端,Mem1的输出端同时接在加 法器A1的一个输入端和M1的0数据输入端,M1的数据输出端接在乘法器的一个输入端,乘法器的 另一输入端接在二路选择器M2的输出端,定常系数输入至M2的数据输入端,一级提升子模块中, 定常系数输入至1数据输入端,定常系数输入至0数据输入端,二级提升子模块中,定常系数 输入至1数据输入端,定常系数输入至0数据输入端;

乘法器的输出端接在寄存器R2的输入端,R2的数据输出端同时接在M3的0数据输入端和M4 的1数据输入端,M3的输出端接在加法器A1的另一输入端,加法器A1的输出端接在寄存器R3的 输入端,寄存器R3的输出端同时接在M3的1数据输入端和开关S2的输入端,开关S2的输出端接 在寄存器R4的输入端,R4的输出端同时接在加法器A2的输入端和二路选择器M5的1数据输入端, 加法器A2的另一输入端接在M4的输出端,加法器A2的输出端接在存储器Mem2的输入端,Mem2 的输出端同时接在M4的0数据输入端和二路选择器M5的0数据输入端,M5的输出端即为提升子模 块的数据输出端;

值得注意的是,二级提升子模块中,寄存器R3和存储器Mem1的位置互换(图9为DS型行逆 变换模块中提升子模块硬件结构,两级提升子模块用一个图说明的,图10为伸缩子模块硬件结构)。

步骤八、步骤四所述的单寄存器重排模块包括寄存器R和二路选择器M0、M1,二路选择器M0 的1数据输入端和M1的0数据输入端接在单寄存器重排模块的数据输入端,M0的输出端接在寄存 器R的输入端,R的输出端同时接在M0的0数据输入端和M1的1数据输入端,M1的输出端即为重 排后的数据输出端;

重排过程以四个时钟周期为一个阶段,寄存器在一个阶段内的前三个时钟周期进行数据更新,所 更新的数据为输入数据,在第四个时钟周期保持,输出数据在第三个周期由输入数据直接提供,在其 余三个周期由寄存器提供(图12为单寄存器重排模块硬件结构图,为了完成图11所示的重排);

步骤九、根据步骤五所述的数据流图设计得到列逆变换模块的硬件结构,其中DD型公式在栅栏 扫描方式下所对应的列逆变换硬件结构为:

一级提升子模块和二级提升子模块均包含7个单寄存器R1、R2、R3、R4、R5、R6、R7,6个二 路选择器M1、M2、M3、M4、M5、M6,3个开关S1、S2、S3,2个加法器A1、A2,1个乘法器;

单寄存器R1的输入端为提升子模块的数据输入端,R1的输出端同时接在M1的1数据输入端和 S1的输入端,S1的输出端接在R3的输入端,R3的输出端同时接在A1的一个输入端和S3的输入端, M1的输出端接在乘法器的一个输入端,乘法器的输出端接在R2的输入端,R2的输出端同时接在M3 的0数据输入端、M5的1数据输入端、S2的输入端,M3的输出端接在A1的另一个输入端,A1的 输出端接在R7的输入端,R7的输出端同时接在M1的0数据输入端和M3的1数据输入端,S3的输 出端接在R4的输入端,R4的输出端接在M4的0数据输入端,M4的输出端接在A2的一个输入端, A2的输出端接在R5的输入端,R5的输出端同时接在M6的1数据输入端和M4的1数据输入端,S2 的输出端接在R6的输入端,R6的输出端同时接在M5的0数据输入端和M6的0数据输入端;

一级提升子模块中,定常系数和γδ分别输入至M2的1数据输入端和0数据输入端,二级提 升子模块中,定常系数和αβ分别输入至M2的1数据输入端和0数据输入端,M6的输出端就是 提升子模块的数据输出端;

伸缩子模块包含1个乘法器和1个二路数据选择器,乘法器的一个输入端和输出端分别为伸缩子 模块的输入输出端,伸缩子模块的输入端与二级提升子模块的输出端相连,伸缩子模块的输出端即为 列逆变换模块的输出端,定常系数和分别输入至二路数据选择器的1和0数据输入端(图15为 DD型列逆变换模块中提升子模块硬件结构,两级提升子模块用一个图说明的,图21为伸缩子模块硬 件结构);

步骤十、根据步骤五所述的数据流图设计得到行逆变换模块的硬件结构,其中DD型公式在栅栏 扫描方式下所对应的行逆变换硬件结构为:

一级提升子模块和二级提升子模块均包含5个单寄存器R1、R2、R3、R4、R5,8个二路选择器 M1、M2、M3、M4、M5、M6、M7、M8,2个加法器A1、A2,两个存储器Mem1、Mem2,1个乘 法器;

R1的输入端为提升子模块的输入端,R1的输出端同时接在M1的0数据输入端、M6的1数据输 入端和R4的输入端,M1的输出端接在乘法器的一个输入端,乘法器的输出端接在R2的输入端,R2 的输出端同时接在M3的1数据输入端、M5的1数据输入端和M4的0数据输入端,M3的输出端接 在Mem1的数据输入端,Mem1的输出端同时接在M4的1数据输入端和M5的0数据输入端,M5 的数据输出端同时接在A2的一个输入端和M8的0数据输入端,A2的输出端同时接在M8的1数据 输入端和M7的0数据输入端,M7的输出端接在Mem2的输入端,Mem2的输出端同时接在A2的另 一输入端和M6的0数据输入端,M6的输出端接在A1的一个输入端,A1的另一输入端接在M4的 输出端,A1的输出端接在R3的输入端,R3的输出端同时接在M1的1数据输入端和M3的0数据输 入端,R4的输出端接在R5的输入端,R5的输出端接在M7的1数据输入端;

一级提升子模块中,定常系数和γδ分别输入至M2的0数据输入端和1数据输入端,二级提 升子模块中,定常系数和αβ分别输入至M2的0数据输入端和1数据输入端,M8的输出端即为 提升子模块的数据输出端;

存储器Mem1和Mem2为双端口SRAM,其位深为所处理图像列宽大小,二者读写使能相对于提 升过程的使能端延迟时钟周期不同,如表1所示。

行逆变换模块中的伸缩子模块与列逆变换模块中的伸缩子模块硬件结构相同,定常系数和分别输入至二路选择器的0、1数据输入端,二路选择器由所处理数据所属列的奇偶性控制,当列为偶 数时,选择0数据输入端作为输出,否则,选择1数据输入端作为输出(图16为DD型行逆变换模块 中提升子模块硬件结构,两级提升子模块用一个图说明的,图21为伸缩子模块硬件结构);

对双端口存储器的操作时其读写使能信号较提升过程延时的时钟周期数如表1所示。

步骤十一、根据步骤五所述的数据流图设计得到列逆变换模块的硬件结构,其中SS型公式在栅 栏扫描方式下所对应的列逆变换模块为:

一级提升子模块和二级提升子模块均包含7个单寄存器R1、R2、R3、R4、R5、R6、R7,6个二 路选择器M1、M2、M3、M4、M5、M6,两个加法器A1、A2,1个乘法器、1个反向二路选择器 D1,1个开关;

单寄存器R1的输入端为提升子模块的输入端,R1的输出端同时接在R2的输入端和M4的0数 据输入端,R2的输出端接在M1的0数据输入端,M1的输出端接在加法器A1的一个输入端,A1的 输出端接在R3的输入端,R3的输出端同时接在开关的输入端、M1的1数据输入端和M2的0数据 输入端,开关的输出端接在R4的输入端,R4的输出端接在M2的1数据输入端,M2的输出端同时 接在M3的1数据输入端和A2的一个输入端,A2的输出端接在R5的输入端,R5的输出端同时接在 M3的0数据输入端和M5的0数据输入端,R6的输出端同时接在M4的1数据输入端和A1的另一 个输入端,R6的输入端接在反向二路选择器D1的0数据输出端,M4的输出端接在乘法器的一个输 入端,乘法器的另一个输入端接在M6的输出端,乘法器的输出端接在D1的输入端,D1的1数据输 出端接在R7的输入端,R7的输出端接在M5的1数据输入端,M3的输出端即为提升子模块的数据 输出端;

一级提升子模块中,定常系数输入至M6的1数据输入端,定常系数输入至0数据输入端, 二级提升子模块中,定常系数输入至M6的1数据输入端,定常系数βγ输入至0数据输入端;

伸缩子模块包含一个乘法器和一个二路数据选择器,乘法器的输出端和一个输入端分别为伸缩子 模块的输入端、输出端,伸缩子模块的输入端与二级提升子模块的输出端相连,伸缩子模块的输出端 即为列逆变换模块的输出端,乘法器的另一个输入端接在二路数据选择器的输出端,定常定常系数k和 αk分别输入至二路数据选择器的1和0数据端(图19为SS型列逆变换模块中提升子模块硬件结构, 两级提升子模块用一个图说明的,图21为伸缩子模块硬件结构);

步骤十二、根据步骤五所述的数据流图设计得到行逆变换模块的硬件结构,其中SS型公式在栅 栏扫描方式下所对应的行逆变换模块为:

一级提升子模块和二级提升子模块均包含4个寄存器R1、R2、R3、R4,8个二路选择器M1、 M2、M3、M4、M5、M6、M7、M8,2个加法器A1、A2,两个双端口存储器Mem1、Mem2,1个乘 法器;

R1的输入端为提升子模块的输入端,R1的输出端同时接在M1的0数据输入端和M8的1数据 输入端,M1的输出端接在A1的一个输入端,A1的另一个输入端接在M4的输出端,A1的输出端同 时接在Mem1的输入端和M2的1数据输入端,Mem1的输出端同时接在M2的0数据输入端和M1 的1数据输入端,M2的输出端接在R2的输入端,R2的输出端同时接在M3的0数据输入端和A2的 一个数据输入端,A2的另一输入端接在M5的数据输出端,A2的输出端同时接在M3的1数据输出 端和M6的0数据输入端,M6的输出端接在Mem2的输入端,Mem2的输出端同时接在M8的0数据 输入端和M5的1数据输入端,M8的输出端同时接在M4的0数据输入端和乘法器的一个输入端,乘 法器的输出端接在R3的输入端,R3的输出端同时接在M4的1数据输入端、M5的0数据输入端和 R4的输入端,R4的输出端接在M6的1数据输入端,M3的输出端即为提升子模块的数据输出端;

一级提升子模块中,定常系数和分别输入至乘法器的0、1数据输入端,二级提升子模块 中,定常系数和βγ分别输入至乘法器的0、1数据输入端;

行逆变换模块中的伸缩子模块与列逆变换模块中的伸缩子模块硬件结构相同,定常系数αk和k 分别输入至二路选择器的0、1数据输入端,所有的二路数据选择器均由所处理数据所属列的奇偶性控 制,当列为偶数时,选择0数据输入端作为输出,否则,选择1数据输入端作为输出(图20为SS型 列逆变换模块中提升子模块硬件结构,两级提升子模块用一个图说明的,图21为伸缩子模块硬件结 构)。

具体实施方式二:下面结合图1、图2说明本实施方式,本实施方式与具体实施方式一不同的是: 步骤二所述的交替扫描方式具体为:

以当前小波级数下两列为单位,交替读取每列中的两个数据直至列尾,依照同样的方式对后续列 重复操作,直至完成所有列数据的读取,当前级数下数据读取完成后,依照同样的方式对后续小波级 数的数据进行读取。

具体实施方式三:下面结合图3说明本实施方式,本实施方式与具体实施方式一或二不同的是: 步骤三所述的“z字形”方式为:

对于第一列数据,从上至下依次写回,若当前级数下总的列数为偶数,最后一列写回方式与第一 列相同,其余列按照与交替扫描相同的方式写回;若当前级数下总的列数为奇数,除第一列外,后续 列按照与交替扫描相同的方式写回。

具体实施方式四:下面结合图4、图5说明本实施方式,本实施方式与具体实施方式一至三之一 不同的是:步骤五所述的硬件设计原则为:

为了使高效复用计算资源和有效分割关键路径,需保证每级提升过程中单个时钟周期内仅有一个 乘法器和两个加法器在工作,且三个计算单元并非级联,对于交替扫描方式,列数据流还需兼顾两列 的数据输入,同时使行逆变换数据流仅含两个存储节点,整个数据流设计为全流水形式。

具体实施方式五:下面结合图8、图10说明本实施方式,本实施方式与具体实施方式一至四之一 不同的是:步骤六中的所有二路选择器和开关均由1位时钟奇偶属性信号控制,所述时钟奇偶属性信 号在每个时钟上升沿到来时翻转,若时钟属性信号为奇数时,选择1数据输入端作为输出,开关闭合; 否则,选择0数据输入端作为输出,开关断开,所述乒乓寄存器每两个时钟周期交换一次使用。

具体实施方式六:下面结合图9、图10说明本实施方式,本实施方式与具体实施方式一至五之一 不同的是:步骤七中的行逆变换模块中的伸缩子模块与列逆变换模块中的伸缩子模块硬件结构相同, 行逆变换模块中的二路选择器均由行的第一数据位row[1]控制,当row[1]为0时,选择1数据输入端 作为输出,否则,选择0数据输入端作为输出。

具体实施方式七:下面结合图11、图12说明本实施方式,本实施方式与具体实施方式一至六之 一不同的是:步骤八所述的M0和M1分别由控制信号Crtl0和Ctrl1控制,Ctrl0由clk_tag和col_tag 通过与运算得到,其中,clk_tag标识时钟周期的奇偶性,并在每个时钟上升沿翻转,col_tag用于标识 输入数据所属列的奇偶性,其在每个时钟上升沿检测clk_tag为1时翻转,否则保持,二者初始值均为 0,col_tag与clk_tag的或非结果即为Ctrl1的值。

具体实施方式八:下面结合图15、图21说明本实施方式,本实施方式与具体实施方式一至七之 一不同的是:步骤九中所有开关由时钟属性信号控制,当时钟属性信号为奇数时,开关S1和S3闭合, S2断开,当时钟属性信号为偶数时,开关S1和S3断开,S2闭合。

具体实施方式九:下面结合图19、图21说明本实施方式,本实施方式与具体实施方式一至八之 一不同的是:步骤十一中所述的二路选择器由1位时钟属性信号控制,其在每个时钟上升沿到来时翻 转,当时钟属性信号为奇数时,选择1数据输入端作为输出,否则,选择0数据输入端作为输出;

反向二路选择器也由时钟属性信号控制,当时钟属性信号为奇数时,反向二路选择器的输入端与 1数据输出端相连,当时钟属性信号为偶数时,反向二路选择器的输入端与0数据输出端相连,开关 也由时钟属性信号控制,当时钟属性信号为奇数时,开关闭合,否则,断开。

具体实施方式十:下面结合图20、图21说明本实施方式,本实施方式与具体实施方式一至九之 一不同的是:步骤十二中所述的存储器Mem1和Mem2为双端口SRAM,其位深为所处理图像列宽大 小,二者读写使能相对于提升过程的使能端延迟时钟周期不同,如表2所示。

表1为图16中存储器读写使能相对于其所属提升过程使能信号延迟的时钟周期数。

表2为图20中存储器读写使能相对于其所属提升过程使能信号延迟的时钟周期数。

表1

表2

本发明通过对协议中给定公式进行等价变形,打破奇偶数据计算时的相互等待过程,自由地进行 分步计算,减少冗余存储。针对变形公式各自的特点,提出了交替扫描和栅栏型扫描两种数据读取方 式,并针对并行变换行列一维方向分别设计基于流水的数据流,使硬件结构关键路径仅为一个乘法器, 并可时分复用计算单元,减少面积消耗并提高吞吐率。所述方法能够在面积、吞吐率、存储器以及计 算单元间寻得较好的折衷。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号