JP4651108B2 - 変換テーブル圧縮方法およびプログラムおよび変換テーブル圧縮装置 - Google Patents

変換テーブル圧縮方法およびプログラムおよび変換テーブル圧縮装置 Download PDF

Info

Publication number
JP4651108B2
JP4651108B2 JP2006043160A JP2006043160A JP4651108B2 JP 4651108 B2 JP4651108 B2 JP 4651108B2 JP 2006043160 A JP2006043160 A JP 2006043160A JP 2006043160 A JP2006043160 A JP 2006043160A JP 4651108 B2 JP4651108 B2 JP 4651108B2
Authority
JP
Japan
Prior art keywords
difference
conversion table
lut
data
compression
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.)
Active
Application number
JP2006043160A
Other languages
English (en)
Other versions
JP2007221720A5 (ja
JP2007221720A (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.)
Canon Inc
Original Assignee
Canon Inc
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 Canon Inc filed Critical Canon Inc
Priority to JP2006043160A priority Critical patent/JP4651108B2/ja
Priority to US11/676,015 priority patent/US8363292B2/en
Publication of JP2007221720A publication Critical patent/JP2007221720A/ja
Publication of JP2007221720A5 publication Critical patent/JP2007221720A5/ja
Application granted granted Critical
Publication of JP4651108B2 publication Critical patent/JP4651108B2/ja
Priority to US13/724,726 priority patent/US8797616B2/en
Active 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
    • 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/64Systems for the transmission or the storage of the colour picture signal; Details therefor, e.g. coding or decoding means therefor

Landscapes

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

Description

本発明は、たとえば画像の色変換等に用いられる変換テーブルの圧縮方法に関する。詳しくは、カラー画像処理装置で画像データの処理に用いる変換テーブル、特に色変換テーブルを格納するために必要な記憶容量を小さくするための方法、および、変換テーブルを格納に適したデータに変換する、または、格納した変換テーブルを用いて画像処理を行なう画像処理装置に関する。
カラープリンタやカラー複写機またはカラースキャナなどのカラー画像の入力あるいは出力を行う機器では、高品位なカラー画像を実現するために、人間の知覚特性などに基づいて高度に最適化された色変換処理を行う必要がある。このような色変換処理は、単純な演算によって実現することが困難であるため、自由度の高い変換処理を実現することが可能であるルックアップテーブル(以下、LUTとする)を用いた変換処理により実施されている。LUTとは変換テーブルの一種であり、入力に対応する出力値をテーブルとして保持する。LUTに考えられる全ての入力に対する出力データを保持するためには膨大な記憶容量が必要となる。そのため、LUTには、離散的に定めた特定の入力(格子点という)に対する出力データ(格子点値という)を保持し、格子点以外の入力に対する出力データは、格子点値を使用して補間により算出されることが一般的である。
例えば、色変換処理として最も一般的である、入力データがR(レッド)、G(グリーン)、B(ブルー)各色8ビット(0〜255)で構成され、出力データがC(シアン)、M(マゼンタ)、Y(イエロー)、K(ブラック)各色8ビットとなる色変換処理を考える。この変換に用いられるLUTは、RGBを座標軸とする3次元のテーブルとなり、RGBの値に応じたYMCKの値をその要素として含む。この場合入力データ(R,G,B)がとり得る値は、0h〜FFFFFFhまでの約1670万通りとなる。したがってこの色変換のために用いるLUTには、約1670万×4バイト=約64Mバイトのデータを記憶する必要ある。
そこで、データ量を削減するために、特定の入力、例えばRGBの各値が 0、 64、 128、 191、 255 のいずれかであるような値を格子点とし、LUTにはその格子点に対応するYMCKの値を格子点値として保存する。たとえば、格子点となる入力データは、(0、0、0) 、(128、191、64)、(64、255、128)などであり、それら格子点に対応する格子点値すなわち出力データがLUTに保持される。ここで改めて定義すると、出力データがLUTに保持されている入力データを格子点、保持された出力データの値をその格子点値という。そして格子点以外の入力データ、たとえば(128、200、64)などに対する出力データは、格子点値を格子点からの距離に応じた加重平均により算出することが一般的には実施されている。このように格子点値を加重平均することにより出力データを算出することは補間と呼ばれ、様々な補間の手法が提案されている(特許文献4等参照)。
なお各軸の格子点の数を格子点数と呼び、前述の例では格子点数は5である。また、各軸の格子点が対応する入力データの値、前述の例では 0、 64、 128、 191、 255 を格子位置と呼ぶ。また格子位置をその値が小さいものから順につけた番号を格子番号と呼ぶ。例えば前述の例では格子位置0の格子番号は0、格子位置191の格子番号は3となる。なお、前述の例では各軸の格子点数、格子位置がすべて同じとしたが、格子点数も格子位置も各軸ごとに異なるものにすることも可能である。LUTでは内挿により格子点でない入力データに対応する出力データを算出するため、少なくとも入力データの最小値と最大値に対応する格子点は保持する必要があるので格子点数の最小値は2となる。
近年、インクジェットプリンタをはじめとする画像処理装置は銀塩写真を超えるほどの高画質の実現するようになり、その用途をさらに広げるためより多くの用紙の種類に対応することが求められてきている。また、更なる高画質を実現するためにより高精度な色変換処理の実現が求められている。より多くの用紙の種類に対応するためには、それぞれの用紙に最適化された色変換テーブルが必要であるため1つの画像処理装置において使用される色変換テーブルの数はさらに増えている。また、テーブルに補間演算を併用した色変換処理を高精度に行おうとする場合、その色変換テーブルの格子点の数を多くし、補間演算で用いる格子点と入力データの距離を小さくすることが有効な手法の一つである。しかし、格子点数が多くなると1つのLUTのデータ量が大幅に増加することになる。これらの要因により色変換テーブルのデータ量はますます増大し、そのデータを格納するために使用されるメモリー等のリソースを圧迫する結果をもたらしている。
一方、限られたリソースに相対的に多量のデータを収める技術として、データ圧縮が知られている。 しかしながら、既知のデータ圧縮を色変換テーブルの圧縮にそのまま適用しても、十分にデータ量の低減が図れない、つまり高い圧縮率が得られない問題があった。これは以下の理由による。すなわち、通常の圧縮処理では同じデータが高い頻度で繰り返し出現すること利用してデータ量の削減を図っている。このため、同じデータが高頻度で表れるデータの圧縮率は高く、そうでないデータの圧縮率は低くなる。色変換テーブルは、色の連続性により、通常滑らかな、しかし非線形に変化する値の集合として表現される。そのため、色変換テーブルの値は入力の変化に応じて滑らかに変化するが、その変化は規則的なものではなく、さらにその値は広い範囲に偏ることなく分布している。このために色変換テーブルの圧縮率を挙げることは困難である。
このため、既知のさまざまな圧縮アルゴリズムのどのようなものを適用しても高い圧縮率が得られないという問題がある。そこで圧縮処理を施す前に色変換テーブルに対して変換処理を施すことで色変換テーブルの圧縮率を向上する手法がいくつか提案されている(たとえば特許文献1乃至特許文献3等参照)。
特開平11−017971号公報 特開2002−209114号公報 特開2003−110869号公報 特開昭53−123201号公報
しかし、既に提案されている色変換テーブルに対して圧縮処理の前に変換処理を施す手法には、いくつもの欠陥があった。たとえば、(1)圧縮率の向上が十分なものではない。(2)色変換テーブルが一定の条件を満たさないとその手法を適用することができない。(3)個々の色変換テーブルを個別に処理しているため色変換テーブルの数が増加した場合にも個々の色変換テーブルの圧縮率は変化せず、そのため色変換テーブルの数の増加と同じ割合で圧縮後の色変換テーブルの合計データ量も増加してしまう。
上記欠陥を解消して変換テーブルの容量を縮小するために、より効率的で汎用的な圧縮処理の手法が必要とされている。
本発明は、上述の従来例に鑑みてなされたものであり、その目的とするところは、上記欠陥を解消することにある。より具体的には、色変換テーブルをデータ圧縮して記憶媒体に格納する場合に、どのような色変換テーブルにも適応することが可能で、色変換テーブルの数が増加するに従って圧縮率を向上させることが可能である色変換テーブル格納方法を提供することにある。
上述の問題を解決するために本発明は以下の構成を備える。すなわち、変換テーブルを圧縮して記憶媒体に格納するための変換テーブル圧縮方法であって、1の変換テーブルから、該第1の変換テーブルを構成する格子点を間引いて第2の変換テーブルを作成する間引きステップと、記間引きステップにおいて前記第1の変換テーブルから間引かれた格子点の値と、該間引かれた格子点に対応して前記第2の変換テーブルから求められた補間値との差分を求め、前記間引かれた格子点に対応する階層差分テーブルを作成する階層差分作成ステップと、記第2の変換テーブルと前記階層差分テーブルとを連結した連結データを圧縮し、圧縮データを作成する圧縮ステップと、記圧縮データを記録媒体に格納する格納ステップとを有することを特徴とする。
あるいは、変換テーブルを圧縮して記憶媒体に格納するための変換テーブル圧縮方法であって、1の変換テーブルに格納されているデータと、前記第1の変換テーブルと軸数、各軸の格子点数、出力データ数が同じである第2の変換テーブルに格納されているデータとの差分データを求めてテーブル差分テーブルを作成するテーブル差分作成ステップと、記テーブル差分テーブルを圧縮して圧縮データを生成する圧縮ステップと、前記第1の変換テーブルが前記第2の変換テーブルとのテーブル差分テーブルに変換されていることを示す情報と前記圧縮データと記録媒体に格納する格納ステップとを有することを特徴とする。
あるいは、変換テーブルを圧縮して記憶媒体に格納するための変換テーブル圧縮方法であって、複数の変換テーブルについて、変換テーブルに格納されているデータから、前記変換テーブルの入力空間を規定する複数の軸それぞれの一定方向について隣接する格子点値間の差分値を求めて、軸差分テーブルを作成する軸差分作成ステップと、前記軸差分作成ステップにより作成された軸差分テーブルのうち、第1の変換テーブルの軸差分テーブルと、前記第1の変換テーブルと構成が同じである第2の変換テーブルの軸差分テーブルとの差分データを求めてテーブル間差分テーブルを作成するテーブル差分作成ステップと、記テーブル間差分テーブルを圧縮して圧縮データを作成する圧縮ステップと、記第1の変換テーブルが第2の変換テーブルとの差分データに変換されていることを示す情報と前記圧縮データとを記録媒体に格納する格納ステップとを有することを特徴とする。
あるいは、変換テーブルを圧縮して記憶媒体に格納するための変換テーブル圧縮方法であって、1の変換テーブルから、該第1の変換テーブルを構成する格子点を間引いて第2の変換テーブルを作成する間引きステップと、記間引きステップにおいて前記第1の変換テーブルから間引かれた格子点の値と、該間引かれた格子点に対応して前記第2の変換テーブルから求められた補間値との差分を求め、前記間引かれた格子点に対応する階層差分テーブルを作成する階層差分作成ステップと、記第2の変換テーブルと前記階層差分テーブルとを連結した連結データを作成する連結ステップと、記連結ステップにより作成された第1の連結データから、該第1の連結データと構成が同じである第2の連結データとの差分データを求めてテーブル間差分テーブルを生成するテーブル差分生成ステップと、前記テーブル差分データを圧縮して圧縮データを生成する圧縮ステップと、前記第1の連結データが、前記第2の連結データとのテーブル間差分テーブルに変換されていることを示す情報と前記圧縮データと記録媒体に格納するステップとを有することを特徴とする。
あるいは、変換テーブルを圧縮して記憶媒体に格納するための変換テーブル圧縮方法であって、1の変換テーブルから、該第1の変換テーブルを構成する要素を間引いて第2の変換テーブルを作成する間引きステップと、記間引きステップにおいて前記第1の変換テーブルから間引かれた格子点の値と、該間引かれた格子点に対応して前記第2の変換テーブルから求められた補間値との差分を求め、前記間引かれた格子点に対応する階層差分テーブルを作成する階層差分作成ステップと、記第2の変換テーブルに格納されているデータから、前記第2の変換テーブルの入力空間を規定する複数の軸それぞれの一定方向について隣接する格子間の差分値を求めて、軸差分テーブルを作成する軸差分作成ステップと、記軸差分テーブルと前記階層差分テーブルとを連結して連結データとするステップと、前記連結データを圧縮して圧縮データを作成する圧縮ステップと、前記圧縮データを記録媒体に格納する格納ステップとを有することを特徴とする。
以下、図面を参照して本発明の実施形態を詳細に説明する。 まず、すべての実施形態において共通するルックアップテーブル(以下LUT)の構成について説明する。LUTは3つの要素から構成される入力データに対して1つ以上のデータを出力する3次元テーブルである。このような3次元テーブルは、図1に示すように直方体として模式的に表現することができる。直方体における1つの角を原点とすると、その角を形成する3つの辺が入力軸となり、入力データの3つの要素の値が角からの距離と対応する。各格子点には格子点値が格納される。このように変換テーブル1は、規則的にサンプリングした入力データに対する出力データである格子点値を格納している格子点100から構成されている。図1では省略してあるが直方体のかくれている3面および直方体の内部にも規則的に格子点が並んでおり、全体で105個の格子点から構成されている。そして以下の実施形態では、変換テーブルは、RGB3成分の輝度データを入力とし、CMYK4成分の濃度データを出力とする色変換テーブルである。入力データとしてはRGBのほか、CMY、Lab、XYZなどの入力色空間で定義されたデータが想定される。しかし、それらの以外であっても3つの要素のいずれもが有限の範囲をとるデータであれば本発明を適応することができる。また、出力色空間もYMCK色空間に限られない。さらに、たとえばYMCKからRGBへ変換するための色テーブルのように、入力色空間が3次元ではない色空間であり、出力色空間が4次元ではない色空間であっても、各実施形態は適用可能である。さらに、本実施形態は、色変換テーブルと同様に、入力データの変化に応じて出力値が滑らかに変化するが、変化が非線形であり、圧縮しても高圧縮率が得られないような変換テーブル一般に対して適用することもできる。以下では入力データをRGB、出力データをYMCKとする色変換テーブルについて説明する。
図1に示した3次元テーブルは、図2のテーブル201〜203に示すように、入力データのうち1つの要素を格子位置ごとに分割し、残りの2つの要素を2次元的に配置して、それぞれを縦軸、横軸に対応づけることでも模式的に表現することができる。この変換テーブルは、出力データの成分をおのおの独立して保持している。つまり3要素からなる入力により1つの値を出力する変換テーブルである。例えばRGBを入力としCMYKの4つの値を出力する変換テーブルは、RGB値に応じてCMYKのそれぞれの値を与える4つの変換テーブルを1組としたものである。したがって、たとえばCの値は入力RGBの値によってのみ決められる、つまりC=Fc(R、G、B)である(FcはC成分の変換テーブルによる写像)。同様にM=Fm(R、G、B)、Y=Fy(R、G、B)、K=Fk(R、G、B) である。このようなLUTは、通常、各色成分のLUTの格子位置は共通である。本実施形態の処理は、処理の対象となる変換テーブルの出力データの次元数がいくつであっても、各成分について個別に適応できる。そのため、以下の説明では出力データを1次元とする。
以下の説明では、特にC[i:j:k]という名のLUTを例にして説明する。また、格子点値は全て正の値で8ビットで表されるものとする。各軸の格子番号を決めれば3次元空間での格子位置が確定される。[i:j:k]はR、G、Bの格子番号がそれぞれi、j、kである格子点を表し、C[i:j:k]は3軸の格子番号がそれぞれi、j、kである格子点値を表すものとする。また、R、G、Bの各軸の格子点数をそれぞれN、M、Lとする。視覚的な理解を容易にするために、格子点を3次元に配置した模式図を図1に示したが、LUTを汎用的なデジタル演算処理装置により処理する場合には1次元のテーブルとする必要がある。LUTを1次元テーブルC[x]により表す手法は何通りか存在する。本実施形態では、1次元テーブルにおける位置と、LUTの格子点を図1のように3次元的に配置したときの3次元空間における格子点の隣接関係が最も容易に関係づけられるように、図3に示すような規則によりLUTを1次元テーブル化する。この規則ではC[i:j:k]の格子点値は、1次元テーブルではC[i*M*L+j*L+k]となる。図3は一例としてN=5、M=3、L=7の場合のC[x]とC[i:j:k]との関係を示している。もちろんC[x]とC[i:j:k]との相違は本質的なものではなく、LUTの要素の表現方法の相違にすぎない。したがって本実施形態ではLUTの添え字を一次元の値で説明しているが、3次元で表現した場合でも同様な処理を行える。図3においては、変換テーブルC[x]においては、インデックスx=i*M*L+j*L+kにより特定された要素がアクセスされる。
1つの格子点が複数の格子点値を保持するLUTの場合は、各格子点値ごとに図4のように第1要素の1次元テーブルの次に第2要素の1次元テーブルを、第2要素の1次元テーブルの次に第3要素の1次元テーブルを、のように各要素のテーブルを連結して1つのデータとし、このデータ全体を圧縮処理の対象とする。図4においては、まず入力座標系の各軸の格子点位置401が記述され、次にシアン要素の変換テーブル402が図3の順序で記述され、同様にマゼンタ、黄、黒の各出力要素403〜405について記述される。格子点位置401には、格子点に対応する入力値が好ましくは昇べき又は降べきに、各格子点毎に区別できるように記述されている。たとえば格子点が、0,128,255であれば、この値が区別可能に記述される。もちろん格子位置は各軸ごとに記述される。なお、図4の例では、全出力要素について格子位置が共通である。もしも共通でなければ、RGBの格子点位置が、各色成分の変換テーブルごとに用意される。
なお、以下の説明において具体的な例を示す場合には図3に示した格子点数がR軸、G軸、B軸それぞれ5、3、7のLUT(総格子点数105)を例とする。もちろん本発明は2以上のいかなる格子点数のLUTに対しても適応可能である。
さて、個別の実施形態について説明する前に、本実施形態に示すフローチャートに即したプログラムを実行するコンピュータの構成を説明する。コンピュータは通常の汎用コンピュータである。ホスト装置51と画像出力装置52のハードウェア構成について図34を参照して説明する。図34は情報処理システムを構成するホスト装置(コンピュータ)51と画像出力装置(プリンタ)52のハードウェア構成概要を示すブロック図である。図34に示されているように、ホスト装置51は処理部1000とこれに周辺装置を含めてホスト装置全体が構成されている。また、プリンタ52は、エンジン部および制御回路部から構成されている。
ホスト装置51の処理部1000は、制御プログラムに従ってホスト装置の全体制御を司るMPU1001、システム構成要素を互いに接続するバス1002、MPU1001が実行するプログラムやデータ等を一時記憶するDRAM1003を含む。さらに、システムバスとメモリバス、MPU1001を接続するブリッジ1004、例えば、CRTなどの表示装置2001にグラフィック情報を表示するための制御機能を備えたグラフィックアダプタ1005を含んでいる。さらに、処理部1000はHDD装置2002aおよびリムーバブルディスク2002bとのインタフェースを司るディスクコントローラ1006を有する。さらに、キーボード2003とのインタフェースを司るキーボードコントローラ1007、IEEE1284あるいはUSB規格に従って画像出力装置52との間の通信を司る、インタフェースである通信I/F1008を備えている。さらに、処理部1000には、グラフィックアダプタ1005を介して操作者にグラフィック情報等を表示する表示装置2001(この例では、CRT)が接続されている。更に、プログラムやデータが格納された大容量記憶装置であるハードディスクドライブ(HDD)装置2002a、キーボード2003が夫々、コントローラを介して接続されている。
各実施形態で説明する圧縮された色変換テーブルは、たとえば不図示のネットワークを介してサーバからダウンロードされたり、あるいはリムーバブルディスクの媒体2002bにより電磁データとして提供される。そして提供された色変換テーブルは、HDD2002aに保存される。コンピュータ51では、プリンタ52に対して送信する画像データの変換等を行うプリンタドライバが実行される。HDD2002aに格納された色変換テーブルはこのプリンタドライバにより参照されて、RGB色空間で定義された色から、YMCK色空間で定義された色への色変換が実行される。ここでHDD2002aには、種々の印刷設定に対応して複数の色変換テーブルが圧縮された状態で保存されている。またプリンタドライバは、用紙の種類等の印刷設定を利用者が指定することができるユーザインターフェースを提供している。プリンタドライバは、指定された印刷設定に対応する色変換テーブルを、圧縮された複数の色変換テーブルから選択して復号(本例では、圧縮に対する用語として復号を用いる。伸長と呼ぶ場合もある)する。そして復号した色変換テーブルを色変換のために使用する。
[第1実施形態]
<色変換テーブルの圧縮処理>
図5Bは、図1の色変換テーブルを圧縮するフローチャートである。図5Bの手順は本例では、たとえば色変換テーブルを提供するベンダのコンピュータにより実行される。まず、色変換テーブルの第1の出力色成分に着目して(S103)、着目色成分のLUT変換処理を行う(S104)。本例では出力色がYMCKであるから、たとえばCに着目し、C色成分について、色変換テーブルの変換を行う。そして全色成分に変換が終了したかテストし(S105)、終了していなければ次の色成分に着目して(S106)、LUT変換を行う。一方全色成分にLUT変換が終了していれば、色変換テーブル全体について、可逆圧縮処理を実行し(S107)、圧縮データを記録媒体に保存する(S108)。圧縮した色変換テーブルをたとえばネットワークを介してオンラインで頒布する場合には、記録媒体はHDD2002aである。また、蓄積媒体を介してオフラインで頒布する場合には、記録媒体はリムーバブル媒体である。もちろんHDD2002aからリムーバブル媒体へと複製しても良い。
<色変換テーブルの前置変換処理>
図5Aは、本発明の第1実施形態にかかるLUTの変換処理の手順を示すメインフローチャートである。図5BのステップS104において圧縮に先立って実行される。本実施形態のLUTに対する処理は大きく分けてS100、S101、S102の3つのステップに分けられる。各ステップでは、RGBの各軸方向についての軸方向の差分を求める処理をそれぞれ行う。ステップS100の詳細な処理手順を図6のフローチャートに示す。図6による処理対象は、図4の色変換テーブルである。各色成分のテーブルは、図3のように1次元のインデックスでアクセスされる。
図6のステップS100では、ある格子点Xの格子点値と、第3軸方向について格子番号が格子点Xよりも一つ小さい隣接格子点の格子点値との差分を求め、その差分を、格子点Xの格子点値として代入する処理を、すべての格子点について行う。なお、3次元の入力色空間の各軸を第1軸、第2軸、第3軸と呼び、本例では、RGB色空間のB成分が第3軸に相当する。
図6において、ステップS110からS116で、第3軸の格子番号0番の格子点値を除く全ての格子点値を、1つ前の格子点値との差分値とする。ここで注意が必要なのは、差分値とした値を元の格子点値が格納されていた領域に上書きしている点である。このように上書きをせずに差分値を別の領域に格納して処理を行うことも可能であるが、そのような処理では処理対象のLUTの格納領域とは別に差分値を格納するための同じ量の格納領域が必要になる。逆方向に処理を進めることにより差分値を上書きしながらの処理が可能になる。
図6においては、N,M,Lは色変換テーブルの格子数に応じて決まる定数であり、図4のRGB各色成分の格子点の数がそれぞれN,M,Lに代入される。また、C[x]は、図3のように一次元のインデックスで示した形式の色変換テーブルであり、図6(図7,図8も同様)ではシアン成分を例とした。p,qは変数であり、DRAM1003に変数として確保される。
変数pは第2軸(すなわちG)方向についての格子点位置を示す。1次元で格子点位置(インデックス)xを与える式x=i*M*L+j*L+k=(i*M+j)*L+kに即して説明すると、p=(i*M+j)*Lに相当する。MおよびLは定数であり、pはLを単位として増加するから、pが与えられれば第1軸方向の格子位置iと第2軸方向の格子位置jは定まる。また変数qはkに相当する。すなわちqにより第3軸方向の格子位置が定まる。ステップS113〜S115では、変数pで定まる第1軸および第2軸の格子位置において、第3軸すなわちqの値をまず最大値すなわちL−1とする。その格子点を着目格子点として、着目格子点の格子点値から、当該第3軸上で着目格子点に隣接する格子点の格子点値を差し引き、その値を着目格子点の値として上書きする。ただしここで隣接する格子点とは、着目格子点よりも格子位置がちいさい方向に隣接する格子点である。これを、着目格子位置を、第3軸上で1ずつ小さくしながら繰り返す。k=q=0の格子位置は差分をとる相手が存在しないので、q>0についてのみ行われる。そしてステップS116では、差分計算する格子位置を、第2軸方向に1ずらす。
この処理は、LUTを図1のような格子点を三次元的に配置した直方体とした場合にB軸方向に隣り合う格子点値の差分を算出することに対応する。この差分処理により格子点値がB軸方向の変化量になる。
ここで本実施形態での差分を算出する処理について説明する。通常、2つの値a、bの差分dはd=a−bとして、a>=bなら正、a<bなら負という符号付きの値として算出されるが、そのように演算した場合、aおよびbが8ビットの0〜255の値であっても差分dは−255〜255となり、符号付きの正しい差を記録するために符号ビットを含めた9ビットが必要となる。しかし、本発明における差分では2つの値の正しい差は必要ではなく、復元が可能であれば十分である。そこで差分処理を次にプログラミング言語であるC言語で示す処理のように行うことにより、差分dを0〜255、つまり8ビットで表せる範囲の値とすることができる。
d=a−b;
if ( d<0 ){
d=d+256;
}。
また差分dとbの値からaの値を復元する併合処理は次のように行う。
a=b+d;
if ( a>=256 ){
a=a−256;
}。
これら演算は、8ビットを越える桁数で演算した場合処理であって、たとえば演算の桁数を8ビットに限れば、符号(サイン)なし減算及び符号なし加算を用いることで、条件処理を行うことなく上記差分処理及び併合処理をそれぞれ実現できる。
この差分・併合処理による幾つかの演算例を示す。
差分 82 − 57 = 25、
併合 57 + 25 = 82、
差分 228 − 3 = 225、
併合 225 + 3 = 228、
差分 57 − 82 = −25、 −25 + 256 = 231、
併合 82 + 231 = 313、 313 − 256 = 57、
差分 0 − 255 = −255、 −255 + 256 = 1、
併合 255 + 1 = 256、 256 − 256 = 0、
差分 23 − 254 = −231、 −231 + 256 = 25、
併合 254 + 25 = 279、 279 − 256 = 23。
この差分・併合処理を任意のビット数pに適用できるよう一般化すると、
差分:
d=a−b;
if ( d < 0 ){
d=d+2^p;
}。
併合:
a=b+d;
if ( a>=2^p ){
a=a−2^p;
}。
となる。ここで2^pは2のp乗である。なお、p桁の符号なし演算を用いれば、上記条件処理(if以下の処理)は不要となる。
格子点値が符号付きで負の値も取り得る場合は、符号付きの格子点値を符号ビットも含めて正の値と見なすことにより上記の差分処理を適用することができる。併合も処理自体は上記の処理のまま、上記併合処理により得られた値を符号付きの値と見なすだけで対応することができる。
結局ステップS110からS116までの処理は次の式で表すことができる。
C[i:j:k] ← C[i:j:k] − C[i:j:k−1]、 i=0〜N−1、j=0〜M−1、k=L−1〜1。
図9に5つの値に対して逆方向に差分処理を行ったときの各値の変化するようすを示す。図6の手順では、ひとつの変換テーブルが順次書き替えられていくが、図9では説明の便宜から更新前と更新後のテーブルを別々に示した。図9のテーブルは、テーブルC[i:j:k]において、インデックスi及びjを一定値とし、第3軸(k)方向の格子点値を格子位置の順に並べたものである。一番左のテーブル901が初期の状態であり、右にいくに従い最下段の格子点値から順に、そのひとつ前の格子点値との差分に更新されている。処理が終了したテーブル905では、一番上の格子点値を除いて、すべてひとつ前の格子点値との差分値となる。なお、逆に図9の右から順に、上の値をひとつ下の値に加算(併合)してゆくと、左端の初期の状態に戻すことができる。
次にステップS101の詳細な処理手順を図7のフローチャートに示す。図7のステップS120からS126では、第2軸の格子点番号0番の格子点値を除く全ての格子点値を、格子点数L前の格子点値との差分値としている。ステップS110からS116と同様にここでも逆方向に処理を進めることにより差分値を上書きしながら処理を行う。この処理は、LUTを図1のような格子点を三次元的に配置した直方体とした場合に、G軸(第2軸)方向に隣り合う格子点値の差分を算出することに対応する。図7では、N、M、Lの値は図6と同様である。変数pはR(第1軸)方向のインデックスを示す。変数qは、変数pで与えられるBG面上における格子点位置を示す。そしてqの初期値はM*L−1すなわちG軸およびB軸とも最大値の格子点を示す。その位置からB軸に沿って1ずつ着目格子点を移動しつつ、差分を計算する。
ステップS120からS126までの処理は次の式で表すことができる。
C[i:j:k]←C[i:j:k]−C[i:j−1:k]、i=0〜N−1、j=M−1〜1、k=0〜L−1。
また、図6の処理を前提とすれば、C[i:j:k] = C[i:j:k] − C[i:j:k−1],C[i:j−1:k] = C[i:j−1:k] − C[i:j−1:k−1]である。したがって、
C[i:j:k]←(C[i:j:k]-C[i:j:k-1])-(C[i:j-1:k]-C[i:j-1:k-1])
となる。
次にステップS102の詳細な処理手順を図8のフローチャートに示す。ステップS130からS133で第1軸の格子点番号0番の格子点値を除く全ての格子点値を、格子点数のM*L前の格子点値との差分値とする。この処理はLUTを図1のような格子点を三次元的に配置した直方体とした場合にR軸方向に隣り合う格子点値の差分を算出することに対応する。図8では、MNLの値は図6と同様である。変数qは、色変換テーブルの1次元のインデックスを示す。そしてqの初期値はNML−1すなわち図3のテーブルの末尾である。その位置から1ずつ着目格子点を移動しつつ、第1軸方向について隣接する格子点との差分を計算する。
ステップS130からS133までの処理は次の式で表すことができる。
C[i:j:k] ←C[i:j:k]−C[i−1:j:k] 、i=N−1〜1、j=0〜M−1、k=0〜L−1。
また、図6および図7の処理を前提とすれば、テーブルCの全軸差分値C'は以下のように表せる。
C'[i:j:k] ← ((C[i:j:k]-C[i:j:k-1])-(C[i:j-1:k]-C[i:j-1:k-1]))-((C[i-1:j:k]-C[i-1:j:k-1])-((C[i-1:j-1:k]-C[i-1:j-1:k-1]))
=C[i:j:k]-C[i:j:k-1]-C[i:j-1:k]-C[i-1:j:k]
+C[i:j-1:k-1]+C[i-1:j:k-1]+C[i-1:j-1:k]-C[i-1:j-1:k-1] ...(数式1)。
このように、以上の処理により[0:0:0]以外の全ての格子点値が差分値となる。ただし、数式1において、該当する格子点が存在しない項の値は0とする。この結果、座標[0:0:0]等、マトリクス端部の格子点を含む全ての格子点を数式1(ただし書きも含む)によって表すことができる。数式1により表される値のことを本実施形態では全軸差分と呼ぶ。なお、着目格子点[i:j:k]に関する差分値の求め方は数式1にはかぎられない。上記例では格子点[0:0:0]の値は差分が求められない値である。これは、各軸方向についての差分値は独立して計算することができるためである。すなわち、各軸方向について、着目格子点のマイナス方向にある隣接格子点を差し引くか(これは上記例である。)、それとも着目格子点のプラス方向にある隣接格子点を差し引くかは選択事項である。したがって、格子点[0:0:0]のように減ずる値(すなわち差分計算の第2項)としかならない格子点を差分原点とよぶとすれば、マトリクスの8隅点のどこを差分原点として選んでも良いはずである。したがって、数式1の"i−1"、"j−1"、"k−1"をそれぞれ"i+1"、"j+1"、"k+1"に置換した数式もやはり全軸差分を表す。すべてを置換せずに、一部を置換した場合も同様である。したがって全軸差分C'[i:j:k]の定義を一般化すると以下のようになる。
C'[i:j:k]=C[i:j:k]-C[i:j:k-a3]-C[i:j-a2:k]-C[i-a1:j:k]
+C[i:j-a2:k-a3]+C[i-a1:j:k-a3]+C[i-a1:j-a2:k]-C[i-a1:j-a2:k-a3]...(数式1')。
ただし、a1,a2,a3は、−1または1であり、該当する格子点が存在しない項の値は0とする。
換言すれば、これまでの説明では各軸の差分をとらない格子点値を0番目の格子点値としたが、0番目ではなく各軸の最後の格子点値を、差分をとらない格子点とすることができる。例えば第3軸で最後の格子点値を差分をとらないとした場合には、ステップS110からS116のループは0〜L−2の範囲を0から順方向にまわることになる。これは第3軸の逆方向とするために、数式1'におけるパラメータを、a1=−1、a2=1、a3=1として全軸差分を計算する手順に相当する。
これまで説明した第1の実施形態では、まず第3軸方向の差分処理を行い、続いて第2軸方向、最後に第1軸方向と差分処理を行っているが、この順番は任意に変更して処理を実施することが可能であり、3軸方向全ての差分処理が終了した段階では全く同一の結果を得ることができる。このことは、数式1から明らかであろう。すなわち、これまでの説明で各軸方向の差分処理が相互に依存していないこと、差分処理がその順番を変えても同じ結果が得られることから明らかである。
なお、ここまで説明した処理を実施しても変換テーブルのデータ量は全く変化しない。つまり変換テーブルが格納する値を圧縮が効果的に行えるように変換する処理であって、データ量を削減する圧縮処理ではない。だたし、格子点値を3軸方向に差分をとることにより、偏りなく分散していた格子点値が0または255の近辺の値に集中するようになる。なぜなら色変換のためのLUTの格子点値は多くの場合滑らかに変化しているため、3軸方向の差分をとることは格子点値を小さくすることにつながるからである。なお、255は−1に相当する値である。0付近の値は、2進数で表現すれば比較的長いリーディング0の後に、短い桁の1が表れる数値である。255付近の値は、2進数で表現すれば比較的長いリーディング1の後に、短い桁の0が表れる数値である。このような値をたとえばランレングスを利用した圧縮法で可逆圧縮すれば、高圧縮率で圧縮できる。なお各軸の格子位置401は、変換テーブルを構成するデータの一部である。したがって、格子位置401は全軸差分の処理対象とはならないが、圧縮されたLUTの一部として、あるいは圧縮されたLUTとともに、LUTを利用するコンピュータに提供される。
以上説明してきた3軸方向全ての差分処理をおのおの全ての出力データに施し、図4のようにそれらを連結して得られたデータに対して、図5BのステップS107において圧縮処理を実施する。圧縮処理としては完全に元のデータを復元できる手法、いわゆる可逆圧縮あるいはロスレス圧縮、であればどのような手法であっても適応することができる。一例としてランレングス圧縮やUSP4558302に開示されているLZW圧縮として知られる手法などがある。
<復元処理>
このように3軸方向に差分処理を行った後、圧縮処理を施したデータを利用して変換処理を実施する処理手順を、図35Bに示す。この処理は、入力された印刷設定に対応した着目色変換テーブルを利用するプリンタドライバが、そのプリンタドライバがインストールされたコンピュータにおいて、着目色変換テーブルを対象として実行する。また、本実施形態では、図35Bの復元プログラムは、図5Bのプログラムによって圧縮された色変換テーブルと共にコンピュータにロードされる。ただし、圧縮された色変換テーブルと復元プログラムは別々に同じコンピュータにロードされても良い。
まず、圧縮の復号処理を行う(S3503)。可逆圧縮処理であるので、3軸方向に差分処理を行った後のデータ、すなわち図5BのステップS107直前のデータを取得することができる。
次にLUT復元処理を行って、差分処理された変換テーブルを復元する(S3505)。これを出力色空間の各色成分について繰り返す(S3506、S3507)。復元が終了したなら、復元した色変換テーブルを、DRAM1003あるいはHDD2002aに保存する。保存された色変換テーブルは、色変換のために参照される。LUT復元処理は差分処理とほぼ同じ手順である。ただし以下の2点が異なる。第1に、着目格子点値に、そのひとつ前の格子点値を併合(加算)することである。第2は、順方向に併合処理を進めることである。併合処理を順方向に進めるのは、復号済みのテーブルの格子点値に差分を併合する必要があるためである。
図35AにLUT復号処理の手順を示す。また、図38、図37、図36に、図35AのステップS3500〜S3502それぞれを示す。図36、図37、図38の処理は、それぞれ図6乃至図8の手順のほぼ逆をなぞる処理である。しかし、上記2点が守られれば、着目する軸方向以外の方向に対するテーブルの走査の順序はどのような順序であっても良いので、その順序は必ずしも図6乃至図8それぞれの逆になってはいない。復元処理により、以下の変換がされる。
C[i:j:k] ← C[i:j:k] + C[i:j:k−1]、i=0〜N−1、j=0〜M−1、k=1〜L−1、
C[i:j:k] ← C[i:j:k] + C[i:j−1:k]、i=0〜N−1、j=1〜M−1、k=0〜L−1、
C[i:j:k] ← C[i:j:k] + C[i−1:j:k]、i=1〜N−1、j=0〜M−1、k=0〜L−1。
図35Aの例では、図5Aと逆の順序で復元を行っている。しかし、差分処理を行う順番と、差分処理を復元する順番は無関係に実施することができる。たとえば、B軸方向、G軸方向、R軸方向の順に差分処理を行ったとしても、差分処理の復元をG軸、B軸、R軸の順のように、順不同で復元処理を行うことができる。なぜなら、差分処理をどのような順序で行っても得られる結果が変わらないのと同じ理由で、差分処理の復元をどのような順序で行っても結果には変化がないからである。この結果、色変換テーブルには元の値が復元される。
以上の手順により本実施形態によれば、色変換テーブルの特徴を利用して、色変換テーブルを高圧縮率で圧縮することができる。また、変換および逆変換によって失われる情報がない。
[第2実施形態]
本実施形態も第1の実施形態と同様に、隣接する格子点値の相関性を活用して圧縮処理の効果を高める手法である。本実施形態では隣接する格子点値の単純な差分を取るのではなく、近隣の格子点値を用いた補間により得られる値と実際の格子点値の差分を取ることにより格子点値を0近辺の値に変換する。本実施形態は、変換精度を向上さるために格子数を増大させたLUTの圧縮に特に有効である。図10は、本発明の第2実施形態にかかるLUTの変換処理の手順を示すメインフローチャートである。なお、圧縮手順は図5Bに示したものと同一である。ただし、ステップS104が図10の手順となる。なお本実施形態でも、第1実施形態と同様に出力色成分(YMCK)それぞれの変換テーブルのうち、C成分の変換テーブルを例として説明するが、全ての色成分について同様に本実施形態の変換処理(図10)は適用され、その後に圧縮が行われる。
本実施形態は大きく分けてステップS204の縮小LUT作成とステップS205の差分データ作成から構成される。さらにステップS204とステップS205とを、格子点数を減少させながら繰り返し処理を行う。図10において、まずN、M、Lの値をセットする(S200〜S201)。これらの値の意味は、第1実施形態の図6乃至図8と同様である。そして縮小LUTが、補間可能な最小のサイズ、すなわち各座標軸の格子点が2となるまでステップS204において間引き処理を行い、ステップS205において、縮小LUTの補間値と、その補間値に対応する、間引き前のLUTの格子点の値との差分データを、各格子点毎に求めて差分テーブルを作成する。図11は縮小LUT作成処理の手順を示すフローチャートである。
図11では、格子番号が偶数であるか、または最後の格子点である格子点値は縮小LUT(縮小後のLUT)の格子点値とする。この処理を第1軸から第3軸の全ての軸に対して適応することで格子点数をほぼ半減した縮小LUTを作成する。例えば3軸全ての格子点数が17のLUTからは各軸について9格子点の縮小LUTが作成される。なお図11の手順は、変換テーブルを3次元のインデックスで表して実現されている。もちろん第1実施形態のように1次元のインデックスで表しても、第1実施形態で示した変換式に則って、図11と同様に間引き処理を実現できる。
図11において、変数i、j、k、l、m、nはDRAM2003に確保される。定数N、M、LもDRAMに保存される。変数i、j、kは、間引き対象となるLUTの入力色空間の第1座標軸(R)、第2座表軸(G)、第3座標軸(B)のインデックスであり、それぞれの格子番号を表す。変数l、m、nは、間引き後の縮小LUTの第1座標軸(R)、第2座表軸(G)、第3座標軸(B)のインデックスであり、それぞれの格子番号を表す。またC[i:j:k]は間引き対象のLUTの格子点値を、Cr[l:m:n]は縮小LUTの格子点値を示す。図11の手順では、間引き対象のLUTから、RGB各軸について、格子番号が奇数または最大値であるような格子点値を残し、その他を間引いた縮小LUTとしてCr[l:m:n]が作成される。
図12は、図10のステップS205の差分データを作成する処理の手順を示すフローチャートである。差分データは、元LUT(間引き対象LUT)の格子点の内、間引かれた格子点の値と、その格子点に対応して縮小LUTより補間演算により算出された出力データ値との差分である。元LUTの格子点値の内、各軸のいずれかの格子番号が奇数であり、かつ、最後の格子点ではない格子点の格子点値は、縮小LUTに含まれていない。そのため、その格子点の格子位置を縮小LUTの入力データとして出力値を算出する。入力された入力データに相当する格子位置がLUTに登録されていない場合、通常は補間演算により出力値が求められ、出力される。補間手法は既知のどのような手法により行うことも可能であるが、本実施形態のプリンタドライバが実際の色変換処理時に行う補間手法と同じ補間方法を用いるのが最も好ましい。そして、元LUTにおける間引かれた格子点の格子点値と、補間により縮小LUTに基づいて算出された出力値との差分が計算され、その値が差分テーブルに格納される。差分テーブルは元LUTと同じディメンションを持ち、間引かれた格子点値と同じ格子点に、その格子点値と補間値との差分値が登録される。差分計算は第1実施形態で示したものと同じ方法で行う。また補間演算の一例として線形補間を用いる補間演算がある。
図12において、変数および定数の意味は図11とほぼ同様である。図12に特有の変数として、フラグhr、hg、hbがある。これらのフラグは、その全てが0であった場合、そのときの着目格子点(変数i、j、kで格子番号を示される格子点)が間引かれない格子点であることを示す。また(r、g、b)は、輝度値を示す。Cd[i:j:k]は、着目格子点に係る差分データを示す。図12の手順では、上述の通り間引かれた格子点に対応する差分データが得られ、差分テーブルの対応する位置に登録される。
間引き前の初期状態において各軸の格子点数が、RGBそれぞれ5×3×7であるLUT(図2参照)に対して、図10の処理を実施した場合を考える。第1段階(第1回目のループ)では、RGBそれぞれが3×2×4の格子点を持つ縮小LUT(図13に示す)が作成される。そして、残りの81(=5*3*7−3*2*4=105−24)の格子点が間引かれる。これら間引かれる格子点について、縮小LUT(図13)による出力値と、元LUT(図2)の格子点値との差分データ(図14に示す)を作成する。図14の差分テーブルにおいては、間引かれずに縮小LUTに含まれる格子点については差分データは不要なので、空欄となっている。また丸印の格子点に差分データが登録される。
例えば初期状態のLUTの3つの各軸の格子位置が図2に示すようである場合は元LUTの格子点[2:1:4]は、入力データ(127、128、190)に対応する。第2軸の格子番号が奇数なので、この格子点は元LUTから間引かれる。この入力データ(127、128、190)に対する縮小LUT(図13)の出力値C'(127、128、190)と、元LUT(図2)のC[2:1:4]の差分を差分データとする。
第2段階(第2回目のループ)では、第1段階で作成した格子点数3×2×4の縮小LUT(図13)が元LUTになり、格子点数2×2×3の縮小LUT(図15)が作成される。残りの12(=3*2*4−2*2*3=24−12)の格子点は間引かれる。これらの格子点について、格子点数2、2、3の縮小LUTによる出力と元格子点値との差分データ(図16)が作成される。作成の仕方は、第1段階と同様である。
第3段階(第3回目のループ)では、第2段階で作成した格子点数2×2×3の縮小LUT(図15)が元LUTとなり、格子点数2×2×2の縮小LUT(図17)が作成される。残りの4(=2*2*3−2*2*2=12−8)の格子点について、格子点数2、2、2の縮小LUTによる出力と元の格子点値との差分データ(図18)が作成される。
縮小LUTの格子点数が2×2×2となるとこれ以上縮小することができないため処理を終了する(S203)。
図10の処理により、差分データの多くが0近辺の値となるため、第1実施形態と同様、ランレングス符号化などを用いた可逆圧縮の圧縮率が大きく向上する。なお、これまで説明してきた図10の処理を実施しても、最終的に得られる縮小LUTと各段階で作成される差分テーブルとを合計したデータ量は、初期のLUTのデータ量と同じである。つまり本手法も格子点値の変換を目的とした処理であって、データ量を削減する圧縮処理ではない。そしてこの変換後に、変換されたデータの圧縮を行う。
上記処理を1段階のみ実施することでも効果はあるが、縮小LUTの格子点数が2になるまで繰り返し実施することがより効果的である。1段階のみ実施とは、図10のループを行わず1回目のステップS205の終了を以てLUT変換処理を終了させることである。たとえば、図2のLUTから、図13の縮小LUTと図14の差分テーブルとを生成した段階が1段階の処理に相当する。
また、入力空間の座標軸それぞれ(本例では3軸)の格子点数が異なる場合には、全ての軸について同時に格子点数が2とならない場合もある。この場合、格子点数が2になった軸はそれ以降も格子点数を2に維持し、格子点数が2より大きい軸については前述した処理に従い格子点数を減少させてゆく。全ての軸の格子点数が2になったところで処理を終了する。
なお、圧縮は、図19のデータ全体を対象として行っても良いし、データ量が小さい上に、あまり効果が上がらないことが予想される格子位置1901を除外して残りを圧縮しても良い。
<復元処理>
LUTの復元には、初期状態のLUTの各軸の格子点数および格子位置が必要であるため、図19のようにこれらの値(各軸の格子位置1901)を差分データ1902〜1904および縮小LUT1905とともに格納されている必要がある。元LUTには、図4に示すように各軸の格子位置は与えられているので、それをそのまま保持すればよい。格子点の間引き方を規則的に行う場合は初期状態のLUTの各軸の格子位置のみを格納することによりLUTを復元することができる。なお復元処理は、第1実施形態と同様にたとえばプリンタドライバが、印刷設定を入力された場合に、入力された印刷設定に応じたLUTを選択して、それを復元する。
復元処理は縮小LUTの格子数、差分データおよび初期状態のLUTの格子数・位置を用いて以下のように行う。元LUTの格子位置から差分データのデータ数および各差分データの格子点位置を確定できる。なぜなら格子位置の間引き方は規則的であるため、各段階の格子位置を初期状態のLUTの格子位置から決定することができるからである。よって、各段階の縮小LUTの格子点位置、すなわち差分テーブルの格子点の位置が得られる。こうして、元LUTの格子位置の情報から縮小LUTの格子位置と1つ前のLUTの格子位置が得られる。そこで縮小LUTを使用して、1つ前のLUTの格子位置(すなわち差分テーブルの格子点の位置)を入力とした時の出力値を、格子点値の補間によって得ることができる。その出力値と該当する格子位置の差分データとを併合(加算)することで1段階前のLUTの格子点値を取得することができる。1段階前のLUTとは、間引き処理を行う前のLUTである。この処理を1段階前のLUTのすべての格子点に対して行うことにより、1段階前のLUTを復元することができる。
そしてそれらの処理を、格子点数が初期状態のLUT(元LUT)と同じになるまで繰り返すことによりLUTを完全に復元することができる。
図39に復元処理手順の例を示す。この例では復元を各格子点毎に行わず、補間により得られたデータのみによる補間値テーブルを作成し、それに対応する差分を加算して1段階上のLUTを復元している。まず、圧縮データを復号する(S3901)。次に、復元に先立って、各段階における縮小LUTの格子位置を、格子点の間引き方法に基づいて決定し、記憶しておく。そして、まず最低階層の差分テーブルに着目する。これを着目差分テーブルと呼ぶ。なお縮小LUTとは、ある時点において復元されたLUTを指す。
次に復号したデータ中に含まれる縮小LUTの値に基づいて、着目差分テーブルの格子点に対応する各格子点の格子点値を補間し、補間テーブルを作成する(S3902)。次に補間テーブルの各格子点値について、着目差分テーブルの対応する格子位置の差分データを加算する(S3903)。次に最上位まで復元したか判定する(S3904)。たとえば復元されたLUTの格子数が、格子位置情報1901に含まれる格子位置を一致していれば、最上位まで復元したものと判定できる。復元が終了して入れば、復元したLUTを保存し(S3906)、終了していなければ、現在より1段階上の差分テーブルに着目する(S3905)。もちろん縮小LUTは、復元されたLUTとする。そしてステップS3902に戻る。
また図20に示すように、各段階の差分データとともにその差分データで復元される格子位置を格納する方法も可能である。先に示した例では第3段階で作成される差分データとともに各軸の格子位置としてR軸(0、255)、G軸(0、255)、B軸(0、190、255)を格納する。また第2段階で作成される差分データと格子位置としてR軸(0、127、255)、G軸(0、255)、B軸(0、85、190、255)を格納する。また第1段階で作成される差分データと格子位置としてR軸(0、64、127、190、255)、G軸(0、128、255)、B軸(0、42、85、127、190、232、255)を格納する。
一方、図20のように各段階の縮小LUTの格子位置を順に格納する方法も可能である。上述の場合と、形式は共通であるが、格子位置の意味が相違する。先に示したLUTの場合であれば、第3段階の縮小LUTの各軸の格子位置であるR軸(0、255)、G軸(0、255)、B軸(0、255)を格納する。また、第2段階の縮小LUTの各軸の格子位置であるR軸(0、255)、G軸(0、255)、B軸(0、190、255)を格納する。また、第1段階の縮小LUTの各軸の格子位置であるR軸(0、127、255)、G軸(0、255)、B軸(0、85、190、255)を格納する。また、初期状態のLUTの格子位置であるR軸(0、64、127、190、255)、G軸(0、128、255)、B軸(0、42、85、127、190、232、255)を格納する。
これらの形式で格子位置を格納すれば、差分処理がどのように行われたかが格子位置情報から判別できる。そのため、差分処理の格子点の間引き方、およびどの格子数まで間引くかという取り決めを変更しても、間引きデータからLUTの復元処理を行うことが可能になる。また、復元に先立って、各段階における縮小LUTの格子位置を決定する処理を省くことができる。
以上説明したように本実施形態では、色変換LUTを、補間値との差分を示す差分テーブルに変換することで、各格子点値を0に近い値に変換することができる。これによって、可逆圧縮した際のLUTの圧縮率を高めることができる。
[第3実施形態]
第3の実施形態では、異なる2つのLUT間で差分をとる手法である。ただし、2つのLUTは同一のディメンションを有する必要がある。また、差分をとるのは圧縮率を高めるためなので、対応する格子点値が近似値している必要がある。
画像形成装置では用紙種類や品位、使用する色などの条件に対応した複数のLUTを格納していて、条件に従って適切なものを選択して色変換処理を実施している。このような複数の色変換のためのLUTを保有する装置においては全く同一ではないが類似性の高いLUTが存在することがある。第3の実施形態はその類似性を活用することにより圧縮率を向上させる手法である。よって本実施形態では、たとえばプリンタドライバが利用する全てのLUTのうち、軸数が同じで、各軸の格子数が同じで、かつ、出力データ数が同じLUTを1つのグループとする。そして同じグループに属するLUTの間で、圧縮率を高める効果のある組み合わせを構成し、そのLUTの差分をとる。1つのグループ内のLUTの個数をEとする。
まず、本実施形態におけるLUT間の差分について説明する。図26に示すように各軸の格子数が同じである2つのLUTCa2601、Cb2602の一方の格子値を他方の格子点値との差分としたテーブルCab2603を作成する。Cab2603の各レコード(格子点)の値は以下の通りである。
Cab[i:j:k]← Ca[i:j:k]−Cb[i:j:k]、i=0〜N−1、j=0〜M−1、k=0〜L−1。
このCab[i:j:k]を、Cbを参照LUTとしたCaの差分LUTという。この差分LUTに対して圧縮処理を行ったものを差分圧縮LUTとする。一方、差分をとることなく単に圧縮したLUTを単独圧縮LUTとする。なお本実施形態での差分演算は、第1の実施形態で示したのと同じ演算による差分を使用する。またLUTが1つの格子点に複数の格子点値を保持する場合はおのおのについて格子点値の差分をとり、図27に示すように連結したものを圧縮処理の対象とする。
差分圧縮LUTは適当な2つのLUTに対して作成しても圧縮率が向上するとは限らない。よってLUT間差分の可能な組み合わせの中からより効果のあがる組み合わせを選択する処理が必要となる。以下にその処理の1つの例を示す。
<LUT管理テーブル>
本実施形態では複数のLUTを管理する必要があるため図24に示すようなLUT管理テーブルを使用する。LUT管理テーブル2400はグループ内のLUTの数であるE個の項目を含み、それぞれの項目はLUTの状態を示す状態値2401とLUTのデータが格納されている領域へアドレス2402から構成されている。LUT管理テーブル2400における順番をそのLUTのIDとする。LUT管理テーブルの最初のLUTのIDを1とし、以下LUT管理テーブルに番号を割り当てて行き、LUT管理テーブルの最後のLUTのIDはEとする。LUT管理テーブルの状態値2401は初期状態では0にする。状態値が0であることはそのLUTの処理が確定していないことを示す。
<圧縮処理>
図21は差分圧縮の対象となるLUTの組み合わせを選択し、圧縮する処理の一例を示すメインフローチャートである。なお、本実施形態においてはLUTの圧縮も図21の手順で行われる。図21の前に、まず共通のディメンションを持つLUTを選択して、LUT管理テーブルをグループ毎に作成する。そして、各グループ毎に、図21の処理を実行する。図21に記載した本実施形態の処理は、LUT管理テーブルの作成を別にすれば、リストAの作成処理(ステップS350)、リストAのソート処理(S351)、LUTの圧縮処理(S352)の3つの処理により構成される。
ステップS350の詳細な処理手順を図22のフローチャートに示す。ステップS330からS333によりLUT管理テーブルを参照しながらグループ内の全てのLUTを単独で圧縮し、図25のようなリストAを作成する。リストAには各LUTのIDとそのLUTを単独圧縮した場合のデータ量を処理した順に登録する。
次に図21に戻って、ステップS351でリストAの項目を単独圧縮のデータ量が大きい順に並び替える。次にステップS352が実行される。
ステップS352の詳細な処理手順を図23のフローチャートに示す。DRAMに確保した、リストAにおける対象LUTの番号(ただし1から始まる)を示す変数eに初期値1を代入する(S300)。変数eの値に基づいてグループ内の最後のLUTまで処理が終えたか判定する(S301)。終えていなければ、リストA中のe番目のLUTを、処理の対象となるLUT(対象LUT)として選択する(S302)。なお、対象LUTは、たとえば所定のアドレスに対象LUTのIDを記憶しておくことで特定できる。この例ではそれを単に対象LUTという。そしてLUT管理テーブルを参照し、対象LUTのIDに対応する状態値を読み取る。状態値が−1であれば、対象LUTは単独圧縮LUTである。もしそうであれば、リストAに登録されているLUTのうち、現在の対象LUTの次のLUTを、新たな対象LUTとする(S315)。
ステップS303において、状態値が−1以外、すなわち単独圧縮LUTでなければ、対象LUTの次にリストAに登録されているLUTを参照LUTとする。すなわちリストAにおける参照LUTの番号を示す変数e'に、変数eの値に1加算した値を代入する(S304)。その番号がリストAの上限を越えていなければ(S305−Y)、リストA中で変数e'で示されるLUTを参照LUTとする(S306)。参照LUTも対象LUTと同じく、DRAM等の所定の領域にそのIDを保存することで、特定可能である。
次に参照LUTが差分圧縮LUTであるかを、LUT管理テーブルを参照して参照LUTに対応する状態値に基づいて判定する(307)。状態値が0,−1以外であれば差分圧縮LUTである。差分圧縮LUTであれば、現在の参照LUTの次にリストAに登録されているLUTを新たな参照LUTとする(S309)。一方差分圧縮LUTでなけれれば対象LUTと参照LUTの差分圧縮LUTを作成する(S308)。作成した差分圧縮LUTは、たとえば対象LUTのIDと参照LUTのIDとに関連づけて保存される。参照LUTがリストAの最後のLUTになるまで上記の処理を繰り返す(S305)。繰り返しにより、ひとつの対象LUTに対して、その対象LUTよりも単独圧縮した場合のサイズが小さいすべてのLUTを参照LUTとした差分圧縮LUTが得られる。
上記の処理で作成した差分圧縮LUTの中からサイズが最小の差分圧縮LUTを最小差分圧縮LUTとして選択する(S310)。選択されていない差分LUTは削除される。選択とは、たとえば選択した差分圧縮LUTのアドレスを、選択したLUTを示す特定のメモリ領域に保存することで実現できる。次に最小差分圧縮LUTのサイズと対象LUTの単独圧縮LUTのサイズとを比較する(S311)。差分圧縮LUTのデータ量の方が小さい場合は、その差分圧縮LUTを、対象LUTの圧縮LUTとして格納することに決定する。その場合、LUT管理テーブルにおける対象LUTについて、ステップS310で選択した最小差分圧縮LUTのアドレスをアドレス欄に書き込み、最小差分圧縮LUTの作成に用いた参照LUTのIDを状態値欄に書き込む(S313)。そして、その差分圧縮LUTの参照LUTを単独圧縮LUTとすることに決定する。そこでLUT管理テーブルの参照LUTについて、その単独圧縮LUTのアドレスをアドレス欄に、−1を状態値欄に書き込む(S314)。このように、差分圧縮LUTの状態値は参照LUTのIDであり、単独圧縮LUTの状態値は−1が書き込まれる。
一方、最小差分圧縮LUTのサイズが対象LUTの単独圧縮LUTのサイズより大きいか等しい場合は、対象LUTを単独圧縮LUTとすることに決定する。その場合、LUT管理テーブルの対象LUTについて、その状態値を−1にする。また、対象LUTの単独圧縮LUTのアドレスをアドレス欄に書き込む(S312)。単独圧縮LUTのアドレスは、リストAに登録されている。
ステップS301からS315の処理を対象LUTがリストAの最後から2番目のLUTになるまで繰り返す。最後に、完成したLUT管理テーブルと、選択された方式で圧縮された圧縮LUTとを保存する。なおLUT管理テーブルに含まれる圧縮LUTのアドレスは、圧縮LUTを特定する情報であれば、ファイル名など他の情報であっても良い。
<復元処理>
本手法により変換されたLUTを復元するには、どのLUTが差分LUTでその参照LUTがどれであるかを示す情報が必要であるため、LUTの圧縮データとともに図24のLUT管理テーブルも格納し、圧縮LUTを復号する装置に対して渡す必要がある。図40に復元処理手順を示す。印刷設定が指示されると色変換処理に使用する復元すべきLUT(着目LUT)が確定する(S4001)。LUT管理テーブルにおける着目LUTの状態値が0または−1であれば(S4003−Y)、着目LUTは単独圧縮LUTであるので、復号することで復元されている(S4002)。LUT管理テーブルにおける着目LUTの状態値が0でも−1でもなければ(S4003−N)、着目LUTは差分圧縮LUTであるので、その状態値をIDとするLUTを参照LUTとしてLUT管理テーブルから取得し(S4004)、単独圧縮されている参照LUTを復号する(S4005)。参照LUTは単独圧縮LUTであるので復号によって復元でき、差分圧縮LUTである着目LUTを復号して、それらを併合する(S4006)ことで復元される。LUT復元処理では第3の実施形態で示した併合処理と同じ処理を使用する。
以上のようにして、対象LUTが単独圧縮LUTである場合、および、参照LUTが差分圧縮LUTである場合には、対象LUTを差分圧縮LUTとしない。このため、2段階の差分を求めた場合に発生する可能性のある差分のループを防止できる。また、復元時の処理を簡素にすることができる。
さらに、単独圧縮LUTのサイズと差分圧縮LUTのサイズとを比較し、より小さい方を選択しているため、いずれか一方の方法(単独圧縮または差分圧縮)ですべてのLUTを圧縮する場合に比べて、圧縮率を高めることができる。上記の手順により、最適に近い結果を簡便に得ることができる。
[第3実施形態の変形例]
より最適に近い結果を得るためには図28のフローチャートに示す手順によりLUTの組み合わせを選択する処理を行う。なお、この処理において使用するLUT管理テーブルは図32に示すように状態値とアドレスとともに単独圧縮時のデータ量も格納する。初期状態ではLUT管理テーブルの状態値はすべて0にする。図28において、まず差分圧縮LUTと単独圧縮LUTのデータ量の差のリストB(図33)を作成し(S400)、リストBをデータ量でソートする(S401)。そしてリストBを参照して図32のLUT管理テーブルを作成する(S402)。最後に、LUT管理テーブルを参照して、各LUTを圧縮する(S403)。ただし、リストBを作成する段階で各LUTの単独圧縮LUTと差分圧縮LUTは作成されている。したがってそれを保存しておけば、ステップS403で行うべきは、保存された圧縮LUTから条件に適合するLUTを選択してLUT管理テーブルに登録するだけである。
ステップS400の詳細な処理手順を図29のフローチャートに示す。変数eは対象LUTのIDであり、変数e'は参照LUTのIDである。変数hはリストBにおけるレコードの番号を示す。まず変数e,hに、初期値として1を代入する(S440)。そして以下の処理をすべてのLUTについて繰り返す(S441−Y)。まず対象LUTとして変数eの値をIDとするLUTを選択する(S442)。そして対象LUTの単独圧縮LUTを作成する(S443)。単独圧縮LUTのサイズは保存しておく必要がある。単独圧縮LUT自体は保存しておくことが望ましいが、いったん廃棄してもよい。続いて、グループ内の対象LUT以外のLUTを参照LUTとする差分圧縮LUTを、IDの小さな参照LUTから順に作成する(S447,S448)。そして、保存されている対象LUTの単独圧縮LUTのサイズから、ステップS448で作成した差分圧縮LUTのサイズを差し引いた値を計算し、その値を、リストBの変数hで指定される項目のデータ量差欄に登録する(S449)。すなわち、単独圧縮LUTの方が大きければ差の値は正となる。このとき、対応する対象LUTのIDと参照LUTのIDも、LUTのサイズ差に関連づけてリストBに登録しておく。
これを、グループ内の全てのLUTについて繰り返し行う。すなわち、グループ内のすべての単独圧縮LUTと、全ての組み合わせの差分圧縮LUTを作成し、それぞれの差分圧縮LUTの対象LUTを単独で圧縮した場合とのデータ量の差を算出する。その差と、対象LUTと参照LUTのIDとを関連づけて登録した図33のようなリストBを作成する。リストBの項目数はグループ内のLUTの数がEであれば、E*(E−1)となる。
図28に戻って、次にリストBの項目をデータ量差の大きい順に並び替えを行う(S401)。並び替え後のリストBの順に差分圧縮を行うLUTおよびその参照LUTを決定する(S402)。ステップS402のLUT管理テーブルの作成の詳細な処理手順を図30のフローチャートに示す。図30において変数eはリストBにおける、1から順に付した項目の番号を示す。図30の手順は変数eの値を増加させてリストBを走査しつつ行われる。ステップS471ではリストBの全体について処理を終えたか判定する。変数eで示されるリストBの項目に登録されたデータ量差が0より大きければ(すなわち単独圧縮LUTの方が大きければ)、変数eで示されるリストBの項目の対象LUT欄に登録されたIDを、対象LUTとする。そして、LUT管理テーブルを参照し、対象LUTの圧縮方式が未決定であるか、すなわち状態値が0であるか判定する。0でなければ既に差分圧縮LUTまたは単独圧縮LUTとすることが決定済みなので、ステップS479へ分岐して、リストBにおいて着目する項目を次に進める。
対象LUTの圧縮方式が決定されていなければ、変数eで示されるリストBの参照LUTの欄の値を、参照LUTのIDとして選択する(S475)。そしてLUT管理テーブルを参照して、その参照LUTが差分圧縮LUTであるか、すなわち状態値が0または−1以外であるか判定する(S476)。参照LUTが差分圧縮LUTでなければ、対象LUTの圧縮率は、その参照LUTを用いた差分圧縮LUTとして圧縮する場合にもっとも高くなる。したがって、LUT管理テーブルにおける対象LUTの状態値には参照LUTのIDを書き込む(S478)。次にLUT管理テーブルにおける参照LUTの状態値には単独圧縮を示す−1を書き込む(S479)。以上を、リストB全体について繰り返す。この結果、LUT管理テーブルには、状態値が書き込まれる。ただし、図30の処理では、状態値が0のまま残されるLUTもある。図30の処理が終了した段階で状態値が0であるLUTは、圧縮方法として差分圧縮が選択されなかったLUTであるので、単独圧縮される。
ここでも第3実施形態と同様に、差分圧縮LUTとする場合は参照LUTのIDを状態値とし、単独圧縮LUTとする場合は−1を状態値とする。またここでも第3実施形態と同様に参照LUTとして使用されたLUTを差分圧縮LUTとしないことにより差分のループの発生を防止するとともに、復元時の処理を簡素にすることが達成される。
最後にステップS403により状態値が0または−1のLUTを単独圧縮し、それ以外のLUTを、状態値で示されるIDを持つLUTを参照LUTとして差分圧縮する。ステップS403の詳細な処理手順を図31のフローチャートに示す。差分圧縮したLUTのアドレスは、LUT管理テーブルのアドレス欄に登録される。なお、図29の手順において作成した単独圧縮LUTおよび差分圧縮LUTそれぞれを、対象LUTおよび参照LUTと関連づけて保存しておけば、それらを図31のステップS483およびS484で使用することができる。
<復元処理>
本手法により変換されたLUTを復元するには、どのLUTが差分LUTでその参照LUTがどれであるかを示す情報が必要であるため、LUTの圧縮データとともに図32のLUT管理テーブルから圧縮LUTデータ量を削除したLUT管理テーブルも格納し、圧縮LUTを復号する装置に対して渡す必要がある。復元処理は第3実施形態の復元処理と同じである。
[第4実施形態]
第4の実施形態は第1の実施形態と第2の実施形態の手法を効果的に組み合わせたものである。第2の手法で縮小LUTおよび差分テーブルを作成し、格子点数が2になる以前であってもその処理を停止する。そうして残った格子点数が2以上の縮小LUTに対して第1の実施形態の手法で全軸方向差分をとる。こうして得られた、全軸方向差分化された縮小LUTと差分テーブルとを圧縮する。
あるいは、縮小LUTに対して全軸方向差分をとり、差分データとともに圧縮したデータ量と、縮小LUTをさらに一段階縮小して、その差分データと縮小LUTの全軸方向差分をとったLUTを圧縮したデータ量とを比較する。そして、縮小を進めた場合にデータ量が低減されない場合には、LUTをさらに一段階縮小する前の状態で、全軸方向差分化された縮小LUTと差分テーブルとを圧縮する。低減された場合には、上記処理を繰り返す、データ量がより小さくなる限り繰り返す。こうすることで、第1の手法と第2の手法の最適な組み合わせを得ることができる。
以上の手順によりより圧縮率を向上させることができる。
[第5実施形態]
第5の実施形態は、第1の実施形態と第3の実施形態の手法を効果的に組み合わせたものである。第3の実施形態の手法を3軸方向差分処理を行ったLUTに対して処理を行う。まず、全てのLUTに対して第1の実施形態で示した3軸方向差分処理を行う。そして3軸方向差分が施されたLUTに対して第3の実施形態に示したLUT間差分を行う。つまりLUT間差分における対象LUT、参照LUTともに3軸方向差分処理を行ったLUTを処理対象にする。
第1の実施形態の説明で示した通り、第1の手法を実施してもLUTのデータ量は変化せず、格子点値が差分された値に変化するだけである。また第3の実施形態はLUTの格子点値の内容に全く関係なく実施可能である。そのため、第1の実施形態のLUT変換方法と、第3の実施形態のLUT変換方法とを全く変更することなく適応することができる。すなわち、各方法を直列的に実行するだけでよい。ただし、圧縮処理は、両方の変換が完了した後に行われる。第3の手法において単独で圧縮を行う場合に第1の手法の3軸方向差分処理を行う。
本実施形態では、3軸方向差分処理を行うことによりグループに属する複数のLUT間の類似性が高まる。そのため第3の実施形態による手法がより効果的となる。
[第6実施形態]
第6の実施形態は第2の実施形態と第3の実施形態の手法を効果的に組み合わせたものである。まず全てのLUTに対して第2の手法による変換を施し、LUTを縮小LUTと差分データにする。第2の手法が施されたLUTに対して第3の手法による効果的なLUT間の差分を取る。第2の手法が施されてもデータ量は変化しないため、第2の手法を施す前のLUTに対するのと全く同様な方法で第3の手法を適応することができる。第2の手法により縮小LUTと差分データに変換されたLUTデータの間で第3の手法で示した手順で差分にする。
なお、第3の実施形態の変換は、第2の実施形態の変換によってえられた縮小LUTのみならず、差分テーブルについて適用することもできる。
以上の手順により一層圧縮率を向上させることが可能となる。
なお本発明は、複数の機器(例えばホストコンピュータ、インタフェイス機器、リーダ、プリンタなど)から構成されるシステムに適用しても、一つの機器からなる装置(例えば、複写機、ファクシミリ装置など)に適用してもよい。また本発明の目的は、前述の実施形態の機能を実現するプログラムコードを記録した記録媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータが記憶媒体に格納されたプログラムコードを読み出し実行することによっても達成される。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコード自体およびプログラムコードを記憶した記憶媒体は本発明を構成することになる。
また、本発明には、プログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム(OS)などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた場合についても、本発明は適用される。その場合、書き込まれたプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される。
3軸LUTを模式的に示した図 3軸LUTを2次元的に展開した図 3軸LUTを1次元テーブルに展開した図 複数の出力データを格納する3軸LUTを1次元テーブルに展開した図 第1実施形態のメインフローチャート LUTの圧縮手順のメインフローチャート 第1実施形態の変換処理の部分処理のフローチャート 第1実施形態の変換処理の部分処理のフローチャート 第1実施形態の変換処理の部分処理のフローチャート 格子点値の差分処理による変化を示す図 第2実施形態のメインフローチャート 第2実施形態の変換処理の部分処理のフローチャート 第2実施形態の変換処理の部分処理のフローチャート 第2実施形態の第1段階の縮小LUTを示す図 第2実施形態の第1段階の差分データを示す図 第2実施形態の第2段階の縮小LUTを示す図 第2実施形態の第2段階の差分データを示す図 第2実施形態の第3段階の縮小LUTを示す図 第2実施形態の第3段階の差分データを示す図 第2実施形態の圧縮対象となるデータを示す図 第2実施形態の圧縮対象となるデータを示す図 第3実施形態の第1処理のメインフローチャート 第3実施形態の第1処理の部分フローチャート 第3実施形態の第1処理の部分フローチャート 第1処理のLUT管理テーブルを示す図 第1処理のリストAを示す図 3軸LUTのLUT間差分を1次元テーブルに展開した図 複数の出力データを格納する3軸LUTのLUT間差分を1次元テーブルに展開した図 第3実施形態の第2処理のメインフローチャート 第3実施形態の第2処理の部分フローチャート 第3実施形態の第2処理の部分フローチャート 第3実施形態の第2処理の部分フローチャート 第2処理のLUT管理テーブルを示す図 第2処理のリストAを示す図 コンピュータのブロック図 第1実施形態におけるLUTの復元手順のメインフローチャート LUTの復号手順のメインフローチャート 第1実施形態の復元処理の部分フローチャート 第1実施形態の復元処理の部分フローチャート 第1実施形態の復元処理の部分フローチャート 第2実施形態の復元処理のフローチャート 第3実施形態の復元処理のフローチャート

Claims (11)

  1. 変換テーブルを圧縮して記憶媒体に格納するための変換テーブル圧縮方法であって、
    1の変換テーブルから、該第1の変換テーブルを構成する格子点を間引いて第2の変換テーブルを作成する間引きステップと、
    記間引きステップにおいて前記第1の変換テーブルから間引かれた格子点の値と、該間引かれた格子点に対応して前記第2の変換テーブルから求められた補間値との差分を求め、前記間引かれた格子点に対応する階層差分テーブルを作成する階層差分作成ステップと、
    記第2の変換テーブルと前記階層差分テーブルとを連結した連結データを圧縮し、圧縮データを作成する圧縮ステップと、
    記圧縮データを記録媒体に格納する格納ステップと
    を有することを特徴とする変換テーブル圧縮方法。
  2. 変換テーブルを圧縮して記憶媒体に格納するための変換テーブル圧縮方法であって、
    1の変換テーブルに格納されているデータと、前記第1の変換テーブルと軸数、各軸の格子点数、出力データ数が同じである第2の変換テーブルに格納されているデータとの差分データを求めてテーブル差分テーブルを作成するテーブル差分作成ステップと、
    記テーブル差分テーブルを圧縮して圧縮データを生成する圧縮ステップと、
    前記第1の変換テーブルが前記第2の変換テーブルとのテーブル差分テーブルに変換されていることを示す情報と前記圧縮データと記録媒体に格納する格納ステップと
    を有することを特徴とする変換テーブル圧縮方法。
  3. 変換テーブルを圧縮して記憶媒体に格納するための変換テーブル圧縮方法であって、
    1の変換テーブルから、該第1の変換テーブルを構成する格子点を間引いて第2の変換テーブルを作成する間引きステップと、
    記間引きステップにおいて前記第1の変換テーブルから間引かれた格子点の値と、該間引かれた格子点に対応して前記第2の変換テーブルから求められた補間値との差分を求め、前記間引かれた格子点に対応する階層差分テーブルを作成する階層差分作成ステップと、
    記第2の変換テーブルと前記階層差分テーブルとを連結した連結データを作成する連結ステップと、
    記連結ステップにより作成された第1の連結データから、該第1の連結データと構成が同じである第2の連結データとの差分データを求めてテーブル間差分テーブルを生成するテーブル差分生成ステップと、
    前記テーブル差分テーブルを圧縮して圧縮データを生成する圧縮ステップと、
    前記第1の連結データが、前記第2の連結データとのテーブル間差分テーブルに変換されていることを示す情報と前記圧縮データと記録媒体に格納するステップと
    を有することを特徴とする変換テーブル圧縮方法。
  4. 変換テーブルを圧縮して記憶媒体に格納するための変換テーブル圧縮方法であって、
    複数の変換テーブルについて、変換テーブルに格納されているデータから、前記変換テーブルの入力空間を規定する複数の軸それぞれの一定方向について隣接する格子点値間の差分値を求めて、軸差分テーブルを作成する軸差分作成ステップと、
    前記軸差分作成ステップにより作成された軸差分テーブルのうち、第1の変換テーブルの軸差分テーブルと、前記第1の変換テーブルと構成が同じである第2の変換テーブルの軸差分テーブルとの差分データを求めてテーブル間差分テーブルを作成するテーブル差分作成ステップと、
    記テーブル間差分テーブルを圧縮して圧縮データを作成する圧縮ステップと、
    記第1の変換テーブルが第2の変換テーブルとの差分データに変換されていることを示す情報と前記圧縮データとを記録媒体に格納する格納ステップと
    を有することを特徴とする変換テーブル圧縮方法。
  5. 変換テーブルを圧縮して記憶媒体に格納するための変換テーブル圧縮方法であって、
    1の変換テーブルから、該第1の変換テーブルを構成する要素を間引いて第2の変換テーブルを作成する間引きステップと、
    記間引きステップにおいて前記第1の変換テーブルから間引かれた格子点の値と、該間引かれた格子点に対応して前記第2の変換テーブルから求められた補間値との差分を求め、前記間引かれた格子点に対応する階層差分テーブルを作成する階層差分作成ステップと、
    記第2の変換テーブルに格納されているデータから、前記第2の変換テーブルの入力空間を規定する複数の軸それぞれの一定方向について隣接する格子間の差分値を求めて、軸差分テーブルを作成する軸差分作成ステップと、
    記軸差分テーブルと前記階層差分テーブルとを連結して連結データとするステップと、
    前記連結データを圧縮して圧縮データを作成する圧縮ステップと、
    記圧縮データを記録媒体に格納する格納ステップと
    を有することを特徴とする変換テーブル圧縮方法。
  6. 請求項1乃至のいずれか1項に記載の方法をコンピュータにより実行させるためのプログラム。
  7. 変換テーブルを圧縮して記憶媒体に格納するための変換テーブル圧縮装置であって、
    第1の変換テーブルから、該第1の変換テーブルを構成する格子点を間引いて第2の変換テーブルを作成する間引き手段と、
    前記間引き手段により前記第1の変換テーブルから間引かれた格子点の値と、該間引かれた格子点に対応して前記第2の変換テーブルから求められた補間値との差分を求め、前記間引かれた格子点に対応する階層差分テーブルを作成する階層差分作成手段と、
    前記第2の変換テーブルと前記階層差分テーブルとを連結した連結データを圧縮し、圧縮データを作成する圧縮手段と、
    前記圧縮データを記録媒体に格納する格納手段と
    を有することを特徴とする変換テーブル圧縮装置。
  8. 変換テーブルを圧縮して記憶媒体に格納するための変換テーブル圧縮装置であって、
    第1の変換テーブルに格納されているデータと、前記第1の変換テーブルと軸数、各軸の格子点数、出力データ数が同じである第2の変換テーブルに格納されているデータとの差分データを求めてテーブル差分テーブルを作成するテーブル差分作成手段と、
    前記テーブル差分テーブルを圧縮して圧縮データを生成する圧縮手段と、
    前記第1の変換テーブルが前記第2の変換テーブルとのテーブル差分テーブルに変換されていることを示す情報と前記圧縮データとを記録媒体に格納する格納手段と
    を有することを特徴とする変換テーブル圧縮装置。
  9. 変換テーブルを圧縮して記憶媒体に格納するための変換テーブル圧縮装置であって、
    第1の変換テーブルから、該第1の変換テーブルを構成する格子点を間引いて第2の変換テーブルを作成する間引き手段と、
    前記間引き手段により前記第1の変換テーブルから間引かれた格子点の値と、該間引かれた格子点に対応して前記第2の変換テーブルから求められた補間値との差分を求め、前記間引かれた格子点に対応する階層差分テーブルを作成する階層差分作成手段と、
    前記第2の変換テーブルと前記階層差分テーブルとを連結した連結データを作成する連結手段と、
    前記連結手段により作成された第1の連結データから、該第1の連結データと構成が同じである第2の連結データとの差分データを求めてテーブル間差分テーブルを生成するテーブル差分生成手段と、
    前記テーブル間差分テーブルを圧縮して圧縮データを生成する圧縮手段と、
    前記第1の連結データが、前記第2の連結データとのテーブル間差分テーブルに変換されていることを示す情報と前記圧縮データとを記録媒体に格納する手段と
    を有することを特徴とする変換テーブル圧縮装置。
  10. 変換テーブルを圧縮して記憶媒体に格納するための変換テーブル圧縮装置であって、
    複数の変換テーブルについて、変換テーブルに格納されているデータから、前記変換テーブルの入力空間を規定する複数の軸それぞれの一定方向について隣接する格子点値間の差分値を求めて、軸差分テーブルを作成する軸差分作成手段と、
    前記軸差分作成手段により作成された軸差分テーブルのうち、第1の変換テーブルの軸差分テーブルと、前記第1の変換テーブルと構成が同じである第2の変換テーブルの軸差分テーブルと、の差分データを求めてテーブル間差分テーブルを作成するテーブル差分作成手段と、
    前記テーブル間差分テーブルを圧縮して圧縮データを作成する圧縮手段と、
    前記第1の変換テーブルが第2の変換テーブルとの差分データに変換されていることを示す情報と前記圧縮データとを記録媒体に格納する格納手段と
    を有することを特徴とする変換テーブル圧縮装置。
  11. 変換テーブルを圧縮して記憶媒体に格納するための変換テーブル圧縮装置であって、
    第1の変換テーブルから、該第1の変換テーブルを構成する要素を間引いて第2の変換テーブルを作成する間引き手段と、
    前記間引き手段により前記第1の変換テーブルから間引かれた格子点の値と、該間引かれた格子点に対応して前記第2の変換テーブルから求められた補間値との差分を求め、前記間引かれた格子点に対応する階層差分テーブルを作成する階層差分作成手段と、
    前記第2の変換テーブルに格納されているデータから、前記第2の変換テーブルの入力空間を規定する複数の軸それぞれの一定方向について隣接する格子間の差分値を求めて、軸差分テーブルを作成する軸差分作成手段と、
    前記軸差分テーブルと前記階層差分テーブルとを連結して連結データとする手段と、
    前記連結データを圧縮して圧縮データを作成する圧縮手段と、
    前記圧縮データを記録媒体に格納する格納手段と
    を有することを特徴とする変換テーブル圧縮装置。
JP2006043160A 2006-02-20 2006-02-20 変換テーブル圧縮方法およびプログラムおよび変換テーブル圧縮装置 Active JP4651108B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2006043160A JP4651108B2 (ja) 2006-02-20 2006-02-20 変換テーブル圧縮方法およびプログラムおよび変換テーブル圧縮装置
US11/676,015 US8363292B2 (en) 2006-02-20 2007-02-16 Conversion table compression method and program
US13/724,726 US8797616B2 (en) 2006-02-20 2012-12-21 Conversion table compression method and program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006043160A JP4651108B2 (ja) 2006-02-20 2006-02-20 変換テーブル圧縮方法およびプログラムおよび変換テーブル圧縮装置

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2010234913A Division JP5025779B2 (ja) 2010-10-19 2010-10-19 変換テーブル圧縮方法、装置、プログラムおよび変換テーブル復元装置、プログラム

Publications (3)

Publication Number Publication Date
JP2007221720A JP2007221720A (ja) 2007-08-30
JP2007221720A5 JP2007221720A5 (ja) 2009-04-09
JP4651108B2 true JP4651108B2 (ja) 2011-03-16

Family

ID=38427862

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006043160A Active JP4651108B2 (ja) 2006-02-20 2006-02-20 変換テーブル圧縮方法およびプログラムおよび変換テーブル圧縮装置

Country Status (2)

Country Link
US (2) US8363292B2 (ja)
JP (1) JP4651108B2 (ja)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100800699B1 (ko) * 2006-02-01 2008-02-01 삼성전자주식회사 컬러 룩업 테이블 생성 및 이를 이용한 컬러 변환 방법
JP2008211310A (ja) * 2007-02-23 2008-09-11 Seiko Epson Corp 画像処理装置および画像表示装置
JP2009080724A (ja) * 2007-09-27 2009-04-16 Panasonic Corp 画像処理装置
KR101445663B1 (ko) 2007-11-16 2014-09-30 삼성전자주식회사 룩-업 테이블 값들을 압축 및 복원하는 방법
JP5036526B2 (ja) * 2007-12-27 2012-09-26 キヤノン株式会社 変換テーブル圧縮方法およびプログラム
US8294953B2 (en) * 2008-05-18 2012-10-23 Hewlett-Packard Development Company, L.P. Lossless compression of color look-up table via hierarchical differential encoding or cellular interpolative prediction
JP5958760B2 (ja) * 2012-11-21 2016-08-02 富士ゼロックス株式会社 データ変換装置、データ復元装置、画像形成装置、画像形成システム、データ変換プログラムおよびデータ復元プログラム
US9621764B2 (en) 2013-07-31 2017-04-11 Hewlett-Packard Development Company, L.P. Printer cartridge and memory device containing a compressed color table
US9532019B2 (en) * 2014-06-20 2016-12-27 Sz Zunzheng Digital Video Co., Ltd Color grading monitor, color grading system and color grading method thereof
WO2016082173A1 (zh) * 2014-11-28 2016-06-02 深圳市尊正数字视频有限公司 调色监视器及实时调色方法
NZ728743A (en) 2015-05-15 2019-02-22 Hewlett Packard Development Co Printer cartridges and memory devices containing compressed multi-dimensional color tables
WO2017059043A1 (en) 2015-09-30 2017-04-06 Dolby Laboratories Licensing Corporation 2d lut color transforms with reduced memory footprint
EP3459236B1 (en) * 2016-07-08 2021-04-21 Hewlett-Packard Development Company, L.P. Color look up table compression
US9992382B2 (en) 2016-07-08 2018-06-05 Hewlett-Packard Development Company, L.P. Color table compression
US10674043B2 (en) 2016-07-08 2020-06-02 Hewlett-Packard Development Company, L.P. Color table compression
US11170481B2 (en) * 2018-08-14 2021-11-09 Etron Technology, Inc. Digital filter for filtering signals
JP2020102748A (ja) * 2018-12-21 2020-07-02 セイコーエプソン株式会社 色変換テーブル作成方法、色変換テーブル作成装置およびコンピュータープログラム
JP2021158398A (ja) * 2020-03-25 2021-10-07 セイコーエプソン株式会社 教師データの作成方法、色予測モデル作成装置および色予測モデル作成方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1117971A (ja) * 1997-06-24 1999-01-22 Canon Inc 画像処理装置およびその方法、データ処理方法、並びに、記録媒体
JP2000341545A (ja) * 1999-05-28 2000-12-08 Minolta Co Ltd データテーブル校正装置および方法
JP2001186367A (ja) * 1999-12-27 2001-07-06 Seiko Epson Corp 色変換テーブルの製造方法、並びに当該製造方法によって生成された色変換テーブル、製造装置及び記録媒体
JP2002209114A (ja) * 2000-12-28 2002-07-26 Canon Inc 色変換テーブル格納方法および画像処理装置
JP2004023739A (ja) * 2002-06-20 2004-01-22 Canon Inc 色変換テーブルの作成方法およびその装置
JP2005065147A (ja) * 2003-08-20 2005-03-10 Seiko Epson Corp 画像処理装置、画像処理システム、圧縮画像処理用データ生成装置、画像処理方法、圧縮画像処理用データ生成方法および画像処理プログラム

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5816180B2 (ja) 1977-04-01 1983-03-30 大日本スクリ−ン製造株式会社 メモリ装置における信号補間方法
JPS5549279A (en) 1978-10-05 1980-04-09 Sharp Corp Printing method at dot matrix type printer
US5583656A (en) * 1992-12-31 1996-12-10 Eastman Kodak Company Methods and apparatus for attaching compressed look-up table (LUT) representations of N to M-dimensional transforms to image data and for processing image data utilizing the attached compressed LUTs
US5680129A (en) * 1995-07-18 1997-10-21 Hewlett-Packard Company System and method for lossless image compression
US6453332B1 (en) * 1999-08-20 2002-09-17 Winbond Electronics Corp. Method and apparatus for performing plural matrix multiplication operations
US6616262B2 (en) * 2000-08-11 2003-09-09 Canon Kabushiki Kaisha Image processing apparatus performing printer calibration
JP2003110869A (ja) * 2001-03-12 2003-04-11 Sharp Corp 画像処理装置、画像形成装置、画像処理方法、プログラム、および記録媒体
JP2003271945A (ja) * 2002-03-15 2003-09-26 Sony Corp 画像変換装置及び方法並びにロボット装置
KR100800699B1 (ko) * 2006-02-01 2008-02-01 삼성전자주식회사 컬러 룩업 테이블 생성 및 이를 이용한 컬러 변환 방법
US8526062B2 (en) * 2008-04-14 2013-09-03 Xerox Corporation Color lookup table compression
US8294953B2 (en) * 2008-05-18 2012-10-23 Hewlett-Packard Development Company, L.P. Lossless compression of color look-up table via hierarchical differential encoding or cellular interpolative prediction

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1117971A (ja) * 1997-06-24 1999-01-22 Canon Inc 画像処理装置およびその方法、データ処理方法、並びに、記録媒体
JP2000341545A (ja) * 1999-05-28 2000-12-08 Minolta Co Ltd データテーブル校正装置および方法
JP2001186367A (ja) * 1999-12-27 2001-07-06 Seiko Epson Corp 色変換テーブルの製造方法、並びに当該製造方法によって生成された色変換テーブル、製造装置及び記録媒体
JP2002209114A (ja) * 2000-12-28 2002-07-26 Canon Inc 色変換テーブル格納方法および画像処理装置
JP2004023739A (ja) * 2002-06-20 2004-01-22 Canon Inc 色変換テーブルの作成方法およびその装置
JP2005065147A (ja) * 2003-08-20 2005-03-10 Seiko Epson Corp 画像処理装置、画像処理システム、圧縮画像処理用データ生成装置、画像処理方法、圧縮画像処理用データ生成方法および画像処理プログラム

Also Published As

Publication number Publication date
US20070195342A1 (en) 2007-08-23
US8363292B2 (en) 2013-01-29
US8797616B2 (en) 2014-08-05
JP2007221720A (ja) 2007-08-30
US20130114094A1 (en) 2013-05-09

Similar Documents

Publication Publication Date Title
JP4651108B2 (ja) 変換テーブル圧縮方法およびプログラムおよび変換テーブル圧縮装置
JP5267255B2 (ja) 画像処理装置、画像処理方法及びプログラム
JP2008193529A (ja) 走査変換装置及び走査変換方法
JP4724413B2 (ja) データ分類方法
US10540811B2 (en) Radial gradient module
JP5036526B2 (ja) 変換テーブル圧縮方法およびプログラム
JP5025779B2 (ja) 変換テーブル圧縮方法、装置、プログラムおよび変換テーブル復元装置、プログラム
JP2014002591A (ja) 画像処理装置、画像処理方法、コンピュータプログラム
JP2010220075A (ja) 画像形成装置、画像データ処理方法及びプログラム
JP4468270B2 (ja) 正規化方法および多次元補間装置およびプログラム
JP4136825B2 (ja) 画像処理装置および画像処理方法およびコンピュータが読み取り可能なプログラムを格納した記憶媒体およびプログラム
JP3705316B2 (ja) 印刷制御装置及び印刷制御方法並びに記録媒体
JP4131205B2 (ja) 画像処理装置及び画像処理をコンピュータに実行させる画像処理プログラム
JP4810615B2 (ja) 多次元補間装置、多次元補間方法、及びコンピュータプログラム
JP4869890B2 (ja) 画像処理装置及びプログラム
JP2005348421A (ja) 印刷制御装置及び印刷制御方法並びに記録媒体
US20190371013A1 (en) Radial Gradient Module
WO2020203191A1 (ja) 圧縮装置、圧縮方法、および圧縮プログラム
JP4411230B2 (ja) 色変換装置及びその制御方法、並びにプログラム
JP4584805B2 (ja) 画像処理装置、画像処理方法および画像処理プログラム
JP5040874B2 (ja) 印刷装置のための制御装置、印刷装置、及びコンピュータプログラム
JP5605094B2 (ja) 画像処理装置、画像処理方法、画像形成装置、プログラムおよび記録媒体
JP2011025478A (ja) 画像形成装置、画像形成方法、プログラムおよび記録媒体
JP2004112523A (ja) データ変換方法およびデータ変換装置
JP2005157514A (ja) 画像処理方法、画像処理装置、プログラム、記憶媒体

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090220

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090220

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100730

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100820

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101019

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: 20101210

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: 20101213

R150 Certificate of patent or registration of utility model

Ref document number: 4651108

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20131224

Year of fee payment: 3