以下、発明を実施するための形態(以下実施の形態とする)について説明する。なお、説明は以下の順序で行う。
1.第1の実施の形態(画像符号化装置)
2.第2の実施の形態(画像復号装置)
3.第3の実施の形態(画像符号化装置・画像復号装置)
4.第4の実施の形態(パーソナルコンピュータ)
5.第5の実施の形態(テレビジョン受像機)
6.第6の実施の形態(携帯電話機)
7.第7の実施の形態(ハードディスクレコーダ)
8.第8の実施の形態(カメラ)
<1.第1の実施の形態>
[画像符号化装置]
図2は、本発明を適用した画像処理装置としての画像符号化装置の一実施の形態の構成を表している。
図2に示される画像符号化装置100は、例えば、H.264及びMPEG(Moving Picture Experts Group)4 Part10(AVC(Advanced Video Coding))(以下H.264/AVCと称する)方式で画像を圧縮符号化する符号化装置である。ただし、画像符号化装置100は、可逆符号化方式としてCABACをマルチスライス方式で行う。
図2の例において、画像符号化装置100は、A/D(Analog / Digital)変換部101、画面並べ替えバッファ102、演算部103、直交変換部104、量子化部105、可逆符号化部106、および蓄積バッファ107を有する。また、画像符号化装置100は、逆量子化部108、逆直交変換部109、および演算部110を有する。さらに、画像符号化装置100は、デブロックフィルタ111、およびフレームメモリ112を有する。また、画像符号化装置100は、選択部113、イントラ予測部114、動き予測補償部115、および選択部116を有する。さらに、画像符号化装置100は、レート制御部117を有する。
A/D変換部101は、入力された画像データをA/D変換し、画面並べ替えバッファ102に出力し、記憶させる。画面並べ替えバッファ102は、記憶した表示の順番のフレームの画像を、GOP(Group of Picture)構造に応じて、符号化のためのフレームの順番に並べ替える。画面並べ替えバッファ102は、フレームの順番を並び替えた画像を、演算部103、イントラ予測部114、および動き予測補償部115に供給する。
演算部103は、画面並べ替えバッファ102から読み出された画像から、選択部116から供給される予測画像を減算し、その差分情報を直交変換部104に出力する。例えば、イントラ符号化が行われる画像の場合、演算部103は、画面並べ替えバッファ102から読み出された画像にイントラ予測部114から供給される予測画像を加算する。また、例えば、インター符号化が行われる画像の場合、演算部103は、画面並べ替えバッファ102から読み出された画像に動き予測補償部115から供給される予測画像を加算する。
直交変換部104は、演算部103からの差分情報に対して、離散コサイン変換、カルーネン・レーベ変換等の直交変換を施し、その変換係数を量子化部105に供給する。量子化部105は、直交変換部104が出力する変換係数を量子化する。量子化部105は、量子化された変換係数を可逆符号化部106に供給する。
可逆符号化部106は、その量子化された変換係数に対して、CABACをマルチスライス方式で行う。つまり、可逆符号化部106は、量子化された変換係数の画像領域を上下2つのエントロピスライス(スライス1とスライス2)に分割し、各スライスについてのCABACを互いに並行して行う。
このとき可逆符号化部106は、上側のエントロピスライス(スライス1)に対するCABACを、下のマクロブロックから上のマクロブロックに向かう順に進める。また、可逆符号化部106は、下側のエントロピスライス(スライス2)に対するCABACを、上のマクロブロックから下のマクロブロックに向かう順に進める。
このように、可逆符号化部106は、上下2つのエントロピスライスに対して、互いの境界から遠ざかる方向に各マクロブロックを順次処理する。
可逆符号化部106は、イントラ予測を示す情報などをイントラ予測部114から取得し、インター予測モードを示す情報などを動き予測補償部115から取得する。なお、イントラ予測を示す情報は、以下、イントラ予測モード情報とも称する。また、インター予測を示す情報モードを示す情報は、以下、インター予測モード情報とも称する。
可逆符号化部106は、量子化された変換係数を符号化するとともに、フィルタ係数、イントラ予測モード情報、インター予測モード情報、および量子化パラメータなどを、符号化データのヘッダ情報の一部とする(多重化する)。可逆符号化部106は、符号化して得られた符号化データを蓄積バッファ107に供給して蓄積させる。
蓄積バッファ107は、可逆符号化部106から供給された符号化データを、一時的に保持し、所定のタイミングにおいて、H.264/AVC方式で符号化された符号化画像として、例えば、後段の図示せぬ記録装置や伝送路などに出力する。
また、量子化部105において量子化された変換係数は、逆量子化部108にも供給される。逆量子化部108は、その量子化された変換係数を、量子化部105による量子化に対応する方法で逆量子化し、得られた変換係数を、逆直交変換部109に供給する。
逆直交変換部109は、供給された変換係数を、直交変換部104による直交変換処理に対応する方法で逆直交変換する。逆直交変換された出力は、演算部110に供給される。
演算部110は、逆直交変換部109より供給された逆直交変換結果、すなわち、復元された差分情報に、選択部116から供給される予測画像を加算し、局部的に復号された画像(復号画像)を得る。例えば、差分情報が、イントラ符号化が行われる画像に対応する場合、演算部110は、その差分情報にイントラ予測部114から供給される予測画像を加算する。また、たとえば、差分情報が、インター符号化が行われる画像に対応する場合、演算部110は、その差分情報に動き予測補償部115から供給される予測画像を加算する。
その加算結果は、デブロックフィルタ111またはフレームメモリ112に供給される。
デブロックフィルタ111は、適宜デブロックフィルタ処理を行うことにより復号画像のブロック歪を除去するとともに、例えばウィナーフィルタ(Wiener Filter)を用いて適宜ループフィルタ処理を行うことにより画質改善を行う。デブロックフィルタ111は、各画素をクラス分類し、クラスごとに適切なフィルタ処理を施す。デブロックフィルタ111は、そのフィルタ処理結果をフレームメモリ112に供給する。
フレームメモリ112は、所定のタイミングにおいて、蓄積されている参照画像を、選択部113を介してイントラ予測部114または動き予測補償部115に出力する。
例えば、イントラ符号化が行われる画像の場合、フレームメモリ112は、参照画像を、選択部113を介してイントラ予測部114に供給する。また、例えば、インター符号化が行われる画像の場合、フレームメモリ112は、参照画像を、選択部113を介して動き予測補償部115に供給する。
画像符号化装置100においては、例えば、画面並べ替えバッファ102からのIピクチャ、Bピクチャ、およびPピクチャが、イントラ予測(イントラ処理とも称する)する画像として、イントラ予測部114に供給される。また、画面並べ替えバッファ102から読み出されたBピクチャおよびPピクチャが、インター予測(インター処理とも称する)する画像として、動き予測補償部115に供給される。
選択部113は、フレームメモリ112から供給される参照画像を、イントラ符号化を行う画像の場合、イントラ予測部114に供給し、インター符号化を行う画像の場合、動き予測補償部115に供給する。
イントラ予測部114は、画面内の画素値を用いて予測画像を生成するイントラ予測(画面内予測)を行う。イントラ予測部114は、複数のモード(イントラ予測モード)によりイントラ予測を行う。このイントラ予測モードには、選択部113を介してフレームメモリ112から供給された参照画像に基づいて予測画像を生成するモードがある。
イントラ予測部114は、全てのイントラ予測モードで予測画像を生成し、各予測画像を評価し、最適なモードを選択する。イントラ予測部114は、最適なイントラ予測モードを選択すると、その最適なモードで生成された予測画像を、選択部116を介して演算部103に供給する。また、上述したように、イントラ予測部114は、採用したイントラ予測モードを示すイントラ予測モード情報等の情報を、適宜可逆符号化部106に供給する。
動き予測補償部115は、インター符号化が行われる画像について、画面並べ替えバッファ102から供給される入力画像と、選択部113を介してフレームメモリ112から供給される参照フレームとなる復号画像とを用いて、動きベクトルを算出する。動き予測補償部115は、算出した動きベクトルに応じて動き補償処理を行い、予測画像(インター予測画像情報)を生成する。
動き予測補償部115は、候補となる全てのインター予測モードのインター予測処理を行い、予測画像を生成する。動き予測補償部115は、生成された予測画像を、選択部116を介して演算部103に供給する。
動き予測補償部115は、採用されたインター予測モードを示すインター予測モード情報や、算出した動きベクトルを示す動きベクトル情報を可逆符号化部106に供給する。
選択部116は、イントラ符号化を行う画像の場合、イントラ予測部114の出力を演算部103に供給し、インター符号化を行う画像の場合、動き予測補償部115の出力を演算部103に供給する。
レート制御部117は、蓄積バッファ107に蓄積された圧縮画像に基づいて、オーバーフローあるいはアンダーフローが発生しないように、量子化部105の量子化動作のレートを制御する。
[可逆符号化部の構成]
図3は可逆符号化部106の主な構成例を示すブロック図である。図3に示されるように、可逆符号化部106は、制御部151、記憶部152、スライス1処理部153、およびスライス2処理部154を有する。
制御部151は、記憶部152のデータ入出力を制御する。制御部151は、マクロブロック検出部161およびスライス検出部162を有する。
係数データは、量子化部105から、マクロブロック毎に供給される。例えば図1Aの実線矢印に示されるように、係数データは、マクロブロックの水平方向の並び(以下、マクロブロックラインと称する)において、左端のマクロブロックから右端のマクロブロックに向かう順に1マクロブロック分ずつ供給される。また、例えば図1Aの点線矢印に示されるように、画像内の上のマクロブロックライン程優先的に供給される。
つまり、1画像(1ピクチャ若しくは1フィールド)の係数データは、画像内の左上端のマクロブロックから供給され、最後に右下端のマクロブロックが供給される。
マクロブロック検出部161は、このような順で量子化部105から供給される係数データの各マクロブロックを検出し、各マクロブロックラインの先頭アドレスを係数データとともに記憶部152に記憶させる。また、マクロブロック検出部161は、検出したマクロブロックラインの先頭アドレスをスライス検出部162に通知する。
スライス検出部162は、マクロブロックラインの先頭アドレスから、エントロピスライスの境界(スライス1とスライス2との境界)を検出し、その検出結果に応じて、スライス1処理部153およびスライス154を動作させる。
例えば、図1Aに示されるように、画像(1ピクチャ若しくは1フィールド)がスライス1とスライス2に2分割される場合、スライス検出部162は、マクロブロックラインの先頭アドレスから、画像の上半分の係数データが記憶部152に記憶されたことを検出し、エントロピスライスの境界を検出する。
スライス検出部162は、スライス1の一番下のマクロブロックラインの係数データの書き込みが開始されたと判定すると、スライス1処理部153を動作させ、記憶部152からのスライス1の係数データの読み出しを開始させる。
また、その1つ下のマクロブロックラインの係数データの書き込みが開始されたと判定すると、スライス検出部162は、スライス2処理部154も動作させ、記憶部152からのスライス2の係数データの読み出しも開始させる。
記憶部152は、例えばRAM(Random Access Memory)やフラッシュメモリ等の半導体メモリやハードディスク等、任意の記録媒体を有し、係数データやマクロブロックラインの先頭アドレス等の情報を記憶する。基本的に、スライス1処理部153およびスライス2処理部154が行う算術符号化処理(CABAC)は、負荷が大きく、処理時間が長い。また処理速度が変化する。したがって、記憶部152が供給される係数データをバッファリングすることで、オーバフローやアンダーフローの発生を抑制することができる。
スライス1処理部153は、記憶部152からスライス1の係数データを読み出し、CABACを行う。スライス1処理部153は、読み出し制御部171、マクロブロックラインメモリ172、コンテキスト算出部173、2値化部174、および算術符号化部175を有する。
読み出し制御部171は、記憶部152の係数データが記憶されている領域とは別の領域に書き込まれたマクロブロックラインの先頭アドレスを参照し、記憶部152からスライス1の係数データをマクロブロック毎に読み出す。読み出し制御部171は、係数データを、スライス1の1番下のマクロブロックラインから優先的に読み出す。読み出し制御部171は、読み出した係数データをマクロブロックラインメモリ172に記憶させるとともに、2値化部174に供給する。
マクロブロックラインメモリ172は、例えばRAM(Random Access Memory)やフラッシュメモリ等の半導体メモリやハードディスク等、任意の記録媒体を有し、係数データを最大1マクロブロックライン以上記憶する。
コンテキスト算出部173は、マクロブロックラインメモリ172に記憶されている係数データを用いて、処理対象マクロブロックに隣接する周辺マクロブロックの状態を求め、その周囲の状態に基づいて、発生確率テーブルと発生確率の高いシンボルを示すコンテキスト(Context)を算出し、それを算術符号化部175に供給する。
2値化部174は、読み出し制御部171から供給される係数データ(多値データ)を2値化し、その2値化されたデータ(2値データ)を算術符号化部175に供給する。
算術符号化部175は、2値化部174から供給される2値データを、コンテキスト算出部173から供給されるコンテキストに従って2値算術符号化する。算術符号化部175は、得られた符号化データを蓄積バッファ107に供給し、蓄積させる。
スライス2処理部154は、記憶部152から主にスライス2の係数データを読み出し、CABACを行う。スライス2処理部154は、基本的にスライス1処理部153と同様の構成を有する。すなわち、スライス2処理部154は、読み出し制御部181、マクロブロックラインメモリ182、コンテキスト算出部183、2値化部184、および算術符号化部185を有する。
読み出し制御部181は、読み出し制御部171と同様の構成を有し、同様の処理を行う。マクロブロックラインメモリ182は、マクロブロックラインメモリ172と同様の構成を有し、同様の処理を行う。コンテキスト算出部183は、コンテキスト算出部173と同様の構成を有し、同様の処理を行う。2値化部184は、2値化部174と同様の構成を有し、同様の処理を行う。算術符号化部185は、算術符号化部175と同様の構成を有し、同様の処理を行う。
ただし、スライス2の場合、マクロブロックの処理順や参照方向がスライス1の場合と異なる。
[符号化手順]
図4は、本発明の処理進行方向および参照方向の例を説明する図である。
1画像(1ピクチャ若しくは1フィールド)分のCABACは、図4Aに示される矢印のような順序で行われる。つまり、画像は上下方向に並ぶ複数のエントロピスライス(大領域)に分割され、各エントロピスライスを行列方向に分割するマクロブロック(小領域)毎にCABAC(符号化)が行われる。
スライス1では、係数データは、図4Aの点線矢印に示されるように、一番下のマクロブロックライン(小領域行)が最初に符号化され、次に1つ上のマクロブロックラインが符号化される。このように処理対象が1行ずつ上のマクロブロックラインに移動し、最後に一番上のマクロブロックラインが符号化される。
各マクロブロックライン内においては、図4Aの実線矢印に示されるように、従来の場合と同様に、左端のマクロブロックが最初に符号化され、次に1つ右のマクロブロックが符号化される。このように処理対象が1つずつ右のマクロブロックに移動し、最後に右端のマクロブロックが符号化される。
係数データは、図1Aの矢印に示されるように、画像の上のマクロブロックラインから下のマクロブロックラインに向かう順に、マクロブロック毎に記憶部152に記憶される。つまり、スライス1の一番下のマクロブロックラインの一番左のマクロブロックの係数データが記憶部152に書き込まれると、スライス1のCABACが開始される。
従来のCABACの場合、図1Cに示されるように、処理対象マクロブロック(curr)の1つ左のマクロブロック(mbA)と、1つ上のマクロブロック(mbB)が周辺マクロブロックとして参照される。しかしながら、このスライス1の場合、図4Bに示されるように、処理対象マクロブロック(curr)の1つ左のマクロブロック(mbA)と、1つ下のマクロブロック(mbB’)が周辺マクロブロックとして参照される。
ただし、最初に符号化される一番下のマクロブロックラインの1つ下のマクロブロックラインは、スライス2のマクロブロックラインであるので、図4Cに示されるように、参照不可能である。この場合、参照方向は異なるが、従来のCABACの一番上のマクロブロックラインの場合と同様に処理される。
また、図4Cに示されるように、処理対象が画面左端のマクロブロックの場合、その1つ左のマクロブロック(mbA)は、参照不可能である。この場合、従来のCABACの場合と同様に処理される。
これに対してスライス2では、図4Aの矢印に示されるように、従来の場合と同様に符号化が進められる。つまり、係数データは、図4Aの点線矢印に示されるように、一番上のマクロブロックラインが最初に符号化され、次に1つ下のマクロブロックラインが符号化される。このように処理対象が1つずつ下のマクロブロックラインに移動し、最後に一番下のマクロブロックラインが符号化される。
各マクロブロックライン内においては、図4Aの実線矢印に示されるように、左端のマクロブロックが最初に符号化され、次に1つ右のマクロブロックが符号化される。このように処理対象が1つずつ右のマクロブロックに移動し、最後に右端のマクロブロックが符号化される。
このスライス2の場合、周辺マクロブロックの参照方向は、図4Dに示されるように、従来の場合と同様であり、処理対象マクロブロック(curr)の1つ左のマクロブロック(mbA)と、1つ上のマクロブロック(mbB)が周辺マクロブロックとして参照される。
したがって、スライス2のCABACは、スライス2の一番上のマクロブロックラインの一番左のマクロブロックの係数データが記憶部152に書き込まれた時点で開始することができる。つまり、スライス2のCABACは、スライス1のCABACの終了を待たずに開始することができる。例えば、スライス1のCABACと並行してスライス2のCABACを実行することができる。
スライス1のCABACは、スライス2の係数データを参照しない。また、後述するように、スライス2の一番上のマクロブロックラインについては、スライス1の一番下のマクロブロックラインが参照されるが、このスライス1の係数データは、スライス2のCABACが開始された時点で記憶部152に存在する。したがって、スライス1のCABACと、スライス2のCABACとは互いに処理の待ち合わせ等を必要とせずに、互いに独立して処理を進めることができる。
これにより、可逆符号化部106は、符号化処理のスループットを向上させることができる。換言すれば、可逆符号化部106は、より高速に符号化を行うことができる。
また、上述したように、スライス2の一番上のマクロブロックラインのCABAC時に参照される、その1つ上のマクロブロックラインは、スライス1の一番下のマクロブロックラインであり、既に記憶部152に記憶されている。したがって、図4Dに示されるように、スライス2のCABACの場合、最初のマクロブロックライン、つまり、一番上のマクロブロックラインの符号化において、1つ上のマクロブロック(mbB)を参照することができる。
より具体的には、スライス2処理部154の読み出し制御部181は、スライス2の一番上のマクロブロックラインの係数データを処理対象として読み出す前に、スライス1の一番下のマクロブロックラインを読み出し、マクロブロックラインメモリ182に保持させる。
コンテキスト算出部183は、算術符号化部185が行う、スライス2の一番上のマクロブロックラインの係数データに対する算術符号化処理に対して、マクロブロックラインメモリ182に記憶されているスライス1の一番下のマクロブロックラインの係数データ等を用いて周辺マクロブロックのコンテキストを算出し、提供する。
算術符号化部185は、そのコンテキストを用いて、スライス2の一番上のマクロブロックラインの係数データに対する算術符号化処理を行う。
このように、エントロピスライス境界においても周辺マクロブロックを参照することができるので、可逆符号化部106は、画像分割(マルチスライス化)による符号化効率の低減を抑制させることができる。
[符号化処理]
次に、以上のような画像符号化装置100により実行される各処理の流れについて説明する。最初に、図5のフローチャートを参照して、符号化処理の流れの例を説明する。
ステップS101において、A/D変換部101は入力された画像をA/D変換する。ステップS102において、画面並べ替えバッファ102は、A/D変換部101から供給された画像を記憶し、各ピクチャの表示する順番から符号化する順番への並べ替えを行う。
ステップS103において、イントラ予測部114および動き予測補償部115は、それぞれ画像の予測処理を行う。すなわち、ステップS103において、イントラ予測部114は、イントラ予測モードのイントラ予測処理を行う。動き予測補償部115は、インター予測モードの動き予測補償処理を行う。
ステップS104において、選択部116は、イントラ予測部114および動き予測補償部115から出力された各コスト関数値に基づいて、最適予測モードを決定する。つまり、選択部116は、イントラ予測部114により生成された予測画像と、動き予測補償部115により生成された予測画像のいずれか一方を選択する。
また、この予測画像の選択情報は、イントラ予測部114または動き予測補償部115に供給される。最適イントラ予測モードの予測画像が選択された場合、イントラ予測部114は、最適イントラ予測モードを示す情報(すなわち、イントラ予測モード情報)を、可逆符号化部106に供給する。
最適インター予測モードの予測画像が選択された場合、動き予測補償部115は、最適インター予測モードを示す情報と、必要に応じて、最適インター予測モードに応じた情報を可逆符号化部106に出力する。最適インター予測モードに応じた情報としては、動きベクトル情報やフラグ情報、参照フレーム情報などがあげられる。
ステップS105において、演算部103は、ステップS102で並び替えられた画像と、ステップS103の予測処理により得られた予測画像との差分を演算する。予測画像は、インター予測する場合は動き予測補償部115から、イントラ予測する場合はイントラ予測部114から、それぞれ選択部116を介して演算部103に供給される。
差分データは元の画像データに較べてデータ量が低減される。したがって、画像をそのまま符号化する場合に較べて、データ量を圧縮することができる。
ステップS106において、直交変換部104は演算部103から供給された差分情報を直交変換する。具体的には、離散コサイン変換、カルーネン・レーベ変換等の直交変換が行われ、変換係数が出力される。ステップS107において、量子化部105は変換係数を量子化する。
ステップS108において、可逆符号化部106は量子化部105から出力された量子化された変換係数を符号化する。すなわち、差分画像(インターの場合、2次差分画像)に対して、算術符号化等の可逆符号化が行われる。符号化処理の詳細については後述する。
なお、可逆符号化部106は、ステップS104の処理により選択された予測画像の予測モードに関する情報を符号化し、差分画像を符号化して得られる符号化データのヘッダ情報に付加する。
つまり、可逆符号化部106は、イントラ予測部114から供給されるイントラ予測モード情報、または、動き予測補償部115から供給される最適インター予測モードに応じた情報なども符号化し、ヘッダ情報に付加する。
ステップS109において蓄積バッファ107は、可逆符号化部106から出力される符号化データを蓄積する。蓄積バッファ107に蓄積された符号化データは、適宜読み出され、伝送路を介して復号側に伝送される。
ステップS110においてレート制御部117は、蓄積バッファ107に蓄積された圧縮画像に基づいて、オーバーフローあるいはアンダーフローが発生しないように、量子化部105の量子化動作のレートを制御する。
また、ステップS107の処理により量子化された差分情報は、次のようにして局部的に復号される。すなわち、ステップS111において、逆量子化部108は量子化部105により量子化された変換係数を量子化部105の特性に対応する特性で逆量子化する。ステップS112において、逆直交変換部109は、逆量子化部108により逆量子化された変換係数を直交変換部104の特性に対応する特性で逆直交変換する。
ステップS113において、演算部110は、選択部116を介して入力される予測画像を局部的に復号された差分情報に加算し、局部的に復号された画像(演算部103への入力に対応する画像)を生成する。ステップS114においてデブロックフィルタ111は、演算部110から出力された画像をフィルタリングする。これによりブロック歪みが除去される。ステップS115においてフレームメモリ112は、フィルタリングされた画像を記憶する。なお、フレームメモリ112にはデブロックフィルタ111によりフィルタ処理されていない画像も演算部110から供給され、記憶される。
[可逆符号化処理]
次に、図6のフローチャートを参照して、図5のステップS108において実行される可逆符号化処理の流れの例を説明する。
可逆符号化処理が開始されると、ステップS131において、記憶部152は、マクロブロック検出部161を介して供給されるマクロブロック毎の係数データを記憶する。ステップS132において、記憶部152は、マクロブロック検出部161により検出されたマクロブロックラインの先頭アドレスを、係数データとは異なる領域に記憶する。
ステップS133において、スライス検出部162は、記憶部152に記憶されたマクロブロックがエントロピスライスの境界のマクロブロックであるか否かを判定し、エントロピスライスの境界であると判定された場合、処理をステップS134に進める。
ステップS134において、スライス検出部162は、スライス1の一番下のマクロブロックラインの一番左のマクロブロックが記憶部152に書き込まれた時点で、スライス1処理部153を制御し、スライス1の下方から上方に向かう符号化(後述するスライス1符号化処理)を開始させる。つまり、スライス検出部162は、スライス1処理部153に、図4を参照して説明したようにスライス1の下から上に向かう順序でCABACを別タスクとして実行させる。
ステップS135において、スライス検出部162は、スライス2の一番上のマクロブロックラインの一番左のマクロブロックが記憶部152に書き込まれた時点で、スライス2処理部154を制御し、スライス2の上方から下方に向かう符号化(後述するスライス2符号化処理)を開始させる。つまり、スライス検出部162は、スライス2処理部154に、図4を参照して説明したようにスライス2の上から下に向かう順序でCABACを別タスクとして実行させる。
スライス1に対するCABACおよびスライス2に対するCABACを開始させると、スライス検出部162は、処理をステップS136に進める。また、ステップS133において、スライスの境界でないと判定された場合、スライス検出部162は、処理をステップS136に進める。
ステップS136において、マクロブロック検出部161は、画像(ピクチャ若しくはフィールド)内の全てのマクロブロックを処理したか否かを判定し、未処理のマクロブロックが存在すると判定された場合、処理をステップS131に戻し、次に供給されるマクロブロックに対して、それ以降の処理を繰り返す。
また、ステップS136において、全てのマクロブロックを処理したと判定された場合、マクロブロック検出部161は、可逆符号化処理を終了し、図5のステップS108に処理を戻し、ステップS109に処理を進める。
[スライス1符号化処理]
次に、図7のフローチャートを参照して、スライス1処理部153により実行されるスライス1符号化処理の流れの例を説明する。
図6のステップS134の処理が実行され、スライス1符号化処理が開始されると、スライス1処理部153の読み出し制御部171は、ステップS151において、スライス1の最後のマクロブロックラインの係数データを読み出す。ステップS152において、マクロブロックラインメモリ172は、ステップS151において読み出されたマクロブロックラインの係数データを記憶する。
ステップS153において、2値化部174は、ステップS151において読み出されたマクロブロックラインの係数データを2値化する。ステップS154において、算術符号化部175は、下側のマクロブロックラインを参照せずに算術符号化を行う。
以上のようにして、スライス1の一番下のマクロブロックラインの係数データを全て符号化すると、スライス1処理部153は、処理をステップS155に進める。ステップS155において、スライス1処理部153の読み出し制御部171は、前回読み出したマクロブロックラインの1つ上のマクロブロックラインの係数データを読み出す。ステップS156において、マクロブロックラインメモリ172は、ステップS155において読み出されたマクロブロックラインの係数データを記憶する。
ステップS157において、2値化部174は、ステップS155において読み出されたマクロブロックラインの係数データを2値化する。ステップS158において、コンテキスト算出部173は、1つ下側のマクロブロックラインを参照して処理対象マクロブロックのコンテキストを算出する。ステップS159において、算術符号化部175は、ステップS158において算出されたコンテキストを用いて算術符号化を行う。
ステップS160において、読み出し制御部171は、画像(ピクチャ若しくはフィールド)内の全てのマクロブロックラインを処理したか否かを判定し、未処理のマクロブロックラインが存在する場合、処理をステップS155に戻し、それ以降の処理を繰り返す。
ステップS155乃至ステップS160の処理が繰り返し実行され、ステップS160において、画像内の全てのマクロブロックラインを処理したと判定された場合、読み出し制御部171は、スライス1符号化処理を終了する。
[スライス2符号化処理]
次に、図8のフローチャートを参照して、スライス2処理部154により実行されるスライス2符号化処理の流れの例を説明する。
図6のステップS135の処理が実行され、スライス2符号化処理が開始されると、スライス2処理部154の読み出し制御部181は、ステップS181において、スライス1の最後のマクロブロックラインの係数データと、スライス2の最初のマクロブロックラインの係数データを読み出す。ステップS182において、マクロブロックラインメモリ182は、ステップS181において読み出されたマクロブロックラインの係数データを記憶する。
ステップS183において、2値化部184は、ステップS181において読み出されたスライス2の最初のマクロブロックラインの係数データを2値化する。ステップS184において、コンテキスト算出部183は、ステップS182において記憶されたスライス1の最後のマクロブロックラインを参照して、処理対象マクロブロックのコンテキストを算出する。ステップS185において、算術符号化部185は、ステップS184において算出されたコンテキストを用いて算術符号化を行う。
以上のようにして、スライス2の一番上のマクロブロックラインの係数データを全て符号化すると、スライス2処理部154は、処理をステップS186に進める。ステップS186において、スライス2処理部154の読み出し制御部181は、前回読み出したマクロブロックラインの1つ下のマクロブロックラインの係数データを読み出す。ステップS187において、マクロブロックラインメモリ172は、ステップS186において読み出されたマクロブロックラインの係数データを記憶する。
ステップS188において、2値化部184は、ステップS186において読み出されたマクロブロックラインの係数データを2値化する。ステップS189において、コンテキスト算出部183は、1つ上側のマクロブロックラインを参照して処理対象マクロブロックのコンテキストを算出する。ステップS190において、算術符号化部185は、ステップS189において算出されたコンテキストを用いて算術符号化を行う。
ステップS191において、読み出し制御部181は、画像(ピクチャ若しくはフィールド)内の全てのマクロブロックラインを処理したか否かを判定し、未処理のマクロブロックラインが存在する場合、処理をステップS186に戻し、それ以降の処理を繰り返す。
ステップS186乃至ステップS191の処理が繰り返し実行され、ステップS191において、画像内の全てのマクロブロックラインを処理したと判定された場合、読み出し制御部181は、スライス2符号化処理を終了する。
以上のように可逆符号化部106は、符号化効率の低減を抑制させながら、画像符号化の高速化を実現することができる。
<2.第2の実施の形態>
[画像復号装置]
第1の実施の形態において説明した画像符号化装置100により符号化された符号化データは、所定の伝送路を介して、画像符号化装置100に対応する画像復号装置に伝送され、復号される。
以下に、その画像復号装置について説明する。図9は、本発明を適用した画像復号装置の主な構成例を示すブロック図である。
図9に示されるように、画像復号装置200は、蓄積バッファ201、可逆復号部202、逆量子化部203、逆直交変換部204、演算部205、デブロックフィルタ206、画面並べ替えバッファ207、D/A変換部208、フレームメモリ209、選択部210、イントラ予測部211、動き予測補償部212、および選択部213を有する。
蓄積バッファ201は、伝送されてきた符号化データを蓄積する。この符号化データは、画像符号化装置100により符号化されたものである。可逆復号部202は、蓄積バッファ201から所定のタイミングで読み出された符号化データを、図2の可逆符号化部106の符号化方式に対応する方式で復号する。
逆量子化部203は、可逆復号部202により復号されて得られた係数データを、図2の量子化部105の量子化方式に対応する方式で逆量子化する。逆量子化部203は、逆量子化された係数データを、逆直交変換部204に供給する。逆直交変換部204は、図2の直交変換部104の直交変換方式に対応する方式で、その係数データを逆直交変換し、画像符号化装置100において直交変換される前の残差データに対応する復号残差データを得る。
逆直交変換されて得られた復号残差データは、演算部205に供給される。また、演算部205には、選択部213を介して、イントラ予測部211若しくは動き予測補償部212から予測画像が供給される。
演算部205は、その復号残差データと予測画像とを加算し、画像符号化装置100の演算部103により予測画像が減算される前の画像データに対応する復号画像データを得る。演算部205は、その復号画像データをデブロックフィルタ206に供給する。
デブロックフィルタ206は、復号された画像のブロック歪を除去した後、フレームメモリ209に供給し、蓄積させるとともに、画面並べ替えバッファ207にも供給する。
画面並べ替えバッファ207は、画像の並べ替えを行う。すなわち、図2の画面並べ替えバッファ102により符号化の順番のために並べ替えられたフレームの順番が、元の表示の順番に並べ替えられる。D/A変換部208は、画面並べ替えバッファ207から供給された画像をD/A変換し、図示せぬディスプレイに出力し、表示させる。
選択部210は、インター処理される画像と参照される画像をフレームメモリ209から読み出し、動き予測補償部212に供給する。また、選択部210は、イントラ予測に用いられる画像をフレームメモリ209から読み出し、イントラ予測部211に供給する。
イントラ予測部211には、ヘッダ情報を復号して得られたイントラ予測モードを示す情報等が可逆復号部202から適宜供給される。イントラ予測部211は、この情報に基づいて、予測画像を生成し、生成した予測画像を選択部213に供給する。
動き予測補償部212は、ヘッダ情報を復号して得られた情報(予測モード情報、動きベクトル情報、参照フレーム情報)を可逆復号部202から取得る。インター予測モードを示す情報が供給された場合、動き予測補償部212は、可逆復号部202からのインター動きベクトル情報に基づいて、予測画像を生成し、生成した予測画像を選択部213に供給する。
選択部213は、動き予測補償部212またはイントラ予測部211により生成された予測画像を選択し、演算部205に供給する。
[可逆復号部]
図10は、図9の可逆復号部202の主な構成例を示すブロック図である。
図10に示されるように可逆復号部202は、デマルチプレクサ251、スライス1処理部252、スライス2処理部253、記憶部254、および読み出し制御部255を有する。
デマルチプレクサ251は、蓄積バッファ201から供給された符号化データが属するエントロピスライス(スライス1かスライス2か)を識別し、そのエントロピスライスによって符号化データの供給先を制御する。
図2の画像符号化装置100により生成されたビットストリームは、エントロピスライス毎に独立したストリームとして多重化されている。蓄積バッファ201からは、その多重化されたストリームが供給される。
例えば、デマルチプレクサ251は、スライス1に属する符号化データの場合、スライス1処理部252に供給する。また、例えば、デマルチプレクサ251は、スライス2に属する符号化データの場合、スライス2処理部253に供給する。
スライス1処理部252は、スライス1に属する符号化データを算術復号する。画像符号化装置100において、スライス1の各マクロブロックは、画像の左から右、下から上の順に符号化されている。また、参照する周辺ブロックは、処理対象マクロブロックの1つ左のマクロブロックと1つ下のマクロブロックである。復号処理もこれと同様の処理順および参照方向で行われる。
スライス2処理部253は、スライス2に属する符号化データを算術復号する。画像符号化装置100において、スライス2の各マクロブロックは、画像の左から右、上から下の順に符号化されている。また、参照する周辺ブロックは、処理対象マクロブロックの1つ左のマクロブロックと1つ上のマクロブロックである。復号処理もこれと同様の処理順および参照方向で行われる。
記憶部254は、スライス1処理部252において生成された復号係数データ(多値データ)、および、スライス2処理部253において生成された復号係数データ(多値データ)を取得し、記憶する。読み出し制御部255は、記憶部254に記憶されている復号係数データを所定のタイミングに所定の順に読み出し、逆量子化部203に供給する。
なお、実際には、可逆復号部202は、供給されたビットストリームから符号化パラメータや予測モード情報等のメタデータを抽出し、それらをイントラ予測部211や動き予測補償部212に供給する。
スライス1処理部252は、算術復号部261、多値化部262、マクロブロックラインメモリ263、およびコンテキスト算出部264を有する。
算術復号部261は、コンテキスト算出部264が算出したコンテキストを用いて符号化データを算術復号し、2値データを生成する。多値化部262は、算術復号部261から出力される2値データを多値化する。多値化部262は、生成した多値データを、復号係数データとして記憶部254に供給するとともに、マクロブロックラインメモリ263に供給する。
マクロブロックラインメモリ263は、多値化部262より供給される復号係数データを記憶する。マクロブロックラインメモリ263は、復号係数データを1マクロラインブロック分以上記憶することができる。
コンテキスト算出部264は、マクロブロックラインメモリ263に記憶されている復号係数データを用いて、算術復号部261による復号処理の処理対象マクロブロックに隣接する周辺マクロブロックのコンテキストを算出し、それを算術復号部261に供給する。
例えば、コンテキスト算出部264は、処理対象マクロブロックの1つ左のマクロブロックのコンテキストと、処理対象マクロブロックの1つ下のマクロブロックのコンテキストを生成する。
スライス2処理部253は、算術復号部271、多値化部272、マクロブロックラインメモリ273、およびコンテキスト算出部274を有する。
算術復号部271は、コンテキスト算出部274が算出したコンテキストを用いて符号化データを算術復号し、2値データを生成する。多値化部272は、算術復号部271から出力される2値データを多値化する。多値化部272は、生成した多値データを、復号係数データとして記憶部254に供給するとともに、マクロブロックラインメモリ273に供給する。
マクロブロックラインメモリ273は、多値化部272より供給される復号係数データを記憶する。マクロブロックラインメモリ273は、復号係数データを1マクロラインブロック分以上記憶することができる。
コンテキスト算出部274は、マクロブロックラインメモリ273に記憶されている復号係数データを用いて、算術復号部271による復号処理の処理対象マクロブロックに隣接する周辺マクロブロックのコンテキストを算出し、それを算術復号部271に供給する。
例えば、コンテキスト算出部274は、処理対象マクロブロックの1つ左のマクロブロックのコンテキストと、処理対象マクロブロックの1つ上のマクロブロックのコンテキストを生成する。
なお、コンテキスト算出部274は、復号処理対象がスライス2の一番上のマクロブロックラインである場合、スライス1処理部252のマクロブロックラインメモリ263に記憶されているスライス1の一番下のマクロブロックラインの復号係数データを用いて、処理対象マクロブロックの1つ上のマクロブロックのコンテキストを生成する。
以上のように復号処理を行うことにより、可逆復号部202は、可逆符号化部106の場合と同様の順序で処理を進め、同様の方向に周辺参照を行うので、符号化データを正しく復号することができる。
[復号処理]
次に、以上のような画像復号装置200により実行される各処理の流れについて説明する。最初に、図11のフローチャートを参照して、復号処理の流れの例を説明する。
復号処理が開始されると、ステップS201において、蓄積バッファ201は伝送されてきた符号化データを蓄積する。ステップS202において、可逆復号部202は、蓄積バッファ201から供給される符号化データを復号する。すなわち、図2の可逆符号化部106により符号化されたIピクチャ、Pピクチャ、並びにBピクチャが復号される。
このとき、動きベクトル情報、参照フレーム情報、予測モード情報(イントラ予測モード、またはインター予測モード)、およびフラグ情報等も復号される。
すなわち、予測モード情報がイントラ予測モード情報である場合、予測モード情報は、イントラ予測部211に供給される。予測モード情報がインター予測モード情報である場合、予測モード情報と対応する動きベクトル情報は、動き予測補償部212に供給される。
ステップS203において、逆量子化部203は可逆復号部202により復号された変換係数を、図2の量子化部105の特性に対応する特性で逆量子化する。ステップS204において逆直交変換部204は逆量子化部203により逆量子化された変換係数を、図2の直交変換部104の特性に対応する特性で逆直交変換する。これにより図2の直交変換部104の入力(演算部103の出力)に対応する差分情報が復号されたことになる。
ステップS205において、イントラ予測部211、または動き予測補償部212は、可逆復号部202から供給される予測モード情報に対応して、それぞれ画像の予測処理を行う。
すなわち、可逆復号部202からイントラ予測モード情報が供給された場合、イントラ予測部211は、イントラ予測モードのイントラ予測処理を行う。また、可逆復号部202からインター予測モード情報が供給された場合、動き予測補償部212は、インター予測モードの動き予測処理を行う。
ステップS206において、選択部213は予測画像を選択する。すなわち、選択部213には、イントラ予測部211により生成された予測画像、若しくは、動き予測補償部212により生成された予測画像が供給される。選択部213は、そのいずれか一方を選択する。選択された予測画像は、演算部205に供給される。
ステップS207において、演算部205は、ステップS204の処理により得られた差分情報に、ステップS206の処理により選択された予測画像を加算する。これにより元の画像データが復号される。
ステップS208において、デブロックフィルタ206は、演算部205から供給された復号画像データをフィルタリングする。これによりブロック歪みが除去される。
ステップS209において、フレームメモリ209は、フィルタリングされた復号画像データを記憶する。
ステップS210において、画面並べ替えバッファ207は、復号画像データのフレームの並べ替えを行う。すなわち、復号画像データの、画像符号化装置100の画面並べ替えバッファ102(図2)により符号化のために並べ替えられたフレームの順序が、元の表示の順序に並べ替えられる。
ステップS211において、D/A変換部208は、画面並べ替えバッファ207においてフレームが並べ替えられた復号画像データをD/A変換する。この復号画像データが図示せぬディスプレイに出力され、その画像が表示される。
[可逆復号処理]
次に図12のフローチャートを参照して、図11のステップS202において実行される可逆復号処理の流れの例を説明する。
可逆復号処理が開始されると、デマルチプレクサ251は、ステップS231において、係数データをスライス毎に分割する。ステップS232において、デマルチプレクサ251は、スライス1の符号化データをスライス1処理部252に供給し、スライス1の下方から上方に向かう復号(スライス1復号処理)を別タスクとして開始させる。
ステップS233においてデマルチプレクサ251は、ステップS232において開始されたスライス1復号処理により、スライス1の最後の(一番下の)マクロブロックラインの復号が終了したか否かを判定し、終了したと判定されるまで待機する。スライス1の最後の(一番下の)マクロブロックラインの復号が終了したと判定された場合、デマルチプレクサ251は、処理をステップS234に進める。
ステップS234において、デマルチプレクサ251は、スライス2の符号化データをスライス2処理部253に供給し、スライス2の上方から下方に向かう復号(スライス2復号処理)を別タスクとして開始させる。
ステップS235においてデマルチプレクサ251は、ステップS234において開始されたスライス2復号処理により、スライス2の全てのマクロブロックの復号が終了したか否かを判定し、終了したと判定されるまで待機する。スライス2の復号が終了したと判定された場合、デマルチプレクサ251は、可逆復号処理を終了し、処理を図11のステップS202に戻し、ステップS203に処理を進める。
[スライス1復号処理]
次に、図12のステップS232の処理により開始されるスライス1復号処理の流れの例を図13のフローチャートを参照して説明する。
スライス1復号処理が開始されると、算術復号部261は、ステップS251において、スライス1の最後の(一番下の)マクロブロックラインの各マクロブロックについて、下側のマクロブロックラインのマクロブロックを参照せずに算術復号を行う。
ステップS252において、多値化部262は、ステップS252において復号されて得られた2値の係数データを多値化し、多値データの係数データに変換する。
ステップS253において、マクロブロックラインメモリ263は、以上のように生成される処理対象マクロブロックラインの係数データ(多値データ)を記憶する。スライス1の一番下のマクロブロックラインの係数データを記憶すると、マクロブロックラインメモリ263は、処理をステップS254に進める。
ステップS254に処理が進むと、復号処理対象のマクロブロックラインが1つ上に移動する。ステップS254において、コンテキスト算出部264は、復号処理対象のマクロブロックラインだけでなく、復号処理対象のマクロブロックラインの1つ下のマクロブロックラインも参照し、コンテキストを算出する。
ステップS255において、算術復号部261は、ステップS254において生成されたコンテキストを用いて算術復号を行う。ステップS256において、多値化部262は、ステップS255において復号されて得られた2値の係数データを多値化し、多値データを生成する。
ステップS257において、マクロブロックラインメモリ263は、以上のように生成される処理対象マクロブロックラインの係数データ(多値データ)を記憶する。処理対象のマクロブロックラインの係数データを記憶すると、マクロブロックラインメモリ263は、処理をステップS258に進める。
ステップS258において、スライス1処理部252は、スライス1の全てのマクロブロックラインを処理したか否かを判定する。未処理のマクロブロックラインが存在すると判定された場合、スライス1処理部252は、処理をステップS254に戻し、前回処理対象とされたマクロブロックラインの1つ上のマクロブロックラインを処理対象とし、処理を繰り返す。
ステップS254乃至ステップS258の処理が繰り返し行われ、ステップS258において、全てのマクロブロックラインが処理されたと判定された場合、スライス1復号処理が終了される。
[スライス2復号処理]
次に、図12のステップS234の処理により開始されるスライス2復号処理の流れの例を図14のフローチャートを参照して説明する。
スライス2復号処理が開始されると、コンテキスト算出部274は、ステップS271において、処理対象であるスライス2の最初の(一番上の)マクロブロックラインの各マクロブロックについて、その処理対象のマクロブロックラインだけでなく、マクロブロックラインメモリ263に記憶されているスライス1の最後(一番下の)マクロブロックラインも参照してコンテキストを算出する。
ステップS272において、算術復号部271は、ステップS271において算出されたコンテキストを用いて算術復号を行う。ステップS273において、多値化部272は、ステップS272において復号されて得られた2値の係数データを多値化し、多値データの係数データに変換する。
ステップS274において、マクロブロックラインメモリ273は、以上のように生成される処理対象マクロブロックラインの係数データ(多値データ)を記憶する。スライス2の一番上のマクロブロックラインの係数データを記憶すると、マクロブロックラインメモリ273は、処理をステップS275に進める。
ステップS275に処理が進むと、復号処理対象のマクロブロックラインが1つ下に移動する。ステップS275において、コンテキスト算出部274は、復号処理対象のマクロブロックラインだけでなく、復号処理対象のマクロブロックラインの1つ上のマクロブロックラインも参照し、コンテキストを算出する。
ステップS276において、算術復号部271は、ステップS275において生成されたコンテキストを用いて算術復号を行う。ステップS277において、多値化部272は、ステップS276において復号されて得られた2値の係数データを多値化し、多値データを生成する。
ステップS278において、マクロブロックラインメモリ273は、以上のように生成される処理対象マクロブロックラインの係数データ(多値データ)を記憶する。処理対象のマクロブロックラインの係数データを記憶すると、マクロブロックラインメモリ273は、処理をステップS279に進める。
ステップS279において、スライス2処理部253は、スライス2の全てのマクロブロックラインを処理したか否かを判定する。未処理のマクロブロックラインが存在すると判定された場合、スライス2処理部253は、処理をステップS275に戻し、前回処理対象とされたマクロブロックラインの1つ下のマクロブロックラインを処理対象とし、処理を繰り返す。
ステップS275乃至ステップS279の処理が繰り返し行われ、ステップS279において、全てのマクロブロックラインが処理されたと判定された場合、スライス2復号処理が終了される。
以上のように画像復号装置200は、画像符号化装置100により符号化されて得られた符号化データを、正しく復号することができる。これにより、可逆復号部202は、符号化効率の低減を抑制させながら、画像符号化の高速化を実現することができる。
<3.第3の実施の形態>
[可逆符号化部の構成]
なお、以上においては、コンテキストの生成をスライス1処理部153とスライス2処理部154において行うように説明したが、これに限らず、記憶部152に記憶する前にコンテキストを生成するようにしてもよい。
図15は、図1の可逆符号化部106の他の構成例を示すブロック図である。
図15に示されるように、この場合、可逆符号化部106は、図3の場合の構成に加え、コンテキスト処理部301を有する。また、可逆符号化部106は、図3の場合のスライス1処理部153の代わりにスライス1処理部303を有し、さらに、スライス2処理部154の代わりにスライス2処理部304を有する。
コンテキスト処理部301は、量子化部105から供給される係数データからコンテキストを算出する。スライス1処理部303は、基本的にスライス1処理部153と同様の構成を有するが、コンテキスト処理部301がスライス1処理部303の外部に存在するので、マクロブロックラインメモリ172およびコンテキスト算出部173が省略される。スライス2処理部304は、基本的にスライス2処理部154と同様の構成を有するが、コンテキスト処理部301がスライス2処理部304の外部に存在するので、マクロブロックラインメモリ182およびコンテキスト算出部183が省略される。
コンテキスト処理部301は、マクロブロックラインメモリ311とコンテキスト算出部312を有する。マクロブロックラインメモリ311は、マクロブロックラインメモリ172やマクロブロックラインメモリ182と基本的に同様であり、量子化部105から供給される係数データを記憶する。なお、スライス1の参照方向は従来と逆向きであり、処理対象マクロブロックの1つ下のマクロブロックラインが参照されるので、マクロブロックラインメモリ311は、少なくとも1マクロブロックラインの係数データを全て記憶することができるようにする必要がある。
コンテキスト算出部312は、コンテキスト算出部173やコンテキスト算出部183と基本的に同様であり、マクロブロックラインメモリ311に記憶されているマクロブロックラインを参照し、コンテキストを算出する。
コンテキスト算出部312は、スライス2においてコンテキストを算出する場合、処理対象の1つ上のマクロブロックラインを参照するが、スライス1においてコンテキストを算出する場合、処理対象の1つ下のマクロブロックラインを参照する。
つまり、コンテキスト算出部312は、スライス2においてコンテキストを算出する場合、従来と同様に、処理対象マクロブロック(curr)に対して1つ左のマクロブロック(mb-A)と1つ上のマクロブロック(mb-B)を参照してコンテキスト(context index)を算出する。
これに対して、コンテキスト算出部312は、スライス1においてコンテキストを算出する場合、処理対象マクロブロック(curr)に対して1つ左のマクロブロック(mb-A)と1つ下のマクロブロック(mb-B’)を参照してコンテキスト(context index)を算出する。つまり、コンテキスト算出部312は、1つ下のマクロブロック(mb-B’)が供給された時点で、マクロブロックラインメモリ311に記憶されている処理対象マクロブロック(curr)と1つ左のマクロブロック(mb-A)とを読み出し、コンテキスト(context index)を算出する。
なお、コンテキスト算出部312は、スライス1の下から2番目のマクロブロックラインを処理対象(curr)としてコンテキストを生成する際に、スライス1の一番下のマクロブロックラインのコンテキストも生成する。
コンテキスト算出部312は、算出したコンテキストを、記憶部152の係数データやマクロブロックアドレスの先頭アドレスとは別の領域に、係数データやマクロブロックアドレスの先頭アドレスとの対応関係を示すタグを付けて記憶させる。
スライス1処理部303の読み出し制御部171は、係数データやマクロブロックアドレスの先頭アドレスとともに、必要なコンテキストも記憶部152から読み出す。読み出し制御部171は、読み出したコンテキストを算術符号化部175に供給する。
スライス2処理部304の読み出し制御部181は、係数データやマクロブロックアドレスの先頭アドレスとともに、必要なコンテキストも記憶部152から読み出す。読み出し制御部181は、読み出したコンテキストを算術符号化部185に供給する。
[可逆符号化処理]
この場合の、可逆符号化処理の流れの例を図16のフローチャートを参照して説明する。このフローチャートは、図6のフローチャートに対応する。
この場合、ステップS301およびステップS302の各処理は、図6のステップS131およびステップS132の各処理と同様に実行される。
ステップS303において、コンテキスト処理部301は、処理対象マクロブロックラインがスライス1であるか否かを判定し、スライス1であると判定された場合、処理をステップS304に進める。
ステップS304において、コンテキスト処理部301は、1つ下のマクロブロックラインを参照してコンテキストを算出する。なお、スライス1の一番上のマクロブロックラインと一番下のマクロブロックラインのコンテキストについては、上述した通り生成する。コンテキストを生成すると、コンテキスト処理部301は、処理をステップS306に進める。
また、ステップS303において、処理対象マクロブロックラインがスライス2であると判定された場合、コンテキスト処理部301は、処理をステップS305に進める。
ステップS305において、コンテキスト処理部301は、1つ上のマクロブロックラインを参照してコンテキストを算出する。なお、スライス2の一番上のマクロブロックラインのコンテキストは、スライス1の一番下のマクロブロックラインを参照して生成する。コンテキストを生成すると、コンテキスト処理部301は、処理をステップS306に進める。
ステップS306において、記憶部152は、ステップS304若しくはステップS305において算出されたコンテキストを記憶する。
ステップS307乃至ステップS310の各処理は、図6のステップS133乃至ステップS136の各処理と同様に行われる。
[スライス1符号化処理]
次に、図16のステップS308の処理により開始されるスライス1符号化処理の流れの例を図17のフローチャートを参照して説明する。なお、このフローチャートは、図7のフローチャートに対応する。
この場合も、基本的に図7の場合と同様に行われるが、コンテキストは既に生成されているので、図7のステップS152、ステップS156、およびステップS158の各処理は省略され、ステップS151に対応するステップS331、ステップS153に対応するステップS332、ステップS155に対応するステップS333、ステップS155に対応するステップS334、ステップS157に対応するステップS335、ステップS159に対応するステップS336、並びに、ステップS160に対応するステップS337の各処理が実行される。
ただし、ステップS334において、読み出し制御部171は、スライス1の1つ上のマクロブロックラインとともに対応するコンテキストも記憶部152から読み出す。ステップS336において、算術符号化部175は、このステップS334において読み出されたコンテキストを用いて算術符号化を行う。
[スライス2符号化処理]
次に、図16のステップS309の処理により開始されるスライス2符号化処理の流れの例を図18のフローチャートを参照して説明する。なお、このフローチャートは、図8のフローチャートに対応する。
この場合も、基本的に図8の場合と同様に行われるが、コンテキストは既に生成されているので、図8のステップS182、ステップS184、ステップS187、およびステップS189の各処理は省略され、ステップS181に対応するステップS351、ステップS183に対応するステップS352、ステップS185に対応するステップS353、ステップS186に対応するステップS354、ステップS188に対応するステップS355、ステップS190に対応するステップS356、並びに、ステップS191に対応するステップS357の各処理が実行される。
ただし、ステップS351において、読み出し制御部181は、スライス2の最初(一番上)のマクロブロックラインととともに、対応するコンテキストも記憶部152から読み出す。つまり、スライス1の最後(一番下)のマクロブロックラインのコンテキストも読みだされる。ステップS353において、算術符号化部185は、このステップS351において読み出されたコンテキストを用いて算術符号化を行う。
同様に、ステップS354において、読み出し制御部181は、スライス2の1つ下のマクロブロックラインととともに、対応するコンテキストも記憶部152から読み出す。ステップS356において、算術符号化部185は、このステップS354において読み出されたコンテキストを用いて算術符号化を行う。
以上のように、コンテキストの算出を、係数データを記憶部152に記憶する前に行うことにより、読み出し後の算術符号化処理(スライス1処理部303およびスライス2処理部304)の負荷を軽減させることができる。一般的に算術符号化処理の負荷は、前後の他の処理と比較して大きいので、上述したように、係数データを記憶部152に記憶させる前にコンテキストを予め算出するようにすることにより、負荷を分散させることができ、コストの低減や符号化処理のさらなる高速化等を実現することができる。
[確率テーブルの複製]
さらに、算術符号化の初期状態を改善することができる。
AVC規格ではcabac_init_idcというパラメータとslice_type, SliceQPyというパラメータを用いてCABACの確率テーブルを初期化する。
これに対して、図19に示されるように、スライス1の一番下のマクロブロックラインの処理を終わった時、スライス1処理部153が持っている確率テーブルの内容をスライス2処理部154が持つ確率テーブルにコピーする。スライス2処理部154は、スライス1処理部153が使っていた値を初期値としてCABACを開始する。
このようにすることにより、可逆符号化部106は、規格による初期値よりも画像に適した確率値で符号化を開始することができ、符号化効率を向上させることができる。
[スライス1符号化処理]
この場合のスライス1符号化処理の流れの例を図20のフローチャートを参照して説明する。図20に示されるフローチャートは、図7のフローチャートに対応する。
ステップS401において、算術符号化部175は、確率テーブルを初期化する。ステップS402乃至ステップS405の各処理は、図7のステップS151乃至ステップS154の各処理と同様に行われる。
ステップS406において、算術符号化部175は、一番下のマクロブロックラインの最後(一番右)のマクロブロックの確率テーブルをコピーし、算術符号化部185に供給する。
ステップS407乃至ステップS412の各処理は、図7のステップS155乃至ステップS160の各処理と同様に行われる。
[スライス2符号化処理]
この場合のスライス2符号化処理の流れの例を図21のフローチャートを参照して説明する。図21に示されるフローチャートは、図8のフローチャートに対応する。
ステップS431およびステップS432の各処理は、図8のステップS181およびステップS182の各処理と同様に実行される。
ステップS433において、算術符号化部185は、スライス1の確率テーブルのコピーを取得する。ステップS434およびステップS435の各処理は、図7のステップS183およびステップS184の各処理と同様に行われる。
ステップS436において、算術符号化部185は、スライス1の確率テーブルのコピーを初期値として、コンテキストを用いて算術符号化を行う。
ステップS437乃至ステップS442の各処理は、図8のステップS186乃至ステップS191の各処理と同様に行われる。
なお、画像復号装置200においても同様に、確率テーブルのコピーを初期値として利用して復号を行う。そのために、画像符号化装置100は、確率テーブルを初期化したか若しくはコピーを利用したかを示す情報を、例えば符号化データに付加する等して、画像復号装置200に提供する。確率テーブルのコピーを初期値として利用する旨の情報を得ると画像復号装置200の可逆復号部202は、スライス1処理部252の算術復号部261がスライス1の一番下のマクロブロックラインの処理を終えた時にCABAC確率テーブルの内容をコピーし、スライス2処理部253の算術復号部271がそのコピーを用いて算術復号処理を開始するようにする。このようにすることにより、可逆復号部202は、上述した符号化の場合と同じ確率テーブルを使うことができ、符号化データを正しく復号することができる。
[多分割]
以上においては画像を2分割するように説明したが、分割数は2以外であってもよい。例えば、図22に示されるように、画像が、スライス1乃至スライス4の4つのエントロピスライスに分割されるようにしてもよい。
この図22の例のように画像を4分割する場合、スライス1とスライス2は、上述した2分割の場合と同様に符号化が行われるようにする。また、スライス3はスライス1と同様に、スライス4はスライス2と同様に符号化が行われるようにする。
つまり、スライス1とスライス3の符号化処理は、下のマクロブロックラインから上のマクロブロックラインに向かう順に進められるようにする。また、スライス1とスライス3の符号化処理においては、周辺マクロブロックとして処理対象マクロブロックの1つ左のマクロブロックと1つ下のマクロブロックが参照されるようにする。
これに対して、スライス2とスライス4の符号化処理は、従来と同様に、上のマクロブロックラインから下のマクロブロックラインに向かう順に進められるようにする。また、スライス2とスライス4の符号化処理においては、周辺マクロブロックとして処理対象マクロブロックの1つ左のマクロブロックと1つ上のマクロブロックが参照されるようにする。
そして、スライス1の一番下のマクロブロックラインの係数データが記憶部152に記憶されたときにスライス2の符号化処理が開始されるのと同様に、スライス3の一番下のマクロブロックラインの係数データが記憶部152に記憶されたときにスライス4の符号化処理が開始される。
さらに、スライス2の一番上のマクロブロックラインの符号化処理においてスライス1の一番下のマクロブロックラインが参照されるのと同様に、スライス4の一番上のマクロブロックラインの符号化処理では、処理対象マクロブロックの1つ上のマクロブロックとして、スライス3の一番下のマクロブロックラインのマクロブロックが参照されるようにする。
[可逆符号化部の構成]
このように画像を4分割する場合、可逆符号化部106は、例えば、図23に示されるように、図3のスライス1処理部153と同様のスライス3処理部503と、スライス2処理部154と同様のスライス4処理部504をさらに有する。
また、可逆符号化部106は、画像を2つのスライスに分割する制御部151の代わりに、画像を4つのスライスに分割する制御部501を有する。
制御部501は、マクロブロック検出部161とスライス検出部512を有する。スライス検出部512は、スライス1処理部153、スライス2処理部154、スライス3処理部503、およびスライス4処理部504を制御し、画像を4つのスライスに分割し、互いに並行して符号化処理を行わせる。
画像が4分割される以外は、各処理は2分割の場合と同様に実行される。つまり、スライス3はスライス1と同様に符号化され、スライス4はスライス2と同様に符号化される。
このように分割数を増やすことにより、並列数が増大するので、スループットが向上し、可逆符号化部106は、より高速に可逆符号化処理を行うことができる。その際、2分割の場合と同様に符号化処理が行われるので、可逆符号化部106は、符号化効率の低減を抑制させながら、画像符号化の高速化を実現することができる。
つまり、画像符号化装置100の可逆符号化部106は、符号化対象の画像を、上下に並ぶ複数の領域に分割する。そして、可逆符号化部106は、上から偶数番目の領域については、従来どおり、上のマクロブロックラインから下に向かう順に符号化を行い、周辺マクロブロックとして処理対象マクロブロックの1つ左のマクロブロックと1つ上のマクロブロックを参照する。
これに対して、上から奇数番目の領域については、可逆符号化部106は、従来とは逆に、下のマクロブロックラインから上に向かう順に符号化を行い、周辺マクロブロックとして処理対象マクロブロックの1つ左のマクロブロックと1つ下のマクロブロックを参照する。
さらに、可逆符号化部106は、上から奇数番目の領域の一番下のマクロブロックラインの符号化が終了した時点で、その1つ下の(上から偶数番目の)領域についての符号化処理を開始する。
また、このとき、可逆符号化部106は、上から奇数番目の領域の一番下のマクロブロックラインを参照して、その1つ下の(上から偶数番目の)領域の一番上のマクロブロックラインについての符号化処理を行う。
[可逆復号部の構成]
画像を4分割する場合の画像復号装置200の可逆復号部202の構成例を図24に示す。
図24に示されるように、この場合の可逆復号部202は、図10の場合に比べて、デマルチプレクサ251の代わりに、符号化データをスライス毎に4つに分割するデマルチプレクサ551を有し、さらに、スライス3処理部552およびスライス4処理部553を有する。
スライス3処理部552は、スライス3の符号化データを復号する処理部であり、スライス1処理部252と同様の構成を有し、同様の処理を行う。スライス3においては、スライス1と同様の方法で符号化されているので、スライス3処理部552は、スライス1処理部252と同様の方法で復号することにより、スライス3の符号化データを正しく復号することができる。
スライス4処理部553は、スライス4の符号化データを復号する処理部であり、スライス2処理部253と同様の構成を有し、同様の処理を行う。スライス4においては、スライス2と同様の方法で符号化されているので、スライス4処理部553は、スライス2処理部253と同様の方法で復号することにより、スライス4の符号化データを正しく復号することができる。
まず、スライス1処理部252によるスライス1の符号化データの復号処理と、スライス3処理部552によるスライス3の符号化データの復号処理が開始される。スライス2処理部253によるスライス2の一番上のマクロブロックラインの復号処理は、スライス1の一番下のマクロブロックラインの復号処理結果を待って開始される(周辺マクロブロックとして参照される)。
同様に、スライス4処理部553によるスライス4の一番上のマクロブロックラインの復号処理は、スライス3の一番下のマクロブロックラインの復号処理結果を待って開始される(周辺マクロブロックとして参照される)。
つまり、画像復号装置200の可逆復号部202は、復号対象の符号化データに対応する符号化前の画像を、上下に並ぶ複数の領域に分割する。そして、可逆復号部202は、上から偶数番目の領域に対応する符号化データについては、従来どおり、上のマクロブロックラインから下に向かう順に復号し、周辺マクロブロックとして処理対象マクロブロックの1つ左のマクロブロックと1つ上のマクロブロックを参照する。
これに対して、上から奇数番目の領域に対応する符号化データについては、可逆復号部202は、従来とは逆に、下のマクロブロックラインから上に向かう順に復号し、周辺マクロブロックとして処理対象マクロブロックの1つ左のマクロブロックと1つ下のマクロブロックを参照する。
さらに、可逆復号部202は、上から奇数番目の領域の一番下のマクロブロックラインに対応する符号化データの復号が終了した時点で、その1つ下の(上から偶数番目の)領域の符号化データについての復号処理を開始する。
また、このとき、可逆復号部202は、上から奇数番目の領域の一番下のマクロブロックラインを参照して、その1つ下の(上から偶数番目の)領域の一番上のマクロブロックラインに対応する符号化データについての復号処理を行う。
なお、画像符号化装置100および画像復号装置200が、それぞれ多数のスライス処理部を予め有し、その中のエントロピスライス数と同数のスライス処理部を動作させるようにしてもよい。つまり、エントロピスライス数は、画像単位、シーケンス単位、コンテンツ単位等で変更することができるようにしてもよい。その場合、画像符号化装置100は、画像復号装置200に対して、符号化処理に採用したエントロピスライス数を通知する。画像復号装置200は、その情報に基づいて復号処理を行うことにより、画像符号化装置100が生成した符号化データを正しく復号することができる。
[マクロブロック]
マクロブロックのサイズは、16×16以下であってもよいが、16×16より大きくてもよい。
本発明は、例えば図25に示されるようなあらゆる大きさのマクロブロックに対して適用することができる。例えば、本発明は、通常の16×16画素のようなマクロブロックだけでなく、32×32画素のような拡張されたマクロブロック(拡張マクロブロック)にも適用することができる。
図25において、上段には、左から、32×32画素、32×16画素、16×32画素、および16×16画素のブロック(パーティション)に分割された32×32画素で構成されるマクロブロックが順に示されている。また、中段には、左から、16×16画素、16×8画素、8×16画素、および8×8画素のブロックに分割された16×16画素で構成されるブロックが順に示されている。さらに、下段には、左から、8×8画素、8×4画素、4×8画素、および4×4画素のブロックに分割された8×8画素のブロックが順に示されている。
すなわち、32×32画素のマクロブロックは、上段に示される32×32画素、32×16画素、16×32画素、および16×16画素のブロックでの処理が可能である。
上段の右側に示される16×16画素のブロックは、H.264/AVC方式と同様に、中段に示される16×16画素、16×8画素、8×16画素、および8×8画素のブロックでの処理が可能である。
中段の右側に示される8×8画素のブロックは、H.264/AVC方式と同様に、下段に示される8×8画素、8×4画素、4×8画素、および4×4画素のブロックでの処理が可能である。
これらのブロックは、以下の3階層に分類することができる。すなわち、図25の上段に示される32×32画素、32×16画素、および16×32画素のブロックを第1階層と称する。上段の右側に示される16×16画素のブロック、並びに、中段に示される16×16画素、16×8画素、および8×16画素のブロックを、第2階層と称する。中段の右側に示される8×8画素のブロック、並びに、下段に示される8×8画素、8×4画素、4×8画素、および4×4画素のブロックを、第3階層と称する。
このような階層構造を採用することにより、16×16画素のブロック以下に関しては、H.264/AVC方式と互換性を保ちながら、そのスーパーセットとして、より大きなブロックを定義することができる。
<4.第4の実施の形態>
[パーソナルコンピュータ]
上述した一連の処理は、ハードウエアにより実行させることもできるし、ソフトウエアにより実行させることもできる。この場合、例えば、図26に示されるようなパーソナルコンピュータとして構成されるようにしてもよい。
図26において、パーソナルコンピュータ600のCPU(Central Processing Unit)601は、ROM(Read Only Memory)602に記憶されているプログラム、または記憶部613からRAM(Random Access Memory)603にロードされたプログラムに従って各種の処理を実行する。RAM603にはまた、CPU601が各種の処理を実行する上において必要なデータなども適宜記憶される。
CPU601、ROM602、およびRAM603は、バス604を介して相互に接続されている。このバス604にはまた、入出力インタフェース610も接続されている。
入出力インタフェース610には、キーボード、マウスなどよりなる入力部611、CRT(Cathode Ray Tube)やLCD(Liquid Crystal Display)などよりなるディスプレイ、並びにスピーカなどよりなる出力部612、ハードディスクなどより構成される記憶部613、モデムなどより構成される通信部614が接続されている。通信部614は、インターネットを含むネットワークを介しての通信処理を行う。
入出力インタフェース610にはまた、必要に応じてドライブ615が接続され、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブルメディア621が適宜装着され、それらから読み出されたコンピュータプログラムが、必要に応じて記憶部613にインストールされる。
上述した一連の処理をソフトウエアにより実行させる場合には、そのソフトウエアを構成するプログラムが、ネットワークや記録媒体からインストールされる。
この記録媒体は、例えば、図26に示されるように、装置本体とは別に、ユーザにプログラムを配信するために配布される、プログラムが記録されている磁気ディスク(フレキシブルディスクを含む)、光ディスク(CD-ROM(Compact Disc - Read Only Memory),DVD(Digital Versatile Disc)を含む)、光磁気ディスク(MD(Mini Disc)を含む)、もしくは半導体メモリなどよりなるリムーバブルメディア621により構成されるだけでなく、装置本体に予め組み込まれた状態でユーザに配信される、プログラムが記録されているROM602や、記憶部613に含まれるハードディスクなどで構成される。
なお、コンピュータが実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われるプログラムであっても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであっても良い。
また、本明細書において、記録媒体に記録されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
また、本明細書において、システムとは、複数のデバイス(装置)により構成される装置全体を表すものである。
また、以上において、1つの装置(または処理部)として説明した構成を分割し、複数の装置(または処理部)として構成するようにしてもよい。逆に、以上において複数の装置(または処理部)として説明した構成をまとめて1つの装置(または処理部)として構成されるようにしてもよい。また、各装置(または各処理部)の構成に上述した以外の構成を付加するようにしてももちろんよい。さらに、システム全体としての構成や動作が実質的に同じであれば、ある装置(または処理部)の構成の一部を他の装置(または他の処理部)の構成に含めるようにしてもよい。つまり、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
例えば、上述した画像符号化装置100や画像復号装置200は、任意の電子機器に適用することができる。以下にその例について説明する。
<5.第5の実施の形態>
[テレビジョン受像機]
図27は、本発明を適用した画像復号装置200を用いるテレビジョン受像機の主な構成例を示すブロック図である。
図27に示されるテレビジョン受像機1000は、地上波チューナ1013、ビデオデコーダ1015、映像信号処理回路1018、グラフィック生成回路1019、パネル駆動回路1020、および表示パネル1021を有する。
地上波チューナ1013は、地上アナログ放送の放送波信号を、アンテナを介して受信し、復調し、映像信号を取得し、それをビデオデコーダ1015に供給する。ビデオデコーダ1015は、地上波チューナ1013から供給された映像信号に対してデコード処理を施し、得られたデジタルのコンポーネント信号を映像信号処理回路1018に供給する。
映像信号処理回路1018は、ビデオデコーダ1015から供給された映像データに対してノイズ除去などの所定の処理を施し、得られた映像データをグラフィック生成回路1019に供給する。
グラフィック生成回路1019は、表示パネル1021に表示させる番組の映像データや、ネットワークを介して供給されるアプリケーションに基づく処理による画像データなどを生成し、生成した映像データや画像データをパネル駆動回路1020に供給する。また、グラフィック生成回路1019は、項目の選択などにユーザにより利用される画面を表示するための映像データ(グラフィック)を生成し、それを番組の映像データに重畳したりすることによって得られた映像データをパネル駆動回路1020に供給するといった処理も適宜行う。
パネル駆動回路1020は、グラフィック生成回路1019から供給されたデータに基づいて表示パネル1021を駆動し、番組の映像や上述した各種の画面を表示パネル1021に表示させる。
表示パネル1021はLCD(Liquid Crystal Display)などよりなり、パネル駆動回路1020による制御に従って番組の映像などを表示させる。
また、テレビジョン受像機1000は、音声A/D(Analog/Digital)変換回路1014、音声信号処理回路1022、エコーキャンセル/音声合成回路1023、音声増幅回路1024、およびスピーカ1025も有する。
地上波チューナ1013は、受信した放送波信号を復調することにより、映像信号だけでなく音声信号も取得する。地上波チューナ1013は、取得した音声信号を音声A/D変換回路1014に供給する。
音声A/D変換回路1014は、地上波チューナ1013から供給された音声信号に対してA/D変換処理を施し、得られたデジタルの音声信号を音声信号処理回路1022に供給する。
音声信号処理回路1022は、音声A/D変換回路1014から供給された音声データに対してノイズ除去などの所定の処理を施し、得られた音声データをエコーキャンセル/音声合成回路1023に供給する。
エコーキャンセル/音声合成回路1023は、音声信号処理回路1022から供給された音声データを音声増幅回路1024に供給する。
音声増幅回路1024は、エコーキャンセル/音声合成回路1023から供給された音声データに対してD/A変換処理、増幅処理を施し、所定の音量に調整した後、音声をスピーカ1025から出力させる。
さらに、テレビジョン受像機1000は、デジタルチューナ1016およびMPEGデコーダ1017も有する。
デジタルチューナ1016は、デジタル放送(地上デジタル放送、BS(Broadcasting Satellite)/CS(Communications Satellite)デジタル放送)の放送波信号を、アンテナを介して受信し、復調し、MPEG-TS(Moving Picture Experts Group-Transport Stream)を取得し、それをMPEGデコーダ1017に供給する。
MPEGデコーダ1017は、デジタルチューナ1016から供給されたMPEG-TSに施されているスクランブルを解除し、再生対象(視聴対象)になっている番組のデータを含むストリームを抽出する。MPEGデコーダ1017は、抽出したストリームを構成する音声パケットをデコードし、得られた音声データを音声信号処理回路1022に供給するとともに、ストリームを構成する映像パケットをデコードし、得られた映像データを映像信号処理回路1018に供給する。また、MPEGデコーダ1017は、MPEG-TSから抽出したEPG(Electronic Program Guide)データを図示せぬ経路を介してCPU1032に供給する。
テレビジョン受像機1000は、このように映像パケットをデコードするMPEGデコーダ1017として、上述した画像復号装置200を用いる。なお、放送局等より送信されるMPEG-TSは、画像符号化装置100によって符号化されている。
MPEGデコーダ1017は、画像復号装置200の場合と同様に、画像符号化装置100より供給される符号化データをエントロピスライス毎に並行して復号し、復号画像データを生成する。そのとき、MPEGデコーダ1017は、画像復号装置200の場合と同様に、復号対象の符号化データに対応する符号化前の画像を、上下に並ぶ複数(偶数個)の領域に分割する。そして、MPEGデコーダ1017は、上から偶数番目の領域に対応する符号化データについては、従来どおり、上のマクロブロックラインから下に向かう順に復号し、周辺マクロブロックとして処理対象マクロブロックの1つ左のマクロブロックと1つ上のマクロブロックを参照する。
これに対して、上から奇数番目の領域に対応する符号化データについては、MPEGデコーダ1017は、従来とは逆に、下のマクロブロックラインから上に向かう順に復号し、周辺マクロブロックとして処理対象マクロブロックの1つ左のマクロブロックと1つ下のマクロブロックを参照する。
さらに、MPEGデコーダ1017は、上から奇数番目の領域の一番下のマクロブロックラインに対応する符号化データの復号が終了した時点で、その1つ下の(上から偶数番目の)領域の符号化データについての復号処理を開始する。
また、このとき、MPEGデコーダ1017は、上から奇数番目の領域の一番下のマクロブロックラインを参照して、その1つ下の(上から偶数番目の)領域の一番上のマクロブロックラインに対応する符号化データについての復号処理を行う。
したがって、MPEGデコーダ1017は、符号化効率の低減を抑制させながら、画像符号化の高速化を実現することができる。
MPEGデコーダ1017から供給された映像データは、ビデオデコーダ1015から供給された映像データの場合と同様に、映像信号処理回路1018において所定の処理が施され、グラフィック生成回路1019において、生成された映像データ等が適宜重畳され、パネル駆動回路1020を介して表示パネル1021に供給され、その画像が表示される。
MPEGデコーダ1017から供給された音声データは、音声A/D変換回路1014から供給された音声データの場合と同様に、音声信号処理回路1022において所定の処理が施され、エコーキャンセル/音声合成回路1023を介して音声増幅回路1024に供給され、D/A変換処理や増幅処理が施される。その結果、所定の音量に調整された音声がスピーカ1025から出力される。
また、テレビジョン受像機1000は、マイクロホン1026、およびA/D変換回路1027も有する。
A/D変換回路1027は、音声会話用のものとしてテレビジョン受像機1000に設けられるマイクロホン1026により取り込まれたユーザの音声の信号を受信し、受信した音声信号に対してA/D変換処理を施し、得られたデジタルの音声データをエコーキャンセル/音声合成回路1023に供給する。
エコーキャンセル/音声合成回路1023は、テレビジョン受像機1000のユーザ(ユーザA)の音声のデータがA/D変換回路1027から供給されている場合、ユーザAの音声データを対象としてエコーキャンセルを行い、他の音声データと合成するなどして得られた音声のデータを、音声増幅回路1024を介してスピーカ1025より出力させる。
さらに、テレビジョン受像機1000は、音声コーデック1028、内部バス1029、SDRAM(Synchronous Dynamic Random Access Memory)1030、フラッシュメモリ1031、CPU1032、USB(Universal Serial Bus) I/F1033、およびネットワークI/F1034も有する。
A/D変換回路1027は、音声会話用のものとしてテレビジョン受像機1000に設けられるマイクロホン1026により取り込まれたユーザの音声の信号を受信し、受信した音声信号に対してA/D変換処理を施し、得られたデジタルの音声データを音声コーデック1028に供給する。
音声コーデック1028は、A/D変換回路1027から供給された音声データを、ネットワーク経由で送信するための所定のフォーマットのデータに変換し、内部バス1029を介してネットワークI/F1034に供給する。
ネットワークI/F1034は、ネットワーク端子1035に装着されたケーブルを介してネットワークに接続される。ネットワークI/F1034は、例えば、そのネットワークに接続される他の装置に対して、音声コーデック1028から供給された音声データを送信する。また、ネットワークI/F1034は、例えば、ネットワークを介して接続される他の装置から送信される音声データを、ネットワーク端子1035を介して受信し、それを、内部バス1029を介して音声コーデック1028に供給する。
音声コーデック1028は、ネットワークI/F1034から供給された音声データを所定のフォーマットのデータに変換し、それをエコーキャンセル/音声合成回路1023に供給する。
エコーキャンセル/音声合成回路1023は、音声コーデック1028から供給される音声データを対象としてエコーキャンセルを行い、他の音声データと合成するなどして得られた音声のデータを、音声増幅回路1024を介してスピーカ1025より出力させる。
SDRAM1030は、CPU1032が処理を行う上で必要な各種のデータを記憶する。
フラッシュメモリ1031は、CPU1032により実行されるプログラムを記憶する。フラッシュメモリ1031に記憶されているプログラムは、テレビジョン受像機1000の起動時などの所定のタイミングでCPU1032により読み出される。フラッシュメモリ1031には、デジタル放送を介して取得されたEPGデータ、ネットワークを介して所定のサーバから取得されたデータなども記憶される。
例えば、フラッシュメモリ1031には、CPU1032の制御によりネットワークを介して所定のサーバから取得されたコンテンツデータを含むMPEG-TSが記憶される。フラッシュメモリ1031は、例えばCPU1032の制御により、そのMPEG-TSを、内部バス1029を介してMPEGデコーダ1017に供給する。
MPEGデコーダ1017は、デジタルチューナ1016から供給されたMPEG-TSの場合と同様に、そのMPEG-TSを処理する。このようにテレビジョン受像機1000は、映像や音声等よりなるコンテンツデータを、ネットワークを介して受信し、MPEGデコーダ1017を用いてデコードし、その映像を表示させたり、音声を出力させたりすることができる。
また、テレビジョン受像機1000は、リモートコントローラ1051から送信される赤外線信号を受光する受光部1037も有する。
受光部1037は、リモートコントローラ1051からの赤外線を受光し、復調して得られたユーザ操作の内容を表す制御コードをCPU1032に出力する。
CPU1032は、フラッシュメモリ1031に記憶されているプログラムを実行し、受光部1037から供給される制御コードなどに応じてテレビジョン受像機1000の全体の動作を制御する。CPU1032とテレビジョン受像機1000の各部は、図示せぬ経路を介して接続されている。
USB I/F1033は、USB端子1036に装着されたUSBケーブルを介して接続される、テレビジョン受像機1000の外部の機器との間でデータの送受信を行う。ネットワークI/F1034は、ネットワーク端子1035に装着されたケーブルを介してネットワークに接続し、ネットワークに接続される各種の装置と音声データ以外のデータの送受信も行う。
テレビジョン受像機1000は、MPEGデコーダ1017として画像復号装置200を用いることにより、符号化効率の低減を抑制させながら高速に符号化された符号化データを正しく復号することができる。その結果として、テレビジョン受像機1000は、アンテナを介して受信する放送波信号や、ネットワークを介して取得するコンテンツデータの復号を高速に行うことができ、リアルタイム処理をより低いコストで実現することができる。
<6.第6の実施の形態>
[携帯電話機]
図28は、本発明を適用した画像符号化装置100および画像復号装置200を用いる携帯電話機の主な構成例を示すブロック図である。
図28に示される携帯電話機1100は、各部を統括的に制御するようになされた主制御部1150、電源回路部1151、操作入力制御部1152、画像エンコーダ1153、カメラI/F部1154、LCD制御部1155、画像デコーダ1156、多重分離部1157、記録再生部1162、変復調回路部1158、および音声コーデック1159を有する。これらは、バス1160を介して互いに接続されている。
また、携帯電話機1100は、操作キー1119、CCD(Charge Coupled Devices)カメラ1116、液晶ディスプレイ1118、記憶部1123、送受信回路部1163、アンテナ1114、マイクロホン(マイク)1121、およびスピーカ1117を有する。
電源回路部1151は、ユーザの操作により終話および電源キーがオン状態にされると、バッテリパックから各部に対して電力を供給することにより携帯電話機1100を動作可能な状態に起動する。
携帯電話機1100は、CPU、ROMおよびRAM等でなる主制御部1150の制御に基づいて、音声通話モードやデータ通信モード等の各種モードで、音声信号の送受信、電子メールや画像データの送受信、画像撮影、またはデータ記録等の各種動作を行う。
例えば、音声通話モードにおいて、携帯電話機1100は、マイクロホン(マイク)1121で集音した音声信号を、音声コーデック1159によってデジタル音声データに変換し、これを変復調回路部1158でスペクトラム拡散処理し、送受信回路部1163でデジタルアナログ変換処理および周波数変換処理する。携帯電話機1100は、その変換処理により得られた送信用信号を、アンテナ1114を介して図示しない基地局へ送信する。基地局へ伝送された送信用信号(音声信号)は、公衆電話回線網を介して通話相手の携帯電話機に供給される。
また、例えば、音声通話モードにおいて、携帯電話機1100は、アンテナ1114で受信した受信信号を送受信回路部1163で増幅し、さらに周波数変換処理およびアナログデジタル変換処理し、変復調回路部1158でスペクトラム逆拡散処理し、音声コーデック1159によってアナログ音声信号に変換する。携帯電話機1100は、その変換して得られたアナログ音声信号をスピーカ1117から出力する。
更に、例えば、データ通信モードにおいて電子メールを送信する場合、携帯電話機1100は、操作キー1119の操作によって入力された電子メールのテキストデータを、操作入力制御部1152において受け付ける。携帯電話機1100は、そのテキストデータを主制御部1150において処理し、LCD制御部1155を介して、画像として液晶ディスプレイ1118に表示させる。
また、携帯電話機1100は、主制御部1150において、操作入力制御部1152が受け付けたテキストデータやユーザ指示等に基づいて電子メールデータを生成する。携帯電話機1100は、その電子メールデータを、変復調回路部1158でスペクトラム拡散処理し、送受信回路部1163でデジタルアナログ変換処理および周波数変換処理する。携帯電話機1100は、その変換処理により得られた送信用信号を、アンテナ1114を介して図示しない基地局へ送信する。基地局へ伝送された送信用信号(電子メール)は、ネットワークおよびメールサーバ等を介して、所定のあて先に供給される。
また、例えば、データ通信モードにおいて電子メールを受信する場合、携帯電話機1100は、基地局から送信された信号を、アンテナ1114を介して送受信回路部1163で受信し、増幅し、さらに周波数変換処理およびアナログデジタル変換処理する。携帯電話機1100は、その受信信号を変復調回路部1158でスペクトラム逆拡散処理して元の電子メールデータを復元する。携帯電話機1100は、復元された電子メールデータを、LCD制御部1155を介して液晶ディスプレイ1118に表示する。
なお、携帯電話機1100は、受信した電子メールデータを、記録再生部1162を介して、記憶部1123に記録する(記憶させる)ことも可能である。
この記憶部1123は、書き換え可能な任意の記憶媒体である。記憶部1123は、例えば、RAMや内蔵型フラッシュメモリ等の半導体メモリであってもよいし、ハードディスクであってもよいし、磁気ディスク、光磁気ディスク、光ディスク、USBメモリ、またはメモリカード等のリムーバブルメディアであってもよい。もちろん、これら以外のものであってもよい。
さらに、例えば、データ通信モードにおいて画像データを送信する場合、携帯電話機1100は、撮像によりCCDカメラ1116で画像データを生成する。CCDカメラ1116は、レンズや絞り等の光学デバイスと光電変換素子としてのCCDを有し、被写体を撮像し、受光した光の強度を電気信号に変換し、被写体の画像の画像データを生成する。CCDカメラ1116は、その画像データを、カメラI/F部1154を介して、画像エンコーダ1153で符号化し、符号化画像データに変換する。
携帯電話機1100は、このような処理を行う画像エンコーダ1153として、上述した画像符号化装置100を用いる。画像エンコーダ1153は、画像符号化装置100の場合と同様に、符号化対象の画像を、上下に並ぶ複数(偶数個)の領域に分割する。そして、画像エンコーダ1153は、上から偶数番目の領域については、従来どおり、上のマクロブロックラインから下に向かう順に符号化を行い、周辺マクロブロックとして処理対象マクロブロックの1つ左のマクロブロックと1つ上のマクロブロックを参照する。
これに対して、上から奇数番目の領域については、画像エンコーダ1153は、従来とは逆に、下のマクロブロックラインから上に向かう順に符号化を行い、周辺マクロブロックとして処理対象マクロブロックの1つ左のマクロブロックと1つ下のマクロブロックを参照する。
さらに、画像エンコーダ1153は、上から奇数番目の領域の一番下のマクロブロックラインの符号化が終了した時点で、その1つ下の(上から偶数番目の)領域についての符号化処理を開始する。
また、このとき、画像エンコーダ1153は、上から奇数番目の領域の一番下のマクロブロックラインを参照して、その1つ下の(上から偶数番目の)領域の一番上のマクロブロックラインについての符号化処理を行う。
このような符号化を行うことにより、画像エンコーダ1153は、符号化効率の低減を抑制させながら、画像符号化の高速化を実現することができる。
なお、携帯電話機1100は、このとき同時に、CCDカメラ1116で撮像中にマイクロホン(マイク)1121で集音した音声を、音声コーデック1159においてアナログデジタル変換し、さらに符号化する。
携帯電話機1100は、多重分離部1157において、画像エンコーダ1153から供給された符号化画像データと、音声コーデック1159から供給されたデジタル音声データとを、所定の方式で多重化する。携帯電話機1100は、その結果得られる多重化データを、変復調回路部1158でスペクトラム拡散処理し、送受信回路部1163でデジタルアナログ変換処理および周波数変換処理する。携帯電話機1100は、その変換処理により得られた送信用信号を、アンテナ1114を介して図示しない基地局へ送信する。基地局へ伝送された送信用信号(画像データ)は、ネットワーク等を介して、通信相手に供給される。
なお、画像データを送信しない場合、携帯電話機1100は、CCDカメラ1116で生成した画像データを、画像エンコーダ1153を介さずに、LCD制御部1155を介して液晶ディスプレイ1118に表示させることもできる。
また、例えば、データ通信モードにおいて、簡易ホームページ等にリンクされた動画像ファイルのデータを受信する場合、携帯電話機1100は、基地局から送信された信号を、アンテナ1114を介して送受信回路部1163で受信し、増幅し、さらに周波数変換処理およびアナログデジタル変換処理する。携帯電話機1100は、その受信信号を変復調回路部1158でスペクトラム逆拡散処理して元の多重化データを復元する。携帯電話機1100は、多重分離部1157において、その多重化データを分離して、符号化画像データと音声データとに分ける。
携帯電話機1100は、画像デコーダ1156において符号化画像データをデコードすることにより、再生動画像データを生成し、これを、LCD制御部1155を介して液晶ディスプレイ1118に表示させる。これにより、例えば、簡易ホームページにリンクされた動画像ファイルに含まれる動画データが液晶ディスプレイ1118に表示される。
携帯電話機1100は、このような処理を行う画像デコーダ1156として、上述した画像復号装置200を用いる。つまり、画像デコーダ1156は、画像復号装置200の場合と同様に、画像符号化装置100より供給される符号化データをエントロピスライス毎に並行して復号し、復号画像データを生成する。そのとき、画像デコーダ1156は、画像復号装置200の場合と同様に、復号対象の符号化データに対応する符号化前の画像を、上下に並ぶ複数(偶数個)の領域に分割する。そして、画像デコーダ1156は、上から偶数番目の領域に対応する符号化データについては、従来どおり、上のマクロブロックラインから下に向かう順に復号し、周辺マクロブロックとして処理対象マクロブロックの1つ左のマクロブロックと1つ上のマクロブロックを参照する。
これに対して、上から奇数番目の領域に対応する符号化データについては、画像デコーダ1156は、従来とは逆に、下のマクロブロックラインから上に向かう順に復号し、周辺マクロブロックとして処理対象マクロブロックの1つ左のマクロブロックと1つ下のマクロブロックを参照する。
さらに、画像デコーダ1156は、上から奇数番目の領域の一番下のマクロブロックラインに対応する符号化データの復号が終了した時点で、その1つ下の(上から偶数番目の)領域の符号化データについての復号処理を開始する。
また、このとき、画像デコーダ1156は、上から奇数番目の領域の一番下のマクロブロックラインを参照して、その1つ下の(上から偶数番目の)領域の一番上のマクロブロックラインに対応する符号化データについての復号処理を行う。
したがって、画像デコーダ1156は、符号化効率の低減を抑制させながら、画像符号化の高速化を実現することができる。
このとき、携帯電話機1100は、同時に、音声コーデック1159において、デジタルの音声データをアナログ音声信号に変換し、これをスピーカ1117より出力させる。これにより、例えば、簡易ホームページにリンクされた動画像ファイルに含まれる音声データが再生される。
なお、電子メールの場合と同様に、携帯電話機1100は、受信した簡易ホームページ等にリンクされたデータを、記録再生部1162を介して、記憶部1123に記録する(記憶させる)ことも可能である。
また、携帯電話機1100は、主制御部1150において、撮像されてCCDカメラ1116で得られた2次元コードを解析し、2次元コードに記録された情報を取得することができる。
さらに、携帯電話機1100は、赤外線通信部1181で赤外線により外部の機器と通信することができる。
携帯電話機1100は、画像エンコーダ1153として画像符号化装置100を用いることにより、例えばCCDカメラ1116において生成された画像データを符号化して伝送する際の、画像符号化の高速化による符号化効率の低減を抑制させることができる。その結果として、携帯電話機1100は、リアルタイム処理をより低いコストで実現することができる。
また、携帯電話機1100は、画像デコーダ1156として画像復号装置200を用いることにより、例えば、簡易ホームページ等にリンクされた動画像ファイルのデータ(符号化効率の低減を抑制させながら高速に符号化された符号化データ)を正しく復号させることができ、リアルタイム処理をより低いコストで実現することができる。
なお、以上において、携帯電話機1100が、CCDカメラ1116を用いるように説明したが、このCCDカメラ1116の代わりに、CMOS(Complementary Metal Oxide Semiconductor)を用いたイメージセンサ(CMOSイメージセンサ)を用いるようにしてもよい。この場合も、携帯電話機1100は、CCDカメラ1116を用いる場合と同様に、被写体を撮像し、被写体の画像の画像データを生成することができる。
また、以上においては携帯電話機1100として説明したが、例えば、PDA(Personal Digital Assistants)、スマートフォン、UMPC(Ultra Mobile Personal Computer)、ネットブック、ノート型パーソナルコンピュータ等、この携帯電話機1100と同様の撮像機能や通信機能を有する装置であれば、どのような装置であっても携帯電話機1100の場合と同様に、画像符号化装置100および画像復号装置200を適用することができる。
<7.第7の実施の形態>
[ハードディスクレコーダ]
図29は、本発明を適用した画像符号化装置100および画像復号装置200を用いるハードディスクレコーダの主な構成例を示すブロック図である。
図29に示されるハードディスクレコーダ(HDDレコーダ)1200は、チューナにより受信された、衛星や地上のアンテナ等より送信される放送波信号(テレビジョン信号)に含まれる放送番組のオーディオデータとビデオデータを、内蔵するハードディスクに保存し、その保存したデータをユーザの指示に応じたタイミングでユーザに提供する装置である。
ハードディスクレコーダ1200は、例えば、放送波信号よりオーディオデータとビデオデータを抽出し、それらを適宜復号し、内蔵するハードディスクに記憶させることができる。また、ハードディスクレコーダ1200は、例えば、ネットワークを介して他の装置からオーディオデータやビデオデータを取得し、それらを適宜復号し、内蔵するハードディスクに記憶させることもできる。
さらに、ハードディスクレコーダ1200は、例えば、内蔵するハードディスクに記録されているオーディオデータやビデオデータを復号してモニタ1260に供給し、モニタ1260の画面にその画像を表示させ、モニタ1260のスピーカよりその音声を出力させることができる。また、ハードディスクレコーダ1200は、例えば、チューナを介して取得された放送波信号より抽出されたオーディオデータとビデオデータ、または、ネットワークを介して他の装置から取得したオーディオデータやビデオデータを復号してモニタ1260に供給し、モニタ1260の画面にその画像を表示させ、モニタ1260のスピーカよりその音声を出力させることもできる。
もちろん、この他の動作も可能である。
図29に示されるように、ハードディスクレコーダ1200は、受信部1221、復調部1222、デマルチプレクサ1223、オーディオデコーダ1224、ビデオデコーダ1225、およびレコーダ制御部1226を有する。ハードディスクレコーダ1200は、さらに、EPGデータメモリ1227、プログラムメモリ1228、ワークメモリ1229、ディスプレイコンバータ1230、OSD(On Screen Display)制御部1231、ディスプレイ制御部1232、記録再生部1233、D/Aコンバータ1234、および通信部1235を有する。
また、ディスプレイコンバータ1230は、ビデオエンコーダ1241を有する。記録再生部1233は、エンコーダ1251およびデコーダ1252を有する。
受信部1221は、リモートコントローラ(図示せず)からの赤外線信号を受信し、電気信号に変換してレコーダ制御部1226に出力する。レコーダ制御部1226は、例えば、マイクロプロセッサなどにより構成され、プログラムメモリ1228に記憶されているプログラムに従って、各種の処理を実行する。レコーダ制御部1226は、このとき、ワークメモリ1229を必要に応じて使用する。
通信部1235は、ネットワークに接続され、ネットワークを介して他の装置との通信処理を行う。例えば、通信部1235は、レコーダ制御部1226により制御され、チューナ(図示せず)と通信し、主にチューナに対して選局制御信号を出力する。
復調部1222は、チューナより供給された信号を、復調し、デマルチプレクサ1223に出力する。デマルチプレクサ1223は、復調部1222より供給されたデータを、オーディオデータ、ビデオデータ、およびEPGデータに分離し、それぞれ、オーディオデコーダ1224、ビデオデコーダ1225、またはレコーダ制御部1226に出力する。
オーディオデコーダ1224は、入力されたオーディオデータをデコードし、記録再生部1233に出力する。ビデオデコーダ1225は、入力されたビデオデータをデコードし、ディスプレイコンバータ1230に出力する。レコーダ制御部1226は、入力されたEPGデータをEPGデータメモリ1227に供給し、記憶させる。
ディスプレイコンバータ1230は、ビデオデコーダ1225またはレコーダ制御部1226より供給されたビデオデータを、ビデオエンコーダ1241により、例えばNTSC(National Television Standards Committee)方式のビデオデータにエンコードし、記録再生部1233に出力する。また、ディスプレイコンバータ1230は、ビデオデコーダ1225またはレコーダ制御部1226より供給されるビデオデータの画面のサイズを、モニタ1260のサイズに対応するサイズに変換し、ビデオエンコーダ1241によってNTSC方式のビデオデータに変換し、アナログ信号に変換し、ディスプレイ制御部1232に出力する。
ディスプレイ制御部1232は、レコーダ制御部1226の制御のもと、OSD(On Screen Display)制御部1231が出力したOSD信号を、ディスプレイコンバータ1230より入力されたビデオ信号に重畳し、モニタ1260のディスプレイに出力し、表示させる。
モニタ1260にはまた、オーディオデコーダ1224が出力したオーディオデータが、D/Aコンバータ1234によりアナログ信号に変換されて供給されている。モニタ1260は、このオーディオ信号を内蔵するスピーカから出力する。
記録再生部1233は、ビデオデータやオーディオデータ等を記録する記憶媒体としてハードディスクを有する。
記録再生部1233は、例えば、オーディオデコーダ1224より供給されるオーディオデータを、エンコーダ1251によりエンコードする。また、記録再生部1233は、ディスプレイコンバータ1230のビデオエンコーダ1241より供給されるビデオデータを、エンコーダ1251によりエンコードする。記録再生部1233は、そのオーディオデータの符号化データとビデオデータの符号化データとをマルチプレクサにより合成する。記録再生部1233は、その合成データをチャネルコーディングして増幅し、そのデータを、記録ヘッドを介してハードディスクに書き込む。
記録再生部1233は、再生ヘッドを介してハードディスクに記録されているデータを再生し、増幅し、デマルチプレクサによりオーディオデータとビデオデータに分離する。記録再生部1233は、デコーダ1252によりオーディオデータおよびビデオデータをデコードする。記録再生部1233は、復号したオーディオデータをD/A変換し、モニタ1260のスピーカに出力する。また、記録再生部1233は、復号したビデオデータをD/A変換し、モニタ1260のディスプレイに出力する。
レコーダ制御部1226は、受信部1221を介して受信されるリモートコントローラからの赤外線信号により示されるユーザ指示に基づいて、EPGデータメモリ1227から最新のEPGデータを読み出し、それをOSD制御部1231に供給する。OSD制御部1231は、入力されたEPGデータに対応する画像データを発生し、ディスプレイ制御部1232に出力する。ディスプレイ制御部1232は、OSD制御部1231より入力されたビデオデータをモニタ1260のディスプレイに出力し、表示させる。これにより、モニタ1260のディスプレイには、EPG(電子番組ガイド)が表示される。
また、ハードディスクレコーダ1200は、インターネット等のネットワークを介して他の装置から供給されるビデオデータ、オーディオデータ、またはEPGデータ等の各種データを取得することができる。
通信部1235は、レコーダ制御部1226に制御され、ネットワークを介して他の装置から送信されるビデオデータ、オーディオデータ、およびEPGデータ等の符号化データを取得し、それをレコーダ制御部1226に供給する。レコーダ制御部1226は、例えば、取得したビデオデータやオーディオデータの符号化データを記録再生部1233に供給し、ハードディスクに記憶させる。このとき、レコーダ制御部1226および記録再生部1233が、必要に応じて再エンコード等の処理を行うようにしてもよい。
また、レコーダ制御部1226は、取得したビデオデータやオーディオデータの符号化データを復号し、得られるビデオデータをディスプレイコンバータ1230に供給する。ディスプレイコンバータ1230は、ビデオデコーダ1225から供給されるビデオデータと同様に、レコーダ制御部1226から供給されるビデオデータを処理し、ディスプレイ制御部1232を介してモニタ1260に供給し、その画像を表示させる。
また、この画像表示に合わせて、レコーダ制御部1226が、復号したオーディオデータを、D/Aコンバータ1234を介してモニタ1260に供給し、その音声をスピーカから出力させるようにしてもよい。
さらに、レコーダ制御部1226は、取得したEPGデータの符号化データを復号し、復号したEPGデータをEPGデータメモリ1227に供給する。
以上のようなハードディスクレコーダ1200は、ビデオデコーダ1225、デコーダ1252、およびレコーダ制御部1226に内蔵されるデコーダとして画像復号装置200を用いる。つまり、ビデオデコーダ1225、デコーダ1252、およびレコーダ制御部1226に内蔵されるデコーダは、画像復号装置200の場合と同様に、画像符号化装置100より供給される符号化データをエントロピスライス毎に並行して復号し、復号画像データを生成する。そのとき、ビデオデコーダ1225、デコーダ1252、およびレコーダ制御部1226に内蔵されるデコーダは、画像復号装置200の場合と同様に、復号対象の符号化データに対応する符号化前の画像を、上下に並ぶ複数(偶数個)の領域に分割する。そして、ビデオデコーダ1225、デコーダ1252、およびレコーダ制御部1226に内蔵されるデコーダは、上から偶数番目の領域に対応する符号化データについては、従来どおり、上のマクロブロックラインから下に向かう順に復号し、周辺マクロブロックとして処理対象マクロブロックの1つ左のマクロブロックと1つ上のマクロブロックを参照する。
これに対して、上から奇数番目の領域に対応する符号化データについては、ビデオデコーダ1225、デコーダ1252、およびレコーダ制御部1226に内蔵されるデコーダは、従来とは逆に、下のマクロブロックラインから上に向かう順に復号し、周辺マクロブロックとして処理対象マクロブロックの1つ左のマクロブロックと1つ下のマクロブロックを参照する。
さらに、ビデオデコーダ1225、デコーダ1252、およびレコーダ制御部1226に内蔵されるデコーダは、上から奇数番目の領域の一番下のマクロブロックラインに対応する符号化データの復号が終了した時点で、その1つ下の(上から偶数番目の)領域の符号化データについての復号処理を開始する。
また、このとき、ビデオデコーダ1225、デコーダ1252、およびレコーダ制御部1226に内蔵されるデコーダは、上から奇数番目の領域の一番下のマクロブロックラインを参照して、その1つ下の(上から偶数番目の)領域の一番上のマクロブロックラインに対応する符号化データについての復号処理を行う。
したがって、ビデオデコーダ1225、デコーダ1252、およびレコーダ制御部1226に内蔵されるデコーダは、符号化効率の低減を抑制させながら、画像符号化の高速化を実現することができる。
したがって、ハードディスクレコーダ1200は、例えば、チューナや通信部1235が受信するビデオデータ(符号化効率の低減を抑制させながら高速に符号化された符号化データ)や、記録再生部1233が再生するビデオデータ(符号化効率の低減を抑制させながら高速に符号化された符号化データ)を正しく復号させることができ、リアルタイム処理をより低いコストで実現することができる。
また、ハードディスクレコーダ1200は、エンコーダ1251として画像符号化装置100を用いる。したがって、エンコーダ1251は、画像符号化装置100の場合と同様に、符号化対象の画像を、上下に並ぶ複数(偶数個)の領域に分割する。そして、エンコーダ1251は、上から偶数番目の領域については、従来どおり、上のマクロブロックラインから下に向かう順に符号化を行い、周辺マクロブロックとして処理対象マクロブロックの1つ左のマクロブロックと1つ上のマクロブロックを参照する。
これに対して、上から奇数番目の領域については、エンコーダ1251は、従来とは逆に、下のマクロブロックラインから上に向かう順に符号化を行い、周辺マクロブロックとして処理対象マクロブロックの1つ左のマクロブロックと1つ下のマクロブロックを参照する。
さらに、エンコーダ1251は、上から奇数番目の領域の一番下のマクロブロックラインの符号化が終了した時点で、その1つ下の(上から偶数番目の)領域についての符号化処理を開始する。
また、このとき、エンコーダ1251は、上から奇数番目の領域の一番下のマクロブロックラインを参照して、その1つ下の(上から偶数番目の)領域の一番上のマクロブロックラインについての符号化処理を行う。
このような符号化を行うことにより、エンコーダ1251は、符号化効率の低減を抑制させながら、画像符号化の高速化を実現することができる。
したがって、ハードディスクレコーダ1200は、例えば、ハードディスクに記録する符号化データを生成する際の、画像符号化の高速化による符号化効率の低減を抑制させることができる。その結果として、携帯電話機1100は、リアルタイム処理をより低いコストで実現することができる。
なお、以上においては、ビデオデータやオーディオデータをハードディスクに記録するハードディスクレコーダ1200について説明したが、もちろん、記録媒体はどのようなものであってもよい。例えばフラッシュメモリ、光ディスク、またはビデオテープ等、ハードディスク以外の記録媒体を適用するレコーダであっても、上述したハードディスクレコーダ1200の場合と同様に、画像符号化装置100および画像復号装置200を適用することができる。
<8.第8の実施の形態>
[カメラ]
図30は、本発明を適用した画像符号化装置100および画像復号装置200を用いるカメラの主な構成例を示すブロック図である。
図30に示されるカメラ1300は、被写体を撮像し、被写体の画像をLCD1316に表示させたり、それを画像データとして、記録メディア1333に記録したりする。
レンズブロック1311は、光(すなわち、被写体の映像)を、CCD/CMOS1312に入射させる。CCD/CMOS1312は、CCDまたはCMOSを用いたイメージセンサであり、受光した光の強度を電気信号に変換し、カメラ信号処理部1313に供給する。
カメラ信号処理部1313は、CCD/CMOS1312から供給された電気信号を、Y,Cr,Cbの色差信号に変換し、画像信号処理部1314に供給する。画像信号処理部1314は、コントローラ1321の制御の下、カメラ信号処理部1313から供給された画像信号に対して所定の画像処理を施したり、その画像信号をエンコーダ1341で符号化したりする。画像信号処理部1314は、画像信号を符号化して生成した符号化データを、デコーダ1315に供給する。さらに、画像信号処理部1314は、オンスクリーンディスプレイ(OSD)1320において生成された表示用データを取得し、それをデコーダ1315に供給する。
以上の処理において、カメラ信号処理部1313は、バス1317を介して接続されるDRAM(Dynamic Random Access Memory)1318を適宜利用し、必要に応じて画像データや、その画像データが符号化された符号化データ等をそのDRAM1318に保持させる。
デコーダ1315は、画像信号処理部1314から供給された符号化データを復号し、得られた画像データ(復号画像データ)をLCD1316に供給する。また、デコーダ1315は、画像信号処理部1314から供給された表示用データをLCD1316に供給する。LCD1316は、デコーダ1315から供給された復号画像データの画像と表示用データの画像を適宜合成し、その合成画像を表示する。
オンスクリーンディスプレイ1320は、コントローラ1321の制御の下、記号、文字、または図形からなるメニュー画面やアイコンなどの表示用データを、バス1317を介して画像信号処理部1314に出力する。
コントローラ1321は、ユーザが操作部1322を用いて指令した内容を示す信号に基づいて、各種処理を実行するとともに、バス1317を介して、画像信号処理部1314、DRAM1318、外部インタフェース1319、オンスクリーンディスプレイ1320、およびメディアドライブ1323等を制御する。FLASH ROM1324には、コントローラ1321が各種処理を実行する上で必要なプログラムやデータ等が格納される。
例えば、コントローラ1321は、画像信号処理部1314やデコーダ1315に代わって、DRAM1318に記憶されている画像データを符号化したり、DRAM1318に記憶されている符号化データを復号したりすることができる。このとき、コントローラ1321は、画像信号処理部1314やデコーダ1315の符号化・復号方式と同様の方式によって符号化・復号処理を行うようにしてもよいし、画像信号処理部1314やデコーダ1315が対応していない方式により符号化・復号処理を行うようにしてもよい。
また、例えば、操作部1322から画像印刷の開始が指示された場合、コントローラ1321は、DRAM1318から画像データを読み出し、それを、バス1317を介して外部インタフェース1319に接続されるプリンタ1334に供給して印刷させる。
さらに、例えば、操作部1322から画像記録が指示された場合、コントローラ1321は、DRAM1318から符号化データを読み出し、それを、バス1317を介してメディアドライブ1323に装着される記録メディア1333に供給して記憶させる。
記録メディア1333は、例えば、磁気ディスク、光磁気ディスク、光ディスク、または半導体メモリ等の、読み書き可能な任意のリムーバブルメディアである。記録メディア1333は、もちろん、リムーバブルメディアとしての種類も任意であり、テープデバイスであってもよいし、ディスクであってもよいし、メモリカードであってもよい。もちろん、非接触ICカード等であっても良い。
また、メディアドライブ1323と記録メディア1333を一体化し、例えば、内蔵型ハードディスクドライブやSSD(Solid State Drive)等のように、非可搬性の記憶媒体により構成されるようにしてもよい。
外部インタフェース1319は、例えば、USB入出力端子などで構成され、画像の印刷を行う場合に、プリンタ1334と接続される。また、外部インタフェース1319には、必要に応じてドライブ1331が接続され、磁気ディスク、光ディスク、あるいは光磁気ディスクなどのリムーバブルメディア1332が適宜装着され、それらから読み出されたコンピュータプログラムが、必要に応じて、FLASH ROM1324にインストールされる。
さらに、外部インタフェース1319は、LANやインターネット等の所定のネットワークに接続されるネットワークインタフェースを有する。コントローラ1321は、例えば、操作部1322からの指示に従って、DRAM1318から符号化データを読み出し、それを外部インタフェース1319から、ネットワークを介して接続される他の装置に供給させることができる。また、コントローラ1321は、ネットワークを介して他の装置から供給される符号化データや画像データを、外部インタフェース1319を介して取得し、それをDRAM1318に保持させたり、画像信号処理部1314に供給したりすることができる。
以上のようなカメラ1300は、デコーダ1315として画像復号装置200を用いる。つまり、デコーダ1315は、画像復号装置200の場合と同様に、画像符号化装置100より供給される符号化データをエントロピスライス毎に並行して復号し、復号画像データを生成する。そのとき、デコーダ1315は、画像復号装置200の場合と同様に、復号対象の符号化データに対応する符号化前の画像を、上下に並ぶ複数(偶数個)の領域に分割する。そして、デコーダ1315は、上から偶数番目の領域に対応する符号化データについては、従来どおり、上のマクロブロックラインから下に向かう順に復号し、周辺マクロブロックとして処理対象マクロブロックの1つ左のマクロブロックと1つ上のマクロブロックを参照する。
これに対して、上から奇数番目の領域に対応する符号化データについては、デコーダ1315は、従来とは逆に、下のマクロブロックラインから上に向かう順に復号し、周辺マクロブロックとして処理対象マクロブロックの1つ左のマクロブロックと1つ下のマクロブロックを参照する。
さらに、デコーダ1315は、上から奇数番目の領域の一番下のマクロブロックラインに対応する符号化データの復号が終了した時点で、その1つ下の(上から偶数番目の)領域の符号化データについての復号処理を開始する。
また、このとき、デコーダ1315は、は、上から奇数番目の領域の一番下のマクロブロックラインを参照して、その1つ下の(上から偶数番目の)領域の一番上のマクロブロックラインに対応する符号化データについての復号処理を行う。
したがって、デコーダ1315は、符号化効率の低減を抑制させながら、画像符号化の高速化を実現することができる。
したがって、カメラ1300は、例えば、CCD/CMOS1312において生成される画像データや、DRAM1318または記録メディア1333から読み出すビデオデータの符号化データや、ネットワークを介して取得するビデオデータの符号化データの符号化効率をより向上させることができ、リアルタイム処理をより低いコストで実現することができる。
また、カメラ1300は、エンコーダ1341として画像符号化装置100を用いる。エンコーダ1341は、画像符号化装置100の場合と同様に、符号化対象の画像を、上下に並ぶ複数(偶数個)の領域に分割する。そして、エンコーダ1341は、上から偶数番目の領域については、従来どおり、上のマクロブロックラインから下に向かう順に符号化を行い、周辺マクロブロックとして処理対象マクロブロックの1つ左のマクロブロックと1つ上のマクロブロックを参照する。
これに対して、上から奇数番目の領域については、エンコーダ1341は、従来とは逆に、下のマクロブロックラインから上に向かう順に符号化を行い、周辺マクロブロックとして処理対象マクロブロックの1つ左のマクロブロックと1つ下のマクロブロックを参照する。
さらに、エンコーダ1341は、上から奇数番目の領域の一番下のマクロブロックラインの符号化が終了した時点で、その1つ下の(上から偶数番目の)領域についての符号化処理を開始する。
また、このとき、エンコーダ1341は、上から奇数番目の領域の一番下のマクロブロックラインを参照して、その1つ下の(上から偶数番目の)領域の一番上のマクロブロックラインについての符号化処理を行う。
このような符号化を行うことにより、エンコーダ1341は、符号化効率の低減を抑制させながら、画像符号化の高速化を実現することができる。
したがって、カメラ1300は、エンコーダ1341として画像符号化装置100を用いることにより、例えば、DRAM1318や記録メディア1333に記録する符号化データや、他の装置に提供する符号化データの画像符号化の高速化による符号化効率の低減を抑制させることができる。その結果として、カメラ1300は、リアルタイム処理をより低いコストで実現することができる。
なお、コントローラ1321が行う復号処理に画像復号装置200の復号方法を適用するようにしてもよい。同様に、コントローラ1321が行う符号化処理に画像符号化装置100の符号化方法を適用するようにしてもよい。
また、カメラ1300が撮像する画像データは動画像であってもよいし、静止画像であってもよい。
もちろん、画像符号化装置100および画像復号装置200は、上述した装置以外の装置やシステムにも適用可能である。