(57)【特許請求の範囲】
【請求項１】
画像を構成するピクセルのうち、少なくとも２つ以上のピクセルのインデックスの遷移に関する遷移情報を算出する遷移情報算出手段と、
前記遷移情報算出手段によって算出された遷移情報の一部を所定の方法により選出して参照テーブルを作成する参照テーブル作成手段と、
前記参照テーブル作成手段により作成された参照テーブルを参照し、前記画像を符号化する符号化手段と、
を備え、
前記参照テーブル作成手段は、前記遷移情報に特定のインデックスが含まれている場合には、そのインデックスを優先的に選出して前記参照テーブルを作成する
ことを備えることを特徴とする符号化装置。
【請求項２】
前記インデックスと前記ピクセルの表示色との対応関係は、カラールックアップテーブルにより規定されている
ことを特徴とする請求項１に記載の符号化装置。
【請求項３】
前記参照テーブル作成手段は、前記遷移情報を出現頻度が高い順に所定の個数だけ選出し、前記参照テーブルを作成する
ことを特徴とする請求項１に記載の符号化装置。
【請求項４】
前記少なくとも２つ以上のピクセルは、隣接するピクセルである
ことを特徴とする請求項１に記載の符号化装置。
【請求項５】
前記参照テーブル作成手段は、出現頻度と、前記隣接するピクセルの表示色の差異に応じて、所定の個数の前記遷移情報を選出し、前記参照テーブルを作成する
ことを特徴とする請求項４に記載の符号化装置。
【請求項６】
前記符号化手段は、符号化しようとする第１のピクセルに対応する遷移情報が前記参照テーブルに含まれていない場合には、それより後の第２のピクセルにおいて前記参照テーブルとの対応関係が得られるように、前記第１のピクセルから前記第２のピクセルの直前までのピクセルのインデックスを変更する
ことを特徴とする請求項１に記載の符号化装置。
【請求項７】
前記変更の結果、前記第２のピクセルにおいて対応関係が得られる複数の選択肢が存在する場合には、変更前と変更後のピクセルの表示色の誤差が最小となる選択肢を選択する
ことを特徴とする請求項６に記載の符号化装置。
【請求項８】
前記変更の結果、前記第２のピクセルにおいて対応関係が得られる複数の選択肢が存在する場合には、変更前と変更後のピクセルの表示色の誤差が最小となるとともに、特定のインデックスに変更されるピクセルが存在しない選択肢を選択する
ことを特徴とする請求項６に記載の符号化装置。
【請求項９】
前記符号化手段により符号化された情報を、可変長符号化する可変長符号化手段を更に備える
ことを特徴とする請求項１に記載の符号化装置。
【請求項１０】
前記画像中に性質の異なる部分が存在している場合、前記遷移情報算出手段は、前記画像を前記性質に応じて複数の領域に分割し、各領域毎に前記遷移情報を算出する
ことを特徴とする請求項１に記載の符号化装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、符号化装置に関し、特に、参照テーブルを利用して画像を符号化または復号化する符号化装置に関する。
【０００２】
【従来の技術】
カラールックアップテーブル（Color Look-up Table）を用いた画像処理装置では、ピクセルあたりの割り当てビット数を減らすと、画像の情報量を簡単に減少させることができるという利点がある。
【０００３】
【発明が解決しようとする課題】
しかしながら、ピクセルあたりの割り当てビットを減少させると、情報量を減少させることはできるものの、表示することができる色の数も減少してしまうという課題があった。
【０００４】
本発明は、このような状況に鑑みてなされたものであり、表示することができる色の数を減少させることなく、画像全体の情報量を減少させることを可能とするものである。
【０００５】
【課題を解決するための手段】
本発明の符号化装置は、画像を構成するピクセルのうち、少なくとも２つ以上のピクセルのインデックスの遷移に関する遷移情報を算出する遷移情報算出手段と、遷移情報算出手段によって算出された遷移情報の一部を所定の方法により選出して参照テーブルを作成する参照テーブル作成手段と、参照テーブル作成手段により作成された参照テーブルを参照し、画像を符号化する符号化手段とを備え、参照テーブル作成手段は、遷移情報に特定のインデックスが含まれている場合には、そのインデックスを優先的に選出して参照テーブルを作成することを特徴とする。
【０００６】
本発明の符号化方法は、画像を構成するピクセルのうち、少なくとも２つ以上のピクセルのインデックスの遷移に関する遷移情報を算出する遷移情報算出ステップと、遷移情報算出ステップによって算出された遷移情報の一部を所定の方法により選出して参照テーブルを作成する参照テーブル作成ステップと、参照テーブル作成ステップにより作成された参照テーブルを参照し、画像を符号化する符号化ステップとを備え、インデックスとピクセルの表示色との対応関係は、カラールックアップテーブルにより規定されていることを特徴とする。
【０００７】
本発明の記録媒体は、画像を構成するピクセルのうち、少なくとも２つ以上のピクセルのインデックスの遷移に関する遷移情報を算出し、算出された遷移情報の一部を所定の方法により選出して作成された参照テーブルと、参照テーブルを参照して符号化された画像のデータと、ピクセルのインデックスとの表示色との対応関係を規定するカラールックアップテーブルとが記録されていることを特徴とする。
【０００８】
本発明の復号化装置は、画像を構成するピクセルのうち、少なくとも２つ以上のピクセルのインデックスの遷移に関する遷移情報を算出し、算出された遷移情報の一部を所定の方法により選出して作成された参照テーブルを記憶する参照テーブル記憶手段と、参照テーブルを参照して圧縮された画像データを入力する入力手段と、入力手段より入力された画像データを、参照テーブル記憶手段に記憶されている参照テーブルを参照して、復号化する復号化手段と、カラールックアップテーブルを記憶するカラールックアップテーブル記憶手段と、復号化手段により復号化された画像データを、カラールックアップテーブル記憶手段に記憶されたカラールックアップテーブルを参照して、元の信号に変換する変換手段とを備えることを特徴とする。
【０００９】
本発明の復号化方法は、画像を構成するピクセルのうち、少なくとも２つ以上のピクセルのインデックスの遷移に関する遷移情報を算出し、算出された遷移情報の一部を所定の方法により選出して作成された参照テーブルを記憶する参照テーブル記憶ステップと、参照テーブルを参照して圧縮された画像データを入力する入力ステップと、入力ステップより入力された画像データを、参照テーブル記憶ステップに記憶されている参照テーブルを参照して、復号化する復号化ステップと、カラールックアップテーブルを記憶するカラールックアップテーブル記憶ステップと、復号化ステップにより復号化された画像データを、カラールックアップテーブル記憶ステップで記憶されたカラールックアップテーブルを参照して、元の信号に変換する変換ステップとを備えることを特徴とする。
【００１０】
本発明の符号化装置においては、画像を構成するピクセルのうち、少なくとも２つ以上のピクセルのインデックスの遷移に関する遷移情報を遷移情報算出手段が算出し、遷移情報算出手段によって算出された遷移情報の一部を参照テーブル作成手段が所定の方法により選出して参照テーブルを作成し、参照テーブル作成手段により作成された参照テーブルを参照し、画像を符号化手段が符号化し、参照テーブル作成手段は、遷移情報に特定のインデックスが含まれている場合には、そのインデックスを優先的に選出して参照テーブルを作成する。例えば、画面の水平走査方向に隣接する２つのピクセルのインデックスの遷移に関する遷移情報を遷移情報算出手段が算出し、遷移情報算出手段によって算出された遷移情報のうち、出現頻度が上位４通りの情報を選出して、参照テーブル作成手段が参照テーブルを作成し、作成された参照テーブルを参照し、画像を構成するピクセルデータを符号化手段が逐次符号化する。
【００１１】
本発明の符号化方法においては、画像を構成するピクセルのうち、少なくとも２つ以上のピクセルのインデックスの遷移に関する遷移情報を遷移情報算出ステップが算出し、遷移情報算出ステップによって算出された遷移情報の一部を参照テーブル作成ステップが所定の方法により選出して参照テーブルを作成し、参照テーブル作成ステップにより作成された参照テーブルを参照し、画像を符号化ステップが符号化し、インデックスとピクセルの表示色との対応関係は、カラールックアップテーブルにより規定される。例えば、画面の水平走査方向に隣接する２つのピクセルのインデックスの遷移に関する遷移情報を遷移情報算出ステップが算出し、遷移情報算出ステップによって算出された遷移情報のうち、出現頻度が上位４通りの情報を選出して、参照テーブル作成ステップが参照テーブルを作成し、作成された参照テーブルを参照し、画像を構成するピクセルデータを符号化ステップが逐次符号化する。
【００１２】
本発明の記録媒体においては、画像を構成するピクセルのうち、少なくとも２つ以上のピクセルのインデックスの遷移に関する遷移情報を算出し、算出された遷移情報の一部を所定の方法により選出して作成された参照テーブルと、参照テーブルを参照して符号化された画像のデータと、ピクセルのインデックスと表示色との対応関係を規定するカラールックアップテーブルとが記録されている。例えば、画面の水平走査方向に隣接する２つのピクセルのインデックスの遷移に関する遷移情報を算出し、算出された遷移情報のうち、出現頻度が上位４通りの情報を選出して作成された参照テーブルと、参照テーブルを参照して符号化されたピクセルデータが記録されている。
【００１３】
本発明の復号化装置においては、画像を構成するピクセルのうち、少なくとも２つ以上のピクセルのインデックスの遷移に関する遷移情報を算出し、算出された遷移情報の一部を所定の方法により選出して作成された参照テーブルを参照テーブル記憶手段が記憶し、参照テーブルを参照して符号化された画像データを入力する入力手段と、入力手段より入力された画像データを、参照テーブル記憶手段に記憶されている参照テーブルを参照して、復号化手段が復号化し、カラールックアップテーブルをカラールックアップテーブル記憶手段が記憶し、復号化手段により復号化された画像データを、カラールックアップテーブル記憶手段に記憶されているカラールックアップテーブルを参照して、変換手段が、元の信号に変換する。例えば、画面の水平走査方向に隣接する２つのピクセルのインデックスの遷移に関する遷移情報を算出し、算出された遷移情報のうち、出現頻度が上位４通りの情報を選出して作成された参照テーブルを参照テーブル記憶手段が記憶し、入力手段より入力された符号化された画像データを、参照テーブル記憶手段に記憶されている参照テーブルを参照することにより、復号化手段がもとの画像データに復号化する。
【００１４】
本発明の復号化方法においては、画像を構成するピクセルのうち、少なくとも２つ以上のピクセルのインデックスの遷移に関する遷移情報を算出し、算出された遷移情報の一部を所定の方法により選出して作成された参照テーブルを参照テーブル記憶ステップが記憶し、参照テーブルを参照して符号化された画像データを入力する入力ステップと、入力ステップより入力された画像データを、参照テーブル記憶ステップに記憶されている参照テーブルを参照して、復号化ステップが復号化し、カラールックアップテーブルをカラールックアップテーブル記憶ステップが記憶し、復号化手段により復号化された画像データを、カラールックアップテーブル記憶手段に記憶されているカラールックアップテーブルを参照して、変換ステップが元の信号に変換する。例えば、画面の水平走査方向に隣接する２つのピクセルのインデックスの遷移に関する遷移情報を算出し、算出された遷移情報のうち、出現頻度が上位４通りの情報を選出して作成された参照テーブルを参照テーブル記憶ステップが記憶し、入力ステップより入力された符号化された画像データを、参照テーブル記憶ステップに記憶されている参照テーブルを参照して、復号化ステップがもとの画像データに復号化する。
【００１５】
【発明の実施の形態】
図１は、本発明の一実施形態の家庭用ＴＶゲーム機の構成の一例を示している。
【００１６】
この図に示すように、家庭用ＴＶゲーム機は、装置全体の制御を行うＣＰＵ（Central Processing Unit）１（遷移情報算出手段、参照テーブル作成手段、符号化手段、可変長符号化手段）、座標変換などのジオメトリ演算を行うＧＴＥ（Graphic Transfer Engine）２、データを一時的に格納するためのメインメモリ３、画像データやプログラムが記録されているＣＤ−ＲＯＭからデータを読み出すＣＤ−ＲＯＭドライブ４、画像の処理を行うＧＰＵ（Graphic Processing Unit）５、ＧＰＵ５で処理された画像データを格納するフレームバッファ６、および、フレームバッファ６から出力された映像信号を表示するテレビジョン受像機７により構成されている。
【００１７】
次に、この実施の形態の動作について説明する。
【００１８】
家庭用ＴＶゲーム機の電源がオンの状態とされると、ＣＰＵ１は、メインメモリ３に内蔵されているＲＯＭ（Read Only Memory）から、起動プログラムを読み込む。そして、その起動プログラムを実行し、オペレーティングシステムを動作させる。
【００１９】
ＣＰＵ１は、ＣＤ−ＲＯＭドライブ４から、アプリケーションプログラムを読み出し、メインメモリ３に内蔵されているＲＡＭ（Read Only Memory）に格納する。そして、格納されたアプリケーションプログラムを１処理単位ずつ読み出し、実行する。
【００２０】
アプリケーションプログラムにおいて、画像データが表示される処理が実行された場合、ＣＰＵ１は、ＣＤ−ＲＯＭドライブ４から、複数の基本図形（ポリゴン）で構成された３次元オブジェクトデータ（ポリゴンの頂点（代表点）の座標値など）を読み出し、ＧＴＥ２に供給する。
【００２１】
ＧＴＥ２は、ＣＰＵ１から供給された各ポリゴンの頂点の座標に対して、座標変換などのジオメトリ演算を実行し、得られたデータをＧＰＵ５に供給する。
【００２２】
ＧＰＵ５は、ＣＰＵ１を介してＧＴＥ２から出力されるポリゴンの座標値（３次元座標値）などのデータを入力し、その３次元の座標値を、所定の表示部に対応する２次元の座標値に変換した後、それらのデータからポリゴンに対応するピクセルデータを生成し、そのピクセルデータをフレームバッファ６に書き込み、レンダリング処理を実行する。
【００２３】
また、ゲームに登場するキャラクタ以外の画像（例えば、背景の画像）などは、後述する画像圧縮処理が施されて、図示せぬＣＤ−ＲＯＭに記録されている。ＧＰＵ５は、ＣＤ−ＲＯＭドライブ４から、後述する圧縮処理が施された画像データを読み出し、伸長処理を施した後、フレームバッファ６に出力する。フレームバッファ６では、ポリゴンから生成されたピクセルデータと、伸長された画像のピクセルデータに対して所定の重畳処理が施される。
【００２４】
フレームバッファ６に書き込まれたピクセルデータは、ＮＴＳＣ方式に準拠する映像信号に変換され、テレビジョン受像機７に出力される。テレビジョン受像機７は、入力された映像信号を画像として表示出力する。
【００２５】
図２は、図３のＣＰＵ４０で実行される画像の符号化処理（後述する）と、図１のＧＰＵ５において実行される復号化処理の概要を示す図である。
【００２６】
前述したように、ＣＤ−ＲＯＭに記録されている画像データには、ポリゴンの頂点座標として記録されているものと、圧縮処理が施されたピクセルデータとして記録されているものの２種類がある。そのうち、圧縮処理が施されたピクセルデータは、以下のようなプロセスにより圧縮され、また、伸長処理が施される。
【００２７】
即ち、４ビットのピクセルデータＡ乃至Ｃは、２ビットのピクセルデータＸ1乃至Ｘ3に符号化される。そして、４ビットのピクセルデータＡ’乃至Ｃ’に復号化される。なお、符号化される場合に情報の取捨が行われるため、もとのピクセルデータＡ乃至ＣとＡ’乃至Ｃ’と同一とは限らない。
【００２８】
従って、本実施の形態では、先ず、Ａ＝Ａ’となるような符号化を探索し、それが不可能な場合（Ａ≠Ａ’）には、次のピクセルデータの符号化前と復号化後の値が一致する（Ｂ＝Ｂ’）ような符号化を探索する。次のピクセルデータにおいても、それが困難な場合（Ｂ≠Ｂ’）には、更に次のピクセルデータの符号化前と復号化後の値が一致する（Ｃ＝Ｃ’）ような符号化が探索されることになる。
【００２９】
なお、以上の実施の形態では、３つのピクセルデータの場合について説明したが、４つ以上のピクセルデータに対しても、本発明は適用可能であることは勿論である。
【００３０】
次に、符号化装置の構成の一例について説明する。
【００３１】
図３は、本発明の符号化装置の一実施の形態の構成を示すブロック図である。この図において、ＣＰＵ４０は、各種演算を実行するとともに、装置各部の制御を行うようになされている。メモリ４１は、ＲＡＭおよびＲＯＭにより構成されており、ＣＰＵ４０が実行するプログラムを記憶しているとともに、演算の途中経過のデータ等を一時的に記憶するようになされている。ハードディスク装置４２は、符号化しようとするピクセルデータを記録している。ＣＤ作成装置４３は、ＣＰＵ４０から供給される符号化されたデータをＣＤ原盤に記録するようになされている。データが記録されたＣＤ原盤をマスタとしてスタンパ処理を施すことにより、ＣＤを作成することが可能となる。
【００３２】
次に、この実施の形態の動作について、図４に示すフローチャートを参照して説明する。この処理は、図３に示すメモリ４１またはハードディスク装置４２に格納されており、ＣＰＵ４０によって１処理単位ずつ読み出され、実行される。
【００３３】
この処理が実行されると、ＣＰＵ４０は、ステップＳ１において、ハードディスク装置４２から符号化しようとするピクセルデータを、１処理単位ずつ読み出す。
【００３４】
なお、ピクセルデータは、隣接する複数の画素を単位ピクセル（Pixel）とし、各ピクセルの表示色に対応する参照値（インデックス）とされている。即ち、図６に示すように、インデックス“０”のピクセルは、Ｒ＝３０，Ｇ＝９２，Ｂ＝２４０の３種類の信号からなる。また、同様に、インデックス“１”のピクセルは、Ｒ＝５５，Ｇ＝１８９，Ｂ＝９２の信号からなる。
【００３５】
図４に戻って、ピクセルデータの入力が終了すると、ステップＳ２に進み、読み込まれたピクセルデータから参照テーブル（後述する）を作成し、メモリ４１に格納するとともに、ＣＤ作成装置４３に出力し、記録させる。
【００３６】
そして、ステップＳ３に進み、ＣＰＵ４０は、ステップＳ２において作成された参照テーブルに基づき、ピクセルデータを符号化する。そして、ステップＳ４に進み、ＣＤ作成装置４３に符号化されたデータを出力して記録させる。
【００３７】
図５は、図４に示すステップＳ２の処理の詳細を示すフローチャートである。この処理が実行されると、ＣＰＵ４０は、ステップＳ２０において、所定の領域（例えば、１画面分）のピクセルデータ（１処理単位分のデータ）をメモリ４１から読み出す。
【００３８】
ステップＳ２１では、例えば、水平走査方向に隣接する２つのピクセルのインデックスの遷移の頻度を測定し、遷移頻度テーブルを作成する。そして、ステップＳ２２に進み、頻度が高い順に並び換え（ソート）を行う。
【００３９】
図７は、ステップＳ２２の処理の結果得られる遷移頻度テーブルの一例を示している。この図の縦方向は、直前のピクセルのインデックスを示しており、また、横方向は、出現頻度の順番を示している。各ピクセルは、０乃至１５の何れかの値を取る。
【００４０】
例えば、この図において、前ピクセルのインデックスが“０”である場合に、最も出現確率が大きい次のピクセルのインデックスは、“０”であり、その次に出現確率が大きいのが“１”，“１３”，“２”の順である。
【００４１】
図８は、図７における各ピクセルの出現頻度（％）を示している。例えば、前述のように、前ピクセルが“０”である場合に、インデックスが“０”のピクセルの出現頻度は６５％となっている。また、インデックスが“１”のピクセルの出現頻度は１７％となっている。
【００４２】
また、図の右端に示されているエントロピは、理想的なハフマンコーディングがなされた場合に必要なビット数を示している。即ち、ハフマンコーディングでは、発生確率の高い符号（この例ではインデックス）に対しては短い伝送符号を、また、発生確率の低い符号に対しては長い伝送符号を付与する。従って、ビット数が大きい程、エントロピが大きく、また、発生確率が高いことを示している。このようなエントロピＨは、以下に示す式により求めることができる。
【００４３】
Ｈ＝Σｐ（ｘ）ｌｏｇ2｛１／ｐ（ｘ）｝  ・・・（１）
【００４４】
但し、ｐ（ｘ）は、符号ｘの発生確率であり、エントロピＨの単位は、bit/sampleである。
【００４５】
なお、図７の例における全てのインデックスのエントロピの相加平均は１．３２である。
【００４６】
図５に戻って、ステップＳ２３では、ステップＳ２２でソートされた遷移頻度テーブルのうち、上位Ｍ種類が選択され、参照テーブルが作成される。図９は、Ｍ＝４に設定した場合に得られる参照テーブルを示している。即ち、図７の左から４列分のデータが選択され、図９に示す参照テーブルが作成される。
【００４７】
ステップＳ２４では、ＣＰＵ４０は、得られた参照テーブルをメモリ４１に出力するとともに、ＣＤ作成装置４３に出力し記録させる、そして処理を終了する（エンド）。
【００４８】
参照テーブルが作成されると、ＣＰＵ４０は、図４に示すステップＳ３以降の処理を実行し、ステップＳ１の処理において読み出されたピクセルデータを符号化してＣＤ記録作成装置４３に出力し、記録させる。
【００４９】
図１１乃至図１３は、図４のステップＳ３のピクセルデータ符号化処理の詳細を説明するフローチャートである。この処理は、参照テーブルが作成された後に実行されるようになされている。なお、これらのフローチャートの処理を説明する前に、図１０を参照して、これらの動作の概略を説明する。
【００５０】
図１０は、図１１乃至図１３のフローチャートの動作の概略を説明するための図である。いま、仮に、符号化前のピクセルのインデックスとして、Ｘ＝｛６，５，８，９｝が入力され、また、その場合の参照テーブルは、図９に示すものであるとする。
【００５１】
前述のように、図９の参照テーブルの列方向は、前のピクセルのインデックスを表し、また、行方向は、出現頻度の順番を示している。また、参照テーブルを２次元配列ｔｂｌにより表すとすると、参照テーブルの各要素ｔｂｌ［ｐ，ｊ］（０≦ｐ≦１５，０≦ｊ≦３）は、前ピクセルのインデックスがｐであり、出現頻度がｊ番目であるピクセルのインデックスを示している。例えば、“６”，“５”と連続するインデックス（前述のＸの第０番目と第１番目の要素（４ビット））を符号化することを考える。この場合、前ピクセルのインデックスを“６”とし、現ピクセルのインデックスを“５”とすると、これは、ｔｂｌ［６，３］＝５に対応している。従って、これら２つのインデックスを、このようなピクセルの遷移の順番を用いて“３”（２ビット）と表すことにする。
【００５２】
同様にして、Ｘの第１番目の要素“５”と第２番目の要素“８”は、ｔｂｌ［５，２］＝８に対応しており、従って、符号化値として“２”を得る。また、第２番目の要素“８”と第３番目の要素“９”とは、ｔｂｌ［８，２］＝９に対応しており、従って、符号化値として、“２”を得る。
【００５３】
以上の操作により、符号化後のデータＺ’として、Ｚ’＝｛３，２，２｝（２ビット）を得る。なお、符号化されたデータを復号する際には、Ｘの第０番目のデータ（＝６）が必要となるので、この“６”（４ビット）も、ＣＤ作成装置４３に同時に記録する。
【００５４】
以上のようにして符号化されたデータを復号化する場合は、Ｘの第０番目のインデックス“６”と、Ｚ’の第０番目のデータ“３”より、ｔｂｌ［６，３］＝５として、第１番目のデータを復号化する。また、第２番目のデータは、復号化された第０番目のデータ“５”と、Ｚ’の第１番目のデータ“２”から、ｔｂｌ［５，２］＝８を得る。更に、第３番目のデータも同様にして、ｔｂｌ［８，２］＝９を得ることができる。
【００５５】
次に、図９に示す参照テーブルに掲載されていないインデックスが、符号化しようとするデータに含まれている場合の動作について説明する。例えば、Ｘ＝｛２，３，５，８｝の場合について考える。
【００５６】
この場合、第０番目のインデックス“２”と第１番目のインデックス“３”は、ｔｂｌ［２，１］＝３より、“１”として符号化することが可能である。しかし、第１番目のインデックス“３”と第２番目のインデックス“５”は、図９の参照テーブル中には存在しない（図９の第３行目には“５”は存在しない）。
【００５７】
このような場合は、第１番目と第２番目のインデックスのマッチング（一致）を断念して、第２番目のインデックスの値を適宜変更し、変更された第２番目のインデックスと第３番目のインデックスのマッチングを図る。
【００５８】
即ち、図１０に示すように、第１番目のインデックスが“３”である場合、次に続くことができるインデックスは、参照テーブルより、“３”，“２”，“１”，“４”である。また、これらの次に続くことができる第３番目のインデックスは、参照テーブルから、第２番目のインデックスが“３”である場合は、“３”，“２”，“１”，“４”となる。また、第２番目のインデックスが“２”である場合は、“２”，“３”，“１”，“０”となる。以下、図１０に示す通りである。
【００５９】
ところで、Ｘの第３番目のインデックスは、“８”である。図１０に示す樹形図では、第２番目のインデックスが“１”である場合と、“４”である場合に、第３番目のインデックスのそれぞれ第１番目に“８”が含まれている。従って、第２番目のインデックスを、これらの何れかに置換することにより、第１番目乃至第３番目の全てにおいてマッチングを図ることができる。
【００６０】
しかしながら、第２番目のインデックスはもともと“５”であることから、この値を“１”または“４”に置換することにより、元のデータとの間に誤差を生ずることになる。そこで、これらのインデックス“１”、または、“４”のうち、誤差のより少ない方を選択し、参照テーブルにより変換を行う。いま、仮に、第２番目のインデックスとして、“１”を選択した場合の方が誤差が少ないとすると、もともとのピクセルデータＸ＝｛２，３，５，８｝は、Ｘ’＝｛２，３，１，８｝に変換される。そして、参照テーブルにより、変換が施され、Ｚ’＝｛１，２，１｝を得る。
【００６１】
なお、誤差の計算は、例えば、図６のカラールックアップテーブルにおいて、置換後と置換前のインデックスに対応するＲ，Ｇ，Ｂそれぞれの信号の差の２乗を加算した値を求め、この値がもっとも小さいくなるインデックスを選択するようにすればよい。
【００６２】
次に、図１１に示す処理について説明する。
【００６３】
この処理が実行されると、ステップＳ４０において、ＣＰＵ４０は、画像（画面）の垂直方向の座標を示す変数ｐを値“０”に初期設定する。そして、ステップＳ４１に進み、ＣＰＵ４０は、ｐの値が垂直方向のピクセル数Ｈよりも小さいか否かを判定する。その結果、ｐがＨよりも小さい（ＹＥＳ）と判定した場合は、ステップＳ４２に進み、また、ｐがＨよりも大きいかまたは等しい（ＮＯ）と判定した場合は処理を終了する（エンド）。
【００６４】
ステップＳ４２では、ＣＰＵ４０は、符号化後のピクセルのインデックスが格納される２次元配列Ｘ’の第（ｐ，０）番目に、符号化前のピクセルのインデックスが格納されている２次元配列Ｘの第（ｐ，０）番目の値を代入する。即ち、画面の水平方向の第０番目のピクセルのインデックスは、初期値として符号化せずに配列Ｘ’に格納する。
【００６５】
ステップＳ４３では、画面の水平方向の座標を示す変数ｑが値“１”に初期設定される。そして、ステップＳ４４に進み、ｑの値が画面の水平方向のピクセル数Ｗよりも小さいか否かが判定される。その結果、ｑの値がＷの値よりも大きいか、これらが等しい（ＮＯ）と判定された場合は、ステップＳ５１に進み、変数ｐの値が“１”だけインクリメントされた後、ステップＳ４１に戻り、同様の処理が繰り返される。また、ｑの値がＷよりも小さい（ＹＥＳ）と判定された場合は、ステップＳ４５に進む。
【００６６】
ステップＳ４５では、探索の最大長が代入される変数ｎｅｓｔｍａｘと、探索の結果を示すフラグが代入される変数ｓｕｃｃｅｓｓがそれぞれ値“０”に初期設定される。そして、ステップＳ４６に進み、探索長を格納する変数ｎｅｓｔが値“−１”に初期設定される。そして、ステップＳ４７に進み、図１２に示すサブルーチン（詳細は後述する）が呼び出されることになる。
【００６７】
ステップＳ４７のサブルーチンの処理が終了すると、ステップＳ４８に進み，変数ｎｅｓｔｍａｘの値が“１”だけインクリメントされる。そして、ステップＳ４９に進み、変数ｓｕｃｃｅｓｓの値が“１”よりも大きいか、または、等しいか否かが判定される。その結果、変数ｓｕｃｃｅｓｓの値が“０”である（ＮＯ）と判定された場合は、ステップＳ４６に戻り同様の処理が繰り返される。また、変数ｓｕｃｃｅｓｓの値が“１”よりも大きいか、または、等しい（ＹＥＳ）と判定された場合は、ステップＳ５０に進む。
【００６８】
ステップＳ５０では、変数ｑに変数ｎｅｓｔｍａｘの値が加算された後、ステップＳ４４に戻り同様の処理が繰り返されることになる。
【００６９】
次に、図１２に示すフローチャートについて説明する。
【００７０】
ステップＳ４７において、図１２のサブルーチンが呼び出されると、ステップＳ７０において、変数ｎｅｓｔの値が“１”だけインクリメントされる。そして、ステップＳ７１に進み、変数ｒに、水平方向のピクセルの現在の座標ｑと、探索長ｎｓｅｔを加算した値が代入される。そして、ステップＳ７２に進む。
【００７１】
ステップＳ７２では、ｎｅｓｔの値がｎｅｓｔｍａｘの値よりも小さいか否かが判定される。その結果、ｎｅｓｔの値がｎｅｓｔｍａｘの値よりも小さい（ＹＥＳ）と判定された場合は、ステップＳ７４に進み、また、ｎｅｓｔの値がｎｅｓｔｍａｘの値よりも大きいか、これらが等しい（ＮＯ）と判定された場合は、ステップＳ７９に進む。
【００７２】
ステップＳ７４では、変数ｋが“０”に初期設定される。そして、ステップＳ７５に進み、変数ｋの値がＭの値（図５において、参照テーブルを作成する際に選択されたデータの種類）よりも小さいか否かが判定される。その結果、変数ｋの値がＭの値よりも小さい（ＹＥＳ）と判定された場合は、ステップＳ７６に進み、また、変数ｋの値がＭの値よりも大きいか、これらが等しい（ＮＯ）と判定された場合は、ステップＳ９３に進む。
【００７３】
ステップＳ７６では、図９に示す参照テーブルが格納されている２次元配列ｔｂｌの第（Ｘ’［ｐ，ｒ−１］，ｋ）番目の要素が、符号化後のピクセルのインデックスが格納される配列Ｘ’の第（ｐ，ｒ）番目に代入される。また、符号化値が格納される２次元配列Ｚの第（ｐ，ｒ）番目に変数ｋの値が格納される。そして、ステップＳ７７に進む。
【００７４】
なお、図１２に示すサブルーチンは再帰構造となっているので、ステップＳ７７により呼び出される処理は、図１２に示す処理自体となる。即ち、ステップＳ７７の処理が実行されると、ステップＳ７０の処理に戻り、同様の処理が繰り返されることになる。この部分の詳細な説明については、後述する。
【００７５】
ステップＳ７７の処理が終了すると、ステップＳ７８に進み、変数ｋの値が“１”だけインクリメントされ、ステップＳ７５に戻り同様の処理が繰り返される。そして、変数ｋの値がＭと等しくなった時点で、ステップＳ９３に進むことになる。
【００７６】
また、ステップＳ７２において、変数ｎｅｓｔの値が変数ｎｅｓｔｍａｘの値よりも大きいか、これらが等しい（ＮＯ）と判定された場合は、ステップＳ７９に進む。ステップＳ７９では、変数ｋが“０”に初期設定される。そして、ステップＳ８０に進み、変数ｋの値がＭの値よりも小さいか否かが判定される。その結果、変数ｋの値がＭの値よりも大きいか、これらが等しい（ＮＯ）と判定された場合は、ステップＳ９３に進む。また、変数ｋの値がＭの値よりも小さい（ＹＥＳ）と判定された場合は、ステップＳ８１に進む。
【００７７】
ステップＳ８１では、図９に示す参照テーブルが格納されている２次元配列ｔｂｌの第（Ｘ’［ｐ，ｒ−１］，ｋ）番目の要素と、符号化前のピクセルのインデックスが格納されている２次元配列Ｘの第（ｐ，ｒ）番目の要素が等しい（１）か、または、変数ｒの値がｗの値と等しい（２）か否かが判定される。その結果、これら（１），（２）の少なくとも１つが満足される（ＹＥＳ）と判定された場合は、ステップＳ８３に進み、また、何れも満足されない（ＮＯ）と判定された場合は、ステップＳ８２に進む。ステップＳ８２では、変数ｋの値が“１”だけインクリメントされ、ステップＳ８０に戻り同様の処理が繰り返されることになる。
【００７８】
ステップＳ８１においてＹＥＳと判定された場合は、ステップＳ８３に進む。ステップＳ８３では、変数ｓｕｃｃｅｓｓの値が“１”だけインクリメントされ、ステップＳ８４に進む。ステップＳ８４の処理はサブルーチンとなっており、この処理については後述する。
【００７９】
ステップＳ８４の処理が終了すると、ステップＳ８５に進む。ステップＳ８５では、変数ｅｒｒに格納されている誤差積算値が、変数ｅｒｒｍｉｎに格納されている誤差積算値の最小値よりも小さい（１）か、または、変数ｓｕｃｃｅｓｓの値が“１”である（２）か否かが判定される。その結果、これら（１），（２）の少なくとも１つが満足されている（ＹＥＳ）と判定された場合は、ステップＳ８６に進み、また、何れも満足されない（ＮＯ）と判定された場合は、ステップＳ９３に進む。
【００８０】
ステップＳ８６では、変数ｅｒｒの値が変数ｅｒｒｍｉｎに代入される。即ち、現在までの誤差積算値の最小値が変数ｅｒｒの値によって更新される。
【００８１】
ステップＳ８７では、２次元配列Ｚの第（ｐ，ｒ）番目に変数ｋの値が格納され、ステップＳ８８に進む。ステップＳ８８では、配列Ｘの第（ｐ，ｒ）番目の要素が配列Ｘ’の第（ｐ，ｒ）番目に代入される。そして、ステップＳ８９に進み、変数ｊに変数ｑの値が代入される。
【００８２】
ステップＳ９０では、変数ｊの値が変数ｒの値よりも小さいか、または、これらが等しいか否かが判定される。その結果、変数ｊの値が変数ｒの値よりも大きい（ＮＯ）と判定された場合は、ステップＳ９３に進む。また、変数ｊの値が変数ｒの値よりも小さいか、これらが等しい（ＹＥＳ）と判定された場合は、ステップＳ９１に進む。
【００８３】
ステップＳ９１では、配列Ｚの第（ｐ，ｊ）番目の要素が、配列Ｚ’の第（ｐ，ｊ）番目に代入される。そして、ステップＳ９２に進み、変数ｊの値が“１”だけインクリメントされ、ステップＳ９０に戻り同様の処理が繰り返されることになる。そして、変数ｊの値が変数ｒの値よりも大きくなった時点でステップＳ９３に進む。
【００８４】
ステップＳ９３では、変数ｎｅｓｔの値が“１”だけディクリメントされ、元の処理に復帰（リターン）する。即ち、ステップＳ７７の処理から呼び出された（コールされた）場合には、ステップＳ７８の処理に復帰する。また、図１１のステップＳ４７の処理から呼び出された場合は、ステップＳ４８の処理に復帰することになる。
【００８５】
図１３は、図１２のステップＳ８４に示すサブルーチン（ＥＲＲＯＲ）の処理の詳細を説明するフローチャートである。この処理が実行されると、ステップＳ１００において、誤差積算値が格納される変数ｅｒｒが“０”に初期設定される。そして、ステップＳ１０１に進み、変数ｒに変数ｑの値が代入され、ステップＳ１０２に進む。
【００８６】
ステップＳ１０２では、変数ｒの値が（ｑ＋ｎｅｓｔｍａｘ）の値よりも小さいか否かが判定される。その結果、変数ｒの値が（ｑ＋ｎｅｓｔｍａｘ）の値よりも小さい（ＹＥＳ）と判定された場合は、ステップＳ１０３の処理に進む。
【００８７】
ステップＳ１０３の処理では、変数ｅｒｒの現在の値に、｛Ｒ（Ｘ’［ｐ，ｒ］）−Ｒ（Ｘ［ｐ，ｒ］）｝2の値が加算される。即ち、配列ＸとＸ’によって指定される、カラールックアップテーブル（後述する）の赤信号のレベル差（誤差）の２乗の値が、変数ｅｒｒに加算される。
【００８８】
ステップＳ１０４の処理では、変数ｅｒｒの現在の値に、｛Ｇ（Ｘ’［ｐ，ｒ］）−Ｇ（Ｘ［ｐ，ｒ］）｝2の値が加算される。即ち、配列ＸとＸ’によって指定される、カラールックアップテーブルの緑信号のレベル差（誤差）の２乗の値が、変数ｅｒｒに加算される。
【００８９】
ステップＳ１０５の処理では、変数ｅｒｒの現在の値に、｛Ｂ（Ｘ’［ｐ，ｒ］）−Ｂ（Ｘ［ｐ，ｒ］）｝2の値が加算される。即ち、配列ＸとＸ’によって指定される、カラールックアップテーブルの青信号のレベル差（誤差）の２乗の値が、変数ｅｒｒに加算される。
【００９０】
そして、ステップＳ１０６に進み、変数ｒの値が“１”だけインクリメントされ、ステップＳ１０２に戻り同様の処理が繰り返されることになる。そして、変数ｒの値と（ｑ＋ｎｅｓｔｍａｘ）の値が等しくなった時点で、元の処理に復帰（リターン）することになる。
【００９１】
次に、以上のフローチャートの動作を具体的に説明する。
【００９２】
いま、ピクセルデータとして、Ｘ［０，ｉ］＝｛２，３，５，８｝（ｉ＝０，１，２，３）が読み込まれたとする（Ｈ＝１，Ｗ＝４）。また、このとき、これらのデータに対する参照テーブが図９に示すものである場合について考える。なお、このときの処理は、前述の場合と同様であるので、図１０の樹形図を適宜参照しながら説明する。
【００９３】
以上のような状況において、図１１に示す処理が実行されると、ステップＳ４０において、画面の垂直方向の座標を示す変数ｐが“０”に初期設定される。そして、ステップＳ４１に進み、変数ｐの値が水平方向のピクセル数Ｈ（＝１）よりも小さいか否かが判定される。いま、ｐ＝０であるので、ＹＥＳと判定され、ステップＳ４２に進む。
【００９４】
ステップＳ４２では、配列Ｘ’の第（ｐ，０）番目に、配列Ｘの第（ｐ，０）番目の値が代入される。即ち、いま、ｐ＝０であることから、配列Ｘ’の第（０，０）番目に、インデックス“２”が格納されることになる。
【００９５】
ステップＳ４３では、画面の水平方向の座標を示す変数ｑに値“１”が代入され、ステップＳ４４に進む。
【００９６】
ステップＳ４４では、変数ｑの値が水平方向のピクセル数Ｗ（＝４）よりも小さいか否かが判定される。いま、ｑ＝１であるので、ＹＥＳと判定され、ステップＳ４５に進む。
【００９７】
ステップＳ４５では、変数ｎｅｓｔｍａｘと変数ｓｕｃｃｅｓｓが“０”に初期設定される。そして、ステップＳ４６においては、変数ｎｅｓｔが“−１”に初期設定される。
【００９８】
そして、ステップＳ４７に進み、図１２に示すサブルーチンが呼び出されることになる。
【００９９】
図１２に示すサブルーチンが呼び出されると、ステップＳ７０において、変数ｎｅｓｔの値が“１”だけインクリメントされる。そして、ステップＳ７１において、変数ｒに値（ｑ＋ｎｅｓｔ）が代入される。いま、ｎｅｓｔ＝−１であるから、ステップＳ７０の処理により、ｎｅｓｔ＝０（−１＋１）となり、また、ｑ＝１であるので、ステップＳ７１の処理によりｒ＝１（＝１＋０）となる。
【０１００】
ステップＳ７２では、ｎｅｓｔ＝０，ｎｅｓｔｍａｘ＝０であるので、ＮＯと判定され、ステップＳ７９に進む。
【０１０１】
ステップＳ７９では、変数ｋが“０”に初期設定される。ステップＳ８０では、変数ｋの値がＭ（図５において、参照テーブルを作成する際に選択されたデータの種類）の値よりも小さいか否かが判定される。いま、ｋ＝０であり、また、Ｍ＝４であるので、ＹＥＳと判定され、ステップＳ８１に進む。
【０１０２】
ステップＳ８１では、図９に示す参照テーブルが格納されている２次元配列ｔｂｌの第（Ｘ’［ｐ，ｒ−１］，ｋ）番目の要素が、符号化前のピクセルのインデックスが格納されている２次元配列Ｘの第（ｐ，ｒ）番目の要素と等しいか否かが判定される。いま、ｐ＝０，ｒ＝１であるので、配列ｔｂｌの第（Ｘ’［０，０］，０）番目の要素と、配列Ｘの第（０，１）番目の要素が比較される。
【０１０３】
配列Ｘ’の第（０，０）番目には、図１１のステップＳ４２において、配列Ｘの第（０，０）番目の要素“２”が代入されているので、Ｘ’［０，０］＝２となり、配列ｔｂｌの第（２，０）番目（図９の第２行目の第０列め）の要素は、“２”となる。また、配列Ｘの第（０，１）番目の要素は、“３”である。従って、これらは等しくない（ＮＯ）と判定され、ステップＳ８２に進み、変数ｋの値が“１”だけインクリメントされ、ステップＳ８０に戻る。
【０１０４】
いま、ｋ＝１であるので、ステップＳ８０では、ＹＥＳと判定され、ステップＳ８１に進む。ステップＳ８１では、ｋ＝１であることから、配列ｔｂｌの第（２，１）番目（図９の第２行目の第１列目）の要素は、“３”となり、配列Ｘの第（０，１）番目の要素“３”と等しい（ＹＥＳ）と判定され、ステップＳ８３に進む。
【０１０５】
ステップＳ８３では、変数ｓｕｃｃｅｓｓの値が“１”だけインクリメントされ、ｓｕｃｃｅｓｓ＝１とされた後、ステップＳ８４に進み、図１３のサブルーチンが呼び出される。
【０１０６】
図１３のサブルーチンのステップＳ１００では、変数ｅｒｒが“０”に初期設定される。そして、ステップＳ１０１では、変数ｒにｑの値が代入される。いま、ｑ＝１であるので、ｒ＝１となる。
【０１０７】
次に、ステップＳ１０２では、変数ｒの値が（ｑ＋ｎｅｓｔｍａｘ）の値よりも大きいか否かが判定される。いま、ｒ＝１であり、また、ｑ＝１，ｎｅｓｔｍａｘ＝０であるので、ステップＳ１０２では、ＮＯと判定され、図１２のステップＳ８５に復帰する。
【０１０８】
ステップＳ８５では、変数ｅｒｒの値が変数ｅｒｒｍｉｎの値よりも小さいか、または、変数ｓｕｃｃｅｓｓの値が“１”であるか否かが判定される。いま、ｓｕｃｃｅｓｓ＝１であるので、ステップＳ８５ではＹＥＳと判定され、ステップＳ８６に進む。
【０１０９】
ステップＳ８６では、変数ｅｒｒの値（＝０）が変数ｅｒｒｍｉｎに代入される。そして、ステップＳ８７に進み、変数ｋの値が２次元配列Ｚの第（ｐ，ｒ）番目に代入される。即ち、Ｚ［０，１］＝１とされる。そして、ステップＳ８８に進み、配列Ｘの第（ｐ，ｒ）番目の要素が配列Ｘ’の第（ｐ，ｒ）番目に代入される。いま、ｐ＝０，ｒ＝１であるので、配列Ｘの第（０，１）番目の要素“３”が、配列Ｘ’の第（０，１）番目に代入されることになる。
【０１１０】
続くステップＳ８９では、変数ｑ（＝１）の値が変数ｊに代入され、ステップＳ９０に進む。
【０１１１】
ステップＳ９０では、変数ｊの値が変数ｒの値よりも小さいか、または等しいか否かが判定される。いま、ｊ＝１であり、ｒ＝１であるので、ＹＥＳと判定され、ステップＳ９１に進む。
【０１１２】
ステップＳ９１では、配列Ｚの第（ｐ，ｊ）番目の要素が配列Ｚ’の第（ｐ，ｊ）番目に代入される。即ち、いま、ｊ＝１，ｐ＝０であるので、配列Ｚ’の第（０，１）番目の要素“１”が配列Ｚ’の第（０，１）番目に代入されることになる。
【０１１３】
そして、ステップＳ９２に進み、変数ｊの値が“１”だけインクリメントされてｊ＝２とされた後、ステップＳ９０に戻る。ステップＳ９０では、ｊ＝２であり、また、ｒ＝１であるので、ＮＯと判定され、ステップＳ９３に進む。
【０１１４】
ステップＳ９３では、変数ｎｅｓｔの値が“１”だけディクリメントされ、元の処理（図１１のステップＳ４８）に復帰（リターン）する。
【０１１５】
ステップＳ４８では、変数ｎｅｓｔｍａｘの値が“１”だけインクリメントされ、ステップＳ４９に進む。ステップＳ４９では、変数ｓｕｃｃｅｓｓの値が“１”以上であるか否かが判定される。いま、図１２のステップＳ８３の処理において、ｓｕｃｃｅｓｓ＝１とされているので、ＹＥＳと判定され、ステップＳ５０に進む。
【０１１６】
ステップＳ５０では、変数ｑに変数ｎｅｓｔｍａｘの値が加算され、ｑ＝２とされ、ステップＳ４４に戻る。
【０１１７】
ステップＳ４４では、ｑ＜Ｗ（＝４）であることからＹＥＳと判定され、ステップＳ４５に進む。そして、変数ｎｅｓｔｍａｘと変数ｓｕｃｃｅｓｓの値がそれぞれ“０”に再度初期設定される。
【０１１８】
ステップＳ４６では、変数ｎｅｓｔが“−１”に初期設定され、ステップＳ４７に進み、サブルーチンが再度呼び出される。
【０１１９】
図１２のステップＳ７０では、変数ｎｅｓｔの値が“１”だけインクリメントされ、ｎｅｓｔ＝０とされる。また、ステップＳ７１では、変数ｒに（ｑ＋ｎｅｓｔ）の値（＝２）が代入され、ステップＳ７２に進む。
【０１２０】
ステップＳ７２では、ｎｅｓｔ＝０，ｎｅｓｔｍａｘ＝０であることから、ＮＯと判定され、ステップＳ７９に進み、変数ｋの値が“０”に初期設定された後、ステップＳ８０に進む。
【０１２１】
ステップＳ８０では、変数ｋの値が変数Ｍの値よりも小さいか否かが判定される。いま、ｋ＝０であり、また、Ｍ＝４であるので、ＹＥＳと判定され、ステップＳ８１に進む。
【０１２２】
ステップＳ８１では、前述のように、図９に示す参照テーブルが格納されている配列ｔｂｌの第（Ｘ’［ｐ，ｒ−１］，ｋ）番目の要素と、符号化前のピクセルのインデックスが格納される配列Ｘの第（ｐ，ｒ）番目の要素が等しいか、または、変数ｒの値が画面の水平方向のピクセル数Ｗの値と等しいか否かが判定される。いま、ｐ＝０，ｒ＝２，ｋ＝０であるから、配列ｔｂｌの第（Ｘ’［０，１］，０）番目の要素と配列Ｘの第（０，２）番目の要素が比較される。
【０１２３】
配列Ｘ’の第（０，１）番目の要素は、ステップＳ８８の処理において、値“３”が代入されているので、Ｘ’［０，１］＝３である。従って、ｔｂｌ［３，０］＝３となり、また、配列Ｘの第（０，２）番目の要素は“５”であるので、ｔｂｌ（Ｘ’［ｐ，ｒ−１］，ｋ）≠Ｘ［ｐ，ｒ］となる。更に、ｒ≠Ｗであるので、ステップＳ８１では、ＮＯと判定され、ステップＳ８２に進む。
【０１２４】
図１２に戻って、ステップＳ８２では、変数ｋの値が“１”だけインクリメントされ、ステップＳ８０に戻る。
【０１２５】
ステップＳ８０では、ｋ＝１であるので、ＮＯと判定され、ステップＳ８１に進む。ステップＳ８１では、配列ｔｂｌの第（Ｘ’［０，１］，１）番目の要素“２”（図９の第３行目の第１列目の要素）と、配列Ｘの第（０，２）番目の要素“５”が比較される。その結果、ＮＯと判定され、ステップＳ８２に進む。
【０１２６】
第２回目と第３回目の処理（ｋ＝２，３）では、図９に示す配列ｔｂｌの第３行目の第２列目の要素（＝１）と第３列目の要素（＝４）と、配列Ｘの第（０，２）番目の要素（＝５）がそれぞれ比較される。そして、双方ともにＮＯと判定され、第４回目の処理において、ステップＳ８０でＮＯと判定され、ステップＳ９３に進む。そして、ステップＳ９３において、変数ｎｅｓｔの値が“１”だけディクリメントされ、図１１のステップＳ４８に復帰（リターン）する。
【０１２７】
即ち、第１番目と第２番目のピクセルの遷移パターンは、参照テーブルに含まれていないと判定されたので、その場合、第１番目のピクセルの後に継続可能なピクセルのインデックスを参照テーブルより見つけだし（この場合“３”，“２”，“１”，“４”が継続可能）、更にその次（第３番目）に継続可能なピクセルのインデックスを同様に参照テーブルより見つけだすことにより作成される樹形図（図１０参照）の各パスのうちで最適なパスを以降の処理により選択する。
【０１２８】
ステップＳ４８では、変数ｎｅｓｔｍａｘの値が“１”だけインクリメントされてｎｅｓｔｍａｘ＝１とされ、ステップＳ４９に進む。ステップＳ４９では、ｓｕｃｃｅｓｓ＝０であるので、ＮＯと判定され、ステップＳ４６に戻る。
【０１２９】
ステップＳ４６では、変数ｎｅｓｔの値が“−１”に再設定され、ステップＳ４７においてサブルーチンが呼び出される。
【０１３０】
図１２のステップＳ７０では、変数ｎｅｓｔの値が“１”だけインクリメントされてｎｅｓｔ＝０とされる。ステップＳ７１では、変数ｒに（ｑ＋ｎｅｓｔ）の値（＝２）が代入される。
【０１３１】
ステップＳ７２では、変数ｎｅｓｔの値が変数ｎｅｓｔｍａｘの値よりも小さいか否かが判定され、いま、ｎｅｓｔ＝０，ｎｅｓｔｍａｘ＝１であるので、ＹＥＳと判定され、ステップＳ７４に進む。
【０１３２】
ステップＳ７４では、変数ｋの値が“０”に初期設定され、ステップＳ７５に進み、変数ｋの値がＭの値（図５において、参照テーブルを作成する際に選択されたデータの種類）よりも小さいか否かが判定される。いま、ｋ＝０，Ｍ＝４であるので、ＹＥＳと判定され、ステップＳ７６に進む。
【０１３３】
ステップＳ７６では、配列ｔｂｌの第（Ｘ’［ｐ，ｒ−１］，ｋ）番目の要素が配列Ｘ’の第（ｐ，ｒ）番目に代入されるとともに、変数ｋの値が配列Ｚの第（ｐ，ｒ）番目に格納される。即ち、いま、ｐ＝０，ｒ＝２であるので、Ｘ’［ｐ，ｒ−１］＝３であり、また、ｋ＝０であるので、ｔｂｌ［３，０］の要素“３”が配列Ｘ’の第（０，２）番目に代入されるとともに、配列Ｚの第（０，２）番目に値“０”が代入される。即ち、図１０の樹形図において、第２番目のピクセルのインデックスとして“３”が選択される。そして、ステップＳ７７に進む。
【０１３４】
ステップＳ７７では、サブルーチンが呼び出される。前述のように、ステップＳ７７のサブルーチンコールの結果、図１２に示すサブルーチン自体が呼び出されることになるので、ステップＳ７０の処理が実行される。
【０１３５】
ステップＳ７０では、変数ｎｅｓｔの値が“１”だけインクリメントされ、ｎｅｓｔ＝１とされ、ステップＳ７１に進む。ステップＳ７１では、変数ｒに（ｑ＋ｎｅｓｔ）の値（＝３）が代入される。
【０１３６】
続くステップＳ７２では、変数ｎｅｓｔの値と、変数ｎｅｓｔｍａｘの値が共に“１”であることから、ＮＯと判定され、ステップＳ７９に進む。
【０１３７】
ステップＳ７９では、変数ｋの値が“０”に初期設定され、ステップＳ８０に進む。ステップＳ８０では、Ｍ＝４であることからＹＥＳと判定され、ステップＳ８１に進む。
【０１３８】
ステップＳ８１では、配列ｔｂｌの第（Ｘ’［ｐ，ｒ−１］，ｋ）番目の要素と、配列Ｘの第（ｐ，ｒ）番目の要素が等しいか、または、変数ｒとＷの値が等しいか否かが判定される。いま、ｐ＝０，ｒ＝３，ｋ＝０であることから、Ｘ’［ｐ，ｒ−１］＝Ｘ’［０，２］＝３（ステップＳ７６において代入された値）となるので、ｔｂｌ（Ｘ’［ｐ，ｒ−１］，ｋ）＝ｔｂｌ［３，０］＝３（図９の第３行目の第０列目の要素）となる。また、Ｘ［ｐ，ｒ］＝Ｘ［０，３］＝８であるので、ステップＳ８１では、ＮＯと判定され、ステップＳ８２に進む。
【０１３９】
即ち、図１０の第２番目のピクセルのインデックスが“３”である場合であって、第３番目のピクセルのインデックスが“３”である場合に、この第３番目のインデックス“３”は、符号化前のデータ“８”とは一致しないのでＮＯと判定される。
【０１４０】
ステップＳ８２では、変数ｋの値が“１”だけインクリメントされてｋ＝１とされ、ステップＳ８０に戻る。ステップＳ８０では、Ｍ＝４であることからＹＥＳと判定され、ステップＳ８１に進む。
【０１４１】
ステップＳ８１では、前述の場合と同様に、配列ｔｂｌの第（３，１）番目の要素“２”（図１０の第２番目のインデックスが“３”であり、第３番目のインデックスが“２”である場合）と、配列Ｘの第（０，３）番目の要素“８”とが比較され、その結果、ＮＯと判定され、ステップＳ８２に進む。
【０１４２】
同様の処理は、配列ｔｂｌの第（３，２）番目の要素“１”と第（３，３）番目の要素“４”についても実行される。しかしながら、これらの何れの場合においてもＮＯ（配列Ｘの第（０，３）番目の要素“８”とは異なる）と判定され、第５回目のループ（ｋ＝４）のステップＳ８０でＮＯと判定され、ステップＳ９３に進む。そして、変数ｎｅｓｔの値が“１”だけディクリメントされてｎｅｓｔ＝０とされた後、元の処理（ステップＳ７８）に復帰（リターン）する。
【０１４３】
即ち、第２番目のインデックスが“３”である場合には、第３番目のインデックスとして“８”（符号化前のピクセルデータのインデックス）は継続しない（ＮＯ）と判定される。
【０１４４】
ステップＳ７８では、変数ｋの値が“１”だけインクリメントされてｋ＝１とされ、ステップＳ７５に戻る。ステップＳ７５では、ＹＥＳと判定されるので、ステップＳ７６に進む。ステップＳ７６では、配列ｔｂｌの第（Ｘ’［ｐ，ｒ−１］，ｋ）番目の要素が配列Ｘ’の第（ｐ，ｒ）番目に代入される。即ち、いま、ｐ＝０，ｒ＝２，ｋ＝１であるので、ｔｂｌ（Ｘ’［ｐ，ｒ−１］，ｋ）＝ｔｂｌ［３，１］＝２となり、この値“２”が配列Ｘ’の第（０，２）番目に代入されることになる。また、配列Ｚの第（０，２）番目に“１”が代入される。そして、ステップＳ７７に進み、サブルーチンが呼び出される（ステップＳ７０の処理が実行される）。
【０１４５】
即ち、これ以降の処理においては、第２番目のインデックスが“２”である場合（図１０参照）について処理が行われることになる。
【０１４６】
ステップＳ７０では、変数ｎｅｓｔの値が“１”だけインクリメントされ、ｎｅｓｔ＝１とされ、ステップＳ７１において、変数ｒに（ｑ＋ｎｅｓｔ）の値（＝３）が代入される。
【０１４７】
続くステップＳ７２では、ｎｅｓｔ＝１，ｎｅｓｔｍａｘ＝１であることからＮＯと判定され、ステップＳ７９に進み、変数ｋの値が“０”に初期設定される。そして、ステップＳ８０に進む。
【０１４８】
ステップＳ８０では、ｋ＝０であるのでＹＥＳ（０＜４）と判定され、ステップＳ８１に進む。ステップＳ８１では、配列ｔｂｌの第（Ｘ’［ｐ，ｒ−１］，ｋ）の要素と、配列Ｘの第（ｐ，ｒ）番目の要素が等しいか、または、変数ｒの値とＷとが等しいか否かが判定される。いま、ｐ＝０，ｒ＝３，ｋ＝０であるので、Ｘ’［ｐ，ｒ−１］＝２（ステップＳ７６において代入された値）である。従って、ｔｂｌ（Ｘ’［ｐ，ｒ−１］，ｋ）＝２となり、また、Ｘ［ｐ，ｒ］＝８であるので、ステップＳ８１では、ＮＯと判定され、ステップＳ８２に進む。
【０１４９】
即ち、第２番目のインデックスが“２”である場合の、第３番目のインデックスの第０番目の値は“２”であるので、符号化前のデータ“８”と一致しない（ＮＯ）と判定される。
【０１５０】
続いて、ｋ＝１，２，３の処理では、ｔｂｌ（Ｘ’［ｐ，ｒ−１］，ｋ）の値は、“３”，“１”，“０”（図１０の第２番目のインデックスが“２”である場合の第３番目のインデックスの第１乃至第３番目の値）となる。前述のように、Ｘ［ｐ，ｒ］＝８であるので、何れの処理においてもＮＯと判定される。従って、第４回目（ｋ＝４）のステップＳ８０においてＮＯと判定され、ステップＳ９３進む。そして、変数ｎｅｓｔの値が“１”だけディクリメントされてｎｅｓｔ＝０とされ、ステップＳ７８の処理に復帰（リターン）する。
【０１５１】
ステップＳ７８では、変数ｋの値が“１”だけインクリメントされてｋ＝２とされ、ステップＳ７５に戻り、ＹＥＳと判定され、ステップＳ７６に進む。そして、前述の場合と同様の処理が実行され、配列Ｘ’の第（０，２）番目に、配列ｔｂｌの第（３，２）番目の要素“１”が代入されるとともに、配列Ｚの第（０，２）番目に値“２”が代入され、ステップＳ７７において、サブルーチンが呼び出される。
【０１５２】
即ち、第２番目のインデックスの値が“１”とされ、サブルーチンが呼び出されることになる。
【０１５３】
それ以降の処理は、前述の場合と同様である。即ち、ステップＳ７０の処理によりｎｅｓｔ＝１とされ、また、ステップＳ７１の処理により、変数ｒに（ｑ＋ｎｅｓｔ）の値（＝３）が代入された後、ステップＳ７２において、ＮＯと判定され、ステップＳ７９に進む。
【０１５４】
そして、第０回目（ｋ＝０）の処理では、配列ｔｂｌの第（Ｘ’［ｐ，ｒ−１］，ｋ）番目の要素と、配列Ｘの第（ｐ，ｒ）番目の要素が等しいか、または、変数ｒの値とＷの値が等しいか否かが判定される。いま、ｐ＝０，ｒ＝３，ｋ＝０であるので、Ｘ’［ｐ，ｒ−１］＝１（ステップＳ７６で代入された値）となる。従って、ｔｂｌ（Ｘ’［ｐ，ｒ−１］，ｋ）＝１となり、また、Ｘ［ｐ，ｒ］＝８であることからＮＯと判定される。
【０１５５】
次に、第１回目（ｋ＝１）の処理では、ｔｂｌ（Ｘ’［ｐ，ｒ−１］，ｋ）＝８となるので、ステップＳ８１においてＹＥＳと判定される。即ち、図１０の第２番目のインデックスが“１”であり、第３番目のインデックスの第２番目は、“８”であるので、ＹＥＳと判定され、ステップＳ８３に進む。そして、変数ｓｕｃｃｅｓｓの値が“１”だけインクリメントされた後、ステップＳ８５に進み、図１３に示すサブルーチンがコールされることになる。
【０１５６】
図１３のステップＳ１００では、変数ｅｒｒが“０”に初期設定され、続くステップＳ１０１では、変数ｒに変数ｑの値（＝２）が代入される。そして、ステップＳ１０２に進む。
【０１５７】
ステップＳ１０２では、変数ｒの値が（ｑ＋ｎｅｓｔｍａｘ）の値よりも小さいか否かが判定される。いま、ｒ＝２であり、また、（ｑ＋ｎｅｓｔｍａｘ）＝３であるので、ＹＥＳと判定され、ステップＳ１０３に進む。
【０１５８】
ステップＳ１０３乃至ステップＳ１０５では、第２番目のインデックスを変更した（この場合、“５”から“１”に変更した）ことに伴い発生する、Ｒ，Ｇ，Ｂそれぞれの信号の誤差が計算され、変数ｅｒｒに代入される。
【０１５９】
即ち、配列Ｘ＝｛２，３，５，８｝であり、いま、第１番目の要素“３”と第２番目の要素“５”の遷移は、図９に示す遷移テーブルには存在しない（ｔｂｌの第３行目には要素“５”が存在しない）ので、第１番目と第２番目の要素との間でのマッチングを断念し、第２番目の要素と第３番目の要素との間でマッチングを図るために、配列Ｘ’の第２番目に、“３”，“２”，“１”，“４”をステップＳ７６においてそれぞれ代入し、ステップＳ８１の処理において、配列Ｘ’の第２番目の要素と、配列Ｘの第３番目の要素（＝８）との間でマッチングを図る（パスを検索する）。
【０１６０】
その結果マッチングが得られたパスに対して誤差を計算する。即ち、第２番目の要素は、元の要素（＝５）とは異なるので、新たな第２番目の要素を図６に示すカラールックアップテーブルに代入した場合、元のＲ，Ｇ，Ｂそれぞれの信号との間の誤差が生ずることになるので、これら各々の誤差の２乗の和をｅｒｒとして計算する。そして、マッチングが得られたパスの内、誤差が最小となるパスが選択されることになる。
【０１６１】
ステップＳ１０３では、変数ｅｒｒに｛Ｒ（Ｘ’［ｐ，ｒ］）−Ｒ（Ｘ［ｐ，ｒ］）｝2の値が加算される。同様に、ステップＳ１０４では、変数ｅｒｒに｛Ｇ（Ｘ’［ｐ，ｒ］）−Ｇ（Ｘ［ｐ，ｒ］）｝2の値が加算され、また、ステップＳ１０５では、変数ｅｒｒに｛Ｂ（Ｘ’［ｐ，ｒ］）−Ｂ（Ｘ［ｐ，ｒ］）｝2の値が加算される。
【０１６２】
そして、ステップＳ１０６に進み、変数ｒの値が“１”だけインクリメントされた後、ステップＳ１０２に戻る。ステップＳ１０２では、変数ｒの値が（ｑ＋ｎｅｓｔｍａｘ）の値よりも小さいか否かが判定される。いま、ｒ＝３，ｑ＝２，ｎｅｓｔｍａｘ＝１であるので、ＮＯと判定され、ステップＳ８５の処理に復帰（リターン）することになる。
【０１６３】
ステップＳ８５では、変数ｅｒｒの値が変数ｅｒｒｍｉｎの値よりも小さいか、または、変数ｓｕｃｃｅｓｓの値が“１”であるか否かが判定される。いま、ステップＳ８３において、ｓｕｃｃｅｓｓ＝１とされているので、ＹＥＳと判定され、ステップＳ８６に進む。そして、変数ｅｒｒｍｉｎに変数ｅｒｒの値が代入される。いまの場合、配列Ｘ’の第２番目の要素を“５”から“１”に変更したために生ずる誤差が変数ｅｒｒｍｉｎに代入されることになる。
【０１６４】
続くステップＳ８７において、配列Ｚの第（０，３）番目に変数ｋの値（＝１）が代入され、更に、ステップＳ８８において、配列Ｘの第（０，２）番目の要素“８”が、配列Ｘ’の第（０，２）番目に代入される。そして、ステップＳ８９に進み、変数ｊに変数ｑの値が代入される。いま、ｑ＝２であるので、ｊ＝２とされ、ステップＳ９０に進む。
【０１６５】
ステップＳ９０では、変数ｊの値が変数ｒの値以下であるか否かが判定される。いま、ｒ＝３であるので、ＹＥＳと判定され、ステップＳ９１に進む。ステップＳ９１では、配列Ｚの第（ｐ，ｊ）番目の要素が、配列Ｚ’の第（ｐ，ｊ）番目に代入される。即ち、Ｚ［０，２］＝２が、配列Ｚ’の第（０，２）番目に代入される。
【０１６６】
そして、ステップＳ９２に進み、変数ｊの値が“１”だけインクリメントされてｊ＝３とされた後、ステップＳ９０に戻る。ステップＳ９０では、ＹＥＳ（３≦３）と判定され、ステップＳ９１に進む。
【０１６７】
ステップＳ９１では、Ｚ［０，３］＝１が、配列Ｚ’の第（０，３）番目に代入された後、ステップＳ９２に進み、変数ｊの値が“１”だけインクリメントされた後、ステップＳ９０に戻り、ＮＯと判定されてステップＳ９３に進む。
【０１６８】
ステップＳ９３では、変数ｎｅｓｔの値が“１”だけディクリメントされてｎｅｓｔ＝０とされ、ステップＳ７８の処理に復帰（リターン）する。
【０１６９】
ステップＳ７８では、変数ｋの値が“１”だけインクリメントされてｋ＝３とされ、ステップＳ７５の処理に戻る。ステップＳ７５では、ＹＥＳ（３＜４）と判定され、ステップＳ７６に進む。
【０１７０】
ステップＳ７６では、配列ｔｂｌの第（Ｘ’［ｐ，ｒ−１］，ｋ）番目の要素が配列Ｘ’の第（ｐ，ｒ）番目に代入される。即ち、いま、ｐ＝０，ｒ＝３，ｋ＝３，ｒ＝２であるので、ｔｂｌ（Ｘ’［ｐ，ｒ−１］，ｋ）＝４となり、この値“４”が配列Ｘ’の第（０，２）番目に代入される。また、配列Ｚの第（０，２）番目に値“３”が代入される。そして、ステップＳ７７に進み、サブルーチンがコールされる（ステップＳ７０の処理が実行される）。
【０１７１】
即ち、図１０において、第２番目のインデックスの値が“４”である場合に対して処理が実行される。
【０１７２】
ステップＳ７０以降は、前述の場合と同様の処理が実行される。いま、配列ｔｂｌの第（４，１）番目の要素（図９の第５行目の第２列目）は、“８”であるので、１回目（ｋ＝１）のループのステップＳ８１において、ＹＥＳと判定され、ステップＳ８３に進む。
【０１７３】
即ち、図１０において、第２番目のインデックスが“４”である場合に、第３番目のインデックスの第１番目は“８”であるのでＹＥＳと判定される。
【０１７４】
ステップＳ８３では、変数ｓｕｃｃｅｓｓの値が“１”だけインクリメントされ、ステップＳ８４に進む。
【０１７５】
ステップＳ８４では、図１３に示すサブルーチンが呼び出され、前述の場合と同様に、第２番目のインデックスを“５”から“４”に変更したことにより生ずる誤差が計算され、変数ｅｒｒに代入されて復帰（リターン）する。
【０１７６】
ステップＳ８５では、変数ｅｒｒの値がｅｒｒｍｉｎの値よりも小さいか、または、変数ｓｕｃｃｅｓｓの値が“１”であるか否かが判定される。いま、仮に、ｅｒｒ＞ｅｒｒｍｉｎであるとする。即ち、図１０において、第２番目のインデックスが“１”である場合のパスの方が第２番目のインデックスが“４”である場合のパスよりも誤差が小さいとすると、ｓｕｃｃｅｓｓ＝２であるので、ステップＳ８５では、ＮＯと判定され、ステップＳ９３に進む。そして、変数ｎｅｓｔの値が“１”だけディクリメントされた後、ステップＳ７８の処理に復帰（リターン）する。
【０１７７】
ステップＳ７８では、変数ｋの値が“１”だけインクリメントされてｋ＝４とされ、ステップＳ７５に戻る。ステップＳ７５では、ＮＯと判定されるので、ステップＳ９３に進み、変数ｎｅｓｔの値が“１”だけディクリメントされた後、図１１のステップＳ４８に復帰（リターン）する。
【０１７８】
ステップＳ４８では、変数ｎｅｓｔｍａｘの値が“１”だけインクリメントされた後、ステップＳ４９に進む。ステップＳ４９では、ｓｕｃｃｅｓｓ＝２であることからＹＥＳと判定され、ステップＳ５０に進む。そして、変数ｑにｎｅｓｔｍａｘの値が加算されてｑ＝４とされ、ステップＳ４４の処理に戻る。
【０１７９】
いま、仮に、画面の水平方向のピクセル数Ｗ＝４であり、また、画面の垂直方向のピクセル数Ｈ＝１であるので、ステップＳ４４では、ＮＯと判定され、ステップＳ５１の処理に分岐する。
【０１８０】
ステップＳ５１では、変数ｐの値が“１”だけインクリメントされ、ステップＳ４１に戻る。いま、ｐ＝１であり、また、Ｈ＝１であるので、ステップＳ４１では、ＮＯと判定され、処理を終了する（エンド）。
【０１８１】
以上の処理によれば、符号化前のピクセルのインデックス（４ビット）として、Ｘ＝｛２，３，５，８｝が入力された場合、符号化後のピクセルのインデックス（４ビット）は、Ｘ’＝｛２，３，１，８｝となる。また、符号化後のデータＺ’（２ビット）は、Ｚ’＝｛１，２，１｝となる。
【０１８２】
従って、以上の実施の形態によれば、入力されたピクセルデータを、隣接するピクセルの遷移の出現頻度が大きい順にリストアップされた参照テーブルを参照することにより、効率よく圧縮処理することが可能となる。
【０１８３】
図１４は、図１に示すＧＰＵ５の詳細な構成の一例を示している。
【０１８４】
この図において、テーブル５０（参照テーブル記憶手段、入力手段、復号化手段）は、入力されるピクセルデータに対応する参照テーブル（図９参照）が格納されており、符号化された２ビットのデータ（以下、符号化データと略記する）の入力を受け、対応する４ビットのピクセルデータ（元のデータ）を出力するようになされている。遅延回路（Ｄ）５１（復号化手段）は、テーブル５０から出力された４ビットのデータを、１データ分だけ遅延し、テーブル５０に供給するようになされている。スイッチ５２は、ＧＰＵ５に入力されたピクセルデータが第０番目（最初）のデータ（４ビット）である場合は、スイッチをexceptional pass側に切り換え、このデータをカラールックアップテーブル５３（カラールックアップテーブル記憶手段、変換手段）に供給する。また、それ以外のデータ（２ビット）が入力された場合は、スイッチ５２の接続がテーブル５０側に変更され、テーブル５０から出力される、復号化処理が施されたデータがカラールックアップテーブル５３に出力されるようになされている。
【０１８５】
カラールックアップテーブル５３は、図６に示すカラールックアップテーブルが格納されており、スイッチ５２を介して供給された復号化処理が施されたデータを入力し、そのデータに対応するＲ，Ｇ，Ｂの画像信号をそれぞれ出力する。
【０１８６】
画像の符号化処理は、例えば、画面の特定の領域（例えば、類似した画像のパターンよりなる領域）を１処理単位として実行されるので、参照テーブルとカラールックアップテーブルは、処理単位毎に作成される。従って、これら２つのテーブルのデータは、新たな処理単位のデータが入力される直前に読み出され、テーブル５０と、カラールックアップテーブル５３にそれぞれ格納される。
【０１８７】
次に、以上の実施の形態の動作について説明する。
【０１８８】
図１に示すＣＰＵ１は、ＣＤ−ＲＯＭドライブ４に制御信号を送り、図示せぬＣＤ−ＲＯＭに記録されている、参照テーブルのデータと、カラールックアップテーブルのデータを読み出し、ＧＰＵ５に供給する。ＧＰＵ５は、これらのデータを入力し、参照テーブルのデータは、テーブル５０に、また、カラールックアップテーブルのデータは、カラールックアップテーブル５３にそれぞれ格納する。
【０１８９】
それぞれのテーブルへのデータの格納が終了すると、ＣＰＵ１は、ＣＤ−ＲＯＭドライブ４に対して、制御信号を送り、ピクセルデータ（２ビット）読み出させ、ＧＰＵ５に供給させる。
【０１９０】
第０番目（最初）のピクセルデータ（４ビット）が入力されると、ＧＰＵ５のスイッチ５２がexceptional pass側に切り換えられ、入力されたデータは、カラールックアップテーブル５３に供給されると同時に、遅延回路５１に供給される。
【０１９１】
次に、第１番目の符号化データ（２ビット）が入力されると、このデータはテーブル５０に供給される。このとき、遅延回路５１からは、第０番目のデータが出力されるので、テーブル５０は、入力された第１番目のデータと、遅延回路５１から出力されたデータより、元のピクセルデータ（４ビット）を復号し、出力する。
【０１９２】
いま、スイッチ５２は、テーブル５０側に接続されているので、テーブル５０から出力されたデータは、遅延回路５１とカラールックアップテーブル５３に出力される。カラールックアップテーブル５３は、入力されたデータに対応する大きさのＲ，Ｇ，Ｂ信号をそれぞれ出力する。
【０１９３】
第２番目以降の符号化データに対しても同様の処理が繰り返され、復号化されたＲ，Ｇ，Ｂ信号が逐次出力されていく。このような処理は、１処理単位が終了するまで繰り返される。そして、次の処理単位が復号化される場合には、ＣＤ−ＲＯＭドライブ４から、新たな参照テーブルとカラールックアップテーブルのデータが読み出され、カラールックアップテーブル５３とテーブル５０にそれぞれ格納された後に、復号化処理が実行される。
【０１９４】
以上の実施の形態によれば、ピクセルデータの遷移情報と、既に復号化された隣接ピクセルの情報を用いることにより、画像情報を効率よく圧縮することが可能となるとともに、表現可能な色の種類を増加させることが可能となる。
【０１９５】
図１５は、本発明の他の実施の形態の構成の一例を示すブロック図である。
【０１９６】
この図において、図１４と同一の部分には同一の符号を付してあるので、その説明は省略する。この図においては、２つの遅延回路５１−１と遅延回路５１−２が具備されており、それぞれの遅延回路の出力がテーブル５０に入力されるようになされている。また、スイッチ５２は、第０番目と第１番目の符号化データが入力される場合に、exceptional pass側に接続されるようになされている。
【０１９７】
また、テーブル５０に格納されている参照テーブルは、図１６に示すように、１つ前と２つ前のピクセルデータ（縦方向）と、符号化データ（横方向）より、元のデータを復号するようになされている。例えば、２つ前と１つ前のピクセルデータがそれぞれ“０”，“１”である場合（第１行目）に、符号化データが“３”であるとき（第３列目）は、復号データは、“６”となる。
【０１９８】
その他の構成は、図１４における場合と同様である。
【０１９９】
次に、この実施の形態の動作について簡単に説明する。
【０２００】
第０番目の符号化データ（４ビット）が入力されると、テーブル５０に供給される。また、このときスイッチ５２は、exceptional pass側に接続されているので、第０番目のピクセルデータは、カラールックアップテーブル５３と、遅延回路５１−１に供給される。カラールックアップテーブル５３は、入力されたピクセルデータに対応するＲ，Ｇ，Ｂ信号を図６に示すカラールックアップテーブルを参照して生成し、出力する。
【０２０１】
第１番目の符号化データ（４ビット）が入力された場合にも、スイッチ５２は、exceptional pass側に接続されている。従って、第１番目のピクセルデータは、カラールックアップテーブル５３と遅延回路５１−１に供給される。カラールックアップテーブル５３は、入力されたピクセルデータに対応するＲ，Ｇ，Ｂ信号を生成し、出力する。
【０２０２】
第２番目の符号化データ（２ビット）が入力されると、スイッチ５２は、テーブル５０側に接続が変更される。テーブル５０は、第２番目の符号化データ、遅延回路５１−１から出力されるデータ（１つ前のデータ）、および、遅延回路５１−２から出力されるデータ（２つ前のデータ）を参照テーブルに適用することにより、元のデータを復号化する。復号化されたデータは、スイッチ５２を介してカラールックアップテーブル５３に供給されるとともに、遅延回路５１−１に供給される。
【０２０３】
カラールックアップテーブル５３は、テーブル５０により復号化されたピクセルデータに対応するＲ，Ｇ，Ｂ信号を出力する。
【０２０４】
以上の動作は、１処理単位が終了するまで繰り返され、画像データが再生されることになる。１処理単位が終了すると、ＣＤ−ＲＯＭドライブ４から新たな処理単位のカラールックアップテーブルと参照テーブルのデータが読み出され、カラールックアップテーブル５３とテーブル５０にそれぞれ格納された後、新たな符号化データの読み出しが開始されることになる。
【０２０５】
以上の実施の形態によれば、ピクセルデータの遷移情報、既に復号化された２つの隣接ピクセルの情報を用いることにより、表現可能な色の種類を増加させることが可能となるとともに、各ピクセルデータの発生確率を下げることが可能となるので、エントロピを更に下げることが可能となる。例えば、図７に示す例では、１．３２であるエントロピを、１．１８程度に下げることが可能となる。その結果、符号化時に発生する誤差を更に低減させることが可能となる。
【０２０６】
図１７は、本発明の更に他の実施の形態の構成を示すブロック図である。
【０２０７】
この図において、図１４と同一の部分には同一の符号が付してあるので、その説明は省略する。この実施の形態では、画面の水平ピクセルデータ数だけ遅延する遅延回路（Ｈ）６０（復号化手段）が新たに追加されている。また、スイッチ５２は、第０番目から水平ピクセル分の符号化データ（第０番目の水平ピクセルデータ）の入力が終了するまでは、exceptional pass側に接続されるようになされている。
【０２０８】
また、テーブル５０に格納されている参照テーブルは、図１６に示す参照テーブルの、２つ前のデータが１水平ピクセル前のピクセルデータと置換されたものとされている。
【０２０９】
その他の構成は、図１４における場合と同様である。
【０２１０】
この例では、前述のように、スイッチ５２は、第０番目（最初）の１水平ピクセル分の符号化データ（４ビット）が入力されている場合は、exceptional pass側に接続される。従って、入力された符号化データは、スイッチ５２を介して遅延回路６０に供給されるとともに、カラールックアップテーブル５３に供給される。カラールックアップテーブル５３は、入力された符号化データに対応するＲ，Ｇ，Ｂ信号を出力する。
【０２１１】
なお、このとき、テーブル５０は、復号化処理を実行しないので、入力されたピクセルデータと遅延回路５１から出力されるデータは無視されることになる。
【０２１２】
次に、第１番目の水平ピクセルのデータの入力が開始されると、スイッチ５２は、テーブル５０側に接続が変更される。テーブル５０は、入力された符号化データ、遅延回路５１から出力される１つ前のデータ、および、１水平ピクセル分前のデータを参照テーブルに適用し、元のデータを復号化する。復号化されたデータは、スイッチ５２を介してカラールックアップテーブル５３に供給される。カラールックアップテーブル５３は、復号化されたデータに対応するＲ，Ｇ，Ｂ信号をカラールックアップテーブルを参照して生成し、出力する。
【０２１３】
以上の処理は、１処理単位分繰り返される。そして、１処理単位の処理が終了すると、ＣＤ−ＲＯＭドライブ４から、新たなカラールックアップテーブルと参照テーブルのデータが読み出され、カラールックアップテーブル５３とテーブル５０にそれぞれ格納される。そして、新たな処理単位の符号化データの復号化処理が実行される。
【０２１４】
以上のような実施の形態によれば、１つ前のピクセルだけでなく、１水平ライン前のピクセルのデータとの間のインデックスの遷移情報に応じてデータを圧縮（符号化）し、復号化するようにしたので、図１４の実施の形態に比べて、符号化時の誤差の発生を抑制することが可能となる。
【０２１５】
なお、以上の実施の形態では、図９に示す参照テーブルを作成する場合、出現確率が上位４通りのピクセルを選択するようにした。しかしながら、本発明はこのような場合に限定されるものではない。例えば、出現確率とともに、隣接ピクセルとの色の変化の差（Ｒ，Ｇ，Ｂ空間における距離）を考慮して、参照テーブルを作成するようにしてもよい。
【０２１６】
例えば、出現確率が低い場合でも、隣接ピクセルとの色が極端に異なる場合（変化の差が大きい場合）では、エラーの発生が増加することが考えられるので、４通りのピクセルとして、最初の１つは、出現確率が最も高いピクセルを選択し、以下の３つは、出現確率と色の差の双方にある重み付けをして得られた結果に応じて選択するようにしてもよい。このような方法によれば、隣接ピクセルとの色の変化が極端に大きな場合においても圧縮（符号化）時のエラーを抑制することが可能となる。
【０２１７】
また、単一の画像中に性質（表示パターンなど）の異なる部分が存在している場合は、画像を性質に応じて複数の領域に分割してそれぞれを処理単位とし、それぞれの領域に対して作成された参照テーブルを元に、各処理単位（領域）を復号化するようにしてもよい。そのような構成によれば、伝送または記録する参照テーブルのデータ数は増加するが、符号化時における符号化誤差を低減することが可能となる。
【０２１８】
更に、以上の実施の形態では、参照テーブルにより符号化された情報は、そのまま出力されるようにしたが、例えば、可変長符号化（ランレングス符号化またはハフマン符号化など）を用いて更に符号化してから出力するようにしてもよいことは勿論である。このような構成によれば、画像情報を更に圧縮することが可能となる。
【０２１９】
ところで、家庭用ＴＶゲーム機などにおいては、スプライトによるキャラクタの描画時に、特定のインデックス（以下、特定インデックスと略記する）を有する領域を透明領域とみなし、その領域を描画しない手法が用いられることがある。
【０２２０】
例えば、前述の特定インデックスが０であるとすると、図１８に示すインデックスデータは、図１９に示すような表示画面として描画されることになる。このような画像データに対して前述のような画像圧縮を施した場合、仮に、この特定インデックスが他のデータに変換されたとすると、その部分は特定の表示色により表示されることなり、画像情報が著しく変容してしまう。また、逆に、特定インデックスが他のインデックス変換された場合も、輪郭情報が欠落することになる。
【０２２１】
図２０は、前述の特定インデックスが含まれているデータに対応する参照テーブル作成処理の一例を示している。なお、この図において、図５と同一の処理には同一の符号が付してあるので、その説明は省略する。
【０２２２】
図２０に示す処理では、図５の処理に比較してステップＳ６０とステップＳ６１とが新たに追加されている。ステップＳ６０では、特定インデックスＦ（＝０）への遷移が存在するか否かが判定される。その結果、特定インデックスへの遷移が存在する（ＹＥＳ）と判定された場合には、ステップＳ６１に進む。また、特定インデックスへの遷移が存在しない（ＮＯ）と判定された場合には、ステップＳ２３に進む。
【０２２３】
ステップＳ６１では、遷移頻度が第Ｍ番目のインデックスと、特定インデックスとが置換される。そしてステップＳ２３に進む。
【０２２４】
ステップＳ２３では、遷移頻度が上位Ｍ種類のインデックスが選択される。即ち、特定インデックスＦに遷移するデータが含まれている場合には、ステップＳ６１において、この特定インデックスＦが第Ｍ番目のインデックスと置換されることになるので、ステップＳ２３において選択される上位Ｍ種類のインデックスには、特定インデックスが必ず含まれることになる。従って、特定インデックスは確実に保存されることになる。
【０２２５】
図２１は、図１１のステップＳ４７のサブルーチンを、特定インデックスに対応するように変更した処理を説明するフローチャートである。なお、この図において、図１２の場合と同一の処理には同一の符号が付してあるのでその説明は省略する。
【０２２６】
この処理では、ステップＳ１１０が新たに追加されている。このステップＳ１１０の処理では、特定インデックスではないピクセルデータ（Ｘ［ｐ，ｒ］≠Ｆ）が、特定インデックスに変換された（Ｘ’［ｐ，ｒ］＝Ｆ）か否かが判定される。その結果、特定インデックス以外のピクセルデータが特定インデックスに変換された（ＹＥＳ）と判定された場合には、ステップＳ７５に戻り、図１２の処理において説明したのと同様の処理を繰り返すことになる。また、ステップＳ１１０において、特定インデックス以外のピクセルデータが特定インデックスに変換されていない（ＮＯ）と判定された場合には、ステップＳ７７に進み、データの変換処理が継続されることになる。
【０２２７】
従って、以上の処理によれば、特定インデックス以外のデータが特定インデックスに変換された場合には、ステップＳ１１０においてＹＥＳと判定され、その変換に対する処理は無視されることになるので、特定インデックス以外のデータが特定インデックスに変換されることを防止することができる。
【０２２８】
なお、以上の実施の形態では、特定インデックスに遷移するデータが存在する場合には、この特定インデックスを第Ｍ番目のデータと置換するようにしたが、本発明はこのような場合に限定されるものではない。例えば、特定インデックスを第（Ｍ−１）番目のデータと置換してもよいことは勿論である。
【０２２９】
【発明の効果】
本発明の符号化装置によれば、画像を構成するピクセルのうち、少なくとも２つ以上のピクセルのインデックスの遷移に関する遷移情報を算出し、算出された遷移情報の一部を所定の方法により選出して参照テーブルを作成し、作成された参照テーブルを参照して画像を符号化するようにし、その参照テーブルは、遷移情報に特定のインデックスが含まれている場合には、そのインデックスを優先的に選出して参照テーブルを作成するようにしたので、少ない情報量で高い画質の画像を伝送、記録、または、表示することが可能となる。
【０２３０】
本発明の記録媒体においては、画像を構成するピクセルのうち、少なくとも２つ以上のピクセルのインデックスの遷移に関する遷移情報を算出し、算出された遷移情報の一部を所定の方法により選出して作成された参照テーブルと、参照テーブルを参照して符号化された画像のデータと、ピクセルのインデックスと表示色との対応関係を規定するカラールックアップテーブルとを記録するようにしたので、記録媒体に更に多くの画像を記録することが可能となる。
【０２３１】
本発明の復号化装置および復号化方法によれば、画像を構成するピクセルのうち、少なくとも２つ以上のピクセルのインデックスの遷移に関する遷移情報を算出し、算出された遷移情報の一部を所定の方法により選出して作成された参照テーブルを記憶し、参照テーブルを参照して符号化された画像データを入力し、入力された画像データを、記憶されている参照テーブルを参照して復号化し、その復号化された画像データをカラールックアップテーブルを参照して元の信号に変換するようにしたので、簡単な構成により復号化装置を構成することが可能となるので、復号化処理を高速化することが可能となるとともに、例えば、テレビジョン受像機等における実時間処理も可能となる。
【図面の簡単な説明】
【図１】本発明の復号化装置の一実施の形態の構成を示すブロック図である。
【図２】本発明の符号化装置と復号化装置の一実施の形態の動作の概略を説明する図である。
【図３】本発明の符号化装置の一実施の形態の構成を示すブロック図である。
【図４】図３の実施の形態において実行される処理の一例を説明するフローチャーである。
【図５】図４の処理のステップＳ２の処理の詳細を説明するフローチャートである。
【図６】カラールックアップテーブルの一例を示す図である。
【図７】画像中のピクセルの遷移を示す遷移テーブルの一例を示す図である。
【図８】図７に示す遷移テーブルの各要素の出現頻度を示す図である。
【図９】図７に示す遷移テーブルから出現頻度が上位４番目までのデータを選出することにより作成された参照テーブルの一例を示す図である。
【図１０】図９に示す参照テーブルに対象となるインデックスが存在しない場合に、それ以降のインデックスにおいて一致するインデックスを検索するために作成される樹形図を示す図である。
【図１１】図４のステップＳ３のピクセルデータ符号化処理の詳細を説明するフローチャートである。
【図１２】図１１のステップＳ４７のサブルーチンの詳細を説明するフローチャートである。
【図１３】図１２のステップＳ８４のエラーサブルーチンの詳細を説明するフローチャートである。
【図１４】図１に示すＧＰＵ５の詳細な構成の一例を示すブロック図である。
【図１５】図１に示すＧＰＵ５の他の詳細な構成の一例を示すブロック図である。
【図１６】図１５に示すテーブル５０に格納されている参照テーブルの一例を示す図である。
【図１７】図１に示すＧＰＵ５の更に他の詳細な構成の一例を示すブロック図である。
【図１８】透明領域を含む画像に対応するインデックスデータの一例を示す図である。
【図１９】図１８に示すインデックスデータの表示例である。
【図２０】図５の処理を透明領域に対応するように変更したフローチャートである。
【図２１】図１２の処理を透明領域に対応するように変更したフローチャートである。
【符号の説明】
４０  ＣＰＵ（遷移情報算出手段、参照テーブル作成手段、符号化手段、可変長符号化手段），  ５０  テーブル（参照テーブル記憶手段、入力手段、復号化手段），  ５１，６０  遅延回路（復号化手段），  ５３  カラールックアップテーブル（カラールックアップテーブル記憶手段、変換手段）
【図１】
0003695045.tif 000002
【図２】
0003695045.tif 000003
【図３】
0003695045.tif 000004
【図４】
0003695045.tif 000005
【図５】
0003695045.tif 000006
【図６】
0003695045.tif 000007
【図７】
0003695045.tif 000008
【図８】
0003695045.tif 000009
【図９】
0003695045.tif 000010
【図１０】
0003695045.tif 000011
【図１１】
0003695045.tif 000012
【図１２】
0003695045.tif 000013
【図１３】
0003695045.tif 000014
【図１４】
0003695045.tif 000015
【図１５】
0003695045.tif 000016
【図１６】
0003695045.tif 000017
【図１７】
0003695045.tif 000018
【図１８】
0003695045.tif 000019
【図１９】
0003695045.tif 000020
【図２０】
0003695045.tif 000021
【図２１】
0003695045.tif 000022