(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-02-25
(45)【発行日】2025-03-05
(54)【発明の名称】ビデオエンコードおよびデコードに対する量子化マトリックス予測
(51)【国際特許分類】
H04N 19/70 20140101AFI20250226BHJP
H04N 19/126 20140101ALI20250226BHJP
【FI】
H04N19/70
H04N19/126
(21)【出願番号】P 2022509117
(86)(22)【出願日】2020-08-06
(86)【国際出願番号】 EP2020072195
(87)【国際公開番号】W WO2021028321
(87)【国際公開日】2021-02-18
【審査請求日】2023-08-07
(32)【優先日】2019-08-14
(33)【優先権主張国・地域又は機関】EP
(32)【優先日】2019-09-19
(33)【優先権主張国・地域又は機関】EP
(32)【優先日】2019-09-26
(33)【優先権主張国・地域又は機関】EP
(73)【特許権者】
【識別番号】518341334
【氏名又は名称】インターディジタル・シーイー・パテント・ホールディングス・ソシエテ・パ・アクシオンス・シンプリフィエ
(74)【代理人】
【識別番号】110001243
【氏名又は名称】弁理士法人谷・阿部特許事務所
(72)【発明者】
【氏名】フィリップ ド ラグランジュ
(72)【発明者】
【氏名】ファブリス ルルアンネック
(72)【発明者】
【氏名】エドゥアール フランソワ
(72)【発明者】
【氏名】フランク ガルピン
【審査官】田中 純一
(56)【参考文献】
【文献】特開2013-038758(JP,A)
【文献】特開2012-138883(JP,A)
【文献】米国特許第08768077(US,B2)
【文献】特表2015-516754(JP,A)
【文献】米国特許出願公開第2015/0078442(US,A1)
【文献】特開2011-101420(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04N 7/12
H04N 19/00 - 19/98
(57)【特許請求の範囲】
【請求項1】
エンコードされたビデオ情報を含むビットストリームから、量子化マトリックスの少なくとも1つの係数を表す情報が送信されることを指定するシンタックス要素を取得することと、
前記ビットストリームから、
前記シンタックス要素に基づいて、前記量子化マトリックスの
前記少なくとも1つの係数を表す
前記情
報を取得することと、
予測モードを用いて前記量子化マトリックスがシグナリングされると決定することであって、前記量子化マトリックスは、先にデコードされた量子化マトリックスである参照量子化マトリックスから予測される、ことと、
前記予測モードを用いて前記量子化マトリックスがシグナリングされると前記決定することに応答して、
前記量子化マトリックスの前記少なくとも1つの係数を表す前記情報
を前記量子化マトリックスと前記参照量子化マトリックスとの間の残差として解釈
することであって、前記予測モードを用いて前記量子化マトリックスがシグナリングされるときの前記量子化マトリックスの前記少なくとも1つの係数を表す前記情報を送信するのに用いられる1つまたは複数のシンタックス要素は、前記予測モードを用いて前記量子化マトリックスがシグナリングされないときの前記量子化マトリックスの前記少なくとも1つの係数を表す前記情報を送信するのに用いられる前記1つまたは複数のシンタックス要素と同じである、ことと、
前記
参照量子化マトリック
スと前記
少なくとも1つの係数を表す前記情報との組み合わせに基づいて、前記エンコードされたビデオ情報の少なくとも一部をデコードすることと
を備えることを特徴とする方法。
【請求項2】
前記残差は可変長残差を含むことを特徴とする請求項1に記載の方法。
【請求項3】
前記
量子化マトリックスは、
前記参照量子化マトリックス
から複数の予測量子化マトリックス係数を取得することと前記複数の予測量子化マトリックス係数に前記残差を加えること
とによって、前記参照量子化マトリックスと前記量子化マトリックスの前記少なくとも1つの係数を表す前記情報とから取得されることを特徴とする請求項1または2に記載の方法。
【請求項4】
前記組み合わせはオフセットを適用することをさらに含むことを特徴とする請求項1ないし3のいずれか一項に記載の方法。
【請求項5】
前記量子化マトリックス
は、スケーリングファクタにより前記
参照量子化マトリックス
をスケーリングすることによって、
前記参照量子化マトリックスと前記少なくとも1つの係数を
表す前記情報とから取得されることを特徴とする請求項1に記載の方法。
【請求項6】
前記参照量子化マトリックスを指定するインデックスをデコードすることを備えることを特徴とする請求項1に記載の方法。
【請求項7】
前記量子化マトリックスは、前記量子化マトリックスが前記参照量子化マトリックスの係数から導出されることを示すフラグの値と0より大きい前記デコードされたインデックスの値とに基づいて、前記予測モードを用いてシグナリングされると決定されることを特徴とする請求項6に記載の方法。
【請求項8】
エンコードされたビデオ情報を含むビットストリームから、量子化マトリックスの少なくとも1つの係数を表す情報が送信されることを指定するシンタックス要素を取得し、
前記ビットストリームから、
前記シンタックス要素に基づいて、前記量子化マトリックスの
前記少なくとも1つの係数を表す
前記情
報を取得し、
どの前記量子化マトリックスが、先にデコードされた量子化マトリックスである参照量子化マトリックスから予測されるかに従って、予測モードを用いて前記量子化マトリックスがシグナリングされることを決定し、
前記予測モードを用いて前記量子化マトリックスがシグナリングされると前記決定することに応答して、
前記量子化マトリックスの前記少なくとも1つの係数を表す前記情報
を前記量子化マトリックスと前記参照量子化マトリックスとの間の残差として解釈
し、前記予測モードを用いて前記量子化マトリックスがシグナリングされるときの前記量子化マトリックスの前記少なくとも1つの係数を表す前記情報を送信するのに用いられる1つまたは複数のシンタックス要素は、前記予測モードを用いて前記量子化マトリックスがシグナリングされないときの前記量子化マトリックスの前記少なくとも1つの係数を表す前記情報を送信するのに用いられる前記1つまたは複数のシンタックス要素と同じであり、
前記
参照量子化マトリック
スと前記
少なくとも1つの係数を表す前記情報との組み合わせに基づいて、前記エンコードされたビデオ情報の少なくとも一部をデコードする
ように構成された1つまたは複数のプロセッサー
を備えたことを特徴とする装置。
【請求項9】
前記残差は可変長残差を含むことを特徴とする請求項
8に記載の装置。
【請求項10】
前記
量子化マトリックスは、
前記参照量子化マトリックス
から複数の予測量子化マトリックス係数を取得することと前記複数の予測量子化マトリックス係数に前記残差を加えること
とによって、前記参照量子化マトリックスと前記量子化マトリックスの前記少なくとも1つの係数を表す前記情報とから取得されることを特徴とする請求項
8または
9に記載の装置。
【請求項11】
前記組み合わせはオフセットを適用することをさらに含むことを特徴とする請求項
8ないし
10のいずれか一項に記載の装置。
【請求項12】
前記参照量子化マトリックスを指定するインデックスをエンコードすることを備えることを特徴とする請求項8に記載の装置。
【請求項13】
前記量子化マトリックスは、前記量子化マトリックスが前記参照量子化マトリックスの係数から導出されることを示すフラグの値と0より大きい前記エンコードされたインデックスの値とに基づいて、前記予測モードを用いてシグナリングされると決定されることを特徴とする請求項12に記載の装置。
【請求項14】
コンピューターによって実行されると、請求項1ないし
7のいずれか一項に係る方法を前記コンピューターに実行させる命令を含むコンピュータープログラム。
【請求項15】
命令を実行するコンピューターに、請求項1ないし
7のいずれか一項に係る方法を行わせる
実行可能プログラム命令を格納する非一時的なコンピューター読取り可能媒体。
【請求項16】
ビデオ情報と、前記ビデオ情報の少なくとも一部に関連付けられ
た量子化マトリックスの少なくとも1つの係数を表す情報とを取得することと、
ビットストリームにおいて、どの前記量子化マトリックスが、先にデコードされた量子化マトリックスである参照量子化マトリックスから予測されるかに従って、予測モードを用いて前記量子化マトリックスがシグナリングされることをシグナリングすることと、
前記予測モードを用いて前記量子化マトリックスがシグナリングされると決定することに応答して、前記量子化マトリックスの前記少なくとも1つの係数
を表す前記情報を前記量子化マトリックスと前記参照量子化マトリックスとの間の残差として解釈
することであって、前記予測モードを用いて前記量子化マトリックスがシグナリングされるときの前記量子化マトリックスの前記少なくとも1つの係数を表す前記情報を送信するのに用いられる1つまたは複数のシンタックス要素は、前記予測モードを用いて前記量子化マトリックスがシグナリングされないときの前記量子化マトリックスの前記少なくとも1つの係数を表す前記情報を送信するのに用いられる前記1つまたは複数のシンタックス要素と同じである、ことと、
前記
参照量子化マトリックスと前記
少なくとも1つの係数を表す前記情報と
から取得される前記量子化マトリックスに基づいて前記ビデオ情報の前記少なくとも一部をエンコードするこ
とと
を備えることを特徴とする方法。
【請求項17】
前記参照量子化マトリックスを指定するインデックスをエンコードすることを備えることを特徴とする請求項16に記載の方法。
【請求項18】
前記量子化マトリックスは、前記量子化マトリックスが前記参照量子化マトリックスの係数から導出されることを示すフラグの値と0より大きい前記エンコードされたインデックスの値とに基づいて、前記予測モードを用いてシグナリングされると決定されることを特徴とする請求項17に記載の方法。
【請求項19】
ビデオ情報と、前記ビデオ情報の少なくとも一部に関連付けられ
た量子化マトリックスの少なくとも1つの係数を表す情報とを取得し、
ビットストリームにおいて、どの前記量子化マトリックスが、先にデコードされた量子化マトリックスである参照量子化マトリックスから予測されるかに従って、予測モードを用いて前記量子化マトリックスがシグナリングされることをシグナリングし、
前記予測モードを用いて前記量子化マトリックスがシグナリングされると決定することに応答して、前記量子化マトリックスの前記少なくとも1つの係数
を表す前記情報を前記量子化マトリックスと前記参照量子化マトリックスとの間の残差として解釈
し、
前記ビットストリームにおいて、前記量子化マトリックスの前記少なくとも1つの係数を表す前記情報が送信されることを指定するシンタックス要素をシグナリングし、
前記シンタックス要素に基づいて前記少なくとも1つの係数を表す前記情報を、前記ビットストリームにおいてシグナリングし、前記予測モードを用いて前記量子化マトリックスがシグナリングされるときの前記量子化マトリックスの前記少なくとも1つの係数を表す前記情報を送信するのに用いられる1つまたは複数のシンタックス要素は、前記予測モードを用いて前記量子化マトリックスがシグナリングされないときの前記量子化マトリックスの前記少なくとも1つの係数を表す前記情報を送信するのに用いられる前記1つまたは複数のシンタックス要素と同じであり、
前記
参照量子化マトリックスと前記
少なくとも1つの係数を表す前記情報と
から取得される前記量子化マトリックスに基づいて前記ビデオ情報の前記少なくとも一部をエンコー
ドする
ように構成された1つまたは複数のプロセッサー
を備えたことを特徴とする装置。
【請求項20】
前記残差は可変長残差を含むことを特徴とする請求項
19に記載の装置。
【請求項21】
コンピューターによって実行されると、請求項
16ないし
18のいずれか一項に係る方法を前記コンピューターに実行させる命令を含むコンピュータープログラム。
【請求項22】
命令を実行するコンピューターに、請求項
16ないし
18のいずれか一項に係る方法を行わせる
実行可能プログラム命令を格納する非一時的なコンピューター読取り可能媒体。
【請求項23】
前記参照量子化マトリックスを指定するインデックスをエンコードすることを含む請求項19に記載の装置。
【請求項24】
前記量子化マトリックスは、前記量子化マトリックスが前記参照量子化マトリックスの係数から導出されることを示すフラグの値と0より大きい前記エンコードされたインデックスの値とに基づいて、前記予測モードを用いてシグナリングされると決定されることを特徴とする請求項23に記載の装置。
【請求項25】
前記少なくとも1つの係数を表す前記情報は、前記量子化マトリックスが前記予測モードを用いてシグナリングされるかどうかDPCM符号化モードを用いて送信されることを特徴とする請求項1に記載の方法。
【請求項26】
前記少なくとも1つの係数を表す前記情報は、前記量子化マトリックスが前記予測モードを用いてシグナリングされるかどうかDPCM符号化モードを用いて送信されることを特徴とする請求項6に記載の方法。
【請求項27】
前記少なくとも1つの係数を表す前記情報は、前記量子化マトリックスが前記予測モードを用いてシグナリングされるかどうかDPCM符号化モードを用いて送信されることを特徴とする請求項8に記載の装置。
【請求項28】
前記少なくとも1つの係数を表す前記情報は、前記量子化マトリックスが前記予測モードを用いてシグナリングされるかどうかDPCM符号化モードを用いて送信されることを特徴とする請求項19に記載の装置。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、ビデオ圧縮に関し、より詳細には、ビデオ圧縮の量子化段階に関する。
【背景技術】
【0002】
高い圧縮効率を達成するために、通例、画像およびビデオの符号化スキームは、予測および変換を利用して、ビデオコンテンツにおける空間的なおよび時間的な冗長性をレバレッジする。一般に、イントラ予測またはインター予測が用いられて、フレーム内相関(intra frame correlation)またはフレーム間相関(inter frame correlation)を利用し、次に、予測誤差または予測残差として示されることがよくある、元のピクチャブロックと予測されたピクチャブロックとの間の差は、変換され、量子化され、エントロピー符号化される。ビデオを再構成するために、圧縮されたデータは、予測、変換、量子化、およびエントロピー符号化に対応する逆処理によってデコードされる。
【0003】
HEVC(High Efficiency Video Coding)は、圧縮規格の例である。HEVCは、JCT-VC(Joint Collaborative Team on Video Coding)によって開発された(例えば、「ITU-T H.265 TELECOMMUNICATION STANDARDIZATION SECTOR OF ITU (10/2014), SERIES H: AUDIOVISUAL AND MULTIMEDIA SYSTEMS, Infrastructure of audiovisual services - Coding of moving video, High efficiency video coding, Recommendation ITU-T H.265」を参照)。圧縮規格の別の例は、JVET(Joint Video Experts Team)による開発のもとの1つであり、VVC(Versatile Video Coding)が指名された開発の成果に関連付けられた1つである。VVCは、HEVCに対する改良を与えることに向けられる。
【発明の概要】
【0004】
一般に、態様の少なくとも1つは、エンコードされたビデオ情報を含むビットストリームから、量子化マトリックス(quantization matrix)およびシンタックス要素のうちの少なくとも1つの係数を表す情報を取得することと、シンタックス要素に基づいて、少なくとも1つの係数を表す情報が残差として解釈されることになることを決定することと、量子化マトリックスの予測と残差との組み合わせに基づいて、エンコードされたビデオ情報の少なくとも一部をデコードすることと、を含む方法を含むことが可能である。
【0005】
一般に、態様の少なくとも1つの例は、エンコードされたビデオ情報を含むビットストリームから、量子化マトリックスおよびシンタックス要素のうちの少なくとも1つの係数を表す情報を取得し、シンタックス要素に基づいて、少なくとも1つの係数を表す情報が残差として解釈されることになることを決定し、量子化マトリックスの予測と残差との組み合わせに基づいて、エンコードされたビデオ情報の少なくとも一部をデコードするように構成された1つまたは複数のプロセッサーを含む装置を含むことが可能である。
【0006】
一般に、態様の少なくとも1つの例は、ビデオ情報と、ビデオ情報の少なくとも一部に関連付けられた予測量子化マトリックス(predicted quantization matrix)の少なくとも1つの係数を表す情報とを取得することと、少なくとも1つの係数が残差として解釈されることになることを決定することと、予測量子化マトリックスと残差との組み合わせに基づいてビデオ情報の少なくとも一部をエンコードし、少なくとも1つの係数が残差として解釈されることになることを示すシンタックス要素をエンコードすることと、を含む方法を含むことが可能である。
【0007】
一般に、態様の少なくとも1つの例は、ビデオ情報と、ビデオ情報の少なくとも一部に関連付けられた予測量子化マトリックス(predicted quantization matrix)の少なくとも1つの係数を表す情報とを取得し、少なくとも1つの係数が残差として解釈されることになることを決定し、予測量子化マトリックスと残差との組み合わせに基づいてビデオ情報の少なくとも一部をエンコードする、および、少なくとも1つの係数が残差として解釈されることになることを示すシンタックス要素をエンコードするように構成された1つまたは複数のプロセッサーを含む装置を含むことが可能である。
【0008】
一般に、態様の別の例は、ピクチャ情報を含むようにフォーマットされたビットストリームを含むことが可能であり、ピクチャ情報は、本開示にしたがって、方法の態様の例のうちのいずれかの1つまたは複数に基づいてピクチャ情報を処理することによってエンコードされる。
【0009】
一般に、さらに、態様の1つまたは複数の他の例は、本明細書に説明される方法または装置に従って、ピクチャ情報、たとえばビデオデータなどをエンコードするまたはデコードするための命令を格納しているコンピューター読取り可能な記録媒体、例えば、非一時的なコンピューター読取り可能記録媒体を提供することも可能である。さらに、1つまたは複数の態様は、本明細書に説明される方法または装置に従って生成されたビットストリームを格納したコンピューター読取り可能な記録媒体を提供することも可能である。さらに、1つまたは複数の態様は、本明細書に説明される方法または装置に従って生成されたビットストリームを送信するまたは受信するための方法および装置を提供することも可能である。
【0010】
以下に説明されている、上がっている圧縮効率および/または符号化効率および/または処理効率および/または下がっている複雑さのうちの1つまたは複数を限定されずに含むビデオエンコードおよび/またはデコードシステムに対する改良を与えることが可能である種々の変更および態様が想像される。
【0011】
上述は、本開示のいくつかの様相の基本的な理解を提供するために、主題の簡略化された要約を与える。本要約は、主題の広範囲にわたる概要ではない。態様の重要な/重大な要素を特定することが、または主題の範囲の境界を明示することが意図されない。唯一の目的は、以下に提供されるより詳細な説明の前置きとして、簡略化されたかたちにおいて主題のいくつかの概念を与えることである。
【0012】
本開示は、添付の図面と共に以下の詳細な説明を検討することによって、よりよく理解されることがある。
【図面の簡単な説明】
【0013】
【
図1】VVCにおいて32より大きいブロックサイズに対して零に推論される変換/量子化係数の例を示す。
【
図2】H.264におけるイントラおよびインターデフォルト量子化マトリックスの比較を示す(上:インター(ソリッド)およびイントラ(格子)、下:インター(ソリッド)およびイントラのスケーリング(格子))。
【
図3】HEVCにおけるイントラおよびインターデフォルト量子化マトリックスの比較を示す(上:インター(ソリッド)およびイントラ(格子)、下:インター(ソリッド)およびイントラのスケーリング(格子))。
【
図4】量子化マトリックス(quantization matrix:QM)デコードワークフロー(decoding workflow)の例を例示する。
【
図5】変更されたQMデコードワークフローの態様の例を例示する。
【
図6】変更されたQMデコードワークフローの態様についての別の例を例示する。
【
図7】予測(例えば、コピー)と可変長(variable-length)の残差とを含むQMデコードワークフローの態様についての別の例を例示する。
【
図8】予測(例えば、スケーリング)と可変長の残差とを含むQMデコードワークフローの態様についての別の例を例示する。
【
図9】予測(例えば、スケーリング)と可変長の残差とを常に用いることを含むQMデコードワークフローの態様についての別の例を例示する。
【
図10】本明細書に説明される種々の様相、特徴、および態様を実装するのに適したエンコーダー、例えばビデオエンコーダーの態様の例をブロック図のかたちにおいて例示する。
【
図11】本明細書に説明される種々の様相、特徴、および態様を実装するのに適したデコーダー、例えばビデオデコーダーの態様の例をブロック図のかたちにおいて例示する。
【
図12】本明細書に説明される種々の様相、特徴、および態様を実装するのに適したシステムの例をブロック図のかたちにおいて例示する。
【
図13】本説明にしたがうデコーダーの態様についての別の例を例示する。
【
図14】本説明にしたがうエンコーダーの態様の別の例を例示する。
【発明を実施するための形態】
【0014】
図面は、種々の様相および態様の例を例示することの目的に対してであり、必ずしも唯一の可能性のある構成ではないことが理解されるべきである。種々の図面の至る所において、同じ参照符号は、同一または類似の特徴を引用する。
【0015】
HEVC仕様は、逆量子化処理において量子化マトリックスの使用を認めて、符号化されたブロックの周波数変換されている係数は、カレントの量子化段階によってスケーリングされ、さらに量子化マトリックス(quantization matrix:QM)によって次のとおりにスケーリングされる。
d[ x ][ y ]=Clip3( coeffMin, coeffMax, ( (TransCoeffLevel[ xTbY ][ yTbY ][ cIdx ][ x ][ y ] ) * m[ x ][ y ] * levelScale[ qP%6 ] << (qP / 6 ) )+ ( 1 << ( bdShift - 1 ) ) ) >> bdShift )
ただし、
●TransCoeffLevel[...]は、空間座標xTbY、yTbYおよびコンポーネントインデックスcIdxによって識別されるカレントブロック(current block)に対して変換されている係数の絶対値である。
●xおよびyは、水平/垂直の周波数インデックスである。
●qPは、カレントの量子化パラメーターである。
●levelScale[qP%6]による乗法の演算および(qP/6)による左シフトは、量子化段階qStep = ( levelScale[qP%6] << (qP/6) )による乗法の演算と同等である。
●m[...][...]は、2次元量子化マトリックスである。
●bdShiftは、画像サンプルのビット深度を考慮した追加のスケーリングファクタ(scaling factor)である。項(1 << (bdShift - 1))は、最も近い整数の概数にて表す目的を果たす。
●d[...]は、結果として生じている逆量子化された変換されている係数の絶対値である。
【0016】
量子化マトリックスを送信するのにHEVCによって用いられるシンタックスは、次である。
【0017】
【0018】
次を特筆することが可能である。
●異なるマトリックスは、各変換サイズ(sizeId)に対して指定される。
●与えられた変換サイズに対して、6つのマトリックスが、イントラ/インター符号化およびY/Cb/Cr成分に対して指定される。
●マトリックスは、次のいずれかであることが可能である、
○scaling_list_pred_mode_flag が 零 ならば、同一のサイズの以前に送信されたマトリックスからコピーされる(参照matrixIdは、matrixId - scaling_list_pred_matrix_id_delta として取得される)、
○規格にて指定されているデフォルト値からコピーされる(scaling_list_pred_mode_flagおよびscaling_list_pred_matrix_id_deltaの両方が零ならば)、
○exp-Golombエントロピー符号化を用いて、右上ダイアゴナルスキャニング(up-right diagonal scanning)の順にDPCM符号化モードにおいて完全に指定される。
●8×8より大きいブロックサイズに対して、符号化ビットを節約するために、8×8の係数のみが、量子化マトリックスをシグナリングするために送信される。次に、係数は、明示的に送信されるDC係数を除いて、ゼロホールド(zero-hold)(すなわち、繰り返し)を用いて補間される。
【0019】
HEVCと同様の量子化マトリックスの使用は、貢献JVET-N0847に基づくVVC原案5(VVC draft 5)にて採用されている(O.Chubach, T.Toma, S.C.Lim, et al.、「CE7-related:Support of quantization matrices for VVC」、JVET-N0847、Geneva、CH、2019年3月参照)。scaling_list_dataのシンタックスは、以下に示されているVVCコーデックに合わせて変えられている。
【0020】
【0021】
HEVCと比較すれば、VVCは、ブロックサイズがより高い数のため、より多くの量子化マトリックスが必要である。
【0022】
VVC原案5(VVC draft 5)(JVET-N0847採用による)に関して、HEVCのように、QMは、2つのパラメーターmatrixIdおよびsizeIdによって識別される。今述べたことは、次の2つの表に例示される。
【0023】
【0024】
【0025】
両方の識別子の組み合わせは、次の表に示される。
【0026】
【0027】
HEVCのように、8×8より大きいブロックサイズに対して、8×8の係数+DCのみが送信される。正しいサイズのQMは、ゼロホールド(zero-hold)の補間を用いて再構成される。例えば、16×16ブロックに対して、すべての係数は、両方向に2回繰り返され、次に、DC係数は、送信された1つと置き換えられる。
【0028】
長方形のブロックに対して、QM選択のために保持されるサイズ(sizeId)は、より大きな寸法、すなわち、幅および高さの最大値である。例えば、4×16のブロックに対して、16×16のブロックサイズのためのQMが選択される。次に、再構成された16×16のマトリックスは、因数4によって垂直にデシメーションされて、最終的な4×16の量子化マトリックスを取得する(すなわち、4つの中から3つのラインがスキップされる)。
【0029】
下記について、sizeIdと、用いられる正方形のブロックサイズとに関して、ブロックサイズ(正方形または長方形)について与えられたファミリーに対するQMを、サイズN(size-N)と呼び、例えば、ブロックサイズ16×16または16×4に対して、QMは、サイズ16(VVC原案5(VVC draft 5)におけるsizeId 4)として識別される。サイズNの表記は、正確なブロックのかたちと区別する、および、シグナリングされたQM係数の数(表3に示されている8×8に限定される)と区別するのに用いられる。
【0030】
その上さらに、VVC原案5(VVC draft 5)にて、サイズ64について、右下に対するQM係数は、送信されない(0に推論され、下記において「ゼロアウト(zero-out)」と呼ばれる)。今述べたことは、scaling_list_dataシンタックスにて「x>=4 && y>=4」条件によって実装される。今述べたことは、変換/量子化処理によって決して用いられないQM係数を送信することを避ける。確かに、VVCにて、いずれかの次元(N<=64ならば、64xN、Nx64)においても、32より大きい変換ブロックサイズは、32以上のx/y周波数座標を有する変換されている係数は、送信されず、零に推論される。結果として、量子化する必要がある量子化マトリックス係数はない。今述べたことは、
図1に例示され、ハッチングされた領域は、零に推論された変換係数に対応する。
【0031】
一般に、本明細書に説明される少なくとも1つの態様の様相は、可能な限り簡潔に仕様を保つ一方、カスタムQM(custom QM)の送信においてビットを節約することを含むことが可能である。一般に本開示の別の様相は、単純な調整が低ビットコストにより可能であるように、QM予測を改良することを含むことが可能である。
【0032】
例えば、QMに適用される2つの共通の調整は次である。
- 選択の中立値(neutral value)に基づくマトリックス係数についてのグローバルスケーリングにより容易に達成される、ダイナミックレンジ(最低値-通例、低周波数としてと、最高値-通例、高周波数としてとの比)の制御、および
- ビットレートを微調整するか、QPの範囲を拡大するか、異なる変換サイズ間にて品質のバランスをとるかのいずれかのための一般的なオフセット
1つの一例は、
図2に例示されるh264に対する「イントラ」および「インター」の8×8デフォルトマトリックスである。
図2は、イントラおよびインターのデフォルトh264マトリックスについての比較である。
図2における上の例図は、インター(ソリッド)およびイントラ(格子)を示す。
図2における下の例図は、インター(ソリッド)およびスケーリングされたイントラ(格子)を示す。
図2にて、「インター」マトリックスは、「スケーリングされたイントラ」が(intra_QM-16)*11/16+17である、「イントラ」マトリックスの単なるスケーリング版である。
【0033】
同様の傾向は、
図3に例示されている、HEVC 8×8デフォルトマトリックスについても見られる。
図3は、イントラおよびインターのデフォルトh264マトリックスについての比較である。
図3における上の例図は、インター(ソリッド)およびイントラ(格子)を示す。
図3における下の例図は、インター(ソリッド)と、「スケーリングされたイントラ」が(intra_QM-16)*12/16+16であるスケーリングされたイントラ(格子)を示す。
【0034】
上記の単純な調整は、HEVCおよびVVCにおいてマトリックスの完全な再符号化を必要とし、コスト高(例えば、上に示されているスケーリングされたHEVCイントラマトリックスを符号化するのに240ビット)であることが可能である。さらに、HEVCおよびVVCの両方において、予測(=コピー)と明示的なQM係数とは、相互に排他的である。換言すれば、予測をリファインメントすることは、可能ではない。
【0035】
VVCコンテキストにて、QMシンタックスおよび予測についての変更が提案された。例えば、1つの提案(JVET-O0223)にて、QMは、より大きなものからより小さなものへの順に送信され、より大きなブロックサイズに対して意図されたQMからのを含む、以前に送信されたすべてのQMからの予測を可能にする。ここでの「予測」は、コピーを、または参照が大きいならばデシメーションを意味する。今述べたことは、同一のタイプ(Y/Cb/Cr、イントラ/インター)についての、異なるブロックサイズに対して意図されたQMの間における類似性を利用する。説明される提案に含まれるQMインデックスmatrixIdは、次の式を用いて組み合わせられる、サイズ識別子sizeId(表4に示される)およびタイプ識別子matrixTypeId(表5に示される)の混合物であり、表6に示される一意的な識別子matrixIdに帰着する。
matrixId=6*sizeId+matrixTypeId (3-1)
【0036】
【0037】
【0038】
【0039】
そして、シンタックスは、下記にハイライトする(本翻訳文ではハイライトの代わりに下線を引く)ことによって示されているとおりに変更される。
【0040】
【0041】
【0042】
図4にて、
-入力は、符号化されたビットストリームである。
-出力は、ScalingMatrixの配列である。
-
「QM予測モードをデコードする」:ビットストリームから予測フラグを得る。
-
「予測されるか?」:前述のフラグによって決まる、QMがビットストリームにて推論されるか(予測されるか)シグナリングされるかを決定する。
-
「QM予測データをデコードする」:シグナリングされていないときQMを推論するのに必要な予測データ、例えばQM インデックスの違いscaling_list_pred_matrix_id_deltaなどをビットストリームから得る。
-
「デフォルトか?」: QMがデフォルト値から予測されるか(例えばscaling_list_pred_matrix_id_deltaが零であるかなど)、以前にデコードされたQMから予測されるかを決定する。
-
「参照QMはデフォルトQMである」:デフォルト QM を参照 QM として選択する。例えばmatrixIdのパリティによって決まることなどから選択される複数のデフォルトQMがあることが可能である。
-
「参照QMを得る」:以前にデコードされた QM を参照 QM として選択する。参照QMのインデックスは、matrixIdと前述のインデックスの違いとから導出される。
-
「参照QMをコピーするまたはダウンスケーリングする」:QM を参照 QM から 予測する。予測は、参照QMが正しいサイズであるならば単純なコピー、または予期されるよりも大きいならばデシメーションを含む。結果は、ScalingMatrix[matrixId]に格納される。
-「
係数の数を得る」:matrixId によって決まる、ビットストリームからデコードされるQM 係数の数を決定する。例えば、matrixIdが20より小さいならば64、matrixIdが20から25までの間であるならば16、およびそうでなければ4。
-
「QM係数をデコードする」:関係のあるQM係数の数をビットストリームからデコードする。
-「
ダイアゴナルスキャニング」:デコードされたQM係数を2次元マトリックスにおいて構成する。結果は、ScalingMatrix[matrixId]に格納される。
-
「最後のQM」:ループするか、すべてのQMがビットストリームからデコードされるとき停止するかどうか。
-DC値についての詳細は、明快さのために省略される。
上に説明された提案(JVET-O0223)は、異なるsizeIdを有するQMからの予測を可能にすることによって、VVCのコンテキストにてカスタムQMを符号化することについてのビットコストを減らすことを試みる。しかしながら、予測は、コピー(またはデシメーション)に限定される。
HEVCコンテキストにて、JCTVC-A114(HEVC Call for Proposalへの回答)は、スケーリングの性能を有するインターQM予測技法を提案した。ボールド体(本翻訳文ではボールド体の代わりに下線を引いてある)にて示される最も関係のある部分を有して、次のシンタックスおよびセマンティクスがJCTVC-A114の付属書Aにて見つけられる。
【0043】
【0044】
ただし、
-qscalingmatrix_update_type_flag: スケーリングマトリックス(scaling matrix)を更新するメソッドを示す。値0は、新しいマトリックスが既存のマトリックスから変えられることを意味し、値1は、新しいマトリックスがヘッダーから検索されることを意味する。
-delta_scale: デルタスケールの値を示す。delta_scale値は、Z字形のスキャニングの順にデコードされる。存在しないならば、delta_scaleに対するデフォルト値は零に等しい。
-matrix_scale: すべてのマトリックスの値をスケーリングするパラメーターを示す。
-matrix_slope: 平坦でないマトリックスの勾配を調整するパラメーターを示す。
-num_delta_scale: 0に等しいqscalingmatrix_update_type_flagのときデコードされるdelta_scale値の数を示す。
-qscalingmatrix_update_type_flagによって決まる、スケーリングマトリックスScaleMatrixの値は、次のとおりに定義される、
-qscalingmatrix_update_type_flagが0に等しいならば、
ScaleMatrix[ i ] = (ScaleMatrix[ i ] * (matrix_scale + 16) + matrix_slope * (ScaleMatrix[ i ] - 16) + 8 )>>4) + delta_scale、
ただし、i = 0からMaxCoeff
-そうでなければ(qscalingmatrix_update_type_flagが1に等しい)、
ScaleMatrix[ i ]は、節5.10に示すように導出される
注)caleMatrix[ i ] は、デフォルトによって16に等しい。
JCTVC-A114のアプローチは、スケーリングファクタ(scaling factor)と可変長(variable-length)の残差とによるQM予測を可能にするが、2つの冗長なスケーリングファクタがあり、グローバルオフセットを指定する簡単なメソッドがない(すべてのdelta_scale値がDPCM符号化されるわけではないので、1つがすべてのdelta_scale値を符号化しなければならないだろう)。
【0045】
一般に、本開示の少なくとも1つの様相は、コピーおよびダウンサンプリングに加えてスケールファクタ(scale factor)を適用すること、グローバルオフセットを指定する簡単なやり方を提供すること、または可変長の残差により予測をリファインメントできるようにすることによって、QMの予測を拡張することのうちの1つまたは複数を含むことが可能である。
【0046】
一般に、本開示の少なくとも1つの様相は、QMをさらにリファインメントするために、完全な符号化よりも可能性のあるより低いコストを有して、改良された予測を残差と組み合わせることを含むことが可能である。
【0047】
一般に、本開示にしたがう態様の少なくとも1つの例は、コピー/ダウンスケーリングに加えてオフセットによるQM予測を含むことが可能である。
【0048】
一般に、本開示にしたがう態様の少なくとも1つの例は、(可変長の)残差を加えたQM予測を含むことが可能である。
【0049】
一般に、本開示にしたがう態様の少なくとも1つの例は、コピー/ダウンスケーリングに加えてスケールファクタ(scale factor)によるQM予測を含むことが可能である。
【0050】
一般に、本開示にしたがう態様の少なくとも1つの例は、オフセットか残差かのいずれかとのスケールファクタの組み合わせを含むことが可能である。
【0051】
一般に、本開示にしたがう態様の少なくとも1つの例は、QMを送信するのに必要なビット数を減らすことを提供し、簡潔に仕様を保つと同時に正確度とビットコストとの間のユーザー定義のトレードオフを可能にすることが可能である。
【0052】
一般に、本開示にしたがう態様の少なくとも1つの例は、QMを送信するのに必要なビット数を減らすことを提供し、簡潔に仕様を保つと同時に正確度とビットコストとの間のユーザー定義のトレードオフを可能にする次の特徴のうち1つまたは複数を含むことが可能である。
●QM予測に残差を加える、
●QM予測にスケーリングファクタを加える、
●残差とスケーリングとを組み合わせる、
●予測を常に用いる(予測モードフラグを取り除く)。
【0053】
説明された特徴および様相の1つまたは複数を組み込んだ種々の態様の例が以下に提供される。次の例は、提案JVET-O0223を含むVVC原案5(VVC draft 5)に基づいて、シンタックスおよびテキストディスクリプションのかたちにおいて与えられる。しかしながら、今述べたコンテキストは、単に、説明の容易さおよび明確さに対して選択された例であり、本開示の範囲も、本明細書に説明される原理の適用の範囲も限定しない。換言すれば、同一の原理は、多くの異なる状況において、当業者には明らかなように、例えばHEVCまたはVVC原案5(VVC draft 5)に、スケーリングファクタの代わりにQPオフセットとして解釈されるQMオフセットとして組み込まれるQMに、8ビットの代わりに7ビットにより符号化されたQM係数になど、適用されることが可能である。
【0054】
一般に、態様の少なくとも1つの例は、グローバルオフセットを加えることを含むQM予測に対するコピーに加える変更を含む。一例として、グローバルオフセットは、JVET-O0223 を含む VVC原案5(VVC draft 5)に基づいて、シンタックスおよび仕様テキストの次の変更に示されているとおりに明示的に指定されることが可能であり、追加は、陰によりハイライトされ(本翻訳文ではハイライトの代わりに下線を引く)、削除は、貫く線が引かれる(本翻訳文では貫く線の代わりに「/*」と「*/」とにより挟む)。
【0055】
【0056】
上に説明された態様に対応する変更されたQMデコードワークフローの例は、
図5に示され、JVET-O0223からの変更は、ボールド体のテキストおよび太い外郭の中にある。
【0057】
代替えとして、グローバルオフセットは、(下に説明される)DPCM符号化された残差の第1の係数として指定されることが可能である。
【0058】
一般に、態様の少なくとも1つの例は、残差を予測に加えることを含む。例えば、QM予測に加えて残差を送信して、予測をリファインメントする、またはQMに対して最適化された符号化スキーム(直接符号化の代わりに残差を加えた予測)を提供することが望ましいことが可能である。予測されていないときQM係数を送信するのに用いられるシンタックスは、QMが予測されるとき残差を送信するのに再使用されることが可能である。
【0059】
加えて、残差の係数の数は、可変であることが可能である。今述べた係数が HEVC、VVC、およびJVET-O0223 におけるようにDPCM符号化され、欠落した係数が零に推論されるとき、残差について追跡する係数(trailing coefficient)は、最後に送信された残差係数の繰り返しであることを意味する。次に、単一の残差係数を送信することは、QM全体に一定のオフセットを適用することに相当する。
【0060】
一般に、残差を加えることを含む説明される態様の少なくとも1つの異形は、依然として係数は非予測モード(non-prediction mode)によるとして送信されるが残差として解釈されることが可能であることを示す予測モードにおけるとき、フラグを用いることをさらに含むことが可能である。予測モードではないとき、設計を統一するために、係数は、デフォルトのオール8のQM予測に加えて、残差として解釈されることが依然として可能である(値8は、HEVCおよびVVCのビヘイビアを模倣することであるが、その値に限定されない)。JVET-O0223に基づくシンタックスおよびセマンティクスの例は、以下に例示される。
【0061】
【0062】
0に等しいscaling_list_pred_mode_flag[ matrixId ]は、スケーリングマトリックスが参照スケーリングマトリックス(reference scaling matrix)の値から導出されることを指定する。参照スケーリングマトリックスは、scaling_list_pred_matrix_id_delta[ matrixId ]によって指定される。1に等しいscaling_list_pred_mode_flag[ matrixId ]は、スケーリングリストの値が明示的にシグナリングされることを指定する。
scaling_list_pred_mode_flag[ matrixId ]が1に等しいとき、(matrixSize)x(matrixSize)の配列predScalingMatrix[ matrixId ]のすべての値、および変数predScalingDC[ matrixId ]の値は、8に等しいと推論される。
scaling_list_pred_matrix_id_delta[ matrixId ]は、次のとおりに、
予測されるスケーリングマトリックス(predicted scaling matrix)を導出するのに用いられる参照スケーリングマトリックスを指定する。scaling_list_pred_matrix_id_delta[ matrixId ]の値は、両端を含む0からmatrixIdまでの範囲内であるとする。
scaling_list_pred_mode_flag[ matrixId ]が零に等しいとき、
-第1に、変数refMatrixSizeおよび配列refScalingMatrixは、次のとおりに導出される、
○scaling_list_pred_matrix_id_delta[ matrixId ]が零に等しいならば、下記が適用されてデフォルト値を設定する、
●refMatrixSizeは、8に等しく設定される、
●matrixIdが偶数ならば、
refScalingMatrix = (6-1)
{
{ 16, 16, 16, 16, 16, 16, 16, 16 }// INTRAのデフォルト値に対するプレースホルダー
{ 16, 16, 16, 16, 16, 16, 16, 16 }
{ 16, 16, 16, 16, 16, 16, 16, 16 }
{ 16, 16, 16, 16, 16, 16, 16, 16 }
{ 16, 16, 16, 16, 16, 16, 16, 16 }
{ 16, 16, 16, 16, 16, 16, 16, 16 }
{ 16, 16, 16, 16, 16, 16, 16, 16 }
{ 16, 16, 16, 16, 16, 16, 16, 16 }
},
●そうでなければ、
refScalingMatrix = (6-2)
{
{ 16, 16, 16, 16, 16, 16, 16, 16 }// INTERのデフォルト値に対するプレースホルダー
{ 16, 16, 16, 16, 16, 16, 16, 16 }
{ 16, 16, 16, 16, 16, 16, 16, 16 }
{ 16, 16, 16, 16, 16, 16, 16, 16 }
{ 16, 16, 16, 16, 16, 16, 16, 16 }
{ 16, 16, 16, 16, 16, 16, 16, 16 }
{ 16, 16, 16, 16, 16, 16, 16, 16 }
{ 16, 16, 16, 16, 16, 16, 16, 16 }
},
○そうでなければ(scaling_list_pred_matrix_id_delta[ matrixId ]が零より大きいならば)、下記が適用される。
refMatrixId = matrixId - scaling_list_pred_matrix_id_delta[ matrixId ] (6-3)
refMatrixSize =(refMatrixId < 20) ?8 : (refMatrixId < 26) ?4 : 2 ) (6-4)
refScalingMatrix = ScalingMatrix[ refMatrixId ] (6-5)-次に、配列
predScalingMatrix[ matrixId ]は、次のとおりに導き出される。
predScalingMatrix[ matrixId ][ x ][ y ] = refScalingMatrix[ i ][ j ] (6-6)
ただし、matrixSize = (matrixId < 20) ?8 : (matrixId < 26) ?4 : 2 )、
x = 0・・・matrixSize - 1, y = 0・・・matrixSize - 1,
i = x << ( log2(refMatrixSize) - log2( matrixSize ) )
j = y << ( log2(refMatrixSize) - log2( matrixSize ) )
-matrixIdが14より小さい場合、scaling_list_pred_matrix_id_delta[ matrixId ]が零に等しいならば、変数predScalingDC[ matrixId ]は16に等しく設定され、そうでなければScalingDC[ refMatrixId ]に等しく設定される。
1に等しいscaling_list_coef_present_flagは、スケーリングリスト係数が送信され予測量子化マトリックスに加えられる残差として解釈されることを指定する。 0に等しいscaling_list_coef_present_flag equalは、加えられる残差がないことを指定する。存在しないとき、scaling_list_coef_present_flagは、1に等しいと推論される。
scaling_list_dc_coef/*_minus8*/[ matrixId ] /*plus 8*/は、
ScalingDC[ matrixId ]を導出するのに用いられ、xxx項にて説明されている、関係のあるときのスケーリングマトリックスについての第1の値を指定する。scaling_list_dc_coef/*_minus8*/[ matrixId ]の値は、両端を含む
-128から127までの範囲内であるとする。
存在しないとき、scaling_list_dc_coef[ matrixId ]の値は、0に等しいと推論される。
matrixIdが14より小さいとき、変数ScalingDC[ matrixId ]は、次のとおりに導出される。
ScalingDC[ matrixId ] = ( predScalingDC[ matrixId ] + scaling_list_dc_coef[ matrixId ] + 256 ) % 256 (6-7)
/*scaling_list_pred_mode_flag[ matrixId ]が零に等しく、scaling_list_pred_matrix_id_delta[ matrixId ]が零よりも大きく、refMatrixId<14のとき、下記が適用される。
-matrixId<14のとき、scaling_list_dc_coef_minus8[ matrixId ]は、scaling_list_dc_coef_minus8[ refMatrixId ]に等しいと推論される。
-そうでなければ、ScalingMatrix[ matrixId ][ 0 ][ 0 ] は、 scaling_list_dc_coef_minus8[ refMatrixId ]+8に等しく設定される。
scaling_list_pred_mode_flag[ matrixId ]が零に等しく、scaling_list_pred_matrix_id_delta[ matrixId ]が(デフォルト値を示す)零に等しく、およびmatrixId<14ならば、scaling_list_dc_coef_minus8[ matrixId ]は、8に等しいと推論される。*/
scaling_list_delta_coefは、
scaling_list_coef_present_flag/*scaling_list_pred_mode_flag[ matrixId ]*/が1に等しいとき、カレントのマトリックス係数ScalingList[ matrixId ][ i ]と、直前のマトリックス係数ScalingList[matrixId ][ i - 1 ]との差を指定しする。scaling_list_delta_coefの値は、両端を含む-128から127までの範囲内であるとする。/*ScalingList[ matrixId ][ i ] の値は、0より大きいとする。*/
scaling_list_coef_present_flagが0に等しいとき、配列ScalingList[ matrixId ]のすべての値は、零に等しいと推論される。
(matrixSize)x(matrixSize)の配列ScalingMatrix[ matrixId ]は、次のとおりに導き出される。
ScalingMatrix [ i ][ j ] =
( predScalingMatrix[ i ][ j ] + ScalingList[ matrixId ][ k]
+ 256 ) % 256 (6-8)
ただし、k = 0・・・coefNum - 1、
i = diagScanOrder[ log2(coefNum)/2 ][ log2(coefNum)/2 ][ k ][ 0 ]、
j = diagScanOrder[ log2(coefNum)/2 ][ log2(coefNum)/2 ][ k ][ 1 ]
さらに、「スケーリングマトリックス導出処理」節にて、テキストは、次のとおりに変えられる。
matrixIdが14より小さいならば、m[ 0 ][ 0 ] は、さらに次のとおりに変更される。
m[ 0 ][ 0 ] =
ScalingDC[ matrixId ] /*scaling_list_dc_coef_minus8[ matrixId ] + 8*/ (6-9)
直前の態様に対応する変更されたQMデコードワークフローの例は、
図6に示され、JVET-O0223からの変更は、ボールド体のテキストおよび太い外郭にて示される。
【0063】
一般に、態様の少なくとも1つの例は、予測に加えて可変長の残差を用いることを含むことが可能である。可変長の残差は、例えば、次の理由により役に立つことが可能である。
●ダイアゴナルスキャニング(diagonal scan)のために最初に送信される低周波係数は、最も大きなインパクトがある。
●係数がDPCM符号化されている状態にて、欠落したデルタ係数が零に推論されるならば、最後の残差係数が繰り返されることに帰着する。今述べたことは、最後に送信された残差は、送信される残差がないQMの部分に対して再使用される。今述べたやり方、単一の残差係数を送信することは、特定の追加のシンタックスを用いることなく、QM全体にオフセットを適用することに相当する。
残差係数の数は、例えば、次によって示されることが可能である。
●係数の明示的な数
○exp-Golomb符号化または固定長符号化(matrixIdに依存する長さを有する)による、または
●2の累乗に制限されることが可能である、残差係数の数から1を引いた値が続く残差の存在を示すフラグ、
○もしくは同等に、1+(残差係数の数のlog2)、ただし、零は残差がないことを示す。今述べたことは、固定長(matrixId に依存する可能性がある長さ)もしくはexp-Golomb 符号化として符号化されることが可能である、または
●リストが係数の値を含む、リスト内のインデックス。今述べたリストは、規格によって固定されている(送信される必要がない)こと、例えば{0,1,2,4,8,16,32,64}などが勧められる。
残差係数の数は、潜在的な割増のDC残差係数をカウントする必要がない。今述べた割増のDC残差係数は、少なくとも1つの通常の残差係数が送られることになると同時に、送信されることが可能である。
【0064】
すぐ前の例示的な態様に基づくシンタックスおよびセマンティクスの例は、以下に与えられる。
【0065】
【0066】
0に等しいscaling_list_pred_mode_flag[ matrixId ]は、スケーリングマトリックスが参照スケーリングマトリックス(reference scaling matrix)の値から導出されることを指定する。参照スケーリングマトリックスは、scaling_list_pred_matrix_id_delta[ matrixId ]によって指定される。1に等しいscaling_list_pred_mode_flag[ matrixId ]は、スケーリングリストの値が明示的にシグナリングされることを指定する。
scaling_list_pred_mode_flag[ matrixId ]が1に等しいとき、matrixSize × matrixSizeの配列predScalingMatrix[ matrixId ]のすべての値、および変数predScalingDC[ matrixId ]の値は、8に等しいと推論される。
scaling_list_pred_matrix_id_delta[ matrixId ]は、次のとおりに、予測されるスケーリングマトリックス(predicted scaling matrix)を導出するのに用いられる参照スケーリングマトリックスを指定する。scaling_list_pred_matrix_id_delta[ matrixId ]の値は、両端を含む0からmatrixIdまでの範囲内であるとする。
scaling_list_pred_mode_flag[ matrixId ]が零に等しいとき、
-第1に、変数refMatrixSizeおよび配列refScalingMatrixは、次のとおりに導出される、
○scaling_list_pred_matrix_id_delta[ matrixId ]が零に等しいならば、下記が適用されてデフォルト値を設定する、
●refMatrixSizeは、8に等しく設定される、
●matrixIdが偶数ならば、
refScalingMatrix = (6-10)
{
{ 16, 16, 16, 16, 16, 16, 16, 16 }// INTRAのデフォルト値に対するプレースホルダー
{ 16, 16, 16, 16, 16, 16, 16, 16 }
{ 16, 16, 16, 16, 16, 16, 16, 16 }
{ 16, 16, 16, 16, 16, 16, 16, 16 }
{ 16, 16, 16, 16, 16, 16, 16, 16 }
{ 16, 16, 16, 16, 16, 16, 16, 16 }
{ 16, 16, 16, 16, 16, 16, 16, 16 }
{ 16, 16, 16, 16, 16, 16, 16, 16 }
},
●そうでなければ、
refScalingMatrix = (6-11)
{
{ 16, 16, 16, 16, 16, 16, 16, 16 }// INTERのデフォルト値に対するプレースホルダー
{ 16, 16, 16, 16, 16, 16, 16, 16 }
{ 16, 16, 16, 16, 16, 16, 16, 16 }
{ 16, 16, 16, 16, 16, 16, 16, 16 }
{ 16, 16, 16, 16, 16, 16, 16, 16 }
{ 16, 16, 16, 16, 16, 16, 16, 16 }
{ 16, 16, 16, 16, 16, 16, 16, 16 }
{ 16, 16, 16, 16, 16, 16, 16, 16 }
},
○そうでなければ(scaling_list_pred_matrix_id_delta[ matrixId ]が零より大きいならば)、下記が適用される。
refMatrixId = matrixId - scaling_list_pred_matrix_id_delta[ matrixId ] (6-12)
refMatrixSize = (refMatrixId < 20) ?8 : (refMatrixId < 26) ?4 : 2 ) (6-13)
refScalingMatrix = ScalingMatrix[ refMatrixId ] (6-14)
-次に、配列predScalingMatrix[ matrixId ]は、次のとおりに導き出される。
predScalingMatrix[ matrixId ][ x ][ y ] = refScalingMatrix[ i ][ j ] (6-15)
ただし、/*matrixSize = (matrixId < 20) ?8 : (matrixId < 26) ?4 : 2 )、*/
x = 0・・・matrixSize - 1, y = 0・・・matrixSize - 1、
i = x << ( log2(refMatrixSize) - log2( matrixSize ) )、および
j = y << ( log2(refMatrixSize) - log2( matrixSize ) )
-matrixId<14のとき、scaling_list_pred_matrix_id_delta[ matrixId ]が零に等しいならば、変数predScalingDC[ matrixId ]は16に等しく設定され、そうでなければScalingDC[ refMatrixId ]に等しく設定される。
coefNumは、送信される残差係数の数を指定する。scoefNumの値は、両端を含む0からmaxCoefNumまでの範囲内であるとする。
/*1に等しいscaling_list_coef_present_flagは、スケーリングリスト係数が送信され予測量子化マトリックスに加えられる残差として解釈されることを指定する。0に等しいscaling_list_coef_present_flag equalは、加えられる残差がないことを指定する。存在しないとき、scaling_list_coef_present_flagは、1に等しいと推論される。*/
scaling_list_dc_coef[ matrixId ]は、ScalingDC[ matrixId ]を導出するのに用いられ、xxx項にて説明されている、関係のあるときのスケーリングマトリックスについての第1の値を指定する。scaling_list_dc_coef [ matrixId ]の値は、両端を含む-128から127までの範囲内であるとする。存在しないとき、scaling_list_dc_coef[ matrixId ]の値は、0に等しいと推論される。
matrixIdが14より小さいとき、変数ScalingDC[ matrixId ]は、次のとおりに導出される。
ScalingDC[ matrixId ] = ( predScalingDC[ matrixId ] + scaling_list_dc_coef[ matrixId ] + 256 ) % 256 (6-16)
scaling_list_delta_coefは、
両端を含む0からCoefNum-1の間のiに対して、カレントのマトリックス係数ScalingList[ matrixId ][ i ] と、直前のマトリックス係数ScalingList[ matrixId ][ i - 1 ] との差を指定する。
両端を含むCoefNumとmaxCoefNum-1との間のiに対して、scaling_list_delta_coefは、/*scaling_list_coef_present_flagが1に等しいとき、*/
0に等しいと推論される。scaling_list_delta_coefの値は、両端を含む-128から127までの範囲内であるとする。
/*scaling_list_coef_present_flagが0に等しいとき、配列ScalingList[ matrixId ]のすべての値は、零に等しいと推論される。*/
(matrixSize)x(matrixSize)の配列ScalingMatrix[ matrixId ]は、次のとおりに導き出される。
ScalingMatrix [ i ][ j ] = ( predScalingMatrix[ i ][ j ] + ScalingList[ matrixId ][ k ] + 256 ) % 256 (6-17)
ただし、k = 0 ...
maxCoefNum- 1、
i = diagScanOrder[
log2(matrixSize) ][
log2(matrixSize) ][k ][ 0 ]
j = diagScanOrder[
log2(matrixSize) ][
log2(matrixSize) ][k ][ 1 ]
変更されるQMデコードワークフローの例は、
図7に示される。
図7に示される態様の例は、予測=コピー;可変長の残差を含む。
図7では、
図6に例示される態様の例からの変更は、ボールドのテキストおよび太い外郭の中にある。
【0067】
一般に、態様の少なくとも1つの例は、スケールファクタを予測に加えることを含む。例えば、QMの予測は、スケールファクタをコピー/デシメーションに加えることによって強化されることが可能である。先行する態様の例と組み合わせるとき、今述べたことは、上に説明されているQMになされる2つの共通の調整、スケーリングおよびオフセットを可能にし、さらに可変長の残差を用いて正確度とビットコストとの間のユーザー定義トレードオフも可能にする。スケールファクタは、数値N(例えば16)に正規化された整数であることが可能である。スケーリング式(scaling formula)は、選択の中立値(neutral value)(例えば、HEVC、VVC、またはJVET-O0223に対して16、しかしQMがQPオフセットとして解釈されるならば零であるだろう)に基づいて参照QMをスケーリングすることが可能である。N = (1 << shift) = 16による例示的な式が以下に示される。
scaledQM = ( ( refQM - 16 ) * scale + rnd ) >> shift )+ 16 (6-18)
ただし、
●shift= 4かつrnd= 8は、N = ( 1 << 4 ) = 16を意味する
●refQMは、スケーリングされることになる入力QMである
●scaleは、スケーリングファクタである
●scaledQMは、出力されたスケーリングされているQMである
結果のスケーリングされているQMは、さらにQMの範囲(例えば0・・・255または1・・・255など)にクリップされるべきである。
【0068】
スケーリングファクタscaleは、値0が、最小数のビットコスト、exp-Golombとして符号化されるとき1ビット、を有する中立値(スケーリングしない)を表すために、Nに対してオフセットとして送信されることが可能である(上の例では、送信される値は、scale - ( 1 << shift ) であろう)。その上さらに、値は、現実的な範囲に限定されることが可能であり、例えば、-32から32までの間の値が-1から+3までの間のスケーリングを意味する、または-16から16までの間の値が0から+2までの間のスケーリングを意味する(ゆえに、スケーリングを正の値に限定する)。
【0069】
シンタックスの例が以下に示される。スケールファクタは、必ずしもオフセットまたは残差と組み合わされず、JVET-O0223、VVC、またはHEVCに加えて単独において適用されることがあることを特筆する。
【0070】
【0071】
0に等しいscaling_list_pred_mode_flag[ matrixId ]は、スケーリングマトリックスが参照スケーリングマトリックス(reference scaling matrix)の値から導出されることを指定する。参照スケーリングマトリックスは、scaling_list_pred_matrix_id_delta[ matrixId ]によって指定される。1に等しいscaling_list_pred_mode_flag[ matrixId ]は、スケーリングリストの値が明示的にシグナリングされることを指定する。
scaling_list_pred_mode_flag[ matrixId ]が1に等しいとき、matrixSize × matrixSizeの配列predScalingMatrix[ matrixId ]のすべての値、および変数predScalingDC[ matrixId ]の値は、8に等しいと推論される。
scaling_list_pred_matrix_id_delta[ matrixId ]は、次のとおりに、予測されるスケーリングマトリックス(predicted scaling matrix)を導出するのに用いられる参照スケーリングマトリックスを指定する。scaling_list_pred_matrix_id_delta[ matrixId ]の値は、両端を含む0からmatrixIdまでの範囲内であるとする。
scaling_list_pred_scale_minus16[ matrixId ] plus 16は、次のとおりに、予測されるスケーリングマトリックス(predicted scaling matrix)を導出するのに用いられる参照スケーリングマトリックスに適用されることになるスケールファクタを指定する。scaling_list_pred_scale_minus16[ matrixId ]の値は、両端を含む-16から+16までの範囲内であるとする。
scaling_list_pred_mode_flag[ matrixId ]が零に等しいとき、
-第1に、変数refMatrixSizeおよび配列refScalingMatrixは、次のとおりに導出される、
○scaling_list_pred_matrix_id_delta[ matrixId ]が零に等しいならば、下記が適用されてデフォルト値を設定する、
●refMatrixSizeは、8に等しく設定される、
●matrixIdが偶数ならば、
refScalingMatrix = (6-19)
{
{ 16, 16, 16, 16, 16, 16, 16, 16 }// INTRAのデフォルト値に対するプレースホルダー
{ 16, 16, 16, 16, 16, 16, 16, 16 }
{ 16, 16, 16, 16, 16, 16, 16, 16 }
{ 16, 16, 16, 16, 16, 16, 16, 16 }
{ 16, 16, 16, 16, 16, 16, 16, 16 }
{ 16, 16, 16, 16, 16, 16, 16, 16 }
{ 16, 16, 16, 16, 16, 16, 16, 16 }
{ 16, 16, 16, 16, 16, 16, 16, 16 }
},
●そうでなければ、
refScalingMatrix = (6-20)
{
{ 16, 16, 16, 16, 16, 16, 16, 16 }// INTERのデフォルト値に対するプレースホルダー
{ 16, 16, 16, 16, 16, 16, 16, 16 }
{ 16, 16, 16, 16, 16, 16, 16, 16 }
{ 16, 16, 16, 16, 16, 16, 16, 16 }
{ 16, 16, 16, 16, 16, 16, 16, 16 }
{ 16, 16, 16, 16, 16, 16, 16, 16 }
{ 16, 16, 16, 16, 16, 16, 16, 16 }
{ 16, 16, 16, 16, 16, 16, 16, 16 }
},
○そうでなければ(scaling_list_pred_matrix_id_delta[ matrixId ]が零より大きいならば)、下記が適用される。
refMatrixId = matrixId - scaling_list_pred_matrix_id_delta[ matrixId ] (6-21)
refMatrixSize = (refMatrixId < 20) ?8 : (refMatrixId < 26) ?4 : 2 ) (6-22)
refScalingMatrix = ScalingMatrix[ refMatrixId ] (6-23)
-次に、配列predScalingMatrix[ matrixId ]は、次のとおりに導き出される。
predScalingMatrix[ matrixId ][ x ][ y ] =
Clip3( 1, 255, ( ( (refScalingMatrix[ i ][ j]
- 16 ) * scale + 8 ) >> 4 ) )+ 16 ) (6-24)
ただし、x = 0・・・matrixSize - 1、 y = 0・・・matrixSize - 1、
i = x << ( log2(refMatrixSize) - log2( matrixSize ) )/*, and*/
j = y << ( log2(refMatrixSize) - log2( matrixSize ) )
, and
scale = scaling_list_pred_scale_minus16[ matrixId ] + 16
-matrixId<14のとき、scaling_list_pred_matrix_id_delta[ matrixId ]が零に等しいならば、変数predScalingDC[ matrixId ]は16に等しく設定され、そうでなければ、
次のとおりに、/*ScalingDC[ refMatrixId ]に等しく設定される。*/
導出される。
predScalingDC[ matrixId ] = Clip3( 1, 255, ( ( ( ScalingDC[ refMatrixId ] - 16 ) * scale + 8 ) >> 4 ) )+ 16 ) (6-25)
ただし、scale = scaling_list_pred_scale_minus16[ matrixId ] + 16
coefNumは、送信される残差係数の数を指定する。scoefNumの値は、両端を含む0からmaxCoefNumまでの範囲内であるとする。
scaling_list_dc_coef[ matrixId ]は、ScalingDC[ matrixId ]を導出するのに用いられ、xxx項にて説明されている、関係のあるときのスケーリングマトリックスについての第1の値を指定する。scaling_list_dc_coef [ matrixId ]の値は、両端を含む-128から127までの範囲内であるとする。存在しないとき、scaling_list_dc_coef[ matrixId ]の値は、0に等しいと推論される。
matrixIdが14より小さいとき、変数ScalingDC[ matrixId ]は、次のとおりに導出される。
ScalingDC[ matrixId ] = ( predScalingDC[ matrixId ] + scaling_list_dc_coef[ matrixId ] + 256 ) % 256 (6-26)
scaling_list_delta_coefは、両端を含む0からCoefNum-1の間のiに対して、カレントのマトリックス係数ScalingList[ matrixId ][ i ] と、直前のマトリックス係数ScalingList[ matrixId ][ i - 1 ] との差を指定する。両端を含むCoefNumとmaxCoefNum-1との間のiに対して、scaling_list_delta_coefは、0に等しいと推論される。scaling_list_delta_coefの値は、両端を含む-128から127までの範囲内であるとする。
(matrixSize)x(matrixSize)の配列ScalingMatrix[ matrixId ]は、次のとおりに導き出される。
ScalingMatrix [ i ][ j ] = ( predScalingMatrix[ i ][ j ] + ScalingList[ matrixId ][ k ] + 256 ) % 256 (6-27)
ただし、k = 0・・・maxCoefNum - 1、
i = diagScanOrder[ log2(matrixSize) ][ log2(matrixSize) ][ k ][ 0 ]、
j = diagScanOrder[ log2(matrixSize) ][ log2(matrixSize) ][ k ][ 1 ]
変更されるQMデコードワークフローの例は、
図8に示される。
図9に示される態様の例は、予測=スケーリング;可変長の残差を含む。
図8では、
図7に例示される態様の例からの変更は、ボールド体のテキストおよび太い外郭の中にある。
【0072】
一般に、態様の少なくとも1つの例は、予測モードフラグを取り除くことを含む。例えば、完全な残差が、例えば上に説明される態様の例においてなど、送信されることが可能である限り、QMの完全な仕様がscaling_list_pred_mode_flagフラグに関係なく可能であるので、このフラグを取り除くことが可能であり、ビットコストに対して最小限のインパクトだけで、仕様テキストを簡略化する。
【0073】
以下は、先行する態様への変更に基づいて、現時の態様のシンタックスおよびセマンティクスの例を与える。
【0074】
【0075】
/*0に等しいscaling_list_pred_mode_flag[ matrixId ]は、スケーリングマトリックスが参照スケーリングマトリックス(reference scaling matrix)の値から導出されることを指定する。参照スケーリングマトリックスは、scaling_list_pred_matrix_id_delta[ matrixId ]によって指定される。1に等しいscaling_list_pred_mode_flag[ matrixId ]は、スケーリングリストの値が明示的にシグナリングされることを指定する。*/
/*scaling_list_pred_mode_flag[ matrixId ]が1に等しいとき、matrixSize × matrixSizeの配列predScalingMatrix[ matrixId ]のすべての値、および変数predScalingDC[ matrixId ]の値は、8に等しいと推論される。*/
scaling_list_pred_matrix_id_delta[ matrixId ]は、予測されるスケーリングマトリックス(predicted scaling matrix)を導出するのに用いられる参照スケーリングマトリックスを指定する。scaling_list_pred_matrix_id_delta[ matrixId ]の値は、両端を含む0からmatrixIdまでの範囲内であるとする。
scaling_list_pred_scale_minus16[ matrixId ] plus 16は、次のとおりに、予測されるスケーリングマトリックス(predicted scaling matrix)を導出するのに用いられる参照スケーリングマトリックスに適用されることになるスケールファクタを指定する。scaling_list_pred_scale_minus16[ matrixId ]の値は、両端を含む-16から+16までの範囲内であるとする。
/*scaling_list_pred_mode_flag[ matrixId ]が零に等しいとき、*/
-第1に、変数refMatrixSizeおよび配列refScalingMatrixは、次のとおりに導出される、
○scaling_list_pred_matrix_id_delta[ matrixId ]が零に等しいならば、下記が適用されてデフォルト値を設定する、
●refMatrixSizeは、8に等しく設定される、
●matrixIdが偶数ならば、
refScalingMatrix = (6-28)
{
{ 16, 16, 16, 16, 16, 16, 16, 16 }// INTRAのデフォルト値に対するプレースホルダー
{ 16, 16, 16, 16, 16, 16, 16, 16 }
{ 16, 16, 16, 16, 16, 16, 16, 16 }
{ 16, 16, 16, 16, 16, 16, 16, 16 }
{ 16, 16, 16, 16, 16, 16, 16, 16 }
{ 16, 16, 16, 16, 16, 16, 16, 16 }
{ 16, 16, 16, 16, 16, 16, 16, 16 }
{ 16, 16, 16, 16, 16, 16, 16, 16 }
},
●そうでなければ、
refScalingMatrix = (6-29)
{
{ 16, 16, 16, 16, 16, 16, 16, 16 }// INTERのデフォルト値に対するプレースホルダー
{ 16, 16, 16, 16, 16, 16, 16, 16 }
{ 16, 16, 16, 16, 16, 16, 16, 16 }
{ 16, 16, 16, 16, 16, 16, 16, 16 }
{ 16, 16, 16, 16, 16, 16, 16, 16 }
{ 16, 16, 16, 16, 16, 16, 16, 16 }
{ 16, 16, 16, 16, 16, 16, 16, 16 }
{ 16, 16, 16, 16, 16, 16, 16, 16 }
},
○そうでなければ(scaling_list_pred_matrix_id_delta[ matrixId ]が零より大きいならば)、下記が適用される。
refMatrixId = matrixId - scaling_list_pred_matrix_id_delta[ matrixId ] (6-30)
refMatrixSize = (refMatrixId < 20) ?8 : (refMatrixId < 26) ?4 : 2 ) (6-31)
refScalingMatrix = ScalingMatrix[ refMatrixId ] (6-32)
-次に、配列predScalingMatrix[ matrixId ]は、次のとおりに導き出される。
predScalingMatrix[ matrixId ][ x ][ y ] = Clip3( 1, 255, ( ( ( refScalingMatrix[ i ][ j ] - 16 ) * scale + 8 ) >> 4 ) )+ 16 ) (6-33)
ただし、x = 0・・・matrixSize - 1、 y = 0・・・matrixSize - 1、
i = x << ( log2(refMatrixSize) - log2( matrixSize ) )
j = y << ( log2(refMatrixSize) - log2( matrixSize ) ), and
scale = scaling_list_pred_scale_minus16[ matrixId ] + 16
-matrixId<14のとき、scaling_list_pred_matrix_id_delta[ matrixId ]が零に等しいならば、変数predScalingDC[ matrixId ]は16に等しく設定され、そうでなければ、次のとおりに、導出される。
predScalingDC[ matrixId ] = Clip3( 1, 255, ( ( ( ScalingDC[ refMatrixId ] - 16 ) * scale + 8 ) >> 4 ) )+ 16 ) (6-34)
ただし、scale = scaling_list_pred_scale_minus16[ matrixId ] + 16
coefNumは、送信される残差係数の数を指定する。scoefNumの値は、両端を含む0からmaxCoefNumまでの範囲内であるとする。
scaling_list_dc_coef[ matrixId ]は、ScalingDC[ matrixId ]を導出するのに用いられ、xxx項にて説明されている、関係のあるときのスケーリングマトリックスについての第1の値を指定する。scaling_list_dc_coef [ matrixId ]の値は、両端を含む-128から127までの範囲内であるとする。存在しないとき、scaling_list_dc_coef[ matrixId ]の値は、0に等しいと推論される。
matrixIdが14より小さいとき、変数ScalingDC[ matrixId ]は、次のとおりに導出される。
ScalingDC[ matrixId ] = ( predScalingDC[ matrixId ] + scaling_list_dc_coef[ matrixId ] + 256 ) % 256 (6-35)
scaling_list_delta_coefは、両端を含む0からCoefNum-1の間のiに対して、カレントのマトリックス係数ScalingList[ matrixId ][ i ] と、直前のマトリックス係数ScalingList[ matrixId ][ i - 1 ] との差を指定する。両端を含むCoefNumとmaxCoefNum-1との間のiに対して、scaling_list_delta_coefは、0に等しいと推論される。scaling_list_delta_coefの値は、両端を含む-128から127までの範囲内であるとする。
(matrixSize)x(matrixSize)の配列ScalingMatrix[ matrixId ]は、次のとおりに導き出される。
ScalingMatrix [ i ][ j ] = ( predScalingMatrix[ i ][ j ] + ScalingList[ matrixId ][ k ] + 256 ) % 256 (6-36)
ただし、k = 0・・・maxCoefNum - 1、
i = diagScanOrder[ log2(matrixSize) ][ log2(matrixSize) ][ k ][ 0 ]、
j = diagScanOrder[ log2(matrixSize) ][ log2(matrixSize) ][ k ][ 1 ]
変更されるQMデコードワークフローの例は、
図9に示される。
図9に示される態様の例は、予測を常に用いる;予測=スケーリング;可変長の残差を含む。
図9では、
図8に例示される態様の例からの変更は、
図8の特徴の削除を含む。
【0076】
種々の他の態様の少なくともいくつかの例は、上に説明された現時のVVC技法を参考として得ている、QMに対する変更を検討している第16回JVET会議に変更のために提出されたいくつかの貢献を含み、以下に説明される。たいていの人々は、QMの数、QM識別子のマッピング、QMマトリックスサイズ式、QM選択および/またはリサイズ処理に影響を与えることによって、例示的なシンタックスおよびセマンティクスにインパクトを与えるが、本質を変えることなく本開示にて提案されている技法に同等の変更を検討することができるだろう。変化への適応を提供する態様の例は、次の小節にて詳述される。
【0077】
態様の少なくとも1つの例は、2×2色差QMのうちのいくつかまたはすべての除去を含むことが可能である。最近、VVCは、イントラモードにおいて2×2色差変換ブロックを取り除き、ゆえに、2×2QMイントラQMを送信することを無駄にするが、無駄は、2×3=6ビットに限定されることが可能である(3ビットは、上に説明されたシンタックス例を有するデフォルトマトリックスの使用をシグナリングするのに必要とされる)。
【0078】
輝度2×2QMを取り除くことは、簡単なシンタックス変更により、送信されるQMの数に影響を与えるだろう。
【0079】
【0080】
そして、例えば、次のように、JVET-O0223(またはJVET-P0110の更新)からの「量子化マトリックス導出処理」においてmatrixIdの選択式を調整することによって反映されることが可能であるであろう、識別子のマッピングも影響を受ける(表6からid26および28が無効になる)だろう。
matrixId = 6 * sizeId + matrixTypeId
ただし、log2TuWidth = log2( blkWidth ) + ( cIdx > 0 ) ? log2( SubWidthC ) : 0,
log2TuHeight = log2( blkHeight ) + ( cIdx > 0 ) ?log2( SubHeightC ) : 0,
sizeId = 6 - max( log2TuWidth, log2TuHeight ), and
matrixTypeId = ( 2 * cIdx + ( predMode = MODE_INTRA ? 0 : 1 ) )
matrixId -= (matrixId > 25) ?(matrixId > 27 ? : 2 : 1) : 0
すべての2×2 QMを取り除き、2×2色差インターブロックに対してQMを無効にすることは、下の表に示されている、QMの数を26に減らすことによって、複雑さをいっそうより少なくするだろう。
【0081】
【0082】
そして、VVCの「Derivation process for scaling matrix」にて「Scaling process for transform coefficients」をコールせず、代わりに例外リストにその場合を追加する。
-中間にある(nTbW)×(nTbH)のスケーリングファクタの配列mは、次のとおりに導き出される、
-次の条件のうちの1つまたは複数が真ならば、m[ x ][ y ] は16に等しく設定される、
-sps_scaling_list_enabled_flagが0に等しい、
-transform_skip_flag[ xTbY ][ yTbY ]が1に等しい、
-nTbWとnTbHとの両方が2に等しい、
-そうでなければ、mは、8.7.1項にて指定されているマトリックスのスケーリングのための導出処理の出力であり、入力として、予測モードCuPredMode[ xTbY ][ yTbY ]、色成分変数cIdx、ブロック幅nTbW、およびブロック高さnTbHを用いて起動される。
代替えとして、ブロックサイズが2×2または同様の条件であるとき、「Derivation process for scaling matrix」内にてすべて16の値(all-16 value)をm[][]配列に割り当てる。
【0083】
少なくとも1つの他の態様は、サイズ64の輝度QMに対して、より大きいサイズを含む。マトリックスサイズ式を変更して、例えばサイズ64の輝度QMに対して16×16の係数を有効にすることが可能であり、例示的なシンタックスは、以下に示される。
【0084】
【0085】
上に説明された態様の例示的なセマンティクスにおけるrefMatrixSizeは、同一の規則に従い、それに応じて変えられるとすることは当業者には明らかであろう。
【0086】
少なくとも1つの他の態様は、ジョイントのCbCr(joint CbCr)の QMを追加することを含む。ジョイントのCbCrの残差により符号化されたブロックに対して特定のQMが望まれることが可能だろう。今述べたことは、通常の色差の1つの後に追加されることが可能であり、以下の新しい識別マッピング表に帰着する。
【0087】
【0088】
以下に示されるとおり、QMの数、matrixSize式、DC係数存在条件(<14から<18へ変更する)、QM選択処理におけるmatrixId式に影響を与える。
【0089】
【0090】
matrixId = 8/*6*/ * sizeId + matrixTypeId
ただし、log2TuWidth = log2( blkWidth ) + ( cIdx > 0 ) ? log2( SubWidthC ) : 0,
log2TuHeight = log2( blkHeight ) + ( cIdx > 0 ) ?log2( SubHeightC ) : 0,
sizeId = 6 - max( log2TuWidth, log2TuHeight ), and
matrixTypeId = ( 2 * cIdx + ( predMode = MODE_INTRA ? 0 : 1 ) )
セマンティクスにおける他の関係した場所(refMatrixSizeなど)は、当業者には明らかであろう変更に対応することにより影響を受ける。
【0091】
少なくとも1つの他の態様は、LNFSTに対してQMを追加することを含む。LNFSTは、最終的な変換係数の空間周波数の意味を変える、ゆえに、QM係数の意味にも影響を与える、VVCにて用いられる二次変換である。特定のQMが望まれることがある。LNFSTの出力は、4×4に限定され、2つの代替えの変換コアを有し、今述べたQMは、下の表に示されている、(サイズが減る順に並べられたQMを保つ)通常のサイズ4の前にまたは後に挿入される見せかけのTUサイズとして追加されることが可能であろう。LNFSTがイントラモードのみのためであるので、イントラ/インターラインは、コア変換を区別するのに用いられるだろう。
【0092】
【0093】
シンタックスおよびセマンティクスは、直前の例におけるとおり、それに応じて変更されて、新しいmatrixIdマッピングを、QMの数、matrixSize、DC係数条件などを反映するべきである。
【0094】
正しいQMを選択する「Quantization matrix derivation process」におけるmatrixIdの導出も、上のように表にされた記述によってか、次の例におけるように式/擬似コード(pseudo-code)を改めることによってかのいずれかによって更新されるべきである。
if (lfnst_idx[ xTbY ][ yTbY ] != 0)
matrixId = 24 + 2*cIdx + lfnst_idx[ xTbY ][ yTbY ]
else {
matrixId = [...]
if (matrixId > 23)
matrixId += 6
}
少なくとも1つの他の態様は、4x4QMの使用を強いることによって、LNFSTによりQMを取り扱うことを含む。今述べたは、例えば、次のように、LNFSTの場合に「量子化マトリックス導出処理」にて特定のmatrixIdがカレントブロックに対して用いられることを強いることによって、実装されることが可能である。
if (lfnst_idx[ xTbY ][ yTbY ] != 0)
matrixId = 20 + ((cIdx==0) ?10 : 2*cIdx) + lfnst_idx[ xTbY ][ yTbY ]
else
matrixId = [...]
本出願は、ツール、特徴、態様、モデル、アプローチなどを含むいろいろな様相を説明する。例えば、種々の様相などは、次を含むが、これらに限定されない。
-可能な限り簡潔に仕様を保つ一方、カスタムQMの送信時におけるビット数を節約すること、
-単純な調整が低ビットコストにより可能であるようにQM予測を改良すること、
-グローバルオフセットを指定する簡単なやり方を提供すること、
-コピーおよびダウンサンプリングに加えてスケールファクタ(scale factor)を適用すること、グローバルオフセットを指定する簡単なやり方を提供すること、ならびに、可変長の残差により予測をリファインメントできるようにすることによって、QMの予測を拡張することのうちの1つまたは複数、
-QMをさらにリファインメントするために、完全な符号化よりも可能性のあるより低いコストを有して、改良された予測を残差と組み合わせること、
-コピー/ダウンスケーリングに加えてオフセットを用いるQM予測を提供すること、
-(可変長の)残差を加えたQM予測を提供すること、
-コピー/ダウンスケーリングに加えてスケールファクタを用いるQM予測を提供すること、
-オフセットか残差かのいずれかとのスケールファクタの組み合わせを含むQM予測を提供すること、
-QMを送信するのに、および、簡潔に仕様を保つと同時に正確度とビットコストとの間のユーザー定義のトレードオフを可能にするのに、必要なビット数を減らすことを提供すること、
-次の特徴のうちの1つまたは複数を含むことに基づいて、QMを送信するのに、および、簡潔に仕様を保つと同時に正確度とビットコストとの間のユーザー定義のトレードオフを可能にするのに、必要なビット数を減らすことを提供すること、
○QM予測に残差を加える、
○QM予測にスケーリングファクタを加える、
○残差とスケーリングとを組み合わせる、
○予測を常に用いる(予測モードフラグを取り除く)。
【0095】
今述べた様相の多くは、特殊性を有して説明され、少なくとも個々の特性を示すために、多くの場合、限定するような印象を与え得る仕方において説明される。しかしながら、今述べたことは、説明における明確さの目的のためであり、今述べた様相の適用または範囲を限定しない。確かに、異なった様相のすべては、組み合わされ、入れ替えられて、さらなる様相を提供することが可能である。さらにその上、態様は、同様に、より早い出願にて説明される様相と組み合わされ、入れ替えられることが可能である。
【0096】
本出願において説明されるおよび想定される様相は、多くの異なったかたちにおいて実装されることが可能である。
図10、11、および12は、以下にいくつかの態様を提供するが、他の態様が想定され、
図10、11、および12についての議論は、実装の広さを限定しない。一般に、様相のうちの少なくとも1つは、ビデオエンコードおよびデコードに関し、一般に、少なくとも1つの他の態様は、生成されたまたはエンコードされたビットストリームを送信することに関する。今述べた様相および他の様相は、説明される方法のいずれかに従ってビデオデータをエンコードまたはデコードするために、方法、装置、命令を格納したコンピューター読み取り可能な記録媒体、および/または説明される方法のいずれかに従って生成されたビットストリームを格納したコンピューター読み取り可能な記録媒体として実装されることが可能である。
【0097】
本出願にて、用語「再構成された」および「デコードされた」は、交換可能に用いられることがあり、用語「ピクセル」および「サンプル」は、交換可能に用いられることがあり、用語「画像」、「ピクチャ」、および「フレーム」は、交換可能に用いられることがある。
【0098】
種々の方法が本明細書にて説明され、方法の各々は、説明されている方法を達成するために1つまたは複数のステップまたは動作を含む。ステップまたは動作の特定の順が方法の固有の操作に対して必要とされない限り、特定のステップおよび/または動作の順および/または使用は、変更される、または組み合わされることがある。
【0099】
本出願にて説明される種々の方法および他の様相は、モジュール、例えば、
図10および
図11に示されているビデオエンコーダー100およびデコーダー200の量子化および逆量子化モジュール(130、140、240)を変更するのに用いられることが可能である。さらにその上、本様相は、VVCまたはHEVCに限定されず、例えば、以前から存在しようが将来開発されようが、他の規格および勧告に、ならびにどれかの上記の規格および勧告(VVCおよびHEVCを含む)の拡張に適用されることが可能である。特に示されない限り、または特に技術的に妨げられない限り、本出願にて説明される様相は、個々にまたは組み合わせにおいて用いられることが可能である。
【0100】
種々の数値が、例えば、最大量子化マトリックスのサイズ、考慮されるブロックサイズの数が、本出願にて用いられる。特定の値は、例示的な目的のためであり、説明される様相は、今述べた特定の値に限定されない。
【0101】
図10は、エンコーダー100を例示する。エンコーダー100の変形が想定されるが、エンコーダー100は、すべての予期される変形を説明することなく、明確さの目的のために以下に説明される。
エンコードされる前に、ビデオシーケンスは、プレエンコード(pre-encoding)処理(101)を、例えば、色変換を入力カラーピクチャに適用すること(たとえば、RGB4:4:4からYCbCr4:2:0へのコンバージョン)、または信号分布を圧縮に対してより回復力のある状態にするために入力ピクチャ成分の再マッピングを行うこと(たとえば、色成分のうちの1つのヒストグラムイコライゼーションを使用すること)を通り抜けることがある。メタデータは、前処理に関連付けられ、ビットストリームに結び付けられることが可能である。
【0102】
エンコーダー100において、ピクチャは、以下に説明されているエンコーダーエレメントによってエンコードされる。エンコードされるピクチャは、分割(102)され、例えば、CUのユニットにて処理される。各ユニットは、例えば、イントラかインターモードかのいずれかを使用してエンコードされる。ユニットがイントラモードにてエンコードされるとき、イントラ予測(160)を行う。インターモードにおいて、動き推定(175)および動き補償(170)が行われる。エンコーダーは、ユニットをエンコードするために用いるイントラモードまたはインターモードのうちのいずれか1つを決定(105)し、例えば、予測モードフラグによってイントラ/インター決定を示す。予測残差は、例えば、予測されるブロックを元の画像ブロックから減じる(110)ことによって算出される。
【0103】
次に、予測残差は、変換(125)され、量子化(130)される。量子化されている変換係数は、動きベクトルおよび他のシンタックス要素も同様に、ビットストリームを出力するのにエントロピー符号化(145)される。エンコーダーは、変換をスキップし、変換されていない残差信号に直に量子化を適用することが可能である。エンコーダーは、変換も量子化も両方バイパスすることが可能であり、すなわち、残差は、変換処理も量子化処理も適用なしに直に符号化される。
【0104】
エンコーダーは、エンコードされているブロックをデコードして、さらなる予測のために参照を提供する。量子化されている変換係数は、予測残差をデコードするために、逆量子化(140)され逆変換(150)される。デコードされた予測残差と予測されるブロックとを組み合わせ(155)て、画像ブロックが再構成される。インループフィルター(165)は、再構成されたピクチャに適用されて、例えば、エンコードのアーチファクトを減らすデブロッキング/SAO(Sample Adaptive Offset)フィルタリングを行う。フィルタリングされている画像は、参照ピクチャバッファ(180)に格納される。
【0105】
図11は、ビデオデコーダー200のブロック図を例示する。デコーダー200において、ビットストリームは、以下に説明されているデコーダーエレメントによってデコードされる。一般に、ビデオデコーダー200は、
図10にて説明されているエンコードパスと逆のデコードパスを行う。さらに、一般に、エンコーダー100も、ビデオデータをエンコードする一部としてビデオデコードを行う。
【0106】
特に、デコーダーの入力は、ビデオエンコーダー100によって生成されることが可能であるビデオビットストリームを含む。最初に、ビットストリームは、変換係数、動きベクトル、および他の符号化情報を取得するために、エントロピーデコード(230)される。ピクチャ分割情報は、ピクチャがどのように分割されるかを示す。それゆえ、デコーダーは、デコードされたピクチャ分割情報に従ってピクチャを区分(235)することがある。変換係数は、予測残差をデコードするために、逆量子化(240)され逆変換(250)される。デコードされた予測残差と予測されるブロックとを組み合わせて(255)、画像ブロックが再構成される。予測されるブロックは、イントラ予測(260)または動き補償された予測(すなわち、インター予測)(275)から取得される(270)ことが可能である。インループフィルター(265)は、再構成された画像に適用される。フィルタリングされている画像は、参照ピクチャバッファ(280)に格納される。
【0107】
さらに、デコードされたピクチャは、ポストデコード(post-decoding)処理(285)を、例えば、逆色変換(たとえば、YCbCr4:2:0からRGB4:4:4へのコンバージョン)、またはプレエンコード処理(101)にて行われた再マッピング処理の逆を行う逆再マッピングを通り抜けることが可能である。ポストデコード処理は、プレエンコード処理にて導出された、ビットストリームにてシグナリングされたメタデータを用いることが可能である。
【0108】
図12は、種々の様相および態様が実装されるシステムの例についてのブロック図を例示する。システム1000は、以下に説明される種々のコンポーネントを含むデバイスとして具体化されることが可能であり、本文書にて説明される1つまたは複数の様相を行うように構成される。上記のデバイスの例は、限定されないが、例えば、パーソナルコンピューター、ラップトップコンピューター、スマートフォン、タブレットコンピューター、デジタルマルチメディアセットトップボックス、デジタルテレビ放送受信機、パーソナルビデオレコーディングシステム、連結される家庭用電気機器、およびサーバーなどの種々の電子デバイスを含む。システム1000のエレメントは、単独にまたは組み合わせにて、単一の集積回路(IC)、複数のIC、および/または個別のコンポーネントに具体化されることが可能である。例えば、少なくとも1つの態様にて、システム1000の処理およびエンコーダー/デコーダーエレメントは、複数のICおよび/または個別のコンポーネントにわたって分散される。種々の態様にて、システム1000は、例えば、通信バスを介して、または専用の入力および/もしくは出力ポートを介して、1つもしくは複数の他のシステム、または他の電子デバイスに通信接続される。種々の態様にて、システム1000は、本文書に説明される1つまたは複数の様相を実装するように構成される。
システム1000は、例えば、本文書に説明される種々の様相を実装するためにロードされる命令を実行するように構成された少なくとも1つのプロセッサー1010を含む。プロセッサー1010は、埋め込まれたメモリー、入出力インターフェイス、および当技術分野にて知られている種々の他の回路を含むことが可能である。システム1000は、少なくとも1つのメモリー1020(たとえば、揮発性メモリーデバイス、および/または不揮発性メモリーデバイス)を含む。システム1000は、限定されないが、EEPROM(Electrically Erasable Programmable Read-Only Memory)、ROM(Read-Only Memory)、PROM(Programmable Read-Only Memory)、RAM(Random Access Memory)、DRAM(Dynamic Random Access Memory)、SRAM(Static Random Access Memory)、フラッシュ、磁気ディスクドライブ、および/または光ディスクドライブを含む不揮発性メモリーおよび/または揮発性メモリーを含むことが可能であるストレージデバイス1040を含む。ストレージデバイス1040は、非限定の例として、内部ストレージデバイス、付属のストレージデバイス(分離できるストレージデバイス、および分離できないストレージデバイスを含む)、および/またはネットワークアクセス可能なストレージデバイスを含むことが可能である。
【0109】
システム1000は、例えば、エンコードされたビデオまたはデコードされたビデオを提供するデータを処理するように構成されたエンコーダー/デコーダーモジュール1030を含み、エンコーダー/デコーダーモジュール1030は、独自のプロセッサーおよびメモリーを含むことが可能である。エンコーダー/デコーダーモジュール1030は、エンコード機能および/またはデコード機能を行うデバイスに含まれることが可能であるモジュール(複数可)を表す。既知であるように、デバイスは、エンコードモジュールおよびデコードモジュールのうちの1つまたは両方を含むことが可能である。追加として、エンコーダー/デコーダーモジュール1030は、システム1000の別個のエレメントとして実装されることが可能である、または当業者に知られているようにハードウェアおよびソフトウェアの組み合わせとしてプロセッサー1010内に組み入れられることが可能である。
【0110】
本文書に説明される種々の様相を行うプロセッサー1010またはエンコーダー/デコーダー1030上にロードされるプログラムコードは、ストレージデバイス1040に格納され、続いてプロセッサー1010による実行のためにメモリー1020上にロードされることが可能である。種々の態様にしたがって、1つまたは複数のプロセッサー1010、メモリー1020、ストレージデバイス1040、およびエンコーダー/デコーダーモジュール1030は、本文書に説明される処理の実行中に1つまたは複数の種々のアイテムを格納することが可能である。上記の格納されるアイテムは、限定されないが、入力ビデオ、デコードされたビデオ、またはデコードされたビデオの一部、ビットストリーム、マトリックス、変数、ならびに等式、公式、演算、および操作ロジックの処理からの中間または最終的な結果を含むことが可能である。
【0111】
いくつかの態様にて、プロセッサー1010および/またはエンコーダー/デコーダーモジュール1030の内部のメモリーは、命令を記憶し、エンコードするまたはデコードする間に必要とされる処理にワーキングメモリーを提供するのに用いられる。しかしながら、他の態様にて、処理デバイス(例えば、処理デバイスは、プロセッサー1010またはエンコーダー/デコーダーモジュール1030のいずれかであることが可能である)の外部のメモリーは、1つまたは複数の今述べた機能ために用いられる。外部メモリーは、メモリー1020および/またはストレージデバイス1040、例えば、ダイナミック型揮発性メモリーおよび/または不揮発性フラッシュメモリーであることが可能である。いくつかの態様にて、外部不揮発性フラッシュメモリーを用いて、例えば、テレビのオペレーティングシステムを格納する。少なくとも1つの態様にて、例えばRAMのような高速外部ダイナミック型揮発性メモリーは、ビデオ符号化およびデコード操作に対して、例えば、MPEG-2(MPEGは、Moving Picture Experts Groupを引用し、さらにMPEG-2は、ISO/IEC13818と呼ばれ、さらに13818-1は、H.222として知られ、さらに13818-2は、H.262として知られる)、HEVC(HEVCは、さらにH.265およびMPEG-H Part2としても知られるHigh Efficiency Video Codingを引用する)、またはVVC(Versatile Video Coding、JVET、the Joint Video Experts Teamによって開発されている規格)などに対してワーキングメモリーとして用いられる。
【0112】
システム1000のエレメントへの入力は、ブロック1130に示されるように、種々の入力デバイスを介して提供されることが可能である。上記の入力デバイスは、限定ではないが、(i)例えば、放送局によって電波を介して送信されるRF(radio frequency)信号を受信するRF部、(ii)COMP(Component)入力端子(またはCOMP入力端子のセット)、(iii)USB(Universal Serial Bus)入力端子、および/または(iv)HDMI(High Definition Multimedia Interface)入力端子を含む。
図10にて示されない他の例は、コンポジットビデオを含む。
【0113】
種々の態様にて、ブロック1130の入力デバイスは、当技術分野にて知られているそれぞれの入力処理エレメントを関連付けている。例えば、RF部分は、(i)望まれる周波数を選択すること(信号を選択すること、または信号を周波数の帯域に帯域制限することとも言われる)と、(ii)選択された信号をダウンコンバートすることと、(iii)(例えば、)ある態様にてチャネルと言われることが可能である信号周波数帯域を選択する周波数のより狭い帯域に再び帯域制限することと、(iv)ダウンコンバートされ帯域制限された信号を復調することと、(v)誤り訂正を行うことと、(vi)逆多重してデータパケットについて望まれるストリームを選択することと、に適しているエレメントに関連付けられることが可能である。種々の態様のRF部分は、今述べた機能を行う1つまたは複数のエレメント、例えば、周波数セレクター、信号セレクター、バンドリミッター、チャネルセレクター、フィルター、ダウンコンバーター、デモジュレーター、エラーコレクター、およびデマルチプレクサーを含む。RF部分は、例えば、受信信号を、より低い周波数(例えば、中間周波数もしくはベースバンドに近い周波数)に、またはベースバンドにダウンコンバートすることを含む、種々の機能を行うチューナーを含むことが可能である。1つのセットトップボックスの態様にて、RF部分および関連する入力処理エレメントは、ワイヤード媒体(例えば、ケーブル)を介して送信されるRF信号を受信し、フィルタリングし、ダウンコンバートし、および望まれる周波数帯域に再びフィルタリングすることによって周波数選択を行う。種々の態様は、上述した(および他の)要素の順序を再配置し、今述べた要素のいくつかを取り除き、および/または同様のまたは異なる機能を行う他の要素を加える。要素を加えることは、例えば、増幅器、およびアナログデジタル変換器を挿入することなど、既存の要素の間に要素を挿入することを含むことが可能である。種々の態様にて、RF部分は、アンテナを含む。
【0114】
追加として、USBおよび/またはHDMI端末は、システム1000を他の電子デバイスにUSBおよび/またはHDMI接続をわたって連結するために、それぞれのインターフェイスプロセッサーを含むことが可能である。入力処理の種々の様相、例えば、リードソロモン誤り訂正が、例えば、別個の入力処理IC内に、または必要に応じてプロセッサー1010内に実装されることが可能であることは、理解されることである。同様に、USBまたはHDMIインターフェイス処理の様相は、別個の入力処理IC内に、または必要に応じてプロセッサー1010内に実装されることが可能である。復調された、誤り訂正された、および逆多重されたストリームは、例えば、プロセッサー1010と、メモリーおよびストレージエレメントと協働して動作して必要に応じて出力デバイスにおける提出のためにデータストリームを処理するエンコーダー/デコーダー1030とを含む種々の処理エレメントに提供される。
【0115】
システム1000の種々のエレメントは、統合エンドされているハウジング内に提供されることが可能であり、統合されているハウジング内において、種々のエレメントは、相互接続され、適切な連結配列1140、例えば、I2C(Inter-IC)バス、配線、およびプリント回路基板を含む当技術分野にて知られている内部バスを用いて、そこの間においてデータを送信することが可能である。
【0116】
システム1000は、通信チャネル1060を介して他のデバイスとの通信を可能にする通信インターフェイス1050を含む。通信インターフェイス1050は、限定ではないが、通信チャネル1060を介してデータを送信するようにおよび受信するように構成されたトランシーバーを含むことが可能である。通信インターフェイス1050は、限定ではないが、モデムまたはネットワークカードを含むことが可能であり、通信チャネル1060は、例えば、ワイヤードおよび/またはワイヤレス媒体内に実装されることが可能である。
【0117】
データは、種々の態様にて、例えば、Wi-Fiネットワーク、例えば、IEEE802.11(IEEEは、Institute of Electrical and Electronics Engineersを引用する)などのワイヤレスネットワークを用いて、システム1000にストリーミングされるまたは他の方法により提供される。今述べた態様のWi-Fi信号は、Wi-Fi通信に対して合わせて変えられる通信チャネル1060および通信インターフェイス1050を介して受信される。通常、今述べた態様の通信チャネル1060は、ストリーミングアプリケーションおよび他のオーバーザトップ通信を可能にするために、インターネットを含む外部のネットワークへのアクセスを提供するアクセスポイントまたはルーターに連結される。他の態様は、ストリーミングされたデータをシステム1000に、入力ブロック1130のHDMI接続を介してデータを配信するセットトップボックスを用いて提供する。依然として、他の態様は、ストリーミングされたデータをシステム1000に、入力ブロック1130のRF接続を用いて提供する。上に示したように、種々の態様は、ストリーミングではない仕方においてデータを提供する。追加として、種々の態様は、Wi-Fi以外のワイヤレスネットワーク、例えば、セルラーネットワークまたはBluetoothネットワークを用いる。
【0118】
システム1000は、出力信号を、ディスプレイ1100、スピーカー1110、および他の周辺デバイス1120を含む種々の出力デバイスに提供することが可能である。種々の態様のディスプレイ1100は、例えば、タッチスクリーンディスプレイ、有機発光ダイオード(OLED)ディスプレイ、曲面ディスプレイ、および/または折り畳めるディスプレイのうちの1つまたは複数を含む。ディスプレイ1100は、テレビ、タブレット、ラップトップ、セルラーフォン(モバイルフォン)、または他のデバイス用であることが可能である。さらに、ディスプレイ1100は、(例えば、スマートフォンのように)他のコンポーネントと統合される、または(例えば、ラップトップ用の外部モニターと)分離することも可能である。態様の種々の例にて、その他の周辺デバイス1120は、スタンドアロンのデジタルビデオディスク(またはデジタルバーサタイルディスク)(両方の用語に対して、DVR)、ディスクプレーヤー、ステレオシステム、および/または照明システムのうちの1つまたは複数を含む。種々の態様は、システム1000の出力に基づいて機能を提供する1つまたは複数の周辺デバイス1120を用いる。例えば、ディスクプレーヤーは、システム1000の出力をプレイする役割を行う。
【0119】
種々の態様にて、制御信号は、システム1000と、ディスプレイ1100、スピーカー1110、または他の周辺デバイス1120との間において、例えば、AV.Link、CEC(Consumer Electronics Control)、またはユーザーの介入の有無にかかわらずデバイスツーデバイス制御を可能にする他の通信プロトコルのようなシグナリングを用いて通信される。出力デバイスは、それぞれのインターフェイス1070、1080、および1090を通じて専用のコネクションを介してシステム1000に通信接続されることが可能である。代替として、出力デバイスは、システム1000に、通信チャネル1060を用いて通信インターフェイス1050を介して連結されることが可能である。ディスプレイ1100およびスピーカー1110は、システム1000のその他のコンポーネントにより単一のユニットにおいて、例えば、テレビのような電子デバイスにおいて統合されることが可能である。種々の態様にて、ディスプレイインターフェイス1070は、例えば、タイミングコントローラ(T Con)チップのようなディスプレイドライバーを含む。
【0120】
代替として、ディスプレイ1100およびスピーカー1110は、例えば、入力1130のRF部分が別個のセットトップボックスの一部であるならば、1つまたは複数のその他のコンポーネントから分離されることが可能である。ディスプレイ1100およびスピーカー1110が外部コンポーネントである種々の態様にて、出力信号は、例えば、HDMIポート、USBポート、またはCOMP出力を含む専用の出力コネクションを介して提出されることが可能である。
【0121】
態様は、プロセッサー1010によって実装されるコンピュータソフトウェアによって、またはハードウェアによって、またはハードウェアおよびソフトウェアの組み合わせによって実行されることが可能である。非限定の例として、態様は、1つまたは複数の集積回路によって実装されることが可能である。メモリー1020は、技術的環境に適したどんなタイプのでもあることが可能であり、例えば、非限定の例として、光メモリーデバイス、磁気メモリーデバイス、半導体ベースのメモリーデバイス、固定メモリー、および取り外し可能なメモリーなどのどんな適したデータストレージ技術でも用いて実装されることが可能である。プロセッサー1010は、技術環境に適したどんなタイプのでもあることが可能であり、非限定の例として、マイクロプロセッサー、汎用コンピューター、専用コンピューター、およびマルチコアアーキテクチャに基づくプロセッサーのうちの1つまたは複数を含み込むことが可能である。
【0122】
態様の別の例が
図13に例示される。
図13では、たとえばビットストリームなどの入力情報は、エンコードされたビデオ情報と、たとえばエンコードされたビデオ情報に関連付けされた情報、例えば量子化マトリックスまたはマトリックスなど、およびたとえば1つまたは複数のシンタックス要素などの制御情報などの他の情報とを含む。1310では、量子化マトリックスの少なくとも1つの係数とシンタックス要素とを表す情報が、入力、例えば入力ビットストリームなどから取得される。1320では、シンタックス要素に基づいて、少なくとも1つの係数を表す情報が残差として解釈されることになることが決定される。次に、1330では、エンコードされたビデオ情報の少なくとも一部が、量子化マトリックスの予測と残差との組み合わせに基づいてデコードされる。
図13に関して示され、説明される特徴の1つまたは複数の例は、本明細書にて以前に、例えば
図6に関して例示され、説明された。
【0123】
態様の別の例が
図14に例示される。
図14では、ビデオ情報を含む入力が1410にて処理されて、ビデオ情報と、ビデオ情報の少なくとも一部に関連付けられた予測量子化マトリックスの少なくとも1つの係数を表す情報とを取得する。1420では、少なくとも1つの係数が残差として解釈されることになることが決定される。例えば、ビデオ情報の処理は、残差の使用が、あるビデオ情報の有利な処理を提供すること、例えばビデオ情報をエンコードするときに向上した圧縮効率、またはエンコードされたビデオ情報をデコードするときに向上したビデオ品質を提供することなどを示すことがある。次に、1430では、ビデオ情報の少なくとも一部が、予測された量子化マトリックスと残差との組み合わせに基づいてエンコードされる。さらに1430におけるエンコードは、少なくとも1つの係数が残差として解釈されることになることを示すシンタックス要素もエンコードする。
【0124】
本明細書に説明される態様の種々の実装および例は、デコードすることを含む。本出願にて用いられている「デコードすること」は、例えば、ディスプレイに適している最終的な出力を生成するために、受信されたエンコードされているシーケンスに行われる処理のすべてまたは一部を含み込むことが可能である。種々の態様にて、上記の処理は、デコーダーによって通常行われる処理、例えば、エントロピーデコード、逆量子化、逆変換、および差分デコードのうちの1つまたは複数を含む。種々の態様にて、さらにまたは代替えとして、上記の処理は、本出願にて説明される種々の実装のデコーダーによって行われる処理を含む。
【0125】
さらなる例として、一態様にて「デコードすること」は、「エントロピーデコード」のみを引用し、別の態様にて「デコードすること」は、差分デコードのみを引用し、別の態様にて「デコードすること」は、エントロピーデコードおよび差分デコードの組み合わせを引用する。語句「デコード処理」が具体的に演算のサブセットを引用することが意図されようと一般により広く引用することが意図されようと、デコード処理は、特定の説明の状況に基づいて明らかになるだろう、および当業者によって十分に理解されると信じられる。
【0126】
種々の実装は、エンコードすることを含む。「デコードすること」についての上の議論に類似したやり方において、本出願にて用いられている「エンコードすること」は、例えば、エンコードされているビットストリームを生成するために、入力ビデオシーケンスに行われる処理のすべてまたは一部を含み込むことが可能である。種々の態様にて、上記の処理は、エンコーダーによって通常行われる処理、例えば、分割、差分エンコード、変換、量子化、およびエントロピーエンコードのうちの1つまたは複数を含む。
【0127】
さらなる例として、一態様にて「エンコードすること」は、「エントロピーデコード」のみを引用し、別の態様にて「エンコードすること」は、差分デエンコードのみを引用し、別の態様にて「エンコードすること」は、差分エンコードおよびエントロピーエンコードの組み合わせを引用する。語句「エンコード処理」が具体的に演算のサブセットを引用することが意図されようと一般により広く引用することが意図されようと、エンコード処理は、特定の説明の状況に基づいて明らかになるだろう、および当業者によって十分に理解されると信じられる。
【0128】
本明細書にて用いられているシンタックス要素、例えば、scaling_list_pred_mode_flag、scaling_list_pred_matrix_id_delta、scaling_list_dc_coef_minus8は、記述的な用語であることを特筆する。記のような、それらは、他のシンタックス要素名の使用を排除しない。
【0129】
図がフロー図として与えられるとき、さらにそれは対応する装置のブロック図も提供することが理解されるべきである。同様に、図がブロック図として与えられると、さらにそれは対応する方法/処理のフロー図も提供することが理解されるべきである。
【0130】
本明細書にて説明される実装および様相は、例えば、方法もしくは処理、装置、ソフトウェアプログラム、データストリーム、または信号において実装されることが可能である。実装の単一のかたちの状況においてのみ述べられる(例えば、方法としてのみ述べられる)場合でさえ、さらに、述べられた特徴の実装は、他のかたち(例えば、装置またはプログラム)において実装されることも可能である。装置は、例えば、適切なハードウェア、ソフトウェア、およびファームウェアにおいて実装されることが可能である。方法は、例えば、コンピューター、マイクロプロセッサー、集積回路、またはプログラマブルロジックデバイスを含む、一般に処理デバイスを引用する、例えば、プロセッサーにおいて実装されることが可能である。さらに、プロセッサーは、例えば、コンピューター、携帯電話、ポータブル/パーソナルデジタルアシスタント(「PDA」)、およびエンドユーザー間において情報の通信を容易にする他のデバイスなど、通信デバイスも含む。
【0131】
「一態様」または「態様」または「一実装」または「実装」への言及は、他の変形も同様に、態様に関連して説明される特定の特徴、構造、特性などが、少なくとも1つの態様に含まれることを意味する。ゆえに、本出願の至る所に種々の場所に現れている語句「一態様にて」または「態様にて」または「一実装にて」または「実装にて」の出現は、どんな他の変形でも同様に、必ずしも同一の態様をすべて引用しているとは限らない。
【0132】
追加として、本出願は、情報の種々の部分を「決定すること」を引用することがある。情報を決定することは、例えば、情報を推定すること、情報を算出すること、情報を予測すること、または情報をメモリーから検索することのうちの1つまたは複数を含むことが可能である。
【0133】
さらに、本出願は、情報の種々の部分に「アクセスすること」を引用することがある。情報にアクセスすることは、例えば、情報を受信すること、情報を(例えば、メモリーから)検索すること、情報を格納すること、情報を移動すること、情報をコピーすること、情報を算出すること、情報を決定すること、情報を予測すること、または情報を推定することのうちの1つまたは複数を含むことが可能である。
【0134】
追加として、本出願は、情報の種々の部分を「受信すること」を引用することがある。受信することは、「アクセスすること」に関してのように、広い用語であることが意図される。情報を受信することは、例えば、情報にアクセスすること、または情報を(例えば、メモリーから)検索することのうちの1つまたは複数を含むことが可能である。さらに、通常、「受信すること」は、何らかの仕方または別の仕方において、例えば、情報を格納すること、情報を処理すること、情報を送信すること、情報を移動すること、情報をコピーすること、情報を消去すること、情報を算出すること、情報を決定すること、情報を予測すること、または情報を推定することなどの動作の間に含まれる。
【0135】
次の「/」、「および/または」、および「のうちの少なくとも1つ」のいずれかの使用は、例えば、「A/B」、「Aおよび/またはB」、および「AおよびBのうちの少なくとも1つ」の場合、第1の列挙されている選択肢(A)のみの選択、または第2の列挙されている選択肢(B)のみの選択、または両方の選択肢(AおよびB)の選択を含み込むことが意図されることは、理解されるべきである。さらなる例として、「A、B、および/またはC」および「A、B、およびCの少なくとも1つ」の場合、上記語句は、第1の列挙されている選択肢(A)のみの選択、または第2の列挙されている選択肢(B)のみの選択、または第3の列挙されている選択肢(C)のみの選択、または第1および第2の列挙されている選択肢(AおよびB)のみの選択、または第1のおよび第3の列挙されている選択肢(AおよびC)のみの選択、または第2および第3の列挙されている選択肢(BおよびC)、またはすべての3つの選択肢(AおよびBおよびC)の選択を含み込むことが意図される。今述べたことは、当業者および関連業者に明らかであるように、列挙されているだけの事項に対して拡張され得る。
【0136】
当業者には明らかであろうように、実装は、例えば、格納されるまたは送信されることが可能である情報を運ぶようにフォーマットされたいろいろな信号を生成されることが可能である。例えば、情報は、方法を行うための命令、または説明されている実装のうちの1つによって生成されるデータを含むことが可能である。例えば、信号は、説明されている態様のビットストリームを運ぶようにフォーマットされることが可能である。例えば、上記の信号は、電磁波として(例えば、スペクトルの無線周波部分を用いて)またはベースバンド信号としてフォーマットされることが可能である。例えば、フォーマッティングは、データストリームをエンコードすることと、エンコードされたデータストリームにより搬送波を変調することとを含むことが可能である。例えば、信号が運ぶ情報は、アナログまたはデジタル情報であることが可能である。信号は、知られているように、いろいろな別々のワイヤードまたはワイヤレスリンクを介して送信されることが可能である。信号は、プロセッサー読み取り可能な媒体において格納されることが可能である。
【0137】
種々の一般化された態様および特定化された態様も、本開示の至る所にサポートされ、企図される。本開示にしたがう態様の例は、下記を含むが下記に限定されない。
【0138】
一般に、態様の少なくとも1つは、エンコードされたビデオ情報を含むビットストリームから、量子化マトリックス(quantization matrix)およびシンタックス要素のうちの少なくとも1つの係数を表す情報を取得することと、シンタックス要素に基づいて、少なくとも1つの係数を表す情報が残差として解釈されることになることを決定することと、量子化マトリックスの予測と残差との組み合わせに基づいて、エンコードされたビデオ情報の少なくとも一部をデコードすることと、を含む方法を含むことが可能である。
【0139】
一般に、態様の少なくとも1つの例は、エンコードされたビデオ情報を含むビットストリームから、量子化マトリックスおよびシンタックス要素のうちの少なくとも1つの係数を表す情報を取得し、シンタックス要素に基づいて、少なくとも1つの係数を表す情報が残差として解釈されることになることを決定し、量子化マトリックスの予測と残差との組み合わせに基づいて、エンコードされたビデオ情報の少なくとも一部をデコードするように構成された1つまたは複数のプロセッサーを含む装置を含むことが可能である。
【0140】
一般に、態様の少なくとも1つの例は、ビデオ情報と、ビデオ情報の少なくとも一部に関連付けられた予測量子化マトリックス(predicted quantization matrix)の少なくとも1つの係数を表す情報とを取得することと、少なくとも1つの係数が残差として解釈されることになることを決定することと、予測量子化マトリックスと残差との組み合わせに基づいてビデオ情報の少なくとも一部をエンコードし、少なくとも1つの係数が残差として解釈されることになることを示すシンタックス要素をエンコードすることと、を含む方法を含むことが可能である。
【0141】
一般に、態様の少なくとも1つの例は、ビデオ情報と、ビデオ情報の少なくとも一部に関連付けられた予測量子化マトリックス(predicted quantization matrix)の少なくとも1つの係数を表す情報とを取得し、少なくとも1つの係数が残差として解釈されることになることを決定し、予測量子化マトリックスと残差との組み合わせに基づいてビデオ情報の少なくとも一部をエンコードする、および、少なくとも1つの係数が残差として解釈されることになることを示すシンタックス要素をエンコードするように構成された1つまたは複数のプロセッサーを含む装置を含むことが可能である。
【0142】
一般に、態様の少なくとも1つの例は、本明細書に説明されている残差を含む方法または装置を含むことが可能であり、残差は可変長残差(variable length residual)を含むことが可能である。
【0143】
一般に、態様の少なくとも1つの例は、本明細書に説明されている方法または装置を含むことが可能であり、少なくとも1つの係数は、複数の予測量子化マトリックス係数を含み、組み合わせは、複数の予測量子化マトリックス係数に残差を加えることを含む。
【0144】
一般に、態様の少なくとも1つの例は、本明細書に説明されている方法または装置を含むことが可能であり、組み合わせは、スケールファクタを適用することをさらに含む。
【0145】
一般に、態様の少なくとも1つの例は、本明細書に説明されている方法または装置を含むことが可能であり、組み合わせは、複数の予測量子化マトリックス係数にスケールファクタを適用し、次に残差を加えることを含む。
【0146】
一般に、態様の少なくとも1つの例は、本明細書に説明されている方法または装置を含むことが可能であり、組み合わせは、オフセットを適用することをさらに含む。
【0147】
一般に、態様の少なくとも1つの例は、本明細書に説明されている方法または装置を含むことが可能であり、量子化マトリックスが予測されるとき残差を送信するのに再使用されることが可能である量子化マトリックスが予測されないとき、ビットストリームは、少なくとも1つの係数を送信するのに用いられる1つまたは複数のシンタックス要素を含む。
【0148】
一般に、態様の少なくとも1つの例は、量子化マトリックスが予測されるとき残差を送信するのに再使用されることが可能である量子化マトリックスが予測されないとき、少なくとも1つの係数を送信するのに用いられる1つまたは複数のシンタックス要素を含むビットストリームを生成する、本明細書に説明されている方法または装置を含むことが可能である。
【0149】
一般に、さらに、態様の1つまたは複数の他の例は、本明細書に説明される方法または装置に従って、ピクチャ情報、たとえばビデオデータなどをエンコードするまたはデコードするための命令を格納しているコンピューター読取り可能な記録媒体、例えば、非一時的なコンピューター読取り可能記録媒体を提供することも可能である。さらに、1つまたは複数の態様は、本明細書に説明される方法または装置に従って生成されたビットストリームを格納したコンピューター読取り可能な記録媒体を提供することも可能である。さらに、1つまたは複数の態様は、本明細書に説明される方法または装置に従って生成されたビットストリームを送信するまたは受信するための方法および装置を提供することも可能である。
【0150】
一般に、態様の別の例は、本明細書に説明される方法のいずれかに従って生成されたデータを含む信号を含むことが可能である。
一般に、態様の別の例は、本明細書に説明されていて、量子化マトリックスが予測されていないとき量子化マトリックスの少なくとも1つの係数を表すのに用いられる少なくとも1つのシンタックス要素を含む信号またはビットストリームを含むことが可能であり、少なくとも1つのシンタックス要素は、量子化マトリックスが予測されているとき残差を表すのに用いられる。
【0151】
一般に、態様の別の例は、本明細書に説明される態様のいずれかの例に従う装置と、(i)信号が画像情報を表すデータを含む、信号を受信するように構成されたアンテナ、(ii)受信した信号を、画像情報を表すデータを含む周波数の帯域に限定するように構成されたバンドリミッター(band limiter)、および(iii)画像情報から画像を表示するように構成されたディスプレイのうちの少なくとも1つとを含むデバイスを含むことが可能である。
【0152】
一般的に、態様の別の例は、本明細書に説明されているデバイスを含み、たとえば、テレビ、テレビ信号レシーバー、セットトップボックス、ゲートウェイデバイス、モバイルデバイス、携帯電話、タブレット、または他の電子デバイスのうちの1つを含むことが可能である。
【0153】
種々の態様が本明細書にて説明される。今述べた態様の特徴は、種々のクレームカテゴリーおよびタイプにわたって、単独にてまたはどんな組み合わせにおいても提供されることが可能である。さらに、態様は、次の特徴、デバイス、または様相のうちの1つまたは複数を、単独にてまたはどんな組み合わせにおいても、種々のクレームのカテゴリおよびタイプにわたって含むことが可能である。
●可能な限り簡潔に仕様を保つ一方、カスタムQMの送信時におけるビット数を節約することを含むビデオエンコードおよび/またはデコードを提供すること、
●単純な調整が低ビットコストにより可能であるようにQM予測を改良することを含むビデオエンコードおよび/またはデコードを提供すること、
●グローバルオフセットを指定する簡単なやり方を含むビデオエンコードおよび/またはデコードを提供すること、
●コピーおよびダウンサンプリングに加えてスケールファクタ(scale factor)を適用すること、グローバルオフセットを指定する簡単なやり方を提供すること、ならびに、可変長の残差により予測をリファインメントできるようにすることによって、QMの予測を拡張することのうちの1つまたは複数を含むビデオエンコードおよび/またはデコードを提供すること、
●QMをさらにリファインメントするために、完全な符号化よりも可能性のあるより低いコストを有して、改良された予測を残差と組み合わせることを含むビデオエンコードおよび/またはデコードを提供すること、
●コピー/ダウンスケーリングに加えてオフセットを用いるQM予測を含むビデオエンコードおよび/またはデコードを提供すること、
●(可変長の)残差を加えたQM予測を含むビデオエンコードおよび/またはデコードを提供すること、
●コピー/ダウンスケーリングに加えてスケールファクタを用いるQM予測を含むビデオエンコードおよび/またはデコードを提供すること、
●オフセットか残差かのいずれかとのスケールファクタの組み合わせを含むQM予測を含むビデオエンコードおよび/またはデコードを提供すること、
●QMを送信するのに、および、簡潔に仕様を保つと同時に正確度とビットコストとの間のユーザー定義のトレードオフを可能にするのに、必要なビット数を減らすことを含むビデオエンコードおよび/またはデコードを提供すること、
●次の特徴のうちの1つまたは複数を含むことに基づいて、QMを送信するのに、および、簡潔に仕様を保つと同時に正確度とビットコストとの間のユーザー定義のトレードオフを可能にするのに、必要なビット数を減らすことを含むビデオエンコードおよび/またはデコードを提供すること、
○QM予測に残差を加える、
○QM予測にスケーリングファクタを加える、
○残差とスケーリングとを組み合わせる、
○予測を常に用いる(予測モードフラグを取り除く)、
●グローバルオフセットを加えることを含むQM予測に対するコピーに加える変更を含み、グローバルオフセットは明示的に指定されることが可能である、ビデオエンコードおよび/またはデコードを提供すること、
●DPCM符号化された残差の第1の係数として指定されることが可能であるグローバルオフセットを含むビデオエンコードおよび/またはデコードを提供すること、
●予測に残差を加えることを含むビデオエンコードおよび/またはデコードを提供すること、
●予測をリファインメントするまたはQMに対して最適化された符号化スキーム(直接符号化の代わりに残差を加えた予測)を提供するQM予測に加えた残差を含むビデオエンコードおよび/またはデコードを提供すること、
●予測されていないときQM係数を送信するのに用いられるシンタックスは、QMが予測されるとき残差を送信するのに再使用されることが可能であることを含むビデオエンコードおよび/またはデコードを提供すること、
●残差を加えることを含み、残差の係数の数は可変であることが可能である、ビデオエンコードおよび/またはデコードを提供すること、
●残差を加えることを含み、残差を加えることは、依然として係数は非予測モード(non-prediction mode)として送信されるが残差として解釈されることが可能であることを示す予測モードにおけるとき、フラグを用いることを含むことが可能である、ビデオエンコードおよび/またはデコードを提供すること、
●予測モードではないとき、係数はデフォルトのQM予測に加えて残差として依然として解釈されることが可能であることを含むビデオエンコードおよび/またはデコードを提供すること、
●予測に加えて可変長の残差を用いることを含むビデオエンコードおよび/またはデコードを提供すること、
●予測に加えて可変長の残差を用いることを含み、残差係数の数が次の1つまたは複数によって示されることが可能である、ビデオエンコードおよび/またはデコードを提供すること、
○係数の明示的な数、または
○2の累乗に制限されることが可能である、残差係数の数から1を引いた値が続く残差の存在を示すフラグ、または
○1+(残差係数の数のlog2)、ただし、零は残差がないことを示し、これは、固定長(長さはmatrixIdに依存する可能性のある長さ)またはexp-Golomb符号化として符号化されることが可能である、または
○リストにおけるインデックス、ただし、リストは係数の数を含み、例えば、このリストは規格によって固定されていることが可能であり、送信する必要がない、例えば{0,1,2,4,8,16,32,64}、または
○残差係数の数は、少なくとも1つの通常の残差係数が送られることになると同時に送信されることが可能である潜在的な割増のDC残差係数をカウントする必要がない、
●予測にスケールファクタを加えること、例えばコピー/デシメーションにスケールファクタを加えることなどを含むビデオエンコードおよび/またはデコードを提供すること、
●可変長の残差とスケールファクタとを含むことによって、スケーリングおよび/またはオフセットに基づいてQMへの調整を可能にし、可変長の残差に基づいて正確度とビットコストとの間のユーザー定義のトレードオフを可能にするQM予測を含むビデオエンコードおよび/またはデコードを提供すること、
●可変長の残差とスケールファクタとを含むことによって、スケーリングおよび/またはオフセットに基づいてQMへの調整を可能にし、可変長の残差に基づいて正確度とビットコストとの間のユーザー定義のトレードオフを可能にするQM予測を含み、スケールファクタは、数N(例えば、16など)に正規化された整数であることが可能であり、スケーリング式は、中立値に基づいて参照QMをスケーリングする、ビデオエンコードおよび/またはデコードを提供すること、
●予測にスケールファクタを追加することを含み、スケールファクタは、数Nに正規化された整数であることが可能であり、スケールファクタは、Nへのオフセットとして送信されることが可能である、ビデオエンコードおよび/またはデコードを提供すること、
●予測モードフラグを取り除くことを含むビデオエンコードおよび/またはデコードを提供すること、
●説明されたシンタックス要素のうちの1つもしくは複数、もしくはバリエーションを含むビットストリームまたは信号、
●説明される態様のうちのいずれかに従って生成された情報を伝えるシンタックスを含むビットストリームまたは信号、
●シグナリングするシンタックス要素に、エンコーダーによって用いられるシンタックス要素に対応する仕方にて動作することをデコーダーに可能にするシンタックス要素を挿入すること、
●説明されたシンタックス要素のうちの1つもしくは複数、もしくはバリエーションを含むビットストリームまたは信号を作成することおよび/または送信することおよび/または受信することおよび/またはデコードすること、
●説明される態様のうちのいずれかに従って作成することおよび/または送信することおよび/または受信することおよび/またはデコードすること、
●説明される態様のうちのいずれかに従う方法、処理、装置、命令を格納する媒体、データを格納する媒体、または信号、
●説明される態様のいずれかを実装することを提供するテレビ、セットトップボックス、携帯電話、タブレット、または他の電子デバイス。
●説明される態様のいずれかを実装することを提供し、結果の画像を(例えばモニター、スクリーン、または他の種類のディスプレイを用いてなど)表示するテレビ、セットトップボックス、携帯電話、タブレット、または他の電子デバイス。
●チャネルを(例えばチューナーを用いてなど)選択してエンコードされている画像を含む信号を受信し、説明される態様のいずれかを実装することを提供するテレビ、セットトップボックス、携帯電話、タブレット、または他の電子デバイス。
●エンコードされている画像を含む電波を介して信号を(例えばアンテナを用いてなど)受信し、説明される態様のいずれかを実装することを提供するテレビ、セットトップボックス、携帯電話、タブレット、または他の電子デバイス。