後述の本発明の実施形態では、JPEG2000の符号化データの復号過程においてウェーブレット係数空間でのデタイル処理が実行される。このような実施形態の理解を容易にするため、JPEG2000の概要と、ウェーブレット係数空間でのデタイル方法の原理について説明する。
<JPEG2000の概要>
図13はJPEG2000の圧縮・伸長アルゴリズムを説明するためのブロック図である。
まず圧縮(符号化)処理について説明する。画像は重複しないタイルに分割され、タイル毎に処理される。各タイルの画像はDCレベルシフト・逆シフト部1によりDCレベルシフトを施され、次に色空間変換・逆変換部2により例えばRGB色空間からYCrCb(もしくはYUV)色空間へ変換される。この色空間変換後のタイルの各コンポーネント画像に対し、2次元ウェーブレット変換・逆変換部3により2次元ウェーブレット変換(順変換)処理が行われる。JPEG2000では、ウェーブレット変換として可逆の5×3変換又は非可逆の9×7変換が用いられる。9×7変換が用いられる場合には、ウェーブレット係数は量子化・逆量子化部4でサブバンド毎に線形量子化を施される。次に、エントロピー符号化・復号化部5で、ウェーブレット係数はサブバンド毎にビットプレーン単位でのエントロピー符号化が行われる(より正確には各ビットプレーンは3つのサブビットプレーンに分割されて符号化される)。この際、量子化・逆量子化部4で、符号化対象ビットの周辺ビットの並びからコンテキストが生成され、これがエントロピー符号化・復号化部5に与えられる。そして、符号形成・タグ処理部6において、必要なエントロピー符号をまとめてパケットが生成され、パケットが所要の順序に従って並べられとともに必要なタグ及びタグ情報が付加されることにより、1本のコードストリーム(JPEG2000の符号化データ)が形成される。
エントロピー符号化及び符号形成についてさらに説明する。サブバンドはプリシンクトと呼ばれる矩形領域に分割され、プリシンクトはさらにコードブロックと呼ばれる矩形領域に分割される。プリシンクトは、大まかには画像中の位置(Position)を表すものであり、インプリメンテーションでメモリを効率的に使うために導入されたものである。プリシンクトは、HL,LH,HHの3つのサブバンドにおいて空間的に一致している。つまり、プリシンクトは3つで1つのまとまりを成すものである。ただし、LLサブバンドを分割したプリシンクトは1つで1つのまとまりを成す。このようなプリシンクトは、サブバンドと同じサイズにすることも可能である。コードブロックはエントロピー符号化の基本単位となる。
プリシンクトに含まれる全てのコードブロックから、符号の一部を取り出して集めたもの(例えば、全てのコードブロックの最上位ビットから3枚目までのビットプレーンの符号を集めたもの)がパケットである。パケットは符号とヘッダ(パケットヘッダ)からなる。全てのプリシンクト(すなわち、全てのコードブロック、全てのサブバンド)のパケットを集めると、タイル画像全域の符号の一部(例えば、タイル画像全域のウェーブレット係数の最上位ビットから3枚目までのビットプレーンの符号)ができるが、これをレイヤとよぶ。レイヤは、大まかにはタイル画像全体のビットプレーンの符号の一部であるから、復号されるレイヤ数が増えれば画質は上がる。レイヤはいわば画質の単位である。
なお、JPEG2000には符号の破棄(トランケーション)を行うポスト量子化の機能がある。可逆の5×3ウェーブレット変換が用いられる場合には、ウェーブレット係数に対する線形量子化は行わないため、ポスト量子化のみが用いられる。ポスト量子化による符号破棄については後述する。
JPEG2000のコードストリームの伸長(復号)処理は圧縮処理と丁度逆の処理となる。すなわち、符号形成・タグ処理部6において、コードストリーム中のタグ情報を解釈することにより、コードストリームは各コンポーネントの各タイルのコードストリームに分解され、また、各コンポーネント内のタグ情報に基づいた順番で復号対象ビットの位置が定められる。量子化・逆量子化部4で、その対象ビット位置の周辺ビット(復号済み)の並びからコンテキストが生成される。このコンテキストとコードストリームからエントロピー符号化・復号化部5で確率推定によってエントロピー復号が行われて対象ビットが生成され、これが対象ビットの位置に書き込まれる。このようにして復号されたウェーブレット係数に対し(9×7ウェーブレット変換が用いられる場合には量子化・逆量子化部5で逆量子化を施された後)、2次元ウェーブレット変換・逆変換部3で2次元逆ウェーブレット変換処理が行われることにより、各タイルの各コンポーネントの画像データが生成され、これは色空間逆変換・逆変換部2で元の色空間へ戻され、さらにDCレベルシフト・逆シフト部1でDCレベル逆シフトを施される。
次に、JPEG2000における2次元ウェーブレット変換(順変換)について説明する。図14〜図18は、16×16画素のモノクロ画像に対して、5x3変換と呼ばれるウェーブレット変換を2次元に(垂直方向および水平方向の順)施す過程の説明図である。
まず垂直方向にウェーブレット変換を施す。図14の様にXY座標をとり、あるxについて、Y座標がyである画素の画素値をP(y)(0≦y≦15)と表す。JPEG2000では、まず垂直方向(Y座標方向)に、Y座標が奇数(y=2i+1)の画素を中心にハイパスフィルタを施して係数C(2i+1)を得た後、Y座標が偶数(y=2i)の画素を中心にローパスフィルタを施して係数C(2i)を得る(これを全てのxについて行う)。ここで、ハイパスフィルタは式(1)、ローパスフィルタは式(2)で表される。式中の記号|_x_|は、xのフロア関数(実数xを、xを越えず、かつ、xに最も近い整数に置換する関数)を示している。
式(1) C(2i+1)=P(2i+1)−|_(P(2i)+P(2i+2))/2_|
式(2) C(2i)=P(2i)+|_(C(2i-1)+C(2i+1)+2)/4_|
画像の端部又はタイルの境界部においては、中心となる画素に対して隣接画素群又は隣接係数群が存在しないことがある。この場合、図19に示した「ミラリング」と呼ばれる手法によって画素値又は係数値を補うことになる。ミラリングは、文字通り、画像の端又はタイル境界を中心として画素値又は係数値を線対称に折り返し、折り返した値を隣接画素群又は係数群の値とみなす処理である。
ここで、簡単のため、ハイパスフィルタで得られる係数をH、ローパスフィルタで得られる係数をLと表記すれば、前記垂直方向の変換によって図14の画像は図15のようなL係数とH係数の配列へと変換される。
続いて、図15の係数配列に対して、水平方向にウェーブレット変換を施す。すなわち、水平方向に、X座標が奇数(x=2i+1)の係数を中心にハイパスフィルタを施し、次にX座標が偶数(x=2i)の係数を中心にローパスフィルタを施す(これを全てのyについて行う。この場合、式(1),式(2)のP(2i)等は係数値を表すものと読み替える)。
簡単のため、
前記L係数を中心にローパスフィルタを施して得られる係数をLL、
前記L係数を中心にハイパスフィルタを施して得られる係数をHL、
前記H係数を中心にローパスフィルタを施して得られる係数をLH、
前記H係数を中心にハイパスフィルタを施して得られる係数をHH、
と表記すれば、図15の係数配列は図16の様な係数配列へと変換される。ここで、同一の記号を付した係数群はサブバンドと呼ばれる。図16の係数配列は4つのサブバンドの係数からなる。
以上で、1回の2次元ウェーブレット変換(1回のデコンポジション(分解))が終了し、LL係数だけを集めると(図17の様に係数をサブバンド毎に集め、LLサブバンドだけ取り出すと)、ちょうど原画像の1/2の解像度の“画像”が得られる(このように、サブバンド毎に係数を分類することをデインターリーブと呼び、これに対し図16のような状態に係数を配置することをインターリーブと呼ぶ)。
2回目のウェーブレット変換は、LLサブバンドを原画像と見なして、上に述べたと同様に行われる。そして得られたサブバンド係数をデインターリーブすると、図18に示す様な係数配列となる。これで2階層の2次元ウェーブレット変換が行われたことになる。
なお、図17、図18中の係数の接頭の1や2は、その係数が何回のウェーブレット変換で得られたかを示し、デコンポジションレベルと呼ばれる。図18の例では、デコンポジションレベル2の各サブバンド係数が最上位階層のウェーブレット係数である。
以上は順変換であるが、2次元逆ウェーブレット変換処理は順変換と丁度逆の処理となる。図16の様なインターリーブされた係数の配列に対して、まず順変換時とは逆に水平方向に逆ウェーブレット変換が施される。すなわち、水平方向に、X座標が偶数(x=2i)の係数を中心に逆ローパスフィルタを施し、次にX座標が奇数(x=2i+1)の係数を中心に逆ハイパスフィルタを施す(これを全てのyについて行う)。ここで、逆ローパスフィルタは式(3)で、逆ハイパスフィルタは式(4)で表される。この際も、画像の端部又はタイル境界部においては中心となる係数に対して隣接係数群が存在しないことがあり、この場合も図19のミラリングによって適宜係数値を補うことになる。
式(3) P(2i)=C(2i)−|_(C(2i-1)+C(2i+1)+2)/4_|
式(4) P(2i+1)=C(2i+1)+|_(P(2i)+P(2i+2))/2_|
このようにして図16の係数配列は図15のような係数配列に変換(逆変換)される。続いて、垂直方向に逆ウェーブレット変換が施される。すなわち、垂直方向に、Y座標が偶数(y=2i)の係数を中心に逆ローパスフィルタを施し、次にY座標が奇数(y=2i+1)の係数を中心に逆ハイパスフィルタを施せば(これを全てのxについて行う)、1回の2次元ウェーブレット逆変換が終了し、図14の画像に戻る(再構成される)ことになる。複数階層の2次元ウェーブレット変換が施されている場合は、図14をLLサブバンドとみなし、HL等の他のサブバンド係数を利用して同様の逆変換を繰り返すことになる。
<ウェーブレット係数空間でのデタイル処理の原理>
ウェーブレット係数空間でのデタイル処理では、水平方向及び垂直方向に隣接したタイルの境界部のハイパス係数に対しデタイルのための補正が施されることにより、図20に模式的に示すように隣接したタイルの境界部分の画素値が補正される。
前記特許文献2に記載の発明では、
(1)タイル境界歪みが生じるのは圧縮率が高い場合であり、タイリングの有無に関わらず、全てのハイパス係数は0に量子化される。
(2)タイリングした場合のローパス係数はタイリングしない場合のローパス係数に等しい。
という2つの近似を採用し、
「(0に量子化されたが)補正されたハイパス係数を用いて逆ウェーブレット変換をした場合の、タイル境界の画素値=ハイパス係数が0の場合の、タイリングをせずに逆ウェーブレット変換をした場合の同じ位置の画素値」
という式から、ハイパス係数の補正値を算出している(0に量子化されたハイパス係数に対し、0でない補正値を算出する過程は画像復元である)。
ここで、高いデコンポジションレベルにおいては、ハイパス係数は0に量子化されることが少ない、つまり上記(1)の近似が成り立たないことが多い。よって、上記(1)の近似を前提としたデタイル処理は、解決すべき課題に関連して述べたように、高い階層で副作用を生じやすいのである。
さて、上記の係数補正のための補正式を、5×3変換を例に説明する。前述のように、5x3変換と呼ばれるウェーブレット変換の逆変換の場合、L,H,L,Hの順にインターリーブした係数列に対し、
偶数位置中心に逆ローパスフィルタを、
奇数位置中心に逆ハイパスフィルタを、
をかける。
前記式(1)〜(4)のフロア関数を省略して展開すれば明らかなように、順変換と逆変換とではフィルタのタップ数は逆転し、またフィルタ係数もインターリーブされる。このため、順変換のフィルタ係数が
HIGH -0.5,1,-0.5
LOW -0.125,0.25,0.75,0.25,-0.125
の場合、逆変換のフィルタ係数は
LOW -0.25,1,-0.25
HIGH -0.125,0.5,0.75,0.5,-0.125
となる(ここでは、フロア関数部分を考慮せずにフィルタ係数を表現している)。
「タイリングしない場合で、かつ、ハイパス係数が全て0のとき(近似1)」、インターリーブされた係数列
L1 H1 L2 H2 L3 H3
において、H2位置中心に逆ハイパスフィルタをかけた値は以下の通りである。
式(i) -0.125H1+0.5L2+0.75H2+0.5L3-0.125H3=0.5L2+0.5L3
一方、上記係数が、2つのタイルに分割されてから算出されたものであり、タイル境界はH2とL3の間にあるとする。この場合、L1,H1,L2,H2は左側(又は上側)のタイルの係数、L3,H3は右側(又は下側)のタイルの係数になる。ここで、H2は順変換(3タップのハイパスフィルタ)時にミラリングの影響を受けており、補正の対象となる係数である。タイリングは、各タイル内の画素だけを用いてウェーブレット変換を行う処理、あるいは各タイル内の係数だけを用いて逆ウェーブレット変換を行う処理であるため、上記ミラリングによって左タイル(又は上タイル)の係数
L1 H1 L2 H2
を右タイル(又は下タイル)に補った場合
L1 H1 L2 H2 L2 H1
となる。
よって、H2位置中心に逆ハイパスフィルタをかけた値は、
式(ii) -0.125H1+0.5L2+0.75H2+0.5L2-0.125H1=-0.25H1+L2+0.75H2
となる。
式(i)=式(ii)を狙うため、
式(iii) H2=1/3H1-2/3L2+2/3L3
を得る。これがタイル境界に隣接し、順変換時にミラリングの影響を受けたハイパス係数の補正式である。ただし、補正値の算出時にはタイリングした係数しか存在しないため、L2は左(上)タイルの係数、L3は右(下)タイルの係数を使用する(近似2)。
タイル境界に隣接するローパス係数(L3)に関しても同様な立式が可能であり、その結果、左側又は上側のタイル境界近傍のハイパス係数H3の補正式として
式(iv) H3=0
を得ることができる。ただし、デコンポジションレベル1の場合、H3はミラリングの誤差を含まないため補正不要である(デコンポジションレベル2以上の場合は、H3に隣接するL3自体がデコンポジションレベル1でミラリングの影響を受けているため補正が必要である)。
9×7ウェーブレット変換の場合も同様な考え方で補正式を算出できる。すなわち、インターリーブされた係数列
H0 L1 H1 L2 H2 L3 H3 L4 H4
において、H2とL3の間がタイル境界である場合、
式(v) H2=
(-0.0535H0+0.15644H1+0.09127L1-0.59127L2+0.59127L3-0.09127L4)/0.60295
式(vi) H3=(0.05754L2-0.05754L4+0.03372H4)/0.53372
が得られる。ただし、9×7変換の場合には、デコンポジションレベル1でもH3係数を補正してよい。
次に、2階層(デコンポジションレベル数=2)の2次元ウェーブレット変換が行われたウェーブレット係数の場合を例に、前記特許文献2の教えるウェーブレット係数空間でのデタイル処理をウェーブレット変換の手順を逆に辿りながら忠実に行うデタイル処理の手順について説明する。図21〜図28は処理説明のための係数配列図である(便宜、4タイルとしている)。
図21は最上位階層であるデコンポジションレベル2のインターリーブされた係数を示している。まず、水平方向のデタイルのための係数補正が行われる。補正の対象となる係数は、図22に示す列Aの係数(2HL,2HH)と列Bの係数(2HL,2HH)である。列Aの係数は上に論じたH2係数に対応し、列Bの係数は上に論じたH3係数に対応する。5×3変換の場合、列Aの係数に対する補正式として前記式(iii)が、列Bの係数に対する補正式として前記式(iv)が用いられる。9x7変換の場合には、列Aの係数は前記式(v)により補正され、列Bの係数は前記式(vi)により補正される。そして、係数の補正値に対するクリッピング処理が行われる。
図9はクリッピング処理の説明図である。図9に示すように、補正前の係数値が量子化区間(Q〜2Q)にあるときにデタイルのための係数補正により-1/2Qに補正されたとする。この場合、係数値は、その量子化区間の端Qに戻される。つまり、クリッピング処理は、係数の補正値が、補正前の係数値が属していた量子化区間をはみ出したきときに、元の量子化区間の端(補正値に近い側)の値(クリップ値)に修正する処理である。
係数の補正値が量子化区間からはみ出た場合、そのままにしておくと、タイル境界をまたぐエッジがタイル境界付近でなまるという副作用が生じる恐れがある。クリッピング処理を行う目的は、このような副作用を回避するためである。
次に、デコンポジションレベル2のウェーブレット係数に対し水平方向の逆ウェーブレット変換が行われ、図23に示すような係数配列となる。この係数配列に対し、垂直方向のデタイルのための係数補正が行われる。すなわち、図24に示す行Cの係数(2H)と行Dの係数(2H)を対象としての係数補正が行われる。行Cの係数は上に論じたH2係数に対応し、行Dの係数は上に論じたH3係数に対応する。5x3変換の場合、行Cの係数は前記式(iii)で補正され、行Dの係数は前記式(iv)で補正される。9x7変換の場合、行Cの係数は前記式(v)で補正され、行Dの係数は前記式(vi)で補正される。このように水平方向に逆ウェーブレット変換した後のハイパス係数とローパス係数を垂直方向のデタイルに用いる理由は、それら係数が符号化時の順ウェーブレット変換でミラーリングの影響を直接受けた係数だからである。
このような補正後に、水平方向のウェーブレット変換(順変換)が行われ、図21に示すような係数の状態に戻される。この順変換を行うのは、符号破棄は図21のような状態の係数の符号について行われたものであり、本来は、図24に示すような中間状態の係数に対しては量子化区間が定まらないからである。そして、行C(図24参照)に対応した係数(2LH,2HH)及び行D(図24参照)に対応した係数(2LH,2HH)の補正値に対するクリッピング処理が行われる。
次に、デコンポジションレベル2の係数に対し、水平方向の逆ウェーブレット変換と垂直方向の逆ウェーブレット変換が順に行われる。この逆変換により、図25に示すデコンポジションレベル1の係数が得られる。
次に、図26のようにインターリーブしたデコンポジションレベル1の係数に対し水平方向のデタイルのための係数補正が行われる。5×3変換の場合には、図27に示す列Eの係数(HL,HH)を前記式(iii)で補正する(デコンポジションレベル1では、列Fの係数はミラリングの誤差を含まないため補正は不要である)。9x7変換の場合には、列Eの係数を前記式(v)で補正し、また、列Fの係数(HL,HH)を前記式(vi)で補正する。そして、補正された係数値のクリッピング処理が行われる。
次に、水平方向の逆ウェーブレット変換が行われる。この逆ウェーブレット変換後の係数に対し、垂直方向のデタイルのための係数補正が行われる。すなわち、5x3変換の場合は図28に示す行Gの係数を前記式(iii)で補正する。9x7変換の場合、図28に示す行Gの係数を前記式(v)で補正し、行Hの係数を前記式(vi)で補正する。
この補正後の係数に対し、水平方向のウェーブレット変換(順変換)が行われ、図26に示す係数の状態に戻す。そして、行G,Hの係数(5×3変換の場合は行Gの係数のみ)に関しクリッピング処理が行われる。
最後に、水平方向の逆ウェーブレット変換、垂直方向の逆ウェーブレット変換が順に行われ、タイル境界歪みの除去された画像データが生成される。
<本発明の実施形態の説明>
図1は本発明の実施形態を説明するためのブロック図である。本実施形態に係る画像処理装置は、JPEG2000の符号化データを処理するもので、タグ処理部101、エントロピー復号部102、逆量子化部103、ウェーブレット逆変換部104、色空間逆変換部105及びDCレベル逆シフト部106を備える。これら各部はJPEG2000のデコーダが一般的に備える手段であり、その基本的な作用は図13に関連して説明した通りである。
この画像処理装置は、ウェーブレット係数空間でのデタイル処理を行うための手段としてのデタイル処理部111を備える。ウェーブレット係数空間でのデタイル処理は逆ウェーブレット変換と密接に関連するため、デタイル処理部111はウェーブレット逆変換部104に含まれる形で示されている。
デタイル処理部111は、タイル境界付近に位置する特定のハイパス係数を補正するための係数補正手段112と、この係数補正手段112による係数の補正値に対するクリッピング処理のためのクリッピング手段113と、デタイル処理の制御のためのデタイル処理制御手段114とからなる。
この画像処理装置は、JPEG2000の符号化データがポスト量子化により符号の破棄が行われている場合にも適切なクリッピング処理を可能にするため、符号が破棄されたビットプレーン数(トランケート数)を取得するトランケート数取得手段116と、このトランケート数に基づいて量子化区間を決定する手段である量子化区間決定部115を備える。なお、トランケート数取得手段116に相当する手段は、JPEG2000のデコーダのエントロピー復号部にもともと備わっているものであるので、トランケート数取得手段116はエントロピー復号部102の一部として表されている。
この画像処理装置の処理の流れは次の通りである。入力されたJPEG2000の符号化データをタグ処理部101、エントロピー復号部102及び逆量子化部103により処理することにより、ウェーブレット係数が復号される。つまり、タグ処理部101から逆量子化部103までは全体として、符号化データからウェーブレット係数を復号する手段を構成していると言うことができる。タグ処理部101、エントロピー復号部102及び逆量子化部103の処理内容については図13に関連して説明した通りであるので、これ以上の説明は省略するが、エントロピー復号部102におけるエントロピー復号の際に、トランケート数取得手段116によりサブバンド毎のトランケート数が算出される。その詳細については後述する。
ウェーブレット逆変換部104において、復号された各コンポーネントのウェーブレット係数に対し最上位階層(最高のデコンポジションレベル)から逆ウェーブレット変換処理が行われるが、この過程でデタイル処理111によるデタイル処理が実行される。このデタイル処理中の係数補正値に対するクリッピング処理に必要な量子化区間は、量子化区間決定部115より与えられる。なお、符号化時に線形量子化が適用された符号化データの場合でも、ウェーブレット逆変換部104に入力されるウェーブレット係数は逆量子化部103で逆線形量子化が施されたものであるので、クリッピング処理ではポスト量子化(符号破棄)についての量子化区間のみを考慮すればよい。
ウェーブレット逆変換部104からタイル境界歪みが抑制されたタイル画像の各コンポーネントデータが出力され、これは色空間逆変換部105により符号化時の色空間変換と逆の変換が施され、さらにDCレベル逆シフト部106でDCレベル逆シフトを施されることにより、元の表色系(例えばRGB表色系)のタイル画像データに戻される。
ここで、符号の破棄(トランケーション)とトランケート数の算出、及び、トランケート数と量子化区間の関係について説明する。
JPEG2000には符号の破棄(トランケーション)を行うポスト量子化の機能がある。ポスト量子化は量子化テーブルを用いて実行される。これについて図10により説明する。
図10において、(a)はポスト量子化前の符号を模式的に示している。本例では3つのコンポーネントC0,C1,C2があり、ここでは、その1つのコンポーネントC0を示している。また、階層数(デコンポジションレベル数)は3であり、3LL,3HL,3LH,3HH,2HL,2LH,2HH,1HL,1LH,1HHのサブバンドからなり、深さ方向に8つのビットプレーンで構成された符号の例である。
(b)はポスト量子化のための量子化テーブルの一例である。各コンポーネント、各サブバンド毎に符号が破棄されるビットプレーンの枚数(トランケート数)が記述されている。
(c)はコンポーネントC0のトランケーション例である。コンポーネントC0に関しては、3LLサブバンドはトランケート数は1であるので、8枚のビットプレーン中、最下位の1枚の符号が破棄される。1HHサブバンドについては、トランケート数は7であるので、8枚のビットプレーンのうち下位の7枚の符号が破棄される。このようにして、すべてのサブバンドについて、量子化テーブルの値に従って符号を破棄した後の符号が(d)に模式的に示されている。
図11は、このようなポスト量子化のトランケート数(符号が破棄されたビットプレーン数)と量子化区間の関係を示している。1枚のビットプレーンの破棄は、係数を2で除した(1ビット分シフトした)ことに相当する。図示のように、トランケート数mの場合のポスト量子化の量子化区間の大きさは2^m(2のm乗)、トランケート数nの場合の量子化区間の大きさは2^nであり、トランケート数が大きいほど量子化区間が広くなる。このように、トランケート数が分かれば量子化区間の大きさが分かる。このようなポスト量子化によるトランケート数から各サブバンド係数の量子化区間(の大きさ)を決定する手段が前記量子化区間決定部115である。
次に、トランケート数の算出方法について説明する。図12はその説明図である。図12の上段の図に示すように、トランケーションを行う前の総ビットプレーン数は、元データ(色空間変換前画像)のビットプレーン数(桁数)と、色空間変換で増えるビットプレーン数(桁数)と、ウェーブレット変換で増えるビットプレーン数(桁数)との和である。一方、下段の図に示すように、ゼロビットプレーン数(コーディングされなかったビットプレーン数)と、コーディングされたビットプレーン数と、トランケート(符号破棄)されたビットプレーン数の和が総ビットプレーン数である。
このことから、トランケート数は、総ビットプレーン数からゼロビットプレーン数とコーディングされたビットプレーン数を差し引くことにより求まることが分かる。そして、ゼロビットプレーン数は、JPEG2000の符号化データを構成するパケットのヘッダ(パケットヘッダ)に記述されている。また、パケットヘッダに記述されているコーディングパス数から、コーディングされたビットプレーン数を計算することができる。
次に、デタイル処理について詳細に説明する。図2は、デタイル処理の流れを説明するためのフローチャートである。ここでは輝度コンポーネント(コンポーネント番号0)と色差Cb,Crコンポーネント(コンポーネント番号1,2)の3コンポーネントからなる符号化データを想定している。符号化データのメインヘッダ(又はタイルパートヘッダ)にコンポーネント数が記述されており、タグ処理部101によってコンポーネント数がウェーブレット逆変換部104に通知される。ウェーブレット変換のデコンポジションレベル数(階層数)も同様である。これらは一般的なJPEG2000デコーダと同様である。
デタイル処理制御手段114は、コンポーネント数ncompに、ヘッダより取得されたコンポーネント数を設定する(step200)。ここでは3コンポーネントの符号化データを想定しているので、ncomp=3に設定されることになる。
次に、輝度コンポーネントと色差コンポーネントのそれぞれについてデタイル開始レベル(デタイル開始階層)KY,KCを設定する(step201)。このように、コンポーネント別にデタイル開始レベルを制御することができる。後述のように、処理は最上位デコンポジションレベルから下位のデコンポジションレベルへ向かって進行するが、輝度コンポーネントについてはデタイル開始レベルKY以下のデコンポジションレベルがデタイル処理の対象となり、それより上位デコンポジションレベルはデタイル処理の対象とならない。同様に、色差コンポーネントについては、デタイル開始レベルKC以下のデコンポジションレベルがデタイル処理の対象となり、それより上位のデコンポジションレベルはデタイル処理の対象とならない。
デタイル開始レベルKY,KCは、KY>KCの関係に選ばれる。このようにすることにより、色差コンポーネントについてのデタイル処理の対象となるデコンポジションレベル数が少なくなる分だけデタイルのための処理時間が削減される。しかも、デタイル処理による画質改善効果は、色差コンポーネントに比べ輝度コンポーネントの方が顕著であるため、KY>KCの関係に設定しても、画質に及ぼす影響はわずかであり、むしろ、上位のデコンポジションレベルがデタイル処理の対象から除外されることによりタイル境界近辺の色変わり等の副作用が発生しにくくなるという効果を得られる。
デタイル処理制御手段114は、コンポーネント番号compを0(輝度分)に設定し(step202)、次に処理デコンポジションレベルを最高レベル(ヘッダより取得されたデコンポジションレベル数に等しい)に設定する(step203)。
comp=0(輝度)であるため、処理デコンポジションレベルがデタイル開始レベルKYより上位レベルならば(step204,No)、デタイル処理制御手段114はデタイル処理を実行させることなく、ウェーブレット逆変換部104で2次元逆ウェーブレット変換を実行させ(step207)、処理デコンポジションレベルを1レベル下げ(step208)。処理デコンポジションレベルがデタイル開始レベルKYより上位レベルである間は同様に、デタイル処理を施すことなく2次元逆ウェーブレット変換を実行させる。
デタイル開始レベルKY以下のデコンポジションレベルが処理デコンポジションレベルとなると(step204,Yes)、デタイル制御手段114は、処理デコンポジションレベルの輝度コンポーネントのウェーブレット係数に対する水平方向デタイル処理と垂直方向デタイル処理を係数補正手段112及びクリッピング手段113で実行させ(step205,206)、水平・垂直方向デタイル処理後のウェーブレット係数に対する2次元逆ウェーブレット変換をウェーブレット逆変換部104で実行させ(step207)、処理デコンポジションレベルを1レベル下げる(step208)。同様にして最下位のデコンポジションレベル1までの各レベルのウェーブレット係数に対し、デタイル処理及び2次元逆ウェーブレット変換を順次実行させる。
デコンポジションレベル1まで処理され、処理デコンポジションレベルが0となると(step209,Yes)、輝度コンポーネントに対する処理を終わる。
デタイル処理制御手段114は、コンポーネント番号compを1にインクリメントする(step211)。コンポーネント番号が1のコンポーネントは色差(Cb)コンポーネントである。デタイル処理制御手段114は、処理デコンポジションレベルを最高レベルに設定し(step203)、最上位のデコンポジションレベルより当該色差コンポーネントのウェーブレット係数に対する処理を開始する。処理デコンポジションレベルがデタイル処理開始レベルKYより上のレベルである間は水平方向及び垂直方向のデタイル処理(step205,206)を行わせることなく2次元逆ウェーブレット変換を実行させ(step207)、処理デコンポジションレベルを1レベル下げ、同様の処理を続ける。
デタイル開始レベルKC以下のデコンポジションレベルが処理デコンポジションレベルとなると(step204,Yes)、デタイル制御手段114は、処理デコンポジションレベルの当該色差コンポーネントのウェーブレット係数に対する水平方向デタイル処理と垂直方向デタイル処理を係数補正手段112及びクリッピング手段113で実行させ(step205,206)、水平・垂直方向デタイル処理後のウェーブレット係数に対する2次元逆ウェーブレット変換をウェーブレット逆変換部104で実行させ(step207)、処理デコンポジションレベルを1レベル下げる(step208)。同様にして最下位のデコンポジションレベル1までの各レベルのウェーブレット係数に対し、デタイル処理及び2次元逆ウェーブレット変換を順次実行させる。
デコンポジションレベル1まで処理され、処理デコンポジションレベルが0となると(step209,Yes)、当該色差コンポーネントに対する処理を終わる。
デタイル処理制御手段114は、コンポーネント番号compを2にインクリメントする(step211)。コンポーネント番号が2のコンポーネントは色差(Cr)コンポーネントである。デタイル処理制御手段114は、処理デコンポジションレベルを最高レベルに設定し(step203)、最上位のデコンポジションレベルより当該色差コンポーネントのウェーブレット係数に対する処理を開始する。処理デコンポジションレベルがデタイル処理開始レベルKYより上のレベルである間は水平方向及び垂直方向のデタイル処理(step205,206)を行わせることなく2次元逆ウェーブレット変換を実行させ(step207)、処理デコンポジションレベルを1レベル下げ、同様の処理を続ける。
デタイル開始レベルKC以下のデコンポジションレベルが処理デコンポジションレベルとなると(step204,Yes)、デタイル制御手段114は、処理デコンポジションレベルの当該色差コンポーネントのウェーブレット係数に対する水平方向デタイル処理と垂直方向デタイル処理を係数補正手段112及びクリッピング手段113で実行させ(step205,206)、水平・垂直方向デタイル処理後のウェーブレット係数に対する2次元逆ウェーブレット変換をウェーブレット逆変換部104で実行させ(step207)、処理デコンポジションレベルを1レベル下げる(step208)。同様にして最下位のデコンポジションレベル1までの各レベルのウェーブレット係数に対し、デタイル処理及び2次元逆ウェーブレット変換を順次実行させる。
デコンポジションレベル1まで処理され、処理デコンポジションレベルが0となると(step209,Yes)、当該色差コンポーネントに対する処理を終わる。この時はcomp=2であり、ncomp−1の値と一致するため(step210,Yes)、ウェーブレット逆変換部104での処理は終了する。
図3は、水平方向デタイル処理(step205)及び垂直方向デタイル処理(step206)のフローチャートである。
水平方向デタイル処理の場合、step220で図6に示すタイル境界に隣接したハイパス係数に対するデタイルのための補正が係数補正手段112で実行され、step223で図6に示すタイル境界に隣接しない境界近傍のハイパス係数に対するデタイルのための補正が係数補正手段112で実行される。ただし、図6中のLはLL係数又はLH係数を意味し、HはHL係数又はHH係数を意味する。
垂直方向デタイル処理の場合、step220で図7に示すタイル境界に隣接したハイパス係数に対するデタイル処理のための補正が係数補正手段112で実行され、step223で図7に示すタイル境界に隣接しない境界近傍のハイパス係数に対するデタイル処理のための補正が係数補正手段112で実行される。ただし、図7中のLはLL係数又はHL係数を意味し、HはHH係数又はLH係数を意味する。
クリッピング手段113において、step222,225で、補正後の係数値が当該係数に関し量子化区間決定部115より与えられた量子化区間からはみ出たか否かをチェツクし、量子化区間からはみ出た係数値を該量子化区間の近い側の端の値に補正するクリッピング処理を実行する。
5×3ウェーブレット変換が用いられている場合、step220での係数補正式として前記式(iii)が用いられ、step223での係数補正式として前記式(iv)が用いられる。9×7ウェーブレット変換が用いられている場合、step220での係数補正式として前記式(v)が用いられ、step223での係数補正式として前記式(vi)が用いられる。また、5×3ウェーブレット変換が用いられている場合、デコンポジションレベル1ではstep223,225はスキップされる。
なお、垂直方向デタイル処理は、図21〜図28に関連して説明したウェーブレット変換手順に忠実に沿った手順で実行することも可能である。すなわち、垂直方向デタイル処理を図4に示すような手順で実行することも可能である。図4に示す手順では、水平方向の逆ウェーブレット変換処理(step230)、ハイパス係数補正処理(step231,232)、水平方向の順ウェーブレット変換処理(step223)、クリッピング処理(step235)が順に実行される。したがって、ウェーブレット逆変換部104は水平方向の順ウェーブレット変換の機能を備える必要がある。
図3と図4を比較すれば明らかなように、図3に示した垂直方向デタイル処理の手順は、図4に示した手順における水平方向の逆ウェーブレット変換と順逆ウェーブレット変換のステップが省かれているため、より高速な処理が可能である。
しかも、図3の手順によっても、図4に示した手順と同等のデタイル効果を達成できる。違いがあるとすれば、水平方向の逆ウェーブレット変換時又は順ウェーブレット変換時のフローティング誤差であり、問題となるような誤差を生じない。これについて図8により説明する。
図4に示す手順による垂直方向デタイル処理では、図8の上段に示すように、水平方向の逆ウェーブレット変換でLH係数はH係数に変換され、LL係数はL係数に変換される。垂直方向のタイル境界に隣接するH係数を近傍のH係数とL係数で補正してから水平方向の順ウェーブレット変換を行った後の、タイル境界に隣接する係数の補正値LH2は、5×3変換の場合、
LH2'=(2/3)*(LL3-LL2)+(1/3)LH1
となる。
一方、図3の手順では垂直方向のタイル境界に隣接するLH係数をそのまま補正するので、その補正値LH2"は、
LH2"=(2/3)*(LL3-LL2)+(1/3)LH1
となる。
このようにLH2'=LH2"となる。誤差が生じるとしても、水平方向の逆ウェーブレット変換時と水平方向の順ウェーブレット変換時のフロア−関数の中であるため、その誤差は概算でせいぜい1程度であり実用上問題にならない。
さて、色差コンポーネントについてのデタイル開始レベルKCを最下位のデコンポジションレベル1より低いレベル、例えば0に設定することにより、色差コンポーネントに対するデタイル処理を抑止することができる。この場合の実質的な処理フローは図5のように表すことができる。このように色差コンポーネントに対するデタイル処理を抑止するならば、デタイルのための処理時間が大幅に削減される。そして、輝度コンポーネントに比べ色差コンポーネントのデタイル処理による画質改善効果は小さいため、画質的にそれほどの不利益はなく、また、タイル境界近辺の色変わり等の副作用を確実に抑制することができる。
なお、図5に示した処理フローに従った処理のみを実行するようにデタイル処理部111を構成することも可能であり、かかる態様も本発明に包含される。
なお、全てのコンポーネントについてデタイル開始レベルから最下位レベルまでをデタイル処理の対象とするものとして説明したが、最下位レベルより上のレベルでデタイル処理を打ち切るようにすることも可能である。
また、トランケート数取得についてであるが、高圧縮率の符号化データなどでは、デタイルのために補正されるハイパス係数に関するトランケート数が取得できない場合があり得る。この場合、該ハイパス係数の量子化区間の決定に、他のハイパス係数(例えば同じサブバンドの隣接コードブロックのハイパス係数)に関し取得されたトランケート数を用いることができる。
以上に説明した本発明の画像処理装置におけるデタイル処理部111の処理手順は本発明のデタイル方法の処理手順でもあることは明らかである。よって、本発明のデタイル方法についての説明は繰り返さない。
図1に示したような本発明の画像処理装置は、パソコンなどの汎用のコンピュータや各種機器に内蔵されたマイクロコンピュータなどのコンピュータを利用して実現することも可能である。このような実現形態について図29により簡単に説明する。
図29において、401は中央演算処理ユニット(CPU)、402はメインメモリ、403はハードディスク装置、404はモニタ、405はバスである。このようなコンピュータを画像処理装置を構成する各手段として機能させるための1以上のプログラムは、例えばハードディスク装置403よりメインメモリ402にロードされ、CPU401により実行されることになる。
処理は例えば次のような流れで行われる。
(1)ハードディスク装置403に記憶されているJPEG2000の符号データが、CPU401からの命令によってメインメモリ402に読み込まれる。
(2)CPU401は、メインメモリ402上の符号化データを読み込んで復号処理を行い、その処理過程で各コンポーネントのウェーブレット係数に対するデタイル処理(係数補正及びクリッピング処理)を行う。
(3)CPU401は、再生した画像データをメインメモリ302上の別の領域に書き込む。
(4)そして、例えば、CPU401からの命令によって、再生画像データがモニタ404に画像として表示される。
このようにコンピュータを本発明の画像処理装置の各手段として機能させるプログラム(アプリケーションプログラム、デバイスドライバなど)、及び、同プログラムが記録された磁気ディスク、光ディスク、光磁気ディスク、半導体記憶素子など、コンピュータが読み取り可能な各種情報記録(記憶)媒体も本発明に包含される。
なお、コンピュータにハードウェアのJPEG2000デコーダが備えられている場合には、画像処理装置のデタイル処理部111及び量子化区間決定部115をプログラムによって実現し、それ以外の部分の機能はデコーダの機能を利用するような形態をとることも可能である。かかる実現形態も本発明に包含される。
以上に説明した本発明の実施形態ではJPEG2000の符号化データが用いられたが、タイル単位の階層的ウェーブレット変換を利用するJPEG2000以外の符号化方式による符号化データを処理する画像処理装置に対しても、さらには、タイル単位でウェーブレット変換以外の階層的周波数変換を用いる符号化方式による符号化データを扱う画像処理装置に対しても、本発明を同様に適用し得るものである。また、以上の説明から明らかなように、タイル単位の階層的ウェーブレット変換処理により生成されたウェーブレット係数、さらには、タイル単位の他の階層的周波数変換処理により生成された周波数変換係数を入力され、それを処理する画像処理装置に対しても本発明を適用可能である。