(57)【特許請求の範囲】
【請求項１】
画像フレームの符号化難易度に応じて割り当てビット量を決定する画像符号化方法において、
フェードインする区間又はフェードアウトする区間を上記フレーム内の平均輝度のレベルの時間変化に基づいて検出する検出工程と、
上記検出工程で検出したフェードインする区間又はフェードアウトする区間にあっては上記符号化難易度を高く補正する補正工程と、
上記補正工程で補正した符号化難易度に応じて上記割り当てビット量を演算するビット量演算工程と
を備えることを特徴とする画像符号化方法。
【請求項２】
上記補正工程は、上記検出工程で検出したフェードインする区間又はフェードアウトする区間にあっては初期値より大きい重み係数を上記符号化難易度に乗じて当該符号化難易度を高く補正することを特徴とする請求項１記載の画像符号化方法。
【請求項３】
上記検出工程が検出するフェードインする区間又はフェードアウトする区間は、複数の画像フレームからなる画像符号化グループの数個分のゆっくりとした時間であることを特徴とする請求項１記載の画像符号化方法。
【請求項４】
上記検出工程は、少なくとも一つのＩピクチャと、Ｐピクチャ及びＢピクチャを含んで構成される画像符号化グループ単位での平均輝度の時間変化に基づいて、フェードインする区間又はフェードアウトする区間を検出する
ことを特徴とする請求項１記載の画像符号化方法。
【請求項５】
上記補正工程は、上記検出工程で検出したフェードインする区間又はフェードアウトする区間にあっては初期値より大きい重み係数を上記符号化難易度に乗じて当該符号化難易度を高く補正することを特徴とする請求項４記載の画像符号化方法。
【請求項６】
上記補正工程は、上記重み係数の大きさを、対象となる上記画像符号化グループ単位の符号化難易度の和と、全体の画像符号化グループでの符号化難易度の和の平均値との比を基にして算出することを特徴とする請求項５記載の画像符号化方法。
【請求項７】
上記検出工程が検出するフェードインする区間又はフェードアウトする区間は、上記画像符号化グループの時間長さの数倍程度の時間であることを特徴とする請求項４記載の画像符号化方法。
【請求項８】
上記検出工程は、少なくとも一つのＩピクチャと、Ｐピクチャ及びＢピクチャを含んで構成される画像符号化グループであって相互に隣接する画像符号化グループ間の画像の差が小さいときに画像符号化グループ単位での平均輝度の時間変化に基づいて上記フェードインする区間又はフェードアウトする区間を検出することを特徴とする請求項１記載の画像符号化方法。
【請求項９】
上記検出工程は、少なくとも一つのＩピクチャと、Ｐピクチャ及びＢピクチャを含んで構成される画像符号化グループであって相互に隣接する画像符号化グループ間の画像の差が大きいときには画像符号化グループ単位での平均輝度の時間変化と、画像符号化グループ単位でのＩピクチャの符号化難易度の比率の時間変化とに基づいて上記フェードインする区間又はフェードアウトする区間を検出することを特徴とする請求項１記載の画像符号化方法。
【請求項１０】
上記補正工程は、上記検出工程で検出したフェードインする区間又はフェードアウトする区間にあっては初期値より大きい重み係数を上記符号化難易度に乗じて当該符号化難易度を高く補正することを特徴とする請求項９記載の画像符号化方法。
【請求項１１】
上記補正工程は、上記重み係数の大きさを、対象となる上記画像符号化グループ単位の符号化難易度の和と、全体の画像符号化グループでの符号化難易度の和の平均値との比を基にして算出することを特徴とする請求項１０記載の画像符号化方法。
【請求項１２】
上記検出工程が検出するフェードインする区間又はフェードアウトする区間は、上記画像符号化グループの時間長さの数倍程度の時間であることを特徴とする請求項８記載の画像符号化方法。
【請求項１３】
画像フレームの符号化難易度に応じて割り当てビット量を決定する画像符号化装置において、
フェードインする区間又はフェードアウトする区間を上記フレーム内の平均輝度のレベルの時間変化に基づいて検出する検出手段と、
上記検出手段で検出したフェードインする区間又はフェードアウトする区間にあっては上記符号化難易度を高く補正する補正手段と、
上記補正手段で補正した符号化難易度に応じて上記割り当てビット量を演算するビット量演算手段と
を備えることを特徴とする画像符号化装置。
【請求項１４】
上記補正手段は、上記検出手段で検出したフェードインする区間又はフェードアウトする区間にあっては初期値より大きい重み係数を上記符号化難易度に乗じて当該符号化難易度を高く補正することを特徴とする請求項１３記載の画像符号化装置。
【請求項１５】
上記検出手段が検出するフェードインする区間又はフェードアウトする区間は、複数の画像フレームからなる画像符号化グループの数個分のゆっくりとした時間であることを特徴とする請求項１３記載の画像符号化装置。
【請求項１６】
上記検出手段は、少なくとも一つのＩピクチャと、Ｐピクチャ及びＢピクチャを含んで構成される画像符号化グループ単位での平均輝度の時間変化に基づいて、フェードインする区間又はフェードアウトする区間を検出する
ことを特徴とする請求項１３記載の画像符号化装置。
【請求項１７】
上記補正手段は、上記検出手段で検出したフェードインする区間又はフェードアウトする区間にあっては初期値より大きい重み係数を上記符号化難易度に乗じて当該符号化難易度を高く補正することを特徴とする請求項１６記載の画像符号化装置。
【請求項１８】
上記補正手段は、上記重み係数の大きさを、対象となる上記画像符号化グループ単位の符号化難易度の和と、全体の画像符号化グループでの符号化難易度の和の平均値との比を基にして算出することを特長とする請求項１７記載の画像符号化装置。
【請求項１９】
上記検出手段が検出するフェードインする区間又はフェードアウトする区間は、上記画像符号化グループの時間長さの数倍程度の時間であることを特徴とする請求項１６記載の画像符号化装置。
【請求項２０】
上記検出手段は、少なくとも一つのＩピクチャと、Ｐピクチャ及びＢピクチャを含んで構成される画像符号化グループであって相互に隣接する画像符号化グループ間の画像の差が小さいときに画像符号化グループ単位での平均輝度の時間変化に基づいて上記フェードインする区間又はフェードアウトする区間を検出することを特徴とする請求項１３記載の画像符号化装置。
【請求項２１】
上記検出手段は、少なくとも一つのＩピクチャと、Ｐピクチャ及びＢピクチャを含んで構成される画像符号化グループであって相互に隣接する画像符号化グループ間の画像の差が大きいときには画像符号化グループ単位での平均輝度の時間変化と、画像符号化グループ単位でのＩピクチャの符号化難易度の比率の時間変化とに基づいて上記フェードインする区間又はフェードアウトする区間を検出することを特徴とする請求項１３記載の画像符号化装置。
【請求項２２】
上記補正手段は、上記検出手段で検出したフェードインする区間又はフェードアウトする区間にあっては初期値より大きい重み係数を上記符号化難易度に乗じて当該符号化難易度を高く補正することを特徴とする請求項２１記載の画像符号化装置。
【請求項２３】
上記補正手段は、上記重み係数の大きさを、対象となる上記画像符号化グループ単位の符号化難易度の和と、全体の画像符号化グループでの符号化難易度の和の平均値との比を基にして算出することを特徴とする請求項２２記載の画像符号化装置。
【請求項２４】
上記検出手段が検出するフェードインする区間又はフェードアウトする区間は、上記画像符号化グループの時間長さの数倍程度の時間であることを特徴とする請求項２１記載の画像符号化装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、画像フレームの符号化難易度に応じて画像を符号化する画像符号化方法及び画像符号化装置に関する。
【０００２】
【従来の技術】
ビデオ情報をディジタルビデオディスク（Digital Video Disk：ＤＶＤ）やビデオＣＤのようなパッケージメディアに蓄積する際、上記ビデオ情報に圧縮符号化処理を施すエンコードシステムでは、最初に素材の画像の符号化難易度（Difficulty）を測定し、その符号化難易度を元に、パッケージメディアの記録容量内の与えられたバイト数に収まるように、各ビデオ情報のフレームごとにビット配分（以下、Bit assign）処理を行ってエンコードするという方法が一般に採用されている。以下、このエンコード方法を２パスエンコーディング方法という。
【０００３】
例えば、上記ディジタルビデオディスク用に、上記２パスエンコーディング方法を採用して、ビデオ情報を圧縮符号化するビデオエンコードシステムの具体例を図１６に示す。
【０００４】
図１６において、ビデオエンコードの制御を行うビデオエンコードコントローラ１０は、システム全体を管理するスーパーバイザコントローラ１に、ネットワーク２を介して接続されている。
【０００５】
スーパーバイザコントローラ１はオペレーティングシステムを構成するプログラムの内、特にシステム全体の動きを監視し、効率的に制御するプログラムであるスーパーバイザを実行するコントローラである。このビデオエンコードシステムにおいてはＤＶＤのオーサリングシステム全体の管理を行い、ビデオ、オーディオ、字幕やメニューといった各エンコードシステムにエンコード条件を与え、エンコード結果の報告を受ける。
【０００６】
このビデオエンコードシステムの具体例に対しては、例えばv.enc というファイルによってビデオエンコード条件を指定している。そして、ビデオエンコードコントローラ１０側からは、ＲＡＩＤ１６（Redundant Arrays of Inexpensive Diskes）上に書き込まれたアドレスv.adrと、エンコード結果のビットストリームがオーディオや字幕，メニュー等のサブピクチャとマルチプレックスされる際に必要とされるデータ(vxxx.aui)を報告している。ここで、ＲＡＩＤ１６は、エンコード結果のビットストリームを記録する大容量記録媒体であり、ハードディスクドライブ（ＨＤＤ）等を複数並列に接続して記録容量と転送速度性能を向上させている。
【０００７】
ビデオエンコードコントローラ１０は、グラフィカルユーザインターフェース（Graphical User Interfece:ＧＵＩ）１１と、後述するビット配分計算処理プログラム（Bit_Assign）を格納しているビット配分計算部１２と、このビット配分計算部１２内部のビット配分計算処理プログラム（Bit_Assign）を実行するＭＰＥＧエンコーダコントローラ１３と、ディジタルＶＴＲコントローラ１４とを備えている。
【０００８】
ユーザは、グラフィカルユーザインターフェース１１を用い、ビット配分計算部１２の上記ビット配分計算処理プログラム（BIT_ASSIGN）と、ＭＰＥＧエンコーダコントローラ１３の３つのプログラムを管理することができる。また、ＤＶＴＲコントローラ１４も管理できる。
【０００９】
ＭＰＥＧエンコーダコントローラ１３は、上記ビット配分計算部１２内部の上記ビット配分計算処理プログラム（BIT_ASSIGN）を実行すると共に、ＭＰＥＧエンコーダ１５を制御する。また、ＤＶＴＲコントローラ１４はＤＶＴＲ１７を制御する。このＤＶＴＲ１７はＭＰＥＧエンコーダ１５に接続しており、ＭＰＥＧエンコーダ１５はエンコードした結果を表示するためにモニタ１８に接続している。さらに、ＭＰＥＧエンコーダ１５は、エンコード結果を記録するために上記ＲＡＩＤ１６にも接続している。
【００１０】
ＭＰＥＧエンコーダ１５では、動き補償予測による時間方向の冗長度の除去を行って、ビデオ情報を圧縮している。また、ＭＰＥＧエンコーダ１５では、フレーム内だけで符号化されるフレーム内符号化画像をＩピクチャ（Intra Coded）、過去の画面から現在を予測することによって符号化されるフレーム間順方向予測符号化画像をＰピクチャ（Predictive Coded）、過去、未来の両方向の画像から現在を予測することによって符号化される双方向予測符号化画像をＢピクチャ（Bidirectionaly Predictive Coded）として用い、ビデオ情報を圧縮符号化している。ここでは、必ずＩピクチャを１つ含むピクチャーのまとまりを図１７に示すようなＧＯＰ（Group of Pictures）としている。この図１７において、ＧＯＰのフレーム数Ｎは１５であり、表示順のＧＯＰの先頭は、Ｉピクチャの前で、Ｐ又はＩピクチャの次のＢピクチャーである。ＧＯＰの最後は、次のＩピクチャの前の最初のＰピクチャである。
【００１１】
このビデオエンコードシステムの動作について図１８のフローチャートを参照して説明する。先ず、ステップＳ１で、スーパーバイザコントローラ１からネットワーク２経由でビデオに割り当てるビット総量や最大レートなどのエンコード条件v.encが与えられ、ＭＰＥＧエンコーダコントローラ１３はエンコード条件を設定する。その後、ステップＳ２でＭＰＥＧエンコーダコントローラ１３の制御の基にＭＰＥＧエンコーダ１５がエンコード素材の符号化難易度を測定する。ここでは、各画素のＤＣ値や動きベクトル量ＭＥも読んでおく。そして、これらの測定結果により、ファイルを作成しておく。
【００１２】
実際の符号化難易度の測定は以下のように行う。エンコード素材となるビデオ情報はＤＶＴＲ１７によってマスターテープであるディジタルビデオカセットから再生される。ＭＰＥＧエンコードコントローラ１３は、ＭＰＥＧエンコーダ１５を介して、ＤＶＴＲ１７によって再生されたビデオ情報の符号化難易度を測定する。
【００１３】
ここでは、符号化の際に量子化ステップ数を固定値に設定した条件で発生ビット量を測定する。動きが多く、高い周波数成分が大きい画像では発生ビット量が大きくなり、静止画や平坦な部分が多い画像では発生ビット量が少なくなる。この発生ビット量の大きさを上記符号化難易度としている。
【００１４】
次に、ステップＳ３では、ステップＳ１で設定されたエンコード条件を元に、ステップＳ２で測定された各ピクチャーの符号化難易度の大きさに応じて、ＭＰＥＧエンコードコントローラ１３がビット配分計算部１２内部のビット配分計算プログラム（BIT_ASSIGN）を実行し、割り当てビット量（ターゲット量 :target）の配分計算を行う。
【００１５】
そして、このステップＳ３でのビット配分計算による結果を使ってエンコードを実行するかどうかをＭＰＥＧエンコーダ１５に内蔵されているローカルデコーダ出力の画質によってユーザに判断させる。
【００１６】
実際には、ステップＳ４で、上記ビット配分によるビットストリームをＲＡＩＤ１６に出力しないで、任意の処理範囲を指定できるプレビユーモード（Preview）を行って、ユーザーが画質をチェックする。
【００１７】
ステップＳ５の画質評価で画質に問題がない場合にはステップＳ６に進み、ＭＰＥＧエンコーダ１５によるエンコード処理を実行するが、画質に問題がある場合には、ステップＳ８に進み、問題のある部分のレートを上げるとか、フィルターレベルを調整するといった画質調整のためのカスタマイズ作業を行ってから、ステップＳ９で再びビット配分計算部１２内部のビット配分計算処理プログラム（BIT_ASSIGN）を実行し、ビット再配分計算を行う。
【００１８】
その後、ステップＳ４に戻り、カスタマイズした部分をプレビューして、ステップＳ５で画質を確認し、すべての部分が良ければステップＳ６に進み、全体のエンコードをＭＰＥＧエンコーダ１５に実行させる。エンコード結果であるビットストリームは、ステップＳ７でＳＣＳＩ（Small Computer System Interface）経由で直接、ＲＡＩＤ１６に書き込まれる。
【００１９】
ステップＳ６でのエンコード後、ビデオエンコードコントローラ１０は上述したようなエンコード結果情報をネットワーク経由でスーパーバイザコントローラ１に報告する。
【００２０】
この図１８のフローチャートにおいて、ステップＳ２，ステップＳ４及びステップＳ６を除いた各ステップの処理はオフライン処理を意味している。
【００２１】
以下、特に、ステップＳ３でＭＰＥＧエンコードコントローラ１３によって実行されるビット配分計算部１２内のビット配分計算処理について詳細に説明する。先ず、スーパーバイザコントローラ１から上記ビット総量（QTY_BYTES）と、最大ビットレート（MAXRATE）が指定されると、これに対して、ＭＰＥＧエンコーダコントローラ１３は、最大ビットレート（MAXRATE）以下になるように制限を加えた総ビット数 (USB_BYTES)を求め、この値からＧＯＰのヘッダ（GOP header）に必要なビット数(TOTAL_HEADER)を引いた値と、全体のフレーム総数からターゲット数の総和の目標値となるSUPPLY_BYTESを算出する。
【００２２】
そして、このSUPPLY_BYTESの大きさに収まるようにビット配分計算部１２内部のビット配分計算処理プログラムを実行し、各ピクチャーへの割り当てビット量（以下、ターゲット量：target）を配分する。
【００２３】
このステップＳ３でのビット配分計算処理を詳細に示したのが図１９のフローチャートである。
【００２４】
先ず、ステップＳ１１で上述したように、スーパーバイザコントローラ１から送られた上記ビット総量（QTY_BYTES）と、最大ビットレート（MAXRATE）が入力されると、ＭＰＥＧエンコーダコントローラ１３は、上述したようにSUPPLY_BYTESを算出する。
【００２５】
次に、上記図１８のステップＳ２の符号化難易度の測定で作成された測定ファイルをステップＳ１２でそのまま読み込み、符号化難易度の測定の際に、併せて測定された各画像のＤＣ値や動きベクトル量ＭＥの大きさのパラメータの変化量から、ステップＳ１３でシーンが変化するポイントを見つける。
【００２６】
このステップＳ１３でのシーンチェンジ検出／処理は、本件出願人が既に特願平８-２７４０９４号明細書及び図面にて開示した「映像信号処理装置」に応じてシーンチェンジ点を検出する処理である。
【００２７】
この「映像信号処理装置」は、映像信号の各フレームの直流レベルを検出し、この直流レベルを曲線近似して得られる誤差値より、上記映像信号のシーンチェンジのフレームを検出して、シーンチェンジ点を明らかにする。
【００２８】
そして、図２０に示すように、シーンがチェンジしたとして検出したポイントは、ＰピクチャーをＩピクチャーに変更して、画質改善を計る。
【００２９】
次に、ステップＳ１４でチャプター（CHAPTER）境界処理を行う。ＤＶＤ再生装置でのチャプターサーチ時には、特定されないピクチャーからジャンプしてくることになるが、その場合でも再生画像の乱れがないようにするため、図２０に示すようにチャプターの位置が必ずＧＯＰの先頭になるようにピクチャータイプを変更する。図２１ではＰピクチャをＩピクチャに変更している。
【００３０】
このようなステップＳ１２，ステップＳ１３での一連の作業の結果、ピクチャータイプ（Ｉ，Ｐ，Ｂピクチャ）の変更処理が実行されると、符号化難易度測定時のピクチャータイプが変更されるため、ステップＳ１５で変更後のピクチャータイプに合わせた符号化難易度の値に補間／補正する。
【００３１】
ステップＳ１５での符号化難易度の補間／補正によって得られた符号化難易度と、全体に与えられたビット数（SUPPLY_BYTES）に応じて、ステップＳ１６で各ピクチャーごとのターゲットビット数を計算する。
【００３２】
そして、ステップＳ１７でＲＡＩＤ１６にエンコード結果のビットストリームを書き込む際のアドレスの計算を行った上で、ステップＳ１８に進み、エンコーダ用のコントロールファイルを作成する。
【００３３】
例えば、ビット配分計算の具体例として、先ずＧＯＰ単位にビット量を配分してから、各ＧＯＰ内で各ピクチャーの符号化難易度に応じたビット配分を行う場合を説明する。ここでは、各ＧＯＰ毎の符号化難易度の和であるGOP_DIFFに応じて、エンコードする際のＧＯＰ単位のビット割り当て量（GOP_TARGET）を配分している。このGOP_DIFFとGOP_TARGETとを変換するもっとも簡単な関数の例を図２２に図示する。
【００３４】
この例では、縦軸YをGOP_TARGET、横軸XをGOP_DIFFとして、Y=AX+Bという評価関数を用いている。なお、全てのピクチャーの符号化難易度の総和（DIFFICULTY_SUM）を算出しておく。
【００３５】
先ず、最大ビットレート以下になるように制限を加えた総ビット数USB_BYTESを、スーパーバイザコントローラ１から与えられたビット総量QTY_BYTESと、最大ビットレートMAXRATEを使って、
USB_BYTES = min (QTY_BYTES，MAXRATE × KT × total_frame_number）・・・（１）
のように求める。
【００３６】
ここで、NTSCの場合 KT=1/8(bits)/30(Hz), PALの場合1/8(bits)/25(Hz)である。また、total_frame_number はエンコードする素材のフレーム総数、min(s,t)は s,t の内で小さい方を選択する関数である。
【００３７】
また、SUPPLY_BYTESは、上記（１）式で求めたUSB_BYTESからＧＯＰのヘッダに必要なビット数TOTAL_HEADERを引いて、
SUPPLY_BYTES = USB_BYTES - TOTAL_HEADER                ・・・（２）
のように求める。
【００３８】
次に、全てのピクチャの符号化難易度の総和は、
DIFFICULTY_SUM = Σdifficulty                          ・・・（３）
と表せる。
【００３９】
また、GOP_TARGETの最小値を次の（４）式のように、
B = GOP_MINBYTES                                       ・・・（４）
とする。
【００４０】
すると、図２２に示した評価関数のような
Σy = A×Σx + B×n
が得られる。
【００４１】
ここで、Σy = SUPPLY_BYTES,  Σx = DIFFICULTY_SUM 、n は GOP の総数である。
【００４２】
よって  A = (SUPPLY_BYTES - B×n)/ DIFFICULTY_SUM となる。すると、各ＧＯＰ毎のターゲット量は、
GOP_TARGET = A × GOP_DIFF + B                         ・・・（５）
と表せる。
【００４３】
その後、各ＧＯＰ内で各ピクチャーの符号化難易度に応じたビット配分を行う。ＧＯＰ内での各ピクチャーの配分を符号化難易度 の大きさに比例させた場合には、各ピクチャーのターゲット量は以下の（６）式で求められる。
【００４４】
target(k) = GOP_TARGET × diffuculty(k)/GOP_DIFF       ・・・（６）
(1 ≦ k ≦ GOP 内の picture 数）
この場合、素材の中に極端に難しい（GOP_DIFFが大きい）ピクチャーがあると、非常に大きいGOP_TARGET量となってしまい、システムで許容されている最大レートを越えてしまうため、GOP_MAXBYTESといった固定量でリミッタをかけることが必要である。また、最小のターゲット量もGOP_MINBYTESで制限する。具体的には、以下に説明するアルゴリズムによっている。
【００４５】
ＭＰＥＧビデオのエンコード時には、仮想デコーダのバッファ残量を考慮しながらビット配分することが義務付けられている。この仮想バッファ残量の計算をＶＢＶ（Video buffering Verifier） という。
【００４６】
先ず、図２３を用いてＶＢＶ計算方法を説明する。この計算の最初のOCCUPANCY_UP(0)は次の（７）式に示すように、固定値（この例では VBVMAX * 2/3 )からスタートする。
【００４７】
OCCUPANCY_UP(0) = VBVMAX * 2/3                        ・・・（７）
以下の OCCUPANCY_UPはグラフ上の各ピクチャーの上側のポイント、OCCUPANCY_DOWNはグラフ上の各ピクチャーの下側のポイントを意味している。
【００４８】
ＤＶＤのバッファサイズVBVMAX(1.75Mbits)に対して、k番目のピクチャーのバッファーのスタート点をOccupancy_up(k), k 番目のピクチャーのターゲット量をtarget(k)とすると、ピクチャーにビットを吐き出したあとのバッファー残量 OCCUPANCY_DOWN(k)は後述する（８）式で表される。このバッファーには、デコーダーのピックアップからビデオのデータ量に応じたビットレートのデータ量(SYSTEM_SUPPLY)が蓄積される。この供給後のバッファー残量 OCCUPANCY_UP(k+1) は次の（９）式で表される。
【００４９】
OCCUPANCY_DOWN(k) = OCCUPANCY_UP(k) - target(k)       ・・・（８）
OCCUPANCY_UP(k+1) = OCCUPANCY_DOWN(k) + SYSTEM_SUPPLY  ・・・（９）
この供給後のバッファ残量は、図２３の図中の右上に上がる量に相当する。供給されるビットレートが大きいほど傾きは大きくなり、バッファーにデータがたまりやすくなる。バッファがいっぱいになった場合には、ピックアップからバッファーへの供給がストップするため、バッファーのオーバーフローに関しては考慮する必要はない。このことは、ある設定値ちょうどに制御する必要はなく、設定値以上になるように制御すれば良いことを意味している。
【００５０】
逆に、各ピクチャーのデータ量が大きいと、バッファにたまったデータは減少する。このバッファー残量が一定値以下にならないようにターゲットビット量を計算する。そして、ビデオのデータ量に応じたビットレートのデータ量のSYSTEM_SUPPLYを、
SYSTEM_SUPPLY = MAXRATE(bps) * KT                      ・・・（１０）
のように求める。
【００５１】
図２４にＧＯＰ単位でのターゲットビット配分計算をおこなった例を示す。図２４の（Ａ）は評価関数とGOP_MAXRATE制限を考慮して求めたターゲット量に対して上記VBVバッファ計算をおこなった場合である。ここで、図２４の（Ａ）での［１］，［４」，「７」のピクチャーでVBVバッファーの下限であるVBVMINの値を下回っている。そこで、VBVがVBVMINを下回ったピクチャーを含むＧＯＰのターゲット量を削減させる。ＧＯＰ内でVBV制限を加える前のターゲット量でVBV計算を実行したときのOCCUPANCYの最小値をOcc_minとすると調整量は以下の式であらわされる。ここで、制限をおこなうスタート点kstartは、OCCUPANCY_UP(k)が基準値（VBVLINE : たとえば VBVMAX * 3/4) 以上のkの値で、このときのOCCUPANCY_UP(k)の値をOcc_startとする。
OCCUPANCY_MIN＜ VBVMIN の時
r = (Occ_start - VBVMIN)/ (VBVSTART - Occ_min)        ・・・（１１）
各ターゲットに対して target(j) = target(j) × r （kstart ≦ j ≦ k) とする。
【００５２】
このようにして求められたターゲット量を用いて作成されたコントロールファイルによるエンコード処理を行うことで、素材の画像の難しさに応じた可変ビットレートエンコーディングが実行される。
【００５３】
ところで、編集されたビデオ素材では、だんだんと画面を暗くしていき、黒い画面から再びだんだんと画面を明るくして異なるシーンを接続するフェードアウト／フェードインの手法が良く用いられる。
【００５４】
図２５は、暗い画面からフェードインする場合の説明図である。この内、図２５の（ａ）には、輝度のフレーム単位での平均値DCの変化を示す。例えば、DCは０〜２５５までの２５６段階で表され、大きい値ほど明るい状態を示し、小さいほど暗い状態を示す。図２５の（ｂ）には、仮エンコードによって測定されたk番目のフレームの符号化難易度（Difficulty）の値gen_bit(k)を示す。画像が難しいほどこの値gen_bit(k)が大きい。例えば、黒い静止画面では、画像が簡単なため、Iピクチャのgen_bitは小さくなる。また、動きがないことと、フレーム相関が非常に大きいため、Pピクチャ、Bピクチャのgen_bitも非常に小さい値となる。
【００５５】
図２５の（ａ）に示したフェードインの区間では時間的に前にあるIピクチャより、後ろにあるP,Bピクチャは、DCレベルが異なることからフレーム相関が少なくなるため、図２５の（ｂ）に示すように、P，Bピクチャのgen_bitの値は相対的に大きくなる。
【００５６】
図２５の（ｅ）には、図２５の（ｂ）に示したgen_bitによって、I,B,Pピクチャに配分されるターゲットビット量target(k)を示す。また、図２５の（ｆ）には、図２５の（ｅ）のターゲットビット量target(k)に応じたフェードイン区間のビットレート配分を示す。
【００５７】
暗いシーンでは、通常の動画のシーンよりも画像の難しさが小さいため、符号化難易度は、平均的な符号化難易度よりも低い値となる。全体のビットレートの配分は、符号化難易度の値によって決定されるので、このような暗いフェードイン／フェードアウト点でのビットレートは小さくなる。
【００５８】
【発明が解決しようとする課題】
しかし、暗い部分での人の視覚感度は高いため、暗い動画でのノイズは知覚されやすく、暗いフェードイン／アウト点でのビットレートの大きさが十分でないとノイズが目立ってしまい問題となってくる。
【００５９】
本発明は、上記実情に鑑みてなされたものであり、レート配分計算時に通常処理よりも多くレートを割り当て、フェードイン／フェードアウトポイントの画質を改善できる画像符号化方法及び画像符号化装置の提供を目的とする。
【００６０】
【課題を解決するための手段】
本発明に係る画像符号化方法は、上記課題を解決するために、画像フレームの符号化難易度に応じて割り当てビット量を決定する画像符号化方法において、フェードインする区間又はフェードアウトする区間を上記フレーム内の平均輝度のレベルの時間変化に基づいて検出する検出工程と、上記検出工程で検出したフェードインする区間又はフェードアウトする区間にあっては上記符号化難易度を高く補正する補正工程と、上記補正工程で補正した符号化難易度に応じて上記割り当てビット量を演算するビット量演算工程とを備える。
【００６１】
本発明に係る画像符号化装置は、上記課題を解決するために、画像フレームの符号化難易度に応じて割り当てビット量を決定する画像符号化装置において、フェードインする区間又はフェードアウトする区間を上記フレーム内の平均輝度のレベルの時間変化に基づいて検出する検出手段と、上記検出手段で検出したフェードインする区間又はフェードアウトする区間にあっては上記符号化難易度を高く補正する補正手段と、上記補正手段で補正した符号化難易度に応じて上記割り当てビット量を演算するビット量演算手段とを備える。
【００６９】
【発明の実施の形態】
以下、本発明に係る画像符号化方法及び装置の実施の形態について図面を参照しながら説明する。
【００７０】
この実施の形態は、例えばディジタルビデオカセットテープに記録されたビデオ素材をディジタルビデオディスク（Digital Video Disk：ＤＶＤ）用に、２パスエンコーディング方法を採用してエンコードするためのビデオエンコードシステムであり、図１に示すような構成である。
【００７１】
このビデオエンコードシステムは、上記図１６に示したビデオエンコードシステムと基本的に構成を同じにしているが、ビデオエンコードコントーローラ２０内部でのビット配分計算処理動作を従来と異ならせている。
【００７２】
この図１に示したビデオエンコードシステムは、ビデオ素材のフレーム内平均輝度のレベルと時間変化量から、暗い部分を介して明暗が変化する区間、例えばフェードイン／フェードアウト区間を検出し、これらの区間の画像の難しさを表す符号化難易度の値に重み係数を乗じて符号化難易度を補正し、この補正した符号化難易度に応じて全体のビットレートを割り当てる画像符号化方法を適用したプログラムに従って、図２に示すようなビット配分計算処理を行う。このビット配分計算処理は、ＭＰＥＧエンコーダコントローラ２３によって制御されて、ビット配分計算部２２で実行される。
【００７３】
このビット配分計算処理を図２のフローチャートにしたがって以下に説明する。
【００７４】
この図２に示すビット配分計算処理は、上記図１９に示したフローチャートのステップＳ１５とステップＳ１６との間に、ステップＳ２０としてフェードイン／フェードアウト点でのDifficultyの重み付け処理工程を設けている。
【００７５】
以下、このステップＳ２０でのフェードイン／フェードアウト点でのDifficultyの重み付け処理工程を説明する。
【００７６】
このステップＳ２０では、ビデオ素材である入力画像の平均輝度のレベルの時間変化、ＧＯＰ内のIピクチャの符号化難易度Difficultyの割合によってフェードイン／フェードアウトの区間を検出し、この区間の符号化難易度に重み係数を乗じて符号化難易度を補正している。
【００７７】
そして、次のステップＳ１６で、この補正した符号化難易度に応じて、ターゲットビット量を計算し、全体のビットレートを割り当ててビットレートが極端に小さくならないように保護する。
【００７８】
このステップＳ２０とステップＳ１６での処理手順について暗い画面からフェードインする場合を具体例として図３を用いて説明する。
【００７９】
図３の（ａ）には、DC値の変化を示す。図３の（ｂ）には、仮エンコードによって測定されたｋ番目のフレームの符号化難易度（Difficulty）の値のgen_bit(k)を示す。図３の（ｃ）には、重み付け係数rate_ctlを示す。図３の（ｄ）には、上記重み付け係数rate_ctlによって補正されたｋ番目のフレームの符号化難易度の値gen_bit(k)を示す。図３の（ｅ）には、図３の（ｄ）に示した補正後のgen_bit(k)によって、I,B,Pピクチャに配分されるターゲットビット量target(k)を示す。また、図３の（ｆ）には、図３の（e）のターゲットビット量target(k)に応じたフェードイン区間のビットレート配分を示す。
【００８０】
図２のステップＳ２０で、フレーム内平均輝度のレベルと時間変化量から、図３の(a)に示したフェードイン区間を検出し、図３の（ｂ）に示した画像の難しさを表す符号化難易度の値gen_bit(k)に、図３の（ｃ）に示す重み係数rate_ctlを乗じて、符号化難易度値を補正して図３の（ｄ）に示すような補正符号化難易度値gen_bit(k)を求める。ここでは、フェードイン区間の重み係数rate_ctlを初期値（１）より大きくして補正符号化難易度値gen_bit(k)を求めている。
【００８１】
そして、図２のステップＳ１６で、図３の（ｄ）に示した補正符号化難易度値gen_bit(k)を基にターゲット量を割り当ててやれば、図３の（ｆ）に示すように平均ビットレートに十分近いビットレートを確保できる。
【００８２】
上記ステップＳ２０のフェードイン／フェードアウト点でのdifficultyの重み付け処理工程は、図４に示すようなステップＳ２１〜ステップＳ２４となる。
【００８３】
ステップＳ２１では、ＧＯＰ単位の各パラメータの測定や、重み係数の初期化を行う。後述するステップＳ２２でのフェードイン点の検出や、ステップＳ２３でのフェードアウト点の検出には、平均輝度としてＧＯＰ単位でのDC値の平均値avr_dcと、ＧＯＰ内のＩピクチャの符号化難易度の割合としてBピクチャとIピクチャの符号化難易度の比率b_rateを用いている。これらavr_dcや、b_rateを求めるため、予めＧＯＰ単位の各パラメータを測定しておく必要がある。
【００８４】
例えば、j（1≦j≦total_gopnb）番目のＧＯＰのDC値の平均値を表すavr_dc[ｊ]は、gop_dcをＧＯＰ単位のDC値の和とし、gop_pcntをＧＯＰ内のピクチャ数とするとき、avr_dc＝gop_dc/gop_pcntで表せる。ここで、total_gopnbはＧＯＰの総数を表す。
【００８５】
また、j番目のＧＯＰのBピクチャとIピクチャの符号化難易度difficultyの比率を表すb_rate[ｊ]は、b_bitsをＧＯＰ内のBピクチャのdifficultyの値の和とし、b_nbをＧＯＰ内のBピクチャの数とし、i_bitsをＧＯＰ内のＩピクチャのdifficultyの値とするとき、b_rate＝b_bits/b_nb/i_bitsで表せる。
【００８６】
また、仮エンコードによって測定されたdifficultyのＧＯＰ単位での和の平均値である後述するavr_gop_genbitは、gop_genbit[j]をj番目のＧＯＰの仮エンコードによって測定されたdifficultyのＧＯＰ単位での和とするとき、avr_gop_genbit＝Σgop_genbit/total_gopnbで表せる。
【００８７】
また、j番目のＧＯＰのdifficultyの重み係数を表すrate_ctl[j]は、初期値の際に1.0に設定される。
【００８８】
また、ＧＯＰのスタートを表すgop_start[k]は、最初からk番目のフレームがＧＯＰの先頭の場合“１”とし、それ以外は“０”とする。
【００８９】
次ぎに、ステップＳ２２ではフェードイン点の検出と重み係数rate_ctl[j]の算出を行い、ステップＳ２３では、フェードアウト点の検出と重み係数rate_ctl[j]の算出を行う。
【００９０】
そして、ステップＳ２４では、ＧＯＰの仮エンコードによって測定されたgop_genbitに上記それぞれの重み係数rate_ctl[j]を乗算してdifficultyの重み付けを行い、ＧＯＰの補正符号化難易度値gop_genbitを求める。
【００９１】
ステップＳ２２のフェードイン点の検出、重み係数の算出処理工程や、ステップＳ２３でのフェードアウト点の検出、重み係数の算出処理工程では、一般的にフェードイン、フェードアウトの速度が一定ではないので、例えばゆっくりと変化する場合と、通常の早さで変化する場合とで、各点の検出方法を異ならせる。
【００９２】
実際のビデオ素材の編集時には、例えば黒い画面からタイトルをゆっくり表示したり、夕陽をゆっくり沈ませて暗くするような、ゆっくりなだらかに暗い部分を介して明暗を変化させる場合と、場面を変えるのに短時間で明るい画面から暗い画面にし、さらに次の明るい画面に変化させるような通常に明暗を変化させる場合がある。
【００９３】
以下、このなだらかに暗い部分を介して明暗を変化させる場合と、通常に明暗を変化させる場合とに分けて、上記フェードイン区間及び上記フェードアウト区間でのフェードイン点及びフェードアウト点の検出と、重み係数の算出処理を説明する。
【００９４】
図５には、ステップＳ３４になだらかに変化するフェードイン点の検出処理工程と、ステップＳ３５に通常の速度で変化するフェードイン点の検出処理工程とを併せ持つフェードイン点の検出処理のフローチャートを示す。
【００９５】
先ず、ステップＳ３１では、入力するビデオ素材の初期設定をk=j=0、fstart=j、fmode=0として行う。そして、ステップＳ３２で、ＧＯＰの始まりを検出した時点から、ステップＳ３４のなだらかに変化するフェードイン点の検出処理工程と、ステップＳ３５の通常に変化するフェードイン点の検出処理工程を実行する。そして、これらの検出処理工程を、ステップＳ３６及びステップＳ３７での処理及び判定を介して繰り返す。
【００９６】
上記ステップＳ３４に示したなだらかなフェードイン点の検出処理工程を、サブルーチンを示す図６とタイミングチャートを示す図７を用いて説明する。
【００９７】
ここでは、例えば、DC_LOW=25、DC_HIGH=70、第１のしきい値DELTA1=-5、第２のしきい値DELTA2=10、定数k1=0.8、定数k2=1.0、RATE_UP=3.0、BR_DELTA=50と設定する。
【００９８】
図７のタイミングチャートでは、（ａ）が平均輝度のレベルDCの変化を示す。また（ｂ）がＧＯＰのDC値の平均値AVR_DCの変化を示す。この（ｂ）にはDC_LOWと、DC_HIGHとが破線で記されている。また、（ｃ）がＧＯＰのBピクチャとIピクチャの比率b_rate（図中B/Iと記す）の変化を示す。また、（ｄ）がＧＯＰ単位のモードfmodeの変化を示す。
【００９９】
このようなゆっくりと立ち上がるフェードインの区間のＧＯＰでは、隣接するＧＯＰとの画像の差が小さいため、上記図７の（ｃ）に示すようなb_rateの大きさも急激には変化しない。そこで、このような場合には、上記図７の（ｃ）に示すようなb_rateを用いずに、図７の（ｂ）に示すようなavr_dcの値の変化だけで上記フェードイン区間を検出する。
【０１００】
先ず、図６のステップＳ４１で、連続する２つのＧＯＰのavr_dcの値が、DC_LOW以下であるか否かを判定し、共に以下であればステップＳ４２に進みfmode=１とし、この位置のＧＯＰ番号(j)をフェードイン点fstart=jとする。
【０１０１】
また、ステップＳ４３では１つ前のＧＯＰのavr_dcとの変化量が予め設定されている第１のしきい値DELTA1以下であるか否かを判定し、以下であればステップＳ４２に進みfmode=１とし、この位置のＧＯＰ番号(j)をフェードイン点fstart=jとする。
【０１０２】
また、ステップＳ４４では１つ前のＧＯＰのavr_dcとの変化量が上記第１のしきい値DELTA１と第２のしきい値DELTA２との間にあるか否かを判定し、間にあればステップＳ４５に進みfmodeを２とする。
【０１０３】
そうでない場合には、fmode=1とし、その位置のＧＯＰ番号(j)に対してfstart=jとする。
【０１０４】
ステップＳ４６及びステップＳ４７を通して、fmodeが２の時に、avr_dcがDC_HIGH以上になったか否かを判定し、以上になればステップＳ４８及びステップＳ４９を通して、fstartからその位置までのＧＯＰの重み係数rate_ctl[i]をavr_gop_genbit/gop_genbit[i]*k1として求める。重み係数rate_ctl[i]の大きさはステップＳ５０〜ステップＳ５３を介して1.0〜RATE_UPの範囲に制限される。
【０１０５】
そして、これらの処理は、ステップＳ５４及びステップＳ５５を通して繰り返され、ｊ番目までいったら、ステップＳ５６でfmode=1として、図５のステップＳ３５に進む。
【０１０６】
この図６に示したゆっくりしたフェードイン点の検出処理では、重み係数rate_ctlは、初期設定値を１としたときに、ステップＳ４９に示したように、ＧＯＰ単位のdifficultyと、平均値との比率に定数k1を乗じた値となる。
【０１０７】
もし、重み係数の値を２倍といった固定値に設定すると、補正されたdifficultyが大きくなりすぎ、不必要な大きさまでビットレートが配分される可能性がある。また、全体のdifficultyの分布によっては、２倍では不十分なこともあり得る。
【０１０８】
そこで、本発明の画像符号化方法によって重み係数を決定することで、補正されて配分されたレートは平均ビットレートの近傍の値になるため、過小、過度にレートが補正されることがなくなる。
【０１０９】
次ぎに、上記図５のステップＳ３５に示した通常に変化するフェードイン点の検出処理工程を、サブルーチンを示す図８とタイミングチャートを示す図９を用いて説明する。
【０１１０】
ここでも、例えば、DC_LOW=25、DC_HIGH=70、第１のしきい値DELTA1=-5、第２のしきい値DELTA2=10、定数k1=0.8、定数k2=1.0、RATE_UP=3.0、BR_DELTA=50と設定する。
【０１１１】
図９のタイミングチャートでも、（ａ）が平均輝度のレベルDCの変化を示す。また（ｂ）がＧＯＰのDC値の平均値AVR_DCの変化を示す。この（ｂ）にはDC_LOWと、DC_HIGHとが破線で記されている。また、（ｃ）がＧＯＰのBピクチャとIピクチャの比率b_rate（図中B/Iと記す）の変化を示す。
【０１１２】
このような通常の速度で立ち上がるフェードイン区間のＧＯＰでは、隣接するＧＯＰとの画像の差が大きい。図９の（ｂ）に示したavr_dcがDC_LOWを下回るような、黒い静止画面では、動きがないことと、フレーム相関が非常に大きいため、P,Bピクチャのgen_bitも非常に小さくなることから図９の（ｃ）に示すようにb_rateの値が非常に小さくなる。また、フェードインの区間では、時間的に前にあるIピクチャと、後ろにあるP,BピクチャとのDCレベルが異なることからフレーム相関が少なくなり、P,Bピクチャのgen_bitの値は相対的に大きくなる。よって、b_rateの値が非常に大きくなる。このため、図９の（ｃ）に示すb_rateの変化量と、図９の（ｂ）に示すavr_dcの値でフェードイン区間を決定することができる。
【０１１３】
先ず、図８のステップＳ６１で、現在のＧＯＰのb_rateと１つ前のＧＯＰのb_rateの差がBRのしきい値BR_DELTAより大きく、かつ１つ前のＧＯＰのavr_dcの値がDC_LOW以下であるか否かを判定し、ＹＥＳのときにはその位置からのＧＯＰの区間の重み係数rate_ctlを、ステップＳ６２を介したステップＳ６３で、rate_ctl[i]=avr_gop_genbit/gop_genbit[i]*k2として求める。
【０１１４】
重み係数の大きさは、ステップＳ６４〜ステップＳ６７を通して、1.0〜RATE_UPの範囲に制限される。そして、ステップＳ６８及びステップＳ６９の処理及び判定を通して、上記重み係数をフェードイン点から２個後ろまでのＧＯＰの区間で計算する。
【０１１５】
次ぎに、図１０には、ステップＳ７４になだらかに変化するフェードアウト点の検出処理工程と、ステップＳ７５に通常の速度で変化するフェードアウト点の検出処理工程とを併せ持つフェードアウト点の検出処理のフローチャートを示す。
【０１１６】
先ず、ステップＳ７１では、入力するビデオ素材の初期設定をk=kend、j=gop_pcnt、fstart=j、i_flag=fmode=0として行う。そして、ステップＳ７２で、ＧＯＰの始まりを検出した時点から、jを時間的に後ろから見ていき、ステップＳ７４のなだらかに変化するフェードアウト点の検出処理工程と、ステップＳ７５の通常に変化するフェードアウト点の検出処理工程を実行する。そして、これらの検出処理工程を、ステップＳ７６及びステップＳ７７での処理及び判定を介して繰り返す。
【０１１７】
上記ステップＳ７４に示したなだらかなフェードアウト点の検出処理工程を、サブルーチンを示す図１１とタイミングチャートを示す図１１を用いて説明する。
【０１１８】
ここでも、例えば、DC_LOW=25、DC_HIGH=70、第１のしきい値DELTA1=-5、第２のしきい値DELTA2=10、定数k1=0.8、定数k2=1.0、RATE_UP=3.0、BR_DELTA=50と設定する。
【０１１９】
図１２のタイミングチャートでは、（ａ）が平均輝度のレベルDCの変化を示す。また（ｂ）がＧＯＰのDC値の平均値AVR_DCの変化を示す。この（ｂ）にはDC_LOWと、DC_HIGHとが破線で記されている。また、（ｃ）がＧＯＰのBピクチャとIピクチャの比率b_rate（図中B/Iと記す）の変化を示す。また、（ｄ）がＧＯＰ単位のモードfmodeの変化を示す。
【０１２０】
このようなゆっくりと立ち下がるフェードアウトの区間のＧＯＰでは、隣接するＧＯＰとの画像の差が小さいため、上記図１２の（ｃ）に示すようなb_rateの大きさも急激には変化しない。そこで、このような場合には、上記図１２の（ｃ）に示すようなb_rateを用いずに、図１２の（ｂ）に示すようなavr_dcの値の変化だけで上記フェードアウト区間を検出する。
【０１２１】
先ず、図１１のステップＳ８１では、時間的に後ろのＧＯＰから順にサーチしていき、連続する２つのＧＯＰのavr_dcの値、すなわち現在のＧＯＰのavr_dcと一つ後ろのＧＯＰのavr_dcが共に、DC_LOW以下であるか否かを判定し、共に以下であればステップＳ８２に進み現在のＧＯＰのfmode=１とし、この位置のＧＯＰ番号(j)をfstart=jとする。
【０１２２】
また、ステップＳ８３では１つ後ろのＧＯＰのavr_dcとの変化量が予め設定されている第１のしきい値DELTA1以下であるか否かを判定し、以下であればステップＳ８２に進みfmode=１とし、この位置のＧＯＰ番号(j)をfstart=jとする。
【０１２３】
また、ステップＳ８４では１つ後ろＧＯＰのavr_dcとの変化量が上記第１のしきい値DELTA１と第２のしきい値DELTA２との間にあるか否かを判定し、間にあればステップＳ８５に進みfmodeを２とする。
【０１２４】
そうでない場合には、fmode=1とし、その位置のＧＯＰ番号(j)に対してfstart=jとする。
【０１２５】
ステップＳ８６及びステップＳ８７を通して、fmodeが２の時に、avr_dcがDC_HIGH以上になったか否かを判定し、以上になればステップＳ８８及びステップＳ８９を通して、fstartからその位置までのＧＯＰの重み係数rate_ctl[i]をavr_gop_genbit/gop_genbit[i]*k1として求める。重み係数rate_ctl[i]の大きさはステップＳ９０〜ステップＳ９３を介して1.0〜RATE_UPの範囲に制限される。
【０１２６】
そして、これらの処理は、ステップＳ９４及びステップＳ９５を通して繰り返され、ｊ番目までいったら、ステップＳ９６でfmode=1として、図１０のステップＳ７５に進む。
【０１２７】
この図１１に示したゆっくりしたフェードアウト点の検出処理では、重み係数rate_ctlは、初期設定値を１としたときに、ステップＳ８９に示したように、ＧＯＰ単位のdifficultyと、平均値との比率に定数k1を乗じた値とする。
【０１２８】
もし、重み係数の値を２倍といった固定値に設定すると、補正されたdifficultyが大きくなりすぎ、不必要な大きさまでビットレートが配分される可能性がある。また、全体のdifficultyの分布によっては、２倍では不十分なこともあり得る。
【０１２９】
そこで、本発明の画像符号化方法によって重み係数を決定することで、補正されて配分されたレートは平均ビットレートの近傍の値になるため、過小、過度にレートが補正されることがなくなる。
【０１３０】
次ぎに、上記図１０のステップＳ７５に示した通常に変化するフェードアウト点の検出処理工程を、サブルーチンを示す図１３とタイミングチャートを示す図１４を用いて説明する。
【０１３１】
ここでも、例えば、DC_LOW=25、DC_HIGH=70、第１のしきい値DELTA1=-5、第２のしきい値DELTA2=10、定数k1=0.8、定数k2=1.0、RATE_UP=3.0、BR_DELTA=50と設定する。
【０１３２】
図１４のタイミングチャートでも、（ａ）が平均輝度のレベルDCの変化を示す。また（ｂ）がＧＯＰのDC値の平均値AVR_DCの変化を示す。この（ｂ）にはDC_LOWと、DC_HIGHとが破線で記されている。また、（ｃ）がＧＯＰのBピクチャとIピクチャの比率b_rate（図中B/Iと記す）の変化を示す。また、（ｄ）がＧＯＰ単位のモードfmodeの変化を示す。
【０１３３】
このような通常の速度で立ち下がるフェードアウトの場合には、フェードインの区間での場合と異なり、フェードアウト点では、図１４の（ｃ）に示すb_rateの変化量がそれほど大きくならないため、フェードインの場合と同じ方法では検出が難しい。
【０１３４】
そこで、先ず、図１４の（ｂ）に示すavr_dc値と図１４の（ｃ）に示すb_rateの変化量からフェードインの位置を検出し、そこから時間的に最も近い位置で、図１４の（ｂ）に示すavr_dcの変化量が第２のしきい値DELTA２以上になったところをフェードアウト点としている。
【０１３５】
先ず、図１３のステップＳ１０１で、一つ後ろのＧＯＰのb_rateと現在のＧＯＰのb_rateとの差がBRのしきい値BR_DELTAより大きく、かつ現在のＧＯＰのavr_dcの値がDC_LOW以下であるか否かを判定し、ＹＥＳのときにはその位置がフェードイン点であるとしてステップＳ１０２でｉ_flag=1とする。
【０１３６】
ステップＳ１０３では、ｉ_flag=1である１つ後ろのＧＯＰのavr_dcとの変化量が第２のしきい値DELTA2より大きいか否かを判定し、ＹＥＳのときにはステップＳ１０４及びステップＳ１０５を通して、その位置をフェードアウト点であると判断し、ＧＯＰの重み係数rate_ctlを、rate_ctl[i]=avr_gop_genbit/gop_genbit[i]*k2として求める。
【０１３７】
重み係数の大きさは、ステップＳ１０６〜ステップＳ１０９を通して、1.0〜RATE_UPの範囲に制限される。そして、ステップＳ１１０及びステップＳ１１１の処理及び判定を通して、フェードアウト点から３個前までのＧＯＰの区間の重み係数を計算する。
【０１３８】
このように、図４に示した、ステップＳ２２でのフェードイン点の検出、重み係数の算出処理工程、及びステップＳ２３でのフェードアウト点の検出、重み係数の算出処理工程により、上記図５〜図１４を参照して説明したようにして、各重み係数が算出された後には、各重み係数を用いてステップＳ２４でdifficultyの重み付けが行われる。
【０１３９】
このdifficultyの重み付け処理工程のサブルーチンを図１５に示す。先ず、ステップＳ１２１でk=j=0としてから、ステップＳ１２２でgop_start[k]が１になったか否かを判定してＧＯＰの先頭を検出する。
【０１４０】
そして、ステップＳ１２３及びステップＳ１２４を通して、仮エンコードによって得られたgop_genbitに上記各重み付け係数rate_ctlを乗算し、重み付けしたdifficultyを算出する。そして、ステップＳ１２５及びステップＳ１２６を通して、この算出処理が繰り返され、ステップＳ１２７を介したステップＳ１２８での判定により最後のフレームまで処理が繰り返されたのが分かると終了する。
【０１４１】
その後、上記図２のステップＳ１６に進み、上記図４のステップＳ２４で得られた補正符号化難易度に応じて、ターゲットビット量を計算し、全体のビットレートを割り当ててビットレートが極端に小さくならないように保護する。
【０１４２】
なお、上記画像符号化方法による圧縮画像信号が記録された記録媒体は、暗い部分を介して明暗が変化する区間を上記フレーム内の平均輝度のレベルの変化に基づいて検出し、上記明暗が変化する区間における上記符号化難易度を補正し、上記補正した符号化難易度に応じて上記割り当てビット量を決定した画像を記録しているので、フェードイン／アウト時でも画質の劣化を生じさせない。
【０１４３】
また、上記画像符号化方法により符号化された画像情報を記録媒体に記録するのではなく、例えば有線回線などの伝送路を用いて伝送する画像伝送方法においては、少なくとも一つのフレーム内符号化画像と、フレーム間順方向予測符号化画像及び双方向予測符号化画像を含んで構成される画像符号化グループ単位での平均輝度の時間変化に基づいて、暗い部分を介して明暗が変化する区間を検出し、この区間における上記符号化難易度を補正し、この補正した符号化難易度に応じて上記割り当てビット量を決定するので、フェードイン／アウト時でも画質の劣化を生じさせないで伝送できる。
【０１４４】
【発明の効果】
本発明に係る画像符号化方法及び装置は、例えばＤＶＤ等の圧縮されたビデオ信号をパッケージメディアに蓄積させるエンコードシステムにおいて、エンコード素材からフェードイン／フェードアウト点を検出して重み付けすることで、レート配分時に通常処理よりも多くのレートを割り当て、フェードイン／フェードアウトポイントの画質を改善することができる。
【図面の簡単な説明】
【図１】本発明に係る画像符号化方法及び装置の実施の形態となるビデオエンコードシステムの具体例のブロック図である。
【図２】上記ビデオエンコードシステムに使われるビデオエンコードコントローラ内部のビット配分計算部の実行するビット配分計算処理プログラムを説明するためのフローチャートである。
【図３】  上記実施の形態となるビデオエンコードシステムの全体的な動作を説明するためのタイミングチャートである。
【図４】上記ビデオエンコードシステムにおけるフェードイン／フェードアウト点でのDIFFICULTYの重み付け処理を説明するためのフローチャートである。
【図５】上記ビデオエンコードシステムによるフェードイン点の検出処理工程を説明するためのフローチャートである。
【図６】上記ビデオエンコードシステムによるゆっくりとしたフェードインポイント検出処理工程を説明するためのフローチャートである。
【図７】ゆっくりと立ち上がるフェードイン点の検出処理を説明するためのタイミングチャートである。
【図８】上記ビデオエンコードシステムによる通常のフェードインポイント検出処理工程を説明するためのフローチャートである。
【図９】通常のフェードイン点の検出処理を説明するためのタイミングチャートである。
【図１０】上記ビデオエンコードシステムによるフェードアウト点の検出処理工程を示すフローチャートである。
【図１１】ゆっくりとしたフェードアウトポイント検出処理工程を説明するためのフローチャートである。
【図１２】ゆっくりと立ち下がるフェードアウト点の検出処理工程を説明するためのフローチャートである。
【図１３】通常のフェードアウトポイント検出処理を説明するためのフローチャートである。
【図１４】通常のフェードアウトポイントの検出処理を説明するためのタイミングチャートである。
【図１５】フェードイン／フェードアウト点でのdifficultyの重み付け処理工程を説明するためのフローチャートである。
【図１６】従来のビデオエンコードシステムの具体例のブロック図である。
【図１７】ＧＯＰ構造を説明するための図である。
【図１８】上記従来のビデオエンコードシステムにおけるエンコード処理を説明するためのフローチャートである。
【図１９】上記図１８に示したエンコード処理におけるビット配分計算処理を説明するためのフローチャートである。
【図２０】シーンチェンジ指定によるピクチャタイプの変更を説明するための図である。
【図２１】チャプター指定によるピクチャタイプの変更を説明するための図である。
【図２２】ＧＯＰ単位の評価関数の例を示す特性図である。
【図２３】ＶＢＶの計算方法を説明するための特性図である。
【図２４】ターゲットビット配分の具体例を示す図である。
【図２５】従来のビデオエンコードシステムによるフェードイン区間でのレート配分処理を説明するためのタイミングチャートである。
【符号の説明】
１  スーパーバイザコントローラ、２０  ビデオエンコードコントローラ、２２  ビット配分計算部、２３  ＭＰＥＧエンコーダコントローラ、２５  ＭＰＥＧエンコーダ
【図１】
0003911768.tif 000002
【図２】
0003911768.tif 000003
【図３】
0003911768.tif 000004
【図４】
0003911768.tif 000005
【図５】
0003911768.tif 000006
【図６】
0003911768.tif 000007
【図７】
0003911768.tif 000008
【図８】
0003911768.tif 000009
【図９】
0003911768.tif 000010
【図１０】
0003911768.tif 000011
【図１１】
0003911768.tif 000012
【図１２】
0003911768.tif 000013
【図１３】
0003911768.tif 000014
【図１４】
0003911768.tif 000015
【図１５】
0003911768.tif 000016
【図１６】
0003911768.tif 000017
【図１７】
0003911768.tif 000018
【図１８】
0003911768.tif 000019
【図１９】
0003911768.tif 000020
【図２０】
0003911768.tif 000021
【図２１】
0003911768.tif 000022
【図２２】
0003911768.tif 000023
【図２３】
0003911768.tif 000024
【図２４】
0003911768.tif 000025
【図２５】
0003911768.tif 000026