(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-10-07
(45)【発行日】2024-10-16
(54)【発明の名称】シグナリングスライスヘッダシンタックス要素を簡略化するためのエンコーダ、デコーダおよび対応する方法
(51)【国際特許分類】
H04N 19/70 20140101AFI20241008BHJP
H04N 19/119 20140101ALI20241008BHJP
H04N 19/136 20140101ALI20241008BHJP
H04N 19/174 20140101ALI20241008BHJP
【FI】
H04N19/70
H04N19/119
H04N19/136
H04N19/174
(21)【出願番号】P 2022551419
(86)(22)【出願日】2021-03-01
(86)【国際出願番号】 CN2021078382
(87)【国際公開番号】W WO2021170132
(87)【国際公開日】2021-09-02
【審査請求日】2022-10-07
(31)【優先権主張番号】PCT/EP2020/055341
(32)【優先日】2020-02-28
(33)【優先権主張国・地域又は機関】EP
【前置審査】
(73)【特許権者】
【識別番号】504161984
【氏名又は名称】ホアウェイ・テクノロジーズ・カンパニー・リミテッド
(74)【代理人】
【識別番号】110000877
【氏名又は名称】弁理士法人RYUKA国際特許事務所
(72)【発明者】
【氏名】エセンリク、セミ
(72)【発明者】
【氏名】ワン、ビャオ
(72)【発明者】
【氏名】コトラ、アナンド メハー
(72)【発明者】
【氏名】アルシナ、エレナ アレクサンドロヴナ
【審査官】田部井 和彦
(56)【参考文献】
【文献】特開2014-011726(JP,A)
【文献】国際公開第2014/087860(WO,A1)
【文献】国際公開第2021/040321(WO,A1)
【文献】特表2022-545713(JP,A)
【文献】Benjamin Bross et al.,Versatile Video Coding (Draft 8) [online],JVET-Q2001-v7(JVET-Q2001-v7.docx), [2023年11月16日検索],インターネット <URL: https://jvet-experts.org/doc_end_user/documents/17_Brussels/wg11/JVET-Q2001-v7.zip>,2020年01月20日,pp.21-23,28-32,56-58,61,106-109,135-142
【文献】Semih Esenlik et al.,Versatile Video Coding (Draft 8) [online],JVET-R0210_v2(JVET-R0210_v2.docx), [2023年11月17日検索],インターネット <URL: https://jvet-experts.org/doc_end_user/documents/18_Alpbach/wg11/JVET-R0210-v2.zip>,2020年04月13日
(58)【調査した分野】(Int.Cl.,DB名)
H04N 19/70
H04N 19/119
H04N 19/136
H04N 19/174
(57)【特許請求の範囲】
【請求項1】
デコーディングデバイスによって実装される、ビデオビットストリームから画像をデコードする方法であって、前記ビデオビットストリームは現在のスライスのスライスヘッダと前記現在のスライスを表すデータとを含み、前記方法は、
条件が満たされた場合に前記スライスヘッダから前記現在のスライス内のタイルの数を導出するのに使用されるパラメータを取得する段階であって、前記条件は、前記現在のスライスのスライスアドレスが、前記現在のスライスが位置付けられた前記画像内の最後のタイルのアドレスではないこと、である、段階と、
前記現在のスライス内の前記タイルの数と前記現在のスライスを表す前記データとを使用して前記現在のスライスを再構築する段階と
を備える、方法。
【請求項2】
前記現在のスライスの前記スライスアドレスが前記画像内の前記最後のタイルの前記アドレスであることは、前記画像内の前記タイルの数から前記現在のスライスの前記スライスアドレスを引いた値が1に等しいと決定することを含む、請求項1に記載の方法。
【請求項3】
前記現在のスライスの前記スライスアドレスが前記画像内の前記最後のタイルの前記アドレスでないことは、前記画像内の前記タイルの数から前記現在のスライスの前記スライスアドレスを引いた値が1より大きいと決定することを含む、請求項1に記載の方法。
【請求項4】
前記現在のスライスの前記パラメータの値は、前記条件が満たされていない場合、デフォルト値に等しいと推論される、請求項1から3のいずれか一項に記載の方法。
【請求項5】
前記デフォルト値は0に等しい、請求項4に記載の方法。
【請求項6】
前記スライスアドレスはタイル単位である、請求項1から5のいずれか一項に記載の方法。
【請求項7】
前記条件はさらに、前記現在のスライスはラスタースキャンモードにあると決定される段階を含む、請求項1から6のいずれか一項に記載の方法。
【請求項8】
前記現在のスライス内の前記タイルの数を使用して前記現在のスライスを再構築する段階は、前記現在のスライス内の前記タイルの数を使用して前記現在のスライス内のコーディングツリーユニットのスキャン順序を決定する段階と、前記スキャン順序を使用して前記現在のスライス内の前記コーディングツリーユニットを再構築する段階とを有する、請求項1から7のいずれか一項に記載の方法。
【請求項9】
エンコーディングデバイスによって実装される、ビデオビットストリームをエンコードする方法であって、前記ビデオビットストリームは現在のスライスのスライスヘッダと前記現在のスライスを表すデータとを含み、前記方法は、
条件が満たされた場合に前記スライスヘッダから前記現在のスライス内のタイルの数を導出するのに使用されるパラメータをエンコードする段階であって、前記条件は、前記現在のスライスのスライスアドレスが、前記現在のスライスが位置付けられた画像内の最後のタイルのアドレスではないこと、である、段階と、
前記現在のスライス内の前記タイルの数と前記現在のスライスを表す前記データとを使用して前記現在のスライスを再構築する段階と
を備える、方法。
【請求項10】
ビデオビットストリームから画像をデコードする装置であって、前記ビデオビットストリームは現在のスライスのスライスヘッダと前記現在のスライスを表すデータとを含み、前記装置は、
条件が満たされた場合に前記スライスヘッダから前記現在のスライス内のタイルの数を導出するのに使用されるパラメータを取得するように構成された取得ユニットであって、前記条件は、前記現在のスライスのスライスアドレスが、前記現在のスライスが位置付けられた前記画像内の最後のタイルのアドレスではないこと、である、取得ユニットと、
前記現在のスライス内の前記タイルの数と前記現在のスライスを表す前記データとを使用して前記現在のスライスを再構築するように構成された再構築ユニットと
を備える、装置。
【請求項11】
コーディング済みのビデオビットストリームをエンコードする装置であって、前記コーディング済みのビットストリームは現在のスライスのスライスヘッダと前記現在のスライスを表すデータとを含み、前記装置は、
条件が満たされた場合に前記スライスヘッダから前記現在のスライス内のタイルの数を導出するのに使用されるパラメータをエンコードするように構成されたエンコードユニットであって、前記条件は、前記現在のスライスのスライスアドレスが、前記現在のスライスが位置付けられた画像内の最後のタイルのアドレスではないこと、である、エンコードユニットと、
前記現在のスライス内の前記タイルの数と前記現在のスライスを表す前記データとを使用して前記現在のスライスを再構築するように構成された再構築ユニットと
を備える、装置。
【請求項12】
請求項9に記載の方法を実行するための処理回路を備える、エンコーダ。
【請求項13】
請求項1から8のいずれか一項に記載の方法を実行するための処理回路を備える、デコーダ。
【請求項14】
コンピュータに、請求項1から9のいずれか一項に記載の方法を実行させるためのコンピュータプログラム。
【請求項15】
デコーダであって、
1または複数のプロセッサと、
前記1または複数のプロセッサに結合され且つ前記1または複数のプロセッサによる実行のためのプログラミングを格納する非一時的コンピュータ可読記憶媒体であって、前記プログラミングは、前記1または複数のプロセッサによって実行される場合、前記デコーダを、請求項1から8のいずれか一項に記載の方法を実行するように構成する、非一時的コンピュータ可読記憶媒体と
を備える、デコーダ。
【請求項16】
エンコーダであって、
1または複数のプロセッサと、
前記1または複数のプロセッサに結合され且つ前記1または複数のプロセッサによる実行のためのプログラミングを格納する非一時的コンピュータ可読記憶媒体であって、前記プログラミングは、前記1または複数のプロセッサによって実行される場合、前記エンコーダを、請求項9に記載の方法を実行するように構成する、非一時的コンピュータ可読記憶媒体と
を備える、エンコーダ。
【請求項17】
コンピュータデバイスによって実行される場合、前記コンピュータデバイスに請求項1から9のいずれか一項に記載の方法を実行させるプログラムコードを保持する、非一時的コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本願(開示)の実施形態は、概して、画像処理分野、より具体的には、シグナリングスライスヘッダシンタックス要素を簡略化することに関する。
【背景技術】
【0002】
ビデオコーディング(ビデオエンコーディングおよびデコーディング)は、例えば、放送デジタルTV、インターネットおよびモバイルネットワークを介したビデオ送信、またはビデオチャット、ビデオ会議、DVDおよびブルーレイディスク、ビデオコンテンツの取得および編集システム、セキュリティアプリケーションのカムコーダー等のリアルタイムの会話型アプリケーションといった、広範なデジタルビデオアプリケーションで使用される。
【0003】
比較的短いビデオを示すのであっても、必要とされるビデオデータの量は、かなりのものであり得、その結果、限定的な帯域幅容量を有する通信ネットワークを介してデータがストリームされるかまたは別様に通信されることになる場合に困難が生じる場合がある。したがって、ビデオデータは一般に、現代の遠隔通信ネットワークを介して通信される前に圧縮される。ビデオのサイズは、メモリリソースが限定的である場合があるので、ビデオがストレージデバイス上に格納される場合にも問題となり得る。ビデオ圧縮デバイスは、しばしば、ソースにおけるソフトウェアおよび/またはハードウェアを使用して、送信または格納の前にビデオデータをコードし、それによりデジタルビデオイメージを表現するのに必要なデータの量を低減させる。その後、圧縮データは、デスティネーションにおいて、ビデオデータをデコードするビデオ圧縮解除デバイスによって受信される。ネットワークリソースが限られており、より高いビデオ品質への要求がますます高まっているため、画質をほとんどまたはまったく犠牲にすることなく圧縮率を改善する改善された圧縮および圧縮解除技術が望ましい。
【発明の概要】
【0004】
本開示の実施形態は、独立請求項に記載のエンコードおよびデコードのための装置および方法を提供する。
【0005】
本発明は、以下を提供する。
【0006】
デコーディングデバイスによって実装される、ビデオビットストリームから画像をデコードする方法であって、ビットストリームは現在のスライスのスライスヘッダと現在のスライスを表すデータとを含み、当該方法は、条件が満たされた場合にスライスヘッダから現在のスライス内のタイルの数を導出するのに使用されるパラメータ(例えば、um_tiles_in_slice_minus1)を取得する段階であって、条件は、現在のスライスのスライスアドレス(例えば、slice_address)が、現在のスライスが位置付けられた画像内の最後のタイルのアドレスではないことを含む、段階と、現在のスライス内のタイルの数と現在のスライスを表すデータとを使用して現在のスライスを再構築する段階とを含む。
【0007】
当該方法では、上述のように、現在のスライスのスライスアドレスが画像内の最後のタイルのアドレスであることは、画像内のタイルの数から現在のスライスのスライスアドレスを引いた値が1に等しいと決定することを含み得る。
【0008】
当該方法では、上述のように、現在のスライスのスライスアドレスが画像内の最後のタイルのアドレスでないことは、画像(例えば、NumTilesInPic)内のタイルの数から現在のスライスのスライスアドレスを引いた値が1より大きいと決定することを含み得る。
【0009】
したがって、本発明によると、スライスヘッダにおける画像ヘッダ構造の存在は、スライスアドレスとスライスインジケーション内のタイルの数との存在を制御するのに使用され得る。ある画像内に単一のスライスが存在する場合、スライスアドレスは、当該画像内の第1のタイルに等しくなければならず、スライス内のタイルの数は当該画像内のタイルの数に等しくなければならない。したがって、これは、圧縮効率を高め得る。
【0010】
上述のような方法では、現在のスライスのパラメータの値は、条件が満たされていない場合のデフォルト値に等しいと推論され得る。
【0011】
上述のような方法では、デフォルト値は0に等しくてよい。
【0012】
上述のような方法では、スライスアドレスはタイル単位であってよい。
【0013】
上述のような方法では、条件はさらに、現在のスライスがラスタースキャンモードにあると決定する段階を含み得る。
【0014】
上述のような方法では、現在のスライス内のタイルの数を使用して現在のスライスを再構築する段階は、現在のスライス内のタイルの数を使用して現在のスライス内のコーディングツリーユニットのスキャン順序を決定する段階と、スキャン順序を使用して現在のスライス内のコーディングツリーユニットを再構築する段階とを含み得る。
【0015】
本発明はさらに、エンコーディングデバイスによって実装される、ビデオビットストリームをエンコードする方法であって、ビットストリームは現在のスライスのスライスヘッダと現在のスライスを表すデータとを含む方法を提供しており、当該方法は、条件が満たされた場合にスライスヘッダから現在のスライス内のタイルの数を導出するのに使用されるパラメータをエンコードする段階であって、条件は、現在のスライスのスライスアドレスが、現在のスライスが位置付けられた画像内の最後のタイルのアドレスではないことを含む、段階と、現在のスライス内のタイルの数と現在のスライスを表すデータとを使用して現在のスライスを再構築する段階とを含む。
【0016】
本発明はさらに、ビデオビットストリームから画像をデコードする装置であって、ビットストリームは現在のスライスのスライスヘッダと現在のスライスを表すデータとを含む装置を提供しており、当該装置は、条件が満たされた場合にスライスヘッダから現在のスライス内のタイルの数を導出するのに使用されるパラメータを取得するように構成された取得ユニットであって、条件は、現在のスライスのスライスアドレスが、現在のスライスが位置付けられた画像内の最後のタイルのアドレスではないことを含む、取得ユニットと、現在のスライス内のタイルの数と現在のスライスを表すデータとを使用して現在のスライスを再構築するように構成された再構築ユニットとを含む。本発明はさらに、コーディング済みのビデオビットストリームから画像をエンコードする装置であって、ビットストリームは現在のスライスのスライスヘッダと現在のスライスを表すデータとを含む装置を提供しており、当該装置は、条件が満たされた場合にスライスヘッダから現在のスライス内のタイルの数を導出するのに使用されるパラメータをエンコードするように構成されたエンコードユニットであって、条件は、現在のスライスのスライスアドレスが、現在のスライスが位置付けられた画像内の最後のタイルのアドレスではないことを含む、エンコードユニットと、現在のスライス内のタイルの数と現在のスライスを表すデータとを使用して現在のスライスを再構築するように構成された再構築ユニットとを含む。
【0017】
本発明はさらに、上述のようなビデオビットストリームのエンコード方法を実行するための処理回路を含むエンコーダを提供する。
【0018】
本発明はさらに、上述のようなビデオビットストリームのデコード方法を実行するための処理回路を含むデコーダを提供する。
【0019】
本発明はさらに、コンピュータまたはプロセッサ上でそれぞれ実行された場合、上述のようなビデオビットストリームのエンコード方法または上述のようなビデオビットストリームのデコード方法を実行するためのプログラムコードを含むコンピュータプログラム製品を提供する。
【0020】
本発明はさらに、1または複数のプロセッサと、プロセッサに結合され且つプロセッサによる実行のためのプログラミングを格納した非一時的コンピュータ可読記憶媒体であって、プログラミングは、プロセッサによって実行された場合、上述のようにビデオビットストリームをデコードするための方法を実行するようにデコーダを構成する、非一時的コンピュータ可読記憶媒体とを含むデコーダを提供する。
【0021】
本発明はさらに、1または複数のプロセッサと、プロセッサに結合され且つプロセッサによる実行のためのプログラミングを格納した非一時的コンピュータ可読記憶媒体であって、プログラミングは、プロセッサによって実行された場合、上述のようにビデオビットストリームをエンコードするための方法を実行するようにエンコーダを構成する、非一時的コンピュータ可読記憶媒体とを含むエンコーダを提供する。
【0022】
本発明はさらに、コンピュータデバイスによって実行された場合、当該コンピュータデバイスに、上述のようなビデオビットストリームのエンコード方法または上述のようなビデオビットストリームのデコード方法を実行させるプログラムコードを保持した非一時的コンピュータ可読媒体を提供する。
【0023】
本発明はさらに、ビデオビットストリームを含む非一時的記憶媒体であって、ビットストリームは、現在のスライスのスライスヘッダと現在のスライスを表すデータとを含む、非一時的記憶媒体を提供しており、ここで、スライスヘッダは、現在のスライスのスライスアドレスを含み、ここで、条件が満たされた場合、スライスヘッダはさらに、スライスヘッダから現在のスライス内のタイルの数を導出するのに使用されるパラメータを含み、条件は、現在のスライスのスライスアドレスが、現在のスライスが位置付けられた画像内の最後のタイルのアドレスではないことを含む。
【0024】
1または複数の実施形態の詳細は、添付図面および以下の説明に記載されている。他の特徴、目的、および利点は、明細書、図面、および特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【0025】
以下において、本発明の実施形態は、添付の図および図面を参照してより詳細に説明される。
【
図1A】本発明の実施形態を実装するように構成されたビデオコーディングシステムの例を示すブロック図である。
【
図1B】本発明の実施形態を実装するように構成されたビデオコーディングシステムの別の例を示すブロック図である。
【
図2】本発明の実施形態を実装するように構成されたビデオエンコーダの例を示すブロック図である。
【
図3】本発明の実施形態を実装するように構成されたビデオデコーダの例示的な構造を示すブロック図である。
【
図4】エンコーディング装置またはデコーディング装置の例を示すブロック図である。
【
図5】エンコーディング装置またはデコーディング装置の別の例を示すブロック図である。
【
図6】CTUに分割された画像の例を示す図である。
【
図8】タイル、スライスおよびサブ画像の例を示す図である。
【
図9】例として、CTUの画像におけるラスタースキャン順序と、画像内の1つのスライスとを示す図である。
【
図10】12個のタイルと3個のスライスに区分化された画像を例示する図である。
【
図11】LMCSアーキテクチャの例を示すブロック図である。
【
図12】コンテンツ配信サービスを実現するコンテンツ供給システム3100の例示的な構造を示すブロック図である。
【
図13】端末デバイスの例の構造を示すブロック図である。
【
図14】本開示の実施形態に係るビデオビットストリームのデコード方法のフローチャートを示す図である。
【
図15】本開示の実施形態に係るビデオビットストリームのデコード方法のフローチャートを示す図である。
【
図16】本開示の実施形態に係るビデオビットストリームのデコードのためのデコーダを示す図である。
【
図17】本開示の実施形態に係るビデオビットストリームのエンコードのためのエンコーダを示す図である。 以下において、同一の参照符号は、別様に明記しない限り、同一のまたは少なくとも機能的に同等の特徴を指す。
【発明を実施するための形態】
【0026】
以下の説明では、本開示の一部を形成し、本発明の実施形態の特定の態様または本発明の実施形態を使用することができる特定の態様を例示として示す添付の図面を参照する。本発明の実施形態は他の態様で使用されてもよく、図に示されない構造的または論理的変更を含んでもよいことが理解される。したがって、以下の詳細な説明は、限定する意味で解釈されず、本発明の範囲は、添付の特許請求の範囲によって規定される。
【0027】
例えば、説明された方法に関連する開示は、方法を実行するように構成された対応するデバイスまたはシステムにも当てはまり得、逆もまた同様であることが理解される。例えば、特定の方法の段階のうちの1または複数が説明される場合、対応するデバイスは、説明された1または複数の方法の段階(例えば、上記1または複数の段階を実行する1つのユニット、または、それぞれ複数の段階のうちの1または複数を実行する複数のユニット)を実行するために、1または複数のユニットが明示的に説明もまたは図面に示しもされていない場合であっても、そのような1または複数のユニット、例えば、機能ユニットを含んでよい。その一方、例えば、特定の装置が1または複数のユニット、例えば機能ユニットに基づいて説明される場合、対応する方法は、上記1または複数のユニットの機能を実行するために、1または複数の段階が明示的に説明もまたは図面に示しもされていない場合であっても、そのような1つの段階(例えば、1または複数のユニットの機能を実行する1つの段階、またはそれぞれ複数のユニットのうちの1または複数の機能を実行する複数の段階)を含んでよい。さらに、別様に具体的に注記されない限り、本明細書で説明する様々な例示的な実施形態および/または態様の特徴が互いに組み合わされ得ることが理解される。
【0028】
ビデオコーディングは典型的には、ビデオまたはビデオシーケンスを形成する一連の画像の処理を指す。ビデオコーディングの分野では、「画像」という用語の代わりに、「フレーム」または「イメージ」という用語が同義語として使用されることがある。ビデオコーディング(または一般にコーディング)は、ビデオエンコーディングおよびビデオデコーディングの2つの部分を含む。ビデオエンコーディングは、ソース側で実行され、典型的には、(より効率的な格納および/または送信のために)ビデオ画像を表現するために要求されるデータ量を低減させるように、元のビデオ画像を処理(例えば、圧縮による)することを含む。ビデオデコーディングは、デスティネーション側で実行され、典型的には、ビデオ画像を再構築するように、エンコーダと比較して逆の処理を含む。ビデオ画像(または一般に画像)の「コーディング」に言及する実施形態は、ビデオ画像またはそれぞれのビデオシーケンスの「エンコーディング」または「デコーディング」に関すると理解されるものとする。エンコーディング部分とデコーディング部分との組み合わせは、コーデック(コーディングおよびデコーディング)とも称される。
【0029】
無損失ビデオコーディングの場合、元のビデオ画像を再構築でき、すなわち、再構築済みのビデオ画像は元のビデオ画像と同じ品質である(格納中または送信中に送信損失またはその他のデータ損失がないと仮定して)。不可逆ビデオコーディングの場合、ビデオ画像を表現するデータ量を低減するために、例えば量子化による更なる圧縮が実行されるが、これはデコーダにおいて完全には再構築できない、すなわち、再構築済みのビデオ画像の品質は、元のビデオ画像の品質に比較して低下または劣化する。
【0030】
いくつかのビデオコーディング規格は、「不可逆ハイブリッドビデオコーデック」のグループに属する(すなわち、サンプル領域における空間的および時間的予測と、変換領域における量子化を適用するための2D変換コーディングとを組み合わせる)。ビデオシーケンスの各画像は、典型的には、非重複ブロックのセットへと区分化され、コーディングは、典型的には、ブロックレベルで実行される。換言すれば、エンコーダにおいて、ビデオは、例えば、空間的(イントラ画像)予測および/または時間的(インター画像)予測を使用して予測ブロックを生成し、現在のブロック(現在処理されている/処理されることになるブロック)から予測ブロックを減算して残差ブロックを取得し、残差ブロックを変換するとともに変換領域における残差ブロックを量子化して、送信されることになるデータ量を低減(圧縮)することによって、典型的にはブロック(ビデオブロック)レベルで処理され、すなわちエンコードされ、一方で、デコーダにおいて、現在のブロックを表現のために再構築するために、エンコーダと比較して逆の処理がエンコードまたは圧縮されたブロックに適用される。さらに、エンコーダがデコーダ処理ループを繰り返し、その結果、後続のブロックの処理のために、すなわちコーディングのために、両方が同一の予測(例えば、イントラおよびインター予測)および/または再構築物を生成することになる。
【0031】
以下、ビデオコーディングシステム10、ビデオエンコーダ20、およびビデオデコーダ30の実施形態が、
図1A~
図3に基づいて説明される。
【0032】
図1Aは、例示的なコーディングシステム10、例えば、本開示の技術を使用し得るビデオコーディングシステム10(または略してコーディングシステム10)を示す概略ブロック図である。ビデオコーディングシステム10のビデオエンコーダ20(または略してエンコーダ20)およびビデオデコーダ30(または略してデコーダ30)は、本開示に説明された様々な例に従って技術を実行するように構成され得るデバイスの例を表す。
【0033】
図1Aに示すように、コーディングシステム10は、エンコード済みの画像データ21を、例えば、このエンコード済みの画像データ21をデコードするためにデスティネーションデバイス14に提供するように構成されているソースデバイス12を含む。
【0034】
ソースデバイス12は、エンコーダ20を含み、加えて、すなわち任意選択的に、画像ソース16と、プリプロセッサ(または前処理ユニット)18、例えば画像プリプロセッサ18と、通信インタフェースまたは通信ユニット22とを含んでよい。
【0035】
画像ソース16は、任意の種類の画像キャプチャデバイス、例えば、現実世界の画像をキャプチャするカメラ、および/または、任意の種類の画像生成デバイス、例えば、コンピュータアニメーション化画像を生成するコンピュータグラフィックプロセッサ、または、現実世界の画像、コンピュータ生成画像(例えば、スクリーンコンテンツ、仮想現実(VR)画像)、および/またはそれらの任意の組み合わせ(例えば、拡張現実(AR)画像)を取得および/または提供する任意の種類の他のデバイスを含むかまたはそれらのデバイスであってよい。画像ソースは、前述の画像の任意のものを格納する任意の種類のメモリまたはストレージであってよい。
【0036】
プリプロセッサ18および前処理ユニット18によって実行される処理と区別するように、画像または画像データ17は、生画像または生画像データ17とも称され得る。
【0037】
プリプロセッサ18は、(生)の画像データ17を受信するとともに、画像データ17に対して前処理を実行して、前処理済みの画像19または前処理済みの画像データ19を取得するように構成されている。プリプロセッサ18によって実行される前処理は、例えば、トリミング、カラーフォーマット変換(例えば、RGBからYCbCr)、色補正、またはノイズ除去を含んでよい。前処理ユニット18は任意選択的なコンポーネントであり得ると理解できる。
【0038】
ビデオエンコーダ20は、前処理済みの画像データ19を受信するとともに、エンコード済みの画像データ21を提供するように構成されている(更なる詳細は、例えば
図2に基づいて下記に説明される)。
【0039】
ソースデバイス12の通信インタフェース22は、通信チャネル13を介して、エンコード済みの画像データ21を受信するとともに、エンコード済みの画像データ21(またはその任意のさらなる処理バージョン)を、格納または直接の再構築のために、別のデバイス、例えばデスティネーションデバイス14または任意の他のデバイスに送信するように構成されてよい。
【0040】
デスティネーションデバイス14は、デコーダ30(例えばビデオデコーダ30)を含み、加えて、すなわち任意選択的に、通信インタフェースまたは通信ユニット28と、ポストプロセッサ32(または後処理ユニット32)と、ディスプレイデバイス34とを含んでよい。
【0041】
デスティネーションデバイス14の通信インタフェース28は、エンコード済みの画像データ21(またはその任意のさらなる処理バージョン)を、例えばソースデバイス12から直接または任意の他のソース、例えばストレージデバイス、例えばエンコード済みの画像データストレージデバイスから受信するとともに、エンコード済みの画像データ21をデコーダ30に提供するように構成されている。
【0042】
通信インタフェース22および通信インタフェース28は、ソースデバイス12とデスティネーションデバイス14との間で、直接通信リンク、例えば、直接的な有線もしくは無線接続を介して、または、任意の種類のネットワーク、例えば、有線もしくは無線ネットワークもしくはそれらの任意の組み合わせ、もしくは、任意の種類のプライベートおよびパブリックネットワークもしくはそれらの任意の種類の組み合わせを介して、エンコード済みの画像データ21またはエンコード済みのデータ13を送信または受信するように構成されてよい。
【0043】
通信インタフェース22は、例えば、エンコード済みの画像データ21を適切なフォーマットに、例えばパケットにパッケージ化する、および/または、通信リンクまたは通信ネットワークを介した送信のための任意の種類の送信エンコーディングまたは処理を使用して、エンコード済みの画像データを処理するように構成されてよい。
【0044】
通信インタフェース22のカウンターパートを形成する通信インタフェース28は、例えば、送信されたデータを受信するとともに、任意の種類の対応する送信デコーディングまたは処理および/またはデパッケージングを使用して送信データを処理して、エンコード済みの画像データ21を取得するように構成されてよい。
【0045】
通信インタフェース22および通信インタフェース28は両方とも、
図1Aにおいてソースデバイス12からデスティネーションデバイス14に向く通信チャネル13の矢印で示すように単方向通信インタフェースとして、または、双方向通信インタフェースとして構成されてよく、例えば、メッセージを送信および受信する、例えば、接続を設定し、通信リンクおよび/またはデータ送信、例えばエンコード済みの画像データ送信に関連する任意の他の情報を確認およびやりとりするように構成されてよい。
【0046】
デコーダ30は、エンコード済みの画像データ21を受信するとともに、デコード済みの画像データ31またはデコード済みの画像31を提供するように構成されている(更なる詳細は、例えば
図3または
図5に基づいて下記で説明される)。
【0047】
デスティネーションデバイス14のポストプロセッサ32は、デコード済みの画像データ31(再構築済みの画像データとも呼ばれる)、例えばデコード済みの画像31を後処理して、後処理済みの画像データ33、例えば後処理済みの画像33を取得するように構成されている。後処理ユニット32により行われる後処理は、例えば、デコード済みの画像データ31を、例えば、ディスプレイデバイス34による表示のために準備する目的で、例えば、カラーフォーマット変換(例えば、YCbCrからRGBへ)、色補正、トリミング、もしくは再サンプリング、または任意の他の処理を含んでよい。
【0048】
デスティネーションデバイス14のディスプレイデバイス34は、画像を例えばユーザまたは視聴者に表示するために、後処理済みの画像データ33を受信するように構成されている。ディスプレイデバイス34は、再構築済みの画像を表現するための任意の種類のディスプレイ、例えば、一体型または外付けのディスプレイまたはモニタであってもよく、または、これを含んでもよい。ディスプレイは、例えば、液晶ディスプレイ(LCD)、有機発光ダイオード(OLED)ディスプレイ、プラズマディスプレイ、プロジェクタ、マイクロLEDディスプレイ、液晶オンシリコン(LCoS)、デジタル光プロセッサ(DLP)、または任意の種類の他のディスプレイを含んでよい。
【0049】
図1Aはソースデバイス12とデスティネーションデバイス14とを別個のデバイスとして示しているが、デバイスの実施形態は、それらの両方または両方の機能、すなわち、ソースデバイス12または対応する機能と、デスティネーションデバイス14または対応する機能とを含んでもよい。そのような実施形態では、ソースデバイス12または対応する機能およびデスティネーションデバイス14または対応する機能は、同じハードウェアおよび/またはソフトウェアを使用して、または別個のハードウェアおよび/またはソフトウェアまたはそれらの任意の組み合わせによって実装され得る。
【0050】
本説明に基づいて当業者には明らかであるように、
図1Aに示すような、異なるユニットの機能またはソースデバイス12および/またはデスティネーションデバイス14内の機能の存在および(正確な)分割は、実際のデバイスおよびアプリケーションに応じて変わり得る。
【0051】
エンコーダ20(例えば、ビデオエンコーダ20)またはデコーダ30(例えば、ビデオデコーダ30)またはエンコーダ20およびデコーダ30の両方は、1または複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリートロジック、ハードウェア、ビデオコーディング専用またはそれらの任意の組み合わせ等の、
図1Bに示すような処理回路を介して実装されてよい。エンコーダ20は、
図2のエンコーダ20および/または本明細書に記載の任意の他のエンコーダシステムまたはサブシステムに関連して説明される様々なモジュールを具現するために処理回路46を介して実装されてよい。デコーダ30は、
図3のデコーダ30および/または本明細書に記載の任意の他のデコーダシステムまたはサブシステムに関連して説明される様々なモジュールを具現するために処理回路46を介して実装されてよい。処理回路は、後で説明されるように様々な操作を実行するように構成されてよい。
図5に示すように、本技術がソフトウェアにおいて部分的に実装される場合、デバイスは、好適な非一時的コンピュータ可読記憶媒体にソフトウェアのための命令を格納してよく、ハードウェア内で1または複数のプロセッサを使用して命令を実行して、本開示の技術を実行してよい。ビデオエンコーダ20およびビデオデコーダ30のいずれかは、
図1Bに示すように、例えば、単一のデバイス内の組み合わされたエンコーダ/デコーダ(コーデック)の一部として統合されてよい。
【0052】
ソースデバイス12およびデスティネーションデバイス14は、任意の種類のハンドヘルドまたはステーショナリデバイス、例えば、ノートブックまたはラップトップコンピュータ、携帯電話、スマートフォン、タブレットまたはタブレットコンピュータ、カメラ、デスクトップコンピュータ、セットトップボックス、テレビ、ディスプレイデバイス、デジタルメディアプレイヤ、ビデオゲーミングコンソール、ビデオストリーミングデバイス(コンテンツサービスサーバまたはコンテンツ配信サーバ等)、ブロードキャスト受信機デバイス、ブロードキャスト送信機デバイス等を含む、広範なデバイスのいずれかを含んでよく、オペレーティングシステムを使用しないまたは任意の種類のオペレーティングシステムを使用してよい。場合によっては、ソースデバイス12およびデスティネーションデバイス14は、無線通信に対応してよい。したがって、ソースデバイス12およびデスティネーションデバイス14は、無線通信デバイスとしてよい。
【0053】
場合によっては、
図1Aに示すビデオコーディングシステム10は単なる例であり、本開示の技術は、エンコーディングデバイスとデコーディングデバイスとの間のいずれかのデータ通信を必ずしも含まないビデオコーディング設定(例えば、ビデオエンコーディングまたはビデオデコーディング)に適用することができる。他の例において、データは、ローカルメモリから取得され、ネットワークを介してストリーム等される。ビデオエンコーディングデバイスは、データをメモリにエンコードして格納してよく、および/または、ビデオデコーディングデバイスは、データをメモリからデコードして取得してよい。いくつかの例において、エンコーディングおよびデコーディングは、互いに通信しないが単にデータをメモリにエンコードするおよび/またはデータをメモリから取得するとともにデコードするデバイスによって実行される。
【0054】
説明の便宜上、本発明の実施形態は、例えば、高効率ビデオコーディング(HEVC)または多用途ビデオコーディング(VVC)の参照ソフトウェア、ITU-Tビデオコーディング・エキスパート・グループ(VCEG)およびISO/IECモーション・ピクチャ・エキスパート・グループ(MPEG)のビデオコーディングに関するジョイント・コラボレーション・チーム(JCT-VC)によって開発された次世代ビデオコーディング規格を参照することによって、本明細書に記載される。当業者であれば、本発明の実施形態がHEVCまたはVVCに限定されないことを理解するであろう。
【0055】
[エンコーダおよびエンコーディング方法]
図2は、本開示の技術を実装するように構成された例示的なビデオエンコーダ20の概略ブロック図を示す。
図2の例において、ビデオエンコーダ20は、入力201(または入力インタフェース201)と、残差計算ユニット204と、変換処理ユニット206と、量子化ユニット208と、逆量子化ユニット210と、逆変換処理ユニット212と、再構築ユニット214と、ループフィルタユニット220と、デコード済みの画像バッファ(DPB)230と、モード選択ユニット260と、エントロピーエンコーディングユニット270と、出力272(または出力インタフェース272)とを含む。モード選択ユニット260は、インター予測ユニット244、イントラ予測ユニット254、および区分化ユニット262を含み得る。インター予測ユニット244は、動き推定ユニットおよび動き補償ユニットを含んでよい(図示せず)。
図2に示されたビデオエンコーダ20は、ハイブリッドビデオエンコーダ、またはハイブリッドビデオコーデックによるビデオエンコーダとも称され得る。
【0056】
残差計算ユニット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の「内蔵デコーダ」を形成していると言及される。
【0057】
[画像および画像区分化(画像およびブロック)]
エンコーダ20は、例えば、入力201を介して、画像17(または画像データ17)、例えば、ビデオまたはビデオシーケンスを形成する一連の画像のうちの画像を受信するように構成されてよい。受信された画像または画像データは、前処理済みの画像19(または前処理済みの画像データ19)であってもよい。簡潔さのために、以下の説明では画像17を参照する。画像17は、現在の画像またはコードされる画像とも称され得る(特に、ビデオコーディングにおいて、現在の画像を他の画像、例えば、同じビデオシーケンス、すなわち現在の画像も含むビデオシーケンスの、以前にエンコードされたおよび/またはデコードされた画像から区別するために)。
(デジタル)画像は、強度値を持つサンプルの2次元アレイまたはマトリックスであるか、または、それとみなされ得る。アレイ内のサンプルは、画素(画像要素の略称)またはペルとも称され得る。アレイまたは画像の水平および垂直方向(または軸)のサンプル数は、画像のサイズおよび/または解像度を定義する。色を表現するために、典型的には3つの色成分が利用され、すなわち、画像は、3つのサンプルアレイで表されてもまたはこれを含んでもよい。RGBフォーマットまたは色空間では、画像は対応する赤、緑、および青のサンプルアレイを含む。しかしながら、ビデオコーディングでは、各画素は、典型的には輝度およびクロミナンス形式または色空間、例えばYCbCrで表され、これには、Y(代わりにLが使用される場合もある)で示される輝度成分と、CbおよびCrで示される2つのクロミナンス成分とが含まれる。輝度(または略してルマ(luma))成分Yは、明るさまたは(例えば、グレースケール画像でのような)グレーレベルの強度を表し、2つのクロミナンス(または略してクロマ(chroma))成分であるCbおよびCrは、色度または色情報成分を表す。したがって、YCbCr形式の画像は、輝度サンプル値(Y)の輝度サンプルアレイと、クロミナンス値(CbおよびCr)の2つのクロミナンスサンプルアレイとを含む。RGB形式の画像は、YCbCr形式に転換または変換することができ、逆もまた同様であり、このプロセスは、色変換または転換とも知られている。画像がモノクロの場合、画像は輝度サンプルアレイのみを含んでよい。したがって、画像は、例えば、モノクロ形式におけるルマサンプルのアレイ、または、4:2:0、4:2:2、および4:4:4のカラー形式におけるルマサンプルのアレイおよびクロマサンプルの2つの対応するアレイであってよい。
【0058】
ビデオエンコーダ20の実施形態は、画像17を複数の(典型的には重複しない)画像ブロック203に区分化するように構成されている画像区分化ユニット(
図2には示されない)を含み得る。これらのブロックは、ルートブロック、マクロブロック(H.264/AVC)またはコーディングツリーブロック(CTB)またはコーディングツリーユニット(CTU)(H.265/HEVCおよびVVC)とも称され得る。画像区分化ユニットは、ビデオシーケンスの全ての画像およびブロックサイズを定義する対応するグリッドに同じブロックサイズを使用するか、または、画像または画像のサブセットもしくはグループ間でブロックサイズを変化させて、各画像を対応するブロックに区分化するように構成されてよい。
【0059】
更なる実施形態において、ビデオエンコーダは、画像17のブロック203、例えば、画像17を形成する1つ、いくつか、または全てのブロックを直接受信するように構成されてよい。画像ブロック203は、現在の画像ブロックまたはコードされる画像ブロックとも称され得る。
【0060】
画像17と同様にここでも、画像ブロック203は、画像17より寸法が小さいが、強度値(サンプル値)を持つサンプルの2次元アレイまたはマトリックスであるか、または、それとみなすことができる。換言すれば、ブロック203は、例えば、1つのサンプルアレイ(例えば、モノクロ画像17の場合はルマアレイ、または、カラー画像の場合はルマもしくはクロマアレイ)、または3つのサンプルアレイ(例えば、カラー画像17の場合はルマおよび2つのクロマアレイ)、または、適用されるカラーフォーマットに応じた任意の他の数および/または種類のアレイを含んでよい。ブロック203の水平および垂直方向(または軸)のサンプル数は、ブロック203のサイズを定義する。したがって、ブロックは、例えば、サンプルのM×N(M列×N行)アレイ、または変換係数のM×Nアレイであってよい。
【0061】
図2に示すようなビデオエンコーダ20の実施形態は、画像17をブロック毎にエンコードするように構成され得、例えば、エンコードおよび予測は、ブロック203毎に実行される。
【0062】
図2に示されたビデオエンコーダ20の実施形態は、スライス(ビデオスライスとも称される)を使用することによって画像を区分化および/またはエンコードするようにさらに構成され得、ここで画像は、1または複数のスライスを使用して区分化またはエンコードされ得(通常は重複しない)、各スライスは、1または複数のブロック(例えば、CTU)を含み得る。
【0063】
図2に示すようなビデオエンコーダ20の実施形態は、タイルグループ(ビデオタイルグループとも称される)および/またはタイル(ビデオタイルとも称される)を使用することによって画像を区分化および/またはエンコードするようにさらに構成され得、画像は、1または複数のタイルグループ(通常は重複しない)を使用して区分化またはエンコードされ得、各タイルグループは、例えば1または複数のブロック(例えばCTU)または1または複数のタイルを含み得、各タイルは、例えば長方形の形状であり得、1または複数のブロック(例えばCTU)、例えば完全なブロックまたは部分的なブロックを含み得る。
【0064】
[残差計算]
残差計算ユニット204は、例えば、サンプル毎(画素毎)に画像ブロック203のサンプル値から予測ブロック265のサンプル値を減算し、サンプル領域における残差ブロック205を取得することによって、画像ブロック203および予測ブロック265に基づいて(予測ブロック265に関する更なる詳細は後で提供される)、残差ブロック205(残差205とも称される)を計算するように構成されてよい。
【0065】
[変換]
変換処理ユニット206は、残差ブロック205のサンプル値に対して変換、例えば、離散コサイン変換(DCT)または離散サイン変換(DST)を適用し、変換領域における変換係数207を取得するように構成されてよい。変換係数207は、変換残差係数とも称されてよく、変換領域における残差ブロック205を表す。
【0066】
変換処理ユニット206は、H.265/HEVCに指定された変換等のDCT/DSTの整数近似を適用するように構成されてよい。直交DCT変換に比較して、そのような整数近似は、典型的には特定の係数によってスケーリングされる。順変換および逆変換によって処理される残差ブロックのノルムを保存するべく、変換プロセスの一部として追加のスケーリング係数が適用される。スケーリング係数は、典型的には、シフト演算に関して2のべき乗であるスケーリング係数、変換係数のビット深度、確度と実装コストとの間のトレードオフ等のような特定の制約に基づいて選択される。例えば、特定のスケーリング係数が、例えば、逆変換処理ユニット212による逆変換(および、例えばビデオデコーダ30における逆変換処理ユニット312による対応する逆変換)に指定され、例えば、エンコーダ20における変換処理ユニット206による順方向変換のための対応するスケーリング係数が、相応に指定されてよい。
【0067】
ビデオエンコーダ20の実施形態は(それぞれ変換処理ユニット206)は、変換パラメータ、例えば単数または複数の変換のタイプを、例えば、直接またはエントロピーエンコーディングユニット270を介してエンコードもしくは圧縮してから出力するように構成されてよく、それにより、例えば、ビデオデコーダ30は、デコーディングのための変換パラメータを受信して使用してよい。
【0068】
[量子化]
量子化ユニット208は、例えば、スカラ量子化またはベクトル量子化を適用することによって、変換係数207を量子化して、量子化係数209を取得するように構成されてよい。量子化係数209は、量子化変換係数209または量子化残差係数209とも称され得る。
【0069】
量子化プロセスは、変換係数207のいくつかまたは全てに関連付けられたビット深度を減少させ得る。例えば、nビット変換係数は、量子化中にmビット変換係数に丸められてよく、ここでnはmより大きい。量子化の程度は、量子化パラメータ(QP)を調整することによって変更されてよい。例えば、スカラ量子化の場合、より細かいまたはより粗い量子化を達成するために、異なるスケーリングが適用されてもよい。量子化ステップサイズが小さいほど細かい量子化に対応し、一方で、量子化ステップサイズが大きいほど粗い量子化に対応する。適用可能な量子化ステップサイズは、量子化パラメータ(QP)によって示され得る。量子化パラメータは、例えば、適用可能な量子化ステップサイズの予め定義されたセットへのインデックスであり得る。例えば、小さな量子化パラメータは細かい量子化(小さな量子化ステップサイズ)に対応し得、大きな量子化パラメータは粗い量子化(大きな量子化ステップサイズ)に対応し得るか、または逆もまた同様である。量子化は、量子化ステップサイズによる除算を含んでよく、例えば逆量子化ユニット210による対応する逆量子化および/または量子化解除は、量子化ステップサイズによる乗算を含んでよい。いくつかの規格、例えばHEVCに従った実施形態は、量子化ステップサイズを決定するのに量子化パラメータを使用するように構成されてよい。概して、量子化ステップサイズは、除算を含む方程式の固定小数点近似を使用する量子化パラメータに基づいて計算され得る。量子化ステップサイズおよび量子化パラメータの方程式の固定小数点近似で使用されるスケーリングに起因して変更される可能性がある残差ブロックのノルムを復元するために、量子化および量子化解除に追加のスケーリング係数を導入することができる。一例の実装では、逆変換および量子化解除のスケーリングは組み合わされ得る。代替的には、カスタマイズされた量子化テーブルが使用され、例えばビットストリームにおいてエンコーダからデコーダにシグナリングされてよい。量子化は不可逆演算であり、損失は量子化ステップサイズの増加に伴って増加する。
【0070】
ビデオエンコーダ20の実施形態(それぞれ量子化ユニット208)は、量子化パラメータ(QP)、例えば直接かまたはエントロピーエンコーディングユニット270を介してエンコードしてから出力するように構成されてよく、それにより、例えば、ビデオデコーダ30は、デコーディングのための量子化パラメータを受信して適用してよい。
【0071】
[逆量子化]
逆量子化ユニット210は、例えば、量子化ユニット208と同じ量子化ステップサイズに基づいてまたはそれを使用して量子化ユニット208によって適用された量子化スキームの逆を適用することによって、量子化係数に対して量子化ユニット208の逆量子化を適用し、量子化解除係数211を取得するように構成されている。量子化解除係数211は、量子化解除残差係数211とも称され得、典型的には量子化による損失に起因して変換係数とは同一でないが、変換係数207に対応する。
【0072】
[逆変換]
【0073】
逆変換処理ユニット212は、変換処理ユニット206によって適用された変換の逆変換、例えば、逆離散コサイン変換(DCT)または逆離散サイン変換(DST)または他の逆変換を適用し、サンプル領域における再構築済みの残差ブロック213(または対応する量子化解除係数213)を取得するように構成されている。再構築済みの残差ブロック213は、変換ブロック213とも称され得る。
【0074】
[再構築]
再構築ユニット214(例えば、加算器または合算器214)は、例えば、サンプル毎に、再構築済みの残差ブロック213のサンプル値と予測ブロック265のサンプル値とを加算することによって、変換ブロック213(すなわち、再構築済みの残差ブロック213)を予測ブロック265に加算し、サンプル領域における再構築済みのブロック215を取得するように構成されている。
【0075】
[フィルタリング]
ループフィルタユニット220(または、略して「ループフィルタ」220)は、再構築済みのブロック215をフィルタして、フィルタリング済みのブロック221を取得する、または、一般に、再構築済みのサンプルをフィルタして、フィルタリング済みのサンプルを取得するように構成されている。ループフィルタユニットは例えば、画素遷移を滑らかにするように、またはそうでなければ、ビデオ品質を改善するように構成される。ループフィルタユニット220は、デブロッキングフィルタ、サンプル適応型オフセット(SAO)フィルタ、または、1または複数の他のフィルタ、例えば、バイラテラルフィルタ、適応型ループフィルタ(ALF)、鮮明化、平滑化フィルタもしくは協調フィルタ、または、それらの任意の組み合わせなどの1または複数のループフィルタを含み得る。ループフィルタユニット220が、ループフィルタ内にあるものとして
図2に示されているが、他の構成では、ループフィルタユニット220はポストループフィルタとして実装されてもよい。フィルタリング済みのブロック221は、フィルタリング済みの再構築済みのブロック221とも称され得る。
【0076】
ビデオエンコーダ20の実施形態(それぞれループフィルタユニット220)は、ループフィルタパラメータを(サンプル適応オフセット情報等)、例えば、直接またはエントロピーエンコーディングユニット270を介してエンコードしてから出力するように構成されてよく、それにより、例えば、デコーダ30は、デコーディングのために同じループフィルタパラメータまたはそれぞれのループフィルタを受信して適用してよい。
【0077】
[デコード済みの画像バッファ]
デコード済みの画像バッファ(DPB)230は、ビデオエンコーダ20によってビデオデータをエンコードするための参照画像、または一般に参照画像データを格納するメモリであってよい。DPB230は、シンクロナスDRAM(SDRAM)、磁気抵抗RAM(MRAM)、抵抗RAM(RRAM(登録商標))、または他のタイプのメモリデバイスを含む、ダイナミックランダムアクセスメモリ(DRAM)等の様々なメモリデバイスのうちの任意のものによって形成されてよい。デコード済みの画像バッファ(DPB)230は、1または複数のフィルタリング済みのブロック221を格納するように構成されてよい。デコード済みの画像バッファ230は、同じ現在の画像または異なる画像の、例えば、以前に再構築された画像の、他の以前にフィルタリングされたブロック、例えば、以前に再構築およびフィルタリングされたブロック221を格納するようにさらに構成され得、例えば、インター予測のために、完全に以前に再構築された、すなわち、デコードされた、画像(および対応する参照ブロックおよびサンプル)および/または部分的に再構築された現在の画像(および対応する参照ブロックおよびサンプル)を提供し得る。デコード済みの画像バッファ(DPB)230は、例えば、再構築済みのブロック215がループフィルタユニット220によってフィルタリングされていない場合、1または複数のフィルタリングされていない再構築済みのブロック215、または一般に、フィルタリングされていない再構築サンプル、または、再構築済みのブロックもしくはサンプルの任意の他のさらに処理されたバージョンを格納するように構成されてもよい。
【0078】
[モード選択(区分化および予測)]
モード選択ユニット260は、区分化ユニット262と、インター予測ユニット244と、イントラ予測ユニット254とを含み、元の画像データ、例えば元のブロック203(現在の画像17の現在のブロック203)、および再構築済みの画像データ、例えば、同じ(現在の)画像のおよび/または1または複数の以前にデコードされた画像からの、例えばデコード済みの画像バッファ230もしくは他のバッファ(例えば、図示しないラインバッファ)からのフィルタリング済みおよび/またはフィルタリングされていない再構築サンプルもしくはブロックを受信または取得するように構成されている。再構築済みの画像データは、予測ブロック265または予測因子265を取得するために、予測、例えばインター予測またはイントラ予測のための参照画像データとして使用される。
【0079】
モード選択ユニット260は、現在のブロック予測モード(区分化を含まない)のための区分化および予測モード(例えば、イントラまたはインター予測モード)を決定または選択し、対応する予測ブロック265を生成するように構成されてよく、予測ブロック265は、残差ブロック205の計算のためおよび再構築済みのブロック215の再構築のために使用される。
【0080】
モード選択ユニット260の実施形態は、区分化および予測モード(例えば、モード選択ユニット260によってサポートされているものまたはモード選択ユニット260に利用可能なものから)選択するように構成されてよく、これにより、最良のマッチ、または換言すれば、最小残差(最小残差は、送信または格納のための圧縮率がより良好であることを意味する)、または、最小シグナリングオーバヘッド(最小シグナリングオーバヘッドは、送信または格納のための圧縮率がより良好であることを意味する)、またはこれらの両方を考慮したもしくはバランスを取ったものを提供する。モード選択ユニット260は、レート歪み最適化(RDO)に基づいて区分化および予測モードを決定する、すなわち、最小レート歪みを提供する予測モードを選択するように構成されてよい。この文脈において「最良」、「最小」、「最適」等のような用語は、全般的な「最良」、「最小」、「最適」等を必ずしも指さず、値が閾値または他の制約を超過または下回り、潜在的に「準最適選択」につながるが複雑性および処理時間を低減するような、終了または選択基準の達成を指してもよい。
【0081】
換言すれば、区分化ユニット262は、例えば、四分木区分化(QT)、二分木区分化(BT)、もしくは三分木区分化(TT)、またはそれらの任意の組み合わせを繰り返し使用して、ブロック203をより小さいブロック区分またはサブブロック(ここでもブロックを形成する)に区分化するように、また、例えば、ブロック区分またはサブブロック毎に予測を実行するように構成されてよく、モード選択は、区分化されたブロック203の木構造の選択を含み、予測モードは、ブロック区分またはサブブロックの各々に適用される。
【0082】
以下では、例示のビデオエンコーダ20によって実行される、区分化(例えば、区分化ユニット260による)および予測処理(インター予測ユニット244およびイントラ予測ユニット254による)をより詳細に説明する。
【0083】
[区分化]
区分化ユニット262は、現在のブロック203をより小さい区分、例えば、正方形または長方形サイズのより小さいブロックに区分化(または分割)してよい。これらのより小さいブロック(サブブロックとも称され得る)は、さらにより小さい区分にさらに区分化されてよい。これは、ツリー区分化もしくは階層的ツリー区分化とも称され、ここで、例えばルートツリーレベル0(階層レベル0、深度0)にあるルートブロックは、再帰的に区分化、例えば、次に低いツリーレベル、例えばツリーレベル1(階層レベル1、深度1)にあるノードの2または2より多いブロックに区分化されてよく、これらのブロックは、例えば終了基準が達成されたことで、例えば最大ツリー深度または最小ブロックサイズに達したことで、区分化が終了するまで、次に低いレベル、例えばツリーレベル2(階層レベル2、深度2)の2または2より多いブロックに再度区分化される等してよい。さらに区分化されないブロックは、ツリーのリーフブロックまたはリーフノードとも称される。2つの区分への区分化を使用するツリーは、二分木(BT)と称され、3つの区分への区分化を使用するツリーは、三分木(TT)と称され、4つの区分への区分化を使用するツリーは、四分木(QT)と称される。
【0084】
前で言及したように、本明細書で使用される「ブロック」という用語は、画像の部分、特に正方形または長方形部分であってよい。例えば、HEVCおよびVVCを参照すると、ブロックは、コーディングツリーユニット(CTU)、コーディングユニット(CU)、予測ユニット(PU)、および変換ユニット(TU)であり得る、または、それに対応し得る、および/または、対応するブロック、例えば、コーディングツリーブロック(CTB)、コーディングブロック(CB)、変換ブロック(TB)、または、予測ブロック(PB)に対応し得る。
【0085】
例えば、コーディングツリーユニット(CTU)は、3つのサンプルアレイを有する画像のルマサンプルのCTB、クロマサンプルの2つの対応するCTB、または、モノクロ画像のもしくはサンプルをコードするために使用された3つの別個の色平面およびシンタックス構造を使用してコードされた画像のサンプルのCTBであるか、またはそれらを含んでよい。それに対応して、コーディングツリーブロック(CTB)は、コンポーネントのCTBへの分割が区分化であるように、何らかの値NについてのN×Nブロックのサンプルであり得る。コーディングユニット(CU)は、ルマサンプルのコーディングブロック、3つのサンプルアレイを有する画像のクロマサンプルの2つの対応するコーディングブロック、または、モノクロ画像のもしくはサンプルをコードするために使用された3つの別個の色平面およびシンタックス構造を使用してコードされた画像のサンプルのコーディングブロックであるか、またはそれらを含んでよい。これに対応して、コーディングブロック(CB)は、CTBのコーディングブロックへの分割が区分化であるように、MおよびNの何らかの値に対するサンプルのM×Nブロックであり得る。
【0086】
例えばHEVCに従う実施形態において、コーディングツリーユニット(CTU)は、コーディングツリーとして示される四分木構造を使用することによってCUに分割されてよい。インター画像(時間的)予測またはイントラ画像(空間的)予測のどちらを使用して画像エリアをコードするかの決定は、CUレベルで行われる。各CUは、PU分割タイプに従って、1つ、2つまたは4つのPUへさらに分割され得る。1つのPUの内部では、同じ予測処理が適用され、関連情報はPUベースでデコーダに送信される。PU分割タイプに基づいて予測処理を適用することによって残差ブロックを取得した後に、CUは、CUについてのコーディングツリーと同様の別の四分木構造に従って、変換ユニット(TU)に区分化できる。
【0087】
例えば、多用途ビデオコーディング(VVC)と称される、現在開発中の最新のビデオコーディング規格に従う実施形態において、組み合された四分木および二分木(QTBT)区分化は、例えば、コーディングブロックを区分化するのに使用される。QTBTブロック構造では、CUは、正方形または長方形のいずれかの形状とすることができる。例えば、コーディングツリーユニット(CTU)はまず、四分木構造によって区分化される。四分木リーフノードはさらに、二分木または三分(ternary(or triple)木構造によって区分化される。区分化ツリーのリーフノードは、コーディングユニット(CU)と称され、そのセグメンテーションは、任意のさらなる区分化を伴うことなく、予測および変換処理に使用される。これは、CU、PUおよびTUがQTBTコーディングブロック構造内で同じブロックサイズを有することを意味する。並行して、複数の区分化、例えば、三分木区分化が、QTBTブロック構造と一緒に使用され得る。
【0088】
一例において、ビデオエンコーダ20のモード選択ユニット260は、本明細書に記載の区分化技術の任意の組み合わせを実行するように構成されてよい。
【0089】
上述のように、ビデオエンコーダ20は、(例えば予め決定された)予測モードのセットから、最良または最適な予測モードを決定または選択するように構成されている。予測モードのセットは、例えば、イントラ予測モードおよび/またはインター予測モードを含んでよい。
【0090】
[イントラ予測]
イントラ予測モードのセットは、35の異なるイントラ予測モード、例えば、DC(またはミーン)モードおよび平面モードのような無方向性モード、もしくは、例えばHEVCにおいて定義されているような、方向性モードを含んでよく、または、67の異なるイントラ予測モード、例えば、DC(またはミーン)モードおよび平面モードのような無方向性モード、もしくは、例えばVVCに定義されている、方向性モードを含んでよい。
【0091】
イントラ予測ユニット254は、同じ現在の画像の隣接ブロックの再構築済みのサンプルを使用して、イントラ予測モードのセットのうちのイントラ予測モードに従って、イントラ予測ブロック265を生成するように構成されている。
【0092】
イントラ予測ユニット254(または一般にモード選択ユニット260)は、イントラ予測パラメータ(または一般に、ブロックのために選択されたイントラ予測モードを示す情報)を、エンコード済みの画像データ21に含まれるようにシンタックス要素266の形態でエントロピーエンコーディングユニット270に出力するようにさらに構成され、それにより、例えば、ビデオデコーダ30は、デコーディングのための予測パラメータを受信して使用してよい。
【0093】
[インター予測]
インター予測モードのセット(または可能なインター予測モード)は、利用可能な参照画像(すなわち、例えばDPB230に格納された、以前の少なくとも部分的にデコード済みの画像)および他のインター予測パラメータ、例えば、最良にマッチする参照ブロックの検索に使用されたのは、参照画像の全体なのかもしくは参照画像の一部のみ、例えば、現在のブロックのエリアの周りの検索窓エリアなのか、および/または、例えば、画素補間、例えばハーフ/セミペルおよび/またはクオータペル補間が適用されたか否かに依拠する。
【0094】
上記の予測モードに加えて、スキップモードおよび/または直接モードが適用されてもよい。
【0095】
インター予測ユニット244は、動き推定(ME)ユニットおよび動き補償(MC)ユニット(両方とも
図2には図示せず)を含んでよい。動き推定ユニットは、動きの推定のために、画像ブロック203(現在の画像17の現在の画像ブロック203)およびデコード済みの画像231、または少なくとも1または複数の以前に再構築されたブロック、例えば、1または複数の他の/異なる以前にデコードされた画像231の再構築済みのブロックを受信または取得するように構成され得る。例えば、ビデオシーケンスは、現在の画像および以前にデコードされた画像231を含むことができ、または言い換えれば、現在の画像および以前にデコードされた画像231は、ビデオシーケンスを形成する一連の画像の一部であるか、またはそのシーケンスを形成することができる。
【0096】
エンコーダ20は、例えば、複数の他の画像のうちの同じまたは異なる画像の複数の参照ブロックから参照ブロックを選択し、インター予測パラメータとして参照画像(または参照画像インデックス)および/または参照ブロックの位置(x、y座標)と現在のブロックの位置との間のオフセット(空間的オフセット)を動き推定ユニットに提供するように構成してよい。このオフセットは、動きベクトル(MV)とも呼ばれる。
【0097】
動き補償ユニットは、インター予測パラメータを取得、例えば受信するとともに、そのインター予測パラメータに基づいてまたはそれを使用してインター予測を実行して、インター予測ブロック265を取得するように構成されている。動き補償ユニットによって実行される動き補償は、動き推定によって決定された動き/ブロックベクトルに基づいて予測ブロックをフェッチまたは生成し、場合によってサブ画素精度までの補間を実行することを伴ってよい。補間フィルタリングは、既知の画素サンプルから追加の画素サンプルを生成してよく、したがって、画像ブロックをコードするのに使用され得る候補予測ブロックの数を潜在的に増加させる。現在の画像ブロックのPUのための動きベクトルを受信すると、動き補償ユニットは、参照画像リストのうちの1つにおいて動きベクトルが指し示す予測ブロックを位置特定してよい。
【0098】
動き補償ユニットはまた、ビデオスライスの画像ブロックをデコードする際にビデオデコーダ30によって使用されるブロックおよびビデオスライスに関連付けられたシンタックス要素を生成することができる。スライスおよびそれぞれのシンタックス要素に追加的に、または代替的に、タイルグループおよび/またはタイル、ならびに、それぞれのシンタックス要素が生成または使用され得る。
【0099】
[エントロピーコーディング]
エントロピーエンコーディングユニット270は、例えば、エントロピーエンコーディングアルゴリズムまたはスキーム(例えば、可変長コーディング(VLC)スキーム、コンテキスト適応型VLCスキーム(CAVLC)、算術コーディングスキーム、バイナリゼーション、コンテキスト適応型バイナリ算術コーディング(CABAC)、シンタックスベースのコンテキスト適応型バイナリ算術コーディング(SBAC)、確率インターバル区分化エントロピー(PIPE)コーディング、または、別のエントロピーエンコーディング方法もしくは技術)、またはバイパス(無圧縮)を、量子化係数209、インター予測パラメータ、イントラ予測パラメータ、ループフィルタパラメータ、および/または他のシンタックス要素に適用し、例えばエンコード済みのビットストリーム21の形態で出力272を介して出力できるエンコード済みの画像データ21を取得するように構成され、それにより、例えば、ビデオデコーダ30は、デコーディングのためのパラメータを受信して使用してよい。エンコード済みのビットストリーム21は、ビデオデコーダ30に送信、または、後でビデオデコーダ30によって送信または取得するためにメモリに格納されてよい。
【0100】
ビデオエンコーダ20の他の構造上の変形を、ビデオストリームをエンコードするのに使用することができる。例えば、非変換ベースのエンコーダ20は、特定のブロックまたはフレームのための変換処理ユニット206なしで直接的に残差信号を量子化できる。別の実装において、エンコーダ20は、単一のユニットに組み合わされた量子化ユニット208および逆量子化ユニット210を有することができる。
【0101】
[デコーダおよびデコーディング方法]
図3は、本開示の技術を実装するように構成されたビデオデコーダ30の例を示す。ビデオデコーダ30は、例えばエンコーダ20によってエンコードされた、エンコード済みの画像データ21(例えば、エンコード済みのビットストリーム21)を受信して、デコード済みの画像331を取得するように構成されている。エンコード済みの画像データまたはビットストリームは、エンコード済みの画像データをデコードするための情報、例えば、エンコード済みのビデオスライス(および/またはタイルグループまたはタイル)の画像ブロックおよび関連付けられたシンタックス要素を表すデータを含む。
【0102】
図3の例では、デコーダ30は、エントロピーデコーディングユニット304、逆量子化ユニット310、逆変換処理ユニット312、再構築ユニット314(例えば、合算器314)、ループフィルタ320、デコード済みの画像バッファ(DPB)330、モード適用ユニット360、インター予測ユニット344、およびイントラ予測ユニット354を含む。インター予測ユニット344は、動き補償ユニットであるかまたはこれを含んでよい。ビデオデコーダ30は、いくつかの例では、
図2からのビデオエンコーダ100に関連して説明されたエンコーディングパスに対して一般に逆のデコーディングコーディングパスを実行してよい。
【0103】
エンコーダ20に関して説明したように、逆量子化ユニット210、逆変換処理ユニット212、再構築ユニット214、ループフィルタ220、デコード済みの画像バッファ(DPB)230、インター予測ユニット344、およびイントラ予測ユニット354も、ビデオエンコーダ20の「内蔵デコーダ」を形成するものとして言及される。したがって、逆量子化ユニット310は、逆量子化ユニット110と機能が同一であり得、逆変換処理ユニット312は、逆変換処理ユニット212と機能が同一であり得、再構築ユニット314は、再構築ユニット214と機能が同一であり得、ループフィルタ320は、ループフィルタ220と機能が同一であり得、デコード済みの画像バッファ330は、デコード済みの画像バッファ230と機能が同一であり得る。したがって、ビデオ20エンコーダのそれぞれのユニットおよび機能について提供される説明は、ビデオデコーダ30のそれぞれのユニットおよび機能に対応して適用される。
【0104】
[エントロピーデコーディング]
エントロピーデコーディングユニット304は、ビットストリーム21(または一般にエンコード済みの画像データ21)をパースし、例えば、エンコード済みの画像データ21にエントロピーデコーディングを実行して、例えば量子化係数309および/またはデコードされたコーディングパラメータ(
図3には図示せず)、例えば、インター予測パラメータ(例えば、参照画像インデックスおよび動きベクトル)、イントラ予測パラメータ(例えば、イントラ予測モードまたはインデックス)、変換パラメータ、量子化パラメータ、ループフィルタパラメータ、および/または他のシンタックス要素のいずれかまたは全てを取得するように構成されている。エントロピーデコーディングユニット304は、エンコーダ20のエントロピーエンコーディングユニット270に関して記載されたエンコーディングスキームに対応するデコーディングアルゴリズムまたはスキームを適用するように構成されてよい。エントロピーデコーディングユニット304は、インター予測パラメータ、イントラ予測パラメータ、および/または他のシンタックス要素をモード適用ユニット360に、また他のパラメータをデコーダ30の他のユニットに提供するようにさらに構成されてよい。ビデオデコーダ30は、ビデオスライスレベルでおよび/またはビデオブロックレベルで、シンタックス要素を受信してよい。スライスおよびそれぞれのシンタックス要素に追加的に、または代替的に、タイルグループおよび/またはタイル、ならびに、それぞれのシンタックス要素が受信および/または使用され得る。
【0105】
[逆量子化]
逆量子化ユニット310は、エンコード済みの画像データ21から量子化パラメータ(QP)(または一般に逆量子化に関連する情報)および量子化係数を受信する(例えばエントロピーデコーディングユニット304によって、例えばパースおよび/またはデコードすることによって)とともに、量子化パラメータに基づいて、デコード済みの量子化係数309に逆量子化を適用し、変換係数311とも称され得る量子化解除係数311を取得するように構成されてよい。逆量子化プロセスは、量子化の程度、また同様に適用されるべき逆量子化の程度を決定するために、ビデオスライス(またはタイルもしくはタイルグループ)内のビデオブロック毎にビデオエンコーダ20によって決定される量子化パラメータの使用を含んでよい。
【0106】
[逆変換]
逆変換処理ユニット312は、変換係数311とも称される量子化解除係数311を受信するとともに、サンプル領域における再構築済みの残差ブロック213を取得するべく、量子化解除係数311に変換を適用するように構成されてよい。再構築済みの残差ブロック213は、変換ブロック313とも称され得る。変換は、逆変換、例えば、逆DCT、逆DST、逆整数変換、または概念的に同様の逆変換プロセスであってよい。逆変換処理ユニット312は、エンコード済みの画像データ21から変換パラメータまたは対応する情報を受信し(例えばエントロピーデコーディングユニット304によって、例えばパースおよび/またはデコードすることによって)、量子化解除係数311に適用されるべき変換を決定するようにさらに構成されてよい。
【0107】
[再構築]
再構築ユニット314(例えば、加算器または合算器314)は、再構築済みの残差ブロック313を予測ブロック365に加算し、例えば、再構築済みの残差ブロック313のサンプル値と予測ブロック365のサンプル値とを加算することによって、サンプル領域における再構築済みのブロック315を取得するように構成されてよい。
【0108】
[フィルタリング]
ループフィルタユニット320(コーディングループ内またはコーディングループの後のいずれかにある)は、例えば、画素遷移を滑らかにするようにまたはビデオ品質を別様に改善するように、再構築済みのブロック315をフィルタして、フィルタリング済みのブロック321を取得するように構成されている。ループフィルタユニット320は、デブロッキングフィルタ、サンプル適応型オフセット(SAO)フィルタ、または、1または複数の他のフィルタ、例えば、バイラテラルフィルタ、適応型ループフィルタ(ALF)、鮮明化、平滑化フィルタ、または協調フィルタ、またはそれらの任意の組み合わせなど、1または複数のループフィルタを含み得る。ループフィルタユニット320が、ループフィルタ内にあるものとして
図3に示されているが、他の構成では、ループフィルタユニット320はポストループフィルタとして実装されてもよい。
【0109】
[デコード済みの画像バッファ]
画像のデコード済みのビデオブロック321は、その後、デコード済みの画像バッファ330に格納され、デコード済みの画像バッファ330は、デコード済みの画像331を他の画像の後続の動き補償のためのおよび/またはそれぞれ表示を出力するための参照画像として格納する。
【0110】
デコーダ30は、例えば出力332を介して、ユーザに提示または閲覧させるために、デコード済みの画像331を出力するように構成されている。
【0111】
[予測]
インター予測ユニット344は、インター予測ユニット244(特に、動き補償ユニット)と同一であってよく、イントラ予測ユニット354は、イントラ予測ユニット254と機能的に同一であってよく、エンコード済みの画像データ21から受信(例えば、エントロピーデコーディングユニット304によって、例えば、パースおよび/またはデコードすることによって)された区分化および/または予測パラメータまたはそれぞれの情報に基づいて分割または区分化の決定および予測を実行する。モード適用ユニット360は、再構築済みの画像、ブロック、またはそれぞれのサンプル(フィルタリング済みまたはフィルタリングされていない)に基づいてブロック毎に予測(イントラまたはインター予測)を実行し、予測ブロック365を取得するように構成されてよい。
【0112】
ビデオスライスがイントラコーディング(I)スライスとしてコードされる場合、モード適用ユニット360のイントラ予測ユニット354は、シグナリングされたイントラ予測モードおよび現在の画像の以前にデコードされたブロックからのデータに基づいて、現在のビデオスライスの画像ブロックに対する予測ブロック365を生成するように構成される。ビデオ画像がインターコード済みの(すなわち、BまたはP)スライスとしてコードされている場合、モード適用ユニット360のインター予測ユニット344(例えば、動き補償ユニット)は、動きベクトルおよびエントロピーデコーディングユニット304から受信された他のシンタックス要素に基づいて、現在のビデオスライスのビデオブロックのための予測ブロック365を生成するように構成されている。インター予測では、予測ブロックは、複数の参照画像リストのうちの1つの内部に含まれる複数の参照画像のうちの1つから生成されてよい。ビデオデコーダ30は、リスト0およびリスト1という参照フレームリストを、デフォルトの構築技術を使用して、DPB330に格納された参照画像に基づいて構築してよい。同じまたは同様のことが、スライス(例えばビデオスライス)に追加的または代替的にタイルグループ(例えばビデオタイルグループ)および/またはタイル(例えばビデオタイル)を使用する実施形態について、または、それによって適用され得る。例えば、ビデオは、I、P、またはBタイルグループおよび/またはタイルを使用してコードされ得る。
【0113】
モード適用ユニット360は、動きベクトルまたは関連情報および他のシンタックス要素をパースすることによって、現在のビデオスライスのビデオブロックのための予測情報を決定するように構成され、デコードされている現在のビデオブロックのための予測ブロックを生成するために上記予測情報を使用する。例えば、モード適用ユニット360は、受信されたシンタックス要素のいくつかを使用して、ビデオスライスのビデオブロックをコードするのに使用された予測モード(例えば、イントラまたはインター予測)、インター予測スライスタイプ(例えば、Bスライス、Pスライス、またはGPBスライス)、スライスのための参照画像リストのうちの1または複数に関する構築情報、スライスのインターエンコード済みのビデオブロック毎の動きベクトル、スライスのインターコード済みのビデオブロック毎のインター予測ステータス、および現在のビデオスライス内のビデオブロックをデコードするための他の情報を決定する。同じまたは同様のことが、スライス(例えばビデオスライス)に追加的または代替的にタイルグループ(例えばビデオタイルグループ)および/またはタイル(例えばビデオタイル)を使用する実施形態について、または、それによって適用され得る。例えば、ビデオは、I、P、またはBタイルグループおよび/またはタイルを使用してコードされ得る。
【0114】
図3に示されたビデオデコーダ30の実施形態は、スライス(ビデオスライスとも称される)を使用することによって画像を区分化および/またはデコードするように構成され得、ここで画像は、1または複数のスライスを使用して区分化またはデコードされ得(通常は重複しない)、各スライスは、1または複数のブロック(例えば、CTU)を含み得る。
【0115】
図3に示されたビデオデコーダ30の実施形態は、タイルグループ(ビデオタイルグループとも称される)および/またはタイル(ビデオタイルとも称される)を使用することによって画像を区分化および/またはデコードするように構成され得、画像は、1または複数のタイルグループ(通常は重複しない)を使用して区分化またはデコードされ得、各タイルグループは、例えば1または複数のブロック(例えばCTU)または1または複数のタイルを含み得、各タイルは、例えば長方形の形状であり得、1または複数のブロック(例えばCTU)、例えば完全なブロックまたは部分的なブロックを含み得る。
【0116】
ビデオデコーダ30の他の変形を、エンコード済みの画像データ21をデコードするのに使用することができる。例えば、デコーダ30は、ループフィルタリングユニット320なしに、出力ビデオストリームを生成することができる。例えば、非変換ベースのデコーダ30は、特定のブロックまたはフレームのための逆変換処理ユニット312なしに、残差信号を直接的に逆量子化することができる。別の実装において、ビデオデコーダ30は、単一のユニットに組み合わされた逆量子化ユニット310および逆変換処理ユニット312を有することができる。
【0117】
エンコーダ20およびデコーダ30において、現在の段階の処理結果は、さらに処理されて、その後、次の段階に出力されてよいことが理解されるべきである。例えば、補間フィルタリング、動きベクトル導出またはループフィルタリングの後に、クリップまたはシフト等の更なる操作を、補間フィルタリング、動きベクトル導出またはループフィルタリングの処理結果に対して実行してよい。
【0118】
更なる操作を、現在のブロックの導出された動きベクトル(限定しないが、アフィンモードの制御点動きベクトル、アフィン、平面、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の整数部分の間の最大差が、1画素以下など、N画素以下であるように制限される。以下、bitDepthに従って動きベクトルを制限する2つの方法を提供する。
【0119】
方法1:以下の操作により、オーバフローMSB(最上位ビット)を除去する。
【数1】
ここで、mvxは、イメージブロックまたはサブブロックの動きベクトルの水平成分であり、mvyはイメージブロックまたはサブブロックの動きベクトルの垂直成分であり、uxおよびuyは中間値を示している。
【0120】
例えば、式(1)および(2)の適用後、mvxの値が-32769である場合、結果として得られる値は32767である。コンピュータシステムにおいて、十進数は、2の補数として格納される。
【0121】
-32769の2の補数は、1,0111,1111,1111,1111(17ビット)であり、その後、MSBは破棄されるので、結果として得られる2の補数は、0111,1111,1111,1111(十進数は32767)である。これは、式(1)および(2)を適用することによる出力と同じである。
【0122】
【数2】
操作は、式(5)~(8)に示すように、mvpおよびmvdの合計中に適用されてよい。
【0123】
方法2:値をクリッピングすることによって、オーバフローMSBを除去する。
【数3】
ここで、vxはイメージブロックまたはサブブロックの動きベクトルの水平成分であり、vyはイメージブロックまたはサブブロックの動きベクトルの垂直成分であり、x、yおよびzはそれぞれ、MVクリッピングプロセスの3つの入力値に対応しており、関数Clip3の定義は、以下の通りである。
【数4】
【0124】
図4は、本開示の実施形態に係るビデオコーディングデバイス400の概略図である。ビデオコーディングデバイス400は、本明細書に記載の開示される実施形態を実装するのに好適なものである。実施形態において、ビデオコーディングデバイス400は、
図1Aのビデオデコーダ30などのデコーダ、または、
図1Aのビデオエンコーダ20などのエンコーダであり得る。
【0125】
ビデオコーディングデバイス400は、データを受信するための入口ポート410(または、入力ポート410)および受信機ユニット(Rx)420と、データを処理するためのプロセッサ、論理ユニット、または中央演算処理装置(CPU)430と、データを送信するための送信機ユニット(Tx)440および出口ポート450(または出力ポート450)と、データを格納するためのメモリ460とを含む。ビデオコーディングデバイス400は、光信号または電気信号の出口または入口のために、入口ポート410、受信機ユニット420、送信機ユニット440および出口ポート450に連結された光/電気(OE)コンポーネントおよび電気/光(EO)コンポーネントも含み得る。
【0126】
プロセッサ430は、ハードウェアおよびソフトウェアによって実装される。プロセッサ430は、1または複数のCPUチップ、コア(例えば、マルチコアプロセッサ)、FPGA、ASIC、およびDSPとして実装され得る。プロセッサ430は、入口ポート410、受信機ユニット420、送信機ユニット440、出口ポート450、およびメモリ460と通信する。プロセッサ430は、コーディングモジュール470を含む。コーディングモジュール470は、上述の開示される実施形態を実装する。例えば、コーディングモジュール470は、様々なコーディング操作を実装、処理、準備または提供する。したがって、コーディングモジュール470を含むことで、ビデオコーディングデバイス400の機能に対する実質的な改善が提供され、ビデオコーディングデバイス400の異なる状態への変換をもたらす。代替的に、コーディングモジュール470は、メモリ460に格納されプロセッサ430によって実行される命令として実装される。
【0127】
メモリ460は、1または複数のディスク、テープドライブ、およびソリッドステートドライブを含んでよく、プログラムが実行のために選択された場合に係るプログラムを格納するとともに、プログラムの実行中に読み取られる命令およびデータを格納するために、オーバーフローデータストレージデバイスとして使用されてよい。メモリ460は例えば、揮発性および/または不揮発性であり得、リードオンリメモリ(ROM)、ランダムアクセスメモリ(RAM)、三値連想メモリ(TCAM)、および/または、スタティックランダムアクセスメモリ(SRAM)であり得る。
【0128】
図5は、例示的な実施形態に従って、
図1からのソースデバイス12およびデスティネーションデバイス14のいずれかまたは両方として使用され得る装置500の簡略的なブロック図である。
【0129】
装置500におけるプロセッサ502は、中央演算処理装置とすることができる。代替的に、プロセッサ502は、現在既存のまたは今後開発される情報の操作または処理が可能な任意の他のタイプのデバイスまたは複数のデバイスとすることができる。開示される実装は、示されているような単一のプロセッサ、例えばプロセッサ502を使用して実施され得るが、速度および効率上の利点は、1つより多くのプロセッサを使用して実現され得る。
【0130】
装置500におけるメモリ504は、一実装において、リードオンリメモリ(ROM)デバイスまたはランダムアクセスメモリ(RAM)デバイスとすることができる。任意の他の好適なタイプのストレージデバイスが、メモリ504として使用され得る。メモリ504は、バス512を使用してプロセッサ502によってアクセスされるコードおよびデータ506を含むことができる。メモリ504は、オペレーティングシステム508およびアプリケーションプログラム510をさらに含むことができ、アプリケーションプログラム510は、プロセッサ502が本明細書に記載の方法を実行することを可能にする少なくとも1つのプログラムを含む。例えば、アプリケーションプログラム510は、アプリケーション1~Nを含むことができ、アプリケーション1~Nは、本明細書に記載の方法を実行するビデオコーディングアプリケーションをさらに含む。
【0131】
装置500は、ディスプレイ518等の、1または複数の出力デバイスも含むことができる。ディスプレイ518は、一例において、ディスプレイと、タッチ入力を検知するように動作可能なタッチセンサ素子とを組み合わせたタッチセンサ式ディスプレイであってよい。ディスプレイ518は、バス512を介してプロセッサ502に連結され得る。
【0132】
単一のバスとして本明細書に示したが、装置500のバス512は、複数のバスから構成することができる。さらに、二次ストレージ514は、装置500の他のコンポーネントに直接的に連結され得る、または、ネットワークを介してアクセスされ得、メモリカードなどの単一の統合ユニット、または、複数のメモリカードなどの複数のユニットを含み得る。したがって、装置500は、多種多様な構成で実装することができる。
【0133】
[パラメータセット]
パラメータセットは、基本的に同様で、同じ基本的な設計目標(すなわち、ビットレート効率、エラー耐性、およびシステム層インタフェースの提供)を共有している。HEVC(H.265)には、ビデオパラメータセット(VPS)、シーケンスパラメータセット(SPS)、および画像パラメータセット(PPS)を含むパラメータセットの階層が存在し、それらはAVCおよびVVCにおいて自らのカウンターパートと同様である。各スライスは、スライスをデコードするのに使用される情報にアクセスするために、単一のアクティブPPS、SPSおよびVPSを参照する。PPSは、画像内の全てのスライスに適用される情報を含むので、画像内の全てのスライスは同じPPSを参照しなければならない。異なる画像内のスライスも、同じPPSを参照することが可能である。同様に、SPSは、同じコーディング済みのビデオシーケンスで全ての画像に適用される情報を含む。
【0134】
PPSは個別の画像ごとに異なり得るが、コーディング済みのビデオシーケンスにおける多くのまたは全ての画像が同じPPSを参照することは一般的である。パラメータセットを再利用することは、共有された情報を複数回送信する必要性を回避するので、ビットレートが効率的にさせる。それはまた、パラメータセットのコンテンツを、それが損失されないことを確実にするべく、いくつかのより信頼できる外部の通信リンクによって搬送されるまたはビットストリーム内で頻繁に繰り返されることを可能にするので、損失に強い。
【0135】
[パラメータセット]
パラメータセットは、基本的に同様で、同じ基本的な設計目標(すなわち、ビットレート効率、エラー耐性、およびシステム層インタフェースの提供)を共有している。HEVC(H.265)には、ビデオパラメータセット(VPS)、シーケンスパラメータセット(SPS)、および画像パラメータセット(PPS)を含むパラメータセットの階層が存在し、それらはAVCおよびVVCにおいて自らのカウンターパートと同様である。各スライスは、スライスをデコードするのに使用される情報にアクセスするために、単一のアクティブPPS、SPSおよびVPSを参照する。PPSは、画像内の全てのスライスに適用される情報を含むので、画像内の全てのスライスは同じPPSを参照しなければならない。異なる画像内のスライスも、同じPPSを参照することが可能である。同様に、SPSは、同じコーディング済みのビデオシーケンスで全ての画像に適用される情報を含む。
【0136】
PPSは個別の画像ごとに異なり得るが、コーディング済みのビデオシーケンスにおける多くのまたは全ての画像が同じPPSを参照することは一般的である。パラメータセットを再利用することは、共有された情報を複数回送信する必要性を回避するので、ビットレートが効率的にさせる。それはまた、パラメータセットのコンテンツを、それが損失されないことを確実にするべく、いくつかのより信頼できる外部の通信リンクによって搬送されるまたはビットストリーム内で頻繁に繰り返されることを可能にするので、損失に強い。
【0137】
[シーケンスパラメータセット(SPS)]
SPSは、コーディング済みのビデオシーケンスの1または複数の層に適用されるパラメータを含み、コーディング済みのビデオシーケンス内で画像毎に変更することはない。具体的に、SPSはサブ画像のシグナリング情報を含む。
【0138】
以下の表のいくつかの部分は、ITU JVET-Q2001-v11におけるSPSのサブ画像シグナリングの一部のスナップショットを示しており、そのダウンロードリンクは以下の通りである。
http://phenix.it-sudparis.eu/jvet/doc_end_user/documents/17_Brussels/wg11/JVET-Q2001-v11.zip。本出願の残りの部分では、この先行技術文献は、簡潔さのためにVVC Draft8と称される。
【0139】
【0140】
SPS信号におけるいくつかのシンタックス要素は、各サブ画像の位置情報および制御フラグをシグナリングする。i番目のサブ画像の位置情報は、
・画像内のサブ画像iの左上の座標の水平成分を示すsubpic_ctu_top_left_x[i]、または
・画像内のサブ画像iの左上の座標の垂直成分を示すsubpic_ctu_top_left_y[i]、または
・画像内のサブ画像iの幅を示すsubpic_width_minus1[i]、または
・画像内のサブ画像iの高さを示すsubpic_height_minus1[i]
を含む。
【0141】
いくつかのシンタックス要素は、画像内部のサブ画像の数、例えば、sps_num_subpics_minus1を示す。
【0142】
画像は、1または複数のタイルの行および1または複数のタイルの列に分割される。タイルは、画像の長方形領域をカバーする一連のCTUである。タイル内のCTUは、そのタイル内のラスタースキャン順序でスキャンされる。
【0143】
スライスは、整数個の完全なタイル、または、画像のタイル内の整数個の連続した完全なCTU行で構成されている。従って、各垂直スライス境界は常に垂直タイル境界でもある。スライスの水平境界が、タイル境界でないがタイル内の水平CTU境界で構成されることも可能である:これは、タイルが、その各々がタイル内の整数個の連続した完全なCTU行で構成された複数の長方形スライスに分割された場合に生じる。
【0144】
スライスの2つのモード、すなわち、ラスタースキャンスライスモードおよび長方形スライスモードがサポートされている。ラスタースキャンスライスモードにおいて、スライスは、画像のタイルラスタースキャンにおいて一連の完全なタイルを含む。長方形スライスモードにおいて、スライスは、画像の長方形領域を集合的に形成する多数の完全なタイル、または、画像の長方形領域を集合的に形成する1つのタイルの多数の連続した完全なCTU行、のうちいずれかを含む。長方形スライス内のタイルは、そのスライスに対応する長方形領域内においてタイルラスタースキャン順序でスキャンされる。
【0145】
サブ画像は、画像の長方形領域を集合的にカバーする1または複数のスライスを含む。従って、各サブ画像境界は常にスライス境界でもあり、各垂直サブ画像境界は常に垂直タイル境界でもある。
【0146】
以下の条件のうち1つまたは両方が、サブ画像およびタイル毎に達成されるものとする。
‐サブ画像内の全てのCTUは同じタイルに属している。
‐タイル内の全てのCTUは同じサブ画像に属している。
【0147】
[画像をCTU、スライス、タイルおよびサブ画像に区分化すること]
【0148】
[画像をCTUに区分化すること]
画像は、一連のコーディングツリーユニット(CTU)に分割される。用語CTB(コーディングツリーブロック)は、場合によっては互換的に使用される。CTUの概念は、HEVCのそれと同じである。3つのサンプルアレイを有する画像の場合、CTUは、クロマサンプルの2つの対応するブロックと一緒に、ルマサンプルのN×Nブロックで構成されている。
図6は、CTUに分割された画像の例を示す。フレームの内部のCTUのサイズは、画像境界(不完全なCTUが存在できる)におけるそれを除いて、同じでなければならない。
【0149】
[画像をタイルに区分化すること]
タイルが有効になった場合、画像は、垂直および/または水平境界によって分離されたCTUの長方形の形状のグループに分割される。垂直および水平のタイル境界はそれぞれ、底部から且つ底部に、および、左の画像境界から右の画像境界に、画像を交差する。ビットストリームには、当該水平および垂直のタイル境界の位置に関するインジケーションが含まれる。
【0150】
図7は、画像を9個のタイルに区分化することを例示する。例において、タイル境界は太い破線で示されている。換言すれば、
図7は、画像内に異なるサイズの9個のタイルを有するCTUのタイルベースのラスタースキャン順序を示す。タイル境界は太い破線で示されていることに留意されたい。
【0151】
1つより多いタイルが画像の内部に存在する場合、CTUのスキャン順序は変更される。CTUは、以下のルールに従ってスキャンされる。
1.タイルは、本開示ではタイルスキャン順序と呼ばれるラスタースキャン順序で、左から右に、上部から底部にスキャンされる。これは、左上のタイルから開始し、まず同じタイル行にある全てのタイルが左から右にスキャンされることを意味する。その後、第2のタイル行(1つ下のタイル行)内の第1のタイルから開始し、全てのタイルが第2のタイル行において左から右にスキャンされる。当該プロセスは、全てのタイルがスキャンされるまで繰り返される。
2.タイルの内部において、CTUはラスタースキャン順序でスキャンされる。CTU行の内部において、CTUは左から右にスキャンされ、CTU行は上部から底部にスキャンされる。
図7は、タイルが存在する場合のCTUのスキャニング順序を例示しており、CTUの内部の数はスキャニング順序を示している。
【0152】
タイルの概念は、各タイルが同じ画像の他のタイルから独立してデコード可能であるような方法で画像を区分化することを提供しており、ここでデコードは、エントロピー、残差および予測的デコードを指す。さらに、タイルを使用して、画像を同様のサイズを有する領域に区分化することが可能となる。したがって、画像のタイルを互いに並行して処理する可能性が生じることが可能であり、これは、各処理コアが互いに同一であるマルチコア処理環境には好ましい。
【0153】
処理順序およびスキャニング順序といった用語は、本開示において以下の通りに使用されている。
【0154】
処理は、エンコーダまたはデコーダ内で行われるCTUのエンコードまたはデコードを指す。スキャニング順序は、画像の内部の特定の区分のインデックス化を示す。タイルにおけるCTUスキャン順序は、タイルの内部のCTUがどのようにインデックス化されるかを意味しており、これは、CTUが処理される順序と同じ順序でない場合がある。
【0155】
[画像をスライスに区分化すること]
スライスの概念は、各スライスが同じ画像の他のスライスから独立したデコード可能であるような方法で画像の区分化を提供し、ここでデコードは、エントロピー、残差および予測的デコードを指す。タイルとの差は、スライスはより任意の形状(区分化の可能性においてよりフレキシブルである)を有することができ、スライス区分化の目的は並列処理ではなく、送信環境におけるパケットサイズのマッチングと、エラー耐性とである。
【0156】
スライスは、完全な画像、ならびにその部分で構成され得る。HEVCにおいて、スライスは、画像の複数の連続したCTUを処理順序で含む。スライスは、それ自身がスライスヘッダまたは画像パラメータセットまたはいくつかの他のユニットにおいてシグナリングされるCTUアドレスを開始することによって識別される。
【0157】
VVCのドラフト8において、スライスは、整数個の完全なタイル、または、画像のタイル内の整数個の連続したCTU行を含む。従って、各垂直スライス境界は常に垂直タイル境界でもある。スライスの水平境界が、タイル境界でないがタイル内の水平CTU境界を含むことも可能である:これは、タイルが、その各々のスライスがタイル内の整数個の連続した完全なCTU行を含む複数の長方形スライスに分割された場合に生じる。
【0158】
いくつかの例において、ラスタースキャンスライスモードおよび長方形スライスモードといった2つのスライスモードが存在する。ラスタースキャンスライスモードにおいて、スライスは、画像のタイルラスタースキャンにおいて一連のタイルを含む。長方形スライスモードにおいて、スライスは、画像の長方形領域を集合的に形成する多数のタイルを含むか、または、スライスは、画像の長方形領域を集合的に形成する1つのタイルの多数の連続したCTU行を含む。長方形スライス内のタイルは、そのスライスに対応する長方形領域内においてタイルラスタースキャン順序でスキャンされる。
【0159】
画像の全てのスライスは、画像全体を集合的に形成する、すなわち、画像の全てのCTUは画像の複数のスライスのうち1つに含まれなければならない。同様のルールがタイルおよびサブ画像に適用される。
【0160】
[画像をサブ画像に区分化すること]
サブ画像は、画像の長方形の区分である。サブ画像は、画像全体または画像の一部であり得る。サブ画像は、各サブ画像がビデオシーケンス全体の他のサブ画像から独立してデコード可能であるような画像の区分である。VVC Draft8において、これは、サブ画像がビットストリームに示された場合、真である。すなわち、subpic_treated_as_pic_flag[i]のインジケーションがサブ画像iに対して真である場合、そのサブ画像iはビデオシーケンス全体の他のサブ画像から独立してデコード可能である。
【0161】
サブ画像とタイルまたはスライスとの間の差は、サブ画像はビデオシーケンスの内部に独立してデコード可能なビデオシーケンスを作成することである。一方、タイルおよびスライスの場合は、独立したデコードは、ビデオシーケンスの単一の画像の内部においてのみ保証される。
【0162】
VVC Draft8において、サブ画像は、画像の長方形領域を集合的にカバーする1または複数のスライスを含む。従って、各サブ画像境界は常にスライス境界であり、各垂直サブ画像境界は常に垂直タイル境界である。
【0163】
図8は、タイル、スライスおよびサブ画像の例を提供する。換言すれば、
図8は、4つのタイル、すなわち、2つのタイル列と2つのタイル行とを含み、4つの長方形スライス、および3つのサブ画像を含む画像の例を示す。サブ画像1は、2つのスライスを含む。
【0164】
図8に示された例において、画像は216個のCTU、4つのタイル、4つのスライスおよび3つのサブ画像に区分化される。sps_num_subpics_minus1の値は2であり、位置に関連したシンタックス要素は以下の値を有する。
【0165】
サブ画像0の場合、
・subpic_ctu_top_left_x[0]は、シグナリングされていないが、0と推論される。
・subpic_ctu_top_left_y[0]は、シグナリングされていないが、0と推論される。
・subpic_width_minus1[0]の値は、8である。
・subpic_height_minus1[0]の値は、11である。
【0166】
サブ画像1の場合、
・subpic_ctu_top_left_x[1]の値は9である。
・subpic_ctu_top_left_y[1]の値は0である。
・subpic_width_minus1[1]の値は8である。
・subpic_height_minus1[1]の値は5である。
【0167】
サブ画像2の場合、
・subpic_ctu_top_left_x[2]の値は9である。
・subpic_ctu_top_left_y[2]の値は6である。
・subpic_width_minus1[2]はシグナリングされていないが、8と推論される。
・subpic_height_minus1[2]は、シグナリングされていないが、5と推論される。
【0168】
[タイルのシグナリング]
以下の表は、タイルのサイズのシグナリング、および画像の内部のタイルの座標(VVC Draft8の画像パラメータセットRBSPシンタックス表から)を例示している。
【表3】
【0169】
タイルの区分化情報(各タイルのアドレスおよび寸法)は、通常、パラメータセットに含まれている。上記の例において、まず、インジケーションはビットストリームに含まれている(no_pic_partition_flag)であり、画像がスライスおよびタイルに区分化されているか否かを示す。このインジケーションが、真である(画像がスライスまたはタイルに区分化されていないことを意味する)場合、画像が1つのみのスライスと1つのみのタイルに区分化されたと推論され、その境界は画像境界と整合されている。そうでなければ(no_pic_partition_flagが偽である場合)、タイルの区分化情報はビットストリームに含まれている。
【0170】
シンタックス要素tile_column_width_minus1[i]は、i'番目のタイル列の幅を示す。シンタックス要素tile_row_height_minus1[i]は、i'番目のタイル行の高さを示す。
【0171】
タイル行の高さおよびタイル列の幅は、いずれもビットストリーム内で明示的にシグナリングされることができるまたは推論することができる。シンタックス要素num_exp_tile_columns_minus1およびnum_exp_tile_rows_minus1は、それぞれ、その幅および高さが明示的にシグナリングされたタイル列およびタイル行の数を示している。残りのタイル列および行の幅および高さは、関数に従って推論される。
【0172】
タイルのインデックス化は、「画像におけるタイルスキャン順序」に従う。画像内のタイルはラスタースキャン順序に従って順序付けられ(スキャンされ)、画像の左上隅にある第1のタイルは0番目のタイルであり、インデックスは、各タイル行において左から右へと増加しており、タイル行における最後のタイルがスキャンされた後、次のタイル行(現在のタイル行より1つ下)の左端のタイルに続く。
【0173】
[スライスのシグナリング]
以下の表は、タイルのサイズのシグナリング、および画像の内部の長方形の形状のスライスの座標(VVC Draft8の画像パラメータセットRBSPシンタックス表から)を例示している。
【表4】
【0174】
VVC Draft8において、スライスとタイルとの間には以下の関係が存在する。スライスが1または複数の完全なタイルを含むか、または、タイルが1または複数の完全なスライスを含むかのいずれかである。したがって、スライスの座標およびサイズは、w.r.tタイル区分化で示される。VVC Draft8において、まず、タイル区分化が画像パラメータセット内でシグナリングされる。スライス区分化情報はその後、タイルマッピング情報を使用してシグナリングされる。
【0175】
上記の表において、シンタックス要素num_slices_in_pic_minus1は、画像の内部のスライスの数を示す。Tile_idx_delta[i]は、(i+1)番目とi番目のスライスの第1のタイルのタイルインデックス間の差を示す。例えば、画像内の第1のスライスの第1のタイルのインデックスは0である。画像の内部の第2のスライスの第1のタイルのタイルインデックスが5である場合、Tile_idx_delta[0]は5に等しくなる。この文脈において、タイルインデックスは、スライスのアドレスとして使用されており、すなわち、スライスの第1のタイルのインデックスはスライスの開始アドレスである。
【0176】
slice_width_in_tiles_minus1[i]およびslice_height_in_tiles_minus1[i]は、画像の内部のi番目のスライスの幅および高さをタイルの数で示す。
【0177】
上記の表において、slice_width_in_tiles_minus1[i]およびslice_height_in_tiles_minus1[i]の両方が0(i番目のスライスの最大寸法が高さにおいて1つのタイル、幅において1つのタイルであることを示す)に等しい場合、シンタックス要素num_exp_slices_in_tile[i]がビットストリームに含まれることができる。このシンタックス要素は、タイルの内部のスライスの数を示す。
【0178】
先に説明されたように、VVC Draft8によると、スライスは、複数の完全なタイルを含み得、または、タイルは、複数の完全なスライスを含み得、他の代替物は禁止される。上記のシンタックス表によると、まず、スライスの内部のタイルの数が(slice_width_in_tiles_minus1[i]およびslice_height_in_tiles_minus1[i]を含むことによって)示される。加えて、スライスの内部のタイルの数がインジケーションに従って1に等しい場合、当該タイルの内部のスライスの数が(num_exp_slices_in_tile[i]で)示される。そのため、slice_width_in_tiles_minus1[i]およびslice_height_in_tiles_minus1[i]の両方が1に等しい場合、スライスの実際のサイズは1つのタイルに等しいまたはそれより小さい場合がある。
【0179】
シンタックス要素single_slice_per_subpic_flagは、真である場合、スライスが存在することと、スライスの全てのサブ画像に対してサブ画像毎に1つのみのスライスが存在する(すなわち、あるサブ画像は1つより多くのスライスに分割することができない)こととを示す。
【0180】
1つの代替的なシグナリング方法によると、スライスマップ(スライス開始アドレスおよびスライスのサイズ)は、以下の段階に従ってVVC Draft8に示される。
1.まず、タイル区分化マップがビットストリーム内に示され、ここで、(tileIdxと呼ばれ得る)インデックスが使用され、(画像におけるタイルスキャン順序に従って)画像内の全てのタイルをインデックス化する。この段階の後、各タイルのインデックス、座標およびサイズが知られる。
2.画像内のスライスの数がシグナリングされる。一例において、スライスの数は、num_slices_in_pic_minus1シンタックス要素によって示すことができる。
3.画像内の第1のスライスについては、スライスの幅および高さのみがタイルの数で示される。第1のスライスの開始アドレスは明示的にシグナリングされていないが、むしろ、tileIdx 0(画像内の第1のタイルが画像の第1のスライス内の第1のタイルである)と推論される。
4.第1のスライスのサイズが幅において1つのタイルおよび高さにおいて1つのタイルに等しい場合、ならびに、第1のスライス内に含まれたタイルの内部に1つより多くのCTU行が存在する場合、num_exp_slices_in_tile[0]シンタックス要素がシグナリングされ、それは、当該タイル内に含まれたスライスがいくつあるかを示す(numSlicesInTile[0]と呼ばれる)。
5.画像内の第2のスライスから最後のスライスまでの各々(第2のスライスを含むが、最後のスライスは除く)について、スライスの幅および高さがタイルの数で明示的に示される。スライスの開始アドレスは、tile_idx_delta[i]シンタックス要素によって明示的に示され得、ここでiはスライスのインデックスである。開始アドレスが明示的にシグナリングされていない場合(例えば、スライスが、開始位置と、現在のスライスの幅および高さとを使用して次のスライスの開始位置を推論することを可能とさせる順序でシグナリングされた場合)、その後、スライスの開始アドレスは関数を介して推論される。
6.n番目のスライス(nは2と、画像内のスライスの数から1を引いた数との間の数である)のサイズが幅において1つのタイルおよび高さにおいて1つのタイルに等しい場合、且つ、第1のスライス内に含まれたタイル内のCTU行が1つより多い場合、num_exp_slices_in_tile[n]シンタックス要素がシグナリングされ、それは、当該タイル内に含まれたスライスがいくつあるかを示す。
7.画像内の最後のスライスの場合、スライスの幅および高さは明示的にシグナリングされていないが、画像の幅におけるタイルの数、画像の高さにおけるタイルの数、および最後のスライスの開始アドレスに従って推論される。最後のスライスの開始アドレスは、明示的に示されるまたは推論されることができる。画像内の最後のスライスの幅および高さの推論は、以下の2つの方程式に従って実行でき、これらの式は、VVC Draft8のセクション6.5.1からのものである。
【数5】
【0181】
上記で説明された段階からわかり得るように、最後のスライスの幅および高さはシグナリングされない。スライスの開始アドレスが知られている場合に容易に推論できるので、ビットストリーム内には最後のスライスの幅および高さを含まないことが望ましい。結果として、ビットストリームに冗長な情報を含まないことによって、効率的圧縮が達成される。
【0182】
上記方程式における変数tileX、tileY、NumTileColumns、NumTileRowsは、後ほど説明される。
【0183】
[VVC Draft8のセクション6.5.1]
[6.5.1 CTBラスタースキャン、タイルスキャンおよびサブ画像スキャンのプロセス]
長方形スライスの場合、0からnum_slices_in_pic_minus1の範囲内の(両端を含む)iに対する、i番目のスライスにおけるCTUの数を指定するリストNumCtusInSlice[i]、0からnum_slices_in_pic_minus1の範囲内の(両端を含む)iに対する、スライスの左上のタイルのインデックスを指定するリストSliceTopLeftTileIdx[i]、および、0からnum_slices_in_pic_minus1の範囲内の(両端を含む)iと0からNumCtusInSlice[i]-1の範囲内の(両端を含む)jとに対する、i番目のスライス内のj番目のCTBの画像ラスタースキャンアドレスを指定するマトリックスCtbAddrInSlice[i][j]は、以下の通りに導出される。
【数6】
【数7】
ここで、関数AddCtbsToSlice(sliceIdx,startX,stopX,startY,stopY)は、以下の通り指定されている。
【数8】
【0184】
再び、完全性のために、2020年8月29日のhttp://handle.itu.int/11.1002/1000/14336を介して引用されたRecommendation ITU-T H.266(ISO/IEC 23090‐3:2020)による多用途ビデオコーディングもほぼ同じことを引用しており、その内容は以下の通りである。
【0185】
rect_slice_flagが1に等しい場合、0からnum_slices_in_pic_minus1の範囲内の(両端を含む)iに対する、i番目のスライスにおけるCTUの数を指定するリストNumCtusInSlice[i]、0からnum_slices_in_pic_minus1の範囲内の(両端を含む)iに対する、スライス内の第1のCTUを含むタイルのタイルインデックスを指定するリストSliceTopLeftTileIdx[i]、0からnum_slices_in_pic_minus1の範囲内の(両端を含む)iと0からNumCtusInSlice[i]-1の範囲内の(両端を含む)jとに対する、i番目のスライス内のj番目のCTBの画像ラスタースキャンアドレスを指定するマトリックスCtbAddrInSlice[i][j]、および、i番目のスライスを含むタイルにおけるスライスの数を指定する変数NumSlicesInTile[i],は、以下の通りに導出される。
【数9】
【数10】
【数11】
【数12】
ここで、関数AddCtbsToSlice(sliceIdx,startX,stopX,startY,stopY)は、以下の通り指定されている。
【数13】
【0186】
ここでは、VVC Draft8の上記に示されたテキストを参照する。
【0187】
画像の内部のスライスマップのシグナリングについての上記の段階的説明は、VVC Draft8におけるシグナリングの一例である。より具体的には、当該説明は、長方形の形状のスライスが使用され、サブ画像毎のスライスの数が1に等しく示されておらず、画像には1つのタイルより多くが存在しており、タイルの内部のCTU行の数が1より大きい場合を説明している。当該パラメータのうちいくつかが変更された場合、スライスマップのシグナリングの他のモードを使用できる。例えば、サブ画像毎に1つのみのスライスが存在すると示される場合、スライスの幅および高さはビットストリーム内で明示的にシグナリングされないが、むしろ、対応するサブ画像の幅および高さに等しいと推論される。
【0188】
VVC Draft8の副項6.5.1は、スライスiの内部のCTUのスキャン順序を指定しており、ここでiはスライスインデックスである。この副項の出力であるマトリックスCtbAddrInSlice[i][n]は、スライスiの内部のCTUスキャン順序を指定しており、ここでnはスライスiの0とCTUの数との間のCTUインデックスである。CtbAddrInSlice[i][n]の値は、スライスiにおけるn番目のCTUのアドレスを(画像におけるラスタースキャン順序で)指定する。
【0189】
図9は、CTUの画像におけるラスタースキャン順序(「画像におけるCTUラスタースキャン順序」)と、画像内の1つのスライス(スライス5、すなわち、画像内の5番目のスライス)とを例として示す。換言すれば、
図9は、画像の内部のCTUのラスタースキャン順序を示しており、ここで画像は1つのタイルと1つのサブ画像とで構成されている。
【0190】
この例によると、CtbAddrInSliceの値は、以下の通りである。
CtbAddrInSlice[4][0]=27
CtbAddrInSlice[4][1]=28
CtbAddrInSlice[4][2]=29
CtbAddrInSlice[4][3]=30
CtbAddrInSlice[4][4]=37
CtbAddrInSlice[4][5]=38
CtbAddrInSlice[4][6]=39
CtbAddrInSlice[4][7]=40
【0191】
[本開示において使用されている用語]
・本開示で説明された「画像におけるタイルスキャン順序」
・本開示で説明された「タイルの内部のCTUスキャン順序」
・本開示で説明された「スライスの内部のCTUスキャン順序」
・本開示で説明された「画像におけるCTUラスタースキャン順序」
・「画像の内部のCTUのタイルベースのスキャン順序」
・「スキャニング順序」は、インデックスが増加する順序に従った、XのYでのインデックス化を指す。
・「処理」は、エンコーダまたはデコーダにおけるデコードまたはエンコードを意味する。したがって、処理順序は、X(例えば、CTU)がエンコーダまたはデコーダにおいて処理される順序を意味する。
【0192】
VVC Draft8において、画像毎に1つより多くのタイルが存在する場合、スライスのシグナリングは以下の通りである。
【0193】
1.明示的な指示または推論を使用して、スライスの開始タイルアドレスをタイルの数で決定する。
2.最後のスライスを除いて、スライス毎に、スライスがタイルをいくつ含むかをシグナリングする。
a.スライスが1つのタイルのみを含むと決定した場合、タイル内にスライスがいくつ含まれているかを示す。
3.画像における最後のスライスについて、スライスが少なくとも1つの完全なタイルを含むと決定された場合のスライス内のタイルの数を推論する。
【0194】
換言すれば、VVC Draft8において、画像内の最後のスライスのサイズが幅および高さの両方の寸法において1つのタイルより大きいまたはそれに等しい場合、最後のスライスのサイズは推論され、また、シグナリングされることはない。
【0195】
これは表1からわかり得、ここで、slice_width_in_tiles_minus1[i]およびslice_height_in_tiles_minus1[i](i番目のスライスの幅および高さをそれぞれタイルの数で示す)は、num_slices_in_pic_minus1(for-loop「for(i=0;i<num_slices_in_pic_minus1;i++)」に起因する)より小さい場合、ビットストリーム内に含まれる。したがって、スライスの幅および高さは、iがnum_slices_in_pic_minus1に等しい場合、すなわち、最後のスライスに対して、シグナリングされない。
【0196】
[クロマスケーリングを使用したルママッピング(LMCS)]
VVCにおいて、クロマスケーリングを使用したルママッピング(LMCS)と呼ばれるコーディングツールが、新たな処理ブロックとしてループフィルタの前に追加される。LMCSは、2つの主な成分を有する:1)適応型の区分的線形モデルに基づくルマ成分のインループ(in-loop)マッピング、2)クロマ成分については、ルマ依存クロマ残差スケーリングが適用される。
図11は、デコーダの観点からLMCSアーキテクチャを示す。
図11における水色の陰影ブロックは、マッピングされたドメインに処理が適用された場所を示しており、これらは、逆量子化、逆変換、ルマイントラ予測、および、ルマ予測をルマ残差と一緒に追加することを含む。
図11における陰影のないブロックは、元の(すなわち、マッピングされていない)ドメインに処理が適用された場所を示しており、これらは、非ブロック化、ALFおよびSAO等のループフィルタ、動き補償予測、クロマイントラ(chroma intra)予測、クロマ予測をクロマ残差と一緒に追加すること、およびデコード済みの画像を参照画像として格納することを含む。
図11における淡黄色の陰影ブロックは、新たなLMCS機能ブロックであり、ルマ信号の順方向と逆方向のマッピングと、ルマ依存クロマスケーリングプロセスを含む。VVCのほとんどの他のツールと同様に、LMCSは、SPSフラグを使用してシーケンスレベルで有効化/無効化できる。
【0197】
スライスヘッダ:タイル内の全てのタイルまたはCTU行に関連したデータ要素を含むコーディング済みのスライスの一部がスライスに表されている。
【0198】
【0199】
表3は、VVC Draft8のスライスヘッダシンタックス構造の一部を例示する。「…」を含む行は、表における行のうちいくつかが省略されていることを示す。
【0200】
スライスヘッダにおいて、シンタックス要素は、以下を示す:
picture_header_in_slice_header_flagは、画像ヘッダシンタックス構造がスライスヘッダに存在するか否かを示す。画像ヘッダシンタックス構造がスライスヘッダに存在しない場合、それは、ビットストリーム内に含まれなければならない画像ヘッダに含まれていなければならない。
slice_addressは、スライスの第1のタイルのタイルインデックスを示す。
num_tiles_in_slice_minus1は、スライスに含まれたタイルの数を示す。
【0201】
図10は、12個のタイルと3個のスライスに区分化された画像を例示する。または、換言すれば、
図10は、12個のタイルと3個のラスタースキャンスライスに区分化された18×12のルマCTUを有する画像を示す。
【0202】
図10に示されたこの例において、スライスアドレスおよびnum_tiles_in_slice_minus1シンタックス要素は、画像のスライス毎に以下の値を仮定する:
・スライス1
・slice_address=0であり、スライス開始アドレスはタイルインデックス0である。
・num_tiles_in_slice_minus1=1であり、スライスは2個のタイルで構成されている。
・スライス2
・slice_address=2であり、スライス開始アドレスはタイルインデックス2である。
・num_tiles_in_slice_minus1=5であり、スライスは5個のタイルで構成されている。
・スライス3
・slice_address=7であり、スライス開始アドレスはタイルインデックス7である。
・num_tiles_in_slice_minus1=4であり、スライスは4個のタイルで構成されている。
【0203】
1に等しいslice_lmcs_enabled_flagは、クロマスケーリングを使用したルママッピングが現在のスライスに対して有効になることを指定する。0に等しいslice_lmcs_enabled_flagは、クロマスケーリングを使用したルママッピングが現在のスライスに対して有効にならないことを指定する。slice_lmcs_enabled_flagが存在しない場合は、0に等しいと推論される。
【0204】
スライスの開始タイル(画像内のスライスのアドレス)および画像の内部のタイルの数は、2つの方法を使用して示され得る。rect_slice_flagが1に等しい(画像のスライスが長方形の形状を有することを示す)場合、表1におけるシグナリングメカニズムが使用される。表1は、画像パラメータセットの一部を表す。このメカニズムにおいて、画像の全てのスライスのアドレスおよびサイズは、ビットストリーム内の画像の第1のスライスの前に、画像パラメータセット内でシグナリングされる。なお、ビットストリームは、情報(画像パラメータセット、画像のスライス、および、シンタックス構造等の内部のシンタックス要素)がビットストリーム内に含まれた(またはビットストリームからパースされた)順序を有する。
【0205】
そうでなければ、rect_slice_flagが0に等しい(画像のスライスが長方形の形状である必要がないことを示す)場合、スライスヘッダにおけるslice_addressおよびnum_tiles_in_slice_minus1シンタックス要素は、スライスのアドレスおよびサイズを示す。
【0206】
[画像ヘッダ]
[7.3.2.6 画像ヘッダのRBSPシンタックス]
【表6】
【0207】
上記の表は、VVC Draft8に係る画像ヘッダシンタックスを提示する。それは、画像ヘッダ構造、およびrbsp_trailing_bits( )を含み、これらは、画像ヘッダ内のビットの数を8の倍数に等しくさせるフィラービットである。
【0208】
[画像ヘッダ構造]
[7.3.2.7 画像ヘッダ構造のシンタックス]
【表7】
【0209】
画像ヘッダ構造は、画像の全てのスライスに適用可能なシンタックス要素を含む。シンタックス要素のうちいくつかは、上記の表に提示された画像ヘッダ構造に含まれる。例として、ph_lmcs_enabled_flagは、LMCS(クロマスケーリングを使用したルママッピング)コーディングツールが、画像のスライスに対して有効になったか否かを示す。1に等しいph_lmcs_enabled_flagは、クロマスケーリングを使用したルママッピングがPHと関連付けられた全てのスライスに対して有効になることを指定する。0に等しいph_lmcs_enabled_flagは、クロマスケーリングを使用したルママッピングが、PHに関連付けられた1つのまたはより多くのまたは全てのスライスに対して無効になり得ることを指定する。存在しない場合、ph_lmcs_enabled_flagの値は0に等しいと推論される。
【0210】
上記からわかり得るように、画像ヘッダ構造は、スライスヘッダまたは画像ヘッダのいずれかにおいて存在することができる。VVC Draft8によると、画像ヘッダ構造は、画像のスライスヘッダまたは画像ヘッダのいずれかにおいて存在しなければならない。画像ヘッダ構造が画像ヘッダにおいて存在する場合、当該画像ヘッダを参照する画像の全てのスライスは画像ヘッダ構造を含んではならない。その逆も真であり、画像ヘッダ構造が画像ヘッダに存在しない、したがって、画像ヘッダが特定の画像のビットストリームに含まれていない場合、画像ヘッダ構造は、当該画像のスライスのスライスヘッダに存在しなければならない。
【0211】
さらに、VVC Draft8には別の制約があり、ここで、画像ヘッダ構造がスライスヘッダに存在する場合、画像は、1つのスライスのみで構成されなければならない(すなわち、画像は複数のスライスに分割できない)。
【0212】
現在のVVC Draft8は、slice_addressおよびnum_tiles_in_slice_minus1が特定の場合にビットストリーム内に冗長的に含まれているので、効率的ではない。slice_addressおよびnum_tiles_in_slice_minus1のビットストリーム内での冗長的な包含により、画像のあらゆるスライスヘッダがこのシンタックス要素を含み得、故に圧縮効率が低減するので、ビットレートが増加する。
【0213】
[実施形態1]
実施形態によると、スライスヘッダにおけるslice_addressおよびnum_tiles_in_slice_minus1シンタックス要素の存在は、スライスヘッダにおける画像ヘッダ構造の存在に基づいて制御されている。
【表8】
【0214】
本発明は、上記の表に示されたように実装できる。本発明によると、slice_addressは、6行目の条件が真になった場合に、スライスヘッダに含まれる。換言すれば、slice_addressは、以下の場合、スライスヘッダに含まれる。
・画像内のタイルの数が1より多く且つ長方形でないスライスが許容され(rect_slice_flag=0)且つ画像ヘッダ構造がスライスヘッダ内に存在しない。
または、
・(rect_slice_flag=1)であり且つ現在のサブ画像内のスライスの数が1より多い。
【0215】
そうでなければ、slice_addressはスライスヘッダに含まれておらず、その値は0に等しいと推論することができる。
【0216】
加えてまたは代替的に、スライスヘッダにおけるnum_tiles_in_slice_minus1シンタックス要素の存在は、スライスヘッダにおける画像ヘッダ構造の存在によって制御することができる。例えば、num_tiles_in_slice_minus1は、スライスヘッダに画像ヘッダ構造がある場合は、スライスヘッダに含まれていない。
【0217】
上記の表の行10は、
・Rect_slice_flagが0に等しく、画像内のタイルの数が1より多く、picture_header_in_slice_header_flagが0に等しい
場合に、num_tiles_in_slice_minus1がスライスヘッダに含まれる本発明の実装を示す。
【0218】
そうでなければ、num_tiles_in_slice_minus1はスライスヘッダに含まれておらず、その値は、画像内のタイルの数から1を引いた数に等しいと推論できる。
【0219】
先に説明されたように、VVC Draft8における、スライスヘッダの画像ヘッダ構造の包含を制限するビットストリーム適合性要件が存在する。VVC Draft8によると、画像ヘッダ構造は、画像毎に1つのスライスが存在する場合に、スライスヘッダに含まれることができる。
【0220】
本発明によると、スライスヘッダにおける画像ヘッダ構造の存在は、スライスインジケーションにおけるslice_addressおよびタイルの数の存在を制御するために使用されており、これは、画像内に単一のスライスが存在する場合に、スライスアドレスは画像内の第1のタイルに等しくなければならず、スライス内のタイルの数は画像内のタイルの数に等しくなければならないからである。
【0221】
【0222】
加えてまたは代替的に、スライスヘッダにおけるnum_tiles_in_slice_minus1の存在は、画像内のタイルの数(例えば、上記の表のNumTilesInPic)とslice_addressとの間の差によって制御される。
【0223】
より具体的には、画像内のタイルの数とslice_addressとの間の差が閾値より小さい場合、num_tiles_in_slice_minus1はスライスヘッダに含まれておらず、その値は、予め定義された数に等しいと推論される。例えば、NumTilesInPicとslice_addressとの間の差が1より小さいまたはそれに等しい場合、num_tiles_in_slice_minus1はビットストリームに含まれておらず、その値は、0に等しい(現在のスライス内に1つのタイルが存在することを示す)と推論される。
【0224】
slice_addressは、スライスのスライスアドレスを指定する。
【0225】
存在しない場合、slice_addressの値は0に等しいと推論される。
【0226】
rect_slice_flagが0に等しい場合、以下が適用される。
【0227】
スライスアドレスは、スライス内の第1のタイルのラスタースキャンタイルインデックスである。
【0228】
slice_addressの長さは、Ceil(Log2(NumTilesInPic))ビットである。
【0229】
slice_addressの値は、0からNumTilesInPic-1の範囲(両端を含む)内のものとする。
【0230】
そうでなければ(rect_slice_flagが1に等しい)、以下が適用される。
【0231】
スライスアドレスは、現在のスライスのサブ画像レベルのスライスインデックス、すなわちSubpicLevelSliceIdx[j]であり、jは、現在のスライスの画像レベルのスライスインデックスである。
slice_addressの長さは、Ceil(Log2(NumSlicesInSubpic[CurrSubpicIdx]))ビットである。
slice_addressの値は、0からNumSlicesInSubpic[CurrSubpicIdx]-1の範囲(両端を含む)内のものとする。
【0232】
それは、以下の制約が適用されるビットストリーム適合性要件である。
【0233】
rect_slice_flagが0に等しいまたはsps_subpic_info_present_flagが0に等しい場合、slice_addressの値は、同じコーディング済みの画像の任意の他のコーディング済みのスライスNALユニットのslice_addressの値に等しくないものとする。
【0234】
そうでなければ、subpic_idおよびslice_addressの値のペアは、同じコーディング済みの画像の任意の他のコーディング済みのスライスNALユニットのsubpic_idおよびslice_addressの値のペアに等しくないものとする。
【0235】
画像のスライスの形状は、各CTUが、デコードされる場合に、その左の境界全体と上部境界全体とが画像境界で構成されるまたは以前にデコードされたCTUの境界で構成されるものとするようなものとする。
【0236】
num_tiles_in_slice_minus1+1は、存在する場合、スライス内のタイルの数を指定する。num_tiles_in_slice_minus1の値は、0からNumTilesInPic-1の範囲(両端を含む)内のものとする。存在しない場合、num_tiles_in_slice_minus1の値は、0に等しいと推論されるものとする。
【0237】
現在のスライス内のCTUの数を指定する変数NumCtusInCurrSlice、および、0からNumCtusInCurrSlice-1の範囲内の(両端を含む)iに対する、スライス内のi番目のCTBの画像ラスタースキャンアドレスを指定するリストCtbAddrInCurrSlice[i]は、以下の通りに導出される。
【数14】
【0238】
変数SubpicLeftBoundaryPos、SubpicTopBoundaryPos、SubpicRightBoundaryPosおよびSubpicBotBoundaryPosは、以下の通りに導出される。
【数15】
【0239】
【0240】
加えてまたは代替的に、スライスヘッダにおけるslice_lmcs_enabled_flagの存在は、スライスヘッダにおける画像ヘッダ構造の存在に基づいて制御される。例示的な実装態様が上記の表において行15に含まれている。
【0241】
より具体的には、画像ヘッダ構造がスライスヘッダに含まれている場合、slice_lmcs_enabled_flagはスライスヘッダに含まれていない。加えて、スライスヘッダに含まれていない場合、slice_lmcs_enabled_flagの値は、以下のルールに従って推論できる。
・slice_lmcs_enabled_flagの値は、ph_lmcs_enabled_flagに等しいと推論される。
【0242】
代替的にまたは加えて、slice_lmcs_enabled_flagの値は、スライスヘッダに存在しない場合、以下のルールに従って推論できる。
・slice_lmcs_enabled_flagの値は、picture_header_in_slice_header_flagが1に等しい(画像ヘッダ構造がスライスヘッダに含まれている)場合、ph_lmcs_enabled_flagに等しいと推論される。
【0243】
代替的にまたは加えて、slice_lmcs_enabled_flagの値は、スライスヘッダに存在しない場合、以下のルールに従って推論できる。
・slice_lmcs_enabled_flagの値は、picture_header_in_slice_header_flagが0に等しい場合、0に等しいと推論される。
【0244】
上記の実施形態は、行6および10の条件「!rect_slice_flag&&NumTilesInPic>1」を「!rect_slice_flag」に置換することによって実装できる。いくつかの例示的な実装態様において、rect_slice_flagの値が0に等しい(画像内のスライスが必ずしも長方形である必要はないことを示す)場合、NumTilesInPicシンタックス要素の値は、0より大きくなければならない(例えば、スライス内のタイルの数は1より大きくなければならない)。換言すれば、rect_slice_flagの値は、画像内のタイルの数が1より大きい場合に、0に等しくなる他ならない。そのような実装において、条件「!rect_slice_flag&&NumTilesInPic>1」および「!rect_slice_flag」は、同一の結果を有するであろう。したがって、条件の一部である「!rect_slice_flag&&NumTilesInPic>1」を含む条件である(上記の実施形態の全てにおける行6および10の)条件は、「!rect_slice_flag」に置換できる。
【0245】
上記の実施形態は、行6および10の条件「!rect_slice_flag&&NumTilesInPic>1」を「!rect_slice_flag」に置換することによって実装できる。いくつかの例示的な実装態様において、rect_slice_flagの値が0に等しい(画像内の各スライスが1または複数のタイルを含んでいることを示す)場合と、picture_header_in_slice_header_flagが0に等しい(画像内のスライスの数が1より大きいことを示す)場合とにおいて、NumTilesInPicは、picture_header_in_slice_header_flagが0に等しく且つrect_slice_flagが0に等しい場合、1より大きくなければならない。
【0246】
以下は、上述の実施形態に示されたようなエンコーディング方法およびデコーディング方法の適用、ならびにそれらを使用するシステムの説明である。
【0247】
図14は、本開示の実施形態に係るビデオビットストリームのデコード方法のフローチャートを示す図である。
図14に示された方法は、デコーディングデバイスによって実装される、ビデオビットストリームから画像をデコードする方法であって、ビットストリームは現在のスライスのスライスヘッダと現在のスライスを表すデータとを含み、当該方法は、条件が満たされた場合にスライスヘッダから現在のスライス内のタイルの数を導出するのに使用されるパラメータを取得する段階であって、条件は、現在のスライスのスライスアドレスが、現在のスライスが位置付けられた画像内の最後のタイルのアドレスではないことを含む、段階(段階1601)と、現在のスライス内のタイルの数と現在のスライスを表すデータとを使用して現在のスライスを再構築する段階(段階1603)とを含む、方法である。
【0248】
図15は、本開示の実施形態に係るビデオビットストリームの別のエンコード方法のフローチャートを示す図である。
図15に示された方法は、エンコーディングデバイスによって実装される、ビデオビットストリームをエンコードする方法であって、ビットストリームは現在のスライスのスライスヘッダと現在のスライスを表すデータとを含み、当該方法は、条件が満たされた場合にスライスヘッダから現在のスライス内のタイルの数を導出するのに使用されるパラメータをエンコードする段階であって、条件は、現在のスライスのスライスアドレスが、現在のスライスが位置付けられた画像内の最後のタイルのアドレスではないことを含む、段階(段階1701)と、現在のスライス内のタイルの数と現在のスライスを表すデータとを使用して現在のスライスを再構築する段階(段階1703)とを含む、方法である。
【0249】
図16は、本開示の実施形態に係るビデオビットストリームのデコードのための装置、すなわち、デコーダ(30)を示す図である。
図16に示された装置は、ビデオビットストリームから画像をデコードする装置であって、ビットストリームは現在のスライスのスライスヘッダと現在のスライスを表すデータとを含み、当該装置は、条件が満たされた場合にスライスヘッダから現在のスライス内のタイルの数を導出するのに使用されるパラメータを取得するように構成された取得ユニットであって、条件は、現在のスライスのスライスアドレスが、現在のスライスが位置付けられた画像内の最後のタイルのアドレスではないことを含む、取得ユニット(3001)と、現在のスライス内のタイルの数と現在のスライスを表すデータとを使用して現在のスライスを再構築するように構成された再構築ユニット(3003)とを含む、装置(30)である。
【0250】
図17は、本開示の実施形態に係るビデオビットストリームのエンコードのための装置、すなわち、エンコーダ(20)を示す図である。
図17に示された装置は、コーディング済みのビデオビットストリームをエンコードする装置であって、ビットストリームは現在のスライスのスライスヘッダと現在のスライスを表すデータとを含み、当該装置は、条件が満たされた場合にスライスヘッダから現在のスライス内のタイルの数を導出するのに使用されるパラメータをエンコードするように構成されたエンコードユニットであって、条件は、現在のスライスのスライスアドレスが、現在のスライスが位置付けられた画像内の最後のタイルのアドレスではないことを含む、エンコードユニット(2001)と、現在のスライス内のタイルの数と現在のスライスを表すデータとを使用して現在のスライスを再構築するように構成された再構築ユニット(2003)とを含む、装置(20)である。
【0251】
図16に示されたビデオデコーディング装置は、
図1A、1Bおよび3に示されたデコーダ30と、
図13に示されたビデオデコーダ3206とであってもよく、または、それらによって構成されてもよい。さらに、デコーディング装置は、
図4に示されたビデオコーディングデバイス400、
図5に示された装置500および
図12に示された端末デバイス3106によって構成されてよい。
図17に示されたエンコーディング装置は、
図1A、1Bおよび3に示されたエンコーダ20であってもよく、または、それによって構成されてもよい。さらに、エンコーディング装置は、
図4に示されたビデオコーディングデバイス400、
図5に示された装置500および
図12に示されたキャプチャデバイス3102によって構成されてよい。
【0252】
本開示は、以下のさらなる図を開示する。
図12は、コンテンツ配信サービスを実現するためのコンテンツ供給システム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、TV3114、セットトップボックス(STB)3116、ビデオ会議システム3118、ビデオ監視システム3120、パーソナルデジタルアシスタント(PDA)3122、車載デバイス3124またはそれらのいずれかの組み合わせなどであってよい。例えば、上述のように、端末デバイス3106はデスティネーションデバイス14を含んでよい。エンコード済みのデータがビデオを含む場合、端末デバイスに含まれるビデオデコーダ30は、ビデオデコーディングを実行することを優先させる。エンコード済みのデータがオーディオを含む場合、端末デバイスに含まれるオーディオデコーダは、オーディオデコーディング処理を実行することを優先させる。
【0255】
そのディスプレイを有する端末デバイス、例えば、スマートフォンまたはPad3108、コンピュータまたはラップトップ3110、ネットワークビデオレコーダ(NVR)/デジタルビデオレコーダ(DVR)3112、TV3114、パーソナルデジタルアシスタント(PDA)3122、または車載デバイス3124の場合、端末デバイスは、デコード済みのデータをそのディスプレイに供給することができる。ディスプレイを搭載していない端末デバイス、例えば、STB3116、ビデオ会議システム3118またはビデオ監視システム3120について、外部ディスプレイ3126は、デコード済みのデータを受信および示すために、内部で接触される。
【0256】
本システムにおける各デバイスがエンコードまたはデコードを実行する場合、上述の実施形態で示したような画像エンコーディングデバイスまたは画像デコーディングデバイスを使用することができる。
【0257】
図13は、端末デバイス3106の例の構造を示す図である。端末デバイス3106がキャプチャデバイス3102からストリームを受信した後に、プロトコル進行ユニット3202は、ストリームの送信プロトコルを解析する。プロトコルは、限定されるものではないが、リアルタイムストリーミングプロトコル(RTSP)、ハイパーテキストトランスファープロトコル(HTTP)、HTTPライブストリーミングプロトコル(HLS)、MPEG-DASH、リアルタイムトランスポートプロトコル(RTP)、リアルタイムメッセージングプロトコル(RTMP)、または、それらの任意の種類の組み合わせなどを含む。
【0258】
プロトコル進行ユニット3202がストリームを処理した後、ストリームファイルが生成される。当該ファイルは、逆多重化ユニット3204に出力される。逆多重化ユニット3204は、多重化されたデータをエンコード済みのオーディオデータおよびエンコード済みのビデオデータに分離できる。上述のように、いくつかの実際のシナリオについて、例えば、ビデオ会議システムでは、エンコード済みのオーディオデータおよびエンコード済みのビデオデータは多重化されていない。この状況において、エンコード済みのデータは、逆多重化ユニット3204を通すことなく、ビデオデコーダ3206およびオーディオデコーダ3208に送信される。
【0259】
この逆多重化処理により、ビデオエレメンタリストリーム(ES)と、オーディオESと、任意選択的に字幕が生成される。ビデオデコーダ3206は、上述の実施形態で説明したようなビデオデコーダ30を含み、上述の実施形態で示したようなデコーディング方法でビデオESをデコードしてビデオフレームを生成し、このデータを同期ユニット3212に供給する。オーディオデコーダ3208は、オーディオESをデコードしてオーディオフレームを生成し、このデータを同期ユニット3212に供給する。代替的に、ビデオフレームは、同期ユニット3212に供給する前に、バッファ(
図13には図示せず)に格納され得る。同様に、オーディオフレームは、同期ユニット3212に供給する前に、バッファ(
図13には図示せず)に格納され得る。
【0260】
同期ユニット3212は、ビデオフレームとオーディオフレームを同期させ、ビデオ/オーディオをビデオ/オーディオディスプレイ3214に供給する。例えば、同期ユニット3212は、ビデオおよびオーディオ情報の提示を同期させる。情報は、コーディング済みのオーディオおよびビジュアルデータの提示に関するタイムスタンプ、および、データストリームそのものの配信に関するタイムスタンプを使用してシンタックスでコードしてよい。
【0261】
字幕デコーダ3210は、ストリームに字幕が含まれている場合、字幕をデコードしてビデオフレームおよびオーディオフレームに同期させ、ビデオ/オーディオ/字幕をビデオ/オーディオ/字幕ディスプレイ3216に供給する。
【0262】
本発明は、上述のシステムに限定されるものではなく、上述の実施形態における画像エンコーディングデバイスまたは画像デコーディングデバイスのいずれかを、他のシステム、例えば、カーシステムに組み込むことも可能である。
【0263】
[数学演算子]
本開示に使用される数学演算子は、Cプログラミング言語で使用されるものと同様である。しかしながら、整数除算および算術シフト演算の結果はより厳密に定義され、べき乗および実数値除算などの追加の演算が定義される。番号およびカウントの規定は概して0から始まり、例えば「第1」は0番目と同等であり、「第2」は1番目と同等であり、以降も同様である。
【0264】
[算術演算子]
以下の算術演算子を以下の通りに定める。
【表11】
【0265】
[論理演算子]
以下の論理演算子は、以下の通りに定義される。
x&&y xおよびyのブール論理上の「and」
x||y xおよびyのブール論理上の「or」
! ブール論理上の「not」
x?y:z xがTRUEであるかまたは0に等しくない場合、yの値になり、そうでなければ、zの値になる。
【0266】
[関係演算子]
以下の関係演算子は、以下の通りに定義される。
> より大きい
>= 以上
< より小さい
<= 以下
= = に等しい
!= に等しくない
【0267】
関係演算子が、値「na」(非該当)をアサインされているシンタックス要素または変数に適用される場合、値「na」は、そのシンタックス要素または変数の区別的な値として扱われる。値「na」は、任意の他の値に等しくないとみなされる。
【0268】
[ビット単位演算子]
以下のビット毎の演算子は以下の通りに定められる。
&ビット単位の「and」。整数項に対して演算を行う場合、整数値の2の補数表現に対して演算を行う。別の項より少ないビットを含む二進項に対して演算を行う場合、そのより短い項は、0に等しいより上位のビットを追加することによって拡張される。
| ビット単位の「or」。整数項に対して演算を行う場合、整数値の2の補数表現に対して演算を行う。別の項より少ないビットを含む二進項に対して演算を行う場合、そのより短い項は、0に等しいより上位のビットを追加することによって拡張される。
^ ビット単位の「排他的or」。整数項に対して演算を行う場合、整数値の2の補数表現に対して演算を行う。別の項より少ないビットを含む二進項に対して演算を行う場合、そのより短い項は、0に等しいより上位のビットを追加することによって拡張される。
x>>y yの二進数だけの、xの2の補数整数表現の算術右シフト。この関数は、yの非負の整数値に関してのみ定義される。右シフトの結果として最上位ビット(MSB)にシフトされたビットは、シフト演算前のxのMSBに等しい値を有する。
x<<y yの二進数だけの、xの2の補数整数表現の算術左シフト。この関数は、yの非負の整数値に関してのみ定義される。左シフトの結果として最下位ビット(LSB)にシフトされたビットは、0に等しい値を有する。
【0269】
[代入演算子]
以下の算術演算子は、以下の通りに定義される。
= 代入演算子
+ + インクリメント、すなわち、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)に相当する。
【0270】
[範囲表記]
以下の表記は、値の範囲を指定するのに使用される。
x=y..z xはyからzまでの整数値(両端を含む)をとり、x、yおよびzは整数でありzはyより大きい。
【0271】
[数学関数]
以下の数学関数が定義される。
【数16】
Asin(x) 逆三角サイン関数であり、
-1.0から1.0までの範囲内(両端を含む)にある引数xに対して演算を行い、
出力値は、ラジアンの単位で、-π÷2からπ÷2までの範囲内(両端を含む)にある。
Atan(x) 逆三角タンジェント関数であり、
引数xに対して演算を行い、出力値は、ラジアンの単位で、-π÷2からπ÷2までの範囲内(両端を含む)にある。
【数17】
Ceil(x) x以上の最小の整数
Clip1Y(x)=Clip3(0,(1<<BitDepthY)-1,x)
Clip1C(x)=Clip3(0,(1<<BitDepthC)-1,x)
【数18】
Cos(x) ラジアンの単位である引数xに対して操作する三角コサイン関数
Floor(x) x以下の最大の整数
【数19】
Ln(x) xの自然対数(底e対数であり、eは自然対数の底2.718281828...である)
Log2(x) 底を2とするxの対数
Log10(x) 底を10とするxの対数
【数20】
【数21】
Round(x)=Sign(x)*Floor(Abs(x)+0.5)
【数22】
Sin(x) ラジアンの単位である引数xを操作する三角サイン関数
【数23】
Swap(x,y)=(y,x)
Tan(x) ラジアンの単位である引数xを操作する三角タンジェント関数
【0272】
[演算の優先順位の順序]
式の優先順位の順序が括弧を使用して明示的に指示されていない場合、以下のルールが適用される。
-より高い優先順位の演算は、より低い優先順位の任意の演算の前に評価される。
-同じ優先順位の演算は、左から右に順次評価される。
【0273】
以下の表は、演算の優先順位を最高から最低まで指定する。表でのより高い位置は、より高い優先順位を示す。
【0274】
Cプログラミング言語でも使用される演算子の場合、本明細書で使用される優先順位の順序は、Cプログラミング言語で使用されるものと同じである。
表:最高(表の最上部)から最低(表の最下部)までの操作の優先順位
【表12】
【0275】
[論理演算のテキストの説明]
テキストでは、論理演算のステートメント(statement)は、以下の形式で数学的に説明される。
【数24】
は、以下の方式で説明することができる。
【数25】
【0276】
各「If...Otherwise,if...Otherwise,...」というテキストでのステートメントには、「...as follows」または「the following applies」は、直後に「If...」が導入される。「If...Otherwise,if...Otherwise」の最後の条件は常に、「Otherwise,...」である。インターリーブされた「If...Otherwise,if...Otherwise,...」ステートメントは、「Otherwise,...」で終わる「...as follows」または「...the following applies」をマッチングすることによって識別され得る。
【0277】
テキストでは、論理演算のステートメントは、以下の形式で数学的に説明される。
【数26】
は、以下の方式で説明することができる。
【数27】
【0278】
テキストでは、論理演算のステートメントは、以下の形式で数学的に説明される。
【数28】
は、以下の方式で説明することができる。
条件0である場合、ステートメント0
条件1である場合、ステートメント1
【0279】
本発明の実施形態は主にビデオコーディングに基づいて説明されてきたが、コーディングシステム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のために等しく使用され得る。
【0280】
例えばエンコーダ20およびデコーダ30の実施形態、ならびに、例えばエンコーダ20およびデコーダ30を参照して本明細書に記載された機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組み合わせで実装されてよい。ソフトウェアにおいて実装される場合、機能は、コンピュータ可読媒体上に格納されるか、または、通信媒体を介して1または複数の命令もしくはコードとして送信され、ハードウェアベースの処理ユニットによって実行されてよい。コンピュータ可読媒体は、データ記憶媒体等の有形の媒体に対応するコンピュータ可読記憶媒体、または、例えば通信プロトコルに従った、コンピュータプログラムの1つの場所から別の場所への移動を容易にする任意の媒体を含む通信媒体を含んでよい。このように、コンピュータ可読媒体は、一般に、(1)非一時的な有形コンピュータ可読記憶媒体、または、(2)信号もしくは搬送波等の通信媒体に対応してよい。データ記憶媒体は、本開示において説明された技術の実装のための命令、コードおよび/またはデータ構造を取得するために1または複数のコンピュータまたは1または複数のプロセッサによりアクセスされ得る任意の利用可能な媒体であってよい。コンピュータプログラム製品はコンピュータ可読媒体を含んでよい。
【0281】
限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM、CD-ROMもしくは他の光ディスクストレージ、磁気ディスクストレージ、または他の磁気ストレージデバイス、フラッシュメモリ、または命令もしくはデータ構造の形態で所望のプログラムコードを格納するために使用することができ、コンピュータによってアクセスすることができる任意の他の媒体を含むことができる。加えて、あらゆる接続がコンピュータ可読媒体と呼ぶのに適切である。例えば、同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者線(DSL)、または、赤外線、無線、およびマイクロ波等の無線技術を使用して、ウェブサイト、サーバ、または他のリモートソースから命令が送信される場合、同軸ケーブル、光ファイバケーブル、ツイストペア、DSL、または、赤外線、無線、およびマイクロ波等の無線技術が媒体の定義に含まれる。しかしながら、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的媒体を含まず、その代わりに、非一時的な有形記憶媒体に関するものと理解されるべきである。本明細書で使用されるディスク(Disk and disc)は、コンパクトディスク(CD)、レーザディスク、光ディスク、デジタル多用途ディスク(DVD)、フロッピディスク、およびブルーレイディスクを含み、ここで、通常、ディスク(disk)はデータを磁気的に再現するものであり、ディスク(disc)はデータをレーザによって光学的に再現するものである。上記の組み合わせもまた、コンピュータ可読媒体の範囲内に含まれるべきである。
【0282】
命令は、1または複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルロジックアレイ(FPGA)、または他の同等な集積もしくはディスクリート論理回路等の、1または複数のプロセッサによって実行されてよい。したがって、本明細書で使用される「プロセッサ」という用語は、前述の構造のいずれか、または、本明細書に記載の技術の実装に好適な任意の他の構造を指してよい。加えて、いくつかの態様では、本明細書に記載の機能は、エンコーディングおよびデコーディングのために構成されている専用ハードウェアおよび/またはソフトウェアモジュール内に提供されるか、または、組み合わされたコーデックに組み込まれてよい。加えて、これらの技術は、1または複数の回路または論理素子に完全に実装することができる。
【0283】
本開示の技術は、無線ハンドセット、集積回路(IC)またはICのセット(例えば、チップセット)を含む、多種多様なデバイスまたは装置において実装してよい。様々なコンポーネント、モジュール、またはユニットが、開示された技術を実行するように構成されているデバイスの機能的態様を強調するように本開示において記載されているが、異なるハードウェアユニットによる実現は必ずしも要求されない。むしろ、上述のように、好適なソフトウェアおよび/またはファームウェアと連動して、様々なユニットがコーデックハードウェアユニットにして組み合わされるか、または、上述のように、1または複数のプロセッサを含む相互運用ハードウェアユニットの集合によって提供されてよい。
【0284】
本開示は、以下の21個のさらなる態様を開示する。
【0285】
(項目1)
デコーディングデバイスによって実装される、ビデオまたは画像ビットストリームのデコード方法の態様であって、前記ビットストリームは現在のスライスを表すデータを含み、前記方法は、存在条件が満たされることを条件として、前記ビットストリームのスライスヘッダから前記現在のスライスの前記スライスアドレスを取得する段階であって、前記存在条件は、前記画像ヘッダシンタックス構造が前記スライスヘッダに存在しないことを含む、段階と、前記現在のスライスの前記スライスアドレスに基づいて前記現在のスライスを再構築する段階とを備える、態様。
【0286】
(項目2)
前記画像ヘッダシンタックス構造が前記スライスヘッダに存在しないことは、シンタックス要素が偽に等しいことを含み、偽に等しい前記シンタックス要素は、前記画像ヘッダシンタックス構造が前記スライスヘッダに存在しないことを指定する、態様1に記載の方法の態様。
【0287】
(項目3)
前記現在のスライスの前記スライスアドレスの値は、前記存在条件が満たされていない場合、ゼロに等しいと推論される、態様1または2に記載の方法の態様。
【0288】
(項目4)
デコーディングデバイスによって実装されるビデオまたは画像ビットストリームのデコード方法の態様であって、前記ビットストリームは現在のスライスを表すデータを含み、前記方法は、存在条件が満たされることを条件として、前記ビットストリームのスライスヘッダから前記現在のスライスのタイルの数を導出するのに使用されるパラメータを取得する段階であって、前記存在条件は、前記画像ヘッダシンタックス構造が前記スライスヘッダに存在しないことを含む、段階と、前記現在のスライス内の前記タイルの数に基づいて前記現在のスライスを再構築する段階とを備える、態様。
【0289】
(項目5)
前記画像ヘッダシンタックス構造が前記スライスヘッダに存在しないことは、シンタックス要素が偽に等しいことを含み、偽に等しい前記シンタックス要素は、前記画像ヘッダシンタックス構造が前記スライスヘッダに存在しないことを指定する、態様4に記載の方法の態様。
【0290】
(項目6)
前記現在のスライスの前記パラメータの値は、前記存在条件が満たされていない場合、前記現在のスライスから1を引いた値である前記画像内の合計のタイルの数に等しいと推論される、態様4または5に記載の方法の態様。
【0291】
(項目7)
デコーディングデバイスによって実装されるビデオまたは画像ビットストリームのデコード方法の態様であって、前記ビットストリームは現在のスライスを表すデータを含み、前記方法は、存在条件が満たされることを条件として、前記ビットストリームのスライスヘッダから前記現在のスライスのタイルの数を導出するのに使用されるパラメータを取得する段階であって、前記存在条件は、前記現在のスライスの前記スライスアドレスが、前記現在のスライスが位置付けられた前記画像内の最後のタイルのアドレスではないことを含む、段階と、前記現在のスライス内の前記タイルの数に基づいて前記現在のスライスを再構築する段階とを備える、態様。
【0292】
(項目8)
前記現在のスライスの前記スライスアドレスが、前記画像内の前記最後のタイルの前記アドレスであることは、前記画像内の前記タイルの数から前記現在のスライスの前記スライスアドレスを引いた値が1に等しいことを含む、態様7に記載の方法の態様。
【0293】
(項目9)
前記現在のスライスの前記パラメータの値は、前記存在条件が満たされていない場合、デフォルト値に等しいと推論される、態様7または8に記載の方法の態様。
【0294】
(項目10)
前記デフォルト値は0に等しい、態様9に記載の方法の態様。
【0295】
(項目11)
デコーディングデバイスによって実装されるビデオまたは画像ビットストリームのデコード方法の態様であって、前記ビットストリームは現在のスライスを表すデータを含み、前記方法は、存在条件が満たされることを条件として、前記ビットストリームのスライスヘッダから前記現在のスライスのタイルの数を導出するのに使用されるパラメータを取得する段階であって、前記存在条件は、前記現在のスライスの前記スライスアドレスが、前記現在のスライスが位置付けられた前記画像内の最後のタイルのアドレスではないことと、前記画像ヘッダシンタックス構造が前記スライスヘッダに存在しないこととを含む、段階と、前記現在のスライス内の前記タイルの数に基づいて前記現在のスライスを再構築する段階とを備える、態様。
【0296】
(項目12)
前記パラメータの値は、前記現在のスライスの前記スライスアドレスが前記画像内の前記最後のタイルの前記アドレスである場合には第1デフォルト値に等しいと推論され、または、第2のデフォルト値であり、前記画像ヘッダシンタックス構造が前記スライスヘッダに存在しない、態様11に記載の方法の態様。
【0297】
(項目13)
デコーディングデバイスによって実装されるビデオまたは画像ビットストリームのデコード方法の態様であって、前記ビットストリームは現在のスライスを表すデータを含み、前記方法は、存在条件が満たされることを条件として、前記ビットストリームのスライスヘッダから前記現在のスライスに対してクロマスケーリングを使用したルママッピングが有効になったかどうかを指定するのに使用されるパラメータ(slice_lmcs_enabled_flag等)を取得する段階であって、前記存在条件は、前記画像ヘッダシンタックス構造が前記スライスヘッダに存在しないことを含む、段階と、前記パラメータ内のタイルの数に基づいて前記現在のスライスを再構築する段階とを備える、態様。
【0298】
(項目14)
前記画像ヘッダシンタックス構造が前記スライスヘッダに存在しないことは、シンタックス要素が偽に等しいことを含み、偽に等しい前記シンタックス要素は、前記画像ヘッダシンタックス構造が前記スライスヘッダに存在しないことを指定する、態様13に記載の方法の態様。
【0299】
(項目15)
エンコーディングデバイスによって実装される、ビデオまたは画像をビットストリームにエンコードする方法の態様であって、前記ビットストリームは現在のスライスを表すデータを含み、前記方法は、存在条件が満たされることを条件として、前記ビットストリームのスライスヘッダから前記現在のスライスの前記スライスアドレスを前記ビットストリームに含める段階であって、前記存在条件は、前記画像ヘッダシンタックス構造が前記スライスヘッダに存在しないことを含む、段階と、前記現在のスライスの前記スライスアドレスに基づいて前記現在のスライスを再構築する段階とを備える、態様。
【0300】
(項目16)
態様1から15のいずれか1つに記載の方法を実行するための処理回路を備えるデコーダ(30)の態様。
【0301】
(項目17)
コンピュータ上またはプロセッサ上で実行される場合、先行する態様のいずれか1つに記載の方法を実行するためのプログラムコードを含むコンピュータプログラム製品の態様。
【0302】
(項目18)
デコーダの態様であって、前記デコーダは、
1または複数のプロセッサと、前記プロセッサに結合され且つ前記プロセッサによる実行のためのプログラミングを格納する非一時的コンピュータ可読記憶媒体であって、前記プログラミングは、前記プロセッサによって実行される場合、前記デコーダを、先行する態様1から15のいずれか1つに記載の方法を実行するように構成する、非一時的コンピュータ可読記憶媒体とを備える、態様。
【0303】
(項目19)
コンピュータデバイスによって実行される場合、前記コンピュータデバイスに先行する態様1から15のいずれか1つに記載の方法を実行させるプログラムコードを保持する、非一時的コンピュータ可読媒体の態様。
【0304】
(項目20)
【0305】
複数のシンタックス要素を含むことによる、前記ビデオ信号に対するエンコード済みのビットストリームの態様であって、前記複数のシンタックス要素はpicture_header_in_slice_header_flagを含み、フラグ(slice_lmcs_enabled_flag等)は、picture_header_in_slice_header_flagの値に少なくとも基づいて、前記スライスヘッダ内で条件付きでシグナリングされている、態様。
【0306】
(項目21)
イメージデコーディングデバイスによってデコードされたエンコード済みのビットストリームを含み、前記ビットストリームは、ビデオ信号またはイメージ信号のフレームを複数のブロックに分割することによって生成され、複数のシンタックス要素を含む、非一時的記録媒体の態様であって、前記複数のシンタックス要素はrect_slice_flagまたはsps_num_subpics_minus1を含み、フラグ(slice_lmcs_enabled_flag等)は、picture_header_in_slice_header_flagの値に少なくとも基づいて、前記スライスヘッダ内で条件付きでシグナリングされている、態様。
[他の可能な項目]
[項目1]
デコーディングデバイスによって実装される、ビデオビットストリームから画像をデコードする方法であって、前記ビットストリームは現在のスライスのスライスヘッダと前記現在のスライスを表すデータとを含み、前記方法は、
条件が満たされた場合に前記スライスヘッダから前記現在のスライス内のタイルの数を導出するのに使用されるパラメータを取得する段階であって、前記条件は、前記現在のスライスの前記スライスアドレスが、前記現在のスライスが位置付けられた前記画像内の最後のタイルのアドレスではないことを含む、段階と、
前記現在のスライス内の前記タイルの数と前記現在のスライスを表す前記データとを使用して前記現在のスライスを再構築する段階と
を備える、方法。
[項目2]
前記現在のスライスの前記スライスアドレスが前記画像内の前記最後のタイルの前記アドレスであることは、前記画像内の前記タイルの数から前記現在のスライスの前記スライスアドレスを引いた値が1に等しいと決定することを含む、項目1に記載の方法。
[項目3]
前記現在のスライスの前記スライスアドレスが前記画像内の前記最後のタイルの前記アドレスでないことは、前記画像内の前記タイルの数から前記現在のスライスの前記スライスアドレスを引いた値が1より大きいと決定することを含む、項目1に記載の方法。
[項目4]
前記現在のスライスの前記パラメータの値は、条件が満たされていない場合のデフォルト値に等しいと推論される、項目1から3のいずれか一項に記載の方法。
[項目5]
前記デフォルト値は0に等しい、項目4に記載の方法。
[項目6]
前記スライスアドレスはタイル単位である、項目1から5のいずれか一項に記載の方法。
[項目7]
前記条件はさらに、前記現在のスライスはラスタースキャンモードにあると決定される段階を含む、項目1から6のいずれか一項に記載の方法。
[項目8]
前記現在のスライス内の前記タイルの数を使用して前記現在のスライスを再構築する段階は、前記現在のスライス内の前記タイルの数を使用して前記現在のスライス内の前記コーディングツリーユニットのスキャン順序を決定する段階と、前記スキャン順序を使用して前記現在のスライス内の前記コーディングツリーユニットを再構築する段階とを有する、項目1から7のいずれか一項に記載の方法。
[項目9]
エンコーディングデバイスによって実装される、ビデオビットストリームをエンコードする方法であって、前記ビットストリームは現在のスライスのスライスヘッダと前記現在のスライスを表すデータとを含み、前記方法は、
条件が満たされた場合に前記スライスヘッダから前記現在のスライス内のタイルの数を導出するのに使用されるパラメータをエンコードする段階であって、前記条件は、前記現在のスライスの前記スライスアドレスが、前記現在のスライスが位置付けられた前記画像内の最後のタイルのアドレスではないことを含む、段階と、
前記現在のスライス内の前記タイルの数と前記現在のスライスを表す前記データとを使用して前記現在のスライスを再構築する段階と
を備える、方法。
[項目10]
ビデオビットストリームから画像をデコードする装置であって、前記ビットストリームは現在のスライスのスライスヘッダと前記現在のスライスを表すデータとを含み、前記装置は、
条件が満たされた場合に前記スライスヘッダから前記現在のスライス内のタイルの数を導出するのに使用されるパラメータを取得するように構成された取得ユニットであって、前記条件は、前記現在のスライスの前記スライスアドレスが、前記現在のスライスが位置付けられた前記画像内の最後のタイルのアドレスではないことを含む、取得ユニットと、
前記現在のスライス内の前記タイルの数と前記現在のスライスを表す前記データとを使用して前記現在のスライスを再構築するように構成された再構築ユニットと
を備える、装置。
[項目11]
コーディング済みのビデオビットストリームをエンコードする装置であって、前記ビットストリームは現在のスライスのスライスヘッダと前記現在のスライスを表すデータとを含み、前記装置は、
条件が満たされた場合に前記スライスヘッダから前記現在のスライス内のタイルの数を導出するのに使用されるパラメータをエンコードするように構成されたエンコードユニットであって、前記条件は、前記現在のスライスの前記スライスアドレスが、前記現在のスライスが位置付けられた前記画像内の最後のタイルのアドレスではないことを含む、エンコードユニットと、
前記現在のスライス内の前記タイルの数と前記現在のスライスを表す前記データとを使用して前記現在のスライスを再構築するように構成された再構築ユニットと
を備える、装置。
[項目12]
項目9に記載の方法を実行するための処理回路を備える、エンコーダ(20)。
[項目13]
項目1から8のいずれか一項に記載の方法を実行するための処理回路を備える、デコーダ(30)。
[項目14]
コンピュータ上またはプロセッサ上で実行される場合、項目1から9のいずれか一項に記載の方法を実行するためのプログラムコードを含むコンピュータプログラム製品。
[項目15]
デコーダであって、
1または複数のプロセッサと、
前記プロセッサに結合され且つ前記プロセッサによる実行のためのプログラミングを格納する非一時的コンピュータ可読記憶媒体であって、前記プログラミングは、前記プロセッサによって実行される場合、前記デコーダを、項目1から8のいずれか一項に記載の方法を実行するように構成する、非一時的コンピュータ可読記憶媒体と
を備える、デコーダ。
[項目16]
エンコーダであって、
1または複数のプロセッサと、
前記プロセッサに結合され且つ前記プロセッサによる実行のためのプログラミングを格納する非一時的コンピュータ可読記憶媒体であって、前記プログラミングは、前記プロセッサによって実行される場合、前記エンコーダを、項目9に記載の方法を実行するように構成する、非一時的コンピュータ可読記憶媒体と
を備える、エンコーダ。
[項目17]
コンピュータデバイスによって実行される場合、前記コンピュータデバイスに項目1から9のいずれか一項に記載の方法を実行させるプログラムコードを保持する、非一時的コンピュータ可読媒体。
[項目18]
ビデオビットストリームを含む非一時的記憶媒体であって、前記ビットストリームは、現在のスライスのスライスヘッダと前記現在のスライスを表すデータとを含み、前記スライスヘッダは、前記現在のスライスのスライスアドレスを含み、
条件が満たされた場合、前記スライスヘッダはさらに、前記スライスヘッダから前記現在のスライス内のタイルの数を導出するのに使用されるパラメータを含み、前記条件は、前記現在のスライスの前記スライスアドレスが、前記現在のスライスが位置付けられた前記画像内の最後のタイルのアドレスではないことを含む、非一時的記憶媒体。