(57)【要約】      （修正有）【課題】ＳＩＭＤ命令を用いた画像処理を行う場合における処理効率の向上。【解決手段】３種類の色成分で表現される第１の色空間を複数の立方格子に分割する複数の格子点それぞれに対応付けられる色変換値を格納する３次元ルックアップテーブルに基づいて、第１の色空間に属する点の色値を、第２の色空間に属する点の色値に変換する色変換装置であって、色変換の対象となる第１の色空間に属する点の色値を取得する色値取得部と、色値取得部にて取得される色値に基づいて、色変換の対象となる点が属する第１の色空間上の立方格子を判別する格子判別部と、色値取得部にて取得される色値と、格子判別部にて判別された立方格子に含まれる格子点の色値との比較を行うことにより、色変換の対象となる点が、複数の多面体の内のいずれに属するかを判別する多面体判別部等を備える。【選択図】図１
2008259178.tif 000002
【特許請求の範囲】
【請求項１】
３種類の色成分で表現される第１の色空間を複数の立方格子に分割する複数の格子点それぞれに対応付けられる色変換値を格納する３次元ルックアップテーブルに基づいて、前記第１の色空間に属する点の色値を、第２の色空間に属する点の色値に変換する色変換装置であって、
色変換の対象となる前記第１の色空間に属する点の色値を取得する色値取得部と、
前記色値取得部にて取得される色値に基づいて、色変換の対象となる点が属する第１の色空間上の立方格子を判別する格子判別部と、
前記色値取得部にて取得される色値と、前記格子判別部にて判別された立方格子に含まれる格子点の色値との比較を行うことにより、前記色変換の対象となる点が、前記格子判別部にて判別された立方格子に含まれる複数の格子点を頂点とする平面により該立方格子を分割して得られる複数の多面体の内のいずれに属するかを判別する多面体判別部と、
前記多面体判別部にて判別された多面体を構成する格子点に対応付けられている色変換値に基づいて、前記第１の色空間に属する点の色値に対応する第２の色空間に属する点の色値を補間する補間演算部と
を備えてなる色変換装置。
【請求項２】
請求項１に記載の色変換装置において、
前記多面体判別部は、前記色値取得部にて取得される色値と、前記格子判別部にて判別された立方格子に含まれる格子点の色値とをＳＩＭＤ命令における比較演算命令によって比較することにより、前記色変換の対象となる点が、前記格子判別部にて判別された立方格子に含まれる複数の格子点を頂点とする平面により該立方格子を分割して得られる複数の多面体の内のいずれに属するかを判別し、
前記補間演算部は、前記多面体判別部にて判別された多面体を構成する格子点に対応付けられている色変換値を、ＳＩＭＤ命令における選択命令によって取得する色変換装置。
【請求項３】
請求項２に記載の色変換装置において、
前記多面体判別部は、条件分岐命令を用いることなく、前記色値取得部にて取得される色値と、前記格子判別部にて判別された立方格子に含まれる格子点の色値とをＳＩＭＤ命令における比較演算命令によって比較し、該比較演算の結果に基づいて、前記格子判別部にて判別された立方格子に含まれる複数の格子点を頂点とする平面により該立方格子を分割して得られる複数の多面体の内の前記色変換の対象となる点が属する多面体を示す多面体識別番号をＳＩＭＤ命令における選択演算命令によって取得し、
前記補間演算部は、前記多面体判別部にて取得される多面体識別番号に基づいて、該多面体識別番号に対応する多面体に対応づけられている色変換値の格納アドレスを演算で取得し、所定のメモリ領域における該格納アドレスに格納されている色変換値を取得する色変換装置。
【請求項４】
請求項３に記載の色変換装置において、
前記多面体識別番号は、前記３次元ルックアップテーブルを構成する基本単位サイズの倍数に設定されている色変換装置。
【請求項５】
請求項１に記載の色変換装置において、
前記３次元ルックアップテーブルにおける前記多面体に含まれる複数の格子点それぞれに対応付けられている複数の色変換値は、それぞれの格納アドレスが互いに隣接するようにメモリ領域に格納されている色変換装置。
【請求項６】
請求項５に記載の色変換装置において、
前記立方格子を分割して得られる複数の多面体それぞれに対応付けられている複数の色変換値は、該複数の色変換値それぞれが格納されるメモリ領域の先頭アドレス間の間隔が、所定間隔となるように格納されている色変換装置。
【請求項７】
請求項５に記載の色変換装置において、
前記メモリ領域に格納される色変換値は、ＳＩＭＤ命令のレジスタ長単位で配列して格納している色変換装置。
【請求項８】
請求項２に記載の色変換装置において
前記多面体判別部にて判別された多面体を構成する格子点を示すインデックス値を取得するインデックス値取得部と、
前記インデックス値取得部にて取得されるインデックス値に基づいて、前記多面体を構成する複数の格子点それぞれに対応付けられている色変換値を取得する色変換値取得部と
を備える色変換装置。
【請求項９】
請求項８に記載の色変換装置において
色変換値取得部は、前記インデックス値取得部にて取得されるインデックス値に基づいて、前記多面体を構成する複数の格子点それぞれに対応付けられている色変換値をシャッフル命令によってレジスタに割り付ける色変換装置。
【請求項１０】
画像データに対して空間フィルタ処理を行うフィルタ処理装置であって、
処理対象である画像データを構成する各画素の色成分値を取得する色成分値取得部と、
前記色成分値取得部にて取得される色成分値を、該色成分値取得部で取得される際の配列と同じ順序で第１のレジスタに格納させる第１のデータ格納部と、
前記色成分値取得部にて取得される色成分値を、該第１のレジスタに格納される色成分値に対して所定ビット数だけシフトさせた状態で第２のレジスタに格納させる第２のデータ格納部と、
前記第１のレジスタに格納されている各色成分値に対して第１のフィルタ係数をＳＩＭＤ命令により積算する第１の積算部と、
前記第２のレジスタに格納されている各色成分値に対して前記第１のフィルタ係数とは異なる第２のフィルタ係数をＳＩＭＤ命令により積算する第２の積算部と、
前記第１および第２の積算部における算出結果をＳＩＭＤ命令により加算する加算部と
を備えてなるフィルタ処理装置。
【請求項１１】
請求項１０に記載のフィルタ処理装置において、
前記第１および第２のデータ格納部は、前記第１および第２のレジスタに複数色分の色成分値を格納させるフィルタ処理装置。
【請求項１２】
請求項１０に記載のフィルタ処理装置において、
前記第２のデータ格納部は、前記第１のデータ格納部により第１のレジスタに格納された画像データに対して１画素の色成分数もしくは該色成分数の整数倍のビット数だけ所定方向にシフトさせた該画像データを、第２のレジスタに格納させるフィルタ処理装置。
【請求項１３】
３種類の色成分で表現される第１の色空間を複数の立方格子に分割する複数の格子点それぞれに対応付けられる色変換値を格納する３次元ルックアップテーブルに基づいて、前記第１の色空間に属する点の色値を、第２の色空間に属する点の色値に変換する色変換方法であって、
色変換の対象となる前記第１の色空間に属する点の色値を取得する色値取得ステップと、
前記色値取得ステップにて取得される色値に基づいて、色変換の対象となる点が属する第１の色空間上の立方格子を判別する格子判別ステップと、
前記色値取得ステップにて取得される色値と、前記格子判別ステップにて判別された立方格子に含まれる格子点の色値との比較を行うことにより、前記色変換の対象となる点が、前記格子判別ステップにて判別された立方格子に含まれる複数の格子点を頂点とする平面により該立方格子を分割して得られる複数の多面体の内のいずれに属するかを判別する多面体判別ステップと、
前記多面体判別ステップにて判別された多面体を構成する格子点に対応付けられている色変換値に基づいて、前記第１の色空間に属する点の色値に対応する第２の色空間に属する点の色値を補間する補間演算ステップと
を有する色変換方法。
【請求項１４】
請求項１３に記載の色変換方法において、
前記多面体判別ステップは、前記色値取得ステップにて取得される色値と、前記格子判別ステップにて判別された立方格子に含まれる格子点の色値とをＳＩＭＤ命令における比較演算命令によって比較することにより、前記色変換の対象となる点が、前記格子判別ステップにて判別された立方格子に含まれる複数の格子点を頂点とする平面により該立方格子を分割して得られる複数の多面体の内のいずれに属するかを判別し、
前記補間演算ステップは、前記多面体判別ステップにて判別された多面体を構成する格子点に対応付けられている色変換値を、ＳＩＭＤ命令における選択命令によって取得する色変換方法。
【請求項１５】
請求項１４に記載の色変換方法において、
前記多面体判別ステップは、条件分岐命令を用いることなく、前記色値取得ステップにて取得される色値と、前記格子判別ステップにて判別された立方格子に含まれる格子点の色値とをＳＩＭＤ命令における比較演算命令によって比較し、該比較演算の結果に基づいて、前記格子判別ステップにて判別された立方格子に含まれる複数の格子点を頂点とする平面により該立方格子を分割して得られる複数の多面体の内の前記色変換の対象となる点が属する多面体を示す多面体識別番号をＳＩＭＤ命令における選択演算命令によって取得し、
前記補間演算ステップは、前記多面体判別ステップにて取得される多面体識別番号に基づいて、該多面体識別番号に対応する多面体に対応づけられている色変換値の格納アドレスを演算で取得し、所定のメモリ領域における該格納アドレスに格納されている色変換値を取得する色変換方法。
【請求項１６】
請求項１５に記載の色変換方法において、
前記多面体識別番号は、前記３次元ルックアップテーブルを構成する基本単位サイズの倍数に設定されている色変換方法。
【請求項１７】
請求項１３に記載の色変換方法において、
前記３次元ルックアップテーブルにおける前記多面体に含まれる複数の格子点それぞれに対応付けられている複数の色変換値は、それぞれの格納アドレスが互いに隣接するようにメモリ領域に格納されている色変換方法。
【請求項１８】
請求項１７に記載の色変換方法において、
前記立方格子を分割して得られる複数の多面体それぞれに対応付けられている複数の色変換値は、該複数の色変換値それぞれが格納されるメモリ領域の先頭アドレス間の間隔が、所定間隔となるように格納されている色変換方法。
【請求項１９】
請求項１４に記載の色変換方法において、
前記多面体判別ステップにて判別された多面体を構成する格子点を示すインデックス値を取得するインデックス値取得ステップと、
前記インデックス値取得ステップにて取得されるインデックス値に基づいて、前記多面体を構成する複数の格子点それぞれに対応付けられている色変換値を取得する色変換値取得ステップと
を有する色変換方法。
【請求項２０】
請求項１９に記載の色変換方法において、
色変換値取得ステップは、前記インデックス値取得ステップにて取得されるインデックス値に基づいて、前記多面体を構成する複数の格子点それぞれに対応付けられている色変換値をシャッフル命令によってレジスタに割り付ける色変換方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＳＩＭＤ（Single Instruction Multiple Data）命令を実行可能なプロセッサを用いた画像処理に関し、特に当該画像処理を行う場合における処理効率の向上に関するものである。
【背景技術】
【０００２】
色変換処理を行う際、その処理内容が数式で表現できない場合や数式化できるとしても式が複雑過ぎるような場合、その入出力関係をＬＵＴ（Look Up Table）で対応づける方法がある。
【０００３】
一般に、画像処理における入力値は「Ｒ」、「Ｇ」および「Ｂ」で表される３変数であり、階調数はそれぞれ８ｂｉｔ（２５６値）で表現されることが多い。このような入力値がとり得る全ての値に対して処理後の出力値をデータテーブルで保持しようとすると、そのデータ容量は膨大なサイズになってしまう。
【０００４】
このため、色変化の連続性を前提に出力色空間の補間処理を組み合わせることでテーブル容量を減らすテーブル補間法が使われている。テーブル補間法とは、任意の入力値に対応する出力値の近傍数点を用いて３次元補間計算を行い、出力値を得る方法である。このテーブル補間法としては、使用する近傍点の数に応じて「８点補間法」、「４点補間法」、「６点補間法」等が知られる。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
近年、高速に画像データを入出力し画像処理を行うマルチメディア機器が開発されており、このようなマルチメディア機器における色変換処理を実現するためには高速な処理能力が求められる。近年、色変換処理等のマルチメディア処理を高速に実行できるようにするため、汎用プロセッサには、ＳＩＭＤ（Single Instruction Multiple Data）命令と呼ばれる整数演算や浮動小数点演算等を並列に実行できる命令が搭載されてきている。しかしながら、ＳＩＭＤ命令が得意とするのは、複数の演算処理を１回の命令で並列に実行させることであり、メモリ領域に格納されているＬＵＴデータの複数のデータを同時に参照するような、メモリのランダムアクセス処理を並列に実行することはできない。
【０００６】
例えば８点補間法による補間処理を行う場合には、入力値の各色成分について８点分の色変換値をＬＵＴから読み出す必要があり、通常８×３＝２４回のメモリＲｅａｄ処理が必要となる。そのため、ＳＩＭＤ処理により補間処理等の演算処理は高速化できても、ＬＵＴ参照時のメモリアクセス処理が高速化できないため、色変換処理の全体としての処理時間は、ＳＩＭＤ処理を用いているにも拘わらず、十分に高速化できていなかった。
【０００７】
本発明は上述した問題点を解決するためになされたものであり、ＳＩＭＤ命令を実行可能なプロセッサを用いた画像処理を行う場合における処理効率の向上に寄与することのできる技術を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上述した課題を解決するため、本発明の一態様に係る色変換装置は、３種類の色成分で表現される第１の色空間を複数の立方格子に分割する複数の格子点それぞれに対応付けられる色変換値を格納する３次元ルックアップテーブルに基づいて、前記第１の色空間に属する点の色値を、第２の色空間に属する点の色値に変換する色変換装置であって、色変換の対象となる前記第１の色空間に属する点の色値を取得する色値取得部と、前記色値取得部にて取得される色値に基づいて、色変換の対象となる点が属する第１の色空間上の立方格子を判別する格子判別部と、前記色値取得部にて取得される色値と、前記格子判別部にて判別された立方格子に含まれる格子点の色値との比較を行うことにより、前記色変換の対象となる点が、前記格子判別部にて判別された立方格子に含まれる複数の格子点を頂点とする平面により該立方格子を分割して得られる複数の多面体の内のいずれに属するかを判別する多面体判別部と、前記多面体判別部にて判別された多面体を構成する格子点に対応付けられている色変換値に基づいて、前記第１の色空間に属する点の色値に対応する第２の色空間に属する点の色値を補間する補間演算部とを備えてなることを特徴とするものである。
【０００９】
また、本発明の一態様に係るフィルタ処理装置は、画像データに対して空間フィルタ処理を行うフィルタ処理装置であって、処理対象である画像データを構成する各画素の色成分値を取得する色成分値取得部と、前記色成分値取得部にて取得される色成分値を、該色成分値取得部で取得される際の配列と同じ順序で第１のレジスタに格納させる第１のデータ格納部と、前記色成分値取得部にて取得される色成分値を、該第１のレジスタに格納される色成分値に対して所定ビット数だけシフトさせた状態で第２のレジスタに格納させる第２のデータ格納部と、前記第１のレジスタに格納されている各色成分値に対して第１のフィルタ係数をＳＩＭＤ命令により積算する第１の積算部と、前記第２のレジスタに格納されている各色成分値に対して前記第１のフィルタ係数とは異なる第２のフィルタ係数をＳＩＭＤ命令により積算する第２の積算部と、前記第１および第２の積算部における算出結果をＳＩＭＤ命令により加算する加算部とを備えてなることを特徴とするものである。
【００１０】
また、本発明の一態様に係る色変換方法は、３種類の色成分で表現される第１の色空間を複数の立方格子に分割する複数の格子点それぞれに対応付けられる色変換値を格納する３次元ルックアップテーブルに基づいて、前記第１の色空間に属する点の色値を、第２の色空間に属する点の色値に変換する色変換方法であって、色変換の対象となる前記第１の色空間に属する点の色値を取得する色値取得ステップと、前記色値取得ステップにて取得される色値に基づいて、色変換の対象となる点が属する第１の色空間上の立方格子を判別する格子判別ステップと、前記色値取得ステップにて取得される色値と、前記格子判別ステップにて判別された立方格子に含まれる格子点の色値との比較を行うことにより、前記色変換の対象となる点が、前記格子判別ステップにて判別された立方格子に含まれる複数の格子点を頂点とする平面により該立方格子を分割して得られる複数の多面体の内のいずれに属するかを判別する多面体判別ステップと、前記多面体判別ステップにて判別された多面体を構成する格子点に対応付けられている色変換値に基づいて、前記第１の色空間に属する点の色値に対応する第２の色空間に属する点の色値を補間する補間演算ステップとを有することを特徴とするものである。
【００１１】
また、本発明の一態様に係るフィルタ処理方法は、画像データに対して空間フィルタ処理を行うフィルタ処理方法であって、処理対象である画像データを構成する各画素の色成分値を取得する色成分値取得ステップと、前記色成分値取得ステップにて取得される色成分値を、該色成分値取得ステップで取得される際の配列と同じ順序で第１のレジスタに格納させる第１のデータ格納ステップと、前記色成分値取得ステップにて取得される色成分値を、該第１のレジスタに格納される色成分値に対して所定ビット数だけシフトさせた状態で第２のレジスタに格納させる第２のデータ格納ステップと、前記第１のレジスタに格納されている各色成分値に対して第１のフィルタ係数をＳＩＭＤ命令により積算する第１の積算ステップと、前記第２のレジスタに格納されている各色成分値に対して前記第１のフィルタ係数とは異なる第２のフィルタ係数をＳＩＭＤ命令により積算する第２の積算ステップと、前記第１および第２の積算ステップにおける算出結果をＳＩＭＤ命令により加算する加算ステップとを有することを特徴とするものである。
【００１２】
また、本発明の一態様に係る色変換プログラムは、３種類の色成分で表現される第１の色空間を複数の立方格子に分割する複数の格子点それぞれに対応付けられる色変換値を格納する３次元ルックアップテーブルに基づいて、前記第１の色空間に属する点の色値を、第２の色空間に属する点の色値に変換する色変換方法をコンピュータに実行させる色変換プログラムであって、色変換の対象となる前記第１の色空間に属する点の色値を取得する色値取得ステップと、前記色値取得ステップにて取得される色値に基づいて、色変換の対象となる点が属する第１の色空間上の立方格子を判別する格子判別ステップと、前記色値取得ステップにて取得される色値と、前記格子判別ステップにて判別された立方格子に含まれる格子点の色値との比較を行うことにより、前記色変換の対象となる点が、前記格子判別ステップにて判別された立方格子に含まれる複数の格子点を頂点とする平面により該立方格子を分割して得られる複数の多面体の内のいずれに属するかを判別する多面体判別ステップと、前記多面体判別ステップにて判別された多面体を構成する格子点に対応付けられている色変換値に基づいて、前記第１の色空間に属する点の色値に対応する第２の色空間に属する点の色値を補間する補間演算ステップとをコンピュータに実行させることを特徴とするものである。
【００１３】
また、本発明の一態様に係るフィルタ処理プログラムは、画像データに対して空間フィルタ処理を行うフィルタ処理方法をコンピュータに実行させるフィルタ処理プログラムであって、処理対象である画像データを構成する各画素の色成分値を取得する色成分値取得ステップと、前記色成分値取得ステップにて取得される色成分値を、該色成分値取得ステップで取得される際の配列と同じ順序で第１のレジスタに格納させる第１のデータ格納ステップと、前記色成分値取得ステップにて取得される色成分値を、該第１のレジスタに格納される色成分値に対して所定ビット数だけシフトさせた状態で第２のレジスタに格納させる第２のデータ格納ステップと、前記第１のレジスタに格納されている各色成分値に対して第１のフィルタ係数をＳＩＭＤ命令により積算する第１の積算ステップと、前記第２のレジスタに格納されている各色成分値に対して前記第１のフィルタ係数とは異なる第２のフィルタ係数をＳＩＭＤ命令により積算する第２の積算ステップと、前記第１および第２の積算ステップにおける算出結果をＳＩＭＤ命令により加算する加算ステップとをコンピュータに実行させることを特徴とするものである。
【発明の効果】
【００１４】
以上に詳述したように本発明によれば、ＳＩＭＤ命令を実行可能なプロセッサを用いた画像処理を行う場合における処理効率の向上に寄与することのできる技術を提供することができる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明の実施の形態について図面を参照しつつ説明する。
【００１６】
（第１の実施の形態）
図１は、本発明の第１の実施の形態による色変換装置について説明するための機能ブロック図である。
【００１７】
本実施の形態による色変換装置１は、色値取得部１０１、格子判別部１０２、多面体判別部１０３、補間演算部１０４、ＣＰＵ８０１およびＭＥＭＯＲＹ８０２を備えてなる構成となっている。
【００１８】
本実施の形態による色変換装置１は、上述のような構成により、３種類の色成分で表現される第１の色空間を複数の立方格子に分割する複数の格子点それぞれに対応付けられる色変換値を格納する３次元ルックアップテーブルに基づいて、第１の色空間に属する点の色値を、第１の色空間とは異なる色表現を行う第２の色空間に属する点の色値に変換する機能を有している。
【００１９】
ここでの第１および第２の色空間としては、例えば、ＲＧＢ色空間、ＣＭＹ色空間、ＣＭＹＫ色空間、Ｌａｂ色空間、Ｌｕｖ色空間、Ａｄｏｂｅ（登録商標）ＲＧＢ色空間およびｓＲＧＢ色空間などが挙げられる。以下、本実施の形態では、第１の色空間がＲＧＢ色空間であり、第２の色空間がＣＭＹ色空間である場合を例に挙げて説明する。
【００２０】
まず、本実施の形態による色変換装置の大まかな構成について説明する。
【００２１】
色値取得部１０１は、色変換の対象となるＲＧＢ色空間に属する点（ＲＧＢ色空間で表現される色）の色値（ＲＥＤ値、ＧＲＥＥＮ値およびＢＬＵＥ値）を入力値として取得する。
【００２２】
格子判別部１０２は、色値取得部１０１にて取得される色値に基づいて、色変換の対象となる点が属するＲＧＢ色空間上の立方格子を判別する。
【００２３】
多面体判別部１０３は、条件分岐命令を用いることなく、色値取得部１０１にて取得される色値と、格子判別部１０２にて判別された立方格子に含まれる格子点の色値とをＳＩＭＤ命令における比較演算命令によって比較することにより、色変換の対象となる点が、格子判別部１０２にて判別された立方格子に含まれる複数の格子点を頂点とする平面により該立方格子を分割して得られる複数の多面体の内のいずれに属するかを判別する。
【００２４】
具体的に、多面体判別部１０３は、上記比較演算の結果に基づいて、格子判別部１０２にて判別された立方格子に含まれる複数の格子点を頂点とする平面により該立方格子を分割して得られる複数の多面体の内の色変換の対象となる点が属する多面体を示す「多面体識別番号」をＳＩＭＤ命令における選択演算命令によって取得する。
【００２５】
補間演算部１０４は、条件分岐命令を用いることなく、多面体判別部１０３にて判別された多面体を構成する格子点に対応付けられている色変換値をＳＩＭＤ命令における選択命令によって取得し、当該取得される色変換値に基づいて、第１の色空間に属する点の色値に対応する第２の色空間に属する点の色値（出力値）を補間する。
【００２６】
具体的に、補間演算部１０４は、多面体判別部１０３にて取得される「多面体識別番号」に基づいて、該多面体識別番号に対応する多面体に対応づけられている色変換値の格納アドレスを演算で取得し、ＭＥＭＯＲＹ８０２（所定のメモリ領域）における該格納アドレスに格納されている色変換値を取得する。なお、ここでの「多面体識別番号」は、３次元ルックアップテーブルを構成する基本単位サイズの倍数に設定されている。
【００２７】
ＣＰＵ８０１は、色変換装置における各種処理を行う役割を有しており、またＭＥＭＯＲＹ８０２に格納されているプログラムを実行することにより種々の機能を実現する役割も有している。また、ＣＰＵ８０１は、ＳＩＭＤ命令の実行が可能なプロセッサであり、ＳＩＭＤ命令等を実行する際に用いる複数のレジスタ８０１ｒを備えている。
【００２８】
ＭＥＭＯＲＹ８０２は、例えばＲＯＭやＲＡＭ等から構成されており、色変換装置において利用される種々の情報やプログラムを格納する役割を有している。また、ＭＥＭＯＲＹ８０２には、３次元ルックアップテーブルの色変換値が格納されている。ここでの３次元ルックアップテーブルのデータは、ＳＩＭＤ命令に用いるレジスタ８０１ｒのレジスタ長（ここでは１６ビット）単位で配列して、ＭＥＭＯＲＹ８０２に格納されている。
【００２９】
続いて、本実施の形態による色変換装置の動作の詳細について説明する。
【００３０】
まず、テーブル補間法を使った一般的な色変換処理について簡単に説明する。図２は、ＲＧＢ色空間での３つの色成分を３次元の立方体を用いて表したものである。ここでは、ＬＵＴの各軸がＲ値、Ｇ値およびＢ値のそれぞれに対応しており、各軸の値は８分割（９個の格子点により分割）されている。なお、各色成分値の大小を表す各軸は、この他に１６分割（１７個の格子点により分割）や３２（３３個の格子点により分割）分割等することも可能である。このように、複数の格子点によって第１の色空間を分割することにより、仮想的に複数の立方格子領域（図２では８×８×８個）によって第１の色空間が構成されていると捉えることができる。
【００３１】
図３〜図５は、テーブル補間法の例を示す図である。テーブル補間法には、立方格子の全ての頂点を構成する８個の格子点に対応付けられている色変換値を用いる「８点補間法」（図３を参照）、立方格子の領域を２つの三角柱領域に分割し、各三角柱領域の頂点を構成する６個の格子点に対応付けられている色変換値を用いる「６点補間法」（図４を参照）や、立方格子の領域を６つの三角錐領域に分割し、各三角錐領域の頂点を構成する４個の格子点に対応付けられている色変換値を用いる「４点補間法」（図５を参照）等がある。以下、本実施の形態では、「４点補間法」を用いたテーブル補間を行う例を挙げて説明する。
【００３２】
まず、入力値であるＲ値、Ｇ値およびＢ値のそれぞれを、上位３ｂｉｔと下位５ｂｉｔに分ける。そして、格子判別部１０２は、上位３ｂｉｔの値を用いて、対象となる色変換値と当該色変換値に近接するメモリアドレスに格納されている色変換値とを、出力値の色空間の色成分数に応じてＭＥＭＯＲＹ８０２に格納されている３次元ＬＵＴから読み出す。
【００３３】
本実施の形態では、出力値の色空間（第２の色空間）がＣＭＹ色空間であるため、ＣＭＹ色空間の色成分であるＣ値用の変換用ＬＵＴ、Ｍ値用の変換用ＬＵＴおよびＹ値用の変換用ＬＵＴの３つがＭＥＭＯＲＹ８０２に格納されている。もちろん、出力値の色空間がＣＭＹＫ色空間のように色成分数が４種類であるような場合には、変換用ＬＵＴも４種類用意し、出力値の色空間がＣＭＹＲＧＢＫ色空間のように色成分数が７種類であるような場合には変換用ＬＵＴを７種類用意することになる。
【００３４】
次に、多面体判別部１０３は、入力値であるＲ値、Ｇ値およびＢ値のそれぞれの下位５ｂｉｔの値を用いて、図６〜図１１に示すような６種類の三角錐領域（多面体）の内いずれの領域に入力値の色が属するかを判別し、ＭＥＭＯＲＹ８０２に格納されている４種類の変換用ＬＵＴそれぞれから４つの格子点分の色変換値を読み出す。
【００３５】
そして、補間演算部１０４は、上述のようにして読み出された４つの格子点に対応する色変換値に基づいて、式（１）に示すような補正式により出力値（色変換処理後の値）を求める。
【００３６】
(D)=(P0)+W1((P1)-(P0))+W2((P2)-(P0))+W3((P3)-(P0))    ・・・  （１）
【００３７】
図１２および図１３は、上述の４点補間法による一般的な色変換処理の処理の流れを示すフローチャートである。まず、入力値であるＲ値、Ｇ値およびＢ値を取得し（Ｓ１０１）、それぞれの色成分値を上位３ｂｉｔと下位５ｂｉｔに分ける（Ｓ１０２）。続いて、上記色成分値の上位３ｂｉｔの値に基づいて、当該入力値が属するＲＧＢ色空間上での立方格子を特定し、該立方格子の８つの頂点の参照アドレスを計算する（Ｓ１０３）。
【００３８】
次に、上記色成分値の下位５ｂｉｔの値に基づいて、上述のようにして特定された立方格子に含まれる６種類の三角錐領域の内いずれに入力値が属するかを判別し（Ｓ１０４、Ｓ１０６、Ｓ１０８、Ｓ１１０、Ｓ１１２）、入力値が属する三角錐領域を構成する４つの格子点に対応する色変換値の参照アドレスを決定する。例えば、入力値が図６に示す「パターン１」の三角錐領域内に存在する場合、図６に示す格子点Ｐ０，Ｐ１，Ｐ５，Ｐ７に対応する出力値ＣＭＹの各色について図１４に示すＬＵＴからその格子点の値がメモリアドレスに基づいて読み出される。図１４に示す従来のＬＵＴでは、格子点に対応する色変換値が、格子点の座標を示す座標軸を基準として配列されている。
【００３９】
上述のようにしてＭＥＭＯＲＹ８０２から読み出された４つの格子点（Ｐ０，Ｐ１，Ｐ５，Ｐ７）に対応するＬＵＴ値と、ＭＥＭＯＲＹ８０２に格納されている重み係数３つ（Ｗ１，Ｗ２，Ｗ３）に基づいて、補間式である式（１）を用いて出力値Ｄを求める（Ｓ１０５、Ｓ１０７、Ｓ１０９、Ｓ１１１、Ｓ１１３、Ｓ１１４、）（図１５を参照）。この処理は変換用ＬＵＴの色成分数（ここでは、ＣＭＹの３種類）分について実行する。そして、この処理を対象となる画像データの画素数分に対して繰り返し（Ｓ１１５）、色変換処理は終了する。
【００４０】
次に、本実施の形態による色変換装置１におけるＳＩＭＤ命令の実行と、ＳＩＭＤ命令に適したＬＵＴ構造について説明する。
【００４１】
上記の一般的な色変換処理の例（図１２〜図１４を参照）では、１つの変換用ＬＵＴに対して４つの格子点数分の少なくとも４回のメモリ参照と、これに伴う参照アドレスの計算処理および三角錐領域の判別のための分岐処理が発生する。参照アドレスの計算を減らす方法として、立方格子の全ての頂点の格子点を順番に並べる方法が発案されているが、８点補間法のように立方体の全ての格子点を参照する場合は良いが、４点補間法のように立方格子をさらに領域分割する場合、参照領域を決定するためのアドレス計算が必要であり、この方法は適さない。また、メモリ参照回数についても、８つの格子点のデータ中から選択領域に応じて４格子点を選択しなければならないため、メモリ領域へのランダムアクセスが発生し、メモリ参照数を低減させることができない。
【００４２】
以下、本実施の形態において採用している、ＳＩＭＤ命令を用いた処理に適したＬＵＴ構造について詳細に説明する。
【００４３】
一般に、ＳＩＭＤ命令を用いたＭＥＭＯＲＹ８０２へのアクセスは、ＳＩＭＤ命令で使用するレジスタ８０１ｒのレジスタ長が１６ビットである場合、１６の倍数アドレスに配置される必要がある。このため、本実施の形態におけるＬＵＴでは、図１６のように、ＳＩＭＤ命令のレジスタ長単位でデータを配置するデータ構造となっている。
【００４４】
レジスタ８０１ｒのレジスタ長単位でＬＵＴデータをＭＥＭＯＲＹ８０２に格納していない場合、メモリから読み出したデータを適切な位置に移動する必要が生ずる。また、ＭＥＭＯＲＹ８０２から必要なデータを１回のメモリアクセスで取得できず（８個のデータが必要であっても、６個しか有効データが無い場合、続くデータをＭＥＭＯＲＹ８０２から読み出し、残りの有効データ２個を取得しなければならない。）。
【００４５】
これに対し、本実施の形態のように、レジスタ８０１ｒのレジスタ長単位でデータをメモリに格納しておくことにより、必要なデータがメモリ領域における適切な位置（例えば、演算スロット０は三角錐０など）にあるので、メモリ領域から読み出したデータをそのまま利用することができる。
【００４６】
また、本実施の形態では、ＭＥＭＯＲＹ８０２の参照回数を減らすため、最小限のメモリアクセスで補間計算に必要なＬＵＴの色変換値を全て参照できる構造としている。ここでは、図１６に示すＬＵＴに格納されている色変換値が、色変換処理後の出力値そのものである例を示しているが、これに限られるものではなく、式（１）で計算する出力値の差分値を予め計算しておき図１７のように格納して使用しても良い。また、図１６の出力値の色成分数が３つ（ＣＭＹ）となっているが、例えば第２の色空間がＣＭＹＫ色空間である場合には、図１８に示すように出力値の色成分数は４つ（ＣＭＹＫ）となる。
【００４７】
具体的に、３次元ルックアップテーブルにおける６種類の多面体に含まれる複数の格子点（例えば、パターン１の三角錐領域については、Ｐ０，Ｐ１，Ｐ５，Ｐ７）それぞれに対応付けられている複数の色変換値は、それぞれの格納アドレスが互いに隣接するようにＭＥＭＯＲＹ８０２に格納されている（図１９を参照）。また、図２０に示すように、ある基準アドレス（Ｐ０）に対して、６つの多面体（６パターン）分のＬＵＴ値（色変換値）を格納するようにしてもよい。
【００４８】
これにより、ある多面体に含まれる複数の格子点に対応付けられた色変換値を、一度のメモリアクセスで取得することが可能となり、頻繁なメモリアクセスによる処理の遅延の発生を回避することができる。
【００４９】
また、上記立方格子を分割して得られる複数の多面体それぞれに対応付けられている複数の色変換値は、該複数の色変換値それぞれが格納されるＭＥＭＯＲＹ８０２の先頭アドレス間の間隔が、所定間隔となるように（先に計算された参照アドレス（Ｐ０）の近傍に）格納されていてもよい（図２１を参照）。
【００５０】
複数の多面体それぞれの色変換値を所定間隔でメモリ領域に格納させることにより、ある立方格子を分割して得られる複数の多面体の内いずれか１つの多面体の格納アドレスが分かれば、他の５種類の多面体を構成する格子点の色変換値は当該格納アドレスに所定のシフト値を加えるだけで取得することができる。このように、アドレス計算をシフト値の加算のみで行うことにより、アドレス計算にかかるコストをゼロにすることができる。
【００５１】
多くのプロセッサではキャッシュメモリを備えているため、メモリ領域へのデータ配列方法によって演算能力に影響を与える場合があるため、使用する画像データの特性に応じて図１９および図２１に示すデータ配列の内いずれか最適な方を採用することが好ましい。
【００５２】
次に、上述のようなデータ構造であるＬＵＴをＭＥＭＯＲＹ８０２にて参照するためのアドレス計算、三角錐領域の判別処理、および判別された三角錐領域に対応するＬＵＴ値を用いた補間演算について、ＳＩＭＤ命令を用いて処理の高速化を実現する方法について説明する。
【００５３】
図２２は、本実施の形態による色変換装置におけるＳＩＭＤ命令を使用した色変換処理の処理の流れを示すフローチャートである。図１２および図１３で示した処理との違いは、ＳＩＭＤ命令使用によるアドレス計算と、補間計算処理とを複数の画素に対して並列に実行することと、入力色が属する三角錐領域を判別する際に条件分岐命令を使用しない点にある。
【００５４】
一般にＳＩＭＤ命令を用いた演算では、並行して処理することのできるデータ数に比例して処理が高速化されるため、４並列であれば最大４倍の高速化を図ることができる。近年の最新プロセッサの動作クロック数が頭打ちになっていることを考えると４倍という数値は非常に効果が大きいと言える。
【００５５】
また、本実施の形態による色変換装置では、条件分岐命令を用いないため、高速化の効果も相当に大きい。近年の高速プロセッサは、高クロック化のためパイプライン段数が深く２０段を超えるものも存在する。そのため分岐予測等の技術を使い極力分岐ミスを起こさないようにしているが、分岐予測を誤ることがある。この分岐予測が外れると、それまで先読みで行っていたパイプライン中にある処理結果は破棄され、分岐先の命令を始めから実行することになり、最終的な処理結果が得られるまでに相当な遅延時間が必要となる。
【００５６】
この遅延時間は、パイプライン段数が深い程ペナルティは大きくなり安定した高速化が保証できなくなる。つまり、条件分岐が無くなることで分岐ミスによるパイプラインストールが無くなり安定した高速化が約束できることになり、場合によっては２〜３倍の高速化に相当することもある。
【００５７】
以下、本実施の形態による色変換装置における色変換処理の詳細について、図２３〜図２９を参照して説明する。まず、色値取得部１０１は、図２３のようにＳＩＭＤ命令を使って色変換の対象となる画像データ（入力値）をＳＩＭＤレジスタ８０１ｒにロードする（Ｓ２０１）。このとき、１画素は３バイトなので１６画素分４８バイトを３つのＳＩＭＤレジスタにロードする。
【００５８】
次に、図２４のようにＳＩＭＤ命令を用いてデータの入れ替えを行い、Ｒ成分、Ｇ成分およびＢ成分の３種類に分けてレジスタに格納する（Ｓ２０３）。
【００５９】
続いて、図２５のように、ＳＩＭＤ命令を用いてＲ成分、Ｇ成分およびＢ成分それぞれに定数を乗じて総和を求めＬＵＴの先頭を加えて参照アドレスを求める（Ｓ２０４）。図２５では、説明の便宜上、Ｂ成分の演算内容しか記載していないが、Ｒ成分およびＧ成分についても同様に積和演算を行い、下記式（２）により参照アドレスを得る。
【００６０】
参照アドレス
＝  LUT_addr + B*6*16 + G*6*9*16 + R*6*81*16  …  （２）
【００６１】
なお、図２３〜図２５中に記載しているＲ、Ｇ、Ｂ成分の値はＬＵＴ参照アドレスを求めるための上位ｂｉｔの値（９×９×９分割の場合上位３ｂｉｔで範囲は０〜８の値）である。
【００６２】
次に、図２６および図２７に示す処理では、入力色が、４点補間法における６つの三角錐領域のいずれに属するかを判別する（Ｓ２０５）。図２６および図２７中に記載しているＲ成分、Ｇ成分およびＢ成分の値は下位５ｂｉｔの値（９×９×９分割の場合下位５ｂｉｔで範囲は０〜３１の値）である。従来の色変換処理では、ｉｆ文等の条件分岐命令を用いて三角錐領域の判別を実現していたが、本実施の形態では、ＳＩＭＤ命令における比較演算命令と選択演算命令によって実現している。ここでは、図２６に示す処理が比較命令により実行され、図２７に示す処理が選択命令によって実行される。
【００６３】
この三角錐領域の判別処理の詳細は、図２８のフローチャートに示す。同図に示すように、Ｓ３０１〜Ｓ３０３の処理で比較演算を行い、Ｓ３０４〜Ｓ３０８の処理で選択演算を行っていることがわかる。
【００６４】
比較命令では、比較結果により値は「０」もしくは「−１」になり、選択命令では、値が「０」の時はレジスタ１、「−１」の時はレジスタ２から値を取得する。この時、選択対象となるＳＩＭＤレジスタの値は、領域に相当するオフセット値（「多面体識別番号」に相当し、図１９に示す例では１６の倍数となっている。）である。
【００６５】
この値を、図２９に示すように、算出されたＬＵＴ参照アドレス（Ｐ０）に加算することで、必要な色変換値（係数など）が格納されたアドレス値となる。次に、このアドレスでＬＵＴデータを読み出し（Ｓ２０５）、ＳＩＭＤ命令による補間計算を行う（Ｓ２０６）。
【００６６】
ここでの補間計算式の処理内容は、式（１）に示すような積和演算なので、図２５の処理に似た処理を行うことになる。
【００６７】
最後に、補間演算により得られた処理結果（色変換後の色値）を図３０に示すように並び替え、ＭＥＭＯＲＹ８０２に格納することで（Ｓ２０７、Ｓ２０８）、１６画素分の色変換処理が終わり、同様な処理を対象となる画像データ全体に対して行うことで色変換処理が完了する（Ｓ２０９）。
【００６８】
図３１は、本実施の形態による色変換装置における大まかな処理（色変換方法）の流れについて説明するためのフローチャートである。
【００６９】
色値取得部１０１は、色変換の対象となる第１の色空間に属する点の色値を取得する（色値取得ステップ）（Ｓ４０１）。
【００７０】
格子判別部１０２は、色値取得ステップにて取得される色値に基づいて、色変換の対象となる点が属する第１の色空間上の立方格子を判別する（格子判別ステップ）（Ｓ４０２）。
【００７１】
多面体判別部１０３は、多面体判別ステップは、色値取得ステップにて取得される色値と、格子判別ステップにて判別された立方格子に含まれる格子点の色値とをＳＩＭＤ命令における比較演算命令によって比較することにより、色変換の対象となる点が、格子判別ステップにて判別された立方格子に含まれる複数の格子点を頂点とする平面により該立方格子を分割して得られる複数の多面体の内のいずれに属するかを判別する（多面体判別ステップ）（Ｓ４０３）。
【００７２】
具体的に、多面体判別ステップでは、条件分岐命令を用いることなく、色値取得ステップにて取得される色値と、格子判別ステップにて判別された立方格子に含まれる格子点の色値とをＳＩＭＤ命令における比較演算命令によって比較し、該比較演算の結果に基づいて、格子判別ステップにて判別された立方格子に含まれる複数の格子点を頂点とする平面により該立方格子を分割して得られる複数の多面体の内の色変換の対象となる点が属する多面体を示す多面体識別番号（例えば、３次元ルックアップテーブルを構成する基本単位サイズの倍数）をＳＩＭＤ命令における選択演算命令によって取得する。
【００７３】
補間演算部１０４は、多面体判別ステップにて判別された多面体を構成する格子点に対応付けられている色変換値をＳＩＭＤ命令における選択命令によって取得し、当該色変換値に基づいて、第１の色空間に属する点の色値に対応する第２の色空間に属する点の色値を補間する（補間演算ステップ）（Ｓ４０４）。
【００７４】
補間演算ステップでは、多面体判別ステップにて取得される多面体識別番号に基づいて、該多面体識別番号に対応する多面体に対応づけられている色変換値の格納アドレスを演算で取得し、所定のメモリ領域における該格納アドレスに格納されている色変換値を取得する。
【００７５】
このように、ｉｆ文等の条件分岐命令の代わりに、比較演算命令を用いた多面体の判別および選択命令を用いた多面体を構成する格子点に対応する色変換値の取得（上記処理において、ＳＩＭＤ命令における比較演算命令および選択命令を併用することで、いわゆる算術分岐が実現される。）を行うことにより、分岐予測が外れた場合における処理結果の廃棄によるパイプラインストールの発生を回避することができ、ＳＩＭＤ命令を用いた処理の高速化を実現することができる。
【００７６】
また、より少ない格子点数に基づく補間演算を行うことにより、例えば立方格子の頂点を構成する全ての格子点を用いる８点補間に比べて、補間演算におけるＣＰＵへの処理負荷を低減させることができる。
【００７７】
（第２の実施の形態）
続いて、本発明の第２の実施の形態について説明する。
【００７８】
本実施の形態は、上述の第１の実施の形態の変形例であり、第１の実施の形態とは、主に補間演算部の構成が異なっている。以下、すでに第１の実施の形態において説明した部分と同様な機能を有する部分については同一符号を付し、説明を割愛する。
【００７９】
図３２は、本発明の第２の実施の形態による色変換装置の構成を示す機能ブロック図である。
【００８０】
本実施の形態による色変換装置１’は、色値取得部１０１、格子判別部１０２、多面体判別部１０３、補間演算部１０４’、ＣＰＵ８０１およびＭＥＭＯＲＹ８０２を備えてなる構成となっている。本実施の形態における補間演算部１０４’は、インデックス値取得部１０５および色変換値取得部１０６を備えている。
【００８１】
インデックス値取得部１０５は、多面体判別部１０３にて判別された多面体を構成する格子点を示すインデックス値を取得する。
【００８２】
色変換値取得部１０６は、インデックス値取得部１０５にて取得されるインデックス値に基づいて、多面体を構成する複数の格子点それぞれに対応付けられている色変換値をシャッフル命令によって取得する（レジスタに割り付ける）。
【００８３】
上述の第１の実施の形態は、ルックアップテーブルのデータサイズが比較的小さい場合には適しているが、ルックアップテーブルが「３３×３３×３３」のように大きいときにはメモリを大量に必要とする欠点がある。そこで、本実施の形態では、メモリ使用量を削減できる方法について説明する。
【００８４】
具体的に、本実施の形態の第１の実施の形態との違いは、ルックアップテーブルの構造が図３３のようにＰ０を頂点とする補間計算に関係する８点（各ＣＭＹＫについて）と、上記実施の形態の６パターンを生成することが可能となる図３４のような選択・抽出パターン（６パターン）とを組み合わせることでメモリ使用量を削減する点にある。
【００８５】
この選択・抽出パターン（６パターン）を使い、選択・抽出命令とルックアップテーブルとを組み合わせることで、上記実施の形態で使用していた補間計算に必要なＬＵＴ値を得ることができる。図３５は、選択抽出命令の概要を示す図である。
【００８６】
選択・抽出命令は、インデックス値取得部１０５により取得される選択・抽出パターン値をインデックス値として、色変換値取得部１０６によってＬＵＴ値が格納されたレジスタから値を抽出する（いわゆる、シャッフル命令と呼ばれているものである。）。
【００８７】
この工程を、上述の第１の実施の形態の補間計算フロー（図２２を参照）の一部に加えることで、データサイズが大きいルックアップテーブルを用いる場合でも、高速な補間計算が可能となる。
【００８８】
図３６は、本実施の形態による色変換装置における色変換処理の流れを示すフローチャートである。図３６において、太枠で囲まれたステップ（Ｓ５０４〜Ｓ５０６）が、第１の実施の形態における図２２の処理と異なるステップである。
【００８９】
ＳＩＭＤ命令によるレジスタでのデータの入れ替え（Ｓ２０３）を行った後、各ＲＧＢ値の上位３ｂｉｔを用い、ＬＵＴにおける立方格子の基準点である「Ｐ０」のＭＥＭＯＲＹ８０２における参照アドレスをＳＩＭＤ命令により計算し、８点分のＬＵＴ値を読み込む（Ｓ５０４）。
【００９０】
インデックス値取得部１０５は、各ＲＧＢ値の下位５ｂｉｔを用い、ＬＵＴにおける立方格子内にある６種類の三角錐領域の内いずれの領域に入力色が属するかをＳＩＭＤ命令による比較演算命令および選択命令により判別し（多面体判別ステップ）、オフセット値を得る。インデックス値取得部１０５は、このオフセット値から、多面体判別ステップにて判別された三角錐領域を構成する格子点を示すインデックス値を取得する（インデックス値取得ステップ）（Ｓ５０５）。
色変換値取得部１０６は、インデックス値取得ステップにて取得されるインデックス値に基づいて、三角錐領域を構成する複数の格子点それぞれに対応付けられている色変換値を取得する（色変換値取得ステップ）（Ｓ５０６）。色変換値取得ステップは、インデックス値取得ステップにて取得されるインデックス値に基づいて、多面体を構成する複数の格子点それぞれに対応付けられている色変換値をシャッフル命令によってレジスタに割り付ける。
【００９１】
このような構成とすることにより、色変換処理の補間精度を向上させるためにデータサイズが大きいルックアップテーブル（例えば、３３×３３×３３）を用いる場合でも、少ないメモリ使用量で色変換処理を実現することができる。
従来の色変換処理方法はＬＵＴ参照回数が多くＳＩＭＤ命令でアドレス計算、補間処理の演算処理部分を並列実行し高速化するだけでは十分な処理速度を得られなかったが、上述の第１および第２の実施の形態では、ＬＵＴの構造を見直し最小限のメモリ参照回数で補間処理に必要なＬＵＴ値を取得できるようにし、かつ領域決定処理において条件分岐命令を使用しない方法を組み合わせることで非常に高速な色変換処理が実現できる。
【００９２】
また、上述の各実施の形態では、説明の便宜上、色変換処理の対象となる入力値（入力色空間）が３次元であり、出力値（出力色空間）の次元は問わない構成としているが、これに限られるものではなく、例えば１次元、２次元および４次元以上の色空間で表現される色を色変換処理の対象（入力色）とすることも可能である。
【００９３】
なお、上述の色変換装置での処理における各ステップは、ＭＥＭＯＲＹ８０２に格納されている色変換プログラムをＣＰＵ８０１に実行させることにより実現されるものである。
【００９４】
（第３の実施の形態）
続いて、本発明の第３の実施の形態について説明する。
【００９５】
本実施の形態によるフィルタ処理装置は、入力データである画像データに対して所定の空間フィルタ処理を行う機能を有している。
【００９６】
図３７は、本発明の第３の実施の形態によるフィルタ処理装置の構成を示す機能ブロック図である。
【００９７】
本実施の形態によるフィルタ処理装置７は、色成分値取得部７０１、第１のデータ格納部７０２、第２のデータ格納部７０３、第１の積算部７０４、第２の積算部７０５、加算部７０６、ＣＰＵ８０１およびＭＥＭＯＲＹ８０２を備えてなる構成となっている。
【００９８】
色成分値取得部７０１は、処理対象である画像データを構成する各画素の色成分値を取得する。
【００９９】
第１のデータ格納部７０２は、色成分値取得部にて取得される複数色分の色成分値を、該色成分値取得部で取得される際のデータ配列と同じ順序のデータ配列のままで第１のレジスタに格納させる。
【０１００】
第２のデータ格納部７０３は、色成分値取得部にて取得される複数色分の色成分値を、該第１のレジスタに格納される色成分値に対して所定ビット数だけシフトさせた状態で第２のレジスタに格納させる。具体的に、第２のデータ格納部７０３は、第１のデータ格納部７０２により第１のレジスタに格納された画像データに対して１画素の色成分数もしくは該色成分数の整数倍のビット数だけ所定方向にシフトさせた該画像データを、第２のレジスタに格納させる。
【０１０１】
第１の積算部７０４は、第１のレジスタに格納されている各色成分値に対して第１のフィルタ係数をＳＩＭＤ命令により積算する。
【０１０２】
第２の積算部７０５は、第２のレジスタに格納されている各色成分値に対して第１のフィルタ係数とは異なる第２のフィルタ係数をＳＩＭＤ命令により積算する。
【０１０３】
加算部７０６は、第１および第２の積算部における算出結果をＳＩＭＤ命令により加算する。
【０１０４】
ＣＰＵ８０１は、色変換装置における各種処理を行う役割を有しており、またＭＥＭＯＲＹ８０２に格納されているプログラムを実行することにより種々の機能を実現する役割も有している。また、ＣＰＵ８０１は、ＳＩＭＤ命令の実行が可能となっており、ＳＩＭＤ命令等を実行する際に用いる複数のレジスタ８０１ｒを備えている。
【０１０５】
ＭＥＭＯＲＹ８０２は、例えばＲＯＭやＲＡＭ等から構成されており、色変換装置において利用される種々の情報やプログラムを格納する役割を有している。
従来、スキャナ等から読み込まれた画像データのノイズ除去やエッジ強調、網点除去等様々な画像処理の前処理として空間フィルタ処理が行われている。
【０１０６】
図３８〜図４０は、一般的な２次元空間フィルタ処理について説明するための図である。図３８は、３×３のフィルタ係数を示す図であり、図３９は、画像データとウィンドウの関係の一例を示す図であり、図４０は、フィルタ処理にて用いられる計算式の一例を示す図である。
【０１０７】
図３９において、画像データ上にある３×３の太枠で囲まれた画素領域が１つの処理単位であり、「ウィンドウ」と呼ぶものとする。また、ウィンドウの中心にある灰色の画素部分を「注目画素」と呼び、この注目画素にフィルタ処理の結果が格納される。注目画素であるウィンドウ中央の画素値のフィルタ処理結果は、注目画素の近傍の画素値とフィルタ係数とに基づく演算処理によって求められる。例えば、フィルタ処理としてＬＰＦ（Low Pass Filter）処理やＨＰＦ（High Pass Filter）処理を行う場合、各画素値とそれに対応するフィルタ係数を乗算し、それらの総和を求め、その値を定数で割る演算が行われる（図４０参照）。そして、このウィンドウを１画素ずつシフトさせながら、注目画素の計算を画像データ全体に対して行うことによりフィルタ処理が行われる。
【０１０８】
しかしながら、空間フィルタ処理は演算量が多いため、フィルタ処理において用いるウィンドウのサイズが大きく（ウィンドウに含まれる画素数が多く）なると、その処理時間が極端に長くなる傾向がある。これに対応し、空間フィルタ処理の演算をソフトウェアで高速に処理する方法として、ＳＩＭＤ（Single Instruction Multiple Data）命令を実行可能な、いわゆる「ＳＩＭＤ型プロセッサ」を用いる演算方法が知られている。
【０１０９】
ＳＩＭＤ型プロセッサは、複数のデータに対して、同じ演算処理を並列に実行することができるため、画像処理のように同じ演算処理を複数の画素に対して実行する場合に適している。
【０１１０】
従来の汎用プロセッサで上記フィルタ処理における積和演算を行う場合、図４１のように画像データを色成分毎（Ｒ成分、Ｇ成分、Ｂ成分）に分解し、所定のフィルタ係数と対応する画素データとを乗算し、加算を行う計算式（図４０を参照）をそのままプログラムとして記述する。
【０１１１】
また、ＳＩＭＤ型プロセッサを用いる場合でも、図４２〜図４６に示すように、画像データを色成分毎に分解した後、ウィンドウ単位で画像データをＳＩＭＤの各演算スロットに割り当て、汎用プロセッサで行っていた計算と同様の処理を並列実行することで、処理の高速化を図っている。
【０１１２】
一般に画像データのフィルタ処理に用いるウィンドウサイズは、ウィンドウ中央の画素を注目画素とする関係上、「３×３」や「７×７」のような「奇数×奇数」サイズの場合が多い。これに対し、ＳＩＭＤ型プロセッサの演算スロットの数は「２のべき乗数」であるのが一般的であるため、図４２〜図４６に示すように使用されない空き演算スロットができてしまい非効率であった。
【０１１３】
そこで、本実施の形態によるフィルタ処理装置７では、ＳＩＭＤ型プロセッサにおいて図４２〜図４６に示すような空き演算スロットを作らず、全ての演算スロットを効率よく使用するとともに、３色成分毎に分解する工程を省くことでフィルタ処理を高速化している。
【０１１４】
図４７〜図５３は、本実施の形態におけるフィルタ処理の概要を説明するための図である。図４７の上段にあるＲＧＢデータとフィルタ係数は、図４１にて示したものと同じものである。
【０１１５】
まず、色成分値取得部７０１は、入力値であるＲＧＢデータをＳＩＭＤレジスタに読み込ませる（図４７参照）。３×３フィルタを例にして説明すると、注目画素の位置がＲ１１／Ｇ１１／Ｂ１１である場合、第１のデータ格納部７０２は、複数のレジスタ８０１ｒの内の１つであるレジスタＰ１に１番目のラインの先頭であるＲ００／Ｇ００／Ｂ００からレジスタ長（１６バイト）分を格納させる。以下、本実施の形態においてフィルタ処理に用いられる各レジスタ（ＳＩＭＤレジスタＰ１〜Ｐ９、ＳＩＭＤレジスタＫ１〜Ｋ９、ＳＩＭＤレジスタＳＵＭ、ＳＩＭＤレジスタＤＩＶ、）は、複数のレジスタ８０１ｒに含まれているレジスタであるものとする。
【０１１６】
第２のデータ格納部７０３は、レジスタＰ１から１画素分（３バイト）ずらしたデータをレジスタＰ２に格納させ、同様にレジスタＰ３にはレジスタＰ１から２画素分（６バイト）すらしたデータを格納させる。メモリ領域（例えば、ＭＥＭＯＲＹ８０２）からＳＩＭＤレジスタへのデータ読み込み／書き込みは、アクセス可能なデータ境界（ＳＩＭＤレジスタ長単位）の制限があるため、図５４に示すように、複数の作業用レジスタに必要な領域のデータを読み込んだ後、データ入れ替え命令等で必要なデータをレジスタにコピーし、格納させることで実現される。
【０１１７】
同様に、第２のデータ格納部７０３は、２番目のラインであるＲ０１／Ｇ０１／Ｂ０１を先頭に、レジスタＰ４に格納させ、レジスタＰ４から１画素分（３バイト）シフトさせたデータをレジスタＰ５に格納させ、レジスタＰ４から２画素分（６バイト）シフトさせたデータをレジスタＰ６に格納させる。第２のデータ格納部７０３は、３番目のラインについてもＲ０２／Ｇ０２／Ｂ０２を先頭にレジスタＰ７に格納させ、同様にレジスタＰ８、レジスタＰ９についてデータを格納させる。
【０１１８】
次にフィルタ係数についてであるが、図４７に示すように、同一の係数をＳＩＭＤレジスタのそれぞれの演算スロットに対応する位置にコピーする。この処理を、レジスタＫ１からＫ９まで、９つある係数全てについて行う。
【０１１９】
次に、ＳＩＭＤレジスタＰ１とＫ１の各演算スロットについて乗算を行い、その演算結果をＳＩＭＤレジスタＳＵＭに格納させる。このとき、並列に演算できる演算スロットの数は、扱う数値の範囲によって変わる。図中では、説明の便宜上、１つのレジスタで６つ以上計算できるように描いているが、扱う数値の範囲によっては４つであることもある。その場合は、ＳＩＭＤレジスタＰ１、Ｋ１に対して１回の乗算命令で行っていた処理が、ＳＩＭＤレジスタＰ１に相当する複数のレジスタＰ１−１、Ｐ１−２と分割して保持し、ＳＩＭＤレジスタＫ１の係数も分割したＰ１−１、Ｐ１−２に対応する形式になり、複数回の乗算命令で処理することになる。しかしながら、これは単にデータが分割処理されただけで各画素のデータに対して、同じ１つのフィルタ係数を乗算するという基本的な考えには変わりはない。このことは、後述する処理についても同様である。
【０１２０】
次に、第１の積算部７０４および第２の積算部７０５は、ＳＩＭＤレジスタＰ２とＫ２の各演算スロットについて乗算処理を行う（図４９を参照）。加算部７０６は、上記乗算処理の結果を、先に計算して得られたＳＩＭＤレジスタＳＵＭに加算し、格納させる（図４９を参照）。同様の処理を図５０〜図５２に示すように、ＳＩＭＤレジスタＰ３〜Ｐ９、Ｋ３〜Ｋ９に対しても行う。
【０１２１】
ここまでの処理で、ＳＩＭＤレジスタの各演算スロットには、ウィンドウ内の９画素と９係数を乗じた計算結果の総和が求められる。そして、ＳＩＭＤレジスタの各演算スロットでは、複数のウィンドウのデータが並列処理されることになる。この総和に対して、図５３に示すように定数の逆数を乗じれば、複数の注目画素のフィルタ処理結果が同時に得られることになる。
【０１２２】
上述のような処理を行うことにより、得られる演算結果のデータ配列が元々の画像データのデータ配列と同じになり、フィルタ処理の結果を格納する際に無駄なデータ入れ替え処理を行う必要がない。これにより、フィルタ処理の処理効率の向上および処理の高速化を図ることができる。これは、図５５に示すように、フィルタ処理における演算対象のデータを、その結果を格納するメモリ位置に相当する演算スロットに配置することで実現している。
【０１２３】
以上のように本実施の形態によれば、元々の入力データである画像データを、入力時のデータ配列のままで演算に用いることができるように、１つのフィルタ係数を複数画素に乗算、積和演算するような演算方法を採用し、データの読み込みから演算、書き込み処理における無駄なデータ入れ替え処理を省くとともに、演算スロットの使用率を高めることでフィルタ処理の高速化を実現することができる。
【０１２４】
図５６は、本実施の形態によるフィルタ処理装置における大まかな処理（フィルタ処理方法）の流れについて説明するためのフローチャートである。
【０１２５】
色成分値取得部７０１は、処理対象である画像データを構成する各画素の色成分値を取得する（色成分値取得ステップ）（Ｓ６０１）。
【０１２６】
第１のデータ格納部７０２は、色成分値取得ステップにて取得される複数色分の色成分値を、該色成分値取得ステップで取得される際の配列と同じ順序で第１のレジスタに格納させる（第１のデータ格納ステップ）（Ｓ６０２）。
【０１２７】
第２のデータ格納部７０３は、色成分値取得ステップにて取得される複数色分の色成分値を、該第１のレジスタに格納される色成分値に対して所定ビット数だけシフトさせた状態で（第１のデータ格納ステップにより第１のレジスタに格納された画像データに対して１画素の色成分数もしくは該色成分数の整数倍のビット数だけ所定方向にシフトさせた状態で）第２のレジスタに格納させる（第２のデータ格納ステップ）（Ｓ６０３）。
【０１２８】
第１の積算部７０４は、第１のレジスタに格納されている各色成分値に対して第１のフィルタ係数をＳＩＭＤ命令により積算する（第１の積算ステップ）（Ｓ６０４）。
【０１２９】
第２の積算部７０５は、第２のレジスタに格納されている各色成分値に対して第１のフィルタ係数とは異なる第２のフィルタ係数をＳＩＭＤ命令により積算する（第２の積算ステップ）（Ｓ６０５）。
【０１３０】
加算部７０６は、第１および第２の積算ステップにおける算出結果をＳＩＭＤ命令により加算する（加算ステップ）（Ｓ６０６）。
【０１３１】
上述のフィルタ処理装置での処理における各ステップは、ＭＥＭＯＲＹ８０２に格納されているフィルタ処理プログラムをＣＰＵ８０１に実行させることにより実現されるものである。
【０１３２】
本実施の形態では装置内部に発明を実施する機能が予め記録されている場合で説明をしたが、これに限らず同様の機能をネットワークから装置にダウンロードしても良いし、同様の機能を記録媒体に記憶させたものを装置にインストールしてもよい。記録媒体としては、ＣＤ−ＲＯＭ等プログラムを記憶でき、かつ装置が読み取り可能な記録媒体であれば、その形態は何れの形態であっても良い。またこのように予めインストールやダウンロードにより得る機能は装置内部のＯＳ（オペレーティング・システム）等と共働してその機能を実現させるものであってもよい。
【０１３３】
本発明を特定の態様により詳細に説明したが、本発明の精神および範囲を逸脱しないかぎり、様々な変更および改質がなされ得ることは、当業者には自明であろう。
【図面の簡単な説明】
【０１３４】
【図１】本発明の第１の実施の形態による色変換装置について説明するための機能ブロック図である。
【図２】ＲＧＢ色空間での３つの色成分を３次元の立方体を用いて表した図である。
【図３】テーブル補間法の例を示す図である。
【図４】テーブル補間法の例を示す図である。
【図５】テーブル補間法の例を示す図である。
【図６】立方格子を分割する６種類の三角錐領域について説明するための図である。
【図７】立方格子を分割する６種類の三角錐領域について説明するための図である。
【図８】立方格子を分割する６種類の三角錐領域について説明するための図である。
【図９】立方格子を分割する６種類の三角錐領域について説明するための図である。
【図１０】立方格子を分割する６種類の三角錐領域について説明するための図である。
【図１１】立方格子を分割する６種類の三角錐領域について説明するための図である。
【図１２】４点補間法による一般的な色変換処理の流れを示すフローチャートである。
【図１３】４点補間法による一般的な色変換処理の流れを示すフローチャートである。
【図１４】従来のＬＵＴのデータ構造を示す図である。
【図１５】４点補間法について説明するための図である。
【図１６】ＳＩＭＤ命令のレジスタ長単位でデータを配置するデータ構造を示す図である。
【図１７】差分値をＬＵＴに格納する例を示す図である。
【図１８】出力値の色成分数を４つ（ＣＭＹＫ）とした場合のＬＵＴ値の構造を示す図である。
【図１９】メモリ領域におけるＬＵＴ値の格納方法の詳細を示す図である。
【図２０】基準アドレスに対して、６つの多面体分のＬＵＴ値を格納した例を示す図である。
【図２１】複数の色変換値それぞれが格納されるメモリ領域の先頭アドレス間の間隔が、所定間隔となるようにした例を示す図である。
【図２２】本実施の形態による色変換装置におけるＳＩＭＤ命令を使用した色変換処理の処理の流れを示すフローチャートである。
【図２３】本実施の形態による色変換装置における色変換処理の詳細について説明するための図である。
【図２４】本実施の形態による色変換装置における色変換処理の詳細について説明するための図である。
【図２５】本実施の形態による色変換装置における色変換処理の詳細について説明するための図である。
【図２６】本実施の形態による色変換装置における色変換処理の詳細について説明するための図である。
【図２７】本実施の形態による色変換装置における色変換処理の詳細について説明するための図である。
【図２８】本実施の形態による色変換装置における色変換処理の詳細について説明するための図である。
【図２９】本実施の形態による色変換装置における色変換処理の詳細について説明するための図である。
【図３０】補間演算により得られた処理結果（色変換後の色値）を示す図である。
【図３１】本実施の形態による色変換装置における大まかな処理（色変換方法）の流れについて説明するためのフローチャートである。
【図３２】本発明の第２の実施の形態による色変換装置の構成を示す機能ブロック図である。
【図３３】本実施の形態におけるルックアップテーブルの構造を示す図である。
【図３４】本実施の形態にて用いる選択・抽出パターン（６パターン）の例を示す図である。
【図３５】選択抽出命令の概要を示す図である。
【図３６】本実施の形態による色変換装置における色変換処理の流れを示すフローチャートである。
【図３７】本発明の第３の実施の形態によるフィルタ処理装置の構成を示す機能ブロック図である。
【図３８】一般的な２次元空間フィルタ処理について説明するための図である。
【図３９】一般的な２次元空間フィルタ処理について説明するための図である。
【図４０】一般的な２次元空間フィルタ処理について説明するための図である。
【図４１】汎用プロセッサによる空間フィルタ処理の一例を示す図である。
【図４２】ＳＩＭＤプロセッサによる空間フィルタ処理の一例を示す図である。
【図４３】ＳＩＭＤプロセッサによる空間フィルタ処理の一例を示す図である。
【図４４】ＳＩＭＤプロセッサによる空間フィルタ処理の一例を示す図である。
【図４５】ＳＩＭＤプロセッサによる空間フィルタ処理の一例を示す図である。
【図４６】ＳＩＭＤプロセッサによる空間フィルタ処理の一例を示す図である。
【図４７】本実施の形態におけるフィルタ処理の概要を説明するための図である。
【図４８】本実施の形態におけるフィルタ処理の概要を説明するための図である。
【図４９】本実施の形態におけるフィルタ処理の概要を説明するための図である。
【図５０】本実施の形態におけるフィルタ処理の概要を説明するための図である。
【図５１】本実施の形態におけるフィルタ処理の概要を説明するための図である。
【図５２】本実施の形態におけるフィルタ処理の概要を説明するための図である。
【図５３】本実施の形態におけるフィルタ処理の概要を説明するための図である。
【図５４】データ入れ替え命令によりデータをレジスタにコピーする処理を示す図である。
【図５５】演算対象のデータを、その結果を格納するメモリ位置に相当する演算スロットに配置する様子を示す図である。
【図５６】本実施の形態によるフィルタ処理装置における大まかな処理（フィルタ処理方法）の流れについて説明するためのフローチャートである。
【符号の説明】
【０１３５】
１  色変換装置、１０１  色値取得部、１０２  格子判別部、１０３  多面体判別部、１０４  補間演算部、１０４’  補間演算部、１０５  インデックス値取得部、１０６  色変換値取得部、７  フィルタ処理装置、７０１  色成分値取得部、７０２  第１のデータ格納部、７０３  第２のデータ格納部、７０４  第１の積算部、７０５  第２の積算部、７０６  加算部、８０１  ＣＰＵ、８０２  ＭＥＭＯＲＹ。
【図１】
2008259178.tif 000003
【図２】
2008259178.tif 000004
【図３】
2008259178.tif 000005
【図４】
2008259178.tif 000006
【図５】
2008259178.tif 000007
【図６】
2008259178.tif 000008
【図７】
2008259178.tif 000009
【図８】
2008259178.tif 000010
【図９】
2008259178.tif 000011
【図１０】
2008259178.tif 000012
【図１１】
2008259178.tif 000013
【図１２】
2008259178.tif 000014
【図１３】
2008259178.tif 000015
【図１４】
2008259178.tif 000016
【図１５】
2008259178.tif 000017
【図１６】
2008259178.tif 000018
【図１７】
2008259178.tif 000019
【図１８】
2008259178.tif 000020
【図１９】
2008259178.tif 000021
【図２０】
2008259178.tif 000022
【図２１】
2008259178.tif 000023
【図２２】
2008259178.tif 000024
【図２３】
2008259178.tif 000025
【図２４】
2008259178.tif 000026
【図２５】
2008259178.tif 000027
【図２６】
2008259178.tif 000028
【図２７】
2008259178.tif 000029
【図２８】
2008259178.tif 000030
【図２９】
2008259178.tif 000031
【図３０】
2008259178.tif 000032
【図３１】
2008259178.tif 000033
【図３２】
2008259178.tif 000034
【図３３】
2008259178.tif 000035
【図３４】
2008259178.tif 000036
【図３５】
2008259178.tif 000037
【図３６】
2008259178.tif 000038
【図３７】
2008259178.tif 000039
【図３８】
2008259178.tif 000040
【図３９】
2008259178.tif 000041
【図４０】
2008259178.tif 000042
【図４１】
2008259178.tif 000043
【図４２】
2008259178.tif 000044
【図４３】
2008259178.tif 000045
【図４４】
2008259178.tif 000046
【図４５】
2008259178.tif 000047
【図４６】
2008259178.tif 000048
【図４７】
2008259178.tif 000049
【図４８】
2008259178.tif 000050
【図４９】
2008259178.tif 000051
【図５０】
2008259178.tif 000052
【図５１】
2008259178.tif 000053
【図５２】
2008259178.tif 000054
【図５３】
2008259178.tif 000055
【図５４】
2008259178.tif 000056
【図５５】
2008259178.tif 000057
【図５６】
2008259178.tif 000058