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

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

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

特開2023-134576コンパクトなMVストレージを用いるエンコーダ、デコーダ、及び対応する方法
<>
  • 特開-コンパクトなMVストレージを用いるエンコーダ、デコーダ、及び対応する方法 図1A
  • 特開-コンパクトなMVストレージを用いるエンコーダ、デコーダ、及び対応する方法 図1B
  • 特開-コンパクトなMVストレージを用いるエンコーダ、デコーダ、及び対応する方法 図2
  • 特開-コンパクトなMVストレージを用いるエンコーダ、デコーダ、及び対応する方法 図3
  • 特開-コンパクトなMVストレージを用いるエンコーダ、デコーダ、及び対応する方法 図4
  • 特開-コンパクトなMVストレージを用いるエンコーダ、デコーダ、及び対応する方法 図5
  • 特開-コンパクトなMVストレージを用いるエンコーダ、デコーダ、及び対応する方法 図6
  • 特開-コンパクトなMVストレージを用いるエンコーダ、デコーダ、及び対応する方法 図7
  • 特開-コンパクトなMVストレージを用いるエンコーダ、デコーダ、及び対応する方法 図8
  • 特開-コンパクトなMVストレージを用いるエンコーダ、デコーダ、及び対応する方法 図9
  • 特開-コンパクトなMVストレージを用いるエンコーダ、デコーダ、及び対応する方法 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023134576
(43)【公開日】2023-09-27
(54)【発明の名称】コンパクトなMVストレージを用いるエンコーダ、デコーダ、及び対応する方法
(51)【国際特許分類】
   H04N 19/523 20140101AFI20230920BHJP
【FI】
H04N19/523
【審査請求】有
【請求項の数】11
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2023111308
(22)【出願日】2023-07-06
(62)【分割の表示】P 2021517443の分割
【原出願日】2019-12-27
(31)【優先権主張番号】62/786,343
(32)【優先日】2018-12-29
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】62/786,344
(32)【優先日】2018-12-29
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】504161984
【氏名又は名称】ホアウェイ・テクノロジーズ・カンパニー・リミテッド
(74)【代理人】
【識別番号】110000877
【氏名又は名称】弁理士法人RYUKA国際特許事務所
(72)【発明者】
【氏名】シチェフ、マキシム ボリソヴィチ
(72)【発明者】
【氏名】ソロヴィエフ、ティモフェイ ミハイロヴィッチ
(72)【発明者】
【氏名】カラブトフ、アレキサンダー アレクサンドロヴィッチ
(72)【発明者】
【氏名】イコニン、セルゲイ ユリエビッチ
(72)【発明者】
【氏名】チェン、ジアンレ
(57)【要約】      (修正有)
【課題】時間的な動きベクトル予測を導出するための情報を保存する際に、動きベクトル表現及び精度を妥当な範囲に維持しながらメモリ容量を低減させる方法を提供する。
【解決手段】動きベクトル圧縮方法は、時間的な動きベクトルを取得し、指数部及び/又は仮数部を含む時間的な動きベクトルの二進表現を用いて圧縮された動きベクトルを決定する。指数部はNビットを含み、仮数部はMビットを含み、Nは非負の整数であり、Mは正の整数である。圧縮された動きベクトルを用いて、時間的な動きベクトル予測(TMVP)を実行する。
【選択図】図10
【特許請求の範囲】
【請求項1】
18ビットの時間的な動きベクトルを取得する段階と、
少なくとも一つの前記時間的な動きベクトルの二進表現を用いて圧縮された動きベクトルを決定する段階であって、前記圧縮された時間的な動きベクトルの二進表現は指数部又は仮数部を含み、前記指数部はNビットを含み、前記仮数部はMビットを含み、Nは非負の整数であり、Mは正の整数であり、前記圧縮された時間的な動きベクトルの前記二進表現は10ビットである、段階と、
前記圧縮された動きベクトルを用いて、時間的な動きベクトル予測(TMVP)を実行する段階と、
を含む、動きベクトル圧縮方法。
【請求項2】
前記時間的な動きベクトルは、動きベクトル水平成分と動きベクトル垂直成分とを含む、請求項1に記載の動きベクトル圧縮方法。
【請求項3】
Nの値を決定する段階を含む、請求項1または2に記載の動きベクトル圧縮方法。
【請求項4】
Mが6であり、Nが4である、請求項1から3のいずれか一項に記載の動きベクトル圧縮方法。
【請求項5】
請求項1~4のいずれか一項に記載の動きベクトル圧縮方法を実行するように構成されている回路を備える、デコーダ。
【請求項6】
請求項1~4のいずれか一項に記載の動きベクトル圧縮方法を実行するように構成されている回路を備える、エンコーダ。
【請求項7】
現在のブロックをエンコードするためのエンコーディング装置であって、前記エンコーディング装置は請求項1から4のいずれか一項に記載の動きベクトル圧縮を含む、エンコーディング装置。
【請求項8】
受信されたビットストリームから現在のブロックをデコードするためのデコーディング装置であって、前記デコーディング装置は請求項1から4のいずれか一項に記載の動きベクトル圧縮を含む、デコーディング装置。
【請求項9】
コンピュータ又はプロセッサで実行される場合に、請求項1から4のいずれか一項に記載の動きベクトル圧縮方法を実行するためのプログラムコードを含む、コンピュータプログラム製品。
【請求項10】
請求項1から4のいずれか一項に記載の動きベクトル圧縮方法によってエンコード又はデコードされたビットストリームを含む、コンピュータ可読媒体。
【請求項11】
デコーダによって使用されるデータ構造であって、前記データ構造は、請求項1から4のいずれか一項に記載の動きベクトル圧縮方法を実行することによってデコードされたビットストリームを含む、データ構造。
【発明の詳細な説明】
【技術分野】
【0001】
本願の実施形態は、概して、画像処理の分野に関し、より具体的には、動きベクトル情報を保存するメモリ容量を低減する技術に関する。
【背景技術】
【0002】
ビデオコーディング(ビデオエンコーディング及びデコーディング)は、例えば、放送デジタルTV、インターネット及びモバイルネットワークを介したビデオ送信、又はビデオチャット、ビデオ会議、DVD及びブルーレイディスク、ビデオコンテンツの取得及び編集システム、セキュリティアプリケーションのカムコーダー等のリアルタイムの会話型アプリケーションといった、広範なデジタルビデオアプリケーションで使用される。
【0003】
比較的短いビデオを描画するのであっても、必要とされるビデオデータの量は、かなりのものであり得、その結果、限定的な帯域幅容量を有する通信ネットワークを介してデータがストリームされるか又は別の形で通信されることになる場合に困難が生じる場合がある。したがって、ビデオデータは一般に、現代の遠隔通信ネットワークを介して通信される前に圧縮される。ビデオのサイズは、メモリリソースが限定的である場合があるので、ビデオがストレージデバイス上に保存される場合にも問題となり得る。ビデオ圧縮デバイスは、しばしば、ソースにおけるソフトウェア及び/又はハードウェアを用いて、送信又は保存の前にビデオデータをコードし、それによりデジタルビデオイメージを表現するのに必要なデータの量を低減させる。その後、圧縮データは、デスティネーションにおいて、ビデオデータをデコードするビデオ解凍デバイスによって受信される。限定的なネットワークリソース及び増大し続ける高ビデオ品質の需要に鑑みて、画像品質をほとんどから全く犠牲にせずに圧縮比を改善する、改善された圧縮及び解凍技術が望まれている。
【発明の概要】
【0004】
本発明の目的は、時間的な動きベクトル予測を導出するための情報を保存する際に、動きベクトル表現及び精度を妥当な範囲に維持しながらメモリ容量を低減させるという課題に対する解決手段を提供することである。
【0005】
この課題は、時間的な動きベクトルを取得する段階と、指数部及び/又は仮数部を含む時間的な動きベクトルの二進表現を用いて圧縮された動きベクトルを決定する段階であって、指数部はNビットを含み、仮数部はMビットを含み、Nは非負の整数であり、Mは正の整数である、段階と、圧縮された動きベクトルを用いて、時間的な動きベクトル予測(TMVP)を実行する段階と、を含む、動きベクトル圧縮方法を提供することにより、本発明によって解決される。
【0006】
一実施形態において、時間的な動きベクトルの指数部又は仮数部に基づく少なくとも1回のビットシフト操作を実行して、圧縮された動きベクトルを取得する段階が適用されてよい。
【0007】
別の実施形態において、指数部は、二進表現の最上位ビット(MSB)に対応してよく、仮数部は、二進表現の最下位ビット(LSB)に対応してよい、又は、指数部は、二進表現のLSBに対応してよく、仮数部は、二進表現のMSBに対応してよい。
【0008】
加えて、指数部が二進表現のMSBに対応し、仮数部が二進表現のLSBに対応する場合、圧縮された動きベクトルの値は、以下の段階:二進表現にMビットの右シフトを適用することによって、第1のシフト値を導出する段階と、二進表現の最後のMビットを第1のベーシック二進表現として導出する段階と、第1のベーシック二進表現に第1のシフト値のビットの左シフトを適用することによって、圧縮された動きベクトルの値を導出する段階と、によって導出されてよい。
【0009】
代替的に、指数部が二進表現のLSBに対応し、仮数部が二進表現のMSBに対応する場合、動きベクトル成分の値は、以下の段階:二進表現の最後のNビットを第2のシフト値として導出する段階と、二進表現にNビットの右シフトを適用することによって、第2のベーシック二進表現を導出する段階と、第2のベーシック二進表現に第2のシフト値のビットの左シフトを適用することによって、圧縮された動きベクトルの値を導出する段階と、によって導出されてよい。
【0010】
一実施形態によれば、時間的な動きベクトルは、動きベクトル水平成分及び動きベクトル垂直成分を含んでよい。
【0011】
別の実施形態によれば、動きベクトル圧縮方法は、第1のインジケータをコードする段階であって、第1のインジケータは、時間的な動きベクトルが本発明に係る動きベクトル圧縮方法によって圧縮されているか否かを示すのに使用される、段階を含んでよい。
【0012】
動きベクトル圧縮方法は、Nの値を決定する段階を含んでよい。さらに、Nの値を決定する段階は、Nの値をコードする段階、又は、所定値をNの値として設定する段階、又は、Nの値を画像ユニットの解像度に基づいて導出する段階であって、画像ユニットは、画像又はタイルセットを含む段階、又は、Nの値をコーディングツリーユニット(CTU)又はコーディングユニット(CU)のサイズに基づいて導出する段階、を含んでよい。
【0013】
より具体的には、Nの値を画像ユニットの解像度に基づいて導出する段階は、画像ユニットの幅は、第1の閾値よりも小さく、画像ユニットの高さは、第1の閾値よりも小さい場合、Nの値を0として設定する段階、又は、画像ユニットの幅が第2の閾値よりも小さく、画像ユニットの高さが第2の閾値よりも小さい場合、Nの値を表現するように第2のインジケータをコードする段階、又は、Nの値を表現するように第3のインジケータをコードする段階、を含んでよい。
【0014】
第2のインジケータは、1ビットで二値化されてよく、第3のインジケータは、2ビットで二値化されてよい。
【0015】
一実施形態において、第1のインジケータ、第2のインジケータ、及び/又は第3のインジケータは、ビットストリームにおけるシーケンスパラメータセット(SPS)、画像パラメータセット(PPS)、スライスヘッダ、又はタイルグループヘッダに含まれてよい。
【0016】
また、上記の課題は、時間的な動きベクトルを取得する段階と、時間的な動きベクトルの指数部又は仮数部を決定する段階と、時間的な動きベクトルの指数部又は仮数部に基づいて少なくとも1回のビットシフト操作を実行して、圧縮された動きベクトルを取得する段階であって、指数部は、圧縮された動きベクトルの最下位ビット(LSB)に対応し、仮数部は、圧縮された動きベクトルの最上位ビット(MSB)に対応する、段階と、圧縮された動きベクトルを用いて、時間的な動きベクトル予測(TMVP)を実行する段階と、を含む、動きベクトル圧縮方法をさらに提供することで、本発明によって解決される。
【0017】
上記の課題は、第1のフラグをコードする段階と、第1のフラグが第1の値である場合、第1の方法を実行する段階と、第1のフラグが第2の値である場合、第2の方法を実行する段階であって、第1の値は第2の値とは異なり、現在のイメージブロックの第1の動きベクトル成分の元の値は、Mビットで二値化される、段階と、を含み、第1の方法は、元の値にNビットの右シフトを適用する段階であって、(M-N)は所定値に等しく、N及びMは正の整数である段階と、右シフトされた元の値を第1の動きベクトル成分の保存値として設定する段階と、保存値に基づいて後続のイメージブロックをコードする段階と、を含み、第2の方法は、元の値にクリッピング操作を適用する段階であって、クリップされた元の値によって表されるクリップされた動きベクトル成分は、‐2M-N-1~2M-N-1‐1の間に限定される、段階と、クリップされた元の値を第1の動きベクトル成分の保存値として設定する段階と、後続のイメージブロックを保存値に基づいてコードする段階と、を含む、動きベクトルに基づくコーディング方法を提供することで、本発明によってさらに解決される。
【0018】
一実施形態において、第1の方法に従って、右シフトされた元の値を動きベクトルの保存値として設定した後、方法は、保存値にNビットの左シフトを適用する段階をさらに含んでよく、保存値に基づいて後続のイメージブロックをコードする段階は、左シフトされた保存値に基づいて後続のイメージブロックをコードする段階を含む。
【0019】
代替的には、第2の方法に従って、クリップされた元の値を動きベクトルの保存値として設定した後、方法は、保存値に基づいて第1の動きベクトル成分の復元値を決定する段階であって、復元値はMビットで二値化され、復元値の最後の(M-N)ビットは保存値と同じであり、保存値が正である場合、復元値の最初のNビットのそれぞれは0に等しく、保存値が負である場合、復元値の最初のNビットのそれぞれは1に等しい、段階をさらに含んでよく、保存値に基づいて後続のイメージブロックをコードする段階は、復元値に基づいて後続のイメージブロックをコードする段階を含む。
【0020】
一実施形態において、後続のイメージブロック及び現在のブロックは異なる画像内のものであってよく、後続のイメージブロックの予測モードは、時間的な動きベクトル予測(TMVP)及び/又は代替の時間的な動きベクトル予測(ATMVP)を含んでよい。
【0021】
別の実施形態において、第1のフラグは画像毎にコードされてよく、又は、第1のフラグはタイル毎にコードされてよく、又は、第1のフラグはタイルセット毎にコードされてよく、又は、第1のフラグはスライス毎にコードされてよい。
【0022】
また別の実施形態において、第1のフラグは、ビットストリームにおけるシーケンスパラメータセット(SPS)、画像パラメータセット(PPS)、スライスヘッダ、又はタイルグループヘッダに含まれてよい。
【0023】
一実施形態によれば、現在のイメージブロックは、第2の動きベクトル成分をさらに有してよく、コーディング方法は、第2のフラグをコードする段階をさらに含んでよく、第2のフラグが第1の値である場合、第1の方法が第2の動きベクトル成分について実行されてよく、第2のフラグが第2の値である場合、第2の方法が第2の動きベクトル成分について実行されてよい。
【0024】
別の実施形態によれば、第1のフラグをコードする前に、コーディング方法は、現在の画像の解像度が第1の事前設定値以上であるかどうかを決定する段階をさらに含んでよく、現在のイメージブロックは現在の画像内のものであってよい。
【0025】
さらに、現在の画像の解像度が第1の事前設定値よりも小さい場合、第2の方法が実行されてよい。
【0026】
また、現在の画像が複数のタイルセットに分割される場合、第2の方法が実行されてよく、又は、タイルセットの解像度が第2の事前設定値よりも小さい場合、第2の方法が実行されてよい。
【0027】
一実施形態によれば、第1のフラグをコードする前に、コーディング方法は、現在のイメージブロックのコーディングツリーユニット(CTU)、コーディングユニット(CU)、イメージブロック、又はユニットのサイズが第1のサイズ条件を満たしているかどうかを決定する段階をさらに含んでよい。
【0028】
さらに、現在のイメージブロックのCTU、CU、イメージブロック、又はユニットのサイズが第2のサイズ条件を満たしている場合、第1の方法が実行されてよく、又は、現在のイメージブロックのCTU、CU、イメージブロック、又はユニットのサイズが第3のサイズ条件を満たしている場合、第2の方法が実行されてよい。
【0029】
また、本発明は、現在のイメージブロックのCTU、CU、イメージブロック、又はユニットのサイズを決定する段階と、サイズに基づいて第1の方法及び第2の方法の少なくとも一方を実行する段階、又は、現在の画像の解像度を決定する段階と、解像度に基づいて第1の方法及び第2の方法の少なくとも一方を実行する段階と、を含み、現在のイメージブロックの第1の動きベクトル成分の元の値はMビットで二値化され、第1の方法は、元の値にNビットの右シフトを適用する段階であって、(M-N)は所定値に等しく、N及びMは正の整数である、段階と、右シフトされた元の値を第1の動きベクトル成分の保存値として設定する段階と、保存値に基づいて後続のイメージブロックをコードする段階と、含み、第2の方法は、元の値にクリッピング操作を適用する段階であって、クリップされた元の値によって表されるクリップされた動きベクトル成分は、‐2M-N-1~2M-N-1‐1に限定される、段階と、クリップされた元の値を第1の動きベクトル成分の保存値として設定する段階と、保存値に基づいて後続のイメージブロックをコードする段階と、を含む、動きベクトルに基づくコーディング方法も提供する。
【0030】
また、上記の課題は、コンピュータに上述の方法のいずれか1つを実行させる、プログラムによっても解決される。
【0031】
また、上記の課題は、上述の方法のいずれか1つを実行するように構成されている回路を備える、デコーダによっても解決される。
【0032】
また、上記の課題は、上述の方法のいずれか1つを実行するように構成されている回路を備える、エンコーダによっても解決される。
【0033】
上述のコーディングは、エンコーディング又はデコーディングとすることができる。
【0034】
本発明の更なる機能及び利点は、図面を参照しながら説明される。説明中、本発明の好ましい実施形態を例示することを意図した添付図面が参照される。そのような実施形態は、本発明の全範囲を表すわけではないことが理解される。
【図面の簡単な説明】
【0035】
以下、添付図面を参照しながら、本願の実施形態がより詳細に説明される。
【0036】
図1A】本願の実施形態を実装するように構成されているビデオコーディングシステムの例を示すブロック図である。
【0037】
図1B】本願の実施形態を実装するように構成されているビデオコーディングシステムの別の例を示すブロック図である。
【0038】
図2】本願の実施形態を実装するように構成されているビデオエンコーダの例を示すブロック図である。
【0039】
図3】本願の実施形態を実装するように構成されているビデオデコーダの例示的な構造を示すブロック図である。
【0040】
図4】エンコーディング装置又はデコーディング装置の例を示すブロック図である。
【0041】
図5】エンコーディング装置又はデコーディング装置の別の例を示すブロック図である。
【0042】
図6】本願の実装形態の例を示す図である。
【0043】
図7】本願の別の実装形態の例を示す図である。
【0044】
図8】本願の別の実装形態の例を示す図である。
【0045】
図9】本願の別の実装形態の例を示す図である。
【0046】
図10】本発明に係る動きベクトル圧縮方法を示すフロー図である。
【0047】
以下、別途明示的に指定されていない限り、同一の参照符号は、同一又は少なくとも機能的に等価な機能を指す。
【発明を実施するための形態】
【0048】
以下の説明では、本開示の一部をなし、本願の実施形態の具体的態様又は本願の実施形態が使用され得る具体的態様を例示として示す、添付図面が参照される。本願の実施形態は、他の態様において用いられ、図面に示されない構造的又は論理的変化を含んでよいことが理解される。したがって、以下の詳細な説明は、限定する意味で解釈されず、本願の範囲は、添付の特許請求の範囲によって規定される。
【0049】
例えば、説明された方法に関連する開示は、方法を実行するように構成されている対応するデバイス又はシステムにも当てはまり得、逆もまた同様であることが理解される。例えば、特定の方法の段階のうちの1つ又は複数が説明される場合、対応するデバイスは、説明された1つ又は複数の方法の段階(例えば、上記1つ又は複数の段階を実行する1つのユニット、又は、それぞれ複数の段階のうちの1つ又は複数を実行する複数のユニット)を実行するために、1つ又は複数のユニットが明示的に説明も又は図面に示しもされていない場合であっても、そのような1つ又は複数のユニット、例えば、機能ユニットを含んでよい。他方で、例えば、特定の装置が1つ又は複数のユニット、例えば機能ユニットに基づいて説明される場合、対応する方法は、上記1つ又は複数のユニットの機能を実行するために、1つ又は複数の段階が明示的に説明も又は図面に示しもされていない場合であっても、そのような1つの段階(例えば、1つ又は複数のユニットの機能を実行する1つの段階、又はそれぞれ複数のユニットのうちの1つ又は複数の機能を実行する複数の段階)を含んでよい。さらに、別途特に注記されない限り、本明細書で説明する様々な例示的な実施形態及び/又は態様の特徴が互いに組み合わされ得ることが理解される。
【0050】
ビデオコーディングは典型的には、ビデオ又はビデオシーケンスを形成する一連の画像の処理を指す。「画像」という用語の代わりに、「フレーム」又は「イメージ」という用語がビデオコーディングの分野での同義語として用いられる場合がある。ビデオコーディング(又は一般にコーディング)は、ビデオエンコーディング及びビデオデコーディングの2つの部分を含む。ビデオエンコーディングは、ソース側で実行され、典型的には、(より効率的な保存及び/又は送信のために)ビデオ画像を表現するために要求されるデータ量を低減させるように、元のビデオ画像を処理(例えば、圧縮による)することを含む。ビデオデコーディングは、デスティネーション側で実行され、典型的には、ビデオ画像を再構成するように、エンコーダと比較して逆の処理を含む。ビデオ画像(又は一般に画像)の「コーディング」に言及する実施形態は、ビデオ画像又はそれぞれのビデオシーケンスの「エンコーディング」又は「デコーディング」に関すると理解されるものとする。エンコーディング部分とデコーディング部分との組み合わせは、コーデック(コーディング及びデコーディング)とも称される。
【0051】
無損失ビデオコーディングの場合、元のビデオ画像を再構成でき、すなわち、再構成されたビデオ画像は元のビデオ画像と同じ品質である(保存中又は送信中に伝送損失又はその他のデータ損失がないと仮定)。不可逆ビデオコーディングの場合、ビデオ画像を表現するデータ量を低減するために、例えば量子化による更なる圧縮が実行されるが、これはデコーダにおいて完全には再構成できない、すなわち、再構成されたビデオ画像の品質は、元のビデオ画像の品質に比較して低下又は劣化する。
【0052】
いくつかのビデオコーディング規格は、「不可逆ハイブリッドビデオコーデック」のグループに属する(すなわち、サンプル領域における空間的及び時間的予測と、変換領域における量子化を適用するための2D変換コーディングとを組み合わせる)。ビデオシーケンスの各画像は、典型的には、非重複ブロックのセットへと区分化され、コーディングは、典型的には、ブロックレベルで実行される。換言すれば、エンコーダにおいて、ビデオは、例えば、空間的(画像内)予測及び/又は時間的(画像間)予測を使用して予測ブロックを生成し、現在のブロック(現在処理されている/処理されることになるブロック)から予測ブロックを減算して残差ブロックを取得し、残差ブロックを変換するとともに変換領域における残差ブロックを量子化して、送信されることになるデータ量を低減(圧縮)することによって、典型的にはブロック(ビデオブロック)レベルで処理される、すなわちエンコードされ、一方で、デコーダにおいて、現在のブロックを表現のために再構成するために、エンコーダと比較して逆の処理がエンコード又は圧縮されたブロックに適用される。さらに、エンコーダがデコーダの処理ループを繰り返すことにより、後続のブロックの処理のために、すなわちコーディングのために、両方が同一の予測(例えば、イントラ及びインター予測)及び/又は再構成物を生成することになる。
【0053】
以下、ビデオコーディングシステム10、ビデオエンコーダ20、及びビデオデコーダ30の実施形態が、図1A図3に基づいて説明される。
【0054】
図1Aは、本願の技術を使用し得る例示的なコーディングシステム10、例えばビデオコーディングシステム10(又は略してコーディングシステム10)を示す概略ブロック図である。ビデオコーディングシステム10のビデオエンコーダ20(又は略してエンコーダ20)及びビデオデコーダ30(又は略してデコーダ30)は、本願において説明される様々な例に従って技術を実行するように構成され得るデバイスの例を表す。
【0055】
図1Aに示すように、コーディングシステム10は、エンコード済みの画像データ21を、例えば、このエンコード済みの画像データをデコードするためにデスティネーションデバイス14に提供する(13)ように構成されているソースデバイス12を備える。
【0056】
ソースデバイス12は、エンコーダ20を備え、加えて、すなわち任意選択で、画像ソース16と、プリプロセッサ(又は前処理ユニット)18、例えば画像プリプロセッサ18と、通信インタフェース又は通信ユニット22とを備えてよい。
【0057】
画像ソース16は、任意の種類の画像捕捉デバイス、例えば、現実世界の画像を捕捉するカメラ、及び/又は、任意の種類の画像生成デバイス、例えば、コンピュータアニメーション化画像を生成するコンピュータグラフィックプロセッサ、又は、現実世界の画像、コンピュータ生成画像(例えば、スクリーンコンテンツ、仮想現実(VR)画像)、及び/又はそれらの任意の組み合わせ(例えば、拡張現実(AR)画像)を取得及び/又は提供する任意の種類の他のデバイスを含むか又はそれらのデバイスであってよい。画像ソースは、上述の画像の任意のものを保存する任意の種類のメモリ又はストレージであってよい。
【0058】
プリプロセッサ18及び前処理ユニット18によって実行される処理と区別するように、画像又は画像データ17は、生画像又は生画像データ17とも称され得る。
【0059】
プリプロセッサ18は、(生)の画像データ17を受信するとともに、画像データ17に対して前処理を実行して、前処理済みの画像19又は前処理済みの画像データ19を取得するように構成されている。プリプロセッサ18によって実行される前処理は、例えば、トリミング、カラーフォーマット変換(例えば、RGBからYCbCr)、色補正、又はノイズ除去を含んでよい。前処理ユニット18は任意選択のコンポーネントでもよいことが理解できる。
【0060】
ビデオエンコーダ20は、前処理済みの画像データ19を受信するとともに、エンコード済みの画像データ21を提供するように構成されている(更なる詳細は、例えば図2に基づいて下記で説明される)。
【0061】
ソースデバイス12の通信インタフェース22は、通信チャネル13を介して、エンコード済みの画像データ21を受信するとともに、エンコード済みの画像データ21(又はその任意の更なる処理バージョン)を、保存又は直接の再構成のために、別のデバイス、例えばデスティネーションデバイス14又は任意の他のデバイスに送信するよう構成されてよい。
【0062】
デスティネーションデバイス14は、デコーダ30(例えばビデオデコーダ30)を備え、加えて、すなわち任意選択で、通信インタフェース又は通信ユニット28と、ポストプロセッサ32(又は後処理ユニット32)と、ディスプレイデバイス34とを備えてよい。
【0063】
デスティネーションデバイス14の通信インタフェース28は、エンコード済みの画像データ21(又はその任意の更なる処理バージョン)を、例えばソースデバイス12から直接又は任意の他のソース、例えばストレージデバイス、例えばエンコード済みの画像データストレージデバイスから受信するとともに、エンコード済みの画像データ21をデコーダ30に提供するように構成されている。
【0064】
通信インタフェース22及び通信インタフェース28は、ソースデバイス12とデスティネーションデバイス14との間で、直接的な通信リンク、例えば、直接的な有線若しくは無線接続を介して、又は、任意の種類のネットワーク、例えば、有線若しくは無線ネットワーク若しくはそれらの任意の組み合わせ、若しくは、任意の種類のプライベート及びパブリックネットワーク若しくはそれらの任意の種類の組み合わせを介して、エンコード済みの画像データ21又はエンコード済みのデータを送信又は受信する(13)ように構成されてよい。
【0065】
通信インタフェース22は、例えば、エンコード済みの画像データ21を適切なフォーマットに、例えばパケットにパッケージ化する、及び/又は、通信リンク又は通信ネットワークを介した送信のための任意の種類の送信エンコーディング又は処理を用いて、エンコード済みの画像データを処理するように構成されてよい。
【0066】
通信インタフェース22のカウンターパートをなす通信インタフェース28は、例えば、送信されたデータを受信するとともに、任意の種類の対応する送信デコーディング又は処理及び/又はデパッケージングを用いて送信データを処理して、エンコード済みの画像データ21を取得するように構成されてよい。
【0067】
通信インタフェース22及び通信インタフェース28は両方とも、図1Aにおいてソースデバイス12からデスティネーションデバイス14に向く通信チャネル13の矢印で示すように単方向通信インタフェースとして、又は、双方向通信インタフェースとして構成されてよく、例えば、メッセージを送信及び受信する、例えば、接続を設定し、通信リンク及び/又はデータ送信、例えばエンコード済みの画像データ送信に関連する任意の他の情報を確認及びやりとりするように構成されてよい。
【0068】
デコーダ30は、エンコード済みの画像データ21を受信するとともに、デコード済みの画像データ31又はデコード済みの画像31を提供するように構成されている(更なる詳細は、例えば図3又は図5に基づいて下記で説明される)。
【0069】
デスティネーションデバイス14のポストプロセッサ32は、デコード済みの画像データ31(再構成画像データとも呼ばれる)、例えばデコード済みの画像31を後処理して、後処理済みの画像データ33、例えば後処理済みの画像33を取得するように構成されている。後処理ユニット32により行われる後処理は、例えば、デコード済みの画像データ31を、例えば、ディスプレイデバイス34による表示のために準備する目的で、例えば、カラーフォーマット変換(例えば、YCbCrからRGBへ)、色補正、トリミング、若しくは再サンプリング、又は任意の他の処理を含んでよい。
【0070】
デスティネーションデバイス14のディスプレイデバイス34は、画像を例えばユーザ又は視聴者に表示するために、後処理済みの画像データ33を受信するように構成されている。ディスプレイデバイス34は、再構成画像を表現するための任意の種類のディスプレイ、例えば、一体型又は外付けのディスプレイ又はモニタであってもよく、これを含んでもよい。ディスプレイは、例えば、液晶ディスプレイ(LCD)、有機発光ダイオード(OLED)ディスプレイ、プラズマディスプレイ、プロジェクタ、マイクロLEDディスプレイ、液晶オンシリコン(LCoS)、デジタル光プロセッサ(DLP)、又は任意の種類の他のディスプレイを含んでよい。
【0071】
図1Aはソースデバイス12とデスティネーションデバイス14とを別個のデバイスとして示しているが、デバイスの実施形態は、それらの両方又は両方の機能、すなわち、ソースデバイス12又は対応する機能と、デスティネーションデバイス14又は対応する機能とを備えてもよい。そのような実施形態では、ソースデバイス12又は対応する機能及びデスティネーションデバイス14又は対応する機能は、同じハードウェア及び/又はソフトウェアを使用して、又は別個のハードウェア及び/又はソフトウェア又はそれらの任意の組み合わせによって実装され得る。
【0072】
本説明に基づいて当業者には明らかであるように、図1Aに示すような、異なるユニットの機能又はソースデバイス12及び/又はデスティネーションデバイス14内の機能の存在及び(正確な)分割は、実際のデバイス及びアプリケーションに応じて変わり得る。
【0073】
エンコーダ20(例えば、ビデオエンコーダ20)又はデコーダ30(例えば、ビデオデコーダ30)又はエンコーダ20及びデコーダ30の両方は、1つ又は複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリートロジック、ハードウェア、ビデオコーディング専用又はそれらの任意の組み合わせ等の、図1Bに示すような処理回路を介して実装されてよい。エンコーダ20は、図2のエンコーダ20及び/又は本明細書に記載の任意の他のエンコーダシステム又はサブシステムに関連して説明される様々なモジュールを具現するために処理回路46を介して実装されてよい。デコーダ30は、図3のデコーダ30及び/又は本明細書に記載の任意の他のデコーダシステム又はサブシステムに関連して説明される様々なモジュールを具現するために処理回路46を介して実施されてよい。処理回路は、後で説明されるように様々な操作を実行するように構成されてよい。図5に示すように、本技術がソフトウェアにおいて部分的に実施される場合、デバイスは、好適な非一時的コンピュータ可読記憶媒体にソフトウェアのための命令を保存してよく、ハードウェア内で1つ又は複数のプロセッサを用いて命令を実行して、本開示の技術を実現してよい。ビデオエンコーダ20及びビデオデコーダ30のいずれかは、図1Bに示すように、例えば、単一のデバイス内の組み合わされたエンコーダ/デコーダ(コーデック)の一部として統合されてよい。
【0074】
ソースデバイス12及びデスティネーションデバイス14は、任意の種類のハンドヘルド又はステーショナリデバイス、例えば、ノートブック又はラップトップコンピュータ、携帯電話、スマートフォン、タブレット又はタブレットコンピュータ、カメラ、デスクトップコンピュータ、セットトップボックス、テレビ、ディスプレイデバイス、デジタルメディアプレイヤ、ビデオゲーミングコンソール、ビデオストリーミングデバイス(コンテンツサービスサーバ又はコンテンツ配信サーバ等)、ブロードキャスト受信機デバイス、ブロードキャスト送信機デバイス等を含む、広範なデバイスのいずれかを備えてよく、オペレーティングシステムを用いない又は任意の種類のオペレーティングシステムを用いてよい。いくつかの場合、ソースデバイス12及びデスティネーションデバイス14は、無線通信に対応してよい。したがって、ソースデバイス12及びデスティネーションデバイス14は、無線通信デバイスとしてよい。
【0075】
いくつかの場合、図1Aに示すビデオコーディングシステム10は、単に例であり、本願の技術は、エンコーディングデバイスとデコーディングデバイスとの間の任意のデータ通信を必ずしも含まないビデオコーディング設定(例えば、ビデオエンコーディング又はビデオデコーディング)に適用されてよい。他の例において、データは、ローカルメモリから取得され、ネットワークを介してストリーム等される。ビデオエンコーディングデバイスは、データをメモリにエンコードして格納してよく、及び/又は、ビデオデコーディングデバイスは、データをメモリからデコードして取得してよい。いくつかの例において、エンコーディング及びデコーディングは、互いに通信しないが単にデータをメモリにエンコードする及び/又はデータをメモリから取得するとともにデコードするデバイスによって実行される。
【0076】
説明の便宜上、例えば、ITU-Tビデオコーディング専門家グループ(VCEG)及びISO/IEC動画像専門家グループ(MPEG)のビデオコーディングに関する共同作業チーム(JCT-VC)によって開発された次世代ビデオコーディング規格である、高効率ビデオコーディング(HEVC)又は多目的ビデオコーディング(VVC)のリファレンスソフトウェアを参照して、本願の実施形態が本明細書で説明される。当業者であれば、本願の実施形態はHEVC又はVVCに限定されないことを理解する。
【0077】
[エンコーダ及びエンコーディング方法]
【0078】
図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は、ハイブリッドビデオエンコーダ、又はハイブリッドビデオコーデックによるビデオエンコーダとも称され得る。
【0079】
残差計算ユニット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の「内蔵デコーダ」を形成するものとも言及される。
【0080】
[画像及び画像区分化(画像及びブロック)]
【0081】
エンコーダ20は、例えば、入力201を介して、画像17(又は画像データ17)、例えば、ビデオ又はビデオシーケンスを形成する一連の画像のうちの画像を受信するように構成されてよい。受信された画像又は画像データは、前処理済みの画像19(又は前処理済みの画像データ19)であってもよい。簡潔さのために、以下の説明では画像17が参照される。画像17は、現在の画像又はコードされる画像とも称され得る(特に、ビデオコーディングにおいて、現在の画像を他の画像、例えば、同じビデオシーケンス、すなわち現在の画像も含むビデオシーケンスの、以前にエンコード済み及び/又はデコード済みの画像から区別するために)。
【0082】
(デジタル)画像は、強度値を持つサンプルの二次元アレイ又はマトリックスであるか、それとみなされ得る。アレイ内のサンプルは、画素(画像要素の略称)又はペルとも称され得る。アレイ又は画像の水平及び垂直方向(又は軸)のサンプル数は、画像のサイズ及び/又は解像度を定義する。色を表現するために、典型的には3つの色成分が使用され、すなわち、画像は、3つのサンプルアレイで表されても又はこれを含んでもよい。RBG形式又は色空間では、画像は対応する赤、緑、及び青のサンプルアレイを含む。しかしながら、ビデオコーディングでは、各画素は、典型的には輝度及びクロミナンス形式又は色空間、例えばYCbCrで表され、これには、Y(代わりにLが用いられる場合もある)で示される輝度成分と、Cb及びCrで示される2つのクロミナンス成分とが含まれる。輝度(又は略してルマ(luma))成分Yは、明るさ又は(例えば、グレースケール画像でのような)グレーレベルの強度を表し、2つのクロミナンス(又は略してクロマ(chroma))成分であるCb及びCrは、色度又は色情報成分を表す。したがって、YCbCr形式の画像は、輝度サンプル値(Y)の輝度サンプルアレイと、クロミナンス値(Cb及びCr)の2つのクロミナンスサンプルアレイとを含む。RGB形式の画像は、YCbCr形式に転換又は変換され得、その逆もまた同様であり、このプロセスは、色変換又は転換としても知られている。画像がモノクロの場合、画像は輝度サンプルアレイのみを含んでよい。したがって、画像は、例えば、モノクロ形式におけるルマサンプルのアレイ、又は、4:2:0、4:2:2、及び4:4:4のカラー形式におけるルマサンプルのアレイ及びクロマサンプルの2つの対応するアレイであってよい。
【0083】
ビデオエンコーダ20の実施形態は、画像17を複数の(典型的には非重複)画像ブロック203に区分化するように構成されている画像区分化ユニット(図2には示されない)を備えてよい。これらのブロックは、根ブロック、マクロブロック(H.264/AVC)又はコーディングツリーブロック(CTB)又はコーディングツリーユニット(CTU)(H.265/HEVC及びVVC)とも称され得る。画像区分化ユニットは、ビデオシーケンスの全ての画像及びブロックサイズを画定する対応するグリッドに同じブロックサイズを使用するか、又は、画像又は画像のサブセット若しくはグループ間でブロックサイズを変化させて、各画像を対応するブロックに区分化するように構成されてよい。
【0084】
更なる実施形態において、ビデオエンコーダは、画像17のブロック203、例えば、画像17を形成する1つ、いくつか、又は全てのブロックを直接受信するように構成されてよい。画像ブロック203は、現在の画像ブロック又はコードされる画像ブロックとも称され得る。
【0085】
画像17と同様にここでも、画像ブロック203は、画像17よりも寸法が小さいが、強度値(サンプル値)を持つサンプルの二次元アレイ又はマトリックスであるか、又は、それとみなすことができる。換言すれば、ブロック203は、例えば、1つのサンプルアレイ(例えば、モノクロ画像17の場合はルマアレイ、又は、カラー画像の場合はルマ若しくはクロマアレイ)、又は3つのサンプルアレイ(例えば、カラー画像17の場合はルマ及び2つのクロマアレイ)、又は、適用されるカラーフォーマットに応じた任意の他の数及び/又は種類のアレイを備えてよい。ブロック203の水平及び垂直方向(又は軸)のサンプル数は、ブロック203のサイズを定義する。したがって、ブロックは、例えば、サンプルのM×N(M列×N行)アレイ、又は変換係数のM×Nアレイであってよい。
【0086】
図2に示すビデオエンコーダ20の実施形態は、画像17をブロック毎にエンコードするように構成されてよく、例えば、エンコーディング及び予測がブロック203毎に実行される。
【0087】
[残差計算]
【0088】
残差計算ユニット204は、例えば、サンプル毎(画素毎)に画像ブロック203のサンプル値から予測ブロック265のサンプル値を減算し、サンプル領域における残差ブロック205を取得することによって、画像ブロック203及び予測ブロック265に基づいて(予測ブロック265に関する更なる詳細は後で提供される)、残差ブロック205(残差205とも称される)を計算するように構成されてよい。
【0089】
[変換]
【0090】
変換処理ユニット206は、残差ブロック205のサンプル値に対して変換、例えば、離散コサイン変換(DCT)又は離散サイン変換(DST)を適用し、変換領域における変換係数207を取得するように構成されてよい。変換係数207は、変換残差係数とも称され得、変換領域における残差ブロック205を表す。
【0091】
変換処理ユニット206は、H.265/HEVCに指定された変換等のDCT/DSTの整数近似を適用するように構成されてよい。直交DCT変換に比較して、そのような整数近似は、典型的には特定の係数によってスケーリングされる。順変換及び逆変換によって処理される残差ブロックのノルムを保存するべく、変換プロセスの一部として追加のスケーリング係数が適用される。スケーリング係数は、典型的には、シフト操作に関して2のべき乗であるスケーリング係数、変換係数のビット深度、確度と実装コストとの間のトレードオフ等のような特定の制約に基づいて選択される。例えば、特定のスケーリング係数が、例えば、逆変換処理ユニット212による逆変換(及び、例えばビデオデコーダ30における逆変換処理ユニット312による対応する逆変換)に指定され、例えば、エンコーダ20における変換処理ユニット206による順方向変換のための対応するスケーリング係数が、相応に指定されてよい。
【0092】
ビデオエンコーダ20の実施形態は(それぞれ変換処理ユニット206)は、変換パラメータ、例えば単数又は複数の変換のタイプを、例えば、直接又はエントロピーエンコーディングユニット270を介してエンコード若しくは圧縮してから出力するように構成されてよく、それにより、例えば、ビデオデコーダ30は、デコーディングのための変換パラメータを受信して使用してよい。
【0093】
[量子化]
【0094】
量子化ユニット208は、例えば、スカラ量子化又はベクトル量子化を適用することによって、変換係数207を量子化して、量子化係数209を取得するように構成されてよい。量子化係数209は、量子化変換係数209又は量子化残差係数209とも称され得る。
【0095】
量子化プロセスは、変換係数207のいくつか又は全てに関連付けられたビット深度を減少させ得る。例えば、nビット変換係数は、量子化中にmビット変換係数に丸められてよく、ここでnはmよりも大きい。量子化の程度は、量子化パラメータ(QP)を調整することによって変更されてよい。例えば、スカラ量子化の場合、より細かい又はより粗い量子化を達成するために、異なるスケーリングが適用されてよい。量子化段階サイズが小さいほど細かい量子化に対応し、一方で、量子化段階サイズが大きいほど粗い量子化に対応する。適用可能な量子化段階サイズは、量子化パラメータ(QP)によって示され得る。量子化パラメータは、例えば、適用可能な量子化段階サイズの予め定義されたセットへのインデックスであり得る。例えば、小さな量子化パラメータは細かい量子化(小さな量子化段階サイズ)に対応し得、大きな量子化パラメータは粗い量子化(大きな量子化段階サイズ)に対応し得るか、又は逆もまた同様である。量子化は、量子化段階サイズによる除算を含んでよく、例えば逆量子化ユニット210による対応する及び/又は逆の量子化解除は、量子化段階サイズによる乗算を含んでよい。いくつかの規格、例えばHEVCに従った実施形態は、量子化段階サイズを決定するのに量子化パラメータを使用するように構成されてよい。概して、量子化段階サイズは、除算を含む方程式の固定小数点近似を使用する量子化パラメータに基づいて算出され得る。残差ブロックのノルムを復元するために、量子化及び量子化解除に追加のスケーリング係数を導入し得、これは、量子化段階サイズ及び量子化パラメータの方程式の固定小数点近似で使用されるスケーリングに起因して変更され得る。一例の実装では、逆変換及び量子化解除のスケーリングは組み合わされ得る。代替的には、カスタマイズされた量子化テーブルが使用され、例えばビットストリームにおいてエンコーダからデコーダにシグナリングされてよい。量子化は不可逆演算であり、損失は量子化段階サイズの増加に伴って増加する。
【0096】
ビデオエンコーダ20の実施形態(それぞれ量子化ユニット208)は、量子化パラメータ(QP)、例えば直接か又はエントロピーエンコーディングユニット270を介してエンコードしてから出力するように構成されてよく、それにより、例えば、ビデオデコーダ30は、デコーディングのための量子化パラメータを受信して適用してよい。
【0097】
[逆量子化]
【0098】
逆量子化ユニット210は、例えば、量子化ユニット208と同じ量子化段階サイズに基づいて又はそれを使用して量子化ユニット208によって適用された量子化スキームの逆を適用することによって、量子化係数に対して量子化ユニット208の逆量子化を適用し、量子化解除係数211を取得するように構成されている。量子化解除係数211は、量子化解除残差係数211とも称され得、典型的には量子化による損失に起因して変換係数とは同一でないが、変換係数207に対応する。
【0099】
[逆変換]
【0100】
逆変換処理ユニット212は、変換処理ユニット206によって適用された変換の逆変換、例えば、逆離散コサイン変換(DCT)又は逆離散サイン変換(DST)又は他の逆変換を適用し、サンプル領域における再構成残差ブロック213(又は対応する量子化解除係数213)を取得するように構成されている。再構成残差ブロック213は、変換ブロック213とも称され得る。
【0101】
[再構成]
【0102】
再構成ユニット214(例えば、加算器又は合算器214)は、例えば、サンプル毎に、再構成残差ブロック213のサンプル値と予測ブロック265のサンプル値とを加算することによって、変換ブロック213(すなわち、再構成残差ブロック213)を予測ブロック265に加算し、サンプル領域における再構成ブロック215を取得するように構成されている。
【0103】
[フィルタリング]
【0104】
ループフィルタユニット220(又は、略して「ループフィルタ」220)は、再構成ブロック215をフィルタして、フィルタリング済みのブロック221を取得する、又は、一般に、再構成サンプルをフィルタして、フィルタリング済みのサンプルを取得するように構成されている。ループフィルタユニットは、例えば、画素遷移を滑らかにする、又は、別様にビデオ品質を改善するように構成されている。ループフィルタユニット220は、デブロッキングフィルタ、サンプル適応オフセット(SAO)フィルタ、又は、1つ又は複数の他のフィルタ、例えば、バイラテラルフィルタ、適応ループフィルタ(ALF)、鮮明化、平滑化フィルタ若しくは協調フィルタ、又は、それらの任意の組み合わせ等の、1つ又は複数のループフィルタを備えてよい。ループフィルタユニット220が、ループフィルタ内にあるものとして図2に示されているが、他の構成では、ループフィルタユニット220はポストループフィルタとして実装されてもよい。フィルタリング済みのブロック221は、フィルタリング済みの再構成ブロック221とも称され得る。
【0105】
ビデオエンコーダ20の実施形態(それぞれループフィルタユニット220)は、ループフィルタパラメータを(サンプル適応オフセット情報等)、例えば、直接又はエントロピーエンコーディングユニット270を介してエンコードしてから出力するように構成されてよく、それにより、例えば、デコーダ30は、デコーディングのために同じループフィルタパラメータ又はそれぞれのループフィルタを受信して適用してよい。
【0106】
[デコード済みの画像バッファ]
【0107】
デコード済みの画像バッファ(DPB)230は、ビデオエンコーダ20によってビデオデータをエンコードするための参照画像、又は一般に参照画像データを保存するメモリであってよい。DPB230は、シンクロナスDRAM(SDRAM)、磁気抵抗RAM(MRAM)、抵抗RAM(RRAM(登録商標))、又は他のタイプのメモリデバイスを含む、ダイナミックランダムアクセスメモリ(DRAM)等の様々なメモリデバイスのうちの任意のものによって形成されてよい。デコード済みの画像バッファ(DPB)230は、1つ又は複数のフィルタリング済みのブロック221を保存するように構成されてよい。デコード済みの画像バッファ230は、同じ現在の画像又は異なる画像、例えば、以前に再構成された画像の他の以前にフィルタリング済みのブロック、例えば、以前に再構成され且つフィルタリング済みのブロック221を保存するようにさらに構成されてよく、例えば、インター予測のために、以前に再構成された、すなわちデコード済みの、完全な画像(並びに、対応する参照ブロック及びサンプル)、及び/又は、部分的に再構成された現在の画像(並びに、対応する参照ブロック及びサンプル)を提供してよい。デコード済みの画像バッファ(DPB)230は、例えば、再構成ブロック215がループフィルタユニット220によってフィルタリングされていない場合、1つ又は複数のフィルタリングされていない再構成ブロック215、又は一般に、フィルタリングされていない再構成サンプル、又は、再構成ブロック若しくはサンプルの任意の他のさらに処理されたバージョンを保存するように構成されてもよい。
【0108】
[モード選択(区分化及び予測)]
【0109】
モード選択ユニット260は、区分化ユニット262と、インター予測ユニット244と、イントラ予測ユニット254とを備え、元の画像データ、例えば元のブロック203(現在の画像17の現在のブロック203)、及び再構成画像データ、例えば、同じ(現在の)画像の及び/又は1つ又は複数の以前にデコード済みの画像からの、例えばデコード済みの画像バッファ230若しくは他のバッファ(例えば、図示しないラインバッファ)からのフィルタリング済み及び/又はフィルタリングされていない再構成サンプル若しくはブロックを受信又は取得するように構成されている。再構成画像データは、予測ブロック265又は予測因子265を得るために、予測、例えばインター予測又はイントラ予測のための参照画像データとして使用される。
【0110】
モード選択ユニット260は、現在のブロック予測モード(区分化を含まない)のための区分化及び予測モード(例えば、イントラ又はインター予測モード)を決定又は選択し、対応する予測ブロック265を生成するように構成されてよく、予測ブロック265は、残差ブロック205の計算のため及び再構成ブロック215の再構成のために使用される
【0111】
モード選択ユニット260の実施形態は、区分化及び予測モード(例えば、モード選択ユニット260によってサポートされているもの又はモード選択ユニット260に利用可能なものから)選択するように構成されてよく、これにより、最良のマッチ、又は換言すれば、最小残差(最小残差は、送信又は保存のための圧縮率がより良好であることを意味する)、又は、最小シグナリングオーバヘッド(最小シグナリングオーバヘッドは、送信又は保存のための圧縮率がより良好であることを意味する)、又はこれらの両方を考慮した若しくはバランスを取ったものを提供する。モード選択ユニット260は、レート歪み最適化(RDO)に基づいて区分化及び予測モードを決定する、すなわち、最小レート歪みを提供する予測モードを選択するように構成されてよい。この文脈において「最良」、「最小」、「最適」等のような用語は、全般的な「最良」、「最小」、「最適」等を必ずしも指さず、値が閾値又は他の制約を超過又は下回り、潜在的に「準最適選択」につながるが複雑性及び処理時間を低減するような、終了又は選択基準の達成を指してもよい。
【0112】
換言すれば、区分化ユニット262は、例えば、四分木区分化(QT)、二分木区分化(BT)、若しくは三分木区分化(TT)、又はそれらの任意の組み合わせを繰り返し用いて、ブロック203をより小さいブロック区分又はサブブロック(ここでもブロックを形成する)に区分化するように、また、例えば、ブロック区分又はサブブロックのそれぞれのための予測を実行するように構成されてよく、モード選択は、区分化されたブロック203の木構造の選択を含み、予測モードは、ブロック区分又はサブブロックのそれぞれに適用される。
【0113】
以下では、例示のビデオエンコーダ20によって実行される、区分化(例えば、区分化ユニット260による)及び予測処理(インター予測ユニット244及びイントラ予測ユニット254による)をより詳細に説明する。
【0114】
[区分化]
【0115】
区分化ユニット262は、現在のブロック203をより小さい区分、例えば、正方形又は長方形サイズのより小さいブロックに区分化(又は分割)してよい。これらのより小さいブロック(サブブロックとも称され得る)は、さらにより小さい区分にさらに区分化されてよい。これは、ツリー区分化若しくは階層的ツリー区分化とも称され、ここで、例えば根ツリーレベル0(階層レベル0、深度0)にある根ブロックは、再帰的に区分化、例えば、次に低いツリーレベル、例えばツリーレベル1(階層レベル1、深度1)にある節点の2又は2より多いブロックに区分化されてよく、これらのブロックは、例えば終了基準が達成されたことで、例えば最大ツリー深度又は最小ブロックサイズに達したことで、区分化が終了するまで、次に低いレベル、例えばツリーレベル2(階層レベル2、深度2)の2又は2より多いブロックに再度区分化される等してよい。さらに区分化されないブロックは、ツリーの葉ブロック又は葉節点とも称される。2つの区分への区分化を用いるツリーは、二分木(BT)と称され、3つの区分への区分化を用いるツリーは、三分木(TT)と称され、4つの区分への区分化を用いるツリーは、四分木(QT)と称される。
【0116】
前で言及したように、本明細書で使用される「ブロック」という用語は、画像の部分、特に正方形又は長方形部分であってよい。例えばHEVC及びVVCを参照すると、ブロックは、コーディングツリーユニット(CTU)、コーディングユニット(CU)、予測ユニット(PU)、及び変換ユニット(TU)、及び/又は、対応するブロック、例えば、コーディングツリーブロック(CTB)、コーディングブロック(CB)、変換ブロック(TB)、若しくは予測ブロック(PB)であるか、又はそれらに対応してよい。
【0117】
例えば、コーディングツリーユニット(CTU)は、3つのサンプルアレイを有する画像のルマサンプルのCTB、クロマサンプルの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)と称される、現在開発中の最新のビデオコーディング規格に従う実施形態において、四分木及び二分木(QTBT)区分化がコーディングブロックを区分化するのに使用される。QTBTブロック構造では、CUは、正方形又は長方形のいずれかとすることができる。例えば、コーディングツリーユニット(CTU)が、まず四分木構造で区分化される。四分木の葉節点は、二分木又は三分(ternary (or triple))木構造によってさらに区分化される。区分化ツリーの葉節点は、コーディングユニット(CU)と呼ばれ、そのセグメンテーションは、いかなる更なる区分化も行わずに予測及び変換処理に使用される。つまり、CU、PU、及びTUはQTBTコーディングブロック構造において同じブロックサイズを有する。並行して、複数の区分化、例えば、三分木区分もQTBTブロック構造と一緒に用いるよう提案された。
【0120】
一例において、ビデオエンコーダ20のモード選択ユニット260は、本明細書に記載の区分化技術の任意の組み合わせを実行するように構成されてよい。
【0121】
上述したように、ビデオエンコーダ20は、(事前決定された)予測モードのセットから最良又は最適な予測モードを決定又は選択するように構成されている。予測モードのセットは、例えば、イントラ予測モード及び/又はインター予測モードを含んでよい。
【0122】
[イントラ予測]
【0123】
イントラ予測モードのセットは、35の異なるイントラ予測モード、例えば、DC(又はミーン)モード及び平面モードのような無方向性モード、若しくは、例えばHEVCにおいて定義されているような、方向性モードを含んでよく、又は、67の異なるイントラ予測モード、例えば、DC(又はミーン)モード及び平面モードのような無方向性モード、若しくは、例えばVVCに定義されている、方向性モードを含んでよい。
【0124】
イントラ予測ユニット254は、同じ現在の画像の隣接ブロックの再構成サンプルを使用して、イントラ予測モードのセットのうちのイントラ予測モードに従って、イントラ予測ブロック265を生成するように構成されている。
【0125】
イントラ予測ユニット254(又は一般にモード選択ユニット260)は、イントラ予測パラメータ(又は一般に、ブロックのために選択されたイントラ予測モードを示す情報)を、エンコード済みの画像データ21に含まれるようにシンタックス要素266の形態でエントロピーエンコーディングユニット270に出力するようにさらに構成され、それにより、例えば、ビデオデコーダ30は、デコーディングのための予測パラメータを受信して使用してよい。
【0126】
[インター予測]
【0127】
インター予測モードのセット(又は可能なインター予測モード)は、利用可能な参照画像(すなわち、例えばDBP230に保存された、以前の少なくとも部分的にデコード済みの画像)及び他のインター予測パラメータ、例えば、最良にマッチする参照ブロックの検索に使用されたのは、参照画像の全体なのか若しくは参照画像の一部のみ、例えば、現在のブロックのエリアの周りの検索窓エリアなのか、及び/又は、例えば、画素補間、例えばハーフ/セミペル及び/又はクオータペル補間が適用されたか否かに依拠する。
【0128】
上記の予測モードに加えて、スキップモード及び/又は直接モードが適用されてもよい。
【0129】
インター予測ユニット244は、動き予測(ME)ユニット及び動き補償(MC)ユニット(両方とも図2には図示せず)を備えてよい。動き推定ユニットは、動き予測のために、画像ブロック203(現在の画像17の現在の画像ブロック203)及びデコード済みの画像231、又は、少なくとも1つ又は複数の以前に再構成されたブロック、例えば1つ又は複数の他の/異なる以前にデコード済みの画像231の再構成ブロックを受信又は取得するように構成されてよい。例えば、ビデオシーケンスは、現在の画像及び以前にデコード済みの画像231を含んでよく、又は換言すれば、現在の画像及び以前にデコード済みの画像231は、ビデオシーケンスを形成する一連の画像の一部であるか又はそれを形成してよい。
【0130】
エンコーダ20は、例えば、複数の他の画像のうちの同じ又は異なる画像の複数の参照ブロックから参照ブロックを選択し、インター予測パラメータとして参照画像(又は参照画像インデックス)及び/又は参照ブロックの位置(x、y座標)と現在のブロックの位置との間のオフセット(空間的オフセット)を動き推定ユニットに提供するように構成してよい。このオフセットは、動きベクトル(MV)とも呼ばれる。
【0131】
動き補償ユニットは、インター予測パラメータを取得、例えば受信するとともに、そのインター予測パラメータに基づいて又はそれを使用してインター予測を実行して、インター予測ブロック265を取得するように構成されている。動き補償ユニットによって実行される動き補償は、動き予測によって決定された動き/ブロックベクトルに基づいて予測ブロックをフェッチ又は生成し、場合によって副画素精度までの補間を実行することを伴ってよい。補間フィルタリングは、既知の画素サンプルから更なる画素サンプルを生成してよく、したがって、画像ブロックをコードするのに用いられ得る候補予測ブロックの数を潜在的に増加させる。現在の画像ブロックのPUのための動きベクトルを受信すると、動き補償ユニットは、参照画像リストのうちの1つにおいて動きベクトルが指し示す予測ブロックを位置特定してよい。
【0132】
動き補償ユニットは、ビデオスライスの画像ブロックをデコードする際にビデオデコーダ30によって用いられる、ブロック及びビデオスライスに関連付けられるシンタックス要素を生成してもよい。
【0133】
[エントロピーコーディング]
【0134】
エントロピーエンコーディングユニット270は、例えば、エントロピーエンコーディングアルゴリズム又はスキーム(例えば、可変長コーディング(VLC)スキーム、コンテキスト適応VLCスキーム(CAVLC)、算術コーディングスキーム、バイナリゼーション、コンテキスト適応バイナリ算術コーディング(CABAC)、シンタックスベースのコンテキスト適応バイナリ算術コーディング(SBAC)、確率インターバル区分化エントロピー(PIPE)コーディング、又は、別のエントロピーエンコーディング方法若しくは技術)、又はバイパス(無圧縮)を、量子化係数209、インター予測パラメータ、イントラ予測パラメータ、ループフィルタパラメータ、及び/又は他のシンタックス要素に適用し、例えばエンコード済みのビットストリーム21の形態で出力272を介して出力できるエンコード済みの画像データ21を取得するように構成され、それにより、例えば、ビデオデコーダ30は、デコーディングのためのパラメータを受信して使用してよい。エンコード済みのビットストリーム21は、ビデオデコーダ30に送信、又は、後でビデオデコーダ30によって送信又は取得するためにメモリに保存されてよい。
【0135】
ビデオエンコーダ20の他の構造上の変形を、ビデオストリームをエンコードするのに用いることができる。例えば、非変換ベースのエンコーダ20は、特定のブロック又はフレームのための変換処理ユニット206を用いずに直接的に残差信号を量子化できる。別の実装において、エンコーダ20は、単一のユニットに組み合わされた量子化ユニット208及び逆量子化ユニット210を有することができる。
【0136】
[デコーダ及びデコーディング方法]
【0137】
図3は、本願の技術を実施するように構成されているビデオデコーダ30の例を示している。ビデオデコーダ30は、例えばエンコーダ20によってエンコードされた、エンコード済みの画像データ21(例えば、エンコード済みのビットストリーム21)を受信して、デコード済みの画像331を取得するように構成されている。エンコード済みの画像データ又はビットストリームは、エンコード済みの画像データをデコードするための情報、例えば、エンコード済みのビデオスライスの画像ブロック及び関連するシンタックス要素を表すデータを含む。
【0138】
図3の例において、デコーダ30は、エントロピーデコーディングユニット304、逆量子化ユニット310、逆変換処理ユニット312、再構成ユニット314(例えば、合算器314)、ループフィルタ320、デコード済みの画像バッファ(DBP)330、インター予測ユニット344、及びイントラ予測ユニット354を備える。インター予測ユニット344は、動き補償ユニットであるか又はこれを備えてよい。ビデオデコーダ30は、いくつかの例では、図2のビデオエンコーダ100に関して説明されたエンコーディングパスに対して概ね逆のデコーディングパスを実行してよい。
【0139】
エンコーダ20に関して説明したように、逆量子化ユニット210、逆変換処理ユニット212、再構成ユニット214、ループフィルタ220、デコード済みの画像バッファ(DPB)230、インター予測ユニット344、及びイントラ予測ユニット354も、ビデオエンコーダ20の「内蔵デコーダ」を形成するものとして言及される。したがって、逆量子化ユニット310は、逆量子化ユニット110と機能的に同一であってよく、逆変換処理ユニット312は、逆変換処理ユニット212と機能的に同一であってよく、再構成ユニット314は、再構成ユニット214と機能的に同一であってよく、ループフィルタ320は、ループフィルタ220と機能的に同一であってよく、デコード済みの画像バッファ330は、デコード済みの画像バッファ230と機能的に同一であってよい。したがって、ビデオエンコーダ20のそれぞれのユニット及び機能について提供された説明は、ビデオデコーダ30のそれぞれのユニット及び機能に対応するように当てはまる。
【0140】
[エントロピーデコーディング]
【0141】
エントロピーデコーディングユニット304は、ビットストリーム21(又は一般にエンコード済みの画像データ21)をパースし、例えば、エンコード済みの画像データ21にエントロピーデコーディングを実行して、例えば量子化係数309及び/又はデコードされたコーディングパラメータ(図3には図示せず)、例えば、インター予測パラメータ(例えば、参照画像インデックス及び動きベクトル)、イントラ予測パラメータ(例えば、イントラ予測モード又はインデックス)、変換パラメータ、量子化パラメータ、ループフィルタパラメータ、及び/又は他のシンタックス要素のいずれか又は全てを取得するように構成されている。エントロピーデコーディングユニット304は、エンコーダ20のエントロピーエンコーディングユニット270に関して記載されたエンコーディングスキームに対応するデコーディングアルゴリズム又はスキームを適用するように構成されてよい。エントロピーデコーディングユニット304は、インター予測パラメータ、イントラ予測パラメータ、及び/又は他のシンタックス要素をモード選択ユニット360に、また他のパラメータをデコーダ30の他のユニットに提供するようにさらに構成されてよい。ビデオデコーダ30は、ビデオスライスレベルで及び/又はビデオブロックレベルで、シンタックス要素を受信してよい。
【0142】
[逆量子化]
【0143】
逆量子化ユニット310は、エンコード済みの画像データ21から量子化パラメータ(QP)(又は一般に逆量子化に関連する情報)及び量子化係数を受信する(例えばエントロピーデコーディングユニット304によって、例えばパース及び/又はデコードすることによって)とともに、量子化パラメータに基づいて、デコード済みの量子化係数309に逆量子化を適用し、変換係数311とも称され得る量子化解除係数311を取得するように構成されてよい。逆量子化プロセスは、量子化の程度、また同様に適用されるべき逆量子化の程度を決定するために、ビデオスライス内のビデオブロック毎にビデオエンコーダ20によって決定される量子化パラメータの使用を含んでよい。
【0144】
[逆変換]
【0145】
逆変換処理ユニット312は、変換係数311とも称される量子化解除係数311を受信するとともに、サンプル領域における再構成残差ブロック213を取得するべく、量子化解除係数311に変換を適用するように構成されてよい。再構成残差ブロック213は、変換ブロック313とも称され得る。変換は、逆変換、例えば、逆DCT、逆DST、逆整数変換、又は概念的に同様の逆変換プロセスであってよい。逆変換処理ユニット312は、エンコード済みの画像データ21から変換パラメータ又は対応する情報を受信し(例えばエントロピーデコーディングユニット304によって、例えばパース及び/又はデコードすることによって)、量子化解除係数311に適用されるべき変換を決定するようにさらに構成されてよい。
【0146】
[再構成]
【0147】
再構成ユニット314(例えば、加算器又は合算器314)は、再構成残差ブロック313を予測ブロック365に加算し、例えば、再構成残差ブロック313のサンプル値と予測ブロック365のサンプル値とを加算することによって、サンプル領域における再構成ブロック315を取得するように構成されてよい。
【0148】
[フィルタリング]
【0149】
ループフィルタユニット320(コーディングループ内又はコーディングループの後のいずれかにある)は、例えば、画素遷移を滑らかにするように又はビデオ品質を別様に改善するように、再構成ブロック315をフィルタして、フィルタリング済みのブロック321を取得するように構成されている。ループフィルタユニット320は、デブロッキングフィルタ、サンプル適応オフセット(SAO)フィルタ、又は、1つ又は複数の他のフィルタ、例えば、バイラテラルフィルタ、適応ループフィルタ(ALF)、鮮明化、平滑化フィルタ若しくは協調フィルタ、又は、それらの任意の組み合わせ等の、1つ又は複数のループフィルタを備えてよい。ループフィルタユニット320が、ループフィルタ内にあるものとして図3に示されているが、他の構成では、ループフィルタユニット320はポストループフィルタとして実装されてもよい。
【0150】
[デコード済みの画像バッファ]
【0151】
画像のデコード済みのビデオブロック321は、その後、デコード済みの画像バッファ330に保存され、デコード済みの画像バッファ330は、デコード済みの画像331を他の画像の後続の動き補償のための及び/又はそれぞれ表示を出力するための参照画像として保存する。
【0152】
デコーダ30は、例えば出力312を介して、ユーザに提示又は閲覧させるために、デコード済みの画像311を出力するように構成されている。
【0153】
[予測]
【0154】
インター予測ユニット344は、インター予測ユニット244(特に、動き補償ユニット)と同一であってよく、イントラ予測ユニット354は、インター予測ユニット254と機能的に同一であってよく、エンコード済みの画像データ21から受信(例えば、エントロピーデコーディングユニット304によって、例えば、パース及び/又はデコードすることによって)された区分化及び/又は予測パラメータ又はそれぞれの情報に基づいて分割又は区分化の決定及び予測を実行する。モード選択ユニット360は、再構成画像、ブロック、又はそれぞれのサンプル(フィルタリング済み又はフィルタリングされていない)に基づいてブロック毎に予測(イントラ又はインター予測)を実行し、予測ブロック365を取得するように構成されてよい。
【0155】
ビデオスライスがイントラコード済み(I)スライスとしてコードされている場合、モード選択ユニット360のイントラ予測ユニット354は、シグナリングされたイントラ予測モード及び現在の画像の以前にデコード済みのブロックからのデータに基づいて、現在のビデオスライスの画像ブロックのための予測ブロック365を生成するように構成されている。ビデオ画像がインターコード済みの(すなわち、B又はP)スライスとしてコードされている場合、モード選択ユニット360のインター予測ユニット344(例えば、動き補償ユニット)は、動きベクトル及びエントロピーデコーディングユニット304から受信された他のシンタックス要素に基づいて、現在のビデオスライスのビデオブロックのための予測ブロック365を生成するように構成されている。インター予測では、予測ブロックは、複数の参照画像リストのうちの1つに含まれる複数の参照画像のうちの1つから生成されてよい。ビデオデコーダ30は、リスト0及びリスト1という参照フレームリストを、デフォルトの構成技法を用いて、DPB330に保存された参照画像に基づいて構成してよい。
【0156】
モード選択ユニット360は、動きベクトル及び他のシンタックス要素をパースすることによって、現在のビデオスライスのビデオブロックのための予測情報を決定するように構成され、デコードされている現在のビデオブロックのための予測ブロックを生成するために上記予測情報を用いる。例えば、モード選択ユニット360は、受信されたシンタックス要素のいくつかを用いて、ビデオスライスのビデオブロックをコードするのに用いられた予測モード(例えば、イントラ又はインター予測)、インター予測スライスタイプ(例えば、Bスライス、Pスライス、又はGPBスライス)、スライスのための参照画像リストのうちの1つ若しくは複数に関する構成情報、スライスの各インターエンコード済みのビデオブロック毎の動きベクトル、スライスのインターコード済みのビデオブロック毎のインター予測ステータス、及び現在のビデオスライス内のビデオブロックをデコードするための他の情報を決定する。
【0157】
ビデオデコーダ30の他の変形を、エンコード済みの画像データ21をデコードするのに用いることができる。例えば、デコーダ30は、ループフィルタリングユニット320を用いずに、出力ビデオストリームを生成することができる。例えば、非変換ベースのデコーダ30は、特定のブロック又はフレームのための逆変換処理ユニット312を用いずに、残差信号を直接的に逆量子化することができる。別の実装において、ビデオデコーダ30は、単一のユニットに組み合わされた逆量子化ユニット310及び逆変換処理ユニット312を有することができる。
【0158】
エンコーダ20及びデコーダ30において、現在の段階の処理結果は、さらに処理されて、その後、次の段階に出力されてよいことが理解されるべきである。例えば、補間フィルタリング、動きベクトル導出又はループフィルタリングの後に、クリップ又はシフト等の更なる操作を、補間フィルタリング、動きベクトル導出又はループフィルタリングの処理結果に対して実行してよい。
【0159】
更なる操作を、現在のブロックの導出された動きベクトル(限定しないが、アフィンモードの制御点動きベクトル、アフィン、平面、ATMVPモードにおけるサブブロック動きベクトル、時間的な動きベクトル等を含む)に適用してよいことに留意すべきである。例えば、動きベクトルの値は、その表現ビットに従って予め規定された範囲に制限される。動きベクトルの表現ビットがbitDepthである場合、その範囲は、-2^(bitDepth-1)~2^(bitDepth-1)-1であり、ここで、「^」はべき乗を意味する。例えば、bitDepthが16に等しく設定されている場合、その範囲は-32768~32767であり、bitDepthが18に等しく設定されている場合、その範囲は-131072~131071である。以下、動きベクトルを制限する2つの方法を提供する。
【0160】
方法1:以下の操作により、オーバフローMSB(最上位ビット)を除去する。
【数1】
【0161】
例えば、式(1)及び(2)の適用後、mvxの値が-32769である場合、結果として得られる値は32767である。コンピュータシステムにおいて、十進数は、2の補数として保存される。 -32769の2の補数は、1,0111,1111,1111,1111(17ビット)であり、その後、MSBは破棄されるので、結果として得られる2の補数は、0111,1111,1111,1111(十進数は32767)である。これは、式(1)及び(2)を適用することによる出力と同じである。
【数2】
【0162】
操作は、式(5)~(8)に示すように、mvp及びmvdの合計中に適用されてよい。
【0163】
方法2:値をクリップすることによって、オーバフローMSBを除去する。
【数3】
関数Clip3の定義は次のとおりである:
【数4】
【0164】
図4は、本開示の一実施形態に係るビデオコーディングデバイス400の概略図である。ビデオコーディングデバイス400は、本明細書に記載の開示される実施形態を実施するのに好適なものである。一実施形態において、ビデオコーディングデバイス400は、図1Aのビデオデコーダ30等のデコーダ、又は、図1Aのビデオエンコーダ20等のエンコーダであってよい。
【0165】
ビデオコーディングデバイス400は、データを受信するための入口ポート410(又は、入力ポート410)及び受信器ユニット(Rx)420と、データを処理するためのプロセッサ、ロジックユニット、又は中央演算処理装置(CPU)430と、データを送信するための送信器ユニット(Tx)440及び出口ポート450(又は出力ポート450)と、データを保存するためのメモリ460とを備える。ビデオコーディングデバイス400は、入口ポート410、受信器ユニット420、送信器ユニット440、及び、光又は電気信号の出入りのための出口ポート450に連結されている、光/電気(OE)構成要素及び電気/光(EO)構成要素を備えてもよい。
【0166】
プロセッサ430は、ハードウェア及びソフトウェアによって実施される。プロセッサ430は、1つ又は複数のCPUチップ、コア(例えば、マルチコアプロセッサとして)、FPGA、ASIC、及びDSPとして実施されてよい。プロセッサ430は、入口ポート410、受信器ユニット420、送信器ユニット440、出口ポート450、及びメモリ460と通信する。プロセッサ430は、コーディングモジュール470を備える。コーディングモジュール470は、上述した開示される実施形態を実施する。例えば、コーディングモジュール470は、様々なコーディング操作を実施、処理、準備、又は提供する。したがって、コーディングモジュール470を含むことにより、ビデオコーディングデバイス400の機能のかなりの改善が提供され、ビデオコーディングデバイス400の異なる状態への変換がもたらされる。代替的には、コーディングモジュール470は、メモリ460に保存され、プロセッサ430によって実行される命令として実装される。
【0167】
メモリ460は、1つ又は複数のディスク、テープドライブ、及びソリッドステートドライブを備えてよく、プログラムが実行のために選択された場合に係るプログラムを保存するとともに、プログラムの実行中に読み取られる命令及びデータを保存するために、オーバフローデータストレージデバイスとして使用されてよい。メモリ460は、例えば、揮発性及び/又は不揮発性であってよく、リードオンリメモリ(ROM)、ランダムアクセスメモリ(RAM)、三値連想メモリ(TCAM)、及び/又は、スタティックランダムアクセスメモリ(SRAM)であってよい。
【0168】
図5は、例示的な実施形態に係る図1Aによるソースデバイス12及びデスティネーションデバイス14のいずれか又は両方として使用されてよい装置500の概略ブロック図である。
【0169】
装置500におけるプロセッサ502は、中央演算処理装置とすることができる。代替的には、プロセッサ502は、現在既存の又は今後開発される情報の操作又は処理が可能な任意の他のタイプのデバイス、又は複数のデバイスとすることができる。開示の実装は、図示のような単一のプロセッサ、例えばプロセッサ502で実施できるが、1つより多いプロセッサを用いれば、速度及び効率の利益を実現できる。
【0170】
装置500におけるメモリ504は、一実装において、リードオンリメモリ(ROM)デバイス又はランダムアクセスメモリ(RAM)デバイスとすることができる。任意の他の好適なタイプのストレージデバイスを、メモリ504として使用できる。メモリ504は、バス512を用いてプロセッサ502によってアクセスされるコード及びデータ506を備えることができる。メモリ504は、オペレーティングシステム508及びアプリケーションプログラム510をさらに備えることができ、アプリケーションプログラム510は、プロセッサ502が本明細書に記載の方法を実行することを可能にする少なくとも1つのプログラムを含む。例えば、アプリケーションプログラム510は、アプリケーション1~Nを含むことができ、アプリケーション1~Nは、本明細書に記載の方法を実行するビデオコーディングアプリケーションをさらに含む。
【0171】
装置500は、ディスプレイ518等の、1つ又は複数の出力デバイスも備えることができる。ディスプレイ518は、一例において、ディスプレイと、タッチ入力を検知するように動作可能なタッチセンサ素子とを組み合わせたタッチセンサ式ディスプレイであってよい。ディスプレイ518は、バス512を介してプロセッサ502に連結することができる。
【0172】
単一のバスとして本明細書に示したが、装置500のバス512は、複数のバスから構成することができる。さらに、セカンダリストレージ514は、装置500の他の構成要素に直接連結でき、又は、ネットワークを介してアクセスでき、メモリカード等の単一の一体型ユニット又は複数のメモリカード等の複数のユニットを含むことができる。したがって、装置500は、多種多様な構成で実施することができる。
【0173】
アフィン予測における動きベクトルの中間値の計算によって導出されたMVの精度は、ピクセル長において1/4から1/16まで増加した。精度のこのような増加により、動きベクトルフィールドのためのメモリ保存容量が、動きベクトル成分毎に最大18ビットになる。ビデオコーデックの開発中、各MVは4×4画素の粒度で保存された。動きベクトル情報を保存するためのメモリ容量を低減させるために、その後いくつかの試みが成された。グリッドサイズ8x8への粒度の低減に関する提案の1つが採用された。動きベクトル成分値からのMSB(最上位ビット)の単純な除去による、MV精度(時間的なMVストレージ若しくはローカルラインバッファ、又はその両方)を低減させる別の試みが、[JVET-L0168]において成され、これは、大サイズの画像及び360°ビデオの予測及び圧縮の効率を低減させる可能性のあるmv表現範囲の低減をもたらした。1/16の精度の動きベクトルのこのような16ビット表現は、8K又はより高解像度のビデオコーディングには十分でない。2つの他の解決手段は、水平及び垂直方向の両方についてのMV成分からのLSBの除去を提案するものであり、シグナリングのための追加の1ビットでMSB/LSBを適応的に除去することが試みられた。
【0174】
本発明の目的は、時間的な動きベクトル予測を導出するための情報を保存する際に、動きベクトル表現及び精度を妥当な範囲に維持しながらメモリ容量を低減させ得る解決手段/方法及びデバイスを提供することである。精度を妥当な範囲に維持することは、表現の或る程度の歪みをもたらす精度の或る程度の減少を意味する。したがって、浮動小数点表現への変換の結果は、MVの歪められた/量子化された/丸められた値である。
【0175】
現在利用可能な解決手段は、参照フレームで保存される各MV成分の18ビット値で操作する(図6、上部)。これは、HWに関しては12.5%、SWに関しては100%の、MVの保存のためのメモリ増加をもたらす。本発明は、参照フレーム内で保存されるMV成分値の、18ビットではなく16ビットの二進浮動小数点表現を使用することを提案する。しかしながら、16ビットの浮動小数点表現は一例であり、本発明は、16より少ないビットでの表現(例えば、10ビット表現)も含む。また、MSBが浮動小数の指数部として使用される実施形態1については、画像解像度が小さい場合、現在の解決手段に対してコーデック処理に変化はない。
【0176】
本発明の基本概念は、参照フレーム内で保存されるMV成分値の、18ビットではなく16ビットの二進浮動小数点表現である。
【0177】
MV表現及び精度を妥当な範囲に維持しながら、時間的なMVを保存するメモリ容量を低減させる。
【0178】
上記の課題を解決するべく、それぞれ個々に適用もできるし、一部を組み合わせても適用できる、以下の発明の態様が開示される。 1. MV成分の二進浮動小数点表現を使用する。 方法A.指数部は3ビットであり得、これにより、1/16(MV長に関しては最大256画素)から8画素(MV長に関しては最大32K)の異なる精度のMV表現を有することが可能になる 方法B.別の可能な実装は指数部について2ビットを示唆し、これにより、ビット最大MV長は512(1/16のMV精度に関して)及び8K画素(1画素に等しいMV精度に関して)まで低下させる。 2. 二進浮動小数点表現は、2つの可能な実装において表現され得る(例における3ビットが指数部に使用される): 方法A.MV成分値 図6のMSBにおける指数ビット。以下のMV復元段階(例えば、X成分に関する)を伴う:
i. シフト=MVx>>13 ii. Mvx=MVx&0x01FFF iii. Mvx<<=シフト 方法B.MV成分値 図7のLSBにおける指数ビット。以下のMV復元段階(例えばX成分に関する)を伴う:
i. シフト=MVx&0x03 ii. Mvx=MVx>>3 iii. Mvx<<=シフト 3.提案されたアプローチは、以下によってSPS/PPS/スライスヘッダ/タイルグループヘッダ内でのこのモードの使用を示しながら条件に応じて使用され得る: 方法A.MVの浮動小数点表現又はHEVC16ビット表現の使用を示す特別なフラグ 方法B.MV値の指数部のビット数 4.以下に応じて指数部のサイズを適応的に変化させる: 方法A.画像解像度 i.w<2K且つh<2Kの場合:exp_sizeは、0として導出される(シグナリングされない) ii.w<4K且つh<4Kの場合:シフト値のための1ビットをシグナリングする iii.そうでない場合、シフト値のための2ビットをシグナリングする 方法B.CTU/CU/ブロック/ユニットレベルの指数部サイズでシグナリングされる 方法C.動き制限タイルセット(MCTS)内の使用 i.この場合、タイルセットサイズは、本発明の態様4).aのような小タイルセット解像度の浮動小数点MV表現の使用を強力に制限し得る 5.MVの垂直成分及び水平成分は、独立したサイズの指数部を有し得る。 6.ベクトル成分(meanMVx、meanMVy)の平均値が、同じCTU/CU/ブロック/ユニットに属する各MVの同じ成分の値から除去される、可能な解決手段の1つ。 方法A.両方の構成要素の平均値が、各CTU/CU/ブロック/ユニット毎に別個に保存される。MVは、MVx=meanMVx+Mvx(i,j),MVy=meanMVy+Mvy(i,j)として導出される 方法B.両方の成分の平均値が、各CTU/CU/ブロック/ユニットのサブユニットの1つに保存される(左上、例えばi=0,j=0)。(i!=0及びj!=0)且つmeanMVx=MVx(0,0),meanMVy=MVy(0,0)の場合、MVは、MVx=meanMVx+Mvx(i,j),MVy=meanMVy+Mvy(i,j)として導出される。 方法C.ここで、2つの上記の解決手段(6).a及び6).b)は、meanMVx及びmeanMVyが以下で表現される: i.二進浮動16ビット(解決手段1).a) ii.整数(16ビット)
【0179】
さらに、本発明は、参照フレーム内に保存されるMV成分値の、18ビットではなく16ビットの二進表現の使用を提案し、ここで、16ビット値は、18ビット値から、ビットストリーム内でシグナリングされた値に応じて2のLSB(最下位ビット)又は2のMSB(最上位ビット)を除去することによって取得できる。シグナリングは、[JVET-L0168]に記載のような予め規定されたシグナリングメカニズムによるものとすることができる。
【0180】
MV表現及び精度を妥当な範囲に維持しながら時間的なMVを保存するためのメモリ容量を低減する。
【0181】
上記の課題を解決するべく以下の発明の態様が開示され、そのそれぞれは個々に適用できるし、そのいくつかは組み合わせて適用できる。 7.動きバッファにMVをセーブする前に、MV成分は、ビットストリーム内でシグナリングされた値に応じて以下の方法の1つを用いて、18ビット二進表現から16ビット表現に変換される。 方法A.(図8に示すように)2だけの算術右シフトによって、2のLSBを除去する 方法B.(図9に示すように)(例えば、範囲[-215,215‐1]にクリップすることによって)2のMSBを除去する。 MV成分の復元(16ビットから18ビット二進表現への変換)は、以下の規則を用いて実行される:
●方法Aが使用される場合、18ビット値は、2だけの左算術シフトによって16ビット値から取得される;
●方法Bが使用される場合、18ビット値は、2のMSB(17番目及び18番目のビット)を、正の値では0に、又は、負の値では1に設定することによって16ビット値から取得される。 8.16ビット二進表現は、現在の画像の動き情報を保存するために使用されない、態様7。この場合、16ビット二進表現におけるMVは、例えば、TMVP(時間的な動きベクトル予測)及び/又はATMVP(代替の時間的な動きベクトル予測)に使用される。 9.MV成分の18ビットから16ビット二進表現への変換方法(方法A又は方法B)は、フレーム毎にビットストリーム内でシグナリングされる、態様8。 10.MV成分の18ビットから16ビット二進表現への変換方法(方法A又は方法B)は、タイル毎にビットストリーム内でシグナリングされる、態様8。 11.MV成分の18ビットから16ビット二進表現への変換方法(方法A又は方法B)は、タイルのグループ毎にビットストリーム内でシグナリングされる、態様8。 12.MV成分の18ビットから16ビット二進表現への変換方法(方法A又は方法B)は、スライス毎にビットストリーム内でシグナリングされる、態様8。 13.18ビットから16ビットへの変換方法(方法A又は方法B)は、特別なフラグによってSPS/PPS/スライスヘッダ/タイルグループヘッダ内でシグナリングされる、態様7~12。 14. MV成分の18ビットから16ビット二進表現への変換方法は、以下に基づいて適応的に選択される、態様7~8: a.画像解像度 i.w<2K且つh<2Kである場合:方法Bが用いられる(シグナリング無し)
ii.そうでない場合、方法A又はBを用いるかに関わらず、1ビットをシグナリングする b.CTU/CU/ブロック/ユニットレベルでシグナリングされる c.動き制限タイルセット(MCTS)内での使用 i.この場合、タイルセットサイズは、小タイルセット解像度に関して方法Bの使用を強力に制限し得る 15. MVの垂直成分及び水平成分は、独立したシグナリングを有し得る。
【0182】
図10は、本発明に係る包括的な動きベクトル圧縮方法のフロー図を示している。方法は、時間的な動きベクトルを取得する段階101と、時間的な動きベクトルの二進表現を用いて圧縮された動きベクトルを決定する段階102であって、二進表現は、指数部及び/又は仮数部を含み、指数部はNビットを含み、仮数部はMビットを含み、Nは非負の整数であり、Mは正の整数である、段階と、圧縮された動きベクトルを用いて、時間的な動きベクトル予測(TMVP)を実行する段階103と、を含む。
【0183】
本願の実施形態は、主にビデオコーディングに基づいて記載されているが、本明細書に記載のコーディングシステム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に等しく用いられ得る。
【0184】
例えばエンコーダ20及びデコーダ30の実施形態、並びに、例えばエンコーダ20及びデコーダ30を参照して本明細書に記載された機能は、ハードウェア、ソフトウェア、ファームウェア、又はそれらの任意の組み合わせで実施されてよい。ソフトウェアにおいて実施される場合、機能は、コンピュータ可読媒体上に保存されるか、又は、通信媒体を介して1つ又は複数の命令若しくはコードとして送信され、ハードウェアベースの処理ユニットによって実行されてよい。コンピュータ可読媒体は、データ記憶媒体等の有形の媒体に対応するコンピュータ可読記憶媒体、又は、例えば通信プロトコルに従った、コンピュータプログラムの1つの場所から別の場所への移動を容易にする任意の媒体を含む通信媒体を含んでよい。このように、コンピュータ可読媒体は、一般に、(1)非一時的な有形コンピュータ可読記憶媒体、又は、(2)信号若しくは搬送波等の通信媒体に対応してよい。データ記憶媒体は、本開示に記載された技術の実装のための命令、コード、及び/又はデータ構造を取得するために、1つ若しくは複数のコンピュータ又は1つ若しくは複数のプロセッサによってアクセスできる任意の利用可能な媒体であってよい。コンピュータプログラム製品は、コンピュータ可読媒体を含んでよい。
【0185】
限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM、CD-ROM若しくは他の光ディスクストレージ、磁気ディスクストレージ若しくは他の磁気ストレージデバイス、フラッシュメモリ、又は、命令若しくはデータ構造の形の所望のプログラムコードを保存するのに使用でき、コンピュータによってアクセスできる、任意の他の媒体を含むことができる。また、任意の接続が、適宜コンピュータ可読媒体と称される。例えば、同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者線(DSL)、又は、赤外線、無線、及びマイクロ波等の無線技術を用いて、ウェブサイト、サーバ、又は他のリモートソースから命令が送信される場合、同軸ケーブル、光ファイバケーブル、ツイストペア、DSL、又は、赤外線、無線、及びマイクロ波等の無線技術が媒体の定義に含まれる。しかしながら、コンピュータ可読記憶媒体及びデータ記憶媒体は、接続、搬送波、信号、又は他の一時的媒体を含まず、その代わりに、非一時的な有形の記憶媒体を指すことが理解されるべきである。本明細書で使用されるディスク(Disk and disc)は、コンパクトディスク(CD)、レーザディスク、光ディスク、デジタル多用途ディスク(DVD)、フロッピディスク、及びブルーレイディスクを含み、ここで、通例、ディスク(disk)はデータを磁気的に再現するものであり、ディスク(disc)はデータをレーザによって光学的に再現するものである。上記の組み合わせもまた、コンピュータ可読媒体の範囲内に含まれるべきである。
【0186】
命令は、1つ又は複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルロジックアレイ(FPGA)、又は他の等価な一体型若しくはディスクリートロジック回路等の1つ又は複数のプロセッサによって実行されてよい。したがって、本明細書で使用される「プロセッサ」という用語は、前述の構造のいずれか、又は、本明細書に記載の技術の実装に好適な任意の他の構造を指してよい。加えて、いくつかの態様では、本明細書に記載の機能は、エンコーディング及びデコーディングのために構成されている専用ハードウェア及び/又はソフトウェアモジュール内に提供されるか、又は、組み合わされたコーデックに組み込まれてよい。また、本技術は、1つ若しくは複数の回路又はロジック要素において完全に実施することができる。
【0187】
本開示の技術は、無線ハンドセット、集積回路(IC)又はICのセット(例えば、チップセット)を含む、多種多様なデバイス又は装置において実施してよい。様々な構成要素、モジュール、又はユニットが、開示された技術を実行するように構成されているデバイスの機能的態様を強調するように本開示において記載されているが、異なるハードウェアユニットによる実現は必ずしも要求されない。むしろ、上述したように、好適なソフトウェア及び/又はファームウェアと連動して、様々なユニットがコーデックハードウェアユニットにして組み合わされるか、又は、上述したように、1つ又は複数のプロセッサを含む相互運用ハードウェアユニットの集合によって提供されてよい。
【0188】
参考として、以下の論理的演算子が次のように定義される:
x&&y x及びyのブール論理上の「and」
x||y x及びyのブール論理上の「or」
! ブール論理上の「not」
x?y:z xが真であるか又は0に等しくない場合、yの値になり、そうでない場合、zの値になる。
【0189】
参考のために、以下の関係演算子を次のように定義する:
> より大きい
>= 以上
< より小さい
<= 以下
= = に等しい
!= に等しくない
【0190】
関係演算子が、値「na」(非該当)をアサインされているシンタックス要素又は変数に適用される場合、値「na」は、そのシンタックス要素又は変数の区別的な値として扱われる。値「na」は、任意の他の値に等しくないとみなされる。
【0191】
参考として、以下のビット単位演算子が次のように定義される。
& ビット単位の「and」。整数項に対して演算を行う場合、整数値の2の補数表現に対して演算を行う。別の項より少ないビットを含む二進項に対して演算を行う場合、そのより短い項は、0に等しいより上位のビットを追加することによって拡張される。
| ビット単位の「or」。整数項に対して演算を行う場合、整数値の2の補数表現に対して演算を行う。別の項より少ないビットを含む二進項に対して演算を行う場合、そのより短い項は、0に等しいより上位のビットを追加することによって拡張される。
^ ビット単位の「排他的or」。整数項に対して演算を行う場合、整数値の2の補数表現に対して演算を行う。別の項より少ないビットを含む二進項に対して演算を行う場合、そのより短い項は、0に等しいより上位のビットを追加することによって拡張される。
x>>y yの二進数だけの、xの2の補数整数表現の算術右シフト。この関数は、yの非負の整数値に関してのみ定義される。右シフトの結果として最上位ビット(MSB)にシフトされたビットは、シフト操作前のxのMSBに等しい値を有する。
x<<y yの二進数だけの、xの2の補数整数表現の算術左シフト。この関数は、yの非負の整数値に関してのみ定義される。左シフトの結果として最下位ビット(LSB)にシフトされたビットは、0に等しい値を有する。要約すると、本開示は、時間的な動きベクトルを取得する段階と、指数部及び/又は仮数部を含む時間的な動きベクトルの二進表現を用いて圧縮された動きベクトルを決定する段階であって、指数部はNビットを含み、仮数部はMビットを含み、Nは非負の整数であり、Mは正の整数である、段階と、圧縮された動きベクトルを用いて、時間的な動きベクトル予測(TMVP)を実行する段階と、を含む、動きベクトル圧縮方法を提供する。
図1A
図1B
図2
図3
図4
図5
図6
図7
図8
図9
図10
【外国語明細書】