(57)【特許請求の範囲】
【請求項１】
コンピュータ実行可能命令を記憶するように構成されたメモリ及び１つまたは複数のハードウェアプロセッサを備え、前記メモリと通信し、前記コンピュータ実行可能命令を実行するように構成されたコンピューティング装置を備えるシステムであって、前記コンピュータ実行可能命令は、少なくとも、ｎ次元カラーモデルによって指定されたカラーに対する、前記ｎ次元カラーモデルのカラー次元ごとに最小次元カラー値及び最大次元カラー値を備えるカラー検索範囲を取得し、前記カラー検索範囲の次元ごとに、前記カラー検索範囲の対応するカラー次元の前記最小次元カラー値及び最大次元カラー値の少なくとも一部に基づいて、１つまたは複数の２進分割範囲を計算し、各次元の１つまたは複数の２進分割範囲の順列の少なくとも一部に基づいて、前記１つまたは複数の２進分割範囲の順列からのインタリーブされたビットを備える１つまたは複数の整数検索範囲を生成し、前記１つまたは複数の整数検索範囲を検索パラメータとして備える検索クエリを生成し、前記検索クエリの少なくとも一部に基づいて、少なくとも１つのインデックス化された整数カラー値に関連付けられたレコードを備えるデータストアの、前記１つまたは複数の整数検索範囲内のカラーの検索を開始し、前記１つまたは複数の整数検索範囲内の少なくとも１つのインデックス化された整数カラー値に関連付けられたレコードを備える検索結果を、前記データストアから受信する、前記システム。
【請求項２】
前記ｎ次元のカラーモデルがＲＧＢカラーモデルである、請求項１に記載のシステム。
【請求項３】
前記インタリーブされたビットが、赤の２進分割範囲、緑の２進分割範囲及び青の２進分割範囲の順列を備える、請求項２に記載のシステム。
【請求項４】
前記インタリーブされたビットが、前記赤の２進分割範囲からの赤のビット、前記緑の２進分割範囲からの緑のビット及び前記青の２進分割範囲からの青のビットの繰り返しパターンで配置され、前記繰り返しパターンが最上位ビットから最下位ビットへ配置されている状態で前記赤のビット、前記緑のビット及び前記青のビットが、同一の順番のビットからである、請求項３に記載のシステム。
【請求項５】
前記計算された１つまたは複数の２進分割範囲の少なくとも一部を、分岐ビットを判定することによって識別する、請求項１に記載のシステム。
【請求項６】
前記レコードが、前記１つまたは複数の整数検索範囲内の１つまたは複数のインデックス化された整数カラー値に関連付けられたオブジェクトレコードを備える、請求項１に記載のシステム。
【請求項７】
前記最小次元カラー値または前記最大次元カラー値の少なくとも１つが、人間のカラー差分の知覚の式の少なくとも一部に基づいて判定される、請求項１に記載のシステム。
【請求項８】
特定のコンピュータ実行可能命令で構成されたハードウェアコンピューティング装置の制御下で、ｎ次元カラーモデルによって指定されたカラーに対する、前記ｎ次元カラーモデルのカラー次元ごとに最小次元カラー値及び最大次元カラー値を備えるカラー検索範囲を取得すること、前記カラー検索範囲内のカラー次元ごとの前記最小次元カラー値及び最大次元カラー値からのビットをインタリーブすることによって、１つまたは複数の整数検索範囲を計算すること、前記１つまたは複数の整数検索範囲を検索パラメータとして備える検索クエリの少なくとも一部に基づいて、少なくとも１つのインデックス化された整数カラー値に関連付けられたレコードを備えるデータストアの検索を開始すること及び前記１つまたは複数の整数検索範囲内の少なくとも１つのインデックス化された整数カラー値に関連付けられた１つまたは複数のレコードを備える検索結果を、前記データストアから受信することを備えるコンピュータ実装方法。
【請求項９】
前記ｎ次元のカラーモデルがＲＧＢカラーモデルである、請求項８に記載のコンピュータ実装方法。
【請求項１０】
ビットをインタリーブすることが、赤の２進分割範囲、緑の２進分割範囲及び青の２進分割範囲を置換することを備える、請求項９に記載のコンピュータ実装方法。
【請求項１１】
ビットをインタリーブすることが、前記赤の２進分割範囲からの赤のビット、前記緑の２進分割範囲からの緑のビット及び前記青の２進分割範囲からの青のビットの繰り返しパターンで配置することを備え、前記繰り返しパターンが最上位ビットから最下位ビットへ配置されている状態で前記赤のビット、前記緑のビット及び前記青のビットが、同一の順番のビットからである、請求項１０に記載のコンピュータ実装方法。
【請求項１２】
レコードが、前記１つまたは複数の整数検索範囲内の１つまたは複数のインデックス化された整数カラー値に関連付けられた品目レコードを備える、請求項８に記載のコンピュータ実装方法。
【請求項１３】
前記最小次元カラー値または前記最大次元カラー値の少なくとも１つが、人間のカラー差分の知覚の式の少なくとも一部に基づいて判定される、請求項８に記載のコンピュータ実装方法。
【請求項１４】
１つまたは複数のＲＧＢカラーに各々が関連付けられた１つまたは複数のオブジェクトレコードを記憶するように構成されたデータストアと、１つまたは複数のハードウェアプロセッサ及びコンピュータ実行可能命令を記憶しているメモリとを備えるコンピューティング装置であって、前記１つまたは複数のハードウェアプロセッサが前記コンピュータ実行可能命令を実行するように構成されたコンピューティング装置を備えるシステムであって、前記コンピュータ実行可能命令が、少なくとも、前記データストアのオブジェクトレコードに関連付けられたＲＧＢカラーごとに、前記ＲＧＢカラーの赤の次元値、緑の次元値及び青の次元値からの、最上位桁から最下位桁に並べ替えられたインタリーブされたビットを備える１次元カラー空間に対応する整数カラー値を生成し、前記整数カラー値を、前記データストアに、前記ＲＧＢカラーに関連するものとして記憶し、整数カラー値を、前記データストアでインデックス化する、前記システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、高速カラー検索に関する。
【背景技術】
【０００２】
一般に記載すると、コンピューティング装置は、カラーに基づいて、情報を検索し得る。１つのシステムで、カラー記述は、データベースの画像または任意のオブジェクトに関連してタグ付けされ得る。検索で、ユーザはキーワード（例えば、「緑」）を入力しても良く、タグ／キーワード「緑」に一致する任意のオブジェクトが返され得る。ユーザは、次に、検索結果をブラウズして、特定の緑を見いだすことができる。
【０００３】
ユーザはまた、カラーピッカーユーザインタフェースを通じて、検索するカラーを指定し得る。例えば、サーチエンジンは、検索の１つの基準として、表示された１２のカラーのうち１つをマウスで選択し得るカラー画像検索を提供し得る。サーチエンジンは、次に、インターネットの画像またはいくつかのデータベースのいずれかの画像などの、選択されたカラーを含む画像を返すであろう。例えば、紫のカラーが、サーチエンジンのインタフェースを用いて選択され得る。キーワードと組み合わせて検索されると、サーチエンジンは、そのキーワードに関係しまた選択された紫のカラーも含む画像を返し得る。
【発明の概要】
【課題を解決するための手段】
【０００４】
本発明では、データストアを、１つまたは複数のｎ次元カラーに基づいて、迅速に検索するシステム及び方法を記載する。データストアのｎ次元カラーは、インタリーブされた整数に変換されインデックス化され得る。ｎ次元カラー検索範囲は、１つまたは複数の整数検索範囲に変換され得る。高速カラー検索クエリは、１つまたは複数の整数検索範囲に基づいて、定式化され、検索のためにデータストアに送信され得る。データストアは、インタリーブされた整数のインデックスを用いて、整数検索範囲をインタリーブされた整数と迅速に比較し、所望のカラー範囲に一致した１つまたは複数のカラーまたはオブジェクトの結果を送り返し得る。
【図面の簡単な説明】
【０００５】
【図１】高速カラー検索システムの例示的なネットワークトポロジを表すブロック図である。
【図２】図１に含まれる高速カラー検索データストアを生成または構成するプロセスの例を示す流れ図である。
【図３】ビットをインタリーブして、多次元カラーモデルを１次元カラー表現に変換する例を示す概略図である。
【図４】高速カラー検索のプロセスの例を示す流れ図である。
【図５】高速カラー検索の前処理の処理の例を示す流れ図である。
【図６】範囲の接頭辞の順列から計算されたインタリーブされた１次元カラー範囲の例を示す概略図である。
【発明を実施するための形態】
【０００６】
一般に記載すると、本開示の態様は、高速カラー検索データストアを生成すること及び／または１つまたは複数のコンピューティング装置によって高速カラー検索を行うことに関する。構造化されたデータストアでのカラー（例えば、特定のＲＧＢカラーまたはＲＧＢカラー範囲）による検索は、カラーの多次元という性質によって、困難なものとなることがある。そのようなデータストアは、関係データベースまたは何らかの他の種類のデータストアのオブジェクトに関連付けられた３次元ＲＧＢカラーを含み得る。例えば、ＲＧＢカラー値（例えば、＃ｃ１０８ｅ５）は、データストアに、緑のドレス、緑の画像または緑と関連を有する任意の他のデータオブジェクトに関連して記憶され得る。
【０００７】
そのようなデータストアのＲＧＢカラー値は、検索のためにインデックス化され得る。データストアのインデックスは、書き込みの追加という犠牲を払いかつデータの余分なコピーを保持するさらなる記憶空間を用いて、データストアテーブルのデータ検索動作の速度を向上させるデータ構造であり得る。インデックスは、データストアテーブルがアクセスされるたびにデータストアテーブルのすべての行を検索する必要なしに、データを迅速に見つけるのに用いる。インデックスは、データストアテーブルの１つまたは複数の列を用いて、作成することができ、これは、素早いランダム探索及び順序付けられたレコードへの効率的なアクセスの両方に対する基盤を提供する。従来の整数フィールドのそのようなインデックスは、整数範囲内の素早い探索を可能にし得る。例えば、インデックス化された整数フィールドに関して、「２０００と３０００の間」の検索は、整数フィールドが２０００と３０００の間にあるすべてのレコードを素早く返し得るし、すべての行の整数値を比較するよりも桁違いに速くなることがある。
【０００８】
しかし、ＲＧＢフィールドのインデックスなどの、ｎ次元カラー値のインデックスは、ｎ次元カラー範囲の検索の助けまたは速度を上げることにならない。多くのシナリオで、ＲＧＢカラー値は、データストアのオブジェクトレコードにデータストアで関連付けられ得る。ＲＧＢフィールドもインデックス化され得る。しかし、従来のデータストアは、本質的にＲＧＢフィールドを正確にインデックス化しない。例えば、ＲＧＢ値（例えば、１６進数で＃ｃ１０８ｅ５）は、３つの次元を含む。赤の次元（「ｃ１」）、緑の次元（「０８」）及び青の次元（「ｅ５」）である。これらの別々の１６進値のビットは、次元別に配置されるが、すべての次元にわたって最上位から最下位に配置されていない。これにより、範囲の比較を、単一のインデックスで行うのは難しくなっている。例えば、上位の赤のビットから下位の赤のビットまでを含むＲＧＢの赤の次元のビットが最初に来る。これに、緑の上位ビットから下位ビットが続き、これにやはり青の上位ビットから下位ビットが続く。すなわち、カラー検索範囲が（＃ｃ００１ｅ０から＃ｃｆ１０ｆ０）と指定されたら、いずれのレコードが範囲内に関連するカラーを有するのか迅速に判定するのに、単一の従来のインデックスを用いることはできない。なぜならば、そのような検索は、フィールドのすべてのビットが最上位から最下位まで順序付けられているインデックスデータ構造（例えば、通常、整数値または同様のデータタイプ）に依存するからである。
【０００９】
この問題を解決する１つのやり方として、データストアに、次元のカラーの各々に相当する複数のインデックスフィールドを有することがあり得る。例えば、赤用に１つのフィールド（例えば、１つのレコードの一部として、値「ｃｌ」を含み得る）、緑用に別のフィールド（例えば、１つのレコードの一部として、値「０８」を含み得る）、青用にさらに別のフィールド（例えば、１つのレコードの一部として、値「ｅ５」を含み得る）が存在し得る。これらのフィールドの各々は、個別にインデックス化され得る。すなわち、範囲が検索されるとき、各インデックスは、インデックス化された個別のカラーとの比較に用いられ得る（例えば、＃ｃ００１ｅ０から＃ｃｆ１０ｆ０の範囲の場合、「ｃ０」から「ｃｆ」の範囲が赤のインデックスに適用され得る。「０１」から「０ｆ」までの範囲が緑のインデックスに適用され得る。「ｅ０」から「ｆ０」の範囲が青のインデックスに適用され得る）。データストアは、次に、３つのインデックスのすべてが、レコードがそれぞれの範囲内にあることを示したかどうかを判定しなければならない。
【００１０】
前述の種類の次元のインデックス化の欠点は、データストアが、１つではなく３つのインデックスを検索し、次に、すべてのインデックスに対してすべての基準が満たされたかどうかの比較を行わなくてはならないことである。この手順は、通常、検索を行うのに単一のインデックスを用いるよりも効率が悪い。
【００１１】
本明細書に記載した実施形態は、クエリ速度を上げ、検索を高速化し、上記の欠点の多くを克服することを可能にする。より一般には、カラー空間に加えて、本明細書に記載した技術は、従来の３次元座標空間などの任意の多次元空間の高速検索を可能にし得る。例えば、３Ｄビデオゲームで、オブジェクトは、マップの３次元座標空間（例えば、Ｘ水平次元、Ｙ深さ次元及びＺ垂直次元、各次元は、他の次元と直交している）に配置され得る。そのようなビデオゲームで、本明細書に記載したような、３次元座標検索範囲をインタリーブされた１次元整数検索範囲に折り畳む高速検索技術は、３次元座標検索範囲内のビデオゲームオブジェクトを迅速に見いだすのに用いられ得る。
【００１２】
本開示による１つの実施形態で、ｎ次元カラー空間を１次元カラー空間に変換することができる。簡潔にするために、本明細書に記載した実施形態はしばしば３次元カラー空間であるＲＧＢカラーを参照するが、他の次元のカラー空間（例えば、４次元または５次元など）は、本明細書に記載した技術と同一の１つまたは複数の技術を用いて、ＲＧＢ３次元カラー空間に対して記載した利点と同一の利点を得ても良い。すなわち、同一のまたは同様の技術は、ＸＹＺ、色相・彩度・明度／輝度（ＨＳＢ／ＨＳＬ）、色相・彩度・明度（ＨＳＶ）、色相・彩度・明度（ＨＩＳ）、シアン・マゼンタ・イエロー・キー（ＣＭＹＫ）、Ｌａｂ、明度・彩度・色相（ＬＣＨ）、ＬＭＳ、画像またはビデオで用いられるようなＹＣｂＣｒ及びＹ’ＣｂＣｒ、色合い・彩度・明度（ＴＳＬ）、赤・緑（ＲＧ）、ＹＩＱ（ＮＴＳＣカラーテレビシステムによって用いられるような）及びＹＵＶ（ＰＡＬカラーテレビシステムによって用いられるような）のカラー空間に適用され得る。当業者が認識するように、カラー次元に対して整数フォーマットを用いないカラー空間で、本明細書に記載した技術は、浮動小数点次元値を整数次元値に変換することによって、やはり適用され得る。
【００１３】
ＲＧＢカラー空間のカラーの各々、すなわち赤、緑及び青は、データの単一のバイト（８ビット）で表すことができる。３つのカラーのビットをインタリーブすることによって（例えば、図３を参照してさらに記載するように、各文字が１ビットを表すとして、ＲＧＢＲＧＢＲＧＢＲＧＢＲＧＢＲＧＢＲＧＢＲＧＢ）、各カラーを一意に表しながらも１次元のみを有する２４ビット整数を形成することができる。ＲＧＢビットをインタリーブすることの利点の１つは、ビットの重要性の順番が保たれることである。一般に、人間の知覚の観点で近接しているカラーは、この整数範囲でもお互いに近接している（例えば、同一の上位ビットを有する傾向がある）。
【００１４】
ビットの順番を保つことの利点の１つは、そのような順番付けは、３次元カラー値の、黒（すなわち、＃００００００）及び白（（すなわち、＃ＦＦＦＦＦＦ）からの距離を効果的に表すことである。一般に、上位のビットほど、黒からの距離が大きいことを示し（すなわち、白により近い）、一般に、上位ビットが少なく下位ビットが多くなると、白からの距離が大きいことを示す（すなわち、黒により近い）。すなわち、事実上、インタリーブされた値は、グレースケールの値と考えられ得る。
【００１５】
データストアで各カラーに対して、その等価の２４ビットのインタリーブされた整数を保持する列が追加され得る。標準的なデータストアの整数インデックスが、この列を有するテーブルに追加され得る。インタリーブされたカラー値のそのようなインデックスは、グレースケールのインデックス値と考えられ得る。ＲＧＢカラー範囲に基づいて検索が行われるとき、カラー範囲を複数のインタリーブされたカラー範囲へ変換する前処理が発生し得る。前処理は、それぞれの個別のカラーのバイトで１つまたは複数の２進分割を判定し得る。例えば、赤のカラー範囲が「００００１１１０」から「０００１０００１」の間に及ぶ場合、前処理は、赤のカラー検索を、他のカラーである緑及び青からの判定された範囲とともに置換（またはインタリーブ）することができる２つの範囲（「００００１１１０」から「００００１１１１」まで）及び（「０００１００００」から「０００１０００１」まで）に変換し得る。
【００１６】
ここで図１を参照すると、コンピューティング装置１０７が検索可能なカラーデータストア１０１を示すブロック図が示される。カラーデータストア１０１は、ＳＱＬデータベースなどの関係データベースまたは階層型データストアを含む、整数のインデックス化を可能とする任意のタイプのデータストアであり得る。１つまたは複数の非一時的なコンピュータ可読媒体に記憶されているカラーデータストア１０１は、１つまたは複数のデータストアテーブルを含む１つまたは複数の論理データストアを含み得る。カラーデータストア１０１は、データストアサービスを供給するソフトウェア命令を実行可能な単一のコンピューティング装置及び／またはデータストアサービスを協力して供給可能な多くのコンピューティング装置（例えば、ミラーリング、バックアップなどを可能にする）で実装され得る。さらに他の実施形態で、カラーデータストア１０１は、ウェブサービスとして、またはホスト型コンピューティング環境の１つまたは複数の仮想マシンによって実装され得る。ホスト型コンピューティング環境は、１つまたは複数の、供給されまた利用されるコンピューティングリソースを含み得る。このコンピューティングリソースは、コンピューティング装置、ネットワーキング装置及び／またはストレージ装置を含み得る。
【００１７】
カラーデータストア１０１は、カラーの列を有する１つまたは複数のテーブルを含み得る。例えば、テーブル１０３は、複数のレコードを含み得る。各レコードは、オブジェクトのデータ（または、オブジェクト識別子などのオブジェクトへの参照）を含み、ＲＧＢカラーに関連する。例えば、テーブル１０３の各オブジェクト参照は、ネットワークサイトで買うことができる品目（ジャケット、本、ホッチキス、サービスなど）を識別し得る。品目のデータは、テーブル１０３に、または別のテーブルもしくは品目の識別子を介してアクセス可能なデータストアに存在し得る。各品目は、テーブルで１つまたは複数のＲＧＢカラーに関連し得る（例えば、カラーマッピング）。オブジェクトに関連付けられたカラーは、オブジェクトのピクチャの分析によって導き出され得る。画像からカラーを引き出す種々の方法及びシステムは、代理人整理番号ＳＥＡＺＮ．９１２Ａ１に対応する２０１４年６月２６日に出願された米国特許出願第  号の「ＩＭＡＧＥ−ＢＡＳＥＤ  ＣＯＬＯＲ  ＰＡＬＥＴＴＥ  ＧＥＮＥＲＡＴＩＯＮ」、代理人整理番号ＳＥＡＺＮ．９１２Ａ２に対応する２０１４年６月２６日に出願された米国特許出願第  号の「ＩＭＡＧＥ−ＢＡＳＥＤ  ＣＯＬＯＲ  ＰＡＬＥＴＴＥ  ＧＥＮＥＲＡＴＩＯＮ」、代理人整理番号ＳＥＡＺＮ．９１２Ａ３に対応する２０１４年６月２６日に出願された米国特許出願第  号の「ＩＭＡＧＥ−ＢＡＳＥＤ  ＣＯＬＯＲ  ＰＡＬＥＴＴＥ  ＧＥＮＥＲＡＴＩＯＮ」及び代理人整理番号ＳＥＡＺＮ．９１２Ａ４に対応する２０１４年６月２６日に出願された米国特許出願第  号の「ＩＭＡＧＥ−ＢＡＳＥＤ  ＣＯＬＯＲ  ＰＡＬＥＴＴＥ  ＧＥＮＥＲＡＴＩＯＮ」、に記載され、その全体を参照により本明細書に組み込む。
【００１８】
いくつかの実施形態で、テーブル１０３は、オブジェクトのカラーへの１つまたは複数のマッピングを含み得る。データストアの複数の行は、画像オブジェクトなどのオブジェクトが、例えばピンキッシュ／パープル、イースターブルー及びフォレストグリーンに対するＲＧＢがコードされたカラーにマップされていることを示し得る。すなわち、特定のカラーに関するテーブル１０３のクエリは、データストアでそのカラーにマップされた１つまたは複数のオブジェクト／品目を示し得る。
【００１９】
同一のテーブルまたはテーブル１０５などの別のテーブルで、ＲＧＢカラーは、１次元整数値にマップされ得る。１次元整数値は、ＲＧＢがコードされたカラーのインタリーブされたビットを含み得る。例えば、イースターブルーのカラーコーディングが＃４４ＥＤＥ５の場合、インタリーブされた２４ビット整数は０１１１１１０１１００００１０１１１００００１１（ビットで表現すると）のように見え得る。インタリーブについては、本明細書に記載した図３を参照して、さらに記載する。いくつかの実施形態で、テーブル１０３及びテーブル１０５は、同一であり得る。その場合、オブジェクトは、カラーの、平坦化された１次元２４ビット整数の表現に直接マップされ得る。
【００２０】
データストアテーブルは、２４ビット整数を用いてクエリされて、カラーに関連付けられた１つまたは複数のオブジェクトを判定し得る。いくつかの実施形態で、データストア１０１は、ＳＱＬクエリを受信して、１つまたは複数のオブジェクトがカラー範囲内で関連するカラーを有するかどうかを判定し得る。例えば、ＳＱＬの「ｗｈｅｒｅ」句の文は、カラー範囲に関して検索をするのに用いられるパラメータであり得る（例えば、「ｗｈｅｒｅ  ２４ｉｎｔｃｏｌｏｒ  ｂｅｔｗｅｅｎ  「２３９８７４」  ａｎｄ  「７３６５８３」」）。この場合、列「２４ｉｎｔｃｏｌｏｒ」の値は、インタリーブされた２４ビットカラーである。２４ビットのカラーのＲＧＢカラーへのマッピング（または、いくつかの実施形態で、直接オブジェクトへの単純なマッピング）を用いることによって、データストアは、検索されたカラーの範囲に関連付けられたオブジェクトを識別し、返すことができるようになる。
【００２１】
カラーデータストア１０１は、データストアがクエリを受信し検索結果を送信することを可能にするネットワーク（例えば、プライベートネットワーク、インターネットなど）上で、直接的にまたは間接的に、多くの装置に接続され得る。データストアは、１つの装置（例えば、データストアサーバ）であっても良く、複数の装置であっても良く、または例えばインターネット／クラウド上でリモートホストされたリモートコンピューティング装置にあっても良い。
【００２２】
コンピューティング装置１０７は、ＩＰネットワーキング（インターネット、イントラネット、両方の組み合わせなど）などのネットワーキングを介して、クエリ１２０を発行し、データストア１０１にアクセスすることができても良い。コンピューティング装置１０７は、本明細書に記載したように、クライアントのカラー問い合わせを受信し、カラー検索モジュール１０９を介して問い合わせを処理し、１つまたは複数のインタリーブされたカラー範囲を生成したサーバ（またはサーバファームまたはホストされたコンピューティング装置）であり得る。次に、クエリ１２０は、解決のためにデータストア１０１に送られ得る。データストア１０１は、クエリ１２０（例えば、ＳＱＬクエリ）を受信した後、クエリ１２０を処理し、インタリーブされたカラー範囲をインタリーブされたカラー範囲のインデックス（例えば、テーブル１０５に含まれる）と比較した後で検索結果を含む応答１２２を返し得る。そのような比較により、応答１２２で返され得る１つまたは複数の一致するカラーまたはオブジェクト（例えば、品目または画像）がもたらされ得る。次に、コンピューティング装置１０７は、返されたカラー及び／またはオブジェクトをいかなる目的に対しても（例えば、品目をクライアント装置へ返す、指定された範囲に収まる一致するカラーをユーザに示すなど）用い得る。
【００２３】
いくつかの実施形態で、カラーデータストア１０１は、コンピューティング装置１０７に、従来の通信ネットワークを通じてよりもむしろ直接接続され得る。例えば、コンピューティング装置１０７は、カラーデータストア１０１を記憶し、インターネットを通じてまたはローカルユーザインタフェースを通じてユーザのカラークエリを受け入れるネットワークサーバ（または他のサーバ）プロセスを実行するのに加えてクエリに答えるデータストアプロセスを実行し得る。次に、カラー検索モジュール１０９は、カラークエリを処理し、インタリーブされたカラー範囲をデータストアプロセスに送り、応答を受信し得る。
【００２４】
いくつかの実施形態で、コンピューティング装置１０７は、互いに通信バスを経由して通信し得る処理ユニット、ネットワークインタフェース、非一時的なコンピュータ可読媒体ドライブ及び入出力装置インタフェースなどのコンピュータハードウェア及びソフトウェアのコンポネントの構成を含むユーザ装置（例えば、ホームコンピュータまたはオフィスコンピュータ、スマートフォン、タブレット、ウェアラブルコンピューティング装置など）を含み得る。ネットワークインタフェースは、１つまたは複数のネットワークまたはコンピューティングシステムに、接続性を提供し得る。すなわち、処理ユニットは、ネットワークを介して、他のコンピューティング装置、システムまたはサービスから、情報及び命令を受信し得る。処理ユニットは、メモリとも通信し、さらに、入出力装置インタフェースを介して出力情報を提供し得る。入出力装置インタフェースは、キーボード、マウス、デジタルペン、タッチスクリーンなどの種々の入力装置から入力も受け入れ得る。コンピューティング装置１０７のメモリは、処理ユニットが本開示の１つまたは複数の実施形態を実装するために実行し得るカラー検索モジュール１０９などのコンピュータプログラム命令を含み得る。メモリは、一般に、ＲＡＭ、ＲＯＭ及び／または他の持続的なまたは非一時的なコンピュータ可読記憶媒体を含む。
【００２５】
さらに、メモリは、ユーザブラウザを含み得る。ユーザブラウザは、例えばウェブサイトといったネットワークサイトと接触し、リモートサーバから受信した情報に基づいてグラフィックユーザインタフェースをロードしていても良い。ユーザブラウザは、検索を開始するのに用いられ得る。例えば、ユーザブラウザは、検索するカラー範囲を取得し、いくつかの実施形態では、キーワード、品目の値段、品目／オブジェクトのタイプなどの追加の検索パラメータを取得し得る。そのような追加のパラメータは、検索結果をカラーに加えてさらにフィルタリングするのに用いられ得る。カラー検索モジュール１０９は、コンピューティング装置１０７上で、ブラウザ内部（例えば、ＪＡＶＡＳＣＲＩＰＴ（登録商標）モジュールを介して）またはブラウザ外部のいずれか一方で実行されて、範囲を前処理し、カラー検索クエリ１２０を介して検索する１つまたは複数のインタリーブ範囲を生成し得る。この時点で、クエリ１２０は、カラーデータストア１０１に送られ、２４ビット整数カラーのインデックスの２４ビットのインタリーブされた検索範囲との比較を介して処理され得、応答１２２が生成され、コンピューティング装置１０７へ送り返され得る。応答１２２は、上記の追加のクエリパラメータに基づいて、さらにフィルタリングされ得る。応答１２２がいったん返されると、ブラウザまたは他のプロセスは、１つまたは複数の検索結果を表示かつ／または相互作用するようにグラフィカルユーザインタフェースを生成し得る。
【００２６】
カラーデータストア１０１の検索性能は、カラーデータストア１０１を、複数のサブデータストアシステムにわたって実装することによって、向上され得る。そのようなシナリオで、カラーデータストア１０１を構成する各サブデータストアは、特定の、あらかじめ定義したカラー範囲に対するクエリに答える役割を果たす。例として、単純なシナリオで、カラーデータストア１０１は、３つのサブデータストアを用いることによって実装され得る。各サブデータストアは、特定のインタリーブされたカラー範囲に対するクエリを受信するように構成され得る。例えば、平坦な１次元カラーが最上位ビット「０」で始まるクエリに応答するサブデータストア＃１、平坦な１次元カラーが「１０」で始まるクエリに応答するサブデータストア＃２及び平坦な１次元カラーが「１１」で始まるクエリに応答するサブデータストア＃３である。
【００２７】
各サブデータストアに割り当てられた範囲は、各サブデータストア内のインデックスカラー値の密度に基づいて、手動でまたは自動で構成され得る。１つの実施形態で、アルゴリズムは、あるサブデータストアを、より大きい、まばらにしか存在しないカラー範囲を扱うように構成し、別のサブデータストアを、より小さい、しかし密に存在するカラー範囲を扱うように構成し得る。そのようなアルゴリズムは、特定のカラー範囲内の、あり得る結果の数に基づいて、各サブデータストアをすぐさま調整できるように、人の介入なしに、実行され得る。このやり方は、各サブデータストアの処理能力によって、カラーデータストア１０１のレコードをサブデータストア中に広げ得る。
【００２８】
複数のサブデータストアのシナリオで、検索クエリを生成しているコンピュータは、次に、各サブデータストアシステムに対する別々のクエリを作り、これらのクエリを各サブデータストアシステムに並行して送り、結果を並行して受信し得る。この並列処理は、複数の、より小さいサブデータストアに同時にクエリすることによって、性能の向上をもたらし得る。
【００２９】
カラーデータストア１０１、特に、多次元カラーマッピング（例えば、ＲＧＢカラーまたは関連のあるカラーを有する品目）に対する１次元のインタリーブされたカラーマッピング（例えば、２４ビットのインタリーブされた整数）を含むテーブル（テーブル１０５など）は、図２で以下に記載するように、高速カラークエリをサポートするように生成され得る。
【００３０】
ここで、図２を参照して、コンピューティング装置１０７などのアクセスを行っているコンピューティング装置によって実装される高速カラーデータストア生成ルーティン２００の実施形態を記載する。ルーティン２００で概略を述べたアクション／要素は、カラー検索モジュール１０９などのコンピューティング装置１０７に関連するまたはカラーデータストア１０１に関連する１つまたは多くのコンピューティング装置／コンポネント／モジュールによって実装され得ることを当業者は理解されよう。よって、例として、ルーティン４００を、コンピューティング装置１０７によって行われているものとして、論理的に関連付けた。
【００３１】
ブロック２０２で、コンピューティング装置１０７は、カラーデータストア１０１にアクセスし得る（例えば、データストアにログイン、または、そうでなければ、クエリを行いデータストアにデータを記憶する準備をする）。アクセスを行っているコンピューティング装置は、コンピューティング装置１０７、またはカラーデータストア１０１を実装する任意のコンピュータ装置を含むカラーデータストア１０１と相互作用可能な任意の他のコンピューティング装置であり得る。
【００３２】
ブロック２０４で、コンピューティング装置１０７は、クエリを行い、カラーデータストア１０１で用いられているまたは利用可能な各カラーにアクセスし得る。次に、ブロック２０６で、コンピューティング装置は、多次元カラーデータストア１０１のすべてのカラーに対して、カラーデータストア１０１の多次元の各次元からビットをインタリーブし得る。例えば、以下でさらに論ずる図３に示すように、ＲＧＢカラー値の赤の次元のビット、緑の次元のビット及び青の次元のビットは、インタリーブされて、２４ビット整数を形成し得る。図３は、この出願全体にわたって、インタリーブはどのように行われ得るかということの１つの例を開示する。
【００３３】
図３で、ＲＧＢカラー♯１５ｂ０１ａは、「緑」として一般に知られているものに相当し得る。ＲＧＢ３次元カラー空間の一部であるこの緑色は、３次元（赤、緑及び青）を有し、それぞれ１０進数で（２１、１７６、２６）、１６進数で（１５、ｂ０、１ａ）またはビットで（０００１０１０１、１０１１００００、０００１１０１０）で表され得る。赤の次元３０２のビットは、最上位から最下位、左から右（例えば、ビックエンディアン、小さなメモリアドレスから上位のメモリアドレスへ）に順序付けられ得る。例えば、他のカラーと組み合わされて表示される赤い光の大きさ（例えば、ＬＥＤの「明るさ」）は、赤の次元の値によって測られ得る。各ビットは、その通常の８ビット／１バイトの整数の重みによって値を付けられる。すなわち、最上位ビットの「１」は、１２８（２の７乗（２＾７））と値を付けられ、最下位ビットの１は、１（２＾０）と値を付けられる。例の赤の次元の値３０２の場合、値は０００１０１０１であり、Ｒ７、Ｒ６、Ｒ５、Ｒ４、Ｒ３、Ｒ２、Ｒ１及びＲ０とそれぞれ呼ばれるビットに対する値である。
【００３４】
同様に、赤い光及び青い光と組み合わせて表示する緑の光の大きさは、緑の次元３０４のビットによって、測られ得る。例の緑の次元の値３０４の場合、値は１０１１００００であり、Ｇ７、Ｇ６、Ｇ５、Ｇ４、Ｇ３、Ｇ２、Ｇ１及びＧ０とそれぞれ呼ばれるビットに対する値である。同じように、青の次元の値は０００１１０１０であり、それぞれビットＢ７、Ｂ６、Ｂ５、Ｂ４、Ｂ３、Ｂ２、Ｂ１及びＢ０に対する値である。
【００３５】
次に、赤の次元の値、緑の次元の値及び青の次元の値のビットすべてを、それらビットの次元内の順番が保たれるようにインタリーブした２４ビット整数値が形成され得る。例えば、２４ビット整数３０８はこの時、インタリーブされた後、０１０００００１０１１１００１１００００１１００を含み得る。この値は、ビットを、以下の順番、Ｒ７  Ｇ７  Ｂ７  Ｒ６  Ｇ６  Ｂ６  Ｒ５  Ｇ５  Ｂ５  Ｒ４  Ｇ４  Ｂ４  Ｒ３  Ｇ３  Ｂ３  Ｒ２  Ｇ２  Ｂ２  Ｒ１  Ｇ１  Ｂ１  Ｒ０  Ｇ０  Ｂ０でインタリーブすることに相当する。他のあり得る例として、ＲＧＢビットの順番を変更すること（例えば、緑が最初にきて、Ｇ７  Ｂ７  Ｒ７  Ｇ６  Ｂ６  Ｒ６・・・など）、例えば、リトルエンディングシステムで用いられ得るビットの順番を逆にすること（Ｒ０  Ｇ０  Ｂ０  Ｒ１  Ｇ１  Ｂ１  Ｒ２  Ｇ２  Ｂ２  Ｒ３  Ｇ３  Ｂ３  Ｒ４  Ｇ４  Ｂ４  Ｒ５  Ｇ５  Ｂ５  Ｒ６  Ｇ６  Ｂ６  Ｒ７  Ｇ７  Ｂ７、またはＢ０  Ｇ０  Ｒ０  Ｂ１  Ｇ１  Ｒ１  Ｂ２  Ｇ２  Ｒ２  Ｂ３  Ｇ３  Ｒ３  Ｂ４  Ｇ４  Ｒ４  Ｂ５  Ｇ５  Ｒ５  Ｂ６  Ｇ６  Ｒ６  Ｂ７  Ｇ７  Ｒ７）が含まれ得る。当業者は、逆の順番のビットを用いることによって、リトルエンディアンの順番付けを用いる多次元カラーインタリーブシステムをどのように実装するか理解するであろう。２４ビット整数カラー範囲検索を可能にするさらなる代替のインタリーブされたビットの順番付けも用いられ得る。
【００３６】
図２に戻って、ブロック２０８で、次に、２４ビット整数に変換されたすべてのＲＧＢカラーに対して、２４ビットの１次元整数は、関連付けられた多次元カラーに関連してカラーデータストア１０１に（ＲＧＢカラーに関連してテーブル１０５になど）記憶され得る。この２４ビットの１次元整数は、品目（例えば、品目識別子）などのカラーデータストア内のオブジェクトに間接的にまたは直接的に関連付けられ得る。いくつかの実施形態で、２４ビット整数は、カラーデータストア１０１内のオブジェクトに直接関連して記憶され得る（例えば、単一のテーブル内の品目識別子へのマッピング）。
【００３７】
ブロック２１２で、高速カラーデータストア生成プロセスは、すべてのカラーが単一の２４ビットカラー２１２に変換されたかどうかを判定し得る。判定されていなければ、プロセスを繰り返しても良くより多くのカラーを変換しカラーデータストア１０１に記憶することができることを矢印２１４が示す。そうでなければ、矢印２１２が示すように、すべてのカラーを変換するプロセスは、終了し得る。
【００３８】
ブロック２１６で、次に、カラーデータストア１０１は、１次元整数に基づいた高速範囲検索を可能にするように、カラーを表す、生成された１次元のインタリーブされた整数を記憶しているテーブルの列をインデックス化し得る。インデックス化後、高速カラーデータストア生成プロセスは、ブロック２１８で終了し得る。ここで、カラーデータストア１０１は、クエリを受信すると、高速カラー検索を行えるようになる。
【００３９】
図４は、カラーデータストア１０１などの高速カラー検索データストアを検索する、コンピューティング装置１０７などの１つまたは複数のコンピューティング装置で実行するルーティンの１つの実施形態を示す。そのようなルーティンは、ハードウェアプロセッサにより実行されるソフトウェア命令によって行われても良く、カラー検索モジュール１０９の１つまたは複数のコンポネントを含み得る。ソフトウェア命令は、１つまたは複数のレジスタ、メモリ、磁気ディスク、フラッシュメモリ、ソリッドステートドライブなどの非一時的な記憶媒体に保存されて実行され得る。
【００４０】
さらに図４を参照して、コンピューティング装置１０７などのアクセスを行っているコンピューティング装置が実装する高速カラー検索ルーティン４００の実施形態を記載する。当業者は、ルーティン４００で概略を述べたアクション／要素は、カラー検索モジュール１０９などのコンピューティング装置１０７に関連する１つまたは多くのコンピューティング装置／コンポネント／モジュールによって実装され得ることを理解されよう。よって、ルーティン４００を、コンピューティング装置１０７によって行われているものとして、論理的に関連付けた。
【００４１】
ブロック４０２で、コンピューティング装置１０７は、検索するカラー範囲の入力を取得する。いくつかの実施形態で、この入力は、ブラウザなどのグラフィカルユーザインタフェースへの入力として、キーボード、マウスなどを通してなど、人／機械のインタフェースからの入力を含み得る。例えば、ユーザは、ネットワークサイトをブラウズし、検索する１つまたは複数のＲＧＢカラーまたはカラー範囲を入力し得る。そのようなカラー（例えば、ＲＧＢ値）は、カラーピッカーインタフェース、キュレーテッドカラーパレット、画像から取り出されたカラーパレット、そのようなカラーに関連する１つまたは複数のカラーを有する品目（例えば、同様のカラーを有する他の品目を見つけるのに）、カラー変換に対するキーワードから決定されたカラーまたは他の方法を介して選択され得る。いくつかの実施形態で、検索するカラー範囲は、検索するカラー範囲を含む１つまたは複数のパケットをクライアント装置から受信するサーバを介してなど、ネットワークを介して、取得され得る。１つまたは複数のカラーまたはカラー範囲を取得するのに用いる種々の方法及びシステムは、代理人整理番号ＳＥＡＺＮ．９０４Ａ１に対応する２０１４年６月２６日に出願された米国特許出願第  号の「ＢＵＩＬＤＩＮＧ  Ａ  ＰＡＬＥＴＴＥ  ＯＦ  ＣＯＬＯＲＳ  ＢＡＳＥＤ  ＯＮ  ＨＵＭＡＮ  ＣＯＬＯＲ  ＰＲＥＦＥＲＥＮＣＥＳ」、代理人整理番号ＳＥＡＺＮ．９０４Ａ２に対応する２０１４年６月２６日に出願された米国特許出願第  号の「ＢＵＩＬＤＩＮＧ  Ａ  ＰＡＬＥＴＴＥ  ＯＦ  ＣＯＬＯＲＳ  ＦＲＯＭ  Ａ  ＰＬＵＲＡＬＩＴＹ  ＯＦ  ＣＯＬＯＲＳ  ＢＡＳＥＤ  ＯＮ  ＨＵＭＡＮ  ＣＯＬＯＲ  ＰＲＥＦＥＲＥＮＣＥＳ」、代理人整理番号ＳＥＡＺＮ．９０３Ａ３に対応する２０１４年６月２６日に出願された米国特許出願第  号の「ＤＥＴＥＲＭＩＮＩＮＧ  ＡＦＦＩＬＩＡＴＥＤ  ＣＯＬＯＲＳ  ＦＲＯＭ  ＫＥＹＷＯＲＤ  ＳＥＡＲＣＨＥＳ  ＯＦ  ＣＯＬＯＲ  ＰＡＬＥＴＴＥＳ」、代理人整理番号ＳＥＡＺＮ．９０７Ａ１に対応する２０１４年６月２６日に出願された米国特許出願第  号の「ＡＵＴＯＭＡＴＩＣ  ＣＯＬＯＲ  ＰＡＬＥＴＴＥ  ＢＡＳＥＤ  ＲＥＣＯＭＭＥＮＤＡＴＩＯＮＳ  ＦＯＲ  ＡＦＦＩＬＩＡＴＥＤ  ＣＯＬＯＲＳ」、代理人整理番号ＳＥＡＺＮ．９４８Ａ１に対応する２０１４年６月２６日に出願された米国特許出願第  号の「ＡＵＴＯＭＡＴＩＣ  ＩＭＡＧＥ−ＢＡＳＥＤ  ＲＥＣＯＭＭＥＮＤＡＴＩＯＮＳ  ＵＳＩＮＧ  Ａ  ＣＯＬＯＲ  ＰＡＬＥＴＴＥ」及び代理人整理番号ＳＥＡＺＮ．９４７Ａ１に対応する２０１４年６月２６日に出願された米国特許出願第  号の「ＣＲＥＡＴＩＯＮ  ＯＦ  ＤＡＴＡＢＡＳＥ  ＯＦ  ＳＥＡＲＣＨＡＢＬＥ  ＣＯＬＯＲ  ＮＡＭＥＳ」に記載され、その全体を参照により本明細書に組み込む。
【００４２】
カラー範囲が取得されない代わりに単一のカラーが取得される場合、１つまたは複数の選択されたカラーに基づいて、１つまたは複数の検索されるカラー範囲を判定し得る。いくつかの実施形態で、カラーに適用することができる構成可能なカラー範囲に基づいて、カラー範囲を判定し得る。例えば、緑色「＃１５ｂ０１ａ」が取得されるなら、設定値（例えば、４というカラーの大きさ）を、１つまたは複数のカラーの次元から加算かつ減算することによって、カラー範囲を判定し得る。そのような例で、（１６進数の）、赤の次元の「１１」から「１９」、緑の次元の「ａｃ」から「ｂ４」及び青の次元の「１６」から「１ｅ」という範囲が生成されるであろう。
【００４３】
別の実施形態で、カラー範囲は、人間が認識可能なカラーの距離／差分の式を適用することによって判定され得る。そのような式は、所与の開始カラーに基づいて、人間が検知するには微小であり得る所与のＲＧＢ値に対する１つまたは複数の次元カラー範囲を生成しても良く、人間の目的にとっては、開始カラーと同一のカラーと考えられ得る。実施形態で、カラー検索範囲は、人間が差分を検知できないようなカラーを含んでも良く、かつ／または人間が差分をほとんど検知できないような検索範囲を含んでも良い。人間の知覚できるカラー差分を、人間のカラーの距離の式を用いて判定する種々の方法及びシステムは、代理人整理番号ＳＥＡＺＮ．９１２Ａ１に対応する２０１４年６月２６日に出願された米国特許出願第  号の「ＩＭＡＧＥ−ＢＡＳＥＤ  ＣＯＬＯＲ  ＰＡＬＥＴＴＥ  ＧＥＮＥＲＡＴＩＯＮ」、代理人整理番号ＳＥＡＺＮ．９１２Ａ２に対応する２０１４年６月２６日に出願された米国特許出願第  号の「ＩＭＡＧＥ−ＢＡＳＥＤ  ＣＯＬＯＲ  ＰＡＬＥＴＴＥ  ＧＥＮＥＲＡＴＩＯＮ」、代理人整理番号ＳＥＡＺＮ．９１２Ａ３に対応する２０１４年６月２６日に出願された米国特許出願第  号の「ＩＭＡＧＥ−ＢＡＳＥＤ  ＣＯＬＯＲ  ＰＡＬＥＴＴＥ  ＧＥＮＥＲＡＴＩＯＮ」及び代理人整理番号ＳＥＡＺＮ．９１２Ａ４に対応する２０１４年６月２６日に出願された米国特許出願第  号の「ＩＭＡＧＥ−ＢＡＳＥＤ  ＣＯＬＯＲ  ＰＡＬＥＴＴＥ  ＧＥＮＥＲＡＴＩＯＮ」に記載され、その全体を参照により本明細書に組み込む。
【００４４】
さらに、別の実施形態で、カラー範囲は、前回の品目検索の出力に基づいて、前回検索されたカラーの修正を可能にするカラー調整ユーザインタフェースを用いて判定され得る。カラーの選択を可能にするカラーピッカーユーザインタフェースとは異なって、カラー調整ユーザインタフェースは、所与のカラーまたはカラー範囲もしくはより広いカラー範囲またはより狭いカラー範囲に基づいた検索を可能にする、もしくは検索されたカラーまたはカラー範囲を、より鮮明に、より暗く、より明るくなどにシフトすることを可能にするＧＵＩスライダを含み得る。前回の品目検索は、カラー単独または他の基準（キーワード、値段など）との組み合わせによってクエリされた前回のカラー検索の結果であり得る。そのようなシナリオで、ユーザインタフェースは、結果として生じる品目がブラウザされ検討されることができるようにすべての品目を表示し、その中に組み込まれたカラー調整ユーザインタフェースを有し得る。ユーザインタフェースは、複数の検索結果をスクロールすることを可能にするネットワークページであり得る。ネットワークページは、より狭いまたはより広いカラー範囲の選択を可能にするスライダを含み得る。
【００４５】
例えば、コンピュータ装置１０７でユーザは、ネットワーク基盤のカラーピッカーユーザインタフェースから緑の色「＃１５ｂ０１ａ」を選択し、「ハンドバッグ」というキーワードとともに、ネットワークサーバに品目検索を送っていても良い。コンピュータ装置１０７は、カラー検索範囲及び「ハンドバッグ」というキーワードを含むクエリに対して、緑色を、緑色の周囲の第１の閾値内のカラー検索範囲に変換し、検索基準をカラーデータストア１０１に送信し得る。応答をいったん受信すると、コンピューティング装置１０７は、ネットワークページのブラウザ内に、すべての品目及びそれらに関連する画像を表示し得る。ネットワークページは、スライダユーザインタフェース要素を有しても良く、この要素は、インタフェースを第１の方向にスライドすることにより、カラー検索範囲を上方に調整することを可能にする。第１の方向にスライドすることによって、コンピューティング装置１０７に、前回の検索より広いまたは大きいカラー検索範囲での検索を再送信するよう指示し得る。カラー検索範囲は、スライダが第１の方向に移動した量に一致する比率で広げられ得る。
【００４６】
同様に、前回のカラー検索範囲は、ユーザがスライダを第２の方向にスライドすることによって、下方に調整され得る。これによって、カラー検索範囲を、スライダが第２の方向に移動した量に一致する比率で、減少させ得る。
【００４７】
スライダまたは他の調整ユーザインタフェースがいったん変更されると、新しい検索が、広げられたまたは狭められたカラー検索範囲基準に基づいて、開始され得る。すなわち、応答の検索結果は、新しいカラー検索範囲によって、広げられまたは狭められるであろう。このやり方で、ユーザは、カラー検索範囲を広げることによって、所与のカラーに一致する結果を「もっと見る」ことができ、またはカラー検索範囲を狭めることによって結果を「少なく見る」ことができる。
【００４８】
他の実施形態で、カラーまたはカラー検索範囲は、前から存在するカラーパレット、反対色、反対色パレット、キーワードへのカラーのマッピングなどを含む他のソースから取得され得る。カラー及びカラー検索範囲を取得する種々の方法及びシステムは、代理人整理番号ＳＥＡＺＮ．９０４Ａ１に対応する２０１４年６月２６日に出願された米国特許出願第  号の「ＢＵＩＬＤＩＮＧ  Ａ  ＰＡＬＥＴＴＥ  ＯＦ  ＣＯＬＯＲＳ  ＢＡＳＥＤ  ＯＮ  ＨＵＭＡＮ  ＣＯＬＯＲ  ＰＲＥＦＥＲＥＮＣＥＳ」、代理人整理番号ＳＥＡＺＮ．９０４Ａ２に対応する２０１４年６月２６日に出願された米国特許出願第  号の「ＢＵＩＬＤＩＮＧ  Ａ  ＰＡＬＥＴＴＥ  ＯＦ  ＣＯＬＯＲＳ  ＦＲＯＭ  Ａ  ＰＬＵＲＡＬＩＴＹ  ＯＦ  ＣＯＬＯＲＳ  ＢＡＳＥＤ  ＯＮ  ＨＵＭＡＮ  ＣＯＬＯＲ  ＰＲＥＦＥＲＥＮＣＥＳ」、代理人整理番号ＳＥＡＺＮ．９０３Ａ３に対応する２０１４年６月２６日に出願された米国特許出願第  号の「ＤＥＴＥＲＭＩＮＩＮＧ  ＡＦＦＩＬＩＡＴＥＤ  ＣＯＬＯＲＳ  ＦＲＯＭ  ＫＥＹＷＯＲＤ  ＳＥＡＲＣＨＥＳ  ＯＦ  ＣＯＬＯＲ  ＰＡＬＥＴＴＥＳ」、代理人整理番号ＳＥＡＺＮ．９０７Ａ１に対応する２０１４年６月２６日に出願された米国特許出願第  号の「ＡＵＴＯＭＡＴＩＣ  ＣＯＬＯＲ  ＰＡＬＥＴＴＥ  ＢＡＳＥＤ  ＲＥＣＯＭＭＥＮＤＡＴＩＯＮＳ  ＦＯＲ  ＡＦＦＩＬＩＡＴＥＤ  ＣＯＬＯＲＳ」、代理人整理番号ＳＥＡＺＮ．９４８Ａ１に対応する２０１４年６月２６日に出願された米国特許出願第  号の「ＡＵＴＯＭＡＴＩＣ  ＩＭＡＧＥ−ＢＡＳＥＤ  ＲＥＣＯＭＭＥＮＤＡＴＩＯＮＳ  ＵＳＩＮＧ  Ａ  ＣＯＬＯＲ  ＰＡＬＥＴＴＥ」及び代理人整理番号ＳＥＡＺＮ．９４７Ａ１に対応する２０１４年６月２６日に出願された米国特許出願第  号の「ＣＲＥＡＴＩＯＮ  ＯＦ  ＤＡＴＡＢＡＳＥ  ＯＦ  ＳＥＡＲＣＨＡＢＬＥ  ＣＯＬＯＲ  ＮＡＭＥＳ」に記載され、その全体を参照により本明細書に組み込む。クエリの所望の結果をさらにフィルタリングするように、他のパラメータも、カラー検索クエリの一部として指定され得る。そのようなパラメータは、キーワード、品目の値段、品目／オブジェクトの種類などを含み得る。
【００４９】
ブロック４０４で、高速カラー検索クエリを形成するように前処理が発生し得る。例えば、ブロック４０４で、プロセスは、取得されたＲＧＢカラー検索範囲に基づいて、１つまたは複数のカラー検索クエリに含む１つまたは複数の２４ビット整数検索範囲を生成し得る。さらに、ブロック４０４で、１つまたは複数のカラー検索クエリは、適切に作成され得る。例えば、２４ビット整数カラー検索範囲がいったん生成されると、それらの範囲は、１つまたは複数のフォーマットされたＳＱＬクエリ、ＡＰＩクエリ、ウェブサービスクエリなどに形成され得る。前処理は、図５を参照して、以下にさらに記載する。
【００５０】
ブロック４０６で、コンピューティング装置１０７は、検索クエリを開始し得る。検索クエリを開始することは、コンピューティング装置１０７が、カラーデータストア１０１またはウェブサービスもしくはカラー検索サーバなどの他のカラークエリ可能なサービスに、ネットワーク（例えば、ローカルエリアネットワーク、インターネット、ＶＰＮなど）を介して、検索されるカラー範囲を含む検索クエリを送信することを含み得る。いくつかの実施形態で、カラー検索モジュール１０９は、カラーデータストア１０１に直接アクセスまたはローカルアクセスし得る、またはデータストアファイルへの直接アクセスを介して自身でクエリを実行できても良い（例えば、ＳＱＬｉｔｅを用いて）ので、送信は不要なことがある。
【００５１】
ブロック４０８で、すべての２４ビット整数検索範囲がいったん検索されたら、１つまたは複数の検索された範囲に一致するそうでなければ相関する所望のデータストアレコードを、例えばローカルプロセスを通じて、クエリを行っているコンピューティング装置が受信する、または、ネットワークを通じてコンピューティング装置１０７に送り返し、コンピューティング装置１０７が受信する。そのような検索結果は、１つまたは複数の一致するＲＧＢカラー、ＲＧＢカラーパレット、またはＲＧＢカラーを判定するのにデインタリーブされ得る２４ビット整数さえも返し得る。いくつかの実施形態で、検索結果は、クエリで要求された１つまたは複数の２４ビット整数カラー検索範囲に関連付けられたオブジェクト（品目など）を返し得る。
【００５２】
検索結果は、クエリの指定された整数カラー検索範囲を２４ビットの列のインデックスと比較することによって、カラーデータストア１０１またはカラー検索モジュール１０９によりコンパイルされ得る。例えば、インデックスは、ツリーのノードに整数の比較を行うことによってツリーが整数検索範囲に一致する１つまたは複数の行を示し得るツリーデータ構造であり得る。これは、データストアの各行をカラー範囲と比較するよりも、または各次元の検索範囲をデータストアの３つの異なるインデックスと比較するよりも効率的であるという１つの利点がある。
【００５３】
ブロック４１０で、カラー検索ルーティンは、終了し得る。コンピューティング装置１０７は、さらなる処理のために検索結果を用いても良く、または、検索結果をフォーマットしブラウザなどのユーザアプリケーションに表示しても良い。
【００５４】
ここで、図５を参照して、コンピューティング装置１０７などのアクセスを行っているコンピューティング装置によって実装される高速カラー検索前処理ルーティン５００の実施形態を記載する。当業者は、ルーティン５００で概略を述べたアクション／要素は、カラー検索モジュール１０９などのコンピューティング装置１０７に関連する１つまたは多くのコンピューティング装置／コンポネント／モジュールによって、または別法としてカラーデータストア１０１によって実装され得る（例えば、ＲＧＢカラー範囲が、ユーザコンピューティング装置によって、送信された検索クエリで指定され、サーバまたはデータストアは、検索に先立って、受信したＲＧＢカラー範囲を２４ビット整数カラー検索範囲に変換しなければならないとき）ことを理解されるであろう。よって、ルーティン５００を、コンピューティング装置１０７によって行われているものとして、論理的に関連付けた。
【００５５】
図５は、カラー検索モジュール１０９が行い得る、ＲＧＢカラー検索範囲の１つの実施形態の前処理を示す。当業者は、前処理は、ＲＧＢ以外の任意の他の多次元カラー配置に迅速に外挿され得ることを理解するであろう。例えば、コンピューティング装置１０７は、ブラウザで実行し得るＪＡＶＡＳＣＲＩＰＴ（登録商標）命令を含むカラー検索モジュール１０９を有しても良い。ＪＡＶＡＳＣＲＩＰＴ（登録商標）命令は、１つまたは複数のカラー検索範囲を、検索のためにネットワークサーバまたはデータストアサーバに範囲を転送するのに先立って、前処理し得る。ＪＡＶＡＳＣＲＩＰＴ（登録商標）を用いる利点の１つとして、組織のデータストア及びサーバの処理負荷を、代わりにユーザが操作するコンピュータにカラー検索クエリの前処理を行わせることによって、軽減し得るということである。ＪＡＶＡＳＣＲＩＰＴ（登録商標）に加えて、結果として生じるコードがユーザコンピュータ側、サーバ側、またはそれらの何らかの組み合わせのいずれで実行されようとも、本明細書に記載した高速カラー検索技術を実装するのに他のプログラミング言語も用い得ることを当業者は理解するであろう。
【００５６】
ブロック５０２で、前処理を行っているコンピューティング装置１０７は、ＲＧＢカラー範囲値を取得し得る。カラー範囲値は、赤の最大カラー値、赤の最小カラー値、緑の最小カラー値、緑の最大カラー値、青の最大カラー値及び青の最小カラー値を含み得る。次に、実施形態は、これらの次元のカラー範囲を、高速カラー検索クエリで用いられ得る１つまたは複数の１次元２４ビット整数カラー検索範囲に変換し得る。プロセスの例を、ブロック５０４、ブロック５０６及びブロック５０８を参照して以下に記載する。
【００５７】
ブロック５０４で、各次元のカラーの範囲（例えば、最小値から最大値）は、インタリーブされた値が１次元で適切に検索され得るように、ビットの境界にまたがった追加の範囲に、コンピューティング装置１０７によって、さらに分割され得る。これらは、２進分割範囲または接頭辞と呼ばれ得る。
【００５８】
解決される問題の説明は、以下のようになる。カラー検索範囲を以下のように仮定する。
【００５９】
赤の最小値：１６進数  ７ｅ  ２進数  ０１１１１１１０
【００６０】
赤の最大値：１６進数  ８１  ２進数  １００００００１
【００６１】
緑の最小値：１６進数  ００  ２進数  ００００００００
【００６２】
緑の最大値：１６進数  ０１  ２進数  ０００００００１
【００６３】
青の最小値：１６進数  ｆｅ  ２進数  １１１１１１１０
【００６４】
青の最大値：１６進数  ｆｆ  ２進数  １１１１１１１１
【００６５】
インタリーブすると、１０進整数範囲の３，５９５，１１２から１０，７８５，３５９に相当する、２進数で、００１１０１１０１１０１１０１１０１１０１０００（すべての最小値をインタリーブする）から１０１００１００１００１００１００１００１１１１（すべての最大値をインタリーブする）という検索範囲を生成するように結果が現れ得る。しかし、その範囲内の、一致している整数に基づくカラーは、実際、検索されるカラー範囲内でないこともある。例えば、インタリーブされたビット値０１００００００００００００００００００００００に相当し得て１６進数で＃００８０００（すなわち、値＃８０の緑）のＲＧＢカラーに相当する４，１９４，３０４は、実際、検索される範囲内（＃７ｆ００ｆｅから＃８１０１ｆｆ、緑は００と０１の間以外で変化しない）にはないが、３，５９５，１１２と１０，７８５，３５９の間にあるという基準を満たしている。このエラーシチュエーションは、種々のカラーのインタリーブされた値からのビットのキャリーオーバーによって起こり得る。言い換えれば、２４ビット整数のインタリーブされた形式の範囲のキャリーオーバーは、他の次元のカラー値に影響を与え、これは意図しない結果であり、いくつかのカラーを、カラーがもともとのカラー検索範囲に実際には一致していないとき、整数フォーマットのカラー検索範囲に一致させる。
【００６６】
そのようなシチュエーションは、検索クエリが実行される前に前処理を介して回避し得る。例えば、上記の範囲に対する前処理は、キャリーオーバーが検索される範囲に影響を与えるであろう整数検索範囲を分割するであろう。単一の整数の範囲、３，５９５，１１２から１０，７８５，３５９を検索する代わりに、１０進整数での範囲、３，５９５，１１２から３，５９５，１１９及び１０，７８５，３５２から１０，７８５，３５９にそれぞれ相当する２つの範囲、００１１０１１０１１０１１０１１０１１０１０００から００１１０１１０１１０１１０１１０１１０１１１１及び１０１００１００１００１００１００１００１０００から１０１００１００１００１００１００１００１１１１を検索することができる。これらの分割検索範囲は、ここで、検索範囲全体を適切に捕捉する（例えば、もともとの検索範囲＃７ｆ００ｆｅから＃８１０１ｆｆは、＃７ｆ００ｆｅから＃７ｆ０１ｆｆ及び＃８１０ｆｅから＃８１０１ｆｆを組み合わせた範囲と等価である）。
【００６７】
いくつかの実施形態で、前処理よりも後処理を高速カラー検索の実装に用い得る。データストアのレコードがカラー検索範囲にまばらに存在している実施形態で、分割された整数検索範囲の識別は、コンピューティング装置１０７で行われ得る。このシナリオ下で、上記と同一の例を用いると、カラーデータストア１０１は、大きい方の範囲３，５９５，１１２から１０，７８５，３５９を用いて、コンピューティング装置１０７によって検索され得る。レコードは、カラーデータストア１０１のその範囲にわずかに存在するので、限られた数のクエリ結果が返され得る。限られた数の検索結果のみが返されることが予期されるので、コンピューティング装置１０７は、そのクエリをデータストアに発行した後で（前ではなく）、各分割検索範囲を判定し、個別のクエリ結果各々を分析して、判定された分割検索範囲内のいずれかに収まるかどうかを判定し得る。この種の実施形態の利点の１つは、処理を、カラーデータストア１０１からコンピューティング装置１０７へ移動させ（例えば、小さい方の分割検索範囲各々の比較）、それにともなって、カラーデータストア１０１の全体の負荷を軽減させることである。この種類の実装は、複数のサブデータストアで構成されるカラーデータストア１０１と組み合わせても用いられ得る。なぜなら、このシナリオ下で、各サブデータストアのまばらさを制御して、後処理を最適な戦略にすることができるからである。
【００６８】
すなわち、ブロック５０４で、分割検索範囲を判定するのに残りのビットを０または１で埋めることができる上位ビットの接頭辞を判定することによって、各ＲＧＢカラー次元に対して、２進分割範囲を判定し得る。２進分割範囲は、カラー次元の最小値及び最大値に対する１つまたは複数の範囲の接頭辞を計算し、これらの範囲の接頭辞を所与の次元に対する範囲の接頭辞のリストへ組み合わせることによって、判定することができる。
【００６９】
例えば、赤のカラー検索範囲の場合、１つの接頭辞（基本接頭辞）は、最小値の、値「１」を有する最上位のビットを最小値として判定し、次に、その最小値を、上界をすべて前の０とした下界として用いることによって、識別され得る。赤のカラー検索範囲が、００００１０１０（赤の最小値）から０００１００００（赤の最大値）であったなら、上記の接頭辞は、最小値のビット接頭辞００００１０１に相当し得る。この接頭辞は、００００１０１［０］から００００１０１［１］の範囲（すなわち、範囲の最小値として、残りのビット（下線部分）がすべて０で埋められ、範囲の最大値として１で埋められた接頭辞に基づいた範囲）に相当する範囲（例えば、２進分割範囲）と考えられ得る。すなわち、接頭辞の値００００１０１が、赤色の接頭辞のリストに追加され得る。
【００７０】
さらなる接頭辞は、最小値に基づいて、コンピューティング装置１０７によって識別され得る。追加の接頭辞を識別する基準の１つとして、基本接頭辞を調べることが含まれる。最下位ビットから始めて、基本接頭辞に、０を有する任意の追加の上位ビットが存在するとき（例えば、００００１［０］１）、追加の接頭辞が、０と等しい最小値のビットの最上位ビットより下位のビットを含み、その順番の最大ビットが１なら、追加の接頭辞が識別され得る。このビットは、最大値が最小値から分岐し始めるビットであるため「分岐」ビットと称され得る。）次に、そのような接頭辞は、識別された「０」を「１」に置き換えることによって、最終的に識別され得る。１つより多い追加の接頭辞が、基本接頭辞内に存在し得る。
【００７１】
例に戻って、最小値は、そのような一致するゼロ、００００１［０］１０を有し、接頭辞は、分岐ビットより下位のビットを含む００００１０（ここで、ビットストリングが分岐するところに下線を引く：最小値：０００［０］１０１０及び最大値：０００［１］００００）を含む。識別された接頭辞は、分岐ビットより下位のビットを含む（例えば、第５及び第６の下位ビット）。００００１０が識別されたので、加算される実際の接頭辞は、００００１［１］（「・・・接頭辞は、次に、識別された「０」を「１」に置き換えることによって含まれ得る」）である。すなわち、これは、追加の接頭辞「００００１１」を識別し、それを赤色の接頭辞のリスト（既に００００１０１を含んでいる）に追加するであろう。
【００７２】
接頭辞の別のセットは、カラーに対する最大ビットの値を分析することによって、コンピューティング装置１０７により判定され得る。コンピューティング装置１０７は、０である最大値の最下位ビットの値、及び識別された値の０のビットを接頭辞として、すべての上位ビットを識別し得る。すなわち、０００１０００［０］が、増え続けるリストに、接頭辞として追加されるであろう。
【００７３】
追加され得る接頭辞の別のセットは、最大値が分岐ビットの後にビット「１」を有する最大値の任意の接頭辞である。これらの接頭辞は、次に、識別された「１」を「０」に置き換えることによって、含まれ得る。
【００７４】
上記の例で、赤の最大値は０００１００００であり、分岐ビットの後に値「１」のビットを含まないので、追加の接頭辞は識別されないであろう。しかし、赤の最大値が実際０００１０１００の場合、第２の「１」は、接頭辞０００１０［１］を判定し、第２の「１」は、次に、「０」に置き換えられ（接頭辞０００１０［０］を形成するように）、接頭辞０００１０［０］は、赤の接頭辞のリストに追加されるであろう。
【００７５】
上記の例は、赤の値に対する２進分割範囲のリスト（例えば、接頭辞のリスト）を判定したが、２進分割範囲のリストは、同様に、青の次元及び緑の次元、またはカラー空間の任意の次元に対しても判定され得る。すなわち、２進分割範囲／接頭辞のリストは、各次元の検索される範囲の最大値及び最小値に基づいて、各カラー次元、具体的には、赤、緑及び青の次元に対して判定され得る。
【００７６】
図５に戻って、ブロック５０６で、接頭辞は、コンピューティング装置１０７によって置換されインタリーブされ得る。そのような順列の各々は、検索のために、１つまたは複数の２４ビット整数範囲（または、いくつのビットが次元を作り上げているか及びいくつの次元がカラーモデルを作り上げているかにより、他のｎ次元のインタリーブされたビット整数範囲）に変換され得る。
【００７７】
例えば、ＲＧＢを用いると、赤の接頭辞のリスト、緑の接頭辞のリスト及び青の接頭辞のリストの３つの接頭辞のリストが存在し得る。赤のリストの各接頭辞は、コンピュータが、赤のリストから１つの接頭辞、緑のリストから１つの接頭辞及び青のリストから１つの接頭辞を有する接頭辞のすべての可能な組み合わせを判定するように、他のカラーに対する他の接頭辞すべてとともに置換され得る。各順列は、インタリーブし、１つまたは複数の２４ビット整数検索範囲に変換することができる。
【００７８】
図６は、コンピューティング装置１０７による、特定の順列のインタリーブ及び変換の例を示す。この例の順列の場合、赤の接頭辞６０２が選択され（１１００１）、緑の接頭辞６０４が選択され（１００１１１）、青の接頭辞６０６が選択された（１００１０１）。これらのビットは、次に、図３で記載したように、それらビットの順番に基づいてインタリーブされ得る。しかし、いくつかのビットは、接頭辞に存在しない。例えば、赤の接頭辞は、最後の３つのビットが欠け、青の接頭辞及び緑の接頭辞は、最後の２つのビットが欠けている。これは、不完全であろうインタリーブされたビット構造を生成する。例えば、インタリーブされたビット６１０は、これらの接頭辞に基づいて、欠けているビット（Ｘ）を有するインタリーブされたストリングを示し、すなわち、Ｒ２のビットは欠け、Ｒ１、Ｇ１、Ｂ１、Ｒ０、Ｇ０及びＢ０のビットも欠けていることを示している。
【００７９】
２種類の欠けているビットが存在し得る。第１の種類は、２４ビット整数内に、定義された下位ビットを有する、欠けているビットであり得る。これは、「内部分割ビット」と呼ばれ得る。例えば、インタリーブされたビット６１０のＲ２と標識されたビットは、「Ｘ」が示すように、欠けている。しかし、ビットＧ２及びビットＢ２は、定義され（例えば、選択された緑の接頭辞６０４及び青の接頭辞６０６に含まれていた）、２４ビットストリングの下位に存在する（ここで「下位」は、この２４ビットのインタリーブされた整数に対して、２４ビットのインタリーブされた整数が通常の整数と考えられるとき、「後にくる」または下位に存在することを意味する）。
【００８０】
第１の種類のビットが識別されると、赤、緑及び青の接頭辞の順列は、さらなる範囲の判定のために、２つの同一の順列に分割され得る。第１の順列６１２は、識別されたビットに「０」を有し、第２の順列６１４は、識別されたビットに「１」を有する（インタリーブされた２４ビット整数６１２及び６１４の下線を引いたビット値が示すように）。さらなる欠けているビットの分析は、次に、１つのビットのみ異なるこれらの２つの同様の接頭辞の順列に対して行われ得る。ここでは順列６１０である、もともとの順列をさらに分析する必要はない。この種類の分割は、結果として生じる順列内のいずれにも内部分割ビットが存在しなくなるまで、何度も行われ得る。
【００８１】
第２の種類の欠けているビットも、識別され得る。この欠けているビットは、欠けているビットが下位に、定義されたビットを有さないことを判定することによって識別され得る。参考のため、この欠けているビットを、「終了範囲ビット」と呼び得る。この種類のビットが識別されると、かつ、通常、すべての内部分割ビットが、１つのビットのみ異なる２つの同一の順列への分割を通して解決された後、順列は２４ビット範囲に変換され得る。これは、順列を得て残りの終了範囲ビットすべてを「０」に設定することによって判定される範囲の下界及び順列を得て残りの終了範囲ビットすべてを「１」に設定することによって判定される範囲の別の上界という２つの２４ビット整数を計算することによってなされる。
【００８２】
例えば、インタリーブされた２４ビット順列６１２及び６１４は、Ｒ１、Ｇ１、Ｂ１、Ｒ０、Ｇ０及びＢ０に相当する残りの終了範囲ビット（言い換えると、インタリーブされた２４ビット整数の最後の６ビット）を有する。終了範囲ビットよりも下位の定義されたビットはないので、これらのビットを、ここで、整数検索範囲を形成するのに用い得る。順列６１２の場合、終了範囲ビットを０に設定する（順列６１６で示すように）ことによって、下界を判定し得る。これは、整数１５，７４４，１９２に等しい。上界は、終了範囲ビットを１に設定する（順列６１８で示すように）ことによって判定し得る。これは、整数１５，７４４，２５５に等しい。すなわち、１つの計算された検索範囲６３２は、１５，７４４，１９２と１５，７４４，２５５の間のインタリーブされたカラー値に対するクエリ範囲であり得る。
【００８３】
順列６１４の場合、終了範囲ビットを０に設定する（順列６２２に示すように）ことによって下界を判定し得る。これは、整数１５，７４４，４４８に等しい。終了範囲ビットを１に設定する（順列６２０に示すように）ことによって上界を判定し得る。これは、整数１５，７４４，５１１に等しい。すなわち、１つの計算された検索範囲６３４は、１５，７４４，４４８と１５，７４４，５１１の間のインタリーブされたカラー値に対するクエリ範囲であり得る。識別された２４ビットカラー検索範囲のすべては、接頭辞のすべての順列にわたって、検索されるように、集められ記憶され得る。
【００８４】
図５に戻ると、上記のように１つまたは複数の置換された１次元インタリーブされたカラー検索範囲を判定した後で、１つまたは複数のカラー検索クエリを、ブロック５０８で、形成し得る。１つの例の実施形態は、ＳＱＬ「ｗｈｅｒｅ」句を生成して、クエリ（例えば、ＳＱＬ「ｓｅｌｅｃｔ」文）で複数の２４ビット整数カラー検索範囲を一緒に一列に並べ得る。例えば、クエリがすべての検索範囲をリスト化している「ＳＥＬＥＣＴ＊ＦＲＯＭ＜ｔａｂｌｅ  １０５＞ＷＨＥＲＥ（ｉｎｔｅｒｌｅａｖｅ＿ｒｇｂ＿ｃｏｌｏｒ  ＢＥＴＷＥＥＮ  １５７４４４４８  ＡＮＤ  １５７４４５１１）  ＯＲ  （ｉｎｔｅｒｌｅａｖｅ＿ｒｇｂ＿ｃｏｌｏｒ  ＢＥＴＷＥＥＮ  １５７４４１９２  ＡＮＤ  １５７４４２５５）」、などの句は、上記の例に基づいて作成されたそのようなクエリの１つであり得る。しかし、クエリは、固有の検索範囲を形成するのに組合されても良く、各々が内部分割ビットの数によって１つまたは複数の検索範囲を生成し得る赤の接頭辞、緑の接頭辞及び青の接頭辞の順列がさらに存在する場合、もっと長くなるであろう。結果として生じる範囲のすべては、従来の多次元カラー検索クエリの全領域の範囲に対して、クエリまたは複数のクエリを形成するのに用い得る。他の実施形態で、適切にフォーマットされたウェブサービスクエリは、判定された検索する整数カラー範囲を、その範囲を検索のパラメータとして追加することによって組み込み得る。
【００８５】
検索クエリが生成された後で、ブロック５１０で、前処理ルーティンは終了し得る。ここで、検索を、図４を参照して記載したように（例えば、ブロック４０６）、送信または実行し得る。
【００８６】
実施形態によっては、本明細書に記載したいずれかのアルゴリズムのあるアクト、イベントまたは機能を、異なる順序で行うことができ、追加、統合、または全体を省略することができる（例えば、アルゴリズムの実行に、記載したアクトまたはイベントのすべてが必要というわけではない）。さらに、ある実施形態で、アクトまたはイベントを、例えばマルチスレッド処理、割込み処理、または複数のプロセッサもしくはプロセッサコアを通じて、または他の並列アーキテクチャで、連続してというよりも同時に行うことができる。
【００８７】
本明細書で開示した実施形態に関連して記載した種々の例示的な論理ブロック、モジュール及びアルゴリズムのステップは、電子ハードウェア、コンピュータソフトウェア、または両方の組み合わせとして実装することができる。このハードウェアとソフトウェの互換性を明瞭に例示するのに、種々の例示的なコンポネント、ブロック、モジュール及びステップは、一般にそれらの機能性の観点から上に記載した。そのような機能性がハードウェアとして実装されるかまたはソフトウェアとして実装されるかは、システム全体に課された特定の応用及びデザインの制約に依存する。記載した機能性は、特定の応用ごとに様々なやり方で実装することができるが、そのような実装の決定は、開示の範囲からの逸脱をするものとして解釈すべきでない。
【００８８】
本明細書で開示した実施形態に関連して記載した種々の例示的な論理ブロック及びモジュールは、汎用プロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）または他のプログラム可能論理装置、ディスクリートゲートもしくはトランジスタロジック、ディスクリートハードウェアコンポネント、または本明細書に記載した機能を行うように設計されたこれらの任意の組み合わせなどの機械によって、実装または行うことができる。汎用プロセッサは、マイクロプロセッサであり得るが、代案で、プロセッサは、コントローラ、マイクロコントローラ、またはステートマシーン、それらの組み合わせなどであり得る。プロセッサは、例えば、ＤＳＰとマイクロプロセッサの組み合わせ、複数のマイクロプロセッサ、ＤＳＰコアと連動する１つまたは複数のマイクロプロセッサ、または任意の他のそのような構成といったコンピューティング装置の組み合わせとして実装することもできる。
【００８９】
本明細書で開示した実施形態に関連して記載した方法、プロセスまたはアルゴリズムの要素は、直接ハードウェアで、プロセッサによって実行されるソフトウェアモジュールで、またはその２つの組み合わせで具現化することができる。ソフトウェアモジュールは、ＲＡＭメモリ、フラッシュメモリ、ＲＯＭメモリ、ＥＰＲＯＭメモリ、ＥＥＰＲＯＭメモリ、レジスタ、ハードディスク、リムーバブルディスク、ＣＤ−ＲＯＭまたは当技術分野で知られている任意の他の形式のコンピュータ可読記憶媒体に存在することができる。記憶媒体を、プロセッサが記憶媒体から情報を読み取りかつ情報を書き込むことができるように、プロセッサに結合することができる。代案で、記憶媒体は、プロセッサと一体とすることができる。プロセッサ及び記憶媒体は、ＡＳＩＣに存在することができる。ＡＳＩＣは、ユーザ端末に存在することができる。代案で、プロセッサ及び記憶媒体は、ユーザ端末にディスクリート部品として存在することができる。ソフトウェアモジュールは、コンピュータ実行可能命令を備えることができ、ハードウェアプロセッサにコンピュータ実行可能命令を実行させる。コンピュータ実行可能命令は、スクリプトされたコンピュータ言語及び／またはコンパイルされたコンピュータ言語を備えることができる。コンピュータ実行可能命令は、例えばかつ制限なく、ＪＡＶＡＳＣＲＩＰＴ、ＰＹＴＨＯＮ（商標）、ｐｈｐ、ＳＱＬ、Ｃ、Ｃ＋＋、ＪＡＶＡ（登録商標）、Ｃ＃、Ｆｏｒｔｒａｎ、ＢＡＳＩＣ、ｓｈｅｌｌ  ｓｃｒｉｐｔｓ、Ｐｅｒｌなどを備えることができる。
【００９０】
本明細書で用いた条件付きの言葉、とりわけ「ｃａｎ」、「ｍｉｇｈｔ」、「ｍａｙ」、「ｅ．ｇ．」、などは、別途具体的に記述されない限り、または用いられている文脈内で別様に理解されない限り、ある実施形態はある特徴、要素及び／または状態を含み、一方他の実施形態はそれらを含まないということを伝えることを一般に意図している。すなわち、そのような条件付きの言葉は、特徴、要素及び／または状態が、いずれにしろ、１つまたは複数の実施形態に必要であることまたは１つまたは複数の実施形態が、著者の入力または促しの有無にかかわらず、これらの特徴、要素及び／または状態が任意の特定の実施形態に含まれているかまたは行われるかを決定する論理を必然的に含むことを意味することを一般に意図していない。「ｃｏｍｐｒｉｓｉｎｇ」、「ｉｎｃｌｕｄｉｎｇ」、「ｈａｖｉｎｇ」、「ｉｎｖｏｌｖｉｎｇ」などの用語は、同義語であり、制約のない方法で包括的に用いられ、追加の要素、特徴、アクト、動作などを除外しない。また、「ｏｒ」という用語も、包括的な感覚で（排他的な感覚ではなく）用いられ、例えば要素のリストをつなげるように用いられるとき、「ｏｒ」という用語は、リストの要素の１つ、いくつか、またはすべてを意味するようになる。
【００９１】
「ａｔ  ｌｅａｓｔ  ｏｎｅ  ｏｆ  Ｘ，  Ｙ  ｏｒ  Ｚ」という表現などの離接的な言葉は、別途具体的に記述されない限り、項目、用語などがＸ、ＹもしくはＺのいずれかまたはそれらの任意の組み合わせ（例えば、Ｘ、Ｙ及び／またはＺ）であり得ると示すように一般に用いられている文脈で理解される。すなわち、そのような離接的な言葉は、ある実施形態は少なくともＸの１つ、少なくともＹの１つまたは少なくともＺの１つが各々存在することが必要であると意味することを一般に意図せず、意味するべきでない。
【００９２】
別途明示的に記述されない限り、「ａ」または「ａｎ」などの冠詞は、一般に、１つまたは複数の記載された項目を含むと解釈されるべきである。よって、「ａ  ｄｅｖｉｃｅ  ｃｏｎｆｉｇｕｒｅｄ  ｔｏ」などの表現は、１つまたは複数の列挙された装置を含むことを意図する。そのような１つまたは複数の列挙された装置は、記述された詳説を実行するように集合的に構成することもできる。例えば、「ａ  ｐｒｏｃｅｓｓｏｒ  ｃｏｎｆｉｇｕｒｅｄ  ｔｏ  ｃａｒｒｙ  ｏｕｔ  ｒｅｃｉｔａｔｉｏｎｓ  Ａ，  Ｂ  ａｎｄ  Ｃ」は、詳説Ｂ及び詳説Ｃを実行するように構成された第２のプロセッサと連動して動作する詳説Ａを実行するように構成された第１のプロセッサを含むことができる。
【００９３】
上記の詳述は、種々の実施形態に適用されているものとして新規の特徴を示し、記述し、指摘したが、例示された装置またはアルゴリズムの形態及び詳細の種々の省略、置換及び変更を、本開示の精神から逸脱することなしに、行うことができることが理解されるであろう。認識されるように、本明細書に記載したある実施形態を、いくつかの特徴を他の特徴から切り離して用いるまたは実施することができるので、本明細書に記載した特徴及び利益のすべてを提供しない形態内で、具現化することができる。特許請求の範囲の均等の意味及び範囲に属する変更は、すべて本発明の範囲内のものである。
【００９４】
本開示の実施形態の例は、以下の条項に照らして記載することができる。
１．コンピュータ実行可能命令を記憶するように構成されたメモリ及び１つまたは複数のハードウェアプロセッサを備え、前記メモリと通信し、前記コンピュータ実行可能命令を実行するように構成されたコンピューティング装置を備えるシステムであって、前記コンピュータ実行可能命令は、少なくとも、ｎ次元カラーモデルによって指定されたカラーに対する、前記ｎ次元カラーモデルのカラー次元ごとに最小次元カラー値及び最大次元カラー値を備えるカラー検索範囲を取得し、前記カラー検索範囲の次元ごとに、前記カラー検索範囲の対応するカラー次元の前記最小次元カラー値及び最大次元カラー値の少なくとも一部に基づいて、１つまたは複数の２進分割範囲を計算し、各次元の１つまたは複数の２進分割範囲の順列の少なくとも一部に基づいて、前記１つまたは複数の２進分割範囲の順列からのインタリーブされたビットを備える１つまたは複数の整数検索範囲を生成し、前記１つまたは複数の整数検索範囲を検索パラメータとして備える検索クエリを生成し、前記検索クエリの少なくとも一部に基づいて、少なくとも１つのインデックス化された整数カラー値に関連付けられたレコードを備えるデータストアの、前記１つまたは複数の整数検索範囲内のカラーの検索を開始し、前記１つまたは複数の整数検索範囲内の少なくとも１つのインデックス化された整数カラー値に関連付けられたレコードを備える検索結果を、前記データストアから受信する、前記システム。
【００９５】
２．前記ｎ次元のカラーモデルがＲＧＢカラーモデルである、請求項１に記載のシステム。
【００９６】
３．前記インタリーブされたビットが、赤の２進分割範囲、緑の２進分割範囲及び青の２進分割範囲の順列を備える、請求項２に記載のシステム。
【００９７】
４．前記インタリーブされたビットが、前記赤の２進分割範囲からの赤のビット、前記緑の２進分割範囲からの緑のビット及び前記青の２進分割範囲からの青のビットの繰り返しパターンで配置され、前記繰り返しパターンが最上位ビットから最下位ビットへ配置されている状態で前記赤のビット、前記緑のビット及び前記青のビットが、同一の順番のビットからである、請求項３に記載のシステム。
【００９８】
５．前記計算された１つまたは複数の２進分割範囲の少なくとも一部を、分岐ビットを判定することによって識別する、請求項１に記載のシステム。
【００９９】
６．前記レコードが、前記１つまたは複数の整数検索範囲内の１つまたは複数のインデックス化された整数カラー値に関連付けられたオブジェクトレコードを備える、請求項１に記載のシステム。
【０１００】
７．前記オブジェクトレコードが品目レコードである、請求項６に記載のシステム。
【０１０１】
８．前記コンピューティング装置がユーザコンピュータである、請求項７に記載のシステム。
【０１０２】
９．前記最小次元カラー値または前記最大次元カラー値の少なくとも１つが、人間のカラー差分の知覚の式の少なくとも一部に基づいて判定される、請求項１に記載のシステム。
【０１０３】
１０．特定のコンピュータ実行可能命令で構成されたハードウェアコンピューティング装置の制御下で、ｎ次元カラーモデルによって指定されたカラーに対する、前記ｎ次元カラーモデルのカラー次元ごとに最小次元カラー値及び最大次元カラー値を備えるカラー検索範囲を取得すること、前記カラー検索範囲内のカラー次元ごとの前記最小次元カラー値及び最大次元カラー値からのビットをインタリーブすることによって、１つまたは複数の整数検索範囲を計算すること、前記１つまたは複数の整数検索範囲を検索パラメータとして備える検索クエリの少なくとも一部に基づいて、少なくとも１つのインデックス化された整数カラー値に関連付けられたレコードを備えるデータストアの検索を開始すること、及び前記１つまたは複数の整数検索範囲内の少なくとも１つのインデックス化された整数カラー値に関連付けられた１つまたは複数のレコードを備える検索結果を、前記データストアから受信することを備えるコンピュータ実装方法。
【０１０４】
１１．前記ｎ次元のカラーモデルがＲＧＢカラーモデルである、請求項１０に記載のコンピュータ実装方法。
【０１０５】
１２．ビットをインタリーブすることが、赤の２進分割範囲、緑の２進分割範囲及び青の２進分割範囲を置換することを備える、請求項１１に記載のコンピュータ実装方法。
【０１０６】
１３．ビットをインタリーブすることが、前記赤の２進分割範囲からの赤のビット、前記緑の２進分割範囲からの緑のビット及び前記青の２進分割範囲からの青のビットの繰り返しパターンで配置することを備え、前記繰り返しパターンが最上位ビットから最下位ビットへ配置されている状態で前記赤のビット、前記緑のビット及び前記青のビットが、同一の順番のビットからである、請求項１２に記載のコンピュータ実装方法。
【０１０７】
１４．レコードが、前記１つまたは複数の整数検索範囲内の１つまたは複数のインデックス化された整数カラー値に関連付けられた品目レコードを備える、請求項１０に記載のコンピュータ実装方法。
【０１０８】
１５．前記最小次元カラー値または前記最大次元カラー値の少なくとも１つが、人間のカラー差分の知覚の式の少なくとも一部に基づいて判定される、請求項１０に記載のコンピュータ実装方法。
【０１０９】
１６．プロセッサによって実行されると、最小赤の値、最大赤の値、最小緑の値、最大緑の値、最小青の値及び最大青の値を備えるＲＧＢカラー検索範囲を取得すること、前記最小赤の値及び前記最大赤の値の少なくとも一部に基づいて１つまたは複数の赤の２進分割範囲を計算すること、前記最小緑の値及び前記最大緑の値の少なくとも一部に基づいて１つまたは複数の緑の２進分割範囲を計算すること、前記最小緑の値及び前記最大緑の値の少なくとも一部に基づいて１つまたは複数の青の２進分割範囲を計算すること、最上位次元から最下位次元に配置された、前記１つまたは複数の赤の２進分割範囲の赤の２進分割範囲、前記１つまたは複数の緑の２進分割範囲の緑の２進分割範囲及び前記１つまたは複数の青の２進分割範囲の青の２進分割範囲からのインタリーブされたビットを各々が備える、前記赤の２進分割範囲、前記緑の２進分割範囲及び前記青の２進分割範囲の順列の少なくとも一部に基づいて、１つまたは複数の整数検索範囲を生成すること、及び前記１つまたは複数の整数検索範囲内の少なくとも１つのインデックス化された整数カラー値に関連付けられたレコードを備える検索結果を、データストアから、前記１つまたは複数の整数検索範囲を用いて取得することを備える動作を行う、コンピュータ実行可能命令を記憶している非一時的なコンピュータ可読記憶媒体。
【０１１０】
１７．前記最小赤の値及び前記最大赤の値で第１の分岐ビットを判定することによって、前記１つまたは複数の赤の２進分割範囲の少なくとも一部を識別し、前記最小緑の値及び前記最大緑の値で第２の分岐ビットを判定することによって、前記１つまたは複数の緑の２進分割範囲の少なくとも一部を識別し、前記最小青の値及び前記最大青の値で第３の分岐ビットを判定することによって、前記１つまたは複数の青の２進分割範囲の少なくとも一部を識別する、請求項１６に記載の非一時的なコンピュータ可読記憶媒体。
【０１１１】
１８．前記検索結果が前記１つまたは複数の整数検索範囲内の１つまたは複数のインデックス化された整数カラー値に関連付けられたオブジェクトレコードを備える、請求項１６に記載の非一時的なコンピュータ可読記憶媒体。
【０１１２】
１９．前記オブジェクトレコードが品目レコードである、請求項１７に記載の非一時的なコンピュータ可読記憶媒体。
【０１１３】
２０．前記コンピュータ可読記憶媒体がユーザコンピューティング装置にアクセス可能である、請求項１８に記載の非一時的なコンピュータ可読記憶媒体。
【０１１４】
２１．前記最小赤の値、前記最大赤の値、前記最小緑の値、前記最大緑の値、前記最小青の値または前記最大青の値の少なくとも１つが、人間のカラー差分の知覚の式の少なくとも一部に基づいて判定される、請求項１６に記載の非一時的なコンピュータ可読記憶媒体。
【０１１５】
２２．１つまたは複数のＲＧＢカラーに各々が関連付けられた１つまたは複数のオブジェクトレコードを記憶するように構成されたデータストアと、１つまたは複数のハードウェアプロセッサ及びコンピュータ実行可能命令を記憶しているメモリを備えるコンピューティング装置であって、前記１つまたは複数のハードウェアプロセッサが前記コンピュータ実行可能命令を実行するように構成されたコンピューティング装置とを備えるシステムであって、前記コンピュータ実行可能命令が、少なくとも、前記データストアのオブジェクトレコードに関連付けられたＲＧＢカラーごとに、前記ＲＧＢカラーの赤の次元値、緑の次元値及び青の次元値からの、最上位桁から最下位桁に並べ替えられたインタリーブされたビットを備える１次元カラー空間に対応する整数カラー値を生成し、前記整数カラー値を、前記データストアに、前記ＲＧＢカラーに関連するものとして記憶し、整数カラー値を、前記データストアでインデックス化する、前記システム。
【０１１６】
２３．各オブジェクトレコードが品目レコードを備える、請求項２２に記載のシステム。
【図１】
0006302575.tif 000002
【図２】
0006302575.tif 000003
【図３】
0006302575.tif 000004
【図４】
0006302575.tif 000005
【図５】
0006302575.tif 000006
【図６】
0006302575.tif 000007