"複数のイメージを符号化する方法であって、a前記複数のイメージを符号化するための名目量子化パラメータを定義するステップと、b前記名目量子化パラメータに基づいて、少なくとも1つのイメージのための、少なくとも1つのイメージ固有の量子化パラメータを導出するステップと、c前記イメージ固有の量子化パラメータに基づいて、前記複数のイメージを符号化するステップと、d前記定義するステップ、前記導出するステップ、および前記符号化するステップを繰り返して前記符号化を最適化するステップと、を備えることを特徴とする方法。a前記名目量子化パラメータに基づいて、複数のイメージのための複数のイメージ固有の量子化パラメータを導出するステップと、b前記複数のイメージ固有の量子化パラメータに基づいて、前記複数のイメージを符号化するステップと、c前記定義するステップ、前記名目量子化パラメータに基づいて、複数のイメージのための複数のイメージ固有の量子化パラメータを導出するステップ、および前記複数のイメージ固有の量子化パラメータに基づいて、前記複数のイメージを符号化するステップを繰り返して前記符号化を最適化するステップと、をさらに備えることを特徴とする請求項1に記載の方法。符号化の動作が終了の基準のセットを満たすと前記繰り返すステップを停止するステップをさらに備えることを特徴とする請求項1に記載の方法。前記終了の基準のセットは、前記複数のイメージに関して許容できる符号化に関する識別情報を含むことを特徴とする請求項3に記載の方法。前記複数のイメージに関して許容できる符号化は、目標ビットレートに関して特定の範囲内に収まる、前記複数のイメージの符号化であることを特徴とする請求項4に記載の方法。複数のイメージを符号化する方法であって、a各々の特定のイメージ属性が少なくとも特定のイメージの特定の一部分に関する複雑性を定量化する、複数のイメージ属性を特定するステップと、b前記複数のイメージに関する複雑性を定量化する基準属性を特定するステップと、b前記特定された複数のイメージ属性と、前記基準属性と、名目量子化パラメータとに基づいて、前記複数のイメージを符号化するための量子化パラメータを特定するステップと、c前記特定された量子化パラメータに基づいて、前記複数のイメージを符号化するステップと、d前記複数のイメージ属性を特定するステップと、前記基準属性を特定するステップと、前記量子化パラメータを特定するステップと、前記符号化するステップとを、繰り返し実行して前記符号化を最適化するステップと、を備え、前記繰り返すステップでの、複数の異なる繰り返しにおいて、複数の異なる基準属性が使用されることを特徴とする方法。前記複数のイメージ属性は、各々のイメージの少なくとも一部分に関する視覚マスキング強度であり、前記視覚マスキング強度は、ビデオシーケンスが前記方法に従って符号化され復号化された後に、前記ビデオシーケンスの視聴者にとって認識できない符号化アーチファクトの量を推定するためのものであることを特徴とする請求項6に記載の方法。前記複数のイメージ属性は、各々のイメージの少なくとも一部分に関する視覚マスキング強度であり、イメージの一部分に関する視覚マスキング強度は、前記イメージの前記一部分に関する複雑性を定量化し、イメージの一部分に関する前記複雑性を定量化する際に、前記視覚マスキング強度は、前記符号化するステップの結果生じるものの符号化されたイメージが復号化された後に視認可能な歪みは発生しないような圧縮アーチファクトの量に関する指標を提供することを特徴とする請求項6に記載の方法。複数のイメージを符号化するためのコンピュータプログラムを記憶しているコンピュータ読み取り可能な記憶媒体であって、前記コンピュータプログラムは、以下に列挙する命令セットを含むことを特徴とするコンピュータ読み取り可能な記憶媒体。a前記複数のイメージを符号化するための名目量子化パラメータを定義すること。b前記名目量子化パラメータに基づいて、少なくとも1つのイメージのための、少なくとも1つのイメージ固有の量子化パラメータを導出すること。c前記イメージ固有の量子化パラメータに基づいて、前記複数のイメージを符号化すること。d前記定義すること、前記導出すること、および前記符号化することを繰り返して前記符号化を最適化すること。前記コンピュータプログラムは、以下に列挙する命令セットをさらに含むことを特徴とする請求項9に記載のコンピュータ読み取り可能な記憶媒体。a前記名目量子化パラメータに基づいて、複数のイメージのための複数のイメージ固有の量子化パラメータを導出すること。b前記複数のイメージ固有の量子化パラメータに基づいて、前記複数のイメージを符号化すること。c前記定義すること、前記名目量子化パラメータに基づいて、複数のイメージのための複数のイメージ固有の量子化パラメータを導出すること、および前記複数のイメージ固有の量子化パラメータに基づいて、前記複数のイメージを符号化することを繰り返して前記符号化を最適化すること。前記コンピュータプログラムは、符号化の動作が終了の基準のセットを満たすと前記繰り返すことを停止する命令セットをさらに含むことを特徴とする請求項9に記載のコンピュータ読み取り可能な記憶媒体。前記終了の基準のセットは、前記複数のイメージに関して許容できる符号化に関する識別情報を含むことを特徴とする請求項11に記載のコンピュータ読み取り可能な記憶媒体。前記複数のイメージに関して許容できる符号化は、目標ビットレートに関して特定の範囲内に収まる、前記複数のイメージの符号化であることを特徴とする請求項12に記載のコンピュータ読み取り可能な記憶媒体。ビデオイメージのシーケンスを符号化する方法であって、a前記ビデオイメージのシーケンスを受信するステップと、b目標ビットレートを達成し、かつ、符号化されたビデオシーケンスをデコードする仮想参照デコーダの入力バッファを通る符号化されたデータの流れに関する制約のセットを満足しつつ、画質を最適化する符号化ソリューションを特定するために、前記ビデオイメージのシーケンスに対して複数の異なる符号化ソリューションを繰り返し試みるステップと、を備えることを特徴とする方法。前記繰り返し試みるステップは、各々の符号化ソリューションに関して、前記ビデオイメージのシーケンスにおけるあらゆるイメージセットに対して前記符号化ソリューションの処理を行っている間に前記仮想参照デコーダがアンダフローするか否かを判定するステップを備えることを特徴とする請求項14に記載の方法。前記複数の異なる符号化ソリューションを繰り返し試みるステップは、a前記仮想参照デコーダの入力バッファの状態をシミュレートするステップと、b前記仮想参照デコーダにおける入力バッファの使用率を最大化しつつ画質を最適化するビット数を選択するために、前記シミュレートするステップを活用するステップと、c前記最適化された入力バッファの使用率を達成するために前記符号化されたビデオイメージを再符号化するステップと、d最適な符号化が特定されるまで、前記シミュレートするステップ、前記活用するステップ、および前記再符号化するステップを繰り返し実行するステップと、を備えることを特徴とする請求項14に記載の方法。前記仮想参照デコーダの入力バッファの状態をシミュレートするステップは、前記仮想参照デコーダが符号化されたデータを受信する速度を考慮するステップをさらに備えることを特徴とする請求項16に記載の方法。前記仮想参照デコーダの入力バッファの状態をシミュレートするステップは、前記仮想参照デコーダの入力バッファのサイズを考慮するステップをさらに備えることを特徴とする請求項16に記載の方法。前記仮想参照デコーダの入力バッファの状態をシミュレートするステップは、前記仮想参照デコーダの入力バッファからの初期除去遅延を考慮するステップをさらに備えることを特徴とする請求項16に記載の方法。a前記繰り返し試みるステップの前に、バッファの前記流れに関連する前記制約のセットに基づかない初期符号化ソリューションを特定するステップと、b前記初期符号化ソリューションを使用して前記繰り返し試みるステップにおける最初の試みを開始するステップと、をさらに備えることを特徴とする請求項14に記載の方法。入力バッファを有する仮想参照デコーダを備えるシステムにおいてビデオイメージのシーケンスを符号化するためのコンピュータプログラムを記憶しているコンピュータ読み取り可能な記憶媒体であって、前記コンピュータプログラムは、以下に列挙する命令セットを含むことを特徴とするコンピュータ読み取り可能な記憶媒体。a前記ビデオイメージのシーケンスを受信すること。b目標ビットレートを達成し、かつ、符号化されたビデオシーケンスをデコードする仮想参照デコーダの入力バッファを通る符号化されたデータの流れに関する制約のセットを満足しつつ、画質を最適化する符号化ソリューションを特定するために、前記ビデオイメージのシーケンスに対して複数の異なる符号化ソリューションを繰り返し試みること。前記繰り返し試みる命令セットは、各々の符号化ソリューションに関して、前記ビデオイメージのシーケンスにおけるあらゆるイメージセットに対して前記符号化ソリューションの処理を行っている間に前記仮想参照デコーダがアンダフローするか否かを判定する命令セットを含むことを特徴とする請求項21に記載のコンピュータ読み取り可能な記憶媒体。前記複数の異なる符号化ソリューション繰り返し試みる命令セットは、以下に列挙する命令セットをさらに含むことを特徴とする請求項21に記載のコンピュータ読み取り可能な記憶媒体。a前記仮想参照デコーダの入力バッファの状態をシミュレートすること。b前記仮想参照デコーダにおける入力バッファの使用率を最大化しつつ画質を最適化するビット数を選択するために、前記シミュレートすることを活用すること。c前記最適化された入力バッファの使用率を達成するために前記符号化されたビデオイメージを再符号化すること。d最適な符号化が特定されるまで、前記シミュレートすること、前記活用すること、および前記再符号化することを繰り返し実行すること。前記仮想参照デコーダの入力バッファの状態をシミュレートする命令セットは、前記仮想参照デコーダが符号化されたデータを受信する速度を考慮する命令セットをさらに含むことを特徴とする請求項23に記載のコンピュータ読み取り可能な記憶媒体。前記仮想参照デコーダの入力バッファの状態をシミュレートする命令セットは、前記仮想参照デコーダの入力バッファのサイズを考慮する命令セットをさらに含むことを特徴とする請求項23に記載のコンピュータ読み取り可能な記憶媒体。前記仮想参照デコーダの入力バッファの状態をシミュレートする命令セットは、前記仮想参照デコーダの入力バッファからの初期除去遅延を考慮する命令セットをさらに含むことを特徴とする請求項23に記載のコンピュータ読み取り可能な記憶媒体。前記コンピュータプログラムは、以下に列挙する命令セットをさらに含むことを特徴とする請求項21に記載のコンピュータ読み取り可能な記憶媒体。a前記繰り返し試みることの前に、バッファの前記流れに関連する前記制約のセットに基づかない初期符号化ソリューションを特定すること。b前記初期符号化ソリューションを使用して前記繰り返し試みることにおける最初の試みを開始すること。ビデオを符号化する方法であって、a前記ビデオのシーケンスにおける第1のイメージの第1の部分に関して、前記第1の部分の複雑性が原因で視聴者にとって認識できない符号化アーチファクトの度合いを定量化する、第1の視覚マスキング強度を特定するステップと、b前記特定された視覚マスキング強度に基づいて前記第1のイメージの少なくとも一部分を符号化するステップと、を備えることを特徴とする方法。前記視覚マスキング強度は、前記第1の部分の空間的複雑性を示すことを特徴とする請求項28に記載の方法。前記空間的複雑性は、前記イメージの一部分に関するピクセル値の関数として計算されることを特徴とする請求項29に記載の方法。前記第1の部分は、複数のピクセル、および各々のピクセルに対するイメージ値を有し、前記第1の部分に関する前記視覚マスキング強度を特定するステップは、a前記第1の部分の前記ピクセルのイメージ値を推定するステップと、b前記第1の部分の前記ピクセルの前記イメージ値から前記統計的な属性を減算するステップと、c前記減算の結果に基づいて前記視覚マスキング強度を計算するステップと、を備えることを特徴とする請求項30に記載の方法。前記推定されたイメージ値は、前記第1の部分のピクセルのイメージ値に関する統計的な属性であることを特徴とする請求項31に記載の方法。前記統計的な属性は、中央値であることを特徴とする請求項32に記載の方法。前記推定されたイメージ値は、前記第1の部分のピクセルの近隣にあるピクセルに部分的に基づいていることを特徴とする請求項31に記載の方法。前記視覚マスキング強度は、前記第1の部分の時間的複雑性を示すことを特徴とする請求項28に記載の方法。前記時間的複雑性は、前記第1のイメージの前記第1の部分内に定義されたピクセル領域に関する動き補償された誤差信号の関数として計算されることを特徴とする請求項35に記載の方法。前記時間的複雑性は、前記第1のイメージの前記第1の部分内に定義されたピクセル領域に関する動き補償された誤差信号と、他のイメージのセットにおける第2の部分のセット内に定義されたピクセルに関する動き補償された誤差信号と、の関数として計算されることを特徴とする請求項35に記載の方法。前記他のイメージのセットは、1つのイメージのみを含むことを特徴とする請求項37に記載の方法。前記他のイメージのセットは、複数のイメージを含むことを特徴とする請求項37に記載の方法。前記動き補償された誤差信号は、混合された動き補償された誤差信号であり、前記方法は、a各々の他のイメージに関する重み係数を定義するステップと、b前記第1のイメージ、および前記他のイメージのセットにおける各々のイメージに対して、個々の動き補償された誤差信号を計算するステップと、c前記重み係数を使用して、前記個々の動き補償された誤差信号から前記混合された動き補償された誤差信号を生成するステップと、をさらに備え、前記ビデオのシーケンスにおいて、前記第1のイメージに対して第2のイメージが第3のイメージよりも近い場合に、前記第2のイメージの重み係数は、前記第3のイメージの重み係数よりも大きいことを特徴とする請求項39に記載の方法。前記第1のイメージを伴うシーンの一部ではない前記他のイメージのセットにおけるイメージのサブセットに関する重み係数が、前記イメージのサブセットを排除するために選択されることを特徴とする請求項40に記載の方法。前記他のイメージのセットは、前記第1のイメージを伴うシーンの一部であるイメージのみを含み、他のシーンに関連するいかなるイメージも含まないことを特徴とする請求項37に記載の方法。前記第2のイメージは、前記第1のイメージ以前に発生した過去のイメージのセット、および前記第1のイメージ以後に発生する将来のイメージのセットから選択されることを特徴とする請求項37に記載の方法。前記視覚マスキング強度は、空間的複雑性の成分および時間的複雑性の成分を含み、前記方法は、前記空間的複雑性の成分と前記時間的複雑性の成分とを相互に比較するステップと、前記視覚マスキング強度に対する前記空間的複雑性の成分の寄与および前記時間的複雑性の成分の寄与をそれぞれ許容することができる範囲に維持するために、所定の基準に基づいて、空間的複雑性の成分および時間的複雑性の成分を変更するステップと、をさらに備えることを特徴とする請求項28に記載の方法。前記時間的複雑性の成分は、所定のフレームに関するルックアヘッド範囲内の来るべきシーン変化を考慮に入れて調整されることを特徴とする請求項44に記載の方法。前記視覚マスキング強度は、前記第1の部分の輝度属性を示すことを特徴とする請求項28に記載の方法。前記輝度属性は、前記第1の部分の平均ピクセル輝度として計算されることを特徴とする請求項46に記載の方法。前記第1の部分は、前記第1のイメージ全体であることを特徴とする請求項28に記載の方法。前記第1の部分は、前記第1のイメージ全体よりも小さいことを特徴とする請求項28に記載の方法。前記第1の部分は、前記第1のイメージ内のマクロブロックであることを特徴とする請求項49に記載の方法。ビデオを符号化するためのコンピュータプログラムを記憶しているコンピュータ読み取り可能な記憶媒体であって、前記コンピュータプログラムは、以下に列挙する命令セットを含むことを特徴とするコンピュータ読み取り可能な記憶媒体。a前記ビデオのシーケンスにおける第1のイメージの第1の部分に関する複雑性を定量化する第1の視覚マスキング強度を特定すること。b前記特定された視覚マスキング強度に基づいて前記第1のイメージの少なくとも一部分を符号化すること。前記視覚マスキング強度は、前記第1の部分の空間的複雑性が原因で視聴者にとって認識できない符号化アーチファクトの度合いを定量化することを特徴とする請求項51に記載のコンピュータ読み取り可能な記憶媒体。前記視覚マスキング強度は、前記第1の部分の前記ビデオにおける動きが原因で視聴者にとって認識できない符号化アーチファクトの度合いを示し、前記動きは、前記第1のイメージ、および前記第1のイメージの前後のイメージのセットによって捕捉されることを特徴とする請求項51に記載のコンピュータ読み取り可能な記憶媒体。前記視覚マスキング強度は、空間的複雑性および時間的複雑性を含み、前記コンピュータプログラムは、前記空間的複雑性の成分と前記時間的複雑性の成分とを相互に比較する命令セットと、前記視覚マスキング強度に対する前記空間的複雑性の成分の寄与および前記時間的複雑性の成分の寄与をそれぞれ許容することができる範囲に維持するために、基準のセットに基づいて、空間的複雑性の成分および時間的複雑性の成分を変更する命令セットと、をさらに含むことを特徴とする請求項51に記載のコンピュータ読み取り可能な記憶媒体。前記視覚マスキング強度は、空間的複雑性および時間的複雑性を含み、前記コンピュータプログラムは、前記空間的複雑性の時間的傾向、およびイメージのセット中の前記時間的複雑性を平滑化することによって、前記空間的複雑性、および前記時間的複雑性を変更する命令セットをさらに含むことを特徴とする請求項54に記載のコンピュータ読み取り可能な記憶媒体。前記時間的複雑性の成分は、所定のフレームに関するルックアヘッド範囲内の来るべきシーン変化を考慮に入れて調整されることを特徴とする請求項54に記載のコンピュータ読み取り可能な記憶媒体。前記視覚マスキング強度の属性は、前記第1の部分に関する輝度属性を示すことを特徴とする請求項51に記載のコンピュータ読み取り可能な記憶媒体。ビデオを符号化する方法であって、a前記ビデオのシーケンスにおける第1のイメージの第1の部分に関して、前記第1の部分の複雑性が原因で視聴者にとって認識できない符号化アーチファクトの度合いを定量化する、第1の視覚マスキング強度を特定するステップと、b前記特定された視覚マスキング強度に基づいて前記第1のイメージの少なくとも一部分を符号化するステップと、を備えることを特徴とする方法。前記視覚マスキング強度は、前記第1の部分の空間的複雑性を示すことを特徴とする請求項58に記載の方法。前記空間的複雑性は、前記イメージの一部分に関するピクセル値の関数として計算されることを特徴とする請求項59に記載の方法。前記第1の部分は、複数のピクセル、および各々のピクセルに対するイメージ値を有し、前記第1の部分に関する前記視覚マスキング強度を特定するステップは、a前記第1の部分の前記ピクセルのイメージ値を推定するステップと、b前記第1の部分の前記ピクセルの前記イメージ値から前記統計的な属性を減算するステップと、c前記減算の結果に基づいて前記視覚マスキング強度を計算するステップと、を備えることを特徴とする請求項60に記載の方法。前記推定されたイメージ値は、前記第1の部分のピクセルのイメージ値に関する統計的な属性であることを特徴とする請求項61に記載の方法。前記統計的な属性は、中央値であることを特徴とする請求項62に記載の方法。前記推定されたイメージ値は、前記第1の部分のピクセルの近隣にあるピクセルに部分的に基づいていることを特徴とする請求項61に記載の方法。前記視覚マスキング強度は、前記第1の部分の時間的複雑性を示すことを特徴とする請求項58に記載の方法。前記時間的複雑性は、前記第1のイメージの前記第1の部分内に定義されたピクセル領域に関する動き補償された誤差信号の関数として計算されることを特徴とする請求項65に記載の方法。前記時間的複雑性は、前記第1のイメージの前記第1の部分内に定義されたピクセル領域に関する動き補償された誤差信号と、他のイメージのセットにおける第2の部分のセット内に定義されたピクセルに関する動き補償された誤差信号と、の関数として計算されることを特徴とする請求項65に記載の方法。前記他のイメージのセットは、1つのイメージのみを含むことを特徴とする請求項67に記載の方法。前記他のイメージのセットは、複数のイメージを含むことを特徴とする請求項67に記載の方法。前記動き補償された誤差信号は、混合された動き補償された誤差信号であり、前記方法は、a各々の他のイメージに関する重み係数を定義するステップと、b前記第1のイメージ、および前記他のイメージのセットにおける各々のイメージに対して、個々の動き補償された誤差信号を計算するステップと、c前記重み係数を使用して、前記個々の動き補償された誤差信号から前記混合された動き補償された誤差信号を生成するステップと、をさらに備え、前記ビデオのシーケンスにおいて、前記第1のイメージに対して第2のイメージが第3のイメージよりも近い場合に、前記第2のイメージの重み係数は、前記第3のイメージの重み係数よりも大きいことを特徴とする請求項69に記載の方法。前記第1のイメージを伴うシーンの一部ではない前記他のイメージのセットにおけるイメージのサブセットに関する重み係数が、前記イメージのサブセットを排除するために選択されることを特徴とする請求項70に記載の方法。前記他のイメージのセットは、前記第1のイメージを伴うシーンの一部であるイメージのみを含み、他のシーンに関連するいかなるイメージも含まないことを特徴とする請求項67に記載の方法。前記第2のイメージは、前記第1のイメージ以前に発生した過去のイメージのセット、および前記第1のイメージ以後に発生する将来のイメージのセットから選択されることを特徴とする請求項67に記載の方法。前記視覚マスキング強度は、空間的複雑性の成分および時間的複雑性の成分を含み、前記方法は、前記空間的複雑性の成分と前記時間的複雑性の成分とを相互に比較するステップと、前記視覚マスキング強度に対する前記空間的複雑性の成分の寄与および前記時間的複雑性の成分の寄与をそれぞれ許容することができる範囲に維持するために、所定の基準に基づいて、空間的複雑性の成分および時間的複雑性の成分を変更するステップと、をさらに備えることを特徴とする請求項58に記載の方法。前記時間的複雑性の成分は、所定のフレームに関するルックアヘッド範囲内の来るべきシーン変化を考慮に入れて調整されることを特徴とする請求項74に記載の方法。前記視覚マスキング強度は、前記第1の部分の輝度属性を示すことを特徴とする請求項58に記載の方法。前記輝度属性は、前記第1の部分の平均ピクセル輝度として計算されることを特徴とする請求項76に記載の方法。前記第1の部分は、前記第1のイメージ全体であることを特徴とする請求項58に記載の方法。前記第1の部分は、前記第1のイメージ全体よりも小さいことを特徴とする請求項58に記載の方法。前記第1の部分は、前記第1のイメージ内のマクロブロックであることを特徴とする請求項79に記載の方法。ビデオを符号化するためのコンピュータプログラムを記憶しているコンピュータ読み取り可能な記憶媒体であって、前記コンピュータプログラムは、以下に列挙する命令セットを含むことを特徴とするコンピュータ読み取り可能な記憶媒体。a前記ビデオのシーケンスにおける第1のイメージの第1の部分に関する複雑性を定量化する第1の視覚マスキング強度を特定すること。b前記特定された視覚マスキング強度に基づいて前記第1のイメージの少なくとも一部分を符号化すること。前記視覚マスキング強度は、前記第1の部分の空間的複雑性が原因で視聴者にとって認識できない符号化アーチファクトの度合いを定量化することを特徴とする請求項81に記載のコンピュータ読み取り可能な記憶媒体。前記視覚マスキング強度は、前記第1の部分の前記ビデオにおける動きが原因で視聴者にとって認識できない符号化アーチファクトの度合いを示し、前記動きは、前記第1のイメージ、および前記第1のイメージの前後のイメージのセットによって捕捉されることを特徴とする請求項81に記載のコンピュータ読み取り可能な記憶媒体。前記視覚マスキング強度は、空間的複雑性および時間的複雑性を含み、前記コンピュータプログラムは、前記空間的複雑性の成分と前記時間的複雑性の成分とを相互に比較する命令セットと、前記視覚マスキング強度に対する前記空間的複雑性の成分の寄与および前記時間的複雑性の成分の寄与をそれぞれ許容することができる範囲に維持するために、基準のセットに基づいて、空間的複雑性の成分および時間的複雑性の成分を変更する命令セットと、をさらに含むことを特徴とする請求項81に記載のコンピュータ読み取り可能な記憶媒体。前記視覚マスキング強度は、空間的複雑性および時間的複雑性を含み、前記コンピュータプログラムは、前記空間的複雑性の時間的傾向、およびイメージのセット中の前記時間的複雑性を平滑化することによって、前記空間的複雑性、および前記時間的複雑性を変更する命令セットをさらに含むことを特徴とする請求項84に記載のコンピュータ読み取り可能な記憶媒体。前記時間的複雑性の成分は、所定のフレームに関するルックアヘッド範囲内の来るべきシーン変化を考慮に入れて調整されることを特徴とする請求項84に記載のコンピュータ読み取り可能な記憶媒体。前記視覚マスキング強度の属性は、前記第1の部分に関する輝度属性を示すことを特徴とする請求項81に記載のコンピュータ読み取り可能な記憶媒体。したがって、当技術分野において、新規な技術を使用して、ビデオイメージの集合ビデオイメージセットを符号化するためのビットレートを制御しながら、ビデオイメージおよびビデオイメージの諸部分のうちの少なくとも一方の空間的複雑性、または時間的複雑性を考慮する、レートコントローラの必要性が存在する。また、当技術分野において、符号化ソリューションを十分に調べて、ビデオイメージおよびビデオイメージの諸部分のうちの少なくとも一方に関して、最適な量子化パラメータセットを使用する符号化ソリューションを特定する、マルチパスのレートコントローラの必要性も存在する。本発明の一部の実施形態は、いくつかのイメージ例えば、ビデオシーケンスのいくつかのフレームを符号化するマルチパス符号化方法を提供する。本方法は、それらのイメージを符号化する符号化操作を繰り返し実行する。符号化操作は、本方法がイメージに関する量子化パラメータを計算するために使用する、名目量子化パラメータに基づく。符号化操作の数回の異なる繰り返し中、本方法は、いくつかの異なる名目量子化パラメータを使用する。本方法は、終了の基準に達すると例えば、本方法が、許容できるイメージの符号化を特定すると、繰り返しを停止する。本発明の一部の実施形態は、ビデオシーケンスを符号化するための方法を提供する。本方法は、ビデオの中の第1のイメージの複雑性を定量化する第1の属性を特定する。また、本方法は、特定された第1の属性に基づき、第1のイメージを符号化するための量子化パラメータも特定する。次に、本方法は、特定された量子化パラメータに基づき、第1のイメージを符号化する。一部の実施形態では、この方法は、ビデオの中のいくつかのイメージに関して、以上3つの操作を実行する。本発明の一部の実施形態は、ビデオイメージ、およびビデオイメージの諸部分のうちの少なくとも一方の視覚マスキング属性に基づき、ビデオイメージのシーケンスを符号化する。イメージ、またはイメージの一部の視覚マスキングは、そのイメージまたはイメージ部分の中で、どれだけの符号化アーチファクトが許容されることが可能であるかの指標である。イメージまたはイメージ部分の視覚マスキング属性を表現するのに、一部の実施形態は、そのイメージまたはイメージ部分の輝度エネルギーを定量化する視覚マスキング強度を計算する。一部の実施形態では、輝度エネルギーは、イメージまたはイメージ部分の平均ルーマLuma,輝度エネルギーまたは平均ピクセルエネルギーの関数として測定される。輝度エネルギーの代わりに、または輝度エネルギーと併せて、イメージまたはイメージ部分の視覚マスキング強度は、イメージまたはイメージ部分の活動エネルギーも定量化することが可能である。活動エネルギーは、イメージまたはイメージ部分の複雑性を表現する。一部の実施形態では、活動エネルギーは、イメージまたはイメージ部分の空間的複雑性を定量化する空間的成分、および、イメージ間の動きに起因する、許容されマスキングされることが可能な歪みの量を定量化する動き成分のうちの少なくとも一方を含む。本発明の一部の実施形態は、ビデオシーケンスを符号化するための方法を提供する。本方法は、ビデオの中の第1のイメージの視覚マスキング属性を特定する。また、本方法は、特定された視覚マスキング属性に基づき、第1のイメージを符号化するための量子化パラメータも特定する。次に、本方法は、特定された量子化パラメータに基づき、第1のイメージを符号化する。本発明の以下の詳細な説明では、本発明の多数の詳細、実施例、および実施形態が示され、説明される。しかし、本発明は、示される諸実施形態に限定されないこと、ならびに本発明は、説明される特定の詳細および実施例の一部を伴うことなしに実施されてもよいことが、当業者には明瞭かつ明白であろう。[I.定義]このセクションは、本明細書で使用されるいくつかの記号に関する定義を与える。RTは、フレームシーケンスの符号化に対して所望されるビットレートである、目標ビットレートを表す。通常、このビットレートは、毎秒のビット数単位ビット/秒で表現され、所望される最終ファイルサイズ、シーケンスの中のフレーム数、およびフレームレートから計算される。Rpは、パスpの終了時における、符号化されたビットストリームのビットレートを表す。Epは、パスpの終了時における、ビットレートの誤差のパーセンテージを表す。一部のケースでは、そのパーセンテージは、として計算される。εは、最終ビットレートの許容誤差を表す。εCは、第1のQP探索段階に関するビットレートの許容誤差を表す。QPは、量子化パラメータを表す。QPNompは、フレームシーケンスに関する、パスpでの符号化において使用される名目量子化パラメータを表す。QPNompの値は、目標ビットレートに達するように、第1のQP調整段階において本発明のマルチパス符号器によって調整される。MQPpkは、パスpにおけるフレームkに関する量子化パラメータQPである、マスキングされたフレームQPを表す。一部の実施形態は、名目QP、およびフレームレベルでの視覚マスキングを使用することにより、この値を計算する。MQPMBpk,mは、フレームkおよびパスpにおける個別のマクロブロックマクロブロックインデックスmを有するに関する量子化パラメータQPである、マスキングされたマクロブロックQPを表す。一部の実施形態は、MQPpkおよびマクロブロックレベルでの視覚マスキングを使用することにより、MQPMBpk,mを計算する。φFkは、フレームkに関するマスキング強度と呼ばれる値を表す。マスキング強度φFkは、フレームに関する複雑性の尺度であり、一部の実施形態では、この値は、符号化アーチファクト/雑音が、どれだけ目に見えるように現れるかを判定するのに使用され、フレームkのMQPpkを計算するのに使用される。φRpは、パスpにおける基準マスキング強度を表す。基準マスキング強度は、フレームkのMQPpkを計算するのに使用され、目標ビットレートを達成するために、第2の段階において本発明のマルチパス符号器によって調整される。φMBk,mは、フレームkの中のインデックスmを有するマクロブロックに関するマスキング強度を表す。マスキング強度φMBk,mは、マクロブロックに関する複雑性の尺度であり、一部の実施形態では、符号化アーチファクト/雑音が、どれだけ目に見えるように現れるかを判定するのに使用され、MQPMBpk,mを計算するのに使用される。AMQPpは、パスpにおけるフレーム群にわたる平均のマスキングされたQPを表す。一部の実施形態では、この値は、パスpにおけるすべてのフレームにわたる平均のMQPpkとして計算される。[II.概要]本発明の一部の実施形態は、所与のビットレートでフレームシーケンスを符号化することに関して、最良の視覚的品質を実現する符号化方法を提供する。一部の実施形態では、この方法は、量子化パラメータQPをすべてのマクロブロックに割り当てる視覚マスキングプロセスを使用する。この割り当ては、イメージまたはビデオフレームの中のより明るい領域内、または空間的に複雑な領域内の符号化アーチファクト/雑音が、より暗い領域内、または均一の領域内におけるほどは、目に見えないという認識に基づく。一部の実施形態では、この視覚マスキングプロセスは、本発明のマルチパス符号化プロセスマルチパスの符号化プロセスの一環として実行される。この符号化プロセスは、最終的な符号化されたビットストリームが、目標ビットレートに達するようにするために、名目量子化パラメータを調整し、基準マスキング強度パラメータφRを介して、視覚マスキングプロセスを制御する。後段でさらに説明されるとおり、名目量子化パラメータを調整すること、およびマスキングアルゴリズムを制御することにより、各ピクチャすなわち、通常のビデオ符号化方式においては、各フレームに関するQP値、および各ピクチャ内の各マクロブロックが調整される。一部の実施形態では、マルチパス符号化プロセスは、シーケンス全体に関する名目QPおよびφRを全体的に調整する。他の諸実施形態では、このプロセスは、ビデオシーケンスをセグメントに分割し、各セグメントに関して、名目QPおよびφRが調整される。後段の説明は、マルチパス符号化プロセスが使用されるフレームシーケンスについて述べる。そのシーケンスには、一部の実施形態では、シーケンス全体が含まれるのに対して、他の諸実施形態では、あるシーケンスのあるセグメントだけが含まれることが、当業者には認識されよう。一部の実施形態では、本方法は、3つの符号化段階を有する。これら3つの段階は、1パス0において実行される初期分析段階、2パス1乃至パスN1において実行される第1の探索段階、および3パスN11乃至N1N2において実行される第2の探索段階である。初期分析段階においてすなわち、パス0中に、本方法は、名目QP符号化のパス1において使用されるべきQPNom1の初期値を特定する。また、初期分析段階中、本方法は、第1の探索段階におけるすべてのパスにおいて使用される、基準マスキング強度φRの値も特定する。第1の探索段階で、本方法は、符号化プロセスのN1回の繰り返しすなわち、N1回のパスを実行する。各パスp中に各フレームkに関して、プロセスは、特定の量子化パラメータMQPpk、ならびにフレームk内の個々のマクロブロックmに関する特定の量子化パラメータMQPMBpk,mを使用することによってフレームを符号化する。ただし、MQPMBpk,mは、MQPpkを使用して計算される。第1の探索段階において、量子化パラメータMQPpkは、パスとパスの間で変化する名目量子化パラメータQPNompから導出されるので、パスとパスの間で変化する。つまり、第1の探索段階中、各パスpの終りに、プロセスは、パスp1に関する名目QPNomp1を計算する。一部の実施形態では、名目QPNomp1は、先行するパスからの名目QP値およびビットレート誤差に基づく。他の諸実施形態では、名目QPNomp1値は、第2の探索段階において各パスの終りに、異なる形で計算される。第2の探索段階で、本方法は、符号化プロセスのN2回の繰り返しすなわち、N2回のパスを実行する。第1の探索段階の場合と同様に、プロセスは、特定の量子化パラメータMQPpk、ならびにフレームk内の個々のマクロブロックmに関する特定の量子化パラメータMQPMBpk,mを使用することにより、各パスp中に各フレームkを符号化する。ただし、MQPMBpk,mは、MQPpkから導出される。やはり、第1の探索段階の場合と同様に、量子化パラメータMQPpkは、パスとパスの間に変化する。しかし、第2の探索段階中、このパラメータは、パスとパスの間に変化する基準マスキング強度φRpを使用して計算されるという理由により変化する。一部の実施形態では、基準マスキング強度φRpは、先行するパスからのビットレートの誤差、およびφRの値に基づいて計算される。他の諸実施形態では、この基準マスキング強度は、第2の探索段階において各プロセスの終りに、異なる値となるように計算される。マルチパス符号化プロセスは、視覚マスキングプロセスに関連して説明されるが、符号器は、これら両方のプロセスを一緒に使用しなくてもよいことが、当業者には認識されよう。例えば、一部の実施形態では、マルチパス符号化プロセスは、φRを無視し、前述した第2の探索段階を省くことにより、視覚マスキングなしに、所与の目標ビットレート近傍のビットストリームを符号化するのに使用される。視覚マスキングおよびマルチパス符号化プロセスを、本出願のセクションIIIおよびセクションIVにおいてさらに説明する。[III.視覚マスキング]名目量子化パラメータが与えられると、視覚マスキングプロセスはまず、基準マスキング強度φRおよびフレームのマスキング強度φFを使用して、各フレームに関するマスキングされたフレーム量子化パラメータMQPを計算する。次に、このプロセスは、フレームレベルおよびマクロブロックレベルのマスキング強度φFおよびφMBに基づき、各マクロブロックに関するマスキングされたマクロブロック量子化パラメータMQPMBを計算する。視覚マスキングプロセスが、マルチパス符号化プロセスにおいて使用される場合、一部の実施形態における基準マスキング強度φRは、前述し、後段でさらに説明するとおり、第1の符号化パス中に特定される。<A.フレームレベルのマスキング強度を計算すること>1.第1のアプローチフレームレベルのマスキング強度φFkを計算するのに、一部の実施形態は、以下の数式Aを使用する。すなわち、φFCpowerβpowerαFただし、avgFrameLumakは、bが、1以上の整数である例えば、b=1またはb=4、b×bの領域を使用して計算される、フレームk内の平均ピクセル輝度であり、avgFrameSADkは、フレームk内のすべてのマクロブロックにわたるMbSADk,mの平均であり、MbSADk,mは、インデックスmを有するマクロブロック内のすべての4×4ブロックに関する関数、Calc4×4MeanRemovedSAD4×4_block_pixel_valuesによって与えられる値の合計であり、αF、C、D、およびEは、定数であり、かつ或いは、局所的な統計に適合されており、かつ、powera,bは、abを意味する。関数Calc4×4MeanRemovedSADに関する擬似コードは、以下のとおりである。すなわち、Calc4x4MeanRemovedSAD{所与の4×4ブロック内のピクセル値の平均値を計算する;ピクセル値から平均値を引き、絶対値を計算する;1つ前の工程で得られた絶対値を合計する;合計を返す;}2.第2のアプローチ他の諸実施形態は、フレームレベルのマスキング強度を異なる形で計算する。例えば、前述した数式Aは、フレームのマスキング強度を基本的に以下のように計算する。すなわち、φFCpowerpowerである。数式Aでは、フレームのBrightness_Attributeは、avgFrameLumakと等しくなり、Spatial_Activity_Attributeは、フレーム内のすべてのマクロブロックにわたる平均マクロブロックSADMbSADk,m値であるavgFrameSADkと等しくなる。ただし、平均マクロブロックSADは、マクロブロック内のすべての4×4ブロックに関するCalc4×4MeanRemovedSADによって与えられる平均隔たり4×4ピクセル偏差の絶対値の合計に等しい。このSpatial_Activity_Attributeは、符号化されているフレーム内のピクセル領域内における空間的イノベーション空間的変化の量を測定する。他の諸実施形態は、いくつかの連続するフレームにわたるピクセル領域内の時間的イノベーション時間的変化の量を含むように活動性の尺度を拡張する。具体的には、それらの実施形態は、以下のとおりフレームのマスキング強度を計算する。すなわち、φFCpowerpowerである。この数式では、Activity_Attributeが、以下の数式Cによって与えられる。すなわち、ActivityAttributeGpowerEpowerである。一部の実施形態では、Temporal_Activity_Attributeは、フレーム間の動きに起因する、許容されるすなわち、マスキングされることが可能な歪みの量を定量化する。それらの実施形態の一部では、フレームのTemporal_Activity_Attributeは、ある定数に、フレーム内の定義されたピクセル領域の動き補償された誤差信号の絶対値の合計を掛けた値に等しい。他の諸実施形態では、Temporal_Activity_Attributeは、以下の数式Dによって与えられる。すなわち、である。数式Dでは、avgFrameSADは、前述したとおり、フレーム内の平均マクロブロックSADMbSADk,m値を表し、avgFrameSAD0は、現在のフレームに関するavgFrameSADであり、負のjは、現在のフレームより前の時間インスタンスを指し示し、正のjは、現在のフレームより後の時間インスタンスを指し示す。このため、avgFrameSADj=-2は、現在のフレームより前の2つのフレームの平均フレームSADを表し、avgFrameSADj=3は、現在のフレームより後の3つのフレームの平均フレームSADを表す。また、数式Dにおいて、変数Nおよび変数Mは、現在のフレームより前のフレームの数、および現在のフレームより後のフレームの数をそれぞれ示す。特定のフレーム数に基づいて値Nおよび値Mを単に選択する代わりに、一部の実施形態は、現在のフレームの時間より前の、特定の時間の長さ、およびその時間より後の、特定の時間の長さに基づき、値Nおよび値Mを計算する。動きマスキングを時間的長さと互いに関係付けることは、動きマスキングを所定のフレーム数と互いに関係付けることよりも有利である。これは、動きマスキングを時間的長さと互いに関係付けることが、見る人の時間ベースの視覚的認識にまさに一致しているからである。他方、そのようなマスキングをフレーム数と互いに関係付けることには、異なるディスプレイが、異なるフレームレートでビデオを提示するので、表示時間が定まらないという難点がある。数式Dにおいて、Wは、一部の実施形態では、フレームjが、現在のフレームから離れるにつれ、減少する重み係数を指す。やはり、この数式において、第1の合計は、現在のフレームより前にマスキングされることが可能な動きの量を表し、第2の合計は、現在のフレームより後にマスキングされることが可能な動きの量を表し、最後の項avgFrameSAD0は、現在のフレームのフレームSADを表す。一部の実施形態では、重み係数は、シーン変化を考慮に入れるように調整される。例えば、一部の実施形態は、ルックアヘッド範囲内すなわち、M個のフレームの範囲内の来たるべきシーン変化を考慮に入れるが、シーン変化後のいずれのフレームも考慮に入れない。例えば、それらの実施形態は、シーン変化後のルックアヘッド範囲内のフレームに関しては、重み係数を0に設定することが可能である。また、一部の実施形態は、ルックビハインド範囲内すなわち、N個のフレームの範囲内で、シーン変化に先立つフレーム、またはシーン変化時のフレームを考慮に入れない。例えば、それらの実施形態は、前のシーンに関係する、または前のシーン変化の前に来るルックビハインド範囲内のフレームに関しては、重み係数を0に設定することが可能である。3.第2のアプローチの変形例aTemporal_Activity_Attributeに対する過去のフレーム、および将来のフレームの影響を制限すること前述の数式Dは、Temporal_Activity_Attributeを基本的に以下の関係で表現する。すなわち、TemporalActivityAttributePastFrameActivityFutureFrameActivityCurrentFrameActivityただし、Past_Frame_ActivityPFAは、に等しく、Future_Frame_ActivityFFAは、に等しく、Current_Frame_ActivityCFAは、avgFrameSADcurrentに等しい。一部の実施形態は、Temporal_Activity_Attributeの計算を変更して、Past_Frame_Activityも、Future_Frame_Activityも、Temporal_Activity_Attributeの値を過度にコントロールしないようにする。例えば、一部の実施形態は、最初、PFAが、と等しくなり、FFAが、と等しくなるように定義する。これらの実施形態は、次に、PFAが、スカラー掛けるFFAより大きいかどうかを判定する。大きい場合、それらの実施形態は、次に、PFAを、PFA上限値例えば、スカラー掛けるFFAと等しくなるように設定する。PFA上限値と等しくなるようにPFAを設定することに加え、一部の実施形態は、FFAを0に設定することと、CFAを0に設定することの組み合わせも実行することができる。他の諸実施形態は、PFAとCFAのいずれか、または両方を、PFA、CFA、およびFFAの重み付き組み合わせに設定することが可能である。同様に、PFA値およびFFA値を重み付き合計に基づいて最初に定義した後、一部の実施形態は、FFA値が、スカラー掛けるPFAより大きいかどうかも判定する。大きい場合、それらの実施形態は、次に、FFAを、FFA上限値例えば、スカラー掛けるPFAと等しくなるように設定する。FFA上限値と等しくなるようにFFAを設定することに加え、一部の実施形態は、PFAを0に設定することと、CFAを0に設定することの組み合わせも実行することができる。他の諸実施形態は、FFAとCFAのいずれか、または両方を、FFA、CFA、およびPFAの重み付き組み合わせに設定することが可能である。重み付き合計に基づく、PFA値およびFFA値の初期計算後の続いて行われるPFA値およびFFA値の可能な調整により、これらの値のいずれかが、Temporal_Activity_Attributeを過度にコントロールすることも防止される。bSpatial_Activity_AttributeおよびTemporal_Activity_AttributeのActivity_Attributeに対する影響を制限すること前述の数式Cは、基本的に、以下の関係でActivity_Attributeを表す。すなわち、ActivityAttributeSpatialActivityTemporalActivityただし、Spatial_Activityは、scalarscalarSpatial_Activity_Attributeβに等しく、Temporal_Activityは、scalarscalarTemporal_Activity_AttributeΔに等しい。一部の実施形態は、Activity_Attributeの計算を変更して、Spatial_Activityも、Temporal_Activityも、Activity_Attributeの値を過度にコントロールしないようにする。例えば、一部の実施形態は、最初、Spatial_ActivitySAが、scalarscalarSpatial_Activity_Attributeβと等しくなるように定義し、Temporal_ActivityTAが、scalarscalarTemporal_Activity_AttributeΔと等しくなるように定義する。それらの実施形態は、次に、SAが、スカラー掛けるTAよりも大きいかどうかを判定する。大きい場合、それらの実施形態は、次に、SAを、SA上限値例えば、スカラー掛けるTAと等しくなるように設定する。そのようなケースにおいてSA上限と等しくなるようにSAを設定することに加え、一部の実施形態は、TA値を、0に、またはTAとSAの重み付き組み合わせに設定することも可能である。同様に、指数方程式に基づいてSA値およびTA値を最初に定義した後、一部の実施形態は、TA値が、スカラー掛けるSAよりも大きいかどうかも判定する。大きい場合、それらの実施形態は、次に、TAを、TA上限値例えば、スカラー掛けるSAと等しくなるように設定する。そのようなケースにおいてTA上限と等しくなるようにTAを設定することに加え、一部の実施形態は、SA値を0に、またはSAとTAの重み付き組み合わせに設定することも可能である。指数方程式に基づく、SA値およびTA値の初期計算後の続いて行われるSA値およびTA値の可能な調整により、これらの値のいずれかが、Activity_Attributeを過度にコントロールすることも防止される。<B.マクロブロックレベルのマスキング強度を計算すること>1.第1のアプローチ一部の実施形態では、マクロブロックレベルのマスキング強度φMBk,mは、以下のとおり計算される。すなわち、φMBApowerβpowerαMBただし、avgMbLumak,mは、フレームk、マクロブロックmにおける平均ピクセル輝度であり、αMB、β、A、B、およびCは、定数であり、かつ或いは、局所的な統計に適合されている。2.第2のアプローチ前述した数式Fは、マクロブロックのマスキング強度を基本的に以下のとおり計算する。すなわち、φMBDpowerpowerである。数式Fにおいて、マクロブロックのMb_Brightness_Attributeは、avgMbLumak,mに等しく、Mb_Spatial_Activity_Attributeは、avgMbSADkに等しい。このMb_Spatial_Activity_Attributeは、符号化中のマクロブロック内のピクセル領域内における空間的イノベーションの量を測定する。フレームのマスキング強度の場合と全く同様に、一部の実施形態は、いくつかの連続するフレームにわたるピクセル領域内の時間的イノベーションの量を含むように、マクロブロックのマスキング強度における活動性の尺度を拡張することが可能である。具体的には、それらの実施形態は、マクロブロックのマスキング強度を以下のとおり計算する。すなわち、φMBDpowerpowerただし、Mb_Activity_Attributeは、以下の数式Hによって与えられる。すなわち、MbActivityAttributeFpowerGpowerである。マクロブロックに関するMb_Temporal_Activity_Attributeの計算は、フレームに関するMb_Temporal_Activity_Attributeの前述した計算と同様であることが可能である。例えば、それらの実施形態の一部では、Mb_Temporal_Activity_Attributeは、以下の数式Iによって与えられる。すなわち、である。数式Iの中の変数は、セクションIII.Aにおいて定義された。数式Fにおいて、フレームi内、またはフレームj内のマクロブロックmは、現在のフレーム内のマクロブロックmと同一の位置におけるマクロブロックであることが可能である。或いは、フレームi内、またはフレームj内のマクロブロックmは、現在のフレーム内のマクロブロックmと一致すると最初に予測されたフレームi内、またはフレームj内のマクロブロックであることが可能である。数式Iによって与えられるMb_Temporal_Activity_Attributeは、数式Dによって与えられる、フレームのTemporal_Activity_Attributeの変更前述のセクションIII.A.3で説明されたと同様の形で変更されることが可能である。具体的には、数式Iによって与えられるMb_Temporal_Activity_Attributeは、過去のフレーム内、および将来のフレーム内におけるマクロブロックの過度の影響を制限するように変更されることが可能である。同様に、数式Hによって与えられるMb_Activity_Attributeも、数式Cによって与えられる、フレームのActivity_Attributeの変更セクションIII.A.3で前述したと同様の形で変更されることが可能である。具体的には、数式Hによって与えられるMb_Activity_Attributeは、Mb_Spatial_Activity_AttributeおよびMb_Temporal_Activity_Attributeの過度の影響を制限するように変更されることが可能である。<C.マスキングされたQP値を計算すること>マスキング強度の値φFおよびφMB、および基準マスキング強度の値φRに基づき、視覚マスキングプロセスは、2つの関数CalcMQPおよびCalcMQPforMBを使用することにより、フレームレベルおよびマクロブロックレベルにおけるマスキングされたQP値を計算することができる。これら2つの関数に関する擬似コードは、以下のとおりである。すなわち、CalcMQPmaxQPFrameAdjustment{QPFrameAdjustmentβFφRφR;minQPFrameAdjustmentmaxQPFrameAdjustmentの範囲内に入るようにQPFrameAdjustmentをクリッピングする;maskedQPofFramenominalQPQPFrameAdjustment;許容範囲内に入るようにmaskedQPofFrameをクリッピングする;フレームkに関するmaskedQPofFrameを返す;}CalcMQPforMBφMBmaxQPMacroblockAdjustment{if>Tただし、Tは、適切に選択された閾値QPMacroblockAdjustmentβMBφFφF;elseQPMacroblockAdjustment0;minQPMacroblockAdjustmentmaxQPMacroblockAdjustmentの範囲内に入るようにQPMacroblockAdjustmentをクリッピングする;maskedQPofMacrobleckmaskedQPofFrameQPMacroblockAdjustment;有効なQP値範囲内に入るようにmaskedQPofMacroblockをクリッピングする;maskedQPofMacroblockを返す;}である。前述の関数において、βFおよびβMBは、所定の定数であること、または局所的な統計に適合させられることが可能である。[IV.マルチパス符号化]図1は、本発明の一部の実施形態に係るマルチパス符号化方法を概念的に示すプロセス100を提示する。この図に示されるとおり、プロセス100は、以下の3つのサブセクションで説明される3つの段階を有する。<A.分析および初期最初のQP選択>図1に示されるとおり、プロセス100は、最初、マルチパス符号化プロセスの初期分析段階中にすなわち、パス0中に、基準マスキング強度φR1の初期値、および名目量子化パラメータQPNom1の初期値を計算する105で。初期基準マスキング強度φR1は、第1の探索段階中に使用されるのに対して、初期名目量子化パラメータQPNom1は、第1の探索段階の第1のパス中にすなわち、マルチパス符号化プロセスのパス1中に使用される。パス0の始めに、φR0は、何らかの任意の値、または実験的結果に基づいて選択された値例えば、φR値の通常の範囲の中央値であることが可能である。シーケンスの分析中、各フレームに関してマスキング強度φFkが計算され、次に、基準マスキング強度φR1が、パス0の終りにおいてavgφFkと等しくなるように設定される。また、基準マスキング強度φRに関する他の決定も可能である。例えば、基準マスキング強度φRは、値φFkの中央値として、または例えば、値φFkの重み付き平均値などの、値φFkに関する他の算術関数として計算されてもよい。異なる複雑性を有する、初期QP選択のいくつかのアプローチが存在する。例えば、初期名目QPは、任意の値例えば、26として選択されることが可能である。代わりに、符号化実験に基づき、目標ビットレートに対して許容できる品質をもたらすことが知られている値が、選択されることも可能である。また、初期名目QP値は、空間分解能、フレームレート、空間的/時間的複雑性、および目標ビットレートに基づき、ルックアップテーブルから選択されることも可能である。一部の実施形態では、この初期名目QP値は、以上のパラメータの各々に基づく距離の尺度を使用して、テーブルから選択されてもよい。あるいは、以上のパラメータの重み付き距離の尺度を使用して選択されてもよい。また、この初期名目QP値は、レートコントローラを使用するマスキングなしの高速符号化中に、フレームQP値が選択されるにつれ、フレームQP値の調整された平均に設定されることも可能である。ただし、その平均は、パス0に関するビットレートパーセンテージのレート誤差E0に基づいて調整されている。また、同様に、初期名目QPは、フレームQP値の重み付きの調整された平均に設定されることも可能である。ただし、各フレームに関する重みは、飛ばされるマクロブロックスキップドマクロブロックとして符号化されない、そのフレーム内のマクロブロックのパーセンテージによって決まる。代わりに、初期名目QPは、基準マスキング強度をφR0からφR1に変更することの効果が考慮に入れられる限り、レートコントローラを使用するマスキングなしの高速符号化中に、フレームQP値が選択されるにつれ、フレームQP値の調整された平均、または調整された重み付き平均に設定されることも可能である。<B.第1の探索段階:名目QP調整>105の後、マルチパス符号化プロセス100は、第1の探索段階に入る。第1の探索段階では、プロセス100は、シーケンスに対するN1回の符号化を実行する。ただし、N1は、第1の探索段階中のパスの回数を表す。第1の段階の各パス中、プロセスは、変化する名目量子化パラメータを、一定の基準マスキング強度とともに使用する。具体的には、第1の探索段階における各パスp中、プロセス100は、各フレームkに関する特定の量子化パラメータMQPpk、およびフレームk内のそれぞれの個別のマクロブロックに関する特定の量子化パラメータMQPMBpk,mを計算する107で。所与の名目量子化パラメータQPNompおよび基準マスキング強度φRpに関するパラメータMQPpkおよびMQPMBpk,mの計算は、セクションIIIで説明されているただし、MQPpkおよびMQPMBpk,mは、セクションIIIで前述した関数、CalcMQPおよびCalcMQPforMBを使用して計算される。107中の第1のパスすなわち、パス1において、名目量子化パラメータおよび第1段階の基準マスキング強度は、初期分析段階105中に計算されたパラメータQPNom1および基準マスキング強度φR1である。107の後、プロセスは、107で計算された量子化パラメータ値に基づき、シーケンスを符号化する110で。次に、符号化プロセス100は、終了すべきかどうかを判定する115で。異なる実施形態は、全体的な符号化プロセスを終了させることに関して、異なる基準を有する。マルチパス符号化プロセスを完全に終了させる終了条件の実施例には、以下が含まれる。すなわち、|Ep|<εである場合。ただし、εは、最終ビットレートにおける許容誤差である。QPNompが、QP値の有効範囲の上限または下限にある場合。パスの回数が、容認できるパスの最大回数PMAXを超えた場合。一部の実施形態は、以上の終了条件のすべてを使用する可能性があるのに対して、他の諸実施形態は、これらの条件の一部だけを使用する可能性がある。さらに別の諸実施形態は、符号化プロセスを終了させることに関して、他の終了条件を使用することが可能である。マルチパス符号化プロセスが、終了することを決めた場合115で、プロセス100は、第2の探索段階を省き、145に進む。145で、プロセスは、最後のパスpからのビットストリームを最終結果として保存し、その後、終了する。他方、プロセスが、終了すべきではないと判定した場合115で、プロセスは、次に、第1の探索段階を終了させるべきかどうかを判定する120で。やはり、異なる諸実施形態は、第1の探索段階を終了させることに関して、異なる基準を有する。マルチパス符号化プロセスの第1の探索段階を終了させる終了条件の実施例には、以下が含まれる。すなわち、QPNomp1が、QPNomqと同一であり、かつq≦pである場合その場合、ビットレートの誤差は、名目QPを変更しても、それよりも下げることができない。|Ep|<εCであり、εC>εである場合。ただし、εCは、第1の探索段階に関するビットレートの許容誤差である。パスの回数が、P1を超えている場合。ただし、P1は、PMAx未満である。パスの回数が、P1未満であるP2を超えており、かつ|Ep|<ε2であり、ε2>εCである場合。一部の実施形態は、以上の終了条件のすべてを使用する可能性があるのに対して、他の諸実施形態は、これらの条件の一部だけを使用する可能性がある。さらに別の諸実施形態は、第1の探索段階を終了させることに関して、他の終了条件を使用することが可能である。マルチパス符号化プロセスが、第1の探索段階を終了させることを決めた場合120で、プロセス100は、次のサブセクションで説明される、第2の探索段階に進む。他方、プロセスが、第1の探索段階を終了させるべきではないと判定した場合120で、プロセスは、第1の探索段階における次のパスに関する名目QPを更新する125ですなわち、QPNomp1を定義する。一部の実施形態では、名目QPNomp1は、以下のとおり更新される。パス1の終りで、それらの実施形態は、QPNomp1=QPNompχEpと定義する。ただし、χは、定数である。パス2からパスN1までの各パスの終りで、それらの実施形態は、次に、QPNomp1=InterpExtrap0,Eq1,Eq2,QPNomq1,QPNomq2と定義する。ただし、InterpExtrapは、以下にさらに説明される関数である。また、上の数式では、q1およびq2は、パスpまでのすべてのパスの中で最低である、対応するビットレート誤差を有するパス番号であり、q1、q2、およびpは、以下の関係を有する。すなわち、1≦q1≦q2≦pである。以下は、InterpExtrap関数に関する擬似コードである。xが、x1からx2までの間にない場合、この関数は、補外外挿関数であることに留意されたい。それ以外の場合、この関数は、補間内挿関数である。InterpExtrapifyy1elseyy1returny}名目QP値は、通常、整数値に丸められ、QP値の有効範囲内に入るようにクリッピングされる。他の諸実施形態は、前述したアプローチとは異なる形で、名目QPNomp1値を計算することも可能であることが、当業者には認識されよう。125の後、プロセスは、107に戻り、次のパスすなわち、p:=p1を開始し、このパスに関して、各フレームkに関する特定の量子化パラメータMQPpk、ならびに現在のパスpに関するフレームk内のそれぞれの個別のマクロブロックmに関する特定の量子化パラメータMQPMBpk,mを計算する107で。次に、プロセスは、それらの新たに計算された量子化パラメータに基づき、フレームシーケンスを符号化する110で。そして、110から、プロセスは、前述した115に進む。<C.第2の探索段階:基準マスキング強度調整>プロセス100は、第1の探索段階を終了すべきであると判定した場合120で、130に進む。第2の探索段階で、プロセス100は、シーケンスのN2回の符号化を実行する。ただし、N2は、第2の探索段階中のパスの回数を表す。各パス中、プロセスは、同一の名目量子化パラメータ、および変化する基準マスキング強度を使用する。130で、プロセス100は、パスN11である次のパス、すなわちパスp1に関する基準マスキング強度φRp1を計算する。パスN11において、プロセス100は、135でフレームシーケンスを符号化する。異なる諸実施形態は、パスpの終りに、異なる形で基準マスキング強度φRp1を計算する130で。2つの代替のアプローチを以下に説明する。一部の実施形態は、先行するパスからのビットレートの誤差、およびφRの値に基づき、基準マスキング強度φRpを計算する。例えば、パスN1の終りに、一部の実施形態は、φRN11=φRN1φRN1×Konst×EN1であると定義する。mが、1より大きい整数であるパスN1mの終りに、一部の実施形態は、φRN1m=InterpExtrap0,EN1m-2,EN1m-1,φRN1m-2,φRN1m-1であると定義する。代わりに、一部の実施形態は、φRN1m=InterpExtrap0,EN1m-q2,EN1m-q1,φRN1m-q2,φRN1m-q1であると定義する。ただし、q1およびq2は、最良の誤差を与えた先行するパスである。他の諸実施形態は、セクションIで定義されたAMQPを使用することにより、第2の探索段階における各パスの終りに、基準マスキング強度を計算する。所与の名目QP、およびφRの何らかの値に関してAMQPを計算するための1つのやり方を、関数GetAvgMaskedQPの擬似コードに関連して以下に説明する。GetAvgMaskedQPsum0forMQPCalcMQPmaxQPFrameAdjustmentを使用して計算された、フレームkに関するmaskedQP前段を参照sumMQPreturnsumnumframesAMQPを使用する一部の実施形態は、先行するパスからのビットレートの誤差、およびAMQPの値に基づき、パスp1に関する所望されるAMQPを計算する。そのAMQPに対応するφRp1が、次に、関数SearchAMQPp1,φRpによって与えられる探索手続きを介して求められる。この関数の擬似コードは、このサブセクションの終りにおいて与えられる。例えば、パスN1の終りにおいて一部の実施形態は、AMQPN11を計算する。ただし、N1>1である場合、AMQPN11=InterpExtrap0,EN1-1,EN1,AMQPN1-1,AMQPN1であり、かつN1=1である場合、AMQPN11=AMQPN1である。次に、以上の実施形態は、φRN11=SearchAMQPN11,φRN1であると定義する。パスN1mの終りにただし、mは、1より大きい整数、一部の実施形態は、AMQPN1m=InterpExtrap0,EN1m-2,EN1m-1,AMQPN1m-2,AMQPN1m-1であり、かつφRN1m=SearchAMQPN1m,φRN1m-1であると定義する。所望されるAMQP、およびφRの何らかの既定値が与えられると、所望されるAMQPに対応するφRは、一部の実施形態では、以下の擬似コードを有するSearch関数を使用して求められることが可能である。すなわち、SearchinterpolateSuccessTrue別の設定が行われるまでreLumaSad0refLumaSad1refLumaSadxφRerrorInAvgMaskedQpGetAvgMaskedQpAMQPifntimes0dontimesrefLumaSad0errorInAvgMaskedQpGetAvgMaskedQpamqpwhileifinterpolateSuccessFalseelseerrorInAvgMaskedQp<0ntimes0dontimesrefLumaSad1errorInAvgMaskedQpGetAvgMaskedQpamqpwhileifinterpolateSuccessFalsentimes0dontimesrefLumaSadx2単純な連続近似errorInAvgMaskedQpGetAvgMaskedQpAMQPifrefLumaSad1refLumaSadxelserefLumaSad0refLumaSadxwhile>005ntimes<12ifinterpolateSuccessFalseifreturnrefLumaSadxelsereturnφRである。以上の擬似コードにおいて、数値10、12、および0.05は、適切に選択された閾値で置き換えられてもよい。フレームシーケンスの符号化を介して、次のパスパスp1に関する基準マスキング強度を計算した後、プロセス100は、132に進み、次のパスすなわち、p:=p1を開始する。各符号化パスp中の各フレームk、および各マクロブロックmに関して、プロセスは、各フレームkに関する特定の量子化パラメータMQPpk、ならびにフレームk内の個々のマクロブロックmに関する特定の量子化パラメータMQPMBpk,mを計算する132で。所与の名目量子化パラメータQPNomp、および基準マスキング強度φRpに関するパラメータMQPpkおよびMQPMBpk,mの計算は、セクションIIIにおいて説明されているただし、MQPpkおよびMQPMBpk,mは、セクションIIIにおいて前述した関数、CalcMQPおよびCalcMQPforMBを使用することによって計算される。132の間の第1のパス中、基準マスキング強度は、130において計算されたばかりの基準マスキング強度である。また、第2の探索段階中、名目QPも、第2の探索段階全体を通して、一定のままである。一部の実施形態では、第2の探索段階中の名目QPは、第1の探索段階中に最良の符号化ソリューションをもたらしたすなわち、最低のビットレート誤差の符号化ソリューションをもたらした名目QPである。132の後、プロセスは、130で計算された量子化パラメータを使用してフレームシーケンスを符号化する135で。135の後、プロセスは、第2の探索段階を終了させるべきかどうかを判定する140で。異なる諸実施形態は、パスpの終りに第2の探索段階を終了させることに関して、異なる基準を使用する。そのような基準の実施例は、以下のとおりである。すなわち、|Ep|<εの場合。ただし、εは、最終ビットレートの許容誤差である。パスの回数が、許容されるパスの最大回数を超えている場合。一部の実施形態は、以上の終了条件のすべてを使用する可能性があるのに対して、他の諸実施形態は、これらの条件の一部だけを使用する可能性がある。さらに別の諸実施形態は、第1の探索段階を終了させることに関して、他の終了条件を使用することが可能である。プロセス100は、第2の探索段階を終了させるべきでないと判定すると140において、130に戻り、符号化の次のパスに関する基準マスキング強度を再計算する。130から、プロセスは、132に進んで、量子化パラメータを計算し、次に、135に進んで、その新たに計算された量子化パラメータを使用することにより、ビデオシーケンスを符号化する。他方、プロセスは、第2の探索段階を終了させることを決めた場合140で、145に進む。145で、プロセス100は、最後のパスpからのビットストリームを最終結果として保存し、その後、終了する。[V.復号器入力バッファアンダフロー制御]本発明の一部の実施形態は、復号器によって使用される入力バッファの使用に関して最適な符号化ソリューションを特定するため、ビデオシーケンスの目標ビットレートに対する様々な符号化を調べるマルチパス符号化プロセスを提供する。一部の実施形態は、このマルチパスプロセスは、図1のマルチパス符号化プロセス100に従う。復号器入力バッファ復号器バッファの使用率は、符号化されたイメージシーケンス例えば、フレームの復号化中、ある程度変動する。これは、符号化されたイメージのサイズの変動、復号器が符号化されたデータを受け取る速度、復号器バッファのサイズ、復号化プロセスの速度、その他の、様々な要因のためである。復号器バッファアンダフローとは、イメージが、復号器側に完全に到着する前に、復号器が、次のイメージを復号化する準備ができている状況を意味する。一部の実施形態のマルチパス符号器は、復号器バッファをシミュレートし、シーケンス内の選択されたセグメントを再符号化して、復号器バッファアンダフローを防止する。図2は、本発明の一部の実施形態のコーデックシステム200を概念的に示す。このシステムは、復号器205および符号器210を含む。この図では、符号器210は、符号器210が、復号器205の同様のコンポーネントの動作をシミュレートすることを可能にする、いくつかのコンポーネントを有する。具体的には、復号器205は、入力バッファ215と、復号化プロセス220と、出力バッファ225とを有する。符号器210は、シミュレートされた復号器入力バッファ230、シミュレートされた復号化プロセス235、およびシミュレートされた復号器出力バッファ240を保持することにより、以上のモジュールをシミュレートする。本発明の説明を妨げないように、図2は、復号化プロセス220および符号化プロセス245を単一のブロックとして示すように単純化されている。また、一部の実施形態では、シミュレートされた復号化プロセス235、およびシミュレートされた復号器出力バッファ240は、バッファアンダフロー管理のために利用されず、したがって、この図では、単に例示のために示されている。復号器は、入力バッファ215を保持して、入ってくる符号化イメージの速度および到着時間の変動を平滑化する。復号器に、データがなくなったアンダフロー場合、または入力バッファがいっぱいになった場合オーバフロー、ピクチャ復号化が止まるので、または入ってくるデータが破棄されるので、目に見える復号化の不連続が存在する。これらのケースのいずれも、望ましくない。アンダフロー条件を解消するために、符号器210は、一部の実施形態では、イメージシーケンスをまず符号化し、それらをストレージ255の中に格納する。例えば、符号器210は、マルチパス符号化プロセス100を使用して、イメージシーケンスの第1の符号化を獲得する。次に、符号器210は、復号器入力バッファ215をシミュレートし、バッファアンダフローを生じさせるイメージを再符号化する。すべてのバッファアンダフロー条件が取り除かれた後、再符号化されたイメージが、ネットワーク接続インターネット、ケーブル、PSTN線、その他、非ネットワークの直接接続、媒体DVD、その他、その他であることが可能な接続260を介して、復号器205に供給される。図3は、一部の実施形態の符号器の符号化プロセス300を示す。このプロセスは、復号器バッファがアンダフローになることを生じさせない最適な符号化ソリューションを見出そうと試みる。図3に示されるとおり、プロセス300は、所望される目標ビットレートを満たすイメージシーケンスの第1の符号化例えば、シーケンス内の各イメージに関する平均ビットレートが、所望される平均目標ビットレートを満たすを特定する302で。例えば、プロセス300は、マルチパス符号化プロセス100を使用して302で、イメージシーケンスの第1の符号化を得ることが可能である。302の後、符号化プロセス300は、接続速度すなわち、復号器が、符号化されたデータを受け取る速度、復号器入力バッファのサイズ、符号化されたイメージのサイズ、復号化プロセス速度、その他などの、様々な要因を考慮することにより、復号器入力バッファ215をシミュレートする305で。310で、プロセス300は、符号化されたイメージのセグメントが復号器入力バッファをアンダフローさせるかどうかを判定する。アンダフロー条件を判定するその後、解消させるのに符号器が使用する技術は、後段でさらに説明する。符号化されたイメージが、アンダフロー条件を生じさせないとプロセス300が判定した場合310で、プロセスは、終了する。他方、符号化されたイメージのいずれかのセグメント内にバッファアンダフロー条件が存在するとプロセス300が判定した場合310で、プロセス300は、符号化パラメータを、先行する符号化プロセスからのそれらのパラメータの値に基づき、改良する315で。次に、プロセスは、アンダフローを伴うセグメントを再符号化して320で、セグメントのビットサイズを小さくする。セグメントを再符号化した後、プロセス300は、そのセグメントを調べて325で、アンダフロー条件が解消されたかどうかを判定する。セグメントが、依然として、アンダフローを生じさせるとプロセスが判定した場合325で、プロセス300は、315に進んで、アンダフローを解消するように符号化パラメータをさらに改良する。一方、セグメントが、アンダフローを全く生じさせないとプロセスが判定した場合325で、プロセスは、ビデオシーケンスを再検査して再符号化するための開始点を、320における前回の繰り返しにおいて再符号化されたセグメントの終りの後のフレームとして指定する330で。次に、335で、プロセスは、315および320で指定されたアンダフローセグメントの後に続く最初のIDRフレームまでかつ、そのフレームを除外して、330で指定されたビデオシーケンスの部分を再符号化する。335の後、プロセスは、305に戻り、復号器バッファをシミュレートして、ビデオシーケンスの残りの部分が、再符号化の後、依然として、バッファアンダフローを生じさせるかどうかを判定する。305からのプロセス300の流れを、以上に説明した。<A.符号化されたイメージのシーケンス内のアンダフローセグメントを特定すること>前述したとおり、符号器は、復号器バッファ条件をシミュレートして、符号化された、または再符号化されたイメージシーケンス内のいずれかのセグメントが、復号器バッファの中でアンダフローを生じさせるかどうかを判定する。一部の実施形態では、符号器は、符号化されたイメージのサイズ、帯域幅などのネットワーク条件、復号器要因例えば、入力バッファサイズ、イメージを除去するのにかかる初期時間および名目時間、復号化プロセス時間、各イメージの表示時間、その他を考慮するシミュレーションモデルを使用する。一部の実施形態では、MPEG-4AVC符号化ピクチャバッファCPBモデルが、復号器入力バッファの状態をシミュレートするのに使用される。CPBは、MPEG-4H.264標準において、仮想参照デコーダHypotheticalReferenceDecoderHRDのシミュレートされた入力バッファを指すのに使用される用語である。HRDは、符号化プロセスが、生成することができる適合するストリームの変動性に対する制約を指定する仮想の復号器モデルである。CPBモデルは、周知であるが、便宜上、以下のセクション1で説明する。CPBおよびHRDのより詳細な説明は、DraftITU-TRecommendationandFinalDraftInternationalStandardofJointVideoSpecificationITU-TRec.H.264/ISO/IEC14496-10AVCで見ることができる。1.CPBモデルを使用して、復号器バッファをシミュレートすること以下の段落は、一部の実施形態において、CPBモデルを使用して、復号器入力バッファがどのようにシミュレートされるかを説明する。イメージnの最初のビットが、CPBに入り始める時間は、初期到着時間tainと呼ばれ、以下のとおり導出される。すなわち、イメージが、最初のイメージすなわち、イメージ0である場合、tai0=0であり、イメージが、符号化されている、または再符号化されているシーケンス内の最初のイメージではない場合すなわち、n>0である場合、tain=Maxtafn-1,tai,earliestnである。上の数式において、tai,earliestn=tr,nn-initial_cpb_removal_delayである。ただし、tr,nnは、以下に指定されるCPBからのイメージnの名目除去時間であり、initial_cpb_removal_delayは、初期バッファリング期間である。イメージnに関する最終到着時間は、tafn=tainbn/BitRateによって導出される。ただし、bnは、イメージnのサイズ単位はビットである。一部の実施形態では、符号器は、H.264規格におけるように、ビットストリームのオプションの部分オプショナルパートから名目除去時間を読み取る代わりに、以下に説明されるとおり、名目除去時間の独自の計算を行う。イメージ0に関して、CPBからのイメージの名目除去時間は、tr,n0=initial_cpb_removal_delayによって指定される。イメージnn>0に関して、CPBからのイメージの名目除去時間は、tr,nn=tr,n0sumi=0乃至n-1tiによって指定される。ただし、tr,nnは、イメージnの名目除去時間であり、tiは、ピクチャiに関する表示時間である。イメージnの除去時間は、以下のとおり指定される。tr,nn>=tafnである場合、trn=tr,nnであり、tr,nn<tafnである場合、trn=tafnである。イメージnのサイズ、bnが、余りにも大きいため、名目除去時間における除去が妨げられることを示すのは、この後者trn=tafnのケースである。2.アンダフローセグメントの検出前のセクションで説明されるとおり、符号器は、復号器入力バッファの状態をシミュレートし、所与の時点におけるバッファ内のビット数を獲得することができる。或いは、符号器は、その名目除去時間と最終到着時間の差すなわち、tbn=tr,nn-tafnを介して、それぞれの個別のイメージが、復号器入力バッファの状態をどのように変化させるかを追跡することができる。tbnが、0未満である場合、バッファは、時点tr,nnと時点tafnの間にアンダフローを来たしており、場合によっては、tr,nnより前、およびtafnの後にもアンダフローを来たしている。アンダフローに直接に関わっているイメージは、tb0が、0未満であるかどうかを試験することにより、容易に見出すことができる。しかし、0未満のtbnを有するイメージは、必ずしもアンダフローを生じさせるわけではなく、逆に、アンダフローを生じさせるイメージは、0未満のtbnを有さない可能性もある。一部の実施形態は、アンダフローセグメントを次のように定義する。すなわち、アンダフローがその最悪の点に達するまで、復号器入力バッファを絶えず空にすることによってアンダフローを生じさせる、一続きの連続するイメージ復号化順のとして定義する。図4は、一部の実施形態における、イメージ数に対する、名目除去時間と最終イメージ到着の差tbnのプロットである。このプロットは、1500個の符号化されたイメージのシーケンスに関して描かれている。図4aは、アンダフローセグメントを示し、矢印が、そのセグメントの始まりと終りを示している。簡明にするため、矢印によって明示されていない、第1のアンダフローセグメントの後に出現する別のアンダフローセグメントが、図4aに存在することに留意されたい。図5は、305におけるアンダフロー検出動作を実行するのにエンコーダが使用するプロセス500を示す。プロセス500は、前述したとおり、復号器入力バッファの状態をシミュレートすることにより、各イメージの最終到着時間、taf、および名目除去時間、tr,nをまず判定する505で。このプロセスは、バッファアンダフロー管理の繰り返しプロセス中に数回、呼び出されることが可能であるので、あるイメージ番号を開始点として受け取り、その与えられた開始イメージからイメージシーケンスを調べることに留意されたい。明らかに、最初の繰り返しに関して、開始点は、シーケンス内の最初のイメージである。510で、プロセス500は、復号器入力バッファにおける各イメージの最終到着時間を、復号器によるそのイメージの名目除去時間と比べる。名目除去時間より後の最終到着時間を有するイメージが全く存在しないとプロセスが判定したすなわち、アンダフロー条件は、全く存在しない場合、プロセスは、終了する。他方、最終到着時間が、名目除去時間より後であるイメージが見つかった場合、プロセスは、アンダフローが存在すると判定し、515に進んで、アンダフローセグメントを識別する。515で、プロセス500は、アンダフロー条件が改善し始めるすなわち、tbnが、一続きのイメージにわたってさらに負にならない次の大域最小値まで、復号器バッファが、絶えず空にされることが始まるイメージのセグメントとして、アンダフローセグメントを識別する。次いで、プロセス500は、終了する。一部の実施形態では、アンダフローセグメントの始まりは、関連するフレーム間符号化されたイメージセットの開始を示すフレーム内符号化されたイメージであるIフレームで始まるように、さらに調整される。アンダフローを生じさせる1つまたは複数のセグメントが特定されると、符号器は、そのアンダフローを解消することに取りかかる。以下のセクションBが、単一セグメントのケースすなわち、符号化されたイメージのシーケンス全体が、単一のアンダフローセグメントだけを含むにおけるアンダフローの解消を説明する。その後、セクションCが、マルチセグメントのアンダフローのケースに関するアンダフローの解消を説明する。<B.単一セグメントのアンダフローの解消>図4aを参照すると、tbn対nの曲線が、下降する傾きでn軸と1回だけ交差する場合、シーケンス全体の中に1つだけのアンダフローセグメントが存在する。アンダフローセグメントは、ゼロ交差点より前の最も近い局所最大値で始まり、ゼロ交差点とそのシーケンスの終りの間の、次の大域最小値で終わる。バッファが、アンダフローから回復する場合、セグメントの終点の後には、上昇する傾きを持つ曲線による別のゼロ交差点が続き得る。図6は、一部の実施形態において、単一のイメージセグメント内でアンダフロー条件を解消するのに符号器が利用する315、320、および325でプロセス600を示す。605で、プロセス600は、バッファに入る入力ビットレートと、セグメントの終りで見られる最長の遅延例えば、最小tbnとの積を計算することにより、ビットの総数を推定して、アンダフローセグメント内のΔBを小さくする。次に、610で、プロセス600は、前回の符号化パスまたは直近の複数回のパスからの、現在のセグメント内の平均のマスキングされたフレームQPAMQP、および総ビット数を使用して、そのセグメントに関する所望されるビット数、BT=B-ΔBpを得るための所望されるAMQPを推定する。ただし、pは、そのセグメントに関するプロセス600の現在の繰り返し回数である。その繰り返しが、特定のセグメントに関するプロセス600の最初の繰り返しである場合、AMQPおよび総ビット数は、302で特定された初期最初の符号化ソリューションから導出された、そのセグメントに関するAMQPおよび総ビット数である。他方、その繰り返しが、プロセス600の最初の繰り返しではない場合、それらのパラメータは、プロセス600の前回のパス、または前の数回のパスにおいて得られた符号化ソリューション、または符号化ソリューション群から導出されることが可能である。次に、615で、プロセス600は、所望されるAMQPを使用して、マスキング強度φFnに基づく、平均のマスキングされたフレームQP、MQPnを変更して、より多くのマスキングを許容することができるイメージが、より多くのビット削減を受けるようにする。次に、プロセスは、315で定義されたパラメータに基づき、ビデオセグメントを再符号化する620で。次に、プロセスは、セグメントを調べて625で、アンダフロー条件が解消されたかどうかを判定する。図4bは、プロセス600が、アンダフローセグメントに適用されて、そのセグメントを再符号化した後の、図4aのアンダフロー条件の解消を示す。アンダフロー条件が解消されると、プロセスは、終了する。それ以外の場合、プロセスは、605に戻り、総ビットサイズを小さくするように符号化パラメータをさらに調整する。<C.複数のアンダフローセグメントに対するアンダフロー解消>シーケンス内に複数のアンダフローセグメントが存在する場合、セグメントの再符号化により、すべての後続のフレームに関するバッファ充満時間、tbnが変わる。変更されたバッファ条件を考慮に入れるのに、符号器は、下降する傾きを有する最初のゼロ交差点からすなわち、最低のnで始めて、一度に1つのアンダフローセグメントを探索する。アンダフローセグメントは、そのゼロ交差点より前の最も近い局所最大値で始まり、そのゼロ交差点と次のゼロ交差点あるいは、ゼロ交差がもはや存在しない場合、シーケンスの終りの間の、次の大域最小値で終わる。1つのセグメントを見出した後、符号器は、そのセグメントの終りにおいてtbnを0に設定し、すべての後続のフレームに関してバッファシミュレーションを再び行うことにより、そのセグメントの中のアンダフローを仮想的に除去し、更新されたバッファ充満度を推定する。次に、符号器は、変更されたバッファ充満度を使用して、次のセグメントを探索することを続ける。すべてのアンダフローセグメントが、前述したとおり、特定されると、符号器は、単一セグメントのケースと全く同じように、他のセグメントとは独立に、各セグメントに関して、AMQPを導出し、マスキングされたフレームQPを変更する。他の諸実施形態は、異なる形で実施されることも可能であることが、当業者には認識されよう。例えば、一部の実施形態は、復号器の入力バッファのアンダフローを生じさせる複数のセグメントを特定しない。代わりに、一部の実施形態は、前述したバッファシミュレーションを実行して、アンダフローを生じさせる第1のセグメントを特定する。そのようなセグメントを特定した後、それらの実施形態は、そのセグメントを訂正して、そのセグメントの中のアンダフロー条件を正し、その後、訂正された部分の後から符号化を再開する。シーケンスの残りの部分の符号化の後、それらの実施形態は、次のアンダフローセグメントに関して、そのプロセスを繰り返す。<D.バッファアンダフロー管理の応用例>前述した復号器バッファアンダフローに関する技術は、多数の符号化システムおよび復号化システムに適用される。そのようなシステムのいくつかの実施例を以下に説明する。図7は、ビデオストリーミングサーバ710といくつかのクライアント復号器715~725を接続するネットワーク705を示す。クライアントは、毎秒300kbや毎秒3Mbなどの、異なる帯域幅を有するリンクを介してネットワーク705に接続される。ビデオストリーミングサーバ710は、符号器730からクライアント復号器715~725への符号化されたビデオイメージのストリーミングを制御している。ストリーミングビデオサーバは、ネットワークにおける最も遅い帯域幅すなわち、毎秒300Kb、および最小のクライアントバッファサイズを使用して、符号化されたビデオイメージをストリーミングすることを決めることが可能である。そのケースでは、ストリーミングサーバ710は、毎秒300Kbの目標ビットレートに対して最適化された1つだけの符号化されたイメージセットを必要とする。他方、サーバは、異なる帯域幅、および異なるクライアントバッファ条件に対して最適化された、異なる符号化を生成し、格納することができる。図8は、復号器のアンダフロー管理のための応用例の別の実施例を示す。この実施例では、HD-DVDプレーヤ805が、ビデオ符号器810からの符号化されたビデオデータを格納しているHD-DVD840から、符号化されたビデオイメージを受け取っている。HD-DVDプレーヤ805は、入力バッファ815と、簡明にするために1つのブロック820として示された復号化モジュールセットと、出力バッファ825とを有する。プレーヤ805の出力は、TV830またはコンピュータディスプレイ端末装置835などのディスプレイデバイスに送られる。HD-DVDプレーヤは、非常に高い帯域幅、例えば、毎秒29.4Mbを有することが可能である。ディスプレイデバイス上で高品質のイメージを維持するため、符号器は、ビデオイメージが次のように符号化されることを確実にする。すなわち、イメージシーケンスにおいて、復号器入力バッファに時間どおり送り届けられることが不可能なほど大きなセグメントが存在しないようにする。[VI.コンピュータシステム]図9は、本発明の一実施形態が実施されるコンピュータシステムを提示する。コンピュータシステム900は、バス905と、プロセッサ910と、システムメモリ915と、読み取り専用メモリ920と、永久記憶デバイス925と、入力デバイス群930と、出力デバイス群935とを含む。バス905は、コンピュータシステム900の多数の内部デバイスを通信するように接続するすべてのシステムバス、周辺バス、およびチップセットバスをひとまとめにして表す。例えば、バス905は、プロセッサ910を、読み取り専用メモリ920、システムメモリ915、および永久記憶デバイス925と通信するように接続する。以上の様々なメモリユニットから、プロセッサ910は、本発明のプロセスを実行するために、実行されるべき命令、および処理されるべきデータを取り出す。読み取り専用メモリROM920が、プロセッサ910、ならびにコンピュータシステムの他のモジュール群によって必要とされている静的データおよび命令を格納する。他方、永久記憶デバイス925は、読み取り-書き込みメモリデバイスである。このデバイスは、コンピュータシステム900がオフである場合でも、命令およびデータを格納する不揮発性メモリユニットである。本発明の一部の実施形態は、大容量記憶デバイス磁気ディスクまたは光ディスク、ならびにその対応するディスクドライブなどのを永久記憶デバイス925として使用する。他の諸実施形態は、取り外し可能な記憶デバイスフロッピー登録商標ディスクまたはzip登録商標ディスク、ならびにその対応するディスクドライブなどを永久記憶デバイスとして使用する。永久記憶デバイス925と同様に、システムメモリ915は、読み取り書き込みメモリデバイスである。しかし、記憶デバイス925とは異なり、システムメモリは、ランダムアクセスメモリなどの、揮発性読み取り-書き込みメモリである。システムメモリは、プロセッサが、ランタイムに必要とする命令およびデータの一部を格納する。一部の実施形態では、本発明のプロセスは、システムメモリ915、永久記憶デバイス925、および、読み取り専用メモリ920のうちの少なくとも1つの中に格納される。また、バス905は、入力デバイス群930および出力デバイス群935にも接続する。入力デバイス群は、ユーザが、コンピュータシステムに対して情報を通信し、コマンドを選択することを可能にする。入力デバイス群930には、英数字キーボードおよびカーソルコントローラが含まれる。出力デバイス群935は、コンピュータシステムによって生成されたイメージを表示する。出力デバイス群には、プリンタ、ならびに陰極線管CRTまたは液晶ディスプレイLCDなどのディスプレイデバイスが含まれる。最後に、図9に示されるとおり、バス905は、コンピュータ900を、ネットワークアダプタ図示せずを介してネットワーク965にも接続する。このようにして、コンピュータは、コンピュータのネットワークローカルエリアネットワークLAN、ワイドエリアネットワークWAN、またはイントラネットなど、またはネットワークのネットワークインターネットなどの一部であることが可能である。コンピュータシステム900のコンポーネントのいずれか、またはすべてが、本発明に関連して使用されることが可能である。しかし、他の任意のシステム構成が、本発明に関連して使用されることも可能であることが当業者には認識されよう。本発明を多数の特定の詳細に関連して説明してきたが、本発明は、本発明の趣旨を逸脱することなく、他の特定の形態で実施されることも可能であることが当業者には認識されよう。例えば、復号器入力バッファをシミュレートするH264の方法を使用することの代わりに、バッファサイズ、バッファの中のイメージの到着時間および除去時間、ならびにイメージの復号化時間および表示時間を考慮する他のシミュレーション方法を使用してもよい。前述したいくつかの実施形態は、平均の除去されたSADを計算して、マクロブロック内のイメージ変化の指示を得た。しかし、他の諸実施形態は、異なる形でイメージ変化を識別することが可能である。例えば、一部の実施形態は、マクロブロックのピクセルの予期されるイメージ値を予測することが可能である。それらの実施形態は、次に、その予測値をマクロブロックのピクセルの輝度値から引き、それらの減算の絶対値を合計することにより、マクロブロックSADを生成する。一部の実施形態では、予測値は、そのマクロブロック内のピクセルの値だけでなく、近隣のマクロブロックの1つまたは複数のマクロブロックの中のピクセルの値にも基づく。また、前述した諸実施形態は、導出された空間的マスキング値および時間的マスキング値を直接に使用する。他の諸実施形態は、連続する空間的マスキング値および連続する時間的マスキング値のうちの少なくとも一方に平滑化フィルタリングを適用してから、それらの値を使用することを、ビデオイメージを介してそれらの値の一般的な傾向を選び出すために行う。このため、本発明は、以上の例示的な詳細によって限定されないことが、当業者には理解されよう。"