第1の態様は、計算デバイスにおいて実施される方法に関する。当該方法は、計算デバイスのプロセッサにより、予測ブロック及び予測ブロックに対応する変換残差ブロックを取得するために、ビットストリームを解析するステップと、プロセッサにより、変換残差ブロックを生成するために使用された空間変化変換(SVT)のタイプを決定するステップと、プロセッサにより、変換残差ブロックに対するSVTの位置を決定するステップと、プロセッサにより、SVTの位置に基づいてSVTの逆を決定するステップと、プロセッサにより、再構築された残差ブロックを生成するために、SVTの逆を変換残差ブロックに適用するステップと、プロセッサにより、画像ブロックを再構築するために、再構築された残差ブロックを予測ブロックと組み合わせるステップとを含む。
当該方法は、SVTの符号化効率の増加を容易にする。それに関し、変換ブロックは、対応する残差ブロックに対して様々な候補位置に位置する。したがって、開示のメカニズムは、候補位置に基づいて変換ブロックに異なる変換を使用する。
第1の態様自体による方法の第1の実現方式の形式では、SVTのタイプはSVT垂直(SVT-V)タイプ又はSVT水平(SVT-H)タイプである。
第1の態様自体又は第1の態様のいずれかの上記の実現方式の形式による方法の第2の実現方式の形式では、SVT-Vタイプは、変換残差ブロックの高さに等しい高さと、変換残差ブロックの幅の半分である幅とを含み、SVT-Hタイプは、変換残差ブロックの高さの半分である高さと、変換残差ブロックの幅に等しい幅とを含む。
第1の態様自体又は第1の態様のいずれかの上記の実現方式の形式による方法の第3の実現方式の形式では、svt_type_flagは、SVTのタイプを決定するためにビットストリームから解析される。
第1の態様自体又は第1の態様のいずれかの上記の実現方式の形式による方法の第4の実現方式の形式では、1つのタイプのSVTのみが残差ブロックについて許容されるとき、SVTのタイプは推測により決定される。
第1の態様自体又は第1の態様のいずれかの上記の実現方式の形式による方法の第5の実現方式の形式では、位置インデックスは、SVTの位置を決定するためにビットストリームから解析される。
第1の態様自体又は第1の態様のいずれかの上記の実現方式の形式による方法の第6の実現方式の形式では、位置インデックスは、候補位置ステップサイズ(CPSS)に従って決定された候補位置のセットからの位置を示すバイナリコードを含む。
第1の態様自体又は第1の態様のいずれかの上記の実現方式の形式による方法の第7の実現方式の形式では、SVTの最も可能性の高い位置は、位置インデックスを示すバイナリコードにおいて最少ビット数を割り当てられる。
第1の態様自体又は第1の態様のいずれかの上記の実現方式の形式による方法の第8の実現方式の形式では、単一の候補位置がSVT変換に利用可能であるとき、SVTの位置はプロセッサにより推測される。
第1の態様自体又は第1の態様のいずれかの上記の実現方式の形式による方法の第9の実現方式の形式では、残差ブロックがインター予測モードにおけるテンプレートマッチングにより生成されたとき、SVTの位置はプロセッサにより推測される。
第1の態様自体又は第1の態様のいずれかの上記の実現方式の形式による方法の第10の実現方式の形式では、逆離散正弦変換(DST)は、残差ブロックの左境界に位置するSVT垂直(SVT-V)タイプ変換に使用される。
第1の態様自体又は第1の態様のいずれかの上記の実現方式の形式による方法の第11の実現方式の形式では、逆DSTは、残差ブロックの上境界に位置するSVT水平(SVT-H)タイプ変換に使用される。
第1の態様自体又は第1の態様のいずれかの上記の実現方式の形式による方法の第12の実現方式の形式では、逆離散余弦変換(DCT)は、残差ブロックの右境界に位置するSVT-Vタイプ変換に使用される。
第1の態様自体又は第1の態様のいずれかの上記の実現方式の形式による方法の第13の実現方式の形式では、逆DCTは、残差ブロックの下境界に位置するSVT-Hタイプ変換に使用される。
第1の態様自体又は第1の態様のいずれかの上記の実現方式の形式による方法の第14の実現方式の形式では、再構築された残差ブロックに関連する符号化ユニットの右側隣接が再構築されており、符号化ユニットの左側隣接が再構築されていないとき、再構築された残差ブロック内のサンプルは、再構築された残差ブロックを予測ブロックと組み合わせる前に、水平に反転される。
第2の態様は、計算デバイスにおいて実施される方法に関する。当該方法は、ビデオキャプチャデバイスからビデオ信号を受信するステップであり、ビデオ信号は、画像ブロックを含む、ステップと、計算デバイスのプロセッサにより、画像ブロックを表すために予測ブロック及び残差ブロックを生成するステップと、プロセッサにより、残差ブロックに対する空間変化変換(SVT)の位置に基づいて、SVTのための変換アルゴリズムを選択するステップと、プロセッサにより、選択されたSVTを使用して残差ブロックを変換残差ブロックに変換するステップと、プロセッサにより、SVTのタイプをビットストリームに符号化するステップと、プロセッサにより、SVTの位置をビットストリームに符号化するステップと、プロセッサにより、デコーダへの送信のために、予測ブロック及び変換残差ブロックをビットストリームに符号化するステップとを含む。
当該方法は、SVTの符号化効率の増加を容易にする。それに関し、変換ブロックは、対応する残差ブロックに対して様々な候補位置に位置する。したがって、開示のメカニズムは、候補位置に基づいて変換ブロックに異なる変換を使用する。
第1の態様自体による方法の第1の実現方式の形式では、SVTのタイプはSVT垂直(SVT-V)タイプ又はSVT水平(SVT-H)タイプである。
第2の態様自体又は第2の態様のいずれかの上記の実現方式の形式による方法の第2の実現方式の形式では、SVT-Vタイプは、残差ブロックの高さに等しい高さと、残差ブロックの幅の半分である幅とを含む。
第2の態様自体又は第2の態様のいずれかの上記の実現方式の形式による方法の第3の実現方式の形式では、SVT-Hタイプは、残差ブロックの高さの半分である高さと、残差ブロックの幅に等しい幅とを含む。
第2の態様自体又は第2の態様のいずれかの上記の実現方式の形式による方法の第4の実現方式の形式では、SVTの位置は、位置インデックスに符号化される。
第2の態様自体又は第2の態様のいずれかの上記の実現方式の形式による方法の第5の実現方式の形式では、位置インデックスは、候補位置ステップサイズ(CPSS)に従って決定された候補位置のセットからの位置を示すバイナリコードを含む。
第2の態様自体又は第2の態様のいずれかの上記の実現方式の形式による方法の第6の実現方式の形式では、SVTの最も可能性の高い位置は、位置インデックスを示すバイナリコードにおいて最少ビット数として割り当てられる。
第2の態様自体又は第2の態様のいずれかの上記の実現方式の形式による方法の第7の実現方式の形式では、離散正弦変換(DST)アルゴリズムは、プロセッサにより、残差ブロックの左境界に位置するSVT垂直(SVT-V)タイプ変換に使用される。
第2の態様自体又は第2の態様のいずれかの上記の実現方式の形式による方法の第8の実現方式の形式では、DSTアルゴリズムは、プロセッサにより、残差ブロックの上境界に位置するSVT水平(SVT-H)タイプ変換に選択される。
第2の態様自体又は第2の態様のいずれかの上記の実現方式の形式による方法の第9の実現方式の形式では、離散余弦変換(DCT)アルゴリズムは、プロセッサにより、残差ブロックの右境界に位置するSVT-Vタイプ変換に選択される。
第2の態様自体又は第2の態様のいずれかの上記の実現方式の形式による方法の第10の実現方式の形式では、DCTアルゴリズムは、プロセッサにより、残差ブロックの下境界に位置するSVT-Hタイプ変換に選択される。
第2の態様自体又は第2の態様のいずれかの上記の実現方式の形式による方法の第11の実現方式の形式では、当該方法は、残差ブロックに関連する符号化ユニットの右側隣接が符号化されており、符号化ユニットの左側隣接が符号化されていないとき、プロセッサにより、残差ブロックを変換残差ブロックに変換する前に、プロセッサにより、残差ブロック内のサンプルを水平に反転するステップを更に含む。
第3の態様は、符号化するピクチャを受信するように或いは復号するビットストリームを受信するように構成された受信機と、受信機に結合された送信機であり、ビットストリームをデコーダに送信するように或いは復号された画像をディスプレイに送信するように構成された送信機と、受信機又は送信機のうち少なくとも1つに結合されたメモリであり、命令を記憶するように構成されたメモリと、メモリに結合されたプロセッサであり、メモリに記憶された命令を実行し、上記の態様又は実現方式のうちいずれかの方法を実行するように構成されたプロセッサとを含む符号化装置に関する。
当該符号化装置は、SVTの符号化効率の増加を容易にする。それに関し、変換ブロックは、対応する残差ブロックに対して様々な候補位置に位置する。したがって、開示のメカニズムは、候補位置に基づいて変換ブロックに異なる変換を使用する。
第3の態様自体による装置の第1の実現方式の形式では、当該装置は、画像を表示するように構成されたディスプレイを更に含む。
第4の態様は、エンコーダと、エンコーダと通信するデコーダとを含むシステムに関する。エンコーダ又はデコーダは、上記の態様又は実現方式のうちいずれかの符号化装置を含む。
当該システムは、SVTの符号化効率の増加を容易にする。それに関し、変換ブロックは、対応する残差ブロックに対して様々な候補位置に位置する。したがって、開示のメカニズムは、候補位置に基づいて変換ブロックに異なる変換を使用する。
第5の態様は、符号化するピクチャを受信するように或いは復号するビットストリームを受信するように構成された受信手段と、受信手段に結合された送信手段であり、ビットストリームをデコーダに送信するように或いは復号された画像を表示手段に送信するように構成された送信手段と、受信手段又は送信手段のうち少なくとも1つに結合された記憶手段であり、命令を記憶するように構成された記憶手段と、記憶手段に結合された処理手段であり、記憶手段に記憶された命令を実行し、上記の態様又は実現方式のうちいずれかにおける方法を実行するように構成された処理手段とを含む符号化する手段に関する。
符号化する手段は、SVTの符号化効率の増加を容易にする。それに関し、変換ブロックは、対応する残差ブロックに対して様々な候補位置に位置する。したがって、開示のメカニズムは、候補位置に基づいて変換ブロックに異なる変換を使用する。
明確性の目的で、本開示の範囲内で新たな実施形態を作成するために、上記の実施形態のうちいずれか1つは、他の上記の実施形態のうちいずれか1つ以上と組み合わされてもよい。
これら及び他の特徴は、添付の図面及び特許請求の範囲に関連して行われる以下の詳細な説明から、より明確に理解される。
最初に、1つ以上の実施形態の例示的な実現方式が以下に提供されるが、開示のシステム及び/又は方法は、現在既知であっても存在していても、いずれかの数の技術を使用して実施されてもよいことが理解されるべきである。当該開示は、ここに示されて記載される例示的な設計及び実現方式を含む、以下に示す例示的な実現方式、図面及び技術に決して限定されるべきではなく、添付の特許請求の範囲の範囲内で、それらの均等物の全範囲と共に修正されてもよい。
高効率ビデオ符号化(High Efficiency Video Coding, HEVC)として現在知られている標準は、国際電気通信連合-電気通信標準化部門(International Telecommunication Union-Telecommunication Standardization Sector, ITU-T)研究グループからのビデオ符号化専門家のビデオ符号化における共同研究部会(Joint Collaborative Team on Video Coding, JCT-VC)グループのもとで開発された先進的なビデオ符号化システムである。HEVC標準に関する詳細はITU-T Rec. H.265及びInternational Organization for Standardization (ISO) / International Electrotechnical Commission (IEC) 23008-2 (2013), High efficiency video coding, final draft approval Jan. 2013(2013年6月にITU-Tにより、また、2013年11月にISO/IECにおいて正式に公表された)にあり、これを参照により援用する。HEVCの概要は、G. J. Sullivan、J.-R. Ohm、W.-J. Han及びT. Wiegand, 「Overview of the High Efficiency Video Coding (HEVC) Standard」, IEEE Trans. Circuits and Systems for Video Technology, Vol. 22, No. 12, pp. 1649-1668, 2012年12月にあり、これを参照により援用する。
図1は、SVTメカニズムを使用した符号化のようなビデオ符号化技術を利用し得る例示的な符号化システム10を示すブロック図である。図1に示すように、符号化システム10は、後の時点に宛先デバイス14により復号されるべき符号化ビデオデータを提供する送信元デバイス12を含む。特に、送信元デバイス12は、コンピュータ読み取り可能媒体16を介してビデオデータを宛先デバイス14に提供してもよい。送信元デバイス12及び宛先デバイス14は、デスクトップコンピュータ、ノートブック(例えば、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンのような電話機、いわゆる「スマート」パッド、テレビ、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイス等を含む、広範囲のデバイスのうちいずれかを含んでもよい。いくつかの場合、送信元デバイス12及び宛先デバイス14は、無線通信用に装備されてもよい。
宛先デバイス14は、コンピュータ読み取り可能媒体16を介して復号されるべき符号化ビデオデータを受信してもよい。コンピュータ読み取り可能媒体16は、送信元デバイス12から宛先デバイス14に符号化ビデオデータを移動させることができるいずれかのタイプの媒体又はデバイスを含んでもよい。一例では、コンピュータ読み取り可能媒体16は、送信元デバイス12がリアルタイムで符号化ビデオデータを宛先デバイス14に直接送信することを可能にする通信媒体を含んでもよい。符号化ビデオデータは、無線通信プロトコルのような通信標準に従って変調され、宛先デバイス14に送信されてもよい。通信媒体は、無線周波数(radio frequency, RF)スペクトル又は1つ以上の物理伝送線路のようないずれかの無線又は有線通信媒体を含んでもよい。通信媒体は、ローカルエリアネットワーク、広域ネットワーク又はインターネットのようなグローバルネットワークのようなパケットベースのネットワークの一部を形成してもよい。通信媒体は、ルータ、スイッチ、基地局、又は送信元デバイス12から宛先デバイス14への通信を容易にするために有用になり得るいずれかの他の機器を含んでもよい。
いくつかの例では、符号化データは、出力インタフェース22から記憶デバイスに出力されてもよい。同様に、符号化データは、入力インタフェースにより記憶デバイスからアクセスされてもよい。記憶デバイスは、ハードドライブ、ブルーレイディスク、デジタルビデオディスク(digital video disk, DVD)、コンパクトディスク読み取り専用メモリ(Compact Disc Read-Only Memory, CD-ROM)、フラッシュメモリ、揮発性若しくは不揮発性メモリ、又は符号化ビデオデータを記憶するためのいずれかの他の適切なデジタル記憶媒体のような、様々な分散された或いはローカルでアクセスされるデータ記憶媒体のうちいずれかを含んでもよい。更なる例では、記憶デバイスは、送信元デバイス12により生成された符号化ビデオを記憶し得るファイルサーバ又は他の中間記憶デバイスに対応してもよい。宛先デバイス14は、ストリーミング又はダウンロードを介して記憶デバイスから記憶されたビデオデータにアクセスしてもよい。ファイルサーバは、符号化ビデオデータを記憶し、その符号化ビデオデータを宛先デバイス14に送信することができるいずれかのタイプのサーバでもよい。例示的なファイルサーバは、ウェブサーバ(例えば、ウェブサイト用)、ファイル転送プロトコル(file transfer protocol, FTP)サーバ、ネットワーク接続ストレージ(network attached storage, NAS)デバイス又はローカルディスクドライブを含む。宛先デバイス14は、インターネット接続を含むいずれかの標準データ接続を通じて符号化ビデオデータにアクセスしてもよい。これは、無線チャネル(例えば、Wi-Fi接続)、有線接続(例えば、デジタル加入者回線(digital subscriber line, DSL)、ケーブルモデム等)、又はファイルサーバに記憶された符号化ビデオデータにアクセスするのに適した双方の組み合わせを含んでもよい。記憶デバイスからの符号化ビデオデータの伝送は、ストリーミング伝送、ダウンロード伝送又はそれらの組み合わせでもよい。
この開示の技術は、無線アプリケーション又は設定に必ずしも限定されない。当該技術は、無線テレビ放送、ケーブルテレビ伝送、衛星テレビ伝送、HTTP上の動的適応ストリーミング(dynamic adaptive streaming over HTTP, DASH)のようなインターネットストリーミングビデオ伝送、データ記憶媒体上に符号化されたデジタルビデオ、データ記憶媒体上に記憶されたデジタルビデオの復号、又は他のアプリケーションのような、様々なマルチメディアアプリケーションのうちいずれかをサポートするビデオ符号化に適用されてもよい。いくつかの例では、符号化システム10は、ビデオストリーミング、ビデオ再生、ビデオ放送及び/又はビデオ電話のようなアプリケーションをサポートするために、一方向又は双方向のビデオ伝送をサポートするように構成されてもよい。
図1の例では、送信元デバイス12は、ビデオソース18と、ビデオエンコーダ20と、出力インタフェース22とを含む。宛先デバイス14は、入力インタフェース28と、ビデオデコーダ30と、ディスプレイデバイス32とを含む。この開示によれば、送信元デバイス12のビデオエンコーダ20及び/又は宛先デバイス14のビデオデコーダ30は、ビデオ符号化のための技術を適用するように構成されてもよい。他の例では、送信元デバイス及び宛先デバイスは、他のコンポーネント又は配置を含んでもよい。例えば、送信元デバイス12は、外部カメラのような外部ビデオソースからビデオデータを受信してもよい。同様に、宛先デバイス14は、一体化されたディスプレイデバイスを含むのではなく、外部ディスプレイデバイスとインタフェース接続してもよい。
図1の図示の符号化システム10は、単なる一例である。ビデオ符号化のための技術は、いずれかのデジタルビデオ符号化及び/又は復号デバイスにより実行されてもよい。この開示の技術は、一般的にビデオ符号化デバイスにより実行されるが、当該技術はまた、典型的には「コーデック」と呼ばれるビデオエンコーダ/デコーダにより実行されてもよい。さらに、この開示の技術はまた、ビデオプロセッサにより実行されてもよい。ビデオエンコーダ及び/又はデコーダは、グラフィックス処理ユニット(graphics processing unit, GPU)又は同様のデバイスでもよい。
送信元デバイス12及び宛先デバイス14は、送信元デバイス12が宛先デバイス14への送信用の符号化ビデオデータを生成するような符号化デバイスの単なる例である。いくつかの例では、送信元デバイス12及び宛先デバイス14は、送信元及び宛先デバイス12、14のそれぞれがビデオ符号化及び復号コンポーネントを含むように、実質的に対称的な方式で動作してもよい。したがって、符号化システム10は、例えば、ビデオストリーミング、ビデオ再生、ビデオ放送又はビデオ電話のために、ビデオデバイス12、14の間の一方向又は双方向のビデオ伝送をサポートしてもよい。
送信元デバイス12のビデオソース18は、ビデオカメラのようなビデオキャプチャデバイス、以前にキャプチャされたビデオを含むビデオアーカイブ、及び/又はビデオコンテンツプロバイダからビデオを受信するためのビデオ供給インタフェースを含んでもよい。更なる代替として、ビデオソース18は、ソースビデオとしてのコンピュータグラフィックスベースのデータ、又はライブビデオとアーカイブされたビデオとコンピュータ生成されたビデオとの組み合わせを生成してもよい。
いくつかの場合、ビデオソース18がビデオカメラであるとき、送信元デバイス12及び宛先デバイス14は、いわゆるカメラ電話又はビデオ電話を形成してもよい。しかし、上記のように、この開示に記載の技術は、一般的にビデオ符号化に適用可能でもよく、無線及び/又は有線アプリケーションに適用されてもよい。それぞれの場合、キャプチャされたか、予めキャプチャされたか、或いはコンピュータ生成されたビデオは、ビデオエンコーダ20により符号化されてもよい。次いで、符号化ビデオ情報は、出力インタフェース22により、コンピュータ読み取り可能媒体16上に出力されてもよい。
コンピュータ読み取り可能媒体16は、無線ブロードキャスト若しくは有線ネットワーク伝送のような一時的な媒体、又はハードディスク、フラッシュドライブ、コンパクトディスク、デジタルビデオディスク、ブルーレイディスク若しくは他のコンピュータ読み取り可能媒体のような記憶媒体(すなわち、非一時的な記憶媒体)を含んでもよい。いくつかの例では、ネットワークサーバ(図示せず)は、送信元デバイス12から符号化ビデオデータを受信し、例えば、ネットワーク伝送を介して符号化ビデオデータを宛先デバイス14に提供してもよい。同様に、ディスクスタンピング設備のような媒体製造設備の計算デバイスは、送信元デバイス12から符号化ビデオデータを受信し、符号化ビデオデータを含むディスクを製造してもよい。したがって、コンピュータ読み取り可能媒体16は、様々な例において、様々な形式の1つ以上のコンピュータ読み取り可能媒体を含むものと理解されてもよい。
宛先デバイス14の入力インタフェース28は、コンピュータ読み取り可能媒体16から情報を受信する。コンピュータ読み取り可能媒体16の情報は、ビデオエンコーダ20により規定されたシンタックス情報を含んでもよく、これはまた、ビデオデコーダ30により使用され、ブロック及び他の符号化ユニット、例えば、グループオブピクチャ(group of picture, GOP)の特性及び/又は処理を記述するシンタックス要素を含む。ディスプレイデバイス32は、復号されたビデオデータをユーザに表示し、陰極線管(cathode ray tube, CRT)、液晶ディスプレイ(liquid crystal display, LCD)、プラズマディスプレイ、有機発光ダイオード(organic light emitting diode, OLED)ディスプレイ又は他のタイプのディスプレイデバイスのような様々なディスプレイデバイスのうちいずれかを含んでもよい。
ビデオエンコーダ20及びビデオデコーダ30は、現在開発中の高効率ビデオ符号化(HEVC)標準のようなビデオ符号化標準に従って動作してもよく、HEVCテストモデル(HEVC Test Model, HM)に適合してもよい。代替として、ビデオエンコーダ20及びビデオデコーダ30は、代替として動画専門家グループ(Motion Picture Expert Group, MPEG)-4、パート10、アドバンストビデオ符号化(Advanced Video Coding, AVC)と呼ばれる国際電気通信連合電気通信標準化部門(ITU-T)のH.264標準、H.265/HEVC又はこのような標準の拡張のような他の独自又は業界標準に従って動作してもよい。しかし、この開示の技術は、いずれかの特定の符号化標準に限定されない。ビデオ符号化標準の他の例は、MPEG-2及びITU-T H.263を含む。図1に図示しないが、いくつかの態様では、ビデオエンコーダ20及びビデオデコーダ30は、オーディオエンコーダ及びデコーダとそれぞれ一体化されてもよく、共通のデータストリーム又は別個のデータストリームにおいてオーディオ及びビデオの双方の符号化を処理するために、適切なマルチプレクサ-デマルチプレクサ(multiplexer-demultiplexer, MUX-DEMUX)ユニット又は他のハードウェア及びソフトウェアを含んでもよい。該当する場合、MUX-DEMUXユニットは、ITU H.223マルチプレクサプロトコル、又はユーザデータグラムプロトコル(user datagram protocol, UDP)のような他のプロトコルに適合してもよい。
ビデオエンコーダ20及びビデオデコーダ30はそれぞれ、1つ以上のマイクロプロセッサ、デジタルシグナルプロセッサ(digital signal processor, DSP)、特定用途向け集積回路(application specific integrated circuit, ASIC)、フィールドプログラマブルゲートアレイ(field programmable gate array, FPGA)、ディスクリートロジック、ソフトウェア、ハードウェア、ファームウェア又はこれらのいずれかの組み合わせのような、様々な適切なエンコーダ回路のうちいずれかとして実現されてもよい。当該技術が部分的にソフトウェアで実現されるとき、デバイスは、適切な非一時的なコンピュータ読み取り可能媒体にソフトウェアのための命令を記憶し、この開示の技術を実行するために1つ以上のプロセッサを使用してハードウェアで命令を実行してもよい。ビデオエンコーダ20及びビデオデコーダ30のそれぞれは、1つ以上のエンコーダ又はデコーダに含まれてもよく、これらのいずれかは、それぞれのデバイス内の組み合わされたエンコーダ/デコーダ(コーデック)の一部として一体化されてもよい。ビデオエンコーダ20及び/又はビデオデコーダ30を含むデバイスは、集積回路、マイクロプロセッサ及び/又はセルラ電話のような無線通信デバイスを含んでもよい。
図2は、ビデオ符号化技術を実現し得るビデオエンコーダ20の例を示すブロック図である。ビデオエンコーダ20は、ビデオスライス内のビデオブロックのイントラ及びインター符号化を実行してもよい。イントラ符号化は、所与のビデオフレーム又はピクチャ内のビデオにおける空間的冗長性を低減又は除去するために空間予測に依存する。インター符号化は、ビデオシーケンスの隣接フレーム又はピクチャ内のビデオにおける時間的冗長性を低減又は除去するために時間予測に依存する。イントラモード(Iモード)は、いくつかの空間ベースの符号化モードのうちいずれかを示してもよい。一方向(別称uni予測)予測(Pモード)又は双方向(別称bi予測)(Bモード)のようなインターモードは、いくつかの時間ベースの符号化モードのうちいずれかを示してもよい。
図2に示すように、ビデオエンコーダ20は、符号化されるべきビデオフレーム内の現ビデオブロックを受信する。図2の例では、ビデオエンコーダ20は、モード選択ユニット40と、参照フレームメモリ64と、加算器50と、変換処理ユニット52と、量子化ユニット54と、エントロピー符号化ユニット56とを含む。次に、モード選択ユニット40は、動き補償ユニット44と、動き推定ユニット42と、イントラ予測ユニット(別称イントラ予測)ユニット46と、区分ユニット48とを含む。ビデオブロック再構築のために、ビデオエンコーダ20はまた、逆量子化ユニット58と、逆変換ユニット60と、加算器62とを含む。デブロッキングフィルタ(図2に図示せず)もまた、ブロック境界をフィルタリングして、再構築されたビデオからブロック性アーチファクトを除去するために含まれてもよい。所望の場合、デブロッキングフィルタは、典型的には、加算器62の出力をフィルタリングする。更なるフィルタ(ループ内又はポストループ)もまた、デブロッキングフィルタに加えて使用されてもよい。このようなフィルタは、簡潔にするために示されていないが、所望の場合、加算器50の出力を(ループ内フィルタとして)フィルタリングしてもよい。
符号化プロセスの間に、ビデオエンコーダ20は、符号化されるべきビデオフレーム又はスライスを受信する。フレーム又はスライスは、複数のビデオブロックに分割されてもよい。動き推定ユニット42及び動き補償ユニット44は、時間予測を提供するために、1つ以上の参照フレーム内の1つ以上のブロックに対して受信したビデオブロックのインター予測符号化を実行する。代替として、イントラ予測ユニット46は、空間予測を提供するために、符号化されるべきブロックと同じフレーム又はスライス内の1つ以上の隣接ブロックに対して受信したビデオブロックのイントラ予測符号化を実行してもよい。ビデオエンコーダ20は、例えば、ビデオデータの各ブロックにとって適切な符号化モードを選択するために、複数の符号化経路を実行してもよい。
さらに、区分ユニット48は、以前の符号化経路における以前の区分方式の評価に基づいて、ビデオデータのブロックをサブブロックに区分してもよい。例えば、区分ユニット48は、最初に、フレーム又はスライスを最大符号化ユニット(largest coding unit, LCU)に区分し、レート歪み解析(例えば、レート歪み最適化)に基づいて、LCUのそれぞれをサブ符号化ユニット(サブCU)に区分してもよい。モード選択ユニット40は、サブCUへのLCUの区分を示す四分木データ構造を更に生成してもよい。四分木のリーフノードCUは、1つ以上の予測ユニット(prediction unit, PU)と、1つ以上の変換ユニット(transform unit, TU)とを含んでもよい。
本開示は、HEVCの背景におけるCU、PU若しくはTUのいずれか、又は他の標準の背景における同様のデータ構造(例えば、H.264/AVCにおけるマクロブロック及びそのサブブロック)を示すために、「ブロック」という用語を使用する。CUは、符号化ノード、PU、及び符号化ノードに関連するTUを含む。CUのサイズは符号化ノードのサイズに対応し、形状の点で正方形である。CUのサイズは、8×8画素から最大で64×64画素以上を有するツリーブロックのサイズまでの範囲でもよい。各CUは、1つ以上のPU及び1つ以上のTUを含んでもよい。CUに関連するシンタックスデータは、例えば、1つ以上のPUへのCUの区分を記述してもよい。区分モードは、CUがスキップ又は直接モード符号化されるか、イントラ予測モード符号化されるか、インター予測(別称インター予測)モード符号化されるかによって異なってもよい。PUは、形状の点で非正方形に区分されてもよい。CUに関連するシンタックスデータはまた、例えば、四分木に従った1つ以上のTUへのCUの区分を記述してもよい。TUは、形状の点で正方形又は非正方形(例えば、矩形)とすることができる。
モード選択ユニット40は、例えば、エラー結果に基づいて、符号化モードのうち1つ、すなわち、イントラ又はインターを選択してもよく、結果のイントラ又はインター符号化ブロックを、残差ブロックデータを生成するために加算器50に提供し、参照フレームとして使用するための符号化ブロックを再構築するために加算器62に提供する。モード選択ユニット40はまた、動きベクトル、イントラモードインジケータ、区分情報及び他のこのようなシンタックス情報のようなシンタックス要素をエントロピー符号化ユニット56に提供する。
動き推定ユニット42及び動き補償ユニット44は、高度に一体化されてもよいが、概念的な目的のために別個に示されている。動き推定ユニット42により実行される動き推定は、ビデオブロックについての動きを推定する動きベクトルを生成するプロセスである。動きベクトルは、例えば、現フレーム内で符号化されている現ブロック(又は他の符号化されたユニット)に対する参照フレーム(又は他の符号化されたユニット)内の予測ブロックに対する現ビデオフレーム又はピクチャ内のビデオブロックのPUの変位を示してもよい。予測ブロックは、差分絶対値和(sum of absolute difference, SAD)、差分二乗和(sum of square difference, SSD)、又は他の差分メトリックにより決定され得る画素差分に関して、符号化されるべきブロックに密接にマッチングすることが見出されるブロックである。いくつかの例では、ビデオエンコーダ20は、参照フレームメモリ64に記憶された参照ピクチャのサブ整数画素位置についての値を計算してもよい。例えば、ビデオエンコーダ20は、参照ピクチャの1/4画素位置、1/8画素位置又は他の分数画素位置の値を補間してもよい。したがって、動き推定ユニット42は、全画素位置及び分数画素位置に対する動き検索を実行し、分数画素精度で動きベクトルを出力してもよい。
動き推定ユニット42は、PUの位置を参照ピクチャの予測ブロックの位置と比較することにより、インター符号化スライス内のビデオブロックのPUについての動きベクトルを計算する。参照ピクチャは、第1の参照ピクチャリスト(リスト0)又は第2の参照ピクチャリスト(リスト1)から選択されてもよく、これらのそれぞれは参照フレームメモリ64に記憶された1つ以上の参照ピクチャを識別する。動き推定ユニット42は、計算された動きベクトルをエントロピー符号化ユニット56及び動き補償ユニット44に送信する。
動き補償ユニット44により実行される動き補償は、動き推定ユニット42により決定された動きベクトルに基づいて予測ブロックを取り出すこと又は生成することを含んでもよい。同様に、いくつかの例では、動き推定ユニット42及び動き補償ユニット44は、機能的に一体化されてもよい。現ビデオブロックのPUについての動きベクトルを受信すると、動き補償ユニット44は、参照ピクチャリストのうち1つにおいて動きベクトルが指す予測ブロックを位置決定してもよい。加算器50は、以下に説明するように、符号化されている現ビデオブロックの画素値から予測ブロックの画素値を減算することにより、残差ビデオブロックを形成し、画素差分値を形成する。一般的に、動き推定ユニット42は、ルマ成分に対する動き推定を実行し、動き補償ユニット44は、クロマ成分とルマ成分との双方についてルマ成分に基づいて計算された動きベクトルを使用する。モード選択ユニット40はまた、ビデオスライスのビデオブロックを復号する際にビデオデコーダ30により使用するために、ビデオブロック及びビデオスライスに関連するシンタックス要素を生成してもよい。
イントラ予測ユニット46は、上記のように、動き推定ユニット42及び動き補償ユニット44により実行されるインター予測に対する代替として、現ブロックをイントラ予測してもよい。特に、イントラ予測ユニット46は、現ブロックを符号化するために使用するためのイントラ予測モードを決定してもよい。いくつかの例では、イントラ予測ユニット46は、例えば、別個の符号化経路の間に、様々なイントラ予測モードを使用して現ブロックを符号化してもよく、イントラ予測ユニット46(又はいくつかの例ではモード選択ユニット40)は、テストされたモードから使用するための適切なイントラ予測モードを選択してもよい。
例えば、イントラ予測ユニット46は、様々なテストされたイントラ予測モードについてのレート歪み解析を使用してレート歪み値を計算し、テストされたモードの中で最良のレート歪み特性を有するイントラ予測モードを選択してもよい。レート歪み解析は、一般的に、符号化ブロックと、符号化ブロックを生成するために符号化された元の符号化されていないブロックとの間の歪み(又はエラー)の量と、符号化ブロックを生成するために使用されるビットレート(すなわち、ビット数)とを決定する。イントラ予測ユニット46は、どのイントラ予測モードがブロックについての最良のレート歪み値を示すかを決定するために、様々な符号化ブロックについての歪み及びレートから比を計算してもよい。
さらに、イントラ予測ユニット46は、深度モデル化モード(depth modeling mode. DMM)を使用して深度マップの深度ブロックを符号化するように構成されてもよい。モード選択ユニット40は、例えば、レート歪み最適化(rate-distortion optimization, RDO)を使用して、利用可能なDMMモードがイントラ予測モード及び他のDMMモードよりも良好な符号化結果を生成するか否かを決定してもよい。深度マップに対応するテクスチャ画像のデータは、参照フレームメモリ64に記憶されてもよい。動き推定ユニット42及び動き補償ユニット44はまた、深度マップの深度ブロックをインター予測するように構成されてもよい。
ブロックについてのイントラ予測モード(例えば、従来のイントラ予測モード又はDMMモードのうち1つ)を選択した後に、イントラ予測ユニット46は、ブロックについての選択されたイントラ予測モードを示す情報をエントロピー符号化ユニット56に提供してもよい。エントロピー符号化ユニット56は、選択されたイントラ予測モードを示す情報を符号化してもよい。ビデオエンコーダ20は、複数のイントラ予測モードインデックステーブル及び複数の修正イントラ予測モードインデックステーブル(コードワードマッピングテーブルとも呼ばれる)と、様々なブロックについての符号化コンテキストの定義と、コンテキストのそれぞれに使用する最も可能性の高いイントラ予測モード、イントラ予測モードインデックステーブル及び修正イントラ予測モードインデックステーブルの指示とを含んでもよい構成データを送信ビットストリームに含めてもよい。
ビデオエンコーダ20は、符号化されている元のビデオブロックからモード選択ユニット40からの予測データを減算することにより残差ビデオブロックを形成する。加算器50は、この減算演算を実行するコンポーネント又は複数のコンポーネントを表す。
変換処理ユニット52は、離散余弦変換(discrete cosine transform, DCT)又は概念的に同様の変換のような変換を残差ブロックに適用し、残差変換係数値を含むビデオブロックを生成する。変換処理ユニット52は、DCTと概念的に同様の他の変換を実行してもよい。ウェーブレット変換、整数変換、サブバンド変換又は他のタイプの変換もまた使用されてもよい。
変換処理ユニット52は、変換を残差ブロックに適用し、残差変換係数のブロックを生成する。変換は、残差情報を画素値ドメインから周波数ドメインのような変換ドメインに変換してもよい。変換処理ユニット52は、結果の変換係数を量子化ユニット54に送信してもよい。量子化ユニット54は、ビットレートを更に低減するために、変換係数を量子化する。量子化プロセスは、係数のうち一部又は全部に関連するビット深度を低減してもよい。量子化の程度は、量子化パラメータを調整することにより修正されてもよい。いくつかの例では、量子化ユニット54は、次いで、量子化された変換係数を含む行列の走査を実行してもよい。代替として、エントロピー符号化ユニット56が走査を実行してもよい。
量子化に続いて、エントロピー符号化ユニット56は、量子化された変換係数をエントロピー符号化する。例えば、エントロピー符号化ユニット56は、コンテキスト適応型可変長符号化(context adaptive variable length coding, CAVLC)、コンテキスト適応型バイナリ算術符号化(context adaptive binary arithmetic coding, CABAC)、シンタックスベースのコンテキスト適応型バイナリ算術符号化(syntax-based context-adaptive binary arithmetic coding, SBAC)、確率間隔区分エントロピー(probability interval partitioning entropy, PIPE)符号化又は他のエントロピー符号化技術を実行してもよい。コンテキストベースのエントロピー符号化の場合、コンテキストは隣接ブロックに基づいてもよい。エントロピー符号化ユニット56によるエントロピー符号化に続いて、符号化ビットストリームは、他のデバイス(例えば、ビデオデコーダ30)に送信されてもよく、或いは後の送信又は検索のためにアーカイブされてもよい。
逆量子化ユニット58及び逆変換ユニット60は、例えば、参照ブロックとして後に使用するための画素ドメインにおける残差ブロックを再構築するために、逆量子化及び逆変換をそれぞれ適用する。動き補償ユニット44は、残差ブロックを参照フレームメモリ64のフレームのうち1つの予測ブロックに加算することにより参照ブロックを計算してもよい。動き補償ユニット44はまた、動き推定において使用するためのサブ整数画素値を計算するために、1つ以上の補間フィルタを再構築された残差ブロックに適用してもよい。加算器62は、参照フレームメモリ64に記憶するための再構築されたビデオブロックを生成するために、再構築された残差ブロックを、動き補償ユニット44により生成された動き補償された予測ブロックに加算する。再構築されたビデオブロックは、後続のビデオフレーム内のブロックをインター符号化するための参照ブロックとして、動き推定ユニット42及び動き補償ユニット44により使用されてもよい。
図3は、ビデオ符号化技術を実現し得るビデオデコーダ30の例を示すブロック図である。図3の例では、ビデオデコーダ30は、エントロピー復号ユニット70と、動き補償ユニット72と、イントラ予測ユニット74と、逆量子化ユニット76と、逆変換ユニット78と、参照フレームメモリ82と、加算器80とを含む。ビデオデコーダ30は、いくつかの例では、ビデオエンコーダ20(図2)に関して説明した符号化経路と一般的に相反する復号経路を実行してもよい。動き補償ユニット72は、エントロピー復号ユニット70から受信した動きベクトルに基づいて予測データを生成してもよく、一方で、イントラ予測ユニット74は、エントロピー復号ユニット70から受信したイントラ予測モードインジケータに基づいて予測データを生成してもよい。
復号プロセスの間に、ビデオデコーダ30は、ビデオエンコーダ20から、符号化ビデオスライスのビデオブロック及び関連するシンタックス要素を表す符号化ビデオビットストリームを受信する。ビデオデコーダ30のエントロピー復号ユニット70は、量子化係数、動きベクトル又はイントラ予測モードインジケータ、及び他のシンタックス要素を生成するために、ビットストリームをエントロピー復号する。エントロピー復号ユニット70は、動きベクトル及び他のシンタックス要素を動き補償ユニット72に転送する。ビデオデコーダ30は、ビデオスライスレベル及び/又はビデオブロックレベルでシンタックス要素を受信してもよい。
ビデオスライスがイントラ符号化(I)スライスとして符号化されるとき、イントラ予測ユニット74は、シグナリングされたイントラ予測モードと、現フレーム又はピクチャの以前に復号されたブロックからのデータとに基づいて、現ビデオスライスのビデオブロックについての予測データを生成してもよい。ビデオフレームがインター符号化(例えば、B、P又はGPB)スライスとして符号化されたとき、動き補償ユニット72は、エントロピー復号ユニット70から受信した動きベクトル及び他のシンタックス要素に基づいて、現ビデオスライスのビデオブロックについての予測ブロックを生成する。予測ブロックは、参照ピクチャリストの1つの中の参照ピクチャのうち1つから生成されてもよい。ビデオデコーダ30は、参照フレームメモリ82に記憶された参照ピクチャに基づいてデフォルトの構築技術を使用して、参照フレームリスト、すなわち、リスト0及びリスト1を構築してもよい。
動き補償ユニット72は、動きベクトル及び他のシンタックス要素を解析することにより、現ビデオスライスのビデオブロックについての予測情報を決定し、復号されている現ビデオブロックについての予測ブロックを生成するために、予測情報を使用する。例えば、動き補償ユニット72は、ビデオスライスのビデオブロックを符号化するために使用される予測モード(例えば、イントラ又はインター予測)、インター予測スライスタイプ(例えば、Bスライス、Pスライス又はGPBスライス)、スライスについての参照ピクチャリストのうち1つ以上についての構築情報、スライスの各インター符号化ビデオブロックについての動きベクトル、スライスの各インター符号化ビデオブロックについてのインター予測状態、及び現ビデオスライス内のビデオブロックを復号するための他の情報を決定するために、受信したシンタックス要素のうちいくつかを使用する。
動き補償ユニット72はまた、補間フィルタに基づいて補間を実行してもよい。動き補償ユニット72は、参照ブロックのサブ整数画素についての補間値を計算するために、ビデオブロックの符号化中にビデオエンコーダ20により使用される補間フィルタを使用してもよい。この場合、動き補償ユニット72は、受信したシンタックス要素からビデオエンコーダ20により使用される補間フィルタを決定し、予測ブロックを生成するために補間フィルタを使用してもよい。
深度マップに対応するテクスチャ画像のデータは、参照フレームメモリ82に記憶されてもよい。動き補償ユニット72はまた、深度マップの深度ブロックをインター予測するように構成されてもよい。
ここに開示されるものは、SVTの符号化効率を増加させるための様々なメカニズムである。上記のように、変換ブロックは、対応する残差ブロックに対して様々な候補位置に位置してもよい。開示のメカニズムは、候補位置に基づいて変換ブロックに異なる変換を使用する。例えば、逆離散正弦変換(DST)は、残差ブロックの右下角をカバーする候補位置に適用できる。また、逆DCTは、残差ブロックの左上角をカバーする候補位置に適用できる。このメカニズムは、右下角に分布するより多くの残差情報を有する残差ブロックを変換するために、一般的にはDSTがDCTよりも効率的であり、一方で、左上角に分布するより多くの残差情報を有する残差ブロックを変換するために、一般的にはDCTがDSTよりも効率的であるので、有利になり得る。また、残差ブロックの右下角は、ほとんどの場合、統計的により多くの残差情報を含む点にも留意すべきである。開示のメカニズムはまた、いくつかの場合、変換ブロックの残差サンプルを水平に逆転することをサポートする。例えば、残差サンプルは、逆変換ブロックが適用された後に、水平に逆転/反転されてもよい。これは、現残差ブロックの右側の隣接ブロックが既に再構築されており、現残差ブロックの左側の隣接ブロックが再構築されていないときに生じてもよい。これはまた、逆DSTが対応するトランスポートブロックの一部として使用されているときにも生じてもよい。この手法は、再構築されたブロックに最も近い情報を符号化するためにより大きい柔軟性を提供し、これは、対応する残差情報の低減を生じる。開示のメカニズムはまた、変換ブロックについての候補位置情報のコンテキスト符号化をサポートする。残差ブロックに対応する予測情報は、候補位置情報を符号化するために使用されてもよい。例えば、いくつかの場合、残差ブロックは、テンプレートマッチングモードにより生成された予測ブロックに対応してもよい。さらに、テンプレートマッチングモードにより使用されるテンプレートは、残差ブロックの空間的に隣接する再構築された領域に基づいて選択されてもよい。このような場合、残差ブロックの右下部分は、残差ブロックの他の部分よりも多くの残差情報を含んでもよい。したがって、残差ブロックの右下部分をカバーする候補位置は、変換のための最良の位置として選択される可能性が最も高い。したがって、残差ブロックがテンプレートマッチングベースのインター予測に関連するとき、1つの候補位置のみが残差ブロックに利用可能にされてもよく、及び/又は他のコンテキスト符号化手法が変換のための位置情報の符号化に使用されてもよい。
図4は、HEVCモデルにおけるビデオ符号化に使用される例示的なイントラ予測モード400の概略図である。ビデオ圧縮方式は、データの冗長性を利用する。例えば、ほとんどの画像は、隣接画素と同一又は類似の色及び/又は光を含む画素のグループを含む。特定の例として、夜空の画像は、黒の画素の広い領域と、星を表す白の画素のクラスタとを含んでもよい。イントラ予測モード400は、これらの空間的関係を利用する。具体的には、フレームは、サンプルを含む一連のブロックに分割できる。次いで、各ブロックを送信するのではなく、ブロックの光/色は、隣接ブロック内の参照サンプルとの空間的関係に基づいて予測できる。例えば、エンコーダは、現ブロックが、現ブロックの左上角に位置する以前に符号化されたブロック内の参照サンプルと同じデータを含むことを示してもよい。次いで、エンコーダは、ブロックの値の代わりに予測モードを符号化してもよい。これは、符号化のサイズをかなり低減する。イントラ予測モード400により示されるように、左上角は、HEVCにおける予測モード18に対応する。したがって、エンコーダは、ブロックについての画素情報を符号化する代わりに、ブロックについての予測モード18を単に記憶できる。図示のように、HEVCにおけるイントラ予測モード400は、予測モード2から予測モード34までの33個の角度予測モードを含む。イントラ予測モード400はまた、平坦な領域を予測するイントラプラナーモード0及びイントラ直流(direct current, DC)モード1を含む。イントラプラナーモード0は、隣接参照サンプルから導出された垂直及び水平勾配を有する振幅面としてブロックを予測する。イントラDCモード1は、隣接参照サンプルの平均値としてブロックを予測する。イントラ予測モード400は、ブロックのルマ(例えば、光) 成分をシグナリングするために使用されてもよい。イントラ予測はまた、クロマ(例えば、色)値にも適用できる。HEVCにおいて、クロマ値は、プラナーモード、角度26モード(例えば、垂直)、角度10モード(例えば、水平)、イントラDC及び導出(derived)モードを使用することにより予測され、導出モードは、イントラ予測モード400により符号化されたクロマ成分とルマ成分との間の相関を予測する。
画像ブロックについてのイントラ予測モード400は、予測情報としてエンコーダにより記憶される。イントラ予測モード400は単一のフレームにおける予測に使用されるが、インター予測も使用されてもよい点に留意すべきである。インター予測は、複数のフレームにわたる時間的冗長性を利用する。例として、映画におけるシーンは、動かない机のような、比較的静止した背景を含んでもよい。したがって、机は、複数のフレームにわたって実質的に同じ画素のセットとして示される。インター予測は、第2のフレーム内のブロックを予測するために、第1のフレーム内のブロックを使用し、これは、この例では、各フレーム内で机を符号化する必要性を回避する。インター予測は、現フレーム内のブロックを参照フレーム内のブロックとマッチングして比較するために、ブロックマッチングアルゴリズムを使用する。次いで、動きベクトルは、参照フレーム内で最良にマッチングされたブロック位置と、現/ターゲットブロックの同じ場所の位置を示すように符号化できる。したがって、一連の画像フレームは、一連のブロックとして表されることができ、次いで、これは、予測モード及び/又は動きベクトルを含む予測ブロックとして表されることができる。
図5は、イントラ予測モード400のようなイントラ予測モードを使用するビデオ符号化におけるイントラ予測500の例を示す。図示のように、現ブロック501は、隣接ブロック510内のサンプルにより予測できる。エンコーダは、一般的に、左上から右下に画像を符号化してもよい。しかし、エンコーダは、いくつかの場合、以下に説明するように、右から左に符号化してもよい。ここで使用されるとき、右は符号化画像の右側を示し、左は符号化画像の左側を示し、上は符号化画像の上側を示し、下は符号化画像の下側を示す点に留意すべきである。
現ブロック501は、必ずしも隣接ブロック510からのサンプルと正確にマッチングするとは限らない点に留意すべきである。このような場合、予測モードは、最も近くマッチングする隣接ブロック510から符号化される。デコーダが適切な値を決定することを可能にするために、予測値と実際の値との間の差が保持される。これは、残差情報と呼ばれる。残差情報は、イントラ予測500とインター予測との双方で生じる。
図6は、イントラ予測500及び/又はインター予測に基づく例示的なビデオ符号化メカニズム600の概略図である。画像ブロック601は、1つ以上のフレームからエンコーダにより取得できる。例えば、画像は、複数の矩形画像領域に分割されてもよい。画像の各領域は符号化ツリーユニット(Coding Tree Unit, CTU)に対応する。CTUは、HEVCにおける符号化ユニットのような複数のブロックに区分される。次いで、ブロック区分情報は、ビットストリーム611に符号化される。したがって、画像ブロック601は、画像の区分された部分であり、画像の対応する部分におけるルマ成分及び/又はクロマ成分を表す画素を含む。符号化の間に、画像ブロック601は、イントラ予測についての予測モード(例えば、イントラ予測モード)及び/又はインター予測についての動きベクトルのような予測情報を含む予測ブロック603として符号化される。次いで、予測ブロック603として画像ブロック601を符号化することは、予測ブロック603と画像ブロック601との間の差を示す残差情報を含む残差ブロック605を残す可能性がある。
画像ブロック601は、1つの予測ブロック603及び1つの残差ブロック605を含む符号化ユニットとして区分されてもよい点に留意すべきである。予測ブロック603は、符号化ユニットの全ての予測サンプルを含んでもよく、残差ブロック605は、符号化ユニットの全ての残差サンプルを含んでもよい。このような場合、予測ブロック603は、残差ブロック605と同じサイズである。他の例では、画像ブロック601は、2つの予測ブロック603及び1つの残差ブロック605を含む符号化ユニットとして分割されてもよい。このような場合、各予測ブロック603は、符号化ユニットの予測サンプルの一部を含み、残差ブロック605は、符号化ユニットの残差サンプルの全てを含む。更に他の例では、画像ブロック601は、2つの予測ブロック603及び4つの残差ブロック605を含む符号化ユニットに区分される。符号化ユニット内の残差ブロック605の区分パターンは、ビットストリーム611内でシグナリングされてもよい。このような位置パターンは、HEVCにおける残差四分木(Residual Quad-Tree, RQT)を含んでもよい。さらに、画像ブロック601は、画像サンプル(又は画素)のY成分として示されるルマ成分(例えば、光)のみを含んでもよい。他の場合、画像ブロック601は、画像サンプルのY、U及びV成分を含んでもよく、U及びVは、青色輝度及び赤色輝度(UV)色空間におけるクロミナンス成分(例えば、色)を示す。
SVTは、情報を更に圧縮するために使用されてもよい。具体的には、SVTは、残差ブロック605を更に圧縮するために、変換ブロック607を使用する。変換ブロック607は、逆DCT及び/又は逆DSTのような変換を含む。予測ブロック603と画像ブロック601との間の差は、変換係数を使用することにより変換に適合する。変換ブロック607の変換モード(例えば、逆DCT及び/又は逆DST)及び対応する変換係数を示すことにより、デコーダは、残差ブロック605を再構築できる。正確な再現が必要とされないとき、変換係数は、変換により良好な適合を作成するために、特定の値を丸めることにより更に圧縮できる。このプロセスは量子化として知られ、許容できる量子化を記述する量子化パラメータに従って実行される。したがって、変換ブロック607の変換モード、変換係数及び量子化パラメータは、変換残差ブロック609内に変換残差情報として記憶され、これはまた、いくつかの場合、単に残差ブロックと呼ばれてもよい。
次いで、予測ブロック603の予測情報及び変換残差ブロック609の変換残差情報は、ビットストリーム611に符号化できる。ビットストリーム611は記憶でき、及び/又は、デコーダに送信できる。次いで、デコーダは、画像ブロック601を回復するために、プロセスを逆に実行できる。具体的には、デコーダは、変換ブロック607を決定するために、変換残差情報を使用できる。次いで、変換ブロック607は、残差ブロック605を決定するために、変換残差ブロック609と共に使用できる。次いで、残差ブロック605及び予測ブロック603は、画像ブロック601を再構築するために使用できる。次いで、画像ブロック601は、フレームを再構築してこのようなフレームを位置決定し、符号化ビデオを回復するために、他の復号された画像ブロック601に対して位置決定できる。
SVTについて、ここで更に詳細に説明する。SVTを行うために、変換ブロック607は、残差ブロック605よりも小さくなるように選択される。変換ブロック607は、残差ブロック605の対応する部分を変換し、更なる符号化/圧縮なしに残差ブロック605の残りを残すために使用される。これは、残差情報が、一般的には残差ブロック605にわたって均等に分布しないためである。SVTは、全体の残差ブロック605が変換されることを必要とせずに、残差ブロック605内の残差情報の大部分をキャプチャするために、適応的な位置を有するより小さい変換ブロック607を使用する。この手法は、残差ブロック605内の全ての残差情報を変換するよりも良好な符号化効率を達成し得る。変換ブロック607が残差ブロック605よりも小さいので、SVTは、残差ブロック605に対する変換の位置をシグナリングするためのメカニズムを使用する。例えば、SVTがサイズw×h(例えば、幅×高さ)の残差ブロック605に適用されるとき、変換ブロック607のサイズ及び位置情報は、ビットストリーム611に符号化されてもよい。これは、デコーダが変換ブロック607を再構築し、残差ブロック605の再構築のために、変換ブロック607を、変換残差ブロック609に対して正確な位置に構成することを可能にする。
いくつかの予測ブロック603は、残差ブロック605を生じることなく符号化できる点に留意すべきである。しかし、このような場合はSVTの使用を生じないため、更に説明しない。上記のように、SVTは、インター予測ブロック又はイントラ予測ブロックに使用されてもよい。さらに、SVTは、指定のインター予測メカニズム(例えば、変換モデルベースの動き補償)により生成された残差ブロック605に対して使用されてもよいが、他の指定のインター予測メカニズム(例えば、アフィンモデルベースの動き補償)により生成された残差ブロック605に対して使用されなくてもよい。
図7は、変換ブロック707及び残差ブロック705を含むSVTの例700を示す。図7の変換ブロック707及び残差ブロック705は、それぞれ図6の変換ブロック607及び残差ブロック605と類似している。参照を容易にするために、SVTの例700は、SVT-I、SVT-II及びSVT-IIIと呼ばれる。
SVT-Iは、w_t=w/2、h_t=h/2として記述され、w_t及びh_tは、それぞれ変換ブロック707の幅及び高さを示し、w及びhは、それぞれ残差ブロック705の幅及び高さを示す。例えば、変換ブロック707の幅及び高さは、共に残差ブロック705の幅及び高さの半分である。SVT-IIは、w_t=w/4、h_t=hとして記述され、変数は上記の通りである。例えば、変換ブロック707の幅は、残差ブロック705の幅の4分の1であり、変換ブロック707の高さは、残差ブロック705の高さに等しい。SVT-IIIは、w_t=w、h_t=h/4として記述され、変数は、上記の通りである。例えば、変換ブロック707の幅は、残差ブロック705の幅に等しく、変換ブロック707の高さは、残差ブロック705の高さの4分の1である。SVTのタイプを示すタイプ情報(例えばSVT-I、SVT-II又はSVT-III)は、デコーダによる再構築をサポートするためにビットストリームに符号化される。
図7から分かるように、各変換ブロック707は、残差ブロック705に対して様々な場所に位置できる。変換ブロック707の位置は、残差ブロック705の左上角に対する位置オフセット(x,y)により表され、xは、画素の単位での変換ブロック707の左上角と残差ブロック705の左上角との間の水平距離を示し、yは、画素の単位での変換ブロック707の左上角と残差ブロック705の左上角との間の垂直距離を示す。残差ブロック705内の変換ブロック707のそれぞれの潜在的な位置は、候補位置と呼ばれる。残差ブロック705について、候補位置の数は、SVTのタイプについて(w-w_t+1)×(h-h_t+1)である。より具体的には、16×16の残差ブロック705について、SVT-Iが使用されるとき、81個の候補位置が存在する。SVT-II又はSVT-IIIが使用されるとき、13個の候補位置が存在する。一旦決定されると、位置オフセットのx及びyの値は、使用されるSVTブロックのタイプと共にビットストリームに符号化される。SVT-Iについての複雑性を低減するために、32個の位置のサブセットが81個の可能な候補位置から選択できる。次いで、このサブセットはSVT-Iについての許容候補位置として作用する。
SVTの例700のうち1つを使用するSVT方式の1つの欠点は、残差情報としてSVT位置情報を符号化することがかなりのシグナリングオーバヘッドを生じることである。さらに、エンコーダの複雑さは、レート歪み最適化(Rate-Distortion Optimization, RDO)のような圧縮品質プロセスによりテストされる位置の数が増加するにつれてかなり増加する可能性がある。候補位置の数は、残差ブロック705のサイズとともに増加するので、32×32又は64×128のような、より大きい残差ブロック705については、シグナリングオーバヘッドがいっそう大きくなり得る。SVTの例700のうち1つを使用することの他の欠点は、変換ブロック707のサイズが残差ブロック705のサイズの4分の1であることである。このようなサイズの変換ブロック707は、多くの場合、残差ブロック705内の主な残差情報をカバーするのに十分な大きさではない可能性がある。
図8は、変換ブロック807及び残差ブロック805を含む更なるSVTの例800を示す。図8の変換ブロック807及び残差ブロック805は、それぞれ図6〜7の変換ブロック607、707及び残差ブロック605、705と類似している。参照を容易にするために、SVTの例800は、SVT垂直(SVT-V)及びSVT水平(SVT-H)と呼ばれる。SVTの例800は、SVTの例700と類似しているが、エンコーダに対する低減したシグナリングオーバヘッド及びより複雑でない処理要件をサポートするように設計される。
SVT-Vはw_t=w/2及びh_t=hとして記述され、変数は上述の通りである。変換ブロック807の幅は、残差ブロック805の幅の半分であり、変換ブロック807の高さは、残差ブロック805の高さに等しい。SVT-Hはw_t=w及びh_t = h/2として記述され、変数は上述の通りである。例えば、変換ブロック807の幅は、残差ブロック805の幅に等しく、変換ブロック807の高さは、残差ブロック805の高さの半分である。SVT-VはSVT-IIと類似しており、SVT-HはSVT-IIIと類似している。SVT-II及びSVT-IIIと比較して、SVT-V及びSVT-Hにおける変換ブロック807は、変換ブロック807が残差ブロック805内のより多くの残差情報をカバーするように、残差ブロック805の半分に拡大される。
SVTの例700と同様に、SVTの例800は、いくつかの候補位置を含むことができ、候補位置は、残差ブロック(例えば、残差ブロック805)に対する変換ブロック(例えば、変換ブロック807)の可能な許容できる位置である。候補位置は、候補位置ステップサイズ(CPSS)に従って決定される。候補位置は、CPSSにより指定された等間隔で分離されてもよい。このような場合、候補位置の数は5個以下まで低減される。低減した数の候補位置は、変換のための選択された位置がより少ないビットでシグナリングできるので、位置情報に関連するシグナリングオーバヘッドを軽減する。さらに、候補位置の数を低減することは、変換位置の選択をアルゴリズム的により簡単にし、これは、エンコーダの複雑性が低減されることを可能にする(例えば、符号化するために使用されるより少ない計算リソースを生じる)。
図9は、変換ブロック907及び残差ブロック905を含むSVTの例900を示す。図9の変換ブロック907及び残差ブロック905は、それぞれ図6〜8の変換ブロック607、707、807及び残差ブロック605、705、805に類似している。図9は、様々な候補位置を示しており、候補位置は、残差ブロック(例えば、残差ブロック905)に対する変換ブロック(例えば、変換ブロック907)の可能な許容できる位置である。具体的には、図9A〜図9EにおけるSVTの例はSVT-Vを使用し、図9F〜図9JにおけるSVTの例はSVT-Hを使用する。変換のための許容できる候補位置は、CPSSに依存し、これは、変換ブロック907がカバーすべき残差ブロック905の部分及び/又は候補位置の間のステップサイズに更に依存する。例えば、CPSSは、SVT-Vについてs=w/M1として、或いはSVT-Hについてs=h/M2として計算されてもよく、w及びhは、それぞれ残差ブロックの幅及び高さであり、M1及びM2は、2〜8の範囲内の所定の整数である。より多くの候補位置は、より大きいM1又はM2の値によって許容される。例えば、M1とM2は共に8として設定されてもよい。この場合、残差ブロック905に対する変換ブロック907の位置を記述する位置インデックス(P)の値は、0と4との間である。
他の例では、CPSSは、SVT-Vについてs=max(w/M1,Th1)、或いはSVT-Hについてs=max(h/M2,Th2)として計算され、Th1及びTh2は、最小ステップサイズを指定する予め定義された整数である。Th1及びTh2は2以上の整数でもよい。この例では、Th1及びTh2は4として設定され、M1及びM2は8として設定され、異なるブロックサイズは異なる数の候補位置を有してもよい。例えば、残差ブロック905の幅が8であるとき、2つの候補位置、特に図9A及び図9Eにおける候補位置がSVT-Vにとって利用可能である。例えば、Th1により示されるステップサイズが大きく、w/M1により示される、変換ブロック907がカバーする残差ブロック905の部分も大きいとき、2つの候補位置のみがCPSSを満たす。しかし、wが16に設定されたとき、変換ブロック907がカバーする残差ブロック905の部分は、w/M1の変化により減少する。これは、より多くの候補位置、この場合、図9A、図9C及び図9Eに示すような3つの候補位置を生じる。図9A〜9Eに示す全ての5つの候補位置は、残差ブロック905の幅が16よりも大きいが、Th1及びM1の値が上記の通りであるときに利用可能である。
CPSSが他のメカニズムに従って計算されるとき、他の例もまた見出され得る。具体的には、CPSSは、SVT-Vについてs=w/M1、或いはSVT-Hについてs=h/M2として計算されてもよい。この場合、M1及びM2が4として設定されたとき、3つの候補位置がSVT-Vについて許容され(例えば、図9A、9C及び9Eにおける候補位置)、3つの候補位置がSVT-Hについて許容される(例えば、図9F、9H及び9Jにおける候補位置)。さらに、M1及びM2が4として設定されたとき、変換ブロック907がカバーする残差ブロック905の部分が増加し、SVT-Vについて2つの許容できる候補位置(例えば、図9A及び9Eにおける候補位置)と、SVT-Hについての2つの許容できる候補位置(例えば、図9F及び9Jにおける候補位置)とを生じる。
他の例では、CPSSは、上記のように、SVT-Vについてs=max(w/M1,Th1)、或いはSVT-Hについてs=max(h/M2,Th2)として計算される。この場合、T1及びT2は予め定義された整数、例えば2として設定され、M1はw≧hの場合に8として設定され、或いは、w<hの場合に4として設定され、M2はh≧wの場合に8として設定され、或いは、h<wの場合に4として設定される。例えば、変換ブロック907がカバーする残差ブロック905の部分は、残差ブロック905の高さが残差ブロック905の幅より大きいかその逆であるかに依存する。したがって、SVT-H又はSVT-Vの候補位置の数は、残差ブロック905のアスペクト比に更に依存する。
他の例では、CPSSは、上記のように、SVT-Vについてs=max(w/M1,Th1)、或いはSVT-Hについてs=max(h/M2, Th2)として計算される。この場合、M1、M2、Th1及びTh2の値は、ビットストリームのハイレベルのシンタックス構造(例えば、シーケンスパラメータセット)から導出される。例えば、CPSSを導出するために使用される値は、ビットストリーム内でシグナリングできる。M1及びM2は、シンタックス要素から解析された同じ値を共有してもよく、Th1及びTh2は、他のシンタックス要素から解析された同じ値を共有してもよい。
図10は、残差ブロック1005に対する変換ブロック1007の位置を示す例示的なSVT位置1000を示す。6つの異なる位置(例えば、3つの垂直位置及び3つの水平位置)が示されているが、異なる数の位置が実際の用途において使用されてもよいことが認識されるべきである。SVT変換位置1000は、図9のSVTの例900における候補位置から選択される。具体的には、選択されたSVT変換位置1000は、位置インデックス(P)に符号化されてもよい。位置インデックスPは、残差ブロックの左上角に対する変換ブロックの左上角の位置オフセット(Z)を決定するために使用できる。例えば、この位置相関は、Z = s×Pに従って決定でき、sは、SVTタイプに基づく変換ブロックについてのCPSSであり、図9に関して説明したように計算される。変換ブロックがSVT-Vタイプであるとき、Pの値は
として符号化されてもよい。変換ブロックがSVT-Hタイプであるとき、Pの値は
として符号化されてもよい。より具体的には、(0, 0)は、残差ブロックの左上角の座標を表すことができる。このような場合、変換ブロックの左上角の座標は、SVT-Vについて(Z,0)であり、或いは、SVT-Hについて(0,Z)である。
以下に更に詳細に説明するように、エンコーダは、フラグを使用することにより、ビットストリーム内のSVT変換タイプ(例えば、SVT-H又はSVT-T)及び残差ブロックサイズを符号化してもよい。次いで、デコーダは、SVT変換サイズ及び残差ブロックサイズに基づいて、SVT変換サイズを決定してもよい。一旦SVT変換サイズが決定されると、デコーダは、CPSS関数に従って、図9のSVTの例900における候補位置のような、SVT変換の許容できる候補位置を決定できる。デコーダはSVT変換の候補位置を決定できるので、エンコーダは、位置オフセットの座標をシグナリングしなくてもよい。代わりに、どの候補位置が対応する変換に使用されるかを示すためのコードが使用できる。例えば、位置インデックスPは、更なる圧縮のために切り捨て単項コード(truncated unary code)を使用して、1つ以上のビンに二値化されてもよい。特定の例として、P値が0から4の範囲内にあるとき、P値0、4、2、3及び1は、それぞれ0、01、001、0001及び0000として二値化できる。このバイナリコードは、位置インデックスの十進値を表現するよりも圧縮されている。他の例として、P値が0から1の範囲内にあるとき、P値0及び1は、それぞれ0及び1として二値化できる。したがって、位置インデックスは、変換ブロックの可能な候補位置を考慮して、特定の変換ブロック位置をシグナリングするために、所望のサイズで増大又は縮小できる。
位置インデックスPは、最も可能性の高い位置と、より可能性が低い残りの位置とを使用することにより、1つ以上のビンに二値化されてもよい。例えば、左及び上の隣接ブロックがデコーダにおいて既に復号されており、したがって、予測に利用可能であるとき、最も可能性の高い位置は、残差ブロックの右下角をカバーする位置として設定されてもよい。一例では、P値が0から4の範囲内にあり、位置4が最も可能性の高い位置として設定されたとき、P値4、0、1、2及び3は、それぞれ1、000、001、010及び011として二値化される。さらに、P値が0から2の範囲内にあり、位置2が最も可能性の高い位置として設定されたとき、P値2、0及び1は、それぞれ1、01及び00として二値化される。したがって、候補位置の最も可能性の高い位置インデックスは、最も一般的な場合のシグナリングオーバヘッドを低減するために、最小のビットで示される。確率は、隣接する再構築されたブロックの符号化順序に基づいて決定できる。したがって、デコーダは、使用される復号方式に基づいて対応するブロックに使用されるべきコードワード方式を推測できる。
例えば、HEVCでは、符号化ユニットの符号化順序は、一般的に、上から下且つ左から右である。このような場合、現符号化/復号中の符号化ユニットの右側は利用可能ではなく、右上角をより可能性の高い変換位置にする。しかし、動きベクトル予測子は、左及び上の空間的隣接から導出される。このような場合、残差情報は右下角に向かって統計的により強くなる。この場合、右下部分をカバーする候補位置が最も可能性の高い位置である。さらに、適応的な符号化ユニットの符号化順序が利用されるとき、1つのノードは、2つの子ノードに垂直に分割してもよく、右の子ノードは、左の子ノードの前に符号化されてもよい。この場合、左の子ノードの右側隣接は、左の子ノードの復号/符号化の前に再構築されている。さらに、このような場合、左側隣接画素は使用できない。右側隣接が利用可能であり、左側隣接が利用可能でないとき、残差ブロックの左下部分は、大量の残差情報を含む可能性が高く、したがって、残差ブロックの左下部分をカバーする候補位置は、最も可能性の高い位置になる。
したがって、位置インデックスPは、残差ブロックの隣の右側が再構築されているか否かに従って、1つ以上のビンに二値化されてもよい。一例では、P値は、SVT変換位置1000により示されるように、0〜2の範囲内にある。残差ブロックの隣の右側が再構築されているとき、P値0、2及び1は、0、01及び00として二値化される。そうでない場合、P値2、0及び1は、0、01及び00として二値化される。他の例では、残差ブロックの隣の右側が再構築されているが、残差ブロックの隣の左側が再構築されていないとき、P値0、2及び1は、0、00及び01として二値化される。そうでない場合、P値2、0及び1は、0、00及び01として二値化される。これらの例では、単一のビンに対応する位置が最も可能性の高い位置であり、他の2つの位置が残りの位置である。例えば、最も可能性の高い位置は、右側隣接の可用性に依存する。
レート歪み性能の意味での最良の位置の確率分布は、インター予測モードの間で全く異なる可能性がある。例えば、残差ブロックが、テンプレートとして空間的に隣接する再構築された画素とテンプレートマッチングすることにより生成された予測ブロックに対応するとき、最良の位置は、最も確率の高い位置2である。他のインター予測モードでは、位置2(又は右隣接が利用可能であり左隣接が利用可能でないときの位置0)が最良の位置である確率は、テンプレートマッチングモードの確率よりも低い。これを鑑みて、位置インデックスPの第1のビンについてのコンテキストモデルは、残差ブロックに関連するインター予測モードに従って判断されてもよい。より具体的には、残差ブロックがテンプレートマッチングベースのインター予測に関連するとき、位置インデックスPの第1のビンは第1のコンテキストモデルを使用する。そうでない場合、第2のコンテキストモデルがこのビンを符号化/復号するために使用される。
他の例では、残差ブロックがテンプレートマッチングベースのインター予測に関連するとき、最も可能性の高い位置(例えば、位置2、又は右隣接が利用可能であるが左隣接が利用可能でないときの位置0)は、変換ブロック位置として直接設定され、位置情報は、ビットストリーム内でシグナリングされない。そうでない場合、位置インデックスは、ビットストリーム内で明示的にシグナリングされる。
残差ブロックに対する変換ブロックの位置に依存して、異なる変換が使用できる点にも留意すべきである。例えば、残差ブロックの左側は再構築され、残差ブロックの右側は再構築されず、これは、左から右へ且つ上から下への固定の符号化ユニットの符号化順序(例えば、HEVCにおける符号化順序)を有するビデオ符号化について生じる。この場合、残差ブロックの右下角をカバーする候補位置は、符号化のときの変換ブロックにおける変換のために、DST(例えば、DSTバージョン7(DST-7)又はDSTバージョン1(DST-1))を使用してもよい。したがって、対応する候補位置について逆DST変換がデコーダで使用される。さらに、残差ブロックの左上角をカバーする候補位置は、符号化のときの変換ブロックにおける変換のために、DCT(例えば、DCTバージョン8(DCT-8)又はDCTバージョン2(DCT-2))を使用してもよい。したがって、対応する候補位置について逆DCT変換がデコーダで使用される。これは、この場合、右下角が4つの角の中で空間的に再構築された領域から最も離れているためである。さらに、変換ブロックが残差ブロックの右下角をカバーするとき、DSTは、残差情報分布を変換するためにDCTよりも有効である。しかし、変換ブロックが残差ブロックの左上角をカバーするとき、DCTは、残差情報分布を変換するためにDSTよりも有効である。候補位置の残りについて、変換タイプは逆DST又はDCTのいずれかとすることができる。例えば、候補の位置が左上角よりも右下角に近いとき、逆DSTが変換タイプとして使用される。そうでない場合、逆DCTが変換タイプとして使用される。
具体的な例として、図10に示すように、変換ブロック1007についての3つの候補位置が許容されてもよい。この場合、位置0は左上角をカバーし、位置2は右下角をカバーする。位置1は、残差ブロック1005の中央にあり、左及び右の角の双方に対して等距離にある。変換タイプは、エンコーダにおいて、位置0、位置1及び位置2について、それぞれDCT-8、DST-7及びDST-7として選択できる。次いで、逆変換DCT-8、DST-7及びDST-7は、デコーダにおいて、それぞれ位置0、位置1及び位置2に使用できる。他の例では、位置0、位置1及び位置2についての変換タイプは、エンコーダにおいて、それぞれDCT-2、DCT-2及びDST-7である。次いで、逆変換DCT-2、DCT-2及びDST-7は、デコーダにおいて、それぞれ位置0、位置1及び位置2に使用できる。したがって、対応する候補位置についての変換タイプは、予め決定できる。
いくつか場合、上記の位置依存の複数の変換は、ルマ変換ブロックのみに適用されてもよい。対応するクロマ変換ブロックは、変換/逆変換プロセスにおいて常に逆DCT-2を使用してもよい。
図11は、残差サンプルの水平反転の例1100を示す。いくつかの場合、有利な残差圧縮は、エンコーダにおいて変換ブロック(例えば、変換ブロック607)を適用する前に、残差ブロック(例えば、残差ブロック605)内の残差情報を水平に反転することにより達成できる。例1100は、このような水平反転を示す。これに関連して、水平反転は、残差ブロックの左側と残差ブロックの右側との間の中間の軸付近で残差ブロック内の残差サンプルを回転させることを示す。このような水平反転は、エンコーダにおいて変換(例えば、変換ブロック)を適用する前且つデコーダにおいて逆変換(例えば、変換ブロック)を適用した後に生じる。このような反転は、指定の予め定義された条件が生じたときに使用されてもよい。
一例では、水平反転は、変換プロセスにおいて変換ブロックがDST/逆DSTを使用するときに生じる。この場合、残差ブロックの右側隣接は、現ブロックの前に符号化/再構築され、左側隣接は、現ブロックの前に符号化/再構築されない。水平反転プロセスは、残差ブロックの列iの残差サンプルを残差ブロックの列w-1-iの残差サンプルと交換する。これに関連して、wは変換ブロックの幅であり、i=0,1,...,(w/2)-1である。残差サンプルの水平反転は、残差分布をDST変換により良好に適合させることにより符号化効率を増加させ得る。
図12は、上記のメカニズムを使用する位置依存のSVTによるビデオ復号の例示的な方法1200のフローチャートである。方法1200は、ビットストリーム611のようなビットストリームを受信したとき、デコーダにおいて開始されてもよい。方法1200は、予測ブロック603及び変換残差ブロック609のような予測ブロック及び変換残差ブロックを決定するために、ビットストリームを使用する。方法1200はまた、変換ブロック607のような変換ブロックを決定し、これは、残差ブロック605のような残差ブロックを決定するために使用される。次いで、残差ブロック605及び予測ブロック603は、画像ブロック601のような画像ブロックを再構築するために使用される。方法1200は、デコーダの観点から記載されるが、同様の方法が、SVTを使用することによりビデオを符号化するために(例えば、逆に)使用されてもよい点に留意すべきである。
ブロック1201において、ビットストリームがデコーダにおいて取得される。ビットストリームは、メモリから或いはストリーミングソースから受信されてもよい。ビットストリームは、エンコーダからのビデオデータに対応する少なくとも1つの画像に復号できるデータを含む。具体的には、ビットストリームは、メカニズム600に記載のように、ビットストリームから予測ブロック及び残差ブロックを含む符号化ユニットを決定するために使用できるブロック区分情報を含む。したがって、符号化ユニットに関連する符号化情報は、ビットストリームから解析でき、符号化ユニットの画素は、以下に説明するように符号化情報に基づいて再構築できる。
ブロック1203において、予測ブロック及び対応する変換残差ブロックは、ブロック区分情報に基づいてビットストリームから取得される。この例では、変換残差ブロックは、上記のメカニズム600に関して説明したように、SVTに従って符号化されている。次いで、方法1200は、以下に説明するように、変換残差ブロックからサイズw×hの残差ブロックを再構築する。
ブロック1205において、SVT使用、SVTのタイプ及び変換ブロックサイズが決定される。例えば、デコーダは、まず、SVTが符号化において使用されているか否かを決定する。これは、いくつかの符号化が残差ブロックのサイズである変換を使用するためである。SVTの使用は、ビットストリーム内のシンタックス要素によりシグナリングできる。具体的には、残差ブロックがSVTを使用することを許容されるとき、svt_flagのようなフラグがビットストリームから解析される。変換残差ブロックがゼロでない変換係数(例えば、いずれかのルマ又はクロマ成分に対応する)を有するとき、残差ブロックはSVTを使用することを許容される。例えば、残差ブロックがいずれかの残差データを含むとき、残差ブロックはSVTを使用してもよい。SVTフラグは、残差ブロックが残差ブロックと同じサイズの変換ブロックを使用して符号化されているか(例えば、svt_flagが0に設定される)、残差ブロックが残差ブロックよりも小さいサイズの変換ブロックで符号化されているか(例えば、svt_flagが1に設定される)を示す。符号化ブロックフラグ(coded block flag, cbf)は、残差ブロックが、HEVCにおいて使用されるように、色成分のゼロでない変換係数を含むか否かを示すために使用できる。また、ルート符号化ブロック(root coded block, root cbf)フラグは、HEVCにおいて使用されるように、残差ブロックがいずれかの色成分のゼロでない変換係数を含むか否かを示すことができる。特定の例として、画像ブロックがインター予測を用いて予測され、残差ブロック幅又は残差ブロック高さのいずれかが[a1,a2]の所定の範囲内に入るとき、残差ブロックは、SVTを使用することが許容され、a1=16且つa2=64、a1=8且つa2=64、又はa1=16且つa2=128である。a1及びa2の値は、所定の固定値とすることができる。値はまた、ビットストリーム内のシーケンスパラメータセット(sequence parameter set, SPS)又はスライスヘッダから導出されてもよい。残差ブロックがSVTを使用しないとき、変換ブロックサイズは、残差ブロックサイズの幅及び高さとして設定される。そうでない場合、変換サイズは、SVT変換タイプに基づいて決定される。
一旦SVTが残差ブロックに使用されているとデコーダが決定すると、デコーダは、使用されたSVT変換ブロックのタイプを決定し、SVTタイプに従って変換ブロックサイズを導出する。残差ブロックについて許容されるSVTタイプは、残差ブロックの幅及び高さに基づいて判断される。図8に示すようなSVT-V変換は、残差ブロックの幅が範囲[a1,a2]内にある場合に許容され、このような値は上記で定義されている。図8に示すようなSVT-H変換は、残差ブロックの高さが範囲[a1,a2]内にある場合に許容され、このような値は上記で定義されている。SVTは残差ブロック内のルマ成分のみに使用されてもよく、或いは、SVTは残差ブロック内のルマ及び双方のクロマ成分に使用されてもよい。SVTがルマ成分にのみ使用されるとき、ルマ成分の残差情報は、SVTにより変換され、クロマ成分は、残差ブロックのサイズを変換することにより変換される。SVT-VとSVT-Hとの双方が許容されるとき、svt_type_flagのようなフラグがビットストリームに符号化されてもよい。svt_type_flagは、SVT-Vが残差ブロックに使用されているか(例えば、svt_type_flagが0に設定される)、SVT-Hが残差ブロックに使用されているか(例えば、svt_type_flagが1に設定される)を示す。一旦SVT変換のタイプが決定されると、変換ブロックサイズは、シグナリングされたSVTタイプに従って設定される(例えば、SVT-Vについてw_t=w/2且つh_t=h、SVT-Hについてw_t=w且つh_t=h/2)。SVT-Vのみが許容されるか、或いは、SVT-Hのみが許容されるとき、svt_type_flagはビットストリームに符号化されなくてもよい。このような場合、デコーダは、許容されるSVTタイプに基づいて変換ブロックサイズを推測できる。
一旦SVTタイプ及びサイズが決定されると、デコーダはブロック1207に進む。ブロック1207において、デコーダは、残差ブロックに対する変換の位置と、変換のタイプ(例えば、DST又はDCTのいずれか)とを決定する。変換ブロックの位置は、ビットストリーム内のシンタックス要素に従って決定できる。例えば、位置インデックスは、いくつかの例では、直接シグナリングされ、したがって、ビットストリームから解析できる。他の例では、位置は、図8〜10に関して説明したように推測できる。具体的には、変換についての候補位置は、CPSS関数に従って決定できる。CPSS関数は、残差ブロックの幅、残差ブロックの高さ、ブロック1205により決定されたSVTタイプ、変換のステップサイズ、及び/又は変換がカバーする残差ブロックの部分を考慮することにより、候補位置を決定できる。次いで、デコーダは、上記の図10に関して説明したように、候補位置選択確率に従って正しい候補位置をシグナリングするコードを含むpインデックスを取得することにより、候補位置から変換ブロック位置を決定できる。一旦変換ブロック位置が分かると、デコーダは、上記の図10に関して説明したように、変換ブロックにより使用される変換のタイプを推測できる。したがって、エンコーダは、対応する逆変換を選択できる。
ブロック1209において、デコーダは、ブロック1205において決定された変換ブロックサイズに基づいて変換ブロックの変換係数を解析する。このプロセスは、HEVC、H.264及び/又はAVCにおいて使用される変換係数解析メカニズムに従って達成されてもよい。変換係数は、ランレングス符号化を使用して及び/又は変換係数グループ(coefficient group, CG)のセットとして符号化されてもよい。いくつかの例では、ブロック1209は、ブロック1207の前に実行されてもよい点に留意すべきである。
ブロック1211において、残差ブロックは、上記で決定されたように、変換位置、変換係数及び変換タイプに基づいて再構築される。具体的には、サイズw_t×h_tの逆量子化及び逆変換は、残差ブロックの残差サンプルを回復するために、変換係数に適用される。残差サンプルを有する残差ブロックのサイズはw_t×h_tである。逆変換は、ブロック1207において決定された位置依存の変換タイプに従って、逆DCT又は逆DSTでもよい。残差サンプルは、変換ブロック位置に従って、残差ブロック内の対応する領域に割り当てられる。残差ブロックの内側及び変換ブロックの外側のいずれかの残差サンプルは、ゼロに設定されてもよい。例えば、SVT-Vが使用されるとき、候補位置の数は5であり、位置インデックスは5番目の変換ブロック位置を示す。したがって、再構築された残差サンプルは、図9のSVTの例900の変換候補位置内の領域(例えば、図9における網掛け領域)と、ゼロの残差サンプルを有する領域(例えば、図9における網掛けされていない領域)の左までのサイズ(w/2)×hの領域とに割り当てられる。
任意選択のブロック1213において、再構築されたブロックの残差ブロック情報は、図11に関して説明したように、水平に反転されてもよい。上記のように、これは、デコーダにおける変換ブロックが逆DSTを使用し、右側隣接ブロックが既に再構築され、左側隣接がまだ再構築されていないときに生じる可能性がある。具体的には、エンコーダは、符号化効率を増加させるために、上記の場合にDST変換を適用する前に、残差ブロックを水平に反転してもよい。したがって、任意選択のブロック1213は、正確な再構築されたブロックを生成するために、エンコーダにおけるこのような水平反転を補正するために使用されてもよい。
ブロック1215において、再構築された残差ブロックは、符号化ユニットの一部としてサンプルを含む再構築された画像ブロックを生成するために、予測ブロックと共に構成されてもよい。フィルタリングプロセスはまた、HEVCにおけるデブロッキングフィルタ及びサンプル適応オフセット(sample adaptive offset, SAO)処理のように、再構築されたサンプルに対して適用されてもよい。次いで、再構築された画像ブロックは、メディア/ビデオファイルのフレームを生成するために、同様の方法で復号された他の画像ブロックと組み合わされてもよい。次いで、再構築されたメディアファイルは、モニタ又は他のディスプレイデバイス上でユーザに表示されてもよい。
方法1200の等価な実現方式は、残差ブロック内で再構築されたサンプルを生成するために使用できる点に留意すべきである。具体的には、変換ブロックの残差サンプルは、最初に残差ブロックを回復することなく、変換ブロック位置情報により示される位置において予測ブロックと直接的に構成できる。
図13は、ビデオ符号化の方法1300である。方法1300は、デコーダ(例えば、ビデオデコーダ30)において実施されてもよい。特に、方法1300は、デコーダのプロセッサにより実施されてもよい。方法1300は、ビットストリームがエンコーダ(例えば、ビデオエンコーダ20)から直接的或いは間接的に受信されたとき、或いは、メモリから取得されたときに実施されてもよい。ブロック1301において、ビットストリームは、予測ブロック(例えば、予測ブロック603)及び予測ブロックに対応する変換残差ブロック(例えば、変換残差ブロック609)を取得するために解析される。ブロック1303において、変換残差ブロックを生成するために使用されたSVTのタイプが決定される。上記のように、SVTのタイプはSVT-V又はSVT-Hでもよい。実施形態では、SVT-Vタイプは、変換残差ブロックの高さに等しい高さと、変換残差ブロックの幅の半分である幅とを含む。
実施形態では、SVT-Hタイプは、変換残差ブロックの高さの半分である高さと、変換残差ブロックの幅に等しい幅とを含む。実施形態では、svt_type_flagは、SVTのタイプを決定するためにビットストリームから解析される。実施形態では、1つのタイプのSVTのみが残差ブロックについて許容されるとき、SVTのタイプは推測により決定される。
ブロック1305において、変換残差ブロックに対するSVTの位置が決定される。実施形態では、位置インデックスは、SVTの位置を決定するためにビットストリームから解析される。実施形態では、位置インデックスは、CPSSに従って決定された候補位置のセットからの位置を示すバイナリコードを含む。実施形態では、SVTの最も可能性の高い位置は、位置インデックスを示すバイナリコードにおいて最少ビット数を割り当てられる。実施形態では、単一の候補位置がSVT変換に利用可能であるとき、SVTの位置はプロセッサにより推測される。実施形態では、残差ブロックがインター予測モードにおけるテンプレートマッチングにより生成されたとき、SVTの位置はプロセッサにより推測される。
ブロック1307において、SVTの逆がSVTの位置に基づいて決定される。ブロック1309において、再構築された残差ブロック(例えば、残差ブロック605)を生成するために、SVTの逆が変換残差ブロックに適用される。実施形態では、逆DSTは、残差ブロックの左境界に位置するSVT-Vタイプ変換に使用される。実施形態では、逆DSTは、残差ブロックの上境界に位置するSVT-Hタイプ変換に使用される。実施形態では、逆DCTは、残差ブロックの右境界に位置するSVT-Vタイプ変換に使用される。実施形態では、逆DCTは、残差ブロックの下境界に位置するSVT-Hタイプ変換に使用される。
ブロック1311において、画像ブロックを再構築するために、再構築された残差ブロックが予測ブロックと組み合わされる。実施形態では、画像ブロックは、電子デバイス(例えば、スマートフォン、タブレット、ラップトップコンピュータ、パーソナルコンピュータ等)のディスプレイ又はモニタに表示される。
任意選択で、方法1300はまた、再構築された残差ブロックに関連する符号化ユニットの右側隣接が再構築されており、符号化ユニットの左側隣接が再構築されていないとき、再構築された残差ブロックを予測ブロックと組み合わせる前に、再構築された残差ブロック内のサンプルを水平に反転することを含んでもよい。
図14は、ビデオ符号化の方法1400である。方法1400は、エンコーダ(例えば、ビデオエンコーダ20)において実施されてもよい。特に、方法1400は、エンコーダのプロセッサにより実施されてもよい。方法1400は、ビデオ信号を符号化するために実施されてもよい。ブロック1401において、ビデオ信号がビデオキャプチャデバイス(例えば、カメラ)から受信される。実施形態では、ビデオ信号は、画像ブロック(例えば、画像ブロック601)を含む。
ブロック1403において、予測ブロック(例えば、予測ブロック603)及び残差ブロック(例えば、残差ブロック605)が、画像ブロックを表すために生成される。ブロック1405において、残差ブロックに対するSVTの位置に基づいて、SVTのために変換アルゴリズムが選択される。ブロック1407において、残差ブロックは、選択されたSVTを使用して変換残差ブロックに変換される。
ブロック1409において、SVTのタイプがビットストリームに符号化される。実施形態では、SVTのタイプはSVT-Vタイプ又はSVT-Hタイプである。実施形態では、SVT-Vタイプは、残差ブロックの高さに等しい高さと、残差ブロックの幅の半分である幅とを含む。実施形態では、SVT-Hタイプは、残差ブロックの高さの半分である高さと、残差ブロックの幅に等しい幅とを含む。
ブロック1411において、SVTの位置がビットストリームに符号化される。実施形態では、SVTの位置は、位置インデックスに符号化される。実施形態では、位置インデックスは、CPSSに従って決定された候補位置のセットからの位置を示すバイナリコードを含む。実施形態では、SVTの最も可能性の高い位置は、位置インデックスを示すバイナリコードにおいて最少ビット数として割り当てられる。
実施形態では、DSTアルゴリズムは、プロセッサにより、残差ブロックの左境界に位置するSVT-Vタイプ変換に使用される。実施形態では、DSTアルゴリズムは、プロセッサにより、残差ブロックの上境界に位置するSVT-Hタイプ変換に選択される。実施形態では、DCTアルゴリズムは、プロセッサにより、残差ブロックの右境界に位置するSVT-Vタイプ変換に選択される。実施形態では、DCTアルゴリズムは、プロセッサにより、残差ブロックの下境界に位置するSVT-Hタイプ変換に選択される。
任意選択で、プロセッサは、残差ブロックに関連する符号化ユニットの右側隣接が符号化されており、符号化ユニットの左側隣接が符号化されていないとき、残差ブロックを変換残差ブロックに変換する前に、残差ブロック内のサンプルを水平に反転してもよい。
ブロック1413において、予測ブロック及び変換残差ブロックがビットストリームに符号化される。実施形態では、ビットストリームは、デコーダに送信されるように構成され、及び/又はデコーダに送信される。
図15は、当該開示の実施形態によるビデオ符号化のための例示的な計算デバイス1500の概略図である。計算デバイス1500は、ここに記載される開示の実施形態を実施するのに適している。計算デバイス1500は、データを受信するための入口ポート1520及び受信機ユニット(Rx)1510と、データを処理するためのプロセッサ、論理ユニット又は中央処理装置(central processing unit, CPU)1530と、データを送信するための送信機ユニット(Tx)1540及び出口ポート1550と、データを記憶するためのメモリ1560とを含む。計算デバイス1500はまた、光又は電気信号の出口又は入口のために、入口ポート1520、受信機ユニット1510、送信機ユニット1540及び出口ポート1550に結合された光対電気(optical-to-electrical, OE)コンポーネント及び電気対光(electrical-to-optical, EO)コンポーネントを含んでもよい。計算デバイス1500はまた、いくつかの例では、無線送信機及び/又は受信機を含んでもよい。
プロセッサ1530は、ハードウェア及びソフトウェアにより実現される。プロセッサ1530は、1つ以上のCPUチップ、コア(例えば、マルチコアプロセッサとして)、フィールドプログラマブルゲートアレイ(field-programmable gate array, FPGA)、特定用途向け集積回路(application specific integrated circuit, ASIC)及びデジタルシグナルプロセッサ(digital signal processor, DSP)として実現されてもよい。プロセッサ1530は、入口ポート1520、受信機ユニット1510、送信機ユニット1540、出口ポート1550及びメモリ1560と通信する。プロセッサ1530は、符号化/復号モジュール1514を含む。符号化/復号モジュール1514は、方法1300及び方法1400のような上記の開示の実施形態と、SVTを使用するときの変換ブロック位置に基づいて残差ブロックを符号化/再構築するための他のメカニズムと、上記のいずれかの他のメカニズムとを実現する。例えば、符号化/復号モジュール1514は、上記のようなビデオデータの符号化及び/又はビデオデータの復号のような様々な符号化動作を実現、処理、準備又は提供する。したがって、符号化/復号モジュール1514の包含は、計算デバイス1500の機能に実質的な改善を提供し、計算デバイス1500の異なる状態への変換をもたらす。代替として、符号化/復号モジュール1514は、メモリ1560に記憶されてプロセッサ1530により実行される命令として(例えば、非一時的な媒体に記憶されるコンピュータプログラムプロダクトとして)実現される。
メモリ1560は、1つ以上のディスク、テープドライブ及びソリッドステートドライブを含み、プログラムが実行のために選択されたときにこのようなプログラムを記憶し、プログラムの実行中に読み取られる命令及びデータを記憶するために、オーバーフローデータ記憶デバイスとして使用されてもよい。メモリ1560は、揮発性及び/又は不揮発性でもよく、読み取り専用メモリ(read-only memory, ROM)、ランダムアクセスメモリ(random access memory, RAM)、三値連想メモリ(ternary content-addressable memory, TCAM)及び/又はスタティックランダムアクセスメモリ(static random-access memory, SRAM)でもよい。計算デバイス1500はまた、エンドユーザと相互作用するための入力/出力(input/output, IO)デバイスを含んでもよい。例えば、計算デバイス1500は、視覚出力のためのモニタのようなディスプレイと、オーディオ出力のためのスピーカと、ユーザ入力のためのキーボード/マウス/トラックボール等とを含んでもよい。
要約すると、上記の開示は、異なる位置における変換ブロックについて複数の変換タイプを適応的に使用するメカニズムを含む。さらに、当該開示は、符号化効率をサポートするために、残差ブロック内の残差サンプルを水平に反転させることを可能にする。これは、変換ブロックがそれぞれエンコーダ及びデコーダにおいてDST及び逆DSTを使用するとき、且つ、右隣接ブロックが利用可能であり左隣接が利用可能でないときに生じる。さらに、当該開示は、残差ブロックに関連するインター予測モードに基づいてビットストリーム内の符号化位置情報をサポートするためのメカニズムを含む。
図16は、符号化する手段1600の実施形態の概略図である。実施形態では、符号化する手段1600は、ビデオ符号化デバイス1602(例えば、ビデオエンコーダ20又はビデオデコーダ30)に実現される。ビデオ符号化デバイス1602は、受信手段1601を含む。受信手段1601は、符号化するピクチャを受信するように或いは復号するビットストリームを受信するように構成される。ビデオ符号化デバイス1602は、受信手段1601に結合された送信手段1607を含む。送信手段1607は、ビットストリームをデコーダに送信するように或いは復号された画像を表示手段(例えば、計算デバイス1500内のI/Oデバイスのうち1つ)に送信するように構成される。
ビデオ符号化デバイス1602は、記憶手段1603を含む。記憶手段1603は、受信手段1601又は送信手段1607のうち少なくとも1つに結合される。記憶手段1603は、命令を記憶するように構成される。ビデオ符号化デバイス1602はまた、処理手段1605を含む。処理手段1605は、記憶手段1603に結合される。処理手段1605は、記憶手段1603に記憶された命令を実行し、ここに開示の方法を実行するように構成される。
第1のコンポーネントは、第1のコンポーネントと第2のコンポーネントとの間にライン、トレース又は他の媒体を除いて介在するコンポーネントが存在しないとき、第2のコンポーネントに直接的に結合される。第1のコンポーネントは、第1のコンポーネントと第2のコンポーネントとの間にライン、トレース又は他の媒体以外の介在するコンポーネントが存在するとき、第2のコンポーネントに間接的に結合される。「結合される」という用語及びその変形は、直接的に結合されること及び間接的に結合されることの双方を含む。「約」という用語の使用は、特に断りのない限り、後続の数の±10%を含む範囲を意味する。
いくつかの実施形態が本開示において提供されているが、開示のシステム及び方法は、本開示の真意又は範囲から逸脱することなく、多くの他の具体的な形式で具現されてもよいことが理解され得る。本例は、例示的なものであり、限定的なものではないと考えられるべきであり、その意図は、ここに与えられた詳細に限定されるものではない。例えば、様々な要素又はコンポーネントは、他のシステムに組み合わされてもよく或いは一体化されてもよく、或いは、特定の特徴が省略されてもよく或いは実施されなくてもよい。
さらに、様々な実施形態において個別に或いは別々に記載及び図示された技術、システム、サブシステム及び方法は、本開示の範囲から逸脱することなく、他のシステム、コンポーネント、技術又は方法と組み合わされてもよく或いは一体化されてもよい。結合されたものとして図示又は説明された他のアイテムは、直接的に接続されてもよく、或いは、電気的であれ、機械的であれ別法であれ、いくつかのインタフェース、デバイス又は中間コンポーネントを通じて間接的に結合されてもよく或いは通信してもよい。変更、置換及び代替の他の例は、当業者により確認可能であり、ここに開示の真意及び範囲から逸脱することなく行われてもよい。