[0026]本開示は、変換スキップを用いて予測残差ブロックの残差データをコーディングするための技法について説明する。残差ブロックの残差データは、コーディングされるべき映像ブロックのピクセルとコーディングされるべきブロックに関して生成された予測ブロックの対応するピクセルとの間のピクセル差分値を備える。残差ブロックが変換スキップモードにおいて可逆コーディングモード又は非可逆コーディングモードを用いてコーディングされるときには残差ブロックに関して変換をスキップすることができる。残差ブロックに変換が適用されないときには、平均よりも高いエネルギー、すなわち、平均よりも大きいピクセル差分値、を有する残差データは、残差ブロックの左上隅に配置することができず、それは、エントロピーコーディングに関しては予想される。
[0027]残差ブロックに関して変換がスキップされるときには、平均よりも高いエネルギーを有する残差データを残差ブロックの左上隅に配置するために符号化中に残差ブロックを回転させることによってエントロピーコーディング効率を向上させることができる。復号中には、残差ブロック及び予測ブロックからオリジナルの映像ブロックを再構築するために符号化中に行われた回転を逆にする必要がある。
[0028]イントラ予測モードにおいて、残差ブロックに関して変換がスキップされるときには、平均よりも高いエネルギーを有する残差データは、典型的には、残差ブロックの右下隅に配置される。幾つかの事例においては、イントラ予測残差ブロックは、平均よりも高いエネルギーを有する残差データを残差ブロックの左上隅に配置するために残差ブロックをコーディングする前に180度だけ自動的に回転させることができる。しかしながら、インター予測モードでは、残差ブロックを自動的に180度だけ回転させるのは常に望ましいわけではない。
[0029]本開示の技法により、残差ブロックに関して変換がスキップされることに基づいて、映像符号器又は映像復号器内に含まれている位置再設定ユニットは、残差ブロックの残差データをコーディングする前に残差ブロックを回転させるべきかどうかを決定する。幾つかの例においては、回転値は、映像符号器と映像復号器との間で明示でシグナリングすることができる。その他の例においては、映像符号器及び映像復号器は、残差ブロックの2つ以上の縁部における境界のタイプに基づいて残差ブロックを回転させるべきかどうかを各々独立して決定することができる。
[0030]インター予測モードでは、残差ブロックの変換ユニット(TU)境界、すなわち、同じ予測ユニット(PU)に属する2つのTU間の境界、における残差データは、典型的には、残差ブロック内の平均的な残差データよりも低いエネルギーを有する。さらに、残差ブロックのPU境界、すなわち、異なるPUに属する2つのTU間の境界、における残差データは、典型的には、残差ブロック内の平均的な残差データよりも高いエネルギーを有する。この観測に基づき、本開示の技法は、残差ブロックの2つ以上の縁部における境界のタイプに基づいて変換スキップを用いてインター予測残差ブロックを回転させることを含む。例えば、位置再設定ユニットは、残差ブロックの2つ以上の縁部における境界のタイプを決定し、次に、残差データの位置を再設定するために縁部における境界のタイプに基づいて残差ブロックを回転させるべきかどうかを決定することができる。
[0031]幾つかの例においては、位置再設定ユニットは、残差ブロックを予め決定された回転値、例えば、180度、だけ回転させるか、又は、残差ブロックを回転させないかを決定する。その他の例においては、位置再設定ユニットは、残差ブロックを回転させるべき回転値を、2つ以上の回転値、例えば、0度、すなわち回転させない、180度、90度又は270度、から決定する。
[0032]符号化側では、回転は、エントロピーコーディング効率を向上させるために、平均よりも高いエネルギーを有する残差データを、残差ブロックの残差データを符号化する前に回転された残差ブロックの左上隅に配置する。復号側では、回転は、予測ブロックを用いて残差ブロックから映像ブロックを再構築するために、符号化中に行われた回転を逆転させ、平均よりも高いエネルギーを有する残差データをオリジナルの映像ブロック内の原位置に戻す。
[0033]本開示は、変換がスキップ又は迂回される可逆コーディングモード又は非可逆コーディングモードのいずれかにおいて予測残差ブロックの残差データをコーディングするための技法についても説明する。本開示の技法は、残差ブロックの残差データをコーディングする前に残差ブロックの残差データの位置を再設定する、例えば、回転させる又はフリップさせるべきかどうかを決定することを含む。幾つかの例においては、残差ブロックの残差データは、上述されるように回転させることができる。その他の例においては、残差ブロックの残差データは、残差ブロックの主対角線又は副対角線のうちの1つに沿ってフリップさせることができ、残差データをフリップさせるために残差ブロックの対角線の第1の側における残差データを残差ブロックの対角線の第2の側における対応するミラー画像(鏡像)の位置における残差データとスワップすることを含む。
[0034]1つの映像コーディング規格例、高効率映像コーディング(HEVC)のレンジ拡張により、非可逆コーディングモードでは、あらゆるサイズの残差ブロックに変換スキップモードを適用することができ、可逆コーディングモードでは、すべての残差ブロックに関して変換手順及び量子化手順が迂回される。従って、非可逆コーディングモード及び可逆コーディングモードの両方において、すべてのブロックサイズに関して変換をスキップ又は迂回することができ、従って、イントラ予測モード及びインター予測モードの両方においてすべてのブロックサイズに対して回転を適用することができる。幾つかの例においては、非可逆コーディングモードでは、変換スキップモードは、最大ブロックサイズまでのサイズ、例えば、4×4又は8×8、を有する残差ブロックのみに適用されるように制限することができる。非可逆コーディングモードにおいて変換をスキップすることが許容される最大ブロックサイズは、残差ブロックに関連するシーケンスパラメータセット(SPS)及びピクチャパラメータセット(PPS)のうちの1つにおいて示すことができる。
[0035]本開示の技法により、非可逆コーディングモード及び可逆コーディングモードのいずれにおいても残差ブロックに変換が適用されないときには、残差ブロックの残差データの位置の再設定は、ある一定の予測モード及びある一定のブロックサイズに制限することができる。例えば、映像符号器又は映像復号器は、残差ブロックの予測モード、例えば、イントラ予測モード、インター予測モード、又はイントラブロックコピーイング予測モード、及び、残差ブロックのサイズ、に基づいて残差ブロックの残差データの位置を再設定すべきかどうかを決定することができる。幾つかの例においては、それらの技法は、インター予測モード及びイントラブロックコピーイング予測モードにおいてすべての残差ブロックに関する残差データの位置の再設定をディスエーブルにする。その他の例においては、それらの技法は、残差ブロックがスレショルドのりサイズ以下のブロックサイズを有するときにイントラ予測モードで残差ブロックの位置を再設定することを決定する。幾つかの事例においては、スレショルドのサイズは、4×4又は8×8に等しいことができる。その他の事例においては、スレショルドサイズは、非可逆コーディングモードにおいて変換スキップが許容される最大ブロックサイズ以下であることができる。このようにして、イントラ予測モード残差ブロックに回転を適用することができるブロックサイズは、変換スキップモードを使用する可逆コーディングモード及び非可逆コーディングモードの両方において同じである。
[0036]図1は、変換スキップを用いて残差データをコーディングするために本開示において説明される技法を利用することができる映像符号化及び復号システム例10を示したブロック図である。図1において示されるように、システム10は、例えば、行先デバイス14によってのちに復号するために符号化された映像データを生成するソースデバイス12を含む。ソースデバイス12及び行先デバイス14は、広範なデバイスのうちのいずれかを備えることができ、デスクトップコンピュータ、ノートブック(すなわち、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、電話ハンドセット、例えば、いわゆる“スマート”フォン、いわゆる“スマート”パッド、テレビ、カメラ、表示装置、デジタルメディアプレーヤー、ビデオゲームコンソール、映像ストリーミングデバイス、等を含む。幾つかの事例においては、ソースデバイス12及び行先デバイス14は、無線通信のために装備することができる。
[0037]行先デバイス14は、リンク16を介して復号されるべき符号化された映像データを受信することができる。リンク16は、符号化された映像データをソースデバイス12から行先デバイス14に移動させることが可能なあらゆるタイプの媒体又はデバイスを備えることができる。一例においては、リンク16は、ソースデバイス12が符号化された映像データをリアルタイムで直接行先デバイス14に送信するのを可能にする通信媒体を備えることができる。符号化された映像データは、通信規格、例えば、無線通信プロトコル、により変調し、行先デバイス14に送信することができる。通信媒体は、無線又は有線の通信媒体、例えば、無線周波数(RF)スペクトル又は1つ以上の物理的送信ライン、を備えることができる。通信媒体は、パケットに基づくネットワーク、例えば、ローカルエリアネットワーク、ワイドエリアネットワーク、又はグローバルネットワーク、例えば、インターネット、の一部を形成することができる。通信媒体は、ルータ、スイッチ、基地局、又はソースデバイス12から行先デバイス14への通信を容易にするのに役立つことができるその他のあらゆる装置を含むことができる。
[0038]代替として、符号化されたデータは、出力インタフェース22から記憶デバイス34に出力することができる。同様に、符号化されたデータは、入力インタフェースによって記憶デバイス34からアクセスすることができる。記憶デバイス34は、様々な分散された又はローカルでアクセスされるデータ記憶媒体、例えば、ハードドライブ、Blue−rayディスク、DVD、CD−ROM、フラッシュメモリ、揮発性メモリ、非揮発性メモリ、又は符号化された映像データを格納するためのその他の適切なデジタル記憶媒体、を含むことができる。さらなる例では、記憶デバイス34は、ソースデバイス12によって生成された符号化された映像を保持することができるファイルサーバ又は他の中間的な記憶デバイスに対応することができる。行先デバイス14は、ストリーミング又はダウンロードを介して記憶デバイス34から格納される映像データにアクセスすることができる。ファイルサーバは、符号化された映像データを格納すること及びその符号化された映像データを行先デバイス14に送信することが可能なあらゆるタイプのサーバであることができる。ファイルサーバ例は、(例えば、ウェブサイトのための)ウェブサーバ、FTPサーバ、ネットワーク接続記憶(NAS)デバイス、及びローカルディスクドライブを含む。行先デバイス14は、インターネット接続を含む標準的なデータ接続を通じて符号化された映像データにアクセスすることができる。これは、ファイルサーバに格納された符号化された映像データにアクセスするのに適する無線チャネル(例えば、Wi−Fi接続)、有線接続(例えば、DSL、ケーブルモデム、等)、又は両方の組み合わせを含むことができる。記憶デバイス34からの符号化された映像データの送信は、ストリーミング送信、ダウンロード送信、又は両方の組み合わせであることができる。
[0039]本開示の技法は、無線の用途又はセッティングには必ずしも限定されない。それらの技法は、映像コーディングに適用することができ、様々なマルチメディア用途、例えば、オーバー・ザ・エアテレビ放送、ケーブルテレビ送信、衛星テレビ送信、例えば、インターネットを介してのストリーミング映像送信、データ記憶媒体上に格納するためのデジタル映像の符号化、データ記憶媒体に格納されたデジタル映像の復号、又はその他の用途をサポートする。幾つかの例では、システム10は、映像ストリーミング、映像再生、映像放送、及び/又は映像テレフォニー、等の用途をサポートするために1方向又は2方向の映像送信をサポートするように構成することができる。
[0040]図1の例では、ソースデバイス12は、映像ソース18と、映像符号器20と、出力インタフェース22と、を含む。幾つかの事例においては、出力インタフェース22は、変調器/復調器(モデム)及び/又は送信機を含むことができる。ソースデバイス12において、映像ソース18は、ソース、例えば、映像キャプチャデバイス、例えば、ビデオカメラ、以前にキャプチャされた映像が入った映像アーカイブ、映像コンテンツプロバイダからの映像を受信するための映像フィードインタフェース、及び/又は、コンピュータグラフィックスデータをソース映像として生成するためのコンピュータグラフィックスシステム、又は、該ソースの組み合わせを含むことができる。一例として、映像ソース18がビデオカメラである場合は、ソースデバイス12及び行先デバイス14は、いわゆるカメラフォン又はビデオフォンを形成することができる。しかしながら、本開示において説明される技法は、映像コーディング全般に対して適用可能であり、及び、無線及び/又は有線の用途に適用することができる。
[0041]キャプチャされた、予めキャプチャされた、又はコンピュータによって生成される映像は、映像符号器12によって符号化することができる。符号化された映像データは、ソースデバイス20の出力インタフェース22を介して行先デバイス14に直接送信することができる。符号化された映像データは、復号及び/又は再生を目的として行先デバイス14又はその他のデバイスがのちにアクセスするために記憶デバイス34に格納することもできる(又は代替として格納することができる)。
[0042]行先デバイス14は、入力インタフェース28と、映像復号器30と、表示装置32と、を含む。幾つかの事例においては、入力インタフェース28は、受信機及び/又はモデムを含むことができる。行先デバイス14の入力インタフェース28は、リンク16を通じて符号化された映像データを受信する。リンク16を通じて通信される、又は記憶デバイス34で提供される符号化された映像データは、映像データを復号する際に映像復号器、例えば、映像復号器30、によって使用するための映像符号器20によって生成された様々な構成要素を含むことができる。該構成要素は、通信媒体で送信された符号化された映像データとともに含めること、記憶媒体に格納すること、又はファイルサーバに格納することができる。
[0043]表示装置32は、行先デバイス14と一体化すること又は行先デバイス14の外部に存在することができる。幾つかの例においては、行先デバイス14は、一体化された表示装置を含むことができ及び外部の表示デバイスとインタフェースするように構成することもできる。その他の例においては、行先デバイス14は、表示装置であることができる。概して、表示装置32は、復号された映像データをユーザに表示し、様々な表示装置、例えば、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、又は他のタイプの表示装置、を備えることができる。
[0044]デジタル映像デバイスは、デジタル映像情報をより効率的に符号化及び復号するための映像圧縮技法を実装する。映像圧縮は、映像シーケンスに固有の冗長性を低減させるか又は除去するために空間的(フレーム内)予測技法及び/又は時間的(フレーム間)予測技法を適用することができる。映像符号器20及び映像復号器30は、映像圧縮規格、例えば、現在策定中の高効率映像コーディング(HEVC)規格、に従って動作することができ、及びHEVCテストモデル(HM)に準拠することができる。代替として、映像符号器20及び映像復号器30は、その他の独占規格又は工業規格により動作することができる。しかしながら、本開示の技法は、特定のコーディング規格には限定されない。
[0045]映像コーディング規格は、ITU−T H.261、ISO/IEC MPEG−1 Visual、ITU−T H.262又はISO/IEC MPEG−2 Visual、ITU−T H.263、ISO/IEC MPEG−4 Visual、ITU−T H.264(ISO/IEC MPEG−4 AVCとも呼ばれる)を含み、それのスケーラブル映像コーディング(SVC)及びマルチビュー映像コーディング(MVC)拡張を含む。さらに、新しいコーディング規格、すなわち、HEVCが、ITU−Tビデオコーディングエキスパーツグループ(VCEG)及びISO/IECモーションピクチャエキスパーツグループ(MPEG)の映像コーディングに関する共同作業チーム(JCT−VC)によって策定中である。
[0046]2012年4月27日〜2012年5月7日にスイス ジュネーブで開催された第9回会議におけるITU−T SG16 WP3及びISO/IEC JTC1/SC29/WG11の映像コーディングに関する共同作業チーム(JCT−VC)のBross、等による文書HCTVC−I1003、“高効率映像コーディング(HEVC)テキスト仕様ドラフト7”において出現中のHEVC規格の“ワーキングドラフト7”又は“WD7”が記述されており、それは、
http://phenix.it-sudparis.eu/jct/doc_end_user/documents/9_Geneva/wg11/JCTVC-I1003-v6.zipからダウンロード可能である。さらに、2012年7月11日〜20日にスウェーデン ストックホルムで開催された第10回会議におけるITU−T SG16 WP3及びISO/IEC JTC1/SC29/WG11の映像コーディングに関する共同作業チーム(JCT−VC)のBross、等による文書JCTVC−I1003_d7、“高効率映像コーディング(HEVC)テキスト仕様ドラフト8”において“ワーキングドラフト8”又は“WD8”が記述されており、それは、http://phenix.int-evry.fr/jct/doc_end_user/documents/10_Stockholm/wg11/JCTVC-I1003-v8.zipからダウンロード可能である。
[0047]2013年1月14日〜23日にスイス ジュネーブで開催された第12回会議におけるITU−T SG16 WP3及びISO/IEC JTC1/SC29/WG11の映像コーディングに関する共同作業チーム(JCT−VC)のBross、等による文書JCTVC−L1003v34、“高効率映像コーディング(HEVC)テキスト仕様ドラフト10”におけるHEVC規格のドラフトをhttp://phenix.int-evry.fr/jct/doc_end_user/documents/12_Geneva/wg11/JCTVC-L1003-v34.zipからダウンロード可能である。2013年7月25日〜8月2日にオーストリア ウィーンで開催された第14回会議におけるITU−T SG16 WP3及びISO/IEC JTC1/SC29/WG11の映像コーディングに関する共同作業チーム(JCT−VC)のFlynn、等による文書JCTVC−N1005、“高効率映像コーディング(HEVC)範囲拡大テキスト仕様:ドラフト4”においてHEVC規格の範囲拡大が記述されており、それは、http://phenix.int-evry.fr/jct/doc_end_user/documents/14_Vienna/wg11/JCTVC-N1005-v3.zipからダウンロード可能である。
[0048]図1には示されていないが、幾つかの態様においては、映像符号器20及び映像復号器30は、各々、音声符号器及び復号器と一体化することができ、及び、共通のデータストリーム又は別々のデータストリーム内の音声及び映像の両方の符号化を取り扱うための該当するMUX−DEMUXユニット、又はその他のハードウェア及びソフトウェアを含むことができる。該当する場合は、幾つかの例においては、MUX−DEMUXユニットは、ITU H.223マルチプレクサプロトコル、又はその他のプロトコル、例えば、ユーザデータグラムプロトコル(UDP)、に準拠することができる。
[0049]映像符号器20及び映像復号器30は、各々、様々な適切な符号器回路、例えば、1つ以上のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリートロジック、ソフトウェア、ハードウェア、ファームウェア又はそれらのあらゆる組み合わせのうちのいずれかとして実装することができる。技法がソフトウェア内において部分的に実装されるときには、デバイスは、ソフトウェアに関する命令を適切な、非一時的なコンピュータによって読み取り可能な媒体に格納することができ及び本開示の技法を実行するために1つ以上のプロセッサを用いてハードウェア内で命令を実行することができる。映像符号器20及び映像復号器30の各々は、1つ以上の符号器又は復号器に含めることができ、それらのいずれも、各々のデバイスにおいて結合された符号器/復号器(CODEC)の一部として一体化することができる。
[0050]JCT−VCでは現在HEVC規格の策定作業中である。HEVCV標準化努力は、HEVCテストモデル(HM)と呼ばれる映像コーディングデバイスの進化中のモデルに基づく。HMは、例えば、ITU−T H.264/AVC、による既存のデバイスに対する映像コーディングデバイスの幾つかの追加能力を想定している。例えば、H.264は9つのイントラ予測符号化モードを提供する一方で、HMは、34ものイントラ予測符号化モードを提供することができる。
[0051]概して、HMのワーキングモデルでは、映像フレーム又はピクチャは、1つ以上のスライスに分割することができ、それらは、ツリーブロック又は最大コーディングユニット(LCU)のシーケンスにさらに分割することができ、それらは、コーディングユニット(CU)にさらに分割することができると記述している。CUは、概して、様々なコーディングツールが映像圧縮のために適用される基本ユニットとして働く画像領域を意味する。CUは、通常は、Yで表されるルミナンスコンポーネント、U及びVで表される2つのクロマコンポーネントを有する。映像サンプリングフォーマットに依存して、サンプル数の点でのUコンポーネント及びVコンポーネントのサイズは、Yコンポーネントのサイズと同じであること又は異なることができる。CUは、典型的には正方形であり、例えば、ITU−T H.264、等のその他の映像コーディング規格下におけるいわゆるマクロブロックに類似するとみなすことができる。本出願では、現在策定中のHEVCV規格の現在提案されている態様の一部によるコーディングが例示目的で説明される。しかしながら、本開示において説明される技法は、その他の映像コーディングプロセス、例えば、H.264又はその他の規格により定義されるそれら又は独占権を有するコーディングプロセスにとって有用であることができる。
[0052]HMにより、CUは、コーディングノードと、そのコーディングノードに関連する1つ以上の予測ユニット(PU)及び/又は1つ以上の変換ユニット(TU)と、を含む。ビットストリーム内の構文データは、ツリーブロック又はピクセル数の点で最大のCUであるLCUを定義することができる。概して、CUは、H.264のマクロブロックと同様の目的を有するが、CUは、サイズの区別を有さない。従って、CUは、サブCUに分割することができる。概して、本開示におけるCUへの言及は、ピクチャの最大コーディングユニット又はLCUのサブCUを意味することができる。LCUは、サブCUに分割することができ、各サブCUは、サブCUにさらに分割することができる。ビットストリームに関する構文データは、LCUを分割することができる最大回数を定義することができ、CU深度と呼ばれる。従って、ビットストリームは、最小コーディングユニット(SCU)も定義することができる。本開示は、CU、PU、又はTUのうちのいずれかを意味するために用語“ブロック”又は“一部分”を使用する。概して、“一部分”は、映像フレームのいずれかのサブセットを意味することができる。
[0053]LCUは、四分木データ構造と関連させることができる。概して、四分木データ構造は、1つのCU当たり1つのノードを含み、根ノードは、LCUに対応する。CUが4つのサブCUに分割される場合は、CUに対応するノードは、4つの葉ノード又は子ノードを含み、それらの各々は、サブCUのうちの1つに対応する。四分木データ構造の各ノードは、対応するCUに関する構文データを提供することができる。例えば、四分木内のノードは、そのノードに対応するCUがサブCUに分割されるかどうかを示すスプリットフラグを含むことができる。CUに関する構文要素は、繰り返し定義することができ、及び、CUがサブCUに分割されるかどうかに依存することができる。CUがそれ以上分割されない場合は、葉CUと呼ぶことができる。
[0054]さらに、葉CUのTUは、各々の四分木データ構造、例えば、残差四分木(RQT)、と関連させることができる。すなわち、葉CUは、葉CUがどのようにしてTUに分割されるかを示す四分木を含むことができる。本開示は、LCUがCU四分木としてどのように分割されるかを示す四分木及び葉CUがTU四分木としてどのようにしてTUに分割されるかを示す四分木に言及する。TU四分木の根ノードは、概して、葉CUに対応し、CU四分木の根ノードは、概して、LCUに対応する。分割されないTU四分木のTUは、葉TUと呼ばれる。TUの形状は、正方形であっても非正方形であってもよい。
[0055]葉CUは、1つ以上のPUを含むことができる。概して、PUは、対応するCUの全体又は一部分を表し、PUに関する基準サンプルを取り出すためのデータを含むことができる。例えば、PUがイントラモード符号化されるときには、PUは、PUに関するイントラ予測モードを記述するデータを含むことができる。他の例として、PUがインターモード符号化されるときには、PUは、PUに関する動きベクトルを定義するデータを含むことができる。動きベクトルを定義するデータは、例えば、動きベクトルの水平成分、動きベクトルの垂直成分、動きベクトルに関する解像度(例えば、1/4ピクセル精度又は1/8ピクセル精度)、動きベクトルが指し示す基準フレーム、及び/又は動きベクトルに関する基準リスト(例えば、リスト0又はリスト1)を記述することができる。PUを定義する葉CUに関するデータは、例えば、CUを1つ以上のPUに分割することも記述することができる。分割モードは、CUが復号されるか、イントラ予測モードコーディングされるか、又はインター予測モードコーディングされるかどうかに依存して異なることができる。イントラコーディングの場合は、PUは、葉TUと同じに取り扱うことができる。PUは、正方形又は非正方形として分割することができる。
[0056]概して、TUは、変換プロセス及び量子化プロセスのために使用される。予測後は、予測ブロックを用いてコーディングノードによって識別された映像ブロックに関して残差データ値が計算される。次に、コーディングノードは、オリジナルの映像ブロックではなく残差値を参照するように更新される。残差値は、エントロピーコーディングのためのシリアライズされた(selialized)変換係数を生成するために変換係数に変換し、量子化し、及び走査することができるピクセル差分値を備える。コーディングノードは、これらのシリアライズされた変換係数を参照するために再度更新することができる。
[0057]映像シーケンスは、典型的には、一連の映像フレーム又はピクチャを含む。ピクチャのグループ(GOP)は、概して、映像ピクチャのうちの一連の1つ以上を含む。ピクチャのグループ(GOP)は、概して、映像ピクチャのうちの一連の1つ以上を備える。GOPは、GOP内に含まれるピクチャ数を記述する構文データをGOPのヘッダ、1つ以上のピクチャのヘッダ、又はその他の場所において含むことができる。ピクチャの各スライスは、各々のスライスに関する符号化モードを記述するスライス構文データを含むことができる。各スライスは、映像データを符号化するために使用される映像ブロックにさらに分割される。映像ブロックは、CU内のコーディングノードに対応することができる。映像ブロックは、固定された又は可変のサイズを有することができ、及び、指定されたコーディング規格によりサイズが異なることができる。
[0058]一例として、HMは、様々なPUサイズの予測をサポートする。特定のCUのサイズが2N×2Nであると仮定すると、HMは、2N×2N又はN×NのPUサイズでのイントラ予測、及び2N×2N、2N×N、N×2N、又はN×Nの対称的PUサイズでのインター予測をサポートする。HMは、2N×nU、2N×nD、nL×2N、及びnR×2NのPUサイズでのインター予測に関する非対称的な分割もサポートする。非対称的な分割では、CUの1方の方向が分割されず、他方の方向が25%及び75%に分割される。25%の分割に対応するCUの部分は、“n”によって示され、“上(Up)”、“下(Down)”、“左(Left)”、又は“右(Right)”の表示文字によって後続される。従って、例えば、“2N×nU”は、水平に分割され、最上部が2N×0.5N PU、最下部が2N×1.5N PUである2N×2N CUを意味する。
[0059]本開示においては、“N×N”及び“N by N”は、垂直及び水平の寸法に関する映像ブロックのピクセル寸法を意味するために互換可能な形で使用することができ、例えば、16×16ピクセル又は16 by 16ピクセル。概して、16×16ブロックは、垂直方向に16ピクセル(y=16)及び水平方向に16ピクセル(x=16)を有することになる。同様に、N×Nブロックは、概して、垂直方向にNのピクセル及び水平方向にNのピクセルを有し、ここで、Nは、負でない整数値を表す。ブロック内のピクセルは、行及び列で配列することができる。さらに、ブロックは、水平方向と垂直方向で必ずしも同じピクセル数を有する必要がない。例えば、ブロックは、N×Mサンプルを備えることができ、ここで、Mは必ずしもNと等しくない。
[0060]ブロック(例えば、映像データのPU)をコーディングするために、そのブロックに関する予測子が最初に導き出される。予測子は、予測ブロックとも呼ばれ、イントラ(I)予測(すなわち、空間的予測)又はインター(P又はB)予測(すなわち、時間的予測)を通じて導き出すことができる。従って、幾つかの予測ユニットは、同じフレーム(又はスライス)内の近隣の基準ブロック内の基準サンプルに関して空間的予測を用いてイントラコーディング(I)することができ、その他の予測ユニットは、その他の前にコーディングされたフレーム(又はスライス)内の基準サンプルのブロックに関して単一方向にインターコーディング(P)すること又は両方向にインターコーディング(B)することができる。各々の場合において、基準サンプルは、コーディングされるべきブロックに関する予測ブロックを形成するために使用することができる。
[0061]予測ブロックが識別された時点で、オリジナルの映像データブロックとその予測ブロックとの間の差分が決定される。この差分は、予測残差データと呼ぶことができ、コーディングされるべきブロック内のピクセル値とコーディングされたブロックを表すために選択された予測ブロック内のピクセルサンプル値との間のピクセル差分を示す。より良い圧縮を達成するために、予測残差データは、例えば、離散コサイン変換(DCT)、整数変換、Karhunen−Loeve(K−L)変換、又は他の変換を用いて変換することができる。
[0062]変換ブロック、例えば、TU、内の残差データは、空間的ピクセル領域内に常在するピクセル差分値の二次元(2D)配列で配置することができる。変換は、残差ピクセル値を、変換領域、例えば、周波数領域、において変換係数の二次元配列に変換する。さらなる圧縮のために、変換係数は、エントロピーコーディング前に量子化することができる。量子化は、概して、変換係数を表すために使用されるデータ量を低減させるためにそれらの係数が量子化されるプロセスを意味する。量子化プロセスは、変換係数のうちの一部又は全部に関連するビット深度を小さくすることができる。例えば、量子化中にnビット値が切り捨てられてmビット値になり、ここで、nはmよりも大きい。
[0063]量子化された変換係数のブロックをエントロピーコーディングすることを目的として、通常は、ブロック内の量子化された変換係数の二次元(2D)配列が、特定の走査順序に従って、変換係数の順序が設定された一次元(1D)配列、すなわち、ベクトル、に再配置されるように走査プロセスが行われる。幾つかの例においては、エントロピー符号化することができるシリアライズされたベクトルを生成するために量子化された変換係数を走査するために予め定義された走査順序が使用される。その他の例においては、適応型走査を行うことができる。
[0064]次に、変換係数のベクトルにエントロピーコーディングが適用される。変換ユニット内の量子化された変換係数の走査は、エントロピーコーダのために変換係数の2D配列をシリアライズする。有意な(すなわち、ゼロでない)係数の位置を示すために有意性マップ(significance map)を生成することができる。走査は、有意な(すなわち、ゼロでない)係数のレベルを走査するために、及び/又はそれらの有意な係数の符号をコーディングするために適用することができる。エントロピーコーダは、エントロピーコーディング、例えば、コンテキスト適応型可変長コーディング(CAVLC)、コンテキスト適応型バイナリ算術コーディング(CABAC)、確率間隔分割エントロピーコーディング(PIPE)、等、を走査された量子化された変換係数の一次元ベクトルに適用することができる。
[0065]CABACを実行するために、コンテキストモデル内のコンテキストが送信されるべきシンボルに割り当てられる。コンテキストは、例えば、シンボルの近隣値がゼロでないかどうかに関連することができる。CAVLCを実行するために、送信されるべきシンボルに関して可変長コードが選択される。VLC内のコードワードは、相対的により短いコードがより確率の高いシンボルに対応し、より長いコードがより確率の低いシンボルに対応するような形で構築することができる。このようにして、VLCの使用は、送信されるべき各シンボルに関して等しい長さのコードワードを使用してビット節約を達成することができる。確率の決定は、シンボルに割り当てられたコンテキストに基づくことができる。
[0066]幾つかの事例においては、変換は、予測残差ブロックの残差データをコーディングする前にスキップすることができる。一例においては、残差ブロックは、残差ブロックの残差データをコーディングする前に残差ブロックに変換が適用されない変換スキップモードにおいて非可逆コーディングモードを用いてコーディングすることができる。この場合は、残差ブロックの残差データに対して量子化を依然として行うことができる。例えば、HEVCは、TUに関する変換スキップモードを示すために構成要素、すなわち、transform_skip_flag構成要素、を使用する。他の例においては、残差ブロックは、残差ブロック内の残差データの可逆コーディングを達成するために変換及び量子化の両方がスキップされる可逆コーディングモードを用いてコーディングすることができる。例えば、HEVCは、CUに関する可逆コーディングモードを示すために構成要素、すなわち、cu_transquant_bypass_flag構成要素、を使用する。
[0067]JCTVC−J0092(2012年7月11日〜20日にスウェーデンのストックホルムで開催された第10回会合におけるITU−T SG16 WP3及びISO/IEC JTC1/SC29/WG11の映像コーディング共同作業チーム(JCT−VC)によるHe,D.et al.,“Rotation of Residual Block for Transform Skipping”(変換スキップのための残差ブロックの回転)では、イントラ予測モードにおいて残差ブロックに関して変換がスキップされるときには、残差データのエントロピーコーディングを適用する前に残差ブロックが180度だけ自動的に回転されることが提案されている。JCTVC−J0053(2012年7月11日〜20日にスウェーデンのストックホルムで開催された第10回会合におけるITU−T SG16 WP3及びISO/IEC JTC1/SC29/WG11の映像コーディング共同作業チーム(JCT−VC)によるAn,J.et al.,“Residue Scan for Intra Transform Skip Mode”(イントラ変換スキップモードに関する残差走査)でも同様の考えが提案されており、同じ目的を達成するためにエントロピーコーディングのためにイントラ予測残差ブロック内において残差データ(すなわち、ピクセル差分値)を走査する方向が自動的に変更される。同様に、JCTVC−K0294(2012年10月10日〜19日に中国の上海で開催された第11回会合におけるITU−T SG16 WP3及びISO/IEC JTC1/SC29/WG11の映像コーディング共同作業チーム(JCT−VC)によるWeerakkody,R.et al.“Mirroring of Coefficients for Transform Skipping”(変換スキップのための係数のミラーリング)では、使用されている走査に依存して、イントラ予測残差ブロックの残差データが残差ブロックの主対角線又は副対角線に沿って自動的にフリップされることが提案されている。
[0068]さらに、可逆コーディングモードでは、残差ブロックに関して変換が常にスキップされる。JCTVC−J0093では、予測残差ブロックを180度だけ自動的に回転させることをイントラ予測モード及びインター予測モードの両方に関して可逆コーディングモードにまで拡張させることを提案している。これらの考え方のうちの幾つかは、JCTVC−J0468(2012年7月にスウェーデンのストックホルムで開催された第10回会合におけるITU−T SG16 WP3及びISO/IEC JTC1/SC29/WG11の映像コーディング共同作業チーム(JCT−VC)によるTsukuba et al.,“Combination of JCTVC−J0069 and JCTVC−J0093(JCTVC−J0069及びJCTVC−J0093の組み合わせ)、及び、JCTVC−M0333(2013年4月に韓国の仁川で開催された第13回会合におけるITU−T SG16 WP3及びISO/IEC JTC1/SC29/WG11の映像コーディング共同作業チーム(JCT−VC)によるSole et al.,“AhG8:Residual rotation and significance map context for screen content coding(画面コンテンツコーディングに関する残差回転及び有意性マップ)においても論じられている。JCTVC−J0053及びJCTVC−K0294において提案される方法は、イントラ予測モード及びインター予測モードの両方に関して可逆コーディングモードに拡張することもできる。
[0069]イントラコーディングでは、予測が行われるサンプルは、映像ブロックの左側又は上側に配置される。上側及び左側からの予測されるサンプルの距離が大きくなるのに従い、予測誤差が増大する傾向がある。この理由で、残差ブロックの右下隅の残差データサンプル値は、典型的には、左上隅のそれらと比較してより大きい絶対的大きさを有する。変換係数コーディング、すなわち、エントロピーコーディング、は、より高いエネルギーの残差データは左上隅に集中すると仮定して設計される。従って、イントラ予測残差ブロックに関しては、残差映像ブロックを180度だけ自動的に回転させることは、変換スキップモードにおける非可逆コーディングモードが使用されるときにエントロピーコーディング効率を向上させる上で有効である。
[0070]しかしながら、可逆モードでコーディングされる残差ブロックは、イントラ予測残差ブロック又はインター予測残差ブロックを使用することができる。インター予測残差ブロックの場合は、残差データは、イントラ予測残差ブロックに関して上述されるプロパティを所有しない。インター予測残差ブロックに関しては180度の自動的回転を行うことは常に望ましいわけではない。
[0071]本開示の技法は、残差ブロックに関して変換がスキップされることに基づいて、残差ブロックの残差データをコーディングする前に残差ブロックを回転させるべきかどうかを決定することを含む。幾つかの例においては、残差ブロックに関する回転値は、映像符号器20と映像復号器30との間のビットストリームで明示でシグナリングすることができる。その他の例においては、映像符号器20及び映像復号器30は、残差ブロックの2つ以上の縁部における境界のタイプに基づいて残差ブロックを回転させるべきかどうかを各々独立して決定することができる。
[0072]JCTVC−G281(2011年11月21日〜30日にスイスのジュネーブで開催された第7回会合におけるITU−T SG16 WP3及びISO/IEC JTC1/SC29/WG11の映像コーディング共同作業チーム(JCT−VC)によるAn,J. et al.,“Non−CE7:Boundary−Dependent Transform for Inter−Predicted Residue”(非CE7:インター予測された残差に関する境界に依存する変換)では、インター予測された残差データのエネルギーに関して次の観測が行われた。すなわち、TUを備える残差ブロックに関して、残差ブロックの特定の縁部における近隣ブロック(上下左右)が残差ブロックと同じPUに属する、すなわち、近隣ブロックが同じPUに属するTUである、場合は、特定の縁部は、TU境界であり、TU境界における残差データは、典型的には、残差ブロックの平均的残差データよりも低いエネルギーを有する。他方、残差映像ブロックの特定の縁部における近隣ブロックが残差ブロックと異なるPUに属する、すなわち、近隣ブロックが異なるPUに属するTUである、場合は、特定の縁部は、PU境界であり、TU境界における残差データは、典型的には、残差ブロックの平均的残差データよりも高いエネルギーを有する。本開示においては、残差ブロックの縁部における残差データのエネルギーレベルは、残差データのサイズ、すなわち、残差映像ブロックの縁部における残差データサンプル値に関するピクセル差分の絶対的大きさ、に比例する。
[0073]上記の観測に基づき、本開示の技法は、残差ブロックの2つ以上の縁部における境界のタイプに基づいて変換のスキップを用いてインター予測残差ブロックを回転させることを含む。それらの技法により、映像符号器又は映像復号器に含まれている位置再設定ユニットは、残差ブロックの2つ以上の縁部における境界のタイプを決定し、次に、それらの縁部における境界のタイプに基づいて、オリジナルの残差ブロックのPU境界における残差データを回転された残差ブロックの左上隅に配置するために残差ブロックを回転させるべきかどうかを決定する。それらの技法は、映像コーダ、例えば、映像符号器20又は映像復号器30、によって実行することができる。
[0074]幾つかの例においては、位置再設定ユニットは、残差ブロックを予め決定された回転値、例えば、180度、だけ回転させるか又は残差ブロックを回転させないかを決定する。その他の例においては、位置再設定ユニットは、残差ブロックを回転させるべき回転値を、2つ以上の回転値、例えば、0度、すなわち回転させない、180度、90度又は270度、から決定する。符号化側では、回転は、平均よりも高いエネルギーを有する残差データを、エントロピーコーディング効率を向上させるために残差ブロックの残差データを符号化する前に回転された残差ブロックの左上隅に配置する。復号側では、回転は、予測ブロックを用いて残差ブロックから映像ブロックを再構築するために、符号化中に行われた回転を逆転させ、平均よりも高いエネルギーを有する残差データをオリジナルの映像ブロック内の原位置に戻す。
[0075]図2は、残差ブロックの残差データを符号化する前に残差ブロックを回転させるべきかどうかを決定するために本開示において説明される技法を実装することができる映像符号器例20を示したブロック図である。映像符号器20は、映像スライス内の映像ブロックのイントラコーディング及びインターコーディングを行うことができる。イントラコーディングは、所定の映像フレーム又はピクチャ内の映像における空間的冗長性を低減させる又は除去するために空間的予測に依存する。インターコーディングは、映像シーケンスの隣接するフレーム又はピクチャ内の映像における時間的冗長性を低減させる又は除去するために時間的予測に依存する。イントラモード(Iモード(登録商標))は、幾つかの空間に基づく圧縮モードのうちのいずれかを意味することができる。インターモード、例えば、単一方向性予測(Pモード)又は両方向性予測(Bモード)は、幾つかの時間に基づく圧縮モードのうちのいずれかを意味することができる。
[0076]図2の例において、映像符号器20は、分割ユニット35と、予測処理ユニット41と、基準ピクチャメモリ64と、加算器50と、変換処理ユニット52と、量子化ユニット54と、位置再設定ユニット66と、エントロピー符号化ユニット56と、を含む。予測処理ユニット41は、動き推定ユニット42と、動き補償ユニット44と、イントラ予測処理ユニット46と、を含む。映像ブロック再構築に関して、映像符号器20は、逆量子化ユニット58と、逆変換処理ユニット60と、加算器62と、も含む。再構築された映像からブロッキネスアーティファクトを除去するためにブロック境界をフィルタリングするためにデブロッキングフィルタ(図2には示されていない)を含めることもできる。希望される場合は、デブロッキングフィルタは、典型的には、加算器62の出力をフィルタリングする。デブロッキングフィルタに加えて追加のループフィルタ(ループ内又はループ後)を使用することもできる。
[0077]図2において示されるように、映像符号器20が映像データを受信し、分割ユニット35がそのデータを映像ブロックに分割する。この分割は、映像ブロックへの分割に加えて、例えば、LCU及びCUの四分木構造による、スライス、タイル、又はその他のより大きいユニットへの分割を含むこともできる。映像符号器20は、概して、符号化されるべき映像スライス内の映像ブロックを符号化するコンポーネントを例示する。スライスは、複数の映像ブロックに(及び、可能なことに、タイルと呼ばれる映像ブロックの組に)分割することができる。予測処理ユニット41は、誤り結果(例えば、コーディングレート及び歪みレベル)に基づいて現在の映像ブロックに関して、複数の可能なコーディングモードのうちの1つ、例えば、複数のイントラコーディングモードのうちの1つ又は複数のインターコーディングモードのうちの1つ、を選択することができる。予測処理ユニット41は、結果的に得られたイントラ又はインターコーディングされたブロックを、残差ブロックデータを生成するために加算器50に、及び、基準ピクチャとしての使用のために符号化されたブロックを再構築するために加算器62に、提供することができる。
[0078]予測処理ユニット41内のイントラ予測処理ユニット46は、空間的圧縮を提供するために、コーディングされるべき現在のブロックと同じフレーム又はスライス内の1つ以上の近隣ブロックに関して現在の映像ブロックのイントラ予測コーディングを行うことができる。予測処理ユニット41内の動き推定ユニット42及び動き補償ユニット44は、時間的圧縮を提供するために、1つ以上の基準ピクチャ内の1つ以上の予測ブロックに関して現在の映像ブロックのインター予測コーディングを行う。
[0079]動き推定ユニット42は、映像シーケンスに関する予め決定されたパターンに従って映像スライスに関するインター予測モードを決定するように構成することができる。予め決定されたパターンは、シーケンス内の映像スライスをPスライス又はBスライスとして指定することができる。動き推定ユニット42及び動き補償ユニット44は、高度に一体化することができるが、概念上の目的で別々に例示されている。動き推定は、動き推定ユニット42によって行われ、動きベクトルを生成するプロセスであり、映像ブロックに関する動きを推定する。動きベクトルは、例えば、基準ピクチャ内の予測ブロックに対する現在の映像フレーム又はピクチャ内の映像ブロックのPUの変位を示すことができる。
[0080]予測ブロックは、ピクセル差分の点でコーディングされるべき映像ブロックのPUに密接にマッチングすることが判明しているブロックであり、差分絶対値和(SAD)、差分二乗和(SSD)、又はその他の差分メトリックによって決定することができる。幾つかの例においては、映像符号器20は、基準ピクチャメモリ64に格納された基準ピクチャの整数未満のピクセル位置に関する値を計算することができる。例えば、映像符号器20は、基準ピクチャの1/4ピクセル位置、1/8ピクセル位置、又はその他の分数のピクセル位置の値を内挿することができる。従って、動き推定ユニット42は、完全ピクセル位置及び分数ピクセル位置に関する動き探索を行い、分数のピクセル精度を有する動きベクトルを出力することができる。
[0081]動き推定ユニット42は、PUの位置を基準ピクチャの予測ブロックの位置と比較することによってインターコーディングされたスライス内の映像ブロックのPUに関する動きベクトルを計算する。基準ピクチャは、第1の基準ピクチャリスト(リスト0)又は第2の基準ピクチャリスト(リスト1)から選択することができ、それらの各々は、基準ピクチャメモリ64に格納された1つ以上の基準ピクチャを識別する。動き推定ユニット42は、計算された動きベクトルをエントロピー符号化ユニット56及び動き補償ユニット44に送信する。
[0082]動き補償は、動き補償ユニット44によって行われ、動き推定によって決定された動きベクトルに基づいて予測ブロックをフェッチ又は生成することを含むことができ、サブピクセル精度に合わせた内挿を行うことができる。現在の映像ブロックのPUに関する動きベクトルを受信した時点で、動き補償ユニット44は、基準ピクチャリストのうちの1つにおいて動きベクトルが指し示す予測ブロックの位置を突き止めることができる。映像符号器20は、コーディング中の現在の映像ブロックのピクセル値から予測ブロックのピクセル値を減じることによって残差映像ブロックを形成し、ピクセル差分値を形成する。ピクセル差分値は、ブロックに関する残差データを形成し、及び、ルマ及びクロマ差分コンポーネントの両方を含むことができる。加算器50は、この減算動作を行うコンポーネント又はコンポーネント(複数)を代表する。動き補償ユニット44は、映像スライスの映像ブロックを復号する際に映像復号器30によって使用するために映像ブロック及び映像スライスに関連する構文要素を生成することもできる。
[0083]イントラ予測処理ユニット46は、上述されるように、動き推定ユニット42及び動き補償ユニット44によって行われるインター予測の代替として、現在のブロックをイントラ予測することができる。特に、イントラ予測処理ユニット46は、現在のブロックを符号化するために使用すべきイントラ予測モードを決定することができる。幾つかの例においては、イントラ予測処理ユニット46は、例えば、別々の符号化パス(encoding pass)中に、様々なイントラ予測モードを用いて現在のブロックを符号化することができ、及び、イントラ予測処理ユニット46は、試験されたモードから使用すべき適切なイントラ予測モードを選択することができる。例えば、イントラ予測処理ユニット46は、様々な試験されたイントラ予測モードに関するレート−歪み解析を用いてレート−歪み値を計算すること、及び、試験されたモードの中で最良のレート−歪み特性を有するイントラ予測モードを選択することができる。レート−歪み解析は、概して、符号化されたブロックと符号化されたブロックを生成するために符号化されたオリジナルの符号化されていないブロックとの間の歪み(又は誤り)の量、及び符号化されたブロックを生成するために使用されたビットレート(すなわち、ビット数)を決定する。イントラ予測処理ユニット46は、いずれのイントラ予測モードがブロックに関する最良のレート−歪み値を呈するかを決定するために様々な符号化されたブロックに関する歪み及びレートから比率を計算することができる。
[0084]いずれの場合も、ブロックに関してイントラ予測モードを選択後は、イントラ予測処理ユニット46は、ブロックに関する選択されたイントラ予測モードを示す情報をエントロピーコーディングユニット56に提供することができる。エントロピーコーディングユニット56は、本開示の技法により選択されたイントラ予測モードを示す情報を符号化することができる。映像符号器20は、送信されるビットストリーム内に構成データを含めることができ、それらは、複数のイントラ予測モードインデックステーブル及び複数の修正されたイントラ予測モードインデックステーブル(コードワードマッピングテーブルとも呼ばれる)、様々なブロックに関するコンテキストを符号化することに関する定義、及び、それらのコンテキストの各々のために使用するための最も可能性の高いイントラ予測モード、イントラ予測モードインデックステーブル、及び修正されたイントラ予測モードインデックステーブルの表示、を含むことができる。
[0085]予測処理ユニット41がインター予測又はイントラ予測を介して現在の映像ブロックに関する予測ブロックを生成した後は、映像符号器20は、現在の映像ブロックから予測ブロックを減じることによって残差映像ブロックを形成する。残差映像ブロック内の残差データは、コーディングされるべき現在の映像ブロックと予測ブロックとの間のピクセル差分値を備える。残差映像ブロックは、映像ブロックに関する残差データの少なくとも一部分を含む1つ以上のTUを備えることができる。映像ブロックが非可逆コーディングモードを用いてコーディングされるときには、残差ブロックの各々は、変換処理ユニット52に適用される。変換処理ユニット52は、変換、例えば、離散コサイン変換(DCT)又は概念的に類似する変換を用いて残差データを残差変換係数に変換する。変換処理ユニット52は、残差映像データをピクセル領域から変換領域、例えば、周波数領域、に変換することができる。
[0086]変換処理ユニット52は、結果的に得られた変換係数を量子化ユニット54に送信することができる。量子化ユニット54は、ビットレートをさらに低減させるために変換係数を量子化する。量子化プロセスは、それらの係数のうちの一部又は全部に関連するビット深度を小さくすることができる。量子化度は、量子化パラメータを調整することによって修正することができる。幾つかの例においては、量子化ユニット54は、量子化された変換係数を含む行列の走査を行うことができる。代替として、エントロピー符号化ユニット56がその走査を行うことができる。
[0087]変換スキップモードにおいて非可逆コーディングモードを用いて映像ブロックがコーディングされるときには、残差ブロックには変換は適用されない。さらに、可逆コーディングモードを用いて映像ブロックがコーディングされるときには、残差ブロックには変換及び量子化のいずれも適用されない。本開示の技法により、残差ブロックに関して変換がスキップされるときには、残差ブロックは、位置再設定ユニット66に加えられる。この場合は、残差データはピクセル領域にとどまり、空間的ピクセル位置におけるピクセル差分値を備える。これは、変換処理ユニット52を用いて周波数成分に対応する位置における変換係数として残差データを変換領域に変換することと反対である。
[0088]位置再設定ユニット66は、平均よりも高いエネルギー、すなわち、平均よりも大きいピクセル差分値、を有する残差データを残差ブロックの左上隅に配置するために残差ブロックを回転させるべきかどうかを決定する。高いエネルギーの残差データをシフトさせることは、典型的には、変換処理ユニット52によって変換処理が行われた結果として生じる。しかしながら、エントロピー符号化ユニット56は、高いエネルギーの残差データは変換された残差ブロックの左上隅に集中されるという仮定に基づいて設計されているため、変換がスキップされるときには、残差ブロックを回転させるのが望ましい。
[0089]イントラ予測残差ブロックの場合は、位置再設定ユニット66は、平均よりも高いエネルギーを有する残差データを残差ブロックの左上隅に配置するために残差ブロックを180度だけ自動的に回転させることができる。イントラ予測残差ブロックに関して変換がスキップされるときには、高いエネルギーの残差データは、典型的には、180度の回転がエントロピーコーディング効率を向上させるように右下隅に集中する。インター予測残差ブロックの場合は、高いエネルギーの残差データは、残差データブロック内のあらゆる位置に集中させることができる。その場合は、位置再設定ユニット66は、最初に、残差ブロックを回転させるべきかどうかを決定し、次に、その決定に基づいて、残差ブロックを決定された回転値だけ回転させるか又は残差ブロックを回転させないかを決定することができる。幾つかの例においては、位置再設定ユニット66は、決定された回転値を反時計回りの方向で残差ブロックに適用することができる。以下において、インター予測残差ブロックを回転させるべきかどうかを決定するための動作例が、図5乃至8に関してより詳細に説明される。
[0090]変換スキップモードにおける非可逆コーディングモードに関しては、位置再設定ユニット66は、エントロピー符号化ユニット56によるエントロピー符号化前にさらなる圧縮のために回転された残差ブロックを量子化ユニット54に送信する。幾つかの事例においては、残差ブロックは、位置再設定ユニット66で残差ブロックを回転させるべきかどうかを決定する前に量子化ユニット54に送信することができる。可逆コーディングモードの場合は、位置再設定ユニット66は、さらなる圧縮を行わずにエントロピー符号化のために回転された残差ブロックをエントロピー符号化ユニット56に直接送信する。
[0091]エントロピー符号化ユニット56は、残差係数、例えば、量子化された変換係数、量子化された残差係数又は圧縮されない残差係数、をエントロピー符号化する。例えば、エントロピー符号化ユニット56は、コンテキスト適応型可変長コーディング(CAVLC)、コンテキスト適応型算術コーディング(SBAC)、確率間隔分割エントロピー(PIPE)コーディング、又はその他のエントロピー符号化法又は技法を行うことができる。エントロピー符号化ユニット56によるエントロピー符号化に引き続き、符号化されたビットストリームは、映像復号器、例えば、映像復号器30、に送信するか、又は、映像復号器によるのちの送信又は取り出しのためにアーカイブに保存することができる。エントロピー符号化ユニット56は、コーディング中の現在の映像スライスに関して動きベクトル及びその他の構成要素をエントロピー符号化することもできる。
[0092]逆量子化ユニット58及び逆変換処理ユニット60は、基準ピクチャの基準ブロックとしてのちに使用するためにピクセル領域内の残差ブロックを再構築するために逆量子化及び逆変換を量子化された変換係数にそれぞれ適用する。変換スキップモードにおける非可逆コーディングモードに関して、逆量子化ユニット58は、残差ブロックを再構築するために、量子化された残差係数に対して逆量子化を適用し、位置再設定ユニット66は、高いエネルギーの残差データを原位置に戻すための逆回転を行う。幾つかの事例においては、量子化された残差係数は、逆量子化ユニット58による逆量子化を行う前に逆回転を行うために位置再設定ユニット66に送信することができる。可逆コーディングモードの場合は、位置再設定ユニット66は、残差ブロックを再構築するために高いエネルギーの残差データを原位置に戻すために残差係数の逆回転を行う。
[0093]次に、動き補償ユニット44は、基準ピクチャリストのうちの1つ内の基準ピクチャのうちの1つの予測ブロックに再構築された残差ブロックを加えることによって基準ブロックを計算することができる。動き補償ユニット44は、動き推定の際に使用するために整数未満のピクセル値を計算するために1つ以上の内挿フィルタを再構築された残差ブロックに適用することもできる。加算器62は、基準ピクチャメモリ64に格納するために基準ブロックを生成するために動き補償ユニット44によって生成された動き補償された予測ブロックに再構築された残差ブロックを加える。基準ブロックは、後続する映像フレーム又はピクチャ内のブロックをインター予測するための基準ブロックとして動き推定ユニット42及び動き補償ユニット44によって使用することができる。
[0094]映像符号器20は、残差ブロックに関する変換をスキップすることと残差ブロックを回転させるべきかどうかを決定することとを含む本開示の技法を実行するように構成することができる。映像符号器20の位置再設定ユニット66は、残差ブロックを回転させるべきかどうかを決定することができる。幾つかの例においては、位置再設定ユニット66は、残差ブロックをエントロピー符号化するために必要なビット数に基づいて残差ブロックを回転させるべきかどうかを決定することができる。例えば、位置再設定ユニット66は、エントロピー符号化のための最小ビット数が結果的に得られることになる回転値に基づいて残差ブロックを回転させるべきかどうかを決定することができる。その他の例においては、位置再設定ユニット66は、残差ブロックの2つ以上の縁部の境界のタイプに基づいて残差ブロックを回転させるべきかどうかを決定することができる。
[0095]残差ブロックが回転されるときには、映像符号器20の位置再設定ユニット66は、予め決定された回転値だけ残差ブロックを回転させることを決定することができ、又は、残差ブロックを回転させるべき回転値を決定することができる。いずれの場合も、映像符号器20は、エントロピー符号化ユニット54によって残差ブロックの残差データを符号化する前に決定された回転値だけ残差ブロックを回転させる。以下において、残差ブロックの縁部における境界のタイプに基づいてインター予測残差ブロックを回転させるべきかどうかを決定するための動作例が図5乃至8に関してより詳細に説明される。
[0096]幾つかの例においては、映像符号器20は、残差ブロックに関して変換スキップが使用されるかどうか、すなわち、変換スキップモードで可逆コーディングモードを用いて又は非可逆コーディングモードを用いて残差ブロックが符号化されるかどうかをシグナリングすることしかできない。この場合は、映像復号器は、残差ブロックから映像ブロックを再構築するために、符号化中に行われた回転を逆転させるように残差ブロックを回転させるべきかどうかを決定するために残差ブロックの縁部における境界のタイプを決定する動作と同じ動作を使用することができる。その他の例においては、映像符号器20は、符号化中に残差ブロックに適用された回転の回転値を映像復号器にシグナリングすることができる。この場合は、映像復号器は、残差ブロックから映像ブロックを再構築するために符号化中に行われた回転を逆転させるためにシグナリングされた回転値に基づいて残差ブロックを回転させることができる。
[0097]幾つかの追加の例においては、映像符号器20は、残差ブロックのサイズがスレショルドのブロックサイズ以下であるときに残差ブロックに関する変換をスキップすることと残差ブロックを回転させることとを含む本開示の技法を実行するように構成される。スレショルドのブロックサイズは、非可逆コーディングモードにおいて変換のスキップ及び回転が許容されるブロックサイズに等しいことができる。このようにして、回転を行うことができるブロックサイズは、変換スキップモードにおいて可逆コーディングモード又は非可逆コーディングモードのいずれかを用いてコーディングされた残差ブロックに関して整合される、すなわち、同じであることができる。この技法は、インター予測残差ブロック及びイントラ予測残差ブロックの両方に適用することができる。
[0098]さらに、映像符号器20は、残差ブロックのサイズがスレショルドのブロックサイズ以下であるときに残差ブロックに関する変換をスキップすることと残差ブロックの対角線に沿って残差データサンプル値をフリップさせることとを含む本開示の技法を実行するように構成することができる。残差ブロックの残差データサンプル値をフリップさせることは、対角線の1方の側の残差データサンプル値を、残差ブロックの対角線の他方の側の対応するミラー画像位置の残差データサンプル値とスワップすることを含む。この技法は、インター予測残差ブロック及びイントラ予測残差ブロックの両方に適用することもできる。
[0099]幾つかの例においては、可逆コーディングモードの場合は、回転又はフリップは、スレショルドのブロックサイズ以下のサイズを有するイントラ予測残差ブロックのみに適用することができる。その他の例においては、回転又はフリップは、スレショルドのブロックサイズ以下のサイズを有するすべての残差ブロック、すなわち、イントラ予測及びインター予測残差ブロック、に適用することができる。追加の例においては、変換スキップモードにおける非可逆コーディングモードの場合は、回転又はフリップは、イントラ予測残差ブロックのみに適用することができ、又は、イントラ予測残差ブロック及びインター予測残差ブロックの両方に適用することができる。
[0100]図3は、残差ブロックの残差データから映像ブロックを再構築する前に残差ブロックを回転させるべきかどうかを決定するために本開示において説明される技法を実装することができる映像復号器例30を示したブロック図である。図3の例においては、映像復号器30は、エントロピー復号ユニット80と、予測処理ユニット81と、逆量子化ユニット86と、逆変換ユニット88と、位置再設定ユニット94と、加算器90と、基準ピクチャメモリ92と、を含む。予測処理ユニット81は、動き補償ユニット82と、イントラ予測処理ユニット84と、を含む。映像復号器30は、幾つかの例においては、図2からの映像符号器20に関して説明される符号化パスと概して相互的である復号パスを行うことができる。
[0101]復号プロセス中に、映像復号器30は、符号化された映像スライスの映像ブロック及び関連する構成要素を表す符号化された映像ビットストリームを映像符号器、例えば、映像符号器20、から受信する。映像復号器30のエントロピー復号ユニット80は、残差係数、動きベクトル、及びその他の構成要素を生成するためにビットストリームをエントロピー復号する。エントロピー復号ユニット80は、動きベクトル及びその他の構成要素を予測処理ユニット81に転送する。映像復号器30は、映像スライスレベル及び/又は映像ブロックレベルで構成要素を受信することができる。
[0102]映像スライスがイントラコーディングされた(I)スライスとしてコーディングされるときには、予測処理ユニット81のイントラ予測処理ユニット84は、シグナリングされたイントラ予測モード及び現在のフレーム又はピクチャの前に復号されたブロックからのデータに基づいて現在の映像スライスの映像ブロックに関する予測データを生成することができる。映像フレームがインターコーディングされた(すなわち、B又はP)スライスとしてコーディングされるときには、予測処理ユニット81の動き補償ユニット82は、エントロピー復号ユニット80から受信された動きベクトル及びその他の構成要素に基づいて現在の映像スライスの映像ブロックに関する予測ブロックを生成する。予測ブロックは、基準ピクチャリストのうちの1つ内の基準ピクチャのうちの1つから生成することができる。映像復号器30は、基準ピクチャメモリ92に格納されている基準ピクチャに基づいてデフォルトの構築技法を用いて基準フレームリスト、リスト0及びリスト1、を構築することができる。
[0103]動き補償ユニット82は、動きベクトル及びその他の構成要素を構文解析することによって現在の映像スライスの映像ブロックに関する予測情報を決定し、及び、復号中の現在の映像ブロックに関する予測ブロックを生成するために予測情報を使用する。例えば、動き補償ユニット82は、映像スライスの映像ブロックをコーディングするために使用された予測モード(例えば、イントラ予測又はインター予測)、インター予測スライスタイプ(例えば、Bスライス又はPスライス)、スライスに関する基準ピクチャリストのうちの1つ以上に関する構築情報、スライスの各々のインター符号化された映像ブロックに関する動きベクトル、スライスの各々のインターコーディングされた映像ブロックに関するインター予測状態、及び、現在の映像スライス内の映像ブロックを復号するためのその他の情報を決定するために受信された構成要素のうちの一部を使用する。
[0104]動き補償ユニット82は、内挿フィルタに基づいて内挿を行うこともできる。動き補償ユニット82は、基準ブロックの整数未満のピクセルに関する内挿された値を計算するために映像ブロックの符号化中に映像符号器20によって使用された内挿フィルタを使用することができる。この場合は、動き補償ユニット82は、受信された構成要素から映像符号器20によって使用された内挿フィルタを決定すること及び予測ブロックを生成するために内挿フィルタを使用することができる。
[0105]上述されるように、エントロピー復号ユニット80は、映像ブロックの残差係数、例えば、量子化された変換係数、量子化された残差係数又は圧縮されない残差係数、を生成するためにビットストリームをエントロピー復号する。映像ブロックが非可逆コーディングモードを用いてコーディングされるときには、逆量子化ユニット86は、ビットストリームで提供された残差ブロックの量子化された変換係数を逆量子化、すなわち、量子化解除、する。逆量子化プロセスは、量子化度、そして同様に、適用されるべき逆量子化度、を決定するために映像スライス内の各映像ブロックに関して計算された量子化パラメータを使用することを含むことができる。逆変換処理ユニット88は、ピクセル領域において残差ブロックを再構築するために逆変換、例えば、逆DCT、逆整数変換、又は概念的に類似する逆変換プロセスを変換係数に適用する。
[0106]映像ブロックが変換スキップモードにおいて非可逆コーディングモードを用いてコーディングされるときには、残差ブロックには逆変換は適用されない。さらに、映像ブロックが可逆コーディングモードを用いてコーディングされるときには、残差ブロックには逆変換及び逆量子化のいずれも適用されない。本開示の技法により、残差ブロックの残差係数に関して逆変換がスキップされるときには、位置再設定ユニット94に残差ブロックが加えられる。この場合は、残差データはピクセル領域内にとどまり、空間的ピクセル位置におけるピクセル差分値を備える。これは、変換処理ユニット88を用いて周波数成分に対応する位置における変換係数として変換領域から残差データを変換することと反対である。
[0107]位置再設定ユニット94は、平均よりも高いエネルギー、すなわち、平均よりも大きいピクセル差分値、を有する残差データを残差ブロックの左上隅に配置した符号化中に行われた回転を逆転させるために残差ブロックを回転させることができる。高いエネルギーの残差データをシフトさせて原位置に戻すことは、典型的には、逆変換処理ユニット88によって逆変換処理が行われた結果として生じる。しかしながら、逆変換がスキップされるときには、予測ブロックを用いて映像ブロックを適切に再構築するために残差ブロックを回転させることが必要になる。
[0108]変換スキップモードにおける非可逆コーディングモードに関して、逆量子化ユニット86は、伸張のために、ビットストリームにおいて提供された残差ブロックの量子化された残差係数に逆量子化を適用する。次に、位置再設定ユニット94は、残差ブロックを再構築するために符号化中に行われた回転を逆転させて原位置に戻すための回転を行う。幾つかの事例においては、量子化された残差係数は、逆量子化ユニット86によって逆量子化を行う前に逆回転を行うために位置再設定ユニット94に送信することができる。可逆コーディングモードの場合は、位置再設定ユニット94は、伸張なしでビットストリームにおいて提供された残差ブロックの量子化された残差係数を直接受信する。次に、位置再設定ユニット94は、残差ブロックを再構築するために、符号化中に行われた回転を逆転させて高いエネルギーの残差データを原位置に戻すための回転を行う。このようにして、ピクセル差分値は、対応するピクセルのオリジナルの空間的位置に回転されて戻される。
[0109]変換スキップを用いたイントラ予測残差ブロックの場合は、高いエネルギーの残差データは、典型的には、右下隅に集中し、従って、符号化中の180度の回転は、エントロピーコーディング効率を向上させることになる。この場合は、位置再設定ユニット94は、平均よりも高いエネルギーを有する残差データをオリジナルの残差ブロックの右下隅の位置に戻すために180度だけイントラ予測残差ブロックを自動的に回転させることができる。
[0110]インター予測残差ブロックの場合は、高いエネルギーの残差データは、残差ブロック内のあらゆる位置に集中させることができる。この場合は、位置再設定ユニット94は、最初に、残差ブロックを回転させるべきかどうかを決定し、次に、その決定に基づいて、残差ブロックを決定された回転値だけ回転させるか又は残差ブロックを回転させない。符号化中に残差ブロックに関して行われた回転を逆転させるために、位置再設定ユニット94は、残差ブロックを回転させるべきかどうかを決定し、しかしながら、決定された回転値を、図2からの映像符号器20の位置再設定ユニット66と反対の方向に、例えば、反時計回り方向と反対の時計回り方向に、適用する。
[0111]動き補償ユニット82が動きベクトル及びその他の構成要素に基づいて現在の映像ブロックに関する予測ブロックを生成した後は、映像復号器30は、再構築された残差ブロックを動き補償ユニット82によって生成された対応する予測ブロックと加算することによって復号された映像ブロックを形成する。より具体的には、残差ブロックのピクセル差分値は、対応する予測ブロックの対応する予測ピクセル値と加算される。この加算プロセスは、映像ブロック全体を再構築するためにルマブロック及びクロマブロックの両方に関して行われる。加算器90は、この加算動作を行うコンポーネント又はコンポーネント(複数)を代表する。希望される場合は、ブロッキネスアーティファクトを除去するために復号されたブロックをフィルタするためにデブロッキングフィルタを適用することもできる。ピクセル遷移を平滑化するために、又はその他の形で映像品質を向上させるためにその他のループフィルタ(コーディングループ内又はコーディングループ後のいずれか)を使用することもできる。次に、所定のフレーム又はピクチャ内の復号された映像ブロックが基準ピクチャメモリ92に格納され、それは、後続する動き補償のために使用される基準ピクチャを格納する。基準ピクチャメモリ92は、表示装置、例えば、図1の表示装置32、でののちの提示のために復号された映像も格納する。
[0112]映像復号器30は、残差ブロックに関する逆変換をスキップすることと残差ブロックを回転させるべきかどうかを決定することとを含む本開示の技法を実行するように構成することができる。映像復号器30の位置再設定ユニット94は、残差ブロックを回転させるべきかどうかを決定することができる。幾つかの例においては、位置再設定ユニット94は、映像符号器20において使用された残差ブロックに関する回転値を示すビットストリーム内の構成要素に基づいて残差ブロックを回転させるべきかどうかを決定する。その他の例においては、位置再設定ユニット94は、残差ブロックの2つ以上の縁部における境界のタイプに基づいて残差ブロックを回転させるべきかどうかを決定することができる。
[0113]残差ブロックが回転されるときには、映像復号器30の位置再設定ユニット94は、残差ブロックを予め決定された回転値だけ回転させることを決定することができ、又は、残差ブロックを回転させるべき回転値を決定することができる。いずれの場合も、映像復号器30は、予測ブロックを用いて残差ブロックから映像ブロックを再構築する前に残差ブロックを決定された回転値だけ回転させる。以下では、残差ブロックの縁部における境界のタイプに基づいてインター予測残差ブロックを回転させるべきかどうかを決定するための動作例が図5乃至8に関してより詳細に説明される。
[0114]幾つかの例においては、映像復号器30は、残差ブロックに関して変換スキップが使用されるかどうか、すなわち、変換スキップモードにおいて可逆コーディングモードを用いて又は非可逆コーディングモードを用いて残差ブロックが符号化されるかどうかを示すだけの構文要素を受信することができる。この場合は、位置再設定ユニット94は、残差ブロックから映像ブロックを再構築するために、符号化中に行われた回転を逆転させるために残差ブロックを回転させるべきかどうかを決定するために残差ブロックの縁部における境界のタイプを決定するために映像符号器20と同じ動作を使用する。その他の例においては、映像復号器30は、符号化中に残差ブロックに適用された回転の回転値、例えば、0度、90度、180度又は270度、を示す構文要素を受信することができる。この場合は、位置再設定ユニット94は、残差ブロックから映像ブロックを再構築するために、例えば、反対方向に0度、90度、180度又は270度だけ回転させることによって、符号化中に行われた回転を逆転させるためにシグナリングされた回転値に基づいて残差ブロックを回転させることができる。以下において、インター予測残差ブロックを回転させるべきかどうかを決定するための動作例が、図5乃至8に関してより詳細に説明される。
[0115]幾つかの追加例においては、映像復号器30は、残差ブロックのサイズがスレショルドのブロックサイズ以下であるときに残差ブロックに関する変換をスキップすることと残差ブロックを回転させることとを含む本開示の技法を実行するように構成される。スレショルドのブロックサイズは、非可逆コーディングモードにおいて変換スキップ及び回転が許容されるブロックサイズに等しいことができる。このようにして、回転を行うことができるブロックサイズは、変換スキップモードにおいて可逆コーディングモード又は非可逆コーディングモードのいずれかを用いてコーディングされた残差ブロックに関して整合される、すなわち、同じであることができる。この技法は、インター予測残差ブロック及びイントラ予測残差ブロックの両方に適用することができる。
[0116]さらに、映像復号器30は、残差ブロックのサイズがスレショルドのブロックサイズ以下であるときに残差ブロックに関する変換をスキップすることと残差ブロックの対角線に沿って残差データサンプル値をフリップさせることとを含む本開示の技法を実行するように構成することができる。残差ブロックの残差データサンプル値をフリップさせることは、対角線の1方の側の残差データサンプル値を、残差ブロックの対角線の他方の側の対応するミラー画像位置の残差データサンプル値とスワップすることを含む。この技法は、インター予測ブロック及びイントラ予測残差ブロックの両方に適用することもできる。
[0117]幾つかの例においては、可逆コーディングモードの場合は、回転又はフリップは、スレショルドのブロックサイズ以下のサイズを有するイントラ予測残差ブロックのみに適用することができる。その他の例においては、回転又はフリップは、スレショルドのブロックサイズ以下のサイズを有するすべての残差ブロック、すなわち、イントラ予測及びインター予測残差ブロック、に適用することができる。追加の例においては、変換スキップモードにおける非可逆コーディングモードの場合は、回転又はフリップは、イントラ予測残差ブロックのみに適用することができ、又は、イントラ予測残差ブロック及びインター予測残差ブロックの両方に適用することができる。
[0118]図4は、動き予測モードにより1つ以上のPU102、104に分割され、四分木データ構造により複数のTU110、112、114、116に分割される残差ブロックのCU100を示したブロック図である。図4において、PU境界は、PU102及び104の縁部の周囲の太い実線として示される。PU境界は、異なるPUに属する2つのTU間の境界、例えば、PU102内のTU114とPU104内のTU116との間の境界、を備える。図4において、TU境界は、PU102内のTU100とTU112との間、及びPU104内のTU114とTU116との間の太い破線として示される。TU境界は、同じPUに属する2つのTU間の境界、例えば、PU102内のTU110とPU104内のTU112との間の境界、を備える。
[0119]概して、本開示は、変換スキップを用いて予測残差ブロック、例えば、TU112、の残差データをコーディングするための技法について説明する。TU112の残差データは、映像ブロックの一部分と関連する予測ブロックとの間のピクセル差分値を備える。TU112が変換スキップモードにおいて可逆コーディングモード又は非可逆コーディングモードのいずれかを用いてコーディングされるときにはTU112に関して変換をスキップすることができる。TU112に変換を適用しなければ、平均よりも高いエネルギー、すなわち、平均よりも大きいピクセル差分値、を有する残差データは、TU112の左上隅に配置することができず、それは、エントロピーコーディングに関しては予想される。
[0120]イントラ予測モードにおいて、残差ブロックに関して変換がスキップされるときには、平均よりも高いエネルギーを有する残差データは、典型的には、イントラ予測残差ブロックの右下隅に配置される。幾つかの事例においては、イントラ予測残差ブロックは、平均よりも高いエネルギーを有する残差データを残差ブロックの左上隅に配置するために残差ブロックをコーディングする前に180度だけ自動的に回転させることができる。しかしながら、インター予測モードでは、残差ブロックを180度だけ自動的に回転させるのは常に望ましいわけではない。
[0121]インター予測残差ブロックの残差データのエネルギーに関して次の観測が行われている。すなわち、インター予測残差ブロックのTU境界の残差データは、典型的には、残差ブロック内の平均的な残差データよりも低いエネルギーを有する。さらに、インター予測残差ブロックのPU境界の残差データは、典型的には、残差ブロック内の平均的な残差データよりも高いエネルギーを有する。この観測に基づき、本開示の技法は、TU112の2つ以上の縁部における境界のタイプに基づいて、変換スキップを用いてインター予測残差ブロック、例えば、TU112、を回転させることを含む。
[0122]本開示の技法により、TU112に関して変換がスキップされるときには、位置再設定ユニット(例えば、図2からの映像符号器20の位置再設定ユニット66又は図3からの映像復号器30の位置再設定ユニット94)は、TU112のオリジナルのバージョンのPU境界の残差データをTU112の回転されたバージョンの左上隅に配置するために、TU112の2つ以上の縁部における境界のタイプを決定し、次に、TU112を回転させるべきかどうかを決定することができる。幾つかの事例においては、それらの技法は、変換スキップモードにおいて可逆コーディングモード又は非可逆コーディングモードを用いてコーディングされたインター予測残差ブロックにしか適用することができない。その場合は、変換スキップモードにおいて可逆コーディングモード又は非可逆コーディングモードを用いてコーディングされたイントラ予測された残差ブロックは、残差映像ブロック内の残差データをコーディングする前に180度だけ自動的に回転させることができる。その他の事例においては、それらの技法は、変換スキップモードにおいて可逆コーディングモード又は非可逆コーディングモードを用いてコーディングされたインター予測残差ブロック及びイントラ予測残差ブロックの両方に適用することもできる。
[0123]幾つかの例においては、それらの技法は、TU112を予め決定された回転値、例えば、180度、だけ回転させるか又はTU112を回転させないかを決定することを含む。その他の例においては、それらの技法は、2つ以上の回転値、例えば、0度、すなわち回転させない、180度、90度又は270度、からTU112を回転させる回転値を決定することを含む。符号化側では、回転は、エントロピーコーディング効率を向上させるためにTU112の残差データを符号化する前に平均よりも高いエネルギーを有する残差データをTU112の回転されたバージョンの左上隅に配置するために行われる。幾つかの事例においては、回転は、符号化側では反時計回りの方向に行うことができる。復号側では、回転は、予測ブロックを用いてTU112から映像ブロックを再構築するために、符号化中に行われた回転を逆転させ、平均より高いエネルギーを有する残差データをTU112内の原位置に戻すために行われる。幾つかの事例においては、回転は、復号側では時計回り方向に行うことができる。
[0124]本開示の技法の第1の例においては、変換がスキップされるイントラ予測残差ブロックは、残差ブロックの残差データをコーディングする前に180度だけ自動的に回転される。逆に、変換がスキップされているかどうかにかかわらず、インター予測残差ブロック、例えば、TU112、に関しては回転は適用されない。
[0125]本開示の技法の第2の例においては、残差ブロックは、残差ブロックの縁部における境界のタイプに依存して、180度だけ回転させるか又は回転させないことができる。90度又は270度の回転は、トランスポーズバッファ(transpose buffer)を要求することがあるため、0度又は180度に回転を制限することが望ましいであろう。概して、残差ブロックの左縁部及び上縁部がPU境界、例えば、TU110、である場合は、左上隅内の残差データは、TU110内の平均的な残差データよりも高いエネルギーを有する可能性がある。その場合は、高いエネルギーの残差データが既にTU110の左上隅に集中しているため、TU110を180度回転させることは望ましくないであろう。従って、映像コーディングデバイスは、TU110の回転を行わないことを決定することができる。しかしながら、残差ブロックの左縁部及び上縁部がTU境界であり、残差映像ブロックの右縁部及び下縁部がPU境界である場合は、高いエネルギーの残差データを残差ブロックの回転されたバージョンの左上隅に配置するために180度回転させることが望ましい。従って、映像コーディングデバイスは、その残差ブロックを180度だけ回転させることを決定することができる。
[0126]本開示の技法により、映像コーディングデバイスの位置を再設定することは、残差ブロックの各縁部をPU境界又はTU境界として分類することができる。次に、位置再設定ユニットは、残差ブロックを180度だけ回転させるべきかどうかを決定するための規則を適用する。残差ブロックの右縁部及び下縁部におけるPU境界の数が、残差ブロックの左縁部及び上縁部におけるPU境界の数よりも多い場合は、位置再設定ユニットは、残差ブロックを180度だけ回転させることを決定する。以下の表1は、180度の回転が行われる縁部分類の組み合わせを示す。残りの組み合わせに関しては、映像コーディングデバイスの位置再設定ユニットは、残差ブロックに関する回転を行わないことを決定する。左縁部及び上縁部に関するPU境界の数が残差ブロックの下縁部及び右縁部におけるPU境界の数と等しい場合は、映像コーディングデバイスの位置再設定ユニットは、残差ブロックを180度だけ回転させること又は残差ブロックを回転させないことを決定することができる。
[0127]一例として、映像コーディングデバイスの位置再設定ユニットは、TU112の各縁部における境界のタイプに基づいてTU112の残差ブロックを例えば180度だけ回転させるべきかどうかを決定することができる。位置再設定ユニットは、TUI112の左縁部及び上縁部におけるPU境界の第1の数が1つのPU境界、すなわち、上縁部、に等しいと決定する。位置再設定ユニットは、TUI112の右縁部及び下縁部におけるPU境界の第2の数が2つのPU境界、すなわち、右縁部及び下縁部の両方、に等しいと決定する。この場合は、PU境界の第2の数は、PU境界の第1の数よりも多く、このため、位置再設定ユニットは、TU112の残差データをコーディングする前に180度だけTU112を回転させることを決定する。
[0128]本開示の技法の第3の例においては、映像コーディングデバイスの位置再設定ユニットは、各残差映像ブロックに関して最大で4つの可能な回転値、すなわち、0度、すなわち回転させない、180度、90度、及び270度、を検討することができる。幾つかの事例においては、90度又は270度の回転は、トランスポーズバッファを要求することがあるためハードウェアにおいて実装するのが困難であるので、位置再設定ユニットは、回転値のうちの2つ、例えば、0度及び180度、のみを検討することができる。従って、この例では、回転させない又は180度の回転のみが検討される。
[0129]回転値(0度、180度、90度、及び270度)のうちの各々を適用した後は、位置再設定ユニットは、それらの回転値の各々の1つに関して残差ブロックの左縁部及び上縁部におけるPU境界の数を計算する。これらのPU境界数をn0、n180、n90、及びn270によって表す。同様に、回転値(0度、180度、90度、及び270度)のうちの各々を適用した後は、位置再設定ユニットは、それらの回転値のうちの各々の1つに関して残差ブロックの右縁部及び下縁部におけるPU境界の数を計算する。これらのPU境界数をm0、m180、m90、及びm270によって表す。回転は、符号化側では反時計回りの方向で行うことができ、復号側では時計回りの方向で行うことができる。
[0130]これらの技法により、映像コーディングデバイスの位置再設定ユニットは、回転値の各々に関して残差ブロックの左縁部及び上縁部におけるPU境界の数と残差ブロック右縁部及び下縁部におけるPU境界の数との間の差分値を計算する。すなわち、d0=(n0−m0)、d90=(n90−m90)、d180=(n180−m180)、及びd270=(n270−m270)である。位置再設定ユニットは、すべての回転値に関して差分値d0、d90、d180、及びd270から最大差分値を決定する。次に、映像コーディングデバイスの位置再設定ユニットは、最大差分値に対応する回転値だけ残差ブロックを回転させることを決定する。
[0131]差分値のうちの2つ以上が最大差分値に等しい場合は、位置再設定ユニットは、予め決定された順序に従って残差ブロックに適用されるべき回転値を選択することができる。予め決定された順序の一例は、回転させない、180度の回転、90度の回転、及び270度の回転である。この例において、d
0、d
90、及びd
180、がすべて最大差分値に等しい場合は、残差ブロックには回転は適用されない。d
90及びd
180の両方が最大差分値に等しい場合は、残差ブロックには180度の回転値が適用される。その他の例においては、最大値に等しい場合に異なる回転選択順序を使用することができる。以下の表2は、オリジナルの残差ブロックに関する境界タイプの2つの組み合わせ及びその結果得られた残差ブロックに関する回転値を示す。
[0132]一例として、映像コーダの位置再設定ユニットは、TU112の各縁部における境界のタイプに基づいて、TU112の残差映像ブロックを0度、180度、90度だけ反時計回りに回転させるべきかどうかを決定することができる。位置再設定ユニットは、回転値の各々に関してTU112の左縁部及び上縁部におけるPU境界の第1の数を決定し、従って、n0=1、n180=2、n90=2、及びn270=1である。次に、位置再設定ユニットは、回転値の各々に関してTU112の右縁部及び下縁部におけるPU境界の第2の数を決定し、従って、m0=2、n180=1、n90=1、及びn270=2である。
[0133]次に、位置再設定ユニットは、回転値の各々に関してPU境界の第1の数とPU境界の第2の数との間の差分値を計算し、従って、d0=−1、d180=1、d90=1、及びd270=−1である。次に、位置再設定ユニットは、TU112のすべての回転値に関する差分値からの最大差分値がd180及びd90に等しいと決定し、それらは両方とも1に等しい。等しい(tie)場合は、上述される予め決定された順序に従い、180度の回転値が90度よりも優先されて選択される。次に、映像コーディングデバイスの位置再設定ユニットは、残差映像ブロック内の残差データをコーディングする前に、最大差分値を有する回転値、この場合は180度、だけ残差ブロックを回転させることを決定する。
[0134]図5は、映像符号器が残差ブロックの残差データを符号化する前に残差ブロックを回転させるべきかどうかを決定する典型的な動作を例示したフローチャートである。その動作は、図2からの映像符号器20に関して説明される。映像符号器20は、インター予測モードにおいて動き補償ユニット44からの予測ブロックを用いて映像ブロックから残差ブロックを計算する(120)。幾つかの例においては、残差ブロックは、残差ブロックに関して変換及び量子化の両方が常にスキップされる可逆コーディングモードを用いてコーディングすることができる。その他の例においては、残差ブロックは、残差ブロックに関して変換のみがスキップされる変換スキップモードにおいて非可逆コーディングモードを用いてコーディングすることができる。
[0135]変換スキップを用いて残差ブロックをコーディングすることを選択したことに応答して、映像符号器20は、変換処理ユニット52において残差ブロックに関して変換を行うことをスキップする(122)。一例として、映像符号器20は、残差ブロックに関して変換及び量子化が常にスキップされる可逆コーディングモードを用いて残差ブロックがコーディングされるかどうかを示す構文要素、すなわち、cu_transquant_bypass_flag、を符号化することができる。他の例においては、映像符号器20は、非可逆コーディングモードを用いた残差ブロックのコーディング中に、変換のみがスキップされる変換スキップモードが使用されかどうかを示す構文要素、すなわち、tranform_skip_flag、を符号化することができる。
[0136]それらの技法により、残差ブロックに関して変換がスキップされるときには、映像符号器20の位置再設定ユニット66は、残差ブロックの各縁部における境界のタイプを決定する(124)。残差ブロックの特定の縁部における境界のタイプは、残差ブロックの特定の縁部において典型的に存在する残差データのエネルギーのレベルを示す。次に、位置再設定ユニット66は、各縁部における境界のタイプに基づいて残差ブロックを回転させるべきかどうかを決定する(126)。位置再設定ユニット66は、エントロピーコーディング効率を向上させるために平均よりも高いエネルギーを有する残差データを残差ブロックの左上隅に配置するために残差ブロックを回転させることを決定することができる。
[0137]位置再設定ユニット66が残差ブロックを回転させることを決定したときには(128の「はい」分岐)、位置再設定ユニット66は、決定された回転値だけ残差ブロックを回転させる(130)。幾つかの事例においては、図7に関してより詳細に説明されるように、決定された回転値は、静的な、予め決定された回転値、例えば、180度、であることができる。その他の事例においては、図8に関してより詳細に説明されるように、位置再設定ユニット66は、残差ブロックを回転させる回転値を複数の回転値から決定することができる。それらの複数の回転値は、180度、反時計回りの90度又は反時計回りの270度を含むことができる。
[0138]位置再設定ユニット66が残差ブロックを回転させないことを決定したときには(128の「いいえ」分岐)、位置再設定ユニット66は、残差ブロックを回転させない。位置再設定ユニット66が残差ブロックを回転させるかどうかにかかわらず、エントロピー符号化ユニット56は、残差ブロックの残差データを符号化する(132)。幾つかの事例においては、例えば、変換スキップモードにおける非可逆コーディングモードでは、残差ブロックの残差データは、エントロピー符号化ユニット56によるエントロピー符号化の前に量子化ユニット54を用いて量子化することができる。位置再設定ユニット66によって残差ブロックを回転させるべきかどうかを決定する前に量子化ユニット54を用いて残差ブロックの残差データを量子化することも可能である。その他の事例、例えば、可逆コーディングモード、においては、変換及び量子化の両方がスキップされ、さらなる圧縮を行わずにエントロピー符号化ユニット56によって残差ブロックの残差データが直接エントロピー符号化される。
[0139]代替として、残差ブロックの縁部の各々における境界のタイプを決定し及び縁部における境界のタイプに基づいて回転させるべきかどうかを決定する代わりに、位置再設定ユニット66は、残差ブロックをエントロピー符号化するために必要なビット数に基づいて残差ブロックを回転させるべきかどうかを決定することができる。この場合は、位置再設定ユニット66は、1つ以上の回転値を残差ブロックに適用すること、及び、各回転値に関して、回転された残差ブロックに含まれる量子化された残差係数をエントロピー符号化するために必要なビット数を決定することができる。次に、位置再設定ユニット66は、エントロピー符号化のための最小ビット数が結果的に得られることになる回転値に基づいて残差ブロックを回転させるかどうかを決定することができる。
[0140]この代替例においては、エントロピー符号化ユニット56は、残差ブロックを回転させるべきかどうかを示す構文要素を符号化することができる。映像復号器は、回転させるべきかどうか又は残差ブロックに関する回転値を決定するために同一の情報にアクセスすることができない。従って、回転値は、ビットストリーム内において明示でシグナリングする必要がある。2つのみの可能な回転値、すなわち、0度、すなわち回転させない、及び180度、の場合は、回転値をシグナリングするには1つのビットで十分である。エントロピー符号化ユニット56は、コンテキストを用いて又はバイパスモードでビットをCABACコーディングすることができる。4つの可能な回転値、すなわち、0度、180度、反時計回りの90度、又は反時計回りの270度、の場合は、2つのビットを用いて回転値をシグナリングすることができる。エントロピー符号化ユニット56は、コンテキストを用いて又はバイパスモードで2つのビットをCABACコーディングすることができる。
[0141]図6は、映像復号器が残差ブロックの残差データから映像ブロックを再構築する前に残差ブロックを回転させるべきかどうかを決定する典型的な動作を示したフローチャートである。その動作は、図3からの映像復号器30に関して説明される。映像復号器30のエントロピー復号ユニット80は、映像符号器から受信された映像ブロックに関するビットストリームからの残差ブロックの残差データ及び関連する構成要素を復号する(140)。一例として、構成要素、すなわち、cu_transquant_bypass_flag、は、残差ブロックに関して変換及び量子化の両方が常にスキップされる可逆コーディングモードを用いて残差ブロックがコーディングされるかどうかを示す。他の例においては、構成要素、すなわち、transform_skip_flag、は、非可逆コーディングモードを用いた残差ブロックのコーディング中に、変換のみがスキップされる変換スキップモードが使用されるかどうかを示す。
[0142]幾つかの事例、例えば、変換スキップモードにおける非可逆コーディングモードモード、では、残差ブロックの残差データは、残差ブロックを回転させて残差ブロックの残差データから映像ブロックを再構築する前に逆量子化ユニット86を用いて逆量子化される。逆量子化ユニット86を用いて残差ブロックの残差データを逆量子化する前に位置再設定ユニット94によって残差ブロックを回転させるべきかどうかを決定することも可能である。その他の事例、例えば、可逆コーディングモード、では、逆量子化及び逆変換の両方がスキップされ、さらなる伸張を行わずに映像ブロックを直接再構築するために残差ブロックの残差データが使用される。
[0143]映像復号器30は、関連する構成要素によって示される変換スキップに基づいて逆変換処理ユニット88において残差ブロックに関する逆変換を行うことをスキップする(142)。それらの技法により、残差ブロックに関して逆変換がスキップされるときには、映像復号器30の位置再設定ユニット94は、残差ブロックの各縁部における境界のタイプを決定する(144)。次に、位置再設定ユニット94は、各縁部における境界のタイプに基づいて残差ブロックを回転させるべきかどうかを決定する(146)。位置再設定ユニット94は、エントロピーコーディング効率を向上させるために平均よりも高いエネルギーを有する残差データを残差ブロックの左上隅に配置した、符号化中に行われた残差ブロックの回転、を逆転させるために残差ブロックを回転させることを決定することができる。
[0144]位置再設定ユニット94が残差ブロックを回転させることを決定したときには(148の「はい」分岐)、位置再設定ユニット94は、決定された回転値だけ残差ブロックを回転させる(150)。幾つかの事例においては、図7に関してより詳細に説明されるように、決定された回転値は、静的な、予め決定された回転値、例えば、180度、であることができる。その他の事例においては、図8に関してより詳細に説明されるように、位置再設定ユニット94は、残差ブロックを回転させる回転値を複数の回転値から決定することができる。それらの複数の回転値は、例えば、映像符号器が反時計回りの方向に回転を行った場合には、180度、時計回りの90度又は時計回りの270度を含むことができる。
[0145]位置再設定ユニット94が残差ブロックを回転させないことを決定したときには(148の「いいえ」分岐)、位置再設定ユニット94は、残差ブロックを回転させない。位置再設定ユニット94が残差ブロックを回転させるかどうかにかかわらず、映像復号器30は、インター予測モードにおいて動き補償ユニット82からの予測ブロックを用いて残差ブロックから映像ブロックを再構築する(152)。
[0146]代替として、残差ブロックの縁部の各々における境界のタイプを決定し及び縁部における境界のタイプに基づいて回転させるべきかどうかを決定する代わりに、位置再設定ユニット94は、明示でシグナリングされた回転値だけ残差ブロックを回転させるべきかどうかを示す構文要素に基づいて残差ブロックを回転させるべきかどうかを決定することができる。この場合は、映像符号器は、残差ブロックをエントロピー符号化するために必要なビット数に基づいて残差ブロックを回転させるべきかどうかを決定することができる。例えば、映像符号器は、エントロピー符号化のための最小ビット数が結果的に得られることになる回転値に基づいて残差ブロックを回転させるべきかどうかを決定し、その回転値を映像復号器30に明示でシグナリングすることができる。
[0147]この代替例においては、エントロピー復号ユニット80は、残差ブロックを回転させるべきかどうかを示す構文要素を復号することができる。映像復号器30は、回転させるべきかどうか又は残差ブロックに関する回転値を決定するために映像符号器として同一の情報にアクセスすることができない。従って、回転値は、ビットストリーム内において明示でシグナリングする必要がある。2つのみの可能な回転値、すなわち、0度、すなわち回転させない、及び180度、の場合は、回転値をシグナリングするには1つのビットで十分である。エントロピー復号ユニット80は、コンテキストを用いて又はバイパスモードでビットをCABACコーディングすることができる。4つの可能な回転値、すなわち、0度、180度、時計回りの90度、又は時計回りの270度、の場合は、2つのビットを用いて回転値をシグナリングすることができる。エントロピー復号ユニット80は、コンテキストを用いて又はバイパスモードで2つのビットをCABACコーディングすることができる。
[0148]図7は、残差ブロックの縁部における境界のタイプに基づいて予め決定された回転値だけ残差ブロックを回転させるべきかどうかを決定する1つの動作例を示したフローチャートである。例示される動作は、縁部における境界のタイプに基づいて残差ブロックを回転させるべきかどうかを決定する図5からのステップ126及び図6からのステップ146のより詳細な例である。
[0149]例えば、変換スキップモードにおける可逆コーディングモード又は非可逆コーディングモードで、残差ブロックに関して変換がスキップされるときには、平均よりも高いエネルギーを有する残差データを残差ブロックの左上隅に配置するために符号化中に残差ブロックを回転させることによってエントロピーコーディング効率を向上させることができる。復号中には、インター予測モードにおいて予測ブロックを用いて残差ブロックから映像ブロックを適切に再構築するために符号化中に行われた回転を逆転させる必要がある。
[0150]インター予測モードにおいて、残差ブロックの特定の縁部が同じPU内の2つのTU間のTU境界である場合は、残差ブロックのTU境界における残差データは、典型的には、残差ブロック内の平均的残差データよりも低いエネルギーを有する。さらに、残差ブロックの特定の縁部が異なるPUにおける2つのTU間のPU境界である場合は、残差ブロックのPU境界における残差データは、典型的には、残差ブロック内の平均的残差データよりも高いエネルギーを有する。この観測に基づいて、図7において例示される技法は、オリジナルの残差ブロックのPU境界における残差データを回転された残差ブロックの左上隅に配置するために、残差ブロックを予め決定された回転値、例えば、180度、だけ回転させるべきかどうかを決定するために残差ブロックの縁部における境界のタイプを使用する。符号化側では、この回転は、エントロピーコーディング効率を向上させるために平均よりも高いエネルギーを有する残差データを回転された残差ブロックの左上隅に配置する。復号側では、この回転は、符号化中に行われた回転を逆転させ、平均よりも高いエネルギーを有する残差データをオリジナルの残差ブロック内の原位置に戻す。
[0151]図7において例示される動作は、図2からの映像符号器20の位置再設定ユニット66に関して説明される。その他の例においては、図3からの映像復号器30の位置再設定ユニット94によって同じ動作を行うこともできる。例示される動作において、位置再設定ユニット66は、残差ブロックを予め決定された回転値、例えば、180度、だけ回転させるか又は残差ブロックを回転させないことができる。残差ブロックを回転させるべきかどうかを決定するために、位置再設定ユニット66は、残差ブロックの左縁部及び上縁部におけるPU境界の第1の数を決定する(160)。位置再設定ユニット66は、残差ブロックの右縁部及び下縁部におけるPU境界の第2の数も決定する(162)。
[0152]PU境界の第2の数がPU境界の第1の数よりも多い場合は(164の「はい」分岐)、平均よりも高いエネルギーを有する残差データは、残差ブロックの右上隅に集中される可能が高い。この場合は、位置再設定ユニット66は、残差ブロックを予め決定された回転値だけ回転させる(168)。例えば、残差ブロックを180度だけ回転させることは、平均よりも高いエネルギーを有する残差データを回転された残差ブロックの左上隅に配置する。他方、PU境界の第2の数がPU境界の第1の数以下である場合は(164の「いいえ」分岐)、平均より高いエネルギーを有する残差データは、既に残差ブロックの左上隅に集中されている可能性が高い。その場合は、位置再設定ユニット66は、残差ブロックを回転させない(166)
[0153]図8は、残差ブロックを回転させるべきかどうか決定する動作の他の例を示したフローチャートであり、2つ以上の可能な回転値の各々に関して残差ブロックの縁部における境界のタイプに基づいて残差ブロックに関する回転値を決定することを含む。例示される動作は、縁部における境界のタイプに基づいて残差ブロックを回転させるべきかどうかを決定する図5からのステップ126及び図6からのステップ146の他のより詳細な例である。
[0154]例えば、変換スキップモードにおける可逆コーディングモード又は非可逆コーディングモードで、残差ブロックに関して変換がスキップされるときには、平均よりも高いエネルギーを有する残差データを残差ブロックの左上隅に配置するために符号化中に残差ブロックを回転させることによってエントロピーコーディング効率を向上させることができる。復号中には、インター予測モードにおいて予測ブロックを用いて残差ブロックから映像ブロックを適切に再構築するために符号化中に行われた回転を逆転させる必要がある。
[0155]インター予測モードにおいて、残差ブロックの特定の縁部が同じPU内の2つのTU間のTU境界である場合は、残差ブロックのTU境界における残差データは、典型的には、残差ブロック内の平均的残差データよりも低いエネルギーを有する。さらに、残差ブロックの特定の縁部が異なるPUにおける2つのTU間のPU境界である場合は、残差ブロックのPU境界における残差データは、典型的には、残差ブロック内の平均的残差データよりも高いエネルギーを有する。この観測に基づいて、図8において例示される技法は、オリジナルの残差ブロックのPU境界における残差データを回転された残差ブロックの左上隅に配置するために残差ブロックを予め決定された回転値、例えば、0度、180度、90度、又は270度、だけ回転させる回転値を決定するために残差ブロックの縁部における境界のタイプを使用する。符号化側では、この回転は、エントロピーコーディング効率を向上させるために平均よりも高いエネルギーを有する残差データを回転された残差ブロックの左上隅に配置する。復号側では、この回転は、符号化中に行われた回転を逆転させ、平均よりも高いエネルギーを有する残差データをオリジナルの残差ブロック内の原位置に戻す。
[0156]図8において例示される動作は、図2からの映像符号器20の位置再設定ユニット66に関して説明される。その他の例においては、図3からの映像復号器30の位置再設定ユニット94によって同じ動作を行うこともできる。例示される動作において、位置再設定ユニット66は、複数の回転値から選択された回転値だけ残差ブロックを回転させることができる。幾つかの事例においては、回転値は、0度、すなわち回転させない、及び180度を含むことができる。その他の事例においては、回転値は、0度、180度、90度及び270度を含むことができる。一例として、符号化側では、回転値は、反時計回りの方向であることができ、復号側では、回転値は、時計回りの方向であることができる。
[0157]残差ブロックを回転させるべき回転値を決定するために、位置再設定ユニット66は、回転値の各々に関して残差ブロックの左縁部及び上縁部におけるPU境界の第1の数を決定する(170)。位置再設定ユニット66は、回転値の各々に関して残差ブロックの右縁部及び下縁部におけるPU境界の第2の数も決定する(172)。従って、位置再設定ユニット66は、残差ブロックの可能な回転の各々を行い、及び、それらの回転の各々におけるPU境界の位置及び数を決定する。
[0158]位置再設定ユニット66は、回転値の各々に関して第1の数と第2の数との間の差分値を計算する(174)。このようにして、位置再設定ユニット66は、平均よりも高いエネルギーを有する残差データが、各々の回転が行われた後に残差ブロック内のどこに集中されている可能性が高いかを決定する。次に、位置再設定ユニット66は、すべての回転値に関して計算された差分値から最大差分値を決定する(176)。平均よりも高いエネルギーを有する残差データが残差ブロックの左上隅に集中するのを最大にするために、回転ユニット66は、最大差分値に関連する回転値のうちの1つを選択する。次に、位置再設定ユニット94は、最大差分値を有する回転値だけ残差ブロックを回転させる(178)。
[0159]図9は、残差ブロックに変換が適用されないときに回転を行うことができる残差ブロックのブロックサイズを制限する動作例を示したフローチャートである。図9の例示される動作は、図2からの映像符号器20の位置再設定ユニット66に関して説明される。その他の例においては、図3からの映像復号器30の位置再設定ユニット94によって同じ動作を行うこともできる。例示される動作は、非可逆コーディングモード及び可逆コーディングモードの両方においてイントラ予測残差ブロック及びインター予測残差ブロックの両方に対して適用することができる。
[0160]上述される技法は、残差ブロックに関して変換がスキップ又は迂回されるときに残差ブロックを決定された回転値だけ回転させることを含む。上記の技法は、変換スキップモードが使用される非可逆コーディングモードコーディングモード又は変換プロセス及び量子化プロセスの両方が迂回される可逆コーディングモードのいずれかを用いてコーディングされるインター予測残差ブロック及びイントラ予測残差ブロックの両方に関して回転を行うことが説明される。
[0161]非可逆コーディングモードでは、すべての残差ブロックサイズに対して変換スキップモードを適用することができる。可逆コーディングモードでは、すべての残差ブロックサイズに関して変換が迂回される。従って、イントラ予測モード及びインター予測モードの両方においてすべてのブロックサイズに関して回転を行うことができる。しかしながら、大きいサイズの残差ブロック、例えば、16×16又は32×32ブロック、に関して回転を行うことは、ハードウェア実装に関しては困難になることがある。本開示の技法により、変換が適用されない残差ブロックに関して残差データを回転させることは、スレショルドのサイズ以下である残差ブロックサイズに制限することができる。従って、残差ブロックを回転させるべきかどうか決定することは、可逆コーディングモードを示すcu_transquant_bypass_flag、非可逆コーディングモードにおける変換スキップモードを示す変換スキップフラグ、及び残差ブロックのサイズに依存することができる。
[0162]図9において例示される動作では、位置再設定ユニット66は、残差ブロックに変換が適用されない、すなわち、変換スキップモードにおいて可逆コーディングモード又は非可逆コーディングモードを用いて残差ブロックがコーディングされる、ときに残差ブロックを受信する。本開示の技法は、非可逆コーディングモード及び可逆コーディングモードの両方において回転を行うことができる残差ブロックのサイズを制限することを含む。
[0163]この場合は、残差ブロックを回転させるべきかどうかを決定するために、位置再設定ユニット66は、変換が適用されない残差ブロックのサイズを決定する(180)。残差ブロックのサイズがスレショルドのブロックサイズ以下である場合は(182の「はい」分岐)、位置再設定ユニット66は、残差ブロックを決定された回転値だけ回転させるべきかどうかを決定する(186)。残差ブロックのサイズがスレショルドのサイズよりも大きい場合は(182の「いいえ」分岐)、位置再設定ユニット66は、回転をディスエーブルにし、残差ブロックを回転させない(184)。回転の決定は、上においてさらに詳細に説明される動作のうちの1つによって行うことができる。幾つかの例においては、残差ブロックがイントラ予測残差ブロックである場合は、回転は、残差ブロックのブロックサイズがスレショルドブロックサイズ判定基準を満たすときに常に適用される。幾つかの事例においては、残差ブロックの回転は、180度に制限することができる。その他の事例においては、残差ブロックの回転は、上述される技法により0度、90度、180度又は270度のうちの1つとして決定することができる。その他の例においては、残差ブロックがインター予測残差ブロック又はイントラブロックコピーイング(BC)予測残差モードである場合は、回転をディスエーブルにすることができる。
[0164]一例においては、非可逆コーディングモード及び可逆コーディングモードの両方において残差ブロックの回転を行うためのスレショルドのサイズは、8×8である。その他の例においては、スレショルドのサイズは、4×4に等しいことができる。幾つかの事例においては、回転は、非可逆コーディングモード又は可逆コーディングモードにおいてスレショルドブロックサイズ判定基準を満たすイントラ予測残差ブロックにしか適用することができず、インター予測残差ブロックに関してはブロックサイズにかかわらず回転をディスエーブルにすることができる。幾つかの事例においては、回転は、ブロックサイズにかかわらずイントラBC予測残差ブロックに関してもディスエーブルにすることができる。その他の事例においては、回転は、非可逆コーディングモード又は可逆コーディングモードにおいてスレショルドブロックサイズ判定基準を満たすイントラ予測残差ブロック及びインター予測残差ブロックの両方に対して適用することができる(すなわち、残差ブロックサイズがスレショルドのブロックサイズ以下である)。他の事例においては、回転は、変換スキップを用いる非可逆コーディングモードにおいてスレショルドブロックサイズ判定基準を満たすイントラ予測残差ブロックのみに対して、及び、可逆コーディングモードにおいてスレショルドブロックサイズ判定基準を満たすイントラ予測残差ブロック及びインター予測残差ブロックの両方に対して適用することができる。
[0165]他の例においては、変換スキップモードは、最大ブロックサイズまでのサイズ、例えば、4×4又は8×8、を有する非可逆コーディングモードにおける残差ブロックのみに適用されるように制限することができる。非可逆コーディングモードにおいて変換をスキップすることが許容される最大ブロックサイズは、残差ブロックに関連するSPS及びPPSのうちの1つにおいて示すことができる。この場合は、非可逆コーディングモード及び可逆コーディングモードの両方において残差ブロックの回転を行うためのスレショルドサイズは、非可逆コーディングモードにおいて変換をスキップすることができる最大ブロックサイズ以下、例えば、4×4又は8×8、である。非可逆コーディングモードにおいて変換をスキップすることができる最大ブロックサイズ以下になるようにスレショルドのブロックサイズを設定することは、可逆コーディングモード事例及び非可逆コーディングモード事例の両方に関して回転を行うことができるブロックサイズを整合させる。
[0166]幾つかの事例においては、回転は、非可逆コーディングモード又は可逆コーディングモードのいずれかにおいてスレショルドブロックサイズ判定基準を満たすイントラ予測残差ブロックにしか適用することができず、インター予測残差ブロックに関してはブロックサイズにかかわらず回転をディスエーブルにすることができる。幾つかの事例においては、イントラBC予測残差ブロックに関してもブロックサイズにかかわらず回転をディスエーブルにすることができる。その他の事例においては、回転は、非可逆コーディングモード又は可逆コーディングモードのいずれかにおいてスレショルドブロックサイズ判定基準を満たすイントラ予測残差ブロック及びインター予測残差ブロックの両方に対して適用することができる。他の事例においては、回転は、変換スキップを用いる非可逆コーディングモードにおいてスレショルドブロックサイズ判定基準を満たすイントラ予測残差ブロックのみに対して、及び、可逆コーディングモードにおいてスレショルドブロックサイズ判定基準を満たすイントラ予測残差ブロック及びインター予測残差ブロックの両方に対して適用することができる。
[0167]図10は、残差ブロックに変換が適用されないときに対角線に沿った残差データサンプル値のフリップを行うことができる残差ブロックのブロックサイズを制限する動作例を示したフローチャートである。図10において例示される動作は、図2からの映像符号器20の位置再設定ユニット66に関して説明される。その他の例においては、図3からの映像復号器30の位置再設定ユニット94によっても同じ動作を行うことができる。例示される動作は、非可逆コーディングモード及び可逆コーディングモードの両方におけるイントラ予測残差ブロック及びインター予測残差ブロックの両方に対して適用することができる。
[0168]残差ブロックの回転に適用される上記の技法は、残差ブロックの残差データサンプル値をフリップさせることに対しても適用することができる。上述されるように、JCTVC−K0294では、使用中の走査に依存して、残差ブロックに関して変換がスキップされるときに残差ブロックの主対角線又は副対角線に沿ってイントラ予測残差ブロックのサンプル値をフリップさせることができる。図9に関して上述されるように、残差ブロックに関して回転を適用することができる判定基準は、予測残差値のフリップをいつ行うことができるかを決定することにも適用することができる。
[0169]残差ブロックの残差データサンプル値がフリップされるときには、対角線の一方の側におけるサンプル値は、残差ブロックの対角線の他方の側における対応するミラー画像位置におけるサンプル値と場所をスワップする。幾つかの例においては、残差ブロックのサンプル値をフリップさせることは、残差ブロックの主対角線、すなわち、残差ブロックの左上隅から右下隅への対角線、を横切ってサンプル値をミラーリング(mirroring)することを含むことができる。その他の例においては、残差ブロックのサンプル値をフリップさせることは、残差ブロックの副対角線、すなわち、残差ブロックの左下隅から右上隅への対角線、を横切ってサンプル値をミラーリングすることを含むことができる。幾つかの事例においては、残差ブロックのサンプル値は、変換がスキップされた残差ブロックに関して水平又は垂直な走査モードが選択されたときに主対角線に関してフリップされる。その他の事例においては、残差ブロックのサンプル値は、変換がスキップされた残差ブロックに関して対角線走査モードが選択されたときに副対角線に関してフリップされる。
[0170]非可逆コーディングモードでは、すべての残差ブロックサイズに対して変換スキップを適用することができる。可逆コーディングモードでは、すべての残差ブロックサイズに関して変換が迂回される。従って、フリップさせることは、イントラ予測モード及びインター予測モードの両方においてすべての残差ブロックサイズに関して行うことができる。本開示の技法により、変換が適用されない残差ブロックの残差データをフリップさせることは、スレショルドのサイズ以下である残差ブロックサイズに制限することができる。従って、残差ブロックをフリップさせるべきかどうかを決定することは、可逆コーディングモードを示すcu_transquant_bypass_flag、非可逆コーディングモードにおける変換スキップモードを示す変換スキップフラグ、及び残差ブロックのサイズに依存することができる。
[0171]図10において例示される動作では、位置再設定ユニット66は、残差ブロックに関して変換がスキップされる、すなわち、残差ブロックが変換スキップモードにおいて可逆コーディングモード又は非可逆コーディングモードを用いてコーディングされる、ときに残差ブロックを受信する。本開示の技法は、非可逆コーディングモード及び可逆コーディングモードの両方においてフリップを行うことができる残差ブロックのサイズを制限することを含む。
[0172]この場合は、残差ブロックをフリップさせるべきかどうかを決定するために、位置再設定ユニット66は、変換が適用されない残差ブロックのサイズを決定する(190)。残差ブロックのサイズがスレショルドのブロックサイズ以下である場合は(192の「はい」分岐)、位置再設定ユニット66は、残差ブロックの対角線に沿って残差データサンプル値をフリップさせるべきかどうかを決定する(196)。残差ブロックのサイズがスレショルドのサイズよりも大きい場合は(192の「いいえ」分岐)、位置再設定ユニット66は、フリップすることをディスエーブルにし、残差ブロックの残差データサンプル値をフリップさせない(194)。残差データサンプル値は、残差ブロックの主対角線に沿って、すなわち、左上から右下に、又は副対角線に沿って、すなわち、左下から右上に、フリップさせることができる。
[0173]一例においては、非可逆コーディングモード及び可逆コーディングモードの両方において残差ブロックの残差データをフリップさせるためのスレショルドのサイズは、8×8である。その他の例においては、スレショルドのサイズは、4×4に等しいことができる。幾つかの事例においては、フリップさせることは、非可逆コーディングモード又は可逆コーディングモードにおいてスレショルドブロックサイズ判定基準を満たすイントラ予測残差ブロックにしか適用することができず、インター予測残差ブロックに関してはブロックサイズにかかわらず回転をディスエーブルにすることができる。幾つかの事例においては、フリップさせることは、ブロックサイズにかかわらずイントラBC予測残差ブロックに関してもディスエーブルにすることができる。その他の事例においては、フリップさせることは、非可逆コーディングモード又は可逆コーディングモードにおいてスレショルドブロックサイズ判定基準を満たすイントラ予測残差ブロック及びインター予測残差ブロックの両方に対して適用することができる(すなわち、残差ブロックサイズがスレショルドのブロックサイズ以下である)。他の事例においては、フリップさせることは、変換スキップを用いる非可逆コーディングモードにおいてスレショルドブロックサイズ判定基準を満たすイントラ予測残差ブロックのみに対して、及び、可逆コーディングモードにおいてスレショルドブロックサイズ判定基準を満たすイントラ予測残差ブロック及びインター予測残差ブロックの両方に対して適用することができる。
[0174]他の例においては、変換スキップモードは、最大ブロックサイズまでのサイズ、例えば、4×4又は8×8、を有する非可逆コーディングモードにおける残差ブロックのみに適用されるように制限することができる。非可逆コーディングモードにおいて変換をスキップすることが許容される最大ブロックサイズは、残差ブロックに関連するSPS及びPPSのうちの1つにおいて示すことができる。この場合は、非可逆コーディングモード及び可逆コーディングモードの両方において残差ブロックの残差データをフリップさせるためのスレショルドのサイズは、非可逆コーディングモードにおいて変換をスキップすることができる最大ブロックサイズ以下、例えば、4×4又は8×8、である。非可逆コーディングモードにおいて変換をスキップすることができる最大ブロックサイズ以下になるようにスレショルドのブロックサイズを設定することは、可逆コーディングモード事例及び非可逆コーディングモード事例の両方に関してフリップを行うことができるブロックサイズを整合させる。
[0175]幾つかの事例においては、フリップさせることは、非可逆コーディングモード又は可逆コーディングモードのいずれかにおいてスレショルドブロックサイズ判定基準を満たすイントラ予測残差ブロックにしか適用することができず、インター予測残差ブロックに関してはブロックサイズにかかわらず回転をディスエーブルにすることができる。幾つかの事例においては、イントラBC予測残差ブロックに関してもブロックサイズにかかわらずフリップさせることをディスエーブルにすることができる。その他の事例においては、フリップさせることは、非可逆コーディングモード又は可逆コーディングモードのいずれかにおいてスレショルドブロックサイズ判定基準を満たすイントラ予測残差ブロック及びインター予測残差ブロックの両方に対して適用することができる。他の事例においては、フリップさせることは、変換スキップを用いる非可逆コーディングモードにおいてスレショルドブロックサイズ判定基準を満たすイントラ予測残差ブロックのみに対して、及び、可逆コーディングモードにおいてスレショルドブロックサイズ判定基準を満たすイントラ予測残差ブロック及びインター予測残差ブロックの両方に対して適用することができる。
[0176]図11A及び11Bは、残差差分パルス符号変調(RDPCM)を用いてコーディングされた映像ブロック200及び202をそれぞれ例示した概念図である。一例においては、映像コーディング規格によって、水平方向又は垂直方向において残差差分パルス符号変調(RDPCM)を用いる変換スキップイントラ予測ブロック及び変換スキップインター予測ブロックをサポートすることができる。RDPCMに関する基本的な考え方は、垂直モードにおいて現在のピクセルを予測するために上行(upper row)のピクセルを使用することによって残差ブロックの残差データを予測し、水平モードにおいて現在のピクセルを予測するために左列(left column)のピクセルを使用するためにDPCM技法を適用することである。残差ブロック200及び202の各々は、サイズM(行)×N(列)であり、残差データピクセルを含み、ここで、0≦i≦(M−1)及び0≦j≦(N−1)である。
[0177]RDPCMを用いて非可逆コーディングモードにおいて残差ブロックを復号するときには、図3からの映像復号器30では次の動作順序に従うことができる。すなわち、位置再設定ユニット94による回転又はフリップ、逆量子化ユニット86による逆量子化、逆変換スキップ、及び逆RDPCM。RDPCMを用いて非可逆コーディングモードにおいて残差ブロックを符号化するときには、図2からの映像復号器20では次の動作順序に従うことができる。すなわち、RDPCM、変換スキップ、量子化ユニット54による量子化、及び位置再設定ユニット66による回転又はフリップ。RDPCMを用いて可逆コーディングモードにおいて残差ブロックを復号するときには、図3からの映像復号器30では次の動作順序に従うことができる。すなわち、位置再設定ユニット94による回転又はフリップ、逆量子化及び逆変換の迂回、及び逆RDPCM。RDPCMを用いて可逆コーディングモードにおいて残差ブロックを符号化するときには、図2からの映像復号器20では次の動作順序に従うことができる。すなわち、RDPCM、変換及び量子化の迂回、及び位置再設定ユニット66による回転又はフリップ。
[0178]図11Aは、残差ブロック200に適用された垂直インターRDPCMモードを例示する。垂直インターRDPCMモードでは、残差ブロック200の第1の行201内の残差データは不変であり(すなわち、あらゆるその他の行から予測されない)、他方、残差ブロック200の残差データの以後の行は、上方の行から予測される。垂直インターRDPCM後は、第1の行201内の残差データは、残差ブロック200内の残差データのその他の行と比較してより多い又はより高いエネルギーを有する傾向がある。垂直インターRDPCM後に残差ブロック200が例えば180度だけ回転される場合は、残差ブロック200の残差データの最下部の行は、残差データのその他の行よりも多い又は高いエネルギー/大きさを有する傾向がある。
[0179]図11Bは、残差ブロック202に適用された水平インターRDPCMモードを例示する。水平インターRDPCMモードでは、残差ブロック202の左端の列203内の残差データは不変であり(すなわち、あらゆるその他の列から予測されない)、他方、残差ブロック202の残差データの以後の列は、左の列から予測される。水平インターRDPCM後は、左端の列203内の残差データは、残差ブロック202内の残差データのその他の列と比較してより多い又はより高いエネルギーを有する傾向がある。水平インターRDPCM後に残差ブロック202が例えば180度だけ回転される場合は、残差ブロック202の残差データの右端の行は、残差データのその他の行よりも多い又は高いエネルギー/大きさを有する傾向がある。
[0180]インターRDPCMに関して、予測方向(RDPCMなし、水平、垂直)は、明示で映像復号器30にシグナリングすることができる。例えば、映像符号器20は、映像データの特定のブロック(又は複数のブロック)に関してRDPCMを示す1つ以上の構文要素を符号化されたビットストリームにおいて含むことができる。映像復号器30は、それらの1つ以上の構成要素を受信し、RDPCMを相互に行うことができる。
[0181]上述されるように、HEVCでは、エントロピーコーディングは、変換コーディング用に設計されている。典型的には、より小さい周波数変換係数がより高いエネルギーを有する。変換係数は、映像ブロックの右下から左上に向かって走査されてエントロピーコーディングされる。従って、映像符号器又は映像復号器は、映像ブロックの右下隅での走査における最初の係数が走査順序で後の係数よりも小さいエネルギーを有すると予想する。しかしながら、インターRDPCMブロックが回転された後は、映像ブロックの右下隅での走査における最初の係数は、走査順序で後の係数よりも多くの又は高いエネルギーを有する傾向があり、その結果、コーディング性能が悪化することになる(すなわち、映像コーディングのためにより多くのビットが必要になる)。
[0182]本開示の技法は、インターRDPCM残差ブロックに関する残差データの位置再設定を選択的にディスエーブルにする(すなわち、適用しない)ことを含む。より具体的には、水平方向又は垂直方向におけるRDPCMを用いたインター予測モード及びイントラ予測モードのいずれの残差ブロックに関しても、その残差ブロックは、残差ブロックの残差データをコーディングする前に回転させることはできない。幾つかの例においては、幾つかの予測モードに関して、残差データをコーディングする前に回転をディスエーブルにする、すなわち、残差ブロックを回転させない技法は、変換スキップを用いた非可逆コーディングモードのみ、可逆コーディングモードのみ、又は、変換スキップを用いた非可逆コーディングモード及び可逆コーディングモードの両方、に対して適用することができる。
[0183]図12は、イントラブロックコピーイング(イントラBC)予測モードを用いて同じピクチャ210内の前にコーディングされたブロックに基づいて予測中である現在のブロック212を含む現在のピクチャ210を示した概念図である。一例においては、映像コーディング規格は、予測モードのうちの1つとしてイントラBC予測モードを含むことができる。幾つかの用途、例えば、リモートデスクトップ、リモートゲーム、ワイヤレスディスプレイ、自動車インフォテインメント、クラウドコンピューティング、等、における映像コンテンツは、典型的には、ナチュラルコンテンツ(natural content)及びスクリーンコンテンツの組み合わせを含み、ここで、スクリーンコンテンツは、例えば、テキスト及び人工的グラフィックスを含むことができる。スクリーンコンテンツ領域では、繰り返されたパターン(例えば、キャラクタ、アイコン、シンボル、等)がしばしば存在する。イントラBC予測モードは、この種の冗長性を除去してスクリーンコンテンツに関するイントラ予測コーディング効率を向上させる専用技法である。
[0184]図12において例示されるように、イントラBC予測モードを用いる現在の映像ブロック212の場合は、現在のピクチャ210の再構築された領域213内の前にコーディングされた映像ブロック214から予測信号が入手される。オフセット又は変位ベクトル(すなわち、動きベクトル)216は、現在の映像ブロック212において予測されるべきサンプルの位置から変位された前にコーディングされた映像ブロック214内での予測信号の位置を示す。一例として、映像符号器20は、動きベクトル216を、現在の映像ブロック212と映像ブロック214の予測信号との間の差分として残差信号とともに符号化することができる。次に、映像復号器30は、動きベクトル216及び映像符号器20から受信された残差信号に基づいて現在の映像ブロック212を符号化することができる。
[0185]幾つかの例においては、イントラBC予測モードを用いてコーディングされるブロックに対してインターRDPCMを適用することができる。インターRDPCMの場合と同じように、映像符号器20又は映像復号器30は、RDPCM−オフ、RDPCM−水平及びRDPCM−垂直を含む3つのモードを用いてイントラBC予測ブロックから残差データを予測することができる。この拡張は、可逆事例及び非可逆事例の両方に関して適用することができる。
[0186]本開示の技法は、イントラBC予測モードにおいて残差ブロックの残差データの位置再設定を選択的にディスエーブルにする(すなわち、適用しない)ことを含む。さらに、水平方向又は垂直方向においてRDPCMを用いるインター予測モード、イントラ予測モード又はイントラBC予測モードのうちのいずれかにおける残差ブロックに関しては、その残差ブロックは、残差ブロックの残差データをコーディングする前に回転させることはできない。
[0187]幾つかの例においては、幾つかの予測モードに関する位置再設定をディスエーブルにする技法は、変換スキップを用いた非可逆コーディングのみ、可逆コーディングのみ、又は、変換スキップを用いた非可逆コーディング及び可逆コーディングの両方に対して適用することができる。他の例においては、位置再設定は、すべてのインター予測モードブロック及びすべてのイントラBC予測モードブロックに関してディスエーブルにする(すなわち、適用しない)ことができる。この判定基準は、位置再設定を適用することができるかどうかを決定するためにコーディングが変換スキップを用いた非可逆又は可逆のいずれであるかに関するその他の判定基準と組み合わせることができる。
[0188]本開示は、概して、変換がスキップ又は迂回される可逆コーディングモード又は非可逆コーディングモードのいずれかにおいて予測残差ブロックの残差データをコーディングするための技法について説明する。本開示の技法により、映像符号器20又は映像復号器30は、残差ブロックの予測モード、例えば、イントラ予測モード、インター予測モード、又はイントラブロックコピーイング予測モード、及び残差ブロックのサイズに基づいて残差ブロックの残差データの位置を再設定するべきかどうかを決定する。幾つかの例においては、それらの技法は、インター予測モード及びイントラBC予測モードにおけるすべての残差ブロックに関する残差データの位置再設定をディスエーブルにする。その他の例においては、上述されるように、それらの技法は、残差ブロックが非可逆コーディングモード及び可逆コーディングモードの両方に関してスレショルドのサイズ以下であるブロックサイズを有するときにイントラ予測モードにおいて残差ブロックの位置を再設定することを決定する。
[189]図13は、変換が適用されない残差ブロックの予測モード及び残差ブロックのサイズに基づいてその残差ブロックの残差データの位置を再設定すべきかどうかを決定する動作例を示したフローチャートである。図13において例示される動作は、図2からの映像符号器20の位置再設定ユニット66に関して説明される。その他の例においては、図3からの映像復号器30の位置再設定ユニット94によっても同じ動作を行うことができる。例示される動作は、非可逆コーディングモード及び可逆コーディングモードの両方におけるすべての残差ブロックに適用することができる。
[0190]上述される技法は、残差ブロックに変換が適用されないときに残差ブロックを決定された回転値だけ回転させること又は残差ブロックの対角線に沿って残差データをフリップさせることを含む。上記の技法は、変換スキップモードにおける非可逆コーディングモード又は変換プロセス及び量子化プロセスの両方が迂回される可逆コーディングモードのいずれかを用いてコーディングされるインター予測残差ブロック及びイントラ予測残差ブロックの両方に関して残差データの位置を再設定することについて説明する。
[0191]映像コーディング規格例、例えば、HEVCVのレンジ拡張、により、非可逆コーディングモードにおいて、変換スキップモードは、あらゆるサイズの残差ブロックに対して適用することができる。可逆コーディングモードにおいては、すべての残差ブロックに関して変換手順及び量子化手順が迂回される。従って、非可逆コーディングモード及び可逆コーディングモードの両方において、すべてのブロックサイズに関して変換をスキップ又は迂回することができる。位置再設定、例えば、回転又はフリップ、は、イントラ予測モード及びインター予測モードの両方においてすべての残差ブロックサイズに関して行うことができる。幾つかの例においては、非可逆コーディングモードでは、変換スキップモードは、最大ブロックサイズまでのサイズを有する残差ブロック、例えば、4×4又は8×8、のみに適用されるように制限することができる。非可逆コーディングモードにおいて変換がスキップされることが許容される最大ブロックサイズは、残差ブロックに関連するSPS及びPPSのうちの1つにおいて示すことができる。
[0192]図13において例示される動作では、位置再設定ユニット66は、残差ブロックに変換が適用されない、すなわち、変換スキップモードにおいて可逆コーディングモード又は非可逆コーディングモードを用いて残差ブロックがコーディングされる、ときに残差ブロックを受信する。本開示の技法は、非可逆コーディングモード及び可逆コーディングモードの両方において位置再設定を行うことができる残差ブロックのサイズを制限することができる。
[0193]この場合は、残差ブロックの位置を再設定すべきかどうかを決定するために、位置再設定ユニット66は、変換が適用されない残差ブロックの予測モードを決定する(220)。残差ブロックがインター予測モードである場合は(222の「はい」分岐)、位置再設定ユニット66は、位置再設定プロセスをディスエーブルにし、残差ブロックの残差データを回転もフリップもさせない(232)。残差ブロックがインター予測モードでなく(222の「いいえ」分岐)、残差ブロックがイントラBC予測モード(224の「はい」分岐)である場合は、位置再設定ユニット66は、位置再設定プロセスをディスエーブルにし、残差ブロックの残差データを回転もフリップもさせない(232)。
[0194]残差ブロックがイントラBC予測モードでなく(224の「いいえ」分岐)、残差ブロックがイントラ予測モードである(226の「はい」分岐)場合は、位置再設定ユニット66は、可逆コーディングモードにおいて残差ブロックのサイズを決定する(228)。残差ブロックのサイズがスレショルドのブロックサイズ以下である場合は(230の「はい」分岐)、位置再設定ユニット66は、残差ブロックの位置を再設定する、すなわち、回転又はフリップさせるべきかどうかを決定する。残差ブロックのサイズがスレショルドサイズよりも大きい場合は(230の「いいえ」分岐)、位置再設定ユニット66は、位置再設定プロセスをディスエーブルにし、残差ブロックの残差データを回転もフリップもさせない(232)。残差ブロックがイントラ予測モードではない場合は(226の「いいえ」分岐)、位置再設定ユニット66は、位置再設定プロセスをディスエーブルにし、残差ブロックの残差データを回転もフリップもさせない(232)。その他の例において、いずれかの予測モードにおける残差ブロックがRDPCMを使用する場合は、位置再設定ユニット66は、位置再設定プロセスをディスエーブルにし、残差ブロックの残差データを回転もフリップもさせない。
[0195]一例においては、残差ブロックの位置再設定を行うべきかどうかを決定するための動作230で使用されるスレショルドのサイズは、8×8である。他の例においては、スレショルドのサイズは、4×4に等しい。さらなる例においては、変換スキップモードは、最大ブロックサイズまでのサイズ、例えば、4×4又は8×8、を有する非可逆コーディングモードにおける残差ブロックのみに対して適用するように制限することができる。非可逆コーディングモードにおいて変換をスキップすることが許容される最大ブロックサイズは、残差ブロックに関連するSPS及びPPSのうちの1つにおいて示すことができる。この場合は、非可逆コーディングモード及び可逆コーディングモードの両方において残差ブロックの位置の再設定を行うべきかどうかを決定するためのスレショルドのサイズは、非可逆コーディングモードにおいて変換をスキップすることができる最大ブロックサイズ、以下である、例えば、4×4又は8×8。非可逆コーディングモードにおいて変換をスキップすることができる最大ブロックサイズ以下にスレショルドのブロックサイズを設定することは、可逆コーディングモード事例及び非可逆コーディングモード事例の両方に関して回転を行うことができるブロックサイズを整合させる。
[0196]回転プロセスの場合は、位置再設定の決定は、上において図5乃至8に関してより詳細に説明される動作のうちの1つによって行うことができる。幾つかの例においては、残差ブロックがイントラ予測残差ブロックである場合は、残差ブロックのブロックサイズがスレショルドブロックサイズ判定基準を満たすときに常に回転を適用することができる。幾つかの事例においては、残差ブロックの回転は、180度に制限することができる。その他の事例においては、残差ブロックがスレショルドブロックサイズ判定基準を満たすイントラ予測残差ブロックであるときには、残差ブロックの回転は、上述される技法により0度、90度、180度又は270度のうちの1つに決定することができる。
[0197]1つ以上の例においては、説明される機能は、ハードウェア、ソフトウェア、ファームウェア、又はそれらのあらゆる組み合わせにおいて実装することができる。ソフトウェアにおいて実装される場合は、それらの機能は、コンピュータによって読み取り可能な媒体において1つ以上の命令又はコードとして格納又は送信すること及びハードウェアに基づく処理ユニットによって実行することができる。コンピュータによって読み取り可能な媒体は、コンピュータによって読み取り可能な記憶媒体を含むことができ、それは、有形な媒体、例えば、データ記憶媒体、又は、例えば、通信プロトコルにより、1つの場所から他へのコンピュータプログラムの転送を容易にするあらゆる媒体を含む通信媒体、に対応する。このように、コンピュータによって読み取り可能な媒体は、概して、(1)非一時的である有形なコンピュータによって読み取り可能な記憶媒体又は(2)通信媒体、例えば、信号又は搬送波、に対応することができる。データ記憶媒体は、本開示において説明される技法の実装のために命令、コード及び/又はデータ構造を取り出すために1つ以上のコンピュータ又は1つ以上のプロセッサによってアクセスすることができるあらゆる利用可能な媒体であることができる。コンピュータプログラム製品は、コンピュータによって読み取り可能な媒体を含むことができる。
[0198]一例により、及び制限することなしに、該コンピュータによって読み取り可能な記憶媒体は、希望されるプログラムコードを命令又はデータ構造の形態で格納するために使用することができ及びコンピュータによってアクセス可能であるRAM、ROM、EEPROM、CD−ROM又はその他の光学ディスク記憶装置、磁気ディスク記憶装置、又はその他の磁気記憶デバイス、フラッシュメモリ、又はその他のいずれかの媒体を備えることができる。さらに、どのような接続も、コンピュータによって読み取り可能な媒体であると適切に呼ばれる。例えば、命令が、同軸ケーブル、光ファイバケーブル、より対線、デジタル加入者ライン(DSL)、又は無線技術、例えば、赤外線、無線、及びマイクロ波、を用いてウェブサイト、サーバ、又はその他の遠隔ソースから送信される場合は、該同軸ケーブル、光ファイバケーブル、より対線、DSL、又は無線技術、例えば赤外線、無線、及びマイクロ波、は、媒体の定義の中に含まれる。しかしながら、コンピュータによって読み取り可能な記憶媒体およびデータ記憶媒体は、コネクション、搬送波、信号、又はその他の遷移媒体は含まず、代わりに、非一時的な、有形の記憶媒体を対象とすることが理解されるべきである。ここにおいて用いられるときのディスク(disk及びdisc)は、コンパクトディスク(CD)(disc)と、レーザディスク(disc)と、光ディスク(disc)と、デジタルバーサタイルディスク(DVD)(disc)と、フロッピー(登録商標)ディスク(disk)と、Blu−ray(登録商標)ディスク(disc)と、を含み、ここで、diskは、通常は磁気的にデータを複製し、discは、レーザを用いて光学的にデータを複製する。上記の組み合わせも、コンピュータによって読み取り可能な媒体の適用範囲内に含められるべきである。
[0199]命令は、1つ以上のプロセッサ、例えば、1つ以上のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルロジックアレイ(FPGA)、又はその他の同等の集積又はディスクリート論理回路によって実行することができる。従って、ここにおいて用いられる場合の用語“プロセッサ”は、上記の構造又はここにおいて説明される技法の実装に適するあらゆるその他の構造のうちのいずれかを意味することができる。さらに、幾つかの態様では、ここにおいて説明される機能は、符号化および復号のために構成された専用のハードウェア及び/又はソフトウェアモジュール内において提供されること、又は組み合わされたコーデック内に組み入れることができる。さらに、技法は、1つ以上の回路又は論理素子内に完全に実装することが可能である。
[0200]本開示の技法は、無線ハンドセット、集積回路(IC)又は一組のIC(例えば、チップセット)を含む非常に様々なデバイス又は装置内に実装することができる。本開示では、開示される技法を実施するように構成されたデバイスの機能上の態様を強調するために様々なコンポーネント、モジュール、又はユニットが説明されるが、異なるハードウェアユニットによる実現は必ずしも要求しない。むしろ、上述されるように、様々なユニットは、適切なソフトウェア及び/又はファームウェアと関係させて、コーデックハードウェアユニット内において結合させること又は上述されるように1つ以上のプロセッサを含む相互運用的なハードウェアユニットの集合によって提供することができる。
[0201]様々な例が説明されている。これらの及びその他の例は、以下の請求項の範囲内である。