(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-08-09
(45)【発行日】2024-08-20
(54)【発明の名称】イントラ予測のためのエンコーダ、デコーダおよび対応する方法
(51)【国際特許分類】
H04N 19/70 20140101AFI20240813BHJP
H04N 19/105 20140101ALI20240813BHJP
H04N 19/176 20140101ALI20240813BHJP
【FI】
H04N19/70
H04N19/105
H04N19/176
【外国語出願】
(21)【出願番号】P 2023102366
(22)【出願日】2023-06-22
(62)【分割の表示】P 2021556948の分割
【原出願日】2020-03-23
【審査請求日】2023-07-04
(32)【優先日】2019-03-23
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2019-03-26
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2019-03-27
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】503433420
【氏名又は名称】華為技術有限公司
【氏名又は名称原語表記】HUAWEI TECHNOLOGIES CO.,LTD.
【住所又は居所原語表記】Huawei Administration Building, Bantian, Longgang District, Shenzhen, Guangdong 518129, P.R. China
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】ワン,ビァオ
(72)【発明者】
【氏名】エセンリク,セミフ
(72)【発明者】
【氏名】コトラ,アナンド メヘル
(72)【発明者】
【氏名】ガオ,ハン
(72)【発明者】
【氏名】チェン,ジェンレェ
【審査官】岩井 健二
(56)【参考文献】
【文献】国際公開第2020/197203(WO,A1)
【文献】国際公開第2020/171632(WO,A1)
【文献】Jie Yao, et al.,Non-CE3: Intra prediction information coding,Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11,JVET-M0210_v3,13th Meeting: Marrakech, MA,2019年01月,pp.1-7
【文献】F. Bossen, and K. Misra,Non-CE3: A unified luma intra mode list construction process,Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11,JVET-M0528_r1,13th Meeting: Marrakech, M,2019年01月,pp.1-4
【文献】B. Wang, et al.,CE3-related: A unified MPM list for intra mode coding,Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11,JVET-N0185-r1,14th Meeting: Geneva, CH,2019年03月13日,pp.1-3
【文献】B. Wang, et al.,CE3-related: A unified MPM list for intra mode coding,JVET-M1001-v6_Spec_by_Benjamin.docx,JVET-N0185 (version 7),2019年04月04日,pp.43-46,86-89,103-105,269-273,https://jvet-experts.org/doc_end_user/documents/14_Geneva/wg11/JVET-N0185-v7.zip
(58)【調査した分野】(Int.Cl.,DB名)
H04N 19/00 - 19/98
(57)【特許請求の範囲】
【請求項1】
イントラ予測を実施するためのエンコード装置であって、当該装置は:
一つまたは複数のプロセッサと;
前記プロセッサによる実行のためのプログラミングを記憶している、前記プロセッサに結合された非一時的なコンピュータ読み取り可能な記憶媒体であって、前記プログラミングは、前記プロセッサによって実行されたときに、当該装置を:
現在ブロックに最も近い近傍参照ラインがイントラ予測のために使用されるかどうかを決定する段階と;
現在ブロックに最も近い近傍参照ラインがイントラ予測のために使用されない場合、現在ブロックのイントラ予測モードが平面モードでないと決定する段階と;
ビットストリームをエンコードする段階であって、前記ビットストリームは、現在ブロックに最も近い近傍参照ラインがイントラ予測のために使用されないことを示す指示情報を含む、段階とを実行するように構成するものである、
エンコード装置。
【請求項2】
前記プログラミングは、前記プロセッサによって実行されたときに、当該装置を:
現在ブロックに最も近い近傍参照ラインがイントラ予測のために使用されない場合、フラグintra_luma_not_planar_flagをデフォルト値に設定する段階であって、前記intra_luma_not_planar_flagは、現在ブロックのイントラ予測モードが平面モードでないことを示すために使用される、段階を実行するように構成する、
請求項1に記載のエンコード装置。
【請求項3】
前記ビットストリームがさらに、現在ブロックのイントラ予測モードが平面モードでない場合に現在ブロックのイントラ予測モードのために最確モードの集合におけるどのイントラ予測モードが使用されるかを示すインデックスを含む、請求項1または2に記載のエンコード装置。
【請求項4】
前記インデックスがintra_luma_mpm_idx[x0][y0]である、請求項3に記載のエンコード装置。
【請求項5】
前記プログラミングは、前記プロセッサによって実行されたときに、当該装置を:
現在ブロックに最も近い近傍参照ラインがイントラ予測のために使用されない場合、フラグintra_luma_mpm_flagをデフォルト値に設定する段階であって、前記intra_luma_mpm_flagは、現在ブロックのイントラ予測モードが最確モード
の集合に含まれることを示すために使用される、段階を実行するように構成する、
請求項1ないし4のうちいずれか一項に記載のエンコード装置。
【請求項6】
左近傍ブロックを示すイントラ予測モード変数candIntraPredModeAと上近傍ブロックを示すイントラ予測モード変数candIntraPredModeBがいずれも非角度モードである場合、最確モード
の集合は
candModeList[0]=INTRA_DC
candModeList[1]=INTRA_ANGULAR50
candModeList[2]=INTRA_ANGULAR18
candModeList[3]=INTRA_ANGULAR46
candModeList[4]=INTRA_ANGULAR54
を含む、請求項1ないし5のうちいずれか一項に記載のエンコード装置。
【請求項7】
下記の条件、すなわち:変数availableXがFALSEに等しい;CuPredMode[xNbX][yNbX]がMODE_INTRA(またはイントラ予測モード)に等しくない;またはXがBに等しく、yCb-1は((yCb>>CtbLog2SizeY)<<CtbLog2SizeY)より小さい、のうちの一つまたは複数が真である場合、前記イントラ予測モード変数candIntraPredModeX(XはAまたはBによって置き換えられる)がINTRA_PLANARに等しく設定され、ここで、Xは近傍ブロックAまたはBによって置き換えられ、ルーマ位置(xCb,yCb)は現在のピクチャーの左上のルーマ・サンプルに対して現在のルーマ・コーディング・ブロックの左上のサンプルを指定し、左の近傍Aの位置(xNbA,yNbA)は(xCb-1,yCb+cbHeight-1)に等しく設定され、上の近傍Bの位置(xNbB,yNbB)は(xCb+cbWidth-1,yCb-1)に等しく設定され、変数cbWidthはルーマ・サンプル単位での現在のコーディング・ブロックの幅を指定し、変数cbHeightはルーマ・サンプル単位での現在のコーディング・ブロックの高さを指定し、CuPredMode[xNbA][yNbA]およびCuPredMode[xNbB][yNbB]はそれぞれ左および上の近傍ブロックAおよびBの予測モードを表し、yCb-1は((yCb>>CtbLog2SizeY)<<CtbLog2SizeY)より小さい、請求項6に記載のエンコード装置。
【請求項8】
現在ブロックの参照インデックス・ラインの値が0に等しくない場合、現在ブロックに最も近い近傍参照ラインはイントラ予測のために使用されない、請求項1ないし7のうちいずれか一項に記載のエンコード装置。
【請求項9】
エンコード装置によって実装されるイントラ予測の方法であって、当該方法は:
現在ブロックに最も近い近傍参照ラインがイントラ予測のために使用されるかどうかを決定する段階と;
現在ブロックに最も近い近傍参照ラインがイントラ予測のために使用されない場合、現在ブロックのイントラ予測モードが平面モードでないと決定する段階と;
ビットストリームをエンコードする段階であって、前記ビットストリームは、現在ブロックに最も近い近傍参照ラインがイントラ予測のために使用されないことを示す指示情報を含む、段階とを含む、
方法。
【請求項10】
現在ブロックに最も近い近傍参照ラインがイントラ予測のために使用されない場合、フラグintra_luma_not_planar_flagをデフォルト値に設定する段階であって、前記intra_luma_not_planar_flagは、現在ブロックのイントラ予測モードが平面モードでないことを示すために使用される、段階を含む、
請求項9に記載の方法。
【請求項11】
前記ビットストリームがさらに、現在ブロックのイントラ予測モードが平面モードでない場合に現在ブロックのイントラ予測モードのために最確モードの集合におけるどのイントラ予測モードが使用されるかを示すインデックスを含む、請求項9または10に記載の方法。
【請求項12】
前記インデックスがintra_luma_mpm_idx[x0][y0]である、請求項11に記載の方法。
【請求項13】
現在ブロックに最も近い近傍参照ラインがイントラ予測のために使用されない場合、フラグintra_luma_mpm_flagをデフォルト値に設定する段階であって、前記intra_luma_mpm_flagは、現在ブロックのイントラ予測モードが最確モード
の集合に含まれることを示すために使用される、段階を含む、請求項9ないし12のうちいずれか一項に記載の方法。
【請求項14】
左近傍ブロックを示すイントラ予測モード変数candIntraPredModeAと上近傍ブロックを示すイントラ予測モード変数candIntraPredModeBがいずれも非角度モードである場合、最確モード
の集合は
candModeList[0]=INTRA_DC
candModeList[1]=INTRA_ANGULAR50
candModeList[2]=INTRA_ANGULAR18
candModeList[3]=INTRA_ANGULAR46
candModeList[4]=INTRA_ANGULAR54
を含む、請求項9ないし13のうちいずれか一項に記載の方法。
【請求項15】
下記の条件、すなわち:変数availableXがFALSEに等しい;CuPredMode[xNbX][yNbX]がMODE_INTRA(またはイントラ予測モード)に等しくない;またはXがBに等しく、yCb-1は((yCb>>CtbLog2SizeY)<<CtbLog2SizeY)より小さい、のうちの一つまたは複数が真である場合、前記イントラ予測モード変数candIntraPredModeX(XはAまたはBによって置き換えられる)がINTRA_PLANARに等しく設定され、ここで、Xは近傍ブロックAまたはBによって置き換えられ、ルーマ位置(xCb,yCb)は現在のピクチャーの左上のルーマ・サンプルに対して現在のルーマ・コーディング・ブロックの左上のサンプルを指定し、左の近傍Aの位置(xNbA,yNbA)は(xCb-1,yCb+cbHeight-1)に等しく設定され、上の近傍Bの位置(xNbB,yNbB)は(xCb+cbWidth-1,yCb-1)に等しく設定され、変数cbWidthはルーマ・サンプル単位での現在のコーディング・ブロックの幅を指定し、変数cbHeightはルーマ・サンプル単位での現在のコーディング・ブロックの高さを指定し、CuPredMode[xNbA][yNbA]およびCuPredMode[xNbB][yNbB]はそれぞれ左および上の近傍ブロックAおよびBの予測モードを表し、yCb-1は((yCb>>CtbLog2SizeY)<<CtbLog2SizeY)より小さい、請求項14に記載の方法。
【請求項16】
現在ブロックの参照インデックス・ラインの値が0に等しくない場合、現在ブロックに最も近い近傍参照ラインはイントラ予測のために使用されない、請求項9ないし15のうちいずれか一項に記載の方法。
【請求項17】
デコード装置によって実装されるイントラ予測の方法であって、当該方法は:
ビットストリームをパースする段階であって、前記ビットストリームは、現在ブロックに最も近い近傍参照ラインがイントラ予測のために使用されるかどうかを示す指示情報を含む、段階と;
現在ブロックに最も近い近傍参照ラインがイントラ予測のために使用されない場合、現在ブロックのイントラ予測モードが平面モードでないと決定する段階と;
現在ブロックのイントラ予測モードが平面モードでない場合、現在ブロックのイントラ予測モードのために最確モードの集合におけるどのイントラ予測モードが使用されるかを示すインデックスを取得する段階とを含む、
方法。
【請求項18】
現在ブロックに最も近い近傍参照ラインがイントラ予測のために使用されない場合、フラグintra_luma_not_planar_flagは、現在ブロックのイントラ予測モードが平面モードでないことを示すと推定される、請求項17に記載の方法。
【請求項19】
現在ブロックの参照インデックス・ラインの値が0に等しくない場合、現在ブロックに最も近い近傍参照ラインはイントラ予測のために使用されない、請求項17または18に記載の方法。
【請求項20】
現在ブロックのイントラ予測モードのために最確モードの集合におけるどのイントラ予測モードが使用されるかを示すインデックスintra_luma_mpm_idx[x0][y0]が現在ブロックのイントラ予測モードのために使用され、該インデックスは前記ビットストリームから得られる、請求項17ないし19のうちいずれか一項に記載の方法。
【請求項21】
左近傍ブロックを示すイントラ予測モード変数candIntraPredModeAと上近傍ブロックを示すイントラ予測モード変数candIntraPredModeBがいずれも非角度モードである場合、最確モードの前記集合は
candModeList[0]=INTRA_DC
candModeList[1]=INTRA_ANGULAR50
candModeList[2]=INTRA_ANGULAR18
candModeList[3]=INTRA_ANGULAR46
candModeList[4]=INTRA_ANGULAR54
を含む、請求項20に記載の方法。
【請求項22】
請求項9ないし16のうちいずれか一項に記載の方法を実行するための処理回路を有するエンコーダ(20)。
【請求項23】
請求項17ないし21のうちいずれか一項に記載の方法を実行するための処理回路を有するデコーダ(30)。
【請求項24】
請求項9ないし21のうちいずれか一項に記載の方法を実行するための命令の集合を有することを特徴とする、非一時的なコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願への相互参照
本願は、2019年3月23日に出願された米国仮出願第62/822,865号、2019年3月26日に出願された米国仮出願第62/824,282号、および2019年3月27日に出願された米国仮出願第62/824,360号に対する優先権を主張し、これらの出願のすべては参照により本明細書に組み込まれる。
【0002】
技術分野
本願(開示)の実施形態は、概括的には、ピクチャー処理の分野に関し、より詳細には、イントラ予測に関する。
【背景技術】
【0003】
ビデオコーディング(ビデオ・エンコードおよびデコード)は、広範囲のデジタルビデオアプリケーション、たとえば、放送デジタルTV、インターネットおよびモバイルネットワークを通じたビデオ伝送、ビデオチャット、ビデオ会議のようなリアルタイムの会話アプリケーション、DVDおよびブルーレイディスク、ビデオコンテンツの収集および編集システム、ならびにセキュリティアプリケーションのビデオカメラに使用される。
【0004】
比較的短いビデオを描写するために必要とされるビデオ・データの量でさえ、かなりになることがあり、そのことは、データがストリーミングされるか、または限られた帯域幅容量をもつ通信ネットワークを通じて他の仕方で通信される場合に、困難を生じる可能性がある。よって、ビデオ・データは、一般に、現代の遠隔通信ネットワークを通じて通信される前に圧縮される。メモリ資源が制限される可能性があるため、ビデオが記憶装置に記憶される場合には、ビデオのサイズも問題となる可能性がある。ビデオ圧縮装置は、しばしば、伝送または記憶の前にビデオ・データをコーディングするために源においてソフトウェアおよび/またはハードウェアを使用し、それによりデジタルビデオ画像を表わすのに必要とされるデータの量を減少させる。次いで、圧縮されたデータは、ビデオ・データをデコードするビデオ圧縮解除装置によって宛先で受領される。限られたネットワーク資源およびますます増大する、より高いビデオ品質の要求のため、ピクチャー品質の犠牲がほとんどまたは全くない、圧縮比を改善する改良された圧縮および圧縮解除技術が望ましい。
【0005】
特に、イントラ予測処理のコンテキストにおいてプロセッサ負荷を低減するための継続的な要求がある。当技術分野では、イントラ予測モード・コーディングのために最確モード(Most Probable Mode、MPM)リストを使用することが知られている。MPMリストは、現在ブロックのイントラ予測モードをコーディングするために要求されるビットを減らす。現在ブロックのイントラ予測モードがMPMリストのエントリーに対応する場合、実際のモードではなくインデックスがコーディングされ、それにより、より少ないビットが必要となる。しかしながら、最も効率的なイントラ予測コーディングを考慮してMPMリスト生成のためのエントリーを選択することは、依然としてタスクである。エントリーの適正な選択は、MPMリストに基づくイントラ予測モード・コーディングの効率に大きく影響する。
【0006】
これに鑑み、本発明の基礎をなす目的は、当該技術と比較してより効率的なコーディングをもたらす、MPMリストに基づいてイントラ予測モードを得るための技術を提供することである。
【発明の概要】
【0007】
本願の実施形態は、独立請求項による、エンコードおよびデコードするための装置および方法を提供する。
【0008】
上記および他の目的は、独立請求項の主題事項によって達成される。さらなる実装形態は、従属請求項、明細書および図面から明白である。
【0009】
第1の側面によれば、本発明は、デコード装置によって実行される方法に関する。この方法は:現在ブロックの第1の指示情報の値を取得する段階であって、前記第1の指示情報の値は、現在ブロックのイントラ予測モードが最確モードの集合に含まれるかどうかを示す、段階と;現在ブロックの参照インデックス・ラインの値を取得する段階とを含む。最確モードの集合は、5つの候補イントラ予測モードと平面モードを含む。第1の指示情報の値が、現在ブロックのイントラ予測モードが最確モードの集合に含まれることを示す場合、および前記参照インデックス・ラインの値が、現在ブロックに最も近い近傍参照ラインが使用されることを示す場合には、本方法はさらに、現在ブロックの第2の指示情報の値を取得する段階であって、現在ブロックの前記第2の指示情報の値は、現在ブロックのイントラ予測モードが平面モードであるか否かを示す、段階とをさらに含む。
【0010】
従来の方法では、MPM処理のためのデコード複雑性が高い。複数参照ライン(Multiple Reference Line、MRL)およびイントラサブパーティションコーディング・モード(intra sub-partition coding mode、ISP)ツールの使用に依存して、3つの異なるMPMリスト(6個のエントリー)が構築される。本発明の諸側面または諸側面の任意の可能な実施形態において、MPMリスト(5個のエントリー)構築は、MRLまたはISPコーディング・ツールを使用するかどうかにかかわらず、低減されたデコード複雑性と統一される。
【0011】
さらに、平面モードはその高い頻度のため特殊なモードと考えられ、現在のモードが平面モードであるか否かをチェックするために特殊なフラグが割り当てられる。それは(発明された5個のエントリーをもつ)MPMリストにはないが、それはmpmフラグが真である場合は常にチェックされる。言い換えると、mpmフラグは、現在ブロックのイントラ予測モードが、平面モードと5個のMPMリスト・エントリーからなる6つのエントリーのリストにあるかどうかを示す。5個のMPMリスト・エントリーは、左上ブロックのイントラ予測モードに基づいて構築される。
【0012】
第1の側面の実装として、第1の指示情報は、第1のフラグ、たとえばintra_luma_mpm_flagによって示される。現在ブロックの参照インデックス・ラインの値は、intra_luma_ref_idxによって示されてもよい。第2の指示情報は、第2のフラグ、たとえばintra_luma_not_planar_flagによって示されてもよい。
【0013】
MRLコーディングが有効にされていない場合、すなわち、参照インデックス・ラインの値が現在ブロックに最も近い近傍参照ラインを示す場合、諸装置は、前記第2の指示情報の値を得るためにビットストリームをパースする。MRLコーディングが有効にされている場合、第2の指示情報の値はデフォルト値によって取得される。この状況では、平面モードは除外され、その対応するフラグ(すなわち、intra_luma_not_planar_flag)はビットストリームからパースされず、デフォルト値(たとえば1の値)として推定される。この場合、MRLが有効にされている場合)平面フラグ(すなわち、intra_luma_not_planar)の値を示すビットが節約される。
【0014】
第2の側面によれば、本発明は、エンコード装置によって実行される方法に関する。本方法は、現在ブロックのイントラ予測モードが最確モードの集合に含まれるかどうかを判定する段階と;現在ブロックに最も近い近傍参照ラインがイントラ予測のために使用されるかどうかを判定する段階とを含む。最確モードの集合は、5つの候補イントラ予測モードと平面モードを含む。本方法はさらに、ビットストリームをエンコードする段階を含み、現在ブロックのイントラ予測モードが最確モードの集合に含まれ、かつ、現在ブロックに最も近い近傍参照ラインがイントラ予測のために使用される場合に、ビットストリームは、現在ブロックのイントラ予測モードが平面モードであるかどうかを示す情報を含む。
【0015】
第2の側面の実装として、ビットストリームは、現在ブロックのイントラ予測モードが最確モードの集合に含まれるかどうかを示す第1のフラグと、現在ブロックのイントラ予測モードが平面モードであるかどうかを示す第2のフラグとを含む。例として、第1のフラグはintra_luma_mpm_flagであり、第2のフラグはintra_luma_not_planar_flagである。
【0016】
本発明の第1の側面による方法は、本発明の第3の側面によるデコード装置によって実行されることができる。デコード装置は、第1の取得ユニットおよび第2の取得ユニットを含む。第1の取得ユニットは、現在ブロックの参照インデックス・ラインの値、および現在ブロックの第1の指示情報の値を得るように構成され、第1の指示情報の値は、現在ブロックのイントラ予測モードが最確モードの集合に含まれるかどうかを示す。最確モードの集合は、5個の候補イントラ予測モードおよび平面モードを含む。第2の取得ユニットは、前記第1の指示情報の値が、現在ブロックのイントラ予測モードが最確モードの集合に含まれていることを示す場合、および、前記参照インデックス・ラインの値が、現在ブロックに最も近い近傍参照ラインが使用されることを示す場合に、現在ブロックの第2の指示情報の値を取得するように構成される。現在ブロックの前記第2の指示情報の値は、現在ブロックのイントラ予測モードが平面モードであるかどうかを示す。
【0017】
本発明の第3の側面による方法のさらなる特徴および実装は、本発明の第1の側面による装置の特徴および実装形態に対応する。
【0018】
本発明の第2の側面の方法は、本発明の第4の側面のエンコード装置によって実行されることができる。エンコード装置は、決定ユニットとエンコード・ユニットとを含む。決定ユニットは、現在ブロックのイントラ予測モードが最確モードの集合に含まれるかどうかを決定し、現在ブロックに最も近い近傍参照ラインがイントラ予測のために使用されるかどうかを決定するように構成される。最確モードの集合は、5つの候補イントラ予測モードと平面モードを含む。エンコード・ユニットは、ビットストリームをエンコードするように構成され、ビットストリームは、現在ブロックのイントラ予測モードが最確モードの集合に含まれる、かつ、現在ブロックに最も近い近傍参照ラインがイントラ予測のために使用される場合に、現在ブロックのイントラ予測モードが平面モードであるかどうかを示す情報を含む。
【0019】
本発明の第4の側面による方法のさらなる特徴および実装形態は、本発明の第2の側面による装置の特徴および実装形態に対応する。
【0020】
第5の側面によれば、本発明は、ビデオ・ストリームをデコードする装置であって、プロセッサおよびメモリを含む装置に関する。メモリは、プロセッサに第1の側面による方法を実行させる命令を記憶している。
【0021】
第6の側面によれば、本発明は、ビデオ・ストリームをエンコードする装置であって、プロセッサおよびメモリを含む装置に関する。メモリは、プロセッサに第2の側面による方法を実行させる命令を記憶している。
【0022】
第7の側面によれば、実行されると、ビデオ・データをコーディングするように構成された一つまたは複数のプロセッサを引き起こす命令が記憶されているコンピュータ読み取り可能な記憶媒体が提案される。命令は、前記一つまたは複数のプロセッサに、第1の側面もしくは第2の側面または第1の側面もしくは第2の側面の任意の可能な実施形態による方法を実行させる。
【0023】
第8の側面によれば、本発明は、コンピュータ上で実行されたときに、第1の側面もしくは第2の側面、または第1の側面もしくは第2の側面の任意の可能な実施形態による方法を実行するためのプログラム・コードを含むコンピュータ・プログラムに関する。
【0024】
平面モードは、イントラ予測モードとして使用される高い頻度を有する。コーディング・プロセスのコーディング効率は、現在ブロックのイントラ予測モードが最確モードの集合に含まれ、かつ、現在ブロックに最も近い近傍参照ラインがイントラ予測のために使用される場合に、現在ブロックのイントラ予測モードが平面モードであるかどうかを示す情報の使用によって、当該技術と比較して向上されることができる。
【0025】
一つまたは複数の実施形態の詳細は、添付の図面および以下の説明に記載されている。他の特徴、目的、および利点は、明細書、図面、および特許請求の範囲から明白であろう。
【図面の簡単な説明】
【0026】
下記では、本発明の実施形態が、添付の図面および図を参照して、より詳細に説明される。
【
図1A】本発明の実施形態を実装するように構成されたビデオコーディングシステムの例を示すブロック図である。
【
図1B】本発明の実施形態を実装するように構成されたビデオコーディングシステムの別の例を示すブロック図である。
【
図2】本発明の実施形態を実装するように構成されたビデオ・エンコーダの例を示すブロック図である。
【
図3】本発明の実施形態を実装するように構成されたビデオ・デコーダの例示的な構造を示すブロック図である。
【
図4】エンコード装置またはデコード装置の例を示すブロック図である。
【
図5】エンコード装置またはデコード装置の別の例を示すブロック図である。
【
図6】複数参照ライン(MRL)コーディング・ツールの例を示すブロック図である。
【
図7】4×8および8×4ブロックの分割の例を示すブロック図である。
【
図8】4×8、8×4および4×4以外のすべてのブロックの分割の例を示すブロック図である。
【
図9】CABACコンテキストのモデリング/コーディングの例を示すブロック図である。
【
図10】現在ブロックの左(L)および上(A)の近傍ブロックの例を示すブロック図である。
【
図11】イントラ予測モードを示すブロック図である。
【
図12A】本発明によるデコード装置によって実装される現在ブロックのイントラ予測の方法1200の実施形態を示す。
【
図12B】本発明によるデコード装置によって実装される現在ブロックのイントラ予測の方法1210の実施形態を示す。
【
図13】本発明によるエンコード装置によって実装される現在ブロックのイントラ予測の方法1300の実施形態を示す。
【
図14】本発明による画像デコーダにおいて使用するためのデコード装置1400の実施形態を示す。
【
図15】本発明による画像エンコーダにおいて使用するためのエンコード装置1500の実施形態を示す。
【
図16】コンテンツ配信サービスを実現するコンテンツ供給システム3100の例示的な構造を示すブロック図である。
【
図17】端末装置の一例の構造を示すブロック図である。
【0027】
下記では、同一の参照符号は、そうでないことが明示的に指定されていない場合は、同一のまたは少なくとも機能的に等価な特徴を指す。
【発明を実施するための形態】
【0028】
以下の説明では、本開示の一部をなし、本発明の実施形態の具体的な側面または本発明の実施形態が使用されうる具体的な側面を例として示す添付の図面が参照される。本発明の実施形態は、他の側面で使用されてもよく、図に示されていない構造的または論理的変更を含みうることが理解される。よって、以下の詳細な説明は、限定的な意味で解釈されるべきではなく、本発明の範囲は、添付の特許請求の範囲によって定義される。
【0029】
たとえば、記載された方法に関連する開示は、当該方法を実行するように構成された対応する装置またはシステムについても真であることがあり、その逆もありうることが理解される。たとえば、一つまたは複数の特定の方法ステップが記載されている場合、対応する装置は、記載された一つまたは複数の方法ステップ(たとえば、一つまたは複数のステップを実行する1つのユニット、または複数のステップの一つ以上をそれぞれが実行する複数のユニット)を実行するための一つまたは複数のユニット、たとえば機能ユニットを、たとえそのような一つまたは複数のユニットが明示的に記載または図示されていなくても、含んでいてもよい。他方、たとえば、一つまたは複数のユニット、たとえば、機能ユニットに基づいて特定の装置が記載される場合、対応する方法は、一つまたは複数のユニットの機能を実行するための1つのステップ(たとえば、前記一つまたは複数のユニットの機能を実行する1つのステップ、または複数のユニットのうちの一つまたは複数の機能をそれぞれ実行する複数のステップ)を、たとえそのような一つまたは複数のステップが明示的に記載または図示されていなくても、含んでいてもよい。さらに、本明細書に記載されるさまざまな例示的な実施形態および/または側面の特徴は、特に断りのない限り、互いに組み合わされてもよいことができることが理解される。
【0030】
ビデオコーディングは、典型的には、ビデオまたはビデオ・シーケンスを形成するピクチャーのシーケンスの処理をいう。「ピクチャー」という用語の代わりに、「フレーム」または「画像」という用語が、ビデオコーディングの分野では同義語として使用されることがある。ビデオコーディング(または、コーディング全般)は、ビデオ・エンコードおよびビデオ・デコードという2つの部分を有する。ビデオ・エンコードは、源側で実行され、典型的には、(より効率的な記憶および/または伝送のために)ビデオ・ピクチャーを表現するのに必要なデータ量を減らすために、もとのビデオ・ピクチャーを(たとえば、圧縮によって)処理することを含む。ビデオ・デコードは、宛先側で実行され、典型的には、ビデオ・ピクチャーを再構成するために、エンコーダと比較して逆の処理を含む。ビデオ・ピクチャー(または、ピクチャー全般)の「コーディング」に言及する実施形態は、ビデオ・ピクチャーまたはそれぞれのビデオ・シーケンスの「エンコード」または「デコード」に関連するものと理解される。エンコード部分とデコード部分の組み合わせは、コーデック(コーディングおよびデコーディング)とも呼ばれる。
【0031】
損失のないビデオコーディングの場合、もとのビデオ・ピクチャーが再構成できる。すなわち、再構成されたビデオ・ピクチャーは、もとのビデオ・ピクチャーと同じ品質をもつ(記憶または伝送の間に伝送損失またはその他のデータ損失がないとする)。損失のあるビデオコーディングの場合、ビデオ・ピクチャーを表わすデータの量を減らすために、たとえば量子化によるさらなる圧縮が実行され、これはデコーダにおいて完全に再構成されることができない。すなわち、再構成されたビデオ・ピクチャーの品質は、もとのビデオ・ピクチャーの品質に比べ低いまたは悪い。
【0032】
いくつかのビデオコーディング標準は、「損失のあるハイブリッド・ビデオ・コーデック」のグループに属する(すなわち、サンプル領域における空間的および時間的予測と、変換領域における量子化を適用するための2D変換コーディングを組み合わせる)。ビデオ・シーケンスの各ピクチャーは、典型的には、重複しないブロックの集合にパーティション分割され、コーディングは典型的にはブロック・レベルで実行される。換言すれば、エンコーダでは、ビデオは、典型的には、ブロック(ビデオ・ブロック)レベルで処理、すなわち、エンコードされる。これはたとえば、空間的(ピクチャー内)予測および/または時間的(ピクチャー間)予測を使用して予測ブロックを生成し、現在のブロック(現在処理されている/処理されるべきブロック)から予測ブロックを減算して残差ブロックを取得し、残差ブロックを変換し、変換領域において残差ブロックを量子化して、送信されるべきデータ量を低減すること(圧縮)による。一方、デコーダでは、エンコーダに比べ逆の処理が、エンコードされたまたは圧縮されたブロックに適用されて、表現のために現在のブロックを再構成する。さらに、エンコーダはデコーダ処理ループを複製し、両者が同一の予測(たとえばイントラ予測およびインター予測)および/または再構成を、処理、すなわち、その後のブロックのコーディングのために、生成する。
【0033】
ビデオコーディングシステム10の以下の実施形態では、
図1~
図3に基づいて、ビデオ・エンコーダ20およびビデオ・デコーダ30が記述される。
【0034】
図1Aは、本願の技術を利用することができる例示的なコーディングシステム10、たとえばビデオコーディングシステム10(または略してコーディングシステム10)を示す概略ブロック図である。ビデオコーディングシステム10のビデオ・エンコーダ20(または略してエンコーダ20)およびビデオ・デコーダ30(または略してデコーダ30)は、本願に記載されるさまざまな例による技術を実行するように構成されうる装置の例を表わす。
【0035】
図1Aに示されるように、コーディングシステム10は、エンコードされたピクチャー・データ21を、たとえば該エンコードされたピクチャー・データ13をデコードする宛先装置14に提供するように構成された源装置12を有する。
【0036】
源装置12は、エンコーダ20を有し、追加的すなわち任意的に、ピクチャー源16、プリプロセッサ(または前処理ユニット)18、たとえばピクチャー・プリプロセッサ18、および通信インターフェースもしくは通信ユニット22を有していてもよい。
【0037】
ピクチャー源16は、任意の種類のピクチャー捕捉装置、たとえば、実世界ピクチャーを捕捉するためのカメラ、および/または任意の種類のピクチャー生成装置、たとえば、コンピュータ・アニメーション化されたピクチャーを生成するためのコンピュータ・グラフィックス・プロセッサ、または、実世界ピクチャー、コンピュータ生成されたピクチャー(たとえば、スクリーン・コンテンツ、仮想現実(VR)ピクチャー)、および/またはそれらの任意の組み合わせ(たとえば、拡張現実(AR)ピクチャー)を取得および/または提供するための任意の種類の他の装置を有するか、またはそのようなものであってよい。ピクチャー源は、上記のピクチャーのいずれかを記憶する任意の種類のメモリまたは記憶であってもよい。
【0038】
プリプロセッサ18および前処理ユニット18によって実行される処理と区別して、ピクチャーまたはピクチャー・データ17は、生ピクチャーまたは生ピクチャー・データ17と称されてもよい。
【0039】
プリプロセッサ18は、(生)ピクチャー・データ17を受け取り、ピクチャー・データ17に対して前処理を実行し、前処理されたピクチャー19または前処理されたピクチャー・データ19を得るように構成される。プリプロセッサ18によって実行される前処理は、たとえば、トリミング、色フォーマット変換(たとえば、RGBからYCbCrへ)、色補正、またはノイズ除去を含んでいてもよい。前処理ユニット18は、任意的な構成要素であってもよいことが理解できる。
【0040】
ビデオ・エンコーダ20は、前処理されたピクチャー・データ19を受領し、エンコードされたピクチャー・データ21を提供するように構成される(さらなる詳細は、たとえば
図2に基づいて後述する)。
【0041】
源装置12の通信インターフェース22は、エンコードされたピクチャー・データ21を受領し、エンコードされたピクチャー・データ21(またはその任意のさらなる処理バージョン)を、通信チャネル13を通じて、別の装置、たとえば宛先装置14または任意の他の装置に、記憶または直接再構成のために送信するように構成されてもよい。
【0042】
宛先装置14は、デコーダ30(たとえば、ビデオ・デコーダ30)を有しており、追加的すなわち任意的に、通信インターフェースまたは通信ユニット28、ポストプロセッサ32(または後処理ユニット32)、および表示装置34を有していてもよい。
【0043】
宛先装置14の通信インターフェース28は、エンコードされたピクチャー・データ21(またはそのさらなる処理されたバージョン)を、たとえば源装置12から直接、または他の任意の源、たとえば記憶装置、たとえばエンコード・ピクチャー・データ記憶装置から受領し、エンコードされたピクチャー・データ21をデコーダ30に提供するように構成される。
【0044】
通信インターフェース22および通信インターフェース28は、源装置12と宛先装置14との間の直接通信リンク、たとえば直接的な有線もしくは無線接続を介して、または任意の種類のネットワーク、たとえば有線もしくは無線ネットワークもしくはそれらの任意の組み合わせ、または任意の種類の私的および公的ネットワーク、またはそれらの任意の種類の組み合わせを介して、エンコードされたピクチャー・データ21またはエンコードされたデータ13を送信または受信するように構成されてもよい。
【0045】
通信インターフェース22は、たとえば、エンコードされたピクチャー・データ21を適切なフォーマット、たとえば、パケットにパッケージ化し、および/またはエンコードされたピクチャー・データを通信リンクもしくは通信ネットワークを通じた伝送のための任意の種類の伝送エンコードもしくは処理を用いて処理するように構成されてもよい。
【0046】
通信インターフェース22の相手をなす通信インターフェース28は、たとえば、送信されたデータを受信し、任意の種類の対応する伝送デコードもしくは処理および/またはパッケージ化解除を用いて伝送データを処理して、エンコードされたピクチャー・データ21を得るように構成されてもよい。
【0047】
通信インターフェース22および通信インターフェース28の両方は、
図1Aにおいて源装置12から宛先装置14を指す通信チャネル13についての矢印によって示されるような一方向通信インターフェース、または双方向通信インターフェースとして構成されることができ、たとえば、メッセージを送信および受信するように構成されてもよい。たとえば接続をセットアップするため、通信リンクおよび/またはデータ伝送、たとえばエンコードされたピクチャー・データ伝送に関連する任意の他の情報を受け取り確認および交換するためである。
【0048】
デコーダ30は、エンコードされたピクチャー・データ21を受信し、デコードされたピクチャー・データ31またはデコードされたピクチャー31を提供するように構成される(さらなる詳細は、たとえば
図3または
図5に基づいて後述する)。
【0049】
宛先装置14のポストプロセッサ32は、デコードされたピクチャー・データ31(再構成されたピクチャー・データとも呼ばれる)、たとえばデコードされたピクチャー31を後処理して、後処理されたピクチャー・データ33、たとえば後処理されたピクチャー33を得るように構成される。後処理ユニット32によって実行される後処理は、たとえば、色フォーマット変換(たとえば、YCbCrからRGBへ)、色補正、トリミング、または再サンプリング、または、たとえばデコードされたピクチャー・データ31を、たとえば表示装置34による、表示のために準備するための任意の他の処理を含むことができる。
【0050】
宛先装置14の表示装置34は、ピクチャーを、たとえばユーザーまたは閲覧者に対して表示するために、後処理されたピクチャー・データ33を受領するように構成される。表示装置34は、再構成されたピクチャーを表現するための任意の種類のディスプレイ、たとえば、統合されたまたは外部のディスプレイまたはモニターであってもよく、またはそれを含んでいてもよい。ディスプレイは、たとえば、液晶ディスプレイ(LCD)、有機発光ダイオード(OLED)ディスプレイ、プラズマディスプレイ、プロジェクター、マイクロLEDディスプレイ、液晶オン・シリコン(LCoS)、デジタル光プロセッサ(DLP)、または任意の他の種類のディスプレイを含みうる。
【0051】
図1Aは、源装置12および宛先装置14を別個の装置として描いているが、装置の実施形態は、両方もしくは両方の機能、源装置12もしくは対応する機能および宛先装置14もしくは対応する機能を含んでいてもよい。そのような実施形態では、源装置12または対応する機能と宛先装置14または対応する機能は、同じハードウェアおよび/またはソフトウェアを使用して、または別個のハードウェアおよび/またはソフトウェアまたはそれらの任意の組み合わせによって実装されることができる。
【0052】
前記記述に基づいて当業者には明白であろうように、異なるユニットの機能または
図1Aに示されるような源装置12および/または宛先装置14内の機能の存在および(厳密な)分割は、実際の装置および用途に依存して変わりうる。
【0053】
エンコーダ20(たとえば、ビデオ・エンコーダ20)、またはデコーダ30(たとえば、ビデオ・デコーダ30)、またはエンコーダ20とデコーダ30の両方は、
図1Bに示されるような処理回路、たとえば、一つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディクリート論理、ハードウェア、専用のビデオコーディング、またはそれらの任意の組み合わせを介して実装されうる。エンコーダ20は、
図2のエンコーダ20および/または本明細書に記載される任意の他のエンコーダ・システムまたはサブシステムに関して論じられるさまざまなモジュールを具現するために、処理回路46を介して実装されてもよい。デコーダ30は、
図3のデコーダ30および/または本明細書に記載される任意の他のデコーダ・システムまたはサブシステムに関して論じられるさまざまなモジュールを具現するために、処理回路46を介して実装されてもよい。処理回路は、後述するように、さまざまな動作を実行するように構成されうる。
図5に示されるように。技術が部分的にソフトウェアで実装される場合、装置が、好適な非一時的なコンピュータ読み取り可能な記憶媒体に該ソフトウェアのための命令を記憶してもよく、一つまたは複数のプロセッサを使用してハードウェアにおいて該命令を実行して、本開示の技術を実行してもよい。ビデオ・エンコーダ20とビデオ・デコーダ30のいずれかも、たとえば
図1Bに示されるように、組み合わされたエンコーダ/デコーダ(コーデック)の一部として単一の装置内に統合されてもよい。
【0054】
源装置12および宛先装置14は、任意の種類のハンドヘルドもしくは固定装置、たとえばノートブックまたはラップトップコンピュータ、携帯電話、スマートフォン、タブレットまたはタブレットコンピュータ、カメラ、デスクトップコンピュータ、セットトップボックス、テレビ、表示装置、デジタルメディアプレーヤー、ビデオゲーム機、ビデオストリーミング装置(コンテンツサービスサーバーまたはコンテンツ送達サーバーなど)、放送受信機装置、放送送信機装置などを含む、広範囲の装置の任意のものを含むことができ、オペレーティング・システムを使用しなくてもよく、あるいは任意の種類のオペレーティング・システムを使用してもよい。
【0055】
場合によっては、源装置12および宛先装置14は、無線通信用のために装備されてもよい。よって、源装置12および宛先装置14は、無線通信装置であってもよい。場合によっては、
図1Aに示されるビデオコーディングシステム10は、単に例であり、本願の技術は、必ずしもエンコード装置とデコード装置との間のデータ通信を含まないビデオコーディング場面(たとえば、ビデオ・エンコードまたはビデオ・デコード)に適用されうる。他の例では、データはローカルメモリから取り出される、ネットワークを通じてストリーミングされる、などされる。ビデオ・エンコード装置は、データをエンコードし、メモリに格納することができ、および/またはビデオ・デコード装置は、メモリからデータを取り出し、デコードすることができる。いくつかの例では、エンコードおよびデコードは、互いに通信せず、単にデータをメモリにエンコードする、および/またはデータをメモリから取り出してデコードする装置によって実行される。
【0056】
記述の便宜上、本発明の実施形態は、本明細書では、たとえば、高効率ビデオコーディング(HEVC)または多用途ビデオコーディング(VVC)の参照ソフトウェア、ITU-Tビデオコーディングエキスパートグループ(VCEG)およびISO/IEC動画像エキスパートグループ(MPEG)のビデオコーディングに関する統合協働チーム(Joint Collaboration Team on Video Coding、JCT-VC)によって開発された次世代ビデオコーディング規格を参照して記載される。当業者は、本発明の実施形態がHEVCまたはVVCに限定されないことを理解するであろう。
【0057】
エンコーダおよびエンコード方法
図2は、本願の技術を実装するように構成された例示的なビデオ・エンコーダ20の概略ブロック図を示す。
図2の例では、ビデオ・エンコーダ20は、入力201(または入力インターフェース201)、残差計算ユニット204、変換処理ユニット206、量子化ユニット208、逆量子化ユニット210、逆変換処理ユニット212、再構成ユニット214、ループ・フィルタ・ユニット220、デコードピクチャーバッファ(decoded picture buffer、DPB)230、モード選択ユニット260、エントロピー・エンコード・ユニット270、および出力272(または出力インターフェース272)を有する。モード選択ユニット260は、インター予測ユニット244と、イントラ予測ユニット254と、パーティション分割ユニット262とを含んでいてもよい。インター予測ユニット244は、動き推定ユニットおよび動き補償ユニット(図示せず)を含んでいてもよい。
図2に示されるビデオ・エンコーダ20は、ハイブリッド・ビデオ・エンコーダまたはハイブリッド・ビデオ・コーデックによるビデオ・エンコーダと称されてもよい。
【0058】
残差計算ユニット204、変換処理ユニット206、量子化ユニット208、モード選択ユニット260はエンコーダ20の順方向信号経路を形成すると称されてもよく、一方、逆量子化ユニット210、逆変換処理ユニット212、再構成ユニット214、バッファ216、ループ・フィルタ220、デコードピクチャーバッファ(DPB)230、インター予測ユニット244、およびイントラ予測ユニット254は、ビデオ・エンコーダ20の逆方向信号経路を形成すると称されてもよい。ビデオ・エンコーダ20の逆方向信号経路はデコーダ(
図3のビデオ・デコーダ30参照)の信号経路に対応する。逆量子化ユニット210、逆変換処理ユニット212、再構成ユニット214、ループ・フィルタ220、デコードピクチャーバッファ(DPB)230、インター予測ユニット244、およびイントラ予測ユニット254は、ビデオ・エンコーダ20の「組み込みデコーダ」をなすとも称される。
【0059】
ピクチャーおよびピクチャーパーティション分割(ピクチャーとブロック)
エンコーダ20は、たとえば入力201を介してピクチャー17(またはピクチャー・データ17)、たとえばビデオまたはビデオ・シーケンスを形成するピクチャーのシーケンスのピクチャーを受領するように構成されてもよい。受領されたピクチャーまたはピクチャー・データは、前処理されたピクチャー19(または前処理されたピクチャー・データ19)であってもよい。簡単のために、以下の記述は、ピクチャー17を参照する。ピクチャー17はまた、現在ピクチャーまたはコーディングされるべきピクチャーと称されてもよい(特に、ビデオコーディングにおいては、現在ピクチャーを他のピクチャー、たとえば、同じビデオ・シーケンス、すなわち現在ピクチャーをも含むビデオ・シーケンスの、以前にエンコードおよび/またはデコードされたピクチャーから区別するために)。
【0060】
(デジタル)ピクチャーは、強度値をもつサンプルの二次元アレイまたはマトリクスとみなされるか、またはみなされることができる。アレイ中のサンプルは、ピクセル(ピクチャー・エレメントの短縮形)または画素と称されてもよい。アレイまたはピクチャーの水平および垂直方向(または軸)のサンプル数は、ピクチャーのサイズおよび/または解像度を定義する。色の表現のためには、典型的には、3つの色成分が使用される。すなわち、ピクチャーは、3つのサンプル・アレイで表現される、または3つのサンプル・アレイを含むことができる。RBGフォーマットまたは色空間においては、ピクチャーは、対応する赤、緑および青のサンプル・アレイを含む。しかしながら、ビデオコーディングにおいては、各ピクセルは、典型的には、ルミナンスおよびクロミナンス・フォーマットまたは色空間、たとえば、Yで示されるルミナンス成分(時に代わりにLが使用される)、とCbおよびCrで示される2つのクロミナンス成分を含むYCbCrで表現される。ルミナンス(または略してルーマ)成分Yは輝度またはグレーレベル強度(例えば、グレースケール・ピクチャーにおけるような)を表わし、その一方、2つのクロミナンス(または略してクロマ)成分CbおよびCrは色度または色情報成分を表わす。よって、YCbCrフォーマットのピクチャーは、ルミナンス・サンプル値(Y)のルミナンス・サンプル・アレイと、クロミナンス値(CbおよびCr)の2つのクロミナンス・サンプル・アレイとを含む。RGBフォーマットのピクチャーは、YCbCrフォーマットに変換または転換されることができ、その逆も可能である。このプロセスは色変換または転換としても知られる。ピクチャーがモノクロである場合、ピクチャーはルミナンス・サンプル・アレイのみを含んでいてもよい。したがって、ピクチャーは、たとえば、4:2:0、4:2:2、および4:4:4色フォーマットにおける、モノクロ・フォーマットのルーマ・サンプルのアレイまたはルーマ・サンプルのアレイと、クロマ・サンプルの2つの対応するアレイとでありうる。
【0061】
ビデオ・エンコーダ20の実施形態は、ピクチャー17を複数の(典型的には重複しない)ピクチャー・ブロック203にパーティション分割するように構成されたピクチャーパーティション分割ユニット(
図2には示されていない)を含んでいてもよい。これらのブロックは、ルートブロック、マクロブロック(H.264/AVC)またはコーディング・ツリー・ブロック(CTB)またはコーディングツリー単位(CTU)(H.265/HEVCおよびVVC)と称されることもある。ピクチャーパーティション分割ユニットは、ビデオ・シーケンスのすべてのピクチャーについて同じブロック・サイズおよび該ブロック・サイズを定義する対応するグリッドを使用するように、あるいは、ピクチャー間、またはピクチャーのサブセットもしくはグループ間でブロック・サイズを変更し、各ピクチャーを対応するブロックにパーティション分割するように構成されてもよい。
【0062】
さらなる実施形態では、ビデオ・エンコーダは、ピクチャー17のブロック203、たとえば、ピクチャー17を形成する1つの、いくつかの、またはすべてのブロックを直接受領するように構成されてもよい。ピクチャー・ブロック203は、現在のピクチャー・ブロックまたはコーディングされるべきピクチャー・ブロックと称されることもある。
【0063】
ピクチャー17と同様に、ピクチャー・ブロック203もまた、ピクチャー17よりも小さい寸法ではあるが、強度値(サンプル値)をもつサンプルの二次元アレイまたはマトリクスとしてみなされる、またはみなされることができる。言い換えると、ブロック203は、たとえば、1つのサンプル・アレイ(たとえば、モノクロ・ピクチャー17の場合のルーマ・アレイ、またはカラー・ピクチャーの場合のルーマもしくはクロマ・アレイ)、または3つのサンプル・アレイ(たとえば、カラー・ピクチャー17の場合のルーマ・アレイおよび2つのクロマ・アレイ)、または適用される色フォーマットに依存して任意の他の数および/または種類のアレイを含むことができる。ブロック203の水平および垂直方向(または軸)のサンプル数は、ブロック203のサイズを定義する。よって、ブロックは、たとえば、サンプルのM×N(M列×N行)アレイ、または変換係数のM×Nアレイであってもよい。
【0064】
図2に示されるようなビデオ・エンコーダ20の実施形態は、ブロック毎にピクチャー17をエンコードするように構成されてもよく、たとえば、エンコードおよび予測はブロック203毎に実行される。
【0065】
図2に示されるようなビデオ・エンコーダ20の実施形態はさらに、スライス(ビデオ・スライスとも称される)を使うことによってピクチャーをパーティション分割および/またはエンコードするように構成されてもよい。ここで、ピクチャーは、一つまたは複数のスライス(典型的には重ならない)にパーティション分割される、またはかかるスライスを使ってエンコードされることができ、各スライスは一つまたは複数のブロック(たとえばCTU)を含んでいてもよい。
【0066】
図2に示されるようなビデオ・エンコーダ20の実施形態はさらに、タイル・グループ(ビデオ・タイル・グループとも称される)および/またはタイル(ビデオ・タイルとも称される)を使うことによってピクチャーをパーティション分割および/またはエンコードするように構成されてもよい。ここで、ピクチャーは、一つまたは複数のタイル・グループ(典型的には重ならない)にパーティション分割される、またはかかるタイル・グループを使ってエンコードされることができ、各タイル・グループはたとえば一つまたは複数のブロック(たとえばCTU)または一つまたは複数のタイルを含んでいてもよい。各タイルはたとえば長方形状であってもよく、一つまたは複数のブロック(たとえばCTU)、たとえば完全なもしくは半端なブロックを含んでいてもよい。
【0067】
残差計算
残差計算ユニット204は、ピクチャー・ブロック203および予測ブロック265に基づいて残差ブロック205(残差205とも称される)を計算するように構成されてもよい(予測ブロック265についてのさらなる詳細は後述する)。これはたとえば、ピクチャー・ブロック203のサンプル値から予測ブロック265のサンプル値をサンプル毎に(ピクセル毎に)減算してサンプル領域における残差ブロック205を得ることによる。
【0068】
変換
変換処理ユニット206は、残差ブロック205のサンプル値に対して変換、たとえば離散コサイン変換(DCT)または離散サイン変換(DST)を適用して、変換領域における変換係数207を得るように構成されてもよい。変換係数207は、変換残差係数と称されてもよく、変換領域における残差ブロック205を表わす。
【0069】
変換処理ユニット206は、H.265/HEVCのために指定された変換など、DCT/DSTの整数近似を適用するように構成されてもよい。直交DCT変換と比較して、そのような整数近似は、典型的には、ある因子によってスケーリングされる。順変換と逆変換によって処理される残差ブロックのノルムを保存するために、変換プロセスの一部として追加的なスケーリング因子が適用される。スケーリング因子は、典型的には、スケーリング因子がシフト演算のための2の冪乗であること、変換係数のビット深さ、精度と実装コストの間のトレードオフなどのような、ある種の制約条件に基づいて選択される。具体的なスケーリング因子は、たとえば逆変換処理ユニット212による逆変換(および例えば、ビデオ・デコーダ30における逆変換処理ユニット312による対応する逆変換)のためにたとえば指定され、エンコーダ20におけるたとえば変換処理ユニット206による順変換のための対応するスケーリング因子が、それに応じて指定されてもよい。
【0070】
ビデオ・エンコーダ20(個別的には変換処理ユニット206)の実施形態は、変換パラメータ、たとえば単数または複数の変換のタイプを、たとえば直接、またはエントロピー・エンコード・ユニット270を介してエンコードまたは圧縮されて、出力するように構成されてもよく、それにより、たとえば、ビデオ・デコーダ30は、該変換パラメータを受領し、デコードのために使用してもよい。
【0071】
量子化
量子化ユニット208は、たとえばスカラー量子化またはベクトル量子化を適用することによって、変換係数207を量子化して、量子化された係数209を得るように構成されてもよい。量子化された係数209は、量子化された変換係数209または量子化された残差係数209と称されることもある。
【0072】
量子化プロセスは、変換係数207の一部または全部に関連するビット深さを低減することができる。たとえば、nビット変換係数は、量子化の間に、mビット変換係数に丸められてもよい。ここで、nはmより大きい。量子化の程度は、量子化パラメータ(QP)を調整することによって修正されてもよい。たとえば、スカラー量子化については、より細かいまたはより粗い量子化を達成するために異なるスケーリングが適用されてもよい。より小さな量子化ステップ・サイズはより細かい量子化に対応し、一方、より大きな量子化ステップ・サイズはより粗い量子化に対応する。適用可能な量子化ステップ・サイズは、量子化パラメータ(QP)によって示されてもよい。量子化パラメータは、たとえば、適用可能な量子化ステップ・サイズのあらかじめ定義された集合に対するインデックスであってもよい。たとえば、小さな量子化パラメータは、細かい量子化(小さな量子化ステップ・サイズ)に対応してもよく、大きな量子化パラメータは、粗い量子化(大きな量子化ステップ・サイズ)に対応してもよく、あるいはその逆でもよい。量子化は、量子化ステップ・サイズによる除算を含んでいてもよく、たとえば逆量子化ユニット210による対応するおよび/または逆の脱量子化は、量子化ステップ・サイズによる乗算を含んでいてもよい。いくつかの標準、たとえばHEVCによる実施形態は、量子化ステップ・サイズを決定するために量子化パラメータを使用するように構成されてもよい。一般に、量子化ステップ・サイズは、除算を含む式の固定小数点近似を使用して、量子化パラメータに基づいて計算されてもよい。量子化パラメータおよび量子化ステップ・サイズについての式の固定小数点近似において使用されるスケーリングのために修正されることがある残差ブロックのノルムを復元するために、量子化および脱量子化のために追加的なスケーリング因子が導入されてもよい。一つの例となる実装では、逆変換および脱量子化のスケーリングが組み合わされてもよい。あるいはまた、カスタマイズされた量子化テーブルが使用されて、たとえばビットストリームにおいて、エンコーダからデコーダへ信号伝達されてもよい。量子化は、損失のある演算であり、損失は量子化ステップ・サイズの増加とともに増加する。
【0073】
ビデオ・エンコーダ20(個別的には量子化ユニット208)の実施形態は、量子化パラメータ(QP)を、たとえば直接、またはエントロピー・エンコード・ユニット270を介してエンコードされて、出力するように構成されてもよく、それにより、たとえばビデオ・デコーダ30は、量子化パラメータを受領し、デコードのために適用することができる。
【0074】
逆量子化
逆量子化ユニット210は、たとえば、量子化ユニット208と同じ量子化ステップ・サイズに基づいて、または量子化ユニット208と同じ量子化ステップ・サイズを使用して、量子化ユニット208によって適用された量子化方式の逆数を適用することによって、量子化された係数に対して量子化ユニット208の逆の量子化を適用して、脱量子化された係数211を得るように構成される。脱量子化された係数211は、脱量子化された残差係数211と称されてもよく、典型的には量子化による損失のため変換係数と同一ではないが、変換係数207に対応する。
【0075】
逆変換
逆変換処理ユニット212は、変換処理ユニット206によって適用された変換の逆変換、たとえば逆離散コサイン変換(DCT)または逆離散サイン変換(DST)または他の逆変換を適用して、サンプル領域における再構成された残差ブロック213(または対応する脱量子化された係数213)を得るように構成される。再構成された残差ブロック213は、変換ブロック213と称されることもある。
【0076】
再構成
再構成ユニット214(たとえば、加算器または総和器214)は、変換ブロック213(すなわち、再構成された残差ブロック213)を予測ブロック265に加算して、サンプル領域における再構成されたブロック215を得るように構成される。これはたとえば、再構成された残差ブロック213のサンプル値と、予測ブロック265のサンプル値とをサンプル毎に加算することによる。
【0077】
フィルタリング
ループ・フィルタ・ユニット220(または略して「ループ・フィルタ」220)は、再構成されたブロック215をフィルタリングして、フィルタリングされたブロック221を得るように、または一般には、再構成されたサンプルをフィルタリングして、フィルタリングされたサンプルを得るように構成される。ループ・フィルタ・ユニットは、たとえば、ピクセル遷移をなめらかにする、または、他の仕方でビデオ品質を改善するように構成される。ループ・フィルタ・ユニット220は、ブロッキング解除フィルタ、サンプル適応オフセット(SAO)・フィルタ、または一つまたは複数の他のフィルタ、たとえばバイラテラル・フィルタ、適応ループ・フィルタ(ALF)、鮮鋭化フィルタ、平滑化フィルタ、または協働フィルタ、またはそれらの任意の組み合わせなどの一つまたは複数のループ・フィルタを含んでいてもよい。ループ・フィルタ・ユニット220は、
図2ではループ内フィルタとして示されているが、他の構成では、ループ・フィルタ・ユニット220は、ループ後フィルタとして実装されてもよい。フィルタリングされたブロック221は、フィルタリングされた再構成されたブロック221と称されることもある。
【0078】
ビデオ・エンコーダ20(個別的にはループ・フィルタ・ユニット220)の実施形態は、ループ・フィルタ・パラメータ(サンプル適応オフセット情報など)をたとえば直接、またはエントロピー・エンコード・ユニット270を介してエンコードされて、出力するように構成されてもよく、それにより、たとえば、デコーダ30は、同じループ・フィルタ・パラメータまたはそれぞれのループ・フィルタを受領し、デコードのために適用することができる。
【0079】
デコードピクチャーバッファ
デコードピクチャーバッファ(DPB)230は、ビデオ・エンコーダ20によってビデオ・データをエンコードするために、参照ピクチャーまたは一般には参照ピクチャー・データを記憶するメモリであってもよい。DPB 230は、同期DRAM(SDRAM)を含む動的ランダムアクセスメモリ(DRAM)、磁気抵抗RAM(MRAM)、抵抗RAM(RRAM)、または他のタイプのメモリ・デバイスといった多様なメモリ・デバイスのいずれかによって形成されうる。デコードピクチャーバッファ(DPB)230は、一つまたは複数のフィルタリングされたブロック221を格納するように構成されてもよい。デコードピクチャーバッファ230は、さらに、同じ現在ピクチャーのまたは異なるピクチャー、たとえば以前に再構成されたピクチャーの、他の以前にフィルタリングされたブロック、たとえば、以前に再構成され、フィルタリングされたブロック221を記憶するように構成されてもよく、完全な以前に再構成された、すなわちデコードされたピクチャー(および対応する参照ブロックおよびサンプル)および/または部分的に再構成された現在ピクチャー(および対応する参照ブロックおよびサンプル)を、たとえばインター予測のために提供してもよい。デコードピクチャーバッファ(DPB)230は、たとえば再構成されたブロック215がループ・フィルタ・ユニット220によってフィルタリングされない場合には一つまたは複数のフィルタリングされていない再構成されたブロック215、または一般にはフィルタリングされていない再構成されたサンプルを、あるいは再構成されたブロックまたはサンプルの任意の他のさらに処理されたバージョンを、記憶するように構成されてもよい。
【0080】
モード選択(パーティション分割および予測)
モード選択ユニット260は、パーティション分割ユニット262と、インター予測ユニット244と、イントラ予測ユニット254とを有し、もとのピクチャー・データ、たとえばもとのブロック203(現在ピクチャー17の現在ブロック203)と、たとえばデコードピクチャーバッファ230または他のバッファ(たとえば、ラインバッファ、図示せず)からの、同じ(現在)ピクチャーのおよび/または、一つもしくは複数の以前にデコードされたピクチャーからの再構成されたピクチャー・データ、たとえばフィルタリングされたおよび/またはフィルタリングされていない再構成されたサンプルまたはブロックとを受領または取得するよう構成される。再構成されたピクチャー・データは、予測ブロック265または予測子265を得るために、予測、たとえばインター予測またはイントラ予測のための参照ピクチャー・データとして使用される。
【0081】
モード選択ユニット260は、現在のブロック予測モードについてのパーティション分割(パーティション分割なしを含む)および予測モード(たとえば、イントラまたはインター予測モード)を決定または選択し、残差ブロック205の計算および再構成ブロック215の再構成のために使用される対応する予測ブロック265を生成するように構成されてもよい。
【0082】
モード選択ユニット260の実施形態は、パーティション分割および予測モードを(たとえば、モード選択ユニット260にサポートされる、またはモード選択ユニット260に利用可能なものから)を選択するように構成されてもよく、選択されるのは、最良のマッチ、すなわち、最小の残差(最小の残差は、伝送または記憶のためのよりよい圧縮を意味する)または最小の信号伝達オーバーヘッド(最小の信号伝達オーバーヘッドは、伝送または記憶のためのよりよい圧縮を意味する)を提供する、または両方を考慮またはバランスさせるものである。モード選択ユニット260は、レート歪み最適化(RDO)に基づいてパーティション分割および予測モードを決定する、つまり、最小レート歪みを提供する予測モードを選択するように構成されてもよい。この文脈における「最良」、「最小」、「最適」などのような用語は、必ずしも全体的な「最良」、「最小」、「最適」などを指すのではなく、終了、または値が閾値を超えるまたは下回るのような選択基準、または他の制約条件の達成を指すこともあり、潜在的には「最適ではない選択」につながるが、複雑さと処理時間を低減する。
【0083】
換言すれば、パーティション分割ユニット262は、ブロック203を、たとえば四分木パーティション分割(QT)、二分パーティション分割(BT)もしくは三分木パーティション分割(TT)またはそれらの任意の組み合わせを反復的に使用して、より小さなブロック・パーティションまたはサブブロック(これもやはりブロックをなす)にパーティション分割し、たとえば、ブロック・パーティションまたはサブブロックのそれぞれについて予測を実行するように構成されてもよい。ここで、モード選択は、パーティション分割されたブロック203の木構造の選択を含み、予測モードは、ブロック・パーティションまたはサブブロックのそれぞれに適用される。
【0084】
以下では、例示的なビデオ・エンコーダ20によって実行されるパーティション分割(たとえばパーティション分割ユニット260による)および予測処理(インター予測ユニット244およびイントラ予測ユニット254による)について、より詳細に説明する。
【0085】
パーティション分割
パーティション分割ユニット262は、現在ブロック203を、より小さなパーティション、たとえば正方形または長方形のサイズのより小さなブロックにパーティション分割(または分割)することができる。これらのより小さなブロック(サブブロックとも呼ばれ得る)は、さらに、より一層小さなパーティションにパーティション分割されてもよい。これは、ツリーパーティション分割または階層ツリーパーティション分割とも呼ばれ、たとえばルートツリーレベル0(階層レベル0、深さ0)におけるルートブロックが再帰的にパーティション分割されてもよく、たとえば次の、より低いツリーレベルの2つ以上のブロック、たとえばツリーレベル1(階層レベル1、深さ1)におけるノードにパーティション分割されてもよく、これらのブロックは再び次の、より低いレベル、たとえばツリーレベル2(階層レベル2、深さ2)の2つ以上のブロックにパーティション分割されてもよい、などと、たとえば最大ツリー深さまたは最小ブロック・サイズに達するなど終了基準が満たされためにパーティション分割が打ち切られるまで続く。それ以上パーティション分割されないブロックは、ツリーのリーフブロックまたはリーフノードとも呼ばれる。2つのパーティションへのパーティション分割を使用するツリーは二分木(BT)、3つのパーティションへのパーティション分割を使用するツリーは三分木(TT)、4つのパーティションへのパーティション分割を使用するツリーは四分木(QT)と呼ばれる。
【0086】
前述のように、本明細書で使用される「ブロック」という用語は、ピクチャーの一部、特に正方形または長方形の一部であってもよい。たとえばHEVCおよびVVCを参照するに、ブロックは、コーディングツリー単位(CTU)、コーディング単位(CU)、予測単位(PU)、および変換単位(TU)、および/または対応するブロック、たとえば、コーディング・ツリー・ブロック(CTB)、コーディング・ブロック(CB)、変換ブロック(TB)、または予測ブロック(PB)であってもよく、またはこれらに対応してもよい。
【0087】
たとえば、コーディングツリー単位(CTU)は、3つのサンプル・アレイを有するピクチャーのルーマ・サンプルのCTB、クロマ・サンプルの2つの対応するCTB、または、モノクロ・ピクチャーまたはサンプルをコーディングするために使用される3つの別個の色平面およびシンタックス構造を使用してコーディングされるピクチャーのサンプルのCTBであってもよく、または、これらを含んでいてもよい。対応して、コーディングツリーブロック(CTB)は、ある成分のCTBへの分割がパーティション分割であるように、Nの何らかの値についてのサンプルのN×Nブロックであってもよい。コーディング単位(CU)は、3つのサンプル・アレイを有するピクチャーのルーマ・サンプルのコーディング・ブロック、クロマ・サンプルの2つの対応するコーディング・ブロック、または、モノクロ・ピクチャーまたはサンプルをコーディングするために使用される3つの別個の色平面およびシンタックス構造を使用してコーディングされるピクチャーのサンプルのコーディング・ブロックであってもよく、または、これらを含んでいてもよい。対応して、コーディング・ブロック(CB)は、CTBのコーディング・ブロックへの分割がパーティション分割であるように、MおよびNの何らかの値についてのサンプルのM×Nブロックであってもよい。
【0088】
実施形態において、たとえばHEVCによれば、コーディングツリー単位(CTU)は、コーディングツリーと記される四分木構造を使用することによって、CUに分割されてもよい。ピクチャー間(時間的)またはピクチャー内(空間的)予測を使用してピクチャー領域をコーディングするかどうかの決定は、CUレベルで行なわれる。各CUはさらに、PU分割タイプに応じて、1つ、2つ、または4つのPUに分割できる。1つのPU内では、同じ予測プロセスが適用され、関連情報はPUごとにデコーダに伝送される。PU分割タイプに基づく予測プロセスを適用することによって残差ブロックを得た後、CUは、該CUについてのコーディングツリーと同様の別の四分木構造に従って変換単位(TU)にパーティション分割できる。
【0089】
実施形態において、たとえば多用途ビデオコーディング(VVC)と称される現在開発中の最新のビデオコーディング標準によれば、組み合わされた四分木および二分木(QTBT)パーティション分割が、たとえばコーディング・ブロックをパーティション分割するために使用される。QTBTブロック構造では、CUは正方形または長方形のいずれかの形状を有することができる。たとえば、コーディングツリー単位(CTU)は、まず四分木構造によってパーティション分割される。四分木リーフノードは、二分木または三分木(または三叉木)構造によってさらにパーティション分割される。パーティション分割木リーフノードは、コーディング単位(CU)と呼ばれ、そのセグメント分割は、それ以上のパーティション分割なしに予測および変換処理に使用される。これは、QTBTコーディング・ブロック構造においてCU、PU、およびTUが同じブロック・サイズをもつことを意味する。並列に、多パーティション分割、たとえば三分木パーティション分割もQTBTブロック構造と一緒に使用されてもよい。
【0090】
一例では、ビデオ・エンコーダ20のモード選択ユニット260は、本明細書に記載されるパーティション分割技術の任意の組み合わせを実行するように構成されうる。
【0091】
上述のように、ビデオ・エンコーダ20は、(たとえばあらかじめ決定された)予測モードの集合から最良または最適な予測モードを決定または選択するように構成される。予測モードの集合は、たとえば、イントラ予測モードおよび/またはインター予測モードを含んでいてもよい。
【0092】
イントラ予測
イントラ予測モードの集合は、たとえばHEVCで定義されているように、35の異なるイントラ予測モード、たとえばDC(または平均)モードおよび平面モードのような非方向性モード、または、方向性モードを含んでいてもよく、または、たとえばVVCで定義されているように、67の異なるイントラ予測モード、たとえばDC(または平均)モードおよび平面モードのような非方向性モード、または、方向性モードを含んでいてもよい。
【0093】
イントラ予測ユニット254は、イントラ予測モードの集合のうちのあるイントラ予測モードに従ってイントラ予測ブロック265を生成するために、同じ現在のピクチャーの近傍ブロックの再構成されたサンプルを使用するように構成される。
【0094】
イントラ予測ユニット254(または、一般に、モード選択ユニット260)は、イントラ予測パラメータ(または、一般に、そのブロックについての選択されたイントラ予測モードを示す情報)を、エンコードされたピクチャー・データ21に含めるために、シンタックス要素266の形でエントロピー・エンコード・ユニット270に対して出力するようにさらに構成される。それにより、たとえば、ビデオ・デコーダ30は、予測パラメータを受領し、デコードのために使用することができる。
【0095】
インター予測
前記集合の(または可能な)インター予測モードは、利用可能な参照ピクチャー(すなわち、たとえばDBP 230に記憶されている、以前の少なくとも部分的にデコードされたピクチャー)および他のインター予測パラメータに依存する。該他のインター予測パラメータは、たとえば、最良マッチの参照ブロックを探すために参照ピクチャーの全体が使用されるか、または参照ピクチャーの一部のみ、たとえば、現在ブロックの当該領域のまわりの探索窓領域が、使用されるか、および/または、たとえば、ピクセル補間、たとえば、半分/セミ画素および/または1/4画素補間が適用されるか否かである。
【0096】
上記の予測モードに加えて、スキップモードおよび/または直接モードが適用されてもよい。
【0097】
インター予測ユニット244は、動き推定(ME)ユニットおよび動き補償(MC)ユニットを含んでいてもよい(いずれも
図2には示されていない)。動き推定ユニットは、ピクチャー・ブロック203(現在ピクチャー17の現在ピクチャー・ブロック203)およびデコードされたピクチャー231、または少なくとも一つまたは複数の以前に再構成されたブロック、たとえば、一つまたは複数の他の/異なる以前にデコードされたピクチャー231の再構成されたブロックを動き推定のために受領または取得するように構成されてもよい。たとえば、ビデオ・シーケンスは、現在ピクチャーと以前にデコードされたピクチャー231とを含んでいてもよく、あるいは、換言すれば、現在ピクチャーと以前にデコードされたピクチャー231は、ビデオ・シーケンスを形成するピクチャーのシーケンスの一部であってもよく、または該シーケンスを形成してもよい。
【0098】
エンコーダ20は、たとえば、複数の他のピクチャーのうちの同じまたは異なるピクチャーの複数の参照ブロックから参照ブロックを選択し、参照ピクチャー(または参照ピクチャー・インデックス)および/または参照ブロックの位置(x、y座標)と現在のブロックの位置との間のオフセット(空間オフセット)を、動き推定ユニットへのインター予測パラメータとして提供するように構成されてもよい。このオフセットは動きベクトル(MV)とも呼ばれる。
【0099】
動き補償ユニットは、たとえば、インター予測パラメータを取得、たとえば受領して、該インター予測パラメータに基づいて、または、該インター予測パラメータを用いて、インター予測を実行して、インター予測ブロック265を得るように構成される。動き補償ユニットによって実行される動き補償は、動き推定によって決定された動き/ブロック・ベクトルに基づいて、可能性としてはサブピクセル精度への補間を実行して、予測ブロックを取ってくるまたは生成することを含んでもよい。補間フィルタリングが、既知のピクセル・サンプルから追加的なピクセル・サンプルを生成してもよく、よって、潜在的には、ピクチャー・ブロックをコーディングするために使用されうる候補予測ブロックの数を増加させる。現在ピクチャー・ブロックのPUについての動きベクトルを受領すると、動き補償ユニットは、参照ピクチャー・リストのうちの1つのリストにおいて動きベクトルがポイントする予測ブロックを位置特定することができる。
【0100】
動き補償ユニットはまた、ビデオ・スライスのピクチャー・ブロックをデコードする際にビデオ・デコーダ30が使用するために、ブロックおよびビデオ・スライスに関連するシンタックス要素を生成してもよい。スライスおよびそれぞれのシンタックス要素への追加または代替として、タイル・グループおよび/またはタイルおよびそれぞれのシンタックス要素が生成され、または使用されてもよい。
【0101】
エントロピーコーディング
エントロピー・エンコード・ユニット270は、たとえば、エントロピー・エンコード・アルゴリズムまたは方式(たとえば、可変長コーディング(VLC)方式、コンテキスト適応VLC方式(CAVLC)、演算コーディング方式、二値化、コンテキスト適応二進算術コーディング(CABAC)、シンタックスベースのコンテキスト適応二進算術コーディング(SBAC)、確率区間パーティション分割エントロピー(PIPE)コーディング、または他のエントロピー・エンコード方法または技術)またはバイパス(非圧縮)を、量子化された係数209、インター予測パラメータ、イントラ予測パラメータ、ループ・フィルタ・パラメータおよび/または他のシンタックス要素に対して適用して、エンコードされたピクチャー・データ21を得るように構成される。エンコードされたピクチャー・データ21はたとえばエンコードされたビットストリーム21の形で、出力272を介して出力でき、それにより、たとえば、ビデオ・デコーダ30はそれらのパラメータを受領し、デコードのために使用することができる。エンコードされたビットストリーム21は、ビデオ・デコーダ30に送信されてもよいし、または後の送信またはビデオ・デコーダ30による取得のためにメモリに記憶されてもよい。
【0102】
ビデオ・ストリームをエンコードするために、ビデオ・エンコーダ20の他の構造的変形が使用できる。たとえば、非変換ベースのエンコーダ20は、ある種のブロックまたはフレームについて、変換処理ユニット206なしで直接、残差信号を量子化することができる。別の実装では、エンコーダ20は、量子化ユニット208と逆量子化ユニット210とを単一のユニットに組み合わせたものを有することができる。
【0103】
デコーダおよびデコード方法
図3は、本願の技術を実装するように構成されたビデオ・デコーダ30の例を示す。ビデオ・デコーダ30は、デコードされたピクチャー331を得るために、たとえばエンコーダ20によってエンコードされた、エンコードされたピクチャー・データ21(たとえばエンコードされたビットストリーム21)を受領するように構成される。エンコードされたピクチャー・データまたはビットストリームは、エンコードされたピクチャー・データをデコードするための情報、たとえば、エンコードされたビデオ・スライス(および/またはタイル・グループまたはタイル)のピクチャー・ブロックおよび関連するシンタックス要素を表わすデータを含む。
【0104】
図3の例では、デコーダ30は、エントロピー・デコード・ユニット304と、逆量子化ユニット310と、逆変換処理ユニット312と、再構成ユニット314(たとえば、加算器314)と、ループ・フィルタ320と、デコードピクチャーバッファ(DBP)330と、モード適用ユニット360と、インター予測ユニット344と、イントラ予測ユニット354とを含む。インター予測ユニット344は、動き補償ユニットであってもよいし、またはこれを含んでいてもよい。ビデオ・デコーダ30は、いくつかの例では、
図2からのビデオ・エンコーダ100に関して記述されたエンコード・パスと概して逆のデコード・パスを実行することができる。
【0105】
エンコーダ20に関して説明したように、逆量子化ユニット210、逆変換処理ユニット212、再構成ユニット214、ループ・フィルタ220、デコードピクチャーバッファ(DPB)230、インター予測ユニット344、およびイントラ予測ユニット354は、ビデオ・エンコーダ20の「組み込みデコーダ」を形成するとも称される。よって、逆量子化ユニット310は、逆量子化ユニット110と機能的に同一であってもよく、逆変換処理ユニット312は、逆変換処理ユニット212と機能的に同一であってもよく、再構成ユニット314は、再構成ユニット214と機能的に同一であってもよく、ループ・フィルタ320は、ループ・フィルタ220と機能的に同一であってもよく、デコードピクチャーバッファ330は、デコードピクチャーバッファ230と機能的に同一であってもよい。したがって、ビデオ20エンコーダのそれぞれのユニットおよび機能について与えた説明は、ビデオ・デコーダ30のそれぞれのユニットおよび機能に、対応して当てはまる。
【0106】
エントロピー・デコード
エントロピー・デコード・ユニット304は、ビットストリーム21(または一般に、エンコードされたピクチャー・データ21)をパースし、たとえば、エンコードされたピクチャー・データ21に対してエントロピー・デコードを実行し、たとえば、量子化された係数309および/またはデコードされたコーディングパラメータ(
図3には示されていない)、たとえば、インター予測パラメータ(たとえば、参照ピクチャー・インデックスおよび動きベクトル)、イントラ予測パラメータ(たとえば、イントラ予測モードまたはインデックス)、変換パラメータ、量子化パラメータ、ループ・フィルタ・パラメータ、および/または他のシンタックス要素のいずれかまたは全部を得るように構成される。エントロピー・デコード・ユニット304は、エンコーダ20のエントロピー・エンコード・ユニット270に関して述べたエンコード方式に対応するデコード・アルゴリズムまたは方式を適用するように構成されてもよい。エントロピー・デコード・ユニット304は、インター予測パラメータ、イントラ予測パラメータおよび/または他のシンタックス要素をモード適用ユニット360に、他のパラメータをデコーダ30の他のユニットに提供するようにさらに構成されてもよい。ビデオ・デコーダ30は、ビデオ・スライス・レベルおよび/またはビデオ・ブロック・レベルでシンタックス要素を受領してもよい。スライスおよびそれぞれのシンタックス要素への追加または代替として、タイル・グループおよび/またはタイルおよびそれぞれのシンタックス要素が受領され、および/または使用されてもよい。
【0107】
逆量子化
逆量子化ユニット310は、エンコードされたピクチャー・データ21から量子化パラメータ(QP)(または一般に、逆量子化に関する情報)および量子化された係数を受領し(たとえばエントロピー・デコード・ユニット304によるたとえばパースおよび/またはデコードによって)、デコードされた量子化された係数309に対して該量子化パラメータに基づいて逆量子化を適用して、脱量子化された係数311を得るように構成されてもよい。脱量子化された係数311は変換係数311と称されることもある。逆量子化プロセスは、ビデオ・スライス(またはタイルまたはタイル・グループ)内の各ビデオ・ブロックについてビデオ・エンコーダ20によって決定された量子化パラメータを使用して、量子化の程度、および、同様に、適用されるべき逆量子化の程度を決定してもよい。
【0108】
逆変換
逆変換処理ユニット312は、変換係数311とも呼ばれる脱量子化された係数311を受領し、サンプル領域における再構成された残差ブロック213を得るために、脱量子化された係数311に変換を適用するように構成されてもよい。再構成された残差ブロック213は、変換ブロック313と称されることもある。変換は、逆変換、たとえば、逆DCT、逆DST、逆整数変換、または概念的に同様の逆変換プロセスであってもよい。逆変換処理ユニット312は、さらに、変換パラメータまたは対応する情報をエンコードされたピクチャー・データ21から受領して(たとえばエントロピー・デコード・ユニット304によるたとえばパースおよび/またはデコードによって)、脱量子化された係数311に適用される変換を決定するように構成されてもよい。
【0109】
再構成
再構成ユニット314(たとえば、加算器または総和器314)は、再構成された残差ブロック313を予測ブロック365に加算して、サンプル領域における再構成されたブロック315を得るように構成されてもよい。これはたとえば、再構成された残差ブロック313のサンプル値および予測ブロック365のサンプル値を加算することによる。
【0110】
フィルタリング
ループ・フィルタ・ユニット320(コーディングループ内またはコーディングループ後)は、たとえばピクセル遷移をなめらかにする、または、他の仕方でビデオ品質を改善するために、再構成されたブロック315をフィルタリングして、フィルタリングされたブロック321を得るように構成される。ループ・フィルタ・ユニット320は、ブロッキング解除フィルタ、サンプル適応オフセット(SAO)・フィルタ、または一つまたは複数の他のフィルタ、たとえばバイラテラル・フィルタ、適応ループ・フィルタ(ALF)、鮮鋭化、平滑化フィルタ、または協働フィルタ、またはそれらの任意の組み合わせなどの一つまたは複数のループ・フィルタを含んでいてもよい。ループ・フィルタ・ユニット320は、
図3ではループ内フィルタとして示されているが、他の構成では、ループ・フィルタ・ユニット320は、ループ後フィルタとして実装されてもよい。
【0111】
デコードピクチャーバッファ
次いで、ピクチャーのデコードされたビデオ・ブロック321は、デコードピクチャーバッファ330に記憶される。デコードピクチャーバッファ330は、デコードされたピクチャー331を、他のピクチャーについてのその後の動き補償のための参照ピクチャーとして、および/またはそれぞれの出力もしくは表示のために記憶する。
【0112】
デコーダ30は、デコードされたピクチャー311を、ユーザーへの提示または閲覧のために、たとえば出力312を介して出力するように構成される。
【0113】
予測
インター予測ユニット344は、インター予測ユニット244(特に、動き補償ユニット)と同一であってもよく、イントラ予測ユニット354は、機能において、インター予測ユニット254と同一であってもよく、エンコードされたピクチャー・データ21から(たとえばエントロピー・デコード・ユニット304による、たとえばパースおよび/またはデコードによって)受領されるパーティション分割および/または予測パラメータまたはそれぞれの情報に基づいて、分割もしくはパーティション分割決定および予測を実行する。モード適用ユニット360は、再構成されたピクチャー、ブロック、またはそれぞれのサンプル(フィルタリングされた、またはフィルタリングされていない)に基づいて、ブロックごとの予測(イントラ予測またはインター予測)を実行して、予測ブロック365を得るように構成されてもよい。
【0114】
ビデオ・スライスがイントラ・コーディングされる(I)スライスとしてコーディングされるとき、モード適用ユニット360のイントラ予測ユニット354は、信号伝達されたイントラ予測モードと、現在ピクチャーの以前にデコードされたブロックからのデータとに基づいて、現在ビデオ・スライスのピクチャー・ブロックについての予測ブロック365を生成するように構成される。ビデオ・ピクチャーがインターコーディングされる(すなわちBまたはP)スライスとしてコーディングされるとき、モード適用ユニット360のインター予測ユニット344(たとえば、動き補償ユニット)は、エントロピー・デコード・ユニット304から受領される動きベクトルおよび他のシンタックス要素に基づいて、現在のビデオ・スライスのビデオ・ブロックについての予測ブロック365を生成するように構成される。インター予測のために、予測ブロックは、参照ピクチャー・リストのうちの1つのリスト内の参照ピクチャーの1つから生成されてもよい。ビデオ・デコーダ30は、DPB 330に記憶された参照ピクチャーに基づくデフォルト構築技術を使用して、参照フレームリスト、リスト0およびリスト1を構築することができる。同じまたは同様のことは、スライス(たとえばビデオ・スライス)への追加または代替としてタイル・グループ(たとえばビデオ・タイル・グループ)および/またはタイル(たとえばビデオ・タイル)を使用する実施形態のために、またはかかる実施形態によって適用されてもよい。たとえば、ビデオは、I、PまたはBのタイル・グループおよび/またはタイルを使ってコーディングされてもよい。
【0115】
モード適用ユニット360は、動きベクトルまたは関係した情報および他のシンタックス要素をパースすることによって、現在のビデオ・スライスのビデオ・ブロックについての予測情報を決定するように構成され、該予測情報を使用して、デコードされる現在のビデオ・ブロックについての予測ブロックを生成する。たとえば、モード適用ユニット360は、受領されたシンタックス要素のいくつかを用いて、ビデオ・スライスのビデオ・ブロックをコーディングするために使用される予測モード(たとえば、イントラ予測またはインター予測)、インター予測スライス・タイプ(たとえば、Bスライス、Pスライス、またはGPBスライス)、スライスについての参照ピクチャー・リストのうちの一つまたは複数のリストについての構築情報、スライスのそれぞれのインター・エンコードされたビデオ・ブロックについての動きベクトル、スライスのそれぞれのインターコーディングされたビデオ・ブロックについてのインター予測ステータス、および現在のビデオ・スライス内のビデオ・ブロックをデコードするための他の情報を決定する。同じまたは同様のことは、スライス(たとえばビデオ・スライス)への追加または代替としてタイル・グループ(たとえばビデオ・タイル・グループ)および/またはタイル(たとえばビデオ・タイル)を使用する実施形態のために、またはかかる実施形態によって適用されてもよい。たとえば、ビデオは、I、PまたはBのタイル・グループおよび/またはタイルを使ってコーディングされてもよい。
【0116】
図3に示されるようなビデオ・デコーダ30の実施形態は、スライス(ビデオ・スライスとも称される)を使うことによってピクチャーをパーティション分割および/またはデコードするように構成されてもよい。ここで、ピクチャーは、一つまたは複数のスライス(典型的には重ならない)にパーティション分割される、またはかかるスライスを使ってデコードされることができ、各スライスは一つまたは複数のブロック(たとえばCTU)を含んでいてもよい。
【0117】
図3に示されるようなビデオ・デコーダ30の実施形態は、タイル・グループ(ビデオ・タイル・グループとも称される)および/またはタイル(ビデオ・タイルとも称される)を使うことによってピクチャーをパーティション分割および/またはデコードするように構成されてもよい。ここで、ピクチャーは、一つまたは複数のタイル・グループ(典型的には重ならない)にパーティション分割される、またはかかるタイル・グループを使ってデコードされることができ、各タイルはたとえば長方形状であってもよく、一つまたは複数のブロック(たとえばCTU)、たとえば完全なもしくは半端なブロックを含んでいてもよい。
【0118】
エンコードされたピクチャー・データ21をデコードするために、ビデオ・デコーダ30の他の変形が使用できる。たとえば、デコーダ30は、ループ・フィルタリング・ユニット320なしで出力ビデオ・ストリームを生成することができる。たとえば、非変換ベースのデコーダ30は、ある種のブロックまたはフレームについて、逆変換処理ユニット312なしに直接、残差信号を逆量子化することができる。別の実施形態では、ビデオ・デコーダ30は、逆量子化ユニット310および逆変換処理ユニット312を単一のユニットに組み合わせたものを有することができる。
【0119】
エンコーダ20およびデコーダ30では、現在のステップの処理結果がさらに処理されて、次いで次のステップに出力されてもよいことを理解しておくべきである。たとえば、補間フィルタリング、動きベクトル導出、またはループ・フィルタリングの後に、クリップまたはシフトなどのさらなる操作が、補間フィルタリング、動きベクトル導出、またはループ・フィルタリングの処理結果に対して実行されてもよい。
【0120】
現在ブロックの導出された動きベクトル(アフィンモードの制御点動きベクトル、アフィン、平面、ATMVPモードのサブブロック動きベクトル、時間的動きベクトルなどを含むが、それらに限定されない)に対してさらなる操作が適用されうることに留意されたい。たとえば、動きベクトルの値は、その表現ビットに従ってあらかじめ定義された範囲に制約される。動きベクトルの表現ビットがbitDepth〔ビット深さ〕であれば、範囲は-2^(bitDepth-1)~2^(bitDepth-1)-1である。たとえば、bitDepthが16に等しく設定されている場合、範囲は-32768~32767であり、bitDepthが18に等しく設定されている場合、範囲は-131072~131071である。たとえば、導出された動きベクトル(たとえば、1つの8×8ブロック内の4つの4×4サブブロックのMV)の値は、4つの4×4サブブロックMVの整数部の間の最大差が、Nピクセル以下、たとえば1ピクセル以下になるように制約される。ここでは、bitDepthに従って動きベクトルを制約するための2つの方法を提供する。
【0121】
方法1:フロー演算によりオーバーフローMSB(最上位ビット)を除去する
【数1】
ここで、mvxは画像ブロックまたはサブブロックの動きベクトルの水平成分であり、mvyは画像ブロックまたはサブブロックの動きベクトルの垂直成分であり、uxおよびuyは中間的な値を示す;
たとえば、mvxの値が-32769であれば、式(1)および(2)を適用した後、結果として得られる値は32767になる。コンピュータシステムでは、10進数は2の補数として格納される。-32769の2の補数は1,0111,1111,1111,1111(17ビット)であり、MSBが破棄されるため、結果として得られる2の補数は0111,1111,1111,1111(10進数は32767)となり、これは、式(1)と(2)を適用することによる出力と同じである。
【数2】
これらの操作は、式(5)~(8)に示されるようなmvpとmvdの加算の間に適用されてもよい。
【0122】
方法2:値をクリッピングすることによりオーバーフローMSBを除去する。
【数3】
ここで、vxは画像ブロックまたはサブブロックの動きベクトルの水平成分であり、vyは画像ブロックまたはサブブロックの動きベクトルの垂直成分であり、x、yおよびzはそれぞれMVクリッピング・プロセスの3つの入力値に対応し、関数Clip3の定義は次の通りである:
【数4】
【0123】
図4は、本開示のある実施形態によるビデオコーディング装置400の概略図である。ビデオコーディング装置400は、本明細書に記載される開示される実施形態を実装するのに好適である。ある実施形態では、ビデオコーディング装置400は、
図1Aのビデオ・デコーダ30のようなデコーダ、または
図1Aのビデオ・エンコーダ20のようなエンコーダであってもよい。
【0124】
ビデオコーディング装置400は、データを受領するための入口ポート410(または入力ポート410)および受領器ユニット(Rx)420;データを処理するためのプロセッサ、論理ユニット、または中央処理ユニット(CPU)430;データを送信するための送信器ユニット(Tx)440および出口ポート450(または出力ポート450);およびデータを記憶するためのメモリ460を含む。ビデオコーディング装置400は、光信号または電気信号の出入りのために、入口ポート410、受領器ユニット420、送信器ユニット440、および出口ポート450に結合された光対電気(OE)コンポーネントおよび電気対光(EO)コンポーネントをも有していてもよい。
【0125】
プロセッサ430は、ハードウェアおよびソフトウェアによって実装される。プロセッサ430は、一つまたは複数のCPUチップ、コア(たとえば、マルチコアプロセッサとして)、FPGA、ASIC、およびDSPとして実装されてもよい。プロセッサ430は、入口ポート410、受領器ユニット420、送信器ユニット440、出口ポート450、およびメモリ460と通信する。プロセッサ430は、コーディングモジュール470を有する。コーディングモジュール470は、上記の開示された諸実施形態を実装する。たとえば、コーディングモジュール470は、さまざまなコーディング動作を実装、処理、準備、または提供する。よって、コーディングモジュール470を含めることにより、ビデオコーディング装置400の機能が実質的に改善され、ビデオコーディング装置400の異なる状態への変換が実現される。あるいはまた、コーディングモジュール470は、メモリ460に記憶された命令として実装され、プロセッサ430によって実行される。
【0126】
メモリ460は、一つまたは複数のディスク、テープドライブ、およびソリッドステートドライブを含んでいてもよく、オーバーフロー・データ記憶装置として使用され、プログラムを、該プログラムが実行のために選択されるときに記憶し、そしてプログラム実行中に読み出される命令およびデータを記憶してもよい。メモリ460は、たとえば、揮発性および/または不揮発性であってもよく、リードオンリーメモリ(ROM)、ランダムアクセスメモリ(RAM)、三値連想記憶メモリ(TCAM)、および/またはスタティックランダムアクセスメモリ(SRAM)であってもよい。
【0127】
図5は、ある例示的実施形態による、
図1からの源装置12および宛先装置14のいずれかまたは両方として使用されうる装置500の簡略化されたブロック図である。
【0128】
装置500内のプロセッサ502は、中央処理ユニットであってもよい。あるいはまた、プロセッサ502は、現在存在する、または今後開発される情報を操作または処理することができる、任意の他のタイプの装置または複数の装置であってもよい。開示された実装は、図示のような単一のプロセッサ、たとえばプロセッサ502を用いて実施できるが、複数のプロセッサを用いて、速度および効率における利点が達成できる。
【0129】
装置500内のメモリ504は、ある実装では、リードオンリーメモリ(ROM)デバイスまたはランダムアクセスメモリ(RAM)デバイスであることができる。メモリ504として、任意の他の好適なタイプの記憶デバイスが使用できる。メモリ504は、バス512を使用してプロセッサ502によってアクセスされるコードおよびデータ506を含むことができる。メモリ504は、さらに、オペレーティング・システム508およびアプリケーション・プログラム510を含むことができ、該アプリケーション・プログラム510は、プロセッサ502がここに記載される方法を実行することを許容する少なくとも1つのプログラムを含む。たとえば、アプリケーション・プログラム510は、アプリケーション1~Nを含むことができ、これは、ここに記載される方法を実行するビデオコーディングアプリケーションをさらに含む。
【0130】
装置500は、ディスプレイ518などの一つまたは複数の出力装置をも含むことができる。ディスプレイ518は、一例では、ディスプレイを、タッチ入力を感知するように動作可能なタッチ感応性要素と組み合わせるタッチ感応性ディスプレイであってもよい。ディスプレイ518は、バス512を介してプロセッサ502に結合されることができる。
【0131】
ここでは単一のバスとして示されているが、装置500のバス512は、複数のバスから構成されることができる。さらに、二次記憶514は、装置500の他のコンポーネントに直接結合されることができるか、またはネットワークを介してアクセスされることができ、メモリカードのような単一の集積ユニットまたは複数のメモリカードのような複数のユニットを含むことができる。よって、装置500は、幅広い多様な構成で実装されることができる。
【0132】
背景 イントラ予測モード・コーディング
現在のVTM 4.0では、6-MPM(Most Probable Modes[最確モード])リストがイントラ予測モード・コーディングのために構築される。MPMリストは、現在ブロックのイントラ予測モードをコーディングするために必要なビットを減らすために導入される。6-MPMリストは、現在ブロックの近傍ブロックのイントラ予測モードに基づいて構築される。現在ブロックのイントラ予測モードがMPMリスト中に該当すると、実際のモードではなくインデックスがコーディングされ、より少ないビットを使うことができる。現在ブロックのイントラ予測モードがMPMリスト中に該当しない場合は、打ち切りされた二値化(truncated binarization)が現在ブロックのイントラ予測モードをコーディングするために使用される。MPMリストは、現在ブロックのイントラ予測モードの良好な予測を提供する。
【0133】
複数参照ライン(multiple reference line、MRL)のためのMPMリスト
VTM 4.0では、複数参照ライン(MRL)コーディング・ツールは、現在ブロックのサンプルを予測するために複数の近傍参照ラインの1つを使用することができる。MRLライン・インデックスの値が0に等しい場合(すなわち、最も近い近傍参照ライン、すなわち、
図6に示すように参照ライン0が使用される場合)、平面およびDCを含む通常の6MPMリストが使用される。MRLライン・インデックスの値が0に等しくない場合、平面(すなわち、0の値)およびDC(すなわち、1の値)を除いた6-MPMリストが使用される。
【0134】
イントラサブパーティションコーディング・モード(ISP)のためのMPMリスト
イントラサブパーティション(intra sub-partition、ISP)コーディング・モードは、VTM4.0(JVET-M0102)において新たに採用されたツールである。ルーマ・イントラ予測ブロックは、表1に示されるように、ブロック・サイズ寸法に依存して、垂直方向または水平方向に2つまたは4つのサブパーティションに分割される。
図7および
図8が、2つの可能性の例を示している。すべてのサブパーティションは、少なくとも16個のサンプルを有するという条件を満たしている。
【表1】
【0135】
イントラサブパーティション・コーディング・モードが有効にされているとき、VTM 4.0ではDCモード以外の別のMPMリストが使用される。複数参照ライン・インデックスの値が0に等しい場合(すなわち、MRLは現在のイントラ予測ブロックには適用されない場合)、イントラサブパーティション・モードが適用できる。すべてのサブパーティションは単一のイントラ予測モードを共有するため、MPMリストはイントラブロックについて1度構築され、すべてのサブパーティションによって共有される。
【0136】
MPMの構築はISPの分割モードに依存するかもしれない。水平または垂直の2つの分割モードが決定される。それらは
図7および
図8のように示されており、ここで、水平分割/パーティションが上に示され、垂直分割/パーティションが下に示されている。
【0137】
下記の表2は、VTM 4.0で使用された3MPMリストの特徴をまとめたものである。
【表2】
【0138】
CABACコンテキスト・モデリング/コーディングに関する背景
図9に示されるように、CABACコーディングは、二値化、コンテキスト・モデリング、および二進算術コーディングから構成される。二値化は、構文要素を二値のシンボル(ビン[bin])にマッピングする。コンテキスト・モデリングは、何らかの特定のコンテキストに基づいて、それぞれのバイパスされない(すなわち、通常コーディングされる)ビンの確率を推定する。最後に、二進算術コーディングは、推定された確率に従って諸ビンを諸ビットに圧縮する。
【0139】
それぞれの二値でない構文要素値をビンのシーケンスに分解することによって、CABACにおける各ビン値のさらなる処理は、関連するコーディング・モード決定に依存し、これは通常モードまたはバイパス・モードとして選択されることができる。後者のバイパス・モードは、均一に分布すると想定される諸ビンについて選ばれ、その結果、それらのビンについては、通常の二進算術エンコード(およびデコード)プロセス全体が単にバイパスされる。通常コーディング・モードでは、各ビン値は通常の二進算術コーディング・エンジンを用いてエンコードされる。ここで、関連する確率モデルは、構文要素のタイプと、構文要素の二値化された表現におけるビン位置またはビン・インデックス(binIdx)に基づいて、固定選択によって決定されるか、または関係したサイド情報に依存して2つ以上の確率モデルから適応的に選択される。
【0140】
確率モデルの選択は、コンテキスト・モデリングと呼ばれる。CABACにおける各確率モデルは、一意的なコンテキスト・インデックス(ctxIdx)を用いてアドレス指定され、コンテキスト・インデックスは、固定された割り当てによって決定されるか、またはコンテキスト導出論理によって計算され、それによって、所与のコンテキスト・モデルが指定される。
【0141】
左および上の近傍をどのように決定するかに関する背景
VVCのイントラ予測モード・コーディングはその近傍ブロックのイントラ予測モードに依存する。つまり、現在ブロックの左および上のブロックである。それらの位置は
図10に示される。
【0142】
MPMインデックスの信号伝達
フラグ(すなわちMPMフラグ)が、現在ブロックのイントラ予測モードがMPMリストにあるか否かを示すために使用される。MPMフラグが真(すなわち1の値)である場合、MPMインデックスを用いてイントラ予測モードが決定できる。MPMインデックスは、MPMリストの長さが6である場合、次の表3に示されるように、打ち切りされた単進コードを使用してコーディングされる。MPMフラグが真でない場合、現在ブロックのイントラ予測モードはMPMリストに存在せず、モードは打ち切りされた二進コードを用いてコーディングされる。MPMリストが5つのモードで構成されている場合のMPMインデックスの別の例が表4に示されている。コーディング・インデックスのためのビン・ストリングは、打ち切りされた単進コード(非MPMモードをコーディングするための打ち切りされた二進コードではない)と呼ばれる。切り捨てられた単進コードについては、ビン0とビン1は一般性を失うことなく交換可能であることに注意されたい。一例では、MPMリストが5つのモードで構成されている場合のMPMインデックスは、表5に示されるようにコーディングされることもできる。
【0143】
【0144】
平面モード、DC、水平、垂直モード、および角度モードに関する背景:イントラ予測モード、平面(0の値)およびDC(1の値)。他のイントラ予測モードは、角度予測モード〔アンギュラー予測モード〕と呼ばれる。
【0145】
VTM4.0では、表6に示すような以下の構文設計が、イントラ予測モード情報を信号伝達するために使用される。
【表6】
【0146】
intra_luma_ref_idx[x0][y0]は、0、1、または2の3つの値をもつことができ、どの参照ラインが使用されるかを示す。intra_luma_ref_idx[x0][y0]が存在しない場合は、0に等しいと推定される。
intra_subpartitions_mode_flag[x0][y0]が1に等しいことは、現在のイントラ・コーディング単位がさらにパーティション分割される(すなわち、ISPモードが有効にされる)ことを指定する。intra_subpartitions_mode_flag[x0][y0]が0に等しいことは、現在のイントラ・コーディング単位が長方形の変換ブロックにサブパーティションにパーティション分割されないことを指定する。intra_subpartitions_mode_flag[x0][y0]が存在しない場合は、0に等しいと推定される。
構文要素intra_luma_mpm_flag[x0][y0]、intra_luma_mpm_idx[x0][y0]、およびintra_luma_mpm_remainder[x0][y0]は、ルーマ・サンプルについてのイントラ予測モードを指定する。
intra_luma_mpm_flag[x0][y0]は、現在ブロックのイントラ予測モードがMPMリストから導出されるか否かを示す。
intra_luma_mpm_flag[x0][y0]の値が1であれば、そのことは、現在ブロックのイントラ予測モードがMPMリストから導出されることを示し、intra_luma_mpm_flag[x0][y0]の値が0であれば、そのことは、現在ブロックのイントラ予測モードがMPMリストから導出されないことを示す。intra_luma_mpm_flag[x0][y0]が存在しない場合は、1に等しいと推定される。intra_luma_mpm_flag[x0][y0]は表3におけるMPMフラグに対応する。
intra_luma_mpm_idxは表3におけるMPMインデックスに対応し、表3に示されるように打ち切りされた単進コードを使用する。
intra_luma_mpm_remainderは、MPMリストにないモードの打ち切りされた二進コードを表す。
【0147】
実施形態1では、構文要素intra_luma_planar_flagおよびctxが開示される。
【0148】
本発明のある実施形態によれば、フラグintra_luma_planar_flagが導入される。intra_luma_mpm_flagの値が真である場合(たとえばその値が1)、デコーダはintra_luma_planar_flagをパースし、現在ブロックのイントラ予測モードが平面モードか否かを決定する。intra_luma_planar_flagの値が1である場合、現在ブロックのイントラ予測モードは平面モードである。intra_luma_planar_flagの値が0である場合、現在ブロックのイントラ予測モードは、平面モードではない。intra_luma_planar_flagが存在しない場合(たとえば、intra_luma_mpm_flagが0に等しい場合、このフラグはビットストリームからパースできない)、intra_luma_planar_flagの値は0と推定される。
【0149】
VVC作業原案仕様のスタイルで書かれれば、現在ブロックのイントラ予測モード
IntraPredModeY[xCb][yCb]は、以下の手順を適用することによって導出される:
- intra_luma_mpm_flag[xCb][yCb]が1に等しい場合、
- intra_luma_planar_flag[xCb][yCb]が1に等しい場合、intraPredModeY[xCb][yCb]はINTRA_PLANARに等しく設定される
-それ以外の場合、IntraPredModeY[xCb][yCb]はcandModeList[intra_luma_mpm_idx[xCb][yCb]]に等しく設定される。
【0150】
イントラ予測モードが平面モードでない場合(すなわち、intra_luma_planar_flagの値が0)、デコーダはさらに構文要素intra_luma_mpm_idxをパースする。
【0151】
一例では、intra_luma_planar_flagの値は、CABACコンテキスト・コーディングされ(すなわち、CABACバイパス・コーディングではない)、現在ブロックが通常のイントラブロックであるか否かに基づいて、デコーダは、コンテキストを使用して、前記フラグをパースする。
【0152】
一例では、intra_luma_planar_flagの値は、CABACコンテキスト・コーディングされ(すなわち、CABACバイパス・コーディングではない)、デコーダは、現在ブロックが、複数参照ライン(MRL)が有効にされたイントラブロックであるか否かに基づくコンテキストを使用して、前記フラグをパースする。
【0153】
一例では、intra_luma_planar_flagの値は、CABACコンテキスト型コーディングされ(すなわち、CABACバイパス・コーディングされるのではない)、デコーダは、現在ブロックが、イントラサブパーティション(ISP)コーディング・モードが有効にされたイントラブロックであるか否かに基づくコンテキストを使用して、前記フラグをデコードする。
【0154】
一例では、intra_luma_planar_flagの位置は表7のように配置される。
【表7】
【0155】
実施形態2:intra_luma_not_planar_flagおよびctx
本発明のある実施形態によれば、構文要素intra_luma_not_planar_flagが導入される。
【0156】
intra_luma_mpm_flagの値が真であれば(たとえば、その値が1)、デコーダはintra_luma_not_planar_flagをパースし、現在ブロックのイントラ予測モードが平面モードであるか否かを判定する。intra_luma_not_planar_flagの値が1である場合、現在ブロックのイントラ予測モードは平面モードではなく、intra_luma_not_planar_flagの値が0である場合、現在ブロックのイントラ予測モードは平面モードである。intra_luma_not_planar_flagがビットストリームに存在しない場合、intra_luma_not_planar_flagの値は1と推定される。一例では、intra_luma_not_planar_flagの位置は表8のように配置される。
【0157】
現在ブロックのイントラ予測モードが平面モードでない場合(すなわち、intra_luma_not_planar_flagの値が1)、デコーダはさらに構文要素intra_luma_mpm_idxをパースする。
【0158】
VVC作業原案仕様書のスタイルで書かれれば、現在ブロックのイントラ予測モード
IntraPredModeY[xCb][yCb]は、以下の手順を適用することによって導出される:
- intra_luma_mpm_flag[xCb][yCb]が1に等しい場合、
- intra_luma_not_planar_flag[xCb][yCb]が0に等しい場合、intraPredModeY[xCb][yCb]がINTRA_PLANARに等しく設定される
-それ以外の場合、IntraPredModeY[xCb][yCb]はcandModeList[intra_luma_mpm_idx[xCb][yCb]]に等しく設定される。
【0159】
一例では、intra_luma_not_planar_flagの値は、CABACコンテキスト型コーディングされ(すなわち、CABACバイパス・コーディングされるのではない)、デコーダは、現在ブロックが通常のイントラブロックであるか否かに基づくコンテキストを使用して、前記フラグをパースする。
【0160】
一例では、intra_luma_not_planar_flagの値は、CABACコンテキスト型コーディングされ(すなわち、CABACバイパス・コーディングされるのではない)、デコーダは、現在ブロックが複数参照ライン(MRL)が有効にされたイントラブロックであるかどうかに基づくコンテキストを使用して、前記フラグをパースする。
【0161】
一例では、intra_luma_not_planar_flagの値は、CABACコンテキスト型コーディングされ(すなわち、CABACバイパス・コーディングされるのではない)、デコーダは、現在ブロックがイントラサブパーティション(ISP)コーディング・モードが有効にされたイントラブロックであるか否かに基づくコンテキストを使用して、前記フラグをパースする。
【表8】
【0162】
実施形態3:intra_luma_planar_flagおよびMRL、およびバイパス・デコード
本発明のある実施形態によれば、フラグintra_luma_planar_flagが導入される。
【0163】
intra_luma_mpm_flagの値が真である場合(たとえば、その値が1)、デコーダは参照インデックス・ライン((intra_luma_ref_idx)の値が0であるか否かをパースする。参照インデックス・ラインの値が0である場合、現在ブロックのイントラ予測モードが平面モードであるか否かを決定するために、intra_luma_planar_flagの値がパースされる。intra_luma_planar_flagの値が1である場合、現在ブロックのイントラ予測モードは平面モードである。intra_luma_planar_flagの値が0である場合、現在ブロックのイントラ予測モードは、平面モードではない。intra_luma_planar_flagが存在しない場合、intra_luma_planar_flagの値は0と推定される。
【0164】
現在ブロックのイントラ予測モードが平面モードでない場合(すなわち、intra_luma_planar_flagの値が0)、デコーダはさらにintra_luma_mpm_idxをパースする。
【0165】
一例では、intra_luma_planar_flagの値はCABACバイパス・コーディングされ(すなわち、CABACコンテキスト型コーディングされない)、デコーダは、いかなるCABACコンテキストも使わずに、前記フラグをパースする。
【0166】
intra_luma_planar_flagの位置は表9のように配置される。
【表9】
【0167】
実施形態4:intra_luma_not_planar_flagおよびMRL、およびバイパス・デコード
本発明のある実施形態によれば、フラグintra_luma_not_planar_flagが導入される。intra_luma_mpm_flagの値が真である場合(たとえば、その値が1)、デコーダは参照インデックス・ラインの値が0であるか否かをパースする。参照インデックス・ラインの値が0である場合、現在ブロックのイントラ予測モードが平面モードであるか否かを判定するために、intra_luma_not_planar_flagがパースされる。intra_luma_not_planar_flagの値が1である場合、現在ブロックのイントラ予測モードは、平面モードではない。intra_luma_planar_flagの値が0である場合、現在ブロックのイントラ予測モードは平面モードである。intra_luma_not_planar_flagが存在しない場合、intra_luma_not_planar_flagの値は1と推定される。
【0168】
現在ブロックのイントラ予測モードが平面モードでない場合(すなわち、intra_luma_not_planar_flagの値が1)、デコーダはさらに、intra_luma_mpm_idxをパースする。
【0169】
一例では、intra_luma_not_planar_flagの値は、CABACバイパス・コーディングされ(すなわち、CABACコンテキスト型コーディングされない)、デコーダは、いかなるCABACコンテキストも使用せずに、前記フラグをパースする。
【0170】
intra_not_luma_planar_flagの位置は表10のように配置される。
【表10】
【0171】
実施形態5:intra_luma_not_planar_flagおよびMRL、およびCABACコンテキスト型コーディングされる(実施形態4との相違点は、intra_luma_not_planar_flagがバイパス・コーディングされるのではなくCABACコンテキスト型コーディングされることである)。
【0172】
本発明のある実施形態によれば、フラグintra_luma_not_planar_flagが導入される。
【0173】
デコーダは、使用された参照ライン・インデックスを示す値をパースする。参照インデックス・ラインの値が0である場合、デコーダはintra_luma_mpm_flagの値をパースする。intra_luma_mpm_flagの値が真である場合(たとえばその値が1)、デコーダは参照インデックス・ラインの値が0であるか否かをチェックする。参照インデックス・ラインの値が0である場合、現在ブロックのイントラ予測モードが平面モードであるか否かを判定するために、intra_luma_not_planar_flagがパースされる。intra_luma_not_planar_flagの値が1である場合、現在ブロックのイントラ予測モードは平面モードではない。intra_luma_not_planar_flagの値が0である場合、現在ブロックのイントラ予測モードは平面モードである。intra_luma_not_planar_flagが存在しない場合、intra_luma_not_planar_flagの値は1と推定される。
【0174】
現在ブロックのイントラ予測モードが平面モードでない場合(すなわち、intra_luma_not_planar_flagの値が1である場合)、デコーダはさらにintra_luma_mpm_idxをパースする。
【0175】
一例では、intra_luma_not_planar_flagの値は、CABACコンテキスト型コーディングされ(すなわち、CABACバイパス・コーディングされるのではない)、デコーダは、現在ブロックが通常のイントラブロックであるか否かに基づくコンテキストを使用して、前記フラグをパースする。
【0176】
一例では、intra_luma_not_planar_flagの値がCABACコンテキスト型コーディングされ(すなわち、CABACバイパス・コーディングされるのではない)、デコーダは、現在ブロックが複数参照ライン(MRL)が有効にされたイントラブロックであるか否かに基づくコンテキストを使用して、前記フラグをパースする。
【0177】
一例では、intra_luma_not_planar_flagの値は、CABACコンテキスト型コーディングされ(すなわち、CABACバイパス・コーディングされるのではない)、デコーダは、現在ブロックがイントラサブパーティション(ISP)コーディング・モードが有効にされたイントラブロックであるか否かに基づくコンテキストを使用して、前記フラグをパースする。
【0178】
intra_not_luma_planar_flagの位置は表11のように配置される。
【表11】
【0179】
intra_luma_not_planar_flag[x0][y0]が存在しない場合、1に等しいと推定される。
【0180】
下記の表12は、コンテキスト・コーディングされたビンをもつ構文要素へのctxIncの割り当ての例を示している。
【表12】
【0181】
ある実施形態では、MPMリストは、以下のプロセスに従って構築される。
【0182】
8.4.2 ルーマ・イントラ予測モードについての導出プロセス
このプロセスへの入力は以下の通り:
-現在のピクチャーの左上のルーマ・サンプルに対して現在のルーマ・コーディング・ブロックの左上のサンプルを指定するルーマ位置(xCb,yCb)、
-ルーマ・サンプル単位での現在のコーディング・ブロックの幅を指定する変数cbWidth、
-ルーマ・サンプル単位での現在のコーディング・ブロックの高さを指定する変数cbHeight。
【0183】
このプロセスでは、ルーマ・イントラ予測モードIntraPredModeY[xCb][yCb]が導出される。
【0184】
表13は、イントラ予測モードIntraPredModeY[xCb][yCb]についての値と関連付けられた名前を指定する。
【表13】
注:INTRA_LT_CCLM、INTRA_L_CCLMおよびINTRA_T_CCLMはクロマ成分にのみ適用可能である。
【0185】
IntraPredModeY[xCb][yCb]は以下のように導出される:
- intra_luma_not_planar_flag[xCb][yCb]が1に等しい場合、以下の順序付けられた段階が適用される。
【0186】
1. 近傍位置(xNbA,yNbA)および(xNbB,yNbB)は、それぞれ(xCb-1,yCb+cbHeight-1)および(xCb+cbWidth-1,yCb-1)に等しく設定される。
【0187】
2. XがAまたはBのいずれかで置き換えられる場合、変数candIntraPredModeXは以下のように導出される:
-ブロックについての利用可能性導出プロセスが呼び出される:(xCb,yCb)に等しく設定された位置(xCurr,yCurr)および(xNbX,yNbX)に等しく設定された近傍位置(xNbY,yNbY)を入力として、近傍ブロック利用可能性検査プロセスが呼び出され、出力はavalableXに割り当てられる。
-候補イントラ予測モードcandIntraPredModeXは以下のように導出される:
-次の条件の一つまたは複数が真である場合、candIntraPredModeXはINTRA_PLANARに等しく設定される
-変数availableXがFALSEに等しい
- CuPredMode[xNbX][yNbX]がMODE_INTRAと等しくなく、ciip_flag[xNbX][yNbX]が1と等しくない
- pcm_flag[xNbX][yNbX]が1に等しい
-XがBと等しく、yCb-1が((yCb>>CtbLog2SizeY)<<CtbLog2SizeY)より小さい
-それ以外の場合、candIntraPredModeXはIntraPredModeY[xNbX][yNbX]に等しく設定される。
ここで、Xは近傍ブロックAまたはBによって置き換えられ、ルーマ位置(xCb,yCb)は現在のピクチャーの左上のルーマ・サンプルに対して現在のルーマ・コーディング・ブロックの左上のサンプルを指定し、近傍Aの位置(xNbA,yNbA)は(xCb-1,yCb+cbHeight-1)に等しく設定され、近傍Bの位置(xNbB,yNbB)は(xCb+cbWidth-1,yCb-1)に等しく設定され、変数cbWidthは現在のコーディング・ブロックの幅を指定し、変数cbHeightはルーマ・サンプル単位での現在のコーディング・ブロックの高さを指定し、CuPredModeは現在の予測モードを表し、SizeYはコーディング・ツリー・ブロックのY成分のサイズを表す。
【0188】
3. x=0..4でのcandModeList[x]は以下のように導出される:
- candIntraPredModeBがcandIntraPredModeAと等しく、candIntraPredModeAがINTRA_DCより大きい場合、x=0..4でのcandModeList[x]は以下のように導出される:
candModeList[0]=candIntraPredModeA (8-10)
candModeList[1]=2+((candIntraPredModeA+61)%64) (8-12)
candModeList[2]=2+((candIntraPredModeA-1)%64) (8-13)
candModeList[3]=INTRA_DC (8-11)
candModeList[4]=2+((candIntraPredModeA+60)%64) (8-14)
-それ以外の場合で、candIntraPredModeBがcandIntraPredModeAと等しくなく、candIntraPredModeAまたはcandIntraPredModeBがINTRA_DCより大きい場合、以下が適用される:
-変数minABおよびmaxABは以下のように導出される:
minAB=Min(candIntraPredModeA,candIntraPredModeB) (8-24)
maxAB=Max(candIntraPredModeA,candIntraPredModeB) (8-25)
- candIntraPredModeAとcandIntraPredModeBの両方がINTRA_DCよりも大きい場合、x=0..4でのcandModeList[x]は以下のように導出される:
candModeList[0]=candIntraPredModeA (8-27)
candModeList[1]=candIntraPredModeB (8-29)
candModeList[2]=INTRA_DC (8-29)
- maxAB-minABが2~62の範囲(両端を含む)にある場合は、以下が適用される:
candModeList[3]=2+((maxAB+61)%64) (8-30)
candModeList[4]=2+((maxAB-1)%64) (8-31)
-それ以外の場合は、以下が適用される:
candModeList[3]=2+((maxAB+60)%64) (8-32)
candModeList[4]=2+((maxAB)%64) (8-33)
-それ以外の場合(candIntraPredModeAまたはcandIntraPredModeBがINTRA_DCより大きい)、x=0..4でのcandModeList[x]は以下のように導出される:
candModeList[0]=maxAB (8-65)
candModeList[1]=INTRA_D (8-66)
candModeList[2]=2+((maxAB+61)%64) (8-66)
candModeList[3]=2+((maxAB-1)%64) (8-67)
candModeList[4]=2+((maxAB+60)%64) (8-68)
-それ以外の場合は、以下が適用される:
candModeList[0]=INTRA_DC (8-71)
candModeList[1]=INTRA_ANGULAR50 (8-72)
candModeList[2]=INTRA_ANGULAR18 (8-73)
candModeList[3]=INTRA_ANGULAR46 (8-74)
candModeList[4]=INTRA_ANGULAR54 (8-75)
【0189】
4. IntraPredModeY[xCb][yCb]は、以下の手順を適用することによって導出される:
- intra_luma_mpm_flag[xCb][yCb]が1に等しい場合、IntraPredModeY[xCb][yCb]はcandModeList[intra_luma_mpm_idx[xCb][yCb]]に等しく設定される。
-それ以外の場合、IntraPredModeY[xCb][yCb]は、以下の順序付けられた段階を適用することによって導出される:
1. i=0..3および各iについてのj=(i+1)..4についてcandModeList[i]がcandModeList[j]より大きい場合、両方の値は次のように交換される:
(candModeList[i],candModeList[j])=Swap(candModeList[i],candModeList[j]) (8-94)
2. IntraPredModeY[xCb][yCb]は、以下の順序付けられた段階によって導出される:
i. IntraPredModeY[xCb][yCb]が、intra_luma_mpm_remainder[xCb][yCb]に等しく設定される。
ii. IntraPredModeY[xCb][yCb]の値は1だけインクリメントされる。
iii. 0~4に等しいiについて、IntraPredModeY[xCb][yCb]がcandModeList[i]以上である場合、IntraPredModeY[xCb][yCb]の値は1だけインクリメントされる。
-それ以外の場合(intra_luma_not_planar_flag[xCb][yCb]が0に等しい)、IntraPredModeY[xCb][yCb]がINTRA_PLANARに等しく設定される。
【0190】
x=xCb..xCb+cbWidth-1およびy=yCb..yCb+cbHeight-1での変数IntraPredModeY[x][y]は、IntraPredModeY[xCb][yCb]に等しく設定される。
【0191】
一例では、現在ブロックのイントラ予測モード(たとえば、変数名はluma_intra_mode)は、平面モードでも5-MPMリスト内のイントラ予測モードでもなく、以下のようにして、その値が導出され、このイントラ予測モードの予測が実行される:
1. ビットストリームからintra_luma_mpm_remainderの値を導出し、luma_intra_modeがintra_luma_mpm_remainderの値に設定される。
2. IntraPredModeY[xCb][yCb]の値が1だけインクリメントされる。
3. i=0~4に等しいiについて(5-MPMリスト内の各エントリーと比較)、luma_intra_modeがMPM[i]以上である場合(ここで、MPM[0]はMPMリストの最初のエントリー、MPM[1]はMPMリストの2番目のエントリー、など)、luma_intra_modeの値は1だけインクリメントされる。
4. 導出されたイントラ予測モード(luma_intra_mode)および対応する参照サンプルを使用して、イントラ予測を実行する。
【0192】
上記の諸実施形態のある実装では、平面モードは、暗黙的に、常に、暗黙的な6-MPMリストの中の最初のエントリーと考えられてもよい。この暗黙的な6-MPMリストは、平面(常に最初のエントリー)および5つの他のモード(これらは5-MPMリストとして明示的に記述できる)で構成される。
【0193】
これは、もし平面モードが常に暗黙的な6-MPMリストの最初の位置にあるなら、それは暗黙的なMPMリストの外に分割されることができ、現在ブロックのイントラ予測モードが平面であるか否かを示すために特別なフラグ(たとえば、フラグintra_luma_planar_flagまたはフラグintra_luma_not_planar_flag)が割り当てられるからである。
【0194】
一例では、平面モードが現在ブロックのイントラ予測モードと等しいかどうかを示す特別なフラグとして、intra_luma_not_planar_flag[x0][y0]を導入することを考える。平面モードである場合、intra_luma_not_planar_flagは0に設定され、それ以外の場合は1に設定される。この場合、mpm_idxの最初のビンは、特別なフラグintra_luma_not_planar_flagと等価である。
【0195】
現在ブロックのイントラ予測モードが平面である場合、MPMインデックスは0に等しく、コーディングされたビンは0である。現在ブロックのイントラ予測モードが非平面である場合、MPMインデックスは0に等しくなく、MPMインデックスの最初のビンは常に1に等しい。
【0196】
一例では、intra_luma_mpm_idxは打ち切りされた単進(TR)コードを使用してコーディングされる。
値 TR
Mpm_idx 0 0
Mpm_idx 1 10
Mpm_idx 2 110
Mpm_idx 3 1110
Mpm_idx 4 1111
【0197】
本発明のある実施形態によれば(非角度分枝):
●段階1:
図10に従い、左近傍ブロックのイントラ予測モードと、上近傍ブロックのイントラ予測モードを取得する。近傍ブロックのイントラ予測モードが利用可能でない場合(たとえば、近傍ブロックがピクチャー境界外であるか、または近傍ブロックがインターコーディングされている場合)、近傍ブロックのイントラ予測モードは平面として設定される。左近傍のイントラ予測モードはleft_modeと表され、上近傍ブロックのイントラ予測モードはabove_modeと表される。
●段階2:近傍ブロックのイントラ予測モードが角度モードか否かを判定する。
●段階3:以下の条件(中黒の項目)のすべてが真であると評価された場合、
・left_modeが角度モードではなく、above_modeが角度モードではない
以下のようにイントラ予測モードのN個のエントリーを含むイントラ予測モードのリストが構築される(たとえば、Nが5に等しく、最初のエントリーはMPM[1]に対応し、2番目のエントリーはMPM[2]に対応する)。
MPM[1]:DC
MPM[2]:垂直モード(すなわち50)
MPM[3]:水平モード(すなわち18)
MPM[4]:垂直-4(すなわち46)
MPM[5]:垂直+4(すなわち54)
●段階4:現在ブロックをインデックス(MPMインデックスと表される)および構築されたリストのエントリーに基づいて予測する。
【0198】
本発明のある実施形態によれば、(非角度分枝):
●段階1:
図10に従い、左近傍ブロックのイントラ予測モードと、上近傍ブロックのイントラ予測モードを取得する。近傍ブロックのイントラ予測モードが利用可能でない場合(たとえば、近傍ブロックがピクチャー境界外であるか、または近傍ブロックがインターコーディングされている場合)、近傍ブロックのイントラ予測モードは平面として設定される。左近傍のイントラ予測モードはleft_modeと表され、上近傍ブロックのイントラ予測モードはabove_modeと表される。
●段階2:近傍ブロックのイントラ予測モードが角度モードか否かを判定する。
●段階3:以下の条件(中黒の項目)のすべてが真であると評価された場合、
・left_modeが角度モードではなく、above_modeが角度モードではない
以下のようにイントラ予測モードのN個のエントリーを含むイントラ予測モードのリストが構築される(たとえば、Nが5に等しく、最初のエントリーはMPM[1]に対応し、2番目のエントリーはMPM[2]に対応する)。
MPM[1]:DC
MPM[2]:垂直モード(すなわち50)
MPM[3]:水平モード(すなわち18)
MPM[4]:66
MPM[5]:2
●段階4:現在ブロックをインデックス(MPMインデックスと表される)および構築されたリストのエントリーに基づいて予測する。
【0199】
本発明のある実施形態によれば、(非角度分枝):
●段階1:
図10に従い、左近傍ブロックのイントラ予測モードと、上近傍ブロックのイントラ予測モードを取得する。近傍ブロックのイントラ予測モードが利用可能でない場合(たとえば、近傍ブロックがピクチャー境界外であるか、または近傍ブロックがインターコーディングされている場合)、近傍ブロックのイントラ予測モードは平面として設定される。左近傍のイントラ予測モードはleft_modeと表され、上近傍ブロックのイントラ予測モードはabove_modeと表される。
●段階2:近傍ブロックのイントラ予測モードが角度モードか否かを判定する。
●段階3:以下の条件(中黒の項目)のすべてが真であると評価された場合、
・left_modeが角度モードではなく、above_modeが角度モードではない
以下のようにイントラ予測モードのN個のエントリーを含むイントラ予測モードのリストが構築される(たとえば、Nが5に等しく、最初のエントリーはMPM[1]に対応し、2番目のエントリーはMPM[2]に対応する)。
MPM[1]:DC
MPM[2]:垂直モード(すなわち50)
MPM[3]:水平モード(すなわち18)
MPM[4]:2
MPM[5]:34
●段階4:現在ブロックをインデックス(MPMインデックスと表される)および構築されたリストのエントリーに基づいて予測する。
【0200】
本発明のある実施形態によれば、(非角度分枝):
●段階1:
図10に従い、左近傍ブロックのイントラ予測モードと、上近傍ブロックのイントラ予測モードを取得する。近傍ブロックのイントラ予測モードが利用可能でない場合(たとえば、近傍ブロックがピクチャー境界外であるか、または近傍ブロックがインターコーディングされている場合)、近傍ブロックのイントラ予測モードは平面として設定される。左近傍のイントラ予測モードはleft_modeと表され、上近傍ブロックのイントラ予測モードはabove_modeと表される。
●段階2:近傍ブロックのイントラ予測モードが角度モードか否かを判定する。
●段階3:以下の条件(中黒の項目)のすべてが真であると評価された場合、
・left_modeが角度モードではなく、above_modeが角度モードではない
以下のようにイントラ予測モードのN個のエントリーを含むイントラ予測モードのリストが構築される(たとえば、Nが5に等しく、最初のエントリーはMPM[1]に対応し、2番目のエントリーはMPM[2]に対応する)。
MPM[1]:DC
MPM[2]:垂直モード(すなわち50)
MPM[3]:水平モード(すなわち18)
MPM[4]:66
MPM[5]:34
●段階4:現在ブロックをインデックス(MPMインデックスと表される)および構築されたリストのエントリーに基づいて予測する。
【0201】
本発明のある実施形態によれば、(一角度分枝、一方は角度で他方は非角度):
●段階1:
図10に従い、左近傍ブロックのイントラ予測モードと、上近傍ブロックのイントラ予測モードを取得する。近傍ブロックのイントラ予測モードが利用可能でない場合(たとえば、近傍ブロックがピクチャー境界外であるか、または近傍ブロックがインターコーディングされている場合)、近傍ブロックのイントラ予測モードは平面として設定される。左近傍のイントラ予測モードはleft_modeと表され、上近傍ブロックのイントラ予測モードはabove_modeと表される。
●段階2:近傍ブロックのイントラ予測モードが角度モードか否かを判定する。
●段階3:以下の条件(中黒の項目)のすべてが真であると評価された場合、
・left_modeおよびabove_modeの一方が角度モード(angular mode)であり、他方は非角度モード(non-angular mode)である
以下のようにイントラ予測モードのN個のエントリーを含むイントラ予測モードのリストが構築される(たとえば、Nが5に等しく、最初のエントリーはMPM[1]に対応し、2番目のエントリーはMPM[2]に対応する):
角度モードをangとして定義し、以下のように得る:
left_modeが角度モードである場合、ang=left mode
そうでない場合(above modeが角度モード)ang=above mode
MPM[1]:ang
MPM[2]:DC
MPM[3]:2+((ang+61)%64)
MPM[4]:2+((ang-1)%64)
MPM[5]:2+((ang+60)%64)
●段階4:現在ブロックをインデックス(MPMインデックスと表される)および構築されたリストのエントリーに基づいて予測する。
【0202】
本発明のある実施形態によれば、(一角度分枝、一方は角度で他方は非角度):
●段階1:
図10に従い、左近傍ブロックのイントラ予測モードと、上近傍ブロックのイントラ予測モードを取得する。近傍ブロックのイントラ予測モードが利用可能でない場合(たとえば、近傍ブロックがピクチャー境界外であるか、または近傍ブロックがインターコーディングされている場合)、近傍ブロックのイントラ予測モードは平面として設定される。左近傍のイントラ予測モードはleft_modeと表され、上近傍ブロックのイントラ予測モードはabove_modeと表される。
●段階2:近傍ブロックのイントラ予測モードが角度モードか否かを判定する。
●段階3:以下の条件(中黒の項目)のすべてが真であると評価された場合、
・left_modeおよびabove_modeの一方が角度モード(angular mode)であり、他方は非角度モード(non-angular mode)である
以下のようにイントラ予測モードのN個のエントリーを含むイントラ予測モードのリストが構築される(たとえば、Nが5に等しく、最初のエントリーはMPM[1]に対応し、2番目のエントリーはMPM[2]に対応する):
角度モードをangとして定義し、以下のように得る:
left_modeが角度モードである場合、ang=left mode
そうでない場合(above modeが角度モード)ang=above mode
MPM[1]:DC
MPM[2]:ang
MPM[3]:2+((ang+61)%64)
MPM[4]:2+((ang-1)%64)
MPM[5]:2+((ang+60)%64)
●段階4:現在ブロックをインデックス(MPMインデックスと表される)および構築されたリストのエントリーに基づいて予測する。
【0203】
本発明のある実施形態によれば、(一角度分枝、一方は角度で他方は非角度):
●段階1:
図10に従い、左近傍ブロックのイントラ予測モードと、上近傍ブロックのイントラ予測モードを取得する。近傍ブロックのイントラ予測モードが利用可能でない場合(たとえば、近傍ブロックがピクチャー境界外であるか、または近傍ブロックがインターコーディングされている場合)、近傍ブロックのイントラ予測モードは平面として設定される。左近傍のイントラ予測モードはleft_modeと表され、上近傍ブロックのイントラ予測モードはabove_modeと表される。
●段階2:近傍ブロックのイントラ予測モードが角度モードか否かを判定する。
●段階3:以下の条件(中黒の項目)のすべてが真であると評価された場合、
・left_modeおよびabove_modeの一方が角度モード(angular mode)であり、他方は非角度モード(non-angular mode)である
以下のようにイントラ予測モードのN個のエントリーを含むイントラ予測モードのリストが構築される(たとえば、Nが5に等しく、最初のエントリーはMPM[1]に対応し、2番目のエントリーはMPM[2]に対応する):
角度モードをangとして定義し、以下のように得る:
left_modeが角度モードである場合、ang=left mode
そうでない場合(above modeが角度モード)ang=above mode
MPM[1]:ang
MPM[2]:2+((ang+61)%64)
MPM[3]:DC
MPM[4]:2+((ang-1)%64)
MPM[5]:2+((ang+60)%64)
●段階4:現在ブロックをインデックス(MPMインデックスと表される)および構築されたリストのエントリーに基づいて予測する。
【0204】
本発明のある実施形態によれば、(一角度分枝、一方は角度で他方は非角度):
●段階1:
図10に従い、左近傍ブロックのイントラ予測モードと、上近傍ブロックのイントラ予測モードを取得する。近傍ブロックのイントラ予測モードが利用可能でない場合(たとえば、近傍ブロックがピクチャー境界外であるか、または近傍ブロックがインターコーディングされている場合)、近傍ブロックのイントラ予測モードは平面として設定される。左近傍のイントラ予測モードはleft_modeと表され、上近傍ブロックのイントラ予測モードはabove_modeと表される。
●段階2:近傍ブロックのイントラ予測モードが角度モードか否かを判定する。
●段階3:以下の条件(中黒の項目)のすべてが真であると評価された場合、
・left_modeおよびabove_modeの一方が角度モード(angular mode)であり、他方は非角度モード(non-angular mode)
以下のようにイントラ予測モードのN個のエントリーを含むイントラ予測モードのリストが構築される(たとえば、Nが5に等しく、最初のエントリーはMPM[1]に対応し、2番目のエントリーはMPM[2]に対応する):
角度モードをangとして定義し、以下のように得る:
left_modeが角度モードである場合、ang=left mode
そうでない場合(above modeが角度モード)ang=above mode
MPM[0]:平面
MPM[1]:ang
MPM[2]:2+((ang+61)%64)
MPM[3]:2+((ang-1)%64)
MPM[4]:DC
MPM[5]:2+((ang+60)%64)
●段階4:現在ブロックをインデックス(MPMインデックスと表される)および構築されたリストのエントリーに基づいて予測する。
【0205】
本発明のある実施形態によれば、(一角度分枝、一方は角度で他方は非角度):
●段階1:
図10に従い、左近傍ブロックのイントラ予測モードと、上近傍ブロックのイントラ予測モードを取得する。近傍ブロックのイントラ予測モードが利用可能でない場合(たとえば、近傍ブロックがピクチャー境界外であるか、または近傍ブロックがインターコーディングされている場合)、近傍ブロックのイントラ予測モードは平面として設定される。左近傍のイントラ予測モードはleft_modeと表され、上近傍ブロックのイントラ予測モードはabove_modeと表される。
●段階2:近傍ブロックのイントラ予測モードが角度モードか否かを判定する。
●段階3:以下の条件(中黒の項目)のすべてが真であると評価された場合、
・left_modeおよびabove_modeの一方が角度モード(angular mode)であり、他方は非角度モード(non-angular mode)
以下のようにイントラ予測モードのN個のエントリーを含むイントラ予測モードのリストが構築される(たとえば、Nが5に等しく、最初のエントリーはMPM[1]に対応し、2番目のエントリーはMPM[2]に対応する):
角度モードをangとして定義し、以下のように得る:
left_modeが角度モードである場合、ang=left mode
そうでない場合(above modeが角度モード)ang=above mode
MPM[1]:ang
MPM[2]:2+((ang+61)%64)
MPM[3]:2+((ang-1)%64)
MPM[4]:2+((ang+60)%64)
MPM[5]:DC
●段階4:現在ブロックをインデックス(MPMインデックスと表される)および構築されたリストのエントリーに基づいて予測する。
【0206】
本発明のある実施形態によれば、(一角度分枝、二つは同じ角度モード):
●段階1:
図10に従い、左近傍ブロックのイントラ予測モードと、上近傍ブロックのイントラ予測モードを取得する。近傍ブロックのイントラ予測モードが利用可能でない場合(たとえば、近傍ブロックがピクチャー境界外であるか、または近傍ブロックがインターコーディングされている場合)、近傍ブロックのイントラ予測モードは平面として設定される。左近傍のイントラ予測モードはleft_modeと表され、上近傍ブロックのイントラ予測モードはabove_modeと表される。
●段階2:近傍ブロックのイントラ予測モードが角度モードか否かを判定する。
●段階3:以下の条件(中黒の項目)のすべてが真であると評価された場合、
・left_modeおよびabove_modeがいずれも角度モードであり、両者が同じ
以下のようにイントラ予測モードのN個のエントリーを含むイントラ予測モードのリストが構築される(たとえば、Nが5に等しく、最初のエントリーはMPM[1]に対応し、2番目のエントリーはMPM[2]に対応する):
MPM[1]:left mode
MPM[2]:2+((left mode+61)%64)
MPM[3]:2+((left mode-1)%64)
MPM[4]:DC
MPM[5]:2+((left mode+60)%64)
●段階4:現在ブロックをインデックス(MPMインデックスと表される)および構築されたリストのエントリーに基づいて予測する。
【0207】
本発明のある実施形態によれば、(一角度分枝、二つは同じ角度モード):
●段階1:
図10に従い、左近傍ブロックのイントラ予測モードと、上近傍ブロックのイントラ予測モードを取得する。近傍ブロックのイントラ予測モードが利用可能でない場合(たとえば、近傍ブロックがピクチャー境界外であるか、または近傍ブロックがインターコーディングされている場合)、近傍ブロックのイントラ予測モードは平面として設定される。左近傍のイントラ予測モードはleft_modeと表され、上近傍ブロックのイントラ予測モードはabove_modeと表される。
●段階2:近傍ブロックのイントラ予測モードが角度モードか否かを判定する。
●段階3:以下の条件(中黒の項目)のすべてが真であると評価された場合、
・left_modeおよびabove_modeがいずれも角度モードであり、両者が同じ
以下のようにイントラ予測モードのN個のエントリーを含むイントラ予測モードのリストが構築される(たとえば、Nが5に等しく、最初のエントリーはMPM[1]に対応し、2番目のエントリーはMPM[2]に対応する):
MPM[1]:DC
MPM[2]:left mode
MPM[3]:2+((left mode+61)%64)
MPM[4]:2+((left mode-1)%64)
MPM[5]:2+((left mode+60)%64)
●段階4:現在ブロックをインデックス(MPMインデックスと表される)および構築されたリストのエントリーに基づいて予測する。
【0208】
本発明のある実施形態によれば、(一角度分枝、二つは同じ角度モード):
●段階1:
図10に従い、左近傍ブロックのイントラ予測モードと、上近傍ブロックのイントラ予測モードを取得する。近傍ブロックのイントラ予測モードが利用可能でない場合(たとえば、近傍ブロックがピクチャー境界外であるか、または近傍ブロックがインターコーディングされている場合)、近傍ブロックのイントラ予測モードは平面として設定される。左近傍のイントラ予測モードはleft_modeと表され、上近傍ブロックのイントラ予測モードはabove_modeと表される。
●段階2:近傍ブロックのイントラ予測モードが角度モードか否かを判定する。
●段階3:以下の条件(中黒の項目)のすべてが真であると評価された場合、
・left_modeおよびabove_modeがいずれも角度モードであり、両者が同じ
以下のようにイントラ予測モードのN個のエントリーを含むイントラ予測モードのリストが構築される(たとえば、Nが5に等しく、最初のエントリーはMPM[1]に対応し、2番目のエントリーはMPM[2]に対応する):
MPM[1]:left mode
MPM[2]:DC
MPM[3]:2+((left mode+61)%64)
MPM[4]:2+((left mode-1)%64)
MPM[5]:2+((left mode+60)%64)
●段階4:現在ブロックをインデックス(MPMインデックスと表される)および構築されたリストのエントリーに基づいて予測する。
【0209】
本発明のある実施形態によれば、(一角度分枝、二つは同じ角度モード):
●段階1:
図10に従い、左近傍ブロックのイントラ予測モードと、上近傍ブロックのイントラ予測モードを取得する。近傍ブロックのイントラ予測モードが利用可能でない場合(たとえば、近傍ブロックがピクチャー境界外であるか、または近傍ブロックがインターコーディングされている場合)、近傍ブロックのイントラ予測モードは平面として設定される。左近傍のイントラ予測モードはleft_modeと表され、上近傍ブロックのイントラ予測モードはabove_modeと表される。
●段階2:近傍ブロックのイントラ予測モードが角度モードか否かを判定する。
●段階3:以下の条件(中黒の項目)のすべてが真であると評価された場合、
・left_modeおよびabove_modeがいずれも角度モードであり、両者が同じ
以下のようにイントラ予測モードのN個のエントリーを含むイントラ予測モードのリストが構築される(たとえば、Nが5に等しく、最初のエントリーはMPM[1]に対応し、2番目のエントリーはMPM[2]に対応する):
MPM[1]:left mode
MPM[2]:2+((left mode+61)%64)
MPM[3]:DC
MPM[4]:2+((left mode-1)%64)
MPM[5]:2+((left mode+60)%64)
●段階4:現在ブロックをインデックス(MPMインデックスと表される)および構築されたリストのエントリーに基づいて予測する。
【0210】
本発明のある実施形態によれば、(一角度分枝、二つは同じ角度モード):
●段階1:
図10に従い、左近傍ブロックのイントラ予測モードと、上近傍ブロックのイントラ予測モードを取得する。近傍ブロックのイントラ予測モードが利用可能でない場合(たとえば、近傍ブロックがピクチャー境界外であるか、または近傍ブロックがインターコーディングされている場合)、近傍ブロックのイントラ予測モードは平面として設定される。左近傍のイントラ予測モードはleft_modeと表され、上近傍ブロックのイントラ予測モードはabove_modeと表される。
●段階2:近傍ブロックのイントラ予測モードが角度モードか否かを判定する。
●段階3:以下の条件(中黒の項目)のすべてが真であると評価された場合、
・left_modeおよびabove_modeがいずれも角度モードであり、両者が同じ
以下のようにイントラ予測モードのN個のエントリーを含むイントラ予測モードのリストが構築される(たとえば、Nが5に等しく、最初のエントリーはMPM[1]に対応し、2番目のエントリーはMPM[2]に対応する):
MPM[1]:left mode
MPM[2]:2+((left mode+61)%64)
MPM[3]:2+((left mode-1)%64)
MPM[4]:2+((left mode+60)%64)
MPM[5]:DC
●段階4:現在ブロックをインデックス(MPMインデックスと表される)および構築されたリストのエントリーに基づいて予測する。
【0211】
本発明のある実施形態によれば、(二角度分枝):
●段階1:
図10に従い、左近傍ブロックのイントラ予測モードと、上近傍ブロックのイントラ予測モードを取得する。近傍ブロックのイントラ予測モードが利用可能でない場合(たとえば、近傍ブロックがピクチャー境界外であるか、または近傍ブロックがインターコーディングされている場合)、近傍ブロックのイントラ予測モードは平面として設定される。左近傍のイントラ予測モードはleft_modeと表され、上近傍ブロックのイントラ予測モードはabove_modeと表される。
●段階2:近傍ブロックのイントラ予測モードが角度モードか否かを判定する。
●段階3:以下の条件(中黒の項目)のすべてが真であると評価された場合、
・left_modeおよびabove_modeが2つの異なる角度モードである
以下のようにイントラ予測モードのN個のエントリーを含むイントラ予測モードのリストが構築される(たとえば、Nが5に等しく、最初のエントリーはMPM[1]に対応し、2番目のエントリーはMPM[2]に対応する):
MPM[1]:left_mode
MPM[2]:above_mode
MPM[3]:DC
-変数minABおよびmaxABは以下のように導出される:
minAB=Min(above_mode,left_mode)
maxAB=Max(above_mode,left_mode)
- maxAB-minABが2~62の範囲(両端を含む)にある場合は、以下が適用される:
MPM[4]=2+((maxAB+61)%64) (8-30)
MPM[5]=2+((maxAB-1)%64) (8-31)
-それ以外の場合は、以下が適用される:
MPM[4]=2+((maxAB+60)%64) (8-32)
MPM[5]=2+((maxAB)%64) (8-33)
●段階4:現在ブロックをインデックス(MPMインデックスと表される)および構築されたリストのエントリーに基づいて予測する。
【0212】
本発明のある実施形態によれば、(二角度分枝):
●段階1:
図10に従い、左近傍ブロックのイントラ予測モードと、上近傍ブロックのイントラ予測モードを取得する。近傍ブロックのイントラ予測モードが利用可能でない場合(たとえば、近傍ブロックがピクチャー境界外であるか、または近傍ブロックがインターコーディングされている場合)、近傍ブロックのイントラ予測モードは平面として設定される。左近傍のイントラ予測モードはleft_modeと表され、上近傍ブロックのイントラ予測モードはabove_modeと表される。
●段階2:近傍ブロックのイントラ予測モードが角度モードか否かを判定する。
●段階3:以下の条件(中黒の項目)のすべてが真であると評価された場合、
・left_modeおよびabove_modeが2つの異なる角度モードである
以下のようにイントラ予測モードのN個のエントリーを含むイントラ予測モードのリストが構築される(たとえば、Nが5に等しく、最初のエントリーはMPM[1]に対応し、2番目のエントリーはMPM[2]に対応する):
MPM[1]:above_mode
MPM[2]:left_mode
MPM[3]:DC
-変数minABおよびmaxABは以下のように導出される:
minAB=Min(above_mode,left_mode)
maxAB=Max(above_mode,left_mode)
- maxAB-minABが2~62の範囲(両端を含む)にある場合は、以下が適用される:
MPM[4]=2+((maxAB+61)%64) (8-30)
MPM[5]=2+((maxAB-1)%64) (8-31)
-それ以外の場合は、以下が適用される:
MPM[4]=2+((maxAB+60)%64) (8-32)
MPM[5]=2+((maxAB)%64) (8-33)
●段階6:現在ブロックをインデックス(MPMインデックスと表される)および構築されたリストのエントリーに基づいて予測する。
【0213】
本発明のある実施形態によれば、(二角度分枝):
●段階1:
図10に従い、左近傍ブロックのイントラ予測モードと、上近傍ブロックのイントラ予測モードを取得する。近傍ブロックのイントラ予測モードが利用可能でない場合(たとえば、近傍ブロックがピクチャー境界外であるか、または近傍ブロックがインターコーディングされている場合)、近傍ブロックのイントラ予測モードは平面として設定される。左近傍のイントラ予測モードはleft_modeと表され、上近傍ブロックのイントラ予測モードはabove_modeと表される。
●段階2:近傍ブロックのイントラ予測モードが角度モードか否かを判定する。
●段階3:以下の条件(中黒の項目)のすべてが真であると評価された場合、
・left_modeおよびabove_modeが2つの異なる角度モードである
以下のようにイントラ予測モードのN個のエントリーを含むイントラ予測モードのリストが構築される(たとえば、Nが5に等しく、最初のエントリーはMPM[1]に対応し、2番目のエントリーはMPM[2]に対応する):
MPM[1]:left_mode
MPM[2]:DC
MPM[3]:above_mode
-変数minABおよびmaxABは以下のように導出される:
minAB=Min(above_mode,left_mode)
maxAB=Max(above_mode,left_mode)
- maxAB-minABが2~62の範囲(両端を含む)にある場合は、以下が適用される:
MPM[4]=2+((maxAB+61)%64) (8-30)
MPM[5]=2+((maxAB-1)%64) (8-31)
-それ以外の場合は、以下が適用される:
MPM[4]=2+((maxAB+60)%64) (8-32)
MPM[5]=2+((maxAB)%64) (8-33)
●段階4:現在ブロックをインデックス(MPMインデックスと表される)および構築されたリストのエントリーに基づいて予測する。
【0214】
本発明のある実施形態によれば、(二角度分枝):
●段階1:
図10に従い、左近傍ブロックのイントラ予測モードと、上近傍ブロックのイントラ予測モードを取得する。近傍ブロックのイントラ予測モードが利用可能でない場合(たとえば、近傍ブロックがピクチャー境界外であるか、または近傍ブロックがインターコーディングされている場合)、近傍ブロックのイントラ予測モードは平面として設定される。左近傍のイントラ予測モードはleft_modeと表され、上近傍ブロックのイントラ予測モードはabove_modeと表される。
●段階2:近傍ブロックのイントラ予測モードが角度モードか否かを判定する。
●段階3:以下の条件(中黒の項目)のすべてが真であると評価された場合、
・left_modeおよびabove_modeが2つの異なる角度モードである
以下のようにイントラ予測モードのN個のエントリーを含むイントラ予測モードのリストが構築される(たとえば、Nが5に等しく、最初のエントリーはMPM[1]に対応し、2番目のエントリーはMPM[2]に対応する):
MPM[1]:above_mode
MPM[2]:DC
MPM[3]:left_mode
-変数minABおよびmaxABは以下のように導出される:
minAB=Min(above_mode,left_mode)
maxAB=Max(above_mode,left_mode)
- maxAB-minABが2~62の範囲(両端を含む)にある場合は、以下が適用される:
MPM[4]=2+((maxAB+61)%64) (8-30)
MPM[5]=2+((maxAB-1)%64) (8-31)
-それ以外の場合は、以下が適用される:
MPM[4]=2+((maxAB+60)%64) (8-32)
MPM[5]=2+((maxAB)%64) (8-33)
●段階6:現在ブロックをインデックス(MPMインデックスと表される)および構築されたリストのエントリーに基づいて予測する。
【0215】
本実施形態のある実装では、Nは6に等しく設定される。
【0216】
本実施形態のある実装では、Nは6に等しく設定される。この場合、上記のイントラ予測モードのリストは、6番目のエントリーではなく、上記の最初の5つのエントリーを含む。
【0217】
本実施形態のある実装では、Nは4に等しく設定される。この場合、上記のイントラ予測モードのリストは、5番目および6番目のエントリーではなく、上記の最初の4つのエントリーを含む。
【0218】
本実施形態のある実装では、前記イントラ予測モードのリストは、MPMリストと呼ばれる。
【0219】
ある実装では、前記リスト・インデックス(MPMインデックス)は、インジケータとしてビットストリーム内で信号伝達される。有利には、MPMインデックスは、コンテキスト適応エントロピー・コーダー(CABAC)でコーディングすることができる。MPMインデックスは、CABACによってさまざまな数の確率モデル(言い換えれば、コンテキスト)に従ってコーディングされる可能性がある。
【0220】
一例として、mpm_indexについての符号語の最初のビンは、CABACコンテキスト・コーディングされる。一例では、そのコンテキストは、現在のイントラブロックが複数参照ライン、ISPまたは通常のイントラブロックを適用されるかどうかに基づいて決定される。合計3つのコンテキストが、mpm_indexについての符号語の最初のビンのCABACコンテキストのために作成される。
【0221】
MPMリストが平面モードとDCモードの両方を含む場合、構築されたMPMリストから平面モードとDCモードを除いたMPMリストが、複数参照ライン・コーディング・ツールによって使用される。この場合、4-MPMリストが、複数参照ラインのイントラ予測モード・コーディングによって使用される。一例では、MPMリストの構築後、MPMリストは{平面(0の値),DC(1の値),VER(50の値),HOR(18の値),VER-4(46の値),VER+4(54の値)}であり、次いで、複数参照ラインが有効にされているときには{VER,HOR,VER-4,VER+4}の4-MPMリストがイントラ予測モード・コーディングによって使用される。
【0222】
MPMリストが平面モードを含むが、DCモードは含まない場合、構築されたMPMリストから平面を除いたMPMリストが、複数参照ライン・コーディング・ツールによって使用される。この場合、5-MPMリストが、複数参照ラインのイントラ予測モード・コーディングによって使用される。一例では、MPMリストは、MPMリスト構築後には{平面,VER,HOR,43,60,3}であり、次いで、複数参照ラインが有効にされているときには、{VER,HOR,43,60,3}の5-MPMリストが、イントラ予測モード・コーディングによって使用される。
【0223】
別の例では、DCモードのないMPMリストについて構文修正が必要になる場合がある。MPMリストがDCを含まない場合、DCモードは非MPM分枝(すなわち、mpmフラグが偽)で非常に頻繁に使用されるであろう。この場合、新しい構文DC_modeが導入される。DC_modeが1に等しいことは、現在ブロックのイントラ予測モードがDCモードであることを示す。DC_modeが0に等しいことは、現在ブロックのイントラ予測モードがDCモードでないことを示す。
【0224】
すなわち、非MPMの古い構文は、
if(mpm_flag)
…
else
intra_mode(TBを使用)
から、
if(mpm_flag)
…
else
DC_mode
If(DC_mode==0)
intra_mode(TBを使用)
に変更される。
【0225】
構文DC_modeは、コンテキスト適応エントロピー・コーダー(CABAC)を用いてコーディングされることができる。DC_modeはCABACによってさまざまな数の確率モデル(言い換えれば、コンテキスト)に従ってコーディングされうる。DC_Modeの導入により、打ち切りされたバイナリーについての最大値は60、すなわち、67(合計モード数)-6(MPM)-1(DC)である。DC_modeを導入しない場合、打ち切りされたバイナリーについての最大値は61、すなわち67(合計モード数)-6(MPM)である。
【0226】
特に、デコード装置またはエンコード装置によって実装される現在ブロックの予測コーディングの以下の方法が、本明細書において提供される。デコード装置は、
図1Aのビデオ・デコーダ30、または
図3のデコーダ30であり、エンコード装置は、
図1Aのビデオ・エンコーダ20、または
図2のエンコーダ20である。
【0227】
ある実施形態1200(
図12A参照)によれば、デコード装置によって実装される現在ブロックのイントラ予測の方法は、以下の段階を含む。段階1201で、装置は、現在ブロックの第1の指示情報の値を取得し、第1の指示情報の値は、現在ブロックのイントラ予測モードが、最確モードの集合に含まれているかどうかを示す。最確モードの集合は、5つの候補イントラ予測モードと平面モードを含む。第1の指示情報は第1のフラグ、たとえばintra_luma_mpm_flagによって示される。上述のように、intra_luma_mpm_flagの値が1に等しい場合、現在ブロックのイントラ予測モードは最確モードの集合に含まれる。
【0228】
段階1202で、装置は、現在ブロックの参照インデックス・ラインの値を得る。現在ブロックの参照インデックス・ラインの値は、intra_luma_ref_idxによって示されてもよい。現在ブロックの参照インデックス・ラインの値が0に等しい場合、すなわち、intra_luma_ref_idx[x0][y0]==0である場合、現在ブロックに最も近い近傍参照ラインが使用される。段階1201と1202の間には序列がない。
【0229】
段階1203で、装置は、第1の指示情報の値が、現在ブロックのイントラ予測モードが最確モードの集合に含まれているかどうかを判定する。
【0230】
段階1204で、装置は、参照インデックス・ラインの値が現在ブロックに最も近い近傍参照ラインを示すかどうかを判定する。段階1203と1204の間には序列がない。
【0231】
段階1205で、第1の指示情報の値が、現在ブロックのイントラ予測モードが最確モードの集合に含まれていることを示し、かつ、参照インデックス・ラインの値が、現在ブロックに最も近い近傍参照ラインが使用されることを示している場合、装置は、現在ブロックの第2の指示情報の値を取得する。現在ブロックの第2の指示情報の値は、現在ブロックのイントラ予測モードが平面モードであるか否かを示す。第2指示情報の値は、コンテキスト適応二進算術コーディング(CABAC)コンテキスト・デコードされる。第2の指示情報は、第2のフラグ、たとえば、intra_luma_not_planar_flagによって示されてもよい。装置は、現在ブロックがイントラサブパーティション(ISP)コーディング・モードが有効にされたイントラブロックであるかどうかに基づくコンテキストを使用して第2のフラグをパースする。
【0232】
MRLコーディングが有効にされていない場合、すなわち、参照インデックス・ラインの値が現在ブロックに最も近い近傍参照ラインが使用されることを示す場合、装置はビットストリームをパースして、第2の指示情報の値を得る。
【0233】
MRLが有効にされている(すなわち、参照ライン・インデックスが0に等しくない)場合には、平面モードは効率的でないことが見出されている。本発明の実施形態では、MRLコーディングが有効にされている場合、第2の指示情報の値は、デフォルト値によって取得される。この状況では、平面モードは除外され、その対応するフラグ(すなわち、intra_luma_not_planar_flag)はビットストリームからパースされず、デフォルト値(たとえば、1の値)として推定される。この場合、MRLが有効にされている場合、平面フラグ(すなわち、intra_luma_not_planar)の値を示すビットが節約される。
【0234】
この実施形態1200の詳細な情報は、上記の諸実施形態において示されている。
【0235】
実施形態1210(
図12B参照)によれば、デコード装置によって実装される現在ブロックのイントラ予測の方法は、以下の段階を含む。
【0236】
段階1211で、装置は、現在ブロックの参照インデックス・ラインの値を得る。現在ブロックの参照インデックス・ラインの値は、intra_luma_ref_idxによって示されてもよい。現在ブロックの参照インデックス・ラインの値が0に等しい場合、すなわち、intra_luma_ref_idx[x0][y0]==0である場合、現在ブロックに最も近い近傍参照ラインが使用される。
【0237】
段階1212で、装置は、参照インデックス・ラインの値が現在ブロックに最も近い近傍参照ラインが使用されることを示すかどうかを判定する。
【0238】
段階1213で、参照インデックス・ラインの値が現在ブロックに最も近い近傍参照ラインが使用されることを示す場合、装置は、現在ブロックの第1の指示情報の値を取得する。第1の指示情報の値は、現在ブロックのイントラ予測モードが最確モードの集合に含まれているかどうかを示す。最確モードの集合は5つの候補イントラ予測モードおよび平面モードを含む。第1の指示情報は第1のフラグ、たとえばintra_luma_mpm_flagによって示される。上述のように、intra_luma_mpm_flagの値が1に等しい場合、現在ブロックのイントラ予測モードは最確モードの集合に含まれる。
【0239】
段階1214で、装置は、第1の指示情報の値が、現在ブロックのイントラ予測モードが、最確モードの集合に含まれるかどうかを判定する。
【0240】
段階1215で、第1の指示情報の値が、現在ブロックのイントラ予測モードが最確モードの集合に含まれていることを示し、かつ、参照インデックス・ラインの値が、現在ブロックに最も近い近傍参照ラインが使用されることを示す場合、装置は、現在ブロックの第2の指示情報の値を取得する。現在ブロックの第2の指示情報の値は、現在ブロックのイントラ予測モードが平面モードであるか否かを示す。第2指示情報の値は、コンテキスト適応二進算術コーディング(CABAC)コンテキスト・デコードされる。第2の指示情報は、第2のフラグ、たとえば、intra_luma_not_planar_flagによって示されてもよい。装置は、現在ブロックがイントラサブパーティション(ISP)コーディング・モードが有効にされたイントラブロックであるか否かに基づくコンテキストを使用して第2のフラグをパースする。
【0241】
この実施形態1210の詳細な情報は、上記の諸実施形態において示されている。
【0242】
実施形態1300(
図13参照)によれば、エンコード装置によって実装される現在ブロックのイントラ予測の方法は、以下の段階を含む。段階1301で、装置は、現在ブロックのイントラ予測モードが、最確モードの集合に含まれるかどうかを判定する。最確モードの集合は、5つの候補イントラ予測モードおよび平面モードを含む。段階1302で、装置は、現在ブロックに最も近い近傍参照ラインがイントラ予測のために使用されるかどうかを判定する。1301と1302の間に序列はない。
【0243】
段階1303は、装置はビットストリームをエンコードする。ここで、ビットストリームは、現在ブロックのイントラ予測モードが最確モードの集合に含まれ、かつ、現在ブロックに最も近い近傍参照ラインがイントラ予測のために使用される場合に、現在ブロックのイントラ予測モードが平面モードであるかどうかを示す情報を含む。装置はさらに、エンコードされたビットストリームをデコード装置に送る。
【0244】
ビットストリームは、現在ブロックのイントラ予測モードが最確モードの集合に含まれるかどうかを示す第1のフラグと、現在ブロックのイントラ予測モードが平面モードであるかどうかを示す第2のフラグとを含む。前述のように、第1のフラグはintra_luma_mpm_flagである。intra_luma_mpm_flagの値が1に等しい場合、現在ブロックのイントラ予測モードは最確モードの集合に含まれる。
第2の指示情報の値は、コンテキスト適応二進算術コーディング(CABAC)コンテキスト・デコードされる。第2の指示情報は、第2のフラグ、たとえば、intra_luma_not_planar_flagによって示されてもよい。装置は、現在ブロックがイントラサブパーティション(ISP)コーディング・モードが有効にされたイントラブロックであるか否かに基づくコンテキストを使用して第2のフラグをパースする。
【0245】
ビットストリームはまた、現在ブロックの参照インデックス・ラインの値を示すための指示を含んでいてもよい。現在ブロックの参照インデックス・ラインの値は、たとえば、intra_luma_ref_idxによって示される。現在ブロックの参照インデックス・ラインの値が0に等しい場合、すなわち、intra_luma_ref_idx[x0][y0]==0である場合、現在ブロックに最も近い近傍参照ラインが使用される。
【0246】
この実施形態1300の詳細な情報は、上記の実施形態において示されている。
【0247】
図14は、デコード装置1400の実施形態を示している。デコード装置1400は、
図1Aのビデオ・デコーダ30、または
図3のデコーダ30であってもよく、デコード装置1400は、実施形態1200および上述の他の実施形態を実装するために使用できる。装置は、第1の取得ユニット1401と、第2の取得ユニット1402とを含む。第1の取得ユニット1401は、現在ブロックの参照インデックス・ラインの値、および現在ブロックの第1の指示情報の値を得るように構成され、第1の指示情報の値は、現在ブロックのイントラ予測モードが最確モードの集合に含まれるかどうかを示す。最確モードの集合は、5個の候補イントラ予測モードおよび平面モードを含む。第2の取得ユニット1402は、前記第1の指示情報の値が、現在ブロックのイントラ予測モードが最確モードの集合に含まれていることを示す場合、および、前記参照インデックス・ラインの値が、現在ブロックに最も近い近傍参照ラインが使用されることを示す場合に、現在ブロックの第2の指示情報の値を取得するように構成される。現在ブロックの前記第2の指示情報の値は、現在ブロックのイントラ予測モードが平面モードであるかどうかを示す。
【0248】
装置1400は、さらに、パース・ユニット1403(
図14には示されていない)を含む。パース・ユニット1403は、現在ブロックが、イントラサブパーティション(ISP)コーディング・モードが有効にされているイントラブロックであるか否かに基づくコンテキストを使用して第2のフラグをパースするように構成される。
【0249】
図15は、イントラ予測のためのエンコード装置1500の実施形態を示している。エンコード装置1500は、
図1Aのビデオ・エンコーダ20、または
図2のエンコーダ20であってもよく、エンコード装置1500は、実施形態1300および上述の他の実施形態を実装するために使用できる。
【0250】
装置1500は、決定ユニット1501およびエンコード・ユニット1502を含む。決定ユニット1501は、現在ブロックのイントラ予測モードが最確モードの集合に含まれるかどうかを決定し、現在ブロックに最も近い近傍参照ラインがイントラ予測のために使用されるかどうかを決定するように構成される。最確モードの集合は、5つの候補イントラ予測モードと平面モードを含む。エンコード・ユニット1502は、ビットストリームをエンコードするように構成され、ビットストリームは、現在ブロックのイントラ予測モードが最確モードの集合に含まれ、かつ、現在ブロックに最も近い近傍参照ラインがイントラ予測のために使用される場合に、現在ブロックのイントラ予測モードが平面モードであるかどうかを示す情報を含む。
【0251】
以下は、上記の諸実施形態に示されるエンコード方法やデコード方法ならびにそれらを使用するシステムの応用の説明である。
【0252】
図16は、コンテンツ配送サービスを実現するためのコンテンツ供給システム3100を示すブロック図である。このコンテンツ供給システム3100は、捕捉装置3102、端末装置3106を含み、任意的にディスプレイ3126を含む。捕捉装置3102は、通信リンク3104を通じて端末装置3106と通信する。通信リンクは、上述の通信チャネル13を含んでいてもよい。通信リンク3104は、WIFI、イーサネット、ケーブル、無線(3G/4G/5G)、USB、またはそれらの任意の種類の組み合わせなどを含むが、これらに限定されない。
【0253】
捕捉装置3102は、データを生成し、上記の諸実施形態に示されるようなエンコード方法によって該データをエンコードしてもよい。あるいはまた、捕捉装置3102は、ストリーミングサーバー(図には示されていない)にデータを配送することができ、サーバーは、データをエンコードし、エンコードされたデータを端末装置3106に送信する。捕捉装置3102は、カメラ、スマートフォンもしくはパッド、コンピュータもしくはラップトップ、ビデオ会議システム、PDA、車載装置、またはそれらの任意のものの組み合わせなどを含むが、これらに限定されない。たとえば、捕捉装置3102は、上述のように源装置12を含んでいてもよい。データがビデオを含む場合、捕捉装置3102に含まれるビデオ・エンコーダ20が、実際にビデオ・エンコード処理を実行してもよい。データがオーディオ(すなわち、音声)を含む場合、捕捉装置3102に含まれるオーディオ・エンコーダが、実際にオーディオ・エンコード処理を実行してもよい。いくつかの実際的なシナリオについては、捕捉装置3102は、エンコードされたビデオおよびオーディオ・データを、それらを一緒に多重化することによって配送する。たとえばビデオ会議システムにおける、他の実際的なシナリオについては、エンコードされたオーディオ・データおよびエンコードされたビデオ・データは多重化されない。捕捉装置3102は、エンコードされたオーディオ・データおよびエンコードされたビデオ・データを、端末装置3106に別個に配送する。
【0254】
コンテンツ供給システム3100では、端末装置310は、エンコードされたデータを受信および再生する。端末装置3106は、スマートフォンもしくはパッド3108、コンピュータもしくはラップトップ3110、ネットワークビデオレコーダー(NVR)/デジタルビデオレコーダー(DVR)3112、TV 3114、セットトップボックス(STB)3116、ビデオ会議システム3118、ビデオ監視システム3120、パーソナルデジタルアシスタント(PDA)3122、車両搭載装置3124、またはこれらの任意のものの組み合わせなどであって上述したエンコードされたデータをデコードすることができるものといった、データ受信および復元能力を有する装置であってもよい。たとえば、端末装置3106は、上記のような宛先装置14を含んでいてもよい。エンコードされたデータがビデオを含む場合、端末装置に含まれるビデオ・デコーダ30は、ビデオ・デコードを実行するために優先される。エンコードされたデータがオーディオを含む場合、端末装置に含まれるオーディオ・デコーダは、オーディオ・デコード処理を実行するために優先される。
【0255】
ディスプレイを有する端末装置、たとえばスマートフォンもしくはパッド3108、コンピュータもしくはラップトップ3110、ネットワークビデオレコーダー(NVR)/デジタルビデオレコーダー(DVR)3112、TV 3114、パーソナルデジタルアシスタント(PDA)3122、または車両搭載装置3124の場合、端末装置は、デコードされたデータをそのディスプレイに与えることができる。ディスプレイを備えていない端末装置、たとえばSTB 3116、ビデオ会議システム3118、またはビデオ監視システム3120については、デコードされたデータを受信し、表示するために外部ディスプレイ3126がそこに接触される。
【0256】
このシステムにおける各装置がエンコードまたはデコードを実行するとき、上述した実施形態に示されるようなピクチャー・エンコード装置またはピクチャー・デコード装置が使用できる。
【0257】
図17は、端末装置3106の一例の構造を示す図である。端末装置3106が捕捉装置3102からストリームを受信した後、プロトコル進行ユニット3202が、ストリームの送信プロトコルを解析する。このプロトコルは、リアルタイムストリーミングプロトコル(RTSP)、ハイパーテキスト転送プロトコル(HTTP)、HTTPライブストリーミングプロトコル(HLS)、MPEG-DASH、リアルタイムトランスポートプロトコル(RTP)、リアルタイムメッセージングプロトコル(RTMP)、またはそれらの任意の種類の組み合わせなどを含むが、これらに限定されない。
プロトコル進行ユニット3202がストリームを処理した後、ストリームファイルが生成される。ファイルは、多重分離ユニット3204に出力される。多重分離ユニット3204は、多重化されたデータをエンコードされたオーディオ・データとエンコードされたビデオ・データとに分離することができる。上述したように、たとえばビデオ会議システムにおけるいくつかの実際的なシナリオについては、エンコードされたオーディオ・データおよびエンコードされたビデオ・データは多重化されない。この状況では、エンコードされたデータは、多重分離ユニット3204を介することなく、ビデオ・デコーダ3206およびオーディオ・デコーダ3208に送信される。
【0258】
多重分離処理を介して、ビデオ・エレメンタリーストリーム(ES)、オーディオES、および任意的に字幕が生成される。上述した諸実施形態で説明されたようなビデオ・デコーダ30を含むビデオ・デコーダ3206は、上述した諸実施形態に示されるようなデコード方法によってビデオESをデコードして、ビデオ・フレームを生成し、このデータを同期ユニット3212に与える。オーディオ・デコーダ3208は、オーディオESをデコードしてオーディオ・フレームを生成し、このデータを同期ユニット3212に与える。あるいはまた、ビデオ・フレームは、同期ユニット3212に与える前に、バッファ(
図Yには示さず)に格納されてもよい。同様に、オーディオ・フレームは、同期ユニット3212に与える前に、バッファ(
図Yには示さず)に格納されてもよい。
【0259】
同期ユニット3212は、ビデオ・フレームとオーディオ・フレームを同期させ、ビデオ/オーディオをビデオ/オーディオ・ディスプレイ3214に供給する。たとえば、同期ユニット3212は、ビデオおよびオーディオ情報の提示を同期させる。コーディングされたオーディオおよびビジュアルデータの提示に関するタイムスタンプおよびデータストリーム自体の送達に関するタイムスタンプを使用して、情報がシンタックスにおいてコーディングされてもよい。
【0260】
字幕がストリームに含まれる場合、字幕デコーダ3210は、字幕をデコードし、それをビデオ・フレームおよびオーディオ・フレームと同期させ、ビデオ/オーディオ/字幕をビデオ/オーディオ/字幕ディスプレイ3216に供給する。
【0261】
本発明は、上述したシステムに限定されず、上述した諸実施形態におけるピクチャー・エンコード装置またはピクチャー・デコード装置はいずれも他のシステム、たとえば自動車システムに組み込まれることができる。
【0262】
数学演算子
本願で使用される数学演算子は、Cプログラミング言語で使用されるものに似ている。しかしながら、整数除算演算および算術シフト演算の結果は、より精密に定義され、累乗および実数値除算などの追加的な演算が定義される。番号付けおよび計数の慣例は一般に0から始まる。たとえば、"1番目の"は0番目と等価であり、"第2の"は1番目と等価、などとなる。
【0263】
算術演算子
次の演算子は、次のように定義される:
+ 加算
- 減算(2引数演算子として)または符号を変えること(単項プレフィックス演算子として)
* 行列乗算を含む乗算
x
y 累乗。xのy乗を指定する。他の文脈では、そのような表記は、累乗としての解釈が意図されない上付きのために使用される。
/ 整数除算。結果は結果がゼロに向かって切り捨てられる。たとえば、7/4および-7/-4は切り捨てられて1となり、-7/4および7/-4は切り捨てられて-1となる。
÷ 切り捨てや丸めが意図されていない数式における除算を示すために使用される。
【数5】
切り捨てや丸めが意図されていない数式における除算を示すために使用される。
【数6】
iがxからyまで(yも含む)のすべての整数値をとるときのf(i)の総和
x%y モジュラス。xの残りをyで割った余り。x≧0かつy>0である整数xおよびyについてのみ定義される。
【0264】
論理演算子
次の論理演算子は次のように定義される:
x && y xとyのブール論理「and」
x||y xとyのブール論理「or」
! ブール論理「not」
x?y:z xが真であるまたは0に等しくない場合、yの値に評価され、そうでない場合はzの値に評価される。
【0265】
関係演算子
次の関係演算子は、次のように定義される:
> より大きい
>= より大きいまたは等しい
< より小さい
<= より小さいまたは等しい
== 等しい
!= 等しくない
値"na"(該当せず)が割り当てられたシンタックス要素または変数に関係演算子が適用される場合、値"na"はそのシンタックス要素または変数についての独特の値として扱われる。値"na"は他のどの値とも等しくないとみなされる。
【0266】
ビット単位の演算子
次のビット単位の演算子は次のように定義される:
& ビット単位の「かつ」。整数引数に対して作用する場合、整数値の2の補数表現に対して作用する。他の引数よりも少ないビットを含むバイナリー引数に対して作用するとき、短いほうの引数は、さらなる、0に等しい有効ビットを加えることによって延長される。
| ビット単位の「または」。整数引数に対して作用する場合、整数値の2の補数表現に対して作用する。他の引数よりも少ないビットを含むバイナリー引数に対して作用するとき、短いほうの引数は、さらなる、0に等しい有効ビットを加えることによって延長される。
^ ビット単位の「排他的なまたは」。整数引数に対して作用する場合、整数値の2の補数表現に対して作用する。他の引数よりも少ないビットを含むバイナリー引数に対して作用するとき、短いほうの引数は、さらなる、0に等しい有効ビットを加えることによって延長される。
x>>y xの2の補数整数表現の、y個の2進数字ぶんの算術右シフト。この関数は、yの負でない整数値についてのみ定義される。右シフトの結果として諸最上位ビット(MSB)にシフトされた諸ビットは、シフト演算の前のxのMSBに等しい値をもつ。
x<<y xの2の補数整数表現の、y個の2進数字ぶんの算術左シフト。この関数は、yの負でない整数値についてのみ定義される。左シフトの結果として諸最下位ビット(LSB)にシフトされた諸ビットは、0に等しい値をもつ。
【0267】
代入演算子
以下の算術演算子は、下記のように定義される:
= 代入演算子
++ インクリメント、すなわちx++はx=x+1と等価;配列〔アレイ〕インデックスにおいて使用される場合は、インクリメント演算の前の変数の値に評価される。
-- デクリメント、すなわちx--はx=x-1と等価;配列インデックスにおいて使用される場合は、デクリメント演算の前の変数の値に評価される。
+= 指定された量だけインクリメント。すなわちx+=3はx=x+3と等価であり、x+=(-3)はx=x+(-3)と等価である。
-= 指定された量だけデクリメント。すなわちx-=3はx=x-3と等価であり、x-=(-3)はx=x-(-3)と等価である。
【0268】
範囲記法
次の記法が、値の範囲を指定するために使用される:
x=y…z xは、yから始まってzまで(両端含む)の整数値をとる。ここで、x、y、zは整数であり、zはyより大きい。
【0269】
数学的関数
次の数学的関数が定義される:
【数7】
Asin(x) 三角法の逆正弦関数。-1.0から1.0の範囲(両端含む)にある引数xに対して作用する。出力値はラジアン単位で-π÷2からπ÷2の範囲(両端含む)。
Atan(x) 三角法の逆正接関数。引数xに対して作用する。出力値はラジアン単位で-π÷2からπ÷2の範囲(両端含む)。
【数8】
Ceil(x) x以上の最小の整数。
Clip1
Y(x)=Clip3(0,(1 << BitDepth
Y)-1,x)
Clip1
C(x)=Clip3(0,(1 << BitDepth
C)-1,x)
【数9】
Cos(x) ラジアン単位の引数xに対して作用する三角法の余弦関数。
Floor(x) x以下の最大の整数。
【数10】
Ln(x) xの自然対数(eを底とする対数。ここで、eは自然対数の底の定数2.718281828…)。
Log2(x) 2を底とするxの対数。
Log10(x) 10を底とするxの対数。
【数11】
Sin(x) ラジアン単位の引数xに作用する三角法の正弦関数
Sqrt(x)=√x
Swap(x,y)=(y,x)
Tan(x) ラジアン単位の引数xに作用する三角法の正接関数。
【0270】
演算優先順
式における優先順が括弧を使用して明示的に示されない場合、次の規則が適用される:
-より高い優先順位の演算が、より低い優先順位の演算の前に評価される。
-同じ優先順位の演算は、左から右へ逐次的に評価される。
【0271】
下記の表14は、最高から最低までの演算の優先順位を指定する;表14中の、より高い位置は、より高い優先順位を示す。
Cプログラミング言語でも使用される演算子については、本明細書で使用される優先順は、Cプログラミング言語で使用されるものと同じである。
表14:最高(表のいちばん上)から最低(表のいちばん下)への演算優先順位
【表14】
【0272】
論理演算のテキスト記述
テキストでは、数学的に次の形:
if(条件0)
陳述0
else if(条件1)
陳述1
…
else /* 残りの条件に関する参考用のコメント */
陳述n
で記述される論理演算の陳述は、次のように記述されてもよい:
…次のとおりである/…下記が適用される:
-もし条件0であれば、陳述0
-そうでない場合、条件1であれば、陳述1
-…
-そうでない場合(残りの条件に関する参考用のコメント)陳述n。
【0273】
テキストにおける「もし…であれば…、そうでない場合、…であれば…、そうでない場合…」という各陳述は、「…次のとおりである」または「…下記が適用される」によって導入されてそのすぐ後に「もし…」が続く。「もし…であれば…、そうでない場合、…であれば…、そうでない場合…」の最後の条件は、常に「そうでない場合…」であってもよい。間にはさまれる「もし…であれば…、そうでない場合、…であれば…、そうでない場合…」という陳述は、「…次のとおりである」または「…下記が適用される」を最後の「そうでない場合…」と対応させることによって識別できる。
【0274】
テキストでは、数学的に次の形:
if(条件0a & 条件0b)
陳述0
else if(条件1a || 条件1b)
陳述1
…
else
陳述n
で記述される論理演算の陳述は、次のように記述されてもよい:
…次のとおりである/…下記が適用される:
-もし次の条件のすべてが真であれば、陳述0:
-条件0a
-条件0b
-そうでない場合、次の条件のうち一つまたは複数が真であれば、陳述1
-条件1a
-条件1b
-…
-そうでない場合、陳述n。
【0275】
テキストでは、数学的に次の形:
if(条件0)
陳述0
if(条件1)
陳述1
で記述される論理演算の陳述は、次のように記述されてもよい:
条件0の場合、陳述0
条件1の場合、陳述1。
【0276】
本開示の実施形態は、主にビデオコーディングに基づいて説明されてきたが、コーディングシステム10、エンコーダ20およびデコーダ30(および対応してシステム10)の実施形態、ならびに本明細書に記載される他の実施形態は、静止ピクチャーの処理またはコーディング、すなわち、ビデオコーディングにおけるような何らかの先行または連続するピクチャーから独立した個々のピクチャーの処理またはコーディングのために構成されてもよいことに注意しておくべきである。一般に、ピクチャー処理コーディングが単一のピクチャー17に限定される場合、インター予測ユニット244(エンコーダ)および344(デコーダ)だけは利用可能でないことがある。ビデオ・エンコーダ20およびビデオ・デコーダ30の他のすべての機能(ツールまたは技術とも称される)は、静止ピクチャー処理についても等しく使用されうる。他の機能とは、たとえば、残差計算204/304、変換206、量子化208、逆量子化210/310、(逆)変換212/312、分割262/362、イントラ予測254/354、および/またはループ・フィルタリング220、320、およびエントロピーコーディング270、およびエントロピー復号304である。
【0277】
たとえばエンコーダ20およびデコーダ30の実施形態、ならびに、たとえばエンコーダ20およびデコーダ30を参照して本明細書に記載される機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組み合わせで実装されうる。ソフトウェアで実装される場合、機能は、一つまたは複数の命令またはコードとして、コンピュータ読み取り可能媒体に記憶されるかまたは通信媒体を通じて伝送され、ハードウェア・ベースの処理ユニットによって実行されてもよい。コンピュータ読み取り可能媒体は、データ記憶媒体のような有形の媒体に対応するコンピュータ読み取り可能記憶媒体、または、たとえば通信プロトコルに従って、ある場所から他の場所へのコンピュータ・プログラムの転送を容易にする任意の媒体を含む通信媒体を含んでいてもよい。このようにして、コンピュータ読み取り可能媒体は、一般に、(1)非一時的である有形のコンピュータ読み取り可能記憶媒体、または(2)信号または搬送波のような通信媒体に対応しうる。データ記憶媒体は、本開示に記載される技術の実装のための命令、コードおよび/またはデータ構造を取り出すために、一つまたは複数のコンピュータまたは一つまたは複数のプロセッサによってアクセスできる任意の利用可能な媒体でありうる。コンピュータ・プログラム製品は、コンピュータ読み取り可能媒体を含みうる。
【0278】
例として、そして限定するものではないが、そのようなコンピュータ読み取り可能記憶媒体は、RAM、ROM、EEPROM、CD-ROMまたは他の光ディスク記憶、磁気ディスク記憶、または他の磁気記憶デバイス、フラッシュメモリ、または命令またはデータ構造の形で所望のプログラム・コードを記憶するために使用でき、コンピュータによってアクセスされることができる他の任意の媒体を含むことができる。また、任意の接続は、適切にコンピュータ読み取り可能媒体と称される。たとえば、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者線(DSL)、または赤外線、電波、およびマイクロ波のような無線技術を用いて、ウェブサイト、サーバー、または他のリモートソースから命令が送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、電波、およびマイクロ波のような無線技術は、媒体の定義に含まれる。しかしながら、コンピュータ読み取り可能記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的な媒体を含まず、代わりに非一時的で有形の記憶媒体に向けられることが理解されるべきである。本明細書で使用されるところのディスク(diskおよびdisc)は、コンパクトディスク(CD)、レーザーディスク、光ディスク、デジタル多用途ディスク(DVD)、フロッピーディスクおよびブルーレイディスクを含み、ディスク(disk)は通例、磁気的にデータを再生し、一方、ディスク(disc)はレーザーを用いて光学的にデータを再生する。上記の組み合わせも、コンピュータ読み取り可能媒体の範囲内に含まれるべきである。
【0279】
命令は、一つまたは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブル論理アレイ(FPGA)、または他の同等の集積されたもしくは離散的な論理回路などの一つまたは複数のプロセッサによって実行されうる。よって、本明細書で使用される「プロセッサ」という用語は、前述の構造、または本明細書に記載される技術の実装のために好適な任意の他の構造のいずれかを指しうる。さらに、いくつかの側面では、本明細書に記載される機能は、エンコードおよびデコードのために構成される専用ハードウェアおよび/またはソフトウェア・モジュール内で提供されてもよく、または組み合わされたコーデックに組み込まれてもよい。また、これらの技術は、一つまたは複数の回路または論理素子で完全に実装されることができる。
【0280】
本開示の技術は、ワイヤレスハンドセット、集積回路(IC)、または一組のIC(たとえば、チップセット)を含む、幅広い多様なデバイスまたは装置で実装されうる。本開示では、開示された技術を実行するように構成された装置の機能的側面を強調するために、さまざまなコンポーネント、モジュール、またはユニットが記載されるが、これらは必ずしも異なるハードウェア・ユニットによる実現を要求するものではない。むしろ、上述のように、さまざまなユニットは、コーデック・ハードウェア・ユニット内で組み合わされてもよく、または、上述のような一つまたは複数のプロセッサを好適なソフトウェアおよび/またはファームウェアとの関連で含む、相互運用されるハードウェア・ユニットの集まりによって提供されてもよい。