(57)【特許請求の範囲】
【請求項１】
メモリと１つ以上のプロセッサとを有する映像符号化装置に対して、
映像シーケンスにおける複数の映像フレームに対してフレームタイプを設定することと、
前記複数の映像フレームから、映像フレームをＢフレームとして取得することと、
前記映像フレームの現在のマクロブロックがダイレクト予測モードを満たすか否か判断し、前記現在のマクロブロックが前記ダイレクト予測モードを満たす場合、さらに、前記現在のマクロブロックがスキップ予測モードを満たすか否か判断することと、
前記現在のマクロブロックが前記ダイレクト予測モードを満たさない、または、前記現在のマクロブロックが前記スキップ予測モードを満たさない場合、複数のモードコストのうちの少なくとも１つを計算することと、
前記複数のモードコストにおける最少コストのモードを、最適予測方向として選択し、前記現在のマクロブロックを符号化することと、
を含み、
前記複数のモードコストは、
前記ダイレクト予測モードで取得した２つの双方向予測動きベクトルを用いて前記現在のマクロブロックに動き補償を行った後のモードコストと、
前記ダイレクト予測モードで取得した順方向予測動きベクトルを用いて前記現在のマクロブロックに動き補償を行った後のモードコストと、
前記ダイレクト予測モードで取得した逆方向予測動きベクトルを用いて前記現在のマクロブロックに動き補償を行った後のモードコストと、
を含み、
映像シーケンスにおける複数の映像フレームに対するフレームタイプを設定することは、
映像シーケンスを取得することと、
前記映像シーケンスの１番目の映像フレームをＩフレームとして符号化することと、
前記映像シーケンスの２番目の映像フレームをＰフレームとして符号化することと、
前記映像シーケンスの３番目の映像フレームを現在のフレームとして設定することと、
前記現在のフレームをｉ番目のフレームとして設定し、さらに前記現在のフレームが前記映像シーケンスの最後の映像フレームになるまで、次のステップ、すなわち、前記現在のフレームに直近の先行Ｐフレームの動き情報が、事前に設定した閾値以下であるか否かを判断するステップと、ｉを３以上の整数、ｎを１以上の整数として、前記判断が肯定の場合、前記ｉ番目の映像フレームから（ｉ＋ｎ−１）番目までの映像フレームをＢフレームとして設定し、前記Ｂフレームをキャッシュし、（ｉ＋ｎ）番目の映像フレームをＰフレームとして符号化し、（ｉ＋ｎ＋１）番目の映像フレームを前記現在のフレームとして設定するステップと、前記判断が否定の場合、前記ｉ番目の映像フレームをＰフレームとして符号化し、（ｉ＋１）番目の映像フレームを前記現在のフレームとして設定し、前記映像シーケンスの最後の映像フレームをＰフレームとして符号化するステップとを、前記現在のフレームに繰り返し実行することと、
を含み、
前記動き情報には、前記現在のフレームに直近の先行Ｐフレームにおけるマクロブロックの平均動きベクトル残差が含まれ、
前記動き情報が設定した閾値は、
【数５】
0005897218.tif 000006
または
【数６】
0005897218.tif 000007
であり、
前記bitrateは、ビットレート制御の下で設定したビットレートであり、前記QPは、映像フレームの符号化のために設定した量子化値である、
映像符号化方法。
【請求項２】
請求項１の映像符号化方法であって、
前記選択したモードには、時間領域ダイレクト予測モードと、空間領域ダイレクト予測モードとの少なくとも１つが含まれ、前記時間領域ダイレクト予測モードまたは前記空間領域ダイレクト予測モードの分割化は、１６×１６分割化と８×８分割化とのうちの少なくとも１つを含む、
映像符号化方法。
【請求項３】
請求項１の映像符号化方法であって、
前記複数のモードコストにおける最少コストのモードを最適予測方向として選択して、前記現在のマクロブロックを符号化することは、
前記最少コストのモードに対応する予測方向の特定に用いるフラッグビットを設定することと、
前記最少コストのモードで取得したピクセル残差に変換と量子化を行うことと、
エントロピー符号化した前記ピクセル残差と前記フラッグビットをビットストリームに書き込むことと、
を含む、
映像符号化方法。
【請求項４】
メモリと１つ以上のプロセッサとを有する映像符号化装置であって、
映像シーケンスにおける複数の映像フレームに対してフレームタイプを設定するよう構成されるフレームタイプ設定モジュールと、
Ｂフレーム符号化モジュールと、
を備え、
前記Ｂフレーム符号化モジュールは、さらに、
Ｂフレームとして設定した映像フレームを、前記複数の映像フレームから取得するよう構成されるＢフレーム取得モジュールと、
前記映像フレームの現在のマクロブロックがダイレクト予測モードを満たすか否か判断し、前記現在のマクロブロックが前記ダイレクト予測モードを満たす場合、さらに、前記現在のマクロブロックがスキップ予測モードを満たすか否か判断するよう構成される判断モジュールと、
前記現在のマクロブロックが前記ダイレクト予測モードを満たさない、または、前記現在のマクロブロックが前記スキップ予測モードを満たさない場合、前記ダイレクト予測モードで取得した２つの双方向予測動きベクトルを用いて前記現在のマクロブロックに動き補償を行った後のモードコストと、前記ダイレクト予測モードで取得した順方向予測動きベクトルを用いて前記現在のマクロブロックに動き補償を行った後のモードコストと、前記ダイレクト予測モードで取得した逆方向予測動きベクトルを用いて前記現在のマクロブロックに動き補償を行った後のモードコストと、を含む複数のモードコストのうちの少なくとも１つを計算するよう構成され、さらに、前記複数のモードコストにおける最少コストのモードを、最適予測方向として選択するよう構成されるモード選択モジュールと、
選択した前記最適予測方向にしたがって、前記現在のマクロブロックを符号化するよう構成される符号化モジュールと、
を備える映像符号化装置であって、
その映像符号化装置は、さらに、
映像シーケンスを取得するよう構成される映像シーケンス取得モジュールと、
前記映像シーケンスの１番目の映像フレームをＩフレームとして符号化するよう構成されるＩフレーム符号化モジュールと、
前記映像シーケンスの２番目のフレームをＰフレームとして符号化するよう構成されるＰフレーム符号化モジュールと、
を備え、
前記フレームタイプ設定モジュールは、
前記映像シーケンスの３番目のフレームを現在のフレームとして設定し、前記現在のフレームをｉ番目のフレームとして設定し、さらに前記現在のフレームが前記映像シーケンスの最後のフレームとなるまで次のステップ、すなわち、
前記現在のフレームに直近の先行Ｐフレームの動き情報が、事前に設定した閾値以下であるか否かを判断するステップと、
ｉを３以上の整数、ｎを１以上の整数として、前記判断が肯定の場合、前記ｉ番目の映像フレームから（ｉ＋ｎ−１）番目の映像フレームまでをＢフレームとして設定し、前記Ｂフレームをキャッシュし、前記Ｐフレーム符号化モジュールに、（ｉ＋ｎ）番目の映像フレームをＰフレームとして符号化するよう通知し、（ｉ＋ｎ＋１）番目の映像フレームを現在のフレームとして設定するステップと、
前記判断が否定の場合、前記Ｐフレーム符号化モジュールに、前記ｉ番目の映像フレームをＰフレームとして符号化するよう通知し、（ｉ＋１）番目の映像フレームを前記現在のフレームとして設定するステップとを、
前記現在のフレームに繰り返し実行し、
前記Ｐフレーム符号化モジュールは、さらに、前記映像シーケンスの最後の映像フレームをＰフレームとして符号化するよう構成され、
前記動き情報には、前記現在のフレームに直近の先行Ｐフレームにおけるマクロブロックの平均動きベクトル残差が含まれ、
前記閾値は
【数７】
0005897218.tif 000008
または
【数８】
0005897218.tif 000009
であり、
前記bitrateは、ビットレート制御の下で設定したビットレートであり、前記QPは、映像フレームの符号化のために設定した量子化値である、
映像符号化装置。
【請求項５】
請求項４の映像符号化装置であって、
前記選択したモードには、時間領域ダイレクト予測モードと、空間領域ダイレクト予測モードとの少なくとも１つが含まれ、前記時間領域ダイレクト予測モードまたは前記空間領域ダイレクト予測モードの分割化は、１６×１６分割化と８×８分割化とのうちの少なくとも１つを含む、
映像符号化装置。
【請求項６】
請求項４の映像符号化装置であって、
前記符号化モジュールは、さらに、
前記最少コストのモードに対応する予測方向の特定に用いるフラッグビットを設定するよう構成されるフラッグビット設定モジュールと、
前記最少コストのモードで取得したピクセル残差に変換と量子化を行い、エントロピー符号化した前記ピクセル残差と前記フラッグビットをビットストリームに書き込むよう構成されるビットストリーム書込みモジュールと、
を備える、
映像符号化装置。
【請求項７】
映像符号化装置と併用される、コンピュータ読取り可能な非一時型記憶媒体であって、
映像シーケンスにおける複数の映像フレームに対するフレームタイプを設定する指示と、
前記複数の映像フレームから、Ｂフレームとして設定した映像フレームを取得する指示と、
前記映像フレームの現在のマクロブロックがダイレクト予測モードを満たすか否か判断し、前記現在のマクロブロックが前記ダイレクト予測モードを満たす場合、さらに、前記現在のマクロブロックがスキップ予測モードを満たすか否か判断する指示と、
前記現在のマクロブロックが前記ダイレクト予測モードを満たさない、または、前記スキップ予測モードを満たさない場合、前記ダイレクト予測モードで取得した２つの双方向予測動きベクトルを用いて前記現在のマクロブロックに動き補償を行った後のモードコストと、前記ダイレクト予測モードで取得した順方向予測動きベクトルを用いて前記現在のマクロブロックに動き補償を行った後のモードコストと、前記ダイレクト予測モードで取得した逆方向予測動きベクトルを用いて前記現在のマクロブロックに動き補償を行った後のモードコストと、を含む複数のモードコストのうちの少なくとも１つを計算する指示と、
前記複数のモードコストにおける最少コストのモードを、最適予測方向として選択し、前記現在のマクロブロックを符号化する指示と、
を含み、
前記映像シーケンスにおける複数の映像フレームに対するフレームタイプを設定することは、
映像シーケンスを取得する指示と、
前記映像シーケンスの１番目の映像フレームをＩフレームとして符号化する指示と、
前記映像シーケンスの２番目の映像フレームをＰフレームとして符号化する指示と、
前記映像シーケンスの３番目の映像フレームを現在のフレームとして設定する指示と、
前記現在のフレームをｉ番目のフレームとして設定する指示と、
ｉを３以上の整数、ｎを１以上の整数として、前記現在のフレームに直近の先行Ｐフレームの動き情報が、事前に設定した閾値以下であるか否かを判断し、前記判断が肯定の場合、前記ｉ番目の映像フレームから（ｉ＋ｎ−１）番目の映像フレームまでをＢフレームとして設定し、前記Ｂフレームをキャッシュし、（ｉ＋ｎ）番目の映像フレームをＰフレームとして符号化し、（ｉ＋ｎ＋１）番目の映像フレームを前記現在のフレームとして用い、前記判断が否定の場合、前記ｉ番目の映像フレームをＰフレームとして符号化し、（ｉ＋１）番目の映像フレームを前記現在のフレームとして用い、前記映像シーケンスの最後の映像フレームをＰフレームとして符号化することを、前記現在のフレームが前記映像シーケンスの最後の映像フレームになるまで、前記現在のフレームに繰り返し実行する指示と、
をさらに含み、
前記動き情報には、前記現在のフレームに直近の先行Ｐフレームにおけるマクロブロックの平均動きベクトル残差が含まれ、
前記閾値は
【数９】
0005897218.tif 000010
または
【数１０】
0005897218.tif 000011
であり、
前記bitrateは、ビットレート制御の下で設定したビットレートであり、前記QPは、映像フレームの符号化のために設定した量子化値である、
コンピュータ読取り可能な非一時型記憶媒体。
【請求項８】
請求項７のコンピュータ読取り可能な非一時型記憶媒体であって、
前記選択したモードには、時間領域ダイレクト予測モードと、空間領域ダイレクト予測モードの少なくとも１つが含まれ、前記時間領域ダイレクト予測モードまたは前記空間領域ダイレクト予測モードの分割化は、１６×１６分割化と８×８分割化とのうちの少なくとも１つを含む、
コンピュータ読取り可能な非一時型記憶媒体。
【請求項９】
請求項７のコンピュータ読取り可能な非一時型記憶媒体であって、
前記複数のモードコストにおける最少コストのモードを最適予測方向として選択して、前記現在のマクロブロックを符号化することは、
前記最少コストのモードに対応する予測方向の特定に用いるフラッグビットを設定することと、
前記最少コストのモードで取得したピクセル残差に変換と量子化を行い、エントロピー符号化した前記ピクセル残差と前記フラッグビットをビットストリームに書き込むことと、
を含む、
コンピュータ読取り可能な非一時型記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、名称を「映像ストリーム符号化方法および装置」とする、２０１２年８月２１日に出願された中国特許出願第２０１２１０２９８９３２．Ｘに対する優先権を主張し、この出願明細書の全内容が、ここに参考文献として援用される。
【０００２】
本明細書に開示の各実施態様は、概して、映像符号化の技術分野に関し、詳しくは、映像符号化方法および映像符号化装置に関する。
【背景技術】
【０００３】
Ｈ．２６４／ＡＶＣは、ＩＴＵ−ＴおよびＩＳＯ／ＩＥＣにより共同開発された、最新の映像符号化国際標準である。以前の映像符号化基準と比較して、Ｈ．２６４／ＡＶＣは、最高水準の符号化効率と最強のネットワーク適応性を有する最新の符号化標準であると、ＪＶＴの指定を受けている。同じビットレートでは、Ｈ．２６４／ＡＶＣでは、符号化効率が向上し、最高画質を達成することができる。特に、ＭＰＥＧ−４と比較すると、低ビットレートでのＨ．２６４／ＡＶＣの符号化性能は大幅に向上し、主に、低帯域幅の高品質ネットワーク映像の用途に適用可能である。符号化効率を向上させるために、Ｈ．２６４／ＡＶＣでは、多種多様な新技術を採用し、従来の映像符号化標準と較べて、計算複雑性がより高くなっている。このように、ハードウェアやソフトウェアにおけるリアルタイムの符号化はますます難度が高くなっている。移動型プラットフォームに関して言うと、計算能力やネットワーク帯域幅が限られているため、移動型プラットフォーム上では、リアルタイムの映像通信はかなり速度が遅い。したがって、移動型プラットフォーム上で映像をリアルタイムで送信・圧縮するためには、計算複雑性の軽減と符号化効率の向上が非常に重要である。
【０００４】
映像の符号化では、映像シーケンスを、連続するピクチャー群（グループ・オブ・ピクチャー：ＧＯＰ）によって形成する。１つのＧＯＰは、一群の連続するピクチャーであり、通常、１つのＩフレーム（イントラ符号化フレーム）で始まり、このＩフレームの後に、Ｂフレーム（双方向符号化フレーム）が複数介挿された複数のＰフレーム（予測符号化フレーム）が続く。ＧＯＰ長は、各種符号化方法にしたがって設定される。一般的な映像符号化技術では、まず、予測符号化を映像シーケンスに行い、画像ピクセルとその予測値との間の差分信号を送信する。空間的相関関係や時間的相関関係を排除することで、画像圧縮を行うことができる。予測符号化には、イントラフレーム（フレーム内）予測符号化と、インターフレーム（フレーム間）予測符号化がある。イントラフレーム予測符号化は、１つのフレームのピクセル値を用いて予測し、インターフレーム予測符号化は、隣接するフレームのピクセル値を用いて予測する。
【０００５】
Ｈ.２６４／ＡＶＣの標準符号化処理では、その時点での入力画像を符号化の単位として、マクロブロック（例えば、１６×１６ピクセル）を用いて、符号化する。イントラフレーム符号化を適用する場合、イントラフレーム予測を行うため対応するイントラフレーム予測符号化モードを選択し、実際のピクセル値と予測ピクセル値との間の差分に対して、変換と量子化とエントロピー符号化とを行う。その後、エントロピー符号化したビットストリームを通信チャネルへ送信する。一方、符号化ビットストリームに対しては、逆量子化と逆変換とを行い、残差画像を再構築する。その後、残差画像は予測ピクセル値に加えられる。その結果は、非ブロック化フィルタを介して、平滑化処理を行った後、フレームメモリへ送信され、次のフレーム符号化用の参照画像として用いられる。インターフレーム符号化を適用する場合、まず、入力画像の参照フレームに対する動きを推定し、動きベクトルを取得する。その後、整数変換と量子化とエントロピー符号化とを行った後、動きベクトルとともに、動き補償残差画像を通信チャネルへ送信する。その一方、他方のビットストリームが、同様に、非ブロック化フィルタを介して再構築された後、フレームメモリへ送信され、次のフレーム符号化用の参照画像として用いられる。インターフレーム符号化モードでは、参照対象は、前回の符号化フレームから再構築した１つ以上のフレームである。
【０００６】
Ｈ.２６４／ＡＶＣ標準による入力画像は、例えば、Ｉフレーム、Ｐフレーム、Ｂフレームに分類される。一般的には、ＩフレームとＰフレームは、参照フレームとして用いられる。符号化処理の間、Ｐフレームは順方向予測モードのみを有し、一方、Ｂフレームは順方向予測モードと、逆方向予測モードと、双方向予測モードとを有している。Ｉフレームの予測モードはすべて、イントラフレーム予測符号化モードである。ＰフレームとＢフレームの予測モードには、イントラフレーム予測符号化モードとインターフレーム予測符号化モードとが含まれ、これら予測符号化モードの内、その大多数をインターフレーム予測符号化モードが占める。
【０００７】
インターフレーム予測は、動き補償に基づいて、符号化および再構築された映像フレームを用いて行う予測モードである。その時点での符号化ピクセルがある画像フレームは、現在のフレームと呼ばれ、予測に用いる画像フレームは、参照フレームと呼ばれる。１６×１６ピクセル符号化マクロブロックは、別々のサブブロックに分割可能であり、異なる分割モードで７つのサブブロックサイズ（１６×１６、１６×８、８×１６、８×８、８×４、４×８、４×４）が形成される。各分割領域に、１つの独立した動きベクトルが付与される。各動きベクトルとマクロブロックの分割モードは、符号化してから送信しなければならない。サイズが大きいサブブロックを有する分割モードが選択されると、例えば、より少ないビットで、動きベクトルとマクロブロックとの分割モードを表すことができるが、画像の詳細領域では、大きなサブブロックサイズを用いた動き補償後の残差画像は、そのエネルギーが大きくなる（すなわち、エラー）。サイズが小さいサブブロックを有する分割モードが選択されると、画像をより正確に予測することが可能になり、小さなサブブロックサイズを用いた動き補償後の残差画像は、そのエネルギーが小さくなる。しかし、動きベクトルとマクロブロックの分割モードを表すのに、より多くのビットが必要になる。
【０００８】
Ｈ.２６４／ＡＶＣ符号化標準では、Ｂフレームでダイレクト予測モードを適用し、符号化情報から取得した予測動きベクトルを、現在のマクロブロックの動きベクトルとして直接用いるため、マクロブロックの動きベクトルを符号化する必要はない。Ｂフレームは双方向予測が可能なため、ダイレクトモードでは、例えば、異なる参照フレームを指し示す２つの予測動きベクトルが得られる。時間領域ダイレクトモードにおける順方向予測動きベクトルと逆方向予測動きベクトルは、それぞれ、時間順に位置付けた対応するフレームの動きベクトルを介して計算される。空間領域ダイレクトモードにおける順方向予測動きベクトルと逆方向予測動きベクトルは、それぞれ、空間順に位置付けた対応する順方向参照フレームと逆方向参照フレームの動きベクトルを介して計算される。
【０００９】
従来の映像符号化方法では、ＧＯＰにおける１番目のフレームは、通常、Ｉフレームとして符号化される。２番目（１＋１）のフレームから（１＋ｎ）番目のフレームまではＢフレームとして設定され、ｎ個のＢフレームがキャッシュされる。（ｎ＋２）番目のフレームはＰフレームとして設定され、符号化される。最後に、２番目のフレームから（１＋ｎ）番目のフレームまでのＢフレームは、順次符号化され、各ＧＯＰの最後のフレームはＰフレームとして符号化される。従来技術における、ＧＯＰ長が７とｎ＝１の符号化シーケンスの一例を図８に示す。この例では、参照方向を矢印で示す。
【００１０】
特定の画像フレームがＢフレームと判断されると、符号化処理中、マクロブロックごとに、最適ブロック符号化モードを判断する必要がある。詳しくは、まず、現在のマクロブロックの予測動きベクトルにしたがって、現在のマクロブロックがダイレクトモードの条件を満たすか否かを判断する必要がある。上記判断が肯定の場合、さらに、現在のマクロブロックがスキップモードの条件を満たすか否かを判断する。上記判断が肯定の場合、スキップモードを最適符号化モードとして選択する。スキップモードとは、予測動きベクトルにしたがって、参照フレームの対応ピクセルを直接コピーすることであり、この場合、動きベクトル差とピクセル残差はビットストリームには書き込まれない。現在のマクロブロックがダイレクトモードの条件は満たすが、スキップモードの条件は満たさない場合、このマクロブロックをダイレクト１６×１６モードで符号化する場合のコストを計算する。マクロブロックがダイレクトモードの条件を満たさない場合、ダイレクト１６×１６モードのコスト計算は行わない。さらに、現在のマクロブロックの各マクロブロック分割モードに対して動き推定を行うが、これには、マクロブロック分割モードにおけるインターフレーム予測符号化のコスト計算と、マクロブロック分割モードにおける、異なる予測方向に対するイントラフレーム予測符号化のコスト計算が含まれる。これらモードすべてのコストを比較し、最少コストのモードを、最適ブロック符号化モードとして選択する。
【００１１】
上述したように、従来の映像符号化モードでは、Ｂフレームを符号化するためにあるモードを選択すると、現在のマクロブロックの最適ブロック符号化モードでは、動き推定を通じて、インターフレームモードの動きベクトルを取得し、各モードのコスト値を、異なる予測方向のイントラフレーム予測符号化を通じて計算することが必要である。各モードのコスト値を比較することで、最少コスト値のモードを最適符号化モードとして選択する。最後に、動きベクトル残差と、ピクセル値残差と、モードビット（現在のマクロブロックの符号化モードを示すフラッグビット）は、同時に１つのビットストリームへと符号化される。したがって、従来の映像符号化モードでは、Ｂフレームの符号化におけるモード選択の計算は非常に複雑である。符号化処理全体では、モード選択は手間のかかる処理であることが多く、符号化処理全体において、計算複雑性が非常に高く、計算量が大きくなる結果となり、映像符号化の効率が低下する。
【発明の概要】
【発明が解決しようとする課題】
【００１２】
本発明は、従来技術の上記問題を解決するために、計算の複雑性と計算量を軽減することで、映像符号化の効率を向上させる映像符号化方法を提供する。
【課題を解決するための手段】
【００１３】
この映像符号化方法は、
映像シーケンスにおける複数の映像フレームに対してフレームタイプを設定するステップと、
Ｂフレームとして設定した映像フレームを取得するステップと、
前記映像フレームの現在のマクロブロックがダイレクト予測モードを満たすか否か判断し、前記現在のマクロブロックが前記ダイレクト予測モードを満たす場合、さらに、前記現在のマクロブロックがスキップ予測モードを満たすか否か判断するステップと、
前記現在のマクロブロックが前記ダイレクト予測モードを満たさない、または、前記現在のマクロブロックが前記スキップ予測モードを満たさない場合、前記ダイレクト予測モードで取得した２つの双方向予測動きベクトルを用いて前記現在のマクロブロックに動き補償を行った後のモードコストと、前記ダイレクト予測モードで取得した順方向予測動きベクトルを用いて前記現在のマクロブロックに動き補償を行った後のモードコストと、前記ダイレクト予測モードで取得した逆方向予測動きベクトルを用いて前記現在のマクロブロックに動き補償を行った後のモードコストとを含む、複数のモードコストのうちの少なくとも１つを計算するステップと、
前記複数のモードコストにおける最少コストのモードを、最適予測方向として選択し、前記現在のマクロブロックを符号化するステップと、
を含む。
【００１４】
さらに、計算の複雑性と計算量を軽減することで、映像符号化の効率を向上させる映像符号化装置が提供される。
【００１５】
上記映像符号化装置は、映像シーケンスにおける複数の映像フレームに対してフレームタイプを設定するよう構成されるフレームタイプ設定モジュールと、Ｂフレーム符号化モジュールとを備え、
前記Ｂフレーム符号化モードは、
Ｂフレームとして設定した映像フレームを取得するよう構成されるＢフレーム取得モジュールと、
前記映像フレームの現在のマクロブロックがダイレクト予測モードを満たすか否か判断し、前記現在のマクロブロックが前記ダイレクト予測モードを満たす場合、さらに、前記現在のマクロブロックがスキップ予測モードを満たすか否か判断するよう構成される判断モジュールと、
前記現在のマクロブロックが前記ダイレクト予測モードを満たさない、または、前記現在のマクロブロックが前記スキップ予測モードを満たさない場合、複数のモードコストのうちの少なくとも１つ、すなわち、前記ダイレクト予測モードで取得した２つの双方向予測動きベクトルを用いて前記現在のマクロブロックに動き補償を行った後のモードコストと、前記ダイレクト予測モードで取得した順方向予測動きベクトルを用いて前記現在のマクロブロックに動き補償を行った後のモードコストと、前記ダイレクト予測モードで取得した逆方向予測動きベクトルを用いて前記現在のマクロブロックに動き補償を行った後のモードコストとのうちの少なくとも１つを計算するよう構成され、かつ、前記モードコストにおける最少コストのモードを、最適予測方向として選択するよう構成されるモード選択モジュールと、
選択した前記最適予測方向にしたがって、前記現在のマクロブロックを符号化するよう構成される符号化モジュールと、
を備える。
【発明の効果】
【００１６】
以上説明した映像符号化方法と映像符号化装置では、Ｂフレームを符号化する場合、異なる方向の予測動きベクトルを用いて現在のマクロブロックに動き補償を行った後、モードコストを計算することで、最少コストのモードを最適予測モードとして選択して、現在のマクロブロックを符号化する。モード選択中は、各インターフレームの動きベクトルと各モードのコスト値とを、動き推定を介して計算する必要はなく、スキップ予測モードとダイレクト予測モードとのみを維持する。モード選択中は、異なる予測動きベクトルを用いて現在のマクロブロックに対する動き補償を行った後のモードコストの計算が必要なだけである。したがって、計算の複雑性と計算量が軽減し、映像符号化の効率を向上させることができる。
【図面の簡単な説明】
【００１７】
上記の本発明の実施態様は、他の実施態様とともに、以下に記載する本発明の各局面の詳細な説明および添付図面の参照により、さらに明確に理解されるであろう。同様の符号は、図面の一部における同一の構成部を指す。
【図１】図１は、本発明のいくつかの実施態様における、映像符号化方法を示す概略フローチャートである。
【図２】図２は、本発明のいくつかの実施態様における、映像シーケンス（この映像シーケンスでは、連続して出現するダイレクトＢフレーム数は１つである）の符号化を示す概略フローチャートである。
【図３】図３は、本発明のいくつかの実施態様における、ＧＯＰ長が７の符号化シーケンスの例示である。
【図４】図４は、本発明のいくつかの実施態様における、最適予測方向における現在のマクロブロックの符号化を示す概略フローチャートである。
【図５】図５は、本発明のいくつかの実施態様における、映像符号化装置の概略構造図である。
【図６】図６は、本発明の別の実施態様における、映像符号化装置の概略構造図である。
【図７】図７は、本発明のいくつかの実施態様における、符号化モジュールの概略構造図である。
【図８】図８は、従来技術における、ＧＯＰ長が７の符号化シーケンスの例示である。
【図９】図９は、本発明のいくつかの実施態様による映像化符号化方法を実行する、好適なコンピュータを示すブロック図である。
【発明を実施するための形態】
【００１８】
本発明では、Ｂフレームを符号化する場合、スキップモードとダイレクトモードとのみを維持するため、従来のダイレクト予測モードの向上が図れる。異なる方向の予測動きベクトルを用いて、現在のマクロブロックに動き補償を行った後のモードコストを計算することで、最少コストのモードを、最適予測方向として選択し、その最適予測方向で予測動きベクトルにしたがって符号化を行う。従来の映像符号化方法と比較して、Ｂフレームを符号化する場合、モード選択中に必要な計算量と計算複雑性とが軽減され、映像符号化の効率を向上させることができる。
【００１９】
図１に示すように、本発明のいくつかの実施態様では、映像符号化方法が提供される。この方法は以下のステップを含む。
【００２０】
ステップＳ１０２：映像シーケンスにおける複数の映像フレームに対するフレームタイプを設定する。
【００２１】
詳しくは、ステップＳ１０２では、映像シーケンスにおける各フレームに対するフレームタイプを判断する。映像シーケンスの１番目のフレームは、Ｉフレームとして符号化され、他のフレームに関しては、各フレームをＰフレームとして符号化するのか、または、Ｂフレームとして符号化するのかを判断することが必要となる。ステップＳ１０４では、Ｂフレームとして設定したＢフレームを取得する。
【００２２】
ステップＳ１０４：映像フレームをＢフレームとして取得する。
【００２３】
ステップＳ１０６：映像フレームの現在のマクロブロックがダイレクト予測モードを満たすか否か判断し、上記判断が肯定の場合、ステップＳ１０８へ進み、そうではない場合、ステップＳ１１２へ進む。
【００２４】
いくつかの実施態様では、映像フレームの現在のマクロブロックの２つの双方向予測動きベクトルを、ダイレクト予測モードを介して取得してもよい。さらに、取得した双方向予測動きベクトルの各々が事前に設定した閾値範囲内にある場合、現在のマクロブロックはダイレクト予測モードを満たし、そうではない場合、現在のマクロブロックはダイレクト予測モードを満たさない。
【００２５】
ステップＳ１０８：さらに、現在のマクロブロックがスキップ予測モードを満たすか否か判断し、上記判断が肯定の場合、ステップＳ１１０へ進み、そうではない場合、ステップＳ１１２へ進む。
【００２６】
いくつかの実施態様では、取得した２つの双方向予測動きベクトルを用いて、現在のマクロブロックに動き補償を行うことで、予測ピクセル値を生成する。この予測ピクセル値を元のピクセル値から減算することで、ピクセル残差を取得する。ピクセル残差を変換および量子化した後、残留システムエネルギー（例えば、マクロブロックにおいて１より大きい残差係数の数、または、１つのマクロブロックでその位置にしたがって重みづけした残差係数）が、事前に設定した閾値より大きい場合、スキップ予測モードの条件を満たさず、そうではない場合、スキップ予測モードを満たしている。
【００２７】
ステップＳ１１０：スキップモードを最適モードとして選択し、現在のマクロブロックを符号化する。
【００２８】
従来のスキップ予測モードを適用して現在のマクロブロックを符号化してもよいが、ここでは、説明を省略する。
【００２９】
ステップＳ１１２：ダイレクト予測モードで取得した２つの双方向予測動きベクトルを用いて、現在のマクロブロックに動き補償を行った後のモードコストと、ダイレクト予測モードで取得した順方向予測動きベクトルを用いて、現在のマクロブロックに動き補償を行った後のモードコストと、ダイレクト予測モードで取得した逆方向予測動きベクトルを用いて、現在のマクロブロックに動き補償を行った後のモードコストを含む、複数のモードコストの少なくとも１つを計算する。
【００３０】
いくつかの実施態様では、元のマクロブロックのピクセル値から、動き補償後の現在のマクロブロックのピクセル値を減算することでピクセル差分を生成し、このピクセル差分の絶対値を合計して、モードコストを取得してもよい。
【００３１】
ステップＳ１１４では、モードコストにおける最少コストのモードを、最適予測方向として選択し、現在のマクロブロックを符号化する。
【００３２】
ステップＳ１１４では、モードコストにおける最少コストのモードを選択し、このモードの予測動きベクトルを適用して、現在のマクロブロックに動き補償を行い、このマクロブロックに対するピクセル残差を取得する。さらに、取得したピクセル残差をビットストリームに書き込む。いくつかの実施態様では、選択した最少コストのモードが、ダイレクト予測モードで取得した２つの双方向予測動きベクトルを用いて、現在のマクロブロックに動き補償を行った後のモードである場合、２つの双方向予測動きベクトルを用いた動き補償後のピクセル残差を、変換、量子化、およびエントロピー符号化し、ビットストリームに書き込む。
【００３３】
モード選択中、モーション推定を介して、各インターフレームモードの動きベクトルと各モードのコスト値を計算する必要はなく、スキップ予測モードとダイレクト予測モードのみを維持する。モード選択中、異なる予測動きベクトルを用いて、現在のマクロブロックに動き補償を行った後のモードコストの計算が必要なだけであるため、計算複雑性と計算量は軽減し、映像符号化の効率を向上させることができる。
【００３４】
いくつかの実施態様では、選択したモードには、時間領域ダイレクト予測モードと、空間領域ダイレクト予測モードとのうちの少なくとも１つが含まれる。いくつかの実施態様では、時間領域ダイレクト予測モードを採用する。ダイレクトモードの分割化には、１６×１６分割化と８×８分割化とのうちの少なくとも１つが含まれる。いくつかの実施態様では、１６×１６分割のダイレクトモードを用いる。複雑性が増しても構わない用途では、異なる分割体のイントラフレーム予測モードのコスト計算をステップＳ１１２に加え、その結果を他のインターフレームモードのコストと比較し、最少コストのモードを選択してもよい。
【００３５】
各映像シーケンスは、連続する複数のＧＯＰによって形成されるため、各映像シーケンスにシーケンス符号化を行い、映像フレームタイプを符号化処理で設定する必要がある。いくつかの実施態様では、複数の映像シーケンスのフレームタイプを設定する工程には、以下の処理が含まれる：映像シーケンスを取得する；取得した映像シーケンスの１番目の映像フレームをＩフレームとして符号化する；取得した映像シーケンスの２番目の映像フレームをＰフレームとして符号化する；取得した映像シーケンスの３番目の映像フレームを現在のフレームとして用いる；現在のフレームをｉ番目のフレームとして設定する；および、現在のフレームに直近の先行Ｐフレームの動き情報が、事前に設定した閾値以下であるか否かを判断するステップと、上記判断が肯定の場合、ｉ番目の映像フレームから（ｉ＋ｎ−１）番目の映像フレームまでをＢフレームとして設定し、Ｂフレームをキャッシュし、（ｉ＋ｎ）番目の映像フレームをＰフレームとして符号化し、（ｉ＋ｎ＋１）番目の映像フレームを現在のフレームとして用いるステップと、上記判断が肯定ではない場合、ｉ番目の映像フレームをＰフレームとして符号化し、（ｉ＋１）番目の映像フレームを現在のフレームとして用い、映像シーケンスの最後の映像フレームをＰフレームとして符号化するステップを、現在のフレームが映像シーケンスの最後のフレームとなるまで、現在のフレームに対して繰り返し実行することが含まれる。この場合、ｉは３以上の整数であり、ｎは１以上の整数である。
【００３６】
いくつかの実施態様では、映像シーケンスに連続して出現するＢフレームの数（本発明では、ＢフレームがダイレクトＢフレームである）を、前もって設定してもよい。ダイレクトＢフレームとして設定した映像フレームについては、この映像フレームの後続のＰフレームを符号化した後、該映像フレームをキャッシュから読み出し、ステップＳ１０４〜ステップＳ１１４を実行することで、ダイレクトＢフレームとして符号化する。
【００３７】
例えば、ｎ＝１である本発明の映像符号化処理が図示されている（連続して出現するダイレクトＢフレームの数は１）。図２を参照して、映像シーケンスを符号化する処理を、以下に説明する。
【００３８】
ステップＳ２０２：映像シーケンスを取得する。
【００３９】
映像シーケンスを取得すると、この映像シーケンスのピクチャー群（ＧＯＰ）を取得する。
【００４０】
ステップＳ２０４：ＧＯＰにおける１番目のフレームをＩフレームとして符号化し、２番目のフレームをＰフレームとして符号化し、３番目のフレームを現在のフレームとして用いる。
【００４１】
ステップＳ２０６：現在のフレームがＧＯＰの最後のフレームか否か判断し、上記判断が肯定の場合、ステップＳ２１６へ進み、上記判断が肯定ではない場合、ステップＳ２０８へ進む。
【００４２】
ステップＳ２０８：現在のフレームに直近の先行Ｐフレームの動き情報が、事前に設定した閾値以下であるか否かを判断し、上記判断が肯定の場合、ステップＳ２１０へ進み、そうではない場合、ステップＳ２１４へ進む。
【００４３】
Ｉフレームは、イントラフレーム予測のみが可能であるため、動き条件は得られない。そのため、映像シーケンスのＢフレームに対しては、再生順で直近の先行Ｐフレームの動き条件を参照する必要がある。上述したように、モード選択中は、ダイレクトＢフレームに対して動き推定を行わない。したがって、激しい動きの場面では、動きベクトルの予測は正確ではなく、残留データ量が大きくなる。そのため、同じビットレートでは、画像符号化の質が低下する。したがって、ステップＳ２０８では、現在のフレームが現在のＧＯＰに属し、ダイレクトＢフレームの符号化条件を満たすか否か（すなわち、現在のフレームに直近の先行Ｐフレームの動き情報が設定した閾値以下であるか否か）を判断する必要があり、ダイレクトＢフレームを挿入するか否かを、符号化処理中に動的に決定する。
【００４４】
現在のフレームに直近の先行Ｐフレームの動き情報が事前に設定した閾値以下である場合、符号化Ｐフレームの動きは激しい動きではないことを示し、現在のフレームをＢフレームとして符号化する。そうではない場合、符号化Ｐフレームの動きは激しい動きであることを示し、現在のフレームをＰフレームとして符号化する。
【００４５】
ステップＳ１２０：現在のフレームをＢフレームとして設定し、Ｂフレームをキャッシュし、現在のフレームの次のフレームをＰフレームとして設定し、この次のフレームのさらに次のフレームを現在のフレームとして用いる。
【００４６】
ステップＳ２１２：Ｂフレームをキャッシュから取得し、ステップＳ１０４〜ステップＳ１１４にしたがって符号化を行い、ステップＳ２０６へ戻る。
【００４７】
ステップＳ２１４：現在のフレームをＰフレームとして符号化し、現在のフレームの次のフレームを現在のフレームとして用い、ステップＳ２０６へ戻る。
【００４８】
ステップＳ２１６：映像シーケンスの最後のフレームをＰフレームとして符号化する。
【００４９】
図３は、ＧＯＰ長が７の符号化シーケンスの一例を示す。この例では、連続して出現するＢフレームの数が１であり、映像シーケンスの１番目のフレームがＩフレームとして符号化され、２番目のフレームがＰフレームとして符号化され、３番目のフレームがＢフレームの符号化条件を満たすため、３番目のフレームをＢフレームとして符号化する。４番目のフレームはＰフレームとして符号化し、５番目のフレームはＢフレームの条件を満たさないため、５番目のフレームをＰフレームとして符号化する。６番目のフレームはＢフレームの符号化条件を満たすため、６番目のフレームをＢフレームとして符号化する。７番目のフレームは最後のフレームであり、Ｐフレームとして符号化される。この例では、連続して出現するＢフレームの数は１（すなわち、ｎ＝１）である。
【００５０】
現在のフレームがＢフレームであるか否かを、直近の符号化Ｐフレームの動き条件に基づき判断するため、符号化Ｐフレームの動きが激しい動きであると判断された場合、現在のフレームをＰフレームとして符号化する。激しい動きではない場合、現在のフレームをＢフレームとして符号化する。映像フレームを自己適応的にＢフレームとして設定することで、激しい動きを伴う場面でＢフレームを符号化することで起こる質の劣化を、効果的に回避することができる。
【００５１】
いくつかの実施態様では、動き情報は、現在のフレームに直近の先行Ｐフレームにおけるマクロブロックの平均動きベクトル残差を含む。この平均動きベクトル残差とは、すなわち、Ｐフレームにおける全マクロブロックの動きベクトル残差の合計を、マクロブロックの総数で除算した結果である。いくつかの実施態様では、閾値はビットレート制御の下で、例えば、
【００５２】
【数１】
0005897218.tif 000002
に設定され、式中の「bitrate」は、ビットレート制御の下で設定したビットレート（ｋｂｐｓを単位として用いる）である。ビットレート制御を行わない場合、閾値は、例えば、
【００５３】
【数２】
0005897218.tif 000003
に設定され、式中の「QP」は、映像フレームの符号化のために設定した量子化値である。
【００５４】
いくつかの実施態様では、図４に示すように、各モードコストの内、最少コストのモードを最適予測方向として選択し、現在のマクロブロックを符号化するステップは、以下のステップを含む。
【００５５】
ステップＳ４０２：最少コストのモードに対応する予測方向の特定に用いるフラッグビットを設定する。
【００５６】
いくつかの実施態様では、スキップ予測モードに対して、連続するスキップマクロブロックの数のみを記録することが必要となる。ダイレクト予測モードに対しては、元来、ビットストリームにおけるダイレクト予測モードの特定用のフラッグビットを変更してもよく、この場合、最少コストのモードに対応する予測方向の特定に用いるフラッグビットを設定する。例えば、
DIRECT_L0(2), DIRECT_L0(1), and DIRECT_L0(0)を用いて、現在のマクロブロックで採用する、順方向ダイレクト予測モード、逆方向ダイレクト予測モード、双方向ダイレクト予測モードをそれぞれ特定してもよい。Ｂフレームの符号化処理では、スキップ予測モードとダイレクト予測モードのみが含まれ、イントラフレーム予測モードとインターフレーム予測モードは存在しない。そのため、ビットレートを向上することができる。
【００５７】
ステップＳ４０４：最少コストのモードで取得したピクセル残差に変換と量子化を行い、エントロピー符号化したピクセル残差とフラッグビットを、ビットストリームに書き込む。
【００５８】
いくつかの実施態様では、最少コストのモードを選択後、選択したモードの下で、予測動きベクトルを用いて現在のマクロブロックに動き補償を行った後のピクセル残差を取得してもよい。
【００５９】
図５は、本発明のいくつかの実施態様による、映像符号化装置を示す。この装置には、フレームタイプ設定モジュール１０と、Ｂフレーム符号化モジュール２０が設けられている。フレームタイプ設定モジュール１０は、映像シーケンスに対するフレームタイプを設定するよう構成されている。Ｂフレーム符号化モジュール２０は、Ｂフレーム取得モジュール２１０と、判断モジュール２２０と、モード選択モジュール２３０と、符号化モジュール２４０を備えている。
【００６０】
いくつかの実施態様では、Ｂフレーム取得モジュール２１０は、映像フレームをＢフレームとして取得するよう構成される。また、判断モジュール２２０は、映像フレームの現在のマクロブロックがダイレクト予測モードを満たすか否か判断し、さらに、現在のマクロブロックがダイレクト予測モードを満たす場合、現在のマクロブロックがスキップ予測モードを満たすか否かをさらに判断するよう構成される。
【００６１】
いくつかの実施態様では、映像フレームの現在のマクロブロックの２つの双方向予測動きベクトルを、ダイレクト予測モードを介して取得してもよい。さらに、取得した２つの双方向予測動きベクトルの各々が、事前に設定した閾値の範囲内にある場合、判断モジュール２２０は、現在のマクロブロックがダイレクト予測モードを満たすと判断し、そうではない場合、判断モジュール２２０は、現在のマクロブロックがダイレクト予測モードを満たさないと判断する。
【００６２】
さらに、取得した双方向予測動きベクトルを用いて、現在のマクロブロックに動き補償を行うことで、予測ピクセル値を生成する。この予測ピクセル値を元のピクセル値から減算して、ピクセル残差を得る。判断モジュール２２０は、ピクセル残差を変換および量子化した後のピクセル残差の残留システムエネルギー（一般的に、１つのマクロブロックにおける１より大きい残差係数の数を用いる、または、各残差係数を、そのそれぞれの位置にしたがって重みづけする）が、事前に設定した閾値より大きいか否かを判断するよう構成されている。上記判断が肯定の場合、スキップ予測モードの条件を満たしておらず、そうではない場合、スキップ予測モードを満たしている。
【００６３】
モード選択モジュール２３０は、ダイレクト予測モードで取得した双方向予測動きベクトルを用いて、現在のマクロブロックに動き補償を行った後のモードコストと、ダイレクト予測モードで取得した順方向予測動きベクトルを用いて、現在のマクロブロックに動き補償を行った後のモードコストと、ダイレクト予測モードで取得した逆方向予測動きベクトルを用いて、現在のマクロブロックに動き補償を行った後のモードコストを含む、複数のモードコストの少なくとも１つを計算し、上記モードコストにおける最少コストのモードを、最適予測方向として選択するよう構成されている。
【００６４】
符号化モジュール２４０は、モード選択モジュール２３０が選択した最適予測方向にしたがって、現在のマクロブロックを符号化するよう構成されている。
【００６５】
いくつかの実施態様では、選択したモードには、時間領域ダイレクト予測モードと、空間領域ダイレクト予測モードの少なくとも１つが含まれる。いくつかの実施態様では、時間領域ダイレクト予測モードを用いる。ダイレクトモードの分割化には、１６×１６分割と、８×８分割の少なくとも１つが含まれる。いくつかの実施態様では、１６×１６分割のダイレクトモードを用いる。複雑性が増しても構わない用途では、モード選択モジュール２３０は、さらに、異なる分割体のイントラフレーム予測モードのコストを計算し、イントラフレーム予測モードのコストを他のインターフレームモードのコストと比較し、最少コストのモードを選択する。
【００６６】
各映像シーケンスを連続するＧＯＰで形成するため、各映像シーケンスに対してシーケンスの符号化を行い、映像フレームタイプを符号化処理で設定する必要がある。図６に示すいくつかの実施態様では、映像符号化装置は、さらに、映像シーケンス取得モジュール３０と、Ｉフレーム符号化モジュール４０と、Ｐフレーム符号化モジュール５０を備える。映像シーケンス取得モジュール３０は、映像シーケンスを取得するよう構成されている。Ｉフレーム符号化モジュール４０は、映像シーケンスの１番目のフレームをＩフレームとして符号化するよう構成されている。Ｐフレーム符号化モジュール５０は、映像シーケンスの２番目のフレームをＰフレームとして符号化するよう構成されている。
【００６７】
いくつかの実施態様では、フレームタイプ設定モジュール１０は、映像シーケンスの３番目のフレームを現在のフレームとして用い、現在のフレームをｉ番目のフレームとして設定し、さらに、現在のフレームに直近の先行Ｐフレームの動き情報が、事前に設定した閾値以下であるか否かを判断するするステップと、上記判断が肯定の場合、ｉ番目の映像フレームから（ｉ＋ｎ−１）番目の映像フレームまでをＢフレームとして設定し、Ｂフレームをキャッシュし、Ｐフレーム符号化モジュール５０に、（ｉ＋ｎ）番目の映像フレームをＰフレームとして符号化するよう通知し、（ｉ＋ｎ＋１）番目の映像フレームを現在のフレームとして用いるステップと、上記判断が肯定ではない場合、Ｐフレーム符号化モジュール５０に、ｉ番目の映像フレームをＰフレームとして符号化するよう通知し、（ｉ＋１）番目の映像フレームを現在のフレームとして用いるステップを、現在のフレームが映像シーケンスの最後のフレームとなるまで、現在のフレームに対して繰り返し実行するよう構成される。この場合、ｉは３以上の整数であり、ｎは１以上の整数である。
【００６８】
いくつかの実施態様では、Ｐフレーム符号化モジュール４０は、さらに、現在のフレームに直近の先行Ｐフレームの動き情報が設定閾値より大きい場合、現在のフレームをＰフレームとして符号化し、フレームタイプ設定モジュール１０に、現在のフレームの次のフレームを現在のフレームとして用いることを通知するよう構成される。Ｐフレーム符号化モジュール４０は、さらに、映像シーケンスの最後のフレームをＰフレームとして符号化するよう構成される。
【００６９】
Ｉフレームは、イントラフレーム予測のみが可能であるため、動き条件を得ることが出来ない。そのため、映像シーケンスのＢフレームに対しては、再生順で先行するＰフレームの動き条件を参照する必要がある。上述したように、モード選択中は、ダイレクトＢフレームに対して動き推定を行わない。したがって、激しい動きの場面では、動きベクトルの予測は正確ではなく、残留データ量が大きくなる。そのため、同じビットレートでは、画像符号の質が低下する。したがって、フレームタイプ設定モジュ−ル１０は、現在のフレームが現在のＧＯＰに属し、ダイレクトＢフレームの符号化条件を満たすか否か（すなわち、現在のフレームに直近の先行Ｐフレームの動き情報が設定した閾値以下であるか否か）を判断し、また、ダイレクトＢフレームを挿入するか否かを、符号化中に動的に決定する必要がある。
【００７０】
いくつかの実施態様では、フレームタイプ設定モジュール１０は、現在のフレームに直近の先行Ｐフレームの動き情報を取得し、取得した動き情報を設定閾値と比較する。Ｐフレームの動き情報が設定閾値以下である場合、符号化Ｐフレームの動きは激しい動きではないことを示しており、フレームタイプ設定モジュール１０は、現在のフレームをＢフレームとして設定する。Ｐフレームの動き情報が設定閾値より大きい場合、符号化Ｐフレームの動きは激しい動きであることを示しており、Ｐフレーム符号化モジュール５０は、現在のフレームをＰフレームとして符号化する。
【００７１】
いくつかの実施態様では、動き情報には、現在のフレームに直近の先行Ｐフレームにおけるマクロブロックの平均動きベクトル残差が含まれる。この平均動きベクトル残差とは、すなわち、全マクロブロックの動きベクトル残差の合計を、マクロブロックの総数で除算した結果である。いくつかの実施態様では、閾値はビットレート制御の下で、例えば、
【００７２】
【数３】
0005897218.tif 000004
に設定され、式中の「bitrate」は、ビットレート制御の下で設定したビットレート（ｋｂｐｓを単位として用いる）である。ビットレート制御を行わない場合、閾値は、例えば、
【００７３】
【数４】
0005897218.tif 000005
に設定され、式中の「QP」は、フレームの符号化のために設定した量子化値である。
【００７４】
フレームタイプ設定モジュール１０が、現在のフレームをＢフレームとして設定した後、Ｂフレームをキャッシュする。これにより、Ｂフレーム符号化モジュール２０は、Ｂフレームをキャッシュから取得し、Ｂフレームの符号化を完了する。
【００７５】
図７に示すいくつかの実施態様では、符号化モジュール２４は、フラグビット設定モジュール２４２と、ビットストリーム書込みモジュール２４４を備える。
【００７６】
いくつかの実施態様では、フラグビット設定モジュール２４２は、フラグビットを設定し、最少コストのモードに対応する予測方向を特定するよう構成される。
【００７７】
いくつかの実施態様では、スキップ予測モードに対して、連続するスキップマクロブロックの数のみを記録することが必要となる。ダイレクト予測モードに対しては、ビットストリームにおけるダイレクト予測モードを特定するために本来用いるフラッグビットを変更してもよく、この場合、最少コストのモードに対応する予測方向の特定に用いるフラッグビットを設定する。例えば、フラグビット設定モジュール２４２は、DIRECT_L0(2), DIRECT_L0(1), and DIRECT_L0(0)を用いて、現在のマクロブロックで採用する、順方向ダイレクト予測モード、逆方向ダイレクト予測モード、双方向ダイレクト予測モードをそれぞれ特定してもよい。Ｂフレームの符号化処理では、スキップ予測モードとダイレクト予測モードのみが含まれ、イントラフレーム予測モードとインターフレーム予測モードは存在しない。そのため、ビットレートを向上することができる。
【００７８】
ビットストリーム書込みモジュール２４４は、最少コストのモードで取得したピクセル残差に変換と量子化を行い、エントロピー符号化したピクセル残差とフラッグビットをビットストリームに書き込むよう構成されている。
【００７９】
図９は、本発明のいくつかの実施態様による映像化符号化方法を実行する、好適なコンピュータ９００を示すブロック図である。コンピュータ９００は、例えば、デスクトップパソコン、ノートパソコン、スマートホン、または、タブレット等である。コンピュータ９００は、１つ以上の処理装置（ＣＰＵ）９０２（以降、プロセッサと呼ぶ）と、１つ以上のネットワークインターフェース９０４と、１つ以上の入力デバイス９０５と、ディスプレイ９０３と、メモリ９０６と、これらの構成部を相互接続する１つ以上の通信バス９０８を備える。いくつかの実施態様では、上記１つ以上の入力デバイス９０５は、キーボード、マウス、トラックパッド、およびタッチスクリーンを含む。通信バス９０８は、システム構成部を相互接続し、構成部間の通信を制御する回路を備えてもよい。
【００８０】
メモリ９０６は、一般的に、ＤＲＡＭ、ＳＲＡＭ、または他のランダムアクセス固体メモリ装置等の、高速ランダムアクセスメモリを含む。メモリ９０６は、さらに、１つ以上の磁気ディスク記憶装置、光学ディスク記憶装置、フラッシュメモリデバイス、または他の不揮発性固体記憶装置等の、不揮発性メモリを含んでもよい。メモリ９０６は、ＣＰＵ９０２から離間した１つ以上の記憶装置を含んでもよい。メモリ９０６、または、メモリ９０６内の不揮発性記憶装置は、コンピュータ読取り可能な非一時型記憶媒体を含む。いくつかの実施態様では、メモリ９０６、または、コンピュータ読取り可能な非一時型記憶媒体は、以下のプログラム、各モジュールおよびデータ構造、またはそのサブセットを記憶する：
・  各種基本システムサービスを操作し、ハードウェア依存タスクを実行する手順を含むオペレーティングシステム９１０；
・  １つ以上のネットワークインターフェース９０４（有線または無線）と通信ネットワーク（例えば、インターネット）を介して、コンピュータ９００を他のデバイス（例えば、遠隔サーバまたはクライアント機器）に接続するためのネットワーク通信モジュール（または指示）９１２；
・  ユーザ入力によるデータや画像とともに、異なるユーザインタフェース制御（例えば、テキストボックス、ドロップダウンリスト、または、プッシュボタン）を表示するためのユーザインタフェースモジュール９１４；
・  図１、２、および４を参照して上述した、フレームタイプ設定モジュール９１８と、Ｂフレーム符号化モジュール９２０と、映像シーケンス取得モジュール９２２と、Ｉフレーム符号化モジュール９２４と、Ｐフレーム符号化モジュール９２６と、フラッグビット設定モジュール９２８と、ビットストリーム書込みモジュール９３０等をさらに含む、映像符号化モジュール９１６；
・  メモリ９０６に記憶され、映像シーケンスにおける元の映像フレーム９５２と、元のビデオ画像のピクセル値９５４と、残差ビデオ画像のピクセル値９５６と、フラッグビット９５８等をさらに含み、各々メモリ９０６内の所定領域を占めるデータ９５０。
【００８１】
当業者であれば、各実施態様による方法の各ステップのすべてまたは一部を、関連ハードウェアに指示を与えるコンピュータプログラムによって、実行できることは理解できるであろう。該プログラムは、コンピュータ読取り可能な非一時型記憶媒体に記憶させてもよい。プログラムを作動させると、各実施態様による方法の各ステップが実行される。記憶媒体は、例えば、磁気ディスク、光学ディスク、読取り専用メモリ（ＲＯＭ）、または、ランダムアクセスメモリ（ＲＡＭ）である。
【００８２】
以上説明した各実施態様は、本発明の態様例のいくつかを示すのみであり、具体的かつ詳細に説明されているが、本発明の範囲を限定するものと解釈されるべきではない。当業者であれば、本発明の精神を逸脱することなく、各種変更や改良を加えることは可能であり、これらの変更や改良もすべて、本発明の保護範囲に属する。したがって、本発明の保護範囲は、添付した請求項の保護範囲に準ずる。
【００８３】
具体的な実施態様をこれまで説明したが、本発明をこれら実施態様に限定することを意図するものではない。それに反して、本発明には、添付の請求項の精神と範囲内における代替物、変更、均等物が含まれる。本明細書に提示した主題が完全に理解されるように、数々の具体的かつ詳細な説明を記載したが、これら詳述がなくとも、本発明の主題を実施可能であることは、当業者には明らかである。他の例では、周知技術の方法、手順、構成部、回路構成についてはあえて詳細に説明せず、不必要に本実施態様の各局面が不明確とならないようにしている。
【００８４】
本明細書では、１番目、２番目といった記載を構成部の説明に用いているが、これにより構成部を限定するものではなく、各構成部を互いから区別することが目的である。例えば、序列の１番目を２番目としてもよく、同様に、序列の２番目を１番目としてもよい。どちらの場合も、本発明の範囲を逸脱することはない。１番目と２番目はともに序列基準であるが、別々のものである。
【００８５】
本発明の説明に用いた術語は、各実施態様の説明を目的としたものであり、本発明の限定を意図したものではない。本発明の明細書と添付請求項に用いた単数表現の記載は、文脈上別途の指摘がある場合以外は、複数の形態を含むものである。また、本明細書に用いた「および／または」は、列記した１つ以上の関連事項の可能な組合せをすべて指し、また、これらを包含することは言うまでもない。本明細書では、「含む」と「備える」に関わる記載は、記載した特徴、動作、要素、および／または構成部を設けたことを明記するものであるが、１つ以上の他の特徴、動作、要素、および／または構成部を設けることや付け加えることを排除するものではない。
【００８６】
本明細書で用いた、「〜場合（ｉｆ）」は、文脈により、既述の条件が確かにそうであると「判断される時」「判断すると同時に」「判断に応じて」「判断にしたがって」「検知に応じて」のいずれにも解釈することができる。同様に、「既述の条件が確かにそうであることが判断された場合」、または、「既述の条件が確かにそうである場合」は、文脈により、既述の条件が確かにそうであると「判断すると同時に」「判断に応じて」「判断にしたがって」「検知すると同時に」「検知に応じて」のいずれにも解釈することができる。
【００８７】
各図面のいくつかには、多数の論理段階を特定の順序に示しているが、各論理段階は順序に依存するものではなく、順序を入れ替えたり、他の論理段階を組み合わせたり、切り離してもよい。いくつかの順序入れ替えやグループ化は詳述したが、これら以外は当業者にとっては自明であり、他の選択肢をすべて網羅した一覧は示さない。さらに、各論理段階は、ハードウェア、ファームウェア、ソフトウェアのいずれで実行してもよく、また、これらを任意に組み合わせたもので実行してもよい。
【００８８】
以上、本発明を特定の実施態様を参照して説明したが、上述した内容は、本発明を包括することを意図しておらず、また、開示事項に限定することを意図したものでもない。上記教示内容に鑑みて、様々な変更や変形例が可能である。上述の各実施態様によって、本発明の原則とその実用性を最もわかりやすく説明した。これにより、当業者が本発明とその実施態様を、好適な各改変例とともに、意図した用途に最大限に利用することができる。実施態様には、添付請求項の精神と範囲内における別の選択肢、変更、均等物が含まれる。本明細書に提示した主題が完全に理解されるように、数々の具体的かつ詳細な説明を記載したが、これら詳述がなくとも、本発明の主題を実施可能であることは、当業者には明らかである。他の例では、周知技術の方法、手順、構成部、回路構成についてはあえて詳細に説明せず、不必要に本実施態様の各局面が不明確とならないようにしている。
【符号の説明】
【００８９】
１０    フレームタイプ設定モジュール
２０    Ｂフレーム符号化モジュール
３０    映像シーケンス取得モジュール
４０    Ｉフレーム符号化モジュール
５０    Ｐフレーム符号化モジュール
２１０  Ｂフレーム取得モジュール
２２０  判断モジュール
２３０  モード選択モジュール
２４０  符号化モジュール
２４２  フラグビット設定モジュール
２４６  ビットストリーム書込みモジュール
９００  コンピュータ
９０３  ディスプレイ
９０４  ネットワークインターフェース
９０５  入力デバイス
９０６  メモリ
９１０  オペレーティングシステム
９１２  ネットワーク通信モジュール
９０４  ユーザインタフェースモジュール
９１６  映像符号化モジュール
９１８  フレームタイプ設定モジュール
９２０  Ｂフレーム符号化モジュール
９２２  映像シーケンス取得モジュール
９２４  Ｉフレーム符号化モジュール
９２６  Ｐフレーム符号化モジュール
９２８  フラッグビット設定モジュール
９３０  ビットストリーム書込みモジュール
９５０  データ
９５２  映像シーケンスの元の映像フレーム
９５４  元のビデオ画像のピクセル値
９５６  残差ビデオ画像のピクセル値
９５８  フラッグビット
【図１】
0005897218.tif 000012
【図２】
0005897218.tif 000013
【図３】
0005897218.tif 000014
【図４】
0005897218.tif 000015
【図５】
0005897218.tif 000016
【図６】
0005897218.tif 000017
【図７】
0005897218.tif 000018
【図８】
0005897218.tif 000019
【図９】
0005897218.tif 000020