IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ホアウェイ・テクノロジーズ・カンパニー・リミテッドの特許一覧

特許7408787サブピクチャデブロッキングのためのフィルタフラグ
<>
  • 特許-サブピクチャデブロッキングのためのフィルタフラグ 図1
  • 特許-サブピクチャデブロッキングのためのフィルタフラグ 図2
  • 特許-サブピクチャデブロッキングのためのフィルタフラグ 図3
  • 特許-サブピクチャデブロッキングのためのフィルタフラグ 図4
  • 特許-サブピクチャデブロッキングのためのフィルタフラグ 図5
  • 特許-サブピクチャデブロッキングのためのフィルタフラグ 図6
  • 特許-サブピクチャデブロッキングのためのフィルタフラグ 図7
  • 特許-サブピクチャデブロッキングのためのフィルタフラグ 図8
  • 特許-サブピクチャデブロッキングのためのフィルタフラグ 図9
  • 特許-サブピクチャデブロッキングのためのフィルタフラグ 図10
  • 特許-サブピクチャデブロッキングのためのフィルタフラグ 図11
  • 特許-サブピクチャデブロッキングのためのフィルタフラグ 図12
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-22
(45)【発行日】2024-01-05
(54)【発明の名称】サブピクチャデブロッキングのためのフィルタフラグ
(51)【国際特許分類】
   H04N 19/82 20140101AFI20231225BHJP
   H04N 19/70 20140101ALI20231225BHJP
【FI】
H04N19/82
H04N19/70
【請求項の数】 16
(21)【出願番号】P 2022519006
(86)(22)【出願日】2020-09-23
(65)【公表番号】
(43)【公表日】2022-12-01
(86)【国際出願番号】 US2020052287
(87)【国際公開番号】W WO2021061826
(87)【国際公開日】2021-04-01
【審査請求日】2022-04-28
(31)【優先権主張番号】62/905,231
(32)【優先日】2019-09-24
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】504161984
【氏名又は名称】ホアウェイ・テクノロジーズ・カンパニー・リミテッド
(74)【代理人】
【識別番号】100110364
【弁理士】
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100133569
【弁理士】
【氏名又は名称】野村 進
(72)【発明者】
【氏名】フヌ・ヘンドリー
(72)【発明者】
【氏名】イェ-クイ・ワン
(72)【発明者】
【氏名】ジエンレ・チェン
【審査官】田部井 和彦
(56)【参考文献】
【文献】Benjamin Bross Jianle Chen Shan Liu,Versatile Video Coding (Draft 6) [online], JVET-P JVET-O2001-vE,ITU-T インターネット<URL:https://jvet-experts.org/doc_end_user/documents/16_Geneva/wg11/JVET-P0086-v1.zip>,2019年09月19日,pp.1, 37, 89, 309
(58)【調査した分野】(Int.Cl.,DB名)
H04N 19/82
H04N 19/70
(57)【特許請求の範囲】
【請求項1】
ビデオデコーダによって実装される方法であって、
前記ビデオデコーダが、ピクチャおよびloop_filter_across_subpic_enabled_flagを含むビデオビットストリームを受け取るステップであって、前記ピクチャがサブピクチャを含む、ステップと、
loop_filter_across_subpic_enabled_flagが0に等しいときに前記サブピクチャの境界と一致するエッジを除く前記ピクチャのすべてのサブブロックエッジおよび変換ブロックエッジにデブロッキングフィルタプロセスを適用するステップと
を含み、
前記サブピクチャは、loop_filter_across_subpic_enabled_flagが0に等しい第1のサブピクチャと、loop_filter_across_subpic_enabled_flagが1に等しい第2のサブピクチャとを含み、前記第1のサブピクチャの右境界が前記第2のサブピクチャの左境界でもあり、または前記第1のサブピクチャの下境界が前記第2のサブピクチャの上境界でもあり、
loop_filter_across_subpic_enabled_flagが0に等しい前記第1のサブピクチャでは、前記第1のサブピクチャおよび前記第2のサブピクチャによって共有される境界にあるブロックに前記デブロッキングフィルタプロセスが適用されず、
loop_filter_across_subpic_enabled_flagが1に等しい前記第2のサブピクチャでは、前記第1のサブピクチャおよび前記第2のサブピクチャによって共有される前記境界にあるブロックに前記デブロッキングフィルタプロセスが適用される、方法。
【請求項2】
1に等しいloop_filter_across_subpic_enabled_flagが、符号化されたビデオシーケンス(CVS)内の各符号化されたピクチャ内のサブピクチャの境界にまたがってループ内フィルタリング操作が行われ得ることを指定する、請求項1に記載の方法。
【請求項3】
0に等しいloop_filter_across_subpic_enabled_flagが、符号化されたビデオシーケンス(CVS)内の各符号化されたピクチャ内のサブピクチャの境界にまたがってループ内フィルタリング操作が行われないことを指定する、請求項1または2に記載の方法。
【請求項4】
命令を格納するように構成されたメモリと、
前記メモリに結合され、請求項1から3のいずれか一項に記載の方法を行うために前記命令を実行するように構成されたプロセッサと
を備えるビデオデコーダ。
【請求項5】
非一時的媒体に格納するためのコンピュータ実行可能命令を含み、前記コンピュータ実行可能命令は、プロセッサによって実行されると、ビデオデコーダに請求項1から3のいずれか一項に記載の方法を行わせる、コンピュータプログラム。
【請求項6】
ビデオエンコーダによって実装される方法であって、
前記ビデオエンコーダが、loop_filter_across_subpic_enabled_flagが0に等しいときにサブピクチャの境界と一致するエッジを除くピクチャのすべてのサブブロックエッジおよび変換ブロックエッジにデブロッキングフィルタプロセスが適用されるようにloop_filter_across_subpic_enabled_flagを生成するステップと、
前記ビデオエンコーダが、loop_filter_across_subpic_enabled_flagをビデオビットストリームにエンコードするステップと、
を含み、
前記サブピクチャは、loop_filter_across_subpic_enabled_flagが0に等しい第1のサブピクチャと、loop_filter_across_subpic_enabled_flagが1に等しい第2のサブピクチャとを含み、前記第1のサブピクチャの右境界が前記第2のサブピクチャの左境界でもあり、または前記第1のサブピクチャの下境界が前記第2のサブピクチャの上境界でもあり、
loop_filter_across_subpic_enabled_flagが0に等しい前記第1のサブピクチャでは、前記第1のサブピクチャおよび前記第2のサブピクチャによって共有される境界にあるブロックに前記デブロッキングフィルタプロセスが適用されず、
loop_filter_across_subpic_enabled_flagが1に等しい前記第2のサブピクチャでは、前記第1のサブピクチャおよび前記第2のサブピクチャによって共有される前記境界にあるブロックに前記デブロッキングフィルタプロセスが適用される、方法。
【請求項7】
1に等しいloop_filter_across_subpic_enabled_flagが、符号化されたビデオシーケンス(CVS)内の各符号化されたピクチャ内のサブピクチャの境界にまたがってループ内フィルタリング操作が行われ得ることを指定する、請求項6に記載の方法。
【請求項8】
0に等しいloop_filter_across_subpic_enabled_flagが、符号化されたビデオシーケンス(CVS)内の各符号化されたピクチャ内のサブピクチャの境界にまたがってループ内フィルタリング操作が行われないことを指定する、請求項6または7に記載の方法。
【請求項9】
seq_parameter_set_rbspを生成するステップと、
seq_parameter_set_rbspにloop_filter_across_subpic_enabled_flagを含めるステップと、
seq_parameter_set_rbspを前記ビデオビットストリームにエンコードすることによってloop_filter_across_subpic_enabled_flagを前記ビデオビットストリームにさらにエンコードするステップと
をさらに含む、請求項6から8のいずれか一項に記載の方法。
【請求項10】
命令を格納するように構成されたメモリと、
前記メモリに結合され、請求項6から9のいずれか一項に記載の方法を行うために前記命令を実行するように構成されたプロセッサと
を備えるビデオエンコーダ。
【請求項11】
非一時的媒体に格納するためのコンピュータ実行可能命令を含み、前記コンピュータ実行可能命令は、プロセッサによって実行されると、ビデオエンコーダに請求項6から9のいずれか一項に記載の方法を行わせる、コンピュータプログラム。
【請求項12】
エンコーダと、
デコーダと
を備え、前記エンコーダまたは前記デコーダが請求項1から3または6から9のいずれか一項に記載の方法を行うように構成される、ビデオ符号化システム。
【請求項13】
エンコードするピクチャを受信するか、またはデコードするビットストリームを受信するように構成された受信機と、
前記受信機に結合された送信機であって、前記送信機が前記ビットストリームをデコーダに送信するかまたはデコードされた画像をディスプレイに送信するように構成された、送信機と、
前記受信機または前記送信機の少なくとも一方に結合されたメモリであって、前記メモリが命令を格納するように構成された、メモリと、
前記メモリに結合されたプロセッサであって、前記プロセッサが請求項1から3のいずれか一項または請求項6から9のいずれか一項に記載の方法を行うために前記メモリに格納された前記命令を実行するように構成された、プロセッサと
を備える、符号化装置。
【請求項14】
エンコードするピクチャを受信するかまたはデコードするビットストリームを受信するように構成された受信手段と、
前記受信手段に結合された送信手段であって、前記送信手段が前記ビットストリームをデコーディング手段に送信するかまたはデコードされた画像を表示手段に送信するように構成された、送信手段と、
前記受信手段または前記送信手段の少なくとも一方に結合された記憶手段であって、前記記憶手段が命令を格納するように構成された、記憶手段と、
前記記憶手段に結合された処理手段であって、前記処理手段が請求項1から3のいずれか一項または請求項6から9のいずれか一項に記載の方法を行うために前記記憶手段に格納された前記命令を実行するように構成された、処理手段と
を備える、符号化の手段。
【請求項15】
コンピュータ可読記憶媒体であって、前記コンピュータ可読記憶媒体が、プロセッサによって実行することができるコンピュータプログラムを格納し、前記コンピュータプログラムが前記プロセッサによって実行されると、前記プロセッサが、請求項1から3のいずれか一項または請求項6から9のいずれか一項に記載の方法を行う、コンピュータ可読記憶媒体。
【請求項16】
請求項1から3のいずれか一項または請求項6から9のいずれか一項に記載の方法を実行するための処理回路を備えた符号器。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本特許出願は、Futurewei Technologies,Inc.によって2019年9月24日に出願された「Deblocking Operation for Subpictures In Video Coding」と題する米国仮特許出願第62/905,231号の優先権を主張するものであり、参照により組み込まれる。
【0002】
開示の実施形態は、一般にビデオ符号化に関し、特にサブピクチャデブロッキングのためのフィルタフラグに関する。
【背景技術】
【0003】
たとえ比較的短いビデオであっても、これを表現するのに必要なビデオデータはかなりの量となり得るため、データのストリーミングが行われたり、帯域幅容量に限りがある通信ネットワークを介してデータが伝達されたりする場合には困難が生じることがある。このため、ビデオデータは通常、今日の通信ネットワークを介して伝達される前に圧縮される。ビデオが記憶デバイスに格納される場合に、メモリリソースが乏しい場合もあるため、ビデオのサイズが問題になることもある。ビデオ圧縮デバイスは多くの場合、送信または格納に先立ち供給元でソフトウェアおよび/またはハードウェアを使用してビデオデータを符号化し、そうすることでデジタルビデオ画像を表すのに必要なデータの量を減らす。圧縮されたデータは次いで、供給先でビデオデータをデコードするビデオ解凍デバイスによって受け取られる。ネットワークリソースには限りがあり、より高いビデオ品質を求める要求が増大しているため、画質をほとんど犠牲にしないかまったく犠牲にせずに圧縮率を高める改善された圧縮・解凍技法が望まれている。
【発明の概要】
【課題を解決するための手段】
【0004】
第1の態様は、ビデオデコーダによって実装される方法であって、ビデオデコーダが、ピクチャおよびloop_filter_across_subpic_enabled_flagを含むビデオビットストリームを受け取るステップであって、ピクチャがサブピクチャを含む、ステップと、loop_filter_across_subpic_enabled_flagが0に等しいときにサブピクチャの境界と一致するエッジを除くピクチャのすべてのサブブロックエッジおよび変換ブロックエッジにデブロッキングフィルタプロセスを適用するステップと、を含む方法に関する。
【0005】
第1の実施形態では、2つのサブピクチャが互いに隣接しており(例えば、第1のサブピクチャの右境界が第2のサブピクチャの左境界でもあり、または第1のサブピクチャの下境界が第2のサブピクチャの上境界でもあり)、2つのサブピクチャのloop_filter_across_subpic_enabled_flag[i]の値が異なる場合、2つのサブピクチャによって共有される境界のデブロッキングに2つの条件が適用される。第一に、loop_filter_across_subpic_enabled_flag[i]が0に等しいサブピクチャでは、隣接するサブピクチャと共有される境界にあるブロックにデブロッキングが適用されない。第二に、loop_filter_across_subpic_enabled_flag[i]が1に等しいサブピクチャでは、隣接するサブピクチャと共有される境界にあるブロックにデブロッキングが適用される。そのデブロッキングを実現するために、通常のデブロッキングプロセスごとに境界強度判定が適用され、サンプルフィルタリングは、loop_filter_across_subpic_enabled_flag[i]が1に等しいサブピクチャに属するサンプルにのみ適用される。第2の実施形態では、subpic_treated_as_pic_flag[i]の値が1に等しく、loop_filter_across_subpic_enabled_flag[i]の値が0に等しいサブピクチャが存在する場合、すべてのサブピクチャのloop_filter_across_subpic_enabled_flag[i]の値は0に等しいものとする。第3の実施形態では、サブピクチャごとにloop_filter_across_subpic_enabled_flag[i]をシグナリングする代わりに、サブピクチャにまたがるループフィルタが使用可能であるか否かを指定するために1つのフラグのみがシグナリングされる。開示の実施形態は、上述のアーチファクトを低減または排除し、エンコードされたビットストリームにおいて無駄なビットがより少なくなる。
【0006】
任意選択で、前述の態様のいずれかにおいて、1に等しいloop_filter_across_subpic_enabled_flagは、CVS内の各符号化されたピクチャ内のサブピクチャの境界をまたいでループ内フィルタリング操作が行われ得ることを指定する。
【0007】
任意選択で、前述の態様のいずれかにおいて、0に等しいloop_filter_across_subpic_enabled_flagは、CVS内の各符号化されたピクチャ内のサブピクチャの境界をまたいでループ内フィルタリング操作が行われないことを指定する。
【0008】
第2の態様は、ビデオエンコーダによって実装される、ビデオエンコーダが、loop_filter_across_subpic_enabled_flagが0に等しいときにサブピクチャの境界と一致するエッジを除くピクチャのすべてのサブブロックエッジおよび変換ブロックエッジにデブロッキングフィルタプロセスが適用されるようにloop_filter_across_subpic_enabled_flagを生成するステップと、ビデオエンコーダが、loop_filter_across_subpic_enabled_flagをビデオビットストリームにエンコードするステップと、ビデオエンコーダが、ビデオデコーダに向けた通信のためのビデオビットストリームを格納するステップと、を含む方法に関する。
【0009】
任意選択で、前述の態様のいずれかにおいて、1に等しいloop_filter_across_subpic_enabled_flagは、CVS内の各符号化されたピクチャ内のサブピクチャの境界をまたいでループ内フィルタリング操作が行われ得ることを指定する。
【0010】
任意選択で、前述の態様のいずれかにおいて、0に等しいloop_filter_across_subpic_enabled_flagは、CVS内の各符号化されたピクチャ内のサブピクチャの境界をまたいでループ内フィルタリング操作が行われないことを指定する。
【0011】
任意選択で、前述の態様のいずれかにおいて、方法は、seq_parameter_set_rbspを生成するステップと、seq_parameter_set_rbspにloop_filter_across_subpic_enabled_flagを含めるステップと、seq_parameter_set_rbspをビデオビットストリームにエンコードすることによって、loop_filter_across_subpic_enabled_flagをビデオビットストリームにさらにエンコードするステップと、をさらに含む。
【0012】
第3の態様は、ビデオデコーダによって実装される方法であって、ビデオデコーダが、ピクチャ、EDGE_VER、およびloop_filter_across_subpic_enabled_flagを含むビデオビットストリームを受け取るステップであって、ピクチャがサブピクチャを含む、ステップと、edgeTypeがEDGE_VERに等しく、現在の符号化ブロックの左境界がサブピクチャの左境界であり、loop_filter_across_subpic_enabled_flagが0に等しい場合、filterEdgeFlagを0に設定するステップと、を含む方法に関する。
【0013】
任意選択で、前述の態様のいずれかにおいて、edgeTypeは、垂直エッジをフィルタリングするかそれとも水平エッジをフィルタリングするかを指定する変数である。
【0014】
任意選択で、前述の態様のいずれかにおいて、0に等しいedgeTypeは、垂直エッジがフィルタリングされることを指定し、EDGE_VERは垂直エッジである。
【0015】
任意選択で、前述の態様のいずれかにおいて、1に等しいedgeTypeは、水平エッジがフィルタリングされることを指定し、EDGE_HORは水平エッジである。
【0016】
任意選択で、前述の態様のいずれかにおいて、0に等しいloop_filter_across_subpic_enabled_flagは、CVS内の各符号化されたピクチャ内のサブピクチャの境界をまたいでループ内フィルタリング操作が行われないことを指定する。
【0017】
任意選択で、前述の態様のいずれかにおいて、この方法は、filterEdgeFlagに基づいてピクチャをフィルタリングするステップをさらに含む。
【0018】
第4の態様は、ビデオデコーダによって実装される方法であって、ビデオデコーダが、ピクチャ、EDGE_HOR、およびloop_filter_across_subpic_enabled_flagを含むビデオビットストリームを受け取るステップであって、ピクチャがサブピクチャを含む、ステップと、edgeTypeがEDGE_HORに等しく、現在の符号化ブロックの上境界がサブピクチャの上境界であり、loop_filter_across_subpic_enabled_flagが0に等しい場合、filterEdgeFlagを0に設定するステップと、を含む方法に関する。
【0019】
任意選択で、前述の態様のいずれかにおいて、edgeTypeは、垂直エッジをフィルタリングするかそれとも水平エッジをフィルタリングするかを指定する変数である。
【0020】
任意選択で、前述の態様のいずれかにおいて、0に等しいedgeTypeは、垂直エッジがフィルタリングされることを指定し、EDGE_VERは垂直エッジである。
【0021】
任意選択で、前述の態様のいずれかにおいて、1に等しいedgeTypeは、水平エッジがフィルタリングされることを指定し、EDGE_HORは水平エッジである。
【0022】
任意選択で、前述の態様のいずれかにおいて、0に等しいloop_filter_across_subpic_enabled_flagは、CVS内の各符号化されたピクチャ内のサブピクチャの境界をまたいでループ内フィルタリング操作が行われないことを指定する。
【0023】
任意選択で、前述の態様のいずれかにおいて、この方法は、filterEdgeFlagに基づいてピクチャをフィルタリングするステップをさらに含む。
【0024】
第5の態様は、ビデオデコーダによって実装される方法であって、ビデオデコーダが、ピクチャおよびloop_filter_across_subpic_enabled_flagを含むビデオビットストリームを受け取るステップであって、ピクチャがサブピクチャを含む、ステップと、loop_filter_across_subpic_enabled_flagが0に等しいときにサブピクチャの境界と一致するエッジを除くピクチャのすべてのサブブロックエッジおよび変換ブロックエッジにSAOプロセスを適用するステップと、を含む方法に関する。
【0025】
第6の態様は、ビデオデコーダによって実装される方法であって、ビデオデコーダが、ピクチャおよびloop_filter_across_subpic_enabled_flagを含むビデオビットストリームを受け取るステップであって、ピクチャがサブピクチャを含む、ステップと、loop_filter_across_subpic_enabled_flagが0に等しいときにサブピクチャの境界と一致するエッジを除くピクチャのすべてのサブブロックエッジおよび変換ブロックエッジにALFプロセスを適用するステップと、を含む方法に関する。
【0026】
上記実施形態のいずれも、新しい実施形態を形成するためにその他の上記実施形態のいずれかと組み合わされてもよい。上記その他の特徴は、以下の詳細な説明を添付の図面および特許請求の範囲と併せて読めばより明確に理解されるであろう。
【0027】
本開示をより十分に理解するために、次に、添付の図面および詳細な説明と関連して理解される以下の簡単な説明を参照する。添付の図面および詳細な説明において、類似の参照番号は類似の部分を表す。
【図面の簡単な説明】
【0028】
図1】ビデオ信号を符号化する例示的な方法のフローチャートである。
図2】ビデオ符号化のための例示的なコーディング・デコーディング(コーデック)システムの概略図である。
図3】例示的なビデオエンコーダを示す概略図である。
図4】例示的なビデオデコーダを示す概略図である。
図5】ピクチャビデオストリームから抽出された複数のサブピクチャビデオストリームを示す概略図である。
図6】サブビットストリームに分割された例示的なビットストリームを示す概略図である。
図7】第1の実施形態によるビットストリームをデコードする方法を示すフローチャートである。
図8】第1の実施形態によるビットストリームをエンコードする方法を示すフローチャートである。
図9】第2の実施形態によるビットストリームをデコードする方法を示すフローチャートである。
図10】第3の実施形態によるビットストリームをデコードする方法を示すフローチャートである。
図11】ビデオ符号化デバイスの概略図である。
図12】符号化の手段の一実施形態の概略図である。
【発明を実施するための形態】
【0029】
最初に、1または複数の実施形態の例示的な実装形態が以下に提供されるが、開示のシステムおよび/または方法は、現在公知であるかまたは存在しているかどうかにかかわりなく、任意の数の技法を使用して実装され得ることを理解されたい。本開示は、本明細書において例示および説明される例示的な設計および実装形態を含む、以下に示される例示的な実装形態、図面、および技法にいかなる点においても限定されるべきではなく、それらの均等物の全範囲とともに添付の特許請求の範囲の範囲内で修正され得る。
【0030】
以下の略語が適用される:
ALF:適応ループフィルタ
ASIC:特定用途向け集積回路
AU:アクセス単位
AUD:アクセス単位区切り文字
BT:二分木
CABAC:コンテキスト適応型バイナリ算術符号化
CAVLC:コンテキスト適応可変長符号化
Cb:青色差
CPU:中央処理装置
Cr:赤色差
CTB:符号化ツリーブロック
CTU:符号化ツリー単位
CU:符号化単位
CVS:符号化されたビデオシーケンス
DC:直流
DCT:離散コサイン変換
DMM:深度モデリングモード
DPB:復号ピクチャバッファ
DSP:デジタル信号プロセッサ
DST:離散サイン変換
EO:電気-光
FPGA:フィールドプログラマブルゲートアレイ
HEVC:高効率ビデオ符号化
HMD:ヘッドマウントディスプレイ
I/O:入力/出力
NAL:ネットワーク抽象化層
OE:光-電気
PIPE:確率区間分割エントロピー
POC:ピクチャ順序カウント
PPS:ピクチャパラメータセット
PU:ピクチャ単位
QT:四分木
RAM:ランダムアクセスメモリ
RBSP:ローバイトシーケンスペイロード
RDO:レート歪み最適化
ROM:読み出し専用メモリ
RPL:参照ピクチャリスト
Rx:受信機ユニット
SAD:絶対差の和
SAO:サンプル適応オフセット
SBAC:シンタックスベースの算術符号化
SPS:シーケンスパラメータセット
SRAM:スタティックRAM
SSD:二乗差の和
TCAM:3値連想メモリ
TT:トリプルツリー
TU:変換単位
Tx:送信機ユニット
VR:仮想現実
VVC:多用途ビデオ符号化。
【0031】
以下の定義は、他の箇所で変更されない限り適用される:ビットストリームとは、エンコーダとデコーダとの間の伝送のために圧縮されたビデオデータを含む、ビットのシーケンスである。エンコーダとは、エンコードプロセスを使用してビデオデータを圧縮してビットストリームにするデバイスである。デコーダとは、デコードプロセスを使用して表示用にビットストリームからビデオデータを再構成するデバイスである。ピクチャとは、フレームまたはフィールドを形成するルーマサンプルまたはクロマサンプルの配列である。エンコードまたはデコードされているピクチャを、現在のピクチャと呼ぶことができる。参照ピクチャは、インター予測またはレイヤ間予測に従って参照によって他のピクチャを符号化するときに使用することができる参照サンプルを含む。参照ピクチャリストとは、インター予測またはレイヤ間予測に使用される参照ピクチャのリストである。フラグとは、2つの可能な値のうちの1つ:0または1をとることができる変数またはシングルビットシンタックス要素である。一部のビデオ符号化システムは、参照ピクチャリスト1および参照ピクチャリスト0として表すことができる、2つの参照ピクチャリストを利用する。参照ピクチャリスト構造とは、複数の参照ピクチャリストを含むアドレス指定可能なシンタックス構造である。インター予測とは、現在のピクチャとは異なる参照ピクチャ内の指示されたサンプルを参照することによって現在のピクチャのサンプルを符号化するメカニズムであり、参照ピクチャと現在のピクチャとは同じレイヤ内にある。参照ピクチャリスト構造エントリとは、参照ピクチャリストと関連付けられた参照ピクチャを示す参照ピクチャリスト構造内のアドレス指定可能な位置である。スライスヘッダとは、スライスで表されたタイル内のすべてのビデオデータに関するデータ要素を含む符号化されたスライスの一部である。PPSは、ピクチャ全体に関するデータを含む。より具体的には、PPSは、各ピクチャヘッダに見られるシンタックス要素によって決定される0以上の符号化されたピクチャすべてに適用されるシンタックス要素を含むシンタックス構造である。SPSは、ピクチャのシーケンスに関するデータを含む。AUとは、DPBからの出力のための(例えば、ユーザに表示するための)同じ表示時刻(例えば、同じピクチャ順序カウント)と関連付けられた1または複数の符号化されたピクチャの集合である。AUDは、AUの開始またはAU間の境界を示す。デコードされたビデオシーケンスとは、ユーザへの表示に備えてデコーダによって再構成されたピクチャのシーケンスである。
【0032】
図1は、ビデオ信号の符号化の例示的な動作方法100のフローチャートである。具体的には、ビデオ信号はエンコーダでエンコードされる。エンコードプロセスは、様々なメカニズムを用いてビデオファイルサイズを低減されることによってビデオ信号を圧縮する。ファイルサイズが小さければ、関連付けられる帯域幅オーバーヘッドを減らして、圧縮されたビデオファイルをユーザに伝送することが可能になる。デコーダは次いで、圧縮されたビデオファイルをデコードして、エンドユーザに表示するために元のビデオ信号を再構成する。デコードプロセスは、一般に、エンコードプロセスをミラーリングして、デコーダがビデオ信号を一貫して再構成することを可能にする。
【0033】
ステップ101で、ビデオ信号がエンコーダに入力される。例えば、ビデオ信号はメモリに格納された圧縮されていないビデオファイルであってもよい。別の例として、ビデオファイルは、ビデオカメラなどのビデオキャプチャデバイスによってキャプチャされ、ビデオのライブストリーミングを支援するためエンコードされてもよい。ビデオファイルはオーディオ成分とビデオ成分の両方を含み得る。ビデオ成分は、連続して見られると動きの視覚的印象を与える、一連の画像フレームを含む。フレームは、ここではルーマ成分(またはルーマサンプル)と呼ばれる光と、クロマ成分(または色サンプル)と呼ばれる色として表される画素を含む。いくつかの例では、フレームは、立体視を支援するために深度値も含み得る。
【0034】
ステップ103で、ビデオがブロックに分割される。分割は、各フレーム内の画素を圧縮のために正方形および/または長方形のブロックに細分することを含む。例えば、HEVCでは、フレームはまず、所定のサイズ(例えば、64画素×64画素)のブロックであるCTUに分割することができる。CTUはルーマサンプルとクロマサンプルの両方を含む。CTUをブロックに分割し、次いで、さらなるエンコーディングを支援する構成が達成されるまでブロックを再帰的に細分するために符号化ツリーが用いられ得る。例えば、フレームのルーマ成分は、個々のブロックが比較的均質な照明値を含むようになるまで細分され得る。さらに、フレームのクロマ成分は、個々のブロックが比較的均質な色値を含むようになるまで細分され得る。したがって、分割メカニズムはビデオフレームの内容に応じて異なる。
【0035】
ステップ105で、ステップ103で分割された画像ブロックを圧縮するために様々な圧縮メカニズムが用いられる。例えば、インター予測および/またはイントラ予測が用いられ得る。インター予測は、一般的なシーン中のオブジェクトは連続するフレームに現れる傾向があることを利用するように設計されている。したがって、参照フレーム内のオブジェクトを表現するブロックは、隣接するフレームで繰り返し記述される必要はない。具体的には、机などのオブジェクトは複数のフレームにわたって一定の位置にとどまり得る。よって、机は一度記述され、隣接するフレームは参照フレームに戻って参照することができる。複数のフレームにわたってオブジェクトを一致させるためにパターンマッチングメカニズムが用いられ得る。さらに、例えば、オブジェクトの移動やカメラの移動により、複数のフレームにわたって移動するオブジェクトが表されることがある。特定の一例として、ビデオは複数のフレームにわたって画面を横切って移動する自動車を示すことがある。そのような動きを記述するために動きベクトルを用いることができる。動きベクトルは、フレーム内のオブジェクトの座標から参照フレーム内の該オブジェクトの座標までのオフセットを提供する2次元ベクトルである。このため、インター予測は、現在のフレーム内の画像ブロックを、参照フレーム内の対応するブロックからのオフセットを示す1組の動きベクトルとしてエンコードすることができる。
【0036】
イントラ予測は一般的なフレーム内のブロックをエンコードする。イントラ予測は、ルーマ成分とクロマ成分とがフレーム内で集まる傾向があることを利用する。例えば、木の一部分にある緑のパッチは、同様の緑のパッチに隣接して配置される傾向がある。イントラ予測は、複数の方向予測モード(例えばHEVCでは33)、平面モード、およびDCモードを用いる。方向モードは、現在のブロックが対応する方向の隣接ブロックのサンプルと同様/同じであることを示す。平面モードは、行/列(例えば平面)に沿った一連のブロックを、行のエッジにある隣接ブロックに基づいて補間することができることを示す。平面モードは、実際には、変化する値の比較的一定の傾きを用いることによって、行/列にまたがる光/色の滑らかな遷移を示す。DCモードは、境界平滑化に用いられ、ブロックが、方向予測モードの角度方向と関連付けられるすべての隣接ブロックのサンプルと関連付けられる平均値と同様/同じであることを示す。したがって、イントラ予測ブロックは、画像ブロックを、実際の値の代わりに様々な関係予測モード値として表すことができる。さらに、インター予測ブロックは、画像ブロックを、実際の値の代わりに動きベクトル値として表すことができる。どちらの場合にも、予測ブロックは場合によっては画像ブロックを正確に表さないことがある。差異は残差ブロックに格納される。ファイルをさらに圧縮するために残差ブロックには変換が適用され得る。
【0037】
ステップ107で、様々なフィルタリング技法が適用され得る。HEVCでは、フィルタは、ループ内フィルタリング方式に従って適用される。上述のブロックベースの予測は、デコーダでのブロック状の画像の形成をもたらし得る。さらに、ブロックベースの予測方式は、ブロックをエンコードし、次いでエンコードされたブロックを、後で参照ブロックとして使用するため再構成し得る。ループ内フィルタリング方式は、ノイズ抑制フィルタ、デブロッキングフィルタ、適応ループフィルタ、およびSAOフィルタをブロック/フレームに反復して適用する。これらのフィルタは、エンコードされたファイルを正確に再構成することができるように、そのようなブロッキングアーチファクトを軽減する。さらに、これらのフィルタは、アーチファクトが、再構成された参照ブロックに基づいてエンコードされる後続のブロックにおいて追加のアーチファクトを形成する可能性が低くなるように、再構成された参照ブロック内のアーチファクトを軽減する。
【0038】
ビデオ信号が分割され、圧縮され、フィルタリングされると、得られたデータはステップ109でビットストリームにエンコードされる。ビットストリームは、上述のデータ、ならびにデコーダでの適切なビデオ信号再構成を支援するため望ましい任意のシグナリングデータを含む。例えば、そのようなデータは、分割データ、予測データ、残差ブロック、およびデコーダに符号化命令を提供する様々なフラグを含み得る。ビットストリームは、要求に応じてデコーダに向けて伝送するためにメモリに格納され得る。ビットストリームはまた、複数のデコーダに向けてブロードキャストおよび/またはマルチキャストされてもよい。ビットストリームの作成は反復プロセスである。したがって、ステップ101、ステップ103、ステップ105、ステップ107、およびステップ109は、多くのフレームおよびブロックにわたって連続的に、かつ/または同時に行われ得る。図1に示される順序は説明を明瞭かつ平易にするために提示されており、ビデオ符号化プロセスを特定の順序に限定することを意図されたものではない。
【0039】
デコーダは、ステップ111でビットストリームを受け取り、デコードプロセスを開始する。具体的には、デコーダはエントロピーデコーディング方式を用いてビットストリームを対応するシンタックスデータおよびビデオデータに変換する。デコーダは、ステップ111で、ビットストリームからのシンタックスデータを用いてフレームの分割を決定する。分割はステップ103におけるブロック分割の結果と一致しなければならない。ステップ111で用いられるエントロピーエンコーディング/デコーディングについて次に説明する。エンコーダは、(1または複数の)入力画像における値の空間的配置に基づいて数通りの可能な選択肢からブロック分割方式を選択するなど、圧縮プロセスにおいて多くの選択を行う。正確な選択肢をシグナリングするのに多数のビンを用いることがある。本明細書で使用される場合、ビンとは、変数として扱われる2進値(例えば、コンテキストに応じて変化し得るビット値)である。エントロピー符号化は、エンコーダが、特定の場合に明らかに成り立たないオプションを破棄し、許容可能なオプションの集合を残すことを可能にする。許容可能な各オプションは次いで、符号語を割り当てられる。符号語の長さは許容可能なオプションの数に基づくものである(例えば、2つのオプションには1つのビン、3~4つのオプションには2つのビンなど)。エンコーダは次いで、選択されたオプションの符号語をエンコードする。符号語は、すべての可能なオプションの潜在的に大きい集合からの選択を一意に示すのとは対照的に、許容可能なオプションの小さい部分集合からの選択を一意に示すのに望ましいほどの大きさであるため、この方式は符号語のサイズを縮小する。デコーダは次いで、エンコーダと同様の方法で許容可能なオプションの集合を決定することによって選択をデコードする。許容可能なオプションの集合を決定することにより、デコーダは、符号語を読み取り、エンコーダによって行われた選択を決定することができる。
【0040】
ステップ113で、デコーダがブロックデコーディングを行う。具体的には、デコーダは逆変換を用いて残差ブロックを生成する。次いでデコーダは、残差ブロックおよび対応する予測ブロックを用いて、分割に従って画像ブロックを再構成する。予測ブロックは、ステップ105でエンコーダにおいて生成されたイントラ予測ブロックとインター予測ブロックの両方を含み得る。再構成された画像ブロックは次いで、ステップ111で決定された分割データに従って再構成されたビデオ信号のフレームに配置される。ステップ113のシンタックスも、上述のエントロピー符号化によりビットストリームでシグナリングされ得る。
【0041】
ステップ115で、エンコーダにおけるステップ107と同様の方法で再構成されたビデオ信号のフレームに対してフィルタリングが行われる。例えば、ノイズ抑制フィルタ、デブロッキングフィルタ、適応ループフィルタ、およびSAOフィルタが、ブロッキングアーチファクトを除去するためにフレームに適用され得る。フレームがフィルタリングされると、ステップ117で、エンドユーザが見るためにビデオ信号をディスプレイに出力することができる。
【0042】
図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、およびヘッダフォーマッティングCABACコンポーネント231を含む。そのようなコンポーネントは図示のように結合されている。図2において、黒線はエンコード/デコードされるデータの動きを示しており、破線は他のコンポーネントの動作を制御する制御データの動きを示している。コーデックシステム200のコンポーネントはすべてエンコーダ内に存在し得る。デコーダはコーデックシステム200のコンポーネントのサブセットを含んでいてもよい。例えば、デコーダは、イントラピクチャ予測コンポーネント217、動き補償コンポーネント219、スケーリング逆変換コンポーネント229、ループ内フィルタコンポーネント225、および復号ピクチャバッファコンポーネント223を含んでいてもよい。次にこれよりこれらのコンポーネントについて説明する。
【0043】
分割されたビデオ信号201は、符号化ツリーによって画素のブロックに分割されたキャプチャされたビデオシーケンスである。符号化ツリーは様々なスプリットモードを用いて画素のブロックをより小さい画素のブロックに細分する。次いでこれらのブロックをより小さいブロックにさらに細分することができる。ブロックは符号化ツリー上でノードと呼ばれてもよい。大きい親ノードは小さい子ノードに分割される。ノードが細分される回数はノード/符号化ツリーの深度と呼ばれる。分割されたブロックは、場合によってはCUに含めることもできる。例えば、CUは、CUの対応するシンタックス命令とともに、ルーマブロック、(1または複数の)Crブロック、および(1または複数の)Cbブロックを含む、CTUのサブ部分とすることができる。スプリットモードは、ノードを、用いられるスプリットモードに応じて様々な形状の、それぞれ、2つ、3つ、または4つの子ノードに分割するために用いられるBT、TT、およびQTを含み得る。分割されたビデオ信号201は、圧縮のために総合符号器制御コンポーネント211、変換スケーリング量子化コンポーネント213、イントラピクチャ推定コンポーネント215、フィルタ制御解析コンポーネント227、および動き推定コンポーネント221に転送される。
【0044】
総合符号器制御コンポーネント211は、用途の制約条件に従ってビデオシーケンスの画像をビットストリームに符号化することに関連する決定をするように構成される。例えば、総合符号器制御コンポーネント211はビットレート/ビットストリームサイズ対再構成品質の最適化を管理する。そのような決定は、記憶空間/帯域幅の可用性および画像解像度要求に基づいてなされ得る。総合符号器制御コンポーネント211はまた、バッファのアンダーランおよびオーバーランの問題を軽減するために、伝送速度を踏まえてバッファ利用使用状況を管理する。これらの問題を管理するために、総合符号器制御コンポーネント211は、他のコンポーネントによる分割、予測、およびフィルタリングを管理する。例えば、総合符号器制御コンポーネント211は、動的に、解像度を上げ、帯域幅利用を増大させるために圧縮複雑度を増大させてもよく、または解像度および帯域幅利用を下げるために圧縮複雑度を低下させてもよい。よって、総合符号器制御コンポーネント211は、ビデオ信号再構成品質とビットレート問題とのバランスをとるように、コーデックシステム200のその他のコンポーネントを制御する。総合符号器制御コンポーネント211は、その他のコンポーネントの動作を制御する制御データを作成する。制御データはまた、デコーダでデコーディングのパラメータをシグナリングするためにビットストリームにエンコードされるように、ヘッダフォーマッティングCABACコンポーネント231にも転送される。
【0045】
分割されたビデオ信号201は、インター予測のために動き推定コンポーネント221および動き補償コンポーネント219にも送られる。分割されたビデオ信号201のフレームまたはスライスは複数のビデオブロックに分割され得る。動き推定コンポーネント221および動き補償コンポーネント219は、時間予測を提供するために、1または複数の参照フレーム内の1または複数のブロックを基準にして受け取られたビデオブロックのインター予測符号化を行う。コーデックシステム200は、例えば、ビデオデータのブロックごとに適切な符号化モードを選択するために、複数の符号化パスを実行してもよい。
【0046】
動き推定コンポーネント221および動き補償コンポーネント219は高度に一体化されていてもよいが、概念上別々に示されている。動き推定は、動き推定コンポーネント221によって行われ、ビデオブロックの動きを推定する動きベクトルを生成するプロセスである。動きベクトルは、例えば、予測ブロックに対する符号化されたオブジェクトの変位を示し得る。予測ブロックとは、画素差の観点から、符号化されるブロックに厳密に一致すると認められるブロックである。予測ブロックは参照ブロックとも称されてもよい。そのような画素差は、SAD、SSD、または他の差分測定基準によって決定され得る。HEVCは、CTU、CTB、およびCUを含むいくつかの符号化されたオブジェクトを用いる。例えば、CTUをCTBに分割することができ、次いでCTBを、CUに含めるためにCBに分割することができる。CUを、予測データを含む予測単位および/またはCUの変換された残差データを含むTUとしてエンコードすることができる。動き推定コンポーネント221は、レート歪み最適化プロセスの一部としてレート歪み解析を使用することによって動きベクトル、予測単位、およびTUを生成する。例えば、動き推定コンポーネント221は、現在のブロック/フレームについて複数の参照ブロック、複数の動きベクトルなどを決定してもよく、最良のレート歪み特性を有する参照ブロック、動きベクトルなどを選択してもよい。最良のレート歪み特性は、ビデオ再構成の質(例えば、圧縮によるデータ損失量)と符号化効率(例えば、最終的なエンコーディングのサイズ)とのバランスをとる。
【0047】
いくつかの例では、コーデックシステム200は、復号ピクチャバッファコンポーネント223に格納された参照ピクチャのサブ整数画素位置の値を計算してもよい。例えば、ビデオコーデックシステム200は、参照ピクチャの4分の1画素位置、8分の1画素位置、またはその他の分数画素位置の値を補間してもよい。したがって、動き推定コンポーネント221は、全画素位置および分数画素位置を基準にして動き探索を行い、分数画素精度の動きベクトルを出力し得る。動き推定コンポーネント221は、予測単位の位置を参照ピクチャの予測ブロックの位置と比較することによって、インター符号化スライス内のビデオブロックの予測単位の動きベクトルを計算する。動き推定コンポーネント221は、計算された動きベクトルを動きデータとしてエンコーディングのためにヘッダフォーマッティングCABACコンポーネント231に出力し、動き補償コンポーネント219に動きを出力する。
【0048】
動き補償は、動き補償コンポーネント219によって行われ、動き推定コンポーネント221によって決定された動きベクトルに基づいて予測ブロックをフェッチまたは生成することを伴い得る。ここでもやはり、いくつかの例では、動き推定コンポーネント221と動き補償コンポーネント219とは機能的に一体化されていてもよい。現在のビデオブロックの予測単位の動きベクトルを受け取ると、動き補償コンポーネント219は、動きベクトルが指し示す予測ブロックの位置を特定し得る。次いで、符号化される現在のビデオブロックの画素値から予測ブロックの画素値を引いて画素差の値を形成することによって、残差ビデオブロックが形成される。一般に、動き推定コンポーネント221は、ルーマ成分に対して動き推定を行い、動き補償コンポーネント219はルーマ成分に基づいて計算された動きベクトルをクロマ成分とルーマ成分の両方に使用する。予測ブロックおよび残差ブロックは変換スケーリング量子化コンポーネント213に転送される。
【0049】
分割されたビデオ信号201はまた、イントラピクチャ推定コンポーネント215およびイントラピクチャ予測コンポーネント217にも送られる。動き推定コンポーネント221および動き補償コンポーネント219と同様に、イントラピクチャ推定コンポーネント215とイントラピクチャ予測コンポーネント217も高度に一体化されていてもよいが、概念上別々に示されている。イントラピクチャ推定コンポーネント215およびイントラピクチャ予測コンポーネント217は、上述のように、動き推定コンポーネント221および動き補償コンポーネント219によってフレーム間で行われるインター予測の代替として、現在のフレーム内のブロックを基準にして現在のブロックをイントラ予測する。特に、イントラピクチャ推定コンポーネント215は、現在のブロックをエンコードするために使用するイントラ予測モードを決定する。いくつかの例では、イントラピクチャ推定コンポーネント215は、複数の実証されたイントラ予測モードから現在のブロックをエンコードするのに適切なイントラ予測モードを選択する。選択されたイントラ予測モードは次いで、エンコーディングのためにヘッダフォーマッティングCABACコンポーネント231に転送される。
【0050】
例えば、イントラピクチャ推定コンポーネント215は、様々な実証されたイントラ予測モードについてレート歪み解析を使用してレート歪み値を計算し、実証されたモードの中から最良のレート歪み特性を有するイントラ予測モードを選択する。レート歪み解析は一般に、エンコードされたブロックと、エンコードされたブロックを生成するためにエンコードされた元のエンコードされていないブロックとの間の歪み(または誤差)の量、ならびにエンコードされたブロックを生成するために使用されたビットレート(例えばビット数)を決定する。イントラピクチャ推定コンポーネント215は、どのイントラ予測モードがそのブロックに最良のレート歪み値を示すかを判定するために様々なエンコードされたブロックの歪みおよびレートから比率を計算する。加えて、イントラピクチャ推定コンポーネント215は、RDOに基づくDMMを使用して深度マップの深度ブロックを符号化するように構成されてもよい。
【0051】
イントラピクチャ予測コンポーネント217は、エンコーダ上に実装される場合にはイントラピクチャ推定コンポーネント215によって決定された選択されたイントラ予測モードに基づいて予測ブロックから残差ブロックを生成してもよく、またはデコーダ上に実装される場合にはビットストリームから残差ブロックを読み取ってもよい。残差ブロックは、行列として表された、予測ブロックと元のブロックとの間の値の差を含む。残差ブロックは次いで、変換スケーリング量子化コンポーネント213に転送される。イントラピクチャ推定コンポーネント215およびイントラピクチャ予測コンポーネント217は、ルーマ成分とクロマ成分の両方に作用し得る。
【0052】
変換スケーリング量子化コンポーネント213は、残差ブロックをさらに圧縮するように構成される。変換スケーリング量子化コンポーネント213は、DCT、DST、または概念的に類似する変換などの変換を残差ブロックに適用し、残差変換係数値を含むビデオブロックを生成する。ウェーブレット変換、整数変換、サブバンド変換、または他の種類の変換を使用することもできる。変換は、画素値領域から周波数領域などの変換領域に残差情報を変換し得る。変換スケーリング量子化コンポーネント213はまた、例えば周波数に基づいて、変換された残差情報をスケーリングするようにも構成される。そのようなスケーリングは、異なる周波数情報が、再構成されたビデオの最終的な視覚品質に影響を及ぼし得る異なる粒度で量子化されるように残差情報に倍率を適用することを伴う。変換スケーリング量子化コンポーネント213はまた、ビットレートをさらに低減するために変換係数を量子化するようにも構成される。量子化プロセスは、係数の一部または全部と関連付けられるビット深度を低減させ得る。量子化の度合いは、量子化パラメータを調整することによって変更され得る。いくつかの例では、変換スケーリング量子化コンポーネント213は次いで、量子化された変換係数を含む行列のスキャンを行ってもよい。量子化された変換係数は、ビットストリームにエンコードされるようにヘッダフォーマッティングCABACコンポーネント231に転送される。
【0053】
スケーリング逆変換コンポーネント229は、動き推定を支援するために、変換スケーリング量子化コンポーネント213の逆の操作を適用する。スケーリング逆変換コンポーネント229は、例えば、別の現在のブロックの予測ブロックになり得る参照ブロックとして後で使用するために、残差ブロックを画素領域で再構成するために、逆スケーリング、逆変換、および/または逆量子化を適用する。動き推定コンポーネント221および/または動き補償コンポーネント219は、残差ブロックを、後のブロック/フレームの動き推定で使用するために対応する予測ブロックに戻して加えることによって参照ブロックを計算し得る。スケーリング、量子化、および変換の間に生じるアーチファクトを軽減するために、再構成された参照ブロックにフィルタが適用される。そのようなアーチファクトは、そうしないと、後続のブロックが予測されるときに不正確な予測を生じさせる(また、さらなるアーチファクトを生じる)可能性がある。
【0054】
フィルタ制御解析コンポーネント227およびループ内フィルタコンポーネント225は、残差ブロックおよび/または再構成された画像ブロックにフィルタを適用する。例えば、スケーリング逆変換コンポーネント229からの変換された残差ブロックは、元の画像ブロックを再構成するために、イントラピクチャ予測コンポーネント217および/または動き補償コンポーネント219からの対応する予測ブロックと組み合わされてもよい。フィルタは次いで、再構成された画像ブロックに適用され得る。いくつかの例では、フィルタは、代わりに、残差ブロックに適用されてもよい。図2の他のコンポーネントと同様に、フィルタ制御解析コンポーネント227とループ内フィルタコンポーネント225は、高度に一体化され、一緒に実装されてもよいが、概念上別々に表現されている。再構成された参照ブロックに適用されるフィルタは、特定の空間領域に適用され、そのようなフィルタがどのように適用されるかを調整する複数のパラメータを含む。フィルタ制御解析コンポーネント227は、再構成された参照ブロックを解析して、そのようなフィルタがどこで適用されるべきかを判定し、対応するパラメータを設定する。そのようなデータは、エンコーディングのためのフィルタ制御データとしてヘッダフォーマッティングCABACコンポーネント231に転送される。ループ内フィルタコンポーネント225は、フィルタ制御データに基づいてそのようなフィルタを適用する。フィルタは、デブロッキングフィルタ、ノイズ抑制フィルタ、SAOフィルタ、および適応ループフィルタを含み得る。そのようなフィルタは、例によっては、空間/画素領域で(例えば、再構成された画素ブロック上で)、または周波数領域で、適用され得る。
【0055】
エンコーダとして動作する場合、フィルタリングされた再構成された画像ブロック、残差ブロック、および/または予測ブロックは、上述のように後で動き推定に使用するため復号ピクチャバッファコンポーネント223に格納される。デコーダとして動作する場合、復号ピクチャバッファコンポーネント223は、再構成されフィルタリングされたブロックを格納し、出力ビデオ信号の一部としてディスプレイに向けて転送する。復号ピクチャバッファコンポーネント223は、予測ブロック、残差ブロック、および/または再構成された画像ブロックを格納することができる任意のメモリデバイスであってもよい。
【0056】
ヘッダフォーマッティングCABACコンポーネント231は、コーデックシステム200の様々なコンポーネントからデータを受け取り、そのようなデータをデコーダに向けて伝送するために符号化されたビットストリームにエンコードする。具体的には、ヘッダフォーマッティングCABACコンポーネント231は、一般制御データやフィルタ制御データなどの制御データをエンコードするために、様々なヘッダを生成する。さらに、イントラ予測および動きデータを含む予測データ、ならびに量子化された変換係数データの形の残差データは、すべてビットストリームにエンコードされる。最終的なビットストリームは、元の分割されたビデオ信号201を再構成するためにデコーダによって求められるすべての情報を含む。そのような情報はまた、イントラ予測モードインデックステーブル(符号語マッピングテーブルとも呼ばれる)、様々なブロックのエンコーディングコンテキストの定義、最確イントラ予測モードの指示、分割情報の指示なども含み得る。そのようなデータは、エントロピー符号化を用いてエンコードされ得る。例えば、情報は、CAVLC、CABAC、SBAC、PIPE符号化、または別のエントロピー符号化技法を用いることによってエンコードされてもよい。エントロピー符号化に続いて、符号化されたビットストリームは、別のデバイス(例えばビデオデコーダ)に伝送され得るか、または後で伝送もしくは取得するため格納され得る。
【0057】
図3は、例示的なビデオエンコーダ300を示すブロック図である。ビデオエンコーダ300は、コーデックシステム200のエンコード機能を実装するために、かつ/または動作方法100のステップ101、ステップ103、ステップ105、ステップ107、および/もしくはステップ109を実装するために用いられ得る。エンコーダ300は入力ビデオ信号を分割し、結果として分割されたビデオ信号301が得られ、これは分割されたビデオ信号201と実質的に同様である。分割されたビデオ信号301は次いで、エンコーダ300のコンポーネントによって圧縮され、ビットストリームにエンコードされる。
【0058】
具体的には、分割されたビデオ信号301は、イントラ予測のためにイントラピクチャ予測コンポーネント317に転送される。イントラピクチャ予測コンポーネント317は、イントラピクチャ推定コンポーネント215およびイントラピクチャ予測コンポーネント217と実質的に同様であってもよい。分割されたビデオ信号301は、復号ピクチャバッファコンポーネント323内の参照ブロックに基づくインター予測のために動き補償コンポーネント321にも転送される。動き補償コンポーネント321は、動き推定コンポーネント221および動き補償コンポーネント219と実質的に同様であってもよい。イントラピクチャ予測コンポーネント317および動き補償コンポーネント321からの予測ブロックおよび残差ブロックは、残差ブロックの変換および量子化のために変換量子化コンポーネント313に転送される。変換量子化コンポーネント313は、変換スケーリング量子化コンポーネント213と実質的に同様であってもよい。変換され量子化された残差ブロックおよび対応する予測ブロックは(関連付けられた制御データとともに)、ビットストリームへの符号化のためにエントロピー符号化コンポーネント331に転送される。エントロピー符号化コンポーネント331は、ヘッダフォーマッティングCABACコンポーネント231と実質的に同様であってもよい。
【0059】
変換され量子化された残差ブロックおよび/または対応する予測ブロックは、動き補償コンポーネント321が使用するための参照ブロックに再構成するために変換量子化コンポーネント313から逆変換量子化コンポーネント329にも転送される。逆変換量子化コンポーネント329は、スケーリング逆変換コンポーネント229と実質的に同様であってもよい。例によっては、ループ内フィルタコンポーネント325内のループ内フィルタも残差ブロックおよび/または再構成された参照ブロックに適用される。ループ内フィルタコンポーネント325は、フィルタ制御解析コンポーネント227およびループ内フィルタコンポーネント225と実質的に同様であってもよい。ループ内フィルタコンポーネント325は、ループ内フィルタコンポーネント225に関して説明されたように複数のフィルタを含んでいてもよい。フィルタリングされたブロックは次いで、動き補償コンポーネント321が参照ブロックとして使用するために、復号ピクチャバッファコンポーネント323に格納される。復号ピクチャバッファコンポーネント323は、復号ピクチャバッファコンポーネント223と実質的に同様であってもよい。
【0060】
図4は、例示的なビデオデコーダ400を示すブロック図である。ビデオデコーダ400は、コーデックシステム200のデコード機能を実装するために、かつ/または動作方法100のステップ111、ステップ113、ステップ115、および/もしくはステップ117を実装するために用いられ得る。デコーダ400は、例えばエンコーダ300から、ビットストリームを受け取り、エンドユーザに表示するためにビットストリームに基づいて再構成された出力ビデオ信号を生成する。
【0061】
ビットストリームは、エントロピーデコーディングコンポーネント433によって受け取られる。エントロピーデコーディングコンポーネント433は、CAVLC、CABAC、SBAC、PIPE符号化、またはその他のエントロピー符号化技法など、エントロピーデコーディング方式を実装するように構成される。例えば、エントロピーデコーディングコンポーネント433は、ヘッダ情報を用いて、ビットストリームに符号語としてエンコードされる追加データを解釈するためのコンテキストを提供し得る。デコードされた情報は、一般制御データ、フィルタ制御データ、分割情報、動きデータ、予測データ、残差ブロックからの量子化された変換係数など、ビデオ信号のデコードするための任意の求められる情報を含む。量子化された変換係数は、残差ブロックへの再構成のために逆変換量子化コンポーネント429に転送される。逆変換量子化コンポーネント429は、逆変換量子化コンポーネント329と同様であってもよい。
【0062】
再構成された残差ブロックおよび/または予測ブロックは、イントラ予測操作に基づく画像ブロックへの再構成のためにイントラピクチャ予測コンポーネント417に転送される。イントラピクチャ予測コンポーネント417は、イントラピクチャ推定コンポーネント215およびイントラピクチャ予測コンポーネント217と同様であってもよい。具体的には、イントラピクチャ予測コンポーネント417は、予測モードを用いてフレーム内で参照ブロックの位置を特定し、その結果に残差ブロックを適用してイントラ予測された画像ブロックを再構成する。再構成されたイントラ予測された画像ブロックおよび/または残差ブロックならびに対応するインター予測データは、ループ内フィルタコンポーネント425を介して復号ピクチャバッファコンポーネント423に転送され、これらのコンポーネントはそれぞれ、復号ピクチャバッファコンポーネント223およびループ内フィルタコンポーネント225と実質的に同様であってもよい。ループ内フィルタコンポーネント425は、再構成された画像ブロック、残差ブロック、および/または予測ブロックをフィルタリングし、そのような情報は復号ピクチャバッファコンポーネント423に格納される。復号ピクチャバッファコンポーネント423からの再構成された画像ブロックは、インター予測のために動き補償コンポーネント421に転送される。動き補償コンポーネント421は、動き推定コンポーネント221および/または動き補償コンポーネント219と実質的に同様であってもよい。具体的には、動き補償コンポーネント421は、参照ブロックからの動きベクトルを用いて予測ブロックを生成し、その結果に残差ブロックを適用して画像ブロックを再構成する。得られた再構成されたブロックはまた、ループ内フィルタコンポーネント425を介して復号ピクチャバッファコンポーネント423にも転送され得る。復号ピクチャバッファコンポーネント423は、さらなる再構成された画像ブロックを引き続き格納し、これらの再構成された画像ブロックを分割情報によってフレームに再構成することができる。そのようなフレームは、シーケンスに配置され得る。シーケンスは、再構成された出力ビデオ信号としてディスプレイに向けて出力される。
【0063】
図5は、ピクチャビデオストリーム500から抽出された複数のサブピクチャビデオストリーム501、502、503を示す概略図である。例えば、サブピクチャビデオストリーム501~503またはピクチャビデオストリーム500の各々は、方法100に従って、コーデックシステム200やエンコーダ300などのエンコーダによってエンコードされ得る。さらに、サブピクチャビデオストリーム501~503またはピクチャビデオストリーム500は、コーデックシステム200またはデコーダ400などのデコーダによってデコードされてもよい。
【0064】
ピクチャビデオストリーム500は、時間の経過とともに提示される複数のピクチャを含む。ピクチャビデオストリーム500は、VRアプリケーションで使用するように構成される。VRは、ユーザが球の中心にいるかのように表示することができるビデオコンテンツの球を符号化することによって動作する。各ピクチャは全球を含む。一方、ビューポートとして知られるピクチャの一部のみがユーザに表示される。例えば、ユーザは、ユーザの頭部の動きに基づいて球のビューポートを選択して表示するHMDを用いてもよい。これは、ビデオによって表現されるように仮想空間内に物理的に存在しているという印象を与える。この結果を達成するために、ビデオシーケンスの各ピクチャは、対応する瞬間のビデオデータの全球を含む。しかしながら、ユーザにはピクチャのごく一部(例えば、単一のビューポート)のみが表示される。ピクチャの残りの部分は、レンダリングされることなくデコーダで破棄される。ユーザの頭部の動きに応答して異なるビューポートを動的に選択して表示することができるように、ピクチャ全体が送信され得る。
【0065】
ピクチャビデオストリーム500のピクチャを、利用可能なビューポートに基づいてサブピクチャに各々細分することができる。したがって、各ピクチャおよび対応するサブピクチャは、時間的提示の一部として時間的位置(例えば、ピクチャ順序)を含む。サブピクチャビデオストリーム501~503は、細分割が時間の経過とともに一貫して適用されるときに作成される。このような一貫した細分割は、各ストリームは、ピクチャビデオストリーム500内の対応するピクチャに対して所定のサイズ、形状、および空間的位置のサブピクチャのセットを含む、サブピクチャビデオストリーム501~503を作成する。さらに、サブピクチャビデオストリーム501~503内のサブピクチャのセットは、提示時間にわたって時間的位置が変化する。このため、サブピクチャビデオストリーム501~503のサブピクチャを、時間的位置に基づいて時間領域で整列させることができる。次いで、各時間的位置におけるサブピクチャビデオストリーム501~503からのサブピクチャを、所定の空間的位置に基づいて空間領域においてマージして、表示のためのピクチャビデオストリーム500を再構成することができる。具体的には、サブピクチャビデオストリーム501~503を、別々のサブビットストリームに各々エンコードすることができる。そのようなサブビットストリームが一緒にマージされると、それらは、経時的にピクチャのセット全体を含むビットストリームをもたらす。結果として得られるビットストリームを、ユーザの現在選択されているビューポートに基づいてデコードおよび表示するためにデコーダに向けて送信することができる。
【0066】
すべてのサブピクチャビデオストリーム501~503は、高品質でユーザに送信され得る。これにより、デコーダが、ユーザの現在のビューポートを動的に選択し、対応するサブピクチャビデオストリーム501~503からのサブピクチャをリアルタイムで表示することが可能になる。しかしながら、ユーザは、例えばサブピクチャビデオストリーム501からの単一のビューポートのみを見ることができ、サブピクチャビデオストリーム502~503は破棄される。このため、サブピクチャビデオストリーム502~503を高品質で送信することによりかなりの量の帯域幅が浪費される可能性がある。符号化効率を改善するために、VRビデオは、各ビデオストリーム500が異なる品質でエンコードされる複数のビデオストリーム500にエンコードされ得る。このようにして、デコーダは、現在のサブピクチャビデオストリーム501を求める要求を送信することができる。それに応答して、エンコーダは、高品質のビデオストリーム500から高品質のサブピクチャビデオストリーム501を選択し、低品質のビデオストリーム500から低品質のサブピクチャビデオストリーム502~503を選択することができる。エンコーダは次いで、そのようなサブビットストリームを、デコーダへの送信のために完全なエンコードされたビットストリームにマージすることができる。このようにして、デコーダは、現在のビューポートがより高品質であり、その他のビューポートがより低品質である一連のピクチャを受信する。さらに、最高品質のサブピクチャは一般にユーザに表示され、低品質のサブピクチャは一般に破棄され、機能性と符号化効率とのバランスがとられる。
【0067】
ユーザが視点をサブピクチャビデオストリーム501からサブピクチャビデオストリーム502に転じる場合には、デコーダは、新しい現在のサブピクチャビデオストリーム502がより高い品質で送信されるよう要求する。エンコーダは次いで、それに応じてマージメカニズムを変更することができる。
【0068】
サブピクチャは、テレビ会議システムでも用いられ得る。そのような場合、各ユーザのビデオフィードは、サブピクチャビデオストリーム501、502または503などのサブピクチャビットストリームに含まれる。システムは、そのようなサブピクチャビデオストリーム501、502または503を受信し、それらを異なる位置または解像度で組み合わせて、ユーザに返送するための完全なピクチャビデオストリーム500を作成することができる。これにより、テレビ会議システムが、例えばサブピクチャビデオストリーム501、502または503のサイズを増減させることによって、ユーザ入力の変更に基づいてピクチャビデオストリーム500を動的に変更して、現在発言しているユーザを強調したり、もう発言していないユーザを強調解除したりすることが可能になる。したがって、サブピクチャは、ユーザ挙動の変化に基づいて実行時にピクチャビデオストリーム500が動的に変更されることを可能にする多くのアプリケーションを有する。この機能は、サブピクチャビデオストリーム501、502または503を、ピクチャビデオストリーム500から抽出またはピクチャビデオストリーム500に結合することによって達成され得る。
【0069】
図6は、サブビットストリーム601に分割された例示的なビットストリーム600を示す概略図である。ビットストリーム600は、ピクチャビデオストリーム500などのピクチャビデオストリームを含んでいてもよく、サブビットストリーム601は、サブピクチャビデオストリーム501、502または503などのサブピクチャビデオストリームを含んでいてもよい。例えば、ビットストリーム600およびサブビットストリーム601は、コーデックシステム200またはデコーダ400によってデコードするために、コーデックシステム200および/またはエンコーダ300によって生成することができる。別の例として、ビットストリーム600およびサブビットストリーム601は、ステップ111においてデコーダが使用するために方法100のステップ109においてエンコーダによって生成されてもよい。
【0070】
ビットストリーム600は、SPS610と、複数のPPS611と、複数のスライスヘッダ615と、画像データ620とを含む。SPS610は、ビットストリーム600に含まれるビデオシーケンス内のすべてのピクチャに共通するシーケンスデータを含む。そのようなデータは、ピクチャサイジング、ビット深度、符号化ツールパラメータ、またはビットレート制限を含むことができる。PPS611は、ピクチャ全体に適用されるパラメータを含む。よって、ビデオシーケンス内の各ピクチャは、PPS611を参照し得る。各ピクチャがPPS611を参照するが、単一のPPS611は複数のピクチャのデータを含むことができる。例えば、複数の類似したピクチャが、類似したパラメータに従って符号化されてもよい。そのような場合には、単一のPPS611が、そのような類似したピクチャのデータを含み得る。PPS611は、対応するピクチャ内のスライスに利用可能な符号化ツール、量子化パラメータ、またはオフセットを示すことができる。スライスヘッダ615は、ピクチャ内の各スライスに固有のパラメータを含む。よって、ビデオシーケンスにはスライスごとに1つのスライスヘッダ615があってよい。スライスヘッダ615は、スライスタイプ情報、POC、RPL、予測重み、タイルエントリポイント、またはデブロッキングパラメータを含み得る。スライスヘッダ615は、タイルグループヘッダとも呼ばれ得る。ビットストリーム600は、ピクチャヘッダを含んでいてもよく、ピクチャヘッダは、単一のピクチャ内のすべてのスライスに適用されるパラメータを含むシンタックス構造である。このために、ピクチャヘッダとスライスヘッダ615とは、互換的に使用され得る。例えば、特定のパラメータが、そのようなパラメータがピクチャ内のすべてのスライスに共通するかどうかに応じて、スライスヘッダ615とピクチャヘッダとの間で移動されてもよい。
【0071】
画像データ620は、インター予測、イントラ予測、またはレイヤ間予測に従ってエンコードされたビデオデータ、ならびに対応する変換され量子化された残差データを含む。例えば、ビデオシーケンスは、複数のピクチャ621を含む。ピクチャ621とは、フレームまたはそのフィールドを形成するルーマサンプルの配列またはクロマサンプルの配列である。フレームは、ビデオシーケンスにおいて対応する瞬間にユーザに完全にまたは部分的に表示することが意図される完全な画像である。ピクチャ621は、1または複数のスライスを含む。スライスは、単一のNAL単位に排他的に含まれるピクチャ621の整数個の完全なタイルまたは(例えばタイル内の)整数個の連続した完全なCTU行として定義され得る。スライスは、CTUまたはCTBにさらに分割される。CTUは、符号化ツリーによって分割することができる所定のサイズのサンプルのグループである。CTBは、CTUのサブセットであり、CTUのルーマ成分またはクロマ成分を含む。CTU/CTBは、符号化ツリーに基づいて符号化ブロックにさらに分割される。次いで符号化ブロックを、予測メカニズムに従ってエンコード/デコードすることができる。
【0072】
ピクチャ621は、複数のサブピクチャ623、624に分割することができる。サブピクチャ623または624は、ピクチャ621内の1または複数のスライスの長方形領域である。よって、スライスの各々、およびその細分割を、サブピクチャ623または624に割り当てることができる。これにより、ピクチャ621の異なる領域を、どのサブピクチャ623または624がそのような領域を含むかに応じて符号化の観点とは異なるように扱うことが可能になる。
【0073】
サブビットストリーム601は、サブビットストリーム抽出プロセス605に従ってビットストリーム600から抽出することができる。サブビットストリーム抽出プロセス605は、ビットストリームからターゲットセットの一部ではないNAL単位を除去して、ターゲットセットに含まれるNAL単位を含む出力サブビットストリームを得る指定されたメカニズムである。NAL単位は、スライスを含む。このため、サブビットストリーム抽出プロセス605は、スライスのターゲットセットを保持し、他のスライスを除去する。ターゲットセットは、サブピクチャ境界に基づいて選択することができる。サブピクチャ623内のスライスはターゲットセットに含まれ、サブピクチャ624内のスライスはターゲットセットに含まれない。このため、サブビットストリーム抽出プロセス605は、ビットストリーム600と実質的に同様であるが、サブピクチャ623を含み、サブピクチャ624を除外したサブビットストリーム601を作成する。サブビットストリーム抽出プロセス605は、エンコーダによって、またはユーザ挙動/要求に基づいてビットストリーム600を動的に変更するように構成された関連付けられたスライサによって行われ得る。
【0074】
したがって、サブビットストリーム601は、入力ビットストリーム600に適用されたサブビットストリーム抽出プロセス605の結果である抽出されたビットストリームである。入力ビットストリーム600は、サブピクチャのセットを含む。しかしながら、抽出されたビットストリーム(例えば、サブビットストリーム601)は、サブビットストリーム抽出プロセス605への入力ビットストリーム600のサブピクチャのサブセットのみを含む。入力ビットストリーム600内のサブピクチャのセットはサブピクチャ623、624を含み、サブビットストリーム601内のサブピクチャのサブセットはサブピクチャ623を含むが、サブピクチャ624を含まない。任意の数のサブピクチャ623~624を用いることができる。例えば、ビットストリーム600はN個のサブピクチャ623~624を含んでいてもよく、サブビットストリームはN-1個以下のサブピクチャ623を含んでいてもよく、Nは任意の整数値である。
【0075】
上述のように、ピクチャは複数のサブピクチャに分割されてもよく、各サブピクチャは長方形領域をカバーし、整数個の完全なスライスを含む。サブピクチャ分割は、CVS内のすべてのピクチャにわたって持続し、分割情報はSPSでシグナリングされる。サブピクチャは、動き補償のために他のサブピクチャからのサンプル値を使用せずに符号化され得る。
【0076】
サブピクチャごとに、フラグloop_filter_across_subpic_enabled_flag[i]は、サブピクチャにまたがるループ内フィルタリングが許容されるか否かを指定する。フラグは、ALF、SAO、およびデブロッキングツールをカバーする。サブピクチャごとのフラグの値は異なり得るので、2つの隣接するサブピクチャは異なるフラグの値を有し得る。デブロッキングは、デブロックされている境界の左側と右側の両方でサンプル値を変更するので、その差は、ALFおよびSAOよりもデブロッキングの動作に影響を及ぼす。よって、2つの隣接するサブピクチャが異なるフラグの値を有する場合、両方のサブピクチャによって共有される境界に沿ったサンプルにはデブロッキングが適用されず、可視のアーチファクトが生じる。これらのアーチファクトを回避することが望ましい。
【0077】
本明細書で開示されるのは、サブピクチャデブロッキングのためのフィルタフラグの実施形態である。第1の実施形態では、2つのサブピクチャが互いに隣接しており(例えば、第1のサブピクチャの右境界が第2のサブピクチャの左境界でもあり、または第1のサブピクチャの下境界が第2のサブピクチャの上境界でもあり)、2つのサブピクチャのloop_filter_across_subpic_enabled_flag[i]の値が異なる場合、2つのサブピクチャによって共有される境界のデブロッキングに2つの条件が適用される。第一に、loop_filter_across_subpic_enabled_flag[i]が0に等しいサブピクチャでは、隣接するサブピクチャと共有される境界にあるブロックにデブロッキングが適用されない。第二に、loop_filter_across_subpic_enabled_flag[i]が1に等しいサブピクチャでは、隣接するサブピクチャと共有される境界にあるブロックにデブロッキングが適用される。そのデブロッキングを実現するために、通常のデブロッキングプロセスごとに境界強度判定が適用され、サンプルフィルタリングは、loop_filter_across_subpic_enabled_flag[i]が1に等しいサブピクチャに属するサンプルにのみ適用される。第2の実施形態では、subpic_treated_as_pic_flag[i]の値が1に等しく、loop_filter_across_subpic_enabled_flag[i]の値が0に等しいサブピクチャが存在する場合、すべてのサブピクチャのloop_filter_across_subpic_enabled_flag[i]の値は0に等しいものとする。第3の実施形態では、サブピクチャごとにloop_filter_across_subpic_enabled_flag[i]をシグナリングする代わりに、サブピクチャにまたがるループフィルタが使用可能であるか否かを指定するために1つのフラグのみがシグナリングされる。開示の実施形態は、上述のアーチファクトを低減または排除し、エンコードされたビットストリームにおいて無駄なビットがより少なくなる。
【0078】
SPSは、実施形態を実装するために以下のシンタックスおよびセマンティクスを有する。
【0079】
【表1】
【0080】
図示されるように、サブピクチャごとにloop_filter_across_subpic_enabled_flag[i]をシグナリングする代わりに、サブピクチャにまたがるループフィルタが使用可能であるか否かを指定するために1つのフラグのみがシグナリングされ、そのフラグはSPSレベルでシグナリングされる。
【0081】
1に等しいloop_filter_across_subpic_enabled_flagは、CVS内の各符号化されたピクチャ内のサブピクチャの境界にまたがってループ内フィルタリング操作が行われ得ることを指定する。0に等しいloop_filter_across_subpic_enabled_flagは、CVS内の各符号化されたピクチャ内のサブピクチャの境界にまたがってループ内フィルタリング操作が行われないことを指定する。存在しない場合、loop_filter_across_subpic_enabled_pic_flagの値は1に等しいと推測される。
【0082】
一般的なデブロッキングフィルタプロセス
デブロッキングフィルタは、ブロック間の境界における視覚的アーチファクトの出現を最小限に抑えるためにデコードプロセスの一部として適用されるフィルタリングプロセスである。一般的なデブロッキングフィルタプロセスへの入力は、デブロッキング前の再構成されたピクチャ(配列recPicture)であり、配列recPictureCbおよび配列recPictureCrは、ChromaArrayTypeが0に等しくない場合の入力である。
【0083】
一般的なデブロッキングフィルタプロセスの出力は、デブロッキング後の修正された再構成されたピクチャ(配列recPicture)、およびChromaArrayTypeが0に等しくない場合の配列recPictureCbおよび配列recPictureCrである。
【0084】
ピクチャ内の垂直エッジがまずフィルタリングされる。次いで、ピクチャ内の水平エッジが、垂直エッジフィルタリングプロセスによって修正されたサンプルを入力として用いてフィルタリングされる。各CTUのCTB内の垂直エッジおよび水平エッジは、CUベースで別々に処理される。CU内の符号化ブロックの垂直エッジは、符号化ブロックの左側のエッジから開始し、幾何学的順序で符号化ブロックの右側に向かってエッジを進んでフィルタリングされる。CU内の符号化ブロックの水平エッジは、符号化ブロックの上部のエッジから開始し、幾何学的順序で符号化ブロックの下部に向かってエッジを進んでフィルタリングされる。フィルタリングプロセスはピクチャ単位で指定されるが、デコーダが同じ出力値を生成するように処理依存性順序を適切に考慮する限り、フィルタリングプロセスを同等の結果でCU単位で実装することができる。
【0085】
デブロッキングフィルタプロセスは、以下のタイプのエッジを除く、ピクチャのすべての符号化サブブロックエッジおよび変換ブロックエッジに適用される:ピクチャの境界にあるエッジ、loop_filter_across_subpic_enabled_flagが0に等しいときにサブピクチャの境界と一致するエッジ、pps_loop_filter_across_virtual_boundaries_disabled_flagが1に等しいときにピクチャの仮想境界と一致するエッジ、loop_filter_across_bricks_enabled_flagが0に等しいときにレンガ境界と一致するエッジ、loop_filter_across_slices_enabled_flagが0に等しいときにスライス境界と一致するエッジ、slice_deblocking_filter_disabled_flagが1に等しいときにスライスの上境界または左境界と一致するエッジ、slice_deblocking_filter_disabled_flagが1に等しいスライス内のエッジ、ルーマ成分の4×4サンプルグリッド境界に対応しないエッジ、クロマ成分の8×8サンプルグリッド境界に対応しないエッジ、エッジの両側が1に等しいintra_bdpcm_flagを有するルーマ成分内のエッジ、および関連付けられた変換単位のエッジではないクロマサブブロックのエッジ。サブブロックは、ブロックまたは符号化ブロックの分割、例えば64×64ブロックの64×32分割である。変換ブロックは、デコードプロセスにおける変換から生じるサンプルの長方形M×Nブロックである。変換は、変換係数のブロックを空間領域値のブロックに変換するためのデコードプロセスの一部である。デブロッキングフィルタプロセスについて説明したが、同じ制約は、SAOプロセスおよびALFプロセスにも適用され得る。
【0086】
一方向デブロッキングフィルタプロセス
一方向デブロッキングフィルタプロセスへの入力は、ルーマ成分(DUAL_TREE_LUMA)またはクロマ成分(DUAL_TREE_CHROMA)が現在処理されているかどうかを指定する変数treeType、treeTypeがDUAL_TREE_LUMAに等しい場合のデブロッキング前の再構成されたピクチャ(例えば、配列recPicture)、ChromaArrayTypeが0に等しくなく、treeTypeがDUAL_TREE_CHROMAに等しい場合の配列recPictureCbおよび配列recPictureCr、ならびに垂直エッジ(EDGE_VER)または水平エッジ(EDGE_HOR)がフィルタリングされるかどうかを指定する変数edgeTypeである。
【0087】
一方向デブロッキングフィルタプロセスへの出力は、デブロッキング後の修正された再構成されたピクチャ、具体的には、treeTypeがDUAL_TREE_LUMAに等しい場合の配列recPicture、ならびにChromaArrayTypeが0に等しくなく、treeTypeがDUAL_TREE_CHROMAに等しい場合の配列recPictureCbおよび配列recPictureCrである。
【0088】
変数firstCompIdxおよびlastCompIdxは、以下のように導出される。
firstCompIdx=(treeType==DUAL_TREE_CHROMA)?1:0
lastCompIdx=(treeType==DUAL_TREE_LUMA | | ChromaArrayType==0)?0:2
【0089】
符号化ブロック幅nCbW、符号化ブロック高さnCbH、および符号化ブロックの左上サンプルの位置(xCb,yCb)を有する、firstCompIdxおよびlastCompIdxを含む、firstCompIdxからlastCompIdxまでの範囲の色成分インデックスcIdxによって示されるCUの色成分ごとの各CUおよび各符号化ブロックについて、cIdxが0に等しい場合、またはcIdxが0に等しくなく、edgeTypeがEDGE_VERに等しく、xCb%8が0に等しい場合、またはcIdxが0に等しくなく、edgeTypeがEDGE_HORに等しく、yCb%8が0に等しい場合、エッジは以下の順序付きステップによってフィルタリングされる。
【0090】
ステップ1:変数filterEdgeFlagは以下のように導出される:第一に、edgeTypeがEDGE_VERに等しく、以下の条件のうちの1または複数が真である場合、filterEdgeFlagは0に等しく設定される:現在の符号化ブロックの左境界がピクチャの左境界である、現在の符号化ブロックの左境界がサブピクチャの左境界または右境界であり、loop_filter_across_subpic_enabled_flagが0に等しい、現在の符号化ブロックの左境界がレンガの左境界であり、loop_filter_across_bricks_enabled_flagが0に等しい、現在の符号化ブロックの左境界がスライスの左境界であり、loop_filter_across_slices_enabled_flagが0に等しい、または現在の符号化ブロックの左境界が、ピクチャの垂直仮想境界のうちの1つであり、pps_loop_filter_across_virtual_boundaries_disabled_flagが1に等しい。第二に、そうではなく、edgeTypeがEDGE_HORに等しく、以下の条件のうちの1または複数が真である場合、変数filterEdgeFlagは0に等しく設定される:現在のルーマ符号化ブロックの上境界がピクチャの上境界である、現在の符号化ブロックの上境界がサブピクチャの上境界または下境界であり、loop_filter_across_subpic_enabled_flagが0に等しい、現在の符号化ブロックの上境界がレンガの上境界であり、loop_filter_across_bricks_enabled_flagが0に等しい、現在の符号化ブロックの上境界がスライスの上境界であり、loop_filter_across_slices_enabled_flagが0に等しい、または現在の符号化ブロックの上境界がピクチャの水平仮想境界のうちの1つであり、pps_loop_filter_across_virtual_boundaries_disabled_flagが1に等しい。第三に、そうでない場合、filterEdgeFlagは1に等しく設定される。filterEdgeFlagは、ブロックのエッジが、例えばループ内フィルタリングを使用してフィルタリングされる必要があるかどうかを指定する変数である。エッジとは、ブロックの境に沿った画素を指す。現在の符号化ブロックとは、デコーダによって現在デコードされている符号化ブロックである。サブピクチャとは、ピクチャ内の1または複数のスライスの長方形領域である。
【0091】
ステップ2:2次元(nCbW)x(nCbH)配列edgeFlag、maxFilterLengthQs、およびmaxFilterlengthPsのすべての要素が0に等しくなるように初期設定される。
【0092】
ステップ3:VVCの第8.8.3.3項で指定された変換ブロック境界の導出プロセスが、位置(xCb,yCb)、符号化ブロック幅nCbW、符号化ブロック高さnCbH、変数cIdx、変数filterEdgeFlag、配列edgeFlag、最大フィルタ長配列maxFilterLengthPsおよびmaxFilterLengthQs、ならびに変数edgeTypeを入力として、修正された配列edgeFlag、修正された最大フィルタ長配列maxFilterLengthPsおよびmaxFilterLengthQsを出力として呼び出される。
【0093】
ステップ4:cIdxが0に等しい場合、VVCの第8.8.3.4項で指定された符号化サブブロック境界の導出プロセスが、位置(xCb,yCb)、符号化ブロック幅nCbW、符号化ブロック高さnCbH、配列edgeFlag、最大フィルタ長配列maxFilterLengthPsおよびmaxFilterLengthQs、ならびに変数edgeTypeを入力として、修正された配列edgeFlag、修正された最大フィルタ長配列maxFilterLengthPsおよびmaxFilterLengthQsを出力として呼び出される。
【0094】
ステップ5:ピクチャサンプル配列recPictureが、以下のように導出される:cIdxが0に等しい場合、recPictureが、recPictureLをデブロッキングする前の再構成されたルーマピクチャサンプル配列に等しく設定される。そうではなく、cIdxが1に等しい場合、recPictureが、recPictureCbをデブロッキングする前の再構成されたクロマピクチャサンプル配列に等しく設定される。そうでない(cIdxが2に等しい)場合、recPictureが、recPictureCrをデブロッキングする前の再構成されたクロマピクチャサンプル配列に等しく設定される。
【0095】
ステップ6:VVCの第8.8.3.5項で指定された境界フィルタリング強度の導出プロセスが、ピクチャサンプル配列recPicture、ルーマ位置(xCb,yCb)、符号化ブロック幅nCbW、符号化ブロック高さnCbH、変数edgeType、変数cIdx、および配列edgeFlagを入力として、(nCbW)×(nCbH)配列bSを出力として呼び出される。
【0096】
ステップ7:一方向のためのエッジフィルタリングプロセスが、VVCの第8.8.3.6項で指定されるような符号化ブロックに対して、変数edgeType、変数cIdx、デブロッキング前の再構成されたピクチャrecPicture、位置(xCb,yCb)、符号化ブロック幅nCbW、符号化ブロック高さnCbH、ならびに配列bS、maxFilterLengthPs、およびmaxFilterLengthQsを入力として、修正された再構成されたピクチャrecPictureを出力として呼び出される。
【0097】
図7は、第1の実施形態によるビットストリームをデコードする方法700を示すフローチャートである。デコーダ400は、方法700を実装し得る。ステップ710で、ピクチャおよびloop_filter_across_subpic_enabled_flagを含むビデオビットストリームが受け取られる。ピクチャはサブピクチャを含む。最後に、ステップ720で、loop_filter_across_subpic_enabled_flagが0に等しいときにサブピクチャの境界と一致するエッジを除くピクチャのすべてのサブブロックエッジおよび変換ブロックエッジにデブロッキングフィルタプロセスが適用される。
【0098】
方法700は、追加の実施形態を実施してもよい。例えば、1に等しいloop_filter_across_subpic_enabled_flagは、CVS内の各符号化されたピクチャ内のサブピクチャの境界にまたがってループ内フィルタリング操作が行われ得ることを指定する。0に等しいloop_filter_across_subpic_enabled_flagは、CVS内の各符号化されたピクチャ内のサブピクチャの境界にまたがってループ内フィルタリング操作が行われないことを指定する。
【0099】
図8は、第1の実施形態によるビットストリームをエンコードする方法800を示すフローチャートである。エンコーダ300は、方法800を実装し得る。ステップ810で、loop_filter_across_subpic_enabled_flagが0に等しいときに、デブロッキングフィルタプロセスが、サブピクチャの境界と一致するエッジを除くピクチャのすべてのサブブロックエッジおよび変換ブロックエッジに適用されるように、loop_filter_across_subpic_enabled_flagが生成される。ステップ820で、loop_filter_across_subpic_enabled_flagがビデオビットストリームにエンコードされる。最後に、ステップ830で、ビデオビットストリームがビデオデコーダに向けた通信のために格納される。
【0100】
方法800は、追加の実施形態を実施してもよい。例えば、1に等しいloop_filter_across_subpic_enabled_flagは、CVS内の各符号化されたピクチャ内のサブピクチャの境界にまたがってループ内フィルタリング操作が行われ得ることを指定する。0に等しいloop_filter_across_subpic_enabled_flagは、CVS内の各符号化されたピクチャ内のサブピクチャの境界にまたがってループ内フィルタリング操作が行われないことを指定する。方法800は、seq_parameter_set_rbspを生成するステップと、seq_parameter_set_rbspにloop_filter_across_subpic_enabled_flagを含めるステップと、seq_parameter_set_rbspをビデオビットストリームにエンコードすることによって、loop_filter_across_subpic_enabled_flagをビデオビットストリームにさらにエンコードするステップと、をさらに含む。
【0101】
図9は、第2の実施形態によるビットストリームをデコードする方法900を示すフローチャートである。デコーダ400は、方法900を実装し得る。
【0102】
ステップ910で、ピクチャ、EDGE_VER、およびloop_filter_across_subpic_enabled_flagを含むビデオビットストリームが受け取られる。ピクチャはサブピクチャを含む。最後に、ステップ920で、edgeTypeがEDGE_VERに等しく、現在の符号化ブロックの左境界がサブピクチャの左境界であり、loop_filter_across_subpic_enabled_flagが0に等しい場合、filterEdgeFlagが0に設定される。シンタックス要素内のアンダースコアの存在は、それらのシンタックス要素がビットストリーム内でシグナリングされることを示す。シンタックス要素内のアンダースコアの欠如は、デコーダによるそれらのシンタックス要素の導出を示す。また「if」は、「when」と交換可能に使用され得る。
【0103】
方法900は、追加の実施形態を実施してもよい。例えば、edgeTypeは、垂直エッジをフィルタリングするかそれとも水平エッジをフィルタリングするかを指定する変数である。0に等しいedgeTypeは、垂直エッジがフィルタリングされることを指定し、EDGE_VERは垂直エッジである。1に等しいedgeTypeは、水平エッジがフィルタリングされることを指定し、EDGE_HORは水平エッジである。0に等しいloop_filter_across_subpic_enabled_flagは、CVS内の各符号化されたピクチャ内のサブピクチャの境界をまたいでループ内フィルタリング操作が行われないことを指定する。方法900は、filterEdgeFlagに基づいてピクチャをフィルタリングするステップをさらに含む。
【0104】
図10は、第3の実施形態によるビットストリームをデコードする方法1000を示すフローチャートである。デコーダ400は、方法1000を実装し得る。ステップ1010で、ピクチャ、EDGE_HOR、およびloop_filter_across_subpic_enabled_flagを含むビデオビットストリームが受け取られる。最後に、ステップ1020で、edgeTypeがEDGE_HORに等しく、現在の符号化ブロックの上境界がサブピクチャの上境界であり、loop_filter_across_subpic_enabled_flagが0に等しい場合、filterEdgeFlagが0に設定される。
【0105】
方法1000は、追加の実施形態を実施してもよい。例えば、edgeTypeは、垂直エッジをフィルタリングするかそれとも水平エッジをフィルタリングするかを指定する変数である。0に等しいedgeTypeは、垂直エッジがフィルタリングされることを指定し、EDGE_VERは垂直エッジである。1に等しいedgeTypeは、水平エッジがフィルタリングされることを指定し、EDGE_HORは水平エッジである。0に等しいloop_filter_across_subpic_enabled_flagは、CVS内の各符号化されたピクチャ内のサブピクチャの境界をまたいでループ内フィルタリング操作が行われないことを指定する。例えば、方法1000は、filterEdgeFlagに基づいてピクチャをフィルタリングするステップをさらに含む。
【0106】
図11は、本開示の一実施形態による、ビデオ符号化デバイス1100(例えば、ビデオエンコーダ300またはビデオデコーダ400)の概略図である。ビデオ符号化デバイス1100は、開示の実施形態を実装するのに適している。ビデオ符号化デバイス1100は、データを受信するための入口ポート1110およびRx1120、データを処理するためのプロセッサ、論理ユニット、ベースバンドユニット、またはCPU1130、データを送信するためのTx1140および出口ポート1150、ならびにデータを格納するためのメモリ1160を備える。ビデオ符号化デバイス1100はまた、光信号または電気信号の出力または入力のために入口ポート1110、受信機ユニット1120、送信機ユニット1140、および出口ポート1150に結合されたOEコンポーネントおよびEOコンポーネントも備えていてもよい。
【0107】
プロセッサ1130は、ハードウェアおよびソフトウェアによって実装される。プロセッサ1130は、1または複数のCPUチップ、コア(例えば、マルチコアプロセッサとして)、FPGA、ASIC、およびDSPとして実装されてもよい。プロセッサ1130は、入口ポート1110、Rx1120、Tx1140、出口ポート1150、およびメモリ1160と通信する。プロセッサ1130は符号化モジュール1170を備える。符号化モジュール1170は、開示の実施形態を実装する。例えば、符号化モジュール1170は、様々なコーデック機能を実装、処理、準備、または提供する。したがって、符号化モジュール1170を含めることにより、ビデオ符号化デバイス1100の機能に実質的な改善が与えられ、ビデオ符号化デバイス1100の異なる状態への変換がもたらされる。あるいは、符号化モジュール1170は、メモリ1160に格納され、プロセッサ1130によって実行される命令として実装される。
【0108】
ビデオ符号化デバイス1100はまた、ユーザとデータをやり取りするためのI/Oデバイス1180を含んでいてもよい。I/Oデバイス1180は、ビデオデータを表示するためのディスプレイ、オーディオデータを出力するためのスピーカなどといった出力デバイスを含み得る。I/Oデバイス1180はまた、キーボード、マウス、トラックボールなどの入力デバイス、またはそのような出力デバイスと対話するための対応するインターフェースも含み得る。
【0109】
メモリ1160は、1または複数のディスク、テープドライブ、およびソリッドステートドライブを備え、プログラムが実行のために選択された場合にそのようなプログラムを格納し、プログラムの実行中に読み取られた命令およびデータを格納するために、オーバーフローデータ記憶デバイスとして使用されてもよい。メモリ1160は、揮発性および/または不揮発性であってもよく、ROM、RAM、TCAM、またはSRAMであってもよい。
【0110】
図12は、符号化の手段1200の一実施形態の概略図である。一実施形態では、符号化の手段1200は、ビデオ符号化デバイス1202(例えば、ビデオエンコーダ300またはビデオデコーダ400)において実装される。ビデオ符号化デバイス1202は受信手段1201を含む。受信手段1201は、エンコードするピクチャを受信するか、またはデコードするビットストリームを受信するように構成される。ビデオ符号化デバイス1202は、受信手段1201に結合された送信手段1207を含む。送信手段1207は、ビットストリームをデコーダに送信するか、またはデコードされた画像を表示手段(例えば、I/Oデバイス1180のうちの1つ)に送信するように構成される。
【0111】
ビデオ符号化デバイス1202は記憶手段1203を含む。記憶手段1203は、受信手段1201または送信手段1207の少なくとも一方に結合される。記憶手段1203は命令を格納するように構成される。ビデオ符号化デバイス1202は処理手段12305も含む。処理手段1205は記憶手段1203に結合される。処理手段1205は、本明細書に開示される方法を実行するために記憶手段1203に格納された命令を実行するように構成される。
【0112】
一実施形態において、受信手段は、ピクチャおよびloop_filter_across_subpic_enabled_flagを含むビデオビットストリームを受信する。ピクチャはサブピクチャを含む。処理手段は、loop_filter_across_subpic_enabled_flagが0に等しいときにサブピクチャの境界と一致するエッジを除くピクチャのすべてのサブブロックエッジおよび変換ブロックエッジにデブロッキングフィルタプロセスを適用する。
【0113】
「約」という用語は、特に記載されない限り、後続の数値の±10%を含む範囲を意味する。本開示ではいくつかの実施形態が提供されているが、開示のシステムおよび方法は、本開示の趣旨または範囲から逸脱することなく、多くの他の特定の形態で具現化されてもよいことが理解されよう。本開示の例は、限定ではなく例示とみなされるべきであり、その意図は、本明細書に与えられた詳細に限定されるべきではない。例えば、様々な要素またはコンポーネントが別のシステムにおいて結合もしくは統合されてもよく、または特定の特徴が省略されるか、もしくは実装されなくてもよい。
【0114】
加えて、様々な実施形態において個別または別個のものとして記載および例示された技法、システム、サブシステム、および方法は、本開示の範囲から逸脱することなく、他のシステム、コンポーネント、技法、または方法と結合または統合されてもよい。結合されたものとして図示または考察された他の項目は、直接結合される場合もあり、または、電気的か機械的かそれ以外かを問わず、何らかのインターフェース、デバイス、もしくは中間コンポーネントを介して間接的に結合もしくは通信する場合もある。変更、置換、および改変の他の例は、当業者による確認が可能であり、本明細書で開示される趣旨および範囲から逸脱することなくなされ得る。
【符号の説明】
【0115】
100 ビデオ信号を符号化する動作方法
200 コーデックシステム
201 分割されたビデオ信号
211 総合符号器制御コンポーネント
213 変換スケーリング量子化コンポーネント
215 イントラピクチャ推定コンポーネント
217 イントラピクチャ予測コンポーネント
219 動き補償コンポーネント
221 動き推定コンポーネント
223 復号ピクチャバッファコンポーネント
225 ループ内フィルタコンポーネント
227 フィルタ制御解析コンポーネント
229 スケーリング逆変換コンポーネント
231 ヘッダフォーマッティングCABACコンポーネント
300 ビデオエンコーダ
301 分割されたビデオ信号
313 変換量子化コンポーネント
317 イントラピクチャ推定コンポーネント
321 動き補償コンポーネント
323 復号ピクチャバッファコンポーネント
325 ループ内フィルタコンポーネント
329 逆変換量子化コンポーネント
331 エントロピー符号化コンポーネント
400 ビデオデコーダ
417 イントラピクチャ予測コンポーネント
421 動き補償コンポーネント
423 復号ピクチャバッファコンポーネント
425 ループ内フィルタコンポーネント
429 逆変換量子化コンポーネント
433 エントロピーデコーディングコンポーネント
500 ピクチャビデオストリーム
501 サブピクチャビデオストリーム
502 サブピクチャビデオストリーム
503 サブピクチャビデオストリーム
600 ビットストリーム
601 サブビットストリーム
605 サブビットストリーム抽出プロセス
610 SPS
611 PPS
615 スライスヘッダ
620 画像データ
621 ピクチャ
623 サブピクチャ
624 サブピクチャ
700 ビットストリームをデコードする方法
800 ビットストリームをエンコードする方法
900 ビットストリームをデコードする方法
1000 ビットストリームをデコードする方法
1100 ビデオ符号化デバイス
1110 入口ポート
1120 Rx、受信機ユニット
1130 プロセッサ
1140 Tx、送信機ユニット
1150 出口ポート
1160 メモリ
1170 符号化モジュール
1180 I/Oデバイス
1200 符号化の手段
1201 受信手段
1202 ビデオ符号化デバイス
1203 記憶手段
1205 処理手段
1207 送信手段
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12