以下、本技術を実施するための形態について説明する。本技術では、フレーム内予測(イントラ予測)のモードに基づいて、エッジの連続性を考慮して直交変換の変換ブロックを設定することで、連続するエッジが複数の変換ブロックをまたぐことを防止して主観画質の向上をはかる。また、エッジが含まれない変換ブロックを増加させることによるエネルギー集中の向上をはかる。また、フレーム間予測(インター予測)においても本技術が適用可能であることを説明する。なお、説明は以下の順序で行う。
1.第1の実施の形態
1−1 画像符号化装置の構成
1−2 画像符号化装置の動作
1−3 画像復号化装置の構成
1−4 画像復号化装置の動作
2.第2の実施の形態
2−1 画像符号化装置の構成
2−2 画像符号化装置の動作
2−3 画像復号化装置の構成
2−4 画像復号化装置の動作
3.第3の実施の形態
3−1 画像符号化装置の構成
3−2 画像符号化装置の動作
3−3 画像復号化装置の構成
3−4 画像復号化装置の動作
<1.第1の実施の形態>
[1−1.画像符号化装置の構成]
図1は、第1の実施の形態における画像符号化装置の構成を示している。画像符号化装置10は、演算部11、処理選択スイッチ12、第1変換部13、第2変換部14、第1量子化部15、第2量子化部16、エントロピー符号化部17を備えている。また、画像符号化装置10は、処理選択スイッチ18、第1逆量子化部19、第2逆量子化部20、第1逆変換部21、第2逆変換部22、演算部23、参照メモリ24、予測部25を備えている。さらに、画像符号化装置10は、参照画像エッジ検出部31と変換ブロック設定部32、および符号化制御部40を備えている。
演算部11は、入力画像信号DS1から後述する予測部25で生成された予測画像信号DS18を減算することで、入力画像に対する予測画像の予測誤差を算出して、予測誤差を示す予測誤差信号DS2を処理選択スイッチ12へ出力する。
処理選択スイッチ12は、符号化制御部40から供給された変換情報DS40に基づいてスイッチ切り替えを行い、予測誤差信号DS2を第1量子化部15または第2量子化部16に出力する。
第1変換部13は、図2の(A)に示すように、水平垂直DCT部131を備えている。水平垂直DCT部131は、処理選択スイッチ12から供給された予測誤差信号DS2の水平垂直DCTを行う。また、水平垂直DCT部131は、後述する変換ブロック設定部32から供給された変換ブロック設定情報DS32に基づき、水平垂直DCTを行う変換ブロックを設定する。水平垂直DCT部131は、水平垂直DCTを行うことにより得られた変換係数DS3を第1量子化部15に出力する。
第1量子化部15は、図2の(B)に示すように、水平垂直量子化部151を備えている。水平垂直量子化部151は、第1変換部13から出力された変換係数DS3の量子化を行う。また、水平垂直量子化部151は、量子化を行うことにより得られた量子化データDS5をエントロピー符号化部17と処理選択スイッチ18に出力する。
第2変換部14は、斜め方向の予測方向毎に設けたDCT部と、予測方向に対応したDCT部を選択するためのパターン選択スイッチを備えている。例えば、後述する図10を用いた説明のように、フレーム内予測モードにおいて、予測方向が斜め方向である予測モード3から予測モード8までの6つのモードが設けられているとする。この場合、第2変換部14は、図3に示すように、予測モード3の斜め方向に対応する第1斜め方向パターンDCT部141、・・・予測モード8の斜め方向に対応する第6斜め方向パターンDCT部146を備えている。また、第2変換部14は、予測モードに応じたDCT部を選択するためのパターン選択スイッチ140を備えている。
パターン選択スイッチ140は、処理選択スイッチ12から供給された予測誤差信号DS2を、後述する予測部25からの予測モード情報DS20に基づき、第1斜め方向パターンDCT部141〜第6斜め方向パターンDCT部146のいずれかに供給する。例えば、パターン選択スイッチ140は、予測モード情報DS20が予測モード3であることを示している場合、予測モード3の斜め方向に対応する第1斜め方向パターンDCT部141に予測誤差信号DS2を供給する。また、パターン選択スイッチ140は、予測モード情報DS20が予測モード8であることを示している場合、予測モード8の斜め方向に対応する第6斜め方向パターンDCT部146に予測誤差信号DS2を供給する。
第1斜め方向パターンDCT部141は、パターン選択スイッチ140を介して供給された予測誤差信号DS2に対して予測方向に応じたDCTを行う。また、第1斜め方向パターンDCT部141は、後述する変換ブロック設定部32から供給された変換ブロック設定情報DS32に基づき、DCTの変換ブロックを設定する。第1斜め方向パターンDCT部141は、DCTを行うことにより得られた変換係数DS4を第2量子化部16に出力する。また、第2斜め方向パターンDCT部142〜第6斜め方向パターンDCT部146も同様に、予測誤差信号DS2に対して予測方向に応じたDCTを行い、得られた変換係数DS4を第2量子化部16に出力する。このように、第2変換部14は、第1斜め方向パターンDCT部141〜第6斜め方向パターンDCT部146を予測モード情報DS20に基づき選択的に用いて、変換ブロック設定情報DS32に基づいた変換ブロック毎に予測モードに応じたDCTを行う。
第2量子化部16は、斜め方向の予測方向毎に設けた量子化部と、予測方向に対応した量子化部を選択するためのパターン選択スイッチを備えている。例えば、予測方向が斜め方向である予測モード3から予測モード8までの6つのモードが設けられているとする。この場合、第2量子化部16は、図4に示すように、予測モード3の斜め方向に対応する第1斜め方向パターン量子化部161、・・・、予測モード8の斜め方向に対応する第6斜め方向パターン量子化部166を備えている。また、第2量子化部16は、予測モードに応じた量子化部を選択するためのパターン選択スイッチ160を備えている。
パターン選択スイッチ160は、第2変換部14から供給された変換係数DS4を、予測部25からの予測モード情報DS20に基づき、第1斜め方向パターン量子化部161〜第6斜め方向パターン量子化部166のいずれかに供給する。例えば、パターン選択スイッチ160は、予測モード情報DS20が予測モード3を示す場合、予測モード3に対応する第1斜め方向パターン量子化部161に、第2変換部14の第1斜め方向パターンDCT部141で得られた変換係数DS4を供給する。また、パターン選択スイッチ160は、予測モード情報DS20が予測モード8を示す場合、予測モード8の斜め方向に対応する第6斜め方向パターン量子化部166に、第2変換部14の第6斜め方向パターンDCT部146で得られた変換係数DS4を供給する。
第1斜め方向パターン量子化部161は、第2変換部14の第1斜め方向パターンDCT部141からパターン選択スイッチ160を介して供給された変換係数DS4の量子化を行う。また、第1斜め方向パターン量子化部161は、後述する変換ブロック設定部32から供給された変換ブロック設定情報DS32に基づき、変換ブロック毎の変換係数DS4を量子化する。第1斜め方向パターン量子化部161は、量子化を行うことにより得られた量子化データDS6をエントロピー符号化部17と処理選択スイッチ18に出力する。第2斜め方向パターン量子化部162〜第6斜め方向パターン量子化部166も同様に、予測方向に応じたDCTで得られた変換係数DS4を、変換ブロック毎に量子化して、量子化データDS6をエントロピー符号化部17と処理選択スイッチ18に出力する。このように、第2量子化部16は、第2変換部14で予測方向に応じてDCTが行われた変換係数を、予測方向毎にDCTのブロック毎に量子化する。
図1のエントロピー符号化部17は、第1量子化部15から供給された量子化データDS5または第2量子化部16から供給された量子化データDS6のエントロピー符号化を行う。また、エントロピー符号化部17は、後述する予測部25で生成された予測モード情報DS20や符号化制御部40で生成された変換情報DS40等のエントロピー符号化を行う。エントロピー符号化部17は、エントロピー符号化を行うことにより得られた符号化データDSCを出力する。
処理選択スイッチ18は、符号化制御部40から供給された変換情報DS40に基づいて逆変換方法の選択を行い、第1量子化部15からの量子化データDS5を第1逆量子化部19、第2量子化部16からの量子化データDS6を第2逆量子化部20に出力する。
第1逆量子化部19は、図5の(A)に示すように、水平垂直逆量子化部191を備えている。水平垂直逆量子化部191は、処理選択スイッチ18を介して供給された量子化データDS5の逆量子化を行う。また、水平垂直逆量子化部191は、変換ブロック設定部32から供給された変換ブロック設定情報DS32に基づき、第1量子化部15と対応した変換ブロック毎に量子化データの逆量子化を行う。第1逆量子化部19は、逆量子化を行うことにより得られた変換係数DS11を第1逆変換部21に出力する。
第1逆変換部21は、図5の(B)に示すように、水平垂直逆DCT部211を備えている。水平垂直逆DCT部211は、第1逆量子化部19から供給された変換係数DS11に対して、第1変換部13における水平垂直方向のDCTに対応する水平垂直方向の逆DCTを行う。水平垂直逆DCT部211は、逆DCT変換を行うことにより得られた予測誤差信号DS13を演算部23に出力する。
第2逆量子化部20は、第2量子化部16で行われた量子化に対応する逆量子化を行うように構成されている。例えば第2逆量子化部20は、図6に示すように、パターン選択スイッチ200と第1斜め方向パターン逆量子化部201〜第6斜め方向パターン逆量子化部206を備えている。
パターン選択スイッチ200は、処理選択スイッチ18を介して供給された量子化データDS6を、予測部25からの予測モード情報DS20に基づき、第1斜め方向パターン逆量子化部201〜第6斜め方向パターン逆量子化部206のいずれかに供給する。例えば、パターン選択スイッチ200は、予測モード情報DS20が予測モード3を示している場合、予測モード3に対応する第1斜め方向パターン逆量子化部201に、第2量子化部16の第1斜め方向パターン量子化部161で得られた量子化データDS6を供給する。同様に、パターン選択スイッチ200は、予測モード情報DS20が予測モード8を示している場合、予測モード8に対応する第6斜め方向パターン逆量子化部206に、第2量子化部16の第6斜め方向パターン量子化部166で得られた量子化データDS6を供給する。
第1斜め方向パターン逆量子化部201は、パターン選択スイッチ200を介して供給された量子化データDS6に対して、第2量子化部16における第1斜め方向パターン量子化部161の量子化に対応する逆量子化を行う。また、第1斜め方向パターン逆量子化部201は、変換ブロック設定部32から供給された変換ブロック設定情報DS32に基づき、第2量子化部16と対応した変換ブロック毎に量子化データの逆量子化を行う。第1斜め方向パターン逆量子化部201は、逆量子化を行うことにより得られた変換係数DS12を第2逆変換部22に出力する。また、第2斜め方向パターン逆量子化部202〜第6斜め方向パターン逆量子化部206も同様に、供給された量子化データDS6の逆量子化を行い、得られた変換係数DS12を第2逆変換部22に出力する。このように、第2逆量子化部20は、第2量子化部16の量子化と対応させて逆量子化を行う。
第2逆変換部22は、第2変換部14で行われたDCTに対応する逆DCTを行うように構成されている。例えば第2逆変換部22は、図7に示すように、パターン選択スイッチ220と第1斜め方向パターン逆DCT部221〜第6斜め方向パターン逆DCT部226を備えている。
パターン選択スイッチ220は、第2逆量子化部20から供給された変換係数DS12を、予測部25からの予測モード情報DS20に基づき、第1斜め方向パターン逆DCT部221〜第6斜め方向パターン逆DCT部226のいずれかに供給する。例えば、パターン選択スイッチ220は、予測モード情報DS20が予測モード3を示している場合、予測モード3に対応する第1斜め方向パターン逆DCT部221に、第2逆量子化部20の第1斜め方向パターン逆量子化部201で得られた変換係数DS12を供給する。同様に、パターン選択スイッチ200は、予測モード情報DS20が予測モード8を示している場合、予測モード8に対応する第6斜め方向パターン逆DCT部226に、第2逆量子化部20の第6斜め方向パターン逆量子化部206で得られた変換係数DS12を供給する。
第1斜め方向パターン逆DCT部221は、パターン選択スイッチ220を介して供給された変換係数DS12に対して、第2変換部14における第1斜め方向パターンDCT部141のDCTに対応する逆DCTを行う。第1斜め方向パターン逆DCT部221は、変換ブロック設定部32から供給された変換ブロック設定情報DS32に基づき、第2変換部14と対応した変換ブロック毎に変換係数の逆DCTを行う。第1斜め方向パターン逆DCT部221は、逆DCTを行うことにより得られた予測誤差信号DS14を演算部23に出力する。また、第1斜め方向パターン逆DCT部222〜第1斜め方向パターン逆DCT部226も同様に、供給された変換係数DS12の逆量子化を行い、得られた予測誤差信号DS14を第2逆変換部22に出力する。このように、第2逆変換部22は、第2変換部14における予測方向に応じたDCTと対応する逆DCTを行う。
演算部23は、第1逆変換部21から供給された予測誤差信号DS13、または第2逆変換部22から供給された予測誤差信号DS14に、予測部25で生成された予測画像信号DS18を加算して、参照画像信号DS15を生成する。演算部23は、生成した参照画像信号DS15を参照メモリ24に記憶させる。
参照メモリ24に記憶されている参照画像信号DS15は、予測部25と参照画像エッジ検出部31に供給される。
予測部25は、参照画像信号DS15を用いて予測モード毎にフレーム内予測を行う。また、予測部25は、符号化効率が最も高くなる予測モードを判別して、符号化効率が最も高くなる予測モードを示す予測モード情報DS20を生成する。予測部25は、生成した予測モード情報DS20を第2変換部14、第2量子化部16、第2逆量子化部20、第2逆変換部、および変換ブロック設定部32に出力する。さらに、予測部25は、符号化効率が最も高くなる予測モードで予測画像信号DS18を生成して、演算部11,23に出力する。
参照画像エッジ検出部31は、参照メモリ24に記憶されている符号化済み隣接ブロックの画像信号を用いてエッジ検出を行い、エッジの位置とエッジの強度(濃度変化の急峻さ)を示す指標DS31を変換ブロック設定部32に出力する。
変換ブロック設定部32は、参照画像エッジ検出部31から供給された指標DS31と予測部25から供給された予測モード情報DS20に基づき、符号化対象のサブブロック内におけるエッジの連続性を推定する。変換ブロック設定部32は、推定結果から符号化対象のサブブロックの分割を行い、直交変換および量子化における変換ブロックを設定して、この設定した変換ブロックを示す変換ブロック設定情報DS32を生成する。変換ブロック設定部32は、生成した変換ブロック設定情報DS32を、第1変換部13、第2変換部14、第1量子化部15、第2量子化部16、第1逆量子化部19、第2逆量子化部20、第1逆変換部21、第2逆変換部22に出力する。
符号化制御部40は、変換情報DS40を生成する。変換情報DS40は、直交変換に関して水平垂直DCTや水平垂直量子化を行う処理と、予測モード情報DS20が示す予測方向に沿って1次元DCTや量子化を行う処理のいずれかを選択するための情報である。符号化制御部40は、生成した変換情報DS40を処理選択スイッチ12,エントロピー符号化部17,処理選択スイッチ18に出力する。
[1−2.画像符号化装置の動作]
次に、画像符号化装置の動作について説明する。例えばH.264/AVC方式のフレーム内予測における輝度信号においては、図8の(A)に示すように、符号化対象フレームに複数のマクロブロックが設けられている。図8の(B)は、16個の4×4画素のサブブロックを持つマクロブロックを示している、図8の(C)は、4個の8×8画素のサブブロックを持つマクロブロックを示している。図8の(D)は、1個の16×16画素サブブロックを持つマクロブロックを示している。
また、H.264/AVC方式では、16×16画素のサブブロックについての予測モードとして、予測モード0〜予測モード3の4つモードが設定されている。また、8×8画素のサブブロックについての予測モードとして、予測モード0〜予測モード8の9つの予測モードが設定されている。さらに、4×4画素のサブブロックについての予測モードとして、予測モード0〜予測モード8の9つの予測モードが設定されている。
図9は、例えば4×4画素のサブブロックに属する画素a〜pと、サブブロックの左側と左上側と上側と右上側に隣接するブロックにおいて、サブブロックと隣接する画素A〜Mの位置関係を説明するための図である。
図10は、フレーム内予測における4×4画素の予測モードを示している。なお、図10において矢印は予測方向を示している。図10の(A)は予測モード0(vertical)を示している。予測モード0は、垂直方向に隣接する参照画素(reference pixel)A〜Dから予測値を生成するモードである。図10の(B)は予測モード1(horizontal)を示している。予測モード1は、矢印で示すように、水平方向に隣接する参照画素I〜Lより予測値を生成するモードである。図10の(C)は予測モード2(DC)を示している。予測モード2は、13個の参照画素A〜Mのうち、このブロックの垂直方向および水平方向に隣接する参照画素A〜DおよびI〜Lより予測値を生成するモードである。
図10の(D)は予測モード3(diagonal down-left)を示している。予測モード3は、13個の参照画素A〜Mのうち、水平方向に連続する参照画素A〜Hより予測値を生成するモードである。図10の(E)は予測モード4(diagonal down-right)を示している。予測モード4は、13個の参照画素A〜Mのうち、当該ブロックに隣接する参照画素A〜D、I〜Mとにより予測値を生成するモードである。図10の(F)は予測モード5(vertical-right)を示している。予測モード5は、13個の参照画素A〜Mのうち、当該ブロックに隣接する参照画素A〜D、I〜Mとにより予測値を生成するモードである。
図10の(G)は予測モード6(horizontal-down)を示している。予測モード6は、予測モード4および予測モード5と同様に、13個の参照画素A〜Mのうち、当該ブロックに隣接する参照画素A〜D、I〜Mにより予測値を生成するモードである。図10の(H)は予測モード7(vertical-left)を示している。予測モード7は、13個の参照画素A〜Mのうち、当該ブロックの上方に隣接する4個の参照画素A〜Dと、この4個の参照画素A〜Dに続く4個の参照画素E〜Gとにより予測値を生成するモードである。図10の(I)は予測モード8(horizontal-up)を示している。予測モード8は、13個の参照画素A〜Mのうち、当該ブロックの左方に隣接する4個の参照画素I〜Lにより予測値を生成するモードである。
予測部25は、上述の各予測モードで予測画像信号DS18を生成する。また、符号化制御部40は、予測部25で選択された予測モードに応じて変換情報DS40を生成する。例えば直交変換に関して水平垂直DCTや水平垂直量子化を行う処理と、予測モード情報DS20が示す予測方向に沿って1次元DCTや量子化を行う処理のいずれかを選択するための情報である変換情報DS40を生成する。
処理選択スイッチ12は、変換情報DS40で水平垂直方向の予測モードであることが示された場合、水平垂直方向のDCTを行うように、予測誤差信号DS2を第1変換部13に供給する。また、処理選択スイッチ12は、変換情報DS40で斜め方向予測モードであることが示された場合、予測方向に沿って1次元DCTを行うように、予測誤差信号DS2を第2変換部14に供給する。
処理選択スイッチ18は、変換情報DS40が水平垂直方向の予測モードであることを示す場合、水平垂直方向のDCTや量子化によって得られた量子化データに対して対応する逆量子化や逆変換を行うため、量子化データDS5を第1逆量子化部19に供給する。処理選択スイッチ18は、変換情報DS40が斜め方向予測モードであることが示す場合、斜め方向の1次元DCTや量子化によって得られた量子化データに対して、対応する逆量子化や逆変換を行うため、量子化データDS6を第2逆量子化部20に供給する。
ここで、符号化効率が最も高い予測モードの判定について説明する。予測部25は、各予測モードで符号化処理を行い、その結果得られた符号化コストが最小となる予測モードを最適モードと判定する。具体的には、式(1)を用いて符号化コストKを算出して、符号化コストKが最小となる予測モードを最適モードとする。
K=SAD+λ×OH ・・・(1)
なお、差分誤差SADは、予測モードに規定された予測方法で生成された予測画像信号と入力画像信号との差分値の絶対値である。サイド情報OHは、その予測モードを用いたときに必要となる種々の情報量である。係数λは、ラグランジュ乗数である。
また、最適モードの判定では、サイド情報と差分値の絶対値を用いる場合に限らず、モード情報のみ、予測誤差信号の絶対和のみを用いてモードを判定してもよいし、これらをアダマール変換したり、近似した値を利用したりしてもよい。また、入力画像のアクティビティを用いて符号化コストKを求めるようにしてもよいし、量子化スケールを利用して符号化コストを求めるようにしてもよい。
符号化コストKは、式(2)を用いて算出することもできる。
K=D+λ×R ・・・(2)
なお、符号化歪Dは、入力画像信号と局部復号画像信号の二乗誤差を示す。符号量Rは、仮符号化によって見積もられた符号量である。また、係数λは、量子化パラメータに基づいて決定される定数である。
式(2)を用いて符号化コストを算出する場合、画像符号化装置10は、モード毎にエントロピー符号化と局部復号(逆量子化や逆変換処理を含む)が必要となる。したがって、回路規模は増大するが、正確な符号量と符号化歪を用いることが可能となり、符号化効率を高く維持することが可能である。
次に、予測方向に沿った1次元DCTの方法について、H.264/AVC方式で行われているDCTについて説明する。4×4画素のサブブロックに対して、入力画像信号をX、変換行列をTとすると、変換係数Cは式(3)に従って求められる。
すなわち、入力画像信号に対して、変換行列Tを用いて、水平方向に1次元DCTをかけた後、変換行列Tの転置行列Ttを用いて、垂直方向に1次元DCTをかけている。また、この演算は、8×8画素のサブブロックに対しても同様である。
次に、H.264/AVC方式で定められているフレーム内予測の9種類の予測モード中から、予測モード0(vertical)と予測モード1(horizontal)および予測モード2(DC)の3種類を除いた6方向の予測モードについては、予測方向に沿ったDCTを行う。
以下、図9に示す4×4画素のサブブロックについて、予測方向に沿ったDCTを行う場合を説明する。例えば予測モード3の場合、サブブロック内の画素を、予測方向に沿って、(a)、(b,e)、(c,f,i)、(d,g,j,m)、(h,k,n)、(l,o)、(p)の7組に画素をまとめる。
図11の(A)は、1次元DCTを行う画素列の組み合わせを示している。変換係数をF(u)とすると、4×4画素のブロックの対角線にある画素列(d,g,j,m)に関しては、基底長4の1次元DCTが行われる。
式(4)は基底長を「N」としたときの変換係数F(u)を示している。
画素列(d,g,j,m)に関して変換係数F(u)を求める場合、基底長「N=4」、「f(0)=d,f(1)=g,f(2)=j,f(3)=m」として、式(4)の演算を行うことで、変換係数F(u)を求めることができる。
画素列(c,f,i)に関して変換係数F(u)を求める場合、基底長「N=3」、「f(0)=c,f(1)=f,f(2)=i」として、式(4)の演算を行うことで、変換係数F(u)を求めることができる。
画素(a)と画素列(b,e)については、画素を折り返し結合して変換係数F(u)を求める。この場合、基底長「N=3」、「f(0)=b,f(1)=e,f(2)=a、またはf(0)=e, f(1)=b, f(2)=a」として、式(4)の演算を行うことで、変換係数F(u)を求めることができる。
図11の(B)は、画素を折り返し結合せずに1次元DCTを行う場合を示している。画素列(d,g,j,m)、(e,f,i)に関しては図11の(A)と同様であるが、画素列(b,e)と画素(a)に関して、画素を折り返し結合せずそれぞれに対して1次元DCTを行う。すなわち、画素列(b,e)に関して変換係数F(u)を求める場合、基底長「N=2」、「f(0)=b,f(1)=e」として、式(4)の演算を行うことで、変換係数F(u)を求めることができる。また、画素(a)に関して変換係数F(u)を求める場合、基底長「N=1」、「f(0)=a」として、式(4)の演算を行うことで、変換係数F(u)を求めることができる。
図11の(C)は、画素列(c,f,i)、(e,b)と画素(a)を全て折り返し結合して1次元DCTを行う場合を示している。画素列(d,g,j,m)に関しては図11の(A)と同様であるが、画素列(c,f,i)、(e,b)と画素(a)に関しては、各画素を折り返し結合させて1次元DCTを行う。すなわち、画素列(c,f,i,e,b,a)に関して変換係数F(u)を求める場合、基底長「N=6」、「f(0)=c,f(1)=f,f(2)=i,f(3)=e,f(4)=b,f(5)=a、またはf(0)=i,f(1)=f,f(2)=c,f(3)=b,f(4)=e,f(5)=a」として、式(4)の演算を行うことで、変換係数F(u)を求めることができる。なお、画素列(h,k,n)、(l,e)と画素(p)についても同様にして、変換係数F(u)を求めることができる。
また、予測モード4の場合は、予測モード3の予測方向を左右反転したものと考えられるので、予測モード3の時と同様にしてDCT演算を行うことが可能である。
次に、予測モード5〜8に対応するDCT演算方法を説明する。予測モード5の場合、サブブロック内の画素を、予測方向に沿って、(a,e,j,n)、(b,f,k,o)、(c,g,l,p)、(i,m)、(d,h)の5組の画素列をまとめる。1次元DCTをかける画素列の組み合わせを図12の(A)に示す。画素列(a,e,j,n)に関して変換係数F(u)を求める場合、基底長「N=4」、「f(0)=a,f(1)=e,f(2)=j,f(3)=n」として、式(4)の演算を行うことで、変換係数F(u)を求めることができる。また、画素列(b,f,k,o)、(c,g,l,p)に関しても同様に演算を行うことで変換係数F(u)を求めることができる。
画素列(i,m)に関して変換係数F(u)を求める場合、基底長「N=3」、「f(0)=i,f(1)=m」として、式(4)の演算を行うことで、変換係数F(u)を求めることができる。また、画素列(d,h)に関しても同様に演算を行うことで変換係数F(u)を求めることができる。
また、予測モード5に対応したDCT演算の別の例として、画素を折り返し合わせて1次DCTを行う方法が考えられる。この時の1次元DCTをかける画素列の組み合わせを図12の(B)に示す。画素列(b,f,k,o)に関しては上述の1次元DCTと同様であるが、画素列(a,e,j,n)、(m,i)と画素列(p,l,g,c)、(d,h)に関しては、画素を折り返し結合して1次元DCTを行う。すなわち、画素列(a,e,j,n,m,i)に関して変換係数F(u)を求める場合、基底長「N=6」、「f(0)=a,f(1)=e,f(2)=j,f(3)=n,f(4)=m,f(5)=i」として、式(4)の演算を行うことで、変換係数F(u)を求めることができる。また、画素列(p,l,g,c)、(d,h)に関しても同様に演算を行うことで変換係数F(u)を求めることができる。
予測モード6〜8の場合は、予測モード5の予測方向を回転または反転したものと考えられるので、予測モード5の時と同様にしてDCT演算を行うことが可能である。
また、符号化対象のサブブロックのブロックサイズは、4×4画素よりも小さいサイズのブロックや、4×4画素よりも大きいサイズのブロックをサブブロックとして符号化処理を行うことも可能である。また、DCT演算は、実数DCT演算に限らず整数演算でDCTを行うことも可能である。
図13,図14は、第1の実施の形態における画像符号化装置10の動作を示すフローチャートである。なお、符号化処理では、図10に示す予測モード0〜予測モード8が設けられているとする。
ステップST1で画像符号化装置10は、入力画像を取得する。画像符号化装置10は、入力画像信号DS1を取得して、マクロブロック毎またはマクロブロックペア毎に符号化を開始する。
ステップST2で画像符号化装置10は、サブブロックに関する初期化を行う。画像符号化装置10は、サブブロックのインデックスsub_blkを初期化して「sub_blk=0」とし、同時に最大サブブロック数MAX_SUB_BLKをセットしてステップST3に進む。
ステップST3で画像符号化装置10は、サブブロックのインデックスsub_blkが最大サブブロック数MAX_SUB_BLKより小さいか判別する。画像符号化装置10は、サブブロックのインデックスsub_blkが最大サブブロック数MAX_SUB_BLKより小さい場合、マクロブロック内のサブブロックにまだ符号化していないサブブロックが存在することからステップST4に進む。画像符号化装置10は、サブブロックのインデックスsub_blkが最大サブブロック数MAX_SUB_BLKより小さくない場合、マクロブロック内のサブブロックに符号化していないサブブロックは存在しないことからステップST22に進む。
ステップST4で画像符号化装置10は、予測モードに関する初期化を行う。画像符号化装置10は、予測モードのインデックスmode_idxを初期化して「mode_idx=0」とし、選択されうる最大モード数MAX_MODEをセットする。例えば、予測モード0〜予測モード8の9つの予測モードが設けられている場合、「MAX_MODE=9」とする。なお、予測モードのインデックスmode_idx=0は予測モード0に対応する。同様に、インデックスmode_idx=1〜8は予測モード1〜予測モード8に対応する。
ステップST5で画像符号化装置10は、予測モードのインデックスmode_idxが最大モード数MAX_MODEよりも小さいか判別する。画像符号化装置10は、予測モードのインデックスmode_idxが最大モード数MAX_MODEよりも小さい場合、全てのフレーム内予測モードが試されていないことからステップST6に進む。画像符号化装置10は、予測モードのインデックスmode_idxが最大モード数MAX_MODEよりも小さくない場合、全てのフレーム内予測モードが試されたことからステップST21に進む。
ステップST6で画像符号化装置10は変換情報trans_idxをセットする。画像符号化装置10は、予測モードのインデックスmode_idxの値に応じて変換情報trans_idxをセットする。画像符号化装置10は、予測モードのインデックスmode_idxが斜め方向予測モード(予測モード3〜予測モード8)を示している場合、変換情報trans_idxを「trans_idx=0」にセットしてステップST7に進む。また、画像符号化装置10は、非斜め方向の予測モード(予測モード0〜予測モード2)を示している場合、変換情報trans_idxを「trans_idx=1」にセットしてステップST7に進む。
ステップST7で画像符号化装置10は、インデックスmode_idxの予測モードで予測画像信号を生成する。画像符号化装置10は、インデックスmode_idxで示された予測モードの予測画像信号を、参照画像の画像信号を用いて生成してステップST8に進む。
ステップST8で画像符号化装置10は、予測誤差信号を生成する。画像符号化装置10は、生成されたインデックスmode_idxの予測モードの予測画像信号DS18と入力画像信号DS1との差分を算出することで、予測誤差信号DS2を生成してステップST9に進む。
ステップST9で画像符号化装置10は、エッジ検出を行う。画像符号化装置10は、記憶されている参照画像の画像信号(符号化済み隣接ブロックの画像信号)を用いてエッジ検出を行い、エッジの位置とエッジの強度を示す指標DS31を生成してステップST10に進む。
ステップST10で画像符号化装置10は、変換ブロックを設定する。画像符号化装置10は、エッジの位置とエッジの強度を示す指標DS31およびインデックスmode_idxで示される予測モードの方向に基づいて、符号化対象のサブブロック内におけるエッジの連続性を推定する。さらに、画像符号化装置10は、推定結果に基づき変換ブロックを設定して変換ブロック設定情報DS32の生成を行いステップST11に進む。
ステップST11で画像符号化装置10は、予測モードのインデックスmode_idxが、斜め方向予測モードのモード番号のうち最小値である斜め方向予測モードの最小モード番号mode_directionよりも小さいか、または変換情報が「trans_idx=1」かどうかを判別する。画像符号化装置10は、予測モードのインデックスmode_idxが最小モード番号mode_directionよりも小さい場合、または変換情報「trans_idx=1」の場合の少なくともいずれかの場合にステップST12に進む。また、画像符号化装置10は、他の場合にステップST14に進む。
ステップST12で画像符号化装置10は、水平垂直DCTを行いステップST13に進む。ステップST13で画像符号化装置10は、水平垂直量子化を行いステップST16に進む。画像符号化装置10は、例えば処理選択スイッチ12を第1変換部13側に切り替えて、第1変換部13と第1量子化部15を用いてDCTと量子化を行う。
ステップST14で画像符号化装置10は、斜め方向パターンDCTを行いステップST15に進む。ステップST15で画像符号化装置10は、斜め方向パターン量子化を行いステップST16に進む。画像符号化装置10は、例えば処理選択スイッチ12を第2変換部14側に切り替える。また、画像符号化装置10は、第2変換部14のパターン選択スイッチ140と第2量子化部16のパターン選択スイッチ160を予測モードのインデックスmode_idxに従って切り替える。画像符号化装置10は、インデックスmode_idxに従ってスイッチを切り替えることで、予測方向に対応した斜め方向パターンDCT部と斜め方向パターン量子化部を用いてDCTと量子化を行う。
ステップST16で画像符号化装置10は、エントロピー符号化を行う。画像符号化装置10は、量子化データDS5,DS6と予測モード情報DS20および変換情報DS40をエントロピー符号化してステップST17に進む。
ステップST17で画像符号化装置10は、予測モードの符号化コストを保存する。画像符号化装置10は、上述のようにコスト値Kの算出を行い、算出したコスト値Kを保存してステップST18に進む。
ステップST18で画像符号化装置10は、変換情報trans_idxが「trans_idx=0」であるか判別する。画像符号化装置10は、変換情報trans_idxが「trans_idx=0」である場合、ステップST19に進み、変換情報trans_idxが「trans_idx=0」でない場合、ステップST20に進む。
ステップST19で画像符号化装置10は、変換情報trans_idxに「1」を加算して、新たな変換情報trans_idxとしてステップST11に戻る。
ステップST20で画像符号化装置10は、予測モードのインデックスmode_idxに「1」を加算して、新たな変換情報trans_idxに「1」を加算して、新たなインデックスmode_idxとしてステップST5に戻る。
以下同様にしてステップST5からの処理を繰り返すことで、サブブロックについて可能な全ての予測モードで符号化コストを算出する。
その後、画像符号化装置10は、ステップST5で予測モードのインデックスmode_idxが最大モード数MAX_MODE以下でないと判定するとステップST21に進む。ステップST21で画像符号化装置10は、サブブロックのインデックスsub_blkに「1」を加算して、新たなインデックスsub_blkとしてステップST3に戻る。
また、画像符号化装置10は、ステップST3でサブブロックのインデックスsub_blkが最大モード数MAX_MODE以下でないと判定してステップST22に進むと、サブブロック毎の最適モードのデータをロードする。画像符号化装置10は、サブブロック毎に求められた各モードの符号化コストを比較し、各サブブロックにおける最適モードのデータをロードしてステップST23に進む。また、画像符号化装置10は、最適モードを示す予測モード情報DS20を生成する。
ステップST23で画像符号化装置10は、最適モードで符号化を行った符号化データをマクロブロックで多重化して送出する。また、画像符号化装置10は、符号化データに予測モード情報DS20すなわち最適モードのインデックスmode_idxと変換情報DS40すなわち変換情報trans_idxをエントロピー符号化して符号化データに含める。
次に、参照画像エッジ検出部31の動作について図15を用いて説明する。図15の(A)は、符号化対象のサブブロックサイズが16×16画素である場合を示している。同図中の斜線で示している個所は、参照メモリ24に記憶されている符号化済み隣接ブロックの垂直1ライン、水平1ラインの信号である。参照画像エッジ検出部31は、斜線部で示す隣接する垂直および水平の各1ラインの信号のエッジを検出し、エッジの位置とエッジの強度を示す指標を出力する。例えば、1次元のSobelフィルタを施し、その結果得られる信号を出力する。Sobelフィルタを施した結果得られる信号は、エッジの位置もエッジの強度の情報も持ち合わせている。Sobelフィルタを施した結果得られる信号のイメージを図15の(B)に示す。なお、説明を簡単にするために、多値である信号を便宜上白と黒で示し、黒で示した場所にエッジがあることを意味している。ここで、エッジの位置とエッジの強度を示す指標のフォーマットは、フィルタの結果得られる信号でなくてもよい。例えば、エッジの位置の有無を示すフラグと、エッジがある位置のみのエッジの強度を示す点数形式のデータなどを得てもよい。また、エッジの位置とエッジの強度を示す指標が得られれば、その算出にはどのような方法を用いてもよい。例えば、Prewittフィルタやラプラシアンフィルタを用いたり、フィルタ以外の数学的、物理的な方法などを用いてもよい。
また、図15の(A)(B)では、符号化対象のサブブロックに隣接する垂直および水平の各1ラインの信号のエッジの位置とエッジの強度を示す指標を得たが、これに限らず、図15の(C)(D)に示すように複数のラインを用いてもよい。さらに、サブブロックのサイズが16×16画素と異なるサイズであっても同様の処理を適用することがでる。例えば、図15の(E)(F)に示すように8×8画素の場合も同様の処理を適用できる。
次に、変換ブロック設定部32の動作について図16を用いて説明する。図16の(A)は、符号化対象のサブブロックのブロックサイズが16×16画素である場合を示している。変換ブロック設定部32は、エッジの位置やエッジの強度を示す情報と予測モード情報DS20に基づいてサブブロックの分割を行い、変換ブロックを設定する。変換ブロック設定部32は、エッジの位置と予測モード情報DS20に基づき、符号化対象のサブブロック内におけるエッジの連続性を推定する。例えば、参照画像エッジ検出部31は、隣接ブロックの垂直、水平ラインにSobelフィルタをかけて検出したエッジが、図16の(A)に示すように予測モード情報DS20の示す予測方向に連続していると推定する。なお、図16の(A)では、予測モード情報DS20が予測モード5を示していた場合のエッジ連続性を推定した結果を示している。また、図では、説明を簡単にするため多値の信号を便宜上白と黒で示し、黒の部分がエッジを意味している。
また、図16の(B)に示すように、隣接ブロックで、エッジの位置と強度が複数ラインで検出されてエッジの方向が推定できる場合、予測モードと隣接ブロックのエッジの方向から、より適切と考えられる方向にエッジがあると推定する。例えば、予測モードの信頼性と隣接ブロックのエッジの方向の信頼性を数値化し、それらの数値の高い方を採用する。信頼性の数値化は、例えば、エッジの強度が大きい場合は、より隣接ブロックのエッジの信頼性を高くするなどの方法が挙げられる。そして、その数値が閾値を超えた場合に隣接ブロックのエッジの方向を採用する、などである。図16の(B)では、予測モードのモード5よりも隣接ブロックのエッジの方向を採用した例を示している。
次に、変換ブロック設定部32は、推定したエッジの連続性を考慮して、符号化対象のサブブロックの分割を行い、直交変換の変換ブロックを設定する。ここで、符号化対象のサブブロックの分割は、符号化効率の観点から、エッジにかからない範囲が可能な限り広くなるように複数の変換ブロックに分割することが望ましい。したがって、変換ブロック設定部32は、図16の(C)に示すように、分割後のブロック間の境界にエッジが含まれないように、符号化対象のサブブロックを水平・垂直に分割する。例えば、変換ブロック設定部32は、連続するエッジの終端部を見つけ、そこに接するように分割の境界を決定する。変換ブロック設定部32は、分割後のブロックを直交変換の単位である変換ブロックとして、変換ブロックを示す変換ブロック設定情報DS32を生成する。
また、サブブロックの分割では、複数のエッジが検出されて、変換ブロックの境界がエッジにかからないように分割することができない場合もある。その場合、変換ブロック設定部32は、エッジの強度を示す指標から、ブロック境界にかからないようにするエッジの優先順位を決める。例えば、変換ブロック設定部32は、Sobelフィルタのフィルタ処理によって得られた信号のエネルギーの大きい順に優先順位を高くする。優先順位の決め方は、相対的であってもよいし、絶対的でもよい。このように優先順位を決定して優先順位の高いエッジが変換ブロックの境界がエッジにかからないように分割を行う。また、サブブロックは必ずしも水平・垂直ともに分割する必要はなく、どちらか一方でもよいし、全く分割しなくてもよい。分割後のブロックをさらに階層的に分割してもよいし、同じ階層で複数のブロックに分割してもよい。さらに、分割後の変換ブロックのサイズは、一般的な符号化方式との互換性を考慮して2の階乗のサイズに限定してもよい。
さらに、変換ブロック設定部32は、参照画像エッジ検出部31から別のフォーマットで出力された場合、それに応じて前述した手順と同様の概念でエッジの連続性の推定を行い、変換ブロックを設定すればよい。
サブブロックのサイズは、16×16画素に限らず他のサブブロックサイズにも同様の処理を適用することがでる。例えば、図16の(D)に示すようにサブブロックサイズが8×8画素の場合にも同様の処理を適用することができる。
図17は、参照画像エッジ検出部31と変換ブロック設定部32を用いて変換ブロックを設定する手順を示している。ステップST31で参照画像エッジ検出部31は、符号化対象のサブブロックに隣接する参照画像のエッジの位置とエッジの強度を示す指標を得てステップST32に進む。
ステップST32で変換ブロック設定部32は、エッジの位置とエッジの強度を示す指標および予測部25から得られる予測モード情報DS20を基に、符号化対象のサブブロック内におけるエッジの連続性を推定してステップST33に進む。
ステップST33で変換ブロック設定部32は、推定したエッジの連続性とエッジの強度を考慮して変換ブロックを設定する。
このようにして、変換ブロック設定部32で変換ブロックが設定されると、第1変換部13、第1量子化部15、第1逆量子化部19、第1逆変換部21は、設定された変換ブロック毎に、DCT、量子化、逆量子化、逆DCTを行う。
また、第2変換部14、第2量子化部16、第2逆量子化部20、第2逆変換部22は、設定された変換ブロック毎に、予測モード情報DS20に応じた予測方向のDCT、量子化、逆量子化、逆DCTを行う。図18は、サブブロックが8×8画素のブロックサイズであり、このサブブロックが図16の(D)のように4つに分割されて変換ブロックが設定された場合を示している。例えば図18の(A)に示す8×8画素のサブブロックは、分割されて図18の(B)〜(E)に示すように5×6画素、3×6画素、5×2画素、3×2画素の変換ブロックとされる。また、予測モードはモード5とする。この場合、垂直斜め方向に相関があることを考慮して、ブロック内の信号をスキャンしてDCTを行う。例えば、図18の(B)〜(E)の矢印に示すようなスキャンを行い、それぞれ連続する画素数に応じたDCTを実施する。
なお、直交変換はDCTに限らず、例えば、ウェーブレット変換やアダマール変換、それぞれを整数精度にした変換などでもよい。量子化も採用した直交変換に適切な方法を用いればよい。
[1−3.画像復号化装置の構成]
次に、画像符号化装置10で生成された符号化データの復号化処理を行う画像復号化装置について説明する。
図19は、第1の実施の形態における画像復号化装置50の構成を示している。画像復号化装置50は、エントロピー復号化部51、処理選択スイッチ52、第1逆量子化部53、第2逆量子化部54、第1逆変換部55、第2逆変換部56、演算部57、参照メモリ58、予測部60を備えている。また、画像復号化装置50は、参照画像エッジ検出部71、変換ブロック設定部72、復号化制御部80を備えている。
エントロピー復号化部51は、入力として受け付けた符号化データDSCのエントロピー復号化を行う。エントロピー復号化部51は、画像符号化装置10のエントロピー符号化部17で行われたエントロピー符号化に対応するエントロピー復号化を行う。エントロピー復号化部51は、エントロピー復号化を行うことにより得られた量子化データDS51と変換情報DS52(DS40に相当)を処理選択スイッチ52に出力する。また、エントロピー復号化部51は、エントロピー復号化を行うことにより得られた予測モード情報DS53(DS20に相当)を予測部60に出力する。
処理選択スイッチ52は、エントロピー復号化部51から供給された変換情報DS52に基づいて切り替えを行い、量子化データDS51を第1逆量子化部53または第2逆量子化部54に出力する。
第1逆量子化部53は、画像符号化装置10の第1逆量子化部19と同様に構成されている。第1逆量子化部53は、処理選択スイッチ52を介して供給された量子化データDS51の逆量子化を行う。また、第1逆量子化部53は、変換ブロック設定部72から供給された変換ブロック設定情報DS76に基づく変換ブロック毎に量子化データの逆量子化を行う。第1逆量子化部53は、逆量子化を行うことにより得られた変換係数DS54を第1逆変換部55に出力する。
第1逆変換部55は、画像符号化装置10の第1逆変換部21と同様に構成されている。第1逆変換部55は、第1逆量子化部53から供給された変換係数DS54に対して、水平垂直方向の逆DCTを、変換ブロック設定部72から供給された変換ブロック設定情報DS76に基づく変換ブロック毎に行う。第1逆変換部55は、逆DCTを行うことにより得られた予測誤差信号DS56を、演算部57に出力する。
第2逆量子化部54は、画像符号化装置10の第2逆量子化部20と同様に構成されている。第2逆量子化部54は、処理選択スイッチ52を介して供給された量子化データDS51の逆量子化を、変換情報DS52で示された予測方向に対応する斜め方向パターン逆量子化部で行う。また、第2逆量子化部54は、変換ブロック設定部72から供給された変換ブロック設定情報DS76に基づく変換ブロック毎に量子化データの逆量子化を行う。第2逆量子化部54は、逆量子化を行うことにより得られた変換係数DS55を第2逆変換部56に出力する。
第2逆変換部56は、画像符号化装置10の第2逆変換部22と同様に構成されている。第2逆変換部56は、第2逆量子化部54から供給された変換係数DS55の逆DCTを、変換情報DS52で示された予測方向に対応する斜め方向パターン逆DCT部で行う。また、第2逆変換部56は、変換ブロック設定部72から供給された変換ブロック設定情報DS76に基づく変換ブロック毎に逆DCTを行う。第2逆変換部56は、逆DCTを行うことにより得られた予測誤差信号DS57を演算部57に出力する。
演算部57は、第1逆変換部55から供給された予測誤差信号DS56、または第2逆変換部56から供給された予測誤差信号DS57に、予測部60で生成された予測画像信号DS61を加算して、画像信号DS58を生成する。演算部57は、生成した画像信号DS58を参照メモリ58に記憶させる。
参照メモリ58に記憶されている画像信号DS58は、予測部60と参照画像エッジ検出部71に供給される。また、参照メモリ58に記憶されている参照画像信号が出力画像信号DS59として順次画像復号化装置50から出力される。
予測部60は、参照メモリ58から読み出された参照画像信号DS60を用いて、予測モード情報DS53で示された予測モードの予測を行い、予測画像信号DS61を生成して演算部57に出力する。
参照画像エッジ検出部71は、画像符号化装置10の参照画像エッジ検出部31と同様に構成されている。参照画像エッジ検出部71は、参照メモリ58に記憶されている復号化済み隣接ブロックの画像信号を用いてエッジ検出を行い、エッジの位置とエッジの強度を示す指標DS75を変換ブロック設定部72に出力する。
変換ブロック設定部72は、画像符号化装置10の変換ブロック設定部32と同様に構成されている。変換ブロック設定部72は、参照画像エッジ検出部71から供給された指標DS75とエントロピー復号化部51から供給された予測モード情報DS53に基づき、復号化対象のブロックにおけるエッジの連続性を推定する。変換ブロック設定部72は、推定結果から逆直交変換および逆量子化を行う場合の変換ブロックを設定して、この変換ブロックを示す変換ブロック設定情報DS76を生成する。変換ブロック設定部72は、生成した変換ブロック設定情報DS76を、第1逆量子化部53、第2逆量子化部54、第1逆変換部55、第2逆変換部56に出力する。
復号化制御部80は、符号化データの復号化処理における制御命令等の発行を行う。
[1−4.画像復号化装置の動作]
図20は、第1の実施の形態における画像復号化装置50の動作を示すフローチャートである。ステップST51で画像復号化装置50は、符号化データを取得する。画像復号化装置50は、符号化データDSCを取得して、マクロブロック毎、あるいはマクロブロックペア毎に復号化を開始してステップST52に進む。
ステップST52で画像復号化装置50は、エントロピー復号化を行う。画像復号化装置50は、符号化データDSCの各シンタックスの可変長符号を復号化して、量子化データDS51や変換情報DS52、予測モード情報DS53を再生してステップST53に進む。
ステップST53で画像復号化装置50は、シンタックスの解析を行う。画像復号化装置50は、復号化を行うことにより得られたデータから、シンタックスの解析を行ってステップST54に進む。
ステップST54で画像復号化装置50は、サブブロックに関する初期化を行う。画像復号化装置50は、サブブロックのインデックスsub_blkを初期化して「sub_blk=0」とし、同時に最大サブブロック数MAX_SUB_BLKをセットしてステップST55に進む。
ステップST55で画像復号化装置50は、サブブロックのインデックスsub_blkが最大サブブロック数MAX_SUB_BLKより小さいか判別する。画像復号化装置50は、サブブロックのインデックスsub_blkが最大サブブロック数MAX_SUB_BLKより小さい場合、マクロブロック内のサブブロックにまだ復号化していないサブブロックが存在することからステップST56に進む。画像復号化装置50は、サブブロックのインデックスsub_blkが最大サブブロック数MAX_SUB_BLKより小さくない場合、マクロブロック内のサブブロックに符号化していないサブブロックは存在しないことからステップST68に進む。
ステップST56で画像復号化装置50は、インデックスmode_idxと変換情報trans_idxをロードする。画像復号化装置50は、インデックスmode_idxと変換情報trans_idxを符号化データから抽出してステップST57に進む。
ステップST57で画像復号化装置50は、予測画像を生成する。画像復号化装置50は、参照画像の画像信号すなわち記憶されている復号化済み隣接ブロックの画像信号を用いて、インデックスmode_idxで示された予測モードの予測画像信号DS61の生成を行いステップST58に進む。
ステップST58で画像復号化装置50は、エッジ検出を行う。画像復号化装置50は、記憶されている復号化済み隣接ブロックの画像信号を用いてエッジ検出を行い、エッジ位置とエッジの強度を示す指標DS75を生成してステップST59に進む。
ステップST59で画像復号化装置50は、変換ブロックを設定する。画像復号化装置50は、エッジの位置とエッジの強度を示す指標DS75およびインデックスmode_idxの予測方向に基づいて、復号化対象のサブブロック内におけるエッジの連続性を推定する。さらに、画像復号化装置50は、エッジの連続性の推定結果に基づきサブブロックの分割を行い、変換ブロックを設定してステップST60に進む。
ステップST60で画像復号化装置50は、予測モードのインデックスmode_idxが、斜め方向予測モードのモード番号のうち最小値である斜め方向予測モードの最小モード番号mode_directionよりも小さいか、または変換情報が「trans_idx=1」かどうかを判別する。画像復号化装置50は、予測モードのインデックスmode_idxが最小モード番号mode_directionよりも小さい場合、または変換情報「trans_idx=1」の場合の少なくともいずれかの場合にステップST61に進む。また、他の場合にはステップST63に進む。
ステップST61で画像復号化装置50は、水平垂直逆量子化を行いステップST62に進む。ステップST62で画像復号化装置50は、水平垂直逆DCTを行いステップST65に進む。画像復号化装置50は、例えば処理選択スイッチ52を第1逆量子化部53側に切り替えて、第1逆量子化部53と第1逆変換部55を用いて逆量子化と逆DCTを行う。
ステップST63で画像復号化装置50は、斜め方向パターン逆量子化を行いステップST64に進む。ステップST64で画像復号化装置50は、斜め方向パターン逆DCTを行いステップST65に進む。画像復号化装置50は、例えば処理選択スイッチ52を第2逆量子化部54側に切り替える。画像復号化装置50は、第2逆量子化部54と第2逆変換部56のパターン選択スイッチを予測モードのインデックスmode_idxに従って切り替えて、予測方向に対応した斜め方向パターン逆量子化部と斜め方向パターン逆DCT部を用いて逆量子化と逆DCTを行う。
ステップST65で画像復号化装置50は、予測誤差と予測画像の合成を行う。画像復号化装置50は、予測誤差信号DS56または予測誤差信号DS57に対して予測画像信号DS61を加算して、画像信号DS58を生成してステップST66に進む。
ステップST66で画像復号化装置50は、参照メモリに蓄積する。画像復号化装置50は、生成した画像信号DS58を参照メモリ58に蓄積してステップST67に進む。
ステップST67で画像復号化装置50は、サブブロックのインデックスsub_blkに「1」を加算して、新たなインデックスsub_blkとしてステップST55に戻る。
また、画像復号化装置50は、ステップST55でサブブロックのインデックスsub_blkが最大サブブロック数MAX_SUB_BLK以下でないと判定してステップST68に進むと、画像復号化装置50は、復号画像の出力を行う。画像復号化装置50は、サブブロックの復号化が完了したことから参照メモリ58に蓄積されている画像信号を復号画像の画像信号として出力する。
このように、第1の実施の形態によれば、画像符号化装置10では、参照画像エッジ検出部31によって、符号化対象ブロックに対する参照画像の画像信号を用いてエッジ検出が行われる。また、変換ブロック設定部32は、エッジ検出結果に基づき、分割後のブロック間の境界でエッジを含まないように符号化対象ブロックの分割処理を行い、変換ブロックの設定が行われる。さらに、第1変換部13、第2変換部14、第1量子化部15、第2量子化部16等で構成される符号化処理部では、変換ブロック毎の直交変換を含む処理が行われて符号化データが生成される。また、画像復号化装置50では、参照画像エッジ検出部71によって、復号化対象ブロックに対する参照画像の画像信号を用いてエッジ検出が行われる。また、変換ブロック設定部72は、エッジ検出結果に基づき、分割後のブロック間の境界でエッジを含まないように復号化対象ブロックの分割処理を行い、画像符号化装置10と等しい変換ブロックの設定が行われる。さらに、第1逆量子化部53、第2逆量子化部54、第1逆変換部55、第2逆変換部56等で構成される復号化処理部では、変換ブロック毎の逆直交変換を含む処理が行われて画像信号が生成される。さらに、フレーム内予測のモードに基づいて、エッジの連続性を考慮して変換ブロックが設定される。このため、連続するエッジが複数の変換ブロックをまたぐことを防止して主観画質を向上させることができる。また、エッジが含まれない変換ブロックが増加されてエネルギー集中の向上をはかることができる。さらに、変換ブロックは、画像符号化装置と画像復号化装置で同じ動作が行われて同じサイズに設定されるので、変換ブロックに関する情報を符号化データDSCに含めなくても、符号化データDSCの復号化処理を行うことができるため、符号化効率を向上できる。
<第2の実施の形態>
次に、第2の実施の形態について説明する。上述の第1の実施の形態では、適応的に変化する変換ブロックを示す変換ブロック設定情報を、符号化データに含めないようにして符号化効率の向上をはかっている。しかし、変換ブロック設定情報を符号化データに含めなくても正しく復号化処理を行うためには、画像復号化装置に変換ブロック設定部を設けておかなければならない。そこで、第2の実施の形態では、若干の符号化効率の低下を許容することで、画像復号化装置の構成を簡略化する場合について説明する。
[2−1.画像符号化装置の構成]
図21は、第2の実施の形態の画像符号化装置10aの構成を示している。なお、図21において、第1の実施の形態の画像符号化装置10と対応する構成については同一符号を付している。
画像符号化装置10aは、演算部11、処理選択スイッチ12、第1変換部13、第2変換部14、第1量子化部15、第2量子化部16、エントロピー符号化部17aを備えている。また、画像符号化装置10aは、処理選択スイッチ18、第1逆量子化部19、第2逆量子化部20、第1逆変換部21、第2逆変換部22、演算部23、参照メモリ24、予測部25を備えている。さらに、画像符号化装置10aは、参照画像エッジ検出部31と変換ブロック設定部32a、および符号化制御部40を備えている。
演算部11は、入力画像信号DS1から後述する予測部25で生成された予測画像信号DS18を減算することで、入力画像に対する予測画像の予測誤差を算出して、予測誤差を示す予測誤差信号DS2を処理選択スイッチ12へ出力する。
処理選択スイッチ12は、符号化制御部40から供給された変換情報DS40に基づいて切り替えを行い、予測誤差信号DS2を第1量子化部15または第2量子化部16に出力する。
第1変換部13は、処理選択スイッチ12から供給された予測誤差信号DS2の水平垂直DCTを行う。また第1変換部13は、水平垂直DCTを、変換ブロック設定部32aから供給された変換ブロック設定情報DS32に基づく変換ブロック毎に行い、得られた変換係数DS3を第1量子化部15に出力する。
第1量子化部15は、第1変換部13から出力された変換係数DS3の量子化を行い、量子化データDS5をエントロピー符号化部17aと処理選択スイッチ18に出力する。また、第1量子化部15は、変換ブロック設定部32aから供給された変換ブロック設定情報DS32に基づき、変換ブロック毎に変換係数DS3を量子化する。
第2変換部14は、処理選択スイッチ12から供給された予測誤差信号DS2に対して、予測部25からの予測モード情報DS20に基づく予測方向のDCTを行う。また第2変換部14は、予測方向のDCTを、変換ブロック設定部32aから供給された変換ブロック設定情報DS32に基づく変換ブロック毎に行い、得られた変換係数DS4を第2量子化部16に出力する。
第2量子化部16は、第2変換部14から供給された変換係数DS4に対して、予測部25からの予測モード情報DS20に基づき、予測方向の量子化を行い、量子化データDS6をエントロピー符号化部17aと処理選択スイッチ18に出力する。また、第2量子化部16は、変換ブロック設定部32aから供給された変換ブロック設定情報DS32に基づき、変換ブロック毎に変換係数DS4を量子化する。
エントロピー符号化部17aは、第1量子化部15から供給された量子化データDS5または第2量子化部16から供給された量子化データDS6のエントロピー符号化を行う。また、エントロピー符号化部17aは、予測部25で生成された予測モード情報DS20や符号化制御部40で生成された変換情報DS40、変換ブロック設定部32aで設定された変換ブロックを示す変換ブロック設定情報DS32のエントロピー符号化を行う。エントロピー符号化部17aは、エントロピー符号化を行うことにより得られた符号化データDSCを出力する。
処理選択スイッチ18は、符号化制御部40から供給された変換情報DS40に基づいて逆変換方法の選択を行い、第1量子化部15からの量子化データDS5を第1逆量子化部19、第2量子化部16からの量子化データDS6を第2逆量子化部20に出力する。
第1逆量子化部19は、処理選択スイッチ18を介して供給された量子化データDS5の逆量子化を行う。また、第1逆量子化部19は、変換ブロック設定部32aから供給された変換ブロック設定情報DS32に基づき、第1量子化部15と対応した変換ブロック毎に量子化データの逆量子化を行う。第1逆量子化部19は、逆量子化を行うことにより得られた変換係数DS11を第1逆変換部21に出力する。
第1逆変換部21は、第1逆量子化部19から供給された変換係数DS11に対して、第1変換部13における水平垂直方向のDCTに対応する水平垂直方向の逆DCTを行う。また第1逆変換部21は、水平垂直方向の逆DCTを、変換ブロック設定部32aから供給された変換ブロック設定情報DS32に基づく変換ブロック毎に行う。水平垂直逆DCT部211は、逆DCT変換を行うことにより得られた予測誤差信号DS13を演算部23に出力する。
第2逆量子化部20は、処理選択スイッチ18を介して供給された量子化データDS6の逆量子化を行う。第2逆量子化部20は、予測部25からの予測モード情報DS20に基づき、第2量子化部16に対応する予測方向の逆量子化を行う。また、第2逆量子化部20は、変換ブロック設定部32aから供給された変換ブロック設定情報DS32に基づき、第2量子化部16と対応した変換ブロック毎に量子化データの逆量子化を行う。第2逆量子化部20は、逆量子化を行うことにより得られた変換係数DS12を第2逆変換部22に出力する。
第2逆変換部22は、変換係数DS12の逆DCTを行う。第2逆変換部22は、予測部25からの予測モード情報DS20に基づき、第2変換部14に対応する予測方向の逆DCTを行う。また、第2逆変換部22は、変換ブロック設定部32aから供給された変換ブロック設定情報DS32に基づき、第2変換部14と対応した変換ブロック毎に変換係数の逆DCTを行う。第2逆変換部22は、逆DCTを行うことにより得られた予測誤差信号DS14を演算部23に出力する。
演算部23は、第1逆変換部21から供給された予測誤差信号DS13、または第2逆変換部22から供給された予測誤差信号DS14に、予測部25で生成された予測画像信号DS18を加算して、参照画像信号DS15を生成する。演算部23は、生成した参照画像信号DS15を参照メモリ24に記憶させる。
参照メモリ24に記憶されている参照画像信号DS15は、予測部25と参照画像エッジ検出部31に供給される。
予測部25は、参照画像信号DS15を用いて予測モード毎にフレーム内予測を行う。また、予測部25は、符号化効率が最も高くなる予測モードを判別して、符号化効率が最も高くなる予測モードを示す予測モード情報DS20を生成する。予測部25は、生成した予測モード情報DS20を第2変換部14、第2量子化部16、第2逆量子化部20、第2逆変換部、および変換ブロック設定部32aに出力する。さらに、予測部25は、符号化効率が最も高くなる予測モードで予測画像信号DS18を生成して、演算部11,23に出力する。
参照画像エッジ検出部31は、参照メモリ24に記憶されている符号化済み隣接ブロックの画像信号を用いてエッジ検出を行い、エッジの位置とエッジの強度を示す指標DS31を変換ブロック設定部32aに出力する。
変換ブロック設定部32aは、参照画像エッジ検出部31から供給された指標DS31と予測部25から供給された予測モード情報DS20に基づき、符号化対象のサブブロック内におけるエッジの連続性を推定する。変換ブロック設定部32aは、推定結果から直交変換および量子化における変換ブロックを設定して、この設定した変換ブロックを示す変換ブロック設定情報DS32を生成する。変換ブロック設定部32aは、生成した変換ブロック設定情報DS32を、第1変換部13、第2変換部14、第1量子化部15、第2量子化部16、第1逆量子化部19、第2逆量子化部20、第1逆変換部21、第2逆変換部22に出力する。また、変換ブロック設定部32aは、生成した変換ブロック設定情報DS32を、エントロピー符号化部17aに出力する。
符号化制御部40は、変換情報DS40を生成して処理選択スイッチ12,エントロピー符号化部17a,処理選択スイッチ18に出力する。
[2−2.画像符号化装置の動作]
第2の実施の形態の画像符号化装置10aは、図13,14に示すフローチャートの処理を行い、符号化データを生成して出力する。また、画像符号化装置10aは、図14のステップST22における最適モードのデータをロードする処理において、最適モードのデータに、最適モードにおける直交変換の変換ブロック設定情報DS32を含める。例えば、画像符号化装置10aは、変換ブロック設定情報DS32をエントロピー符号化したのち、ヘッダとして符号化データDSCに含める。
[2−3.画像復号化装置の構成]
次に、画像符号化装置10aで生成された符号化データの復号化処理を行う画像復号化装置について説明する。
図22は、第2の実施の形態における画像復号化装置50aの構成を示している。なお、図22において、第1の実施の形態の画像復号化装置50と対応する構成については同一符号を付している。
画像復号化装置50aは、エントロピー復号化部51a、処理選択スイッチ52、第1逆量子化部53、第2逆量子化部54、第1逆変換部55、第2逆変換部56、演算部57、参照メモリ58、予測部60を備えている。また、画像復号化装置50aは、参照画像エッジ検出部71、変換ブロック設定部72、および復号化制御部80を備えている。
エントロピー復号化部51aは、入力として受け付けた符号化データDSCのエントロピー復号化を行う。エントロピー復号化部51aは、画像符号化装置10aのエントロピー符号化部17aで行われたエントロピー符号化に対応するエントロピー復号化を行う。エントロピー復号化部51aは、エントロピー復号化を行うことにより得られた量子化データDS51と変換情報DS52(DS40に相当)を処理選択スイッチ52に出力する。また、エントロピー復号化部51aは、エントロピー復号化を行うことにより得られた予測モード情報DS53(DS20に相当)を予測部60に出力する。さらに、エントロピー復号化部51aは、エントロピー復号化を行うことにより得られた変換ブロック設定情報DS76(DS32に相当)を、第1逆量子化部53、第2逆量子化部54、第1逆変換部55、第2逆変換部56に出力する。
処理選択スイッチ52は、エントロピー復号化部51aから供給された変換情報DS52に基づいて切り替えを行い、量子化データDS51を第1逆量子化部53または第2逆量子化部54に出力する。
第1逆量子化部53は、画像符号化装置10aの第1逆量子化部19と同様に構成されている。第1逆量子化部53は、処理選択スイッチ52を介して供給された量子化データDS51の逆量子化を行う。また、第1逆量子化部53は、エントロピー復号化部51aから供給された変換ブロック設定情報DS76に基づくブロック毎に量子化データの逆量子化を行う。第1逆量子化部53は、逆量子化を行うことにより得られた変換係数DS54を第1逆変換部55に出力する。
第1逆変換部55は、画像符号化装置10aの第1逆変換部21と同様に構成されている。第1逆変換部55は、第1逆量子化部53から供給された変換係数DS54に対して、水平垂直方向の逆DCTを、エントロピー復号化部51aから供給された変換ブロック設定情報DS76に基づくブロック毎に行う。第1逆変換部55は、逆DCTを行うことにより得られた予測誤差信号DS56を演算部57に出力する。
第2逆量子化部54は、画像符号化装置10aの第2逆量子化部20と同様に構成されている。第2逆量子化部54は、処理選択スイッチ52を介して供給された量子化データDS51の逆量子化を行う。また、第2逆量子化部54は、エントロピー復号化部51aから供給された変換ブロック設定情報DS76に基づくブロック毎に量子化データの逆量子化を行う。第2逆量子化部54は、逆量子化を行うことにより得られた変換係数DS55を第2逆変換部56に出力する。
第2逆変換部56は、画像符号化装置10aの第2逆変換部22と同様に構成されている。第2逆変換部56は、第2逆量子化部54から供給された変換係数DS55に対して、予測方向に応じた逆DCTを、エントロピー復号化部51aから供給された変換ブロック設定情報DS76に基づくブロック毎に行う。第2逆変換部56は、逆DCTを行うことにより得られた予測誤差信号DS57を演算部57に出力する。
演算部57は、第1逆変換部55から供給された予測誤差信号DS56、または第2逆変換部56から供給された予測誤差信号DS57に、予測部60で生成された予測画像信号DS61を加算して、画像信号DS58を生成する。演算部57は、生成した画像信号DS58を参照メモリ58に記憶させる。
参照メモリ58に記憶されている画像信号DS58は、予測部60と参照画像エッジ検出部71に供給される。また、参照メモリ58に記憶されている参照画像信号が出力画像信号DS59として画像復号化装置50aから出力される。
予測部60は、参照メモリ58から読み出された参照画像信号DS60を用いて、予測モード情報DS53で示された予測モードの予測を行い、予測画像信号DS61を生成して、演算部57に出力する。
復号化制御部80は、符号化データの復号化処理における制御命令等の発行を行う。
[2−4.画像復号化装置の動作]
図23は、第2の実施の形態における画像復号化装置50aの動作を示すフローチャートである。ステップST51で画像復号化装置50aは、符号化データを取得する。画像復号化装置50aは、符号化データDSCを取得して、マクロブロック毎、あるいはマクロブロックペア毎に復号化を開始してステップST52aに進む。
ステップST52aで画像復号化装置50aは、エントロピー復号化を行う。画像復号化装置50aは、符号化データDSCの各シンタックスの可変長符号を復号化して、量子化データDS51や変換情報DS52、予測モード情報DS53、変換ブロック設定情報DS76を再生してステップST53に進む。
ステップST53で画像復号化装置50aは、シンタックスの解析を行う。画像復号化装置50aは、復号化を行うことにより得られたデータから、シンタックスの解析を行ってステップST54に進む。
ステップST54で画像復号化装置50aは、サブブロックに関する初期化を行う。画像復号化装置50aは、サブブロックのインデックスsub_blkを初期化して「sub_blk=0」とし、同時に最大サブブロック数MAX_SUB_BLKをセットしてステップST55に進む。
ステップST55で画像復号化装置50aは、サブブロックのインデックスsub_blkが最大サブブロック数MAX_SUB_BLKより小さいか判別する。画像復号化装置50aは、サブブロックのインデックスsub_blkが最大サブブロック数MAX_SUB_BLKより小さい場合、マクロブロック内のサブブロックにまだ復号化していないサブブロックが存在することからステップST56aに進む。画像復号化装置50aは、サブブロックのインデックスsub_blkが最大サブブロック数MAX_SUB_BLKより小さくない場合、マクロブロック内のサブブロックに符号化していないサブブロックは存在しないことからステップST68に進む。
ステップST56aで画像復号化装置50aは、インデックスmode_idxと変換情報trans_idxおよび変換ブロック設定情報DS76をロードする。画像復号化装置50aは、インデックスmode_idxと変換情報trans_idxおよび変換ブロック設定情報DS76を、符号化データから抽出してステップST57に進む。
ステップST57で画像復号化装置50aは、予測画像を生成する。画像復号化装置50aは、参照画像の画像信号すなわち記憶されている復号化済み隣接ブロックの画像信号を用いて、インデックスmode_idxで示された予測モードの予測画像信号DS61の生成を行いステップST60に進む。
ステップST60で画像復号化装置50aは、予測モードのインデックスmode_idxが、斜め方向予測モードのモード番号のうち最小値である斜め方向予測モードの最小モード番号mode_directionよりも小さいか、または変換情報が「trans_idx=1」かどうかを判別する。画像復号化装置50aは、予測モードのインデックスmode_idxが最小モード番号mode_directionよりも小さい場合または変換情報「trans_idx=1」の場合の少なくともいずれかの場合、ステップST61に進む。また、他の場合にはステップST63に進む。
ステップST61で画像復号化装置50aは、水平垂直逆量子化を行いステップST62に進む。ステップST62で画像復号化装置50aは、水平垂直逆DCTを行いステップST65に進む。画像復号化装置50aは、例えば処理選択スイッチ52を第1逆量子化部53側に切り替えて、第1逆量子化部53と第1逆変換部55を用いて逆量子化と逆DCTを行う。
ステップST63で画像復号化装置50aは、斜め方向パターン逆量子化を行いステップST64に進む。ステップST64で画像復号化装置50aは、斜め方向パターン逆DCTを行いステップST65に進む。画像復号化装置50aは、例えば処理選択スイッチ52を第2逆量子化部54側に切り替える。また、画像復号化装置50aは、第2逆量子化部54と第2逆変換部56のパターン選択スイッチを予測モードのインデックスmode_idxに従って切り替えて、予測方向に対応した斜め方向パターン逆量子化部と斜め方向パターン逆DCT部を用いて逆量子化と逆DCTを行う。
ステップST65で画像復号化装置50aは、予測誤差と予測画像の合成を行う。画像復号化装置50aは、予測誤差信号DS56または予測誤差信号DS57に対して予測画像信号DS61を加算して、画像信号DS58を生成してステップST66に進む。
ステップST66で画像復号化装置50aは、参照メモリに蓄積する。画像復号化装置50aは、生成した画像信号DS58を参照メモリ58に蓄積してステップST67に進む。
ステップST67で画像復号化装置50aは、サブブロックのインデックスsub_blkに「1」を加算して、新たなインデックスsub_blkとしてステップST55に戻る。
また、画像復号化装置50aは、ステップST55でサブブロックのインデックスsub_blkが最大サブブロック数MAX_SUB_BLK以下でないと判定してステップST68に進むと、画像復号化装置50aは、復号画像の出力を行う。画像復号化装置50aは、サブブロックの復号化が完了したことから参照メモリ58に蓄積されている画像信号を復号画像の画像信号として出力する。
このように、第2の実施の形態によれば、第1の実施の形態と同様に、フレーム内予測のモードに基づいて、エッジの連続性を考慮して変換ブロックが設定されるので、連続するエッジが複数の変換ブロックをまたぐことを防止して主観画質を向上させることができる。また、エッジが含まれない変換ブロックが増加されてエネルギー集中の向上をはかることができる。さらに、変換ブロックに関する変換ブロック設定情報が符号化データに多重されて出力されるので、画像復号化装置50aには、エッジ検出を行う参照画像エッジ検出部やエッジ検出結果に基づいて変換ブロックを設定する変換ブロック設定部を設ける必要がない。したがって、第1の実施の形態に比べて画像復号化装置の構成を簡単にできる。
<第3の実施の形態>
ところで、上述の第1および第2の実施の形態では、隣接するブロックのエッジから符号化対象のサブブロック内におけるエッジの連続性を推定することにより、変換ブロックを設定した。すなわち、空間方向の画像を参照画像として用いて変換ブロックを設定している。しかし、参照画像は空間方向に限らず時間方向の画像を用いることもできる。次に、第3の実施の形態として、時間方向の画像を参照画像として用いる場合について説明する。
[3−1.画像符号化装置の構成]
図24は、第3の実施の形態における画像符号化装置の構成を示している。なお、図24において、第1の実施の形態の画像符号化装置10と対応する構成については同一符号を付している。
画像符号化装置10bは、演算部11、処理選択スイッチ12、第1変換部13、第2変換部14、第1量子化部15、第2量子化部16、エントロピー符号化部17bを備えている。また、画像符号化装置10bは、処理選択スイッチ18、第1逆量子化部19、第2逆量子化部20、第1逆変換部21、第2逆変換部22、演算部23、参照メモリ24、予測部25、参照画像エッジ検出部31と変換ブロック設定部32を備えている。さらに、画像符号化装置10bは、画像信号選択スイッチ30とMPEGやH.264/AVC方式と同等の機能を持つ動き推定部35、動き補償部36、予測選択スイッチ37、符号化制御部40を備えている。
演算部11は、入力画像信号DS1から後述する予測選択スイッチ37の出力である予測画像信号DS37を減算することで、入力画像に対する予測画像の予測誤差を算出して、予測誤差を示す予測誤差信号DS2を処理選択スイッチ12へ出力する。
処理選択スイッチ12は、符号化制御部40から供給された変換情報DS40に基づいて切り替えを行い、予測誤差信号DS2を第1量子化部15または第2量子化部16に出力する。
処理選択スイッチ12は、符号化制御部40から供給された変換情報DS40に基づいて切り替えを行い、予測誤差信号DS2を第1量子化部15または第2量子化部16に出力する。
第1変換部13は、処理選択スイッチ12から供給された予測誤差信号DS2の水平垂直DCTを行う。また第1変換部13は、水平垂直DCTを、変換ブロック設定部32から供給された変換ブロック設定情報DS32に基づく変換ブロック毎に、得られた変換係数DS3を第1量子化部15に出力する。
第1量子化部15は、第1変換部13から出力された変換係数DS3の量子化を行い、量子化データDS5をエントロピー符号化部17bと処理選択スイッチ18に出力する。また、第1量子化部15は、変換ブロック設定部32から供給された変換ブロック設定情報DS32に基づき、変換ブロック毎に変換係数DS3を量子化する。
第2変換部14は、処理選択スイッチ12から供給された予測誤差信号DS2に対して、予測部25からの予測モード情報DS20に基づく予測方向のDCTを行う。また第2変換部14は、予測方向のDCTを、変換ブロック設定部32から供給された変換ブロック設定情報DS32に基づく変換ブロック毎に行い、得られた変換係数DS4を第2量子化部16に出力する。
第2量子化部16は、第2変換部14から供給された変換係数DS4に対して、予測部25からの予測モード情報DS20に基づき、予測方向の量子化を行い、量子化データDS6をエントロピー符号化部17bと処理選択スイッチ18に出力する。また、第2量子化部16は、変換ブロック設定部32から供給された変換ブロック設定情報DS32に基づき、変換ブロック毎に変換係数DS4を量子化する。
エントロピー符号化部17bは、第1量子化部15から供給された量子化データDS5または第2量子化部16から供給された量子化データDS6のエントロピー符号化を行う。また、エントロピー符号化部17bは、予測部25で生成された予測モード情報DS20や符号化制御部40で生成された変換情報DS40、動き推定部35で検出された動きベクトル情報DS35のエントロピー符号化を行う。エントロピー符号化部17bは、エントロピー符号化を行うことにより得られた符号化データDSCを出力する。
処理選択スイッチ18は、符号化制御部40から供給された変換情報DS40に基づいて逆変換方法の選択を行い、第1量子化部15からの量子化データDS5を第1逆量子化部19、第2量子化部16からの量子化データDS6を第2逆量子化部20に出力する。
第1逆量子化部19は、処理選択スイッチ18を介して供給された量子化データDS5の逆量子化を行う。また、第1逆量子化部19は、変換ブロック設定部32から供給された変換ブロック設定情報DS32に基づき、第1量子化部15と対応した変換ブロック毎に量子化データの逆量子化を行う。第1逆量子化部19は、逆量子化を行うことにより得られた変換係数DS11を第1逆変換部21に出力する。
第1逆変換部21は、第1逆量子化部19から供給された変換係数DS11に対して、第1変換部13における水平垂直方向のDCTに対応する水平垂直方向の逆DCTを行う。また第1逆変換部21は、水平垂直方向の逆DCTを、変換ブロック設定部32から供給された変換ブロック設定情報DS32に基づく変換ブロック毎に行う。水平垂直逆DCT部211は、逆DCT変換を行うことにより得られた予測誤差信号DS13を演算部23に出力する。
第2逆量子化部20は、処理選択スイッチ18を介して供給された量子化データDS6の逆量子化を行う。第2逆量子化部20は、予測部25からの予測モード情報DS20に基づき、第2量子化部16に対応する予測方向の逆量子化を行う。また、第2逆量子化部20は、変換ブロック設定部32から供給された変換ブロック設定情報DS32に基づき、第2量子化部16と対応した変換ブロック毎に量子化データの逆量子化を行う。第2逆量子化部20は、逆量子化を行うことにより得られた変換係数DS12を第2逆変換部22に出力する。
第2逆変換部22は、変換係数DS12の逆DCTを行う。第2逆変換部22は、予測部25からの予測モード情報DS20に基づき、第2変換部14に対応する予測方向の逆DCTを行う。また、第2逆変換部22は、変換ブロック設定部32から供給された変換ブロック設定情報DS32に基づき、第2変換部14と対応した変換ブロック毎に変換係数の逆DCTを行う。第2逆変換部22は、逆DCTを行うことにより得られた予測誤差信号DS14を演算部23に出力する。
演算部23は、第1逆変換部21から供給された予測誤差信号DS13、または第2逆変換部22から供給された予測誤差信号DS14に、予測選択スイッチ37から出力された予測画像信号DS37を加算して、参照画像信号DS15を生成する。演算部23は、生成した参照画像信号DS15を参照メモリ24に記憶させる。
参照メモリ24には、空間方向に隣接しているブロックの画像信号だけでなく、時間方向の画像、すなわち複数のフレームの画像も参照画像として蓄積する。なお、複数のフレームの画像はデブロッキングフィルタ処理が行われて蓄積される。
参照メモリ24から読み出された隣接ブロックの画像信号DS16は、予測部25と画像信号選択スイッチ30に供給される。また、参照メモリ24から読み出されたフレーム画像の画像信号DS17は、動き推定部35と動き補償部36に供給される。
予測部25は、画像信号DS16を用いて予測モード毎にフレーム内予測を行う。また、予測部25は、符号化効率が最も高くなる予測モードを判別して、符号化効率が最も高くなる予測モードを示す予測モード情報DS20を生成する。予測部25は、生成した予測モード情報DS20を第2変換部14、第2量子化部16、第2逆量子化部20、第2逆変換部、および変換ブロック設定部32に出力する。さらに、予測部25は、符号化効率が最も高くなる予測モードで予測画像信号DS18を生成して、予測選択スイッチ37に出力する。
画像信号選択スイッチ30は、変換情報DS40に基づき、参照メモリ24から供給された画像信号DS16または動き補償部36から供給された予測画像信号DS36のいずれかを選択して、参照画像エッジ検出部31に出力する。例えば、フレーム内予測モードである場合、参照メモリ24から供給された画像信号DS16を選択して、選択した画像信号を参照画像エッジ検出部31に出力する。また、予測選択スイッチ37は、フレーム間予測モードである場合、動き補償部36から供給された予測画像信号DS36を選択して参照画像エッジ検出部31に出力する。
参照画像エッジ検出部31は、画像信号選択スイッチ30で選択された画像信号を用いてエッジ検出を行い、エッジの位置とエッジの強度を示す指標DS31を変換ブロック設定部32に出力する。
変換ブロック設定部32は、参照画像エッジ検出部31から供給された指標DS31と予測部25から供給された予測モード情報DS20に基づき、符号化対象のサブブロック内におけるエッジの連続性を推定する。変換ブロック設定部32は、推定結果から直交変換および量子化における変換ブロックを設定して、この設定した変換ブロックを示す変換ブロック設定情報DS32を生成する。変換ブロック設定部32は、生成した変換ブロック設定情報DS32を、第1変換部13、第2変換部14、第1量子化部15、第2量子化部16、第1逆量子化部19、第2逆量子化部20、第1逆変換部21、第2逆変換部22に出力する。
動き推定部35は、入力画像信号DS1と参照メモリ24から供給された画像信号DS17を用いて、サブブロックの動き推定を行い、動きベクトルを検出する。動き推定部35は、検出した動きベクトルを示す動きベクトル情報DS35を動き補償部36とエントロピー符号化部17bに出力する。
動き補償部36は、参照メモリ24から供給された画像信号DS17に基づく参照画像に対して動き推定部35から供給された動きベクトル情報DS35に基づいた動き補償を行う。動き補償部36は、動き補償によって生成したフレーム間予測モードの予測画像信号DS36を予測選択スイッチ37に出力する。
予測選択スイッチ37は、変換情報DS40に基づき、予測部25から供給された予測画像信号DS18または動き補償部36から供給された予測画像信号DS36のいずれかを選択して、演算部11,23に出力する。例えば、予測選択スイッチ37は、フレーム内予測モードである場合、予測部25から供給された予測画像信号DS18を選択して、選択した画像信号を予測画像信号DS37として演算部11,23に出力する。また、予測選択スイッチ37は、フレーム間予測モードである場合、動き補償部36から供給された予測画像信号DS36を選択して、選択した画像信号を予測画像信号DS37として演算部11,23に出力する。
符号化制御部40は、変換情報DS40を生成する。変換情報DS40は、直交変換に関して水平垂直DCTや水平垂直量子化を行う処理と、予測モード情報DS20が示す予測方向に沿って1次元DCTや量子化を行う処理のいずれかを選択するための情報である。また、第3の実施の形態では、フレーム内予測とフレーム間予測のいずれが選択されているかを示す情報とする。符号化制御部40は、生成した変換情報DS40を処理選択スイッチ12,エントロピー符号化部17b,処理選択スイッチ18に出力する。
[3−2.画像符号化装置の動作]
図25,図26は、第3の実施の形態における画像符号化装置10bの動作を示すフローチャートである。ステップST101で画像符号化装置10bは、入力画像を取得する。画像符号化装置10bは、入力画像信号DS1を取得して、マクロブロック毎またはマクロブロックペア毎に符号化を開始する。
ステップST102で画像符号化装置10bは、サブブロックに関する初期化を行う。画像符号化装置10bは、サブブロックのインデックスsub_blkを初期化して「sub_blk=0」とし、同時に最大サブブロック数MAX_SUB_BLKをセットしてステップST103に進む。
ステップST103で画像符号化装置10bは、サブブロックのインデックスsub_blkが最大サブブロック数MAX_SUB_BLKより小さいか判別する。画像符号化装置10bは、サブブロックのインデックスsub_blkが最大サブブロック数MAX_SUB_BLKより小さい場合、マクロブロック内のサブブロックにまだ符号化していないサブブロックが存在することからステップST104に進む。また、画像符号化装置10bは、サブブロックのインデックスsub_blkが最大サブブロック数MAX_SUB_BLKより小さくない場合、マクロブロック内のサブブロックにまだ符号化していないサブブロックが存在していないことからステップST125に進む。
ステップST104で画像符号化装置10bは、動きベクトルのX方向(例えば水平方向)の探索位置MV_xとY方向(例えば垂直方向)の探索位置MV_yを探索開始点START_X、START_YにセットしてステップST105に進む。
ステップST105で画像符号化装置10bは、MV_x<END_XおよびMV_y<END_Yであるか判別する。画像符号化装置10bは、探索位置が探索終了点END_X、END_Yの範囲内である場合にはステップST106に進み、探索範囲を超える場合にはステップST123に進む。
ステップST106で画像符号化装置10bは、予測方向に関する初期化を行う。画像符号化装置10bは、インデックスmode_idx_dを初期化して「mode_idx_d=0」とし、選択されうる最大方向数MAX_MODE_dをセットする。インデックスmode_idx_dは、予測方向を示すインデックスであり、フレーム内予測モードの予測方向に対応する。また、最大方向数MAX_MODE_dは、選択されうる予測方向の数、すなわちフレーム内予測モードの最大モード数MAX_MODEに相当する。このように、予測方向を示すインデックスmode_idx_dを用いることで、フレーム間予測においても、斜め方向の予測方向に対応したDCTを行って最適モードを検出できるようにする。
ステップST107で画像符号化装置10bは、予測方向のインデックスmode_idx_dが最大方向数MAX_MODE_dよりも小さいか判別する。画像符号化装置10bは、予測方向のインデックスmode_idx_dが最大方向数MAX_MODE_dよりも小さい場合、全ての予測方向が試されていないとしてステップST108に進む。画像符号化装置10bは、予測方向のインデックスmode_idx_dが最大方向数MAX_MODE_dよりも小さくない場合、全ての予測方向が試されたとしてステップST122に進む。
ステップST108で画像符号化装置10bは変換情報trans_idxをセットする。画像符号化装置10bは、予測方向のインデックスmode_idx_dの値に応じて変換情報trans_idxをセットする。例えば、画像符号化装置10bは、予測方向のインデックスmode_idx_dの値が斜めの予測方向を示している場合、変換情報trans_idxを「trans_idx=0」にセットしてステップST109に進む。また、画像符号化装置10bは、斜めでない予測方向を示している場合、変換情報trans_idxを「trans_idx=1」にセットしてステップST109に進む。
ステップST109で画像符号化装置10bは、参照フレームから探索位置MV_x,MV_yの動き補償信号を生成してステップST110に進む。
ステップST110で画像符号化装置10bは、生成した動き補償信号を用いてエッジ検出を行い、エッジの位置とエッジの強度を示す指標DS31を生成してステップST111に進む。
ステップST111で画像符号化装置10bは、変換ブロックを設定する。画像符号化装置10bは、エッジの位置とエッジの強度を示す指標DS31に基づいて、符号化対象のサブブロック内におけるエッジの連続性を推定する。さらに、画像符号化装置10bは、エッジの連続性の推定結果に基づき変換ブロックを設定してステップST112に進む。
ステップST112で画像符号化装置10bは、予測方向のインデックスmode_idx_dが、斜めの予測方向のうち最小のインデックス値である最小方向番号mode_direction_dよりも小さいか、または変換情報が「trans_idx=1」かどうかを判別する。画像符号化装置10bは、予測方向のインデックスmode_idx_dが最小方向番号mode_direction_dよりも小さい場合または変換情報「trans_idx=1」の場合の少なくともいずれかの場合、ステップST113に進む。また、画像符号化装置10bは、他の場合にステップST115に進む。
ステップST113で画像符号化装置10bは、水平垂直DCTを行いステップST114に進む。ステップST114で画像符号化装置10bは、水平垂直量子化を行いステップST117に進む。画像符号化装置10bは、例えば処理選択スイッチ12を第1変換部13側に切り替えて、第1変換部13と第1量子化部15を用いてDCTと量子化を行う。
ステップST115で画像符号化装置10bは、斜め方向パターンDCTを行いステップST116に進む。ステップST116で画像符号化装置10bは、斜め方向パターン量子化を行いステップST117に進む。画像符号化装置10bは、例えば処理選択スイッチ12を第2変換部14側に切り替える。また、画像符号化装置10bは、第2変換部14のパターン選択スイッチ140と第2量子化部16のパターン選択スイッチ160を予測方向のインデックスmode_idx_dに従って切り替えて、予測方向に対応した斜め方向パターンDCT部と斜め方向パターン量子化部を用いてDCTと量子化を行う。
ステップST117で画像符号化装置10bは、エントロピー符号化を行う。画像符号化装置10bは、量子化データDS5,DS6と予測モード情報DS20および動きベクトル情報DS35や変換情報DS40をエントロピー符号化部17bで符号化してステップST118に進む。
ステップST118で画像符号化装置10bは、符号化コストを保存する。画像符号化装置10bは、符号化制御部40は上述のようにコスト値Kの算出を行い、算出したコスト値Kを保存してステップST119に進む。
ステップST119で画像符号化装置10bは、変換情報trans_idxが「trans_idx=0」であるか判別する。画像符号化装置10bは、変換情報trans_idxが「trans_idx=0」である場合、ステップST120に進み、変換情報trans_idxが「trans_idx=0」でない場合、ステップST121に進む。
ステップST120で画像符号化装置10bは、変換情報trans_idxに「1」を加算して、新たな変換情報trans_idxとしてステップST112に戻る。
ステップST121で画像符号化装置10bは、予測方向のインデックスmode_idx_dに「1」を加算して、新たなインデックスmode_idx_dとしてステップST107に戻る。
その後、ステップST107で予測方向のインデックスmode_idx_dが最大方向数MAX_MODE_dよりも小さくないと判別してステップST122に進むと、画像符号化装置10bは、探索位置MV_xまたは探索位置MV_yを新たな位置に移動してステップST105に戻る。
また、ステップST105で探索位置が探索範囲を超える場合にはステップST123に進み、画像符号化装置10bは、サブブロックのインデックスsub_blkに「1」を加算して、新たなインデックスsub_blkとしてステップST103に戻る。
また、画像符号化装置10bは、ステップST103でサブブロックのインデックスsub_blkが最大方向数MAX_MODE_d以下でないと判定されるとステップST125に進む。
また、画像符号化装置10bは、フレーム間予測だけでなくステップST124で、図13,14で説明したフレーム内予測を行いステップST125に進む。
ステップST125で画像符号化装置10bは、最適モードのデータをロードする。画像符号化装置10bは、保存されている符号化コストを比較して、フレーム内予測やフレーム間予測で最も符号化効率の高いモードや予測方向を最適モードとして判別する。画像符号化装置10bは判別した最適モードのデータをロードしてステップST126に進む。
ステップST126で画像符号化装置10bは、最適モードで符号化を行った符号化データをマクロブロックで多重化して送出する。また、画像符号化装置10bは、符号化データに予測モード情報DS20すなわち最適モードのインデックスmode_idxと変換情報DS40すなわち変換情報trans_idxをエントロピー符号化して符号化データに含める。さらに、画像符号化装置10bは、最適モードにおける動きベクトル情報DS35をエントロピー符号化して符号化データに含める。
画像符号化装置10bの参照画像エッジ検出部31は、フレーム内予測の場合、第1の実施の形態と同様の動作を行う。また、フレーム間予測の場合、参照画像エッジ検出部31は、MPEGやH.264/AVC方式と同様に動き補償を行って得られる動き補償信号を用いてエッジ検出を行う。図27の(A)は、動き補償信号を用いて検出されたエッジを示している。画像符号化装置10bは、上述のように例えばSobelフィルタ等を用いてエッジ検出を行い、エッジの位置とエッジの強度を示す指標を得る。
変換ブロック設定部32は、フレーム内予測の場合、第1の実施の形態と同様の動作を行う。また、変換ブロック設定部32は、フレーム間予測の場合、動き補償信号のエッジの位置と強度を示す指標に基づき変換ブロックを設定する。例えば図27の(A)に示すようにエッジが検出された場合、図27の(B)に示すように、符号対象のサブブロックにも同じエッジがあると推定して、この結果をもとに、フレーム内予測の場合と同様にして変換ブロックを設定する。
[3−3.画像復号化装置の構成]
次に、画像符号化装置10bで生成された符号化データの復号化処理を行う画像復号化装置について説明する。
図28は、第3の実施の形態における画像復号化装置50bの構成を示している。なお、図28において、第1の実施の形態の画像復号化装置50と対応する構成については同一符号を付している。
画像復号化装置50bは、エントロピー復号化部51b、処理選択スイッチ52、第1逆量子化部53、第2逆量子化部54、第1逆変換部55、第2逆変換部56、演算部57、参照メモリ58、予測部60、動き補償部61、予測選択スイッチ62を備えている。また、画像復号化装置50bは、画像信号選択スイッチ70、参照画像エッジ検出部71、変換ブロック設定部72、および復号化制御部80を備えている。
エントロピー復号化部51bは、入力として受け付けた符号化データDSCのエントロピー復号化を行う。エントロピー復号化部51bは、画像符号化装置10bのエントロピー符号化部17bで行われたエントロピー符号化に対応するエントロピー復号化を行う。エントロピー復号化部51bは、エントロピー復号化を行うことにより得られた量子化データDS51と変換情報DS52(DS40に相当)を処理選択スイッチ52に出力する。また、エントロピー復号化部51bは、エントロピー復号化を行うことにより得られた予測モード情報DS53(DS20に相当)を予測部60に出力する。
処理選択スイッチ52は、エントロピー復号化部51bから供給された変換情報DS52に基づいて切り替えを行い、量子化データDS51を第1逆量子化部53または第2逆量子化部54に出力する。
第1逆量子化部53は、画像符号化装置10bの第1逆量子化部19と同様に構成されている。第1逆量子化部53は、処理選択スイッチ52を介して供給された量子化データDS51の逆量子化を行う。また、第1逆量子化部53は、変換ブロック設定部72から供給された変換ブロック設定情報DS76に基づく変換ブロック毎に量子化データの逆量子化を行う。第1逆量子化部53は、逆量子化を行うことにより得られた変換係数DS54を第1逆変換部55に出力する。
第1逆変換部55は、画像符号化装置10bの第1逆変換部21と同様に構成されている。第1逆変換部55は、第1逆量子化部53から供給された変換係数DS54に対して、水平垂直方向の逆DCTを、変換ブロック設定部72から供給された変換ブロック設定情報DS76に基づく変換ブロック毎に行う。第1逆変換部55は、逆DCTを行うことにより得られた予測誤差信号DS56を演算部57に出力する。
第2逆量子化部54は、画像符号化装置10bの第2逆量子化部20と同様に構成されている。第2逆量子化部54は、処理選択スイッチ52を介して供給された量子化データDS51の逆量子化を行う。また、第2逆量子化部54は、変換ブロック設定部72から供給された変換ブロック設定情報DS76に基づく変換ブロック毎に量子化データの逆量子化を行う。第2逆量子化部54は、逆量子化を行うことにより得られた変換係数DS55を第2逆変換部56に出力する。
第2逆変換部56は、画像符号化装置10bの第2逆変換部22と同様に構成されている。第2逆変換部56は、第2逆量子化部54から供給された変換係数DS55に対して、予測方向に応じた逆DCTを、変換ブロック設定部72から供給された変換ブロック設定情報DS76に基づく変換ブロック毎に行う。第2逆変換部56は、逆DCTを行うことにより得られた予測誤差信号DS57を演算部57に出力する。
演算部57は、第1逆変換部55から供給された予測誤差信号DS56、または第2逆変換部56から供給された予測誤差信号DS57に、予測選択スイッチ62から供給された予測画像信号DS73を加算して、画像信号DS58を生成する。演算部57は、生成した画像信号DS58を参照メモリ58に記憶させる。
参照メモリ58は、隣接ブロックの画像信号と複数のフレームの画像信号を蓄積する。なお、複数のフレームの画像信号はデブロッキングフィルタ処理が行われて蓄積される。
参照メモリ58から読み出された隣接ブロックの参照画像信号DS60は、予測部60と画像信号選択スイッチ70に供給される。また、参照メモリ58から読み出されたフレーム画像の参照画像信号DS65は、動き補償部61に供給される。
予測部60は、参照メモリ58から読み出された参照画像信号DS60を用いて、予測モード情報DS53で示された予測モードの予測を行い、予測画像信号DS61を生成して、予測選択スイッチ62に供給する。
動き補償部61は、最適モードとしてフレーム間予測モードが選択されている場合、最適モードの動きベクトル情報に基づき参照画像信号DS65を用いて動き補償を行い、予測画像信号DS66を生成する。動き補償部61は、生成した予測画像信号DS66を予測選択スイッチ62と画像信号選択スイッチ70に供給する。
予測選択スイッチ62は、最適モードとしてフレーム内予測モードが選択されている場合、予測部60で生成された予測画像信号DS61を選択して、予測画像信号DS73として演算部57に出力する。また、予測選択スイッチ62は、最適モードとしてフレーム間予測モードが選択されている場合、動き補償部61で生成された予測画像信号DS66を選択して、予測画像信号DS73として演算部57に出力する。
画像信号選択スイッチ70は、最適モードとしてフレーム内予測モードが選択されている場合、参照画像信号DS60を選択して参照画像エッジ検出部71に出力する。また、画像信号選択スイッチ70は、最適モードとしてフレーム間予測モードが選択されている場合、動き補償部61で生成された予測画像信号DS66を選択して、参照画像エッジ検出部71に出力する。
参照画像エッジ検出部71は、画像符号化装置10bの参照画像エッジ検出部31と同様に構成されている。参照画像エッジ検出部71は、画像信号選択スイッチ70で選択された復号画像信号を用いてエッジ検出を行い、エッジの位置とエッジの強度を示す指標DS75を変換ブロック設定部72に出力する。
変換ブロック設定部72は、画像符号化装置10bの変換ブロック設定部32と同様に構成されている。変換ブロック設定部72は、参照画像エッジ検出部71から供給された指標DS75と予測部25から供給された予測モード情報DS20に基づき、符号化対象のサブブロック内におけるエッジの連続性を推定する。変換ブロック設定部72は、推定結果から直交変換および量子化における変換ブロックを設定して、この設定した変換ブロックを示す変換ブロック設定情報DS76を生成する。変換ブロック設定部72は、生成した変換ブロック設定情報DS76を、第1逆量子化部53、第2逆量子化部54、第1逆変換部55、第2逆変換部56に出力する。
復号化制御部80は、符号化データの復号化処理における制御命令等の発行を行う。
[3−4.画像復号化装置の動作]
図29は、第3の実施の形態における画像復号化装置50bの動作を示すフローチャートである。ステップST151で画像復号化装置50bは、符号化データを取得する。画像復号化装置50bは、符号化データDSCを取得して、マクロブロック毎、あるいはマクロブロックペア毎に復号化を開始してステップST152に進む。
ステップST152で画像復号化装置50bは、エントロピー復号化を行う。画像復号化装置50bは、符号化データDSCの各シンタックスの可変長符号を復号化して、量子化データDS51や変換情報DS52、予測モード情報DS53、動きベクトル情報DS35を再生してステップST153に進む。
ステップST153で画像復号化装置50bは、シンタックスの解析を行う。画像復号化装置50bは、復号化を行うことにより得られたデータから、シンタックスの解析を行ってステップST154に進む。
ステップST154で画像復号化装置50bは、サブブロックに関する初期化を行う。画像復号化装置50bは、サブブロックのインデックスsub_blkを初期化して「sub_blk=0」とし、同時に最大サブブロック数MAX_SUB_BLKをセットしてステップST155に進む。
ステップST155で画像復号化装置50bは、サブブロックのインデックスsub_blkが最大サブブロック数MAX_SUB_BLKより小さいか判別する。画像復号化装置50bは、サブブロックのインデックスsub_blkが最大サブブロック数MAX_SUB_BLKより小さい場合、マクロブロック内のサブブロックにまだ復号化していないサブブロックが存在することからステップST156に進む。画像復号化装置50bは、サブブロックのインデックスsub_blkが最大サブブロック数MAX_SUB_BLKより小さくない場合、マクロブロック内のサブブロックに符号化していないサブブロックは存在しないことからステップST170に進む。
ステップST156で画像復号化装置50bは、フレーム間予測が選択されているか判別する。画像復号化装置50bは、最適モードとしてフレーム間予測が選択されている場合にステップST157に進み、フレーム内予測が選択されている場合にステップST169に進む。
ステップST157で画像復号化装置50bは、予測方向のインデックスmode_idx_dと変換情報trans_idxおよび動きベクトル情報をロードする。画像復号化装置50bは、予測方向のインデックスmode_idx_dと変換情報trans_idxおよび動きベクトル情報を符号化データから抽出してステップST158に進む。
ステップST158で画像復号化装置50bは、動き補償信号を生成する。画像復号化装置50bは、参照フレームの画像信号と動きベクトル情報DS35に基づき、動きベクトル情報DS35の動きベクトルで示された探索位置MV_x,MV_yの動き補償信号を生成してステップST159に進む。
ステップST159で画像復号化装置50bは、エッジ検出を行う。画像復号化装置50bは、生成した動き補償信号を用いてエッジ検出を行い、エッジの位置とエッジの強度を示す指標DS75を生成してステップST160に進む。
ステップST160で画像復号化装置50bは、変換ブロッを設定する。画像復号化装置50bは、エッジの位置とエッジの強度を示す指標DS75に基づいて、復号化対象のサブブロック内におけるエッジの連続性から変換ブロックを設定してステップST161に進む。
ステップST161で画像復号化装置50bは、インデックスmode_idx_dが、斜め方向予測モードのモード番号のうち最小値である斜め方向予測モードの最小モード番号mode_directionよりも小さいか、または変換情報が「trans_idx=1」かどうかを判別する。画像復号化装置50bは、インデックスmode_idxが最小モード番号mode_directionよりも小さい場合または変換情報「trans_idx=1」の場合の少なくともいずれかの場合、ステップST162に進む。また、画像復号化装置50bは、他の場合にステップST164に進む。
ステップST162で画像復号化装置50bは、垂直水平逆量子化を行いステップST163に進む。ステップST163で画像復号化装置50bは、垂直水平逆DCTを行いステップST166に進む。画像復号化装置50bは、例えば処理選択スイッチ52を第1逆量子化部53側に切り替えて、第1逆量子化部53と第1逆変換部55を用いて逆量子化と逆DCTを行う。
ステップST164で画像復号化装置50bは、斜め方向パターン逆量子化を行いステップST165に進む。ステップST165で画像復号化装置50bは、斜め方向パターン逆DCTを行いステップST166に進む。画像復号化装置50bは、例えば処理選択スイッチ52を第2逆量子化部54側に切り替える。また、画像復号化装置50bは、第2逆量子化部54と第2逆変換部56のパターン選択スイッチを予測方向のインデックスmode_idx_dに従って切り替える。画像復号化装置50bは、インデックスmode_idx_dに従ってスイッチを切り替えることで、予測方向に対応した斜め方向パターン逆量子化部と斜め方向パターン逆DCT部を用いて逆量子化と逆DCTを行う。
ステップST166で画像復号化装置50bは、予測誤差と予測画像の合成を行う。画像復号化装置50bは、予測誤差信号DS56または予測誤差信号DS57に対して予測選択スイッチ62から出力された予測画像信号DS73を加算して、画像信号DS58を生成してステップST167に進む。
ステップST167で画像復号化装置50bは、参照メモリに蓄積する。画像復号化装置50bは、生成した画像信号DS58を参照メモリ58に蓄積してステップST168に進む。
ステップST168で画像復号化装置50bは、サブブロックのインデックスsub_blkに「1」を加算して、新たなインデックスsub_blkとしてステップST155に戻る。
また、ステップST156でフレーム内予測が選択されていると判別されてステップST169に進むと、画像復号化装置50bは、図20のステップST56からステップST67まで処理を行ったのちステップST155に戻る。
その後、画像復号化装置50bは、ステップST155でサブブロックのインデックスsub_blkが最大方向数MAX_MODE_d以下でないと判定してステップST170に進む。ステップST170で画像復号化装置50bは、サブブロックの復号化が完了したことから参照メモリ58に蓄積されている画像信号を復号画像の画像信号として出力する。
このように、第3の実施の形態によれば、フレーム内予測だけでなくフレーム間予測に基づいて、エッジの連続性を考慮して変換ブロックが設定される。したがって、フレーム間予測においても、連続するエッジが複数の変換ブロックをまたぐことを防止して主観画質を向上させることができる。また、エッジが含まれない変換ブロックが増加されてエネルギー集中の向上をはかることができる。
なお、第3の実施の形態では、探索位置を順次移動しながら、予測方向毎に符号化コストを算出した。しかし、例えば符号化対象のサブブロックと最も相関が高いブロック位置を検出して、この最も相関が高いブロック位置で予測方向毎に符号化コストを算出して、この算出した予測方向毎の符号化コストとフレーム内予測の予測モード毎の符号化コストを比較して、最適モードを決定することも可能である。この場合には、探索位置を順次移動させる毎に符号化コストを算出する必要がないので演算処理を軽減できる。
また、明細書中において説明した一連の処理はハードウェア、またはソフトウェア、あるいは両者の複合構成によって実行することが可能である。ソフトウェアによる処理を実行する場合は、処理シーケンスを記録したプログラムを、専用のハードウェアに組み込まれたコンピュータ内のメモリにインストールして実行させる。あるいは、各種処理が実行可能な汎用コンピュータにプログラムをインストールして実行させることが可能である。
例えば、プログラムは記録媒体としてのハードディスクやROM(Read Only Memory)に予め記録しておくことができる。あるいは、プログラムはフレキシブルディスク、CD−ROM(Compact Disc Read Only Memory),MO(Magneto optical)ディスク,DVD(Digital Versatile Disc)、磁気ディスク、半導体メモリなどのリムーバブル記録媒体に、一時的あるいは永続的に格納(記録)しておくことができる。このようなリムーバブル記録媒体は、いわゆるパッケージソフトウェアとして提供することができる。
なお、プログラムは、上述したようなリムーバブル記録媒体からコンピュータにインストールする他、ダウンロードサイトから、コンピュータに無線転送したり、LAN(Local Area Network)、インターネットといったネットワークを介して、コンピュータに有線で転送する。コンピュータでは、そのようにして転送されてくるプログラムを受信し、内蔵するハードディスク等の記録媒体にインストールすることができる。
なお、明細書に記載された各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。また、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
また、上述の実施の形態では、直交変換方法としてDCTを用いたが、KLT、DST、離散ウェーブレット変換(Discrete Wavelet Transform)を用いるようにしてもよい。また、ブロックサイズも上述の実施の形態のサイズに限らず、さらに大きなブロックサイズであってもよい。
上述の実施の形態は、例示という形態で本技術を開示しており、本技術の要旨を逸脱しない範囲で当業者が実施の形態の修正や代用をなし得ることは自明である。すなわち、本技術の要旨を判断するためには、特許請求の範囲を参酌すべきである。