(57)【要約】  本開示では、ビデオユニット置換、例えば動き補償ビデオユニット内挿または外挿を使用して生成される置換ビデオユニットの境界に沿って起こるアーティファクトを修正する技術について説明する。本開示で説明する技術によれば、フレーム置換ユニットは参照ビデオユニット内に存在し置換ビデオユニット内に存在するはずの境界と対応する、置換ビデオユニット内の第１の位置を識別し、第１の境界アーティファクト修正技術を使用して第１の位置内の境界アーティファクトを修正する。フレーム置換ユニットは、また置換ビデオユニット内には存在し参照ビデオユニット内には存在しない境界と対応する、置換ビデオユニット内の第２の位置を識別し、第２の境界アーティファクト修正技術を使用して第２の位置内の境界アーティファクトを修正する。
2011519228.tif 000002
【特許請求の範囲】
【請求項１】
境界アーティファクトを含む置換ビデオユニットの位置を識別するために前記置換ビデオユニットを分析することと、
前記置換ビデオユニットの前記識別された位置内の前記境界アーティファクトを修正することと、
を備える方法。
【請求項２】
境界アーティファクトを含む置換ビデオユニットの位置を識別するために前記置換ビデオユニットを分析することは、
参照ビデオユニット内には存在し前記置換ビデオユニット中には存在しない境界と対応する第１の境界アーティファクトを含む、前記置換ビデオユニット内の第１の位置を識別することと、
前記置換ビデオユニット内には存在し前記参照ビデオユニット内には存在しない境界と対応する第２の境界アーティファクトを含む、前記置換ビデオユニット内の第２の位置を識別することと、を備え、
前記識別された位置内の前記境界アーティファクトを修正することは、
第１の境界アーティファクト修正技術を使用して前記置換ビデオユニットの前記第１の位置内の境界アーティファクトを修正することと、
第２の境界アーティファクト修正技術を使用して前記置換ビデオユニットの前記第２の位置内の境界アーティファクトを修正することと、
を備える請求項１に記載の方法。
【請求項３】
前記第１および第２の位置内の境界アーティファクトを修正することは、画素領域において前記第１および第２の位置内の境界アーティファクトを修正することを備える請求項２に記載の方法。
【請求項４】
前記第１の位置内の境界アーティファクトを修正することは、前記置換ビデオユニットの前記第１の位置内の画素の画素値を前記参照ビデオユニット内に存在する前記境界の画素値と実質的に同様である画素値と置換することを備え、
前記第２の位置内の境界アーティファクトを修正することは、前記第２の位置内の画素の画素値を前記参照ビデオユニット中に存在する前記境界に隣接する１つまたは複数の画素値の平均として計算された画素値と置換することを備える請求項３に記載の方法。
【請求項５】
前記置換ビデオユニットの前記第１の位置内の画素の画素値を置換することは、前記置換ビデオユニットの前記第１の位置内の画素の前記画素値を前記参照ビデオユニット中の対応する位置内の画素値のコピーと置換すること、または前記置換ビデオユニットの前記第１の位置内の画素の前記画素値を所定の境界画素値と置換することのうちの１つを備える請求項４に記載の方法。
【請求項６】
前記第１および第２の位置内の境界アーティファクトを修正することは、前記置換ビデオユニットの前記画素値を内挿または外挿する前に前記第１および第２の位置内の境界アーティファクトを修正することを備える請求項２に記載の方法。
【請求項７】
前記第１の位置内の境界アーティファクトを修正することは、
前記第１の位置のそれぞれのブロックに関連する動きベクトルを０に等しくなるように設定することと、
前記それぞれのブロックに関連する前記動きベクトルを使用して前記第１の位置の前記ブロックについてインター予測を実行することと、を備え、
前記第２の位置内の境界アーティファクトを修正することは、
前記置換フレームの前記第２の位置のブロックについてイントラ予測モードを選択することと、
前記選択されたイントラ予測モードを使用してイントラ予測を実行することと、を備える請求項６に記載の方法。
【請求項８】
前記置換ビデオユニット内の前記第１の位置を識別することは、
前記参照ビデオユニット内に存在する前記境界が前記参照ビデオユニットの左側部または右側部に沿っているときは、前記置換フレームの画素のＷ列を前記第１の位置と識別することと、
前記参照ビデオユニット内に存在する前記境界が前記参照ビデオユニットの上部または下部に沿っているときは、前記置換フレームの画素のＷ行を前記第１の位置と識別することとを備え、
Ｗは、前記参照ビデオユニット内に存在する前記境界の幅である請求項２に記載の方法。
【請求項９】
前記置換ビデオユニット内の前記第２の位置を識別することは、
前記それぞれのブロックの前記動きベクトルのｘ成分であるＭＶxが０に等しくないときは、画素の前記Ｗ列に隣接する前記置換フレームの画素のＭＶx列を前記第２の位置と識別することと、
前記それぞれのブロックの前記動きベクトルのｙ成分であるＭＶyが０に等しくないときは、画素の前記Ｗ行に隣接する前記置換フレームの画素のＭＶy行を前記第２の位置と識別することと、を備える請求項８に記載の方法。
【請求項１０】
前記置換ビデオユニット内の前記第１の位置を識別することは、
シーリング関数はＷ／Ｎの次に大きい整数を出力し、ここでＷは前記参照フレーム中の前記境界の幅であり、Ｎはｘ方向に沿ったブロックサイズである、Ｌ＝シーリング（Ｗ，Ｎ）を計算することと、
前記参照ビデオユニット内に存在する前記境界が前記参照ビデオユニットの左側部または右側部に沿っているときは、前記置換フレームのブロックのＬ列を前記第１の位置と識別することと、
シーリング関数はＷ／Ｍの次に大きい整数を出力し、ここでＷは前記参照フレーム中の前記境界の前記幅であり、Ｍはｙ方向に沿ったブロックサイズである、Ｋ＝シーリング（Ｗ，Ｍ）を計算することと、
前記参照ビデオユニット内に存在する前記境界が前記参照ビデオユニットの上部または下部に沿っているときは、前記置換フレームの画素のＫ行を前記第１の位置と識別することと、を備える請求項２に記載の方法。
【請求項１１】
前記置換ビデオユニット中の前記第１の位置を識別することは、
ＷがＮの倍数であるときはブロックの前記Ｌ列に隣接するブロックの列を第１の境界位置と識別することと、
ＷがＭの倍数であるときはブロックの前記Ｋ行に隣接するブロックの行を第１の境界位置と識別することと、をさらに備える請求項１０に記載の方法。
【請求項１２】
前記置換ビデオユニット内の前記第２の位置を識別することは、
ブロックの前記Ｌ列に隣接するブロックの列の少なくとも一部分を前記ブロックのｘ座標と前記境界位置のｘ座標とに基づいて第２の境界位置と識別することと、
ブロックの前記Ｋ行に隣接するブロックの行の少なくとも一部分を前記ブロックのｙ座標と前記境界位置のｙ座標とに基づいて第２の境界位置と識別することと、を備える請求項１０に記載の方法。
【請求項１３】
前記第１の位置は実境界位置を備え、
前記第２の位置は偽境界位置を備える、請求項２に記載の方法。
【請求項１４】
境界アーティファクトを含む置換ビデオユニットの位置を識別するために前記置換ビデオユニットを分析することは、前記境界中の画素を含み境界アーティファクトを含まない、前記置換ビデオユニットの位置を識別しないことを備える請求項１に記載の方法。
【請求項１５】
動き補償内挿および動き補償外挿のうちの１つを使用して前記置換ビデオユニットを生成すること、をさらに備える請求項１に記載の方法。
【請求項１６】
前記置換ビデオユニットは、置換ビデオフレーム、置換ビデオスライス、または置換ビデオブロックのうちの１つを備える請求項１に記載の方法。
【請求項１７】
境界アーティファクトを含む置換ビデオユニットの位置を識別するために前記置換ビデオユニットを分析する境界アーティファクト識別ユニットと、
前記置換ビデオユニットの前記識別された位置内の前記境界アーティファクトを修正する境界アーティファクト修正ユニットと、
を備える装置。
【請求項１８】
前記境界アーティファクト識別ユニットは、参照ビデオユニット内には存在し前記置換ビデオユニット中には存在しない境界と対応する第１の境界アーティファクトを含む、前記置換ビデオユニット内の第１の位置を識別し、前記置換ビデオユニット内には存在し前記参照ビデオユニット内には存在しない境界と対応する第２の境界アーティファクトを含む、前記置換ビデオユニット内の第２の位置を識別し、
前記境界アーティファクト修正ユニットは、第１の境界アーティファクト修正技術を使用して前記置換ビデオユニットの前記第１の位置内の境界アーティファクトを修正し、第２の境界アーティファクト修正技術を使用して前記置換ビデオユニットの前記第２の位置内の境界アーティファクトを修正する請求項１７に記載の装置。
【請求項１９】
前記境界アーティファクト修正ユニットは、画素領域において前記第１および第２の位置内の境界アーティファクトを修正する請求項１８に記載の装置。
【請求項２０】
前記境界アーティファクト修正ユニットは、
前記置換ビデオユニットの前記第１の位置内の画素の画素値を前記参照ビデオユニット内に存在する前記境界の画素値と実質的に同様である画素値と置換し、
前記第２の位置内の画素の画素値を前記参照ビデオユニット中に存在する前記境界に隣接する１つまたは複数の画素値の平均として計算された画素値と置換する請求項１９に記載の装置。
【請求項２１】
前記境界アーティファクト修正ユニットは、前記置換ビデオユニットの前記第１の位置内の画素の画素値を前記参照ビデオユニット中の対応する位置内の画素値のコピーと置換することによって、または前記置換ビデオユニットの前記第１の位置内の画素の前記画素値を所定の境界画素値と置換することによって、前記置換ビデオユニットの前記第１の位置内の画素の前記画素値を置換する請求項２０に記載の装置。
【請求項２２】
前記境界アーティファクト修正ユニットは、前記置換ビデオユニットの前記画素値を内挿または外挿する前に前記第１および第２の位置内の境界アーティファクトを修正する請求項１８に記載の装置。
【請求項２３】
前記境界アーティファクト修正ユニットは、
前記第１の位置のそれぞれのブロックに関連する動きベクトルを０に等しくなるように設定し、
前記それぞれのブロックに関連する前記動きベクトルを使用して前記第１の位置の前記ブロックについてインター予測を実行し、
前記置換フレームの前記第２の位置のブロックについてイントラ予測モードを選択し、
前記選択されたイントラ予測モードを使用してイントラ予測を実行する請求項２２に記載の装置。
【請求項２４】
前記境界アーティファクト識別ユニットは、
前記参照ビデオユニット内に存在する前記境界が前記参照ビデオユニットの左側部または右側部に沿っているときは、前記置換フレームの画素のＷ列を前記第１の位置と識別し、
前記参照ビデオユニット内に存在する前記境界が前記参照ビデオユニットの上部または下部に沿っているときは、前記置換フレームの画素のＷ行を前記第１の位置と識別し、
Ｗは、前記参照ビデオユニット内に存在する前記境界の幅である請求項１８に記載の装置。
【請求項２５】
前記境界アーティファクト識別ユニットは、
前記それぞれのブロックの前記動きベクトルのｘ成分であるＭＶxが０に等しくないときは、画素の前記Ｗ列に隣接する前記置換フレームの画素のＭＶx列を前記第２の位置と識別し、
前記それぞれのブロックの前記動きベクトルのｙ成分であるＭＶyが０に等しくないときは、画素の前記Ｗ行に隣接する前記置換フレームの画素のＭＶy行を前記第２の位置と識別する請求項２４に記載の装置。
【請求項２６】
前記境界アーティファクト識別ユニットは、
シーリング関数はＷ／Ｎの次に大きい整数を出力し、ここでＷは前記参照フレーム中の前記境界の幅であり、Ｎはｘ方向に沿ったブロックサイズである、Ｌ＝シーリング（Ｗ，Ｎ）を計算し、
前記参照ビデオユニット内に存在する前記境界が前記参照ビデオユニットの左側部または右側部に沿っているときは、前記置換フレームのブロックのＬ列を前記第１の位置と識別し、
シーリング関数はＷ／Ｍの次に大きい整数を出力し、ここでＷは前記参照フレーム中の前記境界の前記幅であり、Ｍはｙ方向に沿ったブロックサイズである、Ｋ＝シーリング（Ｗ，Ｍ）を計算し、
前記参照ビデオユニット内に存在する前記境界が前記参照ビデオユニットの上部または下部に沿っているときは、前記置換フレームの画素のＫ行を前記第１の位置と識別する請求項１８に記載の装置。
【請求項２７】
前記境界アーティファクト識別ユニットは、
ＷがＮの倍数であるときは、ブロックの前記Ｌ列に隣接するブロックの列を第１の境界位置と識別し、
ＷがＭの倍数であるときは、ブロックの前記Ｋ行に隣接するブロックの行を第１の境界位置と識別する請求項２６に記載の装置。
【請求項２８】
前記境界アーティファクト識別ユニットは、
ブロックの前記Ｌ列に隣接するブロックの列の少なくとも一部分を前記ブロックのｘ座標と前記境界位置のｘ座標とに基づいて第２の境界位置と識別し、
ブロックの前記Ｋ行に隣接するブロックの行の少なくとも一部分を前記ブロックのｙ座標と前記境界位置のｙ座標とに基づいて第２の境界位置と識別する請求項２６に記載の装置。
【請求項２９】
前記第１の位置は実境界位置を備え、
前記第２の位置は偽境界位置を備える請求項１８に記載の装置。
【請求項３０】
前記境界アーティファクト識別ユニットは、前記境界中の画素を含み境界アーティファクトを含まない、前記置換ビデオユニットの位置を識別しない請求項１８に記載の装置。
【請求項３１】
動き補償内挿および動き補償外挿のうちの１つを使用して前記置換ビデオユニットを生成すること、をさらに備える請求項１８に記載の装置。
【請求項３２】
前記置換ビデオユニットは、置換ビデオフレーム、置換ビデオスライス、または置換ビデオブロックのうちの１つを備える請求項１８に記載の装置。
【請求項３３】
前記装置は無線通信デバイスを備える請求項１８に記載の装置。
【請求項３４】
前記装置は集積回路を備える請求項１８に記載の装置。
【請求項３５】
実行されると、少なくとも１つのプロセッサに、
境界アーティファクトを含む置換ビデオユニットの位置を識別するために前記置換ビデオユニットを分析することと、
前記置換ビデオユニットの前記識別された位置内の前記境界アーティファクトを修正することと、を行わせる命令を備えるコンピュータ可読媒体。
【請求項３６】
置換ビデオユニットを分析するための命令は、
参照ビデオユニット内には存在し前記置換ビデオユニット中には存在しない境界と対応する第１の境界アーティファクトを含む、前記置換ビデオユニット内の第１の位置を識別することと、
前記置換ビデオユニット内には存在し前記参照ビデオユニット内には存在しない境界と対応する第２の境界アーティファクトを含む、前記置換ビデオユニット内の第２の位置を識別することと、を行うための命令を備え、
前記識別された位置内の前記境界アーティファクトを修正するための命令は、
第１の境界アーティファクト修正技術を使用して前記置換ビデオユニットの前記第１の位置内の境界アーティファクトを修正することと、
第２の境界アーティファクト修正技術を使用して前記置換ビデオユニットの前記第２の位置内の境界アーティファクトを修正することと、を行うための命令を備える請求項３５に記載のコンピュータ可読媒体。
【請求項３７】
前記第１の位置内の境界アーティファクトを修正することを前記プロセッサに行わせる命令は、前記置換ビデオユニットの前記第１の位置内の画素の画素値を前記参照ビデオユニット内に存在する前記境界の画素値と実質的に同様である画素値と置換することを前記プロセッサに行わせる命令を備え、
前記第２の位置内の境界アーティファクトを修正することを前記プロセッサに行わせる命令は、前記第２の位置内の画素の画素値を、前記参照ビデオユニット中に存在する前記境界に隣接する１つまたは複数の画素値の平均として計算された画素値と置換することを前記プロセッサに行わせる命令を備える請求項３６に記載のコンピュータ可読媒体。
【請求項３８】
前記第１の位置内の境界アーティファクトを修正することを前記プロセッサに行わせる命令は、
前記第１の位置のそれぞれのブロックに関連する動きベクトルを０に等しくなるように設定することと、
前記それぞれのブロックに関連する前記動きベクトルを使用して前記第１の位置の前記ブロックについてインター予測を実行することと、を前記プロセッサに行わせる命令を備え、
前記第２の位置内の境界アーティファクトを修正することは、
前記置換フレームの前記第２の位置のブロックについてイントラ予測モードを選択することと、
前記選択されたイントラ予測モードを使用してイントラ予測を実行することと、を備える請求項３６に記載のコンピュータ可読媒体。
【請求項３９】
前記置換ビデオユニット内の前記第１の位置を識別することを前記プロセッサに行わせる命令は、
前記参照ビデオユニット内に存在する前記境界が前記参照ビデオユニットの左側部または右側部に沿っているときは、前記置換フレームの画素のＷ列を前記第１の位置と識別することと、
前記参照ビデオユニット内に存在する前記境界が前記参照ビデオユニットの上部または下部に沿っているときは、前記置換フレームの画素のＷ行を前記第１の位置と識別することと、を前記プロセッサに行わせる命令を備え、
Ｗは、前記参照ビデオユニット内に存在する前記境界の幅である請求項３６に記載のコンピュータ可読媒体。
【請求項４０】
前記置換ビデオユニット内の前記第２の位置を識別することを前記プロセッサに行わせる命令は、
前記それぞれのブロックの前記動きベクトルのｘ成分であるＭＶxが０に等しくないときは、画素の前記Ｗ列に隣接する前記置換フレームの画素のＭＶx列を前記第２の位置と識別することと、
前記それぞれのブロックの前記動きベクトルのｙ成分であるＭＶyが０に等しくないときは、画素の前記Ｗ行に隣接する前記置換フレームの画素のＭＶy行を前記第２の位置と識別することと、を前記プロセッサに行わせる命令を備える請求項３６に記載のコンピュータ可読媒体。
【請求項４１】
前記置換ビデオユニット内の前記第１の位置を識別することを前記プロセッサに行わせる命令は、
シーリング関数はＷ／Ｎの次に大きい整数を出力し、ここでＷは前記参照フレーム中の前記境界の幅であり、Ｎはｘ方向に沿ったブロックサイズである、Ｌ＝シーリング（Ｗ，Ｎ）を計算することと、
前記参照ビデオユニット内に存在する前記境界が前記参照ビデオユニットの左側部または右側部に沿っているときは、前記置換フレームのブロックのＬ列を前記第１の位置と識別することと、
シーリング関数はＷ／Ｍの次に大きい整数を出力し、ここでＷは前記参照フレーム中の前記境界の前記幅であり、Ｍはｙ方向に沿ったブロックサイズである、Ｋ＝シーリング（Ｗ，Ｍ）を計算することと、
前記参照ビデオユニット内に存在する前記境界が前記参照ビデオユニットの上部または下部に沿っているときは、前記置換フレームの画素のＫ行を前記第１の位置と識別することと、を前記プロセッサに行わせる命令を備える請求項３６に記載のコンピュータ可読媒体。
【請求項４２】
前記置換ビデオユニット中の前記第１の位置を識別することを前記プロセッサに行わせる命令は、
ＷがＮの倍数であるときは、ブロックの前記Ｌ列に隣接するブロックの列を第１の境界位置と識別することと、
ＷがＭの倍数であるときは、ブロックの前記Ｋ行に隣接するブロックの行を第１の境界位置と識別することと、を前記プロセッサに行わせる命令をさらに備える請求項４１に記載のコンピュータ可読媒体。
【請求項４３】
前記置換ビデオユニット内の前記第２の位置を識別することを前記プロセッサに行わせる命令は、
ブロックの前記Ｌ列に隣接するブロックの列の少なくとも一部分を前記ブロックのｘ座標と前記境界位置のｘ座標とに基づいて第２の境界位置と識別することと、
ブロックの前記Ｋ行に隣接するブロックの行の少なくとも一部分を前記ブロックのｙ座標と前記境界位置のｙ座標とに基づいて第２の境界位置と識別することと、を前記プロセッサに行わせる命令を備える請求項４２に記載のコンピュータ可読媒体。
【請求項４４】
境界アーティファクトを含む置換ビデオユニットの位置を識別するために前記置換ビデオユニットを分析する手段と、
前記置換ビデオユニットの前記識別された位置内の前記境界アーティファクトを修正する手段と、
を備えるデバイス。
【請求項４５】
前記分析する手段は、参照ビデオユニット内には存在し前記置換ビデオユニット中には存在しない境界と対応する第１の境界アーティファクトを含む、前記置換ビデオユニット内の第１の位置を識別し、前記置換ビデオユニット内には存在し前記参照ビデオユニット内には存在しない境界と対応する第２の境界アーティファクトを含む、前記置換ビデオユニット内の第２の位置を識別し、
前記修正する手段は、第１の境界アーティファクト修正技術を使用して前記置換ビデオユニットの前記第１の位置内の境界アーティファクトを修正し、第２の境界アーティファクト修正技術を使用して前記置換ビデオユニットの前記第２の位置内の境界アーティファクトを修正する請求項４４に記載のデバイス。
【請求項４６】
前記修正する手段は、
前記置換ビデオユニットの前記第１の位置内の画素の画素値を前記参照ビデオユニット内に存在する前記境界の画素値と実質的に同様である画素値と置換し、
前記第２の位置内の画素の画素値を前記参照ビデオユニット中に存在する前記境界に隣接する１つまたは複数の画素値の平均として計算された画素値と置換する請求項４５に記載のデバイス。
【請求項４７】
前記修正する手段は、
前記第１の位置のそれぞれのブロックに関連する動きベクトルを０に等しくなるように設定し、
前記それぞれのブロックに関連する前記動きベクトルを使用して前記第１の位置の前記ブロックについてインター予測を実行し、
前記置換フレームの前記第２の位置のブロックについてイントラ予測モードを選択し、
前記選択されたイントラ予測モードを使用してイントラ予測を実行する請求項４５に記載のデバイス。
【請求項４８】
前記分析する手段は、
前記参照ビデオユニット内に存在する前記境界が前記参照ビデオユニットの左側部または右側部に沿っているときは、前記置換フレームの画素のＷ列を前記第１の位置と識別し、
前記参照ビデオユニット内に存在する前記境界が前記参照ビデオユニットの上部または下部に沿っているときは、前記置換フレームの画素のＷ行を前記第１の位置と識別し、
Ｗは、前記参照ビデオユニット内に存在する前記境界の幅である請求項４５に記載のデバイス。
【請求項４９】
前記分析する手段は、
前記それぞれのブロックの前記動きベクトルのｘ成分であるＭＶxが０に等しくないときは、画素の前記Ｗ列に隣接する前記置換フレームの画素のＭＶx列を前記第２の位置と識別し、
前記それぞれのブロックの前記動きベクトルのｙ成分であるＭＶyが０に等しくないときは、画素の前記Ｗ行に隣接する前記置換フレームの画素のＭＶy行を前記第２の位置と識別する
請求項４８に記載のデバイス。
【請求項５０】
前記分析する手段は、
シーリング関数はＷ／Ｎの次に大きい整数を出力し、ここでＷは前記参照フレーム中の前記境界の幅であり、Ｎはｘ方向に沿ったブロックサイズである、Ｌ＝シーリング（Ｗ，Ｎ）を計算し、
前記参照ビデオユニット内に存在する前記境界が前記参照ビデオユニットの左側部または右側部に沿っているときは、前記置換フレームのブロックのＬ列を前記第１の位置と識別し、
シーリング関数はＷ／Ｍの次に大きい整数を出力し、ここでＷは前記参照フレーム中の前記境界の前記幅であり、Ｍはｙ方向に沿ったブロックサイズである、Ｋ＝シーリング（Ｗ，Ｍ）を計算し、
前記参照ビデオユニット内に存在する前記境界が前記参照ビデオユニットの上部または下部に沿っているときは、前記置換フレームの画素のＫ行を前記第１の位置と識別する請求項４５に記載のデバイス。
【請求項５１】
前記識別する手段は、
ＷがＮの倍数であるときは、ブロックの前記Ｌ列に隣接するブロックの列を第１の境界位置と識別し、
ＷがＭの倍数であるときは、ブロックの前記Ｋ行に隣接するブロックの行を第１の境界位置と識別する請求項５０に記載のデバイス。
【請求項５２】
前記識別する手段は、
ブロックの前記Ｌ列に隣接するブロックの列の少なくとも一部分を前記ブロックのｘ座標と前記境界位置のｘ座標とに基づいて第２の境界位置と識別し、
ブロックの前記Ｋ行に隣接するブロックの行の少なくとも一部分を前記ブロックのｙ座標と前記境界位置のｙ座標とに基づいて第２の境界位置と識別する請求項５０に記載のデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、その内容全体が参照により本明細書に組み込まれる、２００８年４月２３日に出願された米国仮出願第６１／０４７，３８１号の利益を主張する。
【０００２】
本開示は、デジタルビデオ符号化に関し、より詳細には、デジタルビデオデータ内のアーティファクトを改善するための技術に関する。
【背景技術】
【０００３】
デジタルビデオシーケンスを符号化するために、幾つかのビデオ符号化技術が開発されてきた。例えば、Moving Picture Experts Group（ＭＰＥＧ）は、ＭＰＥＧ−１、ＭＰＥＧ−２及びＭＰＥＧ−４を含む幾つかの技術を開発した。他の例には、International Telecommunication Union（ＩＴＵ）−Ｔ Ｈ．２６３規格、ならびにＩＴＵ−Ｔ Ｈ．２６４規格およびそれと同等のもの、ＩＳＯ／ＩＥＣ ＭＰＥＧ−４，Ｐａｒｔ１０、すなわちAdvanced Video Coding（ＡＶＣ）がある。これらのビデオ符号化規格は、圧縮技術でデータを符号化することによって、ビデオシーケンスの効率的な送信をサポートする。圧縮によって、送信が必要なデータの総量が低減される。
【０００４】
ビデオ圧縮では、ビデオシーケンスに固有の冗長性を低減するために空間予測および／または時間予測を行う。イントラ符号化は、空間予測を使用して同じビデオフレーム内のビデオブロック間の空間的冗長性を低減する。インター符号化は、時間予測を使用して連続するビデオフレーム中のビデオブロック間の時間的冗長性を低減する。インター符号化の場合、ビデオエンコーダは動き推定を行って１つまたは複数の参照フレーム中の対応する予測ビデオブロックに対するビデオブロックの変位を示す動きベクトルを生成する。ビデオエンコーダは、動き補償を行って参照フレームから予測ビデオブロックを生成し、符号化されている元のビデオブロックから予測ビデオブロックを減算することによって、残差ビデオブロックを形成する。
【０００５】
低帯域幅要件（low bandwidth requirements）を満たすために、幾つかのビデオアプリケーションでは、低減されたフレームレートでビデオを符号化し、および／または幾つかのフレームの符号化をスキップする。残念ながら、低フレームレートビデオは動きジャーキネスの形で時間的アーティファクトを生成することがある。デコーダ側でフレーム内挿（interpolation）または外挿（extrapolation）を採用して、エンコーダによってスキップされたフレーム、またはエンコーダによって生成された基本フレームレートを超えるフレームのコンテンツを近似することができる。フレーム内挿または外挿は、一般にフレーム置換（frame substitution）と呼ばれることがある。フレーム置換を使用して実フレームレートを実際にアップコンバートして、より滑らかな動きの知覚を与えることができる。フレーム挿入または置換を使用して、しばしばフレームレートアップコンバージョン（ＦＲＵＣ）と呼ばれるプロセスをサポートすることができる。ＦＲＵＣを使用して様々なビデオフレームフォーマットを変換することができ、例えば、あるフレームレートから別のフレームレートに変換することができる。ＦＲＵＣは、例えば内挿または外挿を使用してフレームを置換することにより時間品質を向上させることができるが、幾つかのフレームの置換は視覚的品質を損なう不所望の空間アーティファクトをもたらすことがある。
【発明の概要】
【０００６】
本開示では、置換フレーム中の境界に沿って起こる視覚的アーティファクトを修正するための技術について説明する。置換フレーム中の境界は、ビデオフレームの上部（top）、下部（bottom）および／または１つまたは複数の側部（side）に沿って起こることがある。代替または追加的に、置換フレーム中の境界はピクチャモードでピクチャをサポートするビデオフレームの場合などでは、そのフレーム内に位置することがある。本開示の技術によれば、フレーム置換ユニットは境界アーティファクトに対応する、置換フレーム内の位置（location）を識別し、境界アーティファクトを修正することができる。一態様では、フレーム置換ユニットは別に境界アーティファクトのタイプに基づいて置換ビデオフレーム内の境界アーティファクトを処理することができる。
【０００７】
フレーム置換ユニットは、境界アーティファクトの少なくとも２つの異なるタイプを識別することができる。一例では、フレーム置換ユニットは置換フレームを生成するために使用される参照フレーム内に存在し且つ置換フレーム内に存在するはずの境界と対応する、置換フレーム内の第１の位置を識別することができる。これら第１の位置は、参照ビデオフレーム内に実際に存在する境界に対応するので、「実境界位置」と呼ばれることがある。実境界位置は、動き補償予測により境界が置換フレームまでは延びないときなどの境界アーティファクトと対応し得る。
【０００８】
フレーム置換ユニットは、置換ビデオフレーム内には存在するが置換フレームを生成するために使用される参照ビデオフレーム内には存在しない境界と対応する、置換フレーム内の第２の位置をも識別することができる。これらの第２の位置は、参照ビデオフレーム内に実際は存在しないが、例えば動き補償内挿により置換フレームまで広がった境界に対応するので、「偽境界位置」と呼ばれることがある。偽境界位置は、動き補償予測により境界が参照フレームよりも置換フレーム内にさらに延びたときなどの境界アーティファクトと対応し得る。
【０００９】
フレーム置換ユニットは、第１の境界アーティファクト修正技術を使用して実境界位置における境界アーティファクトを修正し、第２の境界アーティファクト修正技術を使用して偽境界位置における境界アーティファクトを修正することができる。第１および第２の境界アーティファクト修正技術は、（例えば、置換フレームの画素値を内挿または外挿した後に）画素領域（pixel domain）内で行われることがあり、または（例えば、置換フレームの画素値を内挿または外挿する前に）圧縮領域（compressed domain）内で行われることがある。
【００１０】
一態様では、方法が参照ビデオユニット内に存在する境界と対応する、置換ビデオユニット内の第１の位置を識別することと、置換ビデオユニット内には存在し参照ビデオユニット内には存在しない境界と対応する、置換ビデオユニット内の第２の位置を識別することとを含む。本方法はまた、第１の境界アーティファクト修正技術を使用して置換ビデオユニットの第１の位置内の境界アーティファクトを修正することと、第２の境界アーティファクト修正技術を使用して置換ビデオユニットの第２の位置内の境界アーティファクトを修正することとを含む。
【００１１】
別の態様では、装置が参照ビデオユニット内に存在する境界と対応する、置換ビデオユニット内の第１の位置を識別し、置換ビデオユニット内には存在し参照ビデオユニット内には存在しない境界と対応する、置換ビデオユニット内の第２の位置を識別する、境界アーティファクト識別ユニットと、第１の境界アーティファクト修正技術を使用して置換ビデオユニットの第１の位置内の境界アーティファクトを修正し、第２の境界アーティファクト修正技術を使用して置換ビデオユニットの第２の位置内の境界アーティファクトを修正する、境界アーティファクト修正ユニットと、を備える。
【００１２】
別の態様では、デバイスが参照ビデオユニット内に存在する境界と対応する、置換ビデオユニット内の第１の位置を識別し、置換ビデオユニット内には存在し参照ビデオユニット内には存在しない境界と対応する、置換ビデオユニット内の第２の位置を識別する手段と、第１の境界アーティファクト修正技術を使用して置換ビデオユニットの第１の位置内の境界アーティファクトを修正し、第２の境界アーティファクト修正技術を使用して置換ビデオユニットの第２の位置内の境界アーティファクトを修正する手段と、を備える。
【００１３】
本開示で説明する技術は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの組合せで実装され得る。ソフトウェアで実装した場合、ソフトウェアは、１つまたは複数のプロセッサによって実行され得る。ソフトウェアは、最初にコンピュータ可読媒体に記憶され、実行のためにプロセッサによってロードされ得る。従って、本開示は１つまたは複数のプロセッサに、本開示で説明する技術を実行させる命令を備えるコンピュータ可読媒体を企図する。
【００１４】
例えば、幾つかの態様では、本開示は参照ビデオユニット内に存在する境界と対応する、置換ビデオユニット内の第１の位置を識別することと、置換ビデオユニット内には存在し参照ビデオユニット内には存在しない境界と対応する、置換ビデオユニット内の第２の位置を識別することと、第１の境界アーティファクト修正技術を使用して置換ビデオユニットの第１の位置内の境界アーティファクトを修正することと、第２の境界アーティファクト修正技術を使用して置換ビデオユニットの第２の位置内の境界アーティファクトを修正することと、を１つまたは複数のプロセッサに行わせる命令を備えるコンピュータ可読媒体を提供する。
【００１５】
添付の図面および以下の説明において、開示する技術の１つまたは複数の態様の詳細を示す。他の特徴、目的および利点は、説明および図面、ならびに特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【００１６】
【図１】ビデオユニット置換中に生成された境界アーティファクトを修正する例示的なビデオ符号化および復号システムを示すブロック図。
【図２Ａ】ビデオデコーダにおけるビデオユニットの内挿のための技術の例を示す図。
【図２Ｂ】ビデオデコーダにおけるビデオユニットの外挿のための技術の例を示す図。
【図３Ａ】境界を含む参照ビデオフレームを示す図。
【図３Ｂ】境界アーティファクトをもつ境界を含む置換ビデオフレームを示す図。
【図４】置換ビデオユニット内の境界アーティファクトを修正するように構成されたビデオデコーダの例を示すブロック図。
【図５】置換フレーム中の境界アーティファクトを修正するフレーム置換ユニットの例示的な動作を示す流れ図。
【図６Ａ】識別された境界に沿って画素の１つの行および／または列の境界アーティファクトを修正するフレーム置換ユニットの例示的な動作を示す流れ図。
【図６Ｂ】識別された境界に沿って画素の１つの行および／または列の境界アーティファクトを修正するフレーム置換ユニットの例示的な動作を示す流れ図。
【図７】画素領域において偽境界置換を実行するフレーム置換ユニットの例示的な動作を示す流れ図。
【図８】画素領域において実境界置換を実行するフレーム置換ユニットの例示的な動作を示す流れ図。
【図９】圧縮領域において実境界置換を実行するフレーム置換ユニットの例示的な動作を示す流れ図。
【図１０】圧縮領域において偽境界置換を実行するフレーム置換ユニットの例示的な動作を示す流れ図。
【図１１Ａ】圧縮領域における修正の様々な段階後の置換フレームを示す図。
【図１１Ｂ】圧縮領域における修正の様々な段階後の置換フレームを示す図。
【図１１Ｃ】圧縮領域における修正の様々な段階後の置換フレームを示す図。
【発明を実施するための形態】
【００１７】
図１は、本開示で説明する技術による、ビデオユニット置換（video unit substitution）中に生成された境界アーティファクトを修正する例示的なビデオ符号化および復号システム１０を示すブロック図である。ビデオユニット置換は、ビデオユニット内挿または外挿を含むことができ、エンコーダによってスキップされたビデオユニット、エンコーダによって生成された基本ビデオユニット符号化レートを超えるビデオユニット、あるいは通信チャネルを介した送信中に欠落または破損したビデオユニットのコンテンツの近似を一般に指す。ビデオユニット置換を使用して、しばしばフレームレートアップコンバージョン（ＦＲＵＣ）と呼ばれるプロセスをサポートすることができる。本開示の技術は、ビデオフレーム、スライス、ブロックまたはサブブロックなど、様々なタイプのビデオユニットに適用可能であるが、本開示では例示のために概して本技術のビデオフレームへの適用について説明する。
【００１８】
図１に示すように、システム１０はビデオエンコーダ１２とビデオデコーダ１４とを含むことができ、各々は一般的にビデオコーダと呼ばれることがあり、幾つかの例では、複合エンコーダ／デコーダ（コーデック）において形成されることがある。図１の例では、ビデオエンコーダ１２は入力ビデオフレーム１６を受信し、入力ビデオフレーム１６を符号化して符号化ビデオフレーム１８を生成する。ビデオエンコーダ１２は、通信チャネル１９を介して符号化ビデオフレーム１８をビデオデコーダ１４に送信することができる。
【００１９】
特に、ビデオエンコーダ１２は入力ビデオフレーム１６のシーケンスからなるビデオストリームを得ることができる。当該ビデオストリームは、リアルタイムまたはほぼリアルタイムのビデオ、あらかじめ記録されたビデオ、コンピュータ生成ビデオ、あるいはそれらの組合せとすることができる。例えば、ビデオエンコーダ１２はビデオカメラ、以前キャプチャされたビデオを含んでいるビデオアーカイブ（例えば、メモリ）、ビデオコンテンツプロバイダからのビデオフィード、および／またはコンピュータ生成ビデオを生成するビデオグラフィックスプロセッサから、ビデオストリームの入力ビデオフレーム１６を得ることができる。
【００２０】
ビデオエンコーダ１２は、ビデオデータをエントロピー符号化する前に、イントラまたはインター予測を使用してビデオストリームのビデオデータを圧縮することができる。イントラまたはインター予測を使用してビデオデータを圧縮することにより、ビデオエンコーダ１２とビデオデコーダ１４との間で送信しなければならないデータ量を低減することができる。イントラ予測は、所定のビデオフレーム内の１つまたは複数の隣接ブロックを使用して予測ブロックを生成することにより同じビデオフレーム内のビデオブロック間の空間的冗長性を低減または除去することによって、ビデオデータを圧縮する。インター符号化は、ビデオシーケンスの連続するビデオフレームのビデオブロック間の時間的冗長性を低減または除去して、ビデオデータを圧縮する。インター符号化の場合、ビデオエンコーダ１２は動き推定を行って２つ以上の隣接フレーム間でビデオブロックを一致させる動作を追跡することができる。動き推定によって、１つまたは複数の参照フレーム中の対応する予測ビデオブロックに対するビデオブロックの変位を示す動きベクトルが生成される。動き補償では、動きベクトルを使用して参照フレームから予測ビデオブロックの位置を特定し、当該ブロックを生成する。
【００２１】
予測ビデオブロックのイントラまたはインター予測の後、ビデオエンコーダ１２は符号化される元のビデオブロックから予測ビデオブロックを減算することによって、残差情報のブロックを生成する。従って、残差情報により予測ビデオブロックと符号化されているビデオブロックとの間の差が定量化されるので、予測ビデオブロックと残差情報とを識別したときにビデオデコーダ１４において符号化ビデオブロックを再構成できるようになる。ビデオデコーダ１４は、ビデオエンコーダ１２に関して上述したのと同様に、予測ブロックを生成し得る。例えば、ビデオデコーダ１４はインター予測を使用すべきなのかまたはイントラ予測を使用すべきなのか、イントラ予測について使用するイントラ予測モード、インター予測において使用するための動きベクトル、などを指定するヘッダ情報を受信し得る。
【００２２】
ビデオエンコーダ１２は、ビデオエンコーダ１２とビデオデコーダ１４との間で送信しなければならないデータ量をさらに低減するためにソースフレーム符号化レート未満の基本フレーム符号化レートで動作することができる。言い換えれば、基本フレーム符号化レートは所望のフレーム符号化レート未満とされ得る。代替または追加として、場合によっては、ビデオエンコーダ１２は所定のフレーム符号化レートで動作するが、ビデオエンコーダ１２に幾つかのフレームの符号化をスキップさせるスキップユニット２０を随意に含むか、または選択的にアクティブにすることができる。例えば、ビデオエンコーダ１２に幾つかのフレームの符号化を意図的にスキップさせるようにビデオユニットスキップユニット２０を構成し、それによって、例えばソースフレーム符号化レートに対するビデオエンコーダ１２の実効フレーム符号化レートを低減することができる。エンコーダ１２は、フレームスキッピングまたは低減フレームレート符号化によりチャネル１９の低減伝送レート要件に準拠し得る。
【００２３】
フレームスキッピングの場合、スキッピングが交互のフレームで起こるかまたはＮ番目のフレーム毎に起こるように、フレームスキップユニット２０によって固定レートでフレームをスキップすることができる。代替的に、例えば知的フレームスキッピング基準に基づいて変動レートでフレームをスキップすることができる。また、ビデオエンコーダ１２は固定ベースで所定のフレーム符号化レートでフレームを符号化するか、またはフレーム符号化レートがチャネル状態または他の要件などの考慮事項に従って変化するように適応ベースでフレームを符号化することができる。いずれの場合も、フレーム置換を使用してフレーム符号化レートをデコーダ１４によって効果的にアップコンバートして、例えば、３０ｆｐｓから６０ｆｐｓまたは１２０ｆｐｓに高められた所望のフレーム符号化レートを生成することができる。
【００２４】
Ｆt-2，Ｆt-1，Ｆt，Ｆt+1およびＦt+2と標示された入力ビデオフレーム１６は、ビデオシーケンスのフレームの一部分を表す。フレームＦtは、随意のフレームスキップユニット２０によるフレームスキッピング、またはビデオエンコーダ１２によって生成される基本フレームレートのために、時刻ｔにおいて符号化されないフレームを表す。フレームＦt-2およびＦt-1は、時間的にフレームＦtより前にある過去のフレームを表し、フレームＦt+1およびＦt+2は、時間的にフレームＦtの後にある未来のフレームである。ビデオシーケンスは、フレームＦtの前と後の両方に多数のフレームを含み得る。しかしながら、図１では説明しやすいように、Ｆtの前後に２つのフレームのみを示している。
【００２５】
ビデオエンコーダ１２は、フレームＦt-2，Ｆt-1，Ｆt+1およびＦt+2を符号化して、符号化フレーム１８を生成する。図１に示す例では、時刻ｔに符号化されていないフレーム、例えばフレームＦtは、符号化フレーム１８中で影付きフレームとして示しており、ビデオエンコーダ１２によって実際に符号化されるフレーム、例えばフレームＦt-2，Ｆt-1，Ｆt+1およびＦt+2は、影付きでないフレームとして示している。言い換えれば、符号化フレーム１８の中に示しているが、フレームＦtは実際には符号化フレームではない。
【００２６】
ビデオエンコーダ１２は、伝送チャネル１９を介してビデオデコーダ１４に符号化フレーム１８を送信する。この場合も、フレームＦtは随意のスキップユニット２０によってスキップされるために、またはビデオエンコーダ１２によって利用される基本フレームレートのために、ビデオエンコーダ１２によって符号化されないので、ビデオエンコーダ１２によって送信される符号化フレーム１８は、Ｆt-2，Ｆt-1，Ｆt+1，Ｆt+2を含むが、フレームＦtを含まない。伝送チャネル１９は、ビットストリーム内でビデオフレームを搬送することが可能な有線無線有線または無線媒体、あるいは両方の組合せとすることができる。チャネル１９は、双方向または単方向ビデオ送信をサポートすることができる。双方向ビデオ送信では、例えば、ビデオエンコーダ１２は符号化ビデオをビデオデコーダ１４に送信し、ビデオデコーダ１４から符号化ビデオを受信する。単方向ビデオ送信では、ビデオエンコーダ１２は符号化ビデオデータをビデオデコーダ１４に送信することができるにすぎず、ビデオエンコーダ１４から符号化ビデオデータを受信することはできない。
【００２７】
ビデオデコーダ１４は、伝送チャネル１９を介してフレーム２４を受信する。受信フレーム２４は、ビデオエンコーダ１２によって送信される符号化フレーム１８と実質的に同じであるが、伝送チャネル１９の特性に起因するフレーム、スライスまたはブロックの欠落（loss）を受ける。例えば、受信フレーム２４はチャネル損失（channel loss）が生じないとき、ビデオエンコーダ１２によって送信される符号化フレーム１８の同じセットとすることができる。受信フレーム２４は、幾つかの例では、例えば符号化ビットストリームが伝送チャネル１９の特性による欠落を受けるので、ビデオエンコーダ１２によって送信される符号化フレーム１８のセットとはわずかに異なることがある。言い換えれば、ビデオエンコーダ１２によって実際に符号化され、送信されるフレーム（またはフレームの部分）の１つまたは複数（例えば、フレームＦt-2，Ｆt-1，Ｆt+1およびＦt+2）は、伝送チャネル１９を介した送信中に欠落することがある。例示のために、受信フレーム２４が符号化フレーム１８と同じ、すなわち送信中に損失したフレームがないと仮定する。ただし、本開示の技術は意図的なフレームスキッピングによる、または基本フレームレートによる符号化されていないフレームに加えて、またはその代わりに送信中に欠落したフレームについてフレーム置換を実行する際に有用であることがあることを理解されたい。
【００２８】
ビデオデコーダ１４は、受信フレーム２４（Ｆt-2，Ｆt-1，Ｆt+1，Ｆt+2）の各々を復号するために、例えば、ＭＰＥＧ−１、ＭＰＥＧ−２、ＭＰＥＧ−４、Ｈ．２６３、Ｈ．２６４、またはＭＰＥＧ−４、Ｐａｒｔ１０規格のうちの１つに従って標準的な復号技術を適用することができる。上述のように、ビデオデコーダ１４はエントロピー復号を行ってそれらのフレームを圧縮フォーマットまたは領域に、例えばイントラまたはインター予測を使用してさらに圧縮されたフレームに復号することができる。ビデオデコーダ１４は、イントラまたはインター予測を行って、それらのフレームを画素領域に例えば各画素位置に関連する画素値を備えるフレームに復元することができる。
【００２９】
デコーダ１４はＦＲＵＣユニット２２をさらに含み、ＦＲＵＣユニット２２は動き補償フレーム置換（例えば、動き補償フレーム内挿または外挿）を使用して図１のフレームＦt’などの少なくとも１つの追加のフレームを生成することができる。本開示では動き補償フレーム置換の文脈で説明するが、本技術は動き補償有りまたは無しの他のタイプのフレーム置換、例えばフレーム平均化とともに利用できる。従って、本開示の技術は動き補償フレーム置換中の境界アーティファクトの修正に限定されるべきではない。本技術を動き補償フレーム置換の文脈で説明するのは、例示のためにすぎない。図１では、復号ビデオフレームおよび置換ビデオフレームを出力ビデオフレーム２６として表している。ビデオデコーダ１４は、ディスプレイデバイス（図１に図示せず）を駆動するために、ビデオフレーム２６を出力することができる。
【００３０】
フレームＦt’は、ビデオエンコーダ１２によって符号化されなかったか、またはチャネル１９を介した送信中に欠落したフレームＦtの近似である。このようにして、ビデオデコーダ１４は実際のフレームレート（またはフレーム符号化レート）を高められたフレームレートに変換することができる。そのようなプロセスは、フレームレートアップコンバーション（ＦＲＵＣ）と呼ばれることがある。実際に、デコーダ１４はビデオエンコーダ１２によって生成された実際のフレームレートをアップコンバートされたフレームレートに高めるために、追加のビデオユニットを生成することができる。一例として、フレームスキッピングを用いてまたは用いずにビデオエンコーダ１２によって生成された実際のフレームレートが３０ｆｐｓである場合、デコーダ１４は例えば内挿または外挿によって追加のフレームを置換し、実効フレームレートを３０ｆｐｓから６０ｆｐｓまたは１２０ｆｐｓに高めるように構成できる。実際に、追加のフレームはスキップされたフレームと置換されるか、またはビデオエンコーダ１２の基本フレーム符号化レートがより大きければ含めることができたであろうフレームと置換される。上述のように、ビデオエンコーダ１２によって生成されたフレームレートは、（チャネル１９の低減帯域幅要件の結果として）ソースビデオレートよりも小さい基本フレームレート、および／または、例えば随意のスキップユニット２０による幾つかのフレームの随意のスキッピングにより所望のフレームレートよりも小さくなることがある。
【００３１】
置換フレームＦt’が内挿によって生成されるとき、ビデオデコーダ１４は参照フレームとして使用できる少なくとも１つの以前のフレームおよび少なくとも１つの未来のフレームを使用してフレームＦt’を生成することができる。追加のフレームＦt’が内挿ではなく、外挿によって生成されるとき、ビデオデコーダ１４は時間的にフレームＦt’の後に存在する１つまたは複数の参照フレーム、または時間的にフレームＦt’の前に存在する１つまたは複数の参照フレームのいずれかを使用してフレームＦt’を生成する。いずれの場合も、デコーダ１４によって採用されるフレーム置換により、スキップされたまたは他の除外されたフレームのコンテンツを近似する。
【００３２】
フレーム置換は、幾つかの例では復号ビデオストリーム中の視覚的アーティファクトを生成することがある。例えば、ビデオシーケンスのフレームがビデオフレームの上部、下部および／または少なくとも１つの側部に沿って境界を含む場合、フレーム置換はその境界において、ぶれ、ちらつき、および／またはブロッキネスをもたらすことがある。ビデオシーケンスのフレームは、フレームの周囲の少なくとも一部分の周りに延びる無地の、例えば黒い境界を含むことがある。そのような境界は、例えばＭＰＥＧ−１ビデオストリームからＨ．２６４ビデオストリームへの、ビデオストリームのフォーマット変換中に生成されることがある。例えば、境界変換中に画像サイズが変更されることがある。画像サイズをより小さくする場合、あるイメージサイズに合うようにフレームのサイズを調整するために、幾つかの黒または他の色の画素がそのフレームに追加されることがある。それらの黒または他の色の画素は、単一のストリップとしてそのフレームの一方の側部に、または左右対称にそのフレームのすべての側部に追加されることがあり、それによってフレーム内の「境界」が作成される。
【００３３】
動き補償フレーム置換の場合、動きベクトルを使用した内挿または外挿は、置換フレーム中の視覚的アーティファクトを生成することがある。１つまたは複数の参照フレーム中に境界が存在する場合、例えば１つまたは複数の参照フレームにおける動きベクトルに応じて生成される動きベクトルを使用して、置換フレーム中の境界が生成される。幾つかの例では、その内挿または外挿動きベクトルは、境界を含む画素のブロック（ブロック）の各々毎に様々な大きさおよび／または方向を有することがある。置換フレームについて送信される残差データはないので、置換フレーム内の境界は１つまたは複数の参照フレーム内の境界と同じでないことがある。代わりに、置換フレーム中の境界は１つまたは複数の参照フレーム中の境界よりもより太い幅を有するか、１つまたは複数の参照フレーム中の境界よりも細い幅を有するか、または境界に沿って太さが異なることがある。例えば、ブロックの各々の様々な動きベクトルにより、置換フレーム中の境界が幾つかの位置においては置換フレーム内にさらに延び、例えば置換フレームの幾つかのブロック内に延び、他の位置においては置換フレームまでは延びず、例えば置換フレームの他のブロックまでは延びないことがある。その結果、境界はビデオ再生中にぶれているかのように見えるので、望ましいとは言えない閲覧エクスペリエンスが生じることがある。動き補償内挿は境界アーティファクトを生成することがあるが、他の内挿／外挿技術も境界アーティファクトをもたらすことがある。例えば、時間フレーム平均化の場合において参照フレームが１０画素の幅の境界を有し、現在のフレームが１２画素の幅を有する幅境界を有する場合、内挿フレームは何らかの問題を有することがある。これは動き補償ではなく、時間平均化によって生成される。
【００３４】
本開示では、置換フレームの境界がフレームのエッジに沿って位置するのか、またはフレーム内に位置するのかにかかわらず、その境界において起こるアーティファクトを修正するための技術について説明する。本開示の技術によれば、ビデオデコーダ１４は境界アーティファクトに対応する、置換フレーム内の位置を識別し、境界アーティファクトを修正することができる。一態様では、ビデオデコーダ１４は境界アーティファクトのタイプに基づいて別に置換ビデオフレーム内の境界アーティファクトを処理することができる。
【００３５】
それを行うために、ＦＲＵＣユニット２２は境界アーティファクトの少なくとも２つの異なるタイプを識別することができる。一例では、ＦＲＵＣユニット２２は置換フレームを生成するために使用される参照フレーム内に存在する境界と対応する、置換フレーム内の第１の位置を識別することができる。これらの第１の位置は、参照ビデオフレーム内に実際に存在する境界に対応するので、「実境界位置」と呼ばれることがある。実境界位置は、動き補償予測により境界が置換フレームまでは延びないときなどの境界アーティファクトと対応することができる。言い換えれば、実境界位置内の境界アーティファクトは、参照フレーム中には存在するが置換フレーム中には存在しない境界に対応する。
【００３６】
ＦＲＵＣユニット２２は、置換ビデオフレーム内には存在するが置換フレームを生成するために使用される参照ビデオフレーム内には存在しない境界と対応する、置換フレーム内の第２の位置をも識別することができる。これらの第２の位置は、参照ビデオフレーム内に存在しないが、例えば動き補償内挿により置換フレームまで広がった境界に対応するので、「偽境界位置」と呼ばれることがある。偽境界位置は、動き補償予測により境界が参照フレームよりも置換フレーム内にさらに延びたときなどの境界アーティファクトと対応することができる。言い換えれば、偽境界位置内の境界アーティファクトは、参照フレーム中には存在しないが置換フレーム中には存在する境界に対応する。
【００３７】
ＦＲＵＣユニット２２は、第１の境界アーティファクト修正技術を使用して実境界位置における境界アーティファクトを修正し、第２の境界アーティファクト修正技術を使用して偽境界位置における境界アーティファクトを修正することができる。実境界位置は、（境界が１つまたは複数の参照ビデオフレーム中に存在するときに）境界が存在するはずの位置に対応するので、ＦＲＵＣユニット２２は置換フレームの実境界位置を参照フレームの少なくとも１つ内の対応する位置と置換することができる。例えば、ＦＲＵＣユニット２２は実境界位置内の画素の画素値を参照フレームの１つ内の対応する位置における画素の画素値に等しくなるように設定することができる。このようにして、ＦＲＵＣユニット２２は画素領域において、例えば置換フレームの画素値を内挿または外挿した後に、境界アーティファクト修正を実行する。別の例として、ＦＲＵＣユニット２２は実境界位置内に位置する、置換フレームのブロックに関連する動きベクトルを０に等しくなるように設定することができ、動き補償を使用して例えば参照フレーム内の対応する位置におけるブロックをコピーすることによって、復元中に境界アーティファクトを修正することができる。従って、第１の境界アーティファクト修正技術は代替的に、例えば置換フレームの画素値を内挿または外挿する前に、圧縮領域において行われることがある。
【００３８】
ＦＲＵＣユニット２２は、第２の境界アーティファクト修正技術を使用して偽境界位置を修正することができる。第２の境界アーティファクト修正技術は、画素領域または圧縮領域のいずれかにおいて実行され得る。画素領域では、ＦＲＵＣユニット２２は１つまたは複数の参照フレーム内の１つまたは複数の画素を使用して、または内挿フレーム内の既に内挿された画素から、偽境界位置内の画素の各々毎に置換画素値を決定することができる。例えば、ＦＲＵＣユニット２２は参照フレームの１つの同じ行に位置する２つの画素の画素値を置換フレーム中で置換され、参照フレーム中の境界にすぐ隣接する画素として平均化することによって、置換フレームの偽境界位置内の画素の各々毎に置換画素値を計算することができる。ＦＲＵＣユニット２２は、圧縮領域では（例えば、置換フレームの画素値を内挿または外挿する前に）選択的にイントラ予測モードを選択し、選択したイントラ予測モードを使用して置換フレームを内挿することによって、置換フレームの偽境界位置内の境界アーティファクトを修正することができる。
【００３９】
本開示の技術については、ビデオフレームの上部、下部および／または側部に沿って起こる境界の文脈で説明するが、本開示の技術はビデオフレーム内に位置する境界の境界アーティファクトを修正するために使用され得る。例えば、様々なビデオ編集技術を使用して、境界がビデオフレームの外周に沿ってではなく、ビデオフレーム内に存在するように、２つ以上のビデオシーケンスを組み合わせることができる。ピクチャインピクチャの場合、例えば境界はフレーム内、例えばフレームの右上コーナに位置する正方形境界であることがある。
【００４０】
図１の例では、ＦＲＵＣユニット２２はビデオデコーダ１４内に示されている。他の実装形態では、ＦＲＵＣユニット２２はビデオ後処理モジュール（図１に図示せず）の一部をなすことができる。ビデオ後処理モジュールは、ビデオデコーダ１４の出力を処理することができ、平滑化、鮮鋭化（sharpening）、輝度調整、および／またはコントラスト強調、ならびにＦＲＵＣユニット２２に関して上述したＦＲＵＣ動作など、様々な処理動作を実行することができる。別の代替として、ＦＲＵＣユニット２２はビデオディスプレイプロセッサ、または、例えばモバイルマルチメディアデバイス用のモバイルディスプレイプロセッサ（ＭＤＰ）デバイスの一部をなすことができる。従って、ビデオデコーダ１４内のＦＲＵＣユニット２２の実装形態は、例示のために図１および他の図に示されており、本開示で広く説明する技術を限定するものと見なすべきではない。
【００４１】
システム１０は、ビデオ電話、ビデオストリーミング、ビデオブロードキャストなどのために構成され得る。従って、相互符号化（reciprocal encoding）、復号、多重化（ＭＵＸ）および逆多重化（ＤＥＭＵＸ）構成要素（components）をチャネル１９の両端に設けることができる。幾つかの実装形態では、いわゆる無線ビデオ電話またはカメラ付き携帯電話など、ビデオストリーミング、ビデオブロードキャスト受信、および／またはビデオ電話などが可能な無線モバイル端末などのビデオ通信デバイス内に、ビデオエンコーダ１２およびビデオデコーダ１４を設けることができる。
【００４２】
そのような無線通信デバイスは、無線通信、オーディオ符号化、ビデオ符号化、およびユーザインターフェース機能をサポートするために様々な構成要素を含む。例えば、無線通信デバイスは、１つまたは複数のプロセッサ、オーディオ／ビデオエンコーダ／デコーダ（ＣＯＤＥＣ）、メモリ、１つまたは複数のモデム、増幅器などの送信受信（ＴＸ／ＲＸ）回路、周波数変換器、フィルタなどを含むことができる。さらに、無線通信デバイスは、画像およびオーディオキャプチャデバイス、画像およびオーディオ出力デバイス、関連するドライバ、ユーザ入力メディアなどを含むことができる。
【００４３】
ビデオエンコーダ１２、ビデオデコーダ１４または両方は、上述のように無線または有線通信デバイスに組み込まれ得る。また、ビデオエンコーダ１２、ビデオデコーダ１４またはその両方は、無線または有線通信デバイスに組み込むことができる集積回路チップまたはチップセットなどの集積回路デバイスとして、あるいはデジタルメディアプレーヤ、携帯情報端末（ＰＤＡ）、デジタルテレビジョンなど、デジタルビデオアプリケーションをサポートする別のタイプのデバイスとして実装され得る。
【００４４】
システム１０は、セッション開始プロトコル（ＳＩＰ）、ＩＴＵ−Ｔ Ｈ．３２３規格、ＩＴＵ−Ｔ Ｈ．３２４規格、または他の規格に従ってビデオ電話をサポートすることができる。ビデオエンコーダ１２は、ＭＰＥＧ−２、ＭＰＥＧ−４、ＩＴＵ−Ｔ Ｈ．２６３、ＩＴＵ−Ｔ Ｈ．２６４、またはＭＰＥＧ−４、Ｐａｒｔ１０などのビデオ圧縮規格に従って符号化ビデオデータを生成することができる。図１には示されていないが、ビデオエンコーダ１２およびビデオデコーダ１４は、それぞれオーディオエンコーダおよびデコーダと一体化でき、データストリームのオーディオ部分とビデオ部分の両方を処理するために適切なハードウェアおよびソフトウェア構成要素を含むことができる。
【００４５】
同じく、本開示の技術については、ビデオフレームに関して説明するが、本技術はスライス、ブロックまたはサブブロックなど様々な他のタイプのビデオユニットに適用可能である。ただし、本開示では例示のために概して本技術のビデオフレームへの適用について説明するが、本開示で広く説明するそのような技術の態様を限定するものではない。
【００４６】
図２Ａは、ビデオデコーダ１４における追加のフレームの内挿のための技術の例を示す図である。フレームの各々は、マクロブロックと呼ばれることがある複数画素の複数のブロックを含むことができる。一般に、選択された以前のフレームＦt-Nと選択された未来のフレームＦt+Mとの間の内挿フレームＦt’中のマクロブロック（ＭＢ）２８を内挿するために、ビデオデコーダ１４は以前のフレームＦt-N中のＭＢ３０と未来のフレームＦt+M中の対応するＭＢ３２との間に延びる動きベクトルｖNMに依拠することができる。この例では、時刻ｔは内挿すべき追加のフレームがビデオシーケンス中に現れるであろう時間位置、すなわち時刻を示す。フレームＦt-NおよびＦt+Mは、それぞれ内挿を必要とする追加のフレームＦt’の、時間的に先行する（ｔ−Ｎ）フレームと後にくる（ｔ＋Ｍ）フレームである。図２Ａの例では、フレームＦt-NおよびＦt+Mは追加のフレームＦt’の内挿のための参照フレームとして役立つ。
【００４７】
ＮおよびＭは、時刻ｔに対する時間オフセットを示し、互いに等しいことも等しくないこともある。例えば、Ｎ＝１およびＭ＝２の場合、フレームＦt-Nは内挿フレームに直接先行するフレームであり、フレームＦt+Mは、内挿フレームの後の第２のフレームである。Ｎ＝１およびＭ＝１である単純な例では、内挿の場合、フレームＦt-NとフレームＦt+Mとの間に延びるベクトルｖNMを２（１：２のフレームレート変換の場合）で除算して、動きベクトルｖNM／２および−ｖMN／２を生成し、内挿すべきフレームＦt’中の対応するＭＢ２８を識別することができる。従って、この簡略例では、ＭＢ２８の位置は動きベクトルｖNM／２と−ｖNM／２との関数であり、この例についてＮ＝１およびＭ＝１である。Ｆt+mからＦtへの動きベクトルは、必ずしも−ｖNM／２ではなく、ｖNMの処理されたバージョン、すなわち−ｖNM’／２であることもある。ＭＢ２８には、ＭＢ３０またはＭＢ３２に対応する画素値のセット、あるいはＭＢ３０および３２の画素値の平均、あるいはＭＢ３０および３２の画素値の線形または非線形フィルタ処理されたバージョンを割り当てることができる。より高いまたは低いフレームアップコンバージョン、例えば１：Ｘ変換では、動きベクトルはそれに応じてスケーリングされる。他の場合、例えばＮおよびＭのうちの少なくとも１つが１に等しくない場合には、動き推定および動きベクトル処理によって得られる異なる動きベクトルを使用することができる。
【００４８】
さらに、内挿の幾つかのタイプでは、ＦＲＵＣユニット２２は２つ以上の以前のフレームおよび２つ以上の未来のフレームなど、複数の参照フレームに依拠することができる。一般に、参照フレームはスキップされたフレームなどのフレームを内挿するために、単独で使用されるか、あるいは１つまたは複数の他の参照フレームと組み合わせて使用されるフレームを指す。内挿プロセスでは、１つまたは複数の参照フレーム中に存在するマクロブロックに関連する画素値を使用して、例えば図２Ａに示す内挿すべき追加のフレーム中の対応するマクロブロックにおいて画素値を内挿することができる。画素値は、輝度および／またはクロミナンス画素値を含むことができる。
【００４９】
一例として、内挿マクロブロックは、以前のフレーム中のマクロブロックにおける画素値、未来のフレーム中のマクロブロックにおける画素値、または以前および未来のフレーム中の対応するマクロブロックにおける画素値の平均に等しい画素値を含むことができる。内挿フレーム中のマクロブロックは、図２Ａに示すように参照ビデオフレーム中の対応するブロックに対して動き補償され得る。マクロブロックは、図２Ａに示すように以前のフレームと未来のフレームとの間に延びる動きベクトルによって識別され得る。図２Ａに示す内挿の図は一例であり、本開示で広く説明する技術を限定するものと見なすべきではない。多種多様な異なる内挿技術を本開示によるフレーム置換に使用することができる。
【００５０】
図２Ｂは、ビデオデコーダ１４における追加のフレームの外挿のための技術の例を示す図である。図２Ｂの例では、２つの以前の参照フレームＦt-MおよびＦt-Nを使用して、フレーム置換をサポートするために追加のフレームＦt’を外挿する。一般に、選択された以前のフレームＦt-Nおよび選択された以前のフレームＦt-Mの後にくるフレームＦt’中のＭＢ３１を外挿するために、ビデオデコーダ１４は以前のフレームＦt-N中の対応するＭＢ３３と以前のフレームＦt-M中の対応するＭＢ３５との間に延びるベクトルｖに依拠することができる。この例では、ｔは外挿すべき追加のフレームがビデオシーケンス中に現れるであろう時間位置、すなわち時刻を示す。フレームＦt-NおよびＦt−Ｍは、それぞれ外挿を必要とする追加のフレームＦt’に（ｔ−Ｎ）および（ｔ−Ｍ）だけ時間的に先行するフレームである。図２Ｂの例では、以前の参照フレームＦt-NおよびＦt-Mは、追加のフレームＦt’の外挿のための参照フレームとして役立つ。ただし、追加のフレームＦt’を外挿するために、２つ以上の以前の参照フレームまたは１つまたは複数の未来の参照フレームを使用することができる。言い換えれば、追加のフレームは、それぞれ以前のフレームまたは未来のフレームを使用して前方または後方に外挿され得る。
【００５１】
図２Ａの例の場合のように、図２ＢのＮおよびＭは時刻ｔに対する時間オフセットを示し、互いに等しいことも等しくないこともある。例えば、Ｎ＝２およびＭ＝１の場合、フレームＦt-Mは外挿フレームに直接先行するフレームであり、フレームＦt-Nは外挿フレームの２つ前のフレームである。ＭＢ３１には、ＭＢ３３またはＭＢ３５に対応する画素値のセット、あるいはＭＢ３３および３５の画素値の平均を割り当てることができる。内挿の場合のように、外挿では参照フレームは復号ビデオフレームに追加すべき余分のフレームを外挿するために単独で使用されるか、あるいは１つまたは複数の他の参照フレームと組み合わせて使用されるフレームを指すことができる。
【００５２】
外挿では、図２Ｂに示すように参照フレーム中の対応するブロックから動きベクトルｖを外挿することによって動き補償することができる。外挿プロセスでは、１つまたは複数の参照フレーム中に存在するＭＢに関連する画素値を使用して、外挿すべき追加のフレーム中の対応するＭＢにおいて画素値を外挿することができる。図２Ｂに示す外挿の図は一例であり、本開示で広く説明する技術を限定するものと見なすべきではない。多種多様な異なる外挿技術を本開示によるフレーム置換に使用することができる。
【００５３】
図３Ａおよび図３Ｂは、境界を含む例示的なビデオフレームを示す図である。特に、図３Ａは参照フレーム４０の左側部に沿った境界４４を含む例示的な参照ビデオフレーム４０を示し、図３Ｂは参照フレーム４０を使用した動き補償フレーム置換、例えば動き補償内挿または外挿を使用して生成された例示的な置換フレーム４２を示す。
【００５４】
ビデオフレーム４０、４２は、マクロブロックまたはブロックと呼ばれることがある複数画素の複数のブロックに分割され得る。図３Ａおよび図３Ｂに示す例では、ビデオフレーム４０、４２は画素のブロックの８つの行および８つの列に分割されている。従って、ビデオフレーム４０、４２の各々は、画素の６４ブロックを含む。ビデオフレーム４０、４２は、画素のより多いまたはより少ないブロックを含むことができる。画素のブロックは、一般にビデオフレーム内の画素の連続する部分を表す。例えば、それらのブロックはフレームの８画素×８画素（８×８）領域を表すことがある。ただし、それらのブロックは４×４、４×８、８×４、８×１６、１６×８、１６×１６または他の寸法など、他の寸法の領域に対応することができる。図３Ａおよび図３Ｂに示す例示的なフレーム４０、４２では、ブロックのすべてが同じサイズのものであり、例えば、８×８ブロックであるがフレーム４０、４２のブロックは異なるブロックサイズを有することができる。
【００５５】
図３Ａの参照ビデオフレーム４０は、フレーム４０の左側部の少なくとも一部分に沿って延びる境界４４を含む。図３Ａに示す例では、境界４４はフレーム４０の全左側部に沿って、すなわち上部から下部まで延びている。ただし、他の例では境界４４はフレーム４０の左側部の一部分、例えば、上半分または下半分に沿ってのみ延びるにすぎないことがある。境界はまたフレーム４０の上部、下部および右側部の少なくとも一部分に沿って与えられることがあるが、説明を簡単にするために図３Ａには示していない。境界４４は、黒い境界などの無地の境界でもあり得る。言い換えれば、境界４４内にある画素はすべて、無地の境界を生成するために実質的に同じ画素値を有することができる。境界４４は、長さおよび幅を有する。図３Ａに示す例では、境界４４はフレームの全側部に等しい長さと、第１の列のブロックのブロック幅の約１／４に等しい幅とを有する。例えば、８×８の寸法を有するブロックの場合、境界４４の長さは６４画素に等しく、境界４４の幅は２画素に等しい。参照フレーム４０の境界４４の幅は、境界の全長に沿って実質的に同じである。ただし、境界４４は、任意の長さまたは幅を有することができる。
【００５６】
動き補償フレーム置換は、置換フレーム４２を生成するために動き補償、例えば動きベクトルを使用する。置換フレーム４２を生成するために、例えば、図２Ａの内挿の例に示すように、以前のフレームと後続のフレームとの間に延びる動きベクトルに応じて、または例えば図２Ｂの外挿の例に示すように２つ以上の以前のフレーム間に延びる動きベクトルに応じて、例えば置換フレーム４２のブロックについて動きベクトルを生成することができる。幾つかの例では、置換フレーム４２について生成された動きベクトルは様々な大きさおよび／または方向を有することがあり、内挿または外挿において使用されると、図３Ｂに示すように境界に沿って太さが異なる境界４６を置換フレーム４２内で生成することがある。
【００５７】
図３Ｂに示すように、置換フレーム４２中の境界４６は幾つかの位置においては他の位置よりも置換フレーム４２内にさらに延び、従って異なる太さの境界が作成される。例えば、置換フレーム４２のブロックの第１列に沿って、第１、第３および第５行のブロック内の境界４６の部分は、参照フレーム４０の境界４４と同じ境界幅、例えばブロック幅の約１／４を有する。ただし、置換フレーム４２のブロックの第１列の他のブロックは、参照フレーム４０の境界４４の幅と比較して、より太い境界幅またはより細い境界幅のいずれかを有する。例えば、置換フレーム４２の第１列の第４行のブロックは全く境界を有さないが、参照フレーム４０においてはそうではない。別の例として、置換フレーム４２の第１列の第２および第６行のブロック内の境界４６の部分はブロックの約半分に等しい境界幅を有し、置換フレーム４２の第１の列の第７の行のブロック内の境界の部分はブロックの約３／４の境界幅を有し、それらはそれぞれ参照フレーム４０中の対応するブロックの境界幅の約２倍と約３倍である。置換フレーム４２の第１列の第８行のブロック内の境界４６の部分は、第８行のブロックよりも大きい境界幅を有する。言い換えれば、置換フレーム４２の第１列の第８行のブロックのすべての画素、ならびに置換フレーム４２の第２列および第８行のブロックの画素の約１／８が境界画素である。
【００５８】
フレーム４０、４２がフレームのシーケンスとして表示されるとき、参照フレーム４０の境界４４は置換フレーム４２の境界４６とはかなり異なるので、境界はビデオ再生中にぶれているかのように見える。その結果は、望ましいとは言えない鑑賞経験（viewing experience）となることがある。本開示で説明する境界アーティファクト修正技術により、置換フレーム４２内の境界アーティファクトをなくすことはできないとしても、低減することはできる。実際はたいていの場合、境界アーティファクトは十分に修正され得る。言い換えれば、本境界アーティファクト修正技術により、置換フレーム４２内の境界が参照フレーム４０の境界４４と実質的に同様になるように境界アーティファクトを修正する。
【００５９】
図３Ａおよび図３Ｂに示す例では、境界４４はフレーム４０、４２の左側部に沿って延びているが、フレーム４０、４２内の境界４４は追加または代替として上述のようにフレーム４０、４２の他の位置に存在することがある。例えば、境界はフレーム４０、４２の上部、フレーム４０、４２の下部、フレーム４０、４２の右側部、またはそれらの組合せに沿って存在することがある。さらに、境界は２つのビデオシーケンスのピクチャインピクチャまたはビデオ編集の場合など、フレーム４０、４２内に存在することがある。
【００６０】
図４は、図１のビデオデコーダ１４の例をより詳細に示すブロック図である。図４の例では、ビデオデコーダ１４は復号ユニット５０とフレーム置換ユニット５２と出力フレームバッファ５４とを含む。フレーム置換ユニット５２は、本開示によれば置換フレーム内の境界アーティファクトを修正する。フレーム置換ユニット５２は、ビデオデコーダ１４のＦＲＵＣユニット２２の一部を形成することができる。図４の例では、フレーム置換ユニット５２はビデオデコーダ１４内に存在する。ただし、フレーム置換ユニット５２は、他の実装形態では、ビデオデコーダ１４の外部に、例えば、ビデオポストプロセッサモジュール、またはビデオディスプレイプロセッサ、またはＭＤＰデバイス内に存在することがある。
【００６１】
ビデオデコーダ１４は、送信チャネル１９から例えばフレームバッファ（図４に図示せず）から受信したフレームを得る。復号ユニット５０は、適用可能な符号化プロセスを使用して受信フレームを復号し、復号フレームを出力フレームバッファ５４中に入れる。図４に示す例では、ビデオデコーダ５０はエントロピー復号ユニット５８と逆量子化ユニット６０と逆変換ユニット６２と予測ユニット６４と加算器６６とを含む。
【００６２】
エントロピー復号ユニット５８は、符号化ビデオフレーム、例えば、受信フレーム２４（図１）を得て受信ビデオフレーム２４をエントロピー復号し、各フレームの複数のブロック（または各フレームの部分、例えばスライス）のための残差情報およびヘッダ情報を得る。エントロピー復号ユニット５８は可変長符号化、算術符号化、コンテキスト適応型可変長符号化（ＣＡＶＬＣ）、コンテキスト適応型バイナリ算術符号化（ＣＡＢＡＣ）、または他のエントロピー符号化技術など、１つまたは複数のエントロピー符号化技術を使用して受信フレーム２４を復号することができる。上述のように、残差情報は１つまたは複数の量子化残差係数の形態であることがあり、予測ビデオブロックとビデオエンコーダ１２によって符号化された元のビデオブロックとの間の差を定量化する。ヘッダ情報は、インター予測を使用すべきかまたはイントラ予測を使用すべきか、イントラ予測について使用するイントラ予測モード、インター予測において使用するための１つまたは複数の動きベクトルなど、予測ビデオブロックを生成するために必要な情報を含むことができる。
【００６３】
復号ユニット５０は、予測ビデオブロックと残差ビデオブロックを生成し、組み合わせることによってビデオブロックの各々を再構成する。各インター予測ブロックの場合、予測ユニット６４はエントロピー復号ユニット５８から１つまたは複数の動きベクトルと、例えば出力フレームバッファ５４から１つまたは複数の再構成されたビデオフレームとを得て、動き補償予測ブロックを生成する。各イントラ予測ブロックの場合、予測ユニット６４はイントラ予測モードとイントラ予測ブロックとして同じフレームの１つまたは複数の再構成されたビデオブロックとを得て、イントラ予測モードに従って予測ブロックを生成する。
【００６４】
復号ユニット５０は、量子化残差係数を逆量子化（inverse quantize）、すなわち逆量子化（de-quantize）するために残差情報を逆量子化ユニット６０に供給し、逆変換、例えば逆ＤＣＴあるいは逆４×４または８×８整数変換を適用するために残差情報を逆変換ユニット６２に供給することによって、残差ブロックを生成することができる。加算器６６は、予測ユニット６４によって生成された予測ブロックと逆変換ユニット６２によって出力された残差ブロックとを加算して、再構成されたビデオブロックを形成する。再構成されたビデオブロックは、出力フレームバッファ５４に記憶される。
【００６５】
受信フレーム２４は、内挿または外挿すべき様々なフレームを除外することができる。そのようなフレームは、ビデオエンコーダ１２によってスキップされたフレーム、エンコーダビデオ１２の基本フレームレートによってサポートされなかったフレーム、および／あるいはチャネル１９上での送信中に欠落したフレームまたはフレームの部分を含むことができる。時空間品質を促進するために、フレーム置換ユニット５２は、例えば、内挿または外挿によって、１つまたは複数の追加のビデオフレームを生成するように構成され得る。
【００６６】
フレーム置換ユニット５２は、再構成されたビデオの時空間品質を向上させるために置換フレームをビデオ出力フレームバッファ５４に追加する。フレーム置換ユニット５２は、例えば内挿または外挿によって、フレーム置換を実行する際の参照フレームとして使用するためのフレームを復号ユニット５０から受信することができる。フレーム置換ユニット５２は、復号ユニット５０から受信した参照フレームを使用して、例えば動き補償内挿または外挿によってフレーム置換のための追加のフレームを生成することができる。一例として、フレーム置換ユニット５２は例えば図２Ａに示すように、以前のフレームと未来のフレームとの間に延びる動きベクトルを使用して、追加すべき置換フレーム中のブロックを内挿することができる。別の例として、フレーム置換ユニット５２は例えば図２Ｂに示すように、２つ以上の以前のフレーム間に延びる動きベクトルを使用して、追加すべき置換フレーム中のブロックを外挿することができる。
【００６７】
上述のようにフレーム置換、および特に動き補償フレーム置換は、置換フレーム中の境界アーティファクトをもたらすことがあるので、ビデオシーケンス中の境界に沿って境界のぶれ、ちらつき、またはブロッキネスなどの視覚的アーティファクトが生じる。例えば、動き補償内挿または外挿により、例えば図３Ａおよび図３Ｂに関して上述したように、置換フレームの周囲（または周囲の部分）の周りの境界は１つまたは複数の参照フレームにおける周囲の周りの境界よりも太くまたは細くなることがあり、あるいは置換フレーム中の境界は、その境界に沿って太さが異なることがある。言い換えれば、置換フレーム内の境界は、１つまたは複数の参照フレーム内の境界と同じでない。
【００６８】
ビデオの視覚的品質を改善するために、フレーム置換ユニット５２は境界が参照フレーム中に存在するとき置換フレーム内の境界アーティファクトを修正することができる。境界が参照フレーム中に存在しない場合、フレーム置換ユニット５２は境界アーティファクト修正を実行することができない。代わりに、フレーム置換ユニット５２は従来のフレーム置換技術、例えば内挿または外挿を使用して、追加のフレームを生成することができる。従って、境界アーティファクト修正は場合によっては境界が参照フレーム中に、例えば参照フレームの上部、下部、左または右に沿って、あるいは幾つかの例では（参照フレームの周囲に沿ってではなく）参照フレーム内で発見された場合のみ実行され得る。
【００６９】
フレーム置換ユニット５２は、境界アーティファクトに対応する、置換フレーム内の位置を識別し、識別した位置内の境界アーティファクトを修正することができる。フレーム置換ユニット５２は、境界アーティファクトを含む位置を識別する境界アーティファクト識別ユニット６８を含み得る。境界アーティファクト識別ユニット６８は、境界が参照ビデオフレーム内に存在し置換フレーム内に存在するはずの位置に対応する実境界位置と呼ばれる、置換フレーム内の第１の位置を識別することができる。実境界位置は、幾つかの例では動き補償フレーム置換から生じる境界アーティファクトを含むことがある。例えば、実境界位置は例えば図３Ｂにおけるブロックの第４行および第１列のブロックに示すように、動き補償予測により境界が除去されたかまたは置換フレームまでは延びない境界アーティファクトを含むことがある。
【００７０】
境界アーティファクト識別ユニット６８は、境界が置換フレーム中には存在するが参照フレーム内には存在しない位置に対応する、偽境界位置と呼ばれる、置換フレーム内の第２の位置をも識別することができる。偽境界位置は、例えば、図３Ｂにおけるブロックの第１列の第２、第６、第７行と、ブロックの第１および第２列の第８行とからなるブロックに示すように、参照フレーム中の対応する境界位置よりも置換フレームにさらに延びる境界など、動き補償内挿から生じる境界アーティファクトを含む。
【００７１】
境界アーティファクト識別ユニット６８は、置換フレームのブロックに関連する動きベクトルおよび／または参照フレーム内に存在する境界の幅を使用して、実境界位置および偽境界位置を識別することができる。図２Ａおよび図２Ｂに関して詳細に説明したように、置換フレームは１つまたは複数の参照フレームを使用して内挿または外挿できる。特に、フレーム置換ユニット５２は１つまたは複数の参照フレームに関連する動きベクトルに応じて置換フレームのブロックのための動きベクトルを計算し、計算した動きベクトルを使用して置換フレームを生成することができる。例えば、時間的に置換フレームより前にある第１の参照フレームと、時間的に置換フレームの後にある第２の参照フレームとを使用した内挿の場合、フレーム置換ユニット５２は第１の参照フレームと第２の参照フレームとの間に延びる動きベクトルの半分に等しい、置換フレームのブロックのための動きベクトルを生成することができる。
【００７２】
実境界位置および偽境界位置を識別するために、境界アーティファクト識別ユニット６８は、境界に沿った画素のブロックを分析する。例えば、フレームの左周囲または右周囲に沿って位置する境界の場合、境界アーティファクト識別ユニット６８は、それぞれフレームの左側部の列に沿って、またはフレームの右側部の列に沿って画素を分析することができる。一方、上部または下部周囲に沿って位置する境界の場合、境界アーティファクト識別ユニット６８は、それぞれフレームの上部の行に沿って、またはフレームの下部の行に沿って画素を分析することができる。
【００７３】
境界アーティファクト識別ユニット６８は、例えばブロックに関連する動きベクトルを分析して、境界アーティファクトがブロック内に存在するかどうかを判断することができる。フレームのブロック中の境界アーティファクトを識別するために、境界アーティファクト識別ユニット６８は左または右境界と対応するブロックの各々毎に当該ブロックに関連する動きベクトルのｘ成分を分析し、上部または下部境界に対応するブロックの各々毎に当該ブロックに関連する動きベクトルのｙ成分を分析する。
【００７４】
境界アーティファクト識別ユニット６８は、左または右境界に沿ったブロックについてブロックの動きベクトルが０に等しいｘ成分を有する場合、境界アーティファクトがないと判断する。同様に、境界アーティファクト識別ユニット６８は、上部または下部境界に沿ったブロックについてブロックの動きベクトルが０に等しいｙ成分を有する場合、境界アーティファクトがないと判断する。これは、動き補償により境界が当該ブロック内にさらに広がらないからである。代わりに、置換フレームのブロックは参照フレームからの対応するブロックのコピーとなる。
【００７５】
ブロックの動きベクトルのそれぞれの成分、例えば左および右境界のｘ成分ならびに上部および下部境界のｙ成分が０でない大きさを有する場合、境界アーティファクト識別ユニット６８はブロック内の実境界位置および／または偽境界位置を識別する。一態様では、境界アーティファクト識別ユニット６８はブロックの第１の部分を実境界位置と識別し、ブロックの第２の部分を偽境界位置と識別することができる。
【００７６】
例えば、フレームの左側部に沿って位置する境界の場合、境界アーティファクト識別ユニット６８はブロックの画素の最初のＷ列を実境界位置と識別することができる。ここで、Ｗは参照フレーム内の境界の画素単位の幅に等しい。例えば、ブロックの動きベクトルのｘ成分が正の大きさを有する場合、境界アーティファクト識別ユニット６８は、実境界位置に隣接するブロックの画素の、その正の大きさに等しい数の列を偽境界位置と識別することができる。この場合、正の大きさの動きベクトルは負のｘ方向に位置する参照フレーム中のブロックを指す。例えば、境界が左境界であり、動きベクトルのｘ成分がＭＶxに等しい場合、境界アーティファクト識別ユニット６８は、列Ｗ＋１〜Ｗ＋ＭＶxを偽境界位置と識別することができる。例えば、境界が左境界であり、ブロックの動きベクトルのｘ成分が負の大きさを有する場合、境界アーティファクト識別ユニット６８は当該ブロック内の画素のいずれをも偽境界位置に属するものとして識別することができない。これは、動き補償により境界がそのフレーム内にさらに広がらないからである。上述の例では、動きベクトルのｘ成分の正の大きさはビデオフレームの右側部の方への動きと対応するものとして表し、動きベクトルのｘ成分の負の大きさはビデオフレームの左側部の方への動きと対応するものとして表したが、異なる動きベクトル大きさ（符号）規約（motion vector magnitude (sign) conventions）を使用することができる。例えば、動きベクトルのｘ成分の正の大きさはビデオフレームの左側部の方への動きと対応するものとして表され、動きベクトルのｘ成分の負の大きさはビデオフレームの右側部の方への動きと対応するものとして表される。
【００７７】
フレームの右側部に沿って位置する境界の場合、境界アーティファクト識別ユニット６８は異なるブロックを分析し、関連する動きベクトルのｘ成分を別に使用する。境界アーティファクト識別ユニット６８は、置換フレームの画素の最後のＷ列、すなわち列Ｎ〜Ｎ−Ｗを実境界位置と識別することができる。ここで、Ｗは参照フレームの境界の画素単位の幅に等しく、Ｎは画素の列の総数に等しい。ブロックの動きベクトルのｘ成分が負の大きさを有する場合、境界アーティファクト識別ユニット６８は実境界位置に隣接する画素の、その負の大きさに等しい数の列を偽境界位置と識別することができる。例えば境界が右境界であり、動きベクトルのｘ成分が−ＭＶｘに等しい場合、境界アーティファクト識別ユニット６８は列Ｎ−Ｗ−１〜Ｎ−Ｗ−ＭＶｘを偽境界位置と識別することができる。境界が右境界であり、ブロックの動きベクトルのｘ成分が正の大きさを有する場合、境界アーティファクト識別ユニット６８は、当該ブロック内の画素のいずれをも偽境界位置に属するものとして識別することができない。これは、動き補償により境界がそのフレーム内にさらに広がらないからである。境界アーティファクト識別ユニット６８は、同様にブロックに関連する動きベクトルのｙ成分を使用して、上部および下部境界に沿った実境界位置および偽境界位置を識別することができる。
【００７８】
他の態様では、境界アーティファクト識別ユニット６８は上述のようにブロックの部分ではなく、ブロック全体を実境界位置または偽境界位置と識別することができる。ブロックが参照フレームの境界の位置に対応する任意の画素を含む場合、境界アーティファクト識別ユニット６８は当該ブロックを実境界位置と分類することができる。例えば、境界がＷ画素の幅をもつ左境界である場合、境界アーティファクト識別ユニット６８は画素の最初のＷ列の任意の画素を含むブロックを実境界位置と識別することができる。Ｗが７に等しく、置換フレームのブロックが４×４ブロックである場合、境界アーティファクト識別ユニット６８は４×４ブロックの最初の２つの列を実境界位置と識別する。言い換えれば、Ｗは動き補償のために使用される基本単位のサイズの最も近い倍数に丸められ、例えばＮ×Ｎの基本単位またはブロックサイズの場合、幅ＷはＮの最も近い倍数に丸められる。上記の４×４ブロックサイズの例では、Ｗ値７は８に丸められ、その結果、ブロックの２つの列が実境界位置と識別される。動き補償の基本単位のサイズに応じて、異なる丸めが行われることがある。例えば、動き補償のための基本単位のサイズが２×２ブロックである場合、境界の幅Ｗは２の最も近い倍数に丸められる。２×２ブロックの場合、７であるＷは依然として８に丸められるが、その結果、２×２ブロックの４つの列が実境界位置と識別される。別の例として、基本動き補償単位が８×８である場合、Ｗ値５は８に丸められ、その結果、８×８ブロックの単一の列が実境界位置と識別される。丸めは、ビデオアーキテクチャによって制限されていない場合、必要でないことがある。ただし、丸めよりもビデオプロセッサの動き補償モジュールを利用することは、ビデオプロセッサ／デコーダの基本動き補償単位に依存する。
【００７９】
従って、境界の少なくとも１つの画素が参照フレーム中の境界の位置に対応する場合、参照フレーム中の境界に対応しない幾つかの画素を含むブロックでさえ、実境界位置と分類できる。図５に関してさらに詳細に説明するように、境界アーティファクト識別ユニット６８はシーリング関数を使用して、実境界位置と識別されるブロックの列の数を決定することができる。
【００８０】
幾つかの例では、境界アーティファクト識別ユニット６８は参照フレーム中の境界と対応する画素を有しないブロックを実境界位置と特徴づけることができる。参照フレーム中の境界の境界幅がブロックサイズの倍数である場合、境界アーティファクト識別ユニット６８は隣接するブロックを実境界位置と識別することができる。これは、例えば以下で詳細に説明するように、イントラ予測を使用して偽境界アーティファクトを修正するために必要であることがある。例えば、１２画素の幅をもつ左または右境界は、例えば４×４ブロックの場合、ブロックの３つの列を通って延びるにすぎないが、ブロックの４つの列が実境界位置と識別される。
【００８１】
境界アーティファクト識別ユニット６８は、ブロックに関連する動きベクトルにより、境界が参照フレーム中の境界の位置に対応する画素を含まないブロックに広がったとき、当該ブロックを偽境界位置と識別することができる。アーティファクトに対応する偽境界位置（この場合はブロック）を識別する例は、次のように説明できる。ビデオユニットの左境界の場合、境界アーティファクト識別ユニット６８は、ある行の各ブロックを処理し、ビデオユニットの左側部から開始する。Ｋを分析される、ある行のブロックの数を表すものとし（すなわち、ブロック１〜Ｋが分析される）、Ｒをブロックの行の総数とする。ブロック１〜Ｋの各々毎に、境界アーティファクト識別ユニット６８は、当該ブロックに関連する動きベクトルを得る。境界アーティファクト識別ユニット６８は、参照フレームからフェッチされるブロックの、例えば置換フレームのブロックに関連する動きベクトルを使用して動き補償中に得られたブロックの左コーナの水平画素座標を計算する。水平画素座標が左境界幅よりも小さい場合、境界アーティファクト識別ユニット６８はこのブロックを偽境界位置と識別する。言い換えれば、境界アーティファクト識別ユニット６８は、当該ブロックを例えばイントラ予測または他の画素置換方法による、アーティファクト修正を必要とする位置と識別する。さらに、境界アーティファクト識別ユニット６８は、アーティファクト位置マップにおける当該ブロックの対応する位置を例えば「１」と標示し、マップ上のその位置に対応する当該ブロックが境界アーティファクト修正を必要とすることを示すことができる。境界アーティファクト識別ユニット６８は、同じ行の次のブロックに移動し、その行のすべてのＫ個のブロックが分析されるまで、同じプロセスを反復することができる。第１の行のＫ個のブロックを分析した後、境界アーティファクト識別ユニット６８はすべての行が分析されるまで、次の行のＫ個のブロックを分析することができる。すべての行を分析した後、境界アーティファクト識別ユニット６８は右境界が存在する場合、その境界に移動することができる。
【００８２】
右境界の場合、境界アーティファクト識別ユニット６８は同様の手順に従う。境界アーティファクト識別ユニット６８は、ビデオユニットの右境界にある、ある行の最後のＰ個のブロックを処理することができる。ブロック毎に、境界アーティファクト識別ユニット６８は、最初に当該ブロックの動きベクトルを得る。次いで、境界アーティファクト識別ユニット６８は、動き補償中に参照フレームからフェッチされるブロックの右コーナの水平画素座標を計算する。水平画素座標が右境界の開始座標（例えば、右境界の左端座標）よりも大きい場合、境界アーティファクト識別ユニット６８は、当該ブロックを、アーティファクト修正を必要とするエリアと識別し、位置マップにおいて当該ブロックの対応する位置を「１」と標示する。境界アーティファクト識別ユニット６８は、同じ行の以前のブロックに移動し、Ｐ個のブロックの分析を反復することができる。第１の行のＰ個のブロックを分析した後、境界アーティファクト識別ユニット６８は、すべてのＲ行が分析されるまで次の行のＰ個のブロックを分析することができる。すべての行が分析された後、境界アーティファクト識別ユニット６８は、北（または上部）境界が存在する場合、その境界に移動することができる。
【００８３】
北境界の場合、境界アーティファクト識別ユニット６８は同様の手順に従う。境界アーティファクト識別ユニット６８は、ビデオユニットの北側にある、ある列の各ブロックの処理を開始することができる。Ｔを分析される、ある列のブロックの数を表すものとし、Ｃをブロックの列の総数とする。境界アーティファクト識別ユニット６８は、ビデオユニットの北境界にある、ある列の最初のＴ個のブロックを処理する。ブロック毎に、境界アーティファクト識別ユニット６８は、最初に当該ブロックの動きベクトルを得ることができる。境界アーティファクト識別ユニット６８は、動き補償中に参照フレームからフェッチされるブロックの下側の垂直画素座標を計算することができる。垂直画素座標が上部境界の最下側または最南境界座標よりも大きい場合、境界アーティファクト識別ユニット６８は、当該ブロックをアーティファクト修正を必要とするエリアと識別し、位置マップにおいて当該ブロックの対応する位置を「１」と標示する。境界アーティファクト識別ユニット６８は、同じ列の次のブロックに移動し、その列のＴ個のブロックが分析されるまで、同じプロセスを反復することができる。すべてのＣ列のＴ個のブロックが分析された後、境界アーティファクト識別ユニット６８は、南境界が存在する場合、その境界に移動することができる。
【００８４】
同様に、南境界においてブロック毎に、境界アーティファクト識別ユニット６８は、最初に当該ブロックの動きベクトルを得ることができる。境界アーティファクト識別ユニット６８は、動き補償中に参照フレームからフェッチされるブロックの北（上側）の垂直画素座標を計算することができる。垂直画素座標が南境界の最上側または最北境界座標よりも小さい場合、境界アーティファクト識別ユニット６８は当該ブロックをアーティファクト修正を必要とするエリアと識別し、位置マップにおいて当該ブロックの対応する位置を「１」と標示することができる。境界アーティファクト識別ユニット６８は、同じ列の次のブロックに移動し、その列のＢ個のブロックが分析されるまで、同じプロセスを反復することができる。
【００８５】
上述のプロセスは、偽境界位置をどのように識別することができるかについての一例である。このプロセスは、本明細書で説明する技術を限定するものと見なすべきではない。例えば、偽境界識別はアーティファクトが識別される順序に依存しない。言い換えれば、このプロセスは南境界、北境界、左境界または右境界で開始することができる。他の偽境界位置識別技術が使用できる。例えば、境界批准識別（boundary ratification identification unit）ユニット６８は、画素座標の代わりに、またはそれに加えてブロックに関連する動きベクトルに基づいて境界位置を識別することができる。例えば、境界が左境界であり、動きベクトルのｘ成分が正のＭＶxに等しい場合、境界アーティファクト識別ユニット６８は、ＭＶxが実境界位置を識別するために使用されるシーリング関数の出力とブロックサイズとの積よりも大きいとき、分析されている現在のブロックに隣接して位置するブロックを偽境界位置と識別することができる。
【００８６】
フレーム置換ユニット５２は、本開示の技術を使用して、識別された位置を修正して参照フレームの境界と実質的に同様である置換フレーム内の境界を作成し、それによって境界の時間連続性を保持し、境界のぶれを除去する。フレーム置換ユニット５２は、置換フレーム内の境界アーティファクトを修正する境界アーティファクト修正ユニット７３を含む。境界アーティファクト修正ユニット７３は、それぞれ実境界位置および偽境界位置内の境界アーティファクトを修正する実境界修正ユニット７０および偽境界修正ユニット７２を含むことができる。幾つかの例では、境界修正ユニット７０、７２は画素領域において、識別された位置内の境界アーティファクトを修正することができる。言い換えれば、境界修正ユニット７０、７２は画素毎に識別された位置内の画素値を調整することができる。
【００８７】
例えば、置換フレーム中の実境界位置、すなわち置換フレームを生成するために使用される参照フレーム内に存在し、置換フレーム内に存在するはずの境界と対応する位置のアーティファクトを修正するために、実境界修正ユニット７０は置換フレーム中の実境界位置内の画素値の各々を参照フレーム中の対応する位置からの画素値と置換することができる。事実上、実境界修正ユニット７０によって参照フレームの境界が置換フレームの境界にコピーされる。別の例として、実境界修正ユニット７０は実境界位置の画素値の各々を参照フレーム中の境界の色に関連する画素値に等しくなるように設定することができる。
【００８８】
画素領域において偽境界位置を修正するために、偽境界修正ユニット７２は、１つまたは複数の参照フレームの１つまたは複数の画素値を使用して偽境界位置、すなわち置換ビデオフレーム内には存在し、置換フレームを生成するために使用される参照ビデオフレーム内には存在しない境界と対応する位置内の画素の各々毎に、置換画素値を計算することができる。偽境界修正ユニット７２は、幾つかの例では偽境界位置内の画素の各々毎に、置換されており参照フレーム中の境界にすぐ隣接する置換フレームの画素の行に対応する行に位置する、参照フレーム中の２つの画素の画素値の平均となる、置換画素値を計算することができる。
【００８９】
例えば、４画素の幅をもつ左境界の場合、偽境界修正ユニット７２はその境界にすぐ隣接する、参照フレームの第１行の第５および第６画素に関連する画素値を平均化することによって、置換フレームの第１行の第５画素の置換画素値を計算することができる。同様に、偽境界修正ユニット７２は、参照フレームの第２行の第５および第６画素に関連する画素値を平均化することによって、置換フレームの第２行の第５画素の置換画素値を計算することができ、以下同様である。偽境界修正ユニット７２は、参照フレームからのより多いまたはより少ない画素値を使用して、画素フレーム内の異なる位置例えば、異なる行または列からの画素値を使用して、あるいは参照フレームからの画素値と置換フレームの以前計算された画素値との組合せを使用して、置換画素を計算することができる。このようにして、フレーム置換ユニット５２は第１の修正技術を使用して実境界位置内の境界アーティファクトを修正し、第２の修正技術を使用して偽境界位置内の境界アーティファクトを修正して、参照フレーム中の境界と実質的に同じである境界を置換フレーム中で生成することができる。
【００９０】
他の例では、フレーム置換ユニット５２は例えば置換フレームの画素値が生成されるより前に、圧縮領域において識別された位置を修正することができる。上述のように、圧縮領域における識別された位置はブロックの画素の部分ではなく、画素のブロック全体とされ得る。実境界位置と識別された置換フレーム中のブロック、例えば参照フレームの境界に対応すると判断された少なくとも１つの画素を含むブロックの場合、実境界修正ユニット７０は当該ブロックに関連する動きベクトルを０に等しくなるように設定することによって、境界アーティファクトを修正することができる。当該ブロックに関連する動きベクトルを０に等しくなるように設定することにより、フレーム置換ユニット５２は動き補償を使用して追加のフレームのブロックを生成するために、参照フレーム中の対応するブロックをコピーすることによって、置換フレーム中で当該ブロックを生成する。従って、実境界位置に対応する置換フレーム中のブロックは、動き補償を使用した追加のフレームの構成後、参照フレームの境界と同じ境界を有する。
【００９１】
圧縮領域において、偽境界位置、例えば参照フレーム中に存在しない置換フレーム内の境界に対応するブロックの少なくとも１つの画素を含むが、参照フレームの境界に対応する画素を含まないブロックを修正するために、偽境界修正ユニット７２は、イントラ予測モードを選択し、選択したイントラ予測モードを使用してブロックの画素値を決定することによって、アーティファクトを修正することができる。例えば、４×４ブロックの場合、偽境界修正ユニット７２は符号化技術において利用可能なイントラ予測モードのうちの１つを選択することができる。例えば、Ｈ．２６４の場合、偽境界修正ユニット７２は９つのイントラ予測モード、すなわち垂直モード、水平モード、ＤＣモード、対角右下側モード（diagonal downright mode）、対角左下側モード（diagonal downleft mode）、垂直右側モード（vertical right mode）、水平下側モード（horizontal down mode）、垂直左側モード（vertical left mode）および水平上側モード（horizontal up mode）のうちの１つを選択することができる。このようにして、ビデオデコーダ１４は境界アーティファクトの少なくとも２つの異なるタイプを識別し、様々な方法で境界アーティファクトを修正することができる。
【００９２】
幾つかの態様では、境界アーティファクト予測ユニット５６は画素領域または圧縮領域のいずれかにおいて境界アーティファクトを修正することが可能である。この場合、境界アーティファクト修正ユニット５６は、例えば最適な品質−電力トレードオフを達成するために、境界アーティファクトを画素領域において修正すべきか、または圧縮領域において修正すべきかを適応的に選択することができる。画素領域において境界アーティファクトを修正すると、圧縮領域において境界アーティファクトを修正するよりも品質が良くなることがある。しかしながら、圧縮領域において境界アーティファクトを修正することは、特定の画素データにアクセスすることを必要とせず、より少ない電力消費量およびＭＩＰＳを使用して実行できる。一例として、境界アーティファクト修正ユニット７３は、イントラ予測について利用可能な因果的画素（causal pixels）がないときは、画素領域において境界アーティファクト修正を実行し、因果的画素がイントラ予測について利用可能なときは、圧縮領域において境界アーティファクト修正を実行することができる。
【００９３】
ビデオ出力フレームバッファ５４中の復号フレームおよび置換フレームを使用して、ディスプレイなどのビデオ出力デバイス（図４に図示せず）を駆動することができる。一例として、ビデオデコーダ１４は移動無線電話、デジタルメディアプレーヤ、携帯情報端末（ＰＤＡ）、デジタルテレビジョンなどの無線通信デバイスを含む、デジタルビデオ機能を含む様々なデバイスのいずれかの一部を形成する。代替的に、出力フレームバッファ５４中のフレームを、アーカイブまたは表示のための１つまたは複数の他のデバイスに送信することができる。いずれの場合も、フレーム置換ユニット５２によって生成された置換フレームは、例えば、ビデオクリップの時間的視覚的品質を向上させるために、復号ユニット５０によって復号されたフレームを補う。
【００９４】
図５は、本開示の技術による、置換フレーム中の境界アーティファクトを修正するフレーム置換ユニット５２の例示的な動作を示す流れ図である。フレーム置換ユニット５２は、境界が参照フレーム中に存在すると判断する（８０）。境界は、参照フレームの周囲の少なくとも一部分の周りに（例えば、フレームの上部、下部、左側部および／または右側部に沿って）存在することがある。代替または追加として、境界は例えば周囲に沿ってではなく、参照フレーム内に存在することがあり、これは一緒に編集される、またはピクチャインピクチャのシナリオにおける、２つ以上のビデオシーケンスを含むフレームの場合に当てはまることがある。
【００９５】
参照フレーム内の境界を識別すると、境界アーティファクト識別ユニット６８は境界が参照ビデオフレーム内に存在し、置換フレーム内に存在するはずの位置に対応する実境界位置と呼ばれる、置換フレーム内の第１の位置を識別する（８２）。実境界位置は、動き補償フレーム置換から生じるアーティファクトを含むことがある。例えば、実境界位置は、例えば図３Ｂにおけるブロックの第４行および第１列のブロックに示すように、動き補償予測により境界が除去されたかまたは置換フレームまでは延びない、境界アーティファクトを含むことがある。
【００９６】
境界識別ユニット６８は、参照フレーム内の境界の幅に基づいて置換フレーム内の実境界位置を識別することができる。一態様では、境界識別ユニット６８は各ブロックを分析し、参照フレーム内の境界の幅に基づいて当該ブロックの一部分を実境界位置と識別することができる。一例として、参照フレーム中の境界が参照フレームの左側部に沿って位置する場合、境界アーティファクト識別ユニット６８は置換フレーム中のブロックの第１列のブロックの画素の最初のＷ列を実境界位置と識別することができる。ここで、Ｗは参照フレーム内の境界の画素単位の幅に等しい。別の態様では、境界識別ユニット６８はブロックが参照フレーム内の境界に対応しない画素を含む場合でも、当該ブロック全体を実境界位置と識別することができる。例えば、参照フレーム中の境界が左境界である場合、境界アーティファクト識別ユニット６８はシーリング関数、例えばシーリング（ｘ，ｙ）を使用して実境界位置である置換フレーム中のブロックの列の数を計算することができる。シーリング関数の出力は、ｙで除算したｘを次に大きい整数値に切り上げたものとなる。例えば、シーリング（７，４）＝２である。従って、７画素の境界の幅をもつ左または右境界は、例えば４×４ブロックの場合、ブロックの２つの列が実境界位置と識別される。
【００９７】
幾つかの例では、境界アーティファクト識別ユニット６８は参照フレーム中の境界と対応する画素を有しないブロックを実境界位置と特徴づけることができる。参照フレーム中の境界の境界幅がブロックサイズの倍数である場合、境界アーティファクト識別ユニット６８は、隣接するブロックを実境界位置と識別することができる。これは、例えば以下で詳細に説明するように、イントラ予測を使用して偽境界アーティファクトを修正するために必要であることがある。例えば、１２画素の幅をもつ左または右境界は、例えば４×４ブロックの場合、ブロックの３つの列を通って延びるにすぎないが、ブロックの４つの列が実境界位置と識別される。
【００９８】
境界アーティファクト識別ユニット６８は、境界が置換フレーム中には存在するが参照フレーム内には存在しない位置に対応する偽境界位置と呼ばれる、置換フレーム内の第２の位置をも識別する（８４）。偽境界位置は、例えば図３Ｂにおけるブロックの第１列の第２、第６、第７、および第８行のブロックに示すように、参照フレーム中の対応する境界位置よりも置換フレームにさらに延びる境界など、動き補償内挿から生じる境界アーティファクトを含む。
【００９９】
境界識別ユニット６８は、参照フレーム内の境界の幅と、ブロックに関連する推定された内挿または処理された動きベクトルとに基づいて、置換フレーム内の偽境界位置を識別することができる。一態様では、境界識別ユニット６８は各ブロックを分析し、参照フレーム内の境界の幅とそれぞれのブロックの動きベクトルとに基づいて当該ブロックの一部分を偽境界位置と識別することができる。例えば、境界が左境界であり、動きベクトルのｘ成分がＭＶxに等しい場合、境界アーティファクト識別ユニット６８は列Ｗ＋１〜Ｗ+ＭＶxを偽境界位置と識別することができる。ここで、Ｗは参照フレーム中の境界の幅である。別の態様では、境界識別ユニット６８はブロック全体を偽境界位置と識別することができる。境界アーティファクト識別ユニット６８は、ブロックに関連する動きベクトルにより、境界が参照フレーム中の境界の位置に対応する画素を含まないブロックに広がったとき、当該ブロックを偽境界位置と識別することができる。例えば、境界が左境界である場合、境界アーティファクト識別ユニット６８は動き補償中に参照フレームからフェッチされるブロックの左コーナの水平画素座標が左境界幅よりも小さいとき、当該ブロックを偽境界位置と識別する。
【０１００】
実境界修正ユニット７０が、実境界位置内の境界アーティファクトを修正する（８６）。幾つかの例では、実境界修正ユニット７０は画素領域において識別された実境界位置内の境界アーティファクトを修正する。例えば、置換フレーム中の実境界位置内のアーティファクトを修正するために、実境界修正ユニット７０は置換フレーム中の実境界位置内の画素値の各々を参照フレーム中の対応する位置からの画素値と置換することができる。このようにして、参照フレームの境界が置換フレームの境界にコピーされる。他の例では、実境界修正ユニット７０は、圧縮領域において、実境界位置内の境界アーティファクトを修正する。例えば、実境界修正ユニット７０は、実境界位置と識別されたブロックに関連する動きベクトルを０に等しくなるように設定し、それらの動きベクトルを使用して動き補償を実行することによって、境界アーティファクトを修正することができる。
【０１０１】
偽境界修正ユニット７２が偽境界位置内の境界アーティファクトを修正する（８８）。画素領域において偽境界位置を修正するために、偽境界修正ユニット７２は１つまたは複数の参照フレームの１つまたは複数の画素値を使用して、偽境界位置内の画素の各々毎に置換画素値を計算することができる。例えば、偽境界修正ユニット７２は偽境界位置内の画素の各々毎に、置換されており参照フレーム中の境界にすぐ隣接する置換フレームの画素と同じ行に位置する、参照フレーム中の２つの画素の画素値の平均となる、置換画素値を計算することができる。例えば、圧縮領域において偽境界位置を修正するために、偽境界修正ユニット７２はイントラ予測モードを選択し、選択したイントラ予測モードを使用してブロックの画素値を決定する。Ｈ．２６４イントラ予測に加えて、またはそれとは別個に、異なる空間内挿技術を使用して偽境界アーティファクトを修正することもできる。
【０１０２】
図６Ａおよび図６Ｂは、識別された境界に沿って画素の１つの行および／または列の境界アーティファクトを修正する際のフレーム置換ユニット５２の例示的な動作を示す流れ図である。図６Ａおよび図６Ｂに示す例には、単一の行および／または単一の列に沿った境界アーティファクト修正を示しているが、本技術は複数の行および／または複数の列に対して実行できる。行または列の数は、参照フレーム中の境界の幅に基づいて決定できる。
【０１０３】
最初に、フレーム置換ユニット５２はフレーム置換について使用される参照フレーム内の境界を検出する（９０）。フレーム置換ユニット５２は、境界が参照フレームの左側部に沿って延びるかどうか、すなわち、左境界であるかどうかを判断する（９２）。参照フレーム中の境界が参照フレームの左側部に沿って延びる場合、すなわち左境界である場合、フレーム置換ユニット５２は変数ｊ＝１を設定し、置換フレームのブロックＭＢ（１，ｊ）を選択する（９４、９６）。ブロックＭＢ（１，ｊ）は、第１列および第ｊ行に位置するブロックである。最初はｊが１に等しくなるように設定されるので、選択される第１のブロックは置換フレームの第１列および第１行のブロックである。
【０１０４】
フレーム置換ユニット５２は、ブロックＭＢ（１，ｊ）に関連する動きベクトルのｘ成分（ＭＶx）が０に等しいかどうかを判断する（９８）。ブロックＭＢ（１，ｊ）に関連する動きベクトルは、幾つかの例では、例えば内挿または外挿によって１つまたは複数の参照フレームに関連する動きベクトルに応じて計算され得る。フレーム置換ユニット５２は、置換フレームのブロックＭＢ（１，ｊ）に関連する動きベクトルのｘ成分が０に等しくないと判断したとき、置換フレームのブロックＭＢ（１，ｊ）に関連する動きベクトルのｘ成分が０よりも大きいと判断する（１００）。フレーム置換ユニット５２は、置換フレームのブロックＭＢ（１，ｊ）に関連する動きベクトルのｘ成分が０よりも大きいと判断した場合、偽境界修正を実行する（１０２）。偽境界修正は、本開示で詳細に説明するように、画素領域または圧縮領域において実行され得る。
【０１０５】
偽境界修正を実行した後、またはブロックＭＢ（１，ｊ）に関連する動きベクトルのｘ成分が０よりも小さいとき、フレーム置換ユニット５２は実境界修正を実行する（１０４）。偽境界修正と同様に、実境界修正は本開示で詳細に説明するように画素領域または圧縮領域において実行され得る。このようにして、フレーム置換ユニット５２は異なるタイプの境界アーティファクトを修正するために、異なる境界アーティファクト修正技術を実行および使用する。例えば、実境界位置に関連する境界アーティファクトは実境界修正技術の１つを使用して修正され、偽境界位置に関連する境界アーティファクトは偽境界修正技術の１つを使用して修正される。
【０１０６】
実境界修正を実行した後、または上記ブロックに関連する動きベクトルのｘ成分が０に等しいとき、フレーム置換ユニット５２はブロックＭＢ（２，ｊ）に関連する動きベクトルのｘ成分が０に等しいかどうかを判断する（１０６）。ブロックＭＢ（２，ｊ）は、第２の列および第ｊの行に位置するブロックである。言い換えれば、ブロックＭＢ（２，ｊ）は、水平方向にブロックＭＢ（１，ｊ）にすぐ隣接するブロックである。ブロックＭＢ（２，ｊ）に関連する動きベクトルのｘ成分が０に等しくないとき、フレーム置換ユニット５２は、動き補償中に参照フレームからフェッチされるブロックの左側の水平ｘ座標（「ブロックのＸ」）が左境界の右側のｘ座標（「境界のＸ」）よりも小さいかどうかを判断する（１０８）。フレーム置換ユニット５２は、動き補償中に参照フレームからフェッチされるブロックの左側のｘ座標（「ブロックのＸ」）が左境界の右側のｘ座標よりも小さいと判断した場合、ブロックＭＢ（２，ｊ）に対して偽境界修正を実行する（１１０）。図６Ａでは、ある行の第１および第２ブロック、すなわち、ブロックＭＢ（１，ｊ）およびＭＢ（２，ｊ）中の境界アーティファクトのみを分析し、修正している。しかしながら、本技術により複数の行のより多くのブロック、例えばブロックＭＢ（３，ｊ）、ＭＢ（４，ｊ）、．．．、ＭＢ（Ｃ，ｊ）中の境界アーティファクトを分析し、修正することができる。ここで、Ｃはフレームの列の数に等しい。
【０１０７】
ブロックＭＢ（２，ｊ）に関連する動きベクトルのｘ成分が０に等しいとき、動き補償中に参照フレームからフェッチされるブロックの左側のｘ座標（「ブロックのＸ」）が左境界の右側のｘ座標よりも小さくないとき、またはブロックＭＢ（２，ｊ）の偽境界修正の後、フレーム置換ユニット５２は変数ｊがＮに等しいかどうかを判断する。ここで、Ｎは第１列のブロックの数である（１１２）。ｊがＮに等しくないとき、フレーム置換ユニット５２は、変数ｊをインクリメントし（１１４）、上述のようにしてブロックＭＢ（１，ｊ）を処理する。フレーム置換ユニット５２は、ｊがＮに等しくなるまで、すなわち処理すべき残りのブロックがなくなるまで、左の列のブロックを処理し続ける。
【０１０８】
ｊがＮに等しいとき、またはブロック（９２）において境界が左境界でないと判断されたとき、フレーム置換ユニット５２は境界が参照フレームの右側部に沿って延びるかどうか、すなわち右境界であるかどうかを判断する（１１６）。フレーム置換ユニット５２は、参照フレーム中の境界が参照フレームの右側部に沿って延びる、すなわち右境界であると判断した場合、変数ｊ＝１を設定し、置換フレームのブロックＭＢ（Ｍ，ｊ）を選択する（１１８、１２０）。ブロックＭＢ（Ｍ，ｊ）は、第Ｍ列および第ｊ行に位置するブロックである。最初はｊが１に等しくなるように設定されるので、選択される第１のブロックは置換フレームの最後の列および第１行のブロックである。
【０１０９】
フレーム置換ユニット５２は、ブロックＭＢ（Ｍ，ｊ）に関連する動きベクトルのｘ成分（ＭＶx）が０に等しいかどうかを判断する（１２２）。ブロックＭＢ（Ｍ，ｊ）に関連する動きベクトルは、幾つかの例では例えば内挿または外挿によって、１つまたは複数の参照フレームに関連する動きベクトルに応じて計算され得る。フレーム置換ユニット５２は、置換フレームのブロックＭＢ（Ｍ，ｊ）に関連する動きベクトルのｘ成分が０に等しくないと判断したとき、置換フレームのブロックＭＢ（Ｍ，ｊ）に関連する動きベクトルのｘ成分が０よりも小さいと判断する（１２４）。フレーム置換ユニット５２は、置換フレームのブロックＭＢ（Ｍ，ｊ）に関連する動きベクトルのｘ成分が０よりも小さいと判断した場合、偽境界修正を実行する（１２６）。偽境界修正は、本開示で詳細に説明するように、画素領域または圧縮領域において実行され得る。
【０１１０】
偽境界修正を実行した後、またはブロックＭＢ（Ｍ，ｊ）に関連する動きベクトルのｘ成分が０よりも大きいとき、フレーム置換ユニット５２は実境界修正を実行する（１２８）。偽境界修正と同様に、実境界修正は本開示で詳細に説明するように画素領域または圧縮領域において実行できる。このようにして、フレーム置換ユニット５２は異なるタイプの境界アーティファクトを修正するために、異なる境界アーティファクト修正技術を実行および使用する。例えば、実境界位置に関連する境界アーティファクトは実境界修正技術の１つを使用して修正され、偽境界位置に関連する境界アーティファクトは偽境界修正技術の１つを使用して修正される。
【０１１１】
実境界修正の後、または上記ブロックに関連する動きベクトルのｘ成分が０に等しいとき、フレーム置換ユニット５２はブロックＭＢ（Ｍ−１，ｊ）に関連する動きベクトルのｘ成分が０に等しいかどうかを判断する（１３０）。ブロックＭＢ（Ｍ−１，ｊ）は、最後から２番目の列および第ｊ行に位置するブロックである。言い換えれば、ブロックＭＢ（Ｍ−１，ｊ）は負の水平方向においてブロックＭＢ（Ｍ，ｊ）にすぐ隣接するブロックである。ブロックＭＢ（Ｍ−１，ｊ）に関連する動きベクトルのｘ成分が０に等しくないとき、フレーム置換ユニット５２は動き補償中に参照フレームからフェッチされるブロックの右側の水平ｘ座標（「ブロックのＸ」）が右境界の左側のｘ座標（「境界のＸ」）よりも大きいかどうかを判断する（１３２）。フレーム置換ユニット５２は、動き補償中に参照フレームからフェッチされるブロックの右側の水平ｘ座標（「ブロックのＸ」）が右境界の左側のｘ座標（「境界のＸ」）よりも大きいと判断した場合、ブロックＭＢ（Ｍ−１，ｊ）に対して偽境界修正を実行する（１３４）。
【０１１２】
ブロックＭＢ（Ｍ−１，ｊ）に関連する動きベクトルのｘ成分が０に等しいとき、動き補償中に参照フレームからフェッチされるブロックの右側の水平ｘ座標（「ブロックのＸ」）が右境界の左側のｘ座標（「境界のＸ」）よりも大きくないとき、または偽境界修正の後、フレーム置換ユニット５２は変数ｊがＮに等しいかどうかを判断する。ここで、Ｎは第１列のブロックの数である（１３６）。ｊがＮに等しくないとき、フレーム置換ユニット５２は変数ｊをインクリメントし（１３８）、ループバックして、上述のようにして次のブロックＭＢ（Ｍ，ｊ）を処理する。フレーム置換ユニット５２は、ｊがＮに等しくなるまで、すなわち処理すべき残りのブロックがなくなるまで、最後の例えば右の列のブロックを処理し続ける。
【０１１３】
図６Ｂを参照すると、ｊがＮに等しいとき、またはブロック（１１６）において境界が右境界でないと判断されたとき、フレーム置換ユニット５２は境界が参照フレームの上部に沿って延びるかどうか、すなわち上部境界であるかどうかを判断する（１４０）。フレーム置換ユニット５２は、参照フレーム中の境界が参照フレームの上部に沿って延びる、すなわち上部境界であると判断した場合、変数ｉ＝１を設定し、置換フレームのブロックＭＢ（ｉ，１）を選択する（１４２、１４４）。ブロックＭＢ（ｉ，１）は、第ｉ列および第１行に位置するブロックである。最初はｉが１に等しくなるように設定されるので、選択される第１のブロックは置換フレームの第１列および第１行のブロックである。
【０１１４】
フレーム置換ユニット５２は、ブロックＭＢ（ｉ，１）に関連する動きベクトルのｙ成分（ＭＶy）が０に等しいかどうかを判断する（１４６）。ブロックＭＢ（ｉ，１）に関連する動きベクトルは、幾つかの例では例えば内挿または外挿によって、１つまたは複数の参照フレームに関連する動きベクトルに応じて計算され得る。フレーム置換ユニット５２は、置換フレームのブロックＭＢ（ｉ，１）に関連する動きベクトルのｙ成分が０に等しくないと判断したとき、置換フレームのブロックＭＢ（ｉ，１）に関連する動きベクトルのｙ成分が０よりも大きいと判断する（１４８）。フレーム置換ユニット５２は、置換フレームのブロックＭＢ（ｉ，１）に関連する動きベクトルのｙ成分が０よりも大きいと判断した場合、偽境界修正を実行する（１５０）。偽境界修正は、本開示で詳細に説明するように、画素領域または圧縮領域において実行され得る。
【０１１５】
偽境界修正を実行した後、またはブロックＭＢ（ｉ，１）に関連する動きベクトルのｙ成分が０よりも小さいとき、フレーム置換ユニット５２は実境界修正を実行する（１５２）。偽境界修正と同様に、実境界修正は本開示で詳細に説明するように、画素領域または圧縮領域において実行され得る。このようにして、フレーム置換ユニット５２は異なるタイプの境界アーティファクトを修正するために、異なる境界アーティファクト修正技術を実行および使用する。例えば、実境界位置に関連する境界アーティファクトは、実境界修正技術の１つを使用して修正され、偽境界位置に関連する境界アーティファクトは、偽境界修正技術の１つを使用して修正される。
【０１１６】
実境界修正の後、または上記ブロックに関連する動きベクトルのｙ成分が０に等しいとき、フレーム置換ユニット５２はブロックＭＢ（ｉ，２）に関連する動きベクトルのｙ成分が０に等しいかどうかを判断する（１５４）。ブロックＭＢ（ｉ，２）は、第ｉ列および第２行に位置するブロックである。言い換えれば、ブロックＭＢ（ｉ，２）は垂直下方向においてブロックＭＢ（ｉ，１）にすぐ隣接するブロックである。ブロックＭＢ（ｉ，２）に関連する動きベクトルのｙ成分が０に等しくないとき、フレーム置換ユニット５２は、動き補償中に参照フレームからフェッチされるブロックの上側の垂直ｙ座標（「ブロックのＹ」）が上部境界の下側のｙ座標（「境界のＹ」）よりも小さいかどうかを判断する（１５６）。フレーム置換ユニット５２は、動き補償中に参照フレームからフェッチされるブロックの上側の垂直ｙ座標（「ブロックのＹ」）が上部境界の下側のｙ座標（「境界のＹ」）よりも小さいと判断した場合、ブロックＭＢ（ｉ，１）に対して偽境界修正を実行する（１５８）。
【０１１７】
ブロックＭＢ（ｉ，２）に関連する動きベクトルのｙ成分が０に等しいとき、動き補償中に参照フレームからフェッチされるブロックの上側の垂直ｙ座標（「ブロックのＹ」）が上部境界の下側のｙ座標（「境界のＹ」）よりも小さくないとき、または偽境界修正の後、フレーム置換ユニット５２は変数ｉがＭに等しいかどうかを判断する。ここで、Ｍは第１行のブロックの数である（１６０）。ｉがＭに等しくないとき、フレーム置換ユニット５２は変数ｊをインクリメントし（１６２）、上述のようにしてブロックＭＢ（ｉ，１）を処理する。フレーム置換ユニット５２は、ｉがＭに等しくなるまで、すなわち処理すべき残りのブロックがなくなるまで、上部の行のブロックを処理し続ける。
【０１１８】
ｉがＭに等しいとき、またはブロック（１４０）において境界が上部境界でないと判断されたとき、フレーム置換ユニット５２は境界が参照フレームの下部に沿って延びるかどうか、すなわち下部境界であるかどうかを判断する（１６３）。フレーム置換ユニット５２は、参照フレーム中の境界が参照フレームの下部に沿って延びる、すなわち下部境界であると判断した場合、変数ｉ＝１を設定し、置換フレームのブロックＭＢ（ｉ，Ｎ）を選択する（１６４、１６５）。ブロックＭＢ（ｉ，Ｎ）は、第ｉ列および第Ｍ行に位置するブロックである。最初はｉが１に等しくなるように設定されるので、選択される第１のブロックは置換フレームの第１列および最後の行のブロックである。
【０１１９】
フレーム置換ユニット５２は、ブロックＭＢ（ｉ，Ｎ）に関連する動きベクトルのｙ成分（ＭＶy）が０に等しいかどうかを判断する（１６６）。ブロックＭＢ（ｉ，Ｎ）に関連する動きベクトルは、幾つかの例では例えば内挿または外挿によって、１つまたは複数の参照フレームに関連する動きベクトルに応じて計算され得る。フレーム置換ユニット５２は、置換フレームのブロックＭＢ（ｉ，Ｎ）に関連する動きベクトルのｙ成分が０に等しくないと判断したとき、置換フレームのブロックＭＢ（ｉ，Ｎ）に関連する動きベクトルのｙ成分が０よりも小さいと判断する（１６８）。フレーム置換ユニット５２は、置換フレームのブロックＭＢ（ｉ，Ｎ）に関連する動きベクトルのｙ成分が０よりも小さいと判断した場合、偽境界修正を実行する（１７０）。偽境界修正は、本開示で詳細に説明するように、画素領域または圧縮領域において実行され得る。
【０１２０】
偽境界修正を実行した後、またはブロックＭＢ（１，Ｎ）に関連する動きベクトルのｙ成分が０よりも大きいとき、フレーム置換ユニット５２は実境界修正を実行する（１７２）。偽境界修正と同様に、実境界修正は本開示で詳細に説明するように画素領域または圧縮領域において実行され得る。このようにして、フレーム置換ユニット５２は異なるタイプの境界アーティファクトを修正するために異なる境界アーティファクト修正技術を使用する。例えば、実境界位置に関連する境界アーティファクトは実境界修正技術の１つを使用して修正され得、偽境界位置に関連する境界アーティファクトは偽境界修正技術の１つを使用して修正される。
【０１２１】
実境界修正の後、または上記ブロックに関連する動きベクトルのｙ成分が０に等しいとき、フレーム置換ユニット５２はブロックＭＢ（ｉ，Ｎ−１）に関連する動きベクトルのｙ成分が０に等しいかどうかを判断する（１７４）。ブロックＭＢ（ｉ，Ｎ−１）は、第ｉ列および最後から２番目の行に位置するブロックである。言い換えれば、ブロックＭＢ（ｉ，Ｎ−１）は負の垂直上方向においてブロックＭＢ（ｉ，Ｎ−１）にすぐ隣接するブロックである。ブロックＭＢ（ｉ，Ｎ−１）に関連する動きベクトルのｙ成分が０に等しくないとき、フレーム置換ユニット５２は動き補償中に参照フレームからフェッチされるブロックの下側の垂直ｙ座標（「ブロックのＹ」）が下部境界の上側のｙ座標（「境界のＹ」）よりも大きいかどうかを判断する（１５６）。フレーム置換ユニット５２は、動き補償中に参照フレームからフェッチされるブロックの下側の垂直ｙ座標（「ブロックのＹ」）が下部境界の上側のｙ座標（「境界のＹ」）よりも大きいと判断した場合、ブロックＭＢ（ｉ，Ｎ）に対して偽境界修正を実行する（１７８）。
【０１２２】
ブロックＭＢ（ｉ，Ｎ−１）に関連する動きベクトルのｙ成分が０に等しいとき、動き補償中に参照フレームからフェッチされるブロックの下側の垂直ｙ座標（「ブロックのＹ」）が下部境界の上側のｙ座標（「境界のＹ」）よりも大きいとき、または偽境界修正の後、フレーム置換ユニット５２は変数ｉがＭに等しいかどうかを判断する。ここで、Ｍは第１行のブロックの数である（１８０）。ｉがＭに等しくないとき、フレーム置換ユニット５２は変数ｉをインクリメントし（１８２）、上述のようにしてブロックＭＢ（ｉ，Ｎ）を処理する。フレーム置換ユニット５２は、ｉがＭに等しくなるまで、すなわち処理すべき残りのブロックがなくなるまで、下部の行のブロックを処理し続ける。
【０１２３】
図７は、画素領域において偽境界置換を実行するフレーム置換ユニット５２の例示的な動作を示す流れ図である。上述のように、偽境界アーティファクト修正は偽境界位置、例えば参照ビデオフレーム内に存在しないが、動き補償内挿により置換フレームまで広がった境界に対応する位置に関連する境界アーティファクトを修正するために実行される。
【０１２４】
境界アーティファクト識別ユニット６８は、最初に置換フレームの画素のブロック内の偽境界位置を識別する（１９０）。上記で詳細に説明したように、境界アーティファクト識別ユニット６８は境界の幅とブロックに関連する動きベクトルの値とを使用して偽境界位置を識別することができる。例えば、左境界の場合、偽境界位置は、start_xから開始し、end_xにおいて終了する、ブロック中の画素の列を含むことができ、ここで、start_xおよびend_xは、以下の式によって定義できる。
【０１２５】
start_x＝Left_B_width＋1                      （１）
end_x＝Left_B_width＋１＋mv_x,                （２）
ここで、Left_B_widthは左境界の境界幅であり、mv_xは画素の当該ブロックに関連する動きベクトルのｘ成分の値である。従って、ブロック中の画素の行の各々は、偽境界位置内のend_x-start_x+1個の画素を含む。偽境界位置内の画素の総数は、(end_x-start_x+1)*v_block_sizeに等しい。ここで、v_block_sizeはブロックの垂直寸法である。
【０１２６】
偽境界修正ユニット７２は、偽境界位置内の画素の画素値の各々を置換画素値と置換する。一態様では、偽境界修正ユニット７２はｘ座標（ｘ）をstart_xに等しくなるように設定し、ｙ座標（ｙ）を１に等しくなるように設定することによって、偽境界位置内の画素値を置換する（１９２）。偽境界修正ユニット７２は、偽境界位置内の画素の置換画素値ｐsub(x,y)を決定する（１９４）。偽境界修正ユニット７２は、例えば以下の式を使用して位置(x,y)にある画素の置換画素値を決定することができる。
【０１２７】
psub(x,y)＝(pref(end_x+1,y)＋pref(end_x+2,y))/2  （３）
ここで、ｐsub(x,y)は置換フレーム内の位置(x,y)にある画素の置換画素値であり、ｐref(end_x+1,y)は参照フレーム中の位置(end_x+1,y)にある画素の画素値であり、ｐref(end_x+2,y)は参照フレーム中の位置(end_x+2,y)における画素位置の画素値である。上述のように、pref(end_x+1,y)およびpref(end_x+2,y)は置換フレーム中で置換され、参照フレーム中の境界にすぐ隣接する画素としての、参照フレームの同じ行に位置する複数の画素の画素値である。言い換えれば、置換画素値は参照フレーム中の境界の後にくる、第１の画素の画素値と第２の画素の画素値、それぞれpref(end_x+1,y)とpref(end_x+2,y)の平均として計算される。偽境界修正ユニット７２は、式（４）および式（５）によって表される技術など、他の技術を使用して位置(x,y)にある画素の置換画素値を決定することができる。
【０１２８】
psub(x,y)＝pref(end_x+1,y)                             （４）
psub(x,y)＝(K1 * pref(end_x+1,y)＋K2 * pref(end_x+2,y))（５）
ここで、K1およびK2は係数である。言い換えれば、式（４）はあらゆる置換画素に対して境界の後の第１の画素の画素値を使用することを表し、式（５）は置換画素値として画素値の重み付け和を使用することを表す。
【０１２９】
偽境界修正ユニット７２は、偽境界位置内の選択された画素の画素値を置換画素値と置換する（１９６）。偽境界修正ユニット７２は、ｘがend_xに等しいかどうかを判断する（１９８）。ｘがend_xに等しくなく、置換する必要がある画素値が現在の行にあることが示されたとき、偽境界修正ユニット７２はｘをインクリメントし（２００）、その行に沿った次の画素の置換画素値を決定する。
【０１３０】
ｘがend_xに等しく、置換する必要がある画素値が偽境界位置のその行に残っていないことが示された場合、偽境界修正ユニット７２は、ｙが垂直寸法のブロックサイズ(v_block_size)に等しいかどうかを判断する（２０２）。ｙが垂直寸法のブロックサイズ(v_block_size)に等しくなく、置換する必要がある画素値が少なくとも１つの他の列にあることが示されたとき、偽境界修正ユニット７２はｙをインクリメントし（２０４）、ｘをstart_xに等しくなるように設定する（２０６）。次いで、偽境界修正ユニット７２は次の行に沿った画素の置換画素値を決定する。ｙがv_block_sizeに等しく、置換する必要がある偽境界位置の画素値が残っていないことが示された場合、偽境界修正ユニット７２は修正された置換フレームの画素値を出力フレームバッファに記憶する（２０８）。
【０１３１】
図８は、画素領域において実境界置換を実行するフレーム置換ユニット５２の例示的な動作を示す流れ図である。上述のように、実境界アーティファクト修正は実境界位置、例えば参照ビデオフレーム内に存在し置換フレーム中にも存在するはずの境界に対応する位置に関連する境界アーティファクトを修正するために実行される。
【０１３２】
境界アーティファクト識別ユニット６８は、置換フレームの画素のブロック内の実境界位置を識別する（２１０）。境界アーティファクト識別ユニット６８は、参照フレーム中の境界の幅を使用して実境界を識別することができる。例えば、参照フレーム内の左境界の場合、境界アーティファクト修正により置換フレーム中のブロックの画素の最左のb_widthの数の列を実境界位置と識別することができる。実境界置換ユニット７０は、変数ｘ＝１および変数ｙ＝１を設定する。ここで、ｘおよびｙはそれぞれｘ方向およびｙ方向の画素の位置座標である（２１２）。
【０１３３】
実境界置換ユニット７０は、実境界位置内の画素の画素値ｐsub(x,y)を参照フレーム内の対応する位置における画素の画素値ｐref(x,y)に等しくなるように設定する（２１４）。実境界修正ユニット７０は、ｘが境界幅(b_width)に等しいかどうかを判断する（２１６）。ｘが境界幅(b_width)に等しくなく、置換する必要がある画素値が実境界位置内にあることが示されたとき、実境界修正ユニット７０はｘをインクリメントする（２１８）。実境界修正ユニット７０は、ｘが境界幅(b_width)に等しくなるまで実境界位置内の画素の行の画素値を参照フレーム内の対応する位置における画素の画素値に等しくなるように設定し続ける。
【０１３４】
ｘが境界幅(b_width)に等しいとき、実境界修正ユニット７０はｙがブロックのブロックサイズ(block_size)に等しいかどうかを判断する（２２０）。ｙがブロックのブロックサイズ(block_size)に等しくなく、置換する必要がある画素の少なくとも１つの行が実境界位置内に残っていることが示された場合、実境界修正ユニット７０はｙをインクリメントし（２２２）、ｘを１に等しくなるように設定する（２２４）。次いで、実境界修正ユニット７０は次の行に沿った画素の置換画素値を決定する。ｙがblock_sizeに等しく、置換する必要がある画素値が実境界位置内に残っていないことが示された場合、実境界修正ユニット７０は、その画素値を出力フレームバッファに記憶する（２２６）。
【０１３５】
図９は、圧縮領域において実境界置換を実行するフレーム置換ユニット５２の例示的な動作を示す流れ図である。境界アーティファクト識別ユニット６８は、最初に置換フレーム内の実境界位置を識別する（２３０）。圧縮領域では、実境界位置は参照フレーム内に存在する境界に対応する少なくとも１つの画素を含むと識別されたブロックとされ得る。例えば、複数の４×４ブロックを含んでいるフレームの左側部に沿って境界があり、その境界が７画素の幅を有すると仮定すると、境界アーティファクト検出モジュール１８は４×４ブロックの最初の２つの列のブロックの各々を実境界位置と識別する。ブロックの画素の一部分のみが実境界位置内にあると判断された画素領域とは異なり、ブロックの画素の一部が参照フレームの境界に実際は対応しない場合でも、当該ブロック全体が実境界位置であると見なされる。上記の例では、４×４ブロックの第２列は参照フレーム中に存在する境界に対応する画素の３つの列のみを含むが、当該ブロック全体が実境界位置であると判断される。
【０１３６】
実境界修正ユニット７０は、実境界アーティファクトのブロックに関連する動きベクトルを０に等しくなるように設定する（２３２）。フレーム置換ユニット５２は、当該ブロックに関連する動きベクトルを使用して、実境界位置と識別されたブロックを生成する（２３４）。アーティファクト修正中、当該ブロックに関連する動きベクトルは０に設定されたので、当該ブロックは参照フレームの対応するブロックのコピーである。
【０１３７】
図１０は、圧縮領域において偽境界置換を実行するフレーム置換ユニット５２の例示的な動作を示す流れ図である。境界アーティファクト識別ユニット６８は、最初に偽境界位置を識別する（２４０）。圧縮領域では、偽境界位置は置換フレーム内には存在するが、例えば、動き補償内挿により参照フレーム中には存在しない、境界に対応する少なくとも１つの画素を含むと識別されたブロックとされ得る。参照フレームが偽境界アーティファクトを含む場合でも、そのフレーム中の実境界に対応する少なくとも幾つかの画素を含むブロックは、偽境界位置と分類されない。これは、実境界アーティファクト修正中に例えばブロックの動きベクトルを０に等しくなるように設定することによって、ブロック中の偽境界アーティファクトが修正されるからである。
【０１３８】
実境界修正ユニット７０は、偽境界位置と識別されたブロックについてイントラ予測モードを選択する（２４２）。フレーム置換ユニット５２は、選択されたイントラ予測モードを使用してイントラ予測を行って偽境界位置と識別されたブロックを生成する（２４４）。偽境界位置と識別されたブロックについて選択されるイントラ予測モードは、境界の位置、例えば境界がフレームの上部に沿っているか、下部に沿っているか、左側部に沿っているか、または右側部に沿っているかに依存することができる。Ｈ．２６４におけるイントラ予測では、予測のために因果的画素（例えば、隣接ブロックの画素）が存在する必要があるので、様々なイントラ予測モードを使用して様々な境界位置を修正することができる。
【０１３９】
例えば、フレームの下部（すなわち、南）または右側部に沿って位置する境界の場合は、因果的ネイバーがそれらの４×４ブロックについて存在するので、イントラ予測を使用することができる。しかしながら、フレームの上部（すなわち、北）および左側部に沿った境界位置の場合は、４×４ブロック因果的ネイバーが黒い境界であり、黒い境界から予測するとその黒いエリアが４×４ブロックに広がる。偽境界位置がフレームの下部または上部に沿っている場合、修正のためにイントラ４×４垂直モードを選択することができる。偽境界位置がフレームの左または右側部に沿っている場合、修正のためにイントラ４×４水平モードを選択することができる。ただし、修正のために他のモードを選択することができる。
【０１４０】
図１１Ａ〜図１１Ｃは、圧縮領域における修正の様々な段階後の置換フレームを示す図である。図１１Ａは、フレーム置換中、例えば動き補償中に生成される境界アーティファクトを含む置換フレームを示す。図１１Ａに示すように、置換フレームの２つのブロックは、他の位置においてよりもそのフレーム内にさらに延びる境界を含む。
【０１４１】
図１１Ｂは、圧縮領域において実境界修正を実行した後の置換フレームを示す。上述のように、実境界修正ユニット７０は実境界位置と識別されたブロックに関連する動きベクトルを０に等しくなるように設定することによって、実境界位置を修正することができる。圧縮領域における実境界修正中に、置換フレーム中のブロックの第１列が参照フレームからコピーされ、その結果、置換フレーム中のブロックの第１列に沿った境界は参照フレーム中のブロックの第１列と同じになる。ただし、図１１Ｂに示すように列２、行４および５のブロック内の偽境界アーティファクトは依然として残る。
【０１４２】
これらの偽境界アーティファクトを修正するために、偽境界修正ユニット７２がそれらのブロックについてイントラ予測モードを選択する。それらのブロックについて選択されたイントラ予測モードを適用した後、それらの偽境界アーティファクトは除去されて図１１Ｃに示す置換フレームが得られ、その置換フレームはその置換フレームが生成された元の参照フレームの境界と実質的に同様の境界を有する。
【０１４３】
本明細書で説明した技術は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。モジュール、ユニット、またはコンポーネントとして説明する特徴は、集積論理デバイスに一緒に、または個別であるが相互運用可能な論理デバイスとして別々に実装され得る。場合によっては、様々な特徴は集積回路チップまたはチップセットなどの集積回路デバイスとして実装され得る。ソフトウェアで実装した場合、本技術は実行されると上記で説明した方法の１つまたは複数をプロセッサに実行させる命令を備えるコンピュータ可読媒体によって少なくとも部分的に実現され得る。
【０１４４】
コンピュータ可読媒体は、パッケージング材料を含むことがあるコンピュータプログラム製品の一部をなすことができる。コンピュータ可読媒体は、ランダムアクセスメモリ（ＲＡＭ）、同期ダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）、読取り専用メモリ（ＲＯＭ）、不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）、電気消去可能プログラマブル読取り専用メモリ（ＥＥＰＲＯＭ）、フラッシュメモリ、磁気または光学データ記憶媒体などのコンピュータデータ記憶媒体を備えることができる。本技術は、追加または代替として、命令またはデータ構造の形態でコードを搬送または伝達し、コンピュータによってアクセス、読取り、および／または実行できるコンピュータ可読通信媒体によって、少なくとも部分的に実現され得る。
【０１４５】
コードまたは命令は、１つまたは複数のＤＳＰ、汎用マイクロプロセッサ、ＡＳＩＣ、フィールドプログラマブル論理アレイ（ＦＰＧＡ）、あるいは他の等価な集積またはディスクリート論理回路など、１つまたは複数のプロセッサによって実行され得る。従って、本明細書で使用する「プロセッサ」という用語は、前述の構造、または本明細書で説明する技術の実装に好適な他の構造のいずれかを指す。さらに、幾つかの態様では、本明細書で説明する機能を専用のソフトウェアモジュールまたはハードウェアモジュールの内部に与えることができる。本開示は、また本開示で説明した技術の１つまたは複数を実装する回路を含む様々な集積回路デバイスのいずれかを企図する。そのような回路は、単一の集積回路チップ、またはいわゆるチップセット中の複数の相互運用可能な集積回路チップで提供できる。そのような集積回路デバイスは様々な適用例において使用され得、適用例の幾つかは携帯電話ハンドセットなどの無線通信デバイスでの使用を含む。
【０１４６】
開示する技術の様々な態様について説明した。これらおよび他の態様は以下の特許請求の範囲内に入る。
【図１】
2011519228.tif 000003
【図２Ａ】
2011519228.tif 000004
【図２Ｂ】
2011519228.tif 000005
【図３Ａ】
2011519228.tif 000006
【図３Ｂ】
2011519228.tif 000007
【図４】
2011519228.tif 000008
【図５】
2011519228.tif 000009
【図６Ａ】
2011519228.tif 000010
【図６Ｂ】
2011519228.tif 000011
【図７】
2011519228.tif 000012
【図８】
2011519228.tif 000013
【図９】
2011519228.tif 000014
【図１０】
2011519228.tif 000015
【図１１Ａ】
2011519228.tif 000016
【図１１Ｂ】
2011519228.tif 000017
【図１１Ｃ】
2011519228.tif 000018
【国際調査報告】
2011519228.tif 000019
2011519228.tif 000020
2011519228.tif 000021