(57)【要約】  本発明の一部の実施形態は、いくつかのイメージ（例えば、ビデオシーケンスのいくつかのフレーム）を符号化するマルチパス符号化方法を提供する。本方法は、それらのイメージを符号化する符号化操作（図１、１１０）を繰り返し実行する。符号化操作は、本方法がイメージに関する量子化パラメータを計算するために使用する名目量子化パラメータに基づく（１３２）。符号化操作の数回の異なる繰り返し中、本方法は、いくつかの異なる名目量子化パラメータ（１２５）を使用する。本方法は、終了の基準に達すると（例えば、本方法が、許容できるイメージの符号化を特定する）、その繰り返しを停止する（１４０）。
2008504750.tif 000002
【特許請求の範囲】
【請求項１】
複数のイメージを符号化する方法であって、
ａ）前記複数のイメージを符号化するための名目量子化パラメータを定義するステップと、
ｂ）前記名目量子化パラメータに基づいて、少なくとも１つのイメージのための、少なくとも１つのイメージ固有の量子化パラメータを導出するステップと、
ｃ）前記イメージ固有の量子化パラメータに基づいて、前記複数のイメージを符号化するステップと、
ｄ）前記定義するステップ、前記導出するステップ、および前記符号化するステップを繰り返して前記符号化を最適化するステップと、
を備えることを特徴とする方法。
【請求項２】
ａ）前記名目量子化パラメータに基づいて、複数のイメージのための複数のイメージ固有の量子化パラメータを導出するステップと、
ｂ）前記複数のイメージ固有の量子化パラメータに基づいて、前記複数のイメージを符号化するステップと、
ｃ）前記定義するステップ、前記名目量子化パラメータに基づいて、複数のイメージのための複数のイメージ固有の量子化パラメータを導出するステップ、および前記複数のイメージ固有の量子化パラメータに基づいて、前記複数のイメージを符号化するステップを繰り返して前記符号化を最適化するステップと、
をさらに備えることを特徴とする請求項１に記載の方法。
【請求項３】
符号化の動作が終了の基準のセットを満たすと前記繰り返すステップを停止するステップをさらに備えることを特徴とする請求項１に記載の方法。
【請求項４】
前記終了の基準のセットは、前記複数のイメージに関して許容できる符号化に関する識別情報を含むことを特徴とする請求項３に記載の方法。
【請求項５】
前記複数のイメージに関して許容できる符号化は、目標ビットレートに関して特定の範囲内に収まる、前記複数のイメージの符号化であることを特徴とする請求項４に記載の方法。
【請求項６】
複数のイメージを符号化する方法であって、
ａ）各々の特定のイメージ属性が少なくとも特定のイメージの特定の一部分に関する複雑性を定量化する、複数のイメージ属性を特定するステップと、
ｂ）前記複数のイメージに関する複雑性を定量化する基準属性を特定するステップと、
ｂ）前記特定された複数のイメージ属性と、前記基準属性と、名目量子化パラメータとに基づいて、前記複数のイメージを符号化するための量子化パラメータを特定するステップと、
ｃ）前記特定された量子化パラメータに基づいて、前記複数のイメージを符号化するステップと、
ｄ）前記複数のイメージ属性を特定するステップと、前記基準属性を特定するステップと、前記量子化パラメータを特定するステップと、前記符号化するステップとを、繰り返し実行して前記符号化を最適化するステップと、
を備え、
前記繰り返すステップでの、複数の異なる繰り返しにおいて、複数の異なる基準属性が使用される
ことを特徴とする方法。
【請求項７】
前記複数のイメージ属性は、各々のイメージの少なくとも一部分に関する視覚マスキング強度であり、
前記視覚マスキング強度は、ビデオシーケンスが前記方法に従って符号化され復号化された後に、前記ビデオシーケンスの視聴者にとって認識できない符号化アーチファクトの量を推定するためのものである
ことを特徴とする請求項６に記載の方法。
【請求項８】
前記複数のイメージ属性は、各々のイメージの少なくとも一部分に関する視覚マスキング強度であり、
イメージの一部分に関する視覚マスキング強度は、前記イメージの前記一部分に関する複雑性を示し、
イメージの一部分に関する前記複雑性を定量化する際に、前記視覚マスキング強度は、前記符号化するステップの結果生じる圧縮アーチファクトであって、復号化された後の前記符号化されていたイメージにおいて見える歪みの無い圧縮アーチファクトの量に関する指標を提供する
ことを特徴とする請求項６に記載の方法。
【請求項９】
複数のイメージを符号化するためのコンピュータプログラムを記憶しているコンピュータ読み取り可能な記憶媒体であって、前記コンピュータプログラムは、以下に列挙する命令セットを含むことを特徴とするコンピュータ読み取り可能な記憶媒体。
ａ）前記複数のイメージを符号化するための名目量子化パラメータを定義すること。
ｂ）前記名目量子化パラメータに基づいて、少なくとも１つのイメージのための、少なくとも１つのイメージ固有の量子化パラメータを導出すること。
ｃ）前記イメージ固有の量子化パラメータに基づいて、前記複数のイメージを符号化すること。
ｄ）前記定義すること、前記導出すること、および前記符号化することを繰り返して前記符号化を最適化すること。
【請求項１０】
前記コンピュータプログラムは、以下に列挙する命令セットをさらに含むことを特徴とする請求項９に記載のコンピュータ読み取り可能な記憶媒体。
ａ）前記名目量子化パラメータに基づいて、複数のイメージのための複数のイメージ固有の量子化パラメータを導出すること。
ｂ）前記複数のイメージ固有の量子化パラメータに基づいて、前記複数のイメージを符号化すること。
ｃ）前記定義すること、前記名目量子化パラメータに基づいて、複数のイメージのための複数のイメージ固有の量子化パラメータを導出すること、および前記複数のイメージ固有の量子化パラメータに基づいて、前記複数のイメージを符号化することを繰り返して前記符号化を最適化すること。
【請求項１１】
前記コンピュータプログラムは、符号化の動作が終了の基準のセットを満たすと前記繰り返すことを停止する命令セットをさらに含むことを特徴とする請求項９に記載のコンピュータ読み取り可能な記憶媒体。
【請求項１２】
前記終了の基準のセットは、前記複数のイメージに関して許容できる符号化に関する識別情報を含むことを特徴とする請求項１１に記載のコンピュータ読み取り可能な記憶媒体。
【請求項１３】
前記複数のイメージに関して許容できる符号化は、目標ビットレートに関して特定の範囲内に収まる、前記複数のイメージの符号化であることを特徴とする請求項１２に記載のコンピュータ読み取り可能な記憶媒体。
【請求項１４】
ビデオイメージのシーケンスを符号化する方法であって、
ａ）前記ビデオイメージのシーケンスを受信するステップと、
ｂ）目標ビットレートを達成し、かつ、符号化されたビデオシーケンスをデコードする仮想参照デコーダの入力バッファを通る符号化されたデータの流れに関する制約のセットを満足しつつ、画質を最適化する符号化ソリューションを特定するために、前記ビデオイメージのシーケンスに対して複数の異なる符号化ソリューションを繰り返し試みるステップと、
を備えることを特徴とする方法。
【請求項１５】
前記繰り返し試みるステップは、各々の符号化ソリューションに関して、前記ビデオイメージのシーケンスにおけるあらゆるイメージセットに対して前記符号化ソリューションの処理を行っている間に前記仮想参照デコーダがアンダフローするか否かを判定するステップを備えることを特徴とする請求項１４に記載の方法。
【請求項１６】
前記複数の異なる符号化ソリューションを繰り返し試みるステップは、
ａ）前記仮想参照デコーダの入力バッファの状態をシミュレートするステップと、
ｂ）前記仮想参照デコーダにおける入力バッファの使用率を最大化しつつ画質を最適化するビット数を選択するために、前記シミュレートするステップを活用するステップと、
ｃ）前記最適化された入力バッファの使用率を達成するために前記符号化されたビデオイメージを再符号化するステップと、
ｄ）最適な符号化が特定されるまで、前記シミュレートするステップ、前記活用するステップ、および前記再符号化するステップを繰り返し実行するステップと、
を備えることを特徴とする請求項１４に記載の方法。
【請求項１７】
前記仮想参照デコーダの入力バッファの状態をシミュレートするステップは、前記仮想参照デコーダが符号化されたデータを受信する速度を考慮するステップをさらに備えることを特徴とする請求項１６に記載の方法。
【請求項１８】
前記仮想参照デコーダの入力バッファの状態をシミュレートするステップは、前記仮想参照デコーダの入力バッファのサイズを考慮するステップをさらに備えることを特徴とする請求項１６に記載の方法。
【請求項１９】
前記仮想参照デコーダの入力バッファの状態をシミュレートするステップは、前記仮想参照デコーダの入力バッファからの初期除去遅延を考慮するステップをさらに備えることを特徴とする請求項１６に記載の方法。
【請求項２０】
ａ）前記繰り返し試みるステップの前に、バッファの前記流れに関連する前記制約のセットに基づかない初期符号化ソリューションを特定するステップと、
ｂ）前記初期符号化ソリューションを使用して前記繰り返し試みるステップにおける最初の試みを開始するステップと、
をさらに備えることを特徴とする請求項１４に記載の方法。
【請求項２１】
入力バッファを有する仮想参照デコーダを備えるシステムにおいてビデオイメージのシーケンスを符号化するためのコンピュータプログラムを記憶しているコンピュータ読み取り可能な記憶媒体であって、前記コンピュータプログラムは、以下に列挙する命令セットを含むことを特徴とするコンピュータ読み取り可能な記憶媒体。
ａ）前記ビデオイメージのシーケンスを受信すること。
ｂ）目標ビットレートを達成し、かつ、符号化されたビデオシーケンスをデコードする仮想参照デコーダの入力バッファを通る符号化されたデータの流れに関する制約のセットを満足しつつ、画質を最適化する符号化ソリューションを特定するために、前記ビデオイメージのシーケンスに対して複数の異なる符号化ソリューションを繰り返し試みること。
【請求項２２】
前記繰り返し試みる命令セットは、各々の符号化ソリューションに関して、前記ビデオイメージのシーケンスにおけるあらゆるイメージセットに対して前記符号化ソリューションの処理を行っている間に前記仮想参照デコーダがアンダフローするか否かを判定する命令セットを含むことを特徴とする請求項２１に記載のコンピュータ読み取り可能な記憶媒体。
【請求項２３】
前記複数の異なる符号化ソリューション繰り返し試みる命令セットは、以下に列挙する命令セットをさらに含むことを特徴とする請求項２１に記載のコンピュータ読み取り可能な記憶媒体。
ａ）前記仮想参照デコーダの入力バッファの状態をシミュレートすること。
ｂ）前記仮想参照デコーダにおける入力バッファの使用率を最大化しつつ画質を最適化するビット数を選択するために、前記シミュレートすることを活用すること。
ｃ）前記最適化された入力バッファの使用率を達成するために前記符号化されたビデオイメージを再符号化すること。
ｄ）最適な符号化が特定されるまで、前記シミュレートすること、前記活用すること、および前記再符号化することを繰り返し実行すること。
【請求項２４】
前記仮想参照デコーダの入力バッファの状態をシミュレートする命令セットは、前記仮想参照デコーダが符号化されたデータを受信する速度を考慮する命令セットをさらに含むことを特徴とする請求項２３に記載のコンピュータ読み取り可能な記憶媒体。
【請求項２５】
前記仮想参照デコーダの入力バッファの状態をシミュレートする命令セットは、前記仮想参照デコーダの入力バッファのサイズを考慮する命令セットをさらに含むことを特徴とする請求項２３に記載のコンピュータ読み取り可能な記憶媒体。
【請求項２６】
前記仮想参照デコーダの入力バッファの状態をシミュレートする命令セットは、前記仮想参照デコーダの入力バッファからの初期除去遅延を考慮する命令セットをさらに含むことを特徴とする請求項２３に記載のコンピュータ読み取り可能な記憶媒体。
【請求項２７】
前記コンピュータプログラムは、以下に列挙する命令セットをさらに含むことを特徴とする請求項２１に記載のコンピュータ読み取り可能な記憶媒体。
ａ）前記繰り返し試みることの前に、バッファの前記流れに関連する前記制約のセットに基づかない初期符号化ソリューションを特定すること。
ｂ）前記初期符号化ソリューションを使用して前記繰り返し試みることにおける最初の試みを開始すること。
【請求項２８】
ビデオを符号化する方法であって、
ａ）前記ビデオのシーケンスにおける第１のイメージの第１の部分に関して、前記第１の部分の複雑性が原因で視聴者にとって認識できない符号化アーチファクトの度合いを定量化する、第１の視覚マスキング強度を特定するステップと、
ｂ）前記特定された視覚マスキング強度に基づいて前記第１のイメージの少なくとも一部分を符号化するステップと、
を備えることを特徴とする方法。
【請求項２９】
前記視覚マスキング強度は、前記第１の部分の空間的複雑性を示すことを特徴とする請求項２８に記載の方法。
【請求項３０】
前記空間的複雑性は、前記イメージの一部分に関するピクセル値の関数として計算されることを特徴とする請求項２９に記載の方法。
【請求項３１】
前記第１の部分は、複数のピクセル、および各々のピクセルに対するイメージ値を有し、
前記第１の部分に関する前記視覚マスキング強度を特定するステップは、
ａ）前記第１の部分の前記ピクセルのイメージ値を推定するステップと、
ｂ）前記第１の部分の前記ピクセルの前記イメージ値から前記統計的な属性を減算するステップと、
ｃ）前記減算の結果に基づいて前記視覚マスキング強度を計算するステップと、
を備えることを特徴とする請求項３０に記載の方法。
【請求項３２】
前記推定されたイメージ値は、前記第１の部分のピクセルのイメージ値に関する統計的な属性であることを特徴とする請求項３１に記載の方法。
【請求項３３】
前記統計的な属性は、中央値であることを特徴とする請求項３２に記載の方法。
【請求項３４】
前記推定されたイメージ値は、前記第１の部分のピクセルの近隣にあるピクセルに部分的に基づいていることを特徴とする請求項３１に記載の方法。
【請求項３５】
前記視覚マスキング強度は、前記第１の部分の時間的複雑性を示すことを特徴とする請求項２８に記載の方法。
【請求項３６】
前記時間的複雑性は、前記第１のイメージの前記第１の部分内に定義されたピクセル領域に関する動き補償された誤差信号の関数として計算されることを特徴とする請求項３５に記載の方法。
【請求項３７】
前記時間的複雑性は、前記第１のイメージの前記第１の部分内に定義されたピクセル領域に関する動き補償された誤差信号と、他のイメージのセットにおける第２の部分のセット内に定義されたピクセルに関する動き補償された誤差信号と、の関数として計算されることを特徴とする請求項３５に記載の方法。
【請求項３８】
前記他のイメージのセットは、１つのイメージのみを含むことを特徴とする請求項３７に記載の方法。
【請求項３９】
前記他のイメージのセットは、複数のイメージを含むことを特徴とする請求項３７に記載の方法。
【請求項４０】
前記動き補償された誤差信号は、混合された動き補償された誤差信号であり、
前記方法は、
ａ）各々の他のイメージに関する重み係数を定義するステップと、
ｂ）前記第１のイメージ、および前記他のイメージのセットにおける各々のイメージに対して、個々の動き補償された誤差信号を計算するステップと、
ｃ）前記重み係数を使用して、前記個々の動き補償された誤差信号から前記混合された動き補償された誤差信号を生成するステップと、
をさらに備え、
前記ビデオのシーケンスにおいて、前記第１のイメージに対して第２のイメージが第３のイメージよりも近い場合に、前記第２のイメージの重み係数は、前記第３のイメージの重み係数よりも大きい
ことを特徴とする請求項３９に記載の方法。
【請求項４１】
前記第１のイメージを伴うシーンの一部ではない前記他のイメージのセットにおけるイメージのサブセットに関する重み係数が、前記イメージのサブセットを排除するために選択されることを特徴とする請求項４０に記載の方法。
【請求項４２】
前記他のイメージのセットは、前記第１のイメージを伴うシーンの一部であるイメージのみを含み、他のシーンに関連するいかなるイメージも含まないことを特徴とする請求項３７に記載の方法。
【請求項４３】
前記第２のイメージは、前記第１のイメージ以前に発生した過去のイメージのセット、および前記第１のイメージ以後に発生する将来のイメージのセットから選択されることを特徴とする請求項３７に記載の方法。
【請求項４４】
前記視覚マスキング強度は、空間的複雑性の成分および時間的複雑性の成分を含み、
前記方法は、
前記空間的複雑性の成分と前記時間的複雑性の成分とを相互に比較するステップと、
前記視覚マスキング強度に対する前記空間的複雑性の成分の寄与および前記時間的複雑性の成分の寄与をそれぞれ許容することができる範囲に維持するために、所定の基準に基づいて、空間的複雑性の成分および時間的複雑性の成分を変更するステップと、
をさらに備えることを特徴とする請求項２８に記載の方法。
【請求項４５】
前記時間的複雑性の成分は、所定のフレームに関するルックアヘッド範囲内の来るべきシーン変化を考慮に入れて調整されることを特徴とする請求項４４に記載の方法。
【請求項４６】
前記視覚マスキング強度は、前記第１の部分の輝度属性を示すことを特徴とする請求項２８に記載の方法。
【請求項４７】
前記輝度属性は、前記第１の部分の平均ピクセル輝度として計算されることを特徴とする請求項４６に記載の方法。
【請求項４８】
前記第１の部分は、前記第１のイメージ全体であることを特徴とする請求項２８に記載の方法。
【請求項４９】
前記第１の部分は、前記第１のイメージ全体よりも小さいことを特徴とする請求項２８に記載の方法。
【請求項５０】
前記第１の部分は、前記第１のイメージ内のマクロブロックであることを特徴とする請求項４９に記載の方法。
【請求項５１】
ビデオを符号化するためのコンピュータプログラムを記憶しているコンピュータ読み取り可能な記憶媒体であって、前記コンピュータプログラムは、以下に列挙する命令セットを含むことを特徴とするコンピュータ読み取り可能な記憶媒体。
ａ）前記ビデオのシーケンスにおける第１のイメージの第１の部分に関する複雑性を定量化する第１の視覚マスキング強度を特定すること。
ｂ）前記特定された視覚マスキング強度に基づいて前記第１のイメージの少なくとも一部分を符号化すること。
【請求項５２】
前記視覚マスキング強度は、前記第１の部分の空間的複雑性が原因で視聴者にとって認識できない符号化アーチファクトの度合いを定量化することを特徴とする請求項５１に記載のコンピュータ読み取り可能な記憶媒体。
【請求項５３】
前記視覚マスキング強度は、前記第１の部分の前記ビデオにおける動きが原因で視聴者にとって認識できない符号化アーチファクトの度合いを示し、
前記動きは、前記第１のイメージ、および前記第１のイメージの前後のイメージのセットによって捕捉される
ことを特徴とする請求項５１に記載のコンピュータ読み取り可能な記憶媒体。
【請求項５４】
前記視覚マスキング強度は、空間的複雑性および時間的複雑性を含み、
前記コンピュータプログラムは、
前記空間的複雑性の成分と前記時間的複雑性の成分とを相互に比較する命令セットと、
前記視覚マスキング強度に対する前記空間的複雑性の成分の寄与および前記時間的複雑性の成分の寄与をそれぞれ許容することができる範囲に維持するために、基準のセットに基づいて、空間的複雑性の成分および時間的複雑性の成分を変更する命令セットと、
をさらに含むことを特徴とする請求項５１に記載のコンピュータ読み取り可能な記憶媒体。
【請求項５５】
前記視覚マスキング強度は、空間的複雑性および時間的複雑性を含み、
前記コンピュータプログラムは、前記空間的複雑性の時間的傾向、およびイメージのセット中の前記時間的複雑性を平滑化することによって、前記空間的複雑性、および前記時間的複雑性を変更する命令セットをさらに含むことを特徴とする請求項５４に記載のコンピュータ読み取り可能な記憶媒体。
【請求項５６】
前記時間的複雑性の成分は、所定のフレームに関するルックアヘッド範囲内の来るべきシーン変化を考慮に入れて調整されることを特徴とする請求項５４に記載のコンピュータ読み取り可能な記憶媒体。
【請求項５７】
前記視覚マスキング強度の属性は、前記第１の部分に関する輝度属性を示すことを特徴とする請求項５１に記載のコンピュータ読み取り可能な記憶媒体。
【請求項５８】
ビデオを符号化する方法であって、
ａ）前記ビデオのシーケンスにおける第１のイメージの第１の部分に関して、前記第１の部分の複雑性が原因で視聴者にとって認識できない符号化アーチファクトの度合いを定量化する、第１の視覚マスキング強度を特定するステップと、
ｂ）前記特定された視覚マスキング強度に基づいて前記第１のイメージの少なくとも一部分を符号化するステップと、
を備えることを特徴とする方法。
【請求項５９】
前記視覚マスキング強度は、前記第１の部分の空間的複雑性を示すことを特徴とする請求項５８に記載の方法。
【請求項６０】
前記空間的複雑性は、前記イメージの一部分に関するピクセル値の関数として計算されることを特徴とする請求項５９に記載の方法。
【請求項６１】
前記第１の部分は、複数のピクセル、および各々のピクセルに対するイメージ値を有し、
前記第１の部分に関する前記視覚マスキング強度を特定するステップは、
ａ）前記第１の部分の前記ピクセルのイメージ値を推定するステップと、
ｂ）前記第１の部分の前記ピクセルの前記イメージ値から前記統計的な属性を減算するステップと、
ｃ）前記減算の結果に基づいて前記視覚マスキング強度を計算するステップと、
を備えることを特徴とする請求項６０に記載の方法。
【請求項６２】
前記推定されたイメージ値は、前記第１の部分のピクセルのイメージ値に関する統計的な属性であることを特徴とする請求項６１に記載の方法。
【請求項６３】
前記統計的な属性は、中央値であることを特徴とする請求項６２に記載の方法。
【請求項６４】
前記推定されたイメージ値は、前記第１の部分のピクセルの近隣にあるピクセルに部分的に基づいていることを特徴とする請求項６１に記載の方法。
【請求項６５】
前記視覚マスキング強度は、前記第１の部分の時間的複雑性を示すことを特徴とする請求項５８に記載の方法。
【請求項６６】
前記時間的複雑性は、前記第１のイメージの前記第１の部分内に定義されたピクセル領域に関する動き補償された誤差信号の関数として計算されることを特徴とする請求項６５に記載の方法。
【請求項６７】
前記時間的複雑性は、前記第１のイメージの前記第１の部分内に定義されたピクセル領域に関する動き補償された誤差信号と、他のイメージのセットにおける第２の部分のセット内に定義されたピクセルに関する動き補償された誤差信号と、の関数として計算されることを特徴とする請求項６５に記載の方法。
【請求項６８】
前記他のイメージのセットは、１つのイメージのみを含むことを特徴とする請求項６７に記載の方法。
【請求項６９】
前記他のイメージのセットは、複数のイメージを含むことを特徴とする請求項６７に記載の方法。
【請求項７０】
前記動き補償された誤差信号は、混合された動き補償された誤差信号であり、
前記方法は、
ａ）各々の他のイメージに関する重み係数を定義するステップと、
ｂ）前記第１のイメージ、および前記他のイメージのセットにおける各々のイメージに対して、個々の動き補償された誤差信号を計算するステップと、
ｃ）前記重み係数を使用して、前記個々の動き補償された誤差信号から前記混合された動き補償された誤差信号を生成するステップと、
をさらに備え、
前記ビデオのシーケンスにおいて、前記第１のイメージに対して第２のイメージが第３のイメージよりも近い場合に、前記第２のイメージの重み係数は、前記第３のイメージの重み係数よりも大きい
ことを特徴とする請求項６９に記載の方法。
【請求項７１】
前記第１のイメージを伴うシーンの一部ではない前記他のイメージのセットにおけるイメージのサブセットに関する重み係数が、前記イメージのサブセットを排除するために選択されることを特徴とする請求項７０に記載の方法。
【請求項７２】
前記他のイメージのセットは、前記第１のイメージを伴うシーンの一部であるイメージのみを含み、他のシーンに関連するいかなるイメージも含まないことを特徴とする請求項６７に記載の方法。
【請求項７３】
前記第２のイメージは、前記第１のイメージ以前に発生した過去のイメージのセット、および前記第１のイメージ以後に発生する将来のイメージのセットから選択されることを特徴とする請求項６７に記載の方法。
【請求項７４】
前記視覚マスキング強度は、空間的複雑性の成分および時間的複雑性の成分を含み、
前記方法は、
前記空間的複雑性の成分と前記時間的複雑性の成分とを相互に比較するステップと、
前記視覚マスキング強度に対する前記空間的複雑性の成分の寄与および前記時間的複雑性の成分の寄与をそれぞれ許容することができる範囲に維持するために、所定の基準に基づいて、空間的複雑性の成分および時間的複雑性の成分を変更するステップと、
をさらに備えることを特徴とする請求項５８に記載の方法。
【請求項７５】
前記時間的複雑性の成分は、所定のフレームに関するルックアヘッド範囲内の来るべきシーン変化を考慮に入れて調整されることを特徴とする請求項７４に記載の方法。
【請求項７６】
前記視覚マスキング強度は、前記第１の部分の輝度属性を示すことを特徴とする請求項５８に記載の方法。
【請求項７７】
前記輝度属性は、前記第１の部分の平均ピクセル輝度として計算されることを特徴とする請求項７６に記載の方法。
【請求項７８】
前記第１の部分は、前記第１のイメージ全体であることを特徴とする請求項５８に記載の方法。
【請求項７９】
前記第１の部分は、前記第１のイメージ全体よりも小さいことを特徴とする請求項５８に記載の方法。
【請求項８０】
前記第１の部分は、前記第１のイメージ内のマクロブロックであることを特徴とする請求項７９に記載の方法。
【請求項８１】
ビデオを符号化するためのコンピュータプログラムを記憶しているコンピュータ読み取り可能な記憶媒体であって、前記コンピュータプログラムは、以下に列挙する命令セットを含むことを特徴とするコンピュータ読み取り可能な記憶媒体。
ａ）前記ビデオのシーケンスにおける第１のイメージの第１の部分に関する複雑性を定量化する第１の視覚マスキング強度を特定すること。
ｂ）前記特定された視覚マスキング強度に基づいて前記第１のイメージの少なくとも一部分を符号化すること。
【請求項８２】
前記視覚マスキング強度は、前記第１の部分の空間的複雑性が原因で視聴者にとって認識できない符号化アーチファクトの度合いを定量化することを特徴とする請求項８１に記載のコンピュータ読み取り可能な記憶媒体。
【請求項８３】
前記視覚マスキング強度は、前記第１の部分の前記ビデオにおける動きが原因で視聴者にとって認識できない符号化アーチファクトの度合いを示し、
前記動きは、前記第１のイメージ、および前記第１のイメージの前後のイメージのセットによって捕捉される
ことを特徴とする請求項８１に記載のコンピュータ読み取り可能な記憶媒体。
【請求項８４】
前記視覚マスキング強度は、空間的複雑性および時間的複雑性を含み、
前記コンピュータプログラムは、
前記空間的複雑性の成分と前記時間的複雑性の成分とを相互に比較する命令セットと、
前記視覚マスキング強度に対する前記空間的複雑性の成分の寄与および前記時間的複雑性の成分の寄与をそれぞれ許容することができる範囲に維持するために、基準のセットに基づいて、空間的複雑性の成分および時間的複雑性の成分を変更する命令セットと、
をさらに含むことを特徴とする請求項８１に記載のコンピュータ読み取り可能な記憶媒体。
【請求項８５】
前記視覚マスキング強度は、空間的複雑性および時間的複雑性を含み、
前記コンピュータプログラムは、前記空間的複雑性の時間的傾向、およびイメージのセット中の前記時間的複雑性を平滑化することによって、前記空間的複雑性、および前記時間的複雑性を変更する命令セットをさらに含むことを特徴とする請求項８４に記載のコンピュータ読み取り可能な記憶媒体。
【請求項８６】
前記時間的複雑性の成分は、所定のフレームに関するルックアヘッド範囲内の来るべきシーン変化を考慮に入れて調整されることを特徴とする請求項８４に記載のコンピュータ読み取り可能な記憶媒体。
【請求項８７】
前記視覚マスキング強度の属性は、前記第１の部分に関する輝度属性を示すことを特徴とする請求項８１に記載のコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチパスのビデオ符号化に関する。
【背景技術】
【０００２】
ビデオ符号器は、様々な符号化方式を使用することにより、ビデオイメージ（動画像）（例えば、ビデオフレーム）のシーケンスを符号化する。ビデオ符号化方式は、通常、ビデオフレーム、またはビデオフレームの諸部分（例えば、ビデオフレーム中のピクセルの集合（ピクセルセット））をフレーム内、またはフレーム間に関して符号化する。フレーム内符号化されたフレームまたはピクセルセットとは、他のフレーム、または他のフレームの中のピクセルセットとは独立に符号化されたフレームまたはピクセルセットである。フレーム間符号化されたフレームまたはピクセルセットとは、１以上の他のフレーム、または１以上の他のフレームの中の１以上のピクセルセットを参照して符号化されたフレームまたはピクセルセットである。
【０００３】
ビデオフレームを圧縮する際、一部の符号器は、符号化されるべきビデオフレームまたはビデオフレームの集合（ビデオフレームセット）のための「ビット予算(bit budget)」を提供する、「レートコントローラ」を実施する。ビット予算は、ビデオフレームまたはビデオフレームセットを符号化するのに割り当てられたビットの数を指定する。ビット予算を効率的に割り当てることにより、レートコントローラは、ある制約（例えば、目標ビットレート、その他）に鑑みて、最高品質の圧縮されたビデオストリームを生成しようと試みる。
【０００４】
今日まで、様々な単一パスのレートコントローラおよびマルチパスのレートコントローラが、提案されてきた。単一パスのレートコントローラは、一連のビデオイメージを１回のパスで符号化する符号化方式のためのビット予算を提供するのに対して、マルチパスのレートコントローラは、一連のビデオイメージを複数回のパスで符号化する符号化方式のためのビット予算を提供する。
【０００５】
単一パスのレートコントローラは、リアルタイムの符号化状況において役立つ。他方、マルチパスのレートコントローラは、一連の制約に基づく特定のビットレートに関する符号化を最適化する。符号化におけるビットレートを制御する際に、フレームまたはフレーム内のピクセルセットの空間的複雑性、または時間的複雑性を考慮に入れる、レートコントローラは、現在、多くはない。また、ほとんどのマルチパスのレートコントローラは、所望されるビットレートに鑑みて、フレームおよびフレーム内のピクセルセットのうちの少なくとも一方に関して、最適な量子化パラメータを使用する符号化ソリューションを求めて、解空間を十分に探索することもしない。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
したがって、当技術分野において、新規な技術を使用して、ビデオイメージの集合（ビデオイメージセット）を符号化するためのビットレートを制御しながら、ビデオイメージおよびビデオイメージの諸部分のうちの少なくとも一方の空間的複雑性、または時間的複雑性を考慮する、レートコントローラの必要性が存在する。また、当技術分野において、符号化ソリューションを十分に調べて、ビデオイメージおよびビデオイメージの諸部分のうちの少なくとも一方に関して、最適な量子化パラメータセットを使用する符号化ソリューションを特定する、マルチパスのレートコントローラの必要性も存在する。
【課題を解決するための手段】
【０００７】
本発明の一部の実施形態は、いくつかのイメージ（例えば、ビデオシーケンスのいくつかのフレーム）を符号化するマルチパス符号化方法を提供する。本方法は、それらのイメージを符号化する符号化操作を繰り返し実行する。符号化操作は、本方法がイメージに関する量子化パラメータを計算するために使用する、名目量子化パラメータ(nominal QP)に基づく。符号化操作の数回の異なる繰り返し中、本方法は、いくつかの異なる名目量子化パラメータを使用する。本方法は、終了の基準に達すると（例えば、本方法が、許容できるイメージの符号化を特定すると）、繰り返しを停止する。
【０００８】
本発明の一部の実施形態は、ビデオシーケンスを符号化するための方法を提供する。本方法は、ビデオの中の第１のイメージの複雑性を定量化する第１の属性を特定する。また、本方法は、特定された第１の属性に基づき、第１のイメージを符号化するための量子化パラメータも特定する。次に、本方法は、特定された量子化パラメータに基づき、第１のイメージを符号化する。一部の実施形態では、この方法は、ビデオの中のいくつかのイメージに関して、以上３つの操作を実行する。
【０００９】
本発明の一部の実施形態は、ビデオイメージ、およびビデオイメージの諸部分のうちの少なくとも一方の「視覚マスキング」属性に基づき、ビデオイメージのシーケンスを符号化する。イメージ、またはイメージの一部の視覚マスキングは、そのイメージまたはイメージ部分の中で、どれだけの符号化アーチファクトが許容されることが可能であるかの指標である。イメージまたはイメージ部分の視覚マスキング属性を表現するのに、一部の実施形態は、そのイメージまたはイメージ部分の輝度エネルギーを定量化する視覚マスキング強度を計算する。一部の実施形態では、輝度エネルギーは、イメージまたはイメージ部分の平均ルーマ（Ｌｕｍａ，輝度）エネルギーまたは平均ピクセルエネルギーの関数として測定される。
【００１０】
輝度エネルギーの代わりに、または輝度エネルギーと併せて、イメージまたはイメージ部分の視覚マスキング強度は、イメージまたはイメージ部分の活動エネルギーも定量化することが可能である。活動エネルギーは、イメージまたはイメージ部分の複雑性を表現する。一部の実施形態では、活動エネルギーは、イメージまたはイメージ部分の空間的複雑性を定量化する空間的成分、および、イメージ間の動きに起因する、許容されマスキングされることが可能な歪みの量を定量化する動き成分のうちの少なくとも一方を含む。
【００１１】
本発明の一部の実施形態は、ビデオシーケンスを符号化するための方法を提供する。本方法は、ビデオの中の第１のイメージの視覚マスキング属性を特定する。また、本方法は、特定された視覚マスキング属性に基づき、第１のイメージを符号化するための量子化パラメータも特定する。次に、本方法は、特定された量子化パラメータに基づき、第１のイメージを符号化する。
【００１２】
本発明の新規な諸特徴は、添付の特許請求の範囲で示される。しかし、説明のため、本発明のいくつかの実施形態が、以下の図で示される。
【発明を実施するための最良の形態】
【００１３】
本発明の以下の詳細な説明では、本発明の多数の詳細、実施例、および実施形態が示され、説明される。しかし、本発明は、示される諸実施形態に限定されないこと、ならびに本発明は、説明される特定の詳細および実施例の一部を伴うことなしに実施されてもよいことが、当業者には明瞭かつ明白であろう。
【００１４】
［Ｉ．定義］
このセクションは、本明細書で使用されるいくつかの記号に関する定義を与える。
【００１５】
ＲＴは、フレームシーケンスの符号化に対して所望されるビットレートである、目標ビットレートを表す。通常、このビットレートは、毎秒のビット数単位（ビット／秒）で表現され、所望される最終ファイルサイズ、シーケンスの中のフレーム数、およびフレームレートから計算される。
【００１６】
Ｒｐは、パスｐの終了時における、符号化されたビットストリームのビットレートを表す。
【００１７】
Ｅｐは、パスｐの終了時における、ビットレートの誤差のパーセンテージを表す。一部のケースでは、そのパーセンテージは、
【００１８】
【数１】
2008504750.tif 000003
【００１９】
として計算される。
【００２０】
εは、最終ビットレートの許容誤差を表す。
【００２１】
εＣは、第１のＱＰ探索段階に関するビットレートの許容誤差を表す。
【００２２】
ＱＰは、量子化パラメータを表す。
【００２３】
ＱＰＮｏｍ（ｐ）は、フレームシーケンスに関する、パスｐでの符号化において使用される名目量子化パラメータ(nominal QP)を表す。ＱＰＮｏｍ（ｐ）の値は、目標ビットレートに達するように、第１のＱＰ調整段階において本発明のマルチパス符号器によって調整される。
【００２４】
ＭＱＰｐ（ｋ）は、パスｐにおけるフレームｋに関する量子化パラメータ（ＱＰ）である、マスキングされたフレームＱＰを表す。一部の実施形態は、名目ＱＰ、およびフレームレベルでの視覚マスキングを使用することにより、この値を計算する。
【００２５】
ＭＱＰＭＢ（ｐ）（ｋ，ｍ）は、フレームｋおよびパスｐにおける個別のマクロブロック（マクロブロックインデックスｍを有する）に関する量子化パラメータ（ＱＰ）である、マスキングされたマクロブロックＱＰを表す。一部の実施形態は、ＭＱＰｐ（ｋ）およびマクロブロックレベルでの視覚マスキングを使用することにより、ＭＱＰＭＢ（ｐ）（ｋ，ｍ）を計算する。
【００２６】
φＦ（ｋ）は、フレームｋに関するマスキング強度と呼ばれる値を表す。マスキング強度φＦ（ｋ）は、フレームに関する複雑性の尺度であり、一部の実施形態では、この値は、符号化アーチファクト／雑音が、どれだけ目に見えるように現れるかを判定するのに使用され、フレームｋのＭＱＰｐ（ｋ）を計算するのに使用される。
【００２７】
φＲ（ｐ）は、パスｐにおける基準マスキング強度を表す。基準マスキング強度は、フレームｋのＭＱＰｐ（ｋ）を計算するのに使用され、目標ビットレートを達成するために、第２の段階において本発明のマルチパス符号器によって調整される。
【００２８】
φＭＢ（ｋ，ｍ）は、フレームｋの中のインデックスｍを有するマクロブロックに関するマスキング強度を表す。マスキング強度φＭＢ（ｋ，ｍ）は、マクロブロックに関する複雑性の尺度であり、一部の実施形態では、符号化アーチファクト／雑音が、どれだけ目に見えるように現れるかを判定するのに使用され、ＭＱＰＭＢ（ｐ）（ｋ，ｍ）を計算するのに使用される。
【００２９】
ＡＭＱＰｐは、パスｐにおけるフレーム群にわたる平均のマスキングされたＱＰを表す。一部の実施形態では、この値は、パスｐにおけるすべてのフレームにわたる平均のＭＱＰｐ（ｋ）として計算される。
【００３０】
［ＩＩ．概要］
本発明の一部の実施形態は、所与のビットレートでフレームシーケンスを符号化することに関して、最良の視覚的品質を実現する符号化方法を提供する。一部の実施形態では、この方法は、量子化パラメータＱＰをすべてのマクロブロックに割り当てる視覚マスキングプロセスを使用する。この割り当ては、イメージまたはビデオフレームの中のより明るい領域内、または空間的に複雑な領域内の符号化アーチファクト／雑音が、より暗い領域内、または均一の領域内におけるほどは、目に見えないという認識に基づく。
【００３１】
一部の実施形態では、この視覚マスキングプロセスは、本発明のマルチパス符号化プロセス（マルチパスの符号化プロセス）の一環として実行される。この符号化プロセスは、最終的な符号化されたビットストリームが、目標ビットレートに達するようにするために、名目量子化パラメータを調整し、基準マスキング強度パラメータφＲを介して、視覚マスキングプロセスを制御する。後段でさらに説明されるとおり、名目量子化パラメータを調整すること、およびマスキングアルゴリズムを制御することにより、各ピクチャ（すなわち、通常のビデオ符号化方式においては、各フレーム）に関するＱＰ値、および各ピクチャ内の各マクロブロックが調整される。
【００３２】
一部の実施形態では、マルチパス符号化プロセスは、シーケンス全体に関する名目ＱＰおよびφＲを全体的に調整する。他の諸実施形態では、このプロセスは、ビデオシーケンスをセグメントに分割し、各セグメントに関して、名目ＱＰおよびφＲが調整される。後段の説明は、マルチパス符号化プロセスが使用されるフレームシーケンスについて述べる。そのシーケンスには、一部の実施形態では、シーケンス全体が含まれるのに対して、他の諸実施形態では、あるシーケンスのあるセグメントだけが含まれることが、当業者には認識されよう。
【００３３】
一部の実施形態では、本方法は、３つの符号化段階を有する。これら３つの段階は、（１）パス０において実行される初期分析段階、（２）パス１乃至パスＮ１において実行される第１の探索段階、および（３）パスＮ１＋１乃至Ｎ１＋Ｎ２において実行される第２の探索段階である。
【００３４】
初期分析段階において（すなわち、パス０中に）、本方法は、名目ＱＰ（符号化のパス１において使用されるべきＱＰＮｏｍ（１））の初期値を特定する。また、初期分析段階中、本方法は、第１の探索段階におけるすべてのパスにおいて使用される、基準マスキング強度φＲの値も特定する。
【００３５】
第１の探索段階で、本方法は、符号化プロセスのＮ１回の繰り返し（すなわち、Ｎ１回のパス）を実行する。各パスｐ中に各フレームｋに関して、プロセスは、特定の量子化パラメータＭＱＰｐ（ｋ）、ならびにフレームｋ内の個々のマクロブロックｍに関する特定の量子化パラメータＭＱＰＭＢ（ｐ）（ｋ，ｍ）を使用することによってフレームを符号化する。ただし、ＭＱＰＭＢ（ｐ）（ｋ，ｍ）は、ＭＱＰｐ（ｋ）を使用して計算される。
【００３６】
第１の探索段階において、量子化パラメータＭＱＰｐ（ｋ）は、パスとパスの間で変化する名目量子化パラメータＱＰＮｏｍ（ｐ）から導出されるので、パスとパスの間で変化する。つまり、第１の探索段階中、各パスｐの終りに、プロセスは、パスｐ＋１に関する名目ＱＰＮｏｍ（ｐ＋１）を計算する。一部の実施形態では、名目ＱＰＮｏｍ（ｐ＋１）は、先行するパスからの名目ＱＰ値およびビットレート誤差に基づく。他の諸実施形態では、名目ＱＰＮｏｍ（ｐ＋１）値は、第２の探索段階において各パスの終りに、異なる形で計算される。
【００３７】
第２の探索段階で、本方法は、符号化プロセスのＮ２回の繰り返し（すなわち、Ｎ２回のパス）を実行する。第１の探索段階の場合と同様に、プロセスは、特定の量子化パラメータＭＱＰｐ（ｋ）、ならびにフレームｋ内の個々のマクロブロックｍに関する特定の量子化パラメータＭＱＰＭＢ（ｐ）（ｋ，ｍ）を使用することにより、各パスｐ中に各フレームｋを符号化する。ただし、ＭＱＰＭＢ（ｐ）（ｋ，ｍ）は、ＭＱＰｐ（ｋ）から導出される。
【００３８】
やはり、第１の探索段階の場合と同様に、量子化パラメータＭＱＰｐ（ｋ）は、パスとパスの間に変化する。しかし、第２の探索段階中、このパラメータは、パスとパスの間に変化する基準マスキング強度φＲ（ｐ）を使用して計算されるという理由により変化する。一部の実施形態では、基準マスキング強度φＲ（ｐ）は、先行するパスからのビットレートの誤差、およびφＲの値に基づいて計算される。他の諸実施形態では、この基準マスキング強度は、第２の探索段階において各プロセスの終りに、異なる値となるように計算される。
【００３９】
マルチパス符号化プロセスは、視覚マスキングプロセスに関連して説明されるが、符号器は、これら両方のプロセスを一緒に使用しなくてもよいことが、当業者には認識されよう。例えば、一部の実施形態では、マルチパス符号化プロセスは、φＲを無視し、前述した第２の探索段階を省くことにより、視覚マスキングなしに、所与の目標ビットレート近傍のビットストリームを符号化するのに使用される。
【００４０】
視覚マスキングおよびマルチパス符号化プロセスを、本出願のセクションＩＩＩおよびセクションＩＶにおいてさらに説明する。
【００４１】
［ＩＩＩ．視覚マスキング］
名目量子化パラメータが与えられると、視覚マスキングプロセスはまず、基準マスキング強度（φＲ）およびフレームのマスキング強度（φＦ）を使用して、各フレームに関するマスキングされたフレーム量子化パラメータ（ＭＱＰ）を計算する。次に、このプロセスは、フレームレベルおよびマクロブロックレベルのマスキング強度（φＦおよびφＭＢ）に基づき、各マクロブロックに関するマスキングされたマクロブロック量子化パラメータ（ＭＱＰＭＢ）を計算する。視覚マスキングプロセスが、マルチパス符号化プロセスにおいて使用される場合、一部の実施形態における基準マスキング強度（φＲ）は、前述し、後段でさらに説明するとおり、第１の符号化パス中に特定される。
【００４２】
＜Ａ．フレームレベルのマスキング強度を計算すること＞
１．第１のアプローチ
フレームレベルのマスキング強度φＦ（ｋ）を計算するのに、一部の実施形態は、以下の数式（Ａ）を使用する。すなわち、
φＦ(k)=C*power(E*avgFrameLuma(k),β)*power(D*avgFrameSAD(k),αＦ), (A)
ただし、
・ａｖｇＦｒａｍｅＬｕｍａ（ｋ）は、ｂが、１以上の整数である（例えば、ｂ＝１またはｂ＝４）、ｂ×ｂの領域を使用して計算される、フレームｋ内の平均ピクセル輝度であり、
・ａｖｇＦｒａｍｅＳＡＤ（ｋ）は、フレームｋ内のすべてのマクロブロックにわたるＭｂＳＡＤ（ｋ，ｍ）の平均であり、
・ＭｂＳＡＤ（ｋ，ｍ）は、インデックスｍを有するマクロブロック内のすべての４×４ブロックに関する関数、Ｃａｌｃ４×４ＭｅａｎＲｅｍｏｖｅｄＳＡＤ（４×４＿ｂｌｏｃｋ＿ｐｉｘｅｌ＿ｖａｌｕｅｓ）によって与えられる値の合計であり、
・αＦ、Ｃ、Ｄ、およびＥは、定数であり、かつ（或いは）、局所的な統計に適合されており、
かつ、
・ｐｏｗｅｒ（ａ，ｂ）は、ａｂを意味する。
【００４３】
関数Ｃａｌｃ４×４ＭｅａｎＲｅｍｏｖｅｄＳＡＤに関する擬似コードは、以下のとおりである。すなわち、
Calc4x4MeanRemovedSAD(4x4_block_pixel_values)
｛
所与の４×４ブロック内のピクセル値の平均値を計算する；
ピクセル値から平均値を引き、絶対値を計算する；
１つ前の工程で得られた絶対値を合計する；
合計を返す(return the sum;)；
｝
【００４４】
２．第２のアプローチ
他の諸実施形態は、フレームレベルのマスキング強度を異なる形で計算する。例えば、前述した数式（Ａ）は、フレームのマスキング強度を基本的に以下のように計算する。すなわち、
φＦ(k)=C*power(E*Brightness_Attribute,exponent0)*
power(scalar*Spatial_Activity_Attribute,exponent1)
である。
【００４５】
数式（Ａ）では、フレームのＢｒｉｇｈｔｎｅｓｓ＿Ａｔｔｒｉｂｕｔｅは、ａｖｇＦｒａｍｅＬｕｍａ（ｋ）と等しくなり、Ｓｐａｔｉａｌ＿Ａｃｔｉｖｉｔｙ＿Ａｔｔｒｉｂｕｔｅは、フレーム内のすべてのマクロブロックにわたる平均マクロブロックＳＡＤ（ＭｂＳＡＤ（ｋ，ｍ））値であるａｖｇＦｒａｍｅＳＡＤ（ｋ）と等しくなる。ただし、平均マクロブロックＳＡＤは、マクロブロック内のすべての４×４ブロックに関する（Ｃａｌｃ４×４ＭｅａｎＲｅｍｏｖｅｄＳＡＤによって与えられる）平均隔たり４×４ピクセル偏差(mean removed 4x4 pixel variation)の絶対値の合計に等しい。このＳｐａｔｉａｌ＿Ａｃｔｉｖｉｔｙ＿Ａｔｔｒｉｂｕｔｅは、符号化されているフレーム内のピクセル領域内における空間的イノベーション（空間的変化）の量を測定する。
【００４６】
他の諸実施形態は、いくつかの連続するフレームにわたるピクセル領域内の時間的イノベーション（時間的変化）の量を含むように活動性(activity)の尺度を拡張する。具体的には、それらの実施形態は、以下のとおりフレームのマスキング強度を計算する。すなわち、
φＦ(k)=C*power(E*Brightness_Attribute,exponent0)*
power(scalar*Activity_Attribute,exponent1)      (B)
である。
【００４７】
この数式では、Ａｃｔｉｖｉｔｙ＿Ａｔｔｒｉｂｕｔｅが、以下の数式（Ｃ）によって与えられる。すなわち、
Activity_Attribute=G*power(D*Spatial_Activity_Attribute,exponent_beta)+
E*power(F*Temporal_Activity_Attribute,exponent_delta)  (C)
である。
【００４８】
一部の実施形態では、Ｔｅｍｐｏｒａｌ＿Ａｃｔｉｖｉｔｙ＿Ａｔｔｒｉｂｕｔｅは、フレーム間の動きに起因する、許容される（すなわち、マスキングされる）ことが可能な歪みの量を定量化する。それらの実施形態の一部では、フレームのＴｅｍｐｏｒａｌ＿Ａｃｔｉｖｉｔｙ＿Ａｔｔｒｉｂｕｔｅは、ある定数に、フレーム内の定義されたピクセル領域の動き補償された誤差信号の絶対値の合計を掛けた値に等しい。他の諸実施形態では、Ｔｅｍｐｏｒａｌ＿Ａｃｔｉｖｉｔｙ＿Ａｔｔｒｉｂｕｔｅは、以下の数式（Ｄ）によって与えられる。すなわち、
【００４９】
【数Ｄ】
2008504750.tif 000004
【００５０】
である。
【００５１】
数式（Ｄ）では、「ａｖｇＦｒａｍｅＳＡＤ」は、（前述したとおり、）フレーム内の平均マクロブロックＳＡＤ（ＭｂＳＡＤ（ｋ，ｍ））値を表し、ａｖｇＦｒａｍｅＳＡＤ（０）は、現在のフレームに関するａｖｇＦｒａｍｅＳＡＤであり、負のｊは、現在のフレームより前の時間インスタンスを指し示し、正のｊは、現在のフレームより後の時間インスタンスを指し示す。このため、ａｖｇＦｒａｍｅＳＡＤ（ｊ＝−２）は、現在のフレームより前の２つのフレームの平均フレームＳＡＤを表し、ａｖｇＦｒａｍｅＳＡＤ（ｊ＝３）は、現在のフレームより後の３つのフレームの平均フレームＳＡＤを表す。
【００５２】
また、数式（Ｄ）において、変数Ｎおよび変数Ｍは、現在のフレームより前のフレームの数、および現在のフレームより後のフレームの数をそれぞれ示す。特定のフレーム数に基づいて値Ｎおよび値Ｍを単に選択する代わりに、一部の実施形態は、現在のフレームの時間より前の、特定の時間の長さ、およびその時間より後の、特定の時間の長さに基づき、値Ｎおよび値Ｍを計算する。動きマスキングを時間的長さと互いに関係付けることは、動きマスキングを所定のフレーム数と互いに関係付けることよりも有利である。これは、動きマスキングを時間的長さと互いに関係付けることが、見る人の時間ベースの視覚的認識にまさに一致しているからである。他方、そのようなマスキングをフレーム数と互いに関係付けることには、異なるディスプレイが、異なるフレームレートでビデオを提示するので、表示時間が定まらないという難点がある。
【００５３】
数式（Ｄ）において、「Ｗ」は、一部の実施形態では、フレームｊが、現在のフレームから離れるにつれ、減少する重み係数を指す。やはり、この数式において、第１の合計は、現在のフレームより前にマスキングされることが可能な動きの量を表し、第２の合計は、現在のフレームより後にマスキングされることが可能な動きの量を表し、最後の項（ａｖｇＦｒａｍｅＳＡＤ（０））は、現在のフレームのフレームＳＡＤを表す。
【００５４】
一部の実施形態では、重み係数は、シーン変化を考慮に入れるように調整される。例えば、一部の実施形態は、ルックアヘッド範囲内（すなわち、Ｍ個のフレームの範囲内）の来たるべきシーン変化を考慮に入れるが、シーン変化後のいずれのフレームも考慮に入れない。例えば、それらの実施形態は、シーン変化後のルックアヘッド範囲内のフレームに関しては、重み係数を０に設定することが可能である。また、一部の実施形態は、ルックビハインド範囲内（すなわち、Ｎ個のフレームの範囲内）で、シーン変化に先立つフレーム、またはシーン変化時のフレームを考慮に入れない。例えば、それらの実施形態は、前のシーンに関係する、または前のシーン変化の前に来るルックビハインド範囲内のフレームに関しては、重み係数を０に設定することが可能である。
【００５５】
３．第２のアプローチの変形例
ａ）Ｔｅｍｐｏｒａｌ＿Ａｃｔｉｖｉｔｙ＿Ａｔｔｒｉｂｕｔｅに対する過去のフレーム、および将来のフレームの影響を制限すること
前述の数式（Ｄ）は、Ｔｅｍｐｏｒａｌ＿Ａｃｔｉｖｉｔｙ＿Ａｔｔｒｉｂｕｔｅを基本的に以下の関係で表現する。すなわち、
Temporal_Activity_Attribute=Past_Frame_Activity+Future_Frame_Activity+
Current_Frame_Activity
ただし、Ｐａｓｔ＿Ｆｒａｍｅ＿Ａｃｔｉｖｉｔｙ（ＰＦＡ）は、
【００５６】
【数２】
2008504750.tif 000005
【００５７】
に等しく、Ｆｕｔｕｒｅ＿Ｆｒａｍｅ＿Ａｃｔｉｖｉｔｙ（ＦＦＡ）は、
【００５８】
【数３】
2008504750.tif 000006
【００５９】
に等しく、Ｃｕｒｒｅｎｔ＿Ｆｒａｍｅ＿Ａｃｔｉｖｉｔｙ（ＣＦＡ）は、ａｖｇＦｒａｍｅＳＡＤ（ｃｕｒｒｅｎｔ）に等しい。
【００６０】
一部の実施形態は、Ｔｅｍｐｏｒａｌ＿Ａｃｔｉｖｉｔｙ＿Ａｔｔｒｉｂｕｔｅの計算を変更して、Ｐａｓｔ＿Ｆｒａｍｅ＿Ａｃｔｉｖｉｔｙも、Ｆｕｔｕｒｅ＿Ｆｒａｍｅ＿Ａｃｔｉｖｉｔｙも、Ｔｅｍｐｏｒａｌ＿Ａｃｔｉｖｉｔｙ＿Ａｔｔｒｉｂｕｔｅの値を過度にコントロールしないようにする。例えば、一部の実施形態は、最初、ＰＦＡが、
【００６１】
【数４】
2008504750.tif 000007
【００６２】
と等しくなり、ＦＦＡが、
【００６３】
【数５】
2008504750.tif 000008
【００６４】
と等しくなるように定義する。
【００６５】
これらの実施形態は、次に、ＰＦＡが、スカラー掛けるＦＦＡより大きいかどうかを判定する。大きい場合、それらの実施形態は、次に、ＰＦＡを、ＰＦＡ上限値（例えば、スカラー掛けるＦＦＡ）と等しくなるように設定する。ＰＦＡ上限値と等しくなるようにＰＦＡを設定することに加え、一部の実施形態は、ＦＦＡを０に設定することと、ＣＦＡを０に設定することの組み合わせも実行することができる。他の諸実施形態は、ＰＦＡとＣＦＡのいずれか、または両方を、ＰＦＡ、ＣＦＡ、およびＦＦＡの重み付き組み合わせに設定することが可能である。
【００６６】
同様に、ＰＦＡ値およびＦＦＡ値を重み付き合計に基づいて最初に定義した後、一部の実施形態は、ＦＦＡ値が、スカラー掛けるＰＦＡより大きいかどうかも判定する。大きい場合、それらの実施形態は、次に、ＦＦＡを、ＦＦＡ上限値（例えば、スカラー掛けるＰＦＡ）と等しくなるように設定する。ＦＦＡ上限値と等しくなるようにＦＦＡを設定することに加え、一部の実施形態は、ＰＦＡを０に設定することと、ＣＦＡを０に設定することの組み合わせも実行することができる。他の諸実施形態は、ＦＦＡとＣＦＡのいずれか、または両方を、ＦＦＡ、ＣＦＡ、およびＰＦＡの重み付き組み合わせに設定することが可能である。
【００６７】
（重み付き合計に基づく、ＰＦＡ値およびＦＦＡ値の初期計算後の）続いて行われるＰＦＡ値およびＦＦＡ値の可能な調整により、これらの値のいずれかが、Ｔｅｍｐｏｒａｌ＿Ａｃｔｉｖｉｔｙ＿Ａｔｔｒｉｂｕｔｅを過度にコントロールすることも防止される。
【００６８】
ｂ）Ｓｐａｔｉａｌ＿Ａｃｔｉｖｉｔｙ＿ＡｔｔｒｉｂｕｔｅおよびＴｅｍｐｏｒａｌ＿Ａｃｔｉｖｉｔｙ＿ＡｔｔｒｉｂｕｔｅのＡｃｔｉｖｉｔｙ＿Ａｔｔｒｉｂｕｔｅに対する影響を制限すること
前述の数式（Ｃ）は、基本的に、以下の関係でＡｃｔｉｖｉｔｙ＿Ａｔｔｒｉｂｕｔｅを表す。すなわち、
Activity_Attribute=Spatial_Activity+Temporal_Activity
ただし、Ｓｐａｔｉａｌ＿Ａｃｔｉｖｉｔｙは、ｓｃａｌａｒ＊（ｓｃａｌａｒ＊Ｓｐａｔｉａｌ＿Ａｃｔｉｖｉｔｙ＿Ａｔｔｒｉｂｕｔｅ）βに等しく、Ｔｅｍｐｏｒａｌ＿Ａｃｔｉｖｉｔｙは、ｓｃａｌａｒ＊（ｓｃａｌａｒ＊Ｔｅｍｐｏｒａｌ＿Ａｃｔｉｖｉｔｙ＿Ａｔｔｒｉｂｕｔｅ）Δに等しい。
【００６９】
一部の実施形態は、Ａｃｔｉｖｉｔｙ＿Ａｔｔｒｉｂｕｔｅの計算を変更して、Ｓｐａｔｉａｌ＿Ａｃｔｉｖｉｔｙも、Ｔｅｍｐｏｒａｌ＿Ａｃｔｉｖｉｔｙも、Ａｃｔｉｖｉｔｙ＿Ａｔｔｒｉｂｕｔｅの値を過度にコントロールしないようにする。例えば、一部の実施形態は、最初、Ｓｐａｔｉａｌ＿Ａｃｔｉｖｉｔｙ（ＳＡ）が、ｓｃａｌａｒ＊（ｓｃａｌａｒ＊Ｓｐａｔｉａｌ＿Ａｃｔｉｖｉｔｙ＿Ａｔｔｒｉｂｕｔｅ）βと等しくなるように定義し、Ｔｅｍｐｏｒａｌ＿Ａｃｔｉｖｉｔｙ（ＴＡ）が、ｓｃａｌａｒ＊（ｓｃａｌａｒ＊Ｔｅｍｐｏｒａｌ＿Ａｃｔｉｖｉｔｙ＿Ａｔｔｒｉｂｕｔｅ）Δと等しくなるように定義する。
【００７０】
それらの実施形態は、次に、ＳＡが、スカラー掛けるＴＡよりも大きいかどうかを判定する。大きい場合、それらの実施形態は、次に、ＳＡを、ＳＡ上限値（例えば、スカラー掛けるＴＡ）と等しくなるように設定する。そのようなケースにおいてＳＡ上限と等しくなるようにＳＡを設定することに加え、一部の実施形態は、ＴＡ値を、０に、またはＴＡとＳＡの重み付き組み合わせに設定することも可能である。
【００７１】
同様に、指数方程式に基づいてＳＡ値およびＴＡ値を最初に定義した後、一部の実施形態は、ＴＡ値が、スカラー掛けるＳＡよりも大きいかどうかも判定する。大きい場合、それらの実施形態は、次に、ＴＡを、ＴＡ上限値（例えば、スカラー掛けるＳＡ）と等しくなるように設定する。そのようなケースにおいてＴＡ上限と等しくなるようにＴＡを設定することに加え、一部の実施形態は、ＳＡ値を０に、またはＳＡとＴＡの重み付き組み合わせに設定することも可能である。
【００７２】
（指数方程式に基づく、ＳＡ値およびＴＡ値の初期計算後の）続いて行われるＳＡ値およびＴＡ値の可能な調整により、これらの値のいずれかが、Ａｃｔｉｖｉｔｙ＿Ａｔｔｒｉｂｕｔｅを過度にコントロールすることも防止される。
【００７３】
＜Ｂ．マクロブロックレベルのマスキング強度を計算すること＞
１．第１のアプローチ
一部の実施形態では、マクロブロックレベルのマスキング強度φＭＢ（ｋ，ｍ）は、以下のとおり計算される。すなわち、
φＭＢ(k,m)=A*power(C*avgMbLuma(k,m),β)*power(B*MbSAD(k,m),αＭＢ), (F)
ただし、
・ａｖｇＭｂＬｕｍａ（ｋ，ｍ）は、フレームｋ、マクロブロックｍにおける平均ピクセル輝度であり、
・αＭＢ、β、Ａ、Ｂ、およびＣは、定数であり、かつ（或いは）、局所的な統計に適合されている。
【００７４】
２．第２のアプローチ
前述した数式（Ｆ）は、マクロブロックのマスキング強度を基本的に以下のとおり計算する。すなわち、
φＭＢ(k,m)=D*power(E*Mb_Brightness__Attribute,exponent0)*
power(scalar*Mb_Spatial_Activity_Attribute,exponent1)
である。
【００７５】
数式（Ｆ）において、マクロブロックのＭｂ＿Ｂｒｉｇｈｔｎｅｓｓ＿Ａｔｔｒｉｂｕｔｅは、ａｖｇＭｂＬｕｍａ（ｋ，ｍ）に等しく、Ｍｂ＿Ｓｐａｔｉａｌ＿Ａｃｔｉｖｉｔｙ＿Ａｔｔｒｉｂｕｔｅは、ａｖｇＭｂＳＡＤ（ｋ）に等しい。このＭｂ＿Ｓｐａｔｉａｌ＿Ａｃｔｉｖｉｔｙ＿Ａｔｔｒｉｂｕｔｅは、符号化中のマクロブロック内のピクセル領域内における空間的イノベーションの量を測定する。
【００７６】
フレームのマスキング強度の場合と全く同様に、一部の実施形態は、いくつかの連続するフレームにわたるピクセル領域内の時間的イノベーションの量を含むように、マクロブロックのマスキング強度における活動性の尺度を拡張することが可能である。具体的には、それらの実施形態は、マクロブロックのマスキング強度を以下のとおり計算する。すなわち、
φＭＢ(k,m)=D*power(E*Mb_Brightness__Attribute,exponent0)*
power(scalar*Mb_Activity_Attribute,exponent1)
ただし、Ｍｂ＿Ａｃｔｉｖｉｔｙ＿Ａｔｔｒｉｂｕｔｅは、以下の数式（Ｈ）によって与えられる。すなわち、
Mb_Activity_Attribute=F*power(D*Mb_Spatial_Activity_Attribute,exponent_beta)+
G*power(F*Mb_Temporal_Activity_Attribute,exponent_delta) (H)
である。
【００７７】
マクロブロックに関するＭｂ＿Ｔｅｍｐｏｒａｌ＿Ａｃｔｉｖｉｔｙ＿Ａｔｔｒｉｂｕｔｅの計算は、フレームに関するＭｂ＿Ｔｅｍｐｏｒａｌ＿Ａｃｔｉｖｉｔｙ＿Ａｔｔｒｉｂｕｔｅの前述した計算と同様であることが可能である。例えば、それらの実施形態の一部では、Ｍｂ＿Ｔｅｍｐｏｒａｌ＿Ａｃｔｉｖｉｔｙ＿Ａｔｔｒｉｂｕｔｅは、以下の数式（Ｉ）によって与えられる。すなわち、
【００７８】
【数Ｉ】
2008504750.tif 000009
【００７９】
である。
【００８０】
数式（Ｉ）の中の変数は、セクションＩＩＩ．Ａにおいて定義された。数式（Ｆ）において、フレームｉ内、またはフレームｊ内のマクロブロックｍは、現在のフレーム内のマクロブロックｍと同一の位置におけるマクロブロックであることが可能である。或いは、フレームｉ内、またはフレームｊ内のマクロブロックｍは、現在のフレーム内のマクロブロックｍと一致すると最初に予測されたフレームｉ内、またはフレームｊ内のマクロブロックであることが可能である。
【００８１】
数式（Ｉ）によって与えられるＭｂ＿Ｔｅｍｐｏｒａｌ＿Ａｃｔｉｖｉｔｙ＿Ａｔｔｒｉｂｕｔｅは、数式（Ｄ）によって与えられる、フレームのＴｅｍｐｏｒａｌ＿Ａｃｔｉｖｉｔｙ＿Ａｔｔｒｉｂｕｔｅの変更（前述のセクションＩＩＩ．Ａ．３で説明された）と同様の形で変更されることが可能である。具体的には、数式（Ｉ）によって与えられるＭｂ＿Ｔｅｍｐｏｒａｌ＿Ａｃｔｉｖｉｔｙ＿Ａｔｔｒｉｂｕｔｅは、過去のフレーム内、および将来のフレーム内におけるマクロブロックの過度の影響を制限するように変更されることが可能である。
【００８２】
同様に、数式（Ｈ）によって与えられるＭｂ＿Ａｃｔｉｖｉｔｙ＿Ａｔｔｒｉｂｕｔｅも、数式（Ｃ）によって与えられる、フレームのＡｃｔｉｖｉｔｙ＿Ａｔｔｒｉｂｕｔｅの変更（セクションＩＩＩ．Ａ．３で前述した）と同様の形で変更されることが可能である。具体的には、数式（Ｈ）によって与えられるＭｂ＿Ａｃｔｉｖｉｔｙ＿Ａｔｔｒｉｂｕｔｅは、Ｍｂ＿Ｓｐａｔｉａｌ＿Ａｃｔｉｖｉｔｙ＿ＡｔｔｒｉｂｕｔｅおよびＭｂ＿Ｔｅｍｐｏｒａｌ＿Ａｃｔｉｖｉｔｙ＿Ａｔｔｒｉｂｕｔｅの過度の影響を制限するように変更されることが可能である。
【００８３】
＜Ｃ．マスキングされたＱＰ値を計算すること＞
マスキング強度の値（φＦおよびφＭＢ）、および基準マスキング強度の値（φＲ）に基づき、視覚マスキングプロセスは、２つの関数ＣａｌｃＭＱＰおよびＣａｌｃＭＱＰｆｏｒＭＢを使用することにより、フレームレベルおよびマクロブロックレベルにおけるマスキングされたＱＰ値を計算することができる。これら２つの関数に関する擬似コードは、以下のとおりである。すなわち、
CalcMQP(nominalQP,φＦ,φＦ(k),maxQPFrameAdjustment)
｛
QPFrameAdjustment=βＦ*(φＦ(k)-φＲ)/φＲ；
[minQPFrameAdjustment,,maxQPFrameAdjustment]の範囲内に入るようにQPFrameAdjustmentをクリッピングする；
maskedQPofFrame=nominalQP+QPFrameAdjustment；
許容範囲内に入るようにmaskedQPofFrameをクリッヒ゜ンク゛する；
（フレームｋに関する）maskedQPofFrameを返す；
｝
CalcMQPforMB(maskedQPofFrame,φＦ(k),φＭＢ(k,m),maxQPMacroblockAdjustment)
｛
if(φＦ(k)＞T)  ただし、Ｔは、適切に選択された閾値
QPMacroblockAdjustment=βＭＢ*(φＭＢ(k,m)-φＦ(k))/φＦ(k)；
else
QPMacroblockAdjustment=0；
[minQPMacroblockAdjustment,,maxQPMacroblockAdjustment]の範囲内に入るようにQPMacroblockAdjustmentをクリッピングする；
maskedQPofMacrobleck=maskedQPofFrame+QPMacroblockAdjustment；
有効なＱＰ値範囲内に入るようにmaskedQPofMacroblockをクリッピングする；
maskedQPofMacroblockを返す；
｝
である。
【００８４】
前述の関数において、βＦおよびβＭＢは、所定の定数であること、または局所的な統計に適合させられることが可能である。
【００８５】
［ＩＶ．マルチパス符号化］
図１は、本発明の一部の実施形態に係るマルチパス符号化方法を概念的に示すプロセス１００を提示する。この図に示されるとおり、プロセス１００は、以下の３つのサブセクションで説明される３つの段階を有する。
【００８６】
＜Ａ．分析および初期（最初の）ＱＰ選択＞
図１に示されるとおり、プロセス１００は、最初、マルチパス符号化プロセスの初期分析段階中に（すなわち、パス０中に）、基準マスキング強度（φＲ（１））の初期値、および名目量子化パラメータ（ＱＰＮｏｍ（１））の初期値を計算する（１０５で）。初期基準マスキング強度（φＲ（１））は、第１の探索段階中に使用されるのに対して、初期名目量子化パラメータ（ＱＰＮｏｍ（１））は、第１の探索段階の第１のパス中に（すなわち、マルチパス符号化プロセスのパス１中に）使用される。
【００８７】
パス０の始めに、φＲ（０）は、何らかの任意の値、または実験的結果に基づいて選択された値（例えば、φＲ値の通常の範囲の中央値）であることが可能である。シーケンスの分析中、各フレームに関してマスキング強度φＦ（ｋ）が計算され、次に、基準マスキング強度φＲ（１）が、パス０の終りにおいてａｖｇ（φＦ（ｋ））と等しくなるように設定される。また、基準マスキング強度φＲに関する他の決定も可能である。例えば、基準マスキング強度φＲは、値φＦ（ｋ）の中央値として、または例えば、値φＦ（ｋ）の重み付き平均値などの、値φＦ（ｋ）に関する他の算術関数として計算されてもよい。
【００８８】
異なる複雑性を有する、初期ＱＰ選択のいくつかのアプローチが存在する。例えば、初期名目ＱＰは、任意の値（例えば、２６）として選択されることが可能である。代わりに、符号化実験に基づき、目標ビットレートに対して許容できる品質をもたらすことが知られている値が、選択されることも可能である。
【００８９】
また、初期名目ＱＰ値は、空間分解能、フレームレート、空間的／時間的複雑性、および目標ビットレートに基づき、ルックアップテーブルから選択されることも可能である。一部の実施形態では、この初期名目ＱＰ値は、以上のパラメータの各々に基づく距離の尺度を使用して、テーブルから選択されてもよい。あるいは、以上のパラメータの重み付き距離の尺度を使用して選択されてもよい。
【００９０】
また、この初期名目ＱＰ値は、レートコントローラを使用する（マスキングなしの）高速符号化中に、フレームＱＰ値が選択されるにつれ、フレームＱＰ値の調整された平均に設定されることも可能である。ただし、その平均は、パス０に関するビットレートパーセンテージのレート誤差Ｅ０に基づいて調整されている。また、同様に、初期名目ＱＰは、フレームＱＰ値の重み付きの調整された平均に設定されることも可能である。ただし、各フレームに関する重みは、飛ばされるマクロブロック（スキップドマクロブロック）として符号化されない、そのフレーム内のマクロブロックのパーセンテージによって決まる。代わりに、初期名目ＱＰは、基準マスキング強度をφＲ（０）からφＲ（１）に変更することの効果が考慮に入れられる限り、レートコントローラを使用する（マスキングなしの）高速符号化中に、フレームＱＰ値が選択されるにつれ、フレームＱＰ値の調整された平均、または調整された重み付き平均に設定されることも可能である。
【００９１】
＜Ｂ．第１の探索段階：名目ＱＰ調整＞
１０５の後、マルチパス符号化プロセス１００は、第１の探索段階に入る。第１の探索段階では、プロセス１００は、シーケンスに対するＮ１回の符号化を実行する。ただし、Ｎ１は、第１の探索段階中のパスの回数を表す。第１の段階の各パス中、プロセスは、変化する名目量子化パラメータを、一定の基準マスキング強度とともに使用する。
【００９２】
具体的には、第１の探索段階における各パスｐ中、プロセス１００は、各フレームｋに関する特定の量子化パラメータＭＱＰｐ（ｋ）、およびフレームｋ内のそれぞれの個別のマクロブロックに関する特定の量子化パラメータＭＱＰＭＢ（ｐ）（ｋ，ｍ）を計算する（１０７で）。所与の名目量子化パラメータＱＰＮｏｍ（ｐ）および基準マスキング強度φＲ（ｐ）に関するパラメータＭＱＰｐ（ｋ）およびＭＱＰＭＢ（ｐ）（ｋ，ｍ）の計算は、セクションＩＩＩで説明されている（ただし、ＭＱＰｐ（ｋ）およびＭＱＰＭＢ（ｐ）（ｋ，ｍ）は、セクションＩＩＩで前述した関数、ＣａｌｃＭＱＰおよびＣａｌｃＭＱＰｆｏｒＭＢを使用して計算される）。１０７中の第１のパス（すなわち、パス１）において、名目量子化パラメータおよび第１段階の基準マスキング強度は、初期分析段階１０５中に計算されたパラメータＱＰＮｏｍ（１）および基準マスキング強度φＲ（１）である。
【００９３】
１０７の後、プロセスは、１０７で計算された量子化パラメータ値に基づき、シーケンスを符号化する（１１０で）。次に、符号化プロセス１００は、終了すべきかどうかを判定する（１１５で）。異なる実施形態は、全体的な符号化プロセスを終了させることに関して、異なる基準を有する。マルチパス符号化プロセスを完全に終了させる終了条件の実施例には、以下が含まれる。すなわち、
・｜Ｅｐ｜＜εである場合。ただし、εは、最終ビットレートにおける許容誤差である。
・ＱＰＮｏｍ（ｐ）が、ＱＰ値の有効範囲の上限または下限にある場合。
・パスの回数が、容認できるパスの最大回数ＰＭＡＸを超えた場合。
【００９４】
一部の実施形態は、以上の終了条件のすべてを使用する可能性があるのに対して、他の諸実施形態は、これらの条件の一部だけを使用する可能性がある。さらに別の諸実施形態は、符号化プロセスを終了させることに関して、他の終了条件を使用することが可能である。
【００９５】
マルチパス符号化プロセスが、終了することを決めた場合（１１５で）、プロセス１００は、第２の探索段階を省き、１４５に進む。１４５で、プロセスは、最後のパスｐからのビットストリームを最終結果として保存し、その後、終了する。
【００９６】
他方、プロセスが、終了すべきではないと判定した場合（１１５で）、プロセスは、次に、第１の探索段階を終了させるべきかどうかを判定する（１２０で）。やはり、異なる諸実施形態は、第１の探索段階を終了させることに関して、異なる基準を有する。マルチパス符号化プロセスの第１の探索段階を終了させる終了条件の実施例には、以下が含まれる。すなわち、
・ＱＰＮｏｍ（ｐ＋１）が、ＱＰＮｏｍ（ｑ）と同一であり、かつｑ≦ｐである場合（その場合、ビットレートの誤差は、名目ＱＰを変更しても、それよりも下げることができない）。
・｜Ｅｐ｜＜εＣであり、εＣ＞εである場合。ただし、εＣは、第１の探索段階に関するビットレートの許容誤差である。
・パスの回数が、Ｐ１を超えている場合。ただし、Ｐ１は、ＰＭＡｘ未満である。
・パスの回数が、Ｐ１未満であるＰ２を超えており、かつ｜Ｅｐ｜＜ε２であり、ε２＞εＣである場合。
【００９７】
一部の実施形態は、以上の終了条件のすべてを使用する可能性があるのに対して、他の諸実施形態は、これらの条件の一部だけを使用する可能性がある。さらに別の諸実施形態は、第１の探索段階を終了させることに関して、他の終了条件を使用することが可能である。
【００９８】
マルチパス符号化プロセスが、第１の探索段階を終了させることを決めた場合（１２０で）、プロセス１００は、次のサブセクションで説明される、第２の探索段階に進む。他方、プロセスが、第１の探索段階を終了させるべきではないと判定した場合（１２０で）、プロセスは、第１の探索段階における次のパスに関する名目ＱＰを更新する（１２５で）（すなわち、ＱＰＮｏｍ（ｐ＋１）を定義する）。一部の実施形態では、名目ＱＰＮｏｍ（ｐ＋１）は、以下のとおり更新される。パス１の終りで、それらの実施形態は、
ＱＰＮｏｍ（ｐ＋１）＝ＱＰＮｏｍ（ｐ）＋χＥｐ
と定義する。ただし、χは、定数である。パス２からパスＮ１までの各パスの終りで、それらの実施形態は、次に、
ＱＰＮｏｍ（ｐ＋１）＝InterpExtrap（０，Ｅｑ１，Ｅｑ２，ＱＰＮｏｍ（ｑ１），ＱＰＮｏｍ（ｑ２））
と定義する。ただし、ＩｎｔｅｒｐＥｘｔｒａｐは、以下にさらに説明される関数である。また、上の数式では、ｑ１およびｑ２は、パスｐまでのすべてのパスの中で最低である、対応するビットレート誤差を有するパス番号であり、ｑ１、ｑ２、およびｐは、以下の関係を有する。すなわち、
１≦ｑ１≦ｑ２≦ｐ
である。
【００９９】
以下は、ＩｎｔｅｒｐＥｘｔｒａｐ関数に関する擬似コードである。ｘが、ｘ１からｘ２までの間にない場合、この関数は、補外（外挿）関数であることに留意されたい。それ以外の場合、この関数は、補間（内挿）関数である。
InterpExtrap(x,x1,x2,y1,y2)
{
if(x2 != x1) y = y1 + (x - x1) * (y2 - y1) / (x2 - x1);
else y = y1;
return y;
｝
【０１００】
名目ＱＰ値は、通常、整数値に丸められ、ＱＰ値の有効範囲内に入るようにクリッピングされる。他の諸実施形態は、前述したアプローチとは異なる形で、名目ＱＰＮｏｍ（ｐ＋１）値を計算することも可能であることが、当業者には認識されよう。
【０１０１】
１２５の後、プロセスは、１０７に戻り、次のパス（すなわち、ｐ：＝ｐ＋１）を開始し、このパスに関して、各フレームｋに関する特定の量子化パラメータＭＱＰｐ（ｋ）、ならびに現在のパスｐに関するフレームｋ内のそれぞれの個別のマクロブロックｍに関する特定の量子化パラメータＭＱＰＭＢ（ｐ）（ｋ，ｍ）を計算する（１０７で）。次に、プロセスは、それらの新たに計算された量子化パラメータに基づき、フレームシーケンスを符号化する（１１０で）。そして、１１０から、プロセスは、前述した１１５に進む。
【０１０２】
＜Ｃ．第２の探索段階：基準マスキング強度調整＞
プロセス１００は、第１の探索段階を終了すべきであると判定した場合（１２０で）、１３０に進む。第２の探索段階で、プロセス１００は、シーケンスのＮ２回の符号化を実行する。ただし、Ｎ２は、第２の探索段階中のパスの回数を表す。各パス中、プロセスは、同一の名目量子化パラメータ、および変化する基準マスキング強度を使用する。
【０１０３】
１３０で、プロセス１００は、パスＮ１＋１である次のパス、すなわちパスｐ＋１に関する基準マスキング強度φＲ（ｐ＋１）を計算する。パスＮ１＋１において、プロセス１００は、１３５でフレームシーケンスを符号化する。異なる諸実施形態は、パスｐの終りに、異なる形で基準マスキング強度φＲ（ｐ＋１）を計算する（１３０で）。２つの代替のアプローチを以下に説明する。
【０１０４】
一部の実施形態は、先行するパスからのビットレートの誤差、およびφＲの値に基づき、基準マスキング強度φＲ（ｐ）を計算する。例えば、パスＮ１の終りに、一部の実施形態は、
φＲ（Ｎ１＋１）＝φＲ（Ｎ１）＋φＲ（Ｎ１）×Ｋｏｎｓｔ×ＥＮ１
であると定義する。
【０１０５】
ｍが、１より大きい整数であるパスＮ１＋ｍの終りに、一部の実施形態は、
φＲ（Ｎ１＋ｍ）＝InterpExtrap（０，ＥＮ１＋ｍ−２，ＥＮ１＋ｍ−１，φＲ（Ｎ１＋ｍ−２），φＲ（Ｎ１＋ｍ−１））
であると定義する。
【０１０６】
代わりに、一部の実施形態は、
φＲ（Ｎ１＋ｍ）＝InterpExtrap（０，ＥＮ１＋ｍ−ｑ２，ＥＮ１＋ｍ−ｑ１，φＲ（Ｎ１＋ｍ−ｑ２），φＲ（Ｎ１＋ｍ−ｑ１））
であると定義する。ただし、ｑ１およびｑ２は、最良の誤差を与えた先行するパスである。
【０１０７】
他の諸実施形態は、セクションＩで定義されたＡＭＱＰを使用することにより、第２の探索段階における各パスの終りに、基準マスキング強度を計算する。所与の名目ＱＰ、およびφＲの何らかの値に関してＡＭＱＰを計算するための１つのやり方を、関数ＧｅｔＡｖｇＭａｓｋｅｄＱＰの擬似コードに関連して以下に説明する。
GetAvgMaskedQP(nominalQP,φＲ)
{
sum=0;
for(k=0;k＜numframes;k++){
MQP(k)=CalcMQP(nominalQP,φＲ,φＦ(k),maxQPFrameAdjustment)を使用して
計算された、フレームｋに関するmaskedQP;  //前段を参照
sum+=MQP(k);
}
return sum/numframes;
}
【０１０８】
ＡＭＱＰを使用する一部の実施形態は、先行するパスからのビットレートの誤差、およびＡＭＱＰの値に基づき、パスｐ＋１に関する所望されるＡＭＱＰを計算する。そのＡＭＱＰに対応するφＲ（ｐ＋１）が、次に、関数Ｓｅａｒｃｈ（ＡＭＱＰ（ｐ＋１），φＲ（ｐ））によって与えられる探索手続きを介して求められる。この関数の擬似コードは、このサブセクションの終りにおいて与えられる。
【０１０９】
例えば、パスＮ１の終りにおいて一部の実施形態は、ＡＭＱＰＮ１＋１を計算する。ただし、
Ｎ１＞１である場合、ＡＭＱＰＮ１＋１＝ＩｎｔｅｒｐＥｘｔｒａｐ（０，ＥＮ１−１，ＥＮ１，ＡＭＱＰＮ１−１，ＡＭＱＰＮ１）であり、かつ
Ｎ１＝１である場合、ＡＭＱＰＮ１＋１＝ＡＭＱＰＮ１である。
【０１１０】
次に、以上の実施形態は、
φＲ（Ｎ１＋１）＝Ｓｅａｒｃｈ（ＡＭＱＰＮ１＋１，φＲ（Ｎ１））
であると定義する。
【０１１１】
パスＮ１＋ｍの終りに（ただし、ｍは、１より大きい整数）、一部の実施形態は、
ＡＭＱＰＮ１＋ｍ＝ＩｎｔｅｒｐＥｘｔｒａｐ（０，ＥＮ１＋ｍ−２，ＥＮ１＋ｍ−１，ＡＭＱＰＮ１＋ｍ−２，ＡＭＱＰＮ１＋ｍ−１）
であり、かつ
φＲ（Ｎ１＋ｍ）＝Ｓｅａｒｃｈ（ＡＭＱＰＮ１＋ｍ，φＲ（Ｎ１＋ｍ−１））
であると定義する。
【０１１２】
所望されるＡＭＱＰ、およびφＲの何らかの既定値が与えられると、所望されるＡＭＱＰに対応するφＲは、一部の実施形態では、以下の擬似コードを有するＳｅａｒｃｈ関数を使用して求められることが可能である。すなわち、
Search(AMQP,φＲ)
{
interpolateSuccess=True;  //別の設定が行われるまで
reLumaSad0=refLumaSad1=refLumaSadx=φＲ;
errorInAvgMaskedQp=GetAvgMaskedQp(nominalQp,refLumaSadx)-AMQP;
if(errorInAvgMaskedQp＞0){
ntimes=0;
do{
ntimes++;
refLumaSad0=(refLumaSad0*1.1);
errorInAvgMaskedQp=GetAvgMaskedQp(nominalQp,refLumaSad0)-amqp;
}while(errorInAvgMaskedQp＞0 && ntimes＜10);
if(ntimes＞=10) interpolateSuccess=False;
}
else{  //errorInAvgMaskedQp＜0
ntimes=0;
do{
ntimes++;
refLumaSad1=(refLumaSad1*0.9);
errorInAvgMaskedQp=GetAvgMaskedQp(nominalQp,refLumaSad1)-amqp;
}while(errorInAvgMaskedQp＜0 && ntimes＜10);
if(ntimes＞=10) interpolateSuccess=False;
}
ntimes=0;
do{
ntimes++;
refLumaSadx=(refLumaSad0+refLumaSad1)/2; //単純な連続近似
errorInAvgMaskedQp=GetAvgMaskedQp(nominalQp,refLumaSadx)-AMQP;
if(errorInAvgMaskedQp＞0) refLumaSad1=refLumaSadx;
else refLumaSad0=refLumaSadx;
}while(ABS(errorInAvgMaskedQp)＞0.05 && ntimes＜12);
if(ntimes＞=12) interpolateSuccess=False;
}
if(interpolateSuccess) return refLumaSadx;
else return φＲ
}
である。
【０１１３】
以上の擬似コードにおいて、数値１０、１２、および０．０５は、適切に選択された閾値で置き換えられてもよい。
【０１１４】
フレームシーケンスの符号化を介して、次のパス（パスｐ＋１）に関する基準マスキング強度を計算した後、プロセス１００は、１３２に進み、次のパス（すなわち、ｐ：＝ｐ＋１）を開始する。各符号化パスｐ中の各フレームｋ、および各マクロブロックｍに関して、プロセスは、各フレームｋに関する特定の量子化パラメータＭＱＰｐ（ｋ）、ならびにフレームｋ内の個々のマクロブロックｍに関する特定の量子化パラメータＭＱＰＭＢ（ｐ）（ｋ，ｍ）を計算する（１３２で）。所与の名目量子化パラメータＱＰＮｏｍ（ｐ）、および基準マスキング強度φＲ（ｐ）に関するパラメータＭＱＰｐ（ｋ）およびＭＱＰＭＢ（ｐ）（ｋ，ｍ）の計算は、セクションＩＩＩにおいて説明されている（ただし、ＭＱＰｐ（ｋ）およびＭＱＰＭＢ（ｐ）（ｋ，ｍ）は、セクションＩＩＩにおいて前述した関数、ＣａｌｃＭＱＰおよびＣａｌｃＭＱＰｆｏｒＭＢを使用することによって計算される）。１３２の間の第１のパス中、基準マスキング強度は、１３０において計算されたばかりの基準マスキング強度である。また、第２の探索段階中、名目ＱＰも、第２の探索段階全体を通して、一定のままである。一部の実施形態では、第２の探索段階中の名目ＱＰは、第１の探索段階中に最良の符号化ソリューションをもたらした（すなわち、最低のビットレート誤差の符号化ソリューションをもたらした）名目ＱＰである。
【０１１５】
１３２の後、プロセスは、１３０で計算された量子化パラメータを使用してフレームシーケンスを符号化する（１３５で）。１３５の後、プロセスは、第２の探索段階を終了させるべきかどうかを判定する（１４０で）。異なる諸実施形態は、パスｐの終りに第２の探索段階を終了させることに関して、異なる基準を使用する。そのような基準の実施例は、以下のとおりである。すなわち、
・｜Ｅｐ｜＜εの場合。ただし、εは、最終ビットレートの許容誤差である。
・パスの回数が、許容されるパスの最大回数を超えている場合。
【０１１６】
一部の実施形態は、以上の終了条件のすべてを使用する可能性があるのに対して、他の諸実施形態は、これらの条件の一部だけを使用する可能性がある。さらに別の諸実施形態は、第１の探索段階を終了させることに関して、他の終了条件を使用することが可能である。
【０１１７】
プロセス１００は、第２の探索段階を終了させるべきでないと判定すると（１４０において）、１３０に戻り、符号化の次のパスに関する基準マスキング強度を再計算する。１３０から、プロセスは、１３２に進んで、量子化パラメータを計算し、次に、１３５に進んで、その新たに計算された量子化パラメータを使用することにより、ビデオシーケンスを符号化する。
【０１１８】
他方、プロセスは、第２の探索段階を終了させることを決めた場合（１４０で）、１４５に進む。１４５で、プロセス１００は、最後のパスｐからのビットストリームを最終結果として保存し、その後、終了する。
【０１１９】
［Ｖ．復号器入力バッファアンダフロー制御］
本発明の一部の実施形態は、復号器によって使用される入力バッファの使用に関して最適な符号化ソリューションを特定するため、ビデオシーケンスの目標ビットレートに対する様々な符号化を調べるマルチパス符号化プロセスを提供する。一部の実施形態は、このマルチパスプロセスは、図１のマルチパス符号化プロセス１００に従う。
【０１２０】
復号器入力バッファ（「復号器バッファ」）の使用率は、符号化されたイメージシーケンス（例えば、フレーム）の復号化中、ある程度変動する。これは、符号化されたイメージのサイズの変動、復号器が符号化されたデータを受け取る速度、復号器バッファのサイズ、復号化プロセスの速度、その他の、様々な要因のためである。
【０１２１】
復号器バッファアンダフローとは、イメージが、復号器側に完全に到着する前に、復号器が、次のイメージを復号化する準備ができている状況を意味する。一部の実施形態のマルチパス符号器は、復号器バッファをシミュレートし、シーケンス内の選択されたセグメントを再符号化して、復号器バッファアンダフローを防止する。
【０１２２】
図２は、本発明の一部の実施形態のコーデックシステム２００を概念的に示す。このシステムは、復号器２０５および符号器２１０を含む。この図では、符号器２１０は、符号器２１０が、復号器２０５の同様のコンポーネントの動作をシミュレートすることを可能にする、いくつかのコンポーネントを有する。
【０１２３】
具体的には、復号器２０５は、入力バッファ２１５と、復号化プロセス２２０と、出力バッファ２２５とを有する。符号器２１０は、シミュレートされた復号器入力バッファ２３０、シミュレートされた復号化プロセス２３５、およびシミュレートされた復号器出力バッファ２４０を保持することにより、以上のモジュールをシミュレートする。本発明の説明を妨げないように、図２は、復号化プロセス２２０および符号化プロセス２４５を単一のブロックとして示すように単純化されている。また、一部の実施形態では、シミュレートされた復号化プロセス２３５、およびシミュレートされた復号器出力バッファ２４０は、バッファアンダフロー管理のために利用されず、したがって、この図では、単に例示のために示されている。
【０１２４】
復号器は、入力バッファ２１５を保持して、入ってくる符号化イメージの速度および到着時間の変動を平滑化する。復号器に、データがなくなった（アンダフロー）場合、または入力バッファがいっぱいになった場合（オーバフロー）、ピクチャ復号化が止まるので、または入ってくるデータが破棄されるので、目に見える復号化の不連続が存在する。これらのケースのいずれも、望ましくない。
【０１２５】
アンダフロー条件を解消するために、符号器２１０は、一部の実施形態では、イメージシーケンスをまず符号化し、それらをストレージ２５５の中に格納する。例えば、符号器２１０は、マルチパス符号化プロセス１００を使用して、イメージシーケンスの第１の符号化を獲得する。次に、符号器２１０は、復号器入力バッファ２１５をシミュレートし、バッファアンダフローを生じさせるイメージを再符号化する。すべてのバッファアンダフロー条件が取り除かれた後、再符号化されたイメージが、ネットワーク接続（インターネット、ケーブル、ＰＳＴＮ線、その他）、非ネットワークの直接接続、媒体（ＤＶＤ、その他）、その他であることが可能な接続２６０を介して、復号器２０５に供給される。
【０１２６】
図３は、一部の実施形態の符号器の符号化プロセス３００を示す。このプロセスは、復号器バッファがアンダフローになることを生じさせない最適な符号化ソリューションを見出そうと試みる。図３に示されるとおり、プロセス３００は、所望される目標ビットレートを満たすイメージシーケンスの第１の符号化（例えば、シーケンス内の各イメージに関する平均ビットレートが、所望される平均目標ビットレートを満たす）を特定する（３０２で）。例えば、プロセス３００は、マルチパス符号化プロセス１００を使用して（３０２で）、イメージシーケンスの第１の符号化を得ることが可能である。
【０１２７】
３０２の後、符号化プロセス３００は、接続速度（すなわち、復号器が、符号化されたデータを受け取る速度）、復号器入力バッファのサイズ、符号化されたイメージのサイズ、復号化プロセス速度、その他などの、様々な要因を考慮することにより、復号器入力バッファ２１５をシミュレートする（３０５で）。３１０で、プロセス３００は、符号化されたイメージのセグメントが復号器入力バッファをアンダフローさせるかどうかを判定する。アンダフロー条件を判定する（その後、解消させる）のに符号器が使用する技術は、後段でさらに説明する。
【０１２８】
符号化されたイメージが、アンダフロー条件を生じさせないとプロセス３００が判定した場合（３１０で）、プロセスは、終了する。他方、符号化されたイメージのいずれかのセグメント内にバッファアンダフロー条件が存在するとプロセス３００が判定した場合（３１０で）、プロセス３００は、符号化パラメータを、先行する符号化プロセスからのそれらのパラメータの値に基づき、改良する（３１５で）。次に、プロセスは、アンダフローを伴うセグメントを再符号化して（３２０で）、セグメントのビットサイズを小さくする。セグメントを再符号化した後、プロセス３００は、そのセグメントを調べて（３２５で）、アンダフロー条件が解消されたかどうかを判定する。
【０１２９】
セグメントが、依然として、アンダフローを生じさせるとプロセスが判定した場合（３２５で）、プロセス３００は、３１５に進んで、アンダフローを解消するように符号化パラメータをさらに改良する。一方、セグメントが、アンダフローを全く生じさせないとプロセスが判定した場合（３２５で）、プロセスは、ビデオシーケンスを再検査して再符号化するための開始点を、３２０における前回の繰り返しにおいて再符号化されたセグメントの終りの後のフレームとして指定する（３３０で）。次に、３３５で、プロセスは、３１５および３２０で指定されたアンダフローセグメントの後に続く最初のＩＤＲフレームまで（かつ、そのフレームを除外して）、３３０で指定されたビデオシーケンスの部分を再符号化する。３３５の後、プロセスは、３０５に戻り、復号器バッファをシミュレートして、ビデオシーケンスの残りの部分が、再符号化の後、依然として、バッファアンダフローを生じさせるかどうかを判定する。３０５からのプロセス３００の流れを、以上に説明した。
【０１３０】
＜Ａ．符号化されたイメージのシーケンス内のアンダフローセグメントを特定すること＞
前述したとおり、符号器は、復号器バッファ条件をシミュレートして、符号化された、または再符号化されたイメージシーケンス内のいずれかのセグメントが、復号器バッファの中でアンダフローを生じさせるかどうかを判定する。一部の実施形態では、符号器は、符号化されたイメージのサイズ、帯域幅などのネットワーク条件、復号器要因（例えば、入力バッファサイズ、イメージを除去するのにかかる初期時間および名目時間、復号化プロセス時間、各イメージの表示時間、その他）を考慮するシミュレーションモデルを使用する。
【０１３１】
一部の実施形態では、ＭＰＥＧ−４  ＡＶＣ符号化ピクチャバッファ（ＣＰＢ）モデルが、復号器入力バッファの状態をシミュレートするのに使用される。ＣＰＢは、ＭＰＥＧ−４  Ｈ．２６４標準において、仮想参照デコーダ（Ｈｙｐｏｔｈｅｔｉｃａｌ  Ｒｅｆｅｒｅｎｃｅ  Ｄｅｃｏｄｅｒ）（ＨＲＤ）のシミュレートされた入力バッファを指すのに使用される用語である。ＨＲＤは、符号化プロセスが、生成することができる適合するストリームの変動性に対する制約を指定する仮想の復号器モデルである。ＣＰＢモデルは、周知であるが、便宜上、以下のセクション１で説明する。ＣＰＢおよびＨＲＤのより詳細な説明は、Ｄｒａｆｔ  ＩＴＵ−Ｔ  Ｒｅｃｏｍｍｅｎｄａｔｉｏｎ  ａｎｄ  Ｆｉｎａｌ  Ｄｒａｆｔ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｓｔａｎｄａｒｄ  ｏｆ  Ｊｏｉｎｔ  Ｖｉｄｅｏ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ（ＩＴＵ−Ｔ  Ｒｅｃ．Ｈ．２６４／ＩＳＯ／ＩＥＣ  １４４９６−１０  ＡＶＣ）で見ることができる。
【０１３２】
１．ＣＰＢモデルを使用して、復号器バッファをシミュレートすること
以下の段落は、一部の実施形態において、ＣＰＢモデルを使用して、復号器入力バッファがどのようにシミュレートされるかを説明する。イメージｎの最初のビットが、ＣＰＢに入り始める時間は、初期到着時間ｔａｉ（ｎ）と呼ばれ、以下のとおり導出される。すなわち、
・イメージが、最初のイメージ（すなわち、イメージ０）である場合、ｔａｉ（０）＝０であり、
・イメージが、符号化されている、または再符号化されているシーケンス内の最初のイメージではない場合（すなわち、ｎ＞０である場合）、ｔａｉ（ｎ）＝Ｍａｘ（ｔａｆ（ｎ−１），ｔａｉ，ｅａｒｌｉｅｓｔ（ｎ））
である。
【０１３３】
上の数式において、
・ｔａｉ，ｅａｒｌｉｅｓｔ（ｎ）＝ｔｒ，ｎ（ｎ）−ｉｎｉｔｉａｌ＿ｃｐｂ＿ｒｅｍｏｖａｌ＿ｄｅｌａｙ
である。ただし、ｔｒ，ｎ（ｎ）は、以下に指定されるＣＰＢからのイメージｎの名目除去時間であり、ｉｎｉｔｉａｌ＿ｃｐｂ＿ｒｅｍｏｖａｌ＿ｄｅｌａｙは、初期バッファリング期間である。
【０１３４】
イメージｎに関する最終到着時間は、
ｔａｆ（ｎ）＝ｔａｉ（ｎ）＋ｂ（ｎ）／ＢｉｔＲａｔｅ
によって導出される。ただし、ｂ（ｎ）は、イメージｎのサイズ（単位はビット）である。
【０１３５】
一部の実施形態では、符号器は、Ｈ．２６４規格におけるように、ビットストリームのオプションの部分（オプショナルパート）から名目除去時間を読み取る代わりに、以下に説明されるとおり、名目除去時間の独自の計算を行う。イメージ０に関して、ＣＰＢからのイメージの名目除去時間は、
ｔｒ，ｎ（０）＝ｉｎｉｔｉａｌ＿ｃｐｂ＿ｒｅｍｏｖａｌ＿ｄｅｌａｙ
によって指定される。
【０１３６】
イメージｎ（ｎ＞０）に関して、ＣＰＢからのイメージの名目除去時間は、
ｔｒ，ｎ（ｎ）＝ｔｒ，ｎ（０）＋ｓｕｍｉ＝０乃至ｎ−１（ｔｉ）
によって指定される。ただし、ｔｒ，ｎ（ｎ）は、イメージｎの名目除去時間であり、ｔｉは、ピクチャｉに関する表示時間である。
【０１３７】
イメージｎの除去時間は、以下のとおり指定される。
・ｔｒ，ｎ（ｎ）＞＝ｔａｆ（ｎ）である場合、ｔｒ（ｎ）＝ｔｒ，ｎ（ｎ）であり、
・ｔｒ，ｎ（ｎ）＜ｔａｆ（ｎ）である場合、ｔｒ（ｎ）＝ｔａｆ（ｎ）である。
【０１３８】
イメージｎのサイズ、ｂ（ｎ）が、余りにも大きいため、名目除去時間における除去が妨げられることを示すのは、この後者（ｔｒ（ｎ）＝ｔａｆ（ｎ））のケースである。
【０１３９】
２．アンダフローセグメントの検出
前のセクションで説明されるとおり、符号器は、復号器入力バッファの状態をシミュレートし、所与の時点におけるバッファ内のビット数を獲得することができる。或いは、符号器は、その名目除去時間と最終到着時間の差（すなわち、ｔｂ（ｎ）＝ｔｒ，ｎ（ｎ）−ｔａｆ（ｎ））を介して、それぞれの個別のイメージが、復号器入力バッファの状態をどのように変化させるかを追跡することができる。ｔｂ（ｎ）が、０未満である場合、バッファは、時点ｔｒ，ｎ（ｎ）と時点ｔａｆ（ｎ）の間にアンダフローを来たしており、場合によっては、ｔｒ，ｎ（ｎ）より前、およびｔａｆ（ｎ）の後にもアンダフローを来たしている。
【０１４０】
アンダフローに直接に関わっているイメージは、ｔｂ（０）が、０未満であるかどうかを試験することにより、容易に見出すことができる。しかし、０未満のｔｂ（ｎ）を有するイメージは、必ずしもアンダフローを生じさせるわけではなく、逆に、アンダフローを生じさせるイメージは、０未満のｔｂ（ｎ）を有さない可能性もある。一部の実施形態は、アンダフローセグメントを次のように定義する。すなわち、アンダフローがその最悪の点に達するまで、復号器入力バッファを絶えず空にすることによってアンダフローを生じさせる、一続きの連続するイメージ（復号化順の）として定義する。
【０１４１】
図４は、一部の実施形態における、イメージ数に対する、名目除去時間と最終イメージ到着の差ｔｂ（ｎ）のプロットである。このプロットは、１５００個の符号化されたイメージのシーケンスに関して描かれている。図４ａは、アンダフローセグメントを示し、矢印が、そのセグメントの始まりと終りを示している。簡明にするため、矢印によって明示されていない、第１のアンダフローセグメントの後に出現する別のアンダフローセグメントが、図４ａに存在することに留意されたい。
【０１４２】
図５は、３０５におけるアンダフロー検出動作を実行するのにエンコーダが使用するプロセス５００を示す。プロセス５００は、前述したとおり、復号器入力バッファの状態をシミュレートすることにより、各イメージの最終到着時間、ｔａｆ、および名目除去時間、ｔｒ，ｎをまず判定する（５０５で）。このプロセスは、バッファアンダフロー管理の繰り返しプロセス中に数回、呼び出されることが可能であるので、あるイメージ番号を開始点として受け取り、その与えられた開始イメージからイメージシーケンスを調べることに留意されたい。明らかに、最初の繰り返しに関して、開始点は、シーケンス内の最初のイメージである。
【０１４３】
５１０で、プロセス５００は、復号器入力バッファにおける各イメージの最終到着時間を、復号器によるそのイメージの名目除去時間と比べる。名目除去時間より後の最終到着時間を有するイメージが全く存在しないとプロセスが判定した（すなわち、アンダフロー条件は、全く存在しない）場合、プロセスは、終了する。他方、最終到着時間が、名目除去時間より後であるイメージが見つかった場合、プロセスは、アンダフローが存在すると判定し、５１５に進んで、アンダフローセグメントを識別する。
【０１４４】
５１５で、プロセス５００は、アンダフロー条件が改善し始める（すなわち、ｔｂ（ｎ）が、一続きのイメージにわたってさらに負にならない）次の大域最小値まで、復号器バッファが、絶えず空にされることが始まるイメージのセグメントとして、アンダフローセグメントを識別する。次いで、プロセス５００は、終了する。一部の実施形態では、アンダフローセグメントの始まりは、関連するフレーム間符号化されたイメージセットの開始を示すフレーム内符号化されたイメージであるＩフレームで始まるように、さらに調整される。アンダフローを生じさせる１つまたは複数のセグメントが特定されると、符号器は、そのアンダフローを解消することに取りかかる。以下のセクションＢが、単一セグメントのケース（すなわち、符号化されたイメージのシーケンス全体が、単一のアンダフローセグメントだけを含む）におけるアンダフローの解消を説明する。その後、セクションＣが、マルチセグメントのアンダフローのケースに関するアンダフローの解消を説明する。
【０１４５】
＜Ｂ．単一セグメントのアンダフローの解消＞
図４（ａ）を参照すると、ｔｂ（ｎ）対ｎの曲線が、下降する傾きでｎ軸と１回だけ交差する場合、シーケンス全体の中に１つだけのアンダフローセグメントが存在する。アンダフローセグメントは、ゼロ交差点より前の最も近い局所最大値で始まり、ゼロ交差点とそのシーケンスの終りの間の、次の大域最小値で終わる。バッファが、アンダフローから回復する場合、セグメントの終点の後には、上昇する傾きを持つ曲線による別のゼロ交差点が続き得る。
【０１４６】
図６は、一部の実施形態において、単一のイメージセグメント内でアンダフロー条件を解消するのに符号器が利用する（３１５、３２０、および３２５で）プロセス６００を示す。６０５で、プロセス６００は、バッファに入る入力ビットレートと、セグメントの終りで見られる最長の遅延（例えば、最小ｔｂ（ｎ））との積を計算することにより、ビットの総数を推定して、アンダフローセグメント内の（ΔＢ）を小さくする。
【０１４７】
次に、６１０で、プロセス６００は、前回の符号化パス（または直近の複数回のパス）からの、現在のセグメント内の平均のマスキングされたフレームＱＰ（ＡＭＱＰ）、および総ビット数を使用して、そのセグメントに関する所望されるビット数、ＢＴ＝Ｂ−ΔＢｐを得るための所望されるＡＭＱＰを推定する。ただし、ｐは、そのセグメントに関するプロセス６００の現在の繰り返し回数である。その繰り返しが、特定のセグメントに関するプロセス６００の最初の繰り返しである場合、ＡＭＱＰおよび総ビット数は、３０２で特定された初期（最初の）符号化ソリューションから導出された、そのセグメントに関するＡＭＱＰおよび総ビット数である。他方、その繰り返しが、プロセス６００の最初の繰り返しではない場合、それらのパラメータは、プロセス６００の前回のパス、または前の数回のパスにおいて得られた符号化ソリューション、または符号化ソリューション群から導出されることが可能である。
【０１４８】
次に、６１５で、プロセス６００は、所望されるＡＭＱＰを使用して、マスキング強度φＦ（ｎ）に基づく、平均のマスキングされたフレームＱＰ、ＭＱＰ（ｎ）を変更して、より多くのマスキングを許容することができるイメージが、より多くのビット削減を受けるようにする。次に、プロセスは、３１５で定義されたパラメータに基づき、ビデオセグメントを再符号化する（６２０で）。次に、プロセスは、セグメントを調べて（６２５で）、アンダフロー条件が解消されたかどうかを判定する。図４（ｂ）は、プロセス６００が、アンダフローセグメントに適用されて、そのセグメントを再符号化した後の、図４（ａ）のアンダフロー条件の解消を示す。アンダフロー条件が解消されると、プロセスは、終了する。それ以外の場合、プロセスは、６０５に戻り、総ビットサイズを小さくするように符号化パラメータをさらに調整する。
【０１４９】
＜Ｃ．複数のアンダフローセグメントに対するアンダフロー解消＞
シーケンス内に複数のアンダフローセグメントが存在する場合、セグメントの再符号化により、すべての後続のフレームに関するバッファ充満時間、ｔｂ（ｎ）が変わる。変更されたバッファ条件を考慮に入れるのに、符号器は、下降する傾きを有する最初のゼロ交差点から（すなわち、最低のｎで）始めて、一度に１つのアンダフローセグメントを探索する。
【０１５０】
アンダフローセグメントは、そのゼロ交差点より前の最も近い局所最大値で始まり、そのゼロ交差点と次のゼロ交差点（あるいは、ゼロ交差がもはや存在しない場合、シーケンスの終り）の間の、次の大域最小値で終わる。１つのセグメントを見出した後、符号器は、そのセグメントの終りにおいてｔｂ（ｎ）を０に設定し、すべての後続のフレームに関してバッファシミュレーションを再び行うことにより、そのセグメントの中のアンダフローを仮想的に除去し、更新されたバッファ充満度を推定する。
【０１５１】
次に、符号器は、変更されたバッファ充満度を使用して、次のセグメントを探索することを続ける。すべてのアンダフローセグメントが、前述したとおり、特定されると、符号器は、単一セグメントのケースと全く同じように、他のセグメントとは独立に、各セグメントに関して、ＡＭＱＰを導出し、マスキングされたフレームＱＰを変更する。
【０１５２】
他の諸実施形態は、異なる形で実施されることも可能であることが、当業者には認識されよう。例えば、一部の実施形態は、復号器の入力バッファのアンダフローを生じさせる複数のセグメントを特定しない。代わりに、一部の実施形態は、前述したバッファシミュレーションを実行して、アンダフローを生じさせる第１のセグメントを特定する。そのようなセグメントを特定した後、それらの実施形態は、そのセグメントを訂正して、そのセグメントの中のアンダフロー条件を正し、その後、訂正された部分の後から符号化を再開する。シーケンスの残りの部分の符号化の後、それらの実施形態は、次のアンダフローセグメントに関して、そのプロセスを繰り返す。
【０１５３】
＜Ｄ．バッファアンダフロー管理の応用例＞
前述した復号器バッファアンダフローに関する技術は、多数の符号化システムおよび復号化システムに適用される。そのようなシステムのいくつかの実施例を以下に説明する。
【０１５４】
図７は、ビデオストリーミングサーバ７１０といくつかのクライアント復号器７１５〜７２５を接続するネットワーク７０５を示す。クライアントは、毎秒３００ｋｂや毎秒３Ｍｂなどの、異なる帯域幅を有するリンクを介してネットワーク７０５に接続される。ビデオストリーミングサーバ７１０は、符号器７３０からクライアント復号器７１５〜７２５への符号化されたビデオイメージのストリーミングを制御している。
【０１５５】
ストリーミングビデオサーバは、ネットワークにおける最も遅い帯域幅（すなわち、毎秒３００Ｋｂ）、および最小のクライアントバッファサイズを使用して、符号化されたビデオイメージをストリーミングすることを決めることが可能である。そのケースでは、ストリーミングサーバ７１０は、毎秒３００Ｋｂの目標ビットレートに対して最適化された１つだけの符号化されたイメージセットを必要とする。他方、サーバは、異なる帯域幅、および異なるクライアントバッファ条件に対して最適化された、異なる符号化を生成し、格納することができる。
【０１５６】
図８は、復号器のアンダフロー管理のための応用例の別の実施例を示す。この実施例では、ＨＤ−ＤＶＤプレーヤ８０５が、ビデオ符号器８１０からの符号化されたビデオデータを格納しているＨＤ−ＤＶＤ８４０から、符号化されたビデオイメージを受け取っている。ＨＤ−ＤＶＤプレーヤ８０５は、入力バッファ８１５と、簡明にするために１つのブロック８２０として示された復号化モジュールセットと、出力バッファ８２５とを有する。
【０１５７】
プレーヤ８０５の出力は、ＴＶ８３０またはコンピュータディスプレイ端末装置８３５などのディスプレイデバイスに送られる。ＨＤ−ＤＶＤプレーヤは、非常に高い帯域幅、例えば、毎秒２９．４Ｍｂを有することが可能である。ディスプレイデバイス上で高品質のイメージを維持するため、符号器は、ビデオイメージが次のように符号化されることを確実にする。すなわち、イメージシーケンスにおいて、復号器入力バッファに時間どおり送り届けられることが不可能なほど大きなセグメントが存在しないようにする。
【０１５８】
［ＶＩ．コンピュータシステム］
図９は、本発明の一実施形態が実施されるコンピュータシステムを提示する。コンピュータシステム９００は、バス９０５と、プロセッサ９１０と、システムメモリ９１５と、読み取り専用メモリ９２０と、永久記憶デバイス９２５と、入力デバイス群９３０と、出力デバイス群９３５とを含む。バス９０５は、コンピュータシステム９００の多数の内部デバイスを通信するように接続するすべてのシステムバス、周辺バス、およびチップセットバスをひとまとめにして表す。例えば、バス９０５は、プロセッサ９１０を、読み取り専用メモリ９２０、システムメモリ９１５、および永久記憶デバイス９２５と通信するように接続する。
【０１５９】
以上の様々なメモリユニットから、プロセッサ９１０は、本発明のプロセスを実行するために、実行されるべき命令、および処理されるべきデータを取り出す。読み取り専用メモリ（ＲＯＭ）９２０が、プロセッサ９１０、ならびにコンピュータシステムの他のモジュール群によって必要とされている静的データおよび命令を格納する。
【０１６０】
他方、永久記憶デバイス９２５は、読み取り−書き込みメモリデバイスである。このデバイスは、コンピュータシステム９００がオフである場合でも、命令およびデータを格納する不揮発性メモリユニットである。本発明の一部の実施形態は、大容量記憶デバイス（磁気ディスクまたは光ディスク、ならびにその対応するディスクドライブなどの）を永久記憶デバイス９２５として使用する。
【０１６１】
他の諸実施形態は、取り外し可能な記憶デバイス（フロッピー（登録商標）ディスクまたはｚｉｐ（登録商標）ディスク、ならびにその対応するディスクドライブなど）を永久記憶デバイスとして使用する。永久記憶デバイス９２５と同様に、システムメモリ９１５は、読み取り書き込みメモリデバイスである。しかし、記憶デバイス９２５とは異なり、システムメモリは、ランダムアクセスメモリなどの、揮発性読み取り−書き込みメモリである。システムメモリは、プロセッサが、ランタイムに必要とする命令およびデータの一部を格納する。一部の実施形態では、本発明のプロセスは、システムメモリ９１５、永久記憶デバイス９２５、および、読み取り専用メモリ９２０のうちの少なくとも１つの中に格納される。
【０１６２】
また、バス９０５は、入力デバイス群９３０および出力デバイス群９３５にも接続する。入力デバイス群は、ユーザが、コンピュータシステムに対して情報を通信し、コマンドを選択することを可能にする。入力デバイス群９３０には、英数字キーボードおよびカーソルコントローラが含まれる。出力デバイス群９３５は、コンピュータシステムによって生成されたイメージを表示する。出力デバイス群には、プリンタ、ならびに陰極線管（ＣＲＴ）または液晶ディスプレイ（ＬＣＤ）などのディスプレイデバイスが含まれる。
【０１６３】
最後に、図９に示されるとおり、バス９０５は、コンピュータ９００を、ネットワークアダプタ（図示せず）を介してネットワーク９６５にも接続する。このようにして、コンピュータは、コンピュータのネットワーク（ローカルエリアネットワーク（「ＬＡＮ」）、ワイドエリアネットワーク（「ＷＡＮ」）、またはイントラネットなど）、またはネットワークのネットワーク（インターネットなど）の一部であることが可能である。コンピュータシステム９００のコンポーネントのいずれか、またはすべてが、本発明に関連して使用されることが可能である。しかし、他の任意のシステム構成が、本発明に関連して使用されることも可能であることが当業者には認識されよう。
【０１６４】
本発明を多数の特定の詳細に関連して説明してきたが、本発明は、本発明の趣旨を逸脱することなく、他の特定の形態で実施されることも可能であることが当業者には認識されよう。例えば、復号器入力バッファをシミュレートするＨ２６４の方法を使用することの代わりに、バッファサイズ、バッファの中のイメージの到着時間および除去時間、ならびにイメージの復号化時間および表示時間を考慮する他のシミュレーション方法を使用してもよい。
【０１６５】
前述したいくつかの実施形態は、平均の除去されたＳＡＤを計算して、マクロブロック内のイメージ変化の指示を得た。しかし、他の諸実施形態は、異なる形でイメージ変化を識別することが可能である。例えば、一部の実施形態は、マクロブロックのピクセルの予期されるイメージ値を予測することが可能である。それらの実施形態は、次に、その予測値をマクロブロックのピクセルの輝度値から引き、それらの減算の絶対値を合計することにより、マクロブロックＳＡＤを生成する。一部の実施形態では、予測値は、そのマクロブロック内のピクセルの値だけでなく、近隣のマクロブロックの１つまたは複数のマクロブロックの中のピクセルの値にも基づく。
【０１６６】
また、前述した諸実施形態は、導出された空間的マスキング値および時間的マスキング値を直接に使用する。他の諸実施形態は、連続する空間的マスキング値および連続する時間的マスキング値のうちの少なくとも一方に平滑化フィルタリングを適用してから、それらの値を使用することを、ビデオイメージを介してそれらの値の一般的な傾向を選び出すために行う。このため、本発明は、以上の例示的な詳細によって限定されないことが、当業者には理解されよう。
【図面の簡単な説明】
【０１６７】
【図１】本発明の一部の実施形態の符号化方法を概念的に示すプロセスを示す図である。
【図２】一部の実施形態のコーデックシステムを概念的に示す図である。
【図３】一部の実施形態の符号化プロセスを示す流れ図である。
【図４】（ａ）は、一部の実施形態におけるアンダフロー条件を示す、イメージ番号に対するイメージの名目除去時間と最終到着時間の差のプロットである。（ｂ）は、アンダフロー条件が解消された後の、図４ａに示されたのと同一のイメージに関する、イメージ番号に対するイメージの名目除去時間と最終到着時間の差のプロットである。
【図５】一部の実施形態において、アンダフロー検出を実行するのに符号器が使用するプロセスを示す図である。
【図６】一部の実施形態において、イメージの単一のセグメントの中でアンダフロー条件を解消するのに符号器が利用するプロセスを示す図である。
【図７】ビデオストリーミングアプリケーションにおけるバッファアンダフロー管理の応用例を示す図である。
【図８】ＨＤ−ＤＶＤシステムにおけるバッファアンダフロー管理の応用例を示す図である。
【図９】本発明の一実施形態が実施されるコンピュータシステムを示す図である。
【図１】
2008504750.tif 000010
【図２】
2008504750.tif 000011
【図３】
2008504750.tif 000012
【図４】
2008504750.tif 000013
【図５】
2008504750.tif 000014
【図６】
2008504750.tif 000015
【図７】
2008504750.tif 000016
【図８】
2008504750.tif 000017
【図９】
2008504750.tif 000018
【国際調査報告】
2008504750.tif 000019