説明

隣接ブロックの情報を用いた可変長コードテーブル切り替え方法

【課題】マルチメディアデータの符号化における圧縮を改良することができる効率的な可変長コード表を切り替える方法を提供すること。
【解決手段】可変長テーブルを決定するために、0以外の係数の個数に関する情報に加えて、隣接ブロックで用いた変換サイズに関する情報も利用する。これによって、より正確に可変長コードテーブルを選択できるようになり、圧縮の効率を向上させることができる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、あらゆる高度なマルチメディアデータ符号化、特にISO/IEC 14496-10規格に用いて符号化効率を向上させることができる。本発明は、マルチメディアデータの符号化における圧縮を改良することができる効率的な可変長コードテーブル切り替え方法を提供する。
【背景技術】
【0002】
可変長符号化および算術符号化は、マルチメディアデータの符号化に用いられるエントロピー符号化方法を代テーブルする二つの方法である。可変長符号化方法は、JPEG、ISO/IEC 13818-2、ISO/IEC 14496-2、ISO/IEC 14496-10など、様々な規格で用いられている。特にISO/IEC 14496-10規格などにおけるマルチメディアデータ符号化の可変長符号化方法では、隣接ブロックから与えられる情報に基づいて可変長コードテーブルを切り替える必要がある。ISO/IEC 14496-10規格における可変長符号化の場合、隣接ブロックに含まれる、0以外の係数の個数に関する情報が必要となる。
【0003】
図1は、ISO/IEC 14496-10規格で用いられる従来の可変長コードテーブル切り替え方法を示す。この従来技術では、まず、モジュール101に示されるように、上に位置するブロックが利用可能であるか否かがチェックされる。利用可能である場合、モジュール102において、nBは上のブロックの0以外の係数の個数に設定される。上に位置するこのブロックが利用可能でない場合、モジュール103に示されるように、nBは0に設定される。従来技術では、次にモジュール104において、対象ブロックの左に位置するブロックが利用可能であるか否かがチェックされる。左のブロックが利用可能である場合、モジュール106において、nAに左のブロックの0以外の係数の個数が設定される。左のブロックが利用可能でない場合、nAに0が設定される。従来技術では、モジュール107において、上のブロックおよび左のブロックの両方が利用可能であるか否かがチェックされる。両方のブロックが利用可能である場合、モジュール109において、nAとnBの平均を求めることでnCを決定する。それ以外は、モジュール108において、nAとnBの和を求めることでnCを決定する。最後に、nCの値を用いて可変長コードテーブルを切り替える。
【0004】
近年のマルチメディアデータ符号化技術の発展により、変換処理において異なるブロックサイズに対応することで符号化処理は大きく進歩している。ISO/IEC 14496-10規格は、4×4の逆変換および8×8の逆変換の2種類の逆変換方法を定義している。これら2つの異なる変換サイズを組み合わせて用いることで、これらの変換サイズのいずれかを単独で用いる場合に比べて符号化処理が改善した。
【0005】
現在、ISO/IEC 14496-10規格では、8×8の変換サイズを用いた可変長符号化に対応していない。図3において影が付いていないモジュールが示すのは、ISO/IEC 14496-10規格で用いられる従来技術での、4×4変換サイズを用いた場合のシンタックス要素TotalCoeff、TrailingOnes、total_zerosおよびrun_beforeの復号処理である。まず、モジュール307において、変数nCに基づいて選択された可変長コードテーブルを用いてTotalCoeffおよびTrailingOnesが復号される。次にモジュール308において、TotalCoeffを用いて選択された可変長コードテーブルを用いてシンタックス要素total_zerosが復号される。最後にモジュール309において、total_zerosを用いて選択された可変長コードテーブルを用いてシンタックス要素が復号される。
【発明の開示】
【発明が解決しようとする課題】
【0006】
従来技術では、隣接ブロックにおける0以外の係数の個数に基づいて可変長コードテーブルを切り替えている。しかしながら、隣接ブロック間で異なる変換サイズが用いられている場合、ブロックにおける0以外の係数の個数の最大値は、使用される変換サイズにより異なる。従って、これらの隣接ブロックの0以外の係数の個数の範囲を考慮せずに可変長コードテーブルを切り替えても効率が良くない。
【課題を解決するための手段】
【0007】
この問題を解決するため、可変長コードテーブルを切り替える新しい方法を紹介する。この新しいテーブル切り替え方法により、従来技術に比べて符号化効率を向上させることができる。
【0008】
現在、従来技術における可変長コードテーブルの切り替え方法では、隣接ブロックの0以外の係数の個数に関する情報のみが用いられている。本発明の新規性は、可変長テーブルを決定するために、0以外の係数の個数に関する情報に加えて、隣接ブロックで用いた変換サイズに関する情報をも利用する点にある。これによって、より正確に可変長コードテーブルを選択できるようになり、符号化の効率が向上する。
【0009】
本発明の動作について以下に説明する。本発明は、符号化されたビットストリームを符号化もしくは復号化するために可変長コードテーブルを用いる前に利用できる。本発明は、変換後の係数ブロックを符号化または復号化するための最適な可変長コードテーブルを選択するために利用できる。
【発明の効果】
【0010】
本発明は、異なる変換サイズが混在する場合にも可変長符号化テーブルを効率よく選択できるという効果を奏する。この効果は、可変長コードを用いた圧縮の形式において顕著である。
【発明を実施するための最良の形態】
【0011】
本発明を用いて可変長コードテーブルを選択することで、従来技術に比べて圧縮技術が向上する。図2は、本発明における、0以外の係数の個数と使用した変換サイズとに基づく可変長コードテーブルの選択を示す。本発明では、図2のモジュール201において、上および左に位置するブロックが両方とも利用可能であるか否かをチェックする。少なくともいずれかのブロックが利用可能でない場合、本発明では、モジュール202において、対象ブロックの左のブロックが利用可能であるか否かをチェックする。左のブロックが利用可能である場合、モジュール203において、変数nA’に左のブロックの0以外の係数の個数を設定する。左のブロックが利用可能でない場合、モジュール206において、変数nAに0を設定する。本発明は、モジュール204において、左のブロックの変換サイズと対象ブロックの変換サイズとを比較する。これらの変換サイズが同じでない場合、モジュール207において、変数nAにnA’をスケーリングした値を設定する。変換サイズが同じである場合、モジュール205においてnAにnA’を設定する。
【0012】
次に、本発明では、モジュール208において、上のブロックが利用可能であるか否かをチェックする。上のブロックが利用可能である場合、モジュール209において、変数nB’に上のブロックの0以外の係数の個数を設定する。左のブロックが利用可能でない場合、モジュール212において、変数nBに0を設定する。本発明では、モジュール210において、上のブロックの変換サイズと対象ブロックの変換サイズとを比較する。これらの変換サイズが同じでない場合、モジュール213において、変数nBにnB’をスケーリングした値を設定する。変換サイズが同じである場合、モジュール213において、nBにnB’を設定する。
【0013】
モジュール201以降、上のブロックおよび左のブロックの両方が利用可能である場合、本発明では、モジュール214において、上のブロックおよび左のブロックの変換サイズが同じであるか否かをチェックする。これらの変換サイズが異なる場合、本発明では、モジュール215において、左のブロックの変換サイズが対象ブロックの変換サイズに等しいか否かをチェックする。これらが同じ場合、モジュール217において、変数nBに0を設定し、変数nAに左のブロックの0以外の係数の個数に等しい値を設定する。変換サイズが異なる場合、モジュール216において、変数nAに0を設定し、変数nBに上のブロックの0以外の係数の個数に等しい値を設定する。左のブロックの変換サイズと上のブロックの変換サイズが同じである場合、モジュール218において、変数nAに左のブロックの0以外の係数の個数に等しい値を設定し、変数nBに上のブロックの0以外の係数の個数に等しい値を設定する。次に、モジュール219において、nAとnBの平均を求めることでnC’を計算する。続いてモジュール220において、対象ブロックの変換サイズと上記2つのブロックの変換サイズとを比較する。これらの変換サイズが異なる場合、モジュール222において、変数nCにnC’をスケーリングした値を設定する。変換サイズが同じである場合、変数nCをnC’の値と等しくする。上記隣接ブロックのうち少なくとも一つの変換サイズが対象ブロックのそれと異なる場合、または、上記隣接ブロックのうち少なくとも一つが利用可能でない場合、モジュール223において、変数nCにnAとnBとの和を設定する。最後に、変数nCを用いて可変長コードテーブルを選択する。
【0014】
対象ブロックの変換サイズが8×8であるのに対して、隣接ブロックが変換サイズ4×4で符号化されている場合、8×8の隣接ブロックに対応する4つの4×4ブロックの0以外の係数の個数の平均値を使って、モジュール218におけるnAおよびnBの両方を求めることも可能である。すなわち、4つの4×4ブロックで構成される8×8隣接ブロック全体の0以外の係数の個数の合計を4で除算する。
【0015】
モジュール207、213、および222において、上記変数はスケーリング係数でスケーリングされる。このスケーリング係数は、ブロックの係数の最大値を用いて求めることができる。数式1は、スケーリング係数の求め方を示す。
【0016】
【数1】

ここで、ブロックNは変換サイズが異なる隣接ブロックを示す。係数の個数の最大値は変換サイズにより異なる。例えば、変換サイズが4×4である場合、係数の個数の最大値は16となる。変換サイズが8×8である場合には、係数の個数の最大値は64となる。従って、隣接ブロックが2つとも利用可能であり、かつ、それらのブロックの変換サイズが8×8である場合に、対象ブロックの変換サイズが4×4であれば、スケーリング係数は1/4となる。
【0017】
図3は、本発明における、シンタックス要素TotalCoeff、TrailingOnes、total_zerosおよびrun_beforeの復号処理を示す。モジュール301において、対象ブロックが変換サイズ8×8で符号化されているか否かを判断する。変換サイズが8×8である場合、本発明では、モジュール302において、ビットストリームからuse_CALVC_mapping_tableフラグを復号する。use_CALVC_mapping_tableフラグが1と等しい場合、本発明では、モジュール305において、変数nC を用いて選択された可変長コードテーブルを用いてTotalCoeffおよびTrailingOnesを復号する。use_CALVC_mapping_tableフラグが0に等しい場合、本発明では、モジュール304において、ビットストリームから直接TotalCoeff およびTrailingOnesを読み出す。シンタックス要素TotalCoeffは6ビットの固定長コードで符号化され、シンタックス要素TrailingOnesは2ビットの固定長コードで符号化される。次に、本発明では、モジュール306において、ビットストリームから直接シンタックス要素total_zerosを読み出す。シンタックス要素total_zerosは固定長コードで符号化される。この固定長コードのサイズは、(64−TotalCoeff)を2進数表現するのに必要なビット数の最大値により異なる。この固定長コードの大きさも6ビットであってもよい。最後に、本発明では、図4に示されるような新しい可変長コードテーブルからシンタックス要素run_beforeを直接読み出す。
【図面の簡単な説明】
【0018】
【図1】隣接ブロックの0以外の係数の個数を用いて可変長コードテーブルを選択する従来技術の一例を示す図である。
【図2】隣接ブロックの0以外の係数の個数と変換サイズとを用いて可変長コードテーブルを選択する本発明の一例を示す図である。
【図3】シンタックス要素TotalCoeff、TrailingOnes、total_zerosおよびrun_beforeを復号する本発明の一例を示す図である。
【図4】シンタックス要素run_beforeを復号するために用いられる新しい可変長コードテーブルを示す図である。

【特許請求の範囲】
【請求項1】
隣接するブロックの情報を用いて可変長コードテーブルを切り替える方法であって、
上および左の隣接ブロックの両方が利用可能であるか否かを判定するステップと、
前記利用可能な隣接ブロックの変換サイズを求めるステップと、
前記隣接ブロックがともに利用可能である場合、当該隣接ブロックの変換サイズを比較するステップと、
前記隣接ブロックの0以外の係数の個数を求めるステップと、
対象ブロックの変換サイズを求めるステップと、
前記隣接するブロックの変換サイズと対象ブロックの変換サイズとを比較するステップと、
上および左の隣接ブロックがともに利用可能であり、かつ、それらのブロックの変換サイズが同じである場合、前記0以外の係数の個数の平均を算出するステップと、
前記隣接ブロックの少なくとも一方が利用可能でない場合、または、前記隣接ブロックの変換サイズの一方のみが前記対象ブロックの変換サイズと同じである場合、前記0以外の係数の個数の和を算出するステップと、
前記隣接ブロックの変換サイズが前記対象ブロックの変換サイズと異なる場合、スケーリング係数を用いて前記0以外の係数の個数の和または平均に対してスケーリングを行うステップと、
前記0以外の係数の個数の和または平均を用いて可変長コードテーブルを切り替えるステップと、
前記可変長コードテーブルを用いてシンタックス要素を復号するステップとを含む。
【請求項2】
請求項1に記載の可変長コードテーブル切り替え方法であって、前記ブロックのサイズは、当該ブロックの変換サイズにより決まる。
【請求項3】
請求項1に記載の可変長コードテーブル切り替え方法であって、前記変換サイズは、残差ブロックを空間領域から周波数領域に変換するために用いる2次元マトリックスの大きさである。
【請求項4】
請求項1に記載の可変長コードテーブル切り替え方法であって、ブロック間の変換サイズを比較するステップは、さらに、
各ブロックの前記変換サイズにおける係数の個数の最大値を求めるステップと、
前記ブロックの係数の個数の前記最大値を比較するステップとを含む。
【請求項5】
請求項1および4に記載の可変長コードテーブル切り替え方法であって、前記隣接ブロックの変換サイズを比較し、当該変換サイズの前記係数の個数の最大値が互いに等しい場合、当該変換サイズが互いに同じであるとみなす。
【請求項6】
請求項1に記載の可変長コードテーブル切り替え方法であって、一方の隣接ブロックが利用可能でない場合、当該隣接ブロックの前記0以外の係数の個数に0を設定する。
【請求項7】
請求項1および6に記載の可変長コードテーブル切り替え方法であって、一方の隣接ブロックの変換サイズが対象ブロックとは異なる場合、かつ、他方の隣接ブロックが利用可能であり、その変換サイズが対象ブロックと同じである場合、前記一方のブロックの前記0以外の係数の個数に0を設定する。
【請求項8】
請求項1、6および7に記載の可変長コードテーブル切り替え方法であって、対象ブロックの変換サイズが一方の隣接ブロックよりも大きい場合、当該一方の隣接ブロックの前記0以外の係数の個数に、最も近い隣接ブロックの0以外の係数の個数を設定する。
【請求項9】
請求項1、6および7に記載の可変長コードテーブル切り替え方法であって、対象ブロックの変換サイズが一方の隣接ブロックよりも大きい場合、当該一方の隣接ブロックの前記0以外の係数の個数に、複数の隣接ブロックの0以外の係数の個数の平均を設定する。
【請求項10】
請求項1、6、7および9に記載の可変長コードテーブル切り替え方法であって、0以外の係数の個数の平均を算出するステップは、さらに、
対象ブロックの変換サイズを取得するステップと、
隣接ブロックの変換サイズを求めるステップと、
前記対象ブロックに対応する大きさの、より大きなブロックを形成するために必要な前記隣接ブロックの数を求めるステップと、
前記ブロックの0以外の係数の個数の和を求めるステップと、
前記和を前記ブロックの数で除算するステップとを含む。
【請求項11】
請求項1に記載の可変長コードテーブル切り替え方法であって、前記平均を算出するステップは、さらに、
前記二つのブロックの前記0以外の係数の個数の和を求めるステップと、
1を加えて前記和を切り上げるステップと、
前記和の値を左に1だけシフトするステップとを含む。
【請求項12】
請求項1に記載の可変長コードテーブル切り替え方法であって、前記スケーリング係数を求めるプロセスは、さらに、
対象ブロックの係数の個数の最大値を求めるステップと、
隣接ブロックの係数の個数の最大値を求めるステップと、
前記対象ブロックの係数の個数の最大値を、前記隣接ブロックの係数の個数の最大値で除算するステップとを含む。
【請求項13】
請求項1、11および12に記載の可変長コードテーブル切り替え方法であって、前記スケーリングを行うステップと平均を算出するステップとは、前記シフトを行うステップにおいて実現される。
【請求項14】
請求項1に記載の可変長コードテーブル切り替え方法であって、前記シンタックス要素を復号化するステップは、さらに、
対象ブロックの変換サイズが8×8であるか否かを判定するステップと、
可変長コードが用いられたか否かを示すフラグを復号するステップと、
シンタックス要素TotalCoeffおよびTrailingOnesを復号するステップと、
固定長コードを用いてtotal_zerosを復号するステップと、
可変長コードテーブルを用いてシンタックス要素run_beforeを復号するステップとを含む。
【請求項15】
請求項1および14に記載の可変長コードテーブル切り替え方法であって、前記フラグは、前記対象ブロックの変換サイズが8×8である場合に符号化および復号化される。
【請求項16】
請求項1、14および15に記載の可変長コードテーブル切り替え方法であって、前記フラグは、ビットストリームに含まれるビットとして符号化および復号化される。
【請求項17】
請求項1、14、15および16に記載の可変長コードテーブル切り替え方法であって、前記シンタックス要素TotalCoeffおよびTrailingOnesは、前記フラグが1である場合に、可変長コードテーブルを用いて符号化および復号化される。
【請求項18】
請求項1、14、15および16に記載の可変長コードテーブル切り替え方法であって、前記可変長コードテーブルは、前記隣接ブロックの0以外の係数の個数の和または平均を用いて選択される。
【請求項19】
請求項1、14、15および16に記載の可変長コードテーブル切り替え方法であって、前記シンタックス要素TotalCoeffおよびTrailingOnesは、前記フラグが0である場合に、固定長コードを用いて符号化および復号化される。
【請求項20】
請求項1、14、15、16および19に記載の可変長コードテーブル切り替え方法であって、TotalCoeffを符号化および復号化するのに用いる固定長コードの長さは6ビットである。
【請求項21】
請求項1、14、15、16および19に記載の可変長コードテーブル切り替え方法であって、TrailingOnesを符号化および復号化するのに用いる固定長コードの長さは2ビットである。
【請求項22】
請求項1および14に記載の可変長コードテーブル切り替え方法であって、total_zerosを符号化および復号化するのに用いる固定長コードの長さは6ビットである。
【請求項23】
請求項1および14に記載の可変長コードテーブル切り替え方法であって、total_zeros を符号化および復号化するのに用いる固定長コードの長さは、64からTotalCoeffの値を減算した値を2進数表現するために必要なビット数である。
【請求項24】
請求項1および14に記載の可変長コードテーブル切り替え方法であって、ブロック中の残りの0の個数が6よりも大きく、かつ、run_beforeの値が14よりも大きい場合、前記シンタックス要素run_beforeは、18ビットの固定長コードで符号化および復号化される。
【請求項25】
請求項1、14および24に記載の可変長コードテーブル切り替え方法であって、前記18ビットは、11ビットの0と、これに続く1ビットの1と、これに続くrun_beforeを2進数表現した6ビットの値とで構成される。



【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate


【公開番号】特開2006−33148(P2006−33148A)
【公開日】平成18年2月2日(2006.2.2)
【国際特許分類】
【外国語出願】
【出願番号】特願2004−205881(P2004−205881)
【出願日】平成16年7月13日(2004.7.13)
【出願人】(000005821)松下電器産業株式会社 (73,050)
【Fターム(参考)】