JP4223795B2 - Wavelet transform apparatus and wavelet transform method - Google Patents

Wavelet transform apparatus and wavelet transform method Download PDF

Info

Publication number
JP4223795B2
JP4223795B2 JP2002362726A JP2002362726A JP4223795B2 JP 4223795 B2 JP4223795 B2 JP 4223795B2 JP 2002362726 A JP2002362726 A JP 2002362726A JP 2002362726 A JP2002362726 A JP 2002362726A JP 4223795 B2 JP4223795 B2 JP 4223795B2
Authority
JP
Japan
Prior art keywords
data
series
stage
intermediate data
output
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2002362726A
Other languages
Japanese (ja)
Other versions
JP2004194224A (en
Inventor
雄介 水野
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
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

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

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 0004223795
【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]
BACKGROUND OF THE INVENTION
The present invention relates to a compression / decompression technique using wavelet transform.
[0002]
[Prior art]
As a high-efficiency encoding method for image data, an image compression / decompression method based on discrete wavelet transformation (hereinafter referred to as “DWT”) is known, which is established by ISO (International Organization for Standardization). Adopted in JPEG2000 (Joint Photographic Experts Group 2000) system. As a DWT calculation method, a convolution calculation method and a calculation method based on a lifting scheme are known, and both output the same result, but the latter calculation method based on the lifting configuration is more preferable. Compared to the convolution calculation method, there are advantages such as being capable of high-speed calculation with a small amount of memory usage and being suitable for lossless (reversible) compression.
[0003]
In general, the DWT can be configured using a filter bank that divides an original signal into a high frequency component (high frequency component) and a low frequency component (low frequency component). The inverse transform (inverse DWT) can be configured using a filter bank that synthesizes the band-divided high-frequency component and low-frequency component.
[0004]
FIG. 35 schematically shows filter banks 200S and 200A used in DWT and its inverse transformation (inverse DWT). The decomposition-side filter bank 200S that decomposes the input signal x (n) into two bands of a low-frequency component and a high-frequency component includes a low-pass filter 201L that passes the low-frequency component, a high-pass filter 201H that passes the high-frequency component, The first and second down samplers 202 and 203 are configured. The low-pass filter 201L and the high-pass filter 201H are configured by FIR filters that perform a convolution operation. Also, the first and second down samplers 202 and 203 respectively thin out the input signals from the filters 201L and 201H every other point and output the signals by halving the signal length. According to the JPEG2000 standard, the first down sampler 202 thins out odd-numbered signals and outputs even-numbered signals (low frequency components), and the second down-sampler 203 thins out even-numbered signals to output odd-numbered signals (high Output).
[0005]
On the other hand, a 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 perform convolution operations. In general, the synthesis-side filters 206L and 206H and the decomposition-side filters 201L and 201H are configured to satisfy a complete reconstruction condition. The The first and second upsamplers 204 and 205 insert a zero value between each point and double the signal length for output. The adder 207 adds the signals output from the synthesis filters 206L and 206H and outputs a synthesized signal x ′ (n). Here, when the complete reconstruction condition is satisfied, x (n) = x ′ (n) is satisfied.
[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 order of the two-dimensional image data in the vertical direction and the horizontal direction. FIG. 36 is a band division diagram schematically showing two-dimensional image data 210 that has been subjected to DWT at a third-order decomposition level. Each block in the two-dimensional image data 210 represents a subband (band component). For example, the subband HH1 includes a vertical high-frequency component (H) and a horizontal high-frequency component (H) at the decomposition level 1, and the subband LH2 includes a vertical high-frequency component (H) at the decomposition level 2 ( H) and a horizontal low-frequency component (L). In general, the subband XYn (X and Y are either “H” or “L” and n is the 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 the decomposition level 3 DWT is as follows. First, by applying the decomposition-side filter bank 200S twice to the entire two-dimensional image, decomposition-level 1 subbands HH1, HL1, LH1, and LL1 (not shown) are generated. Next, decomposition-level 2 subbands HH2, HL2, LH2, and LL2 (not shown) are generated by applying decomposition-side filter bank 200S twice to the lowest-level subband LL1 at decomposition level 1. . Then, the decomposition-side filter bank 200S is applied twice to the lowest-level subband LL2 of decomposition level 2 to generate decomposition level 3 subbands HH3, HL3, LH3, and LL3.
[0008]
Conversely, the processing procedure of inverse DWT for synthesizing subbands at decomposition level 3 is as follows. First, the synthesis-side filter bank 200A is applied twice to the subbands HH3, HL3, LH3, and LL3, thereby generating the lowest-level subband LL2 of decomposition level 2. Next, the synthesis-side filter bank 200A is applied twice to the decomposition level 2 subbands HH2, HL2, LH2, and LL2, thereby generating the lowest band subband LL1 of decomposition level 1. Then, by applying the synthesis-side filter bank 200A twice to the decomposition level 1 subbands HH1, HL1, LH1, and LL1, a two-dimensional image is generated.
[0009]
In the above, an example of the third-order decomposition level has been shown. However, in the JPEG2000 system, in general, third-order to eighth-order or higher decomposition levels are employed. Further, in this example, DWT is applied to one entire still image at once, but in practice, one still image is referred to as a plurality of rectangular “tiles” due to mounting memory capacity and the like. Dividing into areas and executing DWT in units of tiles are also performed.
[0010]
On the other hand, DWT and inverse DWT can also be realized in a lifting configuration. Since the present invention relates to the processing on the composition side, the inverse DWT processing will be described here. 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 output data X (2n), X (2n + 1) This relational expression can be expressed by a lifting configuration defined by the following expression (1). Since the processing on the combining side is inverse DWT, Y is used for input data and X is used for output data throughout the following description.
[0011]
[Expression 1]
Figure 0004223795
[0012]
In the above equation (1), odd-numbered input data Y (2n + 1) indicates high-frequency component data obtained by the decomposition process, and even-numbered input data Y (2n) is a low-frequency component obtained by the decomposition process. The data is shown. 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 α, β, γ, and δ are called lifting coefficients, the coefficients κ and 1 / κ are called normalization coefficients, and these coefficients α, β, γ, δ, κ, and 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 the lattice structure shown in FIG. The grid points arranged in the vertical column at the left end of FIG. 37 respectively represent input data..., Y (2n-1), (2n),..., Y (2n + 9), Y (2n + 10),. ing. That is, it is data in which low-frequency component data and high-frequency component data decomposed by DWT are alternately arranged. Further, the grid point at the right end of the line segment extending rightward in the horizontal direction from these input data is output data..., X (2n-1), X (2n),..., X (2n + 9), 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: integer) to a grid point indicating the output data X (k) represents a series of intermediate data. Yes. For example, on the line segment between the input data Y (2n) and the output data X (2n), intermediate data S generated starting from the input data Y (2n)1 n, S2 nThere is a lattice point representing.
[0015]
The calculation based on the lattice structure is performed according to the following rules (A) to (C). (A) Data representing a lattice point moves along a line segment extending rightward from the lattice point. (B) Data that moves through each line segment is multiplied by a coefficient attached to the line segment (coefficient multiplication process). (C) At each grid point, data moved from the left along the line segment is added (addition process). For example, intermediate data S on a line segment between input / output data Y (2n) and X (2n)2 nS2 n= 1 x S1 n−δ × D1 n-1−δ × D1 nIt is 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 S2 nIs the three grid points D on the left side of the drawing1 n-1, S1 n, D1 nThis is the sum of the data transitioned from. It can be seen that all the intermediate data is calculated by adding the data of the three points shifted from the three grid points on the left side of the intermediate data. The JPEG2000 system recommends that one point of intermediate data calculation processing 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. Lattice point x1, X2, XThree, Y represent data, and α, β, γ represent coefficients attached to line segments connecting the lattice points. As shown in the figure, it is understood that 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 calculation recommended by the above-described JPEG2000 system 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 lattice diagrams for explaining an example of the processing procedure of DWT inverse transform using the lifting configuration. Although not shown, it is assumed that the coefficients shown in FIG. 37 are associated with all the line segments connecting the lattice points. In FIG. 39 to FIG. 48, grid points filled in black represent input or calculated data points, and grid points filled only in the upper half are points of temporary data for which only the processing of step a is completed. The blank grid points represent uncalculated points that have not been processed in either step a or step b. All of the processes shown in these drawings are executed within one clock cycle.
[0020]
In the N-th (N: integer) processing shown in FIG. 39, the input data Y (2n + 4) in the target area N1 is normalized, so that the first stage starting from the even-numbered input data Y (2n + 4). Intermediate data S1 n + 2Is calculated.
[0021]
In all of the (N + 1) th to N + 4th processes shown in FIGS. 40 to 43, step a is executed. In the N + 1th process (FIG. 40), the intermediate data S of two points in the target area A1.1 n + 2, D1 n + 1, The second-stage temporary data (S) starting from the even-numbered input data X (2n + 4).2 n + 2(In this way, when temporary data is expressed, the data is enclosed in parentheses to be distinguished). In the next N + 2nd process (FIG. 41), two points of intermediate data D in the target area A21 n + 1, S2 n + 1Is used as the second stage temporary data (D) starting from the odd-numbered input data Y (2n + 3).2 n + 1) Is calculated. In the next N + 3rd process (FIG. 42), intermediate data S of two points in the target area A3.2 n + 1, D2 nIs used to calculate temporary output data (X (2n + 2)) on a series starting from even-numbered input data Y (2n + 2). In the N + 4th process (FIG. 43), two points of data D in the target area A42 n, X (2n) is used to calculate temporary output data (X (2n + 1)) on a series starting from odd-numbered input data Y (2n + 1).
[0022]
In the next N + 5th process (FIG. 44), the input data Y (2n + 5) in the target area N2 is normalized, so that the first stage in the sequence starting from the odd-numbered input data Y (2n + 5) is used. Intermediate data D1 n + 2Is calculated.
[0023]
Next, in the (N + 6) th to N + 9th processes shown in FIGS. 45 to 48, the above step b is executed. In the N + 6th process (FIG. 45), intermediate data D in the target area B11 n + 2And the temporary data (S2 n + 2) And the intermediate data S2 n + 2Is calculated. In the next N + 7th process (FIG. 46), the intermediate data S calculated in the N + 6th process in the target area B2 is obtained.2 n + 2And the temporary data (D2 n + 1) And intermediate data D2 n + 1Is calculated. In the next N + 8th process (FIG. 47), intermediate data D calculated in the N + 7th process in the target area B3.2 n + 1The output data X (2n + 2) is calculated by the process using the temporary output data (X (2n + 2)) calculated in the N + 3th process. In the N + 9th process (FIG. 48), the output data X (2n + 2) calculated in the N + 8th process in the target area B4 and the temporary output data (X (2n)) calculated in the N + 4th process are used. Output data X (2n + 1) is calculated.
[0024]
Next, in the N + 10th process (not shown), the normalization process using the input data Y (2n + 6) is performed as in the Nth process, and thereafter, the same process as the N + 1th to N + 9th processes is performed. Is repeatedly executed.
[0025]
In this way, by inputting the input data Y (2n + 4) and Y (2n + 5) in which the high frequency component and the low frequency component are arranged alternately, the output data X (2n + 2) and X (2n + 1) as the synthesis result are calculated. In order to do this, it can be seen that the Nth to N + 9th 10 clock cycles are required. Therefore, an average of 5 clock cycles is required to calculate one point of output data. There is a need for a processing method that can execute the inverse DWT operation at high speed by further shortening the 5-clock cycle.
[0026]
In view of the above problems and the like, the present invention intends to provide a wavelet transform apparatus and a wavelet transform method that can efficiently execute a wavelet transform based on a lifting configuration in a short time.
[0027]
[Means for Solving the Problems]
In order to solve the above problem, the invention described in claim 1 is a wavelet transform device that synthesizes high-frequency component data and low-frequency component data that have been band-divided based on a lifting configuration, Output data synthesized by taking in an input data sequence formed 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 one in pixel units A filtering unit that calculates a sequence, and the filtering unit multiplies each of the input data sequences by a predetermined normalization coefficient, thereby converting each input data to intermediate data of the first stage by one clock per point. Normalization means for executing one or more normalization processes for conversion within a period, and each of the first stage intermediate data standardized by the normalization means for one or more stages Convert one series of intermediate data to one point within one clock cycle, or execute one or a plurality of conversion processes to convert each of the final stage intermediate data into output data within one clock cycle per point Intermediate data conversion means, and the control unit outputs the singular or plural normalization processes and the singular or plural conversion processes to the normalization means and the intermediate data conversion means at all points of the output. It is repeatedly executed until data is calculated, and at least two of the one or more normalization processes and the one or more conversion processes that are repeatedly executed are executed in parallel within one clock cycle. It is characterized by controlling to.
[0028]
A second aspect of the present invention is the wavelet transform device according to the first aspect, wherein the normalization unit and the intermediate data conversion unit execute the normalization process and the conversion process in parallel.
[0029]
The invention according to claim 3 is the wavelet transform device according to claim 1 or 2, wherein the normalizing means multiplies each input data by the normalization coefficient, and the standard A delay unit that delays the data output from the conversion coefficient multiplier, and the intermediate data conversion means multiplies one of the two points of intermediate data by a predetermined lifting coefficient, and the lifting coefficient A two-point arithmetic unit comprising an adder that adds the data output from the multiplier and the other of the intermediate data of the two points, and the data output from the two-point arithmetic unit are fetched and designated by the control unit An output destination selection unit for outputting to the output destination, and the wavelet transform device further includes a memory management unit and a memory 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]
The invention according to claim 4 is the wavelet transform device according to claim 3, wherein the control unit performs, as the conversion process, “a series starting from input data belonging to the second data string” (hereinafter, referred to as “first series”). The intermediate data of the first stage above and the “series starting from input data belonging to the first data string” one point before the intermediate data (hereinafter referred to as the first series). .) By adding the intermediate data of the first stage to the data obtained by multiplying a predetermined lifting coefficient, the temporary data of the second stage on the second series is added 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 stage on the first series one point after the temporary data series. Multiply intermediate data by a predetermined lifting coefficient The second conversion process for 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 above, and the first stage on the first series By adding the intermediate data and the data obtained by multiplying the intermediate data of the second stage on the second series one point before the intermediate data by a predetermined lifting coefficient, the intermediate data A third conversion process for calculating second-stage temporary data within one clock cycle per point; the temporary data calculated by the third conversion process and stored in the memory; and a series of the temporary data On the other hand, by adding the intermediate data of the second stage on the second series one point later to the data obtained by multiplying the predetermined lifting coefficient, the intermediate data of the second stage on the first series is added. The fourth variable calculated within one clock cycle per point Processing, intermediate data of the M stage on the second series (stage number M is an integer of 1 or more), and intermediate data of the M stage on the first series one point before the series of the intermediate data A fifth conversion process for calculating the M + 1-th stage temporary data on the second series within one clock cycle by adding the data obtained by multiplying by a predetermined lifting coefficient; 5 by multiplying the temporary data calculated by the conversion process of 5 and stored in the memory with the intermediate data of the M-th stage on the first series one point after the temporary data series by a predetermined lifting coefficient. By adding the obtained data, the sixth conversion process for calculating the M + 1 stage intermediate data on the second series within one clock cycle per point, and the L stage (stage) on the first series The number L is an integer greater than or equal to 1) and the intermediate data The data obtained by multiplying the intermediate data of the (L + 1) th stage on the second series one point before the data series by a predetermined lifting coefficient is added to the (L + 1) th stage on the first series. Of the temporary data in one clock cycle per point, the temporary data calculated in the seventh conversion process and stored in the memory, and 1 for the temporary data series By adding the intermediate data at the (L + 1) th stage on the second series after the point and the data obtained by multiplying the predetermined lifting coefficient, the intermediate data at the (L + 1) th stage on the first series is added to each point. Control is performed so that the second point calculation unit repeatedly executes the eighth conversion processing calculated within one clock cycle until the output data of all points is calculated.
[0031]
The invention according to claim 5 is the wavelet transform device according to claim 4, wherein the control unit executes the first conversion process and the third conversion process, and then executes the fifth conversion process and The seventh conversion process is performed by the two-point calculation unit until the temporary data of the final stage is calculated, and then the second conversion process and the fourth conversion process are performed. Control is performed such that the sixth conversion process and the eighth conversion process are executed by the two-point calculation unit until the output data is calculated.
[0032]
A sixth aspect of the present invention is the wavelet transform device according to the fourth aspect of the present invention, comprising the two two-point arithmetic units that operate independently of each other, and the control unit performs the second data as the conversion process. A second conversion process for calculating second-stage intermediate data on a sequence belonging to a column and starting from P-th input data (data number P is an integer) in the input data sequence; The third conversion process for calculating the second stage temporary data on the series starting from the th input data and the M + 1 stage intermediate data on the series starting from the P-4th input data Each of the two-point arithmetic units includes four steps of the sixth conversion process to be performed and the seventh conversion process to calculate L + 1 stage temporary data on the series starting from the P-5th input data. In parallel with P + 2 The first conversion process for calculating second-stage temporary data on the series starting from data and the second-stage intermediate data on the series starting from the P-1th input data are calculated. The fourth conversion process, the fifth conversion process for calculating the M-th stage temporary data on the series starting from the P-2th input data, and the P-5th input data as the start point Control is performed so that each of the two point calculation units executes the four processes of the eighth conversion process for calculating the intermediate data of the (L + 1) -th stage on the series to be executed.
[0033]
The invention according to claim 7 is the wavelet transform device according to claim 1 or 2, wherein the normalizing means multiplies each input data by the normalization coefficient, and the standard A delay unit for delaying the data output from the quantization coefficient multiplier, wherein the intermediate data converting means adds a first input data and a second input data among the three input data taken in. An adder, a lifting coefficient multiplier that multiplies the data output from the first adder by a predetermined lifting coefficient, and the data output from the lifting coefficient multiplier and the third input data are added. A three-point arithmetic unit comprising a second adder that calculates intermediate data, and an output destination selection unit that takes in the intermediate data output from the three-point arithmetic unit and outputs it to the output destination designated 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 series starting from input data belonging to the second data string” (hereinafter referred to as “first series”). The intermediate data in the first stage above and the “series starting from input data belonging to the first data string” (hereinafter referred to as the first series), which is one point before and after the intermediate data series in the first stage. 2) The intermediate data of the second stage on the second series is added by adding the data obtained by multiplying the above two points of the intermediate data of the first stage to the data obtained by multiplying the predetermined lifting coefficient. Is calculated within one clock cycle per point, the first stage intermediate data on the first series, and the second series around one point relative to the first stage intermediate data series The intermediate data of the second stage of the above two points were added A second conversion process for calculating the intermediate data of the second stage on the first sequence within one clock cycle per point by adding the data obtained by multiplying the data by a predetermined lifting coefficient; The intermediate data of the Mth stage (the number of stages M is an integer of 1 or more) on the second series, and the Mth of two points on the first series that are around one point with respect to the series of intermediate data of the Mth stage By adding the data obtained by multiplying the intermediate data of the stages to the data obtained by multiplying 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. The third conversion process, the intermediate data of the Lth stage (the number of stages L is an integer of 1 or more) on the first series, and the second series on the second series of about one point relative to the intermediate data series of the Lth stage To the data obtained by adding the intermediate data of the (L + 1) -th stage of the two points A fourth conversion process for calculating the intermediate data of the (L + 1) -th stage on the first series within one clock cycle by adding the data obtained by multiplying the footing coefficient is performed at all points. Until the output data is calculated, the three-point calculation unit is repeatedly executed.
[0035]
The invention according to claim 9 is the wavelet transform device according to claim 8, comprising the two three-point arithmetic 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 series starting from the Pth input data (data number P is an integer) in the input data string, and the P-4th input data as the starting point. Two processes of the fourth conversion process for calculating the intermediate data of the (L + 1) -th stage in the series are controlled so that each of the three-point arithmetic units is executed in parallel.
[0036]
A tenth aspect of the present invention is the wavelet transform device according to the eighth or ninth aspect, wherein the control unit starts the input data of P + 3th (data number P is an integer) in the input data string. The first conversion process for calculating the intermediate data on the series, and the third conversion process for calculating the M + 1 stage intermediate data on the series starting from the (P-1) th input data; The two processes are controlled so that each of the three-point arithmetic units is executed in parallel.
[0037]
The invention according to claim 11 is the wavelet transform device according to claim 8, wherein the control unit controls the first conversion process to the fourth conversion process 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 inputs the data of the high-frequency component and the low-frequency component that are band-divided in one of the horizontal direction and the vertical direction, and synthesizes these data The second filtering unit performs processing 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 processed. Is calculated.
[0039]
A thirteenth aspect of the present invention is a wavelet transform method for synthesizing band-divided high-frequency component data and low-frequency component data based on a lifting configuration, comprising: (a) a high-frequency component and a low-frequency component A step of selectively fetching input data from an input data sequence formed by alternately arranging a first data sequence consisting of one of the second data sequences and a second data sequence consisting of the other; and (b) Converting each of the input data fetched in step (a) by a normalization coefficient to convert it into intermediate data of the first stage within one clock cycle per point; and (c) m-th stage (m Includes a step of calculating intermediate data of 1 or more integers to intermediate data of the (m + 1) th stage within one clock period per point (the case where the intermediate data of the mth stage is the intermediate data of the final stage. In this case, M + 1 The intermediate data of the floor is output data.), And the step (b) and the step (c) are repeatedly executed until the output data of all points are calculated, and are repeatedly executed. The steps (b) and (c) are executed in parallel within one clock cycle.
[0040]
The invention according to a fourteenth aspect is the wavelet transform method according to the thirteenth aspect, wherein the step (c) includes (c-1) “series starting from input data belonging to the second data string” ( The intermediate data of the first stage above and the “series starting from input data belonging to the first data string” one point before the intermediate data (hereinafter referred to as the first series) (hereinafter referred to as the first series). The intermediate data of the first stage above is added to the data obtained by multiplying a predetermined lifting coefficient to add the temporary data of the second stage on the second series to one clock per point. A step of calculating within a cycle; (c-2) the temporary data calculated in step (c-1) and stored in the memory; and the first sequence one point after the temporary data sequence Multiply the intermediate data of the first stage by a predetermined lifting coefficient The step of calculating the intermediate data of the second stage on the second series within one clock cycle per point by adding the obtained data, and (c-3) the first stage on the first series Of the intermediate data and the data obtained by multiplying the intermediate data of the second stage on the second series one point before the intermediate data by a predetermined lifting coefficient, on the first series Calculating the second stage temporary data within one clock cycle per point, (c-4) the temporary data calculated in step (c-3) and stored in the memory, and the temporary data The intermediate data of the second stage on the first series by adding the intermediate data of the second stage on the second series one point later to the data obtained by multiplying the series by a predetermined lifting coefficient. Calculating data within one clock cycle per point; (c 5) Predetermined as intermediate data of the Mth stage (the number of stages M is an integer of 1 or more) on the second series and the intermediate data of the Mth stage on the first series one point before the intermediate data series (C-6) the step of calculating the M + 1-th stage temporary data on the second series within one clock cycle by adding the data obtained by multiplying the lifting coefficients of (c-6) The temporary data calculated in (c-5) and stored in the memory and the intermediate data of the Mth stage on the first series one point after the temporary data series are multiplied by a predetermined lifting coefficient. And (c-7) the L-th stage on the first sequence, by adding the M + 1-th stage temporary data on the second sequence within one clock cycle per point by adding the obtained data The intermediate data (the number of steps L is an integer of 1 or more) and the intermediate data The data obtained by multiplying the intermediate data of the (L + 1) th stage on the second series one point before the data series by a predetermined lifting coefficient is added to the (L + 1) th stage on the first series. (C-8) the temporary data calculated in step (c-7) and stored in the memory, and a series of the temporary data The intermediate data of the (L + 1) th stage on the first series is added to the data obtained by multiplying the intermediate data of the (L + 1) th stage on the second series one point later by the predetermined lifting coefficient, thereby obtaining one point of the intermediate data of the (L + 1) th stage on the first series. And the step (c-1) to step (c-8) are controlled to be repeatedly executed until the output data of all points are calculated.
[0041]
Invention of Claim 15 is the wavelet transformation method of Claim 14, Comprising: After performing the said process (c-1) and the said process (c-3), the said process (c-5) and the said process (C-7) is executed until the temporary data of the output data is calculated, and then after the step (c-2) and the step (c-4) are executed, the step (c-6) is executed. And the step (c-8) is executed until the output data is calculated.
[0042]
The invention described in claim 16 is the wavelet transform method according to claim 14, wherein the input data belonging to the second data string and P-th (data number P is an integer) in the input data string is a starting point. The step (c-2) for calculating the second stage intermediate data on the series to be processed and the step (c-) for calculating the second stage temporary data on the series starting from the P-1th input data. 3), the step (c-6) for calculating the intermediate data of the (M + 1) -th stage on the sequence starting from the P-4th input data, and the sequence starting from the P-5th input data The step (c-7) for calculating the temporary data of the (L + 1) -th stage and the second step on the series starting from the (P + 2) -th input data while causing the two-point arithmetic units to execute the four steps in parallel. The step (c-1) of calculating temporary data of The step (c-4) of calculating the intermediate data in the second stage on the series starting from the P-1th input data, and the M + 1th on the series starting from the P-2th input data The step (c-5) for calculating the temporary data of the stage and the step (c-8) for calculating the intermediate data of the (L + 1) th stage 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]
The invention according to claim 17 is the wavelet transform method according to claim 13, wherein the step (c) includes: (c-1) "sequence starting from input data belonging to the second data string" ( The intermediate data of the first stage above and the “series starting from the input data belonging to the first data string” (hereinafter referred to as “the first series”), which is one point around the intermediate data series. This is called the first series.) The second stage on the second series is added by adding the data obtained by multiplying the intermediate data of the first stage of the above two points to the predetermined lifting coefficient. (C-2) the first stage of intermediate data on the first series, and the second series of about one point relative to the series of the intermediate data The above two points are added to the intermediate data of the second stage. A step of calculating the intermediate data of the second stage on the first sequence within one clock cycle per point by adding the data obtained by multiplying the lifting coefficients of (c-3) and the second Intermediate data of the Mth stage (number of stages M is an integer equal to or greater than 1) on the series, and the middle of the two Mth stages on the first series around one point relative to the series of the intermediate data of the Mth stage A step of calculating the M + 1 stage intermediate data on the second sequence within one clock cycle per point by adding the data obtained by multiplying the data obtained by multiplying the data by a predetermined lifting coefficient; (C-4) Intermediate data at the Lth stage (the number of stages L is an integer of 1 or more) on the first series and 2 on the second series around one point with respect to the series of intermediate data at the Lth stage A predetermined lifting to 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 by adding the data obtained by multiplying the coefficients, and including the step (c-1). ) 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 the input data belonging to the first data string and P-th (data number P is an integer) in the input data string is a starting point. The step (c-2) for calculating the second stage intermediate data on the series to be calculated, and the step (c-2) for calculating the L + 1 stage intermediate data on the series starting from the P-4th input data. -4) and the two processes are controlled in parallel.
[0045]
The invention according to claim 19 is the wavelet transform method according to claim 17 or claim 18, wherein the input data string is a sequence starting from P + 3th input data (data number P is an integer). The process (c-1) for calculating the intermediate data and the process (c-3) for calculating the M + 1 stage intermediate data on the series starting from the P-1th input data. Control to execute the processes in parallel.
[0046]
A twentieth aspect of the present invention is the wavelet transform method according to the seventeenth aspect, 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 the two-dimensional image data is divided into a low frequency component and a high frequency component. A composite data string is calculated by applying the steps (a) to (c) in units of lines in one of the horizontal direction and the vertical direction of the two-dimensional image data, and the calculated composite data string On the other hand, a wavelet transform method in which the steps (a) to (c) are applied in the other direction of the horizontal direction and the vertical direction.
[0048]
DETAILED DESCRIPTION OF THE INVENTION
<First Embodiment>
The wavelet transform apparatus and wavelet transform method according to the first embodiment of the present invention will be described below. FIG. 1 is a diagram illustrating a schematic configuration of a wavelet transform device 1 according to the first embodiment. The wavelet transform device 1 includes a buffer 8 that temporarily holds high-frequency component or low-frequency component subband data decomposed by wavelet transform, and an MMU (memory management) that operates in synchronization with an externally supplied clock signal CLK. Part) 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 the 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 instead may be configured by a computer program including an instruction group executed by a microprocessor.
[0050]
The subband data input to the wavelet transform device 1 is temporarily stored in the buffer 8. The wavelet transform device 1 has a function of performing line-based two-dimensional inverse DWT once on subband data. The horizontal filtering unit 4A and the vertical filtering unit 4B are connected in series via the line buffer circuit 5 and the second ring memory 3B. As will be described later, the subband 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 executing the two-dimensional inverse DWT on the data of the second or higher order decomposition level, the wavelet transform device 1 may be repeatedly used twice or more.
[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 the input data read from the buffer 8 to the first ring memory 3A for storage. be able to. The horizontal filtering unit 4A performs filtering in the horizontal direction on the data input from the first ring memory 3A, thereby reducing the low frequency in the same direction as the high frequency component in the horizontal direction in the eight clock cycles of the pixel clock signal PCLK. Two points of output data obtained by combining the band components can be calculated and output to the line buffer circuit 5. Therefore, the average period required to calculate one point of output data is 4 clock periods.
[0052]
The data output from the line buffer circuit 5 is stored in the second ring memory 3B. The MMU 2 inputs incoming data from the second ring memory 3B to the vertical filtering unit 4B. The vertical filtering unit 4B performs output filtering on the input data in the vertical direction, so that output data in which the high frequency component in the vertical direction and the low frequency component in the same direction are combined in the eight periods of the pixel clock signal PCLK. 2 points are calculated 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 (horizontal filtering unit 4A or 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, and an output that selectively capture input data. A first selection unit (DMUX) 23 and a control unit 24 are provided. 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 in the ring memory 3 or the data held in the delay register 16 in accordance with the values of the selection control signals SEL0 and SEL1 supplied from the control unit 24. Are output to the first terminal S0 and the second terminal S1, respectively.
[0055]
The first coefficient multiplier 12 adds the normalized coefficients κ and 1 / κ to the data output from the first terminal S0 of the first data selector 11 according to the control signal C0 supplied from the control unit 24. Multiply any of them and output (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 by the delay register 16. The first coefficient multiplier 12 and the delay register 16 constitute the normalization means of the present invention.
[0056]
In addition, the second coefficient multiplier 18 applies the lifting coefficients −α, −β, − to the data output from the first terminal S 0 of the second data selector 17 in accordance with the control signal C 1 supplied from the control unit 24. Multiply and output either γ or −δ (coefficient multiplication processing). 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 MMU 2. The MMU 2 can transfer the data output from the third terminal S2 of the second data selector 17 to the outside and store it in the ring memory 3.
[0057]
Further, the output destination selection unit 23 outputs the 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 process and the addition process in the second coefficient multiplier 18 and the adder 22 are executed within one clock cycle per point. Therefore, a period required to multiply and add one point of input data by a lifting coefficient is one cycle of the pixel clock signal PCLK.
[0058]
The coefficient register 19 and the adder 22 constitute a two-point calculation unit that takes in and calculates two points of input data from the data selector 17. The two-point calculation unit and the output destination selection unit 23 constitute intermediate data calculation means.
[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 obtained by combining the input data of the low frequency component and the high frequency component.
[0060]
In addition, the data output from the second terminal K1 of the output destination selection unit 23 is branched and output to the external MMU 2. Further, the data output from the third terminal K2 is output to the external MMU2. The MMU 2 can transfer and store data output from the second terminal K1 and the third terminal K2 to the ring memory 3 respectively.
[0061]
Next, a representative example of the lifting operation using the above 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 the lattice diagram is performed in the same manner as in FIG. 3 to 10, for convenience of explanation, lifting coefficients −α, −β, −γ, −δ and normalization coefficients κ, 1 / κ corresponding to line segments connecting the lattice points are displayed. Not.
[0062]
3 to 10, input data..., Y (2n-1), Y (2n),..., Y (2n + 9),. , 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, the process of generating the intermediate data by normalizing the input data is referred to as the normalization process (corresponding to step 1 and step 2 in the above formula (1)), and the process of calculating the other intermediate data is the conversion process (the above step 3 And step 4 are applicable). In this embodiment and other embodiments described later, intermediate data of two stages is calculated for each series. However, the present invention is not limited to this, and there may be a lifting configuration that calculates intermediate data of only one stage. . In fact, in the case of a 5 × 3 tap or 13 × 7 tap filter, a lifting configuration that calculates intermediate data of only one stage is possible.
[0063]
3 to 10 show the contents of the Nth (N is an integer) to N + 7th processing in this embodiment. In the N-th process (FIG. 3), intermediate data S of two points in the target area A11 n + 2And D1 n + 1The two-point operation in step a (FIG. 38) using the above is executed within one cycle (one clock cycle) of the pixel clock signal PCLK, and the even-numbered input data Y (2n + 4) is used as the starting point. Second-stage temporary data (S2 n + 2) Is calculated. That is, even-numbered intermediate data S1 n + 2And this intermediate data S1 n + 2Odd-numbered intermediate data D on the series one point before1 n + 1The process of step a is executed using
[0064]
Further, in the period of one clock before the arithmetic processing in the target area A1, in the target area N1, a normalization process for multiplying the input data Y (2n + 4) by the normalization coefficient κ is performed, and the input data Y (2n + 4) Intermediate data S of the first stage on the series of1 n + 2Is calculated.
[0065]
The specific contents of the Nth process are as follows. The ring memory 3 shown in FIG. 2 has a 5-line (series) storage area for storing input data, intermediate data, and temporary data, and new data is sequentially stored in the storage area for storing the old data that has been referred to. It 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 normalized coefficient κ selected according to the control signal C0 supplied from the control unit 24 to the multiplier 14, and the multiplier 14 applies the normalized coefficient κ to the input data Y (2n + 4). Data κ × Y (2n + 4) = S obtained by multiplication1 n + 2Is output to the delay register 16. The coefficient multiplication process in the first coefficient multiplier 12 is executed within one clock cycle.
[0067]
After one clock cycle, the intermediate data S held in the delay register 161 n + 2Is output to the second data selector 17. The MMU 2 also stores 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 receives the intermediate data D in response to the selection control signal SEL1 supplied from the control unit 24.1 n + 1From the first terminal S0 to the second coefficient multiplier 18 and the intermediate data S1 n + 2Is output from 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 + 1The data δ × D1n + 1 obtained by multiplying by the lifting coefficient δ is output to the 2'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 −δ × D1 n + 1Is output to the adder 22. Then, the adder 22 has two points of data −δ × D.1 n + 1And S1 n + 2Is added to the temporary data (S2 n + 2) And output to the output destination selection unit 23. This temporary data (S2 n + 2) Is executed within one clock cycle.
[0069]
The output destination selection unit 23 sends temporary data (S) from the third terminal K2 selected according to the value of the selection control signal SEL2 supplied from the control unit 24 to the external MMU2.2 n + 2) Is output. The MMU 2 stores the temporary data (S2 n + 2) Is transferred to the ring memory 3, and the reference storage area input data Y (2n + 4) is overwritten.
[0070]
In the next N + 1-th process (FIG. 4), intermediate data D of two points in the target area A21 n +1And S2 n + 1The two-point operation of step a using the above is executed within one clock cycle, and the second stage temporary data (D) on the series starting from the odd-numbered input data Y (2n + 3)2 n + 1) Is calculated. Intermediate data S2 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 receives the calculated intermediate data D from the ring memory 3.1 n + 1And S2 n + 1Are output to the first data selector 11. Next, the first data selector 11 controls the intermediate data D under the control of the control unit 24.1 n + 1And S2 n + 1Are output from the second and third terminals S1 and S2 to the second data selector 17, respectively. Further, the second data selector 17 controls the intermediate data S under the control of the control unit 24.2 n + 1To the second coefficient multiplier 18 from the first terminal S0 to the intermediate data D1 n + 1Is output to the adder 22 from the second terminal S1.
[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 S2 n + 1Is multiplied by the lifting coefficient γ and the data γ × S2n + 1 is output to the 2's complement arithmetic circuit 21. The adder 22 outputs −γ × S which is output data of the two's complement arithmetic circuit 21.2 n + 1And D which is an output from the second data selector 171 n + 1Is added to the temporary data (D2 n + 1) And output to the output destination selection unit 23. The output destination selection unit 23 controls the temporary data (D2 n + 1) From the third terminal K2 to the external MMU2, and the MMU2 receives the temporary data (D2 n + 1) Is transferred to the ring memory 3, and the reference storage area intermediate data D is transferred.1 n + 1To overwrite.
[0072]
In the next N + 2nd process (FIG. 5), the intermediate data S of two points in the target area A3.2 n + 1And D2 nThe two-point operation of step a using the above is executed within one clock cycle, and the output temporary data (X (2n + 2)) on the series starting from the even-numbered input data Y (2n + 2) is calculated. Intermediate data D2 nIs the intermediate data of the second stage on the series starting from the input data Y (2n + 1) one point before the input data Y (2n + 2). Specifically, the MMU 2 receives the calculated intermediate data S from the ring memory 3.2 n + 1And D2 nAre output to the first data selector 11. Next, the first data selector 11 controls the intermediate data S under the control of the control unit 24.2 n + 1And D2 nAre output from the second and third terminals S1 and S2 to the second data selector 17, respectively. Further, the second data selector 17 controls the intermediate data D under the control of the control unit 24.2 nTo the second coefficient multiplier 18 from the first terminal S0 to the intermediate data S2 n + 1Is output to the adder 22 from the second terminal S1.
[0073]
The second coefficient multiplier 18 generates intermediate data D2 nIs multiplied by the 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 2's complement arithmetic circuit 21.2 nAnd S which is an output from the second data selector 172 n + 1Is added to calculate temporary output data (X (2n + 2)) and output it to the output destination selector 23. The output destination selection unit 23 outputs the temporary data (X (2n + 2)) from the third terminal K2 to the external MMU 2 under the control of the control unit 24, and the MMU 2 rings the temporary data (X (2n + 2)). Transfer to memory 3 and refer to storage area intermediate data S2 n + 1To overwrite.
[0074]
In the next N + 3rd process (FIG. 6), intermediate data D in the target area A42 nAnd the output data X (2n) are used to execute the two-point operation of step a within one clock cycle, and output temporary data (X () on the sequence starting from the odd-numbered input data Y (2n + 1) 2n + 1)). Specifically, the MMU 2 receives the calculated intermediate data D from the ring memory 3.2 nAnd output data X (2n) are output to the first data selector 11. Next, the first data selector 11 controls the intermediate data D under the control of the control unit 24.2 nAnd X (2n) are 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 transfers X (2n) from the first terminal S0 to the second coefficient multiplier 18 and intermediate data D.2 nIs output to the adder 22 from the second terminal S1.
[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 from the second data selector 17.2 nIs added to calculate temporary output data (X (2n + 1)) and output 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 rings the temporary data (X (2n + 1)). Transfer to memory 3 and refer to storage area intermediate data D2 nTo overwrite.
[0076]
In the next N + 4th process (FIG. 7), the temporary data (S2 n + 2) And intermediate data D in the target area B11 n + 1The second point intermediate data S on the series starting from the even-numbered input data Y (2n + 4) is executed within one clock cycle by performing the two-point operation of step b (FIG. 38) using2 n + 2Is calculated. Intermediate data D1 n + 2Is temporary data (S2 n + 2) In the series one point after.
[0077]
Further, in the period of one clock before executing the arithmetic processing in the target area B1, a normalization process for multiplying the input data Y (2n + 5) by the normalization coefficient 1 / κ is executed in the target area N2. As a result, the intermediate data D of the first stage on the series of the input data Y (2n + 5)1 n + 2Is calculated.
[0078]
A specific process will be described from a cycle before one clock. In a cycle one clock before the calculation of the target area B1, the MMU 2 causes the first data selector 11 to output the input data Y (2n + 5) 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 + 5). The first coefficient multiplier 12 multiplies the input data Y (2n + 5) by the normalization coefficient 1 / κ under the control of the control unit 24, and the obtained data (1 / κ) × Y (2n + 5) = D1 n + 2Is output to the delay register 16. The coefficient multiplication process in the first coefficient multiplier 12 is executed within one clock cycle.
[0079]
Intermediate data D held in the delay register 16 after one clock cycle1 n + 2Is output to the second data selector 17. The MMU 2 also stores temporary data (S2 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, and the temporary data (S2 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 (S2 n + 2) From the second terminal S1 to the adder 22. Further, the second data selector 17 controls the intermediate data D under the control of the control unit 24.1 n + 2Is output from the third terminal S2 to the external MMU2, and the MMU2 receives the intermediate data D.1 n + 2Are transferred to the ring memory 3 and overwritten on the referenced storage area input data Y (2n + 5).
[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 multiplied by the lifting coefficient δ, and data δ × D1n + 2 is output to the 2's complement arithmetic circuit 21. The 2's complement arithmetic circuit 21 outputs the data −δ × D.1 n + 2Is output to the adder 22. Then, the adder 22 has two points of data −δ × D.1 n + 2And temporary data (S2 n + 2) And the intermediate data S2 n + 2Is output to the output destination selection unit 23. This intermediate data S2 n + 2Is calculated within one clock cycle.
[0082]
The output destination selection unit 23 sends the intermediate data S from the third terminal K2 selected according to the value of the selection control signal SEL2 supplied from the control unit 24 to the external MMU2.2 n + 2Is output. The MMU 2 has the intermediate data S2 n + 2Is transferred to the ring memory 3, and the storage area temporary data (S2 n + 2).
[0083]
In the next N + 5th process (FIG. 8), the temporary data (D2 n + 1) And intermediate data S in the target area B1 calculated in the N + 4th process (FIG. 7).2 n + 2The second point intermediate data D on the series starting from the odd-numbered input data Y (2n + 3) is executed within one clock cycle by performing the two-point operation of step b using2 n + 1Is calculated. Intermediate data S2 n + 2Is temporary data (D2 n + 1) Of the second stage on the series one point after.
[0084]
Specifically, the MMU 2 receives the temporary data (D2 n + 1) And intermediate data S2 n + 2Are output to the first data selector 11. Next, the first data selector 11 controls the temporary data (D2 n + 1) And intermediate data S2 n + 2Is output from the second and third terminals S1 and S2 to the second data selector 17. Further, the second data selector 17 controls the intermediate data S under the control of the control unit 24.2 n + 2Is output from the first terminal S0 to the second coefficient multiplier 18, and the temporary data (D2 n + 1) From the second terminal S1 to the adder 22. The second coefficient multiplier 18 receives the intermediate data S2 n + 2Is multiplied by the lifting coefficient γ, and the sign of the coefficient is inverted in the two's complement arithmetic circuit 21. The adder 22 is an intermediate data weighted with a lifting coefficient −γ−γ × S.2 n + 2And temporary data (D2 n + 1) And intermediate data D2 n + 1Is 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.2 n + 1Is output from the third terminal K2 to the external MMU2, and the MMU2 outputs the intermediate data D2 n + 1Is transferred to the ring memory 3 and the storage area temporary data (D2 n + 1).
[0085]
In the next N + 6th process (FIG. 9), the temporary output data (X (2n + 2)) calculated in the N + 2th process (FIG. 5) and the intermediate in the target area B2 calculated in the N + 5th process (FIG. 8). Data D2 n + 1The two-point operation of step b using the above is executed within one clock cycle, and the output data X (2n + 2) on the series starting from the even-numbered input data Y (2n + 2) is calculated. Intermediate data D2 n + 1Is intermediate data of the second stage on the series one point after the series of temporary output data (X (2n + 2)).
[0086]
Specifically, the MMU 2 receives the temporary data (X (2n + 2)) and the intermediate data D from the ring memory 3.2 n + 1Are output to the first data selector 11. Next, the first data selector 11 controls the temporary data (X (2n + 2)) and the intermediate data D under the control of the control unit 24.2 n + 1Is output from the second and third terminals S1 and S2 to the second data selector 17. Further, the second data selector 17 controls the intermediate data D under the control of the control unit 24.2 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 generates intermediate data D2 n + 1Is multiplied by the lifting coefficient β, and the sign of the coefficient is inverted in the two's complement arithmetic circuit 21. The adder 22 adds intermediate data −β × D weighted with the lifting coefficient −β.2 n + 1And the temporary data (X (2n + 2)) are added 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 MMU 2 under the control of the control unit 24. The MMU 2 outputs the output data X (2n + 2) to the ring memory 3 To the reference storage area temporary data (X (2n + 2)).
[0087]
In the next N + 7th process (FIG. 10), the temporary output data (X (2n + 1)) calculated in the N + 3th process (FIG. 6) and the output in the target area B4 calculated in the N + 6th process (FIG. 9). The two-point operation of step b above using data X (2n + 2) is executed within one clock cycle to calculate output data X (2n + 1) on the series starting from odd-numbered input data Y (2n + 1) To do. The output data X (2n + 2) is output data on a series one point after the series of temporary output 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 sends 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 the temporary data (X (2n + 1)) is second. The data 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 outputs an output destination selection unit. To 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 process (not shown), the same process as the Nth process (FIG. 3) is performed except for the target region. Thereafter, the processes from the (N + 1) th time to the (N + 7) th time are repeated. As described above, the same processing as the N-th processing (FIG. 3) to the N + 7-th processing (FIG. 10) is performed for the output data at all points, X (2n-1), X (2n),. It is executed while moving the target area until it is calculated.
[0090]
In the present embodiment, as shown in the Nth to N + 3th processes, the two-point operation of step a is performed until the final output temporary data (X (2n + 1)) is calculated, and thereafter As shown in the (N + 4) th to (N + 7) th process, the two-point operation of the above step b for converting all the temporary data calculated in the Nth to (N + 3) th process into intermediate data or output data is performed. Yes.
[0091]
As described above, in the wavelet transform method according to the present embodiment, the process of normalizing input data..., Y (2n), Y (2n + 1),..., And converting the standardized intermediate data into other intermediate data Since the conversion processing to be performed simultaneously in parallel within one clock cycle, the average cycle required to calculate one point of output data can be set to 4 clock cycles, and the output data calculation cycle can be shortened.
[0092]
Next, line-based two-dimensional inverse DWT processing using the wavelet transform apparatus 1 will be described below.
[0093]
As shown in FIG. 11, the subbands (band components) input to the horizontal filtering unit 4A are the subbands 23LL and 23HL, or the subbands 23LH and 23HH. Here, the subband 23LL includes a horizontal low frequency component (L) and a vertical low frequency component (L), and the subband 23HL includes a horizontal high frequency component (H) and a vertical low frequency component (L). The subband 23LH is composed of a horizontal low frequency component (L) and a vertical high frequency component (H), and the subband 23HH is composed of a horizontal high frequency component (H). ) And a high frequency component (H) in the vertical direction.
[0094]
When the subbands (band components) input to the horizontal filtering unit 4A are the subbands 23LL and 23HL, or the subbands 23LH and 23HH, the input data shown in FIGS. n-1), Y (n), Y (n + 1),... are obtained by alternately arranging the horizontal data of the subbands 23LL and 23HL or the horizontal data of the subbands 23LH and 23HH. It is data arranged alternately. Then, by applying horizontal filtering to the input data composed of the subbands 23LL and 23HL, a horizontal synthesis process is performed, and the subband 23L is output. Further, by applying horizontal filtering to the input data composed of the subbands 23LH and 23HH, a horizontal synthesis process is performed, and the subband 23H is output. The output data..., X (n−1), X (n), X (n + 1),... Shown in FIGS. 3 to 10 are one line in the horizontal direction of the subband 23L or the subband 23H. Data are shown.
[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),... Shown in FIGS. This is data obtained by alternately arranging data. Then, by applying vertical filtering to the input data consisting of the subbands 23L and 23H, the vertical composition processing is performed and the image data 23 is output. The output data shown in FIGS. 3 to 10, X (n−1), X (n), X (n + 1),... Indicate the data of one line in the vertical direction of the image data 23. Yes. The image data 23 is rectangular data having a horizontal pixel number W and a vertical pixel number 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. As schematically shown in FIG. Data sequence arranged in the vertical direction with band 23LL and even-numbered odd-numbered column subband 23HL as one set, or with odd-numbered and even-numbered subband 23LH and odd-numbered and odd-numbered column as one set of subband 23HHi(2n), Yi(2n + 1), Yi(2n + 2)... Is input to the horizontal filtering unit 4A. Input data YiThe subscript i in (k) indicates the input data YiIt is assumed that the number of the pixel column to which (k) belongs is shown. 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, the even-numbered storage area 24L including the subbands 23LL and 23HL and the odd-numbered storage area 24H including the subband 23LH and the subband 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 process including the Nth process (FIG. 3) to the N + 7th process (FIG. 10) on the low frequency side (storage area 24L side). And the high frequency side (storage region 24H side) are alternately switched, and each process is repeatedly executed in units of pixels.
[0098]
For example, after the N-th process (FIG. 3) is executed once for the first pixel row on the memory area 24L side, the N + 1-th process (FIG. 4) is executed once, and further, the N + 2 The first process (FIG. 5) is executed once, and so on. Similarly, the process is performed on the first pixel row on the storage area 24H side, and then performed on the second pixel line on the storage area 24L side, and then the second pixel row on the storage area 24H side. And then executed on the third pixel row on the storage area 24L side, then on the third pixel row on the storage area 24H side, and finally. This is executed for the H / 2th pixel row on the storage area 24L side, and then for the H / 2th pixel row on the storage area 24H side.
[0099]
Note that the first ring memory 3A has input data..., X as schematically shown in FIG.j(K), Xj + 1.. Has a storage area 26 that holds data of 5 points (5 pixels) corresponding to (k),..., And can hold the temporary data and intermediate data.
[0100]
As a result, the horizontal filtering unit 4A outputs each horizontal line unit (H / 2 height) of the subband 23L in which the subbands 23LL and 23HL are combined, and the subband in which the subbands 23LH and 23HH are combined. The output of each horizontal line unit (H / 2 height) of the band 23H is alternately and continuously output. 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 executed for each of the first to Wth pixels, one line of data X in which 2n + 2th horizontal components are combined.0(2n + 2), X2(2n + 2), ..., Xj(2n + 2), ..., Xw -1(2n + 2) is continuously output and buffered by the L line buffer circuit 5L. Next, as a result of the N + 7th processing (FIG. 10) being continuously performed for each of the first to Wth pixels, 1 line of data X combined with the 2n + 1th horizontal component.0(2n + 1), X2(2n + 1), ..., Xj(2n + 1), ..., Xw -1(2n + 1) is continuously output and buffered by the H line buffer circuit 5H.
[0102]
Under the control of the MMU 2, the line buffer circuit 5 supplies one horizontal line component in the L line buffer 5L and one horizontal line component in the H line buffer 5H alternately to the second ring memory 3B line by line. To 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 process for each pixel column including the Nth process (FIG. 3) to the N + 7th process (FIG. 10) in units of horizontal lines. For example, the N-th process (FIG. 3) is performed on the first pixel column after being performed on the 0th pixel column, and then performed on the second pixel column. ... Finally, the process is performed on the (W-1) th pixel column. Next, the N + 1-th process (FIG. 4) is performed on the first pixel column after being performed on the 0th pixel column, and is further performed on the second pixel column. ... Finally, the process is performed on the (W-1) th pixel column. In this way, each process 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 (5 lines) corresponding to the input data string, and the temporary data And intermediate data.
[0104]
As a result, the vertical filtering unit 4B outputs the image data 23 from the data row input in units of horizontal lines.
[0105]
By performing the above processing recursively, it is possible to combine the band components of the arbitrary-order decomposition level and restore the image data. That is, subbands LL (k−1), HL (k−1), LH (k−1), and HH (k−1) at the decomposition level of k−1 order (k is an integer of 2 or more) are converted into wavelets. It is possible to obtain the k-th order subband LL (k) by causing the conversion device 1 to input recursively.
[0106]
As described above, 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 illustrated in FIG. 2, and thus the output data calculation cycle can be shortened. Therefore, it is possible to perform line-based two-dimensional wavelet transform at high speed in a short time.
[0107]
<Second Embodiment>
Next, a wavelet transform apparatus and a wavelet transform method according to the 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 that temporarily holds sub-band two-dimensional image data, an MMU (memory management unit) 31 that operates in synchronization with an externally supplied clock signal CLK, a first ring memory 32A, a horizontal A filtering unit 33A, a second ring memory 32B, and a vertical filtering unit 33B are provided. 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 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 instead may be configured by a computer program including an instruction group executed by a microprocessor.
[0110]
The subband 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 performing line-based two-dimensional inverse DWT once on two-dimensional image data, and synthesizes k + 1-order level subbands 23LL, 23HL, 23LH, and 23HH to produce a k-th order subband. 23LL is generated. The horizontal filtering unit 33A and the vertical filtering unit 33B are connected in series via the second ring memory 32B. The subband 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 executing a two-dimensional inverse DWT for synthesizing subbands of second and higher order decomposition levels, the wavelet transform device 30 may be used repeatedly 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 subband data read from the buffer 34 to the first ring memory 32A. It can be memorized. Specifically, the data in which the horizontal data in the subbands 23LL and 23HL are alternately arranged in units of pixels and the data in which the horizontal data in the subbands 23LH and 23HH are alternately arranged in units of pixels are It is stored in one ring memory 32A. The horizontal filtering unit 33A synthesizes the high frequency component and the low frequency component in one clock cycle of the pixel clock signal PCLK by performing horizontal filtering on the data input from the first ring memory 32A. Data can be calculated point by point and output to the second ring memory 32B. Specifically, data obtained by combining subbands 23LL and 23HL and data obtained by combining subbands 23LH and 23HH are alternately output and stored in 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 in the vertical direction on the input data, thereby calculating one point at a time by combining the high frequency component and the low frequency component 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. FIG. 15 shows a schematic configuration of the filtering unit 33 (horizontal filtering unit 33A or 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 capture 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 components, a set of two adders 43 and 48 and a second coefficient multiplier 44 constitutes a three-point arithmetic unit that processes three points of data within one clock cycle. A set of two adders 49 and 54 and a third coefficient multiplier 50 also constitutes a three-point arithmetic unit. The two sets of three-point arithmetic units and the output destination selection unit 55 constitute intermediate data calculation means.
[0115]
The controller 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 one 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]
Data output from the first terminal S 0 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 in accordance with the value of the control signal C0 supplied from the control unit 56, and performs multiplication. The unit 38 executes a normalization process for 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 by the delay register 40. The first coefficient multiplier 36 and the delay register 40 constitute the normalization means of the present invention.
[0117]
In the three-point operation unit, the adder 43 adds the 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 α in accordance with the value of the control signal C1 supplied from the control unit 56, and a two's complement arithmetic circuit. After the sign is inverted at 47, it is output to the adder 48. 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 selection unit 55.
[0118]
The adder 49 adds the two points of data 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 γ in accordance with the value of the control signal C2 supplied from the control unit 56, and a two's complement arithmetic 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]
Depending on the value of the selection control signal SEL3 supplied from the control unit 56, the output destination selection unit 55 outputs two points of data input in parallel from the adders 48 and 54 to any of the first terminal K0 to the third terminal K2. Output from.
[0120]
Further, 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 the data output from the second terminal K1 and the third terminal K2 to the outside and store them in the ring memory 32.
[0121]
Next, a typical example of the lifting calculation using the above 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 the lattice diagram is performed in the same manner as in FIG. 16 to 19 show the lifting coefficients −α, −β, −γ, −δ and the normalization coefficients κ, 1 / κ corresponding to the line segments connecting the lattice 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 this embodiment. In the N-th process (FIG. 16), two conversion processes for 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 two output data X (2n) and X (2n + 2) by the lifting coefficient -α, and then the multiplication value and the intermediate data D2 nA three-point operation of adding and is executed. As a result, the output data X (2n + 1) on the series starting from the odd-numbered input data Y (2n + 1) is calculated. Two points of output data X (2n), X (2n + 2) are intermediate data D2 nThis is data on two series that are around one point with respect to the series. Further, in the target area C1, two points of intermediate data S2 n + 2, S2 n + 3The multiplication value is calculated by multiplying the data obtained by adding the lifting coefficient −γ, and then the multiplication value and the intermediate data D1 n + 2A three-point operation of adding and is executed. As a result, the intermediate data D in the second stage on the series starting from the even-numbered input data Y (2n + 5).2 n + 2Is calculated. Here, intermediate data S of two points2 n + 2, S2 n + 3Is the intermediate data D1 n + 2This is data on two series that are around one point with respect to the series.
[0123]
Further, a normalization process for multiplying the input data Y (2n + 8) by the normalization coefficient κ is executed in the target area N1 in the period one clock before the calculation in the target areas C1 and C2, and the input data Y (2n + 8) S which is intermediate data of the first stage on the series of1 n + 4Is calculated.
[0124]
The specific contents of the Nth process 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 new data is sequentially stored in the storage area for storing the old data that has been referred to. 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, and causes the first coefficient multiplier 36 to output the input data Y (2n + 8). The first coefficient multiplier 36 selects the second half coefficient κ of the two normalized coefficients κ and 1 / κ according to the control signal C 0 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) Is output 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 receives the intermediate data S in accordance with the selection control signal SEL1 supplied from the control unit 56.1 n + 4Is output from the second terminal S1 to the MMU 31, and the MMU 31 outputs the intermediate data S1 n + 4Is transferred to the ring memory 32, and the storage area input data Y (2n + 8) that has been referred to is overwritten. Further, this intermediate data S1 n + 4In the same clock cycle as the cycle of outputting the data to the MMU 31, the MMU 31 stores the six points of data X (2n), D temporarily stored in the ring memory 32.2 n, X (2n + 2), S2 n + 2, D1 n + 2, S2 n + 3Is output to the first data selector 35. The first data selector 35 outputs the six points of data 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. The third data selector 42 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), D2 nAre respectively output from the first terminal S0 to the third terminal S2, and among the input data, three points of data S in the target area C1.2 n + 2, S2 n + 3,D1 n + 2Are output from the fourth terminal S3 to the sixth terminal S5, respectively.
[0127]
The upper adder 43 adds the data obtained by adding the two points of data X (2n) and X (2n + 2) input from the first terminal S0 and the second terminal S1 of the third data selector 42 to the second coefficient multiplier 44. Output to. In the second coefficient multiplier 44, the coefficient register 45 selects and supplies the latter half coefficient α of the two lifting coefficients α and δ to the multiplier 46 in accordance with the control signal C1 supplied from the control unit 56, The multiplier 46 outputs a multiplication 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. The adder 48 receives the multiplication 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.2 nAnd the output data X (2n + 1) in the target area C2 is calculated and output to the output destination selection unit 55. The calculation process of the output data X (2n + 1) is executed within one clock cycle.
[0128]
On the other hand, the lower adder 50 has two intermediate data S input from the fourth terminal S3 and the fifth terminal S4 of the third data selector 42.2 n + 2, S2 n + 3Is added to the third coefficient multiplier 50. In the third coefficient multiplier 50, the coefficient register 51 selects and supplies the latter half of the two lifting coefficients β and γ to the multiplier 52 in accordance with the control signal C2 supplied from the control unit 56, The multiplier 52 multiplies the input data by the lifting coefficient γ (= γ × (S2 n + 2+ S2 n + 3)) Is output to the 2'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. The adder 54 receives the multiplication 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 + 2And the intermediate data D in the target area C12 n + 2Is output to the output destination selection unit 55. This intermediate data D2 n + 2Is calculated 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 and inputs from the other adder 54 in accordance with the value of the selection control signal SEL3 supplied from the control unit 56. Intermediate data D2 n + 2To the external MMU 31 from the third terminal K2, and the MMU 31 receives the intermediate data D2 n + 2Is transferred to the ring memory 32, and the storage area intermediate data D that has been referred to1 n + 2To overwrite.
[0130]
Next, the conversion process of the target areas C3 and C4 in the N + 1th process (FIG. 17) is performed. In the target area C3, two points of intermediate data D1 n + 3, D1 n + 4The multiplication value is calculated by multiplying the data obtained by adding the lifting coefficient −δ, and then the multiplication value and the intermediate data S1 n + 4A three-point operation of adding and is executed. As a result, the intermediate data S in the second stage on the series starting from the even-numbered input data Y (2n + 8).2 n + 4Is calculated. Here, two points of intermediate data D1 n + 3, D1 n + 4Is the intermediate data S1 n + 4Is one point before and after. In the target area C4, intermediate data D of two points2 n + 1, D2 n + 2Is multiplied by the lifting coefficient −β to calculate a multiplication value, and then the multiplication value and the intermediate data S are calculated.2 n + 2A three-point operation of adding and is executed. As a result, the output data X (2n + 4) on the series starting from the even-numbered input data Y (2n + 4) is calculated. Here, two points of intermediate data D2 n + 1, D2 n + 2Is the intermediate data S2 n + 2This is data on two series that are around one point with respect to the series.
[0131]
In addition, the process in the target area N2 is executed in a cycle one clock before the calculation process in the target areas C3 and C4 is executed. In the target area N2, a normalization process for multiplying the input data Y (2n + 9) by the normalization coefficient 1 / κ is executed, and the intermediate data D1 n + 4Is output.
[0132]
The specific processing contents of the (N + 1) th time 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, and causes the first coefficient multiplier 36 to output the input data Y (2n + 9). The first coefficient multiplier 36 selects the first half of the two normalized 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 unit 38 multiplies the input data by the normalization coefficient 1 / κ (= 1 / κ × Y (2n + 9) = D1 n + 4) Is output 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 receives the intermediate data D according to the selection control signal SEL1 supplied from the control unit 56.1 n + 4From the first terminal S0 to the third data selector 42, and the intermediate data D1 n + 4Is output from the second terminal S1 to the MMU 31, and the MMU 31 outputs the intermediate data D1 n + 4Is transferred to the ring memory 32, and the storage area input data Y (2n + 9) that has been referred to is overwritten. Next, this intermediate data D1 n + 4In the same clock cycle as that for outputting to the third data selector 42, the MMU 31 receives the five points of data D temporarily stored in the ring memory 32.2 n + 1, S2 n + 2, D2 n + 2, D1 n + 3, S1 n + 4Is output to the first data selector 35. The first data selector 35 outputs the five points of data 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 the third data selector 42, and the third data selector 42 outputs the three points of input data D in the target area C3 out of the five points of data.2 n + 1, D2 n + 2, S2 n + 2, And output from the fourth terminal S3 to the sixth terminal S5, out of the five points of data, the two points of data in the target area C4 and the data D inputted from the second data selector 411 n + 3, D1 n + 4, S1 n + 4Is output from the first terminal S0 to the third terminal S2.
[0134]
The upper adder 43 receives 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 added 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 first coefficient δ to the multiplier 46. The multiplier 46 multiplies the input data by the lifting coefficient δ (= δ × (D1 n + 3+ D1 n + 4)) Is output to the 2'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. The adder 48 receives the multiplication value input from the second coefficient multiplier 44 and the intermediate data S input 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.2 n + 4Is output to the output destination selection unit 55. This intermediate data S2 n + 4Is calculated within one clock cycle.
[0135]
On the other hand, the lower adder 49 has two points of intermediate data D inputted from the fourth terminal S3 and the fifth terminal S4 of the third data selector 42.2 n + 1, D2 n + 2Is added 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 the lifting coefficient β (= β × (D2 n + 1+ D2 n + 2)) Is output to the 2'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. The adder 54 receives 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.2 n + 2And the output data X (2n + 4) in the target area C4 is calculated and output to the output destination selection unit 55. The calculation process 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 and inputs from the other adder 48 according to the value of the selection control signal SEL3 supplied from the control unit 56. Intermediate data S2 n + 4Is output from the third terminal K2 to the external MMU 31, and the MMU 31 receives the intermediate data S.2 n + 4Is transferred to the ring memory 32 and the storage area intermediate data S that has been referred to is transferred1 n + 4To overwrite. Further, 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 data that has been referred to. Area intermediate data S2 n + 2To overwrite.
[0137]
Next, the conversion process of the target areas C5 and C6 in the N + 2th process (FIG. 18) is executed. In addition, the normalization process of the target area N3 is executed in the cycle one clock before the calculation process in the target areas C5 and C6 is executed. Here, the target areas C5, C6, and N3 are areas obtained by moving the target areas C1, C2, and N1 of the N-th process (FIG. 16) backward by two series (two points), respectively. In these target areas C5, C6, and N3, processing similar to that in the target areas C1, C2, and N1 is executed. Therefore, in the target area N3, a normalization process for multiplying the even-numbered input data Y (2n + 10) by the normalization coefficient κ is performed, and the intermediate data S1 n + 5Is calculated. In the target area C5, two points of intermediate data S2 n + 3, S2 n + 4The multiplication value is calculated by multiplying the data obtained by adding the lifting coefficient −γ, and then the multiplication value and the intermediate data D1 n + 3A three-point operation of adding and is executed. As a result, second-stage intermediate data D on the series starting from the odd-numbered input data X (2n + 7).2 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 D2 n + 1A three-point operation of adding and is executed. As a result, the output data X (2n + 3) on the series starting from the odd-numbered input data Y (2n + 3) is calculated.
[0138]
Next, the conversion process of the target areas C7 and C8 in the N + 3rd process (FIG. 19) is executed. In addition, the normalization process of the target area N4 is executed in the cycle one clock before the calculation process in the target areas C7 and C8 is executed. 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 process (FIG. 17) backward by two series (two points), respectively. In these target areas C7, C8, and N4, processing similar to that in the target areas C3, C4, and N2 is executed. Therefore, in the target area N4, a normalization process for 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 odd-numbered intermediate data D of the two points1 n + 4, D1 n + 5The multiplication value is calculated by multiplying the data obtained by adding the lifting coefficient −δ, and then the multiplication value and the even-numbered intermediate data S1 n + 5A three-point operation of adding and is executed. As a result, the intermediate data S of the second stage on the series starting from the even-numbered input data X (2n + 10).2 n + 5Is calculated. In the target area C8, intermediate data D of two points2 n +2, D2 n + 3Is multiplied by the lifting coefficient -β to calculate a multiplication value, and then the multiplication value and the intermediate data S2 n + 3A three-point operation of adding and is executed. As a result, the output data X (2n + 6) on the series starting from the even-numbered input data Y (2n + 6) is calculated.
[0139]
As described above, the same processing as the N-th processing (FIG. 16) and the N + 1-th processing (FIG. 17) is repeatedly executed while moving the target area until the output data of all points is calculated. As a result, the average period required to calculate even-numbered or odd-numbered output data at one point can be set to one clock period, and the output data calculation period can be greatly shortened.
[0140]
Next, line-based two-dimensional inverse DWT processing using the wavelet transform device 30 will be described below.
[0141]
As shown in FIG. 11, the subbands (band components) input to the horizontal filtering unit 33A are subbands 23LL and 23HL, or subbands 23LH and 23HH.
[0142]
The input data shown in FIGS. 16 to 19, Y (n−1), Y (n), Y (n + 1),... Are alternately arranged in the horizontal direction of the subbands 23LL and 23HL. Or data obtained by alternately arranging the horizontal data of the subbands 23LH and 23HH. Then, by applying horizontal filtering to the input data consisting of subbands 23LL and 23HL, subband 23L is output, and by applying horizontal filtering to the input data consisting of subbands 23LH and 23HH, the subbands are output. 23H is output. 16 to 19 are output data of one line in the horizontal direction of the subband 23L or the subband 23H. X (n-1), X (n), X (n + 1),. A data string is shown.
[0143]
Next, the subbands input by the vertical filtering unit 33B 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),... Shown in FIGS. This is data obtained by alternately arranging data. Then, the image data 23 is output by performing vertical filtering on the input data composed of the subbands 23L and 23H. 16 to 19 indicate output data..., X (n-1), X (n), X (n + 1),... ing. The image data 23 is rectangular data having a horizontal pixel number W and a vertical pixel number 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. As schematically shown in FIG. Data sequence arranged in the vertical direction with band 23LL and even-numbered odd column subband 23HL as one set, or odd-numbered even-numbered subband 23LH and odd-numbered odd-numbered subband 23HH as one set.i(2n), Yi(2n + 1), Yi(2n + 2)... Is input to the horizontal filtering unit 33. That is, each pixel row (horizontal data column in the figure) in the storage area 58L is a data string in which the pixels of the horizontal lines of the subbands 23LL and 23HL are alternately arranged, and each pixel input to the storage area 58H. A row (a horizontal data row in the figure) is a data row in which pixels of the horizontal lines of the subbands 23LH and 23HH are alternately arranged. Input data YiThe subscript i in (k) indicates the input data YiIt is assumed that the number of the pixel column to which (k) belongs is shown. The pixel column number i is i = 0,1. ..., W-1 (W: number of horizontal pixels). In the figure, the even-numbered storage area 58L including the subbands 23LL and 23HL and the odd-numbered storage area 58H including the subband 23LH and the subband 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 process including the Nth process (FIG. 16) to the N + 2th process (FIG. 17) on the low frequency side (storage area 58L side). And the high frequency side (storage region 58H side) are alternately switched, and each process is repeatedly executed 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 the N + 2 The first process (FIG. 18) is executed once, and so on. Similarly, the processing is executed for the first pixel row on the storage area 58H side, and then executed on the second pixel row on the storage area 58L side, and then 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 on the third pixel row on the storage area 58H side, and finally. This is executed for the H / 2th pixel row on the storage area 58L side, and then for the H / 2th pixel row on the storage area 58H side.
[0147]
Note that the first ring memory 32A has input data..., X as schematically shown in FIG.j(K), Xj + 1.. Has a storage area 59 for holding data of 9 points (9 pixels) corresponding to (k),..., And can hold the temporary data and intermediate data.
[0148]
As a result, the horizontal filtering unit 33A outputs each horizontal line unit (H / 2 height) of the subband 23L in which the subbands 23LL and 23HL are combined, and the subband in which the subbands 23LH and 23HH are combined. The output of each horizontal line unit (H / 2 height) of the band 23H is alternately and continuously output.
[0149]
Then, the data in which the horizontal lines of the subband 23L and the horizontal lines of the subband 23H are alternately arranged is output to the second ring memory 32B as it is 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 processing for each pixel column including the N-th process (FIG. 16) to the N + 1-th process (FIG. 17) in units of horizontal lines. For example, the N-th process (FIG. 16) is performed on the first pixel column after being performed on the 0th pixel column, and then is performed on the second pixel column. ... Finally, the process is performed on the (W-1) th pixel column. Next, the N + 1-th process (FIG. 7) is performed on the first pixel column after being performed on the 0th pixel column, and further, is performed on the second pixel column. ... Finally, the process is performed on the (W-1) th pixel column. In this way, each process 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 row input in units of horizontal lines.
[0152]
By performing the above processing recursively, it is possible to combine the band components of the arbitrary-order decomposition level and restore the image data. That is, the subbands LL (k + 1), HL (k + 1), LH (k + 1), and HH (k + 1) at the decomposition level of k + 1 order (k is an integer) are input recursively to the wavelet transform device 1, and k It is possible to obtain the next subband LL (k).
[0153]
As described above, 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, and thus the output data calculation cycle can be shortened. Therefore, it is possible to perform line-based two-dimensional wavelet transform at high speed in a short time.
[0154]
And in 2nd Embodiment, the buffer which memorize | stores the output of the horizontal filtering part 33A required in 1st Embodiment is unnecessary. In the first embodiment, the horizontal filtering unit 4A outputs one pixel at four clocks and the vertical filtering unit 4B inputs one pixel at four clocks. However, the horizontal filtering 4A performs N + 6th processing (FIG. In 9) and N + 7th processing (FIG. 10), a vertical line is continuously output, whereas in the vertical filtering unit 4B, after a vertical line is input in Nth processing (FIG. 3), N + 4th processing is performed. Until (FIG. 7), no vertical line is input. For this reason, a buffer was necessary. 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 unnecessary.
[0155]
<Third Embodiment>
Next, a wavelet transform apparatus and a wavelet transform method according to the third embodiment of the present invention will be described. The wavelet transform apparatus according to the present embodiment has the same configuration as that of the wavelet transform apparatus 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, 32B are 9-point and 9-line ring memories, respectively. In this embodiment, the first and second ring memories 32A , 32B are ring memories of 8 points and 8 lines, respectively.
[0156]
FIG. 22 is a diagram illustrating a schematic configuration of the filtering unit 33 s 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 either the first ring memory 32A or the second ring memory 32B illustrated in FIG.
[0157]
The filtering unit 33s includes first and second data selectors 60 and 65, a delay register 64, and first to fifth coefficient multipliers 61, 66, 71, 76, and 81 that selectively receive input data from the ring memory 32s. , Adders 70, 75, 80, 85, an output destination selection unit (DMUX) 86, and a control unit 87. Among these components, the set of the second coefficient multiplier 66 and the adder 70 constitutes a two-point arithmetic unit that processes two points of data by the method of step a or step b (FIG. 38). In addition, the set of the third coefficient multiplier 71 and the adder 75, the set of the fourth coefficient multiplier 76 and the adder 80, and the set of the fifth coefficient multiplier 81 and the adder 85 also form a two-point arithmetic unit. is doing. The two-point calculation unit and the output destination selection unit 86 constitute intermediate data calculation means.
[0158]
The controller 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 one 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]
Data output from the first terminal S 0 of the first data selector 60 is input to the first coefficient multiplier 61. The first coefficient multiplier 61 outputs one of the normalized 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. The first coefficient multiplier 61 and the delay register 64 constitute normalization 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 receives the data fetched from the delay register 64 and the first data selector 60 in accordance with the value of the selection control signal SEL1 supplied from the control unit 87 at the first terminal S0 to the eighth terminal S7. Selectively output from either. The second to fifth coefficient multipliers 66, 71, 76, and 81 are circuits that multiply the input data by lifting coefficients -α, -β, -γ, and -δ, respectively, according to the control signals C1 to C4. 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. Multipliers 68, 73, 78, and 83 multiply the data input from the output terminals S0, S2, S4, and S6 of the second data selector 65 by the lifting coefficients α, β, γ, and δ, respectively. Two's complement arithmetic circuits 69, 74, 79, and 84 invert the signs of the output data from the multipliers 68, 73, 78, and 83, respectively. The adders 70, 75, 80, 85 are respectively input from the second to fifth coefficient multipliers 66, 71, 76, 81 and the output terminals S 1, S 3, S 5, S 7 of the second data selector 65. Are added to the data input to the output destination selection unit 86.
[0161]
The output destination selection unit 86 receives four points of data 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. 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 and store the data output from the second terminal K1 to the fifth terminal K4 to the MMU 31 to the ring memory 32s.
[0162]
Next, a representative example of the lifting calculation using the filtering unit 33s shown in FIG. 22 will be described below with reference to FIGS. The calculation of the lattice diagram is performed in the same manner as in FIG. 23 to 25, for convenience of explanation, lifting coefficients −α, −β, −γ, −δ and normalization coefficients κ and 1 / κ corresponding to the line segments connecting the lattice points are displayed. Not.
[0163]
FIG. 23 shows a lattice diagram when the N-th process (N: integer) is completed, and FIGS. 24 and 25 schematically show the N + 1-th process and the N + 2-th process, respectively. In the N-th process (FIG. 23), the 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 points of intermediate data D1 n + 2, S2 n + 2The two-point operation of step a (FIG. 38) using the above is executed, and the second-stage temporary data (D) on the series starting from the odd-numbered input data Y (2n + 5)2 n + 2) Is calculated. Here, intermediate data S2 n + 2Is intermediate data D1 n + 2This is data on the series one point before the series. In the target area A2, two points of data D2 n, X (2n) is used to calculate the output temporary data (X (2n + 1)) on the series starting from the odd-numbered input data Y (2n + 1). In the target area B1, temporary data (S2 n + 3) And intermediate data D calculated by the arithmetic processing one clock cycle before1 n + 3The second point intermediate data S on the series starting from the even-numbered input data Y (2n + 6) is executed by performing the two-point operation of step b (FIG. 38) using2 n + 3Is calculated. Here, intermediate data D1 n + 3Is temporary data (S2 n + 3) In the series one point after. In the target area B2, the temporary output data (X (2n + 2)) and the intermediate data D2 n + 1The two-point operation of step b using the above is executed to calculate the output data X (2n + 2) on the series starting from the even-numbered input data Y (2n + 2).
[0164]
In addition, the normalization process of the target area N1 is performed in the period of one clock before the parallel processing in the target areas A1, A2, B1, and B2. In the target area N1, a normalization process for multiplying the input data Y (2n + 7) by the normalization coefficient 1 / κ is executed.
[0165]
The specific contents of the Nth process 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. The arithmetic processing in the target region N1 is performed one clock cycle before the 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. The multiplier 63 multiplies the input data Y (2n + 7) by the normalization coefficient 1 / κ. As a result, the first coefficient multiplier 61 receives 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 calculation processing in the target areas A1, A2, B1, and B2 is performed.
[0167]
In the next clock cycle, the MMU 31 stores the seven points of data X (2n), D temporarily stored in the ring memory 32s.2 n, (X (2n + 2)), D2 n + 1, S2 n + 2, D1 n + 2, (S2 n + 3) Is output to the first data selector 60. The first data selector 60 outputs the seven points of data to the second data selector 65 in accordance with the value of the selection control signal SEL 0 supplied from the controller 87. Further, 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 branched and output to the external MMU 31, and the MMU 31 stores the intermediate data D1 n + 3Is transferred to the ring memory 32s and overwritten on the referenced storage area input data Y (2n + 7).
[0168]
The second data selector 65 outputs two points of output data X (2n), D in the target area A2 out of the eight points of data according to the value of the selection control signal SEL1 supplied from the controller 87.2 nIs selected and output to the first terminal S0 and the second terminal S1, and the intermediate data D in the target area B2 is selected.2 n + 1And 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.2 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.1 n + 3And temporary data (S2 n + 3Are 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 in accordance with the control signal C1 supplied from the control unit 87, and the multiplier 68 receives the data input from the first terminal S0. Data α × X (2n) obtained by multiplying X (2n) by the lifting coefficient α is output. The output data from the multiplier 68 is inverted in sign in the two's complement arithmetic circuit 69 and output to the adder 70. The adder 70 receives 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.2 nAnd the temporary data (X (2n + 1)) in the target area A2 is calculated and output to the output destination selection unit 86.
[0170]
In the third coefficient multiplier 71, the coefficient register 72 outputs the lifting coefficient β to the multiplier 73 in accordance with the control signal C2 supplied from the control unit 87, and the multiplier 73 is input from the third terminal S2. Intermediate data D2 n + 1Obtained by multiplying the lifting coefficient β by β × D2 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 outputs the data −β × D output from the third coefficient multiplier 71.2 n + 1And the output temporary data (X (2n + 2)) input from the fourth terminal S3 of the second data selector 65 are added to calculate the output data X (2n + 2) in the target area B2 and select the 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 in accordance with the control signal C3 supplied from the control unit 87, and the multiplier 78 receives an input from the fifth terminal S4. Intermediate data S2 n + 2Obtained by multiplying the lifting coefficient γ by γ × S2 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.2 n + 2And data D input from the sixth terminal S5 of the second data selector 651 n + 2And the temporary data (D in the target area A12 n + 2) 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 in accordance with the control signal C4 supplied from the control unit 87, and the multiplier 83 receives an input from the seventh terminal S6. Intermediate data D1 n + 3Obtained by multiplying the lifting coefficient δ by δ × D1 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 temporary data input from the eighth terminal S7 of the second data selector 65 (S2 n + 3) And the intermediate data S of the second stage in the target area B12 n + 3Is 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 selection unit 86, in accordance with the selection control signal SEL2, outputs the three points of data (X (2n + 1)), (D2 n + 2), S2 n + 3Are output from the third terminal K2 to the fifth terminal K4 to the MMU 31. The MMU 31 has four points of data (X (2n + 1)), X (2n + 2), (D2 n + 2), S2 n + 3Is transferred to the ring memory 32s, and the MMU 31 receives the data (X (2n + 1)), X (2n + 2), (D2 n + 2), S2 n + 3Is transferred to the ring memory 32s, and the storage area D that has been referred to is transferred.2 n, (X (2n + 2)), D1 n + 2, (S2 n + 3).
[0174]
Next, the conversion processes in the target areas A3, A4, B3, and B4 in the N + 1-th process (FIG. 24) are simultaneously performed in parallel. In the target area A3, the intermediate data S calculated by the calculation process one clock cycle before1 n + 4And intermediate data D1 n + 3The two-point operation of step a (FIG. 38) using the above is executed, and the second-stage temporary data (S in the sequence starting from the even-numbered input data Y (2n + 8))2 n + 4) Is calculated. Here, intermediate data D1 n + 3Is the intermediate data S1 n + 4This is data on the series one point before the series. In the target area A4, two points of data S2 n + 2, D2 n + 1The two-point operation of step a using the above is executed to calculate temporary output data (X (2n + 4)) on the series starting from the even-numbered input data Y (2n + 4). In the target area B3, temporary data (D2 n + 2) And intermediate data S2 n + 3The second step intermediate data D on the series starting from the odd-numbered input data Y (2n + 5) is executed by performing the two-point operation of step b (FIG. 38) using2 n + 2Is calculated. Here, intermediate data S2 n + 3Is temporary data (D2 n + 2) In the series one point after. In the target area B4, the two-point operation of the above step b using the temporary output data (X (2n + 1)) and the output data X (2n + 2) is executed, and the odd-numbered input data Y (2n + 1) is the starting point. The output data X (2n + 1) on the series is calculated.
[0175]
Further, the normalization process of the target area N2 is performed in the period of one clock before the parallel processing in the target areas A3, A4, B3, and B4. In the target area N2, a normalization process for multiplying the input data Y (2n + 8) by the normalization coefficient κ is executed.
[0176]
Next, the details of the N + 1th process are as follows. The processing in the target area N2 in the cycle one clock before will be described. 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 in accordance with the control signal C0 supplied from the control unit 87, The multiplier 63 multiplies the input data Y (2n + 8) by the normalization coefficient κ. As a result, the first coefficient multiplier 61 receives 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 calculation processing in the target areas A1, A2, B1, and B2 is performed.
[0178]
In the next clock cycle, the MMU 31 stores 7 points of data (X (2n + 1)), X (2n + 2), D temporarily stored in the ring memory 32s.2 n + 1, S2 n + 2, (D2 n + 2), S2 n + 3, D1 n + 3Is output to the first data selector 60. The first data selector 60 outputs the seven points of data to the second data selector 65 in accordance with the value of the selection control signal SEL 0 supplied from the controller 87. 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 branched and output to the external MMU 31, and the MMU 31 stores the intermediate data S1 n + 4Is transferred to the ring memory 32s and overwritten on the referenced storage area input data Y (2n + 8).
[0179]
The second data selector 65, in accordance with the value of the selection control signal SEL1 supplied from the control unit 87, of the 8 points of data, 2 points of input data X (2n + 2), (X (2n + 1) in the target area B4 )) Is selected and output to the first terminal S0 and the second terminal S1, and the intermediate data D in the target area A4 is selected.2 n + 1, S2 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.2 n + 3And temporary data (D2 n + 2) From the fifth terminal S4 and the sixth terminal S5, and intermediate data D in the target area A3.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 receives the data input from the first terminal S0. Data α × X (2n + 2) obtained by multiplying X (2n + 2) by the lifting coefficient α is output. The output data from the multiplier 68 is inverted in sign in the two's complement arithmetic circuit 69 and output to the adder 70. The adder 70 receives the data −α × X (2n + 2) output from the second coefficient multiplier 66 and the temporary data (X (2n + 1)) input from the second terminal S1 of the second data selector 65. By adding, the output data X (2n + 1) in the target area B4 is calculated and output to the output destination selection unit 86.
[0181]
In the third coefficient multiplier 71, the coefficient register 72 outputs the lifting coefficient β to the multiplier 73 in accordance with the control signal C2 supplied from the control unit 87, and the multiplier 73 is input from the third terminal S2. Intermediate data D2 n + 1Obtained by multiplying the lifting coefficient β by β × D2 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 outputs the data −β × D output from the third coefficient multiplier 71.2 n + 1Intermediate data S input from the fourth terminal S3 of the second data selector 652 n + 2Are added to calculate temporary output data (X (2n + 4)) in the target area A4 and output it to the output destination selector 86.
[0182]
In the fourth coefficient multiplier 76, the coefficient register 77 outputs the lifting coefficient γ to the multiplier 78 in accordance with the control signal C3 supplied from the control unit 87, and the multiplier 78 receives an input from the fifth terminal S4. Intermediate data S2 n + 3Obtained by multiplying the lifting coefficient γ by γ × S2 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.2 n + 3And temporary data input from the sixth terminal S5 of the second data selector 65 (D2 n + 2) And the intermediate data D in the target area B32 n + 2Is 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 in accordance with the control signal C4 supplied from the control unit 87, and the multiplier 83 receives an input from the seventh terminal S6. Intermediate data D1 n + 3Obtained by multiplying the lifting coefficient δ by δ × D1 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 + 3Intermediate data S input from the eighth terminal S7 of the second data selector 651 n + 4And the intermediate data S of the second stage in the target area A32 n + 4Is output to the output destination selection unit 86.
[0184]
The output destination selector 86 outputs the output data X (2n + 1) input from the adder 70 from the first terminal K0 to the outside according to the value of the selection control signal SEL2 supplied from the controller 87. In addition, the output destination selection unit 86, according to the selection control signal SEL2, outputs three points of data (X (2n + 4)), D input from the adders 75, 80, 85.2 n + 2, (S2 n + 4) From the third terminal K2 to the fifth terminal K4 to the MMU 31. The MMU 31 includes three points of data (X (2n + 4)), D output to the outside from the filtering unit 33s.2 n + 2, (S2 n + 4) Is transferred to the ring memory 32s, and the MMU 31 stores the three points of data (X (2n + 4)), D2 n + 2, (S2 n + 4) Is transferred to the ring memory 32s and the storage area S that has been referred to is transferred.2 n + 2, (D2 n + 2), S1 n + 4To overwrite.
[0185]
Next, the four conversion processes of the target areas A5, A6, B5, and B6 in the N + 2nd process (FIG. 25) are simultaneously executed in parallel within one clock cycle. In addition, the normalization process of the target area N3 is performed in the period of 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 in which the target areas A2, B2, A1, B1, and N1 of the N-th process (FIG. 23) are moved backward by two series (two points), respectively. In these target areas A6, B6, A5, B5, and N3, processes similar to those in the target areas A2, B2, A1, B1, and N1 are executed. As a result, temporary data (X (2n + 3)) is output in the target area A6, output data X (2n + 4) is output in the target area B6, and temporary data (D2 n + 3) Is the intermediate data S in the target area B5.2 n + 4However, in the target area N3, intermediate data D1 n + 4Are calculated respectively.
[0187]
Next, in the (N + 3) th process (not shown), in the area where the target areas B4, A4, B3, A3, and N2 of the N + 1th process (FIG. 24) are moved backward by 2 series (2 points), the (N + 1) th process is performed. Processing similar to the processing is performed.
[0188]
As described above, the same processes as 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 period required to calculate even-numbered or odd-numbered output data at one point can be set to one clock period, and the output data calculation period can be greatly shortened.
[0189]
Since the wavelet transform apparatus according to the present embodiment includes the horizontal filtering unit and the vertical filtering unit having the configuration illustrated in FIG. 22, the same line-based two-dimensional inverse DWT processing as that in the second embodiment is executed. It is possible. Therefore, the wavelet transform can be performed at a high speed in a very short time.
[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 column in each processing. The line buffer circuit 5 is not required unlike the wavelet transform device 1 according to the first embodiment. Therefore, it is possible to realize an inexpensive wavelet transform device that operates on a small circuit scale and with low power consumption.
[0191]
<Modification>
FIG. 26 is a diagram showing a schematic configuration of a two-dimensional wavelet transform device 30a according to a modification of the second and third embodiments described above. The wavelet transform device 30a includes a buffer 88 that temporarily holds sub-band two-dimensional image data, an MMU (memory management unit) 89 that operates in synchronization with an externally supplied clock signal CLK, and the 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 according to this modification can calculate one line of output data in a period of four lines.
[0193]
The first ring memory 32 or 32s and the horizontal filtering unit 33 or 33s are the ring memory 32 and filtering unit 33 according to the second embodiment, or the ring memory 32s according to the third embodiment and filtering. It has the same configuration as the portion 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 capture input data from the first ring memory 32 at intervals of 4 clock cycles. Thereby, the line buffer circuit 5 is not required unlike the wavelet transform device 1 (FIG. 1) according to the first embodiment. Therefore, it is possible to realize an inexpensive wavelet transform apparatus with a small circuit size and a small memory usage.
[0195]
In the present modification, the second ring memory 3B and the vertical filtering unit 4B according to the first embodiment are used 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 5 clock cycles may be employed. In this case, the horizontal filtering unit 33 or 33s performs processing so as to capture input data from the first ring memory 32 at intervals of 5 lines. Thereby, it can be set as the structure which does not require the line buffer circuit 5. FIG.
[0196]
<Fourth Embodiment>
Next, a wavelet transform apparatus and a wavelet transform method according to the 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 that temporarily holds sub-band two-dimensional image data, an MMU (memory management unit) 92 that operates in synchronization with an externally supplied clock signal CLK, a 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 provided. 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. Works.
[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, a computer that includes a group of instructions executed by a microprocessor. It may consist of programs.
[0198]
The wavelet transform device 90 has a function of performing line-based two-dimensional inverse DWT once on two-dimensional image data. 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 the subband two-dimensional image data read from the buffer 91 is stored in the MMU 92. It can be transferred to and stored in the first ring memory 32H and the second ring memory 32L.
[0200]
Here, the four subband data 23LL, 23HL, 23LH, and 23HH shown in FIG. 11 are input to the buffer 91, and the horizontal pixels of the subbands 23LH and 23HH are alternately input to the first ring memory 32H. The horizontal width W and the vertical height H / 2 of the image data are input to the second ring memory 32L, and the horizontal width W and the vertical of the horizontal pixels of the subbands 23LL and 23HL are alternately arranged. Image data having a height of 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, thereby subbands 23LH and 23HH in one clock cycle of the pixel clock signal PCLK. It is possible to calculate the data of the subband 23H, which is the image data obtained by synthesizing the images one by one. The image data Y of the subband 23H calculated in this wayH(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, thereby subbands 23LL and 23HL in one clock cycle of the pixel clock signal PCLK. It is possible to calculate the data of the subband 23L, which is image data obtained by synthesizing the images one by one. The image data Y of the subband 23L calculated in this wayL(M) is transferred to the third ring memory 93.
[0203]
The first horizontal filtering unit 33H and the second horizontal filtering unit 33L may adopt 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 receives the image data Y of the subbands 23L and 23H from the third ring memory 93.L(M) and YH(M) is input, and this image data YL(M) and YHBy performing filtering in the horizontal direction for each pixel column on the data in which the vertical lines in (m) are alternately arranged, the vertical line data of the image data 23 is obtained 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 that selectively captures 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 adders 110, 116, 122, 128 in the subsequent stage, an output destination selection unit (DMUX) 129, and A control unit 130 is provided. Among these components, a set of two adders 105 and 110 and a third coefficient multiplier 106 forms three-point arithmetic units because it processes three points of data within one clock cycle. Further, a set of two adders 111 and 116 and a fourth coefficient multiplier 112, a set of two adders 117 and 122 and a fifth coefficient multiplier 118, and two adders 123 and 128, Each set of the sixth coefficient multiplier 124 also forms a three-point operation unit because it processes three points of data within one clock cycle. The four sets of three-point arithmetic units and the output destination selection unit 129 constitute intermediate data calculation means.
[0206]
The controller 130 operates in synchronization with the pixel clock signal PCLK. The first data selector 95 receives the data (Y) fetched from the third ring memory 93 in accordance with the value of the selection control signal SEL0 supplied from the control unit 130.L(M) and YH(M) data in which vertical lines are alternately arranged) is selectively output from any one of the first terminal S0 to the twelfth terminal S11.
[0207]
Data output from the first terminal S 0 or the second terminal S 1 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. Multiply κ and output the multiplication 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 in accordance with the control signal C1 supplied from the control unit 130. The multiplier 102 receives the input data Is multiplied by the normalization coefficient 1 / κ, and the multiplication output is output to the delay register 103. The pair of the first coefficient multiplier 96 and the delay register 99 and the pair of the second coefficient multiplier 101 and the delay register 103 constitute the normalization means of the present invention.
[0208]
The data input to the delay register 99 and the delay register 103 is 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 is supplied 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 parallel processing is executed in these three-point arithmetic units.
[0210]
The previous stage adder 105 adds the two points of data output from the first terminal S 0 and the second terminal S 1 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 C 2 supplied from the control unit 130, and the multiplier 108 receives the data input from the adder 105. Is multiplied by a lifting coefficient α. The multiplication output is inverted in the 2's complement arithmetic circuit 109 and output to the adder 110 at the subsequent stage. Then, the adder 110 at the subsequent stage 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 previous stage adder 111 adds the two points of data 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 in accordance with the control signal C3 supplied from the control unit 130, and the multiplier 114 receives the data input from the adder 111. Is multiplied by a lifting coefficient β. The multiplication output is inverted in sign by 2's complement arithmetic circuit 115 and output to adder 116 at the subsequent stage. The subsequent adder 116 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]
The adder 117 at the previous stage adds the two points of data 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 C 4 supplied from the control unit 130, and the multiplier 120 receives the data input from the adder 117. Is multiplied by a lifting coefficient γ. The multiplication output is inverted in the 2's complement arithmetic circuit 121 and output to the adder 122 in the subsequent stage. The post-stage 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]
Further, the previous stage adder 123 adds the two points of data 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 according to the control signal C 5 supplied from the control unit 130, and the multiplier 126 receives the data input from the adder 123. Is multiplied by a lifting coefficient δ. The multiplication output is inverted in sign in the 2's complement arithmetic circuit 127 and output to the adder 128 at the subsequent stage. The adder 128 at the subsequent stage 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 receives four points of data input in parallel from the adders 110, 116, 122, and 128 in the subsequent stage according to the value of the selection control signal SEL2 supplied from the control unit 130. Selectively output from any of the fourth terminals K3.
[0215]
The output destination selection unit 129 outputs the 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 is 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 referenced storage area.
[0216]
Next, a representative example of the lifting calculation using the vertical filtering unit 94 will be described below with reference to FIGS. 29 to 31 are lattice diagrams schematically showing a lifting configuration of a 9 × 7 tap Daubechies filter. The calculation of the lattice diagram is performed in the same manner as in FIG. 29 to 31 show the lifting coefficients -α, -β, -γ, -δ and the normalization coefficients κ, 1 / κ corresponding to the line segments connecting the lattice points for convenience of explanation. Not.
[0217]
FIGS. 29 to 31 schematically show the N-th (N is an integer) to N + 2-th processing in the present 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 points of intermediate data D1 n + 4, D1 n + 5The multiplication value is calculated by multiplying the data obtained by adding the lifting coefficient −δ, and then the multiplication value and the intermediate data S1 n + 5A three-point operation of adding and is executed. As a result, the intermediate data S of the second stage on the series starting from the even-numbered input data Y (2n + 10).2 n + 5Is calculated. Here, two points of intermediate data D1 n + 4, D1 n + 5Is the intermediate data S1 n + 5This is data on a series of about one point with respect to the series.
[0220]
Further, in the target area C2, two points of intermediate data S2 n + 3, S2 n + 4Is multiplied by the lifting coefficient −γ, and then the multiplied value and the intermediate data D are multiplied.1 n + 3A three-point operation of adding and is executed. As a result, the second stage intermediate data D on the series starting from the odd-numbered input data Y (2n + 7).2 n + 3Is calculated. Here, intermediate data S of two points2 n + 3, S2 n + 4Is intermediate data D1 n + 3This is data on a series of about one point with respect to the series.
[0221]
In the target area C3, two points of intermediate data D2 n + 1, D2 n + 2Is multiplied by the lifting coefficient −β to calculate a multiplication value, and then the multiplication value and the intermediate data S are calculated.2 n + 2A three-point operation of adding and is executed. As a result, the output data X (2n + 4) on the series starting from the input data Y (2n + 4) is calculated. Here, two points of intermediate data D2 n + 1, D2 n + 2Is the intermediate data S2 n + 2This is data on a series of about one point with respect to the series.
[0222]
In the target area C4, a multiplication value is calculated by multiplying data obtained by adding the even-numbered output data X (2n) and X (2n + 2) by a lifting coefficient -α, and then the multiplication value and the intermediate value Data D2 nA three-point operation of adding and is executed. As a result, the output data X (2n + 1) on the series starting from the input data Y (2n + 1) is calculated. Here, even-numbered two points of input data X (2n), X (2n + 2) are intermediate data D2 nIs one point before and after.
[0223]
Further, the arithmetic processes in the target areas N1 and N2 are executed in parallel in a cycle one clock before the arithmetic processes in the target areas C1 to C4 are executed. In the target area N1, a normalization process for multiplying the input data Y (2n + 10) by the normalization coefficient κ is executed, and the intermediate data S1 n + 5In the target area N2, a normalization process for multiplying the input data Y (2n + 11) by the normalization coefficient 1 / κ is executed, and the intermediate data D1 n + 5Is calculated.
[0224]
The specific contents of the Nth process 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. However, the arithmetic processing in the target regions 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 inputs 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 according to the selection control signal SEL0 supplied from the control unit 130. ) And the 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 according to the control signal C0 supplied from the control unit 130, and the multiplier 98 converts the normalized coefficient into the input data Y (2n + 10). Multiply by κ. As a result, the first coefficient multiplier 96 generates the intermediate data S1 n + 5(= Κ × Y (2n + 10)) is calculated within one clock cycle.
[0226]
The input data Y (2n + 111) 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 the normalized coefficient 1 / κ to the multiplier 102 in accordance with the control signal C1 supplied from the control unit 130, and the multiplier 102 standardizes the input data Y (2n + 11). Multiplication factor 1 / κ. As a result, the second coefficient multiplier 100 generates the intermediate data D1 n + 5(= 1 / κ × Y (2n + 11)) is calculated within one clock cycle.
[0227]
Intermediate data S output from the first and second coefficient multipliers 96 and 1001 n + 5, D1 n + 5Are input to 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 is performed, the MMU 92 stores 10 points of data X (2n), D temporarily stored in the third ring memory 93.2 n, X (2n + 2), D2 n + 1, S2 n + 2, D2 n + 2, S2 n + 3, D1 n + 3, S2 n + 4, D1 n + 4Is output to the first data selector 95. The first data selector 95 outputs the ten points of data 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. Further, intermediate data S stored in the delay registers 96 and 103 is used.1 n + 5, D1 n + 5Is input to the second data selector 104. Intermediate data D output from delay register 1031 n + 5Is branched and output to the external MMU 92, and the MMU 92 receives the intermediate data D1 n + 5Are transferred to the ring memory 93 and overwritten on the referenced storage area input data Y (2n + 11).
[0229]
In response to the selection control signal SEL1 supplied from the control unit 130, the second data selector 104 selects three points of input data X (2n) and X (2n + 2) in the target area C4 from among the 12 points of data. ), D2 nAre selected and output from the first terminal S0 to the third terminal S2, respectively, and the three points of data D in the target area C3.2 n + 1, D2 n + 2, S2 n + 2Are selected and output from the fourth terminal S3 to the sixth terminal S5, respectively, and the three points of data S in the target area C2 are selected.2 n + 3, S2 n + 4, D1 n + 3Are selected and output from the seventh terminal S6 to the ninth terminal S8, respectively, and the three points of data D in the target area C1.1 n + 4, D1 n + 5, S1 n + 5Are selected and output from the tenth terminal S9 to the twelfth terminal S11, respectively.
[0230]
The adder 105 in the previous stage adds the data obtained by adding the two points of data X (2n) and X (2n + 2) in the target area C4 input from the first terminal S0 and the second terminal S1 of the second data selector 104 to the first. This is output to the 3-coefficient multiplier 106. In the third coefficient multiplier 106, the coefficient register 107 supplies the lifting coefficient α to the multiplier 108 in accordance with the control signal C2, and the multiplier 108 multiplies the input data by the lifting coefficient α (= α × (X (2n) + X (2n + 2))) is output. This output data is output to the adder 110 at the subsequent stage after the sign is inverted in the two's complement arithmetic circuit 109. Then, the adder 110 at the subsequent stage includes the multiplication value input from the third coefficient multiplier 106 and the data D input from the third terminal S2 of the second data selector 104.2 nAnd the output data X (2n + 1) in the target area C4 is calculated and output to the output destination selection unit 129.
[0231]
In addition, the adder 111 in the previous stage has two points of data D in the target area C3 input from the fourth terminal S3 and the fifth terminal S4 of the second data selector 104.2 n + 1, D2 n + 2Is added to the fourth coefficient multiplier 112. In the fourth coefficient multiplier 112, the coefficient register 113 supplies the lifting coefficient β to the multiplier 114 according to the control signal C3, and the multiplier 114 multiplies the input data by the lifting coefficient β (= β × (D2 n + 1+ D2 n + 2)) Is output. The output data is output to the adder 116 at the subsequent stage after the sign is inverted in the two's complement arithmetic circuit 115. Then, the adder 116 at the subsequent stage receives 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.2 n + 2Is added to calculate the output data X (2n + 4) in the target area C3 and output it to the output destination selection unit 129.
[0232]
In addition, the adder 117 at the previous stage has two points of data S in the target area C2 input from the seventh terminal S6 and the eighth terminal S7 of the second data selector 104.2 n + 3, S2 n + 4Is added 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 γ (= γ × (S2 n + 3+ S2 n + 4)) Is output. This output data is output to the adder 122 in the subsequent stage after the sign is inverted in the two's complement arithmetic circuit 121. Then, the adder 122 at the subsequent stage receives 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 + 3And the intermediate data D in the target area C22 n + 3Is output to the output destination selection unit 129.
[0233]
In addition, the adder 123 in the previous stage has two points of data D 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 added 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. This output data is output to the adder 128 in the subsequent stage after the sign is inverted in the two's complement arithmetic circuit 127. Then, the adder 128 at the subsequent stage includes the multiplication 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.2 n + 5Is output to the output destination selection unit 129.
[0234]
The output destination selection unit 129 outputs the two points of 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 three points of data input from the three adders 110, 122, and 128 at the subsequent stage to the MMU 92. The MMU 92 outputs the output intermediate data X (2n + 4), D2 n + 3, S2 n + 5Is transferred to the third ring memory 93, and the MMU 92 receives the data (2n + 4), D of the three points.2 n + 3, S2 n + 5Is transferred to the ring memory 93, and the referenced storage area S is transferred.2 n + 2, D1 n + 3, Y (2n + 10).
[0235]
In the next N + 1-th processing (FIG. 30), the conversion processing of the target areas C5, C6, C7, and C8 is performed. In addition, two normalization processes of the target areas N3 and N4 are executed in a cycle one clock before the conversion process of the target areas C5, C6, C7, and C8. The target areas C5, C6, C7, C8, N3, and N4 are areas in which the target areas C1, C2, C3, C4, N1, and N2 of the N-th process (FIG. 29) are moved backward by two series (two points). is there. In these target areas C5, C6, C7, C8, N3, and N4, processing similar to that in the target areas C1, C2, C3, C4, N1, and N2 is executed. Therefore, in the target area C8, output data X (2n + 3) on the series starting from the odd-numbered input data Y (2n + 3) is calculated, and in the target area C7, the even-numbered input data Y (2n + 6) is used as the start point. Output data X (2n + 6) on the series to be calculated, and in the target area C6, second-stage intermediate data D on the series starting from the odd-numbered input data Y (2n + 9).2 n + 4In the target area C1, the second-stage intermediate data S on the series starting from the even-numbered input data Y (2n + 12).2 n + 6Is calculated. Also, in the target areas N3 and N4, the normalization process for the input data Y (2n + 12) and Y (2n + 13) is executed in the period before one clock.
[0236]
Further, in the N + 2th process (FIG. 31), the conversion process for the target areas C9, C10, C11, and C12 is performed. In addition, two normalization processes of the target areas N5 and N6 are executed in a cycle one clock before the conversion process of the target areas C9, C10, C11, and C12.
[0237]
As described above, the same process as the N-th process (FIG. 29) is repeatedly executed while moving the target area until the output data of all points is calculated. Thereby, the average period required to calculate the output data of the even-numbered and odd-numbered two points can be set to one clock period, and the calculation period of the output data can be greatly shortened.
[0238]
Next, line-based two-dimensional inverse DWT processing 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, from the first and second horizontal filtering units 33H and 33L, subbands 23H (YH(M)), 23L (YL(M)) is output.
[0240]
The 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), YLThe vertical line data of (m) are alternately arranged to be input as a pixel column 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 subband 23H by filtering the data input in units of horizontal lines at one clock cycle per point, and the second ring The memory 32L and the second horizontal filtering unit 33L output the subband 23L by filtering the data input in units of horizontal lines at one clock cycle per point.
[0242]
As the first ring memory 32H and the second ring memory 33L, the ring memory 32s shown in FIG. 22 described in the third embodiment can be used. As shown in FIG.j(K), Xj + 1.. Has a storage area 133 that holds data of 8 points (8 pixels) corresponding to (k),..., And can hold the temporary data and intermediate data. Alternatively, the first ring memory 32H and the second ring memory 33L can use the ring memory 32 of FIG. 15 described in the second embodiment, and as shown in FIG.j(K), Xj + 1.. Has a storage area 59 for holding data of 9 points (9 pixels) corresponding to (k),..., And can hold 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 do.
[0244]
The third ring memory 93 and the vertical filtering unit 94 repeatedly execute each process including the Nth process (FIG. 29) and the N + 1th process (FIG. 30) in units of horizontal lines for each pixel column. For example, the N-th process (FIG. 29) is performed on the first pixel column after being performed on the zeroth pixel column, and then is performed on the second pixel column. ... Finally, the process is performed on the (W-1) th pixel column. Thereafter, the N + 1-th processing (FIG. 30) is performed on the first pixel column after being performed on the 0th pixel column, and is further performed on the second pixel column. .. Finally, the process is performed on the W-1th pixel column. In this way, each process is repeatedly executed for all pixel columns.
[0245]
As a result, the vertical filtering unit 94 outputs even-numbered row data and odd-numbered row data in parallel in units of horizontal lines. For example, as a result of continuously executing the N-th process (FIG. 29) on the 0th to (W-1) th pixel columns, the data X in the odd rows of the 2n + 1th horizontal line0(2n + 1), X1(2n + 1), ..., Xj(2n + 1), ..., XW-1(2n + 1) is continuously output. In parallel with this, the data X of the even row of the 2n + 4th horizontal line0(2n + 4), X1(2n + 4), ..., Xj(2n + 4), ..., XW-1(2n + 4) is 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 string, and the temporary data And intermediate data. The storage area 132 is an aggregate of row areas that hold 12 points of data in the vertical direction. One row area holds input data and intermediate data referred to in one process. For example, in the N-th process (FIG. 29), the data string {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)}, the data string {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} The stored content changes to (Data S2 n + 2, D1 n + 3, Y (2n + 10), Y (2n + 11) are data X (2n + 4), D, respectively.2 n + 3, S2 n + 5, D1 n + 5Will be overwritten).
[0247]
By executing the above processing recursively, it is possible to synthesize subbands (band components) of an arbitrary order of decomposition level. That is, four subbands LL (k + 1), HL (k + 1), LH (k + 1), and HH (k + 1) at a decomposition level of k + 1 order (k is an integer of 2 or more) are input to the wavelet transform device 90. , Subband LL (k) at the kth order decomposition level can be obtained, and the original image data is restored from the subband at the kth order decomposition level by recursively executing such processing. It is possible.
[0248]
As described above, in the wavelet transform device 90 and the wavelet transform method according to the present embodiment, four conversion processes for calculating four points of intermediate data and two normalization processes for normalizing the two points of intermediate data are performed. Since parallel execution is performed within one clock cycle, the calculation cycle of output data can be greatly shortened. Therefore, it is possible to execute wavelet transformation at a high speed in a very short time.
[0249]
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. Therefore, two points of combined data can be calculated in parallel within one clock cycle. Therefore, it is possible to execute line-based two-dimensional DWT calculation at extremely high speed.
[0250]
<Modification>
FIG. 34 is a diagram showing 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 that temporarily holds sub-band two-dimensional image data, an MMU (memory management unit) 92A that operates in synchronization with an externally supplied clock signal CLK, a first ring memory 93A, a horizontal A filtering unit 94A, a line buffer circuit 141, a second ring memory 93B, and a vertical filtering unit 94B are provided.
[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 subbands 23H and 23L are alternately output in units of horizontal lines.
[0253]
In the line buffer circuit 141, each of the first line buffer 143 and the second line buffer 144 includes buffers for two horizontal lines. During the period in which the selector 142 stores the two input data in either the first line buffer 143 or the second line buffer 144, the demultiplexer 145 reads the two data stored in the other direction and reads the second data. The data is output to the 2-ring memory 93B.
[0254]
As described above, even with the configuration of this modification example, two points of combined data can be calculated in parallel within one clock cycle, and therefore, line-based two-dimensional DWT calculation can be executed at extremely high speed.
[0255]
【The invention's effect】
As described above, according to the wavelet transform device of the present invention, the process of standardizing each input data and the transform process of converting each intermediate data into other intermediate data or output data on one series are repeatedly executed. Since at least two processes among a plurality of repeatedly executed processes are executed in parallel within one clock cycle, the output data calculation cycle can be shortened, and the inverse wavelet transform can be executed quickly in a short time. It becomes possible.
[0256]
According to the wavelet transform method of the present invention, the step (b) of normalizing the input data and converting it into the first stage intermediate data, and the step of converting the intermediate data into other intermediate data on one series ( c) and the step (d) of converting the intermediate data in the final stage into the output data are repeatedly executed. In order to execute at least two steps among the plurality of steps to be repeatedly executed in parallel within one clock cycle, The cycle for calculating the output data from the input data string can be shortened, and the inverse wavelet transform can be performed quickly in a short time.
[Brief description of the drawings]
FIG. 1 is a diagram showing a schematic configuration of a wavelet transform apparatus 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 a lifting calculation process according to the first embodiment.
FIG. 5 is a diagram schematically showing a lifting calculation process 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 showing a lifting calculation process 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 illustrating 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 showing a schematic configuration of a wavelet transform apparatus according to a second embodiment of the present invention.
FIG. 15 is a schematic configuration diagram of a filtering unit according to the 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 showing 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 illustrating 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 diagram schematically showing a lifting calculation process 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 showing a schematic configuration of a wavelet transform device according to a modification of the second and third embodiments.
FIG. 27 is a diagram showing a schematic configuration of a wavelet transform apparatus according to a fourth embodiment of the present invention.
FIG. 28 is a schematic configuration diagram of a vertical filtering unit according to the 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 showing 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 showing 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 synthesis side.
FIG. 38 is a diagram schematically showing a calculation method recommended by the JPEG2000 system.
FIG. 39 is a diagram schematically showing a lifting calculation process;
FIG. 40 is a diagram schematically illustrating a lifting calculation process.
FIG. 41 is a diagram schematically showing a lifting calculation process.
FIG. 42 is a diagram schematically showing a lifting calculation process.
FIG. 43 is a diagram schematically illustrating a lifting calculation process.
FIG. 44 is a diagram schematically showing a lifting calculation process.
FIG. 45 is a diagram schematically showing a lifting calculation process.
FIG. 46 is a diagram schematically illustrating a lifting calculation process.
FIG. 47 is a diagram schematically showing a lifting calculation process.
FIG. 48 is a diagram schematically showing a lifting calculation process.
[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 for synthesizing band-divided high-frequency component data and low-frequency component data based on a lifting configuration,
A control unit;
An output data sequence obtained by synthesizing an input data sequence configured 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 one in units of pixels. A filtering unit for calculating
With
The filtering unit includes:
A standard that executes one or more normalization processes for converting each input data into intermediate data of the first stage within one clock period per point by multiplying each of the input data strings by a predetermined normalization coefficient. And
Each of the first stage intermediate data standardized by the standardization means is converted into a series of intermediate data over one or a plurality of stages within one clock period, or the intermediate data of the last stage Intermediate data conversion means for performing one or a plurality of conversion processes for converting each into output data within one clock cycle per point;
The controller is
Causing the normalization means and the intermediate data conversion means to repeatedly execute the single or plural normalization processes and the single or plural conversion processes until the output data of all points is calculated, and repeatedly Control so that at least two of the one or more normalization processes and the one or more conversion processes are executed in parallel within one clock cycle.
A wavelet transform device characterized by that.
請求項1記載のウェーブレット変換装置であって、前記規格化手段および前記中間データ変換手段は、前記規格化処理および前記変換処理を並列に実行する、ウェーブレット変換装置。2. The wavelet transform device according to claim 1, wherein the normalization unit and the intermediate data conversion unit execute the normalization process and the conversion process in parallel. 請求項1または請求項2記載のウェーブレット変換装置であって、
前記規格化手段は、
各入力データに前記規格化係数を乗算する規格化係数乗算器と、
前記規格化係数乗算器から出力されたデータを遅延させる遅延器と、
を含み、
前記中間データ変換手段は、
2点の中間データの一方に所定のリフティング係数を乗算するリフティング係数乗算器と、該リフティング係数乗算器から出力されたデータと前記2点の中間データの他方とを加算する加算器とからなる2点演算部と、
前記2点演算部から出力されたデータを取り込んで前記制御部から指定された出力先に出力する出力先選択部と、
を含み、
前記ウェーブレット変換装置は、さらに、
メモリ管理部と、
前記メモリ管理部の制御によりデータを一時記憶するメモリと、
を備え、
前記メモリ管理部は、
前記出力先選択部から出力された前記データを前記メモリに転送し記憶させるように制御する、
ことを特徴とするウェーブレット変換装置。
The wavelet transform device according to claim 1 or 2,
The normalization means includes
A normalization coefficient multiplier that multiplies 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 includes
2 comprising a lifting coefficient multiplier that multiplies one of the two points of intermediate data by a predetermined lifting coefficient, and an adder that adds the data output from the lifting coefficient multiplier and the other of the two points of intermediate data. A point calculator,
An output destination selection unit that takes in the data output from the two-point calculation unit and outputs the data to the 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
Control to transfer and store the data output from the output destination selection unit to the memory;
A wavelet transform device characterized by that.
請求項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,
The control unit, as the conversion process,
The intermediate data of the first stage on the “series starting from input data belonging to the second data string” (hereinafter referred to as the second series), and the “first By adding the data obtained by multiplying the intermediate data of the first stage on the “series starting from input data belonging to the data string” (hereinafter referred to as the first series) by a predetermined lifting coefficient, A first conversion process for calculating second-stage temporary data on the second series within one clock cycle per point;
Multiplying the temporary data calculated in the first conversion process and stored in the memory by a predetermined lifting coefficient to the intermediate data of the first stage on the first series one point after the temporary data series Second conversion processing for calculating the intermediate data of the second stage on the second series within one clock cycle per point by adding the obtained data,
Add the intermediate data of the first stage on the first series and the data obtained by multiplying the intermediate data of the second stage on the second series one point before the intermediate data by a predetermined lifting coefficient. Thus, a third conversion process for calculating the second stage temporary data on the first series within one clock cycle per point;
Multiplying the temporary data calculated by the third conversion process and stored in the memory and the intermediate data of the second stage on the second series one point after the temporary data series by a predetermined lifting coefficient A fourth conversion process for calculating the intermediate data of the second stage on the first series within one clock cycle per point by adding the data obtained in this way;
Predetermined lifting to intermediate data of the Mth stage (the number of stages M is an integer of 1 or more) on the second series and the intermediate data of the Mth stage on the first series one point before the series of the intermediate data A fifth conversion process for calculating the M + 1 stage temporary data on the second series within one clock cycle by adding the data obtained by multiplying the coefficients;
Multiplying the temporary data calculated in the fifth conversion process and stored in the memory by the predetermined lifting coefficient to the M-th stage intermediate data on the first series one point after the temporary data series A sixth conversion process for calculating the M + 1 stage intermediate data on the second series within one clock cycle per point by adding the obtained data to
Predetermined lifting to intermediate data of the Lth stage (stage number L is an integer of 1 or more) on the first series and the intermediate data of the (L + 1) th stage on the second series one point before the intermediate data series A seventh conversion process for calculating L + 1-stage temporary data on the first sequence within one clock cycle per point by adding the data obtained by multiplying the coefficients;
Multiplying the temporary data calculated in the seventh conversion process and stored in the memory by a predetermined lifting coefficient to the intermediate data of the L + 1 stage on the second series one point after the temporary data series An eighth conversion process for calculating the intermediate data of the (L + 1) -th stage on the first series within one clock cycle by adding the data obtained in the above-described manner;
Is controlled so that the two-point arithmetic unit repeatedly executes the output data 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,
The control unit performs the fifth conversion process and the seventh conversion process after the first conversion process and the third conversion process are performed until the temporary data in the final stage is calculated. The output data is calculated for the sixth conversion process and the eighth conversion process after the two-point calculation unit is executed and then the second conversion process and the fourth conversion process are executed. Until the two-point calculation unit is controlled until
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,
Including the two two-point arithmetic units operating independently of each other;
The control unit, as the conversion process,
A second conversion process for calculating second-stage intermediate data on a series belonging to the second data string and starting from P-th input data (data number P is an integer) in the input data string; ,
The third conversion process for calculating second-stage temporary data on the series starting from the P-1th input data;
The sixth conversion processing for calculating the M + 1-th stage intermediate data on the series starting from the P-4th input data;
A seventh conversion process for calculating temporary data at the (L + 1) -th stage on the series starting from the P-5th input data;
The above four steps are executed in parallel by each of the two-point arithmetic units,
The first conversion processing for calculating second-stage temporary data on the sequence starting from P + 2nd input data;
The fourth conversion processing for calculating the intermediate data of the second stage on the series starting from the P-1th input data;
The fifth conversion process for calculating the M-th stage temporary data on the series starting from the P-2th input data;
The eighth conversion process for calculating intermediate data at the (L + 1) th stage on the series starting from the P-5th input data;
The wavelet transform apparatus controls each of the four processes to be executed in parallel by each of the two-point arithmetic units.
請求項1または請求項2記載のウェーブレット変換装置であって、
前記規格化手段は、
各入力データに前記規格化係数を乗算する規格化係数乗算器と、
前記規格化係数乗算器から出力されたデータを遅延させる遅延器と、
を含み、
前記中間データ変換手段は、
取り込まれた3点の入力データの中で第1および第2の入力データを加算する第1加算器と、該第1加算器から出力されたデータに所定のリフティング係数を乗算するリフティング係数乗算器と、該リフティング係数乗算器から出力されたデータと第3の入力データとを加算することで中間データを算出する第2加算器とからなる3点演算部と、
前記3点演算部から出力された中間データを取り込んで前記制御部から指定された出力先に出力する出力先選択部と、
を含み、
前記メモリ管理部は、
前記出力先選択部から出力された中間データを前記メモリに転送し記憶させるように制御する、
ウェーブレット変換装置。
The wavelet transform device according to claim 1 or 2,
The normalization means includes
A normalization coefficient multiplier that multiplies 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 includes
A first adder for adding first and second input data among the fetched three points of input data, and a lifting coefficient multiplier for multiplying the data output from the first adder by a predetermined lifting coefficient A three-point arithmetic unit comprising: a second adder that calculates intermediate data by adding the data output from the lifting coefficient multiplier and the 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 the output destination specified by the control unit;
Including
The memory management unit
Control to transfer and store the intermediate data output from the output destination selection unit to 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,
The control unit, as the conversion process,
The intermediate data of the first stage on the “series starting from input data belonging to the second data string” (hereinafter referred to as the second series), and about one point relative to the series of the intermediate data Obtained by multiplying data obtained by adding the intermediate data of the first stage of two points on the “sequence starting from input data belonging to the first data string” (hereinafter referred to as the first sequence) by a predetermined lifting coefficient. A first conversion process for calculating the intermediate data of the second stage on the second series within one clock cycle per point by adding the data;
A predetermined value is added to the data obtained by adding the intermediate data of the first stage on the first series and the intermediate data of the second stage of two points on the second series that are around one point to the series of the intermediate data of the first stage. A second conversion process for calculating the intermediate data of the second stage on the first sequence within one clock cycle per point by adding the data obtained by multiplying the lifting coefficients;
Intermediate data of the Mth stage (the number of stages M is an integer of 1 or more) on the second series, and two Mth stages on the first series that are around one point with respect to the series of the intermediate data of the Mth stage The intermediate data of the (M + 1) th stage on the second series is calculated within one clock cycle per point by adding the data obtained by multiplying the intermediate data to the data obtained by multiplying the predetermined lifting coefficient. 3 conversion processing,
Intermediate data of the Lth stage (the number of stages L is an integer of 1 or more) on the first series, and two (L + 1) th stages on the second series that are around one point with respect to the intermediate data series of the Lth stage The intermediate data of the (L + 1) -th stage on the first series is calculated within one clock cycle per point by adding the data obtained by multiplying the intermediate data to the data obtained by multiplying the predetermined lifting coefficient. 4 conversion processing,
Is controlled so that the three-point arithmetic unit repeatedly executes the output data until the output data of all 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,
Including the two three-point arithmetic units operating independently of each other;
The controller is
The second conversion processing for calculating the intermediate data on a series belonging to the first data string and starting from P-th input data (data number P is an integer) in the input data string;
The fourth conversion processing for calculating the intermediate data of the (L + 1) -th stage on the series starting from the P-4th input data;
A wavelet transform device that controls each of the three points to be executed in parallel by each of the three-point arithmetic units.
請求項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 controller is
The first conversion processing for calculating the intermediate data on a series starting from P + 3th input data (data number P is an integer) in the input data sequence;
The third conversion processing for calculating intermediate data of the (M + 1) th stage on the series starting from the (P-1) th input data;
A wavelet transform device that controls each of the three points to be executed in parallel by each of the three-point arithmetic units.
請求項8記載のウェーブレット変換装置であって、前記制御部は、前記第1の変換処理〜前記第4の変換処理を並列にさせるように制御する、ウェーブレット変換装置。9. The wavelet transform device according to claim 8, wherein the control unit controls the first conversion process to the fourth conversion process to be performed in parallel. 請求項1〜請求項11の何れか1項に記載のウェーブレット変換装置であって、
前記フィルタリング部は、直列に接続される第1フィルタリング部と第2フィルタリング部とから構成されており、
前記第1フィルタリング部は、水平方向および垂直方向のうちの一方向に帯域分割されている前記高域成分および前記低域成分のデータを入力し、これらのデータを合成してライン単位で算出し、
前記第2フィルタリング部は、前記第1フィルタリング部で算出された合成データに対して処理を実行することで、前記水平方向および前記垂直方向のうちの他方向の合成データを算出する、
ウェーブレット変換装置。
The wavelet transform device according to any one of claims 1 to 11,
The filtering unit is composed of a first filtering unit and a second filtering unit connected in series,
The first filtering unit inputs the data of the high-frequency component and the low-frequency component that are band-divided in one of the horizontal direction and the vertical direction, and synthesizes these data to calculate in line units. ,
The second filtering unit calculates combined data in another direction of the horizontal direction and the vertical direction by executing processing 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 synthesizing 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 string formed by alternately arranging a first data string composed of one of a high frequency component and a low frequency component and a second data string composed of the other one in pixel units. The process of capturing automatically,
(B) converting each of the input data captured in the step (a) by a normalization coefficient to convert it into intermediate data of the first stage within one clock period per point;
(C) A step of calculating intermediate data of the m-th stage (m is an integer of 1 or more) to the intermediate data of the (m + 1) -th stage within one clock cycle per point (the intermediate data of the m-th stage is the intermediate data of the final stage) In this case, the intermediate data in the (m + 1) th stage is output data.)
With
The step (b) and the step (c) are repeatedly executed until the output data of all points are calculated, and the step (b) and the step (c) that are repeatedly executed are performed within one clock cycle. A wavelet transform method characterized by being executed 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,
The step (c)
(C-1) Intermediate data of the first stage on the “series starting from input data belonging to the second data string” (hereinafter referred to as the second series), and one point before the intermediate data The intermediate data of the first stage on the “series starting from input data belonging to the first data string” (hereinafter referred to as the first series) is added to the data obtained by multiplying by a predetermined lifting coefficient A step of calculating the second stage temporary data on the second series within one clock cycle per point;
(C-2) The temporary data calculated in 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 the 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) Obtained by multiplying the intermediate data of the first stage on the first series and the intermediate data of the second stage on the second series one point before the intermediate data by a predetermined lifting coefficient Calculating the second stage temporary data on the first sequence within one clock cycle per point by adding the data;
(C-4) The temporary data calculated in the step (c-3) and stored in the memory, and intermediate data of the second stage on the second series one point after the temporary data series Calculating the intermediate data of the second stage on the first sequence within one clock cycle per point by adding the data obtained by multiplying by a predetermined lifting coefficient;
(C-5) Intermediate data of the Mth stage (number of stages M is an integer of 1 or more) on the second series, and the middle of the Mth stage on the first series one point before the intermediate data series Calculating the M + 1 stage temporary data on the second sequence within one clock cycle per point by adding the data obtained by multiplying the data by a predetermined lifting coefficient;
(C-6) The temporary data calculated in step (c-5) and stored in the memory, and the intermediate data of the Mth stage on the first series one point after the temporary data series Calculating the M + 1 stage temporary data on the second sequence within one clock cycle per point by adding the data obtained by multiplying a predetermined lifting coefficient;
(C-7) The intermediate data at the L-th stage (stage number L is an integer of 1 or more) on the first series, and the (L + 1) -th stage on the second series one point before the intermediate data series A step of calculating the L + 1 stage temporary data on the first sequence within one clock cycle per point by adding the intermediate data and the data obtained by multiplying by a predetermined lifting coefficient;
(C-8) The temporary data calculated in 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 temporary data series A step of calculating L + 1 stage intermediate data on the first sequence within one clock cycle per point by adding data obtained by multiplying a predetermined lifting coefficient;
With
A wavelet transform method for performing control so that the steps (c-1) to (c-8) are 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 step (c-1) and the step (c-3), the step (c-5) and the step (c-7) are executed until the temporary data of the output data is calculated. ,
Then, after executing the step (c-2) and the step (c-4), the step (c-6) and the step (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 second-stage intermediate data on a series belonging to the second data string and starting from P-th input data (data number P is an integer) in the input data string When,
The step (c-3) of calculating the second stage temporary data on the series starting from the P-1th input data;
The step (c-6) of calculating intermediate data of the (M + 1) -th stage on the series starting from the P-4th input data;
The step (c-7) of calculating L + 1 stage temporary data on the series starting from the P-5th input data;
The above four steps are executed in parallel by each of the two-point arithmetic units,
The step (c-1) of calculating the second stage temporary data on the series starting from the P + 2nd input data;
The step (c-4) of calculating the intermediate data of the second stage on the series starting from the P-1st input data;
The step (c-5) of calculating temporary data of the (M + 1) -th stage on the series starting from the P-2th input data;
The step (c-8) of calculating intermediate data of the (L + 1) -th stage on the series starting from the P-5th input data;
To control each of the four processes in parallel,
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,
The step (c)
(C-1) The intermediate data in the first stage on the “series starting from input data belonging to the second data string” (hereinafter referred to as the second series) and 1 for the intermediate data series A predetermined lifting coefficient is added to the data obtained by adding the first stage intermediate data of two points on the “series starting from input data belonging to the first data string” (hereinafter referred to as the first series). A step of calculating intermediate data of the second stage on the second series within one clock cycle per point by adding the data obtained by multiplication;
(C-2) Predetermined to data obtained by adding the intermediate data of the first stage on the first series and the second stage of intermediate data of two points on the second series that are around one point to the series of the intermediate data Calculating intermediate data of the second stage on the first sequence within one clock cycle per point by adding the data obtained by multiplying the lifting coefficients of
(C-3) Intermediate data of the Mth stage (the number M of stages is an integer of 1 or more) on the second series, and 2 on the first series that are around one point with respect to the series of intermediate data of the Mth stage By adding the data obtained by multiplying the M-th stage intermediate data of the points to the data obtained by multiplying the predetermined lifting coefficient, the M + 1-th stage intermediate data on the second series is converted into one clock cycle per point. A step of calculating within,
(C-4) Intermediate data at the Lth stage (the number of stages L is an integer of 1 or more) on the first series and 2 on the second series around one point with respect to the series of intermediate data at the Lth stage By adding the data obtained by multiplying the L + 1 stage intermediate data of the point by the predetermined lifting coefficient, the L + 1 stage intermediate data on the first series is added to one clock cycle per point. A step of calculating within,
With
A wavelet transform method that repeatedly executes the steps (c-1) to (c-4) 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,
The step (c-2) of calculating second stage intermediate data on a series belonging to the first data string and starting from P-th input data (data number P is an integer) in the input data string When,
The step (c-4) of calculating the intermediate data of the (L + 1) -th stage on the series starting from the P-4th input data;
To control each of the two processes in parallel,
Wavelet transform method.
請求項17または請求項18記載のウェーブレット変換方法であって、
前記入力データ列の中でP+3番目(データ番号Pは整数)の入力データを始点とする系列上の中間データを算出する前記工程(c−1)と、
P−1番目の入力データを始点とする系列上の第M+1段階の中間データを算出する前記工程(c−3)と、
の2個の処理をそれぞれ並列に実行させるように制御する、
ウェーブレット変換方法。
The wavelet transform method according to claim 17 or 18,
The step (c-1) of calculating intermediate data on a series starting from the input data of P + 3 (data number P is an integer) in the input data sequence;
The step (c-3) of calculating intermediate data of the (M + 1) -th stage on the series starting from the (P-1) th input data;
To control each of the two processes in parallel,
Wavelet transform method.
請求項17記載のウェーブレット変換方法であって、前記工程(c−1)〜工程(c−4)を並列に実行する、ウェーブレット変換方法。The wavelet transform method according to claim 17, wherein the steps (c-1) to (c-4) are executed in parallel. 請求項13〜請求項20の何れか1項に記載のウェーブレット変換方法であって、
低域成分と高域成分に帯域分割された2次元画像データに対して、当該2次元画像データの水平方向および垂直方向のうちの一方向にライン単位で前記工程(a)〜工程(c)を適用することによって合成データ列を算出し、この算出された合成データ列に対して、前記水平方向および前記垂直方向のうちの他方向に前記工程(a)〜工程(c)を適用する、ウェーブレット変換方法。
The wavelet transform method according to any one of claims 13 to 20, comprising:
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 units of lines in one of the horizontal and vertical directions of the two-dimensional image data. And applying the steps (a) to (c) to the calculated combined data sequence in the other direction 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 JP2004194224A (en) 2004-07-08
JP4223795B2 true 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)

Families Citing this family (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
JP4356032B2 (en) 2007-05-17 2009-11-04 ソニー株式会社 Information processing apparatus and method
JP4793320B2 (en) * 2007-05-17 2011-10-12 ソニー株式会社 Information processing apparatus and method
CN108829921B (en) * 2018-05-03 2022-05-17 天津大学 VLSI design method based on multilevel two-dimensional discrete wavelet transform
CN109408770B (en) * 2018-09-08 2022-05-20 天津大学 Lifting algorithm-based two-dimensional discrete wavelet transform architecture design method
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
JP2004194224A (en) 2004-07-08

Similar Documents

Publication Publication Date Title
Xiong et al. Efficient architectures for two-dimensional discrete wavelet transform using lifting scheme
Barua et al. An efficient architecture for lifting-based two-dimensional discrete wavelet transforms
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
JPH09284798A (en) Signal processor
WO2008015781A1 (en) Image processing device and electronic camera
TW201836357A (en) High efficiency adaptive loop filter processing for video coding
JP4223795B2 (en) Wavelet transform apparatus and wavelet transform method
US8204331B2 (en) Information processing apparatus and method to reduce delay in image decoding
Fry et al. Hyperspectral image compression on reconfigurable platforms
JP2003298846A (en) Two-dimensional subband encoding device
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
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
Bhanu et al. A detailed survey on VLSI architectures for lifting based DWT for efficient hardware implementation
US7940991B2 (en) Image signal processing apparatus
JP4102165B2 (en) Wavelet transform apparatus and wavelet transform method
US7643551B2 (en) Compressing video frames
EP1585060A1 (en) Subband video coding with temporal prediction
Divakara et al. Novel dwt/idwt architecture for 3d with nine stage 2d parallel processing using split distributed arithmetic
Salehi et al. A block-based 2D Discrete Wavelet Transform structure with new scan method for overlapped sections
JP3655088B2 (en) Wavelet transform device and encoding / decoding 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
JP2014119949A (en) Super-resolution system and program

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