下記は、添付の図面を参照して、本願の技術的解決策を記載する。
本願の実施形態における動きベクトル取得方法のプロセスをよりよく理解するために、下記はまず、図1および図2を参照して、ビデオ・エンコードおよびデコード・プロセス全体を簡単に説明する。
図1は、ビデオ・エンコード・プロセスの概略図である。
図1に示されるように、現在のフレームFn内の現在のピクチャー・ブロックに対して予測が実行されるとき、イントラ予測またはインター予測のいずれかが実行されることができる。具体的には、イントラ符号化またはインター符号化は、現在のフレームFnのタイプに基づいて選択されうる。たとえば、現在のフレームFnがIフレームである場合はイントラ予測が使用される;または、現在のフレームFnがPフレームまたはBフレームである場合は、インター予測が使用される。イントラ予測が使用される場合、現在のピクチャー・ブロック内のサンプルのサンプル値は、現在のフレームFn内の再構成された領域内のサンプルのサンプル値を使用することによって予測されうる。インター予測が使用される場合、現在のピクチャー・ブロック内のサンプルのサンプル値は、参照ピクチャーF'n-1内にあり、現在のピクチャー・ブロックに一致する参照ブロック内のサンプルのサンプル値を使用することによって予測されうる。
現在のピクチャー・ブロックの予測ブロックが、インター予測またはイントラ予測を通じて得られた後、現在のピクチャー・ブロック内のサンプルのサンプル値と予測ブロック内のサンプルのサンプル値との間の差が計算されて、残差情報が得られて、該残差情報に対して、変換、量子化、およびエントロピー符号化が実行されて、エンコードされたビットストリームが得られる。さらに、エンコード・プロセスでは、現在のフレームFnの残差情報および現在のフレームFnの予測された情報に対してさらに重ね合わせが実行される必要があり、フィルタリング動作が実行されて、現在のフレームの再構成されたフレームF'nが得られる。再構成されたフレームF'nは、後続のエンコードのための参照ピクチャーとして使用される。
図2は、ビデオ・デコード・プロセスの概略図である。
図2に示されるビデオ・デコード・プロセスは、図1に示されるビデオ・エンコード・プロセスの逆プロセスと等価である。デコードの間、エントロピー復号デコード、脱量子化、および逆変換が実行されて残差情報が得られ、現在のピクチャー・ブロックに対してイントラ予測が実行されるかインター予測が実行されるかは、デコードされたビットストリームに基づいて決定される。イントラ予測が実行される場合、イントラ予測方法に従って、現在のフレーム内の再構成された領域内のサンプルのサンプル値を用いて、予測された情報が構築される。インター予測が実行される場合、パースを通じて動き情報が得られる必要があり、パースを通じて得られた動き情報に基づいて、再構成されたピクチャー内の参照ブロックが決定され、参照ブロック内のサンプルのサンプル値が、予測された情報として使用され、次いで、予測された情報および残差情報に対して重ね合わせが実行され、フィルタリング動作が実行されて、再構成された情報が得られる。
本願の実施形態における動きベクトル取得方法は、エンコード・プロセスおよびデコード・プロセスの両方に適用されうる。換言すれば、エンコーダ側とデコーダ側の両方とも、本願の実施形態における動きベクトル取得方法を実行してもよい。具体的には、本願の実施形態における動きベクトル取得方法は、図1および図2に示されるインター予測プロセスに適用されうる。
HEVCでは、先進動きベクトル予測(advanced motion vector prediction、AMVP)モードとマージ(merge)モードの2つのインター予測モードがある。本願の実施形態における動きベクトル取得方法は、インター予測のマージモードに適用されてもよい。
図3は、本願のある実施形態による動きベクトル取得方法の概略フローチャートである。図3に示される方法は、ビデオ・エンコードおよびデコード装置、ビデオコーデック、ビデオ・エンコードおよびデコード・システム、およびビデオ・エンコードおよびデコード機能を有する別の装置によって実行されうる。
図3は、本願のある実施形態による動きベクトル取得方法の概略フローチャートである。図3に示される方法は、ビデオ・エンコードおよびデコード装置、ビデオコーデック、ビデオ・エンコードおよびデコード・システム、およびビデオ・エンコードおよびデコード機能を有する別の装置によって実行されうる。
図3に示される方法は、ステップ110ないしステップ140を含む。下記は、ステップ110ないしステップ140を詳細に記述する。
110:第1の値範囲および第2の値範囲を決定する。
任意的に、第1の値範囲は、第1の閾値および第2の閾値を含む値範囲であり、第2の値範囲は、第3の閾値および第4の閾値を含む値範囲である。第1閾値は第2閾値より小さく、第3閾値は第4閾値より小さい。
第1の値範囲および第2の値範囲は、それぞれ、開範囲、閉範囲および片側が開で片側が閉の範囲のいずれか1つでありうることを理解しておくべきである。
第1の値範囲の具体的な表現形式は、(第1の閾値,第2の閾値)、(第1の閾値,第2の閾値]、または[第1の閾値,第2の閾値]でありうる。
第2の値範囲の具体的な表現形式は、(第3の閾値,第4の閾値)、(第3の閾値,第4の閾値]、または[第3の閾値,第4の閾値]でありうる。
120:処理されるべきブロックの目標オフセット・ベクトルと目標ピクチャーの識別子情報とを決定する。
処理されるべきブロックは、少なくとも1つの処理されるべきサブブロックを含み、第1の方向における目標オフセット・ベクトルの成分の値は、第1の値範囲内にあり、第2の方向における目標オフセット・ベクトルの成分の値は、第2の値範囲内にあり、第1の方向および第2の方向は直交関係にある。
目標ピクチャー内にあり、処理されるべきブロックに対応する(ピクチャー)ブロックは、対応するブロックと称されてもよく、対応するブロックは、少なくとも1つの共位置のサブブロックを含み、目標オフセット・ベクトルは、目標ピクチャー内にある、処理されるべきブロックの対応するブロック(の位置)を決定するために使用される。目標オフセット・ベクトルは、共通の動きベクトルとは異なる。目標オフセット・ベクトルは、対応するブロックを決定するために使用される。しかしながら、動きベクトルは、通例、ピクチャー・ブロックの予測されたサンプル値を得るよう、ピクチャー・ブロックの予測ブロックを決定するために使用される。さらに、オフセット・ベクトルは、時間的ベクトル(temporal vector)とも称されてもよく、目標ピクチャーは、対応するピクチャーとも称されてもよい。
目標ピクチャーの識別子情報は、特にピクチャー・シーケンス内のピクチャー・フレームのピクチャー順カウント(picture order count、POC)であってもよく、または目標ピクチャーのインデックス情報またはインデックス値であってもよい。
POCは、もとのピクチャー・シーケンスにおけるピクチャーの実際の位置を示すために使用されることが理解されるべきである。エンコード順/デコード順と区別するために、POCは表示順または再生順と称されることもある。
前記少なくとも1つの処理されるべきサブブロックは、前記処理されるべきブロックを分割することによって得られてもよく、前記少なくとも1つの処理されるべきサブブロックは、前記処理されるべきブロックを形成してもよいことが理解されるべきである。処理されるべきブロックがCUである場合、CUは少なくとも1つのサブCUを含んでいてもよい。さらに、第1の方向および第2の方向は、それぞれ、水平方向および垂直方向であってもよい。
第1の値範囲の形式に変化があるとき、第1の方向における目標オフセット・ベクトルの成分の値が第1の値範囲内に入る以下の具体的な形式がある。
(1)第1の値範囲が(第1の閾値,第2の閾値)である場合、第1の方向の目標オフセット・ベクトルの成分の値は、第1の閾値よりも大きく、第2の閾値よりも小さい。
(2)第1の値範囲が(第1の閾値,第2の閾値]である場合、第1の方向の目標オフセット・ベクトルの成分の値は、第1の閾値より大きく、第2の閾値以下である。
(3)第1の値範囲が[第1の閾値,第2の閾値]である場合、第1の方向の目標オフセット・ベクトルの成分の値は、第1の閾値以上であり第2の閾値以下である。
同様に、第2の値範囲の形式に変化があるとき、第2の方向における目標オフセット・ベクトルの成分の値が第2の値範囲内に入る以下の具体的な形式がある。
(4)第2の値範囲が(第3の閾値,第4の閾値)である場合、第2の方向の目標オフセット・ベクトルの成分の値は、第3の閾値よりも大きく、第4の閾値よりも小さい。
(5)第2の値範囲が(第3の閾値,第4の閾値]である場合、第2の方向の目標オフセット・ベクトルの成分の値は、第3の閾値より大きく、第4の閾値以下である。
(6)第2の値範囲が[第3の閾値,第4の閾値]である場合、第2の方向の目標オフセット・ベクトルの成分の値は、第3の閾値以上であり第4の閾値以下である。
ステップ120において、目標オフセット・ベクトルは、複数の態様で決定されうる。具体的には、まず、初期オフセット・ベクトル(これは開始オフセット・ベクトルとも称されうる)が決定されてもよく、次いで、第1の方向および第2の方向における初期オフセット・ベクトルの成分の値が、それぞれ、第1の値範囲および第2の値範囲に制限され、最終的な目標オフセット・ベクトルが得られる。あるいはまた、第1の方向および第2の方向における成分値がそれぞれ第1の値範囲および第2の値範囲内に入る動きベクトルが、複数の動きベクトルから、前記目標オフセット・ベクトルとして直接選択されてもよい。下記は、目標オフセット・ベクトルを決定するこれら2つの態様を詳細に記述する。
第1の態様は、初期オフセット・ベクトルを決定するステップと、第1の方向および第2の方向における初期オフセット・ベクトルの成分の値を制限して、目標オフセット・ベクトルを得るステップとを含む。
具体的には、第1の態様では、目標オフセット・ベクトルの決定は、ステップ1201ないしステップ1203を含む。下記は、ステップ1201ないしステップ1203を詳細に記述する。
1201:処理されるべきブロックの初期オフセット・ベクトルを決定する。
任意的に、処理されるべきブロックの事前設定された空間的近傍ブロックの動きベクトルが、初期オフセット・ベクトルとして決定される。
具体的には、特定の順序において、最初の利用可能な得られた事前設定された空間的近傍ブロックの動きベクトルが、初期オフセット・ベクトルとして決定されてもよい。
たとえば、図4に示されるように、A0、A1、B0、B1、B2は、処理されるべきブロックの空間的近傍ブロックであり、Tは、処理されるべきブロックの時間的近傍ブロックであり、Cは、処理されるべきブロックの参照ピクチャー内にあり、処理されるべきブロックと同じ位置内にあるピクチャー・ブロックである。処理されるべきブロックの初期オフセット・ベクトルが決定されるとき、A1、B1、B0、およびA0の順で、最初の利用可能な見つかった近傍ブロックの動きベクトルが、初期オフセット・ベクトルとして決定されうる。
最初の利用可能な空間的近傍ブロックの動きベクトルが、直接、初期オフセット・ベクトルとして決定されるので、初期オフセット・ベクトルを決定するプロセスが単純化できる。
1202:第1の方向の初期オフセット・ベクトルの成分の値が第1の値範囲内に入り、第2の方向の初期オフセット・ベクトルの成分の値が第2の値範囲内に入る場合、その初期オフセット・ベクトルを、目標オフセット・ベクトルとして決定する。
たとえば、第1の値範囲が(第1の閾値,第2の閾値)であり、第2の値範囲が(第3の閾値,第4の閾値)である場合、第1の方向の初期オフセット・ベクトルの成分の値が第1の閾値よりも大きく、第2の閾値よりも小さく、第2の方向の初期オフセット・ベクトルの成分の値が第3の閾値よりも大きく、第4の閾値よりも小さければ、その初期オフセット・ベクトルは、直接、目標オフセット・ベクトルとして決定されてもよい。
1203:第1の方向の初期オフセット・ベクトルの成分の値が第1の値範囲外にある、および/または第2の方向の初期オフセット・ベクトルの成分の値が第2の値範囲外にある場合、第1の方向の初期オフセット・ベクトルの成分の値の、第1の値範囲を超える部分、および/または第2の方向の初期オフセット・ベクトルの成分の値の、第2の値範囲を超える部分に対してクリッピングを実行し、クリッピング後に得られる初期オフセット・ベクトルを目標オフセット・ベクトルとして決定する。
ステップ1203においてクリッピング後に得られた初期オフセット・ベクトルの、第1の方向および第2の方向の成分の値は、それぞれ、第1の値範囲および第2の値範囲内に入る。
具体的には、第1の方向における初期オフセット・ベクトルの成分の値が第1の値範囲外である場合、および/または第2の方向における初期オフセット・ベクトルの成分の値が第2の値範囲外である場合、初期オフセット・ベクトルに対する処理は、ケース1ないしケース3を含む。下記は、この3つのケースを詳細に記述する。
ケース1:
第1の方向における初期オフセット・ベクトルの成分の値が第1の値範囲内に入り、第2の方向における初期オフセット・ベクトルの成分の値が第2の値範囲を超える場合には、第2の方向における初期オフセット・ベクトルの成分の、第2の値範囲を超える部分に対してクリッピングが実行され、クリッピング後に得られる初期オフセット・ベクトルが目標オフセット・ベクトルとして決定される。
たとえば、第1の値範囲は[第1の閾値,第2の閾値]であり、第2の範囲は[第3の閾値,第4の閾値]であり、第1の方向および第2の方向の初期オフセット・ベクトルの成分は第1の成分および第2の成分である。第1の成分は第2の閾値よりも小さく、第1の閾値よりも大きく、第2の成分は第4の閾値よりも大きい。この場合、初期オフセット・ベクトルの第2の成分は、[第3の閾値,第4の閾値]によって制限される値範囲外にあり、クリッピング後に得られる第2の成分が第3の閾値以上第4の閾値以下であるよう、第2の成分の値の、第4の閾値を超える部分に対してクリッピング(これは代替的に切り捨てとも称されてもよい)が実行される必要がある。
ケース2:
第1の方向の初期オフセット・ベクトルの成分の値が第1の値範囲を超え、第2の方向の初期オフセット・ベクトルの成分の値が第2の値範囲内に入る場合には、第1の方向の初期オフセット・ベクトルの成分の、第1の値範囲を超える部分に対してクリッピングが実行され、クリッピング後に得られる初期オフセット・ベクトルが目標オフセット・ベクトルとして決定される。
たとえば、第1の値範囲は[第1の閾値,第2の閾値]であり、第2の範囲は[第3の閾値,第4の閾値]であり、第1の方向および第2の方向の初期オフセット・ベクトルの成分は第1の成分および第2の成分である。第2の成分は第3の閾値より大きく第4の閾値より小さく、第1の成分は第1の閾値より小さい。この場合、初期オフセット・ベクトルの第1の成分は、[第1の閾値,第2の閾値]によって制限される値範囲外にあり、第1の成分の値は、[第1の閾値,第2の閾値]によって制限される値範囲内にクリッピングされる必要がある。すなわち、制限後に得られる第1の成分が第1の値範囲内に入るよう、第1の閾値と第1の成分との間の差が第1の成分に加えられる必要がある。
ケース3:
第1の方向の初期オフセット・ベクトルの成分の値が第1の値範囲を超え、第2の方向の初期オフセット・ベクトルの成分の値が第2の値範囲を超える場合には、第1の方向の初期オフセット・ベクトルの成分の、第1の値範囲を超える部分に対してクリッピングが実行され、第2の方向の初期オフセット・ベクトルの成分の、第2の値範囲を超える部分に対してクリッピングが実行され、クリッピング後に得られる初期オフセット・ベクトルが目標オフセット・ベクトルとして決定される。
たとえば、第1の値範囲は[第1の閾値,第2の閾値]であり、第2の範囲は[第3の閾値,第4の閾値]であり、第1の方向および第2の方向の初期オフセット・ベクトルの成分は第1の成分および第2の成分である。第1の成分は第2の閾値より大きく、第2の成分は第4の閾値より大きい。この場合、初期オフセット・ベクトルの第1の成分は[第1の閾値,第2の閾値]によって制限される値範囲外にあり、初期オフセット・ベクトルの第2の成分は[第3の閾値,第4の閾値]によって制限される値範囲外にあり、クリッピング後に得られる第1の成分の値が[第1の閾値,第2の閾値]の範囲内に入り、クリッピング後に得られる第2の成分の値が[第3の閾値,第4の閾値]の範囲内に入るよう、第1の成分の値の、第2の閾値を超える部分に対してクリッピングが実行される必要があり、第2の成分の値の、第4の閾値を超える部分に対してクリッピングが実行される必要がある。
第2の態様は:処理されるべきブロックの空間的近傍ブロックの動きベクトルのうち、第1の方向および第2の方向の成分値がある要件を満たすものを、目標オフセット・ベクトルとして決定することを含む。
具体的には、第2の態様では、目標オフセット・ベクトルの決定は、ステップ1204およびステップ1205を含む。下記は、ステップ1204およびステップ1205を詳細に記述する。
1204:処理されるべきブロックの事前設定された空間的近傍ブロックのうちの目標空間的近傍ブロックを決定する。ここで、第1の方向の目標空間的近傍ブロックの動きベクトルの成分の値は第1の値範囲内に入り、第2の方向の目標空間的近傍ブロックの動きベクトルの成分の値は第2の値範囲内に入る。
具体的には、ステップ1204において、処理されるべきブロックの空間的近傍ブロックの動きベクトルは特定の順序で取得されてもよく、次に、第1の方向および第2の方向における空間的近傍ブロックの動きベクトルの成分値がそれぞれ第1の値範囲および第2の値範囲に入るかどうかが判定され、第1の方向および第2の方向の成分値がそれぞれ第1の値範囲および第2の値範囲に入る動きベクトルが、目標オフセット・ベクトルとして決定される。
1205:目標空間的近傍ブロックの動きベクトルを目標オフセット・ベクトルとして使用する。
たとえば、図4に示されるように、A1、B1、B0、A0の順で、最初の利用可能な近傍ブロックの動きベクトルが見出されてもよい。次いで、動きベクトルの成分値がある要件(これは、第1の方向および第2の方向の成分値がそれぞれ第1の値範囲および第2の値範囲に入ることである)を満たしているかどうかが判定される。動きベクトルがその要件を満たす場合、その動きベクトルが、目標オフセット・ベクトルとして決定される。動きベクトルがその要件を満たさない場合、次の利用可能な近傍ブロックの動きベクトルが、A1、B1、B0、A0の順に検索され続ける。次いで、要件を満たす動きベクトルが見つかるまで、要件が満たされているかどうかが判定される。
ステップ120において使用される目標オフセット・ベクトルは、代わりにゼロ・オフセット・ベクトルであってもよいことが理解されるべきである。この場合、目標ピクチャー内にあり、処理されるべきブロックと同じ位置内にあるピクチャー・ブロックが、目標ピクチャー内にある、処理されるべきブロックの対応するブロックである。
さらに、要件を満たす目標オフセット・ベクトルが見つからない場合には、ATMVP技術が代わりに使用されてもよいが、処理されるべきサブブロックの動きベクトルを得るためには別の技術が使用される。
130:処理されるべきサブブロックの位置と、目標オフセット・ベクトルとに基づいて、目標ピクチャーにおいて、処理されるべきサブブロックの共位置のサブブロックを決定する。
目標オフセット・ベクトルは、処理されるべきブロックの、目標ピクチャー内にある対応するブロックをポイントするので、まず、対応するブロックがオフセット・ベクトルに基づいて得られ、次いで、処理されるべきサブブロックの位置に基づいて、処理されるべきサブブロックとある相対的な位置関係を有する共位置のサブブロックが、目標ピクチャー内で決定されてもよい(これは、処理されるべきサブブロックと前記相対的な位置関係を有する共位置のサブブロックが、前記対応するブロック内で決定されることとして理解されてもよい)。
処理されるべきサブブロックと前記相対的な位置関係を有する共位置のサブブロックが前記対応するブロック内で決定されるとき、前記対応するブロック内にあり、処理されるべきサブブロックの相対位置と同じ相対位置を有するサブブロックが、処理されるべきサブブロックの共位置のサブブロックとして決定されてもよい。
たとえば、図5に示されるように、現在のピクチャーは、処理されるべきブロックを含み、処理されるべきブロックは、4つのサブブロックを含む。目標ピクチャー内にあり、処理されるべきブロックに対応する対応するブロックが、処理されるべきブロックの位置と、処理されるべきブロックのオフセット・ベクトルとに基づいて得られてもよい。対応するブロックも、4つのサブブロックを含む。処理されるべきサブブロックは、処理されるべきブロックの左上隅に配置される。この場合、処理されるべきサブブロックの共位置のサブブロックが決定されるとき、対応するブロックの左上サブブロックが、処理されるべきサブブロックの共位置のサブブロックとして決定されてもよい。
140:共位置のサブブロックの動きベクトルに基づいて、処理されるべきサブブロックの動きベクトルを決定する。
本願では、目標オフセット・ベクトルの成分値が特定の値範囲内に入るので、目標オフセット・ベクトルに基づいて目標ピクチャー内で決定される、処理されるべきサブブロックも、目標ピクチャーの特定の範囲内に入る。よって、目標ピクチャーの特定の範囲内の時間的動きベクトル・フィールドを先読みすることによって、メモリ帯域幅およびメモリ読み取り時間の量が低減できる。
任意的に、ステップ140の前に、図3に示される方法は、さらに:目標ピクチャー内の事前設定領域内のサンプルの動きベクトルを得るステップを含み、ここで、事前設定領域は、処理されるべきサブブロックの共位置のサブブロックが現われうる領域である。
本願では、共位置のサブブロックが目標ピクチャー内に現われる領域が決定されるので、目標ピクチャー内の特定領域内の動きベクトルを事前に取得することによって、目標ピクチャーから動きベクトルを読み取る時間の量を低減できる。言い換えれば、メモリ読み取り時間の量が減少する。さらに、目標ピクチャー内の特定領域のみにおける動きベクトルが得られるため、メモリ帯域幅が低減できる。
共位置のサブブロックの動きベクトルが得られた後、共位置のサブブロックの動きベクトルをスケーリングすることによって、処理されるべきサブブロックの動きベクトルが得られてもよい。
具体的には、共位置のサブブロックの動きベクトルに基づいて、処理されるべきサブブロックの動きベクトルを決定することは:処理されるべきサブブロックを含むピクチャーのピクチャー順カウント(picture order count、POC)、処理されるべきサブブロックを含むピクチャーの目標参照ピクチャーのPOC、目標ピクチャーのPOC、および目標ピクチャーの目標参照ピクチャーのPOCに基づいて、共位置のサブブロックの動きベクトルをスケーリングして、処理されるべきサブブロックの動きベクトルを得ることを含む。
たとえば、図6に示されるように、処理されるべきサブブロックを含むピクチャーはピクチャー・フレーム1であり、ピクチャー・フレーム1の目標参照ピクチャーはピクチャー・フレーム2であり、その中に目標ピクチャーが位置するピクチャー・フレームはピクチャー・フレーム3であり、ピクチャー・フレーム3の目標参照ピクチャーはピクチャー・フレーム4であり、共位置のサブブロックの動きベクトルはMVである。この場合、MVは、ピクチャー・フレーム1ないしピクチャー・フレーム4のPOCに基づいてスケーリングされて、処理されるべきサブブロックの動きベクトルを得てもよい。
任意的に、処理されるべきサブブロックを含むピクチャーのPOC、処理されるべきサブブロックを含むピクチャーの目標参照ピクチャーのPOC、目標ピクチャーのPOC、および目標ピクチャーの目標参照ピクチャーのPOCに基づいて、共位置のサブブロックの動きベクトルをスケーリングして、処理されるべきサブブロックの動きベクトルを得ることは:処理されるべきサブブロックを含むピクチャーのPOCと、処理されるべきサブブロックを含むピクチャーの目標参照ピクチャーのPOCとの間の差を第1の差として決定し;目標ピクチャーのPOCと目標ピクチャーの目標参照ピクチャーのPOCとの間の差を第2の差として決定し;第1の差の、第2の差に対する比に基づいて、共位置のサブブロックの動きベクトルをスケーリングして、処理されるべきサブブロックの動きベクトルを得ることを含む。
共位置のサブブロックの動きベクトルが、第1の差の、第2の差に対する比に基づいてスケーリングされて、処理されるべきサブブロックの動きベクトルを得るとき、具体的には、第1の差の、第2の差に対する比がまず計算されて第1の比を得てもよく、次いで、第1の比と、共位置のサブブロックの動きベクトルとの積が、処理されるべきサブブロックの動きベクトルとして決定される。
具体的には、引き続き図6が例として使用される。処理されるべきサブブロックの動きベクトルは、公式(1)に従って計算されてもよい:
ここで、MVsは、処理されるべきサブブロックの動きベクトルであり、MVは共位置のサブブロックの動きベクトルであり、P1〜P4は、ピクチャー・フレーム1ないしピクチャー・フレーム4のPOCであり、P1−P2は前記第1の差を表わし、P3−P4は前記差を表わす。
任意的に、ある実施形態では、第1の値範囲および第2の値範囲を決定することは:処理されるべきブロックの位置およびサイズ、処理されるべきブロックが位置する符号化ツリー単位CTUの位置およびサイズ、ならびに該CTUの時間的動きベクトル・フィールドの事前設定された拡張範囲に基づいて、第1の値範囲および第2の値範囲を決定することを含む。
第1の値範囲および第2の値範囲は、第1の方向および第2の方向のそれぞれにおいて目標オフセット・ベクトルに利用可能な最大値および最小値を決定することによって決定されうることが理解されるべきである。下記は、このようにして第1の値範囲および第2の値範囲を決定することの詳細な記述を与える。
具体的には、第1の値範囲および第2の値範囲の決定は、以下のプロセスを含む。
(1)処理されるべきブロックの位置およびサイズ、処理されるべきブロックが位置する符号化ツリー単位CTUの位置およびサイズ、ならびに該CTUの時間的動きベクトル・フィールドの事前設定された拡張範囲に基づいて、第1の閾値と第2の閾値を決定する。
(2)処理されるべきブロックの位置およびサイズ、処理されるべきブロックが位置する符号化ツリー単位CTUの位置およびサイズ、および該CTUの時間的動きベクトル・フィールドの事前設定された拡張範囲に基づいて、第3の閾値および第4の閾値を決定する。
(3)第1閾値および第2閾値に基づいて、第1の値範囲を得る。
(4)第3の閾値および第4の閾値に基づいて、第2の値範囲を得る。
第1の閾値は、第1の方向の目標オフセット・ベクトルの成分に利用可能な最小値であり、第2の閾値は、第1の方向の目標オフセット・ベクトルの成分に利用可能な最大値である。第3の閾値は、第2の方向の目標オフセット・ベクトルの成分に利用可能な最小値であり、第4の閾値は、第2の方向の目標オフセット・ベクトルの成分に利用可能な最大値である。
任意的に、ある実施形態では、前記CTUの時間的動きベクトル・フィールドの拡張範囲は、第1の方向および第2の方向における前記CTUの時間的動きベクトル・フィールドの拡張範囲を含む。
第1の方向および第2の方向は、直交関係にある2方向である。
任意的に、第1の方向は水平方向であってもよく、第2の方向は垂直方向であってもよい。
第1の方向が水平方向であり、第2の方向が垂直方向である場合、CTUの時間的動きベクトル・フィールドの拡張範囲は、上方向、下方向、左方向、右方向におけるCTUの時間的動きベクトル・フィールドの拡張値を含むことが理解されるべきである。
たとえば、図7に示されるように、CTUが位置する長方形と破線とで囲まれた領域が、CTUの拡張範囲であり、上方向、下方向、左方向、右方向におけるCTUの拡張値はそれぞれU、B、L、Rである。
U、B、L、Rがすべて0の場合、そのことは、各方向のCTUの拡張値が0であることを示す。この場合、現在のCTUの時間的動きベクトル・フィールドは、対応する位置におけるCTUの時間的動きベクトル・フィールドに制限される。
UおよびBが0であり、LまたはRが0でない場合、現在のCTUによって得られる時間的動きベクトル・フィールドはCTUの上端境界や下端境界を越えることはできないが、CTUの左側境界と右側境界を越えることはできる。図8に示されるように、現在のCTUのMVFと左のCTUのMVFは左および右に延長できるが、上や下に延長することはできない。現在のCTUの時間的動きベクトル・フィールドおよび左CTUの時間的動きベクトル・フィールドは部分的に重なっている。この場合、現在のCTUが処理されるとき、現在のCTUの左側のCTUによって読み取られた時間的動きベクトル・フィールドは、ウィンドウ・スライディングを通じて部分的に再利用されうる。
具体的には、第1の値範囲および第2の値範囲は、公式(2)ないし公式(5)に従って決定されてもよい:
HorMin=CTUX−CUX−L (2)
HorMax=CTUX+CTUW−CUX−CUW+R (3)
VerMin=CTUY−CUY−U (4)
VerMax=CTUY+CTUH−CUY−CUH+B (5)
ここで、CUXおよびCUYはそれぞれ処理されるべきブロックの左上サンプルの水平座標および垂直座標を表わし、CUWおよびCUHは処理されるべきブロックの幅および高さを表わし、CTUXおよびCTUYはそれぞれ処理されるべきブロックが位置するCTUの水平座標および垂直座標を表わし、CTUWおよびCTUHはそれぞれ処理されるべきブロックが位置するCTUの幅および高さであり、U、B、L、Rはそれぞれ上方向、下方向、左方向、右方向におけるCTUの拡張値を表わし、HorMinおよびHorMaxはそれぞれ第1閾値および第2閾値を表わし、VerMinおよびVerMaxはそれぞれ第3閾値および第4閾値を表わす。
任意的に、CTUの時間的動きベクトル・フィールドの拡張範囲に関する情報が、シーケンスパラメータセットSPS、ピクチャーパラメータセットPPS、およびヘッダ・フィールドのうちの少なくとも1つにおいて担持される。
SPS、PPS、およびヘッダ・フィールドはそれぞれ、担持されるパラメータ(U、B、L、およびR)を使用してCTUの拡張範囲を示すことができることが理解されるべきである。
任意的に、CTUの時間的動きベクトル・フィールドの拡張範囲は事前設定される。この場合、CTUの動きベクトルの拡張範囲は、プロトコルに直接書き込まれてもよく、SPS、PPSまたはヘッダ・フィールドにおいて担持される必要はない。
図9は、本願のある実施形態による動きベクトル取得方法の概略フローチャートである。図9に示される方法は、ビデオ・エンコードおよびデコード装置、ビデオコーデック、ビデオ・エンコードおよびデコード・システム、およびビデオ・エンコードおよびデコード機能を有する別の装置によって実行されうる。
図9に示される方法は、ステップ210ないしステップ250を含む。下記は、ステップ210ないしステップ250を詳細に記述する。
210:処理されるべきブロックの目標オフセット・ベクトルと、目標ピクチャーの識別子情報とを決定する。
処理されるべきブロックは、少なくとも1つの処理されるべきサブブロックを含み、処理されるべきブロックは、少なくとも1つの処理されるべきサブブロックからなる。処理されるべきブロックの動きベクトルが得られるとき、処理されるべきブロックのそれぞれの処理されるべきサブブロックの動きベクトルを実際に得る必要がある。処理されるべきブロックがCUである場合、処理されるべきサブブロックはサブCUである。
ステップ210における目標オフセット・ベクトルは、図3に示される方法において言及した目標オフセット・ベクトルと同じ意味を有し、詳細はここでは再度説明しない。
目標ピクチャーの識別子情報は、具体的には、ピクチャー・シーケンス内の目標ピクチャーのPOCであってもよく、または、目標ピクチャーのインデックス情報またはインデックス値であってもよい。
220:処理されるべきサブブロックの位置とオフセット・ベクトルとに基づいて、目標ピクチャー内での、処理されるべきサブブロックの共位置のサブブロックの初期位置を決定する。
具体的には、目標ピクチャー内での、処理されるべきサブブロックの共位置のサブブロックの初期位置が決定されるとき、まず、処理されるべきサブブロックの共位置のサブブロックが決定されてもよく、次いで、共位置のサブブロック上の指定された位置が、目標ピクチャー内での、処理されるべきサブブロックの共位置のサブブロックの初期位置として決定される。たとえば、対応する位置が決定された後、共位置のサブブロックの中心点または左上隅が、目標ピクチャー内での、処理されるべきサブブロックの共位置のサブブロックの初期位置として決定されてもよい。
共位置のサブブロックを決定する態様については、図3に示された方法におけるステップ130の下の関連段落における記述を参照されたい。
さらに、目標ピクチャー内での、処理されるべきサブブロックの共位置のサブブロックの初期位置が決定されるとき、代替的に、共位置のサブブロックは決定されなくてもよく、目標ピクチャー内での、処理されるべきサブブロックに対応する位置が、処理されるべきサブブロックの位置と、目標オフセット・ベクトルとに基づいて、直接、目標ピクチャー内での、処理されるべきサブブロックの共位置のサブブロックの初期位置として決定される。たとえば、処理されるべきサブブロックの中心点または左上隅のような指定された位置がまず決定され、目標オフセット・ベクトルがその位置の座標に加えられて、目標ピクチャー内での、処理されるべきサブブロックの共位置のサブブロックの初期位置が決定できる。
230:初期位置が目標ピクチャーの事前設定領域内にある場合は、その初期位置を目標位置として決定する。
たとえば、図10に示されるように、現在のピクチャーは、処理されるべきブロックを含み、処理されるべきブロックは、左上の処理されるべきサブブロックを含み、目標ピクチャーは、対応するブロックを含み、対応するブロックは、左上の共位置のサブブロックを含み、処理されるべきブロックの目標オフセット・ベクトルは対応するブロックをポイントし、目標ピクチャー内の破線ボックス内の長方形領域が、目標ピクチャーの事前設定領域である。図10から、目標ピクチャー内にある、処理されるべきサブブロックの共位置のサブブロックの初期位置は、目標ピクチャーの事前設定領域内にあることがわかり、初期位置が直接、目標位置として決定されてもよい。
240:初期位置が事前設定領域外の場合は、初期位置に最も近い、事前設定領域内の位置を目標位置として決定する。
たとえば、図11に示されるように、現在のピクチャーは、処理されるべきブロックを含み、処理されるべきブロックは、左上の処理されるべきサブブロックを含み、目標ピクチャーは、対応するブロックを含み、対応するブロックは、左上の共位置のサブブロックを含み、処理されるべきブロックの目標オフセット・ベクトルは対応するブロックをポイントし、目標ピクチャー内の破線ボックス内の長方形領域は、目標ピクチャーの事前設定領域である。図11から、目標ピクチャー内にある、処理されるべきサブブロックの共位置のサブブロックの初期位置が目標ピクチャーの事前設定領域の外側にあることがわかる。この場合、事前設定領域内にあり、初期位置に最も近い位置Aを目標位置として決定する必要がある。
250:目標位置に対応する動きベクトルに基づいて、処理されるべきサブブロックの動きベクトルを決定する。
本願では、事前設定領域内の目標位置が、初期位置と目標ピクチャーの事前設定領域に基づいて見つけられ、次いで、処理されるべきサブブロックの動きベクトルが、目標ピクチャーの特定の範囲内の動きベクトルに基づいて決定される。よって、目標ピクチャーの特定の範囲内の時間的動きベクトル・フィールドを先読みすることによって、メモリ帯域幅およびメモリ読み取り時間の量が低減できる。
任意的に、ステップ250の前に、図9に示される方法は、さらに:目標ピクチャー内の事前設定領域内のサンプルの動きベクトルを得るステップを含む。
ステップ250において目標位置の動きベクトルに基づいて、処理されるべきサブブロックの動きベクトルが決定される前に、目標位置に対応する動きベクトルがまず取得される必要があることが理解されるべきである。メモリ読み取り時間の量および占有メモリ帯域幅を減らすために、目標ピクチャーの事前設定領域におけるサンプルの動きベクトルが前もって取得されてもよい。このようにして、目標位置の動きベクトルを使用する必要がある場合、目標位置に対応する動きベクトルは、事前設定領域内のサンプルの読み取られた動きベクトルから直接得られてもよい。また、目標ピクチャーの事前設定領域のみにおけるサンプルの動きベクトルが得られるため、目標ピクチャー全体を取得する必要がある可能性がある従来の解決策とは異なり、占有メモリ帯域幅を低減できる。
任意的に、ある実施形態では、ステップ230の事前設定領域は、処理されるべきブロックが位置されている符号化ツリー単位CTUの位置およびサイズ、目標ピクチャーのサイズ、および該CTUの時間的動きベクトル・フィールドの事前設定された拡張範囲に基づいて決定される。
CTUの時間的動きベクトル・フィールドの拡張範囲は、第1の方向および第2の方向におけるCTUの時間的動きベクトル・フィールドの拡張範囲を含む。
任意的に、第1の方向は水平方向であり、第2の方向は垂直方向である。
任意的に、第1の方向が水平方向であり、第2の方向が垂直方向である場合、CTUの時間的動きベクトル・フィールドの拡張範囲は、上方向、下方向、左方向、および右方向におけるCTUの時間的動きベクトル・フィールドの拡張範囲を含む。
事前設定領域は、複数の仕方で制限されてもよい。たとえば、任意的に、事前設定領域は、水平座標値範囲および垂直座標値範囲を使用して表わされてもよい。
具体的には、事前設定領域は、水平座標値範囲[最小水平座標値,最大水平座標値]および垂直座標値範囲[最小垂直座標値,最大垂直座標値]によって表現されてもよい。
水平座標値範囲および垂直座標値範囲における値は、公式(6)ないし(9)に従って計算されてもよい:
HorMin=Min(CTUX−L,0) (6)
HorMax=Max(CTUX+CTUW+R−1,PicW−1) (7)
VerMin=Min(CTUY−U,0) (8)
VerMax=Max(CTUY+CTUH+B−1,PicH−1) (9)
ここで、CTUXは処理されるべきブロックが位置するCTUの水平座標であり、CTUYは処理されるべきブロックが位置するCTUの垂直座標であり、CTUWおよびCTUHはそれぞれ処理されるべきブロックが位置するCTUの幅および高さであり、PicWおよびPicHはそれぞれ目標ピクチャーの幅および高さであり、U、B、LおよびRはそれぞれ上方向、下方向、左方向および右方向のCTUの拡張値を表わし、HorMinおよびHorMaxはそれぞれ最小水平座標値および最大水平座標値であり、VerMinおよびVerMaxはそれぞれ最小垂直座標値および最大垂直座標値である。
最小水平座標値、最大水平座標値、最小垂直座標値、および最大垂直座標値は、公式(6)ないし(9)に従った計算を通じて得られ、水平座標値範囲および垂直座標値範囲が得られ、目標ピクチャーの事前設定領域が決定される。
任意的に、CTUの時間的動きベクトル・フィールドの拡張範囲に関する情報が、SPS、PPS、ヘッダ・フィールドのうちの少なくとも1つにおいて担持される。
あるいはまた、CTUの時間的動きベクトル・フィールドの拡張範囲が事前設定されてもよい。この場合、CTUの動きベクトルの拡張範囲は、プロトコルに直接書き込まれてもよく、SPS、PPSまたはヘッダ・フィールドにおいて担持される必要はない。
任意的に、ある実施形態では、目標位置に対応する動きベクトルに基づいて、処理されるべきサブブロックの動きベクトルを決定することは:処理されるべきサブブロックを含むピクチャーのPOC、処理されるべきサブブロックを含むピクチャーの目標参照ピクチャーのPOC、目標ピクチャーのPOC、および目標ピクチャーの目標参照ピクチャーのPOCに基づいて、目標位置に対応する動きベクトルをスケーリングして、処理されるべきサブブロックの動きベクトルを得ることを含む。
具体的には、処理されるべきサブブロックを含むピクチャーのPOC、処理されるべきサブブロックを含むピクチャーの目標参照ピクチャーのPOC、目標ピクチャーのPOC、および目標ピクチャーの目標参照ピクチャーのPOCに基づいて、目標位置に対応する動きベクトルをスケーリングして、処理されるべきサブブロックの動きベクトルを得るとき、処理されるべきサブブロックを含むピクチャーのピクチャー順カウントPOCと、処理されるべきサブブロックを含むピクチャーの目標参照ピクチャーのPOCとの間の差が、まず第3の差として決定されてもよく、目標ピクチャーのPOCと目標ピクチャーの目標参照ピクチャーのPOCとの間の差が第4の差として決定され、次いで、共位置のサブブロックの動きベクトルが、第3の差の、第4の差に対する比率に基づいてスケーリングされて、処理されるべきサブブロックの動きベクトルが得られる。
任意的に、共位置のサブブロックの動きベクトルが、第3の差の、第4の差に対する比に基づいてスケーリングされて、処理されるべきサブブロックの動きベクトルを得ることは:第3の差の、第4の差に対する比を第2の比として決定し;第2の比と目標位置に対応する動きベクトルの積を、処理されるべきサブブロックの動きベクトルとして決定することを含む。
たとえば、図12に示されるように、処理されるべきサブブロックを含むピクチャーはピクチャー・フレーム1であり、ピクチャー・フレーム1の目標参照ピクチャーはピクチャー・フレーム2であり、目標ピクチャーが位置するピクチャー・フレームはピクチャー・フレーム3であり、ピクチャー・フレーム3の目標参照ピクチャーはピクチャー・フレーム4であり、目標位置の動きベクトルはMVである。この場合、MVは、ピクチャー・フレーム1ないしピクチャー・フレーム4のPOCに基づいてスケーリングされて、処理されるべきサブブロックの動きベクトルを得てもよい。
具体的には、処理されるべきサブブロックの動きベクトルは、公式(10)に従って計算されてもよい:
ここで、MVsは、処理されるべきサブブロックの動きベクトルであり、MVは、目標位置の動きベクトルであり、P1ないしP4は、ピクチャー・フレーム1ないしピクチャー・フレーム4のPOCであり、P1−P2は前記第3の差を表わし、P3−P4は前記第4の差を表わす。
処理されるべきブロックについての予測を実装するために、処理されるべきブロックは、処理されるべきブロックのすべての処理されるべきサブブロックの動きベクトルが得られた後に予測されてもよく、処理されるべきブロックの予測されたサンプル値が得られる。あるいはまた、処理されるべき各ブロックの動きベクトルが得られた後、処理されるべきサブブロックは、処理されるべき各サブブロックの予測されたサンプル値を得るように予測されてもよく、すべての処理されるべきサブブロックが予測された後、処理されるべきブロックの予測されたサンプル値が得られる。
上記は、図3ないし図12を参照して、本願の実施形態における動きベクトル取得方法を記述している。本願の技術的解決策をよりよく理解するために、下記は、本願の実施形態における動きベクトル取得方法を、具体的な実施形態を参照して詳細に記述する。
実施形態1および実施形態2は、図3に示される方法に対応し、最終的に見出される共位置のサブブロックが目標ピクチャーの特定領域内にあるように、目標オフセット・ベクトルの値が制限される。実施形態3では、目標オフセット・ベクトルの値に制限は課されないが、目標ピクチャー内にある、処理されるべきサブブロックの共位置のサブブロックの目標位置が、直接、特定の領域に制限される。最後に、実施形態1ないし実施形態3のすべてにおいて、処理されるべきサブブロックの動きベクトルは、目標ピクチャーの特定領域内のサンプルの動きベクトルに基づいて決定される。下記は、実施形態1ないし実施形態3について別個に詳細に説明する。
実施形態1
図13に示されるように、実施形態1における具体的な動きベクトル取得プロセスは、以下のステップを含む。
310:制約範囲を決定する。
ここでの制約範囲は、上記の第1の値範囲および第2の値範囲と等価である。
制約範囲は、第1の方向および第2の方向における目標オフセット・ベクトルの成分の値が制約範囲内に入るように、第1の方向および第2の方向における処理されるべきブロックの目標オフセット・ベクトルの成分の値を制約するように決定されることが理解されるべきである。
任意的に、制約範囲は、CTUの時間的動きベクトル・フィールドの拡張範囲、処理されるべきブロックの位置およびサイズ、および処理されるべきブロックが位置するCTUの位置およびサイズに基づいて決定されてもよい。
CTUの時間的動きベクトル・フィールドの拡張範囲は、パラメータRangeL、RangeR、RangeU、およびRangeB(これらは、前述のパラメータL、R、U、およびBと等価である)を使用することによって定義されてもよく、パラメータRangeL、RangeR、RangeU、およびRangeBは、それぞれ、左方向、右方向、上方向、および下方向の4方向におけるCTUの時間的動きベクトル・フィールドの拡張値を表わす。
RangeL、RangeR、RangeU、RangeBのそれぞれの値は、0、16、32、64などでありうる(サンプルが単位として使用される)。
前述のパラメータRangeL、RangeR、RangeU、およびRangeBは、あらかじめ定義された仕方で直接決定されてもよく、またはより上位層のシンタックスで担持されてもよいことが理解されるべきである。たとえば、RangeL、RangeR、RangeU、およびRangeBは、SPS、PPS、およびヘッダ・フィールドにおいて担持されてもよい。
具体的には、制約範囲は、公式(11)ないし公式(14)に従って決定されてもよい:
HorMin=CTUX−CUX−RangeL (11)
HorMax=CTUX+CTUW−CUX−CUW+RangeR (12)
VerMin=CTUY−CUY−RangeU (13)
VerMax=CTUY+CTUH−CUY−CUH+RangeB (14)
ここで、CUXおよびCUYは処理されるべきブロックの左上のサンプルの位置座標を表わし、CUWおよびCUHは処理されるべきブロックの幅および高さを表わし、CTUXおよびCTUYは処理されるべきブロックが位置するCTUの左上のサンプルの位置座標を表わし、CTUWおよびCTUHは該CTUの幅および高さを表わす。HorMinおよびHorMaxは、水平方向における制約範囲の最小値および最大値を表わす。VerMinおよびVerMaxは、垂直方向における制約範囲の最小値および最大値を表わす。
320:処理されるべきブロックの開始オフセット・ベクトルを決定する。
ここでの開始オフセット・ベクトルは、前述の初期オフセット・ベクトルと等価である。
ステップ310およびステップ320は、同時に実行されてもよく、または別個に、順番に実行されてもよいことが理解されるべきである。
開始オフセット・ベクトルは、目標ピクチャー内の、処理されるべきブロックの目標ピクチャー・ブロックの位置を決定するために使用され、開始オフセット・ベクトルは、以下の2つの態様で決定されうる。
第3の態様は:処理されるべきブロックの空間的近傍ブロックの利用可能な動きベクトルを、開始オフセット・ベクトルとして決定することを含む。
具体的には、第3の態様では、図4のA1、B1、B0、およびA0の順に、最初の利用可能な近傍ブロックの動きベクトルが見出されてもよく、処理されるべきブロックの開始オフセット・ベクトルとして使用される。
第4の態様は:まず、目標ピクチャーを決定し、次いで、目標ピクチャーをポイントする、近隣ブロックの動きベクトルを、開始オフセット・ベクトルとして決定することを含む。
具体的には、第4の態様では、図4のA1、B1、B0、A0の順に、最初の利用可能な近隣ブロックの動きベクトルが見出されてもよく、その動きベクトルが目標ピクチャーをポイントする場合、その動きベクトルが、処理されるべきブロックの開始オフセット・ベクトルとして使用される。動きベクトルが目標ピクチャーをポイントしない場合、その動きベクトルが目標ピクチャーをポイントできるようにするようその動きベクトルはスケーリングされ、スケーリングされた動きベクトルが開始オフセット・ベクトルとして使用される。
330:開始オフセット・ベクトルが制約範囲外かどうかを判定する。
第1の方向または第2の方向の少なくとも1つにおける開始オフセット・ベクトルの成分の値が制約範囲外である場合、開始オフセット・ベクトルが制約範囲外であると判断されることが理解されるべきである。第1の方向および第2の方向のそれぞれにおける開始オフセット・ベクトルの成分の値が制約範囲外でない場合に、開始オフセット・ベクトルは制約範囲外でないと判定される。
開始オフセット・ベクトルが制約範囲外にある場合は、ステップ340およびステップ350が実行される;または、開始オフセット・ベクトルが制約範囲外にない場合は、ステップ360が実行される。
340:制約範囲に基づいて、制限されたオフセット・ベクトルを決定する。
開始オフセット・ベクトルが制約範囲外である場合、開始オフセット・ベクトルが制限されて、制限されたオフセット・ベクトルが制約範囲内に入るよう制限されたオフセット・ベクトルを得る必要がある。
具体的には、開始オフセット・ベクトルが制約範囲外である場合、開始オフセット・ベクトルの成分(xoff,yoff)が公式(15)および公式(16)に従って制限されて、制限されたオフセット・ベクトルを得てもよい:
xoff=Clip3(HorMin,HorMax,xoff) (15)
yoff=Clip3(VerMin,VerMax,yoff) (16)
ここで、Clip3関数はクリッピング関数であり、具体的には次のように定義される:
制約範囲に基づいて目標オフセット・ベクトルを決定する態様以外に、代替的に、ゼロ動きベクトルが直接、目標オフセット・ベクトルとして使用されてもよいことが理解されるべきである。あるいはまた、ATMVP技術が使用されてもよいが、処理されるべきサブブロックの動きベクトルを得るために別の技術が使用される。
350:制限されたオフセット・ベクトルを、目標オフセット・ベクトルとして決定する。
制限されたオフセット・ベクトルは制約範囲内に入るので、制限されたオフセット・ベクトルは目標オフセット・ベクトルとして決定されてもよい。
360:開始オフセット・ベクトルを、目標オフセット・ベクトルとして決定する。
開始オフセット・ベクトルが制約範囲内に入る場合、開始オフセット・ベクトルに対して制約または制限動作が実行される必要はなく、開始オフセット・ベクトルが直接、目標オフセット・ベクトルとして決定されてもよい。
370:目標ピクチャー内で、処理されるべきサブブロックの位置と、目標オフセット・ベクトルとに基づいて、処理されるべきサブブロックの共位置のサブブロックを決定する。
380:共位置のサブブロックの動きベクトルに基づいて、処理されるべきサブブロックの動きベクトルを決定する。
具体的には、処理されるべきサブブロックを含むピクチャーのPOC、処理されるべきサブブロックを含むピクチャーの目標参照ピクチャーのPOC、目標ピクチャーのPOC、および目標ピクチャーの目標参照ピクチャーのPOCに基づいて、共位置のサブブロックの動きベクトルがスケーリングされて、処理されるべきサブブロックの動きベクトルを得てもよい。
処理されるべきサブブロックの動きベクトルが得られた後、処理されるべきサブブロックの予測されたサンプル値が、処理されるべきサブブロックの動きベクトルに基づいて決定されてもよい。
処理されるべきサブブロックの予測されたサンプル値が決定されるとき、処理されるべきサブブロックの動きベクトルに基づいて、処理されるべきサブブロックの予測サブブロックが決定されてもよく、次いで、予測サブブロックのサンプル値が、処理されるべきサブブロックの予測されたサンプル値として決定される。このようにして、各処理されるべきサブブロックの予測されたサンプル値が得られた後、処理されるべきブロック全体の予測されたサンプル値が得られる。
実施形態2
図14に示されるように、実施形態2における具体的な動きベクトル取得プロセスは、以下のステップを含む。
410:制約範囲を決定する。
ここでの制約範囲の意味および決定態様は、実施形態1における制約範囲のものと同じであり、ここでは、再度、詳細について説明しない。
420:処理されるべきブロックの近傍ブロックの動きベクトルを取得する。
具体的には、図4のA1、B1、B0、A0の順で、最初の利用可能な近傍ブロックの動きベクトルを得ることができる。
あるいはまた、まず、目標ピクチャーが決定されてもよく、次いで、図4のA1、B1、B0、およびA0の順で、処理されるべきブロックの近傍ブロックの動きベクトルが得られる。動きベクトルが目標ピクチャーをポイントする場合は、ステップ430が実行される。動きベクトルが目標ピクチャーをポイントしない場合は、動きベクトルはスケーリングされ、スケーリングされた動きベクトルが目標ピクチャーをポイントするようにされる。次いで、スケーリングされた動きベクトルが近傍ブロックの動きベクトルとして使用され、ステップ440が実行されることに続く。
430:近傍ブロックの動きベクトルが制約範囲内に入るかどうかを判定する。
近傍ブロックの動きベクトルの成分の値が制約範囲内に入る場合は、ステップ440が実行される;または、近傍ブロックの動きベクトルの成分の値が制約範囲内に入らない場合は、ステップ420が実行されることに続き、それが近傍ブロックの動きベクトルの成分の値が制約範囲内に入るまで行なわれる。
第1の方向および第2の方向の両方における近傍ブロックの動きベクトルの成分の値が制約範囲内にある場合に、近傍ブロックの動きベクトルが制約範囲内に入ると判断されることが理解されるべきである。第1の方向の近傍ブロックの動きベクトル成分の値、および/または第2の方向の近傍ブロックの動きベクトル成分の値が制約範囲外である場合には、近傍ブロックの動きベクトルは制約範囲内に入らない(近傍ブロックの動きベクトルは制約範囲外である)と判断される。
440:近傍ブロックの動きベクトルを、目標オフセット・ベクトルとして決定する。
450:目標ピクチャーにおいて、処理されるべきサブブロックの位置と、目標オフセット・ベクトルとに基づいて、処理されるべきサブブロックの共位置のサブブロックを決定する。
460:共位置のサブブロックの動きベクトルに基づいて、処理されるべきサブブロックの動きベクトルを決定する。
具体的には、処理されるべきサブブロックを含むピクチャーのPOC、処理されるべきサブブロックを含むピクチャーの目標参照ピクチャーのPOC、目標ピクチャーのPOC、および目標ピクチャーの目標参照ピクチャーのPOCに基づいて、共位置のサブブロックの動きベクトルがスケーリングされて、処理されるべきサブブロックの動きベクトルを得てもよい。
処理されるべきサブブロックの動きベクトルが得られた後、処理されるべきサブブロックの予測されたサンプル値が、処理されるべきサブブロックの動きベクトルに基づいて決定されうる。
実施形態3
図15に示されるように、実施形態3における具体的な動きベクトル取得プロセスは、以下のステップを含む。
510:処理されるべきブロックの目標オフセット・ベクトルと目標ピクチャーの識別子情報を決定する。
ステップ510における目標オフセット・ベクトルおよび目標ピクチャーの識別子情報を決定するプロセスは、ステップ210におけるものと同じである。
520:処理されるべきサブブロックの位置と目標オフセット・ベクトルとに基づいて、目標ピクチャー内にある、処理されるべきサブブロックの共位置のサブブロックの初期位置を決定する。
具体的には、目標ピクチャー内にある、処理されるべきサブブロックの共位置のサブブロックの初期位置の位置座標が、公式(18)に従って決定されうる:
ここで、(x,y)は、処理されるべきブロックの左上頂点の座標を表わし、iは、処理されるべきブロックの左から右へi番目のサブブロックを表わし、jは、処理されるべきブロックの上から下へj番目のサブブロックを表わし、(xoff,yoff)は、第1の方向および第2の方向におけるオフセット動きベクトルの成分の値を表わし、MおよびNは、処理されるべきサブブロックのサイズを表わし(ここで、Mは、処理されるべきサブブロックの幅を表わしてもよく、Nは、処理されるべきサブブロックの高さを表わしてもよい)、(x(i,j),y(i,j))は(i,j)番目の共位置のサブブロックの位置座標を表わす。
530:初期位置が、対応するピクチャーの事前設定領域内にあるかどうかを判定する。
初期位置が、対応するピクチャーの事前設定領域内にある場合は、ステップ550が直接実行される。初期位置が、対応するピクチャーの事前設定領域の外側にある場合は、まずステップ540が実行され、その後ステップ550が実行される。
事前設定領域は、目標ピクチャー内の固定範囲であってもよく、対応するピクチャーの事前設定領域は、公式(19)ないし公式(22)に従って決定されてもよい:
HorMin=Min(CTUX−RangeL,0) (19)
HorMax=Max(CTUX+CTUW+RangeR−1,PicW−1) (20)
VerMin=Min(CTUY−RangeU,0) (21)
VerMax=Max(CTUY+CTUH+RangeB−1,PicH−1) (22)
HorMinおよびHorMaxは水平方向における制約範囲の最小値および最大値を表わし、VerMinおよびVerMaxは垂直方向における制約範囲の最小値および最大値を表わし、CTUXおよびCTUYは処理されるべきブロックが位置するCTUの左上のサンプルの位置座標を表わし、CTUWおよびCTUHは該CTUの幅および高さを表わし、RangeU、RangeB、RangeL、RangeRはそれぞれ上方向、下方向、左方向、右方向における、該CTUの時間的動きベクトル・フィールドの拡張値を表わし、PicWおよびPicHはそれぞれ目標ピクチャーの幅および高さである。
540:初期位置を目標位置として決定する。
初期位置が目標ピクチャーの事前設定領域内にある場合は、初期位置が直接、目標位置として決定されてもよい。
550:事前設定領域にある、初期位置に最も近い位置を目標位置として決定する。
具体的には、初期位置が目標ピクチャーの事前設定領域の外側にある場合、事前設定領域内にあり、初期位置に最も近い位置が目標位置として決定されてもよい。具体的には、初期位置が目標ピクチャーの事前設定領域の外側である場合、目標位置は、公式(23)および公式(24)に従って決定されてもよい:
x(i,j)=Clip3(HorMin,HorMax,x(i,j)) (23)
y(i,j)=Clip3(VerMin,VerMax,y(i,j)) (24)
ここで、Clip3関数は、クリッピング関数であり、具体的な定義は上記の公式(17)に示されている。
560:目標位置に対応する動きベクトルに基づいて、処理されるべきサブブロックの動きベクトルを決定する。
具体的には、処理されるべきサブブロックを含むピクチャーのPOC、処理されるべきサブブロックを含むピクチャーの目標参照ピクチャーのPOC、目標ピクチャーのPOC、および目標ピクチャーの目標参照ピクチャーのPOCに基づいて、目標位置の動きベクトルがスケーリングされて、処理されるべきサブブロックの動きベクトルを得てもよい。
処理されるべきサブブロックの動きベクトルが得られた後、処理されるべきサブブロックの予測されたサンプル値が、処理されるべきサブブロックの動きベクトルに基づいて決定されてもよい。
本願によってもたらされる有益な効果をよりよく理解するために、下記は、図16および図17を参照して、本願の実施形態における動きベクトル取得方法の有益な効果を詳細に説明する。
図16に示されるように、現在のピクチャーは現在のCTUを含み、現在のCTUは複数の処理されるべきブロックを含み、各処理されるべきブロックは複数の処理されるべきサブブロックを含み、各処理されるべきブロックは1つのオフセット・ベクトルに対応する。処理されるべきブロックの対応するブロックは、対応するオフセット・ベクトルに基づいて見つけることができる。各処理されるべきサブブロックは、目標ピクチャー内の1つの共位置のサブブロックに対応する。処理されるべきサブブロックに対応する、目標ピクチャー内の共位置のサブブロックが位置する領域が不確定であるか、または、処理されるべきサブブロックに対応する、目標ピクチャー内の位置が不確定である場合、共位置のサブブロックの動きベクトルが得られるとき、対応するピクチャー全体の時間的動きベクトル・フィールドが前もって得られなければならない可能性がある。結果として、メモリ帯域幅が増大する。
図17に示されるように、現在のピクチャーは現在のCTUを含み、現在のCTUは複数の処理されるべきブロックを含み、各処理されるべきブロックは複数の処理されるべきサブブロックを含み、目標ピクチャー内の破線領域は目標ピクチャーの事前設定領域を示す。本願では、処理されるべきブロックのオフセット・ベクトルの範囲が制約され、それにより目標ピクチャー内にある、処理されるべきサブブロックに対応する共位置のサブブロックが目標ピクチャーの事前設定領域内にあるか、または目標ピクチャー内にある、処理されるべきサブブロックの共位置のサブブロックの対応する位置が目標ピクチャーの事前設定領域内にある。このようにして、得られる必要があるのは目標ピクチャーのみの動きベクトルであり、目標ピクチャー全体の動きベクトルが得られる必要はない。これは、メモリ帯域幅を低減できる。さらに、先読みを通じて、メモリ読み出し時間の量を低減できる。
本願の実施形態における動きベクトル取得方法は、インター予測のマージモードに適用されてもよい。
サブ符号化単位ベースの動きベクトル予測(Sub-CU based motion vector prediction、SMVP)技術では、現在の符号化単位がサイズM×Nのサブ符号化単位に分割され、各サブ符号化単位の動き情報が推定され、次いで、各サブ符号化単位の動き情報に基づいて動き補償が実行されて、現在の符号化単位の予測子が得られる。
SMVP技術がマージモードに適用される場合、先進時間的動きベクトル予測(advanced temporal motion vector prediction、ATMVP)および空間時間的動きベクトル予測(spatial-temporal motion vector prediction、STMVP)の2つのタイプの候補動き情報が、もとのマージモードに基づいて追加される。
ATMVP技術では、まず共位置の参照ピクチャー(collocated reference picture)が決定され、次いで、現在の符号化単位が、サイズM×Nのサブ符号化単位に分割され、共位置の参照ピクチャー内にあり、各現在のサブ符号化単位に対応するサブ符号化単位の中心点におけるサンプルの動き情報が得られ、その動き情報がスケーリングされて、その動き情報が各現在のサブ符号化単位の動き情報に変換される。本願の実施形態における動きベクトル取得方法は、改良されたATMVP技術として理解されてもよい。
図4に示される、処理されるべきブロックの近傍ブロックに基づき、下記は、図18および図19を参照して、既存のマージモードにおける候補情報リスト構築プロセスと、SMVP技術が適用されるマージモードにおける候補情報リスト構築プロセスとを別々に説明する。
既存のマージモードにおける候補情報リスト構築プロセスが図18に示される。
図18に示される候補情報リスト構築プロセスは、以下のステップを含む。
610:A1、B1、B0、A2の位置の動き情報を挿入する。
620:B2の位置の動き情報を挿入する。
630:時間的位置(TまたはC)の動き情報を挿入する。
640:候補動き情報リストをパディングする。
SMVP技術が適用されるマージモードにおける候補情報リスト構築プロセスが図19に示される。
図19に示される候補情報リスト構築プロセスは、以下のステップを含む。
710:A1、B1、B0、A2の位置の動き情報を挿入する。
720:ATMVP動き情報およびSTMVP動き情報を挿入する。
730:B2の位置の動き情報を挿入する。
740:時間的位置(TまたはC)の動き情報を挿入する。
750:候補動き情報リストをパディングする。
図18と比較して、図19は、さらに、ATMVP動き情報およびSTMVP動き情報を挿入するステップ720を含んでいる。他のステップは変更されないままである。
本願の実施形態における動きベクトル取得方法に従って取得される、処理されるべきサブブロックの動きベクトルは、ステップ720において挿入されるATMVP動き情報の一部であることが理解されるべきである。
具体的には、図4に示される処理されるべきブロックの近傍ブロックに基づき、SMVP技術がマージモードに適用される場合、マージモードにおけるエンコードは、具体的には以下のプロセスを含む。
(1)空間的近傍ブロックA1、B1、B0、A0の位置の動き情報を順に取得し、利用可能性を検査し、繰り返されている項目を削除し、動き情報を候補動き情報リストに挿入する。
(2)ATMVP動き情報およびSTMVP動き情報を取得し、利用可能性を検査し、繰り返されている項目を削除し、動き情報を候補動き情報リストに挿入する。
(3)候補動き情報リストの長さが6未満である場合、B2の位置の動き情報を取得し、利用可能性を検査し、繰り返されている項目を削除し、動き情報を候補動き情報リストに挿入する。
(4)近傍のエンコードされたフレーム内の位置Tに対応するブロックの動き情報を取得し(該動き情報が存在しない場合は、位置Cに対応するブロックの動き情報が取得される)、その動き情報をスケーリングし、スケーリングされた動き情報を候補動き情報リストに挿入する。
(5)候補動き情報リストの長さが7未満である場合、パディングを実行して、長さが7の候補動き情報リストを得る。
(6)候補動き情報リスト内の各候補動き情報をたどり、動き補償および再構成を実行して再構成値を得て、次いでレート歪み最適化(rate distortion optimization、RDO)法に従って、最低のレート歪みコスト(rate distortion cost、RDコスト)をもつ候補動き情報を決定して、マージ・インデックス(index)を得る。
(7)候補動き情報リストの長さに基づいて、マージインデックスをビットストリームに書き込み、ビットストリームをデコーダ側に送信する。
マージモードにおける候補動き情報リスト構築プロセスが図19に示されている。
上記は、図3ないし図19を参照して、本願の実施形態における動きベクトル取得方法を詳細に記述している。本願の実施形態における動きベクトル取得方法は、図1および図2に示されるインター予測に対応しうることが理解されるべきである。本願の実施形態における動きベクトル取得方法は、図1および図2に示されるインター予測プロセスにおいて実行されてもよい。本願の実施形態における動きベクトル取得方法は、具体的には、エンコーダまたはデコーダ内のインター予測モジュールによって実行されてもよい。さらに、本願の実施形態における動きベクトル取得方法は、ビデオ・ピクチャーをエンコードおよび/またはデコードする必要がある可能性がある任意の電子デバイスまたは装置において実装されてもよい。
下記は、図20および図21を参照して、本願の実施形態における動きベクトル取得装置を詳細に説明する。図20に示される装置は、図3、図13、および図14に示される方法に対応し、図3、図13、および図14に示される方法におけるステップを実行することができる。図21に示される装置は、図9および図15に示される方法に対応し、図9および図15に示される方法におけるステップを実行することができる。簡潔のため、繰り返される記載は下記では適宜割愛する。
図20は、本願のある実施形態による動きベクトル取得装置の概略ブロック図である。図20に示される装置800は:
決定モジュール810であって、該決定モジュール810は:
第1の値範囲および第2の値範囲を決定するステップと;
処理されるべきブロックの目標オフセット・ベクトルと、目標ピクチャーの識別子情報とを決定するステップであって、処理されるべきブロックは、少なくとも1つの処理されるべきサブブロックを含み、第1の方向における目標オフセット・ベクトルの成分の値は、第1の値範囲内に入り、第2の方向における目標オフセット・ベクトルの成分の値は、第2の値範囲内に入り、第1の方向および第2の方向は、直交関係にある、ステップと;
目標ピクチャーにおいて、処理されるべきサブブロックの位置および目標オフセット・ベクトルに基づいて、処理されるべきサブブロックの共位置のサブブロックを決定するステップとを実行するように構成されている、決定モジュール;および
共位置のサブブロックの動きベクトルに基づいて、処理されるべきサブブロックの動きベクトルを得るように構成された取得モジュール820を含む。
本願では、目標オフセット・ベクトルの成分値が特定の値範囲内に入るので、目標オフセット・ベクトルに基づいて目標ピクチャー内で決定される処理されるべきサブブロックも、目標ピクチャーの特定の範囲内に入る。よって、目標ピクチャーの該特定の範囲内の時間的動きベクトル・フィールドを先読みすることによって、メモリ帯域幅およびメモリ読み取り時間の量が低減できる。
決定モジュール810および取得モジュール820は、エンコードおよびデコード装置における予測モジュール(これは特に、インター予測モジュールであってもよい)に対応してもよい。特定の実装の間、決定モジュール810および取得モジュール820は、ソフトウェアまたはハードウェアを使用することによって実装されてもよく、またはソフトウェアおよびハードウェアの組み合わせを使用することによって実装されてもよい。
図21は、本願のある実施形態による動きベクトル取得装置の概略ブロック図である。図21に示される装置900は:
決定モジュール910であって、該決定モジュールは:
処理されるべきブロックの目標オフセット・ベクトルと、目標ピクチャーの識別子情報とを決定するステップであって、前記処理されるべきブロックは少なくとも1つの処理されるべきサブブロックを含む、ステップと;
処理されるべきサブブロックの位置と、目標オフセット・ベクトルとに基づいて、目標ピクチャー内にある、処理されるべきサブブロックの共位置のサブブロックの初期位置を決定するステップと;
初期位置が目標ピクチャーの事前設定領域内にある場合、初期位置を目標位置として決定する;または
初期位置が事前設定領域外である場合、事前設定領域内にあり、初期位置に最も近い位置を目標位置として決定するステップとを実行するよう構成されている決定モジュール;および
前記目標位置に対応する動きベクトルに基づいて、処理されるべきサブブロックの動きベクトルを取得するように構成されている取得モジュール920を含む。
本願では、事前設定領域内の目標位置は、前記初期位置と、目標ピクチャーの事前設定領域とに基づいて見つけられ、次に、処理されるべきサブブロックの動きベクトルは、目標ピクチャーの特定の範囲内の動きベクトルに基づいて決定される。よって、目標ピクチャーの特定の範囲内の時間的動きベクトル・フィールドを先読みすることによって、メモリ帯域幅およびメモリ読み取り時間の量が低減できる。
決定モジュール910および取得モジュール920は、エンコードおよびデコード装置における予測モジュールに対応してもよく、該予測モジュールは特に、インター予測モジュールであってもよい。具体的な実装の間、決定モジュール910および取得モジュール920は、ソフトウェアまたはハードウェアを使用することによって実装されてもよく、またはソフトウェアおよびハードウェアの組み合わせを使用することによって実装されてもよい。
本願の実施形態における動きベクトル取得方法は、代替的に、ビデオ・エンコーダまたはビデオ・デコーダによって実行されてもよい。下記は、図22および図23を参照して、本願の実施形態におけるビデオ・エンコーダおよびビデオ・デコーダの構造を説明する。
図22は、本願のある実施形態によるビデオ・エンコーダの概略ブロック図である。図22に示されるビデオ・エンコーダ1000は、エンコーダ側予測モジュール1001、変換および量子化モジュール1002、エントロピー符号化モジュール1003、エンコードおよび再構成モジュール1004、およびエンコーダ側フィルタリング・モジュールを含む。
図22に示されるビデオ・エンコーダ1000は、ビデオをエンコードすることができる。具体的には、ビデオ・エンコーダ1000は、図1に示されるビデオ・エンコード・プロセスを実行して、ビデオをエンコードすることができる。さらに、ビデオ・エンコーダ1000は、本願の実施形態における動きベクトル取得方法をさらに実行することができ、ビデオ・エンコーダ1000は、図3、図9、および図13ないし図15に示される方法のステップを実行することができる。
本願の実施形態における動きベクトル取得装置は、ビデオ・エンコーダ1000内のエンコーダ側予測モジュール1001であってもよい。具体的には、図20および図21に示される装置6000および装置7000は、ビデオ・エンコーダ1000内のエンコーダ側予測モジュール1001と等価である。
図23は、本願のある実施形態によるビデオ・デコーダの概略ブロック図である。図23にされる示すビデオ・デコーダ2000は、エントロピー復号デコードモジュール2001、逆変換および逆量子化モジュール2002、デコーダ側予測モジュール2003、デコードおよび再構成モジュール2004、およびデコーダ側フィルタリング・モジュール2005を含む。
図23に示されるビデオ・デコーダ2000は、ビデオをデコードすることができる。具体的には、ビデオ・デコーダ2000は、図2に示されるビデオ復号・デコード・プロセス処理を実行して、ビデオをデコードすることができる。さらに、ビデオ・デコーダ2000は、さらに本願の実施形態における動きベクトル取得方法を実行することができ、ビデオ・デコーダ2000は、図3、図9、および図13ないし図15に示される動きベクトル取得方法のステップを実行することができる。
本願の実施形態における動きベクトル取得装置は、ビデオ・デコーダ2000におけるデコーダ側予測モジュール2003であってもよい。具体的には、図20および図21に示される装置6000および装置7000は、ビデオ・デコーダ2000におけるデコーダ側予測モジュール2003と等価である。
下記は、図24ないし図26を参照して、本願の実施形態における動きベクトル取得方法の適用シナリオを説明する。本願の実施形態における動きベクトル取得方法は、図24ないし図26に示される、ビデオ伝送システム、エンコードおよびデコード装置、ならびにエンコードおよびデコード・システムによって実行されてもよい。
図24は、本願のある実施形態によるビデオ伝送システムの概略ブロック図である。
図24に示されるように、ビデオ伝送システムは、収集モジュール3001、エンコード・モジュール3002、送信モジュール3003、ネットワーク伝送3004、受信モジュール3005、デコード・モジュール3006、レンダリング・モジュール3007、および表示モジュール208を含む。
ビデオ伝送システムのモジュールは、以下の具体的な機能をもつ。
収集モジュール3001は、カメラまたはカメラ・グループを含み、エンコードの前に、ビデオ・ピクチャーを収集し、収集されたビデオ・ピクチャーに対して処理を実行して、光信号をデジタル化されたビデオ・シーケンスに変換するように構成される。
エンコード・モジュール3002は、ビデオ・シーケンスをエンコードして、ビットストリームを得るように構成される。
送信モジュール3003は、エンコードされたビットストリームを送信するように構成される。
受信モジュール3005は、送信モジュール3003によって送信されたビットストリームを受信するように構成される。
ネットワーク3004は、送信モジュール3003によって送信されたビットストリームを受信モジュール3005に伝送するように構成される。
デコード・モジュール3006は、受信モジュール3005によって受信されたビットストリームをデコードして、ビデオ・シーケンスを再構成するように構成される。
レンダリング・モジュール3007は、ビデオ表示効果を改善するために、デコード・モジュール3006によるデコードを通じて得られた再構成されたビデオ・シーケンスをレンダリングするように構成される。
図24に示されるビデオ伝送システムは、本願の実施形態における動きベクトル取得方法を実行することができる。具体的には、図24に示されるビデオ伝送システムにおけるエンコード・モジュール3001およびデコード・モジュール3006の両方が、本願の実施形態における動きベクトル取得方法を実行してもよい。
下記は、図25および図26を参照して、エンコードおよびデコード装置、ならびに該エンコードおよびデコード装置を含むエンコードおよびデコード・システムについて詳細に説明する。図25および図26に示されるエンコードおよびデコード装置ならびにエンコードおよびデコード・システムは、本願の実施形態における動きベクトル取得方法を実行することができることが理解されるべきである。
図25は、本願のある実施形態によるビデオ・エンコードおよびデコード装置の概略図である。ビデオ・エンコードおよびデコード装置50は、ビデオ・ピクチャーをエンコードおよび/またはデコードするために専用の装置、またはビデオ・エンコードおよびデコード機能を有する電子装置であってもよい。あるいはまた、エンコードおよびデコード装置50は、無線通信システムにおける移動端末またはユーザー装置であってもよい。
エンコードおよびデコード装置50は以下のモジュールまたはユニット:コントローラ56、コーデック54、無線インターフェース52、アンテナ44、スマートカード46、カードリーダー48、キーパッド34、メモリ58、赤外線ポート42、およびディスプレイ32を含むことができる。図25に示されるモジュールおよびユニットに加えて、エンコードおよびデコード装置50は、マイクロフォンおよび任意の適切なオーディオ入力モジュールをさらに含んでいてもよい。オーディオ入力モジュールは、デジタル信号またはアナログ信号を入力することができる。エンコードおよびデコード装置50は、さらに、オーディオ出力モジュールを含んでいてもよい。オーディオ出力モジュールは、ヘッドセット、スピーカー、またはアナログ・オーディオ出力接続またはデジタル・オーディオ出力接続であってもよい。エンコードおよびデコード装置50は、さらに、電池を含んでいてもよい。電池は、太陽電池、燃料電池などであってもよい。エンコードおよびデコード装置50は、さらに、他の装置との近距離見通し内通信を実行するように構成された赤外線ポートを含んでいてもよい。あるいはまた、エンコードおよびデコード装置50は、たとえばBluetooth無線接続またはUSB/ライブライン有線接続を通じて、任意の適切な短距離通信モードで前記他の装置と通信してもよい。
メモリ58は、ピクチャーの形のデータおよびオーディオの形のデータを記憶してもよく、また、コントローラ56上で実行される命令を記憶してもよい。
コーデック54は、オーディオおよび/またはビデオ・データをエンコードおよびデコードするか、または、コントローラ56の制御の下で、オーディオおよび/またはビデオ・データに対する支援されたエンコードおよび支援されたデコードを実装することができる。
スマートカード46およびカードリーダー48は、ユーザー情報を提供することができ、また、ネットワーク認証の認証情報および認可されたユーザーを提供することができる。スマートカード46およびカードリーダー48の具体的な実装形態は、ユニバーサル集積回路カード(universal Integrated circuit card、UICC)およびUICCリーダーであってもよい。
無線インターフェース回路52は、無線通信信号を生成することができる。無線通信信号は、セルラー通信ネットワーク、無線通信システム、または無線ローカルエリアネットワークにおける通信中に生成される通信信号であってもよい。
アンテナ44は、無線インターフェース回路52によって生成された無線周波数信号を別の装置(一つまたは複数の装置があってもよい)に送信するように構成されており、さらに別の装置(一つまたは複数の装置があってもよい)から無線周波数信号を受信するように構成されてもよい。
本願のいくつかの実施形態では、エンコードおよびデコード装置50は、伝送および/または記憶の前に、他の装置から処理されるべきビデオ・ピクチャー・データを受信してもよい。本願の他のいくつかの実施形態では、エンコードおよびデコード装置50は、無線または有線接続を通じてピクチャーを受信し、受信したピクチャーをエンコード/デコードしてもよい。
図26は、本願のある実施形態による、ビデオ・エンコードおよびデコード・システム7000の概略ブロック図である。
図26に示されるように、ビデオ・エンコードおよびデコード・システム7000は、源装置4000および宛先装置5000を含む。源装置4000は、エンコードされたビデオ・データを生成する。源装置4000は、ビデオ・エンコード装置またはビデオ・エンコード・デバイスと称されることもある。宛先装置5000は、源装置4000によって生成されたエンコードされたビデオ・データをデコードしてもよい。宛先装置5000は、ビデオ・デコード装置またはビデオ・デコード・デバイスと称されてもよい。
源装置4000および宛先装置5000の具体的な実施形態は、それぞれ、デスクトップコンピュータ、モバイル・コンピューティング装置、ノートブック(たとえば、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、スマートフォン、ハンドセット、テレビ、カメラ、ディスプレイ装置、デジタルメディアプレーヤー、ビデオゲームコンソール、車載コンピュータ、または他の同様の装置のうちの任意のものであってもよい。
宛先装置5000は、エンコードされたビデオ・データを、チャネル6000を通じて源装置4000から受信してもよい。チャネル6000は、エンコードされたビデオ・データを源装置4000から宛先装置5000へ移すことができる一つまたは複数の媒体および/または装置を含んでいてもよい。一例では、チャネル6000は、源装置4000がエンコードされたビデオ・データを宛先装置5000にリアルタイムで直接伝送することを可能にすることができる一つまたは複数の通信媒体を含んでいてもよい。この例では、源装置4000は、エンコードされたビデオ・データを通信規格(たとえば、無線通信プロトコル)に従って変調し、変調されたビデオ・データを宛先装置5000に送信してもよい。前記一つまたは複数の通信媒体は、無線および/または有線通信媒体、たとえば、無線周波数(radio frequency、RF)スペクトルまたは一つまたは複数の物理伝送ケーブルを含んでいてもよい。前記一つまたは複数の通信媒体は、パケットベースのネットワーク(たとえば、ローカルエリアネットワーク、ワイドエリアネットワーク、またはグローバルネットワーク(たとえば、インターネット))の一部を形成していてもよい。前記一つまたは複数の通信媒体は、源装置4000と宛先装置5000との間の通信を実装するルーター、スイッチ、基地局、または他の装置を含んでいてもよい。
別の例では、チャネル6000は、源装置4000によって生成されたエンコードされたビデオ・データを記憶する記憶媒体を含んでいてもよい。この例では、宛先装置5000は、ディスクアクセスまたはカードアクセスを通じて記憶媒体にアクセスすることができる。記憶媒体は、ブルーレイディスク、高密度デジタルビデオディスク(digital video disc、DVD)、コンパクトディスク読み出し専用メモリ(compact disc read-only memory、CD-ROM)、フラッシュメモリ、またはエンコードされたビデオ・データを記憶するように構成された他の好適なデジタル記憶媒体のような、複数のローカルにアクセス可能なデータ記憶媒体を含んでいてもよい。
別の例では、チャネル6000は、源装置4000によって生成されたエンコードされたビデオ・データを記憶するファイル・サーバーまたは別の中間記憶装置を含んでいてもよい。この例では、宛先装置5000は、ストリーミング伝送またはダウンロードを通じて、ファイル・サーバーまたは前記別の中間記憶装置に記憶されたエンコードされたビデオ・データにアクセスすることができる。ファイル・サーバーは、エンコードされたビデオ・データを記憶し、エンコードされたビデオ・データを宛先装置5000に伝送することができるタイプのサーバーであってもよい。たとえば、ファイル・サーバーは、ワールドワイドウェブ(world wide web、Web)サーバー(たとえばウェブサイトのために使用される)、ファイル転送プロトコル(file transfer protocol、FTP)サーバー、ネットワークアタッチトストレージ(network attached storage、NAS)装置、またはローカルディスクドライブを含みうる。
宛先装置5000は、標準的なデータ接続(たとえば、インターネット接続)を通じて、エンコードされたビデオ・データにアクセスすることができる。データ接続の例示的なタイプは、ファイル・サーバーに記憶されたエンコードされたビデオ・データにアクセスするのに好適な無線チャネルまたは有線接続(たとえば、ケーブルモデム)、またはそれらの組み合わせを含む。ファイル・サーバーからのエンコードされたビデオ・データの伝送は、ストリーミング伝送、ダウンロード伝送、またはそれらの組み合わせであってもよい。
本願における動きベクトル取得方法は、無線アプリケーションシナリオに限定されない。たとえば、本願における動きベクトル取得方法は、無線テレビジョン放送、ケーブルテレビジョン伝送、衛星テレビジョン伝送、(たとえばインターネットを通じた)ストリーミングビデオ伝送、データ記憶媒体に記憶されたビデオ・データのエンコード、データ記憶媒体に記憶されたビデオ・データのデコード、または他のアプリケーションなどの複数のマルチメディアアプリケーションをサポートするビデオ・エンコードおよびデコードに適用されうる。いくつかの例において、ビデオ・エンコードおよびデコード・システム7000は、ビデオストリーミング伝送、ビデオ再生、ビデオ放送、および/またはビデオ電話などのアプリケーションをサポートするように、一方向または双方向ビデオ伝送をサポートするように構成されてもよい。
図26において、源装置4000は、ビデオ源4001、ビデオ・エンコーダ4002、および出力インターフェース4003を含む。いくつかの例において、出力インターフェース4003は、変調器/復調器(モデム)および/または送信器を含んでいてもよい。ビデオ源4001は、ビデオ・キャプチャ装置(たとえば、ビデオ・カメラ)、以前にキャプチャされたビデオ・データを含むビデオ・アーカイブ、ビデオ・コンテンツ・プロバイダーからビデオ・データを受信するように構成されたビデオ入力インターフェース、および/またはビデオ・データを生成するように構成されたコンピュータ・グラフィックス・システムを含んでいてもよく、または前述のビデオ・データ源の組み合わせを含んでいてもよい。
ビデオ・エンコーダ4002は、ビデオ源4001からのビデオ・データをエンコードしてもよい。いくつかの例において、源装置4000は、出力インターフェース4003を通じて、エンコードされたビデオ・データを宛先装置5000に直接送信する。宛先装置5000がデコードおよび/または再生のために、エンコードされたビデオ・データに後でアクセスするよう、エンコードされたビデオ・データはさらに、記憶媒体またはファイル・サーバーに記憶されてもよい。
図26の例では、宛先装置5000は、入力インターフェース5003、ビデオ・デコーダ5002、および表示装置5001を含む。いくつかの例では、入力インターフェース5003は、受信機および/またはモデムを含む。入力インターフェース5003は、エンコードされたビデオ・データをチャネル6000を通じて受信してもよい。表示装置5001は、宛先装置5000と一体化されてもよく、または宛先装置5000の外部に位置してもよい。通例、表示装置5001は、デコードされたビデオ・データを表示する。表示装置5001は、液晶ディスプレイ、プラズマディスプレイ、有機発光ダイオードディスプレイ、または別のタイプの表示装置などの複数のタイプの表示装置を含みうる。
ビデオ・エンコーダ4002およびビデオ・デコーダ5002は、ビデオ圧縮規格(たとえば、高効率ビデオ符号化H.265規格)に従って動作してもよく、高効率ビデオ・エンコード(high efficiency video coding、HEVC)テストモデル(HM)に準拠してもよい。H.265規格の文字記述ITU-TH.265(V3)(04/2015)が2015年4月29日にリリースされており、http://handle.itu.int/11.1002/7000/12455からダウンロードできる。このファイルは、参照によりその全体において本明細書に組み込まれる。
当業者は、本明細書に開示された実施形態に記載された例と組み合わせて、ユニットおよびアルゴリズム・ステップが、電子ハードウェアまたはコンピュータソフトウェアと電子ハードウェアの組み合わせによって実装されうることを認識しうる。機能がハードウェアによって実行されるかソフトウェアによって実行されるかは、技術的解決策の具体的な用途および設計上の制約に依存する。当業者は、特定の用途ごとに、記載された機能を実装するために異なる方法を用いることがありうるが、その実装が本願の範囲を超えるものであると考えるべきではない。
当業者は、便利で簡単な説明のために、前述のシステム、装置、およびユニットの詳細な作業プロセスについては、方法実施形態における対応するプロセスを参照することを明確に理解することができる。詳細は、ここでは再度説明しない。
本願において提供されるいくつかの実施形態では、開示されたシステム、装置、および方法は、別の仕方で実装されうることが理解されるべきである。たとえば、記載された装置実施形態は単なる例である。たとえば、ユニットへの分割は単に論理的な機能分割である。実際の実装では、別の分割の仕方があってもよい。たとえば、複数のユニットまたは構成要素は、別のシステムに組み合わされる、または統合されてもよく、あるいはいくつかの特徴が、無視されてもよく、あるいは実行されなくてもよい。さらに、表示または議論された相互結合または直接結合または通信接続は、いくつかのインターフェースを通じて実装されてもよい。装置またはユニット間の間接的な結合または通信接続は、電子的、機械的、または他の形で実装されうる。
別個の部品として記載されるユニットは、物理的に別個であってもなくてもよく、ユニットとして表示される部品は、物理的なユニットであってもなくてもよく、1つの場所内にあってもよく、または複数のネットワーク・ユニット上に分散されていてもよい。それらのユニットの一部または全部は、実施形態の解決策の目的を達成するために、実際の要件に基づいて選択されてもよい。
加えて、本願の実施形態における機能ユニットは、1つの処理ユニットに統合されてもよく、または各ユニットは、物理的に単独で存在してもよく、または2つ以上のユニットが1つのユニットに統合されてもよい。
これらの機能がソフトウェア機能ユニットの形態で実装され、独立した製品として販売または使用される場合、これらの機能は、コンピュータ読み取り可能な記憶媒体に記憶されてもよい。そのような理解に基づいて、本願の技術的解決策は本質的に、または先行技術に寄与する部分は、または技術的解決策のいくつかは、ソフトウェア製品の形で実装されてもよい。コンピュータソフトウェア製品は、記憶媒体に記憶され、コンピュータ装置(これは、パーソナルコンピュータ、サーバー、またはネットワーク装置であってもよい)に、本願の実施形態に記載される方法のステップの全部または一部を実行するように命令するためのいくつかの命令を含む。上記の記憶媒体は、USBフラッシュドライブ、リムーバブルハードディスク、リードオンリーメモリ(read-only memory、ROM)、ランダムアクセスメモリ(random access memory、RAM)、磁気ディスク、またはコンパクトディスクといった、プログラムコードを記憶することができる任意の媒体を含む。
上記の説明は、単に本願の具体的な実装であり、本願の保護範囲を制限することは意図されていない。本願に開示された技術的範囲内で当業者によって容易に割り出される任意の変形または置換は、本願の保護範囲内に入る。したがって、本願の保護範囲は、特許請求の範囲の保護範囲に従うものとする。
下記は、添付の図面を参照して、本願の技術的解決策を記載する。
本願の実施形態における動きベクトル取得方法のプロセスをよりよく理解するために、下記はまず、図1および図2を参照して、ビデオ・エンコードおよびデコード・プロセス全体を簡単に説明する。
図1は、ビデオ・エンコード・プロセスの概略図である。
図1に示されるように、現在のフレームFn内の現在のピクチャー・ブロックに対して予測が実行されるとき、イントラ予測またはインター予測のいずれかが実行されることができる。具体的には、イントラ符号化またはインター符号化は、現在のフレームFnのタイプに基づいて選択されうる。たとえば、現在のフレームFnがIフレームである場合はイントラ予測が使用される;または、現在のフレームFnがPフレームまたはBフレームである場合は、インター予測が使用される。イントラ予測が使用される場合、現在のピクチャー・ブロック内のサンプルのサンプル値は、現在のフレームFn内の再構成された領域内のサンプルのサンプル値を使用することによって予測されうる。インター予測が使用される場合、現在のピクチャー・ブロック内のサンプルのサンプル値は、参照ピクチャーF'n-1内にあり、現在のピクチャー・ブロックに一致する参照ブロック内のサンプルのサンプル値を使用することによって予測されうる。
現在のピクチャー・ブロックの予測ブロックが、インター予測またはイントラ予測を通じて得られた後、現在のピクチャー・ブロック内のサンプルのサンプル値と予測ブロック内のサンプルのサンプル値との間の差が計算されて、残差情報が得られて、該残差情報に対して、変換、量子化、およびエントロピー符号化が実行されて、エンコードされたビットストリームが得られる。さらに、エンコード・プロセスでは、現在のフレームFnの残差情報および現在のフレームFnの予測された情報に対してさらに重ね合わせが実行される必要があり、フィルタリング動作が実行されて、現在のフレームの再構成されたフレームF'nが得られる。再構成されたフレームF'nは、後続のエンコードのための参照ピクチャーとして使用される。
図2は、ビデオ・デコード・プロセスの概略図である。
図2に示されるビデオ・デコード・プロセスは、図1に示されるビデオ・エンコード・プロセスの逆プロセスと等価である。デコードの間、エントロピー復号デコード、脱量子化、および逆変換が実行されて残差情報が得られ、現在のピクチャー・ブロックに対してイントラ予測が実行されるかインター予測が実行されるかは、デコードされたビットストリームに基づいて決定される。イントラ予測が実行される場合、イントラ予測方法に従って、現在のフレーム内の再構成された領域内のサンプルのサンプル値を用いて、予測された情報が構築される。インター予測が実行される場合、パースを通じて動き情報が得られる必要があり、パースを通じて得られた動き情報に基づいて、再構成されたピクチャー内の参照ブロックが決定され、参照ブロック内のサンプルのサンプル値が、予測された情報として使用され、次いで、予測された情報および残差情報に対して重ね合わせが実行され、フィルタリング動作が実行されて、再構成された情報が得られる。
本願の実施形態における動きベクトル取得方法は、エンコード・プロセスおよびデコード・プロセスの両方に適用されうる。換言すれば、エンコーダ側とデコーダ側の両方とも、本願の実施形態における動きベクトル取得方法を実行してもよい。具体的には、本願の実施形態における動きベクトル取得方法は、図1および図2に示されるインター予測プロセスに適用されうる。
HEVCでは、先進動きベクトル予測(advanced motion vector prediction、AMVP)モードとマージ(merge)モードの2つのインター予測モードがある。本願の実施形態における動きベクトル取得方法は、インター予測のマージモードに適用されてもよい。
図3は、本願のある実施形態による動きベクトル取得方法の概略フローチャートである。図3に示される方法は、ビデオ・エンコードおよびデコード装置、ビデオコーデック、ビデオ・エンコードおよびデコード・システム、およびビデオ・エンコードおよびデコード機能を有する別の装置によって実行されうる。
図3に示される方法は、ステップ110ないしステップ140を含む。下記は、ステップ110ないしステップ140を詳細に記述する。
110:第1の値範囲および第2の値範囲を決定する。
任意的に、第1の値範囲は、第1の閾値および第2の閾値を含む値範囲であり、第2の値範囲は、第3の閾値および第4の閾値を含む値範囲である。第1閾値は第2閾値より小さく、第3閾値は第4閾値より小さい。
第1の値範囲および第2の値範囲は、それぞれ、開範囲、閉範囲および片側が開で片側が閉の範囲のいずれか1つでありうることを理解しておくべきである。
第1の値範囲の具体的な表現形式は、(第1の閾値,第2の閾値)、(第1の閾値,第2の閾値]、または[第1の閾値,第2の閾値]でありうる。
第2の値範囲の具体的な表現形式は、(第3の閾値,第4の閾値)、(第3の閾値,第4の閾値]、または[第3の閾値,第4の閾値]でありうる。
120:処理されるべきブロックの目標オフセット・ベクトルと目標ピクチャーの識別子情報とを決定する。
処理されるべきブロックは、少なくとも1つの処理されるべきサブブロックを含み、第1の方向における目標オフセット・ベクトルの成分の値は、第1の値範囲内にあり、第2の方向における目標オフセット・ベクトルの成分の値は、第2の値範囲内にあり、第1の方向および第2の方向は直交関係にある。
目標ピクチャー内にあり、処理されるべきブロックに対応する(ピクチャー)ブロックは、対応するブロックと称されてもよく、対応するブロックは、少なくとも1つの共位置のサブブロックを含み、目標オフセット・ベクトルは、目標ピクチャー内にある、処理されるべきブロックの対応するブロック(の位置)を決定するために使用される。目標オフセット・ベクトルは、共通の動きベクトルとは異なる。目標オフセット・ベクトルは、対応するブロックを決定するために使用される。しかしながら、動きベクトルは、通例、ピクチャー・ブロックの予測されたサンプル値を得るよう、ピクチャー・ブロックの予測ブロックを決定するために使用される。さらに、オフセット・ベクトルは、時間的ベクトル(temporal vector)とも称されてもよく、目標ピクチャーは、対応するピクチャーとも称されてもよい。
目標ピクチャーの識別子情報は、特にピクチャー・シーケンス内のピクチャー・フレームのピクチャー順カウント(picture order count、POC)であってもよく、または目標ピクチャーのインデックス情報またはインデックス値であってもよい。
POCは、もとのピクチャー・シーケンスにおけるピクチャーの実際の位置を示すために使用されることが理解されるべきである。エンコード順/デコード順と区別するために、POCは表示順または再生順と称されることもある。
前記少なくとも1つの処理されるべきサブブロックは、前記処理されるべきブロックを分割することによって得られてもよく、前記少なくとも1つの処理されるべきサブブロックは、前記処理されるべきブロックを形成してもよいことが理解されるべきである。処理されるべきブロックがCUである場合、CUは少なくとも1つのサブCUを含んでいてもよい。さらに、第1の方向および第2の方向は、それぞれ、水平方向および垂直方向であってもよい。
第1の値範囲の形式に変化があるとき、第1の方向における目標オフセット・ベクトルの成分の値が第1の値範囲内に入る以下の具体的な形式がある。
(1)第1の値範囲が(第1の閾値,第2の閾値)である場合、第1の方向の目標オフセット・ベクトルの成分の値は、第1の閾値よりも大きく、第2の閾値よりも小さい。
(2)第1の値範囲が(第1の閾値,第2の閾値]である場合、第1の方向の目標オフセット・ベクトルの成分の値は、第1の閾値より大きく、第2の閾値以下である。
(3)第1の値範囲が[第1の閾値,第2の閾値]である場合、第1の方向の目標オフセット・ベクトルの成分の値は、第1の閾値以上であり第2の閾値以下である。
同様に、第2の値範囲の形式に変化があるとき、第2の方向における目標オフセット・ベクトルの成分の値が第2の値範囲内に入る以下の具体的な形式がある。
(4)第2の値範囲が(第3の閾値,第4の閾値)である場合、第2の方向の目標オフセット・ベクトルの成分の値は、第3の閾値よりも大きく、第4の閾値よりも小さい。
(5)第2の値範囲が(第3の閾値,第4の閾値]である場合、第2の方向の目標オフセット・ベクトルの成分の値は、第3の閾値より大きく、第4の閾値以下である。
(6)第2の値範囲が[第3の閾値,第4の閾値]である場合、第2の方向の目標オフセット・ベクトルの成分の値は、第3の閾値以上であり第4の閾値以下である。
ステップ120において、目標オフセット・ベクトルは、複数の態様で決定されうる。具体的には、まず、初期オフセット・ベクトル(これは開始オフセット・ベクトルとも称されうる)が決定されてもよく、次いで、第1の方向および第2の方向における初期オフセット・ベクトルの成分の値が、それぞれ、第1の値範囲および第2の値範囲に制限され、最終的な目標オフセット・ベクトルが得られる。あるいはまた、第1の方向および第2の方向における成分値がそれぞれ第1の値範囲および第2の値範囲内に入る動きベクトルが、複数の動きベクトルから、前記目標オフセット・ベクトルとして直接選択されてもよい。下記は、目標オフセット・ベクトルを決定するこれら2つの態様を詳細に記述する。
第1の態様は、初期オフセット・ベクトルを決定するステップと、第1の方向および第2の方向における初期オフセット・ベクトルの成分の値を制限して、目標オフセット・ベクトルを得るステップとを含む。
具体的には、第1の態様では、目標オフセット・ベクトルの決定は、ステップ1201ないしステップ1203を含む。下記は、ステップ1201ないしステップ1203を詳細に記述する。
1201:処理されるべきブロックの初期オフセット・ベクトルを決定する。
任意的に、処理されるべきブロックの事前設定された空間的近傍ブロックの動きベクトルが、初期オフセット・ベクトルとして決定される。
具体的には、特定の順序において、最初の利用可能な得られた事前設定された空間的近傍ブロックの動きベクトルが、初期オフセット・ベクトルとして決定されてもよい。
たとえば、図4に示されるように、A0、A1、B0、B1、B2は、処理されるべきブロックの空間的近傍ブロックであり、Tは、処理されるべきブロックの時間的近傍ブロックであり、Cは、処理されるべきブロックの参照ピクチャー内にあり、処理されるべきブロックと同じ位置内にあるピクチャー・ブロックである。処理されるべきブロックの初期オフセット・ベクトルが決定されるとき、A1、B1、B0、およびA0の順で、最初の利用可能な見つかった近傍ブロックの動きベクトルが、初期オフセット・ベクトルとして決定されうる。
最初の利用可能な空間的近傍ブロックの動きベクトルが、直接、初期オフセット・ベクトルとして決定されるので、初期オフセット・ベクトルを決定するプロセスが単純化できる。
1202:第1の方向の初期オフセット・ベクトルの成分の値が第1の値範囲内に入り、第2の方向の初期オフセット・ベクトルの成分の値が第2の値範囲内に入る場合、その初期オフセット・ベクトルを、目標オフセット・ベクトルとして決定する。
たとえば、第1の値範囲が(第1の閾値,第2の閾値)であり、第2の値範囲が(第3の閾値,第4の閾値)である場合、第1の方向の初期オフセット・ベクトルの成分の値が第1の閾値よりも大きく、第2の閾値よりも小さく、第2の方向の初期オフセット・ベクトルの成分の値が第3の閾値よりも大きく、第4の閾値よりも小さければ、その初期オフセット・ベクトルは、直接、目標オフセット・ベクトルとして決定されてもよい。
1203:第1の方向の初期オフセット・ベクトルの成分の値が第1の値範囲外にある、および/または第2の方向の初期オフセット・ベクトルの成分の値が第2の値範囲外にある場合、第1の方向の初期オフセット・ベクトルの成分の値の、第1の値範囲を超える部分、および/または第2の方向の初期オフセット・ベクトルの成分の値の、第2の値範囲を超える部分に対してクリッピングを実行し、クリッピング後に得られる初期オフセット・ベクトルを目標オフセット・ベクトルとして決定する。
ステップ1203においてクリッピング後に得られた初期オフセット・ベクトルの、第1の方向および第2の方向の成分の値は、それぞれ、第1の値範囲および第2の値範囲内に入る。
具体的には、第1の方向における初期オフセット・ベクトルの成分の値が第1の値範囲外である場合、および/または第2の方向における初期オフセット・ベクトルの成分の値が第2の値範囲外である場合、初期オフセット・ベクトルに対する処理は、ケース1ないしケース3を含む。下記は、この3つのケースを詳細に記述する。
ケース1:
第1の方向における初期オフセット・ベクトルの成分の値が第1の値範囲内に入り、第2の方向における初期オフセット・ベクトルの成分の値が第2の値範囲を超える場合には、第2の方向における初期オフセット・ベクトルの成分の、第2の値範囲を超える部分に対してクリッピングが実行され、クリッピング後に得られる初期オフセット・ベクトルが目標オフセット・ベクトルとして決定される。
たとえば、第1の値範囲は[第1の閾値,第2の閾値]であり、第2の値範囲は[第3の閾値,第4の閾値]であり、第1の方向および第2の方向の初期オフセット・ベクトルの成分は第1の成分および第2の成分である。第1の成分は第2の閾値よりも小さく、第1の閾値よりも大きく、第2の成分は第4の閾値よりも大きい。この場合、初期オフセット・ベクトルの第2の成分は、[第3の閾値,第4の閾値]によって制限される値範囲外にあり、クリッピング後に得られる第2の成分が第3の閾値以上第4の閾値以下であるよう、第2の成分の値の、第4の閾値を超える部分に対してクリッピング(これは代替的に切り捨てとも称されてもよい)が実行される必要がある。
ケース2:
第1の方向の初期オフセット・ベクトルの成分の値が第1の値範囲を超え、第2の方向の初期オフセット・ベクトルの成分の値が第2の値範囲内に入る場合には、第1の方向の初期オフセット・ベクトルの成分の、第1の値範囲を超える部分に対してクリッピングが実行され、クリッピング後に得られる初期オフセット・ベクトルが目標オフセット・ベクトルとして決定される。
たとえば、第1の値範囲は[第1の閾値,第2の閾値]であり、第2の値範囲は[第3の閾値,第4の閾値]であり、第1の方向および第2の方向の初期オフセット・ベクトルの成分は第1の成分および第2の成分である。第2の成分は第3の閾値より大きく第4の閾値より小さく、第1の成分は第1の閾値より小さい。この場合、初期オフセット・ベクトルの第1の成分は、[第1の閾値,第2の閾値]によって制限される値範囲外にあり、第1の成分の値は、[第1の閾値,第2の閾値]によって制限される値範囲内にクリッピングされる必要がある。すなわち、クリッピング後に得られる第1の成分が第1の値範囲内に入るよう、第1の閾値と第1の成分との間の差が第1の成分に加えられる必要がある。
ケース3:
第1の方向の初期オフセット・ベクトルの成分の値が第1の値範囲を超え、第2の方向の初期オフセット・ベクトルの成分の値が第2の値範囲を超える場合には、第1の方向の初期オフセット・ベクトルの成分の、第1の値範囲を超える部分に対してクリッピングが実行され、第2の方向の初期オフセット・ベクトルの成分の、第2の値範囲を超える部分に対してクリッピングが実行され、クリッピング後に得られる初期オフセット・ベクトルが目標オフセット・ベクトルとして決定される。
たとえば、第1の値範囲は[第1の閾値,第2の閾値]であり、第2の値範囲は[第3の閾値,第4の閾値]であり、第1の方向および第2の方向の初期オフセット・ベクトルの成分は第1の成分および第2の成分である。第1の成分は第2の閾値より大きく、第2の成分は第4の閾値より大きい。この場合、初期オフセット・ベクトルの第1の成分は[第1の閾値,第2の閾値]によって制限される値範囲外にあり、初期オフセット・ベクトルの第2の成分は[第3の閾値,第4の閾値]によって制限される値範囲外にあり、クリッピング後に得られる第1の成分の値が[第1の閾値,第2の閾値]の範囲内に入り、クリッピング後に得られる第2の成分の値が[第3の閾値,第4の閾値]の範囲内に入るよう、第1の成分の値の、第2の閾値を超える部分に対してクリッピングが実行される必要があり、第2の成分の値の、第4の閾値を超える部分に対してクリッピングが実行される必要がある。
第2の態様は:処理されるべきブロックの空間的近傍ブロックの動きベクトルのうち、第1の方向および第2の方向の成分値がある要件を満たすものを、目標オフセット・ベクトルとして決定することを含む。
具体的には、第2の態様では、目標オフセット・ベクトルの決定は、ステップ1204およびステップ1205を含む。下記は、ステップ1204およびステップ1205を詳細に記述する。
1204:処理されるべきブロックの事前設定された空間的近傍ブロックのうちの目標空間的近傍ブロックを決定する。ここで、第1の方向の目標空間的近傍ブロックの動きベクトルの成分の値は第1の値範囲内に入り、第2の方向の目標空間的近傍ブロックの動きベクトルの成分の値は第2の値範囲内に入る。
具体的には、ステップ1204において、処理されるべきブロックの空間的近傍ブロックの動きベクトルは特定の順序で取得されてもよく、次に、第1の方向および第2の方向における空間的近傍ブロックの動きベクトルの成分値がそれぞれ第1の値範囲および第2の値範囲に入るかどうかが判定され、第1の方向および第2の方向の成分値がそれぞれ第1の値範囲および第2の値範囲に入る動きベクトルが、目標オフセット・ベクトルとして決定される。
1205:目標空間的近傍ブロックの動きベクトルを目標オフセット・ベクトルとして使用する。
たとえば、図4に示されるように、A1、B1、B0、A0の順で、最初の利用可能な近傍ブロックの動きベクトルが見出されてもよい。次いで、動きベクトルの成分値がある要件(これは、第1の方向および第2の方向の成分値がそれぞれ第1の値範囲および第2の値範囲に入ることである)を満たしているかどうかが判定される。動きベクトルがその要件を満たす場合、その動きベクトルが、目標オフセット・ベクトルとして決定される。動きベクトルがその要件を満たさない場合、次の利用可能な近傍ブロックの動きベクトルが、A1、B1、B0、A0の順に検索され続ける。次いで、要件を満たす動きベクトルが見つかるまで、要件が満たされているかどうかが判定される。
ステップ120において使用される目標オフセット・ベクトルは、代わりにゼロ・オフセット・ベクトルであってもよいことが理解されるべきである。この場合、目標ピクチャー内にあり、処理されるべきブロックと同じ位置内にあるピクチャー・ブロックが、目標ピクチャー内にある、処理されるべきブロックの対応するブロックである。
さらに、要件を満たす目標オフセット・ベクトルが見つからない場合には、ATMVP技術が代わりに使用されてもよいが、処理されるべきサブブロックの動きベクトルを得るためには別の技術が使用される。
130:処理されるべきサブブロックの位置と、目標オフセット・ベクトルとに基づいて、目標ピクチャーにおいて、処理されるべきサブブロックの共位置のサブブロックを決定する。
目標オフセット・ベクトルは、処理されるべきブロックの、目標ピクチャー内にある対応するブロックをポイントするので、まず、対応するブロックがオフセット・ベクトルに基づいて得られ、次いで、処理されるべきサブブロックの位置に基づいて、処理されるべきサブブロックとある相対的な位置関係を有する共位置のサブブロックが、目標ピクチャー内で決定されてもよい(これは、処理されるべきサブブロックと前記相対的な位置関係を有する共位置のサブブロックが、前記対応するブロック内で決定されることとして理解されてもよい)。
処理されるべきサブブロックと前記相対的な位置関係を有する共位置のサブブロックが前記対応するブロック内で決定されるとき、前記対応するブロック内にあり、処理されるべきサブブロックの相対位置と同じ相対位置を有するサブブロックが、処理されるべきサブブロックの共位置のサブブロックとして決定されてもよい。
たとえば、図5に示されるように、現在のピクチャーは、処理されるべきブロックを含み、処理されるべきブロックは、4つのサブブロックを含む。目標ピクチャー内にあり、処理されるべきブロックに対応する対応するブロックが、処理されるべきブロックの位置と、処理されるべきブロックのオフセット・ベクトルとに基づいて得られてもよい。対応するブロックも、4つのサブブロックを含む。処理されるべきサブブロックは、処理されるべきブロックの左上隅に配置される。この場合、処理されるべきサブブロックの共位置のサブブロックが決定されるとき、対応するブロックの左上サブブロックが、処理されるべきサブブロックの共位置のサブブロックとして決定されてもよい。
140:共位置のサブブロックの動きベクトルに基づいて、処理されるべきサブブロックの動きベクトルを決定する。
本願では、目標オフセット・ベクトルの成分値が特定の値範囲内に入るので、目標オフセット・ベクトルに基づいて目標ピクチャー内で決定される、処理されるべきサブブロックも、目標ピクチャーの特定の範囲内に入る。よって、目標ピクチャーの特定の範囲内の時間的動きベクトル・フィールドを先読みすることによって、メモリ帯域幅およびメモリ読み取り時間の量が低減できる。
任意的に、ステップ140の前に、図3に示される方法は、さらに:目標ピクチャー内の事前設定領域内のサンプルの動きベクトルを得るステップを含み、ここで、事前設定領域は、処理されるべきサブブロックの共位置のサブブロックが現われうる領域である。
本願では、共位置のサブブロックが目標ピクチャー内に現われる領域が決定されるので、目標ピクチャー内の特定領域内の動きベクトルを事前に取得することによって、目標ピクチャーから動きベクトルを読み取る時間の量を低減できる。言い換えれば、メモリ読み取り時間の量が減少する。さらに、目標ピクチャー内の特定領域のみにおける動きベクトルが得られるため、メモリ帯域幅が低減できる。
共位置のサブブロックの動きベクトルが得られた後、共位置のサブブロックの動きベクトルをスケーリングすることによって、処理されるべきサブブロックの動きベクトルが得られてもよい。
具体的には、共位置のサブブロックの動きベクトルに基づいて、処理されるべきサブブロックの動きベクトルを決定することは:処理されるべきサブブロックを含むピクチャーのピクチャー順カウント(picture order count、POC)、処理されるべきサブブロックを含むピクチャーの目標参照ピクチャーのPOC、目標ピクチャーのPOC、および目標ピクチャーの目標参照ピクチャーのPOCに基づいて、共位置のサブブロックの動きベクトルをスケーリングして、処理されるべきサブブロックの動きベクトルを得ることを含む。
たとえば、図6に示されるように、処理されるべきサブブロックを含むピクチャーはピクチャー・フレーム1であり、ピクチャー・フレーム1の目標参照ピクチャーはピクチャー・フレーム2であり、その中に目標ピクチャーが位置するピクチャー・フレームはピクチャー・フレーム3であり、ピクチャー・フレーム3の目標参照ピクチャーはピクチャー・フレーム4であり、共位置のサブブロックの動きベクトルはMVである。この場合、MVは、ピクチャー・フレーム1ないしピクチャー・フレーム4のPOCに基づいてスケーリングされて、処理されるべきサブブロックの動きベクトルを得てもよい。
任意的に、処理されるべきサブブロックを含むピクチャーのPOC、処理されるべきサブブロックを含むピクチャーの目標参照ピクチャーのPOC、目標ピクチャーのPOC、および目標ピクチャーの目標参照ピクチャーのPOCに基づいて、共位置のサブブロックの動きベクトルをスケーリングして、処理されるべきサブブロックの動きベクトルを得ることは:処理されるべきサブブロックを含むピクチャーのPOCと、処理されるべきサブブロックを含むピクチャーの目標参照ピクチャーのPOCとの間の差を第1の差として決定し;目標ピクチャーのPOCと目標ピクチャーの目標参照ピクチャーのPOCとの間の差を第2の差として決定し;第1の差の、第2の差に対する比に基づいて、共位置のサブブロックの動きベクトルをスケーリングして、処理されるべきサブブロックの動きベクトルを得ることを含む。
共位置のサブブロックの動きベクトルが、第1の差の、第2の差に対する比に基づいてスケーリングされて、処理されるべきサブブロックの動きベクトルを得るとき、具体的には、第1の差の、第2の差に対する比がまず計算されて第1の比を得てもよく、次いで、第1の比と、共位置のサブブロックの動きベクトルとの積が、処理されるべきサブブロックの動きベクトルとして決定される。
具体的には、引き続き図6が例として使用される。処理されるべきサブブロックの動きベクトルは、公式(1)に従って計算されてもよい:
ここで、MVsは、処理されるべきサブブロックの動きベクトルであり、MVは共位置のサブブロックの動きベクトルであり、P1〜P4は、ピクチャー・フレーム1ないしピクチャー・フレーム4のPOCであり、P1−P2は前記第1の差を表わし、P3−P4は前記第2の差を表わす。
任意的に、ある実施形態では、第1の値範囲および第2の値範囲を決定することは:処理されるべきブロックの位置およびサイズ、処理されるべきブロックが位置する符号化ツリー単位CTUの位置およびサイズ、ならびに該CTUの時間的動きベクトル・フィールドの事前設定された拡張範囲に基づいて、第1の値範囲および第2の値範囲を決定することを含む。
第1の値範囲および第2の値範囲は、第1の方向および第2の方向のそれぞれにおいて目標オフセット・ベクトルに利用可能な最大値および最小値を決定することによって決定されうることが理解されるべきである。下記は、このようにして第1の値範囲および第2の値範囲を決定することの詳細な記述を与える。
具体的には、第1の値範囲および第2の値範囲の決定は、以下のプロセスを含む。
(1)処理されるべきブロックの位置およびサイズ、処理されるべきブロックが位置する符号化ツリー単位CTUの位置およびサイズ、ならびに該CTUの時間的動きベクトル・フィールドの事前設定された拡張範囲に基づいて、第1の閾値と第2の閾値を決定する。
(2)処理されるべきブロックの位置およびサイズ、処理されるべきブロックが位置する符号化ツリー単位CTUの位置およびサイズ、および該CTUの時間的動きベクトル・フィールドの事前設定された拡張範囲に基づいて、第3の閾値および第4の閾値を決定する。
(3)第1閾値および第2閾値に基づいて、第1の値範囲を得る。
(4)第3の閾値および第4の閾値に基づいて、第2の値範囲を得る。
第1の閾値は、第1の方向の目標オフセット・ベクトルの成分に利用可能な最小値であり、第2の閾値は、第1の方向の目標オフセット・ベクトルの成分に利用可能な最大値である。第3の閾値は、第2の方向の目標オフセット・ベクトルの成分に利用可能な最小値であり、第4の閾値は、第2の方向の目標オフセット・ベクトルの成分に利用可能な最大値である。
任意的に、ある実施形態では、前記CTUの時間的動きベクトル・フィールドの拡張範囲は、第1の方向および第2の方向における前記CTUの時間的動きベクトル・フィールドの拡張範囲を含む。
第1の方向および第2の方向は、直交関係にある2方向である。
任意的に、第1の方向は水平方向であってもよく、第2の方向は垂直方向であってもよい。
第1の方向が水平方向であり、第2の方向が垂直方向である場合、CTUの時間的動きベクトル・フィールドの拡張範囲は、上方向、下方向、左方向、右方向におけるCTUの時間的動きベクトル・フィールドの拡張値を含むことが理解されるべきである。
たとえば、図7に示されるように、CTUが位置する長方形と破線とで囲まれた領域が、CTUの時間的動きベクトル・フィールドの拡張範囲であり、上方向、下方向、左方向、右方向におけるCTUの時間的動きベクトル・フィールドの拡張値はそれぞれU、B、L、Rである。
U、B、L、Rがすべて0の場合、そのことは、各方向のCTUの拡張値が0であることを示す。この場合、現在のCTUの時間的動きベクトル・フィールドは、対応する位置におけるCTUの時間的動きベクトル・フィールドに制限される。
UおよびBが0であり、LまたはRが0でない場合、現在のCTUによって得られる時間的動きベクトル・フィールドはCTUの上端境界や下端境界を越えることはできないが、CTUの左側境界と右側境界を越えることはできる。図8に示されるように、現在のCTUのMVFと左のCTUのMVFは左および右に延長できるが、上や下に延長することはできない。現在のCTUの時間的動きベクトル・フィールドおよび左CTUの時間的動きベクトル・フィールドは部分的に重なっている。この場合、現在のCTUが処理されるとき、現在のCTUの左側のCTUによって読み取られた時間的動きベクトル・フィールドは、ウィンドウ・スライディングを通じて部分的に再利用されうる。
具体的には、第1の値範囲および第2の値範囲は、公式(2)ないし公式(5)に従って決定されてもよい:
HorMin=CTUX−CUX−L (2)
HorMax=CTUX+CTUW−CUX−CUW+R (3)
VerMin=CTUY−CUY−U (4)
VerMax=CTUY+CTUH−CUY−CUH+B (5)
ここで、CUXおよびCUYはそれぞれ処理されるべきブロックの左上サンプルの水平座標および垂直座標を表わし、CUWおよびCUHは処理されるべきブロックの幅および高さを表わし、CTUXおよびCTUYはそれぞれ処理されるべきブロックが位置するCTUの水平座標および垂直座標を表わし、CTUWおよびCTUHはそれぞれ処理されるべきブロックが位置するCTUの幅および高さであり、U、B、L、Rはそれぞれ上方向、下方向、左方向、右方向におけるCTUの拡張値を表わし、HorMinおよびHorMaxはそれぞれ第1閾値および第2閾値を表わし、VerMinおよびVerMaxはそれぞれ第3閾値および第4閾値を表わす。
任意的に、CTUの時間的動きベクトル・フィールドの拡張範囲に関する情報が、シーケンスパラメータセットSPS、ピクチャーパラメータセットPPS、およびヘッダ・フィールドのうちの少なくとも1つにおいて担持される。
SPS、PPS、およびヘッダ・フィールドはそれぞれ、担持されるパラメータ(U、B、L、およびR)を使用してCTUの拡張範囲を示すことができることが理解されるべきである。
任意的に、CTUの時間的動きベクトル・フィールドの拡張範囲は事前設定される。この場合、CTUの時間的動きベクトル・フィールドの拡張範囲は、プロトコルに直接書き込まれてもよく、SPS、PPSまたはヘッダ・フィールドにおいて担持される必要はない。
図9は、本願のある実施形態による動きベクトル取得方法の概略フローチャートである。図9に示される方法は、ビデオ・エンコードおよびデコード装置、ビデオコーデック、ビデオ・エンコードおよびデコード・システム、およびビデオ・エンコードおよびデコード機能を有する別の装置によって実行されうる。
図9に示される方法は、ステップ210ないしステップ250を含む。下記は、ステップ210ないしステップ250を詳細に記述する。
210:処理されるべきブロックの目標オフセット・ベクトルと、目標ピクチャーの識別子情報とを決定する。
処理されるべきブロックは、少なくとも1つの処理されるべきサブブロックを含む。処理されるべきブロックの動きベクトルが得られるとき、処理されるべきブロックのそれぞれの処理されるべきサブブロックの動きベクトルを実際に得る必要がある。処理されるべきブロックがCUである場合、処理されるべきサブブロックはサブCUである。
ステップ210における目標オフセット・ベクトルは、図3に示される方法において言及した目標オフセット・ベクトルと同じ意味を有し、詳細はここでは再度説明しない。
目標ピクチャーの識別子情報は、具体的には、ピクチャー・シーケンス内の目標ピクチャーのPOCであってもよく、または、目標ピクチャーのインデックス情報またはインデックス値であってもよい。
220:処理されるべきサブブロックの位置と目標オフセット・ベクトルとに基づいて、目標ピクチャー内での、処理されるべきサブブロックの共位置のサブブロックの初期位置を決定する。
具体的には、目標ピクチャー内での、処理されるべきサブブロックの共位置のサブブロックの初期位置が決定されるとき、まず、処理されるべきサブブロックの共位置のサブブロックが決定されてもよく、次いで、共位置のサブブロック上の指定された位置が、目標ピクチャー内での、処理されるべきサブブロックの共位置のサブブロックの初期位置として決定される。たとえば、共位置のサブブロックが決定された後、共位置のサブブロックの中心点または左上隅が、目標ピクチャー内での、処理されるべきサブブロックの共位置のサブブロックの初期位置として決定されてもよい。
共位置のサブブロックを決定する態様については、図3に示された方法におけるステップ130の下の関連段落における記述を参照されたい。
さらに、目標ピクチャー内での、処理されるべきサブブロックの共位置のサブブロックの初期位置が決定されるとき、代替的に、共位置のサブブロックは決定されなくてもよく、目標ピクチャー内での、処理されるべきサブブロックに対応する位置が、処理されるべきサブブロックの位置と、目標オフセット・ベクトルとに基づいて、直接、目標ピクチャー内での、処理されるべきサブブロックの共位置のサブブロックの初期位置として決定される。たとえば、処理されるべきサブブロックの中心点または左上隅のような指定された位置がまず決定され、目標オフセット・ベクトルがその位置の座標に加えられて、目標ピクチャー内での、処理されるべきサブブロックの共位置のサブブロックの初期位置が決定できる。
230:初期位置が目標ピクチャーの事前設定領域内にある場合は、その初期位置を目標位置として決定する。
たとえば、図10に示されるように、現在のピクチャーは、処理されるべきブロックを含み、処理されるべきブロックは、左上の処理されるべきサブブロックを含み、目標ピクチャーは、対応するブロックを含み、対応するブロックは、左上の共位置のサブブロックを含み、処理されるべきブロックの目標オフセット・ベクトルは対応するブロックをポイントし、目標ピクチャー内の破線ボックス内の長方形領域が、目標ピクチャーの事前設定領域である。図10から、目標ピクチャー内にある、処理されるべきサブブロックの共位置のサブブロックの初期位置は、目標ピクチャーの事前設定領域内にあることがわかり、初期位置が直接、目標位置として決定されてもよい。
240:初期位置が事前設定領域外の場合は、初期位置に最も近い、事前設定領域内の位置を目標位置として決定する。
たとえば、図11に示されるように、現在のピクチャーは、処理されるべきブロックを含み、処理されるべきブロックは、左上の処理されるべきサブブロックを含み、目標ピクチャーは、対応するブロックを含み、対応するブロックは、左上の共位置のサブブロックを含み、処理されるべきブロックの目標オフセット・ベクトルは対応するブロックをポイントし、目標ピクチャー内の破線ボックス内の長方形領域は、目標ピクチャーの事前設定領域である。図11から、目標ピクチャー内にある、処理されるべきサブブロックの共位置のサブブロックの初期位置が目標ピクチャーの事前設定領域の外側にあることがわかる。この場合、事前設定領域内にあり、初期位置に最も近い位置Aを目標位置として決定する必要がある。
250:目標位置に対応する動きベクトルに基づいて、処理されるべきサブブロックの動きベクトルを決定する。
本願では、事前設定領域内の目標位置が、初期位置と目標ピクチャーの事前設定領域に基づいて見つけられ、次いで、処理されるべきサブブロックの動きベクトルが、目標ピクチャーの特定の範囲内の動きベクトルに基づいて決定される。よって、目標ピクチャーの特定の範囲内の時間的動きベクトル・フィールドを先読みすることによって、メモリ帯域幅およびメモリ読み取り時間の量が低減できる。
任意的に、ステップ250の前に、図9に示される方法は、さらに:目標ピクチャー内の事前設定領域内のサンプルの動きベクトルを得るステップを含む。
ステップ250において目標位置の動きベクトルに基づいて、処理されるべきサブブロックの動きベクトルが決定される前に、目標位置に対応する動きベクトルがまず取得される必要があることが理解されるべきである。メモリ読み取り時間の量および占有メモリ帯域幅を減らすために、目標ピクチャーの事前設定領域におけるサンプルの動きベクトルが前もって取得されてもよい。このようにして、目標位置の動きベクトルを使用する必要がある場合、目標位置に対応する動きベクトルは、事前設定領域内のサンプルの読み取られた動きベクトルから直接得られてもよい。また、目標ピクチャーの事前設定領域のみにおけるサンプルの動きベクトルが得られるため、目標ピクチャー全体におけるサンプルの動きベクトルを取得する必要がある可能性がある従来の解決策とは異なり、占有メモリ帯域幅を低減できる。
任意的に、ある実施形態では、ステップ230の事前設定領域は、処理されるべきブロックが位置されている符号化ツリー単位CTUの位置およびサイズ、目標ピクチャーのサイズ、および該CTUの時間的動きベクトル・フィールドの事前設定された拡張範囲に基づいて決定される。
CTUの時間的動きベクトル・フィールドの拡張範囲は、第1の方向および第2の方向におけるCTUの時間的動きベクトル・フィールドの拡張範囲を含む。
任意的に、第1の方向は水平方向であり、第2の方向は垂直方向である。
任意的に、第1の方向が水平方向であり、第2の方向が垂直方向である場合、CTUの時間的動きベクトル・フィールドの拡張範囲は、上方向、下方向、左方向、および右方向におけるCTUの時間的動きベクトル・フィールドの拡張範囲を含む。
事前設定領域は、複数の仕方で制限されてもよい。たとえば、任意的に、事前設定領域は、水平座標値範囲および垂直座標値範囲を使用して表わされてもよい。
具体的には、事前設定領域は、水平座標値範囲[最小水平座標値,最大水平座標値]および垂直座標値範囲[最小垂直座標値,最大垂直座標値]によって表現されてもよい。
水平座標値範囲および垂直座標値範囲における値は、公式(6)ないし(9)に従って計算されてもよい:
HorMin=Max(CTUX−L,0) (6)
HorMax=Min(CTUX+CTUW+R−1,PicW−1) (7)
VerMin=Max(CTUY−U,0) (8)
VerMax=Min(CTUY+CTUH+B−1,PicH−1) (9)
ここで、CTUXは処理されるべきブロックが位置するCTUの水平座標であり、CTUYは処理されるべきブロックが位置するCTUの垂直座標であり、CTUWおよびCTUHはそれぞれ処理されるべきブロックが位置するCTUの幅および高さであり、PicWおよびPicHはそれぞれ目標ピクチャーの幅および高さであり、U、B、LおよびRはそれぞれ上方向、下方向、左方向および右方向のCTUの拡張値を表わし、HorMinおよびHorMaxはそれぞれ最小水平座標値および最大水平座標値であり、VerMinおよびVerMaxはそれぞれ最小垂直座標値および最大垂直座標値である。
最小水平座標値、最大水平座標値、最小垂直座標値、および最大垂直座標値は、公式(6)ないし(9)に従った計算を通じて得られ、水平座標値範囲および垂直座標値範囲が得られ、目標ピクチャーの事前設定領域が決定される。
任意的に、CTUの時間的動きベクトル・フィールドの拡張範囲に関する情報が、SPS、PPS、ヘッダ・フィールドのうちの少なくとも1つにおいて担持される。
あるいはまた、CTUの時間的動きベクトル・フィールドの拡張範囲が事前設定されてもよい。この場合、CTUの動きベクトルの拡張範囲は、プロトコルに直接書き込まれてもよく、SPS、PPSまたはヘッダ・フィールドにおいて担持される必要はない。
任意的に、ある実施形態では、目標位置に対応する動きベクトルに基づいて、処理されるべきサブブロックの動きベクトルを決定することは:処理されるべきサブブロックを含むピクチャーのPOC、処理されるべきサブブロックを含むピクチャーの目標参照ピクチャーのPOC、目標ピクチャーのPOC、および目標ピクチャーの目標参照ピクチャーのPOCに基づいて、目標位置に対応する動きベクトルをスケーリングして、処理されるべきサブブロックの動きベクトルを得ることを含む。
具体的には、処理されるべきサブブロックを含むピクチャーのPOC、処理されるべきサブブロックを含むピクチャーの目標参照ピクチャーのPOC、目標ピクチャーのPOC、および目標ピクチャーの目標参照ピクチャーのPOCに基づいて、目標位置に対応する動きベクトルをスケーリングして、処理されるべきサブブロックの動きベクトルを得るとき、処理されるべきサブブロックを含むピクチャーのピクチャー順カウントPOCと、処理されるべきサブブロックを含むピクチャーの目標参照ピクチャーのPOCとの間の差が、まず第3の差として決定されてもよく、目標ピクチャーのPOCと目標ピクチャーの目標参照ピクチャーのPOCとの間の差が第4の差として決定され、次いで、目標位置に対応する動きベクトルが、第3の差の、第4の差に対する比率に基づいてスケーリングされて、処理されるべきサブブロックの動きベクトルが得られる。
任意的に、共位置のサブブロックの動きベクトルが、第3の差の、第4の差に対する比に基づいてスケーリングされて、処理されるべきサブブロックの動きベクトルを得ることは:第3の差の、第4の差に対する比を第2の比として決定し;第2の比と目標位置に対応する動きベクトルの積を、処理されるべきサブブロックの動きベクトルとして決定することを含む。
たとえば、図12に示されるように、処理されるべきサブブロックを含むピクチャーはピクチャー・フレーム1であり、ピクチャー・フレーム1の目標参照ピクチャーはピクチャー・フレーム2であり、目標ピクチャーが位置するピクチャー・フレームはピクチャー・フレーム3であり、ピクチャー・フレーム3の目標参照ピクチャーはピクチャー・フレーム4であり、目標位置の動きベクトルはMVである。この場合、MVは、ピクチャー・フレーム1ないしピクチャー・フレーム4のPOCに基づいてスケーリングされて、処理されるべきサブブロックの動きベクトルを得てもよい。
具体的には、処理されるべきサブブロックの動きベクトルは、公式(10)に従って計算されてもよい:
ここで、MVsは、処理されるべきサブブロックの動きベクトルであり、MVは、目標位置の動きベクトルであり、P1ないしP4は、ピクチャー・フレーム1ないしピクチャー・フレーム4のPOCであり、P1−P2は前記第3の差を表わし、P3−P4は前記第4の差を表わす。
処理されるべきブロックについての予測を実装するために、処理されるべきブロックは、処理されるべきブロックのすべての処理されるべきサブブロックの動きベクトルが得られた後に予測されてもよく、処理されるべきブロックの予測されたサンプル値が得られる。あるいはまた、処理されるべき各サブブロックの動きベクトルが得られた後、処理されるべきサブブロックは、処理されるべき各サブブロックの予測されたサンプル値を得るように予測されてもよく、すべての処理されるべきサブブロックが予測された後、処理されるべきブロックの予測されたサンプル値が得られる。
上記は、図3ないし図12を参照して、本願の実施形態における動きベクトル取得方法を記述している。本願の技術的解決策をよりよく理解するために、下記は、本願の実施形態における動きベクトル取得方法を、具体的な実施形態を参照して詳細に記述する。
実施形態1および実施形態2は、図3に示される方法に対応し、最終的に見出される共位置のサブブロックが目標ピクチャーの特定領域内にあるように、目標オフセット・ベクトルの値が制限される。実施形態3では、目標オフセット・ベクトルの値に制限は課されないが、目標ピクチャー内にある、処理されるべきサブブロックの共位置のサブブロックの目標位置が、直接、特定の領域に制限される。最後に、実施形態1ないし実施形態3のすべてにおいて、処理されるべきサブブロックの動きベクトルは、目標ピクチャーの特定領域内のサンプルの動きベクトルに基づいて決定される。下記は、実施形態1ないし実施形態3について別個に詳細に説明する。
実施形態1
図13に示されるように、実施形態1における具体的な動きベクトル取得プロセスは、以下のステップを含む。
310:制約範囲を決定する。
ここでの制約範囲は、上記の第1の値範囲および第2の値範囲と等価である。
制約範囲は、第1の方向および第2の方向における目標オフセット・ベクトルの成分の値が制約範囲内に入るように、第1の方向および第2の方向における処理されるべきブロックの目標オフセット・ベクトルの成分の値を制約するように決定されることが理解されるべきである。
任意的に、制約範囲は、CTUの時間的動きベクトル・フィールドの拡張範囲、処理されるべきブロックの位置およびサイズ、および処理されるべきブロックが位置するCTUの位置およびサイズに基づいて決定されてもよい。
CTUの時間的動きベクトル・フィールドの拡張範囲は、パラメータRangeL、RangeR、RangeU、およびRangeB(これらは、前述のパラメータL、R、U、およびBと等価である)を使用することによって定義されてもよく、パラメータRangeL、RangeR、RangeU、およびRangeBは、それぞれ、左方向、右方向、上方向、および下方向の4方向におけるCTUの時間的動きベクトル・フィールドの拡張値を表わす。
RangeL、RangeR、RangeU、RangeBのそれぞれの値は、0、16、32、64などでありうる(サンプルが単位として使用される)。
前述のパラメータRangeL、RangeR、RangeU、およびRangeBは、あらかじめ定義された仕方で直接決定されてもよく、またはより上位層のシンタックスで担持されてもよいことが理解されるべきである。たとえば、RangeL、RangeR、RangeU、およびRangeBは、SPS、PPS、およびヘッダ・フィールドにおいて担持されてもよい。
具体的には、制約範囲は、公式(11)ないし公式(14)に従って決定されてもよい:
HorMin=CTUX−CUX−RangeL (11)
HorMax=CTUX+CTUW−CUX−CUW+RangeR (12)
VerMin=CTUY−CUY−RangeU (13)
VerMax=CTUY+CTUH−CUY−CUH+RangeB (14)
ここで、CUXおよびCUYは処理されるべきブロックの左上のサンプルの位置座標を表わし、CUWおよびCUHは処理されるべきブロックの幅および高さを表わし、CTUXおよびCTUYは処理されるべきブロックが位置するCTUの左上のサンプルの位置座標を表わし、CTUWおよびCTUHは該CTUの幅および高さを表わす。HorMinおよびHorMaxは、水平方向における制約範囲の最小値および最大値を表わす。VerMinおよびVerMaxは、垂直方向における制約範囲の最小値および最大値を表わす。
320:処理されるべきブロックの開始オフセット・ベクトルを決定する。
ここでの開始オフセット・ベクトルは、前述の初期オフセット・ベクトルと等価である。
ステップ310およびステップ320は、同時に実行されてもよく、または別個に、順番に実行されてもよいことが理解されるべきである。
開始オフセット・ベクトルは、目標ピクチャー内の、処理されるべきブロックの目標ピクチャー・ブロックの位置を決定するために使用され、開始オフセット・ベクトルは、以下の2つの態様で決定されうる。
第3の態様は:処理されるべきブロックの空間的近傍ブロックの利用可能な動きベクトルを、開始オフセット・ベクトルとして決定することを含む。
具体的には、第3の態様では、図4のA1、B1、B0、およびA0の順に、最初の利用可能な近傍ブロックの動きベクトルが見出されてもよく、処理されるべきブロックの開始オフセット・ベクトルとして使用される。
第4の態様は:まず、目標ピクチャーを決定し、次いで、目標ピクチャーをポイントする、近隣ブロックの動きベクトルを、開始オフセット・ベクトルとして決定することを含む。
具体的には、第4の態様では、図4のA1、B1、B0、A0の順に、最初の利用可能な近隣ブロックの動きベクトルが見出されてもよく、その動きベクトルが目標ピクチャーをポイントする場合、その動きベクトルが、処理されるべきブロックの開始オフセット・ベクトルとして使用される。動きベクトルが目標ピクチャーをポイントしない場合、その動きベクトルが目標ピクチャーをポイントできるようにするようその動きベクトルはスケーリングされ、スケーリングされた動きベクトルが開始オフセット・ベクトルとして使用される。
330:開始オフセット・ベクトルが制約範囲外かどうかを判定する。
第1の方向または第2の方向の少なくとも1つにおける開始オフセット・ベクトルの成分の値が制約範囲外である場合、開始オフセット・ベクトルが制約範囲外であると判断されることが理解されるべきである。第1の方向および第2の方向のそれぞれにおける開始オフセット・ベクトルの成分の値が制約範囲外でない場合に、開始オフセット・ベクトルは制約範囲外でないと判定される。
開始オフセット・ベクトルが制約範囲外にある場合は、ステップ340およびステップ350が実行される;または、開始オフセット・ベクトルが制約範囲外にない場合は、ステップ360が実行される。
340:制約範囲に基づいて、制限されたオフセット・ベクトルを決定する。
開始オフセット・ベクトルが制約範囲外である場合、開始オフセット・ベクトルが制限されて、制限されたオフセット・ベクトルが制約範囲内に入るよう制限されたオフセット・ベクトルを得る必要がある。
具体的には、開始オフセット・ベクトルが制約範囲外である場合、開始オフセット・ベクトルの成分(xoff,yoff)が公式(15)および公式(16)に従って制限されて、制限されたオフセット・ベクトルを得てもよい:
xoff=Clip3(HorMin,HorMax,xoff) (15)
yoff=Clip3(VerMin,VerMax,yoff) (16)
ここで、Clip3関数はクリッピング関数であり、具体的には次のように定義される:
制約範囲に基づいて目標オフセット・ベクトルを決定する態様以外に、代替的に、ゼロ動きベクトルが直接、目標オフセット・ベクトルとして使用されてもよいことが理解されるべきである。あるいはまた、ATMVP技術が使用されてもよいが、処理されるべきサブブロックの動きベクトルを得るために別の技術が使用される。
350:制限されたオフセット・ベクトルを、目標オフセット・ベクトルとして決定する。
制限されたオフセット・ベクトルは制約範囲内に入るので、制限されたオフセット・ベクトルは目標オフセット・ベクトルとして決定されてもよい。
360:開始オフセット・ベクトルを、目標オフセット・ベクトルとして決定する。
開始オフセット・ベクトルが制約範囲内に入る場合、開始オフセット・ベクトルに対して制約または制限動作が実行される必要はなく、開始オフセット・ベクトルが直接、目標オフセット・ベクトルとして決定されてもよい。
370:目標ピクチャー内で、処理されるべきサブブロックの位置と、目標オフセット・ベクトルとに基づいて、処理されるべきサブブロックの共位置のサブブロックを決定する。
380:共位置のサブブロックの動きベクトルに基づいて、処理されるべきサブブロックの動きベクトルを決定する。
具体的には、処理されるべきサブブロックを含むピクチャーのPOC、処理されるべきサブブロックを含むピクチャーの目標参照ピクチャーのPOC、目標ピクチャーのPOC、および目標ピクチャーの目標参照ピクチャーのPOCに基づいて、共位置のサブブロックの動きベクトルがスケーリングされて、処理されるべきサブブロックの動きベクトルを得てもよい。
処理されるべきサブブロックの動きベクトルが得られた後、処理されるべきサブブロックの予測されたサンプル値が、処理されるべきサブブロックの動きベクトルに基づいて決定されてもよい。
処理されるべきサブブロックの予測されたサンプル値が決定されるとき、処理されるべきサブブロックの動きベクトルに基づいて、処理されるべきサブブロックの予測サブブロックが決定されてもよく、次いで、予測サブブロックのサンプル値が、処理されるべきサブブロックの予測されたサンプル値として決定される。このようにして、各処理されるべきサブブロックの予測されたサンプル値が得られた後、処理されるべきブロック全体の予測されたサンプル値が得られる。
実施形態2
図14に示されるように、実施形態2における具体的な動きベクトル取得プロセスは、以下のステップを含む。
410:制約範囲を決定する。
ここでの制約範囲の意味および決定態様は、実施形態1における制約範囲のものと同じであり、ここでは、再度、詳細について説明しない。
420:処理されるべきブロックの近傍ブロックの動きベクトルを取得する。
具体的には、図4のA1、B1、B0、A0の順で、最初の利用可能な近傍ブロックの動きベクトルを得ることができる。
あるいはまた、まず、目標ピクチャーが決定されてもよく、次いで、図4のA1、B1、B0、およびA0の順で、処理されるべきブロックの近傍ブロックの動きベクトルが得られる。動きベクトルが目標ピクチャーをポイントする場合は、ステップ430が実行される。動きベクトルが目標ピクチャーをポイントしない場合は、動きベクトルはスケーリングされ、スケーリングされた動きベクトルが目標ピクチャーをポイントするようにされる。次いで、スケーリングされた動きベクトルが近傍ブロックの動きベクトルとして使用され、ステップ440が実行されることに続く。
430:近傍ブロックの動きベクトルが制約範囲内に入るかどうかを判定する。
近傍ブロックの動きベクトルの成分の値が制約範囲内に入る場合は、ステップ440が実行される;または、近傍ブロックの動きベクトルの成分の値が制約範囲内に入らない場合は、ステップ420が実行されることに続き、それが近傍ブロックの動きベクトルの成分の値が制約範囲内に入るまで行なわれる。
第1の方向および第2の方向の両方における近傍ブロックの動きベクトルの成分の値が制約範囲内にある場合に、近傍ブロックの動きベクトルが制約範囲内に入ると判断されることが理解されるべきである。第1の方向の近傍ブロックの動きベクトル成分の値、および/または第2の方向の近傍ブロックの動きベクトル成分の値が制約範囲外である場合には、近傍ブロックの動きベクトルは制約範囲内に入らない(近傍ブロックの動きベクトルは制約範囲外である)と判断される。
440:近傍ブロックの動きベクトルを、目標オフセット・ベクトルとして決定する。
450:目標ピクチャーにおいて、処理されるべきサブブロックの位置と、目標オフセット・ベクトルとに基づいて、処理されるべきサブブロックの共位置のサブブロックを決定する。
460:共位置のサブブロックの動きベクトルに基づいて、処理されるべきサブブロックの動きベクトルを決定する。
具体的には、処理されるべきサブブロックを含むピクチャーのPOC、処理されるべきサブブロックを含むピクチャーの目標参照ピクチャーのPOC、目標ピクチャーのPOC、および目標ピクチャーの目標参照ピクチャーのPOCに基づいて、共位置のサブブロックの動きベクトルがスケーリングされて、処理されるべきサブブロックの動きベクトルを得てもよい。
処理されるべきサブブロックの動きベクトルが得られた後、処理されるべきサブブロックの予測されたサンプル値が、処理されるべきサブブロックの動きベクトルに基づいて決定されうる。
実施形態3
図15に示されるように、実施形態3における具体的な動きベクトル取得プロセスは、以下のステップを含む。
510:処理されるべきブロックの目標オフセット・ベクトルと目標ピクチャーの識別子情報を決定する。
ステップ510における目標オフセット・ベクトルおよび目標ピクチャーの識別子情報を決定するプロセスは、ステップ210におけるものと同じである。
520:処理されるべきサブブロックの位置と目標オフセット・ベクトルとに基づいて、目標ピクチャー内にある、処理されるべきサブブロックの共位置のサブブロックの初期位置を決定する。
具体的には、目標ピクチャー内にある、処理されるべきサブブロックの共位置のサブブロックの初期位置の位置座標が、公式(18)に従って決定されうる:
ここで、(x,y)は、処理されるべきブロックの左上頂点の座標を表わし、iは、処理されるべきブロックの左から右へi番目のサブブロックを表わし、jは、処理されるべきブロックの上から下へj番目のサブブロックを表わし、(xoff,yoff)は、第1の方向および第2の方向における目標オフセット動きベクトルの成分の値を表わし、MおよびNは、処理されるべきサブブロックのサイズを表わし(ここで、Mは、処理されるべきサブブロックの幅を表わしてもよく、Nは、処理されるべきサブブロックの高さを表わしてもよい)、(x(i,j),y(i,j))は(i,j)番目の共位置のサブブロックの位置座標を表わす。
530:初期位置が、目標ピクチャーの事前設定領域内にあるかどうかを判定する。
初期位置が、対応するピクチャーの事前設定領域内にある場合は、ステップ540が直接実行される。初期位置が、対応するピクチャーの事前設定領域の外側にある場合は、ステップ550が実行される。
事前設定領域は、目標ピクチャー内の固定範囲であってもよく、対応するピクチャーの事前設定領域は、公式(19)ないし公式(22)に従って決定されてもよい:
HorMin=Min(CTUX−RangeL,0) (19)
HorMax=Max(CTUX+CTUW+RangeR−1,PicW−1) (20)
VerMin=Min(CTUY−RangeU,0) (21)
VerMax=Max(CTUY+CTUH+RangeB−1,PicH−1) (22)
HorMinおよびHorMaxは水平方向における制約範囲の最小値および最大値を表わし、VerMinおよびVerMaxは垂直方向における制約範囲の最小値および最大値を表わし、CTUXおよびCTUYは処理されるべきブロックが位置するCTUの左上のサンプルの位置座標を表わし、CTUWおよびCTUHは該CTUの幅および高さを表わし、RangeU、RangeB、RangeL、RangeRはそれぞれ上方向、下方向、左方向、右方向における、該CTUの時間的動きベクトル・フィールドの拡張値を表わし、PicWおよびPicHはそれぞれ目標ピクチャーの幅および高さである。
540:初期位置を目標位置として決定する。
初期位置が目標ピクチャーの事前設定領域内にある場合は、初期位置が直接、目標位置として決定されてもよい。
550:事前設定領域にある、初期位置に最も近い位置を目標位置として決定する。
具体的には、初期位置が目標ピクチャーの事前設定領域の外側にある場合、事前設定領域内にあり、初期位置に最も近い位置が目標位置として決定されてもよい。具体的には、初期位置が目標ピクチャーの事前設定領域の外側である場合、目標位置は、公式(23)および公式(24)に従って決定されてもよい:
x(i,j)=Clip3(HorMin,HorMax,x(i,j)) (23)
y(i,j)=Clip3(VerMin,VerMax,y(i,j)) (24)
ここで、Clip3関数は、クリッピング関数であり、具体的な定義は上記の公式(17)に示されている。
560:目標位置に対応する動きベクトルに基づいて、処理されるべきサブブロックの動きベクトルを決定する。
具体的には、処理されるべきサブブロックを含むピクチャーのPOC、処理されるべきサブブロックを含むピクチャーの目標参照ピクチャーのPOC、目標ピクチャーのPOC、および目標ピクチャーの目標参照ピクチャーのPOCに基づいて、目標位置の動きベクトルがスケーリングされて、処理されるべきサブブロックの動きベクトルを得てもよい。
処理されるべきサブブロックの動きベクトルが得られた後、処理されるべきサブブロックの予測されたサンプル値が、処理されるべきサブブロックの動きベクトルに基づいて決定されてもよい。
本願によってもたらされる有益な効果をよりよく理解するために、下記は、図16および図17を参照して、本願の実施形態における動きベクトル取得方法の有益な効果を詳細に説明する。
図16に示されるように、現在のピクチャーは現在のCTUを含み、現在のCTUは複数の処理されるべきブロックを含み、各処理されるべきブロックは複数の処理されるべきサブブロックを含み、各処理されるべきブロックは1つのオフセット・ベクトルに対応する。処理されるべきブロックの対応するブロックは、対応するオフセット・ベクトルに基づいて見つけることができる。各処理されるべきサブブロックは、目標ピクチャー内の1つの共位置のサブブロックに対応する。処理されるべきサブブロックに対応する、目標ピクチャー内の共位置のサブブロックが位置する領域が不確定であるか、または、処理されるべきサブブロックに対応する、目標ピクチャー内の位置が不確定である場合、共位置のサブブロックの動きベクトルが得られるとき、対応するピクチャー全体の時間的動きベクトル・フィールドが前もって得られなければならない可能性がある。結果として、メモリ帯域幅が増大する。
図17に示されるように、現在のピクチャーは現在のCTUを含み、現在のCTUは複数の処理されるべきブロックを含み、各処理されるべきブロックは複数の処理されるべきサブブロックを含み、目標ピクチャー内の破線領域は目標ピクチャーの事前設定領域を示す。本願では、処理されるべきブロックのオフセット・ベクトルの範囲が制約され、それにより目標ピクチャー内にある、処理されるべきサブブロックに対応する共位置のサブブロックが目標ピクチャーの事前設定領域内にあるか、または目標ピクチャー内にある、処理されるべきサブブロックの共位置のサブブロックの対応する位置が目標ピクチャーの事前設定領域内にある。このようにして、得られる必要があるのは共位置のサブブロックまたは対応する位置であり、目標ピクチャー全体の動きベクトルが得られる必要はない。これは、メモリ帯域幅を低減できる。さらに、先読みを通じて、メモリ読み出し時間の量を低減できる。
本願の実施形態における動きベクトル取得方法は、インター予測のマージモードに適用されてもよい。
サブ符号化単位ベースの動きベクトル予測(Sub-CU based motion vector prediction、SMVP)技術では、現在の符号化単位がサイズM×Nのサブ符号化単位に分割され、各サブ符号化単位の動き情報が推定され、次いで、各サブ符号化単位の動き情報に基づいて動き補償が実行されて、現在の符号化単位の予測子が得られる。
SMVP技術がマージモードに適用される場合、先進時間的動きベクトル予測(advanced temporal motion vector prediction、ATMVP)および空間時間的動きベクトル予測(spatial-temporal motion vector prediction、STMVP)の2つのタイプの候補動き情報が、もとのマージモードに基づいて追加される。
ATMVP技術では、まず共位置の参照ピクチャー(collocated reference picture)が決定され、次いで、現在の符号化単位が、サイズM×Nのサブ符号化単位に分割され、共位置の参照ピクチャー内にあり、各現在のサブ符号化単位に対応するサブ符号化単位の中心点におけるサンプルの動き情報が得られ、その動き情報がスケーリングされて、その動き情報が各現在のサブ符号化単位の動き情報に変換される。本願の実施形態における動きベクトル取得方法は、改良されたATMVP技術として理解されてもよい。
図4に示される、処理されるべきブロックの近傍ブロックに基づき、下記は、図18および図19を参照して、既存のマージモードにおける候補情報リスト構築プロセスと、SMVP技術が適用されるマージモードにおける候補情報リスト構築プロセスとを別々に説明する。
既存のマージモードにおける候補情報リスト構築プロセスが図18に示される。
図18に示される候補情報リスト構築プロセスは、以下のステップを含む。
610:A1、B1、B0、A 0 の位置の動き情報を挿入する。
620:B2の位置の動き情報を挿入する。
630:時間的位置(TまたはC)の動き情報を挿入する。
640:候補動き情報リストをパディングする。
SMVP技術が適用されるマージモードにおける候補情報リスト構築プロセスが図19に示される。
図19に示される候補情報リスト構築プロセスは、以下のステップを含む。
710:A1、B1、B0、A 0 の位置の動き情報を挿入する。
720:ATMVP動き情報およびSTMVP動き情報を挿入する。
730:B2の位置の動き情報を挿入する。
740:時間的位置(TまたはC)の動き情報を挿入する。
750:候補動き情報リストをパディングする。
図18と比較して、図19は、さらに、ATMVP動き情報およびSTMVP動き情報を挿入するステップ720を含んでいる。他のステップは変更されないままである。
本願の実施形態における動きベクトル取得方法に従って取得される、処理されるべきサブブロックの動きベクトルは、ステップ720において挿入されるATMVP動き情報の一部であることが理解されるべきである。
具体的には、図4に示される処理されるべきブロックの近傍ブロックに基づき、SMVP技術がマージモードに適用される場合、マージモードにおけるエンコードは、具体的には以下のプロセスを含む。
(1)空間的近傍ブロックA1、B1、B0、A0の位置の動き情報を順に取得し、利用可能性を検査し、繰り返されている項目を削除し、動き情報を候補動き情報リストに挿入する。
(2)ATMVP動き情報およびSTMVP動き情報を取得し、利用可能性を検査し、繰り返されている項目を削除し、動き情報を候補動き情報リストに挿入する。
(3)候補動き情報リストの長さが6未満である場合、B2の位置の動き情報を取得し、利用可能性を検査し、繰り返されている項目を削除し、動き情報を候補動き情報リストに挿入する。
(4)近傍のエンコードされたフレーム内の位置Tに対応するブロックの動き情報を取得し(該動き情報が存在しない場合は、位置Cに対応するブロックの動き情報が取得される)、その動き情報をスケーリングし、スケーリングされた動き情報を候補動き情報リストに挿入する。
(5)候補動き情報リストの長さが7未満である場合、パディングを実行して、長さが7の候補動き情報リストを得る。
(6)候補動き情報リスト内の各候補動き情報をたどり、動き補償および再構成を実行して再構成値を得て、次いでレート歪み最適化(rate distortion optimization、RDO)法に従って、最低のレート歪みコスト(rate distortion cost、RDコスト)をもつ候補動き情報を決定して、マージ・インデックス(index)を得る。
(7)候補動き情報リストの長さに基づいて、マージインデックスをビットストリームに書き込み、ビットストリームをデコーダ側に送信する。
マージモードにおける候補動き情報リスト構築プロセスが図19に示されている。
上記は、図3ないし図19を参照して、本願の実施形態における動きベクトル取得方法を詳細に記述している。本願の実施形態における動きベクトル取得方法は、図1および図2に示されるインター予測に対応しうることが理解されるべきである。本願の実施形態における動きベクトル取得方法は、図1および図2に示されるインター予測プロセスにおいて実行されてもよい。本願の実施形態における動きベクトル取得方法は、具体的には、エンコーダまたはデコーダ内のインター予測モジュールによって実行されてもよい。さらに、本願の実施形態における動きベクトル取得方法は、ビデオ・ピクチャーをエンコードおよび/またはデコードする必要がある可能性がある任意の電子デバイスまたは装置において実装されてもよい。
下記は、図20および図21を参照して、本願の実施形態における動きベクトル取得装置を詳細に説明する。図20に示される装置は、図3、図13、および図14に示される方法に対応し、図3、図13、および図14に示される方法におけるステップを実行することができる。図21に示される装置は、図9および図15に示される方法に対応し、図9および図15に示される方法におけるステップを実行することができる。簡潔のため、繰り返される記載は下記では適宜割愛する。
図20は、本願のある実施形態による動きベクトル取得装置800の概略ブロック図である。図20に示される装置800は:
決定モジュール810であって、該決定モジュール810は:
第1の値範囲および第2の値範囲を決定するステップと;
処理されるべきブロックの目標オフセット・ベクトルと、目標ピクチャーの識別子情報とを決定するステップであって、処理されるべきブロックは、少なくとも1つの処理されるべきサブブロックを含み、第1の方向における目標オフセット・ベクトルの成分の値は、第1の値範囲内に入り、第2の方向における目標オフセット・ベクトルの成分の値は、第2の値範囲内に入り、第1の方向および第2の方向は、直交関係にある、ステップと;
目標ピクチャーにおいて、処理されるべきサブブロックの位置および目標オフセット・ベクトルに基づいて、処理されるべきサブブロックの共位置のサブブロックを決定するステップとを実行するように構成されている、決定モジュール;および
共位置のサブブロックの動きベクトルに基づいて、処理されるべきサブブロックの動きベクトルを得るように構成された取得モジュール820を含む。
本願では、目標オフセット・ベクトルの成分値が特定の値範囲内に入るので、目標オフセット・ベクトルに基づいて目標ピクチャー内で決定される処理されるべきサブブロックも、目標ピクチャーの特定の範囲内に入る。よって、目標ピクチャーの該特定の範囲内の時間的動きベクトル・フィールドを先読みすることによって、メモリ帯域幅およびメモリ読み取り時間の量が低減できる。
決定モジュール810および取得モジュール820は、エンコードおよびデコード装置における予測モジュール(これは特に、インター予測モジュールであってもよい)に対応してもよい。特定の実装の間、決定モジュール810および取得モジュール820は、ソフトウェアまたはハードウェアを使用することによって実装されてもよく、またはソフトウェアおよびハードウェアの組み合わせを使用することによって実装されてもよい。
図21は、本願のある実施形態による動きベクトル取得装置の概略ブロック図である。図21に示される装置900は:
決定モジュール910であって、該決定モジュールは:
処理されるべきブロックの目標オフセット・ベクトルと、目標ピクチャーの識別子情報とを決定するステップであって、前記処理されるべきブロックは少なくとも1つの処理されるべきサブブロックを含む、ステップと;
処理されるべきサブブロックの位置と、目標オフセット・ベクトルとに基づいて、目標ピクチャー内にある、処理されるべきサブブロックの共位置のサブブロックの初期位置を決定するステップと;
初期位置が目標ピクチャーの事前設定領域内にある場合、初期位置を目標位置として決定する;または
初期位置が事前設定領域外である場合、事前設定領域内にあり、初期位置に最も近い位置を目標位置として決定するステップとを実行するよう構成されている決定モジュール;および
前記目標位置に対応する動きベクトルに基づいて、処理されるべきサブブロックの動きベクトルを取得するように構成されている取得モジュール920を含む。
本願では、事前設定領域内の目標位置は、前記初期位置と、目標ピクチャーの事前設定領域とに基づいて見つけられ、次に、処理されるべきサブブロックの動きベクトルは、目標ピクチャーの特定の範囲内の動きベクトルに基づいて決定される。よって、目標ピクチャーの特定の範囲内の時間的動きベクトル・フィールドを先読みすることによって、メモリ帯域幅およびメモリ読み取り時間の量が低減できる。
決定モジュール910および取得モジュール920は、エンコードおよびデコード装置における予測モジュールに対応してもよく、該予測モジュールは特に、インター予測モジュールであってもよい。具体的な実装の間、決定モジュール910および取得モジュール920は、ソフトウェアまたはハードウェアを使用することによって実装されてもよく、またはソフトウェアおよびハードウェアの組み合わせを使用することによって実装されてもよい。
本願の実施形態における動きベクトル取得方法は、代替的に、ビデオ・エンコーダまたはビデオ・デコーダによって実行されてもよい。下記は、図22および図23を参照して、本願の実施形態におけるビデオ・エンコーダおよびビデオ・デコーダの構造を説明する。
図22は、本願のある実施形態によるビデオ・エンコーダの概略ブロック図である。図22に示されるビデオ・エンコーダ1000は、エンコーダ側予測モジュール1001、変換および量子化モジュール1002、エントロピー符号化モジュール1003、エンコードおよび再構成モジュール1004、およびエンコーダ側フィルタリング・モジュールを含む。
図22に示されるビデオ・エンコーダ1000は、ビデオをエンコードすることができる。具体的には、ビデオ・エンコーダ1000は、図1に示されるビデオ・エンコード・プロセスを実行して、ビデオをエンコードすることができる。さらに、ビデオ・エンコーダ1000は、本願の実施形態における動きベクトル取得方法をさらに実行することができ、ビデオ・エンコーダ1000は、図3、図9、および図13ないし図15に示される方法のステップを実行することができる。
本願の実施形態における動きベクトル取得装置は、ビデオ・エンコーダ1000内のエンコーダ側予測モジュール1001であってもよい。具体的には、図20および図21に示される装置800および装置900は、ビデオ・エンコーダ1000内のエンコーダ側予測モジュール1001と等価である。
図23は、本願のある実施形態によるビデオ・デコーダの概略ブロック図である。図23にされる示すビデオ・デコーダ2000は、エントロピー復号デコードモジュール2001、逆変換および逆量子化モジュール2002、デコーダ側予測モジュール2003、デコードおよび再構成モジュール2004、およびデコーダ側フィルタリング・モジュール2005を含む。
図23に示されるビデオ・デコーダ2000は、ビデオをデコードすることができる。具体的には、ビデオ・デコーダ2000は、図2に示されるビデオ復号・デコード・プロセス処理を実行して、ビデオをデコードすることができる。さらに、ビデオ・デコーダ2000は、さらに本願の実施形態における動きベクトル取得方法を実行することができ、ビデオ・デコーダ2000は、図3、図9、および図13ないし図15に示される動きベクトル取得方法のステップを実行することができる。
本願の実施形態における動きベクトル取得装置は、ビデオ・デコーダ2000におけるデコーダ側予測モジュール2003であってもよい。具体的には、図20および図21に示される装置800および装置900は、ビデオ・デコーダ2000におけるデコーダ側予測モジュール2003と等価である。
下記は、図24ないし図26を参照して、本願の実施形態における動きベクトル取得方法の適用シナリオを説明する。本願の実施形態における動きベクトル取得方法は、図24ないし図26に示される、ビデオ伝送システム、エンコードおよびデコード装置、ならびにエンコードおよびデコード・システムによって実行されてもよい。
図24は、本願のある実施形態によるビデオ伝送システムの概略ブロック図である。
図24に示されるように、ビデオ伝送システムは、収集モジュール3001、エンコード・モジュール3002、送信モジュール3003、ネットワーク伝送3004、受信モジュール3005、デコード・モジュール3006、およびレンダリング・モジュール3007を含む。
ビデオ伝送システムのモジュールは、以下の具体的な機能をもつ。
収集モジュール3001は、カメラまたはカメラ・グループを含み、エンコードの前に、ビデオ・ピクチャーを収集し、収集されたビデオ・ピクチャーに対して処理を実行して、光信号をデジタル化されたビデオ・シーケンスに変換するように構成される。
エンコード・モジュール3002は、ビデオ・シーケンスをエンコードして、ビットストリームを得るように構成される。
送信モジュール3003は、エンコードされたビットストリームを送信するように構成される。
受信モジュール3005は、送信モジュール3003によって送信されたビットストリームを受信するように構成される。
ネットワーク3004は、送信モジュール3003によって送信されたビットストリームを受信モジュール3005に伝送するように構成される。
デコード・モジュール3006は、受信モジュール3005によって受信されたビットストリームをデコードして、ビデオ・シーケンスを再構成するように構成される。
レンダリング・モジュール3007は、ビデオ表示効果を改善するために、デコード・モジュール3006によるデコードを通じて得られた再構成されたビデオ・シーケンスをレンダリングするように構成される。
図24に示されるビデオ伝送システムは、本願の実施形態における動きベクトル取得方法を実行することができる。具体的には、図24に示されるビデオ伝送システムにおけるエンコード・モジュール3002およびデコード・モジュール3006の両方が、本願の実施形態における動きベクトル取得方法を実行してもよい。
下記は、図25および図26を参照して、エンコードおよびデコード装置、ならびに該エンコードおよびデコード装置を含むエンコードおよびデコード・システムについて詳細に説明する。図25および図26に示されるエンコードおよびデコード装置ならびにエンコードおよびデコード・システムは、本願の実施形態における動きベクトル取得方法を実行することができることが理解されるべきである。
図25は、本願のある実施形態によるビデオ・エンコードおよびデコード装置の概略図である。ビデオ・エンコードおよびデコード装置50は、ビデオ・ピクチャーをエンコードおよび/またはデコードするために専用の装置、またはビデオ・エンコードおよびデコード機能を有する電子装置であってもよい。あるいはまた、エンコードおよびデコード装置50は、無線通信システムにおける移動端末またはユーザー装置であってもよい。
エンコードおよびデコード装置50は以下のモジュールまたはユニット:コントローラ56、コーデック54、無線インターフェース52、アンテナ44、スマートカード46、カードリーダー48、キーパッド34、メモリ58、赤外線ポート42、およびディスプレイ32を含むことができる。図25に示されるモジュールおよびユニットに加えて、エンコードおよびデコード装置50は、マイクロフォンおよび任意の適切なオーディオ入力モジュールをさらに含んでいてもよい。オーディオ入力モジュールは、デジタル信号またはアナログ信号を入力することができる。エンコードおよびデコード装置50は、さらに、オーディオ出力モジュールを含んでいてもよい。オーディオ出力モジュールは、ヘッドセット、スピーカー、またはアナログ・オーディオ出力接続またはデジタル・オーディオ出力接続であってもよい。エンコードおよびデコード装置50は、さらに、電池を含んでいてもよい。電池は、太陽電池、燃料電池などであってもよい。エンコードおよびデコード装置50は、さらに、他の装置との近距離見通し内通信を実行するように構成された赤外線ポートを含んでいてもよい。あるいはまた、エンコードおよびデコード装置50は、たとえばBluetooth無線接続またはUSB/ライブライン有線接続を通じて、任意の適切な短距離通信モードで前記他の装置と通信してもよい。
メモリ58は、ピクチャーの形のデータおよびオーディオの形のデータを記憶してもよく、また、コントローラ56上で実行される命令を記憶してもよい。
コーデック54は、オーディオおよび/またはビデオ・データをエンコードおよびデコードするか、または、コントローラ56の制御の下で、オーディオおよび/またはビデオ・データに対する支援されたエンコードおよび支援されたデコードを実装することができる。
スマートカード46およびカードリーダー48は、ユーザー情報を提供することができ、また、ネットワーク認証の認証情報および認可されたユーザーを提供することができる。スマートカード46およびカードリーダー48の具体的な実装形態は、ユニバーサル集積回路カード(universal Integrated circuit card、UICC)およびUICCリーダーであってもよい。
無線インターフェース52は、無線通信信号を生成することができる。無線通信信号は、セルラー通信ネットワーク、無線通信システム、または無線ローカルエリアネットワークにおける通信中に生成される通信信号であってもよい。
アンテナ44は、無線インターフェース52によって生成された無線周波数信号を別の装置(一つまたは複数の装置があってもよい)に送信するように構成されており、さらに別の装置(一つまたは複数の装置があってもよい)から無線周波数信号を受信するように構成されてもよい。
本願のいくつかの実施形態では、エンコードおよびデコード装置50は、伝送および/または記憶の前に、他の装置から処理されるべきビデオ・ピクチャー・データを受信してもよい。本願の他のいくつかの実施形態では、エンコードおよびデコード装置50は、無線または有線接続を通じてピクチャーを受信し、受信したピクチャーをエンコード/デコードしてもよい。
図26は、本願のある実施形態による、ビデオ・エンコードおよびデコード・システム7000の概略ブロック図である。
図26に示されるように、ビデオ・エンコードおよびデコード・システム7000は、源装置4000および宛先装置5000を含む。源装置4000は、エンコードされたビデオ・データを生成する。源装置4000は、ビデオ・エンコード装置またはビデオ・エンコード・デバイスと称されることもある。宛先装置5000は、源装置4000によって生成されたエンコードされたビデオ・データをデコードしてもよい。宛先装置5000は、ビデオ・デコード装置またはビデオ・デコード・デバイスと称されてもよい。
源装置4000および宛先装置5000の具体的な実施形態は、それぞれ、デスクトップコンピュータ、モバイル・コンピューティング装置、ノートブック(たとえば、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、スマートフォン、ハンドセット、テレビ、カメラ、ディスプレイ装置、デジタルメディアプレーヤー、ビデオゲームコンソール、車載コンピュータ、または他の同様の装置のうちの任意のものであってもよい。
宛先装置5000は、エンコードされたビデオ・データを、チャネル6000を通じて源装置4000から受信してもよい。チャネル6000は、エンコードされたビデオ・データを源装置4000から宛先装置5000へ移すことができる一つまたは複数の媒体および/または装置を含んでいてもよい。一例では、チャネル6000は、源装置4000がエンコードされたビデオ・データを宛先装置5000にリアルタイムで直接伝送することを可能にすることができる一つまたは複数の通信媒体を含んでいてもよい。この例では、源装置4000は、エンコードされたビデオ・データを通信規格(たとえば、無線通信プロトコル)に従って変調し、変調されたビデオ・データを宛先装置5000に送信してもよい。前記一つまたは複数の通信媒体は、無線および/または有線通信媒体、たとえば、無線周波数(radio frequency、RF)スペクトルまたは一つまたは複数の物理伝送ケーブルを含んでいてもよい。前記一つまたは複数の通信媒体は、パケットベースのネットワーク(たとえば、ローカルエリアネットワーク、ワイドエリアネットワーク、またはグローバルネットワーク(たとえば、インターネット))の一部を形成していてもよい。前記一つまたは複数の通信媒体は、源装置4000と宛先装置5000との間の通信を実装するルーター、スイッチ、基地局、または他の装置を含んでいてもよい。
別の例では、チャネル6000は、源装置4000によって生成されたエンコードされたビデオ・データを記憶する記憶媒体を含んでいてもよい。この例では、宛先装置5000は、ディスクアクセスまたはカードアクセスを通じて記憶媒体にアクセスすることができる。記憶媒体は、ブルーレイディスク、高密度デジタルビデオディスク(digital video disc、DVD)、コンパクトディスク読み出し専用メモリ(compact disc read-only memory、CD-ROM)、フラッシュメモリ、またはエンコードされたビデオ・データを記憶するように構成された他の好適なデジタル記憶媒体のような、複数のローカルにアクセス可能なデータ記憶媒体を含んでいてもよい。
別の例では、チャネル6000は、源装置4000によって生成されたエンコードされたビデオ・データを記憶するファイル・サーバーまたは別の中間記憶装置を含んでいてもよい。この例では、宛先装置5000は、ストリーミング伝送またはダウンロードを通じて、ファイル・サーバーまたは前記別の中間記憶装置に記憶されたエンコードされたビデオ・データにアクセスすることができる。ファイル・サーバーは、エンコードされたビデオ・データを記憶し、エンコードされたビデオ・データを宛先装置5000に伝送することができるタイプのサーバーであってもよい。たとえば、ファイル・サーバーは、ワールドワイドウェブ(world wide web、WWW)サーバー(たとえばウェブサイトのために使用される)、ファイル転送プロトコル(file transfer protocol、FTP)サーバー、ネットワークアタッチトストレージ(network attached storage、NAS)装置、またはローカルディスクドライブを含みうる。
宛先装置5000は、標準的なデータ接続(たとえば、インターネット接続)を通じて、エンコードされたビデオ・データにアクセスすることができる。データ接続の例示的なタイプは、ファイル・サーバーに記憶されたエンコードされたビデオ・データにアクセスするのに好適な無線チャネルまたは有線接続(たとえば、ケーブルモデム)、またはそれらの組み合わせを含む。ファイル・サーバーからのエンコードされたビデオ・データの伝送は、ストリーミング伝送、ダウンロード伝送、またはそれらの組み合わせであってもよい。
本願における動きベクトル取得方法は、無線アプリケーションシナリオに限定されない。たとえば、本願における動きベクトル取得方法は、無線テレビジョン放送、ケーブルテレビジョン伝送、衛星テレビジョン伝送、(たとえばインターネットを通じた)ストリーミングビデオ伝送、データ記憶媒体に記憶されたビデオ・データのエンコード、データ記憶媒体に記憶されたビデオ・データのデコード、または他のアプリケーションなどの複数のマルチメディアアプリケーションをサポートするビデオ・エンコードおよびデコードに適用されうる。いくつかの例において、ビデオ・エンコードおよびデコード・システム7000は、ビデオストリーミング伝送、ビデオ再生、ビデオ放送、および/またはビデオ電話などのアプリケーションをサポートするように、一方向または双方向ビデオ伝送をサポートするように構成されてもよい。
図26において、源装置4000は、ビデオ源4001、ビデオ・エンコーダ4002、および出力インターフェース4003を含む。いくつかの例において、出力インターフェース4003は、変調器/復調器(モデム)および/または送信器を含んでいてもよい。ビデオ源4001は、ビデオ・キャプチャ装置(たとえば、ビデオ・カメラ)、以前にキャプチャされたビデオ・データを含むビデオ・アーカイブ、ビデオ・コンテンツ・プロバイダーからビデオ・データを受信するように構成されたビデオ入力インターフェース、および/またはビデオ・データを生成するように構成されたコンピュータ・グラフィックス・システムを含んでいてもよく、または前述のビデオ・データ源の組み合わせを含んでいてもよい。
ビデオ・エンコーダ4002は、ビデオ源4001からのビデオ・データをエンコードしてもよい。いくつかの例において、源装置4000は、出力インターフェース4003を通じて、エンコードされたビデオ・データを宛先装置5000に直接送信する。宛先装置5000がデコードおよび/または再生のために、エンコードされたビデオ・データに後でアクセスするよう、エンコードされたビデオ・データはさらに、記憶媒体またはファイル・サーバーに記憶されてもよい。
図26の例では、宛先装置5000は、入力インターフェース5003、ビデオ・デコーダ5002、および表示装置5001を含む。いくつかの例では、入力インターフェース5003は、受信機および/またはモデムを含む。入力インターフェース5003は、エンコードされたビデオ・データをチャネル6000を通じて受信してもよい。表示装置5001は、宛先装置5000と一体化されてもよく、または宛先装置5000の外部に位置してもよい。通例、表示装置5001は、デコードされたビデオ・データを表示する。表示装置5001は、液晶ディスプレイ、プラズマディスプレイ、有機発光ダイオードディスプレイ、または別のタイプの表示装置などの複数のタイプの表示装置を含みうる。
ビデオ・エンコーダ4002およびビデオ・デコーダ5002は、ビデオ圧縮規格(たとえば、高効率ビデオ符号化H.265規格)に従って動作してもよく、高効率ビデオ・エンコード(high efficiency video coding、HEVC)テストモデル(HM)に準拠してもよい。H.265規格の文字記述ITU-TH.265(V3)(04/2015)が2015年4月29日にリリースされており、http://handle.itu.int/11.1002/7000/12455からダウンロードできる。このファイルは、参照によりその全体において本明細書に組み込まれる。
当業者は、本明細書に開示された実施形態に記載された例と組み合わせて、ユニットおよびアルゴリズム・ステップが、電子ハードウェアまたはコンピュータソフトウェアと電子ハードウェアの組み合わせによって実装されうることを認識しうる。機能がハードウェアによって実行されるかソフトウェアによって実行されるかは、技術的解決策の具体的な用途および設計上の制約に依存する。当業者は、特定の用途ごとに、記載された機能を実装するために異なる方法を用いることがありうるが、その実装が本願の範囲を超えるものであると考えるべきではない。
当業者は、便利で簡単な説明のために、前述のシステム、装置、およびユニットの詳細な作業プロセスについては、方法実施形態における対応するプロセスを参照することを明確に理解することができる。詳細は、ここでは再度説明しない。
本願において提供されるいくつかの実施形態では、開示されたシステム、装置、および方法は、別の仕方で実装されうることが理解されるべきである。たとえば、記載された装置実施形態は単なる例である。たとえば、ユニットへの分割は単に論理的な機能分割である。実際の実装では、別の分割の仕方があってもよい。たとえば、複数のユニットまたは構成要素は、別のシステムに組み合わされる、または統合されてもよく、あるいはいくつかの特徴が、無視されてもよく、あるいは実行されなくてもよい。さらに、表示または議論された相互結合または直接結合または通信接続は、いくつかのインターフェースを通じて実装されてもよい。装置またはユニット間の間接的な結合または通信接続は、電子的、機械的、または他の形で実装されうる。
別個の部品として記載されるユニットは、物理的に別個であってもなくてもよく、ユニットとして表示される部品は、物理的なユニットであってもなくてもよく、1つの場所内にあってもよく、または複数のネットワーク・ユニット上に分散されていてもよい。それらのユニットの一部または全部は、実施形態の解決策の目的を達成するために、実際の要件に基づいて選択されてもよい。
加えて、本願の実施形態における機能ユニットは、1つの処理ユニットに統合されてもよく、または各ユニットは、物理的に単独で存在してもよく、または2つ以上のユニットが1つのユニットに統合されてもよい。
これらの機能がソフトウェア機能ユニットの形態で実装され、独立した製品として販売または使用される場合、これらの機能は、コンピュータ読み取り可能な記憶媒体に記憶されてもよい。そのような理解に基づいて、本願の技術的解決策は本質的に、または先行技術に寄与する部分は、または技術的解決策のいくつかは、ソフトウェア製品の形で実装されてもよい。コンピュータソフトウェア製品は、記憶媒体に記憶され、コンピュータ装置(これは、パーソナルコンピュータ、サーバー、またはネットワーク装置であってもよい)に、本願の実施形態に記載される方法のステップの全部または一部を実行するように命令するためのいくつかの命令を含む。上記の記憶媒体は、USBフラッシュドライブ、リムーバブルハードディスク、リードオンリーメモリ(read-only memory、ROM)、ランダムアクセスメモリ(random access memory、RAM)、磁気ディスク、またはコンパクトディスクといった、プログラムコードを記憶することができる任意の媒体を含む。
上記の説明は、単に本願の具体的な実装であり、本願の保護範囲を制限することは意図されていない。本願に開示された技術的範囲内で当業者によって容易に割り出される任意の変形または置換は、本願の保護範囲内に入る。したがって、本願の保護範囲は、特許請求の範囲の保護範囲に従うものとする。