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

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

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

特許7564132幾何学的分割モードのためのクロマサンプル重みの導出
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-30
(45)【発行日】2024-10-08
(54)【発明の名称】幾何学的分割モードのためのクロマサンプル重みの導出
(51)【国際特許分類】
   H04N 19/105 20140101AFI20241001BHJP
   H04N 19/136 20140101ALI20241001BHJP
   H04N 19/182 20140101ALI20241001BHJP
   H04N 19/186 20140101ALI20241001BHJP
【FI】
H04N19/105
H04N19/136
H04N19/182
H04N19/186
【請求項の数】 16
(21)【出願番号】P 2021576115
(86)(22)【出願日】2020-06-19
(65)【公表番号】
(43)【公表日】2022-08-25
(86)【国際出願番号】 CN2020097147
(87)【国際公開番号】W WO2020253830
(87)【国際公開日】2020-12-24
【審査請求日】2022-01-06
(31)【優先権主張番号】PCT/EP2019/066516
(32)【優先日】2019-06-21
(33)【優先権主張国・地域又は機関】EP
【前置審査】
(73)【特許権者】
【識別番号】504161984
【氏名又は名称】ホアウェイ・テクノロジーズ・カンパニー・リミテッド
(74)【代理人】
【識別番号】100110364
【弁理士】
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100133569
【弁理士】
【氏名又は名称】野村 進
(72)【発明者】
【氏名】セミフ・エセンリク
(72)【発明者】
【氏名】マックス・ブレザー
(72)【発明者】
【氏名】ジジエ・ジャオ
(72)【発明者】
【氏名】ハン・ガオ
(72)【発明者】
【氏名】アナンド・メヘル・コトラ
(72)【発明者】
【氏名】ビャオ・ワン
(72)【発明者】
【氏名】エレナ・アレクサンドロブナ・アルシナ
【審査官】鉢呂 健
(56)【参考文献】
【文献】TOMA, Tadamasa et al.,Description of SDR video coding technology proposal by Panasonic,Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11 10th Meeting: San Diego, US, 10-20 Apr. 2018, [JVET-J0020-v1],JVET-J0020 (version 1),ITU-T,2018年04月02日,<URL:https://jvet-experts.org/doc_end_user/documents/10_San%20Diego/wg11/JVET-J0020-v1.zip>: JVET-J0020-v1.docx: pp.12-15
【文献】BLASER, Max et al.,Description of SDR and 360° video coding technology proposal by RWTH Aachen University,Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11 10th Meeting: San Diego, US, 10-20 Apr. 2018, [JVET-J0023-v1],JVET-J0023 (version 2),ITU-T,2018年04月02日,<URL:https://jvet-experts.org/doc_end_user/documents/10_San%20Diego/wg11/JVET-J0023-v2.zip>: JVET-J0023.docx: pp.1-14,28-29
【文献】LIAO, Ru-Ling and LIM, Chong Soon,CE10.3.1.b: Triangular prediction unit mode,Joint Video Exploration Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11 12th Meeting: Macao, CN, 03-12 Oct. 2018, [JVET-L0124-v2],JVET-L0124 (version 5),ITU-T,2018年10月08日,<URL:https://jvet-experts.org/doc_end_user/documents/12_Macao/wg11/JVET-L0124-v5.zip>: JVET-L0124-v2.doc: pp.1-8
【文献】Test Model under Consideration,Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11 1st Meeting: Dresden, DE, 15-23 April, 2010, [JCTVC-A205],JCTVC-A205 (version 1),ITU-T,2012年03月19日,<URL:http://phenix.it-sudparis.eu/jct/doc_end_user/documents/1_Dresden/wg11/JCTVC-A205.zip>: JCTVC-A205_draft001.doc: pp.31-34
(58)【調査した分野】(Int.Cl.,DB名)
H04N 19/00-19/98
(57)【特許請求の範囲】
【請求項1】
デコーディングデバイスによって実施されるコーディングの方法であって、
現在ブロックのパラメータの値を取得するステップであって、前記パラメータの前記値は前記現在ブロックの分割モードを示す、ステップと、
前記現在ブロックの第1の予測モードを取得するステップと、
前記現在ブロックの第2の予測モードを取得するステップと、
前記第1の予測モードに従って前記現在ブロック内のクロマサンプルのための第1の予測値を生成するステップと、
前記第2の予測モードに従って前記現在ブロック内のクロマサンプルのための第2の予測値を生成するステップと、
前記第1の予測値と前記第2の予測値とを組み合わせることによって予測サンプルの合成値を取得するステップと、を含み、
前記方法は、ルーマサンプルの重み値を計算することによって前記ルーマサンプルの前記重み値を取得するステップと、クロマサンプルの第1の重み値を計算することによって、前記クロマサンプルの前記第1の重み値を取得するステップと、をさらに含み、
前記第1の重み値はサンプル距離に従って計算され、前記サンプル距離は、式:
sample_dist=((x<<1)+1)*Dis[angleIdx1]+((y<<1)+1)*Dis[angleIdx2]-offset(distanceIdx)
に従って計算され、xおよびyは、コーディングブロックの左上サンプルに対するサンプルの-xおよび-y座標であり、Dis[angleIdx1]は、前記サンプルの-x座標における単位増加に対する前記サンプル距離の変化を記述し、Dis[angleIdx2]は、前記サンプルの-y座標における単位増加に対する前記サンプル距離の変化を記述し、angleIdx1およびangleIdx2は、前記現在ブロックを分割する分離線の角度インデックスに基づくパラメータであり、ビットストリームから得られた他の情報に基づいて導出され、offset(distanceIdx)はオフセット値であり、これは前記現在ブロックの所定の位置から前記分離線までの所定の方向の長さに基づくインデックス値(distanceIdx)の関数であり、
前記クロマサンプルの前記第1の予測値および前記クロマサンプルの前記第1の重み値に従って、前記現在ブロック内の前記クロマサンプルの合成予測値を取得するステップをさらに含む、方法。
【請求項2】
予測サンプルの前記合成値は、前記分割モードに従って前記第1の予測値と前記第2の予測値とを組み合わせることによって取得される、請求項1に記載の方法。
【請求項3】
予測サンプルの前記合成値は、混合操作に従って前記第1の予測値と前記第2の予測値とを組み合わせることによって取得される、請求項1または2に記載の方法。
【請求項4】
前記混合操作は、関数またはルックアップテーブルを使用して実施される、請求項3に記載の方法。
【請求項5】
前記クロマサンプルの前記第1の重み値を取得する前記ステップは、以下のように、前記現在ブロック内の前記ルーマサンプルの前記重み値を取得するステップに関連し、
sampleWeightC1(x,y)=sampleWeight1(2*x,2*y)、
ここで、xおよびyは、コーディングブロックのクロマブロックの左上座標に対するクロマサンプルの座標であり、sampleWeightC1(a,b)は、前記現在ブロックの前記クロマブロック内のサンプル座標(a,b)に位置する前記クロマサンプルの第1の重み値であり、aおよびbは座標値であり、sampleWeight1(c,d)は、前記現在ブロックのルーマブロック内のサンプル座標(c,d)に位置するルーマサンプルに対応する重み値を表し、cおよびdは座標値であり、Kは整数値であり、
sampleWeight1は、式:
sampleWeight1=Clip3(0, 8, sample_dist+4)
に従って取得され、
ここで、関数Clip3は、
【数1】
のように定義される、請求項1に記載の方法。
【請求項6】
前記クロマサンプルの前記第1の重み値を取得する前記ステップは、以下のように、前記現在ブロック内の前記ルーマサンプルの前記重み値を取得するステップに関連し、
sampleWeightC1(x,y)=sampleWeight1(2*x-1,2*y-1)、
または
sampleWeightC1(x,y)=(sampleWeight1(2*x-1,2*y-1)+sampleWeight1(2*x,2*y)+K)>>1、
または
sampleWeightC1(x,y)=(sampleWeight1(2*x-1,2*y-1)+sampleWeight1(2*x,2*y)+sampleWeight1(2*x,2*y-1)+sampleWeight1(2*x-1,2*y)+K)>>2、
または
sampleWeightC1(x,y)=(sampleWeight1(2*x-1,2*y-1)+sampleWeight1(2*x,2*y)+sampleWeight1(2*x,2*y-1)+sampleWeight1(2*x-1,2*y)+2)>>2、
または
sampleWeightC1(x,y)=(sampleWeight1(2*x-1,2*y-1)+sampleWeight1(2*x,2*y)+1)>>1、
ここで、xおよびyは、コーディングブロックのクロマブロックの左上座標に対するクロマサンプルの座標であり、sampleWeightC1(a,b)は、前記現在ブロックの前記クロマブロック内のサンプル座標(a,b)に位置する前記クロマサンプルの第1の重み値であり、aおよびbは座標値であり、sampleWeight1(c,d)は、前記現在ブロックのルーマブロック内のサンプル座標(c,d)に位置するルーマサンプルに対応する重み値を表し、cおよびdは座標値であり、Kは整数値であり、
sampleWeight1は、式:
sampleWeight1=Clip3(0, 8, sample_dist+4)
に従って取得され、
ここで、関数Clip3は、
【数2】
のように定義される、請求項1に記載の方法。
【請求項7】
前記分割モードは幾何学的モデルである、請求項1から6のいずれか一項に記載の方法。
【請求項8】
前記パラメータは、角度パラメータまたは距離パラメータである、請求項1から7のいずれか一項に記載の方法。
【請求項9】
前記第1の予測モードと前記第2の予測モードとは同一ではない、請求項1から8のいずれか一項に記載の方法。
【請求項10】
前記第1の予測モードまたは前記第2の予測モードはインター予測モードであり、前記インター予測モードのための情報は参照画像インデックスおよび/または動きベクトルを含む、請求項1から9のいずれか一項に記載の方法。
【請求項11】
前記第1の予測モードまたは前記第2の予測モードはイントラ予測モードであり、前記イントラ予測モードのための情報はイントラ予測モードインデックスを含む、請求項1から10のいずれか一項に記載の方法。
【請求項12】
請求項1から11のいずれか一項に記載の方法を実行するための処理回路を含むデコーダ(30)。
【請求項13】
請求項1から11のいずれか一項に記載の方法を実行するためのプログラムコードを含むコンピュータプログラム。
【請求項14】
デコーダであって、
1つまたは複数のプロセッサと、
前記プロセッサに結合され、前記プロセッサにより実行するためのプログラミングを格納する非一時的コンピュータ可読記憶媒体と、を含み、前記プログラミングは、前記プロセッサにより実行されると、請求項1から11のいずれか一項に記載の方法を実行するように前記デコーダを構成する、デコーダ。
【請求項15】
デコーダであって、
現在ブロックのパラメータの値を取得するための取得ユニット(3001)であって、前記パラメータの前記値は前記現在ブロックの分割モードを示す、取得ユニット(3001)と、
前記現在ブロックの第1の予測モードを取得するための第1の予測ユニット(3005)と、
前記現在ブロックの第2の予測モードを取得するための第2の予測ユニット(3007)と、
前記第1の予測モードに従って前記現在ブロック内のクロマサンプルのための第1の予測値を生成するための第1の生成ユニット(3009)と、
前記第2の予測モードに従って前記現在ブロック内のクロマサンプルのための第2の予測値を生成するための第2の生成ユニット(3011)と、
前記第1の予測値と前記第2の予測値とを組み合わせることによって予測サンプルの合成値を取得するための組み合わせユニット(3013)と、を含み、
前記組み合わせユニットは、ルーマサンプルの重み値を計算することによって前記ルーマサンプルの前記重み値を取得し、クロマサンプルの第1の重み値を計算することによって、前記クロマサンプルの前記第1の重み値を取得するようにさらに構成され、
前記第1の重み値はサンプル距離に従って計算され、前記サンプル距離は、式:
sample_dist=((x<<1)+1)*Dis[angleIdx1]+((y<<1)+1)*Dis[angleIdx2]-offset(distanceIdx)
に従って計算され、xおよびyは、コーディングブロックの左上サンプルに対するサンプルの-xおよび-y座標であり、Dis[angleIdx1]は、前記サンプルの-x座標における単位増加に対する前記サンプル距離の変化を記述し、Dis[angleIdx2]は、前記サンプルの-y座標における単位増加に対する前記サンプル距離の変化を記述し、angleIdx1およびangleIdx2は、前記現在ブロックを分割する分離線の角度インデックスに基づくパラメータであり、ビットストリームから得られた他の情報に基づいて導出され、offset(distanceIdx)はオフセット値であり、これは前記現在ブロックの所定の位置から前記分離線までの所定の方向の長さに基づくインデックス値(distanceIdx)の関数であり、
前記組み合わせユニットは、前記クロマサンプルの前記第1の予測値および前記クロマサンプルの前記第1の重み値に従って、前記現在ブロック内の前記クロマサンプルの合成予測値を取得するようにさらに構成される、デコーダ。
【請求項16】
請求項1から11のいずれか一項に記載の方法によりビットストリームをデコードする方法。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本特許出願は、2019年6月21日に出願された国際特許出願第PCT/EP2019/066516号の優先権を主張する。前述の特許出願の開示は、その全体が参照により本明細書に組み込まれる。
【0002】
本開示の実施形態は、一般に、画像処理の分野に関し、より詳細には、分割のための重み値を導出することに関する。
【背景技術】
【0003】
ビデオコーディング(ビデオエンコーディングおよびデコーディング)は、例えば、放送デジタルTV、インターネットおよびモバイルネットワークを介したビデオ伝送、ビデオチャットなどのリアルタイム会話型アプリケーション、ビデオ会議、DVDおよびブルーレイディスク、ビデオコンテンツの取得および編集システム、セキュリティアプリケーションのカムコーダなど、幅広いデジタルビデオアプリケーションで使用されている。
【0004】
たとえ比較的短いビデオであっても、これを表すのに必要なビデオデータはかなりの量となるため、データのストリーミングが行われたり、帯域幅容量に限りがある通信ネットワークを介してデータが伝達されたりする場合には困難が生じることがある。このため、ビデオデータは通常、今日の通信ネットワークを介して伝達される前に圧縮される。ビデオが記憶装置に格納される場合に、メモリリソースが乏しい場合もあるため、ビデオのサイズが問題になることもある。ビデオ圧縮デバイスは多くの場合、送信または保管に先立ち供給元でソフトウェアおよび/またはハードウェアを使ってビデオデータをコーディングし、そうすることでデジタルビデオ画像を表すのに必要なデータの量を減らす。その後に、圧縮されたデータは、供給先でビデオデータをデコードするビデオ解凍デバイスによって受け取られる。ネットワークリソースには限りがあり、より高いビデオ品質を求める要求が増大しているため、画像品質をほとんど犠牲にしないかまったく犠牲にせずに圧縮率を高める改善された圧縮および解凍技法が望まれている。
【発明の概要】
【課題を解決するための手段】
【0005】
本開示の実施形態は、独立請求項によるエンコーディングおよびデコーディングのための装置および方法を提供する。
【0006】
本開示は、デコーディングデバイスによって実施されるコーディング方法を提供し、本方法は、
現在ブロックのパラメータの値を取得するステップであって、パラメータの値は現在ブロックの分割モードを示す、ステップと、
現在ブロックの第1の予測モードを取得するステップと、
現在ブロックの第2の予測モードを取得するステップと、
第1の予測モードに従って現在ブロック内のクロマサンプルのための第1の予測値を生成するステップと、
第2の予測モードに従って現在ブロック内のクロマサンプルのための第2の予測値を生成するステップと、
第1の予測値と第2の予測値とを組み合わせることによって予測サンプルの合成値を取得するステップと、を含む。
【0007】
上記の方法において、予測サンプルの合成値は、分割モードに従って第1の予測値と第2の予測値とを組み合わせることによって取得され得る。
【0008】
上記の方法において、予測サンプルの合成値は、混合操作に従って第1の予測値と第2の予測値とを組み合わせることによって取得され得る。
したがって、分割モード、すなわちその対応する分割は、例えば混合操作に起因して、第1の予測のサンプル重みが第2の予測のサンプル重みよりも高い境界をマークすると理解され得る。
【0009】
上記の方法において、混合操作は、関数またはルックアップテーブルを使用して実施され得る。
【0010】
上記の方法は、ルーマサンプルの重み値を計算することによってルーマサンプルの重み値を取得するステップと、クロマサンプルの第1の重み値を計算することによって、クロマサンプルの第1の重み値を取得するステップと、をさらに含むことができる。
【0011】
上記の方法において、クロマサンプルの第1の重み値を取得するステップは、現在ブロック内のルーマサンプルの重み値を取得するステップに関連してもよく、本方法は、クロマサンプルの第1の予測値およびクロマサンプルの第1の重み値に従って、現在ブロック内のクロマサンプルの合成予測値を取得するステップをさらに含むことができる。
【0012】
上記の方法において、クロマサンプルの第1の重み値を取得するステップは、以下のように、現在ブロック内のルーマサンプルの重み値を取得するステップに関連してもよく、
sampleWeightC1(x,y)=sampleWeight1(2*x,2*y)、
ここで、xおよびyは、コーディングブロックのクロマブロックの左上座標に対するクロマサンプルの座標であり、sampleWeightC1(a,b)は、現在ブロックのクロマブロック内のサンプル座標(a,b)に位置するクロマサンプルの第1の重み値であり、aおよびbは座標値であり、sampleWeight1(c,d)は、現在ブロックのルーマブロック内のサンプル座標(c,d)に位置するルーマサンプルに対応する重み値を表し、cおよびdは座標値であり、Kは整数値である。
【0013】
(2*x,2*y)および(2x,2y)などの表現は同じであると理解されるべきである。
【0014】
したがって、上記の方法によれば、クロマサンプル位置(x,y)におけるクロマサンプルの重み値は、ルーマサンプル位置(2x,2y)におけるルーマサンプルの重み値に等しくてもよい。ルーマサンプル重みとクロマサンプル重みとの間のこの関係は、クロマサンプル重みの計算をスキップすることを可能にする。言い換えれば、上記の関係、すなわち、sampleWeightC1(x,y)=sampleWeight1(2*x,2*y)により、ルーマブロック内のすべてのルーマサンプルについてsampleWeight1()を計算した後に、sampleWeightC1()を計算する必要はもはやない。クロマブロックsampleWeightC1()内のすべてのクロマサンプルについて、sampleWeight1()について計算された値を使用して取得することができる。したがって、本開示は、実施者がsampleWeightC1を計算するのに必要な回路を削減することを可能にする。sampleWeightC1を計算するためにハードウェア回路を実装する必要はなく、sampleWeightC1()の値は、既に計算されたsampleWeight1()の値にアクセスすることによって取得することができる。また、ソフトウェアでは、sampleWeightC1()が算出されるため、sampleWeightC1()を得るために必要な演算回数が削減され、デコーディングおよびエンコーディングの速度が高速化される。
【0015】
上記の方法において、クロマサンプルの第1の重み値を取得するステップは、以下のように、現在ブロック内のルーマサンプルの重み値を取得するステップに関連してもよく、
sampleWeightC1(x,y)=sampleWeight1(2*x-1,2*y-1)、
または
sampleWeightC1(x,y)=(sampleWeight1(2*x-1,2*y-1)+sampleWeight1(2*x,2*y)+K)>>1、
または
sampleWeightC1(x,y)=(sampleWeight1(2*x-1,2*y-1)+sampleWeight1(2*x,2*y)+sampleWeight1(2*x,2*y-1)+sampleWeight1(2*x-1,2*y)+K)>>2、
または
sampleWeightC1(x,y)=(sampleWeight1(2*x-1,2*y-1)+sampleWeight1(2*x,2*y)+sampleWeight1(2*x,2*y-1)+sampleWeight1(2*x-1,2*y)+2)>>2、
または
sampleWeightC1(x,y)=(sampleWeight1(2*x-1,2*y-1)+sampleWeight1(2*x,2*y)+1)>>1、
ここで、xおよびyは、コーディングブロックのクロマブロックの左上座標に対するクロマサンプルの座標であり、sampleWeightC1(a,b)は、現在ブロックのクロマブロック内のサンプル座標(a,b)に位置するクロマサンプルの第1の重み値であり、aおよびbは座標値であり、sampleWeight1(c,d)は、現在ブロックのルーマブロック内のサンプル座標(c,d)に位置するルーマサンプルに対応する重み値を表し、cおよびdは座標値であり、Kは整数値である。
【0016】
上記の方法において、分割モードは幾何学的モデルであってもよい。
【0017】
上記の方法において、パラメータは角度パラメータまたは距離パラメータであってもよい。
【0018】
上記の方法において、第1の予測モードと第2の予測モードとは同一でなくてもよい。
【0019】
上記の方法において、第1の予測モードまたは第2の予測モードはインター予測モードであってもよく、インター予測モードのための情報は、参照画像インデックスおよび/または動きベクトルを含んでもよい。
【0020】
上記の方法において、第1の予測モードまたは第2の予測モードはイントラ予測モードであってもよく、イントラ予測モードのための情報はイントラ予測モードインデックスを含んでもよい。
【0021】
本開示は、上述の方法を実行するための処理回路を含むデコーダをさらに提供する。
【0022】
本開示は、上述の方法を実行するためのプログラムコードを含むコンピュータプログラム製品をさらに提供する。
【0023】
本開示は、デコーダをさらに提供し、デコーダは、
1つまたは複数のプロセッサと、
プロセッサに結合され、プロセッサにより実行するためのプログラミングを格納する非一時的コンピュータ可読記憶媒体と、を含み、プログラミングは、プロセッサにより実行されると、上記の方法を実行するようにデコーダを構成する。
【0024】
本開示は、デコーダをさらに提供し、デコーダは、
現在ブロックのパラメータの値を取得するための取得ユニットであって、パラメータの値は現在ブロックの分割モードを示す、取得ユニットと、
現在ブロックの第1の予測モードを取得するための第1の予測ユニットと、
現在ブロックの第2の予測モードを取得するための第2の予測ユニットと、
第1の予測モードに従って現在ブロック内のクロマサンプルのための第1の予測値を生成するための第1の生成ユニットと、
第2の予測モードに従って現在ブロック内のクロマサンプルのための第2の予測値を生成するための第2の生成ユニットと、
第1の予測値と第2の予測値とを組み合わせることによって予測サンプルの合成値を取得するための組み合わせユニットと、を含む。
【0025】
上記は、エンコーディング態様にも適用され得る。
【0026】
したがって、本開示はまた、エンコーディングデバイスによって実施されるコーディングの方法を提供することができ、本方法は、
現在ブロックのパラメータの値を取得するステップであって、パラメータの値は現在ブロックの分割モードを示す、ステップと、
現在ブロックの第1の予測モードを取得するステップと、
現在ブロックの第2の予測モードを取得するステップと、
第1の予測モードに従って現在ブロック内のクロマサンプルのための第1の予測値を生成するステップと、
第2の予測モードに従って現在ブロック内のクロマサンプルのための第2の予測値を生成するステップと、
第1の予測値と第2の予測値とを組み合わせることによって予測サンプルの合成値を取得するステップと、を含む。
【0027】
上記の方法において、予測サンプルの合成値は、分割モードに従って第1の予測値と第2の予測値とを組み合わせることによって取得され得る。
【0028】
上記の方法において、予測サンプルの合成値は、混合操作に従って第1の予測値と第2の予測値とを組み合わせることによって取得され得る。
【0029】
したがって、分割モード、すなわちその対応する分割は、例えば混合操作に起因して、第1の予測のサンプル重みが第2の予測のサンプル重みよりも高い境界をマークすると理解され得る。
【0030】
上記の方法において、混合操作は、関数またはルックアップテーブルを使用して実施され得る。
【0031】
上記の方法は、ルーマサンプルの重み値を計算することによってルーマサンプルの重み値を取得するステップと、クロマサンプルの第1の重み値を計算することによって、クロマサンプルの第1の重み値を取得するステップと、をさらに含むことができる。
【0032】
上記の方法において、クロマサンプルの第1の重み値を取得するステップは、現在ブロック内のルーマサンプルの重み値を取得するステップに関連してもよく、本方法は、クロマサンプルの第1の予測値およびクロマサンプルの第1の重み値に従って、現在ブロック内のクロマサンプルの合成予測値を取得するステップをさらに含むことができる。
【0033】
上記の方法において、クロマサンプルの第1の重み値を取得するステップは、以下のように、現在ブロック内のルーマサンプルの重み値を取得するステップに関連してもよく、
sampleWeightC1(x,y)=sampleWeight1(2*x,2*y)、
ここで、xおよびyは、コーディングブロックのクロマブロックの左上座標に対するクロマサンプルの座標であり、sampleWeightC1(a,b)は、現在ブロックのクロマブロック内のサンプル座標(a,b)に位置するクロマサンプルの第1の重み値であり、aおよびbは座標値であり、sampleWeight1(c,d)は、現在ブロックのルーマブロック内のサンプル座標(c,d)に位置するルーマサンプルに対応する重み値を表し、cおよびdは座標値であり、Kは整数値である。
【0034】
したがって、上記の方法によれば、クロマサンプル位置(x,y)におけるクロマサンプルの重み値は、ルーマサンプル位置(2x,2y)におけるルーマサンプルの重み値に等しくてもよい。ルーマサンプル重みとクロマサンプル重みとの間のこの関係は、クロマサンプル重みの計算をスキップすることを可能にする。言い換えれば、上記の関係、すなわち、sampleWeightC1(x,y)=sampleWeight1(2*x,2*y)により、ルーマブロック内のすべてのルーマサンプルについてsampleWeight1()を計算した後に、sampleWeightC1()を計算する必要はもはやない。クロマブロックsampleWeightC1()内のすべてのクロマサンプルについて、sampleWeight1()について計算された値を使用して取得することができる。したがって、本開示は、実施者がsampleWeightC1を計算するのに必要な回路を削減することを可能にする。sampleWeightC1を計算するためにハードウェア回路を実装する必要はなく、sampleWeightC1()の値は、既に計算されたsampleWeight1()の値にアクセスすることによって取得することができる。また、ソフトウェアでは、sampleWeightC1()が算出されるため、sampleWeightC1()を得るために必要な演算回数が削減され、デコーディングおよびエンコーディングの速度が高速化される。
【0035】
上記の方法において、クロマサンプルの第1の重み値を取得するステップは、以下のように、現在ブロック内のルーマサンプルの重み値を取得するステップに関連してもよく、
sampleWeightC1(x,y)=sampleWeight1(2*x-1,2*y-1)、
または
sampleWeightC1(x,y)=(sampleWeight1(2*x-1,2*y-1)+sampleWeight1(2*x,2*y)+K)>>1、
または
sampleWeightC1(x,y)=(sampleWeight1(2*x-1,2*y-1)+sampleWeight1(2*x,2*y)+sampleWeight1(2*x,2*y-1)+sampleWeight1(2*x-1,2*y)+K)>>2、
または
sampleWeightC1(x,y)=(sampleWeight1(2*x-1,2*y-1)+sampleWeight1(2*x,2*y)+sampleWeight1(2*x,2*y-1)+sampleWeight1(2*x-1,2*y)+2)>>2、
または
sampleWeightC1(x,y)=(sampleWeight1(2*x-1,2*y-1)+sampleWeight1(2*x,2*y)+1)>>1、
ここで、xおよびyは、コーディングブロックのクロマブロックの左上座標に対するクロマサンプルの座標であり、sampleWeightC1(a,b)は、現在ブロックのクロマブロック内のサンプル座標(a,b)に位置するクロマサンプルの第1の重み値であり、aおよびbは座標値であり、sampleWeight1(c,d)は、現在ブロックのルーマブロック内のサンプル座標(c,d)に位置するルーマサンプルに対応する重み値を表し、cおよびdは座標値であり、Kは整数値である。
【0036】
上記の方法において、分割モードは幾何学的モデルであってもよい。
【0037】
上記の方法において、パラメータは角度パラメータまたは距離パラメータであってもよい。
【0038】
上記の方法において、第1の予測モードと第2の予測モードとは同一でなくてもよい。
【0039】
上記の方法において、第1の予測モードまたは第2の予測モードはインター予測モードであってもよく、インター予測モードのための情報は、参照画像インデックスおよび/または動きベクトルを含んでもよい。
【0040】
上記の方法において、第1の予測モードまたは第2の予測モードはイントラ予測モードであってもよく、イントラ予測モードのための情報はイントラ予測モードインデックスを含んでもよい。
【0041】
本開示はまた、上述の方法を実行するための処理回路を含むエンコーダを提供することができる。
【0042】
本開示は、上述の方法を実行するためのプログラムコードを含むコンピュータプログラム製品をさらに提供することができる。
【0043】
本開示は、エンコーダをさらに提供することができ、エンコーダは、
1つまたは複数のプロセッサと、
プロセッサに結合され、プロセッサにより実行するためのプログラミングを格納する非一時的コンピュータ可読記憶媒体と、を含み、プログラミングは、プロセッサにより実行されると、上記の方法を実行するようにエンコーダを構成する。
【0044】
本開示は、エンコーダをさらに提供することができ、エンコーダは、
現在ブロックのパラメータの値を取得するための取得ユニットであって、パラメータの値は現在ブロックの分割モードを示す、取得ユニットと、
現在ブロックの第1の予測モードを取得するための第1の予測ユニットと、
現在ブロックの第2の予測モードを取得するための第2の予測ユニットと、
第1の予測モードに従って現在ブロック内のクロマサンプルのための第1の予測値を生成するための第1の生成ユニットと、
第2の予測モードに従って現在ブロック内のクロマサンプルのための第2の予測値を生成するための第2の生成ユニットと、
第1の予測値と第2の予測値とを組み合わせることによって予測サンプルの合成値を取得するための組み合わせユニットと、を含む。
【0045】
上記および他の目的は、独立請求項の主題によって達成される。さらなる実施態様は、従属請求項、明細書および図面から明らかである。
【0046】
言い換えれば、本発明の第2の態様によれば、エンコーダは、本方法の実施形態を実行するための処理回路を含む。
【0047】
本発明の第3の態様によれば、デコーダは、本方法の実施形態を実行するための処理回路を含む。
【0048】
本発明の第4の態様によれば、コンピュータプログラム製品は、本方法の実施形態を実行するためのプログラムコードを含む。
【0049】
本発明の第5の態様によれば、デコーダであって、
1つまたは複数のプロセッサと、
プロセッサに結合され、プロセッサにより実行するためのプログラミングを格納する非一時的コンピュータ可読記憶媒体と、を含み、プログラミングは、プロセッサにより実行されると、本方法の実施形態を実行するようにデコーダを構成する。
【0050】
本発明の第6の態様によれば、エンコーダであって、
1つまたは複数のプロセッサと、
プロセッサに結合され、プロセッサにより実行するためのプログラミングを格納する非一時的コンピュータ可読記憶媒体と、を含み、プログラミングは、プロセッサにより実行されると、本方法の実施形態を実行するようにエンコーダを構成する。
【0051】
一実施形態では、画像デコーディングデバイスによってデコードされたエンコード済ビットストリームを含む非一時的記憶媒体が開示され、ビットストリームは、ビデオ信号または画像信号のフレームを複数のブロックに分割することによって生成され、複数のシンタックス要素を含み、複数のシンタックス要素は、上記の実施形態および実施態様のいずれか1つによるインジケータ(シンタックス)を含む。
【0052】
1つまたは複数の実施形態の詳細は、添付の図面および以下の説明に記載されている。他の特徴、目的、および利点は、説明、図面、および特許請求の範囲から明らかになるであろう。
【0053】
以下の本発明の実施形態は、添付の図面および図面を参照してより詳細に説明される。
【図面の簡単な説明】
【0054】
図1A】本発明の実施形態を実施するように構成されたビデオコーディングシステムの例を示すブロック図である。
図1B】本発明の実施形態を実施するように構成されたビデオコーディングシステムの別の例を示すブロック図である。
図2】本発明の実施形態を実施するように構成されたビデオエンコーダの例を示すブロック図である。
図3】本発明の実施形態を実施するように構成されたビデオデコーダの例示的な構成を示すブロック図である。
図4】エンコーディング装置またはデコーディング装置の例を示すブロック図である。
図5】エンコーディング装置またはデコーディング装置の別の例を示すブロック図である。
図6a】コロケートブロックの例を示す図である。
図6b】空間的近隣ブロックの例を示す図である。
図7】三角形予測モードのいくつかの例を示す図である。
図8】サブブロック予測モードのいくつかの例を示す図である。
図9】ブロックの分割に関する例を示す図である。
図10】ブロックの分割に関するさらなる例を示す図である。
図11】ブロックの分割に関する別の例を示す図である。
図12】ブロックの分割に関するさらなる例を示す図である。
図13】混合関数の処理後の重み係数の値に関する例を示す図である。
図14】混合関数の処理後の重み係数の値に関する別の例を示す図である。
図15】混合関数に関するいくつかの例を示す図である。
図16】クロマ座標とルーマ座標との間の関係を示す図である。
図17】本開示による方法の一実施形態のフローチャートを示す図である。
図18】本開示の一実施形態によるデコーダを示す図である。
図19】コンテンツ配信サービスを実現するコンテンツ供給システム3100の構成例を示すブロック図である。
図20】端末デバイスの例の構造を示すブロック図である。
【発明を実施するための形態】
【0055】
以下では、「同じ場所に位置する(co-located)」および「共に位置する(collocated)」という用語は、同一の意味を有すると理解されるべきである。
以下において、同一の参照符号は、特に明記しない限り、同一または少なくとも機能的に同等の特徴を指す。
【0056】
以下の説明では、添付の図面を参照するが、これらは本開示の一部を形成し、例として、本発明の実施形態の特定の態様または本発明の実施形態が使用され得る特定の態様を示す。本発明の実施形態は他の態様で使用されてもよく、図面に示されていない構造的または論理的な変更を含んでもよいことが理解される。したがって、以下の詳細な説明は、限定的な意味で解釈するべきではなく、本発明の範囲は、添付の特許請求の範囲によって規定される。
【0057】
例えば、記載の方法に関連する開示は、その方法を実行するように構成された対応するデバイスまたはシステムにも当てはまり、その逆も同様であることが理解される。例えば、1つまたは複数の特定の方法ステップが記載されている場合には、対応するデバイスは、記載された1つまたは複数の方法ステップを実行するための1つまたは複数のユニット、例えば機能ユニット(例えば、1つまたは複数のステップを実行する1つのユニット、または各々が複数のステップの1つもしくは複数を実行する複数のユニット)を、そのような1つまたは複数のユニットが図面に明示的に記載または図示されていなくても、含むことができる。一方、例えば、特定の装置が1つまたは複数のユニット、例えば機能ユニットに基づいて記載されている場合には、対応する方法は、1つまたは複数のユニットの機能を実行するための1つのステップ(例えば、1つまたは複数のユニットの機能を実行する1つのステップ、あるいは各々が複数のユニットの1つまたは複数の機能を実行する複数のステップ)を、そのような1つまたは複数のステップが図面に明示的に記載または図示されていなくても、含むことができる。さらに、特に断らない限り、本明細書に記載された様々な例示的な実施形態および/または態様の特徴は、互いに組み合わせてもよいことが理解される。
【0058】
ビデオコーディングは通常、ビデオまたはビデオシーケンスを形成する一連の画像の処理を指す。「画像」という用語の代わりに、「フレーム」または「イメージ」という用語が、ビデオコーディングの分野での同義語として使用されてもよい。ビデオコーディング(または一般にコーディング)は、ビデオエンコーディングとビデオデコーディングの2つの部分を含む。ビデオエンコーディングは送信側で実行され、通常、(より効率的な記憶および/または送信のために)ビデオ画像を表すのに必要なデータの量を低減するための、元のビデオ画像の処理(例えば、圧縮による)を含む。ビデオデコーディングは宛先側で実行され、通常、ビデオ画像を再構築するための、エンコーダと比較して逆の処理を含む。ビデオ画像(または一般的な画像)の「コーディング」に言及する実施形態は、ビデオ画像またはそれぞれのビデオシーケンスの「エンコーディング」または「デコーディング」に関連すると理解されるべきである。エンコーディング部分とデコーディング部分の組み合わせは、CODEC(コーディングおよびデコーディング)とも呼ばれる。
【0059】
損失のないビデオコーディングの場合、元のビデオ画像を再構築できる。すなわち、(伝送損失または他のデータ損失が記憶または伝送中に失われないと仮定すると)再構築されたビデオ画像は元のビデオ画像と同じ品質である。非可逆ビデオコーディングの場合は、ビデオ画像を表すデータの量を低減するために、例えば量子化により、さらなる圧縮が行われるが、これはデコーダで完全に再構築することができない、つまり、再構築されたビデオ画像の品質は、元のビデオ画像の品質と比較して低いかまたは悪くなる。
【0060】
いくつかのビデオコーディング標準規格は、「非可逆ハイブリッドビデオコーデック」のグループに属している(つまり、サンプル領域での空間および時間予測と、変換領域で量子化を適用するための2D変換コーディングと、を組み合わせる)。ビデオシーケンスの各画像は通常、一組の重複しないブロックに分割され、通常、コーディングはブロックレベルで実行される。言い換えると、エンコーダでは、ビデオは通常、例えば空間(画像内)予測および/または時間(画像間)予測を使用して予測ブロックを生成し、現在ブロック(現在処理されている/処理されることになるブロック)から予測ブロックを差し引いて、残差ブロックを取得し、残差ブロックを変換し、変換領域で残差ブロックを量子化して、送信されるデータの量を低減(圧縮)することによって、ブロック(ビデオブロック)レベルで処理、すなわちエンコードされるが、一方、デコーダでは、エンコーダとは逆の処理がエンコードされたまたは圧縮されたブロックに適用され、表示のための現在ブロックを再構築する。さらに、エンコーダはデコーダ処理ループを複製して、両方が同じ予測(例えば、イントラ予測とインター予測)および/または後続のブロックの処理、すなわちコーディングのための再構築を生成する。
【0061】
ビデオコーディングシステム10の以下の実施形態では、ビデオエンコーダ20およびビデオデコーダ30が図1から図3に基づいて説明される。
【0062】
図1Aは、例示的なコーディングシステム10、例えば、本開示の技術を利用することができるビデオコーディングシステム10(またはショートコーディングシステム10)を示す概略ブロック図である。ビデオコーディングシステム10のビデオエンコーダ20(またはショートエンコーダ20)およびビデオデコーダ30(またはショートデコーダ30)は、本開示に記載された様々な例に従って技術を実行するように構成され得るデバイスの例を示す。
【0063】
図1Aに示すように、コーディングシステム10は、エンコード済画像データ21をデコードするために、例えば宛先デバイス14にエンコード済画像データ13を提供するように構成された送信元デバイス12を含む。
【0064】
送信元デバイス12は、エンコーダ20を含み、さらに、すなわち、オプションとして、画像ソース16、例えば画像プリプロセッサ18のようなプリプロセッサ(または前処理ユニット)18、および通信インターフェースまたは通信ユニット22を含んでもよい。
【0065】
画像ソース16は、任意の種類の画像キャプチャデバイス、例えば現実世界の画像をキャプチャするためのカメラ、および/または任意の種類の画像生成デバイス、例えばコンピュータアニメーション画像を生成するためのコンピュータグラフィックプロセッサ、または現実世界の画像、コンピュータ生成画像(例えば、スクリーンコンテンツ、仮想現実(VR)画像)、および/またはそれらの任意の組み合わせ(例えば、拡張現実(AR)画像)を取得および/または提供するための任意の種類の他のデバイスを含むか、またはそれらであってもよい。画像ソースは、前述の画像のいずれかを記憶する任意の種類のメモリまたは記憶装置であってもよい。
【0066】
プリプロセッサ18および前処理ユニット18によって実行される処理と区別して、画像または画像データ17は、生画像または生画像データ17と呼ばれる場合もある。
【0067】
プリプロセッサ18は、(未加工)画像データ17を受け取り、画像データ17に対して前処理を実行して、前処理された画像19または前処理された画像データ19を取得するように構成される。プリプロセッサ18によって実行される前処理は、例えば、トリミング、カラーフォーマット変換(例えば、RGBからYCbCrへ)、色補正、またはノイズ除去を含むことができる。前処理ユニット18が随意的な構成要素であってもよいことが理解され得る。
【0068】
ビデオエンコーダ20は、前処理された画像データ19を受信し、エンコード済画像データ21(さらなる詳細は、例えば図2に基づいて以下に説明される)を提供するように構成される。
【0069】
送信元デバイス12の通信インターフェース22は、エンコード済画像データ21を受信し、エンコード済画像データ21(またはその任意のさらなる処理バージョン)を、記憶または直接再構築のために、通信チャネル13を介して別のデバイス、例えば宛先デバイス14または任意の他のデバイスに送信するように構成することができる。
【0070】
宛先デバイス14は、デコーダ30(例えば、ビデオデコーダ30)を含み、追加的に、すなわち、任意選択で、通信インターフェースまたは通信ユニット28、ポストプロセッサ32(または後処理ユニット32)、およびディスプレイデバイス34を含んでもよい。
【0071】
宛先デバイス14の通信インターフェース28は、例えば送信元デバイス12から、または任意の他のソース、例えば記憶装置、例えばエンコード済画像データ記憶装置から直接、エンコード済画像データ21(またはその任意のさらなる処理バージョン)を受信し、エンコード済画像データ21をデコーダ30に提供するように構成される。
【0072】
通信インターフェース22および通信インターフェース28は、送信元デバイス12と宛先デバイス14との間の直接通信リンクを介して、例えば、直接の有線もしくは無線接続、または任意の種類のネットワーク、例えば有線もしくは無線ネットワークまたはそれらの任意の組み合わせ、または任意の種類のプライベートおよびパブリックネットワーク、またはそれらの任意の種類の組み合わせを介して、エンコード済画像データ21またはエンコード済データ13を送受信するように構成され得る。
【0073】
通信インターフェース22は、例えば、エンコード済画像データ21を適切なフォーマット、例えばパケットにパッケージ化し、および/または通信リンクまたは通信ネットワークを介した伝送のための任意の種類の送信エンコーディングまたは処理を使用してエンコード済画像データを処理するように構成することができる。
【0074】
通信インターフェース28の相手方を形成する通信インターフェース22は、例えば、送信されたデータを受信し、任意の種類の対応する送信デコーディングまたは処理および/またはデパッケージングを使用して送信データを処理して、エンコード済画像データ21を取得するように構成され得る。
【0075】
通信インターフェース22および通信インターフェース28の両方は、送信元デバイス12から宛先デバイス14を指す図1Aの通信チャネル13の矢印によって示されるような単方向通信インターフェース、または双方向通信インターフェースとして構成されてもよく、例えば、メッセージを送受信し、例えば、接続をセットアップし、通信リンクおよび/またはデータ送信に関連する任意の他の情報、例えば、エンコード済画像データの送信を確認し交換するように構成されてもよい。
【0076】
デコーダ30は、エンコード済画像データ21を受信し、デコード済画像データ31またはデコード済画像31を提供するように構成される(さらなる詳細は以下の、例えば、図3または図5に基づいて説明される)。
【0077】
宛先デバイス14のポストプロセッサ32は、デコード済画像データ31(再構築された画像データとも呼ばれる)、例えばデコード済画像31を後処理して、後処理された画像データ33、例えば後処理された画像33を取得するように構成される。後処理ユニット32によって実行される後処理は、例えばデコード済画像データ31を例えばディスプレイデバイス34により表示するために準備するために、例えば、カラーフォーマット変換(例えばYCbCrからRGB)、色補正、トリミング、または再サンプリング、または他の任意の処理を含むことができる。
【0078】
宛先デバイス14のディスプレイデバイス34は、画像を例えばユーザまたはビューアに表示するために、後処理された画像データ33を受信するように構成される。ディスプレイデバイス34は、再構築された画像を表すための任意の種類のディスプレイ、例えば、統合もしくは外部ディスプレイもしくはモニタであってもよいし、またはこれを含んでもよい。ディスプレイは、例えば、液晶ディスプレイ(LCD)、有機発光ダイオード(OLED)ディスプレイ、プラズマディスプレイ、プロジェクタ、マイクロLEDディスプレイ、液晶オンシリコン(LCoS)、デジタルライトプロセッサ(DLP)、または任意の種類の他のディスプレイを含むことができる。
【0079】
図1Aは、送信元デバイス12および宛先デバイス14を別個のデバイスとして示しているが、デバイスの実施形態は、送信元デバイス12または対応する機能および宛先デバイス14または対応する機能の両方または両方の機能も含んでもよい。そのような実施形態では、送信元デバイス12または対応する機能および宛先デバイス14または対応する機能は、同じハードウェアおよび/またはソフトウェアを使用して、または別個のハードウェアおよび/またはソフトウェアまたはそれらの任意の組み合わせによって実施されてもよい。
【0080】
説明に基づいて当業者には明らかなように、図1Aに示す送信元デバイス12および/または宛先デバイス14内の異なるユニットまたは機能の存在および(正確な)分割は、実際のデバイスとアプリケーションに応じて変化してもよい。
【0081】
エンコーダ20(例えば、ビデオエンコーダ20)もしくはデコーダ30(例えば、ビデオデコーダ30)、またはエンコーダ20とデコーダ30の両方は、図1Bに示すように、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ハードウェア、ビデオコーディング専用、またはそれらの任意の組み合わせなどの処理回路を介して実装され得る。エンコーダ20は、図2のエンコーダ20および/または本明細書に記載の任意の他のエンコーダシステムまたはサブシステムに関して説明したような様々なモジュールを具現化するために処理回路46を介して実装することができる。デコーダ30は、処理回路46を介して実装され、図3のデコーダ30および/または本明細書に記載の任意の他のデコーダシステムまたはサブシステムに関して説明したような様々なモジュールを具現化することができる。処理回路は、後述するように様々な動作を実行するように構成されてもよい。図5に示すように、技術がソフトウェアにおいて部分的に実装される場合、デバイスは、ソフトウェアの命令を適切な非一時的コンピュータ可読記憶媒体に記憶し、かつ、本開示の技術を行うために1つまたは複数のプロセッサを使用して、命令をハードウェアにおいて実行してもよい。ビデオエンコーダ20およびビデオデコーダ30のいずれかは、例えば、図1Bに示すように、単一のデバイス内の組み合わせエンコーダ/デコーダ(CODEC)の一部として統合されてもよい。
【0082】
送信元デバイス12および宛先デバイス14は、例えば、ノートブックもしくはラップトップコンピュータ、携帯電話、スマートフォン、タブレット、もしくはタブレットコンピュータ、カメラ、デスクトップコンピュータ、セットトップボックス、テレビ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲーミングコンソール、ビデオストリーミングデバイス(コンテンツサービスサーバまたはコンテンツ配信サーバなど)、ブロードキャスト受信機デバイス、ブロードキャスト送信機デバイス、または任意の種類のハンドヘルドまたは固定デバイスを含む、広範囲のデバイスのいずれかを含んでもよく、オペレーティングシステムをまったく使用しなくてもよいし、または任意の種類のオペレーティングシステムを使用してもよい。場合によっては、送信元デバイス12および宛先デバイス14が無線通信のために装備されてもよい。したがって、送信元デバイス12および宛先デバイス14が無線通信デバイスであってもよい。
【0083】
場合によっては、図1Aに示すビデオコーディングシステム10は単なる例であり、本開示の技術は、エンコーディングデバイスとデコーディングデバイスとの間のデータ通信を必ずしも含まないビデオコーディング設定(例えば、ビデオエンコーディングまたはビデオデコーディング)に適用することができる。他の例において、データは、ローカルメモリから取り込まれ、ネットワークを介してストリーミングされるなどである。ビデオエンコーディングデバイスは、データをエンコードしてメモリに格納してもよく、および/または、ビデオデコーディングデバイスは、データをメモリから取り込んでデコードしてもよい。いくつかの例において、エンコーディングおよびデコーディングは、互いに通信せずに単にデータをメモリにエンコードするおよび/またはデータをメモリから取り込んでデコードするデバイスによって実行される。
【0084】
説明の便宜上、本発明の実施形態は、例えば、高効率ビデオコーディング(HEVC)、または、ITU-Tビデオコーディングエキスパートグループ(VCEG)およびISO/IECモーション画像エキスパートグループ(MPEG)のビデオコーディング(JCT-VC)に関するジョイントコラボレーションチームによって開発された次世代ビデオコーディング規格である多用途ビデオコーディング(VVC)の参照ソフトウェアを参照することによって本明細書に記載される。当業者は、本発明の実施形態がHEVCまたはVVCに限定されないことを理解するであろう。
【0085】
エンコーダおよびエンコーディング方法
図2は、本開示の技術を実施するように構成された例示的なビデオエンコーダ20の概略ブロック図を示す。図2の例では、ビデオエンコーダ20は、入力201(または入力インターフェース201)、残差計算ユニット204、変換処理ユニット206、量子化ユニット208、逆量子化ユニット210、および逆変換処理ユニット212、再構築ユニット214、ループフィルタユニット220、デコード済画像バッファ(DPB)230、モード選択ユニット260、エントロピーエンコーディングユニット270、および出力272(または出力インターフェース272)を含む。モード選択ユニット260は、インター予測ユニット244、イントラ予測ユニット254および分割ユニット262を含んでもよい。インター予測ユニット244は、動き推定ユニットおよび動き補償ユニット(図示せず)を含んでもよい。図2に示すビデオエンコーダ20は、ハイブリッドビデオエンコーダまたはハイブリッドビデオコーデックによるビデオエンコーダと呼ばれることもある。
【0086】
残差計算ユニット204、変換処理ユニット206、量子化ユニット208、モード選択ユニット260は、エンコーダ20の順方向信号経路を形成すると呼ばれる場合があり、逆量子化ユニット210、逆変換処理ユニット212、再構築ユニット214、バッファ216、ループフィルタ220、デコード済画像バッファ(DPB)230、インター予測ユニット244、およびイントラ予測ユニット254は、ビデオエンコーダ20の逆方向信号経路を形成すると呼ばれる場合があり、ビデオエンコーダ20の逆方向信号経路は、デコーダ(図3のビデオデコーダ30を参照)の信号経路に対応する。逆量子化ユニット210、逆変換処理ユニット212、再構築ユニット214、ループフィルタ220、デコード済画像バッファ(DPB)230、インター予測ユニット244、およびイントラ予測ユニット254は、ビデオエンコーダ20の「内蔵デコーダ」を形成するとも呼ばれる。
【0087】
画像および画像分割(画像およびブロック)
エンコーダ20は、例えば入力201を介して、画像17(または画像データ17)、例えばビデオまたはビデオシーケンスを形成する画像のシーケンスの画像を受信するように構成され得る。受信された画像または画像データはまた、前処理された画像19(または前処理された画像データ19)であってもよい。簡単にするために、以下の説明では画像17を参照する。画像17はまた、現在の画像、または、コーディングされるべき画像(特に、現在の画像を他の画像、例えば同じビデオシーケンス、すなわち現在の画像も含むビデオシーケンスの以前にエンコードおよび/またはデコードされた画像から区別するためのビデオコーディングにおいて)と呼ばれてもよい。
【0088】
(デジタル)画像は、強度値を有するサンプルの2次元配列または行列とみなされる、またはみなされ得る。配列内のサンプルは、ピクセル(画像要素の短縮形)またはペルとも呼ばれてもよい。配列または画像の水平および垂直の方向(または軸)のサンプルの数は、画像のサイズおよび/または解像度を定義する。色の表現のために、典型的には3つの色成分が使用される、すなわち、画像は3つのサンプル配列を表現または含むことができる。RBG形式または色空間では、画像は、対応する赤、緑、および青のサンプルの配列を含む。しかしながら、ビデオコーディングでは、各ピクセルは、通常、輝度およびクロミナンス形式または色空間、例えば、YCbCrで表され、YCbCrは、Yによって示される輝度成分(場合によっては、Lが代わりに使用されることもある)と、CbおよびCrによって示される2つのクロミナンス成分と、を含む。輝度(または略してルーマ)成分Yは、明るさまたはグレーレベルの強度(例えば、グレースケール画像の場合)を表し、2つのクロミナンス(または略してクロマ)成分CbおよびCrは、色度または色情報成分を表す。したがって、YCbCr形式の画像は、輝度サンプル値(Y)の輝度サンプル配列ならびにクロミナンス値(CbおよびCr)の2つのクロミナンスサンプル配列を含む。RGB形式の画像は、YCbCr形式に転換または変換され得、その逆も同様であり、このプロセスはまた、色変換または色転換として知られている。画像がモノクロの場合、画像は輝度サンプル配列のみを含むことができる。したがって、画像は、例えば、モノクロ形式のルーマサンプルの配列、またはルーマサンプルの配列および4:2:0、4:2:2、および4:4:4カラー形式のクロマサンプルの2つの対応する配列であってもよい。
【0089】
ビデオエンコーダ20の実施形態は、画像17を複数の(通常は重複しない)画像ブロック203に分割するように構成された画像分割ユニット(図2には示されていない)を含むことができる。これらのブロックはまた、ルートブロック、マクロブロック(H.264/AVC)またはコーディングツリーブロック(CTB)またはコーディングツリーユニット(CTU)(H.265/HEVCおよびVVC)と呼ばれてもよい。画像分割ユニットは、ビデオシーケンスのすべての画像とブロックサイズを定義する対応するグリッドに同じブロックサイズを使用するか、画像またはサブセットまたは画像グループ間でブロックサイズを変更し、各画像を対応するブロックに分割するように構成されてもよい。
【0090】
さらなる実施形態では、ビデオエンコーダは、画像17のブロック203、例えば画像17を形成する1つ、いくつか、またはすべてのブロックを直接受信するように構成され得る。画像ブロック203はまた、現在の画像ブロックまたはコーディングされるべき画像ブロックと呼ばれてもよい。
【0091】
画像17と同様に、画像ブロック203も、画像17よりも小さい次元であるが、強度値(サンプル値)を有するサンプルの2次元配列または行列であるか、またはそのようにみなすことができる。言い換えると、ブロック203は、例えば、適用される色フォーマットに応じて、1つのサンプル配列(例えば、モノクロ画像17の場合はルーマ配列、カラー画像の場合はルーマまたはクロマ配列)または3つのサンプル配列(例えば、カラー画像17の場合、ルーマおよび2つのクロマ配列)または任意の他の数および/または種類の配列を含んでもよい。ブロック203の水平および垂直方向(または軸)におけるサンプルの数は、ブロック203のサイズを定義する。したがって、ブロックは、例えば、サンプルのMxN(M列×N行)配列、または変換係数のMxN配列であってもよい。
【0092】
図2に示すようなビデオエンコーダ20の実施形態は、画像17をブロックごとにエンコードするように構成することができ、例えば、エンコーディングおよび予測はブロック203ごとに実行される。
【0093】
残差計算
残差計算ユニット204は、例えば、画像ブロック203のサンプル値から予測ブロック265のサンプル値を、サンプルごと(ピクセルごと)に減算することによって、画像ブロック203および予測ブロック265(予測ブロック265に関するさらなる詳細は後述する)に基づいて残差ブロック205(残差205とも呼ばれる)を計算し、サンプル領域内の残差ブロック205を取得するように構成され得る。
【0094】
変換
変換処理ユニット206は、変換領域における変換係数207を取得するべく、残差ブロック205のサンプル値に関して、例えば、離散コサイン変換(DCT)または離散サイン変換(DST)を適用するように構成されてもよい。変換係数207は、変換残差係数と呼ばれてもよく、変換領域における残差ブロック205を表す。
【0095】
変換処理ユニット206は、H.265/HEVCに対して指定された変換などのDCT/DSTの整数近似を適用するように構成され得る。直交DCT変換と比較すると、このような整数近似は通常、特定の係数によってスケーリングされる。順変換と逆変換によって処理される残差ブロックのノルムを保存するために、変換プロセスの一部として追加のスケーリング係数が適用される。スケーリング係数は通常、シフト演算のスケーリング係数が2のべき乗であるような特定の制約、変換係数のビット深さ、精度と実施コストとの間のトレードオフなどに基づいて選択される。特定のスケーリング係数は、例えば、逆変換処理ユニット212による逆変換(および、例えばビデオデコーダ30における逆変換処理ユニット312による、対応する逆変換)のために指定され、エンコーダ20における、例えば変換処理ユニット206によって順変換のための対応するスケーリング係数は、それに応じて指定され得る。
【0096】
ビデオエンコーダ20(それぞれ、変換処理ユニット206)の実施形態は、変換パラメータ、例えば、変換または変換のタイプを、例えば、直接的に、または、エントロピーエンコーディングユニット270を介してエンコードまたは圧縮されて出力するように構成され得、これによって、例えば、ビデオデコーダ30は、変換パラメータを受信してデコーディングのために使用することができる。
【0097】
量子化
量子化ユニット208は、例えばスカラー量子化またはベクトル量子化を適用することによって、変換係数207を量子化して、量子化係数209を取得するように構成される。量子化係数209は、量子化変換係数209または量子化残差係数209とも呼ばれ得る。
【0098】
量子化プロセスは、変換係数207の一部または全部に関連するビット深さを減らすことができる。例えば、nビット変換係数は、量子化中にmビット変換係数に丸められてもよく、nはmよりも大きい。量子化の度合いは量子化パラメータ(QP)を調節することによって変更できる。例えば、スカラー量子化の場合、より細かいまたはより粗い量子化を達成するために、異なるスケーリングが適用されてもよい。小さい量子化ステップサイズは細かい量子化に対応し、大きい量子化ステップサイズは粗い量子化に対応する。適用可能な量子化ステップサイズは、量子化パラメータ(QP)によって示され得る。量子化パラメータは、例えば、適用可能な量子化ステップサイズの所定のセットへのインデックスであってもよい。例えば、小さな量子化パラメータは細かい量子化(小さな量子化ステップサイズ)に対応し、大きな量子化パラメータは粗い量子化(大きな量子化ステップサイズ)に対応するか、またはその逆である。量子化は、量子化ステップサイズによる除算を含むことができ、例えば逆量子化ユニット210による対応する逆量子化および/または逆・逆量子化は、量子化ステップサイズによる乗算を含むことができる。いくつかの標準規格、例えば、HEVCによる実施形態は、量子化パラメータを使用して量子化ステップサイズを決定するように構成され得る。一般に、量子化ステップサイズは、除算を含む方程式の固定小数点近似を使用する量子化パラメータに基づいて計算され得る。残差ブロックのノルムを復元するために、量子化と逆量子化に追加のスケーリング係数が導入されてもよく、これは、量子化ステップサイズと量子化パラメータの方程式の固定小数点近似で使用されるスケーリングのために変更される可能性がある。1つの例示的な実施態様では、逆変換のスケーリングと逆量子化とが組み合わせられてもよい。あるいは、カスタマイズされた量子化テーブルが使用され、例えばビットストリームで、エンコーダからデコーダにシグナリングされてもよい。量子化は非可逆演算であり、損失は量子化ステップサイズの増加に伴って増加する。
【0099】
ビデオエンコーダ20(それぞれ量子化ユニット208)の実施形態は、量子化パラメータ(QP)を出力するように構成することができ、例えば、直接またはエントロピーエンコーディングユニット270を介してエンコードすることができ、その結果、例えば、ビデオデコーダ30は、デコーディングのために量子化パラメータを受信および適用することができる。
【0100】
逆量子化
逆量子化ユニット210は、例えば量子化ユニット208と同じ量子化ステップサイズに基づいて、またはそれを使用して、量子化ユニット208によって適用された量子化スキームの逆を適用することによって、量子化ユニット208の逆量子化を量子化係数に適用して、逆量子化係数211を得るように構成される。逆量子化係数211は、逆量子化された残差係数211と呼ばれる場合もあり、通常は量子化による損失に起因して変換係数と同一ではないが、変換係数207に対応する。
【0101】
逆変換
逆変換処理ユニット212は、サンプル領域内の再構築された残差ブロック213(または対応する逆量子化係数213)を取得するために、変換処理ユニット206によって適用された変換の逆変換、例えば、逆離散コサイン変換(DCT)または逆離散サイン変換(DST)または他の逆変換を適用するように構成される。再構築された残差ブロック213はまた、変換ブロック213と呼ばれてもよい。
【0102】
再構築
再構築ユニット214(例えば加算器214)は、例えば、再構築された残差ブロック213のサンプル値および予測ブロック265のサンプル値をサンプルごとに加算することによって、サンプル領域内の再構築ブロック215を取得するために、変換ブロック213(すなわち、再構築された残差ブロック213)を予測ブロック265に加算するように構成される。
【0103】
フィルタリング
ループフィルタユニット220(または短く「ループフィルタ」220)は、再構築されたブロック215をフィルタリングしてフィルタリングされたブロック221を取得するように、または一般に、再構築されたサンプルをフィルタリングしてフィルタリングされたサンプルを取得するように構成される。ループフィルタユニットは、例えば、画素遷移を滑らかにするか、そうでなければビデオ品質を改善するように構成される。ループフィルタユニット220は、デブロッキングフィルタ、サンプル適応オフセット(SAO)フィルタなどの1つまたは複数のループフィルタ、あるいは1つまたは複数の他のフィルタ、例えばバイラテラルフィルタ、適応ループフィルタ(ALF)、鮮鋭化、平滑化フィルタもしくは協調フィルタ、あるいはそれらの任意の組み合わせなどを含むことができる。ループフィルタユニット220は図2ではインループフィルタとして示されるが、他の形態では、ループフィルタユニット220がポストループフィルタとして実装されてもよい。フィルタリングされたブロック221は、フィルタリングされた再構築されたブロック221と呼ばれることもある。
【0104】
ビデオエンコーダ20(それぞれループフィルタユニット220)の実施形態は、ループフィルタパラメータ(サンプル適応オフセット情報など)を出力するように構成されてもよく、例えば、直接的に、またはエントロピーエンコーディングユニット270を介してエンコードされてもよく、その結果、例えば、デコーダ30は、デコーディングのために同じループフィルタパラメータまたはそれぞれのループフィルタを受信し適用することができる。
【0105】
デコード済画像バッファ
デコード済画像バッファ(DPB)230は、ビデオエンコーダ20でビデオデータをエンコードするための参照画像、一般的には参照画像データを格納するメモリであってもよい。DPB230は、シンクロナスDRAM(SDRAM)、磁気抵抗RAM(MRAM)、抵抗変化型RAM(RRAM)、または他のタイプのメモリデバイスを含むダイナミックランダムアクセスメモリ(DRAM)などの様々なメモリデバイスのうちのいずれかによって形成されてもよい。デコード済画像バッファ(DPB)230は、1つまたは複数のフィルタリングされたブロック221を格納するように構成され得る。デコード済画像バッファ230は、他の以前にフィルタリングされたブロック、例えば同じ現在の画像または異なる画像、例えば以前に再構築された画像の、以前に再構築およびフィルタリングされたブロック221を格納するようにさらに構成されてもよく、また、例えばインター予測のために、完全に以前に再構築された、すなわちデコード済画像(および対応する参照ブロックおよびサンプル)および/または部分的に再構築された現在の画像(および対応する参照ブロックおよびサンプル)を提供することができる。デコード済画像バッファ(DPB)230はまた、例えば再構築されたブロック215がループフィルタユニット220によってフィルタリングされていない場合、または再構築されたブロックもしくはサンプルの任意の他のさらなる処理されたバージョンの場合、1つまたは複数のフィルタリングされていない再構築されたブロック215、または一般にフィルタリングされていない再構築されたサンプルを格納するように構成され得る。
【0106】
モード選択(分割および予測)
モード選択ユニット260は、分割ユニット262と、インター予測ユニット244と、イントラ予測ユニット254とを含み、元の画像データ、例えば元のブロック203(現在の画像17の現在ブロック203)と、再構築された画像データ、例えば同じ(現在の)画像の、および/または以前にデコードされた1つまたは複数の画像から、例えばデコード済画像バッファ230または他のバッファ(例えば、図示されていないラインバッファ)から、再構築された、フィルタリングされたおよび/またはフィルタリングされていないサンプルまたはブロックと、を受信または取得するように構成される。再構築された画像データは、予測ブロック265または予測器265を取得するために、予測、例えばインター予測またはイントラ予測のための参照画像データとして使用される。
【0107】
モード選択ユニット260は、現在ブロック予測モード(分割なしを含む)および予測モード(例えば、イントラまたはインター予測モード)のための分割を決定または選択し、残差ブロック205の計算および再構築ブロック215の再構築に使用される対応する予測ブロック265を生成するように構成され得る。
【0108】
モード選択ユニット260の実施形態は、最良一致または言い換えれば最小残差(最小残差は送信または記憶のためのより良好な圧縮を意味する)を提供する、または最小シグナリングオーバーヘッド(最小シグナリングオーバーヘッドは送信または記憶のためのより良好な圧縮を意味する)を提供する、または両方を考慮またはバランスする、分割および予測モードを(例えば、モード選択ユニット260によってサポートされているか、または利用可能なものから)選択するように構成され得る。モード選択ユニット260は、レート歪み最適化(RDO)に基づいて分割モードおよび予測モードを決定する、すなわち、最小レート歪みを提供する予測モードを選択するように構成され得る。この文脈における「最良の」、「最小の」、「最適な」などの用語は、必ずしも全体的な「最良の」、「最小の」、「最適な」などを指すものではなく、「準最適な選択」を潜在的にもたらすが複雑さおよび処理時間を低減するしきい値または他の制約を超えるか下回る値のような終了または選択基準の達成を指してもよい。
【0109】
言い換えれば、分割ユニット262は、例えば四分木分割(QT)、二分木分割(BT)もしくは三分木分割(TT)またはそれらの任意の組み合わせを使用して、ブロック203をより小さいブロック分割またはサブブロック(再びブロックを形成する)に分割し、例えば、ブロック分割またはサブブロックの各々について予測を実行するように構成されてもよく、モード選択は、分割されたブロック203の木構造の選択を含み、予測モードは、ブロック分割またはサブブロックの各々に適用される。
【0110】
以下では、例示的なビデオエンコーダ20によって実行される(例えば、分割ユニット260による)分割および(インター予測ユニット244およびイントラ予測ユニット254による)予測処理についてより詳細に説明する。
【0111】
分割
分割ユニット262は、現在ブロック203をより小さい分割、例えば正方形または長方形サイズのより小さいブロックに分割(またはスプリット)することができる。これらのより小さいブロック(サブブロックとも呼ばれ得る)は、さらにより小さい分割に分割され得る。これは、ツリー分割または階層ツリー分割とも呼ばれ、例えば、ルートツリーレベル0(階層レベル0、深さ0)のルートブロックは、再帰的に分割され、例えば、次の下位ツリーレベルの2つ以上のブロック、例えばツリーレベル1(階層レベル1、深さ1)のノードに分割され得、これらのブロックは、分割が終了するまで、例えば、終了基準が満たされる、例えば、最大ツリー深度または最小ブロックサイズに達するために、次の下位レベル、例えばツリーレベル2(階層レベル2、深さ2)の2つ以上のブロックに再び分割され得る。さらに分割されていないブロックは、ツリーのリーフブロックまたはリーフノードとも呼ばれる。2つの区分に分割することに用いるツリーは、二分木(BT)と呼ばれ、3つの区分に分割することに用いるツリーは、三分木(TT)と呼ばれ、4つの区分に分割することに用いるツリーは、四分木(QT)と呼ばれる。
【0112】
前述のように、本明細書で使用される「ブロック」という用語は、画像の一部、特に正方形または長方形の部分であってもよい。例えば、HEVCおよびVVCを参照すると、ブロックは、コーディングツリーユニット(CTU)、コーディングユニット(CU)、予測ユニット(PU)、および変換ユニット(TU)であってもよく、またはそれに対応してもよく、および/または対応するブロック、例えば、コーディングツリーブロック(CTB)、コーディングブロック(CB)、変換ブロック(TB)、または予測ブロック(PB)であってもよい。
【0113】
例えば、コーディングツリーユニット(CTU)は、ルーマサンプルのCTB、3つのサンプル配列を有する画像のクロマサンプルの2つの対応するCTB、または白黒画像のサンプルのCTB、またはサンプルをコーディングするために使用される3つの別々のカラープレーンおよびシンタックス構造を使用してコーディングされる画像であってもよいし、それらを含んでもよい。これに対応して、コーディングツリーブロック(CTB)は、構成要素のCTBへの分割が分割であるように、Nのいくつかの値に対するサンプルのNxNブロックであり得る。コーディングユニット(CU)は、ルーマサンプルのコーディングブロック、3つのサンプル配列を有する画像のクロマサンプルの2つの対応するコーディングブロック、または白黒画像のサンプルのコーディングブロック、またはサンプルをコーディングするために使用される3つの別々のカラープレーンおよびシンタックス構造を使用してコーディングされる画像であってもよいし、それらを含んでもよい。これに対応して、コーディングブロック(CB)は、CTBのコーディングブロックへの分割が分割であるように、MおよびNのいくつかの値に対するサンプルのMxNブロックであり得る。
【0114】
実施形態では、例えば、HEVCによれば、コーディングツリーユニット(CTU)は、コーディングツリーとして示される四分木構造を使用することによってCUに分割されてもよい。インター画像(時間)予測またはイントラ画像(空間)予測を用いて画像領域をコーディングするかどうかの決定は、CUレベルで行われる。各CUは、PU分割タイプに従って、1つ、2つ、または4つのPUにさらに分割することができる。1つのPU内部では、同一の予測プロセスが適用され、また、関連情報がPU単位でデコーダに送信される。PU分割タイプに基づいて予測プロセスを適用することによって残差ブロックを取得した後に、CUは、CUのコーディングツリーと同様の別の四分木構造に従って変換ユニット(TU)に分割することができる。
【0115】
実施形態では、例えば、多用途ビデオコーディング(VVC)と呼ばれる、現在開発中の最新のビデオコーディング規格に従って、四分木および二分木(QTBT)分割がコーディングブロックを分割するために使用される。QTBTブロック構造では、CUは正方形または長方形のいずれかの形状を有することができる。例えば、コーディングツリーユニット(CTU)は、最初に四分木構造によって分割される。四分木リーフノードは、二分木または三分木(または三分木)構造によってさらに分割される。分割ツリーリーフノードはコーディングユニット(CU)と呼ばれ、そのセグメント化は、さらなる分割なしで予測および変換処理に使用される。このことは、CU、PU、および、TUがQTBTコーディングブロック構造において同じブロックサイズを有することを意味する。並行して、マルチ分割、例えばトリプルツリー分割も、QTBTブロック構造と共に使用されることが提案された。
【0116】
一例では、ビデオエンコーダ20のモード選択ユニット260は、本明細書に記載された分割技法の任意の組み合わせを実行するように構成され得る。
【0117】
上記のように、ビデオエンコーダ20は、一組の(所定の)予測モードから最良または最適な予測モードを決定または選択するように構成される。予測モードのセットは、例えば、イントラ予測モードおよび/またはインター予測モードを含むことができる。
【0118】
イントラ予測
イントラ予測モードのセットは、35の異なるイントラ予測モード例えばDC(または平均)モードや平面モードなどの非指向性モード、または例えばHEVCで定義されているように指向性モードを含むことができ、または67の異なるイントラ予測モード、例えばDC(または平均)モードや平面モードなどの非指向性モード、または例えばVVCで定義されているように指向性モードを含むことができる。
【0119】
イントラ予測ユニット254は、イントラ予測モードのセットのイントラ予測モードに従って、イントラ予測ブロック265を生成するために、同じ現在の画像の近隣ブロックの再構築されたサンプルを使用するように構成される。
【0120】
イントラ予測ユニット254(または一般にモード選択ユニット260)は、例えば、ビデオデコーダ30が予測パラメータを受信してデコーディングに使用することができるように、エンコード済画像データ21に含めるためのシンタックス要素266の形態でイントラ予測パラメータ(またはブロックに対して選択されたイントラ予測モードを示す一般的な情報)をエントロピーエンコーディングユニット270に出力するようにさらに構成される。
【0121】
インター予測
(可能性のある)インター予測モードのセットは、利用可能な参照画像(すなわち、以前に少なくとも部分的にデコードされた、例えばDBP230に格納された画像)および他のインター予測パラメータ、例えば参照画像全体または一部のみが、例えば参照画像の現在ブロックの領域の周りの検索ウィンドウ領域が最もよく一致する参照ブロックを検索するために使用されるかどうか、ならびに/あるいは例えばピクセル補間、例えばハーフ/セミペルおよび/またはクォーターペル補間が適用されるかどうかに依存する。
【0122】
上記の予測モードに加えて、スキップモードおよび/または直接モードが適用されてもよい。
【0123】
インター予測ユニット244は、動き推定(ME)ユニットおよび動き補償(MC)ユニット(共に図2には図示せず)を含んでもよい。動き推定ユニットは、動き推定のために、画像ブロック203(現在の画像17の現在の画像ブロック203)およびデコード済画像231、または、少なくとも1つまたは複数の既に再構築されたブロック、例えば、1つまたは複数の他の/異なる既にデコード済の画像231の再構築されたブロックを受信または取得するように構成される。例えば、ビデオシーケンスは、現在の画像および以前にデコードされた画像231を含むことができ、言い換えれば、現在の画像および以前にデコードされた画像231は、ビデオシーケンスを形成する画像のシーケンスの一部であるか、またはそれを形成することができる。
【0124】
エンコーダ20は、例えば、複数の他の画像の同じまたは異なる画像の複数の参照ブロックから参照ブロックを選択し、参照画像(または参照画像インデックス)および/または参照ブロックの位置(x、y座標)と現在ブロックの位置との間のオフセット(空間オフセット)を、インター予測パラメータとして動き推定ユニットに提供するように構成され得る。このオフセットは、動きベクトル(MV)とも呼ばれる。
【0125】
動き補償ユニットは、インター予測パラメータを取得し、例えば受け取り、インター予測パラメータに基づいてまたはインター予測パラメータを使用してインター予測を実行してインター予測ブロック265を取得するように構成される。動き補償ユニットによって実行される動き補償は、動き推定によって決定された動き/ブロックベクトルに基づいて予測ブロックをフェッチまたは生成し、場合によってはサブピクセル精度への補間を実行することを含むことができる。補間フィルタリングは、既知のピクセルサンプルからさらなるピクセルサンプルを生成し、それにより、画像ブロックをコーディングするために使用されてもよい候補予測ブロックの数を潜在的に増大させてもよい。現在の画像ブロックのPUに関する動きベクトルを受信する際、動き補償ユニットは、参照画像リストのうちの1つにある動きベクトルが指し示す予測ブロックを特定してもよい。
【0126】
動き補償ユニットはまた、ビデオスライスの画像ブロックをデコードする際にビデオデコーダ30によって使用されるために、ブロックとビデオスライスとに関連付けられているシンタックス要素を生成する。
【0127】
エントロピーコーディング
エントロピーエンコーディングユニット270は、例えば、ビデオデコーダ30がパラメータを受信してデコーディングに使用することができるように、例えば、エンコード済ビットストリーム21の形態で出力272を介して出力することができるエンコード済画像データ21を取得するために、量子化係数209、インター予測パラメータ、イントラ予測パラメータ、ループフィルタパラメータ、および/または他のシンタックス要素に対して、例えば、エントロピーエンコーディングアルゴリズムまたは方式(例えば、可変長コーディング(VLC)方式、コンテキスト適応型VLC方式(CAVLC)、算術コーディング方式、2値化、コンテキスト適応型バイナリ算術コーディング(CABAC)、シンタックスベースのコンテキスト適応型バイナリ算術コーディング(SBAC)、確率区間分割エントロピー(PIPE)コーディング、または別のエントロピーエンコーディング方法または技法)またはバイパス(圧縮なし)を適用するように構成される。エンコード済ビットストリーム21は、ビデオデコーダ30に送信されてもよいし、ビデオデコーダ30による後の送信または検索のためにメモリに格納されてもよい。
【0128】
ビデオエンコーダ20の他の構造的変形は、ビデオストリームをエンコードするように使用され得る。例えば、非変換ベースのエンコーダ20は、特定のブロックまたはフレームに関して変換処理ユニット206を伴うことなく残差信号を直接に量子化することができる。別の実施態様では、エンコーダ20は、単一のユニットに組み合わせられる量子化ユニット208および逆量子化ユニット210を有し得る。
【0129】
デコーダおよびデコーディング方法
図3は、本開示の技術を実施するように構成されたビデオデコーダ30の一例を示す。ビデオデコーダ30は、例えば、エンコーダ20によってエンコードされたエンコード済画像データ21(例えば、エンコード済ビットストリーム21)を受信して、デコード済画像331を取得するように構成される。エンコード済画像データまたはビットストリームは、エンコード済画像データをデコードするための情報、例えば、エンコード済ビデオスライスの画像ブロックおよび関連するシンタックス要素を表すデータを含む。
【0130】
図3の例では、デコーダ30は、エントロピーデコーディングユニット304、逆量子化ユニット310、逆変換処理ユニット312、再構築ユニット314(例えば、加算器314)、ループフィルタ320、デコード済画像バッファ(DBP)330、インター予測ユニット344、およびイントラ予測ユニット354を含む。インター予測ユニット344は、動き補償ユニットであってもよいし、動き補償ユニットを含んでもよい。ビデオデコーダ30は、いくつかの例では、図2のビデオエンコーダ100に関して説明されたエンコーディングパスと概して逆となるデコーディングパスを実行してもよい。
【0131】
エンコーダ20について説明したように、逆量子化ユニット210、逆変換処理ユニット212、再構築ユニット214、ループフィルタ220、デコード済画像バッファ(DPB)230、インター予測ユニット344、およびイントラ予測ユニット354は、ビデオエンコーダ20の「内蔵デコーダ」を形成するとも呼ばれる。したがって、逆量子化ユニット310の機能は逆量子化ユニット110と同じであってもよく、逆変換処理ユニット312の機能は逆変換処理ユニット212と同じであってもよく、再構築ユニット314の機能は再構築ユニット214と同じであってもよく、ループフィルタ320の機能はループフィルタ220と同じであってもよく、デコード済画像バッファ330の機能はデコード済画像バッファ230と同じであってもよい。したがって、ビデオ20エンコーダのそれぞれのユニットおよび機能について提供された説明は、ビデオデコーダ30のそれぞれのユニットおよび機能に対応して適用される。
【0132】
エントロピーデコーディング
エントロピーデコーディングユニット304は、ビットストリーム21(または、一般に、エンコード済画像データ21)を解析し、例えば、エンコード済画像データ21に対してエントロピーデコーディングを実行して、例えば、量子化係数309および/またはデコードされたコーディングパラメータ(図3には示されていない)、例えば、インター予測パラメータ(例えば、参照画像インデックスおよび動きベクトル)、イントラ予測パラメータ(例えば、イントラ予測モードまたはインデックス)、変換パラメータ、量子化パラメータ、ループフィルタパラメータ、および/または、その他のシンタックス要素のうちのいずれかまたはすべてを取得するように構成される。エントロピーデコーディングユニット304は、エンコーダ20のエントロピーエンコーディングユニット270に関して記載されたようなエンコーディング方式に対応するデコーディングアルゴリズムまたは方式を適用するように構成され得る。エントロピーデコーディングユニット304はさらに、インター予測パラメータ、イントラ予測パラメータ、および/または、その他のシンタックス要素をモード選択ユニット360へ、その他のパラメータをデコーダ30のその他のユニットへ提供するように構成され得る。ビデオデコーダ30は、ビデオスライスレベルおよび/またはビデオブロックレベルでシンタックス要素を受信することができる。
【0133】
逆量子化
逆量子化ユニット310は、量子化パラメータ(QP)(または逆量子化に関連する一般的な情報)および量子化係数を(例えば、構文解析および/またはデコードすることによって、例えばエントロピーデコーディングユニット304によって)エンコード済画像データ21から受け取り、量子化パラメータに基づいて、デコード済量子化係数309に逆量子化を適用して、変換係数311とも呼ばれる逆量子化係数311を取得するように構成され得る。逆量子化プロセスは、量子化の程度と同様に適用すべき逆量子化の程度とを決定するべくビデオスライス内のそれぞれのビデオブロックごとにビデオエンコーダ20によって決定される量子化パラメータの使用を含んでもよい。
【0134】
逆変換
逆変換処理ユニット312は、変換係数311とも呼ばれる逆量子化係数311を受信し、サンプル領域内の再構築された残差ブロック213を取得するために、逆量子化係数311に変換を適用するように構成され得る。再構築された残差ブロック213はまた、変換ブロック313と呼ばれてもよい。変換は、逆変換、例えば、逆DCT、逆DST、逆整数変換、または概念的に同様の逆変換プロセスであってもよい。逆変換処理ユニット312は、逆量子化された係数311に適用されるべき変換を決定するために、(例えば、構文解析および/またはデコードすることによって、例えばエントロピーデコーディングユニット304によって)エンコード済画像データ21から変換パラメータまたは対応する情報を受信するようにさらに構成され得る。
【0135】
再構築
再構築ユニット314(例えば加算器314)は、例えば、再構築された残差ブロック313のサンプル値と予測ブロック365のサンプル値とを加算することによって、サンプル領域内の再構築されたブロック315を取得するために、再構築された残差ブロック313を予測ブロック365に加算するように構成され得る。
【0136】
フィルタリング
ループフィルタユニット320(コーディングループ中またはコーディングループ後のいずれか)は、再構築ブロック315をフィルタリングしてフィルタリングされたブロック321を取得し、例えばピクセル移行を滑らかにするまたはビデオ品質を向上させるように構成される。ループフィルタユニット320は、デブロッキングフィルタ、サンプル適応オフセット(SAO)フィルタなどの1つまたは複数のループフィルタ、あるいは1つまたは複数の他のフィルタ、例えばバイラテラルフィルタ、適応ループフィルタ(ALF)、鮮鋭化、平滑化フィルタもしくは協調フィルタ、あるいはそれらの任意の組み合わせなどを含むことができる。ループフィルタユニット320は図3ではインループフィルタとして示されるが、他の形態では、ループフィルタユニット320がポストループフィルタとして実装されてもよい。
【0137】
デコード済画像バッファ
画像のデコードされたビデオブロック321は、その後に、デコード済画像バッファ330に格納され、ここでは、デコード済画像331が、その他の画像のためのその後の動き補償および/またはそれぞれ表示出力のための基準画像として格納される。
【0138】
デコーダ30は、ユーザへの提示または閲覧のために、例えば出力312を介してデコード済画像311を出力するように構成されている。
【0139】
予測
インター予測ユニット344はインター予測ユニット244(特に動き補償ユニット)と同一であってもよく、イントラ予測ユニット354はインター予測ユニット254と機能的に同一であってもよく、分割パラメータおよび/または予測パラメータ、またはエンコード済画像データ21から受信したそれぞれの情報に基づいて(例えば、構文解析および/またはデコードすることによって、例えばエントロピーデコーディングユニット304によって)分割または分割決定および予測を行う。モード選択ユニット360は、予測ブロック365を取得するために、再構築された画像、ブロック、またはそれぞれのサンプル(フィルタリングされたまたはフィルタリングされていない)に基づいてブロックごとに予測(イントラまたはインター予測)を実行するように構成され得る。
【0140】
ビデオスライスがイントラコーディング済(I)スライスとしてコーディングされるとき、モード選択ユニット360のイントラ予測ユニット354は、シグナリングされたイントラ予測モードおよび現在の画像の以前にデコードされたブロックからのデータに基づいて、現在のビデオスライスの画像ブロックの予測ブロック365を生成するように構成される。ビデオ画像がインターコーディング済(すなわち、BまたはP)スライスとしてコーディングされるとき、モード選択ユニット360のインター予測ユニット344(例えば、動き補償ユニット)は、エントロピーデコーディングユニット304から受信した動きベクトルおよび他のシンタックス要素に基づいて、現在のビデオスライスのビデオブロック用の予測ブロック365を生成するように構成される。インター予測について、予測ブロックは、参照画像リストのうちの1つにある参照画像のうちの1つから作り出され得る。ビデオデコーダ30は、DPB330に格納された参照画像に基づいて、デフォルトの構築技法を用いて参照フレームリスト、すなわちリスト0およびリスト1を構成できる。
【0141】
モード選択ユニット360は、動きベクトルおよび他のシンタックス要素を解析することによって、現在のビデオスライスのビデオブロックに関する予測情報を判定し、予測情報を使用して、デコードされる現在のビデオブロックに関する予測ブロックを作り出すように構成される。例えば、モード選択ユニット360は、受け取ったシンタックス要素のうちのいくつかを使用して、ビデオスライスのビデオブロックをコーディングするために使用される予測モード(例えば、イントラ予測またはインター予測)、インター予測スライスタイプ(例えば、Bスライス、Pスライス、またはGPBスライス)、スライスに関する基準画像リストのうちの1つまたは複数に関する構築情報、スライスのインターエンコード済ビデオブロックごとの動きベクトル、スライスのインターコーディングされたビデオブロックごとのインター予測状態、および現在ビデオスライス内のビデオブロックをデコードするための他の情報を特定する。
【0142】
ビデオデコーダ30のその他の変形例は、エンコード済画像データ21をデコードするために使用され得る。例えば、デコーダ30は、ループフィルタユニット320を介さずに、出力ビデオストリームを生成することができる。例えば、非変換ベースのデコーダ30は、特定のブロックまたはフレームに関して逆変換処理ユニット312を伴うことなく残差信号を直接に逆量子化することができる。別の実施態様では、ビデオデコーダ30は、単一のユニットへと組み合わされる逆量子化ユニット310および逆変換処理ユニット312を有することができる。
【0143】
エンコーダ20およびデコーダ30では、現在のステップの処理結果がさらに処理され、次いで次のステップに出力され得ることを理解されたい。例えば、補間フィルタリング、動きベクトル導出またはループフィルタリングの後に、クリップまたはシフトなどのさらなる演算が、補間フィルタリング、動きベクトル導出またはループフィルタリングの処理結果に対して実行されてもよい。
【0144】
現在ブロックの導出された動きベクトル(アフィンモードの制御点動きベクトル、アフィンモード、平面モード、ATMVPモードのサブブロック動きベクトル、時間動きベクトルなどを含むが、これらに限定されない)にさらなる演算を適用することができることに留意されたい。例えば、動きベクトルの値は、その表現ビットに従って所定の範囲に制約される。動きベクトルの表現ビットがbitDepthである場合には、範囲は-2^(bitDepth-1)~2^(bitDepth-1)-1であり、ここで、「^」は累乗を意味する。例えば、bitDepthが16に等しく設定される場合には、範囲は-32768~32767であり、bitDepthが18に等しく設定される場合には、範囲は-131072~131071である。ここでは、動きベクトルを制約するための2つの方法を提供する。
【0145】
方法1:フロー演算によってオーバーフローMSB(最上位ビット)を除去する
ux=(mvx+2bitDepth)% 2bitDepth (1)
mvx=(ux>=2bitDepth-1)?(ux-2bitDepth):ux (2)
uy=(mvy+2bitDepth)% 2bitDepth (3)
mvy=(uy>=2bitDepth-1)?(uy-2bitDepth):uy (4)
【0146】
例えば、mvxの値が-32769である場合には、式(1)および(2)を適用した後に、結果として得られる値は32767である。コンピュータシステムでは、10進数が2の補数として格納される。-32769の2の補数は1,0111,1111,1111,1111(17ビット)であるので、MSBは破棄され、結果として得られる2の補数は0111,1111,1111,1111(10進数で32767)となり、式(1)および式(2)を適用した出力と同じになる。
【0147】
ux=(mvpx+mvdx+2bitDepth)% 2bitDepth (5)
mvx=(ux>=2bitDepth-1)?(ux-2bitDepth):ux (6)
uy=(mvpy+mvdy+2bitDepth)% 2bitDepth (7)
mvy=(uy>=2bitDepth-1)?(uy-2bitDepth):uy (8)
演算は、式(5)~式(8)に示すように、mvpとmvdの和の間に適用されてもよい。
【0148】
方法2:値をクリップすることによってオーバーフローMSBを除去する
vx=Clip3(-2bitDepth-1,2bitDepth-1-1,vx)
vy=Clip3(-2bitDepth-1,2bitDepth-1-1,vy)
ここで、関数Clip3の定義は以下の通りである。
【数1】
【0149】
演算「?」は、通常、「if...else」条件を表すためのショートカットとして使用される。例えば、「X<K?X=1:X=0」は、「XがKより小さい場合には、Xは1に等しく設定され、そうでない場合(XがKより小さくない場合)には、Xは0に等しく設定される」と解釈され得る。
【0150】
図4は、本開示の一実施形態によるビデオコーディングデバイス400の概略図である。ビデオコーディングデバイス400は、本明細書に記載の開示された実施形態を実施するのに適している。一実施形態では、ビデオコーディングデバイス400は、図1Aのビデオデコーダ30などのデコーダ、または図1Aのビデオエンコーダ20などのエンコーダであってもよい。
【0151】
ビデオコーディングデバイス400は、データを受信するための入口ポート410(または入力ポート410)および受信機ユニット(Rx)420、データを処理するためのプロセッサ、論理ユニット、または中央処理ユニット(CPU)430、データを送信するための送信機ユニット(Tx)440および出口ポート450(または出力ポート450)、ならびにデータを格納するためのメモリ460を含む。ビデオコーディングデバイス400はまた、光信号または電気信号の出力または入力のために入力ポート410、受信機ユニット420、送信機ユニット440、および出力ポート450に結合された光-電気(OE)構成要素および電気-光(EO)構成要素を含んでもよい。
【0152】
プロセッサ430は、ハードウェアおよびソフトウェアによって実施される。プロセッサ430は、1つまたは複数のCPUチップ、コア(例えば、マルチコアプロセッサとして)、FPGA、ASIC、およびDSPとして実装されてもよい。プロセッサ430は、入力ポート410、受信機ユニット420、送信機ユニット440、出力ポート450およびメモリ460と通信する。プロセッサ430はコーディングモジュール470を含む。コーディングモジュール470は、上述の開示された実施形態を実施する。例えば、コーディングモジュール470は、様々なコーディング動作を実装、処理、準備、または提供する。したがって、コーディングモジュール470を含めることにより、ビデオコーディングデバイス400の機能に実質的な改善がもたらされ、ビデオコーディングデバイス400の異なる状態への変換がもたらされる。あるいは、コーディングモジュール470は、メモリ460に格納され、かつプロセッサ430によって実行される命令として実装される。
【0153】
メモリ460は、1つまたは複数のディスク、テープドライブおよびソリッドステートドライブを含んでもよく、プログラムが実行のために選択された場合にそのようなプログラムを格納し、かつプログラムの実行中に読み取られた命令およびデータを格納するために、オーバーフローデータ記憶装置として使用されてもよい。メモリ460は、例えば、揮発性および/または不揮発性であってもよく、読み出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、三値連想メモリ(TCAM)、および/またはスタティックランダムアクセスメモリ(SRAM)であってもよい。
【0154】
図5は、例示的な実施形態による、図1の送信元デバイス12および宛先デバイス14のいずれかまたは両方として使用され得る装置500の簡略ブロック図である。
【0155】
装置500内のプロセッサ502は、中央処理ユニットであってもよい。あるいは、プロセッサ502は、現在存在する、または今後開発される情報を操作または処理することができる任意の他のタイプのデバイス、または複数のデバイスとすることができる。開示された実施態様は、例えばプロセッサ502などの単一のプロセッサを用いて実施され得るが、複数のプロセッサを使用することによって速度および効率における利点を達成することができる。
【0156】
一実施態様では、装置500内のメモリ504は、読み出し専用メモリ(ROM)デバイスまたはランダムアクセスメモリ(RAM)デバイスとすることができる。任意の他の適切なタイプの記憶装置をメモリ504として使用できる。メモリ504は、バス512を使用してプロセッサ502によってアクセスされるコードおよびデータ506を含むことができる。メモリ504は、オペレーティングシステム508およびアプリケーションプログラム510をさらに含むことができ、アプリケーションプログラム510は、プロセッサ502が本明細書に記載の方法を実行することを可能にする少なくとも1つのプログラムを含む。例えば、アプリケーションプログラム510は、アプリケーション1からNを含むことができ、アプリケーション1からNは、本明細書で説明される方法を実行するビデオコーディングアプリケーションをさらに含む。
【0157】
装置500はまた、ディスプレイ518などの1つまたは複数の出力デバイスを含むことができる。ディスプレイ518は、一例では、ディスプレイとタッチ入力を検知するように動作可能なタッチセンサ式要素とを組み合わせたタッチセンサ式ディスプレイであってもよい。ディスプレイ518は、バス512を介してプロセッサ502に結合することができる。
【0158】
ここでは単一のバスとして示されているが、装置500のバス512は複数のバスから構成され得る。さらに、二次記憶514は、装置500の他の構成要素に直接結合することができ、またはネットワークを介してアクセスすることができ、メモリカードなどの単一の統合ユニットまたは複数のメモリカードなどの複数のユニットを含むことができる。したがって、装置500は、多種多様な形態で実装され得る。
【0159】
通常、ビデオ信号は、1つのルミナンス(ルーマ)チャネルと2つのクロミナンス(クロマ)チャネルの3つのチャネルを使用して表される。YCbCr色変換が使用される場合、2つのクロマチャネルは、CbおよびCr頭字語を使用して表される場合がある。CbおよびCrは、通常、青色差および赤色差を指す。本発明の実施形態は、ビデオ信号が3つの(またはより広範には信号)チャネルを使用して表される場合に関する。便宜上、クロマチャネルはCbおよびCrチャネルで表されることになるが、本発明の実施形態は他の3つの信号チャネルシナリオにも同様に適用される。
【0160】
ビデオデータが3つの信号チャネルに分割されるとき、コーディングブロックは、3つの信号チャネル(ルーマチャネル、Cbクロマチャネル、およびCrクロマチャネル)の各々に関係する残差情報を有する場合がある。図2では、残差データは、205(残差ブロック)または207(変換係数)または209(量子化変換係数)に対応する。205、207または209は、実際には、ルーマおよび3つのクロマチャネルに対応する3つの部分(ビデオデータが3つのチャネルに分割される場合)から構成される。図2は、エンコーダの観点を表す。
【0161】
同様に、デコーダにおいて、309、311および313は残差データ(より具体的には、量子化された係数、逆量子化された係数、および再構築された残差ブロック)を表し、その各々は3つの部分(ルーマチャネルの一部および2つのクロマチャネル)から構成される。残差データ、残差情報、および量子化変換係数という用語は、残差データを示すために同義的に使用される。
【0162】
ITU-T H.265によるマージ候補リスト構築に関する例では、以下の候補に基づいてマージ候補リストが構築される。
1.5つの空間的近隣ブロックから導出された最大4つの空間的候補、
2.2つの時間的にコロケートされたブロックから導出された1つの時間的候補、
3.組み合わされた双予測候補を含む追加の候補、および
4.ゼロ動きベクトル候補。
【0163】
空間的候補
空間的近隣ブロックの動き情報は、まず、動き情報候補としてマージ候補リスト(一例では、マージ候補リストは、第1の動きベクトルがマージ候補リストに追加される前の空のリストであってもよい)に追加される。ここで、マージリストに挿入されると考えられる近隣ブロックを図6bに示す。予測間ブロックマージの場合、A1、B1、B0、A0、B2の順に順次チェックすることにより、最大4つの候補がマージリストに挿入される。
【0164】
動き情報は、1つまたは2つの参照画像リストが使用されるかどうかの情報、ならびに参照画像リストごとの参照インデックスおよび動きベクトルを含むすべての動きデータを含むことができる。
【0165】
一例では、近隣ブロックが利用可能であり、動き情報を含むかどうかをチェックした後に、近隣ブロックのすべての動きデータを動き情報候補として取得する前に、いくつかの追加の冗長性チェックが実行される。これらの冗長性チェックは、2つの異なる目的のために2つのカテゴリに分けることができる。
カテゴリ1、リスト内に冗長な動きデータを有する候補を有することを回避する、
カテゴリ2、冗長なシンタックスを生成する他の手段によって表現され得る2つの分割のマージを防止する。
【0166】
時間的候補
図6aは、時間的動き情報候補が取得されるブロックの座標を示している。コロケートブロックは、現在ブロックと同じ-x、-y座標を有するが、異なる画像(参照画像のうちの1つ)上にあるブロックである。リストが一杯でない場合(一例では、マージリスト内の候補の数がしきい値より小さい場合、マージリストは一杯ではなく、例えば、しきい値は4、5、6などであってもよい)、時間的動き情報候補がマージリストに追加される。
【0167】
生成された候補
空間的および時間的動き情報候補の挿入後に、マージリストがまだ一杯でない場合、生成された候補がリストを満たすために追加される。リストサイズは、シーケンスパラメータセットにおいて示され、コーディングされたビデオシーケンス全体にわたって固定される。
【0168】
双予測
インター予測の特別なモードは「双予測」と呼ばれ、2つの動きベクトルがブロックを予測するために使用される。動きベクトルは、同じまたは異なる参照画像を指すことができ、参照画像は、参照画像リストIDおよび参照画像インデックスによって示すことができる。例えば、第1の動きベクトルは参照画像リストL0内の第1の画像を指し、第2の動きベクトルは参照画像リストL1内の第1の画像を指すことができる。2つの参照画像リスト(例えば、L0およびL1)が維持されてもよく、第1の動きベクトルによって示される画像はリストL0から選択され、第2の動きベクトルによって示される画像はリストL1から選択される。
【0169】
一例では、動き情報が双予測を示す場合、動き情報は以下の2つの部分を含む。
・L0部分:参照画像リストL0内のエントリを指す動きベクトルおよび参照画像インデックス。
【0170】
・L1部分:参照画像リストL1内のエントリを指す動きベクトルおよび参照画像インデックス。
【0171】
画像順序カウント(POC):各画像に関連付けられ、CVS(コーディング済ビデオシーケンス)内のすべての画像の中で関連付けられた画像を一意に識別し、関連付けられた画像がデコード済画像バッファから出力される場合、デコード済画像バッファから出力される同じCVS内の他の画像の出力順序位置に対する出力順序での関連付けられた画像の位置を示す変数。
【0172】
参照画像リストL0およびL1の各々は、各々がPOCで識別される1つまたは複数の参照画像を含むことができる。各参照インデックスおよびPOC値との関連付けは、ビットストリーム内でシグナリングされ得る。一例として、L0およびL1参照画像リストは、以下の参照画像を含むことができる。
【0173】
【表1】
【0174】
上記の例では、参照画像リストL1の1番目のエントリ(参照インデックス0で示される)は、POC値が13の参照画像である。参照画像リストL1の2番目のエントリ(参照インデックス1で示す)は、POC値が14の参照画像である。
【0175】
ITU-T H.265およびVVCにおけるマージリスト構築処理は、動き情報候補のリストを出力する。VVCのマージリスト構築プロセスは、http://phenix.it-sudparis.eu/jvet/で公開されている文書JVET-L1001_v2 Versatile Video Coding(Draft 3)の「8.3.2.2Derivation process for luma motion vectors for merge mode」セクションに記載されている。動き情報という用語は、動き補償予測プロセスを実行するために必要な動きデータを指す。動き情報は、通常、以下の情報を指す。
・ブロックが単予測を適用するか双予測を適用するか
・予測に用いられる参照画像のID。(ブロックが双予測を適用する場合は2つのID)。
・動きベクトル(ブロックが双予測される場合は2つの動きベクトル)
・追加情報
【0176】
VVCおよびH.265では、マージリスト構築の出力される候補のリストは、N個の候補動き情報を含む。数Nは、典型的にはビットストリームに含まれ、5、6などの正の整数とすることができる。構築されたマージリストに含まれる候補は、単予測情報または双予測情報を含むことができる。これは、マージリストから選択された候補が双予測演算を示す可能性があることを意味する。
【0177】
三角予測モード
三角予測モードの概念は、動き補償予測のための新しい三角分割を導入することである。一例として、図7に示すように、2つの三角形予測ユニットは、対角方向または逆対角方向のいずれかでCUに使用される。CU内の各三角形予測ユニットは、単予測候補リストから導出された単予測動きベクトルおよび参照フレームインデックスを使用してインター予測される。各三角形予測ユニットに関連付けられたサンプルが、例えば動き補償または画像内予測によって予測された後に、対角エッジに対して適応重み付けプロセスが実行される。そして、変換および量子化処理がCU全体に適用される。このモードは、スキップモードおよびマージモードにのみ適用されることに留意されたい。
【0178】
三角形予測モードでは、ブロックは2つの三角形部分に分割され(図7のように)、各部分は1つの動きベクトルを使用して予測され得る。一方の三角形部分(PU1で示す)を予測するために使用される動きベクトルは、他方の三角形部分(PU2で示す)を予測するために使用される動きベクトルとは異なり得る。一例では、三角形予測モードを実行する複雑さを低減するために、単一の動きベクトル(単予測)のみを使用して各部分を予測できることに留意されたい。言い換えれば、PU1およびPU2は、2つの動きベクトルを含む双予測を使用して予測されなくてもよい。
【0179】
サブブロック予測モード
三角予測モードは、ブロックが2つのブロックに分割されるサブブロック予測の特殊なケースである。上記の例では、2つのブロック分割方向(45度および135度分割)が示されている。サブブロック予測のための他の分割角度および分割割合も可能である(例えば、図8の例)。
【0180】
いくつかの例では、ブロックは2つのサブブロックに分割され、各部分(サブブロック)は単予測で予測される。
【0181】
一例では、使用サブブロック分割モードに従って、予測サンプルを取得するために以下のステップが適用される。
・ステップ1:幾何学的モデルに従って、コーディングブロックを2つのサブブロックに分割する。このモデルは、図9図12に例示されるように、分離線(例えば、直線)によるブロックの分割をもたらし得る。
・ステップ2:第1のサブブロックの第1の予測モードおよび第2のサブブロックの第2の予測モードを取得する。一例では、第1の予測モードは第2の予測モードと同一ではない。一例では、予測モード(第1の予測モードまたは第2の予測モード)はインター予測モードであってもよく、インター予測モードの情報は、参照画像インデックスおよび動きベクトルを含んでもよい。別の例では、予測モードは、イントラ予測モードであってもよく、イントラ予測モードの情報はイントラ予測モードインデックスを含んでもよい。
・ステップ3:第1の予測モードおよび第2の予測モードをそれぞれ使用して、第1の予測値および第2の予測値を生成する。
・ステップ4:ステップ1で開示された分割に従って、第1の予測値と第2の予測値とを組み合わせることによって予測サンプルの合成値を取得する。
【0182】
一例では、ステップ1において、コーディングブロックは様々な方法で2つのサブブロックに分割される。図9は、コーディングブロックの分割に関する例を示し、分離線1250は、ブロックを2つのサブブロックに分割する。線1250を記述するために、2つのパラメータがシグナリングされ、一方のパラメータは角度α 1210であり、他方のパラメータは距離dist 1230である。
【0183】
いくつかの実施形態では、図9に示すように、角度は、x軸と分離線との間で測定され、距離は、分離線に垂直であり、現在ブロックの中心を通過するベクトルの長さによって測定される。
【0184】
別の例では、図10は、分離線を表す代替方法を示し、角度および距離の例は、図9に示す例とは異なる。
【0185】
いくつかの例では、ステップ4において、ステップ1で開示された分割は、合成予測値を取得するために、第1の予測値と第2の予測値との組み合わせに使用される。一例では、任意のアーチファクト(分離線に沿った鋭いまたは曲がりくねった外観)を排除するために、ステップ4で混合操作が適用される。混合操作は、分離線に沿ったフィルタリング操作として説明することができる。
【0186】
エンコーダ側では、レート歪みに基づくコスト関数に基づいて分離線(線を定義するパラメータ、例えば角度および距離)が決定される。決定された線パラメータはビットストリームにエンコードされる。デコーダ側では、ビットストリームに従って線パラメータがデコード(取得)される。
【0187】
例えば、輝度成分および2つの色差成分などの3つのビデオチャネルの場合、各チャネルに対して第1の予測および第2の予測が生成される。
【0188】
上記のステップ4では、加重平均を使用して第1の予測と第2の予測とを組み合わせることによって、3つの最終予測(1つのルーマ予測および2つのクロマ予測)を取得する必要がある。組み合わせのサンプル重みを取得するには、3つの最終予測の各サンプルの線方程式を解く必要があるため、このプロセスは複雑である。
【0189】
本発明の実施形態によれば、(組み合わされたクロマ予測を得るための)クロマ予測の組み合わせのサンプル重みは、ルーマ予測の組み合わせのサンプル重みに従って計算される。クロマサブサンプリングの概念を使用することはビデオ用途では一般的であるため、クロマ予測のための別個の混合フィルタを計算する必要がある。クロマサブサンプリングは、2つの色差チャネルに対して、輝度チャネルよりも低い空間解像度を使用するプロセスである。これは、コントラストの変化と比較して色の変化に対する感度が低く、圧縮されたビデオのデータレートを効果的に低下させる人間の視覚的知覚の特性を利用する。最も一般的なクロマサブサンプリング方式は、「420」サブサンプリングとして示され、輝度解像度と比較して半分の垂直解像度および半分の空間解像度の色差成分をもたらす。典型的にはブロックレベルで動作するビデオコーディングアルゴリズムの場合、これは、例えば、画像の左上サンプルに関する所与の輝度位置(x,y)におけるサイズ32 x 32の輝度ブロックが、位置(x/2,y/2)に位置する2つの16 x 16色差ブロックに関連付けられることを意味する。
【0190】
実施形態1(デコーダおよびエンコーダの観点):
この実施形態によれば、上記のプロセスにおけるステップ4は、以下のサブステップからなる。
【0191】
ステップ4.1:
ブロック内のルーマサンプルの場合、サンプル距離(sample_dist)が計算され、サンプル距離は、ブロックの分離線までのルーマサンプルの距離を表す。
【0192】
ステップ4.2:
計算されたsample_distは、重み係数を計算するために使用され、重み係数は、ルーマサンプルに対応する第1のルーマ予測値と第2のルーマ予測値との組み合わせに使用される。一例では、重み係数は、第1のルーマ予測値に対応する重み値および第2のルーマ予測値に対応する重み値を参照して、sampleWeight1およびsampleWeight2として示される。
【0193】
一例では、第1の重み係数(sampleWeight1)はサンプル距離(sample_dist)に従って計算され、第2の重み係数(sampleWeight2)は、式sampleWeight2=T-sampleWeight1に従って計算され、Tは所定の定数である。
【0194】
ステップ4.3:
座標(x,y)のクロマサンプルに対応する重み係数sampleWeightC1(またはsampleWeightC2)が計算され、これは、座標(x、y)のルーマサンプルに対する重み係数sampleWeight1(またはsampleWeight2)との関係を有する。任意選択で、クロマサンプルの第2の重みsampleWeightC2は、以下の式に従って計算される:sampleWeightC2=T-sampleWeightC1、式中、Tは所定の定数である。
【0195】
ステップ4.4:
座標(x,y)のクロマサンプルの合成予測値は、座標(x,y)の第1のクロマ予測値、座標(x,y)の第2のクロマ予測値、重み係数sampleWeightC1、および重み係数sampleWeightC2に従って計算され、(x,y)は、クロマブロックの左上座標に対する、コーディングブロックのクロマブロック内のクロマサンプルの座標である。
【0196】
一例では、サンプル距離sample_distは、以下の式に従って計算される。
sample_dist=((x<<1)+1)*Dis[angleIdx1]+((y<<1)+1))*Dis[angleIdx2]-offset(distanceIdx)
【0197】
・ angleIdx1の値およびangleIdx2の値は、ビットストリームからのものであるか、またはビットストリームから得られた他の情報に基づいて導出/計算され、angleIdx1およびangleIdx2は、分離線の量子化された三角法パラメータを表し、第1の三角法パラメータはコサイン型であり、第2の三角法パラメータはサイン型である。
【0198】
・一例では、xおよびyは、コーディングブロックの左上サンプルに対するサンプルの-xおよび-y座標である。
【0199】
・offset(distanceIdx)はオフセット値であり、これはインデックス値(distanceIdx)の関数であり、インデックス値はビットストリームから取得されるか、またはビットストリームから取得された他の情報に基づいて導出/計算される。
【0200】
・Dis[]は、ルックアップテーブルである。Dis[angleIdx1]は、サンプルの-x座標における単位増加(値1の増加)に対するサンプル距離(sample_dist)の変化を記述する。Dis[angleIdx2]は、サンプルの-y座標における単位増加(値1の増加)に対するサンプル距離(sample_dist)の変化を記述する。一例では、angleIdx1はangleIdxに等しく、angleIdx2は(displacementX+8)%32に等しい。
【0201】
一例では、所定の定数Tは8に等しく、これは、sampleWeight1およびsampleWeight2が0~8(0および8を含む)の値の範囲内の値を有することができることを意味する。別の例では、所定の定数Tは16に等しい。
【0202】
別の例では、sample_distおよびsampleWeight1は、以下の式に従って取得することができる。
-nCbR=(W>H)?(W/H):(H/W)
-sample_dist=(W>H)?(x/nCbR-y):(x-y/nCbR)
または
-sample_dist=(W>H)?(H-1-x/nCbR-y):(W-1-x-y/nCbR)
-sampleWeight1=Clip3(0,8,sample_dist+4)、
ここで、Wはコーディングブロックの幅であり、Hはコーディングブロックの高さである。
上記の2つの例は、整数演算による2つの計算方法を示すことに留意されたい。本発明の実施形態は、sample_distの計算のそれらの例に限定されない。
【0203】
サンプルの合成予測値は、第1のサンプル重み(sampleWeight1)値と座標(x,y)における第1の予測値との乗算、第2のサンプル重み(sampleWeight1)値と座標(x,y)における第2の予測値との乗算に従って計算され得る。
【0204】
一例によれば、第1の重み係数sampleWeight1は、sample_distおよびルックアップテーブルに従って取得され、一例では、ルックアップテーブルはフィルタ係数を格納するために使用される。言い換えれば、ルックアップテーブルに従って混合操作が実施される。このような例では、sample_distの関数をルックアップテーブルのインデックス値として用いることができる。関数は、定数演算による除算または乗算、一定量演算の右シフト、絶対値の取得またはクリップ演算、またはそれらの組み合わせとすることができる。
【0205】
この例では、混合操作の入力はsample_dist(分割線、コーディングブロックを2つのサブブロックに分割する線までの垂直距離、水平距離、または垂直距離と水平距離との組み合わせ)であり、混合操作の出力はsampleWeight1またはsampleWeight2である。
【0206】
別の例によれば、混合操作は、sample_distを入力とし、sampleWeight1またはsampleWeight2を出力とする関数として実装される。一例では、混合操作は、sampleWeight1=Clip3(0,8,sample_dist+4)として実施することができる。別の例では、混合操作は、sampleWeight1=Clip3(0,8,f(sample_dist))として実施することができる。関数f()は、例えば、定数演算による除算/加算/乗算、一定量演算による右シフト、絶対値演算もしくはクリップ演算、またはそれらの組み合わせとすることができる。
【0207】
本発明の実施形態によれば、混合操作は、ビットストリーム内の指示の値に従ってサンプルに適用される。
【0208】
一実施形態では、第1の混合操作は、以下のようであり得る。
第1の混合操作:”sampleWeight=Clip3(0,8,sample_dist+4)”
【0209】
一実施形態では、第2の混合操作は、以下のようであり得る。
-”sampleWeight=sample_dist==0?4:sample_dist<0?0:8”,
-”sampleWeight=Clip3(0,8,sample_dist*K+Clip3(0,8,sample_dist+4))”.
【0210】
Kは、0より大きい値を有する整数である。混合操作は、Kが増加するにつれて短くなる(したがって、よりシャープになる)ことに留意されたい。例えば、K=4の場合、第2の混合操作は、次式になる。-”sampleWeight=sample_dist==0 ?4:sample_dist<0? 0:8”これは図14に例示された。
【0211】
一例によれば、ビットストリーム内のインジケータの値はKの値を示す。この場合、Kは0の値(選択された混合操作が第1の混合操作であることを示す)、または異なるKの値(第2または第3の...混合操作を示す)を有することができる。
【0212】
本発明の一実施形態によれば、混合操作は、図15に例示されたテーブルなどのルックアップテーブルとして実施することができる。一例では、sampleWeightは、sampleWeight=geoFilter [idx]として取得することができ、ここで、idxはsample_distの関数として取得され、geoFilterはフィルタ重みの1次元線形配列である。そのような関数の1つは、idx=min((abs(sample_dist)+8)>>4、maxIdx)とすることができ、maxIdxはidxがとることができる最大値である。例えば表17-2の場合、maxIdxは7である。
【0213】
本発明の実施形態によれば、クロマ位置(x,y)におけるクロマサンプルに対応するクロマ重みsampleWeightC1は、異なるルーマ位置におけるルーマサンプルに対応する1つまたは複数のサンプル重みsampleWeight1に従って計算することができる。
【0214】
いくつかの例では、(x,y)におけるクロマサンプルおよび(x,y)におけるルーマサンプルは、クロマサブサンプリングがないとき、(x,y)における同じピクセルの成分である。クロマサブサンプリングでは、(x/2,y/2)におけるクロマサンプルおよび(x,y)におけるルーマサンプルは、(x,y)における同じピクセルの一部である。
【0215】
いくつかの例では、色差解像度が垂直方向および水平方向に半分にされるクロマサブサンプリングの場合、クロマ重み値sampleWeightC1は、組み合わせ、例えば、異なる空間位置におけるルーマ重みsampleWeight1の平均または加重平均によって計算することができる。この場合、位置(x,y)のクロマサンプルは、クロマ座標に関して位置(2x,2y)、(2x+1,2y)、(2x,2y)、および(2x,2y+1)の4つのルーマサンプルと関連付けられる。
【0216】
別の例では、色差解像度が垂直方向および水平方向に半分にされるクロマサブサンプリングの場合、座標(x+1、y+1)のルーマサンプルおよび(x/2,y/2)のクロマサンプルは、同じピクセルの成分である。同じ例では、座標(x+1、y)のルーマサンプルおよび(x/2,y/2)のクロマサンプルは、同じピクセルの成分とすることができる。これは、1つのクロマサンプルが4つの異なるピクセルを決定するために使用され、1つのルーマサンプルが1つのピクセルを決定するために使用されることを意味する。
【0217】
例えば、sampleWeightC1は、以下の式のうちの1つに従って取得することができる。
-例1:sampleWeightC1(x、y)=sampleWeight1(2*x,2*y);
-例2:sampleWeightC1(x、y)=sampleWeight1(2*x-1、2*y-1);
-例3:sampleWeightC1(x、y)=(sampleWeight1(2*x-1、2*y-1)+sampleWeight1(2*x,2*y)+K)>>1;
-例4:sampleWeightC1(x,y)=(sampleWeight1(2*x-1,2*y-1)+sampleWeight1(2*x,2*y)+sampleWeight1(2*x,2*y-1)+sampleWeight1(2*x-1,2*y)+K)>>2;
-例5:sampleWeightC1(x,y)=(sampleWeight1(2*x-1,2*y-1)+sampleWeight1(2*x,2*y)+sampleWeight1(2*x,2*y-1)+sampleWeight1(2*x-1,2*y)+2)>>2;
-例6:sampleWeightC1(x、y)=(sampleWeight1(2*x-1、2*y-1)+sampleWeight1(2*x,2*y)+1)>>1、
ここで、xおよびyは、コーディングブロックのクロマブロックの左上座標に対するクロマサンプルの座標である。sampleWeightC1(x、y)は、座標(x,y)のクロマサンプルに対応するクロマサンプル重みであり、sampleWeight1(x、y)は、座標(x,y)のルーマサンプルに対応するサンプル重みである。Kはオフセット値である。一例では、Kは0であってもよい。別の例では、Kは正の整数値であってもよい。
【0218】
これはまた、以下のように定式化することができ、xおよびyは、コーディングブロックのクロマブロックの左上座標に対するクロマサンプルの座標であり、sampleWeightC1(a、b)は、現在ブロックのクロマブロック内のサンプル座標(a,b)に位置するクロマサンプルの第1の重み値であり、aおよびbは、座標値であり、sampleWeight1(c、d)は、現在ブロックのルーマブロック内のサンプル座標(c、d)に位置するルーマサンプルに対応する重み値を表し、cおよびdは座標値であり、Kは整数値である。
【0219】
図16は、特に、クロマサンプルの重みとルーマサンプルの重みとの間の関係を示す。図16は、例1の場合、すなわち、sampleWeightC1(x、y)=sampleWeight1(2*x,2*y)を示す。ここでも、xおよびyは、コーディングブロックのクロマブロックの左上座標に対するクロマサンプルの座標であり、sampleWeightC1(x、y)は、座標(x,y)におけるクロマサンプルに対応するクロマサンプル重みであり、sampleWeight1(x、y)は、ルーマブロック内の座標(x,y)におけるルーマサンプルに対応するサンプル重みであることに留意されたい。図16に示すように、これは、ルーマサンプル座標が(2xC,2yC)に対応し、xC=xおよびyC=yはクロマサンプルの座標である、と書くこともできる。次に、さらに良好に区別するために、ルーマサンプルの座標は、sampleWeightC1(x,y)=sampleWeightC1(xC,yC)sampleWeight1(2*xC,2*yC)=sampleWeight1(xL,yL)となるように、xLおよびyLによって書き込まれてもよい。
【0220】
図17は、本開示の一実施形態による方法を示す図である。図17は、デコーディングデバイスによって実施されるコーディングの方法を示す図であり、(ステップ1601)現在ブロックのパラメータの値を取得するステップであって、パラメータの値は現在ブロックの分割モードを示す、ステップと、(ステップ1605)現在ブロックの第1の予測モードを取得するステップと、(ステップ1607)現在ブロックの第2の予測モードを取得するステップと、(ステップ1609)第1の予測モードに従って現在ブロック内のクロマサンプルのための第1の予測値を生成するステップと、(ステップ1611)第2の予測モードに従って現在ブロック内のクロマサンプルのための第2の予測値を生成するステップと、(ステップ1613)第1の予測値と第2の予測値とを組み合わせることによって予測サンプルの合成値を取得するステップと、を含む。
【0221】
図18は、本開示の一実施形態によるデコーダ30を示す。図18はデコーダを示し、デコーダは、現在ブロックのパラメータの値を取得するための取得ユニット3001であって、パラメータの値は現在ブロックの分割モードを示す、取得ユニット3001と、現在ブロックの第1の予測モードを取得するための第1の予測ユニット3005と、現在ブロックの第2の予測モードを取得するための第2の予測ユニット3007と、第1の予測モードに従って現在ブロック内のクロマサンプルのための第1の予測値を生成するための第1の生成ユニット3009と、第2の予測モードに従って現在ブロック内のクロマサンプルのための第2の予測値を生成するための第2の生成ユニット3011と、第1の予測値と第2の予測値とを組み合わせることによって予測サンプルの合成値を取得するための組み合わせユニット3013と、を含む。
【0222】
上記の実施形態では、分割モードは幾何学的モデルであってもよいことに留意されたい。さらに、上記の実施形態では、パラメータは、角度パラメータまたは距離パラメータであってもよい。
【0223】
次に、上述した実施形態で示したエンコーディング方法およびデコーディング方法の適用例と、それらを用いたシステムについて説明する。
【0224】
図19は、コンテンツ配信サービスを実現するためのコンテンツ供給システム3100を示すブロック図である。このコンテンツ供給システム3100は、キャプチャデバイス3102、端末デバイス3106、および任意選択でディスプレイ3126を含む。キャプチャデバイス3102は、通信リンク3104を介して端末デバイス3106と通信する。通信リンクは、上述した通信チャネル13を含んでもよい。通信リンク3104は、WIFI、イーサネット、ケーブル、ワイヤレス(3G/4G/5G)、USB、またはそれらの任意の種類の組み合わせなどを含むが、これらに限定されない。
【0225】
キャプチャデバイス3102は、データを生成し、上記の実施形態に示すようなエンコーディング方法によってデータをエンコードすることができる。あるいは、キャプチャデバイス3102は、データをストリーミングサーバ(図には示されていない)に配信してもよく、サーバは、データをエンコードし、エンコード済データを端末デバイス3106に送信する。キャプチャデバイス3102は、カメラ、スマートフォンもしくはPad、コンピュータもしくはラップトップ、テレビ会議システム、PDA、車両搭載デバイス、またはそれらのいずれかの組み合わせなどを含むが、これらに限定されない。例えば、キャプチャデバイス3102は、上述したように送信元デバイス12を含むことができる。データがビデオを含む場合、キャプチャデバイス3102に含まれるビデオエンコーダ20は、実際にビデオエンコーディング処理を行うことができる。データにオーディオ(すなわち、音声)が含まれている場合、実際には、キャプチャデバイス3102に含まれるオーディオエンコーダがオーディオエンコーディング処理を行ってもよい。いくつかの実際的なシナリオでは、キャプチャデバイス3102は、エンコードされたビデオおよびオーディオデータを共に多重化することによって配信する。例えばテレビ会議システムにおける他の実際的なシナリオでは、エンコードされたオーディオデータおよびエンコードされたビデオデータは多重化されない。キャプチャデバイス3102は、エンコード済オーディオデータとエンコード済ビデオデータを別々に端末デバイス3106に配信する。
【0226】
コンテンツ供給システム3100では、端末デバイス310は、エンコード済データを受信および再生する。端末デバイス3106は、スマートフォンまたはPad 3108、コンピュータまたはラップトップ3110、ネットワークビデオレコーダ(NVR)/デジタルビデオレコーダ(DVR)3112、TV 3114、セットトップボックス(STB)3116、テレビ会議システム3118、ビデオ監視システム3120、携帯情報端末(PDA)3122、車両搭載デバイス3124、またはそれらのいずれかの組み合わせなど、上述のエンコード済データをデコードすることができるデータ受信および復元機能を有するデバイスとすることができる。例えば、端末デバイス3106は、上述したように宛先デバイス14を含むことができる。エンコード済データにビデオが含まれる場合、端末デバイスが含むビデオデコーダ30を優先してビデオデコーディングを行う。エンコード済データがオーディオを含む場合、端末デバイスが含むオーディオデコーダを優先してオーディオデコーディング処理を行う。
【0227】
そのディスプレイを有する端末デバイス、例えば、スマートフォンまたはPad 3108、コンピュータまたはラップトップ3110、ネットワークビデオレコーダ(NVR)/デジタルビデオレコーダ(DVR)3112、TV 3114、携帯情報端末(PDA)3122、または車両搭載デバイス3124の場合、端末デバイスは、デコードされたデータをそのディスプレイに供給することができる。ディスプレイを装備していない端末デバイス、例えば、STB 3116、テレビ会議システム3118、またはビデオ監視システム3120の場合、デコードされたデータを受信して表示するために外部ディスプレイ3126がそこに接触される。
【0228】
本システムにおける各デバイスがエンコーディングやデコーディングを行う際には、上述した実施形態で示したような画像エンコーディングデバイスや画像デコーディングデバイスを用いることができる。
【0229】
図20は、端末デバイス3106の一例の構造を示す図である。プロトコル進行ユニット3202は、端末デバイス3106がキャプチャデバイス3102からストリームを受信した後に、そのストリームの伝送プロトコルを解析する。プロトコルには、リアルタイムストリーミングプロトコル(RTSP)、ハイパーテキスト転送プロトコル(HTTP)、HTTPライブストリーミングプロトコル(HLS)、MPEG-DASH、リアルタイムトランスポートプロトコル(RTP)、リアルタイムメッセージングプロトコル(RTMP)、またはそれらの任意の種類の組み合わせなどが含まれるが、これらに限定されない。
【0230】
プロトコル進行ユニット3202がストリームを処理した後に、ストリームファイルが生成される。ファイルは、逆多重化ユニット3204に出力される。逆多重化ユニット3204は、多重化データをエンコード済オーディオデータとエンコード済ビデオデータとに分離することができる。上述したように、いくつかの実際的なシナリオでは、例えばテレビ会議システムでは、エンコード済オーディオデータおよびエンコード済ビデオデータは多重化されない。このとき、エンコード済データは、逆多重化ユニット3204を介さずに、ビデオデコーダ3206およびオーディオデコーダ3208に送られる。
【0231】
この逆多重化処理により、ビデオのエレメンタリストリーム(ES)と、オーディオのESと、任意選択でサブタイトルが生成される。ビデオデコーダ3206は、上述した実施形態で説明したようなビデオデコーダ30を有しており、上述した実施形態で示したようなデコーディング方式でビデオESをデコードしてビデオフレームを生成し、そのデータを同期ユニット3212に供給する。オーディオデコーダ3208は、オーディオESをデコードしてオーディオフレームを生成し、このデータを同期ユニット3212に供給する。あるいは、ビデオフレームは、同期ユニット3212に供給する前にバッファ(図20には図示せず)に格納されてもよい。同様に、オーディオフレームは、同期ユニット3212に供給する前にバッファ(図20には図示せず)に格納することができる。
【0232】
同期ユニット3212は、ビデオフレームとオーディオフレームを同期させ、ビデオオーディオをビデオ/オーディオディスプレイ3214に供給する。例えば、同期ユニット3212は、ビデオおよびオーディオの情報の提示を同期させる。情報は、コーディングされたオーディオおよびビジュアルデータの提示に関するタイムスタンプ、およびデータストリーム自体の配信に関するタイムスタンプを使用してシンタックスでコーディングすることができる。
【0233】
サブタイトルデコーダ3210は、ストリームにサブタイトルが含まれている場合、サブタイトルをデコードしてビデオフレームおよびオーディオフレームに同期させ、ビデオ/オーディオ/サブタイトルをビデオ/オーディオ/サブタイトルディスプレイ3216に供給する。
【0234】
なお、本発明は、上述した方式に限定されるものではなく、上述した実施形態における画像エンコーディングデバイスおよび画像デコーディングデバイスのいずれかを、他の方式、例えば、カーシステムに組み込むことも可能である。
【0235】
数学的演算子
本開示で使用される数学的演算子は、Cプログラミング言語で使用されるものと同様である。しかしながら、整数除算および算術シフト演算の結果はより正確に定義され、指数化および実数値除算などの追加の演算が定義される。ナンバリングおよびカウントの規則は一般に0から始まり、例えば、「第1の」は0番目に相当し、「第2の」は1番目に相当するなどである。
【0236】
算術演算子
以下の演算子を以下のように定義する。
【0237】
【表2】
【0238】
論理演算子
以下の論理演算子は以下のように定義される。
x&&y xおよびyのブール論理「および」
x||y xとyのブール論理「または」
! ブール論理「否定」
x?y:z xがTRUEであるかまたは0に等しくない場合には、yの値を評価し、そうでない場合にはzの値を評価する。
【0239】
関係演算子
以下の関係演算子は以下のように定義される。
> より大きい
>= 以上
< 未満
<= 以下
== 等しい
!= 等しくない
【0240】
値「na」(該当なし)が割り当てられたシンタックス要素または変数に関係演算子が適用される場合、値「na」は、シンタックス要素または変数の別個の値として扱われる。値「na」は、他のいずれの値とも等しくないとみなされる。
【0241】
ビット演算子
以下のビット演算子は以下のように定義される。
& ビット「および」。整数引数で演算する場合、は整数値の2の補数表現で演算する。別の引数より少ないビットを含むバイナリ引数で動作する場合、より短い引数は、0に等しい上位ビットを追加することによって拡張される。
| ビット「または」。整数引数で演算する場合、は整数値の2の補数表現で演算する。別の引数より少ないビットを含むバイナリ引数で動作する場合、より短い引数は、0に等しい上位ビットを追加することによって拡張される。
^ ビット「排他的または」。整数引数で演算する場合、は整数値の2の補数表現で演算する。別の引数より少ないビットを含むバイナリ引数で動作する場合、より短い引数は、0に等しい上位ビットを追加することによって拡張される。
x>>y 2進数によるxの2の補数整数表現の算術右シフト。この関数は、yの非負整数値に対してのみ定義される。右シフトにより最上位ビット(MSB)にシフトされたビットは、シフト演算前のxのMSBに等しい値となる。
x<<y 2進数によるxの2の補数整数表現の算術左シフト。この関数は、yの非負整数値に対してのみ定義される。左シフトの結果として最下位ビット(LSB)にシフトされたビットは、0に等しい値を有する。
【0242】
割り当て演算子
以下の演算子を以下のように定義する。
= 割り当て演算子
++ インクリメント、すなわち、x++は、x=x+1と等価である。配列インデックスで使用される場合、インクリメント演算の前に変数の値を評価する。
-- デクリメント、すなわち、x--は、x=x-1と等価である。配列インデックスで使用される場合、デクリメント演算の前に変数の値を評価する。
+= 指定された量だけ増加する、すなわち、x+=3は、x=x+3に相当し、
x+=(-3)は、x=x+(-3)と等価である。
-= 指定された量だけ減少する、すなわち、x-=3は、x=x-3と等価であり、
x-=(-3)は、x=x-(-3)と等価である。
【0243】
範囲表記
以下の表記法は、値の範囲を指定するために使用される。
x=y..z xは、y以上z以下の整数値をとり、x、y、およびzは整数であり、zはyより大きい。
【0244】
数学関数
以下の数学関数が定義される。
【数2】
【0245】
Asin(x) 次式である引数xに対して動作する三角関数逆正弦関数であり、
-1.0以上1.0以下の範囲であり、出力値は、ラジアン単位で-π÷2以上π÷2以下の範囲
Atan(x) 引数xに対して動作する三角法逆正接関数であり、
出力値は、ラジアン単位で-π÷2以上π÷2以下の範囲
【数3】
Ceil(x) x以上の最小の整数。
Clip1Y(x)=Clip3(0,(1 << BitDepthY)-1,x)
Clip1C(x)=Clip3(0,(1 << BitDepthC)-1,x)
【数4】
Cos(x) ラジアン単位の引数xに対して動作する三角余弦関数。
Floor(x) x以下の最大整数。
【数5】
Ln(x) xの自然対数(底eの対数、ここで、eは自然対数の底定数2.718 281 828...)。
Log 2(x) xの底2の対数。
Log 10(x) xの底10の対数。
【数6】
【数7】
Round(x)=Sign(x)* Floor(Abs(x)+0.5)
【数8】
Sin(x)ラジアン単位の引数xに対して動作する三角関数正弦関数
【数9】
Swap(x,y)=(y,x)
Tan(x) ラジアン単位の引数xで動作する三角正接関数
【0246】
演算優先度
式における優先順位が括弧の使用によって明示的に示されない場合、以下の規則が適用される。
-より高い優先度の動作は、より低い優先度の任意の動作の前に評価される。
-同じ優先度の動作は、左から右に順次評価される。
【0247】
以下の表は、操作の優先度を最高から最低まで指定し、テーブル内のより高い位置はより高い優先度を示す。
【0248】
Cプログラミング言語でも使用される演算子の場合、本明細書で使用される優先順位は、Cプログラミング言語で使用されるものと同じである。
【0249】
表:最高(表の最上部)から最低(表の最下部)への演算優先度
【0250】
【表3】
【0251】
論理演算のテキスト記述
テキストでは、論理演算のステートメントは、以下の形式で数学的に記述される。
if(条件0)
ステートメント0
else if(条件1)
ステートメント1
...
else/*残りの条件に関する有益な注釈*/
ステートメントn
以下のように記述することができる。
...以下の通り/...以下が適用される。
-If 条件0、ステートメント0
-Otherwise,if 条件1、ステートメント1
-...
-Otherwise(残りの条件に関する有益な注釈)、ステートメントn
【0252】
本文中の各”If...Otherwise,if...Otherwise,...”ステートメントは、”...as follows”または”...the following applies”の直後に”If...”が続くように導入されている。”If...Otherwise,if...Otherwise,...”の最後の条件は、常に”Otherwise,...”である。インターリーブされた”If...Otherwise,if...Otherwise,...”ステートメントは、”...as follows”または”...the following applies”を最後の”Otherwise,...”と一致させることによって識別され得る。
【0253】
テキストでは、論理演算のステートメントは、以下の形式で数学的に記述される。
if(条件0a && 条件0b)
ステートメント0
else if(条件1a||条件1b)
ステートメント1
...
else
ステートメントn
以下のように記述することができる。
...以下の通り/...以下が適用される。
-以下の条件のすべてが真である場合には、ステートメント0:
-条件0a
-条件0b
-そうではなく、以下の条件のうちの1つまたは複数が真である場合には、ステートメント1:
-条件1a
-条件1b
-...
-そうでない場合、ステートメントn
【0254】
テキストでは、論理演算のステートメントは、以下の形式で数学的に記述される。
if(条件0)
ステートメント0
if(条件1)
ステートメント1
以下のように記述することができる。
条件0の場合、ステートメント0
条件1の場合、ステートメント1。
【0255】
本発明の実施形態は主にビデオコーディングに基づいて説明されているが、コーディングシステム10、エンコーダ20およびデコーダ30(およびそれに対応してシステム10)の実施形態ならびに本明細書に記載の他の実施形態はまた、静止画処理またはコーディング、すなわち、ビデオコーディングのように先行するまたは連続する画像とは無関係の個々の画像の処理またはコーディングのために構成され得ることに留意されたい。一般に、画像処理コーディングが単一の画像17に限定される場合、インター予測ユニット244(エンコーダ)および344(デコーダ)のみが利用可能ではない場合がある。ビデオエンコーダ20およびビデオデコーダ30の他のすべての機能(ツールまたは技術とも呼ばれる)は、静止画像処理、例えば、残差計算204/304、変換206、量子化208、逆量子化210/310、(逆)変換212/312、分割262/362、イントラ予測254/354、および/またはループフィルタリング220,320、ならびにエントロピーコーディング270およびエントロピーデコーディング304にも等しく使用され得る。
【0256】
例えばエンコーダ20およびデコーダ30、ならびに例えばエンコーダ20およびデコーダ30を参照して本明細書で説明される機能の実施形態は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組み合わせで実施することができる。ソフトウェアで実装される場合、機能は、コンピュータ可読媒体に記憶されるか、または1つまたは複数の命令またはコードとして通信媒体を介して送信され、ハードウェアベースの処理ユニットによって実行されてもよい。コンピュータ可読媒体は、データ記憶媒体などの有形媒体に対応するコンピュータ可読記憶媒体、または、ある場所から別の場所への(例えば、通信プロトコルにしたがった)コンピュータプログラムの転送を容易にする任意の媒体を含む通信媒体を含んでもよい。このようにして、コンピュータ可読媒体は、一般に、(1)非一時的である有形のコンピュータ可読記憶媒体、または(2)信号または搬送波などの通信媒体に対応することができる。データ記憶媒体は、本開示に記載される技術を実装するための命令、コード、および/または、データ構造を取り込むために1つもしくは複数のコンピュータまたは1つもしくは複数のプロセッサによってアクセスされ得る任意の使用可能な媒体であってもよい。コンピュータプログラム製品がコンピュータ可読媒体を含んでもよい。
【0257】
限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM、CD-ROMもしくは他の光ディスク記憶、磁気ディスク記憶、または他の磁気記憶装置、フラッシュメモリ、または命令もしくはデータ構造の形態で所望のプログラムコードを格納するために使用することができ、コンピュータによってアクセスすることができる任意の他の媒体を含むことができる。さらに、任意の接続は、コンピュータ可読媒体と適切に呼ばれる。例えば、ウェブサイト、サーバ、または、他の遠隔ソースから、同軸ケーブル、ファイバ光ケーブル、ツイストペア、デジタル加入者回線(DSL)、または、赤外線、電波およびマイクロ波などの無線技術を用いて、命令が送信される場合、同軸ケーブル、ファイバ光ケーブル、ツイストペア、DSL、または、赤外線、電波およびマイクロ波などの無線技術は、媒体の定義に含まれる。しかしながら、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的媒体を含まず、代わりに非一時的有形記憶媒体を対象とすることを理解されたい。本明細書で使用されるディスク(disk)およびディスク(disc)は、コンパクトディスク(CD)、レーザディスク、光ディスク、デジタル多用途ディスク(DVD)、フロッピーディスク、およびブルーレイディスクを含み、ディスク(disk)は、通常、データを磁気的に再生し、ディスク(disc)は、レーザを用いて光学的にデータを再生する。上記の組み合わせもまた、コンピュータ可読媒体の範囲内に含まれるべきである。
【0258】
命令は、1つまたは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルロジックアレイ(FPGA)、または他の同等の集積または個別論理回路などの1つまたは複数のプロセッサによって実行されてもよい。したがって、本明細書で使用される「プロセッサ」という用語は、前述の構造のいずれか、または本明細書に記載の技術の実装に適した任意の他の構造を指すことができる。さらに、いくつかの態様では、本明細書に記載された機能は、エンコーディングおよびデコーディングのために構成された専用のハードウェアおよび/またはソフトウェアモジュール内で提供され得るか、または、組み合わせられたコーデックに組み込まれ得る。さらに、これらの技術は、1つまたは複数の回路または論理素子に完全に実装することができる。
【0259】
本開示の技術は、無線ハンドセット、集積回路(IC)、または一組のIC(例えば、チップセット)を含む、多種多様なデバイスまたは装置において実施され得る。本開示では、開示された技術を実行するように構成されたデバイスの機能的態様を強調するために、様々な構成要素、モジュール、またはユニットが記載されているが、必ずしも異なるハードウェアユニットによる実現を必要としない。むしろ、上述したように、様々なユニットは、適切なソフトウェアおよび/またはファームウェアと共に、コーデックハードウェアユニットに組み合わされてもよく、または上述したような1つまたは複数のプロセッサを含む相互運用可能なハードウェアユニットの集合によって提供されてもよい。
【0260】
本開示は、以下のさらなる5つの態様を提供する。
【0261】
デコーディングデバイスによって実施されるコーディング方法の第1の態様であって、
現在ブロックを少なくとも2つのサブブロックに分割するステップと、
少なくとも2つのサブブロック内の第1のサブブロックの第1の予測モードを取得するステップと、
第1の予測モードに従って現在ブロック内のクロマサンプルの第1の予測値を取得するステップと、
現在ブロック内のルーマサンプルの重み値に従って、クロマサンプルの第1の重み値を取得するステップと、
クロマサンプルの第1の予測値およびクロマサンプルの第1の重み値に従って、現在ブロック内のクロマサンプルの合成予測値を取得するステップと、を含む。
【0262】
第1の態様による方法の第2の態様であって、現在ブロック内のルーマサンプルの重み値に従って、クロマサンプルの第1の重み値を取得するステップは、
sampleWeightC1(x,y)=sampleWeight1(2*x,2*y);
または
sampleWeightC1(x,y)=sampleWeight1(2*x-1,2*y-1)、
または
sampleWeightC1(x,y)=(sampleWeight1(2*x-1,2*y-1)+sampleWeight1(2*x,2*y)+K)>>1、
または
sampleWeightC1(x,y)=(sampleWeight1(2*x-1,2*y-1)+sampleWeight1(2*x,2*y)+sampleWeight1(2*x,2*y-1)+sampleWeight1(2*x-1,2*y)+K)>>2、
または
sampleWeightC1(x,y)=(sampleWeight1(2*x-1,2*y-1)+sampleWeight1(2*x,2*y)+sampleWeight1(2*x,2*y-1)+sampleWeight1(2*x-1,2*y)+2)>>2、
または
sampleWeightC1(x,y)=(sampleWeight1(2*x-1,2*y-1)+sampleWeight1(2*x,2*y)+1)>>1、のように実施され、
ここで、xおよびyは、コーディングブロックのクロマブロックの左上座標に対するクロマサンプルの座標であり、sampleWeightC1(x,y)は、座標(x,y)(これは、現在ブロックのクロマブロック内のサンプル座標を意味する)に位置するクロマサンプルの第1の重み値であり、sampleWeight1(x,y)は、座標(x,y)(これは、現在ブロックのルーマブロック内のサンプル座標を意味する)に位置するルーマサンプルに対応する重み値を表し、Kは整数値である。
【0263】
デコーダ(30)の第3の態様であって、第1または第2の態様のいずれか1つに記載の方法を実行するための処理回路を含む。
【0264】
コンピュータプログラム製品の第4の態様であって、第1または第2の態様のいずれか1つに記載の方法を実行するためのプログラムコードを含む。
【0265】
デコーダの第5の態様であって、1つまたは複数のプロセッサと、プロセッサに結合され、プロセッサよって実行するためのプログラミングを格納する非一時的コンピュータ可読記憶媒体と、を含み、プログラミングは、プロセッサによって実行されると、第1または第2の態様のいずれか1つに記載の方法を実行するようにデコーダを構成する。
【符号の説明】
【0266】
10 ビデオコーディングシステム/ショートコーディングシステム
12 送信元デバイス
13 通信チャネル
14 宛先デバイス
16 画像ソース
17 画像/画像データ
18 プリプロセッサ/前処理ユニット
19 前処理された画像データ
20 ビデオエンコーダ/ショートエンコーダ
21 エンコード済画像データ/エンコード済ビットストリーム
22 通信インターフェース/通信ユニット
28 通信インターフェース/通信ユニット
30 ビデオデコーダ/ショートデコーダ
31 デコード済画像データ
32 ポストプロセッサ/後処理ユニット
33 後処理された画像データ
34 ディスプレイデバイス
46 処理回路
100 ビデオエンコーダ
110 逆量子化ユニット
201 入力/入力インターフェース
203 画像ブロック
204 残差計算ユニット
205 残差ブロック
206 変換処理ユニット
207 変換係数
208 量子化ユニット
209 量子化係数/量子化残差係数/量子化変換係数
210 逆量子化ユニット
211 逆量子化係数/残差係数
212 逆変換処理ユニット
213 再構築された残差ブロック/変換ブロック
214 再構築ユニット/加算器
215 再構築ブロック
216 バッファ
220 ループフィルタユニット
221 フィルタリングされたブロック
230 デコード済画像バッファ
231 デコード済画像データ
244 インター予測ユニット
254 イントラ予測ユニット
260 モード選択ユニット
262 分割ユニット
265 予測ブロック
266 シンタックス要素
270 エントロピーエンコーディングユニット
272 出力/出力インターフェース
304 エントロピーデコーディングユニット
309 デコード済量子化係数
310 逆量子化ユニット
311 逆量子化係数
312 逆変換処理ユニット
313 再構築された残差ブロック/残差ブロック
314 再構築ユニット/加算器
315 再構築ブロック
320 ループフィルタユニット
321 フィルタリングされたブロック
330 デコード済画像バッファ
331 デコード済画像
344 インター予測ユニット
354 イントラ予測ユニット
360 モード選択ユニット
365 予測ブロック
400 ビデオコーディングデバイス
410 入力ポート/入力ポート
420 受信機ユニット
430 プロセッサ
440 送信機ユニット
450 出力ポート/出口ポート
460 メモリ
470 コーディングモジュール
500 装置
502 プロセッサ
504 メモリ
506 コードおよびデータ
508 オペレーティングシステム
510 アプリケーションプログラム
512 バス
514 二次記憶
518 ディスプレイ
1250 分離線
3001 取得ユニット
3005 第1の予測ユニット
3007 第2の予測ユニット
3009 第1の生成ユニット
3011 第2の生成ユニット
3013 組み合わせユニット
3100 コンテンツ供給システム
3102 キャプチャデバイス
3104 通信リンク
3106 端末デバイス
3108 スマートフォン/Pad
3110 コンピュータ/ラップトップ
3112 ネットワークビデオレコーダ(NVR)/デジタルビデオレコーダ(DVR)
3114 TV
3116 セットトップボックス(STB)
3118 テレビ会議システム
3120 ビデオ監視システム
3122 携帯情報端末(PDA)
3124 車両搭載デバイス
3126 外部ディスプレイ
3202 プロトコル進行ユニット
3204 逆多重化ユニット
3206 ビデオデコーダ
3208 オーディオデコーダ
3210 サブタイトルデコーダ
3212 同期ユニット
3214 ビデオ/オーディオディスプレイ
3216 ビデオ/オーディオ/サブタイトルディスプレイ
図1A
図1B
図2
図3
図4
図5
図6a
図6b
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20