(57)【要約】      （修正有）【課題】階層構造ポリシに従って画像を処理するカラー管理システムをサポートする方法およびデバイスを提供する。【解決手段】ポリシはポリシが複数のポリシレベルで組織化されるスキーマでモデリングすることができる。下位ポリシレベルにおけるポリシセッティングは高位ポリシレベルにおけるポリシセッティングをオーバーライドすることが可能であり、これは、ロックアウト機構で禁止することができる。ユーザインターフェースは、ユーザが一連のダイアログボックスによりポリシセッティングを構成する能力をサポートする。ダイアログボックスは、構成レベルに従って階層的に組織化され、構成レベルは、ポリシレベルに関連付けられる。ダイアログボックスは、ユーザによってカラー管理システムを構成する統合的手法を提供する。インターフェースがサポートされ、ポリシを構成するために、コンポーネントが入力をカラー管理システムに送ることを可能にする。【選択図】図３
2010231804.tif 000002
【特許請求の範囲】
【請求項１】
メモリに結合されたプロセッサと、
前記メモリに格納され、装置のカラー管理を行うために前記プロセッサにより実行可能な１つまたは複数のモジュールと、
を備えた装置であって、前記１つまたは複数のモジュールが、
階層的に互いに関連する複数のポリシレベルを含むように構造化され、前記ポリシレベルのそれぞれが１つまたは複数のポリシセッティングを有する、カラー管理ポリシを実施し、
選択された前記階層の前記ポリシレベルにおいて、前記１つまたは複数のポリシセッティングを構成するための入力を受け取り、
前記１つまたは複数のポリシセッティングに応じて、前記カラー管理ポリシを構成する、
ように構成された構成モジュールを備えることを特徴とする装置。
【請求項２】
前記階層の下位のポリシレベルにおける前記カラー管理のポリシセッティングが、前記階層の上位のポリシレベルにおけるポリシセッティングを書き換えるように構成可能なことを特徴とする請求項１に記載の装置。
【請求項３】
前記階層の上位のポリシレベルが、前記階層の下位のポリシレベルが前記階層の上位のポリシレベルにおけるポリシセッティングを書き換える能力を行使不能にするように構成可能なことを特徴とする請求項１に記載の装置。
【請求項４】
前記１つまたは複数のモジュールが、ユーザの入力を促し、前記入力に関連するユーザの応答を受け取り、前記カラー管理ポリシが構成されるように前記入力を前記構成モジュールへ伝達する、ように構成されたユーザインターフェイスを公開するように実行可能であることを特徴とする請求項１に記載の装置。
【請求項５】
前記１つまたは複数のモジュールが、アプリケーションとの協働により入力を受け取り、前記カラー管理ポリシが構成されるように前記入力を前記構成モジュールへ伝達する、ように構成されたアプリケーションプログラムインターフェイス（ＡＰＩ）を公開するように実行可能であることを特徴とする請求項１に記載の装置。
【請求項６】
前記構成モジュールが、さらに、
前記カラー管理ポリシに関連する第１のポリシセッティングを、前記複数のポリシレベルの第１のポリシレベルに適用し、
前記カラー管理ポリシに関連する第２のポリシセッティングを、前記第１のポリシレベルを書き換えるように構成された前記複数のポリシレベルの第２のポリシレベルに適用し、
前記第１のポリシレベルが、前記第１のポリシレベルを書き換える前記第２のポリシレベルの権限を禁止するか否かを決定し、
前記決定に基づいて前記第１のポリシセッティングを構成する、
ように構成されていることを特徴とする請求項１に記載の装置。
【請求項７】
前記構成モジュールが、さらに、カラー処理モジュールが前記カラー管理ポリシに応じた宛先に出力する画像を処理できるように、前記カラー管理ポリシを前記カラー処理モジュールに伝達するように構成されていることを特徴とする請求項１に記載の装置。
【請求項８】
前記カラー処理モジュールが、
前記カラー管理ポリシにより指定された作業領域に従って前記画像を処理し、
少なくとも１つのプロファイルおよび前記作業領域の値から変換表を構築して、前記画像を前記宛先に対応するカラースペースに変換する、
ように構成されていることを特徴とする請求項７に記載の装置。
【請求項９】
前記装置の前記１つまたは複数のモジュールが、前記カラー処理モジュールを含むことを特徴とする請求項８に記載の装置。
【請求項１０】
前記階層の前記複数のポリシレベルが、システムレベル、ユーザレベル、オペレーショナルレベル、プロファイルレベル、デバイスおよびコーデックレベル、およびアプリケーションプログラムインターフェース（ＡＰＩ）レベルからなることを特徴とする請求項１に記載の装置。
【請求項１１】
階層的に互いに関連する複数のポリシレベルを有するカラー管理ポリシを設定するための選択可能な複数の部分を有するカラー管理のユーザインターフェイスであって、前記部分のそれぞれが、前記複数のポリシレベルのひとつに対応する前記カラー管理ポリシの１つまたは複数のセッティングを設定するように選択可能であるような、前記ユーザインターフェイスを公開するステップと、
ぞれぞれの前記セッティングを設定するために、前記ユーザインターフェイスの前記部分により、ユーザの選択を受け取るステップと、
前記ユーザの選択に応じて前記カラー管理ポリシを設定するために、前記ユーザの選択を構成モジュールに伝達するステップと、
を含む、カラー管理システムの１つまたは複数のデバイスにより実行される方法。
【請求項１２】
前記ユーザインターフェイスにより、前記階層の上位のポリシレベルが、前記階層の下位のポリシレベルが前記階層の上位のポリシレベルにおけるポリシセッティングを書き換える能力を行使不能にするように設定可能なことを特徴とする請求項１１に記載の方法。
【請求項１３】
前記階層の前記複数のポリシレベルが、システムレベル、ユーザレベル、オペレーショナルレベル、プロファイルレベル、デバイスレベル、およびアプリケーションプログラムインターフェース（ＡＰＩ）レベルからなることを特徴とする請求項１１に記載の装置。
【請求項１４】
前記システムレベルにおける前記ユーザインターフェイスにより設定可能なカラー管理ポリシの設定が、少なくともカラー管理を有効化するか否かを制御することを特徴とする請求項１3に記載の方法。
【請求項１５】
前記ユーザレベルにおける前記ユーザインターフェイスにより設定可能なカラー管理ポリシの設定が、前記カラー管理のシステムの異なるユーザに、互いに影響を与えることなく、異なるカラー管理ポリシを設定できるようにすることを特徴とする請求項１3に記載の方法。
【請求項１６】
前記オペレーショナルレベルにおける前記ユーザインターフェイスにより設定可能なカラー管理ポリシの設定が、カラー管理システムにより実行されるオペレーションのタイプ次第でポリシセッティングを可能にし、かつ、
前記デバイスレベルにおける前記ユーザインターフェイスにより設定可能なカラー管理ポリシの設定が、デバイス固有のポリシセッティングの設定を可能にすることを特徴とする請求項１3に記載の方法。
【請求項１７】
カラー管理デバイスにより実行したときに、前記カラー管理システムにアプリケーションプログラムインターフェース（ＡＰＩ）を公開させる命令を格納した１つまたは複数のコンピュータ可読記憶媒体であって、前記アプリケーションプログラムインターフェースにより、
階層的に互いに関連する複数のポリシレベルを含む階層化されたカラー管理ポリシの前記ポリシセッティングを表わす入力をコンポーネントから受け取り、
前記入力に応じて構成モジュールにより前記複数のポリシレベルの１つまたは複数における前記カラー管理ポリシが設定されるように、前記入力を前記カラー管理デバイスの前記構成モジュールに伝達する、
操作が可能なことを特徴とする記憶媒体。
【請求項１８】
前記カラー管理ポリシが、前記階層の上位のポリシレベルが、前記階層の下位のポリシレベルが前記階層の上位のポリシレベルにおけるポリシセッティングを書き換える能力を行使不能にするか否かを制御することを特徴とする請求項１７に記載のコンピュータ可読記憶媒体。
【請求項１９】
前記コンポーネントが前記カラー管理デバイスで実行可能なアプリケーションであることを特徴とする請求項１７に記載のコンピュータ可読記憶媒体。
【請求項２０】
前記アプリケーションプログラムインターフェース（ＡＰＩ）により、さらに、
前記コンポーネントから、前記階層の前記複数のポリシレベルの１つまたは複数のポリシセッティングの現在値の要求を受け取り、
前記構成モジュールとの協働して要求された前記現在値を取得し、
要求された前記現在値を前記コンポーネントに伝達する、
操作が可能なことを特徴とする請求項１７に記載の記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、２００３年１０月１４日に出願された米国特許出願第１０／６８３，１５３号明細書、「Color Management System That Enables Dynamic Balancing of Performance with Flexibility」（整理番号００３７９７．００６９６）に関し、２００３年１１月１０日に出願された米国特許出願第１０／７０４，８３３号明細書、「System for Customer and Automatic Color Management Using Policy Controls」（整理番号００３７９７．００６９８）の優先権を主張する。これらは、参照によって本明細書に組み込まれる。
【０００２】
本発明は、コンピュータシステムのカラー管理技術に関し、具体的には、カラー管理の制御を提供する。
【背景技術】
【０００３】
従来の技術によってサポートされる１入力１出力のワークフローでは、カラー管理は、通常、必要ではなかった。画像は、通常、単一の出力デバイスに同調されるシアン、マゼンタ、黄、および黒（ＣＭＹＫ）のフォーマットなどのカラー表示を生成する単一のスキャナを使用して、専門オペレータによってスキャンされた。スポットカラーは、スポットインクを混合することによって、または見本ブックの標準的なＣＭＹＫ配合を使用することによって扱われた。精確なモニタ表示デバイスは、通常、利用可能ではなかった。システムは機能したが、その理由は、スキャナが生成したＣＭＹＫ値が出力デバイスに同調されて、１セットの数を扱う閉ループを形成したからである。
【０００４】
より最近では、入力デバイスおよび出力デバイスのタイプは、劇的に増加した。入力デバイスは、ハイエンドのドラムスキャナだけでなく、ハイエンドのフラットベッドスキャナ、デスクトップのフラットベッド、デスクトップのスライドスキャナ、およびデジタルカメラをも含む。出力デバイスは、無水インク、ソイインク、直接プレート印刷、およびハイファイカラーによるウェブおよびシートフィードプレスだけでなく、デジタルプルーファ、フレキソグラフィ、フィルムレコーダ、シルクスクリーナ、カラーコピー、レーザプリンタ、インクジェットプリンタ、およびさらには最終出力デバイスとして機能するモニタをも含む。入力デバイスおよび出力デバイスの多様性は、以前に議論された閉ワークフローのアプローチを非常に複雑にする。それゆえ、可能なワークフローは、入力デバイスから出力デバイスへの多対多マッピングに関連付けることができる。
【０００５】
その結果、入力デバイスから出力デバイスへの可能な変換の数は、潜在的に膨大となる。ｍ入力からｎ出力のワークフローでは、入力から出力へのｍ×ｎの異なる変換を必要とする可能性がある。入力デバイスおよび出力デバイスの多様性の増大と共に、入力から出力に望ましいカラー変換を提供するタスクは、容易に管理不可能となることがある。
【０００６】
カラー管理は、様々な入力デバイスおよび出力デバイスの組合せの間においてサポートすることができる様々なワークフローを管理するソリューションである。カラー管理は、通常、望ましいカラーの中間表現をサポートする。中間表現は、プロファイル接続空間（ＰＣＳ）と一般に呼ばれ、代替として作業域と呼ぶこともある。プロファイル接続空間の機能は、複数のデバイスからデバイス変換のハブとして作用することである。そのようなアプローチでは、ｍ×ｎリンクの問題は、ｍ＋ｎリンクに低減され、この場合、単に１つのリンクが、各デバイスに必要とされる。各リンクは、デバイスのカラー再生動作を有効に記述する。リンクは、デバイスプロファイルと一般に呼ばれる。デバイスプロファイルおよびプロファイル接続空間は、カラー管理システムにおける４つの枢要な構成要素のうちの２つである。
【０００７】
現行の国際カラーコンソーシアム（ＩＣＣ）の使用に基づくように、カラー管理システムの４つの基本的な構成要素は、プロファイル接続空間、１セットのプロファイル、カラー管理モジュール（ＣＭＭ）、およびレンダリングインテントである。プロファイル接続空間により、カラー管理システムは、カラーを再生するために使用される複数のデバイスの癖に依存せず、代わりに、そのカラーを実際に人が見る際のカラーを定義するＣＩＥＸＹＺカラースペースまたはＣＩＥ ＬＡＢカラースペースにおいて、明瞭な数値カラーを与えることが可能になる。（ＣＩＥＸＹＺおよびＣＩＥ ＬＡＢの両方とも、デバイスに独立なものとしてモデリングされているカラースペースである）。プロファイルは、デバイスのＲＧＢ（赤、緑、および青）制御信号またはＣＭＹＫ制御信号とその制御信号によって生成される実際のカラーとの関係を記述する。具体的には、プロファイルは、与えられた１セットのＲＧＢ数またはＣＭＹＫ数に対応するＣＩＥＸＹＺ値またはＣＩＥ ＬＡＢ値を定義する。カラー管理モジュール（ＣＭＭ）は、カラー管理システムのエンジンとしばしば呼ばれる。カラー管理モジュールは、ＲＧＢ値またはＣＭＹＫ値を変換するために必要とされるすべての計算を実行するソフトウェアの１つである。カラー管理モジュールは、プロファイルに含まれるカラーデータと共に作用する。レンダリングインテントは、４つの異なるレンダリングインテントを含む。レンダリングインテントの各タイプは、「色域外」カラーに対処する異なる方式であり、この場合、出力デバイスは、ソース空間に存在するカラーを再生することが物理的にできない。
【０００８】
ワークフローがより複雑になるにつれ、カラー管理は、画像ファイルが入力（例えば、スキャナ）から出力（例えば、プリンタ）に流れる際に画像ファイルのカラーを管理するユーザにとってより重要になる。ワークフローは、カラーの意味の定義、カラーの正規化、カラーの変換、およびプルーフィングを含むカラー管理の４つの段階を使用する。カラーの意味を定義することは、プロファイルがコンテンツに埋め込まれているかを判定することと、埋込みプロファイルが存在しない場合にプロファイルを定義することとを含む。次いで、ワークフローは、作業域（デバイス独立のカラースペースに対応する）に対してカラーを正規化するか、または画像ファイルのカラー表示を宛先空間に直接変換することができる。カラーが作業域に正規化される場合、オペレーションは、作業域において実行され、例えば、ユーザは、作業域において選択カラーを修正する。次いで、カラー管理システムは、作業域からの共通値を使用して、ソースプロファイルおよび宛先プロファイルから変換表を決定することができる。その結果、カラー管理システムは、変換表を使用して、ソース画像を宛先画像に変換することができる。
【０００９】
従来の技術では、カラー管理は、通常、アプリケーションレベルおよびデバイスレベルの両方において管理される。例えば、印刷およびウェブについて高品質画像を生成する専門的な画像編集規格であるアドビ（登録商標）フォトショップ（登録商標）ソフトウェアアプリケーションでは、ユーザは、ポリシに従ってアプリケーションを構成する。ポリシは、様々な偶然性に依存する可能性がある１セットの規則または行為である。例えば、タグなしドキュメントでは、フォトショップアプリケーションは、プロファイルを想定する、プロファイルを割り当てる、またはプロファイルを割り当てて、ダイアログボックスにおいてユーザによって選択されたユーザ選択に従って、何らかの他のプロファイルへの変換を行うことができる。ユーザは、通常、所望のポリシを確立するために、複数のダイアログボックスに応答する。フォトショップアプリケーションにより、ユーザは、プリンタの制御（例えば、プリンタプロファイルおよびレンダリングインテント）を構成することを含め、カラー管理の他の態様を構成することが可能になる。しかし、出力デバイスが変更される場合、ユーザは、通常、適切なダイアログを再入力して、ポリシを修正しなければならない。
【発明の概要】
【００１０】
上記の例は、従来の技術に付随する共通の欠点を示している。特に、ポリシは、アプリケーション、デバイス、およびシステムの各組合せについて確立される。ユーザは、カラードキュメントの処理について複数のアプリケーションを使用する可能性があり、この場合、各アプリケーションは、ユーザが、各アプリケーションの一連のダイアログボックスに応答することを必要とする。さらに、ユーザは、１つまたは複数のアプリケーションで、複数の入力デバイスの１つから複数の出力デバイスの１つへ、カラードキュメントを処理する可能性がある。さらに、市販用または教育用の状況では、複数のユーザが、同じシステムを使用する可能性があり、または、複数のユーザの各々が、カラー管理ポリシの一貫性が望ましい異なるシステムを使用する可能性がある。各アプリケーション、デバイス、ユーザ、およびシステムについてポリシを別々に構成しなければならないことは、ユーザに対する要求が過度であることがある。それゆえに、カラー管理システムのポリシを制御するためのより統合および集約されたアプローチを提供することが、業界において必要とされている。
【００１１】
本発明は、階層的方式で構造化されるポリシに従って画像を処理するカラー管理システムをサポートする方法およびデバイスを提供する。ポリシは、システムレベル、ユーザレベル、オペレーショナルレベル、プロファイルレベル、デバイスおよびコーデック（画像フォーマット）レベル、ならびにカラー管理アプリケーションプログラミングインターフェースレベルを含め、ポリシが複数のポリシレベルで組織化されるスキーマでモデリングすることができる。本発明の一態様では、下位ポリシレベルにおけるポリシセッティングは、上位ポリシレベルにおけるポリシセッティングをオーバーライドすることが可能である。しかし、ロックアウト機構により、下位ポリシレベルが上位ポリシレベルをオーバーライドすることを防止することが可能である。
【００１２】
本発明の他の態様では、ユーザインターフェースにより、ユーザが一連のダイアログボックスを介してポリシセッティングを構成する能力をサポートする。ダイアログボックスは、システムレベル、入力デバイスレベル、表示デバイスレベル、および出力デバイスレベルを含め、構成レベルに従って階層的に組織化され、この場合、構成レベルは、ポリシレベルに関連付けられる。ダイアログボックスは、ユーザによるカラー管理システムの構成について統合的アプローチを提供する。
【００１３】
本発明の他の態様では、インターフェースがサポートされ、ポリシを構成するために、アプリケーションなどのコンポーネントが、入力をカラー管理システムに送信することを可能にする。本発明の一実施形態は、アプリケーションがポリシセッティングを設定し、カラー管理システムからポリシセッティングを得る（取り出す）ことが可能である、アプリケーションプログラムインターフェースをサポートする。
【００１４】
本発明のより完全な理解およびその利点は、同じ参照符号が同じ特徴を表す添付の図面を考慮して以下の記述を参照することによって、把握することができる。
【図面の簡単な説明】
【００１５】
【図１】本発明を実施することができる適切なコンピューティングシステム環境の一例を示す図である。
【図２】本発明の一実施形態に従ってポリシレベル内の階層的関係を示す図である。
【図３】本発明の一実施形態による階層的ポリシスキーマの概略図である。
【図４】本発明の一実施形態によるカラー管理システムのアーキテクチャを示す図である。
【図５】本発明の一実施形態に従ってシステムレベルでポリシをセッティングするためのダイアログボックスを示す図である。
【図６】本発明の一実施形態に従って入力デバイスレベルでポリシをセッティングするためのダイアログボックスを示す図である。
【図７】本発明の一実施形態に従ってアクセスパスに関連付けられる入力デバイスのポリシをセッティングするためのダイアログボックスを示す図である。
【図８】本発明の一実施形態に従ってフォーマットのタイプによって特徴付けられる入力デバイスのポリシをセッティングするためのダイアログボックスを示す図である。
【図９】本発明の一実施形態に従ってプロファイルに関連付けられる入力デバイスのポリシをセッティングするためのダイアログボックスを示す図である。
【図１０】本発明の一実施形態に従って表示デバイスのポリシをセッティングするためのダイアログボックスを示す図である。
【図１１】本発明の一実施形態に従って出力デバイスのポリシをセッティングするためのダイアログボックスを示す図である。
【図１２】本発明の一実施形態に従ってアクセスパスに関連付けられる出力デバイスのポリシをセッティングするためのダイアログボックスを示す図である。
【図１３】本発明の一実施形態に従ってフォーマットのタイプによって特徴付けられる出力デバイスのポリシをセッティングするためのダイアログボックスを示す図である。
【図１４】本発明の一実施形態に従ってコンポーネントがカラー管理システムへのアプリケーションプログラムインターフェース（ＡＰＩ）コールを使用することを示す図である。
【図１５】本発明の一実施形態に従って要求コンポーネントが中間コンポーネントを経たカラー管理システムへのアプリケーションプログラムインターフェース（ＡＰＩ）コールを使用することを示す図である。
【図１６】第１コードセグメントおよび第２コードセグメントが通信するコンジットとしてのインターフェースを示す図である。
【図１７】インターフェースオブジェクトを備えるインターフェースを示す図である。
【図１８】インターフェースの通信を複数のインターフェースに変換するためにさらに分割することができるインターフェースによって提供される機能を示す図である。
【図１９】図１８に示される機能と同じ結果を達成するために、複数のインターフェースにさらに分割することができるインターフェースによって提供される機能を示す図である。
【図２０】プログラミングインターフェースの態様を無視、追加、または再定義する一方、依然として同じ結果を達成する例を示す図である。
【図２１】プログラミングインターフェースの態様を無視、追加、または再定義する一方、依然として同じ結果を達成する他の例を示す図である。
【図２２】図１６に示される例に関連してコードセグメントをマージすることを示す図である。
【図２３】図１７に示される例に関連してコードセグメントをマージすることを示す図である。
【図２４】通信を変換して、異なるインターフェースに準拠するミドルウェアを示す図である。
【図２５】分離インターフェースに関連付けられるコードセグメントを示す図である。
【図２６】オペレーティングシステムが変更されて異なるインターフェースを使用するインターフェースプロトコルに従って、アプリケーションのインストールベースがオペレーティングシステムと通信するように設計される例を示す図である。
【図２７】インターフェースを書き直して、インターフェースを動的にファクタ化するか、そうでなければインターフェースを変更することを示す図である。
【発明を実施するための最良の形態】
【００１６】
様々な実施形態の以下の記述において、その一部を形成し、本発明を実行することができる様々な実施形態が例として示される添付の図面を参照する。本発明の範囲から逸脱せずに、他の実施形態を使用することができ、構造上および機能上の修正を実施することができることを理解されたい。
【００１７】
以下の用語の定義は、詳細な記述の理解を容易にするために含められている。
【００１８】
・ チャネル−画像は、情報の１つまたは複数の「チャネル」を含む。一般に、カラーは、加法混合の原色（赤、緑、および青）によって表される。これらの３色のそれぞれのカラー情報は、それ自体のチャネルに符号化される。チャネルは、ＲＧＢに限定されず、チャネルは、ルミナンス（輝度）チャネルおよびクロミナンス（彩度）チャネル、または他のさらにより新奇な方式に分類することができる。チャネルを使用して、透明度など、カラー以外のものを符号化することもできる。画像のカラー品質の尺度は、チャネルあたりの符号化するために使用されるビット数（ｂｐｃｈ）である。
【００１９】
・ クリッピング−ソースデータの２つの異なる値が、宛先データの同じ値にマッピングされるたびに、値はクリッピングされると言われる。これは重要であるが、その理由は、クリッピングされたデータが元の状態に復元することができないからである（情報は失われる）。輝度またはコントラストの変更などのオペレーションは、データをクリッピングする可能性がある。
【００２０】
・ カラー管理−カラー管理は、１つのデバイスによって記録されたカラーが、異なるデバイスにおいてユーザの好みに可能な限り忠実に表されることを保証するプロセスであり、しばしば、これはあるデバイス上の知覚を他へ整合させる。イメージングデバイスのセンサは、人の目と比較するとき、人の目が捉えることができるすべてのカラーおよびダイナミックレンジを捉える能力が限定されている。同じ問題が、表示デバイスおよび出力デバイスの両方に関して起きる。問題は、デバイスのすべての３つのクラスがこれらのカラーおよびダイナミックレンジの限定を有するが、そのいずれもまったく同じ形では限定されないことである。したがって、情報がワークフローを進む際に、変換「規則」をセットアップして、すでに限定されたカラーおよびダイナミックレンジの情報を可能な限り保存し、ならびに情報が人の目に可能な限り現実的であることを保証しなければならない。
【００２１】
・ カラースペース−センサは、カラーを検出および記録することが可能であるが、未加工の電圧値は、基準がない場合、まったく意味をなさない。基準スケールは、センサ自体の測定された能力とすることができ、センサが特定の周波数応答スペクトルを有すると測定される場合、生成される数字は意味を有することになる。しかし、人の目によって可視であるすべてのカラーを表す共通の基準の方がより有用である。そのような基準（ＣＩＥＬＡＢとして知られるカラースペース）により、カラーを明瞭に表すことができ、他のデバイスがこの情報を利用して、カラーを再生するために最適を尽くすことができる。それぞれイメージングの分野内の特定の目的について開発されたｓＲＧＢ、ｓｃＲＧＢ、アドビＲＧＢを含め、様々な周知のカラースペースが存在する。
【００２２】
・ カラーコンテキスト−記述されるカラースペースの色域の一般化された形態。あるファイルフォーマットが、特定のカラー管理規格によって記述される色域情報を使用する限り、カラーコンテキストは事実上同じ概念であるが、ＩＣＣ色域をサポートしないファイル（符号化）フォーマットを含む。
【００２３】
・ ダイナミックレンジ−数学的に、システムが符号化することができる最大値の信号を同じシステムが符号化することができる最小値の信号によって除算したもの。この値は、システムが符号化する情報のスケールの表示を与える。
【００２４】
・ 色域−プリンタまたはモニタなどの出力デバイスにおいて再生可能なカラーおよび密度値の範囲。
【００２５】
・ 色相−人が主波長を知覚するカラーの属性。
【００２６】
・ 色相、彩度、明度（ＨＳＶ）−色相を角度として表し、彩度を中心からの距離として表す色相ダイアグラム。
【００２７】
・ ＩＣＣ−国際カラーコンソーシアム。
【００２８】
・ 強度−観測者がどのように知覚するかに関係なく、表面または光源からの光の純然たる量。
【００２９】
・ 精度−カラーを表す精度。ソースデータが適切なカラー分解能を有するとすれば、精度は、通常、各チャネルで符号化されるビット数を増加させることによって向上する。
【００３０】
・ プロファイル−カラー管理システムがカラーを特定のカラースペースの内外に変換するのに十分な情報を含むファイル。これは、サブカテゴリ入力プロファイル、出力プロファイル、および表示プロファイル（それぞれ、入力デバイス、出力デバイス、および表示デバイス用）を有するデバイスプロファイルと呼ばれるデバイスのカラースペース、または抽象カラースペースとすることが可能である。
【００３１】
・ レンダリングインテント−より大きい色域からより小さい色域へ移行するとき、カラースペース間でカラーを変換する問題を取り扱う方法をカラー管理システムに通知するセッティング。
【００３２】
・ 彩度−カラーの純度。
【００３３】
・ ｓＲＧＢ−インターネット、ＩＥＣ６１９６６−２−１の画像のための「標準」ＲＧＢカラースペース。
【００３４】
・ ｓｃＲＧＢ−「標準コンピューティング」ＲＧＢカラースペース、ＩＥＣ６１９６６−２−２。
【００３５】
・ ワークフロー−ドキュメントの数字がどのカラーを表すかを定義し、ワークがキャプチャから編集を通して出力に進む際に、それらのカラーを保持または制御するプロセス。
【００３６】
図１は、本発明を実施することができる適切なコンピューティングシステム環境１００の例を示す。特に、図１は、コンピューティングシステム環境１００のコンテキストにおける、光学無線マウスなどの無線ポインタデバイス１６１のオペレーションを示す。コンピューティングシステム環境１００は、適切なコンピューティング環境の単なる一例であり、本発明の使用範囲または機能に関する限定を示唆することを意図するものではない。コンピューティング環境１００は、例示的なオペレーティング環境１００において示されるコンポーネントのいずれか１つまたは組合せに関する依存性または必要性を有すると解釈されるべきではない。
【００３７】
本発明は、多くの他の汎用または専用のコンピューティングシステム環境または構成と共に動作可能である。本発明と共に使用されるのに適切である可能性がある周知のコンピューティングシステム、環境、および／または構成の例には、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドデバイスまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースシステム、セットトップボックス、プログラム可能家電、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、上記のシステムまたはデバイスのいずれかを含む分散型コンピューティング環境などがあるが、これに限定されるものではない。
【００３８】
本発明は、コンピュータによって実行されるプログラムモジュールなどのコンピュータ実行可能命令の一般的なコンテキストにおいて記述することができる。一般に、プログラムモジュールは、特定のタスクを実行するか、または特定の抽象的なデータタイプを実施するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。本発明は、タスクが通信ネットワークを経てリンクされるリモート処理デバイスによって実行される、分散型コンピューティング環境において実行することもできる。分散型コンピューティング環境では、プログラムモジュールは、メモリストレージデバイスを含め、ローカルおよびリモートのコンピュータ記憶メディアの両方に配置することができる。
【００３９】
図１を参照すると、本発明を実施する例示的なシステムは、コンピュータ１１０の形態の汎用コンピューティングデバイスを含む。コンピュータ１１０のコンポーネントは、処理ユニット１２０、システムメモリ１３０、およびシステムメモリを含めて様々なシステムコンポーネントを処理ユニット１２０に結合するシステムバス１２１を含むことが可能であるが、これに限定されるものではない。システムバス１２１は、メモリバスまたはメモリ制御デバイス、周辺バス、および様々なバスアーキテクチャのいずれかを使用するローカルバスを含め、いくつかのタイプのバス構造のいずれかとすることが可能である。例として、そのようなアーキテクチャには、ＩＳＡ（ＩｎｄｕｓｔｒｙＳｔａｎｄａｒｄ Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ＭＣＡ（ＭｉｃｒｏＣｈａｎｎｅｌ Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、拡張ＩＳＡ（ＥｎｈａｎｃｅｄＩＳＡ）バス、ＶＥＳＡ（Ｖｉｄｅｏ ＥｌｅｃｔｒｏｎｉｃｓＳｔａｎｄａｒｄｓ Ａｓｓｏｃｉａｔｉｏｎ）ローカルバス、およびメザニンバスとしても知られるＰＣＩ（ＰｅｒｉｐｈｅｒａｌＣｏｍｐｏｎｅｎｔ Ｉｎｔｅｒｃｏｎｎｅｃｔ）バスがあるが、これに限定されるものではない。
【００４０】
コンピュータ１１０は、通常、様々なコンピュータ可読メディアを含む。コンピュータ可読メディアは、コンピュータ１１０によってアクセスすることができる任意の利用可能なメディアとすることができ、揮発性および不揮発性のメディア、リムーバブルおよび非リムーバブルなメディアの両方を含む。例として、コンピュータ可読メディアは、コンピュータ記憶メディアおよび通信メディアを備えることが可能であるが、これに限定されるものではない。コンピュータ記憶メディアには、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報を格納する任意の方法または技術において実施される揮発性および不揮発性、リムーバブルおよび非リムーバブルのメディアの両方がある。コンピュータ記憶メディアには、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリまたは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）または他の光学ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたは他の磁気ストレージ、あるいは所望の情報を格納するために使用することができ、コンピュータ１１０によってアクセスすることができる任意の他の媒体があるが、これに限定されるものではない。通信メディアは、通常、搬送波などの変調データ信号または他のトランスポート機構において、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータを実現し、任意の情報送達メディアを含む。「変調データ信号」という用語は、信号の情報を符号化するような形でその特徴の１つまたは複数を設定または変更した信号を意味する。例として、限定ではなく、通信メディアには、有線ネットワークまたは直接配線接続などの有線メディア、および音声、ＲＦ、赤外線などの無線メディア、および他の無線メディアがある。上記のいずれかの組合せも、コンピュータ可読メディアの範囲内に含まれる。
【００４１】
システムメモリ１３０は、読取専用メモリ（ＲＯＭ）１３１およびランダムアクセスメモリ（ＲＡＭ）１３２など、揮発性メモリおよび／または不揮発性メモリの形態のコンピュータ記憶メディアを含む。起動中などにコンピュータ１１０内の要素間において情報を転送するように作用する基本ルーチンを含む基本的な入力／出力システム１３３（ＢＩＯＳ）は、通常、ＲＯＭ１３１に格納される。ＲＡＭ１３２は、通常、処理ユニット１２０に即座にアクセス可能であり、および／または処理ユニット１２０によって現在動作されているデータおよび／またはプログラムモジュールを含む。例として、限定ではなく、図１は、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６、およびプログラムデータ１３７を示す。
【００４２】
コンピュータ１１０は、他のリムーバブル／非リムーバブル、揮発性／不揮発性コンピュータ記憶メディアをも含むことが可能である。例としてのみ、図１は、非リムーバブル不揮発性磁気メディアから読み取り、またはそれに書き込むハードディスクドライブ１４０、リムーバブル不揮発性磁気ディスク１５２から読み取り、またはそれに書き込む磁気ディスクドライブ１５１、およびＣＤＲＯＭまたは他の光学メディアなどのリムーバブル不揮発性光学ディスク１５６から読み取り、またはそれに書き込む光ディスクドライブ１５５を示す。例示的なオペレーティング環境において使用することができる他のリムーバブル／非リムーバブル、揮発性／不揮発性コンピュータ記憶メディアには、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、半導体ＲＡＭ、半導体ＲＯＭなどがあるが、これに限定されるものではない。ハードディスクドライブ１４１は、通常、インターフェース１４０などの非リムーバブルメモリインターフェースを経てシステムバス１２１に接続され、磁気ディスクドライブ１５１および光ディスクドライブ１５５は、通常、インターフェース１５０などのリムーバブルメモリインターフェースによってシステムバス１２１に接続される。
【００４３】
上記で議論され、図１に示されるデバイスおよびそれに関連するコンピュータ記憶メディアは、コンピュータ１１０のコンピュータ可読命令、データ構造、プログラムモジュール、および他のデータのストレージを提供する。図１では、例えば、ハードディスクドライブ１４１が、オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６、およびプログラムデータ１４７を格納するものとして示されている。これらのコンポーネントは、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６、およびプログラムデータ１３７と同じか、または異なるものとすることができることに留意されたい。オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６、およびプログラムデータ１４７は、ここでは、少なくとも、それらが異なるコピーであることを示すために、異なる数字が与えられている。ユーザは、マウス、トラックボール、またはタッチパッドと一般に呼ばれるキーボード１６２および無線ポインティングデバイス１６１などの入力デバイスにより、コマンドおよび情報をコンピュータ１１０に入力することが可能である。本発明の一実施形態では、無線ポインティングデバイス１６１は、マウスの動きを検出する光センサを有するマウスとして実施することができる。他の入力デバイス（図示せず）は、マイクロフォン、ジョイスティック、ゲームパッド、サテライトディッシュ、スキャナなどを含むことが可能である。これらおよび他の入力デバイスは、システムバスに結合されるユーザ入力インターフェース１６０を経て処理ユニット１２０にしばしば接続されるが、パラレルポート、ゲームポート、またはユニバーサルシリアスバス（ＵＳＢ）など、他のインターフェースおよびバス構造によって接続することができる。図１では、無線ポインタ１６１は、無線チャネル１９９によりユーザ入力インターフェース１６０と通信する。無線チャネル１９９は、無線周波数（ＲＦ）信号、赤外線信号、または可視光信号など、電磁信号を使用する。モニタ１９１または他のタイプの表示デバイスも、ビデオインターフェース１９０などのインターフェースを介してシステムバス１２１に接続される。モニタの他に、コンピュータは、スピーカ１９７およびプリンタ１９６などの他の周辺出力デバイスをも含むことが可能であり、出力周辺インターフェース１９０を経て接続することが可能である。
【００４４】
コンピュータ１１０は、リモートコンピュータ１８０など、１つまたは複数のリモートコンピュータへの論理接続を使用するネットワーク環境において動作することができる。リモートコンピュータ１８０は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイス、または他の共通ネットワークノードとすることが可能であり、通常、コンピュータ１１０に関して上述された要素の多くまたはすべてを含むが、図１には、メモリストレージ１８１のみが示されている。図１に示される論理接続は、ローカルエリアネットワーク（ＬＡＮ）１７１およびワイドエリアネットワーク（ＷＡＮ）１７３を含むが、他のネットワークを含むことも可能である。そのようなネットワーキング環境は、オフィス、企業全体にわたるコンピュータネットワーク、イントラネット、およびインターネットにおいて一般的である。
【００４５】
ＬＡＮネットワーキング環境において使用されるとき、コンピュータ１１０は、ネットワークインターフェースまたはアダプタ１７０を経てＬＡＮ１７１に接続される。ＷＡＮネットワーキング環境において使用されるとき、コンピュータ１１０は、インターネットなどのＷＡＮ１７３による通信を確立するためのモデム１７２または他の手段を通常含む。モデム１７２は、内蔵または外付けとすることが可能であり、ユーザ入力インターフェース１６０または他の適切な機構を介してシステムバス１２１に接続することができる。ネットワーク環境では、コンピュータ１１０に対して示されるプログラムモジュール、またはその一部は、リモートメモリストレージに格納することができる。例として、限定ではなく、図１は、リモートアプリケーションプログラム１８５がメモリデバイス１８１の上にあるように示している。示されるネットワーク接続は、例示であり、コンピュータ間において通信リンクを確立する他の手段を使用することができることが理解されるであろう。
【００４６】
周辺インターフェース１９５は、スキャナ（図示せず）またはデジタルカメラ１９４などのビデオ入力デバイスへインターフェースすることが可能であり、この場合、出力周辺インターフェースは、ユニバーサルシリアルバス（ＵＳＢ）インターフェースを含め、標準インターフェースをサポートすることが可能である。オペレーティングシステム１３４によって、またはアプリケーション１３５によってサポートすることが可能であるカラー管理は、コンピュータデバイス間において望ましいカラー変換を得ることについてユーザを補助する。コンピュータデバイスは、デジタルカメラ１９４などの入力デバイス、通常、モニタ１９１などの表示デバイス、およびプリンタ１９６などの出力デバイスとして分類される。カラー管理のオペレーションは、以下の議論においてより詳細に説明される。
【００４７】
図２は、本発明の実施形態によるカラー管理システムによってサポートされるポリシレベル内の階層的関係２００を示す。関係２００は、６つのポリシレベル２０１〜２１１を備える。ポリシレベル２０１（レベル１−システムレベル）は、制御の最も高く、最も粗いレベルであり、システム全体のカラー管理制御にわたる。この実施形態では、カラー管理システムは、小作業域および大作業域の２つの作業域（この場合、作業域は、プロファイル接続空間と呼ぶことができる）を維持する。小作業域は、従来の８ｂｐｃｈ（チャネルあたりのビット）カラースペースであり、カラーの忠実度およびダイナミックレンジを犠牲にして、画像ファイルのサイズを最小限に維持する。小作業域は、デフォルトによってｓＲＧＢである。大作業域は、高忠実度の作業域である。大作業域は、通常、増大するファイルのサイズおよび動作速度を犠牲にして、画像ファイルの品質を保持するために８ｂｐｃｈより大きい。大作業域は、デフォルトによってｓｃＲＧＢ（３２ｂｐｃｈ、浮動小数点）である。
【００４８】
カラー管理システムは、表１に示されるように、画像ファイルを小作業域または大作業域に変換することについて、指定色域マッピングの３つの品質セッティングをサポートする。
【００４９】
【表１】
2010231804.tif 000003
【００５０】
第１の品質セッティングＱ１（サイズについて最適化）は、指定色域マッピング（議論されることになるようにレンダリングインテントに関して議論）が、画像ファイルを小作業域に変換するように、変換を最適化する。画像ファイルに対するすべてのオペレーションは、小作業域において実行される。小作業域の限定された８ｂｐｃｈ忠実度は、一般に大きなダイナミックレンジ（大色域）または高カラー忠実度に関連付けられるが、両方には関連付けられない。画像ファイルは、画像ファイルが著しく処理される場合、忠実度の低減を経験する可能性がある。８ｂｐｃｈを超えるｂｐｃｈを有する画像ファイルは、８ｂｐｃｈにスケールダウンされる。第２の品質セッティングＱ２（損失なしを保証する）では、８ｂｐｃｈ以下のデータを有する画像ファイルは、小作業域に変換される。８ｂｐｃｈを超えるデータを有する画像ファイルは、大作業域にマッピングされる。その結果、画像ファイルは、通常、第３の品質セッティンググＱ３（以下で説明される）の品質利益によって特徴付けられるが、第１の品質セッティングより多くのメモリリソースを必要とする。第３の品質セッティングＱ３（品質について最適化する）では、カラー管理システムは、すべての画像ファイルを大作業域に変換し、それにより、画像ファイルに対するすべてのオペレーションは、大作業域において実行される。大作業域がｓｃＲＧＢカラースペースについて構成される場合、画像ファイルは、スーパー／サブルミナル値のサポートによるクリッピング、高カラー精度による忠実度の保全、および忠実なカラー再生に対し、より優れた耐性を有する。しかし、８ｂｐｃｈ画像ファイルの処理は、第１の品質セッティングまたは第２の品質セッティング（Ｑ１またはＱ２）の場合より４倍大きいメモリフットプリントを必要とする。
【００５１】
第１の品質セッティングおよび第３の品質セッティング（Ｑ１およびＱ３）では、画像ファイルの変換は、画像ファイルが、対応するより小さい作業域（例えば、小作業域に変換されるｓｃＲＧＢカラースペースを有する画像空間）、またはより大きい作業域（例えば、大作業域に変換されるＲＧＢカラースペースを有する画像空間）に変換されることを必要とする可能性がある。そのような場合、レンダリングインテントのセッティングが、表２に示されるようにより大きい色域からより小さい色域に移行するとき、カラースペース間でカラーを変換する問題を取り扱う方法をカラー管理システムに示す。
【００５２】
【表２】
2010231804.tif 000004
【００５３】
色域Ａから色域Ｂに変換するとき、色域のカラースペースは、考慮されるべきである。カラースペースが同じではない場合、カラースペースは、中間スペースに変換されるべきである。色域Ａは色域Ｂと比較され、この場合、４つの可能な条件が存在する。第１に、色域スペースＡが色域Ｂより大きく、色域Ａが色域Ｂを完全に包含する。第２に、色域Ａが色域Ｂより小さく、色域Ａが色域Ｂによって完全に内包される。第３に、色域Ａが色域Ｂとの交わりを有し、どちらの色域も他の色域を完全には内包しない。第４に、色域Ａが色域Ｂと独立であり、色域間に共通性がない。
【００５４】
本発明の他の実施形態では、２進色域マッピングオペレーションがサポートされる。例えば、カメラの製造業者が、カメラの「ルックアンドフィール」を再現するために、ソースプロファイルおよびソース色域マップを提供することが可能であり、一方、プリンタの製造業者が、プリンタの「ルックアンドフィール」を再現するために、宛先プロファイルおよび宛先色域マップを提供することが可能である。この実施形態では、カラー管理システムは、以下のオプションを選択する能力をサポートする：
・ ソース色域マップを選択する
・ 宛先色域マップを選択する
・ ソース色域マップおよび宛先色域マップのどちらかまたは両方をオーバーライドする
・ ソースマップおよび宛先マップの組合せの重み比（０〜１００％）
【００５５】
いくつかの場合、ユーザは、カラー管理を完全に無効にすることが可能であり、それにより、カラースペースが無意味になることが可能である。しかし、カラー管理のアクティブ化により意味のあるマッピングが存在する。そのような場合、従来のカラー管理コンテキストなしで、簡単な算術的オペレーションが実行される。一例は、３チャネルＲＧＢから４チャネルＣＭＹＫへの変換である。
【００５６】
図２を参照すると、ユーザは、ポリシレベル２０１（システムレベル）において、カラー管理を完全に無効にするか、または小作業域および大作業域を選択することが可能である。下位レベルポリシレベル（すなわち、ポリシレベル２０３、２０５、２０７、２０９、または２１１）は、ポリシレベル２０１をオーバーライドすることが可能である。しかし、ポリシレベル２０１は、下位ポリシレベルがポリシ２０１をオーバーライドする能力をロックアウトすることが可能である。さらに、オーバーライド／ロックアウト機構は、他のポリシレベルについて構成することができる。各ポリシレベル２０１、２０３、２０５、２０７、および２０９は、ロッキング機能を有して、下位ポリシレベルがポリシレベルのセッティングをオーバーライドすることが可能であるが、ユーザに促すか否か、またはユーザの命令に従って単に要求を実行するかについて、ユーザ制御を提供することが可能である。
【００５７】
ポリシレベル２０３（ユーザレベル）において、ユーザは、他のユーザのポリシに影響を与えずに、ユーザのポリシを構成することができる。この能力は、コンピュータシステム（例えば、コンピュータ１１０）によってサポートされるカラー管理システムが、教育システムにおいてなど複数のユーザによって使用される場合、重要である可能性がある。
【００５８】
ポリシレベル２０５（オペレーショナルレベル）において、ユーザは、カラー管理システムによってサポートされるオペレーションに基づいてカラー管理を制御する能力を有する。（図３に関して説明されるように、オペレーションは、「キャプチャ」、「表示」、「印刷」、「ロード」、ならびに「保存」、「コピー」、および「ペースト」を含む）。例えば、画像ファイルのロードが実行されているとき、カラー管理システムは、常に画像ファイルをｓｃＲＧＢに変換するように構成することができる。画像ファイルを印刷するとき、カラー管理システムは、画像ファイルをエプソン９６００（プレミアムラスタ）に変換するように構成することができる。ポリシは、各指定オペレーションについて構成することができる。
【００５９】
ポリシレベル２０７（プロファイルレベル）において、ユーザは、画像ファイルの埋込みプロファイル、または埋込みプロファイルの欠如に基づいてカラー管理を制御する能力を有する。ユーザは、あるポリシに遭遇すると、ある変換を実行することを所望することが可能である。
【００６０】
ポリシレベル２０９（デバイスおよびコーデックレベル）において、ユーザは、デバイス、次いでコーデック（画像ファイルのフォーマット）に従って、カラー管理システムによる変換を制御することができる。
【００６１】
ポリシレベル２１１（カラー管理ＡＰＩ）において、アプリケーションは、直接、カラー管理ＡＰＩへのＡＰＩコールを作成して、カラーオペレーションを実行することが可能である。（カラー管理ＡＰＩは、図１４および図１５に関してより詳細に議論される）。この実施形態では、ポリシレベル２０９は、通常、ユーザに公表されない。
【００６２】
図３は、ポリシレベル２０１、２０３、２０５、および２０９に対応する階層的ポリシスキーマ３００の概略図を示す。ポリシは、システム３０１について確立することができる。ポリシが下位ポリシレベルについて構成されない場合、システムレベル２０１において構成されるポリシは、カラー管理システムによって使用される。しかし、ポリシレベル２０１が下位レベルポリシをロックアウトしない場合、下位レベルポリシは、ポリシレベル２０１によって設定されたポリシをオーバーライドすることができる。
【００６３】
図３に示されるスキーマでは、ユーザレベル２０３に関連付けられる３つのユーザエンティティ３０３、３０５、および３０７のそれぞれは、コンピュータ１１０の異なるユーザに対応することが可能であり、この場合、各ユーザは、他のユーザに影響を与えずに、ユーザの環境についてポリシを構成することが可能である。しかし、他の実施形態では、ユーザエンティティ３０３、３０５、および３０７は、他の関連付けに対応する可能性がある。例えば、ユーザエンティティ３０３、３０５、および３０７は、ユーザの異なる顧客に対応することが可能であり、この場合、各顧客は、異なるポリシセッティングを要求する異なるカラー管理目的を有する。
【００６４】
キャプチャオペレーション３０９、表示オペレーション３１１、印刷オペレーション３１３、ロード／保存オペレーション３１５、コピーオペレーション３０８、およびペーストオペレーション３１６は、オペレーショナルレベル２０５に関連付けられ、この場合、ポリシ構成セッティングは、オペレーションのタイプ次第である。各オペレーションは、オペレーションをサポートすることができるデバイスに階層的に関連付けられる。
【００６５】
デバイス／コーデックレベル２０９において、異なるポリシセッティングで異なるデバイスを構成することができる。例えば、図３に示されるキャプチャオペレーション３０９は、カメラ３１７およびスキャナ３１９など、複数の入力デバイスに関連付けることができ、この場合、各デバイスのタイプは、異なるポリシセッティングに関連付けられる。ロード／保存オペレーション３１５は、ＪＰＥＧフォーマット３２１、ＴＩＦＦフォーマット３２３、およびＧＩＦフォーマット３２５を含め、様々なコーデック（フォーマット）のタイプに関連付けることができる。表示オペレーション３１１は、様々なモニタデバイス（図示せず）に関連付けることができる。印刷オペレーション３１３は、様々なプリンタデバイス（図示せず）に関連付けることができる。各デバイスのタイプについて、特定のポリシセッティングで異なるデバイスモデルを構成することができる。例えば、Ｄ１Ｘモデル３２７およびＤ１００モデル３２９は、カメラ３１７に関連付けられる。階層的ポリシスキーマ３００には示されていないが、本発明の他の実施形態が、アプリケーションレベルに関するポリシをサポートすることが可能である。
【００６６】
スキーマ３００によるカラー管理セッティングは、各ポリシレベルのカラー管理セッティングが少なくとも１つの属性で表される拡張可能マークアップ言語（ＸＭＬ）ファイルなど、テキストファイルにおいて表されることが可能である。ＸＭＬファイルは、ポリシセッティングが汚染される場合、または他のコンピュータのポリシセッティングに準拠するために、コンピュータ１１０に関してポリシを構成することを容易にする。
【００６７】
図４は、本発明の一実施形態によるカラー管理システム４００のアーキテクチャを示す。カラー管理システム４００は、カラー処理モジュール４０１、構成モジュール４１１、ユーザインターフェース４１３、およびインターフェースモジュール４２１を備える。カラー処理モジュール４０１は、カラー管理モジュール（ＣＭＭ）４０７、選択プロファイル４０５、および作業域４０９を備える。（いくつかの実施形態では、カラー管理システム４００は、構成モジュール４１１によりポリシセッティングを構成することによって、ポリシセッティングによって構成される複数のカラー管理モジュールの１つから選択することが可能である）。カラー管理モジュール４０７は、選択プロファイル４０５のカラーデータを使用してＲＧＢ値またはＣＭＹＫ値を変換するソフトウェアエンジンである。プロファイルは、ソースデバイス４１５（例えば、デジタルカメラ）に関連付けることができ、一方、他のプロファイルは、宛先デバイス４１７に関連付けることができる。しかし、表示デバイスなど、いくつかのタイプのデバイスでは、プロファイルは、双方向とすることが可能であるが（すなわち、デバイス空間から作業域、および作業域からデバイス空間に変換する）、その理由は、表示デバイスが、入力デバイスおよび出力デバイスの両方として機能することが可能であるからである。プロファイルは、カラー管理システム４００によって想定および選択することができ、または、プロファイルが画像ファイルに埋め込まれる場合、画像ファイルから得ることができる。プロファイル４０５を使用して、カラー管理モジュール４０７は、カラーが、プロファイル４０５からのサンプル点を使用して作業域４０９でどのように計算されるかを決定する。カラー管理モジュール４０７は、通常、プロファイルサンプル点間の内挿を実行して、プロファイル接続空間（ＰＣＳ）と呼ぶこともある作業域４０９における値を決定する。作業域４０９は、ユーザインターフェース４１３からの構成モジュール４１１から得られるポリシセッティングに従って色域マッピングによって決定される大作業域または小作業域とすることが可能である。ユーザは、一連のダイアログボックスと対話することによって、ユーザインターフェース４１３を介してポリシセッティングを構成することができる。（ポリシセッティングを構成することは、図５〜図１２に関してより詳細に議論される）。構成モジュール４１１は、入力ポリシセッティングを使用して、カラー管理システム４００を構成する。代替として、図１４および図１５に関して議論されるように、構成モジュール４１１は、インターフェースモジュール４２１を通してコンポーネント４１９からの入力に含まれるポリシセッティングを受信することが可能である。一実施形態では、コンポーネント４１９は、アプリケーションプログラムインターフェース（ＡＰＩ）を使用してカラー管理システム４００からポリシセッティングを設定するか、または得るアプリケーションである。
【００６８】
カラー管理モジュール４０７によって定義される内挿アルゴリズムを使用して、カラー管理システム４００は、ソースデバイス４１５の表および宛先デバイス４１７の表を構築する。カラー管理システム４００は、共通作業域により２つの表を共に接続し、ソースデバイス４１５および宛先デバイス４１７から直接得られる組合せ表を構築する。次いで、カラー管理システム４００は、組合せ表を通してソース画像の各画素を渡し、値をソースから宛先に変換する。
【００６９】
カラー管理システム（例えば、カラー管理システム４００）は、ユーザがカラー管理のワークフローを監視、検査、問合せ、訂正、修正、および／または無視することを可能にすることによって、堅牢なカラー管理を可能にさせる。チョーク点を使用することによって、カラー管理システムは、どのカラー管理が実施されたか、または実施されることになるか、いつカラー管理が実施されたか、または実施されることになるか、および誰によってカラー管理が実行されたか、実行されることになるか、または実行されるべきかについてユーザに保証する。チョーク点は、あるオペレーションについて事前に決められた接点として定義され、この場合、カラーオブジェクトのすべての画素は、排他的機能の非常に限定された固定のセットの１つの機能を通して送られる。この実施形態では、チョーク点は、参照によって本明細書に完全に組み込まれる、２００３年１０月１０日に出願された「Color Management System That Enables Dynamic Balancing of Performance with Flexibility」という名称の特許明細書において開示されるように実施される。
【００７０】
図５は、本発明の一実施形態に従ってシステム構成レベルにおいてポリシをセッティングするためのダイアログボックス５００を示す。ダイアログボックス５００は、ユーザ選択システムタブ５０１に応答して表示される。他の構成レベルは、入力構成レベル（タブ５０３に対応する）、表示構成レベル（タブ５０５に対応する）、および出力構成レベル（タブ５０７に対応する）を含む。他の実施形態では、異なる構成レベルをラジオボタンなどの異なる構成インジケータにより選択することができる。この実施形態では、システム構成レベルは、図２に示されるシステムポリシレベル２０１に対応する。ユーザは、「カラー構成を有効にする」オブジェクト５０９を選択することによって、カラー管理を大域的に有効にすることができる。ユーザは、「低精度作業域」オブジェクト５１３により低精度作業域（小作業域）を指定し、「高精作業域」オブジェクト５１５により高精度作業域（大作業域）を指定する。ユーザは、「忠実度」オブジェクト５１７により、システム全体の色域マッピングアルゴリズムを指定する。オブジェクト５１７で提供される選択は、以前に議論された品質セッティングと一貫する。また、記述テキストオブジェクト５１９は、異なるダイアログボックスによりナビゲートするとき、ユーザ補助およびガイダンスを提供する。
【００７１】
いくつかの実施形態では、ダイアログ５００は、他のダイアログボックス（図示せず）を表示することができるように、複数のユーザタブを提供し、この場合、対応するユーザは、そのユーザにのみ属し、他のユーザには属さないポリシセッティングを入力することが可能である。この能力は、複数のユーザによって共有されるコンピュータシステムにおいて有用である可能性がある。
【００７２】
図６は、本発明の一実施形態に従って入力デバイス構成レベルにおいてポリシをセッティングするためのダイアログボックス６００を示す。ダイアログボックス６００は、ユーザ選択入力構成タブ５０３およびデバイス優先順位タブ６０１に応答して表示される。他の優先順位入力タブには、パス優先順位タブ６０３、フォーマット優先順位タブ６０５、およびプロファイル優先順位タブ６０７があり、それぞれ、ユーザによって選択される場合、ダイアログボックス７００、８００、および９００に対応する。優先順位入力インジケータ（優先順位入力タブに対応する）の優先順位（最高優先順位から最低優先順位）の順序は、「デバイス」、「パス」、「フォーマット」、「プロファイル」と続く。入来画像は、下位優先順位規則の前に、上位優先順位規則に対して整合される。
【００７３】
「入力デバイスリスト」オブジェクト６０９は、画像をコンピュータ１１０などのコンピュータに送達することができるデバイスのリストである。オブジェクト６１１は、オブジェクト６０９から選択された入力デバイスを表示する。「この入力デバイスについてカラー管理ポリシを有効にする」オブジェクト６２１は、デバイスの大域的なセッティングである。オブジェクト６２１がクリアにされるとき、すべての他の制御（図示せず）が無効にされ、デバイスは入来画像に対して適用される規則のセットに含まれない。
【００７４】
「カラー管理」オブジェクト６２３は、カラー管理システム４００が黙ってカラー管理を取り扱うか、またはユーザがカラー管理の決定について実行時にプロンプトされるべきであるかを示す。オブジェクト６２３が「手動」に設定される場合、タブに対する残りの制御は、無効にされる（図示せず）。図６に示されるように、オブジェクト６２３が「自動（ポリシによる）」に設定される場合、カラー管理の決定は、ポリシに従って自動的に決定される。
【００７５】
「プロファイルを有する画像」オブジェクト６１３は、埋込みプロファイルを有する画像に遭遇するとき、何をすべきかのポリシを設定する。オブジェクト６１３が「プロファイルを尊重する」に設定される場合、カラー管理システム４００は、画像プロファイルによって示されるカラースペースから変換される。オブジェクト６１３が「割り当てる」に設定される場合、管理システム４００は、画像の埋込みプロファイルを無視し、埋込みプロファイルの代わりに指定プロファイルを使用する。
【００７６】
「プロファイルを有さない画像」オブジェクト６１５は、プロファイルを有さない画像に遭遇するとき、何をすべきかのポリシを設定する。オブジェクト６１５が「割り当てる」に設定される場合、カラー管理システム４００は、指定プロファイルを使用し、割り当てられたプロファイルカラースペースから作業域に画像を変換する（選択される場合）ことが可能である。オブジェクト６１５が「何をすべきかを質問する」に設定される場合、カラー管理システム４００は、状況に遭遇する時点でユーザをプロンプトする。
【００７７】
「色域マッピング」オブジェクト６１７は、変換の対象の要素がどのように行われるかを制御する。オプションのリストは、図５に示されるオブジェクト５１３および５１５において提示されたオプションのリストと同様であるが、「システムセッティングの使用」のオプションが追加される。オブジェクト６１９は、ダイアログボックス６００に関連する記述テキストを提供する。
【００７８】
図７は、本発明の一実施形態に従ってアクセスパスに関連付けられる入力デバイス構成レベルのポリシを設定するためのダイアログボックス７００を示す。ダイアログボックス７００は、ユーザ選択入力構成タブ５０３およびパス優先順位タブ６０３に応答して表示される。オブジェクト７１３、７１５、７１７、７１９、７２１、および７２３は、図６に示されるオブジェクト６１３、６１５、６１７、６１９、６２１および６２３に対応する。「パスリスト」オブジェクト７０１は、画像ファイルの選択可能パスをリストする。「パス追加」オブジェクト７２５により、ユーザは、パスを「パスリスト」オブジェクト７０１に追加することが可能になる。ダイアログボックス７００により、ユーザは、他の画像ファイルとは独立に処理されるように、他の画像（例えば、写真の画像ライブラリのファイル）を処理するようにカラー管理システム４００に命令することが可能になる。また、パス指定をネットワークイメージングデバイスに加えることができる。
【００７９】
図８は、本発明の一実施形態に従ってフォーマットのタイプによって特徴付けられる入力デバイス構成レベルのポリシをセッティングするためのダイアログボックス８００を示す。ダイアログボックス８００は、ユーザ選択入力構成タブ５０３およびフォーマット優先順位タブ６０５に応答して表示される。オブジェクト８１３、８１５、８１７、８１９、８２１、および８２３は、図６に示されるオブジェクト６１３、６１５、６１７、６１９、６２１、および６２３に対応する。「フォーマットリスト」オブジェクト８０１は、選択可能な画像ファイルフォーマットをリストする（コーデックと呼ぶことができる）。フォーマットのタイプは、ＴＩＦＦ（ｔａｇｇｅｄｉｍａｇｅ ｆｉｌｅ ｆｏｒｍａｔ）、ＪＰＥＧ（Ｊｏｉｎｔ ＰｈｏｔｏｇｒａｐｈｉｃＥｘｐｅｒｔｓ Ｇｒｏｕｐ）、およびＧＩＦ（ｇｒａｐｈｉｃｉｎｔｅｒｃｈａｎｇｅ ｆｏｒｍａｔ）を含む。「フォーマット追加」オブジェクト８２５により、ユーザは、フォーマットを「フォーマットリスト」オブジェクト８０１に追加することが可能になる。
【００８０】
図９は、本発明の一実施形態に従ってプロファイルに関連付けられる入力デバイス構成レベルのポリシをセッティングするためのダイアログボックス９００を示す。ダイアログボックス９００は、ユーザ選択入力構成タブ５０３およびプロファイル優先順位タブ６０７に応答して表示される。オブジェクト９１３、９１７、９１９、９２１、および９２３は、図６に示されるオブジェクト６１３、６１５、６１７、６１８、６２１、および６２３に対応する。「カラー管理プロファイルリスト」オブジェクト１００１は、画像ファイルに埋め込むことができるプロファイルをリストする。
【００８１】
図１０は、本発明の一実施形態に従って表示デバイス構成レベルのポリシをセッティングするためのダイアログボックス１０００を示す。ダイアログボックス１０００は、ユーザ選択表示構成タブ５０５に応答して表示される。オブジェクト１０１９、１０２１、および１０２３は、図６に示されるオブジェクト６１９、６２１、および６２３に対応する。「表示リスト」オブジェクト１００１は、ユーザによって選択することができる表示デバイスをリストする。選択された表示デバイスは、オブジェクト１００３に表示される。オブジェクト１０２５により、ユーザは、選択された表示デバイスについて対応するプロファイルを選択することが可能になる。さらに、オブジェクト１０２７からの選択に従って表示デバイスを定期的に再較正するようにユーザにリマインドすることが可能である。
【００８２】
図１１は、本発明の一実施形態に従って出力デバイス構成レベルのポリシをセッティングするためのダイアログボックス１１００を示す。ダイアログボックス１１００は、ユーザ選択出力構成タブ５０７およびデバイス優先順位タブ１１０１に応答して表示される。「出力デバイスリスト」オブジェクト１１０７は、ユーザが選択することができる出力デバイスをリストする。オブジェクト１１１７、１１１９、１１２１、および１１２３は、図６に示されるオブジェクト６１７、６１９、６２１、および６２３に対応する。オブジェクト１１２５、１１２７、１１２９、および１１３１により、ユーザは、出力デバイスの現行プロファイルを使用するか、他のプロファイルを指定するか、または状況に遭遇するときはいつでもユーザに質問するかを指定することが可能になる。
【００８３】
図１２は、本発明の一実施形態に従ってアクセスパスに関連付けられる出力デバイス構成レベルのポリシをセッティングするためのダイアログボックス１２００を示す。ダイアログボックス１２００は、ユーザ選択出力構成タブ５０７およびパス優先順位タブ１１０３に応答して表示される。「出力パスリスト」オブジェクト１２０５は、ユーザが選択することができる出力パスをリストする。ユーザは、「パス追加」オブジェクト１２３３によりパスを追加する、または「パス除去」オブジェクト１２３５によりパスを除去することができる。オブジェクト１１７１、１１１９、１１２１および１１２３は、図６に示されるオブジェクト６１７、６１９、６２１、および６２３に対応する。オブジェクト１２２５、１２２７、１２２９、および１２３１は、図１１に示されるオブジェクト１１２５、１１２７、１１２９および１１３１に対応する。
【００８４】
図１３は、本発明の一実施形態に従ってフォーマットのタイプによって特徴付けられる出力デバイス構成レベルのポリシをセッティングするためのダイアログボックス１３００を示す。ダイアログボックス１３００は、ユーザ選択出力構成タブ５０７およびフォーマット優先順位タブ１１０５に応答して表示される。「出力フォーマットリスト」オブジェクト１３０５は、ユーザが選択することができるフォーマット（図８において議論されたフォーマットと同様）をリストする。ユーザは、「フォーマット追加」オブジェクト１３３３によりフォーマットを追加することができ、「フォーマット除去」オブジェクト１３３５によりフォーマットを除去することができる。オブジェクト１１１７、１１１９、１１２１、および１１２３は、図６に示されるオブジェクト６１７、６１９、６２１、および６２３に対応する。オブジェクト１３２５、１３２７、１３２９、および１３３１は、図１１に示されるオブジェクト１１２５、１１２７、１１２９、および１１３１に対応する。
【００８５】
ダイアログボックス５００〜１３００は、図５〜図１３に示される異なる構成レベル５０１〜５０７と、図２〜図３に示されるポリシレベル２０１〜２１１との間のマッピングを示すが、本発明の他の実施形態は、構成レベルとポリシレベルとの間の異なるマッピングを使用することが可能である。
【００８６】
図１４は、本発明の一実施形態に従って要求コンポーネント１４０１がカラー管理システム４００へのプログラムインターフェースコールを使用することを示す。この実施形態では、要求コンポーネント１４０１は、アプリケーションであるが、他の実施形態では、要求コンポーネント１４０１は、周辺ハードウェア内においてコンピュータ１１０に統合することができ、または、図１に示されるように、オペレーティングシステム１３４内に統合することができる。
【００８７】
要求コンポーネント１４０１は、図５〜図１３（ダイアログボックス５００〜１３００に対応する）に示されるポリシセッティングと同様とすることが可能であるポリシセッティングをセッティングすることによって、カラー管理システム４００を構成することが可能であり、この場合、ユーザは、図４に示されるユーザインターフェース４１３および構成モジュール４１１によりポリシセッティングを入力する。ポリシセッティングは、カラースペースおよび色域マッピングの仕様など、図５〜図１３の様々なオブジェクトに対応することが可能である。要求コンポーネント１４０１は、入力１４０３（図１４に示される実施形態ではＡＰＩコールＳＥＴ（Ａ，Ｂ）である）をカラー管理システム４００に送る。入力１４０３は、パラメータ１４０９（ポリシセッティングの値に対応する）およびパラメータ１４１１（関連する構成レベルに対応する）を含む。入力１４０３に応答して、カラー管理システム４００は、結果（リターン結果１４０７に対応する）を返し、この場合、パラメータ１４１３は、ポリシセッティングの値が首尾よく更新されたかを表す。
【００８８】
また、要求コンポーネント１４０１は、入力１４０５（この実施形態ではＡＰＩコールＧＥＴ（Ａ，Ｂ）である）をカラー管理システム４００に送って、ポリシセッティングの現行値を得ることが可能である。パラメータ１４０９は、ポリシセッティングの表示に対応し、パラメータ１４１１は、関連する構成レベルに対応する。入力１４０５に応答して、カラー管理システム４００は、結果（リターン結果１４０７に対応する）を返し、パラメータ１４１３は、ポリシセッティングの値を表す。
【００８９】
図１５は、本発明の一実施形態に従って要求コンポーネント１５０１が中間コンポーネント１５５１を通してカラー管理システム４００へのプログラムインターフェースコールを使用することを示す。図１４の場合と同様に、要求コンポーネント１５０１は、入力（パラメータ１５０９および１５１１を有する入力１５０３、またはパラメータ１５１５および１５１７を有する入力１５０５）をカラー管理システムに送信する。しかし、入力は、他のアプリケーションまたはユーティリティプログラムとすることが可能である中間コンポーネント１５５１を通して送られる。中間コンポーネント１５５１は、入力をカラー管理システム４００に転送する。また、中間コンポーネント１５５１は、結果（リターン＿結果１５０７）を要求コンポーネント１５０１に転送し、この場合、パラメータ１５１３は、結果を表す。
【００９０】
図１４および図１５を参照すると、入力１４０３、１４０５、１５０３、および１５０５は、各入力内において複数のポリシセッティングをサポートするように拡張することができ、この場合、パラメータ１４０９、１４１５、１５０９、１５１５は、パラメータセッティングのリストを含むことが可能であり、パラメータ１４１３および１５１３は、対応するパラメータセッティングのそれぞれについて結果のリストを含むことが可能である。
【００９１】
プログラミングインターフェース（または、より簡単にはインターフェース）は、コードの１つまたは複数のセグメントが、コードの１つまたは複数の他のセグメントによって提供される機能と通信するか、またはそれにアクセスすることを可能にする任意の機構、プロセス、プロトコルと見なすことができる。代替として、プログラミングインターフェースは、他のコンポーネントの１つまたは複数の機構、メソッド、関数コール、モジュールなどに通信結合することができるシステムのコンポーネントの１つまたは複数の機構、メソッド、関数コール、モジュール、オブジェクトなどと見なすことができる。前文の「コードのセグメント」という用語は、１つまたは複数の命令またはコードのラインを含むことが意図され、適用される用語、またはコードセグメントが別々にコンパイルされるか、またはコードセグメントがソースコード、中間コード、もしくはオブジェクトコードとして提供されるか、コードセグメントがランタイムシステムまたはプロセスにおいて使用されるか、または、コードセグメントが同じマシン、もしくは異なるマシンにあるか、もしくは複数のマシンにわたって分散するか、または、コードのセグメントによって現される機能が、完全にソフトウェアにおいて、完全にハードウェアにおいて、もしくはハードウェアおよびソフトウェアの組合せにおいて実施されるかに関係なく、同じコードモジュール、オブジェクト、サブルーチン、機能などを含む。
【００９２】
概念的には、プログラミングインターフェースは、図１６または図１７に示されるように一般的に見ることができる。図１６は、第１コードセグメントおよび第２コードセグメントが通信するコンジットとしてのインターフェース、インターフェース１を示す。図１７は、インターフェースオブジェクトＩ１およびＩ２（第１コードセグメントおよび第２コードセグメントの一部であるか、または一部ではないことが可能である）を備えるものとしてのインターフェースを示し、これにより、システムの第１コードセグメントおよび第２コードセグメントは、媒体Ｍを介して通信することが可能になる。図１７を考慮すると、インターフェースオブジェクトＩ１およびＩ２を同じシステムの別々のインターフェースと見なすことが可能であり、また、オブジェクトＩ１およびＩ２ならびに媒体Ｍがインターフェースを備えるものと見なすことが可能である。図１６および図１７は、フローの各側における双方向のフローおよびインターフェースを示すが、ある実施態様は、一方向の情報フローのみ（もしくは、以下で記述されるように情報フローなし）を有することが可能であり、または、インターフェースオブジェクトを一方の側においてのみ有することが可能である。例として、限定ではなく、アプリケーションプログラミングインターフェース（ＡＰＩ）、エントリポイント、メソッド、関数、サブルーチン、リモートプロシージャコール、およびコンポーネントオブジェクトモデル（ＣＯＭ）インターフェースなどの用語は、プログラミングインターフェースの定義内に内包される。
【００９３】
そのようなプログラミングインターフェースの態様は、第１コードセグメントが情報を第２コードセグメントに送信する方法（「情報」は、最も広範な意味で使用され、データ、コマンド、要求などを含む）、第２コードセグメントが情報を受信するメソッド、ならびに情報の構造、シーケンス、シンタックス、編成、スキーマ、タイミング、および内容を含むことが可能である。これに関して、情報がインターフェースによって定義される形でトランスポートされる限り、媒体が有線または無線であるか、もしくは両方の組合せであるかに関係なく、基礎となるトランスポート自体は、インターフェースのオペレーションに重要ではない場合がある。ある状況では、情報は、従来の意味で一方向または両方向で渡されないことがあるが、その理由は、１つのコードセグメントが第２コードセグメントによって実行される機能に単にアクセスするときのように、情報の転送が、他の機構（例えば、コードセグメント間の情報フローとは別に、バッファ、ファイルなどに配置される情報）を介するか、または存在しないことがあるからである。これらの態様のいずれかまたはすべては、コードセグメントが、疎結合された構成、または密結合された構成においてシステムの一部であるかに応じてなど、所与の状況において重要である可能性があり、したがって、このリストは、例示であり、限定ではないと見なされるべきである。
【００９４】
プログラミングインターフェースのこの概念は、当業者には既知であり、本発明の以上の詳細な記述から明らかである。しかし、プログラミングインターフェースを実施する他の方式があり、明らかに排除されない限り、これらも、本明細書の終わりに述べられる請求項によって包含されることを意図する。そのような他の方式は、図１６および図１７の簡略的な図より洗練され、または複雑であるように見える可能性があるが、それにもかかわらず、同じ機能を実行して、同じ全体的な結果を達成する。ここで、プログラミングインターフェースのいくつかの例示的な代替実施態様を簡潔に記述する。
【００９５】
１つのコードセグメントから他への通信は、通信を複数の離散通信に分割することによって間接的に達成することができる。これは、図１８および図１９に概略的に示される。図示されるように、機能の分割可能なセットの観点で、いくつかのインターフェースを記述することができる。それゆえ、数学では、２４すなわち２かける２かける３かける２を提供することが可能であるように、図１６および図１７のインターフェース機能をファクタ化して、同じ結果を達成することが可能である。したがって、図１８に示されるように、インターフェース、インターフェース１によって提供される機能は、インターフェースの通信を複数のインターフェース、インターフェース１Ａ、インターフェース１Ｂ、インターフェース１Ｃなどに変換するように、さらに分割し、一方、同じ結果を達成することが可能である。図１９に示されるように、インターフェースＩ１によって提供される機能は、複数のインターフェースＩ１ａ、Ｉ１ｂ、Ｉ１ｃなどにさらに分割し、一方、同じ結果を達成することが可能である。同様に、第１コードセグメントから情報を受信する第２コードセグメントのインターフェースＩ２は、複数のインターフェースＩ２ａ、Ｉ２ｂ、Ｉ２ｃなどにファクタ化することができる。ファクタ化するとき、第１コードセグメントに含まれるインターフェースの数は、第２コードセグメントに含まれるインターフェースの数と整合する必要はない。図１８および図１９の場合のどちらにおいても、インターフェース、インターフェース１およびＩ１の機能的趣旨は、それぞれ、図１６および図１７と依然として同じである。インターフェースのファクタ化は、ファクタ化を認識することが困難であることがるように、結合、可換、および他の数学的プロパティに準拠することも可能である。例えば、オペレーションの順序は、重要ではないこともあり、その結果、インターフェースによって実行される機能は、他のコードまたはインターフェースの部分によって、インターフェースに到達するかなり前に実行する、またはシステムの別のコンポーネントによって実行することが可能である。さらに、プログラミング分野の技術者なら、同じ結果を達成する様々な関数コールを作成する様々な方式があることを理解することができる。
【００９６】
いくつかの場合、プログラミングインターフェースのある態様（例えば、パラメータ）を無視、追加、または再定義する一方、意図した結果を依然として達成することが可能であることがある。これは、図２０および図２１に示される。例えば、図１６のインターフェース、インターフェース１が、関数コールＳｑｕａｒｅ（入力、精度、出力）を含むと想定し、入力、精度、出力の３つのパラメータを含むコールは、第１コードセグメントから第２コードセグメントに発行される。図２０に示されるように、中間パラメータの精度が所与のシナリオにおいて重要ではない場合、単に無視することができ、またはさらには無意味な（この状況では）パラメータで置き換えることができる。また、重要ではない追加パラメータを追加することも可能である。どちらの場合でも、入力が第２コードセグメントによってスクエアされた後、出力が返される限り、スクエアの機能を達成することができる。精度は、コンピューティングシステムにおける何らかのダウンストリームまたは他の部分にとって、意味のあるパラメータである可能性が非常に高いが、精度が、スクエアを計算する狭義の目的では必要ではないと認識されると、置き換えるか、または無視することができる。例えば、有効な精度値を渡す代わりに、結果に悪影響を与えずに、誕生日などの無意味な値を渡すことができる。同様に、図２１に示されるように、インターフェースＩ１は、インターフェースＩ１’によって置き換えられ、パラメータを無視するか、またはパラメータをインターフェースに追加するように再定義される。インターフェースＩ２は、同様に、インターフェースＩ２’として再定義し、不必要なパラメータ、または他で処理することができるパラメータを無視するように再定義することができる。ここで重要なことは、いくつかの場合、プログラミングインターフェースは、ある目的には必要とされないパラメータなどの態様を含むことが可能であり、したがって、無視するか、または再定義するか、あるいは他の目的について他で処理することができる。
【００９７】
また、２つの別々のコードモジュール間の「インターフェース」が形態を変更するように、それらのモジュールの機能のいくつかまたはすべてをマージすることも実行可能であることがある。例えば、図１６および図１７の機能は、それぞれ、図２２および図２３の機能に変換することができる。図２２では、図１６の以前の第１コードセグメントおよび第２コードセグメントは、それらの両方を含むモジュールにマージされる。この場合、コードセグメントは、互いに依然として通信することが可能であるが、インターフェースは、単一モジュールにより適切である形態に適合することができる。それゆえ、例えば、フォーマルコールおよびリターンステートメントは、もはや必要ではない可能性があるが、インターフェース、インターフェース１による同様の処理または応答は、依然として有効である可能性がある。同様に、図２３に示されるように、図１７からのインターフェースＩ２の一部（またはすべて）は、インターフェースＩ１”を形成するように、インターフェースＩ１にインライン式に書き込むことができる。図示されるように、インターフェースＩ２は、Ｉ２ａおよびＩ２ｂに分割され、インターフェース部分Ｉ２ａは、インターフェースＩ１とインライン式にコード化されて、インターフェースＩ１”を形成する。具体的な例として、図１７のインターフェースＩ１が関数コールＳｑｕｒｅ（入力、出力）を実行し、これは、インターフェースＩ２によって受信され、その値を処理した後、第２コードセグメントによって入力と共に渡され（それをスクエアするために）、出力と共にスクエアされた結果を再び渡すことを考慮する。そのような場合、第２コードセグメントによって実行される処理（入力をスクエアする）は、インターフェースへのコールなしで、第１コードセグメントによって実行することができる。
【００９８】
１つのコードセグメントから他への通信は、通信を複数の離散通信に分割することによって、間接的に達成することができる。これは、図２４および図２５に概略的に示される。図２４に示されるように、ミドルウェア（元のインターフェースから機能および／またはインターフェース機能を分離するので分離インターフェース）の１つまたは複数の部分は、第１インターフェースであるインターフェース１での通信を変換して、それらを異なるインターフェース、この場合はインターフェース、インターフェース２Ａ、インターフェース２Ｂ、およびインターフェース２Ｃに準拠させるために提供される。これは、実行することができるが、例えば、インターフェース１プロトコルに従ってオペレーティングシステムなどと通信するように設計されるアプリケーションのインストールベースが存在するが、次いで、オペレーティングシステムが、この場合はインターフェース、インターフェース２Ａ、インターフェース２Ｂ、およびインターフェース２Ｃである異なるインターフェースを使用するように要求される場合である。重要なことは、第２コードセグメントによって使用される元のインターフェースが、第１コードセグメントによって使用されるインターフェースともはやコンパチブルではないように変更され、それにより、媒介物を使用して、旧インターフェースおよび新インターフェースをコンパチブルにすることである。同様に、図２５に示されるように、第３コードセグメントを分離インターフェースＤＩ１と共に導入して、インターフェースＩ１から通信を受信することができ、また分離インターフェースＤＩ２と共に導入して、ＤＩ２と共に作用するが、同じ機能的結果を提供するように再設計されたインターフェースＩ２ａおよびＩ２ｂなどにインターフェース機能を送信することができる。同様に、ＤＩ１およびＤＩ２は、共に作用して、図１７のインターフェースＩ１およびＩ２の機能を新しいオペレーティングシステムに転送し、一方、同じまたは同様の機能的結果を提供することが可能である。
【００９９】
他の可能な変形形態は、コードを動的に書き直して、インターフェース機能をその他と置き換えるが、同じ全体的な結果を達成するようにすることである。例えば、中間言語（例えば、マイクロソフトＩＬ、Ｊａｖａ（登録商標）ＢｙｔｅＣｏｄｅなど）において提示されるコードセグメントが実行環境（．ＮＥＴフレームワーク、Ｊａｖａ（登録商標）ランタイム環境、または他の同様のランタイムタイプ環境によって提供されるものなど）においてジャストインタイム（ＪＩＴ）コンパイラまたはインタープリタに提供されるシステムが存在することが可能である。ＪＩＴコンパイラは、第１コードセグメントから第２コードセグメントに通信を動的に変換する、すなわち通信を第２コードセグメント（元のまたは異なる第２コードセグメント）によって要求することができる異なるインターフェースに準拠させるように書くことができる。これは、図２６および図２７に示される。図２６からわかるように、このアプローチは、上述された分離シナリオと同様である。これは、実行することができるが、例えば、アプリケーションのインストールベースが、インターフェース１プロトコルに従ってオペレーティングシステムと通信するように設計されるが、次いで、オペレーティングシステムが、変更されて、異なるインターフェースを使用する場合である。ＪＩＴコンパイラを使用して、通信をインストールベースアプリケーションからオペレーティングシステムの新しいインターフェースに実行中に準拠させることができる。図２７に示されるように、インターフェースを動的に書き直すこのアプローチを適用して、動的にインターフェースを分解するか、そうでなければインターフェースを同様に変更することができる。
【０１００】
また、代替実施形態によるインターフェースと同じまたは同様の結果を達成する上述されたシナリオは、様々な方法でシリアルおよび／またはパラレルに、あるいは他の介在コードと共に、組み合わせることもできることにも留意されたい。それゆえ、上記で提示された代替実施形態は、相互に排他的ではなく、混合、整合、および組み合わせて、図１６および図１７において提示された一般的なシナリオと同じまたは等価のシナリオを生成することができる。また、ほとんどのプログラミング構築の場合と同様に、本明細書において記述されていない可能性があるが、それにもかかわらず、本発明の精神および範囲によって表されるインターフェースの同じまたは同様の機能を達成する他の類似の方法が存在することにも留意されたい。すなわち、これは、少なくとも部分的には、インターフェースの価値の基盤となる、インターフェースによって表される機能、およびインターフェースよって可能になる有利な結果であることに留意されたい。
【０１０１】
本発明は、本発明を実行する現在好ましいモードを含めて、特定の例に関して記述されたが、当業者なら、添付の請求項において述べられる本発明の精神および範囲内にある上述されたシステムおよび技術の多くの変更および置換が存在することを理解するであろう。
【図１】
2010231804.tif 000005
【図２】
2010231804.tif 000006
【図３】
2010231804.tif 000007
【図４】
2010231804.tif 000008
【図５】
2010231804.tif 000009
【図６】
2010231804.tif 000010
【図７】
2010231804.tif 000011
【図８】
2010231804.tif 000012
【図９】
2010231804.tif 000013
【図１０】
2010231804.tif 000014
【図１１】
2010231804.tif 000015
【図１２】
2010231804.tif 000016
【図１３】
2010231804.tif 000017
【図１４】
2010231804.tif 000018
【図１５】
2010231804.tif 000019
【図１６】
2010231804.tif 000020
【図１７】
2010231804.tif 000021
【図１８】
2010231804.tif 000022
【図１９】
2010231804.tif 000023
【図２０】
2010231804.tif 000024
【図２１】
2010231804.tif 000025
【図２２】
2010231804.tif 000026
【図２３】
2010231804.tif 000027
【図２４】
2010231804.tif 000028
【図２５】
2010231804.tif 000029
【図２６】
2010231804.tif 000030
【図２７】
2010231804.tif 000031