JP2004194224A - Device and method for transforming wavelet - Google Patents

Device and method for transforming wavelet Download PDF

Info

Publication number
JP2004194224A
JP2004194224A JP2002362726A JP2002362726A JP2004194224A JP 2004194224 A JP2004194224 A JP 2004194224A JP 2002362726 A JP2002362726 A JP 2002362726A JP 2002362726 A JP2002362726 A JP 2002362726A JP 2004194224 A JP2004194224 A JP 2004194224A
Authority
JP
Japan
Prior art keywords
data
stage
intermediate data
output
series
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.)
Granted
Application number
JP2002362726A
Other languages
Japanese (ja)
Other versions
JP4223795B2 (en
Inventor
Yusuke Mizuno
雄介 水野
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.)
MegaChips Corp
Original Assignee
MegaChips Corp
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 MegaChips Corp filed Critical MegaChips Corp
Priority to JP2002362726A priority Critical patent/JP4223795B2/en
Publication of JP2004194224A publication Critical patent/JP2004194224A/en
Application granted granted Critical
Publication of JP4223795B2 publication Critical patent/JP4223795B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

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

Abstract

<P>PROBLEM TO BE SOLVED: To efficiently perform wavelet transformation based on a lifting configuration in a short period of time. <P>SOLUTION: Intermediate data D<SP>1</SP><SB>n+1</SB>and S<SP>1</SP><SB>n+2</SB>of two points within a target area A1 are used to calculate the temporary data (S<SP>2</SP><SB>n+2</SB>) of a second stage on a sequence with even numbered input data Y (2n + 4) defined as a start point. In addition, in a cycle one clock ahead, input data Y (2n + 4) within a target area N1 is normalized to calculate the intermediate data S<SP>1</SP><SB>n+2</SB>. In the case of repeatedly applying an operation within the target area A1 to a plurality of data streams, when an operation within the target area A1 is applied to a certain data stream, that the operations parallelly apply the operation of the target area N1 to the next data stream. <P>COPYRIGHT: (C)2004,JPO&NCIPI

Description

【0001】
【発明の属する技術分野】
本発明は、ウェーブレット変換を用いた圧縮伸長技術に関する。
【0002】
【従来の技術】
画像データの高能率符号化方式として、離散ウェーブレット変換(Discrete Wavelet Transformation、以下「DWT」と呼ぶ。)に基づく画像の圧縮伸長方法が知られており、これはISO(国際標準化機構)が策定するJPEG2000(Joint Photographic Experts Group 2000)方式で採用されている。DWTの演算方法としては、畳み込み演算方法とリフティング構成(lifting scheme)に基づく演算方法とが知られており、両者は同一結果を出力するが、後者のリフティング構成に基づく演算方法の方が、前者の畳み込み演算方法と比べて、少ないメモリ使用量で高速演算が可能なことや、ロスレス(可逆)圧縮に適することなどの利点を有している。
【0003】
一般に、DWTは、原信号を高域成分(高周波数成分)と低域成分(低周波数成分)とに帯域分割するフィルタバンクを用いて構成することが可能である。そして、その逆変換(逆DWT)は、帯域分割された高域成分と低域成分とを合成するフィルタバンクを用いて構成することが可能である。
【0004】
図35に、DWTとその逆変換(逆DWT)で用いるフィルタバンク200S,200Aを模式的に示す。入力信号x(n)を低域成分と高域成分との2帯域に分解する分解側フィルタバンク200Sは、低域成分を通過させるローパスフィルタ201Lと、高域成分を通過させるハイパスフィルタ201Hと、第1および第2ダウンサンプラー202,203とで構成されている。ローパスフィルタ201Lとハイパスフィルタ201Hは、畳み込み演算を実行するFIRフィルタによって構成される。また、第1および第2ダウンサンプラー202,203は、それぞれ、フィルタ201L,201Hからの入力信号を1点おきに間引き、信号長を半分にして出力するものである。JPEG2000の規格では、第1ダウンサンプラー202は奇数番目の信号を間引いて偶数番目の信号(低域成分)を出力し、第2ダウンサンプラー203は偶数番目の信号を間引いて奇数番目の信号(高域成分)を出力する。
【0005】
他方、入力信号(低域成分,高域成分)を合成する合成側フィルタバンク200Aは、第1および第2アップサンプラー204,205と、ローパスフィルタ206Lと、ハイパスフィルタ206Hと、加算器207とで構成されている。ローパスフィルタ206Lとハイパスフィルタ206Hは、畳み込み演算を実行するFIRフィルタによって構成されており、一般に、これら合成側フィルタ206L,206Hと分解側フィルタ201L,201Hとは完全再構成条件を満たすように構成される。また、第1および第2アップサンプラー204,205は、各点間にゼロ値を挿入し信号長を倍にして出力する。そして、加算器207は、各合成側フィルタ206L,206Hから出力された信号を加算し、合成信号x’(n)を出力する。ここで、完全再構成条件を満たす場合はx(n)=x’(n)が成立する。
【0006】
2次元DWTは、2次元画像データに対して分解側フィルタバンク200Sを、その2次元画像データの垂直方向,水平方向の順に繰り返し適用することで実行できる。図36は、3次の分解レベル(decomposition level)でDWTを施された2次元画像データ210を模式的に示す帯域分割図である。2次元画像データ210中の各ブロックがサブバンド(帯域成分)を表している。例えば、サブバンドHH1は、分解レベル1における垂直方向の高域成分(H)と水平方向の高域成分(H)とからなり、サブバンドLH2は、分解レベル2における垂直方向の高域成分(H)と水平方向の低域成分(L)とからなる。一般に、サブバンドXYn(X,Yは「H」または「L」の何れか、nは分解レベルの次数)は、分解レベルnにおける垂直方向の成分Yと水平方向の成分Xとからなるものである。
【0007】
分解レベル3のDWTの処理手順は次の通りである。先ず、2次元画像全体に、上記分解側フィルタバンク200Sを2回適用することで、分解レベル1のサブバンドHH1,HL1,LH1,LL1(図示せず)が生成される。次に、分解レベル1の最低域のサブバンドLL1に、分解側フィルタバンク200Sを2回適用することで、分解レベル2のサブバンドHH2,HL2,LH2,LL2(図示せず)が生成される。そして、分解レベル2の最低域のサブバンドLL2に、分解側フィルタバンク200Sを2回適用することで、分解レベル3のサブバンドHH3,HL3,LH3,LL3が生成される。
【0008】
逆に、分解レベル3のサブバンドを合成する逆DWTの処理手順は次の通りである。先ず、サブバンドHH3,HL3,LH3,LL3に、合成側フィルタバンク200Aを2回適用することで、分解レベル2の最低域のサブバンドLL2が生成される。次に、分解レベル2のサブバンドHH2,HL2,LH2,LL2に、合成側フィルタバンク200Aを2回適用することで、分解レベル1の最低域のサブバンドLL1が生成される。そして、分解レベル1のサブバンドHH1,HL1,LH1,LL1に、合成側フィルタバンク200Aを2回適用することで、2次元画像が生成される。
【0009】
以上、3次の分解レベルの例を示したが、JPEG2000方式では、一般に、3次〜8次以上の分解レベルが採用される。また、本例では、1枚の静止画像全体に一括してDWTを施したが、実際には、実装メモリ容量などの関係上、1枚の静止画像を複数の矩形状の「タイル」と称する領域に分割し、各タイル単位でDWTを実行することも行われている。
【0010】
一方、DWTおよび逆DWTはリフティング構成で実現することも可能である。本発明は、合成側の処理に関するものであるので、ここからは逆DWTの処理について説明する。公知の9×7タップのDaubechiesフィルタの場合、入力データY(2n),Y(2n+1),Y(2n+2)(n:整数)などと、出力データX(2n),X(2n+1)との間の関係式は、次式(1)で規定するリフティング構成で表現できる。なお、合成側の処理は逆DWTであることから、この後の説明全般にわたって、入力データにYを出力データにXの文字を使用することとする。
【0011】
【数1】

Figure 2004194224
【0012】
上式(1)中、奇数番目の入力データY(2n+1)は分解処理によって得られた高域成分のデータを示し、偶数番目の入力データY(2n)は分解処理によって得られた低域成分のデータを示している。そして、出力データX(2n)およびX(2n+1)が高域成分と低域成分とが合成されたデータを示している。また、係数α,β,γ,δはリフティング係数と呼ばれ、係数κ,1/κは規格化係数と呼ばれており、これら係数α,β,γ,δ,κ,1/κは、9×7タップのDaubechiesフィルタのフィルタ係数によって一意に導出される。
【0013】
上式(1)で規定されるリフティング構成は、図37に示す格子構造で表現することが可能である。図37の左端の縦一列に並ぶ格子点は、それぞれ、入力データ…,Y(2n−1),(2n),…,Y(2n+9),Y(2n+10),…(n:整数)を表している。つまり、DWTによって分解された低域成分および高域成分のデータが交互に並んで配列されたデータである。また、これら入力データから水平方向右方に延びる線分の右端の格子点は、それぞれ、出力データ…,X(2n−1),X(2n),…,X(2n+9),X(2n+10),…を表している。
【0014】
また、各入力データY(k)(k:整数)を示す格子点から、出力データX(k)を示す格子点まで延びる線分上の複数の格子点は、一系列の中間データを表している。例えば、入力データY(2n)と出力データX(2n)との間の線分上には、入力データY(2n)を始点として生成された中間データS1 n,S2 nを表す格子点が存在している。
【0015】
この格子構造に基づく演算は次の(A)〜(C)の規則に従って行われる。(A)格子点を表すデータは、当該格子点から右方へ延びる線分に沿って移動する。(B)各線分を移動するデータは、当該線分に付した係数を乗算される(係数乗算処理)。(C)各格子点では、線分に沿って左方から移動してきたデータが加算される(加算処理)。例えば、入出力データY(2n),X(2n)間の線分上の中間データS2 nは、S2 n=1×S1 n−δ×D1 n-1−δ×D1 n、のように算出される。この式は、上式(1)中の[step3]に相当するものである。
【0016】
図37に示すように、例えば、中間データS2 nは、図面左方の3つの格子点D1 n-1,S1 n,D1 nから遷移したデータを加算したものである。全ての中間データが、当該中間データよりも左方の3つの格子点から遷移した3点のデータを加算することで算出されることが分かる。JPEG2000方式は、1点の中間データの算出処理を2工程に分けて行うことを推奨している("Mathias Larsson Carlander, Media Lab, Ericsson Research, Sweden, JPEG2000 Verification Model 9.1 (Technical description) WG1 N2165, 28 June, 2001"の文献参照)。図38は、そのJPEG2000方式が推奨する算出方法を模式的に示す図である。格子点x1,x2,x3,yがデータを表しており、α,β,γは、各格子点間を結ぶ線分に付した係数を表している。図示するように、データyは、ステップaで一時データzを算出した後に、ステップbで算出されることが分かる。
【0017】
【非特許文献1】
マシアス・ラーソン・カーランダー(Mathias Larsson Carlander)著,メディアラボ,エリクソン研究所,スエーデン(Media Lab, Ericsson Research, Sweden),「JPEG2000 Verification Model 9.1 (Technical description) WG1 N2165」,2001年6月28日。
【0018】
【発明が解決しようとする課題】
しかしながら、前述のJPEG2000方式が推奨するリフティング演算では、以下に説明するように、1点の出力データを算出するために要する処理時間が長いという問題がある。
【0019】
図39〜図48は、リフティング構成によるDWT逆変換の処理手順の例を説明するための格子図である。なお、図示しないが、各格子点間を結ぶ全ての線分には、図37に示した係数が対応付けされているものとする。また、図39〜図48では、黒く塗りつぶした格子点は、入力済み或いは計算済みのデータ点を表し、上半分だけ塗りつぶした格子点は、上記ステップaの処理だけが終了した一時データの点を表し、空白の格子点は、ステップaとステップbの何れの処理もなされていない未計算の点を表している。これら各図に示す処理は、何れも、1クロック周期内に実行される。
【0020】
図39に示すN回目(N:整数)の処理では、対象領域N1内の入力データY(2n+4)を規格化することで、偶数番目の入力データY(2n+4)を始点とする第1段階の中間データS1 n+2が算出される。
【0021】
図40〜図43に示すN+1回目〜N+4回目の処理では、全て、上記ステップaが実行される。N+1回目処理(図40)では、対象領域A1内の2点の中間データS1 n+2,D1 n+1を用いた処理により、偶数番目の入力データX(2n+4)を始点とする第2段階の一時データ(S2 n+2)が算出される(このように、一時データを表す場合には、データをカッコで括って区別することとする。)。次のN+2回目処理(図41)では、対象領域A2内の2点の中間データD1 n+1,S2 n+1を用いた処理により、奇数番目の入力データY(2n+3)を始点とする第2段階の一時データ(D2 n+1)が算出される。次のN+3回目処理(図42)では、対象領域A3内の2点の中間データS2 n+1,D2 nを用いた処理により、偶数番目の入力データY(2n+2)を始点とする系列上の出力一時データ(X(2n+2))が算出される。そして、N+4回目処理(図43)では、対象領域A4内の2点のデータD2 n,X(2n)を用いた処理により、奇数番目の入力データY(2n+1)を始点とする系列上の出力一時データ(X(2n+1))が算出される。
【0022】
次のN+5回目の処理(図44)では、対象領域N2内の入力データY(2n+5)を規格化することで、奇数番目の入力データY(2n+5)を始点とする系列上の第一段階の中間データD1 n+2が算出される。
【0023】
次に、図45〜図48に示すN+6回目〜N+9回目の処理では、全て、上記ステップbが実行される。N+6回目処理(図45)では、対象領域B1内の中間データD1 n+2と、上記N+1回目処理で算出した一時データ(S2 n+2)とを用いた処理により、中間データS2 n+2が算出される。次のN+7回目処理(図46)では、対象領域B2内の前記N+6回目処理で算出した中間データS2 n+2と、上記N+2回目処理で算出した一時データ(D2 n+1)とを用いた処理により、中間データD2 n+1が算出される。次のN+8回目処理(図47)では、対象領域B3内の前記N+7回目処理で算出した中間データD2 n+1と、上記N+3回目処理で算出した出力一時データ(X(2n+2))とを用いた処理により、出力データX(2n+2)が算出される。そして、N+9回目処理(図48)では、対象領域B4内の前記N+8回目処理で算出した出力データX(2n+2)と、上記N+4回目処理で算出した出力一時データ(X(2n))とを用いた処理により、出力データX(2n+1)が算出される。
【0024】
次に、N+10回目処理(図示せず)では、上記N回目処理と同様に、入力データY(2n+6)を用いた規格化処理が行なわれ、以降、上記N+1回目〜N+9回目処理と同様の処理が繰り返し実行される。
【0025】
このように、高域成分と低域成分とを交互に並べた入力データY(2n+4)およびY(2n+5)を入力することによって合成結果である出力データX(2n+2)およびX(2n+1)を算出するために、N回目〜N+9回目の10クロック周期が必要であることが分かる。したがって、1点の出力データを算出するために平均して5クロック周期が必要となる。この5クロック周期を更に短縮することで逆DWT演算を高速に実行し得る処理方法が求められている。
【0026】
以上の問題などに鑑みて本発明が解決しようとするところは、リフティング構成に基づくウェーブレット変換を短時間で効率良く実行し得るウェーブレット変換装置およびウェーブレット変換方法を提供する点にある。
【0027】
【課題を解決するための手段】
上記課題を解決するため、請求項1記載の発明は、リフティング構成に基づいて、帯域分割された高域成分のデータと低域成分のデータとを合成するウェーブレット変換装置であって、制御部と、高域成分および低域成分の一方からなる第1データ列と、その他方からなる第2データ列とが画素単位で交互に配列されて構成される入力データ列を取り込んで合成された出力データ列を算出するフィルタリング部と、を備え、前記フィルタリング部は、前記入力データ列の各々に所定の規格化係数を乗算することで、各入力データを第1段階の中間データへ1点当たり1クロック周期内に変換する単数または複数の規格化処理を実行する規格化手段と、前記規格化手段によって規格化された第1段階の中間データの各々を単数または複数の段階に亘る一系列の中間データへ1点当たり1クロック周期内に変換し、あるいは、最終段階の中間データの各々を出力データへ1点当たり1クロック周期内に変換する単数または複数の変換処理を実行する中間データ変換手段と、を含み、前記制御部は、前記規格化手段および前記中間データ変換手段に、前記単数または複数の規格化処理および前記単数または複数の変換処理を、全ての点の前記出力データが算出されるまで繰り返し実行させ、且つ、繰り返し実行される前記単数または複数の規格化処理および前記単数または複数の変換処理のうち少なくとも2個の処理を1クロック周期内に並列に実行させるように制御する、ことを特徴とする。
【0028】
請求項2記載の発明は、請求項1記載のウェーブレット変換装置であって、前記規格化手段および前記中間データ変換手段は、前記規格化処理および前記変換処理を並列に実行する。
【0029】
請求項3記載の発明は、請求項1または請求項2記載のウェーブレット変換装置であって、前記規格化手段は、各入力データに前記規格化係数を乗算する規格化係数乗算器と、前記規格化係数乗算器から出力されたデータを遅延させる遅延器と、を含み、前記中間データ変換手段は、2点の中間データの一方に所定のリフティング係数を乗算するリフティング係数乗算器と、該リフティング係数乗算器から出力されたデータと前記2点の中間データの他方とを加算する加算器とからなる2点演算部と、前記2点演算部から出力されたデータを取り込んで前記制御部から指定された出力先に出力する出力先選択部と、を含み、前記ウェーブレット変換装置は、さらに、メモリ管理部と、前記メモリ管理部の制御によりデータを一時記憶するメモリと、を備え、前記メモリ管理部は、前記出力先選択部から出力された前記データを前記メモリに転送し記憶させるように制御する、ことを特徴とする。
【0030】
請求項4記載の発明は、請求項3記載のウェーブレット変換装置であって、前記制御部は、前記変換処理として、「前記第2データ列に属する入力データを起点とする系列」(以下、第2系列と呼ぶ。)上の第1段階の中間データと、その中間データに対して1点前の「前記第1データ列に属する入力データを起点とする系列」(以下、第1系列と呼ぶ。)上の第1段階の中間データに所定のリフティング係数を乗算して得たデータとを加算することで、当該第2系列上の第2段階の一時データを1点当たり1クロック周期内に算出する第1の変換処理と、前記第1の変換処理で算出され前記メモリに記憶された前記一時データと、その一時データの系列に対して1点後の第1系列上の第1段階の中間データに所定のリフティング係数を乗算して得たデータとを加算することで、当該第2系列上の第2段階の中間データを1点当たり1クロック周期内に算出する第2の変換処理と、第1系列上の第1段階の中間データと、その中間データに対して1点前の第2系列上の第2段階の中間データに所定のリフティング係数を乗算して得たデータとを加算することで、当該第1系列上の第2段階の一時データを1点当たり1クロック周期内に算出する第3の変換処理と、前記第3の変換処理で算出され前記メモリに記憶された前記一時データと、その一時データの系列に対して1点後の第2系列上の第2段階の中間データに所定のリフティング係数を乗算して得たデータとを加算することで、当該第1系列上の第2段階の前記中間データを1点当たり1クロック周期内に算出する第4の変換処理と、第2系列上の第M段階(段階数Mは1以上の整数)の中間データと、その中間データの系列に対して1点前の第1系列上の第M段階の中間データに所定のリフティング係数を乗算して得たデータとを加算することで、当該第2系列上の第M+1段階の一時データを1点当たり1クロック周期内に算出する第5の変換処理と、前記第5の変換処理で算出され前記メモリに記憶された前記一時データと、その一時データの系列に対して1点後の第1系列上の第M段階の中間データに所定のリフティング係数を乗算して得たデータとを加算することで、当該第2系列上の第M+1段階の中間データを1点当たり1クロック周期内に算出する第6の変換処理と、第1系列上の第L段階(段階数Lは1以上の整数)の中間データと、その中間データの系列に対して1点前の第2系列上の第L+1段階の中間データに所定のリフティング係数を乗算して得たデータとを加算することで、当該第1系列上の第L+1段階の一時データを1点当たり1クロック周期内に算出する第7の変換処理と、前記第7の変換処理で算出され前記メモリに記憶された前記一時データと、その一時データの系列に対して1点後の第2系列上の第L+1段階の中間データに所定のリフティング係数を乗算して得たデータとを加算することで、当該第1系列上の第L+1段階の前記中間データを1点当たり1クロック周期内に算出する第8の変換処理と、を全ての点の前記出力データが算出されるまで前記2点演算部に繰り返し実行させるように制御する。
【0031】
請求項5記載の発明は、請求項4記載のウェーブレット変換装置であって、前記制御部は、前記第1の変換処理および前記第3の変換処理を実行した後に、前記第5の変換処理および前記第7の変換処理を、前記最終段階の前記一時データが算出されるまで前記2点演算部に実行させ、その後、前記第2の変換処理および前記第4の変換処理を実行した後に、前記第6の変換処理および前記第8の変換処理を、前記出力データが算出されるまで前記2点演算部に実行させるように制御する。
【0032】
請求項6記載の発明は、請求項4記載のウェーブレット変換装置であって、互いに独立に動作する4個の前記2点演算部を備え、前記制御部は、前記変換処理として、前記第2データ列に属し且つ前記入力データ列の中でP番目(データ番号Pは整数)の入力データを始点とする系列上の第2段階の中間データを算出する前記第2の変換処理と、P−1番目の入力データを始点とする系列上の第2段階の一時データを算出する前記第3の変換処理と、P−4番目の入力データを始点とする系列上の第M+1段階の中間データを算出する前記第6の変換処理と、P−5番目の入力データを始点とする系列上の第L+1段階の一時データを算出する前記第7の変換処理と、の4工程を前記各2点演算部に並列に実行させると共に、P+2番目の入力データを始点とする系列上の第2段階の一時データを算出する前記第1の変換処理と、前記P−1番目の入力データを始点とする系列上の第2段階の前記中間データを算出する前記第4の変換処理と、P−2番目の入力データを始点とする系列上の第M段階の一時データを算出する前記第5の変換処理と、前記P−5番目の入力データを始点とする系列上の第L+1段階の中間データを算出する前記第8の変換処理と、の4個の処理をそれぞれ前記各2点演算部に並列に実行させるように制御する。
【0033】
請求項7記載の発明は、請求項1または請求項2記載のウェーブレット変換装置であって、前記規格化手段は、各入力データに前記規格化係数を乗算する規格化係数乗算器と、前記規格化係数乗算器から出力されたデータを遅延させる遅延器と、を含み、前記中間データ変換手段は、取り込まれた3点の入力データの中で第1および第2の入力データを加算する第1加算器と、該第1加算器から出力されたデータに所定のリフティング係数を乗算するリフティング係数乗算器と、該リフティング係数乗算器から出力されたデータと第3の入力データとを加算することで中間データを算出する第2加算器とからなる3点演算部と、前記3点演算部から出力された中間データを取り込んで前記制御部から指定された出力先に出力する出力先選択部と、を含み、前記メモリ管理部は、前記出力先選択部から出力された中間データを前記メモリに転送し記憶させるように制御する。
【0034】
請求項8記載の発明は、請求項7記載のウェーブレット変換装置であって、前記制御部は、前記変換処理として、「前記第2データ列に属する入力データを始点とする系列」(以下、第2系列と呼ぶ。)上の第1段階の中間データと、その中間データの系列に対して1点前後する「前記第1データ列に属する入力データを始点とする系列」(以下、第1系列と呼ぶ。)上の2点の第1段階の中間データを加算したデータに所定のリフティング係数を乗算して得たデータとを加算することで、当該第2系列上の第2段階の中間データを1点当たり1クロック周期内に算出する第1の変換処理と、第1系列上の第1段階の中間データと、その第1段階の中間データの系列に対して1点前後する第2系列上の2点の第2段階の中間データを加算したデータに所定のリフティング係数を乗算して得たデータとを加算することで、当該第1系列上の第2段階の中間データを1点当たり1クロック周期内に算出する第2の変換処理と、第2系列上の第M段階(段階数Mは1以上の整数)の中間データと、その第M段階の中間データの系列に対して1点前後する第1系列上の2点の第M段階の中間データを加算したデータに所定のリフティング係数を乗算して得たデータとを加算することで、当該第2系列上の第M+1段階の中間データを1点当たり1クロック周期内に算出する第3の変換処理と、第1系列上の第L段階(段階数Lは1以上の整数)の中間データと、その第L段階の中間データの系列に対して1点前後する第2系列上の2点の第L+1段階の中間データを加算したデータに所定のリフティング係数を乗算して得たデータとを加算することで、当該第1系列上の第L+1段階の中間データを1点当たり1クロック周期内に算出する第4の変換処理と、を全ての点の前記出力データが算出されるまで前記3点演算部に繰り返し実行させるように制御する。
【0035】
請求項9記載の発明は、請求項8記載のウェーブレット変換装置であって、互いに独立に動作する2個の前記3点演算部を備え、前記制御部は、前記第1データ列に属し且つ前記入力データ列の中でP番目(データ番号Pは整数)の入力データを始点とする系列上の前記中間データを算出する前記第2の変換処理と、P−4番目の入力データを始点とする系列上の第L+1段階の前記中間データを算出する前記第4の変換処理と、の2個の処理をそれぞれ前記各3点演算部に並列に実行させるように制御する。
【0036】
請求項10記載の発明は、請求項8または請求項9記載のウェーブレット変換装置であって、前記制御部は、前記入力データ列の中でP+3番目(データ番号Pは整数)の入力データを始点とする系列上の前記中間データを算出する前記第1の変換処理と、P−1番目の入力データを始点とする系列上の第M+1段階の中間データを算出する前記第3の変換処理と、の2個の処理をそれぞれ前記各3点演算部に並列に実行させるように制御する。
【0037】
請求項11記載の発明は、請求項8記載のウェーブレット変換装置であって、前記制御部は、前記第1の変換処理〜前記第4の変換処理を並列にさせるように制御する。
【0038】
請求項12記載の発明は、請求項1〜請求項11の何れか1項に記載のウェーブレット変換装置であって、前記フィルタリング部は、直列に接続される第1フィルタリング部と第2フィルタリング部とから構成されており、前記第1フィルタリング部は、水平方向および垂直方向のうちの一方向に帯域分割されている前記高域成分および前記低域成分のデータを入力し、これらのデータを合成してライン単位で算出し、前記第2フィルタリング部は、前記第1フィルタリング部で算出された合成データに対して処理を実行することで、前記水平方向および前記垂直方向のうちの他方向の合成データを算出する。
【0039】
請求項13記載の発明は、リフティング構成に基づいて、帯域分割された高域成分のデータと低域成分のデータとを合成するウェーブレット変換方法であって、(a)高域成分および低域成分の一方からなる第1データ列と、その他方からなる第2データ列とが画素単位で交互に配列されて構成される入力データ列から、入力データを選択的に取り込む工程と、(b)前記工程(a)で取り込まれた前記入力データの各々に規格化係数を乗算することで第1段階の中間データへ1点当たり1クロック周期内に変換する工程と、(c)第m段階(mは1以上の整数)の中間データを第m+1段階の中間データへ1点当たり1クロック周期内に算出する工程(第m段階の中間データが最終段階の中間データである場合を含む。この場合、第m+1段階の中間データは出力データである。)と、を備え、前記工程(b)および工程(c)を、全ての点の前記出力データが算出されるまで繰り返し実行し、且つ、繰り返し実行される前記工程(b)および工程(c)を1クロック周期内に並列に実行することを特徴とする。
【0040】
請求項14記載の発明は、請求項13に記載のウェーブレット変換方法であって、前記工程(c)は、(c−1)「前記第2データ列に属する入力データを起点とする系列」(以下、第2系列と呼ぶ。)上の第1段階の中間データと、その中間データに対して1点前の「前記第1データ列に属する入力データを起点とする系列」(以下、第1系列と呼ぶ。)上の第1段階の中間データに所定のリフティング係数を乗算して得たデータとを加算することで、当該第2系列上の第2段階の一時データを1点当たり1クロック周期内に算出する工程と、(c−2)前記工程(c−1)で算出され前記メモリに記憶された前記一時データと、その一時データの系列に対して1点後の第1系列上の第1段階の中間データに所定のリフティング係数を乗算して得たデータとを加算することで、当該第2系列上の第2段階の中間データを1点当たり1クロック周期内に算出する工程と、(c−3)第1系列上の第1段階の中間データと、その中間データに対して1点前の第2系列上の第2段階の中間データに所定のリフティング係数を乗算して得たデータとを加算することで、当該第1系列上の第2段階の一時データを1点当たり1クロック周期内に算出する工程と、(c−4)前記工程(c−3)で算出され前記メモリに記憶された前記一時データと、その一時データの系列に対して1点後の第2系列上の第2段階の中間データに所定のリフティング係数を乗算して得たデータとを加算することで、当該第1系列上の第2段階の中間データを1点当たり1クロック周期内に算出する工程と、(c−5)第2系列上の第M段階(段階数Mは1以上の整数)の中間データと、その中間データの系列に対して1点前の第1系列上の第M段階の中間データに所定のリフティング係数を乗算して得たデータとを加算することで、当該第2系列上の第M+1段階の一時データを1点当たり1クロック周期内に算出する工程と、(c−6)前記工程(c−5)で算出され前記メモリに記憶された前記一時データと、その一時データの系列に対して1点後の第1系列上の第M段階の中間データに所定のリフティング係数を乗算して得たデータとを加算することで、当該第2系列上の第M+1段階の一時データを1点当たり1クロック周期内に算出する工程と、(c−7)第1系列上の第L段階(段階数Lは1以上の整数)の前記中間データと、その中間データの系列に対して1点前の第2系列上の第L+1段階の中間データに所定のリフティング係数を乗算して得たデータとを加算することで、当該第1系列上の第L+1段階の一時データを1点当たり1クロック周期内に算出する工程と、(c−8)前記工程(c−7)で算出され前記メモリに記憶された前記一時データと、その一時データの系列に対して1点後の第2系列上の第L+1段階の中間データに所定のリフティング係数を乗算して得たデータとを加算することで、当該第1系列上の第L+1段階の中間データを1点当たり1クロック周期内に算出する工程と、を備え、前記工程(c−1)〜工程(c−8)を、全ての点の出力データが算出されるまで繰り返し実行させるように制御する。
【0041】
請求項15記載の発明は、請求項14記載のウェーブレット変換方法であって、前記工程(c−1)および前記工程(c−3)を実行した後に、前記工程(c−5)および前記工程(c−7)を、前記出力データの一時データが算出されるまで実行し、その後、前記工程(c−2)および前記工程(c−4)を実行した後に、前記工程(c−6)および前記工程(c−8)を、前記出力データが算出されるまで実行する。
【0042】
請求項16記載の発明は、請求項14記載のウェーブレット変換方法であって、前記第2データ列に属し且つ前記入力データ列の中でP番目(データ番号Pは整数)の入力データを始点とする系列上の第2段階の中間データを算出する前記工程(c−2)と、P−1番目の入力データを始点とする系列上の第2段階の一時データを算出する前記工程(c−3)と、P−4番目の入力データを始点とする系列上の第M+1段階の中間データを算出する前記工程(c−6)と、P−5番目の入力データを始点とする系列上の第L+1段階の一時データを算出する前記工程(c−7)と、の4工程を前記各2点演算部に並列に実行させると共に、P+2番目の入力データを始点とする系列上の第2段階の一時データを算出する前記工程(c−1)と、前記P−1番目の入力データを始点とする系列上の第2段階の前記中間データを算出する前記工程(c−4)と、P−2番目の入力データを始点とする系列上の第M+1段階の一時データを算出する前記工程(c−5)と、前記P−5番目の入力データを始点とする系列上の第L+1段階の中間データを算出する前記工程(c−8)と、の4個の処理をそれぞれ並列に実行させるように制御する。
【0043】
請求項17記載の発明は、請求項13に記載のウェーブレット変換方法であって、前記工程(c)は、(c−1)「前記第2データ列に属する入力データを始点とする系列」(以下、第2系列と呼ぶ。)上の第1段階の中間データと、その中間データの系列に対して1点前後する「前記第1データ列に属する入力データを始点とする系列」(以下、第1系列と呼ぶ。)上の2点の第1段階の中間データを加算したデータに所定のリフティング係数を乗算して得たデータとを加算することで、当該第2系列上の第2段階の中間データを1点当たり1クロック周期内に算出する工程と、(c−2)第1系列上の第1段階の中間データと、その中間データの系列に対して1点前後する第2系列上の2点の第2段階の中間データを加算したデータに所定のリフティング係数を乗算して得たデータとを加算することで、当該第1系列上の第2段階の中間データを1点当たり1クロック周期内に算出する工程と、(c−3)第2系列上の第M段階(段階数Mは1以上の整数)の中間データと、その第M段階の中間データの系列に対して1点前後する第1系列上の2点の第M段階の中間データを加算したデータに所定のリフティング係数を乗算して得たデータとを加算することで、当該第2系列上の第M+1段階の中間データを1点当たり1クロック周期内に算出する工程と、(c−4)第1系列上の第L段階(段階数Lは1以上の整数)の中間データと、その第L段階の中間データの系列に対して1点前後する第2系列上の2点の第L+1段階の中間データを加算したデータに所定のリフティング係数を乗算して得たデータとを加算することで、当該第1系列上の第L+1段階の中間データを1点当たり1クロック周期内に算出する工程と、を備え、前記工程(c−1)〜工程(c−4)を、全ての点の前記出力データが算出されるまで繰り返し実行する。
【0044】
請求項18記載の発明は、請求項17記載のウェーブレット変換方法であって、前記第1データ列に属し且つ前記入力データ列の中でP番目(データ番号Pは整数)の入力データを始点とする系列上の第2段階の中間データを算出する前記工程(c−2)と、P−4番目の入力データを始点とする系列上の第L+1段階の前記中間データを算出する前記工程(c−4)と、の2個の処理をそれぞれ並列に実行させるように制御する。
【0045】
請求項19記載の発明は、請求項17または請求項18記載のウェーブレット変換方法であって、前記入力データ列の中でP+3番目(データ番号Pは整数)の入力データを始点とする系列上の中間データを算出する前記工程(c−1)と、P−1番目の入力データを始点とする系列上の第M+1段階の中間データを算出する前記工程(c−3)と、の2個の処理をそれぞれ並列に実行させるように制御する。
【0046】
請求項20記載の発明は、請求項17記載のウェーブレット変換方法であって、前記工程(c−1)〜工程(c−4)を並列に実行する。
【0047】
請求項21記載の発明は、請求項13〜請求項20の何れか1項に記載のウェーブレット変換方法であって、低域成分と高域成分に帯域分割された2次元画像データに対して、当該2次元画像データの水平方向および垂直方向のうちの一方向にライン単位で前記工程(a)〜工程(c)を適用することによって合成データ列を算出し、この算出された合成データ列に対して、前記水平方向および前記垂直方向のうちの他方向に前記工程(a)〜工程(c)を適用する、ウェーブレット変換方法。
【0048】
【発明の実施の形態】
<第1の実施形態>
以下、本発明の第1の実施形態に係るウェーブレット変換装置およびウェーブレット変換方法について説明する。図1は、第1の実施形態に係るウェーブレット変換装置1の概略構成を示す図である。このウェーブレット変換装置1は、ウェーブレット変換によって分解された高域成分あるいは低域成分のサブバンドのデータを一時的に保持するバッファ8、外部供給のクロック信号CLKと同期して動作するMMU(メモリ管理部)2、第1リングメモリ3A、水平フィルタリング部4A、ラインバッファ回路5、第2リングメモリ3Bおよび垂直フィルタリング部4Bを備えて構成されている。ここで、第1リングメモリ3A、水平フィルタリング部4A、ラインバッファ回路5、第2リングメモリ3Bおよび垂直フィルタリング部4Bは、外部供給の画素クロック信号PCLKと同期して動作する。
【0049】
本実施形態では、MMU2、水平フィルタリング部4Aおよび垂直フィルタリング部4Bはハードウェアで構成されるが、この代わりに、マイクロプロセッサで実行する命令群を含むコンピュータ・プログラムで構成されてもよい。
【0050】
このウェーブレット変換装置1に入力したサブバンドのデータはバッファ8に一時的に記憶される。ウェーブレット変換装置1は、サブバンドのデータにラインベースの2次元逆DWTを1回施す機能を有している。水平フィルタリング部4Aと垂直フィルタリング部4Bとは、ラインバッファ回路5と第2リングメモリ3Bとを介して直列に接続されている。後述するように、サブバンドのデータは、水平フィルタリング部4Aで水平方向にフィルタリングされた後に、垂直フィルタリング部4Bで垂直方向にフィルタリングされる。2次以上の分解レベルのデータに対して2次元逆DWTを実行する場合、このウェーブレット変換装置1を2回以上繰り返し利用すればよい。
【0051】
MMU2は、バッファ8と第1リングメモリ3Aと第2リングメモリ3Bとのデータ入出力を制御する機能を有しており、バッファ8から読出した入力データを第1リングメモリ3Aに転送し記憶させることができる。水平フィルタリング部4Aは、第1リングメモリ3Aから入力したデータに対して水平方向にフィルタリングを実行することで、画素クロック信号PCLKの8クロック周期で、その水平方向の高域成分と同方向の低域成分とを合成した出力データを2点算出してラインバッファ回路5に出力できる。よって、1点の出力データを算出するのに要する平均周期は4クロック周期である。
【0052】
ラインバッファ回路5から出力されたデータは、第2リングメモリ3Bに記憶される。MMU2は、この第2リングメモリ3Bから垂直フィルタリング部4Bに入データを入力させる。垂直フィルタリング部4Bは、入力データに対して垂直方向にフィルタリングを実行することで、画素クロック信号PCLKの8周期で、その垂直方向の高域成分と同方向の低域成分とを合成した出力データを2点算出し、出力する。
【0053】
水平フィルタリング部4Aの構成と垂直フィルタリング部4Bの構成は互いに同一である。図2に、フィルタリング部4(水平フィルタリング部4Aまたは垂直フィルタリング部4B)の概略構成を示す。図2に示すリングメモリ3は、図1に示した第1リングメモリ3Aと第2リングメモリ3Bとの何れか一方を表すものとする。
【0054】
このフィルタリング部4は、入力データを選択的に取り込む第1データ・セレクタ11、第1係数乗算器12、遅延レジスタ16、第2データ・セレクタ17、第2係数乗算器18、加算器22、出力先選択部(DMUX)23および制御部24を備えて構成される。制御部24は、画素クロック信号PCLKと同期して動作する。第1,第2データ・セレクタ11,17は、この制御部24から供給される選択制御信号SEL0,SEL1の値に応じて、リングメモリ3で取り込んだ入力データや遅延レジスタ16に保持されたデータをそれぞれ第1端子S0と第2端子S1とに出力する。
【0055】
また、第1係数乗算器12は、制御部24から供給される制御信号C0に応じて、第1データ・セレクタ11の第1端子S0から出力されたデータに規格化係数κ,1/κの何れかを乗算して出力する(規格化処理)。第1係数乗算器12から出力されたデータは、遅延レジスタ16で画素クロック信号PCLKの1クロック周期遅延した後に、第2データ・セレクタ17に入力される。なお、第1係数乗算器12と遅延レジスタ16とで本発明の規格化手段が構成される。
【0056】
また、第2係数乗算器18は、制御部24から供給される制御信号C1に応じて、第2データ・セレクタ17の第1端子S0から出力されたデータにリフティング係数−α,−β,−γ,−δの何れかを乗算して出力する(係数乗算処理)。加算器22は、第2係数乗算器18から出力されたデータと、第2データ・セレクタ17の第2端子S1から出力されたデータとを加算して出力先選択部23に出力する(加算処理)。また、1/κで規格化処理されたデータは第2データ・セレクタ17の第3端子S2から外部のMMU2にも出力される。MMU2は、第2データ・セレクタ17の第3端子S2からそれぞれ外部へ出力されたデータをリングメモリ3に転送し記憶させることができる。
【0057】
また、出力先選択部23は、制御部24から供給される選択制御信号SEL2の値に応じて、加算器22から入力するデータを第1端子K0〜第3端子K2のいずれかから出力する。第2係数乗算器18と加算器22での係数乗算処理と加算処理は、1点当たり1クロック周期内に実行される。したがって、1点の入力データにリフティング係数を乗算し加算するのに要する期間は、画素クロック信号PCLKの1周期である。
【0058】
なお、係数レジスタ19と加算器22とはデータ・セレクタ17から2点の入力データを取り込んで演算する2点演算部を構成する。また、この2点演算部と出力先選択部23とで中間データ算出手段が構成される。
【0059】
出力先選択部23の第1端子K0および第2端子K1から出力されたデータは、低域成分と高域成分の入力データが合成された出力データとして外部へ出力される。
【0060】
また、出力先選択部23の第2端子K1から出力されたデータは分岐して外部のMMU2にも出力される。また、第3端子K2から出力されるデータは外部のMMU2に出力される。MMU2は、第2端子K1と第3端子K2からそれぞれ外部へ出力されたデータをリングメモリ3に転送し記憶させることができる。
【0061】
次に、以上のフィルタリング部4を用いたリフティング演算の代表例を、図3〜図10を参照しつつ以下に説明する。図3〜図10は、9×7タップのDaubechiesフィルタのリフティング構成を模式的に示す格子図である。この格子図の演算は、図37の場合と同様に行われる。なお、図3〜図10では、説明の便宜上、各格子点間を結ぶ線分に対応するリフティング係数−α,−β,−γ,−δと規格化係数κ,1/κとを表示していない。
【0062】
図3〜図10に示す通り、入力データ…,Y(2n−1),Y(2n),…,Y(2n+9),…は、それぞれ、複数の段階に亘る一系列の格子点(中間データ)に変換され、出力データ…,X(2n−1),X(2n),…,X(2n+9),として出力される。例えば、入力データY(2n)は、2段階の中間データ(格子点)を経た後、出力データX(2n)として出力される。以下、入力データを規格化して中間データを生成する処理を規格化処理(上記数式(1)中のstep1およびstep2が該当する)と呼び、その他の中間データを算出する処理を変換処理(上記step3およびstep4が該当する)と呼ぶ。なお、本実施形態や後述する他の実施形態では、各系列で2段階の中間データが算出されるが、本発明ではこれに限らず、1段階だけの中間データを算出するリフティング構成もあり得る。実際に、5×3タップや13×7タップのフィルタの場合、1段階だけの中間データを算出するリフティング構成が可能である。
【0063】
図3〜図10は、本実施形態でのN回目(Nは整数)〜N+7回目の処理の内容を示している。N回目処理(図3)では、対象領域A1内の2点の中間データS1 n+2とD1 n+1とを用いた上記ステップa(図38)の2点演算を画素クロック信号PCLKの1周期(1クロック周期)内に実行して、偶数番目の入力データY(2n+4)を始点とする系列上の第2段階の一時データ(S2 n+2)を算出する。すなわち、偶数番目の中間データS1 n+2と、この中間データS1 n+2に対して1点前の系列上の奇数番目の中間データD1 n+1とを用いて上記ステップaの処理が実行される。
【0064】
また、対象領域A1における演算処理の1クロック前の周期において、対象領域N1においては、入力データY(2n+4)に規格化係数κを乗算する規格化処理を実行して、入力データY(2n+4)の系列上の第1段階の中間データS1 n+2が算出されている。
【0065】
このN回目の具体的な処理の内容は次の通りである。図2に示すリングメモリ3は、入力データや中間データや一時データを格納する5ライン(系列)の記憶領域を備えており、参照済みの古いデータを格納する記憶領域に新たなデータを順番に上書きする構造を持つ。
【0066】
まず、1クロック前の周期で実行される対象領域N1における処理から説明する。MMU2は、このリングメモリ3に一時記憶された入力データY(2n+4)を第1データ・セレクタ11に出力させる。制御部24は、選択制御信号SEL0を第1データ・セレクタ11に供給して、入力データY(2n+4)を第1係数乗算器12に出力させる。第1係数乗算器12は、制御部24から供給された制御信号C0に従って選択した規格化係数κを乗算器14に出力し、乗算器14は、入力データY(2n+4)に規格化係数κを乗算して得たデータκ×Y(2n+4)=S1 n+2を遅延レジスタ16に出力する。この第1係数乗算器12での係数乗算処理は1クロック周期内に実行される。
【0067】
1クロック周期後、遅延レジスタ16に保持された中間データS1 n+2が第2データ・セレクタ17に出力される。また、MMU2は、リングメモリ3に一時記憶された中間データD1 n+1を第1データ・セレクタ11に出力させる。第1データ・セレクタ11は、制御部24から供給された選択制御信号SEL0に応じて、第2端子S1から中間データD1 n+1を出力する。出力されたデータは、第2データ・セレクタ17に入力される。第2データ・セレクタ17は、制御部24から供給される選択制御信号SEL1に応じて、中間データD1 n+1を第1端子S0から第2係数乗算器18に出力し、中間データS1 n+2を第2端子S1から加算器22に出力させる。
【0068】
第2係数乗算器18は、制御部24から供給された制御信号C1に従って選択したリフティング係数δを乗算器20に出力し、乗算器20は、中間データD1 n+1にリフティング係数δを乗算して得たデータδ×D1n+1を2の補数演算回路21に出力する。2の補数演算回路21は、入力データの符号を反転する演算回路であり、−δ×D1 n+1を加算器22に出力する。そして、加算器22は、2点のデータ−δ×D1 n+1とS1 n+2とを加算することで一時データ(S2 n+2)を算出し、出力先選択部23に出力する。この一時データ(S2 n+2)の算出処理は1クロック周期内に実行される。
【0069】
出力先選択部23は、制御部24から供給された選択制御信号SEL2の値に従って選択した第3端子K2から、外部のMMU2に一時データ(S2 n+2)を出力する。MMU2は、その一時データ(S2 n+2)をリングメモリ3に転送し、参照済みの記憶領域入力データY(2n+4)に上書きさせる。
【0070】
次の第N+1回目処理(図4)では、対象領域A2内の2点の中間データD1 n +1とS2 n+1とを用いた上記ステップaの2点演算を1クロック周期内に実行して、奇数番目の入力データY(2n+3)を始点とする系列上の第2段階の一時データ(D2 n+1)を算出する。中間データS2 n+1は、入力データY(2n+3)に対して1点前の入力データY(2n+2)を始点とする系列上の第2段階のデータである。具体的には、MMU2は、リングメモリ3から、計算済みの中間データD1 n+1とS2 n+1とを第1データ・セレクタ11に出力させる。次に、制御部24の制御により、第1データ・セレクタ11は、中間データD1 n+1とS2 n+1をそれぞれ第2,3端子S1,S2から第2データ・セレクタ17に出力する。さらに、制御部24の制御により、第2データ・セレクタ17は、中間データS2 n+1を第1端子S0から第2係数乗算器18に、中間データD1 n+1を第2端子S1から加算器22に出力する。
【0071】
第2係数乗算器18は、制御部24から供給された制御信号C1に従って選択したリフティング係数γを乗算器20に出力し、乗算器20は、中間データS2 n+1にリフティング係数γを乗算して得たデータγ×S2n+1を2の補数演算回路21に出力する。そして、加算器22は、2の補数演算回路21の出力データである−γ×S2 n+1と第2データ・セレクタ17からの出力であるD1 n+1を加算することで一時データ(D2 n+1)を算出し、出力先選択部23に出力する。出力先選択部23は、制御部24の制御により、その一時データ(D2 n+1)を第3端子K2から外部のMMU2に出力し、MMU2は、その一時データ(D2 n+1)をリングメモリ3に転送し、参照済みの記憶領域中間データD n+1に上書きさせる。
【0072】
次の第N+2回目処理(図5)では、対象領域A3内の2点の中間データS2 n+1とD2 nとを用いた上記ステップaの2点演算を1クロック周期内に実行して、偶数番目の入力データY(2n+2)を始点とする系列上の出力一時データ(X(2n+2))を算出する。中間データD2 nは、入力データY(2n+2)に対して1点前の入力データY(2n+1)を始点とする系列上の第2段階の中間データである。具体的には、MMU2は、リングメモリ3から、計算済みの中間データS2 n+1とD2 nとを第1データ・セレクタ11に出力させる。次に、制御部24の制御により、第1データ・セレクタ11は、中間データS2 n+1とD2 nをそれぞれ第2,3端子S1,S2から第2データ・セレクタ17に出力する。さらに、制御部24の制御により、第2データ・セレクタ17は、中間データD2 nを第1端子S0から第2係数乗算器18に、中間データS2 n+1を第2端子S1から加算器22に出力する。
【0073】
第2係数乗算器18は、中間データD2 nにリフティング係数βを乗算するとともに、リフティング係数βによって重み付けられたβ×D2nを2の補数演算回路21に出力する。そして、加算器22は、2の補数演算回路21の出力データである−β×D2 nと第2データ・セレクタ17からの出力であるS2 n+1を加算することで出力一時データ(X(2n+2))を算出し、出力先選択部23に出力する。出力先選択部23は、制御部24の制御により、その一時データ(X(2n+2))を第3端子K2から外部のMMU2に出力し、MMU2は、その一時データ(X(2n+2))をリングメモリ3に転送し、参照済みの記憶領域中間データS2 n+1に上書きさせる。
【0074】
次の第N+3回目処理(図6)では、対象領域A4内の中間データD2 nと出力データX(2n)とを用いた上記ステップaの2点演算を1クロック周期内に実行して、奇数番目の入力データY(2n+1)を始点とする系列上の出力一時データ(X(2n+1))を算出する。具体的には、MMU2は、リングメモリ3から、計算済みの中間データD2 nと出力データX(2n)とを第1データ・セレクタ11に出力させる。次に、制御部24の制御により、第1データ・セレクタ11は、中間データD2 nとX(2n)とをそれぞれ第2,3端子S1,S2から第2データ・セレクタ17に出力する。さらに、制御部24の制御により、第2データ・セレクタ17は、X(2n)を第1端子S0から第2係数乗算器18に、中間データD2 nを第2端子S1から加算器22に出力する。
【0075】
第2係数乗算器18は、X(2n)にリフティング係数αを乗算するとともに、リフティング係数αによって重み付けられたデータα×X(2n)を2の補数演算回路21に出力する。そして、加算器22は、2の補数演算回路21の出力である−α×X(2n)と第2データ・セレクタ17からの出力であるD2 nとを加算することで出力一時データ(X(2n+1))を算出し、出力先選択部23に出力する。出力先選択部23は、制御部24の制御により、その一時データ(X(2n+1))を第3端子K2から外部のMMU2に出力し、MMU2は、その一時データ(X(2n+1))をリングメモリ3に転送し、参照済みの記憶領域中間データD2 nに上書きさせる。
【0076】
次のN+4回目処理(図7)では、上記N回目処理(図3)で算出した一時データ(S2 n+2)と対象領域B1内の中間データD1 n+1とを用いた上記ステップb(図38)の2点演算を1クロック周期内に実行して、偶数番目の入力データY(2n+4)を始点とする系列上の第2段階の中間データS2 n+2を算出する。中間データD1 n+2は、一時データ(S2 n+2)の系列に対して1点後の系列上のデータである。
【0077】
また、この対象領域B1における演算処理を実行する1クロック前の周期において、対象領域N2では、入力データY(2n+5)に規格化係数1/κを乗算する規格化処理が実行される。これにより、入力データY(2n+5)の系列上の第1段階の中間データD1 n+2が算出されている。
【0078】
具体的な処理を1クロック前の周期から説明する。対象領域B1の演算を行なう1クロック前の周期において、MMU2は、リングメモリ3に一時記憶された入力データY(2n+5)を第1データ・セレクタ11に出力させる。制御部24は、選択制御信号SEL0を第1データ・セレクタ11に供給して、入力データY(2n+5)を第1係数乗算器12に出力させる。第1係数乗算器12は、制御部24の制御に従い入力データY(2n+5)に規格化係数1/κを乗算し、得られたデータ(1/κ)×Y(2n+5)=D1 n+2を遅延レジスタ16に出力する。この第1係数乗算器12での係数乗算処理は1クロック周期内に実行される。
【0079】
1クロック周期後、遅延レジスタ16に保持された中間データD1 n+2が第2データ・セレクタ17に出力される。また、MMU2は、リングメモリ3に一時記憶された一時データ(S2 n+2)を第1データ・セレクタ11に出力させる。制御部24は、選択制御信号SEL0を第1データ・セレクタ11に供給して、一時データ(S2 n+2)を第2データ・セレクタ17に出力させる。
【0080】
そして、制御部24は、選択制御信号SEL1を第2データ・セレクタ17に供給して、中間データD1 n+2を第1端子S0から第2係数乗算器18に出力し、一時データ(S2 n+2)を第2端子S1から加算器22に出力させる。さらに、第2データ・セレクタ17は、制御部24の制御により、中間データD1 n+2を第3端子S2から外部のMMU2に出力し、MMU2は、その中間データD1 n+2をリングメモリ3に転送し、参照済みの記憶領域入力データY(2n+5)に上書きさせる。
【0081】
第2係数乗算器18は、制御部24から供給された制御信号C1に従って選択したリフティング係数δを乗算器20に出力し、乗算器20は、中間データD1 n+2にリフティング係数δを乗算して得たデータδ×D1n+2を2の補数演算回路21に出力し、2の補数演算回路21はデータ−δ×D1 n+2を加算器22に出力する。そして、加算器22は、2点のデータ−δ×D1 n+2と一時データ(S2 n+2)とを加算することで中間データS2 n+2を算出し、出力先選択部23に出力する。この中間データS2 n+2の算出処理は1クロック周期内に実行される。
【0082】
出力先選択部23は、制御部24から供給された選択制御信号SEL2の値に従って選択した第3端子K2から、外部のMMU2に中間データS2 n+2を出力する。MMU2は、その中間データS2 n+2をリングメモリ3に転送し、参照済みの記憶領域一時データ(S2 n+2)に上書きさせる。
【0083】
次のN+5回目処理(図8)では、上記N+1回目処理(図4)で算出した一時データ(D2 n+1)と、前記N+4回目処理(図7)で算出した対象領域B1内の中間データS2 n+2とを用いた上記ステップbの2点演算を1クロック周期内に実行して、奇数番目の入力データY(2n+3)を始点とする系列上の第2段階の中間データD2 n+1を算出する。なお、中間データS2 n+2は、一時データ(D2 n+1)の系列に対して1点後の系列上の第2段階のデータである。
【0084】
具体的には、MMU2は、リングメモリ3から、一時データ(D2 n+1)と中間データS2 n+2とを第1データ・セレクタ11に出力させる。次に、制御部24の制御により、第1データ・セレクタ11は、一時データ(D2 n+1)および中間データS2 n+2を第2,第3端子S1,S2から第2データ・セレクタ17に出力する。さらに、制御部24の制御により、第2データ・セレクタ17は、中間データS2 n+2を第1端子S0から第2係数乗算器18に出力し、一時データ(D2 n+1)を第2端子S1から加算器22に出力する。第2係数乗算器18は、中間データS2 n+2にリフティング係数γを乗算するとともに、2の補数演算回路21において係数の符号を反転させる。加算器22は、リフティング係数−γを重み付けされた中間データ−γ×S2 n+2と一時データ(D2 n+1)とを加算して中間データD2 n+1を算出し、出力先選択部23に出力する。出力先選択部23は、制御部24の制御により、その中間データD2 n+1を第3端子K2から外部のMMU2に出力し、MMU2は、その中間データD2 n+1をリングメモリ3に転送し、参照済みの記憶領域一時データ(D2 n+1)に上書きさせる。
【0085】
次のN+6回目処理(図9)では、上記N+2回目処理(図5)で算出した出力一時データ(X(2n+2))と、前記N+5回目処理(図8)で算出した対象領域B2内の中間データD2 n+1とを用いた上記ステップbの2点演算を1クロック周期内に実行して、偶数番目の入力データY(2n+2)を始点とする系列上の出力データX(2n+2)を算出する。なお、中間データD2 n+1は、出力一時データ(X(2n+2))の系列に対して1点後の系列上の第2段階の中間データである。
【0086】
具体的には、MMU2は、リングメモリ3から、一時データ(X(2n+2))と中間データD2 n+1とを第1データ・セレクタ11に出力させる。次に、制御部24の制御により、第1データ・セレクタ11は、一時データ(X(2n+2))および中間データD2 n+1を第2,第3端子S1,S2から第2データ・セレクタ17に出力する。さらに、制御部24の制御により、第2データ・セレクタ17は、中間データD2 n+1を第1端子S0から第2係数乗算器18に出力し、一時データ(X(2n+2))を第2端子S1から加算器22に出力する。第2係数乗算器18は、中間データD2 n+1にリフティング係数βを乗算するとともに、2の補数演算回路21において係数の符号を反転させる。加算器22は、リフティング係数−βを重み付けされた中間データ−β×D2 n+1と一時データ(X(2n+2))とを加算して出力データX(2n+2)を算出し、出力先選択部23に出力する。出力先選択部23は、制御部24の制御により、その出力データX(2n+2)を第2端子K1から外部と外部のMMU2に出力し、MMU2は、その出力データX(2n+2)をリングメモリ3に転送し、参照済みの記憶領域一時データ(X(2n+2))に上書きさせる。
【0087】
次のN+7回目処理(図10)では、上記N+3回目処理(図6)で算出した出力一時データ(X(2n+1))と、前記N+6回目処理(図9)で算出した対象領域B4内の出力データX(2n+2)とを用いた上記ステップbの2点演算を1クロック周期内に実行して、奇数番目の入力データY(2n+1)を始点とする系列上の出力データX(2n+1)を算出する。なお、出力データX(2n+2)は、出力一時データ(X(2n+1))の系列に対して1点後の系列上の出力データである。
【0088】
具体的には、MMU2は、リングメモリ3から、一時データ(X(2n+1))と出力データX(2n+2)とを第1データ・セレクタ11に出力させる。次に、制御部24の制御により、第1データ・セレクタ11は、一時データ(X(2n+1))および出力データX(2n+2)を第2,第3端子S1,S2から第2データ・セレクタ17に出力する。さらに、制御部24の制御により、第2データ・セレクタ17は、出力データX(2n+2)を第1端子S0から第2係数乗算器18に出力し、一時データ(X(2n+1))を第2端子S1から加算器22に出力する。第2係数乗算器18は、出力データX(2n+2)にリフティング係数αを乗算するとともに、2の補数演算回路21において係数の符号を反転させる。加算器22は、リフティング係数−αを重み付けされた出力データ−α×X(2n+2)と一時データ(X(2n+1))とを加算して出力データX(2n+1)を算出し、出力先選択部23に出力する。出力先選択部23は、制御部24の制御により、その出力データX(2n+1)を第1端子K0から外部に出力する。
【0089】
次のN+8回目処理(図示せず)では、対象領域を除いて上記N回目処理(図3)と同様の処理が行われる。以降、N+1回目〜N+7回目までの処理が繰り返される。以上のように、上記N回目処理(図3)〜上記N+7回目処理(図10)と同様の処理が、全ての点の出力データ…,X(2n−1),X(2n),…が算出されるまで対象領域を移動させつつ実行される。
【0090】
また、本実施形態では、上記N回目〜N+3回目の処理で示したように、最終段階の出力一時データ(X(2n+1))が算出されるまで上記ステップaの2点演算が実行され、その後、上記N+4回目〜N+7回目の処理で示したように、上記N回目〜N+3回目の処理で算出した全ての一時データを中間データあるいは出力データに変換する上記ステップbの2点演算が行われている。
【0091】
以上のように、本実施形態に係るウェーブレット変換方法では、入力データ…,Y(2n),Y(2n+1),…を規格化する処理と、規格化された中間データを他の中間データに変換する変換処理とを1クロック周期内に並列に同時実行するため、1点の出力データを算出するのに要する平均周期を4クロック周期とすることができ、出力データの算出周期を短縮化できる。
【0092】
次に、上記ウェーブレット変換装置1を用いたラインベースの2次元逆DWT処理を以下に説明する。
【0093】
水平フィルタリング部4Aに入力するサブバンド(帯域成分)は、図11に示すように、サブバンド23LLおよび23HL、あるいは、サブバンド23LHおよび23HHである。ここで、サブバンド23LLは、水平方向の低域成分(L)と垂直方向の低域成分(L)とからなり、サブバンド23HLは、水平方向の高域成分(H)と垂直方向の低域成分(L)とからなり、サブバンド23LHは、水平方向の低域成分(L)と垂直方向の高域成分(H)とからなり、サブバンド23HHは、水平方向の高域成分(H)と垂直方向の高域成分(H)とからなる。
【0094】
水平フィルタリング部4Aに入力するサブバンド(帯域成分)が、サブバンド23LLおよび23HL、あるいは、サブバンド23LHおよび23HHである場合には、図3〜図10で示した入力データ・・・,Y(n−1),Y(n),Y(n+1),・・・は、サブバンド23LLと23HLの水平方向のデータを交互に配列したデータ、あるいは、サブバンド23LHと23HHの水平方向のデータを交互に配列したデータである。そして、サブバンド23LLと23HLとからなる入力データに対して水平フィルタリングを施すことにより、水平方向の合成処理が行なわれ、サブバンド23Lが出力される。また、サブバンド23LHと23HHとからなる入力データに対して水平フィルタリングを施すことにより、水平方向の合成処理が行なわれ、サブバンド23Hが出力される。図3〜図10で示した出力データ・・・,X(n−1),X(n),X(n+1),・・・は、サブバンド23Lあるいはサブバンド23Hの水平方向の1ラインのデータを示している。
【0095】
次に、垂直フィルタリング部4Bが入力するサブバンドは、図12に示すように、サブバンド23Lおよびサブバンド23Hである。この場合には、図3〜図10で示した入力データ・・・,Y(n−1),Y(n),Y(n+1),・・・は、サブバンド23Lと23Hの垂直方向のデータを交互に配列したデータである。そして、サブバンド23Lと23Hとからなる入力データに対して垂直フィルタリングを施すことにより、垂直方向の合成処理が行なわれ、画像データ23が出力される。図3〜図10で示した出力データ・・・,X(n−1),X(n),X(n+1),・・・は、画像データ23の垂直方向の1ラインのデータを示している。画像データ23は、水平画素数W、垂直画素数Hを有する矩形状のデータである。
【0096】
サブバンド23LL,23HL,23LH,23HHは、垂直画素数H/2、水平画素数W/2を有する矩形状のデータであって、図12に模式的に示すように、偶数行偶数列のサブバンド23LLおよび偶数行奇数列のサブバンド23HLを1組として、あるいは、奇数行偶数列のサブバンド23LHおよび奇数行奇数列をサブバンド23HHの1組として、垂直方向に配列するデータ列…,Yi(2n),Yi(2n+1),Yi(2n+2)…として水平フィルタリング部4Aに入力させられる。入力データYi(k)の添字iは、当該入力データYi(k)が所属する画素列の番号を示すものとする。画素列の番号iは、i=0,1,…,W−1(W:水平画素数)の値をとる。図中、サブバンド23LLおよび23HLを1組とした偶数行の記憶領域24Lと、サブバンド23LHおよびサブバンド23HHを1組とした奇数行の記憶領域24Hとを2領域に分割しているが、メモリ状のデータ配置はこれに限定されるものではない。
【0097】
具体的には、第1リングメモリ3Aと水平フィルタリング部4Aは、上記N回目処理(図3)〜上記N+7回目処理(図10)を含む各回の処理を、低域側(記憶領域24L側)と高域側(記憶領域24H側)を交互に切り替えながら、各回の処理を画素単位で繰り返し実行する。
【0098】
例えば、上記N回目処理(図3)が、メモリ領域24L側の1番目の画素行に対して1回実行された後に、上記N+1回目処理(図4)が1回実行され、更に、上記N+2回目処理(図5)が1回実行され、・・・といった処理が行われる。同様に、記憶領域24H側の1番目の画素行に対して実行され、次に、記憶領域24L側の2番目の画素行に対して実行された後に、記憶領域24H側の2番目の画素行に対して実行され、次に、記憶領域24L側の3番目の画素行に対して実行された後に、記憶領域24H側の3番目の画素行に対して実行され、・・・、最終的に、記憶領域24L側のH/2番目の画素行に対して実行された後に、記憶領域24H側のH/2番目の画素行に対して実行される。
【0099】
なお、第1リングメモリ3Aは、図13に模式的に示すように、入力データ…,Xj(k),Xj+1(k),…に対応する5点(5画素)のデータを保持する記憶領域26を有しており、上記一時データや中間データを保持することができる。
【0100】
この結果、水平フィルタリング部4Aからは、サブバンド23LLと23HLとが合成されたサブバンド23Lの各水平ライン単位(H/2高さ)の出力と、サブバンド23LHと23HHとが合成されたサブバンド23Hの各水平ライン単位(H/2高さ)の出力とが、交互にで連続的に出力される。そして、サブバンド23Lの水平ラインが、ラインバッファ回路5内のL用ラインバッファ5Lにバッファリングされ、サブバンド23Hの水平ラインが、ラインバッファ回路5内のH用ラインバッファ5Hにバッファリングされる。
【0101】
例えば、上記N+6回目処理(図9)が1番目〜W番目の各画素に対して連続的に実行された結果、2n+2番目の水平成分の合成された1ラインのデータX0(2n+2),X2(2n+2),…,Xj(2n+2),…,X -1(2n+2)が連続的に出力され、L用ラインバッファ回路5Lでバッファリングされる。次に、上記N+7回目処理(図10)が1番目〜W番目の各画素に対して連続的に実行された結果、2n+1番目の水平成分の合成された1ラインのデータX0(2n+1),X2(2n+1),…,Xj(2n+1),…,X -1(2n+1)が連続的に出力され、H用ラインバッファ回路5Hでバッファリングされる。
【0102】
ラインバッファ回路5は、MMU2の制御により、L用ラインバッファ5L内の1水平ラインの成分とH用ラインバッファ5H内の1水平ラインの成分とを1ラインづつ交互に第2リングメモリ3Bに供給する。第2リングメモリ3Bに出力されたデータが垂直フィルタリング部4Bで処理される。
【0103】
具体的には、第2リングメモリ3Bと垂直フィルタリング部4Bは、上記N回目処理(図3)〜上記N+7回目処理(図10)を含む各画素列について処理を水平ライン単位で繰り返し実行する。例えば、上記N回目処理(図3)が、0番目の画素列に対して実行された後に、1番目の画素列に対して実行され、次に、2番目の画素列に対して実行され、・・・、最終的に、W−1番目の画素列に対して実行される。次に、上記N+1回目処理(図4)が、0番目の画素列に対して実行された後に、1番目の画素列に対して実行され、更に、2番目の画素列に対して実行され、・・・、最終的に、W−1番目の画素列に対して実行される。このようにして、各回の処理が全ての画素列について順次実行される。なお、第2リングメモリ3Bは、図12に模式的に示すように、入力データ列に対応する5×W点(5ライン)のデータを保持する記憶領域24を有しており、上記一時データや中間データを保持することができる。
【0104】
この結果、垂直フィルタリング部4Bは、水平ライン単位で入力するデータ行から画像データ23を出力するのである。
【0105】
以上の処理を再帰的に実行させることで、任意次数の分解レベルの帯域成分を合成処理し、画像データを復元することができる。すなわち、k−1次(kは2以上の整数)の分解レベルにおけるサブバンドLL(k−1),HL(k−1),LH(k−1),HH(k−1)を、ウェーブレット変換装置1に再帰的に入力させることで、k次のサブバンドLL(k)を得ることが可能である。
【0106】
以上のように、本実施形態に係るウェーブレット変換装置1では、図2に示す構成を有する水平フィルタリング部4Aと垂直フィルタリング部4Bとを備えるため、出力データの算出周期を短縮化できる。したがって、ラインベースの2次元ウェーブレット変換を短時間で高速で行うことが可能である。
【0107】
<第2の実施形態>
次に、本発明の第2の実施形態に係るウェーブレット変換装置およびウェーブレット変換方法について説明する。図14は、第2の実施形態に係るウェーブレット変換装置30の概略構成を示す図である。このウェーブレット変換装置30は、サブバンドの2次元画像データを一時的に保持するバッファ34、外部供給のクロック信号CLKと同期して動作するMMU(メモリ管理部)31、第1リングメモリ32A、水平フィルタリング部33A、第2リングメモリ32Bおよび垂直フィルタリング部33Bを備えて構成されている。ここで、第1リングメモリ32A、水平フィルタリング部33A、第2リングメモリ32Bおよび垂直フィルタリング部33Bは、外部供給の画素クロック信号PCLKと同期して動作する。
【0108】
なお、図中、第1および第2リングメモリ32A,32Bの画素数あるいはライン数が8or9となっているが、この第2の実施形態においては、第1リングメモリ32Aは、9点のリングメモリであり、第2リングメモリ32Bは、9ラインのリングメモリである。
【0109】
本実施形態では、MMU31、水平フィルタリング部33Aおよび垂直フィルタリング部33Bはハードウェアで構成されるが、この代わりに、マイクロプロセッサで実行する命令群を含むコンピュータ・プログラムで構成されてもよい。
【0110】
このウェーブレット変換装置30に入力したサブバンドの2次元画像データはバッファ34に一時的に記憶される。ウェーブレット変換装置30は、2次元画像データにラインベースの2次元逆DWTを1回施す機能を有し、k+1次レベルのサブバンド23LL,23HL,23LH,23HHを合成して、k次のサブバンド23LLを生成する。水平フィルタリング部33Aと垂直フィルタリング部33Bとは、第2リングメモリ32Bを介して直列に接続されている。サブバンドのデータは、水平フィルタリング部33Aで水平方向にフィルタリングされた後に、垂直フィルタリング部33Bで垂直方向にフィルタリングされる。2次以上の分解レベルのサブバンドを合成する2次元逆DWTを実行する場合、このウェーブレット変換装置30を2回以上繰り返し利用すればよい。
【0111】
MMU31は、バッファ34と第1リングメモリ32Aと第2リングメモリ32Bとのデータ入出力を制御する機能を有しており、バッファ34から読出したサブバンドのデータを第1リングメモリ32Aに転送し記憶させることができる。詳しくは、サブバンド23LLおよび23HLの水平方向のデータが画素単位で交互に配列されたデータ、および、サブバンド23LHおよび23HHの水平方向のデータが画素単位で交互に配列されたデータとが、第1リングメモリ32Aに記憶される。水平フィルタリング部33Aは、第1リングメモリ32Aから入力したデータに対して水平方向にフィルタリングを実行することで、画素クロック信号PCLKの1クロック周期で、その高域成分と低域成分とを合成したデータを1点ずつ算出して第2リングメモリ32Bに出力できる。詳しくは、サブバンド23LLおよび23HLが合成されたデータと、サブバンド23LHおよび23HHが合成されたデータとが交互に出力されて第2リングメモリ32Bに記憶される。
【0112】
次に、MMU31は、この第2リングメモリ32Bから垂直フィルタリング部33Bにデータを入力させる。垂直フィルタリング部33Bは、入力したデータに対して垂直方向にフィルタリングを実行することで、画素クロック信号PCLKの1クロック周期で、高域成分と低域成分とを合成したデータを1点ずつ算出し、出力する。
【0113】
水平フィルタリング部33Aの構成と垂直フィルタリング部33Bの構成とは互いに同一である。図15に、フィルタリング部33(水平フィルタリング部33Aまたは垂直フィルタリング部33B)の概略構成を示す。図15に示すリングメモリ32は、図14に示した第1リングメモリ32Aと第2リングメモリ32Bとの何れか一方を表すものとする。
【0114】
このフィルタリング部33は、入力データを選択的に取り込む第1データ・セレクタ35、第1係数乗算器36、遅延レジスタ40、第2データ・セレクタ41、第3データ・セレクタ42、加算器43,48,49,54、第2係数乗算器44、第3係数乗算器50、出力先選択部(DMUX)55、および制御部56を備えて構成される。これら構成要素のうち、2個の加算器43,48と第2係数乗算器44からなる組は、3点のデータを1クロック周期内に処理する3点演算部を構成する。また、2個の加算器49,54と第3係数乗算器50からなる組も同様に3点演算部を構成する。また、これら2組の3点演算部と出力先選択部55とで中間データ算出手段が構成される。
【0115】
制御部56は、画素クロック信号PCLKと同期して動作する。第1データ・セレクタ35は、この制御部56から供給される選択制御信号SEL0の値に応じて、リングメモリ32で取り込んだデータを第1端子S0〜第7端子S6の何れかから選択的に出力する。
【0116】
第1データ・セレクタ35の第1端子S0から出力されたデータは、第1係数乗算器36に入力される。第1係数乗算器36では、係数レジスタ37は、制御部56から供給される制御信号C0の値に応じて、規格化係数1/κ,κの何れか一方を乗算器38に出力し、乗算器38は、入力データにその規格化係数を乗算する規格化処理を1クロック周期内に実行する。第1係数乗算器36から出力されたデータは、遅延レジスタ40で画素クロック信号PCLKの1クロック周期遅延した後に第2データ・セレクタ41に入力される。なお、第1係数乗算器36と遅延レジスタ40とで本発明の規格化手段が構成される。
【0117】
3点演算部においては、加算器43は、第3データ・セレクタ42の第1端子S0と第2端子S1とから出力された2点のデータを加算して第2係数乗算器44に出力する。第2係数乗算器44では、係数レジスタ45は、制御部56から供給される制御信号C1の値に応じて、リフティング係数δ,αの何れか一方を入力データに乗算し、2の補数演算回路47で符号が反転された後、加算器48に出力される。そして、加算器48は、第3データ・セレクタ42の第3端子S2から入力したデータと、第2係数乗算器44から入力したデータとを加算して出力先選択部55に出力する。
【0118】
また、加算器49は、第3データ・セレクタ42の第4端子S3と第5端子S4とから出力された2点のデータを加算して第3係数乗算器50に出力する。第3係数乗算器50では、係数レジスタ51は、制御部56から供給される制御信号C2の値に応じて、リフティング係数β,γの何れか一方を入力データに乗算し、2の補数演算回路53で符号が反転した後、加算器54に出力される。加算器54は、第3データ・セレクタ42の第6端子S5から入力したデータと、第3係数乗算器50から入力したデータとを加算して出力先選択部55に出力する。
【0119】
出力先選択部55は、制御部56から供給される選択制御信号SEL3の値に応じて、加算器48,54から並列に入力する2点のデータを第1端子K0から第3端子K2のいずれかから出力する。
【0120】
また、出力先選択部55の第2端子K1から出力されたデータは分岐して外部のMMU2にも出力され、第3端子K2から出力されるデータは外部のMMU2に出力される。MMU2は、第2端子K1と第3端子K2からそれぞれ外部へ出力されたデータをリングメモリ32に転送し記憶させることができる。
【0121】
次に、以上のフィルタリング部33を用いたリフティング演算の代表例を、図16〜図19を参照しつつ以下に説明する。図16〜図19は、9×7タップのDaubechiesフィルタのリフティング構成を模式的に示す格子図である。この格子図の演算は、図37の場合と同様に行われる。なお、図16〜図19は、説明の便宜上、各格子点間を結ぶ線分に対応するリフティング係数−α,−β,−γ,−δと規格化係数κ,1/κとを表示していない。
【0122】
図16〜図19は、本実施形態でのN回目(Nは整数)〜N+3回目の処理を模式的に示している。N回目処理(図16)では、対象領域C1,C2の2個の変換処理が1クロック周期内に並列に同時実行される。対象領域C2では、2点の出力データX(2n),X(2n+2)を加算したデータにリフティング係数−αを乗算することで乗算値を算出した後、この乗算値と中間データD2 nとを加算するという3点演算が実行される。この結果、奇数番目の入力データY(2n+1)を始点とする系列上の出力データX(2n+1)が算出される。2点の出力データX(2n),X(2n+2)は、中間データD2 nの系列に対して1点前後する2系列上のデータである。また、対象領域C1では、2点の中間データS2 n+2,S2 n+3を加算したデータにリフティング係数−γを乗算することで乗算値を算出した後、この乗算値と中間データD1 n+2とを加算するという3点演算が実行される。この結果、偶数番目の入力データY(2n+5)を始点とする系列上の第2段階の中間データD2 n+2が算出される。ここで、2点の中間データS2 n+2,S2 n+3は、中間データD1 n+2の系列に対して1点前後する2系列上のデータである。
【0123】
また、上記対象領域C1およびC2における演算の1クロック前の周期に、対象領域N1において、入力データY(2n+8)に規格化係数κを乗算する規格化処理が実行され、入力データY(2n+8)の系列上の第1段階の中間データであるS1 n+4が算出される。
【0124】
このN回目の具体的な処理の内容は次の通りである。図15に示すリングメモリ32は、入力データや中間データや一時データを格納する9ライン(系列)の記憶領域を備えており、参照済みの古いデータを格納する記憶領域に新たなデータを順番に上書きする構造を持つ。
【0125】
MMU31は、このリングメモリ32に一時記憶された入力データY(2n+8)を第1データ・セレクタ35に出力させる。制御部56は、選択制御信号SEL0を第1データ・セレクタ35に供給して、入力データY(2n+8)を第1係数乗算器36に出力させる。第1係数乗算器36は、制御部56から供給された制御信号C0に従って2個の規格化係数κ,1/κのうち後半の係数κを選択して乗算器38に供給し、乗算器38は、入力データと規格化係数κとを乗算した乗算値(=κ×Y(2n+8)=S1 n+4)を遅延レジスタ40に出力する。この第1係数乗算器36での係数乗算処理は1クロック周期内に実行される。
【0126】
この係数乗算処理から1クロック周期後、遅延レジスタ40に記憶された中間データS1n+4が第2データ・セレクタ41に出力される。第2データ・セレクタ41は、制御部56から供給される選択制御信号SEL1に従って、中間データS1 n+4を第2端子S1からMMU31に出力し、MMU31は、その中間データS1 n+4をリングメモリ32に転送し、参照済みの記憶領域入力データY(2n+8)に上書きさせる。また、この中間データS1 n+4をMMU31に出力する周期と同じクロック周期において、MMU31は、リングメモリ32に一時記憶された6点のデータX(2n),D2 n,X(2n+2),S2 n+2,D1 n+2,S2 n+3を第1データ・セレクタ35に出力させる。第1データ・セレクタ35は、制御部56から供給される選択制御信号SEL0の値に応じて、前記6点のデータを第2端子S1〜第7端子S6に出力する。この出力は、次に、第3データ・セレクタ42に入力され、第3データ・セレクタ42は、制御部56から供給される選択制御信号SEL2の値に応じて、入力データのうち対象領域C2内の3点のデータX(2n),X(2n+2),D2 nを選択して、それぞれ第1端子S0〜第3端子S2から出力し、入力データのうち対象領域C1内の3点のデータS2 n+2,S2 n+3,1 n+2を選択して、それぞれ第4端子S3〜第6端子S5から出力する。
【0127】
上方の加算器43は、第3データ・セレクタ42の第1端子S0と第2端子S1から入力した2点のデータX(2n),X(2n+2)を加算したデータを第2係数乗算器44に出力する。第2係数乗算器44において、係数レジスタ45は、制御部56から供給される制御信号C1に従って、2個のリフティング係数α,δのうち後半の係数αを選択して乗算器46に供給し、乗算器46は、入力データとリフティング係数αとを乗算した乗算値(=α×(X(2n)+X(2n+2)))を2の補数演算回路47に出力する。2の補数演算回路47において、符号が反転されたデータは、加算器48に出力される。そして、加算器48は、第2係数乗算器44から入力する乗算値と、第3データ・セレクタ42の第3端子S2から入力した中間データD2 nとを加算することで、対象領域C2内の出力データX(2n+1)を算出し、出力先選択部55に出力する。この出力データX(2n+1)の算出処理は1クロック周期内に実行される。
【0128】
一方、下方の加算器50は、第3データ・セレクタ42の第4端子S3と第5端子S4とから入力した2点の中間データS2 n+2,S2 n+3を加算したデータを第3係数乗算器50に出力する。第3係数乗算器50では、係数レジスタ51は、制御部56から供給される制御信号C2に従って、2個のリフティング係数β,γのうち後半の係数γを選択して乗算器52に供給し、乗算器52は、入力データとリフティング係数γとを乗算した乗算値(=γ×(S2 n+2+S2 n+3))を2の補数演算回路53に出力する。2の補数演算回路53において、符号が反転されたデータは、加算器54に出力される。そして、加算器54は、第3係数乗算器50から入力する乗算値と、第3データ・セレクタ42の第6端子S5から入力した中間データD1 n+2とを加算することで、対象領域C1内の中間データD2 n+2を算出し、出力先選択部55に出力する。この中間データD2 n+2の算出処理は1クロック周期内に実行される。
【0129】
出力先選択部55は、制御部56から供給された選択制御信号SEL3の値に従って、加算器48から入力した出力データX(2n+1)を第1端子K0から出力し、他方の加算器54から入力した中間データD2 n+2を第3端子K2から外部のMMU31に出力し、MMU31は、その中間データD2 n+2をリングメモリ32に転送し、参照済みの記憶領域中間データD1 n+2に上書きさせる。
【0130】
次に、N+1回目処理(図17)における対象領域C3,C4の変換処理が行なわれる。対象領域C3では、2点の中間データD1 n+3,D1 n+4を加算したデータにリフティング係数−δを乗算することで乗算値を算出した後、この乗算値と中間データS1 n+4とを加算するという3点演算が実行される。この結果、偶数番目の入力データY(2n+8)を始点とする系列上の第2段階の中間データS2 n+4が算出される。ここで、2点の中間データD1 n+3,D1 n+4は、中間データS1 n+4に対して1点前後するデータである。また、対象領域C4では、2点の中間データD2 n+1,D2 n+2を加算したデータにリフティング係数−βを乗算することで乗算値を算出した後、この乗算値と中間データS2 n+2とを加算するという3点演算が実行される。この結果、偶数番目の入力データY(2n+4)を始点とする系列上の出力データX(2n+4)が算出される。ここで、2点の中間データD2 n+1,D2 n+2は、中間データS2 n+2の系列に対して1点前後する2系列上のデータである。
【0131】
また、対象領域C3,C4における演算処理が実行される1クロック前の周期において、対象領域N2における処理が実行される。対象領域N2においては、入力データY(2n+9)に規格化係数1/κを乗算する規格化処理が実行され、中間データD1 n+4が出力される。
【0132】
このN+1回目の具体的な処理内容は次の通りである。まず、1クロック前の周期に実行される対象領域N2の処理から説明する。MMU31は、このリングメモリ32に一時記憶された入力データY(2n+9)を第1データ・セレクタ35に出力させる。制御部56は、選択制御信号SEL0を第1データ・セレクタ35に供給して、入力データY(2n+9)を第1係数乗算器36に出力させる。第1係数乗算器36は、制御部56から供給された制御信号C0に従って2個の規格化係数κ,1/κのうち前半の係数1/κを選択して乗算器38に供給し、乗算器38は、入力データと規格化係数1/κとを乗算した乗算値(=1/κ×Y(2n+9)=D1 n+4)を遅延レジスタ40に出力する。この第1係数乗算器36での係数乗算処理は1クロック周期内に実行される。
【0133】
この係数乗算処理から1クロック周期後、遅延レジスタ40に記憶された中間データD1n+4が第2データ・セレクタ41に出力される。第2データ・セレクタ41は、制御部56から供給される選択制御信号SEL1に従って、中間データD1 n+4を第1端子S0から第3データ・セレクタ42に出力し、且つ、中間データD1 n+4を第2端子S1からMMU31に出力し、MMU31は、その中間データD1 n+4をリングメモリ32に転送し、参照済みの記憶領域入力データY(2n+9)に上書きさせる。次に、この中間データD1 n+4を第3データ・セレクタ42に出力する周期と同じクロック周期において、MMU31は、リングメモリ32に一時記憶された5点のデータD2 n+1,S2 n+2,D2 n+2,D1 n+3,S1 n+4を第1データ・セレクタ35に出力させる。第1データ・セレクタ35は、制御部56から供給された選択制御信号SEL0の値に応じて、前記5点のデータを第2端子S1〜第6端子S5に出力する。この出力は、次に、第3データ・セレクタ42に入力され、第3データ・セレクタ42は、前記5点のデータのうち対象領域C3内の3点の入力データD2 n+1,D2 n+2,S2 n+2,を選択して第4端子S3〜第6端子S5から出力し、前記5点のデータのうち対象領域C4内の2点のデータおよび第2データ・セレクタ41から入力したデータD1 n+3,D1 n+4,S1 n+4を選択して第1端子S0〜第3端子S2から出力する。
【0134】
上方の加算器43は、第3データ・セレクタ42の第1端子S0と第2端子S1から入力した2点のデータD1 n+3,D1 n+4を加算したデータを第1係数乗算器44に出力する。第1係数乗算器44において、係数レジスタ45は、制御部56から供給される制御信号C1に従って、2個のリフティング係数α,δのうち前半の係数δを選択して乗算器46に供給し、乗算器46は、入力データとリフティング係数δとを乗算した乗算値(=δ×(D1 n+3+D1 n+4))を2の補数演算回路47に出力する。2の補数演算回路47において、符号が反転されたデータは、加算器48に出力される。そして、加算器48は、第2係数乗算器44から入力する乗算値と、第3データ・セレクタ42の第3端子S2から入力した中間データS1 n+4とを加算することで、対象領域C3内の中間データS2 n+4を算出し、出力先選択部55に出力する。この中間データS2 n+4の算出処理は1クロック周期内に実行される。
【0135】
一方、下方の加算器49は、第3データ・セレクタ42の第4端子S3と第5端子S4とから入力した2点の中間データD2 n+1,D2 n+2を加算したデータを第3係数乗算器50に出力する。第3係数乗算器50では、係数レジスタ51は、制御部56から供給される制御信号C2に従って、2個のリフティング係数β,γのうち前半の係数βを選択して乗算器52に供給し、乗算器52は、入力データとリフティング係数βとを乗算した乗算値(=β×(D2 n+1+D2 n+2))を2の補数演算回路53に出力する。2の補数演算回路53において、符号が反転されたデータは、加算器54に出力される。そして、加算器54は、第3係数乗算器50から入力する乗算値と、第3データ・セレクタ42の第6端子S5から入力した中間データS2 n+2とを加算することで、対象領域C4内の出力データX(2n+4)を算出し、出力先選択部55に出力する。この出力データX(2n+4)の算出処理は1クロック周期内に実行される。
【0136】
出力先選択部55は、制御部56から供給された選択制御信号SEL3の値に従って、加算器54から入力した出力データX(2n+4)を第2端子K1から出力し、他方の加算器48から入力した中間データS2 n+4を第3端子K2から外部のMMU31に出力し、MMU31は、その中間データS2 n+4をリングメモリ32に転送し、参照済みの記憶領域中間データS1 n+4に上書きさせる。また、第2端子K1から出力された出力データX(2n+4)は分岐して外部のMMU31にも出力され、MMU31は、その出力データX(2n+4)をリングメモリ32に転送し、参照済みの記憶領域中間データS2 n+2に上書きさせる。
【0137】
次に、N+2回目処理(図18)における対象領域C5,C6の変換処理が実行される。また、対象領域C5,C6における演算処理が実行される1クロック前の周期において、対象領域N3の規格化処理が実行される。ここで、対象領域C5,C6,N3は、それぞれ、上記N回目処理(図16)の対象領域C1,C2,N1を2系列(2点)後方に移動した領域である。これら対象領域C5,C6,N3では、対象領域C1,C2,N1での処理と同様の処理が実行される。したがって、対象領域N3では、偶数番目の入力データY(2n+10)に規格化係数κを乗算する規格化処理を実行して、中間データS1 n+5を算出する。また、対象領域C5では、2点の中間データS2 n+3,S2 n+4を加算したデータにリフティング係数−γを乗算することで乗算値を算出した後、この乗算値と中間データD1 n+3とを加算するという3点演算が実行される。この結果、奇数番目の入力データX(2n+7)を始点とする系列上の第2段階の中間データD2 n+3が算出される。また、対象領域C6では、2点の出力データX(2n+2),X(2n+4)を加算したデータにリフティング係数−αを乗算することで乗算値を算出した後、この乗算値と中間データD2 n+1とを加算するという3点演算が実行される。この結果、奇数番目の入力データY(2n+3)を始点とする系列上の出力データX(2n+3)が算出される。
【0138】
次に、N+3回目処理(図19)における対象領域C7,C8の変換処理が実行される。また、対象領域C7,C8における演算処理が実行される1クロック前の周期において、対象領域N4の規格化処理が実行される。ここで、対象領域C7,C8,N4は、それぞれ、上記N+1回目処理(図17)の対象領域C3,C4,N2を2系列(2点)後方に移動した領域である。これら対象領域C7,C8,N4では、対象領域C3,C4,N2での処理と同様の処理が実行される。したがって、対象領域N4では、入力データY(2N+11)に規格化係数1/κを乗算する規格化処理を実行して、中間データD1 n+5を算出する。また、対象領域C7では、奇数番目の2点の中間データD1 n+4,D1 n+5を加算したデータにリフティング係数−δを乗算することで乗算値を算出した後、この乗算値と偶数番目の中間データS1 n+5とを加算するという3点演算が実行される。この結果、偶数番目の入力データX(2n+10)を始点とする系列上の第2段階の中間データS2 n+5が算出される。また、対象領域C8では、2点の中間データD2 n +2,D2 n+3を加算したデータにリフティング係数−βを乗算して乗算値を算出した後、この乗算値と中間データS2 n+3とを加算するという3点演算が実行される。この結果、偶数番目の入力データY(2n+6)を始点とする系列上の出力データX(2n+6)算出される。
【0139】
以上のように、上記N回目処理(図16)およびN+1回目処理(図17)と同様の処理が、全ての点の出力データが算出されるまで対象領域を移動させつつ繰り返し実行される。これにより、偶数番目或いは奇数番目の1点の出力データを算出するのに要する平均周期を1クロック周期とすることができ、出力データの算出周期を大幅に短縮化できる。
【0140】
次に、上記ウェーブレット変換装置30を用いたラインベースの2次元逆DWT処理を以下に説明する。
【0141】
水平フィルタリング部33Aに入力するサブバンド(帯域成分)は、図11に示すように、サブバンド23LLおよび23HL、あるいは、サブバンド23LHおよび23HHである。
【0142】
図16〜図19で示した入力データ・・・,Y(n−1),Y(n),Y(n+1),・・・は、サブバンド23LLと23HLの水平方向のデータを交互に配列したデータ、あるいは、サブバンド23LHと23HHの水平方向のデータを交互に配列したデータである。そして、サブバンド23LLと23HLとからなる入力データに対して水平フィルタリングを施すことにより、サブバンド23Lが出力され、サブバンド23LHと23HHとからなる入力データに対して水平フィルタリングを施すことによりサブバンド23Hが出力される。図16〜図19で示した出力データ・・・,X(n−1),X(n),X(n+1),・・・は、サブバンド23Lあるいはサブバンド23Hの水平方向の1ラインのデータ列を示している。
【0143】
次に、垂直フィルタリング部33Bが入力するサブバンドは、図11に示すように、サブバンド23Lおよびサブバンド23Hである。この場合には、図16〜図19で示した入力データ・・・,Y(n−1),Y(n),Y(n+1),・・・は、サブバンド23Lと23Hの垂直方向のデータを交互に配列したデータである。そして、サブバンド23Lと23Hとからなる入力データに対して垂直フィルタリングを施すことにより、画像データ23が出力される。図16〜図19で示した出力データ・・・,X(n−1),X(n),X(n+1),・・・は、画像データ23の垂直方向の1ラインのデータ列を示している。画像データ23は、水平画素数W、垂直画素数Hを有する矩形状のデータである。
【0144】
サブバンド23LL,23HL,23LH,23HHは、垂直画素数H/2、水平画素数W/2を有する矩形状のデータであって、図20に模式的に示すように、偶数行偶数列のサブバンド23LLおよび偶数行奇数列のサブバンド23HLを1組として、あるいは、奇数行偶数列のサブバンド23LHおよび奇数行奇数列のサブバンド23HHを1組として、垂直方向に配列するデータ列…,Yi(2n),Yi(2n+1),Yi(2n+2)…として水平フィルタリング部33に入力させられる。つまり、記憶領域58Lにおける各画素行(図の横方向のデータ列)は、サブバンド23LLおよび23HLの各水平ラインの画素を交互に配列したデータ列であり、記憶領域58Hに入力される各画素行(図の横方向のデータ列)は、サブバンド23LHおよび23HHの各水平ラインの画素を交互に配列したデータ列である。入力データYi(k)の添字iは、当該入力データYi(k)が所属する画素列の番号を示すものとする。画素列の番号iは、i=0,1.…,W−1(W:水平画素数)の値をとる。図中、サブバンド23LLおよび23HLを1組とした偶数行の記憶領域58Lと、サブバンド23LHおよびサブバンド23HHを1組とした奇数行の記憶領域58Hとを2領域に分割しているが、メモリ状のデータ配置はこれに限定されるものではない。
【0145】
具体的には、第1リングメモリ32Aと水平フィルタリング部33Aは、上記N回目処理(図16)〜上記N+2回目処理(図17)を含む各回の処理を、低域側(記憶領域58L側)と高域側(記憶領域58H側)を交互に切り替えながら、各回の処理を画素単位について繰り返し実行する。
【0146】
例えば、上記N回目処理(図16)が、メモリ領域58L側の1番目の画素行に対して1回実行された後に、上記N+1回目処理(図17)が1回実行され、更に、上記N+2回目処理(図18)が1回実行され、・・・といった処理が行われる。同様に、記憶領域58H側の1番目の画素行に対して実行され、次に、記憶領域58L側の2番目の画素行に対して実行された後に、記憶領域58H側の2番目の画素行に対して実行され、次に、記憶領域58L側の3番目の画素行に対して実行された後に、記憶領域58H側の3番目の画素行に対して実行され、・・・、最終的に、記憶領域58L側のH/2番目の画素行に対して実行された後に、記憶領域58H側のH/2番目の画素行に対して実行される。
【0147】
なお、第1リングメモリ32Aは、図21に模式的に示すように、入力データ…,Xj(k),Xj+1(k),…に対応する9点(9画素)のデータを保持する記憶領域59を有しており、上記一時データや中間データを保持することができる。
【0148】
この結果、水平フィルタリング部33Aからは、サブバンド23LLと23HLとが合成されたサブバンド23Lの各水平ライン単位(H/2高さ)の出力と、サブバンド23LHと23HHとが合成されたサブバンド23Hの各水平ライン単位(H/2高さ)の出力とが、交互にで連続的に出力される。
【0149】
そして、サブバンド23Lの水平ラインとサブバンド23Hの水平ラインとが、交互に配列されたデータが、垂直ラインのデータとして、そのまま第2リングメモリ32Bに出力され垂直フィルタリング部33Bで処理される。
【0150】
具体的には、第2リングメモリ32Bと垂直フィルタリング部33Bは、上記N回目処理(図16)〜上記N+1回目処理(図17)を含む各画素列について処理を水平ライン単位で繰り返し実行する。例えば、上記N回目処理(図16)が、0番目の画素列に対して実行された後に、1番目の画素列に対して実行され、次に、2番目の画素列に対して実行され、・・・、最終的に、W−1番目の画素列に対して実行される。次に、上記N+1回目処理(図7)が、0番目の画素列に対して実行された後に、1番目の画素列に対して実行され、更に、2番目の画素列に対して実行され、・・・、最終的に、W−1番目の画素列に対して実行される。このようにして、各回の処理が全ての画素列について順次実行される。なお、第2リングメモリ32Bは、図20に模式的に示すように、入力データ列に対応する9×W点(9ライン)のデータを保持する記憶領域58を有しており、上記一時データや中間データを保持することができる。
【0151】
この結果、垂直フィルタリング部33Bは、水平ライン単位で入力するデータ行から画像データ23を出力するのである。
【0152】
以上の処理を再帰的に実行させることで、任意次数の分解レベルの帯域成分を合成処理し、画像データを復元することができる。すなわち、k+1次(kは整数)の分解レベルにおけるサブバンドLL(k+1),HL(k+1),LH(k+1),HH(k+1)を、ウェーブレット変換装置1に再帰的に入力させることで、k次のサブバンドLL(k)を得ることが可能である。
【0153】
以上のように、本実施形態に係るウェーブレット変換装置1では、図15に示す構成を有する水平フィルタリング部33Aと垂直フィルタリング部33Bとを備えるため、出力データの算出周期を短縮化できる。したがって、ラインベースの2次元ウェーブレット変換を短時間で高速で行うことが可能である。
【0154】
そして、第2の実施形態においては、第1の実施の形態において必要であった、水平フィルタリング部33Aの出力を記憶するバッファが不要である。第1の実施形態においては、水平フィルタリング部4Aが4クロックで1画素を出力し、垂直フィルタリング部4Bが4クロックで1画素を入力する構成であったが、水平フィルタリング4AがN+6回目処理(図9)およびN+7回目処理(図10)において、連続的に、垂直ラインを出力するのに対して、垂直フィルタリング部4Bでは、N回目処理(図3)で垂直ラインを入力した後、N+4回目処理(図7)までは、垂直ラインを入力しない。このためバッファが必要であった。これに対して、第2の実施形態においては、水平フィルタリング部33Aが各回処理において垂直ラインを出力し、垂直フィルタリング33Bが各回処理において垂直ラインを入力するので、バッファが不要となるのである。
【0155】
<第3の実施形態>
次に、本発明の第3の実施形態に係るウェーブレット変換装置およびウェーブレット変換方法について説明する。本実施形態に係るウェーブレット変換装置は、水平フィルタリング部と垂直フィルタリング部を除いて、上記第2の実施形態に係るウェーブレット変換装置30(図14)の構成と同じ構成を有する。ただし、第2の実施形態においては第1,第2リングメモリ32A,32Bは、それぞれ9点、9ラインのリングメモリであったが、この実施の形態においては、第1,第2リングメモリ32A,32Bは、それぞれ8点、8ラインのリングメモリである。
【0156】
図22は、第3の実施形態に係るフィルタリング部33sの概略構成を示す図である。このフィルタリング部33sは、水平フィルタリング部または垂直フィルタリング部を示し、また、リングメモリ32sは、図14に示した第1リングメモリ32Aまたは第2リングメモリ32Bの何れかを示すものとする。
【0157】
このフィルタリング部33sは、リングメモリ32sから入力データを選択的に取り込む第1,第2データ・セレクタ60,65、遅延レジスタ64、第1〜第5係数乗算器61,66,71,76,81、加算器70,75,80,85、出力先選択部(DMUX)86、および制御部87を備えて構成される。これら構成要素のうち、第2係数乗算器66と加算器70の組は、2点のデータを上記ステップa或いはステップb(図38)の方法で処理する2点演算部を構成する。その他、第3係数乗算器71と加算器75の組、第4係数乗算器76と加算器80の組、および第5係数乗算器81と加算器85の組も同様に2点演算部を構成している。また、これら2点演算部と出力先選択部86とで中間データ算出手段が構成される。
【0158】
制御部87は、画素クロック信号PCLKと同期して動作する。第1データ・セレクタ60は、この制御部87から供給される選択制御信号SEL0の値に応じて、リングメモリ32sから取り込んだデータを第1端子S0〜第8端子S7の何れかから選択的に出力する。
【0159】
第1データ・セレクタ60の第1端子S0から出力されたデータは、第1係数乗算器61に入力される。第1係数乗算器61では、制御部87から供給される制御信号C0の値に応じて、規格化係数κ,1/κの何れか一方を乗算器63に出力し、乗算器63は、入力データにその規格化係数を乗算する。乗算器63からの出力データは、遅延レジスタ64に入力される。この第1係数乗算器61における規格化処理は1クロック周期内に実行される。なお、第1係数乗算器61と遅延レジスタ64とから規格化手段が構成される。遅延レジスタ64の出力は第2データ・セレクタ65に入力され、かつ、分岐してMMU31に入力される。
【0160】
第2データ・セレクタ65は、制御部87から供給される選択制御信号SEL1の値に応じて、遅延レジスタ64および第1データ・セレクタ60から取り込んだデータを第1端子S0〜第8端子S7の何れかから選択的に出力する。第2〜第5係数乗算器66,71,76,81は、それぞれ、制御信号C1〜C4に従って入力データにリフティング係数−α,−β,−γ,−δを乗算する回路である。係数レジスタ67,72,77,82は、制御信号C1〜C4を受けて、リフティング係数α,β,γ,δをそれぞれ乗算器68,73,78,83に出力する。乗算器68,73,78,83は、それぞれ、第2データ・セレクタ65の出力端子S0,S2,S4,S6から入力するデータにリフティング係数α,β,γ,δを乗算して出力する。2の補数演算回路69,74,79,84は、それぞれ乗算器68,73,78,83からの出力データの符号を反転させる。加算器70,75,80,85は、それぞれ、第2〜第5係数乗算器66,71,76,81から入力したデータと、第2データ・セレクタ65の出力端子S1,S3,S5,S7から入力したデータとを加算して出力先選択部86に出力する。
【0161】
出力先選択部86は、制御部87から供給される選択制御信号SEL2の値に応じて、加算器70,75,80,85から並列に入力する4点のデータを第1端子K0〜第5端子K4から出力する。第1端子K0および第2端子K1から出力されたデータは合成データとして外部に出力される。また、第2端子K1から分岐されたデータおよび第3端子K2〜第5端子K4から出力されたデータは、MMU31に入力される。MMU31は、これら第2端子K1〜第5端子K4からMMU31へ出力されたデータをリングメモリ32sに転送し記憶させることができる。
【0162】
次に、図22に示すフィルタリング部33sを用いたリフティング演算の代表例を、図23〜図25を参照しつつ以下に説明する。この格子図の演算は、図37の場合と同様に行われる。なお、図23〜図25では、説明の便宜上、各格子点間を結ぶ線分に対応するリフティング係数−α,−β,−γ,−δと規格化係数κ,1/κとを表示していない。
【0163】
図23は、N回目処理(N:整数)が終了した時点の格子図を示し、図24、図25は、それぞれN+1回目、N+2回目の処理を模式的に示している。N回目処理(図23)では、対象領域A1,A2,B1,B2の4個の変換処理が1クロック周期内に並列に同時実行される。対象領域A1では、2点の中間データD1 n+2,S2 n+2を用いた上記ステップa(図38)の2点演算を実行して、奇数番目の入力データY(2n+5)を始点とする系列上の第2段階の一時データ(D2 n+2)を算出する。ここで、中間データS2 n+2は、中間データD1 n+2の系列に対して1点前の系列上のデータである。また、対象領域A2では、2点のデータD2 n,X(2n)を用いた上記ステップaの2点演算を実行して、奇数番目の入力データY(2n+1)を始点とする系列上の出力一時データ(X(2n+1))を算出する。また、対象領域B1では、一時データ(S2 n+3)と1クロック周期前の演算処理で算出された中間データD1 n+3とを用いた上記ステップb(図38)の2点演算を実行して、偶数番目の入力データY(2n+6)を始点とする系列上の第2段階の中間データS2 n+3を算出する。ここで、中間データD1 n+3は、一時データ(S2 n+3)の系列に対して1点後の系列上のデータである。また、対象領域B2では、出力一時データ(X(2n+2))と中間データD2 n+1とを用いた上記ステップbの2点演算を実行して、偶数番目の入力データY(2n+2)を始点とする系列上の出力データX(2n+2)を算出する。
【0164】
また、対象領域A1,A2,B1,B2における上記並列処理の1クロック前の周期において、対象領域N1の規格化処理が行なわれる。対象領域N1においては、入力データY(2n+7)に規格化係数1/κを乗算する規格化処理が実行される。
【0165】
このN回目の具体的な処理の内容は次の通りである。リングメモリ32sは8ライン(系列)の記憶領域を備えている。
N回目処理においては、対象領域A1,A2,B1,B2内の演算処理が1クロック周期内に行なわれるが、この演算処理の1クロック周期前において、対象領域N1内の演算処理が行なわれる。この1クロック前の周期における処理から説明する。MMU31は、リングメモリ32sに一時記憶された入力データY(2n+7)を第1データ・セレクタ60に出力する。第1データ・セレクタ60は、制御部87からの選択制御信号SEL0の値に応じて、入力データY(2n+7)を第1端子S0から出力する。
【0166】
第1端子S0から出力された入力データY(2n+7)は、第1係数乗算器61に入力される。第1係数乗算器61において、係数レジスタ62は、制御部87から供給された制御信号C0に従って、2個の規格化係数κ,1/κのうち規格化係数1/κを乗算器63に出力し、乗算器63は入力データY(2n+7)に規格化係数1/κを乗算する。この結果、第1係数乗算器61は、データD1 n+3(=(1/κ)×Y(2n+7))を算出する。乗算器63の出力は、遅延レジスタ64に入力される。以上の処理が、対象領域A1,A2,B1,B2内の演算処理が行なわれる1クロック前の周期において実行される。
【0167】
次のクロック周期において、MMU31は、リングメモリ32sに一時記憶された7点のデータX(2n),D2 n,(X(2n+2)),D2 n+1,S2 n+2,D1 n+2,(S2 n+3)を第1データ・セレクタ60に出力させる。第1データ・セレクタ60は、制御部87から供給される選択制御信号SEL0の値に応じて、前記7点のデータを第2データ・セレクタ65に出力する。また、遅延レジスタ64に記憶されているデータD1 n+3が第2データ・セレクタ65に出力される。遅延レジスタ64から出力されたは中間データD1 n+3は分岐して外部のMMU31にも出力され、MMU31は、その中間データD1 n+3をリングメモリ32sに転送し、参照済みの記憶領域入力データY(2n+7)に上書きさせる。
【0168】
第2データ・セレクタ65は、制御部87から供給される選択制御信号SEL1の値に応じて、8点のデータのうち対象領域A2内の2点の出力データX(2n),D2 nを選択して第1端子S0と第2端子S1とに出力し、対象領域B2内の中間データD2 n+1と一時データ(X(2n+2))とを第3端子S2と第4端子S3とから出力し、対象領域A1内の中間データS2 n+2とD1 n+2とを第5端子S4と第6端子S5とから出力し、対象領域B1内の中間データD1 n+3と一時データ(S2 n+3)とを第7端子S6と第8端子S7とから出力する。
【0169】
第2係数乗算器66において、係数レジスタ67は、制御部87から供給された制御信号C1に応じてリフティング係数αを乗算器68に出力し、乗算器68は、第1端子S0から入力したデータX(2n)にリフティング係数αを乗算して得たデータα×X(2n)を出力する。乗算器68からの出力データは、2の補数演算回路69において符号が反転され、加算器70に出力される。加算器70は、第2係数乗算器66から出力されたたデータ−α×X(2n)と、第2データ・セレクタ65の第2端子S1から入力したデータD2 nとを加算することで対象領域A2内の一時データ(X(2n+1))を算出し、出力先選択部86に出力する。
【0170】
また、第3係数乗算器71では、係数レジスタ72は、制御部87から供給された制御信号C2に応じてリフティング係数βを乗算器73に出力し、乗算器73は、第3端子S2から入力した中間データD2 n+1にリフティング係数βを乗算して得たデータβ×D2 n+1を出力する。乗算器73の出力は、2の補数演算回路74において符号が反転された後、加算器75に出力される。加算器75は、第3係数乗算器71から出力されたデータ−β×D2 n+1と、第2データ・セレクタ65の第4端子S3から入力した出力一時データ(X(2n+2))とを加算することで、対象領域B2内の出力データX(2n+2)を算出し、出力先選択部86に出力する。
【0171】
また、第4係数乗算器76では、係数レジスタ77は、制御部87から供給された制御信号C3に応じてリフティング係数γを乗算器78に出力し、乗算器78は、第5端子S4から入力した中間データS2 n+2にリフティング係数γを乗算して得たデータγ×S2 n+2を出力する。乗算器78の出力は、2の補数演算回路79において符号が反転された後、加算器80に出力される。加算器80は、第4係数乗算器76から出力されたデータ−γ×S2 n+2と、第2データ・セレクタ65の第6端子S5から入力したデータD1 n+2とを加算することで、対象領域A1内の一時データ(D2 n+2)を算出し、出力先選択部86に出力する。
【0172】
また、第5係数乗算器81では、係数レジスタ82は、制御部87から供給された制御信号C4に応じてリフティング係数δを乗算器83に出力し、乗算器83は、第7端子S6から入力した中間データD1 n+3にリフティング係数δを乗算して得たデータδ×D1 n+3を出力する。乗算器83の出力は、2の補数演算回路84において符号が反転された後、加算器85に出力される。加算器85は、第5係数乗算器81から出力されたデータ−δ×D1 n+3と、第2データ・セレクタ65の第8端子S7から入力した一時データ(S2 n+3)とを加算することで、対象領域B1内の第2段階の中間データS2 n+3を算出し、出力先選択部86に出力する。
【0173】
出力先選択部86は、制御部87から供給された選択制御信号SEL2の値に従って、加算器75から入力した出力データX(2n+2)を第2端子K1から外部に出力する。また、出力データX(2n+2)は、MMU31にも出力される。また、出力先選択部86は、前記選択制御信号SEL2に従って、加算器70,80,85から入力した3点のデータ(X(2n+1)),(D2 n+2),S2 n+3を第3端子K2〜第5端子K4からMMU31に出力する。MMU31は、フィルタリング部33sから外部に出力された4点のデータ(X(2n+1)),X(2n+2),(D2 n+2),S2 n+3をリングメモリ32sに転送し、MMU31は、その4点のデータ(X(2n+1)),X(2n+2),(D2 n+2),S2 n+3をリングメモリ32sに転送し、参照済みの記憶領域D2 n,(X(2n+2)),D1 n+2,(S2 n+3)に上書きさせる。
【0174】
次に、N+1回目処理(図24)における対象領域A3,A4,B3,B4における変換処理が並列に同時実行される。対象領域A3では、1クロック周期前の演算処理で算出された中間データS1 n+4と中間データD1 n+3を用いた上記ステップa(図38)の2点演算を実行して、偶数番目の入力データY(2n+8)を始点とする系列上の第2段階の一時データ(S2 n+4)を算出する。ここで、中間データD1 n+3は、中間データS1 n+4の系列に対して1点前の系列上のデータである。また、対象領域A4では、2点のデータS2 n+2,D2 n+1を用いた上記ステップaの2点演算を実行して、偶数番目の入力データY(2n+4)を始点とする系列上の出力一時データ(X(2n+4))を算出する。また、対象領域B3では、一時データ(D2 n+2)と中間データS2 n+3とを用いた上記ステップb(図38)の2点演算を実行して、奇数番目の入力データY(2n+5)を始点とする系列上の第2段階の中間データD2 n+2を算出する。ここで、中間データS2 n+3は、一時データ(D2 n+2)の系列に対して1点後の系列上のデータである。また、対象領域B4では、出力一時データ(X(2n+1))と出力データX(2n+2)とを用いた上記ステップbの2点演算を実行して、奇数番目の入力データY(2n+1)を始点とする系列上の出力データX(2n+1)を算出する。
【0175】
また、対象領域A3,A4,B3,B4における上記並列処理の1クロック前の周期において、対象領域N2の規格化処理が行なわれる。対象領域N2では、入力データY(2n+8)に規格化係数κを乗算する規格化処理が実行される。
【0176】
次に、N+1回目の具体的な処理の内容は次の通りである。1クロック前の周期の対象領域N2における処理から説明する。MMU31は、リングメモリ32sに一時記憶された入力データY(2n+8)を第1データ・セレクタ60に出力する。第1データ・セレクタ60は、制御部87からの選択制御信号SEL0の値に応じて、入力データY(2n+8)を第1端子S0から出力する。
【0177】
第1端子S0から出力された入力データY(2n+8)は、第1係数乗算器61に入力される。第1係数乗算器61において、係数レジスタ62は、制御部87から供給された制御信号C0に従って、2個の規格化係数κ,1/κのうち規格化係数κを乗算器63に出力し、乗算器63は入力データY(2n+8)に規格化係数κを乗算する。この結果、第1係数乗算器61は、データS1 n+4(=κ×Y(2n+8))を算出する。乗算器63の出力は、遅延レジスタ64に入力される。以上の処理が、対象領域A1,A2,B1,B2内の演算処理が行なわれる1クロック前の周期において実行される。
【0178】
次のクロック周期において、MMU31は、リングメモリ32sに一時記憶された7点のデータ(X(2n+1)),X(2n+2),D2 n+1,S2 n+2,(D2 n+2),S2 n+3,D1 n+3を第1データ・セレクタ60に出力させる。第1データ・セレクタ60は、制御部87から供給される選択制御信号SEL0の値に応じて、前記7点のデータを第2データ・セレクタ65に出力する。また、遅延レジスタ64に記憶されている中間データS1 n+4が第2データ・セレクタ65に出力される。遅延レジスタ64から出力されたは中間データS1 n+4は分岐して外部のMMU31にも出力され、MMU31は、その中間データS1 n+4をリングメモリ32sに転送し、参照済みの記憶領域入力データY(2n+8)に上書きさせる。
【0179】
第2データ・セレクタ65は、制御部87から供給される選択制御信号SEL1の値に応じて、8点のデータのうち対象領域B4内の2点の入力データX(2n+2),(X(2n+1))を選択して第1端子S0と第2端子S1とに出力し、対象領域A4内の中間データD2 n+1,S2 n+2とを第3端子S2と第4端子S3とから出力し、対象領域B3内の中間データS2 n+3と一時データ(D2 n+2)とを第5端子S4と第6端子S5とから出力し、対象領域A3内の中間データD1 n+3とS1 n+4とを第7端子S6と第8端子S7とから出力する。
【0180】
第2係数乗算器66において、係数レジスタ67は、制御部87から供給された制御信号C1に応じてリフティング係数αを乗算器66に出力し、乗算器68は、第1端子S0から入力したデータX(2n+2)にリフティング係数αを乗算して得たデータα×X(2n+2)を出力する。乗算器68からの出力データは、2の補数演算回路69において符号が反転され、加算器70に出力される。加算器70は、第2係数乗算器66から出力されたたデータ−α×X(2n+2)と、第2データ・セレクタ65の第2端子S1から入力した一時データ(X(2n+1))とを加算することで対象領域B4内の出力データX(2n+1)を算出し、出力先選択部86に出力する。
【0181】
また、第3係数乗算器71では、係数レジスタ72は、制御部87から供給された制御信号C2に応じてリフティング係数βを乗算器73に出力し、乗算器73は、第3端子S2から入力した中間データD2 n+1にリフティング係数βを乗算して得たデータβ×D2 n+1を出力する。乗算器73の出力は、2の補数演算回路74において符号が反転された後、加算器75に出力される。加算器75は、第3係数乗算器71から出力されたデータ−β×D2 n+1と、第2データ・セレクタ65の第4端子S3から入力した中間データS2 n+2とを加算することで、対象領域A4内の出力一時データ(X(2n+4))を算出し、出力先選択部86に出力する。
【0182】
また、第4係数乗算器76では、係数レジスタ77は、制御部87から供給された制御信号C3に応じてリフティング係数γを乗算器78に出力し、乗算器78は、第5端子S4から入力した中間データS2 n+3にリフティング係数γを乗算して得たデータγ×S2 n+3を出力する。乗算器78の出力は、2の補数演算回路79において符号が反転された後、加算器80に出力される。加算器80は、第4係数乗算器76から出力されたデータ−γ×S2 n+3と、第2データ・セレクタ65の第6端子S5から入力した一時データ(D2 n+2)とを加算することで、対象領域B3内の中間データD2 n+2を算出し、出力先選択部86に出力する。
【0183】
また、第5係数乗算器81では、係数レジスタ82は、制御部87から供給された制御信号C4に応じてリフティング係数δを乗算器83に出力し、乗算器83は、第7端子S6から入力した中間データD1 n+3にリフティング係数δを乗算して得たデータδ×D1 n+3を出力する。乗算器83の出力は、2の補数演算回路84において符号が反転された後、加算器85に出力される。加算器85は、第5係数乗算器81から出力されたデータ−δ×D1 n+3と、第2データ・セレクタ65の第8端子S7から入力した中間データS1 n+4とを加算することで、対象領域A3内の第2段階の中間データS2 n+4を算出し、出力先選択部86に出力する。
【0184】
出力先選択部86は、制御部87から供給された選択制御信号SEL2の値に従って、加算器70から入力した出力データX(2n+1)を第1端子K0から外部に出力する。また、出力先選択部86は、前記選択制御信号SEL2に従って、加算器75,80,85から入力した3点のデータ(X(2n+4)),D2 n+2,(S2 n+4)を第3端子K2〜第5端子K4からMMU31に出力する。MMU31は、フィルタリング部33sから外部に出力された3点のデータ(X(2n+4)),D2 n+2,(S2 n+4)をリングメモリ32sに転送し、MMU31は、その3点のデータ(X(2n+4)),D2 n+2,(S2 n+4)をリングメモリ32sに転送し、参照済みの記憶領域S2 n+2,(D2 n+2),S1 n+4に上書きさせる。
【0185】
次に、N+2回目処理(図25)における対象領域A5,A6,B5,B6の4個の変換処理が1クロック周期内に並列に同時実行される。また、対象領域A5,A6,B5,B6における上記並列処理の1クロック前の周期において、対象領域N3の規格化処理が行なわれる。
【0186】
対象領域A6,B6,A5,B5,N3は、それぞれ、上記N回目処理(図23)の対象領域A2,B2,A1,B1,N1を2系列(2点)後方に移動した領域である。これら対象領域A6,B6,A5,B5,N3では、それぞれ、対象領域A2,B2,A1,B1,N1における処理と同様の処理が実行される。この結果として、対象領域A6では一時データ(X(2n+3))が、対象領域B6では出力データX(2n+4)が、対象領域A5では一時データ(D2 n+3)が、対象領域B5では中間データS2 n+4が、対象領域N3では中間データD1 n+4がそれぞれ算出される。
【0187】
次に、N+3回目処理(図示せず)においては、上記N+1回目処理(図24)の対象領域B4,A4,B3,A3,N2を2系列(2点)後方に移動した領域において、N+1回目処理と同様の処理が行なわれる。
【0188】
以上のように、上記N回目処理(図23)および上記N+1回目処理(図24)と同様の処理が、全ての出力データが算出されるまで対象領域を移動させつつ繰り返し実行される。これにより、偶数番目或いは奇数番目の1点の出力データを算出するのに要する平均周期を1クロック周期とすることができ、出力データの算出周期を大幅に短縮化できる。
【0189】
本実施形態に係るウェーブレット変換装置は、図22に示す構成を有する水平フィルタリング部と垂直フィルタリング部とを備えるため、上記第2の実施形態の場合と同じラインベースの2次元逆DWT処理を実行することが可能である。したがって、ウェーブレット変換を極めて短時間で高速に行うことが可能である。
【0190】
また、第3の実施形態においても、第2の実施形態で説明したように水平フィルタリング部33sが各回処理において水平ラインを出力し、垂直フィルタリング33sが各回処理において画素列を入力するので、上記第1の実施形態に係るウェーブレット変換装置1のようにラインバッファ回路5を必要としない。したがって、小回路規模で、低消費電力で動作する廉価なウェーブレット変換装置の実現が可能である。
【0191】
<変形例>
図26は、上記した第2および第3の実施形態の変形例に係る2次元ウェーブレット変換装置30aの概略構成を示す図である。このウェーブレット変換装置30aは、サブバンドの2次元画像データを一時的に保持するバッファ88、外部供給のクロック信号CLKと同期して動作するMMU(メモリ管理部)89、第1リングメモリ32または32s、水平フィルタリング部33または33s、第2リングメモリ3、垂直フィルタリング部4を備えて構成されている。
【0192】
ここで、第2リングメモリ3と垂直フィルタリング部4は、上記第1の実施形態に係るリングメモリ3とフィルタリング部4と同じ構成を有する。よって、本変形例の第2リングメモリ3Bと垂直フィルタリング部4Bは4ライン周期で1ラインの出力データを算出できる。
【0193】
また、第1リングメモリ32または32sと水平フィルタリング部33または33sとは、上記第2の実施形態に係るリングメモリ32とフィルタリング部33と、若しくは上記第3の実施形態に係るリングメモリ32sとフィルタリング部33sと同じ構成を有する。よって、本変形例の第1リングメモリ32または32sと水平フィルタリング部33または33sは1クロック周期で1点の出力データを算出できる。
【0194】
したがって、この変形例においては、水平フィルタリング部33または33sは、第1リングメモリ32から4クロック周期間隔で入力データを取り込むように処理する。これにより、上記第1の実施形態に係るウェーブレット変換装置1(図1)のようにラインバッファ回路5を必要としない。したがって、メモリ使用量が少ない、小回路規模で低廉なウェーブレット変換装置の実現が可能となる。
【0195】
なお、本変形例では、第2リングメモリと垂直フィルタリング部として第1の実施形態に係る第2リングメモリ3Bと垂直フィルタリング部4Bを採用したが、この代わりに、第2リングメモリと垂直フィルタリング部として従来技術で説明したような平均5クロック周期で1点の出力データを算出する構成を採用してもよい。この場合には、水平フィルタリング部33または33sは、第1リングメモリ32から5ライン周期間隔で入力データを取り込むように処理する。これにより、ラインバッファ回路5を必要としない構成とすることができる。
【0196】
<第4の実施形態>
次に、本発明の第4の実施形態に係るウェーブレット変換装置およびウェーブレット変換方法について説明する。図27は、第4の実施形態に係るウェーブレット変換装置90の概略構成を示す図である。このウェーブレット変換装置90は、サブバンドの2次元画像データを一時的に保持するバッファ91、外部供給のクロック信号CLKと同期して動作するMMU(メモリ管理部)92、第1リングメモリ32H、第1水平フィルタリング部33H、第2リングメモリ32L、第2水平フィルタリング部33L、第3リングメモリ93および垂直フィルタリング部94を備えて構成されている。ここで、第1リングメモリ32H、第1水平フィルタリング部33H、第2リングメモリ32L、第2水平フィルタリング部33L、第3リングメモリ93および垂直フィルタリング部94は、外部供給の画素クロック信号PCLKと同期して動作する。
【0197】
本実施形態では、MMU92、第1水平フィルタリング部33H、第2水平フィルタリング部33Lおよび垂直フィルタリング部94、はハードウェアで構成されるが、この代わりに、マイクロプロセッサで実行する命令群を含むコンピュータ・プログラムで構成されてもよい。
【0198】
このウェーブレット変換装置90は、2次元画像データにラインベースの2次元逆DWTを1回施す機能を有している。第1および第2水平フィルタリング部33H,33Lと垂直フィルタリング部94とは、それぞれ第3リングメモリ93を介して接続されている。
【0199】
MMU92は、バッファ91、第1リングメモリ32H、第2リングメモリ32Lおよび第3リングメモリ93のデータ入出力を制御する機能を有しており、バッファ91から読出したサブバンドの2次元画像データを第1リングメモリ32Hおよび第2リングメモリ32Lに転送し記憶させることができる。
【0200】
ここで、バッファ91には、図11で示した4つのサブバンドのデータ23LL,23HL,23LH,23HHが入力され、第1リングメモリ32Hには、サブバンド23LHと23HHの水平方向の画素が交互に配列された水平幅W、垂直高さH/2の画像データが入力され、第2リングメモリ32Lには、サブバンド23LLと23HLの水平方向の画素が交互に配列された水平幅W、垂直高さH/2の画像データが入力される。
【0201】
第1水平フィルタリング部33Hは、第1リングメモリ32Hから入力したデータに対して2次元画像の水平方向にフィルタリングを実行することで、画素クロック信号PCLKの1クロック周期で、サブバンド23LHと23HHとを合成した画像データであるサブバンド23Hのデータを1点ずつ算出できる。このようにして算出されたサブバンド23Hの画像データYH(m)が第3リングメモリ93に転送される。
【0202】
第2水平フィルタリング部33Lは、第2リングメモリ32Lから入力したデータに対して2次元画像の水平方向にフィルタリングを実行することで、画素クロック信号PCLKの1クロック周期で、サブバンド23LLと23HLとを合成した画像データであるサブバンド23Lのデータを1点ずつ算出できる。このようにして算出されたサブバンド23Lの画像データYL(m)が第3リングメモリ93に転送される。
【0203】
これら第1水平フィルタリング部33Hと第2水平フィルタリング部33Lとしては、上記第2または第3の実施形態に係るフィルタリング部33または33sと同じ構成を採用すればよい。
【0204】
一方、垂直フィルタリング部94は、第3リングメモリ93からサブバンド23Lと23Hの画像データYL(m)およびYH(m)を入力し、この画像データYL(m)およびYH(m)の垂直方向のラインを交互に配列したデータに対して画素列ごとに水平方向にフィルタリングを実行することで、画素クロック信号PCLKの1クロック周期で、画像データ23の垂直ラインのデータを水平方向に2点ずつ算出できる。
【0205】
図28に、本実施形態に係る垂直フィルタリング部94の概略構成を示す。この垂直フィルタリング部94は、入力データを選択的に取り込む第1データ・セレクタ95、第1および第2係数乗算器96,100、遅延レジスタ99,103、第2データ・セレクタ104、前段の4つの加算器105,111,117,123、第3〜第6係数乗算器106,112,118,124、後段の4つの加算器110,116,122,128、出力先選択部(DMUX)129、および制御部130を備えて構成される。これら構成要素のうち、2個の加算器105,110と第3係数乗算器106からなる組は3点のデータを1クロック周期内に処理するため、3点演算部を構成する。また、2個の加算器111,116と第4係数乗算器112からなる組、2個の加算器117,122と第5係数乗算器118からなる組、および2個の加算器123,128と第6係数乗算器124からなる組も、それぞれ、3点のデータを1クロック周期内に処理するため、3点演算部を構成する。また、これら4組の3点演算部と出力先選択部129とで中間データ算出手段が構成される。
【0206】
制御部130は、画素クロック信号PCLKと同期して動作する。第1データ・セレクタ95は、この制御部130から供給される選択制御信号SEL0の値に応じて、第3リングメモリ93から取り込んだデータ(YL(m)およびYH(m)の垂直方向のラインを交互に配列したデータ)を第1端子S0〜第12端子S11の何れかから選択的に出力する。
【0207】
第1データ・セレクタ95の第1端子S0あるいは第2端子S1から出力されたデータは、第1係数乗算器96と第2係数乗算器100とに入力される。第1係数乗算器96では、係数レジスタ97は、制御部130から供給される制御信号C0に応じて、規格化係数κを乗算器98に出力し、乗算器98は、入力データに規格化係数κを乗算し、乗算出力を遅延レジスタ99に出力する。また、第2係数乗算器100では、係数レジスタ101は、制御部130から供給される制御信号C1に応じて、規格化係数1/κを乗算器102に出力し、乗算器102は、入力データに規格化係数1/κを乗算し、乗算出力を遅延レジスタ103に出力する。なお、第1係数乗算器96と遅延レジスタ99との組、第2係数乗算器101と遅延レジスタ103との組で、それぞれ、本発明の規格化手段が構成される。
【0208】
遅延レジスタ99と遅延レジスタ103とに入力されたデータは、画素クロック信号PCLKの1クロック周期遅延した後に、第2データ・セレクタ104に出力される。また、遅延レジスタ103に入力されたデータは、分岐してMMU92に出力される。
【0209】
また、第1データ・セレクタ95の第3端子S2〜第12端子S11から出力されたデータは、第2データ・セレクタ104に出力され、さらに、第2データ・セレクタ104は、制御部130から供給される選択制御信号SEL1に応じて、各データを4組の3点演算部に出力し、これら3点演算部において並列処理が実行される。
【0210】
前段の加算器105は、第2データ・セレクタ104の第1端子S0と第2端子S1とから出力された2点のデータを加算して第3係数乗算器106に出力する。第3係数乗算器106では、係数レジスタ107は、制御部130から供給される制御信号C2に応じて、リフティング係数αを乗算器108に出力し、乗算器108は、加算器105から入力したデータにリフティング係数αを乗算する。その乗算出力は2の補数演算回路109において符号が反転されて後段の加算器110に出力される。そして、後段の加算器110は、第3係数乗算器106から入力したデータと、第2データ・セレクタ104の第3端子S2から入力したデータとを加算して出力先選択部129に出力する。
【0211】
また、前段の加算器111は、第2データ・セレクタ104の第4端子S3と第5端子S4とから出力された2点のデータを加算して第4係数乗算器112に出力する。第4係数乗算器112では、係数レジスタ113は、制御部130から供給される制御信号C3に応じて、リフティング係数βを乗算器114に出力し、乗算器114は、加算器111から入力したデータにリフティング係数βを乗算する。その乗算出力は2の補数演算回路115において符号が反転されて後段の加算器116に出力される。後段の加算器116は、第4係数乗算器112から入力したデータと、第2データ・セレクタ104の第6端子S5から入力したデータとを加算して出力先選択部129に出力する。
【0212】
また、前段の加算器117は、第2データ・セレクタ104の第7端子S6と第8端子S7とから出力された2点のデータを加算して第5係数乗算器118に出力する。第5係数乗算器118では、係数レジスタ119は、制御部130から供給される制御信号C4に応じて、リフティング係数γを乗算器120に出力し、乗算器120は、加算器117から入力したデータにリフティング係数γを乗算する。その乗算出力は2の補数演算回路121において符号が反転されて後段の加算器122に出力される。後段の加算器122は、第5係数乗算器118から入力したデータと、第2データ・セレクタ104の第9端子S8から入力したデータとを加算して出力先選択部129に出力する。
【0213】
また、前段の加算器123は、第2データ・セレクタ104の第10端子S9と第11端子S10とから出力された2点のデータを加算して第6係数乗算器124に出力する。第6係数乗算器124では、係数レジスタ125は、制御部130から供給される制御信号C5に応じて、リフティング係数δを乗算器126に出力し、乗算器126は、加算器123から入力したデータにリフティング係数δを乗算する。その乗算出力は2の補数演算回路127において符号が反転されて後段の加算器128に出力される。後段の加算器128は、第6係数乗算器124から入力したデータと、第2データ・セレクタ104の第12端子S11から入力したデータとを加算して出力先選択部129に出力する。
【0214】
出力先選択部129は、制御部130から供給される選択制御信号SEL2の値に応じて、後段の加算器110,116,122,128から並列に入力する4点のデータを第1端子K0〜第4端子K3の何れかから選択的に出力する。
【0215】
出力先選択部129は、第1端子K0と第2端子K1から出力データX(2k)およびX(2k+1)とを出力する。また、出力先選択部129の第1端子K0、第3端子K2、第4端子K3から出力されたデータはMMU92にも出力される。MMU92は、第1端子K0、第3端子K2、第4端子K3から出力されたデータを第3リングメモリ93に転送し、参照済みの記憶領域に上書きさせることができる。
【0216】
次に、以上の垂直フィルタリング部94を用いたリフティング演算の代表例を、図29〜図31を参照しつつ以下に説明する。図29〜図31は、9×7タップのDaubechiesフィルタのリフティング構成を模式的に示す格子図である。この格子図の演算は、図37の場合と同様に行われる。なお、図29〜図31は、説明の便宜上、各格子点間を結ぶ線分に対応するリフティング係数−α,−β,−γ,−δと規格化係数κ,1/κとを表示していない。
【0217】
図29〜図31は、本実施形態でのN回目(Nは整数)〜N+2回目の処理を模式的に示している。
【0218】
N回目処理(図29)では、対象領域C1,C2,C3,C4の4個の変換処理が1クロック周期内に並列に同時実行される。
【0219】
対象領域C1では、2点の中間データD1 n+4,D1 n+5を加算したデータにリフティング係数−δを乗算することで乗算値を算出した後、この乗算値と中間データS1 n+5とを加算するという3点演算が実行される。この結果、偶数番目の入力データY(2n+10)を始点とする系列上の第2段階の中間データS2 n+5が算出される。ここで、2点の中間データD1 n+4,D1 n+5は、中間データS1 n+5の系列に対して1点前後する系列上のデータである。
【0220】
また、対象領域C2では、2点の中間データS2 n+3,S2 n+4を加算したデータにリフティング係数−γを乗算した後、この乗算値と中間データD1 n+3とを加算するという3点演算が実行される。この結果、奇数番目の入力データY(2n+7)を始点とする系列上の第2段階の中間データD2 n+3が算出される。ここで、2点の中間データS2 n+3,S2 n+4は、中間データD1 n+3の系列に対して1点前後する系列上のデータである。
【0221】
また、対象領域C3では、2点の中間データD2 n+1,D2 n+2を加算したデータにリフティング係数−βを乗算することで乗算値を算出した後、この乗算値と中間データS2 n+2とを加算するという3点演算が実行される。この結果、入力データY(2n+4)を始点とする系列上の出力データX(2n+4)が算出される。ここで、2点の中間データD2 n+1,D2 n+2は、中間データS2 n+2の系列に対して1点前後する系列上のデータである。
【0222】
また、対象領域C4では、偶数番目の2点の出力データX(2n),X(2n+2)を加算したデータにリフティング係数−αを乗算することで乗算値を算出した後、この乗算値と中間データD2 nとを加算するという3点演算が実行される。この結果、入力データY(2n+1)を始点とする系列上の出力データX(2n+1)が算出される。ここで、偶数番目の2点の入力データX(2n),X(2n+2)は、中間データD2 nに対して1点前後するデータである。
【0223】
また、前記対象領域C1〜C4における演算処理が実行される1クロック前の周期において、対象領域N1およびN2における演算処理が並列実行される。対象領域N1においては、入力データY(2n+10)に規格化係数κを乗算する規格化処理が実行され中間データS1 n+5が算出され、対象領域N2においては、入力データY(2n+11)に規格化係数1/κを乗算する規格化処理が実行され中間データD1 n+5が算出される。
【0224】
このN回目の具体的な処理の内容は次の通りである。N回目処理においては、対象領域C1,C2,C3,C4内の演算処理が1クロック周期内に行なわれるが、この演算処理の1クロック周期前において、対象領域N1およびN2内の演算処理が行なわれる。この1クロック前の周期における処理から説明する。MMU92は、リングメモリ93に一時記憶された入力データY(2n+10)およびY(2n+11)を入力し、制御部130から供給される選択制御信号SEL0に応じて第1端子S0から入力データY(2n+10)を出力し、第2端子S1から入力データY(2n+11)を出力する。
【0225】
第1端子S0から出力された入力データY(2n+10)は、第1係数乗算器96に入力される。第1係数乗算器96において、係数レジスタ97は、制御部130から供給された制御信号C0に従って規格化係数κを乗算器98に出力し、乗算器98は入力データY(2n+10)に規格化係数κを乗算する。この結果、第1係数乗算器96は、中間データS1 n+5(=κ×Y(2n+10))を1クロック周期内に算出する。
【0226】
第2端子S1から出力された入力データY(2n+11)は、第2係数乗算器100に入力される。第2係数乗算器100において、係数レジスタ101は、制御部130から供給された制御信号C1に従って規格化係数1/κを乗算器102に出力し、乗算器102は入力データY(2n+11)に規格化係数1/κを乗算する。この結果、第2係数乗算器100は、中間データD1 n+5(=1/κ×Y(2n+11))を1クロック周期内に算出する。
【0227】
第1および第2係数乗算器96,100から出力された中間データS1 n+5,D1 n+5は、それぞれ遅延レジスタ99,103に入力される。遅延レジスタ99,100において、中間データS1 n+5,D1 n+5は1クロック周期遅延された後、出力される。
【0228】
上記対象領域N1およびN2内の演算処理が行なわれた1クロック周期の後において、MMU92は、第3リングメモリ93に一時記憶された10点のデータX(2n),D2 n,X(2n+2),D2 n+1,S2 n+2,D2 n+2,S2 n+3,D1 n+3,S2 n+4,D1 n+4を第1データ・セレクタ95に出力させる。第1データ・セレクタ95は、制御部130から供給された選択制御信号SEL0の値に応じて、前記10点のデータを第3端子S2〜第12端子S11から出力する。この出力データは、第2データ・セレクタ104に入力される。また、遅延レジスタ96,103に記憶されている中間データS1 n+5,D1 n+5が第2データ・セレクタ104に入力される。遅延レジスタ103から出力された中間データD1 n+5は分岐して外部のMMU92にも出力され、MMU92は、その中間データD1 n+5をリングメモリ93に転送し、参照済みの記憶領域入力データY(2n+11)に上書きさせる。
【0229】
第2データ・セレクタ104は、制御部130から供給された選択制御信号SEL1に応じて、前記12点のデータの中から、対象領域C4内の3点の入力データX(2n),X(2n+2),D2 nを選択してそれぞれ第1端子S0〜第3端子S2から出力し、対象領域C3内の3点のデータD2 n+1,D2 n+2,S2 n+2を選択してそれぞれ第4端子S3〜第6端子S5から出力し、対象領域C2内の3点のデータS2 n+3,S2 n+4,D1 n+3を選択してそれぞれ第7端子S6〜第9端子S8から出力し、対象領域C1内の3点のデータD1 n+4,D1 n+5,S1 n+5を選択してそれぞれ第10端子S9〜第12端子S11から出力する。
【0230】
前段の加算器105は、第2データ・セレクタ104の第1端子S0と第2端子S1から入力した対象領域C4内の2点のデータX(2n),X(2n+2)を加算したデータを第3係数乗算器106に出力する。第3係数乗算器106では、係数レジスタ107は制御信号C2に従ってリフティング係数αを乗算器108に供給し、乗算器108は、入力データとリフティング係数αとを乗算した乗算値(=α×(X(2n)+X(2n+2)))を出力する。この出力データは、2の補数演算回路109において符号が反転された後、後段の加算器110に出力される。そして、後段の加算器110は、第3係数乗算器106から入力する乗算値と、第2データ・セレクタ104の第3端子S2から入力したデータD2 nとを加算することで、対象領域C4内の出力データX(2n+1)算出し、出力先選択部129に出力する。
【0231】
また、前段の加算器111は、第2データ・セレクタ104の第4端子S3と第5端子S4から入力した対象領域C3内の2点のデータD2 n+1,D2 n+2を加算したデータを第4係数乗算器112に出力する。第4係数乗算器112では、係数レジスタ113は制御信号C3に従ってリフティング係数βを乗算器114に供給し、乗算器114は、入力データとリフティング係数βとを乗算した乗算値(=β×(D2 n+1+D2 n+2))を出力する。この出力データは、2の補数演算回路115において符号が反転された後、後段の加算器116に出力される。そして、後段の加算器116は、第4係数乗算器112から入力する乗算値と、第2データ・セレクタ104の第6端子S5から入力したデータS2 n+2を加算することで、対象領域C3内の出力データX(2n+4)を算出し、出力先選択部129に出力する。
【0232】
また、前段の加算器117は、第2データ・セレクタ104の第7端子S6と第8端子S7から入力した対象領域C2内の2点のデータS2 n+3,S2 n+4を加算したデータを第5係数乗算器118に出力する。第5係数乗算器118では、係数レジスタ119は制御信号C4に従ってリフティング係数γを乗算器120に供給し、乗算器120は、入力データとリフティング係数γとを乗算した乗算値(=γ×(S2 n+3+S2 n+4))を出力する。この出力データは2の補数演算回路121において符号が反転された後、後段の加算器122に出力される。そして、後段の加算器122は、第5係数乗算器118から入力する乗算値と、第2データ・セレクタ104の第9端子S8から入力したデータD1 n+3とを加算することで、対象領域C2内の中間データD2 n+3を算出し、出力先選択部129に出力する。
【0233】
また、前段の加算器123は、第2データ・セレクタ104の第10端子S9と第11端子S10から入力した対象領域C1内の2点のデータD1 n+4,D1 n+5を加算したデータを第6係数乗算器124に出力する。第6係数乗算器124では、係数レジスタ125は制御信号C5に従ってリフティング係数δを乗算器126に供給し、乗算器126は、入力データとリフティング係数δとを乗算した乗算値(=δ×(D1 n+4+D1 n+5))を出力する。この出力データは、2の補数演算回路127において符号が反転された後、後段の加算器128に出力される。そして、後段の加算器128は、第6係数乗算器124から入力する乗算値と、第2データ・セレクタ104の第12端子S11から入力した中間データS1 n +5とを加算することで、対象領域C1内の中間データS2 n+5を算出し、出力先選択部129に出力する。
【0234】
出力先選択部129は、選択制御信号SEL2の値に従って、後段の2つの加算器110,116から入力した2点の出力データを第1端子K0と第2端子K1とからそれぞれ出力する。また、出力先選択部129は、後段の3つの加算器110,122,128からの入力した3点のデータをMMU92へ出力する。MMU92は、出力された中間データX(2n+4),D2 n+3,S2 n+5を第3リングメモリ93に転送し、MMU92は、その3点のデータ(2n+4),D2 n+3,S2 n+5をリングメモリ93に転送し、参照済みの記憶領域S2 n+2,D1 n+3,Y(2n+10)に上書きさせる。
【0235】
次のN+1回目処理(図30)では、対象領域C5,C6,C7,C8の変換処理が行なわれる。また、この対象領域C5,C6,C7,C8の変換処理より1クロック前の周期において対象領域N3,N4の2個の規格化処理とが実行される。対象領域C5,C6,C7,C8,N3,N4は、上記N回目処理(図29)の対象領域C1,C2,C3,C4,N1,N2を2系列(2点)後方に移動した領域である。これら対象領域C5,C6,C7,C8,N3,N4では、それぞれ、対象領域C1,C2,C3,C4,N1,N2での処理と同様の処理が実行される。したがって、対象領域C8では、奇数番目の入力データY(2n+3)を始点とする系列上の出力データX(2n+3)が算出され、対象領域C7では、偶数番目の入力データY(2n+6)を始点とする系列上の出力データX(2n+6)が算出され、対象領域C6では、奇数番目の入力データY(2n+9)を始点とする系列上の第2段階の中間データD2 n+4が算出され、対象領域C1では、偶数番目の入力データY(2n+12)を始点とする系列上の第2段階の中間データS2 n+6が算出される。また、1クロック前の周期において、対象領域N3,N4では、入力データY(2n+12),Y(2n+13)に対する規格化処理が実行される。
【0236】
さらに、N+2回目処理(図31)では、対象領域C9,C10,C11,C12の変換処理が行なわれる。また、この対象領域C9,C10,C11,C12の変換処理より1クロック前の周期において対象領域N5,N6の2個の規格化処理とが実行される。
【0237】
以上のように、上記N回目処理(図29)と同様の処理が、全ての点の出力データが算出されるまで対象領域を移動させつつ繰り返し実行される。これにより、偶数番目および奇数番目の2点の出力データを算出するのに要する平均周期を1クロック周期とすることができ、出力データの算出周期を大幅に短縮化できる。
【0238】
次に、上記ウェーブレット変換装置90を用いたラインベースの2次元逆DWT処理を以下に説明する。
【0239】
第1水平フィルタリング部33Hに入力されるデータは、図11に示したサブバンド23LHおよび23HHであり、第2水平フィルタリング部33Lに入力されるデータは、サブバンド23LLおよび23HLである。そして、第1および第2水平フィルタリング部33H,33Lからは、それぞれサブバンド23H(YH(m)),23L(YL(m))が出力される。
【0240】
垂直フィルタリング部94に入力するデータは、第1および第2水平フィルタリング部33H,33Lから出力されるデータYH(m),YL(m)であり、これらデータYH(m),YL(m)の垂直ラインのデータが交互に配列されることによって、水平方向に画素列として入力される。そして、垂直フィルタリング部94は、2次元画像データ23を出力する。
【0241】
具体的には、第1リングメモリ32Hと第1水平フィルタリング部33Hは、水平ライン単位で入力するデータを1点当たり1クロック周期でフィルタリングすることでサブバンド23Hを出力し、また、第2リングメモリ32Lと第2水平フィルタリング部33Lは、水平ライン単位で入力するデータを1点当たり1クロック周期でフィルタリングすることでサブバンド23Lを出力する。
【0242】
なお、第1リングメモリ32Hと第2リングメモリ33Lは、第3の実施例で述べた図22のリングメモリ32sを用いることができ、図33に示すように、入力データ…,Xj(k),Xj+1(k),…に対応する8点(8画素)のデータを保持する記憶領域133を有し、上記一時データや中間データを保持することができる。もしくは、第1リングメモリ32Hと第2リングメモリ33Lは、第2の実施例で述べた図15のリングメモリ32を用いることができ、図21に示すように、入力データ…,Xj(k),Xj+1(k),…に対応する9点(9画素)のデータを保持する記憶領域59を有し、上記一時データや中間データを保持することができる。
【0243】
同様に、第1および第2水平フィルタリング部33H,33Lは、第3の実施例で述べた図22のフィルタリング部33s、もしくは、第2の実施例で述べた図15のフィルタリング部33を用いることができる。
【0244】
第3リングメモリ93と垂直フィルタリング部94は、上記N回目処理(図29)と上記N+1回目処理(図30)を含む各回の処理を、各画素列について水平ライン単位で繰り返し実行する。例えば、上記N回目処理(図29)が、0番目の画素列に対して実行された後に、1番目の画素列に対して実行され、次に、2番目の画素列に対して実行され、・・・、最終的に、W−1番目の画素列に対して実行される。その後、上記N+1回目処理(図30)が、0番目の画素列に対して実行された後に、1番目の画素列に対して実行され、更に、2番目の画素列に対して実行され、・・・、最終的に、W−1番目の画素列に対して実行される。このようにして、各回の処理が全ての画素列について繰り返し実行される。
【0245】
この結果、垂直フィルタリング部94からは、偶数行のデータと奇数行のデータとが各水平ライン単位で並列に出力される。例えば、上記N回目処理(図29)を0番目〜W−1番目の画素列に対して連続的に実行した結果、2n+1番目の水平ラインの奇数行のデータX0(2n+1),X1(2n+1),…,Xj(2n+1),…,XW-1(2n+1)が連続的に出力される。これと並行して、2n+4番目の水平ラインの偶数行のデータX0(2n+4),X1(2n+4),…,Xj(2n+4),…,XW-1(2n+4)が連続的に出力される。
【0246】
なお、第1リングメモリ93は、図32に模式的に示すように、入力データ列に対応する12×W点(12ライン)のデータを保持する記憶領域132を有しており、上記一時データや中間データを保持することができる。この記憶領域132は、垂直方向に12点のデータを保持する列領域の集合体である。一つの列領域によって、1回の処理で参照される入力データや中間データが保持される。例えば、N回目処理(図29)では、或る列領域において、データ列{X(2n),D2 n,X(2n+2),D2 n+1,S2 n+2,D2 n+2,S2 n+3,D1 n+3,S2 n+4,D1 n+4,Y(2n+10),Y(2n+11)}から、データ列{X(2n),D2 n,X(2n+2),D2 n+1,X(2n+4),D2 n+2,S2 n+3,D2 n+3,S2 n+4,D1 n+4,S2 n+5,D1 n+5}へ記憶内容が変化する(データS2 n+2,D1 n+3,Y(2n+10),Y(2n+11)が、それぞれ、データX(2n+4),D2 n+3,S2 n+5,D1 n+5に上書きされる)。
【0247】
以上の処理を再帰的に実行させることで、任意次数の分解レベルのサブバンド(帯域成分)を合成することができる。すなわち、k+1次(kは2以上の整数)の分解レベルにおける4つのサブバンドLL(k+1),HL(k+1),LH(k+1),HH(k+1)を、ウェーブレット変換装置90に入力させることで、k次の分解レベルにおけるサブバンドLL(k)を得ることが可能であり、このような処理を再帰的に実行することによって、k次の分解レベルのサブバンドから元の画像データを復元することが可能である。
【0248】
このように、本実施形態に係るウェーブレット変換装置90とウェーブレット変換方法では、4点の中間データを算出する4個の変換処理と2点の中間データを規格化する2個の規格化処理とを1クロック周期内に並列に同時実行するため、出力データの算出周期を大幅に短縮化できる。したがって、ウェーブレット変換を極めて短時間で高速に実行することが可能である。
【0249】
また、ウェーブレット変換装置90は、1クロック周期内に1点のデータを算出する第1および第2水平フィルタリング部33H,33Lと、1クロック周期内で2点のデータを算出する垂直フィルタリング部94とを備えるため、1クロック周期内に2点の合成データを並列に算出できる。したがって、ラインベースの2次元DWT演算を極めて高速に実行することが可能である。
【0250】
<変形例>
図34は、上記した第4の実施形態の変形例に係る2次元ウェーブレット変換装置140の概略構成を示す図である。このウェーブレット変換装置140は、サブバンドの2次元画像データを一時的に保持するバッファ91、外部供給のクロック信号CLKと同期して動作するMMU(メモリ管理部)92A、第1リングメモリ93A、水平フィルタリング部94A、ラインバッファ回路141、第2リングメモリ93Bおよび垂直フィルタリング部94Bを備えて構成されている。
【0251】
ここで、水平フィルタリング部94Aと垂直フィルタリング部94Bは、上記第4の実施形態に係る垂直フィルタリング部94(図28)の構成と同じ構成を有し、図29〜図31で示したリフティング演算を実行するように、データを与えられ且つ制御される。
【0252】
水平フィルタリング部94Aからは、サブバンド23Hと23Lのデータが交互に各水平ライン単位で出力される。
【0253】
ラインバッファ回路141においては、第1ラインバッファ143と第2ラインバッファ144は、それぞれ、水平ライン2本分のバッファを備えている。セレクタ142が、入力する2本のデータを第1ラインバッファ143と第2ラインバッファ144の何れか一方に記憶させる期間、デマルチプレクサ145は、その他方に記憶済みの2本のデータを読み出して第2リングメモリ93Bに出力する。
【0254】
このように本変形例の構成によっても、1クロック周期内に合成データを2点並列に算出できることから、ラインベースの2次元DWT演算を極めて高速に実行することが可能である。
【0255】
【発明の効果】
以上の如く、本発明に係るウェーブレット変換装置によれば、各入力データを規格化する処理と、各中間データを一系列上の他の中間データや出力データに変換する変換処理とを繰り返し実行し、繰り返し実行される複数の処理のうち少なくとも2個の処理を1クロック周期内に並列に実行するため、出力データの算出周期を短縮化でき、逆ウェーブレット変換を短時間で高速に実行することが可能になる。
【0256】
また、本発明に係るウェーブレット変換方法によれば、入力データを規格化して第1段階の中間データに変換する工程(b)と、中間データを一系列上の他の中間データに変換する工程(c)と、最終段階の中間データを出力データに変換する工程(d)とは繰り返し実行されるが、繰り返し実行する複数の工程のうち少なくとも2工程を1クロック周期内に並列に実行するため、入力データ列から出力データを算出する周期を短縮化でき、逆ウェーブレット変換を短時間で高速に行うことが可能になる。
【図面の簡単な説明】
【図1】本発明の第1の実施形態に係るウェーブレット変換装置の概略構成を示す図である。
【図2】第1の実施形態に係るフィルタリング部の概略構成図である。
【図3】第1の実施形態に係るリフティング演算の工程を模式的に示す図である。
【図4】第1の実施形態に係るリフティング演算の工程を模式的に示す図である。
【図5】第1の実施形態に係るリフティング演算の工程を模式的に示す図である。
【図6】第1の実施形態に係るリフティング演算の工程を模式的に示す図である。
【図7】第1の実施形態に係るリフティング演算の工程を模式的に示す図である。
【図8】第1の実施形態に係るリフティング演算の工程を模式的に示す図である。
【図9】第1の実施形態に係るリフティング演算の工程を模式的に示す図である。
【図10】第1の実施形態に係るリフティング演算の工程を模式的に示す図である。
【図11】サブバンドから画像を合成する工程を模式的に示す図である。
【図12】2次元画像データとリングメモリの記憶領域とを模式的に示す図である。
【図13】リングメモリの記憶領域を模式的に示す図である。
【図14】本発明の第2の実施形態に係るウェーブレット変換装置の概略構成を示す図である。
【図15】第2の実施形態に係るフィルタリング部の概略構成図である。
【図16】第2の実施形態に係るリフティング演算の工程を模式的に示す図である。
【図17】第2の実施形態に係るリフティング演算の工程を模式的に示す図である。
【図18】第2の実施形態に係るリフティング演算の工程を模式的に示す図である。
【図19】第2の実施形態に係るリフティング演算の工程を模式的に示す図である。
【図20】2次元画像データとリングメモリの記憶領域とを模式的に示す図である。
【図21】リングメモリの記憶領域を模式的に示す図である。
【図22】本発明の第3の実施形態に係るフィルタリング部の概略構成を示す図である。
【図23】第3の実施形態に係るリフティング演算の工程を模式的に示す図である。
【図24】第3の実施形態に係るリフティング演算の工程を模式的に示す図である。
【図25】第3の実施形態に係るリフティング演算の工程を模式的に示す図である。
【図26】第2および第3の実施形態の変形例に係るウェーブレット変換装置の概略構成を示す図である。
【図27】本発明の第4の実施形態に係るウェーブレット変換装置の概略構成を示す図である。
【図28】第4の実施形態に係る垂直フィルタリング部の概略構成図である。
【図29】第4の実施形態に係るリフティング演算の工程を模式的に示す図である。
【図30】第4の実施形態に係るリフティング演算の工程を模式的に示す図である。
【図31】第4の実施形態に係るリフティング演算の工程を模式的に示す図である。
【図32】2次元画像データとリングメモリの記憶領域とを模式的に示す図である。
【図33】リングメモリの記憶領域を模式的に示す図である。
【図34】第4の実施形態の変形例に係るウェーブレット変換装置の概略構成を示す図である。
【図35】DWTと逆DWTで用いるフィルタバンクを模式的に示す図である。
【図36】3次の分解レベルで2次元DWTを施された画像データを模式的に示す図である。
【図37】合成側のリフティング構成を模式的に示す格子図である。
【図38】JPEG2000方式が推奨する算出方法を模式的に示す図である。
【図39】リフティング演算の工程を模式的に示す図である。
【図40】リフティング演算の工程を模式的に示す図である。
【図41】リフティング演算の工程を模式的に示す図である。
【図42】リフティング演算の工程を模式的に示す図である。
【図43】リフティング演算の工程を模式的に示す図である。
【図44】リフティング演算の工程を模式的に示す図である。
【図45】リフティング演算の工程を模式的に示す図である。
【図46】リフティング演算の工程を模式的に示す図である。
【図47】リフティング演算の工程を模式的に示す図である。
【図48】リフティング演算の工程を模式的に示す図である。
【符号の説明】
1 ウェーブレット変換装置
2 MMU(メモリ管理部)
3A,3B リングメモリ
4A,4B フィルタリング部
5 ラインバッファ回路[0001]
TECHNICAL FIELD OF THE INVENTION
The present invention relates to a compression / decompression technique using a wavelet transform.
[0002]
[Prior art]
As an efficient coding method for image data, there is known an image compression / decompression method based on Discrete Wavelet Transformation (hereinafter referred to as "DWT"), which is formulated by the ISO (International Organization for Standardization). JPEG2000 (Joint Photographic Experts Group 2000) is used. As a calculation method of the DWT, a convolution calculation method and a calculation method based on a lifting scheme are known, and both output the same result. However, the calculation method based on the latter lifting scheme is better than the former. As compared with the convolution operation method, there are advantages that a high-speed operation can be performed with a small amount of memory usage and that the method is suitable for lossless (lossless) compression.
[0003]
In general, a DWT can be configured using a filter bank that divides an original signal into high-frequency components (high-frequency components) and low-frequency components (low-frequency components). Then, the inverse transform (inverse DWT) can be configured using a filter bank that combines the high-frequency component and the low-frequency component that have been band-divided.
[0004]
FIG. 35 schematically illustrates the DWT and the filter banks 200S and 200A used in the inverse transform (inverse DWT). The decomposition filter bank 200S that decomposes the input signal x (n) into two bands, a low-frequency component and a high-frequency component, includes a low-pass filter 201L that passes a low-frequency component, a high-pass filter 201H that passes a high-frequency component, It comprises first and second downsamplers 202 and 203. Each of the low-pass filter 201L and the high-pass filter 201H is configured by an FIR filter that performs a convolution operation. The first and second downsamplers 202 and 203 thin out the input signals from the filters 201L and 201H at every other point, and output the signals by reducing the signal length by half. According to the JPEG2000 standard, the first downsampler 202 thins out odd-numbered signals and outputs even-numbered signals (low-frequency components), and the second downsampler 203 thins out even-numbered signals and outputs odd-numbered signals (high-frequency signals). Output).
[0005]
On the other hand, the synthesis-side filter bank 200A that synthesizes input signals (low-frequency components and high-frequency components) includes first and second upsamplers 204 and 205, a low-pass filter 206L, a high-pass filter 206H, and an adder 207. It is configured. The low-pass filter 206L and the high-pass filter 206H are configured by FIR filters that execute a convolution operation. In general, the synthesis-side filters 206L and 206H and the decomposition-side filters 201L and 201H are configured to satisfy a perfect reconstruction condition. You. Further, the first and second upsamplers 204 and 205 insert a zero value between each point and double the signal length for output. Then, the adder 207 adds the signals output from the respective synthesis-side filters 206L and 206H, and outputs a synthesized signal x '(n). Here, if the perfect reconstruction condition is satisfied, x (n) = x '(n) holds.
[0006]
The two-dimensional DWT can be executed by repeatedly applying the decomposition-side filter bank 200S to the two-dimensional image data in the vertical and horizontal directions of the two-dimensional image data in order. FIG. 36 is a band division diagram schematically showing two-dimensional image data 210 on which DWT has been performed at a third-order decomposition level. Each block in the two-dimensional image data 210 represents a subband (band component). For example, the sub-band HH1 is composed of a vertical high-frequency component (H) and a horizontal high-frequency component (H) at the decomposition level 1, and the sub-band LH2 is a vertical high-frequency component (H) at the decomposition level 2. H) and a horizontal low-frequency component (L). In general, a sub-band XYn (X and Y are either “H” or “L”, n is an order of the decomposition level) is composed of a vertical component Y and a horizontal component X at the decomposition level n. is there.
[0007]
The processing procedure of DWT of decomposition level 3 is as follows. First, the sub-bands HH1, HL1, LH1, and LL1 (not shown) of the decomposition level 1 are generated by applying the decomposition-side filter bank 200S twice to the entire two-dimensional image. Next, by applying the decomposition-side filter bank 200S twice to the lowest subband LL1 of the decomposition level 1, subbands HH2, HL2, LH2, and LL2 (not shown) of the decomposition level 2 are generated. . Then, by applying the decomposition-side filter bank 200S twice to the lowest subband LL2 of the decomposition level 2, the subbands HH3, HL3, LH3, and LL3 of the decomposition level 3 are generated.
[0008]
Conversely, the processing procedure of the inverse DWT for synthesizing the subband of the decomposition level 3 is as follows. First, by applying the synthesis-side filter bank 200A twice to the subbands HH3, HL3, LH3, and LL3, the lowest subband LL2 of the decomposition level 2 is generated. Next, by applying the synthesis-side filter bank 200A twice to the subbands HH2, HL2, LH2, and LL2 at the decomposition level 2, the lowest subband LL1 at the decomposition level 1 is generated. Then, a two-dimensional image is generated by applying the synthesis-side filter bank 200A twice to the subbands HH1, HL1, LH1, and LL1 of the decomposition level 1.
[0009]
As described above, the example of the tertiary decomposition level has been described. In the JPEG2000 system, generally, the tertiary to eighth or higher decomposition levels are employed. Also, in this example, DWT is applied to the entire still image as a whole, but actually, one still image is referred to as a plurality of rectangular “tiles” due to the mounting memory capacity and the like. It is also performed to divide the image into regions and execute DWT for each tile.
[0010]
On the other hand, DWT and inverse DWT can also be realized in a lifting configuration. Since the present invention relates to processing on the synthesis side, processing of inverse DWT will be described below. In the case of a known 9 × 7 tap Daubechies filter, between input data Y (2n), Y (2n + 1), Y (2n + 2) (n: integer) and the like, and output data X (2n), X (2n + 1) Can be expressed by a lifting configuration defined by the following equation (1). Since the process on the synthesis side is inverse DWT, throughout the following description, Y is used for input data and X is used for output data.
[0011]
(Equation 1)
Figure 2004194224
[0012]
In the above equation (1), odd-numbered input data Y (2n + 1) indicates high-frequency component data obtained by the decomposition processing, and even-numbered input data Y (2n) indicates low-frequency component data obtained by the decomposition processing. 2 shows the data. The output data X (2n) and X (2n + 1) indicate data obtained by combining the high frequency component and the low frequency component. The coefficients α, β, γ, δ are called lifting coefficients, and the coefficients κ, 1 / κ are called normalization coefficients. These coefficients α, β, γ, δ, κ, 1 / κ are It is uniquely derived by the filter coefficient of the 9 × 7 tap Daubechies filter.
[0013]
The lifting configuration defined by the above equation (1) can be expressed by a lattice structure shown in FIG. The grid points arranged in a vertical line at the left end of FIG. 37 represent input data..., Y (2n−1), (2n),..., Y (2n + 9), Y (2n + 10),. ing. That is, it is data in which the data of the low-frequency component and the data of the high-frequency component decomposed by the DWT are alternately arranged. Also, the grid points at the right end of the line segment extending rightward in the horizontal direction from the input data are output data..., X (2n−1), X (2n),..., X (2n + 9), and X (2n + 10), respectively. , ....
[0014]
A plurality of grid points on a line segment extending from a grid point indicating each input data Y (k) (k: an integer) to a grid point indicating output data X (k) represents a series of intermediate data. I have. For example, on the line segment between the input data Y (2n) and the output data X (2n), the intermediate data S generated with the input data Y (2n) as the starting point1 n, STwo nIs present.
[0015]
The calculation based on this lattice structure is performed according to the following rules (A) to (C). (A) Data representing a grid point moves along a line segment extending rightward from the grid point. (B) Data moving on each line segment is multiplied by a coefficient assigned to the line segment (coefficient multiplication process). (C) At each grid point, data moving from the left along the line segment is added (addition processing). For example, intermediate data S on a line segment between input / output data Y (2n) and X (2n)Two nIs STwo n= 1 × S1 n−δ × D1 n-1−δ × D1 nIs calculated as follows. This equation corresponds to [step 3] in the above equation (1).
[0016]
As shown in FIG. 37, for example, the intermediate data STwo nIs the three grid points D on the left side of the drawing.1 n-1, S1 n, D1 nIs the sum of the data transitioned from. It can be seen that all the intermediate data are calculated by adding the data of three points that have transitioned from the three lattice points on the left of the intermediate data. The JPEG2000 method recommends that the calculation of one point of intermediate data be performed in two steps ("Mathias Larsson Carlander, Media Lab, Ericsson Research, Sweden, JPEG2000 Verification Model 9.1 (Technical description) WG1 N2165, 28 June, 2001 "). FIG. 38 is a diagram schematically showing a calculation method recommended by the JPEG2000 method. Grid point x1, XTwo, XThree, Y represent data, and α, β, γ represent coefficients assigned to line segments connecting the respective grid points. As shown, the data y is calculated in step b after calculating the temporary data z in step a.
[0017]
[Non-patent document 1]
Mathias Larsson Carlander, Media Lab, Ericsson Research Institute, Sweden, Media Lab, Ericsson Research, Sweden, JPEG2000 Verification Model 9.1 (Technical description) WG1 N2165, June 28, 2001. .
[0018]
[Problems to be solved by the invention]
However, the lifting operation recommended by the JPEG2000 method described above has a problem that the processing time required to calculate one point of output data is long, as described below.
[0019]
FIG. 39 to FIG. 48 are grid diagrams for explaining an example of the processing procedure of the DWT inverse transform using the lifting configuration. Although not shown, it is assumed that the coefficients shown in FIG. 37 are associated with all line segments connecting the respective grid points. Also, in FIGS. 39 to 48, the grid points filled in black represent input or calculated data points, and the grid points filled in only the upper half are the points in the temporary data for which only the processing in step a has been completed. The blank grid points represent uncalculated points on which neither step a nor step b has been performed. All of the processes shown in these figures are executed within one clock cycle.
[0020]
In the N-th (N: integer) process shown in FIG. 39, the input data Y (2n + 4) in the target area N1 is normalized, so that the even-numbered input data Y (2n + 4) is used as a starting point. Intermediate data S1 n + 2Is calculated.
[0021]
In the (N + 1) -th to (N + 4) -th processes shown in FIGS. 40 to 43, the above-described step a is executed. In the (N + 1) th processing (FIG. 40), the intermediate data S of two points in the target area A11 n + 2, D1 n + 1, The temporary data of the second stage starting from the even-numbered input data X (2n + 4) (STwo n + 2) Is calculated (in this way, when representing temporary data, the data is enclosed in parentheses and distinguished). In the next (N + 2) -th processing (FIG. 41), the intermediate data D of two points in the target area A21 n + 1, STwo n + 1, The temporary data (D) of the second stage starting from the odd-numbered input data Y (2n + 3).Two n + 1) Is calculated. In the next N + 3rd processing (FIG. 42), the intermediate data S of two points in the target area A3Two n + 1, DTwo n, The output temporary data (X (2n + 2)) on the series starting from the even-numbered input data Y (2n + 2) is calculated. Then, in the N + 4th processing (FIG. 43), the data D of two points in the target area A4Two n, X (2n), the output temporary data (X (2n + 1)) on the series starting from the odd-numbered input data Y (2n + 1) is calculated.
[0022]
In the next N + 5th processing (FIG. 44), the input data Y (2n + 5) in the target area N2 is normalized, so that the odd-numbered input data Y (2n + 5) as a starting point of the first stage on the series. Intermediate data D1 n + 2Is calculated.
[0023]
Next, in the (N + 6) th to (N + 9) th processes shown in FIGS. 45 to 48, the above step b is executed. In the (N + 6) th processing (FIG. 45), the intermediate data D in the target area B11 n + 2And the temporary data (STwo n + 2), The intermediate data STwo n + 2Is calculated. In the next N + 7th processing (FIG. 46), the intermediate data S calculated in the N + 6th processing in the target area B2Two n + 2And the temporary data (DTwo n + 1), The intermediate data DTwo n + 1Is calculated. In the next N + 8th processing (FIG. 47), the intermediate data D calculated in the N + 7th processing in the target area B3Two n + 1And output temporary data (X (2n + 2)) calculated in the N + 3rd process, output data X (2n + 2) is calculated. In the N + 9th processing (FIG. 48), the output data X (2n + 2) calculated in the N + 8th processing in the target area B4 and the output temporary data (X (2n)) calculated in the N + 4th processing are used. By the processing, the output data X (2n + 1) is calculated.
[0024]
Next, in the N + 10th processing (not shown), the normalization processing using the input data Y (2n + 6) is performed in the same manner as the Nth processing, and thereafter, the same processing as the N + 1th to N + 9th processings is performed. Is repeatedly executed.
[0025]
In this way, by inputting input data Y (2n + 4) and Y (2n + 5) in which high-frequency components and low-frequency components are alternately arranged, output data X (2n + 2) and X (2n + 1), which are synthesis results, are calculated. It can be seen that N-th to (N + 9) -th 10 clock cycles are required to perform this operation. Therefore, five clock cycles are required on average to calculate one point of output data. There is a demand for a processing method capable of executing the inverse DWT operation at high speed by further reducing the five clock cycles.
[0026]
In view of the above problems, it is an object of the present invention to provide a wavelet transform apparatus and a wavelet transform method that can efficiently perform a wavelet transform based on a lifting configuration in a short time.
[0027]
[Means for Solving the Problems]
In order to solve the above-mentioned problem, an invention according to claim 1 is a wavelet transform device that synthesizes band-divided high-frequency component data and low-frequency component data based on a lifting configuration. , An output data obtained by taking in an input data sequence constituted by alternately arranging a first data sequence composed of one of a high-frequency component and a low-frequency component and a second data sequence composed of the other in pixel units A filtering unit for calculating a column, wherein the filtering unit multiplies each of the input data sequences by a predetermined normalization coefficient to convert each input data into intermediate data of the first stage by one clock per point. Normalizing means for executing one or more normalization processes for converting within a cycle, and one or more stages of each of the intermediate data of the first stage standardized by said normalizing means A single or a plurality of conversion processes for converting one series of intermediate data within one clock cycle per point, or converting each of the final stage intermediate data to output data within one clock cycle per point are executed. Intermediate data conversion means, the control unit, the normalization means and the intermediate data conversion means, the singular or plural normalization processing and the singular or plural conversion processing, the output of all points The process is repeatedly executed until data is calculated, and at least two processes of the singular or plural normalization processes and the singly or plural conversion processes repeatedly executed are executed in parallel within one clock cycle. Control.
[0028]
The invention according to claim 2 is the wavelet transform device according to claim 1, wherein the normalizing means and the intermediate data converting means execute the normalizing processing and the converting processing in parallel.
[0029]
According to a third aspect of the present invention, in the wavelet transform device according to the first or second aspect, the normalizing means includes: a normalizing coefficient multiplier for multiplying each input data by the normalizing coefficient; A delay unit for delaying data output from the conversion coefficient multiplier, wherein the intermediate data conversion means multiplies one of the two intermediate data by a predetermined lifting coefficient, and the lifting coefficient multiplier A two-point operation unit comprising an adder for adding the data output from the multiplier and the other of the two-point intermediate data, and taking in the data output from the two-point operation unit and designated by the control unit. An output destination selection unit for outputting to the output destination, wherein the wavelet transform device further includes: a memory management unit; and a memo for temporarily storing data under the control of the memory management unit. When, wherein the memory management unit, the said data output from the output destination selecting unit transferred to the memory controls to store, it is characterized.
[0030]
According to a fourth aspect of the present invention, in the wavelet transform apparatus according to the third aspect, the control unit performs, as the conversion process, a "sequence starting from input data belonging to the second data sequence" Intermediate data at the first stage above, and a "series starting from the input data belonging to the first data string" immediately before the intermediate data (hereinafter referred to as a first series). )) And the data obtained by multiplying the intermediate data of the first stage above by a predetermined lifting coefficient are added, so that the temporary data of the second stage on the second series can be shifted within one clock cycle per point. A first conversion process to be calculated, the temporary data calculated in the first conversion process and stored in the memory, and a first step in a first series one point after the series of the temporary data. Multiply the intermediate data by a predetermined lifting coefficient The second conversion process of calculating the intermediate data of the second stage on the second series within one clock cycle per point by adding the data obtained in the first series and the first stage of the first series on the first series By adding the intermediate data and the data obtained by multiplying the intermediate data in the second stage on the second series one point before the intermediate data by a predetermined lifting coefficient, the intermediate data is added to the first series. A third conversion process for calculating the temporary data of the second stage within one clock cycle per point; a process for calculating the third conversion process and storing the temporary data in the memory; On the other hand, by adding the intermediate data of the second stage on the second series one point later and data obtained by multiplying the intermediate data by a predetermined lifting coefficient, the intermediate data of the second stage on the first series can be obtained. Fourth variation calculated within one clock cycle per point Processing, intermediate data of the M-th stage (the number of stages M is an integer of 1 or more) on the second stream, and intermediate data of the M-th stage on the first stream one point before the series of the intermediate data A fifth conversion process for calculating the temporary data of the (M + 1) th stage on the second stream within one clock cycle per point by adding data obtained by multiplying a predetermined lifting coefficient; The temporary data calculated in the conversion process of step 5 and stored in the memory, and the intermediate data at the M-th stage on the first series one point after the temporary data series are multiplied by a predetermined lifting coefficient. A sixth conversion process of calculating the intermediate data of the (M + 1) -th stage on the second sequence within one clock cycle per point by adding the obtained data to the L-th stage on the first sequence (stage The number L is an integer of 1 or more) and the intermediate data By adding the data obtained by multiplying the intermediate data at the (L + 1) -th stage on the second sequence one point before the data sequence by a predetermined lifting coefficient, the (L + 1) -th stage on the first sequence is obtained. A seventh conversion process for calculating the temporary data of one point within one clock cycle per point; the temporary data calculated in the seventh conversion process and stored in the memory; By adding the intermediate data of the (L + 1) -th stage on the second series after the point and data obtained by multiplying the intermediate data of the (L + 1) -th stage on the first series by one point, The control is performed such that the two-point operation unit is repeatedly executed until the output data of all the points is calculated, in the eighth conversion processing calculated within one clock cycle.
[0031]
The invention according to claim 5 is the wavelet transform device according to claim 4, wherein the control unit executes the first transform process and the third transform process, and then executes the fifth transform process and the fifth transform process. The seventh conversion process is performed by the two-point operation unit until the temporary data at the final stage is calculated, and then, after performing the second conversion process and the fourth conversion process, The sixth conversion processing and the eighth conversion processing are controlled so as to be executed by the two-point calculation unit until the output data is calculated.
[0032]
The invention according to claim 6 is the wavelet transform device according to claim 4, further comprising four of the two-point operation units that operate independently of each other, and wherein the control unit performs the second data processing as the conversion processing. A second conversion process of calculating intermediate data of a second stage on a sequence belonging to a sequence and starting from a P-th (data number P is an integer) input data in the input data sequence; The third conversion processing of calculating temporary data of the second stage on the sequence starting from the fourth input data, and calculating the intermediate data of the (M + 1) th stage on the sequence starting from the P-4th input data And the seventh conversion process of calculating temporary data of the (L + 1) th stage on the sequence starting from the P-5th input data. At the P + 2nd input The first conversion processing of calculating temporary data of a second stage on a sequence starting from data, and calculating the intermediate data of a second stage on a sequence starting from the (P-1) th input data. The fourth conversion processing, the fifth conversion processing of calculating temporary data of the M-th stage on the series starting from the (P-2) th input data, and the P-5th input data as the starting point. And the eighth conversion processing for calculating the intermediate data of the (L + 1) th stage on the sequence to be performed, so that each of the two-point calculation units is controlled in parallel.
[0033]
According to a seventh aspect of the present invention, in the wavelet transform device according to the first or second aspect, the normalizing means includes: a normalizing coefficient multiplier for multiplying each input data by the normalizing coefficient; And a delay unit for delaying data output from the conversion coefficient multiplier, wherein the intermediate data conversion means adds first and second input data among the input three-point input data. An adder, a lifting coefficient multiplier that multiplies the data output from the first adder by a predetermined lifting coefficient, and adding the data output from the lifting coefficient multiplier and third input data A three-point operation unit including a second adder for calculating intermediate data, and an output destination selection unit that receives the intermediate data output from the three-point operation unit and outputs the intermediate data to an output destination specified by the control unit Includes, the memory management unit controls the intermediate data output from the output destination selecting unit so as to transfer stored in said memory.
[0034]
The invention according to claim 8 is the wavelet transform device according to claim 7, wherein the control unit performs, as the conversion process, a "sequence starting from input data belonging to the second data sequence" The intermediate data at the first stage in the above and a “sequence starting from the input data belonging to the first data sequence” which is about one point behind the intermediate data sequence (hereinafter referred to as a first sequence) By adding data obtained by multiplying the above two points of the first stage intermediate data by a predetermined lifting coefficient, the second stage intermediate data on the second series is obtained. Conversion within one clock cycle per point, a first-stage intermediate data on the first series, and a second series that is about one point from the first-stage intermediate data series The intermediate data of the second stage of the above two points were added. A data obtained by multiplying the data by a predetermined lifting coefficient to add intermediate data of the second stage on the first stream within one clock cycle per point; , Intermediate data at the M-th stage (the number of stages M is an integer equal to or greater than 1) on the second series, and two M-th points on the first series that are approximately one point away from the series of intermediate data at the M-th stage By adding the data obtained by multiplying the intermediate data of the stages by the predetermined lifting coefficient and the data obtained by multiplying the data by the predetermined lifting coefficient, the intermediate data of the (M + 1) th stage on the second series is calculated within one clock cycle per point. A third conversion process, intermediate data of an L-th stage (the number of stages L is an integer of 1 or more) on the first stream, and a second stream on the second stream that is about one point away from the stream of intermediate data at the L-th stage; A predetermined value is added to the data obtained by adding the intermediate data of the L + 1 stage at Adding the data obtained by multiplying by the footing coefficient to calculate the intermediate data of the (L + 1) -th stage on the first stream within one clock cycle per point; Until the output data is calculated.
[0035]
The invention according to claim 9 is the wavelet transform device according to claim 8, comprising two of the three-point operation units operating independently of each other, wherein the control unit belongs to the first data sequence and The second conversion processing for calculating the intermediate data on the sequence starting from the P-th (data number P is an integer) input data in the input data sequence, and the P-4th input data as the starting point And the fourth conversion processing for calculating the intermediate data in the (L + 1) th stage on the sequence, and the three processing units are controlled so as to be executed in parallel.
[0036]
According to a tenth aspect of the present invention, in the wavelet transform device according to the eighth or ninth aspect, the control unit starts the input data of the (P + 3) th (data number P is an integer) in the input data sequence. The first conversion processing for calculating the intermediate data on the series to be set, and the third conversion processing for calculating the M + 1-th stage intermediate data on the series starting from the (P−1) th input data, Are controlled so that each of the three-point calculation units is executed in parallel.
[0037]
According to an eleventh aspect of the present invention, in the wavelet transform device according to the eighth aspect, the control unit controls the first to fourth conversion processes in parallel.
[0038]
The invention according to claim 12 is the wavelet transform device according to any one of claims 1 to 11, wherein the filtering unit includes a first filtering unit and a second filtering unit connected in series. The first filtering unit receives the data of the high-frequency component and the low-frequency component, which are band-divided in one of the horizontal direction and the vertical direction, and synthesizes these data. The second filtering unit performs a process on the combined data calculated by the first filtering unit, so that the combined data in the other direction of the horizontal direction and the vertical direction is calculated. Is calculated.
[0039]
According to a thirteenth aspect of the present invention, there is provided a wavelet transform method for synthesizing band-divided high-frequency component data and low-frequency component data based on a lifting configuration, wherein (a) a high-frequency component and a low-frequency component (B) selectively taking in input data from an input data string configured by alternately arranging a first data string composed of one of the two and a second data string composed of the other in a pixel unit; Multiplying each of the input data fetched in the step (a) by a normalization coefficient to convert the input data into the first-stage intermediate data within one clock cycle per point; and (c) the m-th stage (m Calculating intermediate data of (m is an integer of 1 or more) into m + 1-th intermediate data within one clock cycle per point (including the case where the m-th intermediate data is the final intermediate data. In this case, M + 1 The intermediate data of the floor is output data.), And the steps (b) and (c) are repeatedly executed until the output data of all points are calculated, and are repeatedly executed. The method is characterized in that the steps (b) and (c) are executed in parallel within one clock cycle.
[0040]
According to a fourteenth aspect of the present invention, in the wavelet transform method according to the thirteenth aspect, the step (c) comprises the step of: (c-1) “a sequence starting from input data belonging to the second data sequence” ( Hereinafter, this is referred to as a second series.) The intermediate data of the first stage on the above and a “series starting from the input data belonging to the first data string” immediately before the intermediate data (hereinafter, the first series) The temporary data of the second stage on the second sequence is added to the intermediate data of the first stage on the above first sequence and data obtained by multiplying the intermediate data of the first stage by a predetermined lifting coefficient by one clock per point. (C-2) the temporary data calculated in the step (c-1) and stored in the memory, and a first series one point after the temporary data series. Multiply the intermediate data of the first stage by a predetermined lifting coefficient (C-3) calculating the intermediate data of the second stage on the second series within one clock cycle per point by adding the obtained data to the first series. Is added to data obtained by multiplying the intermediate data of the second stage on the second series immediately before by the intermediate data by a predetermined lifting coefficient with respect to the intermediate data of the first series. Calculating the temporary data of the second stage in one clock cycle per point; (c-4) the temporary data calculated in the step (c-3) and stored in the memory; and the temporary data Is added to the data obtained by multiplying the intermediate data of the second stage on the second series one point after the series by a predetermined lifting coefficient, thereby obtaining the intermediate data of the second stage on the first series. Calculating data within one clock cycle per point; (c) 5) The intermediate data of the M-th stage (the number of stages M is an integer of 1 or more) on the second stream and the intermediate data of the M-th stage on the first stream one point before the series of the intermediate data are specified. (C-6) calculating temporary data of the (M + 1) -th stage on the second sequence within one clock cycle per point by adding the data obtained by multiplying by the lifting coefficient of Multiplying the temporary data calculated in (c-5) and stored in the memory, and the intermediate data of the M-th stage on the first series one point after the temporary data series by a predetermined lifting coefficient; (C-7) calculating temporary data of the (M + 1) th stage on the second stream within one clock cycle per point by adding the obtained data to the Lth step on the first stream. (The number of stages L is an integer of 1 or more) and the intermediate data By adding the data obtained by multiplying the intermediate data at the (L + 1) -th stage on the second sequence immediately before the data sequence by a predetermined lifting coefficient to the (L + 1) -th stage on the first sequence, (C-8) calculating the temporary data within one clock cycle per point; and (c-8) calculating the temporary data calculated in the step (c-7) and stored in the memory, and the sequence of the temporary data. By adding the intermediate data of the (L + 1) th stage on the second series one point later and data obtained by multiplying the intermediate data of the (L + 1) th stage by a predetermined lifting coefficient, the intermediate data of the (L + 1) th stage on the first series is added by one point. And calculating within one clock cycle per step, wherein the steps (c-1) to (c-8) are repeatedly executed until output data of all points are calculated.
[0041]
The invention according to claim 15 is the wavelet transform method according to claim 14, wherein after performing the steps (c-1) and (c-3), the steps (c-5) and the steps (c-5) are performed. (C-7) is executed until temporary data of the output data is calculated, and then, after executing the steps (c-2) and (c-4), the steps (c-6) And the step (c-8) is performed until the output data is calculated.
[0042]
According to a sixteenth aspect of the present invention, there is provided the wavelet transform method according to the fourteenth aspect, wherein a P-th (data number P is an integer) input data belonging to the second data sequence and the input data sequence is defined as a starting point. The step (c-2) of calculating intermediate data of the second stage on the sequence to be performed and the step (c-2) of calculating temporary data of the second stage on the sequence starting from the P-1st input data 3), the step (c-6) of calculating intermediate data at the (M + 1) th stage on the sequence starting from the P-4th input data, and the step (c-6) on the sequence starting from the P-5th input data. And the step (c-7) of calculating the temporary data of the (L + 1) th stage is performed in parallel by the respective two-point arithmetic units, and the second step on the series starting from the (P + 2) th input data The step (c-1) of calculating temporary data of The step (c-4) of calculating the intermediate data in the second stage on the sequence starting from the P-1st input data; and the M + 1th sequence on the sequence starting from the P-2th input data. The step (c-5) of calculating the temporary data of the step and the step (c-8) of calculating the intermediate data of the (L + 1) th step on the series starting from the P-5th input data. Control is performed so that each of the four processes is executed in parallel.
[0043]
According to a seventeenth aspect of the present invention, in the wavelet transform method according to the thirteenth aspect, in the step (c), (c-1) "a sequence starting from input data belonging to the second data sequence" ( Hereinafter, this is referred to as a second series.) The intermediate data at the first stage on the above and a “series starting from the input data belonging to the first data sequence” which is one point around the intermediate data series (hereinafter, referred to as “second series”) The data obtained by multiplying the data obtained by multiplying the intermediate data of the first two stages in the first stage by a predetermined lifting coefficient is added to the second stage on the second system. And (c-2) a first stage of intermediate data on the first stream, and a second stream that is about one point from the intermediate data stream. The above two points are added to the data obtained by adding the intermediate data of the second stage. (C-3) calculating the intermediate data of the second stage on the first series within one clock cycle per point by adding the data obtained by multiplying by the lifting coefficient of The intermediate data of the M-th stage (the number of stages M is an integer equal to or greater than 1) on the series, and the middle of the M-stage of two points on the first series that is about one point behind the series of the intermediate data of the M-th Calculating the intermediate data of the (M + 1) th stage on the second stream within one clock cycle by adding the data obtained by multiplying the data obtained by multiplying the data by a predetermined lifting coefficient; (C-4) L-stage intermediate data on the first stream (the number of stages L is an integer equal to or greater than 1) and 2nd-stream data on the second stream that is about one point away from the L-stage intermediate data stream A predetermined lifting is performed on the data obtained by adding the intermediate data of the (L + 1) th stage of the point. Calculating the intermediate data of the (L + 1) -th stage on the first series within one clock cycle per point by adding the data obtained by multiplying the coefficient by the coefficient. ) To (c-4) are repeatedly executed until the output data of all points is calculated.
[0044]
The invention according to claim 18 is the wavelet transform method according to claim 17, wherein a P-th (data number P is an integer) input data belonging to the first data sequence and in the input data sequence is defined as a starting point. The step (c-2) of calculating intermediate data of the second stage on the sequence to be performed and the step (c) of calculating the intermediate data of the (L + 1) th stage on the sequence starting from the P-4th input data -4) and the two processes are controlled to be executed in parallel.
[0045]
The invention according to claim 19 is the wavelet transform method according to claim 17 or claim 18, wherein a P + 3th (data number P is an integer) input data in the input data sequence is used as a starting point. (C-1) for calculating intermediate data, and (c-3) for calculating intermediate data at the (M + 1) th stage on a sequence starting from the (P-1) th input data. The processing is controlled so as to be executed in parallel.
[0046]
The invention according to claim 20 is the wavelet transform method according to claim 17, wherein the steps (c-1) to (c-4) are executed in parallel.
[0047]
The invention according to claim 21 is the wavelet transform method according to any one of claims 13 to 20, wherein two-dimensional image data band-divided into a low-frequency component and a high-frequency component is By applying the steps (a) to (c) on a line basis in one of the horizontal direction and the vertical direction of the two-dimensional image data, a combined data string is calculated. On the other hand, a wavelet transform method in which the steps (a) to (c) are applied in the other of the horizontal direction and the vertical direction.
[0048]
BEST MODE FOR CARRYING OUT THE INVENTION
<First embodiment>
Hereinafter, a wavelet transform device and a wavelet transform method according to the first embodiment of the present invention will be described. FIG. 1 is a diagram illustrating a schematic configuration of a wavelet transform device 1 according to the first embodiment. The wavelet transform apparatus 1 includes a buffer 8 for temporarily holding subband data of a high-frequency component or a low-frequency component decomposed by wavelet transform, and an MMU (memory management) operating in synchronization with an externally supplied clock signal CLK. 2), a first ring memory 3A, a horizontal filtering unit 4A, a line buffer circuit 5, a second ring memory 3B, and a vertical filtering unit 4B. Here, the first ring memory 3A, the horizontal filtering unit 4A, the line buffer circuit 5, the second ring memory 3B, and the vertical filtering unit 4B operate in synchronization with an externally supplied pixel clock signal PCLK.
[0049]
In the present embodiment, the MMU 2, the horizontal filtering unit 4A, and the vertical filtering unit 4B are configured by hardware, but may be configured by a computer program including an instruction group executed by a microprocessor instead.
[0050]
The sub-band data input to the wavelet transform device 1 is temporarily stored in the buffer 8. The wavelet transform device 1 has a function of applying a line-based two-dimensional inverse DWT to subband data once. The horizontal filtering unit 4A and the vertical filtering unit 4B are connected in series via a line buffer circuit 5 and a second ring memory 3B. As described later, the sub-band data is filtered in the horizontal direction by the horizontal filtering unit 4A, and then filtered in the vertical direction by the vertical filtering unit 4B. When performing a two-dimensional inverse DWT on data at a decomposition level of second order or higher, the wavelet transform device 1 may be repeatedly used two or more times.
[0051]
The MMU 2 has a function of controlling data input / output between the buffer 8, the first ring memory 3A, and the second ring memory 3B, and transfers and stores input data read from the buffer 8 to the first ring memory 3A. be able to. The horizontal filtering unit 4A performs filtering in the horizontal direction on the data input from the first ring memory 3A, so that, in eight clock cycles of the pixel clock signal PCLK, a low-frequency component in the same direction as the high-frequency component in the horizontal direction is used. Two points of output data obtained by synthesizing the area component can be calculated and output to the line buffer circuit 5. Therefore, the average cycle required to calculate one point of output data is four clock cycles.
[0052]
The data output from the line buffer circuit 5 is stored in the second ring memory 3B. The MMU 2 causes the input data to be input from the second ring memory 3B to the vertical filtering unit 4B. The vertical filtering unit 4B performs filtering on the input data in the vertical direction, so that the output data obtained by combining the high frequency component in the vertical direction and the low frequency component in the same direction in eight periods of the pixel clock signal PCLK. Is calculated at two points and output.
[0053]
The configuration of the horizontal filtering unit 4A and the configuration of the vertical filtering unit 4B are the same. FIG. 2 shows a schematic configuration of the filtering unit 4 (the horizontal filtering unit 4A or the vertical filtering unit 4B). The ring memory 3 shown in FIG. 2 represents one of the first ring memory 3A and the second ring memory 3B shown in FIG.
[0054]
The filtering unit 4 includes a first data selector 11, a first coefficient multiplier 12, a delay register 16, a second data selector 17, a second coefficient multiplier 18, an adder 22, an output, which selectively take in input data. It is configured to include a destination selection unit (DMUX) 23 and a control unit 24. The control unit 24 operates in synchronization with the pixel clock signal PCLK. The first and second data selectors 11 and 17 receive the input data fetched by the ring memory 3 and the data held in the delay register 16 according to the values of the selection control signals SEL0 and SEL1 supplied from the control unit 24. To the first terminal S0 and the second terminal S1, respectively.
[0055]
Further, the first coefficient multiplier 12 converts the data output from the first terminal S0 of the first data selector 11 into normalized coefficients κ and 1 / κ according to the control signal C0 supplied from the control unit 24. The output is multiplied by any one (normalization processing). The data output from the first coefficient multiplier 12 is input to the second data selector 17 after being delayed by one clock cycle of the pixel clock signal PCLK in the delay register 16. It should be noted that the first coefficient multiplier 12 and the delay register 16 constitute the normalizing means of the present invention.
[0056]
Further, the second coefficient multiplier 18 adds the lifting coefficients −α, −β, − to the data output from the first terminal S0 of the second data selector 17 according to the control signal C1 supplied from the control unit 24. Multiply and output any of γ and -δ (coefficient multiplication process). The adder 22 adds the data output from the second coefficient multiplier 18 and the data output from the second terminal S1 of the second data selector 17 and outputs the result to the output destination selection unit 23 (addition processing). ). The data normalized by 1 / κ is also output from the third terminal S2 of the second data selector 17 to the external MMU2. The MMU 2 can transfer data output from the third terminal S2 of the second data selector 17 to the outside to the ring memory 3 and store the data.
[0057]
Further, the output destination selecting unit 23 outputs data input from the adder 22 from any one of the first terminal K0 to the third terminal K2 according to the value of the selection control signal SEL2 supplied from the control unit 24. The coefficient multiplication processing and the addition processing in the second coefficient multiplier 18 and the adder 22 are executed within one clock cycle per point. Therefore, the period required to multiply and add one point of input data by the lifting coefficient is one cycle of the pixel clock signal PCLK.
[0058]
Note that the coefficient register 19 and the adder 22 constitute a two-point operation unit that fetches two points of input data from the data selector 17 and performs an operation. The two-point calculation unit and the output destination selection unit 23 constitute an intermediate data calculation unit.
[0059]
The data output from the first terminal K0 and the second terminal K1 of the output destination selection unit 23 is output to the outside as output data in which the input data of the low-frequency component and the high-frequency component is synthesized.
[0060]
The data output from the second terminal K1 of the output destination selection unit 23 is branched and output to the external MMU2. The data output from the third terminal K2 is output to the external MMU2. The MMU 2 can transfer data output from the second terminal K1 and the third terminal K2 to the outside to the ring memory 3 and store the data.
[0061]
Next, a representative example of the lifting operation using the filtering unit 4 will be described below with reference to FIGS. 3 to 10 are lattice diagrams schematically showing a lifting configuration of a 9 × 7 tap Daubechies filter. The calculation of this grid diagram is performed in the same manner as in the case of FIG. 3 to 10, for convenience of description, lifting coefficients −α, −β, −γ, −δ and normalization coefficients κ, 1 / κ corresponding to line segments connecting the respective grid points are displayed. Not.
[0062]
As shown in FIGS. 3 to 10, input data..., Y (2n−1), Y (2n),..., Y (2n + 9) are each a series of grid points (intermediate data) ), And output as output data..., X (2n-1), X (2n),..., X (2n + 9). For example, the input data Y (2n) is output as output data X (2n) after passing through two stages of intermediate data (lattice points). Hereinafter, a process of normalizing input data to generate intermediate data is referred to as a normalization process (corresponding to steps 1 and 2 in the above formula (1)), and a process of calculating other intermediate data is a conversion process (step 3 described above). And step 4 apply). In the present embodiment and other embodiments described later, two-stage intermediate data is calculated for each stream. However, the present invention is not limited to this, and there may be a lifting configuration that calculates only one-stage intermediate data. . Actually, in the case of a filter of 5 × 3 taps or a filter of 13 × 7 taps, a lifting configuration for calculating intermediate data of only one stage is possible.
[0063]
3 to 10 show the contents of the N-th (N is an integer) to N + 7-th processing in the present embodiment. In the N-th processing (FIG. 3), the intermediate data S of two points in the target area A11 n + 2And D1 n + 1Is performed within one cycle (one clock cycle) of the pixel clock signal PCLK using the above-mentioned step a (FIG. 38), and the even-numbered input data Y (2n + 4) is used as a starting point. The temporary data of the second stage (STwo n + 2) Is calculated. That is, the even-numbered intermediate data S1 n + 2And this intermediate data S1 n + 2Odd-numbered intermediate data D on the series one point before1 n + 1Is used to execute the processing of step a.
[0064]
Further, in the cycle one clock before the arithmetic processing in the target area A1, in the target area N1, a normalization process of multiplying the input data Y (2n + 4) by the normalization coefficient κ is executed, and the input data Y (2n + 4) Intermediate data S of the first stage on the series1 n + 2Is calculated.
[0065]
The contents of the N-th specific processing are as follows. The ring memory 3 shown in FIG. 2 includes a 5-line (series) storage area for storing input data, intermediate data, and temporary data, and sequentially stores new data in a storage area for storing referenced old data. Has a structure to overwrite.
[0066]
First, the processing in the target area N1 executed in the cycle one clock before will be described. The MMU 2 causes the first data selector 11 to output the input data Y (2n + 4) temporarily stored in the ring memory 3. The control unit 24 supplies the selection control signal SEL0 to the first data selector 11 and causes the first coefficient multiplier 12 to output the input data Y (2n + 4). The first coefficient multiplier 12 outputs the standardization coefficient κ selected according to the control signal C0 supplied from the control unit 24 to the multiplier 14, and the multiplier 14 converts the standardization coefficient κ into the input data Y (2n + 4). Multiplied data κ × Y (2n + 4) = S1 n + 2Is output to the delay register 16. The coefficient multiplication processing in the first coefficient multiplier 12 is executed within one clock cycle.
[0067]
One clock cycle later, the intermediate data S held in the delay register 161 n + 2Is output to the second data selector 17. The MMU 2 stores the intermediate data D temporarily stored in the ring memory 3.1 n + 1Is output to the first data selector 11. The first data selector 11 receives the intermediate data D from the second terminal S1 in response to the selection control signal SEL0 supplied from the control unit 24.1 n + 1Is output. The output data is input to the second data selector 17. The second data selector 17 outputs the intermediate data D in response to the selection control signal SEL1 supplied from the control unit 24.1 n + 1Is output from the first terminal S0 to the second coefficient multiplier 18, and the intermediate data S1 n + 2From the second terminal S1 to the adder 22.
[0068]
The second coefficient multiplier 18 outputs the lifting coefficient δ selected according to the control signal C1 supplied from the control unit 24 to the multiplier 20, and the multiplier 20 outputs the intermediate data D1 n + 1Is multiplied by a lifting coefficient δ, and data δ × D1n + 1 is output to a two's complement arithmetic circuit 21. The two's complement arithmetic circuit 21 is an arithmetic circuit for inverting the sign of the input data, and is -δ × D1 n + 1Is output to the adder 22. Then, the adder 22 calculates the data of two points −δ × D1 n + 1And S1 n + 2And the temporary data (STwo n + 2) Is calculated and output to the output destination selection unit 23. This temporary data (STwo n + 2Is calculated within one clock cycle.
[0069]
The output destination selection unit 23 transmits the temporary data (S) to the external MMU 2 from the third terminal K2 selected according to the value of the selection control signal SEL2 supplied from the control unit 24.Two n + 2) Is output. MMU2 transmits the temporary data (STwo n + 2) Is transferred to the ring memory 3 to overwrite the storage area input data Y (2n + 4) which has been referred to.
[0070]
In the next (N + 1) -th processing (FIG. 4), the intermediate data D of two points in the target area A21 n +1And STwo n + 1Is performed within one clock cycle, and the temporary data (D) of the second stage on the series starting from the odd-numbered input data Y (2n + 3) is obtained.Two n + 1) Is calculated. Intermediate data STwo n + 1Is the second stage data on the series starting from the input data Y (2n + 2) one point before the input data Y (2n + 3). Specifically, the MMU 2 reads the calculated intermediate data D from the ring memory 3.1 n + 1And STwo n + 1Is output to the first data selector 11. Next, under the control of the control unit 24, the first data selector 111 n + 1And STwo n + 1Are output from the second and third terminals S1 and S2 to the second data selector 17, respectively. Further, under the control of the control unit 24, the second data selector 17Two n + 1From the first terminal S0 to the second coefficient multiplier 18 and the intermediate data D1 n + 1Is output from the second terminal S1 to the adder 22.
[0071]
The second coefficient multiplier 18 outputs the lifting coefficient γ selected according to the control signal C1 supplied from the control unit 24 to the multiplier 20, and the multiplier 20 outputs the intermediate data STwo n + 1Is multiplied by a lifting coefficient γ, and data γ × S2n + 1 is output to a two's complement arithmetic circuit 21. The adder 22 outputs -γ × S which is output data of the two's complement arithmetic circuit 21.Two n + 1And D which is the output from the second data selector 171 n + 1Is added to the temporary data (DTwo n + 1) Is calculated and output to the output destination selection unit 23. The output destination selection unit 23 controls the temporary data (DTwo n + 1) Is output from the third terminal K2 to the external MMU2, and the MMU2 outputs the temporary data (DTwo n + 1) Is transferred to the ring memory 3 and the referenced storage area intermediate data D1 n + 1Overwrite.
[0072]
In the next (N + 2) -th processing (FIG. 5), the intermediate data S of two points in the target area A3Two n + 1And DTwo nIs performed within one clock cycle to calculate output temporary data (X (2n + 2)) on the series starting from the even-numbered input data Y (2n + 2). Intermediate data DTwo nIs the second stage intermediate data on the series starting from the input data Y (2n + 1) one point before the input data Y (2n + 2). Specifically, the MMU 2 reads the calculated intermediate data S from the ring memory 3.Two n + 1And DTwo nIs output to the first data selector 11. Next, under the control of the control unit 24, the first data selector 11Two n + 1And DTwo nAre output from the second and third terminals S1 and S2 to the second data selector 17, respectively. Further, under the control of the control unit 24, the second data selector 17 sets the intermediate data DTwo nFrom the first terminal S0 to the second coefficient multiplier 18, and the intermediate data STwo n + 1Is output from the second terminal S1 to the adder 22.
[0073]
The second coefficient multiplier 18 calculates the intermediate data DTwo nIs multiplied by a lifting coefficient β, and β × D2n weighted by the lifting coefficient β is output to the two's complement arithmetic circuit 21. The adder 22 outputs -β × D which is output data of the two's complement arithmetic circuit 21.Two nAnd S which is the output from the second data selector 17Two n + 1Is added to calculate the output temporary data (X (2n + 2)) and output it to the output destination selection unit 23. The output destination selection unit 23 outputs the temporary data (X (2n + 2)) to the external MMU 2 from the third terminal K2 under the control of the control unit 24, and the MMU 2 transmits the temporary data (X (2n + 2)) to the ring. Transferred to the memory 3 and referred to the storage area intermediate data STwo n + 1Overwrite.
[0074]
In the next N + 3rd processing (FIG. 6), the intermediate data D in the target area A4Two nAnd the output data X (2n), the two-point operation in step a is executed within one clock cycle, and the output temporary data (X (X (2n + 1)) on the sequence starting from the odd-numbered input data Y (2n + 1) is obtained. 2n + 1)) is calculated. Specifically, the MMU 2 reads the calculated intermediate data D from the ring memory 3.Two nAnd the output data X (2n) are output to the first data selector 11. Next, under the control of the control unit 24, the first data selector 11Two nAnd X (2n) are output to the second data selector 17 from the second and third terminals S1 and S2, respectively. Further, under the control of the control unit 24, the second data selector 17 sends X (2n) from the first terminal S0 to the second coefficient multiplier 18 to output the intermediate data DTwo nIs output from the second terminal S1 to the adder 22.
[0075]
The second coefficient multiplier 18 multiplies X (2n) by the lifting coefficient α and outputs data α × X (2n) weighted by the lifting coefficient α to the two's complement arithmetic circuit 21. The adder 22 outputs -α × X (2n) which is the output of the two's complement arithmetic circuit 21 and D which is the output of the second data selector 17.Two nTo calculate output temporary data (X (2n + 1)) and output it to the output destination selection unit 23. The output destination selection unit 23 outputs the temporary data (X (2n + 1)) from the third terminal K2 to the external MMU 2 under the control of the control unit 24, and the MMU 2 transmits the temporary data (X (2n + 1)) to the ring. Transferred to the memory 3 and referred to the storage area intermediate data DTwo nOverwrite.
[0076]
In the next N + 4th processing (FIG. 7), the temporary data (STwo n + 2) And the intermediate data D in the target area B11 n + 1Is executed within one clock cycle, and the intermediate data S of the second stage on the sequence starting from the even-numbered input data Y (2n + 4) is used.Two n + 2Is calculated. Intermediate data D1 n + 2Is the temporary data (STwo n + 2) Is data on the series one point after the series.
[0077]
Further, in the cycle one clock before executing the arithmetic processing in the target area B1, in the target area N2, the normalization processing of multiplying the input data Y (2n + 5) by the normalization coefficient 1 / κ is executed. Thereby, the first stage intermediate data D on the sequence of the input data Y (2n + 5)1 n + 2Is calculated.
[0078]
Specific processing will be described starting from the cycle one clock before. The MMU 2 causes the first data selector 11 to output the input data Y (2n + 5) temporarily stored in the ring memory 3 in a cycle one clock before performing the operation on the target area B1. The control unit 24 supplies the selection control signal SEL0 to the first data selector 11 and causes the first coefficient multiplier 12 to output the input data Y (2n + 5). The first coefficient multiplier 12 multiplies the input data Y (2n + 5) by a normalization coefficient 1 / κ under the control of the control unit 24, and obtains data (1 / κ) × Y (2n + 5) = D1 n + 2Is output to the delay register 16. The coefficient multiplication processing in the first coefficient multiplier 12 is executed within one clock cycle.
[0079]
One clock cycle later, the intermediate data D held in the delay register 161 n + 2Is output to the second data selector 17. The MMU 2 also stores the temporary data (STwo n + 2) Is output to the first data selector 11. The control unit 24 supplies the selection control signal SEL0 to the first data selector 11 to store the temporary data (STwo n + 2) Is output to the second data selector 17.
[0080]
Then, the control unit 24 supplies the selection control signal SEL1 to the second data selector 17, and the intermediate data D1 n + 2Is output from the first terminal S0 to the second coefficient multiplier 18, and the temporary data (STwo n + 2) Is output from the second terminal S1 to the adder 22. Further, the second data selector 17 controls the intermediate data D1 n + 2From the third terminal S2 to the external MMU2, which outputs the intermediate data D1 n + 2Is transferred to the ring memory 3 to overwrite the storage area input data Y (2n + 5) which has been referred to.
[0081]
The second coefficient multiplier 18 outputs the lifting coefficient δ selected according to the control signal C1 supplied from the control unit 24 to the multiplier 20, and the multiplier 20 outputs the intermediate data D1 n + 2Is output to a two's complement arithmetic circuit 21. The two's complement arithmetic circuit 21 outputs data −δ × D1 n + 2Is output to the adder 22. Then, the adder 22 calculates the data of two points −δ × D1 n + 2And temporary data (STwo n + 2) Is added to the intermediate data STwo n + 2Is calculated and output to the output destination selection unit 23. This intermediate data STwo n + 2Is performed within one clock cycle.
[0082]
The output destination selection unit 23 outputs the intermediate data S to the external MMU 2 from the third terminal K 2 selected according to the value of the selection control signal SEL 2 supplied from the control unit 24.Two n + 2Is output. MMU2 calculates the intermediate data STwo n + 2Is transferred to the ring memory 3 and the referenced storage area temporary data (STwo n + 2).
[0083]
In the next N + 5th processing (FIG. 8), the temporary data (DTwo n + 1) And the intermediate data S in the target area B1 calculated in the N + 4th processing (FIG. 7)Two n + 2Is performed within one clock cycle, and the intermediate data D of the second stage on the series starting from the odd-numbered input data Y (2n + 3) is used.Two n + 1Is calculated. The intermediate data STwo n + 2Is the temporary data (DTwo n + 1) Is the data of the second stage on the series one point after the series.
[0084]
Specifically, the MMU 2 stores the temporary data (DTwo n + 1) And intermediate data STwo n + 2Is output to the first data selector 11. Next, under the control of the control unit 24, the first data selector 11 stores the temporary data (DTwo n + 1) And intermediate data STwo n + 2From the second and third terminals S1 and S2 to the second data selector 17. Further, under the control of the control unit 24, the second data selector 17Two n + 2Is output from the first terminal S0 to the second coefficient multiplier 18, and the temporary data (DTwo n + 1) Is output from the second terminal S1 to the adder 22. The second coefficient multiplier 18 calculates the intermediate data STwo n + 2Is multiplied by a lifting coefficient γ, and the sign of the coefficient is inverted in the two's complement arithmetic circuit 21. The adder 22 calculates the weighted intermediate data −γ × STwo n + 2And temporary data (DTwo n + 1) And the intermediate data DTwo n + 1Is calculated and output to the output destination selection unit 23. The output destination selection unit 23 controls the intermediate data D under the control of the control unit 24.Two n + 1From the third terminal K2 to the external MMU2, which outputs the intermediate data DTwo n + 1Is transferred to the ring memory 3 and the referenced storage area temporary data (DTwo n + 1).
[0085]
In the next N + 6th processing (FIG. 9), the output temporary data (X (2n + 2)) calculated in the N + 2nd processing (FIG. 5) and the intermediate data in the target area B2 calculated in the N + 5th processing (FIG. 8) Data DTwo n + 1Is executed within one clock cycle to calculate the output data X (2n + 2) on the series starting from the even-numbered input data Y (2n + 2). The intermediate data DTwo n + 1Is the intermediate data of the second stage on the series one point after the series of the output temporary data (X (2n + 2)).
[0086]
Specifically, the MMU 2 stores the temporary data (X (2n + 2)) and the intermediate data D from the ring memory 3.Two n + 1Is output to the first data selector 11. Next, under the control of the control unit 24, the first data selector 11 stores the temporary data (X (2n + 2)) and the intermediate data DTwo n + 1From the second and third terminals S1 and S2 to the second data selector 17. Further, under the control of the control unit 24, the second data selector 17 sets the intermediate data DTwo n + 1Is output from the first terminal S0 to the second coefficient multiplier 18, and the temporary data (X (2n + 2)) is output from the second terminal S1 to the adder 22. The second coefficient multiplier 18 calculates the intermediate data DTwo n + 1Is multiplied by a lifting coefficient β, and the sign of the coefficient is inverted in the two's complement arithmetic circuit 21. The adder 22 calculates the weighted intermediate data −β × DTwo n + 1And the temporary data (X (2n + 2)) to calculate output data X (2n + 2), which is output to the output destination selection unit 23. The output destination selection unit 23 outputs the output data X (2n + 2) from the second terminal K1 to the external and external MMU2 under the control of the control unit 24, and the MMU2 outputs the output data X (2n + 2) to the ring memory 3 And overwrites the referred storage area temporary data (X (2n + 2)).
[0087]
In the next N + 7th processing (FIG. 10), the output temporary data (X (2n + 1)) calculated in the N + 3rd processing (FIG. 6) and the output in the target area B4 calculated in the N + 6th processing (FIG. 9) The two-point operation of the above step b using the data X (2n + 2) is executed within one clock cycle to calculate output data X (2n + 1) on the series starting from the odd-numbered input data Y (2n + 1). I do. Note that the output data X (2n + 2) is output data on a series one point after the series of output temporary data (X (2n + 1)).
[0088]
Specifically, the MMU 2 causes the first data selector 11 to output the temporary data (X (2n + 1)) and the output data X (2n + 2) from the ring memory 3. Next, under the control of the control unit 24, the first data selector 11 transfers the temporary data (X (2n + 1)) and the output data X (2n + 2) from the second and third terminals S1 and S2 to the second data selector 17. Output to Further, under the control of the control unit 24, the second data selector 17 outputs the output data X (2n + 2) from the first terminal S0 to the second coefficient multiplier 18, and outputs the temporary data (X (2n + 1)) to the second coefficient multiplier 18. The signal is output from the terminal S1 to the adder 22. The second coefficient multiplier 18 multiplies the output data X (2n + 2) by the lifting coefficient α and inverts the sign of the coefficient in the two's complement arithmetic circuit 21. The adder 22 calculates the output data X (2n + 1) by adding the output data −α × X (2n + 2) weighted with the lifting coefficient −α and the temporary data (X (2n + 1)), and calculates the output data X (2n + 1). 23. The output destination selection unit 23 outputs the output data X (2n + 1) from the first terminal K0 to the outside under the control of the control unit 24.
[0089]
In the next N + 8th processing (not shown), processing similar to the Nth processing (FIG. 3) is performed except for the target area. Thereafter, the processing from the (N + 1) th to the (N + 7) th is repeated. As described above, the same processing as the N-th processing (FIG. 3) to the N + 7-th processing (FIG. 10) is performed when the output data of all points..., X (2n−1), X (2n),. It is executed while moving the target area until the calculation is performed.
[0090]
Further, in the present embodiment, as shown in the N-th to (N + 3) -th processes, the two-point calculation in step a is executed until the temporary output data (X (2n + 1)) at the final stage is calculated. As shown in the (N + 4) th to (N + 7) th processes, the two-point calculation in step (b) for converting all the temporary data calculated in the (N) th to (N + 3) th processes into intermediate data or output data is performed. I have.
[0091]
As described above, in the wavelet transform method according to the present embodiment, the process of normalizing the input data..., Y (2n), Y (2n + 1), and the process of converting the standardized intermediate data to other intermediate data And the conversion process to be performed simultaneously in one clock cycle, the average cycle required to calculate one point of output data can be set to four clock cycles, and the calculation cycle of output data can be shortened.
[0092]
Next, a line-based two-dimensional inverse DWT process using the wavelet transform device 1 will be described below.
[0093]
The subbands (band components) input to the horizontal filtering unit 4A are the subbands 23LL and 23HL, or the subbands 23LH and 23HH, as shown in FIG. Here, the sub-band 23LL includes a horizontal low-frequency component (L) and a vertical low-frequency component (L), and the sub-band 23HL includes a horizontal high-frequency component (H) and a vertical low-frequency component (H). The sub-band 23LH includes a horizontal low-frequency component (L) and a vertical high-frequency component (H), and the sub-band 23HH includes a horizontal high-frequency component (H ) And a high-frequency component (H) in the vertical direction.
[0094]
When the sub-bands (band components) input to the horizontal filtering unit 4A are the sub-bands 23LL and 23HL, or the sub-bands 23LH and 23HH, the input data shown in FIGS. .. n-1), Y (n), Y (n + 1),... represent data in which horizontal data of subbands 23LL and 23HL are alternately arranged, or horizontal data of subbands 23LH and 23HH. It is data arranged alternately. Then, horizontal filtering is performed on the input data composed of the sub-bands 23LL and 23HL to perform a horizontal synthesis process, and the sub-band 23L is output. Also, by performing horizontal filtering on the input data composed of the sub-bands 23LH and 23HH, a horizontal synthesis process is performed, and the sub-band 23H is output. .., X (n−1), X (n), X (n + 1),... Shown in FIGS. 3 to 10 are the horizontal lines of the subband 23L or 23H. Shows the data.
[0095]
Next, the subbands input by the vertical filtering unit 4B are the subband 23L and the subband 23H, as shown in FIG. In this case, the input data..., Y (n−1), Y (n), Y (n + 1),. This is data in which data is alternately arranged. Then, by subjecting the input data composed of the subbands 23L and 23H to vertical filtering, synthesis processing in the vertical direction is performed, and the image data 23 is output. .., X (n−1), X (n), X (n + 1),... Shown in FIGS. 3 to 10 indicate one line of image data 23 in the vertical direction. I have. The image data 23 is rectangular data having the number of horizontal pixels W and the number of vertical pixels H.
[0096]
The subbands 23LL, 23HL, 23LH, and 23HH are rectangular data having the number of vertical pixels H / 2 and the number of horizontal pixels W / 2, and as schematically shown in FIG. Data strings vertically arranged as a set of bands 23LL and sub-bands 23HL of even rows and odd columns, or a set of sub bands 23LH of odd rows and even columns and sub bands 23HH of sub rows 23HH.i(2n), Yi(2n + 1), Yi(2n + 2)... Are input to the horizontal filtering unit 4A. Input data YiThe subscript i in (k) indicates the input data YiLet (k) indicate the number of the pixel column to which it belongs. The number i of the pixel column takes a value of i = 0, 1,..., W−1 (W: the number of horizontal pixels). In the figure, a storage area 24L in an even-numbered row with one set of sub-bands 23LL and 23HL and a storage area 24H in an odd-numbered row with one set of sub-bands 23LH and 23HH are divided into two areas. The memory-like data arrangement is not limited to this.
[0097]
Specifically, the first ring memory 3A and the horizontal filtering unit 4A perform each processing including the N-th processing (FIG. 3) to the N + 7-th processing (FIG. 10) on the low frequency side (the storage area 24L side). And the high frequency side (storage area 24H side) is alternately switched, and the processing is repeated for each pixel.
[0098]
For example, after the N-th processing (FIG. 3) is executed once for the first pixel row on the memory area 24L side, the N + 1-th processing (FIG. 4) is executed once, and further, the N + 2 The first processing (FIG. 5) is executed once, and processing such as... Is performed. Similarly, the processing is performed on the first pixel row on the storage area 24H side, and then performed on the second pixel row on the storage area 24L side, and then performed on the second pixel row on the storage area 24H side. , And then executed on the third pixel row on the storage area 24L side, and then executed on the third pixel row on the storage area 24H side, and finally Is performed on the H / 2-th pixel row on the storage area 24L side, and then is performed on the H / 2-th pixel row on the storage area 24H side.
[0099]
Note that, as schematically shown in FIG. 13, the first ring memory 3A stores input data.j(K), Xj + 1(K), has a storage area 26 for storing data of five points (five pixels) corresponding to the temporary data and the intermediate data.
[0100]
As a result, the horizontal filtering unit 4A outputs the output of each horizontal line unit (H / 2 height) of the subband 23L in which the subbands 23LL and 23HL are synthesized, and the subband in which the subbands 23LH and 23HH are synthesized. The output of each band (H / 2 height) of the band 23H is output alternately and continuously. Then, the horizontal line of the subband 23L is buffered in the L line buffer 5L in the line buffer circuit 5, and the horizontal line of the subband 23H is buffered in the H line buffer 5H in the line buffer circuit 5. .
[0101]
For example, as a result of the N + 6th processing (FIG. 9) being continuously performed on each of the first to Wth pixels, the data X of one line in which the 2n + 2nd horizontal components are combined is obtained.0(2n + 2), XTwo(2n + 2), ..., Xj(2n + 2), ..., Xw -1(2n + 2) are continuously output and buffered by the L line buffer circuit 5L. Next, as a result of the N + 7-th processing (FIG. 10) being continuously performed on each of the first to W-th pixels, one line of data X in which the 2n + 1-th horizontal component is synthesized is obtained.0(2n + 1), XTwo(2n + 1), ..., Xj(2n + 1), ..., Xw -1(2n + 1) are continuously output and buffered by the H line buffer circuit 5H.
[0102]
The line buffer circuit 5 alternately supplies the components of one horizontal line in the L line buffer 5L and the components of one horizontal line in the H line buffer 5H line by line to the second ring memory 3B under the control of the MMU 2. I do. The data output to the second ring memory 3B is processed by the vertical filtering unit 4B.
[0103]
Specifically, the second ring memory 3B and the vertical filtering unit 4B repeatedly execute the processing for each pixel row including the N-th processing (FIG. 3) to the N + 7-th processing (FIG. 10) in units of horizontal lines. For example, after the N-th process (FIG. 3) is performed on the 0th pixel column, it is performed on the first pixel column, then on the second pixel column, ... Finally, the processing is performed on the (W-1) -th pixel column. Next, after the above-described N + 1-th process (FIG. 4) is performed on the 0th pixel column, the process is performed on the first pixel column, and further performed on the second pixel column. ... Finally, the processing is performed on the (W-1) -th pixel column. In this way, the processing of each time is sequentially executed for all the pixel columns. As schematically shown in FIG. 12, the second ring memory 3B has a storage area 24 for holding data of 5 × W points (five lines) corresponding to the input data string, And intermediate data.
[0104]
As a result, the vertical filtering unit 4B outputs the image data 23 from the data line input in units of horizontal lines.
[0105]
By performing the above processing recursively, it is possible to combine band components of decomposition levels of any order and restore image data. That is, the subbands LL (k-1), HL (k-1), LH (k-1), and HH (k-1) at the (k-1) -th order (k is an integer of 2 or more) decomposition level are represented by wavelets. By making the conversion device 1 recursively input, it is possible to obtain the k-th order subband LL (k).
[0106]
As described above, since the wavelet transform device 1 according to the present embodiment includes the horizontal filtering unit 4A and the vertical filtering unit 4B having the configuration shown in FIG. 2, the calculation cycle of the output data can be shortened. Therefore, it is possible to perform the line-based two-dimensional wavelet transform in a short time and at a high speed.
[0107]
<Second embodiment>
Next, a wavelet transform device and a wavelet transform method according to a second embodiment of the present invention will be described. FIG. 14 is a diagram illustrating a schematic configuration of a wavelet transform device 30 according to the second embodiment. The wavelet transform device 30 includes a buffer 34 for temporarily holding subband two-dimensional image data, an MMU (memory management unit) 31 operating in synchronization with an externally supplied clock signal CLK, a first ring memory 32A, It is configured to include a filtering unit 33A, a second ring memory 32B, and a vertical filtering unit 33B. Here, the first ring memory 32A, the horizontal filtering unit 33A, the second ring memory 32B, and the vertical filtering unit 33B operate in synchronization with an externally supplied pixel clock signal PCLK.
[0108]
In the figure, the number of pixels or the number of lines of the first and second ring memories 32A and 32B is 8 or 9, but in the second embodiment, the first ring memory 32A is a nine-point ring memory. The second ring memory 32B is a 9-line ring memory.
[0109]
In the present embodiment, the MMU 31, the horizontal filtering unit 33A, and the vertical filtering unit 33B are configured by hardware, but may be configured by a computer program including a group of instructions executed by a microprocessor instead.
[0110]
The sub-band two-dimensional image data input to the wavelet transform device 30 is temporarily stored in the buffer 34. The wavelet transform device 30 has a function of applying a line-based two-dimensional inverse DWT once to the two-dimensional image data, and synthesizes the subbands 23LL, 23HL, 23LH, and 23HH of the (k + 1) th level to form the kth subband. Generate 23LL. The horizontal filtering unit 33A and the vertical filtering unit 33B are connected in series via a second ring memory 32B. The sub-band data is filtered in the horizontal direction by the horizontal filtering unit 33A, and then filtered in the vertical direction by the vertical filtering unit 33B. When performing a two-dimensional inverse DWT for synthesizing subbands of the second or higher decomposition level, the wavelet transform device 30 may be repeatedly used two or more times.
[0111]
The MMU 31 has a function of controlling data input / output between the buffer 34, the first ring memory 32A, and the second ring memory 32B, and transfers the sub-band data read from the buffer 34 to the first ring memory 32A. Can be memorized. Specifically, the data in which the horizontal data of the subbands 23LL and 23HL are alternately arranged in pixel units, and the data in which the horizontal data of the subbands 23LH and 23HH are alternately arranged in pixel units, It is stored in one ring memory 32A. The horizontal filtering unit 33A performs filtering in the horizontal direction on the data input from the first ring memory 32A, thereby synthesizing the high frequency component and the low frequency component in one clock cycle of the pixel clock signal PCLK. Data can be calculated point by point and output to the second ring memory 32B. More specifically, data obtained by combining the subbands 23LL and 23HL and data obtained by combining the subbands 23LH and 23HH are output alternately and stored in the second ring memory 32B.
[0112]
Next, the MMU 31 inputs data from the second ring memory 32B to the vertical filtering unit 33B. The vertical filtering unit 33B performs filtering on the input data in the vertical direction, and calculates data obtained by combining the high frequency component and the low frequency component one point at a time in one clock cycle of the pixel clock signal PCLK. ,Output.
[0113]
The configuration of the horizontal filtering unit 33A and the configuration of the vertical filtering unit 33B are the same as each other. FIG. 15 shows a schematic configuration of the filtering unit 33 (the horizontal filtering unit 33A or the vertical filtering unit 33B). The ring memory 32 shown in FIG. 15 represents one of the first ring memory 32A and the second ring memory 32B shown in FIG.
[0114]
The filtering unit 33 includes a first data selector 35, a first coefficient multiplier 36, a delay register 40, a second data selector 41, a third data selector 42, and adders 43 and 48 that selectively take in input data. , 49, 54, a second coefficient multiplier 44, a third coefficient multiplier 50, an output destination selection unit (DMUX) 55, and a control unit 56. Among these constituent elements, a set including two adders 43 and 48 and a second coefficient multiplier 44 constitutes a three-point operation unit that processes three-point data within one clock cycle. In addition, a set including two adders 49 and 54 and a third coefficient multiplier 50 similarly constitutes a three-point operation unit. The two sets of three-point operation units and the output destination selection unit 55 constitute an intermediate data calculation unit.
[0115]
The control unit 56 operates in synchronization with the pixel clock signal PCLK. The first data selector 35 selectively selects the data fetched by the ring memory 32 from any of the first terminal S0 to the seventh terminal S6 according to the value of the selection control signal SEL0 supplied from the control unit 56. Output.
[0116]
The data output from the first terminal S0 of the first data selector 35 is input to the first coefficient multiplier 36. In the first coefficient multiplier 36, the coefficient register 37 outputs one of the normalized coefficients 1 / κ and κ to the multiplier 38 according to the value of the control signal C0 supplied from the control unit 56, and performs multiplication. The device 38 executes a normalization process of multiplying the input data by the normalization coefficient within one clock cycle. The data output from the first coefficient multiplier 36 is input to the second data selector 41 after being delayed by one clock cycle of the pixel clock signal PCLK in the delay register 40. Note that the first coefficient multiplier 36 and the delay register 40 constitute the normalizing means of the present invention.
[0117]
In the three-point operation unit, the adder 43 adds two points of data output from the first terminal S0 and the second terminal S1 of the third data selector 42 and outputs the result to the second coefficient multiplier 44. . In the second coefficient multiplier 44, the coefficient register 45 multiplies the input data by one of the lifting coefficients δ and α according to the value of the control signal C1 supplied from the control unit 56, and performs a two's complement operation circuit. After the sign is inverted at 47, it is output to the adder 48. Then, the adder 48 adds the data input from the third terminal S2 of the third data selector 42 and the data input from the second coefficient multiplier 44 and outputs the result to the output destination selecting unit 55.
[0118]
The adder 49 adds the two data points output from the fourth terminal S3 and the fifth terminal S4 of the third data selector 42 and outputs the result to the third coefficient multiplier 50. In the third coefficient multiplier 50, the coefficient register 51 multiplies the input data by one of the lifting coefficients β and γ according to the value of the control signal C2 supplied from the control unit 56, and performs a two's complement operation circuit. After the sign is inverted at 53, it is output to the adder 54. The adder 54 adds the data input from the sixth terminal S5 of the third data selector 42 and the data input from the third coefficient multiplier 50, and outputs the result to the output destination selection unit 55.
[0119]
The output destination selection unit 55 outputs two points of data input in parallel from the adders 48 and 54 to any one of the first terminal K0 to the third terminal K2 according to the value of the selection control signal SEL3 supplied from the control unit 56. Output from
[0120]
The data output from the second terminal K1 of the output destination selection unit 55 is branched and output to the external MMU2, and the data output from the third terminal K2 is output to the external MMU2. The MMU 2 can transfer data output from the second terminal K1 and the third terminal K2 to the outside to the ring memory 32 and store the data.
[0121]
Next, a typical example of the lifting operation using the filtering unit 33 will be described below with reference to FIGS. 16 to 19 are lattice diagrams schematically showing a lifting configuration of a 9 × 7 tap Daubechies filter. The calculation of this grid diagram is performed in the same manner as in the case of FIG. FIGS. 16 to 19 show lifting coefficients −α, −β, −γ, −δ and normalization coefficients κ, 1 / κ corresponding to the line segments connecting the respective grid points for convenience of explanation. Not.
[0122]
16 to 19 schematically show the N-th (N is an integer) to (N + 3) -th processing in the present embodiment. In the N-th process (FIG. 16), two conversion processes of the target areas C1 and C2 are simultaneously executed in parallel within one clock cycle. In the target area C2, a multiplication value is calculated by multiplying the data obtained by adding the output data X (2n) and X (2n + 2) at two points by a lifting coefficient -α, and then the multiplication value and the intermediate data D are calculated.Two nAre added to perform a three-point operation. As a result, output data X (2n + 1) on the series starting from the odd-numbered input data Y (2n + 1) is calculated. Output data X (2n) and X (2n + 2) at two points are intermediate data DTwo nThis is data on two series that is one point around the series. In the target area C1, two intermediate data STwo n + 2, STwo n + 3Is multiplied by a lifting coefficient −γ to the data obtained by adding the multiplication value and the intermediate data D1 n + 2Are added to perform a three-point operation. As a result, the intermediate data D of the second stage on the sequence starting from the even-numbered input data Y (2n + 5)Two n + 2Is calculated. Here, two intermediate data STwo n + 2, STwo n + 3Is the intermediate data D1 n + 2This is data on two series that is one point around the series.
[0123]
Further, in the period one clock before the operation in the target regions C1 and C2, a normalization process of multiplying the input data Y (2n + 8) by the normalization coefficient κ is executed in the target region N1, and the input data Y (2n + 8) S, which is the intermediate data of the first stage on the series1 n + 4Is calculated.
[0124]
The contents of the N-th specific processing are as follows. The ring memory 32 shown in FIG. 15 has a 9-line (series) storage area for storing input data, intermediate data, and temporary data, and sequentially stores new data in a storage area for storing referenced old data. Has a structure to overwrite.
[0125]
The MMU 31 causes the first data selector 35 to output the input data Y (2n + 8) temporarily stored in the ring memory 32. The control unit 56 supplies the selection control signal SEL0 to the first data selector 35 to output the input data Y (2n + 8) to the first coefficient multiplier 36. The first coefficient multiplier 36 selects the latter half coefficient κ of the two normalized coefficients κ and 1 / κ according to the control signal C0 supplied from the control unit 56, and supplies the selected coefficient κ to the multiplier 38. Is a multiplication value obtained by multiplying the input data and the normalization coefficient κ (= κ × Y (2n + 8) = S1 n + 4) To the delay register 40. The coefficient multiplication process in the first coefficient multiplier 36 is executed within one clock cycle.
[0126]
One clock cycle after the coefficient multiplication process, the intermediate data S1n + 4 stored in the delay register 40 is output to the second data selector 41. The second data selector 41 outputs the intermediate data S in accordance with the selection control signal SEL1 supplied from the control unit 56.1 n + 4From the second terminal S1 to the MMU 31, which outputs the intermediate data S1 n + 4Is transferred to the ring memory 32 to overwrite the referred storage area input data Y (2n + 8). The intermediate data S1 n + 4Is output to the MMU 31 at the same clock cycle, the MMU 31 outputs the six-point data X (2n), D temporarily stored in the ring memory 32.Two n, X (2n + 2), STwo n + 2, D1 n + 2, STwo n + 3To the first data selector 35. The first data selector 35 outputs the data of the six points to the second terminal S1 to the seventh terminal S6 according to the value of the selection control signal SEL0 supplied from the control unit 56. This output is then input to the third data selector 42, and the third data selector 42 outputs the data in the target area C2 of the input data according to the value of the selection control signal SEL2 supplied from the control unit 56. Data X (2n), X (2n + 2), DTwo nAnd outputs the data from the first terminal S0 to the third terminal S2 respectively.Two n + 2, STwo n + 3,D1 n + 2And outputs the signals from the fourth terminal S3 to the sixth terminal S5, respectively.
[0127]
The upper adder 43 adds the data X (2n) and X (2n + 2) of two points input from the first terminal S0 and the second terminal S1 of the third data selector 42 to a second coefficient multiplier 44. Output to In the second coefficient multiplier 44, the coefficient register 45 selects the second half coefficient α of the two lifting coefficients α and δ according to the control signal C1 supplied from the control unit 56, and supplies the selected coefficient α to the multiplier 46. The multiplier 46 outputs a multiplied value (= α × (X (2n) + X (2n + 2))) obtained by multiplying the input data and the lifting coefficient α to the two's complement arithmetic circuit 47. In the two's complement arithmetic circuit 47, the data whose sign is inverted is output to the adder 48. Then, the adder 48 calculates the multiplied value input from the second coefficient multiplier 44 and the intermediate data D input from the third terminal S2 of the third data selector 42.Two nIs added to calculate the output data X (2n + 1) in the target area C2, and output it to the output destination selecting unit 55. The calculation processing of the output data X (2n + 1) is executed within one clock cycle.
[0128]
On the other hand, the lower adder 50 outputs the intermediate data S of two points input from the fourth terminal S3 and the fifth terminal S4 of the third data selector 42.Two n + 2, STwo n + 3Is output to the third coefficient multiplier 50. In the third coefficient multiplier 50, the coefficient register 51 selects the latter half coefficient γ of the two lifting coefficients β and γ according to the control signal C2 supplied from the control unit 56, and supplies the selected coefficient γ to the multiplier 52. The multiplier 52 multiplies the input data by a lifting coefficient γ (= γ × (STwo n + 2+ STwo n + 3)) To the two's complement arithmetic circuit 53. In the two's complement arithmetic circuit 53, the data whose sign is inverted is output to the adder 54. Then, the adder 54 calculates the multiplied value input from the third coefficient multiplier 50 and the intermediate data D input from the sixth terminal S5 of the third data selector 42.1 n + 2Is added to the intermediate data D in the target area C1.Two n + 2Is calculated and output to the output destination selection unit 55. This intermediate data DTwo n + 2Is performed within one clock cycle.
[0129]
The output destination selection unit 55 outputs the output data X (2n + 1) input from the adder 48 from the first terminal K0 according to the value of the selection control signal SEL3 supplied from the control unit 56, and inputs the output data X from the other adder 54. Intermediate data DTwo n + 2From the third terminal K2 to the external MMU 31, which outputs the intermediate data DTwo n + 2Is transferred to the ring memory 32, and the referenced storage area intermediate data D1 n + 2Overwrite.
[0130]
Next, conversion processing of the target areas C3 and C4 in the (N + 1) th processing (FIG. 17) is performed. In the target area C3, two intermediate data D1 n + 3, D1 n + 4Is multiplied by a lifting coefficient −δ to calculate a multiplication value, and the multiplication value and the intermediate data S1 n + 4Are added to perform a three-point operation. As a result, the second-stage intermediate data S on the series starting from the even-numbered input data Y (2n + 8)Two n + 4Is calculated. Here, two intermediate data D1 n + 3, D1 n + 4Is the intermediate data S1 n + 4Is one point before and after. In the target area C4, two intermediate data DTwo n + 1, DTwo n + 2Is multiplied by a lifting coefficient −β to the multiplied value, and the multiplied value and the intermediate data STwo n + 2Are added to perform a three-point operation. As a result, output data X (2n + 4) on the series starting from the even-numbered input data Y (2n + 4) is calculated. Here, two intermediate data DTwo n + 1, DTwo n + 2Is the intermediate data STwo n + 2This is data on two series that is one point around the series.
[0131]
Further, the processing in the target area N2 is executed in a cycle one clock before the execution of the arithmetic processing in the target areas C3 and C4. In the target area N2, a normalization process of multiplying the input data Y (2n + 9) by a normalization coefficient 1 / κ is executed, and the intermediate data D1 n + 4Is output.
[0132]
The specific processing contents of the (N + 1) -th process are as follows. First, the processing of the target area N2 executed in the cycle one clock before will be described. The MMU 31 causes the first data selector 35 to output the input data Y (2n + 9) temporarily stored in the ring memory 32. The control unit 56 supplies the selection control signal SEL0 to the first data selector 35 to output the input data Y (2n + 9) to the first coefficient multiplier 36. The first coefficient multiplier 36 selects the first half coefficient 1 / κ from the two standardized coefficients κ and 1 / κ according to the control signal C0 supplied from the control unit 56, supplies the selected coefficient 1 / κ to the multiplier 38, and performs multiplication. The multiplier 38 multiplies the input data by the normalization coefficient 1 / κ (= 1 / κ × Y (2n + 9) = D1 n + 4) To the delay register 40. The coefficient multiplication process in the first coefficient multiplier 36 is executed within one clock cycle.
[0133]
One clock cycle after the coefficient multiplication process, the intermediate data D1n + 4 stored in the delay register 40 is output to the second data selector 41. The second data selector 41 outputs the intermediate data D in accordance with the selection control signal SEL1 supplied from the control unit 56.1 n + 4Is output from the first terminal S0 to the third data selector 42, and the intermediate data D1 n + 4From the second terminal S1 to the MMU 31, which outputs the intermediate data D1 n + 4Is transferred to the ring memory 32 to overwrite the referred storage area input data Y (2n + 9). Next, the intermediate data D1 n + 4Is output to the third data selector 42 at the same clock cycle, the MMU 31 outputs the five-point data D temporarily stored in the ring memory 32.Two n + 1, STwo n + 2, DTwo n + 2, D1 n + 3, S1 n + 4To the first data selector 35. The first data selector 35 outputs the data of the five points to the second terminal S1 to the sixth terminal S5 according to the value of the selection control signal SEL0 supplied from the control unit 56. This output is then input to a third data selector 42, and the third data selector 42 selects three input data D in the target area C3 among the five data.Two n + 1, DTwo n + 2, STwo n + 2, And output from the fourth terminal S3 to the sixth terminal S5. Of the five data, the data of two points in the target area C4 and the data D input from the second data selector 41 are selected.1 n + 3, D1 n + 4, S1 n + 4And outputs it from the first terminal S0 to the third terminal S2.
[0134]
The upper adder 43 outputs two points of data D input from the first terminal S0 and the second terminal S1 of the third data selector 42.1 n + 3, D1 n + 4Is output to the first coefficient multiplier 44. In the first coefficient multiplier 44, the coefficient register 45 selects the first half coefficient δ from the two lifting coefficients α and δ according to the control signal C1 supplied from the control unit 56, and supplies the selected coefficient δ to the multiplier 46. The multiplier 46 multiplies the input data by the lifting coefficient δ (= δ × (D1 n + 3+ D1 n + 4)) To the two's complement arithmetic circuit 47. In the two's complement arithmetic circuit 47, the data whose sign is inverted is output to the adder 48. Then, the adder 48 outputs the multiplied value inputted from the second coefficient multiplier 44 and the intermediate data S inputted from the third terminal S2 of the third data selector 42.1 n + 4Is added to the intermediate data S in the target area C3.Two n + 4Is calculated and output to the output destination selection unit 55. This intermediate data STwo n + 4Is performed within one clock cycle.
[0135]
On the other hand, the lower adder 49 outputs the two-point intermediate data D input from the fourth terminal S3 and the fifth terminal S4 of the third data selector 42.Two n + 1, DTwo n + 2Is output to the third coefficient multiplier 50. In the third coefficient multiplier 50, the coefficient register 51 selects the first half coefficient β of the two lifting coefficients β and γ according to the control signal C2 supplied from the control unit 56 and supplies the selected coefficient β to the multiplier 52, The multiplier 52 multiplies the input data by a lifting coefficient β (= β × (DTwo n + 1+ DTwo n + 2)) To the two's complement arithmetic circuit 53. In the two's complement arithmetic circuit 53, the data whose sign is inverted is output to the adder 54. Then, the adder 54 calculates the multiplication value input from the third coefficient multiplier 50 and the intermediate data S input from the sixth terminal S5 of the third data selector 42.Two n + 2Is calculated, and the output data X (2n + 4) in the target area C4 is calculated and output to the output destination selection unit 55. The calculation processing of the output data X (2n + 4) is executed within one clock cycle.
[0136]
The output destination selection unit 55 outputs the output data X (2n + 4) input from the adder 54 from the second terminal K1 according to the value of the selection control signal SEL3 supplied from the control unit 56, and inputs the output data X from the other adder 48. Intermediate data STwo n + 4From the third terminal K2 to the external MMU 31, which outputs the intermediate data STwo n + 4Is transferred to the ring memory 32, and the referenced storage area intermediate data S1 n + 4Overwrite. The output data X (2n + 4) output from the second terminal K1 branches and is also output to the external MMU 31. The MMU 31 transfers the output data X (2n + 4) to the ring memory 32 and stores the referred data. Area intermediate data STwo n + 2Overwrite.
[0137]
Next, conversion processing of the target areas C5 and C6 in the N + 2nd processing (FIG. 18) is executed. Further, the normalization process of the target area N3 is executed in a cycle one clock before the execution of the arithmetic processing in the target areas C5 and C6. Here, the target regions C5, C6, and N3 are regions obtained by moving the target regions C1, C2, and N1 of the N-th process (FIG. 16) two series (two points) backward. In these target areas C5, C6, and N3, processing similar to the processing in the target areas C1, C2, and N1 is performed. Therefore, in the target area N3, a normalization process of multiplying the even-numbered input data Y (2n + 10) by the normalization coefficient κ is executed, and the intermediate data S1 n + 5Is calculated. In the target area C5, two intermediate data STwo n + 3, STwo n + 4Is multiplied by a lifting coefficient −γ to the data obtained by adding the multiplication value and the intermediate data D1 n + 3Are added to perform a three-point operation. As a result, the intermediate data D of the second stage on the series starting from the odd-numbered input data X (2n + 7)Two n + 3Is calculated. In the target area C6, a multiplication value is calculated by multiplying data obtained by adding two points of output data X (2n + 2) and X (2n + 4) by a lifting coefficient -α, and then the multiplication value and the intermediate data D are calculated.Two n + 1Are added to perform a three-point operation. As a result, output data X (2n + 3) on the series starting from the odd-numbered input data Y (2n + 3) is calculated.
[0138]
Next, conversion processing of the target areas C7 and C8 in the N + 3rd processing (FIG. 19) is executed. Further, the normalization processing of the target area N4 is performed in a cycle one clock before the execution of the arithmetic processing in the target areas C7 and C8. Here, the target areas C7, C8, and N4 are areas obtained by moving the target areas C3, C4, and N2 of the (N + 1) -th processing (FIG. 17) two series (two points) backward. In these target areas C7, C8, and N4, processing similar to the processing in the target areas C3, C4, and N2 is performed. Therefore, in the target area N4, the normalization process of multiplying the input data Y (2N + 11) by the normalization coefficient 1 / κ is executed, and the intermediate data D1 n + 5Is calculated. In the target area C7, the intermediate data D of the two odd-numbered points1 n + 4, D1 n + 5Is multiplied by a lifting coefficient −δ to calculate a multiplied value, and the multiplied value and the even-numbered intermediate data S1 n + 5Are added to perform a three-point operation. As a result, the second-stage intermediate data S on the series starting from the even-numbered input data X (2n + 10)Two n + 5Is calculated. In the target area C8, two intermediate data DTwo n +2, DTwo n + 3Is multiplied by the lifting coefficient −β to calculate a multiplication value, and the multiplication value and the intermediate data STwo n + 3Are added to perform a three-point operation. As a result, output data X (2n + 6) on the series starting from the even-numbered input data Y (2n + 6) is calculated.
[0139]
As described above, processes similar to the N-th process (FIG. 16) and the (N + 1) -th process (FIG. 17) are repeatedly executed while moving the target area until output data of all points is calculated. As a result, the average cycle required to calculate the output data of the even-numbered or odd-numbered one point can be set to one clock cycle, and the calculation cycle of the output data can be greatly reduced.
[0140]
Next, a line-based two-dimensional inverse DWT process using the wavelet transform device 30 will be described below.
[0141]
The subbands (band components) input to the horizontal filtering unit 33A are the subbands 23LL and 23HL, or the subbands 23LH and 23HH, as shown in FIG.
[0142]
.., Y (n−1), Y (n), Y (n + 1),... Shown in FIG. 16 to FIG. 19 are arranged alternately with horizontal data of subbands 23LL and 23HL. Or the data in which the horizontal data of the subbands 23LH and 23HH are alternately arranged. Then, the sub-band 23L is output by subjecting the input data composed of the sub-bands 23LL and 23HL to horizontal filtering, and the sub-band 23L is outputted by performing the horizontal filtering on the input data composed of the sub-bands 23LH and 23HH. 23H is output. .., X (n−1), X (n), X (n + 1),... Shown in FIGS. 16 to 19 are the horizontal lines of the subband 23L or 23H. The data string is shown.
[0143]
Next, the sub-bands input by the vertical filtering unit 33B are the sub-band 23L and the sub-band 23H, as shown in FIG. In this case, the input data ..., Y (n-1), Y (n), Y (n + 1), ... shown in Figs. 16 to 19 are the vertical directions of the sub-bands 23L and 23H. This is data in which data is alternately arranged. Then, image data 23 is output by subjecting the input data composed of the subbands 23L and 23H to vertical filtering. , X (n−1), X (n), X (n + 1),... Shown in FIG. 16 to FIG. 19 indicate a data line of one line in the vertical direction of the image data 23. ing. The image data 23 is rectangular data having the number of horizontal pixels W and the number of vertical pixels H.
[0144]
The subbands 23LL, 23HL, 23LH, and 23HH are rectangular data having the number of vertical pixels H / 2 and the number of horizontal pixels W / 2, and as schematically shown in FIG. Data rows vertically arranged as a set of the band 23LL and the sub-band 23HL of the even-numbered row and the odd-numbered column, or a set of the sub-band 23LH of the odd-numbered row and the even-numbered column and the sub-band 23HH of the odd-numbered row and the odd-numbered columni(2n), Yi(2n + 1), Yi(2n + 2)... Are input to the horizontal filtering unit 33. In other words, each pixel row (data row in the horizontal direction in the drawing) in the storage area 58L is a data row in which pixels on each horizontal line of the subbands 23LL and 23HL are alternately arranged, and each pixel input to the storage area 58H. Rows (horizontal data columns in the figure) are data columns in which pixels on each horizontal line of the subbands 23LH and 23HH are alternately arranged. Input data YiThe subscript i in (k) indicates the input data YiLet (k) indicate the number of the pixel column to which it belongs. The pixel column number i is i = 0, 1,. .., W-1 (W: number of horizontal pixels). In the figure, a storage area 58L of an even-numbered row with one set of sub-bands 23LL and 23HL and a storage area 58H of an odd-numbered row with one set of sub-bands 23LH and 23HH are divided into two areas. The memory-like data arrangement is not limited to this.
[0145]
Specifically, the first ring memory 32A and the horizontal filtering unit 33A perform each processing including the N-th processing (FIG. 16) to the (N + 2) -th processing (FIG. 17) on the low frequency side (the storage area 58L side). And the high frequency side (storage area 58H side) is alternately switched, and the processing is repeated for each pixel.
[0146]
For example, after the N-th process (FIG. 16) is performed once for the first pixel row on the memory area 58L side, the N + 1-th process (FIG. 17) is performed once, and further, the N + 2 The first processing (FIG. 18) is executed once, and processing such as... Is performed. Similarly, the processing is performed on the first pixel row on the storage area 58H side, and then performed on the second pixel row on the storage area 58L side, and then executed on the second pixel row on the storage area 58H side. , And then executed on the third pixel row on the storage area 58L side, then executed on the third pixel row on the storage area 58H side,. Is performed on the H / 2-th pixel row on the storage area 58L side, and then on the H / 2-th pixel row on the storage area 58H side.
[0147]
Note that, as schematically shown in FIG. 21, the first ring memory 32A stores input data.j(K), Xj + 1(K), has a storage area 59 for holding data of nine points (9 pixels) corresponding to the temporary data and the intermediate data.
[0148]
As a result, the horizontal filtering unit 33A outputs the output of each horizontal line unit (H / 2 height) of the subband 23L in which the subbands 23LL and 23HL are synthesized, and the subband in which the subbands 23LH and 23HH are synthesized. The output of each band (H / 2 height) of the band 23H is output alternately and continuously.
[0149]
Then, data in which the horizontal lines of the sub-band 23L and the horizontal lines of the sub-band 23H are alternately arranged is output as it is to the second ring memory 32B as vertical line data, and is processed by the vertical filtering unit 33B.
[0150]
Specifically, the second ring memory 32B and the vertical filtering unit 33B repeatedly execute the processing for each pixel row including the N-th processing (FIG. 16) to the (N + 1) -th processing (FIG. 17) in units of horizontal lines. For example, after the N-th process (FIG. 16) is performed on the 0th pixel column, it is performed on the first pixel column, then on the second pixel column, ... Finally, the processing is performed on the (W-1) -th pixel column. Next, after the above-described N + 1-th process (FIG. 7) is performed on the 0th pixel column, it is performed on the first pixel column, and further on the second pixel column. ... Finally, the processing is performed on the (W-1) -th pixel column. In this way, the processing of each time is sequentially executed for all the pixel columns. As schematically shown in FIG. 20, the second ring memory 32B has a storage area 58 for holding data of 9 × W points (9 lines) corresponding to the input data string, And intermediate data.
[0151]
As a result, the vertical filtering unit 33B outputs the image data 23 from the data line input in units of horizontal lines.
[0152]
By performing the above processing recursively, it is possible to combine band components of decomposition levels of any order and restore image data. That is, the subbands LL (k + 1), HL (k + 1), LH (k + 1), and HH (k + 1) at the (k + 1) -th order (k is an integer) decomposition level are recursively input to the wavelet transform device 1 so that k It is possible to obtain the next subband LL (k).
[0153]
As described above, since the wavelet transform device 1 according to the present embodiment includes the horizontal filtering unit 33A and the vertical filtering unit 33B having the configuration illustrated in FIG. 15, the calculation cycle of the output data can be shortened. Therefore, it is possible to perform the line-based two-dimensional wavelet transform in a short time and at a high speed.
[0154]
In the second embodiment, a buffer for storing the output of the horizontal filtering unit 33A, which is required in the first embodiment, is unnecessary. In the first embodiment, the horizontal filtering unit 4A outputs one pixel in four clocks, and the vertical filtering unit 4B inputs one pixel in four clocks. However, the horizontal filtering unit 4A performs the N + 6th processing (see FIG. 9) and the (N + 7) th processing (FIG. 10), the vertical lines are continuously output. On the other hand, the vertical filtering unit 4B inputs the vertical lines in the Nth processing (FIG. 3) and then performs the (N + 4) th processing. Until (FIG. 7), no vertical line is input. This required a buffer. On the other hand, in the second embodiment, the horizontal filtering unit 33A outputs a vertical line in each processing, and the vertical filtering 33B inputs a vertical line in each processing, so that a buffer is not required.
[0155]
<Third embodiment>
Next, a wavelet transform device and a wavelet transform method according to a third embodiment of the present invention will be described. The wavelet transform device according to the present embodiment has the same configuration as that of the wavelet transform device 30 (FIG. 14) according to the second embodiment, except for the horizontal filtering unit and the vertical filtering unit. However, in the second embodiment, the first and second ring memories 32A and 32B are ring memories of nine points and nine lines, respectively. However, in this embodiment, the first and second ring memories 32A and 32B are provided. , 32B are ring memories of 8 points and 8 lines, respectively.
[0156]
FIG. 22 is a diagram illustrating a schematic configuration of a filtering unit 33s according to the third embodiment. The filtering unit 33s indicates a horizontal filtering unit or a vertical filtering unit, and the ring memory 32s indicates one of the first ring memory 32A and the second ring memory 32B shown in FIG.
[0157]
The filtering unit 33 s includes first and second data selectors 60 and 65, a delay register 64, and first to fifth coefficient multipliers 61, 66, 71, 76, 81 that selectively take in input data from the ring memory 32 s. , Adders 70, 75, 80, 85, an output destination selection unit (DMUX) 86, and a control unit 87. Among these components, the pair of the second coefficient multiplier 66 and the adder 70 constitutes a two-point operation unit that processes two-point data by the method of the step a or the step b (FIG. 38). In addition, a set of the third coefficient multiplier 71 and the adder 75, a set of the fourth coefficient multiplier 76 and the adder 80, and a set of the fifth coefficient multiplier 81 and the adder 85 also constitute a two-point operation unit. are doing. The two-point calculation unit and the output destination selection unit 86 constitute an intermediate data calculation unit.
[0158]
The control unit 87 operates in synchronization with the pixel clock signal PCLK. The first data selector 60 selectively selects the data fetched from the ring memory 32s from any of the first terminal S0 to the eighth terminal S7 according to the value of the selection control signal SEL0 supplied from the control unit 87. Output.
[0159]
The data output from the first terminal S0 of the first data selector 60 is input to the first coefficient multiplier 61. The first coefficient multiplier 61 outputs one of the normalization coefficients κ and 1 / κ to the multiplier 63 in accordance with the value of the control signal C0 supplied from the control unit 87. Multiply the data by its normalization factor. Output data from the multiplier 63 is input to the delay register 64. The normalization process in the first coefficient multiplier 61 is executed within one clock cycle. Note that the first coefficient multiplier 61 and the delay register 64 constitute a normalizing means. The output of the delay register 64 is input to the second data selector 65, and is branched and input to the MMU 31.
[0160]
The second data selector 65 outputs the data fetched from the delay register 64 and the first data selector 60 to the first terminal S0 to the eighth terminal S7 according to the value of the selection control signal SEL1 supplied from the control unit 87. Selectively output from either. The second to fifth coefficient multipliers 66, 71, 76, 81 are circuits for multiplying input data by lifting coefficients -α, -β, -γ, -δ according to the control signals C1 to C4, respectively. Coefficient registers 67, 72, 77, and 82 receive control signals C1 to C4 and output lifting coefficients α, β, γ, and δ to multipliers 68, 73, 78, and 83, respectively. The multipliers 68, 73, 78, and 83 multiply data input from the output terminals S0, S2, S4, and S6 of the second data selector 65 by lifting coefficients α, β, γ, and δ, respectively, and output the result. Two's complement arithmetic circuits 69, 74, 79 and 84 invert the signs of the output data from multipliers 68, 73, 78 and 83, respectively. The adders 70, 75, 80, and 85 respectively include the data input from the second to fifth coefficient multipliers 66, 71, 76, and 81 and the output terminals S1, S3, S5, and S7 of the second data selector 65. And outputs the result to the output destination selection unit 86.
[0161]
The output destination selection unit 86 outputs the data of four points input in parallel from the adders 70, 75, 80, and 85 in accordance with the value of the selection control signal SEL2 supplied from the control unit 87, to the first terminals K0 to K5. Output from terminal K4. Data output from the first terminal K0 and the second terminal K1 is output to the outside as synthesized data. The data branched from the second terminal K1 and the data output from the third terminal K2 to the fifth terminal K4 are input to the MMU 31. The MMU 31 can transfer the data output from the second terminal K1 to the fifth terminal K4 to the MMU 31 to the ring memory 32s and store the data.
[0162]
Next, a representative example of the lifting operation using the filtering unit 33s illustrated in FIG. 22 will be described below with reference to FIGS. The calculation of this grid diagram is performed in the same manner as in the case of FIG. 23 to 25, lifting coefficients −α, −β, −γ, −δ and normalization coefficients κ, 1 / κ corresponding to the line segments connecting the respective grid points are displayed for convenience of description. Not.
[0163]
FIG. 23 is a lattice diagram at the time when the N-th processing (N: integer) is completed, and FIGS. 24 and 25 schematically show the N + 1-th processing and the N + 2-th processing, respectively. In the N-th process (FIG. 23), four conversion processes of the target areas A1, A2, B1, and B2 are simultaneously executed in parallel within one clock cycle. In the target area A1, two intermediate data D1 n + 2, STwo n + 2Is performed, and the second-stage temporary data (D) in the series starting from the odd-numbered input data Y (2n + 5)Two n + 2) Is calculated. Here, the intermediate data STwo n + 2Is the intermediate data D1 n + 2Is the data on the series one point before the series. In the target area A2, two points of data DTwo n, X (2n) to calculate the temporary output data (X (2n + 1)) on the series starting from the odd-numbered input data Y (2n + 1). In the target area B1, the temporary data (STwo n + 3) And the intermediate data D calculated by the arithmetic operation one clock cycle earlier1 n + 3And the two-point calculation of the above step b (FIG. 38) is performed, and the second-stage intermediate data S on the series starting from the even-numbered input data Y (2n + 6)Two n + 3Is calculated. Here, the intermediate data D1 n + 3Is the temporary data (STwo n + 3) Is data on the series one point after the series. In the target area B2, the output temporary data (X (2n + 2)) and the intermediate data DTwo n + 1Is performed, the output data X (2n + 2) on the series starting from the even-numbered input data Y (2n + 2) is calculated.
[0164]
Further, the normalization processing of the target area N1 is performed in a cycle one clock before the parallel processing in the target areas A1, A2, B1, and B2. In the target area N1, a normalization process of multiplying the input data Y (2n + 7) by a normalization coefficient 1 / κ is executed.
[0165]
The contents of the N-th specific processing are as follows. The ring memory 32s has a storage area of 8 lines (series).
In the N-th processing, the arithmetic processing in the target areas A1, A2, B1, and B2 is performed within one clock cycle, but the arithmetic processing in the target area N1 is performed one clock cycle before this arithmetic processing. The processing in the cycle one clock before will be described. The MMU 31 outputs the input data Y (2n + 7) temporarily stored in the ring memory 32s to the first data selector 60. The first data selector 60 outputs the input data Y (2n + 7) from the first terminal S0 according to the value of the selection control signal SEL0 from the control unit 87.
[0166]
The input data Y (2n + 7) output from the first terminal S0 is input to the first coefficient multiplier 61. In the first coefficient multiplier 61, the coefficient register 62 outputs the normalized coefficient 1 / κ of the two normalized coefficients κ and 1 / κ to the multiplier 63 according to the control signal C0 supplied from the control unit 87. Then, the multiplier 63 multiplies the input data Y (2n + 7) by a normalization coefficient 1 / κ. As a result, the first coefficient multiplier 61 outputs the data D1 n + 3(= (1 / κ) × Y (2n + 7)) is calculated. The output of the multiplier 63 is input to the delay register 64. The above processing is executed in a cycle one clock before the arithmetic processing in the target areas A1, A2, B1, B2 is performed.
[0167]
In the next clock cycle, the MMU 31 transmits the seven data points X (2n), D temporarily stored in the ring memory 32s.Two n, (X (2n + 2)), DTwo n + 1, STwo n + 2, D1 n + 2, (STwo n + 3) Is output to the first data selector 60. The first data selector 60 outputs the data of the seven points to the second data selector 65 according to the value of the selection control signal SEL0 supplied from the control unit 87. The data D stored in the delay register 641 n + 3Is output to the second data selector 65. The intermediate data D output from the delay register 641 n + 3Is also branched and output to the external MMU 31, and the MMU 311 n + 3Is transferred to the ring memory 32s, and is overwritten with the storage area input data Y (2n + 7) which has been referred to.
[0168]
The second data selector 65 outputs two output data X (2n), D in the target area A2 among the eight data in accordance with the value of the selection control signal SEL1 supplied from the control unit 87.Two nAnd outputs it to the first terminal S0 and the second terminal S1, and outputs the intermediate data D in the target area B2.Two n + 1And the temporary data (X (2n + 2)) are output from the third terminal S2 and the fourth terminal S3, and the intermediate data S in the target area A1 is output.Two n + 2And D1 n + 2Are output from the fifth terminal S4 and the sixth terminal S5, and the intermediate data D in the target area B1 is output.1 n + 3And temporary data (STwo n + 3) Are output from the seventh terminal S6 and the eighth terminal S7.
[0169]
In the second coefficient multiplier 66, the coefficient register 67 outputs the lifting coefficient α to the multiplier 68 according to the control signal C1 supplied from the control unit 87, and the multiplier 68 outputs the data input from the first terminal S0. The data α × X (2n) obtained by multiplying X (2n) by the lifting coefficient α is output. The sign of the output data from the multiplier 68 is inverted in the two's complement arithmetic circuit 69 and output to the adder 70. The adder 70 outputs the data −α × X (2n) output from the second coefficient multiplier 66 and the data D input from the second terminal S 1 of the second data selector 65.Two nIs added to calculate temporary data (X (2n + 1)) in the target area A2, and output to the output destination selection unit 86.
[0170]
Further, in the third coefficient multiplier 71, the coefficient register 72 outputs the lifting coefficient β to the multiplier 73 according to the control signal C2 supplied from the control unit 87, and the multiplier 73 receives the input from the third terminal S2. Intermediate data DTwo n + 1Β × D obtained by multiplying by the lifting coefficient βTwo n + 1Is output. The output of the multiplier 73 is output to the adder 75 after the sign is inverted in the two's complement arithmetic circuit 74. The adder 75 calculates the data −β × D output from the third coefficient multiplier 71.Two n + 1And output temporary data (X (2n + 2)) input from the fourth terminal S3 of the second data selector 65 to calculate output data X (2n + 2) in the target area B2, and select an output destination. Output to the unit 86.
[0171]
In the fourth coefficient multiplier 76, the coefficient register 77 outputs the lifting coefficient γ to the multiplier 78 according to the control signal C3 supplied from the control unit 87, and the multiplier 78 receives the input from the fifth terminal S4. Intermediate data STwo n + 2Γ × S obtained by multiplying by the lifting coefficient γTwo n + 2Is output. The output of the multiplier 78 is output to the adder 80 after the sign is inverted in the two's complement arithmetic circuit 79. The adder 80 outputs the data −γ × S output from the fourth coefficient multiplier 76.Two n + 2And data D input from the sixth terminal S5 of the second data selector 65.1 n + 2Is added to the temporary data (D) in the target area A1.Two n + 2) Is calculated and output to the output destination selection unit 86.
[0172]
In the fifth coefficient multiplier 81, the coefficient register 82 outputs the lifting coefficient δ to the multiplier 83 according to the control signal C4 supplied from the control unit 87, and the multiplier 83 receives the input from the seventh terminal S6. Intermediate data D1 n + 3Δ × D obtained by multiplying by the lifting coefficient δ1 n + 3Is output. The output of the multiplier 83 is output to the adder 85 after the sign is inverted in the two's complement arithmetic circuit 84. The adder 85 outputs the data −δ × D output from the fifth coefficient multiplier 81.1 n + 3And the temporary data (S) input from the eighth terminal S7 of the second data selector 65.Two n + 3) Is added to the intermediate data S of the second stage in the target area B1.Two n + 3Is calculated and output to the output destination selection unit 86.
[0173]
The output destination selection unit 86 outputs the output data X (2n + 2) input from the adder 75 to the outside from the second terminal K1, according to the value of the selection control signal SEL2 supplied from the control unit 87. The output data X (2n + 2) is also output to the MMU 31. Further, the output destination selecting unit 86 outputs the three data points (X (2n + 1)) and (D (D)) input from the adders 70, 80, and 85 according to the selection control signal SEL2.Two n + 2), STwo n + 3From the third terminal K2 to the fifth terminal K4 to the MMU 31. The MMU 31 outputs four points of data (X (2n + 1)), X (2n + 2), (DTwo n + 2), STwo n + 3Is transferred to the ring memory 32s, and the MMU 31 outputs the data (X (2n + 1)), X (2n + 2), (DTwo n + 2), STwo n + 3Is transferred to the ring memory 32s, and the referenced storage area DTwo n, (X (2n + 2)), D1 n + 2, (STwo n + 3).
[0174]
Next, the conversion processing in the target areas A3, A4, B3, and B4 in the (N + 1) th processing (FIG. 24) is simultaneously executed in parallel. In the target area A3, the intermediate data S calculated by the arithmetic processing one clock cycle earlier is used.1 n + 4And intermediate data D1 n + 3, The two-point calculation of the above step a (FIG. 38) is performed, and the second-stage temporary data (S) on the series starting from the even-numbered input data Y (2n + 8)Two n + 4) Is calculated. Here, the intermediate data D1 n + 3Is the intermediate data S1 n + 4Is the data on the series one point before the series. In the target area A4, two points of data STwo n + 2, DTwo n + 1Is performed, and the output temporary data (X (2n + 4)) on the series starting from the even-numbered input data Y (2n + 4) is calculated. In the target area B3, the temporary data (DTwo n + 2) And intermediate data STwo n + 3And the second point intermediate data D in the series starting from the odd-numbered input data Y (2n + 5) by executing the two-point operation of step b (FIG. 38)Two n + 2Is calculated. Here, the intermediate data STwo n + 3Is the temporary data (DTwo n + 2) Is data on the series one point after the series. Further, in the target area B4, the two-point operation of the above step b using the output temporary data (X (2n + 1)) and the output data X (2n + 2) is executed, and the odd-numbered input data Y (2n + 1) is set as the starting point. Output data X (2n + 1) on a series to be calculated.
[0175]
Further, the normalization process of the target area N2 is performed in a cycle one clock before the parallel processing in the target areas A3, A4, B3, and B4. In the target area N2, a normalization process of multiplying the input data Y (2n + 8) by a normalization coefficient κ is executed.
[0176]
Next, the contents of the (N + 1) -th specific processing are as follows. The processing will be described from the processing in the target area N2 of the cycle one clock before. The MMU 31 outputs the input data Y (2n + 8) temporarily stored in the ring memory 32s to the first data selector 60. The first data selector 60 outputs the input data Y (2n + 8) from the first terminal S0 according to the value of the selection control signal SEL0 from the control unit 87.
[0177]
The input data Y (2n + 8) output from the first terminal S0 is input to the first coefficient multiplier 61. In the first coefficient multiplier 61, the coefficient register 62 outputs the normalized coefficient κ of the two normalized coefficients κ and 1 / κ to the multiplier 63 according to the control signal C0 supplied from the control unit 87, The multiplier 63 multiplies the input data Y (2n + 8) by a normalization coefficient κ. As a result, the first coefficient multiplier 61 outputs the data S1 n + 4(= Κ × Y (2n + 8)) is calculated. The output of the multiplier 63 is input to the delay register 64. The above processing is executed in a cycle one clock before the arithmetic processing in the target areas A1, A2, B1, B2 is performed.
[0178]
In the next clock cycle, the MMU 31 stores the data of seven points (X (2n + 1)), X (2n + 2), D temporarily stored in the ring memory 32s.Two n + 1, STwo n + 2, (DTwo n + 2), STwo n + 3, D1 n + 3To the first data selector 60. The first data selector 60 outputs the data of the seven points to the second data selector 65 according to the value of the selection control signal SEL0 supplied from the control unit 87. Further, the intermediate data S stored in the delay register 641 n + 4Is output to the second data selector 65. The intermediate data S output from the delay register 641 n + 4Is also branched and output to the external MMU 31, and the MMU 311 n + 4Is transferred to the ring memory 32s to overwrite the storage area input data Y (2n + 8) which has been referred to.
[0179]
The second data selector 65 outputs the input data X (2n + 2) and (X (2n + 1) of two points in the target area B4 among the eight points of data in accordance with the value of the selection control signal SEL1 supplied from the control unit 87. )) To output to the first terminal S0 and the second terminal S1, and to output the intermediate data D in the target area A4.Two n + 1, STwo n + 2Are output from the third terminal S2 and the fourth terminal S3, and the intermediate data S in the target area B3 is output.Two n + 3And temporary data (DTwo n + 2) Is output from the fifth terminal S4 and the sixth terminal S5, and the intermediate data D in the target area A3 is output.1 n + 3And S1 n + 4Are output from the seventh terminal S6 and the eighth terminal S7.
[0180]
In the second coefficient multiplier 66, the coefficient register 67 outputs the lifting coefficient α to the multiplier 66 in accordance with the control signal C1 supplied from the control unit 87, and the multiplier 68 outputs the data input from the first terminal S0. The data α × X (2n + 2) obtained by multiplying X (2n + 2) by the lifting coefficient α is output. The sign of the output data from the multiplier 68 is inverted in the two's complement arithmetic circuit 69 and output to the adder 70. The adder 70 combines the data −α × X (2n + 2) output from the second coefficient multiplier 66 with the temporary data (X (2n + 1)) input from the second terminal S1 of the second data selector 65. The output data X (2n + 1) in the target area B4 is calculated by the addition, and output to the output destination selection unit 86.
[0181]
Further, in the third coefficient multiplier 71, the coefficient register 72 outputs the lifting coefficient β to the multiplier 73 according to the control signal C2 supplied from the control unit 87, and the multiplier 73 receives the input from the third terminal S2. Intermediate data DTwo n + 1Β × D obtained by multiplying by the lifting coefficient βTwo n + 1Is output. The output of the multiplier 73 is output to the adder 75 after the sign is inverted in the two's complement arithmetic circuit 74. The adder 75 calculates the data −β × D output from the third coefficient multiplier 71.Two n + 1And intermediate data S input from the fourth terminal S3 of the second data selector 65.Two n + 2Is calculated, the output temporary data (X (2n + 4)) in the target area A4 is calculated and output to the output destination selection unit 86.
[0182]
In the fourth coefficient multiplier 76, the coefficient register 77 outputs the lifting coefficient γ to the multiplier 78 according to the control signal C3 supplied from the control unit 87, and the multiplier 78 receives the input from the fifth terminal S4. Intermediate data STwo n + 3Γ × S obtained by multiplying by the lifting coefficient γTwo n + 3Is output. The output of the multiplier 78 is output to the adder 80 after the sign is inverted in the two's complement arithmetic circuit 79. The adder 80 outputs the data −γ × S output from the fourth coefficient multiplier 76.Two n + 3And the temporary data (D) input from the sixth terminal S5 of the second data selector 65.Two n + 2) Is added to the intermediate data D in the target area B3.Two n + 2Is calculated and output to the output destination selection unit 86.
[0183]
In the fifth coefficient multiplier 81, the coefficient register 82 outputs the lifting coefficient δ to the multiplier 83 according to the control signal C4 supplied from the control unit 87, and the multiplier 83 receives the input from the seventh terminal S6. Intermediate data D1 n + 3Δ × D obtained by multiplying by the lifting coefficient δ1 n + 3Is output. The output of the multiplier 83 is output to the adder 85 after the sign is inverted in the two's complement arithmetic circuit 84. The adder 85 outputs the data −δ × D output from the fifth coefficient multiplier 81.1 n + 3And intermediate data S input from the eighth terminal S7 of the second data selector 65.1 n + 4Is added to the intermediate data S in the second stage in the target area A3.Two n + 4Is calculated and output to the output destination selection unit 86.
[0184]
The output destination selection unit 86 outputs the output data X (2n + 1) input from the adder 70 to the outside from the first terminal K0 according to the value of the selection control signal SEL2 supplied from the control unit 87. Further, the output destination selecting section 86 outputs the three data points (X (2n + 4)), D input from the adders 75, 80, 85 according to the selection control signal SEL2.Two n + 2, (STwo n + 4) Is output to the MMU 31 from the third terminal K2 to the fifth terminal K4. The MMU 31 outputs three points of data (X (2n + 4)), DTwo n + 2, (STwo n + 4) To the ring memory 32s, and the MMU 31 transmits the data (X (2n + 4)) and D at the three points.Two n + 2, (STwo n + 4) Is transferred to the ring memory 32s, and the storage area STwo n + 2, (DTwo n + 2), S1 n + 4Overwrite.
[0185]
Next, four conversion processes of the target areas A5, A6, B5, and B6 in the (N + 2) th process (FIG. 25) are simultaneously executed in parallel within one clock cycle. Further, the normalization processing of the target area N3 is performed in a cycle one clock before the parallel processing in the target areas A5, A6, B5, and B6.
[0186]
The target areas A6, B6, A5, B5, and N3 are areas obtained by moving the target areas A2, B2, A1, B1, and N1 of the N-th processing (FIG. 23) two series (two points) backward. In the target areas A6, B6, A5, B5, and N3, the same processing as that in the target areas A2, B2, A1, B1, and N1 is performed. As a result, the temporary data (X (2n + 3)) in the target area A6, the output data X (2n + 4) in the target area B6, and the temporary data (DTwo n + 3), But in the target area B5, the intermediate data STwo n + 4However, in the target area N3, the intermediate data D1 n + 4Are calculated respectively.
[0187]
Next, in the (N + 3) th processing (not shown), in the area in which the target areas B4, A4, B3, A3, and N2 of the (N + 1) th processing (FIG. 24) are moved backward by two series (two points), the (N + 1) th processing is performed. The same processing as the processing is performed.
[0188]
As described above, processes similar to the N-th process (FIG. 23) and the (N + 1) -th process (FIG. 24) are repeatedly executed while moving the target area until all output data is calculated. As a result, the average cycle required to calculate the output data of the even-numbered or odd-numbered one point can be set to one clock cycle, and the calculation cycle of the output data can be greatly reduced.
[0189]
Since the wavelet transform device according to the present embodiment includes the horizontal filtering unit and the vertical filtering unit having the configuration shown in FIG. 22, it performs the same line-based two-dimensional inverse DWT processing as in the second embodiment. It is possible. Therefore, it is possible to perform the wavelet transform in a very short time and at a high speed.
[0190]
Also in the third embodiment, as described in the second embodiment, the horizontal filtering unit 33s outputs a horizontal line in each processing, and the vertical filtering 33s inputs a pixel row in each processing. Unlike the wavelet transform device 1 according to the first embodiment, the line buffer circuit 5 is not required. Therefore, it is possible to realize an inexpensive wavelet transform device that operates on a small circuit and with low power consumption.
[0191]
<Modification>
FIG. 26 is a diagram illustrating a schematic configuration of a two-dimensional wavelet transform device 30a according to a modification of the second and third embodiments. The wavelet transform device 30a includes a buffer 88 for temporarily storing the two-dimensional image data of the subband, an MMU (memory management unit) 89 operating in synchronization with an externally supplied clock signal CLK, a first ring memory 32 or 32s. , A horizontal filtering unit 33 or 33 s, a second ring memory 3, and a vertical filtering unit 4.
[0192]
Here, the second ring memory 3 and the vertical filtering unit 4 have the same configuration as the ring memory 3 and the filtering unit 4 according to the first embodiment. Therefore, the second ring memory 3B and the vertical filtering unit 4B of this modification can calculate one line of output data at a cycle of four lines.
[0193]
Further, the first ring memory 32 or 32 s and the horizontal filtering unit 33 or 33 s are the same as the ring memory 32 and the filtering unit 33 according to the second embodiment or the ring memory 32 s according to the third embodiment. It has the same configuration as the part 33s. Therefore, the first ring memory 32 or 32 s and the horizontal filtering unit 33 or 33 s of this modification can calculate one point of output data in one clock cycle.
[0194]
Therefore, in this modification, the horizontal filtering unit 33 or 33 s performs processing so as to fetch input data from the first ring memory 32 at intervals of four clock cycles. This eliminates the need for the line buffer circuit 5 unlike the wavelet transform device 1 (FIG. 1) according to the first embodiment. Therefore, it is possible to realize a low-cost, small-circuit-scale, and low-cost wavelet transform device.
[0195]
In this modification, the second ring memory 3B and the vertical filtering unit 4B according to the first embodiment are employed as the second ring memory and the vertical filtering unit. Instead, the second ring memory and the vertical filtering unit are used. As described in the related art, a configuration in which one point of output data is calculated at an average of five clock cycles may be adopted. In this case, the horizontal filtering unit 33 or 33s performs processing so as to fetch input data from the first ring memory 32 at a 5-line cycle interval. Thus, a configuration that does not require the line buffer circuit 5 can be achieved.
[0196]
<Fourth embodiment>
Next, a wavelet transform device and a wavelet transform method according to a fourth embodiment of the present invention will be described. FIG. 27 is a diagram illustrating a schematic configuration of a wavelet transform device 90 according to the fourth embodiment. The wavelet transform device 90 includes a buffer 91 for temporarily storing the two-dimensional image data of the subband, an MMU (memory management unit) 92 operating in synchronization with an externally supplied clock signal CLK, a first ring memory 32H, It comprises one horizontal filtering section 33H, a second ring memory 32L, a second horizontal filtering section 33L, a third ring memory 93, and a vertical filtering section 94. Here, the first ring memory 32H, the first horizontal filtering unit 33H, the second ring memory 32L, the second horizontal filtering unit 33L, the third ring memory 93, and the vertical filtering unit 94 are synchronized with the externally supplied pixel clock signal PCLK. Work.
[0197]
In the present embodiment, the MMU 92, the first horizontal filtering unit 33H, the second horizontal filtering unit 33L, and the vertical filtering unit 94 are configured by hardware, but instead of a computer including an instruction group to be executed by a microprocessor. It may be constituted by a program.
[0198]
The wavelet transform device 90 has a function of applying a line-based two-dimensional inverse DWT to two-dimensional image data once. The first and second horizontal filtering units 33H and 33L and the vertical filtering unit 94 are connected via a third ring memory 93, respectively.
[0199]
The MMU 92 has a function of controlling data input / output of the buffer 91, the first ring memory 32H, the second ring memory 32L, and the third ring memory 93, and stores the two-dimensional image data of the sub-band read from the buffer 91. The data can be transferred to and stored in the first ring memory 32H and the second ring memory 32L.
[0200]
Here, the data 23LL, 23HL, 23LH, and 23HH of the four sub-bands shown in FIG. 11 are input to the buffer 91, and the horizontal pixels of the sub-bands 23LH and 23HH are alternately input to the first ring memory 32H. Is input to the second ring memory 32L. The horizontal width W and the vertical width of the sub-bands 23LL and 23HL are alternately arranged in the second ring memory 32L. Image data of height H / 2 is input.
[0201]
The first horizontal filtering unit 33H performs filtering on the data input from the first ring memory 32H in the horizontal direction of the two-dimensional image, so that the sub-bands 23LH and 23HH are generated in one clock cycle of the pixel clock signal PCLK. Can be calculated one point at a time. The image data Y of the sub-band 23H calculated in this mannerH(M) is transferred to the third ring memory 93.
[0202]
The second horizontal filtering unit 33L performs filtering on the data input from the second ring memory 32L in the horizontal direction of the two-dimensional image, so that the sub-bands 23LL and 23HL are generated in one clock cycle of the pixel clock signal PCLK. Can be calculated one point at a time. The image data Y of the sub-band 23L calculated in this mannerL(M) is transferred to the third ring memory 93.
[0203]
The first horizontal filtering unit 33H and the second horizontal filtering unit 33L may have the same configuration as the filtering unit 33 or 33s according to the second or third embodiment.
[0204]
On the other hand, the vertical filtering unit 94 outputs the image data Y of the subbands 23L and 23H from the third ring memory 93.L(M) and YH(M), and the image data YL(M) and YHBy performing filtering in the horizontal direction for each pixel column with respect to the data in which the vertical lines of (m) are alternately arranged, the data of the vertical lines of the image data 23 can be converted in one clock cycle of the pixel clock signal PCLK. Two points can be calculated in the horizontal direction.
[0205]
FIG. 28 shows a schematic configuration of the vertical filtering unit 94 according to the present embodiment. The vertical filtering unit 94 includes a first data selector 95 for selectively taking in input data, first and second coefficient multipliers 96 and 100, delay registers 99 and 103, a second data selector 104, and four preceding stages. Adders 105, 111, 117, 123, third to sixth coefficient multipliers 106, 112, 118, 124, four subsequent adders 110, 116, 122, 128, an output destination selection unit (DMUX) 129, and The control unit 130 is provided. Among these constituent elements, a set composed of two adders 105 and 110 and a third coefficient multiplier 106 constitutes a three-point operation unit for processing three-point data within one clock cycle. Also, a set including two adders 111 and 116 and a fourth coefficient multiplier 112, a set including two adders 117 and 122 and a fifth coefficient multiplier 118, and two adders 123 and 128 Each set of the sixth coefficient multipliers 124 also constitutes a three-point operation unit for processing three-point data within one clock cycle. The four sets of three-point calculation units and the output destination selection unit 129 constitute an intermediate data calculation unit.
[0206]
The control unit 130 operates in synchronization with the pixel clock signal PCLK. The first data selector 95 outputs the data (Y) fetched from the third ring memory 93 according to the value of the selection control signal SEL0 supplied from the control unit 130.L(M) and YH(M) in which the vertical lines are alternately arranged) are selectively output from any of the first terminal S0 to the twelfth terminal S11.
[0207]
The data output from the first terminal S0 or the second terminal S1 of the first data selector 95 is input to the first coefficient multiplier 96 and the second coefficient multiplier 100. In the first coefficient multiplier 96, the coefficient register 97 outputs the normalized coefficient κ to the multiplier 98 according to the control signal C0 supplied from the control unit 130, and the multiplier 98 outputs the normalized coefficient to the input data. κ and outputs the multiplied output to the delay register 99. In the second coefficient multiplier 100, the coefficient register 101 outputs the normalized coefficient 1 / κ to the multiplier 102 according to the control signal C1 supplied from the control unit 130, and the multiplier 102 Is multiplied by a normalization coefficient 1 / κ, and the multiplied output is output to the delay register 103. Note that a set of the first coefficient multiplier 96 and the delay register 99 and a set of the second coefficient multiplier 101 and the delay register 103 constitute the standardization means of the present invention.
[0208]
The data input to the delay registers 99 and 103 are output to the second data selector 104 after being delayed by one clock cycle of the pixel clock signal PCLK. The data input to the delay register 103 is branched and output to the MMU 92.
[0209]
The data output from the third terminal S2 to the twelfth terminal S11 of the first data selector 95 is output to the second data selector 104, and the second data selector 104 supplies the data from the control unit 130. In response to the selected control signal SEL1, each data is output to four sets of three-point arithmetic units, and the three-point arithmetic units execute parallel processing.
[0210]
The adder 105 at the previous stage adds the two data points output from the first terminal S0 and the second terminal S1 of the second data selector 104 and outputs the result to the third coefficient multiplier 106. In the third coefficient multiplier 106, the coefficient register 107 outputs the lifting coefficient α to the multiplier 108 according to the control signal C2 supplied from the control unit 130, and the multiplier 108 outputs the data input from the adder 105. Is multiplied by a lifting coefficient α. The multiplied output is inverted in sign in the two's complement arithmetic circuit 109 and output to the subsequent adder 110. Then, the subsequent adder 110 adds the data input from the third coefficient multiplier 106 and the data input from the third terminal S2 of the second data selector 104, and outputs the result to the output destination selection unit 129.
[0211]
Further, the adder 111 at the preceding stage adds the two data points output from the fourth terminal S3 and the fifth terminal S4 of the second data selector 104 and outputs the result to the fourth coefficient multiplier 112. In the fourth coefficient multiplier 112, the coefficient register 113 outputs the lifting coefficient β to the multiplier 114 according to the control signal C3 supplied from the control unit 130, and the multiplier 114 outputs the data input from the adder 111. Is multiplied by a lifting coefficient β. The multiplied output is inverted in sign in the two's complement arithmetic circuit 115 and output to the subsequent adder 116. The adder 116 at the subsequent stage adds the data input from the fourth coefficient multiplier 112 and the data input from the sixth terminal S5 of the second data selector 104 and outputs the result to the output destination selection unit 129.
[0212]
Further, the adder 117 at the preceding stage adds the two data points output from the seventh terminal S6 and the eighth terminal S7 of the second data selector 104 and outputs the result to the fifth coefficient multiplier 118. In the fifth coefficient multiplier 118, the coefficient register 119 outputs the lifting coefficient γ to the multiplier 120 according to the control signal C4 supplied from the control unit 130, and the multiplier 120 outputs the data input from the adder 117. Is multiplied by a lifting coefficient γ. The multiplied output is inverted in sign in the two's complement arithmetic circuit 121 and output to the subsequent adder 122. The subsequent adder 122 adds the data input from the fifth coefficient multiplier 118 and the data input from the ninth terminal S8 of the second data selector 104, and outputs the result to the output destination selection unit 129.
[0213]
The adder 123 at the preceding stage adds the two data points output from the tenth terminal S9 and the eleventh terminal S10 of the second data selector 104 and outputs the result to the sixth coefficient multiplier 124. In the sixth coefficient multiplier 124, the coefficient register 125 outputs the lifting coefficient δ to the multiplier 126 in accordance with the control signal C5 supplied from the control unit 130, and the multiplier 126 outputs the data input from the adder 123. Is multiplied by a lifting coefficient δ. The multiplied output is inverted in sign in the two's complement arithmetic circuit 127 and output to the subsequent adder 128. The subsequent adder 128 adds the data input from the sixth coefficient multiplier 124 and the data input from the twelfth terminal S11 of the second data selector 104, and outputs the result to the output destination selection unit 129.
[0214]
The output destination selection unit 129 outputs the data of four points that are input in parallel from the adders 110, 116, 122, and 128 at the first stage in accordance with the value of the selection control signal SEL2 supplied from the control unit 130. The signal is selectively output from any of the fourth terminals K3.
[0215]
The output destination selection unit 129 outputs output data X (2k) and X (2k + 1) from the first terminal K0 and the second terminal K1. The data output from the first terminal K0, the third terminal K2, and the fourth terminal K3 of the output destination selection unit 129 are also output to the MMU 92. The MMU 92 can transfer the data output from the first terminal K0, the third terminal K2, and the fourth terminal K3 to the third ring memory 93 and overwrite the data in the storage area that has been referred to.
[0216]
Next, a representative example of the lifting operation using the vertical filtering unit 94 will be described below with reference to FIGS. FIGS. 29 to 31 are lattice diagrams schematically showing a lifting configuration of a 9 × 7 tap Daubechies filter. The calculation of this grid diagram is performed in the same manner as in the case of FIG. FIGS. 29 to 31 show lifting coefficients −α, −β, −γ, −δ and normalization coefficients κ, 1 / κ corresponding to line segments connecting the respective grid points for convenience of explanation. Not.
[0217]
29 to 31 schematically show the N-th (N is an integer) to (N + 2) -th processing in this embodiment.
[0218]
In the N-th process (FIG. 29), four conversion processes of the target areas C1, C2, C3, and C4 are simultaneously executed in parallel within one clock cycle.
[0219]
In the target area C1, two intermediate data D1 n + 4, D1 n + 5Is multiplied by a lifting coefficient −δ to calculate a multiplication value, and the multiplication value and the intermediate data S1 n + 5Are added to perform a three-point operation. As a result, the second-stage intermediate data S on the series starting from the even-numbered input data Y (2n + 10)Two n + 5Is calculated. Here, two intermediate data D1 n + 4, D1 n + 5Is the intermediate data S1 n + 5This is data on the series that is about one point behind the series.
[0220]
In the target area C2, two intermediate data STwo n + 3, STwo n + 4Is multiplied by a lifting coefficient −γ, and the multiplied value and the intermediate data D1 n + 3Are added to perform a three-point operation. As a result, the intermediate data D of the second stage on the series starting from the odd-numbered input data Y (2n + 7)Two n + 3Is calculated. Here, two intermediate data STwo n + 3, STwo n + 4Is the intermediate data D1 n + 3This is data on the series that is about one point behind the series.
[0221]
In the target area C3, two intermediate data DTwo n + 1, DTwo n + 2Is multiplied by a lifting coefficient −β to the multiplied value, and the multiplied value and the intermediate data STwo n + 2Are added to perform a three-point operation. As a result, output data X (2n + 4) on the series starting from the input data Y (2n + 4) is calculated. Here, two intermediate data DTwo n + 1, DTwo n + 2Is the intermediate data STwo n + 2This is data on the series that is about one point behind the series.
[0222]
Further, in the target area C4, a multiplication value is calculated by multiplying the data obtained by adding the output data X (2n) and X (2n + 2) of the even-numbered two points by the lifting coefficient -α, and then the multiplication value is calculated. Data DTwo nAre added to perform a three-point operation. As a result, output data X (2n + 1) on the series starting from the input data Y (2n + 1) is calculated. Here, the input data X (2n) and X (2n + 2) of the even-numbered two points are the intermediate data DTwo nIs one point before and after.
[0223]
Further, in the cycle one clock before execution of the arithmetic processing in the target areas C1 to C4, the arithmetic processing in the target areas N1 and N2 is executed in parallel. In the target area N1, a normalization process of multiplying the input data Y (2n + 10) by the normalization coefficient κ is executed, and the intermediate data S1 n + 5Is calculated in the target area N2, a normalization process of multiplying the input data Y (2n + 11) by a normalization coefficient 1 / κ is executed, and the intermediate data D1 n + 5Is calculated.
[0224]
The contents of the N-th specific processing are as follows. In the N-th processing, the arithmetic processing in the target areas C1, C2, C3, and C4 is performed within one clock cycle, but the arithmetic processing in the target areas N1 and N2 is performed one clock cycle before this arithmetic processing. It is. The processing in the cycle one clock before will be described. The MMU 92 receives the input data Y (2n + 10) and Y (2n + 11) temporarily stored in the ring memory 93, and receives the input data Y (2n + 10) from the first terminal S0 in response to the selection control signal SEL0 supplied from the control unit 130. ), And input data Y (2n + 11) is output from the second terminal S1.
[0225]
The input data Y (2n + 10) output from the first terminal S0 is input to the first coefficient multiplier 96. In the first coefficient multiplier 96, the coefficient register 97 outputs the normalized coefficient κ to the multiplier 98 in accordance with the control signal C0 supplied from the control unit 130, and the multiplier 98 converts the normalized coefficient κ to the input data Y (2n + 10). Multiply κ. As a result, the first coefficient multiplier 96 outputs the intermediate data S1 n + 5(= Κ × Y (2n + 10)) is calculated within one clock cycle.
[0226]
The input data Y (2n + 11) output from the second terminal S1 is input to the second coefficient multiplier 100. In the second coefficient multiplier 100, the coefficient register 101 outputs a normalization coefficient 1 / κ to the multiplier 102 according to the control signal C1 supplied from the control unit 130, and the multiplier 102 performs standardization on the input data Y (2n + 11). Multiplication factor 1 / κ. As a result, the second coefficient multiplier 100 outputs the intermediate data D1 n + 5(= 1 / κ × Y (2n + 11)) is calculated within one clock cycle.
[0227]
Intermediate data S output from first and second coefficient multipliers 96 and 1001 n + 5, D1 n + 5Are input to the delay registers 99 and 103, respectively. In the delay registers 99 and 100, the intermediate data S1 n + 5, D1 n + 5Is output after being delayed by one clock cycle.
[0228]
After one clock cycle in which the arithmetic processing in the target areas N1 and N2 has been performed, the MMU 92 sets the ten-point data X (2n), D temporarily stored in the third ring memory 93.Two n, X (2n + 2), DTwo n + 1, STwo n + 2, DTwo n + 2, STwo n + 3, D1 n + 3, STwo n + 4, D1 n + 4To the first data selector 95. The first data selector 95 outputs the data of the ten points from the third terminal S2 to the twelfth terminal S11 according to the value of the selection control signal SEL0 supplied from the control unit 130. This output data is input to the second data selector 104. Also, the intermediate data S stored in the delay registers 96 and 1031 n + 5, D1 n + 5Is input to the second data selector 104. Intermediate data D output from delay register 1031 n + 5Is also branched and output to the external MMU 92, which outputs the intermediate data D1 n + 5Is transferred to the ring memory 93 to overwrite the storage area input data Y (2n + 11) which has been referred to.
[0229]
The second data selector 104 selects input data X (2n) and X (2n + 2) of three points in the target area C4 from the data of the twelve points in response to the selection control signal SEL1 supplied from the control unit 130. ), DTwo nAnd outputs the data from the first terminal S0 to the third terminal S2, respectively, and outputs data D of three points in the target area C3.Two n + 1, DTwo n + 2, STwo n + 2And outputs the data from the fourth terminal S3 to the sixth terminal S5, respectively, and outputs the data S of three points in the target area C2.Two n + 3, STwo n + 4, D1 n + 3And outputs the data from the seventh terminal S6 to the ninth terminal S8, respectively, and outputs data D of three points in the target area C1.1 n + 4, D1 n + 5, S1 n + 5Is selected and output from the tenth terminal S9 to the twelfth terminal S11, respectively.
[0230]
The adder 105 in the preceding stage adds the data obtained by adding the data X (2n) and X (2n + 2) of the two points in the target area C4 input from the first terminal S0 and the second terminal S1 of the second data selector 104 to the Output to the three coefficient multiplier 106. In the third coefficient multiplier 106, the coefficient register 107 supplies the lifting coefficient α to the multiplier 108 according to the control signal C2, and the multiplier 108 multiplies the input data by the lifting coefficient α (= α × (X (2n) + X (2n + 2))). After the sign of the output data is inverted by the two's complement arithmetic circuit 109, the output data is output to the adder 110 at the subsequent stage. Then, the adder 110 at the subsequent stage compares the multiplication value input from the third coefficient multiplier 106 with the data D input from the third terminal S2 of the second data selector 104.Two nIs added to calculate the output data X (2n + 1) in the target area C4, and output it to the output destination selection unit 129.
[0231]
The adder 111 at the preceding stage outputs the data D of two points in the target area C3 input from the fourth terminal S3 and the fifth terminal S4 of the second data selector 104.Two n + 1, DTwo n + 2Is output to the fourth coefficient multiplier 112. In the fourth coefficient multiplier 112, the coefficient register 113 supplies the lifting coefficient β to the multiplier 114 in accordance with the control signal C3, and the multiplier 114 multiplies the input data by the lifting coefficient β (= β × (DTwo n + 1+ DTwo n + 2)) Is output. This output data is output to the subsequent adder 116 after the sign is inverted in the two's complement arithmetic circuit 115. Then, the subsequent adder 116 calculates the multiplication value input from the fourth coefficient multiplier 112 and the data S input from the sixth terminal S5 of the second data selector 104.Two n + 2Is added, the output data X (2n + 4) in the target area C3 is calculated and output to the output destination selection unit 129.
[0232]
The adder 117 at the previous stage outputs the data S of two points in the target area C2 input from the seventh terminal S6 and the eighth terminal S7 of the second data selector 104.Two n + 3, STwo n + 4Is output to the fifth coefficient multiplier 118. In the fifth coefficient multiplier 118, the coefficient register 119 supplies the lifting coefficient γ to the multiplier 120 according to the control signal C4, and the multiplier 120 multiplies the input data by the lifting coefficient γ (= γ × (STwo n + 3+ STwo n + 4)) Is output. After the sign of the output data is inverted in the two's complement arithmetic circuit 121, the output data is output to the subsequent adder 122. Then, the adder 122 at the subsequent stage calculates the multiplication value input from the fifth coefficient multiplier 118 and the data D input from the ninth terminal S8 of the second data selector 104.1 n + 3Is added to the intermediate data D in the target area C2.Two n + 3Is calculated and output to the output destination selection unit 129.
[0233]
The adder 123 in the preceding stage outputs the data D of two points in the target area C1 input from the tenth terminal S9 and the eleventh terminal S10 of the second data selector 104.1 n + 4, D1 n + 5Is output to the sixth coefficient multiplier 124. In the sixth coefficient multiplier 124, the coefficient register 125 supplies the lifting coefficient δ to the multiplier 126 according to the control signal C5, and the multiplier 126 multiplies the input data by the lifting coefficient δ (= δ × (D1 n + 4+ D1 n + 5)) Is output. After the sign of the output data is inverted by the two's complement arithmetic circuit 127, the output data is output to the adder 128 at the subsequent stage. Then, the adder 128 at the subsequent stage outputs the multiplied value input from the sixth coefficient multiplier 124 and the intermediate data S input from the twelfth terminal S11 of the second data selector 104.1 n +5Is added to the intermediate data S in the target area C1.Two n + 5Is calculated and output to the output destination selection unit 129.
[0234]
The output destination selection unit 129 outputs the two-point output data input from the two subsequent adders 110 and 116 from the first terminal K0 and the second terminal K1, respectively, according to the value of the selection control signal SEL2. Further, the output destination selection unit 129 outputs the data of three points input from the three adders 110, 122, and 128 at the subsequent stage to the MMU 92. The MMU 92 outputs the intermediate data X (2n + 4), DTwo n + 3, STwo n + 5Is transferred to the third ring memory 93, and the MMU 92 outputs the data (2n + 4) and D at the three points.Two n + 3, STwo n + 5Is transferred to the ring memory 93, and the referenced storage area STwo n + 2, D1 n + 3, Y (2n + 10).
[0235]
In the next (N + 1) -th processing (FIG. 30), conversion processing of the target areas C5, C6, C7, and C8 is performed. In addition, two normalization processes of the target regions N3 and N4 are executed in a cycle one clock before the conversion process of the target regions C5, C6, C7, and C8. The target areas C5, C6, C7, C8, N3, and N4 are areas obtained by moving the target areas C1, C2, C3, C4, N1, and N2 of the N-th processing (FIG. 29) two series (two points) backward. is there. In these target areas C5, C6, C7, C8, N3, and N4, processing similar to the processing in the target areas C1, C2, C3, C4, N1, and N2 is performed, respectively. Therefore, in the target area C8, the output data X (2n + 3) on the series starting from the odd-numbered input data Y (2n + 3) is calculated. In the target area C7, the even-numbered input data Y (2n + 6) is set as the starting point. The output data X (2n + 6) on the sequence to be processed is calculated, and in the target area C6, the intermediate data D of the second stage on the sequence starting from the odd-numbered input data Y (2n + 9)Two n + 4Is calculated, and in the target area C1, the second-stage intermediate data S on the series starting from the even-numbered input data Y (2n + 12)Two n + 6Is calculated. In the cycle one clock before, in the target areas N3 and N4, normalization processing is performed on the input data Y (2n + 12) and Y (2n + 13).
[0236]
Furthermore, in the (N + 2) -th processing (FIG. 31), conversion processing of the target areas C9, C10, C11, and C12 is performed. Further, two normalization processes of the target regions N5 and N6 are executed in a cycle one clock before the conversion process of the target regions C9, C10, C11 and C12.
[0237]
As described above, the same processing as the N-th processing (FIG. 29) is repeatedly performed while moving the target area until output data of all points is calculated. As a result, the average period required to calculate the output data of the even-numbered and odd-numbered points can be set to one clock period, and the calculation period of the output data can be greatly reduced.
[0238]
Next, a line-based two-dimensional inverse DWT process using the wavelet transform device 90 will be described below.
[0239]
The data input to the first horizontal filtering unit 33H is the subbands 23LH and 23HH shown in FIG. 11, and the data input to the second horizontal filtering unit 33L is the subbands 23LL and 23HL. Then, the first and second horizontal filtering units 33H and 33L output the subband 23H (YH(M)), 23L (YL(M)) is output.
[0240]
Data input to the vertical filtering unit 94 is data Y output from the first and second horizontal filtering units 33H and 33L.H(M), YL(M), and these data YH(M), YLBy alternately arranging the data of the vertical line (m), the data is input as a pixel row in the horizontal direction. Then, the vertical filtering unit 94 outputs the two-dimensional image data 23.
[0241]
Specifically, the first ring memory 32H and the first horizontal filtering unit 33H output the sub-band 23H by filtering the data input in units of horizontal lines at one clock cycle per point, and output the sub-band 23H. The memory 32L and the second horizontal filtering unit 33L output the subband 23L by filtering data input in units of horizontal lines at one clock cycle per point.
[0242]
The first ring memory 32H and the second ring memory 33L can use the ring memory 32s of FIG. 22 described in the third embodiment, and as shown in FIG.j(K), Xj + 1(K), has a storage area 133 for holding data of eight points (eight pixels) corresponding to the temporary data and the intermediate data. Alternatively, as the first ring memory 32H and the second ring memory 33L, the ring memory 32 of FIG. 15 described in the second embodiment can be used. As shown in FIG.j(K), Xj + 1It has a storage area 59 for storing data of 9 points (9 pixels) corresponding to (k),..., And can store the temporary data and intermediate data.
[0243]
Similarly, the first and second horizontal filtering units 33H and 33L use the filtering unit 33s of FIG. 22 described in the third embodiment or the filtering unit 33 of FIG. 15 described in the second embodiment. Can be.
[0244]
The third ring memory 93 and the vertical filtering unit 94 repeatedly execute each processing including the N-th processing (FIG. 29) and the (N + 1) -th processing (FIG. 30) for each pixel row in units of horizontal lines. For example, after the N-th process (FIG. 29) is performed on the 0th pixel column, it is performed on the first pixel column, then on the second pixel column, ... Finally, the processing is performed on the (W-1) -th pixel column. After that, the above-described N + 1-th process (FIG. 30) is performed on the 0th pixel column, then on the first pixel column, and further on the second pixel column. ... Finally, the processing is performed on the (W−1) th pixel column. In this way, each process is repeatedly executed for all the pixel columns.
[0245]
As a result, the data of the even-numbered rows and the data of the odd-numbered rows are output in parallel for each horizontal line from the vertical filtering unit 94. For example, as a result of continuously executing the N-th process (FIG. 29) on the 0th to W-1st pixel columns, the data X of the odd-numbered row of the 2n + 1st horizontal line is obtained.0(2n + 1), X1(2n + 1), ..., Xj(2n + 1), ..., XW-1(2n + 1) are continuously output. In parallel with this, the data X of the even-numbered row of the 2n + 4th horizontal line0(2n + 4), X1(2n + 4), ..., Xj(2n + 4), ..., XW-1(2n + 4) are continuously output.
[0246]
As schematically shown in FIG. 32, the first ring memory 93 has a storage area 132 for holding data of 12 × W points (12 lines) corresponding to the input data sequence. And intermediate data. This storage area 132 is an aggregate of row areas that hold 12 points of data in the vertical direction. One column area holds input data and intermediate data referred to in one process. For example, in the N-th processing (FIG. 29), in a certain column area, the data sequence {X (2n), DTwo n, X (2n + 2), DTwo n + 1, STwo n + 2, DTwo n + 2, STwo n + 3, D1 n + 3, STwo n + 4, D1 n + 4, Y (2n + 10), Y (2n + 11)}, a data string {X (2n), DTwo n, X (2n + 2), DTwo n + 1, X (2n + 4), DTwo n + 2, STwo n + 3, DTwo n + 3, STwo n + 4, D1 n + 4, STwo n + 5, D1 n + 5The storage contents change to} (data STwo n + 2, D1 n + 3, Y (2n + 10), and Y (2n + 11) are data X (2n + 4), DTwo n + 3, STwo n + 5, D1 n + 5Will be overwritten).
[0247]
By performing the above processing recursively, it is possible to synthesize subbands (band components) having decomposition levels of any order. That is, the four subbands LL (k + 1), HL (k + 1), LH (k + 1), and HH (k + 1) at the (k + 1) -th (k is an integer of 2 or more) decomposition level are input to the wavelet transform device 90. , LL (k) at the k-th decomposition level can be obtained. By performing such processing recursively, the original image data is restored from the sub-band at the k-th decomposition level. It is possible.
[0248]
As described above, in the wavelet transform device 90 and the wavelet transform method according to the present embodiment, four transform processes for calculating four-point intermediate data and two normalization processes for normalizing two-point intermediate data are performed. Since the simultaneous execution is performed in parallel within one clock cycle, the calculation cycle of the output data can be greatly reduced. Therefore, it is possible to execute the wavelet transform in a very short time and at a high speed.
[0249]
In addition, the wavelet transform device 90 includes first and second horizontal filtering units 33H and 33L that calculate one point of data within one clock cycle, and a vertical filtering unit 94 that calculates two points of data within one clock cycle. , Two combined data can be calculated in parallel within one clock cycle. Therefore, it is possible to execute the line-based two-dimensional DWT calculation at an extremely high speed.
[0250]
<Modification>
FIG. 34 is a diagram illustrating a schematic configuration of a two-dimensional wavelet transform device 140 according to a modification of the above-described fourth embodiment. The wavelet transform device 140 includes a buffer 91 for temporarily storing the two-dimensional image data of the subband, an MMU (memory management unit) 92A operating in synchronization with an externally supplied clock signal CLK, a first ring memory 93A, The configuration includes a filtering unit 94A, a line buffer circuit 141, a second ring memory 93B, and a vertical filtering unit 94B.
[0251]
Here, the horizontal filtering unit 94A and the vertical filtering unit 94B have the same configuration as the configuration of the vertical filtering unit 94 (FIG. 28) according to the fourth embodiment, and perform the lifting operation shown in FIGS. Data is provided and controlled to execute.
[0252]
From the horizontal filtering unit 94A, the data of the sub-bands 23H and 23L are alternately output for each horizontal line.
[0253]
In the line buffer circuit 141, each of the first line buffer 143 and the second line buffer 144 includes a buffer for two horizontal lines. During a period in which the selector 142 stores two pieces of input data in one of the first line buffer 143 and the second line buffer 144, the demultiplexer 145 reads out the two pieces of data stored in the other side and reads out the two pieces of data. Output to the two-ring memory 93B.
[0254]
As described above, according to the configuration of the present modification, two points of composite data can be calculated in parallel within one clock cycle, so that a line-based two-dimensional DWT calculation can be performed at an extremely high speed.
[0255]
【The invention's effect】
As described above, according to the wavelet transform device of the present invention, the process of normalizing each input data and the transform process of transforming each intermediate data into other intermediate data and output data on one line are repeatedly executed. Since at least two processes among a plurality of processes repeatedly executed are executed in parallel within one clock cycle, the calculation cycle of output data can be shortened, and inverse wavelet transform can be executed in a short time and at high speed. Will be possible.
[0256]
According to the wavelet transform method of the present invention, a step (b) of normalizing input data and converting it into intermediate data of a first stage, and a step of converting intermediate data into other intermediate data in a series ( c) and the step (d) of converting intermediate data of the final stage into output data are repeatedly executed. However, at least two steps of the repeatedly executed steps are executed in parallel within one clock cycle. The cycle of calculating output data from the input data sequence can be shortened, and inverse wavelet transform can be performed in a short time and at high speed.
[Brief description of the drawings]
FIG. 1 is a diagram illustrating a schematic configuration of a wavelet transform device according to a first embodiment of the present invention.
FIG. 2 is a schematic configuration diagram of a filtering unit according to the first embodiment.
FIG. 3 is a diagram schematically showing a lifting calculation process according to the first embodiment.
FIG. 4 is a diagram schematically showing steps of a lifting operation according to the first embodiment.
FIG. 5 is a diagram schematically showing a step of a lifting calculation according to the first embodiment.
FIG. 6 is a diagram schematically showing a lifting calculation process according to the first embodiment.
FIG. 7 is a diagram schematically showing a lifting calculation process according to the first embodiment.
FIG. 8 is a diagram schematically illustrating a step of a lifting operation according to the first embodiment.
FIG. 9 is a diagram schematically showing a lifting calculation process according to the first embodiment.
FIG. 10 is a diagram schematically showing a lifting calculation process according to the first embodiment.
FIG. 11 is a diagram schematically showing a process of synthesizing an image from subbands.
FIG. 12 is a diagram schematically showing two-dimensional image data and a storage area of a ring memory.
FIG. 13 is a diagram schematically showing a storage area of a ring memory.
FIG. 14 is a diagram illustrating a schematic configuration of a wavelet transform device according to a second embodiment of the present invention.
FIG. 15 is a schematic configuration diagram of a filtering unit according to a second embodiment.
FIG. 16 is a diagram schematically showing a lifting calculation process according to the second embodiment.
FIG. 17 is a diagram schematically showing a lifting calculation process according to the second embodiment.
FIG. 18 is a diagram schematically showing a lifting calculation process according to the second embodiment.
FIG. 19 is a diagram schematically illustrating a lifting calculation process according to the second embodiment.
FIG. 20 is a diagram schematically showing two-dimensional image data and a storage area of a ring memory.
FIG. 21 is a diagram schematically showing a storage area of a ring memory.
FIG. 22 is a diagram illustrating a schematic configuration of a filtering unit according to a third embodiment of the present invention.
FIG. 23 is a view schematically showing a step of a lifting operation according to the third embodiment.
FIG. 24 is a diagram schematically showing a lifting calculation process according to the third embodiment.
FIG. 25 is a diagram schematically showing a lifting calculation process according to the third embodiment.
FIG. 26 is a diagram illustrating a schematic configuration of a wavelet transform device according to a modification of the second and third embodiments.
FIG. 27 is a diagram illustrating a schematic configuration of a wavelet transform device according to a fourth embodiment of the present invention.
FIG. 28 is a schematic configuration diagram of a vertical filtering unit according to a fourth embodiment.
FIG. 29 is a diagram schematically showing a lifting calculation process according to the fourth embodiment.
FIG. 30 is a diagram schematically showing a lifting calculation process according to the fourth embodiment.
FIG. 31 is a diagram schematically showing a lifting calculation process according to the fourth embodiment.
FIG. 32 is a diagram schematically showing two-dimensional image data and a storage area of a ring memory.
FIG. 33 is a diagram schematically showing a storage area of a ring memory.
FIG. 34 is a diagram illustrating a schematic configuration of a wavelet transform device according to a modification of the fourth embodiment.
FIG. 35 is a diagram schematically showing a filter bank used in DWT and inverse DWT.
FIG. 36 is a diagram schematically illustrating image data subjected to two-dimensional DWT at a third-order decomposition level.
FIG. 37 is a lattice diagram schematically showing a lifting configuration on the combining side.
FIG. 38 is a diagram schematically illustrating a calculation method recommended by the JPEG2000 system.
FIG. 39 is a diagram schematically showing a step of a lifting calculation.
FIG. 40 is a view schematically showing a step of a lifting operation.
FIG. 41 is a diagram schematically showing a step of a lifting calculation.
FIG. 42 is a view schematically showing a step of a lifting operation.
FIG. 43 is a view schematically showing a step of a lifting operation.
FIG. 44 is a view schematically showing a step of a lifting operation.
FIG. 45 is a diagram schematically showing a lifting calculation process.
FIG. 46 is a view schematically showing a step of a lifting operation.
FIG. 47 is a view schematically showing a step of a lifting operation.
FIG. 48 is a view schematically showing a step of a lifting operation.
[Explanation of symbols]
1 Wavelet transform device
2 MMU (memory management unit)
3A, 3B ring memory
4A, 4B filtering unit
5 Line buffer circuit

Claims (21)

リフティング構成に基づいて、帯域分割された高域成分のデータと低域成分のデータとを合成するウェーブレット変換装置であって、
制御部と、
高域成分および低域成分の一方からなる第1データ列と、その他方からなる第2データ列とが画素単位で交互に配列されて構成される入力データ列を取り込んで合成された出力データ列を算出するフィルタリング部と、
を備え、
前記フィルタリング部は、
前記入力データ列の各々に所定の規格化係数を乗算することで、各入力データを第1段階の中間データへ1点当たり1クロック周期内に変換する単数または複数の規格化処理を実行する規格化手段と、
前記規格化手段によって規格化された第1段階の中間データの各々を単数または複数の段階に亘る一系列の中間データへ1点当たり1クロック周期内に変換し、あるいは、最終段階の中間データの各々を出力データへ1点当たり1クロック周期内に変換する単数または複数の変換処理を実行する中間データ変換手段と、を含み、
前記制御部は、
前記規格化手段および前記中間データ変換手段に、前記単数または複数の規格化処理および前記単数または複数の変換処理を、全ての点の前記出力データが算出されるまで繰り返し実行させ、且つ、繰り返し実行される前記単数または複数の規格化処理および前記単数または複数の変換処理のうち少なくとも2個の処理を1クロック周期内に並列に実行させるように制御する、
ことを特徴とするウェーブレット変換装置。
A wavelet transform device that combines band-divided high-frequency component data and low-frequency component data based on a lifting configuration,
A control unit;
An output data sequence synthesized by taking in an input data sequence constituted by alternately arranging a first data sequence composed of one of a high-frequency component and a low-frequency component and a second data sequence composed of the other in pixel units A filtering unit that calculates
With
The filtering unit,
A standard for executing one or more normalization processes for converting each input data into first stage intermediate data within one clock cycle per point by multiplying each of the input data strings by a predetermined normalization coefficient. Means,
Each of the first-stage intermediate data standardized by the normalization means is converted into one series or a plurality of stages of intermediate data within one clock cycle per point, or the final stage intermediate data is converted. Intermediate data conversion means for performing one or more conversion processes for converting each to output data within one clock cycle per point,
The control unit includes:
Causing the normalizing means and the intermediate data converting means to repeatedly execute the singular or plural normalizing processing and the singular or plural converting processing until the output data of all points is calculated; and Controlling at least two of the singular or plural normalization processes and the singular or plural conversion processes to be executed in parallel within one clock cycle;
A wavelet transform device characterized by the above-mentioned.
請求項1記載のウェーブレット変換装置であって、前記規格化手段および前記中間データ変換手段は、前記規格化処理および前記変換処理を並列に実行する、ウェーブレット変換装置。2. The wavelet transform device according to claim 1, wherein said normalization means and said intermediate data conversion means execute said normalization processing and said conversion processing in parallel. 請求項1または請求項2記載のウェーブレット変換装置であって、
前記規格化手段は、
各入力データに前記規格化係数を乗算する規格化係数乗算器と、
前記規格化係数乗算器から出力されたデータを遅延させる遅延器と、
を含み、
前記中間データ変換手段は、
2点の中間データの一方に所定のリフティング係数を乗算するリフティング係数乗算器と、該リフティング係数乗算器から出力されたデータと前記2点の中間データの他方とを加算する加算器とからなる2点演算部と、
前記2点演算部から出力されたデータを取り込んで前記制御部から指定された出力先に出力する出力先選択部と、
を含み、
前記ウェーブレット変換装置は、さらに、
メモリ管理部と、
前記メモリ管理部の制御によりデータを一時記憶するメモリと、
を備え、
前記メモリ管理部は、
前記出力先選択部から出力された前記データを前記メモリに転送し記憶させるように制御する、
ことを特徴とするウェーブレット変換装置。
The wavelet transform device according to claim 1 or 2, wherein
The normalizing means,
A normalization coefficient multiplier for multiplying each input data by the normalization coefficient,
A delay unit for delaying data output from the normalization coefficient multiplier,
Including
The intermediate data conversion means,
A lifting coefficient multiplier for multiplying one of the two intermediate data by a predetermined lifting coefficient; and an adder for adding the data output from the lifting coefficient multiplier and the other of the two intermediate data. A point calculation unit,
An output destination selection unit that captures data output from the two-point calculation unit and outputs the data to an output destination specified by the control unit;
Including
The wavelet transform device further includes:
A memory management unit,
A memory for temporarily storing data under the control of the memory management unit;
With
The memory management unit,
Controlling the data output from the output destination selection unit to be transferred to and stored in the memory,
A wavelet transform device characterized by the above-mentioned.
請求項3記載のウェーブレット変換装置であって、
前記制御部は、前記変換処理として、
「前記第2データ列に属する入力データを起点とする系列」(以下、第2系列と呼ぶ。)上の第1段階の中間データと、その中間データに対して1点前の「前記第1データ列に属する入力データを起点とする系列」(以下、第1系列と呼ぶ。)上の第1段階の中間データに所定のリフティング係数を乗算して得たデータとを加算することで、当該第2系列上の第2段階の一時データを1点当たり1クロック周期内に算出する第1の変換処理と、
前記第1の変換処理で算出され前記メモリに記憶された前記一時データと、その一時データの系列に対して1点後の第1系列上の第1段階の中間データに所定のリフティング係数を乗算して得たデータとを加算することで、当該第2系列上の第2段階の中間データを1点当たり1クロック周期内に算出する第2の変換処理と、
第1系列上の第1段階の中間データと、その中間データに対して1点前の第2系列上の第2段階の中間データに所定のリフティング係数を乗算して得たデータとを加算することで、当該第1系列上の第2段階の一時データを1点当たり1クロック周期内に算出する第3の変換処理と、
前記第3の変換処理で算出され前記メモリに記憶された前記一時データと、その一時データの系列に対して1点後の第2系列上の第2段階の中間データに所定のリフティング係数を乗算して得たデータとを加算することで、当該第1系列上の第2段階の前記中間データを1点当たり1クロック周期内に算出する第4の変換処理と、
第2系列上の第M段階(段階数Mは1以上の整数)の中間データと、その中間データの系列に対して1点前の第1系列上の第M段階の中間データに所定のリフティング係数を乗算して得たデータとを加算することで、当該第2系列上の第M+1段階の一時データを1点当たり1クロック周期内に算出する第5の変換処理と、
前記第5の変換処理で算出され前記メモリに記憶された前記一時データと、その一時データの系列に対して1点後の第1系列上の第M段階の中間データに所定のリフティング係数を乗算して得たデータとを加算することで、当該第2系列上の第M+1段階の中間データを1点当たり1クロック周期内に算出する第6の変換処理と、
第1系列上の第L段階(段階数Lは1以上の整数)の中間データと、その中間データの系列に対して1点前の第2系列上の第L+1段階の中間データに所定のリフティング係数を乗算して得たデータとを加算することで、当該第1系列上の第L+1段階の一時データを1点当たり1クロック周期内に算出する第7の変換処理と、
前記第7の変換処理で算出され前記メモリに記憶された前記一時データと、その一時データの系列に対して1点後の第2系列上の第L+1段階の中間データに所定のリフティング係数を乗算して得たデータとを加算することで、当該第1系列上の第L+1段階の前記中間データを1点当たり1クロック周期内に算出する第8の変換処理と、
を全ての点の前記出力データが算出されるまで前記2点演算部に繰り返し実行させるように制御する、ウェーブレット変換装置。
The wavelet transform device according to claim 3, wherein
The control unit, as the conversion process,
The intermediate data at the first stage on the “series starting from the input data belonging to the second data string” (hereinafter, referred to as a second series), and the “1st stage intermediate data before the intermediate data” By adding intermediate data of the first stage on a sequence starting from input data belonging to a data sequence (hereinafter referred to as a first sequence) with data obtained by multiplying by a predetermined lifting coefficient, A first conversion process for calculating the second stage temporary data on the second stream within one clock cycle per point;
The temporary data calculated in the first conversion process and stored in the memory, and the intermediate data of the first stage on the first series one point after the temporary data series are multiplied by a predetermined lifting coefficient. A second conversion process of calculating the intermediate data of the second stage on the second sequence within one clock cycle per point by adding
The first stage intermediate data on the first series and the data obtained by multiplying the second stage intermediate data on the second series one point earlier by a predetermined lifting coefficient with respect to the intermediate data are added. In this way, a third conversion process of calculating the second stage temporary data on the first stream within one clock cycle per point,
Multiplying the temporary data calculated in the third conversion processing and stored in the memory by a predetermined lifting coefficient to the intermediate data of the second stage on the second series one point after the temporary data series A fourth conversion process of calculating the intermediate data of the second stage on the first series within one clock cycle per point by adding
A predetermined lifting is performed on the intermediate data of the M-th stage (the number of stages M is an integer of 1 or more) on the second sequence and the intermediate data of the M-th stage on the first sequence one point before the intermediate data sequence A fifth conversion process of calculating temporary data of the (M + 1) -th stage on the second sequence within one clock cycle per point by adding the data obtained by multiplying the coefficients;
Multiplying the temporary data calculated in the fifth conversion process and stored in the memory and the intermediate data of the M-th stage on the first series one point after the temporary data series by a predetermined lifting coefficient; A sixth conversion process of calculating the intermediate data of the (M + 1) th stage on the second stream within one clock cycle per point by adding the data obtained by
A predetermined lifting is performed on intermediate data of the L-th stage (the number of stages L is an integer of 1 or more) on the first stream and intermediate data of the L + 1-th stage on the second stream one point before the series of the intermediate data A seventh conversion process of calculating the temporary data of the (L + 1) th stage on the first series within one clock cycle per point by adding the data obtained by multiplying the coefficients,
The temporary data calculated in the seventh conversion processing and stored in the memory and the intermediate data of the L + 1-th stage on the second series one point after the temporary data series are multiplied by a predetermined lifting coefficient. An eighth conversion process of calculating the intermediate data of the (L + 1) th stage on the first stream within one clock cycle per point by adding
Is controlled so that the two-point calculation unit is repeatedly executed until the output data of all points is calculated.
請求項4記載のウェーブレット変換装置であって、
前記制御部は、前記第1の変換処理および前記第3の変換処理を実行した後に、前記第5の変換処理および前記第7の変換処理を、前記最終段階の前記一時データが算出されるまで前記2点演算部に実行させ、その後、前記第2の変換処理および前記第4の変換処理を実行した後に、前記第6の変換処理および前記第8の変換処理を、前記出力データが算出されるまで前記2点演算部に実行させるように制御する、
ウェーブレット変換装置。
The wavelet transform device according to claim 4, wherein
The control unit, after executing the first conversion process and the third conversion process, performs the fifth conversion process and the seventh conversion process until the temporary data in the final stage is calculated. After the second conversion process and the fourth conversion process are performed by the two-point operation unit, the output data is calculated by performing the sixth conversion process and the eighth conversion process after performing the second conversion process and the fourth conversion process. Until it is executed by the two-point calculation unit,
Wavelet transform device.
請求項4記載のウェーブレット変換装置であって、
互いに独立に動作する4個の前記2点演算部を備え、
前記制御部は、前記変換処理として、
前記第2データ列に属し且つ前記入力データ列の中でP番目(データ番号Pは整数)の入力データを始点とする系列上の第2段階の中間データを算出する前記第2の変換処理と、
P−1番目の入力データを始点とする系列上の第2段階の一時データを算出する前記第3の変換処理と、
P−4番目の入力データを始点とする系列上の第M+1段階の中間データを算出する前記第6の変換処理と、
P−5番目の入力データを始点とする系列上の第L+1段階の一時データを算出する前記第7の変換処理と、
の4工程を前記各2点演算部に並列に実行させると共に、
P+2番目の入力データを始点とする系列上の第2段階の一時データを算出する前記第1の変換処理と、
前記P−1番目の入力データを始点とする系列上の第2段階の前記中間データを算出する前記第4の変換処理と、
P−2番目の入力データを始点とする系列上の第M段階の一時データを算出する前記第5の変換処理と、
前記P−5番目の入力データを始点とする系列上の第L+1段階の中間データを算出する前記第8の変換処理と、
の4個の処理をそれぞれ前記各2点演算部に並列に実行させるように制御する、ウェーブレット変換装置。
The wavelet transform device according to claim 4, wherein
It comprises four of said two-point arithmetic units operating independently of each other,
The control unit, as the conversion process,
A second conversion process of calculating intermediate data of a second stage on a sequence belonging to the second data sequence and starting from a P-th (data number P is an integer) input data in the input data sequence; ,
The third conversion processing of calculating temporary data of a second stage on a series starting from the P-1st input data;
The sixth conversion processing for calculating intermediate data at the (M + 1) th stage on a sequence starting from the P-4th input data;
The seventh conversion process of calculating temporary data at the (L + 1) th stage on a sequence starting from the P-5th input data;
The above four steps are executed in parallel by the respective two-point arithmetic units,
The first conversion processing of calculating temporary data of a second stage on a series starting from the P + 2th input data;
A fourth conversion process of calculating the intermediate data in a second stage on a sequence starting from the P-1st input data;
The fifth conversion processing for calculating the M-th stage temporary data on the series starting from the P-2nd input data;
The eighth conversion processing for calculating intermediate data at the (L + 1) th stage on a sequence starting from the P-5th input data;
A wavelet transform device that controls each of the two processing units to execute the four processes in parallel.
請求項1または請求項2記載のウェーブレット変換装置であって、
前記規格化手段は、
各入力データに前記規格化係数を乗算する規格化係数乗算器と、
前記規格化係数乗算器から出力されたデータを遅延させる遅延器と、
を含み、
前記中間データ変換手段は、
取り込まれた3点の入力データの中で第1および第2の入力データを加算する第1加算器と、該第1加算器から出力されたデータに所定のリフティング係数を乗算するリフティング係数乗算器と、該リフティング係数乗算器から出力されたデータと第3の入力データとを加算することで中間データを算出する第2加算器とからなる3点演算部と、
前記3点演算部から出力された中間データを取り込んで前記制御部から指定された出力先に出力する出力先選択部と、
を含み、
前記メモリ管理部は、
前記出力先選択部から出力された中間データを前記メモリに転送し記憶させるように制御する、
ウェーブレット変換装置。
The wavelet transform device according to claim 1 or 2, wherein
The normalizing means,
A normalization coefficient multiplier for multiplying each input data by the normalization coefficient,
A delay unit for delaying data output from the normalization coefficient multiplier,
Including
The intermediate data conversion means,
A first adder for adding the first and second input data among the three input data taken in, and a lifting coefficient multiplier for multiplying the data output from the first adder by a predetermined lifting coefficient A three-point operation unit comprising: a second adder that calculates intermediate data by adding data output from the lifting coefficient multiplier and third input data;
An output destination selection unit that takes in the intermediate data output from the three-point calculation unit and outputs the intermediate data to an output destination specified by the control unit;
Including
The memory management unit,
Controlling the intermediate data output from the output destination selection unit to be transferred to and stored in the memory;
Wavelet transform device.
請求項7記載のウェーブレット変換装置であって、
前記制御部は、前記変換処理として、
「前記第2データ列に属する入力データを始点とする系列」(以下、第2系列と呼ぶ。)上の第1段階の中間データと、その中間データの系列に対して1点前後する「前記第1データ列に属する入力データを始点とする系列」(以下、第1系列と呼ぶ。)上の2点の第1段階の中間データを加算したデータに所定のリフティング係数を乗算して得たデータとを加算することで、当該第2系列上の第2段階の中間データを1点当たり1クロック周期内に算出する第1の変換処理と、第1系列上の第1段階の中間データと、その第1段階の中間データの系列に対して1点前後する第2系列上の2点の第2段階の中間データを加算したデータに所定のリフティング係数を乗算して得たデータとを加算することで、当該第1系列上の第2段階の中間データを1点当たり1クロック周期内に算出する第2の変換処理と、
第2系列上の第M段階(段階数Mは1以上の整数)の中間データと、その第M段階の中間データの系列に対して1点前後する第1系列上の2点の第M段階の中間データを加算したデータに所定のリフティング係数を乗算して得たデータとを加算することで、当該第2系列上の第M+1段階の中間データを1点当たり1クロック周期内に算出する第3の変換処理と、
第1系列上の第L段階(段階数Lは1以上の整数)の中間データと、その第L段階の中間データの系列に対して1点前後する第2系列上の2点の第L+1段階の中間データを加算したデータに所定のリフティング係数を乗算して得たデータとを加算することで、当該第1系列上の第L+1段階の中間データを1点当たり1クロック周期内に算出する第4の変換処理と、
を全ての点の前記出力データが算出されるまで前記3点演算部に繰り返し実行させるように制御する、ウェーブレット変換装置。
The wavelet transform device according to claim 7, wherein
The control unit, as the conversion process,
The first-stage intermediate data on the “sequence starting from the input data belonging to the second data sequence” (hereinafter, referred to as a second sequence) and one point around the intermediate data sequence “ It is obtained by multiplying data obtained by adding intermediate data of the first stage of two points on a sequence starting from input data belonging to the first data sequence (hereinafter referred to as a first sequence) by a predetermined lifting coefficient. By adding the data, a first conversion process of calculating the second-stage intermediate data on the second sequence within one clock cycle per point, and a first-stage intermediate data on the first sequence Add the data obtained by multiplying the data obtained by adding the intermediate data of the second stage of the second series, which is about one point to the series of the intermediate data of the first stage, by a predetermined lifting coefficient. By doing, the intermediate data of the second stage on the first series A second conversion processing for calculating the data within one clock cycle per point,
Intermediate data at the M-th stage (the number of stages M is an integer equal to or greater than 1) on the second series, and two M-th stages on the first series that are about one point behind the series of intermediate data at the M-th The intermediate data of the (M + 1) th stage on the second sequence is calculated within one clock cycle by adding data obtained by multiplying the intermediate data of the second series by a predetermined lifting coefficient. 3 conversion processing;
Intermediate data at the L-th stage (the number of stages L is an integer equal to or greater than 1) on the first stream, and two points on the second stream at the L + 1-th stage, which is one point around the L-stage intermediate data series By adding the data obtained by multiplying the intermediate data of the first series by a predetermined lifting coefficient and adding the data obtained by multiplying the data by a predetermined lifting coefficient, the intermediate data of the (L + 1) th stage on the first series is calculated within one clock cycle per point. 4 conversion processing;
Is controlled so that the three-point calculation unit is repeatedly executed until the output data of all the points is calculated.
請求項8記載のウェーブレット変換装置であって、
互いに独立に動作する2個の前記3点演算部を備え、
前記制御部は、
前記第1データ列に属し且つ前記入力データ列の中でP番目(データ番号Pは整数)の入力データを始点とする系列上の前記中間データを算出する前記第2の変換処理と、
P−4番目の入力データを始点とする系列上の第L+1段階の前記中間データを算出する前記第4の変換処理と、
の2個の処理をそれぞれ前記各3点演算部に並列に実行させるように制御する、ウェーブレット変換装置。
The wavelet transform device according to claim 8, wherein
Comprising two of the three-point operation units operating independently of each other;
The control unit includes:
A second conversion process for calculating the intermediate data on a sequence belonging to the first data sequence and starting from a P-th (data number P is an integer) input data in the input data sequence;
The fourth conversion processing of calculating the intermediate data of the (L + 1) -th stage on the sequence starting from the P-4th input data;
A wavelet transform device for controlling the two processes of the three-point calculation units to execute the two processes in parallel.
請求項8または請求項9記載のウェーブレット変換装置であって、
前記制御部は、
前記入力データ列の中でP+3番目(データ番号Pは整数)の入力データを始点とする系列上の前記中間データを算出する前記第1の変換処理と、
P−1番目の入力データを始点とする系列上の第M+1段階の中間データを算出する前記第3の変換処理と、
の2個の処理をそれぞれ前記各3点演算部に並列に実行させるように制御する、ウェーブレット変換装置。
The wavelet transform device according to claim 8 or 9, wherein:
The control unit includes:
The first conversion processing of calculating the intermediate data on a sequence starting from the P + 3th (data number P is an integer) input data in the input data sequence;
The third conversion processing of calculating intermediate data at the (M + 1) th stage on a sequence starting from the (P-1) th input data;
A wavelet transform device for controlling the two processes of the three-point calculation units to execute the two processes in parallel.
請求項8記載のウェーブレット変換装置であって、前記制御部は、前記第1の変換処理〜前記第4の変換処理を並列にさせるように制御する、ウェーブレット変換装置。9. The wavelet transform device according to claim 8, wherein the control unit controls the first to fourth transform processes in parallel. 請求項1〜請求項11の何れか1項に記載のウェーブレット変換装置であって、
前記フィルタリング部は、直列に接続される第1フィルタリング部と第2フィルタリング部とから構成されており、
前記第1フィルタリング部は、水平方向および垂直方向のうちの一方向に帯域分割されている前記高域成分および前記低域成分のデータを入力し、これらのデータを合成してライン単位で算出し、
前記第2フィルタリング部は、前記第1フィルタリング部で算出された合成データに対して処理を実行することで、前記水平方向および前記垂直方向のうちの他方向の合成データを算出する、
ウェーブレット変換装置。
The wavelet transform device according to any one of claims 1 to 11, wherein
The filtering unit includes a first filtering unit and a second filtering unit connected in series,
The first filtering unit receives the data of the high-frequency component and the low-frequency component, which are band-divided in one of a horizontal direction and a vertical direction, and combines these data to calculate a line unit. ,
The second filtering unit calculates the combined data in the other direction of the horizontal direction and the vertical direction by performing a process on the combined data calculated by the first filtering unit.
Wavelet transform device.
リフティング構成に基づいて、帯域分割された高域成分のデータと低域成分のデータとを合成するウェーブレット変換方法であって、
(a)高域成分および低域成分の一方からなる第1データ列と、その他方からなる第2データ列とが画素単位で交互に配列されて構成される入力データ列から、入力データを選択的に取り込む工程と、
(b)前記工程(a)で取り込まれた前記入力データの各々に規格化係数を乗算することで第1段階の中間データへ1点当たり1クロック周期内に変換する工程と、
(c)第m段階(mは1以上の整数)の中間データを第m+1段階の中間データへ1点当たり1クロック周期内に算出する工程(第m段階の中間データが最終段階の中間データである場合を含む。この場合、第m+1段階の中間データは出力データである。)と、
を備え、
前記工程(b)および工程(c)を、全ての点の前記出力データが算出されるまで繰り返し実行し、且つ、繰り返し実行される前記工程(b)および工程(c)を1クロック周期内に並列に実行することを特徴とするウェーブレット変換方法。
A wavelet transform method for combining band-divided high-frequency component data and low-frequency component data based on a lifting configuration,
(A) Input data is selected from an input data sequence in which a first data sequence composed of one of a high-frequency component and a low-frequency component and a second data sequence composed of the other are alternately arranged in pixel units. The process of capturing
(B) multiplying each of the input data fetched in the step (a) by a normalization coefficient to convert the input data into a first stage intermediate data within one clock cycle per point;
(C) calculating the m-th stage (m is an integer of 1 or more) intermediate data into the (m + 1) -th stage intermediate data within one clock cycle per point (where the m-th stage intermediate data is the final stage intermediate data) In this case, the intermediate data at the (m + 1) th stage is output data.)
With
The steps (b) and (c) are repeatedly executed until the output data of all points are calculated, and the steps (b) and (c) executed repeatedly are performed within one clock cycle. A wavelet transform method, which is performed in parallel.
請求項13に記載のウェーブレット変換方法であって、
前記工程(c)は、
(c−1)「前記第2データ列に属する入力データを起点とする系列」(以下、第2系列と呼ぶ。)上の第1段階の中間データと、その中間データに対して1点前の「前記第1データ列に属する入力データを起点とする系列」(以下、第1系列と呼ぶ。)上の第1段階の中間データに所定のリフティング係数を乗算して得たデータとを加算することで、当該第2系列上の第2段階の一時データを1点当たり1クロック周期内に算出する工程と、
(c−2)前記工程(c−1)で算出され前記メモリに記憶された前記一時データと、その一時データの系列に対して1点後の第1系列上の第1段階の中間データに所定のリフティング係数を乗算して得たデータとを加算することで、当該第2系列上の第2段階の中間データを1点当たり1クロック周期内に算出する工程と、
(c−3)第1系列上の第1段階の中間データと、その中間データに対して1点前の第2系列上の第2段階の中間データに所定のリフティング係数を乗算して得たデータとを加算することで、当該第1系列上の第2段階の一時データを1点当たり1クロック周期内に算出する工程と、
(c−4)前記工程(c−3)で算出され前記メモリに記憶された前記一時データと、その一時データの系列に対して1点後の第2系列上の第2段階の中間データに所定のリフティング係数を乗算して得たデータとを加算することで、当該第1系列上の第2段階の中間データを1点当たり1クロック周期内に算出する工程と、
(c−5)第2系列上の第M段階(段階数Mは1以上の整数)の中間データと、その中間データの系列に対して1点前の第1系列上の第M段階の中間データに所定のリフティング係数を乗算して得たデータとを加算することで、当該第2系列上の第M+1段階の一時データを1点当たり1クロック周期内に算出する工程と、
(c−6)前記工程(c−5)で算出され前記メモリに記憶された前記一時データと、その一時データの系列に対して1点後の第1系列上の第M段階の中間データに所定のリフティング係数を乗算して得たデータとを加算することで、当該第2系列上の第M+1段階の一時データを1点当たり1クロック周期内に算出する工程と、
(c−7)第1系列上の第L段階(段階数Lは1以上の整数)の前記中間データと、その中間データの系列に対して1点前の第2系列上の第L+1段階の中間データに所定のリフティング係数を乗算して得たデータとを加算することで、当該第1系列上の第L+1段階の一時データを1点当たり1クロック周期内に算出する工程と、
(c−8)前記工程(c−7)で算出され前記メモリに記憶された前記一時データと、その一時データの系列に対して1点後の第2系列上の第L+1段階の中間データに所定のリフティング係数を乗算して得たデータとを加算することで、当該第1系列上の第L+1段階の中間データを1点当たり1クロック周期内に算出する工程と、
を備え、
前記工程(c−1)〜工程(c−8)を、全ての点の出力データが算出されるまで繰り返し実行させるように制御する、ウェーブレット変換方法。
The wavelet transform method according to claim 13, wherein
The step (c) comprises:
(C-1) Intermediate data at the first stage on the "series starting from the input data belonging to the second data string" (hereinafter referred to as "second series") and one point before the intermediate data Is added to the data obtained by multiplying the intermediate data of the first stage on the “sequence starting from the input data belonging to the first data string” (hereinafter referred to as the first series) by a predetermined lifting coefficient. Calculating the temporary data of the second stage on the second stream within one clock cycle per point;
(C-2) the temporary data calculated in the step (c-1) and stored in the memory, and the intermediate data of the first stage on the first series one point after the series of the temporary data Calculating intermediate data of the second stage on the second sequence within one clock cycle per point by adding the data obtained by multiplying by a predetermined lifting coefficient;
(C-3) Intermediate data in the first stage on the first stream and intermediate data in the second step on the second stream one point before the intermediate data are multiplied by a predetermined lifting coefficient. Calculating the temporary data of the second stage on the first stream within one clock cycle per point by adding
(C-4) the temporary data calculated in the step (c-3) and stored in the memory, and the intermediate data of the second stage on the second series one point after the series of the temporary data Calculating intermediate data of the second stage on the first series within one clock cycle per point by adding the data obtained by multiplying by a predetermined lifting coefficient;
(C-5) Intermediate data of the M-th stage (the number of stages M is an integer of 1 or more) on the second stream, and the middle of the M-th stage on the first stream one point before the series of the intermediate data Calculating temporary data of the (M + 1) th stage on the second stream within one clock cycle by adding the data obtained by multiplying the data by a predetermined lifting coefficient;
(C-6) The temporary data calculated in the step (c-5) and stored in the memory, and the intermediate data of the M-th stage on the first series one point after the series of the temporary data. Calculating the temporary data of the (M + 1) th stage on the second stream within one clock cycle per point by adding the data obtained by multiplying the predetermined lifting coefficient;
(C-7) The L-th stage (the number of stages L is an integer of 1 or more) of the intermediate data on the first stream and the L + 1-th stage on the second stream that is one point before the intermediate data series Calculating the temporary data of the (L + 1) -th stage on the first stream within one clock cycle by adding the intermediate data and data obtained by multiplying the intermediate data by a predetermined lifting coefficient;
(C-8) The temporary data calculated in the step (c-7) and stored in the memory, and the intermediate data of the L + 1-th stage on the second series one point after the series of the temporary data. Calculating intermediate data of the (L + 1) -th stage on the first stream within one clock cycle per point by adding data obtained by multiplying by a predetermined lifting coefficient;
With
A wavelet transform method that controls the steps (c-1) to (c-8) to be repeatedly executed until output data of all points are calculated.
請求項14記載のウェーブレット変換方法であって、
前記工程(c−1)および前記工程(c−3)を実行した後に、前記工程(c−5)および前記工程(c−7)を、前記出力データの一時データが算出されるまで実行し、
その後、前記工程(c−2)および前記工程(c−4)を実行した後に、前記工程(c−6)および前記工程(c−8)を、前記出力データが算出されるまで実行する、
ウェーブレット変換方法。
The wavelet transform method according to claim 14,
After executing the steps (c-1) and (c-3), the steps (c-5) and (c-7) are executed until temporary data of the output data is calculated. ,
Then, after executing the steps (c-2) and (c-4), the steps (c-6) and (c-8) are executed until the output data is calculated.
Wavelet transform method.
請求項14記載のウェーブレット変換方法であって、
前記第2データ列に属し且つ前記入力データ列の中でP番目(データ番号Pは整数)の入力データを始点とする系列上の第2段階の中間データを算出する前記工程(c−2)と、
P−1番目の入力データを始点とする系列上の第2段階の一時データを算出する前記工程(c−3)と、
P−4番目の入力データを始点とする系列上の第M+1段階の中間データを算出する前記工程(c−6)と、
P−5番目の入力データを始点とする系列上の第L+1段階の一時データを算出する前記工程(c−7)と、
の4工程を前記各2点演算部に並列に実行させると共に、
P+2番目の入力データを始点とする系列上の第2段階の一時データを算出する前記工程(c−1)と、
前記P−1番目の入力データを始点とする系列上の第2段階の前記中間データを算出する前記工程(c−4)と、
P−2番目の入力データを始点とする系列上の第M+1段階の一時データを算出する前記工程(c−5)と、
前記P−5番目の入力データを始点とする系列上の第L+1段階の中間データを算出する前記工程(c−8)と、
の4個の処理をそれぞれ並列に実行させるように制御する、
ウェーブレット変換方法。
The wavelet transform method according to claim 14,
The step (c-2) of calculating intermediate data of a second stage on a sequence belonging to the second data string and starting from a P-th (data number P is an integer) input data in the input data string; When,
The step (c-3) of calculating temporary data of a second stage on a series starting from the P-1st input data;
The step (c-6) of calculating intermediate data of the (M + 1) th stage on the sequence starting from the P-4th input data;
The step (c-7) of calculating temporary data at the (L + 1) th stage on the sequence starting from the P-5th input data;
The above four steps are executed in parallel by the respective two-point arithmetic units,
The step (c-1) of calculating temporary data of a second stage on a sequence starting from the P + 2th input data;
The step (c-4) of calculating the intermediate data of the second stage on the sequence starting from the P-1st input data;
The step (c-5) of calculating temporary data at the (M + 1) th stage on a sequence starting from the (P-2) th input data;
The step (c-8) of calculating intermediate data of the (L + 1) -th stage on a sequence starting from the P-5th input data;
Are controlled to execute the four processes in parallel, respectively.
Wavelet transform method.
請求項13に記載のウェーブレット変換方法であって、
前記工程(c)は、
(c−1)「前記第2データ列に属する入力データを始点とする系列」(以下、第2系列と呼ぶ。)上の第1段階の中間データと、その中間データの系列に対して1点前後する「前記第1データ列に属する入力データを始点とする系列」(以下、第1系列と呼ぶ。)上の2点の第1段階の中間データを加算したデータに所定のリフティング係数を乗算して得たデータとを加算することで、当該第2系列上の第2段階の中間データを1点当たり1クロック周期内に算出する工程と、(c−2)第1系列上の第1段階の中間データと、その中間データの系列に対して1点前後する第2系列上の2点の第2段階の中間データを加算したデータに所定のリフティング係数を乗算して得たデータとを加算することで、当該第1系列上の第2段階の中間データを1点当たり1クロック周期内に算出する工程と、(c−3)第2系列上の第M段階(段階数Mは1以上の整数)の中間データと、その第M段階の中間データの系列に対して1点前後する第1系列上の2点の第M段階の中間データを加算したデータに所定のリフティング係数を乗算して得たデータとを加算することで、当該第2系列上の第M+1段階の中間データを1点当たり1クロック周期内に算出する工程と、
(c−4)第1系列上の第L段階(段階数Lは1以上の整数)の中間データと、その第L段階の中間データの系列に対して1点前後する第2系列上の2点の第L+1段階の中間データを加算したデータに所定のリフティング係数を乗算して得たデータとを加算することで、当該第1系列上の第L+1段階の中間データを1点当たり1クロック周期内に算出する工程と、
を備え、
前記工程(c−1)〜工程(c−4)を、全ての点の前記出力データが算出されるまで繰り返し実行するウェーブレット変換方法。
The wavelet transform method according to claim 13, wherein
The step (c) comprises:
(C-1) The first-stage intermediate data on the “sequence starting from the input data belonging to the second data sequence” (hereinafter, referred to as the second sequence), and 1 for the intermediate data sequence A predetermined lifting coefficient is added to the data obtained by adding the intermediate data of the first stage of the two points on the “sequence starting from the input data belonging to the first data string” (hereinafter referred to as the first series) that is before or after the point. (C-2) calculating the intermediate data of the second stage on the second stream within one clock cycle per point by adding the data obtained by the multiplication; One-stage intermediate data, and data obtained by multiplying data obtained by adding two points of second-stage intermediate data on a second series that is one point around the intermediate data series by a predetermined lifting coefficient, and Is added to the intermediate data of the second stage on the first series. (C-3) intermediate data of the M-th stage (the number of stages M is an integer of 1 or more) on the second stream, and intermediate data of the M-th stage By adding a data obtained by multiplying the data obtained by multiplying a predetermined lifting coefficient to data obtained by adding two points of the M-th stage intermediate data on the first stream which is about one point to the second stream. Calculating the intermediate data of the (M + 1) th stage within one clock cycle per point;
(C-4) L-stage intermediate data on the first stream (the number of stages L is an integer equal to or greater than 1) and 2nd-stream data on the second stream that is about one point away from the L-stage intermediate data stream By adding the data obtained by multiplying the data obtained by multiplying the intermediate data of the (L + 1) -th stage of the point by a predetermined lifting coefficient, the intermediate data of the (L + 1) -th stage on the first stream can be changed by one clock cycle per point. Calculating within
With
A wavelet transform method in which the steps (c-1) to (c-4) are repeatedly executed until the output data of all points is calculated.
請求項17記載のウェーブレット変換方法であって、
前記第1データ列に属し且つ前記入力データ列の中でP番目(データ番号Pは整数)の入力データを始点とする系列上の第2段階の中間データを算出する前記工程(c−2)と、
P−4番目の入力データを始点とする系列上の第L+1段階の前記中間データを算出する前記工程(c−4)と、
の2個の処理をそれぞれ並列に実行させるように制御する、
ウェーブレット変換方法。
The wavelet transform method according to claim 17, wherein
The step (c-2) of calculating intermediate data of a second stage on a sequence belonging to the first data sequence and starting from a P-th (data number P is an integer) input data in the input data sequence. When,
The step (c-4) of calculating the intermediate data of the (L + 1) -th stage on the sequence starting from the P-4th input data;
Is controlled so that the two processes are executed in parallel.
Wavelet transform method.
請求項17または請求項18記載のウェーブレット変換方法であって、
前記入力データ列の中でP+3番目(データ番号Pは整数)の入力データを始点とする系列上の中間データを算出する前記工程(c−1)と、
P−1番目の入力データを始点とする系列上の第M+1段階の中間データを算出する前記工程(c−3)と、
の2個の処理をそれぞれ並列に実行させるように制御する、
ウェーブレット変換方法。
A wavelet transform method according to claim 17 or claim 18, wherein
The step (c-1) of calculating intermediate data on a sequence starting from the (P + 3) th (data number P is an integer) input data in the input data sequence;
The step (c-3) of calculating intermediate data at the (M + 1) -th stage on a sequence starting from the (P-1) th input data;
Is controlled so that the two processes are executed in parallel.
Wavelet transform method.
請求項17記載のウェーブレット変換方法であって、前記工程(c−1)〜工程(c−4)を並列に実行する、ウェーブレット変換方法。18. The wavelet transform method according to claim 17, wherein the steps (c-1) to (c-4) are performed in parallel. 請求項13〜請求項20の何れか1項に記載のウェーブレット変換方法であって、
低域成分と高域成分に帯域分割された2次元画像データに対して、当該2次元画像データの水平方向および垂直方向のうちの一方向にライン単位で前記工程(a)〜工程(c)を適用することによって合成データ列を算出し、この算出された合成データ列に対して、前記水平方向および前記垂直方向のうちの他方向に前記工程(a)〜工程(c)を適用する、ウェーブレット変換方法。
The wavelet transform method according to any one of claims 13 to 20, wherein
For the two-dimensional image data band-divided into a low-frequency component and a high-frequency component, the steps (a) to (c) are performed in line units in one of the horizontal direction and the vertical direction of the two-dimensional image data. Is applied, and the steps (a) to (c) are applied to the calculated combined data string in the other of the horizontal direction and the vertical direction. Wavelet transform method.
JP2002362726A 2002-12-13 2002-12-13 Wavelet transform apparatus and wavelet transform method Expired - Fee Related JP4223795B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2002362726A JP4223795B2 (en) 2002-12-13 2002-12-13 Wavelet transform apparatus and wavelet transform method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002362726A JP4223795B2 (en) 2002-12-13 2002-12-13 Wavelet transform apparatus and wavelet transform method

Publications (2)

Publication Number Publication Date
JP2004194224A true JP2004194224A (en) 2004-07-08
JP4223795B2 JP4223795B2 (en) 2009-02-12

Family

ID=32761089

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002362726A Expired - Fee Related JP4223795B2 (en) 2002-12-13 2002-12-13 Wavelet transform apparatus and wavelet transform method

Country Status (1)

Country Link
JP (1) JP4223795B2 (en)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100628441B1 (en) 2004-09-16 2006-09-26 전남대학교산학협력단 Apparatus for lifting discrete wavelet transform of JPEG2000
JP2008288883A (en) * 2007-05-17 2008-11-27 Sony Corp Information processing device and method
US8204331B2 (en) 2007-05-17 2012-06-19 Sony Corporation Information processing apparatus and method to reduce delay in image decoding
CN108829921A (en) * 2018-05-03 2018-11-16 天津大学 VLSI design method based on multilevel two-dimensional wavelet transform
CN109408770A (en) * 2018-09-08 2019-03-01 天津大学 High performance two-dimensional discrete wavelet conversion architecture design method based on boosting algorithm
CN113554722A (en) * 2021-07-22 2021-10-26 辽宁科技大学 Improved EZW-based image compression method for crown word number of RMB banknote

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100628441B1 (en) 2004-09-16 2006-09-26 전남대학교산학협력단 Apparatus for lifting discrete wavelet transform of JPEG2000
JP2008288883A (en) * 2007-05-17 2008-11-27 Sony Corp Information processing device and method
US8204331B2 (en) 2007-05-17 2012-06-19 Sony Corporation Information processing apparatus and method to reduce delay in image decoding
CN108829921A (en) * 2018-05-03 2018-11-16 天津大学 VLSI design method based on multilevel two-dimensional wavelet transform
CN108829921B (en) * 2018-05-03 2022-05-17 天津大学 VLSI design method based on multilevel two-dimensional discrete wavelet transform
CN109408770A (en) * 2018-09-08 2019-03-01 天津大学 High performance two-dimensional discrete wavelet conversion architecture design method based on boosting algorithm
CN109408770B (en) * 2018-09-08 2022-05-20 天津大学 Lifting algorithm-based two-dimensional discrete wavelet transform architecture design method
CN113554722A (en) * 2021-07-22 2021-10-26 辽宁科技大学 Improved EZW-based image compression method for crown word number of RMB banknote
CN113554722B (en) * 2021-07-22 2023-08-15 辽宁科技大学 Image compression method for crown word number of RMB paper currency based on improved EZW

Also Published As

Publication number Publication date
JP4223795B2 (en) 2009-02-12

Similar Documents

Publication Publication Date Title
US5838377A (en) Video compressed circuit using recursive wavelet filtering
US5984514A (en) Method and apparatus for using minimal and optimal amount of SRAM delay line storage in the calculation of an X Y separable mallat wavelet transform
JP3855827B2 (en) Two-dimensional subband encoding device
US8204331B2 (en) Information processing apparatus and method to reduce delay in image decoding
JP4223795B2 (en) Wavelet transform apparatus and wavelet transform method
JP4245123B2 (en) Wavelet processing apparatus and wavelet processing method
Dia et al. Multi-level discrete wavelet transform architecture design
US7676096B2 (en) Modular, low cost, memory efficient, input resolution independent, frame-synchronous, video compression system using multi stage wavelet analysis and temporal signature analysis with a highly optimized hardware implementation
Chen et al. A scalable systolic array architecture for 2D discrete wavelet transforms
Chakrabarti et al. Efficient realizations of analysis and synthesis filters based on the 2-D discrete wavelet transform
JP2002237740A (en) Digital filtering method and device
US7940991B2 (en) Image signal processing apparatus
JP4102165B2 (en) Wavelet transform apparatus and wavelet transform method
EP1585060A1 (en) Subband video coding with temporal prediction
KR100300338B1 (en) VLSI Architecture for the 2-D Discrete Wavelet Transform
Argüello et al. Architecture for wavelet packet transform based on lifting steps
KR20140113880A (en) Vc-2 decoding using parallel decoding paths
KR100395614B1 (en) Two dimensional discrete wavelet transformation apparatus
JP2014119949A (en) Super-resolution system and program
KR100628441B1 (en) Apparatus for lifting discrete wavelet transform of JPEG2000
KR20080028608A (en) Apparatus and system for lifting discrete wavelet transform
JP4700838B2 (en) Filter processing device
KR100723043B1 (en) Apparatus and method for discrete wavelet transforming image data
KR100810137B1 (en) Apparatus and method for reconstructing image using inverse discrete wavelet transforming
KR100771153B1 (en) Discrete wavelet transform device and the same method

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20051209

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20081107

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20081118

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20081120

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111128

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111128

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121128

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121128

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121128

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20151128

Year of fee payment: 7

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees