(57)【要約】【課題】  実ＣＰＵ時間の切り換え処理の為のオーバヘッドを減らして、効率的に画像処理を行うことができる画像処理装置、画像処理方法、その記録媒体およびプログラムを提供する。【解決手段】  変換処理ブロック３は、画像の各画素の成分値に対して変換処理することで変換後成分値を出力する。成分値入出力ブロック１は、成分値の入力処理または変換処理ブロック３が出力する変換後成分値の出力処理または変換処理ブロック３に成分値の変換処理を依頼する依頼処理を行う。共有メモリ２は、成分値および変換処理ブロック３が出力する変換後成分値を関連付けて格納する。また、成分値入出力ブロック１は、共有メモリ３において変換処理対象の成分値に対応する変換後成分値の有無を判定して、その判定に応じて共有メモリ３より変換後成分値を読み出す処理か、変換処理ブロック３へ変換処理を依頼する処理を行う。【選択図】  図１
2005086565.tif 000002
【特許請求の範囲】
【請求項１】
画像の各画素の成分値を変換処理する画像処理装置であって、
前記成分値に対して変換処理することで変換後成分値を出力する変換処理手段と、
前記成分値の入力処理と、前記変換処理手段が出力する前記変換後成分値の出力処理と、前記変換処理手段に前記成分値の変換処理を依頼する依頼処理を行う入出力手段と、
前記成分値および前記変換処理手段が出力する前記変換後成分値を関連付けて格納する共有メモリとを具備し、
前記入出力手段は、前記依頼処理を行う前に前記共有メモリにおいて変換処理対象の成分値に対応する変換後成分値の有無を判定して、前記変換処理対象の成分値に対応する変換後成分値が前記共有メモリに有ると判定した場合には、前記共有メモリより前記処理対象の成分値に対応する変換後成分値を読み出し、前記変換処理対象の成分値に対応する前記変換後成分値が前記共有メモリに無いと判定した場合には、前記変換処理手段へ前記変換処理の依頼を行うこと
を特徴とする画象処理装置。
【請求項２】
前記入出力手段は、
前記変換処理対象の成分値または前記変換後成分値を前記画像の前記画素単位で格納する成分バッファと、
前記成分バッファにおいて前記画素単位で前記変換後成分値であるか否かを示すビットデータを格納する成分ビットバッファと
を具備し、
前記変換後成分値を前記成分バッファに格納する際に、前記成分ビットバッファを参照することで未変換の成分値を特定して前記変換後成分値に置き換えること
を特徴とする請求項１に記載の画像処理装置。
【請求項３】
画像の各画素の成分値に対して変換処理することで変換後成分値を出力する変換処理機能と、前記成分値の入力処理または前記変換処理手段が出力する前記変換後成分値の出力処理または前記変換処理機能に前記成分値の変換処理を依頼する依頼処理を行う入出力機能とを時分割で実行する制御手段と、前記成分値および前記変換処理機能が出力する前記変換後成分値を関連付けて格納する共有メモリとを具備する画像処理装置を用いた画像処理方法であって、
前記制御手段が前記入出力機能を実行する手順として、
前記共有メモリにおいて変換処理対象の成分値に対応する変換後成分値の有無を判定する判定ステップと、
前記判定ステップで前記変換処理対象の成分値に対応する変換後成分値が前記共有メモリに有ると判定した場合には、前記共有メモリより前記処理対象の成分値に対応する変換後成分値を読み出し、前記判定ステップで前記変換処理対象の成分値に対応する前記変換後成分値が前記共有メモリに無いと判定した場合には、前記変換処理機能へ前記変換処理の依頼を行う変換処理ステップと
を有することを特徴とする画象処理方法。
【請求項４】
画像の各画素の成分値に対して変換処理することで変換後成分値を出力する変換処理機能と、前記成分値の入力処理または前記変換処理手段が出力する前記変換後成分値の出力処理または前記変換処理機能に前記成分値の変換処理を依頼する依頼処理を行う入出力機能とを時分割で実行する制御手段と、前記成分値および前記変換処理機能が出力する前記変換後成分値を関連付けて格納する共有メモリとを具備する画像処理装置用のプログラムを記録した記録媒体であって、
前記入出力機能を実行する手順として、
前記共有メモリにおいて変換処理対象の成分値に対応する変換後成分値の有無を判定する判定ステップと、
前記判定ステップで前記変換処理対象の成分値に対応する変換後成分値が前記共有メモリに有ると判定した場合には、前記共有メモリより前記処理対象の成分値に対応する変換後成分値を読み出し、前記判定ステップで前記変換処理対象の成分値に対応する前記変換後成分値が前記共有メモリに無いと判定した場合には、前記変換処理機能へ前記変換処理の依頼を行う変換処理ステップと
を前記制御手段に実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項５】
画像の各画素の成分値に対して変換処理することで変換後成分値を出力する変換処理機能と、前記成分値の入力処理または前記変換処理手段が出力する前記変換後成分値の出力処理または前記変換処理機能に前記成分値の変換処理を依頼する依頼処理を行う入出力機能とを時分割で実行する制御手段と、前記成分値および前記変換処理機能が出力する前記変換後成分値を関連付けて格納する共有メモリとを具備する画像処理装置用のプログラムであって、
前記入出力機能を実行する手順として、
前記共有メモリにおいて変換処理対象の成分値に対応する変換後成分値の有無を判定する判定ステップと、
前記判定ステップで前記変換処理対象の成分値に対応する変換後成分値が前記共有メモリに有ると判定した場合には、前記共有メモリより前記処理対象の成分値に対応する変換後成分値を読み出し、前記判定ステップで前記変換処理対象の成分値に対応する前記変換後成分値が前記共有メモリに無いと判定した場合には、前記変換処理機能へ前記変換処理の依頼を行う変換処理ステップと
を前記制御手段に実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、入力された成分値や画像データに対して画像処理を施す画像処理装置、画像処理方法、その記録媒体およびプログラムに関するものである。
【背景技術】
【０００２】
従来より、特定の成分値や画像の各画素の成分値の変換を行う画像処理装置では、変換前の成分値の入力インタフェイスと変換後の成分値の出力インタフェイスを有する単一の変換処理ブロックを装置内に用意するのが最も簡潔な方法であった。しかしながら、変換処理ブロックにおける変換処理は、変換マトリクスを用いた成分値の変換と線形あるいは非線形の補間処理を伴い、それらの計算量は決して少なくはないのに加え、特に画像の場合には膨大な数の画素毎の成分値を変換する必要がある。
【０００３】
そこで、通常そのような変換処理ブロックでは、変換処理を効率的に行うために内部にキャッシュを用意し、入力された成分値に対する変換後の成分値をキャッシュに保持して、成分値に変換処理を施す前にキャッシュ内を検索して該当する変換前の成分値の有無を確認する。ここで、変換処理ブロックは、キャッシュ内に該当する変換前の成分値が存在した場合は、それに対応する変換後の成分値を出力インタフェイスに出力し、キャッシュ内に該当する変換前の成分値が存在しなかった場合は、成分値に対して変換処理ブロックにより変換計算を実行し、その結果と変換前の成分値の対をキャッシュに登録しつつ、出力インタフェイスに変換後の成分値を出力する。以上の処理により画像処理装置は、出現頻度の高い成分値の変換処理に要する時間を節約し、効率的に変換処理を行う方法がとられてきた。
【０００４】
また、マルチタスク処理が可能なコンピュータ上での変換処理の方法として、変換処理ブロックが入出力インタフェイスを利用して画像データの各々の画素に対して変換を施しつつ画像を印刷するようなアプリケーションに代表される成分値入出力ブロックと、変換処理自体を実行する変換処理ブロックを、仮想的に複数のＣＰＵで実行可能な環境において、別々の仮想ＣＰＵ実行単位に分離し、それらの間で仮想並行的に変換処理を行うことで、変換処理ブロックを複数の成分値入出力ブロックから利用可能とする仮想並列処理方法がある。この仮想並列処理方法では、変換処理ブロックは成分値入出力ブロックから画像の各画素の成分値を与えられることにより変換処理を開始し、上述したキャッシュの参照や変換処理を行う。尚、ここで成分値とは、例えば各画素のＲＧＢ値または輝度値や、画素間または画像間の差分値や、動きベクトル値などの値である。また、画像処理の処理速度を向上する技術として、入力した色成分形式のデータを、記録用各色成分のデータに変換して画像を記録する際に、色変換処理を簡略化して処理速度を向上する技術が開示されている（例えば、特許文献１参照。）。
【０００５】
【特許文献１】特開平４−５２１５９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、上述した仮想並列処理方法では、変換処理ブロックがキャッシュ内の変換後の成分値を参照する場合であっても、変換処理ブロックが変換処理を開始するためには、実ＣＰＵ時間を成分値入出力ブロックから変換処理ブロックに切り換えなければならず、その為の実ＣＰＵ時間のオーバヘッドは決して小さくないという問題がある。更に、変換処理を施すべき画素数が膨大であることから、実ＣＰＵ時間の切り換え回数を可能な限り少なくするための仕組みを用意して欲しいという要望がある。
【０００７】
この発明は、上述した事情を考慮してなされたもので、実ＣＰＵ時間の切り換え処理の為のオーバヘッドを減らして、効率的に画像処理を行うことができる画像処理装置、画像処理方法、その記録媒体およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
この発明は、上述した課題を解決すべくなされたもので、本発明による画像処理装置においては、画像の各画素の成分値を変換処理する画像処理装置であって、成分値に対して変換処理することで変換後成分値を出力する変換処理手段と、成分値の入力処理と、変換処理手段が出力する変換後成分値の出力処理と、変換処理手段に成分値の変換処理を依頼する依頼処理を行う入出力手段と、成分値および変換処理手段が出力する変換後成分値を関連付けて格納する共有メモリとを具備し、入出力手段は、依頼処理を行う前に共有メモリにおいて変換処理対象の成分値に対応する変換後成分値の有無を判定して、変換処理対象の成分値に対応する変換後成分値が共有メモリに有ると判定した場合には、共有メモリより処理対象の成分値に対応する変換後成分値を読み出し、変換処理対象の成分値に対応する変換後成分値が共有メモリに無いと判定した場合には、変換処理手段へ変換処理の依頼を行うことを特徴とする。
【０００９】
また、本発明の画像処理方法においては、画像の各画素の成分値に対して変換処理することで変換後成分値を出力する変換処理機能と、成分値の入力処理または変換処理手段が出力する変換後成分値の出力処理または変換処理機能に成分値の変換処理を依頼する依頼処理を行う入出力機能とを時分割で実行する制御手段と、成分値および変換処理機能が出力する変換後成分値を関連付けて格納する共有メモリとを具備する画像処理装置を用いた画像処理方法であって、制御手段が入出力機能を実行する手順として、共有メモリにおいて変換処理対象の成分値に対応する変換後成分値の有無を判定する判定ステップと、判定ステップで変換処理対象の成分値に対応する変換後成分値が共有メモリに有ると判定した場合には、共有メモリより処理対象の成分値に対応する変換後成分値を読み出し、判定ステップで変換処理対象の成分値に対応する変換後成分値が共有メモリに無いと判定した場合には、変換処理機能へ変換処理の依頼を行う変換処理ステップとを有することを特徴とする。
【００１０】
また、本発明の記録媒体においては、画像の各画素の成分値に対して変換処理することで変換後成分値を出力する変換処理機能と、成分値の入力処理または変換処理手段が出力する変換後成分値の出力処理または変換処理機能に成分値の変換処理を依頼する依頼処理を行う入出力機能とを時分割で実行する制御手段と、成分値および変換処理機能が出力する変換後成分値を関連付けて格納する共有メモリとを具備する画像処理装置用のプログラムを記録した記録媒体であって、入出力機能を実行する手順として、共有メモリにおいて変換処理対象の成分値に対応する変換後成分値の有無を判定する判定ステップと、判定ステップで変換処理対象の成分値に対応する変換後成分値が共有メモリに有ると判定した場合には、共有メモリより処理対象の成分値に対応する変換後成分値を読み出し、判定ステップで変換処理対象の成分値に対応する変換後成分値が共有メモリに無いと判定した場合には、変換処理機能へ変換処理の依頼を行う変換処理ステップとを制御手段に実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体である。
【００１１】
また、本発明のプログラムにおいては、画像の各画素の成分値に対して変換処理することで変換後成分値を出力する変換処理機能と、成分値の入力処理または変換処理手段が出力する変換後成分値の出力処理または変換処理機能に成分値の変換処理を依頼する依頼処理を行う入出力機能とを時分割で実行する制御手段と、成分値および変換処理機能が出力する変換後成分値を関連付けて格納する共有メモリとを具備する画像処理装置用のプログラムであって、入出力機能を実行する手順として、共有メモリにおいて変換処理対象の成分値に対応する変換後成分値の有無を判定する判定ステップと、判定ステップで変換処理対象の成分値に対応する変換後成分値が共有メモリに有ると判定した場合には、共有メモリより処理対象の成分値に対応する変換後成分値を読み出し、判定ステップで変換処理対象の成分値に対応する変換後成分値が共有メモリに無いと判定した場合には、変換処理機能へ変換処理の依頼を行う変換処理ステップとを制御手段に実行させるためのプログラムである。
【発明の効果】
【００１２】
これにより、本発明の画像処理装置、画像処理方法、その記録媒体およびプログラムにおいては、画像の各画素の成分値に対して変換処理することで変換後成分値を出力する変換処理機能と、成分値の入力処理または変換処理手段が出力する変換後成分値の出力処理または変換処理機能に成分値の変換処理を依頼する依頼処理を行う入出力機能とを時分割で実行する制御手段と、成分値および変換処理機能が出力する変換後成分値を関連付けて格納する共有メモリとを具備する画像処理装置において、入出力機能を実行する手順として、共有メモリにおいて変換処理対象の成分値に対応する変換後成分値の有無を判定し、変換処理対象の成分値に対応する変換後成分値が共有メモリに有ると判定した場合には、共有メモリより処理対象の成分値に対応する変換後成分値を読み出し、判定ステップで変換処理対象の成分値に対応する変換後成分値が共有メモリに無いと判定した場合には、変換処理機能へ変換処理の依頼を行うので、制御手段（例えばＣＰＵ）における変換処理機能の実行と入出力機能の実行の切り替え処理（実ＣＰＵ時間の切り換え処理）の為のオーバヘッドを減らして、効率的に画像処理を行うことができる。
【発明を実施するための最良の形態】
【００１３】
以下、図面を用いて本発明の実施形態について説明する。
まず、本発明の一実施形態として、画像の各画素の成分値が色に関する値であり、この成分値に対して変換処理（画像処理）を行う画像処理装置の概略構成について説明する。
図１は、本発明の一実施形態における画像処理装置の概略構成を示す図である。
【００１４】
図１において、１は成分値入出力ブロックであり、入力された変換処理前の成分値および画像データを後述する共有メモリ２を介して後述する変換処理ブロック３へ引き渡す入力インタフェイス機能と、後述する変換処理ブロック３において変換処理後の成分値および画像データを後述する共有メモリ２を介して取得して出力する出力インタフェイス機能を有する。また、成分値入出力ブロック１は、入力される成分値や画像データを格納する成分バッファ１１と、成分バッファ１１に格納される成分値として画像処理後の成分値が格納されているか否かを判断する情報（ビット）を格納する成分ビットバッファ１２とを備える。この成分ビットバッファ１２は、成分バッファ１１の各々の画素に対応するビット数を有する。尚、本実施形態における画像処理装置は、成分値入出力ブロック１を複数個備える構成とする。
【００１５】
ここで、成分バッファ１１について詳細に説明する。図５は、成分値がＲＧＢ値３バイトの場合の成分バッファ１１の構造例を示す図である。図５に示すように成分バッファ１１は、画像データのＲＧＢ値（成分値）がバッファの先頭から順番に格納されたものである。各々の画素はＲＧＢ値３バイトからなり、画像データの先頭から末尾までアドレスは連続している。また、先頭の画素は最も左上の画素であり、その次のアドレスの画素は左隣または次の行の先頭に位置し、末尾の画素は最も右下の画素となる。また、各々の画素の位置は変数Ｐによって指し示される。尚、図５は、成分値がＲＧＢ値３バイトの場合における成分バッファ１１の構造例を示しているが、成分値がＣＭＹＫ４バイトの場合やＲＧＢ値６バイトの場合などに容易に適用可能である。
【００１６】
次に、成分ビットバッファ１２について詳細に説明する。図６は、図１に示す成分ビットバッファ１２の構造例を示す図である。図６に示すように、成分ビットバッファ１２は、成分バッファ１１に格納される画像データの各々の画素に対応したビットが先頭の画素に対応するビットから末尾の画素に対応するビットまで成分バッファ１１における画素のアドレスの順番に並んでいる。この成分ビットバッファ１２において、ビットの値がオンの場合はそのビットに対応する成分バッファ１１の画素に既に変換後の成分値がセットされていることを表し、ビットの値がオフの場合はそのビットに対応する成分バッファ１１の画素に未だ変換後の成分値がセットされていないことを表す。また、変数Ｑは、上述した変数Ｐによって指し示される成分バッファ１１中の画素に対応する成分ビットバッファ１２中のビット位置を示す値である。
【００１７】
２は共有メモリであり、成分値入出力ブロック１と後述する変換処理ブロック３の間で成分値や画像データなどを共有するためのメモリである。図１に示すように共有メモリ２は、バッファ（共有メモリバッファ）２１と、カウンタ（共有メモリカウンタ）２２やキャッシュ（共有メモリキャッシュ）２３と、ビット配列２４を備える。また、図１には示していないが、共有メモリ２は、成分値入出力ブロック１と後述する変換処理ブロック３が利用可能な一時的に成分値を保持するレジスタＲ１、Ｒ２を備える。
【００１８】
上述した、共有メモリバッファ２１は、成分値入出力ブロック１より入力される成分値、または、後述する変換処理ブロック３で変換後の成分値を一時的に格納する。本実施形態では、成分値入出力ブロック１より入力される成分値は、後述する変換処理ブロック３において変換処理を施すべき成分値である。また、共有メモリカウンタ２２は、変換処理を施すべき成分値（変換済みの成分値が共有メモリキャッシュ２３内に無い成分値）のバイト数を共有メモリ２上で記録する。具体的には、共有メモリカウンタ２２は、成分値入出力ブロック１が共有メモリバッファ２１に格納する成分値のバイト数を記録する。
【００１９】
また共有メモリキャッシュ２３は、変換前の成分値と変換後の成分値を一組として格納している。具体的には、共有メモリキャッシュ２３は、変換前の成分値をインデクスとして、そのインデクスに関連付けて変換後の成分値を格納している。また、ビット配列２４は、インデクスで参照される各々の変換処理後の成分値が、共有メモリキャッシュ２３内に登録されているか否かを表す情報（ビット）を格納する。
【００２０】
３は変換処理ブロックであり、共有メモリ２を介して成分値入出力ブロック１より変換前の成分値や画像の各画素の成分値を取得して、変換処理を行い、変換後の成分値や画像の各画素の成分値を共有メモリ２へ出力する。具体的には、変換処理ブロック３は、共有メモリバッファ２１から変換前の成分値を取得して変換処理を行い、共有メモリバッファ２１において変換前の成分値と同じ位置に変換後の成分値を書き込む。
【００２１】
尚、本実施形態における画像処理装置においては、成分値入出力ブロック１および変換処理ブロック３の機能を実現するプログラムが各々に存在し、単一ＣＰＵが仮想的に両機能が並列処理されるように、実ＣＰＵ時間を分けて各々のプログラムを実行する。
【００２２】
次に、図１に示した画像処理装置の動作について説明する。
図３−１〜図３−３および図４は、図１に示した画像処理装置の動作を示すフロー図である。図1に示したブロック図および図３−１〜図３−３および図４に示すフロー図を用いて、図１にしめした画像処理装置の動作の詳細について説明する。
【００２３】
図３−１〜図３−３は、図１の画像処理装置における成分値入出力ブロック１の処理を示す図である。この図３−１〜図３−３に示す処理は、成分値入出力ブロック１に対して、単独あるいは複数の成分値を有する画像データが入力されることで処理が開始される。
【００２４】
まず、ステップＳ１０１において、画像処理装置は排他フラグをオンする。これは、共有メモリ２が、複数の成分値入出力ブロック１からアクセス可能であるため、排他フラグをオンすることで、共有メモリ２の排他制御を行う必要があるからである。また、既に排他フラグがオンの場合は、他の成分値入出力ブロック１が共有メモリ２を使用中あるいはこれから使用することを表している。よって、既に排他フラグがオンの状態で新たに別の成分値入出力ブロック１から排他フラグをオンする要求があった場合には、現在排他フラグをオンにしている成分値入出力ブロック１が排他フラグをオフに戻すまで、後から排他フラグをオンしようとした成分値入出力ブロック１の処理はスリープ（待機）する。尚、排他フラグは通常のオペレーティングシステムにあるセマフォのような排他機構を用いたもので何ら問題はない。
【００２５】
次にステップＳ１０２において、成分値入出力ブロック１は、変数Ｄに成分値入出力ブロック１が備える成分バッファ１１内の画像データ（成分値）のバイト数をセットし、変数Ｎを０で初期化し、変数Ｐには成分バッファ１１の先頭位置を表す値をセットし、成分ビットバッファ１２の全てのビットにオフをセットする。
【００２６】
次にステップＳ１０３において、成分値入出力ブロック１は、変数Ｄの値が０を越えるか否かを調べる。ここで、変数Ｄの値が０を越えている場合（ステップＳ１０３のＹｅｓ）には、成分値入出力ブロック１は、未だ成分バッファ１１中の画像データの全ての画素を処理していないとみなしてステップＳ１０４に進んで処理を継続する。また、変数Ｄの値が０の場合（ステップＳ１０３のＮｏ）には、成分値入出力ブロック１は、ステップＳ１１３に進む。
【００２７】
次にステップＳ１０４において、成分値入出力ブロック１は、変数Ｐによって指し示される成分バッファ１１内の成分値をレジスタＲ１にｒｅａｄ（読み込み処理）する。次に、ステップＳ１０５において、成分値入出力ブロック１は、レジスタＲ１の成分値と同じ成分値を変換した変換後の成分値が共有メモリキャッシュ２３内に存在するか否かを調べ、存在する場合（ステップＳ１０５のＹｅｓ）はステップＳ１０６に処理を進め、存在しない場合（ステップＳ１０５のＮｏ）はステップＳ１１０に処理を進める。
【００２８】
ここで、共有メモリキャッシュ２３の構造例を示して説明する。図２−１は、成分値がＲＧＢ値３バイトである場合の共有メモリキャッシュ２３の構造例を示す図である。この共有メモリキャッシュ２３は、０からＦＦＦＦＦＦ（１６進数）までの３バイトのインデクスに関連付けて成分値の要素を格納している。本実施形態では、共有メモリキャッシュ２３は、各々の成分値の要素としてＲＧＢ値３バイトを格納するテーブルを有する。尚、図２−１に示す成分値の要素であるＲＧＢ値３バイトは、変換処理ブロック３において変換処理後のＲＧＢ値３バイトである。また、共有メモリ２は、図２−１で示したインデクスで参照される各々の成分値の要素（変換処理後のＲＧＢ値３バイト）が、共有メモリキャッシュ２３内に登録されているか否かを表すビット配列２４を更に格納する。
【００２９】
ここで、ビット配列２４の構成例について図を用いて説明する。図２−２は、図２−１で示した０からＦＦＦＦＦＦ（１６進数）のインデクスで参照される各々の成分値の要素が、共有メモリキャッシュ２３内に登録されているか否かを表すビット配列２４を示す図である。図２−２において、ビット配列２４のあるビットがオンの場合はそのビットに対応する図２−１の要素のＲＧＢ値が共有メモリキャッシュ２３に登録されていると判断して、ビットがオフの場合は共有メモリキャッシュ２３に登録されていないと判断する。すなわち、ステップＳ１０５において、成分値入出力ブロック１は、レジスタＲ１の成分値をインデクスとして特定したビット配列２４におけるビットのオン／オフを基に、共有メモリキャッシュ２３にレジスタＲ１の成分値を変換した値が存在するか否かを判定する。以上に示すように、成分値入出力ブロック１が共有メモリキャッシュ２３にアクセスする際には、変換前の成分値であるＲＧＢ値３バイトをインデクスとして共有メモリキャッシュ２３を探索し、共有メモリキャッシュ２３内に登録されている対応する要素の値（変換済みのＲＧＢ値）を取得することができる。
【００３０】
ここで共有メモリキャッシュ２３に変換済みの値がある場合（ステップＳ１０５のＹｅｓ）には、ステップＳ１０６に進み、成分値入出力ブロック１は、共有メモリキャッシュ２３からレジスタＲ１の成分値（ＲＧＢ値３バイト）の値をインデクスとして、対応する要素のＲＧＢ値３バイトの値（変換済みの値）をレジスタＲ２にｒｅａｄする。
【００３１】
次にステップＳ１０７において、成分値入出力ブロック１は、成分バッファ１１において変数Ｐによって指し示される位置から、レジスタＲ２中の値を成分バッファ１１へｗｒｉｔｅ（書き込み処理）する。本実施形態の場合は、変数Ｐで示される位置からレジスタＲ２中のＲＧＢ値３バイトをｗｒｉｔｅすることになる。
【００３２】
次にステップＳ１０８において、成分値入出力ブロック１は、成分ビットバッファ１２のビット位置を指し示すビット位置を変数Ｑにセットする。この変数Ｑの値は、本実施形態においては、ＲＧＢの３色で１画素なので、以下の式により求めることができる。
Ｑ＝（Ｐ−成分バッファ１１の先頭位置を表す値）／３
【００３３】
すなわち、変数Ｐによって指し示される成分バッファ１１中の画素に対応する成分ビットバッファ１２中のビット位置は、成分ビットバッファ１２の先頭のビットを第０ビットとして、Ｑビット目に相当する。次にステップＳ１０９においては、成分値入出力ブロック１は、成分ビットバッファ１２中の第Ｑビットにオンをセットした後、ステップＳ１１２へ処理を進める。
【００３４】
一方、共有メモリキャッシュ２３に変換済みの値がない場合（ステップＳ１０５のＮｏ）には、ステップＳ１１０に進み、成分値入出力ブロック１は、共有メモリバッファ２１の先頭からＮバイト目の位置からレジスタＲ１の値をｗｒｉｔｅする。本実施形態の場合は、共有メモリバッファ２１のＮバイト目の位置からレジスタＲ１中のＲＧＢ値３バイトをｗｒｉｔｅすることになる。
【００３５】
次に、ステップＳ１１１において、成分値入出力ブロック１は、変数Ｎに単一の成分値のバイト数、即ち本実施形態では３バイトを加えた後、ステップＳ１１２へ処理を進める。次にステップＳ１１２において、成分値入出力ブロック１は、変数Ｐに単一の成分値のバイト数を加え、変数Ｄからは単一の成分値のバイト数を差し引いて、ステップＳ１０３の処理へ戻る。
【００３６】
以上の一連の処理を繰り返すことによって、成分バッファ１１内の画像データの各画素の変換前の成分値において、変換前の成分値に対応する変換後の成分値が共有メモリキャッシュ２３に登録されていない変換前の成分値を共有メモリバッファ２１に登録することができる。また、変換前の成分値に対応する変換後の成分値が共有メモリキャッシュ２３に登録されている場合は、対応する変換後の成分値が成分バッファ１１に登録され、その画素に対応する成分ビットバッファ１２のビットがオンにセットされる。また、成分バッファ１１に格納される画像データ中の全ての画素に対して上述した処理が行われると変数Ｄの値が０となって図３−２に示すステップＳ１１３に処理が進む。
【００３７】
次に、ステップＳ１１３において、成分値入出力ブロック１は、共有メモリカウンタ２２に変数Ｎの値をセットする。この変数Ｎの値は、図３−１に示した処理により、共有メモリバッファ２に格納されている変換処理対象となる変換前の成分値の合計バイト数である。
【００３８】
次に、ステップＳ１１４において、成分値入出力ブロック１は、変換処理開始フラグをオンにセットする。変換処理開始フラグをオンにセットすることによって、図４のフロー図に示される変換処理ブロック３のステップＳ２０１のスリープが中断されて、ステップＳ２０２から変換処理が開始される。変換処理開始フラグは、通常のオペレーティングシステムにあるセマフォのような同期機構を用いたもので何ら問題はない。尚、図４のフロー図については詳細な説明を後述する。
【００３９】
次にステップＳ１１５において、成分値入出力ブロック１は、変換処理開始フラグがオフになるまでスリープする。変換処理開始フラグは、図４のフロー図によって示される処理が完了した後、ステップＳ２０９においてオフにセットされので、その直後にステップＳ１１５のスリープが中断されて、図３−３で示されるフロー図のステップＳ１１６から処理が再開されることになる。尚、図４のフロー図によって示される変換処理が完了後、共有メモリバッファ２１にセットされた変換後の成分値を、成分バッファ１１の適切な位置にｗｒｉｔｅする処理（ステップＳ１２１）がなされる。
【００４０】
図３−３のステップＳ１１６において、成分値入出力ブロック１は、変数Ｐに成分バッファ１１の先頭位置を表す値をセットし、変数Ｎを０で初期化する。次にステップＳ１１７において、成分値入出力ブロック１は、変数Ｎの値が共有メモリカウンタ２２にセットされている値（ステップＳ１１３でセットされた値）未満か否かを調べる。ここで、Ｎ値が共有メモリカウンタ２２にセットされている値未満である場合（ステップＳ１１７のＹｅｓ）には、成分値入出力ブロック１は、ステップＳ１１８に処理を進め、変数Ｎの値が共有メモリカウンタ２２にセットされている値以上である場合（ステップＳ１１７のＮｏ）には、ステップＳ１２４に処理を進める。
【００４１】
まず、ステップＳ１１８に進んだ場合について説明する。ステップＳ１１８においては、成分値入出力ブロック１は、成分ビットバッファ１２のビット位置を指し示すビット位置を変数Ｐから計算し、変数Ｑにセットする。変数Ｑは上述したように、Ｑ＝（Ｐ−成分バッファ１１の先頭位置を表す値）／３の計算式で計算される。次にステップＳ１１９においては、成分値入出力ブロック１は、変数Ｑによって指し示される成分ビットバッファ１２のビット位置のビットのオン／オフを調べ、オンである場合（ステップＳ１１９のＹｅｓ）はステップＳ１２３の処理に進み、オフの場合（ステップＳ１１９のＮｏ）はステップＳ１２０の処理に進む。
【００４２】
ステップＳ１２０においては、成分値入出力ブロック１は、共有メモリバッファ２１のＮバイト目の位置からの成分値をレジスタＲ２にｒｅａｄする。本実施形態の場合は、共有メモリバッファ２１におけるＮバイト目の位置からのＲＧＢ値３バイトをレジスタＲ２にｒｅａｄすることになる。尚、このステップ１２０において、共有メモリバッファ２１のＮバイト目の位置からレジスタＲ２に読み出す成分値は、変換処理ブロック３において変換処理後の成分値である。
【００４３】
次に、ステップＳ１２１においては、成分値入出力ブロック１は、レジスタＲ２の値を成分バッファ１１中の変数Ｐで指し示される位置からｗｒｉｔｅする。本実施形態の場合は、成分バッファ１１における変数Ｐで示される位置からレジスタＲ２中のＲＧＢ値３バイトをｗｒｉｔｅする。これにより、変換後の成分値が成分バッファ１１の変数Ｐで指定される位置に格納される。
【００４４】
次に、ステップＳ１２２においては、成分値入出力ブロック１は、変数Ｎに単一の成分値のバイト数を加える。次に、ステップＳ１２３においては、成分値入出力ブロック１は、変数Ｐに単一の成分値のバイト数を加えて、ステップＳ１１７の処理に戻る。
【００４５】
また、ステップＳ１１７の後にステップ１２４に進んだ場合について説明する。
ステップＳ１２４において、成分値入出力ブロック１は、排他フラグをオフした後、処理を終了する。また、成分値入出力ブロック１は、排他フラグをオフした後に任意のタイミングで成分バッファ１１に格納している変換後の成分値を出力する。
以上、一連の処理を繰り返すことによって、図３−１のフロー図に示される処理で成分バッファ１１中の成分値において未だ変換されていない画素に対してのみ、図３−３のフロー図に示される処理によって、変換後の成分値がセットされることになる。
【００４６】
次に変換処理ブロック３の処理について詳細に説明する。
図４は、図１の変換処理ブロック３の処理を示すフロー図である。本実施形態においては、図３−１〜図３−３のフロー図で示す成分値入出力ブロック１の処理が開始される前の任意のタイミングで、処理が開始されているものとする。尚、図４の示す処理を開始するのは通常のオペレーティングシステムでは、サービスの起動あるいはデーモンの起動に相当するものである。
【００４７】
図４の処理が開始されると、先ずステップＳ２０１において、変換処理ブロック３は、変換処理開始フラグがオンになるまでスリープする。この変換処理開始フラグは、図３−２のステップＳ１１４においてオンにセットされるものであり、変換処理開始フラグがオンになるとステップＳ２０１におけるスリープは中断され、次のステップＳ２０２へ処理が進められる。
【００４８】
次に、ステップＳ２０２においては、変換処理ブロック３は、変数Ｃ＝０に初期化する。次にステップＳ２０３においては、変換処理ブロック３は、共有メモリバッファ２１の先頭からＣバイト目の位置から、単一の成分値をレジスタＲ１にｒｅａｄする。本実施形態の場合は、共有メモリバッファ２１のＣバイト目の位置からＲＧＢ値３バイトの成分値をレジスタＲ１にｒｅａｄすることになる。
【００４９】
次にステップＳ２０４においては、変換処理ブロック３は、レジスタＲ１の成分値に対して変換計算を実行し、その結果得られる変換後の成分値をレジスタＲ２にセットする。ここで行われる変換計算は、既存の色変換処理でなんら問題ない。例えば、下記の計算式のように変換前のＲＧＢ値を、３×４のマトリクス演算によって変換し、得られる値を変換後の成分値Ｒ’Ｇ’Ｂ’とするような処理が一般に行われている。
【００５０】
【数１】
2005086565.tif 000003
【００５１】
あるいは、上記のような線形変換ではなく、何らかの非線形変換あるいは補間処理等を入れた複雑な計算でも良い。また、ステップ２０４における変換計算は、ユーザからの入力によって様々に調整可能であっても構わない。例えば、色の濃さあるいはＲＧＢ各々の成分の色の強さなど様々な指定が反映された色変換処理でも構わない。何れの色変換処理によって変換されたとしても、その変換前の値と変換後の値が、後述するステップＳ２０６において共有メモリキャッシュ２３に登録されることで、その変換前の成分に対する変換計算が再度行う必要が無くなる点が重要である。尚、本実施形態においては、変換前の値をインデクスとして、そのインデクスに関連付けて変換後の値を共有メモリキャッシュ２３に登録する。
【００５２】
次にステップＳ２０５においては、変換処理ブロック３は、レジスタＲ２にセットされている変換後の成分値を、共有メモリバッファ２１の先頭からＣバイト目の位置にｗｒｉｔｅする。本実施形態の場合は、変換後のＲ’Ｇ’Ｂ’値３バイトを共有メモリバッファ２１のＣバイト目の位置からｗｒｉｔｅすることになる。この変数Ｃで特定される位置は、変換前のＲＧＢ値３バイトが格納されていた位置である。
【００５３】
次にステップＳ２０６においては、変換処理ブロック３は、共有メモリキャッシュ２３に対して、レジスタＲ１にセットされている成分値をインデクスとする成分値の要素にレジスタＲ２の値を登録する。本実施形態では、レジスタＲ１にセットされている変換前のＲＧＢ値を３バイトのインデクスとして共有メモリキャッシュ２３の要素を特定し、その特定された要素に対して変換後のＲ’Ｇ’Ｂ’値３バイトを登録する。
【００５４】
次にステップＳ２０７においては、変換処理ブロック３は、変数Ｃに単一の成分値のバイト数を加える。次にステップＳ２０８においては、変換処理ブロック３は、変数Ｃの値が共有メモリカウンタ２２にセットされている値未満か否かを調べ、そうである場合（ステップＳ２０８のＹｅｓ）にはステップＳ２０３へ戻り、そうでない場合（ステップＳ２０８のＮｏ）にはステップＳ２０９へ処理を進める。ステップＳ２０９では、変換処理ブロック３は、変換処理開始フラグにオフをセットしてステップＳ２０１へ戻りスリープ状態となる。
【００５５】
以上、図４のフロー図で示す一連の処理によって、共有メモリバッファ２１中の全ての成分値に対して変換処理が施され、かつその結果が共有メモリバッファ２１に登録されることになる。また、共有メモリバッファ２１に変換処理後の成分値を登録した後に、レジスタＲ１、Ｒ２に保持されている変換前後の成分値を共有キャッシュメモリ２３に登録する。
【００５６】
最後に、変換処理で利用するパラメータの変更処理について説明する。図３−１、図３−２および図４のフロー図で示される処理で説明したように、共有メモリキャッシュ２３は変換前の成分値と変換後の成分値の対を記録し、成分値入出力ブロック１に対して異なる成分値を持つ画像データを入力するたびに、共有メモリキャッシュ２３の各々の要素に変換後の成分値が登録され、変換処理ブロック３に共有メモリ２を介して渡される成分値の数はどんどん少なくなっていく。しかしながら、ユーザがガンマ変換のパラメータや、ＲＧＢ値の各成分の強さを表すパラメータ等、変換の為の何らかのパラメータを変更した場合は、共有メモリキャッシュ２３に登録してある全ての成分値を無効にする必要がある。そのために、ユーザが変換の為のパラメータを変更する場合には、画像処理装置は、共有メモリキャッシュ２３の初期化処理を実行する。
【００５７】
図７は、図１の共有メモリキャッシュ２３の初期化処理を示すフロー図である。図７に示すように、共有メモリキャッシュ２３の初期化処理が開始されると、ステップＳ３０１において、図２−２で示した共有メモリキャッシュ２３のビット配列の全てのビットをオフして初期化する。このようにすることで、図２−１で示したテーブルの全ての要素は変換後の成分値が登録されていないとみなされ、以降起動される成分値入出力ブロックおよび変換処理ブロックの処理で、共有メモリキャッシュ２３に対して新しい成分値が登録されることになる。
【００５８】
また、本実施形態の画像処理装置は、図示していないが、マウスやキーボードなどの入力装置および、ＣＲＴ（Ｃａｔｈｏｄｅ  ＲａＹ  Ｔｕｂｅ）や液晶ディスプレイなどの表示装置を具備する。また、本実施形態の画像処理装置は、図示していないがＣＰＵ（中央演算装置）およびメモリを内蔵し、上述した機能を実現するプログラムを上記メモリに格納し、上記ＣＰＵが上記メモリよりプログラムを読み出して実行することで、上述した各機能を実現する。
【００５９】
また、図３−１〜図３−３、図４および図７に示した各処理は、専用のハードウェアにより実現されるものであってもよく、また、ＣＰＵが、各処理部の機能を実現する為のプログラムをメモリより読み込んで実行することによりその機能を実現させるものであってもよい。
また、上記メモリは、ハードディスク装置や光磁気ディスク装置、フラッシュメモリ等の不揮発性のメモリや、ＣＤ−ＲＯＭ等の読み出しのみが可能な記録媒体、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）のような揮発性のメモリ、あるいはこれらの組み合わせによるコンピュータ読み取り、書き込み可能な記録媒体より構成されるものとする。
【００６０】
また、図３−１〜図３−３、図４および図７に示した処理を行う機能を実現する為のプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより各処理を行っても良い。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。
【００６１】
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発メモリ（ＲＡＭ）のように、一定時間プログラムを保持しているものも含むものとする。
【００６２】
また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。
また、上記プログラムは、前述した機能の一部を実現する為のものであっても良い。さらに、前述した機能をコンピュータシステムに既に記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であっても良い。
【００６３】
また、上記のプログラムを記録したコンピュータ読み取り可能な記録媒体等のプログラムプロダクトも本発明の実施形態として適用することができる。上記のプログラム、記録媒体、伝送媒体およびプログラムプロダクトは、本発明の範疇に含まれる。
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【図面の簡単な説明】
【００６４】
【図１】本発明の一実施形態における画像処理装置の概略構成を示す図である。
【図２−１】成分値がＲＧＢ値３バイトである場合の共有メモリキャッシュ２３の構造例を示す図である。
【図２−２】図２−１で示したインデクスで参照される各々の成分値の要素が、共有メモリキャッシュ２３内に登録されているか否かを表すビット配列２４を示す図である。
【図３−１】図１の画像処理装置における成分値入出力ブロック１の処理を示す図である。
【図３−２】図１の画像処理装置における成分値入出力ブロック１の処理を示す図である。
【図３−３】図１の画像処理装置における成分値入出力ブロック１の処理を示す図である。
【図４】図１の変換処理ブロック３の処理を示すフロー図である。
【図５】成分値がＲＧＢ値３バイトの場合の成分バッファ１１の構造例を示す図である。
【図６】図１の成分ビットバッファ１２の構造例を示す図である。
【図７】図１の共有メモリキャッシュ２３の初期化処理を示すフロー図である。
【符号の説明】
【００６５】
１      成分値入出力ブロック
２      共有メモリ
３      変換処理ブロック
１１    成分バッファ
１２    成分ビットバッファ
２１    共有メモリバッファ（バッファ）
２２    共有メモリカウンタ（カウンタ）
２３    共有メモリキャッシュ（キャッシュ）
２４    ビット配列
【図１】
2005086565.tif 000004
【図２−１】
2005086565.tif 000005
【図２−２】
2005086565.tif 000006
【図３−１】
2005086565.tif 000007
【図３−２】
2005086565.tif 000008
【図３−３】
2005086565.tif 000009
【図４】
2005086565.tif 000010
【図５】
2005086565.tif 000011
【図６】
2005086565.tif 000012
【図７】
2005086565.tif 000013