(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-10-25
(45)【発行日】2024-11-05
(54)【発明の名称】ビデオエンコーダ、ビデオデコーダ及び対応する方法
(51)【国際特許分類】
H04N 19/70 20140101AFI20241028BHJP
【FI】
H04N19/70
【外国語出願】
(21)【出願番号】P 2023075906
(22)【出願日】2023-05-02
(62)【分割の表示】P 2021538323の分割
【原出願日】2019-12-31
【審査請求日】2023-05-18
(32)【優先日】2018-12-31
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2019-08-06
(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)【発明者】
【氏名】ワン,イェ‐クイ
【審査官】田中 純一
(56)【参考文献】
【文献】国際公開第2014/050038(WO,A1)
【文献】米国特許出願公開第2018/0084282(US,A1)
【文献】Jill Boyce, Adarsh Ramasubramanian, Robert Skupin, Gary J. Sullivan, Alexis Tourapis, Ye-Kui Wang,HEVC Additional Supplemental Enhancement Information (Draft 4) [online], JCTVC-AC JCTVC-AC1005-v2,ITU-T インターネット<URL:http://phenix.it-sudparis.eu/jct/doc_end_user/documents/29_Macau/wg11/JCTVC-AC1005-v2.zip><JCTVC-AC1005-v2.docx>,2017年10月25日,pp.1-43
【文献】R. Skupin, Y. Sanchez,MCTS extraction with optional slice reordering [online], JCTVC-AB JCTVC-AB0028,ITU-T インターネット<URL:http://phenix.it-sudparis.eu/jct/doc_end_user/documents/28_Torino/wg11/JCTVC-AB0028-v1.zip><JCTVC-AB0028.doc>,2017年07月05日,pp.1-4
【文献】Sachin Deshpande,On Motion-Constrained Tile Sets Extraction Information Set SEI [online], JCTVC-Z JCTVC-Z0037,ITU-T インターネット<URL:http://phenix.it-sudparis.eu/jct/doc_end_user/documents/26_Geneva/wg11/JCTVC-Z0037-v1.zip><JCTVC-Z0037-MCTS.doc>,2017年01月06日,pp.1-5
【文献】Hyun-Mook Oh, Soojin Hwang, Sejin Oh,MCTS extraction with implicit slice reordering [online], JCTVC-AC JCTVC-AC0033,ITU-T インターネット<URL:http://phenix.it-sudparis.eu/jct/doc_end_user/documents/29_Macau/wg11/JCTVC-AC0033-v1.zip><JCTVC-AC0033.docx>,2017年10月11日,pp.1-3
(58)【調査した分野】(Int.Cl.,DB名)
H04N 7/12
H04N 19/00 - 19/98
(57)【特許請求の範囲】
【請求項1】
デコーダで実施される方法であって、
第1スライスを含む複数のスライスにパーティション化されたピクチャのサブピクチャと、前記ピクチャ及び前記サブピクチャに関連したパラメータセットと、前記第1スライスに関連したスライスヘッダとを含む
ビットストリームを受信することと、
前記第1スライスのスライスアドレスの長さを導出する
ためのパラメータを取得するよう前記
ビットストリームをパースすることであり、
前記パラメータの有無に応じて、前記スライスアドレスの長さはCeil(Log2(NumTilesInPic))に等しいと推測される、ことと、
前記スライスアドレスの前記長さに基づいて前記スライスヘッダから前記第1スライスの前記スライスアドレスを決定することと、
前記スライスアドレスに基づいて前記第1スライスを含むサブピクチャのビデオシーケンスを生成するよう前記
ビットストリームをデコーディングすること
を有する方法。
【請求項2】
当該方法は、
表示のために前記サブピクチャのビデオシーケンスを転送することを更に有する、
請求項1に記載の方法。
【請求項3】
当該方法は、
識別子を得るよう前記パラメータセットをパースすることを更に有し、
前記スライスアドレスの前記長さに基づいて前記スライスヘッダから前記第1スライスの前記スライスアドレスを決定することは、
前記スライスアドレスの前記長さ及び前記識別子に基づいて前記スライスヘッダから前記第1スライスの前記スライスアドレスを決定することを有する、
請求項1に記載の方法。
【請求項4】
前記識別子は、サブピクチャと関連付けられる、
請求項3に記載の方法。
【請求項5】
前記スライスアドレスの前記長さは、前記スライスアドレスに含まれているビットの数を示す、
請求項1乃至4のうちいずれか一項に記載の方法。
【請求項6】
前記第1スライスの前記スライスアドレスを決定することは、
前記スライスヘッダから前記スライスアドレスを解釈するためのビット境界を決定するために前記長さを用いることと、
ピクチャに基づいた位置からサブピクチャに基づいた位置へ前記スライスアドレスをマッピングするために前記識別子及び前記スライスアドレスを用いることと
を有する、
請求項3に記載の方法。
【請求項7】
前記ピクチャに基づいた位置と前記サブピクチャに基づいた位置との間の前記マッピングは、前記スライスヘッダが書き直される必要なしに、前記スライスヘッダを前記サブピクチャにアライメントする、
請求項6に記載の方法。
【請求項8】
エンコーダで実施される方法であって、
ピクチャをビットストリームの中にエンコーディングすることであり、前記ピクチャは、第1スライスを含む複数のスライスを有する、ことと、
前記ビットストリームの中に、前記第1スライスのスライスアドレスをエンコーディングすることと、
前記ビットストリームの中に、前記第1スライスのスライスアドレスの長さを導出するための
パラメータをエンコーディングすること
であり、前記パラメータの有無に応じて、前記スライスアドレスの長さはCeil(Log2(NumTilesInPic))に等しいと推測される、ことと、
前記第1スライスの前記スライスアドレス及び前記
パラメータに基づいて前記第1スライスを抽出するこ
とと
を有する方法。
【請求項9】
当該方法は、
デコーダへの通信のために前記
ビットストリームを記憶することを更に有する、
請求項8に記載の方法。
【請求項10】
前記
パラメータは、サブピクチャと関連付けられる、
請求項8又は9に記載の方法。
【請求項11】
前記スライスアドレスの前記長さは、前記スライスアドレスに含まれているビットの数を示す、
請求項8乃至10のうちいずれか一項に記載の方法。
【請求項12】
ピクチャに基づいた位置からサブピクチャに基づいた位置へ前記スライスアドレスをマッピングするためにマッピングが利用可能であることを示す識別子(ID)フラグをパラメータセットの中にエンコーディングすることを更に有する、
請求項8乃至11のうちいずれか一項に記載の方法。
【請求項13】
前記スライスアドレスは、定義された値を有し、インデックスを有さない、
請求項8乃至12のうちいずれか一項に記載の方法。
【請求項14】
前記
第1スライスを抽出することは、前記ピクチャのサブピクチャを抽出することを含み、
前記サブピクチャは、前記第1スライスを含み、
前記
ビットストリームは、前記サブピクチャと、スライスヘッダと、パラメータセットとを有する、
請求項8乃至13のうちいずれか一項に記載の方法。
【請求項15】
プロセッサと、
メモリと、
前記プロセッサへ結合されている受信器と、
前記プロセッサへ結合されている送信器と
を有し、
前記プロセッサ、前記メモリ、前記受信器、及び前記送信器は、請求項1乃至14のうちいずれか一項に記載の方法を実行するよう構成される、
ビデオコーディングデバイス。
【請求項16】
ビデオコーディングデバイスによって使用されるコンピュータプログラムであって、
プロセッサによって実行される場合に、前記ビデオコーディングデバイスに、請求項1乃至14のうちいずれか一項に記載の方法を実行させるように、コンピュータ実行可能命令を有する、
コンピュータプログラム。
【請求項17】
第1スライスを含む複数のスライスにパーティション化されたピクチャのサブピクチャと、前記ピクチャ及び前記サブピクチャに関連したパラメータセットと、前記第1スライスに関連したスライスヘッダとを含む
ビットストリームを受信するよう構成される受信部と、
前記第1スライスのスライスアドレスの長さを導出する
ためのパラメータを取得するよう前記
ビットストリームをパースするよう構成され
、前記パラメータの有無に応じて、前記スライスアドレスの長さはCeil(Log2(NumTilesInPic))に等しいと推測される、パージング部と、
前記スライスアドレスの前記長さに基づいて前記スライスヘッダから前記第1スライスの前記スライスアドレスを決定するよう構成される決定部と、
前記スライスアドレスに基づいて前記第1スライスを含むサブピクチャのビデオシーケンスを生成するよう前記
ビットストリームをデコーディングするよう構成されるデコーディング部と
を有するデコーダ。
【請求項18】
当該デコーダは、表示のために前記サブピクチャのビデオシーケンスを転送するよう構成される転送部を更に有する、
請求項17に記載のデコーダ。
【請求項19】
ピクチャをビットストリームの中にエンコーディングし、前記ピクチャは、第1スライスを含む複数のスライスを有し、
前記ビットストリームの中に、前記第1スライスのスライスアドレスをエンコーディングし、
前記ビットストリームの中に、前記第1スライスのスライスアドレスの長さを導出するための
パラメータをエンコーディングするよう構成され
、前記パラメータの有無に応じて、前記スライスアドレスの長さはCeil(Log2(NumTilesInPic))に等しいと推測される、エンコーディング部と、
前記第1スライスの前記スライスアドレス及び前記
パラメータに基づいて前記第1スライスを抽出す
るよう構成される抽出部と
を有するエンコーダ。
【請求項20】
当該エンコーダは、デコーダへの通信のために前記
ビットストリームを記憶するよう構成される記憶部を更に有する、
請求項19に記載のエンコーダ。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、ビデオコーディングに概して関係があり、具体的には、ビデオコーディングにおいてピクチャからサブピクチャを抽出するときのアドレス管理に関係がある。
【背景技術】
【0002】
比較的に短いビデオでさえ表現するために必要なビデオデータの量は相当である可能性があり、これは、バンド幅容量が限られている通信ネットワークにわたってデータがストリーミング又は別なふうに通信されるべきである場合に、困難を引き起こすことがある。よって、ビデオデータは、一般的には、今日的な電気通信ネットワークにわたって通信される前に、圧縮される。メモリ資源は限られていることがあるので、ビデオが記憶デバイスで記憶される場合に、ビデオのサイズも問題であり得る。ビデオ圧縮デバイスは、伝送又は記憶の前にビデオデータをコーディングするために発信元でソフトウェア及び/又はハードウェアをしばしば使用し、それによって、デジタルビデオ画像を表現するために必要なデータの量を低減する。圧縮されたデータは、次いで、ビデオデータをデコーディングするビデオ圧縮解除デバイスによって送り先で受信される。限られたネットワーク資源と、より高いビデオ品質の更に高まる需要とにより、ピクチャ品質を全く又はほとんど犠牲にせずに圧縮比を改善する改善された圧縮及び圧縮解除技術が望ましい。
【発明の概要】
【0003】
実施形態において、本開示は、デコーダで実施される方法であって、デコーダの受信器によって、第1スライスを含む複数のスライスにパーティション化されたピクチャのサブピクチャと、ピクチャ及びサブピクチャに関連したパラメータセットと、第1スライスに関連したスライスヘッダとを含むサブビットストリームを受信することと、デコーダのプロセッサによって、第1スライスの識別子及びスライスアドレスの長さを得るようパラメータセットをパースすることと、プロセッサによって、識別子及びスライスアドレスの長さに基づいてスライスヘッダから第1スライスのスライスアドレスを決定することと、プロセッサによって、第1スライスを含むサブピクチャのビデオシーケンスを生成するようサブビットストリームをデコーディングすることと、プロセッサによって、表示のためにサブピクチャのビデオシーケンスを転送することとを有する方法を含む。いくつかのビデオコーディングシステムで、スライス(タイルグループとしても知られる)は、インデックスの組に基づいてアドレッシングされ得る。そのようなインデックスは、ピクチャの左上隅でインデックスゼロから始まり、ピクチャの右下隅でインデックスNで終わるラスタスキャン順序において増えてよく、ここで、Nは、1を引いたインデックスの数である。そのようなシステムは、ほとんどのアプリケーションに対して上手く働く。しかし、仮想現実(VR)などの特定のアプリケーションは、ピクチャのサブピクチャしかレンダリングしない。サブビットストリームが、レンダリングされるべきサブピクチャを含む場合に、いくつかのシステムは、ビットストリームのサブビットストリームしかデコーダへ伝送しないことによって、VRコンテンツをストリーミングするときのコーディング効率を向上させ得る。そのような場合に、インデックスに基づいたアドレッシングスキームは、デコーダによって受信されるサブピクチャの左上隅が一般的にゼロ以外の何らかのインデックスであるために、正確に動作しなくなる可能性がある。そのような懸念に対処するために、エンコーダ(又は関連したスライサ)は、左上のインデックスがゼロから始まり、残りのサブピクチャスライスがそれに応じて調整されるように、サブピクチャのインデックスを変更するよう各スライスヘッダを書き直すことを求められることがある。スライスヘッダを(例えば、ユーザ要求ごとに)動的に書き直すことは、プロセッサ負荷が非常に大きいことがある。開示されているシステムは、スライスヘッダが書き直される必要なしに、サブピクチャを含むサブビットストリームを抽出することを可能にするアドレッシングスキームを採用する。各スライスは、インデックス以外の識別子(ID)(例えば、サブピクチャID)に基づいてアドレッシングされる。このようにして、デコーダは、どのサブピクチャが受信されるかにかかわらず、かつ、完全なピクチャの左上隅に対する受信されたサブピクチャの位置にかかわらず、全ての関係アドレスを一貫して決定することができる。IDが適宜定義される(例えば、エンコーダによって選択される)ということで、IDは、可変長フィールドの中にエンコーディングされる。従って、スライスアドレスの長さもシグナリングされる。サブピクチャに関連したIDもシグナリングされる。長さは、スライスアドレスを解釈するために用いられ、サブピクチャIDは、ピクチャに基づいた位置からサブピクチャに基づいた位置へスライスアドレスをマッピングするために用いられる。これらのメカニズムを採用することによって、エンコーダ、デコーダ、及び/又は関連するスライスは、改善され得る。例えば、サブビットストリームが、ビットストリーム全体の代わりに抽出され伝送されてよく、これは、ネットワーク資源、メモリ資源、及び/又はプロセッシング資源の利用を減らす。更に、そのようなサブビットストリームの抽出は、ユーザ要求ごとに各スライスヘッダを書き直さずに実行可能であり、これは、ネットワーク資源、メモリ資源、及び/又はプロセッシング資源の利用を更に減らす。
【0004】
任意に、上記の態様のいずれかにおいて、態様の他の実施は、識別子がサブピクチャと関連付けられる、ことを提供する。
【0005】
任意に、上記の態様のいずれかにおいて、態様の他の実施は、スライスアドレスの長さが、スライスアドレスに含まれているビットの数を示す、ことを提供する。
【0006】
任意に、上記の態様のいずれかにおいて、態様の他の実施は、第1スライスのスライスアドレスを決定することが、プロセッサによって、スライスヘッダからスライスアドレスを解釈するためのビット境界を決定するようパラメータセットから長さを用いることと、プロセッサによって、ピクチャに基づいた位置からサブピクチャに基づいた位置へスライスアドレスをマッピングするよう識別子及びスライスアドレスを用いることとを有する、ことを提供する。
【0007】
任意に、上記の態様のいずれかにおいて、態様の他の実施は、プロセッサによって、識別子(ID)フラグを得るようパラメータセットをパースすることを更に有し、IDフラグが、ピクチャに基づいた位置からサブピクチャに基づいた位置へスライスアドレスをマッピングするためにマッピングが利用可能であることを示す、ことを提供する。
【0008】
任意に、上記の態様のいずれかにおいて、態様の他の実施は、ピクチャに基づいた位置とサブピクチャに基づいた位置との間のマッピングが、スライスヘッダが書き直される必要なしに、スライスヘッダをサブピクチャにアライメントする、ことを提供する。
【0009】
任意に、上記の態様のいずれかにおいて、態様の他の実施は、スライスアドレスが、定義された値を有し、インデックスを有さない、ことを提供する。
【0010】
実施形態において、本開示は、エンコーダで実施される方法であって、エンコーダのプロセッサによって、ピクチャをビットストリームの中にエンコーディングすることであり、ピクチャは、第1スライスを含む複数のスライスを有する、ことと、プロセッサによって、ビットストリームの中に、第1スライスのスライスアドレスを含むスライスヘッダをエンコーディングすることと、プロセッサによって、ビットストリームの中に、第1スライスの識別子及びスライスアドレスの長さを含むパラメータセットをエンコーディングすることと、プロセッサによって、スライスヘッダを書き直さずに、第1スライスのスライスアドレスと、スライスアドレスの長さと、識別子とに基づいて第1スライスを抽出することによって、ビットストリームのサブビットストリームを抽出することと、エンコーダのメモリに、デコーダへの通信のためにサブビットストリームを記憶することとを有する方法を含む。いくつかのビデオコーディングシステムで、スライス(タイルグループとしても知られる)は、インデックスの組に基づいてアドレッシングされ得る。そのようなインデックスは、ピクチャの左上隅でインデックスゼロから始まり、ピクチャの右下隅でインデックスNで終わるラスタスキャン順序において増えてよく、ここで、Nは、1を引いたインデックスの数である。そのようなシステムは、ほとんどのアプリケーションに対して上手く働く。しかし、仮想現実(VR)などの特定のアプリケーションは、ピクチャのサブピクチャしかレンダリングしない。サブビットストリームが、レンダリングされるべきサブピクチャを含む場合に、いくつかのシステムは、ビットストリームのサブビットストリームしかデコーダへ伝送しないことによって、VRコンテンツをストリーミングするときのコーディング効率を向上させ得る。そのような場合に、インデックスに基づいたアドレッシングスキームは、デコーダによって受信されるサブピクチャの左上隅が一般的にゼロ以外の何らかのインデックスであるために、正確に動作しなくなる可能性がある。そのような懸念に対処するために、エンコーダ(又は関連したスライサ)は、左上のインデックスがゼロから始まり、残りのサブピクチャスライスがそれに応じて調整されるように、サブピクチャのインデックスを変更するよう各スライスヘッダを書き直すことを求められることがある。スライスヘッダを(例えば、ユーザ要求ごとに)動的に書き直すことは、プロセッサ負荷が非常に大きいことがある。開示されているシステムは、スライスヘッダが書き直される必要なしに、サブピクチャを含むサブビットストリームを抽出することを可能にするアドレッシングスキームを採用する。各スライスは、インデックス以外の識別子(ID)(例えば、サブピクチャID)に基づいてアドレッシングされる。このようにして、デコーダは、どのサブピクチャが受信されるかにかかわらず、かつ、完全なピクチャの左上隅に対する受信されたサブピクチャの位置にかかわらず、全ての関係アドレスを一貫して決定することができる。IDが適宜定義される(例えば、エンコーダによって選択される)ということで、IDは、可変長フィールドの中にエンコーディングされる。従って、スライスアドレスの長さもシグナリングされる。サブピクチャに関連したIDもシグナリングされる。長さは、スライスアドレスを解釈するために用いられ、サブピクチャIDは、ピクチャに基づいた位置からサブピクチャに基づいた位置へスライスアドレスをマッピングするために用いられる。これらのメカニズムを採用することによって、エンコーダ、デコーダ、及び/又は関連するスライスは、改善され得る。例えば、サブビットストリームが、ビットストリーム全体の代わりに抽出され伝送されてよく、これは、ネットワーク資源、メモリ資源、及び/又はプロセッシング資源の利用を減らす。更に、そのようなサブビットストリームの抽出は、ユーザ要求ごとに各スライスヘッダを書き直さずに実行可能であり、これは、ネットワーク資源、メモリ資源、及び/又はプロセッシング資源の利用を更に減らす。
【0011】
任意に、上記の態様のいずれかにおいて、態様の他の実施は、識別子がサブピクチャと関連付けられる、ことを提供する。
【0012】
任意に、上記の態様のいずれかにおいて、態様の他の実施は、スライスアドレスの長さが、スライスアドレスに含まれているビットの数を示す、ことを提供する。
【0013】
任意に、上記の態様のいずれかにおいて、態様の他の実施は、パラメータセット内の長さが、スライスヘッダからスライスアドレスを解釈するのに十分なデータを含み、識別子が、ピクチャに基づいた位置からサブピクチャに基づいた位置へスライスアドレスをマッピングするのに十分なデータを含む、ことを提供する。
【0014】
任意に、上記の態様のいずれかにおいて、態様の他の実施は、プロセッサによって、ピクチャに基づいた位置からサブピクチャに基づいた位置へスライスアドレスをマッピングするためにマッピングが利用可能であることを示す識別子(ID)フラグをパラメータセットの中にエンコーディングすることを更に有する、ことを提供する。
【0015】
任意に、上記の態様のいずれかにおいて、態様の他の実施は、スライスアドレスが、定義された値を有し、インデックスを有さない、ことを提供する。
【0016】
任意に、上記の態様のいずれかにおいて、態様の他の実施は、ビットストリームのサブビットストリームを抽出することが、ピクチャのサブピクチャを抽出することを含み、サブピクチャが第1スライスを含み、サブビットストリームが、サブピクチャと、スライスヘッダと、パラメータセットとを有する、ことを提供する。
【0017】
実施形態において、本開示は、プロセッサと、メモリと、プロセッサへ結合されている受信器と、プロセッサへ結合されている送信器とを有し、プロセッサ、メモリ、受信器、及び送信器が、上記の態様のいずれかの方法を実行するよう構成される、ビデオコーディングデバイスを含む。
【0018】
実施形態において、本開示は、ビデオコーディングデバイスによって使用されるコンピュータプログラム製品を有する非一時的なコンピュータ可読媒体であって、コンピュータプログラム製品が、プロセッサによって実行される場合に、ビデオコーディングデバイスに、上記の態様のいずれかの方法を実行させるように、非一時的なコンピュータ可読媒体に記憶されているコンピュータ実行可能命令を有する、非一時的なコンピュータ可読媒体を含む。
【0019】
実施形態において、本開示は、第1スライスを含む複数のスライスにパーティション化されたピクチャのサブピクチャと、ピクチャ及びサブピクチャに関連したパラメータセットと、第1スライスに関連したスライスヘッダとを含むサブビットストリームを受信する受信手段と、第1スライスの識別子及びスライスアドレスの長さを得るようパラメータセットをパースするパージング手段と、識別子及びスライスアドレスの長さに基づいてスライスヘッダから第1スライスのスライスアドレスを決定する決定手段と、第1スライスを含むサブピクチャのビデオシーケンスを生成するようサブビットストリームをデコーディングするデコーディング手段と、表示のためにサブピクチャのビデオシーケンスを転送する転送手段とを有するデコーダを含む。
【0020】
任意に、上記の態様のいずれかにおいて、態様の他の実施は、デコーダが、上記の態様のいずれかの方法を実行するよう更に構成される、ことを提供する。
【0021】
実施形態において、本開示は、ピクチャをビットストリームの中にエンコーディングし、ピクチャは、第1スライスを含む複数のスライスを有し、ビットストリームの中に、第1スライスのスライスアドレスを含むスライスヘッダをエンコーディングし、ビットストリームの中に、第1スライスの識別子及びスライスアドレスの長さを含むパラメータセットをエンコーディングするエンコーディング手段と、スライスヘッダを書き直さずに、第1スライスのスライスアドレスと、スライスアドレスの長さと、識別子とに基づいて第1スライスを抽出することによって、ビットストリームのサブビットストリームを抽出する抽出手段と、デコーダへの通信のためにサブビットストリームを記憶する記憶手段とを有するエンコーダを含む。
【0022】
任意に、上記の態様のいずれかにおいて、態様の他の実施は、エンコーダが、上記の態様のいずれかの方法を実行するよう更に構成される、ことを提供する。
【0023】
明りょうさのために、上記の実施形態のいずれか1つは、本開示の範囲内で新しい実施形態をもたらすよう、他の上記の実施形態のいずれか1つ以上と組み合わされてよい。
【0024】
これら及び他の特徴は、添付の図面及び特許請求の範囲と併せて読まれる以下の詳細な説明から、より明りょうに理解されるだろう。
【0025】
本開示のより完全な理解のために、これより、添付の図面及び詳細な説明と併せて読まれる、次の簡単な説明が参照される。同じ参照番号は同じ部分を表す。
【図面の簡単な説明】
【0026】
【
図1】ビデオ信号をコーディングする方法の例のフローチャートである。
【
図2】ビデオコーディングのためのコーディング及びデコーディング(コーデック)システムの例の概略図である。
【
図5】ビットストリームから抽出されたサブビットストリームの例を表す概略図である。
【
図6】コーディングのためにパーティション化されたピクチャの例を表す概略図である。
【
図7】ピクチャから抽出されたサブピクチャの例を表す概略図である。
【
図8】例となるビデオコーディングデバイスの概略図である。
【
図9】明示的アドレスシグナリングを採用することによって、スライスヘッダを書き直さずに、サブピクチャのサブビットストリームの抽出を支援するようピクチャのビットストリームをエンコーディングする方法の例のフローチャートである。
【
図10】明示的アドレスシグナリングを採用することによってサブピクチャのサブビットストリームをデコーディングする方法の例のフローチャートである。
【
図11】明示的アドレスシグナリングを採用することによってサブピクチャのサブビットストリームを伝送するシステムの例の概略図である。
【発明を実施するための形態】
【0027】
1つ以上の実施形態の例示的な実施が以下で与えられるが、開示されるシステム及び/又は方法は、現在知られているか又は存在しているかどうかに関わらず、任意の数の技術を用いて実施されてよい、ことがまず理解されるべきである。開示は、ここで図示及び記載されている例となる設計及び実施を含む、以下で説明される例示的な実施、図面、及び技術に決して限定されるべきではなく、添付の特許請求の範囲及びその均等の全範囲内で変更されてもよい。
【0028】
coding tree block(CTB)、coding tree unit(CTU)、coding unit(CU)、coded video sequence(CVS)、Joint Video Experts Team(JVET)、motion constrained tile set(MCTS)、maximum transfer unit(MTU)、network abstraction layer(NAL)、picture order count(POC)、raw byte sequence payload(RBSP)、sequence parameter set(SPS)、versatile video coding(VVC)、及びworking draft(WD)などの様々な頭字語が、ここでは用いられている。
【0029】
多くのビデオ圧縮技術は、最小限のデータ損失でビデオファイルのサイズを低減するために用いられ得る。例えば、ビデオ圧縮技術は、ビデオシーケンス内のデータ冗長性を低減又は排除するよう空間(例えば、イントラピクチャ)予測及び/又は時間(例えば、インターピクチャ)予測を実行することを含むことができる。ブロックベースのビデオコーディングについては、ビデオスライス(例えば、ビデオピクチャ又はビデオピクチャの部分)は、ツリーブロック、コーディングツリーブロック(CTB)、コーディングツリーユニット(CTU)、コーディングユニット(CU)、及び/又はコーディングノードとも呼ばれ得るビデオブロックにパーティション化されてよい。ピクチャのイントラコーディング(I)されたスライス内のビデオブロックは、同じピクチャ内の隣接ブロック内の参照サンプルに関して空間予測を用いてコーディングされる。ピクチャのインターコーディングされた一方向予測(P)又は双方向予測(B)スライス内のビデオブロックは、同じピクチャ内の隣接ブロック内の参照ピクチャに関して空間予測を、又は他の参照ピクチャ内の参照サンプルに関して時間予測を用いることによって、コーディングされてよい。ピクチャは、フレーム及び/又は画像と呼ばれることがあり、参照ピクチャは、参照フレーム及び/又は参照画像と呼ばれることがある。空間又は時間予測は、画像ブロックを表す予測ブロックをもたらす。残差データは、原画像ブロックと予測ブロックとの間のピクセル差分を表す。従って、インターコーディングされたブロックは、予測ブロックを形成する参照サンプルのブロックを指し示す動きベクトルと、コーディングされたブロックと予測ブロックとの間の差分を示す残差データとに従って、エンコーディングされる。イントラコーディングされたブロックは、イントラコーディングモード及び残差データに従ってエンコーディングされる。更なる圧縮のために、残差データは、ピクセル領域から変換領域へ変換されてよい。これらは残差変換係数をもたらし、これは量子化されてよい。量子化された変換係数は、最初に2次元配列で配置されてよい。量子化された変換係数は、変換係数の1次元ベクトルを生成するためにスキャンされてよい。エントロピコーディングが、より一層の圧縮を達成するよう適用されてもよい。このようなビデオ圧縮技術については、以下で更に詳細に説明される。
【0030】
エンコーディングされたビデオが正確にデコーディングされ得ることを確かにするために、ビデオは、対応するビデオコーディング規格に従ってエンコーディング及びデコーディングされる。ビデオコーディング規格は、国際電気通信連合(ITU)標準化部門(ITU-T)H.261、国際標準化機構/国際電気標準会議(ISO/IEC)動画専門家集団(MPEG)-1 Part 2、ITU-T H.262又はISO/IEC MPEG-2 Part2、ITU-T H.263、ISO/IEC MPEG-4 Part 2、ITU-T H.264又はISO/IEC MPEG-4 Part 10としても知られているアドバンスド・ビデオ・コーディング(AVC)、及びITU-T H.265又はMPEG-H Part 2としても知られている高効率ビデオコーディング(HEVC)を含む。AVCは、スケーラブル・ビデオ・コーディング(SVC)、マルチビュー・ビデオ・コーディング(MVC)及びマルチビュー・ビデオ・コーディング・プラス・デプス(MVC+D)、並びに3次元(3D)AVC(3D-AVC)などの拡張を含む。HEVCは、スケーラブルHEVC(SHVC)、マルチビューHEVC(MV-HEVC)、及び3D HEVC(3D-HEVC)などの拡張を含む。ITU-TとISO/IECとの共同ビデオ専門家部会(JVET)は、バーサタイル・ビデオ・コーディング(VVC)と呼ばれるビデオコーディング規格を開発することを開始している。VVCは、JVET-L1001を含むワーキング・ドラフト(WD)に含まれている。
【0031】
ビデオ画像をコーディングするために、画像は最初にパーティション化され、パーティションがビットストリーム内にコーディングされる。様々なピクチャパーティション化スキームが利用可能である。例えば、画像は、規則的なスライス、従属的なスライス、タイルへと、及び/又は波面並列処理(WPP)に従ってパーティション化され得る。簡単のために、HEVCは、規則的なスライス、従属的なスライス、タイル、WPP、及びこれらの組み合わせしか、ビデオコーディングのためのCTBのグループにスライスをパーティション化するときに使用され得ないように、エンコーダを制限する。このようなパーティション化は、最大変換ユニット(MTU)サイズの一致、並列処理、及び低減されたエンド間遅延をサポートするよう適用され得る。MTUは、単一パケットで伝送され得るデータの最大量を表す。パケットペイロードがMTUを超える場合に、そのペイロードは、断片化と呼ばれるプロセスを通じて2つのパケットに分裂される。
【0032】
単にスライスとも呼ばれる規則的なスライスは、ループフィルタリング動作によるいくらかの相互依存性にも関わらず、同じピクチャ内の他の規則的なスライスから独立して再構成され得る画像のパーティション化された部分である。夫々の規則的なスライスは、伝送のためにそれ自体のネットワーク抽象化レイヤ(NAL)ユニットにおいてカプセル化される。更に、ピクチャ内予測(イントラサンプル予測、動き情報予測、コーディングモード予測)及びスライス境界にわたるエントロピコーディング依存性は、独立した再構成をサポートするよう無効にされてよい。このような独立した再構成は並列化をサポートする。例えば、規則的なスライスに基づく並列化は、最低限のプロセッサ間又はコア間通信を用いる。しかし、夫々の規則的なスライスは独立しているということで、各スライスは別個のスライスヘッダと関連付けられる。規則的なスライスの使用は、各スライスのためのスライスヘッダのビットコストにより、且つ、スライス境界にわたる予測の欠如により、相当なコーディングオーバーヘッドを招く可能性がある。更に、規則的なスライスは、MTUサイズの一致の要件をサポートするために用いられることがある。具体的には、規則的なスライスは別個のNALユニットにおいてカプセル化され、独立してコーディングされ得るということで、夫々の規則的なスライスは、そのスライスを複数のパケットに分けることを回避するために、MTUスキームにおけるMTUよりも小さくなければならない。そのようなものとして、並列化の目標及びMTUサイズの一致の目標は、矛盾した要求をピクチャ内のスライスレイアウトに突きつける可能性がある。
【0033】
従属的なスライスは、規則的なスライスと類似しているが、短くされたスライスヘッダを有し、ピクチャ内予測を中断せずに画像ツリーブロック境界のパーティション化を可能にする。従って、従属的なスライスは、規則的なスライスが複数のNALユニットに断片化されることを可能にし、これは、規則的なスライス全体のエンコーディングが完了する前に規則的なスライスの一部が送出されることを可能にすることによって、低減されたエンド間遅延をもたらす。
【0034】
タイルは、タイルの列及び行を作る水平及び垂直境界によって作られた画像のパーティション化された部分である。タイルは、ラスタスキャン順序(右から左及び上から下)でコーディングされてよい。CTBのスキャン順序はタイル内で局所的である。従って、第1タイル内のCTBは、次のタイル内のCTBに対する処理の前に、ラスタスキャン順序でコーディングされる。規則的なスライスと同様に、タイルは、エントロピデコーディング従属性に加えてピクチャ内予測従属性も崩す。しかし、タイルは、個々のNALユニットに含まれなくてもよく、従って、タイルは、MTUサイズの一致のために使用されなくてもよい。各タイルは、1つのプロセッサ/コアによって処理可能であり、隣接するタイルをデコーディングする処理ユニット間でピクチャ内予測のために用いられるプロセッサ間/コア間通信は、(隣接するタイルが同じスライス内にある場合に)共有スライスヘッダを運ぶことと、再構成されたサンプル及びメタデータのループフィルタリングに関連した共有を実行することとに制限されてよい。1つよりも多いタイルがスライスに含まれる場合に、スライス内の最初のエントリポイントオフセット以外の各タイルのためのエントリポイントバイトオフセットは、スライスヘッダでシグナリングされてよい。夫々のスライス及びタイルについて、次の条件:1)スライス内の全てのコーディングされたツリーブロックは同じタイルに属すること、及び2)タイル内の全てのコーディングされたツリーブロックは同じスライスに属すること、のうちの少なくとも1つが満たされるべきである。
【0035】
WPPでは、画像は、CTBの単一の行にパーティション化される。エントロピデコーディング及び予測メカニズムは、他の行内のCTBからのデータを使用してよい。並列処理は、CTB行の並列デコーディングを通じて可能にされる。例えば、現在の行は、先行する行と並行してデコーディングされてよい。しかし、現在の行のデコーディングは、2つのCTBだけ、先行する行のデコーディングプロセスから遅延する。この遅延は、現在の行内の現在のCTBの上のCTB及び右上のCTBに関するデータが、現在のCTBがコーディングされる前に利用可能であることを確かにする。このアプローチは、グラフィカルに表現される場合に波面として現れる。この時差スタートは、画像に含まれるCTB行と同じ数以下のプロセッサ/コアによる並列化を可能にする。ピクチャ内の隣接するツリーブロック行間のピクチャ内予測が許可されるので、ピクチャ内予測を可能にするためのプロセッサ間/コア間通信はかなりの量になる可能性がある。WPPパーティション化はNALユニットサイズを考慮しない。従って、WPPは、MTUサイズ一致をサポートしない。しかし、規則的なスライスは、望まれるようにMTUサイズ一致を実装するために、特定のコーディングオーバーヘッドを伴って、WPPとともに使用され得る。
【0036】
タイルはまた、動きを制約されたタイルセットを含んでもよい。動きを制約されたタイルセット(motion constrained tile set,MCTS)は、関連した動きベクトルが、MCTS内の完全サンプル位置と、補間のためにMCTS内の完全サンプル位置しか必要としない分数サンプル位置とを指し示すよう制限されるように設計されたタイルセットである。更に、MCTSの外にあるブロックから導出された時間動きベクトル予測のための動きベクトル候補の利用は、認められない。このようにして、各MCTSは、MCTSに含まれていないタイルの存在なしで、独立してデコーディングされ得る。時間MCTS捕足エンハンスメント情報(supplemental enhancement information,SEI)メッセージが、ビットストリーム内のMCTSの存在を示し、MCTSをシグナリングするために、使用されてもよい。MCTS SEIメッセージは、MCTSセットのための適合ビットストリームを生成するためにMCTSサブビットストリーム抽出(SEIメッセージのセマンティクスの部分として指定される)において使用され得る補足情報を提供する。情報は、夫々が多数のMCTSセットを定義し、かつ、MCTSサブビットストリーム抽出プロセス中に使用される置換ビデオパラメータセット(video parameter set,VPS)、シーケンスパラメータセット(SPS)、及びピクチャパラメータセット(PPS)のローバイトシーケンスペイロード(raw bytes sequence payload,RBSP)バイトを含む多数の抽出情報セットを含む。MCTSサブビットストリーム抽出プロセスに従ってサブビットストリームを抽出するとき、パラメータセット(VPS、SPS、及びPPS)は、書き直されるか又は置換されてよく、スライスヘッダは、スライスアドレスに関連したシンタックス要素(first_slice_segment_in_pic_flag及びslice_segment_addressを含む)の1つ又は全てが、抽出されたサブビットストリーム内の異なる値を用い得るので、更新されてよい。
【0037】
上記のスキームは、ある問題を含むことがある。いくつかのシステムで、ピクチャに1つよりも多いタイル/スライスがあるとき、タイルグループのアドレスは、tile_group_addressなどのシンタックス要素を使用することによってタイルグループヘッダでインデックスとしてシグナリングされてよい。tile_group_addressは、タイルグループ内の最初のタイルのタイルアドレスを特定する。tile_group_addressの長さは、Ceil(Log2(NumTilesInPic))ビットと決定されてよく、NumTilesInPicは、ピクチャ内のタイルの数を含む。tile_group_addressの値は、ゼロ以上NumTilesInPic-1以下の範囲内にあってよく、tile_group_addressの値は、同じコーディングされたピクチャのいずれかの他のコーディングされたタイルグループNALユニットのtile_group_addressの値と等しくなくてもよい。tile_group_addressは、ビットストリームに存在しないときは、ゼロであると推測され得る。上述されたタイルアドレスは、タイルインデックスを含む。しかし、タイルグループごとにアドレスとしてタイルインデックスを使用することは、いくらかのコーディング効率の悪さを招くことがある。
【0038】
例えば、ある使用ケースは、ビットストリームをデコーダへ渡す直前にクライアント側で、あるいは、何らかのネットワークベースのメディア処理エンティティで、エンコーディングとデコーディングとの間でAVC又はHEVCスライスセグメントヘッダの変更を必要とすることがある。そのような使用ケースの一例は、タイル化ストリーミングである。タイルストリーミングでは、パノラマビデオがHEVCタイルを用いてエンコーディングされるが、デコーダはこれらのタイルの一部しかデコーディングしない。SPS/PPSとともにHEVCスライスセグメントヘッダ(slice segment header,SSH)を書き直すことによって、ビットストリームは、デコーディングされるタイルのサブセット及びデコーディングされたビデオフレーム内のそれらの空間配置を変更するために、操作され得る。このCPU処理コストの1つの理由は、AVC及びHEVCスライスセグメントヘッダが可変長フィールドを使用し、最後にバイトアライメントフィールドを有するという事実である。このことは、SSH内のあるフィールドがいつ変更されようとも、このことがSSHの終わりにあるバイトアライメントフィールドに影響を及ぼす可能性があり、それもその場合に書き直されることを意味する。そして、全てのフィールドが可変長でエンコーディングされるので、バイトアライメントフィールドの位置を知る唯一の方法は、先行する全てのフィールドをパースすることである。このことは、特に、タイルが使用され、1秒に相当するビデオが数百のNALを含む可能性がある場合に、相当な処理オーバーヘッドを招く。いくつかのシステムは、明示的にタイル識別子(ID)をシグナリングすることをサポートする。しかし、いくつかのシンタックス要素は、最適化されないことがあり、シグナリング時に不必要な及び/又は冗長なビットを含む可能性がある。更に、明示的なタイルIDシグナリングに関連付けられているいくつかの制約は特定されない。
【0039】
例えば、上記のメカニズムは、ピクチャがパーティション化及び圧縮されることを可能にする。例えば、ピクチャは、スライス、タイル、及び/又はタイルグループにパーティション化され得る。いくつかの例において、タイルグループは、スライスと同義的に使用されてよい。そのようなスライス及び/又はタイルグループは、インデックスの組に基づいてアドレッシングされてよい。そのようなインデックスは、ピクチャの左上隅でインデックスゼロから始まり、ピクチャの右下隅でインデックスNで終わるラスタスキャン順序において増えてよい。この場合に、Nは、1を引いたインデックスの数である。そのようなシステムは、ほとんどのアプリケーションに対して上手く働く。しかし、仮想現実(VR)などの特定のアプリケーションは、ピクチャのサブピクチャしかレンダリングしない。そのようなサブピクチャは、いくつかの状況で関心領域と呼ばれることがある。サブビットストリームが、レンダリングされるべきサブピクチャを含む場合に、いくつかのシステムは、ビットストリームのサブビットストリームしかデコーダへ伝送しないことによって、VRコンテンツをストリーミングするときのコーディング効率を向上させ得る。そのような場合に、インデックスに基づいたアドレッシングスキームは、デコーダによって受信されるサブピクチャの左上隅が一般的にゼロ以外の何らかのインデックスであるために、正確に動作しなくなる可能性がある。そのような懸念に対処するために、エンコーダ(又は関連したスライサ)は、左上のインデックスがゼロから始まり、残りのサブピクチャスライスがそれに応じて調整されるように、サブピクチャのインデックスを変更するよう各スライスヘッダを書き直すことを求められることがある。スライスヘッダを(例えば、ユーザ要求ごとに)動的に書き直すことは、プロセッサ負荷が非常に大きいことがある。
【0040】
ここでは、ピクチャを含むエンコーディングされたビットストリームからサブピクチャを含むサブビットストリームを抽出するときに、コーディング効率を向上させかつ処理オーバーヘッドを減らすための様々なメカニズムが、開示されている。開示されているシステムは、スライスヘッダが書き直される必要なしに、サブピクチャを含むサブビットストリームを抽出することを可能にするアドレッシングスキームを採用する。各スライス/タイルグループは、インデックス以外のIDに基づいてアドレッシングされる。例えば、スライスは、インデックスにマッピングされてスライスヘッダに格納され得る値によって、アドレッシングされ得る。このことは、デコーダが、スライスヘッダからスライスアドレスを読み出し、アドレスを、ピクチャに基づいた位置からサブピクチャに基づいた位置へマッピングすることを可能にする。スライスアドレスが予め定義されたインデックスではないということで、スライスアドレスは、可変長フィールドの中にエンコーディングされる。従って、スライスアドレスの長さもシグナリングされる。サブピクチャに関連したIDもシグナリングされる。サブピクチャID及び長さは、PPSでシグナリングされてよい。フラグも、明示的アドレッシングスキームが採用されていることを示すために、PPSでシグナリングされてよい。フラグを読むことで、デコーダは、長さ及びサブピクチャIDを取得することができる。長さは、スライスヘッダからスライスアドレスを解釈するために用いられる。サブピクチャIDは、ピクチャに基づいた位置からサブピクチャに基づいた位置へスライスアドレスをマッピングするために用いられる。このようにして、デコーダは、どのサブピクチャが受信されるかにかかわらず、かつ、完全なピクチャの左上隅に対する受信されたサブピクチャの位置にかかわらず、全ての関係アドレスを一貫して決定することができる。更に、このメカニズムは、そのような決定が、スライスアドレス値を変更するようスライスヘッダを書き直さずに、かつ/あるいは、スライスアドレスに関連したバイトアライメントフィールドを変更せずに、行われることを可能にする。上記のメカニズムを採用することによって、エンコーダ、デコーダ、及び/又は関連するスライスは、改善され得る。例えば、サブビットストリームが、ビットストリーム全体の代わりに抽出され伝送されてよく、これは、ネットワーク資源、メモリ資源、及び/又はプロセッシング資源の利用を減らす。更に、そのようなサブビットストリームの抽出は、ユーザ要求ごとに各スライスヘッダを書き直さずに実行可能であり、これは、ネットワーク資源、メモリ資源、及び/又はプロセッシング資源の利用を更に減らす。
【0041】
図1は、ビデオ信号をコーディングする、例となる動作方法100のフローチャートである。具体的に、ビデオ信号はエンコーダでエンコーディングされる。エンコーディングプロセスは、ビデオファイルサイズを低減するために様々なメカニズムを用いることによってビデオ信号を圧縮する。より小さいファイルサイズは、関連した帯域幅オーバーヘッドを低減しながら、圧縮されたビデオファイルがユーザに向けて伝送されることを可能にする。次いで、デコーダは、圧縮されたビデオファイルをデコーディングして、エンドユーザへの表示のための元のビデオ信号を再構成する。デコーディングプロセスは、一般的に、デコーダが一貫してビデオ信号を再構成することを可能にするよう、エンコーディングプロセスを反映する。
【0042】
ステップ101で、ビデオ信号がエンコーダに入力される。例えば、ビデオ信号は、メモリに記憶されている未圧縮ビデオファイルであってよい。他の例として、ビデオファイルは、ビデオカメラなどのビデオ捕捉デバイスによって捕捉され、ビデオのライブストリーミングをサポートするようエンコーディングされてよい。ビデオファイルは、オーディオ成分及びビデオ成分の両方を含んでよい。ビデオ成分は、連続して見られる場合に、動きの視覚的印象を与える一連の画像フレームを含む。フレームは、ここでルーマ成分(又はルーマサンプル)と呼ばれる光と、クロマ成分(又は色サンプル)と呼ばれる色とに関して表現されるピクセルを含む。いくつかの例では、フレームはまた、3次元表示をサポートするためのデプス値も含んでもよい。
【0043】
ステップ103で、ビデオはブロックにパーティション化される。パーティション化は、各フレーム内のピクセルを圧縮のために正方形及び/又は長方形ブロックに細分することを含む。例えば、高効率ビデオコーディング(HEVC)(H.265及びMPEG-H Part2として知られる)では、フレームは最初に、予め定義されたサイズ(例えば、64×64ピクセル)のブロックであるコーディングツリーユニット(CTU)に分割され得る。CTUは、ルーマ及びクロマサンプルの両方を含む。コーディングツリーは、CTUをブロックに分割し、次いで、更なるエンコーディングをサポートする構成が達成されるまで、ブロックを再帰的に細分するために用いられてよい。例えば、フレームのルーマ成分は、個々のブロックが比較的に一様な明暗値を含むまで細分されてよい。更に、フレームのクロマ成分は、個々のブロックが比較的に一様な色値を含むまで細分されてよい。従って、パーティション化メカニズムは、ビデオフレームの内容に応じて変化する。
【0044】
ステップ105で、ステップ103でパーティション化された画像ブロックを圧縮するよう様々な圧縮メカニズムが用いられる。例えば、インター予測及び/又はイントラ予測が用いられてよい。インター予測は、共通のシーン内の対象物が連続したフレームで現れる傾向がある、という事実を利用するよう設計される。従って、参照フレーム内の対象物を表すブロックは、隣接するフレームで繰り返し記述される必要がない。具体的に、テーブルなどの対象物は、複数のフレームにわたって定位置のままであることがある。従って、テーブルは一度記述され、隣接するフレームは参照フレームを参照し直すことができる。パターンマッチングメカニズムが、複数のフレームにわたって対象物を照合するために用いられてもよい。更に、動いている対象物が、例えば、対象物の運動又はカメラの運動により、複数のフレームにわたって表現されることがある。具体例として、ビデオは、複数のフレームにわたって画面を横切って動く自動車を示すことがある。動きベクトルは、そのような運動を記述するために用いられ得る。動きベクトルは、あるフレーム内の対象物の座標から参照フレーム内の対象物の座標へのオフセットを提供する2次元ベクトルである。そのようなものとして、インター予測は、現在のフレーム内の画像ブロックを、参照フレーム内の対応するブロックからのオフセットを示す動きベクトルの組としてエンコーディングすることができる。
【0045】
イントラ予測は、共通のフレーム内のブロックをエンコーディングする。イントラ予測は、ルーマ及びクロマ成分がフレーム内で群がる傾向がある、という事実を利用する。例えば、木の一部分にある緑色のパッチは、緑色の同様のパッチに隣接して位置している傾向がある。イントラ予測は、複数の指向性予測モード(例えば、HEVCでは33個)、プレーナーモード、及び直流(DC)モードを用いる。指向性モードは、現在のブロックが、対応する方向にある隣接ブロックのサンプルと類似している/同じであることを示す。プレーナーモードは、行/列(例えば、平面)に沿った一連のブロックが行の端にある隣接ブロックに基づいて補間され得ることを示す。プレーナーモードは、事実上、変化する値の比較的に一定の傾きを用いることによって、行/列にわたる光/色の滑らかな遷移を示す。DCモードは、境界平滑化のために用いられ、ブロックが、指向性予測モードの角度方向に関連した全ての隣接ブロックのサンプルに関連した平均値と類似している/同じであることを示す。従って、イントラ予測ブロックは、実際の値の代わりに、様々な関連した予測モード値として画像ブロックを表すことができる。更に、インター予測ブロックは、実際の値の代わりに動きベクトルとして画像ブロックを表すことができる。いずれの場合にも、予測ブロックは、いくつかの場合に正確に画像ブロックを表さないことがある。如何なる差分も残差ブロックで保存される。変換は、ファイルを更に圧縮するよう残差ブロックに適用されてよい。
【0046】
ステップ107で、様々なフィルタリング技術が適用されてよい。HEVCでは、フィルタは、インループフィルタリングスキームに従って適用される。上述されたブロックに基づく予測は、デコーダで、ブロックノイズのある画像の生成を引き起こす可能性がある。更に、ブロックに基づく予測スキームは、ブロックをエンコーディングし、それから、エンコーディングされた画像を参照ブロックとしての後の使用のために再構成してよい。インループフィルタリングスキームは、ノイズ抑制フィルタ、デブロッキングフィルタ、適応ループフィルタ、及びサンプル適応オフセット(SAO)フィルタをブロック/フレームに繰り返し適用する。これらのフィルタは、エンコーディングされたファイルが正確に再構成され得るように、そのようなブロッキングアーチファクトを軽減する。更に、これらのフィルタは、アーチファクトが、再構成された参照ブロックに基づいてエンコーディングされるその後のブロックで更なるアーチファクトを引き起こす可能性が低くなるように、再構成された参照ブロックでのアーチファクトを軽減する。
【0047】
ビデオ信号がパーティション化、圧縮、及びフィルタ処理されると、結果として得られるデータは、ステップ109で、ビットストリームの中にエンコーディングされる。ビットストリームは、デコーダでの適切なビデオ信号再構成をサポートするために望ましいあらゆるシグナリングデータに加えて、上記のデータも含む。例えば、このようなデータは、パーティションデータ、予測データ、残差ブロック、及びデコーダへコーディング命令を与える様々なフラグを含んでよい。ビットストリームは、要求時のデコーダに向けた伝送のために、メモリに記憶されてよい。ビットストリームはまた、複数のデコーダに向けたブロードキャスト及び/又はマルチキャストであってもよい。ビットストリームの生成は、反復プロセスである。従って、ステップ101、103、105、107、及び109は、多数のフレーム及びブロックにわたって連続して及び/又は同時に行われてよい。
図1に示されている順序は、議論の明りょうさ及び容易さのために提示されており、ビデオコーディングプロセスを特定の順序に限定する意図はない。
【0048】
デコーダは、ビットストリームを受け取り、ステップ111でデコーディングプロセスを開始する。具体的に、デコーダは、ビットストリームを対応するシンタックス及びビデオデータに変換するためにエントロピデコーディングスキームを用いる。デコーダは、ステップ111でフレームのパーティションを決定するためにビットストリームからのシンタックスデータを用いる。パーティション化は、ステップ103でのブロックパーティション化の結果と一致すべきである。ステップ111で用いられるエントロピエンコーディング/デコーディングがこれより説明される。エンコーダは、入力画像内の値の空間位置付けに基づいていくつかの可能な選択からブロックパーティション化スキームを選択することといった多くの選択を圧縮プロセス中に行う。正確な選択をシグナリングすることは、多数のビンを用いる可能性がある。ここで使用されるように、ビンは、変数(例えば、状況に応じて変化し得るビット値)として扱われるバイナリ値である。エントロピコーディングは、エンコーダが、許容可能な選択肢の組を残しながら、特定の場合について明らかに実行可能でない如何なる選択肢も捨てることを可能にする。夫々の許容可能な選択肢は、次いで、コードワードを割り当てられる。コードワードの長さは、許容可能な選択肢の数に依存する(例えば、2つの選択肢については1つのビン、3つ乃至4つの選択肢については2つのビン、など)。エンコーダは、次いで、選択された選択肢についてのコードワードをエンコーディングする。このスキームは、コードワードが、全ての可能な選択肢の潜在的に大きい集合からの選択を一意に示すこととは対照的に、許容可能な選択肢の小さい部分集合からの選択を一意に示すために望まれる大きさであるということで、コードワードのサイズを低減する。デコーダは、次いで、エンコーダと同様の方法で、許容可能な選択肢の組を決定することによって選択をデコーディングする。許容可能な選択肢の組を決定することによって、デコーダは、コードワードを読み出し、エンコーダによって行われた選択を決定することができる。
【0049】
ステップ113で、デコーダは、ブロックデコーディングを実行する。具体的に、デコーダは、残差ブロックを生成するために逆変換を用いる。次いで、デコーダは、パーティション化に従って画像ブロックを再構成するために残差ブロック及び対応する予測ブロックを用いる。予測ブロックは、ステップ105でエンコーダで生成されたイントラ予測ブロック及びインター予測ブロックの両方を含んでよい。再構成された画像ブロックは、次いで、ステップ111で決定されたパーティション化データに従って、再構成されたビデオ信号のフレーム内に位置付けられる。ステップ113のためのシンタックスも、上述されたように、エントロピコーディングを介してビットストリームでシグナリングされてよい。
【0050】
ステップ115で、フィルタリングが、エンコーダでのステップ107に類似した方法で、再構成されたビデオ信号のフレームに対して実行される。例えば、ノイズ抑制フィルタ、デブロッキングフィルタ、適応ループフィルタ、及びSAOフィルタが、ブロッキングアーチファクトを除くようフレームに適用されてよい。フレームがフィルタ処理されると、ビデオ信号は、エンドユーザによる視聴のために、ステップ117でディスプレイへ出力され得る。
【0051】
図2は、ビデオコーディングのための、例となるコーディング及びデコーディング(コーデック)システム200の概略図である。具体的に、コーデックシステム200は、動作方法100の実施をサポートするための機能性を提供する。コーデックシステム200は、エンコーダ及びデコーダの両方で用いられるコンポーネントを表すよう一般化されている。コーデックシステム200は、動作方法100のステップ101及び103に関して説明されたように、ビデオ信号を受信しパーティション化し、これにより、パーティション化されたビデオ信号201が得られる。コーデックシステム200は、次いで、方法100のステップ105、107、及び109に関して説明されたようにエンコーダとして動作する場合には、パーティション化されたビデオ信号201を、コーディングされたビットストリームへと圧縮する。デコーダとして動作する場合には、コーデックシステム200は、動作方法100のステップ111、113、115、及び117に関して説明されたように、ビットストリームから出力ビデオ信号を生成する。コーデックシステム200は、汎用コーダ制御コンポーネント211、変換スケーリング及び量子化コンポーネント213、イントラピクチャ推定コンポーネント215、イントラピクチャ予測コンポーネント217、動き補償コンポーネント219、動き推定コンポーネント221、スケーリング及び逆変換コンポーネント229、フィルタ制御解析コンポーネント227、インループフィルタコンポーネント225、デコーディングピクチャバッファコンポーネント223、並びにヘッダフォーマッティング及びコンテキスト適応バイナリ算術コーディング(context adaptive binary arithmetic coding,CABAC)コンポーネント231を含む。このようなコンポーネントは、示されているように結合される。
図2では、黒線は、エンコーディング/デコーディングされるべきデータの移動を示し、一方、破線は、他のコンポーネントの動作を制御する制御データの移動を示す。エンコーダには、コーデックシステム200のコンポーネントが全て存在してよい。デコーダは、コーデックシステム200のコンポーネントのサブセットを含んでよい。例えば、デコーダは、イントラピクチャ予測コンポーネント217、動き補償コンポーネント219、スケーリング及び逆変換コンポーネント229、インループフィルタコンポーネント225、及びデコーディングピクチャバッファコンポーネント223を含んでよい。これらのコンポーネントがこれより説明される。
【0052】
パーティション化されたビデオ信号201は、コーディングツリーによってピクセルのブロックにパーティション化されている捕捉されたビデオシーケンスである。コーディングツリーは、ピクセルのブロックをピクセルのより小さいブロックに細分するために様々な分裂モードを用いる。これらのブロックは、次いで、より小さいブロックに更に細分され得る。ブロックは、コーディングツリー上のノードと呼ばれることがある。より大きい親ノードは、より小さい子ノードに分裂される。ノードが細分される回数は、ノード/コーディングツリーのデプスと呼ばれる。分割されたブロックは、いくつかの場合にコーディングユニット(CU)に含まれ得る。例えば、CUは、ルーマブロック、赤色差分クロマ(Cr)ブロック及び青色差分クロマ(Cb)ブロックを、CUの対応するシンタックス命令とともに含むCTUのサブ部分であることができる。分裂モードは、ノードを、用いられている分裂モードに応じて形状が変化する2つ、3つ、又は4つの子ノードに夫々パーティション化するために用いられる二分木(BT)、三分木(TT)、及び四分木(QT)を含んでよい。パーティション化されたビデオ信号201は、汎用コーダ制御コンポーネント211、変換スケーリング及び量子化コンポーネント213、イントラピクチャ推定コンポーネント215、フィルタ制御解析コンポーネント227、及び動き推定コンポーネント221へ圧縮のために転送される。
【0053】
汎用コーダ制御コンポーネント211は、適用制約に従って、ビットストリーム内へのビデオシーケンスの画像のコーディングに関する決定を行うよう構成される。例えば、汎用コーダ制御コンポーネント211は、再構成品質に対するビットレート/ビットストリームサイズの最適化を管理する。このような決定は、記憶空間/帯域幅の利用可能性及び画像解像度の要求に基づいて行われてよい。汎用コーダ制御コンポーネント211はまた、バッファアンダーラン及びオーバーラン問題を軽減するよう伝送速度に照らしてバッファ利用も管理する。これらの問題を管理するために、汎用コーダ制御コンポーネント211は、他のコンポーネントによるパーティション化、予測、及びフィルタリングを管理する。例えば、汎用コーダ制御コンポーネント211は動的に、解像度を増大させ且つバンド幅利用を増大させるよう圧縮複雑性を増大させるか、あるいは、解像度及びバンド幅利用を低減させるよう圧縮複雑性を低減させ得る。従って、汎用コーダ制御コンポーネント211は、ビデオ信号再構成品質とビットレート懸案事項とのバランスをとるようコーデックシステム200の他のコンポーネントを制御する。汎用コーダ制御コンポーネント211は、他のコンポーネントの動作を制御する制御データを生成する。制御データはまた、デコーダでのデコーディングのためのパラメータをシグナリングするためにビットストリームの中にエンコーディングされるようヘッダフォーマッティング及びCABACコンポーネント231へも転送される。
【0054】
パーティション化されたビデオ信号201は、動き推定コンポーネント221及び動き補償コンポーネント219へもインター予測のために送られる。パーティション化されたビデオ信号201のフレーム又はスライスは、複数のビデオブロックに分割されてよい。動き推定コンポーネント221及び動き補償コンポーネント219は、時間予測を提供するよう1つ以上の参照フレーム内の1つ以上のブロックに対する受信されたビデオブロックのインター予測コーディングを実行する。コーデックシステム200は、例えば、ビデオデータのブロックごとに適切なコーディングモードを選択するために、多数のコーディングパスを実行してよい。
【0055】
動き推定コンポーネント221及び動き補償コンポーネント219は、高集積されてよいが、概念上の目的のために別々に表されている。動き推定コンポーネント221によって実行される動き推定は、動きベクトルを生成するプロセスであり、これにより、ビデオブロックの動きを推定する。動きベクトルは、例えば、予測ブロックに対するコーディングされたオブジェクトの変位を示し得る。予測ブロックは、ピクセル差分に関して、コーディングされるべきブロックと厳密に一致すると認められるブロックである。予測ブロックは、参照ブロックと呼ばれることもある。このようなピクセル差分は、差分絶対和(sum of absolute difference,SAD)、差分平方和(sum of square difference,SSD)、又は他の差分メトリックによって決定されてよい。HEVCは、CTU、コーディングツリーブロック(CTB)、及びCUを含むいくつかのコーディングされたオブジェクトを用いる。例えば、CTUはCTBに分割され得、CTBは、次いで、CUでの包含のためにCBに分割され得る。CUは、CUについての、予測データを含む予測ユニット(PU)、及び/又は変換された残差データを含む変換ユニット(TU)として、エンコーディングされ得る。動き推定コンポーネント221は、レートひずみ解析をレートひずみ最適化プロセスの部分として使用することによって、動きベクトル、PU、及びTUを生成する。例えば、動き推定コンポーネント221は、現在のブロック/フレームについて、多数の参照ブロック、多数の動きベクトル、などを決定してよく、最良のレートひずみ特性を有している参照ブロック、動きベクトル、などを選択してよい。最良のレートひずみ特性は、ビデオ再構成の品質(例えば、圧縮によるデータ損失の量)とコーディング効率(例えば、最終的なエンコーディングのサイズ)との両方のバランスをとる。
【0056】
いくつかの例では、コーデックシステム200は、デコーディングピクチャバッファコンポーネント223に記憶されている参照ピクチャのサブ整数ピクセル位置についての値を計算してよい。例えば、ビデオコーデックシステム200は、参照ピクチャの4分の1ピクセル位置、8分の1ピクセル位置、又は他の分数ピクセル位置の値を補間してよい。従って、動き推定コンポーネント221は、完全ピクセル位置及び分数ピクセル位置に対して動き探索を実行し、分数ピクセル精度で動きベクトルを出力してよい。動き推定コンポーネント221は、PUの位置を参照ピクセルの予測ブロックの位置と比較することによって、インターコーディングされたスライス内のビデオブロックのPUについての動きベクトルを計算する。動き推定コンポーネント221は、計算された動きベクトルを、エンコーディングのためにヘッダフォーマッティング及びCABACコンポーネント231へ動きデータとして、及び動き補償コンポーネント219へ動きデータとして、出力する。
【0057】
動き補償コンポーネント219によって実行される動き補償は、動き推定コンポーネント221によって決定された動きベクトルに基づいて予測ブロックをフェッチ又は生成することを含んでよい。先と同じく、動き推定コンポーネント221及び動き補償コンポーネント219は、いくつかの例では、機能的に集積されてよい。現在のビデオブロックのPUについての動きベクトルを受け取ると、動き補償コンポーネント219は、動きベクトルが指し示す予測ブロックの位置を見つけてよい。次いで、残差ビデオブロックは、コーディング中の現在のビデオブロックのピクセル値から予測ブロックのピクセル値を減じてピクセル差分値を形成することによって、形成される。一般に、動き推定コンポーネント221は、ルーマ成分に対して動き推定を実行し、動き補償コンポーネント219は、クロマ成分及びルーマ成分の両方に対して、ルーマ成分に基づいて計算された動きベクトルを使用する。予測ブロック及び残差ブロックは、変換スケーリング及び量子化コンポーネント213へ転送される。
【0058】
パーティション化されたビデオ信号201は、イントラピクチャ推定コンポーネント215及びイントラピクチャ予測コンポーネント217へも送られる。動き推定コンポーネント221及び動き補償コンポーネント219と同様に、イントラピクチャ推定コンポーネント215及びイントラピクチャ予測コンポーネント217は高集積されてよいが、概念上の目的のために別々に表されている。イントラピクチャ推定コンポーネント215及びイントラピクチャ予測コンポーネント217は、上述されたようにフレーム間で動き推定コンポーネント221及び動き補償コンポーネント219によって実行されたインター予測に対する代替案として、現在のフレーム内のブロックに対して現在のブロックをイントラ予測する。特に、イントラピクチャ推定コンポーネント215は、現在のブロックをエンコーディングするために使用すべきイントラ予測モードを決定する。いくつかの例では、イントラピクチャ推定コンポーネント215は、複数の試験されたイントラ予測モードから、現在のブロックをエンコーディングするための適切なイントラ予測モードを選択する。選択されたイントラ予測モードは、次いで、エンコーディングのためにヘッダフォーマッティング及びCABACコンポーネント231へ転送される。
【0059】
例えば、イントラピクチャ推定コンポーネント215は、様々な試験されたイントラ予測モードについてレートひずみ解析を用いてレートひずみ値を計算し、試験されたモードの中で最良のレートひずみ特性を有しているイントラ予測モードを選択する。レートひずみ解析は、一般に、エンコーディングされたブロックを生成するために使用されたビットレート(例えば、ビットの数)に加えて、エンコーディングされたブロックと、エンコーディングされたブロックを生成するようエンコーディングされた元のエンコーディングされていないブロックとの間のひずみ(又はエラー)の量も決定する。イントラピクチャ推定コンポーネント215は、どのイントラ予測モードがそのブロックについて最良のレートひずみ値を示すかを決定するよう、様々なエンコーディングされたブロックについてのひずみ及びレートから比を計算する。その上、イントラピクチャ推定コンポーネント215は、レートひずみ最適化(rate-distortion optimization,RDO)に基づいてデプスモデリングモード(depth modeling mode,DMM)を用いてデプスマップのデプスブロックをコーディングするよう構成されてよい。
【0060】
イントラピクチャ予測コンポーネント217は、エンコーダで実装される場合には、イントラピクチャ推定コンポーネント215によって決定された選択されたイントラ予測モードに基づいて予測ブロックから残差ブロックを生成し、あるいは、デコーダで実装される場合には、ビットストリームから残差ブロックを読み出してよい。残差ブロックは、行列として表される、予測ブロックと元のブロックとの間の値の差を含む。残差ブロックは、次いで、変換スケーリング及び量子化コンポーネント213へ転送される。イントラピクチャ推定コンポーネント215及びイントラピクチャ予測コンポーネント217は、ルーマ及びクロマ成分の両方に作用してよい。
【0061】
変換スケーリング及び量子化コンポーネント213は、残差ブロックを更に圧縮するよう構成される。変換スケーリング及び量子化コンポーネント213は、離散コサイン変換(discrete cosine transform,DCT)、離散サイン変換(discrete sine transform,DST)、又は概念上類似した変換などの変換を残差ブロックに適用して、残差変換係数値を有するビデオブロックを生成する。ウェーブレット変換、整数変換、サブバンド変換、又は他のタイプの変換も使用されてよい。変換は、残差情報をピクセル値領域から周波数領域などの変換領域へ変換してよい。変換スケーリング及び量子化コンポーネント213はまた、例えば、周波数に基づいて、変換された残差情報をスケーリングするよう構成される。このようなスケーリングは、異なる周波数情報が異なる粒度で量子化されるように、スケール係数を残差情報に適用することを含み、これは、再構成されたビデオの最終的な視覚品質に影響を及ぼし得る。変換スケーリング及び量子化コンポーネント213はまた、ビットレートを更に低減するように変換係数を量子化するよう構成される。量子化プロセスは、一部又は全ての係数に関連したビットデプスを低減し得る。量子化の程度は、量子化パラメータを調整することによって変更され得る。いくつかの例では、変換スケーリング及び量子化コンポーネント213は、次いで、量子化された変換係数を含む行列のスキャンを実行してよい。量子化された変換係数は、ビットストリームの中にエンコーディングされるようヘッダフォーマッティング及びCABACコンポーネント231へ転送される。
【0062】
スケーリング及び逆変換コンポーネント229は、動き推定をサポートするよう変換スケーリング及び量子化コンポーネント213の逆の動作を適用する。スケーリング及び逆変換コンポーネント229は、例えば、他の現在のブロックのための予測ブロックになり得る参照ブロックとしての後の使用のために、ピクセル領域で残差ブロックを再構成するよう逆のスケーリング、変換、及び/又は量子化を適用する。動き推定コンポーネント221及び/又は動き補償コンポーネント219は、後のブロック/フレームの動き推定における使用のために、対応する予測ブロックに残差ブロックを加え直すことによって、参照ブロックを計算してよい。フィルタは、スケーリング、量子化、及び変換中に生じたアーチファクトを軽減するために、再構成された参照ブロックに適用される。このようなアーチファクトは、さもなければ、後続のブロックが予測される場合に誤った予測を引き起こす(そして、更なるアーチファクトを引き起こす)可能性がある。
【0063】
フィルタ制御解析コンポーネント227及びインループフィルタコンポーネント225は、残差ブロックに及び/又は再構成された画像ブロックにフィルタを適用する。例えば、スケーリング及び逆変換コンポーネント229からの変換された残差ブロックは、元の画像ブロックを再構成するよう、イントラピクチャ予測コンポーネント217及び/又は動き補償コンポーネント219からの対応する予測ブロックと結合されてよい。フィルタは、次いで、再構成された画像ブロックに適用されてよい。いくつかの例では、フィルタは、代わりに、残差ブロックに適用されてもよい。
図2の他のコンポーネントと同様に、フィルタ制御解析コンポーネント227及びインループフィルタコンポーネント225は高集積され、一緒に実装されてよいが、概念上の目的のために別々に表されている。再構成された参照ブロックに適用されたフィルタは、特定の空間領域に適用され、このようなフィルタがどのように適用されるかを調整するための複数のパラメータを含む。フィルタ制御解析コンポーネント227は、このようなフィルタがどこで適用されるべきかを決定するために、再構成された参照ブロックを解析し、対応するパラメータをセットする。このようなデータは、エンコーディングのためにフィルタ制御データとしてヘッダフォーマッティング及びCABACコンポーネント231へ転送される。インループフィルタコンポーネント225は、フィルタ制御データに基づいてそのようなフィルタを適用する。フィルタは、デブロッキングフィルタ、ノイズ抑制フィルタ、SAOフィルタ、及び適応ループフィルタを含んでよい。このようなフィルタは、例に応じて、空間/ピクセル領域で(例えば、再構成されたピクセルブロックに対して)、あるいは、周波数領域で適用されてよい。
【0064】
エンコーダとして動作する場合に、フィルタ処理された再構成された画像ブロック、残差ブロック、及び/又は予測ブロックは、上述されたように動き推定での後の使用のためにデコーディングピクチャバッファコンポーネント223に記憶される。デコーダとして動作する場合に、デコーディングピクチャバッファコンポーネント223は、再構成され且つフィルタ処理されたブロックを記憶し、出力ビデオ信号の部分としてディスプレイに向けて転送する。デコーディングピクチャバッファコンポーネント223は、予測ブロック、残差ブロック、及び/又は再構成された画像ブロックを記憶することができる如何なるメモリデバイスであってもよい。
【0065】
ヘッダフォーマッティング及びCABACコンポーネント231は、コーデックシステム200の様々なコンポーネントからデータを受け取り、そのようなデータを、デコーダに向けた伝送のために、コーディングされたビットストリーム内にエンコーディングする。具体的に、ヘッダフォーマッティング及びCABACコンポーネント231は、汎用制御データ及びフィルタ制御データなどの制御データをエンコーディングするための様々なヘッダを生成する。更に、量子化された変換係数データの形での残差データに加えて、イントラ予測及び動きデータを含む予測データも、全て、ビットストリームの中にエンコーディングされる。最終的なビットストリームは、元のパーティション化されたビデオ信号201を再構成するためにデコーダによって望まれる全ての情報を含む。このような情報はまた、イントラ予測モードインデックステーブル(コードワードマッピングテーブルとも呼ばれる)、様々なブロックのエンコーディングコンテキストの定義、最も確からしいイントラ予測モードの指示、パーティション情報の指示、などを含んでもよい。このようなデータは、エントロピコーディングを用いることによってエンコーディングされてよい。例えば、情報は、コンテキスト適応可変長コーディング(context adaptive variable length coding,CAVLC)、CABAC、シンタックスに基づくコンテキスト適応バイナリ算術コーディング(syntax-based context-adaptive binary arithmetic coding,SBAC)、確率間隔パーティション化エントロピ(probability interval partitioning entropy,PIPE)コーディング、又は他のエントロピコーディング技術を用いることによってエンコーディングされてよい。エントロピコーディングに続いて、コーディングされたビットストリームは、他のデバイス(例えば、ビデオデコーダ)へ伝送されても、あるいは、後の伝送又は読み出しのためにアーカイブ保管されてもよい。
【0066】
図3は、例となるビデオエンコーダ300を表すブロック図である。ビデオエンコーダ300は、コーデックシステム200のエンコーディング機能を実装し、且つ/あるいは、動作方法100のステップ101、103、105、107、及び/又は109を実装するために、用いられてよい。エンコーダ300は、入力ビデオ信号をパーティション化して、パーティション化されたビデオ信号201と実質的に類似しているパーティション化されたビデオ信号301をもたらす。パーティション化されたビデオ信号301は、次いで、エンコーダ300のコンポーネントによってビットストリーム内に圧縮及びエンコーディングされる。
【0067】
具体的に、パーティション化されたビデオ信号301は、イントラ予測のためにイントラピクチャ予測コンポーネント317へ転送される。イントラピクチャ予測コンポーネント317は、イントラピクチャ推定コンポーネント215及びイントラピクチャ予測コンポーネント217と実質的に類似し得る。パーティション化されたビデオ信号301は、デコーディングピクチャバッファコンポーネント323内の参照ブロックに基づいたインター予測のために、動き補償コンポーネント321へも転送される。動き補償コンポーネント321は、動き推定コンポーネント221及び動き補償コンポーネント219と実質的に類似し得る。イントラピクチャ予測コンポーネント317及び動き補償コンポーネント321からの予測ブロック及び残差ブロックは、残差ブロックの変換及び量子化のために、変換及び量子化コンポーネント313へ転送される。変換及び量子化コンポーネント313は、変換スケーリング及び量子化コンポーネント213と実質的に類似し得る。変換及び量子化された残差ブロック並びに対応する予測ブロックが(関連した制御データとともに)ビットストリーム内へのコーディングのためにエントロピコーディングコンポーネント331へ転送される。エントロピコーディングコンポーネント331は、ヘッダフォーマッティング及びCABACコンポーネント231と実質的に類似し得る。
【0068】
変換及び量子化された残差ブロック並びに/又は対応する予測ブロックは、変換及び量子化コンポーネント313から逆変換及び量子化コンポーネント329へも、動き補償コンポーネント321によって使用される参照ブロックへの再構成のために転送される。逆変換及び量子化コンポーネント329は、スケーリング及び逆変換コンポーネント229と実質的に類似し得る。インループフィルタコンポーネント325におけるインループフィルタも、例に応じて、残差ブロック及び/又は再構成された参照ブロックに適用される。インループフィルタコンポーネント325は、フィルタ制御解析コンポーネント227及びインループフィルタコンポーネント225と実質的に類似し得る。インループフィルタコンポーネント325は、インループフィルタコンポーネント225に関して説明されたように複数のフィルタを含んでよい。フィルタ処理されたブロックは、次いで、動き補償コンポーネント321による参照ブロックとしての使用のために、デコーディングピクチャバッファコンポーネント323に記憶される。デコーディングピクチャバッファコンポーネント323は、デコーディングピクチャバッファコンポーネント223と実質的に類似し得る。
【0069】
図4は、例となるビデオデコーダ400を表すブロック図である。ビデオデコーダ400は、コーデックシステム200のデコーディング機能を実装し、且つ/あるいは、動作方法100のステップ111、113、115、及び/又は117を実装するために、用いられてよい。デコーダ400は、例えば、エンコーダ300から、ビットストリームを受け取り、ビットストリームに基づいて、エンドユーザへの表示のために、再構成された出力ビデオ信号を生成する。
【0070】
ビットストリームは、エントロピデコーディングコンポーネント433によって受け取られる。エントロピデコーディングコンポーネント433は、CAVLC、CABAC、SBAC、PIPEコーディング、又は他のエントロピコーディング技術などのエントロピデコーディングスキームを実装するよう構成される。例えば、エントロピデコーディングコンポーネント433は、ビットストリームの中にコードワードとしてエンコーディングされた追加データを解釈するためにコンテキストを供給するようヘッダ情報を用いてよい。デコーディングされた情報は、汎用制御データ、フィルタ制御データ、パーティション情報、動きデータ、予測データ、及び量子化された変換係数などのビデオ信号を残差ブロックからデコーディングするための如何なる望ましい情報も含む。量子化された変換係数は、逆変換及び量子化コンポーネント429へ、残差ブロックへの再構成のために転送される。逆変換及び量子化コンポーネント429は、逆変換及び量子化コンポーネント329と類似し得る。
【0071】
再構成された残差ブロック及び/又は予測ブロックは、イントラ予測動作に基づく画像ブロックへの再構成のために、イントラピクチャ予測コンポーネント417へ転送される。イントラピクチャ予測コンポーネント417は、イントラピクチャ推定コンポーネント215及びイントラピクチャ予測コンポーネント217と類似し得る。具体的に、イントラピクチャ予測コンポーネント417は、フレーム内の参照ブロックの位置を見つけるために予測モードを用い、残差ブロックをその結果に適用して、イントラ予測された画像ブロックを再構成する。再構成されたイントラ予測された画像ブロック及び/又は残差ブロック並びに対応するインター予測データは、インループフィルタコンポーネント425を介してデコーディングピクチャバッファコンポーネント423へ転送される。これらは、夫々、デコーディングピクチャバッファコンポーネント223及びインループフィルタコンポーネント225と実質的に類似し得る。インループフィルタコンポーネント425は、再構成された画像ブロック、残差ブロック及び/又は予測ブロックをフィルタ処理し、このような情報は、デコーディングピクチャバッファコンポーネント423に記憶される。デコーディングピクチャバッファコンポーネント423からの再構成された画像ブロックは、インター予測のために動き補償コンポーネント421へ転送される。動き補償コンポーネント421は、動き推定コンポーネント221及び/又は動き補償コンポーネント219と実質的に類似し得る。具体的に、動き補償コンポーネント421は、予測ブロックを生成するために参照ブロックからの動きベクトルを用い、残差ブロックをその結果に適用して、画像ブロックを再構成する。結果として得られる再構成されたブロックも、インループフィルタコンポーネント425を介してデコーディングピクチャバッファコンポーネント423へ転送されてよい。デコーディングピクチャバッファコンポーネント423は、パーティション情報によりフレーム内に再構成され得る更なる再構成された画像ブロックを引き続き記憶する。このようなフレームはシーケンスでも配置されてよい。シーケンスは、再構成された出力ビデオ信号としてディスプレイに向けて出力される。
【0072】
図5は、エンコーディングされたビデオシーケンスをHPS513とともに含む、例となるビットストリーム500を表す概略図である。例えば、ビットストリーム500は、コーデックシステム200及び/又はデコーダ400によるデコーディングのためにコーデックシステム200及び/又はエンコーダ300によって生成され得る。他の例として、ビットストリーム500は、ステップ111でのデコーダによる使用のために、方法100のステップ109でエンコーダによって生成されてもよい。
【0073】
ビットストリーム500は、シーケンスパラメータセット(SPS)510、複数のピクチャパラメータセット(PPS)512、複数のスライスヘッダ514、及び画像データ520を含む。SPS510は、ビットストリーム500に含まれているビデオシーケンス内の全てのピクチャに共通するシーケンスデータを含む。このようなデータは、ピクチャサイジング、ビットデプス、コーディングツールパラメータ、ビットレート制限、などを含むことができる。PPS512は、1つ以上の対応するピクチャに特有であるパラメータを含む。従って、ビデオシーケンス内の各ピクチャは、1つのPPS512を参照し得る。PPS512は、対応するピクチャ内のタイルに利用可能なコーディングツール、量子化パラメータ、オフセット、ピクチャ特有のコーディングツールパラメータ(例えば、フィルタ制御)などを示すことができる。スライスヘッダ514は、ピクチャ内の1つ以上の対応するスライスに特有であるパラメータを含む。従って、ビデオシーケンス内の各スライスは、スライスヘッダ514を参照し得る。スライスヘッダ514は、スライスタイプ情報、ピクチャ順序カウント(POC)、参照ピクチャリスト、予測重み、タイルエントリポイント、デブロッキングパラメータ、などを含んでよい。いくつかの例では、スライスは、タイルグループと呼ばれることがある。そのような場合に、スライスヘッダ514は、タイルグループヘッダと呼ばれることがある。
【0074】
画像データ520は、インター予測及び/又はイントラ予測に従ってエンコーディングされたビデオデータを、対応する変換及び量子化された残差データとともに含む。そのような画像データ520は、エンコーディングの前に画像をパーティション化するために使用されるパーティション化に従ってソートされる。例えば、ビデオシーケンスは、ピクチャ521に分割される。ピクチャ521は、スライス523に分割される。スライス523は、タイル及び/又はCTUに更に分割されてよい。CTUは、コーディングツリーに基づいてコーディングブロックに更に分割される。コーディングブロックは、次いで、予測メカニズムに従ってエンコーディング/デコーディングされ得る。例えば、ピクチャ521は、1つ以上のスライス523を含むことができる。ピクチャ521は、PPS512を参照し、スライス523は、スライスヘッダ514を参照する。各スライス523は、1つ以上のタイルを含んでよい。各スライス523及び/又はピクチャ521は、その場合に、複数のCUUを含むことができる。
【0075】
各ピクチャ521は、対応する時点のビデオシーケンスに関連した視覚データの全体の組を含んでよい。VRシステムは、ピクチャ521のユーザにより選択された領域を表示してよく、これは、ピクチャ521で表されているシーンに存在しているという感覚を作り出す。ユーザが見たいと望む可能性がある領域は、ビットストリーム500がエンコーディングされるときに知られていない。従って、ピクチャ521は、ユーザが潜在的に見るかもしれない夫々の可能性がある領域を含んでよい。しかし、VRコンテキストでは、対応するコーデックは、ユーザがピクチャ521の選択された領域のみを見て、ピクチャ521の残りの部分は捨てられるという推定に基づいて、設計されることがある。
【0076】
各スライス523は、左上隅にあるCTU及び右下隅にあるCTUによって定義された長方形であってよい。いくつかの例では、スライス523は、左から右及び上から下に進むラスタスキャン順序においてタイル及び/又はCTUの連続を含む。他の例では、スライス523は長方形スライスである。長方形スライスは、ラスタスキャン順序に従ってピクチャの全体の幅をトラバースしてなくもよい。代わりに、長方形スライスは、CTU及び/又はタイル行並びにCTU及び/又はタイル列に関して定義されたピクチャ521の長方形及び/又は正方形領域を含んでよい。スライス523は、デコーダによって別個に表示され得る最小単位である。従って、ピクチャ521からのスライス523は、ピクチャ521の所望の領域を別々に表すよう異なるサブ領域522に割り当てられてよい。例えば、VRコンテキストでは、ピクチャ521は、データの全体の視認可能な球を含んでよいが、ユーザは、ヘッドマウントディスプレイで1つ以上のスライス523を含むサブピクチャ522しか見なくてよい。
【0077】
上述されたように、ビデオコーデックは、ピクチャ521の非選択領域がデコーダで捨てられるべきであると仮定してよい。従って、サブビットストリーム501がビットストリーム500から抽出されてよい。抽出されたサブビットストリーム501は、選択されたサブピクチャ522及び関連したシンタックスを含んでよい。ピクチャ521の非選択領域は、コーディング効率を向上させるよう、より低い解像度で伝送されるか、あるいは、省略されてもよい。サブピクチャ522は、ピクチャ521の選択された領域であり、1つ以上の関連したスライス524を含んでよい。スライス524は、サブピクチャ522に関連したピクチャ521の選択された領域を表すスライス523のサブセットである。サブビットストリーム501は、サブピクチャ522及びスライス524に関係があるSPS510、PPS512、スライスヘッダ514、及び/又はそれらのサブ部分も含む。
【0078】
サブビットストリーム501は、ビットストリーム500から抽出され得る。例えば、デコーダを用いているユーザは、ビデオのセグメントを見ることがある。ユーザは、ピクチャ521の対応する領域を選択してよい。デコーダは、ユーザが現在見ている領域に関連した後続のサブピクチャ522を要求することができる。エンコーダは、次いで、選択された領域に関連したサブピクチャ522を、より高い解像度で、及びピクチャ521の残りの領域を、より低い解像度で転送することができる。このような機能性を可能にするために、デコーダは、ビットストリーム500から1つ以上のサブビットストリーム501を抽出529することができる。抽出529は、スライス524をサブピクチャ522に含めながら、サブピクチャ522をサブビットストリーム501内に置くことを含む。抽出529は、サブピクチャ522及びスライス524をデコーディングすることを支援するために望まれるように、関連するSPS510、PPS512、及びスライスヘッダ514をサブビットストリーム内に置くことも含む。
【0079】
サブビットストリーム501の抽出529に伴う1つの問題は、ピクチャ521に関連したアドレッシングが、サブピクチャ522に関連したアドレッシングとは異なる可能性があることである。アドレッシング問題は、以下で更に詳細に論じられる。いくつかのシステムでは、スライスヘッダ514は、そのようなアドレッシング不一致に対して調整するよう書き直され得る。しかし、サブビットストリーム501は、多数のスライスヘッダ514を(例えば、ピクチャ521ごとに1つ又は2つほどで)含む可能性があり、そのようなスライスヘッダ514は、各ユーザに対して動的に書き直される。そのようなものとして、このようにしてスライスヘッダ514を書き直すことは、プロセッサ負荷が非常に大きい可能性がある。本開示は、スライスヘッダ514が、スライスヘッダ514を書き直さずにサブビットストリーム501内に抽出529されることを可能にするメカニズムを含む。
【0080】
スライスヘッダ514を書き直すシステムでは、スライス523及び524は、スライスインデックス、タイルインデックス、CTUインデックス、などのようなインデックス値に基づいてアドレッシングされる。そのようなインデックスは、ラスタスキャン順序において値が増大する。アドレッシング不一致を正すために、開示されている実施形態は、スライス、タイル、及び/又はCTUごとに、定義されたID値を用いる。そのような定義されたIDは、デフォルト値であってよく、かつ/あるいは、エンコーダによって選択されてもよい。定義されたIDは、一貫した方法でラスタスキャン順序において増加してよいが、そのような定義されたIDは、単調増加していなくてもよい。従って、定義されたIDは、アドレス管理を可能にするよう値の間にギャップを残してよい。例えば、インデックスは単調増加してよく(例えば、0、1、2、3など)、一方、定義されたIDは何らかの定義された倍数によって増加してよい(例えば、0、10、20、30、など)。エンコーダは、ビットストリーム500及びサブビットストリーム501にマッピング535を含めることができ、これは、デコーダが、定義されたIDから、デコーダが解釈することができるインデックスへマッピングすることを可能にする。
【0081】
SPS510及び/又はPPS512などのパラメータセットは、IDフラグ531を含んでよい。IDフラグ531は、ピクチャ521に基づいた位置からサブピクチャ522に基づいた位置へスライスアドレスをマッピングするためにマッピング535が利用可能であることを示すようセットされてよい。従って、IDフラグ531は、開示されているメカニズムがビットストリーム500及びサブビットストリーム501で用いられていることをデコーダに示すようセットされてよい。例えば、IDフラグ531は、明示的なタイルIDフラグ、sps_subpic_id_present_flag、又は他のシンタックス要素としてコーディングされてよい。IDフラグ531は、ビットストリーム500内にエンコーディングされ、サブビットストリーム501内に抽出529されてよい。
【0082】
SPS510及び/又はPPS512などのパラメータセットは、ID532のシンタックス要素を含んでもよい。ID532は、ピクチャ521内のサブピクチャ522を示してよい。例えば、ID532のアレイは、ビットストリーム500のPPS512に含まれ得る。サブビットストリーム501が抽出529されるとき、デコーダへ送られるべきサブピクチャ522に関連したID532は、サブビットストリーム501のPPS512に含まれ得る。他の例では、関連したID532への指示が、デコーダが正しいID532を決定することを可能にするために、サブビットストリーム501内のPPS512に挿入され得る。例えば、ID532は、サブピクチャ522の境界を示すSubPicIdx、Tile_id_val[i]、又は他のシンタックス要素としてコーディングされてよい。
【0083】
SPS510及び/又はPPS512などのパラメータセットは、スライスアドレスの長さ533のシンタックス要素を含んでもよい。更には、スライスヘッダ514は、スライス523のスライスアドレス534を含んでよい。スライスアドレス534は、定義されたID値として含まれる。スライスアドレス534は、スライスヘッダ514を書き直すことを回避するよう、変更なしで、サブビットストリーム501内のスライスヘッダ514内に直接に抽出529され得る。例えば、スライスアドレス534は、スライス523及び524の境界を示すslice_address、tile_group_address、又は他のシンタックス要素としてコーディングされてよい。スライスアドレスの長さ533は、次いで、スライスアドレス534を解釈するために用いられ得る。例えば、スライスアドレス534は、エンコーダにより定義された値を含む、従って、バイトアライメントフィールドが後に続く可変な長さ値としてコーディングされる。スライスアドレスの長さ533は、対応するスライスアドレス534に含まれているビットの数を示してよく、従って、スライスアドレス534の境界をデコーダに示し得る。そのようなものとして、デコーダは、スライスアドレス534を解釈するために(例えば、PPS512から)スライスアドレスの長さ533を用いることができる。そのようなものとして、スライスヘッダ514は、スライスアドレス534に続くバイトアライメントフィールドを調整するよう書き直される必要がない。例えば、スライスアドレスの長さ533は、スライスアドレスの長さ533を示すsubpic_id_len_minus1、tile_id_len_minus1、又は他のシンタックス要素としてコーディングされてよい。スライスアドレスの長さ533は、ビットストリーム500のPPS512に含まれ、次いで、サブビットストリーム501のPPS512内に抽出529されてよい。
【0084】
マッピング535も、SPS510、PPS512、及び/又はスライスヘッダ514などのパラメータセットで伝送されてもよい。マッピング535は、ピクチャ521に基づいた位置からサブピクチャ522に基づいた位置へスライスアドレスをマッピングするためのメカニズムを示す。マッピング535は、ビットストリーム500内にエンコーディングされ、サブビットストリーム501内の対応するパラメータセット内に抽出529されてよい。例えば、マッピング535は、ピクチャ521に基づいた位置からサブピクチャ522に基づいた位置へスライスアドレスをマッピングするためのメカニズムを示すSliceSubpicToPicIdx[SubPicIdx][slice_address]シンタックス要素、tileIDToIdx[Tile_group_address]シンタックス要素、又は他のシンタックス要素としてコーディングされてよい。
【0085】
従って、デコーダは、サブビットストリーム501を読み出し、スライス524が、インデックスの代わりに、定義されたアドレスによってアドレッシングされることを決定するようIDフラグ531を取得することができる。デコーダは、サブビットストリーム501に含まれているサブピクチャ522を決定するようID532を取得することができる。デコーダはまた、スライスアドレス534を解釈するようスライスアドレス534及びスライスアドレスの長さ533を取得することもできる。デコーダは、次いで、デコーダが解釈することができるフォーマットへスライスアドレス534をマッピングするようマッピング535を取得することができる。デコーダは、次いで、サブピクチャ522及び対応するスライス524をデコーディングし表示するときにスライスアドレス534を用いることができる。
【0086】
図6は、コーディングのためにパーティション化された例示的なピクチャ600を表す概略図である。例えば、ピクチャ600は、例えば、コーデックシステム200、エンコーダ300、及び/又はデコーダ400によって、ビットストリーム500の中にエンコーディングされ、ビットストリーム500からデコーディングされ得る。更に、ピクチャ600は、方法100に従うエンコーディング及びデコーディングをサポートするよう、サブビットストリーム501内のサブピクチャにパーティション化及び/又は包含され得る。
【0087】
ピクチャ600は、スライス523と実質的に同様であってよいスライス623にパーティション化され得る。スライス623は、タイル625及びCTU627に更にパーティション化されてよい。
図6では、スライス623は、スライス623どうしをグラフィカルに区別するために白色背景と陰付きとを交互にして太線で表されている。タイル625は破線で示されている。スライス623の境界上に位置しているタイル625の境界は、太い破線として表されており、スライス623の境界上に位置していないタイル625の境界は、太くない破線として表されている。CTU627の境界は、CTU627の境界がタイル625又はスライス623の境界によってカバーされている位置を除いて、太くない実線として表されている。この例では、ピクチャ600は、9つのスライス623と、24個のタイル625と、216個のCTU627とを含む。
【0088】
示されるように、スライス623は、含まれているタイル625及び/又はCTU627によって定義され得る境界を持った長方形である。スライス623は、ピクチャ600の全体の幅にわたって延在しなくてもよい。タイル625は、行及び列に従ってスライス623において生成され得る。CTU627は、インター予測及び/又はイントラ予測に従うコーディングのためのコーディングブロックに細分されるのに適したピクチャ600のパーティションを生成するよう、タイル625及び/又はスライス623からパーティション化され得る。ピクチャ600は、ビットストリーム500などのビットストリーム内にエンコーディングされてよい。ピクチャ600の領域は、夫々サブピクチャ522及びサブビットストリーム501などの、サブピクチャに含まれ、サブビットストリーム内に抽出されてよい。
【0089】
図7は、ピクチャ700から抽出された例示的なサブピクチャ722を表す概略図である。例えば、ピクチャ700は、ピクチャ600と実質的に同様であってよい。更に、ピクチャ700は、例えば、コーデックシステム200、及び/又はエンコーダ300によって、ビットストリーム500内にエンコーディングされ得る。サブピクチャ722は、例えば、コーデックシステム200、エンコーダ300、及び/又はデコーダ400によって、サブビットストリーム501内に抽出され、それからデコーディングされ得る。更に、ピクチャ700は、方法100に従うエンコーディング及びデコーディングをサポートするために用いられ得る。
【0090】
示されるように、ピクチャ700は、左上隅702及び右下隅704を含む。サブピクチャ722は、ピクチャ700からの1つ以上のスライス723を含む。インデックスを使用する場合に、左上隅702及び右下隅704は、夫々、最初及び最後のインデックスと関連付けられる。しかし、デコーダは、サブピクチャ722のみを表示して、全体のピクチャ700を表示しないことがある。更に、第1スライス723aのスライスアドレス734は、左上隅702とアライメントしない可能性があり、第3スライス723cのスライスアドレス734は、右下隅704とアライメントしない可能性がある。そのようなものとして、サブピクチャ722に対するスライスアドレス734は、ピクチャ700に対するスライスアドレス734とアライメントしない。本開示は、インデックスの代わりに、スライスアドレス734に対して、定義されたIDを用いる。デコーダは、ピクチャ700に基づいた位置からサブピクチャ722に基づいた位置へスライスアドレス734をマッピングするためにマッピングを用いることができる。デコーダは、次いで、デコーダ表示の左上隅702に第1スライス723aを置くよう、デコーダ表示の右下隅704に第3スライス723cを置くよう、かつ、第1スライス723aと第3スライス723cとの間に第2スライス723bを置くよう、マッピングされたスライスアドレス734を用いることができる。
【0091】
ここで記載されるように、本開示は、タイルがピクチャパーティション化のために使用されるビデオコーディングにおける明示的なタイルIDシグナリングのための改善について記載する。当該技術の記載は、ITU-T及びISO/IECのJVETによるVVCに基づく。しかし、当該技術はまた、他のビデオコーデック規格にも適用される。以下は、ここで記載される例示的な実施形態である。
【0092】
タイルインデックス及びタイルIDの概念は区別され得る。タイルのタイルIDは、タイルのタイルインデックスと等しくても等しくなくてもよい。タイルIDがタイルインデックスとは異なる場合に、タイルIDとタイルインデックスとの間のマッピングがPPSでシグナリングされてよい。タイルIDは、タイルインデックスを使用する代わりに、タイルグループヘッダ内のタイルグループアドレスのシグナリングのために使用されてよい。このように、タイルIDの値は、タイルグループが元のビットストリームから抽出される場合に、同じままであることができる。これは、タイルグループによって参照されるPPSにおいてタイルIDとタイルインデックスとの間のマッピングを更新することによって達成され得る。このアプローチは、抽出されるべきサブピクチャに応じてタイルインデックスの値が変化する可能性がある場合に対処する。留意されるべきは、他のパラメータセット(例えば、スライスヘッダ以外)は、MCTSに基づいたサブビットストリーム抽出を実行する場合に、依然として書き直され得ることである。
【0093】
上記は、タイル情報がシグナリングされるパラメータセット内のフラグを用いることによって、達成され得る。例えば、PPSがパラメータセットとして用いられ得る。例えば、explicit_tile_id_flagがこの目的のために用いられてよい。explicit_tile_id_flagは、ピクチャ内のタイルの数にかかわらずシグナリングされてよく、明示的なタイルシグナリングが使用されていることを示し得る。シンタックス要素も、タイルID値(例えば、タイルインデックスとタイルIDとの間のマッピング)のシグナリングのためのビットの数を特定するために用いられてよい。そのようなシンタックス要素は、タイルグループヘッダでタイルID/アドレスをシグナリングするためにも用いられてよい。例えば、tile_id_len_minus1シンタックス要素がこの目的のために用いられてよい。tile_id_len_minus1は、explicit_tile_id_flagがゼロに等しい場合(例えば、タイルIDがタイルインデックスに等しくセットされる場合)に、存在しなくてもよい。tile_id_len_minus1が存在しない場合に、tile_id_len_minus1の値は、Ceil(Log2(NumTilesInPic))の値に等しいと推測されてよい。更なる制約は、MCTSサブビットストリーム抽出の結果であるビットストリームが、サブビットストリームが元のビットストリーム内の左上隅のタイルを含まない限りは、アクティブなPPSについて1に等しくセットされたexplicit_tile_id_flagを含んでよいことを必要とし得る。
【0094】
例となる実施形態において、ビデオコーディングシンタックスは、ここで記載されている機能性を達成するよう後述されるように変更されてよい。例となるCTBラスタ及びタイルスキャンプロセスは、次のように説明され得る。タイルスキャン内のCTBアドレスからタイルIDへの変換を特定する、0以上PicSizeInCtbsY-1以下の範囲に及ぶctbAddrTsのリストTileId[CtbAddrTs]と、タイルインデックスからタイル内のCTUの数への変換を特定する、0以上PicSizeInCtbsY-1以下の範囲に及ぶtileIdxのリストNumCtusInTile[tileIdx]とは、次のように導出される:
【数1】
【0095】
タイルインデックスからタイル内のCTUの数への変換を特定する、0以上PicSizeInCtbsY-1以下の範囲に及ぶtileIdxのリストNumCtusInTile[tileIdx]は、次のように導出され得る:
【数2】
【0096】
タイルIDからタイルインデックスへの変換を特定するNumTilesInPic tileId値の組のセットTileIdToIdx[tileId]は、次のように導出され得る:
【数3】
【0097】
例となるピクチャパラメータセットRBSPシンタックスは、次のように記載され得る:
【表1】
【0098】
例となるタイルグループヘッダシンタックスは、次のように記載され得る:
【表2】
【0099】
例となるタイルグループデータシンタックスは、次のように記載され得る:
【表3】
【0100】
例となるピクチャパラメータセットRBSPセマンティクスは、次のように記載され得る。1に等しくセットされたexplicit_tile_id_flagは、各タイルのタイルIDが明示的にシグナリングされることを特定する。ゼロに等しくセットされたexplicit_tile_id_flagは、タイルIDが明示的にシグナリングされないことを特定する。MTCSサブビットストリーム抽出の結果であるビットストリームについては、explicit_tile_id_flagの値は、結果として得られるビットストリームが元のビットストリーム内の左上隅のタイルを含まない限りは、アクティブなPPSについて1に等しくセットされてよい。tile_id_len_minus1 plus1は、PPSを参照するタイルグループヘッダにおいてシンタックス要素tile_id_val[i]及びシンタックス要素tile_group_addressを表すために使用されるビットの数を特定する。tile_id_len_minus1の値は、Ceil(Log2(NumTilesInPic))以上15以下の範囲内にあってよい。存在しない場合に、tile_id_len_minus1の値は、Ceil(Log2(NumTilesInPic))に等しいと推測されてよい。留意されるべきは、tile_id_len_minus1の値は、いくつかの場合に、Ceil(Log2(NumTilesInPic))よりも大きくてもよいことである。これは、現在のビットストリームがMCTSサブビットストリーム抽出の結果であり得るからである。その場合に、元のビットストリーム内のタイルインデックスであることができるタイルIDは、OrgNumTilesInPicが元のビットストリームのNumTilesInPicであるとして、Ceil(Log2(OrgNumTilesInPic))個のビットによって表現されてよく、現在のビットストリームのNumTilesInPicよりも大きい。tile_id_val[i]は、PPSを参照するピクチャのi番目のタイルのタイルIDを特定する。tile_id_val[i]の長さは、tile_id_len_minus1+1ビットである。0以上NumTilesInPic-1以下の範囲内のいずれかの整数m及びnについて、tile_id_val[m]は、mがnに等しくない場合に、tile_id_val[n]に等しくなくてもよく、tile_id_val[m]は、mがnよりも小さい場合に、tile_id_val[n]よりも小さくてよい。
【0101】
次の変数:CTBのユニット内のi番目のタイル列の幅を特定する、0以上num_tile_columns_minus1以下の範囲に及ぶiについてのリストColWidth[i];CTBのユニット内のj番目のタイル行の高さを特定する、0以上num_tile_rows_minus1以下の範囲に及ぶjについてのリストRowHeight[j];CTBのユニット内のi番目のタイル列境界の位置を特定する、0以上num_tile_columns_minus1+1以下の範囲に及ぶiについてのリストColBd[i];CTBのユニット内のj番目のタイル行境界の位置を特定する、0以上num_tile_rows_minus1+1以下の範囲に及ぶjについてのリストRowBd[j];ピクチャのCTBラスタスキャンでのCTBアドレスからタイルスキャンでのCTBアドレスへの変換を特定する、0以上PicSizeInCtbsY-1以下の範囲に及ぶctbAddrRsのリストCtbAddrRsToTs[ctbAddrRs];タイルスキャンでのCTBアドレスからピクチャのCTBラスタスキャンでのCTBアドレスへの変換を特定する、0以上PicSizeInCtbsY-1以下の範囲に及ぶctbAddrTsのリストCtbAddrTsToRs[ctbAddrTs];タイルスキャンでのCTBアドレスからタイルIDへの変換を特定する、0以上PicSizeInCtbsY-1以下の範囲に及ぶctbAddrTsのリストTileId[ctbAddrTs];タイルインデックスからタイル内のCTUの数への変換を特定する、0以上PicSizeInCtbsY-1以下の範囲に及ぶtileIdxのリストNumCtusInTile[tileIdx];タイルIDからタイル内の最初のCTBのタイルスキャンでのCTBアドレスへの変換を特定する、0以上NumTilesInPic-1以下の範囲に及ぶtileIdxのリストFirstCtbAddrTs[tileIdx];タイルIDからタイルインデックスへの変換を特定するNumTilesInPic tileId値の組のセットTileIdToIdx[tileID]、及びタイルIDからタイル内の最初のCTBのタイルスキャンでのCTBアドレスへの変換を特定する、0以上NumTilesInPic-1以下の範囲に及ぶtileIdxのリストFirstCtbAddrTs[tileIdx];ルーマサンプルのユニット内のi番目のタイル列の幅を特定する、0以上num_tile_columns_minus1以下の範囲に及ぶiについてのリストColumnWidthInLumaSamples[i];並びにルーマサンプルのユニット内のj番目のタイル行の高さを特定する、0以上num_tile_rows_minus1以下の範囲に及ぶjについてのリストRowHeightInLumaSamples[j]が、CTBラスタ及びタイルスキャン変換を呼び出すことによって導出され得る。
【0102】
tile_group_addressは、タイルグループ内の最初のタイルのタイルIDを特定する。tile_group_addressの長さは、tile_id_len_minus1+1ビットである。tile_group_addressの値は、0以上2tile_id_len_minus1+1-1以下の範囲内にあってよく、tile_group_addressの値は、同じコーディングされたピクチャのいずれかの他のコーディングされたタイルグループNALユニットのtile_group_addressの値に等しくなくてもよい。
【0103】
図8は、例となるビデオコーディングデバイス800の概略図である。ビデオコーディングデバイス800は、ここで記載されている開示された例/実施形態を実装するのに適している。ビデオコーディングデバイス800は、下流ポート820、上流ポート850、及び/又は、ネットワーク上で上流及び/又は下流へデータを通信する送信器及び/又は受信器を含むトランシーバユニット(Tx/Rx)810を有する。ビデオコーディングデバイス800はまた、データを処理するための論理ユニット及び/又は中央演算処理装置(CPU)を含むプロセッサ830と、データを記憶するメモリ832とを含む。ビデオコーディングデバイス800はまた、電気、光、又は無線通信ネットワークを介したデータの通信のために上流ポート850及び/又は下流ポート820へ結合された電気的な光電気(OE)コンポーネント、電気光(EO)コンポーネント、及び/又は無線通信コンポーネントを有してもよい。ビデオコーディングデバイス800はまた、ユーザへ及びユーザからデータを通信する入力及び/又は出力(I/O)デバイス860を含んでもよい。I/Oデバイス860は、ビデオデータを表示するディスプレイ、オーディオデータを出力するスピーカなどのような出力デバイスを含んでもよい。I/Oデバイス860はまた、キーボード、マウス、トラックボールなどの入力デバイス、及び/又はそのような出力デバイスと相互作用する対応するインターフェースを含んでもよい。
【0104】
プロセッサ830は、ハードウェア及びソフトウェアによって実装される。プロセッサ830は、1つ以上のCPUチップ、コア(例えば、マルチコアプロセッサとして)、フィールド・プログラマブル・ゲート・アレイ(FPGA)、特定用途向け集積回路(ASIC)、及びデジタル信号プロセッサ(DSP)として実装されてよい。プロセッサ830は、下流ポート820、Tx/Rx810、上流ポート850、及びメモリ832と通信する。プロセッサ830は、コーディングモジュール814を有する。コーディングモジュール814は、ビットストリーム500、ピクチャ600、及び/又はピクチャ700を用い得る方法100、900、及び1000などの、上述された開示されている実施形態を実装する。コーディングモジュール814はまた、ここで記載されている如何なる他の方法/メカニズムも実装してよい。更に、コーディングモジュール814は、コーデックシステム200、エンコーダ300、及び/又はデコーダ400を実装してよい。例えば、エンコーダとして動作する場合に、コーディングモジュール814は、PPSでフラグ、サブピクチャID、及び長さを特定することができる。コーディングモジュール814は、スライスヘッダの中にスライスアドレスをエンコーディングすることもできる。次いで、コーディングモジュール814は、スライスヘッダを書き直さずに、ピクチャのビットストリームからサブピクチャのサブビットストリームを抽出することができる。デコーダとして動作する場合に、コーディングモジュール814は、明示的なスライスアドレスがインデックスの代わりに使用されているかどうかを決定するようフラグを呼び出すことができる。コーディングモジュール814は、PPSから長さ及びサブピクチャIDを、並びにスライスヘッダからスライスアドレスを読み出すこともできる。コーディングモジュール814は、次いで、長さを用いてスライスアドレスを解釈し、サブピクチャIDを用いて、ピクチャに基づいたアドレスからサブピクチャに基づいたアドレスへスライスアドレスをマッピングすることができる。そのようなものとして、コーディングモジュール814は、選択されたサブピクチャにかかわらず、かつ、サブピクチャに基づいたアドレス変更に適応するようスライスヘッダが書き直される必要なしに、スライスの所望の位置を決定することができる。そのようなものとして、コーディングモジュール814は、ビデオコーディングデバイス800に、ビデオデータをパーティション化及びコーディングする場合に、更なる機能性を提供させ、処理オーバーヘッドを低減するよう特定の処理を回避させ、かつ/あるいは、コーディング効率を向上させる。従って、コーディングモジュール814は、ビデオコーディング技術に特有である問題に対処することに加えて、ビデオコーディングデバイス800の機能性も改善する。更に、コーディングモジュール814は、異なる状態へのビデオコーディングデバイス800の変形を達成する。代替的に、コーディングモジュール814は、メモリ832に記憶されておりプロセッサ830によって実行される命令として(例えば、非一時的な媒体に記憶されているコンピュータプログラム製品として)実装され得る。
【0105】
メモリ832は、ディスク、テープドライブ、ソリッドステートドライブ、リード・オンリー・メモリ(ROM)、ランダム・アクセス・メモリ(RAM)、フラッシュメモリ、三値連想メモリ(TCAM)、静的ランダム・アクセス・メモリ(SRAM)などのような1つ以上のメモリタイプを有する。メモリ832は、プログラムが実行のために選択される場合にそのようなプログラムを記憶するために、且つ、プログラム実行中に読み出される命令及びデータを記憶するために、オーバーフローデータ記憶デバイスとして使用されてよい。
【0106】
図9は、明示的アドレスシグナリングを用いることによって、スライスヘッダを書き直さずに、夫々サブビットストリーム501及びサブピクチャ522などのサブピクチャのサブビットストリームの抽出を支援するよう、夫々ビットストリーム500及びピクチャ600などのピクチャのビットストリームをエンコーディングする例示的な方法900のフローチャートである。方法900は、方法100を実行する場合に、コーデックシステム200、エンコーダ300、及び/又はビデオコーディングデバイス800などのエンコーダによって用いられてよい。
【0107】
方法900は、エンコーダが複数のピクチャを含むビデオシーケンスを受信し、例えば、ユーザ入力に基づいて、そのビデオシーケンスをビットストリーム内にエンコーディングすると決定する場合に、開始してよい。ビデオシーケンスは、エンコーディングの前に更なるパーティション化のためにピクチャ/画像/フレームにパーティション化される。ステップ901で、ビデオシーケンスのピクチャがビットストリームの中にエンコーディングされる。ピクチャは、第1スライスを含む複数のスライスを含んでよい。第1スライスは、ピクチャ内のいずれのスライスであってもよいが、議論の明りょうさのために第1スライスと記載される。例として、第1スライスの左上隅は、ピクチャの左上隅とアライメントしなくてもよい。
【0108】
ステップ903で、スライスに関連したスライスヘッダがビットストリーム内にエンコーディングされる。スライスヘッダは、第1スライスのスライスアドレスを含む。スライスアドレスは、エンコーダによって選択された数値などの、定義された値を有してよい。そのような値は任意であってよいが、一貫したコーディング機能性をサポートするために、ラスタスキャン順序(例えば、左から右及び上から下)において増加してよい。スライスアドレスはインデックスを有さなくてもよい。いくつかの例では、スライスアドレスは、slice_addressシンタックス要素であってよい。
【0109】
ステップ905で、PPSがビットストリームの中にエンコーディングされる。第1スライスの識別子及びスライスアドレスの長さが、ビットストリーム内のPPSの中にエンコーディングされてよい。識別子は、サブピクチャ識別子であってよい。スライスアドレスの長さは、スライスアドレスに含まれているビットの数を示してよい。例えば、PPS内のスライスアドレスの長さは、ステップ903でコーディングされたスライスヘッダからスライスアドレスを解釈するのに十分なデータを含んでよい。いくつかの例では、長さは、subpic_id_len_minus1シンタックス要素であってよい。更に、識別子は、ピクチャに基づいた位置からサブピクチャに基づいた位置へスライスアドレスをマッピングするのに十分なデータを含んでよい。いくつかの例では、識別子は、subPicIdxシンタックス要素であってよい。例えば、複数のサブピクチャに基づいた識別子がPPSに含まれてよい。サブピクチャが抽出される場合に、対応するサブピクチャIDは、例えば、フラグ/ポインタを用いること及び/又は未使用のサブピクチャIDを除くことによって、PPSにおいて示されてよい。いくつかの例では、明示的なIDフラグもパラメータセット内にコーディングされてよい。フラグは、ピクチャに基づいた位置からサブピクチャに基づいた位置へスライスアドレスをマッピングするためにマッピングが利用可能であることをデコーダに示してよい。いくつかの例では、マッピングは、SliceSubpicToPicIdx[SubPicIdx][slice_address]シンタックス要素であってよい。従って、フラグは、スライスアドレスがインデックスではないことを示し得る。いくつかの例では、フラグは、sps_subpic_id_present_flagであってよい。
【0110】
ステップ907で、ビットストリームのサブビットストリームが抽出される。例えば、これは、スライスヘッダを書き直さずに、第1スライスのスライスアドレス、スライスアドレスの長さ、及び識別子に基づいて第1スライスを抽出することを含んでよい。特定の例として、そのような抽出は、ピクチャのサブピクチャの抽出も含んでよい。この場合に、サブピクチャが第1スライスを含む。パラメータセットも、サブビットストリーム内に含められてよい。例えば、サブビットストリームは、サブピクチャ、スライスヘッダ、PPS、SPS、などを有してよい。
【0111】
ステップ909で、サブビットストリームは、デコーダへ向けた通信のために記憶される。サブビットストリームは、次いで、望まれるように、デコーダへ向けて伝送されてよい。
【0112】
図10は、明示的アドレスシグナリングを用いることによって、ビットストリーム500及びピクチャ600などのピクチャのビットストリームから抽出された、サブビットストリーム501及びサブピクチャ522などのサブピクチャのサブビットストリームをデコーディングする例示的な方法1000のフローチャートである。方法1000は、方法100を実行する場合に、コーデックシステム200、デコーダ400、及び/又はビデオコーディングデバイス800などのデコーダによって用いられてよい。
【0113】
方法1000は、デコーダが、例えば、方法900の結果として、ビットストリームから抽出されたサブビットストリームを受信し始める場合に開始してよい。ステップ1001で、サブビットストリームが受信される。サブビットストリームは、ピクチャのサブピクチャを含む。例えば、エンコーダでエンコーディングされたビットストリームは、ピクチャを含んでよく、サブビットストリームは、エンコーダ及び/又はスライサでビットストリームから抽出され、サブビットストリームは、ビットストリーム内のピクチャからの1つ以上の領域を含むサブピクチャを含む。受信されたサブピクチャは、複数のスライスにパーティション化されてよい。複数のスライスは、第1スライスとして指定されたスライスを含んでよい。第1スライスは、ピクチャ内のいずれのスライスであってもよいが、議論の明りょうさのために第1スライスとして記載される。例として、第1スライスの左上隅は、ピクチャの左上隅とアライメントしなくてもよい。サブピクチャは、ピクチャに関連したシンタックスを記述し、従って、サブピクチャに関連したシンタックスも記述するPPSも含む。サブビットストリームは、第1スライスに関連したシンタックスを記述するスライスヘッダも含む。
【0114】
ステップ1003で、PPS及び/又はSPSなどのパラメータセットは、明示的なIDフラグを取得するようパースされてよい。IDフラグは、ピクチャに基づいた位置からサブピクチャに基づいた位置へスライスアドレスをマッピングするためにマッピングが利用可能であることを示してよい。従って、フラグは、対応するスライスアドレスが定義された値を有し、インデックスを有さないことを示し得る。いくつかの例では、フラグは、sps_subpic_id_present_flagであってよい。IDフラグの値に基づいて、PPSは、第1スライスの識別子及びスライスアドレスの長さを取得するようパースされ得る。識別子は、サブピクチャ識別子であってよい。スライスアドレスの長さは、対応するスライスアドレスに含まれているビットの数を示してよい。例えば、PPS内のスライスアドレスの長さは、スライスヘッダからスライスアドレスを解釈するのに十分なデータを含んでよい。いくつかの例では、長さは、subpic_id_len_minus1シンタックス要素であってよい。更に、識別子は、ピクチャに基づいた位置からサブピクチャに基づいた位置へスライスアドレスをマッピングするのに十分なデータを含んでよい。いくつかの例では、識別子は、subPicIdxシンタックス要素であってよい。例えば、複数のサブピクチャに基づいた識別子がPPSに含まれてよい。サブピクチャが抽出される場合に、対応するサブピクチャIDは、例えば、フラグ/ポインタを用いること及び/又は未使用のサブピクチャIDを除くことによって、PPSにおいて示されてよい。
【0115】
ステップ1005で、第1スライスのスライスアドレスは、識別子及びスライスアドレスの長さに基づいてスライスヘッダから決定される。例えば、PPSからの長さは、スライスヘッダからスライスアドレスを解釈するためのビット境界を決定するために用いられ得る。識別子及びスライスアドレスは、次いで、ピクチャに基づいた位置からサブピクチャに基づいた位置へスライスアドレスをマッピングするために用いられ得る。例として、ピクチャに基づいた位置とサブピクチャに基づいた位置との間のマッピングは、スライスヘッダをサブピクチャにアライメントするために使用されてよい。これは、デコーダが、エンコーダ及び/又はスライサでスライスヘッダが書き直される必要なしに、サブビットストリーム抽出によって引き起こされたスライスヘッダとピクチャアドレッシングスキームとの間のアドレス不一致を補償することを可能にする。いくつかの例では、マッピングは、SliceSubpicToPicIdx[SubPicIdx][slice_address]シンタックス要素であってよい。
【0116】
ステップ1007で、サブビットストリームは、サブピクチャのビデオシーケンスを生成するようデコーディングされ得る。サブピクチャは第1スライスを含んでよい。従って、第1スライスもデコーディングされる。デコーディングされた第1スライスを含むサブピクチャのビデオシーケンスは、次いで、例えば、ヘッドマウントディスプレイ又は他の表示デバイスによる表示のために、転送され得る。
【0117】
図11は、明示的アドレスシグナリングを用いることによって、ビットストリーム500及びピクチャ600などのピクチャのビットストリームから抽出された、サブビットストリーム501及びサブピクチャ522などのサブピクチャのサブビットストリームを伝送する例示的なシステム1100の概略図である。システム1100は、コーデックシステム200、エンコーダ300、デコーダ400、及び/又はビデオコーディングデバイス800などのエンコーダ及びデコーダによって実装されてよい。更に、システム1100は、方法100、900、及び/又は1000を実装する場合に用いられてもよい。
【0118】
システム1100は、ビデオエンコーダ1102を含む。ビデオエンコーダ1102は、第1スライスを含む複数のスライスを有するピクチャをビットストリームの中にエンコーディングし、第1スライスのスライスアドレスを含むスライスヘッダをビットストリームの中にエンコーディングし、第1スライスの識別子及びスライスアドレスの長さを含むPPSをビットストリームの中にエンコーディングするエンコーディングモジュール1101を有する。ビデオエンコーダ1102は、スライスヘッダを書き直さずに、第1スライスのスライスアドレス、スライスアドレスの長さ、及び識別子に基づいて第1スライスを抽出することによって、ビットストリームのサブビットストリームを抽出する抽出モジュール1103を更に有する。ビデオエンコーダ1102は、デコーダへ向けた通信のためにサブビットストリームを記憶する記憶モジュール1105を更に有する。ビデオエンコーダ1102は、スライスヘッダ、PPS、第1スライス、及び/又は対応するサブピクチャを含むサブビットストリームをデコーダに向けで伝送する伝送モジュール1107を更に有する。ビデオエンコーダ1102は、方法900のステップのいずれかを実行するよう更に構成されてもよい。
【0119】
システム1100はまた、ビデオデコーダ1110も含む。ビデオデコーダ1110は、第1スライスを含む複数のスライスにパーティション化されたピクチャのサブピクチャと、ピクチャ及びサブピクチャに関連したPPSと、第1スライスに関連したスライスヘッダとを含むサブビットストリームを受信する受信モジュール1111を有する。ビデオデコーダ1110は、第1スライスの識別子及びスライスアドレスの長さを取得するようPPSをパースするパージングモジュール1113を更に有する。ビデオデコーダ1110は、識別子及びスライスアドレスの長さに基づいてスライスヘッダから第1スライスのスライスアドレスを決定する決定モジュール1115を更に有する。ビデオデコーダ1110は、第1スライスを含むサブピクチャのビデオシーケンスを生成するようサブビットストリームをデコーディングするデコーディングモジュール1117を更に有する。ビデオデコーダ1110は、表示のためにサブピクチャのビデオシーケンスを転送する転送モジュール1119を更に有する。ビデオデコーダ1110は、方法1000のステップのいずれかを実行するよう更に構成されてもよい。
【0120】
第1コンポーネントと第2コンポーネントとの間のライン、トレース、又は他の媒体を除いて、介在するコンポーネントがない場合に、第1コンポーネントは第2コンポーネントへ直接に結合される。第1コンポーネントと第2コンポーネントとの間にライン、トレース、又は他の媒体以外の他の介在するコンポーネントがある場合に、第1コンポーネントは第2コンポーネントへ間接的に結合される。「結合される」との用語及びその変形は、直接に結合されること及び間接的に結合されることの両方を含む。「約」との用語の使用は、別なふうに述べられない限りは、それに続く数の±10%を含む範囲を意味する。
【0121】
ここで説明されている例示的な方法のステップは、必ずしも、記載されている順序で実行される必要はないことが理解されるべきであり、そのような方法のステップの順序は、単なる例示にすぎないと理解されるべきである。同様に、そのような方法には追加のステップが含まれてもよく、特定のステップは、本開示の様々な実施形態に従う方法において、削除又は結合されてもよい。
【0122】
いくつかの実施形態が本開示で提供されているが、開示されているシステム及び方法は、本開示の精神又は範囲から逸脱せずに、多数の他の具体的な形態で具現されてよいことが理解され得る。本例は、限定としてではなく実例として見なされるべきであり、意図は、ここで与えられている詳細に限定されるべきではない。例えば、様々な要素又はコンポーネントは、他のシステムに結合又は統合されてよく、あるいは、特定の特徴は省略されても又は実施されなくてもよい。
【0123】
更に、別個又は別々なものとして様々な実施形態で記載及び例示されている技術、システム、サブシステム、及び方法は、本開示の範囲から外れずに、他のシステム、コンポーネント、技術、又は方法と結合又は統合されてもよい。変更、置換、及び代替の他の例は、当業者によって確かめられ、ここで開示されている精神及び範囲から逸脱せずに行われ得る。