(57)【特許請求の範囲】
【請求項１】
非圧縮データの符号化を行う符号化装置において、
前記非圧縮データの符号化難易度を検出する第１の検出手段と、
前記非圧縮データを、ＧＯＰを基準として圧縮符号化する符号化手段と、
前記符号化手段により過去に符号化された直前のＧＯＰに含まれる前記非圧縮データのうちの、フレーム内符号化画像のビット発生量を検出する第２の検出手段と、
前記非圧縮データが符号化された符号化ストリームをデコードするデコーダの入力バッファに対応する仮想バッファのバッファ容量から、前記第２の検出手段により検出された前記フレーム内符号化画像のビット発生量を減算した値を算出し、符号化中のＧＯＰに含まれる前記非圧縮データに対して割り当てられる前記仮想バッファのバッファ容量のうちＧＯＰ内でまだ符号化されていない残りのピクチャに割り当てられる使用可能ビット量に加えられるＧＯＰ毎のビット補給量の合計値の最大値として設定する設定手段と、
これから符号化されるＧＯＰの前記ビット補給量を、前記設定手段により設定された合計値の最大値を満たし、かつ、前記第１の検出手段により検出された、前記符号化手段により過去に符号化されたＧＯＰに含まれる前記非圧縮データの符号化難易度が第１の値より高い場合、正の値となるように、前記符号化難易度が前記第１の値よりも低い第２の値より低い場合、負の値となるように、前記符号化難易度が前記第１の値と前記第２の値との間となる場合、０となるように算出する算出手段と
を備えることを特徴とする符号化装置。
【請求項２】
シーンチェンジのＩピクチャと１つ前のＩピクチャとの、符号化難易度の差を検出する第３の検出手段と、
前記第３の検出手段により、前記符号化難易度の差が検出された場合、前記第１の検出手段により検出されたひとつ前のＩピクチャの符号化難易度がシーンチェンジのＩピクチャの符号化難易度よりも低いとき、前記設定手段により設定された前記ビット補給量の合計値の最大値が多くなるように、前記第１の検出手段により検出されたひとつ前のＩピクチャの符号化難易度がシーンチェンジのＩピクチャの符号化難易度よりも高いとき、前記設定手段により設定された前記ビット補給量の合計値の最大値が少なくなるように、前記ビット補給量の合計値の最大値を再設定する再設定手段と
を更に備えることを特徴とする請求項１に記載の符号化装置。
【請求項３】
非圧縮データの符号化を行う符号化装置の符号化方法において、
前記非圧縮データの符号化難易度を検出する第１の検出ステップと、
前記非圧縮データを、ＧＯＰを基準として圧縮符号化する符号化ステップと、
前記符号化ステップの処理により過去に符号化された直前のＧＯＰに含まれる前記非圧縮データのうちの、フレーム内符号化画像のビット発生量を検出する第２の検出ステップと、
前記非圧縮データが符号化された符号化ストリームをデコードするデコーダの入力バッファに対応する仮想バッファのバッファ容量から、前記第２の検出ステップの処理により検出されたフレーム内符号化画像のビット発生量を減算した値を算出し、符号化中のＧＯＰに含まれる前記非圧縮データに対して割り当てられる前記仮想バッファのバッファ容量のうちＧＯＰ内でまだ符号化されていない残りのピクチャに割り当てられる使用可能ビット量に加えられるＧＯＰ毎のビット補給量の合計値の最大値に設定する設定ステップと、
これから符号化されるＧＯＰの前記ビット補給量を、前記設定ステップの処理により設定された合計値の最大値を満たし、かつ、前記第１の検出ステップの処理により検出された、前記符号化ステップの処理により過去に符号化されたＧＯＰに含まれる前記非圧縮データの符号化難易度が第１の値より高い場合、正の値となるように、前記符号化難易度が前記第１の値よりも低い第２の値より低い場合、負の値となるように、前記符号化難易度が前記第１の値と前記第２の値との間となる場合、０となるように算出する算出ステップと
を含むことを特徴とする符号化方法。
【請求項４】
非圧縮データの符号化を行う処理をコンピュータに実行させるプログラムであって、
前記非圧縮データの符号化難易度を検出する第１の検出ステップと、
前記非圧縮データを、ＧＯＰを基準として圧縮符号化する符号化ステップと、
前記符号化ステップの処理により過去に符号化された直前のＧＯＰに含まれる前記非圧縮データのうちの、フレーム内符号化画像のビット発生量を検出する第２の検出ステップと、
前記非圧縮データが符号化された符号化ストリームをデコードするデコーダの入力バッファに対応する仮想バッファのバッファ容量から、前記第２の検出ステップの処理により検出されたフレーム内符号化画像のビット発生量を減算した値を算出し、符号化中のＧＯＰに含まれる前記非圧縮データに対して割り当てられる前記仮想バッファのバッファ容量のうちＧＯＰ内でまだ符号化されていない残りのピクチャに割り当てられる使用可能ビット量に加えられるＧＯＰ毎のビット補給量の合計値の最大値に設定する設定ステップと、
これから符号化されるＧＯＰの前記ビット補給量を、前記設定ステップの処理により設定された合計値の最大値を満たし、かつ、前記第１の検出ステップの処理により検出された、前記符号化ステップの処理により過去に符号化されたＧＯＰに含まれる前記非圧縮データの符号化難易度が第１の値より高い場合、正の値となるように、前記符号化難易度が前記第１の値よりも低い第２の値より低い場合、負の値となるように、前記符号化難易度が前記第１の値と前記第２の値との間となる場合、０となるように算出する算出ステップと
を含むことを特徴とする処理をコンピュータに実行させるプログラムが記録されている記録媒体。
【請求項５】
非圧縮データの符号化を行う処理をコンピュータに実行させるプログラムであって、
前記非圧縮データの符号化難易度を検出する第１の検出ステップと、
前記非圧縮データを、ＧＯＰを基準として圧縮符号化する符号化ステップと、
前記符号化ステップの処理により過去に符号化された直前のＧＯＰに含まれる前記非圧縮データのうちの、フレーム内符号化画像のビット発生量を検出する第２の検出ステップと、
前記非圧縮データが符号化された符号化ストリームをデコードするデコーダの入力バッファに対応する仮想バッファのバッファ容量から、前記第２の検出ステップの処理により検出されたフレーム内符号化画像のビット発生量を減算した値を算出し、符号化中のＧＯＰに含まれる前記非圧縮データに対して割り当てられる前記仮想バッファのバッファ容量のうちＧＯＰ内でまだ符号化されていない残りのピクチャに割り当てられる使用可能ビット量に加えられるＧＯＰ毎のビット補給量の合計値の最大値に設定する設定ステップと、
これから符号化されるＧＯＰの前記ビット補給量を、前記設定ステップの処理により設定された合計値の最大値を満たし、かつ、前記第１の検出ステップの処理により検出された、前記符号化ステップの処理により過去に符号化されたＧＯＰに含まれる前記非圧縮データの符号化難易度が第１の値より高い場合、正の値となるように、前記符号化難易度が前記第１の値よりも低い第２の値より低い場合、負の値となるように、前記符号化難易度が前記第１の値と前記第２の値との間となる場合、０となるように算出する算出ステップと
を含むことを特徴とする処理をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、符号化装置および符号化方法、プログラム、並びに記録媒体に関し、特に、フィードバック型レート制御において、ビット補給レート制御を行う場合に用いて好適な、符号化装置および符号化方法、プログラム、並びに記録媒体に関する。
【０００２】
【従来の技術】
近年、映像データおよび音声データを圧縮して情報量を減らす方法として、種々の圧縮符号化方法が提案されており、その代表的なものにＭＰＥＧ２（Moving
Picture Experts Group Phase 2）がある。
【０００３】
このような画像圧縮方式において、良好なエンコード画質を得る方法として、ＴＭ５（Test Model 5）がある。ＴＭ５のステップ１においては、ピクチャ単位に与えるターゲットビットの算出を行う。ターゲットビットの算出においては、ピクチャタイプ別のＧＣ（Global Complexity）のそれぞれの比率に応じて、そのＧＯＰ（Group of Picture）内の残りのピクチャに割り当てることができるビット量Ｒを比例配分して、各ピクチャに割り当てるビット量を算出する。
【０００４】
ＴＭ５は、ＧＯＰあたりの発生ビット量をほぼ一定にするために優れた方法であるが、固定レート符号化を行う場合には、必ずしも、ＧＯＰの発生ビット量を一定にする必要はない。固定レート符号化においては、ＶＢＶ（Video Buffering Verifier）バッファの占有量が、規定値をオーバーフロー、あるいはアンダーフローしないようにしなければならない。
【０００５】
ＴＭ５においては、ＧＯＰあたりの発生ビット量がほぼ一定であるから、ＶＢＶバッファがオーバーフローあるいはアンダーフローすることはない。しかしながら、ＴＭ５においては、低いビットレートで符号化した場合に、バッファ容量を有効利用することができない。例えば、ＭＰＥＧのＭＰ＠ＰＬにおいて、ＴＭ５を適用した場合、ＶＢＶバッファ容量は約１．８Ｍｂｉｔであるのに対して、バッファから引き抜かれる１枚あたりのピクチャのビット量が少ないため、約１．８Ｍｂｉｔを有効に利用することができない。
【０００６】
このように、入力される絵柄に関わらず、一定量のビット量を割り当ててしまうことにより、符号化難易度が高い絵柄については、符号化歪みが顕著に発生してしまい、一方、符号化難易度が低い絵柄は、符号化歪みが少ないため、全体として、むらの多い不安定な画像になってしまう。
【０００７】
このような問題を解決するために、符号化難易度が高い絵柄には、バッファがアンダーフローしない範囲で、より多くのビット量を配分し、一方、符号化難易度が低い絵柄には、バッファがオーバーフローしない範囲で、絵柄に適した少ないビット量を配分する必要がある。
【０００８】
そこで、本出願人は、特開平１０−７５４４３において、映像データの部分毎の絵柄の複雑さに応じて発生ビット量を調節し、全体として、圧縮後の映像の品質を向上させることができるようにした、映像データ圧縮装置およびその方法について開示している。
【０００９】
ＴＭ５において、ＧＯＰの残りのピクチャに割り当てることができる使用可能ビット量Ｒは、レートコントロールで重要なパラメータである。例えば、ＧＯＰの前半において、複雑な絵柄の画像が続いたために、たくさんのビット量を割り当ててしまうと、ＧＯＰの後半で、ビット量Ｒが、極端に少なくなってしまったり、あるいは、負の数になってしまう。
【００１０】
これに対して、本出願人が特開平１０−７５４４３において開示したビット補給レート制御とは、これからエンコードしようとする複数枚のピクチャに対して割り当てられている使用可能ビット量Ｒに、そのエンコード対象の画像難易度やＶＢＶバッファ占有量に応じて、ビット量を加える、あるいは減じる（以下、加えられる、あるいは減じられるビットをsupplementと称する）ことを特徴とするレート制御方式である。
【００１１】
【発明が解決しようとする課題】
以前提案されたビット補給レート制御は、これからエンコードしようとする複数枚のピクチャ画像難易度等の情報が全て既知である場合、すなわちエンコード情報を先読みしたフィードフォワード（Feed Forward）型レート制御に適用されていたもので、例えば、ＧＯＰの１５枚のデータを蓄積した後、その画像符号化難易度を判断していたので、その情報蓄積に一定の遅延を生じてしまうものである。
【００１２】
しかしながら、先読み情報を得ることができないフィードバック（Feed Back）型レート制御では、未来のＶＢＶ余裕度を正確に見積もることができないため、sum_supplement（以下、sum_supと称する）の最大値および最小値をビットレートや使用可能ＶＢＶサイズによって決定した固定値を用いざるを得なかった。しかしながら、特に、sum_supの最大値が固定値の場合、ピクチャの発生量次第によってはＶＢＶアンダーフローを起こしやすくなるなどの問題があり、ＶＢＶアンダーフローを起こさないようにするためには、ＶＢＶ余裕度に応じて、sum_supの最大値を決定する必要があった。
【００１３】
本発明はこのような状況に鑑みてなされたものであり、フィードバック型レート制御において、ビット補給レート制御を行うことができるようにするものである。
【００１４】
【課題を解決するための手段】
本発明の符号化装置は、非圧縮データの符号化難易度を検出する第１の検出手段と、非圧縮データを、ＧＯＰを基準として圧縮符号化する符号化手段と、符号化手段により過去に符号化された直前のＧＯＰに含まれる非圧縮データのうちの、フレーム内符号化画像のビット発生量を検出する第２の検出手段と、非圧縮データが符号化された符号化ストリームをデコードするデコーダの入力バッファに対応する仮想バッファのバッファ容量から、第２の検出手段により検出されたフレーム内符号化画像のビット発生量を減算した値を算出し、符号化中のＧＯＰに含まれる非圧縮データに対して割り当てられる仮想バッファのバッファ容量のうちＧＯＰ内でまだ符号化されていない残りのピクチャに割り当てられる使用可能ビット量に加えられるＧＯＰ毎のビット補給量の合計値の最大値として設定する設定手段と、これから符号化されるＧＯＰのビット補給量を、設定手段により設定された合計値の最大値を満たし、かつ、第１の検出手段により検出された、符号化手段により過去に符号化されたＧＯＰに含まれる非圧縮データの符号化難易度が第１の値より高い場合、正の値となるように、符号化難易度が第１の値よりも低い第２の値より低い場合、負の値となるように、符号化難易度が第１の値と第２の値との間となる場合、０となるように算出する算出手段とを備えることを特徴とする。
【００１５】
シーンチェンジのＩピクチャと１つ前のＩピクチャとの、符号化難易度の差を検出する第３の検出手段と、第３の検出手段により、符号化難易度の差が検出された場合、第１の検出手段により検出されたひとつ前のＩピクチャの符号化難易度がシーンチェンジのＩピクチャの符号化難易度よりも低いとき、設定手段により設定されたビット補給量の合計値の最大値が多くなるように、第１の検出手段により検出されたひとつ前のＩピクチャの符号化難易度がシーンチェンジのＩピクチャの符号化難易度よりも高いとき、設定手段により設定されたビット補給量の合計値の最大値が少なくなるように、ビット補給量の合計値の最大値を再設定する再設定手段とを更に備えさせるようにすることができる。
【００１６】
本発明の符号化方法は、非圧縮データの符号化難易度を検出する第１の検出ステップと、非圧縮データを、ＧＯＰを基準として圧縮符号化する符号化ステップと、符号化ステップの処理により過去に符号化された直前のＧＯＰに含まれる非圧縮データのうちの、フレーム内符号化画像のビット発生量を検出する第２の検出ステップと、非圧縮データが符号化された符号化ストリームをデコードするデコーダの入力バッファに対応する仮想バッファのバッファ容量から、第２の検出ステップの処理により検出されたフレーム内符号化画像のビット発生量を減算した値を算出し、符号化中のＧＯＰに含まれる非圧縮データに対して割り当てられる仮想バッファのバッファ容量のうちＧＯＰ内でまだ符号化されていない残りのピクチャに割り当てられる使用可能ビット量に加えられるＧＯＰ毎のビット補給量の合計値の最大値に設定する設定ステップと、これから符号化されるＧＯＰのビット補給量を、設定ステップの処理により設定された合計値の最大値を満たし、かつ、第１の検出ステップの処理により検出された、符号化ステップの処理により過去に符号化されたＧＯＰに含まれる非圧縮データの符号化難易度が第１の値より高い場合、正の値となるように、符号化難易度が第１の値よりも低い第２の値より低い場合、負の値となるように、符号化難易度が第１の値と第２の値との間となる場合、０となるように算出する算出ステップとを含むことを特徴とする。
【００１７】
本発明の記録媒体に記録されているプログラムは、非圧縮データの符号化難易度を検出する第１の検出ステップと、非圧縮データを、ＧＯＰを基準として圧縮符号化する符号化ステップと、符号化ステップの処理により過去に符号化された直前のＧＯＰに含まれる非圧縮データのうちの、フレーム内符号化画像のビット発生量を検出する第２の検出ステップと、非圧縮データが符号化された符号化ストリームをデコードするデコーダの入力バッファに対応する仮想バッファのバッファ容量から、第２の検出ステップの処理により検出されたフレーム内符号化画像のビット発生量を減算した値を算出し、符号化中のＧＯＰに含まれる非圧縮データに対して割り当てられる仮想バッファのバッファ容量のうちＧＯＰ内でまだ符号化されていない残りのピクチャに割り当てられる使用可能ビット量に加えられるＧＯＰ毎のビット補給量の合計値の最大値に設定する設定ステップと、これから符号化されるＧＯＰのビット補給量を、設定ステップの処理により設定された合計値の最大値を満たし、かつ、第１の検出ステップの処理により検出された、符号化ステップの処理により過去に符号化されたＧＯＰに含まれる非圧縮データの符号化難易度が第１の値より高い場合、正の値となるように、符号化難易度が第１の値よりも低い第２の値より低い場合、負の値となるように、符号化難易度が第１の値と第２の値との間となる場合、０となるように算出する算出ステップとを含むことを特徴とする。
【００１８】
本発明のプログラムは、非圧縮データの符号化難易度を検出する第１の検出ステップと、非圧縮データを、ＧＯＰを基準として圧縮符号化する符号化ステップと、符号化ステップの処理により過去に符号化された直前のＧＯＰに含まれる非圧縮データのうちの、フレーム内符号化画像のビット発生量を検出する第２の検出ステップと、非圧縮データが符号化された符号化ストリームをデコードするデコーダの入力バッファに対応する仮想バッファのバッファ容量から、第２の検出ステップの処理により検出されたフレーム内符号化画像のビット発生量を減算した値を算出し、符号化中のＧＯＰに含まれる非圧縮データに対して割り当てられる仮想バッファのバッファ容量のうちＧＯＰ内でまだ符号化されていない残りのピクチャに割り当てられる使用可能ビット量に加えられるＧＯＰ毎のビット補給量の合計値の最大値に設定する設定ステップと、これから符号化されるＧＯＰのビット補給量を、設定ステップの処理により設定された合計値の最大値を満たし、かつ、第１の検出ステップの処理により検出された、符号化ステップの処理により過去に符号化されたＧＯＰに含まれる非圧縮データの符号化難易度が第１の値より高い場合、正の値となるように、符号化難易度が第１の値よりも低い第２の値より低い場合、負の値となるように、符号化難易度が第１の値と第２の値との間となる場合、０となるように算出する算出ステップとを含むことを特徴とする。
【００１９】
本発明の符号化装置および符号化方法、並びにプログラムにおいては、非圧縮データの符号化難易度が検出され、非圧縮データがＧＯＰを基準として圧縮符号化され、過去に符号化された直前のＧＯＰに含まれる非圧縮データのうちの、フレーム内符号化画像のビット発生量が検出され、非圧縮データが符号化された符号化ストリームをデコードするデコーダの入力バッファに対応する仮想バッファのバッファ容量から、検出されたフレーム内符号化画像のビット発生量を減算した値が算出されて、符号化中のＧＯＰに含まれる非圧縮データに対して割り当てられる仮想バッファのバッファ容量のうちＧＯＰ内でまだ符号化されていない残りのピクチャに割り当てられる使用可能ビット量に加えられるＧＯＰ毎のビット補給量の合計値の最大値に設定され、これから符号化されるＧＯＰのビット補給量が、設定された合計値の最大値を満たし、かつ、過去に符号化されたＧＯＰに含まれる非圧縮データの符号化難易度が第１の値より高い場合、正の値となるように、符号化難易度が第１の値よりも低い第２の値より低い場合、負の値となるように、符号化難易度が第１の値と第２の値との間となる場合、０となるように算出される。
【００２０】
【発明の実施の形態】
以下、図を参照して、本発明の実施の形態について説明する。
【００２１】
図１は、本発明を適応したエンコーダ１の構成を示すブロック図である。
【００２２】
画像並び替え部１２は、入力された非圧縮映像データを符号化順に並べ替える。走査変換・マクロブロック化部１３は、ピクチャ・フィールド変換を行い、例えば、非圧縮映像データが映画の映像データである場合、３：２プルダウン処理等を行う。イントラＡＣ算出部１４は、画像並び替え部１２および走査変換・マクロブロック化部１３により処理され、Iピクチャに圧縮符号化されるピクチャから、イントラＡＣ（intra ＡＣ）を算出する。
【００２３】
Iピクチャについては、他のピクチャの参照なしに圧縮符号化されるため、後述するＭＥ残差を求めることができない。従って、Iピクチャの符号化難易度を求めるために、ＭＥ残差に代わるパラメータとして、イントラＡＣが用いられる。イントラＡＣは、ＭＰＥＧ方式におけるＤＣＴ処理単位のＤＣＴブロックごとの映像データとの分散値の総和として定義されるパラメータであって、映像の複雑さを指標し、映像の絵柄の難しさおよび圧縮後のデータ量と相関性を有する。すなわち、イントラＡＣとは、ＤＣＴブロック単位で、それぞれの画素の画素値から、ブロック毎の画素値の平均値を引いたものの絶対値和の、画面内における総和である。イントラＡＣは、次の式（１）で示される。
【００２４】
【数１】
0004273386.tif 000002
・・・（１）
【００２５】
また、式（1）において、式（２）が成り立つ。
【数２】
0004273386.tif 000003
・・・・（２）
【００２６】
イントラＡＣ算出部１４は、算出されたイントラＡＣの値を、レートコントロール部１５の難易度算出部３２に出力する。
【００２７】
演算処理部１６は、動き補償部２５から供給される動き補償情報を基に、供給された映像データに対して動き補償を行い、ＤＣＴ部１８に対して出力する。ＤＣＴ部１８は、演算処理部１６から入力された映像データに対して、例えば、１６画素×１６画素のマクロブロック単位に離散コサイン変換（ＤＣＴ）処理を施し、時間領域のデータから周波数領域のデータに変換して、量子化部１９に対して出力する。
【００２８】
量子化部１９は、ＤＣＴ部１８から入力された周波数領域のデータを、レートコントロール部１５の量子化インデックス決定部３５から供給される量子化インデックスＱで量子化し、量子化データとしてＶＬＣ（Variable Length Code；可変長符号化）部２０および逆量子化部２２に対して出力する。
【００２９】
ＶＬＣ部２０は、量子化部１９から入力された量子化データに対し、所定の変換テーブルに基づく可変長符号化処理を行い、その結果得られる可変長符号化データをバッファ２１に出力する。
【００３０】
バッファ２１は、入力された符号化データをバッファリングし、符号化ビットストリームとして、順次、出力する。
【００３１】
逆量子化部２２は、量子化部１９から入力された量子化データを、量子化部１９が実行した量子化の量子化ステップで逆量子化し、逆量子化データとして逆ＤＣＴ部２３に対して出力する。
【００３２】
逆ＤＣＴ部２３は、逆量子化部２２から入力される逆量子化データに対して逆ＤＣＴ処理を行い、演算処理部２４に対して出力する。
【００３３】
演算処理部２４は、動き補償部２５の出力データ、および逆ＤＣＴ部２３の出力データを加算し、動き補償部２５に対して出力する。動き検出部１７は、圧縮対象となるピクチャ（入力ピクチャ）の注目マクロブロックと、参照されるピクチャ（参照ピクチャ）との間の差分値の絶対値和あるいは自乗値和が最小となるようなマクロブロックを探し、動きベクトルを求めて、動き補償部２５に出力する。動き補償部２５は、演算処理部２４の出力データに対して、動き検出部１７から入力される動きベクトルに基づいて動き補償処理を行い、演算処理部２４、および演算処理部１６に対して出力する。
【００３４】
レートコントロール部１５は、ＭＥ残差算出部３１、難易度算出部３２、genbit検出部３３、ターゲットビット決定部３４、および量子化インデックス決定部３５で構成され、ターゲットビットおよび量子化インデックスを決定する。
【００３５】
ＭＥ残差算出部３１は、画像の符号化難易度と強い相関があるパラメータであるＭＥ残差を算出する。動き予測によって、参照フレームから入力フレームへの差分値の絶対値和などが少なくなるような動きベクトルを求めることができるが、その場合における差分値の絶対値和、あるいは自乗和などで求められる誤差成分のパワーがＭＥ残差である。Ｐピクチャ、およびＢピクチャにおいては、ＭＥ残差と画像の符号化難易度とは、ほぼ単純な比例関係を有している。
【００３６】
難易度算出部３２は、ＭＥ残差算出部３１から入力されるＭＥ残差による近似により、式（３）、および、式（４）を用いて、ＰピクチャおよびＢピクチャの符号化難易度Ｄjを算出する。
【数３】
0004273386.tif 000004
・・・（３）
【数４】
0004273386.tif 000005
・・・（４）
【００３７】
ここで、ＭＥｊは、ｊ番目のピクチャにおけるＭＥ残差であり、ａP、ａB、ｂP、ｂBは、それぞれ、１次式で近似した場合の傾きと補正値である。
【００３８】
また、難易度算出部３２はイントラＡＣ算出部１４から入力されるイントラＡＣによる近似により、同様にIピクチャの符号化難易度Ｄjを算出し、ターゲットビット決定部３４に出力する。
【００３９】
そして、難易度算出部３２は、それそれのピクチャで算出された符号化難易度Ｄjから、ＧＯＰ毎の難易度平均avgDを算出する。
【００４０】
genbit検出部３３は、バッファ２１にバッファリングされている符号化データから、直近に符号化されたIピクチャの発生ビット量genbitを検出し、その値を、ターゲットビット決定部３４に出力する。
【００４１】
ターゲットビット決定部３４は、難易度算出部３２から入力された符号化難易度Ｄj、および、genbit検出部３３から入力されたIピクチャの発生ビット量genbitに基づいて、各ピクチャタイプのピクチャそれぞれのターゲットビットを算出して、レート制御を行う。
【００４２】
すなわち、ターゲットビット決定部３４は、後述する処理により、エンコードを終了した過去の画像における難易度などを基に、これからエンコードしようとする複数枚のピクチャに対して割り当てられている使用可能ビット量Ｒに加えられるsupplementの値（supplementは、正の値である場合、負の値である場合、０である場合がある）を決定する。ターゲットビット決定部３４は、この使用可能ビット量Ｒ＋supplementを基に、ターゲットビットの値を求め、量子化インデックス決定部３５に出力する。
【００４３】
量子化インデックス決定部３５は、ターゲットビット決定部３４から入力されたターゲットビットの値に基づいて、量子化インデックスＱを生成し、量子化部１９に対して出力する。
【００４４】
次に、図２のフローチャートを参照して、エンコードを終了した過去の画像における難易度を基にＲに加えるsupplementを決定する、ビット補給レート制御処理について説明する。
【００４５】
ステップＳ１において、ターゲットビット決定部３４は、現在処理中のピクチャは、ＧＯＰの先頭であるか否かを判断する。ステップＳ１において、ＧＯＰの先頭ではないと判断された場合、ＧＯＰの先頭であると判断されるまで、ステップＳ１の処理が繰り返される。
【００４６】
ステップＳ１において、ＧＯＰの先頭であると判断された場合、ステップＳ２において、ターゲットビット決定部３４は、難易度算出部３２より、前のＧＯＰにおける難易度平均avgDを取得する。
【００４７】
ステップＳ３において、図３、もしくは図６を用いて後述するmax_sum_sup算出処理が実行される。
【００４８】
ステップＳ４において、ターゲットビット決定部３４は、avgD > 0x2000かつsum_sup < max_sum_supであるか否かを判断する。ここで、難易度平均avgDと比較されている0x2000は、予め定められた閾値であり、画質を検討しながら要求される画質を得るために設定可能な値である。
【００４９】
ステップＳ４において、avgD > 0x2000かつsum_sup < max_sum_supであると判断された場合、ステップＳ５において、ターゲットビット決定部３４は、使用可能ビット量Ｒに対して、正の値のsupplementを加える。すなわち、ターゲットビット決定部３４は、前のＧＯＰは、ある一定以上の難易度を有していたため、これからエンコードするＧＯＰの難易度を、前のＧＯＰと同程度であると予測して、使用可能ビット量Ｒに対して、正の値のsupplementを加える。
【００５０】
ステップＳ４において、avgD > 0x2000かつsum_sup < max_sum_supではないと判断された場合、ステップＳ６において、ターゲットビット決定部３４は、avgD < 0x1000、かつsum_sup > min_sum_supであるか否かを判断する。ここで、難易度平均avgDと比較されている0x１000は、予め定められた閾値であり、上述した 0x2000より小さな値（画像難易度が低いことを示す値）であり、画質を検討しながら要求される画質を得るために設定可能な値である。
【００５１】
ステップＳ６において、avgD < 0x1000、かつsum_sup > min_sum_supであると判断された場合、ステップＳ７において、ターゲットビット決定部３４は、使用可能ビット量Ｒに対して、負の値のsupplementを加える。すなわち、ターゲットビット決定部３４は、前のＧＯＰは、ある一定以下の難易度であった（すなわち、簡単な画像であった）ため、これからエンコードするＧＯＰの難易度を、前のＧＯＰと同程度であると予測して、使用可能ビット量Ｒに対して、負の値のsupplementを加える。
【００５２】
ステップＳ６において、avgD < 0x1000、かつsum_sup > min_sum_supではなかったと判断された場合、ステップＳ８において、ターゲットビット決定部３４は、supplement ＝ 0とする。すなわち、ターゲットビット決定部３４は、使用可能ビット量Ｒに対して、supplementの増減を行わない。
【００５３】
ステップＳ５、ステップＳ７、もしくはステップＳ８の処理の終了後、ステップＳ９において、ターゲットビット決定部３４は、ステップＳ５、ステップＳ７、もしくはステップＳ８の処理において用いられたsupplementの値を用いて、sum_sup = sum_sup + supplementとし、処理は、ステップＳ１に戻り、それ以降の処理が繰り返される。
【００５４】
図２を用いて説明した処理により、エンコードを終了した過去の画像における難易度を基に、使用可能ビット量Ｒに加える、あるいは、減少されるsupplementの値が決定される。例えば、ＧＯＰ単位で、Ｒ＋supplemet（supplementは、正の値であるか、負の値であるか、もしくは０である）が決定される場合、前のＧＯＰの画像難易度（イントラＡＣ、あるいは、ＭＥ残差等）の平均値を基に、これからエンコードするＧＯＰの難易度が前のＧＯＰの難易度と同程度であると予測して、使用可能ビット量Ｒに対して、その難易度に応じたsupplementが加えられる。
【００５５】
ここでは、画像難易度をイントラＡＣ、あるいは、ＭＥ残差を用いて算出するものとして説明したが、画像難易度は、それ以外のパラメータを用いて算出するようにしても良い。
【００５６】
また、supplementの具体的な値の算出方法は、例えば、特開平１０−７５４４３に開示されている方法でも良いし、それ以外の方法で、要求される画質を得ることができるsupplementの値を用いるようにしても良い。
【００５７】
また、ここでは、前の１ＧＯＰにおける難易度平均avgＤを用いるものとして説明したが、難易度算出部３２は、１ＧＯＰにおける難易度平均avgＤに代わって、例えば、複数のＧＯＰ、もしくは、ＧＯＰの一部における難易度平均を求めるようにしても良いし、更に、単純な難易度平均ではなく、必要に応じて、重み付け和や重み付け平均を算出するようにしても良い。
【００５８】
次に、図２のステップＳ３において実行されるmax_sum_sup算出処理について説明する。
【００５９】
LongGOPにおいては、Iピクチャの発生量が大きくなる傾向がある。従って、ピクチャの発生量によってＶＢＶアンダーフローを起こすことを防ぐためには、ＶＢＶバッファサイズからエンコードを終了した直近のIピクチャのビット発生量を引いたものをsum_supの最大値（max_sum_sup）とすればよい。
【００６０】
図３のフローチャートを参照して、図２のステップＳ３において実行されるmax_sum_sup算出処理１について説明する。
【００６１】
ステップＳ２１において、genbit検出部３３は、直近のIピクチャの発生符号量genbitを検出する。ターゲットビット決定部３４は、genbit検出部３３から、genbitの値の入力を受ける。
【００６２】
ステップＳ２２において、ターゲットビット決定部３４は、sum_supの最大値であるmax_sum_supの値を、max_sum_sup＝ＶＢＶバッファサイズ−Iピクチャ発生量とし、処理は、図２のステップＳ４に戻る。
【００６３】
図３を用いて説明した処理により、図４に示すように、ＶＢＶサイズからIピクチャ発生量を引いた、実線矢印の合計量が、ＶＢＶ余裕度として、次のＧＯＰのsum_supの最大値とされる。これにより、アンダーフローしやすい絵柄ではsupplementが与えられにくくなり、アンダーフローに対する余裕がある絵柄に対してはsupplementが与えられやすくなる。すなわち、Iピクチャのビット発生量が多いために発生するＶＢＶアンダーフローを防ぐことができる。
【００６４】
しかしながら、図３を用いて説明した処理では、シーンチェンジが起きた場合に不具合が発生してしまう。例えば、難しい絵柄から簡単な絵柄へのシーンチェンジが起きた場合、図５に示されるように、前のＧＯＰが難しい絵柄のため、次のＧＯＰのmax_sum_sup（実線矢印の合計）が大きくなり、絵柄が簡単なＧＯＰに、大きくなったmax_sum_supを適用してしまうので、ＶＢＶの余裕が無いものに対してsum_supの最大値を大きくしてしまう。また、同様に、簡単な絵柄から難しい絵柄へのシーンチェンジにおいても、逆の不具合が発生してしまう。
【００６５】
これを防ぐために、シーンチェンジのIピクチャを含むＧＯＰをエンコードする場合には、前のIピクチャ発生量により求められたsum_supの最大値を、シーンチェンジのIピクチャの難易度により増減させるようにすることができる。
【００６６】
図６のフローチャートを参照して、図２のステップＳ３において実行されるmax_sum_sup算出処理２について説明する。
【００６７】
ステップＳ３１において、genbit検出部３３は、直近のIピクチャの発生符号量genbitを検出する。ターゲットビット決定部３４は、genbit検出部３３から、genbitの値の入力を受ける。
【００６８】
ステップＳ３２において、ターゲットビット決定部３４は、sum_supの最大値であるmax_sum_supの値を、max_sum_sup＝ＶＢＶバッファサイズ−Iピクチャ発生量とする。
【００６９】
ステップＳ３３において、ターゲットビット決定部３４は、シーンチェンジであるか否かを判断する。シーンチェンジであるか否かの判断は、例えば、ＭＥ残差算出部３１により算出されるＭＥ残差の値を基にして判断するようにしても良いし、それ以外のいかなる方法によって判断するようにしても良い。
【００７０】
ステップＳ３３において、シーンチェンジではないと判断された場合、処理は、図２のステップＳ４に戻る。
【００７１】
ステップＳ３３において、シーンチェンジであると判断された場合、ステップＳ３４において、ターゲットビット決定部３４は、難易度算出部３２より、シーンチェンジのIピクチャ、および１つ前のIピクチャの符号化難易度を取得する。
【００７２】
ステップＳ３５において、ターゲットビット決定部３４は、２つのIピクチャの符号化難易度の差を算出し、ステップＳ３２において算出されたmax_sum_supの値を、符号化難易度の差、すなわち、難しい絵柄から簡単な絵柄へのシーンチェンジであるか、簡単な絵柄から難しい絵柄へのシーンチェンジであるかを基に増減して、処理は、図２のステップＳ４に戻る。
【００７３】
具体的には、シーンチェンジ後の符号化難易度が低い場合は、max_sum_supの値を少なくし、シーンチェンジ後の符号化難易度が高い場合は、max_sum_supの値を多くする。
【００７４】
図６を用いて説明した処理により、シーンチェンジのIピクチャを含むＧＯＰをエンコードする場合には、前のIピクチャ発生量により求まったsum_supの最大値をシーンチェンジのIピクチャの難易度により増減させることにより、例えば、次のＧＯＰのIピクチャ発生量が大きく、ＶＢＶに余裕が無いにもかかわらず、大きなsum_sup最大値となってしまうようなことをふせぐようにすることができる。
【００７５】
また、本発明は、図２を用いて説明したビット補給レート制御処理以外でも、ビット補給レート制御を行う場合、すなわち、ビット補給量supplementの積算値sum_supの最大値である、max_sum_supを用いる処理の全てに適用可能である。
【００７６】
上述した一連の処理は、ハードウエアにより実行させることもできるが、ソフトウエアにより実行させることもできる。この場合、例えば、エンコーダ１は、図７に示されるようなパーソナルコンピュータ１０１により構成される。
【００７７】
図７において、CPU１１１は、ROM１１２に記憶されているプログラム、または記憶部１１８からRAM１１３にロードされたプログラムに従って、各種の処理を実行する。RAM１１３にはまた、CPU１１１が各種の処理を実行する上において必要なデータなども適宜記憶される。
【００７８】
CPU１１１、ROM１１２、およびRAM１１３は、バス１１４を介して相互に接続されている。このバス１１４にはまた、入出力インタフェース１１５も接続されている。
【００７９】
入出力インタフェース１１５には、キーボード、マウスなどよりなる入力部１１６、ディスプレイやスピーカなどよりなる出力部１１７、ハードディスクなどより構成される記憶部１１８、モデム、ターミナルアダプタなどより構成される通信部１１９が接続されている。通信部１１９は、インターネットを含むネットワークを介しての通信処理を行う。
【００８０】
入出力インタフェース１１５にはまた、必要に応じてドライブ１２０が接続され、磁気ディスク１３１、光ディスク１３２、光磁気ディスク１３３、あるいは、半導体メモリ１３４などが適宜装着され、それらから読み出されたコンピュータプログラムが、必要に応じて記憶部１１８にインストールされる。
【００８１】
一連の処理をソフトウエアにより実行させる場合には、そのソフトウエアを構成するプログラムが、専用のハードウエアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、ネットワークや記録媒体からインストールされる。
【００８２】
この記録媒体は、図７に示されるように、装置本体とは別に、ユーザにプログラムを供給するために配布される、プログラムが記憶されている磁気ディスク１３１（フロッピディスクを含む）、光ディスク１３２（ＣＤ-ＲＯＭ（Compact Disk-Read Only Memory），ＤＶＤ（Digital Versatile Disk）を含む）、光磁気ディスク１３３（ＭＤ（Mini-Disk）（商標）を含む）、もしくは半導体メモリ１３４などよりなるパッケージメディアにより構成されるだけでなく、装置本体に予め組み込まれた状態でユーザに供給される、プログラムが記憶されているROM１１２や、記憶部１１８に含まれるハードディスクなどで構成される。
【００８３】
なお、本明細書において、記録媒体に記憶されるプログラムを記述するステップは、含む順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【００８４】
【発明の効果】
本発明によれば、画像データをエンコードすることができる。
また、本発明によれば、エンコードを終了した過去のＧＯＰの画像における難易度を基に使用可能ビット量Ｒに加えるsupplementを決定する場合の、supplementの合計値の最大値を設定することができるので、フィードバック型レート制御にビット補給レート制御を適用する場合に仮想バッファのアンダーフローを防ぐことができる。
【００８５】
また、シーンチェンジが起きたＧＯＰをエンコードする際には、シーンチェンジ前後のフレーム内符号化画像の画像難易度を比較した値を用いて、ひとつ前のＧＯＰのフレーム内符号化画像の符号化難易度が符号化されるＧＯＰのフレーム内符号化画像の符号化難易度よりも低いとき、supplementの合計値の最大値が少なくなるように、ひとつ前のＧＯＰのフレーム内符号化画像の符号化難易度が符号化されるＧＯＰのフレーム内符号化画像の符号化難易度よりも高いとき、supplementの合計値の最大値が多くなるように、supplementの合計値の最大値を再設定することができるので、フィードバック型レート制御にビット補給レート制御を適用する場合に仮想バッファのアンダーフローを防ぐことができる。
【図面の簡単な説明】
【図１】本発明を適用したエンコーダの構成を示すブロック図である。
【図２】ビット補給レート制御処理について説明するフローチャートである。
【図３】  max_sum_sup算出処理１について説明するフローチャートである。
【図４】ＶＢＶバッファと、sum_supの最大値とについて説明するための図である。
【図５】ＶＢＶバッファと、sum_supの最大値とについて説明するための図である。
【図６】  max_sum_sup算出処理２について説明するフローチャートである。
【図７】パーソナルコンピュータの構成について説明する図である。
【符号の説明】
１  エンコーダ，  １２  画像並び替え部，  １３  走査変換・マクロブロック化部，  １４  イントラＡＣ算出部，  １５  レートコントロール部，  １６演算処理部，  １７  動き検出部，  １８  ＤＣＴ処理部，  １９  量子化部，  ２０  ＶＬＣ部，  ２１  バッファ，  ２２  逆量子化部，  ２３  逆ＤＣＴ処理部，  ２４  演算処理部，  ２５  動き補償部，  ３１  ＭＥ残差算出部，  ３２  難易度算出部，  ３３  genbit検出部，  ３４  ターゲットビット決定部，  ３５  量子化インデックス決定部
【図１】
0004273386.tif 000006
【図２】
0004273386.tif 000007
【図３】
0004273386.tif 000008
【図４】
0004273386.tif 000009
【図５】
0004273386.tif 000010
【図６】
0004273386.tif 000011
【図７】
0004273386.tif 000012