まず、実施形態の説明に先立ち、JPEG2000で提案されている可逆5−3タップフィルタを用いたDWT変換(以下、可逆5−3DWT変換という)における、ウェ−ブレット係数(以下DWT係数)が出力されるタイミングを図2〜6を用いて詳細に説明する。図2は可逆5−3DWT変換をリフティング構造を用いて実現した際にDWT係数が出力されるタイミングを説明するための図である。
図2(a)において符号a〜eは水平方向に並ぶ入力画素データを示している。また図2(a)においてb'は画素データa,b,cを用いて生成した分解レベル1の高周波成分のDWT係数、d'は画素データc,d,eを用いて生成した分解レベル1の高周波成分のDWT係数である。c"は更にb',d',cを用いて生成した低周波成分のDWT係数である。なお、各DWT係数は、次式(1)〜(3)に示す通りである。
b' = b-(a+c)/2 …(1)
d' = d-(c+e)/2 …(2)
c" = c+(b’+d’+2)/4 …(3)
式(1),(2)に示すようにb',d'はいずれも高周波成分のDWT係数であるため、使用される画素データが異なるだけで数式の型は同一である。
図2(b)は図2(a)に対し、水平方向に画素データfが新たに入力された様子を示した図である。図2(b)に示すように画素データfが入力されても新たにDWT変換を実行するには入力画素が足りないため、画素データfが入力されるタイミングでは新たなDWT係数を出力することが出来ない。
一方、図2(c)のように図2(b)に対し更に画素データgが入力されるとDWT変換を実行することが可能となり、高周波成分のDWT係数f'と低周波成分のDWT係数e"を出力することができる。
このように水平方向にDWT変換を実行するタイミングは、画素データの2画素入力につき1回となる。なお、分解レベル2へ階層的にDWT変換を実行する場合には分解レベル1の低周波成分のDWT係数を用いる必要がある。前述の通り分解レベル1の低周波成分のDWT係数を出力されるタイミングが各画素データ2画素入力につき1回となるため、分解レベル2のDWT係数が出力されるタイミングは4画素入力に1回となる。以上の関係から分解レベルNのDWT係数が出力されるタイミングは、次式(4)に示されるXを用いて、X画素に1回となる。
X=2N …(4)
同様の関係は垂直方向にも適用されるため、垂直方向のDWT係数が出力されるタイミングは式(4)に従い、画素データXライン入力につき1回となる。
入力画像を分解レベル2まで垂直・水平DWT変換した場合の各サブバンドの関係を図6に示す。図6においてLは低周波領域、Hは高周波領域を示している。例えば、1HHは分解レベル1の水平方向、垂直方向ともに高周波領域のサブバンドを示している。図6に示すように分解レベル1の各サブバンドのサイズは水平・垂直方向、入力画像データの半分となる。つまり、各サブバンドの係数の個数は、オリジナルの画像の画素数の1/4となる。また、分解レベル2の各サブバンドは、分解レベル1の各サブバンドの水平、垂直方向の半分となる。
以上の説明を踏まえたうえで画像データをDWT変換し、符号化する一連の処理タイミングを図3、図4を用いて説明する。
図3は、本発明者が考察した画像符号化装置の構成例を示すブロック図である。図3に示すように、画像符号化装置はウェ−ブレット変換部300、量子化・符号化部303を有する。ウェーブレット変換部30は、その内部に分解レベル1のDWT変換を行うLev1-DWT変換部301、分解レベル2のDWT変換を行うLev2-DWT変換部302を含んでいる。なお、符号化方式の一例としてJPEG2000を用いて説明するが特に符号化方式については問わない。
また、図4は図3の画像符号化装置にラスタ順に画像データを入力し、分解レベル2までDWT変換した場合の分解レベル1、2の各サブバンドのDWT係数の変換タイミングおよび変換後のDWT係数が量子化・符号化されるタイミングを示す図である。
図4の見方について説明する。図4において、横軸のt0〜t14の各区間は、1ラインの画素データが入力される期間を示している。なお、t0期間から画像データの入力が開始されるものとする。
「画素データ」に示される矩形のバーは、その期間で画素データが入力されていることを示している。図4においては全ての期間にバーがあるため、全期間において1ライン分の画素データが入力されていることを示している。
一方、「DWT変換」の各分解レベルのサブバンドのバーは、各期間でDWT変換が実行され、各サブバンドのデータが量子化・符号化部303に出力されたかどうかを示している。例えば、t0期間では、どの分解レベルのサブバンドにおいてもバーが無い為、DWT変換が実行されていないことを示す。また、t2期間ではLev1-LH、Lev1-HL、Lev1-HHのバーが存在しているため、分解レベル1DWTが実行されレベル1のサブバンドLH、HH、LHの係数が出力されていることを示す。
「量子化・符号化」のバーは各期間でDWT変換出力されたDWT係数をどのタイミングで量子化・符号化をしているかを示している。例えば、t0期間ではどの分解レベルのサブバンドにおいてもバーが無い為、全サブバンドの係数を量子化・符号化していないことを示す。また、t2期間ではLev1-LH、Lev1-HL、Lev1-HHのバーが存在しているため、分解レベル1のサブバンドHL,LH,HHが量子化・符号化されることを示す。
図示の如く、この画像符号化装置においてはDWT変換のバーと量子化・符号化のバーが同一期間に存在している。これはDWT変換で出力されたDWT係数が同じライン入力期間で即時に量子化・符号化されていることを示す。また、バーの長さは量子化・符号化を実行している期間を示している。
分解レベル1の各サブバンドのDWT係数(Lev1−LH,HL,HH)は、図6で示したように画素データが1ライン入力される期間で0.5ラインしか出力されない。しかしながら、量子化・符号化部に入力される係数も図2を用いて説明したとおり、入力2画素につき一個しかないため、図4に示した通りDWT係数を1ライン入力期間かけて量子化・符号化している。
次に、図4の各区間で実行される符号化処理を図3を参照して説明する。t0〜t1期間では、2ライン分の画素データがLev1-DWT変換部301に入力される。しかしながら、この時点では、まだ可逆5−3DWT変換を実行するに足るライン数分のデータが入力されていない。そのため、Lev1-DWT変換部301は、2ラインの入力画素データをLev1-DWT変換部301内のラインバッファに保持するに留め、この期間でのDWT変換は実行しない。
t2期間において、Lev1-DWT変換部301はt0,t1期間でラインバッファに保持した2ライン分の画素データおよび、入力した3ライン目の画素データを用いてDWT変換を実行する。この結果、分解レベル1のサブバンドLL、LH、HH、LHの係数データが生成される。なお、5タップのフィルタ処理を実行するのに足りない画素データはミラーリングして生成する。生成されたDWT係数のうち、分解レベル1のサブバンドLLのDWT係数は、分解レベル2のDWT変換に用いられるため、Lev2-DWT変換部302に送信される。その他のサブバンド、すなわち分解レベル1のサブバンドLH、HH、LHの係数データは、後段の量子化・符号化部303に出力される。
なお、t2期間ではまだ分解レベル1のサブバンドLLのDWT係数が1ライン分しか出力されておらず、分解レベル2のDWT変換を実行できない。そのためLev2-DWT変換部302はDWT変換の実行は行わず内部のラインバッファに係数データを保持するに留める。また、分解レベル1の各サブバンドにおける係数の数は元の画素データの半分となる。従って、分解レベル1のサブバンドLH、HH、LHの3つを合わせて、元の画素データ基準で1.5ライン(0.5×3)分のDWT係数が出力される。量子化・符号化部303はウェーブレット変換部300から送られた合計1.5ライン分のDWT係数を、量子化パラメータを用いて量子化する。そして、符号化ではサブバンドごとに、EBCOT(Embedded Block Coding with Optimized Truncation)などのエントロピー符号化を施して、符号化データとして出力される。
t3期間ではt0〜t1期間同様、可逆5−3DWT変換を掛けるに足るライン数分のデータが入力されていない。そのため、入力画素データはLev1-DWT変換部301内のラインバッファに画素データは保持され、この期間ではDWT係数データは出力されない。
t4期間ではt2,t3期間に入力されラインバッファに保持された2ライン分の画素データ及び、3ライン目の画素データを用いてDWT変換が行われ、分解レベル1のサブバンドLL、LH、HH、LHの係数データが算出される。但し、この時も分解レベル1のサブバンドLLのDWT係数データはt2期間でラインバッファに保持された分を合わせて2ライン分しか出力されていないため、分解レベル2のDWT変換は実行できない。以降、分解レベル1のDWT変換は前述の数式4に示した通り、2ラインに1回(すなわちt6、t8、t10、t12、t14・・・期間で)実行される。量子化・符号化部303はウェーブレット変換部300から送られた合計1.5ライン分のDWT係数を、量子化パラメータを用いて量子化し、サブバンドごとに、EBCOTなどのエントロピー符号化を施して、符号化データとして出力する。
t5期間では分解レベル1、2のDWT変換は実行されず、入力データはLev1-DWT変換部301内のラインバッファに画素データは保持される。
t6期間ではLev1-DWT変換部301にて分解レベル1のDWT変換が実行される。また、その際に出力される分解レベル1のサブバンドLLのDWT係数データおよび、t2、t4期間でLev2-DWT変換部302内のラインバッファに保持された分解レベル1のサブバンドLLの2ライン分のDWT係数データを用いて、Lev2-DWT変換部302が分解レベルレベル2のサブバンドLL、LH、HH、LHの係数データの算出を行う。
なお、図4に示すように分解レベル2の係数の数は分解レベル1の係数の半分となるため、元の画素データ基準で分解レベル2のサブバンドLL、LH、HH、LHの4サブバンド合わせて1ライン(0.25×4)分のDWT係数が後段の量子化・符号化部303に出力される。これと、分解レベル1のサブバンドLH、HH、LHの3つのサブバンド分の1.5ラインを合わせて元の画素データ基準で2.5ライン分(1+1.5)のDWT係数が、この期間で出力される。
なお、分解レベル2のDWT変換は前述の数式4に示した通り、4ラインに1回(すなわちt10、t14・・・期間)実行される。量子化・符号化部303は、ウェーブレット変換部300から送られた合計2.5ライン分のDWT係数を、量子化パラメータを用いて量子化し、サブバンドごとに、EBCOTなどのエントロピー符号化を施して、符号化データとして出力する。以降、画像データの最終ラインまで同一の処理が繰り返される。
上述の説明からわかるように、分解レベル2までDWT変換を実行した場合、入力画素が1ライン入力される期間に最大2.5ライン分のDWT係数が出力される期間(図4のt6,t10,t14)が存在する。そのため、DWT変換を実行するタイミングで即時、量子化、符号化を実行しようした場合、画素データを1ライン入力する期間で2.5ライン分のDWT係数を処理できる性能が必要となり、量子化・符号化部の回路規模が大きくなってしまうのは理解できよう。以下、かかる点を踏まえて、本発明に係る実施形態を説明する。
[第1の実施形態]
図1は、第1の実施形態における本発明の実施形態に係る画像符号化装置の構成例を示すブロック図である。説明を単純化するため、本実施形態においても、離散ウェーブレット変換を2回行うものとして説明する。
第1の実施形態における画像符号化装置は、図示の如く、ウェーブレット変換部300、サブバンドラインバッファ103、量子化・符号化部104を有する。符号化対象の画像データの画素データは、ラスタースキャン順に画素データがウェーブレット変換部300に供給されるものとする。ウェーブレット変換部300は、分解レベル1の離散ウェーブレット変換(以下、実施形態においてもDWT変換という)を行うLev1-DWT変換部301、分解レベル2のDWT変換を行うLev2-DWT変換部302で構成される。なお、本実施形態では符号化方式の一例としてJPEG2000を用いて説明するが、特に符号化方式の種類は問わない。また、ウェーブレット変換部300、Lev1-DWT変換部301、Lev2-DWT変換部302は先に説明した図2の符号化装置と同じ構成のものを用いるものの、DWT変換で得られた係数データの出力先が異なる。また、量子化・符号化部104は画素データが1ライン入力される期間で1ライン分のDWT係数を量子化・符号化することができる性能を持っているものとする。
図5は、図1においてラスタ順に画像データを分解レベル2までDWT変換した場合の分解レベル1、レベル2の各サブバンドのDWT係数データに変換されるタイミングおよび変換されたDWT係数データが量子化・符号化されるタイミングを説明するためのタイミング図である。図5の見方については図4と同様であるため、説明を省く。
以下、図5の各区間で実行される符号化処理について、図1を参照して説明する。
t0〜t1期間では2ライン分の画素データがLev1-DWT変換部301に入力される。しかしながら、この時点ではまだ可逆5−3DWT変換を行うに足るライン数分のデータが入力されていない。そのため、Lev1-DWT変換部301は、は2ラインの入力画素データをLev1-DWT変換部301内のラインバッファに保持するに留め、この期間でのDWT変換は実行しない。
t2期間において、Lev1-DWT変換部301はt0,t1期間でラインバッファに保持した2ライン分の画素データおよび、3ライン目の入力画素データを用いてDWT変換を実行し、分解レベル1のサブバンドLL、LH、HH、LHの係数データを出力する。その際、分解レベル1のサブバンドLLのDWT係数データはレベル2のDWT変換に用いられるため、Lev2-DWT変換部302に供給される。また、分解レベル1のサブバンドLH、HLのDWT係数データは、サブバンドラインバッファ103の介在無しに、量子化・符号化部104にダイレクトに出力されるが、レベル1のサブバンドHHのDWT係数データはサブバンドラインバッファ103に送信され一時的に保持される。
なお、t2期間ではまだ分解レベル1のサブバンドLLのDWT係数データが1ライン分しか出力されておらず、分解レベル2のDWT変換を実行できない。そのため、Lev2-DWT変換部302はDWT変換の実行は行わず、内部のラインバッファに係数データを保持するに留める。量子化・符号化部104はウェーブレット変換部300から送られた分解レベル1のサブバンドLH,HLの合計1.0ライン分のDWT係数データを、1サイクル毎に交互に量子化パラメータを用いて量子化する。そして、符号化では、サブバンドごとに、EBCOT(Embedded Block Coding with Optimized Truncation)などのエントロピー符号化を施して、符号化データとして出力される。
t3期間ではt0〜t1期間同様、可逆5−3DWT変換を掛けるに足るライン数分のデータが入力されていない。そのため、入力画素データはLev1-DWT変換部301内のラインバッファに画素データは保持され、この期間ではDWT係数データは出力されない。しかし、量子化・符号化部104は、t2期間でサブバンドラインバッファ103に保持された分解レベル1のサブバンドHHのDWT係数データを読み出して量子化パラメータを用いて量子化し、エントロピー符号化を施して、符号化データとして出力する。この期間では分解レベル1のサブバンドHHのDWT係数データしか符号化されないため、画素データ基準で0.5ライン分のDWT係数データしか量子化・符号化されない。従って、画素データが1ライン入力される期間の半分の期間で量子化・符号化を実行することができる。
t4期間にて、Lev1-DWT変換部301は、t2,t3期間に入力されラインバッファに保持された画素データ、及び今回入力した画素データを用いてDWT変換を行い、分解レベル1のサブバンドLL、LH、HH、LHの係数データを生成する。その際、分解レベル1のサブバンドLLのDWT係数データは分解レベル2のDWT変換に用いられるため、Lev2-DWT変換部302に送信される。但し、この時もレベル1のサブバンドLLのDWT係数がt2期間でラインバッファに保持された分を合わせて2ライン分しか出力されていないため、レベル2のDWT変換を実行できない。また、t2期間同様、分解レベル1のサブバンドLH、HLのDWT係数データは量子化・符号化部104に出力されるが、分解レベル1のサブバンドHHのDWT係数データはサブバンドラインバッファ103に送信され一旦、保持される(1サイクル分遅延される)。量子化・符号化部104はウェーブレット変換部300から送られた分解レベル1のサブバンドLH,HLの合計1.0ライン分のDWT係数データを、1サイクル毎に交互に量子化パラメータを用いて量子化し、エントロピー符号化を施して、符号化データとして出力する。
t5期間では分解レベル1、2のDWT変換も実行されず、入力データはLev1-DWT変換部301内のラインバッファに画素データは保持される。しかし、t3期間と同様に、量子化・符号化部104は、サブバンドラインバッファ103に保持された分解レベル1のサブバンドHHのDWT係数データ(t4期間にて保存)を読み出し、量子化パラメータを用いて量子化し、エントロピー符号化を施して、符号化データとして出力する。
t6期間ではLev1-DWT変換部301で分解レベル1のDWT変換が実行される。また、その際、出力される分解レベル1のサブバンドLLのDWT係数データおよびt2、t4期間でLev2-DWT変換部302内のラインバッファに保持されたレベル1のサブバンドLLのDWT係数を用いて、Lev2-DWT変換部302がDWT変換を実行することで、分解レベル2のサブバンドLL、LH、HH、LHの係数データを算出し、出力する。
なお、図4に示すように分解レベル2の係数データの数は分解レベル1の係数デーの半分となるため、元の画素データ基準で分解レベル2のサブバンドLL、LH、HH、LHの4つを合わせて1ライン(0.25×4)分のDWT係数データがサブバンドラインバッファ103に送信され一旦、保持される。また、分解レベル1のDWT変換で出力されるサブバンドLH、HH、LHの3つ合わせた1.5ライン分を含めると、元の画素データ基準で2.5ライン分(1+1.5)のDWT係数データがこの期間で出力される。
量子化・符号化部104はウェーブレット変換部300から送られた分解レベル1のサブバンドLH、HLの合計1.0ライン分のDWT係数データを、1サイクル毎に交互に量子化パラメータを用いて量子化し、エントロピー符号化を施して、符号化データとして出力する。
t7期間では分解レベル1、2のDWT変換が実行されず、入力データはLev1-DWT変換部301内のラインバッファに画素データは保持される。しかし、ここでは量子化・符号化部104は、t6期間でサブバンドラインバッファ103に保持された分解レベル1のサブバンドHHのDWT係数データ、及び、t6期間でサブバンドラインバッファ103に保持された分解レベル2のサブバンドLH、HLのDWT係数データを量子化・符号化する。量子化・符号化部104はまず画素データ基準で0.5ラインに相当する分解レベル1のサブバンドHHのDWT係数データを量子化・符号化する。続いて量子化・符号化部104は、画素データ基準で0.5ラインに相当する分解レベル2のサブバンドLHのDWT係数データを量子化・符号化する。最後に、量子化・符号化部104は、画素データ基準で0.5ラインに相当する分解レベルレベル2のサブバンドHLのDWT係数を量子化・符号化する。その結果、画素データが1ライン入力される期間いっぱいを使って1.0ライン分のDWT係数を量子化・符号化が実行される。なお、この期間で分解レベル1のサブバンドHHが量子化・符号化処理されれば量子化・符号化処理するDWT係数の処理順は特に問わない。例えば分解レベル1のサブバンドHH、分解レベル2のサブバンドLH、分解レベル1のサブバンドHLの順に処理する代わりに、分解レベル2のサブバンドLH、分解レベル2のサブバンドHL、分解レベル1のサブバンドHHの順に処理するなど処理順を入れ替えても良い。また、分解レベル2のサブバンドLH、分解レベル2のサブバンドHLではなく、分解レベル2のサブバンドHH、分解レベル2のサブバンドLLをこの期間で量子化・符号化処理しても良い。この場合、この期間で量子化・符号化されなかった分解レベル2のサブバンドLH、分解レベル2のサブバンドHLは後に示すt9期間で量子化・符号化処理すれば良い。
t8期間では次の分解レベル2のDWT変換を実行するために必要な分解レベル1のサブバンドLLのDWT係数が足りない。それ故、分解レベル1の1DWT変換のみが実行される。また、t2、t4、t6期間同様、分解レベル1のサブバンドLH、HLのDWT係数データは量子化・符号化部104に出力されるが、分解レベル1のサブバンドHHのDWT係数データはサブバンドラインバッファ103に送信され一旦、保持される。量子化・符号化部104はウェーブレット変換部300から送られた分解レベル1のサブバンドLH,HLの合計1.0ライン分のDWT係数データを、1サイクル毎に交互に量子化パラメータを用いて量子化し、エントロピー符号化を施して、符号化データとして出力する。
t9期間では分解レベル1、2のDWT変換も実行されず、入力データはLev1-DWT変換部301内のラインバッファに画素データは保持される。しかし、このt9期間では、量子化・符号化部104が、t8期間にてサブバンドラインバッファ103に保持された分解レベル1のサブバンドHHのDWT係数データと、t6期間にてサブバンドラインバッファ103に保持された分解レベル2のサブバンドHH,LLのDWT係数データを量子化・符号化する。具体的には、量子化・符号化部104はまず画素データ基準で0.5ラインに相当する分解レベル1のサブバンドHHのDWT係数データを量子化・符号化する。量子化・符号化部104は、続いて画素データ基準で0.5ラインに相当する分解レベル2のサブバンドHHのDWT係数データを量子化・符号化する。最後に量子化・符号化部104は、画素データ基準で0.5ラインに相当する分解レベル2のサブバンドLLのDWT係数データを量子化・符号化する。その結果、画素データが1ライン入力される期間いっぱいを使って1.0ライン分のDWT係数を量子化・符号化が実行される。
以降、画像データの最終ラインまで上記の処理が繰り返される。
以上、説明したような構成および処理タイミングで量子化・符号化を実行することで量子化・符号化部104は、符号化対象の画像データから1ライン分の画素データを入力する期間に、同数のDWT係数データの処理する能力を有するだけでよくなる。つまり、量子化・符号化部104が入力する変換係数データの総数は、最大でも符号化対象の画像データの水平方向の画素数に設定できる。図3で示した構成の場合、量子化・符号化部が、符号化対象の画像データの1ライン分の画素データを入力する期間で、2.5ライン分のDWT係数データを処理する能力を必要としていたのと比較して、回路規模の増大を抑制できることが理解できよう。
なお、本実施形態では可逆5−3タップフィルタを用いたが、JPEG2000で提案されている非可逆9−7タップフィルタなど数式4の関係が成り立つフィルタであればどのフィルタを用いても同様の構成、処理タイミングで実行することが可能である。
また、本実施形態ではウェーブレット係数を分解レベル2まで実行した場合を例に挙げて説明したが、分解レベル3以降のもっと高レベルまでウェーブレット係数を実施した際にも同様の思想での実行が可能である。
例えば分解レベル3の場合であれば、サブバンドラインバッファ103に分解レベル3のサブバンドを一時記憶するバッファを新たに設け、保持したDWT係数を図7のタイミング図のように低レベルのサブバンドから優先して読み出すことで実現可能である。
ここで、例えば分解レベルNまでのサブバンドに分解し符号化する場合について一般化するなら、第i(i≧2)のウェーブレット変換部は、第i−1のウェーブレット変換部が生成した分解レベルi−1のサブバンドLLの変換係数データを入力し、分解レベルiのサブバンドLL,HL,LH,HHの変換係数データを出力するようにする。そして、最初に位置する第1のウェーブレット変換部は、生成した分解レベル1のサブバンドHL,LH,HHの3つのうちの2つをバッファメモリの介在無しに量子化・符号化部に供給すると共に、残りの1つをバッファメモリに供給する。そして、第1のウェーブレット変換部を除く他のウェーブレット変換部は、生成したそれぞれの分解レベルのサブバンドHL,LH,HHの3つをバッファメモリに供給する。そして、量子化・符号化部は、第1のウェーブレット変換部、又は、バッファメモリから、分解レベルの低い方を優先しつつ、符号化対象の画像データの水平方向の画素数と同数の変換係数データを入力しては、量子化、符号化を行えば良い。
[第2の実施形態]
続いて、本発明の第2の実施形態を説明する。図8は、第2の実施形態における画像符号化装置のブロック構成図、図9はその符号化処理に係るタイミングチャートを示している。本第2の実施形態の装置構成は、上記の第1の実施形態ほぼ同じであるが、サブバンドラインバッファ103に保持する対象が、分解レベル1のサブバンドLHのDWT変換係数データである点が異なる。以下、図8に示す本第2の実施形態における画像符号化装置の処理を、図9のタイミングチャートに従って説明する。
t0〜t1期間では符号化対象の画像データから合わせて2ライン分の画素データがLev1-DWT変換部301に供給される。ただし。この時点ではまだ可逆5−3DWT変換を行うに足るライン数分のデータが入力されていない。そのため、Lev1-DWT変換部301では2ラインの入力画素データをLev1-DWT変換部301内のラインバッファに保持するに留め、この期間でのDWT変換は実行しない。
t2期間において、Lev1-DWT変換部301はt0,t1期間でラインバッファに保持した符号化対象画像の2ライン分の画素データと、3ライン目の画素データを用いてDWT変換を実行し、分解レベル1のサブバンドLL、LH、HH、LHの係数データを出力する。その際、分解レベル1のサブバンドLLのDWT係数データは、分解レベル2のDWT変換データを生成するために用いられるため、Lev2-DWT変換部302に供給される。また、分解レベル1のサブバンドHH、HLのDWT係数データは量子化・符号化部104に出力されるが、分解レベル1のサブバンドLHのDWT係数データはサブバンドラインバッファ103に供給され一旦、保持される(遅延される)。
なお、t2期間では、まだ分解レベル1のサブバンドLLのDWT係数データが1ライン分しか出力されておらず、分解レベル2のDWT変換を実行できない。そのため、Lev2-DWT変換部302は、分解レベル1のサブバンドLLについては、DWT変換の実行は行わず内部のラインバッファに係数を保持するに留める。量子化・符号化部104はウェーブレット変換部300から送られた分解レベル1のHH、HLのサブバンド合計1.0ライン分のDWT係数データを、1サイクル毎に交互に量子化パラメータを用いて量子化される。そして符号化では、サブバンドごとに、EBCOT(Embedded Block Coding with Optimized Truncation)などのエントロピー符号化を施して、符号化データとして出力される。
t3期間では、t0〜t1期間同様、可逆5−3DWT変換を掛けるに足るライン数分のデータが入力されていない。そのため、入力した画素データはLev1-DWT変換部301内のラインバッファに画素データは保持され、この期間ではDWT係数は出力されない。しかし、量子化・符号化部104は、t2期間にてサブバンドラインバッファ103に保持された分解レベル1のサブバンドLHのDWT係数データを読み出して量子化パラメータを用いて量子化し、エントロピー符号化を施して、符号化データとして出力する。この期間では分解レベル1のサブバンドLHのDWT係数データしか符号化されないため、画素データ基準で0.5ライン分のDWT係数データしか量子化・符号化されない。従って、画素データが1ライン入力される期間の半分の期間で量子化・符号化を実行することができる。
t4期間にて、Lev1-DWT変換部301は、t2,t3期間に入力されラインバッファに保持された画素データ及び、新規に入力した画素データを用いてDWT変換を実行し、分解レベル1のサブバンドLL、LH、HH、LHの係数データを生成する。その際、分解レベル1のサブバンドLLのDWT係数データは、分解レベル2のDWT変換データを生成するために用いられるため、Lev2-DWT変換部302に供給される。但し、この時、分解レベル1のサブバンドLLのDWT係数データと、t2期間でラインバッファに保持された分を合わせても2ライン分しない。それ故、Lev2-DWT変換部302はDWT変換を実行しない。また、t2期間と同様、分解レベル1のサブバンドHH、HLのDWT係数データは量子化・符号化部104に出力されるが、分解レベル1のサブバンドLHのDWT係数データはサブバンドラインバッファ103に送信され一旦、保持される。量子化・符号化部104はウェーブレット変換部300から送られた分解レベル1のサブバンドHH、HLの合計1.0ライン分のDWT係数データを、1サイクル毎に交互に量子化パラメータを用いて量子化し、エントロピー符号化を施して、符号化データとして出力する。
t5期間では分解レベル1,2のDWT変換は実行されず、入力データはLev1-DWT変換部301内のラインバッファに画素データは保持される。しかし、t3期間と同様、量子化・符号化部104は、t4期間にてサブバンドラインバッファ103に保持された分解レベル1のサブバンドLHのDWT係数データを読み出し、量子化パラメータを用いて量子化し、エントロピー符号化を施して、符号化データとして出力する。
t6期間ではLev1-DWT変換部301はDWT変換を実行し、分解レベル1のサブバンドLL、LH、HH、LHの係数データを生成し、出力する。また、その際、出力される分解レベル1のサブバンドLLのDWT係数データ、およびt2、t4期間にてLev2-DWT変換部302内のラインバッファに保持された分解レベル1のサブバンドLLのDWT係数データを用いて、Lev2-DWT変換部302はDWT変換を実行する。この結果、分解レベル2のサブバンドLL、LH、HH、LHの係数データが生成される。
なお、図4に示すように分解レベル2の係数データの数は分解レベル1の係数データの半分となるため、元の画素データ基準で分解レベル2のサブバンドLL、LH、HH、LHの4つを合わせて1ライン(0.25×4)分のDWT係数データがサブバンドラインバッファ103に送信され一旦、保持されることになる。分解レベル1のサブバンドLH、HH、LHの3つの1.5ラインの係数データとなるので、このt6期間で生成さる係数データの個数は、元の画素データ基準で2.5ライン分(1+1.5)となる。
量子化・符号化部104はウェーブレット変換部300から送られた分解レベル1のサブバンドHL,HHの合計1.0ライン分のDWT係数データを、1サイクル毎に交互に量子化パラメータを用いて量子化し、エントロピー符号化を施して、符号化データとして出力する。
t7期間では、分解レベル1、2のDWT変換は実行されず、入力データはLev1-DWT変換部301内のラインバッファに画素データは保持される。しかし、このt7期間では、量子化・符号化部104が、t6期間でサブバンドラインバッファ103に保持された分解レベル1のサブバンドLHのDWT係数データ、及び、t6期間にてサブバンドラインバッファ103に保持された分解レベル2のサブバンドLH、HLのDWT係数データを量子化・符号化する。量子化・符号化部104は、まず画素データ基準で0.5ラインに相当する分解レベル1のLHのDWT係数データを量子化・符号化する。量子化・符号化部104は、続いて画素データ基準で0.25ラインに相当する分解レベル2のサブバンドLHのDWT係数データを量子化・符号化する。最後に量子化・符号化部104は、画素データ基準で0.25ラインに相当する分解レベル2のサブバンドHLのDWT係数データを量子化・符号化する。その結果、画素データが1ライン入力される期間いっぱいを使って、1.0ライン分のDWT係数データが量子化・符号化されることになる。
t8期間では、次の分解レベル2のDWT変換を実行するために必要な分解レベル1のサブバンドLLのDWT係数データが足りない。このため、分解レベル1のDWT変換のみが実行される。また、t2、t4、t6期間と同様、分解レベル1のサブバンドHH、HLのDWT係数データは量子化・符号化部104に出力されるが、分解レベル1のサブバンドLHのDWT係数データはサブバンドラインバッファ103に送信され一旦、保持される。量子化・符号化部104はウェーブレット変換部300から送られた分解レベル1のサブバンドHH、HLの合計1.0ライン分のDWT係数データを、1サイクル毎に交互に量子化パラメータを用いて量子化し、エントロピー符号化を施して、符号化データとして出力する。
t9期間では分解レベル1,2のDWT変換は実行されず、入力データはLev1-DWT変換部301内のラインバッファに画素データは保持される。しかし、このt9期間にて、量子化・符号化部104は、t8期間でサブバンドラインバッファ103に保持された分解レベル1のサブバンドLHのDWT係数データ、及び、t6期間でサブバンドラインバッファ103に保持された分解レベル2のサブバンドHH、LLのDWT係数データを量子化・符号化する。具体的には、量子化・符号化部104はまず画素データ基準で0.5ラインに相当する分解レベル1のサブバンドLHのDWT係数データを量子化・符号化する。量子化・符号化部104は、続いて、画素データ基準で0.25ライン分に相当する分解レベル2のサブバンドHHのDWT係数データを量子化・符号化する。最後に量子化・符号化部104は、画素データ基準で0.25ライン分に相当する分解レベル2のサブバンドLLのDWT係数データを量子化・符号化する。その結果、画素データが1ライン入力される期間いっぱいを使って1.0ライン分のDWT係数データの量子化・符号化が実行されることになる。
以降、画像データの最終ラインまで同一の処理が繰り返される。
ここでサブバンドラインバッファ103に保持される係数を、分解レベル1のサブバンドLHの係数データにした理由を図10を用いて説明する。
図10は水平方向の解像度(画素数)が9の画像を、分解レベル2までDWT変換した際の各サブバンドの水平方向のDWT係数の数を示した図である。
図10に示すように水平方向の解像度が奇数である場合、分解レベル1の各サブバンドの水平方向の係数の数が低周波成分のサブバンド(分解レベル1のLH=5)に属するか高周波成分に属するか(分解レベル1のHL,HH=4)によって異なる。そのため、量子化・符号化部104に同一期間に入力するレベル1のDWT係数データがサブバンドLH,HHあるいはLH,HLであった場合、1ライン期間に量子化・符号化する係数の数が異なりタイミング調整が必要となる。そこで量子化・符号化部104に同一期間に入力する分解レベル1のDWT係数をサブバンドHL,HHとすることで1ライン期間に量子化・符号化する係数の数を同一にすることが出来るためである。