(57)【要約】【課題】  カラールックアップテーブルのような空間内の隣接する要素が互いに相関度の高い関係を有する多次元データを、簡単な構成で、高い圧縮率で可逆符号化する。【解決手段】  多次元データ入力部は、３次元Ｘ，Ｙ，Ｚ座標で表わされるルックアップテーブルテーブルから、Ｚ＝０，１，２…の順にＸ−Ｙプレーンのデータを入力する。プレーン間差分生成部は、隣接する２つのプレーンの各要素の差分Ｄを算出し、その結果を２次元のプレーン間差分値として出力する。予測誤差生成部１０６は、プレーン間差分値Ｄ中の着目データＤｉを２次元データの要素と見なし、既に符号化されたデータを参照して得た予測値ｐとの差分ｅを予測誤差符号化部１０７に出力する。予測誤差符号化部１０７は、入力した差分ｅから符号語を生成し、出力する。【選択図】  図１
2008278464.tif 000002
【特許請求の範囲】
【請求項１】
Ｍ（Ｍ≧３）次元で表わされる多次元空間における要素データを符号化する符号化装置であって、
前記多次元空間の１つの次元の軸の値αを順番に更新し、各αごとに２次元のデータ集合Ｉ（α）を入力する入力手段と、
入力したデータ集合Ｉ（α）を構成する各要素データと、１つ前に入力したデータ集合Ｉ（α−１）を構成する各要素データとの差分を示す要素差分データを算出し、当該要素差分データで構成される差分要素データ集合Ｄ（α）を生成する生成手段と、
該生成手段により生成された差分要素データ集合Ｄ（α）を予測符号化する符号化手段と
を備えることを特徴とする符号化装置。
【請求項２】
前記多次元空間は３次元空間であることを特徴とする請求項１に記載の符号化装置。
【請求項３】
前記符号化手段は、
差分要素データ集合Ｄ（α）中の着目している要素差分データをＤｉとし、当該着目している要素差分データＤｉの近傍に位置し、符号化処理済みの３つの要素差分データをＤａ，Ｄｂ，Ｄｃとしたとき、
着目している要素差分データＤｉに対する予測値ｐを次式に従って算出し、
ｐ＝Ｄａ＋Ｄｂ−Ｄｃ
着目している要素差分データＤｉと前記予測値ｐとの差である予測誤差を符号化する
ことを特徴とする請求項１又は２に記載の符号化装置。
【請求項４】
符号化対象の前記多次元空間は、異なる２つの色空間の変換用のカラープロファイルデータに含まれるカラールックアップテーブルであり、
更に、前記カラープロファイルデータからカラールックアップテーブルを抽出するＣＬＵＴ抽出手段と、
前記符号化手段により得られる多次元データの符号化データで、前記カラープロファイルデータに含まれるカラールックアップテーブルを置き換える更新手段と
を備えることを特徴とする請求項１乃至３のいずれか１項に記載の符号化装置。
【請求項５】
前記カラープロファイルデータはＩＣＣプロファイルデータであることを特徴とする請求項４に記載の符号化装置。
【請求項６】
前記多次元空間の１つの次元の軸は、前記符号化手段において生成される符号量が少なくなるように選択されることを特徴とする請求項１に記載の符号化装置。
【請求項７】
Ｍ（Ｍ≧３）次元で表わされる多次元空間における要素データを符号化する符号化装置の制御方法であって、
前記多次元空間の１つの次元の軸の値αを順番に更新し、各αごとに２次元のデータ集合Ｉ（α）を入力する入力工程と、
入力したデータ集合Ｉ（α）を構成する各要素データと、１つ前に入力したデータ集合Ｉ（α−１）を構成する各要素データとの差分を示す要素差分データを算出し、当該要素差分データで構成される差分要素データ集合Ｄ（α）を生成する生成工程と、
該生成工程により生成された差分要素データ集合Ｄ（α）を予測符号化する符号化工程と
を備えることを特徴とする符号化装置の制御方法。
【請求項８】
前記多次元空間は３次元空間であることを特徴とする請求項７に記載の符号化装置の制御方法。
【請求項９】
コンピュータが読込み実行することで、前記コンピュータを請求項１乃至６のいずれか１項に記載の符号化装置として機能させることを特徴とするコンピュータプログラム。
【請求項１０】
請求項１に記載の符号化装置により生成された符号化データを復号する復号装置であって、
符号化データを入力する入力手段と、
入力した符号化データを復号し、差分要素データ集合Ｄ（α）を生成する第１の復号手段と、
１つ前に復号したデータ集合Ｉ（α−１）と、前記第１の復号手段で生成された差分要素データ集合Ｄ（α）とを加算することで、着目データ集合Ｄ（α）を生成する第２の復号手段と
を備えることを特徴とする復号装置。
【請求項１１】
前記第１の復号手段は、
差分要素データ集合Ｄ（α）中の着目データをＤｉとし、当該着目データの近傍に位置し、復号済みのデータをＤａ，Ｄｂ，Ｄｃとしたとき、
着目データＤｉに対する予測値ｐを次式で算出し、
ｐ＝Ｄａ＋Ｄｂ−Ｄｃ
着目データＤｉの値と前記予測値ｐとの和を算出することで、前記差分要素データ集合Ｄ（α）中の着目位置のデータを復号する
ことを特徴とする請求項１０に記載の復号装置。
【請求項１２】
前記復号対象の符号化データは、異なる２つの色空間の対応を示したカラープロファイルデータに含まれるカラールックアップテーブルの符号化データであり、
更に、カラープロファイルデータからカラールックアップテーブルの符号化データを抽出する抽出手段と、
前記第２の復号手段により復号された多次元データで、カラープロファイルデータに含まれるカラールックアップテーブルの前記符号化データを置き換えてカラープロファイルデータを復元する更新手段と
を備えることを特徴とする請求項１０又は１１に記載の復号装置。
【請求項１３】
前記更新手段により復元されるカラープロファイルデータはＩＣＣプロファイルデータであることを特徴とする請求項１２に記載の復号装置。
【請求項１４】
請求項１に記載の符号化装置により生成された符号化データを復号する復号装置の制御方法であって、
符号化データを入力する入力工程と、
入力した符号化データを復号し、差分要素データ集合Ｄ（α）を生成する第１の復号工程と、
１つ前に復号したデータ集合Ｉ（α−１）と、前記第１の復号工程で生成された差分要素データ集合Ｄ（α）とを加算することで、着目データ集合Ｄ（α）を生成する第２の復号工程と
を備えることを特徴とする復号装置の制御方法。
【請求項１５】
コンピュータが読込み実行することで、前記コンピュータを請求項１０乃至１３のいずれか１項に記載の復号装置として機能させることを特徴とするコンピュータプログラム。
【請求項１６】
請求項９又は１５に記載のコンピュータプログラムを格納したことを特徴とするコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は多次元データの符号化、復号技術に関するものである。
【背景技術】
【０００２】
スキャナ、デジカメ、プリンタなどの画像入／出力装置は、それぞれ固有の色空間の画像の入力、或いは出力を行なう。これら固有の色空間を持つデバイス間で、カラー画像データを交換する場合、各デバイス独自の色とデバイスに依存しない色とを対応付けるカラープロファイルが用いられる。カラープロファイルの形式としては、International Colour Consortium(ICC)が策定したフォーマット（ICCプロファイル）が良く知られている。
【０００３】
多くの場合、カラープロファイルには異なる２つの色空間を対応づけるカラーのルックアップテーブルが含まれている。このようなカラールックアップテーブルは複数成分を有する多次元配列データとみることができる。例えば、入力デバイスのＲＧＢカラーとＬａｂなどデバイスに依存しない標準色空間への対応を示したカラールックアップテーブルは、３次元３成分の多次元配列である。また、標準色空間と出力デバイスのＣＭＹＫデータとの対応づけるカラールックアップテーブルは、３次元４成分の多次元配列である。更に、ＣＭＹＫと表示デバイスでのｓＲＧＢへの対応を示したカラールックアップテーブルは４次元３成分の多次元配列と見ることができる。
【０００４】
近年、カラー画像デバイスの高精度化により、このようなカラールックアップテーブルの各要素のデータ表現も８ビットから１６ビットへと増加している。また、２つの色空間のマッピング方法も単一ではなく、用途に応じて使い分けられるように複数個定義されることがある。
【０００５】
複数の入力、出力デバイスに対応してカラーマッチングを行う画像処理装置用のソフトウェアを配布する場合には、そのアプリケーションと一緒に、対応するカラープロファイルデータを配布する必要がある。
【０００６】
カラープロファイルの数が増えていくと、アプリケーションソフトウェアを記憶メディアに格納して配布する場合には多くの記憶容量を必要とするといった問題や、インターネット上でのダウンロードにより配布する場合には、伝送時間がかかってしまう。
【０００７】
かかる点に鑑み、例えば特許文献１は、プロファイルのカラールックアップテーブルを蛇行スキャンして１次元化し、前値との差分をランレングス、ハフマン符号化、ＬＺ符号化などを用いて符号化する手法を開示している。
【特許文献１】特開平１１−１７９７１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、上記のような一元化する場合の圧縮率は高いものとは言えず、未だ、カラールックアップテーブルに適した圧縮手法は確立していないのが現状である。
【０００９】
本願発明は、上述の問題点に鑑みてなされたものである。すなわち、本発明は、カラールックアップテーブルのような空間内の隣接する要素が互いに相関度の高い関係を有する多次元データを、簡単な構成で、高い圧縮率で可逆符号化すると共に、その符号化データを復号する技術を提供しようとするものである。
【課題を解決するための手段】
【００１０】
この課題を解決するため、例えば本発明の多次元データの符号化装置は以下の構成を備える。すなわち、
Ｍ（Ｍ≧３）次元で表わされる多次元空間における要素データを符号化する符号化装置であって、
前記多次元空間の１つの次元の軸の値αを順番に更新し、各αの値毎に２次元のデータ集合Ｉ（α）を入力する入力手段と、
入力したデータ集合Ｉ（α）を構成する各要素データと、１つ前に入力したデータ集合Ｉ（α−１）を構成する各要素データとの差分を示す要素差分データを算出し、当該要素差分データで構成される差分要素データ集合Ｄ（α）を生成する生成手段と、
該生成手段により生成された差分要素データ集合Ｄ（α）を予測符号化する符号化手段とを備える。
【発明の効果】
【００１１】
本発明によれば、カラールックアップテーブルのような空間内の隣接する要素が互いに相関度の高い関係を有する多次元データを、簡単な構成で、高い圧縮率で可逆符号化すると共に、その符号化データを復号することが可能になる。
【発明を実施するための最良の形態】
【００１２】
以下、添付図面に従って本発明に係る実施形態を詳細に説明する。
【００１３】
＜第１の実施形態＞
先ず、多次元データの代表として色空間の変換用のカラールックアップテーブルを構成するデータを符号化する多次元データ符号化装置を説明する。
【００１４】
図１は本第１の実施形態に係る多次元データ符号化装置のブロック構成図である。
【００１５】
図１に示すように、本実施形態に係る装置は、多次元データ入力部１０１、プレーンバッファ１０２、プレーン間差分生成部１０３、バッファ１０４、多値データ予測部１０５、予測誤差生成部１０６、予測誤差符号化部１０７、ハフマンテーブル用メモリ１０８、符号列形成部１０９、及び、装置全体の制御を司る制御部１５０を備える。同図において１１０、１１１、１１２は信号線を表す。なお、本実施形態では、多次元データ入力部１０１は、予め符号化対象となる多次元データを記憶してある記憶媒体をアクセスする装置とする。しかしながら、そのデータがネットワーク上のサーバに格納されている場合には、ネットワークインタフェースで構成しても良く、その種類は問わない。
【００１６】
以下、図１を参照して、本第１の実施形態の多次元データ符号化装置の処理について説明する。
【００１７】
まず、前提として、本第１の実施形態に係る多次元データ符号化装置において処理対象となる多次元データは、Ｘ，Ｙ、Ｚの３軸を有する３次元配列であるとする。また、３次元配列の各要素は１６ビットで表現される非負の整数値データ（以降、多値データと称する）であるとする。そして、この多次元データの範囲は、各座標軸Ｘ，Ｙ，Ｚについて“０”から“Ｎ−１”までの範囲とする。すなわち、多次元データは、Ｎ×Ｎ×Ｎ個の多値データで構成されるものとする。１つのデータは座標軸Ｘ，Ｙ，Ｚの各値ｘ，ｙ，ｚで特定できるので、その多次元データＩ（ｘ，ｙ，ｚ）と表す。なお、多次元データＩ（ｘ，ｙ，ｚ）で示される多値データはＮ×Ｎ×Ｎ個の３次元配列に限らず、４次元の配列であっても良い。また、Ｎ×Ｍ×Ｌ個といった具合に各次元と取り得る範囲が異なっても構わない。
【００１８】
また、座標（ｘ，ｙ，ｚ）で特定される３次元配列の要素が、例えばＩ０（ｘ，ｙ，ｚ）、Ｉ１（ｘ、ｙ、ｚ）、…、Ｉｎ（ｘ，ｙ，ｚ）といった具合に、複数の成分値を有するものであっても構わない。これは、カラールックアップテーブルの場合に相当するが、説明を単純なものとするため、実施形態では、１つの座標につき、１つデータ（先に説明したように１６ビットの多値データ）が格納される多次元データを符号化対象とする。なお、各要素のビット数も１６にビットに限らず、８、１０、１２ビットなどであっても良い。上記はあくまで一例であると認識されたい。
【００１９】
図２は、本実施形態で入力される多次元データの概略図である。実施形態では、各次元の長さがＮとしているので、図示の如く、３方が長さＮの立方体形状を成している。
【００２０】
まず、多次元データ入力部１０１は、符号化対象の多次元データを構成する個々の多値データを入力される。多値データの入力順はＺ軸のパラメータｚを０からＮ−１に向けて順番に変化させる。そして、パラメータｚの値で定義される、パラメータｘ、ｙで表わされる平面を以下プレーンと呼ぶ。多値データは、このプレーンのラスタースキャン順に入力されるものとする。符号化対象が３次元空間であるのに対し、１つのプレーンはそれより１次元少ない２次元の要素の集合とも言える。
【００２１】
図３（ａ）で斜線で示した部分は、ｚ＝０に固定して、ｘ、ｙを変化させて構成されるプレーンである。最初に、このプレーンを構成する多値データがラスタースキャン順に入力される。そして、続いてｚ＝１、ｚ＝２、…、ｚ＝Ｎ−１まで、順番に各プレーンの多値データがラスタースキャン順に走査されて入力される。
【００２２】
図３（ｂ）は、０≦α＜N（但し、値αは非負の整数）の任意の値αについて、ｚ＝αとしたプレーン（データ集合Ｉ（α））を図示したものである。以降の説明において、個々のプレーンを指す場合には、ｚ＝０であるプレーンをプレーンｚ０、ｚ＝１であるプレーンをプレーンｚ１というように、記号ｚとその値を「プレーン」に後続させて表現する。従って、図３（ｂ）に示されるプレーンは「プレーンｚα」と表現できる。
【００２３】
プレーンバッファ１０２は１プレーン分の多値データ、即ち、Ｎ×Ｎ個の多値データを格納するための領域を持つＦＩＦＯのバッファで構成される。このプレーンバッファ１０２は内部に常にＮ×Ｎ個の要素を保持し、多値データ入力部１０１から入力される多値データＩ（ｘ，ｙ，ｚ）を格納すると同時に、１プレーン前のデータＩ（ｘ，ｙ，ｚ−１）を出力する。符号化開始時は、プレーンバッファ１０２に格納されるＮ×Ｎ個のデータは全て“０”に初期化される。この初期化されたデータは、多値画素データＩ（ｘ，ｙ，０）を入力した際のＩ（ｘ，ｙ，−１）に相当するデータと言えば分かりやすい。
【００２４】
プレーン間差分生成部１０３は、多次元データ入力部１０１から信号線１１０を介して入力される要素の多値データＩ（ｘ，ｙ，ｚ）と、プレーンバッファ１０２から出力されてくる１つ前のプレーンの要素の多値データＩ（ｘ，ｙ，ｚ−１）の差分を求める。これは、要素データ集合Ｉ（ｚ）と要素集合Ｉ（ｚ−１）との差分を算出することに相当する。プレーン間差分生成部１０３は、更に、差分のビット数の増加を抑えるために２＾１５（ここで「ｉ＾ｊ」は値ｉのｊ乗を表わす）をその差分に加算した後に、その加算結果の２^１６の剰余演算を行ってプレーン間差分値Ｄ（ｘ，ｙ，ｚ−１）を生成する。これは差分要素データ集合Ｄを算出するとも言える。プレーン間差分値Ｄ（着目要素差分データ）は次式で表される。
Ｄ（x,y,z）＝Ｍｏｄ（Ｉ(x,y,z)−Ｉ(x,y,z-1) ＋ 2^15 , 2^16 )
上式において、Ｍｏｄ（ｉ，ｊ）は整数値ｉを整数ｊで割った剰余を表す。値ｊは正の整数である。  値ｉは非負の整数の場合には説明は不要であろう。そこで、値ｉが負の場合について簡単に説明する。
【００２５】
値ｉは、ｉ＝ｎ×ｍ ＋ｒの式を満たす０からｍ−１の範囲の整数値ｒを持つものと見なす。例えば、値ｉ＝−５，除数が“３”のＭｏｄ（−５，３）の場合、
条件１：ｉ＝−５＝ｎ×３＋ｒ
条件２：０≦ｒ≦２
を満たさなければならないわけであるから、ｎ＝−２、ｒ＝１となる。すなわち、Ｍｏｄ（−５，３）は、Ｍｏｄ（１，３）と見なして演算する。
【００２６】
上記を更に分かりやすく説明すると次の通りである。説明を簡単なものとするため、２つの値Ｖａ，Ｖｂが共に８ビットで表わされる非負の整数であるものとする。値Ｖａ，Ｖｂは共に８ビットであるから、それぞれの取り得る範囲は０〜２５５の値であり、これ以外はあり得ないことに注意されたい。減算「Ｖａ−Ｖｂ」は、単純には−２５５〜＋２５５の値を取り得る。しかし、Ｖａが“０”の場合、「Ｖａ−Ｖｂ」の値は、必ず−２５５〜０の範囲、すなわち、２５６種類中の１つの値となる。一方、Ｖｂが“０”の場合には、「Ｖａ−Ｖｂ」の値は０〜＋２５５、やはり、２５６種類中の１つの値となる。つまり、８ビットで表わされる２つの値の減算結果は、常に２５６種類の中の１つとなる、と言える。この減算結果に中間値１２８を加算して、２５６で剰余（あまり）を求めることで、減算結果を０〜２５５の値にマッピングできる。Ｖａ＝０の例では、−２５５〜−１２９の値は１２９〜２５５に、−１２８〜０の値は０〜１２８に割り当てられる。また、Ｖｂ＝０の例では、０〜１２７の値は１２８〜２５５に、１２８〜２５５の値は０〜１２７に割り当てられる。
【００２７】
さて、上記のようにして生成されるプレーン間差分値Ｄ（ｘ，ｙ，ｚ）は入力多値データＩ（ｘ，ｙ，ｚ）と同じビット数の情報となる。
【００２８】
バッファ１０４は信号線１１１から入力されるプレーン間差分値Ｄ（ｘ，ｙ，ｚ）をＮ＋１個分格納する容量を有する。
【００２９】
図４の斜線部はＤ（ｘ，ｙ，ｚ）の入力時点でバッファ１０４に格納されるＮ＋１個のプレーン間差分値Ｄデータを模式的に示したものである。以下、この座標（ｘ，ｙ，ｚ）のプレーン間差分値Ｄ（ｘ，ｙ，ｚ）を、着目データＤｉ（要素差分データＤｉとも言う）と表現する。また、着目データＤｉの近傍に位置し、符号化処理済みの３つのデータをＤａ，Ｄｂ，Ｄｃとし、それら３つのデータを着目データＤｉの近傍データと呼ぶ。図５は、着目データＤｉ（図示の＊印）と、近傍データＤａ，Ｄｂ，Ｄｃとの相対位置関係を示している。近傍データＤａ，Ｄｂ，Ｄｃは次のように表わせる。
Ｄａ＝Ｄ（ｘ−１，ｙ，ｚ）（すなわち、着目データの左隣位置にあるデータ）
Ｄｂ＝Ｄ（ｘ，ｙ−１，ｚ）（すなわち、着目データの真上位置にあるデータ）
Ｄｃ＝Ｄ（ｘ−１，ｙ−１，ｚ）（すなわち、着目データの左上位置にあるデータ）
【００３０】
多値データ予測部１０５は、着目データＤｉの入力のタイミングに同期して、バッファ１０４をアクセスし、バッファ１０４内の着目データＤｉの近傍データＤａ，Ｄｂ，Ｄｃを入力する。そして、多値データ予測部１０５は、着目データＤｉの予測値ｐを以下の予測式に従って算出し、その算出した予測値ｐを予測誤差生成部１０６に出力する。
ｐ＝Ｄａ＋Ｄｂ−Ｄｃ
【００３１】
なお、予測値ｐの算出には例外がある。着目データＤｉの座標がプレーンの左上隅位置（Ｘ、Ｙ座標が共に“０”）にあるとき、近傍データＤａ，Ｄｂ，Ｄｃはいずれもプレーン外となってしまう。この場合には、多値データ予測部１０５は、予測値ｐを“３２７６８”（１６ビットで表わされる最大値の半分の値）であるものとして出力する。また、着目データＤｉの座標がプレーンの左上隅位置以外の、最初のライン上にある場合（Ｙ座標が“０”）には、多値データ予測部１０５は、データＤａを予測値ｐとして出力する。そして、着目データＤｉの座標がプレーンの左上隅位置以外の、左端位置にある場合（Ｘ座標が“０”）、多値データ予測部１０５は、データＤｂを予測値ｐとして出力する。なお、この例外ルールは、復号装置と同じにすれば良いので、上記によって本発明が限定されるものではない。
【００３２】
予測誤差生成部１０６は信号線１１１を介して入力した着目データＤｉ（＝プレーン間差分値Ｄ（ｘ，ｙ，ｚ））と、多値データ予測部１０５から入力した予測値ｐとの差分値を求め、その差分値を予測誤差ｅとして予測誤差符号化部１０７に出力する。
【００３３】
予測誤差符号化部１０７は、まず、予測誤差生成部１０６から入力される予測誤差ｅが複数のグループのいずれに分類できるかを判定し、そのグループ番号ＳＳＳＳと、グループごとに定められるビット長の付加ビットを生成する。
【００３４】
図６に予測誤差ｅとグループ番号ＳＳＳＳの関係を示す。付加ビットはグループ内で予測誤差を特定するための情報であり、そのビット長はグループ番号ＳＳＳＳで与えられる。なお、ＳＳＳＳ＝１６である場合には例外的に付加ビットのビット長は０である。また、予測誤差ｅが正であるならば予測誤差ｅの下位ＳＳＳＳビットが付加ビットとなり、負である場合にはｅ−１の下位ＳＳＳＳビットが付加ビットとなる。付加ビットの最上位ビットは予測誤差ｅが正であれば１、負であれば０となる。予測誤差符号化部１０７の予測誤差ｅに対する符号の生成処理は、先ず、ハフマンテーブル用メモリ１０８に格納されているハフマンテーブル（図７）を参照して、グループ番号ＳＳＳＳに対応する符号化データを出力する。次いで、ＳＳＳＳが０または１６でない場合には、続いてグループ番号により定まるビット長の付加ビットを出力する、という順序で行われる。
【００３５】
符号列形成部１０９は、符号化処理の初期段階で、付加情報（ヘッダ）を生成し、信号線１１２上に出力する。この付加情報は、符号化対象となる多次元データのＸ，Ｙ，Ｚ軸方向の要素数（本実施形態の場合は全てＮ）、多次元データの各要素を構成する成分の数（本実施形態では１）、各成分の精度（実施形態では１６ビット）や、予測誤差符号化部１０７で使用したハフマンテーブルの情報など復号時に必要とされる情報である。そして、符号列形成部１０９は、そのヘッダに後続して、予測誤差符号化部１０７から出力される各プレーンの符号化データを信号線１１２上に出力する。この結果、信号線１１２を介して出力された符号化データは、図８の構造を持つことになる。なお、信号線１１２の出力先はハードディスク等の記憶媒体或いは記憶装置とするが、ネットワークとしても良く、その出力先の種類は問わない。
【００３６】
次に、上記多次元データ符号化装置で生成された符号化データを復号する復号装置について説明する。図９は復号装置のブロック構成図である。本装置は、図示の如く、符号バッファ９０１、ヘッダ解析部９０２、予測誤差復号部９０３、プレーン間差分復号部９０４、多次元データ復号部９０５、多次元データ出力部９０６、ハフマンテーブル用メモリ１０８、バッファ１０４、多値データ予測部１０５、プレーンバッファ１０２、及び、装置全体の制御を司る制御部９５０とを備える。同図において９０７、９０８は信号線を示す。図１に示した符号化側のブロックと同じ動作をするブロックについては同じ番号を付し、説明を省略する。
【００３７】
以下、本実施形態の復号装置の各処理部の処理内容について説明する。
【００３８】
復号対象となる符号化データは信号線９０７から順に入力され、符号バッファ９０１に格納される。バッファ９０１には、全符号化データを格納しても良いし、後述する復号処理によって復号処理によって空エリアが発生する都度、符号化データを入力し、格納するようにしても構わない。
【００３９】
ヘッダ解析部９０２は符号バッファ９０１に格納される符号化データのヘッダ部分を解析し、付加情報を抽出する。付加情報は先に説明したように、ハフマンテーブルに関する情報、多次元データのＸ，Ｙ，Ｚ軸方向の要素数、各要素を構成する成分の数、各成分の精度（ビット数）などの情報である。ヘッダ解析部９０２は、抽出した付加情報を制御部９５０に通知する。制御部９５０は、ヘッダ解析部９０２からの付加情報を受けとると、先ず、プレーンバッファ１０２内のＮ×Ｎ個のデータ（１６ビット）を“０”クリアする。そして、制御部９５０は、付加情報に基づき、各処理部に復号処理に必要な設定を行ない、復号処理を開始させる。なお、ヘッダ解析部９０２は、ヘッダより取り出したハフマンテーブルのデータをハフマンテーブル用メモリ１０８に格納する。ここでは符号化装置と同様に、図７のハフマンテーブルがハフマンテーブル用メモリ１０８に格納されるものとして説明する。
【００４０】
予測誤差復号部（第１の復号部として機能する）９０３は符号バッファ９０１から必要な長さのビットデータを取り出し、ハフマンテーブル用メモリ１０８に格納されるハフマンテーブルを参照して、着目するプレーン間差分値の予測誤差ｅを復号して出力する。予測誤差ｅの復号は上述の予測符号化部１０７の処理を逆の手順で行うことにより実施される。即ち、まず、ハフマンテーブル用メモリ１０８を参照して予測誤差ｅのグループ番号ＳＳＳＳを復号する。グループ番号ＳＳＳＳが０または１６でない場合には続いてグループ番号により定まるビット長で付加ビットを取得する。グループ番号ＳＳＳＳと付加ビットから予測誤差ｅを復号し、プレーン間差分復号部９０４へと出力する。
【００４１】
多値データ予測部１０５では先に述べた符号化時と同じ動作により、バッファ１０４に格納されている既に復号済みのプレーン間差分値Ｄａ，Ｄｂ，Ｄｃから、着目プレーン間差分値Ｄｉの予測値ｐを生成する。
【００４２】
プレーン間差分復号部９０４では多値データ予測部１０５から出力される予測値ｐと予測誤差復号部９０３から出力される予測誤差ｅとを加算して着目プレーン間差分値Ｄｉを復元し、信号線９０８へと出力する。
【００４３】
多次元データ復号部（第２の復号部として機能する）９０５は、プレーン間差分復号部９０４から出力される着目プレーン間差分値Ｄｉ（＝Ｄ（ｘ，ｙ，ｚ））と、直前のプレーンの多値データＩ（ｘ，ｙ，ｚ−１）を取り出す。そして、多次元データ復号部９０５は、プレーン間差分生成部１０３の処理と逆の手順により、着目位置の多値データ Ｉ（ｘ，ｙ，ｚ）を復号する。復号した多値データＩ（ｘ、ｙ、ｚ）は、多次元データ出力部９０６へと渡されると共に、プレーンバッファ１０２へと格納される。
【００４４】
多次元データ出力部９０６は、復号した多次元データを装置外部に出力するものであり、本実施形態においては記憶媒体であるとするが、ネットワークへのインターフェース等、その種類は問わない。
【００４５】
以上であるが、ここで３次元配列の要素 Ｉ （ｘ，ｙ，ｚ）を符号化する場合について考察する。この場合の、多値データ予測部１０５で生成される予測値をＰ（ｘ，ｙ，ｚ）、予測誤差符号化部１０７で符号化される予測誤差ｅをＥ（ｘ、ｙ、ｚ）と表すと、予測誤差Ｅ（ｘ，ｙ，ｚ）は次式によって表わされる。
Ｅ(x,y,z) ＝Ｄ(x,y,z)−Ｐ(x,y,z）
＝Ｄ(x,y,z)−｛Ｄ(x-1,y,z)＋Ｄ(x,y-1,z)−Ｄ(x-1,y-1,z）｝
ここで、Ｄ（ｘ，ｙ，ｚ）は、多値データＩ（ｘ、ｙ、ｚ）とＩ（ｘ，ｙ，ｚ−１）の差分であるから、上式は更に次のように展開できる。
Ｅ(x,y,z) ＝｛Ｉ(x,y,z)−Ｉ(x,y,z-1)}
−｛Ｉ(x-1,y,z)-Ｉ(x-1,y,z-1)＋Ｉ(x,y-1,z)-Ｉ(x,y-1,z-1)
＋Ｉ(x-1,y-1,z)-Ｉ(x-1,y-1,z-1)｝
＝Ｉ(x,y,z)−{Ｉ(x-1,y,z)＋Ｉ(x,y-1,z)＋Ｉ(x-1,y-1,z)｝−
｛Ｉ(x,y,z-1)−｛Ｉ(x-1,y,z-1)＋Ｉ(x,y-1,z-1)＋Ｉ(x-1,y-1,z-1)｝｝
これは要素Ｉ（ｘ，ｙ，ｚ）を、予測値Ｐ’（ｘ、ｙ、ｚ）＝Ｉ（ｘ−１，ｙ，ｚ）＋Ｉ（ｘ，ｙ−１，ｚ）- I(ｘ−１、ｙ−１、ｚ)で符号化する場合に、直前のプレーンで発生した予測誤差Ｅ’（ｘ、ｙ、ｚ−１）＝Ｉ（ｘ，ｙ，ｚ−１）−｛Ｉ（ｘ−１，ｙ，ｚ−１）＋Ｉ（ｘ，ｙ−１，ｚ−１）− I(ｘ−１、ｙ−１、ｚ−１) ｝をフィードバックしていることを示している。従って、プレーン間で予測誤差がＥ’が近い値をもつような多次元ルックアップテーブルの場合、圧縮率は非常に高いものとすることができるのが理解できよう。
【００４６】
以上説明したように本実施形態によれば、カラールックアップテーブルのように多次元（３次元以上）データの多次元空間内の隣接するデータの差が十分に小さいことを利用して可逆符号化している。従って、オリジナルの多次元データに対して高い圧縮率で可逆の符号化データを生成することが可能になる。
【００４７】
なお、実施形態では、３次元空間中の１つの要素は１成分で構成されるものとしたが、１要素は複数成分を備える場合にも適用できる。例えば、デバイス依存のＲＧＢ空間を標準色空間Ｌａｂに変換するルックアップテーブルの場合、Ｒ、Ｇ、Ｂの各成分値が座標値とし、その座標値で特定される要素は（Ｌ，ａ，ｂ）の３つの成分値を持つことになる。この場合、それぞれの成分毎に上記処理を行なえば良いのは明らかである。
【００４８】
また、実施形態では、次元数を“３”の例を説明したが、次元数は“３”に限定されるものではない。ここでは、Ｍ次元（Ｍは３以上の値である）のデータについて考察する。１つの要素はＭ個の座標軸Ｑ0、Ｑ1、Ｑ2、Ｑ3、…、ＱM-1の各座標値で特定される。各座標軸における座標値をｑ0，ｑ1，ｑ2、…、ｑM-1とすると、１つの要素のデータはＩ（ｑ0，ｑ1，ｑ2，…ｑM-1）と定義できる。このＭ次元の空間を、そのＭ次元に特化したスキャン方向にスキャンして符号する場合について考察する。
【００４９】
この場合、或る座標軸、例えば最後の座標軸ＱM-1の値ｑM-1＝αである仮想２次元プレーン「α」（実際はＭ−１次元の空間であるが敢えてこのように表現する）と定義した場合、この多次元データは仮想２次元プレーンの集合と見ることができる。そこで、仮想２次元プレーン「α」と、仮想２次元プレーン「α−１」と差分を、先に示した仮想プレーン間差分値Ｄ（ｑ0，ｑ1，…,ｑM-2,α）として求める。
Ｄ(q0,q1,…,qM-2,α)＝Ｉ(q0,q1,…qM-2,…,α)−Ｉ(q0,q1,…,qM-2,α−１)
【００５０】
これ以降は、上記と同様に、着目データＤｉ（＝Ｄ（q0,q1,…,qM-2,α））の近傍の、符号化済みの座標位置にある１つ又は複数のプレーン間差分値Ｄから予測値ｐを求め、着目データＤｉと予測値ｐとの差分を予測誤差として符号化することで、Ｍ次元の着目データ集合Ｄの符号化データを生成することができる。
【００５１】
なお、上記実施形態では、符号化側と復号側の装置がそれぞれ別々の装置であるものとしたが、１つの装置内にこの２つの機能を持つものでも構わない。
【００５２】
＜第１の実施形態の変形例＞
上記第１の実施形態を、例えばパーソナルコンピュータ等の汎用の情報処理装置のソフトウェア（コンピュータプログラム）でもって、上記と等価の処理を行なうことも可能である。
【００５３】
図１０は本変形例に係る情報処理装置の基本構成を示す図である。
【００５４】
図中、１４０１は装置全体の制御を司るＣＰＵである。１４０２はＣＰＵ１４０１のワークエリアとして使用するＲＡＭであり、１４０３はＢＩＯＳ及びブートプログラムを格納しているＲＯＭである。１４０４はキーボード、１４０５はポインティングデバイスの１つであるマウスである。１４０６は表示制御部であって、内部にはビデオメモリ及びＣＰＵ１４０１の制御によってビデオメモリへの描画、及び、ビデオメモリに可能されたデータをビデオ信号として表示装置１４１２に出力する表示コントローラを内蔵している。表示装置１４１２はＣＲＴや液晶表示装置である。１４０７はハードディスク装置等の外部記憶装置であり、これにはＯＳ（オペレーティングシステム）、多次元データ処理を行なうアプリケーションプログラムが格納されている。なお、外部記憶装置１４０７は、各種アプリケーションで作成されたファイルを格納するためにも利用される。１４０８は記憶媒体ドライブであり、フレキシブルディスク、メモリカード、ＣＤ−ＲＯＭ等の記憶媒体に対してリード／ライトを行なう。１４０９は本装置とイメージスキャナ１４１１とを接続するためのスキャナインタフェース（ＵＳＢやＳＣＳＩインタフェース等）ある。１４１３はネットワークインタフェースである。
【００５５】
本装置の電源がＯＮになると、ＣＰＵ１４０１はＲＯＭ１４０３のブートプログラムに従って、外部記憶装置１４０７からＯＳをＲＡＭ１４０２にロードする。この結果、ＯＳの制御の下で、表示制御部１４０６にＧＵＩを描画して、表示装置１４１２にそのＧＵＩを表示させる。操作者は、表示装置１４１２の表示を見て、キーボード１４０４やマウス１４０５を操作することになる。ここで、多次元データ処理アプリケーションの起動指示が操作者より与えられると、ＣＰＵ１４０１は外部記憶装置１４０７内の多次元データ処理アプリケーションプログラムをＲＡＭ１４０２にロードし、実行する。この結果、本装置が多次元データ処理装置として機能することになる。
【００５６】
ＣＰＵ１４０１が多次元データ処理アプリケーションを実行し、操作者より符号化対象となる画像の入力指示を受けると、外部記憶装置１４０７から多次元データ、またはその符号化データを入力し、符号化、復号を行なうことになる。符号化結果、復号結果は、外部記憶装置１４０７にファイルとして格納する。
【００５７】
ここで、多次元データ処理アプリケーションは、図１に示す各構成要素に相当するモジュール（サブルーチン、関数と言い換えることもできる）、或いは図９に示す各構成要素に相当するモジュールを有する。ただし、プレーンバッファ１０２、バッファ１０４、符号バッファ１０９については、ＲＡＭ１４０２に確保されることになる。
【００５８】
図１１は、本実施形態に係る多次元データ処理装置による符号化処理の流れを示すフローチャートである。以下、同図のフローチャートに従い、ＣＰＵ１４０１が実行する手順（多次元データ処理アプリケーションの符号化処理）を説明する。なお、説明を簡単なものとするため、符号化対象のデータは第１の実施形態と同様３次元ルックアップテーブルであり、１つの要素は１つの成分で構成されており、ルックアップテーブルの取り得る範囲は各座標軸とも０乃至Ｎ−１であるものとして説明する。
【００５９】
まず、符号化処理の開始に先立ち、装置の初期化処理が行われる（ステップＳ１１００）。プレーンバッファ１０２の初期値設定はこのタイミングで行われ、Ｎ×Ｎ個のデータの初期値として０が設定される。続いて、符号化対象の多次元データに関する情報や、ハフマンテーブルの情報からファイルヘッダを生成し、外部記憶装置１４０７に書き込む（ステップＳ１１０１）。次いで、ステップＳ１１０２、Ｓ１１０３、Ｓ１１０４において、変数ｚ、ｙ、ｘをそれぞれ“０”に初期化する。
【００６０】
ステップＳ１１０５では、多値データ Ｉ（ｘ，ｙ，ｚ）を着目データとして入力する。ステップＳ１１０６において、着目多値データＩ（ｘ，ｙ，ｚ）と直前のプレーンのＸ、Ｙ座標値が着目多値データと同じ多値データＩ（ｘ，ｙ，ｚ−１）との差分をプレーン間差分Ｄ（ｘ，ｙ，ｚ）として算出する。続いて、ステップＳ１１０７にて予測値ｐを算出し、予測誤差ｅを算出する。ステップＳ１１０８では予測誤差ｅの符号化処理が行われ、その符号化データをファイルヘッダに後続するデータとして外部記憶装置１４０７に書き込む。
【００６１】
この後、ステップＳ１１０９に進み、変数ｘに“１”を加えることで変数ｘを更新する。そして、ステップＳ１１１０にて、変数ｘの値とＮとを比較する。ｘ＜Ｎであると判断した場合にはステップＳ１１０５へ、ｘ≧Ｎ（実際はｘ＝Ｎ）の場合にはステップＳ１１１１へと処理を移す。
【００６２】
ステップＳ１１１１では、変数ｙに“１”を加え、ステップＳ１１１２で変数ｙの値とＮとを比較する。ｙ＜Ｎである場合にはステップＳ１１０４へと処理を移し、ｙ≧Ｎ（ｙ＝Ｎ）の場合にはステップＳ１１１３へと処理を移す。ステップＳ１１１３では、変数ｚに“１”を加えて更新し、ステップＳ１１４において変数ｚの値とＮとを比較する。ｚ＜Ｎである場合にはステップＳ１１０３に処理を移し、ｚ≧Ｎ（ｚ＝Ｎ）の場合には、本符号化処理を終了する。
【００６３】
以上説明したように、先に説明した第１の実施形態と同様の処理を、コンピュータプログラムにとっても実現できるようになる。
【００６４】
次に、ＣＰＵ１４０１が実行する多次元データ処理アプリケーションの復号処理を図１２のフローチャートに従って説明する。
【００６５】
まず、復号処理の開始に先立ち、装置の初期化処理が行われる（ステップＳ１２００）。プレーンバッファ１０２の初期値設定はこのタイミングで行われ、Ｎ×Ｎ個のデータを初期値“０”に設定する。続いて、復号対象のファイルヘッダを読込み、復号対象の多次元データに関する情報や、ハフマンテーブルの情報をそのヘッダから取得する（ステップＳ１２０１）。ステップＳ１２０２、Ｓ１２０３、Ｓ１２０４にて、変数ｚ，ｙ，ｘをそれぞれを“０”に設定する。
【００６６】
ステップＳ１２０５では、ハフマンテーブルを参照して予測誤差ｅを復号する。そして、ステップＳ１２０６にて、既に復号済みのデータから予測値ｐを求め、予測誤差ｅに予測値ｐを加算することで、プレーン間差分値Ｄ（ｘ，ｙ，ｚ）を復元する。ステップＳ１２０７では、直前のプレーンの復号結果を格納するバッファ中の該当する多値データＩ（ｘ，ｙ，ｚ-1）を読込み、着目プレーン中の着目データを復号し、復号結果を格納する外部記憶装置に出力する。
【００６７】
この後、ステップＳ１２０８に進み、変数ｘに“１”を加えることで変数ｘを更新する。そして、ステップＳ１２０９にて、変数ｘの値とＮとを比較する。ｘ＜Ｎであると判断した場合にはステップＳ１２０５へ、ｘ≧Ｎ（実際はｘ＝Ｎ）の場合にはステップＳ１２１０へと処理を移す。
【００６８】
ステップＳ１２１０では、変数ｙに“１”を加え、ステップＳ１２１１で変数ｙの値とＮとを比較する。ｙ＜Ｎである場合にはステップＳ１２０４へと処理を移し、ｙ≧Ｎ（ｙ＝Ｎ）の場合にはステップＳ１２１２へと処理を移す。ステップＳ１２１２では、変数ｚに“１”を加えて更新し、ステップＳ１２１３において変数ｚの値とＮとを比較する。ｚ＜Ｎである場合にはステップＳ１２０３に処理を移し、ｚ≧Ｎ（ｚ＝Ｎ）の場合には、本復号処理を終了する。
【００６９】
以上説明したように第１の実施形態と同様の機能をコンピュータプログラムによっても実現でき、同様の作用効果を奏することが可能になる。
【００７０】
なお、上記では、符号化対象の多次元データは外部記憶装置１４０７から読み出すものとしたが、符号化対象の多次元データは記憶媒体に格納されていても良いし、ネットワーク上のサーバからダウンロードする場合にも適用可能である。また符号化結果の出力先も、外部記憶装置１４０７に限らず、ネットワークでも構わないし、その出力先は如何なるものでも構わない。
【００７１】
＜第２の実施形態＞
第２の実施形態では、ＩＣＣプロファイルデータの中のカラールックアップテーブルを圧縮してＩＣＣプロファイル圧縮データを符号化する例とそれを復号する例を説明する。
【００７２】
図１３は本第２の実施形態に係る多次元データの符号化装置のブロック構成図である。本第２の実施形態に係る符号化装置は、ＩＣＣプロファイル入力部１３０１、ＩＣＣプロファイル格納用メモリ１３０２、タグテーブル解析部１３０３、ＣＬＵＴ抽出部１３０４、プレーンバッファ１３０５、プレーン間差分変換部１３０６、ＪＰＥＧ可逆符号化部１３０７、ＣＬＵＴ符号化データ格納用メモリ１３０８、ＩＣＣプロファイルデータ形成部１３０９、ＩＣＣプロファイル圧縮データ出力部１３１０、そして、装置全体の制御を司る制御部１３５０を備える。同図において１３１１、１３１２は信号線を示す。
【００７３】
以下、同図を参照して、本第２の実施形態の符号化装置の多次元データであるＩＣＣプロファイルデータの符号化処理について説明する。
【００７４】
ＩＣＣプロファイルは、入力デバイス、出力デバイス、表示デバイスをＰＣＳ（Profile Connection Space）と呼ばれるデバイス非依存の標準色空間を介して結びつけ、カラー画像データの互換性を保つ技術である。この技術は、現在、カラーマネージメントを行う上での標準的な手法として広く利用されている。ＩＣＣプロファイルの詳細については公知であるので、ここでは説明を省略する。
【００７５】
本第２の実施形態に係る符号化装置は、International Colour Consortium (ＩＣＣ)の策定したフォーマットによるカラープロファイルデータ（ＩＣＣプロファイルデータ）を符号化対象とする。図１４にＩＣＣプロファイルデータの構造を図示する。ＩＣＣプロファイルデータは１２８バイトのプロファイルヘッダ（Profile header）１４０１を備える。そして、ヘッダに後続して、タグ付き要素データ（Tagged Element Data）の数を示したタグカウント（Tag Count）１４０２、各タグ付き要素データのタイプを示したシグネチャ、データ格納位置へのオフセット値、及び、データサイズを記述したタグテーブル（Tag Table）１４０４、そして、タグ付き要素データ１４０５から構成される。
【００７６】
特に、本第２の実施形態での符号化対象とするＩＣＣプロファイルデータには、タグ付き要素データに一つのlut16Typeのタグ付き要素データ（図１４の１４０３）が存在するものとする。また、そのタグ付き要素データの他に、カラールックアップテーブル（ＣＬＵＴ）を含むタグ付き要素データを含まないものとする。しかしながら、本発明は同様にlut8Typeのタグ付き要素データや、lutAtoBType、lutBtoATypeのタグ付き要素データに対しても適用可能である。また、このようなタグ付き要素データを複数含むＩＣＣプロファイルデータに対しても適用可能である。複数存在する場合には、以下に説明するlut16Typeのタグ付き要素データに対する処理と同様の処理をそれぞれのタグ付き要素データに対して適用すれば良い。
【００７７】
次に、本第２の実施形態の画像処理装置での各部の動作について説明する。
【００７８】
まず、符号化対象となるＩＣＣプロファイルがＩＣＣプロファイル入力部１３０１から入力される。ＩＣＣプロファイル入力部１３０１は外部記憶媒体へのインターフェース、またはネットワークへのインターフェース等であり、符号化対象となるＩＣＣプロファイルデータを装置内部に取り込む役割を果たす。ＩＣＣプロファイル入力部１３０１は、入力したＩＣＣプロファイルデータを、一旦、ＩＣＣプロファイル格納用メモリ１３０２へ格納する。
【００７９】
ＩＣＣプロファイルデータがＩＣＣプロファイル格納用メモリ１３０２に格納されると、タグテーブル解析部１３０３ではＩＣＣプロファイルのタグテーブルを解析し、lut16Typeのタグ付き要素データを抜き出してＣＬＵＴ抽出部１３０４に送る。
【００８０】
ＣＬＵＴ抽出部１３０４はその内部に不図示のバッファを有し、タグテーブル解析部１３０３により抜き出されたｌｕｔ１６Ｔｙｐｅのタグ付き要素データを格納する。ｌｕｔ１６Ｔｙｐｅのタグ付き要素データはｉ次元の色空間をｏ次元の別の色空間に対応付けるものであり、３×３配列、１次元入力テーブル、多次元カラールックアップテーブル（ＣＬＵＴ）、１次元出力テーブルで構成される。ＣＬＵＴはｉ次元の配列であり、各配列要素がｏ個の成分値を有する。ｌｕｔ１６Ｔｙｐｅのタグ付き要素データには付加情報として、i、ｏの他、ＣＬＵＴの各次元の要素数ｇが記される。ＣＬＵＴ抽出部１３０４はｌｕｔ１６Ｔｙｐｅのフォーマットに従って、ｉ，ｏ，ｇを取得し、ＣＬＵＴの各要素の各成分を順番にプレーン間差分変換部１３０６へ出力する。
【００８１】
ＣＬＵＴには３次元３成分、３次元４成分、４次元３成分などがあるが、本第２の実施形態では３次元３成分であり、各次元の要素数ｇ＝Ｎの場合を例に説明する。従って、本実施形態でのＣＬＵＴの要素数はＮ×Ｎ×Ｎであり、成分の総数はＮ×Ｎ×Ｎ×３である。よってＣＬＵＴの構成は第１の実施形態で符号化対象とした図２の多次元データと同じであり、各要素が３成分で構成されている点が異なる。
【００８２】
Ｘ，Ｙ，Ｚ軸の位置がそれぞれｘ、ｙ、ｚである３次元配列の要素の第１成分をＩ０（ｘ,ｙ,ｚ）、第２成分をＩ１（ｘ,ｙ,ｚ）、第３成分をＩ２（ｘ,ｙ,ｚ）と記す。ｌｕｔ１６Ｔｙｐｅの場合、各成分値は１６ビットで表現される。
【００８３】
プレーンバッファ１３０５はＣＬＵＴ抽出部１３０４から出力される３次元配列の要素を１プレーン分格納する。プレーンの概念は第１実施形態と同じであるが、各要素が３成分で構成されるため、プレーンバッファ１３０５にはＮ×Ｎ×Ｎ×２×３バイト分の容量が必要となる。プレーンバッファ１３０５は符号化処理の開始時点で全ての値を０に初期化する。
【００８４】
プレーン間差分変換部１３０６はＣＬＵＴ抽出部１３０４から出力されるＩｎ（ｘ、ｙ、ｚ）（ｎは０、１，２のいずれか）について、プレーンバッファ１３０５から当該成分値の直前のプレーンの値Ｉｎ（ｘ、ｙ、ｚ−１）を読み出す。そして、プレーン間差分変換部１３０６は、プレーン間差分値Ｄｎ（ｘ、ｙ、ｚ）を生成し、出力する。具体的には以下の式を用いる。
Ｄｎ（ｘ、ｙ、ｚ）＝Ｍｏｄ（Ｉｎ（ｘ、ｙ、ｚ）−Ｉｎ（ｘ、ｙ、ｚ−１）+（２＾１５），（２＾１６））
【００８５】
ＪＰＥＧ可逆符号化部１３０７はプレーン間差分変換部１３０６から順次入力されるＮ×Ｎ×Ｎ個、３成分、各１６ビットのプレーン間差分値Ｄｎ（ｘ、ｙ、ｚ）を水平方向画素数Ｎ、垂直方向画素数Ｎ×Ｎの３成分、１６ビットの画像データとしてＪＰＥＧ（ＩＳＯ／ＩＥＣ  １０９１８−１）に規定される可逆符号化（Ｌｏｓｓｌｅｓｓ  Ｐｒｏｃｅｓｓ）により符号化し、符号化データをＣＬＵＴ符号化データ格納用メモリ１３０８に格納する。ＪＰＥＧの可逆符号化処理については規格書「ＩＴＵ−Ｔ Ｔ．８１｜ＩＳＯ／ＩＥＣ１０９１８−１  Information technology - Digital compression and coding of continuous-tone still images : Requirements and guidelines」や各種解説書に詳細が書かれているのでここでは説明を省略する。
【００８６】
ＪＰＥＧの可逆符号化では予測なしを含めて８通りの予測式を選択することができる。ここでは、ここでは予測式の選択番号ｍ＝４、すなわち、Ｐｘ＝Ｒａ＋Ｒｂ−Ｒｃを使用する（詳しくは、上記規格書のＡｎｎｅｘ Ｈ  Ｔａｂｌｅ Ｈ．１ - Predictors for lossless codingを参照されたい）。なお、本第２の実施形態では水平方向画素数をＮ、垂直方向画素数をＮ×Ｎとしているが、水平方向画素数をＮ×Ｎ、垂直方向画素数をＮとして符号化しても構わない。
【００８７】
ＣＬＵＴ符号化データ格納用メモリ１３０８にＣＬＵＴ符号化データが格納されたとする。この場合、ＩＣＣプロファイル圧縮データ形成部１３０９は、ＩＣＣプロファイル格納用メモリ１３０２に格納されるＩＣＣプロファイルデータと、ＣＬＵＴ符号化データ格納用メモリ１３０８に格納されるＣＬＵＴ符号化データから必要なデータを取り出す。そし、ＩＣＣプロファイル圧縮データを形成して出力する。ＩＣＣプロファイル圧縮データはＩＣＣプロファイル格納用メモリに格納されるＩＣＣプロファイルデータのうち、ＣＬＵＴ抽出部１３０４で抽出されたＣＬＵＴをＣＬＵＴ符号化データ格納用メモリに格納されているＣＬＵＴ符号化データで置き換えたものである。図１５はＩＣＣプロファイル圧縮データ形成部１３０９で生成されるＩＣＣプロファイル圧縮データの構造を示したものである。圧縮前の図１４との違いは、ＣＬＵＴの圧縮によりＣＬＵＴを含むタグ付き要素データ１４０３（図１４）のＣＬＵＴ部分がＣＬＵＴ符号化データ格納用メモリ１３０８に格納されるＣＬＵＴ符号化データによって置き換えられ、図１５のようにＣＬＵＴ圧縮データを含むタグ付き要素データ１５０１になる。また、ＣＬＵＴの符号化によるタグ付き要素データのサイズ変更に伴い、タグテーブル中、ＣＬＵＴ圧縮データを含むタグ付き要素データのサイズを記した部分（図１５の参照番号１５０２）が書き換えられる。更に、ＣＬＵＴ圧縮データを含むタグ付き要素データの後に続くタグ付き要素データ１５０４のオフセット位置が変わるため、それらのオフセットを記した部分（図１５の参照番号１５０３）も更新される。
【００８８】
ＩＣＣプロファイル圧縮データ出力部１３１０はＩＣＣプロファイル圧縮データ形成部１３０９から出力されるＩＣＣプロファイル圧縮データを装置外部へと出力する。ＩＣＣプロファイル圧縮データ出力部１３１０は外部記憶装置へのインターフェースであり、圧縮データをファイルとして格納する。なお、このＩＣＣプロファイル圧縮データ出力部１３１０はネットワークへのインターフェース等であっても良い。
【００８９】
図１６は本第２の実施形態に係る多次元データの符号化装置による符号化処理の流れを示すフローチャートである。以下、図１６に示したフローチャートに従い、本第２の実施形態に係る制御部１３５０のＩＣＣプロファイルデータの符号化処理の全体的な流れについて説明する。
【００９０】
まず、ＩＣＣプロファイル入力部１３０１は、符号化対象となるＩＣＣプロファイルデータを入力し、ＩＣＣプロファイル格納用メモリ１３０２に格納する（ステップＳ１６００）。続いて、タグテーブル解析部１３０３は、ＩＣＣプロファイルデータに格納されている各タグ付き要素データのタイプ判別を行ない、ＣＬＵＴを含んだタグ付き要素データ（本第２の実施形態ではｌｕｔ１６Ｔｙｐｅのタグ付き要素データ）を取り出し、ＣＬＵＴ抽出部１３０４に出力する。ＣＬＵＴ抽出部１３０４ではタグ付き要素データの内部からＣＬＵＴを抽出し、ＣＬＵＴの各要素を順番に出力する（ステップＳ１６０２）。
【００９１】
プレーン間差分変換部１３０６は、ＣＬＵＴ抽出部１３０４から抽出されるＣＬＵＴの要素Ｉ０（ｘ，ｙ，ｚ）、Ｉ１（ｘ，ｙ，ｚ）、Ｉ２（ｘ、ｙ、ｚ）と、プレーンバッファ１３０５に格納されている直前のプレーンの各要素要素Ｉ０（ｘ，ｙ，ｚ−１）、Ｉ１（ｘ，ｙ，ｚ−１）、Ｉ２（ｘ、ｙ、ｚ−１）とのそれぞれの差分を求め、プレーン間差分Ｄ０（ｘ、ｙ、ｚ）、Ｄ１（ｘ，ｙ，ｚ）、Ｄ２（ｘ、ｙ、ｚ）をＪＰＥＧ可逆符号化部１３０７に出力する（ステップＳ１６０３）。
【００９２】
ＪＰＥＧ可逆符号化部１３０７はプレーン間差分変換部１３０６からのプレーン間差分値Ｄ０（ｘ，ｙ，ｚ）、Ｄ１（ｘ、ｙ、ｚ）、Ｄ２（ｘ，ｙ，ｚ）を水平方向画素数Ｎ、垂直方向画素数Ｎ×Ｎの画像の１画素を構成する３つの成分値とみなして、ＪＰＥＧ可逆符号化（Ｌｏｓｓｌｅｓｓ  Ｐｒｏｃｅｓｓ）による符号化処理を行う（ステップＳ１６０４）。
【００９３】
ＣＬＵＴの全ての要素を符号化し終えた場合には処理をステップＳ１６０６へと移し、そうでない場合にはステップＳ１６０２へと処理を移し、ＣＬＵＴの次の要素についてステップＳ１６０２からステップＳ１６０４の処理により符号化を行う（ステップＳ１６０５）。
【００９４】
ステップＳ１６０６ではＩＣＣプロファイル圧縮データ形成部１３０９によりＩＣＣプロファイル圧縮データの生成が行われる。最後にステップＳ１６０７でＩＣＣプロファイル圧縮データ出力部１３１０からＩＣＣプロファイル圧縮データが装置外部へと出力される。
【００９５】
以上の処理により、ＩＣＣプロファイルデータの符号化処理が行われ、装置外部へとＩＣＣプロファイル圧縮データが出力される。
【００９６】
次に、上記のようにして符号化されたＩＣＣプロファイルデータを復号する復号装置について説明する。
【００９７】
図１７は本第２の実施形態に係る多次元データの復号装置の復号側のブロック構成図である。図１７に示すように、本実施形態に係る多次元データの復号装置は、ＩＣＣプロファイル圧縮データ入力部１７０１、ＩＣＣプロファイル圧縮データ格納用メモリ１７０２、タグテーブル解析部１７０３、ＣＬＵＴ圧縮データ抽出部１７０４、ＪＰＥＧ可逆符号化データ復号部１７０５、ＣＬＵＴ要素データ復号部１７０６、プレーンバッファ１７０７、ＣＬＵＴ格納用メモリ１７０８、ＩＣＣプロファイルデータ復元部１７０９、ＩＣＣプロファイル出力部１７１０、そして、装置全体の制御を司る制御部１７５０を備える。同図において１７１１、１７１２は信号線を示す。
【００９８】
以下、図１７を参照して、本第２の実施形態に係る多次元データの復号装置の制御部１７５０が行うＩＣＣプロファイルデータの復号処理について説明する。
【００９９】
本第２の実施形態に係る復号装置は、上述の符号化装置（図１３）で生成した図１５の構造を有するＩＣＣプロファイル圧縮データを入力し、元のＩＣＣプロファイルデータを復元する。
【０１００】
まず、ＩＣＣプロファイル圧縮データ入力部１７０１は、復号対象となるＩＣＣプロファイル圧縮データを入力する。ＩＣＣプロファイル圧縮データ入力部１７０１は外部記憶媒体へのインターフェース、またはネットワークへのインターフェース等であり、復号対象となるＩＣＣプロファイルデータを装置内部に取り込む役割を果たす。ＩＣＣプロファイル圧縮データ入力部１７０１は、入力されるＩＣＣプロファイルデータを、一旦、ＩＣＣプロファイル格納用メモリ１７０２に格納する。
【０１０１】
ＩＣＣプロファイルデータがＩＣＣプロファイル圧縮データ格納用メモリ１７０２に格納されると、タグテーブル解析部１７０３は、ＩＣＣプロファイルのタグテーブルを解析し、ｌｕｔ１６Ｔｙｐｅのタグ付き要素データを抜き出してＣＬＵＴ抽出部１７０４に送る。
【０１０２】
ＣＬＵＴ抽出部１７０４は、その内部に不図示のバッファを有し、タグテーブル解析部１７０３により抜き出されたｌｕｔ１６Ｔｙｐｅのタグ付き要素データを格納する。ｌｕｔ１６Ｔｙｐｅのタグ付き要素データはｉ次元の色空間をｏ次元の別の色空間に対応付けるものである。ＩＣＣプロファイルデータにおいては、３×３配列、１次元入力テーブル、多次元カラールックアップテーブル（ＣＬＵＴ）、１次元出力テーブルで構成される。先に説明したように、ＩＣＣプロファイル圧縮データにおいては、このＣＬＵＴがＪＰＥＧ可逆符号化データに置き換えられている。ＣＬＵＴ抽出部１７０４はｌｕｔ１６Ｔｙｐｅのフォーマットに従って、ＣＬＵＴの配列次元数ｉ，各配列要素の成分数ｏ，各次元の要素数ｇを取得し、本来ＣＬＵＴが格納されているべき位置（ＪＰＥＧ可逆符号化データの開始位置に相当）を特定する。
【０１０３】
ＪＰＥＧ可逆符号化データ復号部１７０５は、ＣＬＵＴ圧縮データ抽出部１７０４で指定されるＪＰＥＧ可逆符号化データの先頭位置からＪＰＥＧ可逆符号化データの復号処理を開始し、ＣＬＵＴの各要素のプレーン間差分値Ｄ０（ｘ、ｙ、ｚ）、Ｄ１（ｘ、ｙ、ｚ）、Ｄ２（ｘ、ｙ、ｚ）を順に復号する。
【０１０４】
ＣＬＵＴ要素データ復号部１７０６は、ＪＰＥＧ可逆符号化データ復号部１７０５により復号されるプレーン間差分値Ｄ０（ｘ、ｙ、ｚ）、Ｄ１（ｘ、ｙ、ｚ）、Ｄ２（ｘ、ｙ、ｚ）について、プレーンバッファ１７０７からＩ０（ｘ、ｙ、ｚ−１）、Ｉ１（ｘ、ｙ、ｚ−１）、Ｉ２（ｘ、ｙ、ｚ−１）を読み出し、上述のプレーン間差分変換部１３０６（図１３）と対になる処理により、着目するＣＬＵＴの要素の各成分値Ｉ０（ｘ，ｙ，ｚ）、Ｉ１（ｘ，ｙ，ｚ）、Ｉ２（ｘ、ｙ、ｚ）をそれぞれ復号する。
【０１０５】
プレーンバッファ１７０７はＣＬＵＴ要素復号部１７０６から出力される３次元配列の要素を１プレーン分格納する。なお、説明が前後するが、制御部１７５０は、復号処理開始時に、プレーンバッファ１７０５を全ての値を０に初期化する。
【０１０６】
ＣＬＵＴ格納用メモリ１７０８には復号されたＣＬＵＴの各要素が順次格納される。プレーン間差分からＣＬＵＴ要素を復号する点を明記するため、プレーンバッファ１７０７とＣＬＵＴ格納用メモリ１７０８を記したが、直前のプレーンの要素値はＣＬＵＴ格納用メモリ１７０８にも格納されているので、ＣＬＵＴ格納用メモリ１７０８のみを有してプレーンバッファ１７０７の機能を持たせても良い。
【０１０７】
ＣＬＵＴ格納用メモリ１７０８にＣＬＵＴの全ての要素が格納されると、ＩＣＣプロファイル復元部１７０９は、ＩＣＣプロファイル圧縮データ格納用メモリ１７０２に格納されるＩＣＣプロファイル圧縮データと、ＣＬＵＴ格納用メモリ１７０８に格納されるＣＬＵＴデータから必要なデータを取り出し、ＩＣＣプロファイルデータを復元して出力する。ＩＣＣプロファイルデータはＩＣＣプロファイル圧縮データ格納用メモリ１７０２に格納されるＩＣＣプロファイル圧縮データのうち、ＣＬＵＴ圧縮データ抽出部で抽出されたＣＬＵＴ圧縮データ（ＪＰＥＧ可逆符号化データ）をＣＬＵＴ格納用メモリに格納されているＣＬＵＴデータで置き換えたものである。復元されるＩＣＣプロファイルは図１４に示した構造をもつＩＣＣプロファイルデータである。ＩＣＣプロファイル圧縮データ（図１５）との違いは、ＣＬＵＴの復号によりＣＬＵＴ圧縮データを含むタグ付き要素データ１５０１（図１５）のＣＬＵＴ圧縮データ部分がＣＬＵＴ格納用メモリ１７０８に格納されるＣＬＵＴデータによって置き換えられ、図１４のようにＣＬＵＴを含むタグ付き要素データ１４０３になる点である。また、ＣＬＵＴの復号によるタグ付き要素データのサイズ変更に伴い、タグテーブル中、ＣＬＵＴ圧縮データを含むタグ付き要素データのサイズを記した部分（図１５の参照番号１５０２）が書き換えられる。更に、ＣＬＵＴ圧縮データを含むタグ付き要素データの後に続くタグ付き要素データ１５０４のオフセット位置が変わるため、それらのオフセットを記した部分（図１５の参照番号１５０３）も更新される。
【０１０８】
ＩＣＣプロファイルデータ出力部１７１０はＩＣＣプロファイルデータ復元部１７０９から出力されるＩＣＣプロファイルデータを装置外部へと出力する。ＩＣＣプロファイルデータ出力部１７１０は外部記憶装置へのインターフェースであり、圧縮データをファイルとして格納する。なお、このＩＣＣプロファイルデータ出力部１７１０はネットワークへのインターフェース等であっても良い。
【０１０９】
図１８は本実施形態に係る多次元データ処理装置による復号処理の流れを示すフローチャートである。以下、図１８に示したフローチャートに従い、本第２の実施形態に係る多次元データの復号装置の制御部１７５０が行うＩＣＣプロファイルデータの符号化処理の全体的な流れについて説明する。
【０１１０】
まず、制御部１７５０は、ＩＣＣプロファイル圧縮データ入力部１７０１を制御し、復号対象となるＩＣＣプロファイル圧縮データを入力させ、それをＩＣＣプロファイル圧縮データ格納用メモリ１７０２に格納させる（ステップＳ１８００）。続いて、制御部１７５０は、タグテーブル解析部１７０３を制御し、ＩＣＣプロファイル圧縮データに格納されている各タグ付き要素データのタイプ判別が行わせる。そして、制御部１７５０は、タグテーブル解析部１７０３を制御し、ＣＬＵＴ圧縮データを含んだタグ付き要素データ（本実施形態ではｌｕｔ１６Ｔｙｐｅのタグ付き要素データ）を取り出させ、ＣＬＵＴ圧縮データ抽出部１７０４へ出力させる。ＣＬＵＴ抽出部１７０４は、制御部１７５０の制御の下で、タグ付き要素データの内部からＣＬＵＴ圧縮データを抽出し、ＪＰＥＧ可逆符号化データ復号部１７０５に出力する。ＪＰＥＧ可逆符号化データ復号部１７０５は、プレーン間差分値Ｄ０（ｘ，ｙ，ｚ）、Ｄ１（ｘ、ｙ、ｚ）、Ｄ２（ｘ，ｙ，ｚ）を順に復号する（ステップＳ１８０２）。
【０１１１】
ＣＬＵＴ要素復号部１７０６は、ＣＬＵＴ要素の各成分Ｉ０（ｘ，ｙ，ｚ）、Ｉ１（ｘ，ｙ，ｚ）、Ｉ２（ｘ、ｙ、ｚ）を復号し（ステップＳ１８０３）、復号された要素の各成分はプレーンバッファ１７０７とＣＬＵＴ格納用メモリ１７０８に格納する（ステップＳ１８０４）。ＣＬＵＴの全ての要素を復号し終えた場合には処理をステップＳ１８０６へと移し、そうでない場合にはステップＳ１８０２へと処理を移し、ＣＬＵＴの次の要素についてステップＳ１８０２からステップＳ１８０４の処理により復号処理を行う（ステップＳ１８０５）。ステップＳ１８０６に処理が進むと、ＩＣＣプロファイルデータ復元部１８０９は、ＩＣＣプロファイルデータの復元を行なう。最後にステップＳ１８０７でＩＣＣプロファイルデータ出力部１８１０から復元されたＩＣＣプロファイルデータが装置外部へと出力される。
【０１１２】
以上の処理により、ＩＣＣプロファイルデータの復号処理が行われ、装置外部へと復号されたＩＣＣプロファイルデータが出力される。
【０１１３】
以上の説明のように、本第２の実施形態に係る多次元データ処理装置では、ＩＣＣプロファイルデータに含まれるカラールックアップテーブル（ＣＬＵＴ）をプレーン間差分へ変換した後にＪＰＥＧ可逆符号化による符号化を行う。ＩＣＣプロファイルに含まれるＣＬＵＴはプレーン間での予測誤差が近い値をもつ傾向があり、第１の実施形態で述べた効果により圧縮の性能を向上することができる。本実施の形態によれば、プレーン間差分（１次元予測）へ変換後、プレーン内部で平面予測（２次元予測）を適用することで、３次元全ての軸に対して、近隣要素間の相関を利用することができ、高効率な圧縮が可能となる。特に、近隣要素間の相関の高いカラールックアップテーブルの圧縮には有効であると言える。なお、同様の効果をもたらす手法として、プレーン間で２次元予測を用いた誤差に変換した後、プレーン内で前値予測を用いるという場合でも本実施形態と同様の効果を得ることができる。また、本実施の形態の多次元データ処理装置では、カラーマッチングのためのＩＣＣプロファイルデータの圧縮に静止画像の可逆符号化方式を用いている。カラー画像の圧縮と、カラーマッチングのための情報（即ちＩＣＣプロファイルデータ）の圧縮に同じ方式を用いることで、新たな圧縮方式を必要とせず、簡易にかつ、多次元の相関を有効利用した高効率な符号化が実現できる。本実施形態の場合、機器間でのカラー画像データの受け渡しに際してもＪＰＥＧ可逆符号化を用いれば良い。反対に例えばＪＰＥＧ−ＬＳなど、別の可逆符号化方式を適用するのであれば、上述の実施形態においてＪＰＥＧ可逆符号化に代えて、その符号化方式を適用すれば良い。
【０１１４】
また、上記第２の実施形態は、第１の実施形態の変形例と同様、コンピュータが該当するプログラムを実行することでも実施できる。この場合、そのコンピュータプログラムは、図１３、１７に示すような各構成に対応するモジュールを備え、メイン処理では図１６、１８の処理を行なえばよいのは容易に理解できよう。
【０１１５】
＜第３の実施形態＞
第２の実施形態では、ＣＬＵＴが３次元、３成分である場合について説明した。しかしながら、４次元や４成分であっても本発明は適用可能である。また、第２の実施形態では、３次元データのｚ軸を固定してプレーンを定義したが、多次元データのスキャン順序としては複数の方法が考えられ、上述の例に限定されるものではない。第３の実施形態では、ＩＣＣプロファイルデータの中の４次元３成分のカラールックアップテーブルを例に、複数のスキャン順序のうち、符号量が少なくなるスキャン順序を選択して適用する例について説明する。
【０１１６】
図２０に本第３の実施形態に係る符号化装置のブロック構成図を示す。同図に示す通り、第２の実施形態で説明した図１３のＣＬＵＴ抽出部１３０４を、動作の異なるＣＬＵＴ抽出部２００１に置き換え、さらにスイッチ２００２、予測誤差絶対値平均算出部２００３を追加した構成となっている。
【０１１７】
以下、第２の実施形態と共通のブロックについては説明を省略し、動作の異なる点について説明する。
【０１１８】
先に述べたように、本第３の実施形態では４次元３成分のＣＬＵＴを例に説明する。第２の実施形態と同様に各次元の要素数ｇ＝Ｎであるとする。つまり、ＣＬＵＴが有する要素数はＮ×Ｎ×Ｎ×Ｎ個であり、成分の総数はＮ×Ｎ×Ｎ×Ｎ×３である。
【０１１９】
ＣＬＵＴ抽出部２００１はその内部に不図示のバッファを有し、タグテーブル解析部１３０３により抜き出されたｌｕｔ１６Ｔｙｐｅのタグ付き要素データを格納する。ｌｕｔ１６Ｔｙｐｅのタグ付き要素データはｉ次元の色空間をｏ次元の別の色空間に対応付けるものであり、３×３配列、１次元入力テーブル、多次元カラールックアップテーブル（ＣＬＵＴ）、１次元出力テーブルで構成される。ＣＬＵＴはｉ次元の配列であり、各配列要素がｏ個の成分値を有する。ｌｕｔ１６Ｔｙｐｅのタグ付き要素データには付加情報として、i、ｏの他、ＣＬＵＴの各次元の要素数ｇが記される。ＣＬＵＴ抽出部１３０４はｌｕｔ１６Ｔｙｐｅのフォーマットに従って、ｉ，ｏ，ｇを取得し、ＣＬＵＴの各要素の各成分を順番にプレーン間差分変換部１３０６へ出力する。先に説明した第２の実施形態では、Ｘ，Ｙ，Ｚの３軸で表現される３次元のＣＬＵＴの圧縮について述べたが、本実施形態では、Ｗ，Ｘ，Ｙ，Ｚの４軸で表現される４次元のＣＬＵＴの圧縮を行う。各次元の要素数ｇ＝Ｎである場合、Ｗ軸の値を０からＮ−１まで変化させて得られるＸ，Ｙ，Ｚの３次元データＮ個について符号化処理を行う。
【０１２０】
以下、個々の３次元データの処理について述べる。
【０１２１】
本第３の実施形態におけるＣＬＵＴ抽出部１３０４では１つの３次元データについて、走査順序を決定する目的で３次元データの要素を読み出す「前走査」と、実際に符号化を行うために読み出す「本走査」を行う。
【０１２２】
前走査では、走査順序を変えて３回の読み出しを行う。まず、第１回目の前走査の読み出しでは、図１９（ａ）に示すように、Ｚ軸を固定して得られるＸＹプレーンをＺ軸の値Ｎ−１から０まで降順に読み出す。第２回目の前走査の読み出しでは、図１９（ｂ）に示すように、Ｙ軸を固定して得られるＸＺプレーンをＹ軸の値Ｎ−１から０まで順番に読み出す。また、第３回目の前走査の読み出しでは、図１９（ｃ）に示すように、Ｘ軸を固定して得られるＹＺプレーンをＸ軸の値Ｎ−１から０まで順番に読み出す。
【０１２３】
なお、１つのプレーンを表わす２つの軸をＡ，Ｂと定義したとき、そのプレーン内を走査する順序は、Ｂ軸の値を０に固定にし、Ａの軸の座標の値を０、１、…、Ｎ−１に変化させる。そして、Ａ軸の座標の値がＮ−１に到達したとき、Ｂ軸の値を１だけ加算し、Ａの軸の座標の値を０、１、…、Ｎ−１に変化させる。以下、これをＢ軸の値がＮ−１、Ａ軸の値がＮ−１になるまで繰り返すものとする。すなわち、Ｂ軸の値をＡ軸の値よりも優先して変化させるものとする。しかしながら、この逆、すなわち、Ａ軸の値をＢ軸の値よりも優先しても構わない。
【０１２４】
さて、本走査では、前走査で行った３回の読み出しのいずれかひとつと同じ読み出し方で配列要素の読み出しを行う。走査方法の選択は後述する予測誤差絶対値平均算出部２００３から出力される制御信号に基づく。予測誤差絶対値平均算出部２００３から信号線２００４を介して入力される制御信号が０である場合、前走査における第１回目の読み出しと同じ走査方法で読み出すことで本走査を行なう。また、制御信号が１である場合には第２回目と、また、制御信号が２である場合には第３回目と同じ走査方法で読み出すことで本走査を行なう。
【０１２５】
先ず、前走査を更に詳しく説明する。
【０１２６】
プレーンバッファ１３０５はＣＬＵＴ抽出部１３０４から出力される３次元配列の要素を１プレーン分格納する。プレーンの概念は第２実施形態と同じであるが、第２の実施形態ではＺ軸を固定して形成されるＸＹプレーンが格納されたのに対し、本第３の実施形態では、固定する軸を変えて３回の読み出しが行われるため、第１回目の読み出しではＸＹプレーン、第２回目の読み出しではＸＺプレーン、第３回目ではＹＺプレーンと格納されるプレーンが変わる。ただし、プレーンバッファ１３０５は３回の読み出しの開始時点で全ての値を０に初期化される。
【０１２７】
プレーン間差分変換部１３０６は第２の実施形態と同様にＣＬＵＴ抽出部１３０４から出力されるＩｎ（ｘ，ｙ，ｚ）(ｎは０，１，２のいずれか)について、プレーンバッファ１３０５から当該成分値の直前のプレーンの値を読み出す。ここで直前のプレーンの値とは、第１回目の前走査の読み出しにおいてはＩｎ（ｘ、ｙ, z＋1）である。第２回目の前走査の読み出しではＩｎ(x, y＋1, z)、そして、第３回目の前走査の読出しではＩｎ(x＋1,y, z)である。 そして、プレーン間差分変換部１３０６は、プレーン間差分値Ｄｎ（ｘ、ｙ、ｚ）を生成し、出力する。具体的には以下の式を用いる。
・第１回目の前走査の読み出しの場合：
Ｄｎ（ｘ、ｙ、ｚ）＝Ｍｏｄ（Ｉｎ（ｘ、ｙ、ｚ）−Ｉｎ（ｘ、ｙ、ｚ＋１）+（２＾１５），（２＾１６））
・第２回目の前走査の読み出しの場合：
Ｄｎ（ｘ、ｙ、ｚ）＝Ｍｏｄ（Ｉｎ（ｘ、ｙ、ｚ）−Ｉｎ（ｘ、ｙ＋１、ｚ）+（２＾１５），（２＾１６））
・第３回目の前走査の読み出しの場合：
Ｄｎ（ｘ、ｙ、ｚ）＝Ｍｏｄ（Ｉｎ（ｘ、ｙ、ｚ）−Ｉｎ（ｘ＋１、ｙ、ｚ）+（２＾１５），（２＾１６））
【０１２８】
スイッチ２００２はＣＬＵＴ抽出部２００１において前走査が行われている間は、端子Ｔａ側に接続され、本走査を行う際には端子Ｔｂ側に接続される。
【０１２９】
予測誤差絶対値平均算出部２００３は前走査における３回の前走査の読み出しのそれぞれについて、プレーン間差分変換部１３０６で生成されるプレーン間差分値Ｄｎ（ｘ，ｙ，ｚ）を水平方向画素数Ｎ，垂直方向画素数ＮｘＮの３成分、１６ビットの画像データとみなし、ＪＰＥＧの可逆符号化における予測式の選択番号ｍ＝４、すなわち、Ｐｘ＝Ｒａ＋Ｒｂ−Ｒｃを使用した場合の予測誤差を求め、その絶対値平均を求める。第１回目、第２回目、第３回目の前走査の読み出しについて、それぞれ予測誤差の絶対値平均値を求めることになる。前走査における３回の読み出しそれぞれの、予測誤差の絶対値平均値を算出すると、それら３つ絶対値平均値を比較する。そして、予測誤差が最小となる前走査の読み出しが何回目であったのかを示す制御信号を信号線２００４へと出力する。
【０１３０】
ここで、３回の前走査の絶対平均値のうち、第１回目の前走査の読み出しによる絶対値平均が最小となる場合には、予測誤差絶対値平均値算出部２００３は、制御信号２００４に“０”を出力する。また、絶対値平均が最小が、第２回目の前走査の読出しであった場合には“１”、第３回目の前走査の読出しであった場合には“２”を制御信号２００４として出力する。
【０１３１】
ここで算出している３つの予測誤差絶対値平均について説明する。図２１（ａ）乃至（ｃ）における黒丸が３次元データの着目する要素であるとする。第１回目の前走査の読み出し時における予測誤差絶対平均値は、図２１（ａ）に斜線でしめした７個の要素を参照して予測した誤差の絶対値平均を示す。第２回目の前走査の読み出し時における予測誤差絶対平均値は図２１（ｂ）の斜線で示した７個の要素を参照した予測誤差の絶対値平均である。そして、第３回目の前走査の読み出し時における予測誤差絶対平均値は図２１（ｃ）の斜線で示した７個の要素を参照した予測誤差の絶対値平均である。
【０１３２】
本来、３次元データの各要素について、ある着目する要素とその隣接要素を頂点とする立方体を考えるならば、８通りのやり方があるが、本実施形態ではそのうちの３通りについて予測誤差の絶対値が最小となる走査方法を探索している。もちろん、言うまでもなく、前走査の読み出し回数を増やし、全ての方法について探索するようにしても構わない。
【０１３３】
３回の前走査における読み出しが終了し、予測誤差絶対値平均算出部２００３から制御信号が出力されると、制御部１３５０は、スイッチ２００２の出力を端子Ｔｂへと切り替える。そして、ＣＬＵＴ抽出部２００１は本走査を開始する。先に述べた通り、制御信号２００４が“０”の場合には第１回目の前走査の読み出し方と同じ走査方法を用いる。また、制御信号２００４が“１”の場合には第２回目の前走査の読出し方、“２”の場合には第３回目の前走査の読み出し方に従って走査を行う。
【０１３４】
ＪＰＥＧ可逆符号化部１３０７は、第２の実施形態と同様に、プレーン間差分変換部１３０６から順次入力されるＮ×Ｎ×Ｎ個の要素（１つの要素は３成分であり各々は１６ビット）のプレーン間差分値Ｄｎ（ｘ、ｙ、ｚ）を水平方向画素数Ｎ、垂直方向画素数Ｎ×Ｎの３成分、１６ビットの画像データとしてＪＰＥＧに規定される可逆符号化（Ｌｏｓｓｌｅｓｓ Ｐｒｏｃｅｓｓ）により符号化し、符号化データをＣＬＵＴ符号化データ格納用メモリ１３０８に格納する。ＪＰＥＧの可逆符号化で用いる予測式についても第２の実施形態と同じく選択番号ｍ＝４、すなわち、Ｐｘ＝Ｒａ＋Ｒｂ−Ｒｃを使用する（詳しくは、規格書のＡｎｎｅｘ Ｈ  Ｔａｂｌｅ Ｈ．１ - Predictors for lossless codingを参照されたい）。なお、復号時に符号化と同じ走査順序で復号されるよう、符号量が最小となった走査順序に関する情報を、例えば、ＪＰＥＧのＡＰＰマーカやＣＯＭマーカなどを利用して符号化データ内部に保持するものとする。
【０１３５】
上述の処理を４次元のＣＬＵＴの１軸を固定して得られるＮ個の３次元データに対して繰り返して行うことにより、Ｎ個のＪＰＥＧ圧縮データが生成され、格納される。なお、本第３の実施形態では、Ｎ個の３次元データについて符号量が最小となると思われる走査方法を探索するという都合上、Ｎ個の符号化データを生成する方法について述べたが、第２の実施形態のように固定された走査方法で３次元データを読み出す場合には、必ずしもＮ個の符号化データとして分ける必要はなく、例えば水平方向画素数Ｎ、垂直方向画素数Ｎ×Ｎ×Ｎの画像データとして１つの符号化データにまとめるようにしても構わない。
【０１３６】
なお、本第３の実施形態で生成したＩＣＣプロファイル圧縮データは、元が４次元のＣＬＵＴであるために、Ｎ個の３次元データとして符号化されていること、それぞれの３次元データに対する走査方法が可変となっているが、符号化データから読み出される走査順序に関する情報に基づいてデータを復元し、符号化時と逆の処理でＮ個の３次元データから４次元データへと復元すれば、第２の実施形態で説明した復号装置とほぼ同じ構成で復号できる。従って、その復号処理についての説明を省略する。
【０１３７】
以上述べたように、本第３の実施形態では多次元データを２次元化して符号化する際の走査方法について、符号量が少なくなる方法を選択して適用する方法を用いることで、更なる圧縮性能の向上を図っている。
【０１３８】
＜他の実施形態＞
本発明は上述した実施の形態に限定されるものではない。例えば、第２の実施形態ではカラールックアップテーブル（ＣＬＵＴ）をＪＰＥＧに規定される可逆符号化（Ｌｏｓｓｌｅｓｓ Ｐｒｏｃｅｓｓ）により符号化する例を示した。しかし、これ以外として、ＪＰＥＧ−ＬＳ  Ｂａｓｅｌｉｎｅ方式（ＩＴＵ−Ｔ  Ｔ．８７｜ＩＳＯ／ＩＥＣ１４４９５）など、その他の符号化技術を用いても構わない。また、上述の実施形態では特に言及しなかったが、ＪＰＥＧの可逆符号化を用いる場合、ハフマン符号の最適化を適用しても良いし、あらかじめ定めたハフマンテーブルを用いる構成としても良い。
【０１３９】
また、第２の実施形態で、ＣＬＵＴが３次元、３成分である場合、第３の実施形態ではＣＬＵＴが４次元、３成分である場合を例に説明した。しかしながら、４次元以上の次元数であったり、４成分であっても適用可能である。例えば、例えば５次元４成分、各次元の要素数がＮであるＣＬＵＴの場合、軸を２つを固定して定義されるＮ×Ｎ×Ｎの４成分の３次元データがＮ×Ｎ個存在するものとみなして圧縮するといった具合に適用すれば良い。
【０１４０】
なお、第２の実施形態のように複数成分を有する多次元データを符号化対象とする場合、更なる可逆符号化の性能向上を図るには、複数成分間での可逆の色変換処理を適用して、成分間の相関を除去するなどの処理を適用しても良い。
【０１４１】
また、同じく第２の実施形態でＩＣＣプロファイルデータをＩＣＣプロファイル圧縮データへの符号化する例について述べたが、ＣＬＵＴ圧縮データを必ずしも同じファイル内に収める必要はない。例えば、符号化対象のＩＣＣプロファイルデータからＣＬＵＴを抜き取ったものと、ＣＬＵＴ圧縮データとを別ファイルとして持つようにしても構わない。更には、複数のＩＣＣプロファイルを圧縮する場合など、これらの圧縮データを一つのファイルとして格納したり、共通のタグ付き要素データを共有するようにしても構わない。  以上の説明から明らかなように、本発明は、３次元以上のルックアップテーブルを圧縮する場合に、好適なものであることが理解できよう。
【０１４２】
また、上記各実施形態からも明らかなように、本発明はコンピュータプログラムをもその範疇とするものである。通常、コンピュータプログラムはＣＤ−ＲＯＭ等のコンピュータ可読記憶媒体に格納されて、コンピュータのシステムにコピーもしくはインストールすることで実行可能となる。従って、このようなコンピュータ可読記憶媒体も本発明の範疇にあることも明らかである。
【図面の簡単な説明】
【０１４３】
【図１】第１の実施形態に係る多次元データの符号化装置のブロック構成図である。
【図２】符号化対象の多次元データの概略を示す図である。
【図３】符号化対象の多次元データとプレーンの関係を示す図である。
【図４】バッファ１０４に格納されるデータの範囲を示す図である。
【図５】着目するプレーン間差分値Ｄｉの位置と、その周囲のプレーン間差分値の位置Ｄa、Ｄｂ、Ｄｃとの相対位置関係を示す図である。
【図６】予測誤差ｅとカテゴリＳＳＳＳの対応を示す図である。
【図７】カテゴリＳＳＳＳと符号語の対応テーブルを示す図である。
【図８】第１の実施形態における符号化装置が生成する符号化データのデータ構造を示す図である。
【図９】第１の実施形態に係る多次元データの復号装置のブロック構成図である。
【図１０】第１の実施形態の変形例におけるコンピュータのブロック構成図である。
【図１１】コンピュータプログラムの符号化処理手順を示すフローチャートである。
【図１２】コンピュータプログラムの復号処理手順を示すフローチャートである。
【図１３】第２の実施形態に係る多次元データの符号化装置のブロック構成図である。
【図１４】第２の実施形態で符号化対象とするＩＣＣプロファイルデータの構造を示す図である。
【図１５】第２の実施形態の符号化後のＩＣＣプロファイル圧縮データの構造を示す図である。
【図１６】第２の実施形態に係る多次元データの符号化処理手順を示すフローチャートである。
【図１７】第２の実施形態に係る多次元データの復号装置のブロック構成図である。
【図１８】第２の実施形態に係る多次元データの復号装置の処理手順を示すフローチャートである。
【図１９】符号化対象の３次元データの３つのスキャン方法を示す図である。
【図２０】第３の実施形態に係る多次元データの符号化装置のブロック構成図である。
【図２１】３回の前走査それぞれにおける着目要素と参照要素の関係を表す図である。
【図１】
2008278464.tif 000003
【図２】
2008278464.tif 000004
【図３】
2008278464.tif 000005
【図４】
2008278464.tif 000006
【図５】
2008278464.tif 000007
【図６】
2008278464.tif 000008
【図７】
2008278464.tif 000009
【図８】
2008278464.tif 000010
【図９】
2008278464.tif 000011
【図１０】
2008278464.tif 000012
【図１１】
2008278464.tif 000013
【図１２】
2008278464.tif 000014
【図１３】
2008278464.tif 000015
【図１４】
2008278464.tif 000016
【図１５】
2008278464.tif 000017
【図１６】
2008278464.tif 000018
【図１７】
2008278464.tif 000019
【図１８】
2008278464.tif 000020
【図１９】
2008278464.tif 000021
【図２０】
2008278464.tif 000022
【図２１】
2008278464.tif 000023