JP4975651B2 - 色変換装置 - Google Patents

色変換装置 Download PDF

Info

Publication number
JP4975651B2
JP4975651B2 JP2008010285A JP2008010285A JP4975651B2 JP 4975651 B2 JP4975651 B2 JP 4975651B2 JP 2008010285 A JP2008010285 A JP 2008010285A JP 2008010285 A JP2008010285 A JP 2008010285A JP 4975651 B2 JP4975651 B2 JP 4975651B2
Authority
JP
Japan
Prior art keywords
color
color conversion
value
polyhedron
unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2008010285A
Other languages
English (en)
Other versions
JP2008259178A (ja
JP2008259178A5 (ja
Inventor
隆裕 萩原
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Toshiba TEC Corp
Original Assignee
Toshiba Corp
Toshiba TEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp, Toshiba TEC Corp filed Critical Toshiba Corp
Publication of JP2008259178A publication Critical patent/JP2008259178A/ja
Publication of JP2008259178A5 publication Critical patent/JP2008259178A5/ja
Application granted granted Critical
Publication of JP4975651B2 publication Critical patent/JP4975651B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/46Colour picture communication systems
    • H04N1/56Processing of colour picture signals
    • H04N1/60Colour correction or control
    • H04N1/6016Conversion to subtractive colour signals
    • H04N1/6019Conversion to subtractive colour signals using look-up tables

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Image Processing (AREA)
  • Facsimile Image Signal Circuits (AREA)
  • Color Image Communication Systems (AREA)

Description

本発明は、SIMD(Single Instruction Multiple Data)命令を実行可能なプロセッサを用いた画像処理に関し、特に当該画像処理を行う場合における処理効率の向上に関するものである。
色変換処理を行う際、その処理内容が数式で表現できない場合や数式化できるとしても式が複雑過ぎるような場合、その入出力関係をLUT(Look Up Table)で対応づける方法がある。
一般に、画像処理における入力値は「R」、「G」および「B」で表される3変数であり、階調数はそれぞれ8bit(256値)で表現されることが多い。このような入力値がとり得る全ての値に対して処理後の出力値をデータテーブルで保持しようとすると、そのデータ容量は膨大なサイズになってしまう。
このため、色変化の連続性を前提に出力色空間の補間処理を組み合わせることでテーブル容量を減らすテーブル補間法が使われている。テーブル補間法とは、任意の入力値に対応する出力値の近傍数点を用いて3次元補間計算を行い、出力値を得る方法である。このテーブル補間法としては、使用する近傍点の数に応じて「8点補間法」、「4点補間法」、「6点補間法」等が知られる。
近年、高速に画像データを入出力し画像処理を行うマルチメディア機器が開発されており、このようなマルチメディア機器における色変換処理を実現するためには高速な処理能力が求められる。近年、色変換処理等のマルチメディア処理を高速に実行できるようにするため、汎用プロセッサには、SIMD(Single Instruction Multiple Data)命令と呼ばれる整数演算や浮動小数点演算等を並列に実行できる命令が搭載されてきている。しかしながら、SIMD命令が得意とするのは、複数の演算処理を1回の命令で並列に実行させることであり、メモリ領域に格納されているLUTデータの複数のデータを同時に参照するような、メモリのランダムアクセス処理を並列に実行することはできない。
例えば8点補間法による補間処理を行う場合には、入力値の各色成分について8点分の色変換値をLUTから読み出す必要があり、通常8×3=24回のメモリRead処理が必要となる。そのため、SIMD処理により補間処理等の演算処理は高速化できても、LUT参照時のメモリアクセス処理が高速化できないため、色変換処理の全体としての処理時間は、SIMD処理を用いているにも拘わらず、十分に高速化できていなかった。
本発明は上述した問題点を解決するためになされたものであり、SIMD命令を実行可能なプロセッサを用いた画像処理を行う場合における処理効率の向上に寄与することのできる技術を提供することを目的とする。
上述した課題を解決するため、本発明の一態様に係る色変換装置は、3種類の色成分で表現される第1の色空間を複数の立方格子に分割する複数の格子点それぞれに対応付けられる色変換値を格納する3次元ルックアップテーブルに基づいて、前記第1の色空間に属する点の色値を、第2の色空間に属する点の色値に変換する色変換装置であって、色変換の対象となる前記第1の色空間に属する点の色値を取得する色値取得部と、前記色値取得部にて取得される色値に基づいて、色変換の対象となる点が属する第1の色空間上の立方格子を判別する格子判別部と、前記色値取得部にて取得される色値と、前記格子判別部にて判別された立方格子に含まれる格子点の色値との比較を行うことにより、前記色変換の対象となる点が、前記格子判別部にて判別された立方格子に含まれる複数の格子点を頂点とする平面により該立方格子を分割して得られる複数の多面体の内のいずれに属するかを判別する多面体判別部と、前記多面体判別部にて判別された多面体を構成する格子点に対応付けられている色変換値に基づいて、前記第1の色空間に属する点の色値に対応する第2の色空間に属する点の色値を補間する補間演算部とを備えてなることを特徴とするものである。
また、本発明の一態様に係るフィルタ処理装置は、画像データに対して空間フィルタ処理を行うフィルタ処理装置であって、処理対象である画像データを構成する各画素の色成分値を取得する色成分値取得部と、前記色成分値取得部にて取得される色成分値を、該色成分値取得部で取得される際の配列と同じ順序で第1のレジスタに格納させる第1のデータ格納部と、前記色成分値取得部にて取得される色成分値を、該第1のレジスタに格納される色成分値に対して所定ビット数だけシフトさせた状態で第2のレジスタに格納させる第2のデータ格納部と、前記第1のレジスタに格納されている各色成分値に対して第1のフィルタ係数をSIMD命令により積算する第1の積算部と、前記第2のレジスタに格納されている各色成分値に対して前記第1のフィルタ係数とは異なる第2のフィルタ係数をSIMD命令により積算する第2の積算部と、前記第1および第2の積算部における算出結果をSIMD命令により加算する加算部とを備えてなることを特徴とするものである。
また、本発明の一態様に係るフィルタ処理方法は、画像データに対して空間フィルタ処理を行うフィルタ処理方法であって、処理対象である画像データを構成する各画素の色成分値を取得する色成分値取得ステップと、前記色成分値取得ステップにて取得される色成分値を、該色成分値取得ステップで取得される際の配列と同じ順序で第1のレジスタに格納させる第1のデータ格納ステップと、前記色成分値取得ステップにて取得される色成分値を、該第1のレジスタに格納される色成分値に対して所定ビット数だけシフトさせた状態で第2のレジスタに格納させる第2のデータ格納ステップと、前記第1のレジスタに格納されている各色成分値に対して第1のフィルタ係数をSIMD命令により積算する第1の積算ステップと、前記第2のレジスタに格納されている各色成分値に対して前記第1のフィルタ係数とは異なる第2のフィルタ係数をSIMD命令により積算する第2の積算ステップと、前記第1および第2の積算ステップにおける算出結果をSIMD命令により加算する加算ステップとを有することを特徴とするものである。
また、本発明の一態様に係るフィルタ処理プログラムは、画像データに対して空間フィルタ処理を行うフィルタ処理方法をコンピュータに実行させるフィルタ処理プログラムであって、処理対象である画像データを構成する各画素の色成分値を取得する色成分値取得ステップと、前記色成分値取得ステップにて取得される色成分値を、該色成分値取得ステップで取得される際の配列と同じ順序で第1のレジスタに格納させる第1のデータ格納ステップと、前記色成分値取得ステップにて取得される色成分値を、該第1のレジスタに格納される色成分値に対して所定ビット数だけシフトさせた状態で第2のレジスタに格納させる第2のデータ格納ステップと、前記第1のレジスタに格納されている各色成分値に対して第1のフィルタ係数をSIMD命令により積算する第1の積算ステップと、前記第2のレジスタに格納されている各色成分値に対して前記第1のフィルタ係数とは異なる第2のフィルタ係数をSIMD命令により積算する第2の積算ステップと、前記第1および第2の積算ステップにおける算出結果をSIMD命令により加算する加算ステップとをコンピュータに実行させることを特徴とするものである。
以上に詳述したように本発明によれば、SIMD命令を実行可能なプロセッサを用いた画像処理を行う場合における処理効率の向上に寄与することのできる技術を提供することができる。
以下、本発明の実施の形態について図面を参照しつつ説明する。
(第1の実施の形態)
図1は、本発明の第1の実施の形態による色変換装置について説明するための機能ブロック図である。
本実施の形態による色変換装置1は、色値取得部101、格子判別部102、多面体判別部103、補間演算部104、CPU801およびMEMORY802を備えてなる構成となっている。
本実施の形態による色変換装置1は、上述のような構成により、3種類の色成分で表現される第1の色空間を複数の立方格子に分割する複数の格子点それぞれに対応付けられる色変換値を格納する3次元ルックアップテーブルに基づいて、第1の色空間に属する点の色値を、第1の色空間とは異なる色表現を行う第2の色空間に属する点の色値に変換する機能を有している。
ここでの第1および第2の色空間としては、例えば、RGB色空間、CMY色空間、CMYK色空間、Lab色空間、Luv色空間、Adobe(登録商標)RGB色空間およびsRGB色空間などが挙げられる。以下、本実施の形態では、第1の色空間がRGB色空間であり、第2の色空間がCMY色空間である場合を例に挙げて説明する。
まず、本実施の形態による色変換装置の大まかな構成について説明する。
色値取得部101は、色変換の対象となるRGB色空間に属する点(RGB色空間で表現される色)の色値(RED値、GREEN値およびBLUE値)を入力値として取得する。
格子判別部102は、色値取得部101にて取得される色値に基づいて、色変換の対象となる点が属するRGB色空間上の立方格子を判別する。
多面体判別部103は、条件分岐命令を用いることなく、色値取得部101にて取得される色値と、格子判別部102にて判別された立方格子に含まれる格子点の色値とをSIMD命令における比較演算命令によって比較することにより、色変換の対象となる点が、格子判別部102にて判別された立方格子に含まれる複数の格子点を頂点とする平面により該立方格子を分割して得られる複数の多面体の内のいずれに属するかを判別する。
具体的に、多面体判別部103は、上記比較演算の結果に基づいて、格子判別部102にて判別された立方格子に含まれる複数の格子点を頂点とする平面により該立方格子を分割して得られる複数の多面体の内の色変換の対象となる点が属する多面体を示す「多面体識別番号」をSIMD命令における選択演算命令によって取得する。
補間演算部104は、条件分岐命令を用いることなく、多面体判別部103にて判別された多面体を構成する格子点に対応付けられている色変換値をSIMD命令における選択命令によって取得し、当該取得される色変換値に基づいて、第1の色空間に属する点の色値に対応する第2の色空間に属する点の色値(出力値)を補間する。
具体的に、補間演算部104は、多面体判別部103にて取得される「多面体識別番号」に基づいて、該多面体識別番号に対応する多面体に対応づけられている色変換値の格納アドレスを演算で取得し、MEMORY802(所定のメモリ領域)における該格納アドレスに格納されている色変換値を取得する。なお、ここでの「多面体識別番号」は、3次元ルックアップテーブルを構成する基本単位サイズの倍数に設定されている。
CPU801は、色変換装置における各種処理を行う役割を有しており、またMEMORY802に格納されているプログラムを実行することにより種々の機能を実現する役割も有している。また、CPU801は、SIMD命令の実行が可能なプロセッサであり、SIMD命令等を実行する際に用いる複数のレジスタ801rを備えている。
MEMORY802は、例えばROMやRAM等から構成されており、色変換装置において利用される種々の情報やプログラムを格納する役割を有している。また、MEMORY802には、3次元ルックアップテーブルの色変換値が格納されている。ここでの3次元ルックアップテーブルのデータは、SIMD命令に用いるレジスタ801rのレジスタ長(ここでは16ビット)単位で配列して、MEMORY802に格納されている。
続いて、本実施の形態による色変換装置の動作の詳細について説明する。
まず、テーブル補間法を使った一般的な色変換処理について簡単に説明する。図2は、RGB色空間での3つの色成分を3次元の立方体を用いて表したものである。ここでは、LUTの各軸がR値、G値およびB値のそれぞれに対応しており、各軸の値は8分割(9個の格子点により分割)されている。なお、各色成分値の大小を表す各軸は、この他に16分割(17個の格子点により分割)や32(33個の格子点により分割)分割等することも可能である。このように、複数の格子点によって第1の色空間を分割することにより、仮想的に複数の立方格子領域(図2では8×8×8個)によって第1の色空間が構成されていると捉えることができる。
図3〜図5は、テーブル補間法の例を示す図である。テーブル補間法には、立方格子の全ての頂点を構成する8個の格子点に対応付けられている色変換値を用いる「8点補間法」(図3を参照)、立方格子の領域を2つの三角柱領域に分割し、各三角柱領域の頂点を構成する6個の格子点に対応付けられている色変換値を用いる「6点補間法」(図4を参照)や、立方格子の領域を6つの三角錐領域に分割し、各三角錐領域の頂点を構成する4個の格子点に対応付けられている色変換値を用いる「4点補間法」(図5を参照)等がある。以下、本実施の形態では、「4点補間法」を用いたテーブル補間を行う例を挙げて説明する。
まず、入力値であるR値、G値およびB値のそれぞれを、上位3bitと下位5bitに分ける。そして、格子判別部102は、上位3bitの値を用いて、対象となる色変換値と当該色変換値に近接するメモリアドレスに格納されている色変換値とを、出力値の色空間の色成分数に応じてMEMORY802に格納されている3次元LUTから読み出す。
本実施の形態では、出力値の色空間(第2の色空間)がCMY色空間であるため、CMY色空間の色成分であるC値用の変換用LUT、M値用の変換用LUTおよびY値用の変換用LUTの3つがMEMORY802に格納されている。もちろん、出力値の色空間がCMYK色空間のように色成分数が4種類であるような場合には、変換用LUTも4種類用意し、出力値の色空間がCMYRGBK色空間のように色成分数が7種類であるような場合には変換用LUTを7種類用意することになる。
次に、多面体判別部103は、入力値であるR値、G値およびB値のそれぞれの下位5bitの値を用いて、図6〜図11に示すような6種類の三角錐領域(多面体)の内いずれの領域に入力値の色が属するかを判別し、MEMORY802に格納されている4種類の変換用LUTそれぞれから4つの格子点分の色変換値を読み出す。
そして、補間演算部104は、上述のようにして読み出された4つの格子点に対応する色変換値に基づいて、式(1)に示すような補正式により出力値(色変換処理後の値)を求める。

(D)=(P0)+W1((P1)-(P0))+W2((P2)-(P0))+W3((P3)-(P0)) ・・・ (1)
図12および図13は、上述の4点補間法による一般的な色変換処理の処理の流れを示すフローチャートである。まず、入力値であるR値、G値およびB値を取得し(S101)、それぞれの色成分値を上位3bitと下位5bitに分ける(S102)。続いて、上記色成分値の上位3bitの値に基づいて、当該入力値が属するRGB色空間上での立方格子を特定し、該立方格子の8つの頂点の参照アドレスを計算する(S103)。
次に、上記色成分値の下位5bitの値に基づいて、上述のようにして特定された立方格子に含まれる6種類の三角錐領域の内いずれに入力値が属するかを判別し(S104、S106、S108、S110、S112)、入力値が属する三角錐領域を構成する4つの格子点に対応する色変換値の参照アドレスを決定する。例えば、入力値が図6に示す「パターン1」の三角錐領域内に存在する場合、図6に示す格子点P0,P1,P5,P7に対応する出力値CMYの各色について図14に示すLUTからその格子点の値がメモリアドレスに基づいて読み出される。図14に示す従来のLUTでは、格子点に対応する色変換値が、格子点の座標を示す座標軸を基準として配列されている。
上述のようにしてMEMORY802から読み出された4つの格子点(P0,P1,P5,P7)に対応するLUT値と、MEMORY802に格納されている重み係数3つ(W1,W2,W3)に基づいて、補間式である式(1)を用いて出力値Dを求める(S105、S107、S109、S111、S113、S114、)(図15を参照)。この処理は変換用LUTの色成分数(ここでは、CMYの3種類)分について実行する。そして、この処理を対象となる画像データの画素数分に対して繰り返し(S115)、色変換処理は終了する。
次に、本実施の形態による色変換装置1におけるSIMD命令の実行と、SIMD命令に適したLUT構造について説明する。
上記の一般的な色変換処理の例(図12〜図14を参照)では、1つの変換用LUTに対して4つの格子点数分の少なくとも4回のメモリ参照と、これに伴う参照アドレスの計算処理および三角錐領域の判別のための分岐処理が発生する。参照アドレスの計算を減らす方法として、立方格子の全ての頂点の格子点を順番に並べる方法が発案されているが、8点補間法のように立方体の全ての格子点を参照する場合は良いが、4点補間法のように立方格子をさらに領域分割する場合、参照領域を決定するためのアドレス計算が必要であり、この方法は適さない。また、メモリ参照回数についても、8つの格子点のデータ中から選択領域に応じて4格子点を選択しなければならないため、メモリ領域へのランダムアクセスが発生し、メモリ参照数を低減させることができない。
以下、本実施の形態において採用している、SIMD命令を用いた処理に適したLUT構造について詳細に説明する。
一般に、SIMD命令を用いたMEMORY802へのアクセスは、SIMD命令で使用するレジスタ801rのレジスタ長が16ビットである場合、16の倍数アドレスに配置される必要がある。このため、本実施の形態におけるLUTでは、図16のように、SIMD命令のレジスタ長単位でデータを配置するデータ構造となっている。
レジスタ801rのレジスタ長単位でLUTデータをMEMORY802に格納していない場合、メモリから読み出したデータを適切な位置に移動する必要が生ずる。また、MEMORY802から必要なデータを1回のメモリアクセスで取得できず(8個のデータが必要であっても、6個しか有効データが無い場合、続くデータをMEMORY802から読み出し、残りの有効データ2個を取得しなければならない。)。
これに対し、本実施の形態のように、レジスタ801rのレジスタ長単位でデータをメモリに格納しておくことにより、必要なデータがメモリ領域における適切な位置(例えば、演算スロット0は三角錐0など)にあるので、メモリ領域から読み出したデータをそのまま利用することができる。
また、本実施の形態では、MEMORY802の参照回数を減らすため、最小限のメモリアクセスで補間計算に必要なLUTの色変換値を全て参照できる構造としている。ここでは、図16に示すLUTに格納されている色変換値が、色変換処理後の出力値そのものである例を示しているが、これに限られるものではなく、式(1)で計算する出力値の差分値を予め計算しておき図17のように格納して使用しても良い。また、図16の出力値の色成分数が3つ(CMY)となっているが、例えば第2の色空間がCMYK色空間である場合には、図18に示すように出力値の色成分数は4つ(CMYK)となる。
具体的に、3次元ルックアップテーブルにおける6種類の多面体に含まれる複数の格子点(例えば、パターン1の三角錐領域については、P0,P1,P5,P7)それぞれに対応付けられている複数の色変換値は、それぞれの格納アドレスが互いに隣接するようにMEMORY802に格納されている(図19を参照)。また、図20に示すように、ある基準アドレス(P0)に対して、6つの多面体(6パターン)分のLUT値(色変換値)を格納するようにしてもよい。
これにより、ある多面体に含まれる複数の格子点に対応付けられた色変換値を、一度のメモリアクセスで取得することが可能となり、頻繁なメモリアクセスによる処理の遅延の発生を回避することができる。
また、上記立方格子を分割して得られる複数の多面体それぞれに対応付けられている複数の色変換値は、該複数の色変換値それぞれが格納されるMEMORY802の先頭アドレス間の間隔が、所定間隔となるように(先に計算された参照アドレス(P0)の近傍に)格納されていてもよい(図21を参照)。
複数の多面体それぞれの色変換値を所定間隔でメモリ領域に格納させることにより、ある立方格子を分割して得られる複数の多面体の内いずれか1つの多面体の格納アドレスが分かれば、他の5種類の多面体を構成する格子点の色変換値は当該格納アドレスに所定のシフト値を加えるだけで取得することができる。このように、アドレス計算をシフト値の加算のみで行うことにより、アドレス計算にかかるコストをゼロにすることができる。
多くのプロセッサではキャッシュメモリを備えているため、メモリ領域へのデータ配列方法によって演算能力に影響を与える場合があるため、使用する画像データの特性に応じて図19および図21に示すデータ配列の内いずれか最適な方を採用することが好ましい。
次に、上述のようなデータ構造であるLUTをMEMORY802にて参照するためのアドレス計算、三角錐領域の判別処理、および判別された三角錐領域に対応するLUT値を用いた補間演算について、SIMD命令を用いて処理の高速化を実現する方法について説明する。
図22は、本実施の形態による色変換装置におけるSIMD命令を使用した色変換処理の処理の流れを示すフローチャートである。図12および図13で示した処理との違いは、SIMD命令使用によるアドレス計算と、補間計算処理とを複数の画素に対して並列に実行することと、入力色が属する三角錐領域を判別する際に条件分岐命令を使用しない点にある。
一般にSIMD命令を用いた演算では、並行して処理することのできるデータ数に比例して処理が高速化されるため、4並列であれば最大4倍の高速化を図ることができる。近年の最新プロセッサの動作クロック数が頭打ちになっていることを考えると4倍という数値は非常に効果が大きいと言える。
また、本実施の形態による色変換装置では、条件分岐命令を用いないため、高速化の効果も相当に大きい。近年の高速プロセッサは、高クロック化のためパイプライン段数が深く20段を超えるものも存在する。そのため分岐予測等の技術を使い極力分岐ミスを起こさないようにしているが、分岐予測を誤ることがある。この分岐予測が外れると、それまで先読みで行っていたパイプライン中にある処理結果は破棄され、分岐先の命令を始めから実行することになり、最終的な処理結果が得られるまでに相当な遅延時間が必要となる。
この遅延時間は、パイプライン段数が深い程ペナルティは大きくなり安定した高速化が保証できなくなる。つまり、条件分岐が無くなることで分岐ミスによるパイプラインストールが無くなり安定した高速化が約束できることになり、場合によっては2〜3倍の高速化に相当することもある。
以下、本実施の形態による色変換装置における色変換処理の詳細について、図23〜図29を参照して説明する。まず、色値取得部101は、図23のようにSIMD命令を使って色変換の対象となる画像データ(入力値)をSIMDレジスタ801rにロードする(S201)。このとき、1画素は3バイトなので16画素分48バイトを3つのSIMDレジスタにロードする。
次に、図24のようにSIMD命令を用いてデータの入れ替えを行い、R成分、G成分およびB成分の3種類に分けてレジスタに格納する(S203)。
続いて、図25のように、SIMD命令を用いてR成分、G成分およびB成分それぞれに定数を乗じて総和を求めLUTの先頭を加えて参照アドレスを求める(S204)。図25では、説明の便宜上、B成分の演算内容しか記載していないが、R成分およびG成分についても同様に積和演算を行い、下記式(2)により参照アドレスを得る。

参照アドレス
= LUT_addr + B*6*16 + G*6*9*16 + R*6*81*16 … (2)
なお、図23〜図25中に記載しているR、G、B成分の値はLUT参照アドレスを求めるための上位bitの値(9×9×9分割の場合上位3bitで範囲は0〜8の値)である。
次に、図26および図27に示す処理では、入力色が、4点補間法における6つの三角錐領域のいずれに属するかを判別する(S205)。図26および図27中に記載しているR成分、G成分およびB成分の値は下位5bitの値(9×9×9分割の場合下位5bitで範囲は0〜31の値)である。従来の色変換処理では、if文等の条件分岐命令を用いて三角錐領域の判別を実現していたが、本実施の形態では、SIMD命令における比較演算命令と選択演算命令によって実現している。ここでは、図26に示す処理が比較命令により実行され、図27に示す処理が選択命令によって実行される。
この三角錐領域の判別処理の詳細は、図28のフローチャートに示す。同図に示すように、S301〜S303の処理で比較演算を行い、S304〜S308の処理で選択演算を行っていることがわかる。
比較命令では、比較結果により値は「0」もしくは「−1」になり、選択命令では、値が「0」の時はレジスタ1、「−1」の時はレジスタ2から値を取得する。この時、選択対象となるSIMDレジスタの値は、領域に相当するオフセット値(「多面体識別番号」に相当し、図19に示す例では16の倍数となっている。)である。
この値を、図29に示すように、算出されたLUT参照アドレス(P0)に加算することで、必要な色変換値(係数など)が格納されたアドレス値となる。次に、このアドレスでLUTデータを読み出し(S205)、SIMD命令による補間計算を行う(S206)。
ここでの補間計算式の処理内容は、式(1)に示すような積和演算なので、図25の処理に似た処理を行うことになる。
最後に、補間演算により得られた処理結果(色変換後の色値)を図30に示すように並び替え、MEMORY802に格納することで(S207、S208)、16画素分の色変換処理が終わり、同様な処理を対象となる画像データ全体に対して行うことで色変換処理が完了する(S209)。
図31は、本実施の形態による色変換装置における大まかな処理(色変換方法)の流れについて説明するためのフローチャートである。
色値取得部101は、色変換の対象となる第1の色空間に属する点の色値を取得する(色値取得ステップ)(S401)。
格子判別部102は、色値取得ステップにて取得される色値に基づいて、色変換の対象となる点が属する第1の色空間上の立方格子を判別する(格子判別ステップ)(S402)。
多面体判別部103は、多面体判別ステップは、色値取得ステップにて取得される色値と、格子判別ステップにて判別された立方格子に含まれる格子点の色値とをSIMD命令における比較演算命令によって比較することにより、色変換の対象となる点が、格子判別ステップにて判別された立方格子に含まれる複数の格子点を頂点とする平面により該立方格子を分割して得られる複数の多面体の内のいずれに属するかを判別する(多面体判別ステップ)(S403)。
具体的に、多面体判別ステップでは、条件分岐命令を用いることなく、色値取得ステップにて取得される色値と、格子判別ステップにて判別された立方格子に含まれる格子点の色値とをSIMD命令における比較演算命令によって比較し、該比較演算の結果に基づいて、格子判別ステップにて判別された立方格子に含まれる複数の格子点を頂点とする平面により該立方格子を分割して得られる複数の多面体の内の色変換の対象となる点が属する多面体を示す多面体識別番号(例えば、3次元ルックアップテーブルを構成する基本単位サイズの倍数)をSIMD命令における選択演算命令によって取得する。
補間演算部104は、多面体判別ステップにて判別された多面体を構成する格子点に対応付けられている色変換値をSIMD命令における選択命令によって取得し、当該色変換値に基づいて、第1の色空間に属する点の色値に対応する第2の色空間に属する点の色値を補間する(補間演算ステップ)(S404)。
補間演算ステップでは、多面体判別ステップにて取得される多面体識別番号に基づいて、該多面体識別番号に対応する多面体に対応づけられている色変換値の格納アドレスを演算で取得し、所定のメモリ領域における該格納アドレスに格納されている色変換値を取得する。
このように、if文等の条件分岐命令の代わりに、比較演算命令を用いた多面体の判別および選択命令を用いた多面体を構成する格子点に対応する色変換値の取得(上記処理において、SIMD命令における比較演算命令および選択命令を併用することで、いわゆる算術分岐が実現される。)を行うことにより、分岐予測が外れた場合における処理結果の廃棄によるパイプラインストールの発生を回避することができ、SIMD命令を用いた処理の高速化を実現することができる。
また、より少ない格子点数に基づく補間演算を行うことにより、例えば立方格子の頂点を構成する全ての格子点を用いる8点補間に比べて、補間演算におけるCPUへの処理負荷を低減させることができる。
(第2の実施の形態)
続いて、本発明の第2の実施の形態について説明する。
本実施の形態は、上述の第1の実施の形態の変形例であり、第1の実施の形態とは、主に補間演算部の構成が異なっている。以下、すでに第1の実施の形態において説明した部分と同様な機能を有する部分については同一符号を付し、説明を割愛する。
図32は、本発明の第2の実施の形態による色変換装置の構成を示す機能ブロック図である。
本実施の形態による色変換装置1’は、色値取得部101、格子判別部102、多面体判別部103、補間演算部104’、CPU801およびMEMORY802を備えてなる構成となっている。本実施の形態における補間演算部104’は、インデックス値取得部105および色変換値取得部106を備えている。
インデックス値取得部105は、多面体判別部103にて判別された多面体を構成する格子点を示すインデックス値を取得する。
色変換値取得部106は、インデックス値取得部105にて取得されるインデックス値に基づいて、多面体を構成する複数の格子点それぞれに対応付けられている色変換値をシャッフル命令によって取得する(レジスタに割り付ける)。
上述の第1の実施の形態は、ルックアップテーブルのデータサイズが比較的小さい場合には適しているが、ルックアップテーブルが「33×33×33」のように大きいときにはメモリを大量に必要とする欠点がある。そこで、本実施の形態では、メモリ使用量を削減できる方法について説明する。
具体的に、本実施の形態の第1の実施の形態との違いは、ルックアップテーブルの構造が図33のようにP0を頂点とする補間計算に関係する8点(各CMYKについて)と、上記実施の形態の6パターンを生成することが可能となる図34のような選択・抽出パターン(6パターン)とを組み合わせることでメモリ使用量を削減する点にある。
この選択・抽出パターン(6パターン)を使い、選択・抽出命令とルックアップテーブルとを組み合わせることで、上記実施の形態で使用していた補間計算に必要なLUT値を得ることができる。図35は、選択抽出命令の概要を示す図である。
選択・抽出命令は、インデックス値取得部105により取得される選択・抽出パターン値をインデックス値として、色変換値取得部106によってLUT値が格納されたレジスタから値を抽出する(いわゆる、シャッフル命令と呼ばれているものである。)。
この工程を、上述の第1の実施の形態の補間計算フロー(図22を参照)の一部に加えることで、データサイズが大きいルックアップテーブルを用いる場合でも、高速な補間計算が可能となる。
図36は、本実施の形態による色変換装置における色変換処理の流れを示すフローチャートである。図36において、太枠で囲まれたステップ(S504〜S506)が、第1の実施の形態における図22の処理と異なるステップである。
SIMD命令によるレジスタでのデータの入れ替え(S203)を行った後、各RGB値の上位3bitを用い、LUTにおける立方格子の基準点である「P0」のMEMORY802における参照アドレスをSIMD命令により計算し、8点分のLUT値を読み込む(S504)。
インデックス値取得部105は、各RGB値の下位5bitを用い、LUTにおける立方格子内にある6種類の三角錐領域の内いずれの領域に入力色が属するかをSIMD命令による比較演算命令および選択命令により判別し(多面体判別ステップ)、オフセット値を得る。インデックス値取得部105は、このオフセット値から、多面体判別ステップにて判別された三角錐領域を構成する格子点を示すインデックス値を取得する(インデックス値取得ステップ)(S505)。
色変換値取得部106は、インデックス値取得ステップにて取得されるインデックス値に基づいて、三角錐領域を構成する複数の格子点それぞれに対応付けられている色変換値を取得する(色変換値取得ステップ)(S506)。色変換値取得ステップは、インデックス値取得ステップにて取得されるインデックス値に基づいて、多面体を構成する複数の格子点それぞれに対応付けられている色変換値をシャッフル命令によってレジスタに割り付ける。
このような構成とすることにより、色変換処理の補間精度を向上させるためにデータサイズが大きいルックアップテーブル(例えば、33×33×33)を用いる場合でも、少ないメモリ使用量で色変換処理を実現することができる。
従来の色変換処理方法はLUT参照回数が多くSIMD命令でアドレス計算、補間処理の演算処理部分を並列実行し高速化するだけでは十分な処理速度を得られなかったが、上述の第1および第2の実施の形態では、LUTの構造を見直し最小限のメモリ参照回数で補間処理に必要なLUT値を取得できるようにし、かつ領域決定処理において条件分岐命令を使用しない方法を組み合わせることで非常に高速な色変換処理が実現できる。
また、上述の各実施の形態では、説明の便宜上、色変換処理の対象となる入力値(入力色空間)が3次元であり、出力値(出力色空間)の次元は問わない構成としているが、これに限られるものではなく、例えば1次元、2次元および4次元以上の色空間で表現される色を色変換処理の対象(入力色)とすることも可能である。
なお、上述の色変換装置での処理における各ステップは、MEMORY802に格納されている色変換プログラムをCPU801に実行させることにより実現されるものである。
(第3の実施の形態)
続いて、本発明の第3の実施の形態について説明する。
本実施の形態によるフィルタ処理装置は、入力データである画像データに対して所定の空間フィルタ処理を行う機能を有している。
図37は、本発明の第3の実施の形態によるフィルタ処理装置の構成を示す機能ブロック図である。
本実施の形態によるフィルタ処理装置7は、色成分値取得部701、第1のデータ格納部702、第2のデータ格納部703、第1の積算部704、第2の積算部705、加算部706、CPU801およびMEMORY802を備えてなる構成となっている。
色成分値取得部701は、処理対象である画像データを構成する各画素の色成分値を取得する。
第1のデータ格納部702は、色成分値取得部にて取得される複数色分の色成分値を、該色成分値取得部で取得される際のデータ配列と同じ順序のデータ配列のままで第1のレジスタに格納させる。
第2のデータ格納部703は、色成分値取得部にて取得される複数色分の色成分値を、該第1のレジスタに格納される色成分値に対して所定ビット数だけシフトさせた状態で第2のレジスタに格納させる。具体的に、第2のデータ格納部703は、第1のデータ格納部702により第1のレジスタに格納された画像データに対して1画素の色成分数もしくは該色成分数の整数倍のビット数だけ所定方向にシフトさせた該画像データを、第2のレジスタに格納させる。
第1の積算部704は、第1のレジスタに格納されている各色成分値に対して第1のフィルタ係数をSIMD命令により積算する。
第2の積算部705は、第2のレジスタに格納されている各色成分値に対して第1のフィルタ係数とは異なる第2のフィルタ係数をSIMD命令により積算する。
加算部706は、第1および第2の積算部における算出結果をSIMD命令により加算する。
CPU801は、色変換装置における各種処理を行う役割を有しており、またMEMORY802に格納されているプログラムを実行することにより種々の機能を実現する役割も有している。また、CPU801は、SIMD命令の実行が可能となっており、SIMD命令等を実行する際に用いる複数のレジスタ801rを備えている。
MEMORY802は、例えばROMやRAM等から構成されており、色変換装置において利用される種々の情報やプログラムを格納する役割を有している。
従来、スキャナ等から読み込まれた画像データのノイズ除去やエッジ強調、網点除去等様々な画像処理の前処理として空間フィルタ処理が行われている。
図38〜図40は、一般的な2次元空間フィルタ処理について説明するための図である。図38は、3×3のフィルタ係数を示す図であり、図39は、画像データとウィンドウの関係の一例を示す図であり、図40は、フィルタ処理にて用いられる計算式の一例を示す図である。
図39において、画像データ上にある3×3の太枠で囲まれた画素領域が1つの処理単位であり、「ウィンドウ」と呼ぶものとする。また、ウィンドウの中心にある灰色の画素部分を「注目画素」と呼び、この注目画素にフィルタ処理の結果が格納される。注目画素であるウィンドウ中央の画素値のフィルタ処理結果は、注目画素の近傍の画素値とフィルタ係数とに基づく演算処理によって求められる。例えば、フィルタ処理としてLPF(Low Pass Filter)処理やHPF(High Pass Filter)処理を行う場合、各画素値とそれに対応するフィルタ係数を乗算し、それらの総和を求め、その値を定数で割る演算が行われる(図40参照)。そして、このウィンドウを1画素ずつシフトさせながら、注目画素の計算を画像データ全体に対して行うことによりフィルタ処理が行われる。
しかしながら、空間フィルタ処理は演算量が多いため、フィルタ処理において用いるウィンドウのサイズが大きく(ウィンドウに含まれる画素数が多く)なると、その処理時間が極端に長くなる傾向がある。これに対応し、空間フィルタ処理の演算をソフトウェアで高速に処理する方法として、SIMD(Single Instruction Multiple Data)命令を実行可能な、いわゆる「SIMD型プロセッサ」を用いる演算方法が知られている。
SIMD型プロセッサは、複数のデータに対して、同じ演算処理を並列に実行することができるため、画像処理のように同じ演算処理を複数の画素に対して実行する場合に適している。
従来の汎用プロセッサで上記フィルタ処理における積和演算を行う場合、図41のように画像データを色成分毎(R成分、G成分、B成分)に分解し、所定のフィルタ係数と対応する画素データとを乗算し、加算を行う計算式(図40を参照)をそのままプログラムとして記述する。
また、SIMD型プロセッサを用いる場合でも、図42〜図46に示すように、画像データを色成分毎に分解した後、ウィンドウ単位で画像データをSIMDの各演算スロットに割り当て、汎用プロセッサで行っていた計算と同様の処理を並列実行することで、処理の高速化を図っている。
一般に画像データのフィルタ処理に用いるウィンドウサイズは、ウィンドウ中央の画素を注目画素とする関係上、「3×3」や「7×7」のような「奇数×奇数」サイズの場合が多い。これに対し、SIMD型プロセッサの演算スロットの数は「2のべき乗数」であるのが一般的であるため、図42〜図46に示すように使用されない空き演算スロットができてしまい非効率であった。
そこで、本実施の形態によるフィルタ処理装置7では、SIMD型プロセッサにおいて図42〜図46に示すような空き演算スロットを作らず、全ての演算スロットを効率よく使用するとともに、3色成分毎に分解する工程を省くことでフィルタ処理を高速化している。
図47〜図53は、本実施の形態におけるフィルタ処理の概要を説明するための図である。図47の上段にあるRGBデータとフィルタ係数は、図41にて示したものと同じものである。
まず、色成分値取得部701は、入力値であるRGBデータをSIMDレジスタに読み込ませる(図47参照)。3×3フィルタを例にして説明すると、注目画素の位置がR11/G11/B11である場合、第1のデータ格納部702は、複数のレジスタ801rの内の1つであるレジスタP1に1番目のラインの先頭であるR00/G00/B00からレジスタ長(16バイト)分を格納させる。以下、本実施の形態においてフィルタ処理に用いられる各レジスタ(SIMDレジスタP1〜P9、SIMDレジスタK1〜K9、SIMDレジスタSUM、SIMDレジスタDIV、)は、複数のレジスタ801rに含まれているレジスタであるものとする。
第2のデータ格納部703は、レジスタP1から1画素分(3バイト)ずらしたデータをレジスタP2に格納させ、同様にレジスタP3にはレジスタP1から2画素分(6バイト)すらしたデータを格納させる。メモリ領域(例えば、MEMORY802)からSIMDレジスタへのデータ読み込み/書き込みは、アクセス可能なデータ境界(SIMDレジスタ長単位)の制限があるため、図54に示すように、複数の作業用レジスタに必要な領域のデータを読み込んだ後、データ入れ替え命令等で必要なデータをレジスタにコピーし、格納させることで実現される。
同様に、第2のデータ格納部703は、2番目のラインであるR01/G01/B01を先頭に、レジスタP4に格納させ、レジスタP4から1画素分(3バイト)シフトさせたデータをレジスタP5に格納させ、レジスタP4から2画素分(6バイト)シフトさせたデータをレジスタP6に格納させる。第2のデータ格納部703は、3番目のラインについてもR02/G02/B02を先頭にレジスタP7に格納させ、同様にレジスタP8、レジスタP9についてデータを格納させる。
次にフィルタ係数についてであるが、図47に示すように、同一の係数をSIMDレジスタのそれぞれの演算スロットに対応する位置にコピーする。この処理を、レジスタK1からK9まで、9つある係数全てについて行う。
次に、SIMDレジスタP1とK1の各演算スロットについて乗算を行い、その演算結果をSIMDレジスタSUMに格納させる。このとき、並列に演算できる演算スロットの数は、扱う数値の範囲によって変わる。図中では、説明の便宜上、1つのレジスタで6つ以上計算できるように描いているが、扱う数値の範囲によっては4つであることもある。その場合は、SIMDレジスタP1、K1に対して1回の乗算命令で行っていた処理が、SIMDレジスタP1に相当する複数のレジスタP1−1、P1−2と分割して保持し、SIMDレジスタK1の係数も分割したP1−1、P1−2に対応する形式になり、複数回の乗算命令で処理することになる。しかしながら、これは単にデータが分割処理されただけで各画素のデータに対して、同じ1つのフィルタ係数を乗算するという基本的な考えには変わりはない。このことは、後述する処理についても同様である。
次に、第1の積算部704および第2の積算部705は、SIMDレジスタP2とK2の各演算スロットについて乗算処理を行う(図49を参照)。加算部706は、上記乗算処理の結果を、先に計算して得られたSIMDレジスタSUMに加算し、格納させる(図49を参照)。同様の処理を図50〜図52に示すように、SIMDレジスタP3〜P9、K3〜K9に対しても行う。
ここまでの処理で、SIMDレジスタの各演算スロットには、ウィンドウ内の9画素と9係数を乗じた計算結果の総和が求められる。そして、SIMDレジスタの各演算スロットでは、複数のウィンドウのデータが並列処理されることになる。この総和に対して、図53に示すように定数の逆数を乗じれば、複数の注目画素のフィルタ処理結果が同時に得られることになる。
上述のような処理を行うことにより、得られる演算結果のデータ配列が元々の画像データのデータ配列と同じになり、フィルタ処理の結果を格納する際に無駄なデータ入れ替え処理を行う必要がない。これにより、フィルタ処理の処理効率の向上および処理の高速化を図ることができる。これは、図55に示すように、フィルタ処理における演算対象のデータを、その結果を格納するメモリ位置に相当する演算スロットに配置することで実現している。
以上のように本実施の形態によれば、元々の入力データである画像データを、入力時のデータ配列のままで演算に用いることができるように、1つのフィルタ係数を複数画素に乗算、積和演算するような演算方法を採用し、データの読み込みから演算、書き込み処理における無駄なデータ入れ替え処理を省くとともに、演算スロットの使用率を高めることでフィルタ処理の高速化を実現することができる。
図56は、本実施の形態によるフィルタ処理装置における大まかな処理(フィルタ処理方法)の流れについて説明するためのフローチャートである。
色成分値取得部701は、処理対象である画像データを構成する各画素の色成分値を取得する(色成分値取得ステップ)(S601)。
第1のデータ格納部702は、色成分値取得ステップにて取得される複数色分の色成分値を、該色成分値取得ステップで取得される際の配列と同じ順序で第1のレジスタに格納させる(第1のデータ格納ステップ)(S602)。
第2のデータ格納部703は、色成分値取得ステップにて取得される複数色分の色成分値を、該第1のレジスタに格納される色成分値に対して所定ビット数だけシフトさせた状態で(第1のデータ格納ステップにより第1のレジスタに格納された画像データに対して1画素の色成分数もしくは該色成分数の整数倍のビット数だけ所定方向にシフトさせた状態で)第2のレジスタに格納させる(第2のデータ格納ステップ)(S603)。
第1の積算部704は、第1のレジスタに格納されている各色成分値に対して第1のフィルタ係数をSIMD命令により積算する(第1の積算ステップ)(S604)。
第2の積算部705は、第2のレジスタに格納されている各色成分値に対して第1のフィルタ係数とは異なる第2のフィルタ係数をSIMD命令により積算する(第2の積算ステップ)(S605)。
加算部706は、第1および第2の積算ステップにおける算出結果をSIMD命令により加算する(加算ステップ)(S606)。
上述のフィルタ処理装置での処理における各ステップは、MEMORY802に格納されているフィルタ処理プログラムをCPU801に実行させることにより実現されるものである。
本実施の形態では装置内部に発明を実施する機能が予め記録されている場合で説明をしたが、これに限らず同様の機能をネットワークから装置にダウンロードしても良いし、同様の機能を記録媒体に記憶させたものを装置にインストールしてもよい。記録媒体としては、CD−ROM等プログラムを記憶でき、かつ装置が読み取り可能な記録媒体であれば、その形態は何れの形態であっても良い。またこのように予めインストールやダウンロードにより得る機能は装置内部のOS(オペレーティング・システム)等と共働してその機能を実現させるものであってもよい。
本発明を特定の態様により詳細に説明したが、本発明の精神および範囲を逸脱しないかぎり、様々な変更および改質がなされ得ることは、当業者には自明であろう。
本発明の第1の実施の形態による色変換装置について説明するための機能ブロック図である。 RGB色空間での3つの色成分を3次元の立方体を用いて表した図である。 テーブル補間法の例を示す図である。 テーブル補間法の例を示す図である。 テーブル補間法の例を示す図である。 立方格子を分割する6種類の三角錐領域について説明するための図である。 立方格子を分割する6種類の三角錐領域について説明するための図である。 立方格子を分割する6種類の三角錐領域について説明するための図である。 立方格子を分割する6種類の三角錐領域について説明するための図である。 立方格子を分割する6種類の三角錐領域について説明するための図である。 立方格子を分割する6種類の三角錐領域について説明するための図である。 4点補間法による一般的な色変換処理の流れを示すフローチャートである。 4点補間法による一般的な色変換処理の流れを示すフローチャートである。 従来のLUTのデータ構造を示す図である。 4点補間法について説明するための図である。 SIMD命令のレジスタ長単位でデータを配置するデータ構造を示す図である。 差分値をLUTに格納する例を示す図である。 出力値の色成分数を4つ(CMYK)とした場合のLUT値の構造を示す図である。 メモリ領域におけるLUT値の格納方法の詳細を示す図である。 基準アドレスに対して、6つの多面体分のLUT値を格納した例を示す図である。 複数の色変換値それぞれが格納されるメモリ領域の先頭アドレス間の間隔が、所定間隔となるようにした例を示す図である。 本実施の形態による色変換装置におけるSIMD命令を使用した色変換処理の処理の流れを示すフローチャートである。 本実施の形態による色変換装置における色変換処理の詳細について説明するための図である。 本実施の形態による色変換装置における色変換処理の詳細について説明するための図である。 本実施の形態による色変換装置における色変換処理の詳細について説明するための図である。 本実施の形態による色変換装置における色変換処理の詳細について説明するための図である。 本実施の形態による色変換装置における色変換処理の詳細について説明するための図である。 本実施の形態による色変換装置における色変換処理の詳細について説明するための図である。 本実施の形態による色変換装置における色変換処理の詳細について説明するための図である。 補間演算により得られた処理結果(色変換後の色値)を示す図である。 本実施の形態による色変換装置における大まかな処理(色変換方法)の流れについて説明するためのフローチャートである。 本発明の第2の実施の形態による色変換装置の構成を示す機能ブロック図である。 本実施の形態におけるルックアップテーブルの構造を示す図である。 本実施の形態にて用いる選択・抽出パターン(6パターン)の例を示す図である。 選択抽出命令の概要を示す図である。 本実施の形態による色変換装置における色変換処理の流れを示すフローチャートである。 本発明の第3の実施の形態によるフィルタ処理装置の構成を示す機能ブロック図である。 一般的な2次元空間フィルタ処理について説明するための図である。 一般的な2次元空間フィルタ処理について説明するための図である。 一般的な2次元空間フィルタ処理について説明するための図である。 汎用プロセッサによる空間フィルタ処理の一例を示す図である。 SIMDプロセッサによる空間フィルタ処理の一例を示す図である。 SIMDプロセッサによる空間フィルタ処理の一例を示す図である。 SIMDプロセッサによる空間フィルタ処理の一例を示す図である。 SIMDプロセッサによる空間フィルタ処理の一例を示す図である。 SIMDプロセッサによる空間フィルタ処理の一例を示す図である。 本実施の形態におけるフィルタ処理の概要を説明するための図である。 本実施の形態におけるフィルタ処理の概要を説明するための図である。 本実施の形態におけるフィルタ処理の概要を説明するための図である。 本実施の形態におけるフィルタ処理の概要を説明するための図である。 本実施の形態におけるフィルタ処理の概要を説明するための図である。 本実施の形態におけるフィルタ処理の概要を説明するための図である。 本実施の形態におけるフィルタ処理の概要を説明するための図である。 データ入れ替え命令によりデータをレジスタにコピーする処理を示す図である。 演算対象のデータを、その結果を格納するメモリ位置に相当する演算スロットに配置する様子を示す図である。 本実施の形態によるフィルタ処理装置における大まかな処理(フィルタ処理方法)の流れについて説明するためのフローチャートである。
符号の説明
1 色変換装置、101 色値取得部、102 格子判別部、103 多面体判別部、104 補間演算部、104’ 補間演算部、105 インデックス値取得部、106 色変換値取得部、7 フィルタ処理装置、701 色成分値取得部、702 第1のデータ格納部、703 第2のデータ格納部、704 第1の積算部、705 第2の積算部、706 加算部、801 CPU、802 MEMORY。

Claims (5)

  1. 3種類の色成分で表現される第1の色空間を複数の立方格子に分割する複数の格子点それぞれに対応付けられる色変換値を格納する3次元ルックアップテーブルに基づいて、前記第1の色空間に属する点の色値を、第2の色空間に属する点の色値に変換する色変換装置であって、
    色変換の対象となる前記第1の色空間に属する点の色値を取得する色値取得部と、
    前記色値取得部にて取得される色値に基づいて、色変換の対象となる点が属する第1の色空間上の立方格子を判別する格子判別部と、
    前記色値取得部にて取得される色値の成分同士を互いに比較することにより、前記色変換の対象となる点が、前記格子判別部にて判別された立方格子に含まれる複数の格子点を頂点とする平面により該立方格子を分割して得られる複数の多面体の内のいずれに属するかを判別する多面体判別部と、
    前記多面体判別部にて判別された多面体を構成する格子点に対応付けられている色変換値に基づいて、前記第1の色空間に属する点の色値に対応する第2の色空間に属する点の色値を補間する補間演算部と
    を備え、
    前記多面体判別部は、前記色値取得部にて取得される色値の成分同士をSIMD命令における比較演算命令によって互いに比較することにより、前記色変換の対象となる点が、前記格子判別部にて判別された立方格子に含まれる複数の格子点を頂点とする平面により該立方格子を分割して得られる複数の多面体の内のいずれに属するかを判別し、
    前記補間演算部は、前記多面体判別部にて判別された多面体を構成する格子点に対応付けられている色変換値を、SIMD命令における選択命令によって取得し、
    前記3次元ルックアップテーブルにおける前記多面体に含まれる複数の格子点それぞれに対応付けられている複数の色変換値は、それぞれの格納アドレスが互いに隣接するようにメモリ領域に格納され、SIMD命令のレジスタ長単位で配列して格納されている
    色変換装置。
  2. 請求項1に記載の色変換装置において、
    前記多面体判別部は、前記色値取得部にて取得される色値の成分同士をSIMD命令における比較演算命令によって互いに比較し、該比較演算の結果に基づいて、前記格子判別部にて判別された立方格子に含まれる複数の格子点を頂点とする平面により該立方格子を分割して得られる複数の多面体の内の前記色変換の対象となる点が属する多面体を示す多面体識別番号をSIMD命令における選択演算命令によって取得し、
    前記補間演算部は、前記多面体判別部にて取得される多面体識別番号に基づいて、該多面体識別番号に対応する多面体に対応づけられている色変換値の格納アドレスを演算で取得し、所定のメモリ領域における該格納アドレスに格納されている色変換値を取得する色変換装置。
  3. 請求項2に記載の色変換装置において、
    前記多面体識別番号は、前記3次元ルックアップテーブルを構成する基本単位サイズの倍数に設定されている色変換装置。
  4. 請求項に記載の色変換装置において、
    前記多面体判別部にて判別された多面体を構成する格子点と色を示すインデックス値を取得するインデックス値取得部と、
    前記インデックス値取得部にて取得されるインデックス値に基づいて、前記多面体を構成する複数の格子点それぞれに対応付けられている色変換値を取得する色変換値取得部と
    を備える色変換装置。
  5. 請求項に記載の色変換装置において、
    前記色変換値取得部は、前記インデックス値取得部にて取得されるインデックス値に基づいて、前記多面体を構成する複数の格子点それぞれに対応付けられている色変換値をシャッフル命令によってレジスタに割り付ける色変換装置。
JP2008010285A 2007-03-30 2008-01-21 色変換装置 Expired - Fee Related JP4975651B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/694,555 2007-03-30
US11/694,555 US7876330B2 (en) 2007-03-30 2007-03-30 Color conversion apparatus, filter processing apparatus and color conversion method

Publications (3)

Publication Number Publication Date
JP2008259178A JP2008259178A (ja) 2008-10-23
JP2008259178A5 JP2008259178A5 (ja) 2010-04-30
JP4975651B2 true JP4975651B2 (ja) 2012-07-11

Family

ID=39793793

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008010285A Expired - Fee Related JP4975651B2 (ja) 2007-03-30 2008-01-21 色変換装置

Country Status (2)

Country Link
US (1) US7876330B2 (ja)
JP (1) JP4975651B2 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009027614A (ja) * 2007-07-23 2009-02-05 Brother Ind Ltd 変換テーブル作成装置、変換テーブル作成プログラム及び変換テーブル作成方法
US8145000B2 (en) * 2007-10-29 2012-03-27 Kabushiki Kaisha Toshiba Image data compressing method and image data compressing apparatus
TR200905493A2 (tr) * 2009-07-15 2011-02-21 Cabot Communications Limited Grafiksel kullanıcı arayüzünde kullanılmak üzere görsel bir öğe üzerinden renk seçimi yöntemi.
CN102595148B (zh) * 2012-03-08 2014-06-11 深圳市华星光电技术有限公司 Rgb色空间色域转换的方法、装置以及液晶显示装置
US9292285B2 (en) * 2013-08-19 2016-03-22 Apple Inc. Interpolation implementation
US20180005059A1 (en) 2016-07-01 2018-01-04 Google Inc. Statistics Operations On Two Dimensional Image Processor

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3403912B2 (ja) * 1997-03-10 2003-05-06 松下電器産業株式会社 色変換装置
JP4221912B2 (ja) * 2000-05-17 2009-02-12 コニカミノルタビジネステクノロジーズ株式会社 色変換装置およびプログラム
US7215440B2 (en) * 2000-12-28 2007-05-08 Xerox Corporation Fast interpolation of large color lookup tables
US7136523B2 (en) * 2001-10-04 2006-11-14 Canon Kabushiki Kaisha Color correction table forming method and apparatus, control program and storage medium
JP3950822B2 (ja) 2002-08-08 2007-08-01 キヤノン株式会社 撮像装置、撮像方法、制御プログラム及びコンピュータ可読メモリ
JP2004341765A (ja) 2003-05-15 2004-12-02 Canon Inc 3次元ルックアップテーブルを用いたデータ変換方法および装置
JP4023417B2 (ja) 2003-08-19 2007-12-19 セイコーエプソン株式会社 Lutを用いて行う画像処理
JP2005107636A (ja) * 2003-09-29 2005-04-21 Fuji Xerox Co Ltd 画像処理装置
JP2005175876A (ja) * 2003-12-11 2005-06-30 Ricoh Co Ltd 色信号処理方法および装置、カラープロファイル作成方法、プログラムおよび記録媒体
WO2005081187A1 (ja) * 2004-02-25 2005-09-01 Matsushita Electric Industrial Co., Ltd. 画像処理装置、画像処理システム、画像処理方法、画像処理プログラムおよび集積回路装置
US7103217B2 (en) * 2004-05-06 2006-09-05 Canon Kabushiki Kaisha Color appearance space to CMYK mapping
US7692831B2 (en) * 2004-12-13 2010-04-06 Canon Kabushiki Kaisha Image processing apparatus and method thereof
US7586644B2 (en) * 2006-02-15 2009-09-08 Conexant Systems, Inc. Color conversion system and method
US7573612B2 (en) * 2007-03-30 2009-08-11 Kabushiki Kaisha Toshiba Color conversion apparatus, color conversion method and color conversion program

Also Published As

Publication number Publication date
US20080239403A1 (en) 2008-10-02
JP2008259178A (ja) 2008-10-23
US7876330B2 (en) 2011-01-25

Similar Documents

Publication Publication Date Title
JP4975651B2 (ja) 色変換装置
JP2666523B2 (ja) 色変換装置
EP3674883B1 (en) Multiplication circuit, system on chip, and electronic device
JP2007221720A (ja) 変換テーブル圧縮方法およびプログラム
US20210074027A1 (en) Image data compression
US6466333B2 (en) Streamlined tetrahedral interpolation
CN112825199B (zh) 碰撞检测方法、装置、设备及存储介质
US7573612B2 (en) Color conversion apparatus, color conversion method and color conversion program
CN113642589B (zh) 图像特征提取方法及装置、计算机设备和可读存储介质
JP2000022973A (ja) 変換装置およびその方法、並びに、記録媒体
KR20230141408A (ko) 애니메이션 렌더링 방법, 장치, 전자 기기 및 저장 매체
CN114897661A (zh) 图像像素的拷贝方法、装置、存储介质及电子装置
US20050030559A1 (en) Color separation based on maximum toner limits
JP2006201914A (ja) 画像フィルタ装置、方法およびコンピュータプログラム
CN114078078A (zh) 一种图像格式转换方法、装置及存储介质
JP4749824B2 (ja) グラフィックスシステム
JP2008505533A (ja) N次元面体補間
US10789072B2 (en) Parallel processor for calculating operand and result addresses as a function of a position of a field of action and predetermined positions of processing elements in non-homogeneous address zones within a topology
CN109544483A (zh) 视频图像亮度、对比度增强方法及装置
JP6501561B2 (ja) データ処理装置およびその制御方法、プログラム
JP4431953B2 (ja) データ変換装置、データ変換方法およびデータ変換プログラム
JPH0946542A (ja) 補間演算方法およびデータ変換装置
JP5025779B2 (ja) 変換テーブル圧縮方法、装置、プログラムおよび変換テーブル復元装置、プログラム
WO2024004221A1 (ja) 演算処理装置、演算処理方法、及び演算処理プログラム
JP4096672B2 (ja) データ変換方法およびデータ変換装置

Legal Events

Date Code Title Description
RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20090803

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100311

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100311

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20100324

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100402

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110906

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111102

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120110

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120308

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120327

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120411

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150420

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees