(57)【特許請求の範囲】
【請求項１】
方法であって、
ビデオシーケンス内にある予測されるべき第１のフレームの第１のフレーム部分を決定すること、
前記第１のフレームの前方インター予測のために前記ビデオシーケンスから第１の参照フレームを決定すること、
前記第１のフレームの後方インター予測のために前記ビデオシーケンスから第２の参照フレームを決定することであって、前記第2の参照フレームは前記第1の参照フレームとは異なる、決定することと、
前記第１の参照フレームおよび前記第２の参照フレームを用いてオプティカルフロー推定を実行することによって、前記第１のフレーム部分のインター予測のためにオプティカルフロー参照フレーム部分を生成することであって、
前記オプティカルフロー推定は、前記第１のフレーム部分の画素に対する各動きフィールドを生成し、
前記オプティカルフロー参照フレーム部分を生成することは、前記第１のフレーム部分の各画素についてラグランジュ関数Ｊを最小化することによってオプティカルフロー推定を実行することを含み、
現在の画素に対する前記ラグランジュ関数Ｊは、
J=Jdata +λJspatial
であり、ここでJdataは、輝度不変仮定に基づくデータペナルティであり、Jspatialは、前記動きフィールドの滑らかさに基づく空間ペナルティであり、λはラグランジュパラメータであり、Jdataは、
Jdata = (Exu + Eyv + Et)２
であり、uは、前記現在の画素の動きフィールドの水平成分を表し、vは、前記現在の画素の前記動きフィールドの垂直成分を表し、Ex、Ey、およびEtは、水平軸ｘ、垂直軸ｙ、および時刻ｔに対する複数の参照フレーム部分の複数の画素値の微分係数であり、前記時刻は、フレームインデックスにより表され、Jspatialは、
Jspatial = (Δu)2 + (Δv)2
であり、Δｕは、前記動きフィールドの水平成分ｕのラプラシアンであり、Δｖは前記動きフィールドの垂直成分ｖのラプラシアンである、生成することと、
前記オプティカルフロー参照フレーム部分を使用して、前記第１のフレーム部分に対して予測プロセスを実行すること、を備える方法。
【請求項２】
前記オプティカルフロー推定によって、前記第１のフレーム部分の複数の画素の対応する動きフィールドが生成され、
前記オプティカルフロー参照フレーム部分を生成することは、
前記複数の動きフィールドを使用して前記第１のフレーム部分と並置された前記第１の参照フレームの複数の画素を前記第１のフレーム部分にワーピングして、第１のワーピングされた参照フレーム部分を形成すること、
前記複数の動きフィールドを使用して前記第１のフレーム部分と並置された前記第２の参照フレームの複数の画素を前記第１のフレーム部分にワーピングして、第２のワーピングされた参照フレーム部分を形成すること、
前記第１のワーピングされた参照フレーム部分および前記第２のワーピングされた参照フレーム部分をブレンディングして、前記オプティカルフロー参照フレーム部分を形成すること、を含む、請求項１に記載の方法。
【請求項３】
前記第１のワーピングされた参照フレーム部分および前記第２のワーピングされた参照フレーム部分をブレンディングすることは、
前記第１の参照フレームと前記第２の参照フレームとの間の距離、並びに前記第１のフレームと前記第１の参照フレームおよび前記第２の参照フレームの各々との間の距離を使用して、並置された複数の画素の値をスケーリングすることによって、前記第１のワーピングされた参照フレーム部分および前記第２のワーピングされた参照フレーム部分の並置された複数の画素の値を組み合わせることを含む、請求項２に記載の方法。
【請求項４】
前記第１のワーピングされた参照フレーム部分および前記第２のワーピングされた参照フレーム部分をブレンディングすることは、
前記第１のワーピングされた参照フレーム部分および前記第２のワーピングされた参照フレーム部分の並置された複数の画素の値を組み合わせること、並びに前記第１のワーピングされた参照フレーム部分および前記第２のワーピングされた参照フレーム部分のうちの１つの単一画素の値を使用することの一方によって、前記オプティカルフロー参照フレーム部分の複数の画素の位置に提供すること、を含む、請求項２または３に記載の方法。
【請求項５】
前記第１のフレーム部分は、前記第１のフレームまたは前記第１のフレームの現在のブロックのうちの１つを含み、
前記オプティカルフロー参照フレーム部分は、前記第１のフレーム部分が前記現在のブロックを含む場合にブロックであり、前記第１のフレーム部分が前記第１のフレームを含む場合にフレーム全体である、請求項１〜４のいずれか１項に記載の方法。
【請求項６】
前記第１の参照フレームは、前記第１のフレームの前方インター予測に利用可能な前記第１のフレームに対する前記ビデオシーケンスの表示順序において最も近い再構成フレームであり、前記第２の参照フレームは、前記第１のフレームの後方インター予測に利用可能な前記第１のフレームに対する前記表示順序において最も近い再構成フレームである、請求項１〜５のいずれか１項に記載の方法。
【請求項７】
前記第１のフレーム部分は、復号化されるべき現在のブロックであり、
前記予測プロセスを実行することは、
前記現在のブロックを符号化するために使用される動きベクトルを使用して、参照ブロックの位置を特定すること、
サブ画素補間フィルタの長さによって前記参照ブロックの複数の境界を拡張すること、
前記参照ブロックの拡張された複数の境界内の複数の画素を含む複数のブロックを特定すること、
前記第１のフレームの残りのブロックについてオプティカルフロー推定を行うことなく、特定された複数のブロックと並置された第１フレームの複数のブロックについて前記オプティカルフロー推定を行うことを含む前記オプティカルフロー参照フレーム部分を生成すること、を含む、請求項１〜６のいずれか１項に記載の方法。
【請求項８】
前記第１のフレーム部分は、符号化されるべき現在のブロックであり、
前記オプティカルフロー参照フレーム部分を生成することは、
前記現在のブロックとしての前記第１のフレームの各ブロックに対してオプティカルフロー推定を実行してオプティカルフロー参照フレームの対応する並置参照ブロックを生成することを含み、
前記予測プロセスを実行することは、
複数の並置参照ブロックを自身の各画素の位置において組み合わせることによって、前記オプティカルフロー参照フレームを形成すること、
前記オプティカルフロー参照フレームを参照フレームバッファに格納すること、
前記現在のブロックの動き検索のために前記オプティカルフロー参照フレームを用いること、を含む、請求項１〜６のいずれか１項に記載の方法。
【請求項９】
装置であって、
プロセッサと、
前記プロセッサが実行して方法を実行可能な命令を含む非一時的な記憶媒体と、を備え、
前記方法は、
ビデオシーケンス内の予測されるべき第１のフレームを決定すること、
前記第１のフレームの前方インター予測のための第１の参照フレームおよび前記第１のフレームの後方インター予測のための第２の参照フレームが利用できるかどうかを判定すること、
前記第１の参照フレームおよび前記第２の参照フレームの両方が利用できると判定したことに応答して、
オプティカルフロー推定プロセスへの入力として、前記第１の参照フレームおよび前記第２の参照フレームを使用して、第１のフレーム部分の複数の画素の対応する動きフィールドを生成すること、
複数の動きフィールドを使用して第１の参照フレーム部分を前記第１のフレーム部分にワーピングして第１のワーピングされた参照フレーム部分を形成することであって、前記第１の参照フレーム部分は、前記第１のフレーム部分の複数の画素と並置された前記第１の参照フレームの複数の画素を含む、前記形成すること、
前記複数の動きフィールドを使用して第２の参照フレーム部分を前記第１のフレーム部分にワーピングして第２のワーピングされた参照フレーム部分を形成することであって、前記第２の参照フレーム部分は、前記第１のフレーム部分の複数の画素と並置された前記第２の参照フレームの複数の画素を含む、前記形成すること、
前記第１のワーピングされた参照フレーム部分および前記第２のワーピングされた参照フレーム部分をブレンディングして、前記第１のフレームのブロックのインター予測のためにオプティカルフロー参照フレーム部分を形成することを、含み、
前記対応する動きフィールドを生成することは、
前記第１の参照フレーム部分および前記第２の参照フレーム部分を使用して、前記第１のフレーム部分の各画素についてラグランジュ関数Ｊの出力を計算することを含み、
前記各画素に対する前記ラグランジュ関数Ｊは、
J=Jdata +λJspatial
であり、ここでJdataは、輝度不変仮定に基づくデータペナルティであり、Jspatialは、前記動きフィールドの滑らかさに基づく空間ペナルティであり、λはラグランジュパラメータであり、
前記ラグランジュ関数の出力を計算することは、
前記ラグランジュパラメータの第１の値を使用して、前記第１のフレーム部分の複数の画素の第１の組の動きフィールドを計算すること、
前記ラグランジュパラメータの第２の値を使用する前記ラグランジュ関数への入力として前記第１の組の動きフィールドを使用して、前記第１のフレーム部分の複数の画素の再調整された１組の動きフィールドを計算すること、を含み、
前記ラグランジュパラメータの第２の値は、前記ラグランジュパラメータの第１の値よりも小さく、前記第１のワーピングされた参照フレームおよび前記第２のワーピングされた参照フレームは、前記再調整された１組の動きフィールドを用いてワーピングされる、装置。
【請求項１０】
前記オプティカルフロー参照フレーム部分を使用して、前記第１のフレームの前記ブロックに対して予測プロセスを実行すること、をさらに備える請求項９に記載の装置。
【請求項１１】
前記第１のフレームの複数のブロックの単一参照インター予測にのみ前記オプティカルフロー参照フレーム部分を用いることをさらに備える請求項９または１０に記載の装置。
【請求項１２】
装置であって、
プロセッサと、
前記プロセッサが実行して方法を実行可能な命令を含む非一時的な記憶媒体と、を備え、
前記方法は、
ビデオシーケンスからの第１の参照フレームおよび前記ビデオシーケンスからの第２の参照フレームを使用して、前記ビデオシーケンスの第１のフレームのブロックのインター予測のためにオプティカルフロー参照フレーム部分を生成すること、
オプティカルフロー推定の第１の処理レベルで第１のフレーム部分の複数の画素の動きフィールドを初期化することであって、前記第１の処理レベルは、前記第１のフレーム部分内のダウンスケーリングされた動きを示し、複数レベルのうちの特定のレベルを含む、前記初期化すること、
前記複数レベルの各レベルに対して、
前記複数の動きフィールドを使用して第１の参照フレーム部分を前記第１のフレーム部
分にワーピングして、第１のワーピングされた参照フレーム部分を形成すること、
前記複数の動きフィールドを使用して第２の参照フレーム部分を前記第１のフレーム部
分にワーピングして、第２のワーピングされた参照フレーム部分を形成すること、
前記オプティカルフロー推定を使用して、前記第１のワーピングされた参照フレーム部分と前記第２のワーピングされた参照フレーム部分との間の複数の動きフィールドを推定することであって、前記オプティカルフロー推定では、前記第１のフレーム部分の各画素に対するラグランジュ関数Jが用いられ、
各画素に対する前記ラグランジュ関数Ｊは、
J=Jdata +λJspatial
であり、ここでJdataは、輝度不変仮定に基づくデータペナルティであり、Jspatialは、前記動きフィールドの滑らかさに基づく空間ペナルティであり、λはラグランジュパラメータであり、
前記ラグランジュ関数を用いたオプティカルフロー推定が、
前記ラグランジュパラメータの第１の値を使用して、前記第１のフレーム部分の複数の画素の第１の組の動きフィールドを計算すること、
前記ラグランジュパラメータの第２の値を使用する前記ラグランジュ関数への入力として前記第１の組の動きフィールドを使用して、前記第１のフレーム部分の複数の画素の再調整された１組の動きフィールドを計算すること、を含み、
前記ラグランジュパラメータの第２の値は、前記ラグランジュパラメータの第１の値よりも小さく、前記第１のワーピングされた参照フレームおよび前記第２のワーピングされた参照フレームは、前記再調整された１組の動きフィールドを用いてワーピングされる、動きフィールドを推定することと、
前記第１のワーピングされた参照フレーム部分と前記第２のワーピングされた参照フレーム部分との間の複数の動きフィールドを使用して、前記第１のフレーム部分の複数の画素の複数の動きフィールドを更新すること、
前記複数レベルのうちの最後のレベルに対して、
更新された複数の動きフィールドを使用して前記第１の参照フレーム部分を前記第１のフレーム部分にワーピングして、最後の第１のワーピングされた参照フレーム部分を形成すること、
前記更新された複数の動きフィールドを使用して前記第２の参照フレーム部分を前記第１のフレーム部分にワーピングして、最後の第２のワーピングされた参照フレーム部分を形成すること、
前記最後の第１のワーピングされた参照フレーム部分および前記第２のワーピングされた参照フレーム部分をブレンディングして、前記オプティカルフロー参照フレーム部分を形成すること、を備える、装置。
【請求項１３】
前記複数のレベルの各レベルについて、
前記ラグランジュ関数のラグランジュパラメータを、第１の参照フレーム部分のワーピング、第２の参照フレーム部分のワーピング、複数の動きフィールドの推定、および動きフィールドの更新の第１の反復に対して最大値に初期化すること、
前記第１の参照フレーム部分のワーピング、前記第２の参照フレーム部分のワーピング、前記複数の動きフィールドの推定、前記ラグランジュパラメータの１組の可能な値の順次小さくなる値を用いた複数の動きフィールドの推定の追加の反復を実行すること、をさらに備える請求項１２に記載の装置。
【請求項１４】
前記複数の動きフィールドを推定することは、
水平軸、垂直軸、および時刻に関して、前記第１のワーピングされた参照フレーム部分および前記第２のワーピングされた参照フレーム部分の複数の画素の複数の微分係数を計算すること、
前記最後のレベルとは異なるレベルに応じて前記複数の微分係数をダウンスケーリングすること、
前記複数の微分係数を使用して前記ラグランジュ関数を表す線形方程式を解くこと、を含む、請求項１２または１３に記載の装置。
【請求項１５】
前記オプティカルフロー参照フレーム部分を使用して、前記第１のフレームの現在のブロックをインター予測すること、をさらに備える請求項１２〜１４のいずれか１項に記載の装置。
【請求項１６】
前記プロセッサおよび前記非一時的な記憶媒体は復号化器を形成する、請求項１２〜１５のいずれか一項に記載の装置。
【請求項１７】
装置であって、
プロセッサと、
前記プロセッサが実行して方法を実行可能な命令を含む非一時的な記憶媒体と、を備え、
前記方法は、
ビデオシーケンス内にある予測されるべき第１のフレームの第１のフレーム部分を決定すること、
前記第１のフレームの前方インター予測のために前記ビデオシーケンスから第１の参照フレームを決定すること、
前記第１のフレームの後方インター予測のために前記ビデオシーケンスから第２の参照フレームを決定することであって、前記第2の参照フレームは前記第1の参照フレームとは異なる、決定することと、
前記第１の参照フレームおよび前記第２の参照フレームを用いてオプティカルフロー推定を実行することによって、前記第１のフレーム部分のインター予測のためにオプティカルフロー参照フレーム部分を生成することであって、
前記オプティカルフロー推定は、前記第１のフレーム部分の画素に対する各動きフィールドを生成し、
前記オプティカルフロー参照フレーム部分を生成することは、前記第１のフレーム部分の各画素についてラグランジュ関数Ｊを最小化することによってオプティカルフロー推定を実行することを含み、
現在の画素に対する前記ラグランジュ関数Ｊは、
J=Jdata +λJspatial
であり、ここでJdataは、輝度不変仮定に基づくデータペナルティであり、Jspatialは、前記動きフィールドの滑らかさに基づく空間ペナルティであり、λはラグランジュパラメータであり、Jdataは、
Jdata = (Exu + Eyv + Et)２
であり、uは、前記現在の画素の動きフィールドの水平成分を表し、vは、前記現在の画素の前記動きフィールドの垂直成分を表し、Ex、Ey、およびEtは、水平軸ｘ、垂直軸ｙ、および時刻ｔに対する複数の参照フレーム部分の複数の画素値の微分係数であり、前記時刻は、フレームインデックスにより表され、Jspatialは、
Jspatial = (Δu)2 + (Δv)2
であり、Δｕは、前記動きフィールドの水平成分ｕのラプラシアンであり、Δｖは前記動きフィールドの垂直成分ｖのラプラシアンである、生成することと、
前記オプティカルフロー参照フレーム部分を使用して、前記第１のフレーム部分に対して予測プロセスを実行すること、を備える装置。
【発明の詳細な説明】
【背景技術】
【０００１】
デジタルビデオストリームは、一連のフレームまたは静止画像を使用して映像を表現する。デジタルビデオは、例えば、ビデオ会議、高精細度ビデオエンターテイメント、ビデオ広告、またはユーザ生成ビデオの共有を含む様々なアプリケーションに使用される。デジタルビデオストリームは、大量のデータを含み、ビデオデータの処理、送信、または記憶のために、コンピューティングデバイスの大量のコンピューティングリソースまたは通信リソースを消費する。圧縮および他の符号化技術を含むビデオストリームにおけるデータ量を低減するための様々なアプローチが提案されている。
【０００２】
圧縮のある技術は、参照フレームを使用して、符号化されるべき現在のブロックに対応する予測ブロックを生成する。現在のブロック自体の値の代わりに、予測ブロックと現在のブロックとの間の差分が符号化されて、符号化されるデータ量を低減することができる。
【発明の概要】
【０００３】
本開示は、概して、ビデオデータの符号化および復号化に関し、より詳細には、ビデオ圧縮における動き補償予測のためのブロックに基づくオプティカルフロー推定の使用に関する。またビデオ圧縮における動き補償予測のための並置参照フレームを補間できるフレームレベルに基づくオプティカルフロー推定が説明される。
【０００４】
本開示は、符号化および復号化の方法および装置を説明する。本開示の実施形態に従った方法は、ビデオシーケンス内にある予測されるべき第１のフレームの第１のフレーム部分を決定すること、第１のフレームの前方インター予測のためにビデオシーケンスから第１の参照フレームを決定すること、第１のフレームの後方インター予測のためにビデオシーケンスから第２の参照フレームを決定すること、第１の参照フレームおよび第２の参照フレームを用いてオプティカルフロー推定を実行することによって、第１のフレーム部分のインター予測のためのオプティカルフロー参照フレーム部分を生成すること、オプティカルフロー参照フレームを使用して、第１のフレーム部分に対して予測プロセスを実行すること、を行う。第１のフレームおよびオプティカルフロー参照フレーム部分は、例えば、ブロックであるかまたはフレーム全体であり得る。
【０００５】
本開示の実施形態に従った装置は、非一時的な記憶媒体またはメモリと、プロセッサと、を備える。前記媒体は、プロセッサが実行して方法を実行可能な命令を含む非一時的な記憶媒体と、を含み、前記方法は、ビデオシーケンス内の予測されるべき第１のフレームを決定すること、前記第１のフレームの前方インター予測のための第１の参照フレームおよび第１のフレームの後方インター予測のための第２の参照フレームが利用できるかどうかを判定すること、を含む。前記方法は、第１の参照フレームおよび第２の参照フレームの両方が利用できると判定したことに応答して、オプティカルフロー推定プロセスへの入力として、第１の参照フレームおよび第２の参照フレームを使用して、第１のフレーム部分の複数の画素の対応する動きフィールドを生成すること、複数の動きフィールドを使用して第１の参照フレーム部分を第１のフレーム部分にワーピングして第１のワーピングされた参照フレーム部分を形成することであって、第１の参照フレーム部分は、第１のフレーム部分の複数の画素と並置された第１の参照フレームの複数の画素を含む、形成すること、複数の動きフィールドを使用して第２の参照フレーム部分を第１のフレーム部分にワーピングして第２のワーピングされた参照フレーム部分を形成することであって、第２の参照フレーム部分は、第１のフレーム部分の複数の画素と並置された第２の参照フレームの複数の画素を含む、形成すること、第１のワーピングされた参照フレーム部分および第２のワーピングされた参照フレーム部分をブレンディングして、第１のフレームのブロックのインター予測のためにオプティカルフロー参照フレーム部分を形成することを、含む。
【０００６】
本開示の実施形態に従った他の装置は、非一時的な記憶媒体またはメモリと、プロセッサと、を備える。前記媒体は、プロセッサが実行して方法を実行可能な命令を含み、前記方法は、ビデオシーケンスからの第１の参照フレームおよびビデオシーケンスからの第２の参照フレームを使用して、ビデオシーケンスの第１のフレームのブロックのインター予測のためにオプティカルフロー参照フレーム部分を生成すること、オプティカルフロー推定の第１の処理レベルで第１のフレーム部分の複数の画素の動きフィールドを初期化することであって、第１の処理レベルは、第１のフレーム部分内のダウンスケーリングされた動きを示し、複数レベルのうちの特定のレベルを含む、初期化すること、複数レベルの各レベルに対して、複数の動きフィールドを使用して第１の参照フレーム部分を第１のフレーム部分にワーピングして、第１のワーピングされた参照フレーム部分を形成すること、複数の動きフィールドを使用して第２の参照フレーム部分を第１のフレーム部分にワーピングして、第２のワーピングされた参照フレーム部分を形成すること、オプティカルフロー推定を使用して、第１のワーピングされた参照フレーム部分と第２のワーピングされた参照フレーム部分との間の複数の動きフィールドを推定すること、第１のワーピングされた参照フレーム部分と第２のワーピングされた参照フレーム部分との間の複数の動きフィールドを使用して、第１のフレーム部分の複数の画素の複数の動きフィールドを更新すること、を含む。前記方法は、複数レベルのうちの最後のレベルに対して、更新された複数の動きフィールドを使用して第１の参照フレーム部分を第１のフレーム部分にワーピングして、最後の第１のワーピングされた参照フレーム部分を形成すること、更新された複数の動きフィールドを使用して第２の参照フレーム部分を第１のフレーム部分にワーピングして、最後の第２のワーピングされた参照フレーム部分を形成すること、最後の第１のワーピングされた参照フレーム部分および第２のワーピングされた参照フレーム部分をブレンディングして、オプティカルフロー参照フレーム部分を形成すること、を含む。
【０００７】
本開示の実施形態に従った他の装置は、非一時的な記憶媒体またはメモリと、プロセッサと、を備える。前記媒体は、プロセッサが実行して方法を実行可能な命令を含み、前記方法は、ビデオシーケンス内にある予測されるべき第１のフレームの第１のフレーム部分を決定すること、第１のフレームの前方インター予測のためにビデオシーケンスから第１の参照フレームを決定すること、第１のフレームの後方インター予測のためにビデオシーケンスから第２の参照フレームを決定すること、第１の参照フレームおよび第２の参照フレームを用いてオプティカルフロー推定を実行することによって、第１のフレーム部分のインター予測のためにオプティカルフロー参照フレーム部分を生成すること、オプティカルフロー参照フレームを使用して、第１のフレーム部分に対して予測プロセスを実行すること、を含む。
【０００８】
本開示のこれらおよび他の態様は、以下の実施形態の詳細な説明、添付の特許請求の範囲および添付の図面において開示される。
【図面の簡単な説明】
【０００９】
本明細書の記載は、特に明記しない限り、以下に記載される添付の図面を参照し、いくつかの図面に亘って同様の参照番号が同様の構成を参照している。
【図１】ビデオ符号化および復号化システムの概略図である。
【図２】送信局または受信局を具体化することができるコンピューティングデバイスの一例のブロック図である。
【図３】符号化され、続いて復号化される典型的なビデオストリームの図である。
【図４】本開示の実施形態に従った符号化器のブロック図である。
【図５】本開示の実施形態に従った復号化器のブロック図である。
【図６】参照フレームバッファの一例のブロック図である。
【図７】ビデオシーケンスの表示順序における一群のフレームを示す図である。
【図８】図７の一群のフレームのコーディング順序の一例を示す図である。
【図９】本明細書の開示に従った動きフィールドの線形投影を説明するために使用される図である。
【図１０】オプティカルフロー推定を使用して生成された参照フレームの少なくとも一部分を使用したビデオフレームの動き補償予測のプロセスのフローチャート図である。
【図１１】オプティカルフロー参照フレーム部分を生成するプロセスのフローチャート図である。
【図１２】オプティカルフロー参照フレーム部分を生成する別のプロセスのフローチャート図である。
【図１３】図１１，１２のプロセスを示す図である。
【図１４】オブジェクトのオクルージョンを示す図である。
【図１５】復号化器を最適化する技術を示す図である。
【発明を実施するための形態】
【００１０】
ビデオストリームは、ビデオストリームを送信または格納するのに必要な帯域幅を低減するために、様々な技術によって圧縮され得る。ビデオストリームは、圧縮を含むビットストリームに符号化され、その後、復号化器に送信され、復号化器はビデオストリームを復号化または圧縮解除して、視聴または後処理するために準備する。ビデオストリームの圧縮は、空間的補償予測および／または動き補償予測によってビデオ信号の空間的および時間的相関をよく利用する。インター予測は、例えば、１つまたは複数の動きベクトルを使用して、以前に符号化され復号化された画素を使用して符号化されるべき現在のブロックに類似するブロック（予測ブロックとも呼称される）を生成する。１つまたは複数の動きベクトルおよび２つのブロック間の差を符号化することによって、符号化された信号を受信する復号化器は、現在のブロックを再作成することができる。インター予測は、動き補償予測とも呼称され得る。
【００１１】
インター予測プロセスで予測ブロックを生成するために使用される各動きベクトルは、現在のフレーム以外のフレーム、すなわち、参照フレームを指す。複数の参照フレームは、ビデオストリームのシーケンスにおける現在のフレームの前または後に位置され、参照フレームとして使用される前に再構成されるフレームであり得る。場合によっては、ビデオシーケンスの現在のフレームの複数のブロックを符号化または復号化するために使用される３つの参照フレームがあってもよい。あるフレームは、ゴールデンフレーム（golden frame）と呼称され得るフレームである。他のフレームは、直近の符号化または復号化されたフレームである。最終フレームは、シーケンス内の１つまたは複数のフレームの前に符号化または復号化されるが、出力表示順序ではそれらのフレームの後に表示される代替参照フレームである。このように、代替参照フレームは、後方予測に使用可能な参照フレームである。１つまたは複数の前方および／または後方参照フレームが使用されて、ブロックを符号化または復号化することができる。現在のフレーム内のブロックを符号化または復号化するために使用されるときの参照フレームの有効性は、結果として得られる信号対雑音比またはレート歪み（rate-distortion）の他の測定値に基づいて測定され得る。
【００１２】
この技術では、複数の予測ブロックを形成する複数の画素は、１つまたは複数の利用可能な参照フレームから直接取得される。複数の参照画素ブロックまたはそれらの線形結合は、現在のフレーム内の任意のコーディングブロックの予測に使用される。この直接的なブロックに基づく予測は、複数の参照フレームから利用可能な実際の動きアクティビティを取得しない。このため、動き補償予測の精度が低下する可能性がある。
【００１３】
利用可能な双方向の参照フレーム（例えば、１つまたは複数の前方参照フレームおよび１つまたは複数の後方参照フレーム）からの動き情報をより十分に利用するために、本明細書の実施形態は、オプティカルフロー（optical flow）によって計算された画素毎の動きフィールドを使用して映像信号における真の動きアクティビティを推定する、現在のコーディングフレーム部分と並置された（collocated）複数の参照フレーム部分を説明する。複数の参照フレームから直接的に決定される従来のブロックに基づく動き補償予測の能力を超える複雑な非並進運動アクティビティ（complicated non-translational motion activity）の追跡を可能にする複数の参照フレーム部分が補間される。このような複数の参照フレーム部分の使用によって、予測品質が向上され得る。本明細書で使用する場合、フレーム部分は、ブロック、スライス（slice）、またはフレーム全体など、フレーム全体の一部分を指す。あるフレームのフレーム部分は、別のフレームのフレーム部分と、それらが同じ寸法を有しかつ各フレームの複数の寸法の同じ画素位置にある場合に並置される。
【００１４】
映像圧縮および再構成で使用するための複数の参照フレーム部分を補間するオプティカルフロー推定の使用のさらなる詳細は、本明細書の教示が具体化されるシステムを最初に参照して本明細書で説明される。
【００１５】
図１は、ビデオ符号化及び復号化システム１００の概略図である。送信局１０２は、例えば、図２に記載されているようなハードウェアの内部構成を有するコンピュータとすることができる。しかしながら、送信局１０２の他の適切な実施形態も可能である。例えば、送信局１０２の処理を複数の装置に分散させることができる。
【００１６】
ネットワーク１０４は、ビデオストリームの符号化および復号化のために、送信局１０２および受信局１０６を接続することができる。具体的には、ビデオストリームを送信局１０２で符号化することができ、符号化されたビデオストリームを受信局１０６で復号化することができる。ネットワーク１０４は、例えばインターネットであってもよい。ネットワーク１０４は、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、仮想プライベートネットワーク（ＶＰＮ）、携帯電話ネットワーク、または送信局１０２から、この例では、受信局１０６にビデオストリームを転送する任意の他の手段とすることができる。
【００１７】
受信局１０６は、一例では、図２に記載されたようなハードウェアの内部構成を有するコンピュータとすることができる。しかしながら、受信局１０６の他の適切な実施形態も可能である。例えば、受信局１０６の処理を複数の装置に分散させることができる。
【００１８】
ビデオ符号化および復号化システム１００の他の実施形態も可能である。例えば、実施形態はネットワーク１０４を省略することができる。別の実施形態では、ビデオストリームを符号化し、後で受信局１０６並びに非一時な的記憶媒体またはメモリを有する任意の他の装置に送信するために格納することができる。一実施形態では、受信局１０６は、符号化されたビデオストリームを（例えば、ネットワーク１０４、コンピュータバス、および／または何らかの通信経路を介して）受信し、後の復号化のためにビデオストリームを記憶する。一実施形態では、ネットワーク１０４を介して符号化されたビデオを伝送するためにリアルタイム転送プロトコル（RTP:real-time transport protocol）が使用される。別の実施形態では、ビデオストリーミングプロトコルに基づくハイパーテキスト転送プロトコル（HTTP:Hypertext Transfer Protocol）などのＲＴＰ以外の転送プロトコルが使用されてもよい。
【００１９】
ビデオ会議システムで使用される場合、例えば、送信局１０２および／または受信局１０６は、以下に説明するように、ビデオストリームを符号化および復号化する能力を含むことができる。例えば、受信局１０６は、ビデオ会議サーバ（例えば、送信局１０２）から符号化されたビデオビットストリームを受信して復号化および視聴し、さらにそのビデオビットストリームを他の参加者による復号化および視聴のために符号化してビデオ会議サーバに送信するビデオ会議参加者とし得る。
【００２０】
図２は、送信局または受信局を実施することができるコンピューティングデバイス２００の一例のブロック図である。例えば、コンピューティングデバイス２００は、図１の送信局１０２および受信局１０６の一方または両方を実施することができる。コンピューティングデバイス２００は、複数のコンピューティングデバイスを含むコンピューティングシステムの形態、または例えば、携帯電話、タブレットコンピュータ、ラップトップコンピュータ、ノートブックコンピュータ、デスクトップコンピュータなどの単一のコンピューティングデバイスの形態とすることができる。
【００２１】
コンピューティングデバイス２００内のＣＰＵ２０２は、中央処理装置とすることができる。代替的に、ＣＰＵ２０２は、現在存在するか、または今後開発される情報を操作または処理することができる任意の他のタイプのデバイスまたは複数のデバイスであってもよい。開示された実施態様は、図示のような特定のプロセッサ、例えばＣＰＵ２０２で実施することができるが、複数のプロセッサを使用して速度と効率の利点を達成することができる。
【００２２】
コンピューティングデバイス２００内のメモリ２０４は、実施形態では読み出し専用メモリ（ＲＯＭ）デバイスまたはランダムアクセスメモリ（ＲＡＭ）デバイスであってもよい。任意の他の適切なタイプの記憶装置または非一時的な記憶媒体をメモリ２０４として使用することができる。メモリ２０４は、ＣＰＵ２０２がバス２１２を使用してアクセスするコードおよびデータ２０６を含むことができる。メモリ２０４は、オペレーティングシステム２０８およびアプリケーションプログラム２１０をさらに含むことができ、アプリケーションプログラム２１０は、本明細書に記載された方法をＣＰＵ２０２が実行するのを可能にする少なくとも１つのプログラムを含む。例えば、アプリケーションプログラム２１０は、アプリケーション１〜Ｎを含むことができ、アプリケーション１〜Ｎは、本明細書で説明する方法を実行するビデオ符号化アプリケーションをさらに含む。コンピューティングデバイス２００はまた、例えば、モバイルコンピューティングデバイスと共に使用されるメモリカードとすることができる二次ストレージ２１４を含むことができる。ビデオ通信セッションは、かなりの量の情報を含み得るので、それらは、二次ストレージ２１４に全体的または部分的に記憶され、処理のために必要に応じてメモリ２０４にロードされる。
【００２３】
コンピューティングデバイス２００は、ディスプレイ２１８などの１つまたは複数の出力デバイスを含むこともできる。ディスプレイ２１８は、一例では、ディスプレイを、タッチ入力を感知するように動作可能なタッチセンシティブエレメントと組み合わせたタッチセンシティブディスプレイであってもよい。ディスプレイ２１８は、バス２１２を介してＣＰＵ２０２に接続することができる。ユーザがコンピューティングデバイス２００をプログラムするかまたは他の方法で使用することを可能にする他の出力デバイスが、ディスプレイ２１８に加えて、またはディスプレイ２１８に代えて設けられてもよい。出力デバイスがディスプレイであるか、またはディスプレイを含む場合、ディスプレイは、液晶ディスプレイ（ＬＣＤ）、陰極線管（ＣＲＴ）ディスプレイ、または有機ＬＥＤ（ＯＬＥＤ）などの発光ダイオード（ＬＥＤ）ディスプレイを含む様々な方法で実施することができる。
【００２４】
コンピューティングデバイス２００は、コンピューティングデバイス２００を操作するユーザの画像等の画像を検出することができる、例えば、カメラなどの撮像デバイス２２０、または現在または将来開発される任意の他の撮像デバイス２２０を含むか、または撮像デバイス２２０と通信することができる。撮像デバイス２２０は、コンピューティングデバイス２００を操作するユーザの方に向けられるように配置することができる。一例では、撮像デバイス２２０の位置および光軸は、視野が、ディスプレイ２１８に直接隣接する領域であって、その領域からディスプレイ２１８が視認可能な領域を含むように構成することができる。
【００２５】
コンピューティングデバイス２００は、コンピューティングデバイス２００の近くの音を感知することができる、例えば、マイクロホンなどの音声感知デバイス２２２、または現在または今後開発される任意の他の音声感知デバイスを含むか、または音声感知デバイス２２２と通信することができる。音声感知デバイス２２２は、コンピューティングデバイス２００を操作するユーザの方に向けられ、かつユーザがコンピューティングデバイス２００を操作している間にユーザによって発せられた例えば音声、他の発話を受信するように構成することができる。
【００２６】
図２は、コンピューティングデバイス２００のＣＰＵ２０２およびメモリ２０４が特定のユニットに統合されていることを示しているが、他の構成を利用することもできる。ＣＰＵ２０２の動作は、直接的にまたはローカルエリアネットワークまたは他のネットワークを介して接続することができる複数のマシン（個別のマシンは１つまたは複数のプロセッサを有することができる）にわたって分散させることができる。メモリ２０４は、ネットワークベースのメモリのような複数のマシンに分散するか、またはコンピューティングデバイス２００の動作を実行する複数のマシンにおけるメモリとすることができる。本明細書では特定のバスとして示されているが、コンピューティングデバイス２００のバス２１２は、複数のバスから構成することができる。さらに、二次ストレージ２１４は、コンピューティングデバイス２００の他の構成要素に直接接続されるか、またはネットワークを介してアクセスされ、かつメモリカードなどの統合されたユニットまたは複数のメモリカードなどの複数のユニットを含むことができる。従って、コンピューティングデバイス２００は、多種多様な構成で実施することができる。
【００２７】
図３は、符号化され、続いて復号化されるビデオストリーム３００の一例の図である。ビデオストリーム３００は、ビデオシーケンス３０２を含む。次のステージでは、ビデオシーケンス３０２はいくつかの隣接フレーム３０４を含む。３つのフレームが隣接フレーム３０４として示されているが、ビデオシーケンス３０２は任意の数の隣接フレーム３０４を含むことができる。隣接フレーム３０４はさらに、個々のフレーム、例えばフレーム３０６に細分化することができる。次のステージでは、フレーム３０６は、一連のプレーンまたはセグメント３０８に分割することができる。セグメント３０８は、例えば、並列処理を可能にするフレームのサブセットとすることができる。セグメント３０８は、ビデオデータを別々の色に分離することができるフレームのサブセットとすることができる。例えば、カラービデオデータのフレーム３０６は、輝度プレーン（luminance plane）および２つの色度プレーン（chrominance plane）を含むことができる。セグメント３０８は、異なる解像度でサンプリングすることができる。
【００２８】
フレーム３０６がセグメント３０８に分割されているか否かにかかわらず、フレーム３０６は、さらに、フレーム３０６内の例えば１６×１６画素に対応するデータを含むことができるブロック３１０に細分化されてもよい。ブロック３１０は、１つまたは複数のセグメント３０８の画素データからのデータを含むように構成される。ブロック３１０は、４ｘ４画素、８ｘ８画素、１６ｘ８画素、８ｘ１６画素、１６ｘ１６画素、またはそれ以上等の任意の他の適切なサイズであってもよい。特に明記しない限り、ブロックおよびマクロブロックという用語は、本明細書では交換可能に使用される。
【００２９】
図４は、本開示の実施形態による符号化器４００のブロック図である。符号化器４００は、例えばメモリ２０４などのメモリに格納されたコンピュータソフトウェアプログラムを提供するなどして、上述のように送信局１０２内で実施することができる。コンピュータソフトウェアプログラムは、ＣＰＵ２０２等のプロセッサによる実行時に、送信局１０２に図４で説明した方法でビデオデータを符号化させる機械命令を含むことができる。符号化器４００は、例えば、送信局１０２に含まれる専用のハードウェアとして実施することもできる。特に望ましい一実施形態では、符号化器４００は、ハードウェア符号化器である。
【００３０】
符号化器４００は、ビデオストリーム３００を入力として使用してフォワードパス（実線の接続線で示す）において様々な機能を実行して、符号化または圧縮されたビットストリーム４２０を生成するイントラ予測／インター予測ステージ４０２、変換ステージ４０４、量子化ステージ４０６、およびエントロピー符号化ステージ４０８を有する。符号化器４００は、将来のブロックの符号化のためのフレームを再構成する再構成パス（点線の接続線で示す）をも含む。図４において、符号化器４００は、再構成パスにおいて様々な機能を実行する以下のステージ、逆量子化ステージ４１０、逆変換ステージ４１２、再構成ステージ４１４、およびループフィルタリングステージ４１６を有する。符号化器４００の他の構成的な変形例を使用してビデオストリーム３００を符号化することができる。
【００３１】
ビデオストリーム３００が符号化のために提示される場合、フレーム３０６の各フレーム３０４は、ブロック単位で処理され得る。イントラ予測／インター予測ステージ４０２において、各ブロックは、イントラフレーム予測（イントラ予測とも称する）またはインターフレーム予測（ここではインター予測とも呼ばれる）を用いて符号化することができる。いずれの場合でも、予測ブロックを形成することができる。イントラ予測の場合、予測ブロックが、以前に符号化され、かつ再構成された現在のフレーム内のサンプルから形成され得る。インター予測の場合、予測ブロックは、１つまたは複数の以前に構築された参照フレーム内のサンプルから形成され得る。１群のブロックに対する複数の参照フレームの指定は、以下でさらに詳細に説明される。
【００３２】
次に、引き続き図４を参照して、イントラ予測／インター予測ステージ４０２において予測ブロックが現在のブロックから減算され、残差ブロック（残差とも呼ばれる）が生成される。変換ステージ４０４は、ブロックベースの変換を使用して、残差を、例えば周波数領域の変換係数に変換する。量子化ステージ４０６は、変換係数を量子化値または量子化レベルを使用して量子化変換係数と呼ばれる離散量子値に変換する。例えば、変換係数は、量子化値で除算され、切り捨てられてもよい。次に、量子化された変換係数は、エントロピー符号化ステージ４０８によってエントロピー符号化される。例えば、使用される予測のタイプ、変換タイプ、動きベクトルおよび量子化値を含み得る、ブロックを復号化するために使用される他の情報とともに、エントロピー符号化された係数は、圧縮されたビットストリーム４２０に出力される。圧縮されたビットストリーム４２０は、可変長符号化（variable length coding : VLC）または算術符号化などの様々な技術を使用してフォーマットされ得る。圧縮されたビットストリーム４２０は、符号化されたビデオストリームまたは符号化されたビデオビットストリームとも称され、これらの用語は本明細書では互換的に使用される。
【００３３】
符号化器４００および復号化器５００（以下に説明する）が、圧縮されたビットストリーム４２０を復号化するために同じ参照フレームを使用することを確実にするために、図４における再構成パス（点線の接続線で示す）が使用される。再構成パスは、逆量子化ステージ４１０で量子化された変換係数を逆量子化すること、および逆変換ステージ４１２で逆量子化された変換係数を逆変換して微分残差ブロック（微分残差とも称される）を生成することを含む以下により詳細に説明される復号化プロセス中に行われる機能と同様の機能を実行する。再構成ステージ４１４において、イントラ予測／インター予測ステージ４０２で予測された予測ブロックを微分残差に加えて、再構成されたブロックが作成される。ブロック化アーチファクトなどの歪みを低減するために、ループフィルタリングステージ４１６が再構成されたブロックに適用される。
【００３４】
符号化器４００の他の変形例を使用して圧縮されたビットストリーム４２０を符号化することができる。例えば、非変換ベースの符号化器は、あるブロックまたはフレームに関して変換ステージ４０４を使用せずに残差信号を直接量子化することができる。他の実装形態では、符号化器は、共通のステージに組み合わせられた量子化ステージ４０６および逆量子化ステージ４１０を有し得る。
【００３５】
図５は、本開示の実施形態によるデコーダ５００のブロック図である。復号化器５００は、例えば、メモリ２０４に格納されたコンピュータソフトウェアプログラムを提供することによって、受信局１０６で実施することができる。コンピュータソフトウェアプログラムは、ＣＰＵ２０２などのプロセッサによる実行時に、受信局１０６に、図５において説明した方法でビデオデータを復号化させる機械命令を含む。復号化器５００は、例えば、送信局１０２または受信局１０６に含まれるハードウェアで実施することもできる。
【００３６】
復号化器５００は、上述の符号化器４００の再構成パスと同様に、一例では、様々な機能を実行して圧縮されたビットストリーム４２０から出力ビデオストリーム５１６を生成するための以下のステージ、エントロピー復号化ステージ５０２、逆量子化ステージ５０４、逆変換ステージ５０６、イントラ予測／インター予測ステージ５０８、再構成ステージ５１０、ループフィルタリングステージ５１２、およびデブロッキングフィルタリングステージ５１４を含む。圧縮されたビットストリーム４２０を復号化するために復号化器５００の他の構造的な変形例を使用することができる。
【００３７】
圧縮されたビットストリーム４２０が復号化のために提示されると、圧縮されたビットストリーム４２０内のデータ要素が、エントロピー復号化ステージ５０２によって復号化されて、一組の量子化変換係数が生成される。逆量子化ステージ５０４は、（例えば、量子化された変換係数に量子化値を乗算することにより）量子化された変換係数を逆量子化し、逆変換ステージ５０６は、逆量子化された変換係数を逆変換して、符号化器４００における逆変換ステージ４１２によって生成されたものと同一である微分残差を生成する。圧縮されたビットストリーム４２０から復号化されたヘッダ情報を使用して、復号化器５００は、イントラ予測／インター予測ステージ５０８を用いて、例えば、イントラ予測／インター予測ステージ４０２において、符号化器４００で生成されたのと同じ予測ブロックを作成する。再構成ステージ５１０において、予測ブロックを微分残差に加えて再構成ブロックが作成される。ループフィルタリングステージ５１２は、ブロッキングアーチファクトを低減するために再構成されたブロックに適用される。
【００３８】
再構成されたブロックには他のフィルタリングが適用され得る。この例では、ブロッキング歪を低減するためにデブロッキングフィルタリングステージ５１４が再構成ブロックに適用され、その結果が出力ビデオストリーム５１６として出力される。出力ビデオストリーム５１６は、復号化されたビデオストリームとも呼ばれ、用語は本明細書では互換的に使用される。復号化器５００の他の変形例を使用して、圧縮されたビットストリーム４２０を復号化することができる。例えば、復号化器５００は、デブロッキングフィルタリングステージ５１４を用いずに出力ビデオストリーム５１６を生成することができる。
【００３９】
図６は、参照フレームバッファの一例のブロック図である。参照フレームバッファ６００は、ビデオシーケンスの複数のフレームの複数のブロックを符号化または復号化するために使用される複数の参照フレームを格納する。この例では、参照フレームバッファ６００は、最終フレームＬＡＳＴ＿ＦＲＡＭＥ６０２、ゴールデンフレームＧＯＬＤＥＮ＿ＦＲＡＭＥ６０４、および代替参照フレームＡＬＴＲＥＦ＿ＦＲＡＭＥ６０６として識別される複数の参照フレームを含む。参照フレームのフレームヘッダは、参照フレームが格納されている参照フレームバッファ内の位置への仮想インデックスを含み得る。参照フレームのマッピングは、参照フレームの仮想インデックスを、参照フレームが格納されているメモリの物理インデックスにマッピングし得る。２つの参照フレームが同じフレームである場合、それらの参照フレームは、仮想インデックスが異なっていても同じ物理インデックスを有する。なお、参照フレームバッファ６００内の参照位置の数、使用される種類、および名称は一例に過ぎない。
【００４０】
参照フレームバッファ６００に格納された複数の参照フレームが使用されて、符号化または復号されるべき複数のフレームの複数のブロックを予測するための複数の動きベクトルを識別することができる。異なる参照フレームが、現在のフレームの現在のブロックを予測するために使用される予測のタイプに応じて使用されてもよい。たとえば、双方向予測では、現在のフレームの複数のブロックは、ＬＡＳＴ＿ＦＲＡＭＥ６０２またはＧＯＬＤＥＮ＿ＦＲＡＭＥ６０４として格納されたフレームを使用して前方予測でき、ＡＬＴＲＥＦ＿ＦＲＡＭＥ６０６として格納されたフレームを使用して後方予測できる。
【００４１】
参照フレームバッファ６００内に格納できる参照フレームの数は有限であってもよい。図６に示されるように、参照フレームバッファ６００は、最大８つの参照フレームを記憶することができ、記憶された各参照フレームは、参照フレームバッファの異なる仮想インデックスに関連付けられ得る。参照フレームバッファ６００の８つの空間のうち３つは、ＬＡＳＴ＿ＦＲＡＭＥ６０２、ＧＯＬＤＥＮ＿ＦＲＡＭＥ６０４、およびＡＬＴＲＥＦ＿ＦＲＡＭＥ６０６として指定された複数のフレームによって使用されるが、他の参照フレームを格納するために５つの空間が利用可能である。例えば、参照フレームバッファ６００内の１つまたは複数の利用可能な空間が使用されて、さらなる参照フレーム、特に本明細書で説明する補間参照フレーム（interpolated reference frame）の一部分またはすべてを格納することができる。参照フレームバッファ６００は、最大８つの参照フレームを格納できるように示されているが、参照フレームバッファ６００の他の実施形態は、追加のまたはより少ない参照フレームを格納できてもよい。
【００４２】
いくつかの実施形態では、ＡＬＴＲＥＦ＿ＦＲＡＭＥ６０６として指定される代替参照フレームは、表示順序において現在のフレームから離れているが、表示されるよりも早く符号化または復号化されるビデオシーケンスのフレームであり得る。例えば、代替参照フレームは、表示順序で現在のフレームの後の１０個、１２個、またはそれ以上（またはそれ以下）のフレームであってもよい。さらなる複数の代替参照フレームは、表示順序で現在のフレームにより近い位置にあるフレームであり得る。
【００４３】
代替参照フレームは、シーケンス内のフレームに直接対応しなくてもよい。代わりに、代替参照フレームは、フィルタリングが適用されるか、一緒に結合されるか、または一緒に結合され且つフィルタリングされた１つまたは複数のフレームを使用して生成され得る。代替参照フレームが表示されなくてもよい。代わりに、予測プロセスでのみ使用するために生成および送信されるフレームまたはフレームの一部分とすることができる（つまり、復号化されたシーケンスが表示されるときは省略される）。
【００４４】
図７は、ビデオシーケンスの表示順序における１群のフレームを示す図である。この例では、８つのフレーム７０２〜７１６を含む１群のフレームの前には、場合によってはキーフレーム（key frame）またはオーバーレイフレーム（overlay frame）と呼称されるフレーム７００がある。フレーム７００内のブロックは、１群のフレームの複数の参照フレームを使用してインター予測されない。フレーム７００は、この例ではキー（イントラ予測フレームとも呼称される）であり、フレーム内の複数の予測ブロックがイントラ予測を使用して予測されるだけというステータスを指す。しかしながら、フレーム７００は、以前の１群のフレームの再構成されたフレームであり得るインター予測フレームであるオーバーレイフレームであってもよい。インター予測フレームでは、複数の予測ブロックの少なくとも一部分が、インター予測を使用して予測される。各群のフレームを形成するフレームの数は、たとえば、ランダムアクセスまたはエラー耐性のために選択されたキーフレーム間隔等の映像の空間的／時間的特性、および他の符号化された構成によって変化する。
【００４５】
各群のフレームのコーディング順序は、表示順序と異なる場合がある。これにより、ビデオシーケンスの現在のフレームの後にあるフレームを、現在のフレームを符号化するための参照フレームとして使用することができる。復号化器５００などの復号化器は、符号化器４００などの符号化器と共通グループコーディング構造（ommon group coding structure）を共有してもよい。グループコーディング構造は、グループ内の各フレームが参照バッファ（例えば、最終フレーム、代替参照フレームなど）として異なる役割を割り当て、グループ内の複数のフレームのコーディング順序を定義または示す。
【００４６】
図８は、図７の１群のフレームのコーディング順序の一例を示す図である。図８のコーディング順序は、第１のグループコーディング構造と関連付けられ、これにより、単一の後方参照フレームは、グループの各フレームに対して利用可能である。符号化および復号化の順序は同じであるため、図８に示す順序は、本明細書では概してコーディング順序と呼称される。キーまたはオーバーレイフレーム７００は、参照フレームバッファ６００内のＧＯＬＤＥＮ＿ＦＲＡＭＥ６０４などの参照フレームバッファ内のゴールデンフレームと指定される。この例では、フレーム７００はイントラ予測されるため、参照フレームを必要としないが、前のグループから再構成されたフレームであるフレーム７００としてのオーバーレイフレームも、現在のグループのフレームの参照フレームを使用しない。グループ内の最終フレーム７１６は、参照フレームバッファ６００内のＡＬＴＲＥＦ＿ＦＲＡＭＥ６０６などの参照フレームバッファ内の代替参照フレームとして指定される。このコーディング順序では、フレーム７１６は、残りのフレーム７０２〜７１４のそれぞれに後方参照フレームを提供するために、フレーム７００の後の表示順序で符号化される。フレーム７１６の複数のブロックのコーディングにおいて、フレーム７００は、フレーム７１６の複数のブロックに利用可能な参照フレームとして機能する。図８は、１群のフレームのコーディング順序の一例に過ぎない。他のグループコーディング構造は、前方および／または後方予測のために１つまたは複数の異なるまたは追加のフレームを指定してもよい。
【００４７】
上記で簡単に述べたように、利用可能な参照フレーム部分は、オプティカルフロー推定を使用して補間される参照フレーム部分であり得る。参照フレーム部分は、例えば、ブロック、スライス、またはフレーム全体であり得る。本明細書で説明するようにフレームレベル（frame-level）のオプティカルフロー推定が実行される場合、結果として得られる参照フレームは、複数の寸法（dimensions）が現在のフレームと同じであるため、本明細書では並置参照フレーム（co-located reference frame）と呼称される。この補間された参照フレームは、本明細書ではオプティカルフロー参照フレームとも呼称され得る。
【００４８】
図９は、本明細書の開示に従った動きフィールドの線形投影（linear projection）を説明するために使用される図である。階層コーディングフレームワーク（hierarchical coding framework）内で、現在のフレームのオプティカルフロー（動きフィールドとも呼称される）は、現在のフレームの前後で最も近い利用可能な再構成（たとえば、参照）フレームを使用して推定され得る。図９では、参照フレーム１は、現在のフレーム９００の前方予測に使用できる参照フレームであり、参照フレーム２は、現在のフレーム９００の後方予測に使用できる参照フレームである。図６〜図８の例を用いて説明すると、現在のフレーム９００がフレーム７０６である場合、直前または最後のフレーム７０４（例えば、参照フレームバッファ６００にＬＡＳＴ＿ＦＲＡＭＥ６０２として格納された再構成フレーム）を参照フレーム１として使用し、フレーム７１６（例えば、参照フレームバッファ６００にＡＬＴＲＥＦ＿ＦＲＡＭＥ６０６として格納された再構成フレーム）を参照フレーム２として使用することができる。
【００４９】
現在のフレームおよび参照フレームの表示インデックスを認識することによって、動きフィールドが時間的に線形であると仮定して、複数の動きベクトルは、参照フレーム１，２の複数の画素の間で現在のフレーム９００の複数の画素に投影され得る（projected）。図６〜８に関して説明した簡単な例では、現在のフレーム９００のインデックスは「３」であり、参照フレーム１のインデックスは「０」であり、参照フレーム２のインデックスは「７１６」である。図９では、現在のフレーム９００の画素９０２の投影された動きベクトル（projected motion vector）９０４が示されている。説明において前の例を使用して、図７の１群のフレームの複数の表示インデックスは、フレーム７０４がフレーム７１６よりも時間的にフレーム７０６により近いことを示している。したがって、図９に示す単一の動きベクトル９０４は、参照フレーム１と現在のフレーム９００との間の動きの量が、参照フレーム２と現在のフレーム９００との間の動きの量とは異なることを示す。それにもかかわらず、投影された動きフィールド９０６は、参照フレーム１、現在のフレーム９００、および参照フレーム２の間で線形である。
【００５０】
最も近い利用可能な再構成された前方および後方参照フレームを選択し、時間的に線形である現在のフレームの各画素の動きフィールドを仮定することによって、追加情報を送信することなく、符号化器および復号化器（例えば、イントラ／インター予測ステージ４０２およびイントラ／インター予測ステージ５０８）の両方で実行されるべきオプティカルフロー推定を用いて補間された参照フレームの生成が可能になる。最も近い利用可能な再構成された参照フレームの代わりに、符号化器と復号化器との間でアプリオリ（a priori）に指定された異なるフレームが使用される可能性がある。いくつかの実施形態では、オプティカルフロー推定に使用される複数のフレームの識別が送信され得る。補間されたフレームの生成は、以下で詳しく説明される。
【００５１】
図１０は、オプティカルフロー推定を使用して生成された参照フレームの少なくとも一部分を使用した一連のビデオシーケンスの動き補償予測の方法またはプロセス１０００のフローチャート図である。参照フレーム部分は、例えば、ブロック、スライス、または参照フレーム全体であり得る。またオプティカルフロー参照フレーム部分は、本明細書では並置参照フレーム部分（co-located reference frame portion）と呼称され得る。プロセス１０００は、例えば、送信局１０２または受信局１０６などのコンピューティングデバイスによって実行されるソフトウェアプログラムとして実施することができる。例えば、ソフトウェアプログラムは、メモリ２０４または２次ストレージ２１４などのメモリに格納され、ＣＰＵ２０２のようなプロセッサによる実行時に、コンピューティングデバイスにプロセス１０００を実行させる機械可読命令を含むことができる。プロセス１０００は、特殊なハードウェアまたはファームウェアを使用して具体化され得る。いくつかのコンピューティングデバイスは、複数のメモリまたはプロセッサを有してもよく、プロセス１０００において説明される複数の動作は、複数のプロセッサ、メモリ、またはその両方を使用して分散されてもよい。
【００５２】
１００２において、予測されるべき現在のフレームが決定される。複数のフレームは、図８に示されるコーディング順序のような任意の順序で符号化されて予測され得る。また予測されるべき複数のフレームは、例えば、第１、第２、第３のフレームと呼称され得る。第１、第２などのラベルは、必ずしもフレームの順序を示すとは限らない。代わりに、ラベルは、特に明記しない限り、現在のフレームを別のフレームと区別するために使用される。符号化器では、フレームは、ラスタスキャン（raster scan）の順序などのブロックコーディングの順序でブロック単位で処理され得る。また復号化器では、フレームは、符号化されたビットストリーム内の符号化された残差（residual）の受信に応じてブロック単位で処理され得る。
【００５３】
１００４において、前方および後方参照フレームが決定される。本明細書で説明する例では、前方および後方参照フレームは、現在のフレーム９００などの現在のフレームの（たとえば、表示順序の）前後の最も近い再構成されたフレームである。図１０には明示的に示されていないが、前方参照フレームまたは後方参照フレームが存在しない場合、プロセス１０００は終了する。その後、オプティカルフローを考慮せずに現在のフレームが処理される。
【００５４】
１００４において前方参照フレームおよび後方参照フレームが存在することによって、１００６においてオプティカルフロー参照フレーム部分が当該参照フレームを使用して生成され得る。オプティカルフロー参照フレーム部分の生成は、図１１〜１４を参照してより詳細に説明される。オプティカルフロー参照フレーム部分は、いくつかの実施形態では、参照フレームバッファ６００の定義された位置に格納され得る。最初に、本明細書の開示に従ったオプティカルフロー推定が説明される。
【００５５】
オプティカルフロー推定は、以下のラグランジュ関数（Lagrangian function）（１）を最小化することによって現在のフレーム部分の各画素に対して実行され得る。
【００５６】
【数１】
0006905093.tif 000002
関数（１）において、Ｊｄａｔａは輝度不変仮定（brightness constancy assumption）（すなわち、画像の小さな部分の強度値が、位置変化にかかわらず、時間が経過しても変化しないという仮定）に基づくデータペナルティ（data penalty）である。Ｊｓｐａｔｉａｌは、動きフィールドの滑らかさに基づく空間ペナルティ（すなわち、隣接する複数の画素が画像内の同じオブジェクト項目に属している可能性があり、実質的に同じ画像動作をもたらす特性）である。ラグランジュパラメータλは、動きフィールドの滑らかさの重要度（importance）を制御する。パラメータλの値を大きくすると、動きフィールドがより滑らかになり、より大きなスケールでの動きをより適切に考慮することができる。対照的に、パラメータλの値を小さくすると、オブジェクトのエッジやオブジェクトの小さい動きに効果的に適応され得る。
【００５７】
本明細書の教示の実施形態によれば、データペナルティは、データペナルティ関数
【００５８】
【数２】
0006905093.tif 000003
によって表され得る。
【００５９】
現在の画素の動きフィールドの水平成分はｕで表され、動きフィールドの垂直成分はｖで表される。大まかに言うと、Ｅｘ，Ｅｙ，およびＥｔは、（たとえば、フレームインデックスで表される）水平軸ｘ、垂直軸ｙ、および時刻ｔに対する複数の参照フレーム部分の複数の画素値の微分係数（derivative）である。水平軸および垂直軸は、現在のフレーム９００などの現在のフレーム、および参照フレーム１，２などの参照フレームを形成する複数の画素の配列に対して定義される。
【００６０】
データペナルティ関数では、微分係数Ｅｘ，Ｅｙ，およびＥｔは、以下の関数（３）、（４）、および（５）に従って計算され得る。
【００６１】
【数３】
0006905093.tif 000004
変数Ｅ（ｒ１）は、符号化されるべき現在のフレーム内の現在の画素位置の動きフィールドに基づいた参照フレーム１内の投影された位置の画素値である。同様に、変数Ｅ（ｒ２）は、符号化されるべき現在のフレーム内の現在の画素位置の動きフィールドに基づいた参照フレーム２内の投影された位置の画素値である。
【００６２】
変数ｉｎｄｅｘｒ１は、参照フレーム１のディスプレイインデックスであり、フレームのディスプレイインデックスは、ビデオシーケンスの表示順序のインデックスである。同様に、変数ｉｎｄｅｘｒ２は、参照フレーム２のディスプレイインデックスであり、変数ｉｎｄｅｘｃｕｒは、現在のフレーム９００のディスプレイインデックスである。
【００６３】
変数Ｅｘ（ｒ１）は、線形フィルタを使用して参照フレーム１で計算された水平微分（horizontal derivative）である。変数Ｅｘ（ｒ２）は、線形フィルタを使用して参照フレーム２で計算された水平微分である。変数Ｅｙ（ｒ１）は、線形フィルタを使用して参照フレーム１で計算された垂直微分（vertical derivative）である。変数Ｅｙ（ｒ２）は、線形フィルタを使用して参照フレーム２で計算された垂直微分である。
【００６４】
本明細書の開示の実施形態において、水平微分を計算するために使用される線形フィルタは、複数のフィルタ係数［−１／６０，９／６０，−４５／６０，０，４５／６０，−９／６０，１／６０］を有する７タップフィルタ（7-tap filter）である。フィルタは、異なる周波数プロファイル、異なるタップ数、またはその両方を有することができる。垂直微分の計算に使用される線形フィルタは、水平微分の計算に使用される線形フィルタと同じであってもよく、または異なっていてもよい。
【００６５】
空間ペナルティは、空間ペナルティ関数
【００６６】
【数４】
0006905093.tif 000005
で表され得る。
【００６７】
空間ペナルティ関数（６）において、Δｕは、動きフィールドの水平成分ｕのラプラシアン（Laplacian）であり、Δｖは動きフィールドの垂直成分ｖのラプラシアンである。
図１１は、オプティカルフロー参照フレーム部分を生成する方法またはプロセス１１００のフローチャート図である。この例では、オプティカルフロー参照フレーム部分は、参照フレーム全体である。プロセス１１００は、プロセス１０００のステップ１００６を実施することができる。プロセス１１００は、例えば、送信局１０２または受信局１０６などのコンピューティングデバイスによって実行されるソフトウェアプログラムとして実施することができる。例えば、ソフトウェアプログラムは、メモリ２０４または第２の記憶装置２１４などのメモリに格納され、ＣＰＵ２０２のようなプロセッサによる実行時に、コンピューティングデバイスにプロセス１１００を実行させる機械可読命令を含むことができる。プロセス１１００は、特殊なハードウェアまたはファームウェアを使用して具体化され得る。上述したように、複数のプロセッサ、複数のメモリ、またはその両方が使用され得る。
【００６８】
前方参照フレームおよび後方参照フレームは互いに比較的離れている可能性があるため、それらの間に大きな動きがあり、輝度不変仮定の精度が低下する可能性がある。この問題に起因する画素の動きにおける潜在的な誤差を低減するために、現在のフレームから参照フレームまでの推定された複数の動きベクトルが使用されて、現在のフレームに対するオプティカルフロー推定を初期化することができる。１１０２において、現在のフレーム内のすべての画素は、初期化された動きベクトルに割り当てられる。これらは複数の初期動きフィールドを定義し、複数の初期動きフィールドは、第１の処理レベルのために複数の参照フレームを現在のフレームにワーピングして（warp）複数の参照フレーム間の動きの長さを短縮するために利用できる複数の初期動きフィールドを定義する。
【００６９】
現在の画素の動きフィールドｍｖｃｕｒは、
【００７０】
【数５】
0006905093.tif 000006
に従って、現在の画素から後方参照フレーム、この例では参照フレーム２を指す推定動きベクトルｍｖｒ２と、現在の画素から前方参照フレーム、この例では参照フレーム１を指す推定動きベクトルｍｖｒ２との差分を示す動きベクトルを使用して初期化され得る。
【００７１】
複数の動きベクトルの１つが利用できない場合、関数
【００７２】
【数６】
0006905093.tif 000007
に従って、利用可能な動きベクトルを使用して初期の動きを推定できる。
【００７３】
現在の画素が利用可能な動きベクトル参照（motion vector reference）をいずれも有していない場合、初期化された動きベクトルを有する１つまたは複数の空間的近傍（spatial neighbor）が使用されてもよい。例えば、利用可能な隣接する初期化された動きベクトルの平均が使用され得る。
【００７４】
１１０２において第１の処理レベルの動きフィールドを初期化する一例では、参照フレーム２は、参照フレーム１の画素を予測するために用いられ、参照フレーム１は、現在のフレームが符号化される前の最終フレームである。図９に示すものと同様の方法で線形投影を使用して現在のフレームに投影されたその動きベクトルは、画素位置９０２の動きフィールド９０６のように、交差する画素位置において動きフィールドｍｖｃｕｒとなる。
【００７５】
図１１は、プロセス１１００には複数の処理レベルが存在することが望ましいため、動きフィールドを第１の処理レベルに初期化することを示す。これは、図１１のプロセス１１００（および以下で説明される図１２のプロセス１２００）を示す図である図１３を参照することによって理解される。以下の説明では、動きフィールドという用語が使用される。この用語は、文脈から明らかでない限り、各画素の動きフィールドを集合的に参照することを意図している。したがって、「複数の動きフィールド」および「動きフィールド」という用語は、複数の動きフィールドを指す場合に交換可能に使用されてもよい。さらに、オプティカルフローという用語は、複数の画素の動きを指すときに動きフィールドという用語と交換可能に使用されてもよい。
【００７６】
フレームの複数の画素の動きフィールド／オプティカルフローを推定するには、ピラミッド（pyramid）または多層構造が使用されてもよい。たとえば、特定のピラミッド構造では、参照フレームは、１つまたは複数の異なるスケールに縮小される。次に、オプティカルフローを最初に推定して、ピラミッドの最高レベル（第１の処理レベル）で、つまり、最大でスケーリングされた（scaled）参照フレームを使用して、動きフィールドを取得する。その後、動きフィールドはアップスケーリングされ、次のレベルでオプティカルフロー推定を初期化するために使用される。動きフィールドをアップスケーリングし、それを使用して次のレベルのオプティカルフロー推定を初期化し、かつ動きフィールドを取得するこのプロセスは、ピラミッドの最低レベルに到達するまで（つまり、参照フレーム部分のオプティカルフロー推定をフルスケールで完了するまで）継続する。
【００７７】
このプロセスのため、画像がダウンスケーリングされたときに大きな動きを簡単に取得することができる。ただし、参照フレーム自体のスケーリングに単純な再スケーリングフィルタ（rescale filter）を使用すると、参照フレームの品質が低下する可能性がある。再スケーリングによって詳細な情報の損失を防止するために、複数の参照フレームの画素の代わりに複数の微分係数をスケーリングしてオプティカルフローを推定するピラミッド構造がある。このピラミッドスキームは、オプティカルフロー推定の回帰分析を表す。このスキームは、図１３に示され、図１１のプロセス１１００および図１２のプロセス１２００によって実施される。
【００７８】
初期化後、ラグランジュパラメータλが、ラグランジュ関数（１）を解くために１１０４において設定される。望ましくは、プロセス１１００は、ラグランジュパラメータλに複数の値を用いる。ラグランジュパラメータλが１１０４において設定された第１の値は、１００などの比較的大きな値であり得る。プロセス１１００がラグランジュ関数（１）のラグランジュパラメータλに複数の値を使用することが望ましいが、以下に説明するプロセス１２００で説明されるように特定の値のみが使用される可能性がある。
【００７９】
１１０６において、現在の処理レベルの動きフィールドに従って、参照フレームが現在のフレームにワーピングされる。現在のフレームを参照フレームにワーピングすることは、サブ画素位置の丸め処理（rounding）を使用して実行され得る。第１の処理レベルで使用される動きフィールドｍｖｃｕｒは、ワーピングを実行する前に、その最大解像度値から第１の処理レベルの解像度にダウンスケーリングされることに留意されたい。動きフィールドのダウンスケーリングは、以下で詳しく説明される。
【００８０】
オプティカルフローｍｖｃｕｒを認識している場合、参照フレーム１をワーピングする動きフィールドは、
【００８１】
【数７】
0006905093.tif 000008
のように線形投影仮定（たとえば、動きが時間とともに線形に投影されるという仮定）によって推定される。
【００８２】
ワーピングを実行するために、動きフィールドｍｖｒ１の水平成分ｕｒ１と垂直成分ｕｒ１には、Ｙ成分の場合では１／８画素の精度に、ＵおよびＶ成分の場合は１／１６画素の精度に丸め処理が実行され得る。サブ画素位置の丸め処理には他の値が使用されてもよい。丸め処理後、ワーピング画像Ｅｗａｒｐｅｄ（ｒ１）の各画素は、動きベクトルｍｖｒ１によって付与される参照画素として計算される。サブ画素補間は、従来のサブ画素補間フィルタを使用して実行され得る。
【００８３】
参照フレーム２に対しても同じワーピングアプローチが実行されてワーピング画像Ｅｗａｒｐｅｄ（ｒ２）を取得し、動きフィールドは、
【００８４】
【数８】
0006905093.tif 000009
によって計算される。
【００８５】
１１０６での計算が終了すると、２つのワーピングされた参照フレームが存在する。２つのワーピングされた参照フレームは、１１０８においてそれらの間の動きフィールドを推定するために使用される。１１０８での動きフィールドの推定は、複数のステップを含み得る。
【００８６】
まず、微分係数Ｅｘ，Ｅｙ，Ｅｔは、関数（３）、（４）、および（５）を使用して計算される。微分係数を計算するとき、ワーピングされた参照フレームの複数のフレーム境界（frame boundaries）は、最も近い利用可能な画素をコピーすることによって拡張され得る。このようにして、複数の投影位置が、ワーピングされた参照フレームの外側にあるときに、複数の画素値（つまり、Ｅ（ｒ１）および／またはＥ（ｒ２）が取得され得る。次に、複数のレイヤーがある場合、複数の微分係数は、現在のレベルにダウンスケーリングされる。図１３に示すように、複数の参照フレームは、元のスケールで微分係数を計算して詳細を取得するために使用される。各レベル「ｌ」での微分係数のダウンスケーリングは、２ｌｘ２ｌブロック内で平均化することで計算され得る。注意すべきことであるが、微分係数の計算およびそれらの平均化によるダウンスケーリングは両方とも線形演算であるため、２つの演算は、単一の線形フィルタに結合されて各レベル「ｌ」で微分係数を計算し得る。これにより、計算の複雑さが軽減される。
【００８７】
複数の微分係数が現在の処理レベルにダウンスケーリングされると、必要に応じて、ラグランジュ関数（１）に従ってオプティカルフロー推定が実行され得る。より具体的には、動きフィールドの水平成分ｕおよび動きフィールドの垂直成分ｖに対するラグランジュ関数（１）の複数の微分係数を「０」（すなわち、∂J/∂u=0 and ∂J/∂v=0）に設定することによって、２×Ｎ個の線形方程式を有するフレームの全Ｎ個の画素について、成分ｕおよびｖを解くことができる。このことは、複数のラプラシアンが２次元（２Ｄ）フィルタによって近似されるという事実に起因する。正確ではあるが非常に複雑な複数の線形方程式を直接解く代わりに、反復アプローチを使用して、ラグランジュ関数（１）を最小化して、より高速で精度の低い結果を得てもよい。
【００８８】
１１０８において、現在のフレームの複数の画素の動きフィールドは、ワーピングされた複数の参照フレーム間の推定動きフィールドを使用して更新または再調整される。例えば、画素の現在の動きフィールドは、画素の推定動きフィールドを画素ごとに追加することによって更新され得る。
【００８９】
１１０８において動きフィールドが推定されると、１１１０において、利用可能なラグランジュパラメータλに追加の値があるかどうかを判定するためにクエリ（query）が実行される。ラグランジュパラメータλの値を小さくすると、より小さいスケールの動きに対応することができる。追加の値がある場合、プロセス１１００は１１０４に戻って、ラグランジュパラメータλの次の値を設定し得る。たとえば、プロセス１１００は、反復するごとにラグランジュパラメータλを半分に下げながら繰り返すことができる。１１０８において更新された動きフィールドは、この次の反復の１１０６において参照フレームをワーピングする現在の動きフィールドである。次に、１１０８において動きフィールドが再び推定される。１１０４、１１０６、および１１０８での処理は、１１１０において可能なすべてのラグランジュパラメータが処理されるまで継続される。一例では、図１３に示すように、ピラミッドには３つのレベルがあり、したがって、ラグランジュパラメータλの最小値は「２５」である。ラグランジュパラメータを変更しながらこの処理を繰り返すことを、ラグランジュパラメータのアニーリング（annealing）と呼称され得る。
【００９０】
１１１０においてラグランジュパラメータλの残りの値がなくなると、プロセス１１００は１１１２に進んで、処理する処理レベルがさらにあるかどうかを判定する。１１１２において追加の処理レベルがある場合、プロセス１１００は１１１４に進んで、１１０４から開始するラグランジュパラメータλの利用可能な複数の値のそれぞれを使用して、次のレイヤーを処理する前に動きフィールドがアップスケーリングされる（up-scaled）。動きフィールドのアップスケーリングは、前述のダウンスケーリングの計算の逆を含むがこれに限定されない任意の既知の技術を使用して実行されてもよい。
【００９１】
概して、オプティカルフローは、ピラミッドの最高レベルで動きフィールドを取得するために最初に推定される。その後、動きフィールドはアップスケーリングされ、次のレベルでオプティカルフロー推定を初期化するために使用される。動きフィールドをアップスケーリングし、それを使用して次のレベルのオプティカルフロー推定を初期化し、かつ動きフィールドを取得するこのプロセスは、１１１２においてピラミッドの最低レベルに到達するまで（つまり、フルスケールで計算された複数の微分係数のオプティカルフロー推定を完了するまで）継続する。
【００９２】
そのレベルが参照フレームがダウンスケーリングレベルにある（つまり、元の解像度にある）と、プロセス１１００は１１１６に進む。例えば、レベルの数は、図１３の例のように「３」であり得る。１１１６において、ワーピングされた複数の参照フレームはブレンディングされて（blended）オプティカルフロー参照フレームＥ（ｃｕｒ）を形成する。１１１６においてブレンディングされた複数のワーピングされた参照フレームは、１１０８で推定された動きフィールドを使用して１１０６で説明されたプロセスに従って再びワーピングされるフルスケールの複数の参照フレームであり得ることに留意されたい。換言すると、フルスケールの複数の参照フレームは、前の処理レイヤーからの最初のアップスケーリングされた動きフィールドを使用して、動きフィールドがフルスケールレベルで再調整された後に、１，２回（twice - once）ワーピングされ得る。ブレンディング（blending）は、
【００９３】
【数９】
0006905093.tif 000010
のように時間線形性仮定（たとえば、複数のフレームが等しい時間間隔で配置されているという仮定）を使用して実行され得る。
【００９４】
幾つかの実施形態では、ブレンディングされた値ではなく、複数のワーピングされた参照フレームのうちの１つのみの画素を優先することが望ましい場合がある。たとえば、（ｍｖｒ１で表される）参照フレーム１の参照画素が境界（bound）の外側（たとえば、フレームの寸法の外側）にあり、参照フレーム２の参照画素がそうでない場合、参照フレーム２から取得されたワーピングされた画像の画素のみが、
【００９５】
【数１０】
0006905093.tif 000011
に従って使用される。
【００９６】
ブレンディングの一部として、任意のオクルージョン検出（occlusion detection）が実行され得る。複数のオブジェクトおよび背景のオクルージョンは通常、ビデオシーケンスで生じ、ビデオシーケンスでは、オブジェクトの複数の部分が一方の参照フレームに現れ、他方の参照フレームでは隠れる。概して、上記のオプティカルフロー推定方法は、輝度不変仮定に違反しているため、この状況ではオブジェクトの動きを推定できない。オクルージョンのサイズが比較的小さい場合、平滑化ペナルティ関数（smoothness penalty function）は、動きを非常に正確に推定できる。つまり、隠れた部分の未定義の動きフィールドが隣接する複数の動きベクトルによって平滑化されると、オブジェクト全体の動きの精度が向上する。
【００９７】
ただし、この場合でも、上記の単純なブレンディング方法では満足な補間結果が得られない場合がある。このことは、オブジェクトのオクルージョンを示す図である図１４を参照することによって実証され得る。この例では、オブジェクトＡのオクルージョンされた部分が参照フレーム１において表され、参照フレーム２のオブジェクトＢによって隠されている。オブジェクトＡの隠れた部分は参照フレーム２において表されていないため、参照フレーム２からの参照される画素はオブジェクトＢからのものである。この場合、参照フレーム１からのワーピングされた画素のみを使用することが望ましい。したがって、上記のブレンディングの代わりに、またはそれに加えて、オクルージョンを検出する技術を使用すると、より良いブレンディング結果、つまり、より良い参照フレームが提供される。
【００９８】
オクルージョンの検出に関して、オクルージョンが生じ、動きフィールドが極めて正確である場合、オブジェクトＡのオクルージョン部分の動きベクトルが、参照フレーム２のオブジェクトＢを指すことが図１４から分かる。これにより、以下の複数の状況が生じる可能性がある。第１の状況では、ワーピングされた画素値Ｅｗａｒｐｅｄ（ｒ１），Ｅｗａｒｐｅｄ（ｒ２）が、２つの異なるオブジェクトからのものであるために極めて異なる。第２の状況では、オブジェクトＢの複数の画素が、現在のフレーム内のオブジェクトＢと、現在のフレームのオブジェクトＡのオクルージョンされた（occluded）部分とに対する複数の動きベクトルによって参照される。
【００９９】
これらの考察により、複数の条件
【０１００】
【数１１】
0006905093.tif 000012
は、ＥｃｕｒのＥｗａｒｐｅｄ（ｒ１）のみのオクルージョンおよび使用を決定するために設定され、ここでは、同様の条件がＥｃｕｒのＥｗａｒｐｅｄ（ｒ２）のみの使用に適用される。
【０１０１】
Ｎｒｅｆ（ｒ２）は、参照フレーム１の参照画素が現在の並置フレームの画素によって参照される合計回数である。上述のサブ画素補間の存在を仮定すると、Ｎｒｅｆ（ｒ２）は、参照サブ画素位置が注目される画素位置の特定の画素の長さ内にある場合にカウントされる。また、ｍｖｒ２がサブ画素位置を指している場合、隣接する４つの画素のＮｒｅｆ（ｒ２）の加重平均が、現在のサブ画素位置の参照の総数として表される。Ｎｒｅｆ（ｒ１）も同様に定義され得る。
【０１０２】
したがって、第１のワーピングされた参照フレームおよび第２のワーピングされた参照フレームを使用して、オクルージョンが第１の参照フレームにおいて検出され得る。そして、ワーピングされた参照フレームのブレンディングは、オクルージョンに対応するオプティカルフローの参照フレームの複数の画素位置に第２のワーピングされた参照フレームからの複数の画素値を提供すること（populating）を含み得る。同様に、第１のワーピングされた参照フレームおよび第２のワーピングされた参照フレームを使用して、オクルージョンが第２の参照フレームにおいて検出され得る。そして、ワーピングされた参照フレームのブレンディングは、オクルージョンに対応するオプティカルフロー参照フレームの複数の画素位置に第１のワーピングされた参照フレームからの複数の画素値を提供することを含み得る。
【０１０３】
プロセス１１００が実質的な圧縮性能の向上を提供することが実験的に示されている。これらの性能の向上は、低解像度のフレームセットではＰＳＮＲで２．５％、ＳＳＩＭで３．３％、中解像度のフレームセットではＰＳＮＲで３．１％、ＳＳＩＭで４．０％の向上を含む。しかしながら、上述したように、ラグランジュ関数（１）により実行されるオプティカルフロー推定によって、２×Ｎの線形方程式を用いて、フレームの全Ｎ個の画素について動きフィールドの水平成分ｕ及び垂直成分ｖが取得される。換言すれば、オプティカルフロー推定の計算の複雑さはフレームサイズの多項式関数であり、これは復号化器の複雑さに負担を課す。従って、次に、図１１に関して説明したフレームに基づくオプティカルフロー推定よりも復号化器の複雑さを低減できる、サブフレームに基づく（例えば、ブロックに基づく）オプティカルフロー推定について説明する。
【０１０４】
図１２は、オプティカルフロー参照フレーム部分を生成する方法またはプロセス１２００のフローチャート図である。この例では、オプティカルフロー参照フレーム部分は、参照フレーム全体よりも小さい。この例では、複数の並置フレーム部分は、ブロックを参照して説明されるが、他のフレーム部分は図１２に従って処理してもよい。プロセス１２００は、プロセス１０００のステップ１００６を実施することができる。プロセス１２００は、例えば、送信局１０２または受信局１０６などのコンピューティングデバイスによって実行されるソフトウェアプログラムとして実施することができる。例えば、ソフトウェアプログラムは、メモリ２０４または２次ストレージ２１４などのメモリに格納され、ＣＰＵ２０２のようなプロセッサによる実行時に、コンピューティングデバイスにプロセス１２００を実行させる機械可読命令を含むことができる。プロセス１２００は、特殊なハードウェアまたはファームウェアを使用して具体化され得る。上述したように、複数のプロセッサ、複数のメモリ、またはその両方が使用され得る。
【０１０５】
１２０２において、現在のフレーム内のすべての画素は、初期化された動きベクトルに割り当てられる。これらは、第１の処理レベルのために複数の参照フレームを現在のフレームにワーピングして複数の参照フレーム間の動きの長さを短縮するために利用できる複数の初期動きフィールドを定義する。なお、１２０２における初期化は、１１０２における初期化と同様の処理で行うことができるので、ここでは説明を省略する。
【０１０６】
１２０４において、１２０２において初期化された動きフィールドに従って、参照フレーム１，２等の参照フレームが現在のフレームにワーピングされる。１２０４におけるワーピングは、１１０６におけるワーピングに関して説明したのと同じ処理を使用して実行できるが、望ましくは、１２０２で初期化された動きフィールドｍｖｃｕｒが、複数の参照フレームをワーピングする前にその最大解像度値からダウンスケールされない。
【０１０７】
１２０４での計算が終了すると、２つのワーピングされた参照フレームが最大解像度で存在する。プロセス１１００と同様に、プロセス１２００は、図１３に関して説明したのと同様の複数のレベルプロセスを使用して、２つの参照フレーム間の動きフィールドを推定することができる。概略的に述べると、プロセス１２００は、あるレベルに対する複数の微分係数を計算し、複数の微分係数を使用してオプティカルフロー推定を実行し、すべてのレベルが考慮されるまで、結果として得られる動きフィールドを次のレベルに対してアップスケーリングする。
【０１０８】
より具体的には、現在の（または第１の）処理レベルでのブロックの動きフィールドｍｖｃｕｒは１２０６において初期化される。ブロックは、現在のフレームのスキャン順序（例えば、ラスタスキャン順序）で選択された現在のフレームのブロックであり得る。ブロックの動きフィールドｍｖｃｕｒは、ブロックの各画素の動きフィールドを含む。言い換えると、１２０６において、現在のブロックを有するすべての画素には、初期化された動きベクトルが割り当てられる。初期化された複数の動きベクトルを使用して、複数の参照ブロックを現在のブロックにワーピングして、複数の参照フレームの複数の参照ブロック間の長さを短くする。
【０１０９】
１２０６において、動きフィールドｍｖｃｕｒは、自身の最大解像度値からそのレベルの解像度にダウンスケーリングされる。換言すれば、１２０６での初期化は、１２０２で初期化された最大解像度値から、ブロックの各画素の動きフィールドをダウンスケーリングすることを含み得る。ダウンスケーリングは、上記したダウンスケーリングなどの任意の技術を使用して実行され得る。
【０１１０】
１２０８において、各ワーピングされた参照フレームの動きフィールドに対応する複数の並置参照ブロックは、現在のブロックに対してワーピングされる。参照ブロックのワーピングは、１１０６におけるプロセス１１００と同様に実行される。参照フレーム１の参照ブロックの複数の画素のオプティカルフローｍｖｃｕｒを認識している場合、ワーピングする動きフィールドは、
【０１１１】
【数１２】
0006905093.tif 000013
のように線形投影仮定（たとえば、動きが時間とともに線形に投影されるという仮定）によって推定される。
【０１１２】
ワーピングを実行するために、動きフィールドｍｖｒ１の水平成分ｕｒ１と垂直成分ｕｒ１には、Ｙ成分の場合では１／８画素の精度に、ＵおよびＶ成分の場合は１／１６画素の精度に丸め処理が実行され得る。他の値が使用されてもよい。丸め処理後、ワーピングされたブロック、例えば、Ｅｗａｒｐｅｄ（ｒ１）の各画素は、動きベクトルｍｖｒ１によって付与される参照画素として計算される。サブ画素補間は、従来のサブ画素補間フィルタを使用して実行されてもよい。
【０１１３】
参照フレーム２の参照ブロックに対しても同じワーピングアプローチが実行されてワーピングされたブロックＥｗａｒｐｅｄ（ｒ２）を取得し、動きフィールドは、
【０１１４】
【数１３】
0006905093.tif 000014
によって計算される。
【０１１５】
１２０８での計算が終了すると、２つのワーピングされた参照ブロックが存在する。２つのワーピングされた参照ブロックを使用して、１２１０においてそれらの間の動きフィールドを推定する。１２１０における処理は、図１１における１１０８における処理に関して説明したものと同様であり得る。
【０１１６】
より具体的には、２つのワーピングされた参照ブロックは、最大解像度であり得る。図１３のピラミッド構造によれば、関数（３）、（４）、（５）を用いて微分係数Ｅｘ，Ｅｙ，Ｅｔが算出される。フレームレベル推定のための複数の微分係数を計算する場合、複数のフレーム境界は、プロセス１１００に関して説明したように、境界の外側の複数の画素値を取得するために最も近い利用可能な画素をコピーすることによって拡張され得る。ただし、他の複数のフレーム部分については、１２０４においてワーピングされた複数の参照フレームにおいて隣接する複数の画素はしばしば利用可能である。たとえば、ブロックに基づく推定では、ブロック自体がフレーム境界にない限り、隣接する複数のブロックの複数の画素は、複数のワーピングされた参照フレームにおいて利用できる。従って、ワーピングされた参照フレーム部分に対する境界の外側の複数の画素については、該当する場合には、ワーピングされた参照フレームの隣接する複数の部分の複数の画素は、画素値Ｅ（ｒ１），Ｅ（ｒ２）として使用され得る。複数の投影された画素がフレーム境界の外側にある場合、最も近い利用可能な（つまり、境界内の）画素がコピーされてもよい。複数の微分係数が計算された後、それらは現在のレベルにダウンスケーリングされてもよい。前述のように、各レベル「ｌ」のダウンスケーリングされた複数の微分係数は、２ｌｘ２ｌブロック内で平均化することによって計算され得る。計算の複雑さは、単一の線形フィルタで複数の微分係数を計算および平均化する２つの線形操作（linear operation）を組み合わせることによって軽減されるが、これは必須ではない。
【０１１７】
１２１０の処理を続けると、ダウンスケーリングされた複数の微分係数は、ラグランジュ関数（１）への入力として使用されて、オプティカルフロー推定を実行し、ワーピングされた複数の参照部分間の動きフィールドを推定できる。一部分、ここではブロックの全Ｎ画素の動きフィールドの水平成分ｕおよび垂直成分ｖは、水平成分ｕおよび垂直成分ｖに対するラグランジュ関数（１）の複数の微分係数を「０」（すなわち、∂J/∂u=0および∂J/∂v=0）に設定し、２×Ｎの線形方程式を解くことによって求められる。このため、境界の外側の複数の動きベクトルを処理する２つの任意選択的な方法がある。特定の方法では、隣接する複数のブロックとの相関が「０」であると仮定し、境界の外側の動きベクトルが、境界の外側の画素位置に最も近い境界位置における動きベクトルと同じであると仮定する。別の方法では、現在の画素に対応する境界の外側の画素位置の動きベクトルとして、現在の画素の初期化された動きベクトル（すなわち、１２０６で初期化された動きフィールド）を使用する。
【０１１８】
動きフィールドが推定された後、そのレベルの現在の動きフィールドは、１２１０での処理を完了するために、複数のワーピングされた参照ブロック間の推定動きフィールドを使用して更新または再調整される。例えば、画素の現在の動きフィールドは、画素の推定動きフィールドを画素ごとに追加することによって更新され得る。
【０１１９】
プロセス１１００では、ラグランジュパラメータλの減少した値を設定するための追加のループが含まれ、各レベルで、ラグランジュパラメータλの順次小さくなる値を使用して動きフィールドが推定および再調整される。プロセス１２００では、このループは省略される。すなわち、示されているプロセス１２００では、現在の処理レベルで動きフィールドを推定するためにラグランジュパラメータλの１つの値のみが使用される。この値は、「２５」などの比較的小さな値にすることができる。たとえば、動きの滑らかさ、画像の解像度、または他の変数に応じて、ラグランジュパラメータλの他の値が可能である。
【０１２０】
他の実施形態では、プロセス１２００は、ラグランジュパラメータλを変化させるための追加のループを含み得る。このようなループが含まれる実施形態では、ラグランジュパラメータλは、１２０８で複数の参照ブロックをワーピングさせ、１２１０で動きフィールドを推定および更新することが、プロセス１１００における１１０４，１１１０での処理に関して説明したようにラグランジュパラメータλのすべての値が使用されるまで繰り返されるように、１２１０において動きフィールドを推定する前に設定され得る。
【０１２１】
プロセス１２００は、１２１０において動きフィールドを推定および更新した後、１２１２のクエリに進む。これは、ラグランジュパラメータλの単一の値が使用される場合、１２１０におけるレベルでの最初で唯一の動きフィールド推定および更新の後に行われる。ラグランジュパラメータλの複数の値が処理レベルで変更される場合、プロセス１２００は、ラグランジュパラメータλの最後の値を使用して１２１０において動きフィールドを推定および更新した後に、１２１２のクエリに進む。
【０１２２】
１２１２におけるクエリに応答した追加の複数の処理レベルがある場合、プロセス１２００は１２１４に進んで、１２０６から開始する次のレイヤーを処理する前に動きフィールドがアップスケーリングされる。アップスケーリングは、任意の既知の技術に従って実行され得る。
【０１２３】
概して、オプティカルフローは、ピラミッドの最高レベルで動きフィールドを取得するために最初に推定される。その後、動きフィールドはアップスケーリングされ、次のレベルでオプティカルフロー推定を初期化するために使用される。動きフィールドをアップスケーリングし、それを使用して次のレベルのオプティカルフロー推定を初期化し、かつ動きフィールドを取得するこのプロセスは、１２１２においてピラミッドの最低レベルに到達するまで（つまり、フルスケールで計算された複数の微分係数のオプティカルフロー推定を完了するまで）継続する。
【０１２４】
そのレベルが複数の参照フレームがダウンスケーリングされるレベルにある（つまり、元の解像度にある）と、プロセス１２００は１２１６に進む。例えば、レベルの数は、図１３の例のように「３」であり得る。１２１６において、複数のワーピングされた参照ブロックがブレンディングされて、オプティカルフロー参照ブロック（例えば、前述されたＥ（ｃｕｒ））を形成する。１２１６においてブレンディングされた複数のワーピングされた参照ブロックは、１２０８で推定された動きフィールドを使用して１２０８で説明されたプロセスに従って再びワーピングされる複数のフルスケールの参照ブロックであり得ることに留意されたい。換言すると、複数のフルスケールの参照ブロックは、前の処理レイヤーからの最初のアップスケーリングされた動きフィールドを使用して、動きフィールドがフルスケールレベルで再調整された後に、１，２回ワーピングされ得る。ブレンディングは、１１１６において説明された処理と同様に、時間線形性仮定を使用して実行され得る。１１１６において説明され、図１４において例として示される任意選択的なオクルージョン検出は、１２１６でのブレンディングの一部として組み込まれる。
【０１２５】
１２１６において、複数の並置参照ブロックが生成された後、プロセス１２００は１２１８に進んで、予測のためにさらに（複数のブロックの）複数のフレーム部分があるかどうかを判定する。複数のフレーム部分がある場合、プロセス１２００は、次のブロックについて１２０６から繰り返される。複数のブロックはスキャン順序に処理され得る。１２１８でのクエリに応答して考慮するさらなるブロックがなくなると、プロセス１２００は終了する。
【０１２６】
再び図１０を参照すると、プロセス１２００は、プロセス１０００において１００６を実施することができる。１００６での処理が終了すると、プロセス１１００、プロセス１２００、または本明細書に記載されるような変形のいずれによって実行されても、１つまたは複数のワーピングされた参照フレーム部分が存在する。
【０１２７】
１００８において、１００６において生成されたオプティカルフローの参照フレーム部分を使用して予測プロセスが実行される。復号化器で予測プロセスを実行することには、フレームの現在のブロックに対するオプティカルフロー参照フレームから予測ブロックを生成することを含み得る。オプティカルフロー参照フレームは、プロセス１１００によって出力され、参照フレームバッファ６００などの参照フレームバッファに格納されるオプティカルフロー参照フレームであり得る。オプティカルフロー参照フレームは、プロセス１２００により出力される複数のオプティカルフロー参照部分を組み合わせることによって生成されるオプティカルフロー参照フレームであり得る。また、複数のオプティカルフロー参照部分を組み合わせることは、複数のオプティカルフロー参照部分の各々の生成に用いる対応する現在のフレーム部分の複数の画素位置に応じて複数のオプティカルフロー参照部分（例えば、複数の並置参照ブロック）を配置することを含み得る。結果として得られるオプティカルフロー参照フレームは、符号化器４００の参照フレームバッファ６００などの符号化器の参照フレームバッファで使用するために格納され得る。
【０１２８】
符号化器で予測ブロックを生成することは、オプティカルフロー参照フレームの並置ブロックを予測ブロックとして選択することを含み得る。符号化器で予測ブロックを生成することは、代替的には、オプティカルフロー参照フレーム内で動き検索を実行して現在のブロックに最適な予測ブロックを選択することを含み得る。しかし、予測ブロックは符号化器で生成され、結果として得られる残差は、図４の符号化器４００に関して説明された非可逆符号化処理（lossy encoding process）を使用するなどして、さらに処理され得る。
【０１２９】
符号化器において、プロセス１０００は、現在のフレームに利用可能な複数の予測フレームを使用して、１つまたは複数のイントラ予測モードおよび単一および複合のインター予測モードの両方を含む、様々な予測モードを使用する現在のブロックに対するレート歪みループ（rate distortion loop）の一部分を形成し得る。単一のインター予測モードは、インター予測に対して単一の前方または後方参照フレームのみを使用する。複合のインター予測モードは、インター予測に対して前方参照フレームと後方参照フレームの両方を使用する。レート歪みループでは、各予測モードを使用して現在のブロックを符号化するために使用されるレート（例えば、ビット数）が、符号化から得られる歪み（distortion）と比較される。歪みは、符号化前と復号化後のブロックの画素の差として計算され得る。差は、絶対差の合計、またはフレームのブロックについて累積された誤差を取得する幾つかの他の測定値であり得る。
【０１３０】
いくつかの実施形態では、オプティカルフロー参照フレームの使用を単一のインター予測モードに制限することが望ましい場合がある。すなわち、オプティカルフローの参照フレームは、任意の複合の参照モードの参照フレームとして除外されてもよい。このことは、レート歪みループを単純化することができ、オプティカルフロー参照フレームが既に前方参照フレームと後方参照フレームの両方を考慮しているので、ブロックの符号化に対する付加的な影響はほとんど予想されない。本明細書で説明する実施形態によれば、現在のフレームを符号化する際にオプティカルフロー参照フレームを使用できるかどうかを示すために、フラグをビットストリームに符号化されてもよい。一例では、オプティカルフロー参照フレームブロックを使用して、現在のフレームの任意の単一ブロックが符号化されるときに、フラグが符号化されてもよい。オプティカルフロー参照フレームが現在のフレームで利用できる場合、オプティカルフロー参照フレームを使用したインター予測によって現在のブロックが符号化されたかどうかを示す追加のフラグまたは他のインジケータ（ブロックレベルなど）を含めることができる。
【０１３１】
１００８での予測プロセスは、現在のフレームが符号化されるまで、現在のフレームのすべてのブロックに対して繰り返されてもよい。
復号化器において、１００８でオプティカルフロー参照フレーム部分を使用して予測プロセスを実行することは、オプティカルフロー参照フレームが現在のフレームを復号化するために利用可能であるという判定に起因する。いくつかの実施形態では、現在のフレームの少なくとも１つのブロックがオプティカルフロー参照フレーム部分を使用して符号化されたことを示すフラグを検査することによって判定が行われる。復号化器で１００８において予測プロセスを実行することは、予測ブロックを生成することを含み得る。予測ブロックを生成することは、ブロックヘッダーなど、符号化されたビットストリームから復号化されたインター予測モードを使用することを含み得る。フラグまたはインジケータは、インター予測モードを決定するために復号化され得る。インター予測モードがオプティカルフロー参照フレームモードである（すなわち、ブロックが、オプティカルフロー参照フレーム部分を用いてインター予測された）場合、復号化されるべき現在のブロックの予測ブロックは、オプティカルフロー参照フレーム部分の複数の画素と、動きベクトルモードおよび／または動きベクトルを用いて生成される。
【０１３２】
復号化の一部として予測プロセスで使用するためにオプティカルフロー参照フレームを生成する同じ処理は、復号化器で実行されたように、復号化器５００などの復号化器で実行され得る。例えば、フラグが現在のフレームの少なくとも１つのブロックがオプティカルフロー参照フレーム部分を用いて符号化されたことを示す場合、オプティカルフロー参照フレーム全体が生成され、予測プロセスで使用するために格納され得る。しかしながら、複数のコーディングブロックがインター予測の参照フレームとして並置される／複数のオプティカルフローの参照フレームを使用するものとして識別されるプロセス１２００の性能を制限するようにプロセス１２００を修正することによって、復号化器での計算能力がさらに節約される。このことは、復号化器を最適化するための特定の技術を示す図１５を参照することによって説明される。
【０１３３】
図１５では、グリッド１５００に従って複数の画素が示されており、ｗはグリッド１５００の第１の軸に沿った画素位置を示し、ｙはグリッド１５００の第２の軸に沿った画素位置を示している。グリッド１５００は、現在のフレームの一部分の複数の画素位置を示す。１００８において復号化器で予測プロセスを実行するために、１００６，１００８での処理を組み合わせることができる。例えば、１００６のプロセスを実行する前に、１００８の予測プロセスは、（例えば、動きベクトルのようなヘッダ情報から）現在のブロックを符号化するために使用される参照ブロックを検出することを含み得る。図１５では、現在のコーディングブロック１５０２の動きベクトルは、内側の破線１５０４によって示される参照ブロックを指す。現在のコーディングブロック１５０２は、４×４の画素を含む。参照ブロックは現在のフレームではなく参照フレームにあるため、参照ブロックの位置は、破線１５０４で示されている。
【０１３４】
参照ブロックが位置付けられると、参照ブロックにわたる（つまり、オーバーラップする）すべての参照ブロックが識別される。このことは、複数のサブ画素補間フィルタを考慮するために、各境界でのフィルタ長の半分だけ参照ブロックサイズを拡張することを含み得る。図１５では、サブ画素補間フィルタ長Ｌは、外側の破線１５０６によって示される複数の境界まで参照ブロックを拡張するために使用される。比較的一般的であるように、動きベクトルは、複数のフル画素位置（full-pel locations）と完全には整列しない参照ブロックとなる。図１５の暗くなっている領域は、複数のフル画素位置を示す。フル画素位置と重複するすべての参照ブロックが識別される。ブロックサイズが現在のコーディングブロック１５０２と同じであると仮定すると、現在のブロックと並置された第１の参照ブロックと、第１の参照ブロックの上にある第２の参照ブロックと、第１の参照ブロックの左から延びる２つの参照ブロックと、第２の参照ブロックの左から延びる２つの参照ブロックとが識別される。
【０１３５】
参照ブロックが識別されると、プロセス１２００は、１００６において、識別された参照ブロックと並置された現在のフレーム内の複数のブロックについてのみ実行されて、並置された／オプティカルフローの推定された複数の参照ブロックを生成する。図１５の例では、結果として、６つのオプティカルフロー参照フレーム部分が得られる。
【０１３６】
この修正されたプロセスによれば、符号化器と復号化器が同じ予測子を有することが保証され、復号化器は、同じ位置に配置された参照フレームの全体を計算する必要がない。任意の拡張された複数の境界を含む後続のブロックの１つまたは複数の参照ブロックは、現在のブロックの復号化プロセスで識別された１つまたは複数の参照ブロックと重複する可能性があることは注目に値する。この場合、オプティカルフロー推定は、復号化器における複数の計算要件をさらに低減するために、識別された複数のブロックのいずれかに対して１回だけ実行される必要がある。換言すると、１２１６において生成された参照ブロックは、現在のフレームの他のブロックを復号化する際に使用するために格納されてもよい。
【０１３７】
しかし、複数の予測ブロックは復号化器で生成されるが、符号化されたビットストリームからの現在のブロックのための復号化された残差は、図５の復号化器５００に関して例として説明されるように、再構成されたブロックを形成するために予測ブロックと組み合わせることができる。
【０１３８】
１００８における予測プロセスは、プロセス１２００の後に行われるか、またはプロセス１２００と併せて行われるかにかかわらず、現在のフレームが復号化されるまで、オプティカルフロー参照フレーム部分を用いて符号化された現在のフレームのすべてのブロックについて反復され得る。ブロックを復号順序で処理する際に、オプティカルフロー参照フレーム部分を用いて符号化されていないブロックは、従来、符号化されたビットストリームからそのブロックについて復号された予測モードに従って復号化され得る。
【０１３９】
フレームまたはブロック内のＮ個の画素について、オプティカルフローの計算式を解く複雑さは、Ｏ（Ｎ＊Ｍ）によって表され、ここで、Ｍは、線形方程式を解くための反復数である。Ｍは、レベルの数またはラグランジュパラメータλの値の数とは関係ない。代わりに、Ｍは線形方程式を解く際の計算精度に関連している。Ｍの値を大きくすると、精度が向上する。この複雑さを前提として、フレームレベルからサブフレームレベル（例えば、ブロックに基づく）推定への移行は、復号器の複雑さを低減するためのいくつかの任意選択を提供する。第１に、動きフィールドの平滑性の制約がブロックの複数の境界で緩和されるため、ブロックの線形方程式を解くときに解に収束しやすくなり、同様の精度でより小さいＭが得られる。第２に、動きベクトルに対する解法は、平滑度ペナルティ係数のためにその隣接する複数の動きベクトルを含む。ブロックの複数の境界の動きベクトルは、隣接するより少ない動きベクトルを有して、計算が高速になる。第３に、上述したように、オプティカルフローは、インター予測のために、並置参照フレームを使用してこれらの符号化ブロックによって識別される並置参照フレームの複数のブロックの一部分についてのみ計算される必要があり、フレーム全体については計算する必要がない。
【０１４０】
説明を簡単にするために、プロセス１０００，１１００，１２００の各々は、一連のステップまたは動作として示され説明されている。しかしながら、本開示による複数のステップまたは複数の動作は、様々な順序でおよび／または同時に進行することができる。加えて、本明細書で提示および説明されていない他の複数のステップまたは複数の動作が使用されてもよい。さらに、開示された主題に従って方法を実施するために、図示された全てのステップまたは動作が必要とされるわけではない。
【０１４１】
上述の符号化および復号化の態様は、符号化および復号化技術のいくつかの例を示す。しかしながら、符号化および復号化は、特許請求の範囲で使用されるそれらの用語として圧縮、圧縮解除、変換、または任意の他の処理またはデータの変更を意味し得ることを理解されたい。
【０１４２】
「例」という語は、本明細書では、例、事例、または実例としての役割を意味するものとして使用される。本明細書において「例」と記載された任意の態様または設計は、必ずしも他の態様または設計に対して好ましいまたは有利であるとして解釈されるべきではない。むしろ、「例」という言葉の使用は、具体的な方法で概念を提示することを意図している。本出願で使用される場合、用語「または」は、排他的な「または」ではなく、包括的な「または」を意味することが意図される。即ち、他に明記されていない限り、または文脈から明らかでない限り、「ＸはＡまたはＢを含む」とは、任意の自然な包含的置換（natural inclusive permutations）を意味することを意図する。即ち、「ＸはＡまたはＢを含む」は、以下の場合、ＸがＡを含む場合、ＸがＢを含む場合、またはＸがＡおよびＢの両方を含む場合のいずれにおいても満足される。さらに、本出願および添付の特許請求の範囲で使用される冠詞「ａ」および「ａｎ」は、他に明記されない限り、または単数形に向けられる文脈から明らかでない限り、「１つまたは複数」を意味すると一般に解釈されるべきである。さらに、「実施形態」または「一実施形態」という用語の使用は、そのように記載されない限り、同じ実施形態または実施を意味することを意図するものではない。
【０１４３】
送信局１０２および／または受信局１０６（ならびに、符号化器４００および復号化器５００が含む、それに記憶され、かつ／またはそれによって実行されるアルゴリズム、方法、命令など）の実施形態は、ハードウェア、ソフトウェア、またはそれらの任意の組み合わせにおいて実現することができる。ハードウェアは、例えば、コンピュータ、知的財産（ＩＰ）コア、特定用途向け集積回路（ASIC:application-specific integrated circuits）、プログラマブル論理アレイ、光プロセッサ、プログラマブル論理コントローラ、マイクロコード、マイクロコントローラ、サーバ、マイクロプロセッサ、デジタル信号プロセッサ、または他の適切な回路を含むことができる。特許請求の範囲において、「プロセッサ」という用語は、前述のハードウェアのいずれかを単独でまたは組み合わせて含むものとして理解されるべきである。用語「信号」および「データ」は互換的に使用される。さらに、送信局１０２および受信局１０６の一部は、必ずしも同じ方法で実施される必要はない。
【０１４４】
さらに、一態様では、例えば、送信局１０２または受信局１０６は、実行時に、本明細書に記載された個々の方法、アルゴリズム、および／または命令をのうちのいずれかを実行するコンピュータプログラムを備えた汎用コンピュータまたは汎用プロセッサを使用して実施することができる。加えて、または代替的に、例えば、本明細書に記載された方法、アルゴリズム、または命令のいずれかを実行するための他のハードウェアを含むことができる専用コンピュータ／プロセッサを利用することができる。
【０１４５】
送信局１０２および受信局１０６は、例えば、ビデオ会議システム内のコンピュータ上で実施することができる。あるいは、送信局１０２はサーバ上で実施することができ、受信局１０６はサーバとは別のハンドヘルド通信デバイスのようなデバイス上で実施することができる。この場合、送信局１０２は、符号化器４００を使用してコンテンツを符号化されたビデオ信号に符号化し、符号化されたビデオ信号を通信デバイスに送信することができる。通信デバイスは、復号化器５００を使用して符号化されたビデオ信号を復号化することができる。あるいは、通信デバイスは、通信デバイス上に局所的に格納されたコンテンツ、例えば、送信局１０２によって送信されなかったコンテンツを復号化することができる。他の適切な送信および受信の実施方式が利用可能である。例えば、受信局１０６は、ポータブル通信デバイスではなく、一般に固定のパーソナルコンピュータであってもよく、かつ／または符号化器４００を含むデバイスは、復号化器５００を含んでもよい。
【０１４６】
さらに、本開示の実施形態の全部または一部は、例えばコンピュータ使用可能またはコンピュータ可読媒体からアクセス可能なコンピュータプログラム製品の形態を取ることができる。コンピュータ使用可能またはコンピュータ可読媒体は、例えば、任意のプロセッサによって使用されるプログラムを有形に包含、格納、通信、または輸送することができる任意のデバイスであり得る。媒体は、例えば、電子、磁気、光学、電磁気、または半導体デバイスであり得る。他の適切な媒体も利用可能である。
【０１４７】
さらなる実施形態については、以下の複数の例において要約される。
例１：方法であって、ビデオシーケンス内にある予測されるべき第１のフレームを決定すること、前記第１のフレームの前方インター予測のために前記ビデオシーケンスから第１の参照フレームを決定すること、前記第１のフレームの後方インター予測のために前記ビデオシーケンスから第２の参照フレームを決定すること、前記第１の参照フレームおよび前記第２の参照フレームを用いてオプティカルフロー推定を実行することによって、前記第１のフレームのインター予測のためのオプティカルフロー参照フレームを生成すること、前記オプティカルフロー参照フレームを使用して、前記第１のフレームに対して予測プロセスを実行すること、を備える方法。
【０１４８】
例２：前記オプティカルフロー参照フレームを生成することは、前記第１のフレームの各画素についてラグランジュ関数を最小化することによってオプティカルフロー推定を実行すること、を含む例１に記載の方法。
【０１４９】
例３：前記オプティカルフロー推定は、前記第１のフレームの複数の画素の対応する動きフィールドを生成し、  前記オプティカルフロー参照フレームを生成することは、前記複数の動きフィールドを使用して前記第１の参照フレームを前記第１のフレームにワーピングして、第１のワーピングされた参照フレームを形成すること、前記複数の動きフィールドを使用して前記第２の参照フレームを前記第１のフレームにワーピングして、第２のワーピングされた参照フレームを形成すること、前記第１のワーピングされた参照フレームおよび前記第２のワーピングされた参照フレームをブレンディングして、前記オプティカルフロー参照フレームを形成すること、を含む、例１または２に記載の方法。
【０１５０】
例４：前記第１のワーピングされた参照フレームおよび前記第２のワーピングされた参照フレームをブレンディングすることは、前記第１の参照フレームと前記第２の参照フレームとの間の距離、並びに前記現在のフレームと前記第１の参照フレームおよび前記第２の参照フレームの各々との間の距離を使用して、並置された複数の画素の値をスケーリングすることによって、前記第１のワーピングされた参照フレームおよび前記第２のワーピングされた参照フレームの並置された複数の画素の値を組み合わせることを含む、例３に記載の方法。
【０１５１】
例５：前記第１のワーピングされた参照フレームおよび前記第２のワーピングされた参照フレームをブレンディングすることは、前記第１のワーピングされた参照フレームおよび前記第２のワーピングされた参照フレームの並置された複数の画素の値を組み合わせること、並びに前記第１のワーピングされた参照フレームおよび前記第２のワーピングされた参照フレームのうちの１つの単一画素の値を使用することの一方によって、前記オプティカルフロー参照フレームの複数の画素の位置を提供すること、を含む、例３または４に記載の方法。
【０１５２】
例６：前記第１のワーピングされた参照フレームおよび前記第２のワーピングされた参照フレームを用いて前記第１の参照フレーム内のオクルージョンを検出することをさらに備え、前記第１のワーピングされた参照フレームおよび前記第２のワーピングされた参照フレームをブレンディングすることは、前記オクルージョンに対応する前記オプティカルフロー参照フレームの画素位置に前記第２のワーピングされた参照フレームからの画素値を提供することを含む、例１〜６のいずれか１つに記載の方法。
【０１５３】
例７：前記予測プロセスを実行することは、前記第１のフレームの複数のブロックの単一参照インター予測だけのために前記オプティカルフロー参照フレームを使用することを含む、例１〜６のいずれか１つに記載の方法。
【０１５４】
例８：前記第１の参照フレームは、前記第１のフレームの前方インター予測に利用可能な前記第１のフレームに対する前記ビデオシーケンスの表示順序において最も近い再構成フレームであり、前記第２の参照フレームは、前記第１のフレームの後方インター予測に利用可能な前記第１のフレームに対する前記表示順序において最も近い再構成フレームである、例１〜７のいずれか１つに記載の方法。
【０１５５】
例９：前記予測プロセスを実行することは、第１フレームの第１のブロックと並置されたオプティカルフロー参照フレーム内の参照ブロックを決定すること、前記参照ブロックと前記第１のブロックの残差を符号化すること、を含む例１〜８のいずれか１つに記載の方法。
【０１５６】
例１０：装置であって、プロセッサと、前記プロセッサが実行して方法を実行可能な命令を含む非一時的な記憶媒体と、を備え、前記方法は、ビデオシーケンス内の予測されるべき第１のフレームを決定すること、前記第１のフレームの前方インター予測のための第１の参照フレームおよび前記第１のフレームの後方インター予測のための第２の参照フレームが利用できるかどうかを判定すること、前記第１の参照フレームおよび前記第２の参照フレームの両方が利用できると判定したことに応答して、オプティカルフロー推定を用いて、前記第１の参照フレームおよび前記第２の参照フレームを使用して、第１のフレームの複数の画素の対応する動きフィールドを生成すること、
複数の動きフィールドを使用して第１の参照フレームを前記第１のフレームにワーピングして第１のワーピングされた参照フレームを形成すること、前記複数の動きフィールドを使用して第２の参照フレームを前記第１のフレームにワーピングして第２のワーピングされた参照フレームを形成すること、前記第１のワーピングされた参照フレームおよび前記第２のワーピングされた参照フレームをブレンディングして、前記第１のフレームのブロックのインター予測のためにオプティカルフロー参照フレームを形成することを、含む、装置。
【０１５７】
例１１：前記オプティカルフロー参照フレームを使用して、前記第１のフレームに対して予測プロセスを実行すること、をさらに備える例１０に記載の装置。
例１２：前記第１のフレームの複数のブロックの単一参照インター予測にのみ前記オプティカルフロー参照フレームを用いることをさらに備える例１０または１１に記載の装置。
【０１５８】
例１３：対応する動きフィールドを生成することは、前記第１の参照フレームおよび前記第２の参照フレームを使用して、前記第１のフレームの各画素についてラグランジュ関数の出力を計算することを含む、例１０〜１２に記載のいずれか一つに記載の装置。
【０１５９】
例１４：ラグランジュ関数の出力を計算することは、ラグランジュパラメータの第１の値を使用して、前記現在のフレームの複数の画素の第１の組の動きフィールドを計算すること、前記ラグランジュパラメータの第２の値を使用する前記ラグランジュ関数への入力として前記第１の組の動きフィールドを使用して、前記現在のフレームの複数の画素の向上された１組の動きフィールドを計算すること、を含み、前記ラグランジュパラメータの第２の値は、前記ラグランジュパラメータの第１の値よりも小さく、前記第１のワーピングされた参照フレームおよび前記第２のワーピングされた参照フレームは、前記向上された１組の動きフィールドを用いてワーピングされる、例１３に記載の装置。
【０１６０】
例１５：装置であって、プロセッサと、前記プロセッサが実行して方法を実行可能な命令を含む非一時的な記憶媒体と、を備え、前記方法は、ビデオシーケンスからの第１の参照フレームおよび前記ビデオシーケンスからの第２の参照フレームを使用して、前記ビデオシーケンスの第１のフレームのインター予測のためにオプティカルフロー参照フレームを生成すること、オプティカルフロー推定の第１の処理レベルで第１のフレームの複数の画素の動きフィールドを初期化することであって、前記第１の処理レベルは、前記第１のフレーム内のダウンスケーリングされた動きを示し、複数レベルのうちの特定のレベルを含む、前記初期化すること、前記複数レベルの各レベルに対して、前記複数の動きフィールドを使用して前記第１の参照フレームを前記第１のフレームにワーピングして、第１のワーピングされた参照フレームを形成すること、前記複数の動きフィールドを使用して前記第２の参照フレームを前記第１のフレームにワーピングして、第２のワーピングされた参照フレームを形成すること、前記オプティカルフロー推定を使用して、前記第１のワーピングされた参照フレームと前記第２のワーピングされた参照フレームとの間の複数の動きフィールドを推定すること、前記第１のワーピングされた参照フレームと前記第２のワーピングされた参照フレームとの間の複数の動きフィールドを使用して、前記第１のフレームの複数の画素の複数の動きフィールドを更新すること、前記複数レベルのうちの最後のレベルに対して、更新された複数の動きフィールドを使用して前記第１の参照フレームを前記第１のフレームにワーピングして、最後の第１のワーピングされた参照フレームを形成すること、前記更新された複数の動きフィールドを使用して前記第２の参照フレームを前記第１のフレームにワーピングして、最後の第２のワーピングされた参照フレームを形成すること、前記最後の第１のワーピングされた参照フレームおよび前記第２のワーピングされた参照フレームをブレンディングして、前記オプティカルフロー参照フレームを形成すること、を備える装置。
【０１６１】
例１６：前記オプティカルフロー推定では、のフレームの各画素に対するラグランジュ関数が用いられる、例１５に記載の装置。
例１７：前記複数のレベルの各レベルについて、前記ラグランジュ関数のラグランジュパラメータを、第１の参照フレームのワーピング、第２の参照フレームのワーピング、複数の動きフィールドの推定、および動きフィールドの更新の第１の反復に対して最大値に初期化すること、前記第１の参照フレームのワーピング、前記第２の参照フレームのワーピング、前記複数の動きフィールドの推定、前記ラグランジュパラメータの１組の可能な値の順次小さくなる値を用いた複数の動きフィールドの推定の追加の反復を実行すること、をさらに備える例１６に記載の装置。
【０１６２】
例１８：前記複数の動きフィールドを推定することは、水平軸、垂直軸、および時刻に関して、前記第１のワーピングされた参照フレームおよび前記第２のワーピングされた参照フレームの複数の画素の複数の微分係数を計算すること、前記最後のレベルとは異なるレベルに応じて前記複数の微分係数をダウンスケーリングすること、前記複数の微分係数を使用して前記ラグランジュ関数を表す線形方程式を解くこと、を含む、例１６または１７に記載の装置。
【０１６３】
例１９：前記オプティカルフロー参照フレームを使用して、前記第１のフレームをインター予測すること、をさらに備える例１５〜１８のいずれか１つに記載の装置。
例２０：前記プロセッサおよび前記一時的記憶媒体は復号化器を形成する、例１５〜１９のいずれか一つに記載の装置。
【０１６４】
上述した実施形態、実施例及び態様は、本発明の理解を容易にするために記載されており、本発明を限定するものではない。本発明は、添付の特許請求の範囲内に含まれる様々な改変および均等の構成を包含することを意図しており、その範囲は、法律で許容されるようなすべての改変および均等の構造を包含するように最も広い解釈が与えられる。
【図１】
0006905093.tif 000015
【図２】
0006905093.tif 000016
【図３】
0006905093.tif 000017
【図４】
0006905093.tif 000018
【図５】
0006905093.tif 000019
【図６】
0006905093.tif 000020
【図７】
0006905093.tif 000021
【図８】
0006905093.tif 000022
【図９】
0006905093.tif 000023
【図１０】
0006905093.tif 000024
【図１１】
0006905093.tif 000025
【図１２】
0006905093.tif 000026
【図１３】
0006905093.tif 000027
【図１４】
0006905093.tif 000028
【図１５】
0006905093.tif 000029