以下、本発明の実施の形態について図面を参照して説明する。以下の説明では、基底関数の組による空間領域からの変換を関数変換と呼び、空間領域に対して関数変換された領域を関数変換領域と呼ぶ。また、関数変換領域から空間領域への基底関数の組による変換を関数逆変換と呼ぶ。また、関数変換処理により得られる係数を関数変換係数と呼び、関数変換係数の値を関数変換係数値と呼ぶ。
[実施の形態1]
図1は、実施の形態1における画像符号化システム100の概略構成を示すブロック図である。画像符号化システム100は、領域量子化情報入力装置101、画像入力装置102、量子化テーブル入力装置103、画像符号化装置104および画像符号化データ出力装置105を含む。
画像入力装置102は、後述する画像符号化装置104の入力画像データバッファ109と接続されている。画像入力装置102は、入力画像データバッファ109に原画像の画像データを出力する。画像入力装置102は、たとえば、デジタルカメラ、スキャナ、デジタルビデオカメラ等である。
量子化テーブル入力装置103は、後述する画像符号化装置104の符号化時量子化テーブルデータバッファ群107および復号化時量子化テーブルデータバッファ108と接続されている。量子化テーブル入力装置103は、符号化時量子化テーブルデータバッファ群107にN種類(Nは任意の自然数)の符号化時量子化テーブルのデータを出力する。また、量子化テーブル入力装置103は、復号化時量子化テーブルデータバッファ108に1種類の復号化時量子化テーブルのデータを出力する。符号化時量子化テーブルおよび復号化時量子化テーブルについては後述する。
領域量子化情報入力装置101は、後述する画像符号化装置104の符号化時領域量子化情報データバッファ106と接続されている。領域量子化情報入力装置101は、符号化時領域量子化情報データバッファ106に符号化時領域量子化情報のデータを出力する。符号化時領域量子化情報データについては後述する。
画像符号化装置104は、符号化時領域量子化情報データバッファ106、符号化時量子化テーブルデータバッファ群107、復号化時量子化テーブルデータバッファ108、入力画像データバッファ109、関数変換処理部110、関数変換係数データバッファ111、量子化処理部112、量子化関数変換係数データバッファ113、画像符号化データ作成処理部114および画像符号化データバッファ115を含む。
入力画像データバッファ109は、画像入力装置102が出力した原画像の画像データを格納する。符号化時量子化テーブルデータバッファ群107は、量子化テーブル入力装置103が出力したN種類の符号化時量子化テーブルのデータを格納する。復号化時量子化テーブルデータバッファ108は、量子化テーブル入力装置103が出力した1種類の復号化時量子化テーブルのデータを格納する。符号化時領域量子化情報データバッファ106は、領域量子化情報入力装置101が出力した符号化時領域量子化情報のデータを格納する。
関数変換処理部110は、入力画像データバッファ109と接続されている。関数変換処理部110は、入力画像データバッファ109から画像データを読み出し、読み出した画像データを関数変換する処理を行なう。また、関数変換処理部110は、関数変換係数データバッファ111と接続されている。関数変換処理部110は、関数変換係数データバッファ111に画像データを関数変換して得た関数変換係数データを格納する。
なお、関数変換処理部110で行なわれる画像データの関数変換は、たとえば、離散コサイン変換(DCT(Discrete Cosine Transform))、離散フーリエ変換(DFT(Discrete Fourier Transform))、直交ウェーブレット変換等に代表される直交変換や、非直交ウェーブレット変換等に代表される非直交変換等である。
量子化処理部112は、関数変換係数データバッファ111、符号化時領域量子化情報データバッファ106および符号化時量子化テーブルデータバッファ群107と接続されている。量子化処理部112は、関数変換係数データバッファ111から関数変換係数データを読み出し、符号化時領域量子化情報データバッファ106から符号化時領域量子化情報のデータを読み出し、符号化時量子化テーブルデータバッファ群107からN種類の符号化時量子化テーブルのデータを読み出す。
N種類の符号化時量子化テーブルのデータには、それぞれの符号化時量子化テーブルを識別するための識別番号(たとえば、「1」〜「N」番)のデータが含まれている。また、符号化時領域量子化情報データバッファ106から読み出された符号化時領域量子化情報のデータには、N種類の符号化時量子化テーブルのうちから1種類の符号化時量子化テーブルを選択するために、たとえば、符号化時量子化テーブルの識別番号のデータが規定されている。
量子化処理部112は、符号化時領域量子化情報のデータに規定されている符号化時量子化テーブルの識別番号のデータに基づいてN種類の符号化時量子化テーブルのうちから1種類の符号化時量子化テーブルを選択し、選択した符号化時量子化テーブルを用いて関数変換係数データを量子化する処理を行なう。また、量子化処理部112は、量子化関数変換係数データバッファ113と接続されている。量子化処理部112は、量子化関数変換係数データバッファ113に関数変換係数データを量子化して得た量子化関数変換係数データを格納する。
画像符号化データ作成処理部114は、量子化関数変換係数データバッファ113および復号化時量子化テーブルデータバッファ108と接続されている。画像符号化データ作成処理部114は、量子化関数変換係数データバッファ113から量子化関数変換係数データを読み出し、復号化時量子化テーブルデータバッファ108から1種類の復号化時量子化テーブルのデータを読み出す。
画像符号化データ作成処理部114は、量子化関数変換係数データを符号化する処理を行なうとともに、符号化して得たデータに対して1種類の復号化時量子化テーブルのデータを付加した所定のフォーマットの画像符号化データを作成する処理を行なう。また、画像符号化データ作成処理部114は、画像符号化データバッファ115と接続されている。画像符号化データ作成処理部114は、画像符号化データバッファ115に作成した画像符号化データを格納する。
なお、画像符号化データ作成処理部114で行なわれる量子化関数変換計数データの符号化は、可逆符号化方式であればハフマン符号化等、いかなる方式の可逆符号化処理であってもかまわない。また、画像符号化データ作成処理部114において、復号化時量子化テーブルデータの可逆符号化処理を併せて行なうようにしてもよい。
画像符号化データ出力装置105は、画像符号化データバッファ115と接続されている。画像符号化データ出力装置105は、画像符号化データバッファ115に格納されている画像符号化データを読み出し、出力する。
なお、図1には図示していないが、画像符号化データ出力装置105から出力された画像符号化データは、画像復号化装置によって画像を復元する処理が行なわれる。画像復号化装置は、画像符号化データを復号化し、復号化して得た量子化関数変換係数データを画像符号化データに含ませていた復号化時量子化テーブルを用いて逆量子化し、逆量子化して得た関数変換係数データを関数逆変換し、画像を復元する。
なお、量子化関数変換係数データを符号化して得られるデータに付加する1種類の復号化時量子化テーブルは、関数変換係数データを量子化するときに用いるN種類の符合化時量子化テーブルのうちのいずれかと同一であってもよいが、ここでは量子化関数変換係数データを符号化して得られるデータに付加する1種類の復号化時量子化テーブルは、関数変換係数データを量子化するときに用いるN種類の符号化時量子化テーブルのうちのいずれとも同一でないものとする。
符号化時領域量子化情報データバッファ106、符号化時量子化テーブルデータバッファ群107、復号化時量子化テーブルデータバッファ108、入力画像データバッファ109、関数変換係数データバッファ111、量子化関数変換係数データバッファ113および画像符号化データバッファ115は、フラッシュメモリ、ハードディスク等のRAM(Random Access Memory)等の記憶装置により実現される。
関数変換処理部110、量子化処理部112、画像符号化データ作成処理部114は、たとえば、それぞれ独立した回路によって実現される。また、たとえばコンピュータ等の演算処理回路によって実現される仮想回路としてもよい。
関数変換処理部110は、画像データ全部を一度に関数変換することも可能であるが、非常に多くの演算処理が必要となり、処理速度を上げるためには演算量を減らす必要がある。そのため、関数変換処理部110は、原画像を縦横それぞれ8画素(8画素×8画素)の領域(ブロック)に分割し、分割した領域毎に画像データを関数変換する。なお、1つの領域の画素数として8画素×8画素の例を示したがこれに限られず、8画素×8画素以外の大きさのものでもよい。
図2は、横Xsize、縦Ysizeの原画像200を示す図である。原画像200は、複数の領域(たとえば、領域201〜204、領域211〜214および領域221〜224)から構成されている。各領域は領域201に示すように8画素×8画素で形成されている。従って、横Xsize(横方向の画素数がX)、縦Ysize(縦方向の画素数がY)の原画像200の領域数は(Xsize/8)×(Ysize/8)となる。1つの領域の画素数を8画素×8画素とするときは、横Xsizeと縦Ysizeとは8で割り切れる大きさが好ましい。
図3は、符号化時領域量子化情報300を示す図である。前述したように、横Xsize、縦Ysizeの原画像200の領域数は、各領域が8画素×8画素で形成されているため、(Xsize/8)×(Ysize/8)により求められる。この場合の符号化時領域量子化情報300は、原画像200の領域数に合わせて(Xsize/8)×(Ysize/8)の要素(要素301〜304、要素311〜314および要素321〜324)から成る行列として表される。
前述したように、N種類の符号化時量子化テーブルのデータには、それぞれの符号化時量子化テーブルを識別するための識別番号(「1」〜「N」番)のデータが含まれている。符号化時領域量子化情報300の要素301には、原画像200の領域201の画像データを関数変換して得られた関数変換係数データを量子化するときに用いる1種類の符号化時量子化テーブルをN種類の符号化時量子化テーブルのうちから選択するために、たとえば、符号化時量子化テーブルの識別番号のデータが規定されている。
符号化時量子化情報300の他の要素(たとえば、i行j列の要素)にも同じく、原画像200の他の領域(たとえば、i行j列の領域)の画像データを関数変換して得られた関数変換係数データを量子化するときに用いる1種類の符号化時量子化テーブルをN種類の符号化時量子化テーブルのうちから選択するための符号化時量子化テーブルの識別番号のデータが規定されている。
従って、実際には、関数変換処理部110は、まず入力画像データバッファ109から領域201の画像データを読み出し、読み出した画像データを関数変換する。関数変換処理部110は、次に領域202の画像データを読み出し、読み出した画像データを関数変換する。このようにして関数変換処理部110は、入力画像データバッファ109から画像データを領域毎に読み出し、読み出した画像データを領域毎に関数変換する処理を繰り返し行なう。関数変換処理部110は、全ての領域の画像データを関数変換すると、関数変換係数データバッファ111に画像データを関数変換して得た関数変換係数データを格納する。
なお、関数変換処理部110は、領域201の画像データを関数変換した次に領域202の画像データを関数変換する例を示したが、各領域の画像データを関数変換する順番はこれに限られるものではない。
量子化処理部112は、関数変換係数データバッファ111から関数変換係数データを領域毎に読み出し、符号化時領域量子化情報データバッファ106から符号化時領域量子化情報のデータを読み出し、符号化時量子化テーブルデータバッファ群107からN種類の符号化時量子化テーブルのデータを読み出す。量子化処理部112は、読み出した領域に対応する符号化時領域量子化情報の要素に規定されている符号化時量子化テーブルの識別番号のデータに基づいてN種類の符号化時量子化テーブルのうちから1種類の符号化時量子化テーブルを選択し、選択した符号化時量子化テーブルを用いて関数変換係数データを領域毎に量子化する処理を繰り返し行なう。量子化処理部112は、全ての領域の関数変換係数データを量子化すると、量子化関数変換係数データバッファ113に関数変換係数データを量子化して得た量子化関数変換係数データを格納する。
画像符号化データ作成処理部114は、量子化関数変換係数データバッファ113から量子化関数変換係数データを読み出し、読み出した量子化関数変換係数データを符号化する処理を行なう。画像符号化データ作成処理部114は、符号化して得たデータに対して1種類の復号化時量子化テーブルのデータを付加した所定のフォーマットの画像符号化データを作成する処理を行なう。画像符号化データ作成処理部114は、画像符号化データバッファ115に作成した画像符号化データを格納する。
次に、図4〜図6を参照して、フィルタ効果について説明する。図4、図5および図6は、量子化テーブルの一例を示す図である。ここでは、図4に示す量子化テーブル400は画像符号化データを復号化して得られる量子化関数変換係数データを逆量子化するときに用いる復号化時量子化テーブルとし、図5および図6に示す量子化テーブル500および量子化テーブル600は関数変換係数データを量子化するときに用いる符号化時量子化テーブルとして説明する。量子化テーブルの大きさは、前述した領域と同じく8画素×8画素である。
画像は、濃淡の変化の回数等により周波数で表すことができる。前述したように画像データを関数変換すると、画像を周波数成分に変換することができる。8画素×8画素の画像データを関数変換すると、8画素×8画素の関数変換係数データが得られ、一般的には低周波成分が大きくなり、高周波成分が小さくなるという特性をもっている。人間の目は、画像の高周波成分ほど認識しにくいという特徴がある。関数変換係数データの量子化には、視覚に対応して高周波成分を省略することにより符号量を削減するという目的がある。
関数変換係数を量子化して得られる量子化関数変換係数は、関数変換係数を量子化テーブルの各値で除算することにより得られる。一方、画像符号化データを復号化して得られる量子化関数変換係数データを逆量子化して得られる関数変換係数は、画像符号化データを復号化して得られた量子化関数変換係数データを量子化テーブルの各値で乗算することにより得られる。
従って、関数変換係数データを量子化するときに用いる量子化テーブルと、画像符号化データを復号化して得られる量子化関数変換係数データを逆量子化するときに用いる量子化テーブルとが同じときは、画像データを関数変換したときに得られる関数変換係数と、量子化関数変換係数データを逆量子化したときに得られる関数変換係数とは同じになる。
また、関数変換係数データを量子化するときに用いる量子化テーブルのある要素(たとえば、i行j列の要素)が、画像符号化データを復号化して得られる量子化関数変換係数データを逆量子化するときに用いる量子化テーブルの対応する要素(たとえば、i行j列の要素)より小さい場合、得られる関数変換係数は、量子化および逆量子化する前の関数変換係数よりも縮減される。
また、関数変換係数データを量子化するときに用いる量子化テーブルのある要素(たとえば、i行j列の要素)が、画像符号化データを復号化して得られる量子化関数変換係数データを逆量子化するときに用いる量子化テーブルの対応する要素(たとえば、i行j列の要素)より大きい場合、得られる関数変換係数は、量子化および逆量子化する前の関数変換係数よりも増幅される。
たとえば、図5に示す量子化テーブル500を用いて関数変換係数データを量子化し、図4に示す量子化テーブル400を用いて画像符号化データを復号化して得られる量子化関数変換係数データを逆量子化したときに得られる関数変換係数の高周波成分は、量子化および逆量子化する前の関数変換係数の高周波成分と比較して大幅に縮減される。すなわち、平滑フィルタの効果を得ることができる。
また、図6に示す量子化テーブル600を用いて関数変換計数データを量子化し、図4に示す量子化テーブル400を用いて画像符号化データを復号化して得られる量子化関数変換係数データを逆量子化したときに得られる関数変換計数の高周波成分は、量子化および逆量子化する前の関数変換係数の高周波成分と比較して大幅に増幅される。すなわち、エッジ強調フィルタの効果を得ることができる。
このように、関数変換係数データを量子化するときに用いる符合化時量子化テーブルと、画像符号化データを復号化して得られる量子化関数変換係数データを逆量子化するときに用いる復号化時量子化テーブルとの組合せにより、様々なフィルタ効果を得ることができる。
図7は、実施の形態1における画像符号化装置104で実行される画像符号化処理の流れを示すフローチャートである。ステップS(以下、単に「S」という)701において、入力画像データバッファ109に画像入力装置102が出力した原画像の画像データを格納する処理が行なわれる。
S702において、S701で入力画像データバッファ109に格納された画像データが読み出され、読み出された画像データを関数変換する処理が行なわれる。なお、S702では、入力画像データバッファ109に格納されている画像データが領域毎に読み出され、読み出された画像データを領域毎に関数変換する処理が繰り返し行なわれる。全ての領域の画像データを関数変換する処理が終了すると、S703に進む。
S703において、関数変換係数データバッファ111にS702の処理で得られた関数変換係数データを格納する処理が行なわれる。S704において、符号化時量子化テーブルデータバッファ群107に量子化テーブル入力装置103が出力したN種類の符号化時量子化テーブルのデータを格納する処理が行なわれる。また、さらにS704において、復号化時量子化テーブルデータバッファ108に量子化テーブル入力装置103が出力した1種類の復号化時量子化テーブルのデータを格納する処理が行なわれる。S705において、符号化時領域量子化情報データバッファ106に領域量子化情報入力装置101が出力した符号化時領域量子化情報のデータを格納する処理が行なわれる。
S706において、S703で関数変換係数データバッファ111に格納された関数変換係数データが読み出され、S704で符号化時量子化テーブルデータバッファ群107に格納されたN種類の符号化時量子化テーブルのデータが読み出され、S705で符号化時領域量子化情報データバッファ106に格納された符号化時領域量子化情報のデータが読み出される。そして、さらにS706において、符号化時領域量子化情報のデータに規定されている符号化時量子化テーブルの識別番号のデータに基づいてN種類の符号化時量子化テーブルのうちから1種類の符号化時量子化テーブルが選択され、選択された符号化時量子化テーブルを用いて関数変換係数データを量子化する処理が行なわれる。
なお、S706では、関数変換係数データバッファ111に格納されている関数変換係数データが領域毎に読み出され、読み出された領域に対応する符号化時領域量子化情報の要素に規定されている符号化時量子化テーブルの識別番号のデータに基づいてN種類の符号化時量子化テーブルのうちから1種類の符号化時量子化テーブルが領域毎に選択される。選択された符号化時量子化テーブルを用いて関数変換係数データを領域毎に量子化する処理が繰り返し行なわれる。全ての領域の関数変換係数データを量子化する処理が終了すると、S707に進む。
S707において、量子化関数変換係数データバッファ113にS706の処理で得られた量子化関数変換係数データを格納する処理が行なわれる。S708において、S707で量子化関数変換係数データバッファ113に格納された量子化関数変換係数データが読み出され、読み出された量子化関数変換係数データを符号化する処理が行なわれる。
また、S708では、S704で復号化時量子化テーブルデータバッファ108に格納された1種類の復号化時量子化テーブルのデータが読み出される。さらにS708では、量子化関数変換係数データを符号化して得られたデータに対して1種類の復号化時量子化テーブルのデータを付加した所定のフォーマットの画像符号化データを作成する処理が行なわれる。S709において、画像符号化データバッファ115にS708の処理で得られた画像符号化データを格納する処理が行なわれ、このフローチャートは終了する。
図1に示した画像符号化装置104をパーソナルコンピュータやマイコン等で構成させる場合に、後述する画像符号化処理をコンピュータに実行させるためのプログラムとして記述するようにしてもよい。そのようなプログラムは、CD−ROM(Compact Disc - Read Only Memory)等の記録媒体に記録されて流通し、CD−ROMドライブ等によりコンピュータが備えるRAM等に読み込まれ、中央演算装置(CPU)で実行される。
なお、プログラムが記憶される記録媒体は、CD−ROMの他に、たとえば、フレキシブルディスク、カセットテープ、ハードディスク、光ディスク(MO(Magnetic Optical Disc)/MD(Mini Disc)/DVD(Digital Versatile Disc))、ICカード(メモリーカードを含む)、光カード、マスクROM、EPROM、EEPROM、フラッシュROM等の半導体メモリ等の固定的にプログラムを担持する媒体でもよい。さらに、インターネット等のネットワークを介して他の装置からダウンロードされてもよい。
ここでいうプログラムは、CPUにより直接実行可能なプログラムだけでなく、ソースプログラム形式のプログラム、圧縮処理されたプログラム、暗号化されたプログラム等を含む。
このようにすると、関数変換係数データを量子化するときには、N種類(Nは任意の自然数)の符号化時量子化テーブルのうちから領域毎に選択された1種類の符号化時量子化テーブルを用いて関数変換係数データが領域毎に量子化され、画像符号化データを復号化して得られる量子化関数変換係数データを逆量子化するときには、領域毎に1種類の復号化時量子化テーブルを用いて量子化関数変換係数データが領域毎に逆量子化されるため、符号化時量子化テーブルと復号化時量子化テーブルとの組合せによって領域毎に最大N種類のフィルタ効果を得ることができ、領域毎に最適なフィルタ効果を得ることができる。
また、フィルタ効果は、関数変換係数データを量子化するときに用いる符号化時量子化テーブルと画像符号化データを復号化して得られる量子化関数変換係数データを逆量子化するときに用いる復号化時量子化テーブルとを異ならせることにより得ることができ、フィルタ効果を得るためだけのフィルタ処理を設ける必要がないため、処理に要する時間および計算コストを抑えることができる。
また、各領域の画像データに応じて領域毎にN種類の符号化時量子化テーブルを使い分けることができるため、高い圧縮性能を実現することができる。また、領域毎にN種類のフィルタ効果を使い分けることができるため、復元する画像の品質を向上させることができる。また、画像を復元するときに用いる量子化テーブルが1種類であるため、現在普及しているJPEG符号化方式およびMPEG符号化方式等に適用することができる。
また、画像符号化装置104が符号化時量子化テーブルのデータおよび復号化時量子化テーブルのデータを予め記憶しているのではなく、画像符号化装置104の外部から符号化時量子化テーブルのデータおよび復号化時量子化テーブルのデータを入力するため、符号化時量子化テーブルおよび復号化時量子化テーブルの種類や個数を自由に設定することができる。
なお、前述の実施の形態1では、画像符号化データを復号化する過程で用いる復号化時量子化テーブルは、関数変換係数データを量子化するときに用いる符号化時量子化テーブルとは異なるバッファに格納され、そのデータも異なる例を示したがこれに限られない。たとえば、関数変換係数データを量子化するときに用いるN種類の符号化時量子化テーブルのうち予め定められている1種類の符号化量子化テーブルを量子化関数変換係数データを符号化して得られるデータに付加して画像符号化データを作成するようにしておいてもよい。
[実施の形態2]
次に実施の形態2について説明する。実施の形態2では、実施の形態1と相違する点を主として説明する。実施の形態1では、N種類(Nは任意の自然数)の符号化時量子化テーブルのうちから1種類の符号化時量子化テーブルを領域毎に選択し、選択した符号化時量子化テーブルを用いて関数変換係数データを領域毎に量子化し、量子化関数変換係数データを符号化して得られるデータに対して1種類の復号化時量子化テーブルのデータを付加した画像符号化データを作成する画像符号化装置について説明した。
実施の形態2では、1種類の符号化時量子化テーブルを用いて関数変換係数データを領域毎に量子化し、量子化関数変換係数データを符号化して得られるデータに対してM種類(Mは任意の自然数)の復号化時量子化テーブルのデータと、M種類の復号化時量子化テーブルのうち各領域の復号に用いる復号化時量子化テーブルを規定する復号化時領域量子化情報のデータとを付加した画像符号化データを作成する画像符号化装置について説明する。
なお、関数変換係数データを量子化するときに用いる1種類の符号化時量子化テーブルは、量子化関数変換係数データを符号化して得られるデータに付加するM種類の復号化時量子化テーブルのうちのいずれかと同一であってもよいが、ここでは関数変換係数データを量子化するときに用いる1種類の符号化時量子化テーブルは、量子化関数変換係数データを符号化して得られるデータに付加するM種類の復号化時量子化テーブルのうちのいずれとも同一ではないとして説明する。
図8は、実施の形態2における画像符号化システム800の概略構成を示すブロック図である。画像符号化システム800は、領域量子化情報入力装置801、画像入力装置802、量子化テーブル入力装置803、画像符号化装置804および画像符号化データ出力装置805を含む。
画像入力装置802は、後述する画像符号化装置804の入力画像データバッファ809と接続されている。画像入力装置802は、入力画像データバッファ809に原画像の画像データを出力する。画像入力装置802は、たとえば、デジタルカメラ、スキャナ、デジタルビデオカメラ等である。
量子化テーブル入力装置803は、後述する画像符号化装置804の符号化時量子化テーブルデータバッファ807および復号化時量子化テーブルデータバッファ群808と接続されている。量子化テーブル入力装置803は、符号化時量子化テーブルデータバッファ807に1種類の符号化時量子化テーブルのデータを出力する。また、量子化テーブル入力装置803は、復号化時量子化テーブルデータバッファ群808にM種類(Mは任意の自然数)の復号化時量子化テーブルのデータを出力する。
領域量子化情報入力装置801は、後述する画像符号化装置804の復号化時領域量子化情報データバッファ806と接続されている。領域量子化情報入力装置801は、復号化時領域量子化情報データバッファ806に復号化時領域量子化情報のデータを出力する。復号化時領域量子化情報については後述する。
画像符号化装置804は、復号化時領域量子化情報データバッファ806、符号化時量子化テーブルデータバッファ807、復号化時領域量子化テーブルデータバッファ群808、入力画像データバッファ809、関数変換処理部810、関数変換係数データバッファ811、量子化処理部812、量子化関数変換係数データバッファ813、画像符号化データ作成処理部814および画像符号化データバッファ815を含む。
入力画像データバッファ809は、画像入力装置802が出力した原画像の画像データを格納する。符号化時量子化テーブルデータバッファ807は、量子化テーブル入力装置803が出力した1種類の符号化時量子化テーブルのデータを格納する。復号化時量子化テーブルデータバッファ群808は、量子化テーブル入力装置803が出力したM種類の復号化時量子化テーブルのデータを格納する。復号化時領域量子化情報データバッファ806は、領域量子化情報入力装置801が出力した復号化時領域量子化情報のデータを格納する。
関数変換処理部810は、前述した実施の形態1と同じく、入力画像データバッファ809から画像データを領域毎に読み出し、読み出した画像データを領域毎に関数変換する処理を繰り返し行なう。関数変換処理部810は、全ての領域の画像データを関数変換すると、関数変換係数データバッファ811に画像データを関数変換して得た関数変換係数データを格納する。
量子化処理部812は、関数変換係数データバッファ911および符号化時量子化テーブルデータバッファ907と接続されている。実施の形態2では、実施の形態1で示したような符号化時領域量子化情報データバッファ106は存在しない。これは、符号化時量子化テーブルデータバッファ907に格納されている符号化時量子化テーブルのデータが1種類であり、関数変換係数データを量子化するときに用いる符号化時量子化テーブルを符号化時領域量子化情報の要素に規定されている符号化時量子化テーブルの識別番号のデータに基づいて選択する必要がないためである。
量子化処理部812は、関数変換係数データバッファ811から領域毎に関数変換係数データを読み出し、符号化時量子化テーブルデータバッファ807から1種類の符号化時量子化テーブルのデータを読み出す。量子化処理部812は、関数変換係数データを符号化時量子化テーブルを用いて領域毎に量子化する処理を繰り返し行なう。また、量子化処理部812は、量子化関数変換係数データバッファ813と接続されている。量子化処理部812は、全ての領域の関数変換係数データを量子化すると、量子化関数変換係数データバッファ813に関数変換係数データを量子化して得た量子化関数変換係数データを格納する。
画像符号化データ作成処理部814は、量子化関数変換係数データバッファ813、復号化時領域量子化情報データバッファ806および復号化時量子化テーブルデータバッファ群808と接続されている。画像符号化データ作成処理部814は、量子化関数変換係数データバッファ813から量子化関数変換係数データを読み出し、読み出した量子化関数変換係数データを符号化する処理を行なう。
また、画像符号化データ作成処理部814は、復号化領域量子化情報データバッファ806から復号化時領域量子化情報のデータを読み出し、復号化時量子化テーブルデータバッファ群808からM種類の復号化時量子化テーブルのデータを読み出す。そして、画像符号化データ作成処理部814は、符号化して得たデータに対してM種類の復号化時量子化テーブルのデータと、M種類の復号化時量子化テーブルのデータのうち各領域の復号に用いる復号化時量子化テーブルを規定する復号化時領域量子化情報のデータとを付加した所定のフォーマットの画像符号化データを作成する。
なお、画像符号化データ作成処理部814で行なわれる量子化関数変換係数データの符号化は、可逆符号化方式であればハフマン符号化等、いかなる方式の可逆符号化処理であってもかまわない。また、画像符号化データ作成処理部814において、復号化時量子化テーブルデータ、および復号化時領域量子化情報データの可逆符号化処理を併せて行なうようにしてもよい。
M種類の復号化時量子化テーブルのデータには、実施の形態1のN種類の符号化時量子化テーブルのデータと同じく、それぞれの復号化時量子化テーブルを識別するための識別番号(たとえば、「1」〜「M」番)のデータが含まれている。
復号化時領域量子化情報は、前述した実施の形態1の符号化時領域量子化情報300と同じく、原画像200の領域数に合わせて(Xsize/8)×(Ysize/8)の要素からなる行列として表される。復号化時領域量子化情報のi行j列の要素には、画像符号化データを復号化して得られる量子化関数変換係数データのi行j列の領域の量子化関数変換係数データを逆量子化するときに用いる1種類の復号化時量子化テーブルをM種類の復号化時量子化テーブルのうちから選択するための復号化時量子化テーブルの識別番号のデータが規定されている。
画像符号化データ作成処理部814は、画像符号化データバッファ815と接続されている。画像符号化データ作成処理部814は、画像符号化データバッファ815に作成した画像符号化データを格納する。画像符号化データ出力装置805は、画像符号化データバッファ815と接続されている。画像符号化データ出力装置805は、画像符号化データバッファ815に格納されている画像符号化データを読み出し、出力する。
符号化時領域量子化情報データバッファ806、符号化時量子化テーブルデータバッファ807、復号化時量子化テーブルデータバッファ群808、入力画像データバッファ809、関数変換係数データバッファ811、量子化関数変換係数データバッファ813および画像符号化データバッファ815は、フラッシュメモリ、ハードディスク等のRAM(Random Access Memory)等の記憶装置により実現される。
関数変換処理部810、量子化処理部812、画像符号化データ作成処理部814は、たとえば、それぞれ独立した回路によって実現される。また、たとえばコンピュータ等の演算処理回路によって実現される仮想回路としてもよい。
図9は、実施の形態2における画像符号化装置804で実行される画像符号化処理の流れを示すフローチャートである。S901において、入力画像データバッファ809に画像入力装置802が出力した原画像の画像データを格納する処理が行なわれる。
S902において、S901で入力画像データバッファ809に格納された画像データが読み出され、読み出された画像データを関数変換する処理が行なわれる。なお、S902では、入力画像データバッファ809に格納されている画像データが領域毎に読み出され、読み出された画像データを領域毎に関数変換する処理が繰り返し行なわれる。全ての領域の画像データを関数変換する処理が終了すると、S903に進む。
S903において、関数変換係数データバッファ811にS702の処理で得られた関数変換係数データを格納する処理が行なわれる。S904において、符号化時量子化テーブルデータバッファ807に量子化テーブル入力装置803が出力した1種類の符号化時量子化テーブルのデータを格納する処理が行なわれる。また、さらにS904において、復号化時量子化テーブルデータバッファ群808に量子化テーブル入力装置803が出力したM種類の復号化時量子化テーブルのデータを格納する処理が行なわれる。
S905において、S903で関数変換係数データバッファ811に格納された関数変換係数データが読み出され、S904で符号化時量子化テーブルデータバッファ807に格納された1種類の符号化時量子化テーブルのデータが読み出される。そして、さらにS905において、関数変換係数データを1種類の符号化時量子化テーブルを用いて量子化する処理が行なわれる。
なお、S905では、関数変換係数データバッファ811に格納されている関数変換係数データが領域毎に読み出され、読み出された関数変換係数データを1種類の符号化時量子化テーブルを用いて領域毎に量子化する処理が繰り返し行なわれる。全ての領域の関数変換係数データを量子化する処理が終了すると、S906に進む。
S906において、量子化関数変換係数データバッファ813にS905の処理で得られた量子化関数変換係数データを格納する処理が行なわれる。S907において、復号化時領域量子化情報データバッファ806に領域量子化情報入力装置801が出力した復号化時領域量子化情報のデータを格納する処理が行なわれる。
S908において、S906で量子化関数変換係数データバッファ813に格納された量子化関数変換係数データが読み出され、読み出された量子化関数変換係数データを符号化する処理が行なわれる。なお、S908では、量子化関数変換係数データバッファ813に格納されている量子化関数変換係数データが領域毎に読み出され、読み出された量子化関数変換係数データを領域毎に符号化する処理が繰り返し行なわれる。
また、S908では、S904で復号化時量子化テーブルデータバッファ群808に格納されたM種類の復号化時量子化テーブルのデータが読み出され、S907で復号化時領域量子化情報データバッファ806に格納された復号化時領域量子化情報のデータが読み出される。さらにS908では、量子化関数変換係数データを符号化して得られたデータに対してM種類の復号化時量子化テーブルのデータと、M種類の復号化時量子化テーブルのデータのうち各領域の復号に用いる復号化時量子化テーブルを規定する復号化時領域量子化情報のデータとを付加した所定のフォーマットの画像符号化データを作成する処理が行なわれる。S909において、画像符号化データバッファ815にS908の処理で得られた画像符号化データを格納する処理が行なわれ、このフローチャートは終了する。
図8に示した画像符号化装置804をパーソナルコンピュータやマイコン等で構成させる場合に、後述する画像符号化処理をコンピュータに実行させるためのプログラムとして記述するようにしてもよい。そのようなプログラムは、CD−ROM(Compact Disc - Read Only Memory)等の記録媒体に記録されて流通し、CD−ROMドライブ等によりコンピュータが備えるRAM等に読み込まれ、中央演算装置(CPU)で実行される。
なお、プログラムが記憶される記録媒体は、CD−ROMの他に、たとえば、フレキシブルディスク、カセットテープ、ハードディスク、光ディスク(MO(Magnetic Optical Disc)/MD(Mini Disc)/DVD(Digital Versatile Disc))、ICカード(メモリーカードを含む)、光カード、マスクROM、EPROM、EEPROM、フラッシュROM等の半導体メモリ等の固定的にプログラムを担持する媒体でもよい。さらに、インターネット等のネットワークを介して他の装置からダウンロードされてもよい。
ここでいうプログラムは、CPUにより直接実行可能なプログラムだけでなく、ソースプログラム形式のプログラム、圧縮処理されたプログラム、暗号化されたプログラム等を含む。
このようにすると、関数変換係数データを量子化するときには、1種類の符号化時量子化テーブルを用いて関数変換係数データが領域毎に量子化され、画像符号化データを復号化して得られる量子化関数変換係数データを逆量子化するときには、M種類(Mは任意の自然数)の復号化時量子化テーブルのうちから領域毎に選択された1種類の復号化時量子化テーブルを用いて量子化関数変換係数データが領域毎に逆量子化されるため、符号化時量子化テーブルと復号化時量子化テーブルとの組合せによって領域毎に最大M種類のフィルタ効果を得ることができ、領域毎に最適なフィルタ効果を得ることができる。
また、フィルタ効果は、関数変換係数データを量子化するときに用いる符号化時量子化テーブルと画像符号化データを復号化して得られる量子化関数変換係数データを逆量子化するときに用いる復号化時量子化テーブルとを異ならせることにより得ることができ、フィルタ効果を得るためだけのフィルタ処理を設ける必要がないため、処理に要する時間および計算コストを抑えることができる。
また、領域毎にM種類のフィルタ効果を使い分けることができるため、復元する画像の品質を向上させることができる。また、画像符号化装置804が符号化時量子化テーブルのデータおよび復号化時量子化テーブルのデータを予め記憶しているのではなく、画像符号化装置804の外部から符号化時量子化テーブルのデータおよび復号化時量子化テーブルのデータを入力するため、符号化時量子化テーブルおよび復号化時量子化テーブルの種類や個数を自由に設定することができる。
[実施の形態3]
次に実施の形態3について説明する。実施の形態3では、実施の形態1および実施の形態2と相違する点を主として説明する。実施の形態1では、N種類(Nは任意の自然数)の符号化時量子化テーブルのうちから1種類の符号化時量子化テーブルを領域毎に選択し、選択した符号化時量子化テーブルを用いて関数変換係数データを領域毎に量子化し、量子化関数変換係数データを符号化したデータに対して1種類の復号化時量子化テーブルのデータを付加した画像符号化データを作成する画像符号化装置について説明した。
実施の形態2では、1種類の符号化時量子化テーブルを用いて関数変換係数データを領域毎に量子化し、量子化関数変換係数データを符号化して得られるデータに対してM種類(Mは任意の自然数)の復号化時量子化テーブルのデータと、M種類の復号化時量子化テーブルのうち各領域の復号に用いる復号化時量子化テーブルを規定する復号化時領域量子化情報のデータとを付加した画像符号化データを作成する画像符号化装置について説明した。
実施の形態3では、N種類(Nは任意の自然数)の符号化時量子化テーブルのうちから1種類の符号化時量子化テーブルを領域毎に選択し、選択した符号化時量子化テーブルを用いて関数変換係数データを領域毎に量子化し、量子化関数変換係数データを符号化して得られるデータに対してM種類(Mは任意の自然数)の復号化時量子化テーブルのデータと、M種類の復号化時量子化テーブルデータのうち各領域の復号に用いる復号化時量子化テーブルを規定する復号化時領域量子化情報のデータとを付加した画像符号化データを作成する画像符号化装置について説明する。
なお、関数変換係数データを量子化するときに用いるN種類の符号化時量子化テーブルのそれぞれは、画像符号化データに含めるM種類の復号化時量子化テーブルのいずれかと同一であってもよいが、ここでは関数変換係数データを量子化するときに用いるN種類の符号化時量子化テーブルのそれぞれは、画像符号化データに含めるM種類の復号化時量子化テーブルのいずれとも同一ではないとして説明する。
図10は、実施の形態3における画像符号化システム1000の概略構成を示すブロック図である。画像符号化システム1000は、領域量子化情報入力装置1001、画像入力装置1002、量子化テーブル入力装置1003、画像符号化装置1004および画像符号化データ出力装置1005を含む。
画像入力装置1002は、後述する画像符号化装置1004の入力画像データバッファ1010と接続されている。画像入力装置1002は、入力画像データバッファ1010に原画像の画像データを出力する。画像入力装置1002は、たとえば、デジタルカメラ、スキャナ、デジタルビデオカメラ等である。
量子化テーブル入力装置1003は、後述する画像符号化装置1004の符号化時量子化テーブルデータバッファ群1008および復号化時量子化テーブルデータバッファ群1009と接続されている。量子化テーブル入力装置1003は、符号化時量子化テーブルデータバッファ群1008にN種類(Nは任意の自然数)の符号化時量子化テーブルのデータを出力する。また、量子化テーブル入力装置1003は、復号化時量子化テーブルデータバッファ群1009にM種類(Mは任意の自然数)の復号化時量子化テーブルのデータを出力する。
領域量子化情報入力装置1001は、後述する画像符号化装置1004の符号化時領域量子化情報データバッファ1006および復号化時領域量子化情報データバッファ1007と接続されている。領域量子化情報入力装置801は、符号化時時領域量子化情報データバッファ1006に符号化時領域量子化情報のデータを出力し、復号化時領域量子化情報データバッファ1007に復号化時領域量子化情報のデータを出力する。
画像符号化装置1004は、符号化時領域量子化情報データバッファ1006、復号化時領域量子化情報データバッファ1007、符号化時量子化テーブルデータバッファ群1008、復号化時領域量子化テーブルデータバッファ群1009、入力画像データバッファ1010、関数変換処理部1011、関数変換係数データバッファ1012、量子化処理部1013、量子化関数変換係数データバッファ1014、画像符号化データ作成処理部1015および画像符号化データバッファ1016を含む。
入力画像データバッファ1010は、画像入力装置1002が出力した原画像の画像データを格納する。符号化時量子化テーブルデータバッファ群1008は、量子化テーブル入力装置1003が出力したN種類の符号化時量子化テーブルのデータを格納する。復号化時量子化テーブルデータバッファ群1009は、量子化テーブル入力装置803が出力したM種類の復号化時量子化テーブルのデータを格納する。符号化時領域量子化情報データバッファ1006は、領域量子化情報入力装置1001が出力した符号化時領域量子化情報のデータを格納する。復号化時領域量子化情報データバッファ1007は、領域量子化情報入力装置1001が出力した復号化時領域量子化情報のデータを格納する。
関数変換処理部1011は、入力画像データバッファ1010と接続されている。関数変換処理部1011は、前述した実施の形態1等と同じく、入力画像データバッファ1010から画像データを領域毎に読み出し、読み出した画像データを領域毎に関数変換する処理を繰り返し行なう。関数変換処理部1011は、関数変換係数データバッファ1012と接続されている。関数変換処理部1011は、全ての領域の画像データを関数変換すると、関数変換係数データバッファ1012に関数変換して得た関数変換係数データを格納する。
量子化処理部1013は、関数変換係数データバッファ1012、符号化時領域量子化情報データバッファ1006および符号化時量子化テーブルデータバッファ群1008と接続さている。量子化処理部1013は、前述した実施の形態1と同じく、関数変換係数データバッファ1012から関数変換係数データを領域毎に読み出し、符号化時領域量子化情報データバッファ1006から符号化時領域量子化情報のデータを読み出し、符号化時量子化テーブルデータバッファ群1008からN種類の符号化時量子化テーブルのデータを読み出す。
量子化処理部1013は、読み出した領域に対応する符号化時領域量子化情報の要素に規定されている符号化時量子化テーブルの識別番号のデータに基づいてN種類の符号化時量子化テーブルのうちから1種類の符号化時量子化テーブルを選択し、選択した符号化時量子化テーブルを用いて関数変換係数データを領域毎に量子化する処理を繰り返し行なう。また、量子化処理部1013は、量子化関数変換係数データバッファ1014と接続されている。量子化処理部1013は、全ての領域の関数変換係数データを量子化すると、量子化関数変換係数データバッファ1014に関数変換係数データを量子化して得た量子化関数変換係数データを格納する。
画像符号化データ作成処理部1015は、量子化関数変換係数データバッファ1014、復号化時領域量子化情報データバッファ1007および復号化時量子化テーブルデータバッファ群1009と接続されている。画像符号化データ作成処理部1015は、量子化関数変換係数データバッファ1014から量子化関数変換係数データを読み出し、読み出した量子化関数変換係数データを符号化する処理を行なう。
また、画像符号化データ作成処理部1015は、復号化時領域量子化情報データバッファ1007から復号化時領域量子化情報のデータと、復号化時量子化テーブルデータバッファ群1009からM種類の復号化時量子化テーブルのデータとを読み出す。そして、画像符号化データ作成処理部1015は、符号化して得たデータに対してM種類の復号化時量子化テーブルのデータと、M種類の復号化時量子化テーブルのデータのうち各領域の復号に用いる復号化時量子化テーブルを規定する復号化時領域量子化情報のデータとを付加した所定のフォーマットの画像符号化データを作成する。
画像符号化データ作成処理部1015は、画像符号化データバッファ1016と接続さている。画像符号化データ作成処理部1015は、画像符号化データバッファ1016に作成した画像符号化データを格納する。画像符号化データ出力装置1005は、画像符号化データバッファ1016と接続されている。画像符号化データ出力装置1005は、画像符号化データバッファ1016に格納されている画像符号化データを読み出し、出力する。
なお、画像符号化データ作成処理部1015で行なわれる量子化関数変換係数データの符号化は、可逆符号化方式であればハフマン符号化等、いかなる方式の可逆符号化処理であってもかまわない。また、画像符号化データ作成処理部1015において、復号化時量子化テーブルデータ、および復号化時領域量子化情報データの可逆符号化処理を併せて行なうようにしてもよい。
符号化時領域量子化情報データバッファ1006、復号化時領域量子化情報データバッファ1007、符号化時量子化テーブルデータバッファ群1008、復号化時量子化テーブルデータバッファ群1009、入力画像データバッファ1010、関数変換係数データバッファ1012、量子化関数変換係数データバッファ1014および画像符号化データバッファ1016は、フラッシュメモリ、ハードディスク等のRAM(Random Access Memory)等の記憶装置により実現される。
関数変換処理部1011、量子化処理部1013、画像符号化データ作成処理部1015は、たとえば、それぞれ独立した回路によって実現される。また、たとえばコンピュータ等の演算処理回路によって実現される仮想回路としてもよい。
図11は、実施の形態3における画像符号化装置1004で実行される画像符号化処理の流れを示すフローチャートである。S1101において、入力画像データバッファ1010に画像入力装置1002が出力した原画像の画像データを格納する処理が行なわれる。
S1102において、S1101で入力画像データバッファ1010に格納された画像データが読み出され、読み出された画像データを関数変換する処理が行なわれる。なお、S1102では、入力画像データバッファ1010に格納されている画像データが領域毎に読み出され、読み出された画像データを領域毎に関数変換する処理が繰り返し行なわれる。全ての領域の画像データを関数変換する処理が終了すると、S1103に進む。
S1103において、関数変換係数データバッファ1012にS1102の処理で得られた関数変換係数データを格納する処理が行なわれる。S1104において、符号化時量子化テーブルデータバッファ群1008に量子化テーブル入力装置1003が出力したN種類の符号化時量子化テーブルのデータを格納する処理が行なわれる。また、復号化時量子化テーブルデータバッファ群1009に量子化テーブル入力装置1003が出力したM種類の復号化時量子化テーブルのデータを格納する処理が行なわれる。S1105において、符号化時領域量子化情報データバッファ1006に領域量子化情報入力装置1001が出力した符号化時領域量子化情報のデータを格納する処理が行なわれる。
S1106において、S1103で関数変換係数データバッファ1012に格納された関数変換係数データが読み出され、S1104で符号化時量子化テーブルデータバッファ群1008に格納されたN種類の符号化時量子化テーブルのデータが読み出され、S1105で符号化時領域量子化情報データバッファ1006に格納された符号化時領域量子化情報のデータが読み出される。そして、さらにS1106において、符号化時領域量子化情報のデータに規定されている符号化時量子化テーブルの識別番号のデータに基づいてN種類の符号化時量子化テーブルのうちから1種類の符号化時量子化テーブルが選択され、選択された符号化時量子化テーブルのデータを用いて関数変換係数データを量子化する処理が行なわれる。
なお、S1106では、関数変換係数データバッファ1012に格納されている関数変換係数データが領域毎に読み出され、読み出された領域に対応する符号化時領域量子化情報の要素に規定されている符号化時量子化テーブルの識別番号のデータに基づいてN種類の符号化時量子化テーブルのうちから1種類の符号化時量子化テーブルが領域毎に選択される。選択された符号化時量子化テーブルを用いて関数変換係数データを領域毎に量子化する処理が繰り返し行なわれる。全ての領域の関数変換係数データを量子化する処理が終了すると、S1107に進む。
S1107において、量子化関数変換係数データバッファ1014にS1106の処理で得られた量子化関数変換係数データを格納する処理が行なわれる。S1108において、復号化時領域量子化情報データバッファ1007に領域量子化情報入力装置1001が出力した復号化時領域量子化情報のデータを格納する処理が行なわれる。
S1109において、S1107で量子化関数変換係数データバッファ1014に格納された量子化関数変換係数データが読み出され、読み出された量子化関数変換係数データを符号化する処理が行なわれる。なお、S1109では、量子化関数変換係数データバッファ1014に格納されている量子化関数変換係数データが読み出され、読み出された量子化関数変換係数データを符号化する処理が行なわれる。
また、S1109では、S1104で復号化時量子化テーブルデータバッファ群1009に格納されたM種類の復号化時量子化テーブルのデータが読み出され、S1108で復号化時領域量子化情報データバッファ1007に格納された復号化時領域量子化情報のデータ読み出される。さらにS1109では、量子化関数変換係数データを符号化して得られたデータに対してM種類の復号化時量子化テーブルのデータと、M種類の符号化時量子化テーブルのデータのうち各領域の復号に用いる復号化時量子化テーブルを規定する復号化時領域量子化情報のデータとを付加した所定のフォーマットの画像符号化データを作成する処理が行なわれる。S1110において、画像符号化データバッファ1016にS1109の処理で得られた画像符号化データを格納する処理が行なわれ、このフローチャートは終了する。
図10に示した画像符号化装置1004を、パーソナルコンピュータやマイコン等で構成させる場合に、後述する画像符号化処理をコンピュータに実行させるためのプログラムとして記述するようにしてもよい。そのようなプログラムは、CD−ROM(Compact Disc - Read Only Memory)等の記録媒体に記録されて流通し、CD−ROMドライブ等によりコンピュータが備えるRAM等に読み込まれ、中央演算装置(CPU)で実行される。
なお、プログラムが記憶される記録媒体は、CD−ROMの他に、たとえば、フレキシブルディスク、カセットテープ、ハードディスク、光ディスク(MO(Magnetic Optical Disc)/MD(Mini Disc)/DVD(Digital Versatile Disc))、ICカード(メモリーカードを含む)、光カード、マスクROM、EPROM、EEPROM、フラッシュROM等の半導体メモリ等の固定的にプログラムを担持する媒体でもよい。さらに、インターネット等のネットワークを介して他の装置からダウンロードされてもよい。
ここでいうプログラムは、CPUにより直接実行可能なプログラムだけでなく、ソースプログラム形式のプログラム、圧縮処理されたプログラム、暗号化されたプログラム等を含む。
このようにすると、関数変換係数データを量子化するときには、N種類(Nは任意の自然数)の符号化時量子化テーブルのうちから領域毎に選択された1種類の符号化時量子化テーブルを用いて関数変換係数データが領域毎に量子化され、画像符号化データを復号化して得られる量子化関数変換係数データを逆量子化するときには、M種類(Mは任意の自然数)の復号化時量子化テーブルのうちから領域毎に選択された1種類の復号化時量子化テーブルを用いて量子化関数変換係数データが領域毎に逆量子化されるため、符号化時量子化テーブルと復号化時量子化テーブルとの組合せによって領域毎に最大N×M種類のフィルタ効果を得ることができ、領域毎に最適なフィルタ効果を得ることができる。
また、フィルタ効果は、関数変換係数データを量子化するときに用いる符号化時量子化テーブルと画像符号化データを復号化して得られる量子化関数変換係数データを逆量子化するときに用いる復号化時量子化テーブルとを異ならせることにより得ることができ、フィルタ効果を得るためだけのフィルタ処理を設ける必要がないため、処理に要する時間および計算コストを抑えることができる。
また、各領域の画像データに応じて領域毎にN種類の符号化時量子化テーブルを使い分けることができるため、高い圧縮性能を実現することができる。また、領域毎にN×M種類のフィルタ効果を使い分けることができるため、復元する画像の品質を向上させることができる。
また、画像符号化装置1004が符号化時量子化テーブルのデータおよび復号化時量子化テーブルのデータを予め記憶しているのではなく、画像符号化装置1004の外部から符号化時量子化テーブルのデータおよび復号化時量子化テーブルのデータを入力するため、符号化時量子化テーブルおよび復号化時量子化テーブルの種類や個数を自由に設定することができる。
[実施の形態4]
次に実施の形態4について説明する。実施の形態4では、実施の形態1、実施の形態2および実施の形態3と相違する点を主として説明する。実施の形態1から実施の形態3まででは、原画像の画像データを符号化する画像符号化装置について説明した。実施の形態4では、画像符号化装置において画像データを符号化して得られた画像符号化データから画像を復元する画像復号化装置について説明する。
なお、実施の形態4では、実施の形態2および実施の形態3で説明した量子化関数変換係数データを符号化して得られたデータに対してM種類の復号化時量子化テーブルのデータと、M種類の復号化時量子化テーブルのデータのうち各領域の復号に用いる復号化時量子化テーブルを規定する復号化時領域量子化情報のデータとを付加した所定のフォーマットの画像符号化データから画像を復元する画像復号化装置について説明する。
図12は、実施の形態4における画像復号化システム1200の概略構成を示すブロック図である。画像復号化システム1200は、画像符号化データ入力装置1201、画像復号化装置1202および画像データ出力装置1203を含む。
画像符号化データ入力装置1201は、後述する画像復号化装置1202の画像符号化データバッファ1204と接続されている。画像符号化データ入力装置1201は、前述した実施の形態1〜実施の形態3で説明した画像符号化データ出力装置が出力した画像符号化データを受信し、画像符号化データバッファ1204に画像符号化データを出力する。
画像復号化装置1202は、画像符号化データバッファ1204、画像符号化データ分離処理部1205、復号化時領域量子化情報データバッファ1206、復号化時量子化テーブルデータバッファ群1207、量子化関数変換係数データバッファ1208、逆量子化処理部1209、関数変換係数データバッファ1210、関数逆変換処理部1211および画像データバッファ1212を含む。
画像符号化データバッファ1204は、画像符号化データ入力装置1201が出力した画像符号化データを格納する。画像符号化データ分離処理部1205は、画像符号化データバッファ1204と接続されている。画像符号化データ分離処理部1205は、画像符号化データバッファ1204から画像符号化データを読み出し、読み出した画像符号化データのうちから復号化時領域量子化情報のデータとM種類(Mは任意の自然数)の復号化時量子化テーブルのデータとを分離する。
また、画像符号化データ分離処理部1205は、復号化時領域量子化情報データバッファ1206、復号化時量子化テーブルデータバッファ群1207および量子化関数変換係数データバッファ1208と接続されている。画像符号化データ分離処理部1205は、復号化時領域量子化情報データバッファ1206に画像符号化データから分離した復号化時領域量子化情報のデータを格納する。また、画像符号化データ分離処理部1205は、復号化時量子化テーブルデータバッファ群1207に画像符号化データから分離したM種類の復号化時量子化テーブルのデータを格納する。
画像符号化データ分離処理部1205は、復号化時領域量子化情報のデータとM種類の復号化時量子化テーブルのデータとが分離された後の画像符号化データを復号化する処理を行なう。画像符号化データ分離処理部1205は、量子化関数変換係数データバッファ1208に画像符号化データを復号化して得た量子化関数変換係数データを格納する。
逆量子化処理部1209は、量子化関数変換係数データバッファ1208、復号化時領域量子化情報データバッファ1206および復号化時量子化テーブルデータバッファ群1207と接続されている。逆量子化処理部1209は、量子化関数変換係数データバッファ1208から量子化関数変換係数データを領域毎に読み出し、復号化時領域量子化情報データバッファ1206から復号化時領域量子化情報のデータを読み出し、復号化時量子化テーブルデータバッファ群1207からM種類の復号化時量子化テーブルのデータを読み出す。
前述した実施の形態2で説明したように、復号化時領域量子化情報の各要素には、画像符号化データ分離処理部1205が画像符号化データを復号化して得られる量子化関数変換係数データを領域毎に逆量子化するときに用いる1種類の復号化時量子化テーブルをM種類の復号化時量子化テーブルのうちから選択するための復号化時量子化テーブルの識別番号のデータが規定されている。
逆量子化処理部1209は、読み出した領域に対応する復号化時領域量子化情報の要素に規定されている復号化時量子化テーブルの識別番号のデータに基づいてM種類の復号化時量子化テーブルのうちから1種類の復号化時量子化テーブルを選択し、選択した復号化時量子化テーブルを用いて量子化関数変換係数データを領域毎に逆量子化する処理を繰り返し行なう。また、逆量子化処理部1209は、関数変換係数データバッファ1210と接続されている。逆量子化処理部1209は、全ての領域の量子化関数変換係数データを逆量子化すると、関数変換係数データバッファ1210に量子化関数変換係数データを逆量子化して得た関数変換係数データを格納する。
関数逆変換処理部1211は、関数変換係数データバッファ1210と接続されている。関数逆変換処理部1211は、関数変換係数データバッファ1210から関数変換係数データを領域毎に読み出し、読み出した関数変換係数データを領域毎に関数逆変換する処理を繰り返し行なう。また、関数逆変換処理部1211は、画像データバッファ1212と接続されている。関数逆変換処理部1211は、全ての領域の関数変換係数データを関数逆変換すると、画像データバッファ1212に関数変換係数データを関数逆変換して得た画像データを格納する。
画像データ出力装置1203は、画像データバッファ1212と接続されている。画像データ出力装置1203は、画像データバッファ1212に格納されている画像データを読み出し、出力する。
画像符号化データバッファ1204、復号化時領域量子化情報データバッファ1206、復号化時量子化テーブルデータバッファ群1207、量子化関数変換係数データバッファ1208、関数変換係数データバッファ1210および画像データバッファ1212は、フラッシュメモリ、ハードディスク等のRAM等の記憶装置により実現される。
画像符号化データ分離処理部1205、逆量子化処理部1209および関数逆変換処理部1211は、たとえば、それぞれ独立した回路によって実現される。また、たとえばコンピュータ等の演算処理回路によって実現される仮想回路としてもよい。
図13は、実施の形態4の画像復号化装置1202で実行される画像復号化処理の流れを示すフローチャートである。S1301において、画像符号化データバッファ1204に画像符号化データ入力装置1201が出力した画像復号化データを格納する処理が行なわれる。
S1302において、S1301で画像符号化データバッファ1304に格納された画像符号化データが読み出され、読み出された画像符号化データのうちから復号化時領域量子化情報のデータとM種類(Mは任意の自然数)の復号化時量子化テーブルのデータとを分離する処理が行なわれる。そして、さらにS1302において、復号化時領域量子化情報のデータとM種類の復号化時量子化テーブルのデータとが分離された後の画像符号化データを復号化する処理が行なわれる。画像符号化データを復号化する処理が終了すると、S1303に進む。
S1303において、復号化時領域量子化情報データバッファ1206にS1302の処理で分離された復号化時領域量子化情報のデータを格納する処理が行なわれる。S1304において、量子化関数変換係数データバッファ1208にS1302の処理で得られた量子化関数変換係数データを格納する処理が行なわれる。S1305において、復号化時量子化テーブルデータバッファ群1207にS1302の処理で分離されたM種類の復号化時量子化テーブルのデータを格納する処理が行なわれる。
S1306において、S1303で復号化時領域量子化情報データバッファ1206に格納された復号化時領域量子化情報のデータが読み出され、S1304で量子化関数変換係数データバッファ1208に格納された量子化関数変換係数データが読み出され、S1305で復号化時量子化テーブルデータバッファ群1207に格納されたM種類の復号化時量子化テーブルのデータ読み出される。そして、さらにS1306において、復号化時領域量子化情報のデータに規定されている復号化時量子化テーブルの識別番号のデータに基づきM種類の復号化時量子化テーブルのうちから1種類の復号化時量子化テーブルが選択され、選択された復号化時量子化テーブルのデータを用いて量子化関数変換係数データを逆量子化する処理が行なわれる。
なお、S1306では、量子化関数変換係数データバッファ1208に格納されている量子化関数変換係数データが領域毎に読み出され、読み出された領域に対応する復号化時領域量子化情報の要素に規定されている復号化時量子化テーブルの識別番号のデータに基づいてM種類の復号化時量子化テーブルのうちから1種類の復号化時量子化テーブルが領域毎に選択される。選択された復号化時量子化テーブルを用いて量子化関数変換係数データを領域毎に逆量子化する処理が繰り返し行なわれる。全ての領域の量子化関数変換係数データを逆量子化する処理が終了すると、S1307に進む。
S1307において、関数変換係数データバッファ1210にS1306の処理で得られた関数変換係数データを格納する処理が行なわれる。S1308において、S1307で関数変換係数データに格納された関数変換係数データが読み出され、読み出された関数変換係数データを関数逆変換する処理が行なわれる。なお、S1308では、関数変換係数データバッファ1210に格納されている関数変換係数データが領域毎に読み出され、読み出された関数変換係数データを領域毎に関数逆変換する処理が繰り返し行なわれる。全ての領域の関数変換係数データを関数逆変換する処理が終了すると、S1309に進む。S1309において、画像データバッファ1212に、S1308において関数変換係数データを関数逆変換する処理がされて得られた画像データを格納する処理が行なわれ、このフローチャートは終了する。
図12に示した画像復号化装置1202を、パーソナルコンピュータやマイコン等で構成させる場合に、後述する画像符号化処理をコンピュータに実行させるためのプログラムとして記述するようにしてもよい。そのようなプログラムは、CD−ROM(Compact Disc - Read Only Memory)等の記録媒体に記録されて流通し、CD−ROMドライブ等によりコンピュータが備えるRAM等に読み込まれ、中央演算装置(CPU)で実行される。
なお、プログラムが記憶される記録媒体は、CD−ROMの他に、たとえば、フレキシブルディスク、カセットテープ、ハードディスク、光ディスク(MO(Magnetic Optical Disc)/MD(Mini Disc)/DVD(Digital Versatile Disc))、ICカード(メモリーカードを含む)、光カード、マスクROM、EPROM、EEPROM、フラッシュROM等の半導体メモリ等の固定的にプログラムを担持する媒体でもよい。さらに、インターネット等のネットワークを介して他の装置からダウンロードされてもよい。
ここでいうプログラムは、CPUにより直接実行可能なプログラムだけでなく、ソースプログラム形式のプログラム、圧縮処理されたプログラム、暗号化されたプログラム等を含む。
このようにすると、画像符号化データを復号化して得られる量子化関数変換係数データを逆量子化するときには、M種類(Mは任意の自然数)の復号化時量子化テーブルのうちから領域毎に選択された1種類の復号化時量子化テーブルを用いて量子化関数変換係数データが領域毎に逆量子化されるため、符号化時量子化テーブルと復号化時量子化テーブルとの組合せによって領域毎に最適なフィルタ効果を得ることができる。
また、フィルタ効果は、関数変換係数データを量子化するときに用いる符号化時量子化テーブルと画像符号化データを復号化して得られる量子化関数変換係数データを逆量子化するときに用いる復号化時量子化テーブルとを異ならせることにより得ることができ、フィルタ効果を得るためだけのフィルタ処理を設ける必要がないため、処理に要する時間および計算コストを抑えることができる。また、領域毎に少なくともM種類のフィルタ効果を使い分けることができるため、復元する画像の品質を向上させることができる。
なお、今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなく特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
100 画像符号化システム、101 領域量子化情報入力装置、102 画像入力装置、103 量子化テーブル入力装置、104 画像符号化装置、105 画像符号化データ出力装置、106 符号化時領域量子化情報データバッファ、107 符号化時量子化テーブルデータバッファ群、108 復号化時量子化テーブルデータバッファ、109 入力画像データバッファ、110 関数変換処理部、111 関数変換係数データバッファ、112 量子化処理部、113 量子化関数変換係数データバッファ、114 画像符号化データ作成処理部、115 画像符号化データバッファ。