二维9/7小波变换VLSI设计
扫描二维码
随时随地手机看文章
JPEG2000标准与JEPG标准最显著的不同点是选用以小波变换为主的多分辨率编码方法。JPEG2000标准给出两种双正交小波滤波器,即有损压缩和无损压缩,前者采用CDF9/7小波,后者采用5/3小波。CDF9/7小波是图像压缩的首选滤波器,自然图像压缩性能好于5/3小波。
目前图像二维离散小波变换的硬件实现方法有两种:一种是采用分离的一维小波变换,另一种是设计非离散的二维小波变换结构。前者首先利用一个一维小波变换器对图像进行行(列)变换,然后再对其列(行)变换。后者由于非离散的二维小波变换器一般具有行列两个小波变换器,并通过若干行变换缓冲行变换的结果,可同时进行行列变换。因此,第一种方法是逐一变换图像的像素点,然后逐一列变换。而第二种方法是行列变换并行处理像素点,提高处理速度,但仍是逐一处理图像的像素点。借助于这两种实现方法,提出了一种Mesh结构的VLSI方案,将处理的图像NxN分解成nxn的子图像,从而并行处理nxn个像素点。
2 9/7小波提升算法实现
假设输入一维信号为X[n],9/7小波提升算法描述如下:
为进一步说明一维信号的提升算法,图l给出了该算法的计算示意图。图中圆圈所示的pea,peb,pec,ped分别完成Step2,Step3,Step4,Step5计算。假设一个信号有32个信号数值,经“边缘处理”后,变为39个信号值,即要处理的x[n]。
若图像为二维信号,对图像的小波变换包括行变换和列变换。假设图像G有512x512个像素。取其矩阵的某一行,经边缘变换成一个一维信号x[n](0≤n≤518),再经提升算法计算后,得到256个高频数值h和256个低频数值l。对矩阵的每一行进行相关计算,得到的所有高频部分组成一个高频矩阵H,其大小为512x256:所有低频部分组成一个低频矩阵L,其大小与高频矩阵相同。将图像G的矩阵变换为高频矩阵H和低频矩阵L的过程称为“行变换”。取高频矩阵H中的某一列,经边缘变换后为一个一维信号x[m](0≤m≤518),再经提升算法的计算得到256个高频部分h和256个低频部分l。对高频矩阵中的每一列进行相关计算,得到所有高频组成的新矩阵HH,所有低频组成的新矩阵HL。同样,对于低频矩阵L的每一列得到LH,LL。这个过程称为“列变换”。图像9/7小波变换过程如图2所示。
3 Mesh结构
假设要处理的图像为512x512像素,将该图像分为16x16个子图像,每个子图像的像素为32x32。用G(m,n)表示第m行第n列的子图像,将其子图像的所有像素点数据输入到Mesh结构对应的各个PE,同时处理32x32个像素点。完成所有子图像处理也就完成整个图像处理。
由于图像变换包括行变换和列变换。因此,当子图像调入Mesh结构(图3)后.则对其子图像行变换和列变换。行变换时,子图像每一行为一维信号X[n]。Mesh结构每一行PE完成的功能就是图1中的“左边缘计算”,“主计算”,“右边缘计算”。每一行包括1个“左边缘计算”,1个“右边缘计算”和16个“主计算”。把“左边缘计算”放在一个功能模块,称为左边缘处理PE,用PEl表示。同样,将“主计算”放在一个功能模块,称为主计算PE,表示为PEm。“右边缘计算”的功能模块称为右边缘处理PE,表示为PEr。Mesh结构中的第l列为PEl,第18列为PEr。但第2~17列并不全为PEm,因为还要考虑列变换。列变换时,第2~17列的上面4行PE完成“左边缘计算”功能,下面3行PE完成“右边缘计算”。列变换时,“左(右)边缘计算”就是每一列的上(下)边缘。所以这些PE的特殊之处在于:行变换时完成“主计算”,列变换时完成“左(右)边缘计算”。把第2~17列的第l行PE用PEmlhl表示(m为行变换时完成“主计算”,l代表列变换时完成“左边缘计算”,h1代表这个PE是高频矩阵上“左边缘计算”的第一部分)。第2行用PEmlll表示,第3行用PEmlh2表示,第4行用PEmll2,第37行用PEmrh表示,第38行用PEmrl表示,第39行用PEmhl表示。而中间部分其他PE在行变换和列变换时都完成“主计算”,这里用PEm表示。
Mesh结构处理处理流程为:
(1)输入原始数据输人原始数据的过程就是将一个子图G(m,n)的像素点调入到Mesh结构对应PE的过程。例如,要调入的子图像G(2,1),大小为32x32。考虑边缘处理,因此,同时调入的还有:子图G(1,1)最下面的4行和子图G(3,1)最上面的4行,子图G(3,1)最左面的3列,子图G(1,2)最下面的4行最左边的3列,子图G(3,2)最上面3行最左边3列,这些数
值组成一个新的矩阵D,大小为39x35。然后对该矩阵的每一行左边进行边缘处理。处理后的矩阵大小为39x39。要调入的所有像素点数值在整个图像G中的位置如图4所示。
边缘处理后的矩阵D就是要输入的原始数据矩阵。Mesh结构中每一行最左边的PE都有一个数据输入信号线,原始数据矩阵的每一行的数值输入到PE阵列最左边的PE,然后依次输入对应PE。Mesh结构的第1列的PE有4个原始数据,最后一列PE有3个原始数据,其他PE都有2个原始数据,这样原始数据矩阵D的39x39个数值就对应于Mesh结构的39x18个PE的阵列中。矩阵D的元素在Mesh结构PE中的分配情况如图5所示。
(2)行变换 输入原始数据后,Mesh结构中的每一行的PE相互配合,完成“行变换”。从数值上,行变换结果为一个高频矩阵H和一个低频矩阵L。从Mesh结构上看,1个PE存储2个数值h和l,分别为矩阵H和矩阵L中的元素。但并不是每个PE中都存有h和l,因为Mesh结构的第1列和第18列的PE功能是边缘处理。所以行变换后,第2—17列PE有2个中间结果h和l。行变换结果高频矩阵H和低频矩阵L在Mesh结构中的存储情况,如图6所示。
(3)数据交换 在进入列变换之前,需要调整h和l在PE中的位置,该过程就是数据交换。以图6中的第2列说明数据交换,其他列的数据交换和第2列的数据交换方法相同,如图7所示。
(4)列变换 数据交换后,PE在列上配合完成“列变换”。仍以第2列为例,从图7中看出,数据交换后,有的PE存储2个h,有的PE存储2个l。列变换就是含有2个h的PE之间的相互配合,2个l的PE的相互配合。从数值上看,列变换把H矩阵分为HH和HL矩阵,把L矩阵分为LH和LL2个矩阵。这4个矩阵的元素在PF中对应的位置如图8所示。
4 图像的边缘处理
真实信号具有边界,在某些一维应用中,信源产生的样本数量是无限的,能够忽略边界效应。二维的信源如图像,由于物理约束而有界,必须考虑小波变换的边界效应。边界延拓算法主要有零填充法、边界元素复制法、周期延拓法,对称延拓法和双倍对称延拓法。该设计采用对称周期延拓算法,就是预先拓展边界的数据点,将原信号X[k]延拓后的信号X’[k]送入提升结构中。例如:原信号集合为{X[0],X[1],X[2],X[3],X[4]…X[n一3],X[n一2],X[n-1]},对于9/7奇对称小波,延拓后提输入信号为{X[4],X[3],X[2],X[1],X[0],X[1],X[2],X[3],X[4]…X[n一3],X[n一2],X[n—l],X[n一2],X[n一3],X[n一4]}。要处理的图像是512x512像素,Mesh结构阵列中处理的是该图像的一个子图像。这样把图像分解为了16x16个子图像(32x32像素)。其处理顺序是:先对第1行的子图像从左到右处理,然后对第2行的子图像从左到右处理,依此类推,直到完整个512x512像素的图像处理为至。
一个子图像在调入处理阵列之前需经边缘处理。根据子图像所处位置不同,其图像处理也不同。比如对子图像G(1,1),每行左边缘需要对称处理,而右边缘则取G(1,2)每行左边的3个像素点数值,每列上边缘做对称处理,每列下边缘取G(2,1)的每列上边3个像素点。这样经边缘处理后的子图像的像素为39x39。
5 比较
图像二维离散小波变换硬件实现有图9和图10所示的2种方法,图9是利用一维小波变换器直接实现图像的二维小波变换。图10是用行滤波器和列滤波器实现图像的二维小波变换。
离散结构在行变换和列变换中间需要一个专用存储器来存储中间结果,Mesh结构在行变换后可直接列变换,这样可节约存储资源。而非离散结构采用行变换和列变换2个滤波器,Mesh结构用一个滤波器PE完成行变换和列变换,这样可节约计算资源。
6 结论
集成电路的频率取决于信号传输路径上两个寄存器之间的最大规模的组合逻辑。Mesh结构的设计中两个寄存器之间最大规模的组合逻辑为两个多路选择器和一个乘法器。参考文献中处理时最大的组合逻辑为一个乘法器。所以Mesh结构的设计和参考文献中的设计的频率基本相同,周期也相同。该系统设计处理32x32像素点需要31个周期,而其他设计中要逐个处理32x32个像素点,所以处理1 024(32x32)像素点需要l 024个周期。由于采用并行处理,这种Mesh结构的速度可提高32倍。