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

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

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

特許7414127拡張補間フィルタのメモリ帯域幅削減のためのアフィン動きモデル制限
<>
  • 特許-拡張補間フィルタのメモリ帯域幅削減のためのアフィン動きモデル制限 図1A
  • 特許-拡張補間フィルタのメモリ帯域幅削減のためのアフィン動きモデル制限 図1B
  • 特許-拡張補間フィルタのメモリ帯域幅削減のためのアフィン動きモデル制限 図2
  • 特許-拡張補間フィルタのメモリ帯域幅削減のためのアフィン動きモデル制限 図3
  • 特許-拡張補間フィルタのメモリ帯域幅削減のためのアフィン動きモデル制限 図4
  • 特許-拡張補間フィルタのメモリ帯域幅削減のためのアフィン動きモデル制限 図5
  • 特許-拡張補間フィルタのメモリ帯域幅削減のためのアフィン動きモデル制限 図6
  • 特許-拡張補間フィルタのメモリ帯域幅削減のためのアフィン動きモデル制限 図7
  • 特許-拡張補間フィルタのメモリ帯域幅削減のためのアフィン動きモデル制限 図8
  • 特許-拡張補間フィルタのメモリ帯域幅削減のためのアフィン動きモデル制限 図9
  • 特許-拡張補間フィルタのメモリ帯域幅削減のためのアフィン動きモデル制限 図10
  • 特許-拡張補間フィルタのメモリ帯域幅削減のためのアフィン動きモデル制限 図11
  • 特許-拡張補間フィルタのメモリ帯域幅削減のためのアフィン動きモデル制限 図12
  • 特許-拡張補間フィルタのメモリ帯域幅削減のためのアフィン動きモデル制限 図13
  • 特許-拡張補間フィルタのメモリ帯域幅削減のためのアフィン動きモデル制限 図14
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-01-05
(45)【発行日】2024-01-16
(54)【発明の名称】拡張補間フィルタのメモリ帯域幅削減のためのアフィン動きモデル制限
(51)【国際特許分類】
   H04N 19/105 20140101AFI20240109BHJP
   H04N 19/136 20140101ALI20240109BHJP
   H04N 19/139 20140101ALI20240109BHJP
   H04N 19/176 20140101ALI20240109BHJP
   H04N 19/513 20140101ALI20240109BHJP
【FI】
H04N19/105
H04N19/136
H04N19/139
H04N19/176
H04N19/513
【請求項の数】 22
(21)【出願番号】P 2022518666
(86)(22)【出願日】2020-09-30
(65)【公表番号】
(43)【公表日】2022-11-30
(86)【国際出願番号】 RU2020050258
(87)【国際公開番号】W WO2020256600
(87)【国際公開日】2020-12-24
【審査請求日】2022-04-27
(31)【優先権主張番号】PCT/RU2019/000691
(32)【優先日】2019-09-30
(33)【優先権主張国・地域又は機関】RU
(31)【優先権主張番号】62/958,291
(32)【優先日】2020-01-07
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】504161984
【氏名又は名称】ホアウェイ・テクノロジーズ・カンパニー・リミテッド
(74)【代理人】
【識別番号】110000877
【氏名又は名称】弁理士法人RYUKA国際特許事務所
(72)【発明者】
【氏名】ソロヴィエフ、ティモフェイ ミカイロヴィッチ
(72)【発明者】
【氏名】シチェフ、マキシム ボリソヴィッチ
(72)【発明者】
【氏名】チェン、フアンバン
(72)【発明者】
【氏名】カラブトフ、アレクサンデル アレクサンドロヴィッチ
(72)【発明者】
【氏名】チェーンヤク、ロマン イゴレヴィッチ
(72)【発明者】
【氏名】イコニン、セルゲイ ユリエヴィッチ
(72)【発明者】
【氏名】ヤン、ハイタオ
(72)【発明者】
【氏名】アルシナ、エレナ アレクサンドロヴナ
【審査官】鉢呂 健
(56)【参考文献】
【文献】特表2022-548990(JP,A)
【文献】特表2022-505886(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04N 19/00-19/98
(57)【特許請求の範囲】
【請求項1】
動き補償のために、ブロックの制御点動きベクトルCPMVを使用して補間を実行するための補間フィルタを含むコーデックに実装された映像をコーディングするための方法であって、
i)アフィンインター予測に従ってブロックの制御点動きベクトルCPMVを決定する段階であって、前記ブロックはアフィンブロックである、決定する段階と、
ii)所定の副次的ブロックサイズについて、前記CPMVの値に従って前記所定の副次的ブロックサイズを有する副次的ブロックのための参照領域を決定する段階と、
iii)前記決定された参照領域を事前定義された閾値と比較する段階と、
iv)動き補償のために補間フィルタを適用する段階であって、前記ブロックの画素ベースの動きベクトル場を導出することを含む、適用する段階と、を含み、
前記決定された参照領域が前記事前定義された閾値よりも大きい場合、前記ブロックの前記画素ベースの動きベクトル場を導出する段階は、前記ブロックのサンプル位置の動きベクトルをクリッピングする段階をさらに含み
記ブロックのサイズに基づいて動きベクトルのクリップ範囲を決定する、方法。
【請求項2】
動き補償のために補間フィルタを使用する段階が、
Tタップの補間フィルタを用いて前記導出された動きベクトル場に基づいて参照ピクチャ内の補間サンプルを取得する段階であって、Tは前記補間フィルタの長さに対応する補間フィルタタップの数であり、Tは0より大きい、取得する段階と、
前記補間サンプルにハイパスフィルタを適用することと、をさらに含む、請求項1に記載の方法。
【請求項3】
動き補償のために補間フィルタを使用する段階は、
前記ブロックのサイズを決定する段階と、
前記ブロックの前記サイズを前記ブロックの前記サイズの第1の閾値と比較する段階と、をさらに含み、
前記ブロックの前記サイズが前記ブロックの前記サイズの前記第1の閾値以上である場合、ブロックベースのアフィン変換予測が前記ブロックに対して実行される、請求項2に記載の方法。
【請求項4】
前記CPMVの値に従って前記所定の副次的ブロックサイズを有する副次的ブロックの前記参照領域を決定する段階は、
前記ハイパスフィルタの長さに基づいて前記副次的ブロックの各境界から画素マージンを加算することによって拡張ブロックを決定する段階と、
前記CPMVに基づいて前記拡張ブロックの各コーナーの動きベクトルを導出する段階と、
前記導出された動きベクトルに基づいて前記参照ピクチャ内の変換されたブロックを導出する段階と、
前記変換されたブロックのバウンディングボックスを導出する段階と、を含み、
参照ブロックの領域は、前記バウンディングボックスの各境界からの(T-1)画素により拡張される前記バウンディングボックスに対応する、請求項2または3に記載の方法。
【請求項5】
前記参照ピクチャ内の前記変換されたブロックの前記バウンディングボックスの前記サイズは、以下の式を使用して導出され、max関数は、引数の最大値を返し、min関数は、引数の最小値を返す、
【数60】
参照ピクチャ内の前記変換されたブロックの位置は、前記変換されたブロックのコーナーサンプルの座標(左上、右上、左下、右下)によって記述され、
【数61】
WおよびHはそれぞれ前記副次的ブロックの幅および高さであり、dHorX、dHorY、dVerX、dVerYはアフィン動きモデルの水平および垂直勾配パラメータである
請求項に記載の方法。
【請求項6】
前記バウンディングボックスの前記サイズは、W'xH'によって与えられる、または
前記バウンディングボックスの前記サイズは、Ceil(W')xCeil(H')によって与えられる、または
前記バウンディングボックスの前記サイズは、Floor(W')xFloor(H')によって与えられる、請求項に記載の方法。
【請求項7】
前記補間フィルタの長さの値は、エンコーダおよびデコーダの両方に対して事前定義されるか、またはコーデックビデオシーケンスのパラメータセットにおいて指定される、請求項2からのいずれか一項に記載の方法。
【請求項8】
4×4の副次的ブロックの場合、前記事前定義された閾値Tは、
【数62】
により与えられ、T'は、並進動きブロックの動き補償MC補間フィルタの長さである、請求項に記載の方法。
【請求項9】
8×8の副次的ブロックの場合、前記事前定義された閾値Tは、
【数63】
により与えられ、T'は、並進動きブロックの動き補償MC補間フィルタの長さである、請求項に記載の方法。
【請求項10】
前記ブロックの中心の動きベクトルを計算し、並進動き補償を行う段階をさらに含む、請求項に記載の方法。
【請求項11】
記補間フィルタの前記副次的ブロックの前記所定のサイズは4×4に等しく、dX[0]はdHorXに対応し、dX[1]はdHorYに対応し、dY[0]はdVerXに対応し、dY[1]はdVerYに対応し、前記CPMVの値に従って、所定の副次的ブロックサイズを有する副次的ブロックの参照領域を決定する段階は、
変数eifSubblockSizeの値を4に等しく設定する段階と、
以下のように変数eifCanBeAppliedを導出する段階であって、
eifCanBeAppliedの前記値をTRUEに設定する、導出する段階と、
-以下のようにアレイX[i]、Y[i]を導出する段階と、
-X[0]=0、
-X[1]=(eifSubblockSize+1)*(dX[0]+(1<<9))、
-X[2]=(eifSubblockSize+1)*dY[0]、
-X[3]=X[1]+X[2]、
-Y[0]=0、
-Y[1]=(eifSubblockSize+1)*dX[1]、
-Y[2]=(eifSubblockSize+1)*(dY[1]+(1<<9))、
-Y[3]=Y[1]+Y[2]、
-変数Xmaxの前記値を、iが0..3に等しい場合の最大値X[i]に等しく設定する段階と、
-変数Xminの前記値を、iが0..3に等しい場合のX[i]の最小値に等しく設定する段階と、
-変数Ymaxの前記値を、iが0..3に等しい場合のY[i]の最大値に等しく設定する段階と、
-変数Yminの前記値を、iが0..3に等しい場合のY[i]の最小値に等しく設定する段階と、
-変数Wの前記値を、(Xmax-Xmin+(1<<9)-1)>>9の値に等しく設定する段階と、
-変数Hの前記値を(Ymax-Ymin+(1<<9)-1)>>9の値に等しく設定する段階とを含む、請求項1から10のいずれか一項に記載の方法。
【請求項12】
前記アフィンインター予測が双予測を含む場合、制約は両方のリストに対称的に適用される、請求項1から11のいずれか一項に記載の方法。
【請求項13】
Tが2に等しい、請求項2から12のいずれか一項に記載の方法。
【請求項14】
前記事前定義された閾値が72に等しい、請求項1から13のいずれか一項に記載の方法。
【請求項15】
前記変換された副次的ブロックの前記バウンディングボックスの前記サイズおよびフィルタの長さに基づいて前記副次的ブロックのメモリアクセス消費量を決定する段階と、
前記副次的ブロックの前記サイズおよび前記フィルタの長さに基づいて前記副次的ブロックの最大許容メモリアクセス消費量を決定する段階と、
前記決定されたメモリアクセス消費量が前記最大許容メモリアクセス消費量以下であるという制約が満たされた場合に、前記ブロックの動き補償のための補間フィルタが実行されるべきであると決定する段階と、をさらに含む、請求項からのいずれか一項に記載の方法。
【請求項16】
請求項1から15のいずれか一項に記載の方法を実行するための処理回路を備える、エンコーダ)。
【請求項17】
請求項1から15のいずれか一項に記載の方法を実行するための処理回路を備える、デコーダ。
【請求項18】
コンピュータまたはプロセッサで実行されると、請求項1から15のいずれか一項に記載の方法を実行するためのプログラムコードを含むコンピュータプログラム。
【請求項19】
デコーダであって、
1つまたは複数のプロセッサ、および
前記1つまたは複数のプロセッサに結合され、前記1つまたは複数のプロセッサによる実行のための命令を格納する非一時的コンピュータ可読記憶媒体であって、前記命令が、前記1つまたは複数のプロセッサによって実行されると、請求項1から15のいずれか一項に記載の方法を実行するように前記デコーダを構成する、非一時的コンピュータ可読記憶媒体を含む、デコーダ。
【請求項20】
エンコーダであって、
1つまたは複数のプロセッサ、および
前記1つまたは複数のプロセッサに結合され、前記1つまたは複数のプロセッサによる実行のための命令を格納する非一時的コンピュータ可読記憶媒体であって、前記命令が、前記1つまたは複数のプロセッサによって実行されると、請求項1から15のいずれか一項に記載の方法を実行するように前記エンコーダを構成する、非一時的コンピュータ可読記憶媒体を含む、エンコーダ。
【請求項21】
コンピュータデバイスによって実行されると、前記コンピュータデバイスに請求項1から15のいずれか一項に記載の方法を実行させるプログラムコードを保持する、非一時的コンピュータ可読媒体。
【請求項22】
動き補償のために、ブロックの制御点動きベクトルCPMVを使用して、補間を実行する補間フィルタを含むビデオシーケンスをコーディングするためのコーデックであって、前記コーデックはそれぞれ、
アフィンインター予測に従ってブロックの制御点動きベクトルCPMVを決定するように構成された第1の決定ユニットであって、前記ブロックはアフィンブロックである、第1の決定ユニット、
所定の副次的ブロックサイズに対して、前記CPMVの値に従って前記所定の副次的ブロックサイズを有する副次的ブロックのための参照領域を決定するように構成された第2の決定ユニット、
前記決定された参照領域を事前定義された閾値と比較するように構成された比較ユニット、
動き補償のために補間フィルタを適用するように構成された動き補償ユニットであって、前記ブロックの画素ベースの動きベクトル場を導出することを含む、動き補償ユニット、を含み、
前記決定された参照領域が前記閾値よりも大きい場合、前記動き補償ユニットは、前記ブロックの前記画素ベースの動きベクトル場を導出するように構成され、前記動き補償ユニットは、前記ブロックのサンプル位置の動きベクトルのクリッピングをさらに含み
記ブロックのサイズに基づいて動きベクトルのクリップ範囲を決定する、コーデック
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本特許出願は、2019年9月30日に出願された国際特許出願PCT/RU2019/000691の優先権を主張する。前述の特許出願の開示は、その全体が参照により本明細書に組み込まれる。
【0002】
本特許出願はまた、2020年1月7日に出願された米国仮出願第62/958,291号の優先権を主張する。前述の特許出願の開示は、その全体が参照により本明細書に組み込まれる。
【0003】
本願(開示)の実施形態は、一般に、ピクチャ処理の分野に関し、より詳細には、インター予測に関する。
【背景技術】
【0004】
映像符号化(映像のエンコードおよびデコード)は、広範囲のデジタル映像アプリケーション、例えば放送デジタルTV、インターネットおよびモバイルネットワークを介した映像送信、ビデオチャット、テレビ会議、DVDおよびBlu-ray(登録商標)ディスクなどのリアルタイム会話アプリケーション、映像コンテンツ取得および編集システム、ならびにセキュリティアプリケーションのカムコーダで使用されている。
【0005】
比較的短い映像であっても描写するのに必要な映像データの量はかなり多くなる可能性があり、これは、データが限られた帯域幅容量の通信ネットワークを介してストリーミングまたは通信される場合に困難をもたらす可能性がある。したがって、映像データは、一般に、今日の電気通信ネットワークを介して通信される前に圧縮される。メモリリソースが制限される可能性があるため、映像が記憶装置に格納される場合、映像のサイズがまた問題になる可能性がある。映像圧縮デバイスは、よく、送信または格納の前に映像データを符号化するためにソースでソフトウェアおよび/またはハードウェアを使用し、それによってデジタル映像画像を表すために必要なデータの量を減少させる。そのとき、圧縮データは、映像データをデコードする映像圧縮解除デバイスによって宛先で受信される。ネットワークリソースが限られており、より高い映像の質への要求がますます高まっているため、画質をほとんどまたはまったく犠牲にすることなく圧縮率を改善する改善された圧縮および圧縮解除技術が望ましい。
【発明の概要】
【課題を解決するための手段】
【0006】
本願の実施形態は、独立請求項によるエンコードおよびデコードのための装置および方法を提供する。
【0007】
上記および他の目的は、独立請求項の主題によって達成される。さらなる実装形態は、従属請求項、明細書および図面から明らかである。
【0008】
本開示は、
動き補償のために、拡張補間フィルタEIFを含むエンコーダまたはデコーダに実装された映像を符号化するための方法であって、
i)アフィンインター予測に従ってブロックの制御点動きベクトルCPMVを決定する段階であって、ブロックはアフィンブロックまたはアフィンブロックの副次的ブロックである、決定する段階と、
ii)所定の副次的ブロックサイズについて、CPMVの値に従って、所定の副次的ブロックサイズを有する副次的ブロックのための参照領域を決定する段階と、
iii)決定された参照領域を事前定義された閾値と比較する段階と、
iv)動き補償のためにEIFを適用する段階であって、ブロックの画素ベースの動きベクトル場を導出することを含む、適用する段階と、を含み、
決定された参照領域が閾値よりも大きい場合、ブロックの画素ベースの動きベクトル場を導出することは、動きベクトルのクリッピングをさらに含み、
ブロックの動きモデルとブロックのサイズとに基づいて動きベクトルのクリップ範囲を決定する、方法。
【0009】
ここで、副次的ブロックの参照領域は、導出された動きベクトル場および補間フィルタの長さに従って副次的ブロックの動き補償を実行するために必要なすべてのサンプルを含む、参照フレームの最小の長方形の領域を意味するべきであるということを理解されたい。
【0010】
本開示の文脈において、ラインという用語は行という用語と同じ意味を有するはずであることに留意されたい。
【0011】
インター予測の符号化効率を向上させるために、ブロックベースのアフィン変換予測が適用されてもよい。ここで、拡張バイリニア補間フィルタ(EIF)を使用したフィルタリングは、全体的な予測ブロックおよび副次的ブロックベースで使用することができる。EIFは、8/4タップDCTベースの補間フィルタの代わりにバイリニア補間フィルタが使用されるので、動き補償を単純化するために適用され得る。特定の動き特性を有する映像コンテンツに加えて、例えば、回転が支配的な動きである場合、EIFは、画素ベースの動きベクトル場が使用されるため、映像符号化能力の改善を提供する。
【0012】
したがって、上記の方法、EIFでは、本文脈におけるEIFの使用が制限され得るかどうかが判定される。EIFの使用が本文脈において制限され得る場合、動きベクトルのクリッピングが実行され得、次いでEIFは、クリッピングされた動きベクトルを使用して適用され得る。それにより、そうでなければ制限がEIFの使用を妨げる可能性がある状況であっても、EIFを使用することができる。
【0013】
いずれの追加条件もないEIFでMVクリッピングを使用するのと比較して、事前参照領域決定の現在の方法は、メモリの消費量が最大許容量を超える場合にのみクリッピングが使用されることを保証した。この方法は、非対称な垂直および水平スケーリングが発生し得る6パラメータのアフィン動きモデルに利益を提供する。例えば、ブロックが垂直方向にスケーリング係数Xでスケーリングされ、水平方向にスケーリング係数1/Xでスケーリングされる場合、ブロックの参照領域はブロックの領域とほぼ同じであるため、この場合、メモリ帯域幅を制限するために行われる動きベクトルクリッピングは必要ない。メモリ帯域幅が閾値未満である場合に追加の動きベクトルのクリッピングを適用しないことは、追加の動きベクトルのクリッピングが動き場の質の劣化を引き起こし、ひいては予測され再構成された信号の質の劣化を引き起こすので、映像符号化効率の改善を提供する。
【0014】
方法では、上記のように、動き補償のためにEIFを使用する段階が、
Tタップの補間フィルタを用いて導出された動きベクトル場に基づいて参照ピクチャ内の補間サンプルを取得する段階であって、Tはフィルタの長さに対応する補間フィルタタップの数であり、Tは1より大きい、取得する段階と、
補間サンプルにハイパスフィルタを適用するこ段階、をさらに含むことができる。
【0015】
方法では、上記のように、動き補償のためにEIFを使用する段階は、
ブロックのサイズを決定する段階と、
ブロックのサイズをブロックのサイズの第1の閾値と比較する段階と、をさらに含み得、
ブロックのサイズがブロックのサイズの第1の閾値以上である場合、ブロックベースのアフィン変換予測がブロックに対して実行される。
【0016】
当該の文脈における「ブロックベース」は、MCが画素ベースであるEIFとは対照的に、同じ動きベクトルMVが副次的ブロック全体に使用される動き補償MCを意味すべきであることをさらに理解されたい。
【0017】
方法では、上記のように、ブロックのサイズがアフィン動きモデルパラメータに基づいて決定され得る。
【0018】
方法では、上記のように、アフィン動きモデルパラメータは、CPMVの動きベクトルの差、ならびにブロックの幅および高さを含むことができる。
【0019】
方法では、上記のように、アフィン動きモデルパラメータは、CPMVの精度をさらに含むことができる。
【0020】
方法では、上記のように、事前定義された閾値は、所定の副次的ブロックサイズと、副次的ブロックの領域に対する参照ピクチャ内の副次的ブロックに対応する参照領域の所定の比とに基づいて計算され得る。
【0021】
方法では、上記のように、副次的ブロックの領域に対する参照ピクチャ内の副次的ブロックに対応する参照領域の所定の比が、EIFのメモリ帯域幅に対応することができる。
【0022】
方法では、上記のように、事前定義された閾値は、ブロックの所定の副次的ブロックサイズに対する最大許容メモリアクセス消費量であり得る。
【0023】
したがって、言い換えれば、事前定義された閾値は、1つのサンプルおよび所定の副次的ブロックサイズに対する最大許容メモリアクセス消費量に基づいて決定され得る。
【0024】
方法では、上記のように、CPMVの値に従って所定の副次的ブロックサイズを有する副次的ブロックの参照領域を決定する段階は、
ハイパスフィルタの長さに基づいて副次的ブロックの各境界から画素マージンを加算することによって拡張ブロックを決定する段階と、
CPMVに基づいて拡張ブロックの各コーナーの動きベクトルを導出する段階と、
導出された動きベクトルに基づいて参照ピクチャ内の変換されたブロックを導出する段階と、
変換されたブロックのバウンディングボックスを導出する段階と、を含み得、
参照ブロックの領域は、バウンディングボックスの各境界からの(T-1)画素により拡張されるバウンディングボックスに対応する。
【0025】
方法では、上記のように、参照ピクチャ内の変換されたブロックのバウンディングボックスのサイズは、以下の式を使用して導出され得、max関数は、引数の最大値を返し、min関数は、引数の最小値を返す、
【数1】
参照ピクチャ内の変換されたブロックの位置は、変換された拡張ブロックのコーナーサンプルの座標(左上、右上、左下、右下)によって記述され、
【数2】
WおよびHはそれぞれ副次的ブロックの幅および高さであり、dHorX、dHorY、dVerX、dVerYはアフィン動きモデルの水平および垂直勾配パラメータである。
【0026】
ここで、図6に示すように、ブロックのアフィン動き場では、2つの制御点(4パラメータ)または3つの制御点動きベクトル(CPMV)(6パラメータ)の動きの情報によって記述され得ることを理解されたい。したがって、サンプル位置(x,y)における動きベクトルの計算のための一般式が、ここに提示されている。それらは、
【数3】
である。
【0027】
4パラメータのアフィン動きモデルの場合、サンプル位置(x,y)における動きベクトルは、以下のように導出され得る。
【数4】
【0028】
6パラメータアフィン動きモデルの場合、サンプル位置(x,y)における動きベクトルは、以下のように導出され得る。
【数5】
(mv0x,mv0y)は、左上コーナーの制御点の動きベクトルであり、(mv1x,mv1y)は、右上コーナーの制御点の動きベクトルであり、(mv2x,mv2y)は、左下コーナーの制御点の動きベクトルであり、Wはブロックの幅であり、Hはブロックの高さである。
【0029】
6パラメータのアフィン動きモデルを用いる場合について
【数6】
【0030】
4パラメータのアフィン動きモデルを用いる場合について
【数7】
dVerX=-dHorY,
dVerY=-dHorX.
【0031】
並進動きインター予測に関しては、2つのアフィン動きインター予測モード、すなわちアフィンマージモード、およびアフィンAMVPモードもある。
【0032】
方法では、上記のように、バウンディングのサイズは、W'xH'によって与えられ得る、または
バウンディングボックスのサイズは、Ceil(W')xCeil(H')によって与えられ得る、または
バウンディングされたボックスのサイズは、Floor(W')xFloor(H')によって与えられ得る。
【0033】
方法では、上記のように、方法は、変換された副次的ブロックのバウンディングボックスのサイズおよびフィルタの長さに基づいて副次的ブロックのメモリアクセス消費量を決定する段階と、
副次的ブロックのサイズおよびフィルタの長さに基づいて副次的ブロックの最大許容メモリアクセス消費量を決定する段階と、
決定されたメモリアクセス消費量が最大許容メモリアクセス消費量以下であるという制約が満たされた場合に、ブロックの動き補償のためのEIFが実行されるべきであると決定する段階と、をさらに含むことができる。この場合、MVクリッピングは、MVがピクチャの外側に向けられないことを保証するために使用される。
【0034】
方法では、上記のように、フィルタの長さの値は、エンコーダおよびデコーダの両方に対して事前定義されるか、またはコーデックビデオシーケンスのパラメータセットにおいて指定され得る。
【0035】
方法では、上記のように、4×4の副次的ブロックの場合、前記事前定義された閾値Tは、
【数8】
により与えられ得、T'は、並進動きブロックの動き補償MC補間フィルタの長さである。
【0036】
方法では、上記のように、8×8の副次的ブロックの場合、事前定義された閾値Tは、
【数9】
により与えられ得、T'は、並進動きブロックの動き補償MC補間フィルタの長さである。
【0037】
方法は、上記のように、
ブロックの中心の動きベクトルを計算し、並進動き補償を行う段階をさらに含む。
【0038】
上述したように、本方法は、拡張補間フィルタの副次的ブロックの所定のサイズが4×4に等しく、dX[0]はdHorXに対応し、dX[1]はdHorYに対応し、dY[0]はdVerXに対応し、dY[1]はdVerYに対応することをさらに含み得、CPMVの値に従って、所定の副次的ブロックサイズを有する副次的ブロックの参照領域を決定する段階は、
-変数eifSubblockSizeの値を4に等しく設定する段階と、
-アレイX[i]、Y[i]を、以下のように導出する段階と、
-X[0]=0、
-X[1]=(eifSubblockSize+1)*(dX[0]+(1<<9))、
-X[2]=(eifSubblockSize+1)*dY[0]、
-X[3]=X[1]+X[2]、
-Y[0]=0、
-Y[1]=(eifSubblockSize+1)*dX[1]、
-Y[2]=(eifSubblockSize+1)*(dY[1]+(1<<9))、
-Y[3]=Y[1]+Y[2]、
-変数Xmaxの値を、iが0..3に等しい場合のX[i]の最大値に等しく設定する段階と、
-変数Xminの値を、iが0..3に等しい場合のX[i]の最小値に等しく設定する段階と、
-変数Ymaxの値を、iが0..3に等しい場合のY[i]の最大値に等しく設定する段階と、
-変数Yminの値を、iが0..3に等しい場合のY[i]の最小値に等しく設定する段階と、
-変数Wの値を、(Xmax-Xmin+(1<<9)-1)>>9の値に等しく設定する段階と、
-変数Hの値を(Ymax-Ymin+(1<<9)-1)>>9の値に等しく設定する段階とをさらに含むことができる。
【0039】
dX[0]、dX[1]、dY[0]、dY[1]の精度は、1/2、すなわちKビットで与えられてもよく、Kは0より大きい整数である。したがって、例えば、Kが9に等しい場合、すなわち、9ビットでは、変数dX[0]、dX[1]、dY[0]、dY[1]は、与えられる1/512の精度である。
【0040】
上記の例では、動きベクトル精度は9ビットであり、(1<<9)は1つの整数サンプルに対応する。dX[0]、dX[1]、dY[0]、dY[1]の精度がKに等しく、(1<<K)が1つの整数サンプルに対応する場合、上記の式は以下のように定式化することができる。
-変数eifSubblockSizeの値を4に等しく設定し、
-アレイX[i]、Y[i]を、以下のように導出し、
-X[0]=0、
-X[1]=(eifSubblockSize+1)*(dX[0]+(1<<K))、
-X[2]=(eifSubblockSize+1)*dY[0]、
-X[3]=X[1]+X[2]、
-Y[0]=0、
-Y[1]=(eifSubblockSize+1)*dX[1]、
-Y[2]=(eifSubblockSize+1)*(dY[1]+(1<<K))、
-Y[3]=Y[1]+Y[2]、
-変数Xmaxの値を、iが0..3に等しい場合のX[i]の最大値に等しく設定し、
-変数Xminの値を、iが0..3に等しい場合のX[i]の最小値に等しく設定し、
-変数Ymaxの値を、iが0..3に等しい場合のY[i]の最大値に等しく設定し、
-変数Yminの値を、iが0..3に等しい場合のY[i]の最小値に等しく設定し、
-変数Wの値を、(Xmax-Xmin+(1<<K)-1)>>Kの値に等しく設定し、
-変数Hの値を、(Ymax-Ymin+(1<<K)-1)>>Kの値に等しく設定する。
【0041】
方法では、上記のように、アフィンインター予測が双予測を含む場合、制約は両方のリストに対称的に適用され得ることをさらに含み得る。
【0042】
ここで、条件は対称的に適用されることを理解されたい。メモリ消費量は、L0およびL1参照リストの両方について閾値未満であるべきであり、例えば、L0およびL1の異なるアフィン動きモデルであり得るのである。したがって、アフィン動きモデルパラメータに基づいて導出されたクリップ範囲を用いた動きベクトルクリッピングの使用に関する決定は、L0およびL1参照リスト(方向)に対して1回行われ得ることを理解されたい。言い換えれば、L0およびL1の動き補償スキームは常に同じであるべきである。
【0043】
方法では、上記のように、Tは2に等しくてもよく、この場合、参照フレームから予測サンプルを取得するためにバイリニア補間が使用される。
【0044】
方法では、上記のように、事前定義された閾値は72に等しくてもよい。
【0045】
ここで、複数のフィルタタップはリスト0とリスト1とで同じであるが、動きモデルはリスト0とリスト1とで異なり得ることを理解されたい。特に、アフィン動きモデルの場合のCPMVは、リスト0とリスト1とで異なり得る。
【0046】
方法では、上記のように、動きモデルがアフィン動きモデルであり、動きベクトルのクリップ範囲が、CPMVに基づいて決定された動きモデルパラメータに基づいて決定され得る。
【0047】
方法では、上記のように、方法は、変換された副次的ブロックのバウンディングボックスのサイズおよびフィルタの長さに基づいて副次的ブロックのメモリアクセス消費量を決定する段階と、
副次的ブロックのサイズおよびフィルタの長さに基づいて副次的ブロックの最大許容メモリアクセス消費量を決定する段階と、
決定されたメモリアクセス消費量が最大許容メモリアクセス消費量以下であるという制約が満たされた場合に、ブロックの動き補償のためのEIFが実行されるべきであると決定する段階と、をさらに含むことができる。この場合、MVクリッピングは、MVがピクチャの外側に向けられないことを保証するために、使用される。
【0048】
本開示は、上記の方法を実行するための処理回路を備えるエンコーダをさらに提供する。
【0049】
本開示は、上記の方法を実行するための処理回路を備えるデコーダをさらに提供する。
【0050】
本開示は、コンピュータまたはプロセッサで実行されると、上記の方法を実行するためのプログラムコードを含むコンピュータプログラム製品をさらに提供する。
【0051】
本開示は、デコーダであって、
1つまたは複数のプロセッサ、および
1つまたは複数のプロセッサに結合され、1つまたは複数のプロセッサによる実行のための命令を格納する非一時的コンピュータ可読記憶媒体であって、命令が、1つまたは複数のプロセッサによって実行されると、上記の方法を実行するようにデコーダを構成する、非一時的コンピュータ可読記憶媒体を含む、デコーダをさらに提供する。
【0052】
本開示は、エンコーダであって、
1つまたは複数のプロセッサ、および
1つまたは複数のプロセッサに結合され、1つまたは複数のプロセッサによる実行のための命令を格納する非一時的コンピュータ可読記憶媒体であって、命令が、1つまたは複数のプロセッサによって実行されると、上記の方法を実行するようにエンコーダを構成する、非一時的コンピュータ可読記憶媒体を含む、エンコーダをさらに提供する。
【0053】
本開示は、コンピュータデバイスによって実行されると、コンピュータデバイスに上記の方法を実行させるプログラムコードを保持する、非一時的コンピュータ可読媒体をさらに開示する。
【0054】
本開示は、動き補償のための拡張補間フィルタEIFを含む映像シーケンスを符号化するためのデコーダまたはエンコーダであって、デコーダまたはエンコーダはそれぞれ、
アフィンインター予測に従ってブロックの制御点動きベクトルCPMVを決定するように構成された第1の決定ユニットであって、ブロックはアフィンブロックまたはアフィンブロックの副次的ブロックである、第1の決定ユニット、
所定の副次的ブロックサイズに対して、CPMVの値に従って所定の副次的ブロックサイズを有する副次的ブロックのための参照領域を決定するように構成された第2の決定ユニット、
決定された参照領域を事前定義された閾値と比較するように構成された比較ユニット、
動き補償のためにEIFを適用するように構成された動き補償ユニットであって、ブロックの画素ベースの動きベクトル場を導出することを含む、動き補償ユニット、を含み、
決定された参照領域が閾値よりも大きい場合、動き補償ユニットは、ブロックの画素ベースの動きベクトル場を導出するように構成され、動きベクトルのクリッピングをさらに含み、
ブロックの動きモデルとブロックのサイズとに基づいて動きベクトルのクリップ範囲を決定する、デコーダまたはエンコーダをさらに開示する。
【0055】
1つまたは複数の実施形態の詳細は、添付の図面および以下の説明に記載される。他の特徴、目的、および利点は、明細書、図面、および特許請求の範囲から明らかになるであろう。
【0056】
本発明の以下の実施形態は、添付の図および図面を参照してより詳細に説明される。
【図面の簡単な説明】
【0057】
図1A】本発明の実施形態を実装するように構成された映像符号化システムの例を示すブロック図である。
図1B】本発明の実施形態を実装するように構成された映像符号化システムの別の例を示すブロック図である。
図2】本発明の実施形態を実装するように構成されたビデオエンコーダの一例を示すブロック図である。
図3】本発明の実施形態を実装するように構成されたビデオデコーダの例示的構造を示すブロック図である。
図4】エンコード装置またはデコード装置の例を示すブロック図である。
図5】エンコード装置またはデコード装置の別の例を示すブロック図である。
図6】制御点ベースのアフィン動きモデルの例示的な例であり、4パラメータおよび6パラメータである。
図7】副次的ブロックのアフィン動きベクトル場の例示的な例である。
図8】アフィンブロック(副次的ブロック)および中間の拡張EIFブロック(副次的ブロック)のコーナーの座標の例示的な例である。
図9】参照ピクチャ内の変換されたブロック(副次的ブロック)および対応するバウンディングボックスの位置の例示的な例である。
図10】コンテンツ配信サービスを実現するコンテンツ供給システム3100の例示的な構成を示すブロック図である。
図11】端末デバイスの例の構成を示すブロック図である。
図12】本開示による、符号化デバイス、すなわちエンコーダまたはデコーダによって実装される、映像を符号化するための方法を示す。
図13】本開示の実施形態による映像シーケンスをデコードするためのデコーダを示す。
図14】本開示の実施形態による映像シーケンスをエンコードするためのエンコーダを示す。
【発明を実施するための形態】
【0058】
以下において、同一の参照符号は、特に明記しない限り、同一のまたは少なくとも機能的に同等の特徴を指す。
【0059】
以下の説明では、本開示の一部を形成し、本発明の実施形態の特定の態様または本発明の実施形態を使用することができる特定の態様を例示として示す添付の図面を参照する。本発明の実施形態は、他の態様で使用されてもよく、図に示されていない構造的または論理的な変更を含んでもよいことが理解される。したがって、以下の詳細な説明は限定的な意味で解釈されるべきではなく、本発明の範囲は添付の特許請求の範囲によって定められる。
【0060】
例えば、記載された方法に関連する開示は、その方法を実行するように構成された対応するデバイスまたはシステムにも当てはまり、その逆も同様であり得ることが理解される。例えば、1つまたは複数の特定の方法のステップが記載されている場合、対応する装置は、そのような1つまたは複数のユニットが明示的に記載または図示されていなくても、記載された1つまたは複数の方法のステップ(例えば、1つまたは複数のステップを実行する1つのユニット、または複数のステップのうちの1つまたは複数をそれぞれ実行する複数のユニット)を実行するための1つまたは複数のユニット、例えば機能ユニットを含むことができる。一方、例えば、特定の装置が1つまたは複数のユニット、例えば機能ユニットに基づいて記載されている場合、対応する方法は、そのような1つまたは複数のステップが図に明示的に記載または図示されていなくても、1つまたは複数のユニットの機能(例えば、1つまたは複数のユニットの機能を実行する1つのステップ、または複数のユニットのうちの1つまたは複数の機能をそれぞれ実行する複数のステップ)を実行するための1つのステップを含むことができる。さらに、本明細書に記載の様々な例示的な実施形態および/または態様の特徴は、特に明記しない限り、互いに組み合わせることができることが理解される。
【0061】
映像符号化は、通常、映像または映像シーケンスを形成するピクチャのシーケンスの処理を指す。「ピクチャ」という用語の代わりに、「フレーム」または「イメージ」という用語が、映像符号化の分野における同義語として使用され得る。映像符号化(または一般に符号化)は、映像のエンコードと映像のデコードの2つの部分を含む。映像のエンコードは、ソース側で実行され、通常、元の映像を処理(例えば、圧縮によって)して、映像を表すために必要なデータ量を削減することを含む(より効率的な格納および/または伝送のため)。映像デコードは、宛先側で実行され、通常、映像を再構成するためにエンコーダと比較して逆の処理を含む。映像(または一般的なピクチャ)の「符号化」に言及する実施形態は、映像またはそれぞれの映像のシーケンスの「エンコード」または「デコード」に関連すると理解されるべきである。エンコード部とデコード部の組合せは、CODEC(Coding and Decoding)とも呼ばれる。
【0062】
可逆映像符号化の場合、元の映像を再構成することができる、すなわち、再構成された映像は、(格納時または伝送中に伝送損失または他のデータ損失がないと仮定すると)元の映像と同じ品質を有する。非可逆映像符号化の場合、デコーダで完全には再構成することができない映像を表すデータ量を減らすために、例えば量子化によるさらなる圧縮が実行される、すなわち、再構成された映像の質は、元の映像の質と比較して低いまたは悪い。
【0063】
いくつかの映像符号化規格は、「不可逆ハイブリッド映像コーデック」(すなわち、サンプルドメインにおける空間的および時間的予測と、変換ドメインにおいて量子化を適用するための2D変換符号化とを組み合わせる)の群に属する。映像のシーケンスの各ピクチャは、通常、重複しないブロックのセットに区分され、符号化は、通常、ブロックレベルで実行される。言い換えれば、エンコーダでは、映像は、典型的には、例えば、予測ブロックを生成するために空間(イントラピクチャ)予測および/または時間(インターピクチャ)予測を使用することによって、ブロック(映像ブロック)レベルで処理、すなわちエンコードされ、残差ブロックを取得するために現在のブロック(現在処理されている/処理されるべきブロック)から予測ブロックを減算し、残差ブロックを変換し、変換ドメイン内の残差ブロックを量子化して、送信されるデータの量を削減(圧縮)し、一方でデコーダでは、エンコーダと比較して逆の処理がエンコードまたは圧縮されたブロックに適用されて、表現のために現在のブロックを再構成する。さらに、エンコーダは、デコーダの処理のループを複製し、その結果、両方が同一の予測(例えば、イントラおよびインター予測)および/または後続のブロックを処理、すなわち符号化するための再構成を、生成する。
【0064】
映像符号化システム10の以下の実施形態では、ビデオエンコーダ20、およびビデオデコーダ30が、図1Aから図3に基づいて説明される。
【0065】
図1Aは、例示的な符号化システム10、例えば、本願の技術を利用することができる映像符号化システム10(または略して符号化システム10)を示す概略的なブロック図である。映像符号化システム10のビデオエンコーダ20(または略してエンコーダ20)およびビデオデコーダ30(または略してデコーダ30)は、本願に記載された様々な例にしたがって技術を実行するように構成され得るデバイスの例を示す。
【0066】
図1Aに示すように、符号化システム10は、エンコードされたピクチャデータ21をデコードするために、例えば宛先デバイス14にエンコードされたピクチャデータ21を提供するように構成されたソースデバイス12を備える。
【0067】
ソースデバイス12は、エンコーダ20を備え、さらに、すなわち、任意選択で、ピクチャソース16、例えばピクチャ・プリプロセッサ18のようなプリプロセッサ(または前処理ユニット)18、および通信インターフェースまたは通信ユニット22を備え得る。
【0068】
ピクチャソース16は、任意の種類のピクチャキャプチャデバイス、例えば現実世界のピクチャをキャプチャするためのカメラ、および/または任意の種類のピクチャ生成装置、例えばコンピュータアニメーションピクチャを生成するためのコンピュータグラフィックプロセッサ、または現実世界のピクチャ、コンピュータ生成ピクチャ(例えば、スクリーンコンテンツ、仮想現実(VR)ピクチャ)、および/またはそれらの任意の組合せ(例えば、拡張現実(AR)ピクチャ)を取得および/または提供するための任意の種類の他の装置を含むか、またはそれらであってもよい。ピクチャソースは、前述のピクチャのいずれかを格納する任意の種類のメモリまたはストレージであってもよい。
【0069】
プリプロセッサ18および前処理ユニット18によって実行される処理と区別して、ピクチャまたはピクチャデータ17は、生ピクチャまたは生ピクチャデータ17と呼ばれる場合もある。
【0070】
プリプロセッサ18は、(生の)ピクチャデータ17を受信し、ピクチャデータ17に対して前処理を実行して、前処理されたピクチャ19または前処理されたピクチャデータ19を取得するように構成される。プリプロセッサ18によって実行される前処理は、例えば、トリミング、色フォーマット変換(例えば、RGBからYCbCr)、色の補正、またはノイズ除去を含むことができる。前処理ユニット18は、任意選択の構成要素であってもよいことが理解されよう。
【0071】
ビデオエンコーダ20は、前処理されたピクチャデータ19を受信し、エンコードされたピクチャデータ21(さらなる詳細は、例えば図2に基づいて以下に説明される)を提供するように構成される。
【0072】
ソースデバイス12の通信インターフェース22は、エンコードされたピクチャデータ21を受信し、エンコードされたピクチャデータ21(またはその任意のさらなる処理されたバージョン)を、格納または直接的な再構成のために、通信チャネル13を介して別の装置、例えば宛先デバイス14または任意の他の装置に送信するように、構成することができる。
【0073】
宛先デバイス14は、デコーダ30(例えば、ビデオデコーダ30)を備え、追加的に、すなわち、任意選択的に、通信インターフェースまたは通信ユニット28、ポストプロセッサ32(または後処理ユニット32)、および表示デバイス34を備えてもよい。
【0074】
宛先デバイス14の通信インターフェース28は、例えばソースデバイス12から、または任意の他のソース、例えば記憶装置、例えばエンコードされたピクチャデータ記憶装置から直接、エンコードされたピクチャデータ21(またはその任意のさらなる処理されたバージョン)を受信し、エンコードされたピクチャデータ21をデコーダ30に提供するように構成される。
【0075】
通信インターフェース22および通信インターフェース28は、ソースデバイス12と宛先デバイス14との間の直接通信リンク、例えば直接的な有線もしくは無線の接続を介して、または任意の種類のネットワーク、例えば有線もしくは無線ネットワークもしくはそれらの任意の組合せ、または任意の種類の私有および公衆ネットワークもしくはそれらの任意の種類の組合せを介して、エンコードされたピクチャデータ21またはエンコードデータ13を送信または受信するように構成することができる。
【0076】
通信インターフェース22は、例えば、エンコードされたピクチャデータ21を適切なフォーマット、例えばパケットにパッケージ化し、および/または通信リンクまたは通信ネットワークを介した伝送のための任意の種類の伝送エンコードまたは処理を使用して、エンコードされたピクチャデータを処理するように構成することができる。
【0077】
通信インターフェース22の相手方を形成する通信インターフェース28は、例えば、伝送されたデータを受信し、任意の種類の対応する伝送デコードまたは処理および/またはデパッケージングを使用して伝送データを処理して、エンコードされたピクチャデータ21を取得するように構成され得る。
【0078】
通信インターフェース22および通信インターフェース28の両方は、ソースデバイス12から宛先デバイス14を指す図1Aの通信チャネル13の矢印によって示されるような単方向通信インターフェース、または双方向通信インターフェースとして構成されてもよく、例えば、メッセージを送受信し、例えば、接続をセットアップし、通信リンクおよび/またはデータ伝送、例えば、エンコードされたピクチャデータ伝送に関連する任意の他の情報を確認し交換するように、構成されてもよい。
【0079】
デコーダ30は、エンコードされたピクチャデータ21を受信し、デコードされたピクチャデータ31またはデコードされたピクチャ31(さらなる詳細は、例えば図3または図5に基づいて以下に説明される)を提供するように構成される。
【0080】
宛先デバイス14のポストプロセッサ32は、デコードされたピクチャデータ31(再構成されたピクチャデータとも呼ばれる)、例えばデコードされたピクチャ31を後処理して、後処理されたピクチャデータ33、例えば後処理されたピクチャ33を取得するように構成される。後処理ユニット32によって実行される後処理は、例えば、色フォーマットの変換(例えば、YCbCrからRGBへ)、色の補正、トリミング、もしくはリサンプリング、または例えば表示デバイス34による表示のためにデコードピクチャデータ31を準備するための任意の他の処理を含むことができる。
【0081】
宛先デバイス14の表示デバイス34は、例えばユーザまたは見る者にピクチャを表示するために、後処理されたピクチャデータ33を受信するように構成される。表示デバイス34は、再構成されたピクチャを表すための任意の種類のディスプレイ、例えば、一体型または外部のディスプレイまたはモニタであってもよく、またはそれを含んでもよい。ディスプレイは、例えば、液晶ディスプレイ(LCD)、有機発光ダイオード(OLED)ディスプレイ、プラズマディスプレイ、プロジェクタ、マイクロLEDディスプレイ、液晶オンシリコン(LCoS)、デジタルライトプロセッサ(DLP)、または任意の種類の他のディスプレイを含むことができる。
【0082】
図1Aは、ソースデバイス12と宛先デバイス14とを別々のデバイスとして示しているが、デバイスの実施形態は、両方または両方の機能、すなわち、ソースデバイス12または対応する機能、および宛先デバイス14または対応する機能を含むこともできる。そのような実施形態では、ソースデバイス12または対応する機能および宛先デバイス14または対応する機能は、同じハードウェアおよび/またはソフトウェアを使用して、または別々のハードウェアおよび/またはソフトウェアまたはそれらの任意の組合せによって実装され得る。
【0083】
説明に基づいて当業者には明らかなように、様々なユニットの機能または図1Aに示すようなソースデバイス12および/または宛先デバイス14内の機能の存在および(正確な)分割は、実際のデバイスおよび用途に応じて異なり得る。
【0084】
エンコーダ20(例えば、ビデオエンコーダ20)もしくはデコーダ30(例えば、ビデオデコーダ30)、またはエンコーダ20とデコーダ30の両方は、図1Bに示すように、処理回路、例えば1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、個別論理、ハードウェア、映像符号化専用、またはそれらの任意の組合せを介して実装され得る。エンコーダ20は、処理回路46を介して実装されて、図2のエンコーダ20および/または本明細書に記載の任意の他のエンコーダシステムまたはサブシステムに関して説明したような様々なモジュールを具現化することができる。デコーダ30は、処理回路46を介して実装されて、図3のデコーダ30および/または本明細書に記載の任意の他のデコーダシステムまたはサブシステムに関して説明したような様々なモジュールを具現化することができる。処理回路は、後述するように様々な操作を実行するように構成されてもよい。図5に示すように、技法が部分的にソフトウェアで実装される場合、デバイスは、ソフトウェアのための命令を適切な非一時的コンピュータ可読記憶媒体に格納することができ、本開示の技法を実行するために1つまたは複数のプロセッサを使用してハードウェアで命令を実行することができる。ビデオエンコーダ20およびビデオデコーダ30のいずれかは、例えば、図1Bに図示されるように、単一デバイスにおける結合されたエンコーダ/デコーダ(CODEC)の一部として統合され得る。
【0085】
ソースデバイス12および宛先デバイス14は、任意の種類のハンドヘルドまたは固定デバイス、例えば、ノートブックまたはラップトップコンピュータ、携帯電話、スマートフォン、タブレットまたはタブレットコンピュータ、カメラ、デスクトップコンピュータ、セットトップボックス、テレビ、表示デバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイス(コンテンツサービスのサーバまたはコンテンツ配信サーバなど)、放送受信装置、放送送信装置などを含む広範囲のデバイスのいずれかを含むことができ、オペレーティングシステムを一切使用しなくても、または任意の種類のオペレーティングシステムを使用してもよい。場合によっては、ソースデバイス12および宛先デバイス14は、無線通信に対して備え得る。したがって、ソースデバイス12および宛先デバイス14は、無線通信デバイスであり得る。
【0086】
場合によっては、図1Aに示す映像符号化システム10は単なる例であり、本願の技術は、エンコードデバイスとデコードデバイスとの間のいずれかのデータ通信を必ずしも含まない映像符号化設定(例えば、映像のエンコードまたは映像のデコード)に適用することができる。他の例では、データは、ローカルメモリから取り出される、ネットワークを介してストリーミングされるなどである。映像エンコードデバイスは、データをエンコードしてメモリに格納することができ、および/または映像デコードデバイスは、メモリからデータを取り出してデコードすることができる。いくつかの例では、エンコードおよびデコードは、互いに通信しないが、単にデータをメモリにエンコードし、および/またはメモリからデータを取り出してデコードするデバイスによって実行される。
【0087】
説明の便宜上、本発明の実施形態は、例えば、高効率ビデオコーディング(HEVC)または多用途ビデオコーディング(VVC)の参照ソフトウェア、ITU-Tビデオコーディング・エキスパート・グループ(VCEG)およびISO/IECモーション・ピクチャ・エキスパート・グループ(MPEG)のビデオコーディングに関するジョイント・コラボレーション・チーム(JCT-VC)によって開発された次世代映像符号化規格を参照することによって、本明細書に記載される。当業者は、本発明の実施形態がHEVCまたはVVCに限定されないことを理解するであろう。
【0088】
エンコーダおよびエンコードの方法
図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はまた、ハイブリッドビデオエンコーダ、またはハイブリッドビデオコーデックによるビデオエンコーダとも称され得る。
【0089】
残差計算ユニット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の「内蔵デコーダ」を形成するとも言及される。
【0090】
ピクチャおよびピクチャの区分(ピクチャおよびブロック)
エンコーダ20は、例えば入力201を介して、ピクチャ17(またはピクチャデータ17)、例えば映像または映像シーケンスを形成するピクチャのシーケンスのピクチャを受信するように構成され得る。受信されたピクチャまたはピクチャデータはまた、前処理されたピクチャ19(または前処理されたピクチャデータ19)であってもよい。簡単にするために、以下の説明ではピクチャ17を参照する。ピクチャ17は、現在のピクチャ、または、符号化されるべきピクチャ(特に、現在のピクチャを他のピクチャ、例えば同じ映像シーケンス、すなわち現在のピクチャも含む映像シーケンスの以前にエンコードおよび/またはデコードされたピクチャから区別するための映像符号化において)とも称され得る。
【0091】
(デジタル)ピクチャは、強度の値によるサンプルの2次元アレイまたは行列であるか、またはそれとみなすことができる。アレイ内のサンプルは、画素(短い形式のピクチャ要素)またはpelと称されることもある。アレイまたはピクチャの水平方向および垂直方向(または軸)のサンプル数は、ピクチャのサイズおよび/または解像度を定める。色の表現のために、典型的には、3つの色成分が使用されている、すなわち、ピクチャは、3つのサンプルアレイで表され得る、またはそれらを含む。RBGフォーマットまたは色空間では、ピクチャは対応する赤、緑、および青のサンプルアレイを含む。しかしながら、映像符号化では、各画素は、通常、輝度およびクロミナンスのフォーマットまたは色空間、例えばYCbCrで表され、これは、Yで示される輝度成分(場合によっては代わりにLも使用される)と、CbおよびCrで示される2つのクロミナンス成分とを含む。輝度(または略して輝度)成分Yは、輝度または階調強度(例えば、グレースケールピクチャのように)を表し、2つのクロミナンス(または略してクロマ)成分CbおよびCrは、色度または色情報成分を表す。したがって、YCbCrフォーマットのピクチャは、輝度サンプル値(Y)の輝度のサンプルアレイと、クロミナンス値(CbおよびCr)の2つのクロミナンスのサンプルアレイとを含む。RGBフォーマットのピクチャは、YCbCrフォーマットに変換(convert)または変換(transform)することができ、その逆も可能であり、このプロセスは色変換(color transformation)または色変換(color conversion)としても知られている。ピクチャがモノクロである場合、ピクチャは輝度サンプルアレイのみを含むことができる。したがって、ピクチャは、例えば、モノクロ形式の輝度サンプルのアレイ、または4:2:0、4:2:2、および4:4:4の色の形式における輝度サンプルのアレイ、およびクロマサンプルの2つの対応するアレイであってもよい。
【0092】
ビデオエンコーダ20の実施形態は、ピクチャ17を、複数の(典型的には、重複しない)ピクチャブロック203へ区分するように構成されたピクチャ区分ユニット(図2には示されていない)を備え得る。これらのブロックはまた、ルートブロック、マクロブロック(H.264/AVC)または符号化ツリーブロック(CTB)または符号化ツリーユニット(CTU)(H.265/HEVCおよびVVC)とも称され得る。ピクチャ区分ユニットは、映像シーケンスのすべてのピクチャおよびブロックサイズを定める対応するグリッドに同じブロックサイズを使用するように、またはピクチャ、またはピクチャのサブセットまたはグループ間でブロックサイズを変更し、各ピクチャを対応するブロックに区分するように構成され得る。
【0093】
さらなる実施形態では、ビデオエンコーダは、ピクチャ17のブロック203、例えばピクチャ17を形成する1つ、いくつか、またはすべてのブロックを直接受信するように構成され得る。ピクチャブロック203は、現在のピクチャブロックまたは符号化されるべきピクチャブロックとも称され得る。
【0094】
ピクチャ17と同様に、ピクチャブロック203はやはり、ピクチャ17よりも小さい寸法であるが、強度の値(サンプル値)によるサンプルの二次元アレイまたは行列であるか、またはそれとみなすことができる。換言すれば、ブロック203は、例えば、適用される色フォーマットに応じて、1つのサンプルアレイ(例えば、モノクロピクチャ17の場合は輝度アレイ、カラーピクチャの場合は輝度またはクロマアレイ)または3つのサンプルアレイ(例えば、カラーピクチャ17の場合、輝度および2つのクロマアレイ)または任意の他の数および/または種類のアレイを備えてもよい。ブロック203の水平方向および垂直方向(または軸)のサンプル数は、ブロック203のサイズを定める。したがって、ブロックは、例えば、サンプルのM×N(M列×N行)アレイ、または変換係数のM×Nアレイであり得る。
【0095】
図2に示すようなビデオエンコーダ20の実施形態は、ピクチャ17をブロック毎にエンコードするように構成され得、例えば、エンコードおよび予測は、ブロック203毎に実行される。
【0096】
図2に示されたビデオエンコーダ20の実施形態は、スライス(映像スライスとも呼ばれる)を使用することによってピクチャを区分および/またはエンコードするようにさらに構成されてもよく、ピクチャは、1つまたは複数のスライスを使用して区分またはエンコードされてもよく(通常は重複しない)、各スライスは、1つまたは複数のブロック(例えばCTU)または1つまたは複数のブロックグループ(例えば、タイル(H.265/HEVCおよびVVC)またはレンガ(VVC))を含んでもよい。
【0097】
図2に示すようなビデオエンコーダ20の実施形態は、スライス/タイルグループ(映像タイルグループとも呼ばれる)および/またはタイル(映像タイルとも呼ばれる)を使用することによってピクチャを区分および/またはエンコードするようにさらに構成することができ、ピクチャは、1つまたは複数のスライス/タイルグループ(通常は重複しない)を使用して区分またはエンコードすることができ、各スライス/タイルグループは、例えば1つまたは複数のブロック(例えばCTU)または1つまたは複数のタイルを含むことができ、各タイルは、例えば長方形の形状であってもよく、1つまたは複数のブロック(例えばCTU)、例えば完全なブロックまたは部分的なブロックを含むことができる。
【0098】
残差計算
残差計算ユニット204は、例えば、サンプル毎に(画素毎に)ピクチャブロック203のサンプル値から予測ブロック265のサンプル値を減算することによって、ピクチャブロック203および予測ブロック265(予測ブロック265に関するさらなる詳細は後に提供される)に基づいて残差ブロック205(残差205とも呼ばれる)を計算し、サンプルドメイン内の残差ブロック205を取得するように構成され得る。
【0099】
変換
変換処理ユニット206は、変換ドメイン内の変換係数207を取得するために、残差ブロック205のサンプル値に変換、例えば離散コサイン変換(DCT)または離散サイン変換(DST)を適用するように構成され得る。変換係数207は、変換残差係数とも称され、変換ドメイン内の残差ブロック205を表すことができる。
【0100】
変換処理ユニット206は、H.265/HEVCに指定された変換など、DCT/DSTの整数近似を適用するように構成されてもよい。直交DCT変換と比較して、そのような整数近似は、通常、特定の係数でスケーリングされる。順変換および逆変換によって処理される残差ブロックのノルムを保存するために、追加のスケーリング係数が変換プロセスの一部として適用される。スケーリング係数は、典型的には、シフト演算のための2の累乗であるスケーリング係数、変換係数のビット深度、精度と実装コストとの間のトレードオフなどのような特定の制約に基づいて選択される。特定のスケーリング係数は、例えば、逆変換(および、例えばビデオデコーダ30における逆変換処理ユニット312による、対応する逆変換)のために、例えば、逆変換処理ユニット212によって指定され、エンコーダ20の変換処理ユニット206によるなどの順方向の変換のための対応するスケーリング係数は、適宜指定されてもよい。
【0101】
ビデオエンコーダ20(それぞれの変換処理ユニット206)の実施形態は、変換パラメータ、例えば、変換のタイプを、例えば、直接的に、または、エントロピーエンコードユニット270を介してエンコードまたは圧縮されて出力するように構成され得、これによって、例えば、ビデオデコーダ30は、変換パラメータを受信し、デコードのために使用し得る。
【0102】
量子化
量子化ユニット208は、例えばスカラ量子化またはベクトル量子化を適用することによって、変換係数207を量子化して量子化係数209を得るように構成され得る。量子化係数209は、量子化変換係数209または量子化残差係数209とも称され得る。
【0103】
量子化プロセスは、変換係数207の一部またはすべてに関連するビット深度を低減することができる。例えば、量子化の間にnビット変換係数をmビット変換係数に切り捨てることができ、nはmより大きい。量子化の程度は、量子化パラメータ(QP)を調整することによって変更することができる。例えば、スカラ量子化の場合、より細かいまたはより粗い量子化を達成するために異なるスケーリングが適用されてもよい。より小さい量子化ステップサイズはより細かい量子化に対応し、より大きい量子化ステップサイズはより粗い量子化に対応する。適用可能な量子化ステップサイズは、量子化パラメータ(QP)で示されてもよい。量子化パラメータは、例えば、適用可能な量子化ステップサイズの所定のセットに対する指標であり得る。例えば、小さい量子化パラメータは、細かい量子化(小さい量子化ステップサイズ)に対応し得、大きい量子化パラメータは、粗い量子化(大きい量子化ステップサイズ)に対応し得る、またはその逆であり得る。量子化は、量子化ステップサイズによる除算を含むことができ、例えば逆量子化ユニット210による対応するおよび/または逆・逆量子化は、量子化ステップサイズによる乗算を含むことができる。いくつかの規格、例えばHEVCによる実施形態は、量子化パラメータを使用して量子化ステップサイズを決定するように構成されてもよい。一般に、量子化ステップサイズは、除算を含む式の固定小数点近似を使用して量子化パラメータに基づいて計算することができる。量子化ステップサイズおよび量子化パラメータの式の固定小数点近似で使用されるスケーリングのために変更される可能性がある残差ブロックのノルムを復元するために、量子化および逆量子化のため追加のスケーリング係数を導入することができる。1つの例示的な実装形態では、逆変換および逆量子化のスケーリングを組み合わせることができる。あるいは、カスタマイズされた量子化テーブルが使用され、例えばビットストリームでエンコーダからデコーダにシグナリングされてもよい。量子化は非可逆動作であり、量子化ステップサイズが大きくなるにつれて損失が増加する。
【0104】
ビデオエンコーダ20(それぞれ量子化ユニット208)の実施形態は、量子化パラメータ(QP)を、例えば、直接、またはエントロピーエンコードユニット270を介してエンコードして出力するように構成することができ、その結果、例えば、ビデオデコーダ30は、デコードのために量子化パラメータを受信および適用することができる。
【0105】
逆量子化
逆量子化ユニット210は、例えば、量子化ユニット208と同じ量子化ステップサイズに基づいて、またはそれを使用して量子化ユニット208によって適用された量子化方式の逆を適用することによって、量子化係数に量子化ユニット208の逆量子化を適用して、逆量子化係数211を得るように構成される。逆量子化係数211は、逆量子化残差係数211とも称され、典型的には量子化による損失のために変換係数と同一ではないが、変換係数207に対応する。
【0106】
逆変換
逆変換処理ユニット212は、サンプルドメイン内の再構成された残差ブロック213(または対応する逆量子化係数213)を取得するために、変換処理ユニット206によって適用された変換の逆変換、例えば、逆離散コサイン変換(DCT)または逆離散サイン変換(DST)または他の逆変換を適用するように構成される。再構成された残差ブロック213は、変換ブロック213とも称され得る。
【0107】
再構成
再構成ユニット214(例えば加算器214)は、例えば、再構成された残差ブロック213のサンプル値および予測ブロック265のサンプル値をサンプル毎に加算することによって、サンプルドメイン内の再構成ブロック215を取得するために、変換ブロック213(すなわち、再構成された残差ブロック213)を予測ブロック265に加算するように構成される。
【0108】
フィルタリング
ループフィルタユニット220(または略して「ループフィルタ」220)は、再構成されたブロック215をフィルタリングしてフィルタリングされたブロック221を取得するように、または一般に、再構成されたサンプルをフィルタリングしてフィルタリングされたサンプル値を取得するように構成される。ループフィルタユニットは、例えば、画素の移行を円滑にするか、または別様に映像の質を改善するように構成される。ループフィルタユニット220は、1つまたは複数のループフィルタ、例えばデブロッキングフィルタ、サンプル適応オフセット(SAO)フィルタ、または1つまたは複数の他のフィルタ、例えば適応ループフィルタ(ALF)、ノイズ抑制フィルタ(NSF)、またはそれらの任意の組合せを含むことができる。一例では、ループフィルタユニット220は、デブロッキングフィルタ、SAOフィルタ、およびALFフィルタを含むことができる。フィルタ処理の順序は、デブロッキングフィルタ、SAO、およびALFであってもよい。別の例では、クロマスケーリングを用いた輝度マッピング(LMCS)(すなわち、適応ループ内リシェーパ)と呼ばれるプロセスが追加される。この処理は、デブロッキングの前に行われる。別の例では、デブロッキングフィルタ処理は、内部副次的ブロックエッジ、例えばアフィン副次的ブロックエッジ、ATMVP副次的ブロックエッジ、副次的ブロック変換(SBT)エッジ、および副次的区分内(ISP)エッジにも適用され得る。図2では、ループフィルタユニット220はインループフィルタとして示されているが、他の構成では、ループフィルタユニット220はポストループフィルタとして実装されてもよい。フィルタリングされたブロック221は、フィルタリングされた再構成ブロック221とも称され得る。
【0109】
ビデオエンコーダ20の実施形態(それぞれ、ループフィルタユニット220)は、ループ・フィルタ・パラメータ(SAOフィルタパラメータまたはALFフィルタパラメータまたはLMCSパラメータなど)を、例えば、直接またはエントロピーエンコードユニット270を介してエンコードして出力するように構成されてもよく、その結果、例えば、デコーダ30は、デコードのために同じループ・フィルタ・パラメータまたはそれぞれのループフィルタを受信し適用することができる。
【0110】
デコードピクチャバッファ
デコードピクチャバッファ(DPB)230は、ビデオエンコーダ20で映像データをエンコードするための参照ピクチャ、一般的には参照ピクチャデータを格納するメモリであり得る。DPB230は、シンクロナスDRAM(SDRAM)、磁気抵抗RAM(MRAM)、抵抗RAM(RRAM(登録商標))、または他のタイプのメモリデバイスを含むダイナミックランダムアクセスメモリ(DRAM)などの様々なメモリデバイスのいずれかによって形成することができる。デコードピクチャバッファ(DPB)230は、1つまたは複数のフィルタリングされたブロック221を格納するように構成することができる。デコードピクチャバッファ230は、同じ現在のピクチャまたは異なるピクチャ、例えば以前に再構成されたピクチャの、他の以前にフィルタリングされたブロック、例えば以前に再構成およびフィルタリングされたブロック221を格納するようにさらに構成され得、例えばインター予測のために、完全な以前に再構成された、すなわちデコードされたピクチャ(および対応する参照ブロックおよびサンプル)および/または部分的に再構成された現在のピクチャ(および対応する参照ブロックおよびサンプル)を提供し得る。デコードピクチャバッファ(DPB)230はまた、例えば再構成されたブロック215がループフィルタユニット220によってフィルタリングされていない場合、1つまたは複数のフィルタリングされていない再構成されたブロック215、または一般にフィルタリングされていない再構成されたサンプル、または再構成されたブロックもしくはサンプルの任意の他のさらなる処理されたバージョンを格納するように構成され得る。
【0111】
モード選択(区分および予測)
モード選択ユニット260は、区分ユニット262と、インター予測ユニット244と、イントラ予測ユニット254とを備え、元のピクチャデータ、例えば元のブロック203(現在のピクチャ17の現在のブロック203)、再構成されたピクチャデータ、例えばフィルタリングされたおよび/またはフィルタリングされていない同じ(現在の)ピクチャの再構成されたサンプルまたはブロック、および/または、以前にデコードされたピクチャのうちのの1つまたは複数から、例えばデコードピクチャバッファ230または他のバッファ(例えば、図示されていないラインバッファ)からの、再構成されたピクチャデータを受信または取得するように構成される。再構成されたピクチャデータは、予測ブロック265または予測器265を取得するために、予測、例えばインター予測またはイントラ予測のための参照ピクチャデータとして使用される。
【0112】
モード選択ユニット260は、現在のブロック予測モード(区分なしを含む)および予測モード(例えば、イントラまたはインター予測モード)のための区分を決定または選択し、残差ブロック205の計算および再構成ブロック215の再構成に使用される対応する予測ブロック265を生成するように構成され得る。
【0113】
モード選択ユニット260の実施形態は、最良一致または言い換えれば最小残差(最小残差は伝送または格納のためのより良好な圧縮を意味する)を提供する、または最小シグナリングオーバーヘッド(最小シグナリングオーバーヘッドは伝送または格納のためのより良好な圧縮を意味する)を提供する、または両方を考慮するまたはバランスをとる、区分および予測モード(例えば、モード選択ユニット260によってサポートされているか、または利用可能なものから)を選択するように構成され得る。モード選択ユニット260は、レート歪み最適化(RDO)に基づいて区分および予測モードを決定する、すなわち、最小レート歪みを提供する予測モードを選択するように構成され得る。この文脈における「最良の」、「最小の」、「最適な」などの用語は、必ずしも全体的な「最良の」、「最小の」、「最適な」などを指すものではなく、「準最適な選択」を潜在的にもたらすが複雑さおよび処理時間を低減する閾値または他の制約を超えるか下回る値のような、終了または選択基準の達成を指すこともできる。
【0114】
言い換えれば、区分ユニット262は、映像シーケンスからのピクチャを符号化ツリーユニット(CTU)のシーケンスに区分するように構成されてもよく、CTU203は、例えば、四分木区分(QT)、二分木区分(BT)もしくは三分木区分(TT)またはそれらの任意の組合せを使用して反復的に、より小さいブロック区分または副次的ブロック(再びブロックを形成する)にさらに区分され、例えば、ブロック区分または副次的ブロックの各々について予測を実行するように構成されてもよく、モード選択は、区分ブロック203のツリー構造の選択を含み、予測モードは、ブロック区分または副次的ブロックの各々に適用される。
【0115】
以下では、例示的なビデオエンコーダ20によって実行される区分化(例えば、区分ユニット262によって)および(インター予測ユニット244およびイントラ予測ユニット254による)予測処理についてより詳細に説明する。
【0116】
区分
区分ユニット262は、映像シーケンスからのピクチャを符号化ツリーユニット(CTU)のシーケンスに区分するように構成され得、区分ユニット262は、符号化ツリーユニット(CTU)203をより小さい区分、例えば、正方形または長方形サイズのより小さいブロックに区分(または分割)し得る。3つのサンプルアレイを有するピクチャの場合、CTUは、2つの対応するクロマサンプルのブロックと共に、N×N個の輝度サンプルのブロックからなる。CTU内の輝度ブロックの最大許容サイズは、開発中の汎用映像符号化(VVC)では128×128に指定されているが、将来的には128×128ではなく、例えば256×256の値に指定することができる。ピクチャのCTUは、スライス/タイルグループ、タイルまたはレンガとしてクラスタ化/グループ化され得る。タイルはピクチャの長方形の領域を覆い、タイルは1つまたは複数のレンガに分割することができる。レンガは、タイル内のいくつかのCTU行からなる。複数のレンガに区分されていないタイルは、レンガと呼ぶことができる。しかしながら、レンガはタイルの真のサブセットであり、タイルとは呼ばれない。VVCでサポートされるタイルグループの2つのモード、すなわちラスタースキャンスライス/タイルグループモードおよび長方形スライスモードがある。ラスタースキャンタイルグループモードでは、スライス/タイルグループは、ピクチャのタイルラスタースキャンにおけるタイルのシーケンスを含む。長方形スライスモードでは、スライスは、ピクチャの長方形領域を集合的に形成する複数のピクチャのレンガを含む。長方形スライス内のレンガは、スライスのレンガラスタースキャンの順序である。これらのより小さいブロック(副次的ブロックとも呼ばれ得る)は、さらにより小さい区分に区分され得る。これは、ツリー区分または階層ツリー区分とも呼ばれ、例えば、ルートツリーレベル0(階層レベル0、深さ0)のルートブロックは、再帰的に区分され、例えば、次の下位ツリーレベルの2つ以上のブロック、例えばツリーレベル1(階層レベル1、深さ1)のノードに区分され得、これらのブロックは、区分が終了するまで、例えば、終了基準が満たされる、例えば、最大のツリーの深さまたは最小ブロックサイズに達するために、次の下位レベル、例えばツリーレベル2(階層レベル2、深さ2)の2つ以上のブロックに再び区分され得る。さらに区分されないブロックは、ツリーのリーフブロックまたはリーフノードとも呼ばれる。2つの区分に区分することを用いたツリーは、二分木(BT)と呼ばれ、3つの区分に区分することを用いたツリーは、三分木(TT)と呼ばれ、4つの区分に区分することを用いたツリーは、四分木(QT)と呼ばれる。
【0117】
例えば、符号化ツリーユニット(CTU)は、輝度サンプルのCTB、3つのサンプルアレイを有するピクチャのクロマサンプルの2つの対応するCTB、またはモノクロピクチャまたはサンプルを符号化するために使用される3つの別々のカラープレーンおよびシンタックス構造を使用して符号化されるピクチャのサンプルのCTBであってもよいし、それらを含んでもよい。これに対応して、符号化ツリーブロック(CTB)は、成分のCTBへの分離が区分することであるように、Nの何らかの値に対するサンプルのN×Nのブロックであり得る。符号化ユニット(CU)は、輝度サンプルの符号化ブロック、3つのサンプルアレイを有するピクチャのクロマサンプルの2つの対応する符号化ブロック、またはモノクロピクチャまたはサンプルを符号化するために使用される3つの別々のカラープレーンおよびシンタックス構造を使用して符号化されるピクチャのサンプルの符号化ブロックであってもよいし、それらを含んでもよい。これに対応して、符号化ブロック(CB)は、CTBの符号化ブロックへの分割が区分であるように、MおよびNの何らかの値に対するサンプルのM×Nブロックであり得る。
【0118】
実施形態では、例えば、HEVCによれば、符号化ツリーユニット(CTU)は、符号化ツリーとして示される四分木構造を使用することによってCUに分割されてもよい。ピクチャ間(時間的)またはピクチャ内(空間的)予測を使用してピクチャ領域を符号化するかどうかの決定は、リーフCUレベルで行われる。各リーフCUは、PU分割タイプに従って、1つ、2つ、または4つのPUにさらに分割することができる。1つのPU内では、同じ予測処理が適用され、PU単位で関連情報がデコーダに送信される。PU分割タイプに基づいて予測プロセスを適用することによって残差ブロックを取得した後、リーフCUは、CUの符号化ツリーと同様の別の四分木構造に従って変換ユニット(TU)に区分することができる。
【0119】
実施形態では、例えば、多用途ビデオコーディング(VVC)と呼ばれる、現在開発中の最新の映像符号化規格に従って、例えば符号化ツリーユニットを区分するために使用される二値および三値区分セグメント化構造を使用する結合四分木入れ子マルチタイプツリー。符号化ツリーユニット内の符号化ツリー構造では、CUは正方形または長方形のいずれかの形状を有することができる。例えば、符号化ツリーユニット(CTU)は、最初に四本木によって区分される。次いで、四本木リーフノードは、マルチタイプツリー構造によってさらに区分することができる。マルチタイプのツリー構造には、垂直二値分割(SPLIT_BT_VER)、水平二値分割(SPLIT_BT_HOR)、垂直三値分割(SPLIT_TT_VER)、および水平三値分割(SPLIT_TT_HOR)の4つの分割タイプがある。マルチタイプのツリーリーフノードは、コーディングユニット(CU)と呼ばれ、CUが最大変換長に対して大きすぎない限り、このセグメント化は、いずれのさらなる区分もなしで予測および変換処理に使用される。これは、ほとんどの場合、CU、PU、およびTUが、ネストされたマルチタイプツリー符号化ブロック構造を有する四分木において同じブロックサイズを有することを意味する。例外は、最大サポート変換長がCUの色成分の幅または高さよりも小さい場合に発生する。VVCは、ネストされたマルチタイプのツリー符号化ツリー構造を有する四分木において区分分割情報の一意のシグナリング機構を発展させる。シグナリング機構では、符号化ツリーユニット(CTU)は、四本木のルートとして扱われ、最初に四本木構造によって区分される。各四本木リーフノード(それを可能にするのに十分に大きい場合)は、次いで、マルチタイプツリー構造によってさらに区分される。マルチタイプツリー構造では、第1のフラグ(mtt_split_cu_flag)がシグナリングされて、ノードがさらに区分されているかどうかを示す。ノードがさらに区分されるときに、分割方向を示すために第2のフラグ(mtt_split_cu_vertical_flag)がシグナリングされ、次いで分割が二値分割であるか三値分割であるかを示すために第3のフラグ(mtt_split_cu_binary_flag)がシグナリングされる。mtt_split_cu_vertical_flagおよびmtt_split_cu_binary_flagの値に基づいて、CUのマルチタイプツリースリッティングモード(MttSplitMode)は、所定の規則またはテーブルに基づいてデコーダによって導出することができる。特定の設計、例えばVVCハードウェアデコーダにおける64×64の輝度ブロックおよび32×32のクロマパイプライン設計では、図6に示すように、輝度コーディングブロックの幅または高さのいずれかが64より大きい場合、TT分割は禁止されることに留意されたい。クロマ符号化ブロックの幅または高さのいずれかが32より大きい場合、TT分割はまた禁止される。パイプライン設計は、ピクチャを、ピクチャ内の重複しないユニットとして定められる仮想パイプラインデータユニット(VPDU)に分割する。ハードウェアデコーダでは、連続するVPDUが複数のパイプラインステージによって同時に処理される。VPDUサイズは、ほとんどのパイプラインステージでバッファサイズにほぼ比例するため、VPDUサイズを小さく保つことが重要である。ほとんどのハードウェアデコーダでは、VPDUサイズを最大変換ブロック(TB)サイズに設定することができる。しかしながら、VVCでは、三値ツリー(TT)および二値ツリー(BT)区分は、VPDUサイズの増加をもたらし得る。
【0120】
加えて、ツリーノードブロックの一部が下または右のピクチャ境界を超えるとき、すべての符号化されたCUのすべてのサンプルがピクチャ境界内に位置するまで、ツリーノードブロックは分割されなければならないことに留意されたい。
【0121】
例として、イントラ副次的区分(ISP)ツールは、輝度イントラ予測ブロックをブロックサイズに応じて垂直または水平に2つまたは4つの副次的区分に分割することができる。
【0122】
一例では、ビデオエンコーダ20のモード選択ユニット260は、本明細書に記載された区分技術の任意の組合せを実行するように構成され得る。
【0123】
上述したように、ビデオエンコーダ20は、(例えば、予め決定される)予測モードのセットから最良または最適な予測モードを決定または選択するように構成される。予測モードのセットは、例えば、イントラ予測モードおよび/またはインター予測モードを備え得る。
【0124】
イントラ予測
イントラ予測モードのセットは、35個の異なるイントラ予測モード、例えばDC(または平均)モードおよび平面モードのような無指向性モード、または例えばHEVCで定められるような指向性モードを備えてもよく、または67個の異なるイントラ予測モード、例えばDC(または平均)モードおよび平面モードのような無指向性モード、または例えばVVCで定められるような指向性モードを備えてもよい。例として、いくつかの従来の角度イントラ予測モードは、例えばVVCで定められるように、非正方形ブロックの広角イントラ予測モードで適応的に置き換えられる。別の例として、DC予測のための分割演算を回避するために、長辺のみが非正方形ブロックの平均を計算するために使用される。さらに、平面モードのイントラ予測の結果は、位置依存イントラ予測合成(PDPC)法によってさらに修正されてもよい。
【0125】
イントラ予測ユニット254は、イントラ予測モードのセットのイントラ予測モードに従って、イントラ予測ブロック265を生成するために、同じ現在のピクチャの近隣ブロックの再構成されたサンプルを使用するように構成される。
【0126】
イントラ予測ユニット254(または一般にモード選択ユニット260)は、例えば、ビデオデコーダ30が予測パラメータを受信してデコードに使用することができるように、エンコードされたピクチャデータ21に含めるためのシンタックス要素266の形態でイントラ予測パラメータ(またはブロックに対して選択されたイントラ予測モードを示す一般的な情報)をエントロピーエンコードユニット270に出力するようにさらに構成される。
【0127】
インター予測
インター予測モードのセット(または可能なインター予測モード)は、利用可能な参照ピクチャ(すなわち、例えばDBP230に格納された、以前の少なくとも部分的にデコードされたピクチャ)、および他のインター予測パラメータ、例えば、参照ピクチャ全体または参照ピクチャの一部のみ、例えば、現在のブロックの領域の周りの探索ウィンドウ領域が、最良一致の参照ブロックを探索するために使用されるかどうか、および/または、例えば、半画素、1/4画素および/または1/16画素の補間などの画素の補間が適用されるかどうかに依存する。
【0128】
上記の予測モードに加えて、スキップモード、ダイレクトモード、および/または他のインター予測モードが適用されてもよい。
【0129】
例えば、拡張マージ予測では、そのようなモードのマージ候補リストは、以下の5つのタイプの候補を順に含むことによって構築される、すなわち空間的隣接CUからの空間MVP、コロケートされたCUからの時間MVP、FIFOテーブルからの履歴ベースのMVP、ペアワイズ平均MVP、およびゼロMVである。さらに、マージモードのMVの精度を高めるために、バイラテラルマッチングベースのデコーダ側動きベクトル改善(DMVR)を適用することができる。動きベクトルの差異があるマージモードに由来する、MVD(MMVD)とのマージモード。MMVDフラグは、スキップフラグおよびマージフラグを送信した直後にシグナリングされ、MMVDモードがCUに使用されるかどうかを指定する。また、CUレベルの適応的な動きベクトル分解(AMVR)方式を適用してもよい。AMVRは、CUのMVDを異なる精度で符号化することを可能にする。現在のCUの予測モードに応じて、現在のCUのMVDを適応的に選択することができる。CUがマージモードで符号化される場合、結合されたインター/イントラ予測(CIIP)モードが、現在のCUに適用され得る。CIIP予測を得るために、インター予測信号およびイントラ予測信号の加重平均が実行される。アフィン動き補償予測では、ブロックのアフィン動き場は、2つの制御点(4パラメータ)または3つの制御点の動きベクトル(6パラメータ)の動きの情報によって記述される。HEVCにおける時間動きベクトル予測(TMVP)と同様であるが、現在のCU内のサブCUの動きベクトルを予測する、副次的ブロックベースの時間動きベクトル予測(SbTMVP)。以前はBIOと呼ばれていた双方向オプティカルフロー(BDOF)は、特に乗算の数および乗算器のサイズの点で、はるかに少ない計算しか必要としないより単純なバージョンである。このようなモードでの、三角区分モードCUは、対角分割またはアンチ対角分割のいずれかを使用して、2つの三角形の区分に均等に区分される。さらに、双予測モードは、2つの予測信号の加重平均を可能にするために単純な平均を超えて拡張される。
【0130】
インター予測ユニット244は、動き推定(ME)ユニットおよび動き補償(MC)ユニット(共に図2に示さず)を含んでもよい。動き推定ユニットは、動きの推定のために、ピクチャブロック203(現在のピクチャ17の現在のピクチャブロック203)およびデコードされたピクチャ231、または少なくとも1つまたは複数の以前に再構成されたブロック、例えば、1つまたは複数の他の/異なる以前にデコードされたピクチャ231の再構成されたブロックを受信または取得するように構成され得る。例えば、映像シーケンスは、現在のピクチャおよび以前にデコードされたピクチャ231を含むことができ、または言い換えれば、現在のピクチャおよび以前にデコードされたピクチャ231は、映像シーケンスを形成するピクチャのシーケンスの一部であるか、またはそのシーケンスを形成することができる。
【0131】
エンコーダ20は、例えば、複数の他のピクチャの同じまたは異なるピクチャの複数の参照ブロックから、参照ブロックを選択し、参照ピクチャ(または参照ピクチャインデックス)および/または参照ブロックの位置(xy座標)と現在のブロックの位置との間のオフセット(空間オフセット)を、インター予測パラメータとして、動き推定ユニットに提供するように構成され得る。このオフセットは、動きベクトル(MV)とも呼ばれる。
【0132】
動き補償ユニットは、インター予測パラメータを取得、例えば受信し、インター予測パラメータに基づいて、またはインター予測パラメータを使用してインター予測を実行して、インター予測ブロック265を取得するように構成される。動き補償ユニットによって実行される動きの補償は、動きの推定によって決定された動き/ブロックベクトルに基づいて予測ブロックをフェッチまたは生成することを含んでもよく、場合によっては副次的な画素の精度への補間を実行する。補間フィルタリングは、既知の画素サンプルから追加の画素サンプルを生成することができ、したがって、ピクチャブロックを符号化するために使用され得る候補予測ブロックの数を増加させる潜在可能性がある。現在のピクチャブロックのPUの動きベクトルを受信すると、動き補償ユニットは、参照ピクチャリストのうちの1つにおいて動きベクトルが指し示す予測ブロックを見つけることができる。
【0133】
動き補償ユニットはまた、映像スライスのピクチャブロックをデコードする際にビデオデコーダ30によって使用されるブロックおよび映像スライスに関連するシンタックス要素を生成することができる。さらに、またはスライスおよびそれぞれのシンタックス要素の代替として、タイルグループおよび/またはタイルおよびそれぞれのシンタックス要素を、生成または使用することができる。
【0134】
エントロピー符号化
エントロピーエンコードユニット270は、例えば、ビデオデコーダ30がパラメータを受信してデコードに使用することができるように、例えばエンコードビットストリーム21の形態で出力272を介して出力することができるエンコードされたピクチャデータ21を取得するために、量子化係数209、インター予測パラメータ、イントラ予測パラメータ、ループ・フィルタ・パラメータ、および/または他のシンタックス要素に対して、例えば、エントロピーエンコードアルゴリズムまたはスキーム(例えば、可変長符号化(VLC)方式、コンテキスト適応型VLC方式(CAVLC)、算術符号化方式、二値化、コンテキスト適応型バイナリ算術符号化(CABAC)、シンタックスベースのコンテキスト適応型バイナリ算術符号化(SBAC)、確率区間区分エントロピー(PIPE)符号化、または別のエントロピーエンコード方法または技法)またはバイパス(圧縮なし)を適用するように構成される。エンコードビットストリーム21は、ビデオデコーダ30に送信されてもよいし、またはビデオデコーダ30による後の送信または検索のためにメモリに格納されてもよい。
【0135】
ビデオエンコーダ20の他の構造的変形例を使用して、映像ストリームをエンコードすることができる。例えば、非変換ベースのエンコーダ20は、特定のブロックまたはフレームに対して変換処理ユニット206なしで残差信号を直接量子化することができる。別の実施態様では、エンコーダ20は、量子化ユニット208および逆量子化ユニット210を単一のユニットに組み合わせることができる。
【0136】
デコーダおよびデコード方法
図3は、本願の技術を実装するように構成されたビデオデコーダ30の例を示す。ビデオデコーダ30は、例えばエンコーダ20によってエンコードされた、エンコードされたピクチャデータ21(例えば、エンコードビットストリーム21)を受信して、デコードピクチャ331を取得するように構成される。エンコードされたピクチャデータまたはビットストリームは、エンコードされたピクチャデータをデコードするための情報、例えば、エンコードされた映像スライスのピクチャブロック(および/またはタイルグループまたはタイル)および関連するシンタックス要素を表すデータを含む。
【0137】
図3の例では、デコーダ30は、エントロピーデコードユニット304、逆量子化ユニット310、逆変換処理ユニット312、再構成ユニット314(例えば、加算器314)、ループフィルタ320、デコードピクチャバッファ(DBP)330、モード適用ユニット360、インター予測ユニット344、およびイントラ予測ユニット354を備える。インター予測ユニット344は、動き補償ユニットであってもよいし、動き補償ユニットを含んでもよい。ビデオデコーダ30は、いくつかの例では、図2からのビデオエンコーダ100に関して記載されたエンコードパスに対して一般に逆であるデコードパスを実行し得る。
【0138】
エンコーダ20について説明したように、逆量子化ユニット210、逆変換処理ユニット212、再構成ユニット214、ループフィルタ220、デコードピクチャバッファ(DPB)230、インター予測ユニット344、およびイントラ予測ユニット354は、ビデオエンコーダ20の「内蔵デコーダ」を構成するとも言及される。したがって、逆量子化ユニット310の機能は逆量子化ユニット110と同じであってもよく、逆変換処理ユニット312の機能は逆変換処理ユニット212と同じであってもよく、再構成ユニット314の機能は再構成ユニット214と同じであってもよく、ループフィルタ320の機能はループフィルタ220と同じであってもよく、デコードピクチャバッファ330の機能はデコードピクチャバッファ230と同じであってもよい。したがって、ビデオエンコーダ20のそれぞれのユニットおよび機能について提供された説明は、ビデオデコーダ30のそれぞれのユニットおよび機能に対応して適用される。
【0139】
エントロピーデコード
エントロピーデコードユニット304は、ビットストリーム21(または、一般に、エンコードされたピクチャデータ21)を解析し、例えば、エンコードされたピクチャデータ21に対するエントロピーデコードを実行して、例えば、量子化係数309、および/または、デコードされた符号化パラメータ(図3には示されていない)、例えば、インター予測パラメータ(例えば、参照ピクチャインデックスおよび動きベクトル)、イントラ予測パラメータ(例えば、イントラ予測モードまたはインデックス)、変換パラメータ、量子化パラメータ、ループ・フィルタ・パラメータ、および/または、その他のシンタックス要素のうちのいずれかまたはすべてを取得するように構成される。エントロピーデコードユニット304は、エンコーダ20のエントロピーエンコードユニット270に関して記載されたようなエンコードスキームに対応するデコードアルゴリズムまたはスキームを適用するように構成され得る。エントロピーデコードユニット304はさらに、インター予測パラメータ、イントラ予測パラメータ、および/または、その他のシンタックス要素を、モード適用ユニット360へ提供し、その他のパラメータを、デコーダ30のその他のユニットへ提供するように構成され得る。ビデオデコーダ30は、映像スライスレベルおよび/または映像ブロックレベルでシンタックス要素を受信することができる。さらに、またはスライスおよびそれぞれのシンタックス要素の代替として、タイルグループおよび/またはタイルおよびそれぞれのシンタックス要素を、受信および/または使用することができる。
【0140】
逆量子化
逆量子化ユニット310は、量子化パラメータ(QP)(または逆量子化に関連する一般的な情報)および量子化係数を、エンコードされたピクチャデータ21(例えば、エントロピーデコードユニット304によって、構文解析および/またはデコードすることによって)から受信し、量子化パラメータに基づいて、デコードされた量子化係数309に逆量子化を適用して、変換係数311とも呼ばれ得る逆量子化係数311を取得するように構成され得る。逆量子化プロセスは、適用されるべき量子化の程度、および同様に逆量子化の程度を決定するために、映像スライス(またはタイルまたはタイルグループ)内の各映像ブロックに対して、ビデオエンコーダ20によって決定された量子化パラメータを使用することを含むことができる。
【0141】
逆変換
逆変換処理ユニット312は、変換係数311とも呼ばれる逆量子化係数311を受信し、サンプルドメイン内の再構成された残差ブロック213を取得するために、逆量子化係数311に変換を適用するように構成され得る。再構成された残差ブロック313は、変換ブロック213とも称され得る。変換は、逆変換、例えば、逆DCT、逆DST、逆整数変換、または概念的に同様の逆変換プロセスであってもよい。逆変換処理ユニット312は、逆量子化係数311に適用されるべき変換を決定するために、(例えば、エントロピーデコードユニット304によって、構文解析および/またはデコードすることによって)エンコードされたピクチャデータ21から変換パラメータまたは対応する情報を受信するようにさらに構成され得る。
【0142】
再構成
再構成ユニット314(例えば加算器314)は、例えば、再構成された残差ブロック313のサンプル値および予測ブロック365のサンプル値を加算することによって、サンプルドメイン内の再構成ブロック315を取得するために、再構成された残差ブロック313を予測ブロック365に加算するように構成される。
【0143】
フィルタリング
ループフィルタユニット320(符号化ループ内または符号化ループ後のいずれか)は、例えば画素の移行を円滑にするために、または映像の質を改善するために、再構成されたブロック315をフィルタリングして、フィルタリングされたブロック321を取得するように構成される。ループフィルタユニット320は、1つまたは複数のループフィルタ、例えばデブロッキングフィルタ、サンプル適応オフセット(SAO)フィルタ、または1つまたは複数の他のフィルタ、例えば適応ループフィルタ(ALF)、ノイズ抑制フィルタ(NSF)、またはそれらの任意の組合せを含むことができる。一例では、ループフィルタユニット220は、デブロッキングフィルタ、SAOフィルタ、およびALFフィルタを含むことができる。フィルタ処理の順序は、デブロッキングフィルタ、SAO、およびALFであってもよい。別の例では、クロマスケーリングを用いた輝度マッピング(LMCS)(すなわち、適応ループ内リシェーパ)と呼ばれるプロセスが追加される。この処理は、デブロッキングの前に行われる。別の例では、デブロッキングフィルタ処理は、内部副次的ブロックエッジ、例えばアフィン副次的ブロックエッジ、ATMVP副次的ブロックエッジ、副次的ブロック変換(SBT)エッジ、および副次的区分内(ISP)エッジにも適用され得る。図3では、ループフィルタユニット320はインループフィルタとして示されているが、他の構成では、ループフィルタユニット320はポストループフィルタとして実装されてもよい。
【0144】
デコードピクチャバッファ
ピクチャのデコード映像ブロック321は、その後、デコードピクチャバッファ330に格納される。このバッファは、デコードピクチャ331を、他のピクチャのためのその後の動き補償および/またはそれぞれの表示を出力するための参照ピクチャとして格納する。
【0145】
デコーダ30は、ユーザへの提示または閲覧のために、例えば出力332を介してデコードピクチャ331を出力するように構成される。
【0146】
予測
インター予測ユニット344はインター予測ユニット244(特に動き補償ユニット)と同一であってもよく、イントラ予測ユニット354はインター予測ユニット254と機能的に同一であってもよく、区分および/または予測パラメータ、またはエンコードされたピクチャデータ21から受信したそれぞれの情報(例えば、エントロピーデコードユニット304によって、構文解析および/またはデコードすることによって)に基づいて分割または区分の決定および予測を行う。モード適用ユニット360は、予測ブロック365を取得するために、再構成されたピクチャ、ブロック、またはそれぞれのサンプル(フィルタリングされたまたはフィルタリングされていない)に基づいて、ブロック毎に予測(イントラまたはインター予測)を実行するように構成され得る。
【0147】
映像スライスがイントラ符号化(I)スライスとして符号化されるとき、モード適用ユニット360のイントラ予測ユニット354は、シグナリングされたイントラ予測モードおよび現在のピクチャの以前にデコードされたブロックからのデータに基づいて、現在の映像スライスのピクチャブロックに対する予測ブロック365を生成するように構成される。映像がインター符号化(すなわち、BまたはP)スライスとして符号化されるとき、モード適用ユニット360のインター予測ユニット344(例えば、動き補償ユニット)は、エントロピーデコードユニット304から受信した動きベクトルおよび他のシンタックス要素に基づいて、現在の映像スライスの映像ブロック用の予測ブロック365を生成するように構成される。インター予測の場合、予測ブロックは、参照ピクチャリストのうちの1つの中の参照ピクチャのうちの1つから生成され得る。ビデオデコーダ30は、DPB330に格納された参照ピクチャに基づくデフォルトの構築技術を用いて、参照フレームリスト、つまりリスト0およびリスト1を構築し得る。スライス(例えば、映像スライス)に加えて、またはその代わりに、タイルグループ(例えば映像タイルグループ)および/またはタイル(例えば、映像タイル)を使用する実施形態に対して、またはその実施形態によって、同じまたは類似のものを適用することができ、例えば、I、PまたはBのタイルグループおよび/またはタイルを使用して映像を符号化することができる。
【0148】
モード適用ユニット360は、動きベクトルまたは関連情報および他のシンタックス要素を解析することによって現在の映像スライスの映像ブロックの予測情報を決定するように構成され、予測情報を使用して、デコードされている現在の映像ブロックの予測ブロックを生成する。例えば、モード適用ユニット360は、受信したシンタックス要素のいくつかを使用して、映像スライスの映像ブロックを符号化するために使用される予測モード(例えば、イントラまたはインター予測)、インター予測スライスタイプ(例えば、Bスライス、Pスライス、またはGPBスライス)、スライスの参照ピクチャリストのうちの1つまたは複数の構成情報、スライスの各インターエンコード映像ブロックの動きベクトル、スライスの各インター符号化映像ブロックのインター予測状態、および現在の映像スライスの映像ブロックをデコードするための他の情報を決定する。スライス(例えば、映像スライス)に加えて、またはその代わりに、タイルグループ(例えば映像タイルグループ)および/またはタイル(例えば、映像タイル)を使用する実施形態に対して、またはその実施形態によって、同じまたは類似のものを適用することができ、例えば、I、PまたはBのタイルグループおよび/またはタイルを使用して、映像を符号化することができる。
【0149】
図3に示されたビデオデコーダ30の実施形態は、スライス(映像スライスとも呼ばれる)を使用することによってピクチャを区分および/またはデコードするように構成されてもよく、ピクチャは、1つまたは複数のスライスを使用して区分またはデコードされてもよく(通常は重複しない)、各スライスは、1つまたは複数のブロック(例えばCTU)または1つまたは複数のブロックグループ(例えば、タイル(H.265/HEVCおよびVVC)またはレンガ(VVC))を含んでもよい。
【0150】
図3に示すようなビデオデコーダ30の実施形態は、スライス/タイルグループ(映像タイルグループとも呼ばれる)および/またはタイル(映像タイルとも呼ばれる)を使用することによってピクチャを区分および/またはデコードするように構成することができ、ピクチャは、1つまたは複数のスライス/タイルグループ(通常は重複しない)を使用して区分またはデコードすることができ、各スライス/タイルグループは、例えば1つまたは複数のブロック(例えばCTU)または1つまたは複数のタイルを含むことができ、各タイルは、例えば長方形の形状であってもよく、1つまたは複数のブロック(例えばCTU)、例えば完全なブロックまたは部分的なブロックを含むことができる。
【0151】
ビデオデコーダ30のその他の変形例は、エンコードされたピクチャデータ21をデコードするために使用され得る。例えば、デコーダ30は、ループフィルタリングユニット320を介さずに、出力映像ストリームを生成することができる。例えば、非変換ベースのデコーダ30は、特定のブロックまたはフレームに対して逆変換処理ユニット312なしで残差信号を直接逆量子化することができる。別の実施態様では、ビデオデコーダ30は、逆量子化ユニット310および逆変換処理ユニット312を単一のユニットに組み合わせることができる。
【0152】
エンコーダ20およびデコーダ30では、現在のステップの処理結果がさらに処理され、次いで次のステップに出力され得ることを理解されたい。例えば、補間フィルタリング、動きベクトル導出、またはループフィルタリングの後、クリップまたはシフトなどのさらなる操作が、補間フィルタリング、動きベクトル導出またはループフィルタリングの処理の結果に対して実行されてもよい。
【0153】
現在のブロック(アフィンモードの制御点動きベクトル、アフィンモード、平面モード、ATMVPモードの副次的ブロック動きベクトル、時間動きベクトルなどを含むが、これらに限定されない)の導出された動きベクトルにさらなる操作を適用することができることに留意されたい。例えば、動きベクトルの値は、その表現ビットに従って所定の範囲に制約される。動きベクトルの表現ビットがbitDepthである場合、範囲は-2^(bitDepth-1)~2^(bitDepth-1)-1であり、「^」は累乗を意味する。例えば、bitDepthが16に等しく設定される場合、範囲は-32768~32767である。bitDepthが18に等しく設定される場合、範囲は-131072~131071である。例えば、導出された動きベクトル(例えば、1つの8×8ブロック内の4つの4×4の副次的ブロックのMV)の値は、4つの4×4の副次的ブロックMVの整数部分間の最大の差が、N画素以下、例えば1画素以下になるように制約される。ここでは、動きベクトルをbitDepthに従って制約する2つの方法が提供される。
【0154】
図4は、本開示の実施形態による映像符号化デバイス400の概略図である。映像符号化デバイス400は、本明細書に記載の開示された実施形態を実装するのに適している。実施形態では、映像符号化デバイス400は、図1Aのビデオデコーダ30などのデコーダ、または図1Aのビデオエンコーダ20などのエンコーダであってもよい。
【0155】
映像符号化デバイス400は、データを受信するための入口ポート410(または入力ポート410)および受信機ユニット(Rx)420、データを処理するためのプロセッサ、論理ユニット、または中央処理装置(CPU)430、データを送信するための送信機ユニット(Tx)440および出口ポート450(または出力ポート450)、およびデータを格納するためのメモリ460を含む。映像符号化デバイス400はまた、光信号または電気信号の出力または入力のために、入力ポート410、受信機ユニット420、送信機ユニット440、および出力ポート450に結合された光-電気(OE)コンポーネントおよび電気-光(EO)コンポーネントを備えてもよい。
【0156】
プロセッサ430は、ハードウェアおよびソフトウェアにより実装される。プロセッサ430は、1つまたは複数のCPUチップ、コア(例えば、マルチコアプロセッサとして)、FPGA、ASIC、DSPとして実装されてもよい。プロセッサ430は、入口ポート410、受信機ユニット420、送信機ユニット440、出口ポート450、およびメモリ460と通信する。プロセッサ430は、符号化モジュール470を備える。コーディングモジュール470は、上述の開示された実施形態を実装する。例えば、符号化モジュール470は、様々な符号化操作を実装、処理、準備、または提供する。したがって、符号化モジュール470を含むことは、映像符号化デバイス400の機能に実質的な改善を提供し、映像符号化デバイス400の異なる状態への変換をもたらす。あるいは、符号化モジュール470は、メモリ460に格納され、プロセッサ430によって実行される命令として実装される。
【0157】
メモリ460は、1つまたは複数のディスク、テープドライブ、およびソリッドステートドライブを含むことができ、オーバーフローデータ記憶装置として使用されて、そのようなプログラムが実行のために選択されたときにプログラムを格納し、プログラム実行中に読み取られる命令およびデータを格納することができる。メモリ460は、例えば、揮発性および/または不揮発性であってもよく、読み出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、三元コンテンツアドレス可能メモリ(TCAM)、および/またはスタティックランダムアクセスメモリ(SRAM)であってもよい。
【0158】
図5は、例示的な実施形態に従って、図1Aからのソースデバイス12および宛先デバイス14のいずれかまたは両方として使用され得る装置500の簡略的なブロック図である。
【0159】
装置500内のプロセッサ502は、中央処理装置とすることができる。あるいは、プロセッサ502は、現在存在する、または今後開発される、情報を操作または処理することができる任意の他のタイプのデバイス、または複数のデバイスとすることができる。開示された実装形態は、図示のように単一のプロセッサ、例えばプロセッサ502で実施することができるが、速度および効率における利点は、2つ以上のプロセッサを使用して達成することができる。
【0160】
実装形態では、装置500内のメモリ504は、読み出し専用メモリ(ROM)デバイスまたはランダムアクセスメモリ(RAM)デバイスとすることができる。任意の他の適切なタイプの記憶装置をメモリ504として使用することができる。メモリ504は、バス512を使用してプロセッサ502によってアクセスされるコードおよびデータ506を含むことができる。メモリ504は、オペレーティングシステム508およびアプリケーションプログラム510をさらに含むことができ、アプリケーションプログラム510は、プロセッサ502が本明細書に記載の方法を実行することを可能にする少なくとも1つのプログラムを含む。例えば、アプリケーションプログラム510は、アプリケーション1からNを含むことができ、アプリケーション1からNは、本明細書で説明される方法を実行する映像符号化アプリケーションをさらに含む。
【0161】
装置500はまた、ディスプレイ518などの1つまたは複数の出力デバイスを含むことができる。ディスプレイ518は、一例では、ディスプレイと、タッチ入力を感知するように動作可能なタッチセンサ式要素とを組み合わせたタッチ感知式ディスプレイであってもよい。ディスプレイ518は、バス512を介してプロセッサ502に結合することができる。
【0162】
ここでは単一のバスとして示されているが、装置500のバス512は複数のバスから構成することができる。さらに、二次記憶機構514は、装置500の他の構成要素に直接結合することができ、またはネットワークを介してアクセスすることができ、メモリカードなどの単一の統合ユニットまたは複数のメモリカードなどの複数のユニットを備えることができる。したがって、装置500は、多種多様な構成で実装することができる。
【0163】
アフィン動き補償予測
ITU-T H.265(HEVC)では、動き補償予測(MCP)には並進動きモデルのみが適用される。しかしながら、現実世界では、ズームイン/アウト、回転、遠近法の動き、および他の不規則な動きなど、多くの種類の動きがある。VTM6では、ブロックベースのアフィン変換動き補償予測が適用される。図6に示すように、ブロックのアフィン動き場では、2つの制御点(4パラメータ)または3つの制御点の動きベクトル(CPMV)(6パラメータ)の動きの情報によって記述される。
【0164】
サンプル位置(x,y)における動きベクトルの計算のための一般式は以下の通りである。
【数10】
(1-1)
【0165】
4パラメータのアフィン動きモデルの場合、サンプル位置(x,y)における動きベクトルは、以下のように導出される。
【数11】
(1-2)
【0166】
6パラメータアフィン動きモデルの場合、サンプル位置(x,y)における動きベクトルは、以下のように導出される。
【数12】
(1-3)
(mv0x,mv0y)は、左上コーナーの制御点の動きベクトルであり、(mv1x,mv1y)は、右上コーナーの制御点の動きベクトルであり、(mv2x,mv2y)は、左下コーナーの制御点の動きベクトルであり、Wはブロックの幅であり、Hはブロックの高さである。
【0167】
6パラメータのアフィン動きモデルを用いる場合について、
【数13】
(1-4)
【数14】
(1-5)
【数15】
(1-6)
【数16】
(1-7)
【0168】
4パラメータのアフィン動きモデルを用いる場合について
【数17】
(1-8)
【数18】
(1-9)
dVerX=-dHorY,(1-10)
dVerY=-dHorX.(1-11)
【0169】
並進動きインター予測に関しては、2つのアフィン動きインター予測モード、すなわちアフィンマージモードおよびアフィンAMVPモードもある。
【0170】
ブロックベースのアフィン変換予測
動き補償予測を単純化するために、ブロックベースのアフィン変換予測が適用される。各8×8の輝度副次的ブロックの動きベクトルを導出するために、図7に示すように、各副次的ブロックの中心サンプルの動きベクトルが上記の式に従って計算され、1/16の部分的な精度に丸められる。次に、導出された動きベクトルを用いて各副次的ブロックの予測を生成するために、動き補償補間フィルタが適用される。クロマ成分の副次的ブロックサイズは4×4に設定される。
【0171】
拡張バイリニア補間フィルタ
拡張バイリニア補間フィルタ(EIF)を使用したフィルタリングは、予測ブロックおよび副次的ブロックベースで使用することができる。フィルタリング手順は、輝度信号およびクロマ信号について同じである。フィルタリング手順は、以下のステップを含む。
E1.式(1-1)に従ってCPMVから画素ベースの動きベクトル場を導出する、
E2.部分的なオフセットのバイリニア補間を使用して、導出された動きベクトルに基づいて補間サンプルを取得する、
E3.8の正規化係数で固定-3タップのハイパスフィルタ[-1,10,-1]を使用して水平フィルタリング、次いで垂直フィルタリングを実行する。
【0172】
最初の2つのステップであるE1およびE2は、(W+2)×(H+2)領域に対して実行され、WおよびHは、対応する予測ブロックの幅および高さである。第3のステップE3の3タップフィルタを適用するために、各境界から1つの画素のマージンが追加される。元のアフィンブロックおよびEIFの中間ステップで使用される対応する(W+2)×(H+2)ブロックを図8に示す。
【0173】
メモリ帯域幅計算
メモリ帯域幅は、参照ブロック対現在のブロック領域の比として計算される。例えば、Tタップの補間フィルタを使用する8×8の双予測ブロックの場合、参照領域値はSrが2(8+T-1)(8+T-1)に等しく、ブロック領域Sbは8*8に等しい。したがって、メモリ帯域幅は
【数19】
である。ITU-T H.265、VVCおよびEVCで使用される8タップ離散コサイン変換補間フィルタ、DCTIFの場合、メモリ帯域幅は
【数20】
である。
【0174】
(EVCで使用される)最小副次的ブロックサイズ8×8の副次的ブロックアフィン動き補償予測は、ITU-T H.265と比較してメモリ帯域幅を増加させない。なぜなら、8×8の双予測ブロックは、メモリ帯域幅の計算に関してITU-T H.265にとって最悪のケースを表すからである。いくつかのアフィン動きモデルパラメータについてアフィンブロックのメモリ帯域幅の動きの補償のためにEIFを使用する場合、ITU-T H.265の最悪の場合より大きくなり得る。本開示の実施形態は、EIFのメモリ帯域幅がITU-T H.265(8×8双予測ブロック)のメモリ帯域幅の計算の最悪の場合よりも大きくないことを保証する動きモデル制約を提供する。さらに、任意の望ましいメモリ帯域幅の最悪の場合のアフィン動きモデル制約を得ることができる。
【0175】
実施形態1
使用EIFの場合のアフィンブロックのためのメモリアクセス消費量計算
サイズWxHのアフィンブロックの動き補償にEIFが用いられる場合、メモリアクセス消費量計算のために以下のステップが行われる。
【0176】
1.アフィンブロックの各コーナーサンプルの位置を導出する。
2.EIFのステップ3で使用されるブロックの各コーナーサンプルの位置を導出する(EIF中間ブロックとして示す)。
3.EIF中間ブロックの各コーナーサンプルの動きベクトルを導出する。
E4.参照ピクチャ内の変換されたブロックの位置を導出する。
E5.変換されたブロックのバウンディングボックスサイズを導出する。
E6.変換されたブロックのサイズおよびフィルタの長さに基づいてメモリアクセス消費量を得る(EIFはバイリニア補間を使用するので、フィルタの長さは2に等しい)。
【0177】
これらのステップの実施の詳細を以下に説明する。
【0178】
ステップ1.アフィンブロックの各コーナーサンプルの位置を導出する
アフィンブロックの左上のサンプルの座標として(x0,y0)と表すものとする。次いで、アフィンブロックの位置は、そのコーナーサンプルの座標(左上、右上、左下、右下)によって記述することができる。
【数21】
(2-1)
【0179】
ステップ2.EIF中間ブロックの各コーナーサンプルの位置を導出する
EIFのステップE2におけるバイリニア補間は、サイズ(W+2)×(H+2)のブロックに対して実行される(各境界から1つの画素のマージンが追加される)。このブロックは、(W+2)×(H+2)ブロックと呼ばれることもある。この(W+2)×(H+2)ブロックを中間EIFブロックと表記する。中間EIFブロックコーナーサンプル(左上、右上、左下、右下)の座標は、以下のようになる。
【数22】
(2-2)
【0180】
アフィンブロックおよび中間EIFブロックのコーナーの座標を図8に示す。
【0181】
ステップ3.EIF中間ブロックの各コーナーサンプルの動きベクトルを導出する
動きベクトルは、式(1-1)に従って導出される。いくつかの例では、1つのCTUサイズのマージンを有する現在のピクチャの外側のサンプルが使用されないことを保証するために、動きベクトルクリッピングを使用することができる。
【数23】
(2-3)
【0182】
ステップ4.参照ピクチャ内の変換されたブロックの位置を導出する
それぞれベクトルViの水平部分をVix、垂直部分をViyとする。
【0183】
参照ピクチャ内の変換されたブロックの位置は、そのコーナーサンプル(左上、右上、左下、右下)の座標によって記述することができる。
【数24】
(2-4)
【0184】
ステップ5.変換されたブロックのバウンディングボックスサイズを導出する
参照ピクチャ内の変換されたブロックのバウンディングボックスのサイズは、以下の式によって計算することができ、max関数は引数の最大値を返し、min関数は引数の最小値を返す。
【数25】
【0185】
参照ピクチャ内の変換されたブロックの位置および対応するバウンディングボックスを図9に示す。
【0186】
一例では、式(2-5)の後に、W'=Ceil(W')、H'=Ceil(H')が実行される。
【0187】
別の例では、式(2-5)の後に、W'=Floor(W')、H'=Floor(H')が実行される。
【0188】
ステップ6.メモリアクセス消費量を得る
1つの参照ピクチャ内のアフィンブロックのメモリアクセス消費量は、変換されたブロックのバウンディングボックスサイズ、変換されたブロック、およびアフィン動きブロックT'のMC補間フィルタの長さ、例えば、2,4,6,8....:によって決定することができる。
Mem=(W'+T'-1)*(H'+T'-1)(2-6)
EIFの場合、バイリニア補間が使用され、したがって、フィルタの長さは2であり、メモリアクセス消費量は以下に等しくなる。
Mem=(W'+1)*(H'+1)(2-7)
【0189】
EIFのアフィン動きモデル制限
目標とする最悪の場合のメモリ帯域幅を
【数26】
と表し、WおよびHはそれぞれ現在のブロック幅および高さであり、SWCは目標の場合のメモリ帯域幅に従って現在のブロックの最大許容メモリアクセス消費量である。EIFメモリ帯域幅が目標とするケースメモリ帯域幅より大きくないことを保証するために、アフィンブロックのメモリアクセス消費量は、以下の条件、すなわち、
【数27】
または
(W'+1)*(H'+1)≦T*W*H(2-8)
または
(W'+1)*(H'+1)≦SWCとして制約されるはずである。
【0190】
値Tは、エンコーダおよびデコーダの両方で事前定義することができ、または、例えば、シーケンスレベル、ピクチャレベル、スライスレベルパラメータセットなど、コーデックビデオシーケンスのパラメータセットで指定することができる。
【0191】
一例では、サンプルあたりの最大許容メモリアクセス消費量が4×4ブロックのメモリアクセス消費量として定められる場合、次いでTは以下のように導出することができ、T'は補間フィルタの長さである。
【数28】
(2-9)
T'が6に等しい場合、制限は以下の通りである。
(W'+1)*(H'+1)≦(4+6-1)*(4+6-1)(2-10)
【0192】
別の例では、サンプルあたりの最大許容メモリアクセス消費量が8×8ブロックのメモリアクセス消費量として定められる場合、Tは以下のように導出することができ、T'は補間フィルタの長さである。
【数29】
(2-11)
【0193】
別の例では、サンプルあたりの最大許容メモリアクセス消費量は、現在のブロックの予測方向に応じて異なり得る、すなわち、現在のブロックが単予測である場合、閾値TUNIを使用し、現在のブロックが双予測である場合、閾値TBIを使用する。
【0194】
例えば、TUNIは4×4ブロックのメモリアクセス消費量として定められ、TBIは8×4ブロックのメモリアクセス消費量として定められ、次いで、
【数30】
(2-12)
【数31】
(2-13)
【0195】
別の例では、TUNIは4×4ブロックのメモリアクセス消費量として定められ、TBIは8×8ブロックのメモリアクセス消費量として定められ、次いで、
【数32】
(2-14)
【数33】
(2-15)
【0196】
上記の例のT'は、並進動きブロックの動き補償(MC)補間フィルタの長さであり、例えば、2、4、6、8....である。
【0197】
T、TUNIおよびTBIの値は、現在のブロックの幅および高さに依存し得る。
【0198】
双予測アフィンブロックの場合、上記の制約は、リスト0とリスト1の両方に個別に適用される。
【0199】
別の例では、メモリアクセス消費量は、リスト0およびリスト1についてMemおよびMemとして計算され、これらの要素の合計が制限される。例えば、TBIが8×8ブロックのメモリアクセス消費量として定められる場合、以下の制限が使用される。
Mem+Mem≦2*(8+T'-1)*(8+T'-1)(2-16)
【0200】
アフィンブロックの動きベクトルが制約条件(2-8)に従うことができない場合、ブロックはEIF動き補償を使用することができない。
【0201】
一例では、アフィンブロックがEIF動き補償を使用できない場合、EIFの代わりに最小の副次的ブロックサイズ8x8の副次的ブロック動き補償が使用される。
【0202】
別の例では、アフィンブロックがEIF動き補償を使用できない場合、アフィンブロックの中心に対して計算された動きベクトルの並進動き補償が、EIFの代わりに使用される。
【0203】
別の例では、アフィンブロックがEIF動き補償を使用できない場合、バウンディングボックスは、それらの不等式(2-8)に対するW'およびH'に基づいて導出され、満たされる。例えば、W'およびH'は、以下のように計算することができる。
【数34】
【0204】
その後、式(1-1)のEIFによるMV計算時に、動きベクトルの水平部分は範囲[mv0x,mv0x+W'-1]にクリップされ、動きベクトルの垂直部分は範囲[mv0y,mv0y+H'-1]にクリップされる。一例では、ブロックアスペクト比がk(W=kH)である場合、H'は式
k(H')+(k+1)H'+1-TWH=0
を解き、H'=Floor(H'),W'=kH'のステップを実行することにより計算される。
【0205】
実施形態2
使用EIFの場合のアフィンブロックのためのメモリアクセス消費量計算
実施形態1と実施形態2との違いは、実施形態2の文脈において、EIF動き補償が副次的ブロックサイズWxHを有する副次的ブロックによって副次的ブロック毎に実行されると仮定されることである。一例では、WはHに等しい。一例では、
W=4、h=4。一例では、W=8、H=8である。
【0206】
以下のステップは、メモリアクセス消費量計算のために実行される。
【0207】
1.WxH副次的ブロックの各コーナーサンプルの位置を導出する。
2.EIFのステップE3で使用される副次的ブロックの各コーナーサンプルの位置を導出する(EIF中間副次的ブロックとして示す)。
3.EIF中間副次的ブロックの各コーナーサンプルの動きベクトルを導出する
4.参照ピクチャ内の変換された副次的ブロックの位置を導出する
5.変換された副次的ブロックのバウンディングボックスサイズを導出する。
6.変換された副次的ブロックサイズおよびフィルタの長さのバウンディングボックスサイズに基づいてメモリアクセス消費量を得る(EIFはバイリニア補間を使用するので、フィルタの長さは2に等しい)。
【0208】
これらのステップの実施の詳細を以下に説明する。
【0209】
ステップ1.アフィン副次的ブロックの各コーナーサンプルの位置を導出する
アフィンブロックの左上のサンプルの座標として(x0,y0)と表すものとする。メモリアクセス消費量計算のための本実施形態では、アフィン副次的ブロックの左上サンプルの座標は(1,1)に等しいと仮定する。位置(x,y)はメモリアクセス消費量の計算には意味をなさず、(x,y)=(1,1)の場合、式はより単純になる。
【0210】
次いで、アフィン副次的ブロックの位置は、そのコーナーサンプルの座標(左上、右上、左下、右下)によって記述することができる。
【数35】
(3-1)
【0211】
ステップ2.EIF中間副次的ブロックの各コーナーサンプルの位置を導出する
EIFはステップE3で3タップフィルタを使用するので、EIFのステップ2のバイリニア補間は、サイズ(W+2)×(H+2)の副次的ブロックに対して実行される(各境界から1つの画素のマージンが追加される)。このような副次的ブロックは、(W+2)×(H+2)副次的ブロックと呼ばれることもある。ここで、WxHはアフィンブロック(アフィン副次的ブロック)のサイズである。この(W+2)×(H+2)副次的ブロックを中間EIF副次的ブロックと表記する。中間EIFブロックコーナーサンプル(左上、右上、左下、右下)の座標は、以下のようになる。
【数36】
(3-2)
【0212】
アフィン副次的ブロックおよび中間EIF副次的ブロックのコーナーの座標を図8に示す。EIF中間ブロックの各ラインの長さは(W+2)である。
【0213】
ステップ3.EIF中間副次的ブロックの各コーナーサンプルの動きベクトルを導出する
初期の動きベクトル(mv0x,mv0y)はメモリアクセス消費量の計算には意味をなさず、(mv0x,mv0y)=(dHorX+dVerX,dHorY+dVerY)の場合、式はより単純になる。
【0214】
動きベクトルは、式(1-1)に従って導出される。
【数37】
(3-3)
【0215】
ステップ4.参照ピクチャ内の変換されたブロックの位置を導出する
参照ピクチャ内の変換されたブロックの位置は、そのコーナーサンプル(左上、右上、左下、右下)の座標によって記述することができる。
【数38】
(3-4)
【0216】
ステップ5.変換された副次的ブロックのバウンディングボックスサイズを導出する。
参照ピクチャ内の変換された副次的ブロックのバウンディングボックスのサイズは、以下の式によって計算することができ、max関数は引数の最大値を返し、min関数は引数の最小値を返す。
【数39】
(3-5)
【0217】
参照ピクチャ内の変換された副次的ブロックの位置および対応するバウンディングボックスを図9に示す。
【0218】
一例では、W'=Ceil(W')、H'=Ceil(H')が式(3-5)の後に実行される。
【0219】
別の例では、式(3-5)の後に、W'=Floor(W')、H'=Floor(H')が実行される。
【0220】
ステップ6.メモリアクセス消費量を得る
1つの参照ピクチャ内のアフィン副次的ブロックのメモリアクセス消費量は、変換された副次的ブロックサイズ、およびアフィン動きブロックT'のMC補間フィルタの長さに対するバウンディングボックスサイズによって決定することができ、例えば、2、4、6、8....
Mem=(W'+T'-1)*(H'+T'-1)(3-6)
である。
EIFの場合、バイリニア補間が使用され、したがって、フィルタの長さは2であり、メモリアクセス消費量は以下に等しくなる。
Mem=(W'+1)*(H'+1)(3-7)
【0221】
EIFのアフィン動きモデル制限
目標とする最悪の場合のメモリ帯域幅を
【数40】
と表し、WおよびHはそれぞれ現在の副次的ブロック幅および高さであり、SWCは目標の場合のメモリ帯域幅に従って現在の副次的ブロックの最大許容メモリアクセス消費量である。EIFメモリ帯域幅が目標とするケースメモリ帯域幅以下であることを保証するために、EIF副次的ブロックのメモリアクセス消費量は、以下の条件として制約されるべきである。
【数41】
または
(W'+1)*(H'+1)≦T*W*H(3-8)
または
(W'+1)*(H'+1)≦Swc
【0222】
値Tは、エンコーダおよびデコーダの両方で事前定義することができ、または、例えば、シーケンスレベル、ピクチャレベル、スライスレベルパラメータセットなど、コーデックビデオシーケンスのパラメータセットで指定することができる。
【0223】
一例では、サンプルあたりの最大許容メモリアクセス消費量が4×4ブロックのメモリアクセス消費量として定められる場合、Tは以下のように導出することができ、T'は補間フィルタの長さである。
【数42】
(3-9)
T'が6に等しい場合、制限は以下の通りである。
(W'+1)*(H'+1)≦(4+6-1)*(4+6-1)(3-10)
【0224】
別の例では、サンプルあたりの最大許容メモリアクセス消費量が8×8ブロックのメモリアクセス消費量として定められる場合、Tは以下のように導出することができ、T'は補間フィルタの長さである。
【数43】
(3-11)
【0225】
別の例で、サンプルあたりの最大許容メモリアクセス消費量は、現在のブロックの予測方向に応じて異なり得る、すなわち、現在のブロックが単予測である場合、閾値TUNIを使用し、現在のブロックが双予測である場合、閾値TBIを使用する。
【0226】
例えば、TUNIは4×4ブロックのメモリアクセス消費量として定められ、TBIは8×4ブロックのメモリアクセス消費量として定められ、次いで、
【数44】
(3-12)
【数45】
(3-13)
【0227】
別の例では、TUNIは4×4ブロックのメモリアクセス消費量として定められ、TBIは8×8ブロックのメモリアクセス消費量として定められ、次いで、
【数46】
(3-14)
【数47】
(3-15)
【0228】
上記の例のT'は、並進動きブロックの動き補償(MC)補間フィルタの長さであり、例えば、2、4、6、8....である。
【0229】
T、TUNIおよびTBIの値は、現在のブロックの幅および高さに依存し得る。
【0230】
双予測アフィンブロックの場合、上記の制約はリスト0とリスト1の両方に個別に適用される。
【0231】
別の例で、メモリアクセス消費量は、リスト0およびリスト1についてMemおよびMemとして計算され、これらの要素の合計が制限される。例えば、TBIが8×8ブロックのメモリアクセス消費量として定められる場合、以下の制限が使用される。
Mem+Mem≦2*(8+T'-1)*(8+T'-1)(3-16)
【0232】
この例では、アフィンブロックの動きベクトルが制約条件(3-8)に従うことができない場合、ブロックはEIF動き補償を使用することができない。
【0233】
一例で、アフィンブロックがEIF動き補償を使用できない場合、EIFの代わりに最小の副次的ブロックサイズ8x8の副次的ブロック動き補償が使用される。
【0234】
別の例で、アフィンブロックがEIF動き補償を使用できない場合、アフィンブロックの中心に対して計算された動きベクトルの並進動き補償が、EIFの代わりに使用される。
【0235】
別の例では、アフィンブロックがEIF動き補償を使用できない場合、バウンディングボックスは、それらの不等式(3-8)に対するW'およびH'に基づいて導出され、満たされる。例えば、W'およびH'は、以下のように計算することができる。
【数48】
【0236】
その後、式(1-1)のEIFによるMV計算時に、動きベクトルの水平部分は、範囲[mv0x,mv0x+W'-1]にクリップされ、動きベクトルの垂直部分は範囲[mv0y,mv0y+H'-1]にクリップされる。一例では、ブロックアスペクト比がk(W=kH)である場合、H'は式
k(H')+(k+1)H'+1-TWH=0
を解き、H'=Floor(H'),W'=kH'のステップを実行することにより計算される。
【0237】
MPEG-5/EVCにおける実施形態2の使用例
この例では、EIF副次的ブロックサイズは4x4に等しい。dX[0]はdHorXに対応し、dX[1]はdHorYに対応し、dY[0]はdVerXに対応し、dY[1]はdVerYに対応する。
【0238】
変数dX[0]、dX[1]、dY[0]、dY[1]は、1/512の精度である。
...
変数eifSubblockSizeは、4に等しく設定される。
【0239】
変数eifCanBeAppliedは、以下のように導出される。
-eifCanBeAppliedがTRUEに設定される
-アレイX[i]、Y[i]は、以下のように導出される。
-X[0]=0
-X[1]=(eifSubblockSize+1)*(dX[0]+(1<<9))、
-X[2]=(eifSubblockSize+1)*dY[0]
-X[3]=X[1]+X[2]
-Y[0]=0
-Y[1]=(eifSubblockSize+1)*dX[1]
-Y[2]=(eifSubblockSize+1)*(dY[1]+(1<<9))
-Y[3]=Y[1]+Y[2]
-変数Xmaxは、iが0..3に等しい場合のX[i]の最大値に等しく設定される。
-変数Xminは、iが0..3に等しい場合のX[i]の最小値に等しく設定される。
-変数Ymaxは、iが0..3に等しい場合のY[i]の最大値に等しく設定される。
-変数Yminは、iが0..3に等しい場合のY[i]の最小値に等しく設定される。
-変数Wは、(Xmax-Xmin+(1<<9-1)>>9に等しく設定される。
-変数Hは、(Ymax-Ymin+(1<<9)-1)>>9に等しく設定される。
-(W+2)*(H+2)が81より大きい場合、変数eifCanBeAppliedはFALSEに等しくなる
...
-eifCanBeAppliedが変数sizeSbXよりもFALSEに等しい場合、sizeSbYは以下のように修正される。
-sizeSbX=max(8,sizeSbX)
-sizeSbY=max(8,sizeSbY)
【0240】
図12は、本開示による、符号化デバイス、すなわちエンコーダまたはデコーダによって実装されるビデオを符号化するための方法を示す。図12に示す方法は、動き補償のために拡張補間フィルタEIFを含むエンコーダまたはデコーダに実装されたビデオを符号化する方法である。図12に示す方法は、
i)(1601)アフィンインター予測に従ってブロックの制御点動きベクトルCPMVを決定することであって、ブロックはアフィンブロックまたはアフィンブロックの副次的ブロックである、決定することと、
ii)(1603)所定の副次的ブロックサイズに対して、CPMVの値に従って所定の副次的ブロックサイズを有する副次的ブロックのための参照領域を決定することと、
iii)(1605)決定された参照領域を事前定義された閾値と比較することと、
iv)(1609)動き補償のためにEIFを適用することであって、ブロックの画素ベースの動きベクトル場を導出することを含む、適用することと、を含み、
(1607)決定された参照領域が閾値よりも大きい場合、ブロックの画素ベースの動きベクトル場を導出することが、動きベクトルのクリッピングをさらに含み、
動きベクトルクリップ範囲はブロックの動きモデルとブロックのサイズとに基づいて決定する。
【0241】
図13は、本開示の実施形態によるビデオシーケンスをデコードするためのデコーダ30を示す。動き補償のための拡張補間フィルタEIFを含むデコーダ。デコーダ30であって、
アフィンインター予測に従ってブロックの制御点動きベクトルCPMVを決定するように構成された第1の決定ユニット3001であって、ブロックはアフィンブロックまたはアフィンブロックの副次的ブロックである、第1の決定ユニット、
所定の副次的ブロックサイズに対して、CPMVの値に従って所定の副次的ブロックサイズを有する副次的ブロックのための参照領域を決定するように構成された第2の決定ユニット3003、
決定された参照領域を事前定義された閾値と比較するように構成された比較ユニット3005、
動き補償のためにEIFを適用するように構成された動き補償ユニット3007であって、ブロックの画素ベースの動きベクトル場を導出することを含む、動き補償ユニット、を含み、
決定された参照領域が閾値よりも大きい場合、動き補償ユニット3007は、ブロックの画素ベースの動きベクトル場を導出するように構成され、動きベクトルのクリッピングをさらに含み、
ブロックの動きモデルとブロックのサイズとに基づいて動きベクトルのクリップ範囲を決定する、デコーダ。
【0242】
図14は、本開示の実施形態によるビデオシーケンスをエンコードするためのエンコーダ20を示す。動き補償のための拡張補間フィルタEIFを含むエンコーダ。エンコーダ30であって、
アフィンインター予測に従ってブロックの制御点動きベクトルCPMVを決定するように構成された第1の決定ユニット2001であって、ブロックはアフィンブロックまたはアフィンブロックの副次的ブロックである、第1の決定ユニット、
所定の副次的ブロックサイズに対して、CPMVの値に従って所定の副次的ブロックサイズを有する副次的ブロックのための参照領域を決定するように構成された第2の決定ユニット2003、
決定された参照領域を事前定義された閾値と比較するように構成された比較ユニット2005、
動き補償のためにEIFを適用するように構成された動き補償ユニット2007であって、ブロックの画素ベースの動きベクトル場を導出することを含む、動き補償ユニット、を含み、
決定された参照領域が閾値よりも大きい場合、動き補償ユニット2007は、ブロックの画素ベースの動きベクトル場を導出するように構成され、動きベクトルのクリッピングをさらに含み、
ブロックの動きモデルとブロックのサイズとに基づいて動きベクトルのクリップ範囲を決定する、エンコーダ。
【0243】
以下では、上述の実施形態に示されたようなエンコード方法およびデコード方法の適用、ならびにそれらを使用するシステムについて説明を提供する。
【0244】
図10は、コンテンツ配信サービスを実現するためのコンテンツ供給システム3100を示すブロック図である。このコンテンツ供給システム3100は、キャプチャデバイス3102と、端末デバイス3106とを含み、任意選択でディスプレイ3126を含む。キャプチャデバイス3102は、通信リンク3104を介して端末デバイス3106と通信する。通信リンクは、上述した通信チャネル13を含んでもよい。通信リンク3104は、WIFI、イーサネット(登録商標)、ケーブル、ワイヤレス(3G/4G/5G)、USB、またはそれらの任意の種類の組合せなどを含むが、これらに限定されない。
【0245】
キャプチャデバイス3102は、データを生成し、上記の実施形態に示されたようなエンコード方法によってデータをエンコードすることができる。あるいは、キャプチャデバイス3102は、ストリーミングサーバ(図示せず)にデータを配信してもよく、サーバは、データをエンコードし、エンコードされたデータを端末デバイス3106に送信する。キャプチャデバイス3102は、カメラ、スマートフォンもしくはPad、コンピュータもしくはラップトップ、テレビ会議システム、PDA、車載デバイス、またはそれらのいずれかの組合せなどを含むが、これらに限定されない。例えば、キャプチャデバイス3102は、上述したようにソースデバイス12を含むことができる。データがビデオを含む場合、キャプチャデバイス3102に含まれるビデオエンコーダ20は、実際にビデオエンコード処理を行うことができる。データにオーディオ(すなわち、音声)が含まれている場合、実際には、キャプチャデバイス3102に含まれるオーディオエンコーダが、オーディオエンコード処理を行ってもよい。いくつかの実際的なシナリオでは、キャプチャデバイス3102は、エンコードされたビデオおよびオーディオデータをともに多重化することによって配信する。例えばテレビ会議システムにおける他の実際的なシナリオでは、エンコードされたオーディオデータおよびエンコードされたビデオデータは多重化されない。キャプチャデバイス3102は、エンコードされたオーディオデータとエンコードされた映像データを別々に端末デバイス3106に配信する。
【0246】
コンテンツ供給システム3100では、端末デバイス310がエンコードデータを受信して再生する。端末デバイス3106は、スマートフォンまたはPad3108、コンピュータまたはラップトップ3110、ネットワークビデオレコーダ(NVR)/デジタルビデオレコーダ(DVR)3112、TV3114、セットトップボックス(STB)3116、テレビ会議システム3118、ビデオ監視システム3120、携帯情報端末(PDA)3122、車両搭載デバイス3124、またはそれらのいずれかの組合せなど、上述のエンコードデータをデコードすることができるデータ受信および復元機能を有するデバイスとすることができる。例えば、端末デバイス3106は、上述したように宛先デバイス14を含むことができる。エンコードデータに映像が含まれる場合、端末デバイスに含まれるビデオデコーダ30を優先して映像デコードを行う。エンコードデータがオーディオを含む場合、端末デバイスに含まれるオーディオデコーダを優先して音声デコード処理を行う。
【0247】
そのディスプレイを有する端末デバイス、例えば、スマートフォンまたはPad3108、コンピュータまたはラップトップ3110、ネットワークビデオレコーダ(NVR)/デジタルビデオレコーダ(DVR)3112、TV3114、携帯情報端末(PDA)3122、または車両搭載デバイス3124の場合、端末デバイスは、デコードされたデータをそのディスプレイに供給することができる。ディスプレイを装備していない端末デバイス、例えば、STB3116、テレビ会議システム3118、またはビデオ監視システム3120の場合、デコードされたデータを受信して表示するために外部ディスプレイ3126がそこに接触される。
【0248】
本システムにおける各デバイスがエンコードやデコードを行う際には、上述した実施形態で示したようなピクチャエンコードデバイスやピクチャデコードデバイスを用いることができる。
【0249】
図11は、端末デバイス3106の例の構成を示す図である。プロトコル進行ユニット3202は、端末デバイス3106がキャプチャデバイス3102からストリームを受信した後、そのストリームの伝送プロトコルを解析する。プロトコルには、リアルタイムストリーミングプロトコル(RTSP)、ハイパーテキスト転送プロトコル(HTTP)、HTTPライブストリーミングプロトコル(HLS)、MPEG-DASH、リアルタイムトランスポートプロトコル(RTP)、リアルタイムメッセージングプロトコル(RTMP)、またはそれらの任意の種類の組合せなどが含まれるが、これらに限定されない。
【0250】
プロトコル進行ユニット3202がストリームを処理した後、ストリームファイルが生成される。ファイルは、多重分離ユニット3204に出力される。多重分離ユニット3204は、多重化データをエンコードオーディオデータとエンコード映像データとに分離することができる。上述したように、いくつかの実際的なシナリオでは、例えばテレビ会議システムでは、エンコードされたオーディオデータおよびエンコードされた映像データは多重化されない。この状況では、エンコードデータは、多重分離ユニット3204を介さずに、ビデオデコーダ3206およびオーディオデコーダ3208に伝送される。
【0251】
この逆多重化処理により、ビデオのエレメンタリストリーム(ES)と、オーディオのESと、任意選択でサブタイトルが生成される。ビデオデコーダ3206は、上述した実施形態で説明したようなビデオデコーダ30を含み、上述した実施形態で示したようなデコード方法で映像ESをデコードして映像フレームを生成し、そのデータを同期ユニット3212に供給する。オーディオデコーダ3208は、オーディオESをデコードしてオーディオフレームを生成し、このデータを同期ユニット3212に供給する。あるいは、映像フレームは、同期ユニット3212に供給する前にバッファ(図11には示されていない)に格納されてもよい。同様に、オーディオフレームは、同期ユニット3212に供給する前にバッファ(図11には示されていない)に格納することができる。
【0252】
同期ユニット3212は、映像フレームとオーディオフレームを同期させ、映像/オーディオをビデオ/オーディオディスプレイ3214に供給する。例えば、同期ユニット3212は、映像およびオーディオの情報の提示を同期させる。情報は、符号化されたオーディオおよびビジュアルデータの提示に関するタイムスタンプ、およびデータストリーム自体の配信に関するタイムスタンプを使用して構文で符号化することができる。
【0253】
サブタイトルデコーダ3210は、ストリームにサブタイトルが含まれている場合、サブタイトルをデコードして映像フレームおよびオーディオフレームに同期させ、映像/オーディオ/サブタイトルを映像/オーディオ/サブタイトルディスプレイ3216に供給する。
【0254】
本発明は、上述したシステムに限定されるものではなく、上述した実施形態におけるピクチャエンコードデバイスおよびピクチャデコードデバイスのいずれかを、他のシステム、例えば、カーシステムに組み込むことも可能である。
【0255】
数学的演算子
本出願で使用される数学的演算子は、Cプログラミング言語で使用されるものと同様である。しかしながら、整数の除算および算術シフト演算の結果はより正確に定められ、指数化および実数値の除算などの追加の演算が定められる。数える規則や数え上げる規則は一般に0から始まり、例えば、「第1の」は0番目に相当し、「第2の」は1番目に相当するなどである。
【0256】
算術演算子
以下の算術演算子を以下のように定める。
【表1】
【0257】
論理演算子
以下の論理演算子は以下のように定められる。
x&&y xおよびyのブール論理「and」
x||y xとyのブール論理「or」
! ブール論理の「not」
×?y:z xがTRUEまたは0に等しくない場合、yの値に対して評価する。
そうでない場合、zの値に対して評価される。
【0258】
関係演算子
以下の関係演算子は以下のように定められる。
>より大きい
>=以上
<未満
<=以下
==等しい
!=等しくない
【0259】
値「na」(該当なし)が割り当てられたシンタックス要素または変数に関係演算子が適用される場合、値「na」は、シンタックス要素または変数の別個の値として扱われる。値「na」は、他のいずれの値とも等しくないと考えられる。
【0260】
ビットワイズ演算子
以下のビット毎の演算子は以下のように定められる。
&ビット単位の「and」。整数引数で演算する場合、整数値の2の補数表現で演算する。別の引数より少ないビットを含むバイナリ引数で演算する場合、短い方の引数は、0に等しい上位ビットを追加することによって拡張される。
|ビット単位の「or」。整数引数で演算する場合、整数値の2の補数表現で演算する。別の引数より少ないビットを含むバイナリ引数で演算する場合、短い方の引数は、0に等しい上位ビットを追加することによって拡張される。
^ビット単位の「排他的論理和」。整数引数で演算する場合、整数値の2の補数表現で演算する。別の引数より少ないビットを含むバイナリ引数で演算する場合、短い方の引数は、0に等しい上位ビットを追加することによって拡張される。
x>>y x×yの2進数による2つの補数整数表現の算術的右シフト。この関数は、負ではないyの整数値に対してのみ定められる。右シフトによりMSB(Most Significant Bits)にシフトさせたビットは、シフト演算前のxのMSBに等しい値となる。
x<<y x×yの2進数の2つの補数整数表現の算術左シフト。この関数は、負ではないyの整数値に対してのみ定められる。左シフトの結果として最下位ビットにシフトされたビット(LSB)は、0に等しい値を有する。
【0261】
代入演算子
以下の算術演算子を以下のように定める。
=代入演算子
++インクリメント、すなわち、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)と等しい。
【0262】
範囲の表記法
以下の表記法は、値の範囲を指定するために使用される。
x=y..z xは、y以上z以下の整数値をとり、x、y、およびzは整数であり、zはyより大きい。
【0263】
数学関数
以下の数学関数が定められる。
【数49】
Asin(x)ラジアン単位で、-π÷2以上π÷2以下の範囲の出力値で、-1.0以上1.0以下の範囲の引数xに対して機能する、三角関数の逆正弦関数
Atan(x)ラジアン単位で-π÷2以上π÷2以下の範囲の出力値で、引数xに対して機能する三角関数の逆正接関数
【数50】
Ceil(x)x以上の最小の整数
Clip1(x)=Clip3(0,(1<<BitDepth)-1,x)
Clip1(x)=Clip3(0,(1<<BitDepth)-1,x)
【数51】
Cos(x)ラジアン単位の引数xに対して機能する三角余弦関数である。
Floor(x)x以下の最大の整数である。
【数52】
Ln(x)xの自然対数(底e対数、eは自然対数底定数2.718 281 828...)である。
Log2(x)xの底2の対数。
Log10(x)xの底10の対数。
【数53】
Round(x)=Sign(x)*Floor(Abs(x)+0.5)
【数54】
Sin(x)ラジアン単位の引数xに対して機能する三角正弦関数
【数55】
Swap(x,y)=(y,x)
Tan(x)ラジアン単位の引数xで動作する三角正接関数
【0264】
演算の優先順位
式における優先順位が括弧の使用によって明示的に示されない場合、以下の規則が適用される。
-より優先度の高い演算は、より優先度の低い任意の演算の前に評価される。
-同じ優先度の動作は、左から右に順次評価される。
【0265】
以下の表は、演算の優先順位を最高から最低まで指定する。表でのより高い位置は、より高い優先順位を示す。
【0266】
Cプログラミング言語でも使用される演算子の場合、本明細書で使用される優先順位は、Cプログラミング言語で使用されるものと同じである。
【0267】
表:最高(表の最上部)から最低(表の最下部)までの操作の優先度
【表2】
【0268】
論理演算のテキスト記述
本文では、論理演算の記述は、以下の形式で数学的に説明される。
if(条件0)
記述0
else if(条件1)
記述1
...
else/*残りの条件に関する有益な言及*/
記述n
は、以下のように記述することができる。
...as follows/...the following applies:
-If条件0,記述0
-Otherwise,if条件1,記述1
-...
-Otherwise(残りの条件に関するインフォーマティブな言及),記述n
【0269】
各「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,...」に一致させることによって特定することができる。
本文では、論理演算の記述は、以下の形式で数学的に説明される。
if(条件0a&&条件0b)
記述0
else if(条件1a||条件1b)
記述1
...
else
記述n
は、以下のように記述することができる。
...as follows /...the following applies:
-If all of the following conditions are true,statement 0(以下の条件のすべてが真である場合、記述0):
-条件0a
-条件0b
-Otherwise,if one or more of the following conditions are true,statement 1(そうではなく、以下の条件のうちの1つまたは複数が真である場合、記述1):
-条件1a
-条件1b
-...
-Otherwise,記述n
【0270】
本文では、論理演算の記述は、以下の形式で数学的に説明される。
if(条件0)
記述0
if(条件1)
記述1
は、以下のように記述することができる。
When condition 0,statement 0(条件0の場合、記述0)
When condition 1,statement 1(条件1の場合、記述1)
【0271】
本発明の実施形態は主に映像符号化に基づいて説明されてきたが、符号化システム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にも等しく使用され得る。
【0272】
例えばエンコーダ20およびデコーダ30、ならびに例えばエンコーダ20およびデコーダ30を参照して本明細書で説明される関数の実装形態は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実施することができる。ソフトウェアで実装される場合、関数は、コンピュータ可読媒体に格納されるか、または1つまたは複数の命令またはコードとして通信媒体を介して送信され、ハードウェアベースの処理ユニットによって実行されてもよい。コンピュータ可読媒体は、データ記憶媒体などの有形媒体に対応するコンピュータ可読記憶媒体、または例えば通信プロトコルに従った、ある場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む通信媒体を含むことができる。このようにして、コンピュータ可読媒体は、一般に、(1)非一時的である有形のコンピュータ可読記憶媒体、または(2)信号もしくは搬送波などの通信媒体に対応することができる。データ記憶媒体は、本開示に記載された技術を実施するための命令、コード、および/またはデータ構造を取り出すために、1つまたは複数のコンピュータまたは1つまたは複数のプロセッサによってアクセスされ得る任意の利用可能な媒体であり得る。コンピュータプログラム製品は、コンピュータ可読媒体を含むことができる。
【0273】
限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM、CD-ROMもしくは他の光ディスク記憶装置、磁気ディスク記憶装置、または他の磁気記憶装置、フラッシュメモリ、または命令もしくはデータ構造の形態で所望のプログラムコードを格納するために使用することができ、コンピュータによってアクセスすることができる任意の他の媒体を含むことができる。さらに、任意の接続は、コンピュータ可読媒体と適切に呼ばれる。例えば、同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者線(DSL)、あるいは、例えば赤外線、無線およびマイクロ波のような無線技術を用いて、ウェブサイト、サーバ、あるいはその他の遠隔ソースから命令が送信される場合、次いで同軸ケーブル、光ファイバケーブル、ツイストペア、DSL、あるいは、赤外線、無線およびマイクロ波などの無線技術が、媒体の定義に含まれる。しかしながら、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的媒体を含まず、代わりに非一時的有形記憶媒体を対象とすることを理解されたい。本明細書で使用されるディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザディスク(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピーディスク(disk)、およびブルーレイディスク(disc)を含み、ディスク(disc)は、通常、データを磁気的に再生し、ディスク(disc)は、レーザを用いて光学的にデータを再生する。上記の組合せもまた、コンピュータ可読媒体の範囲内に含まれるべきである。
【0274】
命令は、1つまたは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルロジックアレイ(FPGA)、または他の同等の集積または個別論理回路などの1つまたは複数のプロセッサによって実行されてもよい。したがって、本明細書で使用される「プロセッサ」という用語は、前述の構造のいずれか、または本明細書に記載の技術の実装に適した任意の他の構造を指すことができる。さらに、いくつかの態様では、本明細書に記載された機能は、エンコードおよびデコードのために構成された専用のハードウェアおよび/またはソフトウェアモジュール内で提供され得るか、または、結合されたコーデックに組み込まれ得る。さらに、これらの技術は、1つまたは複数の回路または論理素子に完全に実装することができる。
【0275】
本開示の技術は、無線ハンドセット、集積回路(IC)、またはICのセット(例えば、チップセット)を含む、多種多様なデバイスまたは装置において実装され得る。本開示では、開示された技術を実行するように構成されたデバイスの機能的態様を強調するために、様々な構成要素、モジュール、またはユニットが記載されているが、必ずしも異なるハードウェアユニットによる実現を必要としない。むしろ、上述したように、様々なユニットは、適切なソフトウェアおよび/またはファームウェアと共に、コーデックハードウェアユニットに組み合わされてもよく、または上述したような1つまたは複数のプロセッサを含む相互作用ハードウェアユニットの集合によって提供されてもよい。
その他の可能な項目
(項目1)
動き補償のために、拡張補間フィルタEIFを含むエンコーダまたはデコーダに実装された映像を符号化するための方法であって、
i)アフィンインター予測に従ってブロックの制御点動きベクトルCPMVを決定することであって、上記ブロックはアフィンブロックまたは上記アフィンブロックの副次的ブロックである、決定することと、
ii)所定の副次的ブロックサイズについて、上記CPMVの値に従って上記所定の副次的ブロックサイズを有する副次的ブロックのための参照領域を決定することと、
iii)上記決定された参照領域を事前定義された閾値と比較することと、
iv)動き補償のためにEIFを適用することであって、上記ブロックの上記画素ベースの動きベクトル場を導出することを含む、適用することと、を含み、
上記決定された参照領域が上記事前定義された閾値よりも大きい場合、上記ブロックの上記画素ベースの動きベクトル場を導出することは、動きベクトルのクリッピングをさらに含み、
上記ブロックの動きモデルと上記ブロックのサイズとに基づいて動きベクトルのクリップ範囲を決定する、方法。
(項目2)
動き補償のためにEIFを使用することが、
Tタップの補間フィルタを用いて上記導出された動きベクトル場に基づいて参照ピクチャ内の補間サンプルを取得することであって、Tは上記フィルタの長さに対応する補間フィルタタップの数であり、Tは0より大きい、取得することと、
上記補間サンプルにハイパスフィルタを適用することと、をさらに含む、項目1に記載の方法。
(項目3)
動き補償のためにEIFを使用することは、
上記ブロックのサイズを決定することと、
上記ブロックの上記サイズを上記ブロックの上記サイズの第1の閾値と比較することと、をさらに含み、
上記ブロックの上記サイズが上記ブロックの上記サイズの上記第1の閾値以上である場合、ブロックベースのアフィン変換予測が上記ブロックに対して実行される、項目1または2に記載の方法。
(項目4)
上記ブロックの上記サイズがアフィン動きモデルパラメータに基づいて決定される、項目3に記載の方法。
(項目5)
上記アフィン動きモデルパラメータは、上記CPMVの動きベクトルの差、ならびに上記ブロックの幅および高さを含む、項目4に記載の方法。
(項目6)
上記アフィン動きモデルパラメータは、上記CPMVの精度をさらに含む、項目4または5に記載の方法。
(項目7)
上記事前定義された閾値は、上記所定の副次的ブロックサイズと、上記副次的ブロックの上記領域に対する上記参照ピクチャ内の上記副次的ブロックに対応する上記参照領域の所定の比とに基づいて計算される、項目1から6のいずれか一項に記載の方法。
(項目8)
上記副次的ブロックの上記領域に対する上記参照ピクチャ内の上記副次的ブロックに対応する上記参照領域の上記所定の比が、上記EIFのメモリ帯域幅に対応する、項目7に記載の方法。
(項目9)
上記事前定義された閾値は、上記ブロックの上記所定の副次的ブロックサイズに対する最大許容メモリアクセス消費量である、項目7に記載の方法。
(項目10)
上記CPMVの値に従って上記所定の副次的ブロックサイズを有する副次的ブロックの上記参照領域を決定することは、
ハイパスフィルタの長さに基づいて上記副次的ブロックの各境界から画素マージンを加算することによって拡張ブロックを決定することと、
上記CPMVに基づいて上記拡張ブロックの各コーナーの動きベクトルを導出することと、
上記導出された動きベクトルに基づいて上記参照ピクチャ内の変換されたブロックを導出することと、
上記変換されたブロックのバウンディングボックスを導出することと、を含み、
上記参照ブロックの上記領域は、上記バウンディングボックスの各境界からの(T-1)画素により拡張される上記バウンディングボックスに対応する、項目2から9のいずれかに記載の方法。
(項目11)
上記参照ピクチャ内の上記変換されたブロックの上記バウンディングボックスの上記サイズは、以下の式を使用して導出され、max関数は、上記引数の上記最大値を返し、min関数は、上記引数の上記最小値を返す、
【数56】
参照ピクチャ内の上記変換されたブロックの上記位置は、上記変換されたブロックの上記コーナーサンプルの座標(左上、右上、左下、右下)によって記述され、
【数57】
WおよびHはそれぞれ上記副次的ブロックの幅および高さであり、dHorX、dHorY、dVerX、dVerYは上記アフィン動きモデルの水平および垂直勾配パラメータである
項目10に記載の方法。
(項目12)
上記バウンディングの上記サイズは、W'xH'によって与えられる、または
上記バウンディングボックスの上記サイズは、Ceil(W')xCeil(H')によって与えられる、または
上記バウンディングボックスの上記サイズは、Floor(W')xFloor(H')によって与えられる、項目11に記載の方法。
(項目13)
上記フィルタの長さの上記値は、エンコーダおよびデコーダの両方に対して事前定義されるか、またはコーデックビデオシーケンスのパラメータセットにおいて指定される、項目2から12のいずれか一項に記載の方法。
(項目14)
4×4の副次的ブロックの場合、上記事前定義された閾値Tは、
【数58】
により与えられ、T'は、並進動きブロックの動き補償MC補間フィルタの長さである、項目13に記載の方法。
(項目15)
8×8の副次的ブロックの場合、上記事前定義された閾値Tは、
【数59】
により与えられ、T'は、並進動きブロックの動き補償MC補間フィルタの長さである、項目14に記載の方法。
(項目16)
上記ブロックの上記中心の動きベクトルを計算し、並進動き補償を行うことをさらに含む、項目15に記載の方法。
(項目17)
上記拡張補間フィルタの上記副次的ブロックの上記所定のサイズは4×4に等しく、dX[0]はdHorXに対応し、dX[1]はdHorYに対応し、dY[0]はdVerXに対応し、dY[1]はdVerYに対応し、上記CPMVの値に従って、所定の副次的ブロックサイズを有する副次的ブロックの参照領域を決定することは、
上記変数eifSubblockSizeの値を4に等しく設定し、
以下のように上記変数eifCanBeAppliedを導出し、
eifCanBeAppliedの上記値をTRUEに設定し、
-以下のように上記アレイX[i]、Y[i]を導出し、
-X[0]=0、
-X[1]=(eifSubblockSize+1)*(dX[0]+(1<<9))、
-X[2]=(eifSubblockSize+1)*dY[0]、
-X[3]=X[1]+X[2]、
-Y[0]=0、
-Y[1]=(eifSubblockSize+1)*dX[1]、
-Y[2]=(eifSubblockSize+1)*(dY[1]+(1<<9))、
-Y[3]=Y[1]+Y[2]、
-上記変数Xmaxの上記値を、iが0..3に等しい場合の最大値X[i]に等しく設定し、
-上記変数Xminの上記値を、iが0..3に等しい場合のX[i]の最小値に等しく設定し、
-上記変数Ymaxの上記値を、iが0..3に等しい場合のY[i]の最大値に等しく設定し、
-上記変数Yminの上記値を、iが0..3に等しい場合のY[i]の最小値に等しく設定し、
-上記変数Wの上記値を、(Xmax-Xmin+(1<<9)-1)>>9の値に等しく設定し、
-上記変数Hの上記値を(Ymax-Ymin+(1<<9)-1)>>9の値に等しく設定することを含む、項目1から16のいずれか一項に記載の方法。
(項目18)
上記アフィンインター予測が双予測を含む場合、上記制約は両方のリストに対称的に適用される、項目1から17のいずれか一項に記載の方法。
(項目19)
Tが2に等しい、項目2から18のいずれか一項に記載の方法。
(項目20)
上記事前定義された閾値が72に等しい、項目1から19のいずれか一項に記載の方法。
(項目21)
動きモデルがアフィン動きモデルであり、動きベクトルのクリップ範囲が、CPMVに基づいて決定された動きモデル手段に基づいて決定される、項目1から20のいずれか一項に記載の方法。
(項目22)
上記変換された副次的ブロックの上記バウンディングボックスの上記サイズおよびフィルタの長さに基づいて上記副次的ブロックの上記メモリアクセス消費量を決定することと、
上記副次的ブロックの上記サイズおよび上記フィルタの長さに基づいて上記副次的ブロックの最大許容メモリアクセス消費量を決定することと、
上記決定されたメモリアクセス消費量が上記最大許容メモリアクセス消費量以下であるという制約が満たされた場合に、上記ブロックの動き補償のためのEIFが実行されるべきであると決定することと、をさらに含む、項目1から21のいずれか一項に記載の方法。
(項目23)
項目1から22のいずれか一項に記載の方法を実行するための処理回路を備える、エンコーダ(20)。
(項目24)
項目1から22のいずれか一項に記載の方法を実行するための処理回路を備える、デコーダ(30)。
(項目25)
コンピュータまたはプロセッサで実行されると、項目1から22のいずれか一項に記載の方法を実行するためのプログラムコードを含むコンピュータプログラム製品。
(項目26)
デコーダ(30)であって、
1つまたは複数のプロセッサ、および
上記1つまたは複数のプロセッサに結合され、上記1つまたは複数のプロセッサによる実行のための命令を格納する非一時的コンピュータ可読記憶媒体であって、上記命令が、上記1つまたは複数のプロセッサによって実行されると、項目1から22のいずれか一項に記載の方法を実行するように上記デコーダを構成する、非一時的コンピュータ可読記憶媒体を含む、デコーダ。
(項目27)
エンコーダ(20)であって、
1つまたは複数のプロセッサ、および
上記1つまたは複数のプロセッサに結合され、上記1つまたは複数のプロセッサによる実行のための命令を格納する非一時的コンピュータ可読記憶媒体であって、上記命令が、上記1つまたは複数のプロセッサによって実行されるとき項目1から22のいずれか一項に記載の方法を実行するように上記エンコーダを構成する、非一時的コンピュータ可読記憶媒体を含む、エンコーダ。
(項目28)
コンピュータデバイスによって実行されると、上記コンピュータデバイスに項目1から22のいずれか一項に記載の方法を実行させるプログラムコードを保持する、非一時的コンピュータ可読媒体。
(項目29)
動き補償のための上記拡張補間フィルタEIFを含むビデオシーケンスを符号化するためのデコーダ(30)またはエンコーダ(20)であって、上記デコーダ(30)またはエンコーダ(20)はそれぞれ、
アフィンインター予測に従ってブロックの制御点動きベクトルCPMVを決定するように構成された第1の決定ユニット(3001、2001)であって、上記ブロックはアフィンブロックまたは上記アフィンブロックの副次的ブロックである、第1の決定ユニット、
所定の副次的ブロックサイズに対して、上記CPMVの値に従って上記所定の副次的ブロックサイズを有する副次的ブロックのための参照領域を決定するように構成された第2の決定ユニット(3003、2003)、
上記決定された参照領域を事前定義された閾値と比較するように構成された比較ユニット(3005、2005)、
動き補償のためにEIFを適用するように構成された動き補償ユニット(3007、2007)であって、上記ブロックの上記画素ベースの動きベクトル場を導出することを含む、動き補償ユニット、を含み、
上記決定された参照領域が上記閾値よりも大きい場合、上記動き補償ユニット(3007、2007)は、上記ブロックの上記画素ベースの動きベクトル場を導出するように構成され、動きベクトルのクリッピングをさらに含み、
上記ブロックの動きモデルと上記ブロックのサイズとに基づいて動きベクトルのクリップ範囲を決定する、デコーダまたはエンコーダ。
図1A
図1B
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14