以下、図面および実施例を参照しながら本発明を詳細に説明する。なお、矛盾しない限り、本発明における実施例と実施例における特徴は、互いに任意に組み合わせることができる。
なお、本発明の明細書、特許請求の範囲、および上記図面における「第1」、「第2」等の用語は、類似する対象を区別するためのものであり、特定の順序または優先順位を記述するために用いる必要わけではない。
下記実施例において、ビデオとは、画像からなる画像列を意味する。前記コードストリームとは、ビデオエンコーダがビデオを符号化して生成したコードストリームを意味し、ビデオエンコーダがビデオを符号化して生成したコードストリームに対してシステム層の処理を行った後に得られた、前記ビデオエンコーダがビデオを符号化して生成したコードストリームを含む伝送ストリームおよび/またはメディアファイルも意味し、前記コードストリームを復号化してビデオを取得することができる。前記システム層の処理は、ビデオコードストリームに対して行われるパッケージ操作であり、例えば、ビデオコードストリームをデータ荷重として伝送ストリームにパッケージするか、またはビデオコードストリームを荷重としてメディアファイルにパッケージする。前記システム層の処理は、ビデオコードストリームを含む伝送ストリームまたはメディアファイルをデータ荷重として伝送用のストリームまたは記憶用のファイルにパッケージすることも含む。前記システム層の処理により生成されるデータ単位は、システム層データ単位とも呼ばれ、前記システム層の処理でデータ荷重をパッケージする過程において、前記システム層データ単位に追加される情報(例えば、システム層データ単位のヘッダ情報等)はシステム層情報と呼ばれる。前記サブコードストリームとは、抽出操作を行ってコードストリームから得られた一部のコードストリームを意味し、前記サブコードストリームを復号化してビデオ画像を取得することができ、該ビデオ画像は、前記コードストリームを復号化して取得したビデオ画像よりも解像度が低い画像であってもよく、前記コードストリームを復号化して取得したビデオよりもフレームレートが低い画像であってもよく、該ビデオ画像には、前記コードストリームを復号化して取得したビデオ画像における一部の内容が含まれてもよい。
(実施例1)
本発明の実施例1に係る方法の実施例は、移動端末、コンピュータ端末または類似する演算装置で実行できる。移動端末で動作することを例とし、図1は、本発明の実施例の画像の符号化方法の移動端末のハードウェアの構造ブロック図である。図1に示すように、移動端末10は、1つまたは複数(図1には1つのみが示される)のプロセッサ102(プロセッサ102は、マイクロプロセッサMCUまたはプログラマブル論理デバイスFPGA等の処理装置を含んでもよいが、これらに限定されない)と、データを記憶するためのメモリ104とを備えてもよく、好ましくは、上記移動端末は、通信機能のための伝送機器106と入出力機器108とを更に備えてもよい。当業者であれば、図1に示す構造は模式的なものに過ぎず、上記移動端末の構造を限定するものではないことが理解できる。例えば、移動端末10は、図1に示すものよりも多いまたは少ないコンポーネントを含んでもよいし、図1に示すものと異なる構成を有してもよい。
メモリ104は、アプリケーションソフトウェアのソフトウェアプログラムおよびモジュール、本発明の実施例における画像の符号化方法に対応するコンピュータプログラムのようなコンピュータプログラムを記憶するために用いることができ、プロセッサ102は、メモリ104内に記憶されているコンピュータプログラムを動作することにより、様々な機能アプリケーションおよびデータ処理を実行し、即ち、上記方法を実現する。メモリ104は、高速ランダムメモリを含んでもよいし、1つまたは複数の磁気記憶装置、フラッシュメモリ、または他の不揮発性固体メモリのような不揮発性メモリを含んでもよい。いくつかの実例において、メモリ104は、プロセッサ102に対して遠隔的に設けられたメモリを更に含んでもよく、これらの遠隔メモリは、ネットワークを介して移動端末10に接続することができる。上記ネットワークの実例は、インターネット、イントラネット、ローカルエリアネットワーク、移動体通信ネットワークおよびその組み合わせを含んでもよいが、それらに限定されない。
伝送装置106は、1つのネットワークを介してデータを受信または送信するために用いられる。上記ネットワークの具体的な実例は、移動端末10の通信プロバイダが提供する無線ネットワークを含んでもよい。1つの実例において、伝送装置106は、1つのネットワークアダプタ(Network Interface Controller、NICと略称される)を備え、基地局により他のネットワーク機器と接続することで、インターネットと通信することができる。1つの実例において、伝送装置106は無線周波数(Radio Frequency、RFと略称される)モジュールであってもよく、無線方式によりインターネットと通信するために用いられる。
本実施例において、上記移動端末で実行される画像の符号化方法を提供し、図2は、本発明の実施例による画像の符号化方法のフローチャートであり、図2に示すように、該フローは、以下のようなステップを含む。
ステップS202において、符号化ブロックの予測値を確定し、前記符号化ブロックと前記予測値との予測差分値を計算する。
ステップS204において、前記予測差分値に対して1回または複数回の変換を行って変換データを取得し、前記変換データを用いて変換係数を確定する。
ステップS206において、前記変換係数のスキャン方式および係数群のサイズを確定し、前記変換係数を1つまたは複数の係数群に分割し、前記スキャン方式に従って各前記係数群に含まれている変換係数をスキャンし、前記変換係数を1つまたは複数の構文要素に転換する。
ステップS208において、前記係数群のサイズおよび前記構文要素の値を符号化し、符号化ビットをコードストリームに書き込む。
好ましくは、前記符号化ブロックの予測値を確定することは、1つまたは複数の符号化された画像を参照画像として符号化ブロックの予測値を確定するという方法、または、前記符号化ブロックが位置する画像における符号化された部分を参照として前記符号化ブロックの予測値を確定するという方法の少なくとも1つを含む。
好ましくは、前記変換データを用いて変換係数を確定することは、前記変換データを量子化すると判断した場合、前記変換データを量子化処理し、前記変換係数を取得することと、前記変換データを量子化しないと判断した場合、前記変換データを用いて前記変換係数を設定することとを含む。
好ましくは、前記変換係数の係数群のサイズを確定することは、プリセットされた候補値に基づいて前記変換係数の係数群のサイズを確定することを含む。
好ましくは、プリセットされた前記候補値に基づいて前記変換係数の係数群のサイズを確定することは、レート歪み最適化の方法を用い、前記候補値から前記変換係数の係数群のサイズを確定することを含む。
好ましくは、前記候補値における数値を係数群のサイズとして使用する場合の前記変換係数の符号化ビット数を計算し、前記符号化ビット数を最小にし得る前記候補値における数値を前記変換係数の係数群のサイズとして選択する。
好ましくは、プリセットされた前記候補値に基づいて前記変換係数の係数群のサイズを確定することは、前記変換係数の分布状況に基づいて前記変換係数の係数群のサイズを確定することを含む。
好ましくは、前記変換係数の分布状況は、前記変換係数をスキャンした後に検出した前記変換係数における非0係数の集中程度であり、ここで、前記非0係数の集中程度とは、前記変換係数の非0係数間の0値係数の数であり、前記0値係数の数が小さいほど、非0係数の集中程度が高く、前記候補値から前記集中程度を最大にし得る前記候補値における数値を前記変換係数の係数群のサイズとして選択する。
好ましくは、前記候補値は、1つまたは複数の固定数値と、設定された1つまたは複数の数値と、前記符号化ブロックの符号化された隣接ブロックが使用する係数群のサイズの値との少なくとも1つを含む。
好ましくは、前記係数群のサイズのプリセットされた候補値が前記設定された1つまたは複数の数値である場合、前記方法は、前記候補値の識別パラメータを前記コードストリームの1つまたは複数のデータ単位に書き込み、前記識別パラメータが前記設定された前記候補値を指示するために用いられ、前記コードストリームにおけるデータ単位は、1つまたは複数のパラメータセットと、スライスヘッダと、ブロック層データ単位との少なくとも1つを含むことを更に含む。
好ましくは、前記係数群のサイズのプリセットされた候補値の識別パラメータは、係数群のサイズ、係数群の辺長、係数群の幅および高さの少なくとも1つを含む。
好ましくは、前記識別パラメータの最大値および最小値を前記コードストリームに書き込むという方法と、前記識別パラメータの最大値および前記係数群のサイズの最大値と最小値との間の差分値を前記コードストリームに書き込むという方法と、前記識別パラメータの最小値および前記係数群の最大の上向き分割階層を前記コードストリームに書き込むという方法と、前記識別パラメータの最小値および前記係数群のサイズの最大値と最小値との間の差分値を前記コードストリームに書き込むという方法とを含む、1種または複数種の方法を用いて前記識別パラメータを前記コードストリームに書き込む。
好ましくは、1種または複数種の方法を用いて前記識別パラメータを前記コードストリームに書き込むことは、前記識別パラメータのデフォルト値を前記コードストリームに書き込むという方法を更に含む。
好ましくは、前記係数群のサイズのプリセットされた候補値の識別パラメータは、前記識別パラメータが1つまたは複数のフラグビットであり、対応する係数群のサイズが前記候補値に含まれている係数群のサイズであるか否かを指示することを含む。
好ましくは、前記係数群のサイズのプリセットされた候補値の識別パラメータは、前記識別パラメータが、プリセットされた1つまたは複数の予測モードに対応する1つまたは複数の係数群のサイズを指示することを含む。
好ましくは、前記係数群のサイズのプリセットされた候補値の識別パラメータは、前記識別パラメータが、プリセットされた1回または複数の変換に対応する1つまたは複数の係数群のサイズを指示することを含む。
好ましくは、前記係数群のサイズのプリセットされた候補値の識別パラメータは、前記識別パラメータが、プリセットされた1つまたは複数の変換タイプに対応する1つまたは複数の係数群のサイズを指示することを含む。
好ましくは、前記係数群のサイズのプリセットされた候補値の識別パラメータは、前記識別パラメータが、プリセットされた1つまたは複数の量子化パラメータに対応する1つまたは複数の係数群のサイズを指示すること、または、前記識別パラメータが、プリセットされた1つまたは複数の量子化パラメータの値の範囲に対応する1つまたは複数の係数群のサイズを指示することを含む。
好ましくは、前記係数群のサイズのプリセットされた候補値の識別パラメータは、前記識別パラメータが、プリセットされたプロファイル/ティア/レベルProfile/Tier/Levelに対応する1つまたは複数の係数群のサイズを指示することを含む。
好ましくは、前記変換係数の係数群のサイズを確定することは、前記符号化ブロックの第1符号化パラメータに基づき、前記符号化ブロックにおける前記変換係数の係数群のサイズを前記第1符号化パラメータに対応する係数群のサイズとし、前記第1符号化パラメータは、前記符号化ブロックに含まれている変換ブロックのサイズ、前記符号化ブロックの予測モード、前記符号化ブロックに含まれている変換ブロックが使用する変換タイプ、および量子化パラメータの1つを少なくとも含むことを含む。
好ましくは、前記符号化ブロックの第1符号化パラメータに基づき、前記符号化ブロックにおける前記変換係数の係数群のサイズを前記第1符号化パラメータに対応する係数群のサイズとすることは、前記符号化ブロックに含まれている変換ブロックのサイズが第1プリセット値に等しい場合、前記係数群のサイズを前記第1プリセット値に対応する係数群のサイズとすることを含む。
好ましくは、前記符号化ブロックの第1符号化パラメータに基づき、前記符号化ブロックにおける前記変換係数の係数群のサイズを前記第1符号化パラメータに対応する係数群のサイズとすることは、前記符号化ブロックの予測モードが第1プリセットモードに等しい場合、前記係数群のサイズを前記第1プリセットモードに対応する係数群のサイズとすることを含む。
好ましくは、前記符号化ブロックの第1符号化パラメータに基づき、前記符号化ブロックにおける前記変換係数の係数群のサイズを前記第1符号化パラメータに対応する係数群のサイズとすることは、前記符号化ブロックに含まれている変換ブロックが使用する変換タイプが第1変換タイプに等しい場合、前記係数群のサイズを前記第1変換タイプに対応する係数群のサイズとすることを含む。
好ましくは、前記符号化ブロックの第1符号化パラメータに基づき、前記符号化ブロックにおける前記変換係数の係数群のサイズを前記第1符号化パラメータに対応する係数群のサイズとすることは、前記量子化パラメータの値が第2プリセット値に等しい場合、前記係数群のサイズを前記第2プリセット値に対応する係数群のサイズとすること、または、前記量子化パラメータの値が第1プリセット値の範囲内にある場合、前記係数群のサイズを前記第1プリセット値の範囲に対応する係数群のサイズとすることを含む。
好ましくは、前記変換係数のスキャン方式を確定することは、プリセットされた候補スキャン方式に従って前記変換係数のスキャン方式を確定し、前記スキャン方式が前記変換係数の2次元マトリックスにおける要素に対する処理順序であることを含む。
好ましくは、プリセットされた候補スキャン方式に従って前記変換係数のスキャン方式を確定することは、レート歪み最適化の方法を用い、前記候補スキャン方式から前記変換係数のスキャン方式を確定することを含む。
好ましくは、前記候補スキャン方式におけるスキャン方式を使用する場合の前記変換係数の符号化ビット数を計算し、前記符号化ビット数を最小にし得る前記候補スキャン方式におけるスキャン方式を前記変換係数のスキャン方式として選択する。
好ましくは、プリセットされた候補スキャン方式に従って前記変換係数のスキャン方式を確定することは、前記変換係数の分布状況に基づいて前記変換係数のスキャン方式を確定することを含む。
好ましくは、前記変換係数の分布状況は、前記変換係数をスキャンした後に検出した前記変換係数における非0係数の集中程度であり、前記非0係数の集中程度とは、前記変換係数の非0係数間の0値係数の数であり、前記0値係数の数が小さいほど、非0係数の集中程度が高く、前記候補スキャン方式から前記集中程度を最大にし得る前記候補値におけるスキャン方式を前記変換係数のスキャン方式として選択する。
好ましくは、前記候補スキャン方式は、1つまたは複数の固定スキャン方式と、設定された1つまたは複数のスキャン方式と、前記符号化ブロックの符号化された隣接ブロックが使用するスキャン方式との少なくとも1つを含む。
好ましくは、前記候補スキャン方式が前記設定された1つまたは複数のスキャン方式である場合、前記方法は、前記候補スキャン方式のパラメータを前記コードストリームの1つまたは複数のデータ単位に書き込み、前記候補スキャン方式のパラメータが前記設定された前記候補スキャン方式を指示するために用いられ、前記コードストリームにおけるデータ単位は、1つまたは複数のパラメータセットと、スライスヘッダと、ブロック層データ単位との少なくとも1つを含むことを含む。
好ましくは、前記候補スキャン方式のパラメータは、前記変換係数の2次元マトリックスにおける要素の処理順序を更に含む。
好ましくは、前記候補スキャン方式のパラメータは、前記スキャン方式のパラメータのデフォルト値を更に含む。
好ましくは、前記候補スキャン方式のパラメータは、前記候補スキャン方式のパラメータが1つまたは複数のフラグビットであり、対応するスキャン方式が前記候補スキャン方式に含まれているか否かを指示することを含む。
好ましくは、前記候補スキャン方式のパラメータは、前記候補スキャン方式のパラメータがプリセットされた1つまたは複数の予測モードに対応する1つまたは複数のスキャン方式を指示することを含む。
好ましくは、前記候補スキャン方式のパラメータは、前記候補スキャン方式のパラメータがプリセットされた1回または複数の変換に対応する1つまたは複数のスキャン方式を指示することを含む。
好ましくは、前記候補スキャン方式のパラメータは、前記候補スキャン方式のパラメータがプリセットされた1つまたは複数の変換タイプに対応する1つまたは複数のスキャン方式を指示することを含む。
好ましくは、前記候補スキャン方式のパラメータは、前記候補スキャン方式のパラメータがプリセットされた1つまたは複数の量子化パラメータに対応する1つまたは複数のスキャン方式を指示すること、または、前記候補スキャン方式のパラメータがプリセットされた1つまたは複数の量子化パラメータの値の範囲に対応する1つまたは複数のスキャン方式を指示することを含む。
好ましくは、前記候補スキャン方式のパラメータは、前記候補スキャン方式のパラメータがプリセットされたProfile/Tier/Levelに対応する1つまたは複数のスキャン方式を指示することを含む。
好ましくは、前記変換係数のスキャン方式を確定することは、前記変換ブロックの第2符号化パラメータに基づいて前記符号化ブロックにおける前記変換係数のスキャン方式を前記第2符号化パラメータに対応する係数群のスキャン方式とし、前記第2符号化パラメータは、前記符号化ブロックに含まれている変換ブロックのサイズと、前記符号化ブロックの予測モードと、前記符号化ブロックに含まれている変換ブロックが使用する変換タイプと、前記符号化ブロックのサイズとの1つを少なくとも含み、前記スキャン方式が前記変換係数の2次元マトリックスにおける要素に対する処理順序であることを含む。
好ましくは、前記変換ブロックの第2符号化パラメータに基づいて前記符号化ブロックにおける前記変換係数のスキャン方式を前記第2符号化パラメータに対応する係数群のスキャン方式とすることは、前記符号化ブロックに含まれている変換ブロックのサイズが第3プリセット値に等しい場合、前記変換係数のスキャン方式を前記第3プリセット値に対応するスキャン方式とすることを含む。
好ましくは、前記変換ブロックの第2符号化パラメータに基づいて前記符号化ブロックにおける前記変換係数のスキャン方式を前記第2符号化パラメータに対応する係数群のスキャン方式とすることは、前記符号化ブロックの予測モードが第2プリセットモードに等しい場合、前記変換係数のスキャン方式を前記第2プリセットモードに対応するスキャン方式とすることを含む。
好ましくは、前記変換ブロックの第2符号化パラメータに基づいて前記符号化ブロックにおける前記変換係数のスキャン方式を前記第2符号化パラメータに対応する係数群のスキャン方式とすることは、前記符号化ブロックに含まれている変換ブロックが使用する変換タイプが第2変換タイプに等しい場合、前記変換係数のスキャン方式を前記第2変換タイプに対応するスキャン方式とすることを含む。
好ましくは、前記変換ブロックの第2符号化パラメータに基づいて前記符号化ブロックにおける前記変換係数のスキャン方式を前記第2符号化パラメータに対応する係数群のスキャン方式とすることは、前記符号化ブロックのサイズが第4プリセット値に等しい場合、前記変換係数のスキャン方式を前記第4プリセット値に対応するスキャン方式とすることを含む。
好ましくは、前記変換係数のスキャン方式および係数群のサイズを確定することは、レート歪み最適化の方法を用い、前記変換係数の係数群のサイズとスキャン方式とを合わせて確定することを含む。
好ましくは、前記変換係数を1つまたは複数の構文要素に転換することは、前記係数群のサイズおよびスキャン方式に従って前記変換係数を1つまたは複数の係数群に分割し、前記スキャン方式に従って前記係数群に含まれている変換係数をスキャンし、前記変換係数を、非0係数の開始位置を指示する構文要素と、係数群に非0係数が含まれていることを指示する構文要素と、係数群における非0係数の位置を指示する構文要素と、係数群における非0係数の値を指示する構文要素との少なくとも1つとして表すことを含む。
好ましくは、前記係数群のサイズおよび前記構文要素の値を符号化し、符号化ビットをコードストリームに書き込むことは、前記変換係数が使用する係数群のサイズを、前記係数群のサイズを符号化するという方法と、前記係数群のサイズに対応するインデックス番号の値を符号化するという方法と、前記係数群のサイズに対応するフラグビットを設定し、前記フラグビットの値を符号化するという方法との1つにより符号化することを含む。
好ましくは、前記係数群のサイズおよび前記構文要素の値を符号化し、符号化ビットをコードストリームに書き込むことは、符号化ビットをコードストリームにおけるデータ単位に書き込み、前記コードストリームにおけるデータ単位は、1つまたは複数のパラメータセットと、スライスヘッダと、ブロック層データ単位との少なくとも1つを含むことを含む。
好ましくは、画像は複数の最大符号化単位に分割できる。最大符号化単位は、1つの正方形の画像領域である。画像は、1つまたは複数のスライス(Slice)に分割でき、各スライスには整数個の最大符号化単位が含まれてもよいし、整数個でない最大符号化単位が含まれてもよい。好ましくは、画像は1つまたは複数のタイル(Tile)に分割でき、各タイルには整数個の最大符号化単位が含まれてもよいし、整数個でない最大符号化単位が含まれてもよい。分割ユニット201は、固定方式に従って画像を分割するように構成されてもよいし、画像の分割方式を動的に調整するように構成されてもよい。例えば、ネットワークの最大伝送ユニット(Ma×imum Transmission Unit、MTU)に適応するために、動的スライス分割の方法を採用し、各スライスの符号化ビット数がMTUの制限を超えないことを確保する。
好ましくは、最大符号化単位を1つまたは複数の符号化ブロックに分割し、分割して得られた符号化ブロックをより多くの符号化ブロックに更に分割することができる。分割方式は、四分木分割、二分木分割、三分木分割のうちの1種または複数種を採用することができる。
好ましくは、常用のレート歪み最適化(Rate-Distortion Optimization、RDO)の方法を用いて符号化ブロックの予測値を確定し、予測値が使用するインター予測、イントラ予測に関連する出力パラメータを取得する。
好ましくは、1つまたは複数の復号化された画像を参照画像として符号化ブロックのインター予測値を確定する。まず、前記参照画像を用い、1つまたは複数の参照画像リスト(Reference List)を構成し、各参照画像リストには1つまたは複数の参照画像が含まれ、符号化ブロックの前記参照画像におけるマッチングブロックを確定する。前記マッチングブロックを用いて符号化ブロックの予測値を構成し、符号化ブロックと前記予測値との間の差分値(即ち、予測差分値)を計算する。参照画像リスト指示、参照画像インデックス(Reference Inde×)、動きベクトル(Motion Vector、MV)等を含むマッチングブロック位置を指示するためのパラメータを出力し、ここで、参照画像リスト指示は、マッチングブロックを含む参照画像が位置する参照画像リストを指示するために用いられ、参照画像インデックスは、参照画像リストにおけるマッチングブロックを含む参照画像を指示するために用いられ、MVは、符号化ブロックとマッチングブロックとが同一画像の画素点座標系での相互間の相対位置のオフセット量を指示するために用いられる。
好ましくは、前記符号化ブロックの復元された隣接画素をフィルタの入力値として符号化ブロックの予測値を計算し、ここで、前記フィルタは補間フィルタであってもよく、ローパスフィルタ(例えば、DC値を計算するためのフィルタ)であってもよい。特に、前記符号化ブロックが位置する画像における部分的に復元された部分から前記符号化ブロックのマッチングブロックを探し、マッチングブロックを前記符号化ブロックの予測値とする。レート歪み最適化RDOの方法を用いて前記符号化ブロック予測値を計算するための方法(即ち、イントラ予測モード)および予測値を確定する。上記過程における出力パラメータは、イントラ予測モードを指示するためのパラメータを含む。
好ましくは、更に、符号化ブロックの元の値と予測値との間の予測差分値を計算するために用いられる。前記予測差分値は、1つのN×Mの2次元マトリックスとして表すことができ、ただし、NおよびMはいずれも正の整数であり、NとMとは等しくてもよいし、等しくなくてもよい。
好ましくは、信号処理の観点から、1つの変換方法は1つの変換マトリックスで表すことができる。前記符号化ブロックとサイズおよび形状が同じである矩形ブロック(ここで、正方形は矩形の1つの特例である)を予測差分値の変換ブロックとして用いてもよいし、前記予測差分値を複数の矩形ブロック(高さまたは幅が1つの画素である場合を含む)に分割して矩形ブロックをそれぞれ順に変換処理してもよい。
好ましくは、スカラー量子化器を用いて前記データを量子化し、量子化器の量子化パラメータ(Quantization Parameter、QP)は制御ユニットにより確定される。例えば、制御ユニットは、既存のコードレート制御方法を用いて量子化器の量子化ステップを確定し、量子化ステップとQPとの対応関係に基づいてQPを確定することができる。量子化過程により出力されたのは、係数の量子化値(即ち、「Level」値)であり、通常、1つの2次元マトリックスで表すことができる。
好ましくは、量子化過程と同じQPを用いて前記係数の量子化値に対してスケーリング(Scaling)操作を行って係数の復元値を取得してもよい。
好ましくは、前記符号化ブロックを量子化しないと確定した場合(例えば、RDOの方法で前記符号化ブロックを量子化するか否かを確定する)、予測差分値を変換した後に得られたデータを直接逆変換する。
好ましくは、逆変換により前記係数の復元値を処理し、予測差分値の復元値を取得する。
好ましくは、フィルタリングにも使用される。具体的には、本実施例において、デブロッキングフィルタリング(Deblocking)およびサンプル適応オフセット補償フィルタ(Sample Adaptive Offset、SAO)という2つのフィルタでカスケード接続されたフィルタによるフィルタリング方法を更に含む。該フィルタにおいて、ニューラルネットワークフィルタを含んでもよい。好ましくは、画像バッファにおけるデータをフィルタリングする操作は、画像層で行うことができ、即ち、前記画像における全ての符号化ブロックの復元値がいずれも画像バッファに書き込まれた後、画像バッファにおけるデータをフィルタリング処理する。好ましくは、前記画像バッファにおけるデータをフィルタリングする操作は、ブロック層で行うことができ、即ち、ある符号化ブロックの復元データが後続の符号化ブロックの参照データとする必要がない場合、該符号化ブロックの復元データをフィルタリング処理する。RDO方法でフィルタパラメータを確定してフィルタリング過程の出力パラメータとする。前記フィルタパラメータは、使用するフィルタの指示情報、フィルタ係数、フィルタの制御パラメータを含む。
好ましくは、画像の符号化データを2値化してエントロピー符号化し、パラメータを、規格に合致する1つまたは複数の「0」、「1」ビットからなるフィールドに転換し、規格におけるコードストリーム構文構造(Syntax Structure)に基づいてフィールドをコードストリームに編成する。前記符号化データは、画像のテクスチャデータおよび非テクスチャデータを含む。ここで、前記テクスチャデータは、主に符号化ブロックの変換係数であり、非テクスチャデータは、テクスチャデータ以外の他の全てのデータを含み、前述した各処理過程における出力パラメータ、パラメータセット、ヘッダ情報、補助情報等のパラメータを含む。
好ましくは、処理のテクスチャデータは、M×Nの2次元マトリックス形式で表される変換係数であり、ただし、MおよびNは正の整数であり、MとNとは等しくてもよいし、MとNとは等しくなくてもよい。前記2次元マトリックスは1つの変換ブロックに対応することができ、以下の記述において、「変換ブロック」を用いて前記M×Nの2次元マトリックス形式で表される変換係数を指す。ここで、前記符号化ブロックを量子化する場合、前記変換係数は、量子化過程で係数の量子化値(即ち、「Level」値)を出力し、逆に、前記符号化ブロックを量子化しない場合、前記変換係数は、変換過程で前記予測差分値を変換した後に得られたデータを出力する。
好ましくは、係数群のサイズを確定することができる。係数群はW×H個の変換係数を含み、ただし、WおよびHは正の整数であり、WとHとは等しくてもよいし、WとHとは等しくなくてもよく、且つ、W≦M、H≦Nである。変換ブロックの、プリセットされた候補値から使用する係数群のサイズを確定する。プリセットされた候補値は固定値であってもよいし、設定可能な値であってもよい。プリセットされた候補値が設定可能な値である場合、以下の1つまたは複数のデータ単位において係数群のサイズに関連する識別情報を符号化してコードストリームに書き込むことができ、前記識別情報は、前記設定された使用可能な係数群のサイズを指示するために用いられ、1つまたは複数のパラメータセット(Parameter Set)と、スライスヘッダ(Slice Header)と、符号化単位(Coding Unit)とを含む。
好ましくは、暗示的な導出の方式を用いて前記変換ブロックの係数群のサイズを確定することができる。前記変換ブロックが位置する符号化ブロックの符号化モード、変換ブロックサイズ、量子化パラメータ、変換ブロックが使用する変換タイプ等の1つまたは複数の符号化パラメータに基づき、プリセットされた係数群に対応するサイズを選択することができる。下記例において、4×4および8×8という2種の係数群のサイズを用いることができるように構成される。前記方法は、より多くの係数群のサイズを使用する場合に拡張できる。下記例における1種の方法を用いるか、または複数種の方法を合わせて用いて係数群のサイズを確定することができる。
例えば、符号化ブロックにおける変換ブロックのサイズが16×16よりも大きい場合、係数群のサイズを8×8とするように設定し、符号化ブロックにおける変換ブロックのサイズが16×16以下である場合、係数群のサイズを4×4とするように設定する。正方形でない矩形変換ブロックの場合、変換ブロックの高さおよび幅に応じて対応して用いられる係数群のサイズを設定することができ、例えば、変換ブロックの高さおよび幅のうちの小さい値が16よりも大きい場合、高さおよび幅のうちの小さい値が8に等しい矩形係数群を使用し、逆に、高さおよび幅のうちの小さい値が4に等しい矩形係数群を使用する。
例えば、インター予測モードの符号化ブロックにおける変換ブロックが対応して使用する係数群のサイズを8×8と設定し(8×8および4×4の変換ブロックが使用する係数群のサイズを4×4と設定する)、イントラ予測モードの符号化ブロックにおける変換ブロックが対応して使用する係数群のサイズを8×8と設定する(16×16、8×8および4×4の変換ブロックが使用する係数群のサイズを4×4と設定する)。
例えば、通常、量子化パラメータが大きい場合、2次元マトリックスには、より多くの0値変換係数が存在し、各係数群には、該係数群における変換係数が全て0であるか否かを識別する(または該係数群に非0変換係数が含まれているか否かを識別する)ための1つの対応するフラグビットがいずれもあるため、大きな係数群を使用する場合、その中に含まれているのは全て0値係数である可能性があり、1つの前記フラグビットを用いれば表すことができる。それと比べて小さい係数群を使用する場合、量子化パラメータが大きいと、大きな係数群を使用することにより、前記フラグビットの符号化オーバヘッドを効果的に低減することができる。H.265/HEVC規格における量子化パラメータの設定方式を例とし、一実施形態において、量子化パラメータの値が37以上である場合、係数群のサイズを8×8とし(8×8および4×4の変換ブロックが使用する係数群のサイズを4×4と設定する)、逆に、係数群のサイズを4×4とする。
例えば、離散コサイン変換(Discrete Cosine Transform、DCT)設計に基づく変換を使用する符号化ブロックの場合、係数群のサイズを8×8とする(8×8および4×4の変換ブロックが使用する係数群のサイズを4×4と設定する)。離散サイン変換(Discrete Sine Transform、DST)設計に基づく変換を使用する符号化ブロックの場合、係数群のサイズを4×4とする。カルーネン・レーベ変換(Karhunen-Loeve Transform、KLT)設計に基づく変換を使用する符号化ブロックの場合、係数群のサイズを8×8とする(8×8および4×4の変換ブロックが使用する係数群のサイズを4×4と設定する)。2回または複数回の変換を使用する符号化ブロックの場合、係数群のサイズを8×8とする(8×8および4×4の変換ブロックが使用する係数群のサイズを4×4と設定する)。
好ましくは、更に変換ブロックにおける変換係数のスキャン方式を確定するために用いることができる。前記スキャン方式とは、変換係数の2次元マトリックスにおける要素に対する処理順序を意味する。通常、スキャン方式が指示する順序に従って1つのM行N列の2次元マトリックスにおける要素を順次読み取り、1つの1行M×N列(または、M×N行1列)の1次元マトリックスを等価的に得ることができる。稲妻形(Zig-zag)スキャン順序、水平スキャン(Horizontal scan)順序、垂直スキャン(Vertical scan)順序、対角スキャン(Diagonal scan)順序(例えば、右上斜めスキャン(Diagonal up-right scan)順序)等のような1種または複数種の変換係数マトリックスのスキャン方式を予め設定することができる。変換ブロックの、プリセットされたスキャン方式からスキャン方式を選択する。変換ブロックにおける係数群、係数群における変換係数が同じスキャン方式を使用してもよいし、変換ブロックにおける係数群、係数群における変換係数が異なるスキャン方式を使用してもよい。
好ましくは、暗示的な導出の方式を用いて前記変換ブロックの変換係数マトリックスのスキャン方式を確定することができる。前記変換ブロックが位置する符号化ブロックの符号化モード、変換ブロックサイズ等の1つまたは複数の符号化パラメータに基づき、プリセットされた対応するスキャン方式を選択することができる。例えば、インター予測モードで右上斜めスキャン方式を対応して使用するように設定し、符号化ブロックのサイズが8×8よりも大きい場合のイントラ予測モードで右上斜めスキャン方式を対応して使用するように設定し、符号化ブロックサイズが8×8以下である場合のイントラ予測モードでイントラ予測方向が指示する方向のスキャン方式を対応して使用し、直流(DC)モードおよび平面(Planar)モード等の方向性予測を使用しないモードで右上斜めスキャン方式を使用するように設定する。プリセットされたスキャン方式の数を減少するために、イントラ予測方向を分類することができ、各種類が異なるスキャン方式に対応し、例えば、垂直方向、および垂直方向で指定角度だけ左右にずらしたイントラ予測方向で、垂直スキャン方式を対応して使用し、水平方向、および水平方向で指定角度だけ上下にずらしたイントラ予測方向で、水平スキャン方式を対応して使用し、45度の角度、および角度方向で指定角度だけ上下にずらしたイントラ予測方向で、対角スキャン方式を使用することを更に含んでもよい。前記符号化モード、符号化ブロックサイズ等の1つまたは複数の符号化パラメータに基づいて前記符号化ブロックにスキャン方式を選択する。
好ましくは、変換ブロックの係数群のサイズを確定した場合、変換ブロックにおける変換係数の分布状況に応じて前記変換ブロックのスキャン方式を確定する。前記分布状況とは、スキャン方式を用いて変換ブロックにおける変換係数をスキャンし(または、逆のスキャン順序)、変換ブロックにおける非0係数の集中程度を検出することを意味する。通常、スキャン順序(または、逆のスキャン順序)に従って非0係数間の0値係数が少なければ少ないほど、非0係数の集中程度が高いと考えられる。候補スキャンモードから非0係数の集中程度を最大にし得るスキャン方式を前記変換ブロックのスキャン方式として選択する。別の実施形態において、変換ブロックにおける係数群のサイズを確定した場合、使用可能な候補スキャン方式を前記変換ブロックのスキャン方式として順次使用して変換ブロックにおける変換係数の符号化ビット数を計算し、符号化ビット数を最小にし得る候補スキャン方式を前記変換ブロックのスキャン方式として使用する。ここで、前記使用可能な候補スキャン方式とは、プリセットされたスキャン方式における前記変換ブロックの符号化に使用可能なスキャン方式を意味する。例えば、特定の予測モードの符号化ブロックに対して指定された1種または複数種のスキャン方式を使用しないように構成してもよく、例えば、ある1つまたは複数の特定の符号化ブロックまたは変換ブロックのサイズに対して指定された1種または複数種のスキャン方式を使用しないように構成してもよい。以下の1つまたは複数のデータ単位において、変換ブロックが使用するスキャン方式を指示するための情報を符号化してコードストリームに書き込み、1つまたは複数のパラメータセットと、スライスヘッダと、符号化単位と、変換ブロックデータ単位とを含む。
好ましくは、変換ブロックの適応的なスキャン方式を確定することができる。前述した方法において、使用される各種のスキャン方式は、いずれも固定した順序に従って変換ブロックにおける係数群、係数群における変換係数を処理し、異なるスキャン方式は異なるスキャン順序を定義する。ここで、前記「適応的なスキャン方式」とは、変換ブロックにおける係数群に対して固定的ではなく柔軟な処理順序を採用し、係数群における変換係数に対して固定的ではなく柔軟な処理順序を採用することを意味する。一実施方法において、変換ブロックにおける変換係数の分布状況に応じ、変換ブロックにおける非0係数の集中程度が最大となるスキャン方式を構成する。通常、スキャン順序(または、逆のスキャン順序)に従って非0係数間の0値係数が少なければ少ないほど、非0係数の集中程度が高いと考えられる。別の実施方法において、変換ブロックにおける係数群のサイズを確定した場合、変換ブロックにおける変換係数の符号化ビット数と該スキャン方式を符号化するオーバヘッドビット数との和を最小にし得るスキャン方式を構成する。スキャン方式を確定した後、スキャン方式を符号化する必要があり、1つの方法は、変換ブロックにおける変換係数の位置とスキャン後の位置との間の対応関係表を符号化し、例えば、変換ブロックにおける座標位置が(m、n)に等しい変換係数(または、インデックス番号がm×nTbS+nに等しく、ただし、nTbSは変換ブロックの幅である)に対応するスキャン後の番号位置はkに等しい。なお、コードストリームにおける前記対応関係表が指示する等価情報は、コードストリームを解析して得られた位置番号がkに等しい変換係数の変換ブロックにおける位置座標が(m、n)(または、インデックス番号がm×nTbS+nに等しく、ただし、nTbSは変換ブロックの幅である)であることである。以下の1つまたは複数のデータ単位において変換ブロックが使用するスキャン方式の情報を符号化してコードストリームに書き込み、1つまたは複数のパラメータセットと、スライスヘッダと、符号化単位と、変換ブロックデータ単位とを含む。
好ましくは、係数群のサイズに基づいて変換ブロックにおける変換係数を1つまたは複数の係数群に分割し、確定したスキャン方式従って変換係数マトリックスにおける要素を処理する。スキャン方式の正順または逆順を用いて変換係数マトリックスにおける係数群を順次処理する。各係数群に対してスキャン方式の正順または逆順を用いて該係数群における変換係数を順次処理する。ここで、係数群対するスキャン順序と係数群における変換係数に対するスキャン順序は同じであってもよいし、異なってもよい。前記変換ブロックを符号化して生成したビットをコードストリームに書き込み、前記ビットは、変換ブロックが使用する係数群のサイズと、変換ブロックが使用するスキャン方式と、変換ブロックにおける変換係数との1つまたは複数の情報を表す。
図3は、本発明の実施例による係数群のサイズを符号化するデータ処理のフローチャートである。前記処理フローで出力されるのは、係数群のサイズに関連するパラメータを符号化した後のコードストリームである。
ステップ301において、パラメータセットデータ単位において係数群のサイズを符号化する。パラメータセットデータ単位において係数群のサイズの設定パラメータを符号化する。
前記パラメータセットデータ単位とは、シーケンス全体に適用されるパラメータデータを担持するパラメータセットデータ単位を意味し、例えば、H.265/HEVC規格におけるビデオパラメータセット(Video Parameter Set、VPS)、シーケンスパラメータセット(Sequence Parameter Set、SPS)である。前記パラメータセットデータ単位は、画像に適用されるパラメータデータを担持するパラメータセットデータ単位を更に含んでもよく、例えば、適応パラメータセット(Adaptive Parameter Set、APS)、H.265/HEVC規格における画像パラメータセット(Picture Parameter Set、PPS)である。特に、APSまたはPPSにおけるパラメータがシーケンス全体における各画像に対しても変わらない場合、即ち、APSまたはPPSにおけるパラメータがシーケンス全体における各画像に適用される場合、APSまたはPPSは、シーケンス全体に適用されるパラメータデータを担持するパラメータセットデータ単位に相当する。好ましくは、特に、設定またはデフォルト設定の方法で、画像に適用されるパラメータセットデータ単位におけるデータを用いてシーケンスに適用されるパラメータセットデータ単位における対応するデータを上書きすることができる。
プロファイルに基づいてパラメータセットデータ単位における係数群のサイズに関連するフィールドの値を設定し、これらのフィールドを符号化し、符号化ビットをパラメータセットデータ単位に対応するコードストリームに書き込む。ここで、前記プロファイルに記載されたものは、初期化過程におけるパラメータを設定するためのものである。
パラメータセットデータ単位において、複数種の係数群のサイズが使用可能であるか否かを指示するフラグビットを設定する。該フラグビットが「使用可能」を指示する場合、符号化ブロックを符号化する過程において、1種以上の候補係数群のサイズから前記符号化ブロックの変換係数を符号化するための係数群のサイズを選択することができる。該フラグが「使用不可」を指示する場合、デフォルトに設定された係数群のサイズのみを用いて変換係数を符号化する。
パラメータセットデータ単位において係数群のサイズのデフォルト値を符号化することができる。例えば、最小の変換ブロックのサイズを8×8とする場合、前記プロファイルにおけるパラメータ設定に基づき、4×4または8×8を係数群のサイズのデフォルト値としてパラメータセットデータ単位において符号化する。好ましくは、1つの符号化方法は、係数群のサイズのデフォルト値に対する符号化がいずれのフラグビットに依存しなくてもよいことであり、好ましくは、別の符号化方法は、前述したフラグビットが「複数種の係数群のサイズが使用不可である」ことを指示する場合、パラメータセットデータ単位において係数群のサイズのデフォルト値を符号化することである。
前述したフラグビットが「複数種の係数群のサイズが使用可能である」ことを指示する場合、使用可能な係数群のサイズを符号化する。
好ましくは、1つの符号化方法は、パラメータセットデータ単位において最大と最小の使用可能な係数群のサイズを符号化し、他の使用可能な係数群のサイズは、設定された最大から最小への導出方式(例えば、四分木方式)に従って暗示的な導出を行うことができ、例えば、最大と最小の使用可能な係数群のサイズをそれぞれ32×32および4×4に設定して符号化すれば、前述した四分木方式に従い、パラメータセットデータ単位のフィールドが指示する使用可能な係数群のサイズは、32×32、16×16、8×8、および4×4を含むことである。第2種の符号化方法は、パラメータセットデータ単位において最大の使用可能な係数群のサイズ、および分割方式(例えば、四分木方式)に従う最大の分割階層を符号化し、例えば、最大の使用可能な係数群のサイズを32×32に設定して符号化し、最大の許可される分割階層を3層とすれば、パラメータセットデータ単位のフィールドが指示する使用可能な係数群のサイズは、32×32、16×16、8×8、および4×4を含み、あるいは、最大の分割階層の代わりに、最大と最小の使用可能な係数群のサイズの間の差分値を用いることができ、上記例において、前記最大と最小の許可値の差分値を、log232-log24=3と表すことができることである。第3種の符号化方法は、パラメータセットデータ単位において最小の使用可能な係数群のサイズ、および分割方式(例えば、四分木方式)に従う最大の上向き階層を符号化し、例えば、最小の使用可能な係数群のサイズを4×4に設定して符号化し、最大の上向き階層を3層に設定すれば、パラメータセットデータ単位のフィールドが指示する使用可能な係数群のサイズは、32×32、16×16、8×8、および4×4であり、あるいは、最大の上向き階層の代わりに、最大と最小の使用可能な係数群のサイズの間の差分値を用いることができ、上記例において、前記最大と最小の許可値の差分値を、log232-log24=3と表すことができることである。
好ましくは、1つの符号化方法は、パラメータセットデータ単位において最大と最小の使用可能な係数群の辺長を符号化し、他の使用可能な係数群のサイズは、設定された辺長の最大から最小への導出方式(例えば、二分方式)に従って暗示的な導出を行うことができ、例えば、最大と最小の辺長をそれぞれ16および4に設定して符号化すれば、パラメータセットデータ単位のフィールドが指示する使用可能な係数群の使用できる辺長は16、8および4を含み、対応して指示する係数群のサイズ(「幅×高さ」の形式で表す)は、16×16、16×8、16×4、8×16、8×8、8×4、4×16、4×8、および4×4を含むことである。第2種の符号化方法は、パラメータセットデータ単位において最大の使用可能な係数群の辺長、および分割方式(例えば、二分方式)に従う最大の分割階層を符号化し、例えば、最大の使用可能な係数群の辺長を16、最大の分割階層を2に設定して符号化すれば、パラメータセットデータ単位のフィールドが指示する使用可能な係数群の使用できる辺長は、16、8、4を含み、対応して指示する係数群のサイズは、16×16、16×8、16×4、8×16、8×8、8×4、4×16、4×8、および4×4を含み、あるいは、最大の分割階層の代わりに、最大と最小の使用可能な係数群の辺長の間の差分値を使用することができ、上記例において、前記最大と最小の許可値の差分値を、log216-log24=2と表すことができることである。第3種の符号化方法は、パラメータセットデータ単位において最小の使用可能な係数群の辺長、および分割方式(例えば、二分方式)に従う最大の上向き階層を符号化し、例えば、最小の使用可能な係数群の辺長を4、最大の上向き階層を2に設定して符号化すれば、パラメータセットデータ単位のフィールドが指示する使用可能な係数群の使用できる辺長は、16、8、4を含み、対応して指示する係数群のサイズは、16×16、16×8、16×4、8×16、8×8、8×4、4×16、4×8、および4×4を含み、あるいは、最大の上向き階層の代わりに、最大と最小の使用可能な係数群の辺長の間の差分値を使用することができ、上記例において、前記最大と最小の許可値の差分値を、log216-log24=2と表すことができることである。第4種の符号化方法は、パラメータセットデータ単位において使用できる辺長のフラグビットをそれぞれ設定し、前記フラグビットは、対応する辺長が使用可能であるか否かを指示するために用いられ、例えば、使用できる辺長が32、16、8および4を含むかつ使用できる辺長が16、8および4である場合、パラメータセットデータ単位において「辺長32」に対応するフラグビットを「使用不可」に設定して符号化し、「辺長16、8および4」に対応する3つのフラグビットを「使用可能」に設定して符号化すれば、パラメータセットデータ単位のフィールドが指示する使用可能な係数群の使用できる辺長は、16、8、4を含み、対応して指示する係数群のサイズは、16×16、16×8、16×4、8×16、8×8、8×4、4×16、4×8、および4×4を含むことである。
好ましくは、1つの符号化方法は、パラメータセットデータ単位において係数群の幅、および高さの最大と最小の使用可能な値を符号化し、他の使用可能な係数群のサイズは、設定された幅および高さの最大から最小への導出方式(例えば、二分方式)に従って暗示的な導出を行うことができ、例えば、係数群の幅の最大と最小の使用可能な値をそれぞれ16および4、係数群の高さの最大と最小の使用可能な値をそれぞれ8および4に設定して符号化すれば、パラメータセットデータ単位のフィールドが指示する使用可能な係数群の幅は、16、8および4を含み、指示する使用可能な係数群の高さは8および4を含み、対応して指示する係数群のサイズ(「幅×高さ」の形式で表す)は、16×8、16×4、8×8、8×4、4×8、および4×4を含むことである。第2種の符号化方法は、パラメータセットデータ単位において最大の使用可能な係数群の幅、および分割方式(例えば、二分方式)に従う最大の分割階層を符号化し、最大の使用可能な係数群の高さおよび分割方式(例えば、二分方式)に従う最大の分割階層を符号化し、例えば、最大の使用可能な係数群の幅を16、最大の分割階層を2に設定して符号化し、最大の使用可能な係数群の高さを8、最大の分割階層を1に設定して符号化すれば、パラメータセットデータ単位のフィールドが指示する使用可能な係数群の幅は、16、8および4を含む、指示する使用可能な係数群の高さは8および4を含み、対応して指示する係数群のサイズ(「幅×高さ」の形式で表す)は、16×8、16×4、8×8、8×4、4×8、および4×4を含み、あるいは、最大の分割階層の代わりに、最大と最小の使用可能な係数群の幅の間の差分値を使用することができ、上記例において、前記最大と最小の許可値の差分値を、log216-log24=2と表すことができ、あるいは、最大の分割階層の代わりに、最大と最小の使用可能な係数群の高さの間の差分値を使用することができ、上記例において、前記最大と最小の許可値の差分値を、log28-log24=1と表すことができることである。第3種の符号化方法は、パラメータセットデータ単位において最小の使用可能な係数群の幅、および分割方式(例えば、二分方式)に従う最大の上向き階層を符号化し、最小の使用可能な係数群の高さおよび分割方式(例えば、二分方式)に従う最大の上向き階層を符号化し、例えば、最小の使用可能な係数群の幅を4、最大の上向き階層を2に設定して符号化し、最小の使用可能な係数群の高さを4、最大の上向き階層を1に設定して符号化すれば、パラメータセットデータ単位のフィールドが指示する使用可能な係数群の幅は、16、8および4を含み、指示する使用可能な係数群の高さは8および4を含み、対応して指示する係数群のサイズ(「幅×高さ」の形式で表す)は、16×8、16×4、8×8、8×4、4×8、および4×4を含み、あるいは、最大の上向き階層の代わりに、最大と最小の使用可能な係数群の幅の間の差分値を使用することができ、上記例において、前記最大と最小許可値の差分値を、log216-log24=2と表すことができ、あるいは、最大の上向き階層の代わりに、最大と最小の使用可能な係数群の高さの間の差分値を使用することができ、上記例において、前記最大と最小の許可値の差分値を、log28-log24=1と表すことができることである。第4種の符号化方法は、パラメータセットデータ単位において使用できる幅、および高さにそれぞれフラグビットを設定し、前記フラグビットは、対応する幅および高さが使用可能であるか否かを指示するために用いられ、例えば、使用できる幅および高さがいずれも32、16、8および4を含み、使用できる幅が16、8および4で、使用可能な高さが8および4である場合、パラメータセットデータ単位において「幅32」に対応するフラグビットを「使用不可」に設定して符号化し、「幅16、8および4」に対応する3つのフラグビットを「使用可能」に設定して符号化し、「高さ32および16」に対応する2つのフラグビットを「使用不可」に設定して符号化し、「高さ8および4」に対応する2つのフラグビットを「使用可能」に設定して符号化すれば、パラメータセットデータ単位のフィールドが指示する使用可能な係数群の幅は、16、8および4を含み、指示する使用可能な係数群の高さは8および4を含み、対応して指示する係数群のサイズ(「幅×高さ」の形式で表す)は、16×8、16×4、8×8、8×4、4×8、および4×4を含むことである。
好ましくは、1つの符号化方法は、パラメータセットデータ単位において使用可能な係数群のサイズのフラグビットをそれぞれ設定し、前記フラグビットは、対応するパラメータグループのサイズが使用可能であるか否かを指示するために用いられる。例えば、使用できる係数群のサイズが16×16、16×8、16×4、8×16、8×8、8×4、4×16、4×8、および4×4を含む場合、16×8、16×4、8×8、8×4、4×8、および4×4が使用可能であると、パラメータセットデータ単位においてこの6種の係数群のサイズに対応するフラグビットを「使用可能」に設定して符号化し、他の16×16、8×16および4×16という3種の係数群のサイズに対応するフラグビットを「使用不可」に設定して符号化することである。
好ましくは、パラメータセットデータ単位において、上記方法を用いて異なる符号化モードを用いる符号化ブロックに使用可能な係数群のサイズをそれぞれ設定することができる。例えば、イントラ予測符号化ブロックに設定される使用可能な係数群のサイズが8×8および4×4でかつ符号化し、インター予測符号化ブロックに設定される使用可能な係数群のサイズが16×16、8×8、および4×4でかつ符号化すれば、パラメータセットデータ単位のフィールドが指示する、イントラ予測モードを用いた符号化ブロックにおける変換ブロックに許可される係数群のサイズは、8×8および4×4であり、インター予測モードを用いた符号化ブロックにおける変換ブロックに許可される係数群のサイズは、16×16、8×8、および4×4である。
好ましくは、パラメータセットデータ単位において、上記方法を用いて異なる変換回数を使用する変換ブロックの使用可能な係数群のサイズをそれぞれ設定することができる。例えば、1回の変換を使用する変換ブロックに設定された使用可能な係数群のサイズが8×8および4×4でかつ符号化し、複数回の変換を使用する変換ブロックに設定された使用可能な係数群のサイズが16×16、8×8、および4×4で且つ符号化すれば、パラメータセットデータ単位のフィールドが指示する1回の変換を使用する変換ブロックに許可される係数群のサイズは8×8および4×4であり、複数回の変換を使用する変換ブロックに許可される係数群のサイズは、16×16、8×8、および4×4である。
好ましくは、パラメータセットデータ単位において、上記方法を用いて異なる変換方式を使用する変換ブロックの使用可能な係数群のサイズをそれぞれ設定することができる。例えば、DCTを基礎として設計された変換を使用する変換ブロックに設定された使用可能な係数群のサイズは8×8および4×4でかつ符号化し、DSTを基礎として設計された変換を使用する変換ブロックに設定された使用可能な係数群のサイズは16×16、8×8、および4×4でかつ符号化し、KLTを基礎として設計された変換を使用する変換ブロックに設定された使用可能な係数群のサイズは32×32、16×16、8×8、および4×4でかつ符号化すれば、パラメータセットデータ単位のフィールドが指示するDCTを基礎として設計された変換を使用する変換ブロックに許可される係数群のサイズは8×8および4×4であり、DSTを基礎として設計された変換を使用する変換ブロックに許可される係数群のサイズは16×16、8×8、および4×4であり、KLTを基礎として設計された変換を使用する変換ブロックに許可される係数群のサイズは32×32、16×16、8×8、および4×4である。
好ましくは、パラメータセットデータ単位において、使用可能な係数群のサイズを切り替えるための制御パラメータを設定して符号化する。例えば、使用可能な係数群のサイズを切り替える制御パラメータとして量子化パラメータを使用する場合、H.265/HEVC規格における量子化パラメータの定義方式のように、量子化パラメータが37以上であると、使用可能な係数群のサイズは16×16、8×8、および4×4であり、量子化パラメータ値が37よりも小さいが27以上であると、使用可能な係数群のサイズは8×8であり、量子化パラメータ値が27よりも小さいと、使用可能な係数群のサイズは4×4であり、前述した方法を用いてパラメータセットデータ単位において量子化パラメータの分割区間、および各区間における使用可能な係数群のサイズを設定して符号化する。
好ましくは、使用可能な係数群のサイズをプロファイル/ティア/レベル(Profile/Tier/Level)に予め設定し、異なるProfile/Tier/Levelに対して1種または複数種の値の使用可能な係数群のサイズを設定する。例えば、低いLevel(例えば、640×480以下の解像度のビデオの符号化に対応する)の場合、デフォルト値が4×4に等しい係数群のサイズを使用し、高いLevel(例えば、720p、1080p、2K等の大きな解像度のビデオの符号化に対応する)の場合、8×8、4×4という2種の係数群のサイズを使用することができ、最大のLevel(例えば、4K、8K等の超大解像度のビデオの符号化に対応する)の場合、16×16、8×8、4×4という3種の係数群のサイズを使用することができる。パラメータセットデータ単位において、Profile/Tier/Levelの指示情報を符号化する。
上記方法を使用する1つの選択可能なコードストリーム編成方法は以下のとおりであり、使用可能な符号化係数群のサイズに用いられる。前記コードストリーム編成方法のフィールドは、1つまたは複数のパラメータセットデータ単位に位置する。前記コードストリーム編成方法により生成されたコードストリームに含まれているフィールドは以下のとおりである。
表1における各構文要素(Syntax element)の語義(semantics)は以下のとおりである。
log2_min_cg_side_lengthは係数群の最小辺長を表す。係数群の最小辺長が(1<<log2_min_cg_side_length)に等しい。ただし、「<<」は算術の右シフト演算子である。log2_min_cg_side_lengthに対してue(v)の方法を使用してエントロピー符号化を行う。
log2_diff_ma×_cg_side_lengthは係数群の最大辺長と最小辺長との間の差分値を表す。係数群の最大辺長は(1<<(log2_min_cg_side_length+log2_diff_ma×_cg_side_length))に等しい。log2_diff_ma×_cg_side_lengthに対してue(v)の方法を使用してエントロピー符号化を行う。
表1におけるパラメータの設定方法は以下の例に示すとおりである。例えば、プロファイルにおいてデフォルトサイズが4×4の係数群のみを使用する場合、log2_min_cg_side_lengthの値を2とし、log2_diff_ma×_cg_side_lengthを0とし、ue(v)の方法を使用して2つのフィールドを符号化し、符号化ビットをコードストリームに書き込む。
例えば、プロファイルにおいて最小が4×4の係数群、最大が16×16の係数群を使用する場合、log2_min_cg_side_lengthの値を2とし、log2_diff_ma×_cg_side_lengthの値を2とし、ue(v)の方法を使用して2つのフィールドを符号化し、符号化ビットをコードストリームに書き込む。前記実施方法に記載されたように、パラメータセットデータ単位のフィールドが指示する使用可能な係数群の使用できる辺長は16、8、4を含み、対応して指示する係数群のサイズは、16×16、16×8、16×4、8×16、8×8、8×4、4×16、4×8、および4×4を含む。
上記方法を使用する別の選択可能なコードストリーム編成方法は以下のとおりであり、インター予測、イントラ予測を使用する符号化ブロックにおける変換ブロックの使用可能な係数群のサイズを符号化するために用いられる。前記コードストリーム編成方法のフィールドは1つまたは複数のパラメータセットデータ単位に位置する。前記コードストリーム編成方法で生成されたコードストリームに含まれているフィールドは以下のとおりである。
表2における各構文要素(Syntax element)の語義(semantics)は以下のとおりである。
log2_min_cg_side_lengthは係数群の最小辺長を表す。係数群の最小辺長は(1<<log2_min_cg_side_length)に等しい。ただし、「<<」は算術の右シフト演算子である。log2_min_cg_side_lengthに対してue(v)の方法を使用してエントロピー符号化を行う。
log2_diff_ma×_inter_cg_side_lengthは、インター予測モードを使用する符号化ブロックにおける変換ブロックの係数群の最大辺長と最小辺長との間の差分値を表す。係数群の最大辺長は(1<<(log2_min_cg_side_length+log2_diff_ma×_cg_side_length))に等しい。log2_diff_ma×_cg_side_lengthに対してue(v)の方法を使用してエントロピー符号化を行う。
log2_diff_ma×_intra_cg_side_lengthは、イントラ予測モードを使用する符号化ブロックにおける変換ブロックの係数群の最大辺長と最小辺長との間の差分値を表す。係数群の最大辺長は(1<<(log2_min_cg_side_length+log2_diff_ma×_cg_side_length))に等しい。log2_diff_ma×_cg_side_lengthに対してue(v)の方法を使用してエントロピー符号化を行う。
表2におけるパラメータの設定方法は以下の例に示すとおりである。例えば、プロファイルにおいてデフォルトサイズが4×4の係数群のみを使用する場合、log2_min_cg_side_lengthの値を2とし、log2_diff_ma×_inter_cg_side_lengthおよびlog2_diff_ma×_intra_cg_side_lengthの値をいずれも0とし、ue(v)の方法を使用して2つのフィールドを符号化し、符号化ビットをコードストリームに書き込む。このような場合、インター予測モードの符号化ブロックおよびイントラ予測モードの符号化ブロックに対して使用する係数群のサイズはいずれも4×4である。
例えば、プロファイルにおいて最小が4×4の係数群、最大が16×16の係数群を使用する場合、log2_min_cg_side_lengthの値を2とし、log2_diff_ma×_inter_cg_side_lengthおよびlog2_diff_ma×_intra_cg_side_lengthの値をいずれも2とし、ue(v)の方法を用いて3つのフィールドを符号化し、符号化ビットをコードストリームに書き込む。前記実施方法に記載されたように、パラメータセットデータ単位のフィールドが指示する使用可能な係数群の使用できる辺長は16、8、4を含み、対応して指示する係数群のサイズは、16×16、16×8、16×4、8×16、8×8、8×4、4×16、4×8、および4×4を含む。このような場合、インター予測モードの符号化ブロックおよびイントラ予測モードの符号化ブロックにおける変換ブロックに対して使用可能な同じ係数群を用いる。
例えば、プロファイルにおいて最小で4×4の係数群を使用し、インター予測モードの符号化ブロックが最大で16×16の係数群を使用可能であり、イントラ予測モードの符号化ブロックが最大で8×8の係数群を使用可能である場合、log2_min_cg_side_lengthの値を2とし、log2_diff_ma×_inter_cg_side_lengthの値を2とし、log2_diff_ma×_intra_cg_side_lengthの値をいずれも1とし、ue(v)の方法を用いて3つのフィールドを符号化し、符号化ビットをコードストリームに書き込む。前記実施方法に記載されたように、パラメータセットデータ単位のフィールドが指示するインター予測の符号化ブロック使用可能な係数群の使用できる辺長は16、8および4を含み、対応して指示する係数群のサイズは、16×16、16×8、16×4、8×16、8×8、8×4、4×16、4×8、および4×4を含み、パラメータセットデータ単位フィールドが指示するイントラ予測モードの符号化ブロック使用可能な係数群の使用できる辺長は8および4を含み、対応して指示する係数群のサイズは、8×8、8×4、4×8、および4×4を含む。このような場合、インター予測モードの符号化ブロックおよびイントラ予測モードの符号化ブロックにおける変換ブロックに対して全く同じではない使用可能な係数群を使用する。
ステップS302において、スライスヘッダ情報データ単位において係数群のサイズを符号化し、スライスヘッダ情報データ単位において係数群のサイズの設定パラメータを符号化する。
スライスヘッダ情報データ単位において前記スライスが引用した(refer to)パラメータセットのパラメータセットインデックス番号(parameter set identifier)を符号化する。前記スライスを符号化する過程において、引用したパラメータセットに設定された使用できる係数群のサイズを使用することができる。
好ましくは、特に、スライスヘッダ情報で使用可能な係数群のサイズの情報を符号化して前記スライスが引用したパラメータセットにおける対応するパラメータ設定を上書きすることができる。使用する符号化方法は、ステップS301におけるProfile/Tier/Levelを符号化することにより係数群のサイズを指示する方法以外のパラメータセットで係数群のサイズを符号化する他の方法と同じであるが、符号化ビットをスライスヘッダ情報データ単位のコードストリームに書き込む。
好ましくは、前記スライスが引用したパラメータセットに係数群のサイズに関連するパラメータが含まれていない場合、スライスヘッダ情報で使用可能な係数群のサイズを符号化することができる。使用される符号化方法は、ステップS301におけるProfile/Tier/Levelを符号化することにより係数群のサイズを指示する方法以外のパラメータセットで係数群のサイズを符号化する他の方法と同じであるが、符号化ビットをスライスヘッダ情報データ単位のコードストリームに書き込む。
ステップS303において、ブロック層データ単位において係数群のサイズを符号化し、ブロック層データ単位において係数群のサイズのパラメータを符号化する。
ブロック層データ単位において、符号化ブロックにおける変換ブロックが使用する係数群のサイズを指示するためのパラメータを符号化する。例えば、1つの符号化方法は、ブロック層データ単位において、係数群の幅および高さのような使用される係数群のサイズを符号化することである。例えば、1つの符号化方法は、ブロック層データ単位において1つのインデックス値を符号化し、前記インデックス値は1つの係数群のサイズに対応することである。例えば、1つの符号化方法は、ブロック層データ単位において1つまたは複数のフラグ情報を符号化し、前記フラグ情報は、前記符号化ブロックにおける変換ブロックが使用する係数群のサイズが前記フラグ情報により指示される符号化された1つの変換ブロックと同じであることを指示し、前記符号化された変換ブロックは、前記変換ブロックと同じ画像に位置する符号化された変換ブロック(例えば、上に隣接ブロック、左に隣接ブロック等)であってもよいし、前記変換ブロックと異なる画像に位置する符号化されたブロック(即ち、時間領域で隣接ブロック)であってもよく、例えば、ブロック層データ単位において「上に隣接変換ブロックの係数群のサイズと同じである」というフラグ情報を符号化することである。
図4は、本発明の実施例によるスキャン方式のパラメータを符号化するデータ処理のフローチャートである。
好ましくは、前記処理フローで出力されるのは、スキャン方式に関連するパラメータを符号化した後のコードストリームである。
ステップS401において、パラメータセットデータ単位においてスキャン方式のパラメータを符号化し、パラメータセットデータ単位においてスキャン方式のパラメータを符号化する。
パラメータセットデータ単位において使用可能なスキャン方式の指示情報を符号化する。ここで、スキャン方式は、プリセットされた固定経路のスキャン方式であってもよいし、非固定経路のスキャン方式であってもよい。非固定経路のスキャン方式を用いる場合、好ましくは、パラメータセットデータ単位において変換係数のスキャン前後における座標対応関係を符号化する。例えば、変換ブロックにおける座標位置が(m、n)に等しい変換係数(または、インデックス番号がm×nTbS+nに等しく、ただし、nTbSは変換ブロックの幅である)に対応するスキャン後の番号位置はkに等しい。
好ましくは、使用できる係数群のサイズをプロファイル/ティア/レベル(Profile/Tier/Level)に予め設定し、異なるProfile/Tier/Levelに対して1種または複数種の使用可能なスキャン方式を設定する。例えば、低いLevel(例えば、640×480以下の解像度のビデオの符号化に対応する)の場合、デフォルトの右上斜め、水平および垂直のスキャン方式を使用し、高いLevel(例えば、720p、1080p、2K等の大きな解像度のビデオの符号化に対応する)の場合、前述した低いLevelに使用するデフォルトの3種のスキャン方式に加え、Zig-zagスキャン方式、他の対角スキャン方式(例えば、右下斜め、左下斜め等)を更に使用することができ、最大のLevel(例えば、4K、8K等の超大解像度のビデオの符号化に対応する)の場合、前述したスキャン方式に加え、非固定スキャン経路のスキャン方式を更に使用できる。パラメータセットデータ単位において、Profile/Tier/Levelの指示情報を符号化する。非固定経路のスキャン方式の場合、パラメータセットデータ単位において、変換係数のスキャン前後における座標対応関係を符号化する。例えば、変換ブロックにおける座標位置が(m、n)に等しい変換係数(または、インデックス番号がm×nTbS+nに等しく、ただし、nTbSは変換ブロックの幅である)に対応するスキャン後の番号位置はkに等しい。
ステップS402において、スライスヘッダ情報データ単位においてスキャン方式のパラメータを符号化し、スライスヘッダ情報データ単位においてスキャン方式のパラメータを符号化する。
スライスヘッダ情報データ単位において前記スライスが引用した(refer to)パラメータセットのパラメータセットインデックス番号(parameter set identifier)を符号化する。前記スライスを符号化する過程において、引用したパラメータセットに設定される使用可能なスキャン方式を使用することができる。
好ましくは、特に、スライスヘッダ情報で使用可能なスキャン方式のパラメータを符号化することにより、前記スライスが引用したパラメータセットにおける対応するパラメータ設定を対応して上書きすることができる。使用される符号化方法は、ステップS401におけるProfile/Tier/Levelを符号化することによりスキャン方式を指示する方法以外のパラメータセットでスキャン方式のパラメータを符号化する他の方法と同じであるが、符号化ビットをスライスヘッダ情報データ単位のコードストリームに書き込む。
好ましくは、前記スライスが引用したパラメータセットにスキャン方式のパラメータが含まれていない場合、スライスヘッダ情報で使用可能なスキャン方式のパラメータを符号化することができる。使用される符号化方法は、ステップS401におけるProfile/Tier/Levelを符号化することによりスキャン方式を指示する方法以外のパラメータセットでスキャン方式のパラメータを符号化する他の方法と同じであるが、符号化ビットをスライスヘッダ情報データ単位のコードストリームに書き込む。
好ましくは、スライスヘッダ情報データ単位において変換係数のスキャン前後における座標対応関係を符号化する。例えば、変換ブロックにおける座標位置が(m、n)に等しい変換係数(または、インデックス番号がm×nTbS+nに等しく、ただし、nTbSは変換ブロックの幅である)に対応するスキャン後の番号位置はkに等しい。
ステップS403において、ブロック層データ単位においてスキャン方式のパラメータを符号化し、ブロック層データ単位においてスキャン方式のパラメータを符号化する。
ブロック層データ単位において、符号化ブロックにおける変換ブロックが使用するスキャン方式を指示するためのパラメータを符号化する。例えば、1つの符号化方法は、ブロック層データ単位において該1つのスキャン方式に対応する1つのインデックス値を符号化することである。例えば、1つの符号化方法は、ブロック層データ単位において変換係数のスキャン前後における座標対応関係を符号化することである。例えば、変換ブロックにおける座標位置が(m、n)に等しい変換係数(または、インデックス番号がm×nTbS+nに等しく、ただし、nTbSは変換ブロックの幅である)に対応するスキャン後の番号位置はkに等しい。例えば、1つの符号化方法は、ブロック層データ単位において1つまたは複数のフラグ情報を符号化し、前記フラグ情報は前記符号化ブロックにおける変換ブロックが使用するスキャン方式が前記フラグ情報により指示される符号化された1つの変換ブロックと同じであることを指示するために用いられ、前記符号化された変換ブロックは、前記変換ブロックと同じ画像に位置する符号化された変換ブロック(例えば、上に隣接ブロック、左に隣接ブロック等)であってもよいし、前記変換ブロックと異なる画像に位置する符号化されたブロック(即ち、時間領域で隣接ブロック)であってもよく、例えば、ブロック層データ単位において「上に隣接変換ブロックのスキャン方式と同じである」というフラグ情報を符号化することである。
以上の実施形態の説明により、当業者は、上記実施例による方法がソフトウェアに必要な汎用ハードウェアプラットフォームを加えた方式で実現でき、もちろん、ハードウェアによっても実現できるが、多くの場合、前者の方はより好ましい実施形態であることを明らかに理解できる。このような理解に基づき、本発明の技術案は、ソフトウェア製品の形式で具現化でき、該コンピュータソフトウェア製品は1つの記憶媒体(例えば、ROM/RAM、磁気ディスク、光ディスク)に記憶され、1台の端末機器(携帯電話、コンピュータ、サーバ、またはネットワーク機器等)に本発明の各実施例に係る方法を実行させるための複数の命令を含む。
(実施例2)
本実施例において、上記移動端末で実行される画像の復号化方法を提供し、図5は、本発明の実施例による画像の復号化のフローチャートであり、図5に示すように、該フローは、以下のようなステップを含む。
ステップS502において、コードストリームを解析し、復号化ブロックの予測値を確定する。
ステップS504において、前記コードストリームを解析し、前記復号化ブロックにおける変換係数のスキャン方式、係数群のサイズ、および変換係数に関連する構文要素の値を確定する。
ステップS506において、前記スキャン方式および前記係数群のサイズに基づき、前記復号化ブロックにおける係数群を処理して前記構文要素を前記係数群における変換係数に転換する。
ステップS508において、前記変換係数を処理して変換係数の復元値を取得する。
ステップS510において、前記変換係数の復元値に対して1回または複数の変換を行い、前記復号化ブロックの予測差分値を取得する。
ステップS512において、前記予測値および前記予測差分値を用いて前記復号化ブロックの復元値を確定する。
好ましくは、前記コードストリームを解析し、前記復号化ブロックの予測値を確定することは、前記コードストリームを解析し、前記復号化ブロックのインター予測パラメータを取得し、前記インター予測パラメータに基づき、1つまたは複数の復号化した画像を参照画像として前記復号化ブロックの予測値を確定するという方法、または、前記コードストリームを解析し、前記復号化ブロックのイントラ予測パラメータを取得し、前記イントラ予測パラメータに基づき、前記復号化ブロックが位置する画像における復号化された部分を参照として前記復号化ブロックの予測値を確定するという方法の少なくとも1つを含む。
好ましくは、前記コードストリームを解析し、前記復号化ブロックにおける変換係数の係数群のサイズを確定することは、前記コードストリームを解析し、前記コードストリームにおけるデータ単位から第1係数群のパラメータを取得し、前記第1係数群のパラメータに基づいて前記係数群のサイズを確定し、前記コードストリームにおけるデータ単位は、1つまたは複数のパラメータセットと、スライスヘッダと、ブロック層データ単位との少なくとも1つを含むことを含む。
好ましくは、前記第1係数群のパラメータに基づいて前記係数群のサイズを確定することは、前記第1係数群のパラメータを用いて前記係数群のサイズを設定することを含む。
好ましくは、前記第1係数群のパラメータに基づいて前記係数群のサイズを確定することは、前記第1係数群のパラメータが前記復号化ブロックの隣接する復号化されたブロックを指示し、前記隣接する復号化されたブロックの係数群のサイズを用いて前記係数群のサイズを設定することを含む。
好ましくは、前記第1係数群のパラメータに基づいて前記係数群のサイズを確定することは、前記第1係数群のパラメータに基づき、係数群のサイズの候補値から前記復号化ブロックの変換係数の係数群のサイズを確定することを含む。
好ましくは、前記第1係数群のパラメータはインデックス番号を含み、前記インデックス番号の前記候補値における対応する係数群のサイズを用いて前記係数群のサイズを設定する。
好ましくは、前記第1係数群のパラメータはフラグビットを含み、前記フラグビットの前記候補値における対応する係数群のサイズを用いて前記係数群のサイズを設定する。
好ましくは、前記係数群のサイズの候補値は1つまたは複数の固定数値である。
好ましくは、前記第1係数群のパラメータに識別パラメータが含まれ、前記識別パラメータを用いて前記係数群のサイズの候補値を設定する。
好ましくは、前記識別パラメータは、係数群のサイズ、係数群の辺長、係数群の幅および高さの少なくとも1つを含む。
好ましくは、前記識別パラメータの最大値および最小値を取得し、プリセットされた分割方式に従って前記識別パラメータの前記最大値および最小値以外の値を確定し、前記識別パラメータの値を用いて前記候補値を設定するという方法と、前記識別パラメータの最大値および前記係数群の最大の分割階層を取得し、前記プリセットされた分割方式に従って前記識別パラメータの最大値以外の値を確定し、前記識別パラメータの値を用いて前記候補値を設定するという方法と、前記識別パラメータの最大値および前記係数群のサイズの最大値と最小値との間の差分値を取得し、前記プリセットされた分割方式に従って前記識別パラメータの最大値以外の値を確定し、前記識別パラメータの値を用いて前記候補値を設定するという方法と、前記識別パラメータの最小値および前記係数群の最大の上向き分割階層を取得し、前記プリセットされた分割方式に従って前記識別パラメータの最小値以外の値を確定し、前記識別パラメータの値を用いて前記候補値を設定するという方法と、前記識別パラメータの最小値および前記係数群のサイズの最大値と最小値との間の差分値を取得し、前記プリセットされた分割方式に従って前記識別パラメータの最小値以外の値を確定し、前記識別パラメータの値を用いて前記候補値を設定するという方法とを含む、1種または複数種の方法を用い、前記識別パラメータを用いて前記係数群のサイズの候補値を設定する。
好ましくは、前記プリセットされた分割方式は、4分割式、3分割式、2分割式の少なくとも1つを含む。
好ましくは、前記識別パラメータを用いて前記係数群のサイズの候補値を設定することは、前記識別パラメータのデフォルト値を用いて前記候補値を設定することを含む。
好ましくは、前記識別パラメータを用いて前記係数群のサイズの候補値を設定することは、前記識別パラメータが、対応する係数群のサイズが前記候補値に含まれているか否かを指示する1つまたは複数のフラグビットであり、前記識別パラメータに基づいて前記候補値に含まれている係数群のサイズを設定することを含む。
好ましくは、前記識別パラメータを用いて前記係数群のサイズの候補値を設定することは、前記識別パラメータが、プリセットされたProfile/Tier/Levelに対応する1つまたは複数の係数群のサイズを指示し、前記識別パラメータに基づいて前記候補値に含まれている係数群のサイズを設定することを含む。
好ましくは、前記第1係数群のパラメータに基づいて前記係数群のサイズを確定することは、前記第1パラメータグループのパラメータに前記復号化ブロックの第1復号化パラメータが含まれ、前記復号化ブロックの第1復号化パラメータに基づいて前記係数群のサイズを前記第1復号化パラメータに対応する係数群のサイズとし、第1復号化パラメータは、前記復号化ブロックに含まれている変換ブロックのサイズと、前記復号化ブロックの予測モードと、前記復号化ブロックに含まれている変換ブロックが使用する変換タイプとの1つを少なくとも含むことを含む。
好ましくは、前記係数群のサイズを前記第1復号化パラメータに対応する係数群のサイズとすることは、前記復号化ブロックに含まれている変換ブロックのサイズが第1プリセット値に等しい場合、前記係数群のサイズを前記第1プリセット値に対応する係数群のサイズとすることを含む。
好ましくは、前記第1パラメータグループのパラメータに基づき、前記第1プリセット値に対応する係数群のサイズを取得する。
好ましくは、前記係数群のサイズを前記第1復号化パラメータに対応する係数群のサイズとすることは、前記復号化ブロックの予測モードが第1プリセットモードに等しい場合、前記係数群のサイズを前記第1プリセットモードに対応する係数群のサイズとすることを含む。
好ましくは、前記第1パラメータグループのパラメータに基づき、前記第1プリセットモードに対応する係数群のサイズを取得する。
好ましくは、前記係数群のサイズを前記第1復号化パラメータに対応する係数群のサイズとすることは、前記復号化ブロックに含まれている変換ブロックが使用する変換タイプが第1変換タイプに等しい場合、前記係数群のサイズを前記第1変換タイプに対応する係数群のサイズとすることを含む。
好ましくは、前記第1パラメータグループのパラメータに基づき、前記第1変換タイプに対応する係数群のサイズを取得する。
好ましくは、前記係数群のサイズを前記第1復号化パラメータに対応する係数群のサイズとすることは、前記量子化パラメータの値が第2プリセット値に等しい場合、前記係数群のサイズを前記第2プリセット値に対応する係数群のサイズとすること、または、前記量子化パラメータの値が第1プリセット値の範囲内にある場合、前記係数群のサイズを前記第1プリセット値の範囲に対応する係数群のサイズとすることを含む。
好ましくは、前記第1パラメータグループのパラメータに基づき、前記第2プリセット値に対応する係数群のサイズを取得する。または、前記第1パラメータグループのパラメータに基づき、前記第1プリセット値の範囲に対応する係数群のサイズを取得する。
好ましくは、前記コードストリームを解析して前記変換係数のスキャン方式を確定することは、前記コードストリームにおけるデータ単位を解析して第1スキャン方式のパラメータを取得し、前記第1スキャン方式のパラメータに基づいて前記変換係数のスキャン方式を確定し、前記スキャン方式が前記変換係数の2次元マトリックスにおける要素に対する処理順序であり、前記コードストリームにおけるデータ単位は、1つまたは複数のパラメータセットと、スライスヘッダと、ブロック層データ単位との少なくとも1つを含むことを含む。
好ましくは、前記コードストリームにおけるデータ単位を解析して第1スキャン方式のパラメータを取得し、前記第1スキャン方式のパラメータに基づいて前記変換係数のスキャン方式を確定することは、前記第1スキャン方式のパラメータにより指示されるスキャン方式を前記変換係数のスキャン方式として使用することを含む。
好ましくは、前記第1スキャン方式のパラメータにより指示されるスキャン方式を前記変換係数のスキャン方式として使用することは、前記第1スキャン方式のパラメータが前記復号化ブロックの隣接する復号化されたブロックを指示し、前記隣接する復号化されたブロックのスキャン方式を用いて前記変換係数のスキャン方式を設定することを含む。
好ましくは、前記第1スキャン方式のパラメータにより指示されるスキャン方式を前記変換係数のスキャン方式として使用することは、前記第1スキャン方式のパラメータに基づいて候補スキャン方式から前記変換係数のスキャン方式を確定することを更に含む。
好ましくは、前記第1スキャン方式のパラメータにスキャン方式のインデックス番号が含まれ、前記スキャン方式のインデックス番号の前記候補スキャン方式における対応するスキャン方式を用いて前記変換係数のスキャン方式を設定する。
好ましくは、前記第1スキャン方式のパラメータにスキャン方式指示フラグビットが含まれ、前記スキャン方式指示フラグビットの前記候補スキャン方式における対応するスキャン方式を用いて前記変換係数のスキャン方式を設定することを更に含む。
好ましくは、前記候補スキャン方式は、1つまたは複数の固定スキャン方式と、前記第1スキャン方式のパラメータを用いて設定された前記候補スキャン方式との少なくとも1つを含む。
好ましくは、前記第1スキャン方式のパラメータを用いて前記候補スキャン方式を設定することは、前記第1スキャン方式のパラメータにデフォルトスキャン方式が含まれ、前記デフォルトスキャン方式を用いて前記候補スキャン方式を設定することを含む。
好ましくは、前記第1スキャン方式のパラメータを用いて前記候補スキャン方式を設定することは、前記第1候補スキャン方式のパラメータに1つまたは複数の候補スキャン方式指示フラグビットが含まれ、前記候補スキャン方式指示フラグビットに対応するスキャン方式を用いて前記候補スキャン方式を設定することを含む。
好ましくは、前記第1スキャン方式のパラメータを用いて前記候補スキャン方式を設定することは、前記第1スキャン方式のパラメータにより指示されるプリセットされたProfile/Tier/Levelに対応する1つまたは複数のスキャン方式を用いて前記候補スキャン方式を設定することを含む。
好ましくは、前記第1スキャン方式のパラメータを用いて前記候補スキャン方式を設定することは、前記第1スキャン方式のパラメータにより指示される前記変換係数の位置とスキャン後の変換係数の位置との間の対応関係を用いて前記候補スキャン方式を設定することを含む。
好ましくは、前記コードストリームにおけるデータ単位を解析して第1スキャン方式のパラメータを取得し、前記第1スキャン方式のパラメータに基づいて前記変換係数のスキャン方式を確定することは、前記第1スキャン方式のパラメータに前記復号化ブロックの第2復号化パラメータが含まれていることと、前記第2復号化パラメータに基づいて前記変換係数のスキャン方式を確定し、前記第2復号化パラメータは、前記復号化ブロックに含まれている変換ブロックのサイズと、前記復号化ブロックの予測モードと、前記復号化ブロックに含まれている変換ブロックが使用する変換タイプと、前記復号化ブロックのサイズとのうちの1つを少なくとも含むこととを含む。
好ましくは、前記第2復号化パラメータに基づいて前記変換係数のスキャン方式を前記第2復号化パラメータに対応するスキャン方式とすることは、前記復号化ブロックに含まれている変換ブロックのサイズが第3プリセット値に等しい場合、前記変換係数のスキャン方式を第3プリセット値に対応するスキャン方式とすることを含む。
好ましくは、前記第1パラメータグループのパラメータに基づき、前記第3プリセット値に対応するスキャン方式を取得する。
好ましくは、前記第2復号化パラメータに基づいて前記変換係数のスキャン方式を前記第2復号化パラメータに対応するスキャン方式とすることは、前記復号化ブロックの予測モードが第2プリセットモードに等しい場合、前記変換係数のスキャン方式を前記第2プリセットモードに対応するスキャン方式とすることを含む。
好ましくは、前記第1パラメータグループのパラメータに基づき、前記第2プリセットモードに対応するスキャン方式を取得する。
好ましくは、前記第2復号化パラメータに基づいて前記変換係数のスキャン方式を前記第2復号化パラメータに対応するスキャン方式とすることは、前記復号化ブロックに含まれている変換ブロックが使用する変換タイプが第2変換タイプに等しい場合、前記変換係数のスキャン方式を前記第2変換タイプに対応するスキャン方式とすることを含む。
好ましくは、前記第1パラメータグループのパラメータに基づき、前記第2変換タイプに対応するスキャン方式を取得する。
好ましくは、前記第2復号化パラメータに基づいて前記変換係数のスキャン方式を前記第2復号化パラメータに対応するスキャン方式とすることは、前記復号化ブロックのサイズが第4プリセット値に等しい場合、前記変換係数のスキャン方式を前記第4プリセット値に対応するスキャン方式とすることを含む。
好ましくは、前記第1パラメータグループのパラメータに基づき、第4プリセット値に対応するスキャン方式を取得する。
好ましくは、前記コードストリームを解析し、変換係数に関連する構文要素の値を確定することは、前記構文要素が、非0係数の開始位置を指示する構文要素と、係数群に非0係数が含まれていることを指示する構文要素と、係数群における非0係数の位置を指示する構文要素と、係数群における非0係数の値を指示する構文要素との少なくとも1つを含むことを含む。
好ましくは、前記変換係数を処理して変換係数の復元値を取得することは、前記変換係数に対してスケーリングScaling処理を行うと判断した場合、前記変換データに対してスケーリング処理を行って前記変換係数の復元値を取得することと、前記変換データに対してスケーリング処理を行わないと判断した場合、前記変換係数を用いて前記変換係数の復元値を設定することとを含む。
好ましくは、前記変換係数を処理する前に、前記方法は、前記コードストリームを解析して前記復号化ブロックの予測差分値の復元値を構成するための第3パラメータを取得することと、前記第3パラメータに基づき、前記変換係数に対してスケーリング処理を行う否かを判断することとを更に含む。
好ましくは、前記予測値および前記予測差分値を用いて前記復号化ブロックの復元値を確定し、前記方法は、前記予測値と記予測差分値との和に対してループフィルタ処理を行うことを更に含む。
好ましくは、入力されたコードストリームを解析(Parsing)し、規格に規定されたエントロピー復号化方法および2値化方法を用い、コードストリームにおける各フィールドに対応する1つまたは複数の「0」、「1」ビット列を対応するパラメータの値に転換する。前記パラメータの値に基づいて他のパラメータの値を導出し、例えば、コードストリームにおけるフラグビットの値が、復号化ブロックが画像における1つ目の復号化ブロックであることを指示する場合、前記復号化ブロックが位置するスライスにおける1つ目の復号化ブロックの画像におけるアドレスを指示するためのパラメータを0とする。
好ましくは、復号化ブロック予測差分値の復元値を構成するためのパラメータは、M×Nの2次元マトリックス形式で表すことができる変換係数であり、ただし、MおよびNは正の整数であり、MとNとは等しくてもよいし、MとNとは等しくなくてもよい。前記2次元マトリックスは1つの変換ブロックに対応でき、以下の説明で、前記M×Nの2次元マトリックス形式で表す変換係数の代わりに「変換ブロック」を用いる。ここで、コードストリームを解析して取得した指示情報が、前記変換ブロックに対してスケーリング(Scaling)操作を行うことを指示する場合、復元した前記変換係数は、実施例1におけるエンコーダが量子化過程で出力した量子化値(即ち、「Level」値)に対応し、逆に、コードストリームを解析し取得した指示情報が、前記変換ブロックに対してスケーリング操作を行わないことを指示する場合、復元した前記変換係数は、前述したエンコーダが前記予測差分値を変換した後に得たデータに対応する。
好ましくは、係数群のサイズを確定し、係数群はW×H個の変換係数を含み、ただし、WおよびHは正の整数であり、WとHとは等しくてもよいし、WとHとは等しくなくてもよく、且つ、W≦M、H≦Nである。1つまたは複数の係数群は変換ブロックを構成する。
好ましくは、使用される係数群のサイズは、プリセットされた固定値であってもよいし、1つまたは複数のパラメータセット(Parameter Set)、スライスヘッダ(Slice Header)、符号化単位(Coding Unit)を含むコードストリームのうちの1つまたは複数のデータ単位を解析することにより使用可能な係数群のサイズを取得してもよい。
好ましくは、暗示的な導出の方式を用いて係数群のサイズを確定することができる。コードストリームを解析して取得した前記変換ブロックが位置する復号化ブロックの符号化モード(Coding Mode)、変換ブロックサイズ、量子化パラメータ、変換ブロックが使用する変換タイプ等の1つまたは複数のパラメータに基づき、前記変換ブロックの係数群のサイズを確定することができる。下記例において、前述したエンコーダ実施例に対応し、4×4および8×8という2種の係数群のサイズを用いることができるように構成される。前記方法は、より多くの係数群のサイズを使用する場合に拡張できる。使用可能な係数群のサイズは、コードストリームを解析することにより取得したパラメータであってもよいし、固定的に設定された値であってもよい。下記例における1種の方法を用いるか、または複数種の方法を合わせて用いて係数群のサイズを確定することができる。
例えば、復号化ブロックにおける変換ブロックのサイズが16×16よりも大きい場合、係数群のサイズを8×8とするように設定し、復号化ブロックにおける変換ブロックのサイズが16×16以下である場合、係数群のサイズを4×4とするように設定する。正方形でない矩形変換ブロックの場合、変換ブロックの高さおよび幅に応じて対応して用いられる係数群のサイズを設定することができ、例えば、変換ブロックの高さおよび幅のうちの小さい値が16よりも大きい場合、高さおよび幅のうちの小さい値が8に等しい矩形係数群を使用し、逆に、高さおよび幅のうちの小さい値が4に等しい矩形係数群を使用する。
例えば、インター予測モードの復号化ブロックにおける変換ブロックに対応して使用する係数群のサイズを8×8と設定し(8×8および4×4の変換ブロックが使用する係数群のサイズを4×4と設定する)、イントラ予測モードの復号化ブロックにおける変換ブロックに対応して使用する係数群のサイズを8×8と設定する(16×16、8×8および4×4の変換ブロックが使用する係数群のサイズを4×4と設定する)。
例えば、復号化ブロックの量子化パラメータに基づいて含まれている変換ブロックが使用する係数群のサイズの値を確定する。H.265/HEVC規格における量子化パラメータの設定方式を例とし、1つの実施形態において、量子化パラメータの値が37以上である場合、係数群のサイズを8×8と設定し(8×8および4×4の変換ブロックが使用する係数群のサイズを4×4と設定する)、逆に、係数群のサイズを4×4と設定する。
例えば、離散コサイン変換(Discrete Cosine Transform、DCT)設計に基づく変換を使用する復号化ブロックの場合、係数群のサイズを8×8と設定する(8×8および4×4の変換ブロックが使用する係数群のサイズを4×4と設定する)。離散サイン変換(Discrete Sine Transform、DST)設計に基づく変換を使用する復号化ブロックの場合、係数群のサイズを4×4と設定する。カルーネン・レーベ変換(Karhunen-Loeve Transform、KLT)設計に基づく変換を使用する復号化ブロックの場合、係数群のサイズを8×8と設定する(8×8および4×4の変換ブロックが使用する係数群のサイズを4×4と設定する)。2回または複数回の変換を使用する復号化ブロックの場合、係数群のサイズを8×8と設定する(8×8および4×4の変換ブロックが使用する係数群のサイズを4×4と設定する)。
好ましくは、1つまたは複数のパラメータセットと、スライスヘッダと、符号化単位と、変換ブロックデータ単位とを含む前記コードストリームにおける1つまたは複数のデータ単位を解析し、前記変換ブロックの係数群のサイズを指示するための識別情報を取得する。
好ましくは、変換係数のスキャン方式を確定する。実施例1における前記エンコーダの処理フローにおいて、前記スキャン方式は、変換係数の2次元マトリックスにおける要素に対する処理順序を指示し、通常、該処理順序も、前述したエンコーダが変換係数をコードストリームに書き込む順序に対応する。従い、それに対応し、処理フローにおいて、他の関連パラメータ(例えば、非0係数フラグビット等)と合わせ、コードストリームを解析することによりコードストリームにおける変換係数を取得する優先順位に従い、前記スキャン方式は、各変換係数の変換ブロックにおける位置を指示する。例えば、スキャン順序に従い、前述したエンコーダは、変換ブロックにおける座標位置が(m、n)の変換係数をk個目の順序でコードストリームに書き込み、コードストリームからk個目の変換係数を取得した後、該変換係数を変換ブロックにおける座標位置が(m、n)の要素とする。通常、前述したエンコーダの処理フローにおいて、スキャン方式が指示する順序(正順または逆順)に従って1つのM行N列の2次元マトリックスにおける要素を順次読み取り、1つの1行M×N列(またはM×N行1列)の1次元マトリックスを等価的に得ることができる。それに対応し、スキャン方式が指示する順序(正順または逆順)に従い、コードストリームを復号化して得られた前記1行M×N列(またはM×N行1列)の1次元マトリックスを、エンコーダの入力マトリックスに一致するM行N列の2次元マトリックスに並べ替えることができる。前述したエンコーダと同様に、稲妻形(Zia-zag)スキャン順序、水平スキャン(Horizontal scan)順序、垂直スキャン(Vertical scan)順序、対角スキャン(Diagonal scan)順序(例えば、右上斜めスキャン(Diagonal up-right scan)順序)等のようなプリセットされた1種または複数種の変換係数マトリックスのスキャン方式を使用することができる。
好ましくは、暗示的な導出の方式を用いて前記変換ブロックの変換係数マトリックスのスキャン方式を確定することができる。コードストリームを解析し取得した前記変換ブロックが位置する復号化ブロックの符号化モード(Coding Mode)、復号化ブロックサイズ、変換ブロックサイズ等の1つまたは複数のパラメータに基づき、前記変換ブロックのスキャン方式を確定することができる。
例えば、インター予測モードで右上斜めスキャン方式を対応して使用するように設定し、復号化ブロックのサイズが8×8よりも大きい場合のイントラ予測モードで右上斜めスキャン方式を対応して使用するように設定し、復号化ブロックサイズが8×8以下である場合のイントラ予測モードでイントラ予測方向が指示する方向のスキャン方式を対応して使用し、直流(DC)モードおよび平面(Planar)モード等の方向性予測を使用しないモードで右上斜めスキャン方式を使用するように設定する。好ましくは、イントラ予測方向を分類することができ、各種類が異なるスキャン方式に対応し、例えば、垂直方向、および垂直方向で指定角度だけ左右にずらしたイントラ予測方向で、垂直スキャン方式を使用し、水平方向、および水平方向で指定角度だけ上下にずらしたイントラ予測方向で、水平スキャン方式を対応して使用し、45度の角度、および角度方向で指定角度だけ上下にずらしたイントラ予測方向で、対角スキャン方式を使用することを更に含んでもよい。
好ましくは、1つまたは複数のパラメータセットと、スライスヘッダと、符号化単位と、変換ブロックデータ単位とを含む前記コードストリームにおける1つまたは複数のデータ単位を解析し、変換ブロックが使用するスキャン方式を指示する情報を取得する。
好ましくは、1つまたは複数のパラメータセットと、スライスヘッダと、符号化単位と、変換ブロックデータ単位とを含む前記コードストリームにおける1つまたは複数のデータ単位を解析し、スキャン方式の情報を取得する。前記スキャン方式の情報に基づき、前記変換ブロックのスキャン方式を確定する。前記スキャン方式情報の1つの表現方法は、変換ブロックにおける変換係数の位置とスキャン後の位置との間の対応関係表であり、なお、前述したエンコーダにおいて、該対応関係表は、変換ブロックにおける座標位置が(m、n)に等しい変換係数(または、インデックス番号がm×nTbS+nに等しく、ただし、nTbSは変換ブロックの幅である)に対応するスキャン後の番号位置がkに等しいことを指示する。それに対応し、本実施例において、該対応関係表が指示する等価情報は、コードストリームを解析して得られた位置番号がkに等しい変換係数の変換ブロックにおける位置座標が(m、n)(または、インデックス番号がm×nTbS+nに等しく、ただし、nTbSは変換ブロックの幅である)であることである。特に、前記方法と比べ、前述した方法において、確定した各種のスキャン方式は、いずれも固定した順序に従って変換ブロックにおける係数群、係数群における変換係数を処理し、異なるスキャン方式は異なるスキャン順序を定義する。
好ましくは、変換ブロックにおける変換係数を解析する。変換ブロックのサイズおよび係数群のサイズに基づき、変換ブロックに含まれている各係数群の位置を確定する。前記係数群の位置は、係数群における左上隅係数の変換ブロック(または、復号化画像)における位置座標として表すことができる。前記スキャン方式が指示する順序に従い、係数群を順次処理する。1つの係数群は、前記スキャン方式が指示する順序に従い、係数群における対応する要素の値を、コードストリームを解析し得られた変換係数の値とする。特に、コードストリームを解析して1つの係数群に含まれている変換係数が全て0である(または、係数群に非0変換係数が含まれていないことに相当する)という指示を得ると、解析ユニットは、該係数群に含まれている係数を全て0とする。ここで、変換ブロックにおける係数群に対する処理順序および係数群における変換係数に対する処理順序は同じであってもよいし、異なってもよい。
好ましくは、前記は、更に前記復号化ブロック予測値を構成するためのパラメータに基づいて前記復号化ブロックの予測値を構成するために用いられる。現在の復号化画像における部分的に復元された一部の復号化画像バッファに記憶された復号化された画像に基づいて前記復号化ブロックの予測値を構成する。
前記パラメータが、前記復号化ブロックがインター予測を使用することを指示する場合、1つまたは複数の参照画像リストを構成し、各参照画像リストには1つまたは複数の参照画像が含まれ、参照画像は、参照画像リスト指示と、参照画像インデックスと、動きベクトルとを含み、参照画像で前記復号化ブロックの1つまたは複数のマッチングブロックを確定し、出力されるインター予測値を前記復号化ブロックの予測値とする。
好ましくは、復号化ブロックが位置する現在の復号化画像を参照画像として前記復号化ブロックのイントラ予測値を取得する。ここで、イントラ予測とは、復号化ブロックが位置する画像におけるデータのみを参照として得られた予測値を意味する。このような場合、現在の復号化画像における部分的に復元された部分を使用する。
好ましくは、前記パラメータが、前記復号化ブロックがイントラ予測を使用することを指示する場合、実施例1に類似する方法により前記復号化ブロックの復元された隣接画素点を確定してイントラ予測の参照画素点とする。前記復号化ブロック予測値を構成するためのパラメータに基づいてイントラ予測モードを確定し、実施例1と同じ方法を用いて前記復号化ブロックのイントラ予測値を計算する。特に、前記復号化ブロック予測値を構成するためのパラメータが、前記復号化ブロックのマッチングブロックの現在の一部の復号化画像における位置を指示する場合、マッチングブロックを前記復号化ブロックのイントラ予測値とする。確定されたイントラ予測値を前記復号化ブロックの予測値とする。
好ましくは、前記復号化ブロック予測差分値の復元値を構成するためのパラメータにおけるQPおよび係数の量子化値(即ち、「Level」値)をスケーリング操作(Scaling)の入力とする。量子化パラメータQPを使用することにより、前記係数の量子化値に対してスケーリング操作を行い、変換係数の復元値を取得する。従って、逆量子化ユニットはスケーリングユニットと呼ばれてもよい。
好ましくは、前記変換係数の復元値、復号化ブロック予測差分値の復元値を構成するためのパラメータにおける変換パラメータを取得する。なお、前記出力された復号化ブロック予測差分値の復元値を構成するためのパラメータに基づいて現在の復号化ブロックに対してスケーリング操作を使用しないと判断した場合、前記出力された変換係数を逆変換に用いる。
実施例1に類似する方法に基づき、前記復号化ブロックの予測差分値の復元値を取得する。なお、ここでいう「逆変換」は、エンコーダにおける「変換」に対するものである。ビデオ符号化規格において、変換方法、即ち、変換係数の復元値を予測差分値の復元値に転換するための変換方法を規定する。
好ましくは、前記復号化ブロックの復元値を計算し、前記復号化ブロックの復元値を画像バッファに記憶する。前記画像バッファは、画像復号化過程において個別に割り当てられた記憶空間であってもよい。
フィルタパラメータを取得する。前記フィルタパラメータは、使用されるフィルタの指示情報と、フィルタ係数と、フィルタの制御パラメータとを含む。フィルタおよび前記フィルタパラメータを合わせて使用することにより、前記画像バッファにおけるデータをフィルタリング処理し、前記画像の復号化画像を取得する。なお、本実施例におけるフィルタは1種または複数種のフィルタでカスケード接続されて構成されてもよい。例えば、H.265/HEVC規格において、デブロッキングフィルタリング(Deblocking)およびサンプル適応オフセット補償フィルタ(Sample Adaptive Offset、SAO)という2つのフィルタでカスケード接続されて構成される。ニューラルネットワークフィルタを更に含んでもよい。好ましくは、前記画像バッファにおけるデータをフィルタリングする操作は、画像層で行うことができ、即ち、前記画像における全ての復号化ブロックの復元値がいずれも前記画像バッファに書き込まれた後、画像バッファにおけるデータをフィルタリング処理する。好ましくは、前記画像バッファにおけるデータをフィルタリングする操作は、ブロック層で行うことができ、即ち、ある復号化ブロックの復元データが後続の復号化ブロックの参照データとして用いられない場合、該復号化ブロックの復元データをフィルタリング処理する。
図6は、本発明の実施例による係数群のサイズを解析するデータ処理のフローチャートである。
ステップS601において、パラメータセットデータ単位における係数群のサイズを解析し、データストリームにおけるパラメータセットデータ単位に対応するコードストリームを解析し、復号化過程において使用可能な係数群のサイズを取得する。
好ましくは、前記パラメータセットデータ単位とは、シーケンス全体に適用されるパラメータデータを担持するパラメータセットデータ単位を意味し、例えば、H.265/HEVC規格におけるビデオパラメータセット(Video Parameter Set、VPS)、シーケンスパラメータセット(Sequence Parameter Set、SPS)である。前記パラメータセットデータ単位は、画像に適用されるパラメータデータを担持するパラメータセットデータ単位を更に含んでもよく、例えば、適応パラメータセット(Adaptive Parameter Set、APS)、H.265/HEVC規格における画像パラメータセット(Picture Parameter Set、PPS)である。
特に、APSまたはPPSにおけるパラメータがシーケンス全体における各画像に対しても変わらない場合、即ち、APSまたはPPSにおけるパラメータがシーケンス全体における各画像に適用される場合、APSまたはPPSは、シーケンス全体に適用されるパラメータデータを担持するパラメータセットデータ単位に相当する。好ましくは、特に、データストリームにおけるコードストリームを解析して取得した指示情報に基づき、またはデフォルトに設定された方法を採用し、画像に適用されるパラメータセットデータ単位におけるデータを用いてシーケンスに適用されるパラメータセットデータ単位における対応するデータを上書きすることができる。
好ましくは、データストリームにおけるパラメータセットデータ単位のコードストリームを解析し、パラメータセットデータ単位において複数種の係数群のサイズが使用可能であるか否かを指示するフラグビットを取得する。該フラグビットが「使用可能」を指示する場合、復号化ブロックを復号化する過程において、1種以上の候補係数群のサイズから前記復号化ブロックの変換係数を復号化するための係数群のサイズを確定することができる。該フラグが「使用不可」を指示する場合、デフォルトに設定された係数群のサイズのみを用いて変換係数を復号化する。
好ましくは、データストリームにおけるパラメータセットデータ単位のコードストリームを解析し、パラメータセットデータ単位において係数群のサイズのデフォルト値を取得することができる。係数群のサイズのデフォルト値を指示するためのパラメータを取得し、前記パラメータは、係数群のサイズを直接指示するパラメータであってもよいし、対応する係数群のサイズが係数群のサイズのデフォルト値であるか否かを指示するためのフラグビットであってもよい。好ましくは、取得したフラグビットが「複数種の係数群のサイズが使用不可である」ことを指示する場合、該フラグビットの後のフィールドを解析し続け、係数群のサイズのデフォルト値を取得する。
好ましくは、前述したフラグビットが「複数種の係数群のサイズが使用可能である」ことを指示する場合、使用可能な係数群のサイズを解析する。
好ましくは、1つの解析方法は、パラメータセットデータ単位を解析して最大と最小の使用可能な係数群のサイズを取得し、他の使用可能な係数群のサイズは、設定された最大から最小への導出方式(例えば、四分木方式)に従って暗示的な導出を行うことができ、例えば、解析して取得した最大と最小の使用可能な係数群のサイズがそれぞれ32×32および4×4であれば、前述した四分木方式に従い、パラメータセットデータ単位のフィールドが指示する使用可能な係数群のサイズは、32×32、16×16、8×8、および4×4を含むことである。第2種の解析方法は、パラメータセットデータ単位を解析して最大の使用可能な係数群のサイズ、および分割方式(例えば、四分木方式)に従う最大の分割階層を取得し、例えば、解析して取得した最大の使用可能な係数群のサイズが32×32であり、解析して取得した最大の許可される分割階層が3層であれば、パラメータセットデータ単位のフィールドが指示する使用可能な係数群のサイズは、32×32、16×16、8×8、および4×4を含み、あるいは、最大と最小の使用可能な係数群のサイズの間の差分値は、最大の分割階層でコードストリームに現れてもよく、上記例において、解析して取得した前記最大と最小許可値の差分値が3に等しい場合、最小の使用可能な係数群のサイズを4×4(即ち、2(log232-3)=4)とすることである。第3種の解析方法は、パラメータセットデータ単位を解析して最小の使用可能な係数群のサイズ、および分割方式(例えば、四分木方式)に従う最大の上向き階層を取得し、例えば、解析して取得した最小の使用可能な係数群のサイズが4×4であり、解析して取得した最大の上向き階層が3層であれば、パラメータセットデータ単位のフィールドが指示する使用可能な係数群のサイズは、32×32、16×16、8×8、および4×4を含み、あるいは、解析して取得した最大と最小の使用可能な係数群のサイズの間の差分値が3に等しい場合、最大の使用可能な係数群のサイズを32×32(即ち、2(log24+3)=32)とすることである。
好ましくは、1つの解析方法は、パラメータセットデータ単位を解析して最大と最小の使用可能な係数群の辺長を取得し、他の使用可能な係数群のサイズは、設定された辺長の最大から最小への導出方式(例えば、二分方式)に従って暗示的な導出を行うことができ、例えば、解析して取得した最大と最小の辺長がそれぞれ16および4であれば、パラメータセットデータ単位のフィールドが指示する使用可能な係数群の使用できる辺長は16、8および4を含み、対応して指示する係数群のサイズ(「幅×高さ」の形式で表す)は16×16、16×8、16×4、8×16、8×8、8×4、4×16、4×8、および4×4を含むことである。第2種の解析方法は、パラメータセットデータ単位を解析して最大の使用可能な係数群の辺長、および分割方式(例えば、二分方式)に従う最大の分割階層を取得し、例えば、解析して取得した最大の使用可能な係数群の辺長が16であり、最大の分割階層が2であれば、パラメータセットデータ単位のフィールドが指示する使用可能な係数群の使用できる辺長は16、8および4を含み、対応して指示する係数群のサイズは、16×16、16×8、16×4、8×16、8×8、8×4、4×16、4×8、および4×4を含み、あるいは、最大と最小の使用可能な係数群の辺長の間の差分値は、最大の分割階層としてコードストリームに現れてもよく、上記例において、解析して取得した前記最大と最小許可値の差分値が2に等しい場合、最小の使用可能な係数群のサイズを4×4(即ち、2(log216-2)=4)とすることである。第3種の解析方法は、パラメータセットデータ単位を解析して最小の使用可能な係数群の辺長および分割方式(例えば、二分方式)に従う最大の上向き階層を取得し、例えば、解析して取得した最小の使用可能な係数群の辺長が4であり、最大の上向き階層が2であれば、パラメータセットデータ単位のフィールドが指示する使用可能な係数群の使用できる辺長は16、8および4を含み、対応して指示する係数群のサイズは、16×16、16×8、16×4、8×16、8×8、8×4、4×16、4×8、および4×4を含み、あるいは、最大と最小の使用可能な係数群の辺長の間の差分値は、最大の上向き階層としてコードストリームに現れてもよく、上記例において、解析して取得した前記最大と最小の許可値の差分値が2に等しい場合、最大の使用可能な係数群のサイズを16×16(即ち、2(log24+2)=16)とすることである。第4種の解析方法は、パラメータセットデータ単位を解析して使用できる辺長に対応するフラグビットを取得し、前記フラグビットは、対応する辺長が使用可能であるか否かを指示するために用いられ、例えば、使用できる辺長が32、16、8および4を含むと、パラメータセットデータ単位を解析して「辺長32」に対応するフラグビットが「使用不可」を指示し、「辺長16、8および4」に対応する3つのフラグビットが「使用可能」を指示することを取得すれば、パラメータセットデータ単位のフィールドが指示する使用可能な係数群の使用できる辺長は16、8、4を含み、対応して指示する係数群のサイズは、16×16、16×8、16×4、8×16、8×8、8×4、4×16、4×8、および4×4を含むことである。
好ましくは、1つの解析方法は、パラメータセットデータ単位を解析して係数群の幅および高さの最大と最小の使用可能な値を取得し、他の使用可能な係数群のサイズは、設定された幅および高さの最大から最小への導出方式(例えば、二分方式)に従って暗示的な導出を行うことができ、例えば、解析して取得した係数群の幅の最大と最小の使用可能値がそれぞれ16および4であり、解析して取得した係数群の高さの最大と最小の使用可能な値がそれぞれ8および4であれば、パラメータセットデータ単位のフィールドが指示する使用可能な係数群の幅は16、8および4を含み、指示する使用可能な係数群の高さは8および4を含み、対応して指示する係数群のサイズ(「幅×高さ」の形式で表す)は、16×8、16×4、8×8、8×4、4×8、および4×4を含むことである。第2種の解析方法は、パラメータセットデータ単位を解析して最大の使用可能な係数群の幅および分割方式(例えば、二分方式)に従う最大の分割階層を取得し、最大の使用可能な係数群の高さおよび分割方式(例えば、二分方式)に従う最大の分割階層を取得し、例えば、解析して取得した最大の使用可能な係数群の幅が16であり、最大の分割階層が2であり、解析して取得した最大の使用可能な係数群の高さが8であり、最大の分割階層が1であれば、パラメータセットデータ単位のフィールドが指示する使用可能な係数群の幅は16、8および4を含み、指示する使用可能な係数群の高さは8および4を含み、対応して指示する係数群のサイズ(「幅×高さ」の形式で表す)は、16×8、16×4、8×8、8×4、4×8、および4×4を含み、あるいは、最大と最小の使用可能な係数群の幅の間の差分値は、最大の分割階層としてコードストリームに現れてもよく、上記例において、パラメータセットデータ単位を解析して取得した前記最大と最小の許可される幅の値の差分値が2に等しい場合、最小の使用可能な係数群の幅を4(即ち、2(log216-2)=4)とし、あるいは、最大と最小の使用可能な係数群の高さの間の差分値は、最大の分割階層としてコードストリームに現れてもよく、上記例において、パラメータセットデータ単位を解析して取得した前記最大と最小の許可される高さの値の差分値が1に等しい場合、最小の使用可能な係数群の幅を4(即ち、2(log28-1)=4)とすることである。第3種の解析方法は、パラメータセットデータ単位を解析して最小の使用可能な係数群の幅および分割方式(例えば、二分方式)に従う最大の上向き階層を取得し、最小の使用可能な係数群の高さおよび分割方式(例えば、二分方式)に従う最大の上向き階層を取得し、例えば、解析して取得した最小の使用可能な係数群の幅が4であり、最大の上向き階層が2であり、解析して取得した最小の使用可能な係数群の高さが4であり、最大の上向き階層が1であれば、パラメータセットデータ単位のフィールドが指示する使用可能な係数群の幅は16、8および4を含み、指示する使用可能な係数群の高さは8および4を含み、対応して指示する係数群のサイズ(「幅×高さ」の形式で表す)は、16×8、16×4、8×8、8×4、4×8、および4×4を含み、あるいは、最大と最小の使用可能な係数群の幅の間の差分値は、最大の上向き階層としてコードストリームに現れてもよく、上記例において、パラメータセットデータ単位を解析して取得した前記最大と最小の許可される幅の値の差分値が2に等しい場合、最大の使用可能な係数群の幅の値を16(即ち、2(log24+2)=16)とし、あるいは、最大と最小の使用可能な係数群の高さの間の差分値は、最大の上向き階層としてコードストリームに現れてもよく、上記例において、パラメータセットデータ単位を解析して取得した前記最大と最小の許可される高さの値の差分値が1に等しい場合、最大の使用可能な係数群の高さの値を8(即ち、2(log24+1)=8)とすることである。第4種の解析方法は、パラメータセットデータ単位を解析して使用可能な幅および高さそれぞれに対応するフラグビットを取得し、前記フラグビットは、復号化過程においてそれに対応する幅および高さが使用可能であるか否かを指示するために用いられ、例えば、使用可能な幅および高さがいずれも32、16、8および4を含む場合、パラメータセットデータ単位を解析して取得した「幅32」に対応するフラグビットが「使用不可」を指示し、「幅16、8および4」に対応する3つのフラグビットがいずれも「使用可能」を指示し、「高さ32および16」に対応する2つのフラグビットがいずれも「使用不可」を指示し、「高さ8および4」に対応する2つのフラグビットがいずれも「使用可能」を指示すれば、パラメータセットデータ単位のフィールドが指示する使用可能な係数群の幅は16、8および4を含み、指示する使用可能な係数群の高さは8および4を含み、対応して指示する係数群のサイズ(「幅×高さ」の形式で表す)は、16×8、16×4、8×8、8×4、4×8、および4×4を含むことである。
好ましくは、1つの解析方法は、パラメータセットデータ単位を解析して使用可能な係数群のサイズに対応するフラグビットを取得し、前記フラグビットは、対応するパラメータグループのサイズが使用可能であるか否かを指示するために用いられる。例えば、その中に設定された使用可能な係数群のサイズが16×16、16×8、16×4、8×16、8×8、8×4、4×16、4×8、および4×4を含む場合、パラメータセットデータ単位を解析して取得した9つのフラグビットが、それぞれ「16×16使用不可、16×8使用可能、16×4使用可能、8×16使用不可、8×8使用可能、8×4使用可能、4×16使用不可、4×8使用可能、および4×4使用可能」を指示すると、16×8、16×4、8×8、8×4、4×8、および4×4を復号化過程において使用可能な係数群のサイズとすることである。
好ましくは、パラメータセットデータ単位を解析し、上記方法を用いて異なる符号化モード(Coding mode)を使用する復号化ブロックの使用可能な係数群のサイズを取得することができる。例えば、パラメータセットデータ単位を解析して取得した情報は、イントラ予測モードを用いる復号化ブロックにおける変換ブロックに許可される係数群のサイズが8×8および4×4であることを指示し、取得した情報は、インター予測モードを用いる復号化ブロックにおける変換ブロックに許可される係数群のサイズが16×16、8×8、および4×4であることを指示する。
好ましくは、パラメータセットデータ単位を解析し、上記方法を用いて異なる変換回数を使用する変換ブロックの使用可能な係数群のサイズを取得することができる。例えば、パラメータセットデータ単位を解析し、1回の変換を使用する変換ブロックに許可される係数群のサイズが8×8および4×4であり、複数回の変換を使用する変換ブロックに許可される係数群のサイズが16×16、8×8、および4×4であるという指示を取得する。
好ましくは、パラメータセットデータ単位を解析し、上記方法を用いて異なる変換方式を使用する変換ブロックの使用可能な係数群のサイズを取得することができる。例えば、パラメータセットデータ単位を解析し、DCTを基礎として設計された変換を使用する変換ブロックに許可される係数群のサイズが8×8および4×4であり、DSTを基礎として設計された変換を使用する変換ブロックに許可される係数群のサイズが16×16、8×8、および4×4であり、KLTを基礎として設計された変換を使用する変換ブロックに許可される係数群のサイズが32×32、16×16、8×8、および4×4であるという指示を取得する。
好ましくは、パラメータセットデータ単位を解析し、使用可能な係数群のサイズを切り替えるための制御パラメータを取得する。例えば、使用可能な係数群のサイズを切り替える制御パラメータとして量子化パラメータを使用する場合、前述した方法を用いてパラメータセットデータ単位を解析して量子化パラメータの分割区間、および各区間における使用可能な係数群のサイズを取得し、取得した切り替え方式の一例は、H.265/HEVC規格における量子化パラメータの定義方式のように、量子化パラメータが37以上であると、使用可能な係数群のサイズは16×16、8×8、および4×4であり、量子化パラメータ値が37よりも小さいが27以上であると、使用可能な係数群のサイズは8×8であり、量子化パラメータ値が27よりも小さいと、使用可能な係数群のサイズは4×4である。
好ましくは、使用可能な係数群のサイズをプロファイル/ティア/レベル(Profile/Tier/Level)に予め設定し、異なるProfile/Tier/Levelに対して1種または複数種の値の使用可能な係数群のサイズを設定する。例えば、低いLevel(例えば、640×480以下の解像度のビデオコードストリームの復号化に対応する)の場合、デフォルト値が4×4に等しい係数群のサイズを使用し、高いLevel(例えば、720p、1080p、2K等の大きな解像度のビデオコードストリームの復号化に対応する)の場合、8×8、4×4という2種の係数群のサイズを使用することができ、最大のLevel(例えば、4K、8K等の超大解像度のビデオコードストリームの復号化に対応する)の場合、16×16、8×8、4×4という3種の係数群のサイズを使用することができる。パラメータセットデータ単位を解析し、Profile/Tier/Levelの指示情報を取得し、使用可能な係数群のサイズを確定する。
選択可能な例示的なコードストリーム編成方法は以下のとおりである(該コードストリーム編成方法は表1に示す方法と同じである)、前記コードストリーム編成方法のフィールドは1つまたは複数のパラメータセットデータ単位に位置する。上記方法を用いて表3におけるコードストリームフィールドを解析し、復号化過程で使用可能な係数群のサイズを取得する。
表3において、各構文要素(Syntax element)の語義(semantics)は以下のとおりである。
log2_min_cg_side_lengthは係数群の最小辺長を表す。係数群の最小辺長は(1<<log2_min_cg_side_length)に等しい。ただし、「<<」は算術の右シフト演算子である。コードストリームの解析過程において、log2_min_cg_side_lengthに対してue(v)の方法を使用してエントロピー復号化を行う。
log2_diff_ma×_cg_side_lengthは係数群の最大辺長と最小辺長との間の差分値を表す。係数群の最大辺長は(1<<(log2_min_cg_side_length+log2_diff_ma×_cg_side_length))に等しい。コードストリームの解析過程において、log2_diff_ma×_cg_side_lengthに対してue(v)の方法を用いてエントロピー復号化を行う。
表3における構文要素のコードストリームにおける対応するフィールドを解析し、係数群のサイズを確定する例は以下のとおりである。例えば、ue(v)の方法を用いてlog2_min_cg_side_lengthを解析して取得した値が2に等しく、ue(v)の方法を用いてlog2_diff_ma×_cg_side_lengthを解析して取得した値が0に等しく、復号化過程においてデフォルトサイズが4×4の係数群のみを使用することを確定する。
例えば、ue(v)の方法を用いてlog2_min_cg_side_lengthを解析して取得した値が2に等しく、ue(v)の方法を用いてlog2_diff_ma×_cg_side_lengthを解析して取得した値が2に等しく、復号化過程で使用可能な係数群の使用可能な辺長が16、8、4を含み、対応して指示する使用可能な係数群のサイズが16×16、16×8、16×4、8×16、8×8、8×4、4×16、4×8、および4×4を含むことを確定する。
1つの選択可能な例示的なコードストリーム編成方法は以下のとおりである(該コードストリーム編成方法は表2に示す方法と同じである)、前記コードストリーム編成方法のフィールドは1つまたは複数のパラメータセットデータ単位に位置する。上記方法を用いて表4におけるコードストリームフィールドを解析し、復号化過程で使用可能な係数群のサイズを取得する。表4におけるコードストリームフィールドは、インター予測、イントラ予測を用いる復号化ブロックにおける変換ブロックの使用可能な異なる係数群のサイズを指示することができる。
表4における各構文要素(Syntax element)の語義(semantics)は以下のとおりである。
log2_min_cg_side_lengthは係数群の最小辺長を表す。係数群の最小辺長は(1<<log2_min_cg_side_length)に等しい。ここで、「<<」は算術の右シフト演算子である。コードストリームの解析過程において、log2_min_cg_side_lengthに対してue(v)の方法を用いてエントロピー復号化を行う。
log2_diff_ma×_inter_cg_side_lengthは、インター予測モードを用いる復号化ブロックにおける変換ブロックの係数群の最大辺長と最小辺長との間の差分値を表す。係数群の最大辺長は(1<<(log2_min_cg_side_length+log2_diff_ma×_cg_side_length))に等しい。コードストリームの解析過程において、log2_diff_ma×_cg_side_lengthに対してue(v)の方法を用いてエントロピー復号化を行う。
log2_diff_ma×_intra_cg_side_lengthは、イントラ予測モードを用いる復号化ブロックにおける変換ブロックの係数群の最大辺長と最小辺長との間の差分値を表す。係数群の最大辺長は(1<<(log2_min_cg_side_length+log2_diff_ma×_cg_side_length))に等しい。コードストリームの解析過程において、log2_diff_ma×_cg_side_lengthに対してue(v)の方法を用いてエントロピー復号化を行う。
表4における構文要素のコードストリームにおける対応するフィールドを解析し、係数群のサイズを確定する例は以下のとおりである。例えば、ue(v)の方法を用いてlog2_min_cg_side_lengthを解析して取得した値が2に等しく、ue(v)の方法を用いてlog2_diff_ma×_inter_cg_side_lengthおよびlog2_diff_ma×_intra_cg_side_lengthをそれぞれ解析して取得した2つの構文要素の値をいずれも0とし、復号化過程において、インター予測モードの復号化ブロックおよびイントラ予測モードの復号化ブロックに対していずれもデフォルトサイズが4×4の係数群のみを使用することを確定する。
例えば、ue(v)の方法を用いてlog2_min_cg_side_lengthを解析して取得した値が2に等しく、ue(v)の方法を用いてlog2_diff_ma×_inter_cg_side_lengthおよびlog2_diff_ma×_intra_cg_side_lengthをそれぞれ解析して取得した値がいずれも2に等しい。前記実施方法に記載されたように、復号化過程で使用可能な係数群使用できる辺長は16、8、4を含み、対応して指示する係数群のサイズは16×16、16×8、16×4、8×16、8×8、8×4、4×16、4×8、および4×4を含むことを確定する。このような場合、インター予測モードの復号化ブロックおよびイントラ予測モードの復号化ブロックにおける変換ブロックに対して同じ使用可能な係数群を用いる。
例えば、ue(v)の方法を用いてlog2_min_cg_side_lengthを解析して取得した値を2に等しくとし、ue(v)の方法を用いてlog2_diff_ma×_inter_cg_side_lengthを解析して取得した値を2に等しくとし、ue(v)の方法を用いてlog2_diff_ma×_intra_cg_side_lengthを解析して取得した値がいずれも1に等しい。前記実施方法に記載されたように、復号化過程におけるインター予測の復号化ブロックの使用可能な係数群の使用できる辺長が16、8および4を含み、対応して指示する係数群のサイズが16×16、16×8、16×4、8×16、8×8、8×4、4×16、4×8、および4×4を含むことを確定し、復号化過程におけるイントラ予測モードの復号化ブロックの使用可能な係数群の使用できる辺長が8および4を含み、対応して指示する係数群のサイズが8×8、8×4、4×8、および4×4を含むことを確定する。このような場合、インター予測モードの復号化ブロックおよびイントラ予測モードの復号化ブロックにおける変換ブロックに対して全く同じでない使用可能な係数群を用いる。
ステップS602において、スライスヘッダ情報データ単位における係数群のサイズを解析し、データストリームにおけるスライスヘッダ情報データ単位に対応するコードストリームを解析し、復号化過程において使用可能な係数群のサイズを取得する。
前記スライスが引用した(refer to)パラメータセットのパラメータセットインデックス番号(parameter set identifier)を解析し、引用したパラメータセットをアクティブ化し、パラメータセットに設定された使用可能な係数群のサイズを取得する。
好ましくは、特に、スライスヘッダ情報データ単位における使用可能な係数群のサイズに関連する構文単位に対応するフィールドを解析し、前記スライスの復号化過程で使用可能な係数群のサイズを取得し、前記スライスから引用したパラメータセットから取得した対応するパラメータを対応して上書きする。使用する解析方法は、ステップS601におけるProfile/Tier/Levelを解析することにより係数群のサイズを取得する方法以外のパラメータセットデータ単位を解析して係数群のサイズを取得する他の方法と同じである。
好ましくは、前記スライスが引用したパラメータセットに係数群のサイズに関連するパラメータが含まれていない場合、スライスヘッダ情報における使用可能な係数群のサイズに関連する構文単位に対応するフィールドを解析し、前記スライスの復号化過程で使用可能な係数群のサイズを取得する。使用する解析方法は、ステップS601におけるProfile/Tier/Levelを解析することにより係数群のサイズを取得する方法以外のパラメータセットデータ単位を解析して係数群のサイズを取得する他の方法と同じである。
ステップS603において、ブロック層データ単位における係数群のサイズを解析し、データストリームにおけるブロック層データ単位に対応するコードストリームを解析し、復号化過程において使用可能な係数群のサイズを取得する。
ブロック層データ単位を解析し、復号化ブロックにおける変換ブロックが使用する係数群のサイズを指示するためのパラメータを取得する。例えば、1つの解析方法は、ブロック層データ単位における変換ブロックの復号化に使用される係数群のサイズを指示する構文要素に対応するフィールド、例えば、係数群の幅および高さを解析することである。例えば、1つの解析方法は、ブロック層データ単位を解析して1つまたは複数のインデックス値を取得し、該インデックス値は1つの係数群のサイズに対応することである。例えば、1つの解析方法は、ブロック層データ単位を解析して1つまたは複数のフラグ情報を取得し、前記フラグ情報は、前記復号化ブロックにおける変換ブロックが使用する係数群のサイズが前記フラグ情報により指示される復号化された1つの変換ブロックと同じであることを指示し、前記復号化された変換ブロックは、前記変換ブロックと同じ画像に位置する復号化された変換ブロック(例えば、上に隣接ブロック、左に隣接ブロック等)であってもよいし、前記変換ブロックと異なる画像に位置する復号化されたブロック(即ち、時間領域の隣接ブロック)であってもよく、前記フラグ情報の一例は、「上に隣接変換ブロックの係数群のサイズと同じである」ことを指示するフラグ情報であってもよいことである。
図7は、本発明の実施例によるスキャン方式のパラメータを解析するデータ処理のフローチャートである。前記処理フローで入力されるのは、データストリームにおけるスキャン方式に関連するコードストリームであり、前記処理フローで出力されるのは、復号化過程で使用可能なスキャン方式、および復号化ブロックにおける変換ブロックを復号化する過程で使用されるスキャン方式である。
ステップS701において、パラメータセットデータ単位におけるスキャン方式のパラメータを解析し、データストリームにおけるパラメータセットデータ単位に対応するコードストリームを解析し、復号化過程において使用可能なスキャン方式を取得する。
パラメータセットデータ単位における使用可能なスキャン方式の指示情報を解析する。ここで、スキャン方式は、プリセットされた固定経路のスキャン方式であってもよいし、非固定経路のスキャン方式であってもよい。非固定経路のスキャン方式の場合、好ましくは、パラメータセットデータ単位を解析して変換係数のスキャン前後の座標対応関係を取得する。例えば、変換ブロックにおける座標位置が(m、n)に等しい変換係数(または、インデックス番号がm×nTbS+nに等しく、ただし、nTbSは変換ブロックの幅である)に対応するスキャン後の番号位置はkに等しい。
好ましくは、使用可能な係数群のサイズをプロファイル/ティア/レベル(Profile/Tier/Level)に予め設定し、異なるProfile/Tier/Levelに対して1種または複数種の使用可能なスキャン方式を設定する。例えば、低いLevel(例えば、640×480以下の解像度のビデオの符号化に対応する)の場合、デフォルトの右上斜め、水平および垂直のスキャン方式を使用し、高いLevel(例えば、720p、1080p、2K等の大きな解像度のビデオの符号化に対応する)の場合、前述した低いLevelに対して使用可能なデフォルトの3種のスキャン方式に加え、Zig-zagスキャン方式、他の対角スキャン方式(例えば、右下斜め、左下斜め等)を更に使用することができ、最大のLevel(例えば、4K、8K等の超大解像度のビデオの符号化に対応する)の場合、前述した高いLevelに対して使用可能なスキャン方式に加え、非固定スキャン経路のスキャン方式を更に使用できる。パラメータセットデータ単位を解析してProfile/Tier/Levelの指示情報を取得し、復号化過程で使用可能なスキャン方式を確定する。非固定経路のスキャン方式の場合、パラメータセットデータ単位を解析して変換係数のスキャン前後の座標対応関係を取得する。例えば、変換ブロックにおける座標位置が(m、n)に等しい変換係数(または、インデックス番号がm×nTbS+nに等しく、ただし、nTbSは変換ブロックの幅である)に対応するスキャン後の番号位置はkに等しい。
ステップS702において、スライスヘッダ情報単位におけるスキャン方式のパラメータを解析し、データストリームにおけるスライスヘッダ情報データ単位に対応するコードストリームを解析し、復号化過程において使用可能なスキャン方式を取得する。
スライスヘッダ情報データ単位におけるパラメータセットインデックス番号(parameter set identifier)を解析して前記スライスが引用した(refer to)パラメータセットを取得する。前記スライスを復号化する過程において、引用したパラメータセットに設定される使用可能なスキャン方式を使用することができる。
好ましくは、特に、スライスヘッダ情報を解析して使用可能なスキャン方式のパラメータを取得し、前記スライスが引用したパラメータセットから取得したスキャン方式のパラメータを対応して上書きする。好ましくは、使用する解析方法は、ステップS701におけるProfile/Tier/Levelを解析することによりスキャン方式を取得する方法以外のパラメータセットを解析してスキャン方式のパラメータを取得する他の方法と同じである。
好ましくは、前記スライスが引用したパラメータセットにスキャン方式のパラメータが含まれていない場合、スライスヘッダ情報を解析して前記スライスを復号化する過程における使用可能なスキャン方式のパラメータを取得する。使用する解析方法は、ステップS701におけるProfile/Tier/Levelを解析することによりスキャン方式を取得する方法以外のパラメータセットを解析してスキャン方式のパラメータを取得する他の方法と同じである。
好ましくは、スライスヘッダ情報データ単位を解析して変換係数のスキャン前後の座標対応関係を取得する。例えば、変換ブロックにおける座標位置が(m、n)に等しい変換係数(または、インデックス番号がm×nTbS+nに等しく、ただし、nTbSは変換ブロックの幅である)に対応するスキャン後の番号位置はkに等しい。
ステップS703において、ブロック層データ単位におけるスキャン方式のパラメータを解析し、データストリームにおけるブロック層データ単位に対応するコードストリームを解析し、1つの復号化ブロックを復号化する過程において使用するスキャン方式を取得する。
ブロック層データ単位を解析して前記復号化ブロックにおける変換ブロックが使用するスキャン方式を指示するためのパラメータを取得する。例えば、1つの解析方法は、ブロック層データ単位における1つまたは複数のインデックス値を解析し、該インデックス値は1つのスキャン方式に対応することである。例えば、1つの解析方法は、ブロック層データ単位における変換係数のスキャン前後の座標対応関係を解析し、例えば、変換ブロックにおける座標位置が(m、n)に等しい変換係数(または、インデックス番号がm×nTbS+nに等しく、ただし、nTbSは変換ブロックの幅である)に対応するスキャン後の番号位置はkに等しいことである。例えば、1つの解析方法は、ブロック層データ単位における1つまたは複数のフラグ情報を解析し、前記フラグ情報は、前記復号化ブロックにおける変換ブロックが使用するスキャン方式が前記フラグ情報により指示される復号化された1つの変換ブロックと同じであることを指示し、前記已復号化の変換ブロックは、前記変換ブロックと同じ画像に位置する復号化された変換ブロック(例えば、上に隣接ブロック、左に隣接ブロック等)であってもよいし、前記変換ブロックと異なる画像に位置する復号化されたブロック(即ち、時間領域の隣接ブロック)であってもよく、前記フラグ情報の一例は、「上に隣接変換ブロックのスキャン方式と同じである」ことを指示するフラグ情報であってもよいことである。
以上の実施形態の説明により、当業者は、上記実施例による方法がソフトウェアに必要な汎用ハードウェアプラットフォームを加えた方式で実現でき、もちろん、ハードウェアによっても実現できるが、多くの場合、前者の方はより好ましい実施形態であることを明らかに理解できる。このような理解に基づき、本発明の技術案は、ソフトウェア製品の形式で具現化でき、該コンピュータソフトウェア製品は1つの記憶媒体(例えば、ROM/RAM、磁気ディスク、光ディスク)に記憶され、1台の端末機器(携帯電話、コンピュータ、サーバ、またはネットワーク機器等)に本発明の各実施例に係る方法を実行させるための複数の命令を含む。
(実施例3)
本実施例において、画像の符号化装置を更に提供し、該装置は、上記実施例および好ましい実施形態を実現するために用いられ、既に説明した内容は説明を省略する。以下に使用されるように、「モジュール」という用語は、所定の機能のソフトウェアおよび/またはハードウェアの組み合わせを実現することができる。以下の実施例に説明される装置はソフトウェアで実現されることが好ましいが、ハードウェア、またはソフトウェアとハードウェアとの組み合わせによる実現も可能で構想されるものである。
図8は、本発明の実施例による画像の符号化装置の構造ブロック図であり、図8に示すように、該装置は、第1確定モジュール82と、変換モジュール84と、第2確定モジュール86と、符号化モジュール88とを備える。
第1確定モジュール82は、符号化ブロックの予測値を確定し、前記符号化ブロックと前記予測値との予測差分値を計算するために用いられる。
変換モジュール84は、前記予測差分値に対して1回または複数回の変換を行って変換データを取得し、前記変換データを用いて変換係数を確定するために用いられる。
第2確定モジュール86は、前記変換係数のスキャン方式および係数群のサイズを確定し、前記変換係数を1つまたは複数の係数群に分割し、前記スキャン方式に従って各前記係数群に含まれている変換係数をスキャンし、前記変換係数を1つまたは複数の構文要素に転換するために用いられる。
符号化モジュール88は、前記係数群のサイズおよび前記構文要素の値を符号化し、符号化したビットをコードストリームに書き込むために用いられる。
図9は、本発明の実施例による別の画像の符号化装置の構造ブロック図であり、図9に示すように、図8における全てのモジュールを含むほか、第2確定モジュール86は、CGサイズ確定ユニット92と、スキャン方式確定ユニット94と、変換係数処理ユニット96とを更に備える。符号化モジュール88は、コードストリーム生成ユニット98を更に備える。
第2確定モジュール86は、変換ブロックの係数群のサイズおよびスキャン方式を確定するために用いられる。図9に示す第2確定モジュール86の入力データは、データストリーム900およびデータストリーム901を含み、出力データはデータストリーム903である。データストリーム900は、第1確定モジュール82の出力データ(前記変換ブロックが位置する符号化ブロックのサイズ、符号化モードを含む)、変換モジュール84の出力データ(変換ブロックのサイズ、量子化パラメータを含む)である。データストリーム901は前記変換ブロックにおける変換係数であり、前記変換ブロックに対して量子化を使用しない場合、データストリーム901の変換係数は前述したエンコーダにおける変換モジュール84の出力データであり、前記変換ブロックに対して量子化を使用する場合、データストリーム901の変換係数は変換モジュール84における量子化された出力データである。データストリーム902は第2確定モジュール86における内部データストリームであり、CGサイズ確定ユニット92とスキャン方式確定ユニット94との間の双方向データストリームである。CGサイズ確定ユニット92は、係数群のサイズをデータストリーム902によりスキャン方式確定ユニット94に伝達し、スキャン方式確定ユニット94は、スキャン方式を指示するパラメータをデータストリーム902によりCGサイズ確定ユニット92に伝達する。データストリーム903は第2確定モジュール86の出力データであり、前記変換ブロックに対してエントロピー符号化を行うために使用される係数群のサイズおよびスキャン方式を指示するパラメータである。データストリーム903には、前記変換ブロックが使用する係数群のサイズ、スキャン方式を指示するパラメータを符号化する必要があるか否かを指示するフラグ情報が更に含まれている。
第2確定モジュール86において、CGサイズ確定ユニット92は、実施例1に係る係数群のサイズを確定する方法を用いて係数群のサイズを確定し、係数群のサイズの値をデータストリーム903に含める。CGサイズ確定ユニット92が使用するパラメータは、データストリーム900やデータストリーム901で伝達されるパラメータから由来し、且つ、必要の場合にデータストリーム902からスキャン方式のパラメータを取得する。スキャン方式確定ユニット94は、実施例1における前記変換ブロックにおける変換係数のスキャン方式を確定する方法を用いてスキャン方式を確定し、スキャン方式を指示するパラメータをデータストリーム903に含める。スキャン方式確定ユニット94が使用するパラメータは、データストリーム900やデータストリーム901で伝達されるパラメータから由来し、且つ、必要の場合にデータストリーム902から係数群のサイズの値を取得する。
好ましくは、第2確定モジュール86は、RDOの方法を用いて変換ブロックが使用する係数群のサイズと変換ブロックにおける変換係数のスキャン方式とを合わせて確定することができる。1つの選択可能な実施方法は、第2確定モジュール86がスキャン方式確定ユニット94の各候補スキャン方式を、データストリーム902を順次介してCGサイズ確定ユニット92に伝達し、CGサイズ確定ユニット92が、各候補スキャン方式での前記変換ブロックの係数群のサイズを確定し、第2確定モジュール86が、各候補スキャン方式および変換ブロックの係数群のサイズを用いて前記変換ブロックを符号化することにより生成した符号化ビット数を計算し、第2確定モジュール86が、符号化ビット数の最小値に対応する候補スキャン方式および係数群のサイズを選択し、スキャン方式を指示するパラメータおよび係数群のサイズの値をデータストリーム903に含めることである。
好ましくは、第2確定モジュール86は、RDOの方法を用いて変換ブロックが使用する係数群のサイズと変換ブロックにおける変換係数のスキャン方式とを合わせて確定することができる。別の選択可能な実施方法は、第2確定モジュール86が、CGサイズ確定ユニット92の各候補係数群のサイズの値を、データストリーム902を順次介してスキャン方式確定ユニット94に伝達し、スキャン方式確定ユニット94が、各候補係数群のサイズでの前記変換ブロックのスキャン方式を確定し、第2確定モジュール86が、各候補係数群のサイズおよびスキャン方式を用いて前記変換ブロックを符号化することにより生成した符号化ビット数を計算し、第2確定モジュール86が、符号化ビット数の最小値に対応する候補係数群のサイズおよびスキャン方式を選択し、係数群のサイズの値の指示およびスキャン方式のパラメータをデータストリーム903に含めることである。
変換係数処理ユニット96は、変換ブロックにおける変換パラメータをパラメータ化して表す。変換係数処理ユニット96の入力データはデータストリーム901およびデータストリーム903であり、出力はデータストリーム904である。変換係数処理ユニット96は、データストリーム903における係数群のサイズに基づき、データストリーム901における変換ブロックの変換係数を1つまたは複数の係数群に分割し、データストリーム903におけるスキャン方式を指示するパラメータに基づき、変換ブロックにおける変換係数をスキャンし、変換係数をパラメータ化して表す。変換係数処理ユニット96は、データストリーム903におけるスキャン方式を指示するパラメータが指示するスキャン順序を用いて変換係数マトリックスにおける係数群を順次処理する。各係数群に対し、変換係数処理ユニット96はデータストリーム903におけるスキャン方式を指示するパラメータが指示するスキャン順序を用いて該係数群における変換係数を順次処理する。ここで、変換係数処理ユニット96による係数群に対するスキャン順序は係数群における変換係数のスキャン順序と同じであってもよいし、異なってもよい。スキャン過程において、変換係数処理ユニット96は、最後の非0変換係数の位置を記録し、該位置を指示するデータをデータストリーム904に含める。変換係数処理ユニット96は、最後の非0変換係数を含む係数群から始め、データストリーム903におけるスキャン方式を指示するパラメータが指示するスキャン順序に従い、各係数群における係数が全て0値変換係数であるか否かを指示する(または、各係数群に非0変換係数が含まれているか否かを指示する)フラグビットを順次確定し、該フラグビットの値をデータストリーム904に含める。前述したフラグビットが対応する係数群に非0変換係数の係数群が含まれていることを指示する場合、変換係数処理ユニット96は、データストリーム903におけるスキャン方式を指示するパラメータが指示するスキャン順序に従い、前記係数群における各変換係数の値が0であるか否かを指示するフラグビットを順次確定し、該フラグビットをデータストリーム904に含める。変換係数処理ユニット96は、値が0に等しくない変換係数に対し、該変換係数符号(正の値であるか負の値であるかを指示するためのもの)を指示するための符号パラメータを指示し、変換係数の値をその絶対値に転換し、符号パラメータおよび変換係数の絶対値をデータストリーム904に含める。また、データストリーム903に係るフラグ情報が前記変換ブロックが使用する係数群のサイズを符号化する必要があることを指示する場合、変換係数処理ユニット96は、データストリーム903における係数群のサイズをデータストリーム904に含め、データストリーム903に係るフラグ情報が、前記変換ブロックが使用するスキャン方式を符号化する必要があることを指示する場合、変換係数処理ユニット96は、データストリーム903におけるスキャン方式を指示するパラメータをデータストリーム904に含める。データストリーム904は変換係数処理ユニット96の出力データである。
コードストリーム生成ユニット98は、変換ブロックにおける変換係数を表すパラメータを符号化して2値符号化ビットを生成し、符号化ビットをコードストリームに書き込む。コードストリーム生成ユニットの入力データはデータストリーム904およびデータストリーム905であり、出力はデータストリーム906である。データストリーム905は、エンコーダの設定パラメータにおける係数群のサイズ、スキャン方式等からの1つまたは複数のパラメータであり、前記設定パラメータが変換ブロックが使用可能な係数群のサイズを指示するために用いられ、前記設定パラメータは、更に変換ブロックが使用可能なスキャン方式を指示することができる。特に、エンコーダで使用可能な係数群のサイズの数および値が固定である場合、コードストリーム生成ユニット98は、データストリーム905に含まれている使用可能な係数群のサイズに関連するパラメータを符号化する必要がない。特に、エンコーダで使用可能なスキャン方式が固定である場合、コードストリーム生成ユニット98は、データストリーム905に含まれている使用可能なスキャン方式に関連するパラメータを符号化する必要がない。コードストリーム生成ユニット98はエントロピー符号化の方法を用いてデータストリーム904およびデータストリーム905におけるデータを符号化し、2値符号化ビットを取得し、符号化ビットをコードストリームに書き込み、データストリーム906を取得する。ここで、前記コードストリームにおける各フィールドの編成方式はビデオ符号化規格により定義される。コードストリーム生成ユニット98が使用可能なエントロピー符号化方法は、固定長符号化、可変長符号化、算術符号化等を含む。
なお、データストリームとは、ソフトウェアによる実現における関数の入口パラメータおよびリターンパラメータ、ハードウェアによる実現におけるバスで伝達されるデータ、記憶ユニット間で共有されるデータ(レジスタ共有データを含む)等を意味する。
なお、上記各モジュールは、ソフトウェアまたはハードウェアにより実現でき、後者は、上記モジュールがいずれも同一プロセッサに位置するという方式、または、上記各モジュールが任意の組み合わせの形式でそれぞれ異なるプロセッサに位置するという方式により実現できるが、これらに限定されない。
(実施例4)
本実施例において、上記実施例および好ましい実施形態を実現するための画像の復号化装置を更に提供し、既に説明した内容は説明を省略する。以下に使用されるように、「モジュール」という用語は、所定の機能のソフトウェアおよび/またはハードウェアの組み合わせを実現することができる。以下の実施例に説明される装置はソフトウェアで実現されることが好ましいが、ハードウェア、またはソフトウェアとハードウェアとの組み合わせによる実現も可能で構想されるものである。
図10は、本発明の実施例による画像の復号化装置の構造ブロック図であり、図10に示すように、該装置は、復号化モジュール1002と、転換モジュール1004と、処理モジュール1006と、変換モジュール1008と、計算モジュール1010とを備える。
復号化モジュール1002は、コードストリームを解析し、前記復号化ブロックの予測値、前記復号化ブロックにおける変換係数のスキャン方式、係数群のサイズ、および変換係数に関連する構文要素の値を確定するために用いられる。
転換モジュール1004は、前記スキャン方式および前記係数群のサイズに基づき、前記復号化ブロックにおける係数群を処理して前記構文要素を前記係数群における変換係数に転換するために用いられる。
処理モジュール1006は、前記変換係数を処理して変換係数の復元値を取得するために用いられる。
変換モジュール1008は、前記変換係数を処理し、処理後のデータに対して1回または複数の変換を行い、前記復号化ブロックの予測差分値を取得するために用いられる。
計算モジュール1010は、前記予測値および前記予測差分値を用いて前記復号化ブロックの復元値を確定するために用いられる。
図11は、本発明の実施例による別の画像の復号化装置の構造ブロック図である。
復号化モジュール1002は、変換ブロックの係数群のサイズおよびスキャン方式を確定する。復号化モジュール1002の入力データはデータストリーム11000を含み、出力データはデータストリーム11001である。データストリーム11000はコードストリームであり、デコーダの入力データである。復号化モジュール1002は、ビデオ符号化規格において定義されたコードストリーム編成構造および各フィールドのエントロピー復号化方法に従ってデータストリーム11000を解析し、1つまたは複数のパラメータセットデータ単位を取得し、1つまたは複数のスライスデータ単位(スライスヘッダ(Slice header)、データ単位、およびスライスデータ(Slice data)データ単位を含む)を含む。復号化モジュール1002がスライスデータデータ単位を解析して1つまたは複数の復号化ブロックのブロック層データ単位を取得する。復号化モジュール1002により取得されたデータ単位には、係数群サイズおよびスキャン方式に関連するパラメータが含まれ、現在の復号化ブロックに含まれている変換ブロックが使用する係数群のサイズおよびスキャン方式のパラメータをデータストリーム11001に含める。データストリーム11001は復号化モジュール1002の出力データである。復号化モジュール1002の使用可能なエントロピー復号化方法は、固定長符号化を用いて生成したコードワードをエントロピー復号化するという方法、可変長符号化を用いて生成したコードワードをエントロピー復号化するという方法、算術符号化を用いて生成したコードワードをエントロピー符号化するという方法を含む。
復号化モジュール1002は、取得したデータ単位から関連パラメータを読み取り、変換ブロックにおける変換係数を復号化するための係数群のサイズを確定する。好ましくは、データストリーム11000における各データ単位に含まれているフィールドデータに基づき、復号化モジュール1002は、パラメータセットデータ単位において、使用可能な係数群のサイズに関連するパラメータを取得し、復号化過程で使用可能な候補係数群のサイズを確定することができる。好ましくは、データストリーム11000における各データ単位に含まれているフィールドデータに基づき、復号化モジュール1002は、スライスヘッダ情報データ単位において、使用可能な係数群のサイズに関連するパラメータを取得し、復号化過程で使用可能な候補係数群のサイズを確定し、特に、復号化モジュール1002は、スライスヘッダ情報データ単位から取得可能な係数群のサイズに関連するパラメータは、パラメータセットデータ単位から取得したパラメータを対応して上書きして前記スライスを復号化する過程で使用可能な係数群のサイズのパラメータとする。復号化モジュール1002は、ブロック層データ単位におけるパラメータを用いて復号化ブロックにおける変換ブロックが使用する係数群のサイズを確定する。復号化モジュール1002は、係数群のサイズをデータストリーム11001に含める。
復号化モジュール1002は、取得したデータ単位から関連パラメータを読み取り、変換ブロックにおける変換係数を復号化するスキャン方式を確定する。好ましくは、データストリーム11000における各データ単位に含まれているフィールドデータに基づき、復号化モジュール1002は、パラメータセットデータ単位において、使用可能なスキャン方式に関連するパラメータを取得し、復号化過程で使用可能なスキャン方式を確定することができる。復号化モジュール1002は、パラメータセットデータ単位において取得した使用可能なスキャン方式は固定経路のスキャン方式であってもよく、即ち、デコーダにスキャン経路が既にプリセットされたスキャン方式である。特に、復号化モジュール1002は、パラメータセットデータ単位において取得した使用可能なスキャン方式は非固定経路のスキャン方式であってもよく、即ち、前述した実施例3でパラメータセットデータ単位コードストリームに書き込まれたスキャン経路である。復号化モジュール1002は、パラメータセットデータ単位においてスキャン方式に関連するパラメータを取得し、好ましくは、前記パラメータは、変換係数のスキャン前後の座標対応関係を記述し、例えば、変換ブロックにおける座標位置が(m、n)に等しい変換係数(または、インデックス番号がm×nTbS+nに等しく、ただし、nTbSは変換ブロックの幅である)に対応するスキャン後の番号位置はkに等しい。好ましくは、データストリーム11000における各データ単位に含まれているフィールドデータに基づき、復号化モジュール1002は、スライスヘッダ情報データ単位において、使用可能なスキャン方式に関連するパラメータを取得し、復号化過程で使用可能な候補スキャン方式を確定することができ、特に、復号化モジュール1002がスライスヘッダ情報データ単位から取得可能なスキャン方式に関連するパラメータは、パラメータセットデータ単位から取得したパラメータを対応して上書きして前記スライスを復号化する過程で使用可能なスキャン方式とする。復号化モジュール1002はブロック層データ単位におけるパラメータを用いて復号化ブロックにおける変換ブロックが使用するスキャン方式を確定する。復号化モジュール1002は復号化過程で使用可能なスキャン方式のパラメータをデータストリーム11001に含める。
特に、デコーダで使用可能な係数群のサイズの数および値が固定である場合、復号化モジュール1002はコードストリームを解析する必要がなく、デコーダに予め記憶された情報を読み取ることにより使用可能な係数群のサイズの数および値を取得する。特に、デコーダで使用可能なスキャン方式が固定である場合、復号化モジュール1002は、コードストリームを解析する必要がなく、デコーダに予め記憶された情報を読み取ることにより使用可能なスキャン方式を取得する。
復号化モジュール1002はコードストリームにおける変換ブロックに対応するデータ単位を解析し、係数群のサイズおよびスキャン方式に加え、更に、変換ブロックにおける最後の非0係数の位置、係数群に含まれている変換係数がいずれも0(または、係数群に非0変換係数が含まれているか否かに相当する)であるか否か、変換係数の値(または、変換係数の符号、変換係数の絶対値)の1つまたは複数の情報を指示するパラメータを含む変換係数に関連するパラメータを取得する。復号化モジュール1002も、上記パラメータをデータストリーム11001に含める。
処理モジュール1006は変換ブロックにおける変換係数の復元値を確定する。変換係数復元ユニットの入力データはデータストリーム11001であり、出力はデータストリーム11002である。データストリーム11002に含まれているのは、復号化ブロックにおける変換ブロックの変換係数である。データストリーム11002において、変換係数はM×Nの2次元マトリックス形式で表すことができ、ただし、MおよびNは正の整数であり、MとNとは等しくてもよいし、MとNとは等しくなくてもよい。前記2次元マトリックスは1つの変換ブロックに対応でき、以下の記述で使用される「変換ブロック」は、前記M×Nの2次元マトリックス形式で表される変換係数を指す。ここで、復号化モジュール1002がコードストリームを解析して取得した指示情報が、前記変換ブロックに対してスケーリング(Scaling)(逆量子化と呼ばれてもよい)操作を行うことを指示する場合、処理モジュール1006が出力したデータストリーム11002に含まれている前記変換係数復元値は、前述したエンコーダにおける量子化ユニット209が出力したのが係数である量子化値(即ち、「Level」値)に対応し、デコーダは、データストリーム11002を逆量子化ユニット305の入力データとし、逆に、復号化モジュール1002がコードストリームを解析して取得した指示情報が、前記変換ブロックに対してスケーリング操作を行わないことを指示する場合、処理モジュール1006が出力したデータストリーム11002に含まれている前記変換係数復元値は、前述エンコーダにおける変換ユニット84が出力したのが前記予測差分値を変換した後に得たデータであるものに対応し、デコーダはデータストリーム11002を逆変換ユニット306の入力データとする。
処理モジュール1006は、変換ブロックのサイズおよび係数群のサイズに基づいて変換ブロックに含まれている各係数群の位置を確定する。前記係数群の位置は、係数群における左上隅係数の変換ブロック(または、復号化画像)における位置座標として表すことができる。処理モジュール1006は、データストリーム11001におけるスキャン方式が指示する順序に従って係数群を順次処理する。1つの係数群に対し、処理モジュール1006は前記スキャン方式が指示する順序に従い、係数群における対応する要素の値を、コードストリームを解析して得られた変換係数の値とする。特に、処理モジュール1006がデータストリーム11001から、1つの係数群に含まれた変換係数がいずれも0(または、係数群に非0変換係数が含まれていない)であることを指示するものを取得した場合、解析ユニットは、該係数群に含まれている係数を全て0とする。特に、処理モジュール1006がデータストリーム11001から最後の非0係数の位置を取得した場合、スキャン順序に従って処理モジュール1006は最後の非0係数位置の後の他の係数の値を0とする。特に、ここで、処理モジュール1006による変換ブロックにおける係数群に対する処理順序は係数群における変換係数に対する処理順序と同じであってもよいし、異なってもよい。処理モジュール1006は、復元された変換ブロック(即ち、2次元マトリックス形式(または、2次元マトリックスに相当可能な他のデータ形式)で表される変換係数)をデータストリーム11002に含める。
なお、データストリームとは、ソフトウェアによる実現における関数の入口パラメータおよびリターンパラメータ、ハードウェアによる実現におけるバスで伝達されるデータ、記憶ユニット間で共有されるデータ(レジスタ共有データを含む)等を意味する。
なお、上記各モジュールは、ソフトウェアまたはハードウェアにより実現でき、後者は、上記モジュールがいずれも同一プロセッサに位置するという方式、または、上記各モジュールが任意の組み合わせの形式でそれぞれ異なるプロセッサに位置するという方式により実現できるが、これらに限定されない。
(実施例5)
図12は、上記に示す画像の符号化装置を備える電子機器図である。図12に示すように、該装置は、収集ユニット1202と、画像の符号化装置1204と、記憶または送信ユニット1206とを備える。
収集ユニット1202はビデオまたは画像を収集する。収集ユニット1202は、自然映像または自然画像を収集するための少なくとも1つのカメラを備えてもよく、好ましくは、収集ユニット1202には、奥行き映像または奥行き画像を収集するためのカメラが更に設けられてもよい。好ましくは、収集ユニットに赤外線カメラが更に設けられてもよく、好ましくは、収集ユニットにモートセンシングカメラが更に設けられてもよい。収集ユニット1202は、放射線透過またはスキャンによりビデオまたは画像を生成する装置または機器を含んでもよい。
好ましくは、収集ユニット1202で、入力ビデオまたは画像に対してオートフォーカス、オートホワイトバランス、自動露光、バックライト補正、ノイズ低減、鮮鋭化、スティッチング、画像解像度の向上または低減、ビデオフレームレートの向上または低減、仮想画像合成等のような前処理を行うことができる。
収集ユニット1202は、他の機器またはユニットが出力したビデオまたは画像を受信することもでき、例えば、収集ユニット1202は、トランスコーダ(Transcoder)における1つの構成ユニットであってもよく、Transcoderは、部分的に復号化された画像を収集ユニット1202に入力する。例えば、収集ユニット1202は、データ接続により他の機器から伝達されたビデオまたは画像を受信する。
なお、ビデオまたは画像に加え、収集ユニット1202は、音声のような他のメディア情報を収集することもできる。収集ユニット1202は、文字、字幕、コンピュータが生成したピクチャまたはビデオ等のような人工的に生成した情報を受信することもできる。
画像の符号化装置1204は、図2に示すエンコーダである。符号化装置1204に入力する画像は、収集ユニット1202が出力したビデオまたは画像である。画像の符号化装置1204は、ビデオまたは画像を符号化し、ビデオまたは画像のコードストリームを出力する。
記憶または送信ユニット1206は、画像の符号化装置1204が出力したビデオまたは画像のコードストリームを受信し、それに対してシステム層の処理を行い、例えば、伝送プロトコル、メディアファイルのフォーマット等の規格に従ってカプセル化(Encapsulation)する。記憶または送信ユニット1206は、システム層の処理後に得た伝送ストリームまたはメディアファイルを前記電子機器のメモリに記憶するか、または有線、無線ネットワークを介して送信する。
なお、画像の符号化装置1204が出力したビデオまたは画像のコードストリームに加え、記憶または送信ユニット1206の入力は、音声コードストリーム、文字、字幕、ピクチャ等を更に含んでもよい。記憶または送信ユニット1206は、メディアファイルのフォーマット、伝送プロトコル等の規格に従ってこれらの入力および画像の符号化装置1204が出力したコードストリームを伝送ストリームまたはメディアファイルにカプセル化する。
本実施例に係る電子機器は、ビデオ通信アプリケーションにおいて、ビデオまたは画像のコードストリームを生成または処理できる機器であり、例えば、携帯電話、コンピュータ、メディアサーバ、携帯型移動端末、デジタルビデオカメラ、デジタルカメラ、テレビジョン放送システム装置、コンテンツ配信ネットワーク機器、監視カメラ、会議テレビシステム機器等。
(実施例6)
図13は、上記に示す画像の符号化装置を備える電子機器図である。図13に示すように、以下を含む。
受信ユニット1302はビデオまたは画像のコードストリームを受信する。受信ユニット1302は、有線、無線ネットワークからビデオまたは画像のコードストリームを受信するか、または前記電子機器メモリを読み取ってビデオまたは画像のコードストリームを取得するか、またはデータ接続により他の機器から伝達されたビデオまたは画像のコードストリームを受信する。
受信ユニット1302の入力は、ビデオまたは画像のコードストリームを含む伝送ストリームまたはメディアファイルであってもよい。受信ユニット1302は、伝送プロトコル、メディアファイルのフォーマット等の規格に基づいて受信した伝送ストリームまたはメディアファイルからビデオまたは画像のコードストリームを抽出する。
受信ユニット1302は、ビデオまたは画像のコードストリームを画像の復号化装置1304に出力する。
なお、ビデオまたは画像のコードストリームに加え、受信ユニット1302から出力されるのは、音声コードストリーム、文字、字幕、ピクチャ等を更に含んでもよい。受信ユニット1302は、これらの出力を前記電子機器における対応する処理ユニットに伝達する。例えば、受信ユニット1302は、音声コードストリームを前記電子機器に含まれている音声デコーダに出力する。
画像の復号化装置1304は図3に示すデコーダである。画像の復号化装置1304に入力されるのは、受信ユニット1302が出力したビデオまたは画像のコードストリームである。画像の復号化装置1304はビデオまたは画像のコードストリームを復号化し、復号化されて復元されたビデオまたは画像を出力する。
提示(Rendering)ユニット1306は、画像の復号化装置1304が出力した復号化されて復元されたビデオまたは画像を受信する。提示ユニット1306は、復号化されて復元されたビデオまたは画像を視聴者(Viewer)に提示する。提示ユニット1306は前記電子機器の1つの構成部分、例えば、表示パネルであってもよいし、データ接続により前記電子機器に接続された独立した機器、例えば、プロジェクタ、ディスプレイ等であってもよい。好ましくは、提示ユニット1306は復号化されて復元されたビデオまたは画像に対してオートフォーカス、オートホワイトバランス、自動露光調整、バックライト補正、ノイズ低減、鮮鋭化、スティッチング、画像解像度の向上または低減、ビデオフレームレートの向上または低減、仮想画像合成等の後処理を行うことができる。
なお、前記復号化されて復元されたビデオまたは画像に加え、提示ユニット1306の入力は、音声、文字、字幕、ピクチャ等のような前記電子機器の他のユニットから出力されたメディアデータを更に含んでもよい。提示ユニット1306の入力は、遠隔教育アプリケーションでローカル授業者が重点内容に対して付ける下線等の注釈データのような人工的に生成したデータを更に含んでもよい。提示ユニット1306は入力されたメディアデータを重ね合わせた後に視聴者に表示する。
本実施例に係る電子機器は、携帯電話、コンピュータ、セットトップボックス、テレビ、プレーヤ、メディアサーバ、携帯型移動端末、デジタルビデオカメラ、デジタルカメラ、テレビジョン放送システム装置、コンテンツ配信ネットワーク機器、会議テレビシステム機器等のようなビデオ通信アプリケーションでビデオまたは画像のコードストリームを復号化または処理できる機器であってもよい。
(実施例7)
図14は、上記に示す電子機器を備える電子システムである。
図14に示すように、ソース機器1402は図12に示す電子機器である。
記憶または伝送ネットワーク1404は、機器または電子システムのメモリ、データ接続によりデータ読み書き操作を行う外部メモリを含んでもよく、有線ネットワーク、無線ネットワークからなるデータ伝送ネットワークを含んでもよい。記憶または伝送ネットワーク1404は、ソース機器1402における記憶または送信ユニット803にメモリまたはデータ伝送ネットワークを提供する。
シンク機器1406は、図13に示す電子機器である。シンク機器1406における受信ユニット901は、記憶または伝送ネットワーク1404により提供されたビデオまたは画像のコードストリーム、ビデオまたは画像のコードストリームを含む伝送ストリーム、またはビデオまたは画像のコードストリームを含むメディアファイルを受信する。
本実施例に係る電子システムは、ビデオ通信アプリケーションで、ビデオまたは画像のコードストリームを生成、記憶または伝送および復号化できるシステムまたは機器であってもよく、例えば、携帯電話、コンピュータ、IPTVシステム、OTTシステム、インターネットマルチメディアシステム、デジタルテレビジョン放送システム、監視システム、携帯型移動端末、デジタルビデオカメラ、デジタルカメラ、会議テレビシステム機器等である。
(実施例8)
本発明の実施例は、記憶媒体を更に提供し、該記憶媒体にはコンピュータプログラムが記憶され、ここで、該コンピュータプログラムは、動作時に上記いずれか1項に記載の方法の実施例におけるステップを実行するように構成される。
好ましくは、本実施例において、上記記憶媒体は、USB、読み出し専用メモリ(Read-Only Memory、ROMと略称される)、ランダムアクセスメモリ(Random Access Memory、RAMと略称される)、リムーバブルハードディスク、磁気ディスクまたは光ディスク等の様々なコンピュータプログラムを記憶可能な媒体を含んでもよいが、これらに限定されない。
明らかに、当業者であれば、上記本発明の各モジュールまたは各ステップは汎用の計算装置で実現でき、それらは、単一の計算装置に集中されてもよいし、または複数の計算装置からなるネットワークに分布されてもよく、好ましくは、それらは、計算装置実行可能プログラムコードで実現でき、これにより、それらを記憶装置中に記憶して計算装置により実行することができ、且つ、ある場合、ここでの順序と異なる順序で示されたまたは説明されたステップを実行してもよく、あるいは、それらをそれぞれの集積回路モジュールに作製し、またはそれらにおける複数のモジュールまたはステップを単一の集積回路モジュールに作製して実現する。このように、本発明は、任意の特定のハードウェアとソフトウェアとの組み合わせに限定されない。
上記は本発明の好ましい実施例に過ぎず、本発明を限定するものではなく、当業者にとって、本発明には様々な変更および変化が可能である。本発明の原則内で行われる任意の修正、均等置換、改良等は、いずれも本発明の保護範囲内に含まれているべきである。