(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-04-26
(45)【発行日】2024-05-09
(54)【発明の名称】画像およびビデオ圧縮のイントラ予測
(51)【国際特許分類】
H04N 19/593 20140101AFI20240430BHJP
【FI】
H04N19/593
(21)【出願番号】P 2022548760
(86)(22)【出願日】2020-05-14
(86)【国際出願番号】 US2020032862
(87)【国際公開番号】W WO2021162724
(87)【国際公開日】2021-08-19
【審査請求日】2022-08-10
(32)【優先日】2020-02-13
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】100108453
【氏名又は名称】村山 靖彦
(74)【代理人】
【識別番号】100110364
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100133400
【氏名又は名称】阿部 達彦
(72)【発明者】
【氏名】ジェームズ・バンコスキー
(72)【発明者】
【氏名】デバーガ・ムクハージー
【審査官】間宮 嘉誉
(56)【参考文献】
【文献】国際公開第2018/231087(WO,A1)
【文献】欧州特許出願公開第2665276(EP,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H04N 7/12
H04N 19/00-19/98
(57)【特許請求の範囲】
【請求項1】
イントラ予測モードを使用して現在のブロックをコーディングするための方法であって、
焦点を取得するステップであり、前記焦点が座標系において座標(a,b)を有する、ステップと、
第1の複数の周辺ピクセルおよび第2の複数の周辺ピクセルを使用して、前記現在のブロックの予測ブロックを生成する
ステップであって、前記予測ブロックは、x軸方向の長さである第1の長さとy軸方向の長さである第2の長さとを備えるステップであり、
x軸方向の追加の領域である第1のオーバーハング領域と前記第1の複数の周辺ピクセル
とが、x軸を構成する第1の周辺ピクセル線を形成することと、
y軸方向の追加の領域である第2のオーバーハング領域と前記第2の複数の周辺ピクセル
とが、y軸を構成する第2の周辺ピクセル線を形成することと、
前記第1の周辺ピクセル線および前記第2の周辺ピクセル線が、原点を有する前記座標系を形成することと
を行い、
前記第1の複数の周辺ピクセルの長さは前記第1の長さと等しく、
前記第2の複数の周辺ピクセルの長さは前記第2の長さと等しく、
前記予測ブロックを生成するステップが、
前記予測ブロックの位置(i,j)における前記予測ブロックの各位置に対して、x切片またはy切片のうちの少なくとも1つを決定するステップであり、
前記x切片が、前記予測ブロックの前記各位置を中心とする点と前記焦点によって形成される線が前記第1の周辺ピクセル線と交差する第1の点であり、
前記y切片が、前記予測ブロックの前記各位置を中心とする前記点と前記焦点とによって形成される前記線が前記第2の周辺ピクセル線と交差する第2の点である、ステップと、
前記x切片または前記y切片のうちの前記少なくとも1つを使用して、前記予測ブロックの前記各位置の予測ピクセル値を決定するステップと
を含む、ステップと
前記現在のブロックと前記予測ブロックの差に対応する残余ブロックをコーディングするステップと
を含み、
前記第1の点が前記第1のオーバーハング領域に含まれ、又は前記第2の点が前記第2のオーバーハング領域に含まれる、
方法。
【請求項2】
前記x切片または前記y切片のうちの前記少なくとも1つを使用して、前記予測ブロックの前記各位置の前記予測ピクセル値を決定するステップが、
前記x切片または前記y切片のうちの前記少なくとも1つの一方が負の値であるという条件で、前記x切片または前記y切片のうちの前記少なくとも1つの他方を使用して、前記各位置の前記予測ピクセル値を決定するステップを含む、請求項1に記載の方法。
【請求項3】
前記x切片または前記y切片のうちの前記少なくとも1つを使用して、前記予測ブロックの前記各位置の前記予測ピクセル値を決定するステップが、
前記x切片が正であり、前記y切片が正であるという条件で、前記各位置の前記予測ピクセル値を、前記x切片における第1のピクセル値と前記y切片における第2のピクセル値の重み付けされた組合せとして決定するステップをさらに含む、請求項2に記載の方法。
【請求項4】
前記x切片または前記y切片のうちの前記少なくとも1つを使用して、前記予測ブロックの前記各位置の前記予測ピクセル値を決定するステップが、
iがaに等しいという条件で、前記予測ブロックの前記各位置におけるピクセル値を、前記第1の周辺ピクセル線の位置iにある、前記第1の複数の周辺ピクセルの第1の所定の周辺ピクセルの値に設定するステップを含む、請求項1に記載の方法。
【請求項5】
前記x切片または前記y切片のうちの前記少なくとも1つを使用して、前記予測ブロックの前記各位置の前記予測ピクセル値を決定するステップが、
jがbに等しいという条件で、前記予測ブロックの前記各位置のピクセル値を、前記第2の周辺ピクセル線の位置jにある前記第2の複数の周辺ピクセルの第2の所定の周辺ピクセルの値に設定するステップを含む、請求項1に記載の方法。
【請求項6】
前記x切片または前記y切片のうちの前記少なくとも1つを使用して、前記予測ブロックの前記各位置の前記予測ピクセル値を決定するステップが、
前記x切片がゼロであり、前記y切片がゼロであるという条件で、前記予測ブロックの前記各位置のピクセル値を、前記第1の周辺ピクセル線と前記第2の周辺ピクセル線の交点におけるピクセル値に設定するステップを備える、請求項1に記載の方法。
【請求項7】
前記焦点を取得するステップが、
圧縮されたビットストリームから、前記イントラ予測モードを復号化するステップを含み、前記イントラ予測モードが前記焦点を示す、請求項1に記載の方法。
【請求項8】
前記焦点を取得するステップが、複数の候補焦点から前記焦点を選択するステップを含む、請求項1に記載の方法。
【請求項9】
前記複数の候補焦点が候補焦点のグループに分割され、候補焦点の各グループが、それぞれの円の円周上に配置される、請求項8に記載の方法。
【請求項10】
前記候補焦点の前記各グループが、16個の候補焦点からなる、請求項9に記載の方法。
【請求項11】
現在のブロックを復号化するための装置であって、
メモリと、
プロセッサと
を備え、前記プロセッサが、
圧縮されたビットストリームから焦点を復号化することと、
前記現在のブロックの予測ピクセルの予測ブロックを取得することであって、各予測ピクセルが、前記予測ブロック内のそれぞれの位置にあり、
前記予測ブロックはx軸方向の長さである第1の長さとy軸方向の長さである第2の長さとを備え、前記予測ブロックを取得するために、
前記予測ブロックの各位置に対して、
それぞれの予測角度を示し、前記焦点を前記各位置に接続する線を取得することと、
前記線を使用して、前記各位置に対するピクセル値を決定することと
を行うための命令を実行することと
を含む、取得することと、
前記予測ブロックを使用して前記現在のブロックを再構築することと
を行うために、メモリに記憶された命令を実行するように構成さ
れ、
前記線を使用して前記各位置の前記ピクセル値を決定することが、
前記線のx切片を決定することであって、前記現在のブロックの左の周辺ピクセルである第1の複数の周辺ピクセルを備えるx軸において、前記x切片は、前記第1の複数の周辺ピクセルと、x軸方向の追加の領域である第1のオーバーハング領域とが構成する第1の周辺ピクセル線と、前記線とが交差する第1の点である、決定することと、
前記線のy切片を決定することであって、前記現在のブロックの上部周辺ピクセルである第2の複数の周辺ピクセルを備えるy軸において、前記y切片は、前記第2の複数の周辺ピクセルと、y軸方向の追加の領域である第2のオーバーハング領域とが構成する第2の周辺ピクセル線と、前記線とが交差する第2の点である、決定することと、
前記x切片と前記y切片を使用して前記ピクセル値を決定することと
を行うことを含み、
前記第1の複数の周辺ピクセルの長さは前記第1の長さと等しく、
前記第2の複数の周辺ピクセルの長さは前記第2の長さと等しく、
前記第1の点が前記第1のオーバーハング領域に含まれ、又は前記第2の点が前記第2のオーバーハング領域に含まれる、
装置。
【請求項12】
前記x切片と前記y切片を使用して前記ピクセル値を決定することが、
前記x切片における第1のピクセル値と前記y切片における第2のピクセル値との重み付けされた組合せとして前記ピクセル値を決定することを含む、請求
項11に記載の装置。
【請求項13】
前記x切片と前記y切片を使用して前記ピクセル値を決定することが、
前記x切片または前記y切片のうちの一方が負の値であるという条件で、前記x切片または前記y切片の他方を使用して前記ピクセル値を決定することを含む、請求
項11に記載の装置。
【請求項14】
前記圧縮されたビットストリームから前記焦点を復号化することが、
前記圧縮されたビットストリームから、イントラ予測モードを復号化することを含み、前記イントラ予測モードが前記焦点を示す、請求項11に記載の装置。
【請求項15】
現在のブロックを復号化するための方法であって、
周辺ピクセルを使用して前記現在のブロックの予測ピクセルの予測ブロックを取得するステップを含み、各予測ピクセルが、前記予測ブロック内のそれぞれの位置にあり、
前記予測ブロックはx軸方向の長さである第1の長さとy軸方向の長さである第2の長さとを備え、前記予測ブロックを取得するステップが、
焦点を取得するステップであって、前記焦点が座標系において座標(a,b)を有し、前記焦点が前記現在のブロックの外側にあり、前記焦点が前記周辺ピクセルのいずれでもない、ステップと、
前記予測ブロックの各位置に対して、
それぞれの予測角度を示し、前記焦点を前記各位置に接続する線を取得するステップと、
前記線を使用して前記各位置のピクセル値を決定するステップと
を含むステップを実行するステップと
圧縮されたビットストリームにおいて、前記焦点を符号化するステップと
を
含み、
前記線を使用して前記各位置の前記ピクセル値を決定するステップが、
前記線のx切片を決定するステップであって、前記現在のブロックの左の周辺ピクセルである第1の複数の周辺ピクセルを備えるx軸において、前記x切片は、前記第1の複数の周辺ピクセルと、x軸方向の追加の領域である第1のオーバーハング領域とが構成する第1の周辺ピクセル線と、前記線とが交差する第1の点である、決定するステップと、
前記線のy切片を決定するステップであって、前記現在のブロックの上部周辺ピクセルである第2の複数の周辺ピクセルを備えるy軸において、前記y切片は、前記第2の複数の周辺ピクセルと、y軸方向の追加の領域である第2のオーバーハング領域とが構成する第2の周辺ピクセル線と、前記線とが交差する第2の点である、決定するステップと、
前記x切片又は前記y切片の少なくとも1つを使用して前記ピクセル値を決定するステップと
を含み、
前記第1の複数の周辺ピクセルの長さは前記第1の長さと等しく、
前記第2の複数の周辺ピクセルの長さは前記第2の長さと等しく、
前記第1の点が前記第1のオーバーハング領域に含まれ、又は前記第2の点が前記第2のオーバーハング領域に含まれる
方法。
【請求項16】
前記圧縮されたビットストリームにおいて、前記焦点を符号化するステップが、
前記圧縮されたビットストリームにおいて、前記焦点を示すイントラ予測モードを符号化するステップを含む、請求
項15に記載の方法。
【請求項17】
前記焦点を取得するステップが、
複数の候補焦点から前記焦点を選択するステップを含む、請求
項15に記載の方法。
【請求項18】
前記複数の候補焦点が候補焦点のグループに分割され、候補焦点の各グループが、それぞれの円の円周上に配置される、請求
項17に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本出願は、2020年2月13日に出願された米国仮特許出願第62/976,001号の優先権および利益を主張し、その開示全体が参照により本明細書に組み込まれる。
【背景技術】
【0002】
デジタルビデオストリームは、フレームのシーケンスまたは静止画像を使用してビデオを表す場合がある。デジタルビデオは、たとえば、ビデオ会議、高解像度ビデオエンターテインメント、ビデオ広告、またはユーザ生成ビデオの共有などを含む、様々なアプリケーションに使用することができる。デジタルビデオストリームは、大量のデータを含み、ビデオデータの処理、送信、または記憶のために、コンピューティングデバイスの大量のコンピューティングまたは通信リソースを消費する可能性がある。ビデオストリーム内のデータ量を削減するために、圧縮および他の符号化技法を含む、様々な手法が提案されている。
【0003】
空間的類似性に基づく符号化は、フレームまたは画像を、同じフレームまたは画像内の他のブロックに基づいて予測されるブロックに分割することによって実行することができる。ブロックと予測ブロックとの差(すなわち、残余誤差)は圧縮され、ビットストリームに符号化される。デコーダは、フレームまたは画像を再構築するために、差分フレームおよび参照フレームを使用する。
【発明の概要】
【課題を解決するための手段】
【0004】
本明細書に開示されるのは、イントラ予測を使用してブロックを符号化および復号化するための態様、特徴、要素、および実装形態である。
【0005】
第1の態様は、イントラ予測モードを使用して現在のブロックをコーディングするための方法である。本方法は、焦点を取得するステップであって、焦点が座標系において座標(a,b)を有する、ステップと、第1の周辺ピクセルおよび第2の周辺ピクセルを使用して、現在のブロックの予測ブロックを生成するステップであって、第1の周辺ピクセルが、x軸を構成する第1の周辺ピクセル線を形成することと、第2の周辺ピクセルが、y軸を構成する第2の周辺ピクセル線を形成することと、第1の周辺ピクセル線と第2の周辺ピクセル線が、原点を有する座標系を形成することとを行う、ステップと、現在のブロックと予測ブロックとの差に対応する残余ブロックをコーディングするステップとを含む。予測ブロックを生成するステップは、予測ブロックの位置(i,j)における予測ブロックの各位置に対して、x切片またはy切片のうちの少なくとも1つを決定するステップであって、x切片が、予測ブロックの各位置を中心とする点と焦点とによって形成される線が第1の周辺ピクセル線と交差する第1の点であり、y切片が、予測ブロックの各位置を中心とする点と焦点によって形成される線が第2の周辺ピクセル線と交差する第2の点である、ステップと、x切片またはy切片のうちの少なくとも1つを使用して、予測ブロックの各位置の予測ピクセル値を決定するステップとを含む。
【0006】
別の態様は、現在のブロックを復号化するための装置である。本装置は、メモリおよびプロセッサを含む。プロセッサは、圧縮されたビットストリームから焦点を復号化することと、現在のブロックの予測ピクセルの予測ブロックを取得することであって、各予測ピクセルが、予測ブロック内のそれぞれの位置にある、取得することと、予測ブロックを使用して現在のブロックを再構築することとを行うために、メモリに記憶された命令を実行するように構成されている。予測ブロックを取得することは、予測ブロックの各位置に対して、それぞれの予測角度を示し、焦点を各位置に接続する線を取得するための命令を実行することと、線を使用して、各位置に対するピクセル値を決定することとを含む。
【0007】
別の態様は、現在のブロックを復号化するための方法である。本方法は、周辺ピクセルを使用して現在のブロックの予測ピクセルの予測ブロックを取得するステップであって、各予測ピクセルが、予測ブロック内のそれぞれの位置にある、ステップと、圧縮されたビットストリームにおいて、焦点を符号化するステップとを含む。予測ブロックを取得するステップが、焦点を取得するステップであって、焦点が座標系において座標(a,b)を有し、焦点が現在のブロックの外側にあり、焦点が周辺ピクセルのいずれでもない、ステップと、予測ブロックの各位置に対して、それぞれの予測角度を示す線を取得するステップであって、線が焦点を各位置に接続する、ステップと、線を使用して各位置に対するピクセル値を決定するステップとを含む実行するステップとを含む。
【0008】
態様は、任意の便利な形式で実装できることが理解されよう。たとえば、態様は、有形のキャリア媒体(たとえば、ディスク)または無形のキャリア媒体(たとえば、通信信号)であり得る適切なキャリア媒体上で運ばれ得る適切なコンピュータプログラムによって実装され得る。態様はまた、方法を実装するように配置されたコンピュータプログラムを実行するプログラム可能なコンピュータの形をとることができる適切な装置を使用して実装することができる。ある態様の文脈において記述された機能を別の態様において実装できるように、態様を組み合わせることができる。
【0009】
本明細書の説明は、添付の図面を参照しており、同様の参照番号は、いくつかの図面を通して同様の部品を指す。
【図面の簡単な説明】
【0010】
【
図1】ビデオ符号化および復号化システムの概略図である。
【
図2】送信局または受信局を実装することができるコンピューティングデバイスの例のブロック図である。
【
図3】符号化され、続いて復号化されるビデオストリームの図である。
【
図4】本開示の実装形態によるエンコーダのブロック図である。
【
図5】本開示の実装形態によるデコーダのブロック図である。
【
図6】本開示の実装形態によるフレームの一部の表現のブロック図である。
【
図8】鉄道線路を含む画像部分の例を示す図である。
【
図9】本開示の実装形態による、予測ピクセル値を決定するための周辺ピクセル線に沿った位置を決定するための技法のフローチャートの例を示す図である。
【
図10】本開示の実装形態による、
図9の技法によって計算された位置の例を示す図である。
【
図11】
図10の例から計算された予測ブロックの例を示す図である。
【
図12】本開示の実装形態による、現在のブロックのイントラ予測のための技法のフローチャート図である。
【
図13】本開示の実装形態による、イントラ予測を使用して現在のブロックの予測ブロックを生成する技法のフローチャート図である。
【
図14】本開示の実装形態による、イントラ予測モードを使用して現在のブロックをコーディングするための技法のフローチャート図である。
【
図15】本開示の実装形態による焦点を示す例1500を示す図である。
【
図16】本開示の実装形態による、x切片およびy切片を示す例を示す図である。
【
図17】本開示の実装形態による、焦点のグループの例を示す図である。
【
図18】本開示の実装形態による、予測ピクセル値を決定するための周辺ピクセル線に沿った位置を決定するための技法のフローチャートの例を示す図である。
【
図19】本開示の実装形態による、イントラ予測を使用して現在のブロックの予測ブロックを生成する技法のフローチャート図である。
【
図21】上の周辺ピクセルがプライマリ周辺ピクセルとして使用される場合の、
図19の技法の例を示す図である。
【発明を実施するための形態】
【0011】
上記のように、ビデオストリームのコーディングに関連する圧縮スキームは、画像をブロックに分割することと、出力ビットストリームに含まれる情報を制限するために1つまたは複数の技法を使用してデジタルビデオ出力ビットストリーム(すなわち、符号化ビットストリーム)を生成することとを含み得る。限られた情報からブロックおよびソース画像を再作成するために、受信したビットストリームを復号化することができる。ビデオストリーム、またはフレームまたはブロックなどのその一部を符号化することは、コーディング効率を改善するためにビデオストリームにおいて空間的類似性を使用することを含むことができる。たとえば、ビデオストリームの現在のブロックは、以前にコーディングされたピクセル値の間、または以前にコーディングされたピクセル値の組合せと現在のブロック内のものとの間の差(残余)を識別することに基づいて符号化され得る。
【0012】
空間的類似性を使用した符号化は、イントラ予測として知られている。イントラ予測は、現在のブロックの周辺のピクセルを使用して、すなわち、現在のブロックと同じフレーム内にあるが、現在のブロックの外側にあるピクセルを使用して、ビデオストリームのフレーム(すなわち、画像、ピクチャ)の現在のブロックまたは単一の画像のピクセル値を予測しようとする。イントラ予測は、本明細書では予測角度と呼ばれる予測の方向に沿って実行することができ、各方向はイントラ予測モードに対応することができる。イントラ予測モードは、予測されている現在のブロックの周辺のピクセルを使用する。現在のブロックの周辺のピクセルは、現在のブロックの外側のピクセルである。イントラ予測モードは、エンコーダによってデコーダに信号を送ることができる。
【0013】
多くの異なるイントラ予測モードをサポートすることができる。いくつかのイントラ予測モードは、周辺ピクセルのうちの少なくとも1つを使用して生成された予測ブロック内のすべてのピクセルに単一の値を使用する。他は方向性イントラ予測モードと呼ばれ、それぞれが対応する予測角度を有する。イントラ予測モードは、たとえば、水平イントラ予測モード、垂直イントラ予測モード、および他の様々な方向性イントラ予測モードを含むことができる。たとえば、コーデックは、50~60の予測角度に対応する利用可能な予測モードを有することができる。イントラ予測モードの例は、
図7に関して説明されている。
【0014】
しかしながら、上記および
図7に関して説明されたものなどの現在のコーデックのイントラ予測モードは、平行線を含む画像またはシーンのブロックを最適にコーディングできない場合がある。知られているように、シーン(たとえば、画像)の透視画法、または画像が平行線を含む角度で見られるものは、1つまたは複数の消失点を有することができる。すなわち、平行線は、消失点(または、焦点)に収束している(または、そこから分岐している)と認識(すなわち、見られる)することができる。平行線または市松模様を含む画像の非限定的な例は、縞模様のシャツ、建物のレンガ、ブラインド、電車の線路、羽目板張りの木製フローリング、太陽光線、木の幹などを含む。説明を容易にするために、本明細書では平行線が使用されているが、本開示はそのように限定されない。たとえば、本明細書の開示は、平行なエッジ(点から点まで画像が取られる画像内の鉛筆のエッジなど)と共に使用することができる。また、本開示は直線に限定されない。以下で説明するパラメータは、予測線の曲線をカバーするために使用することができる。
【0015】
そのようなパターンは、視覚的に容易に認識することができる。しかしながら、そのようなパターンは、90度の角度以外の視点から見た場合、プログラムで識別して符号化することが非常に困難になる可能性がある。すでに述べたように、平行線は、
図8に関して説明したように、距離内のある点に到達するように見えることができ、
図8は、収束する鉄道線路を示している。
【0016】
いくつかのイントラ予測モードには方向を関連付けることができるが、予測ブロックの予測ピクセルの各々を生成するために、その同じ方向を使用することができる。しかしながら、収束線(
図8の鉄道線路など)に関して、線の各々は異なる方向を有することができる。したがって、特異方向のイントラ予測モードは、現在のブロックをコーディングするための最適な予測ブロックを生成しない場合がある。最適な予測ブロックは、予測ブロックと符号化されている現在のブロックとの間の残余誤差を最小化する予測ブロックを意味する。
【0017】
本開示による実装形態は、収束線を含むブロックをコーディングするために使用することができる新奇なイントラ予測モードを使用する。上に示したように、イントラ予測モードは、現在のブロックの周辺のピクセルを使用する。高レベルでは、本開示の実装形態に従ってイントラ予測モードを使用して生成される予測ブロックは、予測ブロックの行の1つのピクセルを1つの方向に沿って1つまたは複数の周辺ピクセルからコピーすることができ、予測ブロックの同じ行の別のピクセルを別の方向に沿って1つまたは複数の他の周辺ピクセルからコピーすることができるようなものであり得る。さらに、ズーミング(インまたはアウト)は、以下でさらに説明するように、任意で、イントラ予測モードのパラメータに従って適用することができる。
【0018】
いくつかの実施形態では、本開示のイントラ予測モードに従って予測ブロックを生成するために、イントラ予測において通常使用される同じ周辺ピクセルのセット(すなわち、上および/または左の周辺ピクセル)は、予測ブロックのピクセル(すなわち、ピクセル位置)ごとに何度もリサンプリングされる。周辺ピクセルは、ピクセル値の連続線として扱われ、参照を容易にするために、本明細書では周辺ピクセル線と呼ばれる。予測ブロックの予測ピクセルを生成するために、周辺ピクセル線の様々な位置が考慮される。しかしながら、位置が考慮されるたびに、以下でさらに説明するように、位置は、イントラ予測モードのパラメータに従って直前の位置からシフトされる。周辺ピクセル線のピクセル位置のうち、整数位置のピクセル値、すなわち周辺ピクセル自体のみが知られている点に留意されたい。したがって、周辺ピクセル線のサブピクセル(すなわち、非整数ピクセル)値は、たとえば、補間またはフィルタリング動作を使用して、周辺ピクセルから取得される。
【0019】
他の実施形態では、初期予測ブロックを生成するために、方向予測モードを使用することができる。次いで、予測ブロックを生成するために、ワープ(たとえば、ワーピング関数、ワーピングパラメータのセットなど)を初期予測ブロックに適用することができる。一例では、ワープは遠近法ワープである可能性がある。一例では、ワープはアフィンワープである可能性がある。
【0020】
さらに他の実施形態では、本開示によるイントラ予測モードは、現在のブロックから離れたところにある焦点を使用することができる。焦点は、現在のブロックのすべてのピクセルが発散または収束する空間内の点とみなすことができる。予測ブロックの各予測ピクセル位置に対して、ピクセル位置を焦点に接続する線が引かれる。左の周辺ピクセルおよび上の周辺ピクセルによって形成される座標系のx軸とy軸を線が横切る場所のx切片とy切片が決定される。x切片とy切片は、予測ピクセルの値を計算するために使用される周辺ピクセルを決定(たとえば、識別、選択、計算など)するために使用される。
【0021】
要約すると、予測ブロックのすべてのピクセルについて、
図7に関して説明されたもののような方向予測モードは、平行予測線をもたらす。しかしながら、本開示の実装形態によるイントラ予測モードは、非平行予測線をもたらす。したがって、少なくとも2つの予測ピクセルは、異なる予測角度に従って計算することができる。
【0022】
本開示によるイントラ予測モードは、予測ピクセルの各々が同じ予測角度に従って計算される従来の方向予測モードの設計およびセマンティクスと比較して、単なる偶然によるものである、平行予測線(すなわち、同じ予測角度)を使用して導出される(たとえば、計算される)2つ以上の予測ピクセルをもたらす可能性がある。たとえば、焦点の位置に応じて、複数の予測ピクセルが同じ予測角度を有することができるが、本開示の実装形態によるイントラ予測モードは、すべての予測ピクセルが同じ予測角度を有することができるわけではないようなものである。
【0023】
本明細書に開示される画像およびビデオ圧縮のイントラ予測が実装され得る環境を最初に説明した後、詳細が本明細書に記載される。本開示によるイントラ予測モードは、ビデオエンコーダおよびビデオデコーダに関して説明されているが、イントラ予測モードはまた、画像コーデックにおいて使用することができる。画像コーデックは、本明細書で説明するビデオコーデックの多くの態様であることができるか、または共有することができる。
【0024】
図1は、ビデオ符号化および復号化システム100の概略図である。送信局102は、たとえば、
図2に記載されているようなハードウェアの内部構成を有するコンピュータであり得る。しかしながら、送信局102の他の適切な実装形態が可能である。たとえば、送信局102の処理は、複数のデバイスに分散させることができる。
【0025】
ネットワーク104は、ビデオストリームの符号化および復号化のために送信局102と受信局106を接続することができる。具体的には、ビデオストリームは送信局102において符号化することができ、符号化されたビデオストリームは受信局106において復号化することができる。ネットワーク104は、たとえば、インターネットであり得る。ネットワーク104はまた、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、仮想プライベートネットワーク(VPN)、セルラー電話ネットワーク、または、送信局102から、この例では受信局106にビデオストリームを転送する任意の他の手段であり得る。
【0026】
一例では、受信局106は、
図2に記載されているようなハードウェアの内部構成を有するコンピュータであり得る。しかしながら、受信局106の他の適切な実装形態が可能である。たとえば、受信局106の処理は、複数のデバイスに分散させることができる。
【0027】
ビデオ符号化および復号化システム100の他の実装形態が可能である。たとえば、実装形態は、ネットワーク104を省略することができる。別の実装形態では、ビデオストリームを符号化し、次いで、後で受信局106またはメモリを有する任意の他のデバイスに送信するために記憶することができる。一実装形態では、受信局106は、(たとえば、ネットワーク104、コンピュータバス、および/または何らかの通信経路を介して)符号化されたビデオストリームを受信し、後で復号化するためにビデオストリームを記憶する。例示的な実装形態では、リアルタイムトランスポートプロトコル(RTP)が、ネットワーク104を介した符号化されたビデオの送信のために使用される。別の実装形態では、RTP以外のトランスポートプロトコル、たとえば、ハイパーテキスト転送プロトコル(HTTP)ベースのビデオストリーミングプロトコルが使用され得る。
【0028】
ビデオ会議システムにおいて使用される場合、たとえば、送信局102および/または受信局106は、以下に説明するように、ビデオストリームを符号化する能力と復号化する能力との両方を含み得る。たとえば、受信局106は、復号化および表示するためにビデオ会議サーバ(たとえば、送信局102)から符号化されたビデオビットストリームを受信し、他の参加者によって復号化および表示されるように、それ自体のビデオビットストリームをさらに符号化してビデオ会議サーバに送信するビデオ会議参加者であり得る。
【0029】
図2は、送信局または受信局を実装することができるコンピューティングデバイス200の例のブロック図である。たとえば、コンピューティングデバイス200は、
図1の送信局102および受信局106の一方または両方を実装することができる。コンピューティングデバイス200は、複数のコンピューティングデバイスを含むコンピューティングシステムの形態、または単一のコンピューティングデバイス、たとえば、モバイル電話、タブレットコンピュータ、ラップトップコンピュータ、ノートブックコンピュータ、デスクトップコンピュータなどの形態であり得る。
【0030】
コンピューティングデバイス200内のCPU202は、中央処理装置であり得る。あるいは、CPU202は、現在存在する、または今後開発される、情報を操作または処理することができる任意の他のタイプのデバイス、または複数のデバイスであり得る。開示された実装形態は、図示されるように単一のプロセッサ、たとえば、CPU202を用いて実施することができるが、速度および効率における利点は、複数のプロセッサを使用して達成することができる。
【0031】
コンピューティングデバイス200内のメモリ204は、実装形態において、読取り専用メモリ(ROM)デバイスまたはランダムアクセスメモリ(RAM)デバイスであり得る。他の適切なタイプのストレージデバイスをメモリ204として使用することができる。メモリ204は、バス212を使用してCPU202によってアクセスされるコードおよびデータ206を含むことができる。メモリ204は、オペレーティングシステム208およびアプリケーションプログラム210をさらに含むことができ、アプリケーションプログラム210は、CPU202が本明細書で説明される方法を実行することを可能にする少なくとも1つのプログラムを含む。たとえば、アプリケーションプログラム210は、アプリケーション1からNを含むことができ、アプリケーション1からNは、本明細書で説明される方法を実行するビデオコーディングアプリケーションをさらに含む。コンピューティングデバイス200はまた、たとえば、移動可能なコンピューティングデバイス200と共に使用されるメモリカードであり得るセカンダリストレージ214を含むことができる。ビデオ通信セッションは、かなりの量の情報を含み得るので、それらは、全体的または部分的にセカンダリストレージ214に記憶され、処理のために必要に応じてメモリ204にロードされ得る。
【0032】
コンピューティングデバイス200はまた、ディスプレイ218などの1つまたは複数の出力デバイスを含むことができる。ディスプレイ218は、一例では、タッチ入力を感知するように動作可能なタッチセンシティブ要素とディスプレイを組み合わせるタッチセンシティブディスプレイであり得る。ディスプレイ218は、バス212を介してCPU202に結合することができる。ユーザがコンピューティングデバイス200をプログラムまたは他の方法で使用することを可能にする他の出力デバイスを、ディスプレイ218に加えて、またはその代替として提供することができる。出力デバイスがディスプレイであるか、ディスプレイを含む場合、ディスプレイは、液晶ディスプレイ(LCD)、陰極線管(CRT)ディスプレイ、または有機LED(OLED)ディスプレイなどの発光ダイオード(LED)ディスプレイを含む、様々な方法で実装することができる。
【0033】
コンピューティングデバイス200はまた、画像感知デバイス220、たとえば、カメラ、またはコンピューティングデバイス200を動作中のユーザの画像などの画像を感知することができる現在存在するまたは今後開発される任意の他の画像感知デバイス220を含むか、またはそれらと通信することができる。画像感知デバイス220は、コンピューティングデバイス200を動作中のユーザに向けられるように配置することができる。一例では、画像感知デバイス220の位置および光軸は、視野が、ディスプレイ218に直接隣接し、そこからディスプレイ218が見える領域を含むように構成することができる。
【0034】
コンピューティングデバイス200はまた、音感知デバイス222、たとえば、マイクロフォン、またはコンピューティングデバイス200の近くの音を感知することができる現在存在するまたは今後開発される任意の他の音感知デバイスを含むか、またはそれらと通信することができる。音感知デバイス222は、コンピューティングデバイス200を動作中のユーザに向けられるように配置することができ、ユーザがコンピューティングデバイス200を動作している間にユーザによって作られた音、たとえば、音声または他の発話を受信するように構成することができる。
【0035】
図2は、コンピューティングデバイス200のCPU202およびメモリ204が単一のユニットに統合されていることを示しているが、他の構成を利用することができる。CPU202の動作は、直接、あるいはローカルエリアまたは他のネットワークを介して結合することができる複数の機械(各機械は1つまたは複数のプロセッサを有する)に分散することができる。メモリ204は、ネットワークベースのメモリまたはコンピューティングデバイス200の動作を実行する複数の機械におけるメモリなどの複数の機械に分散することができる。本明細書では単一のバスとして示されているが、コンピューティングデバイス200のバス212は、複数のバスで構成することができる。さらに、セカンダリストレージ214は、コンピューティングデバイス200の他の構成要素に直接結合することができ、またはネットワークを介してアクセスすることができ、メモリカードなどの単一の統合ユニットまたは複数のメモリカードなどの複数のユニットを備えることができる。したがって、コンピューティングデバイス200は、多種多様な構成において実装することができる。
【0036】
図3は、符号化され、続いて復号化されるビデオストリーム300の例の図である。ビデオストリーム300は、ビデオシーケンス302を含む。次のレベルにおいて、ビデオシーケンス302は、いくつかの隣接するフレーム304を含む。3つのフレームが隣接するフレーム304として示されているが、ビデオシーケンス302は、任意の数の隣接するフレーム304を含むことができる。次いで、隣接するフレーム304は、個々のフレーム、たとえば、フレーム306にさらに細分することができる。次のレベルにおいて、フレーム306は、一連のセグメント308または平面に分割することができる。セグメント308は、たとえば、並列処理を可能にするフレームのサブセットであり得る。セグメント308はまた、ビデオデータを別々の色に分離することができるフレームのサブセットであり得る。たとえば、カラービデオデータのフレーム306は、輝度面および2つのクロミナンス面を含むことができる。セグメント308は、異なる解像度でサンプリングされ得る。
【0037】
フレーム306がセグメント308に分割されるかどうかにかかわらず、フレーム306は、たとえば、フレーム306内の16×16ピクセルに対応するデータを含むことができるブロック310にさらに細分され得る。ブロック310はまた、ピクセルデータの1つまたは複数のセグメント308からのデータを含むように配置することができる。ブロック310はまた、4×4ピクセル、8×8ピクセル、16×8ピクセル、8×16ピクセル、16×16ピクセル、またはそれ以上などの任意の他の適切なサイズであり得る。
【0038】
図4は、本開示の実装形態によるエンコーダ400のブロック図である。エンコーダ400は、上記のように、メモリ、たとえば、メモリ204に記憶されたコンピュータソフトウェアプログラムを提供することなどによって、送信局102に実装することができる。コンピュータソフトウェアプログラムは、CPU202などのプロセッサによって実行されると、送信局102に本明細書で説明される方法でビデオデータを符号化させる機械命令を含むことができる。エンコーダ400はまた、たとえば、送信局102に含まれる特殊なハードウェアとして実装することができる。エンコーダ400は、順方向パス(実線の接続線によって示される)において様々な機能を実行して、ビデオストリーム300を入力として使用して符号化または圧縮されたビットストリーム420を生成するための次の段階を有する:イントラ/インター予測段階402、変換段階404、量子化段階406、およびエントロピ符号化段階408。エンコーダ400はまた、将来のブロックの符号化のためにフレームを再構築するための再構築パス(点線の接続線によって示される)を含み得る。
図4において、エンコーダ400は、再構築パスにおいて様々な機能を実行するための次の段階を有する:逆量子化段階410、逆変換段階412、再構築段階414、およびループフィルタリング段階416。ビデオストリーム300を符号化するために、エンコーダ400の他の構造的変形を使用することができる。
【0039】
ビデオストリーム300が符号化のために提示されるとき、フレーム306は、ブロックの単位で処理され得る。イントラ/インター予測段階402において、ブロックは、イントラフレーム予測(イントラ予測とも呼ばれる)またはインターフレーム予測(インター予測とも呼ばれる)、または両方の組合せを使用して符号化することができる。いずれの場合も、予測ブロックを形成することができる。イントラ予測の場合、予測ブロックの全部または一部は、以前に符号化および再構築された現在のフレーム内のサンプルから形成され得る。インター予測の場合、予測ブロックの全部または一部は、モーションベクトルを使用して決定された1つまたは複数の以前に構築された参照フレーム内のサンプルから形成され得る。
【0040】
次に、依然として
図4を参照すると、予測ブロックは、残余ブロック(残余とも呼ばれる)を生成するために、イントラ/インター予測段階402において現在のブロックから差し引かれ得る。変換段階404は、たとえば、ブロックベースの変換を使用して、残余を周波数領域における変換係数に変換する。そのようなブロックベースの変換は、たとえば、離散コサイン変換(DCT)および非対称離散サイン変換(ADST)を含む。他のブロックベースの変換も可能である。さらに、異なる変換の組合せが単一の残余に適用され得る。変換の適用の一例では、DCTは、残余ブロックを、変換係数値が空間周波数に基づく周波数領域に変換する。行列の左上にある最低周波数(DC)係数と、行列の右下にある最高周波数係数。予測ブロックのサイズ、したがって結果の残余ブロックのサイズは、変換ブロックのサイズとは異なる場合がある点に留意されたい。たとえば、予測ブロックは、個別の変換が適用されるより小さいブロックに分割され得る。
【0041】
量子化段階406は、量子化器の値または量子化レベルを使用して、変換係数を離散量子値に変換し、これは、量子化変換係数と呼ばれる。たとえば、変換係数を量子化器の値で除算して切り捨てることができる。次いで、量子化変換係数は、エントロピ符号化段階408によってエントロピ符号化される。エントロピコーディングは、トークンツリーおよびバイナリツリーを含む様々な技法を使用して実行され得る。次いで、エントロピ符号化された係数は、たとえば、使用される予測のタイプ、変換タイプ、モーションベクトル、および量子化器の値を含み得る、ブロックを復号化するために使用される他の情報と共に、圧縮されたビットストリーム420に出力される。ブロックを復号化するための情報は、圧縮されたビットストリーム420内のブロック、フレーム、スライス、および/またはセクションヘッダにコーディングされたエントロピであり得る。圧縮されたビットストリーム420はまた、符号化されたビデオストリームまたは符号化されたビデオビットストリームと呼ばれることがあり、これらの用語は、本明細書では交換可能に使用される。
【0042】
図4における再構築パス(点線の接続線によって示される)は、エンコーダ400およびデコーダ500(以下で説明される)の両方が、圧縮されたビットストリーム420を復号化するために同じ参照フレームおよびブロックを使用することを確実にするために使用することができる。再構築パスは、以下でより詳しく説明される復号化プロセス中に行われる機能と同様の機能を実行し、これは、逆量子化段階410における量子化変換係数を逆量子化すること、および微分残余ブロック(微分残余とも呼ばれる)を生成するために、逆変換段階412において逆量子化変換係数を逆変換することを含む。再構築段階414において、再構築されたブロックを作成するために、イントラ/インター予測段階402において予測された予測ブロックを微分残余に追加することができる。ループフィルタリング段階416は、ブロッキングアーティファクトなどの歪みを低減するために、再構築されたブロックに適用することができる。
【0043】
エンコーダ400の他の変形は、圧縮されたビットストリーム420を符号化するために使用することができる。たとえば、非変換ベースのエンコーダ400は、特定のブロックまたはフレームについて、変換段階404なしで残余信号を直接量子化することができる。別の実装形態では、エンコーダ400は、量子化段階406および逆量子化段階410を単一の段階に結合することができる。
【0044】
図5は、本開示の実装形態によるデコーダ500のブロック図である。デコーダ500は、たとえば、メモリ204に記憶されたコンピュータソフトウェアプログラムを提供することによって、受信局106に実装することができる。コンピュータソフトウェアプログラムは、CPU202などのプロセッサによって実行されると、受信局106に本明細書で説明される方法でビデオデータを復号化させる機械命令を含むことができる。デコーダ500はまた、たとえば、送信局102または受信局106に含まれるハードウェアに実装することができる。上で論じたエンコーダ400の再構築パスと同様に、デコーダ500は、一例では、圧縮されたビットストリーム420から出力ビデオストリーム516を生成するための様々な機能を実行するための次の段階を含む:エントロピ復号化段階502、逆量子化段階504、逆変換段階506、イントラ/インター予測段階508、再構築段階510、ループフィルタリング段階512、およびデブロッキングフィルタリング段階514。圧縮されたビットストリーム420を復号化するために、デコーダ500の他の構造的変形を使用することができる。
【0045】
圧縮されたビットストリーム420が復号化のために提示されるとき、圧縮されたビットストリーム420内のデータ要素は、量子化変換係数のセットを生成するために、エントロピ復号化段階502によって復号化することができる。逆量子化段階504は、量子化変換係数を(たとえば、量子化変換係数を量子化器の値で乗算することによって)逆量子化し、逆変換段階506は、エンコーダ400において逆変換段階412によって作成されたものと同一であり得る微分残余を生成するために、選択された変換タイプを使用して逆量子化変換係数を逆変換する。圧縮されたビットストリーム420から復号化されたヘッダ情報を使用して、デコーダ500は、たとえば、イントラ/インター予測段階402において、エンコーダ400において作成されたものと同じ予測ブロックを作成するために、イントラ/インター予測段階508を使用することができる。再構築段階510において、再構築されたブロックを作成するために、予測ブロックを微分残余に追加することができる。ブロッキングアーティファクトを減らすために、ループフィルタリング段階512を再構築されたブロックに適用することができる。再構築されたブロックに、他のフィルタリングを適用することができる。この例では、ブロッキング歪みを低減するために、デブロッキングフィルタリング段階514が再構築されたブロックに適用され、結果は出力ビデオストリーム516として出力される。出力ビデオストリーム516はまた、復号化されたビデオストリームと呼ばれることがあり、これらの用語は、本明細書では交換可能に使用される。
【0046】
デコーダ500の他の変形は、圧縮されたビットストリーム420を復号化するために使用することができる。たとえば、デコーダ500は、デブロッキングフィルタリング段階514なしで出力ビデオストリーム516を生成することができる。デコーダ500のいくつかの実装形態では、デブロッキングフィルタリング段階514は、ループフィルタリング段階512の前に適用される。さらに、または代わりに、エンコーダ400は、ループフィルタリング段階416に加えて、デブロッキングフィルタリング段階を含む。
【0047】
図6は、本開示の実装形態による、
図3のフレーム306などの、フレームの部分600の表現のブロック図である。図示されるように、フレームの部分600は、行列またはデカルト平面の2つの行および2つの列に、スーパーブロックと呼ばれ得る4つの64×64ブロック610を含む。スーパーブロックのサイズは大きくても小さくてもよい。
図6は、サイズ64×64のスーパーブロックに関して説明されているが、説明は、より大きい(たとえば、128×128)またはより小さいスーパーブロックサイズに容易に拡張可能である。
【0048】
一例では、一般性を失うことなく、スーパーブロックは基本または最大コーディングユニット(CU)にすることができる。各スーパーブロックは、4つの32×32ブロック620を含むことができる。各32×32ブロック620は、4つの16×16ブロック630を含むことができる。各16×16ブロック630は、4つの8×8ブロック640を含むことができる。各8×8ブロック640は、4つの4×4ブロック650を含むことができる。各4×4ブロック650は、16ピクセルを含むことができ、これは、デカルト平面または行列におけるそれぞれのブロックにおいて、4行および4列で表すことができる。ピクセルは、輝度情報、色情報、および位置情報など、フレームにおいてキャプチャされた画像を表す情報を含むことができる。一例では、図示されるような16×16ピクセルブロックなどのブロックは、輝度ピクセル662を含むことができる輝度ブロック660と、UまたはCbクロミナンスブロック670、およびVまたはCrクロミナンスブロック680などの2つのクロミナンスブロック670/680とを含むことができる。クロミナンスブロック670/680は、クロミナンスピクセル690を含むことができる。たとえば、輝度ブロック660は、16×16の輝度ピクセル662を含むことができ、各クロミナンスブロック670/680は、図示されるように、8×8クロミナンスピクセル690を含むことができる。ブロックの1つの配置が示されているが、任意の配置を使用することができる。
図6は、N×Nブロックを示しているが、いくつかの実装形態では、N≠MであるN×Mブロックを使用することができる。たとえば、32×64ブロック、64×32ブロック、16×32ブロック、32×16ブロック、または任意の他のサイズのブロックを使用することができる。いくつかの実装形態では、N×2Nブロック、2N×Nブロック、またはそれらの組合せを使用することができる。
【0049】
いくつかの実装形態では、ビデオコーディングは、順序付けられたブロックレベルのコーディングを含むことができる。順序付けられたブロックレベルのコーディングは、ラスタスキャン順序などの順序でフレームのブロックをコーディングすることを含むことができ、ブロックは、フレームの左上隅のブロック、またはフレームの一部から開始して識別および処理することができ、そして、行に沿って左から右へ、そして一番上の行から一番下の行へと進み、処理のために各ブロックを順番に識別する。たとえば、フレームの一番上の行および左の列におけるスーパーブロックがコーディングされた第1のブロックであり得、第1のブロックのすぐ右にあるスーパーブロックがコーディングされた第2のブロックであり得る。上から2番目の行は、コーディングされた第2の行であり得、これにより、第2の行の左の列におけるスーパーブロックを、第1の行の右端の列におけるスーパーブロックの後にコーディングすることができる。
【0050】
一例では、ブロックのコーディングは、クアッドツリーコーディングの使用を含むことができ、これは、ラスタスキャン順序でブロックを用いて、より小さいブロックユニットをコーディングすることを含むことができる。
図6に示されるフレーム部分の左下隅に示される64×64スーパーブロックは、たとえば、クアッドツリーコーディングを使用してコーディングすることができ、そこでは、左上の32×32ブロックをコーディングすることができ、次いで右上の32×32ブロックをコーディングすることができ、次いで左下の32×32ブロックをコーディングすることができ、次いで右下の32×32ブロックをコーディングすることができる。各32×32ブロックは、クアッドツリーコーディングを使用してコーディングすることができ、そこでは、左上の16×16ブロックをコーディングすることができ、次いで右上の16×16ブロックをコーディングすることができ、次いで左下の16×16ブロックをコーディングすることができ、次いで右下の16×16ブロックをコーディングすることができる。各16×16ブロックは、クアッドツリーコーディングを使用してコーディングすることができ、そこでは、左上の8×8ブロックをコーディングすることができ、次いで右上の8×8ブロックをコーディングすることができ、次いで左下の8×8ブロックをコーディングすることができ、次いで、右下の8×8ブロックをコーディングすることができる。各8×8ブロックは、クアッドツリーコーディングを使用してコーディングすることができ、そこでは、左上の4×4ブロックをコーディングすることができ、次いで右上の4×4ブロックをコーディングすることができ、次いで左下の4×4ブロックをコーディングすることができ、次いで右下の4×4ブロックをコーディングすることができる。いくつかの実装形態では、16×16ブロックの場合は8×8ブロックを省略することができ、16×16ブロックは、クアッドツリーコーディングを使用してコーディングすることができ、そこでは、左上の4×4ブロックをコーディングすることができ、次いで16×16ブロックにおける他の4×4ブロックをラスタスキャン順序でコーディングすることができる。
【0051】
一例では、ビデオコーディングは、対応する符号化されたフレームから元のフレームの情報のうちの一部を省略することによって、元のフレームまたは入力フレームに含まれる情報を圧縮することを含むことができる。たとえば、コーディングは、スペクトル冗長性の低減、空間冗長性の低減、時間冗長性の低減、またはそれらの組合せを含むことができる。
【0052】
一例では、スペクトル冗長性の低減は、輝度成分(Y)と2つのクロミナンス成分(UとVまたはCbとCr)に基づく色モデルの使用を含むことができ、これは、YUVまたはYCbCr色モデルまたは色空間と呼ばれ得る。YUV色モデルを使用することは、フレームの一部の輝度成分を表すために比較的大量の情報を使用すること、およびフレームの部分に対応する各クロミナンス成分を表すために比較的少量の情報を使用することを含むことができる。たとえば、フレームの一部は、16×16のピクセルのブロックを含むことができる高解像度の輝度成分と、2つのより低解像度のクロミナンス成分で表すことができ、それらの各々は、フレームの一部を8×8のブロックのピクセルとして表す。ピクセルは、値(たとえば、0から255までの範囲の値)を示すことができ、たとえば、8ビットを使用して記憶または送信することができる。本開示は、YUV色モデルを参照して説明されているが、任意の色モデルを使用することができる。
【0053】
空間冗長性の低減は、上記のようにブロックを周波数領域に変換することを含むことができる。たとえば、
図4のエントロピ符号化段階408などのエンコーダのユニットは、空間周波数に基づく変換係数値を使用してDCTを実行することができる。
【0054】
時間的冗長性の低減は、ビデオストリームの以前に符号化、復号化、および再構築されたフレームであり得る1つまたは複数の参照フレームに基づく比較的少量のデータを使用してフレームを符号化するために、フレーム間の類似性を使用することを含むことができる。たとえば、現在のフレームのブロックまたはピクセルは、参照フレームの空間的に対応するブロックまたはピクセルに類似している可能性がある。現在のフレームのブロックまたはピクセルは、異なる空間位置にある参照フレームのブロックまたはピクセルに類似している可能性がある。したがって、時間的冗長性を低減することは、空間的差異を示すモーション情報(たとえば、現在のフレーム内のブロックまたはピクセルの位置と、参照フレーム内のブロックまたはピクセルの対応する位置との間の変換)を生成することを含むことができる。
【0055】
時間的冗長性を低減することは、現在のブロックまたは現在のフレームのピクセルに対応する、参照フレーム内のブロックまたはピクセル、あるいは参照フレームの一部を識別することを含むことができる。たとえば、メモリに記憶することができる参照フレームまたは参照フレームの一部は、現在のフレームの現在のブロックまたはピクセルを符号化するために使用するために最適なブロックまたはピクセルを検索することができる。たとえば、検索は、参照ブロックと現在のブロックとの間のピクセル値の差が最小化される参照フレームのブロックを識別し得、モーション検索と呼ばれることがある。検索される参照フレームの部分を制限することができる。たとえば、検索領域と呼ばれることができる検索された参照フレームの部分は、参照フレームの限られた数の行を含むことができる。一例では、参照ブロックを識別することは、検索領域内のブロックのピクセルと現在のブロックのピクセルとの間の絶対差の合計(SAD)などのコスト関数を計算することを含むことができる。
【0056】
上記のように、現在のブロックは、イントラ予測を使用して予測することができる。イントラ予測モードは、予測されている現在のブロックの周辺のピクセルを使用する。現在のブロックの周辺のピクセルは、現在のブロックの外側のピクセルである。多くの異なるイントラ予測モードを利用することができる。
図7は、イントラ予測モードの例を示す図である。
【0057】
いくつかのイントラ予測モードは、周辺ピクセルのうちの少なくとも1つを使用して生成された予測ブロック内のすべてのピクセルに単一の値を使用する。例として、VP9コーデックは、トゥルーモーション(TM_PRED)モードと呼ばれるイントラ予測モードを含み、このモードでは、予測ブロックのすべての値は、すべてのxおよびyに対して予測されたピクセル(x,y)=(上隣+左隣-左上隣)の値を有する。別の例として、DCイントラ予測モード(DC_PRED)は、予測ブロックの各ピクセルが、予測されたピクセル(x,y)=一番上の行と左の列全体の平均値に設定されるようなものである。
【0058】
方向性イントラ予測モードと呼ばれることがある他のイントラ予測モードは、それぞれが対応する予測角度を有することができるようなものである。
【0059】
イントラ予測モードは、レート歪みループの一部としてエンコーダによって選択され得る。簡単に言えば、所与のレートで歪みが最小になる予測のタイプ、または使用される予測のタイプを示すためにビットストリームに含まれるオーバーヘッドビットを含む符号化されたビデオビットストリームにおいて送信されるビット数を決定するために、様々なイントラ予測モードをテストし得る。
【0060】
コーデックの例では、次の13のイントラ予測モードを使用することができる:DC_PRED、V_PRED、H_PRED、D45_PRED、D135_PRED、D117_PRED、D153_PRED、D207_PRED、D63_PRED、SMOOTH_PRED、SMOOTH_V_PRED、およびSMOOTH_H_PRED、ならびにPAETH_PRED。輝度ブロックを予測するために、13のイントラ予測モードのうちの1つを使用することができる。
【0061】
イントラ予測モード710は、V_PREDイントラ予測モードを示しており、これは、一般に、垂直イントラ予測モードと呼ばれている。このモードでは、第1の列における予測ブロックピクセルは周辺ピクセルAの値に設定され、第2の列における予測ブロックピクセルはピクセルBの値に設定され、第3の列における予測ブロックピクセルはピクセルCの値に設定され、第4の列における予測ブロックピクセルはピクセルDの値に設定される。
【0062】
イントラ予測モード720は、H_PREDイントラ予測モードを示しており、これは、一般に、水平イントラ予測モードと呼ばれている。このモードでは、第1の行における予測ブロックピクセルは周辺ピクセルIの値に設定され、第2の行における予測ブロックピクセルはピクセルJの値に設定され、第3の行における予測ブロックピクセルはピクセルKの値に設定され、第4の行における予測ブロックピクセルはピクセルLの値に設定される。
【0063】
イントラ予測モード730は、対角線を形成する予測ブロックを生成するために周辺ピクセルが伝播される矢印の方向が水平から約117°の角度にあるため、いわゆるD117_PREDイントラ予測モードを示している。すなわち、D117_PREDでは、予測角度は117°である。イントラ予測モード740は、63°の予測角度に対応するD63_PREDイントラ予測モードを示している。イントラ予測モード750は、153°の予測角度に対応するD153_PREDイントラ予測モードを示している。イントラ予測モード760は、135°の予測角度に対応するD135_PREDイントラ予測モードを示している。
【0064】
予測モードD45_PREDおよびD207_PRED(図示せず)は、それぞれ、予測角度45°および207°に対応する。DC_PREDは、すべての予測ブロックピクセルが周辺ピクセルA~Mの組合せである単一の値に設定される予測モードに対応する。
【0065】
PAETH_PREDイントラ予測モードでは、ピクセルの予測値は次のように決定される:1)いくつかの周辺ピクセルの組合せとして基本値を計算し、2)予測ピクセルとして、基本値に最も近いいくつかの周辺ピクセルのうちの1つを使用する。PAETH_PREDイントラ予測モードは、例として、ピクセル712(位置x=1,y=2における)を使用して示されている。いくつかの周辺ピクセルの組合せの例では、基本値は、基本=B+K-Mとして計算することができる。すなわち、基本値は、予測されるピクセルと同じ行にある左の周辺ピクセルの値+ピクセルと同じ列にある上の周辺ピクセルの値-左上隅におけるピクセルの値と等しい。
【0066】
SMOOTH_Vイントラ予測モードでは、予測ブロックの最下部の行の予測ピクセルは、左の列の最後のピクセルの値(すなわち、位置Lにおけるピクセルの値)を用いて推定される。予測ブロックの残りのピクセルは、垂直方向の2次補間によって計算される。
【0067】
SMOOTH_Hイントラ予測モードでは、予測ブロックの右端の列の予測ピクセルは、一番上の行の最後のピクセルの値(すなわち、位置Dにおけるピクセルの値)を用いて推定される。予測ブロックの残りのピクセルは、水平方向の2次補間によって計算される。
【0068】
SMOOTH_PREDイントラ予測モードでは、予測ブロックの最下部の行の予測ピクセルは、左の列における最後のピクセルの値(すなわち、位置Lにおけるピクセルの値)を用いて推定され、予測ブロックの右端の列の予測ピクセルは、一番上の行の最後のピクセルの値(すなわち、位置Dにおけるピクセルの値)を用いて推定される。予測ブロックの残りのピクセルは、スケーリングされた加重和として計算される。たとえば、予測ブロックの位置(i,j)における予測ピクセルの値は、ピクセルLj、R、Ti、およびBの値のスケーリングされた加重和として計算することができる。ピクセルLjは、左の列にあり、予測ピクセルと同じ行にあるピクセルである。ピクセルRは、SMOOTH_Hによって提供されるピクセルである。ピクセルTiは、上の行にあり、予測ピクセルと同じ列にあるピクセルである。ピクセルBは、SMOOTH_Vによって提供されるピクセルである。重みは、水平方向と垂直方向の2次補間に相当し得る。
【0069】
エンコーダによって選択されたイントラ予測モードは、ビットストリームにおいてデコーダに送信することができる。イントラ予測モードは、コンテキストモデルを使用してエントロピコーディング(エンコーダによって符号化、および/またはデコーダによって復号化)することができる。
【0070】
いくつかのコーデックは、現在のブロックのイントラ予測モードをコーディングするためのコンテキストとして、左および上の隣接ブロックのイントラ予測モードを使用する。
図7を例として使用すると、左隣接ブロックは、ピクセルI~Lを含むブロックであり得、上隣接ブロックは、ピクセルA~Dを含むブロックであり得る。
【0071】
図770は、VP9コーデックにおいて利用可能なイントラ予測モードを示している。コーディングされたVP9は、4×4から32×32までのブロックサイズの10個のイントラ予測モードのセットをサポートする。これらのイントラ予測モードは、DC_PRED、TM_PRED、H_PRED、V_PRED、および角度45、63、117、135、153、および207度にほぼ対応する(横軸に対して反時計回りに測定される)D45_PRED、D63_PRED、D117_PRED、D135_PRED、D153_PRED、D207_PRED、の6つの斜め方向予測モードである。
【0072】
図8は、鉄道線路を含む画像部分800の例である。画像部分800は、第1の線路802および第2の線路804を含む。実際には、第1の線路802および第2の線路804は平行である。しかしながら、画像部分800において、第1の線路802および第2の線路804は、画像部分800の外側にある焦点803において収束するように示されている。
【0073】
説明およびより明確な視覚化の目的で、現在のブロック806は、画像部分800の一部に重ね合わされる。通常、現在のブロックの各位置(すなわち、セル)は、1つのピクセルに対応するか、またはそれを表す点に留意されたい。しかしながら、説明および明確化の目的で、現在のブロック806の各セルは、明らかに1つよりもかなり多いピクセルを含む。また、特にマークされていないが、第1の線路802および第2の線路804の各々は、内側および外側の線のペアを含む点に留意されたい。線の各ペアの線も平行であり、別の焦点において画像部分800に収束する。
【0074】
画像部分800はまた、周辺ピクセル808を含む。周辺ピクセルは、現在のブロック806の上にあるように示される。しかしながら、上記のように、周辺ピクセルは、上のピクセル、左上ピクセル、左ピクセル、またはそれらの組合せであり得る。
【0075】
セル810は、第1の線路802の一部を含む。その部分は、南西方向に現在のブロック806に伝播する。しかしながら、セル812に示される第2の線路804の部分は、南東方向に現在のブロック806に伝播する。
【0076】
上記のように、一方向イントラ予測モードは、周辺ピクセル808から現在のブロック806を適切に予測することができない。
【0077】
図9は、本開示の実装形態による、予測ピクセル値を決定するための周辺ピクセル線(すなわち、上の周辺ピクセル線)に沿った位置を決定(たとえば、選択、計算、導出など)するための技法900のフローチャートの例である。位置を導出するための技法900は単なる例であり、他の技法が可能である。サイズM×Nの予測ブロック(または同等に、現在のブロック)の場合、技法900は、サイズM×Nのブロック(たとえば、2次元配列)を計算する。2次元配列は、以下では配列POSITIONSと呼ばれる。
【0078】
技法900は、たとえば、送信局102または受信局106などのコンピューティングデバイスによって実行され得るソフトウェアプログラムとして実装することができる。ソフトウェアプログラムは、メモリ204またはセカンダリストレージ214などのメモリに記憶され得、CPU202などのプロセッサによって実行されると、コンピューティングデバイスに技法900を実行させることができる機械可読命令を含むことができる。技法900は、
図4のエンコーダ400のイントラ/インター予測段階402、および/または
図5のデコーダ500のイントラ/インター予測段階508において、全体的または部分的に実装することができる。技法900は、専用のハードウェアまたはファームウェアを使用して実装することができる。複数のプロセッサ、メモリ、またはその両方が使用され得る。
【0079】
現在のブロックと上の周辺ピクセルのセット(すなわち、整数の周辺ピクセル位置)が与えられた場合、技法900は、予測ブロックの予測ピクセル(すなわち、または同等に、各予測ピクセル位置)ごとに、予測ピクセルの値を導出するための上の周辺ピクセル線に沿った位置を決定する。以下でさらに説明するように、上の周辺ピクセル線に沿った位置は、サブピクセル位置であり得る。したがって、周辺ピクセル線のその位置における値は、(たとえば、補間を使用して)上の周辺ピクセルから導出することができる。
【0080】
技法900は、予測ブロックの行ごとに、上の周辺ピクセルのセット(たとえば、すなわち周辺ピクセルの位置)をリサンプリング(たとえば、繰り返し見る、検討する、など)し、各リサンプリングにおいて、イントラ予測モードの1つまたは複数のパラメータに従って位置をシフトするように要約することができる。
【0081】
次いで、現在のブロックの予測ブロックを生成(たとえば、計算など)するために、その位置を使用することができる。技法900がエンコーダによって実装される場合、残余ブロックを決定するために予測ブロックを使用することができ、これは次いで、
図4の圧縮されたビットストリーム420などの圧縮されたビットストリームに符号化される。技法900がデコーダによって実装される場合、予測ブロックは、たとえば、
図5の圧縮されたビットストリーム420などの圧縮されたビットストリームから復号化される残余ブロックに予測ブロックを追加することによって、現在のブロックを再構築するためのものであることができる。
【0082】
周辺ピクセル線は、上の周辺ピクセル(たとえば、
図7のピクセルA~D、またはピクセルA~DおよびM)を含むことができる。
図7の周辺ピクセルMは、上のピクセルの一部、左のピクセルの一部とみなすこともでき、個別に参照することもできる。一例では、上の周辺ピクセルは、
図7および
図15の周辺ピクセルE~Hなどの追加のピクセル(本明細書では、上のピクセルのオーバーハングと呼ばれる)を含むことができる。
図7には、左のピクセルのオーバーハングが示されていない点に留意されたい。
【0083】
技法900によって計算された位置は、周辺ピクセルを含む1次元配列に対して相対的であり得る。たとえば、現在のブロックを予測するために利用可能な周辺ピクセルが
図7のピクセルA~Hであると仮定する。ピクセル値A~Hは、periph_pixels=[0、0、A、B、C、D、E、F、G、H]などの配列periph_pixelsに記憶することができる。以下に、periph_pixels配列の最初の2つの位置が0である理由について説明する。
【0084】
一例では、技法900は、ブロックの外側のピクセル位置に対応する負の位置を計算し得る。負の位置は、ブロックの左にある位置に対応する。一例では、現在のピクセルから離れすぎているピクセル値は、ピクセルの予測子として使用されず、代わりに、より近いピクセルを予測のために使用することができる。負のピクセル位置の場合、以下でさらに説明するように、他の境界からのそのピクセル(たとえば、左の周辺ピクセル)は、より近い(たとえば、より良い予測子)と決定され得る。
【0085】
実装形態の詳細として、periph_pixelsは、配列periph_pixelsに空の場所を含めることによって、そのような状況を説明することができる。periph_pixels配列は、2つ(2)の空の場所(empty_slots)を含むものとして示されている。したがって、技法900がゼロ(0)の位置(たとえば、calculated_position)を決定する場合、その位置は、ピクセル値Aに対応する(たとえば、periph_pixels[empty_slots+calculated_position]=periph_pixels[2+0]=A)。同様に、技法900が-2の位置を計算する場合、それはピクセル値periph_pixels[2+(-2)]=[0]=0に対応する。同様に、periph_pixels配列は、空のスロットのトレーニングを含むことができる。
【0086】
一例では、技法900は、入力として受信することができるか、またはイントラ予測モードの1つまたは複数のパラメータにアクセスすることができる。技法900は、現在のブロックのサイズおよび幅(または同等に、予測ブロックのサイズおよび幅)を受信することができる。技法900はまた、水平オフセット(h_off)、水平ステップ(h_st)、水平加速度(h_acc)、垂直オフセット(v_off)、垂直ステップ(v_st)、および垂直加速度(v_acc)のパラメータのうちの1つまたは複数を受信することができる。一例では、パラメータを受信しないことは、パラメータのゼロ値を受信することと同等である可能性がある。パラメータは加算量として以下に説明されているが、いくつかの例では、パラメータのうちの少なくともいくつかは同等に乗法値である可能性がある。
【0087】
水平オフセット(h_off)パラメータは、単一の垂直ピクセルステップごとに使用されるオフセット(すなわち、位置オフセット)である。水平オフセット(h_off)は、予測ブロックの新しい行(たとえば、row=k)の場合、周辺のピクセル線に沿って、前の行(たとえば、row=k-1)の第1のピクセルの位置と比較して(たとえば、相対的に)、新しい行の第1のピクセルの値を導出するピクセル位置はどこにあるか?という質問に答えることができる。水平オフセットは、初期予測角度を示すことができる。初期予測角度とは、予測ブロックの各行の第1のピクセルを予測する角度を意味する。
【0088】
水平ステップ(h_st)パラメータは、次のピクセルに水平方向に使用することができるオフセットである。すなわち、予測ブロックの行の所与の予測ピクセルについて、水平ステップ(h_st)は、同じ行の直前のピクセルの位置と相対的に、周辺ピクセル線に沿った次の位置までの距離を示している。1未満の水平ステップ(h_st)(たとえば、0.95、0.8など)は、予測ブロックにおいてズームアウトを実装することができる。たとえば、1未満の水平ステップ(h_st)を使用すると、
図8の鉄道は、予測ブロックにおいて互いから離れていく。同様に、1より大きい水平ステップ(h_st)(たとえば、1.05、1.2など)を使用すると、予測ブロックにおいてズームイン効果を実装することができる。
【0089】
水平加速度(h_acc)パラメータは、後続の各水平ステップ(h_st)に追加される変化である。一定の水平ステップにおいて、ある位置から次の位置に周辺ピクセル線に沿ってステップする代わりに、位置をさらに遠くに一貫して移動するために水平加速度(h_acc)パラメータをシフトとして使用することができる。そのため、水平方向の加速により、ホモグラフィック変換と同様の変換が可能になる。
【0090】
垂直オフセット(v_off)パラメータは、後続の行ごとに水平オフセット(h_off)に適用される変化である。すなわち、予測ブロックの第1の行にh_offが使用されている場合、第2の行には(h_off+v_off)が使用され、第3の行には((h_off+v_off)+v_off)が使用され、以下同様である。垂直ステップ(v_st)パラメータは、予測ブロックの後続の行ごとに水平ステップ(h_st)に適用される変化である。垂直加速度(v_acc)パラメータは、予測ブロックの後続の行ごとに水平加速度(h_acc)に適用される変化である。
【0091】
方向(すなわち、水平加速度(h_acc)パラメータ、および/または垂直加速度(v_acc)パラメータ)のうちの両方または少なくとも一方の加速度により、曲線の予測が可能になる点に留意されたい。すなわち、加速度パラメータは曲線予測を可能にできる。
【0092】
902において、技法900は変数を初期化する。変数h_step_startは、水平ステップパラメータ:h_step_start=h_stに初期化することができる。変数h_offsetと変数h_startは、それぞれ水平オフセット:h_offset=h_offおよびh_start=h_offに初期化することができる。
【0093】
904において、技法900は、外部ループ変数iを初期化する。技法900は、予測ブロックの行ごとに908~920を実行する。906において、技法900は、予測ブロックに、より多くの行があるかどうかを決定する。より多くの行がある場合、技法900は908に進み、より多くの行がない場合、技法900は922において終了する。技法900が922において終了するとき、予測位置の各ピクセル位置は、各ピクセル位置のピクセル値がPOSITIONS 2次元配列において計算される(たとえば、導出されるなど)、周辺ピクセル線に沿ったそれぞれの位置を有する。
【0094】
908において、技法900は位置変数pを変数h_start(すなわち、p=h_start)に、および変数h_stepを変数h_step_start(すなわち、h_step=h_step_start)に設定する。
【0095】
910において、技法900は、内部ループ変数jを初期化する。技法900は、予測ブロックの行iのピクセルごとに914~918を実行する。912において、技法900は、行のより多くのピクセル位置(すなわち、より多くの列)があるかどうかを決定する。より多くの列がある場合、技法900は914に進み、より多くの列がない場合、技法900は、920に進み、もしあれば、予測ブロックの次の行の変数をリセット(すなわち、更新)する。
【0096】
914において、技法900は、POSITIONS配列の位置(i,j)を位置変数pの値に設定する(すなわち、POSITIONS(i,j)=p)。916において、技法900は、位置変数pにh_stepを追加することによって、位置変数pを次の水平位置に進める(すなわち、p=h_step+p)。918において、技法900は、未処理の列が他にある場合、予測ブロックの行iの次の列の変数h_stepを準備する。したがって、技法900は、水平加速度(h_acc)を変数h_stepに追加する(すなわち、h_step=h_acc+h_step)。918から、技法900は912に戻る。
【0097】
920において、技法900は、もしあれば、予測ブロックの次の行に備えて、技法900の変数を準備する(すなわち、更新する)。したがって、次の行(すなわち、row=i+1)の場合、技法900はh_startをh_start=h_offset+h_startに更新し、垂直オフセット(v_off)をh_offsetに追加し(すなわち、h_offset=v_off+h_offset)、垂直ステップ(v_st)をh_step_startに追加し(すなわち、h_step_start=v_st+h_step_start)、垂直加速度(v_acc)をh_accに追加する(すなわち、h_acc=v_acc+h_acc)。
【0098】
図10は、本開示の実装形態による、
図9の技法によって計算された位置(すなわち、配列POSITIONS)の例1000である。例1000は、入力に対して生成され、現在のブロックサイズは8×8、水平オフセットh_off=-0.2、水平ステップh_st=1.05、水平加速度h_acc=0、垂直オフセットv_off=0、垂直ステップv_st=0.06、および垂直加速度v_acc=0である。例1000は、上記の2次元配列POSITIONSの値を示している。
【0099】
例1000は、i=0、...、列-1、j=0、...、行-1である、予測ブロックの位置(i,j)ごとに、位置(i,j)の予測値が導出されるべき周辺ピクセル線の位置を示している。予測子位置1002~1008は、例1000の位置値の例を示している。予測ブロックの位置(3,1)に対応する予測子位置1002は、周辺ピクセル線の位置2.93からその予測値を導出することである。予測ブロックの位置(6,4)に対応する予測子位置1004は、周辺ピクセル線の位置6.74からその予測値を導出することである。予測ブロックの位置(0,1)に対応する予測子位置1006は、周辺ピクセル線の位置-0.4からその予測値を導出することである。予測ブロックの位置(0,6)に対応する予測子位置1008は、周辺ピクセル線の位置-1.4からその予測値を導出することである。
【0100】
図11は、
図10の例1000から計算された予測ブロックの例1100である。例1100は、予測ブロック1104として視覚化される予測ブロック1102を含む。予測ブロック1102(および同等に、予測ブロック1104)は、
図10の例1000および周辺予測ピクセル1106の位置を使用して導出(たとえば、生成、計算など)され、これは、上部(すなわち、上)の周辺ピクセルであり得る。周辺予測ピクセル1106は、たとえば、
図7の周辺ピクセルA~Hであり得る。周辺予測ピクセル1108は、周辺予測ピクセル1106の視覚化である。
【0101】
視覚化において、ゼロ(0)のピクセル値は黒い正方形に対応し、255のピクセルは白い正方形に対応する。0と255との間のピクセル値は、灰色の正方形の様々な色合いに対応する。したがって、輝度ブロックは、本開示によるイントラ予測モードの例として示されている。しかしながら、本開示はそのように限定されない。開示された技法は、クロミナンスブロックまたは任意の他の色成分ブロックにも適用される。一般に、本明細書に開示される技法は、生成される任意の予測ブロックに適用され、これは、任意のサイズのM×Nであり得、ここで、MおよびNは正の整数である。
【0102】
上記のように、および
図10の例1000に示されているように、
図9の技法900によって計算された位置は、周辺ピクセル線の非整数位置(すなわち、サブピクセル位置)であり得る。非整数位置における周辺ピクセル線のピクセル値は、周辺予測ピクセル1106などの利用可能な整数ピクセル位置値(すなわち、周辺ピクセル)から導出されるものである(たとえば、計算されるなど)。
【0103】
サブピクセル位置(すなわち、サブピクセル位置のピクセル値)を計算するために、多くの技法を利用することができる。たとえば、マルチタップ(たとえば、4タップ、6タップなど)の有限インパルス応答(FIR)フィルタを使用することができる。たとえば、周囲のピクセルの平均を使用することができる。たとえば、バイリニア補間を使用することができる。たとえば、周辺ピクセル(たとえば、一番上の行または左の列)の4ピクセルのバイキュービック補間を使用することができる。たとえば、畳み込み演算を使用することができる。畳み込み演算は、周辺ピクセル以外のピクセルを使用することができる。一例では、サイズN×Nの畳み込みカーネルが使用され得る。したがって、上(左)の隣接ブロックのN個の行(列)を使用することができる。説明のために、重み(-0.1、0.6、0.6、-0.1)を有する4タップフィルタまたは4×1畳み込みカーネルを使用することができる。したがって、4つのピクセルのセット(pixel0、pixel1、pixel2、pixel3)のpixel1とpixel2との間の位置においてピクセル値を計算すると、クランプ(-0.10*pixel0+0.6*pixel1+0.6*pixel2-0.10*pixel3,0,255)として計算することができ、上式、クランプ()演算は、ゼロ未満の計算された値をゼロに設定し、255より大きい計算された値を255に設定する。
【0104】
予測ブロック1102は、バイリニア補間を使用することを示している。周辺ピクセル線のサブピクセル位置については、最も近い2つの整数ピクセルが検出される。予測子値は、最も近い2つの整数ピクセルの加重和として計算される。重みは、サブピクセル位置の、2つの整数ピクセル位置までの距離に応じて決定される。
【0105】
周辺ピクセル線の位置posが与えられると、posにおけるピクセル値pix_valは、pix_val=left_weight×left_pixel+right_weight×right_pixelとして計算することができる。Left_pixelは、位置posの最も近い左隣接整数ピクセルのピクセル値である。Right_pixelは、位置posの最も近い右隣接整数ピクセルのピクセル値である。
【0106】
left_pixelの位置は、left_pos=floor(pos)として計算することができ、上式で、floor()は、pos以下の最大の整数を返す関数である。したがって、floor(6.74)=6である。位置6.74は、
図10の予測子位置1004の位置である。right_pixelの位置は、right_pos=ceiling(pos)として計算することができ、上式で、ceiling()は、pos以上の最小の整数を返す関数である。したがって、ceiling(6.74)=7である。
【0107】
一例では、right_weightはright_weight=pos-left_posとして計算することができ、left_weightはleft_weight=1-right_weightとして計算することができる。したがって、予測子位置1004の位置6.74の場合、right_weight=6.74-6=0.74、およびleft_weight=1-0.74=0.26である。予測ブロック1102のピクセル値1112は、
図10の予測子位置1004から導出される値である。したがって、ピクセル値1112は、((255×0.26)+(0×0.74))=66として計算される。
【0108】
同様に、予測子値1110は、
図10の予測子位置1006(すなわち、-0.4)から計算された予測子ピクセル値である。したがって、left_posおよびright_posはそれぞれ-1および0である。right_weightおよびleft_weightは、それぞれ0.6および0.4である。右隣接ピクセル値は、位置0における周辺予測ピクセル1106の周辺ピクセル値である。したがって、右隣接ピクセル値は、値0を有するピクセル1114である。左隣接ピクセルは使用できない。したがって、左隣接ピクセル値は0である。したがって、予測子値1110は((0×0.4)+(0×0.6))=0として計算される。
【0109】
イントラ予測モードのパラメータ(すなわち、パラメータ値)がどのように使用されるかは、
図10および
図11に関して上で説明されている。パラメータ値を選択するための方法はいくつもある。
【0110】
一例では、エンコーダのモード選択プロセスは、最小の残余をもたらすパラメータ値の最適な組合せを見つけるために、可能なすべてのパラメータ値をテストすることができる。一例では、最小の残余は、最良のレート歪み値をもたらすものである可能性がある。一例では、最小の残余は、最小の残余誤差をもたらすものである可能性がある。最小の残余誤差は、平均二乗誤差である可能性がある。最小の残余誤差は、絶対差誤差の合計である可能性がある。任意の他の適切な誤差測定値を使用することができる。エンコーダは、イントラ予測モード自体の表示に加えて、符号化されたビットストリーム内のパラメータ値の最適な組合せのパラメータ値を符号化することができる。デコーダは、パラメータ値の最適な組合せのパラメータ値を復号化することができる。一例では、イントラ予測モード自体の表示は、本明細書で説明するように、イントラ予測パラメータを使用して現在のブロックのイントラ予測を実行するようにデコーダに指示する数値(たとえば、整数)であり得る。
【0111】
パラメータごとのすべての可能な値をテストすることは、非現実的な解決策になる可能性がある。そのため、パラメータごとの有限数の値を選択し、有限数の値の組合せをテストすることができる。
【0112】
たとえば、水平オフセット(h_off)パラメータは、限られた範囲の値から選択することができる。一例では、限られた範囲の値は[-4,+4]であり得る。テストする限られた範囲内の水平オフセット(h_off)パラメータ値を選択するために、ステップ値を使用することができる。一例では、ステップは0.25(または、他の何らかの値)であり得る。そのため、値-4、-3.75、-3.5、-3.25、…、3.75、4をテストすることができる。一例では、垂直オフセット(v_off)パラメータは、水平オフセットパラメータと同様に選択することができる。
【0113】
水平ステップ(h_st)および垂直ステップ(v_st)に関しては、1に比較的近い値を選択することができる。任意の他の値は、予測ブロックにおけるズームが速すぎる結果をもたらす可能性がある。したがって、[0.9,1.1]の範囲における値は、水平ステップ(h_st)および垂直ステップ(v_st)に対してテストすることができる。しかしながら、一般に、水平ステップ(h_st)および垂直ステップ(v_st)は、0.25であり得るステップ値を使用して[-4,4]の範囲からそれぞれ選択することができる。選択した水平加速度(h_acc)および垂直加速度(v_acc)のパラメータ値は0に近くなる可能性がある。一例では、水平加速度(h_acc)および垂直加速度(v_acc)パラメータ値は、それぞれ0または1であり得る。より一般的には、水平パラメータおよび対応する垂直パラメータは、値および/または値の範囲を有することができる。
【0114】
別の例では、エンコーダは、パラメータ値のおそらく最良のセットに基づいてパラメータ値を選択することができる。パラメータ値のおそらく最良のセットは、本明細書では予測パラメータ値とも呼ばれる。パラメータ値のおそらく最良のセットは、隣接ピクセルから周辺ピクセルを予測することによって導出することができる。すなわち、上の周辺ピクセルの場合、周辺ピクセルは、以前に再構築されたブロックの最下部の行を構成し、左の周辺ピクセルの場合、周辺ピクセルは、以前に再構築されたブロックの右端の列を構成する。したがって、周辺ピクセルの隣接する行、列、または両方(場合によっては)を周辺ピクセルの予測子として使用することができる。周辺ピクセルの予測子と周辺ピクセル自体がわかっているので、パラメータ値はそれらから導出することができる。この場合、デコーダは、パラメータ値のおそらく最良のセットを導出するためにエンコーダとまったく同じプロセスを実行することができるため、エンコーダは圧縮されたビットストリーム内のパラメータ値のおそらく最良のセットを符号化する必要はない。したがって、エンコーダがビットストリームにおいて符号化する必要があるのは、イントラ予測モード自体の表示だけである。
【0115】
別の例では、差動パラメータ値をエンコーダによって符号化することができる。たとえば、エンコーダは、上記のように最適なパラメータ値を導出することができ、また上記のように、パラメータ値のおそらく最良のセット(すなわち、予測されたパラメータ値)を導出することができる。次いで、エンコーダは、イントラ予測モードの表示に加えて、最適なパラメータ値とパラメータ値のおそらく最良のセットとの間のそれぞれの差を符号化する。すなわち、たとえば、水平オフセット(h_off)に関して、エンコーダは最適な水平オフセット(opt_h_off)およびおそらく最良の水平オフセット(predicted_h_offset)を導出することができる。次いで、エンコーダは差(opt_h_off-predicted_h_offset)を符号化する。
【0116】
図12は、本開示の実装形態による、現在のブロックのイントラ予測のための技法1200のフローチャート図である。イントラ予測モードは、現在のブロックの周辺のピクセルを使用する。現在のブロックの周辺のピクセルは、現在のブロックと同じビデオフレームまたは画像内の以前に予測されたピクセルである可能性がある。現在のブロックは、輝度ブロック、クロミナンスブロック、または任意の他の色成分ブロックであり得る。現在のブロックのサイズはM×Nにすることができ、MおよびNは正の整数である。例では、MはNに等しくなる。例では、MはNに等しくない。たとえば、現在のブロックのサイズは、4×4、4×8、8×4、8×8、16×16、または任意の他の現在のブロックサイズにすることができる。技法1200は、現在のブロックと同じサイズである現在のブロックの予測ブロックを生成する。技法1200は、
図4のエンコーダ400などのエンコーダにおいて実装することができる。技法1200は、
図5のデコーダ500などのデコーダにおいて実装することができる。
【0117】
技法1200は、たとえば、送信局102または受信局106などのコンピューティングデバイスによって実行することができるソフトウェアプログラムとして実装することができる。ソフトウェアプログラムは、メモリ204またはセカンダリストレージ214などのメモリに記憶することができ、コンピューティングデバイスに技法1200を実行させるためにCPU202などのプロセッサによって実行することができる機械可読命令を含むことができる。少なくともいくつかの実装形態では、技法1200は、
図4のエンコーダ400のイントラ/インター予測段階402によって全体的または部分的に実行することができる。他の実装形態では、技法1200は、
図5のデコーダ500のイントラ/インター予測段階508によって全体的または部分的に実行することができる。
【0118】
技法1200は、専用のハードウェアまたはファームウェアを使用して実装することができる。いくつかのコンピューティングデバイスは、複数のメモリ、複数のプロセッサ、またはその両方を有することができる。技法1200のステップまたは動作は、異なるプロセッサ、メモリ、またはその両方を使用して分散させることができる。単数形における「プロセッサ」または「メモリ」という用語の使用は、1つのプロセッサまたは1つのメモリを有するコンピューティングデバイス、ならびに記載されたステップのうちの一部またはすべての実行において使用できる複数のプロセッサまたは複数のメモリを有するデバイスを包含する。
【0119】
1202において、技法1200は、現在のブロックの周辺ピクセルを選択する。周辺ピクセルは、現在のブロックの予測ブロックを生成するために使用される。一例では、周辺ピクセルは、現在のブロックより上のピクセルであり得る。一例では、周辺ピクセルは、現在のブロックの左のピクセルであり得る。一例では、周辺ピクセルは、現在のブロックの上と左のピクセルの組合せであり得る。デコーダによって実装される場合、周辺ピクセルを選択することは、どの周辺ピクセルが使用されるかを示す表示(たとえば、構文要素)を圧縮されたビットストリームから読み取る(たとえば、復号化する)ことを含むことができる。
【0120】
予測ブロックの位置(すなわち、ピクセル位置)ごとに、技法1200は、1206~1208を実行する。したがって、現在のブロックのサイズがM×Nの場合、予測ブロックはM*Nピクセルの位置を含むことができる。したがって、1204において、技法1200は、1206~1208がまだ実行されていない予測ブロックのピクセル位置がまだあるかどうかを決定する。まだ実行されていないピクセル位置がある場合、技法1200は1206に進み、もうない場合、技法1200は1210に進む。
【0121】
1206において、技法1200は、予測ブロックのピクセル位置として、周辺ピクセルの2つのそれぞれのピクセルを選択する。一例では、技法1200は、第1に、周辺ピクセルが整数ピクセル位置である連続する周辺ピクセル線に沿った位置を選択する。1208において、技法1200は、予測ブロックのピクセル位置について、2つのそれぞれのピクセルを補間することによって予測ピクセル(すなわち、ピクセル値)を計算する。
【0122】
一例では、連続する周辺ピクセル線に沿った位置を選択することは、
図9に関して説明したようにすることができる。したがって、周辺ピクセルの2つのそれぞれのピクセルを選択することは、予測ブロックの第1の予測ピクセルを計算するために周辺ピクセルの第1の2つのそれぞれのピクセルを選択することと、予測ブロックの第2の予測ピクセルを計算するために周辺ピクセルの第2の2つのそれぞれのピクセルを選択することとを含むことができる。第2の予測ピクセルは、第1の予測ピクセルの水平方向に隣接ピクセルであり得る。第1の2つのそれぞれのピクセルおよび第2の2つのそれぞれのピクセルは、イントラ予測モードパラメータに従って選択することができる。
【0123】
上記のように、イントラ予測モードパラメータは、水平オフセット、水平ステップ、または水平加速度のうちの少なくとも2つを含むことができる。一例では、イントラ予測モードパラメータは、水平オフセット、水平ステップ、および水平加速度を含むことができる。上記のように、水平オフセットは初期予測角度を示すことができ、水平ステップは、同じ行の後続の予測ピクセルの後続のオフセットとして使用することができ、水平加速度は、後続の各水平ステップに追加される水平オフセットの変化を示すことができる。
【0124】
たとえば、水平オフセットは、ステップ値に基づいて限られた範囲から選択することができる。一例では、限られた範囲は-4から4であり得る。一例では、ステップ値は0.25であり得る。一例では、水平(垂直)ステップは、ステップ値に基づいて-4から4の範囲から選択することができる。ステップ値は、0.25または他の何らかの値であり得る。一例では、水平(垂直)加速度は0であり得る。別の例では、水平(垂直)加速度は1であり得る。
【0125】
上記でさらに説明するように、イントラ予測モードパラメータはまた、垂直オフセット、垂直ステップ、または垂直加速度のうちの少なくとも2つを含むことができる。一例では、イントラ予測モードパラメータは、垂直オフセット、垂直ステップ、および垂直加速度を含むことができる。垂直オフセットは、予測ブロックの後続の各行に適用される水平オフセットへの第1の変化を示すことができる。垂直ステップは、予測ブロックの後続の各行に適用される水平ステップへの第2の変化を示すことができる。垂直加速度は、予測ブロックの後続の各行に適用される水平加速度への第3の変化を示すことができる。
【0126】
一例では、2つのそれぞれのピクセルを補間することによって予測ピクセルを計算することは、バイリニア補間を使用して予測ピクセルを計算することを含むことができる。
【0127】
1210において、技法1200は、現在のブロックと予測ブロックの差に対応する残余ブロックをコーディングする。エンコーダによって実装される場合、技法1200は、圧縮されたビットストリーム内の残余ブロックを符号化する。デコーダによって実装される場合、技法1200は、圧縮されたビットストリームから残余ブロックを復号化する。現在のブロックを再構成するために、復号化された残余ブロックを予測ブロックに追加することができる。
【0128】
デコーダによって実装される場合、技法1200はまた、圧縮されたビットストリームからイントラ予測モードパラメータを復号化することを含むことができる。別の例では、上記で説明したように、イントラ予測モードパラメータは、イントラ予測モードパラメータに従って、周辺ピクセルを含む以前に再構築された他のピクセルから周辺ピクセルを予測することによって導出することができる。
【0129】
図13は、本開示の実装形態による、イントラ予測を使用して現在のブロックの予測ブロックを生成する技法1300のフローチャート図である。イントラ予測モードは、現在のブロックの周辺のピクセルを使用し、これは、
図12の技法1200に関して説明したようにすることができる。現在のブロックは、
図12の技法1200に関して説明したようにすることができる。技法1300は、
図4のエンコーダ400などのエンコーダにおいて実装することができる。技法1300は、
図5のデコーダ500などのデコーダにおいて実装することができる。
【0130】
技法1300は、たとえば、送信局102または受信局106などのコンピューティングデバイスによって実行することができるソフトウェアプログラムとして実装することができる。ソフトウェアプログラムは、メモリ204またはセカンダリストレージ214などのメモリに記憶することができ、コンピューティングデバイスに技法1300を実行させるためにCPU202などのプロセッサによって実行することができる機械可読命令を含むことができる。少なくともいくつかの実装形態では、技法1300は、
図4のエンコーダ400のイントラ/インター予測段階402によって全体的または部分的に実行することができる。他の実装形態では、技法1300は、
図5のデコーダ500のイントラ/インター予測段階508によって全体的または部分的に実行することができる。
【0131】
技法1300は、専用のハードウェアまたはファームウェアを使用して実装することができる。いくつかのコンピューティングデバイスは、複数のメモリ、複数のプロセッサ、またはその両方を有することができる。技法1300のステップまたは動作は、異なるプロセッサ、メモリ、またはその両方を使用して分散させることができる。単数形における「プロセッサ」または「メモリ」という用語の使用は、1つのプロセッサまたは1つのメモリを有するコンピューティングデバイス、ならびに記載されたステップのうちの一部またはすべての実行において使用できる複数のプロセッサまたは複数のメモリを有するデバイスを包含する。
【0132】
1302において、技法1300は、現在のブロックの予測ブロックを生成するための周辺ピクセルを決定する。周辺ピクセルを決定することは、
図12の1202に関して説明したように、周辺ピクセルのうちのどれを使用するか選択することを意味することができる。周辺ピクセルは、周辺ピクセル線(すなわち、周辺ピクセルの連続線)に沿った整数ピクセル位置であると考えることができる。
【0133】
1304において、技法1300は、予測ブロックのピクセルごとに周辺ピクセル線のそれぞれのサブピクセル位置を決定する。それぞれのサブピクセル位置を決定することは、
図9に関して説明したようにすることができる。本明細書で使用される周辺ピクセル線のサブピクセル位置もまた、整数ピクセル位置を包含する。すなわち、たとえば、決定されるサブピクセル位置は、周辺ピクセル自体のうちの1つの位置であり得る。
【0134】
1306において、予測ブロックの予測ピクセルごとに、技法1300は、各予測ピクセルのそれぞれのサブピクセル位置に対応する周辺ピクセルの整数ピクセルの補間として予測ピクセルを計算する。一例では、補間は、
図11に関して上記で説明したように、最も近い整数ピクセルの補間であり得る。一例では、バイリニア補間を使用することができる。別の例では、予測ブロックの予測ピクセルを取得するために、整数ピクセルのフィルタリングを実行することができる。
【0135】
一例では、予測ブロックのピクセルごとの周辺ピクセルのそれぞれのサブピクセル位置を決定することは、予測ブロックの第1の行の行ピクセルごとに、水平オフセット、水平ステップ、または水平加速度のうちの少なくとも2つを備えるパラメータを使用してそれぞれのサブピクセル位置を決定することを含むことができる。上記のように、水平オフセットは、初期予測角度を示すことができる。上記のように、水平ステップは、同じ行の後続の予測ピクセルの後続のオフセットとして使用することができる。上記のように、水平加速度は、後続の各水平ステップに追加される水平オフセットの変化を示すことができる。
【0136】
一例では、予測ブロックのピクセルごとの周辺ピクセルのそれぞれのサブピクセル位置を決定することは、予測ブロックの第2の行のピクセルごとのそれぞれのサブピクセル位置を決定することを含むことができ、パラメータは、垂直オフセット、垂直ステップ、または垂直加速度のうちの少なくとも2つをさらに含む。上記のように、垂直オフセットは、予測ブロックの後続の各行に適用される水平オフセットへの第1の変化を示すことができる。上記のように、垂直ステップは、予測ブロックの後続の各行に適用される水平ステップへの第2の変化を示すことができる。上記のように、垂直加速度は、予測ブロックの後続の各行に適用される水平加速度への第3の変化を示すことができる。
【0137】
一例では、デコーダによって実装される場合、技法1300は、圧縮されたビットストリームからパラメータを復号化することを含むことができる。一例では、圧縮されたビットストリームからパラメータを復号化することは、上記のように、パラメータの差を復号化することと、予測されたパラメータ値を導出することと、パラメータごとに、それぞれの予測されたパラメータ値にそれぞれのパラメータの差を追加することとを含むことができる。
【0138】
上記のように、一実施形態では、初期予測ブロックを生成するために、方向予測モードを使用することができる。次いで、予測ブロックを生成するために、ワープ(たとえば、ワーピング関数、ワーピングパラメータのセット、パラメータなど)を初期予測ブロックに適用することができる。
【0139】
一例では、ワープのパラメータは、現在のブロックと初期予測ブロックを使用して導出することができる。ワープのパラメータを導出するために、任意の数の技法を使用することができる。たとえば、モデル(すなわち、ワープモデル、パラメータ)を現在のブロックと初期予測ブロックとの間の一致する点に適合させるために、ランダムサンプルコンセンサス(RANSAC)方法を使用することができる。RANSACは、2つのブロック間のワープパラメータ(すなわち、パラメータ)を推定するために使用することができる反復アルゴリズムである。一例では、ワープのパラメータを導出するために、現在のブロックと初期予測ブロックとの間で最も一致するピクセルを使用することができる。ワープは、同形異義語ワープ、アフィンワープ、類似性ワープ、または他の何らかのワープにすることができる。
【0140】
同形異義語ワープは、現在のブロックのいくつかのピクセルを初期予測ブロックのいくつかのピクセルに投影するために、8つのパラメータを使用することができる。同形異義語ワープは、2つの空間の座標間の線形変換に拘束されない。そのため、現在のブロックのピクセルを初期予測ブロックの四辺形部分に投影するために、同形異義語ワープを定義する8つのパラメータを使用することができる。したがって、同形異義語ワープは、平行移動、回転、スケーリング、アスペクト比の変更、せん断、および他の非平行四辺形のワープをサポートする。
【0141】
アフィンワープは、現在のブロックのピクセルを初期予測ブロックのいくつかのピクセルに投影するために、6つのパラメータを使用する。アフィンワープは、6つのパラメータによって定義された2つの空間の座標間の線形変換である。そのため、現在のブロックのピクセルを初期予測ブロックの一部である平行四辺形に投影するために、アフィンワープを定義する6つのパラメータを使用することができる。したがって、アフィンワープは、平行移動、回転、スケール、アスペクト比の変更、およびせん断をサポートする。
【0142】
類似性ワープは、現在のブロックのピクセルを初期予測ブロックのピクセルに投影するために、4つのパラメータを使用する。類似性ワープは、4つのパラメータによって定義された2つの空間の座標間の線形変換である。たとえば、4つのパラメータは、x軸に沿った平行移動、y軸に沿った平行移動、回転値、およびズーム値であり得る。そのため、現在のブロックのピクセルを初期予測ブロックの正方形に投影するために、類似性モデルを定義する4つのパラメータを使用することができる。したがって、類似性ワープは、回転とズームを用いた正方形から正方形への変換をサポートする。
【0143】
一例では、ワープのパラメータは、方向性イントラ予測モードに加えて、圧縮されたビットストリームにおいて、エンコーダからデコーダに送信することができる。デコーダは、初期予測ブロックを生成するために、方向性イントラ予測モードを使用することができる。次いで、デコーダは、現在のブロックを復号化するために、送信されたパラメータへのパラメータを使用することができる。
【0144】
別の例では、パラメータはデコーダによって導出することができる。たとえば、ワープのパラメータを決定するために、デコーダは、上記のように、以前に復号化されたピクセルを使用することができる。たとえば、周辺ピクセルを予測し、それによってワープパラメータを決定するために、上記のように、周辺ピクセルと同じブロックのピクセルを使用することができる。すなわち、周辺ピクセルはすでに知られているので、それらの隣接ピクセルから周辺ピクセルを予測するための最良のワープパラメータを決定することができる。
【0145】
別の例では、上記のように、差動ワープパラメータをエンコーダによって送信することができる。たとえば、予測されたワープパラメータは、周辺パラメータの隣接ピクセルを使用して導出することができ、最適なワープパラメータは、上記のように導出される。最適なワープパラメータと予測されたワープパラメータの違いは、圧縮されたビットストリームにおいて送信することができる。
【0146】
上で説明したのは、少なくとも
図9~
図11に関して、上の周辺ピクセルのみを使用する場合である。たとえば、他の周辺ピクセル(たとえば、左の周辺ピクセル)が使用可能ではない場合は、上の周辺ピクセルのみを使用することができる。たとえば、左の周辺ピクセルが使用可能な場合でも、上の周辺ピクセルのみを使用することができる。
【0147】
左の周辺ピクセルを使用することは、上の周辺ピクセルを使用することと同様にすることができる。一例では、上の周辺ピクセルが利用できない場合は、左の周辺ピクセルのみを使用することができる。別の例では、上の周辺ピクセルが使用可能な場合でも、左の周辺ピクセルのみを使用することができる。
【0148】
図18は、本開示の実装形態による、予測ピクセル値を決定するための左の周辺ピクセル線に沿った位置を決定するための技法1800のフローチャートの例である。サイズM×Nの予測ブロック(または同等に、現在のブロック)の場合、技法1800は、サイズM×Nのブロック(たとえば、2次元配列)を計算する。2次元配列は、以下では配列POSITIONSと呼ばれる。
【0149】
現在のブロックと左の周辺ピクセルのセット(すなわち、整数の周辺ピクセル位置)が与えられた場合、技法1800は、予測ブロックの予測ピクセル(すなわち、または同等に、各予測ピクセル位置)ごとに、予測ピクセルの値を導出するための左の周辺ピクセル線に沿った位置を決定する。以下でさらに説明するように、左の周辺ピクセル線に沿った位置は、サブピクセル位置であり得る。したがって、左の周辺ピクセル線のその位置における値は、(たとえば、補間を使用して)左の周辺ピクセルから導出することができる。
【0150】
技法1800は、予測ブロックの列ごとに、左の周辺ピクセルのセット(たとえば、すなわち左の周辺ピクセルの位置)をリサンプリング(たとえば、繰り返し見る、検討する、など)し、各リサンプリングにおいて、イントラ予測モードの1つまたは複数のパラメータに従って位置をシフトするように要約することができる。次いで、現在のブロックの予測ブロックを生成(たとえば、計算など)するために、その位置を使用することができる。
【0151】
技法1800は技法900に非常に類似しているので、技法1800の詳細な説明は省略されている。技法1800において、水平オフセット(h_off)、水平ステップ(h_st)、水平加速度(h_acc)、垂直オフセット(v_off)、垂直ステップ(v_st)、および垂直加速度(v_acc)の役割(すなわち、使用)は、技法900における役割の逆である。すなわち、水平関連パラメータが技法900において使用される場合は常に、対応する垂直パラメータが代わりに技法1800において使用され、逆もまた同様である。したがって、1802~1822はそれぞれ902~922に類似している可能性がある。技法900の外側の反復(906における)が予測ブロックの行を反復し、内側の反復(912における)が予測ブロックの列を反復するのに対し、技法1800においては、外側の反復(1906における)は予測ブロックの列を反復し、内側の反復(1812における)は予測ブロックの行を反復する点に留意されたい。
【0152】
図19は、本開示の実装形態による、イントラ予測を使用して現在のブロックの予測ブロックを生成する技法1900のフローチャート図である。技法1900は、予測ブロックを生成するために、上の周辺ピクセルと左の周辺ピクセルの両方を使用する。現在のブロックは、
図12の技法1200に関して説明したようにすることができる。技法1900は、
図4のエンコーダ400などのエンコーダにおいて実装することができる。技法1900は、
図5のデコーダ500などのデコーダにおいて実装することができる。
【0153】
技法1900は、たとえば、送信局102または受信局106などのコンピューティングデバイスによって実行することができるソフトウェアプログラムとして実装することができる。ソフトウェアプログラムは、メモリ204またはセカンダリストレージ214などのメモリに記憶することができ、コンピューティングデバイスに技法1900を実行させるためにCPU202などのプロセッサによって実行することができる機械可読命令を含むことができる。少なくともいくつかの実装形態では、技法1900は、
図4のエンコーダ400のイントラ/インター予測段階402によって全体的または部分的に実行することができる。他の実装形態では、技法1900は、
図5のデコーダ500のイントラ/インター予測段階508によって全体的または部分的に実行することができる。
【0154】
技法1900は、専用のハードウェアまたはファームウェアを使用して実装することができる。いくつかのコンピューティングデバイスは、複数のメモリ、複数のプロセッサ、またはその両方を有することができる。技法1900のステップまたは動作は、異なるプロセッサ、メモリ、またはその両方を使用して分散させることができる。単数形における「プロセッサ」または「メモリ」という用語の使用は、1つのプロセッサまたは1つのメモリを有するコンピューティングデバイス、ならびに記載されたステップのうちの一部またはすべての実行において使用できる複数のプロセッサまたは複数のメモリを有するデバイスを包含する。
【0155】
技法1900は、
図20A~
図20Bを参照して示されている。
図20A~
図20Bは、次の入力で示されている:現在のブロックサイズ8×8、水平オフセットh_off=0.25、水平ステップh_st=1、水平加速度h_acc=1、垂直オフセットv_off=4、垂直ステップv_st=1、および垂直加速度v_acc=0。
【0156】
1902において、技法1900は、現在のブロックの第1の周辺ピクセルを選択する。第1の周辺ピクセルは、現在のブロックの第1のエッジに沿っている。第1の周辺ピクセルは、予測ブロックを生成するためのプライマリピクセルとして選択される。一例では、第1の周辺ピクセルは、上の周辺ピクセルであり得る。一例では、第1の周辺ピクセルは、左の周辺ピクセルであり得る。以下でさらに説明するように、プライマリピクセルは、技法900(第1の周辺ピクセルが上の周辺ピクセルである場合)または技法1800(第1の周辺ピクセルが左の周辺ピクセルである場合)のいずれかに関して説明されるように、第1の周辺ピクセル線に沿った位置が計算される対象となるピクセルである。
【0157】
エンコーダによって実装される場合、技法1900は、1回は上部周辺ピクセルを第1の周辺ピクセルとして使用して、2回目は左の周辺ピクセルを第1の周辺ピクセルとして使用して実行することができる。エンコーダは、どちらが現在のブロックのより良い予測を提供するかを決定するために、両方をテストすることができる。一例では、技法1900は、
図4の圧縮ビットストリーム420などの圧縮ビットストリームにおいて、予測ブロックを生成するためのプライマリピクセルとして第1の周辺ピクセルまたは第2の周辺ピクセルのどちらを使用するかの第1の表示を送信することができる。すなわち、たとえば、上(左)の周辺ピクセルがプライマリピクセルとして使用される場合、第1の表示はビット値0(1)であり得る。第1の表示の他の値も可能である。
【0158】
したがって、デコーダによって実装される場合、技法1900は、圧縮されたビットストリームから第1の表示を復号化することによって、第1の周辺ピクセルを選択することができる。別の例では、デコーダは、本明細書で説明する技法に従って、隣接する上の行(左の列)から上の行(左の列)を予測することによって、第1の周辺ピクセルが上または左の周辺ピクセルであるかどうかを導出することができる。
【0159】
予測ブロックの位置(すなわち、ピクセル位置)ごとに、技法1900は、1906~1910を実行する。したがって、現在のブロックのサイズがM×Nの場合、予測ブロックはM*Nピクセルの位置を含むことができる。したがって、1904において、技法1900は、1906~1910がまだ実行されていない予測ブロックのピクセル位置がまだあるかどうかを決定する。まだ実行されていないピクセル位置がある場合、技法1900は1906に進み、もうない場合、技法1900は1910に進む。
【0160】
1906において、技法1900は、それぞれの整数位置における第1の周辺ピクセルを含む第1の連続線に沿った第1の切片を決定する。したがって、第1のピクセル位置が上の周辺ピクセルである場合、第1の切片はy軸切片であり、第1のピクセル位置が左の周辺ピクセルである場合、第1の切片はx軸切片である。
【0161】
図20Aは、上の周辺ピクセルが第1の周辺ピクセルのプライマリピクセルとして使用された場合の、上記の2次元配列POSITIONSの値の位置2010を示している。位置2010は、技法900を使用して計算することができる。したがって、位置2010は、上の周辺行内の位置を提供する。
【0162】
例示的な
図20Bは、左の周辺ピクセルが第1の周辺ピクセルのプライマリピクセルとして使用された場合の、上記の2次元配列POSITIONSの値の位置2050を示している。位置2050は、技法1800を使用して計算することができる。したがって、位置2050は、左の周辺列内の位置を提供する。
【0163】
1908において、技法1900は、各予測ピクセルの位置と第1の切片を使用して、第2の周辺ピクセルを含む第2の連続線に沿った第2の切片を決定する。第2の周辺ピクセルは、第1のエッジに垂直である現在のブロックの第2のエッジに沿っている。
【0164】
第1の予測ピクセルが上の予測ピクセルである場合、第2の予測ピクセルは左の予測ピクセルであり得る。第1の予測ピクセルが左の予測ピクセルである場合、第2の予測ピクセルは上の予測ピクセルであり得る。第1および第2の予測ピクセルの他の組合せも可能である。たとえば、右および上の周辺ピクセル、右および下の周辺ピクセル、または左および下の周辺ピクセルの組合せが可能である。
【0165】
一例では、第2の切片は、予測ピクセルの位置と第1の切片との間に線を接続し、その線を第2の連続線に向かって延長することによって計算することができる。
【0166】
次に、以下でさらに説明される
図16が、例示として使用されている。現在の予測ピクセルが予測ピクセル1604であり、第1の切片がy切片1648である場合、第2の切片は、予測ピクセル1604とy切片1648を接続し、線をx軸に向かって延長することによって取得することができる。したがって、第2の切片はx切片1646である。同様に、現在の予測ピクセルが予測ピクセル1604であり、第1の切片がx切片1646である場合、第2の切片は、予測ピクセル1604とx切片1646を接続し、線をy軸に向かって延長することによって取得することができる。したがって、第2の切片はy切片1648である。
【0167】
図20Aのブロック2012は、第1の周辺ピクセルが上の周辺ピクセルである場合のx切片を示している。
図20Bのブロック2052は、第1の周辺ピクセルが左の周辺ピクセルであるときのy切片を示している。切片は、式(1)の数式のうちの1つを使用して計算することができる。
【0168】
説明のために、予測の位置(1,3)における予測ピクセル2010Aについて考慮する。したがって、上部および左の予測ピクセルを考慮に入れると、予測ピクセル2010Aは、上部および左の周辺ピクセルが交わる原点を有する座標系の位置(2,4)にある。第1の切片(すなわち、y切片)は7.5にある。したがって、線は2つの点(2,4)と(0,7.5)によって形成することができる。したがって、x切片の値2012Aによって示されるように、x切片は(-7.5/((7.5-4)/(0-2)))=4.29として計算することができる。
【0169】
別の例として、予測ブロックの位置(1,1)にある予測ピクセル2050Aは、上部および左の周辺ピクセルを含む座標系の位置(2,2)にある。第1の切片(すなわち、x切片)は11にある。したがって、線は2つの点(2,2)と(11,0)によって形成することができる。したがって、y切片は、y切片の値2052Aによって示されるように、(-11*(0-2)/(11-2))=2.44として計算することができる。
【0170】
1910において、技法1900は、第1の切片および第2の切片のうちの少なくとも1つを使用して、各予測ピクセルの値を計算する。
【0171】
一例では、予測ピクセルの値は、第1の切片と第2の切片の加重和として計算することができる。より具体的には、予測ピクセルの値は、第1の切片における第1のピクセル値と第2の切片における第2のピクセル値との加重和として計算することができる。重みは、予測ピクセルの位置から第1の切片と第2の切片の各々までの距離に反比例する可能性がある。このように、予測ピクセルの値は、第1のピクセル値と第2のピクセル値のバイリニア補間として取得することができる。知られているように、(a,b)と(c,d)の2点間の距離は、
【0172】
【0173】
として計算することができる。
【0174】
別の例では、加重和の代わりに、予測ピクセルの値を最も近い距離に基づいて計算することができる。すなわち、予測ピクセルの値を計算するために、(計算された距離に基づいて)予測ピクセルにより近いx切片およびy切片のうちの一方を使用することができる。
【0175】
図20Aの距離2014および2016は、第1の周辺ピクセルが左の周辺ピクセルである場合の、予測ピクセル位置の各々からそれらのそれぞれのy切片およびx切片までの距離を示している。たとえば、7.5であるy切片(すなわち、点(0,7.5))を有する位置(2,4)における予測ピクセル(すなわち、予測ブロックの位置(1,3)における予測ピクセル2010A)の場合、距離2014Aは
【0176】
【0177】
であり、x切片(4.29,0)までの距離2016Aは
【0178】
【0179】
によって与えられる。同様に、
図20Bの距離2054および2056は、第1の周辺ピクセルが左の周辺ピクセルである場合の、予測ピクセル位置の各々からそれらのそれぞれのy切片およびx切片までの距離を示している。
【0180】
したがって、位置(1,4)における予測ピクセルに、加重和を使用する場合、x切片およびy切片の重みはそれぞれ(4.61/(4.61+4.03))=0.53、および(1-0.53)=0.47である。x切片およびy切片の各々におけるピクセル値は、上記のように計算することができる(たとえば、2つの最も近い整数ピクセル値の補間として)。
【0181】
最も近い距離を使用する場合、予測ブロックの位置(1,4)における予測ピクセルの値は、4.03(すなわち、距離2014A)が4.61(すなわち、距離2016A)よりも小さいため、y切片におけるピクセル値のみを使用して計算することができる。
【0182】
図14に関して以下に説明するように、状況によっては、x切片またはy切片が終了しない(たとえば、負の値である)場合がある。やはり
図14に関して説明したように、そのような場合、予測値は、利用可能な切片の値に基づいてのみ計算することができる。
【0183】
エンコーダにおいて、技法1900は、予測ブロックを生成するために、最も近い距離、加重和、または他の何らかの関数のうちの1つを選択することができる。一例では、技法1900は、可能な関数ごとにそれぞれの予測ブロックを生成し、最適な予測を生成する予測ブロックのうちの1つを選択することができる。したがって、技法1900は、第1の周辺ピクセルと第2の周辺ピクセルを組み合わせて予測ブロックを取得するために、圧縮されたビットストリームにおいて、選択された関数の第2の表示を符号化することができる。説明したように、関数は加重和、最も近い距離、または他の何らかの関数にすることができる。
【0184】
デコーダによって実装される場合、技法1900は、圧縮されたビットストリームにおいて、予測ブロックを取得するために、第1の周辺ピクセルと第2の周辺ピクセルを組み合わせるための関数の第2の表示を受信する。デコーダは、予測ブロックを生成するために関数を使用する。
【0185】
図21は、上の周辺ピクセルがプライマリ周辺ピクセルとして使用される場合の、
図19の技法の例2100を示している。左の周辺ブロックをプライマリ周辺ピクセルとして使用して生成された予測ブロックの例は示されていない。
【0186】
例2100は、周辺ピクセルを使用して生成することができる異なる予測ブロックを示している。例2100の予測ブロックは、上の周辺ピクセル2102(上のピクセル2104を使用して視覚化される)、左の周辺ピクセル2106(左のピクセル2108を使用して視覚化される)、またはそれらの組合せを使用して生成される。上記のように、左上の周辺ピクセル2110は座標系の原点であり得る。
【0187】
予測ブロック2120(予測ブロック2122として視覚化される)は、プライマリ周辺ピクセル(すなわち、上の周辺ピクセル)のみを使用することを示す。したがって、たとえ左の周辺ピクセルが利用可能であるとしても、予測ブロック2120は、
図10~
図11に関して説明したように生成される。
【0188】
予測ブロック2130(予測ブロック2132として視覚化される)は、非プライマリ周辺ピクセル(すなわち、左の周辺ピクセル)のみを使用することを示す。したがって、予測ブロック2130は、
図20Aの位置2010に関して説明したように、上記の行内の位置を取得するために、プライマリ周辺ピクセル(すなわち、上の周辺ピクセル)を使用することと、
図20Aのブロック2012に関して説明したように、x切片を取得することと、
図11の予測ブロック1102に関して説明したのと同様の方法でx切片を使用して予測ピクセル値を計算することとを行うことによって生成することができる。
【0189】
予測ブロック2140(予測ブロック2142として視覚化される)は、
図19に関して上記で説明したように、加重和を使用して生成される予測ブロックを示している。予測ブロック2150(予測ブロック2152として視覚化される)は、
図19に関して上記で説明したように、最も近い距離を使用して生成される予測ブロックを示している。
【0190】
上記のように、本開示によるイントラ予測モードは、焦点に関して定義することができる。焦点は、予測のすべての点が発生する点として定義することができる。すなわち、予測ブロックの各点は、焦点に接続されていると考えることができる。同様に、焦点は、透視画像の平行線が交わる距離内の点と考えることができる。
【0191】
図14は、本開示の実装形態による、イントラ予測モードを使用して現在のブロックをコーディングするための技法1400のフローチャート図である。現在のブロックは、焦点を使用してコーディングされる。イントラ予測モードは、現在のブロックの周辺のピクセルを使用する。現在のブロックは、
図12の技法1200に関して説明したようにすることができる。技法1400は、
図4のエンコーダ400などのエンコーダにおいて実装することができる。技法1400は、
図5のデコーダ500などのデコーダにおいて実装することができる。
【0192】
技法1400は、たとえば、送信局102または受信局106などのコンピューティングデバイスによって実行することができるソフトウェアプログラムとして実装することができる。ソフトウェアプログラムは、メモリ204またはセカンダリストレージ214などのメモリに記憶することができ、コンピューティングデバイスに技法1400を実行させるためにCPU202などのプロセッサによって実行することができる機械可読命令を含むことができる。少なくともいくつかの実装形態では、技法1400は、
図4のエンコーダ400のイントラ/インター予測段階402によって全体的または部分的に実行することができる。他の実装形態では、技法1400は、
図5のデコーダ500のイントラ/インター予測段階508によって全体的または部分的に実行することができる。
【0193】
技法1400は、専用のハードウェアまたはファームウェアを使用して実装することができる。いくつかのコンピューティングデバイスは、複数のメモリ、複数のプロセッサ、またはその両方を有することができる。技法1400のステップまたは動作は、異なるプロセッサ、メモリ、またはその両方を使用して分散させることができる。単数形における「プロセッサ」または「メモリ」という用語の使用は、1つのプロセッサまたは1つのメモリを有するコンピューティングデバイス、ならびに記載されたステップのうちの一部またはすべての実行において使用できる複数のプロセッサまたは複数のメモリを有するデバイスを包含する。
【0194】
技法1400は、
図15および
図16を参照して最もよく理解することができる。
【0195】
図15は、本開示の実装形態による焦点を示す例1500を示す図である。例1500は、予測されるべき現在のブロック1502を示している。すなわち、現在のブロック1502に対して予測ブロックが生成される。現在のブロック1502は、幅1504および高さ1506を有する。したがって、現在のブロック1502は、サイズW×Hである。例1500では、現在のブロックは8×4として示されている。しかしながら、本開示はそのように限定されない。現在のブロックは任意のサイズを有することができる。説明を簡単にするために、ピクセル位置は例1500では正方形として示されている。ピクセルの特定の値は、正方形の中央(すなわち、中心)にある値として、より正確に考えることができる。
【0196】
現在のブロック1502は、周辺ピクセルを使用して予測されるべきである。周辺ピクセルは、上の周辺ピクセル1508であり得るか、または含むことができる。周辺ピクセルは、左の周辺ピクセル1512であり得るか、または含むことができる。上の周辺ピクセル1508は、幅1504(W)に等しい数のピクセルを含むことができる。左の周辺ピクセル1512は、高さ1506(H)に等しい数のピクセルを含むことができる。便宜上または参照のために、左上の周辺ピクセル1509は、左の周辺ピクセル1512の一部、上の周辺ピクセル1508の一部、または左の周辺ピクセル1512と上の周辺ピクセル1508の両方の一部であるとみなすことができる。
【0197】
上の周辺ピクセル1508は、上の周辺ピクセルのオーバーハング1510を含むことができる。上の周辺ピクセル1508のオーバーハングの数は、W0で示される。例1500では、W0は8ピクセルに等しいものとして示されている。しかしながら、本開示はそのように限定されず、上の周辺ピクセルのオーバーハング1510は、任意の数のピクセルを含むことができる。
【0198】
左の周辺ピクセル1512は、左の周辺ピクセルのオーバーハング1514を含むことができる。左の周辺ピクセルのオーバーハング1514の数は、H0で示される。例1500では、H0は2ピクセルに等しいものとして示されている。しかしながら、本開示はそのように限定されず、左の周辺ピクセルのオーバーハング1514は、任意の数のピクセルを含むことができる。
【0199】
左の周辺ピクセル1512は離散ピクセルであるが、左の周辺ピクセル1512は、連続する周辺ピクセルの線の整数位置におけるピクセル値であると考えることができる。したがって、左の周辺ピクセル1512(たとえば、第1の周辺ピクセル)は、x軸1530を構成する第1の周辺ピクセル線を形成する。上の周辺ピクセル1508は離散ピクセルであるが、上の周辺ピクセル1508は、連続する周辺ピクセルの線の整数位置におけるピクセル値であると考えることができる。したがって、上の周辺ピクセル1508(たとえば、第2の周辺ピクセル)は、y軸1532を構成する第2の周辺ピクセル線を形成する。
【0200】
現在のブロック1502の右上隅にあるピクセル1518、現在のブロック1502の左下隅にあるピクセル1522、およびピクセル1526といった、現在のブロック1502の例示的なピクセルが示されている。ピクセル1518、1522、1526の各々は、中心が現在のブロックの左上隅にあることができる座標(i,j)を有すると考えることができる。したがって、ピクセル1518は座標(7,0)にあり、ピクセル1522は座標(0,3)にあり、ピクセル1526は座標(5,3)にある。
【0201】
焦点1516は、現在のブロックの外側にあり、現在のブロックから離れているものとして示されている。焦点1516は、x軸1530とy軸1532との間の交点を中心とする座標系における座標(a,b)にある。
【0202】
上記のように、現在のブロック1502の各ピクセルは、焦点1516から発する。したがって、線1520は、ピクセル1518と焦点1516を接続し、線1524は、ピクセル1522と焦点1516を接続し、線1528は、ピクセル1526と焦点1516を接続する。
【0203】
線1520のx切片x0(すなわち、線1520がx軸1530と交差する場所)は点1534であり、線1520のy切片y0(すなわち、線1520がy軸1532と交差する場所)は点1535である。線1524のx切片x0(すなわち、線1524がx軸1530と交差する場所)は、点1536であり、線1524のy切片y0(すなわち、線1524がy軸1532と交差する場所)は、点1537である。線1528のx切片x0(すなわち、線1528がx軸1530と交差する場所)は、点1538であり、線1528のy切片y0(すなわち、線1528がy軸1532と交差する場所)は、点1539である。
【0204】
点1534は負の値を有する(すなわち、負のx切片である)。点1536および1538は正の値を有する。点1535は正の値を有する(すなわち、正のy切片である)。点1537および1539は負の値である。
【0205】
知られているように、座標(a,b)と(i,j)とを有する線の2つの点が与えられると、x切片およびy切片は式(1)を使用して計算することができる。
【0206】
【0207】
図16は、本開示の実装形態による、x切片およびy切片を示す例である。
図16の例は、焦点の異なる位置が与えられた現在のブロック1612の位置(i,j)における予測ピクセル1604(または、同等に、現在のピクセル)の正および負のx切片およびy切片を示している。
【0208】
例1600は、焦点1602と、予測ピクセル1604を通過(たとえば、接続)して焦点1602に至る線1606とを示している。x切片1608は、負の値である。y切片1610は正の値である。例1620は、焦点1622と、予測ピクセル1604を通過(たとえば、接続)して焦点1622に至る線1624とを示している。x切片1626は、正の値である。y切片1628は負の値である。例1640は、焦点1642と、予測ピクセル1604を通過(たとえば、接続)して焦点1642に至る線1644とを示している。x切片1646は、正の値である。y切片1648は正の値である。
【0209】
再び
図14に戻る。1402において、技法1400は焦点を取得する。焦点は、
図15に関して説明したように、座標系において座標(a,b)を有する。
【0210】
デコーダによって実装される場合、焦点を取得することは、圧縮されたビットストリームから、イントラ予測モードを復号化することを含むことができる。圧縮されたビットストリームは、
図5の圧縮されたビットストリーム420であり得る。イントラ予測モードは、焦点を示すことができる。
【0211】
一例では、利用可能なイントラ予測モードの各イントラ予測モードは、インデックス(たとえば、値)に関連付けることができる。圧縮されたビットストリームからインデックスを復号化することは、デコーダに、イントラ予測モード(すなわち、イントラ予測モードのセマンティクス)に従って現在のブロックのイントラ予測を実行するように指示する。一例では、イントラ予測モードは、焦点の座標を示すことができる。たとえば、イントラ予測モード値45は、焦点が座標(-1000,-1000)にあることを示し得、イントラ予測モード値46は、焦点が座標(-1000,-850)にあることを示し得、以下同様である。したがって、たとえば、64の焦点が可能である場合、64のイントラ予測モードが可能であり、それぞれが焦点の位置を示す。一例では、数百の焦点(および同等に、イントラ予測モード)が利用可能である。焦点の位置は、本明細書ではデカルト座標において与えられているが、焦点座標は極座標において与えることができる。極座標の角度は、
図15のx軸1530などのx軸に対してなすことができる。
【0212】
別の例では、焦点を取得することは、圧縮されたビットストリームから焦点の座標を復号化することを含むことができる。たとえば、圧縮されたビットストリームは、焦点の座標が続く焦点を使用するイントラ予測を示すイントラ予測モードを含むことができる。
【0213】
エンコーダによって実装される場合、焦点を取得することは、複数の候補焦点から焦点を選択することを含むことができる。すなわち、エンコーダは現在のブロックを符号化するための最適な焦点を選択する。最適な焦点は、現在のブロックの最適な符号化をもたらすものにすることができる。一例では、複数の候補焦点を候補焦点のグループに分割することができる。候補焦点の各グループは、それぞれの円の円周上に配置することができる。一例では、候補焦点の各グループは、16個の候補焦点を含むことができる。
【0214】
図17は、本開示の実装形態による、焦点のグループの例1700を示す図である。上記のように、現在のブロックの外側の空間のどこにあってもよい、何百もの焦点候補が存在する可能性がある。焦点候補は、現在のブロックの外側の空間にあるすべての可能な焦点のサブセットである。現在のブロックの外側の空間は、
図15の左上の周辺ピクセル1509などの左上の周辺ピクセルの中心に置く(すなわち、原点を有する)ことができる。空間の中心は、任意の他の点にすることができる。一例では、中心を現在のブロックの中心点にすることができる。
【0215】
探索空間を制限するために、すべての可能な焦点のサブセットのみを候補焦点とみなすことができる。探索空間を候補焦点に縮小する方法はたくさんある。一例では、候補焦点をグループにグループ化することができる。候補焦点の各グループは、円の円周上に配置することができる。一例では、3つの円を考えることができる。3つの円は、シェル1702、シェル1704、およびシェル1706であり得る。焦点は、各シェル上の黒い円(焦点1708~1712など)として示されている。しかしながら、任意の数の円を使用することができる。各円(または、シェル)は、予測ピクセルを円の円周上の焦点に接続する線の傾き(たとえば、収束率)にほぼ対応する。例1700は単なる例示であり、原寸に比例して描かれていない点に留意されたい。
【0216】
シェル1702は、遠く離れた焦点に対応することができる。したがって、シェル1702上の焦点が与えられると、各予測ピクセル位置から焦点までの線の傾きは、ほぼ同じであり得る。シェル1702は、数千ピクセルの範囲の半径を有することができる。焦点が遠ければ遠いほど、遠い焦点を使用するイントラ予測は、方向性イントラ予測により似る(たとえば、近似する)ことができる。
【0217】
シェル1706は、近くの焦点に対応することができる。したがって、シェル1702上の焦点が与えられると、焦点から各予測ピクセル位置までの線は、ファンアウトしているように見える可能性がある。したがって、線の傾きは大きく異なる可能性がある。シェル1706は、数十ピクセルの範囲の半径を有することができる。たとえば、半径は20、30、または他の何らかのそのようなピクセル数にすることができる。
【0218】
シェル1704は、中型の半径を有する円に対応することができる。シェル1704の半径は、数百ピクセルの範囲であり得る。
【0219】
上で説明したように、円(シェル)は実用的でない数の焦点を有することができるが、焦点のサンプリングのみが候補焦点として使用される。各グループの候補焦点(すなわち、各シェル上)は等間隔にすることができる。たとえば、N個(たとえば、8、16など)の候補焦点が各グループに含まれていると仮定すると、N個の焦点は360/N(たとえば、45、22.5など)度離れている可能性がある。
【0220】
一例では、エンコーダにおいて1402にある焦点を取得することは、最適な焦点を識別するために候補焦点の各々をテストすることを含むことができる。別の例では、最も外側のシェル(シェル1702)の最も外側の最適な焦点は、最も外側のシェルの焦点の各々を使用してイントラ予測を実行することによって識別することができる。次いで、最も外側の最適な焦点に対応する(たとえば、同じ角度にある)焦点は、それらのいずれかがより最適な予測ブロックをもたらすかどうかを決定するために試みることができる。他のヒューリスティック手法も使用することができる。たとえば、二分探索を使用することができる。
【0221】
図14に戻る。1404において、技法1400は、第1の周辺ピクセルおよび第2の周辺ピクセルを使用して、予測ブロックを生成することができる。第1の周辺ピクセルは、左の周辺ピクセル1512(左上の周辺ピクセル1509を含む)などの左の周辺ピクセルであり得る。第2の周辺ピクセルは、上の周辺ピクセル1508であり得る。
【0222】
上記のように、第1の周辺ピクセルが、
図15のx軸1530などのx軸を構成する第1の周辺ピクセル線を形成し、第2の周辺ピクセルが、
図15のy軸1532などのy軸を構成する第2の周辺ピクセル線を形成し、第1の周辺ピクセル線と第2の周辺ピクセル線が、原点を有する座標系を形成する。予測ブロックを生成することは、予測ブロックの各位置(すなわち、各ピクセル)に対して1404_4~1404_6を実行することを含むことができる。予測ブロックの各ピクセルは、位置(i,j)にある。ブロックのサイズがM×Nの場合、1404_4~1404_6はM*N回実行される。
【0223】
1404_2において、技法1400は、ピクセル値が決定されていない(たとえば、計算されていない)予測ブロックの位置が他にあるかどうかを決定する。他にある場合、技法1400は1404_4に進む。そうでなければ、技法1400は1406に進む。
【0224】
1404_4において、技法1400は、(i,j)において予測ピクセルのx切片またはy切片のうちの少なくとも1つを決定(たとえば、計算、識別など)することができる。
【0225】
x切片は、予測ブロック(たとえば、予測ピクセル1604)の各位置を中心とする点によって形成される線(たとえば、線1606、線1624、線1644)と、焦点(たとえば、焦点1602、焦点1622、焦点1642)が、第1の周辺ピクセル線(たとえば、x軸)と交差する第1の点(たとえば、x切片1608、x切片1626、x切片1646)である。
【0226】
y切片は、予測ブロック(たとえば、予測ピクセル1604)の各位置を中心とする点によって形成される線(たとえば、線1606、線1624、線1644)と、焦点(たとえば、焦点1602、焦点1622、焦点1642)が、第2の周辺ピクセル線(たとえば、y軸)と交差する第2の点(たとえば、y切片1609、y切片1627、y切片1647)である。
【0227】
x切片および/またはy切片は、式(1)を使用して計算できる。しかしながら、状況によっては、予測ピクセルと焦点を通過する線が軸のうちの1つを横切ることがない場合がある。たとえば、x軸にほぼ平行な線は、x軸を横切るとはみなされない場合があり、y軸にほぼ平行な線は、y軸を横切るとはみなされない場合がある。b=j+εの場合、線はx軸を横切るとはみなされない場合があり、a=i+εの場合、線はy軸を横切るとはみなされない場合があり、上式で、εはゼロに近い小さいしきい値である。そのため、式(1)を使用しなくても、x切片をiとして識別でき、y切片をjとして識別することができる。
【0228】
1404_6において、技法1400は、x切片またはy切片のうちの少なくとも1つを使用して、予測ブロックの各位置(すなわち、(i,j))の予測ピクセル値を決定することができる。1404_6から、技法1400は1404_2に戻る。
【0229】
一例では、予測ピクセル値を決定することは、x切片またはy切片のうちの少なくとも1つの一方が負の値であるという条件で、x切片またはy切片のうちの少なくとも1つのもう一方を使用して、各位置の予測ピクセル値を決定することを含むことができる。たとえば、
図16の例1600に関して、x切片1608は負の値であるため、予測ブロックの位置(i,j)の予測ピクセル値は、正の値であるy切片1610のみを使用して計算される。たとえば、
図16の例1620に関して、y切片1628は負の値であるため、予測ブロックの位置(i,j)の予測ピクセル値は、正の値であるx切片1626のみを使用して計算される。
【0230】
一例では、予測ピクセル値を決定することは、x切片が正であり、y切片が正であるという条件で、各位置の予測ピクセル値を、x切片における第1のピクセル値とy切片における第2のピクセル値の重み付けされた組合せとして決定することを含むことができる。
【0231】
一例では、予測ピクセル値を決定することは、iがaに等しい(すなわち、iがaに非常に近い)という条件で、予測ブロックの各位置におけるピクセル値を第1の周辺ピクセル線の位置iにある第1の周辺ピクセルの第1の周辺ピクセルの値に設定することを含むことができる。すなわち、i≒aの場合、p(i,j)=L[i]に設定する。すなわち、線がy軸にほぼ平行である場合、予測ピクセル値p(i,j)を水平方向に対応する左の周辺ピクセル値L[i]に設定する。
【0232】
同様に、一例では、予測ピクセル値を決定することは、jがbに等しい(すなわち、jがbに非常に近い)という条件で、予測ブロックの各位置のピクセル値を第2の周辺ピクセル線の位置jにある第2の周辺ピクセルの第2の周辺ピクセルの値に設定することを含むことができる。すなわち、j≒bの場合、p(i,j)=T[j]に設定する。すなわち、線がx軸にほぼ平行である場合、予測ピクセル値p(i,j)を垂直方向に対応する上(すなわち、上部)の周辺ピクセル値T[j]に設定する。
【0233】
一例では、予測ピクセル値を決定することは、x切片がゼロであり、y切片がゼロであるという条件で、予測ブロックの各位置のピクセル値を、第1の周辺ピクセル線と第2の周辺ピクセル線との交点におけるピクセル値に設定することを含むことができる。すなわち、x切片およびy切片がゼロの場合、予測ピクセル値を左上の周辺ピクセル値に設定できる。
【0234】
Table I(表1)の擬似コードは、(a,b)における焦点を使用して、予測ブロックの位置(i,j)における予測ピクセル値p(i,j)を設定する例を示しており、ここで、i=0、...、width-1およびj=0、...、height-1である。
【0235】
上記のように、所与のピクセル(i,j)に対して、(a,b)および(i,j)における焦点を結ぶ線が引かれる。x切片およびy切片が計算される。これらの切片に応じて、予測ピクセル値p(i,j)は、上部または左の境界ピクセルから切片の値を補間または外挿することによって取得される。
【0236】
具体的には、L[k]が、k=0、1、...、H+H
0である正の整数位置kに対する左の境界ピクセル(たとえば、
図15の左の周辺ピクセル1512と
図15の左上の周辺ピクセル1509)の配列を表し、T[k]が、k=0、1、...、W+W
0である正の整数位置kに対する上部の境界ピクセル(たとえば、
図15の上の周辺ピクセル1508と左上の周辺ピクセル1509)の配列を示すとする。T[0]=L[0]である点に留意されたい。また、f
L(z)とf
T(z)が、適切な補間式(すなわち、補間関数)によって境界ピクセルL[k]、T[k]から取得された高精度(実数値)の点zにおける補間関数を表すとする。整数位置では、z=k=0、1、...、H+H
0の場合はf
L(z)=L[k]、z=k=0、1、...、W+W
0の場合はf
T(z)=T[k]である点に留意されたい。
【0237】
【0238】
Table I(表1)の行1において、(i,j)における焦点と予測ピクセルが同じ水平線上にある場合、行2において、予測ピクセルp(i,j)は同じ水平線上にある左の周辺ピクセルの値L[i]に設定される。より具体的には、焦点と予測ピクセルは完全に水平に整列されていない場合がある。したがって、(i==a)は、焦点と予測ピクセルを結ぶ線がL[i]を中心とする正方形を通過することを意味することができる。
【0239】
行3において、焦点と予測ピクセルが同じ垂直線上にある場合、行4において、予測ピクセルp(i,j)は、同じ垂直線上にある上の周辺ピクセルの値T[j]に設定される。より具体的には、焦点と予測ピクセルは完全に垂直に整列されていない場合がある。したがって、(j==b)は、焦点と予測ピクセルを結ぶ線がT[j]を中心とする正方形を通過することを意味することができる。
【0240】
行6~7において、x切片(x0)とy切片(y0)は、式(1)に従って計算される。行8において、x切片(x0)とy切片(y0)が原点にある場合、行9において、予測ピクセルp(i,j)が左上の周辺ピクセルL[0]に設定される。より具体的には、x切片(x0)および/またはy切片(y0)は、正確にゼロではない可能性がある。したがって、x0==0&&y0==0は、x切片とy切片が原点を中心とする正方形(すなわち、ピクセル)内にあることを意味することができる。
【0241】
行10において、x切片(x0)が正であるが、y切片(y0)が負である場合、行11において、予測ピクセルは、補間関数fLを使用してx切片(x0)からのみ導出される。行12において、x切片(x0)が負であり、y切片(y0)が正である場合、行13において、予測ピクセルp(i,j)は、補間関数fTを使用してy切片(y0)からのみ導出される。
【0242】
行14において、x切片(x0)とy切片(y0)の両方が正の値である場合、予測ピクセルp(i,j)は、x切片(x0)の補間の重み付けされた組合せ(すなわち、fL(x0))およびy切片(y0)の補間(すなわち、fT(y0))として計算される。どちらがより重み付けされるかは、x切片(x0)とy切片(y0)のどちらが予測ピクセルp(i,j)からより遠いかにより、x切片(x0)の方がより遠い場合(すなわち、行15)、行16において、y切片(y0)の重みが大きくなる。一方、y切片(y0)の方がより遠い場合(すなわち、行17)、行18において、x切片(x0)の重みが大きくなる。行20~21は完全を期すためのものであり、x切片(x0)とy切片(y0)の両方が負である状況をカバーすることを目的としており、これは起こり得ない状況である。
【0243】
状況によっては、上部周辺ピクセルまたは左の周辺ピクセルのうちの少なくともいくつかが使用できない場合がある。たとえば、現在のブロックは、画像の上端または画像の左端にあるブロックにすることができる。そのような状況では、使用できない周辺ピクセルはゼロの値を有するとみなすことができる。
【0244】
補間関数f
Lおよびf
Tは、任意の補間関数にすることができる。補間関数は、同じ補間関数でもよく、異なる補間関数でもよい。補間関数は、
図9に関して上記のようにすることができる。たとえば、補間関数は有限インパルス応答(FIR)フィルタにすることができる。たとえば、補間フィルタは、上記のようにバイリニア補間にすることができる。すなわち、x切片(または、y切片)値が与えられると、最も近い整数ピクセルを決定することができ、最も近い整数ピクセルの加重和をバイリニア補間において使用することができる。本明細書で使用される補間は、補間および外挿の両方を包含する。
【0245】
図14に戻ると1406において、技法1400は、現在のブロックと予測ブロックの差に対応する残余ブロックをコーディングする。エンコーダによって実装される場合、技法1400は、現在のブロックと予測ブロックの差として残余ブロックを計算し、圧縮されたビットストリーム内の残余ブロックを符号化する。デコーダによって実装される場合、技法1400は、圧縮されたビットストリームから残余ブロックを復号化することによって、残余ブロックをコーディングする。次いで、現在のブロックを再構築するために、デコーダは残余ブロックを予測ブロックに追加することができる。
【0246】
開示された実装形態の別の態様は、現在のブロックを符号化するための技法である。本技法は、周辺ピクセルを使用して現在のブロックの予測ピクセルの予測ブロックを取得するステップを含む。各予測ピクセルは、予測ブロック内のそれぞれの位置(i,j)にある。予測ブロックを取得するステップは、焦点を取得するステップであって、焦点が座標系において座標(a,b)を有する、ステップと、予測ブロックの各位置に対して、それぞれの予測角度を示す線を取得するステップと、線を使用して各位置に対するピクセル値を決定するステップとを含むことができる。上記のように、線は焦点を各位置に接続する。焦点は、現在のブロックの外側にあってもよく、焦点は、
図15~
図17に関して説明したように、周辺ピクセルのうちの1つであってもよいが、そうではなくてもよい。上記のように、予測ブロックの各予測ピクセルは、予測角度の他のすべての予測ピクセルの予測角度とは異なる予測角度を有することができる。焦点の位置に応じて、複数の予測ピクセルが同じ予測角度を有することができるが、本開示の実装形態によるイントラ予測モードは、すべての予測ピクセルが同じ予測角度を有することができるわけではないようなものである。
【0247】
現在のブロックを符号化することは、圧縮されたビットストリームにおいて、焦点を示すイントラ予測モードを符号化することを含むことができる。上記のように、イントラ予測モードに関連付けられる値は、焦点の位置を示すことができる。
【0248】
上記のように、周辺ピクセルは、左の周辺ピクセルおよび上部周辺ピクセルを含むことができる。線を使用して各位置のピクセル値を決定することは、線のx切片を決定することと、線のy切片を決定することと、x切片とy切片を使用してピクセル値を決定することとを含むことができる。x切片は、線が現在のブロックの左の周辺ピクセルを含む左の軸と交差する第1の点である。y切片は、線が現在のブロックの上部周辺ピクセルを含む上部軸と交差する第2の点である。
【0249】
上記のように、および
図17に関して焦点を取得することは、複数の候補焦点から焦点を選択することを含むことができる。複数の候補焦点を候補焦点のグループに分割することができる。候補焦点の各グループは、それぞれの円の円周上に配置することができる。
【0250】
開示された実装形態の別の態様は、現在のブロックを復号化するための技法である。この技法は、圧縮されたビットストリームから焦点を復号化するステップと、現在のブロックの予測ピクセルの予測ブロックを取得するステップと、予測ブロックを使用して現在のブロックを再構築するステップとを含む。予測ブロックを取得するステップは、予測ブロックの各位置に対して、それぞれの予測角度を示す線を取得するステップであって、線が焦点を各位置に接続する、ステップと、線を使用して各位置に対するピクセル値を決定するステップとを含む。
【0251】
線を使用して各位置のピクセル値を決定するステップは、線のx切片を決定することと、線のy切片を決定することと、x切片とy切片を使用してピクセル値を決定することとを含むことができる。x切片は、線が現在のブロックの左の周辺ピクセルを備える左の軸と交差する第1の点である。y切片は、線が現在のブロックの上部周辺ピクセルを備える上部軸と交差する第2の点である。
【0252】
x切片とy切片を使用してピクセル値を決定することは、x切片における第1のピクセル値とy切片における第2のピクセル値との重み付けされた組合せとしてピクセル値を決定することを含むことができる。x切片とy切片を使用してピクセル値を決定することは、x切片またはy切片のうちの一方が負の値であるという条件で、x切片またはy切片の他方を使用してピクセル値を決定することを含むことができる。
【0253】
圧縮されたビットストリームから焦点を復号化するステップは、圧縮されたビットストリームから、焦点を示すイントラ予測モードを復号化することを含むことができる。
【0254】
説明を簡単にするために、技法900、1200、1300、1400、1800、および1900は、それぞれ、一連のブロック、ステップ、または動作として描写および説明されている。しかしながら、本開示によるブロック、ステップ、または動作は、様々な順序で、および/または同時に発生する可能性がある。さらに、本明細書に提示および記載されていない他のステップまたは動作が使用され得る。さらに、開示された主題に従って技法を実装するために、図示されたすべてのステップまたは動作が必要とされるわけではない。
【0255】
上記の符号化および復号化の態様は、いくつかの符号化および復号化技法を示している。しかしながら、これらの用語が特許請求の範囲において使用されているように、符号化および復号化は、データの圧縮、解凍、変換、あるいは任意の他の処理または変更を意味し得ることが理解されるべきである。
【0256】
「例」または「実装形態」という言葉は、本明細書では、例、実例、または例示として機能することを意味するために使用される。本明細書で「例」または「実装形態」として説明される任意の態様または設計は、必ずしも他の態様または設計よりも好ましいまたは有利であると解釈されるべきではない。むしろ、「例」または「実装形態」という言葉の使用は、概念を具体的に提示することが意図されている。本出願において使用される場合、「または」という用語は、排他的「または」ではなく、包括的「または」を意味することが意図されている。すなわち、特に明記されていない限り、または文脈から明らかでない限り、「XはAまたはBを含む」は、自然な包括的順列のいずれかを意味することが意図されている。すなわち、XがAを含み、XがBを含み、または、XがAとBの両方を含む場合、前述の実例のうちのいずれかの場合に「XはAまたはBを含む」が満たされる。さらに、本出願または添付の特許請求の範囲において使用される冠詞「a」および「an」は、特に明記されていない限り、または文脈から明らかに単数形に向けられない限り、一般に「1つまたは複数」を意味すると解釈されるべきである。さらに、全体を通して「ある実装形態」または「一実装形態」という用語の使用は、そのように説明されない限り、同じ実施形態または実装形態を意味することが意図されるものではない。
【0257】
送信局102および/または受信局106(ならびに、エンコーダ400およびデコーダ500を含む、そこに記憶され、および/またはそれによって実行されるアルゴリズム、方法、命令など)は、ハードウェア、ソフトウェア、またはそれらの任意の組合せにおいて実現することができる。ハードウェアは、たとえば、コンピュータ、知的財産(IP)コア、特定用途向け集積回路(ASIC)、プログラム可能なロジックアレイ、光プロセッサ、プログラム可能なロジックコントローラ、マイクロコード、マイクロコントローラ、サーバ、マイクロプロセッサ、デジタル信号プロセッサ、または任意の他の適切な回路を含むことができる。特許請求の範囲において、「プロセッサ」という用語は、単独でまたは組み合わせて、前述のハードウェアのうちのいずれかを包含すると理解されるべきである。「信号」および「データ」という用語は交換可能に使用される。さらに、送信局102および受信局106の部分は、必ずしも同じ方法で実装される必要はない。
【0258】
さらに、一態様では、たとえば、送信局102または受信局106は、実行されると、本明細書に記載のそれぞれの方法、アルゴリズム、および/または命令のうちのいずれかを実行するコンピュータプログラムを備えたコンピュータまたはプロセッサを使用して実装することができる。さらに、または代わりに、たとえば、本明細書に記載の方法、アルゴリズム、または命令のうちのいずれかを実行するための他のハードウェアを含むことができる専用コンピュータ/プロセッサを利用することができる。
【0259】
送信局102および受信局106は、たとえば、ビデオ会議システム内のコンピュータ上に実装することができる。あるいは、送信局102はサーバ上に実装することができ、受信局106は、ハンドヘルド通信デバイスなどの、サーバとは別のデバイス上に実装することができる。この実例では、送信局102は、エンコーダ400を使用してコンテンツを符号化されたビデオ信号に符号化し、符号化されたビデオ信号を通信デバイスに送信することができる。次いで、通信デバイスは、デコーダ500を使用して、符号化されたビデオ信号を復号化することができる。あるいは、通信デバイスは、通信デバイスにローカルに記憶されたコンテンツ、たとえば、送信局102によって送信されなかったコンテンツを復号化することができる。他の送信局102および受信局106の実装形態スキームが利用可能である。たとえば、受信局106は、ポータブル通信デバイスではなく、一般に静止したパーソナルコンピュータであり得、および/またはエンコーダ400を含むデバイスはまた、デコーダ500を含み得る。
【0260】
さらに、本開示の実装形態のすべてまたは一部は、たとえば、有形のコンピュータ使用可能またはコンピュータ可読媒体からアクセス可能なコンピュータプログラム製品の形態をとることができる。コンピュータ使用可能またはコンピュータ可読媒体は、たとえば、任意のプロセッサによって、または任意のプロセッサに関連して使用するための、プログラムを具体的に含み、記憶し、通信し、または輸送することができる任意のデバイスであり得る。媒体は、たとえば、電子、磁気、光学、電磁気、または半導体デバイスであり得る。他の適切な媒体も利用可能である。
【0261】
上記の実施形態、実装形態、および態様は、本開示の容易な理解を可能にし、本開示を限定しないために説明されてきた。それどころか、本開示は、添付の請求項の範囲内に含まれる様々な修正および同等の取決めを網羅することを意図しており、その範囲は、法律の下で許可されるすべてのそのような修正および同等の構造を包含するように最も広い解釈を与えられるべきである。
【符号の説明】
【0262】
100 ビデオ符号化および復号化システム
102 送信局
104 ネットワーク
106 受信局
200 コンピューティングデバイス
202 CPU
204 メモリ
206 データ
208 オペレーティングシステム
210 アプリケーションプログラム
212 バス
214 セカンダリストレージ
218 ディスプレイ
220 画像感知デバイス
222 音感知デバイス
300 ビデオストリーム
302 ビデオシーケンス
304 隣接するフレーム
306 フレーム
308 セグメント
310 ブロック
400 エンコーダ
402 イントラ/インター予測段階
404 変換段階
406 量子化段階
408 エントロピ符号化段階
410 逆量子化段階
412 逆変換段階
414 再構築段階
416 ループフィルタリング段階
420 圧縮されたビットストリーム
500 デコーダ
502 エントロピ復号化段階
504 逆量子化段階
506 逆変換段階
508 イントラ/インター予測段階
510 再構築段階
512 ループフィルタリング段階
514 デブロッキングフィルタリング段階
516 出力ビデオストリーム
600 部分
610 64×64ブロック
620 32×32ブロック
630 16×16ブロック
640 8×8ブロック
650 4×4ブロック
660 輝度ブロック
662 輝度ピクセル
670 UまたはCbクロミナンスブロック
680 VまたはCrクロミナンスブロック
690 クロミナンスピクセル
710 イントラ予測モード
712 ピクセル
720 イントラ予測モード
730 イントラ予測モード
740 イントラ予測モード
750 イントラ予測モード
760 イントラ予測モード
770 図
800 画像部分
802 第1の鉄道線路
804 第2の鉄道線路
806 現在のブロック
808 周辺ピクセル
810 セル
812 セル
900 技法
1000 例
1002 予測子位置
1004 予測子位置
1006 予測子位置
1008 予測子位置
1100 例
1102 予測ブロック
1104 予測ブロック
1106 周辺予測ピクセル
1108 周辺予測ピクセル
1110 予測子値
1112 ピクセル値
1114 ピクセル
1200 技法
1300 技法
1400 技法
1500 例
1502 現在のブロック
1504 幅
1506 高さ
1508 上の周辺ピクセル
1509 左上の周辺ピクセル
1512 左の周辺ピクセル
1516 焦点
1518 ピクセル
1520 線
1522 ピクセル
1524 線
1526 ピクセル
1528 線
1530 x軸
1532 y軸
1534 点
1535 点
1536 点
1537 点
1538 点
1539 点
1600 例
1602 焦点
1604 予測ピクセル
1606 線
1608 x切片
1609 y切片
1610 y切片
1612 ブロック
1620 例
1622 焦点
1624 線
1626 x切片
1627 y切片
1628 y切片
1640 例
1642 焦点
1644 線
1646 x切片
1647 y切片
1648 y切片
1700 例
1702 シェル
1704 シェル
1706 シェル
1708~1712 焦点
1800 技法
1900 技法
2010 位置
2010A 予測ピクセル
2012 ブロック
2014 距離
2016 距離
2050 位置
2050A 予測ピクセル
2052 ブロック
2054 距離
2056 距離
2100 例
2104 上の周辺ピクセル
2106 左の周辺ピクセル
2108 左のピクセル
2110 左上の周辺ピクセル
2120 予測ブロック
2122 予測ブロック
2130 予測ブロック
2132 予測ブロック
2140 予測ブロック
2142 予測ブロック
2150 予測ブロック
2152 予測ブロック