(57)【特許請求の範囲】
【請求項１】
ａ）現在のピクチャ内の所与の部分領域における統計量を計算するステップと、
ｂ）先行するピクチャ内の対応する位置にある部分領域周辺の２以上の部分領域のウィンドウを規定するステップと、
ｃ）前記ウィンドウ内の２以上の部分領域における統計量の総和を計算するステップと、
ｄ）前記総和と前記所与の部分領域における統計量との差分を計算するステップと、
ｅ）前記総和と前記所与の部分領域における前記統計量との差分を用いて前記所与の部分領域がシーン切替領域か否かを決定するステップと、
ｆ）前記現在のピクチャについてシーン切替領域の数を決定するステップと、
ｇ）前記シーン切替領域の数から前記現在のピクチャがシーン切替ピクチャか否かを決定するステップと、
ｈ）前記現在のピクチャがシーン切替ピクチャか否かを示す情報を格納または転送するステップとを含むことを特徴とする、１以上のデジタルピクチャを符号化する際のシーン切替を検出する方法。
【請求項２】
ｉ）前記現在のピクチャがシーン切替ピクチャか否かを示す情報にしたがって、エンコーダを用いて前記現在のピクチャを符号化するステップをさらに含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記ｉ）のステップは、
前記現在のピクチャがシーン切替ピクチャであることを前記情報が示す場合、前記現在のピクチャをＩフレームとして符号化し、現在のピクチャがシーン切替ピクチャではないことを前記情報が示す場合、前記現在のピクチャをＢフレームまたはＰフレームとして符号化するステップを含むことを特徴とする請求項２に記載の方法。
【請求項４】
前記現在のピクチャ内の複数の部分領域について、前記ａ）のステップからｅ）のステップを繰り返すステップをさらに含むことを特徴とする請求項１に記載の方法。
【請求項５】
各部分領域はマクロブロックであることを特徴とする請求項１に記載の方法。
【請求項６】
前記ａ）のステップは、現在のピクチャ内の各部分領域における画素値の平均値または画素値の分散を計算するステップを含むことを特徴とする請求項１に記載の方法。
【請求項７】
前記ウィンドウは、先行するピクチャ内の対応する位置にある部分領域に隣接する１以上の部分領域を含むことを特徴とする請求項１に記載の方法。
【請求項８】
前記ｃ）のステップは、ウィンドウ内の各部分領域における重みと統計量とを決定し、
前記総和は、前記重みと前記各部分領域における統計量との積の総和で与えられ、
前記ウィンドウ内の全ての部分領域に渡って前記総和を計算するステップを含むことを特徴とする請求項１に記載の方法。
【請求項９】
前記ウィンドウ内の各部分領域における重みを決定するステップは、運動方向を決定し、前記ウィンドウ内の対応する部分領域が前記運動方向に沿って位置するか否かにしたがって各重みを割り当てるステップとを含むことを特徴とする請求項８に記載の方法。
【請求項１０】
前記ｅ）のステップは、前記総和と前記統計量との差分を閾値と比較するステップを含むことを特徴とする請求項１に記載の方法。
【請求項１１】
前記ｇ）のステップは、前記シーン切替領域の数を閾値と比較するステップを含むことを特徴とする請求項１に記載の方法。
【請求項１２】
前記ｇ）のステップは、前記シーン切替領域の数が前記現在のピクチャ内の部分領域の過半数か否かを決定するステップを含むことを特徴とする請求項１に記載の方法。
【請求項１３】
プロセッサと、
前記プロセッサと接続するメモリと、
前記メモリ内に具現化され前記プロセッサが実行可能な命令であって、１以上のデジタルピクチャを符号化する際のシーン切替を検出する方法を実装するように構成された命令を含み、前記方法は、
ａ）現在のピクチャ内の所与の部分領域における統計量を計算するステップと、
ｂ）先行するピクチャ内の対応する位置にある部分領域周辺の２以上の部分領域のウィンドウを規定するステップと、
ｃ）前記ウィンドウ内の部分領域全面における統計量の総和を計算するステップと、
ｄ）前記総和と前記所与の部分領域における統計量との差分を計算するステップと、
ｅ）前記総和と前記所与の部分領域における前記統計量との差分を用いて前記所与の部分領域がシーン切替領域か否かを決定するステップと、
ｆ）前記現在のピクチャについてシーン切替領域の数を決定するステップと、
ｇ）前記シーン切替領域の数から前記現在のピクチャがシーン切替ピクチャか否かを決定するステップと、
ｈ）前記現在のピクチャがシーン切替ピクチャか否かを示す情報を格納または転送するステップと、
ｉ）前記現在のピクチャがシーン切替ピクチャか否かを示す情報にしたがって、エンコーダを用いて前記現在のピクチャを符号化するステップとを含むことを特徴とする、１以上のデジタルピクチャを符号化する際のシーン切替を検出するシステム。
【請求項１４】
前記現在のピクチャがシーン切替ピクチャか否かを示す情報にしたがって、前記現在のピクチャを符号化するように構成されたエンコーダをさらに含むことを特徴とする請求項１３に記載のシステム。
【請求項１５】
前記命令はさらに、前記現在のピクチャ内の複数の部分領域について前記ａ）のステップからｅ）のステップを繰り返すように構成されていることを特徴とする請求項１３に記載のシステム。
【請求項１６】
前記ｃ）のステップは、ウィンドウ内の各部分領域における重みと統計値とを決定し、
前記総和は、前記重みと前記各部分領域における統計量との積の総和で与えられ、
前記ウィンドウ内の全ての部分領域に渡って前記総和を計算するステップを含むことを特徴とする請求項１３に記載のシステム。
【請求項１７】
前記ウィンドウ内の各部分領域における重みを決定するステップは、運動方向を決定し、前記ウィンドウ内の対応する部分領域が前記運動方向に沿って位置するか否かにしたがって各重みを割り当てるステップを含むことを特徴とする請求項１６に記載のシステム。
【請求項１８】
前記エンコーダは、前記現在のピクチャがシーン切替ピクチャであることを前記情報が示す場合、前記現在のピクチャをＩフレームとして符号化し、現在のピクチャがシーン切替ピクチャではないことを前記情報が示す場合、前記現在のピクチャをＢフレームまたはＰフレームとして符号化するように構成されていることを特徴とする請求項１４に記載のシステム。
【請求項１９】
コンピュータプログラム命令が格納されているコンピュータ読み取り可能な記録媒体であって、前記コンピュータプログラム命令は実行されたときに、１以上のデジタルピクチャを符号化する際のシーン切替を検出する方法を実装するように構成されており、前記方法は、
ａ）現在のピクチャ内の所与の部分領域における統計量を計算するステップと、
ｂ）先行するピクチャ内の対応する位置にある部分領域周辺の２以上の部分領域のウィンドウを規定するステップと、
ｃ）前記ウィンドウ内の部分領域全面における統計量の総和を計算するステップと、
ｄ）前記総和と前記所与の部分領域における統計量との差分を計算するステップと、
ｅ）前記総和と前記所与の部分領域における前記統計量との差分を用いて前記所与の部分領域がシーン切替領域か否かを決定するステップと、
ｆ）前記現在のピクチャについてシーン切替領域の数を決定するステップと、
ｇ）前記シーン切替領域の数から前記現在のピクチャがシーン切替ピクチャか否かを決定するステップと、
ｈ）前記現在のピクチャがシーン切替ピクチャか否かを示す情報を格納または転送するステップと、
ｉ）前記現在のピクチャがシーン切替ピクチャか否かを示す情報にしたがって、エンコーダを用いて前記現在のピクチャを符号化するステップとを含むことを特徴とするコンピュータ読み取り可能な記録媒体。
【請求項２０】
前記コンピュータプログラム命令はさらに、前記現在のピクチャがシーン切替ピクチャか否かを示す情報にしたがって、前記現在のピクチャを符号化するように構成されていることを特徴とする請求項１９に記載のコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施の形態はビデオ画像のデジタル符号化に関し、特に、ビデオ画像の符号化の際のシーン切替検出に関する。
【０００２】
本出願は、２００９年９月２日に出願された「シーン切替検出」と題する米国出願第１２／５５３，０６９号の優先権を主張し、開示内容全体を参照によりここに完全に組み入れる。
【０００３】
本出願は、同一出願人による同時係属中の米国特許出願１２／５５３，０７０（「ビデオ符号化のためのピクチャレベル比率制御」、２００９年９月２日出願、代理人ドケット番号：ＳＣＥＡ０８０７３ＵＳ００）に関連し、開示内容全体を参照によりここに完全に組み入れる。
【０００４】
本出願は、同一出願人による同時係属中の米国特許出願１２／５５３，０７３（「並列デジタルピクチャ符号化」、２００９年９月２日出願、代理人ドケット番号：ＳＣＥＡ０８０７７ＵＳ００）に関連し、開示内容全体を参照によりここに完全に組み入れる。
【０００５】
本出願は、同一出願人による同時係属中の米国特許出願１２／５５３，０７５（「ビデオ符号化において高速な動き予測を達成するための閾値の利用および早期中止」、２００９年９月２日出願、代理人ドケット番号：ＳＣＥＡ０８０７８ＵＳ００）に関連し、開示内容全体を参照によりここに完全に組み入れる。
【背景技術】
【０００６】
デジタル信号圧縮は、多くのマルチメディアアプリケーションや装置で広く用いられている。符号化器／復号器（コーデック）を用いるデジタル信号圧縮によって、音声やビデオ信号のようなストリーミングメディアをインターネットを介して送信したり、コンパクトディスクに格納したりすることができるようになる。Ｈ．２６１、Ｈ２６３、ＤＶ、ＭＰＥＧ−１、ＭＰＥＧ−２、ＭＰＥＧ−４、ＶＣ１、およびＡＶＣ（Ｈ．２６４）を含むデジタルビデオ圧縮における多くの異なる標準が出現している。これらの標準は、他のビデオ圧縮技術と同様に、あるビデオフレームピクチャと連続するピクチャとの間における空間的および時間的な冗長性を取り除くことによって、そのビデオフレームピクチャを効率良く表現しようとする。このような圧縮標準を用いることを通して、ビデオコンテンツは高度に圧縮されたビデオビットで伝えることが可能となり、それゆえ効率よくディスクに格納したりネットワークを介して送信したりすることができる。
【０００７】
ＭＰＥＧ−４ ＡＶＣ（Advanced Video Coding；Ｈ．２６４としても知られる）はビデオ圧縮標準であり、先行する標準よりも明らかに高い圧縮を提供する。Ｈ．２６４標準は、従前のＭＰＥＧ−２標準の最大２倍の圧縮を提供することが期待される。Ｈ．２６４標準は、視覚的な質の向上を提供することも期待されている。その結果、ますます多くのビデオコンテンツがＡＶＣ（Ｈ．２６４）で符号ストリームの形態で配信されている。ふたつの競合するＤＶＤフォーマット、すなわちＨＤ−ＤＶＤフォーマットとＢｌｕ−Ｒａｙ（登録商標）ディスクフォーマットは、Ｈ．２６４／ＡＶＣのハイプロファイルデコードを任意のプレイヤの機能としてサポートしている。ＡＶＣ（Ｈ．２６４）符号化は、"Draft of Version 4 of H.264/AVC (ITU-T Recommendation H.264 and ISO/IEC 14496-10 (MPEG-4 part 10) Advanced Video Coding)" by Gary Sullivan, Thomas Wiegand and Ajay Luthra, Joint Video Team (JVT) of ISO/IEC MPEG & ITU-T VCEG (ISO/IEC JTC1/SC29/WG11 and ITU-T SG16 Q.6), 14th Meeting: Hong Kong, CH 18-21 January, 2005, に詳細に記載されており、あらゆる目的のために開示内容全体を参照によりここに完全に組み入れる。
【０００８】
ＭＰＥＧ−２、ＭＰＥＧ−４、およびＨ．２６４のような最新のビデオ符号化／復号（コーデック）は、一般にビデオフレームを、イントラフレーム、プレディクティブフレーム、およびバイプレディクティブフレームとして知られる３つの基本的な種類に分割する。これらの３つのフレームはそれぞれ、通常はＩフレーム、Ｐフレーム、およびＢフレームと呼ばれる。
【０００９】
Ｉフレームは、Ｉフレーム自身を除くと、いかなるピクチャも参照することなく符号化される。Ｉフレームは、ランダムアクセスおよび他のＰフレームまたはＢフレームを復号するために用いられる。Ｉフレームは、ランダムアクセスのポイントを生成するため（デコーダに所与のピクチャ位置において０から適切に復号を開始できるようにするため）にエンコーダによって生成されてもよい。Ｉフレームは、画像の細部の違いが、効果的なＰまたはＢフレームを生成するのに妨げとなるときに生成されてもよい。Ｉフレームは完全なピクチャを含むので、Ｉフレームは通常、ＰフレームやＢフレームよりも符号化するために多くのビットが必要となる。
【００１０】
Ｐフレームを復号するためには、前もって他の１またはいくつかのピクチャの復号が必要となる。Ｐフレームは通常、Ｉフレームの符号化に要するビットよりも少ないビットを要する。Ｐフレームは、復号の順序において先にあるＩフレームに対する相違点に関する符号化された情報を含む。Ｐフレームは通常、ＧｏＰ（Group of Pictures）内の先行するＩフレームを参照する。Ｐフレームは、画像データと動きベクトルの変化との両方、およびそれらふたつの組み合わせを含む。ＭＰＥＧ−２のようないくつかの標準コーデックにおいてＰフレームは、復号中に、既に復号されているピクチャをただひとつだけ参照として用いる。ここでＰフレームは、符号時に参照するピクチャは、表示の順序においてもＰフレームよりも前にあることを要求する。Ｈ．２６４においてＰフレームは、復号中に、複数の既に復号されているピクチャを参照として用いることができ、また予測に用いられるピクチャに対して任意の表示順序となることができる。
【００１１】
Ｂフレームは、復号するために、前もってＩフレームかＰフレームのいずれか一方の復号が必要となる。Ｐフレームと同様に、Ｂフレームは、画像データと動きベクトルの変化との両方、および／またはそれらふたつの組み合わせを含んでもよい。Ｂフレームは、動き領域（例えばマクロブロックやそれより小さな領域のようなフレームのセグメント）の予測を、前もって復号されているふたつの異なる参照領域を用いて得られる予測を平均することで形成するいくつかの予測モードを含んでもよい。ＭＰＥＧ−２のようないくつかのコーデックでは、Ｂフレームは他のピクチャを予測するための参照としては使われることはない。その結果、これらのＢフレームにはより低品質の符号化（そうでない場合よりもより少ないビットの使用）を用いることができる。なぜなら、細部の喪失が後続のピクチャの予測品質を害さないからである。Ｈ．２６４のような他のコーデックでは、Ｂフレームは、Ｂフレームは他のピクチャの復号のための参照に使われてもよいし使われなくてもよい（エンコーダの裁量による）。ＭＰＥＧ−２のようないくつかのコーデックは、復号中に、先に復号されたピクチャを参照として厳密にふたつ用い、このうち一方のピクチャは表示順序でＢフレームに先行し、もう一方は追随する。Ｈ．２６４のような他のコーデックでは、Ｂフレームは、復号中に、１、２、または２よりも多くの先に復号されたピクチャを参照として用いることができ、また予測に用いられるピクチャに対して任意の表示順序となることができる。Ｂフレームは通常、ＩフレームまたはＰフレームのいずれのフレームよりも、符号化に要求されるビットは少ない。
【００１２】
本明細書において、Ｉフレーム、Ｂフレーム、およびＰフレームという用語は、例えば上述したストリーミングビデオの文脈におけるＩフレーム、Ｂフレーム、およびＰフレームと同様の性質を持つ任意のストリーミングデータの単位に適用される。
【発明の概要】
【発明が解決しようとする課題】
【００１３】
ビデオの符号化は、多くの場合、所与の映像シーン内においてそのシーンのビジュアルコンテンツのいくつかの要素が比較的静止したままでいる傾向があるという事実を利用する。それ故、所与のピクチャを、参照として用いられる先行ピクチャとそのピクチャとの差分の観点から符号化することによって、ビデオ信号の符号化に必要なデータを抑制することが可能となる。しかしながら、もしビデオシーケンスがシーン切替を含んでいると、参照として利用可能な先行ピクチャが存在しなくなりうる。したがって、シーン切替を検出することができると、符号化プログラムにとって利用価値がある。シーン切替は符号化プロセスに影響を及ぼすことができるからである。従来のシーン切替検出アルゴリズムは、ビデオフレームのコンテントの解析に基づくものである。
【課題を解決するための手段】
【００１４】
本発明の実施の形態は、この文脈の中で生まれたものである。
【００１５】
本発明の教示は、添付の図面とともに下記の詳細な説明を考慮することにより容易に理解されよう。
【図面の簡単な説明】
【００１６】
【図１Ａ】ふたつのビデオフレーム間のシーン切替を説明する図である。
【図１Ｂ】符号化のためのビデオピクチャの分割のあり得るひとつの候補を説明する図である。
【図２Ａ】本発明の実施の形態に係るシーン切替検出アルゴリズムの一例を説明するフロー図である。
【図２Ｂ】本発明の実施の形態に係るマクロブロックに基づくシーン切替アルゴリズムを説明するブロック図である。
【図２Ｃ】本発明の実施の形態に係るマクロブロックに基づくシーン切替アルゴリズムを説明するブロック図である。
【図３Ａ】重み付きフィルタウィンドウのためのウィンドウの形を示す図である。
【図３Ｂ】重み付きフィルタウィンドウのためのウィンドウの別の形を示す図である。
【図３Ｃ】重み付きフィルタウィンドウのためのウィンドウのさらに別の形を示す図である。
【図４Ａ】４つの８×８ピクセルから構成されるマクロブロックを示す図である。
【図４Ｂ】４つの８×８ピクセルから構成されるマクロブロックを示す図である。
【図５Ａ】移動方向とともにマクロブロックを示す図である。
【図５Ｂ】移動方向とともにマクロブロックを示す図である。
【図６】本発明の実施の形態に係るビデオピクチャ中のシーン切替検出を実装するための装置を説明するブロック図である。
【図７】本発明の実施の形態に係るビデオピクチャ中のシーン切替検出を実装する装置のセルプロセッサの実装の一例を説明するブロック図である。
【図８】本発明の実施の形態に係るピクチャレベル比率制御の実装のためのコンピュータ読み取り可能な命令を含むコンピュータ読み取り可能な記録媒体を示す図である。
【発明を実施するための形態】
【００１７】
下記の詳細な説明は、例示を目的として多くの特定の詳細を含むが、下記の詳細に対する多くの変形及び置換が本発明の範囲に入ることは、当業者に認識されるところである。したがって、下記に説明する本発明の実施の形態は、請求された発明の一般性を失わせることなく、また限定を付加することもなく説明される。
【００１８】
イントロダクション
シーン切替検出の問題の特性は図１Ａを参照することで理解されよう。図１Ａは、第１ビデオフレーム１０１と第２ビデオフレーム１０２とをそれぞれ示している。フレーム１０１と１０２とは、ビデオシーケンスの中で連続するフレームである。第１フレーム１０１は、特定の背景１０５に対して特定のアングルから撮像したふたりのキャラクタ１０３および１０４の写真を示す。第２フレーム１０２は同じふたりのキャラクタ１０３および１０４を示すが、第１フレーム１０１と第２フレーム１０２との間でキャラクタ１０３と１０４との相対位置が変わっている。その上、第１フレーム１０１においてはキャラクタ１０３は笑っているが、第２フレーム１０２においてはキャラクタ１０３は顔をしかめている。
【００１９】
コンテンツの観点（従来技術のアプローチ）から見ると、第１フレーム１０１と第２フレーム１０２との間の相違はシーン切替と解釈されるであろう。しかしながら、符号化の観点から見ると、シーンの要素（例えば図１Ａの例で言えば、キャラクタ１０３、１０４、および背景１０５）は実質的に同一であるため、これはシーン切替ではない。それ故、第１フレーム１０１と第２フレーム１０２が根底となる動き探索の範囲内にある限り、第１フレーム１０１は第２フレーム１０２の参照として用いることができる。このことは、残念なことに、コンテントベースのシーン切替検出を用いる従来技術に係るビデオ符号化スキームでは認識することができず、第２フレーム１０２を独立フレーム（Ｉフレーム）として符号化するであろう。これはフレーム１０１、１０２の符号化における非効率の原因となりうる。
【００２０】
この問題を克服するために、本発明の実施の形態は、ビデオシーン切替検出アルゴリズムを実装する。本明細書で提案するアルゴリズムは、ビデオシーケンス内に効果的なシーンカットを設置するため、続くビデオ処理モジュール（例えば、ビデオ圧縮／符号化）はその有益な情報を利用することができる、ビデオ符号化アプリケーションの領域における典型的なアプリケーションは、ピクチャフレームのタイプを決定する。例えば、シーンカットのあるピクチャフレームはＩピクチャフレームと分類され、ＭＰＥＧビデオエンコーダはこのフレームを過去のピクチャフレームを参照することなく独立に符号化することができる。
【００２１】
本明細書に記載されるシーン切替検出アルゴリズムは、多くの観点から他のシーン検出アルゴリズムと相違する。特に、提案するアルゴリズムは概念的にはビデオ符号化と結びつけられるが、必ずしも実装においてビデオ符号化と結びつける必要はない。すなわち、現存する多くのシーン切替アルゴリズムは動き推定モジュールの中に埋め込まれているが、本アルゴリズムはビデオ符号化プログラムの一部である必要はない。本アルゴリズムは、ビデオ符号化エンジンから分離してもよく、符号化のためのビデオシーケンスの前処理の形とみなすこともできる。
【００２２】
提案するアルゴリズムでは、あるピクチャフレームがシーン切替であるか否かの決定は、ピクチャのコンテントに加えて符号化の効率に基づく。例えば、あるピクチャフレームがその隣接するフレームに対して非常に類似した背景の上に異なる小さな前景のオブジェクトがあることを示しているとする。コンテンツの観点から見れば、このピクチャはシーン切替フレームであると分類されるであろう。しかしながら、符号化の効率の観点から見れば、ピクチャフレームの大きな部分（例えば、背景オブジェクト）は冗長であり、先行するフレームの背景と類似する。この冗長な情報は、内在する動き推定／圧縮モジュールによって抽出され除去される。
【００２３】
提案するアルゴリズムはマクロブロックベースのアプローチであり、典型的なＭＰＥＧベースのビデオ符号化に適合する。提案するアルゴリズムは、重み係数付きウィンドウフィルタリングも利用して、現在のピクチャ内のマクロブロックと先行するピクチャにおいて対応する位置にあるマクロブロックおよびそれと隣接するマクロブロックとの差異を決定する。ウィンドウベースのフィルタリングを用いて、統計的差異を計算して、最終的な決定のために収集する。
【００２４】
ビデオピクチャは符号化および復号のために適切な大きさの処理単位に分割される。例えば図１Ｂに示すように、あるひとつのピクチャ１１０は１以上の部分領域に分割される。上述のように、本明細書において「部分領域（section）」とは、ひとつのピクチャ内の１以上のピクセルの集まりを意味する。部分領域は、ひとつのピクチャ内の１ピクセルからピクチャ全体までの範囲を取り得る。部分領域についての限定しない例としては、スライス１１２、マクロブロック１１４、サブマクロブロック１１６、ブロック１１８、および個々のピクセル１２０を含む。図１Ｂに示すように、各スライス１１２は、１以上のマクロブロック１１４の列を含む。ひとつの列内のマクロブロックの数は、マクロブロックの大きさとピクチャ１１０の大きさおよび解像度に依存する。例えば、各マクロブロックが１６×１６ピクセルである場合、それぞれの列におけるマクロブロックの数は、ピクチャ１１０の幅（ピクセル数）を１６で除算することで決定される。各マクロブロック１１４は、いくつかのサブブロック１１６に分割される。各サブマクロブロック１１６は、いくつかのブロック１１８に分割され、各ブロックはいくつかのピクセル１２０を含む。本発明を限定しない例として、通常のビデオ符号化スキームにおいて、ピクセルのマクロブロック１１４それぞれは、８×８ピクセルのサブマクロブロック１１６に分割される。各サブマクロブロックは、４つのブロック１１８に分割され、各ブロックは１６個のピクセル１２０を含む４つの４×４ピクセルの配置を含む。
【００２５】
アルゴリズムの詳細
図２Ａは、シーン切替検出アルゴリズム２００の一例を示す。上述したように、ビデオストリーム内の各ピクチャは複数の部分領域に分割される。本発明の実施の形態においてシーン切替の決定は、部分領域毎における前のピクチャに対する現在のピクチャの分析に基づく。限定ではなく例示の目的として、この分析は上述した各マクロブロックベースで説明される。このアルゴリズムは部分領域の大きさを他の大きさに一般化できることは当業者には理解されよう。
【００２６】
符号２０２で示すように、現在のピクチャ内の各マクロブロックを特徴付けるために、各マクロブロックの統計量μＭが計算される。有用な統計量の例は、各マクロブロックのピクセルの値（例えばクロミナンスや輝度）の平均値やそれらの分散である。各マクロブロックの統計量μＭの値はマクロブロック基準でメモリに格納される。
【００２７】
図２Ｂ−２Ｃに描写するように、現在のビデオピクチャＮは、先行するピクチャＮ−１と同様にマクロブロックに分割される。アルゴリズム２００は、先行するピクチャＮ−１および現在のピクチャＮ内のマクロブロックの解析に基づいて現在のフレームがシーン切替フレームか否かを決定するために先行するフレームを用いる。特に、先行するフレームＮ−１内の各マクロブロックの統計量μｍの値が計算され、以下に説明するシーン切替決定のためのコンピュータメモリに格納される。
【００２８】
符号２０４が示すように、先行するピクチャ内の対応する位置にあるマクロブロックの周囲にウィンドウが規定される。限定ではない例として、現在のピクチャＮ内のマクロブロックＡについて対応する位置にあるマクロブロックａは、先行するフレームＮ−１内に見出せる。また、マクロブロックａに隣接する８つの全てのマクロブロック（ｂからｉ）も、重み付きフィルタリングウィンドウを形成するために設置される。ここでマクロブロックＡおよびａがそれぞれ異なるピクチャに存在するもののそれぞれのピクチャ内で対応する位置にあるとき、「対応する位置に存在する（co-located）」という。例として、マクロブロックＡが、現在のピクチャ内のｋ番目のマクロブロック列中のｊ番目のマクロブロックであり、対応する位置に存在するマクロブロックａは、先行するピクチャ内のｋ番目のマクロブロック列中のｊ番目のマクロブロックである。ここで、シーン切替検出のために技術的意義がある限り、異なる形のウィンドウを選ぶこともできることは留意すべきである。図３Ａ−３Ｃは、本発明の実施の形態に係るフィルタリングウィンドウとして用いることができる代替可能なウィンドウ形状を示す。
【００２９】
ひとたび先行するピクチャ内の対応する位置に存在するマクロブロックの周囲のフィルタリングウィンドウが選択されると、符号２０６に示すようにウィンドウ内の各マクロブロックそれぞれの統計量の値に基づいて統計的総和Ｅが計算される。限定されない例として、統計的総和Ｅはウィンドウ全体にわたる統計量μｍの重み付き総和であってもよい。ある実施の形態では、ウィンドウ内の各マクロブロックに重み係数が割り当てられ、中心のマクロブロック（例えばＡおよびａ）に対する各マクロブロックの関連度が表現される。例えば、マクロブロックＡおよびａが統計的に十分に類似する場合、ウィンドウ内において隣接する他の全てのマクロブロックに等しい重み係数が割り当てられる。Ａおよびａが統計的に十分に類似しない場合、関連する移動方向Ｍが導出される。検出された移動方向Ｍに基づいて、ウィンドウ内のマクロブロックのうち移動方向Ｍに沿わないマクロブロックと比較して、移動方向に沿うマクロブロックの方により大きな重み係数が割り当てられる。移動方向Ｍの導出の仕方はいくつか存在する。限定されない例としては、図４Ａ−４Ｂに示すように、簡易な８×８ピクセルのブロック（典型的にはひとつのマクロブロックは４つの８×８ブロックを含む）を移動方向の推定に用いることができる。図５Ａ−５Ｂに示すように、ブロックの最も大きな差異から移動方向を導くことができる。
【００３０】
移動方向はあらゆる適切なやり方で導出されてもよい。限定されない例として、移動方向は先行するピクチャＮ−１内のマクロブロックａと現在のピクチャ内のマクロブロックＡとの間で最も統計的に異なるブロック間を結ぶラインと平行であってもよい。
【００３１】
図５Ａ−５Ｂに示す例では、移動方向Ｍに沿わないマクロブロックｇ、ｂ、ｉ、ｅ、およびｈよりも、移動方向Ｍに沿うマクロブロックｆ、ｃ、およびｄの方に、より重みが割り当てられる。正規化のため、重み係数の総和は定数１に設定されてもよい。すなわち、
【数１】
0005508534.tif 000002
ここでＷｍは所与のマクロブロックｍの重み係数であり、ｍ＝｛ａ，ｂ，ｃ，ｄ，ｅ，ｆ，ｇ，ｈ，ｉ｝、０．０≦Ｗｍ≦１．０である。
【００３２】
重み付き係数が割り当てられると、重み付き総和が計算される。例えば、マクロブロックのピクセル値の平均値（他の統計データも同様に用いることができる）をμｍと表記して用いると仮定すると、重み付き総和Ｅは以下の式で与えられる。
【数２】
0005508534.tif 000003
【００３３】
ひとたび重み付き総和Ｅが計算されると、符号２０８に示すように、マクロブロックＡの平均値μＡと重み付き総和Ｅとの差分値が計算される。差分値が所定のしきい値（ＴＨ）を超える場合、マクロブロックＡはシーン切替マクロブロックとしてカウントされ、双でなければそのマクロブロックはシーン切替ではないマクロブロックである。閾値ＴＨはピクチャのコンテンツに基づいてピクチャ毎に更新してもよいことは留意すべきである。
【００３４】
現在のピクチャＮ内の各マクロブロックについてシーン切替かシーン切替でないかの決定がなされた後、現在のピクチャＮ内のシーン切替マクロブロックの数がカウントされる。シーン切替マクロブロックの数に基づいてピクチャフレームがシーン切替であるか否かを決定することが可能となる。限定されない例として、本アルゴリズムはこの決定に際に、シーン切替マクロブロックの数が現在のピクチャＮ内のマクロブロックの中で過半数（majority）を占めるか否か、または、シーン切替マクロブロックの数が本ピクチャ用の所定のしきい値よりも大きいか否かに基づいてもよい。図２Ａに図示する例では、シーン切替マクロブロックの数を増加させることで、シーン切替マクロブロックの集計が実行される。例えば、符号２１０においてあるマクロブロックがシーン切替マクロブロックであると決定されると、符号２１２において数が増加される。符号２１４において集計が閾値を超えると、符号２１６においてそのピクチャはシーン切替ピクチャとみなされ、それ以上のシーン切替マクロブロックの計算は実行されない。符号２１０においてマクロブロックがシーン切替マクロブロックでないことが分かり、符号２１８においてマクロブロックが最後のマクロブロックであり、かつ、符号２１４において集計が閾値以下を維持する場合、符号２２０において現在のピクチャＮはシーン切替ピクチャでないと判断される。そうでなければ、現在のピクチャ内の次のマクロブロックについて処理を繰り返す。ひとたび現在のピクチャ内の各マクロブロックについて処理が繰り返されると、後続のピクチャＮ＋１について処理が繰り返す。現在のピクチャＮ内の各マクロブロックについて計算されるμＭの値は、ピクチャＮ＋１の先行ピクチャであるピクチャＮの統計的総和Ｅの計算のために格納されてもよい。
【００３５】
ひとたび現在のピクチャがシーン切替ピクチャであるか否かの決定がなされると、現在のピクチャが、例えばソフトウェアエンコーダを用いて符号化される。アルゴリズム２００は、現在のピクチャがシーン切替を含んでいるか否かを示す情報を格納するか、転送する。エンコーダは現在のピクチャを符号化するときにこの情報を用いる。例えば、現在のピクチャがシーン切替ピクチャであることをその情報が示している場合、エンコーダは現在のピクチャをＩフレームとして符号化する。そうでない場合、エンコーダはそのピクチャをＰフレームまたはＢフレームとして符号化する。
【００３６】
上述したアルゴリズムは適切なコンピュータ装置上で実装されてもよい。図６は、上述したピクチャ符号化のためのシーン切替検出の実装に用いられるコンピュータ装置６００を例示するブロック図である。装置６００は概して、プロセッサモジュール６０１およびメモリ６０２を含む。プロセッサモジュール６０１は、１以上のプロセッサコアを含んでもよい。複数のプロセッサモジュールを用いるプロセッサシステムの一例はセルプロセッサである。セルプロセッサの例は、例えば、http://www-306.ibm.com/chips/techlib/techlib.nsf/techdocs/1AEEE1270EA2776387257060006E61BA/$file/CBEA_01_pub.pdfで参照可能な「Cell Broadband Engine Architecture」に詳細が説明されており、参照によりここに組み入れる。
【００３７】
メモリ６０２は、例えばＲＡＭ、ＤＲＡＭ、ＲＯＭまたはそれと類似する集積回路の形式であってもよい。メモリは、すべてのプロセッサモジュール６０１からアクセス可能なメインメモリであってもよい。ある実施の形態では、プロセッサモジュール６０１は、複数のプロセッサコアと、各コアに関連づけられたローカルメモリを含んでもよい。符号化プログラム６０３は、プロセッサモジュール６０１上で実行可能なプロセッサ読み取り可能な命令の形式でメインメモリ６０２内に格納されてもよい。符号化プログラム６０３は、ピクチャを圧縮信号データに符号化すること、および／または圧縮信号データを復号するように構成されてもよい。限定されない例として、符号化プログラム６０３は、同一出願人による同時係属中の米国特許出願公開第２００９００１０３３８号（参照により開示内容全体をここに組み入れる）に説明されているように構成されてもよい。符号化プログラム６０３所与のピクチャがシーン切替ピクチャであるか否かの情報を受け取り、上述のように現在のピクチャがシーン切替ピクチャであるか否かに部分的に基づいて、そのピクチャをＩフレーム、Ｐフレーム、またはＢフレームとして符号化するように構成されてもよい。
【００３８】
シーン切替検出プログラム６０４もまた、メモリ６０２に格納されてもよい。シーン切替検出プログラムは、プロセッサモジュール６０１で実行されたときに、例えば図２Ａにしたがって上述したアルゴリズム２００としてシーン切替検出を実装する命令を含んでもよい。符号化プログラム６０３およびシーン切替検出プログラム６０４は、例えばＣ、Ｃ＋＋、ＪＡＶＡ（登録商標）、アセンブリ言語、ＭＡＴＬＡＢ、ＦＯＲＴＬＡＮ、および他のいくつかの言語等の、プロセッサ読み取り可能な適切な言語で記述されてもよい。
【００３９】
入力データ６０７はメモリ６０２に格納される。そのような入力データは、例えば符号化されたビデオピクチャやそれらの一部などの、バッファリングされたストリーミングデータの一部を含んでもよい。符号化プログラム６０３および／またはシーン切替検出プログラム６０４の実行の間、プログラムコードおよび／またはデータ６０７の一部は、メモリ６０２中、またはマルチプロセッサコアによって並列処理されるためにプロセッサコアのローカルストアにロードされる。限定されない例として、符号化の前や符号化の中間段階において、入力データ６０７はビデオピクチャやそれらの部分領域を含んでもよい。これらの様々な部分領域は１以上のバッファに格納されてもよい。具体的には、部分領域はメモリ６０２内に実装された出力ピクチャバッファ内に格納されてもよい。
【００４０】
装置６００はさらに、入出力（Ｉ／Ｏ）装置６１１、電源（Ｐ／Ｓ）６１２、クロック（ＣＬＫ）６１３およびキャッシュ６１４などの公知のサポート機能６１０を備えてもよい。装置６００はオプションとして、プログラムおよび／またはデータを格納するためのディスクドライブ、ＣＤ−ＲＯＭドライブ、テープドライブなどの大容量記憶装置６１５を備えてもよい。装置６００はまた、オプションとして、装置６００とユーザの相互作用を容易にするために、ディスプレイユニット６１６とユーザインタフェースユニット６１８を備えてもよい。ディスプレイユニット６１６は、テキスト、数値、グラフィカルシンボルや画像を表示する陰極線管（ＣＲＴ）、またはフラットパネルスクリーンの形態であってもよい。ユーザインタフェース６１８は、キーボード、マウス、ジョイスティック、ライトペンや他の装置を備えてもよく、これらは、グラフィカルユーザインタフェース（ＧＵＩ）と併せて使われてもよい。装置６００はまた、ネットワークインタフェース６２０を含み、これにより、当該装置がインターネットのようなネットワーク上で他の装置と通信することが可能になる。これらの構成要素はハードウェア、ソフトウェア、ファームウェアまたはこれらの２以上の組み合わせによって実装される。
【００４１】
装置６００の複数のプロセッサを用いて並列処理を効率化する付加的な方法が多数ある。たとえば、２以上のプロセッサ上でコードを複製することによって、処理ループを「アンロール（unroll）」し、各プロセッサに異なるデータ部分を処理するためにコードを実装させることができる。そのような実装によって、ループ設定に関連するレイテンシを回避することができる。
【００４２】
並列処理を実装することができるマルチプロセッサシステムの一つの例は、セルプロセッサとして知られる。セルプロセッサとして分類できる異なるプロセッサアーキテクチャが多数ある。例示であり、限定するものではないが、図７は、セルプロセッサ７００の一つのありうる構成を示す。セルプロセッサ７００は、メインメモリ７０２、一つのＰＰＥ（power processor element）７０４、および８個のＳＰＥ（synergistic processor element）７０６を備える。あるいは、セルプロセッサ７００は、任意の数のＳＰＥで構成されてもよい。図７に関し、メモリ７０２、ＰＰＥ７０４、および複数のＳＰＥ７０６は、リング型のエレメント・インターコネクト・バス７１０上でお互いに通信可能であり、また、Ｉ／Ｏデバイス７０８とも通信可能である。メモリ７０２は、上述した入力データ６０７と同じような特性を持つ入力データ７０３、上述した符号化プログラム６０３と同じような特性を持つ符号化プログラム７０９、および上述したシーン切替検出プログラム６０４と同じような特性を持つシーン切替検出プログラム７１１を含む。少なくともＳＰＥ７０６のひとつは、ローカルストア（ＬＳ）内にシーン切替検出命令７０５、および／または、例えば上述したように並列で処理されるためのバッファリングされた入力データの一部を含む。ＰＰＥは、Ｌ１キャッシュ内に上述した符号化プログラム６０３と同じ特性を持つコード命令７０７を含む。命令７０５およびデータ７０７は、ＳＰＥおよびＰＰＥが必要なときにアクセスするためにメモリ７０２にも格納されてもよい。
【００４３】
例示として、ＰＰＥ７０４は、関連するキャッシュを持った６４ビットのパワーＰＣプロセッサユニット（ＰＰＵ）であってもよい。ＰＰＥ７０４はオプションとしてベクタマルチメディア拡張ユニットを含んでもよい。各ＳＰＥ７０６は、ＳＰＵ（synergistic processor unit）とローカルストア（ＬＳ）を含む。ある実装では、ローカルストアは、たとえば、コードとデータ用のおよそ２５６キロバイトのメモリ容量をもってもよい。ＳＰＵは、典型的にはシステム管理機能を実行しないという点で、ＰＰＵよりも単純な計算ユニットである。ＳＰＵは、ＳＩＭＤ（single instruction, multiple data）機能を有し、典型的にはデータ処理を行い、割り当てられたタスクを行うために（ＰＰＥにより設定されたアクセス特性にしたがって）要求されたデータ転送を開始する。ＳＰＵにより、システム７００は、より高い計算ユニット密度を要求するアプリケーションを実装し、提供された命令セットを効率良く利用することができるようになる。ＰＰＥ７０４によって管理されるシステム７００の相当数のＳＰＥによって、広範囲のアプリケーションにわたって費用対効果の高い処理が可能になる。例示として、セルプロセッサ７００は、セル・ブロードバンド・エンジン・アーキテクチャ（ＣＢＥＡ）準拠のプロセッサとして知られるアーキテクチャで特徴づけられる。ＣＢＥＡ準拠のアーキテクチャにおいて、複数のＰＰＥはＰＰＥグループに結合され、複数のＳＰＥはＳＰＥグループに結合されてもよい。例示のために、セルプロセッサ７００は、一つのＳＰＥと一つのＰＰＥをもつ一つのＳＰＥグループと一つのＰＰＥグループだけをもつとして図示している。別の構成として、セルプロセッサは、ＰＰＥの複数のグループとＳＰＥの複数のグループを含むことができる。ＣＢＥＡ準拠のプロセッサは、たとえば、「セル・ブロードバンド・エンジン・アーキテクチャ」に詳細に記述されており、これは、http://www-306.ibm.com/chips/techlib/techlib.nsf/techdocs/1AEEE1270EA2776387257060006E61BA/$file/CBEA_01_pub.pdfにおいてオンラインで利用可能であり、その内容を参照によりここに取り込む。
【００４４】
本発明の実施の形態は、シーン切替検出およびストリーミングビデオのようなストリーミングデータの符号化の並列処理のためのシステムおよび方法を提供する。このような実施の形態は、ほとんどのビデオエンコーダ、具体的にはＨ．２６４／ＡＶＣエンコーダおよび特にモジュールとしてビデオエンコーダを持つ製品に適用される。限定はしないが、そのような製品の例はゲームコンソール、ＤＶＤプレイヤ、ソフトウェア（ＰＣ）ビデオエンコーダ／プレイヤ、携帯電話上のビデオ等を含む。別の実施の形態として、このようなシステムおよび方法を、ビデオ以外の他のストリーミングデータの符号化に適用してもよい。
【００４５】
そのような実施の形態に例は、ストリーミング音声データ、グラフィックレンダリングストリーム、静止画およびＸＭＬ文書の符号化のためのシステムおよび方法を含む。本発明の実施の形態は、ビデオゲームを記録したり、携帯ゲーム装置にゲームの画像をストリーミングしたり、ネットワークを介した複数のゲームシステムによってゲームをアップロードや共有したりするのに好ましい。
【００４６】
上述したように、本発明の実施の形態によれば、既存のビデオ符号化標準を修正して一連のビデオピクチャ内の所与のピクチャを圧縮および符号化する前に、シーン切替検出をすることが可能となる。ビデオ画像を符号化する際のシーン切替検出の観点を例に説明したが、ＪＰＥＧのような静止画像の符号化に本発明の実施の形態を利用してもよい。
【００４７】
他の実施の形態によれば、上述した画像符号化と連動するシーン切替検出を実行する命令は、コンピュータ読み出し可能な記録媒体に格納されてもよい。限定されない例として、図８は、コンピュータ読み出し可能な記録媒体８００を例示する。記録媒体は、コンピュータプロセッシング装置から読み出して解釈可能な形で、コンピュータ読み出し可能な命令を含む。限定されない例として、コンピュータ読み出し可能な記録媒体８００は、ＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）、ハードディスクドライ等のコンピュータ読み出し可能なストレージディスク、またはリムーバブルディスクである。さらに、コンピュータ読み出し可能な記録媒体８００は、フラッシュメモリ装置、コンピュータ読み出し可能なテープ、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、Ｂｌｕ−ｒａｙ、ＨＤ−ＤＶＤ、ＵＭＤ、またはその他の光学記録媒体であってもよい。
【００４８】
記録媒体８００は、プロセッサによって実行されるとシーン切替検出を実施するように構成されたシーン切替検出命令８０１を含む。シーン切替検出命令８０１は、現在のピクチャ内の各マクロブロックについて統計量μｍの計算を実装する１以上の統計計算命令８０２を含む。加えて、シーン切替検出命令は、先行するピクチャ内の対応する位置にあるマクロブロック周辺にウィンドウを規定するように構成された１以上のウィンドウ規定命令８０３を含む。さらに、シーン切替検出命令８０１は、ウィンドウ内のマクロブロック全体にわたって統計的総和Ｅを計算する１以上の統計的総和命令８０４を含む。その上、シーン切替検出命令８０１は、現在のピクチャ内の所与のマクロブロックにおけるμｍと統計的総和Ｅとの差分を計算するように構成された差分計算命令８０５を含む。シーン切替検出命令８０１はまた、Ｅとμｍと差分を用いて所与のマクロブロックがシーン切替マクロブロックか否かを決定するシーン切替マクロブロック決定命令８０６も含む。シーン切替検出命令８０１はまた、いくつかのシーン切替マクロブロックを用いて現在のピクチャがシーン切替ピクチャであるか否かを決定するシーン切替マクロブロックカウント命令８０７も含む。
【００４９】
記録媒体８００は、現在のピクチャがシーン切替ピクチャであると決定されたか否かに部分的に基づいて、そのピクチャをＩフレーム、ＩＤＲフレーム、Ｐフレーム、またはＢフレームとして符号化するように構成された１以上のピクチャ符号化命令８１０をオプションとして含んでもよい。
【００５０】
上記は、本発明の好ましい実施の形態の完全な説明であるが、種々の代替、変更及び等価物を用いることができる。したがって、本発明の範囲は、上記の説明を参照して決定されるべきではなく、添付された特許請求の範囲をそれらと等価な範囲の全てとともに参照して決定されるべきである。ここで記述される全ての特徴は、好ましいか否かにかかわらず、ここで記述される他の全ての特徴に結合されてもよい。特許請求の範囲において、不定冠詞に続くものは、別段の明示がない限り、１以上の事項の数量をさす。添付された特許請求の範囲は、「〜するための手段」という語句を用いて明示的に限定されない限り、ミーンズプラスファンクションの限定を含むものと解釈されるべきではない。
【図１Ａ】
0005508534.tif 000004
【図１Ｂ】
0005508534.tif 000005
【図２Ａ】
0005508534.tif 000006
【図２Ｂ】
0005508534.tif 000007
【図２Ｃ】
0005508534.tif 000008
【図３Ａ】
0005508534.tif 000009
【図３Ｂ】
0005508534.tif 000010
【図３Ｃ】
0005508534.tif 000011
【図４Ａ】
0005508534.tif 000012
【図４Ｂ】
0005508534.tif 000013
【図５Ａ】
0005508534.tif 000014
【図５Ｂ】
0005508534.tif 000015
【図６】
0005508534.tif 000016
【図７】
0005508534.tif 000017
【図８】
0005508534.tif 000018