以下、図面と共に本発明の各実施の形態を説明する。まず、本発明の実施の形態に係る画像符号化装置、方法、及びプログラムについて図面を参照しながら説明する。
図1は、本発明の実施の形態1に係る画像符号化装置100の構成例を示すブロック図である。図2は、図1の画像符号化装置100を構成するスライスデータ符号化部105、106、107、108の構成例を示すブロック図である。図3は、図1の画像符号化装置100、画像符号化方法及び画像符号化プログラムの処理手順を説明するためのフローチャートである。なお、本実施の形態ではAVC/H.264符号化方式をベースとする画像符号化装置100を説明する。
図1、図2に示す構成は、ハードウェア的には、任意のプロセッサ、メモリ、その他のLSIで実現でき、ソフトウェア的にはメモリにロードされたプログラムなどによって実現されるが、ここではそれらの連携によって実現される機能ブロックを描いている。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組み合わせによっていろいろな形で実現できることは、当業者には理解されるところである。
図1に示すように、画像符号化装置100は、符号化管理部101、符号化ビット列生成部102、画像バッファ103、スライスデータ分割部104、スライスデータ符号化部105、106、107、108、符号化ビット列多重化部109及び復号画像バッファ110を備える。図1において、M(v)(v=0、1、2、3)は、画像符号化装置100に供給される画像が分割された各スライスデータを示しており、vはスライスを特定するためのスライスIDを示している。また、S(v)(v=0、1、2、・・・)は、符号化の結果得られる各スライスの符号化ビット列を示している。以下、スライスIDがvのスライスをスライスvとする。図1ではv=0、1、2、3の4スライス(スライス0、スライス1、スライス2、スライス3)に分割した例を描いている。なお、スライスの分割数は4に限るものではない。
図1の画像符号化装置100を構成するスライスデータ符号化部105、106、107、108はそれぞれ同一構成である。図2に示すように、スライスデータ符号化部105、106、107、108はそれぞれ、スライスデータバッファ201、イントラ予測部202、符号化モード判定部203、残差信号演算部204、残差信号符号化部205、残差信号復号部206、残差信号重畳部207、復号スライスデータバッファ208、符号化ビット列生成部209、インター予測部210、スイッチ211、212、213、214、215を備える。
なお、スイッチ211を経由して他のスライスデータ符号化部からイントラ予測用の参照画素信号R(v')が入力され、スイッチ212を経由して他のスライスデータ符号化部へイントラ予測用の参照画素信号R(v)が出力される。また、スイッチ214を経由して他のスライスデータ符号化部から動きベクトル予測用の動きベクトルが入力され、スイッチ215を経由して他のスライスデータ符号化部へ動きベクトル予測用の動きベクトルが出力される。
スライスデータ分割部104は、画面を複数のスライスに分割する。スライスデータ符号化部105、106、107、108は、スライスデータ分割部104により分割された複数のスライスを並列に符号化する。スライスデータ符号化部105、106、107、108の少なくとも一つは、符号化すべき対象スライスを、それに隣接する隣接スライスの符号化により得られる情報を参照して、符号化する。
例えば、スライスデータ符号化部105、106、107、108の少なくとも一つは、上記対象スライスの上記隣接スライスと接している対象ブロックの画素信号をイントラ予測符号化する際、当該隣接スライスの当該対象ブロックと接している隣接ブロックの画素信号を参照候補とすることができる。また、スライスデータ符号化部105、106、107、108の少なくとも一つは、上記対象スライスの上記隣接スライスと接している対象ブロックの動きベクトルを予測符号化する際、当該隣接スライスの当該対象ブロックと接している隣接ブロックの動きベクトルを参照することができる。これらの処理の詳細は後述する。
符号化ビット列生成部102は、主に、符号化に関するパラメータを符号化するパラメータ符号化部として機能する。当該符号化に関するパラメータの一つとして、複数のスライス間の参照依存関係を示す情報を符号化することができる。
次に、図1に示す画像符号化装置100の動作について、図3のフローチャートを参照しながら説明する。図1において、符号化管理部101は、外部から設定された符号化パラメータをもとに、必要に応じて新たにパラメータを計算し、シーケンス全体に関連する情報、ピクチャに関連する情報、及びピクチャのスライスに関連する情報の管理を含む符号化に関する管理を行う。
また、符号化管理部101は、撮影/表示時間順に入力された画像のインター予測における参照依存関係及び符号化順序を管理するとともに、スライスデータM(0)、M(1)、M(2)、M(3)のイントラ予測及び動きベクトル予測における参照依存関係、並びに各スライスの符号化/復号順序を管理する。イントラ予測及び動きベクトル予測における参照依存関係について以下の管理を行う。すなわち、スライス単位で対象画像を符号化する際に、他のスライスデータの復号画像信号を参照用として用いるイントラ予測、または動きベクトル予測を行うか否かについて管理する。
また、符号化管理部101は、対象画像を符号化後に復号して得られる復号画像信号が、他のスライスの画像を符号化する際にイントラ予測、または動きベクトル予測の参照画像信号として用いられるか否かについて管理する。また、スライスの符号化/復号順序について以下の管理を行う。すなわち、上記参照依存関係において、復号側で、復号する符号化ビット列の画像が参照する参照スライスが復号された後に復号を開始できるようにスライスの空間的な符号化/復号順序を管理する。
さらに、符号化管理部101は、上述した管理を行うための情報を符号化ビット列生成部102に供給すると共に、スライスデータ分割部104、スライスデータ符号化部105、106、107、108を制御する。
ここで、各スライスデータを符号化、及び符号化された符号化ビット列を復号する際のスライス間の参照依存関係、並びに符号化/復号順序について、4つのスライスに分割して符号化する場合を例にとって説明する。本実施の形態では、スライスを構成する複数のブロックの符号化順序として、複数のスキャンモードが設定されている。スライスデータ符号化部105、106、107、108はそれぞれ、他のスライスデータ符号化部により参照されるブロックの符号化順序が参照されない符号化順序よりも先にくるスキャンモードで、符号化する。符号化ビット列生成部102は、上記符号化に関するパラメータの一つとして、各スライスの符号化順序を示す情報を符号化する。以下、具体例を参照しながら説明する。
図4は、実施の形態1に係る画像を4つのスライスに分割した一例を示す図である。図5は、実施の形態1に係る画面内のマクロブロックの符号化/復号順序とイントラ予測の方向を説明するための図である。図5(a)は、左上から右下に符号化/復号する例を示し、図5(b)は、左下から右上に符号化/復号する例を示し、図5(c)は、右上から左下に符号化/復号する例を示し、図5(d)は、右下から左上に符号化/復号する例を示す。
ここで、従来のAVC/H.264符号化方式の符号化/復号順序、及びイントラ予測、動きベクトル予測について図5(a)を参照して説明する。図5(a)に示すように、AVC/H.264符号化方式では、スライスの最も左上のマクロブロックから主走査方向を左から右、副走査方向を上から下に符号化/復号する。また、イントラ予測の際には、対象ブロックに対して、既に復号済みの左上、上、右上、左の4つのブロックを参照して、画素値を予測する。ただし、スライスの境界に接しているブロックで、参照するブロックがない場合は、イントラ予測の候補から除外する。また、動きベクトル予測の際には、対象ブロックに対して、既に復号済みの上、右上、左の3つのブロックの動きベクトルの中央値を用いて予測する。ただし、スライスの境界に接しているブロックで、参照するブロックがない場合や、符号化するブロックが正方形でない場合は例外的な処理法が用いられる。
本実施の形態においては、符号化/復号の開始マクロブロック、符号化/復号順序を変更したスキャンモードを用意する。用意するスキャンモードは、図5(a)に示す従来のAVC/H.264符号化方式と同様のスライスの最も左上のマクロブロックから主走査方向を左から右、副走査方向を上から下に符号化/復号するスキャンモードAに加えて、図5(b)に示すスライスの最も左下のマクロブロックから主走査方向を左から右、副走査方向を下から上に符号化/復号するスキャンモードB、図5(c)に示すスライスの最も右上のマクロブロックから主走査方向を右から左、副走査方向を上から下に符号化/復号するスキャンモードC、及び図5(d)に示すスライスの最も右下のマクロブロックから主走査方向を右から左、副走査方向を下から上に符号化/復号するスキャンモードDである。
図5(a)に示すスキャンモードAでは、従来のAVC/H.264符号化方式と同様に、対象ブロックに対して、既に復号済みの左上、上、右上、左の4つのブロックを参照して、イントラ予測を行い、上、右上、左の3つのブロックの動きベクトルの中央値を用いて動きベクトル予測を行う。また、図5(b)に示すスキャンモードBでは、対象ブロックに対して、既に復号済みの左下、下、右下、左の4つのブロックを参照してイントラ予測を行い、下、右下、左の3つのブロックの動きベクトルの中央値を用いて動きベクトル予測を行う。また、図5(c)に示すスキャンモードCでは、対象ブロックに対して、既に復号済みの右上、上、左上、右の4つのブロックを参照してイントラ予測を行い、上、左上、右の3つのブロックの動きベクトルの中央値を用いて動きベクトル予測を行う。また、図5(d)に示すスキャンモードDでは、対象ブロックに対して、既に復号済みの右下、下、左下、右の4つのブロックを参照してイントラ予測を行い、下、左下、右の3つのブロックの動きベクトルの中央値を用いて動きベクトル予測を行う。
イントラ予測モードに関しては従来のイントラ予測モードをそのまま用い、上記スキャンモードと当該イントラ予測モードを組み合わせて、イントラ予測の方向を決定する。スキャンモードAでは従来と同様の方向でイントラ予測を行う。スキャンモードBでは、従来のイントラ予測の方向を上下反転させて、即ち、従来の左上、上、右上、左からの予測をそれぞれ左下、下、右下、左からの予測とする。スキャンモードCでは、従来のイントラ予測の方向を左右反転させて、即ち、従来の左上、上、右上、左からの予測をそれぞれ右上、上、左上、右からの予測とする。スキャンモードDでは、従来のイントラ予測の方向を180°回転させて、即ち、従来の左上、上、右上、左からの予測をそれぞれ右下、下、左下、右からの予測とする。
スライス0のデータは、すべてのマクロブロックにおいて他のスライスデータを参照せず符号化する。本明細書では他のスライスの復号画像信号をイントラ予測、動きベクトル予測のために参照しないスライスを基底スライスと定義し、少なくとも基底スライスを1つ以上設定する。ただし、従来のAVC/H.264符号化方式では、最も左上のマクロブロックから主走査方向を左から右、副走査方向を上から下に符号化/復号するのに対して、本実施の形態では、図4に示したスライス0はスキャンモードDを用いて、最も右下のマクロブロックAから主走査方向を右から左、副走査方向を下から上に符号化/復号する。スライス1はスキャンモードBを用いて、最も左下のマクロブロックEから主走査方向を左から右、副走査方向を下から上に符号化/復号する。スライス2はスキャンモードCを用いて、最も右上のマクロブロックIから主走査方向を右から左、副走査方向を上から下に符号化/復号する。スライス3はスキャンモードAを用いて、従来のAVC/H.264符号化方式と同様に最も左上のマクロブロックMから主走査方向を左から右、副走査方向を上から下に符号化/復号する。
図4においては、スライス0が基底スライスとなり、スライス0以外のスライス1、スライス2、スライス3の境界に接するマクロブロックでは、他のスライスの復号画像信号から予測する、イントラ予測や動きベクトル予測を用いている。例えば、スライス1の最も左端のマクロブロックは、スライス0の最も右端のマクロブロックの各復号画像信号も参照画像信号とし、イントラ予測や動きベクトル予測を用いて、符号化/復号する。また、スライス2の最も上のマクロブロックは、スライス0の最も下のマクロブロックの各復号画像信号も参照画像信号とし、イントラ予測や動きベクトル予測を用いて、符号化/復号する。また、スライス3の最も上のマクロブロックは、スライス1の最も下のマクロブロックの各復号画像信号も参照画像信号とし、イントラ予測や動きベクトル予測を用いて、符号化/復号する。スライス3の最も左端のマクロブロックは、スライス2の最も右端のマクロブロックの各復号画像信号も参照画像信号とし、イントラ予測や動きベクトル予測を用いて、符号化/復号する。特に、スライス3の最も左上のマクロブロックMは、スライス0のマクロブロックA、スライス1のマクロブロックE、F及びスライス2のマクロブロックIを、イントラ予測の参照画像信号の候補とする。
基底スライスであるスライス0の符号化ビット列は、他のスライスに依存することなく復号できる。これに対し、スライス0以外のスライス1、スライス2、スライス3は、他のスライスの復号画像信号から予測するイントラ予測や動きベクトル予測を用いるため、復号の際には参照するスライスに依存する。例えば、スライス1の最も左端のマクロブロックは、それぞれスライス0の復号画像信号を参照画像信号としてイントラ予測や動きベクトル予測を行う。
従って、スライス1、スライス2のデータが符号化された符号化ビット列を復号する際には、それぞれの参照スライスとして用いるスライス0の符号化ビット列と同時に復号を開始することはできない。イントラ予測を行う場合には、それぞれのイントラ予測の参照画像信号となるマクロブロックの画像信号の復号処理が完了し、参照することができるようになるまで待機させる必要がある。また、インター予測により生成される動きベクトル予測を行う場合には、それぞれの参照するブロックの動きベクトルの復号処理が完了し、参照することができるようになるまで待機させる必要がある。
さらに、スライス3のデータが符号化された符号化ビット列を復号する際には、それぞれの参照スライスとして用いるスライス0、スライス1、スライス2の符号化ビット列と同時に復号を開始することはできない。それぞれのイントラ予測の参照画像信号となるマクロブロックの画像信号の復号処理、または、参照するブロックの動きベクトルの復号処理が完了し、それらのデータを参照することができるようになるまで待機させる必要がある。
その条件を満たすためには、スライス1の符号化ビット列の復号にはスライス0に対して少なくとも1マクロブロックを復号する時間分の遅延が必要である。また、スライス2の符号化ビット列の復号にはスライス0に対して少なくとも2マクロブロックを復号する時間分の遅延が必要である。また、スライス3の符号化ビット列の復号にはスライス0に対して少なくとも1マクロブロック、スライス1に対して少なくとも2マクロブロック、スライス2に対して少なくとも1マクロブロックを復号する時間分の遅延が必要である。
本実施の形態では、異なる符号化/復号順序の4つのスキャンモードを用意することにより、従来手法に比べて並列処理における遅延時間を短く設定することができる。従来手法の符号化/復号順序では、例えば、スライス1の最も下のマクロブロックを復号してからでないと、スライス3の復号を開始することができないため、長い遅延時間を必要とするからである。
本実施の形態では、符号化時に、各スライスに対応するスライス参照依存情報を符号化する。これにより、復号側で各スライスを並列処理によりリアルタイムに復号する際に、そのスライス参照依存情報により基底スライスの復号開始時刻(タイミング)に対する各スライスの復号開始時刻(タイミング)の遅延時間を容易に認識することができる。そして、当該スライス参照依存情報に応じて、各スライスの復号開始時刻(タイミング)を遅延させて符号化ビット列の復号を開始する。これにより、スライス間の同期を取ることができ、イントラ予測を用いる画像の復号時に、参照画像となる他のスライスの画像の復号処理、または、参照するブロックの動きベクトルの復号処理が完了していることを保証することができる。
また、符号化時に、スライス参照依存情報により基底スライスの復号開始時刻(タイミング)に対する各スライスの復号開始時刻(タイミング)や遅延時間(遅延量)を符号化してもよい。その符号化された遅延時間(遅延量)に応じて、各スライスの復号開始時刻(タイミング)を遅延させて符号化ビット列の復号を開始する。これにより、スライス間の同期を取ることができる。イントラ予測を用いる画像の復号時に、参照画像となる他のスライスの画像の復号処理が完了していることを保証する値を、復号開始時刻(タイミング)や遅延時間(遅延量)として設定する。復号開始時刻(タイミング)や遅延時間(遅延量)の単位には、例えば1つのマクロブロックを復号する時間を用いることができる。
次に、上記のスキャンモードを符号化する方法について説明する。スキャンモードを符号化する方法には、各スライスのスキャンモードを纏めてシーケンス全体に関連するパラメータとして符号化する方法と、スキャンモードをスライス毎に独立でそれぞれ符号化する方法がある。
図1に戻る。符号化ビット列生成部102は、符号化管理部101から供給されるシーケンス全体に関連するパラメータ、ピクチャに関連するパラメータ、補足付加情報等のそれぞれのパラメータを符号化して符号化ビット列を生成する(図3のステップS101)。AVC/H.264符号化方式では、SPS、PPS、SEI情報を符号化した符号化ビット列を生成する。
本実施の形態では復号側で各スライスが基底スライスか否かを判別する必要があるため、復号側で各スライスについて基底スライスか否かを判別することができるパラメータを直接的に符号化するか、または他の符号化パラメータから計算できるように間接的に符号化する必要がある。
また、各スライスのスライス参照依存情報、スキャンモードを纏めてシーケンス全体に関連するパラメータとして符号化する場合は、各スライスのスライス参照依存情報を符号化する。AVC/H.264符号化方式では、SPSのパラメータの一つとして符号化される。ここで、符号化するスライス参照依存情報は、各スライスを特定するスライスIDと、どのスライスを参照するかを特定する参照スライスのスライスIDである。
画像符号化装置100に供給される画像データは、撮影/表示時間順に画像バッファ103に格納される(図3のステップS103)。スライスデータ分割部104は、符号化管理部101により制御され、復号時間順に画像をスライスに分割し、スライスデータ符号化部105、106、107、108に供給する(図3のステップS105)。
スライスデータ符号化部105は、符号化管理部101により制御され、入力されるスライスデータM(0)を符号化し、符号化ビット列S(0)を得る(図3のステップS104〜S119)。同様に、スライスデータ符号化部106、107、108も、符号化管理部101により制御され、それぞれ入力されるスライスデータM(1)、スライスデータM(2)及びスライスデータM(3)を符号化し、符号化ビット列S(1)、符号化ビット列S(2)及び符号化ビット列S(3)を得る(図3のステップS104〜S119)。
スライスデータ符号化部106、107はそれぞれ、スライスデータ符号化部105から供給される境界近傍の参照画素信号R(0)を用いて符号化する。スライスデータ符号化部108は、スライスデータ符号化部105、106、107からそれぞれ供給される参照画素信号R(0)、R(1)、R(2)を用いて符号化する。符号化/復号順序、イントラ予測、動きベクトル予測の方向は異なるが、スライスデータ符号化部105、106、107、108は共通の符号化方法で符号化することができる。
次に、スライスデータ符号化部105、106、107、108の構成について図2を用いて説明する。符号化管理部101による制御は、図2に示したスライスデータ符号化部105、106、107、108を構成するすべてのブロックに対して及ぶ。符号化管理部101の制御により、スイッチ211、214をオフにして、他のスライスを参照するイントラ予測、動きベクトル予測の機能を停止し、スイッチ212、215をオンにした場合、スライスデータ符号化部105と等価となる。また、符号化管理部101の制御により、スイッチ211、212、214、215をすべてオンにした場合、スライスデータ符号化部106、107と等価となる。また、スイッチ211、214をオンにし、スイッチ212、215をオフにした場合、スライスデータ符号化部108と等価となる。
図1のスライスデータ分割部104は、画面を4つのスライスデータに分割する(図3のステップS105)。図2のスライスデータバッファ201は、スライスデータ分割部104から供給されるスライスデータM(v)(v=0、1、2、3)を格納する。また、符号化管理部101は、1つの画像を1つのアクセス・ユニットと呼ばれる単位で管理し(図3のステップS104〜S119)、さらにアクセス・ユニットをピクチャのスライスに分割して管理する(図3のステップS105〜S117)。
符号化ビット列生成部209は、符号化管理部101で管理されるそれぞれのピクチャのスライスに関連する情報を、スライス毎に符号化ビット列に符号化する(図3のステップS106)。AVC/H.264符号化方式では、VCL NALユニットとして符号化する。
ここで、スライスを特定するための上記スライスIDも、ピクチャのスライスに関連する情報として符号化する。また、スキャンモードをスライス毎に独立で符号化する場合、ピクチャのスライスに関連するパラメータの一つとして、当該スライスが採用するスキャンモードを符号化する。さらに、符号化ビット列生成部209は、符号化モード、動きベクトル、符号化残差信号等の画素ブロックの情報を符号化するが、それについては後述する。符号化残差信号とは、符号化された予測残差信号を指す。
スライスデータバッファ201は、符号化管理部101で管理される符号化/復号順序に応じて、格納されたスライスデータを画素ブロック単位でイントラ予測部202及び残差信号演算部204に供給する。また、Pスライス、Bスライス等のインター予測を行う場合はインター予測部210にも供給する。
イントラ予測部202は、従来のAVC/H.264符号化方式等と同様に、スライス内の符号化済みのブロックの復号画素を参照画素として、イントラ予測を行う。それに加えて、基底スライス以外のスライスでは、スライス境界のマクロブロックについて、隣接するスライスの符号化済みのブロックの復号画素を参照画素として、イントラ予測を行う(図3のステップS108)。イントラ予測では、隣接するスライスの参照画素を用いない場合、後述する復号スライスデータバッファ208から供給される符号化/復号順序で、前のブロックの復号画素を参照画素として用いる。隣接するスライスの参照画素を用いる場合、スイッチ211を経由して供給される参照画素信号R(v')を用いる。
インター予測部210は、符号化管理部101の制御に応じて、スライスデータバッファ201から供給される画素ブロックと、復号画像バッファ110から供給される参照画像との間でブロックマッチングを行い、動きベクトルを検出する。その動きベクトルを用いてインター予測ブロック信号を作成して、インター予測ブロック信号及び動きベクトルを符号化モード判定部203に供給する(図3のステップS109)。
イントラ予測、インター予測のどちらの手法を行うか、参照画像の数、どの復号画像を参照画像とするか、画素ブロックのサイズ等の候補の組み合わせは、符号化管理部101で制御される。この制御に応じて、イントラ予測部202またはインター予測部210は、イントラ/インター予測に関するすべての符号化モードの候補となるすべての組み合わせについて、イントラ予測またはインター予測を行う。イントラ予測部202またはインター予測部210は、その予測結果として、符号化モード情報、それぞれのイントラ予測/インター予測ブロック信号、及び動きベクトルを符号化モード判定部203に供給する。
ここで、上記画素ブロックのサイズの候補とは、画素ブロックを更に分割したそれぞれの小ブロックのことである。例えば、画素ブロックを水平方向16画素、垂直方向16画素(すなわち、16×16)とした場合、8×8、4×4等の小ブロックに分割してイントラ予測を行い、候補とする。また、16×8、8×16、8×8、8×4、4×8、4×4等の小ブロックに分割してインター予測を行い、候補とする。
符号化モード判定部203は、イントラ予測またはインター予測のどちらの手法を、どの参照画像を用いて、どのような画素ブロック単位で選択、組み合わせると効率の良い符号化が実現できるかを判定することにより、符号化モードを決定する。例えば、レート歪み理論にしたがい、符号量及び歪みの関係が最適な組み合わせを選択する。符号化モード判定部203は、得られた符号化モード及び動きベクトルを、符号化ビット列生成部209に供給する。それと共に、当該予測ブロック信号を選択、または必要に応じて生成し、残差信号演算部204に供給する(図3のステップS110)。
残差信号演算部204は、スライスデータバッファ201から供給される符号化対象のスライスデータM(v)の信号から、符号化モード判定部203から供給される予測信号を減算することにより、予測残差信号を得て残差信号符号化部205へ出力する(図3のステップS111)。残差信号符号化部205は、入力された予測残差信号に対して直交変換、量子化等の残差信号符号化処理を行い、符号化残差信号を算出する(図3のステップS112)。
残差信号復号部206は、符号化残差信号を復号し(図3のステップS113)、それにより得られた復号画像信号を、残差信号重畳部207を介して復号スライスデータバッファ208に供給するとともに、当該復号画像バッファ110に画素ブロック単位で順次格納する(図3のステップS114〜S116)。
より具体的には、残差信号復号部206は、残差信号符号化部205から入力された符号化残差信号に対して、逆量子化、逆直交変換等の残差信号復号処理を行い、復号残差信号を生成する(図3のステップS113)。残差信号重畳部207は、符号化モード判定部203から供給される予測信号に、残差信号復号部206から供給される復号残差信号を重畳して復号画像信号を算出する(図3のステップS114)。残差信号重畳部207は、その復号画像信号を復号スライスデータバッファ208に順次格納する(図3のステップS115)。
この復号スライスデータバッファ208に格納された復号画像信号は、必要に応じて、符号化順で後に続く画像の、イントラ予測の参照となる。残差信号重畳部207は、当該復号画像信号を復号画像バッファ110にも画素ブロック単位で順次格納する(図3のステップS116)。この復号画像バッファ110に格納された復号画像信号は、必要に応じて、符号化順で後に続く画像の、インター予測の参照画像となる。
符号化ビット列生成部209は、符号化モード判定部203から入力される符号化モード及び動きベクトル、残差信号符号化部205から入力される符号化残差信号等を、算術符号化等のエントロピー符号化を用いて順次符号化し、符号化ビット列S(v)(v=0、1、2、3)を生成する(図3のステップS117)。
なお、符号化ビット列生成部209が動きベクトル予測を用いて動きベクトルを符号化する際に、他のスライスの動きベクトルを参照する場合、スイッチ214を経由して、他のスライスの動きベクトルが入力される。
以上、ステップS108からステップS117までの処理を、画素ブロック単位で、ピクチャのスライス内のすべての画素ブロックの符号化が完了するまで繰り返す(図3のステップS107〜S118)。また、ステップS105からステップS118までの処理を、アクセス・ユニット内の全てのスライスの符号化が完了するまで繰り返す(図3のステップS104〜S119)。さらに、ステップS103からステップS119までの処理を、各プロセスの符号化対象画像(アクセス・ユニット)毎に繰り返す(図3のステップS102〜S120)。
再び、図1に戻る。符号化ビット列生成部102からシーケンス情報、ピクチャ情報、補足付加情報等の符号化ビット列が出力され、スライスデータ符号化部105、106、107、108から各スライスの符号化ビット列S(0)、S(1)、S(2)、S(3)が出力される。符号化ビット列多重化部109は、これらを必要に応じて多重化し、1本の符号化ビット列にする。多重化しない場合、上記の各符号化ビット列は、独立した符号化ビット列として出力される。
次に、本発明の実施の形態1に係る画像復号装置、方法、及びプログラムについて説明する。実施の形態1に係る画像復号装置は、上述した実施の形態1に係る画像符号化装置により符号化された符号化ビット列を、スライス毎に並列処理によりリアルタイムに復号する装置である。
図6は、本発明の実施の形態1に係る画像復号装置300の構成例を示すブロック図である。図7は、図6の画像復号装置300を構成するスライスデータ復号部306、309、312、315の構成例を示すブロック図である。図8は、図6の画像復号装置300、画像復号方法及び画像復号プログラムの処理手順を説明するためのフローチャートである。図6の画像復号装置300は、図1の画像符号化装置100と同様に、AVC/H.264符号化方式をベースとし、並列処理を実現する画像復号装置であるものとして説明する。
図6、図7に示す構成は、ハードウェア的には、任意のプロセッサ、メモリ、その他のLSIで実現でき、ソフトウェア的にはメモリにロードされたプログラムなどによって実現されるが、ここではそれらの連携によって実現される機能ブロックを描いている。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組み合わせによっていろいろな形で実現できることは、当業者には理解されるところである。
図6に示すように、画像復号装置300は、符号化ビット列復号部301、304、307、310、313、復号管理部302、分離部303、バッファ305、308、311、314、スライスデータ復号部306、309、312、315及び復号画像バッファ316を備える。符号化ビット列復号部304、307、310、313に供給される符号化ビット列S(v)(v=0、1、2、3)は、図1の画像符号化装置100によりスライス毎に生成された各スライスの符号化ビット列(以下適宜、符号化スライスともいう)である。M’(v)(v=0、1、2、3)は復号の結果、出力される画像の各スライスデータである。図6ではv=0、1、2、3の4スライスに分割した例を図示している。
また、符号化ビット列復号部301に供給される符号化ビット列(シーケンス・パラメータ等)は、図1の画像符号化装置100により生成されたシーケンス全体に関連するパラメータ、ピクチャに関連するパラメータ、補足付加情報等のそれぞれのパラメータを符号化して得られた符号化ビット列である。
また、画像復号装置300の一部を構成するスライスデータ復号部306、309、312、315はそれぞれ同一構成である。図7に示すように、スライスデータ復号部306、309、312、315はそれぞれ、符号化ビット列復号部401、イントラ予測部402、残差信号復号部404、残差信号重畳部405、復号スライスデータバッファ406、インター予測部407、スイッチ408、409、410、411、412、413、414を備える。
なお、スイッチ409を経由して他のスライスデータ復号部から、イントラ予測用の参照画素信号R(v’)が入力され、スイッチ410を経由して他のスライスデータ復号部へイントラ予測用の参照画素信号R(v)が出力される。また、スイッチ413を経由して他のスライスデータ復号部から動きベクトル予測用の動きベクトルが入力され、スイッチ414を経由して他のスライスデータ復号部へ動きベクトル予測用の動きベクトルが出力される。
分離部303は、画面を複数のスライスに分割し、その複数のスライスが並列に符号化された複数の符号化スライスを分離する。スライスデータ復号部306、309、312、315は、分離部303により分離された複数の符号化スライスを並列に復号する。符号化ビット列復号部301は、主に、符号化に関するパラメータが符号化された符号化パラメータを復号するパラメータ復号部として機能する。復号管理部302は、符号化ビット列復号部301により復号された符号化に関するパラメータに応じて、スライスデータ復号部306、309、312、315による復号を管理する。
例えば、復号管理部302は、当該符号化に関するパラメータに含まれる上述した複数のスライス間の参照依存関係を示す情報をもとに、スライスデータ復号部306、309、312、315のそれぞれの復号開始タイミングを決定する。その際、復号管理部302は、隣接スライスの符号化により得られる情報を参照せずに符号化された基底符号化スライス以外の符号化スライスの復号開始タイミングを、当該基底符号化スライスの復号開始タイミングに対して、当該参照依存関係を示す情報にもとづいて決定される時間、遅延させる。
また、復号管理部302は、対象ブロックの画素信号または動きベクトルの復号を、隣接スライス内の当該対象ブロックと隣接する隣接ブロックの画素信号または動きベクトルの復号が終了するまで、待機させる。復号管理部302は、それぞれ該当するスライスデータ復号部に待機を指示する。また、復号管理部302は、上記符号化に関するパラメータに含まれる各スライスの符号化順序を示す情報をもとに、スライスデータ復号部306、309、312、315に各スライスの復号順序を指定する。これらの処理の詳細は後述する。
次に、図6に示す画像復号装置300の動作について、図8のフローチャートを参照しながら説明する。まず、本実施の形態に係る画像復号装置300に供給される符号化ビット列が多重化されている場合、分離部303はAVC/H.264符号化方式のNALユニット単位で分離する。その際、NALユニットのヘッダ部分を復号して、NALユニットの種類を判別し、分離する。
NALユニットがシーケンス全体に関連するパラメータ(AVC/H.264符号化方式では、SPS)、ピクチャに関連するパラメータ(AVC/H.264符号化方式では、PPS)、補足付加情報(AVC/H.264符号化方式では、SEI)の場合、符号化ビット列復号部301に供給される。NALユニットがピクチャのスライスデータ(AVC/H.264符号化方式では、VCL NALユニット)の場合、分離部303は、スライスデータに係る符号化ビット列S(0)、S(1)、S(2)、S(3)を、スライスIDに応じた符号化ビット列復号部304、307、310、313に供給する。
図6において、符号化ビット列復号部301は、図1の画像符号化装置100により符号化された符号化ビット列を復号する(図8のステップS201)。ここで、復号する符号化ビット列は、シーケンス全体に関連するパラメータ(AVC/H.264符号化方式では、SPS)、ピクチャに関連するパラメータ(AVC/H.264符号化方式では、PPS)、補足付加情報(AVC/H.264符号化方式では、SEI)等である。
各スライスのスライス参照依存情報、スキャンモードを纏めてシーケンス全体に関連するパラメータとして符号化された符号化ビット列が供給される場合、符号化ビット列復号部301は、各スライスのスライス参照依存情報、スキャンモードを復号する。AVC/H.264符号化方式では、SPSのパラメータの一つとして復号する。復号されたシーケンス全体に関連するパラメータ、ピクチャに関連するパラメータ、補足付加情報等は、復号管理部302にそれぞれ供給される。
復号管理部302は、供給される参照依存情報、スキャンモードから各プロセス(実施の形態1に係る画像復号装置300では、スライスデータ復号部306、309、312、315に相当する)の復号開始タイミングを算出する(図8のステップS202)。なお、復号開始時刻(タイミング)や遅延時間(遅延量)が符号化される手法では、これらのパラメータが復号され、このパラメータの値に応じて各プロセスが復号を行う。
この処理に続く以下の処理(図8のS203〜S217)は、プロセス毎に並列で処理される。まず、符号化ビット列復号部304、307、310、313は、各スライス毎に供給される符号化ビット列S(0)、S(1)、S(2)、S(3)内の所定のデータを復号する(図8のステップS204)。ここで、符号化ビット列復号部304、307、310、313が復号するデータは、ピクチャのスライスに関連するパラメータ(AVC/H.264符号化方式では、VCL NALユニットのヘッダ及びスライス・ヘッダとして符号化されたパラメータ)であり、画素ブロックに関連する符号化モード、動きベクトル、符号化残差信号等は、ここでは復号されない。なお、符号化残差信号は量子化されたDCT係数で規定される。
各スライスのスライス参照依存情報、スキャンモードがスライス毎に独立で符号化された符号化ビット列が供給される場合、符号化ビット列復号部304、307、310、313は、ピクチャのスライスに関連するパラメータの一つとして、各スライスのスライス参照依存情報、スキャンモードを復号する。スライス毎に復号されたピクチャのスライスに関連するパラメータは、復号管理部302に供給される。復号管理部302は、それらのパラメータを管理し、新たなパラメータが設定されると、現在のパラメータの値を新たなパラメータの値に更新する。
符号化ビット列復号部304、307、310、313は、ここでは復号しない画素ブロックに関連する符号化モード、動きベクトル、符号化残差信号等の符号化ビット列を随時、バッファ305、308、311、314に供給する(図8のステップS205)。
上述したように、各スライスのスライス参照依存情報、スキャンモードがスライス毎に、例えばスライス・ヘッダで符号化されている場合、復号管理部302は、符号化ビット列復号部301から供給されるシーケンス全体に関連するパラメータ、ピクチャに関連するパラメータと、符号化ビット列復号部304、307、310、313から供給される復号されたピクチャのスライスに関連するパラメータとに基づいて、復号に関する管理を行う。
本実施の形態では、基底スライスの復号開始時刻(タイミング)に対して、基底スライスではない他のスライスの復号開始時刻(タイミング)を遅延させる。したがって、復号管理部302は、供給されたパラメータを基に、各スライスが基底スライスか否かを判別して、各プロセスを管理する。
復号管理部302は、各スライスが基底スライスであるか否かを、スライス参照依存情報に基づいて判断する。参照するスライスを持たないスライスが基底スライスである。また、復号管理部302は、符号化ビット列復号部304、307、310、313から供給されるスライス参照依存情報に基づいて、各スライスの復号開始時刻(タイミング)を管理する(この場合、ステップS202がステップS204とS205の間に位置する)。
バッファ305、308、311、314は、符号化ビット列復号部304、307、310、313からそれぞれ供給される、スライス単位の画素ブロックに関連する符号化モード、動きベクトル、符号化残差信号等の符号化ビット列を保持する。
復号管理部302は、各スライスの復号を開始する復号開始時刻(タイミング)を管理し、それぞれの復号開始時刻(タイミング)で、各スライスの復号を開始することが可能か否かを判断する。当該マクロブロックがイントラ予測であり、他のスライスを参照する場合(すなわち、遅延が必要な場合(図8のステップS207のYES))、復号管理部302は、他のスライスの参照画素の復号が終了するまで、当該マクロブロックの復号処理を待機させる(図8のステップS208)。ここでの復号開始時刻(タイミング)の同期管理は、他のスライスを参照してイントラ予測や動きベクトル予測を行うマクロブロックに対してのみ実行されればよい。
バッファ305、308、311、314は、復号管理部302に制御され、復号処理が開始できるようになったら(図8のステップS207のNO)、それぞれ保持している符号化ビット列S(0)、S(1)、S(2)、S(3)を読み出して、スライスデータ復号部306、309、312、315に供給する。スライスデータ復号部306、309、312、315は、供給された符号化ビット列S(0)、S(1)、S(2)、S(3)に含まれるマクロブロックの復号処理を開始する。
ここで、復号順序及び復号開始時刻(タイミング)について、図4に示したスライス参照依存関係をもとに符号化された符号化ビット列を、並列処理により復号する場合を例に説明する。
まず、プロセス0(スライスデータ復号部306に対応)は、スライス0の先頭のマクロブロックAを復号する。スライス1の先頭のマクロブロックE、スライス2の先頭のマクロブロックI、スライス3の先頭のマクロブロックMは、マクロブロックAの復号画素をイントラ予測の際、参照する必要がある。したがって、プロセス1(スライスデータ復号部309に対応する)、プロセス2(スライスデータ復号部312に対応する)、プロセス3(スライスデータ復号部315に対応する)は、マクロブロックAの復号が終了するまで、待機する。
プロセス0がマクロブロックAを復号した後、プロセス1はスライス1のマクロブロックEを復号する。また、プロセス0がマクロブロックBを復号した後、プロセス2はスライス2の先頭のマクロブロックIを復号する。さらに、プロセス1がマクロブロックFを復号し、プロセス2がマクロブロックIを復号した後、プロセス3はスライス3の先頭のマクロブロックMを復号する。
このように、スライスデータ復号部306は、復号管理部302により制御され、バッファ305から供給される符号化ビット列S(0)を復号し、スライスデータM’(0)を得る(図8のステップS209〜S215)。同様に、スライスデータ復号部309、312、315も復号管理部302により制御され、それぞれ符号化ビット列S(1)、S(2)、S(3)を復号し、スライスデータM’(1)、スライスデータM’(2)、スライスデータM’(3)を得る(図8のステップS209〜S215)。
その際、スライスデータ復号部309、312は、スライスデータ復号部306から供給される参照画像信号も用いて復号する。スライスデータ復号部315は、スライスデータ復号部306、309、312から供給される参照画像も用いて復号する。スライスデータ復号部306、309、312、315は、共通の復号方法で復号することができる。ただし、スキャンモードに応じて、復号順序とイントラ予測の方向は異なる。
次に、スライスデータ復号部306、309、312、315の構成及び動作について図7及び図8を用いて説明する。図7は、一つのスライスデータ復号部の構成を示しており、復号管理部302の制御は、図7に示す一つのスライスデータ復号部のすべての構成要素に対して及ぶ。復号管理部302の制御により、スイッチ409、413をオフにして、スイッチ410、414をオンにした場合、スライスデータ復号部306と等価となる。また、復号管理部302の制御により、スイッチ409、410、413、414を全てオンにした場合、スライスデータ復号部309、312と等価となる。さらに、復号管理部302の制御により、スイッチ409、413をオンにし、スイッチ410、414をオフにした場合、スライスデータ復号部315と等価となる。
符号化ビット列復号部401は、算術符号化等のエントロピー符号化を用いて符号化された符号化ビット列S(v)(v=0、1、2、・・・)を復号し、画素ブロック単位で、符号化モード、動きベクトル、符号化残差信号等の情報を得る(図8のステップS209)。
なお、符号化ビット列復号部401が動きベクトル予測を用いて動きベクトルを復号する際に、他のスライスの動きベクトルを参照する場合、スイッチ413を経由して、他のスライスの動きベクトルが入力される。
復号された符号化モードにより、復号するブロックがイントラ予測、インター予測のどちらの手法を、どの参照画像を用いて、どのような画素ブロック単位で選択、組み合わせられているかが分かる。当該ブロックがイントラ予測を用いて符号化されている場合(図8のステップS210のYES)、スイッチ408がイントラ予測部402側に接続される。
イントラ予測部402は、復号スライスデータバッファ406から供給される復号画素を参照画素として、符号化ビット列復号部401からスイッチ408を介して供給される復号された符号化モード(ここでは、イントラ予測モード)に応じたイントラ予測を行い、イントラ予測信号を得る(図8のステップS211)。または、イントラ予測部402は、他のスライスデータ復号部からスイッチ409を介して供給される参照画素信号R(v’)を用いて、符号化ビット列復号部401からスイッチ408を介して供給される復号された符号化モード(ここでは、イントラ予測モード)に応じたイントラ予測を行い、イントラ予測信号を得る(図8のステップS211)。
当該画素ブロックがインター予測を用いて符号化されている場合(図8のステップS210のNO)、スイッチ408がインター予測部403側に接続される。インター予測部403は、復号画像バッファ316からスイッチ411を介して供給される復号画素を参照画素として、符号化ビット列復号部401からスイッチ408を介して供給される復号された符号化モード、動きベクトルに応じたインター予測を行い、インター予測信号を得る(図8のステップS212)。
残差信号復号部404は、符号化ビット列復号部401から供給された符号化残差信号に対して、逆量子化、逆直交変換等の残差信号復号処理を行い、復号残差信号を生成する(図8のステップS213)。残差信号重畳部405は、イントラ予測部402またはインター予測部407からスイッチ412を介して供給される予測信号に、残差信号復号部404から供給される復号残差信号を重畳して、復号画像信号を算出する(図8のステップS214)。当該復号画像信号は、復号スライスデータバッファ406に画素ブロック単位で順次格納される(図8のステップS215)。
以上、ステップS207からステップS215までの処理を、画素ブロック単位で、ピクチャのスライス内のすべての画素ブロックの復号が完了するまで繰り返す(図8のステップS206〜S216)。
復号画像バッファ316は、格納された復号画像信号を、復号管理部302により制御される時刻(タイミング)で表示時間順に表示装置等に出力する。また、復号スライスデータバッファ406に格納された復号画像信号は、必要に応じて、スイッチ410を介して他のスライスデータ復号部へ参照画素信号R(v)として出力される。そして、ステップS204からステップS216までの処理を、復号画像(アクセス・ユニット)毎に繰り返す(図8のステップS203〜S217)。ここで、ステップS203からステップS217までの処理はプロセス毎に並列に行う。
なお、以上の説明においては、各スライスを並列処理によりリアルタイムに復号する際に、それぞれの1つのスライスを1つのプロセス(スライスデータ復号部)で復号する例について述べた。この点、本実施の形態はこれに限定されない。すなわち、スライスとプロセスの数が一致していなくてもよい。例えば、8つのスライスを4つのプロセスで復号することも可能である。この場合、2つのスライスを1つのプロセスで復号し、復号周期を2倍速とする。プロセス内の処理としては、2つのスライスのうちの一方のスライスのNALユニットを復号した後、他方のスライスのNALユニットを復号する。
以上説明したように実施の形態1では、画像符号化装置100は、各スライスのスライス参照依存情報、スキャンモードを符号化する。これにより、画像復号装置300は、各スライスの符号化ビット列を並列処理によりリアルタイムに復号する際、各プロセスの遅延時間を容易に認識することができる。すなわち、スライス参照依存情報に応じて、各スライスのマクロブロックの復号開始時刻(タイミング)を遅延させて、符号化ビット列の復号を開始することができる。したがって、それぞれ別のスライスを復号するプロセス間の同期をとることができる。また、それぞれ符号化/復号順序が異なる複数(本実施の形態では4種類)のスキャンモードを用意することにより、符号化/復号遅延時間を短縮することができる。
なお、上述した実施の形態1の説明では、スキャンモードに応じて、符号化/復号順序、並びにイントラ予測及び動きベクトル予測の方向を変更する例を説明した。この点、スキャンモードに応じて、各スライスの画像を空間的に反転または回転させることにより、符号化/復号順序、並びにイントラ予測及び動きベクトル予測の方向を変更せずに、実施の形態1に係る処理を実現することもできる。
図9は、実施の形態1の変形例に係る画像を4つのスライスに分割した一例を示す図である。以下、図9と図4とを比較しながら説明する。図4ではスライス0はスキャンモードDで符号化される。すなわち、右下のマクロブロックから、主走査方向を右から左、副走査方向を下から上に符号化した。これに対して、図9ではスライス0を180°回転させて、従来と同様に、左上のマクロブロックから主走査方向を左から右、副走査方向を上から下に符号化する。これにより、実質的にスキャンモードDの符号化順番で符号化することができる。
また、図4ではスライス1はスキャンモードBで符号化される。これに対して、図9ではスライス1を上下反転させて、従来と同様の走査順序で符号化する。これにより、実質的にスキャンモードBの符号化順番で符号化することができる。また、図4ではスライス2はスキャンモードCで符号化される。これに対して、図9ではスライス1を左右反転させて、従来と同様の走査順序で符号化する。これにより、実質的にスキャンモードCの符号化順番で符号化することができる。また、図4ではスライス3はスキャンモードAで符号化される。図9でもスライス3を回転させずに、従来と同様の走査順序で符号化する。
当該変形例では、他のスライスを参照するイントラ予測を行う場合、回転、反転前の位置に存在する隣接ブロックの復号画素を参照画素として用いる。このように、スライスの画像を空間的に回転、反転させることにより、イントラ予測及び動きベクトル予測の方向を変更せずに、符号化/復号することができる。
次に、本発明の実施の形態2について説明する。図10は、本発明の実施の形態2に係る画像符号化装置500の構成例を示すブロック図である。図11は、図10の画像符号化装置500を構成するスライスデータ符号化部505、506、507、508の構成例を示すブロック図である。図12は、図10の画像符号化装置500、画像符号化方法及び画像符号化プログラムの処理手順を説明するためのフローチャートである。本実施の形態においても、実施の形態1と同様に、AVC/H.264符号化方式をベースとする画像符号化装置を説明する。
図10、図11に示す構成は、ハードウェア的には、任意のプロセッサ、メモリ、その他のLSIで実現でき、ソフトウェア的にはメモリにロードされたプログラムなどによって実現されるが、ここではそれらの連携によって実現される機能ブロックを描いている。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組み合わせによっていろいろな形で実現できることは、当業者には理解されるところである。
図10に示すように、実施の形態2に係る画像符号化装置500は、符号化管理部101、符号化ビット列生成部102、画像バッファ103、スライスデータ分割部104、スライスデータ符号化部505、506、507、508、符号化ビット列多重化部109及び復号画像バッファ110を備える。図10において、M(v)(v=0、1、2、3)は、画像符号化装置500に供給される画像が分割された各スライスデータを示しており、vはスライスを特定するためのスライスIDを示している。また、S(v)(v=0、1、2、・・・)は、符号化の結果得られる各スライスの符号化ビット列を示している。以下、スライスIDがvのスライスをスライスvとする。図10ではv=0、1、2、3の4スライス(スライス0、スライス1、スライス2、スライス3)に分割した例を描いている。
図10において、符号化管理部101、符号化ビット列生成部102、画像バッファ103、スライスデータ分割部104、符号化ビット列多重化部109及び復号画像バッファ110は、実施の形態1に係る画像符号化装置100と基本的に同様であるため、それらの説明を適宜省略する。以下、実施の形態1と異なるスライスデータ符号化部505、506、507、508の説明を、図11を用いて行う。
図10の画像符号化装置500を構成するスライスデータ符号化部505、506、507、508はそれぞれ同一構成である。図11に示すように、スライスデータ符号化部505、506、507、508はそれぞれ、スライスデータバッファ201、イントラ予測部202、符号化モード判定部203、残差信号演算部204、残差信号符号化部205、残差信号復号部206、残差信号重畳部207、復号スライスデータバッファ208、インター予測部210、符号化ビット列生成部609、算術符号化パラメータ判定部616、算術符号化パラメータバッファ617、スイッチ211、212、213、214、215、618、620を備える。
なお、スイッチ211を経由して他のスライスデータ符号化部からイントラ予測用の参照画素信号R(v’)が入力され、スイッチ212を経由して他のスライスデータ符号化部へイントラ予測用の参照画素信号R(v)が出力される。また、スイッチ214を経由して他のスライスデータ符号化部から動きベクトル予測用の動きベクトルが入力され、スイッチ215を経由して他のスライスデータ符号化部へ動きベクトル予測用の動きベクトルが出力される。さらに、スイッチ618を経由して他のスライスデータ符号化部から算術符号化パラメータが入力され、スイッチ620を経由して他のスライスデータ符号化部へ算術符号化パラメータが出力される。ここで、算術符号化パラメータは後述する、算術符号化されるべきシンタックス要素のコンテキスト変数情報であってもよい。
スライスデータ符号化部505、506、507、508の少なくとも一つは、符号化すべき対象スライスの隣接スライスと接している対象ブロックの符号化の際、当該隣接スライスの当該対象ブロックと接している隣接ブロックの符号化終了時点の算術符号化パラメータを利用可能である。
より具体的には、スライスデータ符号化部505、506、507、508の少なくとも一つは、当該対象スライスの当該隣接スライスと接している当該対象ブロックの符号化の際、その対象ブロックと符号化順序で一つ前の隣接ブロックの符号化時点の算術符号化パラメータを用いるか、当該対象ブロックと当該対象スライス内で隣接する隣接ブロックの符号化時点の算術符号化パラメータを用いるか、当該隣接スライスの当該対象ブロックと接している隣接ブロックの符号化終了時点の算術符号化パラメータを用いるかを、選択可能である。符号化ビット列生成部102は、符号化に関するパラメータの一つとして、当該算術符号化パラメータの選択情報を符号化する。
なお、当該対象ブロックと当該対象スライス内で隣接する隣接ブロックは、既に符号化が終了している隣接ブロックである必要がある。したがって、当該隣接スライスが当該対象スライスの上に位置する場合、通常の走査順では、当該対象ブロックと符号化順序で一つ前の隣接ブロックと、当該対象ブロックと当該対象スライス内で隣接する隣接ブロックとが一致する。当該隣接スライスが当該対象スライスの下、左または右に位置する場合、通常の走査順では、当該対象ブロックと当該対象スライス内で隣接する隣接ブロックは、当該対象ブロックの左上、真上または右上に位置するブロックに設定される。
次に、図10に示す画像符号化装置500の動作について、図12のフローチャートを参照しながら説明する。図10において、符号化管理部101は実施の形態1と同様に、外部から設定された符号化パラメータをもとに、必要に応じて新たにパラメータを計算し、シーケンス全体に関連する情報、ピクチャに関連する情報、及びピクチャのスライスに関連する情報の管理を含む符号化に関する管理を行う。
また、符号化管理部101は、撮影/表示時間順に入力された画像のインター予測における参照依存関係及び符号化順序を管理するとともに、スライスデータM(0)、M(1)、M(2)、M(3)のイントラ予測及び動きベクトル予測における参照依存関係、並びに各スライスの符号化/復号順序を管理する。イントラ予測及び動きベクトル予測における参照依存関係について以下の管理を行う。すなわち、スライス単位で符号化対象画像を符号化する際に、他のスライスデータの復号画像信号を参照用として用いるイントラ予測、または動きベクトル予測を行うか否かについて管理する。
また、符号化管理部101は、対象画像を符号化後に復号して得られる復号画像信号が他のスライスの画像を符号化する際にイントラ予測、または動きベクトル予測の参照画像信号として用いられるか否かについて管理する。さらに、符号化管理部101は、上述した管理を行うための情報を符号化ビット列生成部102に供給すると共に、スライスデータ分割部104、スライスデータ符号化部505、506、507、508を制御する。
図13は、実施の形態2に係る画像を4つのスライスに分割した一例を示す図である。以下、図13に示すスライスの分割構成とその符号化動作に関して説明する。図13では、水平方向に4分割するスライスの分割構成をとり、それぞれのスライスが従来のAVC/H.264符号化方式と同様に、最も左上のマクロブロックから主走査方向を左から右、副走査方向を上から下に符号化/復号される。
図13において、スライス0が基底スライスとなり、スライス0以外のスライス1、スライス2、スライス3の境界に接するマクロブロックでは、他のスライスの復号画像信号から予測する、イントラ予測や動きベクトル予測を用いている。スライス1の最も左端のマクロブロックは、スライス0の最も右端のマクロブロックの各復号画像信号も参照画像信号とし、イントラ予測や動きベクトル予測を用いて、符号化/復号する。また、スライス2の最も左端のマクロブロックは、スライス1の最も右端のマクロブロックの各復号画像信号も参照画像信号とし、イントラ予測や動きベクトル予測を用いて、符号化/復号する。また、スライス3の最も左端のマクロブロックは、スライス2の最も右端のマクロブロックの各復号画像信号も参照画像信号とし、イントラ予測や動きベクトル予測を用いて、符号化/復号する。
実施の形態2においては、算術符号化において参照する情報(すなわち、算術符号化パラメータ)を、隣接する2つのスライスの内、左のスライスを符号化するスライスデータ符号化部から右のスライスを符号化するスライスデータ符号化部に伝達する手段を持つ。
AVC/H.264符号化方式では、量子化されたDCT係数、動きベクトル、予測モード等のシンタックス要素のエントロピー符号化手法として、算術符号化を用いることが可能である。算術符号化は、符号化対象のシンタックス要素を複数束ねた状態で、発生確率に応じた符号化を行うことにより、情報量を圧縮する手法である。算術符号化は、シンタックス要素毎に固有の発生確率で定義された可変長符号を用いる可変長符号化に比べて高い符号化効率を示す。
AVC/H.264符号化方式では、シンタックス要素は2値で表現され、2値化された情報が算術符号化される。2値化されたシンタックス要素を、以下、シンボルと表記する。2値の算術符号化においては、発生確率が高い優勢シンボル(以下、MPSと表記する)と発生確率が低い劣勢シンボル(以下、LPSと表記する)のそれぞれの発生確率に基づいて実数直線を分割する。分割した領域のMPS領域をrMPS、MPS領域をrLPSとする。rMPSとrLPSの内、符号化出力対象となるシンボルが属する領域を選択する。ここでは仮にrMPSを選択したとする。その後、選択したrMPSを次のrangeとし、このrangeを同様にrMPSとrLPSとに分割し、符号化出力対象となるシンボルが属する領域を選択する。この動作を符号化出力対象となるシンボルがなくなるまで繰り返す。そして、最終的に特定された領域であるrangeの範囲内に収まる値を、出力値valueとして出力する。通常はrangeの下限値を出力値valueとして出力する。これにより、符号化が完了する。
上述した基本的な算術符号化では、rangeとvalueが実数値であり、そのまま使用するには、演算精度の問題から現実的ではない。そこで、AVC/H.264符号化方式では、実数直線を有限のビット幅を持つ整数区間とし、特定した区間の幅であるrangeと特定した区間の下限値であるvalueに対して正規化処理を導入することで上記問題を解決している。正規化処理は、左シフト演算により行われ、この正規化処理によって、rangeとvalueの演算精度を確保している。
AVC/H.264符号化方式では、予め特定できない実際の発生確率に追従して、実際の発生確率に即した発生確率を算術符号化を行う際に使用する。それを実現するために、以下に説明するコンテキスト変数情報を保持し、シンタックス要素毎に発生確率の推移に適した発生確率テーブルを選択する。
コンテキスト変数情報は、算術符号化を行う際に利用される発生確率の状態を示す、ステート情報(以下、pStateIdxと表記する)と、MPS情報(以下、valMPSと表記する)とから構成される。pStateIdxとは、発生確率テーブル番号を表す情報である。valMPSとは、あるシンタックス要素におけるシンボル系列を算術符号化する場合において、現在までに符号化した0、1のシンボルのうち、どちらがMPSであるかを表す情報である。また、複数のシンタックス要素に対するコンテキスト変数情報を特定するために、各シンタックス要素のコンテキスト変数情報の構造に対してコンテキストインデックス(以下、ctxIdxと表記する)が付与される。
コンテキスト変数情報のpStateIdx及びvalMPSは、シンタックス要素毎に符号化したシンボルがMPSであるかLPSであるかに基づいて、所定の手順に従って更新される。この更新動作により、各シンタックス要素における、シンボルの実際の発生確率と算術符号化に用いる発生確率テーブルの差が収束する方向に、発生確率テーブルが選択されていくことにより、符号化効率の低下を防いでいる。
このようにして構成されるAVC/H.264符号化方式における算術符号化は、CABAC(コンテキスト適応型2値算術符号化)とよばれている。CABACにおいて、コンテキスト変数情報を用いた発生確率テーブルの収束には、ある程度の時間がかかる。また、シンタックス要素の性質が急激に変化した場合の追従に関しても、ある程度の時間がかかる。したがって、これらは符号化効率が低下する要因の一つとなっている。
実施の形態2では、隣接する2つのスライスの内、左のスライスの右端におけるマクロブロックの符号化終了時のコンテキスト変数情報を、左のスライスを符号化するスライスデータ符号化部から、右のスライスを符号化するスライスデータ符号化部に伝達する手段を有する。右のスライスを符号化するスライスデータ符号化部は、右のスライスの左端におけるマクロブロックの符号化時に、左のスライスを符号化するスライスデータ符号化部から伝達されたコンテキスト変数情報を用いるか、自ら格納したコンテキスト変数情報を用いるかを選択する機能を有する。これにより、それぞれのシンタックス要素の性質が変わりやすい、スライスの左端での発生確率テーブルの追従性を向上させることが可能となる。
次に、各スライスの復号開始時刻(タイミング)について説明する。実施の形態1と同様に、基底スライスであるスライス0の符号化ビット列は、他のスライスに依存することなく復号できる。これに対し、スライス0以外のスライス1、スライス2、スライス3は、左隣のスライスの復号画像信号から予測するイントラ予測や動きベクトル予測を用い、左隣のスライスのコンテキスト変数情報を受け取る。
したがって、スライス1、スライス2、スライス3の復号開始時刻(タイミング)はそれぞれ、参照する左隣のスライスの復号時刻(タイミング)に依存する。イントラ予測の参照画像信号となるマクロブロックの画像信号の復号処理、及び参照するマクロブロックの動きベクトルの復号処理が完了し、コンテキスト変数情報が格納され、それらのデータを参照することができるようになるまで、スライス1、スライス2、スライス3の復号開始時刻(タイミング)を遅延させる必要がある。
具体的には、主走査方向を左から右に連続して符号化/復号する処理単位をマクロブロックラインと定義すると、隣接する2つのスライスの内、左のスライスのマクロブロックラインに対する復号処理が完了するまで、右のスライスのマクロブロックラインに対する復号処理を遅延させる。すなわち、右のスライスを復号するプロセスは、左のスライスを復号するプロセスに対して、1マクロブロックライン遅延して復号する。
本実施の形態でも実施の形態1と同様に、符号化時に各スライスのスライス参照依存情報を符号化する。これにより、復号側で各スライスを並列処理によりリアルタイムに復号する際に、そのスライス参照依存情報により基底スライスの復号開始時刻(タイミング)に対する各スライスの復号開始時刻(タイミング)の遅延時間を容易に認識することができる。そして、当該スライス参照依存情報に応じて、各スライスの復号開始時刻(タイミング)を遅延させて符号化ビット列の復号を開始する。これにより、スライス間の同期を確保することができる。
図10に戻る。符号化ビット列生成部102は、符号化管理部101から供給されるシーケンス全体に関連するパラメータ、ピクチャに関連するパラメータ、補足付加情報等のそれぞれのパラメータを符号化して符号化ビット列を生成する(図12のステップS101)。AVC/H.264符号化方式では、SPS、PPS、SEI情報を符号化した符号化ビット列を生成する。本実施の形態においても実施の形態1と同様に、符号化ビット列生成部102は、各スライスのスライス参照依存情報も符号化する。
画像符号化装置500に供給される画像データは、撮影/表示時間順に画像バッファ103に格納される(図12のステップS103)。スライスデータ分割部104は、符号化管理部101により制御され、復号時間順に画像をスライスに分割し、スライスデータ符号化部505、506、507、508に供給する(図12のステップS105)。
スライスデータ符号化部505は、符号化管理部101により制御され、入力されるスライスデータM(0)を符号化し、符号化ビット列S(0)を得る(図12のステップS104〜S119)。同様に、スライスデータ符号化部506、507、508も、符号化管理部101により制御され、それぞれ入力されるスライスデータM(1)、スライスデータM(2)及びスライスデータ符号化M(3)を符号化し、符号化ビット列S(1)、符号化ビット列S(2)、符号化ビット列S(3)を得る(図12のステップS104〜S119)。その際、スライスデータ符号化部506、507、508はそれぞれ、スライスデータ符号化部505、506、507からそれぞれ供給される境界近傍の参照画素信号R(0)、R(1)、R(2)を用いて符号化する。
次に、スライスデータ符号化部505、506、507、508の構成について図11を用いて説明する。符号化管理部101による制御は、図11に示したスライスデータ符号化部505、506、507、508を構成するすべての構成要素に対して及ぶ。符号化管理部101の制御により、スイッチ211、214、618をオフにして、他のスライスデータ符号化部から、参照画素信号R(v)、動きベクトル及び算術符号化パラメータを受け取らず、スイッチ212、214、620をオンにした場合、スライスデータ符号化部505と等価となる。
また、符号化管理部101の制御により、スイッチ211、212、214、215、618、620をすべてオンにした場合、スライスデータ符号化部506、507と等価となる。また、符号化管理部101の制御により、スイッチ212、215、620をオフにして、他のスライスデータ符号化部への、参照画素信号R(v’)、動きベクトル及び算術符号化パラメータの出力を停止し、スイッチ211、214、618をオンにした場合、スライスデータ符号化部508と等価となる。
スライスデータバッファ201は、供給されたスライスデータM(v)(v=0、1、2、3)を格納する(図12のステップS105)。また、符号化管理部101は、1つの画像を1つのアクセス・ユニットと呼ばれる単位で管理し(図12のステップS104〜S119)、さらにアクセス・ユニットをピクチャのスライスに分割して管理する(図12のステップS105〜S117)。
符号化ビット列生成部609は、実施の形態1と同様に、符号化管理部101で管理されるそれぞれのピクチャのスライスに関連する情報を、スライス毎に符号化ビット列に符号化する(図12のステップS106)。AVC/H.264符号化方式では、VCL NALユニットとして符号化する。さらに、符号化ビット列生成部609は、符号化モード、動きベクトル、符号化残差信号等の画素ブロックの情報を符号化すると共に、スライスの左端のマクロブロックにおいて算術符号化パラメータを引き継ぐ方法を指定するための情報を符号化する。それについては後述する。
スライスデータバッファ201、イントラ予測部202、符号化モード判定部203、残差信号演算部204、残差信号符号化部205、残差信号復号部206、残差信号重畳部207、復号スライスデータバッファ208、インター予測部210及びスイッチ211、212、213、214、215の動作、並びに図12のフローチャートにおけるステップS106からステップS116までの処理については、実施の形態1と同様の処理であるため、その説明を省略する。
以下、図11における算術符号化パラメータ判定部616、算術符号化パラメータバッファ617及び符号化ビット列生成部609の動作、並びに図12のフローチャートにおけるステップS321、ステップS317の処理について説明する。
符号化ビット列生成部609は、符号化モード判定部203から入力される符号化モード及び動きベクトル、残差信号符号化部205から入力される符号化残差信号等を、算術符号化パラメータ判定部616を介して受け取る。符号化ビット列生成部609は、それらを、算術符号化を用いて順次符号化し、符号化ビット列S(v)(v=0、1、2、3)を生成する(図12のステップS317)。算術符号化パラメータ判定部616の動作は後述する。
なお、符号化ビット列生成部609が動きベクトル予測を用いて動きベクトルを符号化する際に、他のスライスの動きベクトルを参照する場合、スイッチ214を経由して、他のスライスの動きベクトルが入力される。その動きベクトルを用いて動きベクトル予測を行う動作については、実施の形態1と同様である。
符号化ビット列生成部609は、各プロセスが符号化を行うスライスの右端及び左端におけるマクロブロックの場合、コンテキスト変数情報を算術符号化パラメータバッファ617に格納する。コンテキスト変数情報は、算術符号化に用いられた結果における、各シンタックス要素のシンボルの内部状態を示す。また、符号化ビット列生成部609は、スライスの右端におけるマクロブロックの場合、コンテキスト変数情報をスイッチ620を介して、画面内で右に隣接するスライスを担当するプロセスに出力する。
実施の形態2では、算術符号化パラメータ判定部616は、各プロセスが符号化を行うスライスの左端におけるマクロブロックの場合、算術符号化パラメータバッファ617に格納されたコンテキスト変数情報、及びスイッチ618を介して入力されたコンテキスト変数情報から、その左端のマクロブロックを符号化する際に用いる最適なコンテキスト変数情報を選択する。そして、算術符号化パラメータ判定部616は、どのコンテキスト変数情報を用いたかを示すパラメータ選択情報(以下単に、選択情報と表記する)を、符号化ビット列生成部609に出力する(図12のステップS321)。
以下、コンテキスト変数情報の選択処理の具体例を説明する。図14は、実施の形態2に係る画像を3つのスライスに分割した一例を示す図である。図15は、コンテキスト変数情報の管理テーブルの一例を示す図である。図14では、水平方向に3分割するスライスの分割構成をとり、それぞれのスライスが従来のAVC/H.264符号化方式と同様に、最も左上のマクロブロックから主走査方向を左から右、副走査方向を上から下に符号化/復号される。
図14において、符号化対象スライス(図14の真ん中のスライス)のS1(1,0)のマクロブロックを符号化する際、算術符号化パラメータ判定部616は、算術符号化パラメータバッファ617に格納されているS1(0,0)及びS1(0,N)のマクロブロックにおけるコンテキスト変数情報、並びに左隣接スライスのS0(1,N)のマクロブロックにおけるコンテキスト変数情報の3つの変数情報の中から、最もコンテキストの状態が安定する情報を選択する。例えば、算術符号化パラメータ判定部616は、該当するマクロブロックに対して、3つの変数情報をそれぞれ用いて算術符号化を施した際のそれぞれの符号量を算出し、最小の符号量で符号化できる変数情報を選択する。なお、該当するマクロブロックより数マクロブロック後までの符号化処理を3つの変数情報を用いて行い、その結果をもとに選択してもよい。
図15に示す管理テーブルでは、コンテキスト群がパラメータ群1とパラメータ群2に分類される。コンテキスト群のシンタックス要素の種類として、パラメータ群1には、マクロブロックタイプ、DCTサイズ、イントラ予測モード及び量子化パラメータが含まれる。パラメータ群2には、予測ブロックモード、動きベクトルおよび参照画像ナンバーが含まれる。各パラメータ群には、シンボルの出現頻度パターンが類似する複数のシンタックス要素が含まれることが好ましい。図15では、画面内のテクスチャを符号化するために必要なシンタックス要素は、パラメータ群1に分類されている。また、動き補償予測などの時間相関を用いるために必要なシンタックス要素は、パラメータ群2に分類されている。
pStateIdxは、その値が大きいほど、MPSの発生確率が高いことを示す。すなわち、pStateIdxの値が大きいほど、算術符号化による情報の圧縮効率が高い状態であることを示す。valMPSは、MPSが0であるか1であるかを示す。
算術符号化パラメータ判定部616は、図15に示すような管理テーブルを参照して、コンテキストのシンタックス要素毎に符号化されたシンボルがMPSであった頻度の高い変数情報を選択してもよい。たとえば、上述した3つの変数情報の内、pStateIdxの値の合計値が最も大きい変数情報を選択してもよい。
また、算術符号化パラメータ判定部616は、パラメータ群ごとに、変数情報を独立に選択してもよい。例えば、図15のパラメータ群1とパラメータ群2とで、別々の変数情報を選択してもよい。この場合、算術符号化パラメータ判定部616は、パラメータ群1の選択情報と、パラメータ群2の選択情報の両方を、符号化ビット列生成部609に出力する。また、算術符号化パラメータ判定部616は、シンタックス要素ごとに、変数情報を選択してもよい。これらの処理により、より最適な発生確率テーブルを用いて算術符号化を行うことができ、情報量の圧縮効率を向上させることができる。
また、図14の符号化対象スライスのS1(0,0)のマクロブロックを符号化する際には、スライス符号化処理開始時に定義される初期コンテキスト変数情報を用いるか、左隣接スライスのS0(0,N)のマクロブロックにおけるコンテキスト変数情報を用いる。算術符号化パラメータ判定部616は、この2つの変数情報から選択することが可能である。同様に、符号化対象スライスが画面の左端にあるプロセスにおいて、当該スライスの左端のマクロブロックを符号化する際には、そのマクロブロックの上のマクロブロックのコンテキスト変数情報と、走査順で一つ前のマクロブロック(当該スライスの右端に位置する)のコンテキスト変数情報から、選択することが可能である。両方のコンテキスト変数情報も、算術符号化パラメータバッファ617に格納されている。
符号化ビット列生成部609に供給された選択情報は、スライスデータ(AVC/H.264符号化方式では、VCL NALユニット)と合わせて、スライスの先頭で符号化ビット列に符号化される。また、符号化ビット列生成部609に供給された選択情報は、該当するマクロブロックの符号化ビット列の先頭において符号化される。
以上、ステップS108からステップS317までの処理を、画素ブロック単位で、ピクチャのスライス内のすべての画素ブロックの符号化が完了するまで繰り返す(図12のステップS107〜S118)。また、ステップS105からステップS118までの処理を、アクセス・ユニット内の全てのスライスの符号化が完了するまで繰り返す(図12のステップS104〜S119)。さらに、ステップS103からステップS119までの処理を、各プロセスの符号化対象画像(アクセス・ユニット)毎に繰り返す(図12のステップS102〜S120)。
再び、図10に戻る。符号化ビット列生成部102からシーケンス情報、ピクチャ情報、補足付加情報等の符号化ビット列が出力され、スライスデータ符号化部505、506、507、508から各スライスの符号化ビット列S(0)、S(1)、S(2)、S(3)が出力される。符号化ビット列多重化部109は、これらを必要に応じて多重化し、1本の符号化ビット列にする。多重化しない場合、上記の各符号化ビット列は、独立した符号化ビット列として出力される。
次に、本発明の実施の形態2に係る画像復号装置、方法、及びプログラムについて説明する。実施の形態2に係る画像復号装置は、上述した実施の形態2に係る画像符号化装置により符号化された符号化ビット列を、スライス毎に並列処理によりリアルタイムに復号する装置である。
図16は、本発明の実施の形態2に係る画像復号装置700の構成例を示すブロック図である。図17は、図16の画像復号装置700を構成するスライスデータ復号部706、709、712、715の構成例を示すブロック図である。図18は、図16の画像復号装置700、画像復号方法及び画像復号プログラムの処理手順を説明するためのフローチャートである。図16の画像復号装置700も、図1の画像符号化装置100と同様に、AVC/H.264符号化方式をベースとし、並列処理を実現する画像復号装置であるものとして説明する。
図16、図17に示す構成は、ハードウェア的には、任意のプロセッサ、メモリ、その他のLSIで実現でき、ソフトウェア的にはメモリにロードされたプログラムなどによって実現されるが、ここではそれらの連携によって実現される機能ブロックを描いている。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組み合わせによっていろいろな形で実現できることは、当業者には理解されるところである。
図16に示すように、画像復号装置700は、符号化ビット列復号部301、304、307、310、313、復号管理部302、分離部303、バッファ305、308、311、314、スライスデータ復号部706、709、712、715及び復号画像バッファ316を備える。符号化ビット列復号部304、307、310、313に供給される符号化ビット列S(v)(v=0、1、2、3)は、図10の画像符号化装置500によりスライス毎に生成された各スライスの符号化ビット列である。M’(v)(v=0、1、2、3)は復号の結果、出力される画像の各スライスデータである。図16ではv=0、1、2、3の4スライスに分割した例を図示している。
また、符号化ビット列復号部301に供給される符号化ビット列(シーケンス・パラメータ等)は、図10の画像符号化装置500により生成されたシーケンス全体に関連するパラメータ、ピクチャに関連するパラメータ、補足付加情報等のそれぞれのパラメータを符号化して得られた符号化ビット列である。
また、画像復号装置700の一部を構成するスライスデータ復号部706、709、712、715はそれぞれ同一構成である。図17に示すように、スライスデータ復号部706、709、712、715はそれぞれ、符号化ビット列復号部801、イントラ予測部402、残差信号復号部404、残差信号重畳部405、復号スライスデータバッファ406、インター予測部407、算術符号化パラメータバッファ815、スイッチ408、409、410、411、412、413、414、816、817、818を備える。
なお、スイッチ409を経由して他のスライスデータ復号部からイントラ予測用の参照画素信号R(v’)が入力され、スイッチ410を経由して他のスライスデータ復号部へイントラ予測用の参照画素信号R(v)が出力される。また、スイッチ413を経由して他のスライスデータ復号部から動きベクトル予測用の動きベクトルが入力され、スイッチ414を経由して他のスライスデータ復号部へ動きベクトル予測用の動きベクトルが出力される。さらに、スイッチ816を経由して他のスライスデータ復号部から算術符号化パラメータが入力され、スイッチ818を経由して他のスライスデータ復号部へ算術符号化パラメータが出力される。
復号管理部302は、隣接スライスの隣接ブロックの符号化終了時点の算術符号化パラメータを利用して、対象ブロックを復号するようスライスデータ復号部706、709、712、715に指示することができる。より具体的には、復号管理部302は、符号化に関するパラメータに含まれる上述した算術符号化パラメータの選択情報をもとに、対象ブロックの走査順で一つ前の隣接ブロックの符号化時点の算術符号化パラメータ、当該対象ブロックと対象スライス内で隣接する隣接ブロックの符号化時点の算術符号化パラメータ、及び当該隣接スライスの当該対象ブロックと接している隣接ブロックの符号化終了時点の算術符号化パラメータのうち、当該対象ブロックの復号の際に利用する算術符号化パラメータを、該当するスライスデータ復号部に指定することができる。これらの処理の詳細は後述する。
次に、図16に示す実施の形態2に係る画像復号装置700の動作について、図18のフローチャートを参照しながら説明する。まず、本実施の形態に係る画像復号装置700に供給される符号化ビット列が多重化されている場合、分離部303はAVC/H.264符号化方式のNALユニット単位で分離する。その際、NALユニットのヘッダ部分を復号してNALユニットの種類を判別し、分離する。
NALユニットがシーケンス全体に関連するパラメータ(AVC/H.264符号化方式では、SPS)、ピクチャに関連するパラメータ(AVC/H.264符号化方式では、PPS)、補足付加情報(AVC/H.264符号化方式では、SEI)の場合、符号化ビット列復号部301に供給される。NALユニットがピクチャのスライスデータ(AVC/H.264符号化方式では、VCL NALユニット)の場合、分離部303は、スライスデータに係る符号化ビット列S(0)、S(1)、S(2)、S(3)を、スライスIDに応じた符号化ビット列復号部304、307、310、313に供給する。
図16において、符号化ビット列復号部301は、図10の画像符号化装置500により符号化された符号化ビット列を復号する(図18のステップS201)。ここで、復号する符号化ビット列は、シーケンス全体に関連するパラメータ(AVC/H.264符号化方式では、SPS)、ピクチャに関連するパラメータ(AVC/H.264符号化方式では、PPS)、補足付加情報(AVC/H.264符号化方式では、SEI)等である。
各スライスのスライス参照依存情報を纏めてシーケンス全体に関連するパラメータとして符号化された符号化ビット列が供給される場合、符号化ビット列復号部301は、各スライスのスライス参照依存情報を復号する。AVC/H.264符号化方式では、SPSのパラメータの一つとして復号する。復号されたシーケンス全体に関連するパラメータ、ピクチャに関連するパラメータ、補足付加情報等は、復号管理部302にそれぞれ供給される。
復号管理部302は、供給される参照依存情報から各プロセス(実施の形態2に係る画像復号装置700では、スライスデータ復号部706、709、712、715に相当する)の復号開始タイミングを算出する(図18のステップS202)。なお、復号開始時刻(タイミング)や遅延時間(遅延量)が符号化される手法では、これらのパラメータが復号され、このパラメータの値に応じて各プロセスが復号を行う。
この処理に続く以下の処理(図18のステップS203〜S217)は、プロセス毎に並列で処理される。まず、符号化ビット列復号部304、307、310、313は、各スライス毎に供給される符号化ビット列S(0)、S(1)、S(2)、S(3)内の所定のデータを復号する(図18のステップS204)。ここで、符号化ビット列復号部304、307、310、313が復号するデータは、ピクチャのスライスに関連するパラメータ(AVC/H.264符号化方式では、VCL NALユニットのヘッダ及びスライス・ヘッダとして符号化されたパラメータ)であり、画素ブロックに関連する符号化モード、動きベクトル、符号化残差信号等は、ここでは復号されない。
各スライスのスライス参照依存情報がスライス毎に独立で符号化された符号化ビット列が供給される場合、符号化ビット列復号部304、307、310、313は、ピクチャのスライスに関連するパラメータの一つとして、各スライスのスライス参照依存情報を復号する。スライス毎に復号されたピクチャのスライスに関連するパラメータは、復号管理部302に供給される。復号管理部302は、それらのパラメータを管理し、新たなパラメータが設定されると、現在のパラメータの値を新たなパラメータの値に更新する。
符号化ビット列復号部304、307、310、313は、ここでは復号しない画素ブロックに関連する符号化モード、動きベクトル、符号化残差信号等の符号化ビット列を随時、バッファ305、308、311、314に供給する(図18のステップS205)。
上述したように、各スライスのスライス参照依存情報がスライス毎に、例えばスライス・ヘッダで符号化されている場合、復号管理部302は、符号化ビット列復号部301から供給されるシーケンス全体に関連するパラメータ、ピクチャに関連するパラメータと、符号化ビット列復号部304、307、310、313から供給される復号されたピクチャのスライスに関連するパラメータとに基づいて、復号に関する管理を行う。本実施の形態においても、実施の形態1と同様の管理を行い、各スライスの復号開始時刻(タイミング)を管理する。
バッファ305、308、311、314は、符号化ビット列復号部304、307、310、313からそれぞれ供給される、スライス単位の画素ブロックに関連する符号化モード、動きベクトル、符号化残差信号等の符号化ビット列を保持する。
復号管理部302は、各スライスの復号を開始する復号開始時刻(タイミング)を管理し、それぞれの復号開始時刻(タイミング)で、各スライスの復号を開始することが可能か否かを判断する。コンテキスト変数情報の選択情報が、スライスの先頭に纏めて符号化されている場合、符号化ビット列復号部304、307、310、313は、スライスの先頭でスライス・ヘッダと共にコンテキスト変数情報の選択情報を復号する。
コンテキスト変数情報の選択情報が、該当するマクロブロックの先頭に符号化されている場合、スライスデータ復号部706、709、712、715は、該当するマクロブロックの先頭でコンテキスト変数情報の選択情報を復号する。より具体的には、符号化ビット列復号部304、307、310、313によりスライス・ヘッダが復号された後、スライスデータ復号部706、709、712、715は、最初の該当するマクロブロック(図15では、S1(0,0)のマクロブロック)の、コンテキスト変数情報の選択情報を復号する。以下、該当するマクロブロックが出現する度に、そのコンテキスト変数情報の選択情報を復号する。
実施の形態2では、復号対象マクロブロックがスライス間を跨ぐイントラ予測であるか、または、スライスの左端のマクロブロックにおいて選択されるコンテキスト変数情報が、左隣接スライスからのコンテキスト変数情報である場合、左隣接スライスを参照する必要がある。この場合(すなわち、遅延が必要な場合(図18のステップS207のYES))、復号管理部302は、左隣接スライスの該当する参照画素または参照マクロブロックの復号が終了するまで、復号対象マクロブロックの復号処理を待機させ、その復号開始時刻(タイミング)を遅延させる(図18のステップS208)。ここでの復号開始時刻(タイミング)の同期管理は、他のスライスを参照してイントラ予測や動きベクトル予測、またはコンテキスト変数情報の選択が行われたマクロブロックに対してのみ実行されればよい。
バッファ305、308、311、314は、復号管理部302に制御され、復号処理が開始できるようになったら(図8のステップS207のNO)、それぞれ保持している符号化ビット列S(0)、S(1)、S(2)、S(3)を読み出して、スライスデータ復号部706、709、712、715に供給する。スライスデータ復号部706、709、712、715は、供給された符号化ビット列S(0)、S(1)、S(2)、S(3)に含まれるマクロブロックの復号処理を開始する。
次に、スライスデータ復号部706、709、712、715の構成及び動作について図17及び図18を用いて説明する。図17は、一つのスライスデータ復号部の構成を示しており、復号管理部302の制御は、図17に示す一つのスライスデータ復号部のすべてのブロックに対して及ぶ。復号管理部302の制御により、スイッチ409、413、816をオフにして、スイッチ410、414、818をオンにした場合、スライスデータ復号部706と等価となる。また、復号管理部302の制御により、スイッチ409、410、413、414、816、818を全てオンにした場合、スライスデータ復号部709、712と等価となる。さらに、復号管理部302の制御により、スイッチ409、413、816をオンにし、スイッチ410、414、818をオフにした場合、スライスデータ復号部715と等価となる。
符号化ビット列復号部801は、算術符号化等のエントロピー符号化を用いて符号化された符号化ビット列S(v)(v=0、1、2、・・・)を復号し、画素ブロック単位で、符号化モード、動きベクトル、符号化残差信号等の情報を得る。ここで、符号化ビット列復号部801は、コンテキスト変数情報の選択情報が、スライスの先頭に纏めて符号化されている場合、該当するマクロブロックの選択情報を復号管理部302から取得する。コンテキスト変数情報の選択情報が、該当するマクロブロックの先頭に符号化されている場合、符号化ビット列S(v)(v=0、1、2、・・・)からコンテキスト変数情報の選択情報を取得する。符号化ビット列復号部801は、取得したコンテキスト変数情報の選択情報を復号する(図18のステップS418)。
図14に示すS1(1,0)のマクロブロックを例に説明すると、復号したコンテキスト変数情報の選択情報により、スライスの右端のマクロブロックS1(0,N)のコンテキスト変数情報が選択されている場合、次のように処理する。すなわち、現在保持されているコンテキスト変数情報をそのまま継続するため、符号化ビット列復号部801は、算術符号化パラメータバッファ815を参照せず(図18のステップS419のNO)、符号化ビット列に対して、従来の算術符号化の復号処理を行う(図18のステップS420)。
それ以外のコンテキスト変数情報が選択されている場合において(図18のステップS419のYES)、左隣接スライスからのコンテキスト変数情報S0(1,N)が選択されている場合(図18のステップS421のYES)、次のように処理する。すなわち、符号化ビット列復号部801は、スイッチ816を経由して他のスライスデータ復号部から、左隣接スライスの該当マクロブロックのコンテキスト変数情報を取得し、符号化ビット列の復号処理を行う(図18のステップS423)。
自己が担当するスライスの、復号対象マクロブロックの上のマクロブロックS1(0,0)のコンテキスト変数情報が選択されている場合(図18のステップS421のNO)、次のように処理する。すなわち、符号化ビット列復号部801は、スイッチ816を経由して算術符号化パラメータバッファ815から、当該コンテキスト変数情報を取得し、符号化ビット列の復号処理を行う(図18のステップS422)。
符号化ビット列復号部801は、復号対象マクロブロックがスライスの右端及び左端のマクロブロックにおいて、そのマクロブロックの復号後の算術符号化パラメータであるコンテキスト変数情報を、スイッチ817を経由して算術符号化パラメータバッファ815に格納する。また、符号化ビット列復号部801は、復号対象マクロブロックがスライスの右端のマクロブロックにおいて、スイッチ818を介して、算術符号化パラメータバッファ815から右隣接スライスを担当するスライスデータ復号部へ、当該マクロブロックのコンテキスト変数情報を出力する。
符号化ビット列の復号後の処理については、実施の形態1と同様の処理が、イントラ予測部402、残差信号復号部404、残差信号重畳部405、復号スライスデータバッファ406、インター予測部407、スイッチ408、409、410、411、412、413、414を用いて行われる(図18のステップS210〜S215)。
以上、ステップS207からステップS215までの処理を、画素ブロック単位で、ピクチャのスライス内のすべての画素ブロックの復号が完了するまで繰り返す(図18のステップS206〜S216)。
復号画像バッファ316は、格納された復号画像信号を、復号管理部302により制御される時刻(タイミング)で表示時間順に表示装置等に出力する。また、復号スライスデータバッファ406に格納された復号画像信号は、必要に応じて、スイッチ410を介して他のスライスデータ復号部へ参照画素信号R(v)として出力される。そして、ステップS204からステップS216までの処理を、復号画像(アクセスユニット)毎に繰り返す(図8のステップS203〜S217)。ここで、ステップS203からステップS217までの処理はプロセス毎に並列に行う。
なお、以上の説明においては、各スライスを並列処理によりリアルタイムに復号する際に、それぞれの1つのスライスを1つのプロセス(スライスデータ復号部)で復号する例について述べた。この点、本実施の形態は、実施の形態1と同様にこれに限定されない。すなわち、スライスとプロセスの数が一致していなくてもよい。例えば、8つのスライスを4つのプロセスで復号することも可能である。この場合、2つのスライスを1つのプロセスで復号し、復号周期を2倍速とする。プロセス内の処理としては、2つのスライスのうちの一方のスライスのNALユニットを復号した後、他方のスライスのNALユニットを復号する。
以上説明したように実施の形態2では、画像符号化装置500は、スライス間の参照依存関係を示す情報として、スライス内のマクロブロックのスタート位置及び符号化/復号順序と共に、算術符号化におけるパラメータ情報であるコンテキスト変数情報の選択情報を符号化する。これにより、画像復号装置700は、各スライスの符号化ビット列を並列処理によりリアルタイムに復号する際に、各プロセスの遅延時間を容易に認識することができる。すなわち、スライス参照依存情報に応じて、各スライスのマクロブロックの復号開始時刻(タイミング)を遅延させて、符号化ビット列の復号を開始することができる。したがって、それぞれ別のスライスを復号するプロセス間の同期をとることができる。
また、画像復号装置700では、コンテキスト変数情報を、参照依存関係のある隣接スライスを担当するプロセスに出力する機能を有する。そして、各プロセスは、スライスの境界となるマクロブロックにおいて、隣接スライスのコンテキスト情報を用いるか、自己の内部で管理されているコンテキスト情報を用いるかを、復号した選択情報を用いて切り替える機能を有する。これにより、算術符号化における発生確率テーブルの追従性を向上させることができる。よって、複数のスライスを並列処理しても、符号化効率の低下を抑制することができる。
以上の画像符号化及び画像復号に関する処理は、ハードウェアを用いた伝送、蓄積、受信装置として実現することができるのは勿論のこと、ROM(リード・オンリ・メモリ)やフラッシュメモリ等に記憶されているファームウェアや、コンピュータ等のソフトウェアによっても実現することができる。そのファームウェアプログラム、ソフトウェアプログラムをコンピュータ等で読み取り可能な記録媒体に記録して提供することも、有線あるいは無線のネットワークを通してサーバから提供することも、地上波あるいは衛星ディジタル放送のデータ放送として提供することも可能である。
以上、本発明をいくつかの実施の形態をもとに説明した。これらの実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。