(57)【特許請求の範囲】
【請求項１】
コンピューティングデバイスを使用してビデオ信号を符号化または復号化する方法であって、前記ビデオ信号はビデオシーケンスを形成するフレームを含み、前記フレームは画素からなるブロックを有し、前記方法は、
前記ビデオシーケンスにおける現フレーム内の現ブロックに対するマスクを生成するステップであって、
現フレーム以外の前記ビデオシーケンスにおける少なくとも２つのフレームの画素値間の差である残差を計算するステップと、
前記残差内の個々の画素位置に対する画素値に閾値を適用して、画素を含む閾値残差を生成するステップであって、前記閾値残差内の各画素は、第１の値または前記第１の値とは異なる第２の値のうちの１つを有するものである、前記閾値残差を生成するステップと、
前記閾値残差を修正してマスクを生成するステップであって、第１の値を有する画素からなる閾値残差の第１の領域または第２の値を有する画素からなる閾値残差の第２の領域のうちの少なくとも１つを拡張して、前記第１の値を有する画素位置の第１の連続部分と前記第２の値を有する画素位置の第２の連続部分とを有するマスクを形成することを含み、前記第１の連続部分および前記第２の連続部分は重なり合っておらず、前記第１の連続部分と前記第２の連続部分との間の境界は前記マスクの１つのエッジから他のエッジにまで亘るものである、前記閾値残差を修正してマスクを生成するステップと
を含む、前記現ブロックに対するマスクを生成するステップと、
前記マスクを用いたインター予測によって前記現ブロックを符号化または復号化するステップと
を含み、前記インター予測は、それぞれの動きベクトルを使用して、画素位置の前記第１の連続部分をインター予測することと、画素位置の前記第２の連続部分をインター予測することとを含む、方法。
【請求項２】
前記マスクを生成するステップは、第２のフレーム内の画素値から第１のフレーム内の画素値を減算することによって残差を算出することを含み、前記第１のフレームおよび前記第２のフレームは、ビデオシーケンス内の現フレームの前に位置し、かつ複数のフレームおよび定義された時間分だけ離間されている、請求項１に記載の方法。
【請求項３】
前記マスクを使用して、前記現ブロックの画素位置の前記第１の連続部分内の画素値に関して参照フレーム内で第１の動き検索を実行するステップと、
前記マスクを使用して、前記現ブロックの画素位置の前記第２の連続部分内の画素値に関して前記参照フレーム内で第２の動き検索を実行するステップと、
前記マスクを使用して、前記第１の動き検索の結果と前記第２の動き検索の結果とを合成して予測ブロックを生成するステップと
をさらに含む、請求項１または２に記載の方法。
【請求項４】
前記閾値の適用は、
前記残差内の個々の画素位置の画素値を前記閾値と比較するステップと、
前記画素値が前記閾値よりも小さい場合、前記第１の値を前記閾値残差内の同じ画素位置に割り当てるステップと、
前記画素値が前記閾値よりも大きい場合、前記第２の値を前記閾値残差内の同じ画素位置に割り当てるステップと
を含む、請求項１乃至３のいずれか１項に記載の方法。
【請求項５】
前記閾値残差の修正は、
領域に隣接する画素の値に基づいて、前記第１の値を有する最小数の連続画素によって定義される領域を拡張する成長関数を適用するステップと、
前記第２の値を有する画素によって包囲された前記第１の値を有する最大数の連続画素によって定義される領域を除去するシュリンク関数を適用するステップと
のうちの少なくとも一方を含む、請求項１乃至４のいずれか１項に記載の方法。
【請求項６】
前記少なくとも２つのフレームは第１のフレームと第２のフレームとを含み、前記方法は、前記第２のフレーム内の画素の画素値を、前記第１のフレーム内の同配置された画素の画素値から減算することによって前記残差を算出するステップをさらに含み、前記現ブロックを符号化または復号化する前に、前記マスクの境界は動きベクトルによってシフトされる、請求項１乃至５のいずれか１項に記載の方法。
【請求項７】
前記マスクを回転させるステップと、
回転された前記マスクを使用して参照フレーム内で第１の動き検索を実行するステップと、
回転された前記マスクを使用して前記参照フレーム内で第２の動き検索を実行するステップと、
前記マスクを使用して前記第１の動き検索によって見つけ出されたブロックと前記第２の動き検索によって見つけ出されたブロックとを合成して前記現ブロックを符号化するための予測ブロックを生成するステップと
をさらに含む、請求項１乃至６のいずれか１項に記載の方法。
【請求項８】
前記方法は、
第１の動きベクトルと、第２の動きベクトルと、前記現ブロックを符号化するためにマスクモードが使用されたことを示すインジケータとを含む符号化されたビットストリームを受信するステップと、
前記マスクを生成した後、
前記第１の動きベクトルから結果として生じる第１の参照ブロックに前記マスクを適用して第１のマスクされた参照ブロックを生成するステップと、
前記第２の動きベクトルから結果として生じる第２の参照ブロックに前記マスクを適用して第２のマスクされた参照ブロックを生成するステップと、
前記第１のマスクされた参照ブロックと前記第２のマスクされた参照ブロックとを合成して予測ブロックを生成するステップと
をさらに含み、前記マスクを用いたインター予測による前記現ブロックの復号化は、前記予測ブロックを使用して前記現ブロックを復号化することを含む、請求項１乃至７のいずれか１項に記載の方法。
【請求項９】
ビデオ信号を符号化または復号化する装置であって、前記ビデオ信号はビデオシーケンスを形成するフレームを含み、前記フレームはブロックを有し、前記ブロックは画素から形成され、
前記装置は、
現フレーム以外の前記ビデオシーケンスにおける少なくとも２つのフレームの画素値間の差である残差を計算すること、
前記残差内の個々の画素位置に対する画素値に閾値を適用して画素を含む閾値残差を生成することであって、前記閾値残差内の各画素は、第１の値または前記第１の値とは異なる第２の値のうちの１つを有する、前記閾値残差を生成すること、
前記第１の値を有する画素からなる閾値残差の第１の領域または前記第２の値を有する画素からなる閾値残差の第２の領域のうちの少なくとも１つを拡張して、前記第１の値を有する画素位置の第１の連続部分と前記第２の値を有する画素位置の第２の連続部分とを有するマスクを生成すること
によって、前記ビデオシーケンスにおける現フレーム内の現ブロックに対するマスクを生成するように構成され、前記第１の連続部分および前記第２の連続部分は重なり合っておらず、前記第１の連続部分と前記第２の連続部分との間の境界は前記マスクの１つのエッジから他のエッジにまで亘っており、
前記装置はまた、前記マスクを用いたインター予測によって前記現ブロックを符号化または復号するように構成され、前記インター予測は、それぞれの動きベクトルを使用して、画素位置の前記第１の連続部分をインター予測することと、画素位置の前記第２の連続部分をインター予測することとを含む、装置。
【請求項１０】
前記装置は、
前記ビデオシーケンスにおける第１のフレーム内の画素値と第２のフレーム内の画素値との差として残差を計算することと、
前記残差内の個々の画素位置の画素値を閾値と比較することと、
前記画素値が前記閾値よりも小さい場合、閾値残差内の同じ画素位置に前記第１の値を割り当てることと、
前記画素値が前記閾値よりも大きい場合、前記閾値残差内の同じ画素位置に前記第２の値を割り当てることと
によって前記マスクを生成するようにさらに構成されている、請求項９に記載の装置。
【請求項１１】
前記装置は、
前記マスクを使用する前に、前記第１の連続部分と前記第２の連続部分との間の境界に関する画素の値を修正することによって前記マスクを修正し、かつ、
画素位置の前記第１の連続部分と一致する画素位置の前記第１の連続部分に関連する第１の動きベクトルから結果として生じる第１のブロックの画素と、画素位置の前記第２の連続部分と一致する画素位置の前記第２の連続部分に関連する第２の動きベクトルから結果として生じる第２のブロックの画素と、前記第１の連続部分と前記第２の連続部分の間の境界に関する画素と一致する前記第１のブロックおよび前記第２のブロックの画素の合成された値とを含む予測ブロックを生成する
ようにさらに構成されている、請求項１０に記載の装置。
【請求項１２】
前記装置は、前記現ブロックがマスクを使用して符号化されたことを示す、前記現フレームの前記現ブロックに関連する符号化されたビットストリーム内の第１の信号を読み出すようにさらに構成され、ここで、前記マスクの生成は、前記ビデオシーケンスにおける第１のフレームの画素値と第２のフレームの画素値との間の差である残差を使用して前記マスクを生成することを含み、
前記装置はまた、
第１の動きベクトルを使用して参照フレーム内に第１の予測ブロックを生成し、
第２の動きベクトルを使用して参照フレーム内に第２の予測ブロックを生成し、
前記マスクを使用して前記第１の予測ブロックと前記第２の予測ブロックとを合成して、前記現ブロックの合成された予測ブロックを生成し、かつ、
前記合成された予測ブロックを使用して現ブロックを復号することによって現ブロックを復号する
ようにさらに構成されている、請求項１０または請求項１１に記載の装置。
【請求項１３】
前記装置は、
前記現ブロックに関連する符号化されたビットストリーム内の前記第１のフレームおよび前記第２のフレームを示す第２の信号を少なくとも読み出し、
符号化されたビットストリームから前記第１の動きベクトルを示す第３の信号を読み出し、かつ、
符号化されたビットストリームから前記第２の動きベクトルを示す第４の信号を読み出す
ようにさらに構成されている、請求項１２に記載の装置。
【請求項１４】
ビデオ信号の現ブロックを符号化または復号するためのマスクを生成する装置であって、前記ビデオ信号はビデオシーケンスを形成するフレームを含み、前記フレームは画素からなるブロックを有し、
前記装置は、第２のフレーム内の画素値から第１のフレーム内の画素値を減算することによって残差を計算するように構成され、前記第１のフレームおよび前記第２のフレームの各々は前記ビデオシーケンス内の現フレームの前に配置されており、
前記装置はまた、前記残差内の個々の画素位置に対する画素値に閾値を適用して画素を含む閾値残差を生成するように構成され、前記閾値残差内の各画素は、第１の値または前記第１の値とは異なる第２の値のうちの１つを有し、
前記装置はまた、第１の値を有する画素からなる閾値残差の第１の領域または第２の値を有する画素からなる閾値残差の第２の領域のうちの少なくとも１つを拡張して、前記第１の値を有する画素位置の第１の連続部分と前記第２の値を有する画素位置の第２の連続部分とを有するマスクを形成するように構成され、前記第１の連続部分と前記第２の連続部分とは重なり合っておらず、前記第１の連続部分と前記第２の連続部分との間の境界は前記マスクの１つのエッジから他のエッジにまで亘っており、前記マスクは前記現ブロックと同じ画素次元を有する、装置。
【請求項１５】
前記装置は、前記境界に関する画素にぼかしを適用するようにさらに構成され、前記ぼかしは、前記第１の値と前記第２の値との間の値を有する画素の領域を形成する、請求項１４に記載の装置。
【請求項１６】
前記装置は、前記第１の領域または前記第２の領域のうちの少なくとも１つを拡張した後、前記第２の値を有する画素によって包囲された前記第１の値を有する最大数の連続画素によって形成された領域を除去するためにシュリンク関数を適用して前記マスクを形成するようにさらに構成されている、請求項１４または請求項１５に記載の装置。
【請求項１７】
前記装置は、
前記残差内の個々の画素位置の画素値を前記閾値と比較することと、
前記画素値が前記閾値よりも小さい場合、前記第１の値を前記閾値残差内の同じ画素位置に割り当てることと、
前記画素値が前記閾値よりも大きい場合、前記第２の値を前記閾値残差内の同じ画素位置に割り当てることと
によって前記閾値を適用するようにさらに構成されている、請求項１４乃至１６のいずれか１項に記載の装置。
【請求項１８】
請求項１乃至８のいずれか１項に記載の方法を実行するように構成された装置。
【請求項１９】
プロセッサと、命令を格納した非一時的メモリとを備え、前記命令は、前記プロセッサに請求項１乃至８のいずれか１項に記載の方法を実行させるかあるいは請求項９乃至１７のいずれか１項に記載の装置を実行に移させる、請求項１８に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般に、前フレーム残差を使用する動きベクトル予測を用いてビデオストリームデータなどのビジュアルデータを符号化および復号化することに関する。
【背景技術】
【０００２】
デジタルビデオストリームは、典型的には、一連のフレームまたは静止画像を使用して映像を表現する。各フレームは、色、輝度、または画素の他の属性の値を記述する情報を含み得る多数のブロックを含む。ビデオストリーム内のデータ量は大きく、ビデオの送信および記憶は、かなりのコンピューティングリソースまたは通信リソースを使用する。ビデオデータに含まれる大量のデータにより、送信および記憶のために高性能圧縮が必要とされる。これは、多くの場合、動きベクトルを用いたインター予測を含む。
【発明の概要】
【０００３】
本開示は、一般に、前フレーム残差を使用する動きベクトル予測を用いてビデオストリームデータなどのビジュアルデータを符号化および復号化することに関する。
本開示の一態様によるビデオ信号を符号化または復号化する方法は、現フレーム（ｃｕｒｒｅｎｔ  ｆｒａｍｅ）以外の少なくとも２つのフレームの画素値間の差である残差から現フレーム内の現ブロック（ｃｕｒｒｅｎｔ  ｂｌｏｃｋ）に対するマスクを生成するステップと、マスクを用いたインター予測によって現ブロックを符号化または復号化するステップとを含む。ビデオ信号は、ビデオシーケンスを形成するフレームを含み、フレームは画素からなるブロックを有する。
【０００４】
本明細書に記載の装置の一態様は、ビデオ信号を符号化または復号化する装置であり、ビデオ信号は、ビデオシーケンスを形成するフレームを含み、フレームは、画素からなるブロックを有する。装置は、プロセッサと、命令を格納しかつ含む非一時メモリとを備え、命令は、プロセッサに、現フレーム以外の少なくとも２つのフレームの画素値間の差である残差からビデオシーケンスにおける現フレーム内の現ブロックに対するマスクを生成するステップと、マスクを用いたインター予測によって現ブロックを符号化または復号化するステップとを含む方法を行わせる。
【０００５】
本明細書に記載の装置の別の態様は、ビデオ信号の現ブロックを符号化または復号化するためのマスクを生成する装置であり、ビデオ信号は、ビデオシーケンスを形成するフレームを含み、フレームはブロックを有し、ブロックは画素から形成される。装置は、プロセッサと、命令を格納しかつ含む非一時メモリとを備え、命令は、プロセッサに、第２のフレーム内の画素値から第１のフレーム内の画素値を減算することにより残差を算出するステップであって、第１のフレームおよび第２のフレームの各々はビデオシーケンス内の現フレームの前に位置する、残差を算出するステップと、残差内の個々の画素位置に対する画素値に閾値を適用して、画素を含む閾値残差を生成するステップであって、閾値残差内の各画素は、第１の値または第１の値とは異なる第２の値のうちの１つを有する、閾値残差を生成するステップと、第１の値を有する画素を含む閾値残差の第１の領域または第２の値を有する画素を含む閾値残差の第２の領域のうちの少なくとも１つを拡張して、第１の値を有する画素位置の第１の連続部分または第２の値を有する画素位置の第２の連続部分を有するマスクを形成するステップであって、第１の連続部分と第２の連続部分との間の境界は、マスクの２つのエッジの間に延在し、マスクは、現ブロックと同じ画素次元（ｐｉｘｅｌ  ｄｉｍｅｎｓｉｏｎｓ）を有する、マスクを形成するステップとを含む方法を行わせる。
【０００６】
本開示のこれらおよび他の態様は、以下の詳細な説明、添付の特許請求の範囲および添付の図面においてさらに詳細に記載される。
本明細書の記載は、以下に記載される添付の図面を参照し、いくつかの図面に亘って同様の参照番号が同様の構成を参照している。
【図面の簡単な説明】
【０００７】
【図１】図１は、ビデオ符号化および復号化システムの概略図である。
【図２】図２は、送信局または受信局を具体化することができるコンピューティングデバイスの一例のブロック図である。
【図３】図３は、符号化され、続いて復号化されるビデオストリームの図である。
【図４】図４は、本明細書の教示の一態様によるビデオ圧縮システムのブロック図である。
【図５】図５は、本明細書の教示の別の態様によるビデオ圧縮解除システムのブロック図である。
【図６】図６は、本開示の一実施形態による前のフレーム残差を用いた動きベクトル予測によってブロックを符号化または復号化する処理のフローチャート図である。
【図７】図７は、本開示の一実施形態による前フレーム残差を用いてマスクを生成する処理のフローチャート図である。
【図８】図８Ａ〜図８Ｃは、図７の処理を説明するための図である。
【発明を実施するための形態】
【０００８】
ビデオストリームは、ビデオストリームを送信または格納するのに必要な帯域幅を低減するために、様々な技術によって圧縮され得る。ビデオストリームは、圧縮を含むビットストリームに符号化され、その後、復号化器に送信され、復号化器はビデオストリームを復号化または圧縮解除して、視聴または後処理するために準備する。ビデオストリームの符号化は、ビデオ品質とビットストリームサイズとの間のトレードオフを行うパラメータを含むことができ、復号化されたビデオストリームの知覚される品質を高めるようにすると、ビットストリームを送信または格納するのに必要なビット数が増加する。
【０００９】
優れた圧縮性能を達成する１つの技法は、空間的補償予測および／または動き補償予測によってビデオ信号の空間的および時間的相関を利用する。インター予測は、例えば、動きベクトルを使用して、符号化されるべき現ブロックに似ている、以前に符号化され復号化されたブロックを識別する。動きベクトルおよび２つのブロック間の差を符号化することによって、復号化器は現ブロックを再作成することができる。しかしながら、オブジェクトは画像内の正規ブロック境界（ｒｅｇｕｌａｒ  ｂｌｏｃｋ  ｂｏｕｎｄａｒｉｅｓ）にはほとんど収まらない。これは、符号化の効率につながる。
【００１０】
対照的に、本明細書の教示は、オブジェクトをフレーム内によりよくマッチングするように（例えば、正方形の）ブロックを必要としないインター予測子（ｉｎｔｅｒ−ｐｒｅｄｉｃｔｏｒ）の生成および使用を説明する。これは、先行フレームの残差を使用して２つの異なる動きベクトルがブロックに適用されることを可能にするブロックに関する断崖マスク（ｃｌｉｆｆ  ｍａｓｋ）を作成することによって実施することができる。さらなる詳細は、本明細書の教示が使用され得る環境の最初の説明の後に記載される。
【００１１】
図１は、ビデオ符号化及び復号化システム１００の概略図である。送信局１０２は、例えば、図２に記載されているようなハードウェアの内部構成を有するコンピュータとすることができる。しかしながら、送信局１０２の他の適切な実施形態も可能である。例えば、送信局１０２の処理を複数の装置に分散させることができる。
【００１２】
ネットワーク１０４は、ビデオストリームの符号化および復号化のために、送信局１０２および受信局１０６を接続することができる。具体的には、ビデオストリームを送信局１０２で符号化することができ、符号化されたビデオストリームを受信局１０６で復号化することができる。ネットワーク１０４は、例えばインターネットであってもよい。ネットワーク１０４は、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、仮想プライベートネットワーク（ＶＰＮ）、携帯電話ネットワーク、または送信局１０２から、この例では、受信局１０６にビデオストリームを転送する任意の他の手段とすることができる。
【００１３】
受信局１０６は、一例では、図２に記載されたようなハードウェアの内部構成を有するコンピュータとすることができる。しかしながら、受信局１０６の他の適切な実施形態も可能である。例えば、受信局１０６の処理を複数の装置に分散させることができる。
【００１４】
ビデオ符号化および復号化システム１００の他の実施形態も可能である。例えば、実施形態はネットワーク１０４を省略することができる。別の実施形態では、ビデオストリームを符号化し、後で受信局１０６またはメモリを有する任意の他の装置に送信するために格納することができる。一実施形態では、受信局１０６は、符号化されたビデオストリームを（例えば、ネットワーク１０４、コンピュータバス、および／または何らかの通信経路を介して）受信し、後の復号化のためにビデオストリームを記憶する。一実施形態では、ネットワーク１０４を介して符号化されたビデオを伝送するためにリアルタイム転送プロトコル（ＲＴＰ：ｒｅａｌ−ｔｉｍｅ  ｔｒａｎｓｐｏｒｔ  ｐｒｏｔｏｃｏｌ）が使用される。別の実施形態では、ハイパーテキスト転送プロトコル（ＨＴＴＰ：Ｈｙｐｅｒｔｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）などのＲＴＰ以外の転送プロトコルが使用されてもよい。別の実施形態では、ハイパーテキスト転送プロトコル（ＨＴＴＰ）ベースのビデオストリーミングプロトコル等のＲＴＰ以外の転送プロトコルが使用されてもよい。
【００１５】
ビデオ会議システムで使用される場合、例えば、送信局１０２および／または受信局１０６は、以下に説明するように、ビデオストリームを符号化および復号化する能力を含むことができる。例えば、受信局１０６は、ビデオ会議サーバ（例えば、送信局１０２）から符号化されたビデオビットストリームを受信して復号化および視聴し、さらにそのビデオビットストリームを他の参加者による復号化および視聴のために符号化してビデオ会議サーバに送信するビデオ会議参加者とし得る。
【００１６】
図２は、送信局または受信局を実施することができるコンピューティングデバイス２００の一例のブロック図である。例えば、コンピューティングデバイス２００は、図１の送信局１０２および受信局１０６の一方または両方を実施することができる。コンピューティングデバイス２００は、複数のコンピューティングデバイスを含むコンピューティングシステムの形態、または例えば、携帯電話、タブレットコンピュータ、ラップトップコンピュータ、ノートブックコンピュータ、デスクトップコンピュータなどの単一のコンピューティングデバイスの形態とすることができる。
【００１７】
コンピューティングデバイス２００内のＣＰＵ２０２は、中央処理装置とすることができる。代替的に、ＣＰＵ２０２は、現在存在するか、または今後開発される情報を操作または処理することができる任意の他のタイプのデバイスまたは複数のデバイスであってもよい。開示された実施態様は、図示のような単一のプロセッサ、例えばＣＰＵ２０２で実施することができるが、複数のプロセッサを使用して速度と効率の利点を達成することができる。
【００１８】
コンピューティングデバイス２００内のメモリ２０４は、実施形態では読み出し専用メモリ（ＲＯＭ）デバイスまたはランダムアクセスメモリ（ＲＡＭ）デバイスであってもよい。任意の他の適切なタイプの記憶装置をメモリ２０４として使用することができる。メモリ２０４は、ＣＰＵ２０２がバス２１２を使用してアクセスするコードおよびデータ２０６を含むことができる。メモリ２０４は、オペレーティングシステム２０８およびアプリケーションプログラム２１０をさらに含むことができ、アプリケーションプログラム２１０は、本明細書に記載された方法をＣＰＵ２０２が実行するのを可能にする少なくとも１つのプログラムを含む。例えば、アプリケーションプログラム２１０は、アプリケーション１〜Ｎを含むことができ、アプリケーション１〜Ｎは、本明細書で説明する方法を実行するビデオ符号化アプリケーションをさらに含む。コンピューティングデバイス２００はまた、例えば、モバイルコンピューティングデバイスと共に使用されるメモリカードとすることができる二次ストレージ２１４を含むことができる。ビデオ通信セッションは、かなりの量の情報を含み得るので、それらは、二次ストレージ２１４に全体的または部分的に記憶され、処理のために必要に応じてメモリ２０４にロードされる。
【００１９】
コンピューティングデバイス２００は、ディスプレイ２１８などの１つまたは複数の出力デバイスを含むこともできる。ディスプレイ２１８は、一例では、ディスプレイを、タッチ入力を感知するように動作可能なタッチセンシティブエレメントと組み合わせたタッチセンシティブディスプレイであってもよい。ディスプレイ２１８は、バス２１２を介してＣＰＵ２０２に接続することができる。ユーザがコンピューティングデバイス２００をプログラムするかまたは他の方法で使用することを可能にする他の出力デバイスが、ディスプレイ２１８に加えて、またはディスプレイ２１８に代えて設けられてもよい。出力デバイスがディスプレイであるか、またはディスプレイを含む場合、ディスプレイは、液晶ディスプレイ（ＬＣＤ）、陰極線管（ＣＲＴ）ディスプレイ、または有機ＬＥＤ（ＯＬＥＤ）などの発光ダイオード（ＬＥＤ）ディスプレイを含む様々な方法で実施することができる。
【００２０】
コンピューティングデバイス２００は、コンピューティングデバイス２２０を操作するユーザの画像等の画像を検出することができる、例えば、カメラなどの撮像デバイス２２０、または現在または将来開発される任意の他の撮像デバイス２２０を含か、または撮像デバイス２２０と通信することができる。撮像デバイス２２０は、コンピューティングデバイス２００を操作するユーザの方に向けられるように配置することができる。一例では、撮像デバイス２２０の位置および光軸は、視野が、ディスプレイ２１８に直接隣接する領域であって、その領域からディスプレイ２１８が視認可能な領域を含むように構成することができる。
【００２１】
コンピューティングデバイス２００は、コンピューティングデバイス２００の近くの音を感知することができる、例えば、マイクロホンなどの音声感知デバイス２２２、または現在または今後開発される任意の他の音声感知デバイスを含むか、または音声感知デバイス２２２と通信することができる。音声感知デバイス２２２は、コンピューティングデバイス２００を操作するユーザの方に向けられ、かつユーザがコンピューティングデバイス２００を操作している間にユーザによって発せられた例えば音声、他の発話を受信するように構成することができる。
【００２２】
図２は、コンピューティングデバイス２００のＣＰＵ２０２およびメモリ２０４が単一のユニットに統合されていることを示しているが、他の構成を利用することもできる。ＣＰＵ２０２の動作は、直接的にまたはローカルエリアネットワークまたは他のネットワークを介して接続することができる複数のマシン（各マシンは１つまたは複数のプロセッサを有する）にわたって分散させることができる。メモリ２０４は、ネットワークベースのメモリのような複数のマシンに分散するか、またはコンピューティングデバイス２００の動作を実行する複数のマシンにおけるメモリとすることができる。本明細書では単一のバスとして示されているが、コンピューティングデバイス２００のバス２１２は、複数のバスから構成することができる。さらに、二次ストレージ２１４は、コンピューティングデバイス２００の他の構成要素に直接接続されるか、またはネットワークを介してアクセスされ、かつメモリカードなどの単一の統合されたユニットまたは複数のメモリカードなどの複数のユニットを含むことができる。従って、コンピューティングデバイス２００は、多種多様な構成で実施することができる。
【００２３】
図３は、符号化され、続いて復号化されるビデオストリーム３００の一例の図である。ビデオストリーム３００は、ビデオシーケンス３０２を含む。次のステージでは、ビデオシーケンス３０２はいくつかの隣接フレーム３０４を含む。３つのフレームが隣接フレーム３０４として示されているが、ビデオシーケンス３０２は任意の数の隣接フレーム３０４を含むことができる。隣接フレーム３０４はさらに、個々のフレーム、例えばフレーム３０６に細分することができる。次のステージでは、フレーム３０６は、一連のプレーンまたはセグメント３０８に分割することができる。セグメント３０８は、例えば、並列処理を可能にするフレームのサブセットとすることができる。セグメント３０８は、ビデオデータを別々の色に分離することができるフレームのサブセットとすることができる。例えば、カラービデオデータのフレーム３０６は、輝度平面および２つの色度平面を含むことができる。セグメント３０８は、異なる解像度でサンプリングすることができる。
【００２４】
フレーム３０６がセグメント３０８に分割されているか否かにかかわらず、フレーム３０６は、さらに、ブロック３１０に細分され、ブロック３１０は、フレーム３０６内の例えば１６×１６画素に対応するデータを含むことができる。ブロック３１０は、画素データの１つまたは複数のプレーンからのデータを含むように配列することができる。ブロック３１０は、４ｘ４画素、８ｘ８画素、１６ｘ８画素、８ｘ１６画素、１６ｘ１６画素またはそれ以上の大きさ等の任意の他の適切なサイズであってもよい。特記しない限り、ブロックおよびマクロブロックという用語は、本明細書では互換的に使用される。フレーム３０６は、以下により詳細に説明するように、本明細書の教示に従って区画されてもよい。
【００２５】
図４は、実施形態による符号化器４００のブロック図である。符号化器４００は、例えばメモリ２０４などのメモリに格納されたコンピュータソフトウェアプログラムを提供するなどして、上述のように送信局１０内で実施することができる。コンピュータソフトウェアプログラムは、ＣＰＵ２０２等のプロセッサよる実行時に、送信局１０２に図４で説明した方法でビデオデータを符号化させる機械命令を含むことができる。符号化器４００は、例えば、送信局１０２に含まれる専用のハードウェアとして実施することもできる。符号化器４００は、ビデオストリーム３００を入力として使用してフォワードパス（実線の接続線で示す）において様々な機能を実行して、符号化または圧縮されたビットストリーム４２０を生成するイントラ予測／インター予測ステージ４０２、変換ステージ４０４、量子化ステージ４０６、およびエントロピー符号化ステージ４０８を有する。符号化器４００は、将来のブロックの符号化のためのフレームを再構成する再構成パス（点線の接続線で示す）をも含む。図４において、符号化器４００は、再構成パスにおいて様々な機能を実行する逆量子化ステージ４１０、逆変換ステージ４１２、再構成ステージ４１４、およびループフィルタリングステージ４１６を有する。符号化器４００の他の構成的な変形例を使用してビデオストリーム３００を符号化することができる。
【００２６】
ビデオストリーム３００が符号化のために提示されると、フレーム３０６はブロックの単位で処理される。イントラ予測／インター予測ステージ４０２において、ブロックは、イントラフレーム予測（イントラ予測とも称する）またはインターフレーム予測（ここではインター予測またはインター−予測とも呼ばれる）を用いて符号化することができる。いずれの場合でも、予測ブロックを形成することができる。イントラ予測の場合、予測ブロックが、以前に符号化され、かつ再構成された現フレーム内のサンプルから形成され得る。インター予測の場合、予測ブロックは、以下により詳細に説明するように、１つまたは複数の以前に構築された参照フレーム内のサンプルから形成され得る。
【００２７】
次に、引き続き図４を参照して、イントラ予測／インター予測ステージ４０２において予測ブロックが現ブロックから減算され、残差ブロック（残差とも呼ばれる）が生成される。変換ステージ４０４は、ブロックベースの変換を使用して、残差を、例えば周波数領域の変換係数に変換する。このようなブロックベースの変換には、例えば、離散コサイン変換（ＤＣＴ：Ｄｉｓｃｒｅｔｅ  Ｃｏｓｉｎｅ  Ｔｒａｎｓｆｏｒｍ）および非対称離散サイン変換（ＡＤＳＴ：Ａｓｙｍｍｅｔｒｉｃ  Ｄｉｓｃｒｅｔｅ  Ｓｉｎｅ  Ｔｒａｎｓｆｏｒｍ）が含まれる。他のブロックベースの変換も可能である。さらに、異なる変換の組み合わせを単一の残差に適用することができる。変換の適用の一例では、ＤＣＴは残差ブロックを周波数係数に変換し、ここで、変換係数値は空間周波数に基づいている。行列の左上の最低周波数（ＤＣ）係数、および行列の右下の最高周波数係数。予測ブロックのサイズ、したがって結果の残差ブロックは、変換ブロックのサイズと異なる可能性があることは注目に値する。例えば、予測ブロックは、別々の変換が適用されるより小さいブロックに分割されてもよい。
【００２８】
量子化ステージ４０６は、変換係数を量子化値または量子化レベルを使用して量子化変換係数と呼ばれる離散量子値に変換する。例えば、変換係数は、量子化値で除算され、切り捨てられてもよい。次に、量子化された変換係数は、エントロピー符号化ステージ４０８によってエントロピー符号化される。エントロピー符号化は、トークンおよびバイナリツリーを含む任意の数の技術を使用して実行されてもよい。例えば、使用される予測のタイプ、変換タイプ、動きベクトルおよび量子化値を含み得る、ブロックを復号化するために使用される他の情報とともに、エントロピー符号化された係数は、圧縮されたビットストリーム４２０に出力される。圧縮されたビットストリーム４２０は、符号化されたビデオストリームまたは符号化されたビデオビットストリームとも呼ばれ、これらの用語は本明細書では互換的に使用される。
【００２９】
符号化器４００および復号化器５００（以下に説明する）の両方が、圧縮されたビットストリーム４２０を復号化するために同じ参照フレームを使用することを確実にするために、図４における再構成パス（点線の接続線で示す）が使用される。再構成パスは、逆量子化ステージ４１０で量子化された変換係数を逆量子化すること、および逆変換ステージ４１２で逆量子化された変換係数を逆変換して微分残差ブロック（微分残差）を生成することを含む以下により詳細に説明される復号化プロセス中に行われる機能と同様の機能を実行する。再構成ステージ４１４において、イントラ予測／インター予測ステージ４０２で予測された予測ブロックを微分残差に加えて、再構成されたブロックが作成される。ブロック化アーチファクトなどの歪みを低減するために、ループフィルタリングステージ４１６が再構成されたブロックに適用される。
【００３０】
符号化器４００の他の変形例を使用して圧縮されたビットストリーム４２０を符号化することができる。例えば、非変換ベースの符号化器４００は、あるブロックまたはフレームに関して変換ステージ４０４を使用せずに残差信号を直接量子化することができる。別の実施形態では、符号化器４００は、量子化ステージ４０６と逆量子化ステージ４１０とを組み合わせて単一のステージにすることができる。
【００３１】
図５は、別の実施形態による復号化器５００のブロック図である。復号化器５００は、例えば、メモリ２０４に格納されたコンピュータソフトウェアプログラムを提供することによって、受信局１０６で実施することができる。コンピュータソフトウェアプログラムは、ＣＰＵ２０２などのプロセッサによる実行時に、受信局１０６に、図５において説明した方法でビデオデータを復号化させる機械命令を含む。復号化器５００は、例えば、送信局１０２または受信局１０６に含まれるハードウェアで実施することもできる。
【００３２】
復号化器５００は、上述の符号化器４００の再構成パスと同様に、一例では、様々な機能を実行して圧縮されたビットストリーム４２０から出力ビデオストリーム５１６を生成するためのエントロピー復号化ステージ５０２、逆量子化ステージ５０４、逆変換ステージ５０６、イントラ予測／インター予測ステージ５０８、再構成ステージ５１０、ループフィルタリングステージ５１２、およびデブロッキングフィルタリングステージ５１４を含む。圧縮されたビットストリーム４２０を復号化するために復号化器５００の他の構造的な変形例を使用することができる。
【００３３】
圧縮されたビットストリーム４２０が復号化のために提示されると、圧縮されたビットストリーム４２０内のデータ要素が、エントロピー復号化ステージ５０２によって復号化されて、一組の量子化変換係数が生成される。逆量子化ステージ５０４は、（例えば、量子化された変換係数に量子化値を乗算することにより）量子化された変換係数を逆量子化し、逆変換ステージ５０６は、選択された変換タイプを使用して逆量子化された変換係数を逆変換して、符号化器４００における逆変換ステージ４１２によって生成されたものと同一である微分残差を生成する。圧縮されたビットストリーム４２０から復号化されたヘッダ情報を使用して、復号化器５００は、イントラ予測／インター予測ステージ５０８を用いて、例えばイントラ予測／インター予測ステージ４０２において符号化器４００で生成されたのと同じ予測ブロックを作成する。再構成ステージ５１０において、予測ブロックを微分残差に加えて再構成ブロックが作成される。ループフィルタリングステージ５１２は、ブロッキングアーチファクトを低減するために再構成されたブロックに適用される。再構成されたブロックに他のフィルタリングを適用することができる。この例では、ブロッキング歪を低減するためにデブロッキングフィルタリングステージ５１４が再構成ブロックに適用され、その結果が出力ビデオストリーム５１６として出力される。出力ビデオストリーム５１６は、復号化されたビデオストリームとも呼ばれ、用語は本明細書では互換的に使用される。
【００３４】
復号化器５００の他の変形例を使用して、圧縮されたビットストリーム４２０を復号化することができる。例えば、復号化器５００は、デブロッキングフィルタリングステージ５１４を使用せずに出力ビデオストリーム５１６を生成することができる。
【００３５】
上記で簡潔に説明したように、ブロックは、前のフレーム残差を使用した動きベクトル予測によって符号化または復号化されてもよい。一般的に、２つのフレーム（例えば、現フレームの前の最後の２つのフレーム）の画素間で算出された残差からブロックのマスクが生成され、その後、そのマスクを使用したインター予測によってブロックが符号化または復号化される。このように、２つの異なる動きベクトルをブロックに適用することができるマスクを使用して、画像内のオブジェクトをよりよくマッチングさせ、ビデオ圧縮を改善することができる。
【００３６】
図６は、本開示の一実施形態による、前のフレーム残差を使用した動きベクトル予測によってブロックを符号化または復号化するプロセス６００のフローチャート図である。この方法またはプロセス６００は、ビデオストリームの符号化または復号化を支援するコンピューティングデバイス２００などのシステムにおいて実施することができる。プロセス６００は、例えば、送信局１０２または受信局１０６などのコンピューティングデバイスによって実行されるソフトウェアプログラムとして実施することができる。ソフトウェアプログラムは、メモリ２０４などのメモリに格納され、ＣＰＵ２０２のようなプロセッサによる実行時に、コンピューティングデバイスにプロセス６００を実行させる機械可読命令を含むことができる。プロセス６００は、ハードウェアの全体または一部を使用して実施することもできる。上述したように、いくつかのコンピューティングデバイスは、複数のメモリおよび複数のプロセッサを有してもよく、プロセス６００のステップまたは動作は、この場合、異なるプロセッサおよび異なるメモリを使用して分散されてもよい。本明細書で単数の「プロセッサ」および「メモリ」という用語を使用することは、１つのプロセッサまたは１つのメモリのみを有するのみならず、必ずしもすべの記載されたステップではないが、いくつかのステップの実行にそれぞれ使用されてもよい複数のプロセッサまたは複数のメモリを有するコンピューティングデバイスを含む。
【００３７】
説明を簡単にするために、プロセス６００は、一連のステップまたは動作として示され説明されている。しかしながら、本開示によるステップおよび動作は、様々な順序でおよび／または同時に進行することができる。さらに、本開示に従うステップまたは動作は、本明細書に提示および記載されていない他のステップまたは動作と共に進行することができる。さらに、開示された主題に従って方法を実施するために、図示された全てのステップまたは動作が必要とされるわけではない。プロセス６００は、入力信号の各フレームに対して繰り返されてもよい。
【００３８】
プロセス６００が符号化プロセスである場合、入力信号は、例えばビデオストリーム３００とすることができる。入力信号は、プロセス６００を実行するコンピューティングデバイスによって任意の数の方法で受信される。例えば、入力信号は、撮像デバイス２２０によって取り込まれるか、またはバス２１２に接続された入力を介して別のデバイスから受信される。入力信号は、別の実施形態では、二次ストレージ２１４から取得することができる。他の受信方法および他の入力信号のソースも可能である。例えば、プロセス６００が復号化プロセスである場合、入力信号は、圧縮されたビットストリーム４２０などの符号化されたビットストリームであってもよい。
【００３９】
６０２において、入力信号を使用して、現フレーム以外の２つのフレームの画素値間の差である残差からビデオシーケンス内の現フレーム内の現ブロックに対するマスクが生成される。一般に、マスクは、２つのフレーム（例えば、現フレームの前の２つのフレーム）間の残差を算出し、残差を閾値処理し、閾値処理された残差をクリーニングアップすることによって生成することができる。１つの小さなタップぼかし（ｔａｐ  ｂｌｕｒ）を任意にマスクに追加することができる。
【００４０】
より詳細には、図７は、本開示の一実施形態による前のフレーム残差を使用してマスクを生成するためのプロセス７００のフローチャート図である。図８Ａ〜図８Ｃは、図７のプロセス７００を説明するために使用される図である。
【００４１】
方法またはプロセス７００は、ビデオストリームの符号化または復号化を支援するコンピューティングデバイス２００などのシステムで実施することができる。プロセス７００は、例えば、送信局１０２または受信局１０６などのコンピューティングデバイスによって実行されるソフトウェアプログラムとして実施することができる。ソフトウェアプログラムは、メモリ２０４などのメモリに格納され、ＣＰＵ２０２のようなプロセッサによる実行時に、コンピューティングデバイスにプロセス７００を実行させる機械可読命令を含むことができる。プロセス７００は、ハードウェアの全体または一部を使用して実施することもできる。上述したように、いくつかのコンピューティングデバイスは、複数のメモリおよび複数のプロセッサを有することができ、プロセス７００のステップまたは動作は、この場合、異なるプロセッサおよび異なるメモリを使用して分散することができる。
【００４２】
説明を簡単にするために、プロセス７００は、一連のステップまたは動作として示され、説明される。しかしながら、本開示によるステップおよび動作は、様々な順序でおよび／または同時に進行することができる。さらに、本開示に従うステップまたは動作は、本明細書に提示および記載されていない他のステップまたは動作と共に進行することができる。さらに、開示された主題に従って方法を実施するために、図示された全てのステップまたは動作が必要とされるわけではない。プロセス７００は、入力信号の各ブロックまたは各フレームに対して繰り返されてもよい。
【００４３】
プロセス７００において、マスクを生成することは、７０２において２つのフレーム間の残差を算出することを含む。より詳細には、残差は、第１のフレーム内の画素値を第２のフレーム内の画素値から減算することによって算出される。第１および第２のフレームは、入力信号によって形成されたビデオシーケンス内の現フレームの前に配置され得る。第１および第２のフレームは、隣接フレームであってもよいが、より望ましくは、ビデオシーケンス内の１つまたは複数のフレーム分および定義された時間量だけ分離される。定義された時間量は、例では２００ミリ秒であるが、他の値も可能である。画素値は、例えば、第１及び第２フレーム内の画素位置の一部又は全部の輝度成分又は彩度成分を表し得る。
【００４４】
一実施形態では、第２のフレーム内の画素の画素値は、第１のフレーム内の同配置された（ｃｏｌｌｏｃａｔｅｄ）画素の画素値から減算されるか、またはその逆である。同配置された画素は、異なるフレーム内の同じ画素座標を有する。一実施態様では、第２のフレーム内の画素および第１のフレーム内の同配置された画素は、現ブロックの画素と同配置される。代替的に、第２のフレーム内の画素および第１のフレーム内の同配置された画素は、現ブロックの画素に対して動きベクトルだけシフトされる。ある場合には、第１のフレームまたは第２のフレームの一方の画素は、現フレームと同配置され、他方の画素は、現ブロックに対して動きベクトルだけシフトされる。望ましくは、画素値は、図４に関して説明したような符号化器の符号化およびそれに続く復号化処理から得られた再構成画素値である。
【００４５】
符号化処理においてマスクが生成される場合、様々な技術を用いて２つのフレームを選択することができる。１つの特に単純な実施形態では、現フレームの前の最後の２つの隣接フレームが使用される。別の実施態様では、現フレームの前の最後のフレームが、最後のフレームに対する参照フレームとして最も識別されたフレームと共に選択されてもよい。他の実施形態では、マスク生成プロセスのための残差を提供するように他のフレームを選択することができる。
【００４６】
復号化プロセスにおいてマスクが生成された場合、以下により詳細に説明するように、符号化されたビットストリーム内のヘッダ情報から２つのフレームを識別することができる。
【００４７】
残差は、フレームの全体またはフレームの一部のみを表すことができる。即ち、残差は、フレームの全次元に対して、またはフレームのブロックのようなフレームの一部のみに対して算出することができる。一例が図８Ａに示されている。その図では、第１のフレーム８０２のすべての画素値が、第２のフレーム８０４の同配置された画素値から減算される。結果は、残差フレーム（または残差）８０６である。図８Ａから分かるように、ボール、月などのような丸いオブジェクト８０８は、第１のフレーム８０２内の第１の位置から第２のフレーム８０４内の第２の位置へと移動している。残差８０６は、第１のフレーム８０２と第２のフレーム８０４の画素値の間の差である三日月形状８１０を示す。この場合、残差は、フレームの全領域を用いて算出される。しかしながら、この算出またはプロセス７００の後続のステップは、フレームの一部、例えばブロック単位で実行されてもよい。
【００４８】
プロセス７００でマスクを生成することは、７０４において、７０２で生成された残差に閾値を適用することも含む。より詳細には、プロセス７００は、残差内の個々の画素位置に関する画素値に閾値を適用して、閾値残差を生成することを含む。閾値残差は、閾値が適用される残差と同じ次元または残差の一部を有する画素を含む。特定の実施形態では、閾値残差内の各画素は、第１の値または第１の値と異なる第２の値のうちの１つを有する。閾値は、正の値または負の値であるか、または値の範囲を定義してもよい。
【００４９】
一実施形態では、閾値を適用することは、残差内の個々の画素位置の画素値を閾値と比較することを含む。次に、画素値が閾値未満である場合、第１の値が、閾値残差内の同じ画素位置に割り当てられる。あるいは、画素値が閾値よりも大きい場合、第２の値が閾値残差内の同じ画素位置に割り当てられる。例えば、第１の値はゼロであってもよく、第２の値は２５６の最大画素値であってもよい。一実施形態では、第１の値が０の値である場合、第２の値は１の値である。オブジェクトを表す画素の値における背景の変化または最小の変化の捕捉を最小化しつつ、２つのフレーム間のオブジェクトのエッジの相対的な動きの変化を捕捉する限り、閾値は、任意の特定の値である必要はない。１つの値は、例えば７５であり、他の値も可能である。閾値残差の２つの境界に亘る非島状残差が閾値化の結果でなければ、閾値残差はマスクとして有用ではない。値が調整されるか、または、残差の一部が他のものと同様に予測に有用なマスクを生成しないという決定がなされてもよい。
【００５０】
図８Ｂを参照すると、例えば、図８Ａからの残差８０６の一部であるブロック８１２が示されている。ブロック８１２において、エッジ領域およびハッチングされた領域は、第１のフレーム８０２と第２のフレーム８０４との間の丸いオブジェクト８０８（例えば、そのエッジ）の動きを表す。ブロック８１２に閾値を適用すると、エッジ領域およびハッチングされた領域には１の値が割り当てられ、他の領域には０の値が割り当てられる。例えば、±７５の範囲内の値を有するブロック８１２内の画素に対応する新たなブロック（即ち、閾値残差）内の画素位置には、１の値が割り当てられ、その範囲外の画素に対応する閾値残差内の他の画素位置には、０の値が割り当てられる。２つの境界に亘る非島状残差が見られるので、ブロック８１２は有用なマスクを生成し得る。
【００５１】
再び図７を参照する。図７を参照すると、マスクを生成するためのプロセス７００はまた、閾値残差を修正することを含むことができる。７０６において、例えば、閾値残差に対する成長関数（ｇｒｏｗｔｈ  ｆｕｎｃｔｉｏｎ）および／またはシュリンク関数（ｓｈｒｉｎｋ  ｆｕｎｃｔｉｏｎ）を使用して、７０４において残差に閾値を適用することによって生じた閾値残差が修正される。即ち、閾値残差が清浄化される（ｃｌｅａｎｅｄ  ｕｐ）。一例では、修正は、閾値残差内の右および下のみに成長ステップを再帰的に適用することを含む。そのような実施形態では、上または左のいずれかの近隣が設定されている場合（即ち、１の値を有している場合）、現在の画素が設定される（即ち、１の値に変換される）。再帰的成長の速度は、より大きな「チャンク（ｃｈｕｎｋ）」または閾値残差の一部において作業することによって改善され得る。例えば、４×４画素グループの底部に任意の画素が設定される場合、そのグループ内のすべての画素が設定される。あるいは、再帰的成長関数を適用して、閾値残差内の他の値を有する領域を成長させることができる。一般に、閾値残差を修正することは、領域に隣接する画素の値に基づいて２つの値のうちの第１の値を有する最小数の連続画素によって定義される領域を拡張する成長関数を適用することを含む。
【００５２】
上述した７０６のこの修正プロセスは、別々の値を有する２つのほぼ連続した領域をもたらす。しかしながら、ある値の連続画素が、別の値の個々の画素または画素のグループによって破壊され得る領域が存在する可能性がある。７０６において閾値残差を修正することは、これらの不連続を低減するための追加のステップを含み得る。一例では、閾値残差を修正することは、２つの値の第２の値を有する画素によって包囲された第１の値を有する最大数の連続画素によって定義される領域を除去するために、または第１の値を有する画素によって包囲された第２の値を有する最大数の連続画素によって定義される領域を除去するためにシュリンク関数を適用することを含む。その領域を除去することによって、このことは、第１および第２の値がブロックまたはフレーム内の重複しない連続領域を形成するように値を変更することを意味する。
【００５３】
閾値残差を修正することにより得られるマスクの一例を図８Ｃに示す。マスク８１４は、図８Ｂのブロック８１２を閾値処理すること、および断崖マスクからラインの一方の側の画素の全てが第１の値を有し、ラインの他方の側の画素の全てが第２の値を有するように得られた閾値残差を成長関数及びシュリンク関数を用いて修正することにより生成される。断崖マスクを使用することができるが（例えば、白および黒のみ）、図７のプロセス７００に従うマスクを生成する際のオプションの最終ステップは、マスク内の境界にぼかしを適用することを含む。ぼかしの値については、以下に詳細に説明する。この時点で、ぼかしは、領域間の滑らかな遷移を形成する境界についての値をもたらすことに留意されたい。ぼかしは、様々な補間技術に従って形成された１つの小さなタップぼかしであってもよい。プロセス７００は、マスクが生成されると終了する。
【００５４】
マスクが生成されると、マスクは現ブロックの符号化または復号化に使用することができる。再び図６を参照すると、マスクを使用して現ブロックを符号化または復号化する１つの実施形態は、６０４で第１の予測ブロック部分をインター予測すること、６０６で第２の予測ブロック部分をインター予測すること、６０８でそれらの部分を使用して予測ブロックを生成すること、６１０で予測ブロックを使用して現ブロックを符号化または復号化することを含む。
【００５５】
プロセス６００が符号化プロセスである場合、６０４で第１の予測ブロック部分をインター予測することは、マスクを使用して現ブロックの画素位置の第１の連続部分内の画素値に関する参照フレーム内の第１の動き検索を実行することを含む。即ち、マスクの第１の連続部分と同配置された現ブロック内の画素値に対して最良の一致をもたらす第１の動きベクトルが見つけ出される。最良一致は、第１の予測ブロック部分を定義する。同様に、６０６で第２の予測ブロック部分をインター予測することは、マスクを使用して現ブロックの画素位置の第２の連続部分内の画素値に関する参照フレーム内の第２の動き検索を実行することを含む。即ち、マスクの第２の連続部分と同配置された現ブロック内の画素値に対して最良の一致をもたらす第２の動きベクトルが見つけ出される。最良一致は、第２の予測ブロック部分を定義する。１つの参照フレームの使用が記載されているが、検索は２つ以上の参照フレームに対して実行され、最良の一致は同じ参照フレーム内にある必要はない。
【００５６】
プロセス６００が符号化プロセスであるときに６０８において部分を使用して予測ブロックを生成することは、マスクを使用して第１の動き検索の結果を第２の動き検索の結果と合成することによって予測ブロックを生成することを含むことができる。この合成は、最良一致の画素値を単一の予測ブロックに合成することによって達成され得る。例えば、予測ブロックは、第１の予測ブロック部分に対応する値を有するマスクの第１の連続部分と実質的に一致する第１の部分内の位置における画素と、第２の予測ブロック部分に対応する値を有するマスクの第２の連続部分と実質的に一致する第２の部分内の位置における画素とを有する。予測ブロックの第１の部分と第２の部分との間の境界における画素値は、ぼかしに従った画素値の合成である。たとえば、ぼかしは、境界において０．７５，０．５０、および０．２５の１と０の間の値を持つことができる。この場合、２つの部分の間の境界領域における画素は、第１の部分の同配置された画素の画素値の７５％と第２の部分の同配置された画素値の２５％とを合成した第１の部分に隣接する第１の組の画素と、第１の部分の同配置された画素の画素値の２５％と第２の部分の同配置された画素の画素値の７５％とを合成した値を有する第２の部分に隣接する第２の組の画素と、第１の部分の同配置された画素の画素値の５０％と第２の部分の同配置された画素の画素値の５０％とを合成した値を有する第１の境界領域と第２の境界領域との間の第３の組の画素とを含む。これは簡単な例であり、ぼかしマスクを適用して２つの組の画素を合成して予測ブロックを生成するための他の技術は、本開示に基づく当業者の技術の範囲内である。
【００５７】
６０４および６０６のインター予測における使用のためにマスクを修正することができることは注目すべきである。即ち、例えばマスクを回転させることができる。これにより、各検索に関して選択された画素が現ブロックから変更される。したがって、動き検索を実行することは、回転されたマスクを使用して参照フレーム内で第１および第２の動き検索を実行すること、即ち、回転されたマスクの別々の連続部分の各々と同配置された現フレームから画素に関する最良一致を見つけ出すことを含む。次に、６０８において部分の最良一致を合成するために同様に、マスクを回転させて使用して予測ブロックを生成する。
【００５８】
マスクは、動きベクトルによってマスクをシフトすることによって、６０４および６０６のインター予測に使用するように修正することもできる。即ち、マスクのサイズに対応する現フレームの一部（フレームの全部であっても一部であっても）を符号化する利点は、マスクの別々の連続部分間の境界を調整することから得られる利点であり得る。例えば、現フレームの前に前フレーム（例えば、最後の）における動きベクトルのうちの１つだけマスクの境界内でマスクの一方の側への連続部分のサイズが増大し、マスクの反対側の連続部分のサイズが減少するように画素値を調整することによって境界を調整することができる。例えば、境界を移動させ、したがってマスクをシフトするために使用される動きベクトルは、予測されている現ブロックと同配置された最後のフレームのブロックの動きベクトルとすることができる。
【００５９】
６１０において予測ブロックを使用して現ブロックを符号化することは、現ブロックに関する残差を生成し、残差を現ブロックの復号化に必要な情報とともに符号化されたビットストリームに符号化することを含む。例えば、符号化プロセスは、図４に関して記載されたように、変換ステージ４０４、量子化ステージ４０６、およびエントロピー符号化ステージ４０８を使用して残差を処理することを含むことができる。現ブロックを復号化するために必要な情報は、現ブロックがマスクを用いて符号化されたことを示すモードインジケータ（時にはフラグと呼ばれる）、符号化器においてマスクを生成するためにどのフレームが使用されたかについてのインジケータ（フレームＩＤ等の）、動き検索の結果として見つけ出された動きベクトル、参照フレームの識別、およびマスクに対する任意の変更についてのインジケータを含む。例えば、マスクが符号化プロセスで使用するために回転された場合、ビットストリームはそのような指示を含むことになる。その情報は、フレーム、スライス、セグメント、またはブロックヘッダーに含まれていてもよく、すべての情報が同じヘッダで送信される必要はない。さらに、すべての情報が送信される必要はない。例えば、マスクが生成された後にマスクに変化がない場合（例えば、回転されない場合）、修正のインジケータを送る必要はない。さらに、過去の２つのフレームがこのマスクモードにおける符号化で常に使用される場合、ビットストリーム内で使用される２つのフレームを識別する必要はない。他の修正も可能である。
【００６０】
この説明および図４の符号化プロセスの説明から理解されるようには、単一のマスクの生成は、ブロックの最も効率的な符号化をもたらさないことがある。したがって、最も低い符号化コスト（例えば、符号化するビットの数）で現ブロックを符号化のためのマスクおよび動きベクトルを見つけ出すために、図６の処理は、異なるマスク（または回転された同じマスク）を使用してインター予測を実行する１つまたは複数のレート歪みループに組み込まれ得る。
【００６１】
プロセス６００が復号化プロセスである場合、６０２におけるフレーム残差からマスクを生成することは、図７に従って実行される。一実施態様によれば、残差を算出するために使用されるフレームは、マスクモードが使用されるとき、（例えば、情報を含むヘッダをエントロピー復号化することによって）符号化されたビットストリームから得られる。あるいは、フレームは、マスクモードの使用によって知ることができる。例えば、現フレームに対して前の２つの隣接フレームが常に使用される場合、フレームの識別を復号化器に別個に知らせる必要はない。
【００６２】
６０４において第１の予測ブロック部分をインター予測するための第１の動きベクトルおよび６０６において第２の予測ブロック部分をインター予測するための第２の動きベクトルは、ビットストリーム内のヘッダから取得することができる。６０４において第１の予測ブロック部分をインター予測することは、第１の動きベクトルを使用して第１の参照ブロックを生成し、マスクを第１の参照ブロックに適用して、第１のマスクされた参照ブロック（即ち、第１の予測ブロック部分）を生成することを含む。同様に、６０６において第２の予測ブロック部分をインター予測することは、第２の動きベクトルを使用して第２の参照ブロックを生成し、マスクを第２の参照ブロックに適用して、第２のマスクされた参照ブロック（即ち、第２の予測ブロック部分）を生成することを含む。６０８において、符号化プロセスに関して上述したのと同様の方法で部分を使用して予測ブロックが生成される。
【００６３】
６１０において予測ブロックを使用して現ブロックを復号化することは、現ブロックの残差をビットストリームから復号化し、予測ブロックを残差に加算することを含む。例えば、復号化プロセスは、図５に関して説明したように、エントロピー復号化ステージ５０２、逆量子化ステージ５０４、および逆変換ステージ５０６を使用して残差を処理することを含むことができる。次に、現ブロックは、図５に関して説明したように、再構成ステージ５１０で再構成することができる。
【００６４】
画素予測は、ビットストリーム内で符号化されたデータの量を低減するために使用される。１つの技術は、動きベクトルを使用して、前に符号化されたフレームから画素のブロックをコピーすることである。実際には、オブジェクトは多くの場合規則的なブロック境界に収まらない。本明細書の教示では、予測子（例えば、予測ブロック）がオブジェクトのエッジ形状により良く追従し、よってビデオ圧縮を改善する。
【００６５】
上述の符号化および復号化の態様は、符号化および復号化技術のいくつかの例を示す。しかしながら、符号化および復号化は、特許請求の範囲で使用されるそれらの用語として圧縮、圧縮解除、変換、または任意の他の処理またはデータの変更を意味し得ることを理解されたい。
【００６６】
「例」という語は、本明細書では、例、事例、または実例としての役割を意味するものとして使用される。本明細書において「例」と記載された任意の態様または設計は、必ずしも他の態様または設計に対して好ましいまたは有利であるとして解釈されるべきではない。むしろ、「例」という言葉の使用は、具体的な方法で概念を提示することを意図している。本出願で使用される場合、用語「または」は、排他的な「または」ではなく、包括的な「または」を意味することが意図される。即ち、他に明記されていない限り、または文脈から明らかでない限り、「ＸはＡまたはＢを含む」とは、任意の自然な包含的置換（ｎａｔｕｒａｌ  ｉｎｃｌｕｓｉｖｅ  ｐｅｒｍｕｔａｔｉｏｎｓ）を意味することを意図する。即ち、「ＸはＡまたはＢを含む」は、以下の場合、ＸがＡを含む場合、ＸがＢを含む場合、またはＸがＡおよびＢの両方を含む場合のいずれにおいても満足される。さらに、本出願および添付の特許請求の範囲で使用される冠詞「ａ」および「ａｎ」は、他に明記されない限り、または単数形に向けられる文脈から明らかでない限り、「１つまたは複数」を意味すると一般に解釈されるべきである。さらに、「実施形態」または「一実施形態」という用語の使用は、そのように記載されない限り、同じ実施形態または実施を意味することを意図するものではない。
【００６７】
送信局１０２および／または受信局１０６（ならびに、符号化器４００および復号化器５００が含む、それに記憶され、かつ／またはそれによって実行されるアルゴリズム、方法、命令など）の実施形態は、ハードウェア、ソフトウェア、またはそれらの任意の組み合わせにおいて実現することができる。ハードウェアは、例えば、コンピュータ、知的財産（ＩＰ）コア、特定用途向け集積回路（ＡＳＩＣ：ａｐｐｌｉｃａｔｉｏｎ−ｓｐｅｃｉｆｉｃ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔｓ）、プログラマブル論理アレイ、光プロセッサ、プログラマブル論理コントローラ、マイクロコード、マイクロコントローラ、サーバ、マイクロプロセッサ、デジタル信号プロセッサ、または他の適切な回路を含むことができる。特許請求の範囲において、「プロセッサ」という用語は、前述のハードウェアのいずれかを単独でまたは組み合わせて含むものとして理解されるべきである。用語「信号」および「データ」は互換的に使用される。さらに、送信局１０２および受信局１０６の一部は、必ずしも同じ方法で実施される必要はない。
【００６８】
さらに、一態様では、例えば、送信局１０２または受信局１０６は、実行時に、本明細書に記載された個々の方法、アルゴリズム、および／または命令をのうちのいずれかを実行するコンピュータプログラムを備えた汎用コンピュータまたは汎用プロセッサを使用して実施することができる。加えて、または代替的に、例えば、本明細書に記載された方法、アルゴリズム、または命令のいずれかを実行するための他のハードウェアを含むことができる専用コンピュータ／プロセッサを利用することができる。
【００６９】
送信局１０２および受信局１０６は、例えば、ビデオ会議システム内のコンピュータ上で実施することができる。あるいは、送信局１０２はサーバ上で実施することができ、受信局１０６はサーバとは別のハンドヘルド通信デバイスのようなデバイス上で実施することができる。この場合、送信局１０２は、符号化器４００を使用してコンテンツを符号化されたビデオ信号に符号化し、符号化されたビデオ信号を通信デバイスに送信することができる。通信デバイスは、復号化器５００を使用して符号化されたビデオ信号を復号化することができる。あるいは、通信デバイスは、通信デバイス上に局所的に格納されたコンテンツ、例えば、送信局１０２によって送信されなかったコンテンツを復号化することができる。他の適切な送信および受信の実施方式が利用可能である。例えば、受信局１０６は、ポータブル通信デバイスではなく、一般に固定のパーソナルコンピュータであってもよく、かつ／または符号化器４００を含むデバイスは、復号化器５００を含んでもよい。
【００７０】
さらに、本発明の実施形態の全部または一部は、例えば有形のコンピュータ使用可能またはコンピュータ可読媒体からアクセス可能なコンピュータプログラム製品の形態を取ることができる。コンピュータ使用可能またはコンピュータ可読媒体は、例えば、任意のプロセッサによって使用されるプログラムを有形に包含、格納、通信、または輸送することができる任意のデバイスであり得る。媒体は、例えば、電子、磁気、光学、電磁気、または半導体デバイスであり得る。他の適切な媒体も利用可能である。
【００７１】
上述した実施形態、実施及び態様は、本発明の理解を容易にするために記載されており、本発明を限定するものではない。本発明は、添付の特許請求の範囲内に含まれる様々な改変および均等の構成を包含することを意図しており、その範囲は、法律で許容されるようなすべての改変および均等の構造を包含するように最も広い解釈が与えられる。
【図１】
0006761033.tif 000002
【図２】
0006761033.tif 000003
【図３】
0006761033.tif 000004
【図４】
0006761033.tif 000005
【図５】
0006761033.tif 000006
【図６】
0006761033.tif 000007
【図７】
0006761033.tif 000008
【図８Ａ】
0006761033.tif 000009
【図８Ｂ】
0006761033.tif 000010
【図８Ｃ】
0006761033.tif 000011