(57)【要約】  映像エンコーダ／デコーダは、１行または連続した複数行のマクロブロック（スライスと呼ぶ）を含む単位の形とすることができる、独立に復号化可能な部分ピクチャ単位を提供するビットストリーム構文を使用する。このスライス層により、エラー回復力と圧縮効率の柔軟な組合せが得られる。スライス層は、効率的なアドレッシング機構（たとえば、スライス層の開始マクロブロック行を指定する構文要素）、ならびにピクチャヘッダ情報を最適に再送信するための効率的な機構を符号化する。スライス層は、スライス境界をまたぐすべての形の予測、オーバラップ、およびループフィルタリングを使用不能にすることによって、復号化および再構築の独立性をもたらす。これにより、スライス内モードで符号化されたスライスを、ピクチャの他の領域内のエラーとは無関係に、エラーなしで再構築することができる。【特許請求の範囲】
【請求項１】
映像および画像を復号化する方法であって、
符号化されたビットストリームから、少なくともピクチャ層、任意の独立に復号化可能な部分ピクチャ単位、およびマクロブロック層を備える構文階層を有するピクチャを復号化することであって、任意の独立に復号化可能な部分ピクチャ単位の符号化構文が、前記単位のアドレスと、ピクチャヘッダ情報が前記単位内で繰り返されるかどうかについての指示とを通知することと、
前記独立に復号化可能な部分ピクチャ単位が含まれる場合、
前記ピクチャヘッダ情報が前記単位内で繰り返されるかどうかについての前記通知された指示を復号化することと、
前記ピクチャヘッダ情報が繰り返されると指示された場合に前記ピクチャヘッダ情報を復号化することと、
前記通知されたアドレスを復号化することと、
前記ピクチャ内の、前記通知されたアドレスによって指示された位置にある前記部分ピクチャ単位を再構築することと
を備えることを特徴とする方法。
【請求項２】
前記部分ピクチャ単位は、前記ピクチャの少なくとも１行の連続したマクロブロックを含むスライスであることを特徴とする請求項１に記載の方法。
【請求項３】
前記符号化構文は、前記アドレスを前記スライスのマクロブロック行インデックスとして通知することを特徴とする請求項２に記載の方法。
【請求項４】
前記符号化構文は、前記ピクチャヘッダ情報が前記単位内で繰り返されるかどうかについての前記指示を１ビットのフラグとして通知することを特徴とする請求項１に記載の方法。
【請求項５】
前記部分ピクチャ単位の境界エッジを除く、前記部分ピクチャ単位内の少なくともいくつかのブロックエッジに対してオーバラップ平滑化を実施することをさらに備えることを特徴とする請求項１に記載の方法。
【請求項６】
前記部分ピクチャ単位の境界エッジを除く、前記部分ピクチャ単位内の少なくともいくつかのブロックエッジのデブロックフィルタリングを実施することをさらに備えることを特徴とする請求項１に記載の方法。
【請求項７】
前記部分ピクチャ単位の復号化を開始した後（ｕｐｏｎ）、予測符号化パラメータをリセットすることをさらに備えることを特徴とする請求項１に記載の方法。
【請求項８】
画像または映像を符号化／復号化する方法であって、
少なくとも１つの独立に復号化可能な部分ピクチャ単位内のピクチャを符号化／復号化することと、
前記少なくとも１つの独立に復号化可能な部分ピクチャ単位のうちのそれぞれの単位のピクチャ内容情報の符号化／復号化の開始時に、予測符号化パラメータをリセットすることと
を備えることを特徴とする方法。
【請求項９】
一意の開始コードパターンを使用して、エンコーダからデコーダに、前記少なくとも１つの独立に復号化可能な部分ピクチャ単位のうちのそれぞれの単位の開始を通知することをさらに備えることを特徴とする請求項８に記載の方法。
【請求項１０】
前記ピクチャ内の前記それぞれの部分ピクチャ単位の開始マクロブロック位置に関するアドレスパラメータを使用して、エンコーダからデコーダに、前記少なくとも１つの独立に復号化可能な部分ピクチャ単位のうちのそれぞれの単位の位置を通知することをさらに備えることを特徴とする請求項８に記載の方法。
【請求項１１】
前記それぞれの部分ピクチャ単位は、前記ピクチャ内の少なくとも完全な１行の連続したマクロブロックを含むスライスであり、前記アドレスパラメータは、前記スライスの開始マクロブロック行インデックスであることを特徴とする請求項１０に記載の方法。
【請求項１２】
エンコーダからデコーダに、前記少なくとも１つの独立に復号化可能な部分ピクチャ単位のうちのそれぞれの単位内でピクチャヘッダ情報が繰り返されるかどうかについての指示を通知することをさらに備えることを特徴とする請求項８に記載の方法。
【請求項１３】
前記指示はフラグ値であることを特徴とする請求項１２に記載の方法。
【請求項１４】
前記それぞれの部分ピクチャの外部にあるピクチャ内容とは独立に、前記それぞれの部分ピクチャ単位のピクチャ内容を再構築することをさらに備えることを特徴とする請求項８に記載の方法。
【請求項１５】
前記独立に再構築することは、前記それぞれの部分ピクチャ単位の境界エッジを除く、前記それぞれの部分ピクチャ単位の前記ピクチャ内容中のブロックエッジのデブロッキングを実施することを備えることを特徴とする請求項１４に記載の方法。
【請求項１６】
前記独立に再構築することは、前記それぞれの部分ピクチャ単位の境界エッジを除く、前記それぞれの部分ピクチャ単位の前記ピクチャ内容中のブロックエッジのオーバラップ平滑化を実施することを備えることを特徴とする請求項１４に記載の方法。
【請求項１７】
独立に復号化可能な部分ピクチャ単位を使用して符号化された画像または映像ビットストリームを符号化／復号化する方法を実施するための、処理装置によって実行可能なソフトウェアモジュールを有する、少なくとも１つのコンピュータ読み取り可能なプログラムを保持する記録媒体であって、前記方法が、
前記ビットストリーム内の符号化されたピクチャに対して部分ピクチャ単位符号化が実施されるかどうかを決定することと、
それが実施される場合、前記部分ピクチャ単位の外部にあるピクチャ内容とは無関係に、各部分ピクチャ単位内のピクチャ内容の符号化／復号化および再構築を実施することとを備えることを特徴とする記録媒体。
【請求項１８】
前記方法は、
前記ピクチャ内のそれぞれの部分ピクチャ単位の位置を通知する前記ビットストリーム中の構文要素を解釈することと、
前記位置における前記それぞれの部分ピクチャ内容の前記ピクチャ内容を再構築することとをさらに備えることを特徴とする請求項１７に記載の少なくとも１つのコンピュータ読み取り可能なプログラムを保持する記録媒体。
【請求項１９】
前記構文要素は、前記ピクチャ内の前記それぞれの部分ピクチャ単位の開始マクロブロック位置に関係するアドレスパラメータを備えることを特徴とする請求項１８に記載の少なくとも１つのコンピュータ読み取り可能なプログラムを保持する記録媒体。
【請求項２０】
前記それぞれの部分ピクチャ単位は、前記ピクチャ内の少なくとも完全な１行の連続したマクロブロックを含むスライスであり、前記アドレスパラメータは、前記スライスの開始マクロブロック行インデックスであることを特徴とする請求項１９に記載の少なくとも１つのコンピュータ読み取り可能なプログラムを保持する記録媒体。
【請求項２１】
前記方法は、それぞれの部分ピクチャ単位内でピクチャヘッダ情報が繰り返されるかどうかについての指示を通知する前記ビットストリーム中の構文要素を解釈することをさらに備えることを特徴とする請求項１７に記載の少なくとも１つのコンピュータ読み取り可能なプログラムを保持する記録媒体。
【請求項２２】
前記指示はフラグ値であることを特徴とする請求項２１に記載の少なくとも１つのコンピュータ読み取り可能なプログラムを保持する記録媒体。
【請求項２３】
前記方法は、前記それぞれの部分ピクチャ単位の境界エッジを除く、前記それぞれの部分ピクチャ単位の前記ピクチャ内容中のブロックエッジのデブロッキングを実施することを備えることを特徴とする請求項１７に記載の少なくとも１つのコンピュータ読み取り可能なプログラムを保持する記録媒体。
【請求項２４】
前記方法は、前記それぞれの部分ピクチャ単位の境界エッジを除く、前記それぞれの部分ピクチャ単位の前記ピクチャ内容中のブロックエッジのオーバラップフィルタリングを実施することを備えることを特徴とする請求項１７に記載の少なくとも１つのコンピュータ読み取り可能なプログラムを保持する記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、映像、画像、およびその他のデジタル媒体の内容をデジタル的に符号化し、復号化し、処理する技術に関する。
【背景技術】
【０００２】
デジタル映像は、大量の記憶容量と伝送容量を消費する。典型的な現信号のデジタル映像シーケンスは、毎秒１５または３０フレームを含む。各フレームは、数万または数十万の画素（ペル（ｐｅｌ）とも呼ばれる）を含み得る。各画素は、ピクチャのごく小さな要素を表す。原信号の形式では、コンピュータは一般に、３つのサンプルで１組の合計２４ビットで画素を表す。たとえば、１つの画素は、その画素のグレースケール成分を規定する１つの８ビット輝度サンプル（ルマ（ｌｕｍａ）サンプルとも呼ばれる）と、その画素の色成分を規定する２つの８ビットクロミナンスサンプル値（クロマ（ｃｈｒｏｍａ）サンプルとも呼ばれる）とを含み得る。したがって、通常の原信号のデジタル映像シーケンスの毎秒ビット数、すなわちビットレートは、毎秒５００万ビット以上となり得る。
【０００３】
多くのコンピュータおよびコンピュータネットワークは、生デジタル映像を処理するためのリソースが不足している。この理由で、技術者は圧縮（コード化または符号化とも呼ばれる）を使用し、デジタル映像のビットレートを低減している。圧縮では、映像を低ビットレート形式に変換することにより、映像を記憶し伝送するコストが低減される。伸張（復号化とも呼ばれる）では、圧縮形式から元の映像のバージョンを再構築する。「コーデック」とは、エンコーダ／デコーダシステムのことである。圧縮は、映像の品質が低下しないが、映像データの変動の固有量（エントロピーと呼ばれることもある）によってビットレートの低減が制限される、可逆式（ｌｏｓｓｌｅｓｓ）とすることが可能である。あるいは、圧縮は、映像の品質が低下するが、実現可能なビットレートの低減はより劇的となる、非可逆式（ｌｏｓｓｙ）とすることも可能である。非可逆圧縮で情報の近似を確立、可逆圧縮技術を適用してその近似が表されるシステム設計において、非可逆圧縮はしばしば可逆圧縮と共に使用される。
【０００４】
一般に、映像圧縮技術には、「ピクチャ内」圧縮および「ピクチャ間」圧縮が含まれ、その際、ピクチャは、たとえばプログレッシブ走査映像フレーム、インターレース映像フレーム（それぞれの映像フィールドの線を交互に有する）、またはインターレース映像フィールドである。プログレッシブフレームの場合、ピクチャ内圧縮技術では、個々のフレーム（一般にＩフレームまたはキーフレームと呼ばれる）を圧縮し、ピクチャ間圧縮技術では、前および／または後のフレーム（一般に参照フレームまたはアンカーフレームと呼ばれる）を参照して、フレーム（一般に予測フレーム、Ｐフレーム、またはＢフレームと呼ばれる）を圧縮する。
【０００５】
予測フレームは、マクロブロックと呼ばれる領域に分割することができる。参照フレーム内のマクロブロックに対するマッチング領域は、そのマクロブロックに対する動きベクトル情報を送信することによって指定される。動きベクトルは、画素の現マクロブロックに対する予測子としてその画素が使用される参照フレーム内の領域の位置を示す。現マクロブロック（またはそのブロック）とマクロ予測子の間には、しばしば誤差信号または残差と呼ばれる、画素間の差分が生じる。通常、この誤差信号は、元の信号よりも小さなエントロピーを有する。したがって、その情報を、より低いレートで符号化することが可能である。エンコーダは、予測子として使用するために、１つまたは複数の参照フレーム内のマッチング領域を探索することにより、フレームのある領域に対する動きベクトルを決定することによって、動き推定を実施する。エンコーダまたはデコーダは、動きベクトルを適用して、１つまたは複数の参照フレーム内で予測子を見つけることによって、動き補償を実施する。
【０００６】
マクロブロックに対する動きベクトル値は、しばしば空間的に周りを囲んでいるマクロブロックに対する動きベクトルと相関関係がある。したがって、動きベクトル情報を送信するのに使用されるデータの圧縮は、ある動きベクトルとそれと隣接する動きベクトルから形成された動きベクトル予測子との間の差分を符号化することによって行うことが可能である。
【０００７】
映像圧縮技術ではよく、画素のブロックまたは残差など他の空間領域映像データが、変換領域データに変換される。この変換領域データは、しばしば周波数領域（すなわちスペクトル）データである。得られるスペクトルデータ係数のブロックを、量子化し、その後、エントロピー符号化することができる。
【０００８】
得られた映像が表示される前にデータを伸張するとき、デコーダは一般に、圧縮動作の逆を行う。たとえば、デコーダは、データを伸張しながら、エントロピー復号化、逆量子化、および逆変換を実行することができる。動き補償を使用すると、デコーダ（およびエンコーダ）は、前に再構築された１つまたは複数のフレーム（これらはここで、参照フレームとして使用される）からフレームを再構築し、後のフレームを動き補償するために、新規に再構築されたフレームを参照フレームとして使用することができる。
【０００９】
デジタル的に符号化された映像に対する多くの典型的な使用シナリオでは、装置間で、また多くの場合、地理的に離れた場所間で符号化済みの映像を伝送する。さらに、一般に使用される多くのデータ伝送システムでは、パケットベースの伝送プロトコルを使用する。このプロトコルでは、データ伝送は、「パケット」と呼ばれる別々に経路指定される単位に分割される。デジタル映像を運搬するこれら様々な伝送システムでは、しばしばノイズその他の伝送エラー源があり、「パケット損失」が起こり得る。こうしたエラーおよびパケット損失により、個々のフレーム、あるいは映像シーケンスの関連した複数のフレームの復号に失敗する恐れがある。
【００１０】
したがって、映像シーケンスにおけるピクチャの部分領域を、独立に復号可能な単位として符号化するのが望ましいことがある。これにより、映像ストリームのパケット化が可能になる。さらに、このために、圧縮映像ビットストリームにおける冗長性が増大し、伝送エラーおよびパケット損失に対する回復力が向上する。たとえば、伝送エラーまたはパケット損失による復号化損失を、映像シーケンスのピクチャ全体ではなく、部分領域に制限することが可能である。しかし、この回復力は、圧縮効率のコストを犠牲にして実現される。
【００１１】
非常に多くの会社が映像コーデックを生み出してきた。たとえば、マイクロソフト（登録商標）社は、Ｗｉｎｄｏｗｓ（登録商標）  Ｍｅｄｉａ  Ｖｉｄｅｏ  ８向けにリリースされている映像エンコーダおよびデコーダを生み出した。これらの製品以外に、多くの国際規格で、圧縮映像情報向けの映像デコーダおよびフォーマットの側面を指定している。これらの規格には、Ｈ．２６１、ＭＰＥＧ−１、Ｈ．２６２、Ｈ．２６３、およびＭＰＥＧ−４の各規格が含まれる。これらの規格では、直接または暗示的に、ある種のエンコーダの詳細も指定されているが、他のエンコーダの詳細は指定されていない。これらの製品および規格は、上述の圧縮および伸張技術の様々な組合せを使用している（または使用をサポートしている）。具体的には、これらの製品および規格は、一部のピクチャを単位とする符号化のための様々な技術を提供している。
【００１２】
そのような技術の１つでは、映像シーケンス内のあるフレームを複数のスライスに分割する。１つのスライスは、１行または連続した複数行のマクロブロックを、元の左から右の順で含むものと定義される。スライスは、行の最初のマクロブロックから始まり、同じまたは別の行の最後のマクロブロックで終わる。
【００１３】
様々な標準規格、たとえば、ＭＰＥＧ−１、ＭＰＥＧ−２、Ｈ．２６３（ほぼスライスと同等であるＧＯＢを有する、またはＡｎｎｅｘ  Ｋのスライス構造符号化モードを有する）、ＭＰＥＧ−４パート２、およびＨ．２６４／ＪＶＴ／ＭＰＥＧ−４パートｌ０は、すべてその構文の一部としてスライスを有している。とりわけ、これらのすべてが、エラー／損失ロバストネスの理由で、フレーム内予測および動きベクトル予測およびスライス境界をまたぐ他の大部分の形式の予測を無効にしている。特に、Ｈ．２６３（Ａｎｎｅｘ  Ｊ）およびＨ．２６４／ＪＶＴだけが、ループフィルタを含む。Ｈ．２６３のインターレースの処理は、かなり原始的（フィールド符号化でＡｎｎｅｘ  Ｗの増補の拡張指示だけを使用する）である。Ｈ．２６４は、エラーに対してより強靭なヘッダ構造を有し、ループフィルタリングがスライス境界をまたいで適用されるかどうかを、エンコーダが選択できるようにする。
【発明の開示】
【発明が解決しようとする課題】
【００１４】
これら様々な映像復号化規格によるスライスの実装ではそれぞれ、回復力と符号化効率のバランスが異なる。
【課題を解決するための手段】
【００１５】
本明細書に記載される映像コーデックおよびビットストリーム構文は、スライス層を含んでおり、スライス層は、柔軟性のあるように設計され、エラー回復力と圧縮効率を有効に両立させる。このスライス層は、以下の主な機能を提供する。
ａ）プログレッシブ、インターレースフレーム、およびインターレースフィールド符号化方法で動作する効率的なスライスアドレッシング機構
ｂ）スライス層中のピクチャヘッダを再送信するための柔軟で効率的な機構
ｃ）スライス内モードで符号化されたスライスが、ピクチャの他の領域内のエラーとは無関係に、エラーなしで再構築できるように、スライス境界をまたぐすべての形の予測、オーバラップ、およびループフィルタリングを無効にすることによる復号化独立性
本発明のさらなる特徴および利点は、実施形態についての以下の詳細な説明を添付の図面と併せ読めば明らかになろう。
【発明を実施するための最良の形態】
【００１６】
以下に、柔軟性のあるように設計され、エラー回復力と圧縮効率の効果的組合せをもたらす、映像コーデックおよびビットストリーム構文におけるスライス層の実装形態について説明する。例として、スライス層符号化を、画像または映像のエンコーダおよびデコーダ内で適用する。したがって、スライス層符号化を、汎用の画像または映像のエンコーダおよびデコーダの文脈で説明するが、その代わりに、以下に述べるこの例示的なビットストリーム構文とは細部が変わり得る、他の様々な画像および映像コーデックのビットストリーム構文にそれを組み込むことも可能である。
（１．汎用映像エンコーダおよびデコーダ）
図１は汎用映像エンコーダ（１００）のブロック図で、図２は汎用映像デコーダ（２００）のブロック図であり、これらのエンコーダおよびデコーダには、ＷＭＶ９／ＶＣ−９変換を組み込むことが可能である。
【００１７】
図示されているエンコーダ内およびデコーダ内のモジュール間の関係は、エンコーダおよびデコーダにおける情報の主なフローを示している。わかりやすいように、他の関係は示していない。特に、図１および図２は、映像シーケンス、フレーム、マクロブロック、ブロックなどに使用されるエンコーダ設定、モード、テーブルなどを示す副次的情報は通常示さない。そのような副次的情報は、一般に副次的情報のエントロピー符号化の後に、出力ビットストリームで送信される。出力ビットストリームのフォーマットは、Ｗｉｎｄｏｗｓ（登録商標）Ｍｅｄｉａ  Ｖｉｄｅｏフォーマットまたは他のフォーマットとすることができる。
【００１８】
エンコーダ（１００）およびデコーダ（２００）はブロックベースであり、それぞれのマクロブロックが４つの８×８輝度ブロック（時々、１つの１６×１６マクロブロックとして扱われる）および２つの８×８クロミナンスブロックを含む、４：２：０のマクロブロックフォーマットを使用する。あるいは、エンコーダ（１００）およびデコーダ（２００）はオブジェクトベースであり、８×８ブロックおよび１６×１６マクロブロックとは異なるマクロブロックまたはブロックフォーマットを使用し、あるいは異なるサイズまたは構成の複数組の画素に対して動作を行う。
【００１９】
所望の圧縮の実装および種類に応じて、エンコーダまたはデコーダのモジュールを追加し、または省略し、または複数モジュールに分割し、または他のモジュールと組み合わせ、かつ／または同様のモジュールで置き換えることが可能である。代替の実施形態では、互いに異なるモジュールおよび／またはモジュールの他の構成を用いるエンコーダまたはデコーダで、上述の技術の１つまたは複数を実施する。
【００２０】
（Ａ．映像エンコーダ）
図１は、一般的な映像エンコーダシステム（１００）である。このエンコーダシステム（１００）は、現フレーム（１０５）を含む一連の映像フレームを受け取り、圧縮映像情報（１９５）を出力として生成する。映像エンコーダの特定の実施形態では通常、変形形態または増補バージョンの汎用エンコーダ（１００）を使用する。
【００２１】
エンコーダシステム（１００）は、予測フレームおよびキーフレームを圧縮する。説明のために、図１に、エンコーダシステム（１００）を通るキーフレーム用の経路および順方向予測フレーム用の経路を示す。エンコーダシステム（１００）の構成要素の多くは、キーフレームおよび予測フレームの両方を圧縮するために使用される。これらの構成要素によって実施される具体的な動作は、圧縮される情報の種類に応じて変わり得る。
【００２２】
予測フレーム（Ｐフレーム、両方向予測のためのＢフレーム、またはフレーム間符号化フレームとも呼ばれる）は、他の１つまたは複数のフレームからの予測（または差分）で表される。予測残差は、予測したフレームと元のフレームとの差である。これとは対照的に、キーフレーム（Ｉフレーム、フレーム内符号化フレームとも呼ばれる）は、他のフレームを参照せずに圧縮される。
【００２３】
現フレーム（１０５）が順方向予測フレームの場合、動き推定部（１１０）が、参照フレームに対する現フレーム（１０５）のマクロブロックまたはその他の複数組の画素の動きを推定する。その参照フレームは、フレーム記憶部（１２０）にバッファされている、再構築された、以前のフレーム（１２５）である。代替の実施形態では、参照フレームがより後のフレームであり、あるいは現フレームが両方向に予測される。動き推定部（１１０）は、動きベクトルなどの動き情報（１１５）を副次的情報として出力する。動き補償部（１３０）が、再構築された前のフレーム（１２５）に動き情報（１１５）を適用して、動き補償済み現フレーム（１３５）を形成する。ただし、予測が完全であることはめったになく、動き補償済み現フレーム（１３５）と元の現フレーム（１０５）との差が予測残差（１４５）となる。あるいは、動き推定部および動き補償部が、別の種類の動き推定／補償を適用する。
【００２４】
周波数変換部（１６０）が、空間領域映像情報を周波数領域（すなわちスペクトル）データに変換する。ブロックベースの映像フレームの場合、周波数変換部（１６０）は、以下のセクションで説明する、離散コサイン変換（「ＤＣＴ」）に類似する性質の変換を適用する。いくつかの実施形態では、キーフレームの場合、周波数変換部（１６０）は、複数ブロックの空間予測残差に周波数変換を適用する。周波数変換部（１６０）は、８×８、８×４、４×８、またはその他のサイズの周波数変換を適用することが可能である。
【００２５】
次に量子化部（１７０）が、複数ブロックのスペクトルデータの係数を量子化する。量子化部は、フレームごとに、または他のものに基づいて変わるステップサイズを用いて、スペクトルデータに均一なスカラー量子化を適用する。あるいは、量子化部は、スペクトルデータの係数に別の種類の量子化、たとえば、均一でない、ベクトルの、または非適応型の量子化を適用し、あるいは周波数変換を使用しないエンコーダシステムで空間領域データを直接量子化する。適応量子化に加えて、エンコーダ（１００）は、コマ落とし(ｆｒａｍｅ  ｄｒｏｐｐｉｎｇ)、適応フィルタリング、またはレート制御のためのその他の技術を使用することが可能である。
【００２６】
後続の動き予測／補償のために再構築された現フレームが必要なとき、逆量子化部（１７６）が、量子化されたスペクトルデータの係数に対して逆量子化を実施する。次いで逆周波数変換部（１６６）が、周波数変換部（１６０）の動作の逆を行い、（予測フレームのための）再構築予測残差または再構築キーフレームを生成する。現フレーム（１０５）がキーフレームであった場合、再構築キーフレームを、再構築現フレーム（図示せず）として扱う。現フレーム（１０５）が予測フレームであった場合、再構築予測残差を動き補償済み現フレーム（１３５）に加えて、再構築現フレームを形成する。フレーム記憶部（１２０）は、次のフレームの予測に使用するために、再構築現フレームをバッファする。いくつかの実施形態では、エンコーダは、再構築フレームにデブロッキングフィルタを適用し、フレームの各ブロックにおける不連続を適応的に平滑化する。
【００２７】
エントロピー符号化部（１８０）が、量子化部（１７０）の出力、ならびにある種の副次的情報（たとえば、動き情報（１１５）、量子化ステップサイズ）を圧縮する。一般的なエントロピー符号化技術には、算術符号化、差分符号化、ハフマン符号化、ランレングス符号化、ＬＺ符号化、辞書型符号化、および以上の組合せが含まれる。エントロピー符号化部（１８０）は、一般に異なる種類の情報（たとえば、ＤＣ係数、ＡＣ係数、異なる種類の副次的情報）には異なる符号化技術を使用しており、特定の符号化技術の範囲内で複数のコードテーブルのうちから選択することが可能である。
【００２８】
エントロピー符号化部（１８０）は、圧縮映像情報（１９５）をバッファ（１９０）に入れる。バッファレベルインジケータが、ビットレート適応モジュールにフィードバックされる。圧縮映像情報（１９５）は、一定の、あるいは比較的一定のビットレートでバッファ（１９０）からすべて読み出され（ｄｅｐｌｅｔｅ）、後続のストリーミングに備えてそのビットレートで記憶される。あるいは、エンコーダシステム（１００）は、圧縮後すぐに圧縮映像情報を流す。
【００２９】
バッファ（１９０）の前または後で、圧縮映像情報（１９５）を、ネットワークを介して伝送するために、チャネル符号化することが可能である。チャネル符号化では、圧縮映像情報（１９５）に対してエラー検出およびエラー訂正を適用することが可能である。
【００３０】
（Ｂ．映像デコーダ）
図２は、一般的な映像デコーダシステム（２００）のブロック図である。このデコーダシステム（２００）は、圧縮された一連の映像フレームに関する情報（２９５）を受け取り、再構築フレーム（２０５）を含む出力を生成する。映像デコーダの特定の実施形態は一般に、汎用デコーダ（２００）の一変形または増補バージョンを使用する。
【００３１】
デコーダシステム（２００）は、予測フレームおよびキーフレームを伸張する。提示の目的で、図２に、デコーダシステム（２００）を通る、キーフレーム用の経路、および順方向予測フレーム用の経路を示す。デコーダシステム（２００）の構成要素の多くは、キーフレームおよび予測フレームの両方を圧縮するのに使用される。これらの構成要素によって実施される具体的な動作は、圧縮される情報の種類に応じて変わり得る。
【００３２】
バッファ（２９０）が圧縮映像シーケンスについての情報（２９５）を受け取り、受け取った情報をエントロピーデコーダ（２８０）で利用可能にする。バッファ（２９０）は、一般に時間が経過してもほぼ一定のレートで情報を受け取り、帯域幅または伝送の短期変動を平滑化するためのジッタバッファを含む。バッファ（２９０）は、再生バッファおよびその他のバッファを含むことも可能である。あるいは、バッファ（２９０）は、可変レートで情報を受け取る。バッファ（２９０）の前または後で、エラーを検出し訂正するために、圧縮映像情報をチャネル符号化し処理することが可能である。
【００３３】
エントロピー復号化部（２８０）は、一般にエンコーダで実施されるエントロピー符号化の逆を適用して、エントロピー符号化された量子化データならびにエントロピー符号化された副次的情報（たとえば、動き情報、量子化ステップサイズ）をエントロピー復号化する。エントロピー復号化技術には、算術復号化、差分復号化、ハフマン復号化、ランレングス復号化、ＬＺ復号化、辞書型復号化、および以上の組合せが含まれる。エントロピー復号化部（２８０）はしばしば、異なる種類の情報（たとえば、ＤＣ係数、ＡＣ係数、異なる種類の副次的情報）には異なる復号化技術を使用しており、特定の復号化技術内で複数のコードテーブルのうちから選択することが可能である。
【００３４】
再構築すべきフレーム（２０５）が順方向予測フレームの場合、動き補償部（２３０）が参照フレーム（２２５）に動き情報（２１５）を適用して、再構築されるフレーム（２０５）の予測（２３５）を形成する。たとえば、動き補償部（２３０）は、マクロブロック動きベクトルを使用して、参照フレーム（２２５）内でマクロブロックを探す。フレームバッファ（２２０）は、参照フレームとして使用するために、前の再構築フレームを記憶する。あるいは、動き補償部は、別の種類の動き補償を適用する。動き補償部による予測が完全であることはめったになく、したがってデコーダ（２００）は予測残差も再構築する。
【００３５】
デコーダが、後続の動き補償のために再構築フレームを必要とするときは、次のフレームを予測するのに使用するために、フレーム記憶部（２２０）が再構築フレームをバッファする。いくつかの実施形態では、エンコーダは、再構築フレームにデブロッキングフィルタを適用して、フレームの各ブロックにおける不連続を適応的に平滑化する。
【００３６】
逆量子化部（２７０）が、エントロピー符号化データを逆量子化する。一般に、逆量子化部は、フレームごとに、またはその他に基づいて変わるステップサイズを用いて、エントロピー符号化データに、一様なスカラー逆量子化を適用する。あるいは、逆量子化部は、そのデータに別の種類の逆量子化、たとえば、非一様な、ベクトルの、または非適応型の量子化を適用し、あるいは逆周波数変換を使用しないデコーダシステムで空間領域データを直接逆量子化する。
【００３７】
逆周波数変換部（２６０）が、量子化された周波数領域データを、空間領域映像情報に変換する。ブロックベースの映像フレームの場合、逆周波数変換部（２６０）は、以下のセクションで説明する逆変換を適用する。いくつかの実施形態では、キーフレームの場合、逆周波数変換部（２６０）は、複数ブロックの空間予測残差に逆周波数変換を適用する。逆周波数変換部（２６０）は、８×８、８×４、４×８、またはその他のサイズの逆周波数変換を適用することが可能である。
【００３８】
（２．スライス層符号化）
上記背景技術のセクションで論じたように、パケット損失および伝送エラーによる復号化失敗を回避しまたは最小限に抑える一技術は、いくつかの従来の映像コーデック規格で提供されるスライスなど、独立に復号化可能な一部のピクチャ単位で符号化することによって、冗長性を高めることである。一般に、スライスは、１行または連続した複数行のマクロブロックを含む、ピクチャの一部である。
【００３９】
スライスの主な狙いの１つは、コーデックで、エラー回復力と圧縮が適切に両立できるようにすることである。その理由は、いくつかの映像コーデック適用例や利用シナリオは、大量のパケット損失を克服しなければならず、したがってエラー回復力を重要視しなければならないからである。他の適用例では、ごく最小限のエラー回復力しか必要とされず、効率的な圧縮が必要とされる。本明細書に記載される映像コーデックのビットストリーム構文の実装形態では、回復力および効率性を最適に選択可能なように設計されたスライス層またはその他の部分ピクチャ単位層が、構文に組み込まれている。これは、以下の方法で行うことができる。
【００４０】
Ａ）スライス内（ｉｎｔｒａ−ｓｌｉｃｅ）の完全再構築：図示した構文のスライス層は、ループフィルタリングなどの動作ならびにオーバラップがスライスをまたいで機能しないように設計されている。したがって、あるスライスのすべてのマクロブロックがスライス内符号化され、かつそのスライスに対応するピクチャヘッダがわかっている場合、そのピクチャの他のスライス（領域）内のエラーとは無関係に、エラーなしで正確にそのスライスを再構築することが可能である。これにより、スライス内の完全な（エラーなしの）再構築を行えるようになり、エラー回復能力が大幅に向上する。
【００４１】
Ｂ）フレームヘッダを繰り返す低コストの方法：ピクチャヘッダ情報を繰り返すと、ピクチャヘッダがデコーダで受け取られるようになる可能性は増大するが、圧縮効率は低下する。図示したスライス層構文は、１ビットのフラグを使用して、あるスライスにおいてそのピクチャヘッダが送信されるかどうかを通知する。これにより、エンコーダは、スライスの数も、ピクチャヘッダが再送信される特定のスライスも選択することができる。
【００４２】
（Ａ．構文の階層）
より具体的には、図示した映像コーデック構文は、図３に示すように映像シーケンスの各フレームを３つの基本的階層、すなわちピクチャ３１０、マクロブロック３４０、およびブロック３５０に分解する階層構文構造を用いて映像を表す。ピクチャ３１０は、輝度（Ｙ）チャネル３３０、およびクロミナンス（ＣｒおよびＣｂ）チャネル３３１〜３３２を含む。ピクチャ層３１０は、複数行のマクロブロック３４０からなる。マクロブロックは一般に、それぞれ６つのブロック、すなわち輝度層の１組２×２個のブロック、およびクロミナンスチャネルそれぞれのブロックを含む。ブロックは一般に、（図示した映像コーデック構文では、４×８、８×４、４×４の変換ブロックを使用することも可能であるが）８×８の輝度またはクロミナンスサンプルからなり、変換ベースの符号化ではそれに対して変換が適用される。
【００４３】
さらに、ピクチャ層３１０とマクロブロック層３４０の間に、スライス層３２０と呼ばれる追加の第４層が存在することが可能である。スライスは、ラスタ走査順で走査される、１行または連続した複数行のマクロブロックを含むように定義される。したがって、ピクチャ３１０をスライス３２０に分解し、このスライスをマクロブロック３４０に分解することが可能となる。この図示した映像コーデック構文では、スライスは常に、ある行の最初のマクロブロックから始まり、同じまたは別の行の最後のマクロブロックで終わる。したがって、スライスは、完全な行を整数個含む。さらにピクチャおよびスライスは常に、この図示した映像コーデックビットストリーム構文内でバイト整合されており、以下で述べるＩＤＵ（ｉｎｄｅｐｅｎｄｅｎｔ  ｄｅｃｏｄａｂｌｅ  ｕｎｉｔ：独立復号化可能単位）で送信される。新しいピクチャ、またはスライスは、以下に概要を示す開始コードによって検出される。
【００４４】
（Ｂ．スライス層の定義）
１つのスライスは、ラスタ走査順で走査される１行または連続した複数行のマクロブロックを表す。図示した構文内のスライス層はオプションであり、ピクチャを１つのＩＤＵとして符号化することによってスキップすることが可能である。１つのピクチャを複数のＩＤＵに符号化するときに、スライスを使用する。スライスは常に、ある行の最初のマクロブロックから始まり、同じまたは別の行の最後のマクロブロックで終わることに留意されたい。したがって、スライスは、完全な行を整数個含む。スライスは常にバイト整合されており、各スライスは互いに異なるＩＤＵで送信される。新しいスライスの始まりは、以下に概要を示す開始コードを検索することによって検出される。
【００４５】
新しいスライスが始まるとき、動きベクトル予測子、ＡＣ係数およびＤＣ係数の予測子、および量子化パラメータの予測子がリセットされる。言い換えると、予測に関して、スライス内の最初の行のマクロブロックが、ピクチャ内の最初の行のマクロブロックであると見なされる。これにより、予測子におけるスライス間の依存性がなくなる。さらに、スライスが使用されるとき、すべてのビットプレーン情報は、各マクロブロックがその局所情報を含む生モードで運搬される。
【００４６】
（Ｃ．スライス層の構文構造）
図４および５を参照すると、圧縮映像ビットストリーム１９５（図１）が、一連の圧縮プログレッシブ映像フレームまたはその他のピクチャ（たとえば、インターレースフレーム形式ピクチャまたはインターレースフィールド形式ピクチャ）を含む。このビットストリームは複数の階層に編成され、それぞれ図２のデコーダ（２００）などのデコーダによって復号化される。最上位層が、フレームのシーケンス全体に関する情報を有するシーケンス層である。さらに（先に要約したように）、各圧縮映像フレームは、３階層、すなわち（上から下に）ピクチャ層、マクロブロック層、およびブロック層と、オプションでピクチャ層とマクロブロック層の間のスライス層とに組織化されたデータからなる。
【００４７】
図４は、シーケンスヘッダ４１０と、それに続くピクチャ層５００（図５参照）用のデータとを含むシーケンス層４００の構文図である。シーケンスヘッダ４１０は、デコーダによって処理され、かつ、シーケンスを復号化するのに使用される、いくつかのシーケンスレベル要素を含む。
【００４８】
図５は、インターレースのフレーム内符号化フレーム（「インターレースＩフレーム」）用のピクチャ層５００の構文図である。プログレッシブのＩフレーム、Ｐピクチャ、およびＢフレームなど他のピクチャの構文図は、多くの類似の構文要素を有する。ピクチャ層５００は、ピクチャヘッダ５１０と、それに続くマクロブロック層５２０用のデータとを含む。ピクチャヘッダ５１０は、デコーダによって処理され、かつ、対応するフレームを復号化するのに使用される、複数のピクチャレベル要素を含む。これらの要素のうちのいくつかは、その存在がシーケンスレベル要素または前のピクチャレベル要素によって通知されあるいは暗示される場合にのみ、存在する。
【００４９】
図６は、スライスヘッダ６１０と、それに続くマクロブロック層５２０用のデータとを含むスライス層６００の構文図である。スライスヘッダ６１０を構成する要素は、以下の表１にも示すように、スライスアドレス（ＳＬＩＣＥ＿ＡＤＤＲ）要素６２０、およびピクチャヘッダ存在フラグ（ＰＩＣ＿ＨＥＡＤＥＲ＿ＦＬＡＧ）要素６３０を含む。
【００５０】
スライスアドレス要素６２０は、固定長９ビットの構文要素である。この構文要素内では、スライスの最初のマクロブロック行の行アドレスが２進符号化されている。図示した実装形態において、この構文要素の範囲は１から５１１であり、最大ピクチャサイズ８１９２が、最大マクロブロック行数５１２に対応する。
【００５１】
ＰＩＣ＿ＨＥＡＤＥＲ＿ＦＬＡＧ  ６３０は、スライスヘッダ内に存在する１ビットの構文要素である。ＰＩＣ＿ＨＥＡＤＥＲ＿ＦＬＡＧ＝０の場合、スライスヘッダ内でピクチャヘッダ情報が繰り返されない。ＰＩＣ＿ＨＥＡＤＥＲ＿ＦＬＡＧ＝１の場合は、このスライスを含むピクチャ層中に存在するピクチャヘッダ５１０（図５）の情報が、スライスヘッダ内で繰り返される。
【００５２】
【表１】
2007504773.tif 000002
【００５３】
（３．独立復号化可能単位の開始コード）
図示した映像エンコーダ／デコーダのビットストリーム構文では、圧縮映像データの独立復号化可能単位（ＩＤＵ）が、開始コード（ＳＣ）と呼ぶ識別子で始まる。ＩＤＵは、１つのピクチャ、またはスライス（すなわち、ピクチャ内のマクロブロックのグループ）、またはＧＯＰ（Ｇｒｏｕｐ  Ｏｆ  Ｐｉｃｔｕｒｅｓ）、またはシーケンスヘッダを参照し得る。
【００５４】
開始コードは、４バイトのシーケンスであり、一意の３バイトの開始コードプレフィックス（ＳＣＰ）、および１バイトの開始コードサフィックス（ＳＣＳ）からなる。ＳＣＰは、一意の３バイト（０ｘ０００００１）のシーケンスである。ＳＣＳは、ＩＤＵの種類を識別するのに使用され、開始コードの後にくる。たとえば、ピクチャの前にある開始コードのサフィックスは、スライスの前にある開始コードのサフィックスとは異なる。開始コードは、常にバイト整合されている。
【００５５】
ビットストリーム中の開始コードプレフィックスの模倣を防止するためのカプセル化機構（ＥＭ）について説明する。カプセル化前の圧縮データは原信号の独立復号化可能単位（ＲＩＤＵ：Ｉｎｄｅｐｅｎｄｅｎｃｙ  Ｄｅｃｏｄａｂｌｅ  Ｕｎｉｔ）と呼び、一方、カプセル化ＩＤＵ（ＥＩＤＵ）はカプセル化後のデータを指す。
【００５６】
以下のセクションでは、開始コードおよびカプセル化がどのように動作するかに関するエンコーダ側の全体像を示す。セクションＥ．２では、デコーダにおける開始コードおよびＥＩＤＵの検出について述べる。セクションＥ．３では、ＥＩＤＵからのＲＩＤＵの抽出を扱う。セクションＥ．４では、様々なＩＤＵ種類用の開始コードサフィックスについて述べる。
【００５７】
（Ａ．開始コードおよびカプセル化−エンコーダ側の視点）
ＥＩＤＵを得るためのＲＩＤＵのカプセル化について以下に説明する。
【００５８】
ステップ１：ＲＩＤＵの最後に後続「１」ビットを追加する。次にＥＭが、このＩＤＵがバイト整合位置で終わるように、０〜７ビットをＩＤＵの最後に付加する。これらの「スタッフィング」ビットの値は「０」である。その結果、このステップの最後では、ＩＤＵが整数個のバイトで表され、ＩＤＵの最後のバイトはゼロ値のバイトではあり得なくなる。その結果得られるバイト列を、ＩＤＵのペイロードバイトと呼ぶ。
【００５９】
ステップ２：３バイトの開始コードプレフィックス（０ｘ０００００１）と、ＩＤＵ種類を識別する適切な開始コードサフィックスをＥＩＤＵの最初に置く。
【００６０】
ステップ３：ＥＩＤＵの残りの部分を、以下の模倣防止処理によりＩＤＵのペイロードバイトを処理することによって形成する。バイト充填によってＩＤＵ中の開始コードプレフィックスの模倣を排除する。この模倣防止処理は、以下の動作と等価である。
【００６１】
１）値０ｘ００の連続２バイトと、それに続く６ビットのＭＳＢ（ＬＳＢの値は関係ない）にゼロ値を含む１バイトとからなる、ペイロード中の各ストリングを、値０ｘ００の２バイトと、それに続く０ｘ０３に等しい１バイトと、それに続く元の３バイトのデータストリングの最後のバイトに等しい１バイトとで置き換える。この処理を、表２に示す。
【００６２】
【表２】
2007504773.tif 000003
【００６３】
ステップ３：３バイトの開始コードプレフィックス（０ｘ０００００１）と、ＩＤＵ種類を識別する適切な開始コードサフィックスとを、ＩＤＵの最初に付ける。その結果得られるペイロードが、カプセル化ＩＤＵである。
【００６４】
エンコーダは、ＥＩＤＵの最後の後に、任意の数のゼロ値の充填バイトを挿入することもできる。同様に、開始コードプレフィックスの前に、任意の数のゼロ値の充填バイトを挿入することも可能である。開始コードは、たとえこれらゼロ値の充填バイトが存在しても、デコーダによって検出可能な構造になっている。Ｈ．３２０などいくつかの伝送環境では、エンコーダはこの機能を使用して、追加のゼロ値充填バイトを必要に応じて挿入することができ、これにより、デコーダがたとえバイト境界に対するビットストリームの所期の整合を見失っても、開始コードの位置を迅速に回復することが可能となる。さらに、これらのゼロ値充填バイトは、ビットストリームを継ぎ合わせる際や一定のビットレートチャネルを充填する際などでも有用であり得る。開始コードの前の、またはＥＩＤＵの最後のゼロ値充填バイトはカプセル化機構によって処理されず、ＲＩＤＵデータだけがそうした処理を必要とする。
【００６５】
（Ｂ．開始コードおよびＥＩＤＵの検出）
ＥＩＤＵの検出では、まず開始コードプレフィックスを検索する。
【００６６】
バイト整合位置から始まる開始コードの検出：バイト整合を喪失することがあり得ないデコーダ、または一旦バイト整合が確立されているデコーダでは、開始コード検出は以下のように行う。
１．値０ｘ００の２バイト以上と、それに続く値０ｘ０１の１バイトとからなるストリングが見つかったときはいつでも、開始コードプレフィックス検出が宣言される。
【００６７】
連続した２つの開始コードプレフィックスが検出されたとき、それらの間のペイロードビットストリームが新規ＥＩＤＵとして宣言される。
【００６８】
デコーダにおけるバイト整合の喪失後の開始コードの検出：（一部の伝送環境で発生し得るように）バイト整合を喪失したデコーダにおいて、開始コードプレフィックス検出およびバイト整合検出が以下のように行われる。値０ｘ００の３バイト以上のストリングが見つかり、それに続いて任意の非ゼロバイトが見つかったときはいつでも、開始コードプレフィックス検出が宣言され、バイト整合は、非ゼロバイトの最初の非ゼロビットがバイト整合開始コードの最後のビットであるように回復されているものと見なされる。
【００６９】
（Ｃ．ＥＩＤＵからのＲＩＤＵの抽出）
カプセル化ＩＤＵからの生ＩＤＵの抽出について以下に述べる。
【００７０】
ステップ１：開始コードサフィックスを使用して、ＩＤＵの種類を識別する。
【００７１】
ステップ２：最初のステップで、ＥＩＤＵの最後にあるゼロ値充填バイトを除去する。このステップの後、ＩＤＵの最後のバイトは非ゼロ値を有するはずである。
【００７２】
ステップ３：模倣防止用に使用されるバイトが検出され除去される。この処理は以下のとおりである。
【００７３】
値０ｘ００の２バイトのストリングに０ｘ０３と等しい１バイトが続く場合は常に、この０ｘ０３と等しい１バイトは模倣防止バイトであると見なされ、破棄される。この処理を表３に示す。
【００７４】
【表３】
2007504773.tif 000004
【００７５】
（デコーダによる適切なバイト整合の喪失がエラー条件と見なされることに留意すると）以下のバイトパターンがビットストリーム中で見つかった場合、それらはエラー条件を表す。
【００７６】
ａ）値０ｘ００の２バイトと、それに続く０ｘ０２と等しい１バイトとからなるストリングは、エラー条件を示す。
【００７７】
ｂ）値０ｘ００の３バイト以上のストリングの後に０ｘ０１の１バイトが続いていない場合、そのストリングはエラー条件である（ゼロと等しい２バイト以上に値０ｘ０１の１バイトが続き、バイト整合が喪失していない場合、後続の開始コードの検出が宣言されることに留意されたい）。
【００７８】
ｃ）値０ｘ００の２バイトと、それに続く値０ｘ０３の１バイトと、それに続く０ｘ００、０ｘ０１、０ｘ０２、０ｘ０３のどれでもない１バイトからなるストリング。
【００７９】
ステップ４：ＩＤＵの最後のバイトにおいて、最後の非ゼロビットが識別され、その非ゼロビットと、それに続くすべての「ゼロ」ビットが破棄される。その結果が、生ＩＤＵである。
【００８０】
（Ｄ．ＩＤＵ種類用の開始コードサフィックス）
様々なＩＤＵ種類用の開始コードサフィックスを表４に提示する。
【００８１】
【表４】
2007504773.tif 000005
【００８２】
シーケンスヘッダサフィックスが送られ、シーケンスヘッダ４１０（図４）を有するＩＤＵが識別される。
【００８３】
エントリポイントヘッダサフィックスが送られ、エントリポイントヘッダを有するＩＤＵが識別される。
【００８４】
ピクチャサフィックスが送られ、ピクチャ３２０（図３）、およびピクチャヘッダ５１０（図５）を含むＩＤＵが識別される。
【００８５】
フィールドサフィックスが送られ、別々の２つのフィールドとして符号化されるピクチャの第２フィールドを含むＩＤＵが識別される。
【００８６】
スライスサフィックスが送られ、スライス３２０（図３）、およびスライスヘッダ６１０（図６）を有するＩＤＵが識別される。
【００８７】
シーケンスレベルユーザデータ、エントリポイントレベルユーザデータ、フレームレベルユーザデータ、フィールドレベルユーザデータ、およびスライスレベルユーザデータの各サフィックスが使用され、それぞれシーケンス、エントリポイント、フレーム、フィールド、およびスライスに関連した任意のユーザ定義データが送信される。
【００８８】
「シーケンス終了」は、現シーケンスが終了していることを示す任意のサフィックスであり、このシーケンスではデータはもう送信されない。「シーケンス終了」が送信されることがあるが、あるシーケンスの終了は次のシーケンスのヘッダから推論されるはずであることに留意されたい。
【００８９】
（４．スライス層の独立性）
図示したスライス層３２０（図３）では、独立した復号化能力および独立した再構築も実現される。これにより、ピクチャ３１０（図３）の他の領域における伝送エラーやパケット損失に関係なく、デコーダでエラーなしにスライスを再構築することができる。
【００９０】
（Ａ．独立した復号化能力）
スライス層３２０の内容は、他のスライス内のピクチャ内容またはピクチャの領域とは独立に復号化される。新しいスライスが始まるとき、エンコーダ１００およびデコーダ２００は、動きベクトル予測子、ＡＣ係数およびＤＣ係数用の予測子、ならびに量子化パラメータ用の予測子をリセットする。言い換えると、予測に関して、スライスのマクロブロックの第１行が、ピクチャ内のマクロブロックの第１行であるかのように扱われる。これは、予測子におけるスライス間依存性がないようにするのに役立つ。さらに、スライスが使用されると、ピクチャ層で他の方法により（たとえばビットプレーン符号化を使用して）符号化された（動きベクトルモードやＡＣ予測用のフラグなどの）マクロブロックレベル情報が、変換係数など他のマクロブロックレベル情報と共に局所的に保持される。これにより、各スライスを独立に（すなわち、ピクチャの他のスライスで復号化されたデータを利用せずに）復号化することができる。
【００９１】
（Ｂ．独立した再構築）
さらに、スライスの再構築の処理は、ピクチャ内の他のスライス（たとえば、隣接するスライス）の再構築とは独立に実施される。したがって、（以下に述べるインループデブロッキングまたはオーバラップフィルタリングなど）普通ならピクチャ内の隣接するスライス間の境界をまたいで適用されるような処理はいずれも、許可されない。言い換えると、各スライスの一番上および一番下のマクロブロック行は、そのような境界処理においてピクチャのマクロブロック最上行および最下行のように扱われる。
【００９２】
（オーバラップ平滑化）
オーバラップ変換は、ブロック境界をまたいで情報を変換する、改変されたブロックベースの変換である。うまく設計されたオーバラップ変換では、ブロックアーティファクトを最小にすることが可能である。フレーム内ブロックの場合、図示した映像コーデックは、８×８ブロック変換を（オーバラップ平滑化と呼ぶ）フィルタリング動作と組み合わせることによって、オーバラップ変換をシミュレートする。２つのフレーム内ブロックを分離する、８×８ブロックのエッジが平滑化される。実際にも、オーバラップ変換がこのインターフェースで実装される。ただし、オーバラップ平滑化は、どんな場合も、スライス境界をまたいでは実施されない。
【００９３】
シーケンス層構文要素ＯＶＥＲＬＡＰ  ４２０（図４）が１に設定されている場合、輝度チャネルとクロミナンスチャネルのどちらについても、フィルタリング動作を、隣接する２つのフレーム内ブロックのエッジをまたいで条件付きで行うことができる。（オーバラップ平滑化と呼ばれる）このフィルタリング動作は、フレームの復号化後、インループデブロッキングの前に行われる。ただし、オーバラップ平滑化を、該当するマクロブロックスライスが復号化された後に実施することもできる。これは、フレーム全体を復号化した後に平滑化するのと機能的に同等であるからである。
【００９４】
図７に、Ｉブロックを含むＰフレームの一部分に対して、オーバラップ平滑化を実施した例を示す。これは、輝度チャネルでもクロミナンスチャネルでもよい。Ｉブロックはグレー（または網がけ）で、Ｐブロックは白である。この図では、オーバラップ平滑化の適用対象のエッジインターフェースは、網がけパターンでマークされている。オーバラップ平滑化は、分離境界の両側の２画素に適用される。フレームの右下領域を例としてここに示す。画素は個々のセルを占め、ブロックは太線によって分離されている。両方向にフィルタされている２×２画素の隅部サブブロックを、太丸でマークしてある。
【００９５】
図７の下部の差込み図（ｉｎｓｅｔ）は、４つのラベル付き画素を示しており、ａ０およびａ１が垂直ブロックエッジの左側で、ｂ１およびｂ０が右側である。上部の差込み図は、水平エッジをまたぐ、ｐ０、ｐ１、ｑ１、およびｑ０とマークされた画素を示している。次のセクションでは、これら４つの画素位置に適用されるフィルタについて説明する。
【００９６】
オーバラップ平滑化は、制限なしの（ｕｎｃｌａｍｐ）１６ビット再構築に対して実施される。それが必要なのは、オーバラップ平滑化に関連した順方向処理により、画素値に対して許容可能な８ビットの範囲を超えて範囲が拡張される恐れがあるからである。オーバラップ平滑化の結果は、オーバラップ平滑化によって影響を受けない画素の残存部分に合わせて、８ビットに固定（ｃｌａｍｐ）される。
【００９７】
垂直エッジ（上記の例の画素ａ０、ａ１、ｂ１、ｂ０）がまずフィルタされ、その後、水平エッジ（画素ｐ０、ｐ１、ｑ１、ｑ０）がフィルタされる。フィルタリングの第１段階（垂直エッジ平滑化）後の中間結果は、１６ビットで記憶される。両エッジにまたがる４画素に適用される中核フィルタを次式で示す。
【００９８】
【数１】
2007504773.tif 000006
【００９９】
フィルタされる元の画素は（ｘ０、ｘｌ、ｘ２、ｘ３）である。ｒ０およびｒ１は、丸めパラメータであり、３と４の値を交互にとり、統計的に偏りのない丸めを保証する。元の値は、明らかに実装の容易なエントリをもつマトリクスによってフィルタされる。これらの値に、丸め係数を加えた後、３ビットだけビットシフトすると、フィルタ済み出力（ｙ０、ｙ１、ｙ２、ｙ３）が得られる。
【０１００】
水平および垂直エッジフィルタのどちらの場合も、ブロック内の番号付けが１で始まると仮定すれば、丸め値は、奇数インデックスの列および行に対してそれぞれｒ０＝４、ｒ１＝３である。偶数インデックスの列／行の場合、ｒ０＝３およびｒ１＝４である。フィルタリングは、インプレース（ｉｎ−ｐｌａｃｅ）の１６ビット動作として定義され、したがって、元の画素は、平滑化後に上書きされる。垂直エッジフィルタリングの場合、画素（ａ０、ａ１、ｂ１、ｂ０）は（ｘ０、ｘ１、ｘ２、ｘ３）に対応し、フィルタされて（ｙ０、ｙ１、ｙ２、ｙ３）になる。同様に、水平エッジフィルタリングの場合、（ｐ０、ｐ１、ｑ１、ｑ０）がそれぞれ対応する。
【０１０１】
図７の太線の円で示す隅部の２×２画素は、両方向にフィルタされる。フィルタリングの順序によってそれらの最終値が決まるため、垂直エッジフィルタリングとそれに続く水平エッジフィルタリングという順序を、ビットレベルの厳密さで維持することが重要である。概念上、制限は、フィルタされるすべての画素に対して、２方向のフィルタリング段階の後に実行される。ただし、制限をフィルタリングと組み合わせることに、ある種の計算上の利点がある可能性がある。
【０１０２】
（インループデブロックフィルタリング）
ループフィルタリングは、ブロック境界において不連続を平滑化するために、映像エンコーダ／デコーダによって実行される処理である。シーケンス層構文要素ＬＯＯＰＦＩＬＴＥＲ４３０（図４）が１に設定されている場合、各再構築済みフレームに対してフィルタリング動作が行われる。このフィルタリング動作は、再構築済みフレームを動き予測符号化の参照として使用する前に行われる。
【０１０３】
ループフィルタリングの目的はブロック境界における不連続を平滑化することであるため、このフィルタリング処理は、隣接ブロックに接する画素に対して働く。
【０１０４】
Ｐピクチャの場合、ブロック境界は、８×８、８×４、または４×８のどの逆変換が使用されるかに応じて、第４、第８、第１２などの画素行または列ごとに生じ得る。Ｉピクチャの場合、フィルタリングは、第８、第１６、第２４などの画素行または列ごとに生じる。
【０１０５】
Ｉピクチャの場合、デブロックフィルタリングは、（ピクチャエッジと同様に扱われる）スライス境界では実施されないことを除き、すべての８×８ブロック境界で実施される。図８および９に、Ｉピクチャフレームの水平および垂直境界領域に沿ってフィルタされる画素を示す。これらの図は、構成要素（ルマ（ｌｕｍａ）、Ｃｒ、またはＣｂ）プレーンの左上隅部を示している。十字印は画素を表し、丸十字印はフィルタされた画素を表している。
【０１０６】
図に示すように、ピクチャまたはスライスの一番上の水平行および最初の垂直行はフィルタされない。図示しないが、ピクチャまたはスライスの一番下の水平行および最後の垂直行もフィルタされない。より正式にいうと、以下の行がフィルタされる。
【０１０７】
Ｎ＝平面内の水平８×８ブロックの数（Ｎ×８＝水平フレームサイズ）
および
Ｍ＝フレーム内の垂直８×８ブロックの数（Ｍ×８＝垂直フレームサイズ）
の場合に、
水平行（７，８）、（１５，１６）．．．（（Ｎ−１）×８−１，（Ｎ−１）×８）
がフィルタされ、
垂直行（７，８）、（１５，１６）．．．（（Ｍ−１）×８−１，（Ｍ−１）×８）
がフィルタされる。
【０１０８】
画素がフィルタされる順序は重要である。フレーム内のすべての水平境界行がまずフィルタされ、その後、垂直境界行がフィルタされる。
【０１０９】
Ｐピクチャの場合、ブロックは、フレーム内符号化することも、フレーム間符号化することもできる。フレーム内符号化ブロックでは常に８×８変換を使用してサンプルが変換され、８×８ブロック境界は常にフィルタされる。フレーム間符号化ブロックでは、８×８、８×４、４×８、または４×４の逆変換を使用して、残存誤差を表すサンプルを構築することができる。隣接ブロックのステータスに応じて、現ブロックと隣接ブロックの間の境界はフィルタされることもフィルタされないこともある。どちらの場合も、ピクチャまたはスライスの境界エッジはフィルタされない。
【０１１０】
（フィルタ動作）
このセクションでは、上記で論じたような、ＩフレームおよびＰフレーム内のブロック境界画素に対して行われるフィルタリング動作について説明する。
【０１１１】
行または列内でフィルタされる連続した画素の最小数が４で、かつ行または列内の画素の合計数が常に４の倍数になるので、フィルタリング動作は４画素のセグメントに対して行われる。
【０１１２】
たとえば、２つのブロック間の垂直境界を構成する８つの画素対がフィルタされる場合、図１１に示すように、８画素が、２つの４画素セグメント１１００に分割される。各４画素セグメントにおいて、Ｘで示す第３の画素対がまずフィルタされる。このフィルタ動作の結果により、以下に述べるように、セグメント内の他の３つの画素もフィルタされるかどうかが決まる。
【０１１３】
図１２に、第３の画素対に対して行われるフィルタリング動作で使用される画素１２００を示す。画素Ｐ４およびＰ５は、フィルタ動作で変更され得る画素対である。
【０１１４】
図１３の擬似コード１３００は、各セグメント内の第３の画素対に対して行われるフィルタリング動作を示している。値ｆｉｌｔｅｒ＿ｏｔｈｅｒ＿３＿ｐｉｘｅｌｓは、セグメント内の残る３つの画素対もフィルタされかどうかを示す。ｆｉｌｔｅｒ＿ｏｔｈｅｒ＿３＿ｐｉｘｅｌｓ＝真の場合、他の３つの画素対がフィルタされる。ｆｉｌｔｅｒ＿ｏｔｈｅｒ＿３＿ｐｉｘｅｌｓ＝偽の場合、それらはフィルタされず、フィルタリング動作は次の４画素セグメントに進む。図１４の擬似コード１４００は、ｆｉｌｔｅｒ＿ｏｔｈｅｒ＿３＿ｐｉｘｅｌｓ＝真の場合に、第１、第２、第４の画素対に対して行われるフィルタリング動作を示している。
【０１１５】
このセクションでは、例示の目的で、垂直境界を使用した。同じ動作は、水平境界画素をフィルタリングするためにも使用される。
【０１１６】
（５．コンピューティング環境）
スライス層符号化の上述の実装は、とりわけコンピュータ、画像および映像記録、送信および受信機器、ポータブルビデオプレーヤ、ビデオ会議、Ｗｅｂビデオストリーミングアプリケーションなどを含めた、画像および映像信号処理が実行される様々な装置のどれに対しても行うことが可能である。画像および映像符号化技術は、ハードウェア回路内（たとえば、ＡＳＩＣ，ＦＰＧＡなどの回路内）で実装することも、（中央処理装置（ＣＰＵ）で実行されるものであれ、あるいは専用グラフィックスプロセッサ、ビデオカードなどで実行されるものであれ）コンピュータまたは図１０に示すような他のコンピューティング環境内で実行される画像および映像処理ソフトウェアで実装することもできる。
【０１１７】
図１０に、上述のスライス層符号化を実装できる適切なコンピューティング環境（１０００）の汎用例を示す。本発明は様々な汎用または専用コンピューティング環境で実装できるので、このコンピューティング環境（１０００）は、本発明の使用または機能の範囲に関してどんな制限を示唆するものでもない。
【０１１８】
図１０を参照すると、コンピューティング環境（１０００）は、少なくとも１つの処理装置（１０１０）およびメモリ（１０２０）を含む。図１０では、この最も基本的な構成（１０３０）を破線で囲んである。処理装置（１０１０）は、コンピュータ実行可能命令を実行し、実プロセッサでも仮想プロセッサでもよい。マルチプロセッシングシステムでは、処理能力を高めるために、複数の処理装置がコンピュータ実行可能命令を実行する。メモリ（１０２０）は、揮発性メモリ（たとえば、レジスタ、キャッシュ、ＲＡＭ）、非揮発性メモリ（たとえば、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリなど）、またはこれら２つの何らかの組合せとすることができる。メモリ（１０２０）は、上記スライス層符号化を実装するソフトウェア（１０８０）を記憶する。
【０１１９】
コンピューティング環境が他の機能を有することもできる。たとえば、コンピューティング環境（１０００）は、記憶装置（１０４０）、１つまたは複数の入力装置（１０５０）、１つまたは複数の出力装置（１０６０）、および１つまたは複数の通信接続（１０７０）を含む。バス、コントローラ、ネットワークなどの相互接続機構（図示せず）が、コンピューティング環境（１０００）の各構成要素を相互接続している。通常、オペレーティングシステムソフトウェア（図示せず）は、コンピューティング環境（１０００）で実行される他のソフトウェアのための動作環境を提供し、コンピューティング環境（１０００）の各構成要素のアクティビティを調整する。
【０１２０】
記憶装置（１０４０）は取外し可能でも取外し不能でもよく、それには磁気ディスク、磁気テープまたはカセット、ＣＤ−ＲＯＭ、ＣＤ−ＲＷ、ＤＶＤ、または情報を記憶するのに使用可能でありコンピューティング環境（１０００）内でアクセス可能であるその他の媒体が含まれる。記憶装置（１０４０）は、スライス層符号化を実施する音声エンコーダを実装するソフトウェア（１０８０）用の命令を記憶する。
【０１２１】
入力装置（１０５０）は、キーボード、マウス、ペン、トラックボールなどの接触式入力装置、音声入力装置、スキャニング装置、またはコンピューティング環境（１０００）に入力を提供する他の装置とすることができる。音声の場合、入力装置（１０５０）は、アナログまたはデジタル形式で音声入力を受け入れるサウンドカードまたは類似の装置、あるいはコンピューティング環境に音声サンプルを提供するＣＤ−ＲＯＭ読取り装置とすることができる。出力装置（１０６０）は、ディスプレイ、プリンタ、スピーカ、ＣＤ書込み装置、またはコンピューティング環境（１０００）からの出力を提供する他の装置とすることができる。
【０１２２】
通信接続（１０７０）により、通信媒体を介して別のコンピューティングエンティティへの通信が可能になる。通信媒体は、コンピュータ実行可能命令、圧縮音声または映像情報、その他のデータなどの情報を変調データ信号で運搬する。変調データ信号とは、その信号特性のうちの１つまたは複数の特性が、信号中で情報が符号化されるような形で設定または変更されている信号である。例を挙げると、それだけには限らないが、通信媒体には、電気、光学、ＲＦ、赤外、音響、またはその他の搬送体（ｃａｒｒｉｅｒ）で実装される有線または無線技術が含まれる。
【０１２３】
本明細書のスライス層符号化／復号化技術は、コンピュータ読み取り可能な媒体の一般的文脈中（ｃｏｎｔｅｘｔ）で説明することが可能である。コンピュータ読み取り可能な媒体は、コンピューティング環境内でアクセスできる任意の利用可能な媒体である。例を挙げると、それだけには限らないが、コンピューティング環境（１０００）において、コンピュータ読み取り可能な媒体にはメモリ（１０２０）、記憶装置（１０４０）、通信媒体、および上記の任意の組合せが含まれる。
【０１２４】
本明細書のスライス層符号化は、対象の実プロセッサまたは仮想プロセッサ上のコンピューティング環境で実行されるプログラムモジュールに含まれるものなどの、コンピュータ実行可能命令の一般的文脈で説明することが可能である。一般に、プログラムモジュールには、特定のタスクを実行する、または特定の抽象データ種類を実装するルーチン、プログラム、ライブラリ、オブジェクト、クラス、コンポーネント、データ構造などが含まれる。プログラムモジュールの機能は、様々な実施形態で所望されるように、プログラムモジュール間で結合または分割することができる。プログラムモジュール用のコンピュータ実行可能命令は、ローカルコンピューティング環境でも分散コンピューティング環境でも実行することができる。
【０１２５】
提示の目的で、発明を実施するための最良の形態では、「決定する」、「生成する」、「調整する」、および「適用する」などの用語を使用して、コンピュータ環境内のコンピュータ動作を説明している。これらの用語は、コンピュータによって行われる動作の高レベルの抽象概念であり、人間によって行われる動作と混同すべきではない。これらの用語に対応する実際のコンピュータ動作は、実装に応じて変わってくる。
【０１２６】
本発明の原理を適用できる実施形態が多数考え得ることに鑑みて、本発明者らは、添付の特許請求の範囲およびその等価物の範囲および趣旨に含めることのできるすべての実施形態を本発明者らの発明であると主張するものである。
【図面の簡単な説明】
【０１２７】
【図１】本明細書に記載のスライス層符号化を用いた映像エンコーダのブロック図である。
【図２】本明細書に記載のスライス層符号化を用いた映像デコーダのブロック図である。
【図３】スライス層符号化を用いた映像エンコーダ／デコーダによって使用される圧縮ビットストリームで表される映像シーケンスの要素の階層構成を示す図である。
【図４】スライス層符号化を用いた映像エンコーダ／デコーダによって使用される圧縮ビットストリームの符号化構文のシーケンスレベルの構文図である。
【図５】スライス層符号化を用いた映像エンコーダ／デコーダによって使用される圧縮ビットストリームの符号化構文のフレームレベルの構文図である。
【図６】スライス層符号化を用いた映像エンコーダ／デコーダによって使用される圧縮ビットストリームの符号化構文のスライス層レベルの構文図である。
【図７】ブロック境界で実施されるオーバラップ平滑化の一例を示す図である。
【図８】ループ内デブロックフィルタリングが実施されるＩピクチャ内の水平ブロック境界画素の例を示す図である。
【図９】ループ内デブロックフィルタリングが実施されるＩピクチャ内の垂直ブロック境界画素の例を示す図である。
【図１０】図１および２の映像エンコーダ／デコーダに適したコンピューティング環境のブロック図である。
【図１１】ループフィルタリングで使用される、４つで１組の画素セグメントを示す図である。
【図１２】フィルタリング動作で使用される画素を示す図である。
【図１３】あるセグメントの第３の画素対に対するフィルタリング動作の擬似コードリストである。
【図１４】あるセグメントの第１、第２、および第４の画素対に対するフィルタリング動作の、擬似コードリストである。
【図１】
2007504773.tif 000007
【図２】
2007504773.tif 000008
【図３】
2007504773.tif 000009
【図４】
2007504773.tif 000010
【図５】
2007504773.tif 000011
【図６】
2007504773.tif 000012
【図７】
2007504773.tif 000013
【図８】
2007504773.tif 000014
【図９】
2007504773.tif 000015
【図１０】
2007504773.tif 000016
【図１１】
2007504773.tif 000017
【図１２】
2007504773.tif 000018
【図１３】
2007504773.tif 000019
【図１４】
2007504773.tif 000020
【国際調査報告】
2007504773.tif 000021