(57)【要約】【課題】  ウェーブレット変換後の量子化、符号化処理の回路規模を小さくすることを可能にする。【解決手段】  符号化対象の画像データを入力し、入力した画像データをウェーブレット変換し、複数のサブバンドの変換係数データを生成する変換部と、変換部で得られた各サブバンドの係数データを量子化、符号化する符号化部と、変換部で得られた複数のサブバンドのうち、予め設定されたサブバンドを一時的に記憶するバッファ部とを有する。そして、変換部は、生成したサブバンドHL,LH,HHのうちの１つと、サブバンドLLの係数データを、符号化部に、前記バッファ部を介在無しに供給し、サブバンドLLを含む残りの２つのサブバンドをバッファ部に供給する。【選択図】  図１
2018007214.tif 000002
【特許請求の範囲】
【請求項１】
画像データを符号化する画像符号化装置であって、
符号化対象の画像データを入力し、入力した画像データをウェーブレット変換し、複数のサブバンドの変換係数データを生成する変換手段と、
該変換手段で得られた各サブバンドの係数データを量子化、符号化する符号化手段と、
前記変換手段で得られた変換係数データを一時的に保持するバッファ手段とを有し、
前記変換手段で生成された前記複数のサブバンドのうち、予め設定されたサブバンドの変換係数データは、前記バッファ手段を介さずに前記符号化手段に供給し、
前記複数のサブバンドのうちの他のサブバンドの変換係数データは、前記バッファ手段に供給する
ことを特徴とする画像符号化装置。
【請求項２】
前記変換手段で生成された複数のサブバンドのうち、分解レベルが最小で高周波成分を含むサブバンドの変換係数データを、前記バッファ手段を介さずに前記符号化手段に供給することを特徴とする請求項１に記載の画像符号化装置。
【請求項３】
前記変換手段で生成されたサブバンドLL,HL,LH,HHのうち、サブバンドHHの係数データは、前記バッファ手段を介さずに前記符号化手段に供給し、サブバンドLLの係数データは、前記バッファ手段に供給することを特徴とする請求項１または２に記載の画像符号化装置。
【請求項４】
サブバンドHL,HHの係数データは、前記バッファ手段を介さずに前記符号化手段に供給し、サブバンドLH,LLの係数データは、前記バッファ手段に供給することを特徴とする請求項３に記載の画像符号化装置。
【請求項５】
前記符号化手段は、前記バッファ手段から読み出す変換係数のデータの総数が、符号化対象の画像の水平方向の画素の数となるように、係数データの読み出しを行い、量子化及び符号化を行うことを特徴とする請求項１乃至４のいずれか１項に記載の画像符号化装置。
【請求項６】
前記符号化手段は、前記バッファ手段から、ウェーブレット変換の分解レベルの小さいサブバンドの係数データから優先して読み出し、量子化、符号化を行う
ことを特徴とする請求項１乃至５のいずれか１項に記載の画像符号化装置。
【請求項７】
前記変換手段は、複数のウェーブレット変換手段を有し、
ここで、第ｉ（ｉ≧２）のウェーブレット変換手段は、第ｉ−１のウェーブレット変換手段が生成した分解レベルｉ−１のサブバンドLLの変換係数データを入力し、分解レベルｉのサブバンドLL,HL,LH,HHの変換係数データを出力する、
前記複数のウェーブレット変換手段における最初である第１のウェーブレット変換手段は、生成した分解レベル１のサブバンドHL,LH,HHの３つのうちの２つを前記バッファ手段を介在無しに前記符号化手段に供給すると共に、残りの１つを前記バッファ手段に供給し、
前記第１のウェーブレット変換手段を除く他のウェーブレット変換手段は、生成したそれぞれの分解レベルのサブバンドHL,LH,HHの３つを前記バッファ手段に供給し、
前記符号化手段は、
前記変換手段、又は、前記バッファ手段から、分解レベルの低い方を優先しつつ、符号化対象の画像データの水平方向の画素数と同数の変換係数データを入力しては、量子化、符号化を行う
ことを特徴とする請求項１乃至６のいずれか１項に記載の画像符号化装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像の符号化、特に、画像に対して周波数変換を施し、生成された係数を符号化する技術に関するものである。
【背景技術】
【０００２】
昨今、デジタルカメラやデジタルカムコーダー等のデジタル撮像装置の発展に伴い、様々な画像データの圧縮符号化方式が検討されている。その中の圧縮符号化方式の一つとしてJPEG(Joint Photographic Experts Group)2000が提案されている。JPEG2000の特徴の一つとしてJPEGで用いられる離散コサイン変換(DCT：Discrete Cosine Transform)の代わりにウェーブレット変換（以下ＤＷＴ変換）を用いている点が挙げられる。ＤＷＴ変換を用いることでサイズの大きな画像であっても画像を複数のブロックに分割せず周波数変換を掛けることが可能となる。その結果、JPEG2000では画像を複数のブロックに分割した際にブロック境界で発生し得る画質劣化が無くすことが出来る。
【０００３】
ＤＷＴ変換を行うためには、垂直方向の画像の全てをＤＷＴ用のフィルタを用いてフィルタリングした後、今度は水平方向にフィルタリングする必要がある。それ故、特許文献１のように、フィルタリングを行う際には大規模なメモリ（バッファ）が必要となる。
【０００４】
かかる点に対して、特許文献２は、メモリ容量を削減する提案を行っている。しかしながら、特許文献２によると、ＤＷＴ変換を行って得られた複数の周波数領域（サブバンド）が出力されるタイミングがほぼ同時となってしまうという問題が発生する。つまり、後続する量子化部、符号化部の回路規模が大きくなってしまう。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００３−２７４１８５
【特許文献２】特開２００１−２８５６４３
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明は上記課題に鑑みなされたものであり、離散ウェーブレット変換後の量子化、符号化処理を平準化し、回路規模を小さくする技術を提供しようとするものである。
【課題を解決するための手段】
【０００７】
この課題を解決するため、例えば本発明の画像処理装置は以下の構成を備える。すなわち、
画像データを符号化する画像符号化装置であって、
符号化対象の画像データを入力し、入力した画像データをウェーブレット変換し、複数のサブバンドの変換係数データを生成する変換手段と、
該変換手段で得られた各サブバンドの係数データを量子化、符号化する符号化手段と、
前記変換手段で得られた変換係数データを一時的に保持するバッファ手段とを有し、
前記変換手段で生成された前記複数のサブバンドのうち、予め設定されたサブバンドの変換係数データは、前記バッファ手段を介さずに前記符号化手段に供給し、
前記複数のサブバンドのうちの他のサブバンドの変換係数データは、前記バッファ手段に供給することを特徴とする。
【発明の効果】
【０００８】
本発明によれば、ウェーブレット変換後の量子化、符号化処理の回路規模を小さくすることが可能になる。
【図面の簡単な説明】
【０００９】
【図１】第１の実施形態に係る画像符号化装置の構成例を示すブロック図。
【図２】可逆５−３ＤＷＴ変換を実施するタイミングを説明するための図。
【図３】課題を説明するための画像符号化装置の構成を示すブロック図。
【図４】図３の画像符号化装置の処理タイミングを示す図。
【図５】第１の実施形態に係る画像符号化装置の処理タイミングを示す図。
【図６】ウェーブレット変換によって発生する各サブバンドの関係を示す図。
【図７】第１実施形態に係る画像符号化装置にて分解レベル３までウェーブレット変換を実行した際の処理タイミングを示す図。
【図８】第２の実施形態に係る画像符号化装置の構成例を示すブロック図。
【図９】第２の実施形態に係る画像符号化装置の処理タイミングを示す図。
【図１０】水平方向の画素数が奇数の時にウェーブレット変換によって発生する各サブバンドの水平方向のＤＷＴ係数の数の関係を説明するための図。
【発明を実施するための形態】
【００１０】
まず、実施形態の説明に先立ち、JPEG2000で提案されている可逆５−３タップフィルタを用いたＤＷＴ変換（以下、可逆５−３ＤＷＴ変換という）における、ウェ−ブレット係数（以下ＤＷＴ係数）が出力されるタイミングを図２〜６を用いて詳細に説明する。図２は可逆５−３ＤＷＴ変換をリフティング構造を用いて実現した際にＤＷＴ係数が出力されるタイミングを説明するための図である。
【００１１】
図２(a)において符号a〜eは水平方向に並ぶ入力画素データを示している。また図２(a)においてb'は画素データa,b,cを用いて生成した分解レベル１の高周波成分のＤＷＴ係数、d'は画素データc,d,eを用いて生成した分解レベル１の高周波成分のＤＷＴ係数である。c"は更にb',d',cを用いて生成した低周波成分のＤＷＴ係数である。なお、各ＤＷＴ係数は、次式(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'はいずれも高周波成分のＤＷＴ係数であるため、使用される画素データが異なるだけで数式の型は同一である。
【００１２】
図２(b)は図２(a)に対し、水平方向に画素データfが新たに入力された様子を示した図である。図２(b)に示すように画素データfが入力されても新たにＤＷＴ変換を実行するには入力画素が足りないため、画素データfが入力されるタイミングでは新たなＤＷＴ係数を出力することが出来ない。
【００１３】
一方、図２(c)のように図２(b)に対し更に画素データgが入力されるとＤＷＴ変換を実行することが可能となり、高周波成分のＤＷＴ係数f'と低周波成分のＤＷＴ係数e"を出力することができる。
【００１４】
このように水平方向にＤＷＴ変換を実行するタイミングは、画素データの２画素入力につき１回となる。なお、分解レベル２へ階層的にＤＷＴ変換を実行する場合には分解レベル１の低周波成分のＤＷＴ係数を用いる必要がある。前述の通り分解レベル１の低周波成分のＤＷＴ係数を出力されるタイミングが各画素データ２画素入力につき１回となるため、分解レベル２のＤＷＴ係数が出力されるタイミングは４画素入力に１回となる。以上の関係から分解レベルＮのＤＷＴ係数が出力されるタイミングは、次式(4)に示されるＸを用いて、Ｘ画素に１回となる。
Ｘ＝２N      …(4)
【００１５】
同様の関係は垂直方向にも適用されるため、垂直方向のＤＷＴ係数が出力されるタイミングは式(4)に従い、画素データＸライン入力につき１回となる。
【００１６】
入力画像を分解レベル２まで垂直・水平ＤＷＴ変換した場合の各サブバンドの関係を図６に示す。図６においてLは低周波領域、Hは高周波領域を示している。例えば、1HHは分解レベル１の水平方向、垂直方向ともに高周波領域のサブバンドを示している。図６に示すように分解レベル１の各サブバンドのサイズは水平・垂直方向、入力画像データの半分となる。つまり、各サブバンドの係数の個数は、オリジナルの画像の画素数の１／４となる。また、分解レベル2の各サブバンドは、分解レベル１の各サブバンドの水平、垂直方向の半分となる。
【００１７】
以上の説明を踏まえたうえで画像データをＤＷＴ変換し、符号化する一連の処理タイミングを図３、図４を用いて説明する。
【００１８】
図３は、本発明者が考察した画像符号化装置の構成例を示すブロック図である。図３に示すように、画像符号化装置はウェ−ブレット変換部300、量子化・符号化部303を有する。ウェーブレット変換部30は、その内部に分解レベル１のDWT変換を行うLev1-DWT変換部301、分解レベル２のDWT変換を行うLev2-DWT変換部302を含んでいる。なお、符号化方式の一例としてJPEG2000を用いて説明するが特に符号化方式については問わない。
【００１９】
また、図４は図３の画像符号化装置にラスタ順に画像データを入力し、分解レベル２までＤＷＴ変換した場合の分解レベル１、２の各サブバンドのＤＷＴ係数の変換タイミングおよび変換後のＤＷＴ係数が量子化・符号化されるタイミングを示す図である。
【００２０】
図４の見方について説明する。図４において、横軸のt0〜t14の各区間は、１ラインの画素データが入力される期間を示している。なお、t0期間から画像データの入力が開始されるものとする。
【００２１】
「画素データ」に示される矩形のバーは、その期間で画素データが入力されていることを示している。図４においては全ての期間にバーがあるため、全期間において１ライン分の画素データが入力されていることを示している。
【００２２】
一方、「ＤＷＴ変換」の各分解レベルのサブバンドのバーは、各期間でＤＷＴ変換が実行され、各サブバンドのデータが量子化・符号化部303に出力されたかどうかを示している。例えば、t0期間では、どの分解レベルのサブバンドにおいてもバーが無い為、ＤＷＴ変換が実行されていないことを示す。また、t2期間ではLev1-LH、Lev1-HL、Lev1-HHのバーが存在しているため、分解レベル１ＤＷＴが実行されレベル１のサブバンドLH、HH、LHの係数が出力されていることを示す。
【００２３】
「量子化・符号化」のバーは各期間でＤＷＴ変換出力されたＤＷＴ係数をどのタイミングで量子化・符号化をしているかを示している。例えば、t0期間ではどの分解レベルのサブバンドにおいてもバーが無い為、全サブバンドの係数を量子化・符号化していないことを示す。また、t2期間ではLev1-LH、Lev1-HL、Lev1-HHのバーが存在しているため、分解レベル１のサブバンドHL,LH,HHが量子化・符号化されることを示す。
【００２４】
図示の如く、この画像符号化装置においてはＤＷＴ変換のバーと量子化・符号化のバーが同一期間に存在している。これはＤＷＴ変換で出力されたＤＷＴ係数が同じライン入力期間で即時に量子化・符号化されていることを示す。また、バーの長さは量子化・符号化を実行している期間を示している。
【００２５】
分解レベル１の各サブバンドのＤＷＴ係数（Lev1−LH,HL,HH）は、図６で示したように画素データが１ライン入力される期間で0.5ラインしか出力されない。しかしながら、量子化・符号化部に入力される係数も図２を用いて説明したとおり、入力２画素につき一個しかないため、図４に示した通りＤＷＴ係数を１ライン入力期間かけて量子化・符号化している。
【００２６】
次に、図４の各区間で実行される符号化処理を図３を参照して説明する。t0〜t1期間では、２ライン分の画素データがLev1-DWT変換部301に入力される。しかしながら、この時点では、まだ可逆５−３ＤＷＴ変換を実行するに足るライン数分のデータが入力されていない。そのため、Lev1-DWT変換部301は、２ラインの入力画素データをLev1-DWT変換部301内のラインバッファに保持するに留め、この期間でのＤＷＴ変換は実行しない。
【００２７】
t2期間において、Lev1-DWT変換部301はt0,t1期間でラインバッファに保持した２ライン分の画素データおよび、入力した３ライン目の画素データを用いてＤＷＴ変換を実行する。この結果、分解レベル１のサブバンドLL、LH、HH、LHの係数データが生成される。なお、５タップのフィルタ処理を実行するのに足りない画素データはミラーリングして生成する。生成されたＤＷＴ係数のうち、分解レベル１のサブバンドLLのＤＷＴ係数は、分解レベル２のＤＷＴ変換に用いられるため、Lev2-DWT変換部302に送信される。その他のサブバンド、すなわち分解レベル１のサブバンドLH、HH、LHの係数データは、後段の量子化・符号化部303に出力される。
【００２８】
なお、t2期間ではまだ分解レベル１のサブバンドLLのＤＷＴ係数が１ライン分しか出力されておらず、分解レベル２のＤＷＴ変換を実行できない。そのためLev2-DWT変換部302はＤＷＴ変換の実行は行わず内部のラインバッファに係数データを保持するに留める。また、分解レベル１の各サブバンドにおける係数の数は元の画素データの半分となる。従って、分解レベル１のサブバンドLH、HH、LHの３つを合わせて、元の画素データ基準で1.5ライン（0.5×３）分のＤＷＴ係数が出力される。量子化・符号化部303はウェーブレット変換部300から送られた合計1.5ライン分のＤＷＴ係数を、量子化パラメータを用いて量子化する。そして、符号化ではサブバンドごとに、EBCOT(Embedded Block Coding with Optimized Truncation)などのエントロピー符号化を施して、符号化データとして出力される。
【００２９】
t3期間ではt0〜t1期間同様、可逆５−３ＤＷＴ変換を掛けるに足るライン数分のデータが入力されていない。そのため、入力画素データはLev1-DWT変換部301内のラインバッファに画素データは保持され、この期間ではＤＷＴ係数データは出力されない。
【００３０】
t4期間ではt2,t3期間に入力されラインバッファに保持された２ライン分の画素データ及び、３ライン目の画素データを用いてＤＷＴ変換が行われ、分解レベル１のサブバンドLL、LH、HH、LHの係数データが算出される。但し、この時も分解レベル１のサブバンドLLのＤＷＴ係数データはt2期間でラインバッファに保持された分を合わせて２ライン分しか出力されていないため、分解レベル２のＤＷＴ変換は実行できない。以降、分解レベル１のＤＷＴ変換は前述の数式４に示した通り、２ラインに１回（すなわちt6、t8、t10、t12、t14・・・期間で）実行される。量子化・符号化部303はウェーブレット変換部300から送られた合計1.5ライン分のＤＷＴ係数を、量子化パラメータを用いて量子化し、サブバンドごとに、EBCOTなどのエントロピー符号化を施して、符号化データとして出力する。
【００３１】
t5期間では分解レベル１、２のＤＷＴ変換は実行されず、入力データはLev1-DWT変換部301内のラインバッファに画素データは保持される。
【００３２】
t6期間ではLev1-DWT変換部301にて分解レベル１のＤＷＴ変換が実行される。また、その際に出力される分解レベル１のサブバンドLLのＤＷＴ係数データおよび、t2、t4期間でLev2-DWT変換部302内のラインバッファに保持された分解レベル１のサブバンドLLの２ライン分のＤＷＴ係数データを用いて、Lev2-DWT変換部302が分解レベルレベル２のサブバンドLL、LH、HH、LHの係数データの算出を行う。
【００３３】
なお、図４に示すように分解レベル２の係数の数は分解レベル１の係数の半分となるため、元の画素データ基準で分解レベル２のサブバンドLL、LH、HH、LHの４サブバンド合わせて１ライン（0.25×4）分のＤＷＴ係数が後段の量子化・符号化部303に出力される。これと、分解レベル１のサブバンドLH、HH、LHの３つのサブバンド分の1.5ラインを合わせて元の画素データ基準で2.5ライン分（1+1.5）のＤＷＴ係数が、この期間で出力される。
【００３４】
なお、分解レベル２のＤＷＴ変換は前述の数式４に示した通り、４ラインに１回（すなわちt10、t14・・・期間）実行される。量子化・符号化部303は、ウェーブレット変換部300から送られた合計2.5ライン分のＤＷＴ係数を、量子化パラメータを用いて量子化し、サブバンドごとに、EBCOTなどのエントロピー符号化を施して、符号化データとして出力する。以降、画像データの最終ラインまで同一の処理が繰り返される。
【００３５】
上述の説明からわかるように、分解レベル２までＤＷＴ変換を実行した場合、入力画素が１ライン入力される期間に最大２．５ライン分のＤＷＴ係数が出力される期間（図４のt6,t10,t14）が存在する。そのため、ＤＷＴ変換を実行するタイミングで即時、量子化、符号化を実行しようした場合、画素データを１ライン入力する期間で２．５ライン分のＤＷＴ係数を処理できる性能が必要となり、量子化・符号化部の回路規模が大きくなってしまうのは理解できよう。以下、かかる点を踏まえて、本発明に係る実施形態を説明する。
【００３６】
［第１の実施形態］
図１は、第１の実施形態における本発明の実施形態に係る画像符号化装置の構成例を示すブロック図である。説明を単純化するため、本実施形態においても、離散ウェーブレット変換を２回行うものとして説明する。
【００３７】
第１の実施形態における画像符号化装置は、図示の如く、ウェーブレット変換部300、サブバンドラインバッファ103、量子化・符号化部104を有する。符号化対象の画像データの画素データは、ラスタースキャン順に画素データがウェーブレット変換部300に供給されるものとする。ウェーブレット変換部300は、分解レベル１の離散ウェーブレット変換（以下、実施形態においてもＤＷＴ変換という）を行うLev1-DWT変換部301、分解レベル２のＤＷＴ変換を行うLev2-DWT変換部302で構成される。なお、本実施形態では符号化方式の一例としてJPEG2000を用いて説明するが、特に符号化方式の種類は問わない。また、ウェーブレット変換部300、Lev1-DWT変換部301、Lev2-DWT変換部302は先に説明した図２の符号化装置と同じ構成のものを用いるものの、ＤＷＴ変換で得られた係数データの出力先が異なる。また、量子化・符号化部104は画素データが１ライン入力される期間で１ライン分のＤＷＴ係数を量子化・符号化することができる性能を持っているものとする。
【００３８】
図５は、図１においてラスタ順に画像データを分解レベル２までＤＷＴ変換した場合の分解レベル１、レベル２の各サブバンドのＤＷＴ係数データに変換されるタイミングおよび変換されたＤＷＴ係数データが量子化・符号化されるタイミングを説明するためのタイミング図である。図５の見方については図４と同様であるため、説明を省く。
【００３９】
以下、図５の各区間で実行される符号化処理について、図１を参照して説明する。
【００４０】
t0〜t1期間では２ライン分の画素データがLev1-DWT変換部301に入力される。しかしながら、この時点ではまだ可逆５−３ＤＷＴ変換を行うに足るライン数分のデータが入力されていない。そのため、Lev1-DWT変換部301は、は２ラインの入力画素データをLev1-DWT変換部301内のラインバッファに保持するに留め、この期間でのＤＷＴ変換は実行しない。
【００４１】
t2期間において、Lev1-DWT変換部301はt0,t1期間でラインバッファに保持した2ライン分の画素データおよび、３ライン目の入力画素データを用いてＤＷＴ変換を実行し、分解レベル１のサブバンドLL、LH、HH、LHの係数データを出力する。その際、分解レベル１のサブバンドLLのＤＷＴ係数データはレベル２のＤＷＴ変換に用いられるため、Lev2-DWT変換部302に供給される。また、分解レベル１のサブバンドLH、HLのＤＷＴ係数データは、サブバンドラインバッファ103の介在無しに、量子化・符号化部104にダイレクトに出力されるが、レベル１のサブバンドHHのＤＷＴ係数データはサブバンドラインバッファ103に送信され一時的に保持される。
【００４２】
なお、t2期間ではまだ分解レベル１のサブバンドLLのＤＷＴ係数データが１ライン分しか出力されておらず、分解レベル２のＤＷＴ変換を実行できない。そのため、Lev2-DWT変換部302はＤＷＴ変換の実行は行わず、内部のラインバッファに係数データを保持するに留める。量子化・符号化部104はウェーブレット変換部300から送られた分解レベル１のサブバンドLH，HLの合計1.0ライン分のＤＷＴ係数データを、１サイクル毎に交互に量子化パラメータを用いて量子化する。そして、符号化では、サブバンドごとに、EBCOT(Embedded Block Coding with Optimized Truncation)などのエントロピー符号化を施して、符号化データとして出力される。
【００４３】
t3期間ではt0〜t1期間同様、可逆５−３ＤＷＴ変換を掛けるに足るライン数分のデータが入力されていない。そのため、入力画素データはLev1-DWT変換部301内のラインバッファに画素データは保持され、この期間ではＤＷＴ係数データは出力されない。しかし、量子化・符号化部104は、t2期間でサブバンドラインバッファ103に保持された分解レベル１のサブバンドHHのＤＷＴ係数データを読み出して量子化パラメータを用いて量子化し、エントロピー符号化を施して、符号化データとして出力する。この期間では分解レベル１のサブバンドHHのＤＷＴ係数データしか符号化されないため、画素データ基準で0.5ライン分のＤＷＴ係数データしか量子化・符号化されない。従って、画素データが１ライン入力される期間の半分の期間で量子化・符号化を実行することができる。
【００４４】
t4期間にて、Lev1-DWT変換部301は、t2,t3期間に入力されラインバッファに保持された画素データ、及び今回入力した画素データを用いてＤＷＴ変換を行い、分解レベル１のサブバンドLL、LH、HH、LHの係数データを生成する。その際、分解レベル１のサブバンドLLのＤＷＴ係数データは分解レベル２のＤＷＴ変換に用いられるため、Lev2-DWT変換部302に送信される。但し、この時もレベル１のサブバンドLLのＤＷＴ係数がt2期間でラインバッファに保持された分を合わせて２ライン分しか出力されていないため、レベル2のＤＷＴ変換を実行できない。また、t2期間同様、分解レベル１のサブバンドLH、HＬのＤＷＴ係数データは量子化・符号化部104に出力されるが、分解レベル１のサブバンドHHのＤＷＴ係数データはサブバンドラインバッファ103に送信され一旦、保持される（１サイクル分遅延される）。量子化・符号化部104はウェーブレット変換部300から送られた分解レベル１のサブバンドLH,HLの合計1.0ライン分のＤＷＴ係数データを、１サイクル毎に交互に量子化パラメータを用いて量子化し、エントロピー符号化を施して、符号化データとして出力する。
【００４５】
t5期間では分解レベル１、２のＤＷＴ変換も実行されず、入力データはLev1-DWT変換部301内のラインバッファに画素データは保持される。しかし、t3期間と同様に、量子化・符号化部104は、サブバンドラインバッファ103に保持された分解レベル１のサブバンドHHのＤＷＴ係数データ（t4期間にて保存）を読み出し、量子化パラメータを用いて量子化し、エントロピー符号化を施して、符号化データとして出力する。
【００４６】
t6期間ではLev1-DWT変換部301で分解レベル１のＤＷＴ変換が実行される。また、その際、出力される分解レベル１のサブバンドLLのＤＷＴ係数データおよびt2、t4期間でLev2-DWT変換部302内のラインバッファに保持されたレベル１のサブバンドLLのＤＷＴ係数を用いて、Lev2-DWT変換部302がＤＷＴ変換を実行することで、分解レベル２のサブバンドLL、LH、HH、LHの係数データを算出し、出力する。
【００４７】
なお、図４に示すように分解レベル２の係数データの数は分解レベル１の係数デーの半分となるため、元の画素データ基準で分解レベル２のサブバンドLL、LH、HH、LHの４つを合わせて１ライン（0.25×4）分のＤＷＴ係数データがサブバンドラインバッファ103に送信され一旦、保持される。また、分解レベル１のＤＷＴ変換で出力されるサブバンドLH、HH、LHの３つ合わせた1.5ライン分を含めると、元の画素データ基準で2.5ライン分（1+1.5）のＤＷＴ係数データがこの期間で出力される。
【００４８】
量子化・符号化部104はウェーブレット変換部300から送られた分解レベル１のサブバンドLH、HLの合計1.0ライン分のＤＷＴ係数データを、１サイクル毎に交互に量子化パラメータを用いて量子化し、エントロピー符号化を施して、符号化データとして出力する。
【００４９】
t7期間では分解レベル１、２のＤＷＴ変換が実行されず、入力データはLev1-DWT変換部301内のラインバッファに画素データは保持される。しかし、ここでは量子化・符号化部104は、t6期間でサブバンドラインバッファ103に保持された分解レベル１のサブバンドHHのＤＷＴ係数データ、及び、t6期間でサブバンドラインバッファ103に保持された分解レベル２のサブバンドLH、HLのＤＷＴ係数データを量子化・符号化する。量子化・符号化部104はまず画素データ基準で0.5ラインに相当する分解レベル１のサブバンドHHのＤＷＴ係数データを量子化・符号化する。続いて量子化・符号化部104は、画素データ基準で0.5ラインに相当する分解レベル２のサブバンドLHのＤＷＴ係数データを量子化・符号化する。最後に、量子化・符号化部104は、画素データ基準で0.5ラインに相当する分解レベルレベル２のサブバンドHLのＤＷＴ係数を量子化・符号化する。その結果、画素データが1ライン入力される期間いっぱいを使って1.0ライン分のＤＷＴ係数を量子化・符号化が実行される。なお、この期間で分解レベル１のサブバンドHHが量子化・符号化処理されれば量子化・符号化処理するＤＷＴ係数の処理順は特に問わない。例えば分解レベル１のサブバンドHH、分解レベル２のサブバンドLH、分解レベル１のサブバンドHLの順に処理する代わりに、分解レベル２のサブバンドLH、分解レベル２のサブバンドHL、分解レベル１のサブバンドHHの順に処理するなど処理順を入れ替えても良い。また、分解レベル２のサブバンドLH、分解レベル２のサブバンドHLではなく、分解レベル２のサブバンドHH、分解レベル２のサブバンドLLをこの期間で量子化・符号化処理しても良い。この場合、この期間で量子化・符号化されなかった分解レベル２のサブバンドLH、分解レベル２のサブバンドHLは後に示すt9期間で量子化・符号化処理すれば良い。
【００５０】
t8期間では次の分解レベル2のＤＷＴ変換を実行するために必要な分解レベル１のサブバンドLLのＤＷＴ係数が足りない。それ故、分解レベル１の1ＤＷＴ変換のみが実行される。また、t2、t4、t6期間同様、分解レベル１のサブバンドLH、HLのＤＷＴ係数データは量子化・符号化部104に出力されるが、分解レベル１のサブバンドHHのＤＷＴ係数データはサブバンドラインバッファ103に送信され一旦、保持される。量子化・符号化部104はウェーブレット変換部300から送られた分解レベル１のサブバンドLH,HLの合計1.0ライン分のＤＷＴ係数データを、１サイクル毎に交互に量子化パラメータを用いて量子化し、エントロピー符号化を施して、符号化データとして出力する。
【００５１】
t9期間では分解レベル１、２のＤＷＴ変換も実行されず、入力データはLev1-DWT変換部301内のラインバッファに画素データは保持される。しかし、このt9期間では、量子化・符号化部104が、t8期間にてサブバンドラインバッファ103に保持された分解レベル１のサブバンドHHのＤＷＴ係数データと、t6期間にてサブバンドラインバッファ103に保持された分解レベル２のサブバンドHH,LLのＤＷＴ係数データを量子化・符号化する。具体的には、量子化・符号化部104はまず画素データ基準で0.5ラインに相当する分解レベル１のサブバンドHHのＤＷＴ係数データを量子化・符号化する。量子化・符号化部104は、続いて画素データ基準で0.5ラインに相当する分解レベル２のサブバンドHHのＤＷＴ係数データを量子化・符号化する。最後に量子化・符号化部104は、画素データ基準で0.5ラインに相当する分解レベル２のサブバンドLLのＤＷＴ係数データを量子化・符号化する。その結果、画素データが１ライン入力される期間いっぱいを使って1.0ライン分のＤＷＴ係数を量子化・符号化が実行される。
【００５２】
以降、画像データの最終ラインまで上記の処理が繰り返される。
【００５３】
以上、説明したような構成および処理タイミングで量子化・符号化を実行することで量子化・符号化部104は、符号化対象の画像データから１ライン分の画素データを入力する期間に、同数のＤＷＴ係数データの処理する能力を有するだけでよくなる。つまり、量子化・符号化部104が入力する変換係数データの総数は、最大でも符号化対象の画像データの水平方向の画素数に設定できる。図３で示した構成の場合、量子化・符号化部が、符号化対象の画像データの１ライン分の画素データを入力する期間で、2.5ライン分のＤＷＴ係数データを処理する能力を必要としていたのと比較して、回路規模の増大を抑制できることが理解できよう。
【００５４】
なお、本実施形態では可逆５−３タップフィルタを用いたが、JPEG2000で提案されている非可逆９−７タップフィルタなど数式４の関係が成り立つフィルタであればどのフィルタを用いても同様の構成、処理タイミングで実行することが可能である。
【００５５】
また、本実施形態ではウェーブレット係数を分解レベル２まで実行した場合を例に挙げて説明したが、分解レベル３以降のもっと高レベルまでウェーブレット係数を実施した際にも同様の思想での実行が可能である。
【００５６】
例えば分解レベル３の場合であれば、サブバンドラインバッファ103に分解レベル３のサブバンドを一時記憶するバッファを新たに設け、保持したＤＷＴ係数を図７のタイミング図のように低レベルのサブバンドから優先して読み出すことで実現可能である。
【００５７】
ここで、例えば分解レベルＮまでのサブバンドに分解し符号化する場合について一般化するなら、第ｉ（ｉ≧２）のウェーブレット変換部は、第ｉ−１のウェーブレット変換部が生成した分解レベルｉ−１のサブバンドLLの変換係数データを入力し、分解レベルｉのサブバンドLL,HL,LH,HHの変換係数データを出力するようにする。そして、最初に位置する第１のウェーブレット変換部は、生成した分解レベル１のサブバンドHL,LH,HHの３つのうちの２つをバッファメモリの介在無しに量子化・符号化部に供給すると共に、残りの１つをバッファメモリに供給する。そして、第１のウェーブレット変換部を除く他のウェーブレット変換部は、生成したそれぞれの分解レベルのサブバンドHL,LH,HHの３つをバッファメモリに供給する。そして、量子化・符号化部は、第１のウェーブレット変換部、又は、バッファメモリから、分解レベルの低い方を優先しつつ、符号化対象の画像データの水平方向の画素数と同数の変換係数データを入力しては、量子化、符号化を行えば良い。
【００５８】
［第２の実施形態］
続いて、本発明の第２の実施形態を説明する。図８は、第２の実施形態における画像符号化装置のブロック構成図、図９はその符号化処理に係るタイミングチャートを示している。本第２の実施形態の装置構成は、上記の第１の実施形態ほぼ同じであるが、サブバンドラインバッファ103に保持する対象が、分解レベル１のサブバンドLHのＤＷＴ変換係数データである点が異なる。以下、図８に示す本第２の実施形態における画像符号化装置の処理を、図９のタイミングチャートに従って説明する。
【００５９】
t0〜t1期間では符号化対象の画像データから合わせて２ライン分の画素データがLev1-DWT変換部301に供給される。ただし。この時点ではまだ可逆５−３ＤＷＴ変換を行うに足るライン数分のデータが入力されていない。そのため、Lev1-DWT変換部301では２ラインの入力画素データをLev1-DWT変換部301内のラインバッファに保持するに留め、この期間でのＤＷＴ変換は実行しない。
【００６０】
t2期間において、Lev1-DWT変換部301はt0,t1期間でラインバッファに保持した符号化対象画像の２ライン分の画素データと、３ライン目の画素データを用いてＤＷＴ変換を実行し、分解レベル１のサブバンドLL、LH、HH、LHの係数データを出力する。その際、分解レベル１のサブバンドLLのＤＷＴ係数データは、分解レベル２のＤＷＴ変換データを生成するために用いられるため、Lev2-DWT変換部302に供給される。また、分解レベル１のサブバンドHH、HLのＤＷＴ係数データは量子化・符号化部104に出力されるが、分解レベル１のサブバンドLHのＤＷＴ係数データはサブバンドラインバッファ103に供給され一旦、保持される（遅延される）。
【００６１】
なお、t2期間では、まだ分解レベル１のサブバンドLLのＤＷＴ係数データが１ライン分しか出力されておらず、分解レベル２のＤＷＴ変換を実行できない。そのため、Lev2-DWT変換部302は、分解レベル１のサブバンドLLについては、ＤＷＴ変換の実行は行わず内部のラインバッファに係数を保持するに留める。量子化・符号化部104はウェーブレット変換部300から送られた分解レベル１のHH、HLのサブバンド合計1.0ライン分のＤＷＴ係数データを、1サイクル毎に交互に量子化パラメータを用いて量子化される。そして符号化では、サブバンドごとに、EBCOT(Embedded Block Coding with Optimized Truncation)などのエントロピー符号化を施して、符号化データとして出力される。
【００６２】
t3期間では、t0〜t1期間同様、可逆５−３ＤＷＴ変換を掛けるに足るライン数分のデータが入力されていない。そのため、入力した画素データはLev1-DWT変換部301内のラインバッファに画素データは保持され、この期間ではＤＷＴ係数は出力されない。しかし、量子化・符号化部104は、t2期間にてサブバンドラインバッファ103に保持された分解レベル１のサブバンドLHのＤＷＴ係数データを読み出して量子化パラメータを用いて量子化し、エントロピー符号化を施して、符号化データとして出力する。この期間では分解レベル１のサブバンドLHのＤＷＴ係数データしか符号化されないため、画素データ基準で0.5ライン分のDWT係数データしか量子化・符号化されない。従って、画素データが１ライン入力される期間の半分の期間で量子化・符号化を実行することができる。
【００６３】
t4期間にて、Lev1-DWT変換部301は、t2,t3期間に入力されラインバッファに保持された画素データ及び、新規に入力した画素データを用いてＤＷＴ変換を実行し、分解レベル１のサブバンドLL、LH、HH、LHの係数データを生成する。その際、分解レベル１のサブバンドLLのＤＷＴ係数データは、分解レベル２のＤＷＴ変換データを生成するために用いられるため、Lev2-DWT変換部302に供給される。但し、この時、分解レベル１のサブバンドLLのＤＷＴ係数データと、t2期間でラインバッファに保持された分を合わせても２ライン分しない。それ故、Lev2-DWT変換部302はＤＷＴ変換を実行しない。また、t2期間と同様、分解レベル１のサブバンドHH、HLのＤＷＴ係数データは量子化・符号化部104に出力されるが、分解レベル１のサブバンドLHのＤＷＴ係数データはサブバンドラインバッファ103に送信され一旦、保持される。量子化・符号化部104はウェーブレット変換部300から送られた分解レベル１のサブバンドHH、HLの合計1.0ライン分のＤＷＴ係数データを、１サイクル毎に交互に量子化パラメータを用いて量子化し、エントロピー符号化を施して、符号化データとして出力する。
【００６４】
t5期間では分解レベル１，２のＤＷＴ変換は実行されず、入力データはLev1-DWT変換部301内のラインバッファに画素データは保持される。しかし、t3期間と同様、量子化・符号化部104は、t4期間にてサブバンドラインバッファ103に保持された分解レベル１のサブバンドLHのＤＷＴ係数データを読み出し、量子化パラメータを用いて量子化し、エントロピー符号化を施して、符号化データとして出力する。
【００６５】
t6期間ではLev1-DWT変換部301はＤＷＴ変換を実行し、分解レベル１のサブバンドLL、LH、HH、LHの係数データを生成し、出力する。また、その際、出力される分解レベル１のサブバンドLLのＤＷＴ係数データ、およびt2、t4期間にてLev2-DWT変換部302内のラインバッファに保持された分解レベル１のサブバンドLLのＤＷＴ係数データを用いて、Lev2-DWT変換部302はＤＷＴ変換を実行する。この結果、分解レベル２のサブバンドLL、LH、HH、LHの係数データが生成される。
【００６６】
なお、図４に示すように分解レベル２の係数データの数は分解レベル１の係数データの半分となるため、元の画素データ基準で分解レベル２のサブバンドLL、LH、HH、LHの４つを合わせて１ライン（0.25×4）分のＤＷＴ係数データがサブバンドラインバッファ103に送信され一旦、保持されることになる。分解レベル１のサブバンドLH、HH、LHの3つの1.5ラインの係数データとなるので、このt6期間で生成さる係数データの個数は、元の画素データ基準で2.5ライン分（1+1.5）となる。
【００６７】
量子化・符号化部104はウェーブレット変換部300から送られた分解レベル１のサブバンドHL,HHの合計1.0ライン分のＤＷＴ係数データを、1サイクル毎に交互に量子化パラメータを用いて量子化し、エントロピー符号化を施して、符号化データとして出力する。
【００６８】
t7期間では、分解レベル１、２のＤＷＴ変換は実行されず、入力データはLev1-DWT変換部301内のラインバッファに画素データは保持される。しかし、このt7期間では、量子化・符号化部104が、t6期間でサブバンドラインバッファ103に保持された分解レベル１のサブバンドLHのＤＷＴ係数データ、及び、t6期間にてサブバンドラインバッファ103に保持された分解レベル２のサブバンドLH、HLのＤＷＴ係数データを量子化・符号化する。量子化・符号化部104は、まず画素データ基準で0.5ラインに相当する分解レベル１のLHのＤＷＴ係数データを量子化・符号化する。量子化・符号化部104は、続いて画素データ基準で0.25ラインに相当する分解レベル２のサブバンドLHのＤＷＴ係数データを量子化・符号化する。最後に量子化・符号化部104は、画素データ基準で0.25ラインに相当する分解レベル２のサブバンドHLのＤＷＴ係数データを量子化・符号化する。その結果、画素データが１ライン入力される期間いっぱいを使って、1.0ライン分のＤＷＴ係数データが量子化・符号化されることになる。
【００６９】
t8期間では、次の分解レベル２のＤＷＴ変換を実行するために必要な分解レベル１のサブバンドLLのＤＷＴ係数データが足りない。このため、分解レベル１のＤＷＴ変換のみが実行される。また、t2、t4、t6期間と同様、分解レベル１のサブバンドHH、HLのＤＷＴ係数データは量子化・符号化部104に出力されるが、分解レベル１のサブバンドLHのＤＷＴ係数データはサブバンドラインバッファ103に送信され一旦、保持される。量子化・符号化部104はウェーブレット変換部300から送られた分解レベル１のサブバンドHH、HLの合計1.0ライン分のＤＷＴ係数データを、１サイクル毎に交互に量子化パラメータを用いて量子化し、エントロピー符号化を施して、符号化データとして出力する。
【００７０】
t9期間では分解レベル１，２のＤＷＴ変換は実行されず、入力データはLev1-DWT変換部301内のラインバッファに画素データは保持される。しかし、このt9期間にて、量子化・符号化部104は、t8期間でサブバンドラインバッファ103に保持された分解レベル１のサブバンドLHのＤＷＴ係数データ、及び、t6期間でサブバンドラインバッファ103に保持された分解レベル２のサブバンドHH、LLのＤＷＴ係数データを量子化・符号化する。具体的には、量子化・符号化部104はまず画素データ基準で0.5ラインに相当する分解レベル１のサブバンドLHのＤＷＴ係数データを量子化・符号化する。量子化・符号化部104は、続いて、画素データ基準で0.25ライン分に相当する分解レベル２のサブバンドHHのＤＷＴ係数データを量子化・符号化する。最後に量子化・符号化部104は、画素データ基準で0.25ライン分に相当する分解レベル２のサブバンドLLのＤＷＴ係数データを量子化・符号化する。その結果、画素データが１ライン入力される期間いっぱいを使って1.0ライン分のＤＷＴ係数データの量子化・符号化が実行されることになる。
【００７１】
以降、画像データの最終ラインまで同一の処理が繰り返される。
【００７２】
ここでサブバンドラインバッファ103に保持される係数を、分解レベル１のサブバンドLHの係数データにした理由を図１０を用いて説明する。
【００７３】
図１０は水平方向の解像度（画素数）が９の画像を、分解レベル２までＤＷＴ変換した際の各サブバンドの水平方向のＤＷＴ係数の数を示した図である。
【００７４】
図１０に示すように水平方向の解像度が奇数である場合、分解レベル１の各サブバンドの水平方向の係数の数が低周波成分のサブバンド（分解レベル１のLH=5）に属するか高周波成分に属するか（分解レベル１のHL,HH=4）によって異なる。そのため、量子化・符号化部104に同一期間に入力するレベル１のＤＷＴ係数データがサブバンドLH,HHあるいはLH,HLであった場合、１ライン期間に量子化・符号化する係数の数が異なりタイミング調整が必要となる。そこで量子化・符号化部104に同一期間に入力する分解レベル１のＤＷＴ係数をサブバンドHL,HHとすることで１ライン期間に量子化・符号化する係数の数を同一にすることが出来るためである。
【符号の説明】
【００７５】
１０３…サブバンドラインバッファ、１０４…量子化・符号化部、３００…ウェーブレット変換部、３０１…Lev1-DWT変換部、３０２…Lev2-DWT変換部
【図１】
2018007214.tif 000003
【図２】
2018007214.tif 000004
【図３】
2018007214.tif 000005
【図４】
2018007214.tif 000006
【図５】
2018007214.tif 000007
【図６】
2018007214.tif 000008
【図７】
2018007214.tif 000009
【図８】
2018007214.tif 000010
【図９】
2018007214.tif 000011
【図１０】
2018007214.tif 000012