(57)【特許請求の範囲】
【請求項１】
画像データの減色処理を実行する減色画像処理装置において、
減色処理の対象となる画像データから画素値を１つずつ読み出して入力する入力手段と、
上記入力手段の入力した画素値を置換対象として、該画素値と用意される複数の代表色との間の距離を算出し、それに基づいて、該画素値を該代表色の内の最も近いものに置換する置換手段と、
上記置換手段の求めた画素値と置換色との対応関係を一時的に保存するキャッシュメモリ手段と、
上記入力手段の入力した画素値が上記キャッシュメモリ手段に登録されているのか否かを判断する判断手段と、
上記判断手段が登録を判断する場合に、上記入力手段の入力した画素値を上記キャッシュメモリ手段に登録されている該画素値の指す置換色に置換する変換手段と、
上記判断手段が未登録を判断する場合に、上記入力手段の入力した画素値を指定して上記置換手段を起動する起動手段とを備えることを、
特徴とする減色画像処理装置。
【請求項２】
請求項１記載の減色画像処理装置において、
上記キャッシュメモリ手段は、リンク構造に従って、参照された対応関係を先頭にしつつ、登録順序の新しい対応関係が先頭側となるようにと対応関係を保存することを、
特徴とする減色画像処理装置。
【請求項３】
請求項１又は２記載の減色画像処理装置において、
上記キャッシュメモリ手段は、置換色の画素値そのものを使って対応関係を保存することを、
特徴とする減色画像処理装置。
【請求項４】
請求項１又は２記載の減色画像処理装置において、
上記キャッシュメモリ手段は、置換色を指すインデックス値を使って対応関係を保存することを、
特徴とする減色画像処理装置。
【請求項５】
請求項１記載の減色画像処理装置において、
上記入力手段は、減色処理の対象となる画像データを複数の矩形ブロックで区画して、その矩形ブロックを走査単位として画素値を読み出していくことを、
特徴とする減色画像処理装置。
【請求項６】
請求項１又は５記載の減色画像処理装置において、
上記入力手段は、読み出した画素値の下位ビットに対して、強制的にゼロ値をセットすることを、
特徴とする減色画像処理装置。
【請求項７】
請求項１又は５記載の減色画像処理装置において、
上記入力手段は、読み出した画素値の下位ビットに対して、強制的に該下位ビットのとり得る値の中間値をセットすることを、
特徴とする減色画像処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、画像データの減色処理を実行する減色画像処理装置に関し、特に、高速に減色処理を実行できるようにする減色画像処理装置に関する。
【０００２】
減色画像処理装置は、表示色の限られているカラーディスプレイへの画像データの表示を実現するために用意されるものであって、多数の色を用いて表現される画像データの画素値を、用意される代表色の内の最も近いものに置換することで減色処理を実行する。
【０００３】
この減色画像処理装置の実用性を高めていくためには、高速に減色処理を実行できるようにする構成を構築していく必要がある。
【０００４】
【従来の技術】
原画像の各画素値に最も近い色を代表色の中から選択する方法として、最近隣探索法がある。この最近隣探索法は、原画像の各画素の色を全ての代表色と比較し、その差の最も小さい代表色、すなわち、色空間内でのユークリッド距離が最小となる代表色を置換色として選択する方法である。
【０００５】
ここで、図２１に示すようなＲＧＢ色空間を想定するならば、点ｘ（Ｒx,Ｇx,Ｂx ）と点ｙ( Ｒy,Ｇy,Ｂy ) とのユークリッド距離Ｄ(x,y) としては、
Ｄ(x,y) ＝[(Ｒx −Ｒy )2＋（Ｇx −Ｇy )2＋（Ｂx −Ｂy )2]1/2
や、
Ｄ(x,y) ＝（Ｒx −Ｒy )2＋（Ｇx −Ｇy )2＋（Ｂx −Ｂy )2
や、
Ｄ(x,y) ＝｜Ｒx −Ｒy ｜＋｜Ｇx −Ｇy ｜＋｜Ｂx −Ｂy ｜
といったものが用いられている。
【０００６】
図２２に、最近隣探索法の処理手順を図示する。
すなわち、最近隣探索法では、この処理手順に示すように、ｎ番目の代表色ｐ(n) を選択すると、その代表色ｐ(n) と原画像の画素値ｓとのユークリッド距離Ｄ(s,p(n))を算出し、その新たに算出したユークリッド距離が、変数ｄmin に格納されるそれまでに算出した最も小さいユークリッド距離よりも小さいのか否かを判断して、小さいことを判断するときには、その新たに算出したユークリッド距離を変数ｄmin に格納するとともに、そのときのｎ値を変数ｎmin に格納してから変数ｎの値を１つインクリメントし、小さくないことを判断するときには、変数ｄmin ／ｎmin を更新せずに直ちに変数ｎの値を１つインクリメントすることを繰り返していくことで、原画像の画素値に最も近い色を代表色の中から選択していくことになる。
【０００７】
このような最近隣探索法を使って、原画像の各画素値に最も近い色を代表色の中から選択する処理を行う減色画像処理装置では、従来、原画像の全画素値について、最近隣探索法を使って最も近い色を代表色の中から選択して置換していくという構成を採っていた。
【０００８】
すなわち、図２３に示すように、原画像の中から処理対象となる画素値を取得すると、最近隣探索法を使って代表色の中から置換色を選択し、その処理対象の画素値をその置換色に置き換えてから、原画像の全画素値の処理を終了したのか否かを判断して、未終了を判断するときには、次の処理対象となる画素値を取得することを繰り返していくことで、原画像の各画素値を代表色に置換していくという構成を採っていたのである。
【０００９】
【発明が解決しようとする課題】
しかしながら、このような従来構成の減色画像処理装置に従っていると、原画像の減色処理に膨大な時間がかかるという問題点があった。すなわち、最近隣探索法では、全ての代表色と原画像の各画素値との距離を計算すことから、計算量が膨大なものとなって、原画像の減色処理に膨大な時間がかかるという問題点があったのである。
【００１０】
本発明はかかる事情に鑑みてなされたものであって、高速に減色処理を実行できるようにする新たな減色画像処理装置の提供を目的とする。
【００１１】
【課題を解決するための手段】
図１に本発明の原理構成を図示する。
図中、１は本発明を具備する減色画像処理装置であって、多数の色を用いて表現される画像データの画素値を、用意される代表色の内の最も近いものに置換することで減色処理を実行するものである。
【００１２】
この減色画像処理装置１は、原画像ファイル１０と、置換画像ファイル１１と、入力手段１２と、置換手段１３と、キャッシュメモリ手段１４と、判断手段１５と、変換手段１６と、起動手段１７とを備える。
【００１３】
この原画像ファイル１０は、減色対象となる原画像を格納する。置換画像ファイル１１は、減色された置換画像を格納する。
入力手段１２は、原画像ファイル１０から画素値を１つずつ読み出して置換要求を発行する。ここで、入力手段１２は、読み出した画素値の下位ビットに対して、強制的にゼロ値をセットしてから置換要求を発行したり、強制的に下位ビットのとり得る値の中間値をセットしてから置換要求を発行することがある。
置換手段１３は、置換要求のある画素値と用意される複数の代表色との間の距離を算出し、それに基づいて、その画素値を用意される代表色の内の最も近いものに置換することで、置換要求のある画素値の置換色を求めて置換する。
【００１４】
キャッシュメモリ手段１４は、置換手段１３の求めた画素値と置換色との対応関係を一時的に保存する。ここで、キャッシュメモリ手段１４は、置換色の画素値そのものを使って対応関係を保存するのではなくて、置換色を指すインデックス値を使って対応関係を保存することがある。判断手段１５は、置換要求のある画素値がキャッシュメモリ手段１４に登録されているのか否かを判断する。変換手段１６は、置換要求のある画素値をキャッシュメモリ手段１４に登録されているその画素値の指す置換色に置換する。起動手段１７は、置換要求のある画素値を指定して置換手段１３を起動する。
【００１５】
このように構成される本発明の減色画像処理装置１では、入力手段１２は、例えば、原画像ファイル１０に格納される原画像を複数の矩形ブロックで区画して、その矩形ブロックを走査単位として画素値を１つずつ読み出して置換要求を発行する。この置換要求を受け取ると、判断手段１５は、キャッシュメモリ手段１４を参照することで、置換要求のある画素値がキャッシュメモリ手段１４に登録されているのか否かを判断するとともに、登録されているときには、その画素値の指す置換色を特定する。
【００１６】
この判断手段１５の処理を受けて、変換手段１６は、判断手段１５が登録を判断するときには、置換要求のある画素値を判断手段１５の特定した置換色に変換して置換画像ファイル１１に格納する。一方、起動手段１７は、判断手段１５が未登録を判断するときには、置換要求のある画素値を指定して置換手段１３を起動する。
【００１７】
そして、置換手段１３は、起動手段１７から起動されると、最近隣探索法等を用いて、置換要求のある画素値の置換色を求めることで置換処理を実行して置換画像ファイル１１に格納するとともに、その求めた画素値と置換色との対応関係をキャッシュメモリ手段１４に登録する。
【００１８】
このように、本発明では、最近隣探索法等を用いて減色処理を実行する構成を採るときにあって、キャッシュメモリを利用することで、その減色処理計算の回数を減らす構成を採るので、多色画像の減色を高速に実行できるようになる。
【００１９】
【発明の実施の形態】
以下、実施の形態に従って本発明を詳細に説明する。
図２に、本発明を具備する減色画像処理装置１の一実施例を図示する。
【００２０】
この図に示すように、本発明を具備する減色画像処理装置１は、減色対象となる原画像を格納する原画像ファイル２０と、原画像ファイル２０から画像値を読み出す画像入力プログラム２１と、画像入力プログラム２１の読み出した画素値に対して減色処理を施すことでその画素値の置換色を求める減色処理プログラム２２と、減色処理プログラム２２の処理用に用意されて、置換色となる代表色を管理するカラーパレット２３と、減色処理プログラム２２の処理用に用意されて、減色処理プログラム２２の求めた画素値と置換色との対応関係を管理するキャッシュ機構２４と、減色処理プログラム２２の求めた置換画像を格納する置換画像ファイル２５と、置換画像ファイル２５から画像値を読み出して外部に出力する画像出力プログラム２６とを備える。
【００２１】
図３に、カラーパレット２３の管理データの一実施例、図４に、キャッシュ機構２４の管理データの一実施例を図示する。
カラーパレット２３は、図３に示すように、例えば、２５６個用意される代表色のインデックス値と、それらの代表色の画素値となるＲＧＢ値との対応関係を管理することになる。
【００２２】
一方、キャッシュ機構２４は、例えばＭ個のエントリを有して、図４（ａ）に示すように、カラーパレット２３の管理するインデックス値を使いつつ、減色処理プログラム２２の求めた画素値と置換色との対応関係を管理したり、図４（ｂ）に示すように、そのインデックス値を用いずに置換色の画素値を直接使いつつ、減色処理プログラム２２の求めた画素値と置換色との対応関係を管理する。ここで、この２つの管理構成の内、インデックス値を用いる前者の管理構成を採ると、メモリを大幅に削減できるという利点がある。
【００２３】
このキャッシュ機構２４は、減色処理プログラム２２の求めた画素値と置換色との対応関係を一時的に保持するものであるが、後述するように、この対応関係を保持するにあたって、参照された対応関係を先頭にしつつ、登録順序の新しい対応関係が先頭側となる管理構成を採っている。この管理構成は、参照された対応関係を先頭に並び換えつつ、減色処理プログラム２２により新たな対応関係が求まると、最後のエントリに管理される最も古く登録された対応関係を削除し、それ以外のエントリに管理される対応関係を１つずつ古いものを管理するエントリに移動させながら、その新たに求められた対応関係を先頭のエントリに登録することで実現されることになるが、これでは、データを移動させなければならず時間がかかってしまう。
【００２４】
そこで、本発明では、リンク構造を採用する構成を採って、データの物理的な移動を行わずにリンクを張り換えることで、データの並び換えを行う構成を採っている。すなわち、キャッシュ機構２４は、図５に示すように、各エントリ対応に、１つ前の対応関係がどのエントリに登録されているのかを管理する管理域prev(m) と、１つ後の対応関係がどのエントリに登録されているのかを管理する管理域next(m) とで構成されるリンク構造を持って、それらのリンクを張り換えていくことで、データの移動を行わずに、参照された対応関係を先頭に並び換えつつ、登録順序の新しい対応関係が先頭側となる形式に従って対応関係を管理する構成を採っている。
【００２５】
図６に、本発明の減色画像処理装置１が画像入力プログラム２１／減色処理プログラム２２を起動することで実行する処理フローの一実施例を図示する。
本発明の減色画像処理装置１は、この図６の処理フローに示すように、先ず最初に、ステップ１で、画素の参照位置を原画像の先頭画素に設定すると、続くステップ２で、原画像ファイル２０から現在の画素値（設定されている参照画素の画素値）を取得し、続くステップ３で、その取得した現在の画素値をキャッシュ機構２４から検索する。
【００２６】
続くステップ４で、現在の画素値がキャッシュ機構２４に登録されているのか否かを判断して、登録されていないことを判断するときには、ステップ５に進んで、最近隣探索法を使って、カラーパレット２３に登録される代表色の中から置換色を選択し、続くステップ６で、その求めた画素値と置換色との対応関係をキャッシュ機構２４に登録する。
【００２７】
一方、ステップ４で登録されていることを判断するときには、ステップ７に進んで、その登録されている対応関係から現在の画素値に対応付けられる置換色を得て、続くステップ８で、その対応関係をキャッシュ機構２４の先頭のエントリへ移動する。
【００２８】
ステップ５／ステップ７で置換色を特定すると、ステップ９に進んで、現在の画素値を置換色に置き換えてから置換画像ファイル２５に格納し、続くステップ１０で、原画像ファイル２０に格納される全画素について処理を終了したのか否かを判断して、画素が残っていないことを判断するときには、処理を終了し、画素が残っていることを判断するときには、ステップ１１に進んで、画素の参照位置を次の画素に設定してからステップ２に戻っていく。
【００２９】
このようにして、本発明の減色画像処理装置１は、キャッシュ機構２４を利用することで、減色処理計算の回数を減らす構成を採るのである。
画像入力プログラム２１は、この図６の処理フローのステップ１／ステップ２／ステップ１０／ステップ１１の処理を実行するものである。
【００３０】
すなわち、画像入力プログラム２１は、図７の処理フローに示すように、先ず最初に、ステップ１で、入力位置を画素の先頭に設定し、続くステップ２で、減色処理プログラム２２からの画像入力要求を待って、入力要求があることを検出すると、ステップ３に進んで、原画像ファイル２０の全画素について処理を終了したのか否かを判断して、全画素の終了を判断するときには、ステップ４に進んで、減色処理プログラム２２に対して入力終了を通知する。
【００３１】
一方、ステップ３で全画素の未終了を判断するときには、ステップ５に進んで、設定される入力位置から３バイト分の画素値を読み出して減色処理プログラム２２に渡し、続くステップ６で、入力位置を３バイト分後ろに設定してからステップ２に戻っていく。ここで、ステップ５で、入力位置から３バイト分の画素値を読み出して減色処理プログラム２２に渡すのは、図８に示すように、画素値がＲＧＢの各３バイトで表されているからである。
【００３２】
このように、画像入力プログラム２１は、原画像ファイル２０から画素値を読み出して、減色処理プログラム２２に渡していくことになるが、キャッシュヒット率の向上を図るために、通常のラスタスキャン走査による画素値の読み出し方法を採らずに、原画像を複数の矩形ブロックで区画して、その矩形ブロックを走査単位として画素値を読み出していく方法を採ることが好ましい。
【００３３】
すなわち、通常の画像では、２次元的な広がりを持つ比較的狭い範囲に同一の色を持つ画素が集中するので、画像入力プログラム２１は、図９（ａ）に示すような通常のラスタスキャン走査による画素値の読み出し方法を採らずに、図９（ｂ）に示すような原画像を複数の矩形ブロックで区画して、その矩形ブロックを走査単位として画素値を読み出していく方法を採ることで、キャッシュヒット率の向上を実現する構成を採ることが好ましい。
【００３４】
図１０に、この図９（ｂ）に示す画素値読出方法を実現するために画像入力プログラム２１が実行する処理フローの一実施例を図示する。
ここで、この処理フローでは、原画像は、図１１に示すように、左上の画素を原点（０,0）として、水平方向にＸ個の画素を持ち、垂直方向にＹ個の画素を持つことを想定するとともに、図１２に示すように、水平方向にＢＸ個の画素、垂直方向にＢＹ個の画素を持つ矩形ブロックで区画されていることを想定する。また、ｘは読出対象画素の水平方向の画素位置、ｙは読出対象画素の垂直方向の画素位置、ｂｘは図１２中に示す矩形ブロックの水平方向のブロック番号、ｂｙは図１２中に示す矩形ブロックの垂直方向のブロック番号を表し、これらの初期値は全てゼロであるとする。なお、画素値が図８に示すような１次元のメモリ展開形態を採る場合には、画素座標（ｘ，ｙ）の画素値の展開されるアドレスＡi は、「Ａi ＝（Ｘ・ｙ＋ｘ）・３」で求められることになる。
【００３５】
画像入力プログラム２１は、図１０の処理フローに従って原画像から画素値を読み出す場合には、先ず最初に、ステップ１で、読出対象画素の水平画素位置を示す変数ｘの値を１つインクリメントし、続くステップ２で、ｘをＢＸで割り算した余り（ｘ％ＢＸ）が“０”になったのか否かを判断する。この余りが“０”になるということは、水平方向の次の矩形ブロックの画素に入ったということを意味するので、このステップ２では、変数ｘの指す画素が右隣の矩形ブロックに入ることになるのか否かを判断するのである。
【００３６】
このステップ２で、右隣の矩形ブロックまで到達していないことを判断するときには、ステップ３に進んで、変数ｘの値がＸに到達したのか否かを判断する。すなわち、水平方向の最終画素位置まで到達したのか否かを判断するのである。この判断処理により、水平方向の最終画素位置まで到達していないことを判断するときには、ステップ１で更新した変数ｘの値を有効なものとして扱って、変数ｘと変数ｙの指定する画素を読出対象として、その画素の画素値を読み出していく処理に入る。
【００３７】
一方、ステップ２で右隣の矩形ブロックに入ることを判断するときと、ステップ３で水平方向の最終画素位置に到達したことを判断するときには、ステップ４進んで、読出対象画素の垂直画素位置を示す変数ｙの値を１つインクリメントし、続くステップ５で、ｙをＢＹで割り算した余り（ｙ％ＢＹ）が“０”になったのか否かを判断する。この余りが“０”になるということは、垂直方向の次の矩形ブロックの画素に入ったということを意味するので、このステップ５では、変数ｙの指す画素が下隣の矩形ブロックに入ることになるのか否かを判断するのである。
【００３８】
このステップ５で、下隣の矩形ブロックまで到達していないことを判断するときには、ステップ６に進んで、変数ｙの値がＹに到達したのか否かを判断する。すなわち、垂直方向の最終画素位置まで到達したのか否かを判断するのである。このステップ６の判断処理により、垂直方向の最終画素位置まで到達していないことを判断するときには、ステップ７に進んで、変数ｂｘと変数ＢＸとの乗算値を変数ｘに代入することで、変数ｘの値が自矩形ブロックの水平方向の先頭画素位置を指すように設定してから、変数ｘと変数ｙの指定する画素を読出対象として、その画素の画素値を読み出していく処理に入る。
【００３９】
一方、ステップ５で下隣の矩形ブロックに入ることを判断するときと、ステップ６で垂直方向の最終画素位置に到達したことを判断するときには、ステップ８に進んで、変数ｂｘの値を１つインクリメントし、続くステップ９で、「ｂｘ×ＢＸ＞Ｘ」の条件式が成立するのか否かを判断する。この条件式が成立するということは、水平方向の最終矩形ブロックを超えることになったということを意味するので、このステップ９では、そのような状態になったのか否かを判断するのである。
【００４０】
このステップ９で、「ｂｘ×ＢＸ＞Ｘ」の条件式の成立を判断するときには、ステップ１０に進んで、読出対象画素の属する矩形ブロックの垂直ブロック番号を示す変数ｂｙの値を１つインクリメントし、続くステップ１１で、読出対象画素の属する矩形ブロックの水平ブロック番号を示す変数ｂｘの値を“０”に設定し、続いて、ステップ１２で、変数ｂｙと変数ＢＹとの乗算値を変数ｙに設定してから、ステップ７に進んで、変数ｘと変数ｙの指定する画素を読出対象として、その画素の画素値を読み出していく処理に入る。
【００４１】
一方、このステップ９で、「ｂｘ×ＢＸ＞Ｘ」の条件式の不成立を判断するときには、ステップ１０及びステップ１１の処理を省略して、直ちにステップ１２に進んで、変数ｂｙと変数ＢＹとの乗算値を変数ｙに設定してから、ステップ７に進んで、変数ｘと変数ｙの指定する画素を読出対象として、その画素の画素値を読み出していく処理に入る。
【００４２】
このようにして、画像入力プログラム２１は、この図１０の処理フローを実行することで、図９（ｂ）に示す走査形式に従って、原画像ファイル２０から画素値を読み出していくことになる。これにより、キャッシュヒット率の向上を実現できるようになる。
【００４３】
次に、減色処理プログラム２２の実行する処理について説明する。
減色処理プログラム２２は、上述した図６の処理フローのステップ３ないしステップ９の処理を実行することになる。
【００４４】
図１３に、減色処理プログラム２２の実行する処理フローの一実施例を図示する。
すなわち、減色処理プログラム２２は、起動されると、図１３の処理フローに示すように、先ず最初に、ステップ１で、画像入力プログラム２１に対して画像の入力要求を発行し、続くステップ２で、この入力要求に対する応答して、画像入力プログラム２１から入力終了が通知されるのか否かを判断して、入力終了通知を受け取るときには、ステップ２に進んで、置換画像ファイル２５に対して、処理終了を通知する。
【００４５】
一方、ステップ２で、画像入力プログラム２１から受け取るものが入力終了通知でないことを判断するとき、すなわち、画像入力プログラム２１から受け取るものが画素値であることを判断するときには、ステップ３に進んで、その画素値を受け取り、続くステップ５で、その画素値を使ってキャッシュ機構２４を検索する。
【００４６】
続いて、ステップ６で、ステップ５での検索処理によりキャッシュヒットしたのか否かを判断して、キャッシュヒットしないことを判断するときには、ステップ７に進んで、最近隣探索法を使って、カラーパレット２３に登録される代表色の中から、ステップ３で受け取った画素値の置換色とそのインデックス値を選択し、続くステップ８で、その画素値とインデックス値との対応関係をキャッシュ機構２４の先頭のエントリに登録する。
【００４７】
一方、ステップ６でキャッシュヒットしたことを判断するときには、ステップ９に進んで、キャッシュヒット先のインデックス値の指す置換色を特定し、続くステップ１０で、そのキャッシュヒットした対応関係をキャッシュ機構２４の先頭のエントリへ移動する。
【００４８】
ステップ７／ステップ９で置換色を特定すると、ステップ１１に進んで、置換画像ファイル２５に対して出力要求を発行し、続くステップ１２で、ステップ３で受け取った画素値をその置換色に置き換えて、置換画像ファイル２５に格納（置換色そのものを格納することもあるし、インデックス値を格納することもある）してからステップ１に戻っていく。
【００４９】
このようにして、減色処理プログラム２２は、キャッシュ機構２４を利用することで、減色処理計算の回数を減らす構成を採るのである。
次に、キャッシュ機構２４の構成について詳細に説明する。
【００５０】
キャッシュ機構２４は、図５に示したように、各エントリ対応に、１つ前の対応関係がどのエントリに登録されているのかを管理する管理域prev(m) と、１つ後の対応関係がどのエントリに登録されているのかを管理する管理域next(m) とで構成されるリンク構造を持って、それらのリンクを張り換えていくことで、データの移動を行わずに、参照された対応関係を先頭に並び換えつつ、登録順序の新しい対応関係が先頭側となる形式に従って対応関係を管理する構成を採っている。
【００５１】
すなわち、キャッシュ機構２４に対応関係が登録されていないときには、図１４（ａ）に示すように、先頭のエントリを指すＴopが、最後のエントリを指すＬast をポイントしている。この状態にあるときに、対応関係の登録要求があると、図１４（ｂ）に示すように、先頭のエントリである０番のエントリに登録要求のある対応関係を登録するとともに、０番のエントリの持つprev(m) がＴopを指し、next(m) がＬast を指すように設定するとともに、Ｔopが０番のエントリを指し、Ｌast が０番のエントリを指すように設定する。
【００５２】
続いて、対応関係の登録要求があると、空いているエントリの先頭のものに登録要求の対応関係を登録するとともに、その格納先エントリの持つprev(m) がＴopを指し、next(m) がそれまでＴopを指していたエントリを指すように設定するとともに、それまでＴopを指していたエントリの持つprev(m) が格納先エントリを指すように設定し、更に、Ｔopが格納先エントリを指すように設定する。
【００５３】
このようにして、図１５（ａ)(ｂ）に示すように、エントリが一杯になるまで、登録要求のある対応関係がキャッシュ機構２４に登録されていく。
続いて、対応関係の登録要求があると、図１６（ａ）に示すように、Ｌast の指すエントリに登録要求のある対応関係を登録し、その格納先エントリの持つprev(m) がＴopを指し、next(m) がそれまでＴopを指していたエントリを指すように設定するとともに、それまでＴopを指していたエントリの持つprev(m) が格納先エントリを指すように設定し、更に、その格納先エントリの持つprev(m) の指していたエントリの持つnext(m) がＬast を指すように設定し、更に、Ｔopが格納先エントリを指し、Ｌast がその格納先エントリの持つprev(m) の指していたエントリを指すように設定する。
【００５４】
このような状態にあるときに、（Ｍ−１）番のエントリに格納される対応関係が参照されると、図１６（ｂ）に示すように、（Ｍ−１）番のエントリの持つprev(m) がＴopを指し、next(m) がそれまでＴopを指していたエントリを指すように設定するとともに、それまでＴopを指していたエントリの持つprev(m) が（Ｍ−１）番のエントリを指し、next(m) が（Ｍ−１）番のエントリの持つnext(m) の指していたエントリを指すように設定し、更に、Ｔopが（Ｍ−１）番のエントリを指すように設定する。
【００５５】
このようにして、キャッシュ機構２４は、リンク構造を持って、そのリンクを張り換えていくことで、データの移動を行わずに、参照された対応関係を先頭に並び換えつつ、登録順序の新しい対応関係が先頭側となる形式に従って対応関係を管理する構成を採っている。
【００５６】
この構成に従い、減色処理プログラム２２は、図１３に示した処理フローのステップ６でキャッシュ検索処理に入ると、図１７の処理フローに示すように、リンクを辿りながら、検索対象となる画素値の指すインデックス値を検索していくのである。ここで、図中、ｓは検索対象の画素値、ｃ（ｍ）はｍ番のエントリに格納されている画素値、ｎ（ｍ）はｍ番のエントリに格納されているインデックス値を表している。
【００５７】
減色処理プログラム２２の処理に従って、置換画像ファイル２５に置換色のインデックス値（カラーパレット２３が256 個の代表色を管理することから、このインデックス値は１バイトで表される）に置き換えられた画像が格納されると、画像出力プログラム２６は、図１８に示す処理フローに従って、置換画像ファイル２５から画像値を読み出して外部に出力する処理を実行する。
【００５８】
すなわち、画像出力プログラム２６は、図１８の処理フローに示すように、先ず最初に、ステップ１で、出力位置を画素の先頭に設定し、続くステップ２で、置換画像ファイル２５から終了通知が発行されたのか否かを判断して、終了通知が発行されたときには処理を終了し、終了通知が発行されないときには、続いて、ステップ３で、出力先から置換画像の出力要求が発行されたのか否かを判断して、出力要求の発行を検出すると、ステップ４に進んで、置換画像ファイル２５から受け取るインデックス値の指す代表色を出力位置に出力し、続くステップ５で、出力位置を更新してからステップ２に戻っていくことを繰り返していくことで、置換画像ファイル２５から画像値を読み出して外部に出力していくのである。
【００５９】
上述したように、画像入力プログラム２１は、原画像ファイル２０から画素値を読み出して減色処理プログラム２２に渡していくときに、図９（ｂ）に示す走査形式に従って画素値を読み出していくことで、キャッシュヒット率の向上を実現する構成を採ったが、これと組み合わせて、あるいは単独に、原画像ファイル２０から読み出した画素値の下位ビットを強制的にゼロ値に設定することで、キャッシュヒット率の向上を実現する構成を採ることもできる。
【００６０】
ＲＧＢ各８ビットの合計２４ビットで表される画素値は約1600万色にもなるが、肉眼ではこのような多数の色を識別できない。そこで、例えば、ＲＧＢの各下位４ビットを無視することで4096色に縮退させても実用上は何も問題は起こらない。そこで、画像入力プログラム２１は、例えば、原画像ファイル２０から読み出した画素値の下位４ビットを強制的にゼロ値に設定することで、原画像の色を4096色に縮退させ、これにより、キャッシュヒット率を向上を実現することが可能である。
【００６１】
このとき、下位４ビットをオールゼロとすると、本来“1111”から“0000”の間の値をとり得るものが、“0000”に統一されてしまうことで画像が暗くなってしまうことになる。そこで、下位４ビットを“0000”に強制的に設定するのではなくて、図１９に示すように、“1111”から“0000”の中間値である“1000”に強制的に設定する方法を採ることが好ましい。
【００６２】
このような下位ビットを縮退させる方法を採るときには、減色画像処理装置１は、図２０の処理フローのステップ２０に示すように、図６の処理フローのステップ２とステップ３の間に、原画像ファイル２０から取得した現在の画素値の下位ビットを無視することでビット数を削減する処理を実行することになる。
【００６３】
図示実施例に従って本発明を詳細に説明したが、本発明はこれに限られるものではない。例えば、実施例ではＲＧＢ表色系で表される画素値を用いたが、本発明はこれに限られるものではない。また、実施例では最近隣探索法に従って減色処理を実行する構成を採ったが、本発明はこれに限られるものではない。
【００６４】
【発明の効果】
以上説明したように、本発明では、最近隣探索法等を用いて減色処理を実行する構成を採るときにあって、キャッシュメモリを利用することで、その減色処理計算の回数を減らす構成を採るので、多色画像の減色を高速に実行できるようになる。
【図面の簡単な説明】
【図１】本発明の原理構成図である。
【図２】本発明の一実施例である。
【図３】カラーパレットの管理データの一実施例である。
【図４】キャッシュ機構の管理データの一実施例である。
【図５】キャッシュ機構の管理データの一実施例である。
【図６】本発明の実行する処理フローの一実施例である。
【図７】画像入力プログラムの処理フローの一実施例である。
【図８】画素値の格納形態の説明図である。
【図９】画像入力プログラムの画素値読出方法の説明図である。
【図１０】画像入力プログラムの処理フローの一実施例である。
【図１１】画素値の座標系の説明図である。
【図１２】矩形ブロックの説明図である。
【図１３】減色処理プログラムの処理フローの一実施例である。
【図１４】キャッシュ機構の動作説明図である。
【図１５】キャッシュ機構の動作説明図である。
【図１６】キャッシュ機構の動作説明図である。
【図１７】減色処理プログラムの処理フローの一実施例である。
【図１８】画像出力プログラムの処理フローの一実施例である。
【図１９】画像入力プログラムの実行する処理の説明図である。
【図２０】本発明の実行する処理フローの他の実施例である。
【図２１】色空間の説明図である。
【図２２】最近隣探索法の説明図である。
【図２３】従来技術の説明図である。
【符号の説明】
１    減色画像処理装置
１０  原画像ファイル
１１  置換画像ファイル
１２  入力手段
１３  置換手段
１４  キャッシュメモリ手段
１５  判断手段
１６  変換手段
１７  起動手段
【図１】
0003652754.tif 000002
【図２】
0003652754.tif 000003
【図３】
0003652754.tif 000004
【図４】
0003652754.tif 000005
【図５】
0003652754.tif 000006
【図６】
0003652754.tif 000007
【図７】
0003652754.tif 000008
【図８】
0003652754.tif 000009
【図９】
0003652754.tif 000010
【図１０】
0003652754.tif 000011
【図１１】
0003652754.tif 000012
【図１２】
0003652754.tif 000013
【図１３】
0003652754.tif 000014
【図１４】
0003652754.tif 000015
【図１５】
0003652754.tif 000016
【図１６】
0003652754.tif 000017
【図１７】
0003652754.tif 000018
【図１８】
0003652754.tif 000019
【図１９】
0003652754.tif 000020
【図２０】
0003652754.tif 000021
【図２１】
0003652754.tif 000022
【図２２】
0003652754.tif 000023
【図２３】
0003652754.tif 000024