デジタルビデオおよび画像を圧縮するための技法は、ピクセルサンプルの間の相関特性を利用し、ビデオおよび画像における冗長性を除去する。エンコーダが、隣接サンプルの間の空間相関を利用し、隣接するエンコードされたピクセルを使用して、現在のコード化ピクセルを予測する、「イントラ予測」と称される方法を採用することによって、空間冗長性を排除する。デジタルビデオが、単一の画像内の空間相関以外に、一連の画像から成るため、画像の間の時間相関もまた、1つ以上のすでにエンコードされている画像を参照して、現在のコード化画像内のコード化ピクセルを予測する、「インター予測」と集合的に称される方法を装備するエンコーダによって活用される。運動推定(ME)および運動補償(MC)は、インター予測を実施するための主要なステップのうちの2つである。
業界によって採用されるビデオコード化規格では、ブロックの上方および左隣接ピクセルが、ブロックの予測サンプルを得るためにイントラ予測プロセスで使用される。イントラ予測モードは、ブロックのイントラ予測サンプルを導出するための方法を示す。例えば、4×4ブロックのためのH.264/AVC規格では、9つのイントラ予測モードが存在する。H.265/HEVC規格では、DCモードおよび平面モードを加えた、33個の角度予測モードが、コード化単位(CU)の効果的な圧縮のために導入される。
開示される技術の実施形態が、ランタイム性能を改良するように、既存のビデオコード化規格(例えば、HEVC、H.265)および将来の規格に適用され得る。節の見出しは、説明の可読性を改良するために本書で使用され、いかようにも議論または実施形態(および/または実装)を個別の節のみに限定しない。
1 平面予測モードおよびビデオエンコード/デコードの概観
H.265/HEVC規格で規定されるように、平面モードにおけるブロック内の予測サンプルの値が、ブロックの以下の隣接サンプル、すなわち、右上のもの、左下のもの、上方のもの、および左のものの値の加重和として導出される。平面モードを使用するとき、予測されるサンプルを得るためのプロセスまたはモジュールは、最初に、右上隣接サンプルとして右隣接サンプルをパッドし、右隣接サンプルおよび左隣接サンプルの水平補間値を計算し、次いで、左下隣接サンプルとして下隣接サンプルをパッドし、下隣接サンプルおよび上方隣接サンプルの垂直補間値を計算し、最後に、2つの補間値の平均として予測されるサンプルを設定する。
図1は、H.265規格における平面モードの予測されるサンプルの導出プロセスを示す。そこに示されるように、ブロック内の予測サンプルは、第1の予測値(水平方向への補間として取得される)および第2の予測値(垂直方向への補間として取得される)の平均として導出され、第1の予測値は、参照サンプル「T」(例えば、右上のもの)および予測サンプルと同一行内の左隣接サンプルのうちの参照サンプル(例えば、左のもの)の加重平均として計算され、第2の予測値は、参照サンプル「L」(例えば、左下のもの)および予測サンプルと同一列内の上方隣接サンプルのうちの参照サンプル(例えば、上方のもの)の加重平均として計算される。
本プロセスは、図1との関連では、以下のように要約され得る。
(1)サンプル「T」を使用して右隣接サンプルをパッドし、水平補間値を計算する。
(2)サンプル「L」を使用して下隣接サンプルをパッドし、垂直補間値を計算する。
(3)2つの補間値の平均として平面予測モードの予測される値を設定する。
1.1 既存の実装の欠点
H.265/HEVC規格における既存の平面モードの欠点のうちの1つは、固定位置サンプルを用いて右および下隣接サンプルをパッドすることが、平面モードの予測正確度および効率の劣化につながる、偽テクスチャ特性を右および下隣接サンプルにもたらす。
別の既存の実装(JVET-K0055と表される)では、右下隣接サンプルが、最初に、右上隣接サンプル(例えば、図1のサンプル「T」)および左下隣接サンプル(例えば、図1のサンプル「L」)の加重平均として導出され、加重は、サンプル「T」と右下隣接サンプルとの間の距離、およびサンプル「L」と右下隣接サンプルとの間の距離として設定される。次いで、現在のブロックの右隣接サンプルが、右下隣接サンプルおよびサンプル「T」の加重平均として決定され、加重は、右隣接サンプルと右下隣接サンプルとの間の距離、および右隣接サンプルとサンプル「T」との間の距離として設定される。現在のブロックの下隣接サンプルが、右下隣接サンプルおよびサンプル「L」の加重平均として決定され、加重は、それぞれ、下隣接サンプルと右下隣接サンプルおよびサンプル「L」との間の距離として設定される。
しかしながら、JVET-K0055実装は、サンプル「T」およびサンプル「L」のみが隣接サンプルの補間に関与するという点で、既存の平面モード実装と同一の欠点に悩まされる。
さらに別の実装(JVET-K0242と表される)は、最初に導出される右下隣接サンプルを使用して、右および下隣接サンプルを補間する。JVET-K0055と対照的に、右下隣接サンプルは、現在のブロックのサイズに従って設定される。現在のブロックの幅および高さの積が、所定の値(例えば、32)よりも大きくないとき、JVET-K0055におけるものに類似する方法が、右下隣接サンプル(Pbr1として表される)を計算するために使用される。別様に、右下隣接サンプルは、Pbr1およびPbr2の平均値として設定され、Pbr2は、現在のブロックの9つの事前設定された隣接サンプル位置の最大9つの値から選択される。次いで、右および下参照サンプルが、JVET-K0055におけるものと同一の方法を使用して導出される。
しかしながら、JVET-K0242実装が、大型ブロックのためのいくつかの事前設定された隣接位置から、より多くの参照値を採用しても、本技法は、それらの空間距離が増加するにつれて、ブロック内のサンプルおよび事前設定された隣接位置の間の空間相関が減少するため、さらなる偽テクスチャを発生させ得る。
1.2 ビデオエンコードおよびデコードのための例示的実装
本書は、一連の1つ以上の画像から成るものとしてビデオを表す。ビデオエレメンタリストリームとも称される、ビットストリームが、ビデオまたは画像を処理するエンコーダによって発生される。ビットストリームはまた、ビデオまたは画像エンコーダによって発生されるビデオエレメンタリストリーム上でシステム層プロセスを実施することの出力である、トランスポートストリームまたはメディアファイルであり得る。ビットストリームをデコードすることは、ビデオまたは画像をもたらす。
システム層プロセスの機能は、ビットストリーム(またはビデオエレメンタリストリーム)をカプセル化することである。例えば、ビデオエレメンタリストリームは、ペイロードとしてトランスポートストリームまたはメディアファイルの中にパックされる。システム層プロセスはまた、伝送のためのストリームまたはペイロードとしての記憶のためのファイルにトランスポートストリームまたはメディアファイルをカプセル化する動作も含む。システム層プロセスにおいて発生されるデータ単位は、システム層データ単位と称される。システム層プロセスにおいてペイロードをカプセル化することの間にシステム層データ単位内にアタッチされる情報は、システム層情報、例えば、システム層データ単位のヘッダと呼ばれる。ビットストリームを抽出することは、ビットストリームのビットの一部を含有するサブビットストリーム、および抽出プロセスによる構文要素上の1つ以上の必要な修正を取得する。サブビットストリームをデコードすることは、ビットストリームをデコードすることによって取得されるビデオまたは画像と比較して、より低い分解能および/またはより低いフレームレートであり得る、ビデオまたは画像をもたらす。サブビットストリームから取得されるビデオまたは画像はまた、ビットストリームから取得されるビデオまたは画像の領域であり得る。
図2は、ビデオまたは画像をコード化するための本開示に説明される1つ以上の方法を利用する、エンコーダを図示する略図である。エンコーダの入力は、ビデオ(またはより一般的には、視覚メディア)であり、出力は、ビットストリームである。一連の画像から成るビデオの実施例では、エンコーダは、事前設定された順序、例えば、エンコード順で、画像を1つずつ処理する。エンコード順は、エンコーダのための構成ファイルに規定される予測構造に従って決定される。いくつかの実施形態では、(デコーダ端における画像のデコード順に対応する)ビデオ内の画像のエンコード順は、画像の表示順と同じであり得る、またはそれと異なり得る。
図2に示されるように、分割ユニット201が、エンコーダの構成に従って、入力ビデオ内の画像を分割する。概して、画像が、1つ以上の最大コード化ブロックに分割されることができる。最大コード化ブロックは、エンコードプロセスにおける最大許容または構成ブロック(例えば、画像内の正方形の領域)である。画像が、1つ以上のスライスに分割され、各スライスは、最大コード化ブロックの整数、または最大コード化ブロックの非整数を含有することができる。いくつかの実施形態では、画像が、1つ以上のタイルに分割されてもよく、タイルは、最大コード化ブロックの整数、または最大コード化ブロックの非整数を含有する。分割ユニット201は、固定されたパターン(例えば、画像が、1行の最大コード化ブロックを含有するスライスに分割される)を使用して、または動的パターンを使用して、画像を分割するように構成されることができる。例えば、最大伝送単位(MTU)サイズの制限に適合するために、分割ユニット201は、動的スライス分割方法を採用し、全スライスのコード化ビットの数がMTU制限を超えないことを確実にする。
予測ユニット202が、コード化ブロックの予測サンプルを決定する。予測ユニット202は、ブロック分割ユニット203と、運動推定(ME)ユニット204と、運動補償(MC)ユニット205と、イントラ予測ユニット206とを含む。予測ユニット202の入力は、分割ユニット201によって出力される最大コード化ブロック、および最大コード化ブロックと関連付けられる属性パラメータ、例えば、画像、スライス、またはタイル内の最大コード化ブロックの場所である。予測ユニット202は、最大コード化ブロックを、より小さいコード化ブロックにさらに分割され得る、1つ以上のコード化ブロックに分割する。四分木、二分割、および三分割方法を含む、1つ以上の分割方法が、適用されることができる。予測ユニット202は、分割において取得されるコード化ブロックのための予測サンプルを決定する。
いくつかの実施形態では、予測ユニット202は、コード化ブロックを1つ以上の予測ブロックにさらに分割し、予測サンプルを決定することができる。予測ユニット202は、参照としてデコードされた画像バッファ(DPB)ユニット214内の1つ以上の画像を採用し、コード化ブロックのインター予測サンプルを決定する、または参照として(フィルタリングユニット213によって処理されない)加算器212によって出力される画像の再構築された部分を採用し、コード化ブロックのインター予測サンプルを導出する。予測ユニット202は、例えば、一般レート歪み最適化(RDO)方法を使用することによって、コード化ブロックの予測サンプル、および予測ユニット202の出力パラメータでもある、予測サンプルを導出するための関連付けられるパラメータを決定する。
予測ユニット202の内側で、ブロック分割ユニット203は、コード化ブロックの分割を決定する。ブロック分割ユニット203は、最大コード化ブロックを、同様により小さいコード化ブロックにさらに分割され得る、1つ以上のコード化ブロックに分割する。四分木、二分割、および三分割を含む、1つ以上の分割方法が、適用されることができる。いくつかの実施形態では、ブロック分割ユニット203は、コード化ブロックを1つ以上の予測ブロックにさらに分割し、予測サンプルを決定することができる。ブロック分割ユニット203は、コード化ブロックの分割の決定においてRDO方法を採用することができる。ブロック分割ユニット203の出力パラメータは、コード化ブロックの分割を示す、1つ以上のパラメータを含む。
MEユニット204およびMCユニット205は、参照画像としてDPB214からの1つ以上のデコードされた画像を利用し、コード化ブロックのインター予測サンプルを決定する。MEユニット204は、1つ以上の参照画像を含有する、1つ以上の参照リストを構築し、コード化ブロックのための参照画像内の1つ以上の合致ブロックを決定する。MCユニット205は、合致ブロック内のサンプルを使用して予測サンプルを導出し、コード化ブロック内のオリジナルサンプルと予測サンプルとの間の差異(例えば、残余)を計算する。MEユニット204の出力パラメータは、参照リストインデックス、参照インデックス(refIdx)、運動ベクトル(MV)等を含む、合致ブロックの場所を示し、参照リストインデックスは、合致ブロックが位置する、参照画像を含有する参照リストを示し、参照インデックスは、合致ブロックを含有する参照リスト内の参照画像を示し、MVは、画像内のピクセルの場所を表すための同じ座標内のコード化ブロックおよび合致ブロックの場所の間の相対オフセットを示す。MCユニット205の出力パラメータは、コード化ブロックのインター予測サンプル、およびインター予測サンプルを構築するためのパラメータ、例えば、合致ブロック内のサンプルに関する加重パラメータ、フィルタタイプ、および合致ブロック内のサンプルをフィルタ処理するためのパラメータである。概して、RDO方法が、レート歪み(RD)の意味の最適合致ブロックおよび2つのユニットの対応する出力パラメータを得るために、MEユニット204およびMCユニット205に合同で適用されることができる。
いくつかの実施形態では、MEユニット204およびMCユニット205は、参照としてコード化ブロックを含有する現在の画像を使用し、コード化ブロックのイントラ予測サンプルを取得することができる。本開示では、イントラ予測は、コード化ブロックを含有する画像内のデータが、コード化ブロックの予測サンプルを導出するための参照として採用されることを伝えるように意図されている。この場合、MEユニット204およびMCユニット205は、現在の画像の再構築された部分を使用し、再構築された部分は、加算器212の出力からであり、フィルタリングユニット213によって処理されない。例えば、エンコーダは、画像バッファを配分し、加算器212の出力データを(時間的に)記憶する。エンコーダのための別の方法は、DPB214内の特殊画像バッファを留保し、加算器212からのデータを保持することである。
イントラ予測ユニット206は、参照としてコード化ブロックを含有する現在の画像の再構築された部分を使用し、コード化ブロックのイントラ予測サンプルを取得し、再構築された部分は、フィルタリングユニット213によって処理されない。イントラ予測ユニット206は、コード化ブロックのイントラ予測サンプルを導出するためのフィルタの入力として、コード化ブロックの再構築された隣接サンプルを取り込み、フィルタは、(例えば、角度イントラ予測を使用するときに予測サンプルを計算するための)補間フィルタまたは(例えば、DC値を計算するための)低域通過フィルタであり得る。いくつかの実施形態では、イントラ予測ユニット206は、検索動作を実施し、現在の画像内の再構築された部分の範囲内でコード化ブロックの合致ブロックを得て、合致ブロック内のサンプルをコード化ブロックのイントラ予測サンプルとして設定することができる。イントラ予測ユニット206は、RDO方法を呼び出し、イントラ予測モード(例えば、コード化ブロックのためのイントラ予測サンプルを計算するための方法)および対応する予測サンプルを決定する。イントラ予測サンプル以外に、イントラ予測ユニット206の出力はまた、使用中のイントラ予測モードを示す、1つ以上のパラメータも含む。
コード化ブロックのためのイントラ予測モードが、平面モードであるとき、イントラ予測ユニット206は、本書に説明される方法を呼び出し、イントラ予測サンプルを導出する。イントラ予測ユニット206は、最初に、平面モードのための参照として使用される隣接サンプルを決定する。イントラ予測ユニット206は、コード化ブロックの利用可能な隣接サンプルを第1の参照サンプルとして分類する。利用可能な隣接サンプルは、コード化ブロックの隣接位置に再構築されたサンプルを含む。利用可能な隣接サンプルはまた、再構築されたサンプルと同一の行または列内に導出されたサンプルを含んでもよい。例えば、上方および左隣接サンプル(導出されたサンプルも含む)が、イントラ予測プロセスで使用される。イントラ予測ユニット206は、コード化ブロックの隣接位置にあるが、エンコードされていないサンプルを、第2の参照サンプルとして分類する。例えば、第2の参照サンプルは、利用可能な隣接サンプルに対してコード化ブロックの反対の隣接側にサンプルを含んでもよい。
イントラ予測ユニット206は、第1のサンプルに従って、第2の参照サンプルを計算する。第2の参照サンプルの値は、第2の参照サンプルのものと同一の行または列内にある、第1の参照サンプルの中の2つ以上のサンプルの加重和に等しく設定される。イントラ予測ユニット206は、第2の参照サンプルの計算で、等しい加重または等しくない加重を採用する。例えば、イントラ予測ユニット206は、第2の参照サンプルと、第2の参照サンプルと同一の行または列の第1の参照サンプルの中のサンプルとの間の距離に従って、等しくない加重を設定する。
イントラ予測ユニット206は、第1の参照サンプルおよび第2の参照サンプルの補間値として平面モードを使用するときに、コード化ブロックのイントラ予測サンプルを決定する。
加算器207は、コード化ブロックのオリジナルサンプルと予測サンプルとの間の差異を計算するように構成される。加算器207の出力は、コード化ブロックの残余である。残余は、N×Mの2次元行列として表されることができ、NおよびMは、2つの正の整数であり、NおよびMは、等しいまたは異なる値であり得る。
図2に示されるように、変換ユニット208が、その入力として残余を取り込み、1つ以上の変換方法を残余に適用してもよい。信号処理の視点から、変換方法は、変換行列によって表されることができる。いくつかの実施形態では、変換ユニット208は、残余のための変換ブロックであるべきコード化ブロックのものと同一の形状およびサイズを伴う長方形のブロック(本開示では、正方形のブロックが長方形のブロックの特別な場合である)を使用することを決定してもよい。他の実施形態では、変換ユニット208は、残余をいくつかの長方形のブロック(長方形のブロックの幅または高さが1つのサンプルである、特別な場合を含む)に分割し、次いで、いくつかの長方形のブロック上で連続的に変換動作を実施してもよい。ある実施例では、これは、デフォルト順序(例えば、ラスタ走査順)、所定の順序(例えば、予測モードまたは変換方法に対応する順序)、いくつかの候補順序のための選択された順序に基づいてもよい。
いくつかの実施形態では、変換ユニット208は、残余に複数の変換を実施する。例えば、変換ユニット208は、最初に、残余にコア変換を実施し、次いで、コア変換を終了した後に取得される係数に二次変換を実施する。変換ユニット208は、RDO方法を利用し、残余ブロックに適用される変換プロセスで使用される実行様式、例えば、残余ブロックを変換ブロック、変換行列、複数の変換等に分割することを示す、変換パラメータを決定してもよい。変換パラメータは、変換ユニット208の出力パラメータに含まれる。変換ユニット208の出力パラメータは、2次元行列によって表され得る残余(例えば、変換係数)を変換した後に取得される、変換パラメータおよびデータを含む。
量子化ユニット209が、残余を変換した後に変換ユニット208によって出力されるデータを量子化する。量子化ユニット209で使用される量子化器は、スカラー量子化器およびベクトル量子化器の一方または両方であり得る。例えば、スカラー量子化器の量子化ステップは、ビデオエンコーダ内の量子化パラメータ(QP)によって表される。概して、QPと量子化ステップとの間の同じマッピングが、エンコーダおよび対応するデコーダ内で事前設定または事前定義される。QPの値、例えば、画像レベルQPおよび/またはブロックレベルQPが、エンコーダに適用される構成ファイルに従って設定される、またはエンコーダ内のコーダ制御ユニットによって決定されることができる。例えば、コーダ制御ユニットは、レート制御(RC)方法を使用して、画像および/またはブロックの量子化ステップを決定し、次いで、QPと量子化ステップとの間のマッピングに従って、量子化ステップをQPに変換する。量子化ユニット209に関する制御パラメータは、QPである。量子化ユニット209の出力は、2次元行列の形態で表される、1つ以上の量子化された変換係数(「レベル」と称される)である。
逆量子化ユニット210は、量子化209の出力にスケーリング動作を実施し、再構築された係数を発生させる。逆変換ユニット211は、変換ユニット208からの変換パラメータに従って、逆量子化ユニット210からの再構築された係数に逆変換を実施する。逆変換ユニット211の出力は、再構築された残余である。いくつかの実施形態では、エンコーダが、ブロックをコード化する際に量子化ステップをスキップする(例えば、RDO方法を実装するエンコーダが、量子化をコード化ブロックに適用するかどうかを決定し得る)とき、エンコーダは、量子化ユニット209および逆量子化ユニット210を迂回することによって、変換ユニット208の出力データを逆換ユニット211に誘導する。
加算器212は、予測ユニット202からのコード化ブロックの再構築された残余および予測サンプルを入力として取り込み、コード化ブロックの再構築されたサンプルを計算し、バッファ(例えば、画像バッファ)内に再構築されたサンプルを記憶する。いくつかの実施形態では、エンコーダは、画像バッファを配分し、加算器212の出力データを(時間的に)記憶する。他の実施形態では、エンコーダは、DPB214内の特殊画像バッファを留保し、加算器212によって発生されるデータを記憶する。
フィルタリングユニット213は、デコードされた画像バッファ内の再構築された画像サンプルにフィルタリング動作を実施し、デコードされた画像を出力する。フィルタリングユニット213は、1つのフィルタまたはいくつかのカスケードフィルタを含んでもよい。例えば、H.265/HEVC規格によると、フィルタリングユニットは、2つのカスケードフィルタ、例えば、非ブロック化フィルタおよびサンプル適合オフセット(SAO)フィルタから成る。いくつかの実施形態では、フィルタリングユニット213はまた、ニューラルネットワークフィルタを含んでもよい。フィルタリングユニット213は、「画像層フィルタリング」と称され得る、画像内の全てのコード化ブロックの再構築されたサンプルが、デコードされた画像バッファ内に記憶されたときに、画像の再構築されたサンプルをフィルタ処理し始めてもよい。いくつかの実施形態では、フィルタリングユニット213のための画像層フィルタリングの代替実装(「ブロック層フィルタリング」と称される)は、再構築されたサンプルが画像内の全ての連続コード化ブロックをエンコードする際に参照として使用されない場合、画像内のコード化ブロックの再構築されたサンプルをフィルタ処理し始めることである。ブロック層フィルタリングは、画像の全ての再構築されたサンプルが利用可能になるまで、フィルタリング動作を保留するようにフィルタリングユニット213に要求せず、したがって、エンコーダ内のスレッドの間の遅延を低減させる。フィルタリングユニット213は、RDO方法を呼び出すことによって、フィルタリングパラメータを決定する。フィルタリングユニット213の出力は、画像のデコードされたサンプルであり、フィルタリングパラメータは、フィルタ、フィルタ係数、フィルタ制御パラメータ等のインジケーション情報を含む。
エンコーダは、DPB214内にフィルタリングユニット213からのデコードされた画像を記憶する。エンコーダは、DPB214内の画像に実施される動作、例えば、画像がDPB214内に記憶される持続時間、DPB214から画像を出力すること等を制御するために使用される、DPB214に適用される1つ以上の命令を決定してもよい。本開示では、そのような命令は、DPB214の出力パラメータとして取り込まれる。
エントロピーコード化ユニット215は、コード化パラメータの値を、2値シンボル「0」および「1」から成るコードワードに変換し、例えば、仕様または規格に従って、コードワードをビットストリームに書き込む、2値化およびエントロピーコード化を画像の1つ以上のコード化パラメータに実施する。コード化パラメータは、テクスチャデータおよび非テクスチャデータとして分類されてもよい。テクスチャデータは、コード化ブロックの変換係数を含み、非テクスチャデータは、エンコーダ内のユニットの出力パラメータ、パラメータセット、ヘッダ、補足情報等を含む、テクスチャデータを除く他のデータをコード化パラメータに含む。エントロピーコード化ユニット215の出力は、例えば、仕様または規格に準拠するビットストリームである。
図3は、図2に示される例示的エンコーダによって発生されるビットストリームをデコードする際に本開示における方法を利用する、デコーダを図示する略図である。デコーダの入力は、ビットストリームであり、デコーダの出力は、ビットストリームをデコードすることによって取得される、デコードされたビデオまたは画像である。
デコーダ内の解析ユニット301が、入力ビットストリームを解析する。解析ユニット301は、エントロピーデコード方法および2値化方法を使用し、1つ以上の2値シンボル(例えば、「0」および「1」)から成るビットストリーム内の各コードワードを対応するパラメータの数値に変換する。解析ユニット301はまた、1つ以上の利用可能なパラメータに従って、パラメータ値を導出する。例えば、ビットストリーム内のフラグが、デコードブロックが画像内の第1のデコードブロックであることを示すとき、解析ユニット301は、画像内のスライスの第1のデコードブロックのアドレスが0であると示す、アドレスパラメータを設定する。
解析ユニット301は、デコードブロックの予測サンプルを導出するための1つ以上の予測パラメータを予測ユニット302にパスする。いくつかの実施形態では、予測パラメータは、図2に示されるエンコーダ実施形態における分割ユニット201および予測ユニット202の出力パラメータを含む。
解析ユニット301は、デコードブロックの残余を再構築するための1つ以上の残余パラメータをスケーリングユニット305および変換ユニット306にパスする。いくつかの実施形態では、残余パラメータは、変換ユニット208および量子化ユニット209の出力パラメータと、図2に示されるエンコーダ実施形態において量子化ユニット209によって出力される1つ以上の量子化係数(「レベル」と称される)とを含む。他の実施形態では、解析ユニット301は、画像内の再構築されたサンプルをフィルタ処理(例えば、インループフィルタリング)するために、フィルタリングパラメータをフィルタリングユニット308にパスする。
予測ユニット302が、予測パラメータに従って、デコードブロックの予測サンプルを導出する。予測ユニット302は、運動補償(MC)ユニット303およびイントラ予測ユニット304から成る。予測ユニット302の入力はまた、(フィルタリングユニット308によって処理されない)デコードされ、加算器307から出力されている現在の画像の再構築された部分と、DPB309内の1つ以上のデコードされた画像とを含んでもよい。
予測パラメータが、インター予測モードがデコードブロックの予測サンプルを導出するために使用されることを示すとき、予測ユニット302は、図2に示されるエンコーダ実施形態における運動推定(ME)ユニット204のためのものと同一のアプローチを採用し、1つ以上の参照画像リストを構築する。参照リストは、DPB309からの1つ以上の参照画像を含有する。MCユニット303は、予測パラメータの中の参照リスト、参照インデックス、およびMVのインジケーションに従って、デコードブロックのための1つ以上の合致ブロックを決定し、MCユニット205におけるものと同一の方法を使用し、デコードブロックのインター予測サンプルを得る。予測ユニット302は、デコードブロックの予測サンプルとしてインター予測サンプルを出力する。
いくつかの実施形態では、MCユニット303は、デコードされており、参照としてデコードブロックを含有する、現在の画像を使用し、デコードブロックのイントラ予測サンプルを取得してもよい。この場合、MCユニット303は、現在の画像の再構築された部分を使用し、再構築された部分は、加算器307の出力に由来し、フィルタリングユニット308によって処理されない。例えば、デコーダは、画像バッファを配分し、加算器307の出力データを(時間的に)記憶する。別の実施例では、デコーダは、DPB309内の特殊画像バッファを留保し、加算器307からのデータを保持する。
予測パラメータが、イントラ予測モードがデコードブロックの予測サンプルを導出するために使用されることを示すとき、予測ユニット302は、イントラ予測ユニット206のためのものと同一のアプローチを採用し、デコードブロックの再構築された隣接サンプルからイントラ予測ユニット304に関する参照サンプルを決定する。イントラ予測ユニット304は、イントラ予測モード(例えば、DCモード、平面モード、または角度予測モード)になり、イントラ予測モードの規定プロセスに従い、参照サンプルを使用してデコードブロックのイントラ予測サンプルを導出する。いくつかの実施形態では、図2のエンコーダ実施形態で実装されるイントラ予測モード(例えば、イントラ予測ユニット206)は、デコーダで実装されるもの(例えば、イントラ予測ユニット304)と同じである。いくつかの実施形態では、予測パラメータが、デコードブロックのための現在のデコード画像(デコードブロックを含有する)内の合致ブロック(その場所を含む)を示す場合、イントラ予測ユニット304は、合致ブロック内のサンプルを使用し、デコードブロックのイントラ予測サンプルを導出する。例えば、イントラ予測ユニット304は、合致ブロック内のサンプルに等しいイントラ予測サンプルを設定する。予測ユニット302は、イントラ予測ユニット304によって出力されるイントラ予測サンプルに等しいデコードブロックの予測サンプルを設定する。
コード化ブロックのためのイントラ予測モードが、平面モードであるとき、イントラ予測ユニット304は、本書に説明される方法を呼び出し、イントラ予測サンプルを導出する。イントラ予測ユニット304は、最初に、平面モードのための参照として使用される隣接サンプルを決定する。イントラ予測ユニット304は、第1の参照サンプルとしてコード化ブロックの利用可能な隣接サンプルを分類する。利用可能な隣接サンプルは、コード化ブロックの隣接位置に再構築されたサンプルを含む。利用可能な隣接サンプルはまた、再構築されたサンプルと同一の行または列内に導出されたサンプルを含んでもよい。例えば、上方および左隣接サンプル(導出されたサンプルも含む)が、イントラ予測プロセスで使用される。イントラ予測ユニット304は、コード化ブロックの隣接位置にあるが、エンコードされていないサンプルを、第2の参照サンプルとして分類する。例えば、第2の参照サンプルは、利用可能な隣接サンプルに対してコード化ブロックの反対の隣接側にサンプルを含んでもよい。
イントラ予測ユニット304は、第1のサンプルに従って、第2の参照サンプルを計算する。第2の参照サンプルの値は、第2の参照サンプルのものと同一の行または列内にある、第1の参照サンプルの中の2つ以上のサンプルの加重和に等しく設定される。イントラ予測ユニット304は、第2の参照サンプルの計算で、等しい加重または等しくない加重を採用する。例えば、イントラ予測ユニット304は、第2の参照サンプルと、第2の参照サンプルと同一の行または列の第1の参照サンプルの中のサンプルとの間の距離に従って、等しくない加重を設定する。
イントラ予測ユニット304は、第1の参照サンプルおよび第2の参照サンプルの補間値として平面モードを使用するときに、コード化ブロックのイントラ予測サンプルを決定する。
デコーダは、逆量子化のプロセスのために、および出力として再構築された係数を発生させるように、QPおよび量子化係数をスケーリングユニット305にパスする。デコーダは、スケーリングユニット305からの再構築された係数および残余パラメータの中の変換パラメータ(例えば、図2に示されるエンコーダ実施形態では、変換ユニット208の出力からの変換パラメータ)を変換ユニット306の中にフィードする。いくつかの実施形態では、残余パラメータが、ブロックをデコードする際にスケーリングをスキップすることを示す場合、デコーダは、スケーリングユニット305を迂回することによって、残余パラメータの中の係数を変換ユニット306に誘導する。
変換ユニット306は、規格で規定される変換プロセスに従い、入力係数に変換動作を実施する。変換ユニット306で使用される変換行列は、図2に示されるエンコーダ内の逆変換ユニット211で使用されるものと同一である。変換ユニット306の出力は、デコードブロックの再構築された残余である。
いくつかの実施形態では、デコードプロセスにおける方法および関連行列は、それぞれ、「変換方法(またはプロセス)」および「変換行列」と称される。表記法に関して、本実施形態は、エンコードプロセスの逆プロセスとしてデコードプロセスを解釈するという考えに基づいて、「逆変換ユニット」と称され得る。
加算器307は、変換ユニット306の出力の中の再構築された残余および予測ユニット302の出力の中の予測サンプルを入力データとして取り込み、デコードブロックの再構築されたサンプルを計算する。加算器307は、再構築されたサンプルを画像バッファの中に記憶する。いくつかの実施形態では、デコーダは、画像バッファを配分し、加算器307の出力データを(時間的に)記憶する。他の実施形態では、デコーダは、DPB309内の特殊画像バッファを留保し、加算器307からのデータを記憶する。
デコーダは、解析ユニット301からのフィルタリングパラメータをフィルタリングユニット308にパスする。フィルタリング308に関するフィルタリングパラメータは、図2に示されるエンコーダ実施形態におけるフィルタリングユニット213の出力の中のフィルタリングパラメータと同じである。フィルタリングパラメータは、使用されるべき1つ以上のフィルタ、フィルタ係数、およびフィルタリング制御パラメータのインジケーション情報を含む。フィルタリングユニット308は、デコードされた画像バッファ内に記憶された画像の再構築されたサンプルに、フィルタリングパラメータを使用するフィルタリングプロセスを実施し、デコードされた画像を出力する。フィルタリングユニット308は、1つのフィルタまたはいくつかのカスケードフィルタから成ってもよい。例えば、H.265/HEVC規格によると、フィルタリングユニットは、2つのカスケードフィルタ、例えば、非ブロック化フィルタおよびサンプル適合オフセット(SAO)フィルタから成る。いくつかの実施形態では、フィルタリングユニット308はまた、ニューラルネットワークフィルタを含んでもよい。
いくつかの実施形態では、フィルタリングユニット308は、「画像層フィルタリング」と称され得る、画像内の全てのコード化ブロックの再構築されたサンプルが、デコードされた画像バッファ内に記憶されたときに、画像の再構築されたサンプルをフィルタ処理し始めてもよい。他の実施形態では、フィルタリングユニット308のための画像層フィルタリングの代替実装(「ブロック層フィルタリング」と称される)は、再構築されたサンプルが画像内の全ての連続コード化ブロックをデコードする際に参照として使用されない場合、画像内のコード化ブロックの再構築されたサンプルをフィルタ処理し始めることを含む。ブロック層フィルタリングは、画像の全ての再構築されたサンプルが利用可能になるまで、フィルタリング動作を保留するようにフィルタリングユニット308に要求せず、したがって、デコーダ内のスレッドの間の遅延を低減させる。
デコーダは、DPB309内にフィルタリングユニット308によって出力されるデコードされた画像を記憶する。いくつかの実施形態では、デコーダは、解析ユニット301によって出力される1つ以上の命令に従って、DPB309内の画像に、1つ以上の制御動作、例えば、画像がDPB309内に記憶される持続時間、DPB309から画像を出力すること等を実施してもよい。
2 平面モード予測のための例示的方法および実施形態
図4は、平面モードのイントラ予測サンプルを導出する例示的プロセス(または方法)400を図示するフローチャートである。いくつかの実施形態では、本プロセスは、エンコーダが平面モードを使用して本コード化ブロックをコード化することを決定する(または、例えば、コード化ブロックのコード化モードを決定するためのRDOプロセスでは評価する)ときに、コード化ブロックの予測サンプルを導出するようにエンコーダ内のイントラ予測ユニット206上に実装されることができる。他の実施形態では、本プロセスは、予測パラメータが平面モードを使用してコード化ブロックをデコードするためのデコーダを示すときに、コード化ブロックの予測サンプルを導出するようにデコーダ内のイントラ予測ユニット304上に実装されることができる。
開示される技術の実施形態に関して、(それぞれ、図2および3内の)イントラ予測ユニット206および304は、集合的に、「イントラ予測器」と称され、「コード化ブロック」および「デコードブロック」は、「ブロック」と称される。
方法400は、イントラ予測器が平面モードにおけるブロックの第1の参照サンプルを決定する、ステップ401を含む。
いくつかの実施形態では、第1の参照サンプルは、平面モードのイントラ予測プロセスのための「利用可能なサンプル」としてマークされるサンプルである。利用可能なサンプルは、ブロックの隣接位置における再構築されたサンプルである。ブロックの隣接位置における1つ以上のサンプルが、イントラ予測参照として適格ではないとき(例えば、ブロックを含有する現在のスライスの外側のサンプル、制約されたイントラモードが施行されているときのインターモードにおけるブロック内のサンプル)、イントラ予測器は、パディングプロセスを呼び出し、ブロックの1つ以上の隣接位置における同一の行または列内の再構築されたサンプルの複製または補間として、そのようなサンプルを導出し、導出されたサンプルを「利用可能」としてマークしてもよい。
方法400は、イントラ予測器が、第1の参照サンプルを使用して、平面モードにおけるブロックの第2の参照サンプルを決定し、第2の参照サンプルが、第1の隣接サンプルに対してブロックの反対の隣接側にある、ステップ402を含む。
例えば、第1の参照サンプルが、ブロックの上および左隣接サンプルである場合、第2の参照サンプルは、ブロックの下および右隣接サンプルであろう。いくつかの実施形態では、第1の参照サンプルはまた、左上隣接サンプルを含んでもよく、第2の参照サンプルはまた、右下隣接サンプルを含んでもよい。
イントラ予測器は、第1のサンプルに基づいて、第2の参照サンプルを計算する。第2の参照サンプルの値は、第2の参照サンプルのものと同一の行または列内にある、第1の参照サンプルの中の2つ以上のサンプルの加重和に等しく設定される。イントラ予測器は、第2の参照サンプルの計算で、等しい加重または等しくない加重を採用してもよい。例えば、イントラ予測器は、第2の参照サンプルと、第2の参照サンプルと同一の行または列の第1の参照サンプルの中のサンプルとの間の距離に基づく、等しくない加重を使用してもよい。
本方法は、イントラ予測器が、第1および第2の参照サンプルを使用して、平面モードにおけるブロックのイントラ予測サンプルを決定する、ステップ403を含む。
いくつかの実施形態では、イントラ予測器は、ブロック内のサンプルを第1の参照サンプルおよび第2の参照サンプルの補間として算出する。例えば、ブロック内のサンプルの値が、第1および第2の参照サンプルの中の同一の行および列内のサンプルの加重和に等しく設定される。いくつかの実施形態では、等しい加重が、採用されてもよい。他の実施形態では、等しくない加重が、使用されてもよく、それらは、ブロック内のサンプルと、サンプルと同一の行および列内の各参照サンプルとの間の距離に基づく。
図5Aは、第1の実装における平面モードのイントラ予測サンプルの導出で使用される隣接サンプルを図示する、略図である。そこに示されるように、ブロック501は、その左上サンプルがサンプル5001(例えば、p[0][0])であり、その右下サンプルがサンプル5003(例えば、p[W-1][H-1])である、ブロックである。WおよびHは、それぞれ、サンプル(またはピクセル)の数で測定される、ブロックの幅および高さである。0、1、…、W-1に等しいx、および0、1、…H-1に等しいyに関して、p[x][y]としてもマークされるサンプル5002は、予測されるべきブロック内のサンプルである。サンプル5300(例えば、p[-1][-1])は、ブロックの左上隣接サンプルである。サンプル5101(例えば、p[0][-1])~5105(例えば、p[W][-1]、サンプル「T」としてもマークされる)は、ブロックの上隣接サンプルである。サンプル5201(例えば、p[-1][0])~5206(例えば、p[-1][H]、サンプル「L」としてもマークされる)は、ブロックの左隣接サンプルである。サンプル5401(例えば、P[W][y]、サンプル「R」としてもマークされる)は、ブロックの右隣接サンプルである。サンプル5501(例えば、P[x][H]、サンプル「B」としてもマークされる)は、ブロックの下隣接サンプルである。サンプル5600(例えば、p[W][H])は、ブロックの右下隣接サンプルである。
いくつかの実施形態では、ブロックの上および左隣接サンプルは、集合的に第1の参照サンプルと称されることができる。他の実施形態では、左上サンプル5300もまた、第1の参照サンプルに含まれてもよい。例えば、第1の参照サンプルは、ブロックの利用可能な隣接サンプルを含有する。ブロックの右および下隣接サンプルは、集合的に第2の参照サンプルと称されることができる。いくつかの実施形態では、右下サンプル5600もまた、第2の参照サンプルに含まれてもよい。例えば、第2の参照サンプルは、利用可能な参照サンプルを使用して導出されるべき参照サンプルを含有する。第2の参照サンプルは、ブロックの第1の参照サンプルの対応する反対側に位置する。
いくつかの実施形態では、イントラ予測器は、サンプル5002と同一の行内の右隣接サンプルRおよび左隣接サンプルp[-1][y](例えば、図5Aのサンプル5203)、およびサンプル5002と同一の列内の下隣接サンプルBおよび上隣接サンプルp[x][-1](例えば、図5Aのサンプル5103)を使用して、サンプル5002の予測値を計算する。
イントラ予測器は、第1のサンプルに基づいて、第2の参照サンプルを計算する。イントラ予測器は、方程式(1)(または加算およびビット単位の算術シフト演算を使用する方程式(1)の同等の実装)を使用して、右隣接サンプルRを計算する。方程式(1)では、第1の参照サンプルの中のサンプルの加重が、右隣接サンプルまでのそれらの距離に基づいて決定される。
イントラ予測器は、方程式(2)(または加算およびビット単位の算術シフト演算を使用する方程式(2)の同等の実装)を使用して、下隣接サンプルLを計算する。方程式(2)では、第1の参照サンプルの中のサンプルの加重が、下隣接サンプルまでのそれらの距離に基づいて決定される。
イントラ予測器は、予測されるべきサンプル(例えば、p[x][y])を、第1の参照サンプルおよび第2の参照サンプルの中のサンプルの加重和として計算する。いくつかの実施形態では、p[x][y]は、等しい加重を採用する、p[x][-1]、p[-1][y]、p[W][y]、およびp[x][H]の平均であり得る。他の実施形態では、参照サンプルに関する等しくない加重が、p[x][y]までのそれらの個別の距離に基づいて使用されることができる。実施例が、方程式(3)(または加算およびビット単位の算術シフト演算を使用する方程式(3)の同等の実装)によって示される。
別の実施例が、方程式(4)(または加算およびビット単位の算術シフト演算を使用する方程式(4)の同等の実装)によって示される。
本明細書では、
である。
図5Bは、予測サンプル5002の値を導出するために実施例で使用される、それらのサンプルのみを図示する略図である。
図6は、第2の実装における平面モードのイントラ予測サンプルの導出で使用される隣接サンプルを図示する、略図である。そこに示されるように、ブロック601は、その左上サンプルがサンプル6001(例えば、p[0][0])であり、その右下サンプルがサンプル6003(例えば、p[W-1][H-1])である、ブロックである。WおよびHは、それぞれ、サンプル(またはピクセル)の数で測定される、ブロックの幅および高さである。0、1、…、W-1に等しいx、および0、1、…H-1に等しいyに関して、p[x][y]としてもマークされるサンプル6002は、予測されるべきブロック内のサンプルである。
図6では、サンプル6101(例えば、p[0][-1])~6105(例えば、p[W][-1]、サンプル「T」としてもマークされる)は、ブロックの上隣接サンプルである。サンプル6105(例えば、p[W][-1])から左方向まで、サンプル6105と同一の行内にさらにNR個の上隣接サンプル、例えば、サンプルp[W+1][-1]、…、p[W+NR][-1]が存在する(例えば、サンプル6106は、p[W+NR][-1]である)。サンプル6101(例えば、p[0][-1])~6106(例えば、p[W+NR][-1])以外に、上隣接サンプルのNT個の付加的な列が、ブロック601のイントラ予測サンプルを導出する際に採用される。サンプル6101’~6106’は、サンプルp[0][-1-NT]、p[1][-1-NT]、…、p[W+NR][-1-NT]である。
図6では、サンプル6201(例えば、p[-1][0])~6206(例えば、p[-1][H]、サンプル「L」としてもマークされる)は、ブロックの左隣接サンプルである。サンプル6206(例えば、p[-1][H])から下方向まで、サンプル6206と同一の列内にさらにNB個の左隣接サンプル、例えば、サンプルp[-1][H+1]、…、p[-1][H+NB]が存在する(例えば、サンプル6207は、p[-1][H+NB]である)。サンプル6201(例えば、p[-1][0])~6207(例えば、p[-1][H+NB])以外に、左隣接サンプルのNL個の付加的な列が、ブロック601のイントラ予測サンプルを導出する際に採用される。サンプル6201’~6207’は、サンプルp[-1-NL][0]、p[-1-NL][-1]、…、p[-1-NL][H+NB]である。
図6では、サンプル6300(例えば、p[-1][-1])は、ブロックの左上隣接サンプルである。より多くの上および左隣接サンプルが、ブロック601のイントラ予測サンプルを導出することに関与した後、左上隣接サンプルは、6300から6300’までのサンプル、例えば、サンプルp[-1][-1]、p[-1][-2]、p[-2][-1]、p[-2][-2]、…、p[-1-NL][-1-NT]を含み得る。
図6では、サンプル6401(例えば、P[W][y]、サンプル「R」としてもマークされる)は、ブロックの右隣接サンプルである。サンプルp[W+1][y]、…、p[W+NR][y](例えば、サンプル6401’は、p[W+NR][y]である)は、サンプル6401と同一の行内のさらにNR個の右隣接サンプルである。サンプル6501(例えば、P[x][H]、サンプル「B」としてもマークされる)は、ブロックの下隣接サンプルである。サンプルp[x][H+1]、…、p[x][H+NB](例えば、サンプル6501’は、p[x][H+NB]である)は、サンプル6501と同一の列内のさらにNB個の下隣接サンプルである。サンプル6600(例えば、p[W][H])は、ブロックの右下隣接サンプルである。
本実施形態では、ブロックの上および左隣接サンプルは、集合的に第1の参照サンプルと称されることができる。いくつかの実施形態では、左上サンプル6300~6300’もまた、第1の参照サンプルに含まれてもよい。例えば、第1の参照サンプルは、ブロックの利用可能な隣接サンプルを含有する。ブロックの右および下隣接サンプルは、集合的に第2の参照サンプルと称されることができる。他の実施形態では、右下サンプル6600もまた、第2の参照サンプルに含まれてもよい。例えば、第2の参照サンプルは、利用可能な参照サンプルを使用して導出されるべき参照サンプルを含有する。第2の参照サンプルは、ブロックの第1の参照サンプルの対応する反対側に位置する。
いくつかの実施形態では、イントラ予測器は、サンプル6002と同一の行内の右隣接サンプルおよび左隣接サンプル、およびサンプル6002と同一の列内の下隣接サンプルおよび上隣接サンプルを使用して、サンプル6002の予測サンプルを計算する。
イントラ予測器は、第1のサンプルに基づいて第2の参照サンプルを計算する。いくつかの実施形態では、イントラ予測器の計算の複雑性を低減させるために、NTおよびNLは、等しく(例えば、正の整数M)、NRおよびNBは、等しい(例えば、負ではない整数N)。例えば、Mが、1に等しく、Nが、0に等しいとき、本実施形態で説明される方法は、図5Aとの関連で説明されるものに類似する。
イントラ予測器は、方程式(5)(または加算およびビット単位の算術シフト演算を使用する方程式(5)の同等の実装)を使用して、右隣接サンプルを計算し、i=0、1、…、Nである。方程式(5)では、第1の参照サンプルの中のサンプルの加重は、pjを計算する際の右隣接サンプルまでのそれらの個別の距離に基づく。
本明細書では、
である。
等しい加重の場合、
であり、等しくない加重の場合、
である。
イントラ予測器は、方程式(6)(または加算およびビット単位の算術シフト演算を使用する方程式(6)の同等の実装)を使用して、下隣接サンプルを計算し、i=0、1、…、Nである。方程式(6)では、第1の参照サンプルの中のサンプルの加重は、pjを計算する際の下隣接サンプルまでのそれらの距離に基づく。
本明細書では、
である。
等しい加重の場合、
であり、等しくない加重の場合、
である。
いくつかの実施形態では、イントラ予測器は、予測されるべきサンプル(例えば、p[x][y])を、第1の参照サンプルおよび第2の参照サンプルの中のサンプルの加重和として計算する。他の実施形態では、等しい加重が適用されるとき、p[x][y]は、同一の行または列内の第1の参照サンプルおよび第2の参照サンプルの中のサンプル、すなわち、図6に示されるようなサンプル6401~6401’、6203~6203’、6103~6103’、および6501~6501’の数値平均であり得る。さらに他の実施形態では、等しくない加重は、p[x][y]までのそれらの距離に基づくことができる。実施例が、方程式(7)(または加算およびビット単位の算術シフト演算を使用する方程式(7)の同等の実装)によって示される。
本明細書では、
そして、
である。
図7は、別の実装における平面モードのイントラ予測サンプルの導出で使用される隣接サンプルを図示する、略図である。
いくつかの実施形態では、エンコーダが、特別なコード化順を採用し、デコーダが、対応するデコード順を使用するとき、上および右隣接サンプルが、ブロックをコード化またはデコードする前に再構築されるであろう。この場合、ブロックの上および右隣接サンプルは、ブロックのイントラ予測サンプルを導出するために採用される。
イントラ予測器は、本書に説明される方法を採用し、ブロック701のイントラ予測モードが平面モードである場合、ブロック701のイントラ予測サンプルを決定する。
図7では、ブロック701は、その右上サンプルがサンプル7001(例えば、p[0][0])であり、その左下サンプルがサンプル7003(例えば、p[W-1][H-1])である、ブロックである。WおよびHは、それぞれ、サンプル(またはピクセル)の数で測定される、ブロックの幅および高さである。0、1、…、W-1に等しいx、および0、1、…H-1に等しいyに関して、p[x][y]としてもマークされるサンプル7002は、予測されるべきブロック内のサンプルである。サンプル7300(例えば、p[-1][-1])は、ブロックの右上隣接サンプルである。サンプル7101(例えば、p[0][-1])~7105(例えば、p[W][-1])は、ブロックの上隣接サンプルである。サンプル7201(例えば、p[-1][0])~7206(例えば、p[-1][H])は、ブロックの右隣接サンプルである。サンプル7401(例えば、P[W][y])は、ブロックの左隣接サンプルである。サンプル7501(例えば、P[x][H])は、ブロックの下隣接サンプルである。サンプル7600(例えば、p[W][H])は、ブロックの左下隣接サンプルである。
本例示的実施形態では、ブロックの上および右隣接サンプルは、集合的に第1の参照サンプルと称されることができる。いくつかの実施形態では、右上サンプル7300もまた、第1の参照サンプルに含まれてもよい。換言すると、第1の参照サンプルは、ブロックの利用可能な隣接サンプルを含有する。ブロックの左および下隣接サンプルは、集合的に第2の参照サンプルと称されることができる。いくつかの実施形態では、左下サンプル7600もまた、第2の参照サンプルに含まれてもよい。換言すると、第2の参照サンプルは、利用可能な参照サンプルを使用して導出されるべき参照サンプルを含有する。第2の参照サンプルは、ブロックの第1の参照サンプルの対応する反対側に位置する。
イントラ予測器は、サンプル7002と同一の行内の左隣接サンプル7401および右隣接サンプルp[-1][y](例えば、図7のサンプル7203)、およびサンプル7002と同一の列内の下隣接サンプル7501および上隣接サンプルp[x][-1](例えば、図7のサンプル7103)を使用して、サンプル7002の予測サンプルを計算する。
いくつかの実施形態では、方程式(1)~(4)が、平面モードにおけるブロックのイントラ予測サンプルを計算するために使用される。イントラ予測器は、第1のサンプルに基づいて第2の参照サンプルを計算する。イントラ予測器は、方程式(1)(または加算およびビット単位の算術シフト演算を使用する方程式(1)の同等の実装)を使用して、左隣接サンプル7401を計算する。方程式(1)では、第1の参照サンプルの中のサンプルの加重は、左隣接サンプルまでのそれらの距離に基づく。
イントラ予測器は、方程式(2)(または加算およびビット単位の算術シフト演算を使用する方程式(2)の同等の実装)を使用して、下隣接サンプル7501を計算する。方程式(2)では、第1の参照サンプルの中のサンプルの加重は、下隣接サンプルまでのそれらの距離に基づく。
いくつかの実施形態では、イントラ予測器は、予測されるべきサンプル(例えば、p[x][y])を、第1の参照サンプルおよび第2の参照サンプルの中のサンプルの加重和として計算する。他の実施形態では、p[x][y]は、等しい加重を採用する、p[x][-1]、p[-1][y]、p[W][y]、およびp[x][H]の数値平均であり得る。さらに他の実施形態では、参照サンプルに関する等しくない加重は、p[x][y]までのそれらの距離に基づくことができる。実施例が、方程式(3)(または加算およびビット単位の算術シフト演算を使用する方程式(3)の同等の実装)によって示される。別の実施例が、方程式(4)(または加算およびビット単位の算術シフト演算を使用する方程式(4)の同等の実装)によって示される。
図8は、さらに別の実装における平面モードのイントラ予測サンプルの導出で使用される隣接サンプルを図示する、略図である。
いくつかの実施形態では、エンコーダが、特別なコード化順を採用し、デコーダが、対応するデコード順を使用するとき、上および右隣接サンプルが、ブロックをコード化またはデコードする前に再構築されるであろう。この場合、ブロックの上および右隣接サンプルは、ブロックのイントラ予測サンプルを導出するために採用される。
イントラ予測器は、本書に説明される方法を採用し、ブロック801のイントラ予測モードが平面モードである場合、ブロック801のイントラ予測サンプルを決定する。
図8では、ブロック801は、その右上サンプルがサンプル8001(例えば、p[0][0])であり、その左下サンプルがサンプル8003(例えば、p[W-1][H-1])である、ブロックである。WおよびHは、それぞれ、サンプル(またはピクセル)の数で測定される、ブロックの幅および高さである。0、1、…、W-1に等しいx、および0、1、…H-1に等しいyに関して、p[x][y]としてもマークされるサンプル8002は、予測されるべきブロック内のサンプルである。
図8では、サンプル8101(例えば、p[0][-1])~8105(例えば、p[W][-1])は、ブロックの上隣接サンプルである。サンプル8105(例えば、p[W][-1])から左方向まで、サンプル8105と同一の行内にさらにNL個の上隣接サンプル、すなわち、サンプルp[W+1][-1]、…、p[W+NL][-1]が存在する(例えば、サンプル8106は、p[W+NL][-1]である)。サンプル8101(例えば、p[0][-1])~8106(例えば、p[W+NL][-1])以外に、上隣接サンプルのNT個の付加的な列が、ブロック801のイントラ予測サンプルを導出する際に採用される。サンプル8101’~8106’は、サンプルp[0][-1-NT]、p[1][-1-NT]、…、p[W+NL][-1-NT]である。
図8では、サンプル8201(例えば、p[-1][0])~8206(例えば、p[-1][H])は、ブロックの右隣接サンプルである。サンプル8206(例えば、p[-1][H])から下方向まで、サンプル8206と同一の列内にさらにNB個の右隣接サンプル、すなわち、サンプルp[-1][H+1]、…、p[-1][H+NB]が存在する(例えば、サンプル8207は、p[-1][H+NB]である)。サンプル8201(例えば、p[-1][0])~8207(例えば、p[-1][H+NB])以外に、右隣接サンプルのNR個の付加的な列が、ブロック801のイントラ予測サンプルを導出する際に採用される。サンプル8201’~8207’は、サンプルp[-1-NR][0]、p[-1-NR][-1]、…、p[-1-NR][H+NB]である。
図8では、サンプル8300(例えば、p[-1][-1])は、ブロックの右上隣接サンプルである。より多くの上および右隣接サンプルが、ブロック801のイントラ予測サンプルを導出することに関与した後、右上隣接サンプルは、8300から8300’までのサンプル、すなわち、サンプルp[-1][-1]、p[-1][-2]、p[-2][-1]、p[-2][-2]、…、p[-1-NR][-1-NT]を含み得る。
図8では、サンプル8401(例えば、P[W][y])は、ブロックの左隣接サンプルである。サンプルp[W+1][y]、…、p[W+NL][y](例えば、サンプル8401’は、p[W+NL][y]である)は、サンプル8401と同一の行内のさらにNL個の左隣接サンプルである。サンプル8501(例えば、P[x][H])は、ブロックの下隣接サンプルである。サンプルp[x][H+1]、…、p[x][H+NB](例えば、サンプル8501’は、p[x][H+NB]である)は、サンプル8501と同一の列内のさらにNB個の下隣接サンプルである。サンプル8600(例えば、p[W][H])は、ブロックの左下隣接サンプルである。
いくつかの実施形態では、ブロックの上および右隣接サンプルは、集合的に第1の参照サンプルと称されることができる。他の実施形態では、右上サンプル8300~8300’もまた、第1の参照サンプルに含まれてもよい。換言すると、第1の参照サンプルは、ブロックの利用可能な隣接サンプルを含有する。ブロックの左および下隣接サンプルは、集合的に第2の参照サンプルと称されることができる。さらに他の実施形態では、左下サンプル8600もまた、第2の参照サンプルに含まれてもよい。換言すると、第2の参照サンプルは、利用可能な参照サンプルを使用して導出されるべき参照サンプルを含有する。第2の参照サンプルは、ブロックの第1の参照サンプルの対応する反対側に位置する。
イントラ予測器は、サンプル8002と同一の行内の右隣接サンプルおよび左隣接サンプル、およびサンプル8002と同一の列内の下隣接サンプルおよび上隣接サンプルを使用して、サンプル8002の予測サンプルを計算する。
イントラ予測器は、第1のサンプルに基づいて第2の参照サンプルを計算する。いくつかの実施形態では、イントラ予測器の計算の複雑性を低減させるために、NTおよびNRは、等しく(例えば、正の整数M)、NLおよびNBは、等しい(例えば、負ではない整数N)。いくつかの実施形態では、Mが、1に等しく、Nが、0に等しいとき、本実施形態で説明される方法は、図7との関連で説明されるものに類似する。
いくつかの実施形態では、方程式(5)~(7)が、平面モードにおけるブロックのイントラ予測サンプルを計算するために使用される。イントラ予測器は、方程式(5)(または加算およびビット単位の算術シフト演算を使用する方程式(5)の同等の実装)を使用して、左隣接サンプルを計算し、i=0、1、…、Nである。方程式(5)では、第1の参照サンプルの中のサンプルの加重は、pjを計算する際の左隣接サンプルまでのそれらの個別の距離に基づく。
イントラ予測器は、方程式(6)(または加算およびビット単位の算術シフト演算を使用する方程式(6)の同等の実装)を使用して、下隣接サンプルを計算し、i=0、1、…、Nである。方程式(6)では、第1の参照サンプルの中のサンプルの加重は、pjを計算する際の下隣接サンプルまでのそれらの個別の距離に基づく。
いくつかの実施形態では、イントラ予測器は、予測されるべきサンプル(例えば、p[x][y])を、第1の参照サンプルおよび第2の参照サンプルの中のサンプルの加重和として計算する。他の実施形態では、等しい加重が適用されるとき、p[x][y]は、同一の行または列内の第1の参照サンプルおよび第2の参照サンプルの中のサンプル、すなわち、図8に示されるようなサンプル8401~8401’、8203~8203’、8103~8103’、および8501~8501’の数値平均であり得る。さらに他の実施形態では、等しくない加重は、p[x][y]までのそれらの距離に基づくことができる。実施例が、方程式(7)(または加算およびビット単位の算術シフト演算を使用する方程式(7)の同等の実装)によって示される。
図9は、さらに別の実装における平面モードのイントラ予測サンプルの導出で使用される隣接サンプルを図示する、略図である。
いくつかの実施形態では、エンコーダが、特別なコード化順を採用し、デコーダが、対応するデコード順を使用するとき、下および左隣接サンプルが、ブロックをコード化またはデコードする前に再構築されるであろう。この場合、ブロックの下および左隣接サンプルは、ブロックのイントラ予測サンプルを導出するために採用される。
イントラ予測器は、本書に説明される方法を採用し、ブロック901のイントラ予測モードが平面モードである場合、ブロック901のイントラ予測サンプルを決定する。
図9では、ブロック901は、その左下サンプルがサンプル9001(例えば、p[0][0])であり、その右上サンプルがサンプル9003(例えば、p[W-1][H-1])である、ブロックである。WおよびHは、それぞれ、サンプル(またはピクセル)の数で測定される、ブロックの幅および高さである。0、1、…、W-1に等しいx、および0、1、…H-1に等しいyに関して、p[x][y]としてもマークされるサンプル9002は、予測されるべきブロック内のサンプルである。サンプル9300(例えば、p[-1][-1])は、ブロックの左下隣接サンプルである。サンプル9101(例えば、p[0][-1])~9105(例えば、p[W][-1])は、ブロックの下隣接サンプルである。サンプル9201(例えば、p[-1][0])~9206(例えば、p[-1][H])は、ブロックの左隣接サンプルである。サンプル9401(例えば、P[W][y])は、ブロックの右隣接サンプルである。サンプル9501(例えば、P[x][H])は、ブロックの上隣接サンプルである。サンプル9600(例えば、p[W][H])は、ブロックの右上隣接サンプルである。
いくつかの実施形態では、ブロックの下および左隣接サンプルは、集合的に第1の参照サンプルと称されることができる。他の実施形態では、左下サンプル9300もまた、第1の参照サンプルに含まれてもよい。換言すると、第1の参照サンプルは、ブロックの利用可能な隣接サンプルを含有する。ブロックの上および右隣接サンプルは、集合的に第2の参照サンプルと称されることができる。いくつかの実施形態では、右上サンプル9600もまた、第2の参照サンプルに含まれてもよい。換言すると、第2の参照サンプルは、利用可能な参照サンプルを使用して導出されるべき参照サンプルを含有する。第2の参照サンプルは、ブロックの第1の参照サンプルの対応する反対側に位置する。
イントラ予測器は、サンプル9002と同一の行内の右隣接サンプル9401および左隣接サンプルp[-1][y](例えば、図9のサンプル9203)、およびサンプル9002と同一の列内の上隣接サンプル9501および下隣接サンプルp[x][-1](例えば、図9のサンプル9103)を使用して、サンプル9002の予測サンプルを計算する。
いくつかの実施形態では、方程式(1)~(4)が、平面モードにおけるブロックのイントラ予測サンプルを計算するために使用される。イントラ予測器は、第1のサンプルに基づいて第2の参照サンプルを計算する。イントラ予測器は、方程式(1)(または加算およびビット単位の算術シフト演算を使用する方程式(1)の同等の実装)を使用して、右隣接サンプル9401を計算する。方程式(1)では、第1の参照サンプルの中のサンプルの加重は、右隣接サンプルまでのそれらの距離に基づく。
イントラ予測器は、方程式(2)(または加算およびビット単位の算術シフト演算を使用する方程式(2)の同等の実装)を使用して、上隣接サンプル9501を計算する。方程式(2)では、第1の参照サンプルの中のサンプルの加重は、上隣接サンプルまでのそれらの距離に基づく。
いくつかの実施形態では、イントラ予測器は、予測されるべきサンプル(例えば、p[x][y])を、第1の参照サンプルおよび第2の参照サンプルの中のサンプルの加重和として計算する。他の実施形態では、p[x][y]は、等しい加重を採用する、p[x][-1]、p[-1][y]、p[W][y]、およびp[x][H]の数値平均であり得る。さらに他の実施形態では、参照サンプルに関する等しくない加重は、p[x][y]までのそれらの距離に基づくことができる。実施例が、方程式(3)(または加算およびビット単位の算術シフト演算を使用する方程式(3)の同等の実装)によって示される。別の実施例が、方程式(4)(または加算およびビット単位の算術シフト演算を使用する方程式(4)の同等の実装)によって示される。
図10は、さらに別の実装における平面モードのイントラ予測サンプルの導出で使用される隣接サンプルを図示する、略図である。
いくつかの実施形態では、エンコーダが、特別なコード化順を採用し、デコーダが、対応するデコード順を使用するとき、下および左隣接サンプルが、ブロックをコード化またはデコードする前に再構築されるであろう。この場合、ブロックの下および左隣接サンプルは、ブロックのイントラ予測サンプルを導出するために採用される。
イントラ予測器は、本書に説明される方法を採用し、ブロック1001のイントラ予測モードが平面モードである場合、ブロック1001のイントラ予測サンプルを決定する。
図10では、ブロック1001は、その左下サンプルがサンプル10001(例えば、p[0][0])であり、その右上サンプルがサンプル10003(例えば、p[W-1][H-1])である、ブロックである。WおよびHは、それぞれ、サンプル(またはピクセル)の数で測定される、ブロックの幅および高さである。0、1、…、W-1に等しいx、および0、1、…H-1に等しいyに関して、p[x][y]としてもマークされるサンプル10002は、予測されるべきブロック内のサンプルである。
図10では、サンプル10101(例えば、p[0][-1])~10105(例えば、p[W][-1])は、ブロックの下隣接サンプルである。サンプル10105(例えば、p[W][-1])から右方向まで、サンプル10105と同一の行内にさらにNR個の下隣接サンプル、すなわち、サンプルp[W+1][-1]、…、p[W+NR][-1]が存在する(例えば、サンプル10106は、p[W+NR][-1]である)。サンプル10101(例えば、p[0][-1])~10106(例えば、p[W+NR][-1])以外に、下隣接サンプルのNB個の付加的な列が、ブロック1001のイントラ予測サンプルを導出する際に採用される。サンプル10101’~10106’は、サンプルp[0][-1-NB]、p[1][-1-NB]、…、p[W+NR][-1-NB]である。
図10では、サンプル10201(例えば、p[-1][0])~10206(例えば、p[-1][H])は、ブロックの左隣接サンプルである。サンプル10206(例えば、p[-1][H])から上方向まで、サンプル10206と同一の列内にさらにNT個の左隣接サンプル、すなわち、サンプルp[-1][H+1]、…、p[-1][H+NT]が存在する(例えば、サンプル10207は、p[-1][H+NT]である)。サンプル10201(例えば、p[-1][0])~10207(例えば、p[-1][H+NT])以外に、左隣接サンプルのNL個の付加的な列が、ブロック1001のイントラ予測サンプルを導出する際に採用される。サンプル10201’~10207’は、サンプルp[-1-NL][0]、p[-1-NL][1]、…、p[-1-NL][H+NT]である。
図10では、サンプル10300(例えば、p[-1][-1])は、ブロックの左下隣接サンプルである。より多くの下および左隣接サンプルが、ブロック1001のイントラ予測サンプルを導出することに関与した後、左下隣接サンプルは、10300から10300’までのサンプル、すなわち、サンプルp[-1][-1]、p[-1][-2]、p[-2][-1]、p[-2][-2]、…、p[-1-NL][-1-NB]を含み得る。
図10では、サンプル10401(例えば、P[W][y])は、ブロックの右隣接サンプルである。サンプルp[W+1][y]、…、p[W+NR][y](例えば、サンプル10401’は、p[W+NR][y]である)は、サンプル10401と同一の行内のさらにNR個の右隣接サンプルである。サンプル10501(例えば、P[x][H])は、ブロックの上隣接サンプルである。サンプルp[x][H+1]、…、p[x][H+NT](例えば、サンプル10501’は、p[x][H+NT]である)は、サンプル10501と同一の列内のさらにNT個の上隣接サンプルである。サンプル10600(例えば、p[W][H])は、ブロックの右上隣接サンプルである。
いくつかの実施形態では、ブロックの下および左隣接サンプルは、集合的に第1の参照サンプルと称されることができる。他の実施形態では、左下サンプル10300~10300’もまた、第1の参照サンプルに含まれてもよい。換言すると、第1の参照サンプルは、ブロックの利用可能な隣接サンプルを含有する。ブロックの上および右隣接サンプルは、集合的に第2の参照サンプルと称されることができる。いくつかの実施形態では、右上サンプル10600もまた、第2の参照サンプルに含まれてもよい。換言すると、第2の参照サンプルは、利用可能な参照サンプルを使用して導出されるべき参照サンプルを含有する。第2の参照サンプルは、ブロックの第1の参照サンプルの対応する反対側に位置する。
イントラ予測器は、サンプル10002と同一の行内の右隣接サンプルおよび左隣接サンプル、およびサンプル10002と同一の列内の下隣接サンプルおよび上隣接サンプルを使用して、サンプル10002の予測サンプルを計算する。
イントラ予測器は、第1のサンプルに基づいて第2の参照サンプルを計算する。いくつかの実施形態では、イントラ予測器の計算の複雑性を低減させるために、NTおよびNBは、等しく(例えば、正の整数M)、NLおよびNRは、等しい(例えば、負ではない整数N)。いくつかの実施形態では、Mが、1に等しく、Nが、0に等しいとき、本実施形態で説明される方法は、図9との関連で説明されるものに類似する。
いくつかの実施形態では、方程式(5)~(7)が、平面モードにおけるブロックのイントラ予測サンプルを計算するために使用される。イントラ予測器は、方程式(5)(または加算およびビット単位の算術シフト演算を使用する方程式(5)の同等の実装)を使用して、右隣接サンプルを計算し、i=0、1、…、Nである。方程式(5)では、第1の参照サンプルの中のサンプルの加重は、pjを計算する際の右隣接サンプルまでのそれらの距離に基づく。
イントラ予測器は、方程式(6)(または加算およびビット単位の算術シフト演算を使用する方程式(6)の同等の実装)を使用して、上隣接サンプルを計算し、i=0、1、…、Nである。方程式(6)では、第1の参照サンプルの中のサンプルの加重は、pjを計算する際の上隣接サンプルまでのそれらの距離に基づく。
いくつかの実施形態では、イントラ予測器は、予測されるべきサンプル(例えば、p[x][y])を、第1の参照サンプルおよび第2の参照サンプルの中のサンプルの加重和として計算する。他の実施形態では、等しい加重が適用されるとき、p[x][y]は、同一の行または列内の第1の参照サンプルおよび第2の参照サンプルの中のサンプル、すなわち、図10に例示されるようなサンプル10401~10401’、10203~10203’、10103~10103’、および10501~10501’の数値平均であり得る。さらに他の実施形態では、等しくない加重は、p[x][y]までのそれらの距離に基づく。実施例が、方程式(7)(または加算およびビット単位の算術シフト演算を使用する方程式(7)の同等の実装)によって示される。
図11は、さらに別の実装における平面モードのイントラ予測サンプルの導出で使用される隣接サンプルを図示する、略図である。
いくつかの実施形態では、エンコーダが、特別なコード化順を採用し、デコーダが、対応するデコード順を使用するとき、下および右隣接サンプルが、ブロックをコード化またはデコードする前に再構築されるであろう。この場合、ブロックの下および右隣接サンプルは、ブロックのイントラ予測サンプルを導出するために採用される。
イントラ予測器は、本書に説明される方法を採用し、ブロック1101のイントラ予測モードが平面モードである場合、ブロック1101のイントラ予測サンプルを決定する。
図11では、ブロック1101は、その右下サンプルがサンプル11001(例えば、p[0][0])であり、その左上サンプルがサンプル11003(例えば、p[W-1][H-1])である、ブロックである。WおよびHは、それぞれ、サンプル(またはピクセル)の数で測定される、ブロックの幅および高さである。0、1、…、W-1に等しいx、および0、1、…H-1に等しいyに関して、p[x][y]としてもマークされるサンプル11002は、予測されるべきブロック内のサンプルである。サンプル11300(例えば、p[-1][-1])は、ブロックの右下隣接サンプルである。サンプル11101(例えば、p[0][-1])~11105(例えば、p[W][-1])は、ブロックの下隣接サンプルである。サンプル11201(例えば、p[-1][0])~11206(例えば、p[-1][H])は、ブロックの右隣接サンプルである。サンプル11401(例えば、P[W][y])は、ブロックの左隣接サンプルである。サンプル11501(例えば、P[x][H])は、ブロックの上隣接サンプルである。サンプル11600(例えば、p[W][H])は、ブロックの左上隣接サンプルである。
いくつかの実施形態では、ブロックの下および右隣接サンプルは、集合的に第1の参照サンプルと称されることができる。他の実施形態では、右下サンプル11300もまた、第1の参照サンプルに含まれてもよい。換言すると、第1の参照サンプルは、ブロックの利用可能な隣接サンプルを含有する。ブロックの上および右隣接サンプルは、集合的に第2の参照サンプルと称されることができる。いくつかの実施形態では、左上サンプル11600もまた、第2の参照サンプルに含まれてもよい。換言すると、第2の参照サンプルは、利用可能な参照サンプルを使用して導出されるべき参照サンプルを含有する。第2の参照サンプルは、ブロックの第1の参照サンプルの対応する反対側に位置する。
イントラ予測器は、サンプル11002と同一の行内の左隣接サンプル11401および右隣接サンプルp[-1][y](例えば、図11のサンプル11203)、およびサンプル11002と同一の列内の上隣接サンプル11501および下隣接サンプルp[x][-1](例えば、図11のサンプル11103)を使用して、サンプル11002の予測サンプルを計算する。
いくつかの実施形態では、方程式(1)~(4)が、平面モードにおけるブロックのイントラ予測サンプルを計算するために使用される。イントラ予測器は、第1のサンプルに基づいて第2の参照サンプルを計算する。イントラ予測器は、方程式(1)(または加算およびビット単位の算術シフト演算を使用する方程式(1)の同等の実装)を使用して、左隣接サンプル11401を計算する。方程式(1)では、第1の参照サンプルの中のサンプルの加重は、左隣接サンプルまでのそれらの距離に基づく。
イントラ予測器は、方程式(2)(または加算およびビット単位の算術シフト演算を使用する方程式(2)の同等の実装)を使用して、上隣接サンプル11501を計算する。方程式(2)では、第1の参照サンプルの中のサンプルの加重は、上隣接サンプルまでのそれらの距離に基づく。
いくつかの実施形態では、イントラ予測器は、予測されるべきサンプル(例えば、p[x][y])を、第1の参照サンプルおよび第2の参照サンプルの中のサンプルの加重和として計算する。他の実施形態では、p[x][y]は、等しい加重を採用する、p[x][-1]、p[-1][y]、p[W][y]、およびp[x][H]の数値平均であり得る。さらに他の実施形態では、参照サンプルに関する等しくない加重は、p[x][y]までのそれらの距離に基づくことができる。実施例が、方程式(3)(または加算およびビット単位の算術シフト演算を使用する方程式(3)の同等の実装)によって示される。別の実施例が、方程式(4)(または加算およびビット単位の算術シフト演算を使用する方程式(4)の同等の実装)によって示される。
図12は、さらに別の実装における平面モードのイントラ予測サンプルの導出で使用される隣接サンプルを図示する、略図である。
いくつかの実施形態では、エンコーダが、特別なコード化順を採用し、デコーダが、対応するデコード順を使用するとき、下および右隣接サンプルが、ブロックをコード化またはデコードする前に再構築されるであろう。この場合、ブロックの下および右隣接サンプルは、ブロックのイントラ予測サンプルを導出するために採用される。
イントラ予測器は、本書に説明される方法を採用し、ブロック1201のイントラ予測モードが平面モードである場合、ブロック1201のイントラ予測サンプルを決定する。
図12では、ブロック1201は、その右下サンプルがサンプル12001(例えば、p[0][0])であり、その左上サンプルがサンプル12003(例えば、p[W-1][H-1])である、ブロックである。WおよびHは、それぞれ、サンプル(またはピクセル)の数で測定される、ブロックの幅および高さである。0、1、…、W-1に等しいx、および0、1、…H-1に等しいyに関して、p[x][y]としてもマークされるサンプル12002は、予測されるべきブロック内のサンプルである。
図12では、サンプル12101(例えば、p[0][-1])~12105(例えば、p[W][-1])は、ブロックの下隣接サンプルである。サンプル12105(例えば、p[W][-1])から左方向まで、サンプル12105と同一の行内にさらにNL個の下隣接サンプル、すなわち、サンプルp[W+1][-1]、…、p[W+NL][-1]が存在する(例えば、サンプル12106は、p[W+NL][-1]である)。サンプル12101(例えば、p[0][-1])~12106(例えば、p[W+NL][-1])以外に、下隣接サンプルのNB個の付加的な列が、ブロック1201のイントラ予測サンプルを導出する際に採用される。サンプル12101’~12106’は、サンプルp[0][-1-NB]、p[1][-1-NB]、…、p[W+NL][-1-NB]である。
図12では、サンプル12201(例えば、p[-1][0])~12206(例えば、p[-1][H])は、ブロックの右隣接サンプルである。サンプル12206(例えば、p[-1][H])から上方向まで、サンプル10206と同一の列内にさらにNT個の右隣接サンプル、すなわち、サンプルp[-1][H+1]、…、p[-1][H+NT]が存在する(例えば、サンプル12207は、p[-1][H+NT]である)。サンプル12201(例えば、p[-1][0])~12207(例えば、p[-1][H+NT])以外に、右隣接サンプルのNR個の付加的な列が、ブロック1201のイントラ予測サンプルを導出する際に採用される。サンプル12201’~12207’は、サンプルp[-1-NR][0]、p[-1-NR][1]、…、p[-1-NR][H+NT]である。
図12では、サンプル12300(例えば、p[-1][-1])は、ブロックの右下隣接サンプルである。より多くの下および右隣接サンプルが、ブロック1201のイントラ予測サンプルを導出することに関与した後、右下隣接サンプルは、12300から12300’までのサンプル、すなわち、サンプルp[-1][-1]、p[-1][-2]、p[-2][-1]、p[-2][-2]、…、p[-1-NR][-1-NB]を含み得る。
図12では、サンプル12401(例えば、P[W][y])は、ブロックの左隣接サンプルである。サンプルp[W+1][y]、…、p[W+NL][y](例えば、サンプル12401’は、p[W+NL][y]である)は、サンプル12401と同一の行内のさらにNL個の左隣接サンプルである。サンプル12501(例えば、P[x][H])は、ブロックの上隣接サンプルである。サンプルp[x][H+1]、…、p[x][H+NT](例えば、サンプル12501’は、p[x][H+NT]である)は、サンプル12501と同一の列内のさらにNT個の上隣接サンプルである。サンプル12600(例えば、p[W][H])は、ブロックの左上隣接サンプルである。
いくつかの実施形態では、ブロックの下および右隣接サンプルは、集合的に第1の参照サンプルと称されることができる。他の実施形態では、右下サンプル12300~12300’もまた、第1の参照サンプルに含まれてもよい。換言すると、第1の参照サンプルは、ブロックの利用可能な隣接サンプルを含有する。ブロックの上および左隣接サンプルは、集合的に第2の参照サンプルと称されることができる。いくつかの実施形態では、右上サンプル12600もまた、第2の参照サンプルに含まれてもよい。換言すると、第2の参照サンプルは、利用可能な参照サンプルを使用して導出されるべき参照サンプルを含有する。第2の参照サンプルは、ブロックの第1の参照サンプルの対応する反対側に位置する。
イントラ予測器は、サンプル12002と同一の行内の右隣接サンプルおよび左隣接サンプル、およびサンプル12002と同一の列内の下隣接サンプルおよび上隣接サンプルを使用して、サンプル12002の予測サンプルを計算する。
イントラ予測器は、第1のサンプルに基づいて第2の参照サンプルを計算する。いくつかの実施形態では、イントラ予測器の計算の複雑性を低減させるために、NRおよびNBは、等しく(例えば、正の整数M)、NTおよびNLは、等しい(例えば、負ではない整数N)。いくつかの実施形態では、Mが、1に等しく、Nが、0に等しいとき、本実施形態で説明される方法は、図11との関連で説明されるものに類似する。
いくつかの実施形態では、方程式(5)~(7)が、平面モードにおけるブロックのイントラ予測サンプルを計算するために使用される。イントラ予測器は、方程式(5)(または加算およびビット単位の算術シフト演算を使用する方程式(5)の同等の実装)を使用して、左隣接サンプルを計算し、i=0、1、…、Nである。方程式(5)では、第1の参照サンプルの中のサンプルの加重は、pjを計算する際の左隣接サンプルまでのそれらの距離に基づく。
イントラ予測器は、方程式(6)(または加算およびビット単位の算術シフト演算を使用する方程式(6)の同等の実装)を使用して、上隣接サンプルを計算し、i=0、1、…、Nである。方程式(6)では、第1の参照サンプルの中のサンプルの加重は、pjを計算する際の上隣接サンプルまでのそれらの距離に基づく。
いくつかの実施形態では、イントラ予測器は、予測されるべきサンプル(例えば、p[x][y])を、第1の参照サンプルおよび第2の参照サンプルの中のサンプルの加重和として計算する。他の実施形態では、等しい加重が適用されるとき、p[x][y]は、同一の行または列内の第1の参照サンプルおよび第2の参照サンプルの中のサンプル、すなわち、図12に例示されるようなサンプル12401~12401’、12203~12203’、12103~12103’、および12501~12501’の数値平均であり得る。さらに他の実施形態では、等しくない加重は、p[x][y]までのそれらの距離に基づく。実施例が、方程式(7)(または加算およびビット単位の算術シフト演算を使用する方程式(7)の同等の実装)によって示される。
図13は、本開示される技術による、視覚メディアコード化のための例示的方法1300のフローチャートを示す。方法1300は、ステップ1310において、現在のブロックの再構築された隣接サンプルである、参照サンプルの第1のセットを選択するステップを含む。いくつかの実施形態では、イントラ予測のために使用される、再構築された隣接サンプルは、インループフィルタ処理されない。ある実施例では、これは、H.265/HEVC規格の実装と一致する。
方法1300は、ステップ1320において、参照サンプルの第1のセットのうちの少なくとも1つおよび参照サンプルの第2のセットのうちの少なくとも1つを補間することによって、現在のブロックの予測サンプルに関して予測値を決定するステップを含む。いくつかの実施形態では、少なくとも図5Aとの関連で、参照サンプルの第2のセットのうちの参照サンプルは、参照サンプルの第1のセットからの第1のサンプルおよび第2のサンプルの加重和に基づく。参照サンプルは、第1のサンプルと水平に整合され、第2のサンプルと垂直に整合され、第1のサンプルおよび第2のサンプルのうちの1つに対して予測サンプルの反対側に位置付けられる。
いくつかの実施形態では、ビデオエンコーダで実装可能であり、方法1300はさらに、現在のブロック内のサンプル毎にステップ1310および1320を繰り返すステップと、現在のブロックの各サンプルに対応する予測値を使用して、現在のブロックの残余を計算するステップと、残余をビットストリームにエンコードするステップとを含む。
いくつかの実施形態では、ビデオデコーダで実装可能であり、方法1300はさらに、現在のブロックのビットストリーム表現を解析し、現在のブロックの残余を決定するステップと、予測サンプルおよび残余の総和に基づいて、現在のブロックのサンプルを再構築するステップとを含む。
いくつかの実施形態では、加重和は、第1のサンプルを乗算する第1の加重と、第2のサンプルを乗算する第2の加重とを備える。一実施例では、第1および第2の加重は、参照サンプルと第1のサンプルとの間の距離、および参照サンプルと第2のサンプルとの間の距離に基づく。別の実施例では、第1の加重は、第2の加重に等しい。
いくつかの実施形態では、補間は、参照サンプルの第1のセットのうちの少なくとも1つおよび参照サンプルの第2のセットのうちの少なくとも1つの平均に基づく。他の実施形態では、補間は、参照サンプルの第1のセットのうちの少なくとも1つおよび参照サンプルの第2のセットのうちの少なくとも1つの加重和に基づく。
少なくとも図5Aおよび5Bとの関連で、本書は、H個のピクセル行と、W個のピクセル列とを備える、ビデオのコード化ブロック内のピクセル場所における予測値を決定する別の方法を開示し、本方法は、
(a)その場所がコード化ブロックの外側にある第1の上参照サンプル、およびその場所がコード化ブロックの外側にある第1の左参照サンプルを使用して、補間することによって、右参照サンプルを導出するステップであって、(i)第1の上参照サンプルは、右参照サンプルと同一のピクセル列内にあり、(ii)第1の左参照サンプル、ピクセル場所、および右参照サンプルは、同一のピクセル行内にある、ステップと、
(b)その場所がコード化ブロックの外側にある第2の上参照サンプル、およびその場所がコード化ブロックの外側にある第2の左参照サンプルを使用して、補間することによって、下参照サンプルを導出するステップであって、(i)下参照サンプルは、第2の上参照サンプルおよびピクセル場所と同一のピクセル列内にあり、(ii)下参照サンプルは、第2の左参照サンプルと同一の行内にある、ステップと、
(c)予測値を、第1の左参照サンプル、第2の上参照サンプル、右参照サンプル、および下参照サンプルの加重和であると決定するステップと、
(d)ビデオブロックのさらなる処理のために予測値を使用するステップとを含む。
いくつかの実施形態では、本方法はさらに、コード化ブロック内のピクセル毎にステップ(a)-(d)を繰り返すステップと、各サンプルに対応する予測値を使用して、コード化ブロックの残余を計算するステップと、残余をビットストリームにエンコードするステップとを含んでもよい。
他の実施形態では、本方法はさらに、コード化ブロックのビットストリーム表現を解析し、コード化ブロックの残余を決定するステップと、予測サンプルおよび残余の総和に基づいて、現在のブロックのサンプルを再構築するステップとを含んでもよい。
少なくとも図5Aおよび5Bとの関連で、本書は、ビデオのコード化ブロック内のピクセル場所における予測値を決定するさらに別の方法を開示し、コード化ブロックは、H個のピクセル行と、W個のピクセル列とを備え、本方法は、
(a)ピクセル値を少なくとも2つの垂直参照サンプルおよび少なくとも2つの水平参照サンプルの加重和として決定するステップであって、(i)少なくとも2つの垂直参照サンプルは、コード化ブロックの外側にあり、ピクセル場所と同一の列内にある、第1の参照サンプルと、コード化ブロックの外側の行およびコード化ブロックの外側の列内にある、第2の垂直サンプルとを含み、(ii)少なくとも2つの水平参照サンプルは、コード化ブロックの外側にあり、ピクセル場所と同一の行内にある、第1の水平参照サンプルと、コード化ブロックの外側の行およびコード化ブロックの外側の列内にある、第2の水平参照サンプルとを含む。
いくつかの実施形態では、上記に説明される方法に関して、「垂直」サンプルは、ピクセル場所の上方のサンプル(「上」サンプル)またはピクセル場所の下方のサンプル(「下」サンプル)であってもよく、「水平」サンプルは、ピクセル場所の左または右側のサンプル(それぞれ、「左」および「右」サンプル)であってもよい。
いくつかの実施形態では、本方法はさらに、コード化ブロック内のピクセル毎にステップ(a)を繰り返すステップと、各サンプルに対応する予測値を使用して、コード化ブロックの残余を計算するステップと、残余をビットストリームにエンコードするステップとを含んでもよい。
他の実施形態では、本方法はさらに、コード化ブロックのビットストリーム表現を解析し、コード化ブロックの残余を決定するステップと、予測サンプルおよび残余の総和に基づいて、現在のブロックのサンプルを再構築するステップとを含んでもよい。
少なくとも図5Aおよび5Bとの関連で、本書は、ビデオフレームの平面コード化されたコード化ブロック内のピクセル場所における予測値を決定するさらに別の方法を開示し、本方法は、
(a)ピクセル値を、平面コード化されたコード化ブロックの外側にあるピクセル場所を囲繞する、いくつかの参照ピクセル場所におけるピクセル値の第1の加重和として決定するステップであって、(i)第1の加重和のために使用される加重は、ピクセル場所と対応する参照ピクセル場所との間のピクセル距離に反比例する、ステップと、
(b)再構築されたピクセル値が利用可能である、第1の参照ピクセル場所に関して、第1の加重和のためにそのピクセル値を使用するステップと、
(c)再構築されたピクセル値が利用可能ではない、第2の参照ピクセル場所に関して、ピクセル値を第1の加重和として決定するステップの間に、垂直に並設される前もって再構築されたピクセル値および水平に並設される前もって再構築されたピクセル値の第2の加重和を使用するステップと、
(d)平面コード化されたコード化ブロックをさらに処理するために、ピクセル値を使用するステップとを含む。
いくつかの実施形態では、本方法はさらに、コード化ブロック内のピクセル毎にステップ(a)-(d)を繰り返すステップと、各サンプルに対応する予測値を使用して、コード化ブロックの残余を計算するステップと、残余をビットストリームにエンコードするステップとを含んでもよい。
他の実施形態では、本方法はさらに、コード化ブロックのビットストリーム表現を解析し、コード化ブロックの残余を決定するステップと、予測サンプルおよび残余の総和に基づいて、現在のブロックのサンプルを再構築するステップとを含んでもよい。
いくつかの実施形態では、第1および第2の加重和で使用される加重は、それらのデカルト座標の絶対差の総和として定義される、ピクセル場所と参照サンプルの場所との間のタクシー距離に依存し得る。例えば、(x0,y0)と(x1,y1)との間のタクシー距離(マンハッタン距離とも呼ばれる)は、(|x0-x1|+|y0-y1|)に等しい。
例えば、図5Bは、4つの参照ピクセル(太い輪郭で示される、5103、5203、5206、および5105)、および暗示的に2つの再構築されたピクセル(5401および5501)を前提として、その予測値が決定される必要がある、ピクセル(5002)を含む、コード化ブロック501を示す。図5Bの実施例に示されるピクセルの間の距離に関して、再構築されたピクセル(5401および5501)の値は、以下として算出され得る。
ここでは、項a、b、c、およびdは、その予測値が決定されているピクセルが、それぞれ、現在のブロックの上縁、下縁、左縁、および右縁から離れている距離を表す。したがって、a+b=Hおよびc+d=Wである。いくつかの実施形態では、予測値は、例えば、参照および再構築されたピクセルの値の単純平均として算出され得る。
例示的実装では、4つの参照ピクセルのみの値が、明示的に利用可能であるとき、方程式(10)は、方程式(8)および(9)を使用して算出される。
他の実施形態では、予測値は、例えば、参照および再構築されたピクセルの加重和として算出され得る。
一般に、方程式(10)および(11)以外のピクセルを組み合わせる方法が、使用されてもよい。例えば、方程式(10)が、単純平均化を表す一方で、方程式(11)は、逆距離加重平均化を表す。中間参照サンプルと比べて再構築された参照サンプルの加重を優先すること等の他の可能性もまた、使用されてもよい。方程式(8)および(9)、およびコード化ブロックの寸法(高さHおよび幅W)を使用して、方程式(11)は、以下のように書き換えられ得る。
方程式(11)に示されるように、ピクセル(5002)の予測値は、非仮想参照サンプルと、その予測値が決定されているピクセル(5002)との間のタクシー距離に基づくサンプル/ピクセル加重を伴う、明示的に利用可能な(または「非仮想」または「再構築されていない」)参照ピクセル(5103、5203、5206、および5105)に依存する。
ある実施例では、対角である非仮想参照サンプルに関して、加重は、非対角である非仮想参照サンプルのタクシー距離に比例し、非対角方向にある参照サンプルに関して、加重は、対角方向への対応する参照サンプルのタクシー距離に比例する。例えば、H*(b+c)/(H+c)*(H+W)である、ピクセル5103(非対角参照サンプル)に関する加重は、(b+c)である、対角である対応する参照サンプル(5206)のタクシー距離に比例する。
例えば、予測サンプルの値を決定するために使用される一対の対角および非対角参照サンプルに関して、対角(または非対角)参照サンプルの加重は、予測サンプルと非対角(または対角)サンプルとの間のタクシー距離に比例する。図5Bおよび方程式(12)との関連で、予測サンプルの値を決定するために使用される一対の参照サンプルのうちの第1のものに関する加重は、予測サンプルと一対の参照サンプルのうちの第2のものとの間のタクシー距離に比例し、一対の参照サンプルのうちの第1および第2のものは、それぞれ、対角および非対角である、または逆も同様である。
上記に説明される方法に関して、これらの方法は、図6-12に説明されるようなサンプルを含むように拡張され得ることが、当業者によって理解されるであろう。
3 本開示される技術の例示的実装
図14は、図2に図示されるような例示的ビデオエンコーダまたは画像エンコーダを含有する、例示的デバイスを図示するブロック図である。
入手ユニット1401が、ビデオおよび画像を捕捉する。入手ユニット1401は、自然の場面のビデオまたは画像を撮影するための1つ以上のカメラを装備してもよい。いくつかの実施形態では、入手ユニット1401は、深度情報を伴ってビデオおよび画像を得るようにカメラを伴って実装されてもよい。いくつかの実施形態では、入手ユニット1401は、赤外線カメラコンポーネントを含んでもよい。いくつかの実施形態では、入手ユニット1401は、遠隔感知カメラを伴って構成されてもよい。入手ユニット1401はまた、放射線を使用して物体を走査することによって、ビデオまたは画像を発生させる装置またはデバイスであってもよい。
いくつかの実施形態では、入手ユニット1401は、ビデオまたは画像に、前処理、例えば、自動ホワイトバランシング、自動合焦、自動露出、バックライト補償、鮮明化、ノイズ除去、スティッチング、上方サンプリング/下方サンプリング、フレームレート変換、仮想ビュー合成等を実施してもよい。
入手ユニット1401はまた、別のデバイスまたは処理ユニットからビデオまたは画像を受信してもよい。例えば、入手ユニット1401は、トランスコーダ内のコンポーネントユニットであり得る。トランスコーダは、1つ以上のデコードされた(または部分的にデコードされた)画像を入手ユニット1401にフィードする。別の実施例では、入手ユニット1401は、別のデバイスから、そのデバイスへのデータリンクを介してビデオまたは画像を取得する。
いくつかの実施形態では、入手ユニット1401は、ビデオおよび画像以外に、他のメディア情報、例えば、オーディオ信号を捕捉するために使用されてもよい。入手ユニット1401はまた、人工情報、例えば、文字、テキスト、コンピュータで発生されたビデオまたは画像等を受信してもよい。
エンコーダ1402は、図2に図示される例示的エンコーダの実装である。エンコーダ1402の入力は、入手ユニット1401によって出力されるビデオまたは画像である。エンコーダ1402は、ビデオまたは画像をエンコードし、発生されたビデオまたは画像ビットストリームを出力する。
記憶/送信ユニット1403が、エンコーダ1402からビデオまたは画像ビットストリームを受信し、ビットストリームにシステム層処理を実施する。例えば、記憶/送信ユニット1403は、例えば、トランスポート規格およびメディアファイル形式、例えば、MPEG-2 TS、ISOベースメディアファイル形式(ISOBMFF)、HTTPを経由した動的適応ストリーミング(DASH)、MPEGメディアトランスポート(MMT)等に従って、ビットストリームをカプセル化する。記憶/送信ユニット1403は、メモリまたはディスク内のカプセル化後に取得されるトランスポートストリームまたはメディアファイルを記憶する、または有線または無線ネットワークを介して、トランスポートストリームまたはメディアファイルを送信する。
いくつかの実施形態では、エンコーダ1402からビデオまたは画像ビットストリームを受信することに加えて、記憶/送信ユニット1403の入力はまた、オーディオ、テキスト、画像、グラフィック等を含んでもよい。記憶/送信ユニット1403は、そのような異なるタイプのメディアビットストリームをカプセル化することによって、トランスポートまたはメディアファイルを発生させる。
開示される実施形態は、ビデオ通信のアプリケーション内でビデオ(または画像)ビットストリームを発生させる、または処理することが可能なデバイス、例えば、携帯電話、コンピュータ、メディアサーバ、ポータブルモバイル端末、デジタルカメラ、放送デバイス、CDN(コンテンツ配布ネットワーク)デバイス、監視カメラ、ビデオ会議デバイス等であってもよい。
図15は、図3に図示されるような例示的ビデオデコーダまたは画像デコーダを含有する、別の例示的デバイスを図示するブロック図である。
受信ユニット1501が、有線または無線ネットワークからビットストリームを取得することによって、電子デバイス内のメモリまたはディスクを読み取ることによって、またはデータリンクを介して他のデバイスからデータをフェッチすることによって、ビデオまたは画像ビットストリームを受信する。
受信ユニット1501の入力はまた、ビデオまたは画像ビットストリームを含有する、トランスポートストリームまたはメディアファイルを含んでもよい。受信ユニット901は、トランスポートまたはメディアファイル形式の仕様に従って、トランスポートストリームまたはメディアファイルからビデオまたは画像ビットストリームを抽出する。
受信ユニット1501は、ビデオまたは画像ビットストリームを出力し、デコーダ1502にパスする。ビデオまたは画像ビットストリーム以外に、受信ユニット1501の出力はまた、オーディオビットストリーム、文字、テキスト、画像、グラフィック等を含み得ることに留意されたい。受信ユニット1501は、本例証的実施形態では、出力を対応する処理ユニットにパスする。例えば、受信ユニット1501は、出力オーディオビットストリームを本デバイス内のオーディオデコーダにパスする。
デコーダ1502は、図3に図示される例示的デコーダの実装である。エンコーダ1502の入力は、受信ユニット1501によって出力されるビデオまたは画像ビットストリームである。デコーダ1502は、ビデオまたは画像ビットストリームをデコードし、デコードされたビデオまたは画像を出力する。
レンダリングユニット1503が、デコーダ1502からデコードされたビデオまたは画像を受信する。レンダリングユニット1503は、デコードされたビデオまたは画像を視聴者に提示する。ある実施例では、レンダリングユニット1503は、画面であってもよい。レンダリングユニット1503はまた、本例証的実施形態と別個であるデバイスであるが、本実施形態へのデータリンクを含んでもよい。例えば、レンダリングユニット1503は、プロジェクタ、モニタ、TVセット等であってもよい。いくつかの実施形態では、レンダリングユニット1503は、デコードされたビデオまたは画像を視聴者に提示する前に、それに後処理、例えば、自動ホワイトバランシング、自動合焦、自動露出、バックライト補償、鮮明化、ノイズ除去、スティッチング、上方サンプリング/下方サンプリング、フレームレート変換、仮想ビュー合成等を実施する。
いくつかの実施形態では、デコードされたビデオまたは画像を受信することに加えて、レンダリングユニット1503の入力は、本例証的実施形態の1つ以上のユニットからの他のメディアデータ、例えば、オーディオ、文字、テキスト、画像、グラフィック等であり得る。レンダリングユニット1503の入力はまた、人工データ、例えば、遠隔教育アプリケーションにおいて注目を集めるためにスライド上で現地の教師によって描かれる線およびマークを含んでもよい。レンダリングユニット1503は、異なるタイプのメディアをともに構成し、次いで、組成を視聴者に提示する。
本例証的実施形態は、ビデオ通信のアプリケーション内でビデオ(または画像)ビットストリームをデコードまたは処理することが可能なデバイス、例えば、携帯電話、コンピュータ、セットトップボックス、TVセット、モニタ、メディアサーバ、ポータブルモバイル端末、デジタルカメラ、放送デバイス、CDN(コンテンツ配布ネットワーク)デバイス、監視カメラ、ビデオ会議デバイス等であってもよい。
図16は、図14および15に示される実施形態を含有する、例示的電子システムを図示するブロック図である。
いくつかの実施形態では、ソースデバイス1601は、図14に示される例示的実施形態であってもよい。記憶媒体/トランスポートネットワーク1602は、デバイスまたは電子システムの内部メモリリソースと、データリンクを介してアクセス可能である外部メモリリソースと、有線および/または無線ネットワークから成るデータ伝送ネットワークとを含んでもよい。記憶媒体/トランスポートネットワーク1602は、ソースデバイス1601内の記憶/送信ユニット1403のための記憶リソースまたはデータ伝送ネットワークを提供する。
いくつかの実施形態では、宛先デバイス1603は、図15に示される例示的実施形態であってもよい。宛先デバイス1603内の受信ユニット1501が、記憶媒体/トランスポートネットワーク1602から、ビデオまたは画像ビットストリーム、ビデオまたは画像ビットストリームを含有するトランスポートストリーム、またはビデオまたは画像ビットストリームを含有するメディアファイルを受信する。
本例示的実施形態で説明される電子システムは、ビデオ通信のアプリケーション内でビデオ(または画像)ビットストリームを発生させ、記憶し、またはトランスポートし、デコードすることが可能なデバイスまたはシステム、例えば、携帯電話、コンピュータ、IPTVシステム、OTTシステム、インターネット上のマルチメディアシステム、デジタルTV放送システム、ビデオ監視システム、ポータブルモバイル端末、デジタルカメラ、ビデオ会議システム等であってもよい。
図17は、ビデオ処理装置1700のブロック図である。装置1700は、本明細書に説明される方法のうちの1つ以上のものを実装するために使用されてもよい。装置1700は、スマートフォン、タブレット、コンピュータ、モノのインターネット(IoT)受信機等で具現化されてもよい。装置1700は、1つ以上のプロセッサ1702と、1つ以上のメモリ1704と、ビデオ処理ハードウェア1706とを含んでもよい。プロセッサ1702は、本書に説明される1つ以上の方法(限定ではないが、方法1300を含む)を実装するように構成されてもよい。メモリ(複数のメモリ)1704は、本明細書に説明される方法および技法を実装するために使用されるデータおよびコードを記憶するために使用されてもよい。ビデオ処理ハードウェア1706は、本書に説明されるいくつかの技法をハードウェア回路で実装するために使用されてもよい。
本明細書は、図面とともに、例示的と見なされるのみであり、例示的は、実施例を意味し、別様に記述されない限り、理想的または好ましい実施形態を含意しないことが意図される。本明細書で使用されるように、「または」の使用は、文脈が別様に明確に示さない限り、「および/または」を含むことを意図している。
本明細書に説明される実施形態のうちのいくつかは、一実施形態では、ネットワーク化環境内でコンピュータによって実行されるプログラムコード等のコンピュータ実行可能命令を含む、コンピュータ可読媒体で具現化される、コンピュータプログラム製品によって実装され得る、方法またはプロセスの一般的状況で説明される。コンピュータ可読媒体は、限定ではないが、読取専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)等を含む、リムーバブルおよび非リムーバブル記憶デバイスを含んでもよい。したがって、コンピュータ可読媒体は、非一過性の記憶媒体を含むことができる。概して、プログラムモジュールは、特定のタスクを実施する、または特定の抽象データタイプを実装する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造等を含んでもよい。コンピュータまたはプロセッサ実行可能命令、関連付けられるデータ構造、およびプログラムモジュールは、本明細書に開示される方法のステップを実行するためのプログラムコードの実施例を表す。そのような実行可能命令または関連付けられるデータ構造の特定のシーケンスは、そのようなステップまたはプロセスで説明される機能を実装するための対応する行為の実施例を表す。
開示される実施形態のうちのいくつかは、ハードウェア回路、ソフトウェア、またはそれらの組み合わせを使用する、デバイスまたはモジュールとして実装されることができる。例えば、ハードウェア回路実装は、例えば、プリント回路基板の一部として統合される、離散アナログおよび/またはデジタルコンポーネントを含むことができる。代替として、または加えて、開示されるコンポーネントまたはモジュールは、特定用途向け集積回路(ASIC)として、および/またはフィールドプログラマブルゲートアレイ(FPGA)デバイスとして実装されることができる。いくつかの実装は、加えて、または代替として、本願の開示される機能性と関連付けられるデジタル信号処理の動作必要性のために最適化されるアーキテクチャを伴う特殊化マイクロプロセッサである、デジタル信号プロセッサ(DSP)を含んでもよい。同様に、各モジュール内の種々のコンポーネントまたはサブコンポーネントは、ソフトウェア、ハードウェア、またはファームウェアで実装されてもよい。モジュールおよび/またはモジュール内のコンポーネントの間のコネクティビティは、限定ではないが、インターネットを経由した通信、有線、または適切なプロトコルを使用する無線ネットワークを含む、当技術分野で公知であるコネクティビティ方法および媒体のうちのいずれか1つを使用して、提供されてもよい。
本書は、多くの詳細を含有するが、これらは、請求される発明または請求され得るものの範囲への限定としてではなく、特定の実施形態に特有の特徴の説明として解釈されるべきである。別個の実施形態の文脈で本特許文書に説明される、ある特徴もまた、単一の実施形態では、組み合わせて実装されることもできる。逆に、単一の実施形態の文脈で説明される種々の特徴もまた、複数の実施形態では、別個に、または任意の好適な副次的組み合わせで実装されることもできる。さらに、特徴が、ある組み合わせで作用するものとして上記に説明され、そのようなものとして最初に請求さえされ得るが、請求される組み合わせからの1つ以上の特徴は、ある場合には、組み合わせから削除されることができ、請求される組み合わせは、副次的組み合わせまたは副次的組み合わせの変形例を対象とし得る。同様に、動作が、特定の順序で図面に描写されるが、これは、望ましい結果を達成するために、そのような動作が、示される特定の順序で、または連続順序で実施されること、または全ての図示される動作が実施されることを要求するものとして理解されるべきではない。
いくつかの実装および実施例のみが、説明され、他の実装、向上、および変形例も、本開示に説明および図示されるものに基づいて行われることができる。