CN1266650C - 基于数字信号处理器的整数小波变换方法 - Google Patents

基于数字信号处理器的整数小波变换方法 Download PDF

Info

Publication number
CN1266650C
CN1266650C CN 03148079 CN03148079A CN1266650C CN 1266650 C CN1266650 C CN 1266650C CN 03148079 CN03148079 CN 03148079 CN 03148079 A CN03148079 A CN 03148079A CN 1266650 C CN1266650 C CN 1266650C
Authority
CN
China
Prior art keywords
data
coefficient
transform
conversion
inverse
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
CN 03148079
Other languages
English (en)
Other versions
CN1460968A (zh
Inventor
耿静
陈小敬
庞潼川
周闰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Datang Microelectronics Technology Co Ltd
Original Assignee
Datang Microelectronics Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Datang Microelectronics Technology Co Ltd filed Critical Datang Microelectronics Technology Co Ltd
Priority to CN 03148079 priority Critical patent/CN1266650C/zh
Publication of CN1460968A publication Critical patent/CN1460968A/zh
Application granted granted Critical
Publication of CN1266650C publication Critical patent/CN1266650C/zh
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Landscapes

  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)

Abstract

一种基于数字信号处理器的整数小波变换方法,在小波正变换时,首先将图像数据划分为若干个数据段,然后分别对当前数据段的行数据进行行正变换,对当前数据段的列数据进行列正变换,在小波反变换时,首先将图像数据划分为若干个数据段,然后分别对当前数据段的列数据进行列反变换,对当前数据段的行数据进行行反变换,行列变换穿插进行,直至处理完整个图像数据,本发明适用于内存较小,具备并行或流水线处理能力的数字信号处理器的实现,对原始图像进行实时小波正反变换。

Description

基于数字信号处理器的整数小波变换方法
技术领域
本发明涉及一种小波变换方法,特别涉及一种基于数字信号处理器的整数小波变换方法。
背景技术
目前,小波变换已经作为JPEG2000的国际标准,广泛应用于JPEG2000、MPEG4的静态纹理信息压缩和医学图像压缩等领域。小波变换具有的多分辨率解析,可截断嵌入式码流,无马赛克等特点具有传统离散余弦变换(DCT)无法比拟的优势,但小波变换由于对整幅图像进行运算,而不是像DCT变换一样分块运算,因此变换中运算的并行度不高,硬件化很困难。
然而在很多实际系统中,如数码相机、可视电话、便携式摄像机以及掌上电脑等,考虑到速度和面积的要求,需要用芯片实现压缩系统。与传统的分块运算的DCT比较,目前已有的2D DWT芯片结构中并没有充分利用小波变换的并行操作,虽然减小了控制复杂度,却也减小了硬件利用率,增加了芯片成本。因此,研究小波变换的实时处理能力,是很有实用价值的。
对于二维图像而言,传统的小波变换方法是首先对图像的全部行做行变换,之后,在行变换全部完成后再做列变换,如果要进行多层的小波变换,则对上一次二维小波变换后的左上角1/4的低频系数,继续进行二维小波变换。运算步骤与1、2相同,行列数各除以2,如果需要对小波系数进行量化,则需要在所有小波变换层数结束后,对每个系数进行量化操作。
可以看出,对于硬件实现而言,以上的操作有几个很大的弊端:
1、运算的并行度很差,每一个步骤之间都是顺序执行的。以二维图像尺寸M×N,进行一层小波变换为例,其中需要M次行变换循环,需要N次列变换循环,而每个行变换需要N/2次循环,每个列变换需要M/2次循环,共计(N/2)×M+(M/2)×N=M×N次循环。
2、运算对整幅图像进行,而硬件DSP的内存空间十分有限,当图像尺寸较大时,只能将图像数据放到片外的存储空间中,使运算速度大大降低。以CIF格式为例,一幅图像的尺寸为352×288×2=198KB,而TI C6000 DSP的片内RAM不能满足需要,而当图像尺寸更大一些时,这种内存空间的不足就更为突出。
3、在一个二维图像的小波变换中,一个系数需要被反复调用至少两次(行滤波一次,列滤波一次),频繁的片内片外数据调度,使算法的执行效率降低。
4、量化操作在小波变换完成后单独执行,需要M×N次循环操作,大大增加了运算的执行时间。
5、有很多小波变换的滤波器参数为浮点数,而浮点数的运算对硬件而言非常耗时,影响了实时性的实现。
针对上述缺陷虽然也出现了一些改进,例如将小波变换的浮点运算改为整数的提升运算,用移位加运算代替乘除运算;采用公用子表达式技术,将低通滤波器和高通滤波器操作中的公共项合并等方案,但这些改进只是从计算式的角度提高了小波变换的运算效率,并没有从根本上解决小波变换在硬件实现上所遇到的整体运算并行度低、耗内存、数据重复调度等问题。
发明内容
本发明所要解决的技术问题在于提供一种便于硬件实现的、基于数字信号处理器的小波变换方法,对原始图像进行实时小波正反变换。
本发明提供一种基于数字信号处理器的整数小波正变换方法,包括如下步骤:(1)将图像数据划分为若干个数据块;(2)确定图像帧的当前处理数据块;(3)将所述数字信号处理器片外存储器内的当前数据块搬运至数字信号处理器的片内数据存储器;(4)在片内数据存储器内完成当前数据块的小波行正变换;(5)在片内数据存储器内完成经过步骤(4)处理的数据块的小波列正变换;(6)将数据块变换结果搬运至数字信号处理器片外存储器内结果矩阵的相应位置;(7)重复步骤(2)至(6)。
本发明还提供了一种基于数字信号处理器的整数小波反变换方法,包括如下步骤:(1)将图像数据划分为若干个数据块;(2)确定图像帧的当前处理数据块;(3)将所述数字信号处理器片外存储器内的当前数据块搬运至数字信号处理器的片内数据存储器;(4)在片内数据存储器内完成当前数据块的小波列反变换;(5)在片内数据存储器内完成经过步骤(4)处理的数据块的小波行反变换;(6)将数据块变换结果搬运至数字信号处理器片外存储器内结果矩阵的相应位置;(7)重复步骤(2)至(6)。
本发明适用于内存空间较小的具备并行处理能力的数字信号处理器,对原始图像进行实时整型小波正反变换,运算速度比浮点运算快,变换后的小波系数分布明显优于传统的浮点小波变换。在变换的同时采取多种预选择的量化系数,在不增加运算开销和时间开销的前提下,完成对小波系数的量化。这种方法便于硬件实现,能运用于很多低码率的视频传输系统等。
附图说明
图1是本发明基于数字信号处理器的整数小波正变换方法的实施例流程图;
图2是本发明基于数字信号处理器的整数小波反变换方法的实施例流程图;
图3是应用本发明的小波行正变换运算示意图;
图4是应用本发明的小波列正变换运算示意图;
图5是应用本发明的小波列反变换运算示意图;
图6是应用本发明的小波行反变换运算示意图。
具体实施方式
本发明提供一种基于数字信号处理器的整数小波变换方法,在正变换时,首先将图像数据划分为若干个数据段,然后分别对当前数据段的行数据进行行正变换,对当前数据段的列数据进行列正变换,行列变换穿插进行,直至处理完整个图像数据。
将图像划分为若干个数据段的方式有很多种,对于小波正变换,可以将图像数据划分为多个数据块,对每个数据块使用统一的大循环处理,大循环的次数可以被图像数据的行数整除;再将所述每个大循环中包含的每行数据再划分为多个小数据块,对每个小数据块使用统一的小循环处理,小循环的次数可以被所述图像数据的列数整除。
如图1所示,即是本发明在编码端的实施例流程图,提供一种基于数字信号处理器的整数小波正变换方法,首先将图像数据划分为多个数据块,对每个数据块使用统一的大循环处理,大循环的次数可以被图像数据的行数整除,例如,图像数据的行列数均能被4整除,则可以将图像数据的行数除以4(步骤101);然后将所述每个大循环中包含的每行数据再划分为多个小数据块,对每个小数据块使用统一的小循环处理,小循环的次数可以被所述图像数据的列数整除,则可以将图像数据的列数除以4(步骤102);将当前大循环处理的数据块中包含的行数据分别做行正变换(步骤103);在所述行数据的行滤波完成后对其做列正变换(步骤104);然后重复步骤103、104,直至全部循环结束(步骤105)。
其中所述步骤103包括:对当前行数据,先做Lazy变换,将其中奇偶列的系数分开放置(也就是说先将所有的偶系数连续放置,然后在其后将所有的奇系数也连续放置);然后,对该行数据进行一维小波变换,其中一维小波变换又包括奇数变换和偶数变换。
所述步骤104包括:对各行同一列的数据,先做lazy变换,将其中奇偶行的系数分开放置;然后,对每列数据进行一维小波变换,其中一维小波变换又包括奇数变换和偶数变换。
在所述小波正变换过程中,可以通过预设量化系数为2的幂,在小波变换的过程中同时完成小波系数的量化。
所述小波正变换后的小波系数采用一个伸缩系数k进行优化,k=1.2~1.5,并可以将使用伸缩系数所需采用的浮点乘法改造成整数乘法和移位运算。
所述的小波正变换是在片内缓冲区内完成的,而对变换前后的数据在片内和片外存储区之间的搬运,Lazy变换和矩阵的行列转置,是使用数字信号处理器的快速直接存储器访问完成的。
相应的,在解码端,本发明提供一种基于数字信号处理器的整数小波反变换方法,首先将图像数据划分为若干个数据段,分别对当前数据段的列数据进行列反变换,然后对当前数据段的行数据进行行反变换,列行变换穿插进行,直至处理完整个图像数据。
同样,划分图像的方式可以是通过将图像数据划分为多个数据块,对每个数据块使用统一的大循环处理,大循环的次数可以被图像数据的列数整除;将所述每个大循环中包含的每列数据再划分为多个小数据块,对每个小数据块使用统一的小循环处理,小循环的次数可以被所述图像数据的行数整除。
如图2所示,即是本发明在解码端的实施例流程图,首先将图像数据划分为多个数据块,对每个数据块使用统一的大循环处理,大循环的次数可以被图像数据的列数整除,例如,将所述图像数据的列数除以4(步骤201);然后将所述每个大循环中包含的每列数据再划分为多个小数据块,对每个小数据块使用统一的小循环处理,小循环的次数可以被所述图像数据的行数整除,例如是所述图像数据的行数除以4(步骤202);将当前大循环处理的数据块中包含的部分列数据分别做列反变换(步骤203);在所述部分列数据的列反变换完成后对其做行反变换(步骤204);重复步骤203、204,直至全部循环结束(步骤205)。
所述步骤203包括:对各列数据做一维小波反变换,其中一维小波反变换又包括奇数反变换和偶数反变换;将经过小波反变换之后的系数进行反Lazy变换,将其中奇偶列的系数间隔放置(也就是恢复到原始图像的放置位置,即奇偶奇偶的顺序)。
所述步骤204包括:对各列同一行数据做一维小波反变换,其中一维小波反变换又包括奇数反变换和偶数反变换;将经过小波反变换之后的系数进行反Lazy变换,将其中奇偶列的系数间隔放置。
在所述小波反变换过程中,可以通过将反量化系数预设为1/(2的幂),在小波反变换的过程中同时完成小波系数的反量化。
所述小波反变换后的小波系数采用一个伸缩系数k进行优化,k=1.2~1.5,并可以将使用伸缩系数所需采用的浮点乘法改造成整数乘法和移位运算。
所述的小波反变换是在片内缓冲区内完成的,而对变换前后的数据在片内和片外存储区之间的搬运,Lazy变换和矩阵的行列转置,是使用数字信号处理器的快速直接存储器访问完成的。
下面以二维图像尺寸M×N,M和N均能被4整除,进行一层整数双正交Daubechies(5,3)小波变换为例,来进一步说明本发明,但本发明不限于此实施例。
编码端:
1、将图像划分为M/4个数据块,对每个数据块使用统一的大循环处理,大循环的次数可以被图像数据的行数整除,每个大循环又包括N/4个小数据块,对每个小数据块使用统一的小循环处理,小循环的次数可以被所述图像数据的列数整除。
2、每个循环中对图像的4~6行数据分别做行滤波:首先对该行数据做lazy变换,将其中奇偶列的系数分开放置,然后对该行数据进行一维小波变换。其中一维小波变换又包括奇数变换和偶数变换。在小波变换的过程中同时完成量化。
3、对经过步骤1小波变换运算完成的4~6行数据,同时进行列滤波:首先对各行同一列的数据做lazy变换,将其中奇偶行的系数分开放置,然后对每列数据进行一维小波变换。其中一维小波变换又包括奇数变换和偶数变换。在小波变换的过程中同时完成量化。
重复步骤2、3直到循环结束。
从硬件角度来说,程序的循环数越多,代码的执行就越不容易实现流水和并行,执行效率很低。但是,如果循环数太少,那么在一个循环中所需耗费的平均资源数(比如存储空间等等)过多,计算量过于复杂,也会影响代码执行效率。因此,在本发明的实施例中,划分为图像行数M/4个循环是一个比较优化的选择。由于小波变换是先做行滤波,后做列滤波,大循环的划分是以列滤波为基础的,所以不能选择N/4作为大的循环次数,一次大循环完成4行系数的行列滤波,另外,大循环数必须要被整个图像的行数整除。同理,小循环的划分是以行滤波为基础的,在这里选择了N/4,即,一次小循环完成4个系数的行滤波,小循环数必须要被整个图像的列数整除。这与一次执行图像数据的几行几列是一个道理,只是利用小波变换的特点,对整幅图像进行切割和分别处理。
相应的,在解码端:
4、将图像划分为N/4个数据块,对每个数据块使用统一的大循环处理,大循环的次数可以被图像数据的列数整除,每个大循环又包括M/4个小数据块,对每个小数据块使用统一的小循环处理,小循环的次数可以被所述图像数据的行数整除。
5、每个循环中对图像的4~6列数据分别做列反变换:首先对各列的数据做一维小波反变换。其中一维小波反变换又包括奇数反变换和偶数反变换。在小波反变换的过程中同时完成反量化。最后将经过小波逆变换之后的系数进行反lazy变换,将其中奇偶行的系数间隔放置。
6、对经过步骤5小波反变换完成的几列数据同时进行行逆变换:首先对各列同一行数据做一维小波反变换。其中一维小波反变换又包括奇数反变换和偶数反变换。在小波反变换的过程中同时完成反量化。最后将经过小波逆变换之后的系数进行反lazy变换,将其中奇偶列的系数间隔放置。
7、重复步骤5、6直到循环结束。
其中,以Daubechies(5,3)为例,一维小波正变换的公式如下:
s l ( 0 ) = x 2 l
d l ( 0 ) = x 2 l + 1
d l ( 1 ) = d l ( 0 ) + α ( s l ( 0 ) + s l + 1 ( 0 ) )
s l ( 1 ) = s l ( 0 ) + β ( d l ( 1 ) + d l - 1 ( 1 ) )
s l = k · s l ( 1 )
d l = d l ( 1 ) / k
sl (0)为一维图像信号x的偶数样本,dl (0)为一维图像信号x的奇数样本,sl变换后的偶数样本,dl为变换后的奇数样本;α、β为小波变换系数,k为伸缩变换系数(α=-0.5,β=0.25,k=1.2~1.5)。
Daubechies(5,3)一维小波反变换的公式如下:
d l ( 1 ) = κ · d l
s l ( 1 ) = s l / κ
s l ( 0 ) = s l ( 1 ) - β ( d l ( 1 ) + d l - 1 ( 1 ) )
d l ( 0 ) = d l ( 1 ) - α ( s l ( 0 ) + s l + 1 ( 0 ) )
x 21 + 1 = d l ( 0 )
x 2 l = s l ( 0 )
式中:dl为信号的高频样本,sl为信号的低频样本,dl (1)为经伸缩变换后的高频样本,sl (1)为经伸缩变换后的低频样本,α、β为小波变换系数,sl (0)为变换后的偶数样本,dl (0)为变换后的奇数样本;x为恢复的一维图像信号(α=-0.5,β=0.25,k=1.2~1.5)。
|α|=0.5,对它的浮点乘法运算,可以改造成右移1位。
|β|=0.25,对它的浮点乘法运算,可以改造成右移2位。
其中伸缩变换系数k的选取,经过实验得到,当k取值为1.2~1.5时,对于整形小波变换后的系数值分布起到了进一步优化的作用,进一步将大系数集中到了整个图像二维数组的左上角,有利于进一步的编码运算,使图像的压缩比更大。
k值可以改造成整数乘法和移位运算,即k乘以2L,取整,得到新的拉伸系数值k1,然后右移L位;1/k也可以改造成整数乘法和移位运算,即1/k乘以2L,取整,得到新的拉伸系数值k2,然后右移L位。
伸缩系数k采用了整数乘法和移位运算来实现,因此,可以利用这个操作的同时对小波系数进行量化,而不需要浪费额外的循环。预设量化系数,只需使用移位运算,在整数小波变换伸缩运算的同时可方便快速的完成不同频带小波系数的量化。
对小波系数的量化主要针对高频系数,目的是为了提高后续的压缩编码算法的压缩效率。具体的做法是将量化系数预设为2的幂,这样就可以只用移位操作来完成量化。通过一个预设参数确定是否根据小波变换层数的提高而以2的整数倍减低这个初始量化系数。
由于经试验和理论证明,人眼对对角线方向的高频信息没有对水平和垂直方向的高频信息那么敏感,所以,我们对对角线方向的高频信息的量化要求较高。由于对角线方向高频信息在一层二维整形小波变换中要乘以行、列两次高频系数的伸缩系数,所以就自然的提高了对角线方向高频信息的量化。
例如,在编码端,对低频分量的量化值为2n,则 s l = k · s l ( 1 ) 可改写为 s l = s l ( 1 ) · k 1 > > ( L + n ) ; 对高频分量的量化值为2n,则
Figure C0314807900153
可改写为
d l = d l ( 1 ) · k 2 > > ( L + n ) .
在解码端,对低频分量的反量化值为1/2n,则 s l = s l ( 1 ) / k 可改写为 s l = s l ( 1 ) · k 2 > > ( L - n ) ; 对高频分量的反量化值为1/2n,则 d l = k · d l ( 1 ) 可改写为
d l = d l ( 1 ) · k 1 > > ( L - n ) .
这种量化算法科学而且效率很高,不需要额外的时间和计算开销就可以完成不同预设的量化目的。
由于图像信息的数据量较大,因此不能将整帧的数据放到DSP的内存中,而频繁的在片内和片外调用数据,又会使运算效率降低,在本实施例中,DSP的内存需求仅为max(M,N)×2×6个字节,即6行/列图像数据。本实施例的整型小波变换是在较小的片内缓冲区内完成,一次最多处理四行或者四列图像数据,以提高执行效率。而对整型小波运算前后的数据在片内和片外存贮区之间的搬运,Lazy变换和矩阵的行列转置,本发明是采用数字信号处理器的快速直接存储器访问完成的,搬运速度快,且不占用处理器的处理时间。
见图3所示,以行滤波为例,一个循环内可以完成两个奇数样本的高频滤波和两个偶数样本的低频滤波。以行滤波为例,将传统算法原来需要N个循环完成的运算,只需要N/4个循环就可以完成。大大提高了运算效率。
在小波变换的传统步骤中,列滤波需要在行滤波完全执行完之后才能进行。以前人们提出的所谓提高并行操作也只分别限于行滤波内和列滤波内,而对二者之间的并行运算没有考虑。见图4所示,本发明将列滤波和行滤波操作并行处理。列滤波不需要在所有的行滤波完成后才开始进行,只要列滤波所需的那几行数据完成行滤波,即可对这几行的所有列数据进行列滤波运算。这样,二维图像一层小波正变换的循环次数从过去的M×N变成了现在的M×N/16。
列反变换如图5所示,一个循环内可以完成两个高频样本和两个低频样本的反变换。以行反变换为例,将传统算法原来需要N个循环完成的运算,只需要N/4个循环就可以完成。大大提高了运算效率。
行反变换的运算方法如图6所示,将行反变换和列反变换操作并行处理。行反变换不需要在所有的列变换完成后才开始进行,只要行反变换所需的那几列数据完成列反变换,即可对这几列的所有行数据进行行反变换运算。这样,二维图像一层小波反变换的循环次数从过去的M×N变成了现在的M×N/16。
下面以一图像的实际数据为例,进一步说明本发明,以二维图像尺寸16×16,进行一层整数双正交Daubechies(5,3)小波变换为例,原始图像数据为X:
X = 153 153 151 156 155 152 154 153 155 158 160 162 161 162 157 152 155 152 152 153 152 153 152 153 155 156 160 160 161 156 154 150 156 153 155 156 152 151 152 155 156 158 161 160 157 153 152 148 156 154 154 154 153 152 152 155 160 160 162 163 157 153 149 148 154 155 154 153 153 151 153 156 160 163 160 161 156 151 148 146 154 153 152 151 152 153 153 158 161 164 162 161 154 150 146 141 154 153 150 154 154 153 156 160 161 160 159 157 151 148 143 140 152 153 155 152 155 157 159 159 162 159 159 154 152 147 140 138 152 155 152 153 157 159 160 161 161 158 154 151 149 145 136 132 152 152 152 155 156 158 162 163 161 157 154 149 144 140 135 127 154 154 155 157 158 161 165 161 159 154 151 145 143 137 130 121 154 155 156 160 161 163 163 159 156 153 148 146 140 132 122 115 154 153 159 161 161 163 162 158 154 150 147 143 137 127 117 107 156 157 158 161 165 163 160 156 152 147 143 139 130 120 109 102 157 159 162 166 164 162 159 152 150 146 143 136 124 113 104 94 158 161 165 166 163 161 155 152 149 143 140 131 121 107 95 85
传统做法是先对每一行数据进行小波正变换(行滤波),每次处理一行,每个行变换需要16/2次循环,则经过16×16/2次循环后,得到行滤波的结果Y0:
Y 0 = 217 214 219 216 218 226 229 220 0 2 - 1 - 1 0 1 2 - 4 218 214 215 215 218 225 226 214 - 1 0 0 0 - 1 0 - 1 - 5 220 219 215 214 220 227 221 212 - 1 1 0 0 0 0 - 1 - 4 220 217 216 214 225 229 223 208 0 0 0 0 0 2 0 - 3 217 217 215 215 227 228 221 206 0 0 - 1 0 2 2 0 - 4 217 214 214 216 228 231 218 203 0 0 0 0 1 2 0 - 6 218 213 217 220 228 225 214 200 0 1 - 1 1 0 1 0 - 4 213 217 218 224 228 223 214 195 0 - 2 0 - 1 - 1 - 1 0 - 5 215 215 221 226 228 217 211 189 2 - 1 0 0 0 0 1 - 7 215 215 220 229 228 217 203 186 0 0 0 1 0 0 0 - 8 217 219 223 232 224 212 201 178 0 0 0 0 0 - 1 0 - 10 218 221 228 230 220 210 199 167 0 1 0 0 0 1 0 - 11 216 223 228 229 217 208 194 158 - 2 0 1 0 0 0 0 - 14 220 223 233 226 214 202 184 148 0 0 0 0 0 1 0 - 12 222 229 233 224 211 202 175 139 0 2 0 - 1 0 1 0 - 14 323 233 231 219 210 197 170 125 0 1 1 0 - 1 0 0 - 16
再对每一列数据进行小波正变换(列滤波),每次处理一列,每个列变换需要16/2次循环,则经过16×16/2次循环后,得到一层小波正变换的结果Y。
Y = 308 302 309 305 309 320 325 311 0 2 - 1 - 1 0 1 0 - 6 321 308 304 303 312 322 314 299 - 2 1 0 0 - 1 0 - 1 - 6 308 307 304 304 322 324 313 292 0 - 1 - 1 0 2 3 0 - 6 307 302 306 311 323 321 304 283 0 0 - 1 0 0 1 0 - 7 302 305 312 320 323 309 298 269 2 - 1 0 0 0 0 2 - 10 307 309 316 328 317 301 284 252 0 1 0 0 0 - 1 0 - 14 307 315 324 324 307 293 274 223 - 2 0 1 0 0 1 0 - 18 316 326 330 314 297 283 243 188 0 2 0 - 1 0 2 0 - 20 0 - 1 - 1 0 0 - 1 0 - 1 0 0 1 0 0 0 - 1 0 0 0 0 0 1 1 1 0 0 0 0 0 - 1 0 0 0 0 0 - 1 0 0 2 0 0 0 0 1 0 0 0 0 - 1 - 2 2 - 1 0 0 1 1 0 - 1 - 1 0 - 1 0 - 1 0 0 0 - 1 - 1 0 1 1 - 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 - 2 1 0 0 - 1 0 0 1 - 1 0 0 0 0 0 1 2 4 0 - 4 - 2 - 5 - 9 - 16 0 0 0 0 0 0 0 - 1
用传统算法计算16×16原始数据的一层小波变换,需要16+16=32次大循环,其中每个大循环中包括16/2=8次小循环,所以共包括32×8=256次循环计算。
本发明则是将行列滤波并行处理,将16×16的原始数据划分为16/4=4次大循环,其中每个大循环中包括4行数据的处理,每行数据的正变换需要16/4=4次小循环,完成一层小波正变换,仅需要4×4×4=64次循环计算。
其中经过1次大循环后,完成原始图像前4行(0~3)数据的小波正变换,放到结果矩阵的相应位置,得到结果X1:
Figure C0314807900181
其中经过2次大循环后,完成原始图像4~7行数据的小波正变换,放到结果矩阵的相应位置,得到结果X2:
Figure C0314807900182
其中经过3次大循环后,完成原始图像8~11行数据的小波正变换,放到结果矩阵的相应位置,得到结果X3:
Figure C0314807900183
其中经过4次大循环后,完成原始图像12~16行数据的小波正变换,放到结果矩阵的相应位置,得到最终结果Y(Y与传统算法流程的结果相同)。
Y = 308 302 309 305 309 320 325 311 0 2 - 1 - 1 0 1 2 - 6 312 308 304 303 312 322 314 299 - 2 1 0 0 - 1 0 - 1 - 6 308 307 304 304 322 324 313 292 0 - 1 - 1 0 2 3 0 - 6 307 302 306 311 323 321 304 283 0 0 - 1 0 0 1 0 - 7 302 305 312 320 323 309 298 269 2 - 1 0 0 0 0 2 - 10 307 309 316 328 317 301 284 252 0 1 0 0 0 - 1 0 - 14 307 315 324 324 307 293 274 223 - 2 0 1 0 0 1 0 - 18 316 326 330 314 297 283 243 188 0 2 0 - 1 0 2 0 - 20 0 - 1 - 1 0 0 - 1 0 - 1 0 0 1 0 0 0 - 1 0 0 0 0 0 1 1 1 0 0 0 0 0 - 1 0 0 0 0 0 - 1 0 0 2 0 0 0 0 1 0 0 0 0 - 1 - 2 2 - 1 0 0 1 1 0 - 1 - 1 0 - 1 0 - 1 0 0 0 - 1 - 1 0 1 1 - 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 - 2 1 0 0 - 1 0 0 1 - 1 0 0 0 0 0 1 2 4 0 - 4 - 2 - 5 - 9 - 16 0 0 0 0 0 0 0 - 1

Claims (16)

1、一种基于数字信号处理器的整数小波正变换方法,其特征在于包括如下步骤:
(1)将图像数据划分为若干个数据块;
(2)确定图像帧的当前处理数据块;
(3)将所述数字信号处理器片外存储器内的当前数据块搬运至数字信号处理器的片内数据存储器;
(4)在片内数据存储器内完成当前数据块的小波行正变换;
(5)在片内数据存储器内完成经过步骤(4)处理的数据块的小波列正变换;
(6)将数据块变换结果搬运至数字信号处理器片外存储器内结果矩阵的相应位置;
(7)重复步骤(2)至(6)。
2、如权利要求1所述的方法,其特征在于所述步骤(1)包括如下步骤:
(1A)将图像数据划分为多个数据块,对每个数据块使用统一的大循环处理,大循环的次数可以被图像数据的行数整除;
(1B)将所述每个大循环中包含的每行数据再划分为多个小数据块,对每个小数据块使用统一的小循环处理,小循环的次数可以被所述图像数据的列数整除。
3、如权利要求1所述的方法,其特征在于所述步骤(4)包括如下步骤:
对当前行数据,先做Lazy变换,将其中奇偶列的系数分开放置;
然后,对该行数据进行一维小波变换,其中一维小波变换又包括奇数变换和偶数变换。
4、如权利要求1所述的方法,其特征在于所述步骤(5)包括如下步骤:
对各行同一列的数据,先做lazy变换,将其中奇偶行的系数分开放置;
然后,对每列数据进行一维小波变换,其中一维小波变换又包括奇数变换和偶数变换。
5、如权利要求1所述的方法,其特征在于所述小波正变换过程中,通过预设量化系数为2的幂,在小波变换的过程中同时完成小波系数的量化。
6、如权利要求1所述的方法,其特征在于所述小波正变换后的小波系数采用一个伸缩系数k进行优化,k=1.2~1.5,并将使用伸缩系数所需采用的浮点乘法改造成整数乘法和移位运算。
7、如权利要求1所述的方法,其特征在于所述的小波正变换是在片内缓冲区内完成的,而所述对变换前后的数据在片内和片外存储区之间的搬运,是使用数字信号处理器的快速直接存储器访问完成的。
8、如权利要求3或4所述的方法,其特征在于:所述的lazy变换,是使用数字信号处理器的快速直接存储器访问完成的。
9、一种基于数字信号处理器的整数小波反变换方法,其特征在于包括如下步骤:
(1)将图像数据划分为若干个数据块;
(2)确定图像帧的当前处理数据块;
(3)将所述数字信号处理器片外存储器内的当前数据块搬运至数字信号处理器的片内数据存储器;
(4)在片内数据存储器内完成当前数据块的小波列反变换;
(5)在片内数据存储器内完成经过步骤(4)处理的数据块的小波行反变换;
(6)将数据块变换结果搬运至数字信号处理器片外存储器内结果矩阵的相应位置;
(7)重复步骤(2)至(6)。
10、如权利要求9所述的方法,其特征在于所述步骤(1)包括如下步骤:
(1A)将图像数据划分为多个数据块,对每个数据块使用统一的大循环处理,大循环的次数可以被图像数据的列数整除;
(1B)将所述每个大循环中包含的每列数据再划分为多个小数据块,对每个小数据块使用统一的小循环处理,小循环的次数可以被所述图像数据的行数整除。
11、如权利要求9所述的方法,其特征在于所述步骤(4)包括如下步骤:
对各列数据做一维小波反变换,其中一维小波反变换又包括奇数反变换和偶数反变换;
将经过小波反变换之后的系数进行反Lazy变换,将其中奇偶列的系数间隔放置。
12、如权利要求9所述的方法,其特征在于所述步骤(5)包括如下步骤:
对各列同一行数据做一维小波反变换,其中一维小波反变换又包括奇数反变换和偶数反变换;
将经过小波反变换之后的系数进行反Lazy变换,将其中奇偶列的系数间隔放置。
13、如权利要求9所述的方法,其特征在于在所述小波反变换过程中,通过将反量化系数预设为1/(2的幂),在小波反变换的过程中同时完成小波系数的反量化。
14、如权利要求9所述的方法,其特征在于所述小波反变换后的小波系数采用一个伸缩系数k进行优化,k=1.2~1.5,并将-使用伸缩系数所需采用的浮点乘法改造成整数乘法和移位运算。
15、如权利要求9所述的方法,其特征在于所述的小波反变换是在片内缓冲区内完成的,而所述对变换前后的数据在片内和片外存储区之间的搬运,是使用数字信号处理器的快速直接存储器访问完成的。
16、如权利要求11、12所述的方法,其特征在于:所述的反Lazy变换,是使用数字信号处理器的快速直接存储器访问完成的。
CN 03148079 2003-06-30 2003-06-30 基于数字信号处理器的整数小波变换方法 Expired - Lifetime CN1266650C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 03148079 CN1266650C (zh) 2003-06-30 2003-06-30 基于数字信号处理器的整数小波变换方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 03148079 CN1266650C (zh) 2003-06-30 2003-06-30 基于数字信号处理器的整数小波变换方法

Publications (2)

Publication Number Publication Date
CN1460968A CN1460968A (zh) 2003-12-10
CN1266650C true CN1266650C (zh) 2006-07-26

Family

ID=29591411

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 03148079 Expired - Lifetime CN1266650C (zh) 2003-06-30 2003-06-30 基于数字信号处理器的整数小波变换方法

Country Status (1)

Country Link
CN (1) CN1266650C (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101996411B (zh) * 2009-08-21 2013-08-21 中国人民解放军国防科学技术大学 一种用于图像压缩的快速方向小波变换方法
CN104202609A (zh) * 2014-09-25 2014-12-10 深圳市云朗网络科技有限公司 一种视频编码方法及视频解码方法
CN104519366B (zh) * 2014-12-04 2019-05-14 广东中星微电子有限公司 一种视频编码变换量化方法和装置

Also Published As

Publication number Publication date
CN1460968A (zh) 2003-12-10

Similar Documents

Publication Publication Date Title
CN100348045C (zh) 析像度变换方法及装置
CN1222110C (zh) 图象数据的自适应可变长度译码方法
CN1303820C (zh) 基于质量的图像压缩
CN101076118A (zh) 图像处理设备和图像处理方法
CN1917562A (zh) 用于渐进地变换并编码数字数据的系统和方法
CN1798341A (zh) 自适应系数扫描次序
EP1913521A2 (en) Simd lapped transform-based digital media encoding/decoding
CN1295696A (zh) 压缩和解压缩图象
CN1777285A (zh) 视讯/影像处理装置以及视讯/影像处理方法
CN1398116A (zh) 图像编码设备与图像编码方法
CN1261967A (zh) 数据压缩方法
CN1286322C (zh) 一种低复杂度整数4×4离散余弦变换量化实现方法
CN1717049A (zh) 基于行的小波变换的vlsi结构
CN1878308A (zh) 用于图像和视频压缩的正交变换方法
CN1266650C (zh) 基于数字信号处理器的整数小波变换方法
CN1224270C (zh) 用于宏块组结构的两阶段预测编码的帧内编码帧编码方法
CN1230000C (zh) 视频编解码中变换系数块的扫描方法和装置
CN1222171C (zh) 图像变换装置和方法
CN1445999A (zh) 运用于图象编码和视频编码的整数变换方法和装置
CN1889690A (zh) 运用于图像编码和视频编码的离散余弦变换方法
CN1533183A (zh) 一种视频图象编码方法
CN1692625A (zh) 图像变换装置及图像变换方法和记录媒体
CN1642280A (zh) 图像和视频信号的变换装置及其方法
CN1209917C (zh) 基于“空间组合推举体制”小波变换ip核的集成电路
CN1241394C (zh) 基于mpeg标准用于解码编码的视频数据的方法和装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CX01 Expiry of patent term

Granted publication date: 20060726

CX01 Expiry of patent term