(57)【特許請求の範囲】
【請求項１】
いくつかの数のキャラクタと、そのキャラクタと組み合わせたある量のクラッタとを備えるＨＩＰシーケンスを生成する、キャラクタ・シーケンス生成構成要素と、  前記ＨＩＰシーケンスを、高分解能でバイナリ形態でワーピングして、それによってワーピングされたＨＩＰシーケンスが白黒で現れるようにする、ワーピング構成要素と  前記ＨＩＰシーケンスを、それがワーピングされた後に１よりも大きい任意の係数を用いて低分解能のバイナリ形態にダウン・サンプリングする、ダウン・サンプリング構成要素と  を備えることを特徴とする拡張型ＨＩＰ生成システム。    
【請求項２】
前記ＨＩＰシーケンスにテクスチャを追加すること、前記ＨＩＰシーケンスの前記キャラクタおよび前記クラッタに色を追加すること、および前記ＨＩＰシーケンスの前記キャラクタおよび前記クラッタ以外の部分に色を追加することのうちの少なくとも１つを実行するカスタム化構成要素をさらに備えることを特徴とする請求項１に記載の拡張型ＨＩＰ生成システム。    
【請求項３】
前記カスタム化構成要素は、前記ＨＩＰ生成システムのクライアント側に常駐することを特徴とする請求項２に記載の拡張型ＨＩＰ生成システム。    
【請求項４】
ダウン・サンプリングされたＨＩＰシーケンスは、グレー・スケールの形式であるとともに、それがワーピングされた後の前記ＨＩＰシーケンスよりもサイズが小さいことを特徴とする請求項３に記載の拡張型ＨＩＰ生成システム。    
【請求項５】
前記ダウン・サンプリングされたＨＩＰシーケンスは、エイリアス除去されていることを特徴とする請求項４に記載の拡張型ＨＩＰ生成システム。    
【請求項６】
前記ダウン・サンプリングはバイ・キュービックであることを特徴とする請求項３に記載の拡張型ＨＩＰ生成システム。    
【請求項７】
前記ワーピング構成要素は、  グラフィック処理ユニット（ＧＰＵ）と、  ３２ビットプロセッサ上の６４ビットまたは１２８ビットの単一命令多重データ（ＳＩＭＤ）オペレーションの少なくとも１つとのうちの少なくとも一方を備え、  前記オペレーションは、マルチメディア拡張（ＭＭＸ）命令セット、ストリーミングＳＩＭＤ拡張（ＳＳＥ）命令セット、またはストリーミングＳＩＭＤ拡張２（ＳＳＥ２）命令セットの少なくとも１つを介して提供されることを特徴とする請求項１に記載の拡張型ＨＩＰ生成システム。    
【請求項８】
任意の量のクラッタと組み合わせた任意の数のキャラクタを備えるキャラクタ・シーケンスを生成すること、および  グラフィクス処理ユニット（ＧＰＵ）と、  マルチメディア拡張（ＭＭＸ）命令セット、ストリーミングＳＩＭＤ拡張（ＳＳＥ）命令セット、またはストリーミングＳＩＭＤ２拡張（ＳＳＥ２）命令セットの少なくとも１つを介して提供される、３２ビット・プロセッサ上の６４ビットまたは１２８ビットの単一命令多重データ（ＳＩＭＤ）動作の少なくとも１つとのうちの少なくとも一方を使用してＨＩＰシーケンスをワーピングすること、  前記ＨＩＰシーケンスを、それがワーピングされた後に１よりも大きい任意の係数でダウン・サンプリングすること  を備えることを特徴とするアドバンスＨＩＰ生成方法。    
【請求項９】
任意の数のキャラクタおよび任意の数のアークを選択してＨＩＰシーケンスを形成すること、  前記ＨＩＰシーケンスをワーピングして配信および使用のためのＨＩＰ画像を生じさせること、  前記ＨＩＰシーケンスを、それがワーピングされた後に１よりも大きい任意の係数でダウン・サンプリングすること、  前記ＨＩＰ画像を、少なくとも部分的にはテクスチャおよび／または色の少なくとも一方を追加することによってカスタム化して、前記ＨＩＰ画像の外見を充実させること  を備えることを特徴とするアドバンスＨＩＰ生成方法。    
【請求項１０】
部分的には低ディスクレパシー乱数（ｌｏｗ ｄｉｓｃｒｅｐａｎｃｙ ｑｕａｓｉ−ｒａｎｄｏｍ ｎｕｍｂｅｒｓ）の使用に基づいて、前記アークを前記キャラクタと無作為に組み合わせることをさらに備えることを特徴とする請求項９に記載のアドバンスＨＩＰ生成方法。    
【請求項１１】
前記ＨＩＰ画像のカスタム化はクライアントによって実行されることを特徴とする請求項９に記載のアドバンスＨＩＰ生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般的には人間対話証明（human interactive proofs）に関し、詳細には、人間対話証明の構成および生成速度を改善して、コンピュータ・ベース・アクションと人間アクションとを見分けることに関するその効率性の向上を促進することに関する。
【背景技術】
【０００２】
インターネットなどのグローバル通信ネットワークの到来は、膨大な数の潜在的顧客と連絡する機会を提供している。この数年において、ユーザは、信頼性のあるニュース・ソース、研究資源、およびその他の多種多様なタイプの情報源として、インターネットに目を向けてきている。さらに、オンライン・ショッピング、ディナーの予約、コンサートおよび／または映画チケットの購入は、現在、インターネットを使用してコンピュータの前に座りながら行われる一般に普及した行動の内のわずかな例にすぎない。しかしながら、個人顧客と同様にビジネス顧客によるインターネットの広範囲な使用によって、不必要に、あるいは望ましくない露見をもたらし、様々な経済的リスクおよび／またはセキュリティ脆弱性を引き起こす可能性がある。
【０００３】
オンライン・ビジネスについては、セキュリティや、オンライン・ショッピングまたは予約を行わせるバイヤーの信憑性（validity）が主要な関心事となっている。例えば、多くのレストランが、オンライン予約サービスを提供しており、その場合に客はインターネットを介してそのレストランのウエブ・サイトを使用して予約をすることができる。残念なことに、このシステムによって、レストラン・オーナーは、ディナー・サービス・アタック−これは自動スクリプト・アタックの１つにすぎない−に対していくぶん無防備になる。このようなアタックは、コンピュータが、それ以上でないにしても、数百回の、多数のレストランに悪影響を与える偽のオンライン予約を行うときに発生する。そのようなアタックの結果として、これらのビジネスは中断されるか、あるいは歳入損失、システム補修およびクリーンナップのコスト、ならびにネットワーク・セキュリティの改善に関連する費用によって被害を受けることさえある。
【０００４】
別のタイプのアタックが、スパム（spam）アタックの形態で行われる場合がある。スパム・アタックは、特定のビジネスなどの１つの事業体（entity）をターゲットにしたり、電子メール・アドレスによって無作為に選択された数千のユーザをターゲットにしたりして行われる可能性がある。一般に、スパムは、電子メール使用の人気の高まりによって、急速に増大する問題となっている。周知のように、電子メッセージは、ネットワーク・ユーザに不要な広告やプロモーション（例えば、スパム）を流す手段として、ますます広がる傾向にある。数百または数千のユーザ、または単一の事業体に対しての、同時に広範囲のスパム流布は、コンピュータによって実行される自動アクションの使用に起因する可能性がある。例えば、スパマー（Spammer）は、コンピュータをプログラムして、一日単位または週単位などで、合法的なメッセージ・サービス・プロバイダからの多数の異なる電子メール・アカウントを生成するか、または開くことができる。これを行うことによって、スパマーは、１つまたは２つのアカウントが時々シャットダウンされていたとしても、自分たちのスパムができる限り多くの受信者に確実に配布されるようにすることができる。
【０００５】
コンサルティングおよびマーケット・リサーチ会社であるＲａｄｉｃａｔｉ  Ｇｒｏｕｐ，Ｉｎｃ．は、２００２年８月時点において、毎日２０億通のジャンク電子メール・メッセージが送付されていると推定しており、この数は２年毎に３倍になると予測されている。個人および事業体（例えば、ビジネス、政府機関）が迷惑に感じることが多くなり、スパム（ジャンク・メッセージ）によって障害を受けることが多くなっている。したがって、スパムは、現在において、または近い将来に、信頼できるコンピューティングに対する重大な脅威となるであろう。
【０００６】
さらに、インターネットの急速な成長と発展は、不正な、破壊的な、および／または損害を与える活動が発生する新規な道を取り込んだ。スパムおよび自動スクリプト・アタックを阻止する一手段として、いくつかのオンライン・ビジネスならびにメッセージング・サービスでは、コンピューティング・チャレンジ（computational challenge）または人間対話証明（ＨＩＰ：human Interactive Proofs）の使用を実行している。このような技法は、コンピュータが人間ユーザとコンピュータ・ユーザとを区別することを可能にする。
【０００７】
コンピュータと人間との区別についての研究は、本来のチューリング・テスト（Turing Test）に遡り、これは、人間が、別の人間と機械とを、両者に質問することによって区別すること、を求める。最近の関心は、人間を目的とするサービスを自動化されたスクリプトが使用するのを防止する自動フィルタの構築を可能にするために、コンピュータに別のコンピュータと人間とを区別させることを可能にする、ためのシステムの開発に向いている。そのようなシステムは、人間対話証明（ＨＩＰ）、またはコンピュータと人間とを区別するための完全自動化公共チューリング・テスト（ＣＡＰＴＣＨＡｓ：Completely Automated Public Turing Tests to Tell Computers and Humans Apart）と呼ばれている。例えば、ＨＩＰは、ノイズおよび／または背景とともに配置されるキャラクタ（character）の認識に依存することができ、この場合に、この質問は、すべての提示されたキャラクタを正しく識別することである。
【先行技術文献】
【非特許文献】
【０００８】
【非特許文献１】LUIS VON AHN, et al., Telling Humans and Computers Apart (Automatically or How Lazy Cryptographers do Al, Communications of the ACM, February 2004, 11 pages.
【非特許文献２】PATRICE Y. SIMARD, et al., Using Character Recognition and Segmentation to Tell computers from Humans, ICDAR 2003, 2003, pp. 418-423.
【非特許文献３】First Workshop on Human Interactive Proofs, January 9-11, 2002, 5 page Palo Alto, California, USA.
【非特許文献４】H.S. BAIRD, et al., Human Interactive Proofs and Document Image Analysis Proc. IAPR 2002, 2002, 12 pages, Workshop on Document Analysis Systems, Princeton, New Jersey, USA.
【非特許文献５】LUIS VON AHN, et at., Telling Humans and Computers Apart(Automatically), The Captcha Project, 2000, 3 pages, http://www.captcha.net.
【非特許文献６】Paypal, an eBay Company, 1999, 1 page.
【非特許文献７】A.M. TURING, Computing Machinery and Intelligence, Mind, 1950, pp. 433-460, Vol. 59-No. 236.
【発明の概要】
【発明が解決しようとする課題】
【０００９】
残念ながら、現行のＨＩＰシステムは、ランダム・アークとともに配置されるキャラクタは、それらのアークが人間知覚と干渉する状態で配置されていることがあるという点で、不完全であり得る。すなわち、人間がこれらの文字を区別することは非常に困難である可能性がある。したがって、従来式のＨＩＰは、コンピュータに対してアクセスを禁止して、人間に対してアクセスを許可することにおいてどちらかといえば効果的ではない。
【課題を解決するための手段】
【００１０】
以下には、本発明のいくつかの態様についての基本的な理解を提供するために、本発明の簡略化した要約を示す。この要約は、本発明の広範な概要ではない。この要約は、本発明の主要／重要要素を識別することを意図するものではなく、また本発明の範囲を描写するものでもない。この要約の唯一の目的は、後に提示するさらに詳細な説明に対する序文として、本発明のいくつかの概念を簡略化した形態で提示することである。
【００１１】
本発明は、部分的には人間対話証明（の質問（チャレンジ））の有効性とともにその生成速度を向上させることによって、コンピュータ・ユーザと人間ユーザとを区別することを容易にするシステムおよび方法に関する。従来型ＨＩＰとは異なり、本発明のシステムおよび方法は、アークおよび／またはクラッタをＨＩＰシーケンスの回りに配置するか、またはそれと組み合わせる無作為性を低下させることによって、解くことのできない、または不可能な質問（チャレンジ）を生成する確率を、部分的に、低減することができる。さらに、多くの関連する量を事前計算できるように必要な計算を修正することによって、部分的には比較的大きな高速化ゲインを達成することができる。最後に、対象ＨＩＰの見栄え（visual appeal）を、高い分解能でＨＩＰをワーピング（warp）すること、次いでダウン・サンプリング（down‐sampling）すること、などによって、さらに向上させることができる。このワーピングされたＨＩＰシーケンスを、１つまたは複数のテクスチャおよび／または色と組み合わせて仕上がりＨＩＰの外見をさらに良くすることもできる。
【００１２】
本発明の一態様によれば、大きな２次元ワープ・フィールドを、事前演算するとともに、離散化する（discretize）か、または複数の整数に変換することが可能であり、それによってその上に表される各ピクセルが、それに付随する２つの整数、すなわちｘ次元およびｙ次元のそれぞれに１つ、を有することができる。ワープ・フィールドのサイズは、単一のＨＩＰ画像のサイズの数倍とすることが可能であり、複数の部分領域（sub-region）を含む。このワープ・フィールドの部分領域は、個々のＨＩＰをワーピングするのに使用することができる。例えば、部分領域は、無作為に選択するか、または手作業で選択して、ＨＩＰの様々な部分を伸張、回転、および／または歪曲（distort）するのに使用することができる。したがって、複数のＨＩＰをワーピングするのに、同一のワープ・フィールドを複数回使用することができる。これによって、より多数の固有のＨＩＰを実質的に短い時間内に生成することが可能になる。
【００１３】
本発明の別の態様によれば、ＨＩＰ生成プロセスは、ＨＩＰに使用可能な任意の数のキャラクタ（例えば、文字（letter）および／または数字）をプリレンダリング（pre-rendering）してキャッシュすることによっても向上させることができる。例えば、英語アルファベットの２６のキャラクタすべての回転および拡大縮小されたバージョンをキャッシュすることができる。ＨＩＰ構成プロセスを開始する際、このキャラクタのキャッシュから任意の数のキャラクタを無作為に選択することができる。このキャラクタまたはフォント・キャッシュは、少なくとも部分的には、使用することを望むＨＩＰの数に起因して、比較的大きくなる可能性がある。しかしながら、始動時にキャッシュに入れることは、非常に時間がかかることになる。したがって、時間と効率の観点から、構成されたＨＩＰに示されるキャラクタを、そのＨＩＰからパーズ（parse）してフォント・キャッシュに格納することによって、時間をかけてキャッシュを構築すること（例えば、レイジー・キャッシュ・ポピュレーション）を支援することができる。
【００１４】
その他のランダム・クラッタ（random clutter）と同様にアークは、ＨＩＰを生成するときの迅速な検索を容易にするために、プリレンダリングしてキャッシュすることができる。このプリレンダリングされたアークは、別のキャッシュ（例えば、アーク・キャッシュ）に維持することが可能であり、このキャッシュは、キャラクタと同じ数のアークが、所望の数のＨＩＰを生成するのに必要とされないので、開始時に構築することができる。アークおよび／またはクラッタは、無作為に選択して、無作為な方法でＨＩＰのテキストに配置することができる。アークまたはその他のクラッタの無作為配置は、部分的には低ディスクレパシー擬似乱数（low discrepancy quasi-random numbers）を使用することによって、生成することができる。一般に、これによって、複数のクラッタ・オブジェクトが生成されるときに、生成されるテキストとの干渉を最大化することができる。結果的に、すべてではないにしろ、ＨＩＰのテキストと組み合わせたほとんどのアークまたはクラッタを、テキスト全体により均一に分散させることがきるので、ＨＩＰの外見、ならびにその人間による可読性を改善することができる。
【００１５】
本発明のさらに別の態様においては、ＨＩＰの性能は、ＨＩＰをバイナリ形態で生成することによって改善することができる。すなわち、キャラクタ、アーク、および／またはその他のクラッタを、バイナリ形態（例えば、白黒）でプリレンダリングすることが可能であり、これは、ＨＩＰ生成速度（例えば、ワーピング速度）にさらなる利得を提供する。さらに、ＨＩＰをバイナリで構成することによって、ハッカーおよびそのコンピュータによるＨＩＰのリバース・エンジニアリング（の可能性）を軽減するさらなるセキュリティ保護を提供することができる。
【００１６】
テクスチャおよび／色（例えば、背景色および／または前景色）も、ＨＩＰに追加して、その外見を改善し、かつ／またはユーザ嗜好に従ってＨＩＰをカスタム化することができる。例えば、季節休暇、対象とする人間ユーザ、その他に応じて、様々な色を前景（例えば、テキスト、アーク、クラッタ）または背景に追加することができる。カスタム化処理は、サーバ・プロセッサ（サーバの中央処理ユニット）にどちらかといえば負担となる可能性がある。したがって、クライアント上に設けられた、ＭＭＸ、ＳＳＥ、およびＳＳＥ２技術に加えて、グラフィック処理ユニットを使用して、そのようなＨＩＰのカスタム化を実行し、さらにＨＩＰ生成速度を最適化することができる。さらに、これらのタイプの技術は、プリレンダリングしたキャラクタ・ビットマップとプリレンダリングしたアーク・ビットマップとを結合するのに使用することができる。
【００１７】
さらに、本発明の様々な態様は、一緒にまたは単独で、あるいは互いに組み合わされて機能して、生成して使用するＨＩＰの品質および評価を向上させるとともに、さらに重要なこととして、概して、自動スクリプト・アタック、スパム・アタック、およびスパム配信を阻止する。
【００１８】
前述の目的および関係する目的の達成のために、本発明のいくつかの説明のための態様を、以下の説明と添付の図面と関係して、本明細書に記述する。しかしながら、これらの態様は、本発明の原理を使用することのできる様々な方法の内のいくつかを示すものにすぎず、本発明には、そのような態様およびその均等物のすべてを含めることを意図するものである。本発明のその他の利点および新規な特徴は、図面と関連して考察すれば、以下に示す本発明の詳細な説明から明らかになるであろう。
【図面の簡単な説明】
【００１９】
【図１】本発明の一態様による、ＨＩＰ生成システムのブロック図である。
【図２】本発明の別の態様による、ＨＩＰ生成の概略図である。
【図３】本発明のさらに別の態様により、様々なサブプロセスの実行後に結果として得られるそれぞれのＨＩＰと連結された、例示的なＨＩＰ生成プロセスの概略フロー図である。
【図４】本発明のさらに別の態様によって形成された例示的なＨＩＰを示す図である。
【図５】本発明の一態様による、例示的ＨＩＰ生成プロセスのフロー図である。
【図６】本発明の一態様による未処理ＨＩＰ（ワーピング前）を生成するための例示的方法を示すフロー図である。
【図７】本発明の様々な態様を実装するための例示的環境を示す図である。
【発明を実施するための形態】
【００２０】
本発明は、図面を参照して説明され、この図面において、全図を通して、同一の要素を指すのに同一参照番号が使用される。以下の記述においては、説明の目的で、本発明の完全な理解をもたらすために、多数の具体的な詳細を記載する。しかしながら、本発明はこれらの具体的な詳細なしに実施できることは明らかである。別の例においては、周知の構造および装置は、本発明の説明を容易にするためにブロック図形態で示している。
【００２１】
本出願における使用においては、「構成要素（component）」および「システム」という用語は、ハードウェア、ハードウェアとソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアのいずれかの、コンピュータ関連のエンティティを意味する、ことを意図している。例えば、構成要素は、それに限定はされないが、プロセッサ上で実行中のプロセス、プロセッサ、オブジェクト、実行ファイル、実行のスレッド（thread of execution）、プログラム、およびコンピュータである。実例として、サーバ上で実行中のアプリケーションおよびそのサーバは両方とも構成要素であることになる。１つまたは複数の構成要素が、プロセスおよび／または実行のスレッド内に常駐することができるとともに、構成要素は、１つのコンピュータに局所化することも、かつ／または２つ以上のコンピュータ間に分散化させることもできる。
【００２２】
さらに、本出願で使用される、「コンピュータ・ユーザ」という用語は、受取人のネットワークまたはサービスにアタックして受取人のビジネスまたはサービスを混乱させる意図をもって、自動スクリプト・アタックを開始したり、様々な受取人ならびに特定の受取人に数百または数千のスパムを送付したりするアクションをとるようにコンピュータがプログラムされている場合のような、非人間ユーザを意味することを意図するものである。
【００２３】
本発明には、機械学習スパム・フィルタリング（machine learned spam filtering）用のトレーニング・データの生成と関係して、様々な推論方式および／または技法を組み入れることができる。本明細書での使用においては、「推論（inference）」という用語は、一般に、事象（event）および／またはデータから収集される一組の観察から、システム、環境、および／またはユーザの状態を推察（reasoning about）または推論（inferring）するプロセスを意味する。推論は、特定のコンテクストまたはアクションを識別するのに使用することができ、また、例えば、いくつかの状態についての確率分布を生成することができる。推論は確率論的にすること、すなわち、データおよび事象の考察に基づく、対象とするいくつかの状態についての確率分布の計算とすること、ができる。推論は、一組の事象および／またはデータからより高レベルの事象を構成するのに使用される技法を意味することもある。そのような推論の結果、それらの事象同士が時間的に近接して相互関連していようとなかろうと、そして事象およびデータが１つまたはいくつかの事象およびデータ源から生じていようとなかろうと、一組の観察された事象および／または格納された事象データから、新規の事象またはアクションが構築される。
【００２４】
本発明は、２つのまさに能力を必要とする視覚的問題（vision problem）、すなわち対象物のセグメンテーションおよび認識、に基づくことができる。セグメンテーションについては、人間は、通常、任意のシーンを、それを断片（piece）にセグメント化することによって評価することができる。例えば、家具を備えた部屋を示されると、人間は、その部屋のはっきりと識別できる部分またはコンテンツ、すなわち「テーブルがある」、「イスがある」、「ランプがテーブルの上にある」などを、確認または識別することができる。人間による（セグメント化された）対象物の認識は、常時存在し、それによって人間は、自分たちに提示される任意のシーンを統合し、再評価することができる。これに対して、コンピュータは、個々の断片をセグメント化して識別するのが比較的困難である。
【００２５】
反対に、光学式文字認識（ＯＣＲ）における認識、ならびに手書き認識技法などにおける認識は、例えば、椅子やテーブルが何で定義されるかを学習するためにレコグナイザ（recognizer）を訓練することを伴う。すなわち、コンピュータを、対象物をその特定されたサイズ、密度、その他によって認識するように訓練することができる。しかしながら、セグメンテーションはずっと主観的である。例えば、様々な形態の印刷テキストは、かなり高い正確率（accuracy rate）（例えば、９０％以上）でコンピュータによって認識することができる。印刷テキストまたは文字にゆがみが与えられる場合には、正確率は、全く影響を受けないこともある。しかしながら、草書体で書かれたものは、各文字が始まる場所または終わる場所を判断することが困難である可能性があるので、コンピュータにとって認識することが、はるかに困難である。
【００２６】
本発明において記述した高性能ＨＩＰは、コンピュータがＨＩＰを「破る（break）」ことを非常に困難にする独特の方法で、アークまたはその他のランダム・クラッタをキャラクタの部分上に加えること（例えば、少なくとも１つの文字のある部分に接触させること）だけでなく、キャラクタを曖昧にするためのゆがみを加えることによって、少なくとも部分的に、このコンピュータ弱点を利用している。コンピュータ認識能力は進歩を続けるので、ＨＩＰの生成は進化を続ける。本発明においては、これらのＨＩＰのセキュリティを促進し、それらをより高速で作り上げ、およびそれらの全体有効性（例えば、人間ユーザに対する見栄え）を向上させる、ためのいくつかの新規のアプローチを導入する。
【００２７】
実際的な価値のあるＨＩＰを構築することは、それを見て人間が機械よりもいくぶんよい成績をあげるチャレンジ（質問）を開発するだけでは十分ではないという理由で、困難である。この理由は、ほとんどの場合に失敗する（まれに成功する）自動アタッカーを有することに、ほとんどコストがかからないからである。実際に、自動化スクリプトを阻止しようと思えば、人間が９９％合格し、機械が１％合格するチャレンジは、機械にとっての失敗および反復のコストが低い場合には、まだ十分ではないかもしれない。したがって、有用であるためには、ＨＩＰは、反復推測（repeated guessing）をやる気をなくさせるのに十分なほど、自動アタックのコストを高くしなくてはならない。極端な意味（strong sense）では、チャレンジに機械で答えるコストが、人間を勧誘して同じタスクを実行するコストよりも高い場合に、ＨＩＰは有効である。本発明は、適切に変更された画像は、コンピュータにとっては、高価な技法を適用することなく確実に読み取ることは困難であるが、人間は非常に容易に理解できるという事実を利用する。そのような画像を、チャレンジとしてウエブ・ページ（またはコンピュータ・ログオン／アクセス・スクリーン）に含めるとともに、チャレンジに正答することに依存してページの提出（またはログイン）をさせることによって、スクリプトが、ウエブ・ページに対して実行される（コンピュータにログインするか、またはアクセスする）ことを相当に防止することができる。
【００２８】
さらに、本発明は、ほとんどすべての人間にとって読取りを容易にすると同時に、コンピュータが読み取ることを困難、高価、かつ予測不能にする状態で、画像（例えば、ＨＩＰ画像）などのコンテンツを変更する技法、およびそれらの高性能実装のためのアーキテクチャについて記述する。
【００２９】
ここで図１を参照すると、本発明の一態様によるＨＩＰ生成システム１００のための例示的なアーキテクチャを示す全体ブロック図がある。システム１００は、キャラクタ選択構成要素１１０を備え、これは、キャラクタ・キャッシュ１２０から複数のプリレンダリングされたキャラクタを無作為に選択することが可能であり、新規ＨＩＰの基礎（foundation；下書き）を形成する。プリレンダリングされたキャラクタは、構成中のＨＩＰに全体的なセキュリティ保護を付加するために、バイナリ形態でキャッシュ１２０内に格納することができる。キャラクタ・キャッシュ１２０には、すべての許容されるキャラクタ（大文字Ｉ、数字０および１、文字ＯおよびＱなどのいくつかのキャラクタは除外することができる）の回転および拡大縮小バージョンを、白黒ビットマップのコレクションとして含めることができる。
【００３０】
さらに、キャッシュ１２０は、特定のｘおよびｙのスケーリングならびに回転を有するそれぞれの可能なキャラクタに対して固有の場所に、開始時に生成することができる。キャッシュ内のビットマップ数は、非常に大きく増加する可能性がある。例えば、ｘおよびｙのスケーリングの両方に対して倍率が９５％〜１０５％であり、回転が−５〜＋５度の間である場合には、英語アルファベット（２６の大文字のすべて）に対して、１１×１１×１１×２６＝３４，６０６個のビットマップがあることになる。開始時にキャラクタ・キャッシュ１２０に取り込む（ビットマップのすべてを埋める）ことは非常に時間がかかり、そのためにレイジー・キャッシュ・ポピュレーションを使用する（すなわち、ＨＩＰが生成された際に、これらのＨＩＰに使用されたキャラクタがキャッシュに格納される）。時間経過とともに、キャッシュ１２０は、徐々に満杯になる。
【００３１】
キャッシュ１２０内のキャラクタは、ｘスケーリングおよびｙスケーリングおよび回転のすべての可能な組合せのメモリ・フットプリント（memory footprint；メモリ占有量）を低減するために、ランレングス符号化（ＲＬＥ：run-length encoding）することもできる。ランレングス符号化（ＲＬＥ）は、データ圧縮の簡単な形態であり、この場合にはいくつかのランのデータが、元のランとしてではなく、単一のデータ値および個数として格納される。例えば、一様な白の背景上の単色黒テキストを含むスクリーンを考える。ブランクスペース内には多数の白ピクセルの長いランと、テキスト内部には多数の黒ピクセルの短いランがある可能性がある。
【００３２】
一代替手法では、キャッシュ内に格納される画像としてグレー・スケール画像を使用し、この場合には、（格納されている）各キャラクタ（画像）は、スムースなエッジを生成するために背景中へのエイリアスが除去されている。しかしながら、プロセスまたはシステムのこの段階でのエイリアス除去によって、ＨＩＰがコンピュータによるリバース・エンジニアリングに対して脆弱になるので、そのような手法は安全性が低くなる可能性がある。
【００３３】
キャラクタ・キャッシュ１２０から一組のランダム・キャラクタが選択されると、それらを無作為順序で配列して、予備ＨＩＰ画像を形成することができる。次いで、アーク選択構成要素１３０を使用して、任意の数のアーク（またはその他のタイプのクラッタ）をアーク・キャッシュ１４０（または、それぞれ、その他任意のクラッタ・キャッシュ）から無作為に選択することができる。選択されたアークは、低ディスクレパシー擬似乱数を使用することによるなど、無作為な方法でテキスト（キャラクタ）の回りに配置するか、またはそれと組み合わせて、対象テキストとの干渉を最大化することができる。例えば、第２のアークの配置は、少なくとも部分的には、第１のアークその他の配置に基づくことができる。このタイプの制御された無作為性によって、ＨＩＰの外見をよくするとともに、人間ユーザとコンピュータ・ユーザを区別することにおいて、ＨＩＰをより有効にする。
【００３４】
アーク・キャッシュ１３０には、アーク幅の異なる複数の３次スプライン（cubic spline）を備える。この３次スプラインは、３つの制御ポイントに限定することができる。これらのアークの制御ポイントは、無作為に均一に選択される。さらに、アーク・キャッシュには、前景アークおよび背景アークを含めることができる。前景アークは、本質的にＨＩＰに対してインクを付加するのに対して、背景アークはＨＩＰからインクを実際上、除去することができる。さらに、前景アークは、前景色またはテクスチャと同一色またはテクスチャで現れるようにすることが可能であり、同様に、背景アークは、背景色またはテクスチャと同一色またはテクスチャで現れるようにすることができる。
【００３５】
さらに、アークを、ＨＩＰ上のテキスト・キャラクタから比較的遠く離れているＨＩＰシーケンスまたは画像の領域に生成または追加することが可能である。ＨＩＰ画像サイズ（幅および高さ）は、所定のフォントで所定数のキャラクタを表示するのに必要な必要スペースよりも大幅に大きくすることができる。このことは、自動システムをだまして画像内にその他のキャラクタがあると思わせる目的で、多くのアークを画像に追加することができるという理由で、有用である。この戦略は、これらの領域にいくつかのキャラクタの偽の存在（false positives）を生じさせることになる。キャラクタが配置されてしまうと、様々名な厚さの様々なアークを、キャラクタのある位置から離れて安全に追加することができる。厚いアークとは、その厚さが、そのキャラクタを生成するのに使用されるキャラクタ・フォントの平均厚さに近いか、またはそれよりも大きいアークを意味する。可読性の観点からは、厚いアークを均一に追加することは、厚いアークがキャラクタと重なるときに、それを読取り不能にする可能性が高いので危険である。可能な回避策としては、比較的薄いアークを均一に追加すること、および比較的厚いアークを、それらが、すでに配置されたキャラクタと重複しないという制約を除いて、均一に追加すること、である。このことは、配置キャラクタを判読可能（legible）にしておくのに役立つ。厚いアークは、キャラクタの平均厚さに近いので、それらを正規キャラクタと区別することは困難であり、したがって、アタックを拡散させる上で有効である偽の存在としての主要な候補である。キャラクタから離れて追加するアークの数または密度は、独立に調整することができる。
【００３６】
キャラクタ・キャッシュ１２０と異なり、アーク・キャッシュ１４０は非常に大きくする必要がない。数千のアークで、多数のＨＩＰを生成するのに十分である。したがって、これらのアークは、スタート時に生成することができる。キャラクタ・キャッシュ１２０と同様に、アークはバイナリ形態のビットマップとして保管することができる。キャラクタ・ビットマップと同様に、アーク・キャッシュ１４０におけるアーク・ビットマップは、ワーピング・プロセスを受ける前に、エイリアス除去なしとすることも、エイリアス除去を行うこともできる。しかしながら、ＨＩＰをワーピングする前にエイリアス除去すると、ＨＩＰがコンピュータによるリバース・エンジニアリングに対して脆弱になったり、それを受けやすくなったりする可能性がある。
【００３７】
次いで、予備ＨＩＰシーケンスまたは画像（ワーピングなし）を、ワープ・フィールド適用構成要素１５０に伝達することができ、この構成要素はワープ部分領域選択構成要素１６０と連絡する。この選択構成要素１６０は、ＨＩＰをワーピングするために使用するワープ・フィールドの部分領域を無作為に、または手作業で選択することができる。続いて、ワープ・フィールド適用構成要素１５０は、ＨＩＰを（ワープ・フィールドの）選択された部分領域に応じてマッピングすることができる。このようにして、ＨＩＰは伸張させるか、ゆがませるか、またはその他の方法で曖昧にすることで、ＨＩＰ画像中の特定のキャラクタを識別するのをより困難にすることができる。
【００３８】
ワープ・フィールドの部分領域は、ワープ・フィールド・キャッシュ１７０から無作為に、または手作業で選ぶことができる。ワープ・フィールド１７０は、（複数の整数から成る行列として格納された大きな２次元画像で、各ピクセルが、それに関連する２つの整数を有して、ｘ分散（x-dispersion）およびｙ分散を定義する）大きな２次元画像からなり、そのサイズは、単一ＨＩＰ画像の数倍である。所与のＨＩＰがワーピング処理を受ける際に、ＨＩＰのサイズのランダム連続部分行列がワープ・フィールド・キャッシュから抽出されて、ＨＩＰをワーピングするのに使用される。ワープ・フィールドのＨＩＰへの適用は、ＨＩＰのピクセルを、選択されたワープ・フィールド部分行列内の複数の整数によって規定される量だけ移動させる。
【００３９】
ワープ・フィールド・キャッシュ１７０は、２つのワープ・フィールドの集合体である。第１は、大域ワープ・フィールドであり、第２は局所ワープ・フィールドである。残念なことに、これらのワープ・フィールドの生成は、計算的に負荷が重い処理である。一つの例示となるプロセスでは、２次元ガウス・フィールドの生成を伴い、次いで、これが２次元指数フィルタを用いてローパス・フィルタリングされて量子化される（最近の整数値にまるめられる）。このフィールドの振幅は、ガウス・フィールドの絶対値によって決まり、フィールドの平滑度（大きな平滑な波を有するか、または小さな粗いリップルを有するか）は、指数関数的減衰の比によって決まる。
【００４０】
大域ワープ・フィールドは、大きな絶対値と高い減衰率（decay factor）を有するのに対して、局所ワープ・フィールドは、小さな絶対値と小さい減衰率を有する。その結果として、大域ワープ・フィールドは、大きく平滑なゆがみを生成するのに対して、局所ワープ・フィールドは、小さく粗いゆがみを生成する。さらに、ワープ・フィールドを複数の整数に変換すると、内挿の必要がなくなり、結果的にＨＩＰ形成が高速化される。
【００４１】
ＨＩＰ画像が十分にワーピングされた後に、それを、様々な構成要素によるさらなる処理に供することができる。例えば、ＨＩＰ画像は高い分解能でワーピングして、次に１よりも大きな係数によってダウン・サンプリングすることができる。これによって、ＨＩＰ画像の外観が向上する。さらに、ＨＩＰ画像にテクスチャおよび／または色を追加して、さらにその見栄えを向上させることができる。例えば、背景にテクスチャおよび少なくとも１つの色を追加し、同時に前景（例えば、少なくともテキスト）を１種または２種以上の異なる色で示すことができる。上述のようにして生成されたＨＩＰ１８０は、ウエブ・ベース・サービスを介してウエブ・サイト・オーナーに対して、および彼らのサイトまたはサービスへのアクセスを制御することを望むオペレータに対して、利用可能にすることができる。しかしながら、最終ＨＩＰ画像１８０が、ウエブ・サービスまたはウエブ・サイトを介して、ユーザのブラウザに提供される前に、画像１８０をｇｉｆ、ｊｐｅｇ、ｂｍｐ、その他に符号化することができる。これによって、生成されたＨＩＰ１８０が、汎用インターネット・ブラウザまたは画像表示ツールによって、提示されて見ることが可能になる。さらに、テクスチャおよび／または色を追加することが、ユーザまたはウエブ・サービス毎にＨＩＰの外見をカスタム化する手段として望ましい可能性がある。
【００４２】
システム１００には、任意選択のＨＩＰ検証システム１９０を含むことができ、これを使用して、（人間が認識するのに）失敗したＨＩＰを監視するとともに、部分的にはシステム１０によって生成されるＨＩＰを無作為にサンプリングすることによって、様々なテキスト＋アークの組合せの使用性の測定を容易化することもできる。特に、検証システム１９０は、ユーザに供給されるＨＩＰの実サンプルまたはＨＩＰシグネチャー（signatures；構成データ）とともに、人間がこれらのＨＩＰに答えるときの成功または誤りを収集することができる。この情報は、使用性マップの構築において、使用するキャラクタに関するキャラクタ配置またはアーク配置に関する成功および誤り率を、測定するのに使用することができる。キャラクタまたはフォントに対応する利用性マップを使用することができる。この初期マップは、フォントに対するグリフ（glyphs）のレンダリングのし方、および関連する文字間／数字間の混同に基づいて、（プログラマーまたは設計者によって先験的な人間知識（apriori human knowledge）に基づいて）手作業で生成される。例えば、Ｔｉｍｅｓ  Ｒｏｍａｎフォントにおける大文字Ｅは、Ｅの水平アームのいずれかを消すことになる背景アークに対して敏感である。これによって、Ｅを読み取る能力が低下する。しかしながら、独立した評価によって、Ｅの下側水平アームは消えている場合には意図せずにＥをＦのように見せることをユーザに気付かせることができる。次いで、使用性マップを使用して、将来のＨＩＰの生成を変更することができる。
【００４３】
さらに、１つの手法では、ＨＩＰのオンライン・オペレーション中の人間の誤りをサンプリングすることが含まれる。人間を識別するためにＨＩＰが生成された際に、成功および間違いが、各ＨＩＰシグネチャーとともにログ記録される、例えば、それぞれのサンプリングされたＨＩＰが、人間がＨＩＰを調べてそれを解決しようとしたトライアルに関連づけられる。ＨＩＰシグネチャーは、（ワープ・フィールドを除いて）ＨＩＰを構成するキャラクタおよびアークの場所およびパラメータを完全に同定する。成功および不成功のＨＩＰ解の両方がログ記録される。毎日、数百万件のＨＩＰが供給されるので、無作為サンプリングを適用して、オンラインシステムに悪影響を与えることなくある期間にわたって、所望の数のサンプルを達成することもできる。これらのサンプルにおけるＨＩＰシグネチャーは、ワーピング段階の前にＨＩＰを再生成するのに使用することができる。
【００４４】
次に、キャラクタのそれぞれを含む、再生成ＨＩＰの部分画像が抽出される。これらの部分画像は、ＨＩＰ内のキャラクタの拡大バウンディング・ボックス（enlarged bounding boxes）である。次いで、このバウンディング・ボックス部分画像が、回転および拡大縮小されて、元のキャラクタのサイズおよびオリエンテーション（向き）が得られる。その結果として、このバウンディング・ボックス内に入るアーク／アーク・セグメントがあれば抽出される。各キャラクタについて、周囲のアークがそのキャラクタとどのように交差／影響するかが調べられる。アークとキャラクタの交差の影響の重要性は明確である。アークがキャラクタと交差しない場合でも、アークは、それ自体の（「拡大」バウンディング・ボックス内のその存在によってモデル化される）キャラクタへの近接度に基づいて、キャラクタの解釈に影響を与える可能性がある。ユーザの誤りおよび成功は、どのタイプの交差／影響が悪いのか、およびどのタイプがよいのかをそれぞれ分類するのに使用される。このことは、単に、各キャラクタの回りのバウンディング・ボックス内に入る前景および背景のアーク・ピクセルの数を計数することによって、達成される。これらの計数によって、キャラクタ毎の使用性マップが形成される。成功および失敗の両方の場合についての計数が収集される。干渉および／または良性ピクセルを計数するとともに、その場所も追跡することができる。例えば、これらの計数は、場所毎にキャラクタが配置される場所に関連して追跡することができる。その結果として、バウンディング・ボックス内の各可能な場所におけるこれらの計数の２次元表現を含むマップが得られる。
【００４５】
ユーザ・データから使用性マップが構築されると、ＨＩＰ生成プロセスに、これらの使用性マップを考慮に入れることが可能であり、キャラクタの解釈に悪影響を与える可能性のあるアーク場所を排除することができる。アークがＨＩＰに追加される際に、それらを受容／拒絶するために、試行錯誤法を使用することができる。例えば、試行錯誤法は、アーク選択（１３０）中またはそれと同時に行うことができる。累積スコアを使用することによって、所与のアークを、その場所および形状／向きに基づいて、受容／拒否するかどうかを決定することができる。
【００４６】
次に図２を参照すると、本発明の一態様によるＨＩＰ形成の例示的なパスウェイの概略図を示してある。最初に、キャラクタ・プリレンダリング構成要素２１０および／またはアーク・プリレンダリング構成要素２２０は、キャラクタ（例えば、文字、句読点、および数字）および／またはアークをプリレンダリングして、それらを適当なデータベース（例えば、キャラクタ・データベース２３０、アーク・データベース２４０）に格納することができる。特に、拡大縮小ならびに回転をされたキャラクタは、バイナリ形態でビットマップとして個別にレンダリングすることが可能であり、次いでキャッシュして、ＨＩＰ画像またはキャラクタ・シーケンスを構成するときに、容易に取り出して利用できるようにすることができる。人間が解くには難しすぎると判定されたキャラクタは、必要に応じてデータベースから除去することができる。
【００４７】
アークならびにその他の任意のクラッタは、バイナリ形態でビットマップとしてプリレンダリングして、次いでキャッシュすることもできる。アーク・キャッシュには、簡単アーク（スプライン）とともに、セグメンテーションおよびＯＣＲプログラムに障害を生じさせるように設計されたその他のタイプのクラッタを含めることができる。そのようなクラッタの例としては、テキストとしての同一フォントからのキャラクタの断片、セリフ（serifs）を含むアーク、などが挙げられる。キャラクタ、アーク、およびその他任意のクラッタはプリレンダリングされ、次いでキャッシュされているので、ＨＩＰ構成および形成は、従来型生成方式と比較して非常に迅速に行うことができる。
【００４８】
構成されると、次いで、予備ＨＩＰ（プリワープＨＩＰ）２５０は、ワープ・フィールド２６０（２７０）の選択された部分セクションによってワーピングすることができる。ワープ・フィールド２６０は、複数の部分領域２６５を含むか、またはそれに分割することができる。したがって、新規のＨＩＰが構成される毎に、ワープ・フィールドの部分領域を、（ワープ・フィールド・キャッシュから）無作為に選択して、予備ＨＩＰ２５０に適用することができる。その結果として、新規ＨＩＰを生成する毎に、新規ワープ・フィールドを新しく生成することは必要でなくなり、これによって、ＨＩＰ生成時間が実質的に高速化して、貴重な資源の消費が少なくなる。
【００４９】
ワープ・フィールド・キャッシュとともにアーク・キャッシュは、周期的にリフレッシュして、ＨＩＰ生成アルゴリズムへのエントロピーの追加を促進したり、または確実にしたりすることができる。例えば、キャッシュ更新（update）の頻度は、カスタム化が可能であって、ワープ・フィールドに対しての５０ミリ秒に１回から、フォント、色、およびテクスチャ更新に対しての２日に１回までの範囲とすることができる。キャラクタ・キャッシュは、アーク・キャッシュより低い頻度で更新することができるが、少なくともＨＩＰ変更に対するフォントと同じ頻度で更新しなくてはならないことを認識すべきである。
【００５０】
先に述べたように、対象ＨＩＰはバイナリ形態で生成して、ＨＩＰのセキュリティを向上させるとともに、生成時間を高速化することができる。しかしながら、バイナリ形態で描かれたＨＩＰは、エッジが波立つか、または粗い可能性があるので、見栄えがよくないことがある。この問題に対処するために、本発明はダウン・サンプリングを提供する。ダウン・小サンプリング構成要素２８０は、１よりも大きい任意の整数もしくは非整数（例えば、２などの係数）または（例えば、４つの内の３つがオンの場合、新規ピクセルがオン状態とするように、新規ピクセルを４つの方向のすべてで古いピクセルを平均化する）バイ・キュービック手法によって、生成されたＨＩＰをダウン・小サンプリングすることができる。ダウン・サンプリングの結果として、完成ＨＩＰ２９０は、より平滑なエッジを有して、より洗練され、かつ（その前回の黒白のカラー方式と異なり）グレー・スケール諧調で見せることができる。ここで理解すべきは、ダウン・サンプリングは、ＨＩＰがワーピングされる前に行うことができるが、これはＨＩＰのセキュリティおよび完全性を損なう可能性があることである。
【００５１】
さらに、このときに、ＨＩＰが完全に形成された（例えば、構成されてワーピングされた）後にエイリアス除去を実行することができる。この理由は、テキストおよびアークのすべては、すでに存在しており、相応に配置されているからである。したがって、エイリアス除去は、アーク／クラッタのレベルおよび／またはテキストのレベルではなく、ＨＩＰのレベルで行われることになる。このことをさらに実証するためには、プリレンダリングされたキャラクタが、１つまたは複数のエイリアス除去フィルタによって、エイリアス除去されて（背景中に平滑に混合されて）、そのサブセットがＨＩＰ用に無作為に選択されることを想定する。次に、エイリアス除去されていない（ぎざぎざのエッジ・アーティファクトが存在する−階段状外見の）アークのサンプリングがテキストに追加される。ＨＩＰをワーピングし、かつバイナリで符号化するのにもかかわらず、ＨＩＰはなおリバース・エンジニアリングが可能である。この理由は、アークのぎざぎざのエッジは、少なくとも部分的にエイリアス除去計算を用いているテキストの平滑エッジと区別することができるからである。すなわち、このアークは、少なくとも部分的に画像からセグメント化（分離）することも可能であり、それによってＨＩＰの全体セキュリティおよび有効性が低下する。
【００５２】
ここで、キャラクタおよびアークがエイリアス除去され、次いでキャッシュされていると仮定する。テキストのエイリアス除去結果は、両方に同じエイリアス除去アルゴリズムを使用したとしても、通常、アークのエイリアス除去結果とは異なる。キャッシュがエイリアス除去されたキャラクタおよびアークを有する場合には、これらのエイリアス除去されたキャラクタおよびアークを組み合わせることによって、（組合せプロセスの故に）それらの交差点において（アークがキャラクタの上に置かれるときに）アーティファクトが生成される。これらの交差点においては、エイリアス除去結果は、非交差点でのエイリアス除去結果の特性とは異なる特性を有する。この差異は、アーク／テキスト交差点を識別するのに利用することができる。次いで、これらの交差点に関する情報を、ＨＩＰ内でのテキストとアークを分離するのに使用することができる。ＨＩＰ上のアークのわずかな部分だけでも除去すると、セグメンテーション（区分け）が容易になるので、ＨＩＰによって提供されるセキュリティは低下する。
【００５３】
しかしながら、ＨＩＰがエイリアス除去されていて、ＨＩＰレベルにおいてリバース・エンジニアリングされる場合、アークとテキストを見分けるために画像の任意の部分について実行されるいかなるアクションも、同様に全体画像に作用させる可能性がある。言い換えると、このアーク・ピクセルは、テキスト・ピクセルと区別することはできない。したがって、エイリアス除去結果をベースにした操作は、ＨＩＰをリバース・エンジニアリングすることにおいて有効ではない。
【００５４】
ＨＩＰの目的および特性ならびにその生成方式のゆえに、ダウン・サンプリングされた白黒ＨＩＰを、セキュリティを維持しながら、非常に速いペースで生成するのに、サーバがより好適である可能性がある。この理由は、サーバそれ自身が、カラー画像に対してのピクセル当り３２ビット動作というよりも、ピクセル当り８ビット表現またはピクセル当り１ビット表現、あるいはランレングス符号化表現および動作を使用できるので、非常に高速に動作するからである。今日のサーバは３２ビットまたは６４ビットプロセッサを有するので、これらの３２ビットおよび６４ビット・プロセッサによってサポートされるＳＩＭＤ（単一命令多重データ）命令の使用によって、サーバ速度をさらに増大することができる。例えば、本明細書に記載するシステムおよび方法は、ＭＭＸ（Multimedia Extensions）命令セットおよび／またはＳＳＥ（Streaming SIMD Extensions）命令セットおよび／または（ＭＭＸ命令を１２８ビット・データ・ブロック上で動作することを可能にする）ＳＳＥ２命令セットを介して提供される、３２ビットＩｎｔｅｌ（登録商標）プロセッサ上の６４ビットおよび１２８ビットＳＩＭＤオペレーションを使用することができる。
【００５５】
さらに、ワーピング・プロセスならびにＨＩＰにテクスチャを加えるなどのカスタム化を実行するのにＧＰＵｓ（グラフィカル・プロセシング・ユニット）を使用することができる。ＧＰＵとは、主として３Ｄ関数の演算に使用されるシングル・チップ・プロセッサである。これには、ライティング効果、オブジェクト変換、および３Ｄモーションなどの動作が含まれる。これらのタイプの計算は、ＣＰＵ（中央処理ユニット）に対して負荷が大きいので、ＧＰＵはコンピュータの実行をより効率的にするのに役立つ。したがって、図に示すように、ＨＩＰ形成は、一般に、サーバ・クライアント・アーキテクチャにおけるサーバ側で行うことができる。
【００５６】
さらにサーバ・ベースＨＩＰ生成の高速化を、個々のピクセルではなく、白黒ＨＩＰにおける１および０のランに直接作用させることによって、達成することができる。ＨＩＰサーバにおけるブリッティング（blitting）、キーイング（keying）、およびワーピングのためのピクセル動作は、ピクセルのランについての関連する動作によって表すことができる。ランベース（run-based）ＨＩＰサーバからの出力は、ＧＩＦまたはその他のランベース画像符号化方式への、迅速な符号化を可能にする。これによって、符号化オーバヘッドを大幅に低減し、サーバ性能をさらに向上させることができる。最後に、サーバによっては、特定のクライアントに対する特定のカスタム化（例えば、色）を実行するように、指定または割り当てすることができる。
【００５７】
クライアント側ＨＩＰ動作には、テクスチャの追加、ブレンディング（例えば、前景および背景）、またはＨＩＰへの着色などの任意のカスタム化プロセスを含めることができる。例えば、クライアントのコンピュータからのブラウザ・ページ上でＨＩＰを見ているときに、色を見ることができるのに対して、サーバ上ではＨＩＰはグレー・スケールである。これは、ＨＩＰをクライアント・ユーザに対して可視化する前に、ＨＩＰ上にクライアント修正が実行された結果である可能性がある。さらに、ＨＩＰはサーバ上でのそれの形成に基いてリバース・エンジニアリングに対して十分に安全であるので、ＨＩＰをクライアント上でエイリアス除去することもできる。
【００５８】
図中には描かれていないが、サーバおよび／またはサーバ＋クライアント組合せは、ウエブ・サービスとして実現して、ＨＩＰ使用に対する位置独立性（location independence）を促進することができる。より具体的には、自分たちのネットワークを自動スクリプト・アタックから保護したり、その他の方法で自分たちのコンピュータへのアクセスを制御したりしたいと望む、ビジネスおよびウエブ・サイト・オーナーは、自分たちの私用または商用のために任意の数のＨＩＰを購入することができる。このことは特に有利になる可能性があり、その理由は、高性能ＨＩＰ生成の利点を、それらを生成するためにサーバを実行および維持するのに伴う費用またはオーバヘッド・コストなしに、獲得することができるからである。
【００５９】
次に、本発明による様々な方法論を一連の行為（act）を介して記述するが、ここで理解かつ認識すべきことは、本発明は行為（act）の順序によって限定されないことであり、その理由は、いくつかの行為は、本発明によれば、本明細書に示して記述したものと異なる順序で実行し、かつ／またはその他の行為と同時に行うことができるからである。例えば、当業者であれば、方法論は一連の相互関連する状態または事象として、例えば状態図として、表すことができることを理解するであろう。さらに、図示したすべての行為が、本発明による方法を実現するために必要であるわけではない。
【００６０】
次に図３を参照すると、本発明の一態様に従ってＨＩＰの生成を容易にする、例示的な方法３００の修飾したフロー図を示してある。方法３００は、３０５においてブランクＨＩＰを生成することで始めることができる。３１０において、Ｍ個のＨＩＰキャラクタを、事前設定ＨＩＰレングスＭ３１５に基づいて無作為に選択することが可能であり、ここでＭは１、または２以上の整数である。キャラクタの選択は、許容されるキャラクタのリスト３２０から選ぶことができる。結果として得られる、Ｙ５ＢＳＡＤＶＲを含むＨＩＰシーケンスまたは合成を、３２５に示してある。
【００６１】
３３０において、独立したキャラクタの変換を行うことができる。例えば、ｘおよびｙ移動、ｘおよびｙ拡大縮小（スケーリング）、および／またはキャラクタ中心回りの回転を行い、キャラクタ・キャッシュ３３５に格納するか、またはそこから取り出すことができる。キャッシュ内のキャラクタは、バイナリ形態で維持して使用することができる。３４０において、変換されたキャラクタを、３４５に示すように、ＨＩＰに追加することができる。
【００６２】
３５０において、前景アークを生成して、やはりバイナリ形態で維持されているキャッシュ３５５に格納するか、またはそこから取り出すことができる。次いで、３６０において任意の数の前景アークを、結果として得られるＨＩＰ３６５に示すように、ＨＩＰに追加することができる。同様に、３７０において、背景アークを生成し、次いで、前景アーク・キャッシュ３５５と類似のアーク・キャッシュ３７５から迅速に取り出すために格納される。３８０において、好適な数の背景アークを、結果として得られるＨＩＰ３８５に示すように、ＨＩＰに追加することができる。これらの背景アークは、ＨＩＰ３８５に示すように、背景と同じ色で現れるようにすることができる。
【００６３】
続いて、３９０において、ワープ・フィールドを選択して、ＨＩＰ３８５に適用することができる。特に、ワープ・フィールドのランダム部分領域を、ワープ・キャッシュ３９５から選択することができる。結果として得られるＨＩＰ画像４００が生成される。ワーピングは、比較的高分解能で実施して、次いで４０５において、２またはその他任意の整数あるいは１を超える非整数などの係数でダウン・サンプリングして、それによって結果として得られるＨＩＰ４１０を、例えば、その元のサイズの約半分とすることができる。さらに、結果として得られるＨＩＰはグレー・スケールで表すことができる。最後に、４１５において、前景および／または背景色および／または背景色および／またはテクスチャを、図のようにＨＩＰ４２０に加えることができる。
【００６４】
少なくとも部分的に本発明によって生成された例示的なＨＩＰを、図４に示してある。特に、ＨＩＰ４５０、４６０、および４７０は、前景とともに背景に様々な量のアーククラッタと組み合わせた６個の独立に変換されたキャラクタを含む、高性能ＨＩＰを示している。コントラスト色が、ＨＩＰをより見栄えよくするために、前景および背景に追加されている。ＨＩＰ４８０および４９０については、テクスチャ、色、および混色（color blending）が、さらに外見を充実させるために追加されている。
【００６５】
次に図５を参照すると、本発明の一態様による例示的なＨＩＰ生成方式５００のフロー図を示してある。この方法は、５１０において、一組のキャラクタおよび／アークをバイナリ形態のビットマップとしてプリレンダリングすることを含む。５２０において、プリレンダリングされたキャラクタおよび／またはアークは、それぞれの記憶装置またはデータベース内にキャッシュすることができる。特に、特定の記憶装置にキャッシュされるキャラクタは、すべて同一のフォントとすることができる。さらに、ビットマップ・キャッシュは、ランレングス符号化するか、またはＨＩＰ生成プロセスに対する所望の速度に応じて、ＧＩＦまたはＪＰＥＧとして符号化することができる。
【００６６】
特に、キャラクタをキャッシュすることは、比較的に時間のかかるプロセスであり、始動プロセスを妨げる可能性がある。その結果として、新規ＨＩＰを生成するときに、少なくともキャラクタのサブセットを、完成済みのＨＩＰからパーズして、キャラクタ・データベースに移して、利用可能なキャラクタの数を増大させることができる。したがって、キャラクタ・データベースは、時間経過とともに構築することができる。逆に、アーク・データベースは、それほど多くのアーク、したがってそれほど多くの時間を、必要とせず、始動プロセス中に構築することができる。両方のデータベースともに、特定の頻度で、必要に応じて、リフレッシュして、またはＨＩＰのセキュリティを向上させることができる。しかしながら、キャラクタ・データベースは、より低い頻度で更新すること、例えばキャラクタのフォントが変わるとき、または言語が変わるときのみに更新することができる。認識すべきことは、ＨＩＰ生成方法５００は、言語に無関係であり、任意のシンボル・セット、例えば等式記号、異なるタイプのロゴ・ブロック、動物および家庭用品などの任意の対象物、子供用玩具につけるもののような基本幾何学形状（例えば、ＨＩＰを、識別形状を必要とする学齢児童用に設計することができる）を含むように拡張することができることである。
【００６７】
次に、５３０において、複数の部分領域を有するワープ・フィールドを、バイナリ形態で事前演算し、次いで、大規模ワープ・フィールド・キャッシュにキャッシュすることができる。従来式のＨＩＰ生成方式とは異なり、この場合のワープ・フィールドは、複数の整数に変換することが可能であり、これは、ＨＩＰ生成を大幅に高速化することができる。５４０において、少なくとも第１のＨＩＰシーケンスを、例えば、以下の図６に示す例示的なプロセスを使用することによって、生成することができる。
【００６８】
次いで、５５０において、ワーピング・プロセスを受けるために、第１のＨＩＰをワープ・フィールドの少なくとも第１の部分領域に応じてマッピングすることができる。この選択部分領域は、この特定のＨＩＰシーケンスをワーピングするために、無作為に選んで、ワープ・フィールドから抽出すことができる。このＨＩＰシーケンスは、ある直線が曲がって現れる可能性があることを意味する、バイナリ形態でワーピングすることが可能である。これらは、エイリアス除去されない状態のままに残すこのシーケンスの結果として、このＨＩＰシーケンスにはぎざぎざのエッジを示すアーティファクトが存在する。このバイナリ・アーティファクトの影響を弱めるために、５６０において、ワーピングを高分解度で実施して、次いでダウン・サンプリングして、見栄えのよいＨＩＰを得ることができる。
【００６９】
５７０において、少なくとも第２のＨＩＰシーケンスを生成し、次いで、５８０において、第１のＨＩＰを生成するのに先に使用された、同一のワープ・フィールドの少なくとも第２の部分領域に応じてマッピングすることができる。この第２の部分領域も、無作為に選択して、次いで、ワープ・フィールドから抽出することができる。５９０において、完成ＨＩＰを得ることができる。そこから続いて、１つまたは複数のワーピングされたキャラクタを、そのＨＩＰからパーズし、次いでキャラクタ・データベースに追加することができる。そうでない場合には、プロセス５００は望みに応じて継続して、従来式ＨＩＰシステムよりも少なくとも１００倍速い速度で、ＨＩＰを生成することができる。
【００７０】
図６に移ると、本発明によるワーピング・プロセスに供することのできるＨＩＰシーケンスの取得を容易にする例示的プロセス６００のフロー図を示してある。プロセス６００には、図５から継続されて、６１０においてキャラクタ・キャッシュから任意の数のプリレンダリングされたキャラクタを無作為に選択することを含めることができる。例えば、文字および／または数字を含む８つのキャラクタを、キャッシュから選択することができる。６２０において、任意の数の背景および／または前景アークを、それらのキャラクタと無作為に組み合わせるとともに、部分的には低ディスクレパシー乱数の使用に基づいて、キャラクタに対して配置することができる。すなわち、アークの配置または位置決めは、ＨＩＰのある領域または場所における、望ましくないアークのクランピングやクラスタリングを最少化するために、先に配置されたアークの位置に依存す。ＨＩＰは人間にとって解決可能であるが、機械にとっては解決可能であってはならないことを思い起こして頂きたい。すなわち、このような無作為性の低いアークの配置によって、ＨＩＰの全体効率性は低下するよりも、むしろ向上する。
【００７１】
さらに、アークを、ＨＩＰ上のテキスト・キャラクタから比較的遠いＨＩＰシーケンスまたは画像の領域に生成したり、または追加したりすることができる。ＨＩＰ画像サイズ（幅および高さ）は、所定のフォントで所定数のキャラクタを表示するのに必要な必要スペースよりも大幅に大きくすることができる。このことは、自動システムを騙してその画像内に他のキャラクタがあると思わせる目的で、多数のアークを画像に追加することができるという理由で、有用である。この戦略は、これらの領域において、いくつかのキャラクタの偽の存在を生じさせることになる。キャラクタが配置されてしまうと、様々な厚さの様々なアークを、キャラクタのある位置から離れて安全に追加することができる。厚いアークとは、その厚さが、キャラクタを生成するのに使用されるキャラクタ・フォントの平均厚さに近いか、またはそれよりも大きいアークを意味する。可読性の観点からは、厚いアークを均一に追加することは、厚いアークがキャラクタと重なるとき、それを読取り不能する可能性が高いので、危険である。可能な回避策としては、比較的薄いアークを均一に追加すること、および比較的厚いアークを、それらが、すでに配置されたキャラクタと重ならないという制約を除いて、均一に追加すること、である。このことは、配置キャラクタを判読可能（legible）にしておくのに役立つ。厚いアークは、キャラクタの平均厚さに近いので、これらを正規キャラクタと区別することは困難であり、したがって、アタックを拡散する上で有効な偽の存在としての主要な候補である。キャラクタから離れて追加するアークの数または密度は、独立に調整することができる。
【００７２】
６３０において、ある量の任意のクラッタを無作為に選択して、アークの現在位置に応じて、ＨＩＰ上に配置することもできる。このクラッタには、無作為にまたは制御された方法でキャラクタを切断することによって得られるキャラクタのビットまたは断片を含めることができる。最後に、６４０において、ＨＩＰシーケンスを得ることができる。例示的な８キャラクタ（eight-character）ＨＩＰの変形形態には、ＨＩＰ画像サイズを維持したままキャラクタの数を低減すること、例えば、アークおよび／またはクラッタの量を増大させることによって、キャラクタの数を低減することを含めることができる。これによって、ＨＩＰは同じサイズに見えるが、解こうとするキャラクタの数は少ないので、ＨＩＰの性能をさらに向上させることができる。
【００７３】
さらに、キャラクタ、アーク、クラッタ、およびワープ・フィールドの部分領域を選択する無作為性は、部分的には、複数のランダム・エントロピー源を使用する乱数発生器によって生成される複数の乱数によって決定することができる。この乱数発生器は、推論または予測またはリバース・エンジニアリングをすることのできない種々の情報に基づいて、常にそれ自体を更新することができる。例えば、このタイプの情報には、（例えば、サーバによって）現在使用されているメモリの量、ネットワークまたはサーバに入る、またはそこから出るデータのタイプ、などがある。乱数（例えば、暗号擬似乱数（cryptographic pseudo-random numbers））は性能向上のためにバッチで生成してバッファに入れることができる。
【００７４】
本発明の様々な態様に対するさらなるコンテクストを提供するために、図７および以下の論述は、本発明の様々な態様を実現することのできる、好適な動作環境７１０の簡潔な全体説明を提供することを意図するものである。本発明を、１つまたは複数のコンピュータまたはその他のデバイスで実行される、プログラム・モジュールなどのコンピュータ実行可能命令の一般的なコンテクストにおいて説明するが、本発明は、その他のプログラム・モジュールと組み合わせて、および／またはハードウェアとソフトウェアの組合せとしても実現できることを、当業者は認識するであろう。
【００７５】
しかしながら、一般的に、プログラム・モジュールには、特定のタスクを実行する、または特定のデータ型を実装する、ルーチン、プログラム、オブジェクト、構成要素、データ構造、その他が含まれる。動作環境７１０は、好適な動作環境の一例にすぎず、本発明の使用または機能の範囲についての限定を意味するものではない。本発明で使用するのに好適な、その他の周知のコンピュータ・システム、環境、および／または構成としては、それに限定はされないが、パーソナル・コンピュータ、ハンドヘルドまたはラップトップ・デバイス、マルチ・プロセッサ・システム、マイクロ・プロセッサ・ベース・システム、プログラマブル大衆消費電子製品、ネットワークＰＣ、ミニ・コンピュータ、メインフレーム・コンピュータ、上記のシステムおよびデバイスを含む分散コンピューティング環境、その他がある。
【００７６】
図７を参照すると、本発明の様々な態様を実装するための例示的な環境７１０は、コンピュータ７１２を含む。コンピュータ７１２は、処理ユニット７１４、システム・メモリ７１６、およびシステム・バス７１８を含む。システム・バス７１８は、それに限定はされないが、システム・メモリ７１６を含むシステム構成要素を処理ユニット７１４に結合する。処理ユニット７１４は、様々なプロセッサの任意のものとすることができる。２重マイクロ・プロセッサおよびその他のマルチ・プロセッサ・アーキテクチャも、処理ユニット７１４として使用することができる。
【００７７】
システム・バス７１８は、メモリ・バスまたはメモリ・コントローラ、周辺バスまたは外部バス、および／またはそれに限定はされないが、１１ビットバス、産業標準構成バス（ＩＳＡ：industrial Standard Architecture）、マイクロ・チャネル・アーキテクチャ（ＭＳＡ：Micro-channel Architecture）、拡張ＩＳＡ（ＥＩＳＡ：Extended ISA）、インテリジェント・ドライブ・エレクトロニクス（ＩＤＥ：Intelligent Drive Electronics）、ＶＥＳＡローカル・バス（ＶＬＢ）、周辺部品相互接続（ＰＣＩ：Peripheral Component Interconnect）、ユニバーサル・シリアル・バス（ＵＳＢ：Univesal Serial Bus）、アドバンスト・グラフィックス・ポート（ＡＧＰ：Advanced Graphics Port）、パーソナル・コンピュータ・メモリ・カード国際協会バス（ＰＣＭＣＩＡ）、および小型コンピュータ・システム・インターフェース（ＳＣＳＩ：Small Computer System Interface）を含む、任意多様な利用可能なバス・アーキテクチャを使用するローカル・バスを含む。
【００７８】
システム・メモリ７１６は、揮発性メモリ７２０および不揮発性メモリ７２２を含む。例えば起動中にコンピュータ７１２内の要素間の情報を伝達する基本ルーチンを含む、基本入力出力システム（ＢＩＯＳ）が、不揮発性メモリ７２２に格納される。説明の目的であって、それに限定はされないが、不揮発性メモリ７２２には、読出し専用メモリ（ＲＯＭ）、プログラマブルＲＯＭ、電気的プログラム可能ＲＯＭ（ＥＰＲＯＭ）、電気的消去可能ＲＯＭ（ＥＥＰＲＯＭ）、またはフラッシュ・メモリがある。揮発性メモリ７２０には、ランダム・アクセス・メモリ（ＲＡＭ）があり、これは外部キャッシュ・メモリとして作用する。説明としてであって限定ではないが、ＲＡＭは多くの形態で利用可能であり、例えば、シンクロナスＲＡＭ（ＳＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、シンクロナスＤＲＡＭ（ＳＤＲＡＭ）、２倍データ・レートＳＤＲＡＭ（ＤＤＲ  ＳＤＲＡＭ）、エンハンストＳＤＲＡＭ（ＥＳＤＲＡＭ）、ＳｙｎｃｈｌｉｎｋＤＲＡＭ（ＳＬＤＲＡＭ）、およびダイレクトＲａｍｂｕｓＲＡＭ（ＤＲＲＡＭ）などがある。
【００７９】
コンピュータ７１２には、取り外し可能型／固定型、揮発性／不揮発性のコンピュータ記憶媒体を含めることもできる。図７は、例えばディスク記憶装置７２４を示す。ディスク記憶装置７２４としては、それに限定はされないが、磁気ディスクドライブ、フロッピー（登録商標）ディスクドライブ、テープ・ドライブ、Ｊａｚドライブ、Ｚｉｐドライバ、ＬＳ−１００ドライブ、フラッシュ・メモリ・カード、またはメモリ・スティックがある。さらに、ディスク記憶装置７２４には、それに限定はされないが、コンパクト・ディスクＲＯＭデバイス（ＣＤ−ＲＯＭ）、ＣＤレコーダブル・ドライブ（CD-R Drive）、ＣＤ書き換え可能ドライブ（CD-RW Drive）またはデジタル・ビデオ・ディスクＲＯＭドライブ（ＤＶＤ−ＲＯＭ）などの光ディスクドライブを含む、その他の記憶媒体と個別に、またはそれらと組み合わせた記録媒体を含めることができる。ディスク記録装置７２４のシステム・バス７１８への接続を容易にするために、通常、インターフェース７２６のような、移動型または固定型インターフェースを使用する。
【００８０】
図７は、ユーザと適当な動作環境７１０に記述された基本コンピュータ・リソースとの間の媒介として作用するソフトウェアを記述することに留意すべきである。そのようなソフトウェアは、オペレーティング・システム７２８を含む。ディスク記憶装置７２４に記憶できるオペレーティング・システム７２８は、コンピュータ・システム７１２のリソースを制御して割り当てる作用をする。システム・アプリケーション７３０は、プログラム・モジュール７３２およびシステム・メモリ７１６またはディスク記憶装置７２４のいずれかに記憶されるプログラム・データ７３４を介して、オペレーティング・システム７２８によるリソースの管理を利用する。本発明は、様々なオペレーティング・システムまたはオペレーティング・システムの組合せを用いて実装できることを認識すべきである。
【００８１】
ユーザは、入力デバイス（複数を含む）７３６を介してコンピュータ７１２にコマンドまたは情報を入力する。入力デバイス７３６には、それに限定はされないが、マウス、トラック・ボール、スタイラス、タッチ・パッド、キーボード、マイクロフォン、ジョイスティック、ゲーム・パッド、サテライト・ディッシュ、スキャナ、ＴＶチューナー・カード、デジタル・カメラ、デジタル・ビデオ・カメラ、ウエブ・カメラ、およびその他がある。これらおよびその他の入力デバイスは、インターフェース・ポート（複数を含む）７３８を経由してシステム・バス７１８によって、処理ユニット７１４に接続する。インターフェース・ポート（複数を含む）７３８としては、例えば、シリアル・ポート、パラレル・ポート、ゲーム・ポート、およびユニバーサル・シリアル・バス（ＵＳＢ）がある。出力デバイス（複数を含む）７４０は、入力デバイス（複数を含む）７３８と同タイプのいくつかのポートを使用する。したがって、例えば、ＵＳＢポートを使用して、コンピュータ７１２へ入力を供給するとともに、コンピュータ７１２からの情報を出力デバイス７４０に出力することができる。出力アダプタ７４２は、専用アダプタを必要とする他の出力デバイス７４０の中に、モニタ、スピーカ、およびプリンタのような出力デバイス７４０があることを示すために設けてある。出力アダプタ７４２としては、説明のためであって限定ではなく、出力デバイス７４０とシステム・バス７１８の間の接続手段を提供するビデオおよびサウンド・カードがある。リモート・コンピュータ（複数を含む）７４４などのその他のデバイスまたはデバイスのシステムは、入力および出力機能の両方を提供することに留意すべきである。
【００８２】
コンピュータ７１２は、リモート・コンピュータ（複数を含む）７４４などの、１つまたは複数のリモート・コンピュータへの論理接続を使用して、ネットワーク化環境で動作可能である。リモート・コンピュータ（複数を含む）７４４は、パーソナル・コンピュータ、サーバ、ルータ、ネットワークＰＣ、ワークステーション、マイクロ・プロセッサ・ベース機器、ピア・デバイス（peer device）またはその他の共通ネットワーク・ノードおよびその他とすることができるとともに、通常は、コンピュータ７１２に関して記述した要素の多数または全部を含む。簡略にするために、メモリ記憶装置７４６だけを、リモート・コンピュータ（複数を含む）７４４とともに示してある。リモート・コンピュータ（複数を含む）７４４は、ネットワーク・インターフェース７４８を介してコンピュータ７１２に論理的に接続され、次いで通信接続７５０を介して物理的に接続されている。ネットワーク・インターフェース７４８は、ローカル・エリア・ネットワーク（ＬＡＮ）およびワイド・エリア・ネットワーク（ＷＡＮ）などの通信ネットワークを包含する。ＬＡＮ技術には、光ファイバ分散データ・インターフェース（ＦＤＤＩ：Fiber Distributed Data Interfacｅ）、銅線分散データ・インターフェース（ＣＤＤＩ：Copper Distributed Data Interface）、イーサネット（登録商標）／ＩＥＥＥ１１０２．３、ＴｏｋｅｎＲｉｎｇ／ＩＥＥＥ１１０２．５、その他がある。ＷＡＮ技術としては、それに限定はされないが、ポイント・ツー・ポイント・リンク、統合サービス・デジタル・ネットワーク（ＩＳＤＮ）のような回線交換ネットワークおよびそれの変形形態、パケット交換ネットワーク、およびデジタル加入者ライン（ＤＳＬ）などがある。
【００８３】
通信接続（複数を含む）７５０とは、ネットワーク・インターフェース７４８をバス７１８に接続するのに使用されるハードウェア／ソフトウェアを意味する。通信接続７５０は、説明を分かりやすくするためにコンピュータ７１２内部に示してあるが、コンピュータ７１２の外部に置くこともできる。ネットワーク・インターフェース７４８への接続に必要なハードウェア／ソフトウェアとしては、説明の目的だけとして、電話等級モデム、ケーブルモデムおよびＤＳＬモデルを含むモデム類、ＩＳＤＮアダプタ、およびイーサネット（登録商標）カードなどの、内部および外部技術が挙げられる。
【００８４】
上記の内容は、本発明の実施例を含む。もちろんのこと、本発明を説明する目的で、すべての考えられる構成要素の組合せおよびそのための方法を記述することは不可能であるが、当業者であれば、本発明の多数のさらなる組合せおよび順列が可能であることを認識することができる。したがって、本発明は、添付のクレームの趣旨と範囲に入る、すべてのそのような変更、改変、および変形を包含することを意図するものである。さらに、「含む（include）」という言葉が、詳細な説明またはクレームのいずれかで使用される限りにおいて、この用語は、「（備える）comprising」が、クレームにおける遷移語として使用されるときに解釈されるときの、用語「（備える）comprising」と同様に、一切を含むことを意図するものである。
【符号の説明】
【００８５】
１００  ＨＩＰ生成システム
１１０  キャラクタ選択構成要素
１２０  キャラクタ・キャッシュ
１３０  アーク選択構成要素
１４０  アーク・キャッシュ
１５０  ワープ・フィールド適用（ワーピング）構成要素
１６０  ワープ部分領域選択構成要素
１７０  ワープ・フィールド・キャッシュ
１８０  人間対話証明（ＨＩＰ）
１９０  ＨＩＰ検証システム（任意選択）
２００  ＨＩＰ形成の例示的なパスウェイ
２１０  キャラクタ・プリレンダリング構成要素
２３０  キャラクタ・データベース
２５０  「予備」ＨＩＰ（バイナリ）
２４０  アーク・データベース
２２０  アーク・プリレンダリング構成要素
２６０  ワープ・フィールド（キャッシュ内）
２６５  ワープ・フィールドの部分領域
２７０  （高分解度において）ワーピングされたＨＩＰ
２８０  ダウン・サンプリング構成要素
２９０  完成ＨＩＰ
２９５  ＨＩＰカスタム化構成要素
３００  ＨＩＰの生成を容易にする、例示的な方法
３０５  ブランクＨＩＰの生成
３２０  許容キャラクタのリスト
３２５  初期のＨＩＰ
３３５  キャラクタ・キャッシュ（バイナリ）
３４５  変換されたキャラクタ
３５５  アーク・キャッシュ（バイナリ）
３６５  前景アークが追加されたＨＩＰ
３７５  アーク・キャッシュ（バイナリ）
３８５  背景アークが追加されたＨＩＰ
３９５  ワープ・キャッシュ（整数）
４００  ワープされたＨＩＰ
４０５  ダウン・サンプリングされたＨＩＰ
４２０  前景／背景色、テクスチャなどが追加されたＨＩＰ
４５０，４６０，４７０  例示的なＨＩＰ
４８０，４８０  テクスチャ、色、および混色（color blending）を加えたＨＩＰ
７１０  好適な動作環境
７１４  プロセシング・ユニット
７１６  システム・メモリ
７１８  バス
７２０  揮発性
７２２  不揮発性
７２６  インターフェース
７２４  ディスク記憶装置
７２８  オペレーティング・システム
７３０  アプリケーション
７３２  モジュール
７３４  データ
７３６  入力装置（複数を含む）
７３８  インターフェース・ポート（複数を含む）
７４０  出力装置（複数を含む）
７４２  出力アダプタ
７４４  リモート・コンピュータ（複数を含む）
７４６  メモリ記憶装置
７３８  インターフェース・ポート（複数を含む）
７４８  ネットワーク・インターフェース
７５０  通信接続（複数を含む）
【図１】
0005496960.tif 000002
【図２】
0005496960.tif 000003
【図３】
0005496960.tif 000004
【図４】
0005496960.tif 000005
【図５】
0005496960.tif 000006
【図６】
0005496960.tif 000007
【図７】
0005496960.tif 000008