(57)【要約】  可変長符号化テーブルが対応する直交変換サイズより大きいサイズの直交変換係数の量子化値を符号化する際に、量子化値を一次元配置に並べ直してランとレベルの組を求め、前記可変長符号化テーブルが対応する直交変換サイズの直交変換の面積と、符号化対象の直交変換の面積との比からグループ数を求め、前記ランとレベルの組を前記グループ数のグループに分類し、各ランを前記グループ数で割り、その商をランとし、前記各グループのランとレベルの組のそれぞれに対して、前記可変長符号化テーブルを参照して符号長を求め、全グループの符号長の総和を発生符号量と推定する符号量推定方法。
2008111511.tif 000002
【特許請求の範囲】
【請求項１】
複数の直交変換サイズが選択可能で、量子化後の二次元直交変換係数を予め定められた一次元配置に並べ替えて符号化を行う第一の情報源符号化方法により符号化を行う際に、前記第一の情報源符号化方法よりも演算コストが低い符号化方法であって、可変長符号化テーブルを用いて符号化を行う第二の情報源符号化方法を用いて、前記第一の情報源符号化方法による発生符号量を推定する映像符号化における符号量推定方法において、
前記可変長符号化テーブルが対応する直交変換サイズより大きいサイズの直交変換係数の量子化値を符号化する際に、前記第一の情報源符号化方法の順序に従って量子化値を一次元配置に並べ直して連続する０の個数であるランとその後に続く有意係数であるレベルの組を求め、その求められたランとレベルの組を保持する過程と、
前記可変長符号化テーブルが対応する直交変換サイズの直交変換の面積と、符号化対象の直交変換の面積との比からグループ数を求める過程と、
前記ランとレベルの組を前記グループ数のグループに分類する過程と、
前記ランとレベルの組におけるランを前記グループ数で割り、その商をランとする過程と、
前記各グループのランとレベルの組のそれぞれに対して、前記可変長符号化テーブルを参照して符号長を求める過程と、
前記求めた符号長の総和を算出する過程とを有し、
算出した全グループの符号長の総和を、前記第一の情報源符号化方法による発生符号量と推定する
ことを特徴とする符号量推定方法。
【請求項２】
前記ランとレベルの組を前記グループに分類する過程では、ランとレベルの組について検出した順にインデックス番号を割り当て、その割り当てたインデックス番号を前記グループ数で割った剰余が等しい組同士を同じグループとして分ける
ことを特徴とする請求項１に記載の符号量推定方法。
【請求項３】
前記ランとレベルの組を前記グループに分類する過程では、ランに１を加えた数を、ランとレベルの組を検出した順に累計し、前記累計数をグループ数で割った剰余が等しい組同士を同じグループとして分ける
ことを特徴とする請求項１に記載の符号量推定方法。
【請求項４】
複数の直交変換サイズが選択可能で、量子化後の二次元直交変換係数を予め定められた一次元配置に並べ替えて符号化を行う第一の情報源符号化方法により符号化を行う際に、前記第一の情報源符号化方法よりも演算コストが低い符号化方法であって、可変長符号化テーブルを用いて符号化を行う第二の情報源符号化方法を用いて、前記第一の情報源符号化方法による発生符号量を推定する映像符号化における符号量推定装置において、
前記可変長符号化テーブルが対応する直交変換サイズより大きいサイズの直交変換係数の量子化値を符号化する際に、前記第一の情報源符号化方法の順序に従って量子化値を一次元配置に並べ直して連続する０の個数であるランとその後に続く有意係数であるレベルの組を求め、その求められたランとレベルの組を保持する手段と、
前記可変長符号化テーブルが対応する直交変換サイズの直交変換の面積と、符号化対象の直交変換の面積との比からグループ数を求める手段と、
前記ランとレベルの組を前記グループ数のグループに分類する手段と、
前記ランとレベルの組におけるランを前記グループ数で割り、その商をランとする手段と、
前記各グループのランとレベルの組のそれぞれに対して、前記可変長符号化テーブルを参照して符号長を求める手段と、
前記求めた符号長の総和を算出する手段とを備え、
算出した全グループの符号長の総和を、前記第一の情報源符号化方法による発生符号量と推定する
ことを特徴とする符号量推定装置。
【請求項５】
請求項１に記載の符号量推定方法を、コンピュータに実行させるための符号量推定プログラム。
【請求項６】
請求項１に記載の符号量推定方法を、コンピュータに実行させるための符号量推定プログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、映像に直交変換を施し、可変長符号を用いて符号化処理を行う映像符号化における符号量推定方法、装置、そのプログラムおよび記録媒体に関するものである。
本願は、２００７年３月１４日に出願された特願２００７−０６４２８３号に基づき優先権を主張し、その内容をここに援用する。
【背景技術】
【０００２】
近年の映像符号化方式の多くは、フレームを小さな領域に分け、予測画像からの差分画像に直交変換と量子化を施した後、エントロピー符号化を行うことで映像情報の圧縮を行う。【０００３】
現在、映像符号化フォーマットの主流になりつつあるＨ．２６４映像符号化方式（非特許文献１参照）では、エントロピー符号化としてテーブル参照を用いて符号化を行うコンテクスト適応型可変長符号化方式（以下“ＣＡＶＬＣ”）に加え、より符号化効率が高いコンテクスト適応型算術符号（以下“ＣＡＢＡＣ”）も選択可能である。
このＣＡＢＡＣは、定常信号を理論限界まで圧縮可能な符号化方式であり、高効率符号化の必須技術といえる。しかし、ＣＡＢＡＣは、ＣＡＶＬＣと比較して演算コストが非常に大きいのが欠点である（非特許文献２参照）。【０００４】
さて、映像を符号化し、例えばネットワーク配信などの送信帯域に制限がある用途で使用するストリームを作成する場合、帯域内に収まるように、単位時間当たりの発生符号量を一定に保つ必要がある。一般的には、量子ステップサイズ（以下“Ｑstep”）を変化させて発生符号量を制御するレート制御と呼ばれる処理を行う。
例えば、各符号化ブロック毎に符号化して発生符号量を求め、その結果から次のブロックのＱstepを調整していくことで、発生符号量を一定に保つことができる。【０００５】
ここで、ＣＡＢＡＣを使用した場合、発生符号量を知るまでに時間がかかるため、符号化遅延が増大するという問題がある。この遅延を少なくするために、例えばＱstepと発生符号量の関係を関数で近似し、発生符号量を推定するという方法が提案されている（特許文献１参照）。【０００６】
しかし、近似関数を用いる方法は、映像によって推定精度にばらつきが出るという問題がある。より高精度な推定を行う場合には、例えばＣＡＢＡＣよりも演算コストが少ないＣＡＶＬＣをＣＡＢＡＣの符号量推定に使う方法が考えられる。この場合、一度可変長符号化を施した結果を利用するため、さらに高精度な符号量推定が可能となる。【０００７】
ＣＡＶＬＣをＣＡＢＡＣの符号量推定に用いることが可能な符号化処理のフローチャートを、図７Ａ及び７Ｂに示す。図７Ａがメイン処理、図７ＢがＣＡＢＡＣ処理を示している。【０００８】
最初に、図７Ａのメイン処理（ステップＳ１０１〜Ｓ１１１）について説明する。
まず、Ｉｎｔｅｒ予測モードとＩｎｔｒａ予測モードを決定する（Ｓ１０１、Ｓ１０２）。
次に、Ｉｎｔｒａ／Ｉｎｔｅｒ判定をして予測モードを決定し（Ｓ１０３）、そのモードについて予測残差を求め（Ｓ１０４）、ＤＣＴを施す（Ｓ１０５）。
ＤＣＴ変換係数に対し、与えられたＱstepを用いて量子化を行う（Ｓ１０６）。
量子化後の変換係数は一次元配置に直して係数情報をＣＡＢＡＣ計算部へ送ると同時に、その係数情報から符号量推定を行う（符号化前処理）（Ｓ１０７）。
一方、量子化後の係数は逆量子化（Ｓ１０８）、ＩＤＣＴ（Ｓ１０９）の後、予測画像に加算して復号画像を生成する（Ｓ１１０）。
最後に、復号画像にフィルタ処理を施す（Ｓ１１１）。【０００９】
次に、図７ＢのＣＡＢＡＣ処理（ステップＳ１２１〜Ｓ１２５）について説明する。
符号化前処理（Ｓ１０７）で生成した係数情報の受信を待つ（Ｓ１２１〜Ｓ１２２）。データを受信したならばＣＡＢＡＣ処理を施し（Ｓ１２３）、生成したストリームを送信する（Ｓ１２４）。最後に、発生符号量を符号量制御部へと送る（Ｓ１２５）。【００１０】
この処理を実現するための構成図の一例を図８に示す。
この装置は、Ｉｎｔｅｒ予測モード決定部１０１、Ｉｎｔｒａ予測モード決定部１０２、予測モード選択部１０３、スイッチ１０４、減算器１０５、ＤＣＴ部１０６、量子化部１０７、符号量制御部１０８、符号化前処理部１０９、エントロピー符号化部１１０、逆量子化部１１１、ＩＤＣＴ部１１２、加算器１１３、復号画像保存バッファ１１４、フィルタ部１１５、参照画像保存バッファ１１６から構成される。【００１１】
Ｉｎｔｅｒ予測モード決定部１０１は、参照画像保存バッファ１１６の参照画像から動き補償予測を行い、Ｉｎｔｅｒ予測モードを決定して予測モード情報を予測モード選択部１０３に送る。また、予測画像をスイッチ１０４に送る。
Ｉｎｔｒａ予測モード決定部１０２は、復号画像保存バッファ１１４の復号画像からＩｎｔｒａ予測モードを決定し、予測モード情報を予測モード選択部１０３に送る。また、予測画像をスイッチ１０４に送る。【００１２】
予測モード選択部１０３は、予測モードを決定し、スイッチ１０４に制御信号を送ってＩｎｔｒａ予測モードとＩｎｔｅｒ予測モードのうちの一方を選択する。
スイッチ１０４は、予測モード選択部１０３の制御信号によって、Ｉｎｔｅｒ予測モード決定部１０１から送られるＩｎｔｅｒ予測画像と、Ｉｎｔｒａ予測モード決定部１０２から送られるＩｎｔｒａ予測画像のうちの一方を選択する。【００１３】
減算器１０５は、原画像と予測画像の差分を取って予測残差画像を生成し、ＤＣＴ部１０６に送る。
ＤＣＴ部１０６は、送られた予測残差画像にＤＣＴ変換を施し、量子化部１０７に送る。
量子化部１０７は、符号量制御部１０８から送られる量子化ステップサイズＱstepによってＤＣＴ変換係数の量子化を行い、符号化前処理部１０９と逆量子化部１１１に送る。【００１４】
符号量制御部１０８は、符号化前処理部１０９から送られる推定符号量をもとに次のマクロブロックのＱstepを求め、量子化部１０７と逆量子化部１１１に送る。また、エントロピー符号化部１１０から送られる発生符号量を受け取り、推定符号量との差を補正する。
符号化前処理部１０９は、量子化部１０７から送られるＤＣＴ係数の量子化値からテーブル参照により発生符号量の推定値を求め、符号量制御部１０８に送る。また、２次元データであるＤＣＴ係数の量子化値を１次元配置に直して係数情報を作成し、エントロピー符号化部１１０に送る。
エントロピー符号化部１１０は、符号化前処理部１０９から送られる係数情報を、ＣＡＢＡＣを用いて符号化し、符号化ストリームとして出力する。【００１５】
逆量子化部１１１は、量子化値にＱstepをかけて逆量子化を行い、ＩＤＣＴ部１１２に送る。
ＩＤＣＴ部１１２はＩＤＣＴを施し、加算器１１３に送る。
加算器１１３では、ＩＤＣＴ部１１２から送られる予測残差画像とスイッチ１０４から送られる予測画像との和を取り、復号画像として復号画像保存バッファ１１４に送る。
復号画像保存バッファ１１４は、加算器１１３から送られる復号画像を保存し、フィルタ部１１５に送る。また、隣接画素情報をＩｎｔｒａ予測モード決定部１０２に送る。【００１６】
フィルタ部１１５は、復号画像保存バッファ１１４に保存された復号画像にフィルタ処理を施し、参照画像保存バッファ１１６に送る。
参照画像保存バッファ１１６は、フィルタ処理後の復号画像を保存し、参照画像としてＩｎｔｅｒ予測モード決定部１０１に送る。
このような仕組みを用いることで、図７Ａ及び７Ｂに示す処理を実現することができる。【００１７】
ここからは、本発明の適用対象である符号化前処理部１０９について述べる。
符号化前処理部１０９では、ＤＣＴ係数の量子化値の２次元データを１次元配置に直して係数情報を作成し、エントロピー符号化部１１０に送信するとともに、テーブル参照により符号量の推定を行う。【００１８】
まず、２次元データから係数情報を作成する方法を説明する。
ＤＣＴ係数が４×４の場合を例に取ると、図９に示す順番に係数を１次元に配置し、０番から順に係数値を調べて連続する０の個数と、その後にくるゼロ以外の係数（非ゼロ係数）を組にして格納する。ここで、連続する０の個数はラン、ゼロ以外の係数はレベルと呼ばれる。このような、係数値をジグザグ状にスキャンして１次元に配置し、ランとレベルのデータに直す操作は“ジグザグスキャン”と呼ばれる。
具体例を図１０に示す。ここで、係数“５”、係数“３”の前には０がないため、ランは０となる。【００１９】
また、Ｈ．２６４では、テーブル参照の際、ランとレベル以外に、非ゼロ係数の個数、最後に連続する１（もしくは−１）の個数とその符号が必要となる。これらをもとに、テーブル参照により、符号量の推定を行う。また、このランとレベルの情報は、算術符号を用いて符号化される。【００２０】
この処理のフローチャートの一例を図１１に示す。
まず、４×４ブロックについてジグザグスキャンを行い、ランとレベルの組を求め（Ｓ１５１）、その結果をエントロピー符号化部１１０に送る（Ｓ１５２）。
一方、求めたランとレベルの組から非ゼロ係数の個数、最後に連続する１（もしくは−１）の個数とその正負を求め（Ｓ１５３）、可変長符号化テーブル（ＶＬＣテーブルと呼ぶ）を用いて符号量を算出する（Ｓ１５４）。
算出した符号量は推定符号量として符号量制御部１０８に送る（Ｓ１５５）。【００２１】
ジグザグスキャンのフローチャートを図１２に示す。
まず、カウンターｉとｎを０に初期化する（Ｓ２０１）。また、変数ｒｕｎも０にする（Ｓ２０２）。
スキャン順でｉ番目となる係数の座標Ｓ＿ｉ（ｘ、ｙ）をテーブル参照により求め（Ｓ２０３）、その座標にある係数をｋ［ｉ］に代入する（Ｓ２０４）。例えば４×４ブロックの場合、図９の順にｋ［ｉ］に係数が代入される。
そして、ｋ［ｉ］が０ならば（Ｓ２０５）、ｒｕｎを１増やし（Ｓ２０６）、ｉを次に進める（Ｓ２０９）。【００２２】
ｋ［ｉ］が非ゼロならば（Ｓ２０５）、ラン情報を保持するＲｕｎ［ｎ］にｒｕｎの値を、レベル情報を保持するＬｅｖｅｌ［ｎ］にその非ゼロ係数ｋ［ｉ］を代入する（Ｓ２０７）。そしてｉを次に進める（Ｓ２０９）。
最後の係数までスキャンしたならば終了し（Ｓ２１０）、まだあるならば上記のステップＳ２０３〜Ｓ２１０の手順を繰り返す。
このような手順を用いることで、ジグザグスキャンによりランとレベルの組を求めることができる。【００２３】
次に、図８に示す符号化前処理部１０９の構成図の一例を図１３に示す。
この装置は、量子化値保存バッファ２０１、ランカウンタ２０２、符号化前処理制御部２０３、４×４スキャンカウンタ２０４、４×４スキャン順参照テーブル２０５、ラン・レベル情報保存バッファ２０６、符号量推定制御部２０７、符号量推定部２０８、ＶＬＣテーブル保存メモリ２０９から構成される。【００２４】
量子化値保存バッファ２０１は、ＤＣＴ係数の量子化値を保存し、４×４スキャン順参照テーブル２０５から座標情報を受け取ると、その座標に対応する量子化値をランカウンタ２０２に送る。また、量子化値を受け取ると、処理開始信号を符号化前処理制御部２０３に送る。
ランカウンタ２０２は変数ｒｕｎを保持する。そして、量子化値保存バッファ２０１から量子化値を受け取り、それが０ならｒｕｎを１増加させる。非ゼロなら、その係数と、その時点で保持しているｒｕｎをラン・レベル情報としてラン・レベル情報保存バッファ２０６に送り、ｒｕｎを０にリセットする。また、符号化前処理制御部２０３からリセット信号を受け取るとｒｕｎを０にリセットする。【００２５】
符号化前処理制御部２０３は、量子化値保存バッファ２０１から開始信号を受け取ると、ランカウンタ２０２とラン・レベル情報保存バッファ２０６にリセット信号を送り、これらをリセットする。次に、４×４スキャンカウンタ２０４に処理開始信号を送る。また、４×４スキャンカウンタ２０４から終了信号を受け取ると、符号量推定制御部２０７に推定開始信号を送る。
４×４スキャンカウンタ２０４は、符号化前処理制御部２０３から処理開始信号を受け取ると、０から１５までの数値を順に４×４スキャン順参照テーブル２０５に送る。１５まで送り終わると、終了信号を符号化前処理制御部２０３に送る。【００２６】
４×４スキャン順参照テーブル２０５は、４×４スキャンカウンタ２０４から送られる数字に対応する座標を量子化値保存バッファ２０１に送る。
ラン・レベル情報保存バッファ２０６は、ランカウンタ２０２からラン・レベル情報を受け取ると、それを保存し、符号量推定制御部２０７からの制御信号に従って符号量推定部２０８に送る。また、ラン・レベル情報をエントロピー符号化部１１０に送る。また、符号化前処理制御部２０３からリセット信号を受け取ると、バッファの内容をクリアする。【００２７】
符号量推定制御部２０７は、符号化前処理制御部２０３から推定開始信号を受け取ると、符号量推定部２０８に推定開始信号を送ると共に、ラン・レベル情報保存バッファ２０６に制御信号を送り、ラン・レベル情報を符号量推定部２０８に送る。
符号量推定部２０８は、符号量推定制御部２０７からの推定開始信号を受け取ると、ラン・レベル情報保存バッファ２０６から送られるラン・レベル情報をもとに、ＶＬＣテーブル保存メモリ２０９からＶＬＣ情報を受け取り、符号量を推定して出力する。
ＶＬＣテーブル保存メモリ２０９は、ＶＬＣテーブルを保持し、符号量推定部２０８にＶＬＣ情報として送信する。
以上の構成を用いることで、図１１に示す処理を実現できる。
【非特許文献１】Ｈ．２６４：大久保榮、角野眞也、菊池義浩、鈴木輝彦、「Ｈ．２６４／Ａｖｃ教科書」、pp.144-146、インプレス（２００４）
【非特許文献２】CABAC: Detlev Marpe, Heiko Schwarz, Thomas Wiegand,“Context-Based Adaptive Binary Arithmetic Coding in the H.264/AVC Video Compression Standard ”, IEEE TRANSACTIONS ON CIRCUITS AND SYSTEMS FOR VIDEO TECHNOLOGY, Vol.13, No.7, pp. 620-636, July 2003
【特許文献１】特開平７−２６４５７９号公報
【発明の開示】
【発明が解決しようとする課題】
【００２８】
ところで、複数の直交変換サイズが選択可能な場合、必ずしも全てのサイズに対応する可変長符号化テーブルが用意されているとは限らない。大きいサイズの直交変換に対応する可変長符号化テーブルが用意されておらず、小さい直交変換用の可変長符号化テーブルを兼用で用いる場合もある。
この結果、複数の可変長符号化方法が選択できる映像符号化方式では、同じ直交変換サイズでも、可変長符号化の方法によりランとレベルの作成方法が異なることがある。この場合、演算コストの低い可変長符号化方法を用いて演算コストの高い可変長符号化の符号量を推定する際に、演算コストが増大するという問題が起こる。【００２９】
例えばＨ．２６４の場合、４×４ＤＣＴの他に、８×８ＤＣＴを用いることもできる。８×８ＤＣＴの量子化係数をＣＡＢＡＣで符号化する際のスキャン順を、図１４に示す。この図から分かる通り、０から６３までをジグザグにスキャンし、ランとレベルを求める。【００３０】
一方、ＣＡＶＬＣを用いて８×８ＤＣＴの量子化係数を符号化する場合、８×８ＤＣＴ専用の可変長符号化テーブルは存在せず、４つに分けて４×４ＤＣＴの可変長符号化テーブルを使用する。そのため、ＣＡＶＬＣで８×８ＤＣＴを符号化する際には、ＣＡＢＡＣとは全く異なった順序のスキャンを４回行い、擬似的に４つの４×４ＤＣＴ係数に分割する必要がある。【００３１】
ＣＡＶＬＣのスキャン順を図１５に示す。８×８＝６４個の係数を４グループ（Ａ０〜Ａ１５、Ｂ０〜Ｂ１５、Ｃ０〜Ｃ１５、Ｄ０〜Ｄ１５）に分割して処理する。
スキャン順は、一つ目のブロックが図１５のＡ０からＡ１５まで、二つ目のブロックがＢ０からＢ１５、以下同様にＣ０からＣ１５、Ｄ０からＤ１５まで順に、合計４回のスキャンを行う。分けた後は、４ブロック分の４×４ＤＣＴ係数として、それぞれ４×４ＤＣＴ用のＶＬＣテーブルを参照し、符号量を求めて総和を取る。
従って、ＣＡＢＡＣの符号量の推定にＣＡＶＬＣを使う場合、ＣＡＢＡＣとは別個に４回のスキャンを行わなければならず、演算コストが増大するという問題がある。【００３２】
８×８ＤＣＴに関する符号化前処理部１０９の従来方法のフローの一例を、図１６に示す。
まず、符号量推定値Ｒａｔｅを０に設定する（Ｓ３０１）。そして、実際の符号化のためにジグザグスキャンを行う（Ｓ３０２）。この処理は、図１２と同様で、スキャン順参照テーブルは図１４の順に座標を返す。そして、求めたラン・レベル情報をエントロピー符号化部１１０に送信する（Ｓ３０３）。【００３３】
次に、推定符号量を求めるための処理を行う。
まず、ループカウンタｉを０とし（Ｓ３０４）、最初（０番目）のブロックについてスキャンを行う（Ｓ３０５）。この処理は図１２と同様で、スキャン順参照テーブルは図１５のＡ０〜Ａ１５の座標を返す。
そして求まったラン・レベル情報から、非ゼロ係数の個数、最後に連続する１（もしくは−１）の個数とその正負を求め（Ｓ３０６）、ＶＬＣテーブルを用いて符号量を算出する（Ｓ３０７）。
算出した符号量をＲａｔｅに加算し（Ｓ３０８）、ｉを１増やして（Ｓ３１０）、２番目のブロックについて上記と同様の処理を繰り返す（Ｓ３０５〜Ｓ３１０）。このとき、スキャン順参照テーブルは図１５のＢ０〜Ｂ１５の座標を返す。
以下、Ｃ０〜Ｃ１５、Ｄ０〜Ｄ１５についても上記と同様の処理（Ｓ３０５〜Ｓ３１０）を行い、最後に推定符号量Ｒａｔｅの値を送信する（Ｓ３１１）。【００３４】
この処理を実現するための構成図の一例を図１７に示す。
この装置は、８×８量子化値保存バッファ３０１、ランカウンタ３０２、符号化前処理制御部３０３、８×８スキャンカウンタ３０４、８×８スキャン順参照テーブル３０５、４×４スキャンカウンタ３０６、スイッチＡ３０７、４×４スキャン順参照テーブルａ３０８、４×４スキャン順参照テーブルｂ３０９、４×４スキャン順参照テーブルｃ３１０、４×４スキャン順参照テーブルｄ３１１、ラン・レベル情報保存バッファ３１２、８×８符号量推定制御部３１３、符号量推定部３１４、ＶＬＣテーブル保存メモリ３１５、推定符号量算出部３１６から構成される。
このうち、ランカウンタ３０２、符号化前処理制御部３０３、４×４スキャンカウンタ３０６、ラン・レベル情報保存バッファ３１２、符号量推定部３１４、ＶＬＣテーブル保存メモリ３１５は前述の同名のものと同じ機能を有する。【００３５】
８×８量子化値保存バッファ３０１は、８×８ＤＣＴ係数の量子化後の値を保持し、８×８スキャン順参照テーブル３０５、４×４スキャン順参照テーブルａ３０８、ｂ３０９、ｃ３１０、ｄ３１１から座標情報を受け取ると、その座標に格納された量子化値をランカウンタ３０２に送る。
８×８スキャンカウンタ３０４は、符号化前処理制御部３０３から処理開始信号を受け取ると、０から６３までの数値を順に８×８スキャン順参照テーブル３０５に送る。
８×８スキャン順参照テーブル３０５は、８×８スキャンカウンタ３０４から送られる数字に対応する座標を８×８量子化値保存バッファ３０１に送る。【００３６】
スイッチＡ３０７は、８×８符号量推定制御部３１３から送られる制御信号により、端子ａ〜ｄを切り換える。
４×４スキャン順参照テーブルａ３０８は、４×４スキャンカウンタ３０６から送られる数字に対応する座標を８×８量子化値保存バッファ３０１に送る。この座標は、図１５のＡ０〜Ａ１５に対応する。
４×４スキャン順参照テーブルｂ３０９は、４×４スキャンカウンタ３０６から送られる数字に対応する座標を８×８量子化値保存バッファ３０１に送る。この座標は、図１５のＢ０〜Ｂ１５に対応する。
４×４スキャン順参照テーブルｃ３１０は、４×４スキャンカウンタ３０６から送られる数字に対応する座標を８×８量子化値保存バッファ３０１に送る。この座標は、図１５のＣ０〜Ｃ１５に対応する。
４×４スキャン順参照テーブルｄ３１１は、４×４スキャンカウンタ３０６から送られる数字に対応する座標を８×８量子化値保存バッファ３０１に送る。この座標は、図１５のＤ０〜Ｄ１５に対応する。【００３７】
８×８符号量推定制御部３１３は、符号化前処理制御部３０３から推定開始信号を受け取ると、スイッチＡ３０７に制御信号を送り、スイッチＡ３０７をａに切り換える。次に、４×４スキャンカウンタ３０６に開始信号を送る。
そして、４×４スキャンカウンタ３０６から終了信号を受け取ると、符号量推定部３１４に推定開始信号を送ると共に、ラン・レベル情報保存バッファ３１２に制御信号を送り、ラン・レベル情報を符号量推定部３１４に送る。
次にスイッチＡ３０７に制御信号を送り、スイッチＡ３０７をｂに切り換える。そして４×４スキャンカウンタ３０６に開始信号を送る。
そして、４×４スキャンカウンタ３０６から終了信号を受け取ると、符号量推定部３１４に推定開始信号を送ると共に、ラン・レベル情報保存バッファ３１２に制御信号を送り、ラン・レベル情報を符号量推定部３１４に送る。
以降、スイッチＡ３０７をｃ、ｄの順に切り換え、同様の処理を行う。【００３８】
推定符号量算出部３１６は、符号量推定部３１４から推定符号量が送られると、その値を加算する。４つの符号量を加算後、合計値を推定符号量として送信する。また、符号化前処理制御部３０３からリセット信号を受信すると、保持している値を０でリセットする。【００３９】
このような構成を用いることで、図１６に示す処理を実現することができる。
しかし、このようにスキャンを計５回行う必要があるため、処理量が増え、構成が複雑になるという問題がある。【００４０】
以上説明した本発明に関連する技術と従来技術の問題点とを、Ｈ．２６４符号化方式における符号量の推定の具体例に従って簡単にまとめて説明すると、以下の通りである。【００４１】
〔本発明に関連する技術〕
算術符号（ＣＡＢＡＣ）は、可変長符号（ＣＡＶＬＣ）に比べて、符号化効率が高いが演算コストがかかる。しかし、符号量制御のためには早く発生符号量を知る必要がある。そこで演算コストの小さい高速な可変長符号（ＣＡＶＬＣ）を使って符号量を推定し、実際の符号化は、ＣＡＢＡＣを別プロセスで動かすことで実行する。つまり、実際の符号化は、高効率なＣＡＢＡＣ（遅延大）を使い、符号量の推定は、高速なＣＡＶＬＣ（遅延小）を使うということが、本発明に関連する基本技術である。【００４２】
以上の基本技術のもとに符号量を推定するにあたり、「ＣＡＶＬＣ」と「ＣＡＢＡＣ」の次のようなそれぞれの仕様を考慮する必要がある。【００４３】
〔Ｈ．２６４の「ＣＡＶＬＣ」の仕様〕
Ｈ．２６４では、４×４ＤＣＴと８×８ＤＣＴが選択できる。しかし、８×８ＤＣＴ用の可変長符号化テーブル（ＶＬＣテーブル）がない。
そこで、４×４ＤＣＴ用のＶＬＣテーブルを使うため、８×８＝６４個の要素を４分割し（単純な４分割ではない）、１６個の要素に分けて４つのスキャンを行う。すなわち、擬似的に４×４ＤＣＴを４つとして扱う。
これにより、４×４ＤＣＴ用のＶＬＣテーブル参照（ただし４回参照）が可能になる。【００４４】
〔Ｈ．２６４の「ＣＡＢＡＣ」の仕様〕
Ｈ．２６４のＣＡＢＡＣでは、８×８ＤＣＴの係数をＭＰＥＧ−２と同じようなジグザグスキャンを用いて１次元に並べ直し、符号化を行う。
つまり、ＣＡＢＡＣのスキャンでは６４個の係数が一直線に並ぶのに対し、ＣＡＶＬＣは４つのスキャンに分けるため、１６個の係数が一直線に並んだものが４本できる。【００４５】
〔ＣＡＢＡＣの符号量推定にＣＡＶＬＣを使用するときの問題点〕
Ｈ．２６４の８×８ＤＣＴをＶＬＣで符号化する場合、上述のように８×８ＤＣＴ用のＶＬＣテーブルが存在しないため、８×８＝６４個の係数を４本の１次元配列に並べ直す。４本のそれぞれを４×４ＤＣＴのジグザグスキャン結果とみなし、４×４ＤＣＴ用のＶＬＣテーブルを参照して符号化する。【００４６】
一方、Ｈ．２６４の８×８ＤＣＴの係数をＣＡＢＡＣで符号化する場合、６４個の係数を１次元に並べ直して符号化を行う。このＣＡＢＡＣを適用した場合の符号量の推定を、ＣＡＶＬＣのＶＬＣテーブルを用いて行うとき、ＣＡＢＡＣとＣＡＶＬＣとでは、１次元データの並び、すなわちスキャンが異なる。
ＣＡＢＡＣでは、６４個の係数を順にジグザグスキャンして行くだけであるのに対し、ＣＡＶＬＣでは、１６個用のスキャン４種類を行い、４つの１次元データに分ける。【００４７】
そのため、ＣＡＢＡＣの符号量推定にＣＡＶＬＣを使用する従来技術では、ＣＡＢＡＣのスキャンの他に、符号量推定のためだけに再度、ＣＡＶＬＣによるスキャンを行う必要があり、演算コストがかかるという問題がある。【００４８】
そこで本発明では、上記従来技術よりもさらに少ない演算量で精度よく発生符号量を推定することができる新たな符号化技術の提供を目的とする。
【課題を解決するための手段】
【００４９】
この目的を達成するために、本発明は、大きいサイズの直交変換係数を符号化する際、ひとつの一次元配置に並べ替えて符号化を行う第一の情報源符号化方法と、複数の一次元配置に分割してより小さい直交変換サイズの可変長符号化テーブルを用い符号化する第二の情報源符号化方法との実行手段を備えた映像符号化方式について、サイズが大きい直交変換を施し、量子化後の変換係数を第一の可変長符号化方法の順序に従って一次元配置に並べ直して連続する０の個数であるランとその後に続く有意係数であるレベルの組を保持する手段と、可変長符号化テーブルが存在する直交変換サイズに対する実施直交変換サイズの面積比からグループ数を求める手段と、ランとレベルの組を前記グループ数のグループに分類する手段と、ランを前記グループ数で割り、その商をランとする手段と、前記各グループのランとレベルの組のそれぞれに対して、前記第二の情報源符号化方法の可変長符号化テーブルを参照して符号長を求める手段と、求めた符号長の総和を求める手段とを備え、算出した全グループの符号長の総和を、前記第一の情報源符号化方法による発生符号量と推定することを特徴とする。【００５０】
前記ランとレベルの組を前記グループに分類する場合の例として、
(i)  ランとレベルの組について検出した順にインデックス番号を割り当て、その割り当てたインデックス番号を前記グループ数で割った剰余が等しい組同士を同じグループとして分ける
(ii) ランに１を加えた数を、ランとレベルの組を検出した順に累計し、前記累計数をグループ数で割った剰余が等しい組同士を同じグループとして分ける
が挙げられる。
【発明の効果】
【００５１】
本発明によれば、実際に直交変換に用いたものより小さい直交変換サイズ用の符号化テーブルを用いて符号量推定を行う場合に、演算量を削減しつつ、高精度な符号量推定が可能となる。
【図面の簡単な説明】
【００５２】
【図１】８×８ＤＣＴのランとレベルの組を４グループに分けた一例を示す図である。
【図２】８×８ＤＣＴのランとレベルの組を４グループに分けた他の一例を示す図である。
【図３】本発明をＨ．２６４に用いた場合の符号量推定結果を示す図である。
【図４】本発明の実施例による符号化前処理部のフローチャートである。
【図５】８×８ＤＣＴ係数を４モードに分類する処理の一例を示す図である。
【図６】本発明の実施例による装置の構成例を示す図である。
【図７Ａ】ＣＡＶＬＣをＣＡＢＡＣの符号量推定に用いることが可能な符号化処理におけるメイン処理のフローチャートである。
【図７Ｂ】同符号化処理におけるＣＡＢＡＣ処理のフローチャートである。
【図８】図７Ａ及び７Ｂの処理を実現するための符号化装置の例を示す図である。
【図９】４×４ブロックのスキャン順を示す図である。
【図１０】ジグザグスキャンの一例を示す図である。
【図１１】４×４ブロックの符号化前処理部の処理フローの一例を示す図である。
【図１２】ジグザグスキャンの処理フローの一例を示す図である。
【図１３】図８に示す符号化前処理部の構成例を示す図である。
【図１４】ＣＡＢＡＣのスキャン順を示す図である。
【図１５】ＣＡＶＬＣのスキャン順を示す図である。
【図１６】８×８ＤＣＴ時の従来技術による符号化前処理部のフローチャートである。
【図１７】８×８ＤＣＴ時の従来技術による符号化前処理部の構成例を示す図である。
【符号の説明】
【００５３】
１    ８×８量子化値保存バッファ
２    符号化前処理制御部
３    ８×８スキャンカウンタ
４    ８×８スキャン順参照テーブル
５    ランカウンタ
６    ラン・レベル情報保存バッファＢ
７    モード番号管理部
８    カウンタ
９    組番号計算器
１０  比較制御部
１１  符号量推定部
１２  シフト演算器
１３  ラン・レベル情報保存バッファ
１４  符号量推定制御部
１５  ＶＬＣテーブル保存メモリ
１６  推定符号量算出部
【発明を実施するための最良の形態】
【００５４】
本発明によれば、例えば、ＣＡＢＡＣの６４個の係数から、ＣＡＶＬＣのスキャン結果を作り出す。すなわち、ＣＡＶＬＣのスキャンを独自に行う処理を省略し、ＣＡＢＡＣのスキャン結果を利用してＣＡＶＬＣのスキャン結果を作り出す。【００５５】
本発明におけるグループ数を求める手段としては、大きいサイズの直交変換の面積を小さいサイズの直交変換の面積で割り、その商をグループ数とする方法が考えられる。
例えば、８×８ＤＣＴを４×４ＤＣＴに分ける場合は、６４／１６＝４となり、グループ数は４となる。【００５６】
また、ラン・レベルの組を複数グループに分ける方法としては、例えばラン・レベルの組に対してスキャンで検出された順にインデックス番号を割り振り、そのインデックス番号をグループ数で割った余りを使う方法が考えられる。
Ｈ．２６４では、８×８ＤＣＴの係数を４グループに分ける必要がある。この場合、８×８のＣＡＢＡＣのスキャン後のラン・レベルの組について、１番目、５番目、…、４ｉ＋１番目（ｉ＝０、１、…）のラン・レベルの組を取り出したグループ１、次に２番目、６番目、…、４ｉ＋２番目（ｉ＝０、１、…）のラン・レベルの組を取り出したグループ２、次に３番目、７番目、…、４ｉ＋３番目（ｉ＝０、１、…）のラン・レベルの組を取り出したグループ３、次に４番目、８番目、…、４ｉ＋４番目（ｉ＝０、１、…）のラン・レベルの組を取り出したグループ４というように４つのグループに分けることになる。【００５７】
すなわち、ランとレベルを４グループに分ける方法の一例としては、ＣＡＢＡＣのスキャン結果（ランとレベルの組）を検出した順に番号を振り、番号の小さい順にグループ１、２、３、４、１、２、３、４、…と平等に割り振っていく処理、およびランの長さをすべて１／４にする処理を行う方法がある。【００５８】
本発明によれば、大きいサイズのＤＣＴで求めたラン・レベルの組を、このように符号化テーブルが存在する直交変換サイズのグループに分け、さらに全ラン・レベルの組のランをグループ数で割り、その商をランとすることで、符号化テーブルが存在する直交変換サイズの複数のラン・レベルの組に、スキャンを行うことなく擬似的に分割する。【００５９】
図１に、８×８ＤＣＴの係数を、４の剰余を用いて４×４ＤＣＴの４グループに分けた例を示す。
得られた４組のラン・レベル情報のセットについて、それぞれを４×４サイズのラン・レベル情報とみなしてＣＡＶＬＣのテーブル参照により符号量を算出し、４つの合計値を推定符号量として出力する。【００６０】
ラン・レベルの組を複数グループを分ける方法としては、例えば、ラン・レベルの組のランに１加えた値を、スキャンで検出された順に累計していき、各セットは、自身も含めた累計値をグループ数で割った余りによって分ける方法も考えられる。【００６１】
図２に、累積値の４の剰余を用いて４グループに分けた一例を示す。８×８ＤＣＴのラン・レベルの累計は、ランに１加算したものを合計していったものである。この値を４で割った余りを求め、余りが１のものをグループ１、余りが２のものをグループ２、余りが３のものをグループ３、余りが０のものをグループ４に分類している。【００６２】
以上のように、本発明では、例えばＣＡＢＡＣのスキャン結果（ランとレベルの組）を４グループに分類し、擬似的に４つの１次元データを作る。これにより、符号量推定のために再スキャンを行うことなくＣＡＶＬＣの利用が可能になる。
従って、演算コストの削減および高精度の符号量推定が本発明により実現される。【００６３】
以下、本発明の具体的な実施の形態について図面を用いて説明する。
ここでは、本発明による符号量推定を用いた符号化装置において、本発明の特徴的な構成部分について主に説明し、他の従来技術と同様な部分は既に説明済みであるのでその詳しい説明を省略する。【００６４】
以下では、８×８ＤＣＴの係数をＣＡＢＡＣで符号化する場合の符号量を、４×４ＤＣＴのテーブルを用いて推定する場合の実施例について説明する。
グループ数は、８×８ＤＣＴの面積を４×４ＤＣＴの面積で割った“４”固定とし、ラン・レベル情報を、インデックス番号の４の剰余を用いて４グループに分類することとする。【００６５】
本実施例による符号化前処理部のフローチャートを、図４に示す。
処理が始まると、まず推定符号量Ｒａｔｅを０で初期化する（Ｓ１）。
次に、８×８ブロックについてジグザグスキャンを行い（Ｓ２）、ラン・レベル情報を生成する。この処理は、図１２に示すフローチャートの処理の通りであり、スキャン順参照テーブルは図１４の順に座標を返す。そして、８×８ブロックのラン・レベル情報を符号化情報としてエントロピー符号化部に送信する（Ｓ３）。
次に、得られた８×８ブロックのラン・レベル情報を４つのモード（ｍｏｄｅ１〜ｍｏｄｅ４）に分類する（Ｓ４）。この処理の一例を、図５に示す。【００６６】
図５に示すように、まず、モード番号を示す変数ｍを１とし（Ｓ２１）、以下の処理でｍｏｄｅ１のラン・レベル情報を作成する。
変数ｉを０で初期化し（Ｓ２２）、変数ｎに４＊ｉ＋ｍ（＊は乗算を表す）を代入する（Ｓ２３）。
ｎが、８×８ＤＣＴで得られたラン・レベル情報の個数Ｎ（即ち、有意係数の個数）よりも小さいならば（Ｓ２４）、ｎ番目のラン・レベル情報Ｒｕｎ［ｎ］、Ｌｅｖｅｌ［ｎ］について、ランを右に２ビットシフトしたものをＲｕｎ＿ｔ［ｍ］［ｉ］に、レベルをＬｅｖｅｌ＿ｔ［ｍ］［ｉ］に保持し、ｉを１インクリメントする（Ｓ２５）。
そして上記の操作（Ｓ２３〜Ｓ２５）を繰り返す。
ｎがＮ以上になったならば（Ｓ２４）、次のモードに移る。
まず、モード番号ｍが４未満であることを確認（Ｓ２６）した後、ｍを１増やし（Ｓ２７）、上記の処理を繰り返す。そしてモード４まで処理が終わったなら分類処理を終了する。
この結果、モード番号ｍ番のｉ番目のラン・レベル情報の組がＲｕｎ＿ｔ［ｍ］［ｉ］と・BR>AＬｅｖｅｌ＿ｔ［ｍ］［ｉ］とに格納されることになる。【００６７】
次に、図４に戻り、変数ｍを再び１とし（Ｓ５）、モード１について、ラン・レベルの組以外に必要な符号化情報（非ゼロ係数の個数、最後に連続する１（もしくは−１）の個数とその符号）を、Ｒｕｎ＿ｔ［ｍ］［ｉ］とＬｅｖｅｌ＿ｔ［ｍ］［ｉ］（ｉ＝０、１、…）の組から求め（Ｓ６）、ＶＬＣテーブルを用いて符号量ｒ＿ｔｍｐを算出する（Ｓ７）。
そして、求めた符号量ｒ＿ｔｍｐを推定符号量Ｒａｔｅに加算し（Ｓ８）、モード番号ｍが４未満ならば（Ｓ９）、ｍを１増やして（Ｓ１０）、次のモードについて上記の処理を繰り返す（Ｓ６〜Ｓ１０）。
最後に、推定符号量Ｒａｔｅを符号量制御部に送信する（Ｓ１１）。【００６８】
以上のようなフローを用いることで、本発明に従った処理を行うことができる。【００６９】
次に、本フローを実行するための構成図の一例を示す。
符号化装置の構成図は従来技術として示した図８と同様である。このうち、本実施形態は太線で示した符号化前処理部１０９に適用している。
そこで、符号化前処理部１０９の構成図の一例を図６に示す。太い点線で示した枠内が、本発明の適用部分である。【００７０】
本実施例による符号化前処理部は、８×８量子化値保存バッファ１、符号化前処理制御部２、８×８スキャンカウンタ３、８×８スキャン順参照テーブル４、ランカウンタ５、ラン・レベル情報保存バッファＢ６、モード番号管理部７、カウンタ８、組番号計算器９、比較制御部１０、符号量推定部１１、シフト演算器１２、ラン・レベル情報保存バッファ１３、符号量推定制御部１４、ＶＬＣテーブル保存メモリ１５、推定符号量算出部１６から構成されている。【００７１】
このうち、８×８量子化値保存バッファ１、符号化前処理制御部２、８×８スキャンカウンタ３、８×８スキャン順参照テーブル４、ランカウンタ５、符号量推定部１１、符号量推定制御部１４、ＶＬＣテーブル保存メモリ１５、ラン・レベル情報保存バッファ１３、推定符号量算出部１６は、前述の同名のものと同等の機能を有する。【００７２】
ラン・レベル情報保存バッファＢ６は、符号化前処理制御部２からリセット信号を受け取ると、保持している情報を初期化する。
次に、ランカウンタ５からラン・レベル情報を受け取ると、それを保存するとともに、ラン・レベルの組の数を個数情報Ｎとして比較制御部１０に送る。
また、比較制御部１０から組番号ｎを受け取ると、保持しているｎ番目のラン・レベル情報をシフト演算器１２に送る。【００７３】
モード番号管理部７は、符号化前処理制御部２から推定開始信号を受け取ると、モード番号ｍとして１を、カウンタ８と組番号計算器９に送る。
また、比較制御部１０から制御信号を受け取ると、モード番号ｍを１増加させ、再びカウンタ８と組番号計算器９に送る。
また、モード番号ｍとして４を送信後、制御信号を受け取ると、モード番号０をカウンタ８と組番号計算器９に送信し、推定開始信号を受け取るまで動作を停止する。【００７４】
カウンタ８は、モード番号ｍ（ｍ＝１〜４）を受け取るとｉを０にリセットし、０から順に１増加させながら組番号計算器９に送信する。モード番号としてｍ＝０を受信すると動作を停止する。【００７５】
組番号計算器９は、モード番号管理部７からのモード番号ｍとカウンタ８からの値ｉを受け取ると組番号ｎをｎ＝４＊ｉ＋ｍとして求め、比較制御部１０に送る。【００７６】
比較制御部１０は、組番号計算器９から送られる組番号ｎとラン・レベル情報保存バッファＢ６から送られる個数Ｎを比較し、ｎがＮ以下ならば、組番号ｎをラン・レベル情報保存バッファＢ６に送信する。ｎがＮより大きいならば、モード番号管理部７に制御信号を送ると共に、符号量推定制御部１４に推定開始信号を送る。【００７７】
シフト演算器１２は、ラン・レベル情報保存バッファＢ６からラン・レベル情報を受け取ると、ランの値を２ビット右シフトした後、そのランの値とレベルを組にしてラン・レベル情報保存バッファ１３に送る。【００７８】
以上のような構成を用いることで、図４、図５に示す処理を実現できる。【００７９】
以上の符号量推定の処理は、コンピュータとソフトウェアプログラムとによっても実現することができ、そのプログラムをコンピュータ読み取り可能な記録媒体に記録して提供することも、ネットワークを通して提供することも可能である。【００８０】
本発明による演算量の削減効果は、特に有意係数が少ない場合に顕著になる。
例えば、Ｈ．２６４を例に取ると、８×８ＤＣＴの結果、ラン・レベル情報が１組しかなかった場合でも、従来手法では符号量の推定のために図１２に示すジグザグスキャンの演算を４回行う必要がある。一方、本発明では、１組のラン・レベル情報に関して２ビットシフトとテーブル参照をするだけで符号量の推定が可能となる。【００８１】
本発明をＨ．２６４の符号化に適用した場合の符号量推定結果を図３に示す。
この図は、８×８ＤＣＴを用いた全マクロブロックについて、本発明による符号量推定値を横軸に、ＣＡＢＡＣを用いた場合の発生符号量を縦軸に取ってプロットしたものである。グループの分類には、インデックス番号の４の剰余を用いている。
この結果から、本発明による推定値とＣＡＢＡＣを用いた場合の実際の発生符号量は比例関係にあり、本発明の方法で精度よく符号量推定を行えることが分かる。【００８２】
このように本発明の方法によって精度よく符号量推定を行うことができる理由の一つとしては、以下のことが考えられる。
Ｈ．２６４の「ＣＡＶＬＣ」の仕様において、８×８＝６４個の要素を４分割する方法は、分割後の４つの１次元データに低周波から高周波までの成分がなるべく平等に含まれるような方法である。
本発明においても、例えばＣＡＢＡＣのスキャン結果（ランとレベルの組）を４グループに分類する方法は、係数の低周波から高周波までの成分がなるべく平等に含まれるような分け方になっている。
従って、図３の符号量推定結果の例に示されるように、ＣＡＶＬＣの適用による高精度の符号量推定の結果が得られることになる。
【産業上の利用可能性】
【００８３】
本発明によれば、実際に直交変換に用いたものより小さい直交変換サイズ用の符号化テーブルを用いて符号量推定を行う場合に、演算量を削減しつつ、高精度な符号量推定が可能となる。
【図１】
2008111511.tif 000003
【図２】
2008111511.tif 000004
【図３】
2008111511.tif 000005
【図４】
2008111511.tif 000006
【図５】
2008111511.tif 000007
【図６】
2008111511.tif 000008
【図７Ａ】
2008111511.tif 000009
【図７Ｂ】
2008111511.tif 000010
【図８】
2008111511.tif 000011
【図９】
2008111511.tif 000012
【図１０】
2008111511.tif 000013
【図１１】
2008111511.tif 000014
【図１２】
2008111511.tif 000015
【図１３】
2008111511.tif 000016
【図１４】
2008111511.tif 000017
【図１５】
2008111511.tif 000018
【図１６】
2008111511.tif 000019
【図１７】
2008111511.tif 000020
【国際調査報告】
2008111511.tif 000021
2008111511.tif 000022
2008111511.tif 000023
2008111511.tif 000024