JP4700838B2 - フィルタ処理装置 - Google Patents
フィルタ処理装置 Download PDFInfo
- Publication number
- JP4700838B2 JP4700838B2 JP2001151524A JP2001151524A JP4700838B2 JP 4700838 B2 JP4700838 B2 JP 4700838B2 JP 2001151524 A JP2001151524 A JP 2001151524A JP 2001151524 A JP2001151524 A JP 2001151524A JP 4700838 B2 JP4700838 B2 JP 4700838B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- wavelet transform
- processing
- arithmetic unit
- horizontal
- 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
Links
Images
Description
【0001】
【発明の属する技術分野】
本発明は画像データに代表される二次元情報を、ウェーブレット変換等の二次元フィルタ処理を行うフィルタ処理装置に関する。
【0002】
【従来の技術】
画像、特に多値画像は非常に多くの情報を含んでおり、その画像を蓄積・伝送する際にはデータ量が膨大になってしまうという問題がある。このため画像の蓄積・伝送に際しては、画像の持つ冗長性を除く、或いは画質の劣化が視覚的に認識し難い程度で画像データの変化を許容することによってデータ量を大幅に削減する高能率符号化が用いられる。
【0003】
例えば、静止画像の国際標準符号化方式としてISOとITU−Tにより勧告されたJPEGでは、画像データをブロック(8画素×8画素)ごとに離散コサイン変換(DCT)した後に、各変換係数を各々量子化し、さらにエントロピー符号化することにより画像データを圧縮している。しかし、ブロックごとにDCT、量子化を行なっているので、復号画像の各ブロックの境界で、所謂ブロック歪みが現れやすい。
【0004】
一方、新しい静止画像の国際標準符号化方式として検討されているJPEG2000では、量子化・エントロピー符号化の前に行なう変換処理として、ウェーブレット変換が用いられている。ウェーブレット変換は、DCT変換のように小さなブロック単位で処理を行うのではなく、該ブロックより十分大きなサイズのタイル単位で変換処理をするので、前記ブロック歪がないといった特徴がある。
【0005】
以下では、Lifting Schemeを用いたウェーブレット変換フィルタ処理について説明する。
【0006】
JPEG2000で使われているウェーブレット変換は、Lifting Schemeという方法で処理をすると、少ない演算量で効率良く変換処理を行なうことができる。
【0007】
図1に順方向のLifting Scheme、図2に逆方向のLifting Schemeのシグナルフローを示す。図1、図2は、低域変換係数の演算に9タップのデータ、高域変換係数の演算に7タップのデータを用いる場合のシグナルフローである。図中のα、β、γ、δはLifting係数と呼ばれるものである。先ず、図1の動作について説明する。
【0008】
入力画素をその順にX0, X1, X2, X3, X4, X5, ... のように表わす。該入力画素は、分類ユニットにて、偶数画素系列と奇数画素系列とに分類され、該ユニットの上側には添字が偶数の画素X0, X2, X4, ...が、下側には添字が奇数の画素 X1, X3, X5, ...が出力される。
【0009】
初段のLifting処理では、偶数画素系列に対しLifting係数:αを乗算し、連続する2個の乗算結果を、該2画素の中央に位置する奇数画素系列中の画素に加算する。これを一般化した式で表現すると、以下のようになる。
D2n+1 = X2n+1 + α・X2n + α・X2n+2 (1)
2段目のLifting処理では、新たに得られた奇数画素系列 D1, D3, D5, ...に対しLifting係数:βを乗算し、連続する2個の乗算結果を、該2画素の中央に位置する偶数画素系列中の画素に加算する。これを一般化した式で表現すると、以下のようになる。
E2n+2 = X2n+2 + β・D2n+1 + β・D2n+3 (2)
3段目のLifting処理では、Lifting係数:γを用いて、初段と同じように、4段目のLifting処理では、Lifting係数:δを用いて、2段目と同じように処理する。3段、4段目のLifting処理内容を表わす式は、下記のようになる。
H2n+1 = D2n+1 + γ・E2n + γ・E2n+2 (3)
L2n+2 = E2n+2 + δ・H2n+1 + δ・H2n+3 (4)
図中、Kは、ウェーブレット係数を正規化するものであるが、本発明の本質を説明するにあたって、特に関係ないことであるので、以下、説明を省略する。
【0010】
正規化処理を無視すれば、3段、4段目のLifting処理によってえられる、Hn, Ln は各々高域変換係数と低域変換係数に対応する。
【0011】
次に、図2に示す逆方向のLifting Schemeのシグナルフローについて簡単に説明する。まず始めに、順方向のLifting Schemeにおける正規化処理に対応して、逆の係数を掛けた後、4段のLifting処理を行なう。各段の処理内容を以下にまとめて式で表わすと次のようになる。
(1段目) E2n+2 = L2n+2 − δ・H2n+1 − δ・H2n+3 (5)
(2段目) D2n+1 = H2n+1 − γ・E2n − γ・E2n+2 (6)
(3段目) X2n+2 = E2n+2 − β・D2n+1 − β・D2n+3 (7)
(4段目) X2n+1 = D2n+1 − α・X2n − α・X2n+2 (8)
上記(5)(6)(7)(8)式は、各々(4)(3)(2)(1)式を移項して得られるものである。
【0012】
以上が、Lifting Schemeを用いたウェーブレット変換フィルタ処理についての説明である。
【0013】
図1及び図2のLifting Schemeを別の視点から表現したものが、図3及び図4に示すLifting格子構造である。同図において、□は入力データを、〇は格子点(あるいは格子点データ演算器)を表わし、〇から出ている矢印は格子点データの流れを示す。これらの図はLifting Schemeにおける基本処理(前記(1)〜(8)式の処理)並びに該処理によって得られる新たなデータを1つの格子点に対応させたものである。
【0014】
図3に示す順方向変換のLifting格子構造では、1つの格子点データは前記(1)〜(4)式のいずれかを用いて計算される。
【0015】
図4に示す逆方向変換のLifting格子構造では、1つの格子点データは前記(5)〜(8)式のいずれかにより計算される。
【0016】
【発明が解決しようとする課題】
さて、水平・垂直方向の2次元のウェーブレット変換を行なうには、上記演算を水平方向と垂直方向の2方向に対して行なう必要がある。それ故、その処理するハードウェアも水平方向用と垂直方向用の2つが必要となる。つまり、まったく同じ演算を行なうのに水平方向用と垂直方向用に2つ用意していることになり、ハードウェア規模が大きくなるという問題がある。
【0017】
本発明はかかる問題点に鑑みなされたものであり、二次元情報の水平及び垂直方向にフィルタ処理するためのハードウェア構成を簡単なものとするフィルタ処理装置を提供しようとするものである。
【0018】
【課題を解決するための手段】
この課題を解決するため、本発明のフィルタ処理装置は以下の構成を備える。すなわち、
二次元デジタルデータを二次元フィルタ処理するフィルタ処理装置であって、
フィルタ演算処理用の乗算器及び加算器と、水平及び垂直方向それぞれに対して異なる遅延量の水平遅延手段及び垂直遅延手段とを有する演算ユニットと、
前記水平及び垂直遅延手段の出力と前記演算ユニットの演算内容を、所定サイクル毎に切り替え、各々の演算ユニットの出力データを同じ演算ユニットに少なくとも1度は再入力して処理することを特徴とする。
【0019】
【発明の実施の形態】
以下、添付図面に従って本発明に係る実施形態を詳細に説明する。
【0020】
先ず、実施形態における前提について説明する。
【0021】
図5は、先に説明したLifting格子構造で表現されるウェーブレット変換を複数の演算ユニットを従属接続した構成で処理する場合の構成を示している。この構成のウェーブレット変換処理部を、図6に示すように2組使用して、その間に2×2データ回転部を設けることにより、垂直方向と水平方向の2次元ウェーブレット変換処理を行なう。
【0022】
演算ユニット内部の構成としては、図7と図12に示す2つの構成とする。以下では図7の構成の元になるウェーブレット変換処理の演算内容について簡単に説明する。なお、図7における符号703は乗算係数を入力したデータに乗算する乗算器であり、707及び709は2入力を加算する加算器である。
【0023】
前記図3において、演算途中のデータを保持することにより、毎サイクル2画素ずつ入力するだけで、低域変換係数と高域変換係数各々1つずつを出力することが可能である。
【0024】
今、演算途中のデータとして“D7t、E6t、H5t、L4t”があるものとする。該データは以下に示す式で演算されたものである。
D7t = X7 + α・X6 (9)
E6t = X6 + β・D5 (10)
H5t = D5 + γ・E4 (11)
L4t = E4 + δ・H3 (12)
ここに、“X8、X9”の2つのデータが入力されると、“L4、H5”を出力するために、以下の演算が行なわれる。
D7 = D7t + α・X8 (13)
E6 = E6t + β・D7 (14)
H5 = H5t + γ・E6 (15)
L4 = L4t + δ・H5 (16)
次のサイクルの演算に備えて保持するデータ“D9t、E8t、H7t、L6t”を以下の式から求める。
D9t = X9 + α・X8 (17)
E8t = X8 + β・D7 (18)
H7t = D7 + γ・E6 (19)
L6t = E6 + δ・H5 (20)
上記入力データ“X8、X9”は、初段の演算ユニットの端子701と702から入力し、演算した結果を端子711と712から出力する。この出力は次段の演算ユニットの端子701と702に入力し順次演算処理をおこなっていく。
【0025】
該処理内容をLifting格子構造の図にならって表現したのが図8である。同図における4つのレジスタで上記演算途中のデータを保持する。図7に示す演算ユニットを図5のように従属接続したハードウェアを構成することによって、上記一連の演算を実現することができる。
【0026】
水平方向のウェーブレット変換処理を行なう場合、図7における遅延バッファは、図8のようにレジスタ1段か、あるいはレジスタ数段で構成され、垂直方向のウェーブレット変換を行なう場合には、前記遅延バッファはラインメモリで構成される。
【0027】
よって、2次元のウェーブレット変換処理を行なう図6の構成においては、2×2データ回転部の前後で演算ユニット内の遅延バッファ構成は異なるものとなる。
【0028】
<第1の実施形態>
さて、上記原理を元に、本発明の第1の実施形態を以下に説明する。
【0029】
本第1の実施形態では、図7に示す演算ユニットに、遅延量の異なる2種類のバッファと該バッファを選択するセレクタを設けた図9の構成の演算ユニットを用いる。
【0030】
図9における901と903は、イネーブル制御端子付きのレジスタで、水平方向のウェーブレット変換処理に利用する。905は水平1ラインのデータを格納する容量を持つラインメモリで垂直方向のウェーブレット変換処理に利用する。
【0031】
907は前記レジスタ901の出力とラインメモリ905の出力の一方を選択するセレクタである。該セレクタで前記2つの出力を2サイクルおきに交互に選択することにより、水平方向と垂直方向の変換処理を交互に行なう。
【0032】
セレクタがV端子側を選択している時には垂直方向のウェーブレット変換処理となり、該セレクタがH端子側を選択している時には水平方向のウェーブレット変換処理となる。
【0033】
図9の演算ユニットを用いた2次元ウェーブレット変換処理部全体の構成を図10に示す。同図において、
1001と1002は、垂直2画素のデータを入力する端子、
1005〜1008は、前記図9に示す演算ユニット(但し、乗算係数は異なる)、
1011は、上記演算ユニット1001への入力データを選択するセレクタ、
1013は、1次元方向のウェーブレット変換処理をしたデータを2×2単位で並び替える2×2データ回転部、
1015は、前記4つの演算ユニットのセレクタ並びに、上記セレクタ1011を切り換える制御信号を入力する端子である。
【0034】
本第1の実施形態の構成は、低域9タップ・高域7タップの2次元ウェーブレット変換処理を行なうウェーブレット変換処理装置を示している。
【0035】
端子1001と1002に垂直2画素のデータを水平方向にスキャンしながら、2サイクルおきに入力する。セレクタ1011は、該垂直2画素のデータの入力サイクル時に該データを選択して演算ユニット1005へ送る。他のサイクルでは、2×2データ回転部1013の出力データを選択して同様に演算ユニット1005へ送る。
【0036】
前記4つの演算ユニットは、該ユニット内のセレクタが、端子1015から入力される制御信号によって切り換えられることにより、垂直方向ウェーブレット変換モードあるいは水平方向ウェーブレット変換モードになったりする。
【0037】
セレクタ1011が垂直2サンプルの入力データを選択するサイクルでは、垂直方向ウェーブレット変換モードになり、該セレクタが2×2データ回転部1013からのデータを選択するサイクルでは、水平方向ウェーブレット変換モードとなる。以上で概略説明を終え、動作説明を以下に行なう。
【0038】
既に、数ラインと数画素の処理が済んでおり、演算ユニット内の各ラインメモリとレジスタ内には演算途中のデータが既に格納されているものとし、垂直2サンプルのデータを2サイクル続けて入力するところから説明を開始する。
【0039】
4つの演算ユニット内の各セレクタはV端子側を選択しており、全体として垂直方向ウェーブレット変換モードになっており、このモードで2サイクル動作する。2サイクル動作した結果、垂直方向の低域変換係数と高域変換係数がそれぞれ2つずつ、2×2データ回転部1013に送られる。
【0040】
該2×2データ回転部1013は図16に示すような構成になっており、低域と高域変換係数のペアで入力された2組のデータを、4つのレジスタに取り込み、低域変換係数と高域変換係数に分けてそれぞれ2つずつのデータを2サイクルで出力する。前記4つのレジスタは取り込んだデータを出力し終わるまで、次のデータを取り込むことが無いように不図示のイネーブル端子に制御信号を与えることで制御する。
【0041】
上記4つのレジスタに取り込んだデータの出力タイミングは、前記垂直2サンプルのデータを続けて2サイクル入力した直後の次の2サイクルである。このサイクルでは、4つの演算ユニット内の各セレクタはH端子側に切り替わり、全体として水平方向ウェーブレット変換モードとして動作する。
【0042】
水平方向ウェーブレット変換モード時に活用される各演算ユニット内の2つのレジスタは、不図示のイネーブル信号で制御されて、該変換モード時における演算途中データを取り込み保持する。
【0043】
垂直方向に低域変換された係数を水平方向に処理するサイクルでは、該変換係数の処理途中のデータをレジスタ901から出力し、セレクタ907を経由して加算器709に送る。このサイクルで演算された水平方向の低域変換係数LLと高域変換係数LHは端子1021、1022から出力され、演算途中の結果はレジスタ903に入力され、次のサイクルで該レジスタに取り込まれる。それまでレジスタ903は、垂直方向に高域変換した係数を処理したデータを保持していたが、該データは前記データの取り込み時にレジスタ901にシフトされ該レジスタから新たに出力される。
【0044】
次のサイクルでは、該データを用いて、垂直方向に高域変換された係数を水平方向に処理する。上述した処理と同じように、水平方向の低域変換係数HLと高域変換係数HHは端子1021、1022から出力され、演算途中の結果はレジスタ903に入力され、次のサイクルで該レジスタに取り込まれる。前のサイクルでレジスタ903に取り込んだデータはレジスタ901にシフトされる。この時点で2つのレジスタに保持したデータは次の2サイクル(垂直方向ウェーブレット変換モード)の間、同じレジスタで保持し続ける。
【0045】
以上の処理で水平方向ウェーブレット変換モードを終了し、また垂直方向ウェーブレット変換モードに戻る。上述した4サイクルの処理を繰り返すことで画像全体を2次元ウェーブレット変換処理することができるようになる。
【0046】
上記4サイクルの間に、入力端子1001、1002から垂直2サンプルのデータを2組、すなわち4サンプルの画素データを受け取り処理するわけであるから、処理レートは1サイクル当たり1サンプルとなる。
【0047】
なお、9/7フィルタの2次元ウェーブレット変換の処理レートが1サイクル当たり1サンプルでよい場合、本実施形態は固定係数を乗算する定数乗算器を4個しか使用しないという点で、最適な構成であると言える。
【0048】
上記動作説明は、本発明の最も基本的な構成について理解してもらうためのもので、高速化のためのパイプライン処理については触れていない。実際のハードウェアでは、各演算ユニット間にレジスタを挿入することによってパイプライン化を図り、レジスタ間の演算遅延時間を小さくし、動作周波数を高くするといった高速化が行なわれる。
【0049】
その場合、端子1001と1002から入力したデータを演算処理した結果が演算ユニット1008から出力されるまで3又は4サイクルかかってしまう。そうなると、上記動作説明のように、垂直方向にウェーブレット変換した結果をすぐにセレクタ1011へ入力し、直後に水平方向のウェーブレット変換処理をするといったことができなくなる。
【0050】
すなわち、垂直方向にウェーブレット変換した結果を直ちに水平方向のウェーブレット変換処理しようとしても、変換結果出力直後の前記演算ユニットの変換モードが水平方向ウェーブレット変換モードになっていないといったことが、動作タイミング上でてくる。前記変換モードは2サイクルおきに変わるため、最大2サイクル待てば、水平方向ウェーブレット変換モードに変わり、前記変換出力を水平方向にウェーブレット変換することが出来るようになる。
【0051】
よって、2×2データ回転部におけるレジスタの数が増えることになる。パイプライン処理しない場合、垂直方向の変換処理結果を格納するためのレジスタと、水平方向の変換処理の際に入力データを供給するためのレジスタを共用できたが、上述のパイプライン処理化によりタイミングが合わなくなってくると、該2種類のレジスタを別々に持つ必要がでてくる。
【0052】
しかし、パイプライン処理する/しないに関わらず、次の点は同じである。各演算ユニット単位で見た時、垂直方向の変換処理を2サイクル行なった後は、水平方向の変換処理を2サイクル行なう。セレクタ1011も2サイクル毎に切り替え動作を行なう。
【0053】
以下では、各種変形と応用例について説明する。
【0054】
前記レジスタ901,903にイネーブル端子を設けない場合、すなわち、該レジスタにクロックが入力されると単純に入力データを取り込むだけの動作をする場合には、該レジスタを4つ並べれば上記機能を実現できる。この4つのレジスタの内、変換処理に有効なデータを保持しているのは2つのみで、他の2つは無効なデータである。この無効なデータはセレクタ907で選択されることが無いように該セレクタの切り換えタイミングが制御されるので該無効データは無視することができる。
【0055】
上記実施形態の説明では、2サイクルおきに垂直2サンプルのデータを入力していたが、1サイクルおきに入力しても2次元ウェーブレット変換処理することは可能である。この場合、前記演算ユニット群の垂直方向ウェーブレット変換モードと水平方向ウェーブレット変換モードの切り換えも1サイクル毎に行なう。具体的な制御としては、セレクタ907の切り換えを1サイクル毎に行ない、レジスタ903への演算途中データの取り込みも1サイクルおきに行なう。このように制御の方法が若干異なるだけで、演算処理系の構成は上記実施形態で説明した構成とまったく同じである。
【0056】
これまでの説明では、垂直方向のウェーブレット変換後に水平方向のウェーブレット変換を行なうという処理の順序であったが、水平方向のウェーブレット変換後に垂直方向のウェーブレット変換を行なうこともできる。この場合、端子1001,1002から入力するデータは水平2サンプルのデータを入力し、該入力データを水平方向ウェーブレット変換モードで処理する。水平2サンプルのデータ入力は2サイクルおきでもよいし1サイクルおきでもよいが、同一ラインのデータを単純にスキャンして入力するのではなく、2ラインのデータを交互に入力しながらスキャンしていく。
【0057】
該2ラインは、前述した垂直2サンプルを入力する場合の2サンプルが属する2ラインに対応する。
【0058】
2ラインのデータを交互に入力することで、2×2データ回転部に、該2ラインの水平方向の低域変換係数と高域変換係数が蓄えられる。これを90度回転して垂直2サンプルずつの低域変換係数と高域変換係数に並び替え、前記水平2サンプルのデータを入力しない空きサイクル期間に、セレクタ1011を経由して演算ユニット1005へ入力する。この時、4つの演算ユニット1005〜1008は垂直方向ウェーブレット変換モードとして動作する。
【0059】
以上の動作により、水平方向のウェーブレット変換処理を先に行なった後に垂直方向のウェーブレット変換処理を行なうことができる。このような処理も図10と同じ構成で制御方法を変えるだけで対応できる。
【0060】
ウェーブレット変換した変換係数は逆ウェーブレット変換しなければ元の画像に戻すことが出来ないので、逆ウェーブレット変換を行なう機能も当然必要となる。
【0061】
逆ウェーブレット変換は、図11に示すLifting格子構造に基づき、以下に示す演算で処理する。まず“X3、X4”を出力するために以下の演算を行なう。
E6 = L6t − δ・H7 (21)
D5 = H5t − γ・E6 (22)
X4 = E4t − β・D5 (23)
X3 = D3t − α・X4 (24)
次の演算に残すデータを以下のように演算する。
L8t = L8 − δ・H7 (25)
H7t = H7 − γ・E6 (26)
E6t = E6 − β・D5 (27)
D5t = D5 − α・X4 (28)
上記演算のために受け取る中間データが“L6t、H5t、E4t、D3t”であり、次の演算のために残すデータが“L8t、H7t、E6t、D5t”であるため、2サンプルずつ位置をずらせば繰り返し演算することが可能である。
【0062】
順方向ウェーブレット変換の演算を表わすLifting格子構造である図8と比較すると、乗算係数の順序が逆になっているのと該乗算係数に−の符号がついていることを除けば、図11は図8と同じ構造になっていると言える。
【0063】
よって、本実施形態の構成を一部修正するだけで、逆方向のウェーブレット変換処理も行なうことが出来るようになる。具体的には以下の2つの方法がある。
(1)1つの演算ユニット内に2つの乗算器を用意してそれを切り換える。
(2)演算ユニット内の加算器を加減算器に変更し、順方向変換時には加算器として使用し逆方向変換時には減算器として使用すると共に、逆方向変換時には演算ユニット1008→1007→1006→1005の順に処理データを流すようにデータの流れを変える。これは、セレクタ等を用いて制御することができる。
【0064】
以上が、逆方向ウェーブレット変換処理も可能な構成についての説明である。
【0065】
また、本発明は、図12の構成の演算ユニットに、遅延量の異なる2種類のバッファと該バッファを選択するセレクタを設けた図13の構成の演算ユニットを従属接続してウェーブレット変換処理する場合にも適用可能である。
【0066】
<第2の実施形態>
第2の実施形態では、垂直方向のウェーブレット変換・水平方向のウェーブレット変換処理をそれぞれ1つの演算ユニットで処理し、2×2データ回転部を挟んで該演算ユニットを従属接続することで、2次元のウェーブレット変換処理を行なう構成について示す。
【0067】
第2の実施形態の構成を図14に示す。同図において、1401は垂直方向ウェーブレット変換用の演算ユニット、1403は水平方向ウェーブレット変換用の演算ユニット、1411と1413は、それぞれ上記演算ユニットに入力するデータを選択するセレクタ、1421〜1424は、同じ演算ユニットに処理したデータを再入力するために、該データを保持するレジスタであり、その他の構成要素は、前記第1の実施形態で示した構成:図10における同一番号要素と同じである。
【0068】
これまでに説明した構成では、9/7フィルタの1次元ウェーブレット変換処理をするには、図5に示すように、演算ユニットが4つ必要であった。
【0069】
これを1つの演算ユニットで処理するには、該演算ユニットの出力データを繰り返し入力して処理する必要がある。そのようにデータの流れを制御するのがセレクタ1411と1413である。
【0070】
端子1001、1002から入力された垂直2サンプルのデータはセレクタ1411で選択されて演算ユニット1401に入力される。該演算ユニットでは第1のステップの演算として、乗算係数αを用いてLifting演算を行ない、演算結果を出力する。
【0071】
出力された演算結果はレジスタ1421、1422に保持されて、セレクタ1411に入力され、該セレクタにて選択されて前記演算ユニットに再入力される。該演算ユニットでは第2のステップの演算が行なわれる。
【0072】
該演算ユニットから出力される演算結果は、レジスタ1421,1422で保持して、同様にセレクタ1411経由で該演算ユニットに再入力し、第3のステップ、第4のステップの演算を行なう。弟2、第3、第4のステップでは、それぞれ乗算係数としてβ、γ、δが用いられ、Lifting演算が行なわれる。
【0073】
第4ステップの演算が終了した演算結果は、垂直方向のウェーブレット変換処理をした低域と高域の変換係数である。
【0074】
該変換係数は2×2データ回転部1013に送られる。2組の低域・高域変換係数が該2×2データ回転部に入力されると、低域変換係数2つと高域変換係数2つ、すなわち、水平方向2サンプルのデータ2組に並び替えられてから出力される。
【0075】
該係数データは、セレクタ1413で選択されて、演算ユニット1403に入力される。前記演算ユニット1401と同様、該演算ユニット1403も第1〜4のステップの演算処理を行なう。該演算ユニットから出力するデータをレジスタ1423、1424で保持し、セレクタ1413を経由して、前記演算ユニットに再入力する。セレクタ1411、1413はいずれも、新たなデータを入力したサイクルの次の3サイクルは次段の演算ユニットで処理して出力したデータを再入力する。
【0076】
前記2×2データ回転部から先行して出力する低域変換係数を上記第1〜4のステップで演算し終えた後に、続いて2×2データ回転部より出力する高域変換係数をセレクタ1413経由で演算ユニット1403に入力し、該高域変換係数の処理を行なう。
【0077】
各変換係数を、演算ユニット1403において、第1〜4ステップの演算処理をした結果は、上記垂直方向の低域と高域の変換係数をさらに水平方向の低域と高域の変換係数に分けたもの、すなわち、2次元ウェーブレット変換処理した4種類の変換係数である。該変換係数は端子1021、1022から2回に分けて外部へ出力される。
【0078】
演算ユニット1401には遅延バッファとして、図9に示した演算ユニット内のラインメモリ4つ分の容量が必要になる。このラインメモリは該容量の1つの大きなラインメモリであってもよいし、図9におけるラインメモリと同じ容量のラインメモリを4つ持ち、それを演算ステップに対応して切り換えてもよい。
【0079】
演算ユニット1403は、2種類のデータに対し第1〜4ステップの演算を行なうため、8種類の演算途中データが必要である。よって、該演算ユニットにおける遅延バッファには該演算途中データを格納できる8段のレジスタがあればよい。
【0080】
前記第1の実施形態と同様、図12の構成の演算ユニットに、上記遅延バッファを持たせることで、該構成の演算ユニットを用いて本実施形態と同じ処理をすることが可能である。
【0081】
<第3の実施形態>
第3の実施形態は、前記第1の実施形態と第2の実施形態を組み合わせて、さらに演算ユニットの数を減らした構成について示す。
【0082】
前記第1の実施形態は、垂直方向のウェーブレット変換処理と水平方向のウェーブレット変換処理を共通の演算ユニット群で交互に処理するものであった。第2の実施形態は、1次元方向のウェーブレット変換処理における複数の演算ステップを単一の演算ユニットで処理するものであった。
【0083】
本実施形態では、水平と垂直の両方向のウェーブレット変換処理における複数の演算ステップを全て1つの演算ユニットで行なうものである。本実施形態の構成を図15に示す。
【0084】
同図において、1501は2次元ウェーブレット変換のすべての演算を行なう演算ユニット、1503は2入力が3系統ありその内の1系統を選択するセレクタであり、その他は前記図14における同一番号の構成要素と同じである。
【0085】
前記第2の実施形態と同様、1組の入力データまたは1組の変換係数を4つの連続サイクルで前記第1〜4ステップの演算処理を行なう。2組の入力データと該データをウェーブレット変換した2組の変換係数、すなわち、4組のデータが処理の最小単位となるので、16サイクル周期で変換処理を行なう。
【0086】
16サイクルの前半8サイクルで2組の入力データを垂直ウェーブレット変換処理する。この時、演算ユニット1501は図14における演算ユニット1401と同等の処理を行なう。垂直ウェーブレット変換された2組の変換係数は、2×2データ回転部1013に取り込まれ、垂直方向の低域変換係数2つと高域変換係数2つ、すなわち、水平方向2サンプルのデータ2組に並び替えられて出力される。
【0087】
16サイクルの後半の8サイクルでは、前記2×2データ回転部から出力される2組の変換係数をレジスタ1421、1422で保持し、セレクタ1503経由で演算ユニットに再入力して水平ウェーブレット変換処理する。この時、演算ユニット1501は図14における演算ユニット1403と同等の処理を行なう。
【0088】
2次元ウェーブレット変換処理して求められた変換係数は、端子1021、1022から外部に出力される。
【0089】
本実施形態における演算ユニット1501は、水平と垂直の両方のウェーブレット変換処理を行なうため、前記第2の実施形態における2つの演算ユニット1401と1403がそれぞれ有する遅延バッファの両方を合わせ持つ。
【0090】
また、本実施形態においても、前記図12の構成の演算ユニットを拡張して使用することができる。
【0091】
以上説明したように本第1乃至第3の実施形態によれば、ウェーブレット変換等の水平及び垂直方向に対するフィルタ処理が、ごく単純な構成により実現出来るようになり、ハードウェア規模もより小さなものとすることができる。
【0092】
なお、上記実施形態では、ウェーブレット変換(及び逆ウェーブレット変換)についてのみ説明したが、本発明は、画像に代表される二次元的な情報について水平及び垂直方向にフィルタ処理する場合に適用できるものであるので、その用途によって限定されるものではない。
【0093】
また、上記実施形態で説明した回路構成は、例えばパーソナルコンピュータが有するバススロット(例えばPCIバススロット)に装着するエンコーダ及びデコーダカードとしても適用できる。
【0094】
【発明の効果】
以上説明したように本発明によれば、二次元情報の水平及び垂直方向にフィルタ処理するためのハードウェア構成を簡単なものとすることができる。従って、JPEG2000等におけるウェーブレット変換にこれを適用した場合には、その変換にかかる装置を小型化でき、十分な処理速度を得ることができる。
【図面の簡単な説明】
【図1】順変換のLifting Schemeを示す図である。
【図2】逆変換のLifting Schemeを示す図である。
【図3】DWT(順方向ウェーブレット変換)のLifting格子構造を示す図である。
【図4】IDWT(逆方向ウェーブレット変換)のLifting格子構造を示す図である。
【図5】1次元ウェーブレット変換処理部の構成を示す図である。
【図6】2次元ウェーブレット変換処理部の構成を示す図である。
【図7】演算ユニットの内部構成を示す図である。
【図8】演算結果を再利用するDWT演算のLifting格子構造を示す図である。
【図9】第1の実施形態で用いる演算ユニットの内部構成を示す図である。
【図10】第1の実施形態の構成を示す図である。
【図11】演算結果を再利用するIDWT演算のLifting格子構造を示す図である。
【図12】格子点データ演算ユニットの構成を示す図である。
【図13】図12の演算ユニットを第1の実施形態で用いるために修正した構成を示す図である。
【図14】第2の実施形態の構成を示す図である。
【図15】第3の実施形態の構成を示す図である。
【図16】2×2データ回転部の構成を示す図である。
【発明の属する技術分野】
本発明は画像データに代表される二次元情報を、ウェーブレット変換等の二次元フィルタ処理を行うフィルタ処理装置に関する。
【0002】
【従来の技術】
画像、特に多値画像は非常に多くの情報を含んでおり、その画像を蓄積・伝送する際にはデータ量が膨大になってしまうという問題がある。このため画像の蓄積・伝送に際しては、画像の持つ冗長性を除く、或いは画質の劣化が視覚的に認識し難い程度で画像データの変化を許容することによってデータ量を大幅に削減する高能率符号化が用いられる。
【0003】
例えば、静止画像の国際標準符号化方式としてISOとITU−Tにより勧告されたJPEGでは、画像データをブロック(8画素×8画素)ごとに離散コサイン変換(DCT)した後に、各変換係数を各々量子化し、さらにエントロピー符号化することにより画像データを圧縮している。しかし、ブロックごとにDCT、量子化を行なっているので、復号画像の各ブロックの境界で、所謂ブロック歪みが現れやすい。
【0004】
一方、新しい静止画像の国際標準符号化方式として検討されているJPEG2000では、量子化・エントロピー符号化の前に行なう変換処理として、ウェーブレット変換が用いられている。ウェーブレット変換は、DCT変換のように小さなブロック単位で処理を行うのではなく、該ブロックより十分大きなサイズのタイル単位で変換処理をするので、前記ブロック歪がないといった特徴がある。
【0005】
以下では、Lifting Schemeを用いたウェーブレット変換フィルタ処理について説明する。
【0006】
JPEG2000で使われているウェーブレット変換は、Lifting Schemeという方法で処理をすると、少ない演算量で効率良く変換処理を行なうことができる。
【0007】
図1に順方向のLifting Scheme、図2に逆方向のLifting Schemeのシグナルフローを示す。図1、図2は、低域変換係数の演算に9タップのデータ、高域変換係数の演算に7タップのデータを用いる場合のシグナルフローである。図中のα、β、γ、δはLifting係数と呼ばれるものである。先ず、図1の動作について説明する。
【0008】
入力画素をその順にX0, X1, X2, X3, X4, X5, ... のように表わす。該入力画素は、分類ユニットにて、偶数画素系列と奇数画素系列とに分類され、該ユニットの上側には添字が偶数の画素X0, X2, X4, ...が、下側には添字が奇数の画素 X1, X3, X5, ...が出力される。
【0009】
初段のLifting処理では、偶数画素系列に対しLifting係数:αを乗算し、連続する2個の乗算結果を、該2画素の中央に位置する奇数画素系列中の画素に加算する。これを一般化した式で表現すると、以下のようになる。
D2n+1 = X2n+1 + α・X2n + α・X2n+2 (1)
2段目のLifting処理では、新たに得られた奇数画素系列 D1, D3, D5, ...に対しLifting係数:βを乗算し、連続する2個の乗算結果を、該2画素の中央に位置する偶数画素系列中の画素に加算する。これを一般化した式で表現すると、以下のようになる。
E2n+2 = X2n+2 + β・D2n+1 + β・D2n+3 (2)
3段目のLifting処理では、Lifting係数:γを用いて、初段と同じように、4段目のLifting処理では、Lifting係数:δを用いて、2段目と同じように処理する。3段、4段目のLifting処理内容を表わす式は、下記のようになる。
H2n+1 = D2n+1 + γ・E2n + γ・E2n+2 (3)
L2n+2 = E2n+2 + δ・H2n+1 + δ・H2n+3 (4)
図中、Kは、ウェーブレット係数を正規化するものであるが、本発明の本質を説明するにあたって、特に関係ないことであるので、以下、説明を省略する。
【0010】
正規化処理を無視すれば、3段、4段目のLifting処理によってえられる、Hn, Ln は各々高域変換係数と低域変換係数に対応する。
【0011】
次に、図2に示す逆方向のLifting Schemeのシグナルフローについて簡単に説明する。まず始めに、順方向のLifting Schemeにおける正規化処理に対応して、逆の係数を掛けた後、4段のLifting処理を行なう。各段の処理内容を以下にまとめて式で表わすと次のようになる。
(1段目) E2n+2 = L2n+2 − δ・H2n+1 − δ・H2n+3 (5)
(2段目) D2n+1 = H2n+1 − γ・E2n − γ・E2n+2 (6)
(3段目) X2n+2 = E2n+2 − β・D2n+1 − β・D2n+3 (7)
(4段目) X2n+1 = D2n+1 − α・X2n − α・X2n+2 (8)
上記(5)(6)(7)(8)式は、各々(4)(3)(2)(1)式を移項して得られるものである。
【0012】
以上が、Lifting Schemeを用いたウェーブレット変換フィルタ処理についての説明である。
【0013】
図1及び図2のLifting Schemeを別の視点から表現したものが、図3及び図4に示すLifting格子構造である。同図において、□は入力データを、〇は格子点(あるいは格子点データ演算器)を表わし、〇から出ている矢印は格子点データの流れを示す。これらの図はLifting Schemeにおける基本処理(前記(1)〜(8)式の処理)並びに該処理によって得られる新たなデータを1つの格子点に対応させたものである。
【0014】
図3に示す順方向変換のLifting格子構造では、1つの格子点データは前記(1)〜(4)式のいずれかを用いて計算される。
【0015】
図4に示す逆方向変換のLifting格子構造では、1つの格子点データは前記(5)〜(8)式のいずれかにより計算される。
【0016】
【発明が解決しようとする課題】
さて、水平・垂直方向の2次元のウェーブレット変換を行なうには、上記演算を水平方向と垂直方向の2方向に対して行なう必要がある。それ故、その処理するハードウェアも水平方向用と垂直方向用の2つが必要となる。つまり、まったく同じ演算を行なうのに水平方向用と垂直方向用に2つ用意していることになり、ハードウェア規模が大きくなるという問題がある。
【0017】
本発明はかかる問題点に鑑みなされたものであり、二次元情報の水平及び垂直方向にフィルタ処理するためのハードウェア構成を簡単なものとするフィルタ処理装置を提供しようとするものである。
【0018】
【課題を解決するための手段】
この課題を解決するため、本発明のフィルタ処理装置は以下の構成を備える。すなわち、
二次元デジタルデータを二次元フィルタ処理するフィルタ処理装置であって、
フィルタ演算処理用の乗算器及び加算器と、水平及び垂直方向それぞれに対して異なる遅延量の水平遅延手段及び垂直遅延手段とを有する演算ユニットと、
前記水平及び垂直遅延手段の出力と前記演算ユニットの演算内容を、所定サイクル毎に切り替え、各々の演算ユニットの出力データを同じ演算ユニットに少なくとも1度は再入力して処理することを特徴とする。
【0019】
【発明の実施の形態】
以下、添付図面に従って本発明に係る実施形態を詳細に説明する。
【0020】
先ず、実施形態における前提について説明する。
【0021】
図5は、先に説明したLifting格子構造で表現されるウェーブレット変換を複数の演算ユニットを従属接続した構成で処理する場合の構成を示している。この構成のウェーブレット変換処理部を、図6に示すように2組使用して、その間に2×2データ回転部を設けることにより、垂直方向と水平方向の2次元ウェーブレット変換処理を行なう。
【0022】
演算ユニット内部の構成としては、図7と図12に示す2つの構成とする。以下では図7の構成の元になるウェーブレット変換処理の演算内容について簡単に説明する。なお、図7における符号703は乗算係数を入力したデータに乗算する乗算器であり、707及び709は2入力を加算する加算器である。
【0023】
前記図3において、演算途中のデータを保持することにより、毎サイクル2画素ずつ入力するだけで、低域変換係数と高域変換係数各々1つずつを出力することが可能である。
【0024】
今、演算途中のデータとして“D7t、E6t、H5t、L4t”があるものとする。該データは以下に示す式で演算されたものである。
D7t = X7 + α・X6 (9)
E6t = X6 + β・D5 (10)
H5t = D5 + γ・E4 (11)
L4t = E4 + δ・H3 (12)
ここに、“X8、X9”の2つのデータが入力されると、“L4、H5”を出力するために、以下の演算が行なわれる。
D7 = D7t + α・X8 (13)
E6 = E6t + β・D7 (14)
H5 = H5t + γ・E6 (15)
L4 = L4t + δ・H5 (16)
次のサイクルの演算に備えて保持するデータ“D9t、E8t、H7t、L6t”を以下の式から求める。
D9t = X9 + α・X8 (17)
E8t = X8 + β・D7 (18)
H7t = D7 + γ・E6 (19)
L6t = E6 + δ・H5 (20)
上記入力データ“X8、X9”は、初段の演算ユニットの端子701と702から入力し、演算した結果を端子711と712から出力する。この出力は次段の演算ユニットの端子701と702に入力し順次演算処理をおこなっていく。
【0025】
該処理内容をLifting格子構造の図にならって表現したのが図8である。同図における4つのレジスタで上記演算途中のデータを保持する。図7に示す演算ユニットを図5のように従属接続したハードウェアを構成することによって、上記一連の演算を実現することができる。
【0026】
水平方向のウェーブレット変換処理を行なう場合、図7における遅延バッファは、図8のようにレジスタ1段か、あるいはレジスタ数段で構成され、垂直方向のウェーブレット変換を行なう場合には、前記遅延バッファはラインメモリで構成される。
【0027】
よって、2次元のウェーブレット変換処理を行なう図6の構成においては、2×2データ回転部の前後で演算ユニット内の遅延バッファ構成は異なるものとなる。
【0028】
<第1の実施形態>
さて、上記原理を元に、本発明の第1の実施形態を以下に説明する。
【0029】
本第1の実施形態では、図7に示す演算ユニットに、遅延量の異なる2種類のバッファと該バッファを選択するセレクタを設けた図9の構成の演算ユニットを用いる。
【0030】
図9における901と903は、イネーブル制御端子付きのレジスタで、水平方向のウェーブレット変換処理に利用する。905は水平1ラインのデータを格納する容量を持つラインメモリで垂直方向のウェーブレット変換処理に利用する。
【0031】
907は前記レジスタ901の出力とラインメモリ905の出力の一方を選択するセレクタである。該セレクタで前記2つの出力を2サイクルおきに交互に選択することにより、水平方向と垂直方向の変換処理を交互に行なう。
【0032】
セレクタがV端子側を選択している時には垂直方向のウェーブレット変換処理となり、該セレクタがH端子側を選択している時には水平方向のウェーブレット変換処理となる。
【0033】
図9の演算ユニットを用いた2次元ウェーブレット変換処理部全体の構成を図10に示す。同図において、
1001と1002は、垂直2画素のデータを入力する端子、
1005〜1008は、前記図9に示す演算ユニット(但し、乗算係数は異なる)、
1011は、上記演算ユニット1001への入力データを選択するセレクタ、
1013は、1次元方向のウェーブレット変換処理をしたデータを2×2単位で並び替える2×2データ回転部、
1015は、前記4つの演算ユニットのセレクタ並びに、上記セレクタ1011を切り換える制御信号を入力する端子である。
【0034】
本第1の実施形態の構成は、低域9タップ・高域7タップの2次元ウェーブレット変換処理を行なうウェーブレット変換処理装置を示している。
【0035】
端子1001と1002に垂直2画素のデータを水平方向にスキャンしながら、2サイクルおきに入力する。セレクタ1011は、該垂直2画素のデータの入力サイクル時に該データを選択して演算ユニット1005へ送る。他のサイクルでは、2×2データ回転部1013の出力データを選択して同様に演算ユニット1005へ送る。
【0036】
前記4つの演算ユニットは、該ユニット内のセレクタが、端子1015から入力される制御信号によって切り換えられることにより、垂直方向ウェーブレット変換モードあるいは水平方向ウェーブレット変換モードになったりする。
【0037】
セレクタ1011が垂直2サンプルの入力データを選択するサイクルでは、垂直方向ウェーブレット変換モードになり、該セレクタが2×2データ回転部1013からのデータを選択するサイクルでは、水平方向ウェーブレット変換モードとなる。以上で概略説明を終え、動作説明を以下に行なう。
【0038】
既に、数ラインと数画素の処理が済んでおり、演算ユニット内の各ラインメモリとレジスタ内には演算途中のデータが既に格納されているものとし、垂直2サンプルのデータを2サイクル続けて入力するところから説明を開始する。
【0039】
4つの演算ユニット内の各セレクタはV端子側を選択しており、全体として垂直方向ウェーブレット変換モードになっており、このモードで2サイクル動作する。2サイクル動作した結果、垂直方向の低域変換係数と高域変換係数がそれぞれ2つずつ、2×2データ回転部1013に送られる。
【0040】
該2×2データ回転部1013は図16に示すような構成になっており、低域と高域変換係数のペアで入力された2組のデータを、4つのレジスタに取り込み、低域変換係数と高域変換係数に分けてそれぞれ2つずつのデータを2サイクルで出力する。前記4つのレジスタは取り込んだデータを出力し終わるまで、次のデータを取り込むことが無いように不図示のイネーブル端子に制御信号を与えることで制御する。
【0041】
上記4つのレジスタに取り込んだデータの出力タイミングは、前記垂直2サンプルのデータを続けて2サイクル入力した直後の次の2サイクルである。このサイクルでは、4つの演算ユニット内の各セレクタはH端子側に切り替わり、全体として水平方向ウェーブレット変換モードとして動作する。
【0042】
水平方向ウェーブレット変換モード時に活用される各演算ユニット内の2つのレジスタは、不図示のイネーブル信号で制御されて、該変換モード時における演算途中データを取り込み保持する。
【0043】
垂直方向に低域変換された係数を水平方向に処理するサイクルでは、該変換係数の処理途中のデータをレジスタ901から出力し、セレクタ907を経由して加算器709に送る。このサイクルで演算された水平方向の低域変換係数LLと高域変換係数LHは端子1021、1022から出力され、演算途中の結果はレジスタ903に入力され、次のサイクルで該レジスタに取り込まれる。それまでレジスタ903は、垂直方向に高域変換した係数を処理したデータを保持していたが、該データは前記データの取り込み時にレジスタ901にシフトされ該レジスタから新たに出力される。
【0044】
次のサイクルでは、該データを用いて、垂直方向に高域変換された係数を水平方向に処理する。上述した処理と同じように、水平方向の低域変換係数HLと高域変換係数HHは端子1021、1022から出力され、演算途中の結果はレジスタ903に入力され、次のサイクルで該レジスタに取り込まれる。前のサイクルでレジスタ903に取り込んだデータはレジスタ901にシフトされる。この時点で2つのレジスタに保持したデータは次の2サイクル(垂直方向ウェーブレット変換モード)の間、同じレジスタで保持し続ける。
【0045】
以上の処理で水平方向ウェーブレット変換モードを終了し、また垂直方向ウェーブレット変換モードに戻る。上述した4サイクルの処理を繰り返すことで画像全体を2次元ウェーブレット変換処理することができるようになる。
【0046】
上記4サイクルの間に、入力端子1001、1002から垂直2サンプルのデータを2組、すなわち4サンプルの画素データを受け取り処理するわけであるから、処理レートは1サイクル当たり1サンプルとなる。
【0047】
なお、9/7フィルタの2次元ウェーブレット変換の処理レートが1サイクル当たり1サンプルでよい場合、本実施形態は固定係数を乗算する定数乗算器を4個しか使用しないという点で、最適な構成であると言える。
【0048】
上記動作説明は、本発明の最も基本的な構成について理解してもらうためのもので、高速化のためのパイプライン処理については触れていない。実際のハードウェアでは、各演算ユニット間にレジスタを挿入することによってパイプライン化を図り、レジスタ間の演算遅延時間を小さくし、動作周波数を高くするといった高速化が行なわれる。
【0049】
その場合、端子1001と1002から入力したデータを演算処理した結果が演算ユニット1008から出力されるまで3又は4サイクルかかってしまう。そうなると、上記動作説明のように、垂直方向にウェーブレット変換した結果をすぐにセレクタ1011へ入力し、直後に水平方向のウェーブレット変換処理をするといったことができなくなる。
【0050】
すなわち、垂直方向にウェーブレット変換した結果を直ちに水平方向のウェーブレット変換処理しようとしても、変換結果出力直後の前記演算ユニットの変換モードが水平方向ウェーブレット変換モードになっていないといったことが、動作タイミング上でてくる。前記変換モードは2サイクルおきに変わるため、最大2サイクル待てば、水平方向ウェーブレット変換モードに変わり、前記変換出力を水平方向にウェーブレット変換することが出来るようになる。
【0051】
よって、2×2データ回転部におけるレジスタの数が増えることになる。パイプライン処理しない場合、垂直方向の変換処理結果を格納するためのレジスタと、水平方向の変換処理の際に入力データを供給するためのレジスタを共用できたが、上述のパイプライン処理化によりタイミングが合わなくなってくると、該2種類のレジスタを別々に持つ必要がでてくる。
【0052】
しかし、パイプライン処理する/しないに関わらず、次の点は同じである。各演算ユニット単位で見た時、垂直方向の変換処理を2サイクル行なった後は、水平方向の変換処理を2サイクル行なう。セレクタ1011も2サイクル毎に切り替え動作を行なう。
【0053】
以下では、各種変形と応用例について説明する。
【0054】
前記レジスタ901,903にイネーブル端子を設けない場合、すなわち、該レジスタにクロックが入力されると単純に入力データを取り込むだけの動作をする場合には、該レジスタを4つ並べれば上記機能を実現できる。この4つのレジスタの内、変換処理に有効なデータを保持しているのは2つのみで、他の2つは無効なデータである。この無効なデータはセレクタ907で選択されることが無いように該セレクタの切り換えタイミングが制御されるので該無効データは無視することができる。
【0055】
上記実施形態の説明では、2サイクルおきに垂直2サンプルのデータを入力していたが、1サイクルおきに入力しても2次元ウェーブレット変換処理することは可能である。この場合、前記演算ユニット群の垂直方向ウェーブレット変換モードと水平方向ウェーブレット変換モードの切り換えも1サイクル毎に行なう。具体的な制御としては、セレクタ907の切り換えを1サイクル毎に行ない、レジスタ903への演算途中データの取り込みも1サイクルおきに行なう。このように制御の方法が若干異なるだけで、演算処理系の構成は上記実施形態で説明した構成とまったく同じである。
【0056】
これまでの説明では、垂直方向のウェーブレット変換後に水平方向のウェーブレット変換を行なうという処理の順序であったが、水平方向のウェーブレット変換後に垂直方向のウェーブレット変換を行なうこともできる。この場合、端子1001,1002から入力するデータは水平2サンプルのデータを入力し、該入力データを水平方向ウェーブレット変換モードで処理する。水平2サンプルのデータ入力は2サイクルおきでもよいし1サイクルおきでもよいが、同一ラインのデータを単純にスキャンして入力するのではなく、2ラインのデータを交互に入力しながらスキャンしていく。
【0057】
該2ラインは、前述した垂直2サンプルを入力する場合の2サンプルが属する2ラインに対応する。
【0058】
2ラインのデータを交互に入力することで、2×2データ回転部に、該2ラインの水平方向の低域変換係数と高域変換係数が蓄えられる。これを90度回転して垂直2サンプルずつの低域変換係数と高域変換係数に並び替え、前記水平2サンプルのデータを入力しない空きサイクル期間に、セレクタ1011を経由して演算ユニット1005へ入力する。この時、4つの演算ユニット1005〜1008は垂直方向ウェーブレット変換モードとして動作する。
【0059】
以上の動作により、水平方向のウェーブレット変換処理を先に行なった後に垂直方向のウェーブレット変換処理を行なうことができる。このような処理も図10と同じ構成で制御方法を変えるだけで対応できる。
【0060】
ウェーブレット変換した変換係数は逆ウェーブレット変換しなければ元の画像に戻すことが出来ないので、逆ウェーブレット変換を行なう機能も当然必要となる。
【0061】
逆ウェーブレット変換は、図11に示すLifting格子構造に基づき、以下に示す演算で処理する。まず“X3、X4”を出力するために以下の演算を行なう。
E6 = L6t − δ・H7 (21)
D5 = H5t − γ・E6 (22)
X4 = E4t − β・D5 (23)
X3 = D3t − α・X4 (24)
次の演算に残すデータを以下のように演算する。
L8t = L8 − δ・H7 (25)
H7t = H7 − γ・E6 (26)
E6t = E6 − β・D5 (27)
D5t = D5 − α・X4 (28)
上記演算のために受け取る中間データが“L6t、H5t、E4t、D3t”であり、次の演算のために残すデータが“L8t、H7t、E6t、D5t”であるため、2サンプルずつ位置をずらせば繰り返し演算することが可能である。
【0062】
順方向ウェーブレット変換の演算を表わすLifting格子構造である図8と比較すると、乗算係数の順序が逆になっているのと該乗算係数に−の符号がついていることを除けば、図11は図8と同じ構造になっていると言える。
【0063】
よって、本実施形態の構成を一部修正するだけで、逆方向のウェーブレット変換処理も行なうことが出来るようになる。具体的には以下の2つの方法がある。
(1)1つの演算ユニット内に2つの乗算器を用意してそれを切り換える。
(2)演算ユニット内の加算器を加減算器に変更し、順方向変換時には加算器として使用し逆方向変換時には減算器として使用すると共に、逆方向変換時には演算ユニット1008→1007→1006→1005の順に処理データを流すようにデータの流れを変える。これは、セレクタ等を用いて制御することができる。
【0064】
以上が、逆方向ウェーブレット変換処理も可能な構成についての説明である。
【0065】
また、本発明は、図12の構成の演算ユニットに、遅延量の異なる2種類のバッファと該バッファを選択するセレクタを設けた図13の構成の演算ユニットを従属接続してウェーブレット変換処理する場合にも適用可能である。
【0066】
<第2の実施形態>
第2の実施形態では、垂直方向のウェーブレット変換・水平方向のウェーブレット変換処理をそれぞれ1つの演算ユニットで処理し、2×2データ回転部を挟んで該演算ユニットを従属接続することで、2次元のウェーブレット変換処理を行なう構成について示す。
【0067】
第2の実施形態の構成を図14に示す。同図において、1401は垂直方向ウェーブレット変換用の演算ユニット、1403は水平方向ウェーブレット変換用の演算ユニット、1411と1413は、それぞれ上記演算ユニットに入力するデータを選択するセレクタ、1421〜1424は、同じ演算ユニットに処理したデータを再入力するために、該データを保持するレジスタであり、その他の構成要素は、前記第1の実施形態で示した構成:図10における同一番号要素と同じである。
【0068】
これまでに説明した構成では、9/7フィルタの1次元ウェーブレット変換処理をするには、図5に示すように、演算ユニットが4つ必要であった。
【0069】
これを1つの演算ユニットで処理するには、該演算ユニットの出力データを繰り返し入力して処理する必要がある。そのようにデータの流れを制御するのがセレクタ1411と1413である。
【0070】
端子1001、1002から入力された垂直2サンプルのデータはセレクタ1411で選択されて演算ユニット1401に入力される。該演算ユニットでは第1のステップの演算として、乗算係数αを用いてLifting演算を行ない、演算結果を出力する。
【0071】
出力された演算結果はレジスタ1421、1422に保持されて、セレクタ1411に入力され、該セレクタにて選択されて前記演算ユニットに再入力される。該演算ユニットでは第2のステップの演算が行なわれる。
【0072】
該演算ユニットから出力される演算結果は、レジスタ1421,1422で保持して、同様にセレクタ1411経由で該演算ユニットに再入力し、第3のステップ、第4のステップの演算を行なう。弟2、第3、第4のステップでは、それぞれ乗算係数としてβ、γ、δが用いられ、Lifting演算が行なわれる。
【0073】
第4ステップの演算が終了した演算結果は、垂直方向のウェーブレット変換処理をした低域と高域の変換係数である。
【0074】
該変換係数は2×2データ回転部1013に送られる。2組の低域・高域変換係数が該2×2データ回転部に入力されると、低域変換係数2つと高域変換係数2つ、すなわち、水平方向2サンプルのデータ2組に並び替えられてから出力される。
【0075】
該係数データは、セレクタ1413で選択されて、演算ユニット1403に入力される。前記演算ユニット1401と同様、該演算ユニット1403も第1〜4のステップの演算処理を行なう。該演算ユニットから出力するデータをレジスタ1423、1424で保持し、セレクタ1413を経由して、前記演算ユニットに再入力する。セレクタ1411、1413はいずれも、新たなデータを入力したサイクルの次の3サイクルは次段の演算ユニットで処理して出力したデータを再入力する。
【0076】
前記2×2データ回転部から先行して出力する低域変換係数を上記第1〜4のステップで演算し終えた後に、続いて2×2データ回転部より出力する高域変換係数をセレクタ1413経由で演算ユニット1403に入力し、該高域変換係数の処理を行なう。
【0077】
各変換係数を、演算ユニット1403において、第1〜4ステップの演算処理をした結果は、上記垂直方向の低域と高域の変換係数をさらに水平方向の低域と高域の変換係数に分けたもの、すなわち、2次元ウェーブレット変換処理した4種類の変換係数である。該変換係数は端子1021、1022から2回に分けて外部へ出力される。
【0078】
演算ユニット1401には遅延バッファとして、図9に示した演算ユニット内のラインメモリ4つ分の容量が必要になる。このラインメモリは該容量の1つの大きなラインメモリであってもよいし、図9におけるラインメモリと同じ容量のラインメモリを4つ持ち、それを演算ステップに対応して切り換えてもよい。
【0079】
演算ユニット1403は、2種類のデータに対し第1〜4ステップの演算を行なうため、8種類の演算途中データが必要である。よって、該演算ユニットにおける遅延バッファには該演算途中データを格納できる8段のレジスタがあればよい。
【0080】
前記第1の実施形態と同様、図12の構成の演算ユニットに、上記遅延バッファを持たせることで、該構成の演算ユニットを用いて本実施形態と同じ処理をすることが可能である。
【0081】
<第3の実施形態>
第3の実施形態は、前記第1の実施形態と第2の実施形態を組み合わせて、さらに演算ユニットの数を減らした構成について示す。
【0082】
前記第1の実施形態は、垂直方向のウェーブレット変換処理と水平方向のウェーブレット変換処理を共通の演算ユニット群で交互に処理するものであった。第2の実施形態は、1次元方向のウェーブレット変換処理における複数の演算ステップを単一の演算ユニットで処理するものであった。
【0083】
本実施形態では、水平と垂直の両方向のウェーブレット変換処理における複数の演算ステップを全て1つの演算ユニットで行なうものである。本実施形態の構成を図15に示す。
【0084】
同図において、1501は2次元ウェーブレット変換のすべての演算を行なう演算ユニット、1503は2入力が3系統ありその内の1系統を選択するセレクタであり、その他は前記図14における同一番号の構成要素と同じである。
【0085】
前記第2の実施形態と同様、1組の入力データまたは1組の変換係数を4つの連続サイクルで前記第1〜4ステップの演算処理を行なう。2組の入力データと該データをウェーブレット変換した2組の変換係数、すなわち、4組のデータが処理の最小単位となるので、16サイクル周期で変換処理を行なう。
【0086】
16サイクルの前半8サイクルで2組の入力データを垂直ウェーブレット変換処理する。この時、演算ユニット1501は図14における演算ユニット1401と同等の処理を行なう。垂直ウェーブレット変換された2組の変換係数は、2×2データ回転部1013に取り込まれ、垂直方向の低域変換係数2つと高域変換係数2つ、すなわち、水平方向2サンプルのデータ2組に並び替えられて出力される。
【0087】
16サイクルの後半の8サイクルでは、前記2×2データ回転部から出力される2組の変換係数をレジスタ1421、1422で保持し、セレクタ1503経由で演算ユニットに再入力して水平ウェーブレット変換処理する。この時、演算ユニット1501は図14における演算ユニット1403と同等の処理を行なう。
【0088】
2次元ウェーブレット変換処理して求められた変換係数は、端子1021、1022から外部に出力される。
【0089】
本実施形態における演算ユニット1501は、水平と垂直の両方のウェーブレット変換処理を行なうため、前記第2の実施形態における2つの演算ユニット1401と1403がそれぞれ有する遅延バッファの両方を合わせ持つ。
【0090】
また、本実施形態においても、前記図12の構成の演算ユニットを拡張して使用することができる。
【0091】
以上説明したように本第1乃至第3の実施形態によれば、ウェーブレット変換等の水平及び垂直方向に対するフィルタ処理が、ごく単純な構成により実現出来るようになり、ハードウェア規模もより小さなものとすることができる。
【0092】
なお、上記実施形態では、ウェーブレット変換(及び逆ウェーブレット変換)についてのみ説明したが、本発明は、画像に代表される二次元的な情報について水平及び垂直方向にフィルタ処理する場合に適用できるものであるので、その用途によって限定されるものではない。
【0093】
また、上記実施形態で説明した回路構成は、例えばパーソナルコンピュータが有するバススロット(例えばPCIバススロット)に装着するエンコーダ及びデコーダカードとしても適用できる。
【0094】
【発明の効果】
以上説明したように本発明によれば、二次元情報の水平及び垂直方向にフィルタ処理するためのハードウェア構成を簡単なものとすることができる。従って、JPEG2000等におけるウェーブレット変換にこれを適用した場合には、その変換にかかる装置を小型化でき、十分な処理速度を得ることができる。
【図面の簡単な説明】
【図1】順変換のLifting Schemeを示す図である。
【図2】逆変換のLifting Schemeを示す図である。
【図3】DWT(順方向ウェーブレット変換)のLifting格子構造を示す図である。
【図4】IDWT(逆方向ウェーブレット変換)のLifting格子構造を示す図である。
【図5】1次元ウェーブレット変換処理部の構成を示す図である。
【図6】2次元ウェーブレット変換処理部の構成を示す図である。
【図7】演算ユニットの内部構成を示す図である。
【図8】演算結果を再利用するDWT演算のLifting格子構造を示す図である。
【図9】第1の実施形態で用いる演算ユニットの内部構成を示す図である。
【図10】第1の実施形態の構成を示す図である。
【図11】演算結果を再利用するIDWT演算のLifting格子構造を示す図である。
【図12】格子点データ演算ユニットの構成を示す図である。
【図13】図12の演算ユニットを第1の実施形態で用いるために修正した構成を示す図である。
【図14】第2の実施形態の構成を示す図である。
【図15】第3の実施形態の構成を示す図である。
【図16】2×2データ回転部の構成を示す図である。
Claims (5)
- 二次元デジタルデータを二次元フィルタ処理するフィルタ処理装置であって、
フィルタ演算処理用の乗算器及び加算器と、水平及び垂直方向それぞれに対して異なる遅延量の水平遅延手段及び垂直遅延手段とを有する演算ユニットと、
前記水平及び垂直遅延手段の出力と前記演算ユニットの演算内容を、所定サイクル毎に切り替え、各々の演算ユニットの出力データを同じ演算ユニットに少なくとも1度は再入力して処理することを特徴とするフィルタ処理装置。 - 前記フィルタ処理がウェーブレット変換であることを特徴とする請求項第1項記載のフィルタ処理装置。
- 複数の演算ユニットを従属に接続し、最終段の演算ユニットの出力をフィルタ処理後のデータとして出力すると共に、出力されたデータを2×2単位で回転し、先頭の演算ユニットに再入力することを特徴とする請求項第2項に記載のフィルタ処理装置。
- 前記演算ユニット内の乗算器は複数の乗算係数の切り替えが可能で、処理データを巡回するごとに該乗算係数を切り替えることを特徴とする請求項第1項又は第2項に記載のフィルタ処理装置。
- 前記水平及び垂直遅延手段の出力と前記演算器の演算内容の切り替えは、垂直遅延手段で保持する内容が、すべて新しい内容に置き換わる周期よりも短いことを特徴とする請求項第1項記載のフィルタ処理装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001151524A JP4700838B2 (ja) | 2001-05-21 | 2001-05-21 | フィルタ処理装置 |
US10/092,573 US6904177B2 (en) | 2001-03-13 | 2002-03-08 | Filter processing apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001151524A JP4700838B2 (ja) | 2001-05-21 | 2001-05-21 | フィルタ処理装置 |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2002344969A JP2002344969A (ja) | 2002-11-29 |
JP2002344969A5 JP2002344969A5 (ja) | 2008-06-26 |
JP4700838B2 true JP4700838B2 (ja) | 2011-06-15 |
Family
ID=18996353
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001151524A Expired - Fee Related JP4700838B2 (ja) | 2001-03-13 | 2001-05-21 | フィルタ処理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4700838B2 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003283839A (ja) | 2002-03-19 | 2003-10-03 | Sanyo Electric Co Ltd | 画像変換方法および装置 |
CN1317897C (zh) * | 2004-09-28 | 2007-05-23 | 华中科技大学 | 一种并行二维离散小波变换电路 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04217408A (ja) * | 1990-02-27 | 1992-08-07 | Mitsubishi Materials Corp | スローアウェイチップ |
JPH04266512A (ja) * | 1991-02-22 | 1992-09-22 | Nissan Motor Co Ltd | 制御型サスペンション |
JPH09146926A (ja) * | 1995-11-22 | 1997-06-06 | Toshiba Corp | 離散ウェーブレット変換の並列処理方法および装置 |
JPH10283342A (ja) * | 1997-04-02 | 1998-10-23 | Matsushita Electric Ind Co Ltd | ウェーブレット変換装置 |
JP2000253259A (ja) * | 1999-02-24 | 2000-09-14 | Canon Inc | デジタル信号の変換装置及びその方法 |
JP2000341693A (ja) * | 1999-04-15 | 2000-12-08 | Canon Inc | デジタル信号変換方法及び装置 |
JP2001285643A (ja) * | 2000-03-30 | 2001-10-12 | Canon Inc | 画像変換装置及び方法 |
-
2001
- 2001-05-21 JP JP2001151524A patent/JP4700838B2/ja not_active Expired - Fee Related
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04217408A (ja) * | 1990-02-27 | 1992-08-07 | Mitsubishi Materials Corp | スローアウェイチップ |
JPH04266512A (ja) * | 1991-02-22 | 1992-09-22 | Nissan Motor Co Ltd | 制御型サスペンション |
JPH09146926A (ja) * | 1995-11-22 | 1997-06-06 | Toshiba Corp | 離散ウェーブレット変換の並列処理方法および装置 |
JPH10283342A (ja) * | 1997-04-02 | 1998-10-23 | Matsushita Electric Ind Co Ltd | ウェーブレット変換装置 |
JP2000253259A (ja) * | 1999-02-24 | 2000-09-14 | Canon Inc | デジタル信号の変換装置及びその方法 |
JP2000341693A (ja) * | 1999-04-15 | 2000-12-08 | Canon Inc | デジタル信号変換方法及び装置 |
JP2001285643A (ja) * | 2000-03-30 | 2001-10-12 | Canon Inc | 画像変換装置及び方法 |
Also Published As
Publication number | Publication date |
---|---|
JP2002344969A (ja) | 2002-11-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2931389B2 (ja) | 単一のマルチプライヤ/アキュムレータと単一のランダムアクセスメモリを用いてdct/idct演算を繰り返す集積回路装置 | |
US6327602B1 (en) | Inverse discrete cosine transformer in an MPEG decoder | |
US6223193B1 (en) | Macroblock variance estimator for MPEG-2 video encoder | |
JP2002500455A (ja) | 高速idct/ダウンサンプリング複合演算方法および装置 | |
US6904177B2 (en) | Filter processing apparatus | |
JP2000341689A (ja) | ウェーブレット逆変換装置及び方法、並びにウェーブレット復号装置及び方法 | |
JP4700838B2 (ja) | フィルタ処理装置 | |
US6938105B2 (en) | Data apparatus and method having DMA circuitry to efficiently transfer multivalued bit-plane data | |
JPH07143488A (ja) | 画像データ復号化方法および装置 | |
JP4266512B2 (ja) | データ処理装置 | |
JP4109151B2 (ja) | 画像処理装置 | |
EP1523170A1 (en) | Image conversion device, image conversion method, and recording medium | |
US8467619B2 (en) | Image compressing apparatus, image compressing method, image decompressing apparatus, and storage medium | |
JP2001285643A (ja) | 画像変換装置及び方法 | |
JP4217408B2 (ja) | フィルタ処理装置 | |
JP4444480B2 (ja) | フィルタ処理装置 | |
Masoudnia et al. | Design and performance of a pixel-level pipelined-parallel architecture for high speed wavelet-based image compression | |
CN114554225B (zh) | 图像编码方法、装置、设备及计算机可读介质 | |
KR100854726B1 (ko) | 역 이산 웨이블릿 변환을 이용한 이미지 복원 방법 및 장치 | |
KR100395614B1 (ko) | 2차원 이산 웨이브렛 변환 장치 | |
JP2802158B2 (ja) | 逆直交変換方法および逆直交変換回路 | |
Raghunath et al. | High speed area efficient multi-resolution 2-D 9/7 filter DWT processor | |
JP2002152045A (ja) | 画像データ用フィルタ処理装置及びその制御方法 | |
JP5451171B2 (ja) | データ変換処理装置およびデータ変換処理方法 | |
WO2005008595A1 (en) | Implementation of the jpeg2000 compression algorithm in hardware |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080512 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20080512 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20110228 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20110307 |
|
LAPS | Cancellation because of no payment of annual fees |