(57)【要約】【課題】皮膚検出及び局所化のための改良された処理システムを提供する。【解決手段】画像処理システムは、リアルタイムより高速の皮膚検出及び局所化を与える。このシステムは、グラフィック処理ユニットの高度に最適化されたアーキテクチャーを使用して、画像内の皮膚を迅速に且つ効率的に検出し位置決めする。グラフィック処理ユニットにおいて皮膚検出及び局所化を遂行することにより、画像処理システムは、メインシステムプロセッサが、汎用アプリケーションの実行を含む他の重要なタスクを遂行するように解放する。画像処理システムが皮膚を検出し局所化する速度は、顔検出及び動き追跡のようなその後の処理ステップも容易にする。【選択図】図１
2007257652.tif 000002
【特許請求の範囲】
【請求項１】
ソース画像内で皮膚を検出するための画像処理方法において、
確率テーブルを得るステップであって、この確率テーブルは、
確率テーブル内の多数のカラー位置を定義するカラー座標インデックス、及び
カラー位置に記憶される皮膚確率、
を含むものであるステップと、
前記確率テーブルをシステムメモリから確率テクスチャとしてグラフィック処理ユニットのテクスチャメモリへアップロードするステップと、
前記ソース画像を前記システムメモリから画像テクスチャとして前記グラフィック処理ユニットの前記テクスチャメモリへアップロードするステップと、
前記グラフィック処理ユニットへ咬合問合せを発行して、ドローコールから生じる皮膚ピクセルカウントを要求するステップと、
前記グラフィック処理ユニットへ前記ドローコールを発行して、前記画像テクスチャに基づきレンダーターゲットへの前記確率テクスチャのテクスチャマッピングを開始するステップと、
前記ドローコールから生じる前記皮膚ピクセルカウントを含む咬合結果を前記グラフィック処理ユニットから受け取るステップと、
を備えた画像処理方法。
【請求項２】
前記皮膚ピクセルカウントに基づいて前記画像に皮膚が存在するかどうか報告するステップを更に備えた、請求項１に記載の画像処理方法。
【請求項３】
前記テクスチャマッピングからの処理されたピクセル出力が皮膚ピクセルとして適切であるときを決定するために前記グラフィック処理ユニットにおいて皮膚スレッシュホールドを確立するステップを更に備えた、請求項１に記載の画像処理方法。
【請求項４】
皮膚スレッシュホールドを確立する前記ステップは、前記グラフィック処理ユニットにおいてアルファテストを確立することを含む、請求項３に記載の画像処理方法。
【請求項５】
前記画像テクスチャに基づいて前記レンダーターゲットに前記確率テクスチャをテクスチャマッピングするために前記グラフィック処理ユニットにおいてピクセルシェーダーをプログラミングするステップを更に備えた、請求項１に記載の画像処理方法。
【請求項６】
前記プログラミングステップは、ソース画像が存在するソース画像カラースペースから前記カラー座標インデックスの確率カラースペースへのカラースペース変換を実施することを含む、請求項５に記載の画像処理方法。
【請求項７】
前記プログラミングステップは、前記確率テクスチャへの前記カラースペース変換のインデックスオペレーションを実施することを含む、請求項６に記載の画像処理方法。
【請求項８】
前記プログラミングステップは、ソース画像が存在する赤−緑−青カラースペースから前記カラー座標インデックスのＣｂ−Ｃｒカラースペースへのカラースペース変換を実施することを含む、請求項５に記載の画像処理方法。
【請求項９】
ソース画像内で皮膚を検出するための画像処理システムにおいて、
システムプロセッサと、
前記システムプロセッサに結合されたグラフィック処理ユニットであって、テクスチャメモリ、及び前記テクスチャメモリに結合された多数のパラレルのピクセルシェーダー、を含むようなグラフィック処理ユニットと、
前記システムプロセッサに結合されたシステムメモリであって、確率テーブル、皮膚を検出すべきソース画像、及び皮膚検出プログラムを備え、前記確率テーブルは、その確率テーブル内に多数のカラー位置を定義するカラー座標インデックス、及び前記カラー位置に記憶された皮膚確率を含むものであり、前記皮膚検出プログラムは、前記システムプロセッサにより実行されたときに、前記画像処理システムが、
前記確率テーブルを確率テクスチャとしてシステムメモリから前記グラフィック処理ユニットのテクスチャメモリへアップロードし、
前記ソース画像を画像テクスチャとしてシステムメモリから前記グラフィック処理ユニットのテクスチャメモリへアップロードし、
前記ソース画像に対してレンダーターゲットを定義し、更に、
前記グラフィック処理ユニットへドローコールを発行して、前記画像テクスチャに基づき前記レンダーターゲットへの前記確率テクスチャのピクセルシェーダーによるテクスチャマッピングを開始する、
ようにさせるインストラクションを含むものであるシステムメモリと、
を備えた画像処理システム。
【請求項１０】
前記皮膚検出プログラムは、更に、前記システムプロセッサにより実行されたときに、前記画像処理システムが、
前記グラフィック処理ユニットへ咬合問合せを発行して、ドローコールから生じる皮膚ピクセルカウントを要求し、更に、
前記ドローコールから生じる皮膚ピクセルカウントを含む前記グラフィック処理ユニットからの咬合結果を受け取る、
ようにさせるインストラクションを含む、請求項９に記載の画像処理システム。
【請求項１１】
前記皮膚検出プログラムは、更に、前記システムプロセッサにより実行されたときに、前記画像処理システムが、
前記テクスチャマッピングからの処理されたピクセル出力が皮膚ピクセルとして適切であるときを決定するために前記グラフィック処理ユニットにおいてアルファテストを確立するようにさせるインストラクションを含む、請求項１０に記載の画像処理システム。
【請求項１２】
前記レンダーターゲットは、前記ソース画像に配置された長方形である、請求項９に記載の画像処理システム。
【請求項１３】
前記皮膚検出プログラムは、更に、前記システムプロセッサにより実行されたときに、前記画像処理システムが、次のこと、即ち
前記ソース画像に対して新たなレンダーターゲット位置を決定すること、
前記新たなレンダーターゲット位置においてレンダーターゲットを確立すること、及び
前記グラフィック処理ユニットへドローコールを発行して、前記画像テクスチャに基づき前記レンダーターゲットへの前記確率テクスチャのピクセルシェーダーによるテクスチャマッピングを開始すること、
を繰り返すようにさせるインストラクションを含む、請求項１２に記載の画像処理システム。
【請求項１４】
前記皮膚検出プログラムは、更に、前記システムプロセッサにより実行されたときに、前記画像処理システムが、前記グラフィック処理ユニットにおいてピクセルシェーダーをプログラムして、
前記ソース画像が存在するソース画像カラースペースから前記カラー座標インデックスの確率カラースペースへのカラースペース変換を実施し、更に、
前記確率テクスチャへの前記カラースペース変換のインデックスオペレーションを実施して、前記処理されたピクセル出力を決定する、
ようにさせるインストラクションを含む、請求項１１に記載の画像処理システム。
【請求項１５】
前記カラースペース変換は、赤−緑−青からＣｂ−Ｃｒへの変換を含む、請求項１４に記載の画像処理システム。
【請求項１６】
請求項１から８のいずれかに記載の画像処理方法を実施するコンピュータプログラムを記憶するマシン読み取り可能な媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理に係る。より詳細には、本発明は、画像における皮膚検出及び局所化に係る。
【背景技術】
【０００２】
画像技術の絶え間ないそして急速な開発は、それに対応して大きな需要を画像処理システムにもたらした。画像技術の広範囲な改良は、より大きく且つより高解像度の画像データセットを生じさせ、これは、ひいては、受け容れられるレベルのシステム応答性を維持するために、より高速で且つより効率的な処理システムを必要とする。同時に、薬品に対する警備から製造に至るまでの範囲の益々多数の産業が、近代的市場の需要と歩調を合わせるために画像処理に注意を向けることになった。
【０００３】
例えば、皮膚を検出するための画像処理は、顔認識及び動き追跡を含む多数の警備産業アプリケーションにおける重要な第１ステップである。顔認識の場合には、セキュリティアプリケーションがある顔をデータベース内の顔と比較する前に、画像処理システムは、先ず、ビデオ又はスタティック画像が皮膚も含むかどうか決定しなければならない。画像が皮膚を含む場合には、画像処理システムは、その画像内のどこに皮膚が位置しているか及びそれが顔の皮膚であるかどうか決定しなければならない。更に、例えば、警備用カメラから３０フレーム／秒で連続するビデオストリームを分析するためには、このような皮膚及び顔検出をリアルタイムで遂行することがしばしば要望される。
【０００４】
過去において、画像処理システムの汎用中央処理ユニット（ＣＰＵ）が皮膚検出を遂行していた。或いは又、特に、画像における皮膚を検出するために、コストが高く且つ高度にカスタマイズされた画像処理ハードウェアが時々設計され構築された。しかしながら、汎用ＣＰＵアーキテクチャーにおける年々の増分的進歩は、皮膚検出及び局所化のような特殊な画像処理ファンクションを遂行するための能力増加と直接的に相関していない。更に、ＣＰＵが皮膚検出に当てることのできるリソースには限度がある。というのは、ＣＰＵは、他の必要な汎用システムアプリケーション（例えば、ワードプロセッサ、スプレッドシート、及びコンピュータ支援型デザインプログラム）も実行しなければならないからである。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
それ故、皮膚検出及び局所化の過去の実施は、２つの比較的不満足な選択肢、即ち汎用ＣＰＵにより遂行される速度及び効率の低い処理か、或いは高コストで非常に複雑な高度にカスタマイズされたハードウェアか、に制限される。例えば、大都市全体にわたる警備用カメラの大量なロールアウトや、空港における増加されたセキュリティ審査を受け容れるように皮膚検出のための高度にカスタマイズされたハードウェアを設計し製造することは、非常にコストがかかり、実際的でないことが分かっている。まだ、これら及び他のアプリケーションは、高性能の画像処理解決策がないと、有効性が制限される。
【０００６】
それ故、皮膚検出及び局所化のための改良された処理システムが要望される。
【課題を解決するための手段】
【０００７】
画像処理システムは、非常に高速の皮膚検出及び局所化(localization)を与える。画像処理システムは、皮膚検出及び局所化処理の大部分を遂行するように、グラフィック処理ユニット（ＧＰＵ）における特殊な処理技術を実施する。従って、メインシステムプロセッサは、他の重要なタスクを自由に遂行する。ＧＰＵは、高度に最適化されたテクスチャ処理アーキテクチャーであるために、検出及び局所化を加速する。従って、画像処理システムは、特に、高度にカスタマイズされた画像処理ハードウェアに依存する過去のシステムに比して、低廉な皮膚検出及び局所化解決策を導く。
【０００８】
画像処理システムは、システムプロセッサと、ＧＰＵと、システムメモリと、皮膚検出プログラムとを備えている。ＧＰＵは、テクスチャメモリ及び多数のピクセルシェーダーを含む高度に最適化されたグラフィック処理アーキテクチャーを備えている。システムメモリは、最初に、確率テーブルと、皮膚を検出すべきところのソース画像とを記憶する。皮膚検出プログラムは、確率テーブル及びソース画像を、システムメモリからＧＰＵのテクスチャメモリへアップロードする。次いで、皮膚検出プログラムは、ソース画像に対してレンダーターゲットを定義し、ＧＰＵへのドロー(draw)コールを発行する。このドローコールは、ピクセルシェーダーによりソース画像及び確率テーブルをレンダーターゲットにテクスチャマッピングするのを開始する。テクスチャマッピング動作は、皮膚スレッシュホールド（例えば、アルファテストスレッシュホールド）に関連して、レンダーターゲットでレンダリングされるピクセルのどれを皮膚ピクセルと考えるか決定する。
【０００９】
ソース画像に皮膚が存在するかどうか決定するのに加えて、画像処理システムは、皮膚を位置決め(locate)することもできる。このため、画像処理システムは、皮膚位置プログラムを備えている。一実施形態では、皮膚位置プログラムは、ソース画像のブロックツリーサーチ（例えば、クオドツリーサーチ）を遂行する。以下に詳細に述べるように、ブロックツリーサーチを遂行する際に、皮膚位置プログラムは、ＧＰＵへドローコールを繰り返し発行して、ピクセルシェーダーが、確率テーブルを、ソース画像内に配置された次第に小さくなるレンダーターゲットへとテクスチャマップするようにさせる。皮膚位置プログラムは、皮膚ピクセルが見つかったソース画像内の位置をシステムメモリに記憶する。
【００１０】
本発明の他のシステム、方法、特徴及び効果は、当業者であれば、添付図面及び以下の詳細な説明から明らかとなろう。この説明に含まれるこのような全ての付加的なシステム、方法、特徴及び効果は、本発明の範囲内に包含され、特許請求の範囲により保護されるものとする。
【００１１】
本発明は、添付図面及び以下の説明から良く理解できよう。図面中のコンポーネントは、必ずしも正しいスケールではなく、本発明の原理を例示するときには強調がなされている。更に、異なる図面全体にわたり、対応部分は、同じ参照番号で示されている。
【発明を実施するための最良の形態】
【００１２】
図示された要素は、以下に詳細に述べるように機能する。しかしながら、詳細な説明を行なう前に、特定実施形態の説明であるのに関わらず、以下の説明は、全て、例示的なものであり、それに限定されるものでないことに注意されたい。例えば、実施形態の選択された観点、特徴又は要素がメモリに記憶されるものとして示されるが、画像処理システムと一貫したシステム及び方法の全部又は一部分が、他のマシン読み取り可能な媒体、例えば、ハードディスク、フロッピーディスク及びＣＤ−ＲＯＭのような二次記憶装置、ネットワークから受信される信号、或いは現在知られている又は以後開発される他の形式のＲＯＭ又はＲＡＭに記憶され、それらにわたって配布され、又はそれらから読み取られてもよい。
【００１３】
更に、画像処理システムの特定のコンポーネントについて説明するが、これらシステムと一貫する方法、システム及び製品が、付加的なコンポーネント又は異なるコンポーネントを含んでもよい。例えば、システムプロセッサは、マイクロプロセッサ、マイクロコントローラ、特定用途向け集積回路（ＡＳＩＣ）、個別ロジック、或いは他の形式の回路又はロジックの組み合せとして実施されてもよい。同様に、メモリは、ＤＲＡＭ、ＳＲＡＭ、フラッシュ、又は他の形式のメモリでよい。パラメータ（例えば、スレッシュホールド）、データベース、テーブル、及び他のデータ構造体は、個別に記憶され管理されてもよいし、単一のメモリ又はデータベースに組み込まれてもよいし、或いは多数の異なる方法で論理的及び物理的に編成されてもよい。プログラムは、単一のプログラムの一部分でもよいし、個別のプログラムでもよいし、或いは多数のメモリ及びプロセッサにわたって分布されてもよい。
【００１４】
図１は、リアルタイムより高速の皮膚検出及び局所化を与える画像処理システム１００を示す。この画像処理システム１００は、システムプロセッサ１０２と、システムメモリ１０４と、ＧＰＵ１０６とを備えている。ＧＰＵは、例えば、カリフォルニア州サンタクララのＮＶＩＤＩＡ、又はマサチューセッツ州マールボローのＡＴＩリサーチインクから入手できるグラフィックプロセッサでよい。以下に詳細に述べるように、システムプロセッサ１０２は、システムメモリ１０４からの設定プログラム１０８、皮膚検出プログラム１１０及び皮膚位置プログラム１１２を実行する。システムメモリ１０４は、確率テーブル１１４、ソース画像１１６、及び咬合(occlusion)問合せ１１８を記憶する。又、システムメモリ１０４は、皮膚検出フラグ１２０、システムパラメータ１２２、咬合結果１２４、及び皮膚位置１２６も記憶する。システムパラメータ１２２は、レンダーターゲットサイズ上限１２８、レンダーターゲットサイズ下限１３０、及び皮膚スレッシュホールド１３２を含むことができる。又、メモリは、ＧＰＵ１０６から得られた咬合結果１２４も記憶する。咬合結果１２４は、皮膚ピクセルカウント１３４を与えてもよい。
【００１５】
ＧＰＵ１０６は、テクスチャメモリ１３６、多数のパラレルピクセルシェーダー１３８、及びフレームバッファ１４０を備えている。テクスチャメモリ１３６は、確率テクスチャ１４２及び画像テクスチャ１４４を記憶する。多数のパラレルピクセルシェーダー１３８は、システムプロセッサ１０２からのドローコールに応答して、確率テクスチャ１４２及び画像テクスチャ１４４を処理する。多数のパラレルピクセルシェーダー１３８は、ピクセルシェーダー制御プログラム１４８を実行する。アルファテスト回路１５０は、ピクセルシェーダー１３８により処理されたピクセルをフィルタする。特に、アルファテスト回路１５０は、アルファテスト１５４を適用して、テクスチャ処理されたピクセルを保持すべきか破棄すべきか決定する。システムプロセッサ１０２は、アルファテスト１５４に対する皮膚スレッシュホールド１３２又は他のフィルタパラメータを確立することができる。皮膚スレッシュホールド１３２は、それより低いと、テクスチャ処理されたピクセルがおそらく皮膚ピクセルとしてカウントするに充分な皮膚でない確率を表わす。ＧＰＵ１０６は、このようなピクセルを破棄するが、処理されたピクセル１５２としてアルファテスト１５４にパスするピクセルをフレームバッファ１４０に記憶する。
【００１６】
ソース画像１１６は、ビデオストリーム、デジタルカメラ又は他のソースから得ることができる。ソース画像１１６は、ＲＧＢカラースペースのような特定のカラースペースにおいて表わされる画像データを含む。しかしながら、画像処理システム１００は、画像データが他のカラースペースにおいて表わされるような画像を処理してもよい。画像処理システム１００は、ソース画像１１６を得て、処理のためにシステムメモリ１０４に記憶する。
【００１７】
システムプロセッサ１０２は、皮膚検出プログラム１１０及び／又は皮膚位置プログラム１１２を実行するための先駆体として設定プログラム１０８を実行する。プログラム１１２及び１１４は、確率テーブル１１４及びソース画像１１６をＧＰＵ１０６に関連して使用して、ソース画像１１６において皮膚を迅速に検出し及び／又は位置決めする。設定プログラム１０８は、テクスチャマッピングオペレーションの準備において確率テーブル１１４及びソース画像１１６をＧＰＵ１０６に与える。
【００１８】
画像処理システム１００は、皮膚を含む画像の分析に基づいて構成された確率テーブル１１４を記憶する。確率テーブル１１４は、確率テーブル１１４のカラー座標インデックス（例えば、Ｃｂ−Ｃｒ）で表わされた特定のピクセルに対して、ピクセルが皮膚ピクセルである確率を記憶する。Ｃｂ及びＣｒの各考えられる値は、皮膚確率が記憶された確率テーブル１１４のカラー位置を定義する。確率テーブル１１４がシステム１００に予め確立されてもよいし、或いは画像処理システム１００が、図１４に示して説明するソースのような外部ソースから確率テーブル１１４を得てもよい。システムプロセッサ１０２は、皮膚検出及び位置決めを特定の確率基準に適応させるために、処理中に確率テーブル１１４を動的に変更してもよい。
【００１９】
図２は、赤軸２０４、緑軸２０６及び青軸２０８に沿った１組の既知の皮膚サンプル２０２に対するＲＧＢカラー値のプロット２００を示す。ＲＧＢプロット２０２は、ＲＧＢカラースペース全体にわたる皮膚サンプルの顕著なしみ(smear)を示している。各軸２０４、２０６及び２０８に沿った分散(variance)は、皮膚ピクセルと非スピンピクセルとの間の区別をＲＧＢカラースペースにおいて困難なものにする。しかしながら、ＲＧＢカラー値が表わされるか又はＹ−Ｃｂ−Ｃｒカラースペースへ変換されるときには、皮膚ピクセルは、皮膚ピクセルと非皮膚ピクセルとの間の明確な区別を指して局所化する。
【００２０】
図３は、１組の皮膚サンプル２０２に対するＹ−Ｃｂ−Ｃｒカラー値のプロット３００と、Ｃｂ−Ｃｒ値のみに対する皮膚サンプル２０２の二次元プロット３０２とを示す。Ｙ−Ｃｂ−Ｃｒプロット３００は、Ｃｂ及びＣｒ軸３０４及び３０６に沿った皮膚サンプル２０２の緊密なクラスター状態を示す。ルミナンスを表わすＹ軸３０８は、皮膚サンプルのＹ−Ｃｂ−Ｃｒプロット３００内の最大量の分散を示す。ルミナンス値の分散は、人間の目にはほぼ見えない。ルミナンス値が下がると、皮膚サンプル２０２の二次元Ｃｂ−Ｃｒプロットが生じる。皮膚サンプル２０２は、Ｃｂ−Ｃｒカラースペースにおける少量の分散と共にクラスター状態になる傾向がある。
【００２１】
図４は、図３に示す二次元Ｃｂ−Ｃｒカラースペース３０２から得た確率テーブル４００を示す。この確率テーブル４００は、Ｃｂ及びＣｒ（Ｘ及びＺ）軸４０２及び４０４から形成されたカラー座標インデックスに沿って設定される。各インデックス位置は、Ｃｂ−Ｃｒカラースペースにおける考えられるカラーを定義する。確率テーブル４００は、各カラー位置においてＹ軸４０６に沿った皮膚確率（例えば、皮膚確率４０８）を確立する。
【００２２】
確率テーブル４００は、皮膚サンプルの組２０２のＣｂ−Ｃｒカラー値を、Ｘ及びＺ軸４０２及び４０４で表わされた２５５ｘ２５５テーブルへとビンする(binning)ことにより構成されてもよい。Ｙ軸で表わされた皮膚確率は、各ビンされた値を皮膚サンプルの全数で除算することにより決定されてもよい。Ｃｂ−Ｃｒカラーモデルにおける皮膚サンプル２０２のクラスター特性は、確率テーブル４００に示す比較的大きな皮膚確率４０８を生じさせる。
【００２３】
図１に戻ると、設定プログラム１０８は、確率テーブル１１４及びソース画像１１６をＧＰＵ１０６へアップロードする。ＧＰＵ１０６は、確率テーブル１１４を確率テクスチャ１４２として記憶すると共に、ソース画像１１６を画像テクスチャ１４４としてテクスチャメモリ１３６に記憶する。又、設定プログラム１０８は、アルファテスト回路１５０に対するアルファパラメータ（例えば、皮膚スレッシュホールド１３２）を決定し、そしてそれらパラメータをＧＰＵ１０６のアルファテスト回路１５０にアップロードする。アルファテスト回路１５０は、皮膚スレッシュホールド１３２を、ピクセルシェーダー１３８により行なわれたテクスチャ決定に対して比較して、テクスチャ処理されたピクセルを皮膚ピクセルと考えるべきかどうか決定する。設定プログラム１０８により遂行される動作が図５に示されており、これについて以下に詳細に説明する。
【００２４】
皮膚検出プログラム１１０は、ソース画像１１６が皮膚を含むかどうか検出する。皮膚検出プログラム１１０は、多数のパラレルピクセルシェーダー１３８においてテクスチャマッピングを開始するためにドローコールを発行する。又、皮膚検出プログラム１１０は、皮膚ピクセルカウント１３４を決定するために咬合問合せ１１８をＧＰＵ１０６へ発行する。皮膚ピクセルカウント１３４は、アルファテスト１５４にパスして皮膚ピクセルと考えられるピクセルの数である。これらのピクセルは、フレームバッファ１４０に書き込まれてもよい。皮膚検出プログラム１１０は、咬合結果１２４が非ゼロの皮膚ピクセルカウント１３４を返送するかどうかに基づいて皮膚検出フラグ１２０をセット又はクリアする。従って、皮膚検出プログラム１１０は、高速フィルタとして働いて、皮膚がソース画像１１６に少しでも存在するかどうか決定する。皮膚検出プログラム１１０により行われる動作が図６に示され、これについて以下に詳細に述べる。
【００２５】
皮膚位置プログラム１１２は、ソース画像１１６において皮膚を位置決めする。一実施形態では、皮膚位置プログラム１１２は、ソース画像１１６のブロックツリーサーチを実行して、皮膚ピクセルを位置決めする。皮膚位置プログラム１１２は、最初に、レンダーターゲットサイズ上限１２８により定義されたソース画像１１６の領域をサーチする。皮膚ピクセルが検出される領域では、皮膚位置プログラム１１２は、その領域を細分化し、これらサブ領域内のピクセルをサーチする。皮膚位置プログラム１１２は、サブ領域のサイズがレンダーターゲットサイズ下限１３０に等しくなるまで細分化及びサーチを続けることができる。
【００２６】
このように、皮膚位置プログラム１１２は、レンダーターゲットのサイズ下限に対応する解像度でソース画像１１６内において皮膚を効率的に且つ正確に位置決めする。皮膚位置プログラム１１２は、皮膚位置１２６（例えば、非ゼロの皮膚ピクセルカウントを有するレンダーターゲットの位置）をシステムメモリ１０４に記憶する。皮膚位置プログラム１１２により遂行される動作が図７に示されており、これについて以下に詳細に説明する。
【００２７】
皮膚検出プログラム１１０及び皮膚位置プログラム１１２は、多数のパラレルピクセルシェーダー１３８においてテクスチャマッピングを開始するためにＧＰＵ１０６へドローコールを発行するインストラクションを含む。多数のパラレルピクセルシェーダー１３８は、確率テクスチャ１４２及び画像テクスチャ１４４をレンダーターゲットにテクスチャマッピングする。レンダーターゲットは、レンダーターゲットを境界定めする頂点（例えば、左上及び右下の頂点）により画成することができる。
【００２８】
プログラム１１０及び１１２は、レンダーターゲットをテクスチャマッピングすることから生じる咬合結果１２４を受け取る。この咬合結果１２４は、アルファテスト回路１５０により適用されるアルファテストにパスする皮膚ピクセルの数を指定する。プログラム１１０及び１１２は、皮膚が見つかった位置をセーブすることができる（例えば、ソース画像１１６に対してレンダーターゲットの位置をセーブすることにより）。皮膚検出及び／又は位置プログラム１１２及び１１４を実行した後に、画像処理システム１００は、スピンピクセルカウント１３４又は皮膚位置１２６を他のアプリケーションに報告してもよいし、或いは皮膚ピクセルカウント１３４又は皮膚位置１２６を他の目的で使用してもよい。
【００２９】
図５は、皮膚検出又は局所化のためにＧＰＵ１０６を設定するために設定プログラム１０８が行なう動作５００を示す。この設定プログラム１０８は、システムメモリ１０４から確率テーブル１１４を得る（動作５０２）。次いで、設定プログラム１０８は、確率テーブル１１４を確率テクスチャ１４２としてＧＰＵのテクスチャメモリ１３６へアップロードする（動作５０４）。又、設定プログラム１０８は、システムメモリ１０４からソース画像１１６を得（動作５０６）、そしてソース画像１１６を画像テクスチャ１４４としてＧＰＵテクスチャメモリ１３６へアップロードする（動作５０８）。従って、画像処理システム１０は、ＧＰＵ１０６における多数のパラレルピクセルシェーダーの速度及びパラレル処理能力を適用して、ソース画像１１６において皮膚を検出し位置決めすることができる。
【００３０】
又、設定プログラム１０８は、アルファパラメータを決定することもできる（動作５１０）。アルファパラメータは、アルファテスト回路１５０においてアルファテスト１５４に使用される皮膚スレッシュホールド１３２又は他の基準を含むことができる。アルファテスト回路１５０は、テクスチャ処理されたピクセルが皮膚ピクセルとして適切であるかどうか決定する。又、図１４を参照して以下に詳細に述べるように、設定プログラム１０８は、画像処理システム１００によりソース画像１１６における皮膚検出又は位置を要求するシステムのような外部システムにより与えられる値に基づいてアルファパラメータを決定することもできる。設定プログラム１０８は、皮膚検出又は局所化の前にＧＰＵ１０６においてアルファテスト１５４を確立する（動作５１２）。
【００３１】
図６は、ソース画像１１６に皮膚が存在するかどうか決定するために皮膚検出プログラム１１０が行なう動作６００を示す。皮膚検出プログラム１１０は、設定プログラム１０８の実行を開始する（動作６０２）。上述したように、設定プログラム１０８は、確率テーブル１１４及びソース画像１１６を、各々、確率テクスチャ１４２及び画像テクスチャ１４４としてテクスチャメモリ１３６へアップロードする。
【００３２】
皮膚検出プログラム１１０は、ＧＰＵ１０６へ咬合問合せ１１８を発行し、皮膚ピクセルカウント１３４を要求する（動作６０４）。咬合問合せ１１８は、所与のレンダーターゲットに対してアルファテスト１５４にパスしたピクセルの数を返送する。又、皮膚検出プログラム１１０は、初期レンダーターゲットも定義する（動作６０６）。このため、皮膚検出プログラム１１０は、ソース画像１１６に対するレンダーターゲットのサイズ及び位置を決定する。初期レンダーターゲットは、サイズ上限１２８（例えば、ソース画像１１６の全サイズ）を有する長方形でもよいし、或いはサイズ下限１３０（例えば、単一ピクセル）と同程度に小さくてもよい。
【００３３】
皮膚検出プログラム１１０は、皮膚検出フラグ１２０をクリアし（動作６０８）、そして現在レンダーターゲットへの確率テクスチャ１４２及び画像テクスチャ１４４のテクスチャマッピングを開始する（動作６１０）。これを行なうために、皮膚検出プログラム１１０は、ＧＰＵ１０６へのドローコールを発行し、ピクセルシェーダー制御プログラム１４８の制御のもとで多数のパラレルピクセルシェーダー１３８によるテクスチャマッピングを開始する。ＧＰＵ１０６は、レンダーターゲットにおける各ピクセルのトランスパレンシーを決定し、アルファテスト１５４を遂行し、そして皮膚ピクセルカウント１３４を含む咬合結果１２４を返送する。皮膚検出プログラム１１０は、現在レンダーターゲットの皮膚ピクセルカウント１３４を含む咬合結果１２４を受け取る（動作６１２）。
【００３４】
皮膚ピクセルカウントが非ゼロである場合には、皮膚検出プログラム１００は、皮膚検出フラグ１２０をセットし（動作６１４）、そして皮膚が配置されたレンダーターゲット位置をセーブすることができる（動作６１６）。他の実施形態では、皮膚検出フラグ１２０は、スレッシュホールド数の皮膚ピクセルが位置決めされた（例えば、画像の５％以上が皮膚を含む）ときにセットされてもよい。皮膚検出プログラム１００が画像の他の部分において皮膚をサーチする場合には、皮膚検出プログラム１００は、新たなレンダーターゲット（例えば、より大きなレンダーターゲット、より小さなレンダーターゲット、又はレンダーターゲットに対する新たな位置）を定義し（動作６１８）、そして現在レンダーターゲットにおいてテクスチャマッピングを開始する（動作６１０）。
【００３５】
図７は、ソース画像１１６内で皮膚を位置決めするために皮膚位置プログラム１１２が行なう動作を示す。以下の例は、皮膚位置プログラム１１２がソース画像１１６全体にわたり皮膚を位置決めすることを仮定しているが、皮膚位置プログラム１１２は、ソース画像１１６の１つ以上のサブ部分において皮膚を選択的に位置決めしてもよいことに注意されたい。皮膚位置プログラム１１２は、設定プログラム１０８の実行を開始する（動作７０２）。上述したように、設定プログラム１０８は、確率テーブル１１４及びソース画像１１６を、各々、確率テクスチャ１４２及び画像テクスチャ１４４としてテクスチャメモリ１３６へアップロードする。又、設定プログラム１０８は、アルファパラメータを決定し、そしてＧＰＵ１０６においてアルファテスト１５４を確立することもできる。
【００３６】
皮膚位置プログラム１１２は、レンダーターゲットのサイズ上限１２８を定義する（動作７０４）。皮膚位置プログラム１１２は、レンダーターゲットのサイズ上限１２８を、全ソース画像１１６のサイズとして、又はソース画像１１６のサブ領域として定義することもできる。又、皮膚位置プログラム１１２は、レンダーターゲットのサイズ下限１３０も定義する（動作７０６）。レンダーターゲットのサイズ下限１３０は、レンダーターゲットのサイズの下部境界を決定する（例えば、６４ｘ６４ピクセル、１６ｘ１６ピクセル、１ｘ１ピクセル、又は他の下部境界）。レンダーターゲットのサイズが減少するにつれて、位置精度が高くなる。
【００３７】
皮膚位置プログラム１１２は、咬合問合せ１１８をＧＰＵ１０６へ発行する（動作７０８）。皮膚位置プログラム１１２は、初期レンダーターゲットをセットする（動作７１０）。例えば、皮膚位置プログラム１１２は、初期レンダーターゲットをレンダーターゲットサイズ上限１２８にセットし、そしてそのレンダーターゲットに対する位置（例えば、ソース画像の左上角）を選択することができる。
【００３８】
皮膚位置プログラム１１２は、ＧＰＵ１０６へドローコールを行い、現在レンダーターゲットへの確率テクスチャ１４２及び画像テクスチャ１４４のテクスチャマッピングを開始する（動作７１２）。ＧＰＵにおけるアルファテストは、テクスチャマッピングされたピクセルのトランスパレンシー値に対するフィルタとして動作し、皮膚ピクセルとして適切なテクスチャマッピングされたピクセルの数を決定する。皮膚ピクセルカウント１３４は、咬合結果１２４において返送される。
【００３９】
レンダーターゲットが皮膚ピクセルでいっぱいになるか、又は皮膚ピクセルが空であるときには、皮膚位置プログラム１１２は、レンダーターゲットを細分化しない。レンダーターゲットが皮膚ピクセルでいっぱいであるときには、皮膚位置プログラム１１２は、レンダーターゲット位置を皮膚位置１２６としてセーブする（動作７１８）。又、皮膚位置プログラム１１２は、レンダーターゲットのコンテンツをメモリ１０４にセーブしてもよい。処理されるべきソース画像が更に残っている場合には、皮膚位置プログラム１１２は、新たなレンダーターゲットをセットし（動作７２０）（例えば、レンダーターゲットをソース画像に対して新たな位置へ移動させる）、そして再びテクスチャマッピングを開始する。
【００４０】
レンダーターゲットが皮膚ピクセルで一部分いっぱいである場合には、皮膚位置プログラム１１２は、レンダーターゲットがサイズ下限１３０に達したかどうか決定する。もしそうであれば、皮膚位置プログラム１１２は、皮膚位置をセーブし（動作７１８）、そして処理されるべきソース画像が更に残っているかどうか決定する。さもなければ、皮膚位置プログラムは、レンダーターゲットを細分化する（動作７２２）。例えば、クオドツリーサーチ戦略を適用するときには、皮膚位置プログラム１１２は、レンダーターゲットを、４つのより小さなレンダーターゲットに細分化する。それ故、新たな、より小さなレンダーターゲットがセットされ（動作７２０）、そして皮膚位置プログラム１１２が再びテクスチャマッピングを開始する。
【００４１】
上述した実施例では、皮膚位置プログラム１１２は、皮膚ピクセルが全く空であるか又は皮膚ピクセルでいっぱいであるレンダーターゲットは細分化しない。他の実施形態では、皮膚位置プログラム１１２は、部分的に埋められたレンダーターゲットを、ゼロの皮膚ピクセル又は全部皮膚ピクセルを含むかのように処理するよう構成されてもよい。例えば、皮膚位置プログラム１１２は、ゼロからスレッシュホールド数までの皮膚ピクセルを含むレンダーターゲットを、収容皮膚ピクセルがゼロのレンダーターゲットであるかのように処理してもよい。同様に、皮膚位置プログラム１１２は、所与のスレッシュホールド数の皮膚ピクセルを含むものから全部皮膚ピクセルを含むものまでのレンダーターゲットを、レンダーターゲットが皮膚ピクセルでいっぱいであるかのように処理してもよい。
【００４２】
又、上述した皮膚位置プログラム１１２は、予想されるドローコールを使用して皮膚位置決めを実行してもよい。皮膚位置プログラム１１２に使用される予想されるドローコールは、特定のレンダーターゲットを描写し、そのレンダーターゲットにおいて皮膚が検出された場合には、そのレンダーターゲットをサブ領域に細分化し、そしてそれらサブ領域を描写するようにＧＰＵに命令するドローコールである。従って、皮膚位置プログラム１１２は、同じ領域を描写するために５つまでのドローコールを発行するのではなく、レンダーターゲット及び４つのより小さなレンダーターゲットを描写するために１つのドローコールを発行する。
【００４３】
図８は、皮膚検出及び局所化を行なってソース画像１１６において皮膚ピクセルを識別するためにＧＰＵ１０６においてピクセルシェーダー制御プログラム１４８が行なう動作を示す。ピクセルシェーダー制御プログラム１４８は、画像テクスチャ１４４からピクセルを得る（動作８０２）。ピクセルシェーダー制御プログラム１４８は、ピクセルを、画像テクスチャ１４４が存在するカラースペース、例えば、ＲＧＢカラースペースから、確率テクスチャ１４２が存在するカラースペース、例えば、Ｃｂ−Ｃｒカラースペースへ変換する（動作８０４）。変換されたピクセルは、ピクセルシェーダー制御プログラム１４８が確率テクスチャ１４２へインデックスする確率座標となる。
【００４４】
ピクセルシェーダー制御プログラム１４８は、確率座標を確率テクスチャ１４２へインデックスすることによりピクセルに対する皮膚確率を決定する（動作８０６）。上述したテクスチャマッピングから生じるインデックスされた値は、ＲＧＢＡ値でよく、ここで、Ａは、ピクセルのＣｂ−Ｃｒ値が皮膚である確率を含む。ピクセルシェーダー制御プログラム１４８は、出力ピクセルのアルファ値を、確率テクスチャから得た皮膚確率にセットする（動作８０８）。この場合には、ＲＧＢ値は、ピクセルが含む皮膚の形式のような他のデータを含んでもよい。それにより得られるインデックスされた値は、ピクセルが皮膚を含む確率を含む１値成分テクスチャでもよい。これらの例において、ピクセルシェーダー制御プログラム１４８は、Ａ値を、インデックスされたピクセルのトランスパレンシーとしてセットする。しかしながら、ピクセルシェーダー制御プログラム１４８は、ピクセルに対するレンダリングされたピクセル出力値（例えば、トランスパレンシー値）として、確率テクスチャ１４２の他の軸に他の成分を出力してもよい。
【００４５】
次いで、ピクセルシェーダー制御プログラム１４８は、テクスチャマッピングされたピクセル１５２を出力し（動作８１０）、これは、次いで、ピクセルが皮膚ピクセルとして適切であるかどうか決定するためにアルファテストを受ける。以下のテーブル１は、ＲＧＢをＣｂ−Ｃｒへと変換するピクセルシェーダー制御プログラムの一例を示し、ここで、「MainTexture」は、画像テクスチャ１４４を指し、「dot」は、ドット積演算であり、そして「Tex2D」は、確率テクスチャ１４２を指す。
2007257652.tif 000003
【００４６】
テーブル２は、立体マップへと配列された６つの２Ｄテクスチャをインデックスするように、３Ｄ方向ベクトルを使用して、テクスチャ処理されたピクセルが決定されるピクセルシェーダー制御プログラム１４８の別の例を示す。立体マップテクスチャ構造は、三次元立体の辺を各々表わす６つのテクスチャのセットである。ピクセルシェーダー制御プログラムは、３成分ＲＧＢ値をベクトルとして使用して、立体の中心から立体壁のスポットを指すことができる。
2007257652.tif 000004
【００４７】
図９及び１０は、皮膚ピクセル９０２と、レンダーターゲット９０４、９０６、９０８及び９１０と、次第に小さくなるレンダーターゲット１０００、１００２、１００４及び１００６とを含むソース画像９００の４８ｘ４８ピクセル部分の実施例を示す。図９及び１０は、ソース画像９００内で皮膚を位置決めするために皮膚位置プログラム１１２が行なうステップを示す。この実施例では、皮膚位置プログラム１１２は、レンダーターゲットのサイズ上限１２８を４８ｘ４８にセットすると共に、レンダーターゲットのサイズ下限１３０を１２ｘ１２にセットする。皮膚位置プログラム１１２は、ソース９００の４８ｘ４８部分を初期レンダーターゲットとしてセットする。皮膚位置プログラム１１２は、初期レンダーターゲット９００への確率テクスチャ１４２及び画像テクスチャ１４４のテクスチャマッピングを開始する。
【００４８】
皮膚位置プログラム１１２は、初期レンダーターゲット９００が、ゼロより多いが全部より少ない皮膚ピクセル９０２を含むことを決定する。その結果、皮膚位置プログラム１１２は、初期レンダーターゲット９００を、４つのより小さな２４ｘ２４のサブ領域９０４−９１０に細分化する。皮膚位置プログラム１１２は、左上のサブ領域９０４を新たなレンダーターゲットとしてセットし、そしてレンダーターゲット９０４に関してテクスチャマッピングを開始する。
【００４９】
皮膚位置プログラム１１２は、レンダーターゲット９０４が全皮膚ピクセル９０２を含むことを決定する。皮膚位置プログラム１１２は、皮膚位置１２６をシステムメモリ１０４に記憶する。皮膚位置プログラム１１２は、右上のサブ領域９０６を新たなレンダーターゲットとしてセットする。というのは、皮膚位置プログラム１１２は、細分化されたレンダーターゲット９００全体をまだ処理していないからである。皮膚位置プログラム１１２は、レンダーターゲット９０６においてテクスチャマッピングを開始し、そしてそれがゼロの皮膚ピクセル９０２を含むことを決定する。皮膚検出位置１１２は、新たなレンダーターゲットとして左下のサブ領域９０８へ移動し、そしてレンダーターゲット９０８もゼロの皮膚ピクセル９０２を含むことを決定する。
【００５０】
次いで、皮膚位置プログラム１１２は、新たなレンダーターゲットとして右下のサブ領域９１０へ移動し、そしてレンダーターゲット９１０においてテクスチャマッピングを開始した後に、レンダーターゲット９１０が、ゼロより多いが全部より少ない皮膚ピクセル９０２を含むことを決定する。レンダーターゲット９１０、２４ｘ２４ピクセルは、レンダーターゲットサイズ下限１３０に達していない。従って、皮膚検出プログラム１１０は、レンダーターゲット９１０を細分化する（この例では、４つの象限に）。
【００５１】
図１０は、次第に小さな１２ｘ１２のサブ領域１０００−１００６へ細分化されたレンダーターゲット９１０を示している。皮膚位置プログラム１１２は、次第に小さなサブ領域１０００−１００６の１つを新たなレンダーターゲットとしてセットする。この実施例では、皮膚位置プログラム１１２は、次第に小さなサブ領域１０００を新たなレンダーターゲットとしてセットする。
【００５２】
レンダーターゲット１０００がゼロの皮膚ピクセル９０２を含み、且つ以前に細分化されたレンダーターゲット９１０の全部未満が処理されたと決定された後に、皮膚位置プログラム１１２は、次第に小さなサブ領域１００２を新たなレンダーターゲットとしてセットする。皮膚位置プログラム１１２は、レンダーターゲット１００２が全ての皮膚ピクセル９０２を含むと決定し、そして皮膚位置をシステムメモリ１０４に記憶する。皮膚位置プログラム１１２は、次第に小さなサブ領域１００４を新たなレンダーターゲットとしてセットする。皮膚位置プログラム１１２は、レンダーターゲット１００４が、ゼロより多いが全部より少ない皮膚ピクセル９０２を含むことを決定する。又、皮膚位置プログラム１１２は、レンダーターゲット１００４のサイズがレンダーターゲットのサイズ下限１３０に等しいことも決定する。
【００５３】
皮膚位置プログラム１１２は、皮膚位置をシステムメモリ１０４に記憶する。以前に細分化されたレンダーターゲット９１０の全部未満が処理されているので、皮膚位置プログラム１１２は、次第に小さなサブ領域１００６を新たなレンダーターゲットとしてセットする。皮膚位置プログラム１１２は、レンダーターゲット１００６が、ゼロより多いが全部より少ない皮膚ピクセル９０２を含むことを決定する。皮膚位置プログラム１１２は、レンダーターゲット１００６を、更に細分化するのではなく、システムメモリ１０４に記憶する。というのは、レンダーターゲット１００６のサイズが、レンダーターゲットのサイズ下限１３０に等しいからである。従って、皮膚位置プログラム１１２は、ソース画像９００の一部分に存在する皮膚ピクセル９０２の位置を決定する。
【００５４】
図１１は、局所化を完全に汎用ＣＰＵにおいて遂行するのに比して、画像処理システム１００の皮膚局所化性能を示すグラフ１１００である。この性能グラフ１１００は、近代的なＧＰＵ１０６を使用して達成される性能プロット１１０２−１１１２を示す。この性能プロット１１０２、１１０６及び１１１０は、レンダーターゲットがセーブされない異なるＧＰＵを使用するシステム１００の性能を示す。性能プロット１１０６、１１０８及び１１１２は、レンダーターゲットがメモリ１０４にセーブされる異なるＧＰＵを使用するシステム性能を示す。図１１に示すように、画像処理システム１００を使用して皮膚を位置決めすることで、汎用ＣＰＵで行なわれる皮膚位置決めの性能プロット１１１４に比して、著しい性能改善が得られる（ある場合には、数百倍も高速である）。
【００５５】
図１２は、汎用ＣＰＵの性能に比して、レンダーターゲットをセーブする画像処理システム１００の皮膚局所化性能を示すグラフ１２００である。この性能グラフ１２００は、画像処理システム１００が、次のレンダーターゲットブロックレベルのレンダーターゲットをセーブするときに、画像処理システム１００に対する異なる性能プロット１２０２−１２１４を示している：８ｘ８ブロック、プロット１２０２；１６ｘ１６ブロック、プロット１２０４；３２ｘ３２ブロック、プロット１２０６；６４ｘ６４ブロック、プロット１２０８；及び１２８ｘ１２８ブロック、プロット１２１０。又、この性能グラフ１２００は、画像処理システム１００がクオドツリー解決策を使用して皮膚を位置決めする場合の画像処理システム１００の性能１２１２及び平均性能１２１４も示す。性能グラフ１２００で示されたように、画像処理システム１００は、８ｘ８ブロックをセーブするときでも、汎用ＣＰＵにおける処理より遥かに速く（ある場合には数百倍も速く）処理を遂行する。
【００５６】
図１３は、汎用ＣＰＵの性能に比して、画像処理システム１００がレンダーターゲットをセーブしないという仮定のもとで画像処理システム１００の皮膚局所化性能を示すグラフ１３００である。次のレンダーターゲットブロックレベルの性能が作図されている：８ｘ８ブロック、プロット１３０２；１６ｘ１６ブロック、プロット１３０４；３２ｘ３２ブロック、プロット１３０６；６４ｘ６４ブロック、プロット１３０８；及び１２８ｘ１２８ブロック、プロット１３１０。又、この性能グラフ１３００は、画像処理システム１００がクオドツリー解決策を使用して皮膚を位置決めする場合の画像処理システム１００の性能１３１２及び平均性能１３１４も示す。性能グラフ１３００で示されたように、画像処理システム１００は、汎用ＣＰＵにおける処理よりも遥かに速い（通常は、数百倍も速い）。
【００５７】
図１２及び１３の異なる性能プロットは、レンダーターゲットをセーブすることに関連するだけでなく、ＧＰＵへドローコールを発行することにも関連したオーバーヘッドがあることを示している。例えば、図１３（レンダーターゲットがセーブされないと仮定している）は、レンダーターゲットにわたり１２８ｘ１２８ブロックについてドローコールを発行すると、８ｘ８ブロックを使用してレンダーターゲットをカバーするために著しい数の付加的なドローコールを実行する場合よりも高い性能が生じることを示している。それでも、性能は、汎用ＣＰＵの場合より依然高く、且つ初期のパス中にレンダーターゲットをセーブせずに、８ｘ８のブロックサイズにおいて非常に精度が高いという付加的な利益を含む。クオドツリー解決策は、中間の性能レベル（依然、汎用ＣＰＵの場合より遥かに高い）を生じる。というのは、この解決策は、ピクセルでいっぱいであるか又は空であるブロックを更に細分化する必要がないからである。クオドツリー解決策では、多くの場合に、最小ブロックサイズまで掘り下げる必要はない。
【００５８】
図１４は、ネットワーク１４０２に接続された通信インターフェイス１４００を備えた画像処理システム１００を示す。この画像処理システム１００は、ネットワーク１４０２を経てサービス要求者１４０４と通信し、このサービス要求者は、例えば、ソース画像、確率テーブル、及び特徴検出及び／又は位置要求を画像処理システム１００へ提出する。特徴検出要求は、皮膚検出要求であってもよいし、或いは危険な物質のような他の特性をソース画像において検出する要求であってもよい。このため、サービス要求者は、当該特徴を検出するための確率を確立する確率テーブル（例えば、危険な物質である幾つかのカラーに確率を指定する確率テーブル）を与えてもよい。サービス要求者１４０４は、例えば、ソース画像１１６において皮膚検出及び／又は局所化を要求する外部セキュリティシステム、監視システム、薬品システム、及び／又は多のシステムでよい。それとは別に、又はそれに加えて、画像処理システム１００は、画像ソース１４０６からソース画像を得てもよい。画像ソース１５８は、ビデオフィード、デジタルカメラ、又は他の画像ソースを含んでもよい。
【００５９】
又、サービス要求者１４０４は、他のデータを画像処理システム１００に与えてもよい。例えば、各サービス要求者１４０４は、特定のアプリケーションに使用するための異なる特徴検出スレッシュホールド（例えば、皮膚スレッシュホールド１３２）を与えてもよい。又、サービス要求者１４０４は、レンダーターゲットサイズ上限１２８、レンダーターゲットサイズ下限１３０、又は他のパラメータを指定してもよい。例えば、サービス要求者１４０４がソース画像１１６における非常に正確な皮膚位置を要求する場合には、画像処理システム１００は、比較的小さな（例えば、８ｘ８、４ｘ４、２ｘ２又は１ｘ１）レンダーターゲットサイズ下限１３０をセットしてもよい。サービス要求者１４０４があまり厳格でない精度要求を指定するときには、画像処理システム１００は、大きなレンダーターゲットサイズ下限１３０をセットしてもよい。
【００６０】
サービス要求者１４０４は、皮膚検出及び／又は位置データを種々のアプリケーションに使用することができる。例えば、画像処理システム１００は、顔認識システムの前処理ステップとしてソース画像１１６において皮膚を検出し位置決めしてもよい。皮膚検出及び局所化に加えて、上述した画像処理システム１００は、他の画像処理タスクに使用されてもよい。例えば、画像処理システム１００は、空港やバスターミナルや官庁ビルや他の施設のセキュリティステーションに使用するために、有機化合物を検出し及び／又は位置決めするように構成されてもよい。この実施例では、確率テーブル１１４は、有機化合物サンプルの画像セットに基づいて構成されてもよい。
【００６１】
別の実施例では、画像処理システム１００は、衛星画像においてある地域、物体、又は他の細部を検出し及び／又は位置決めするように構成されてもよい。例えば、１組のマリファナ畑の画像サンプルに基づく確率テーブル１１４を使用して、画像処理システム１００は、衛星画像又は高い高度の画像において他のマリファナ畑を検出し位置決めしてもよい。別の実施例として、画像処理システム１００は、医療画像において特定の組織又は他の物質を検出するように構成されてもよい。
【００６２】
本発明の種々の実施形態を説明したが、当業者であれば、本発明の範囲内で多数の他の実施形態が考えられることが明らかであろう。一例として、レンダーターゲットは、皮膚検出又は局所化の間に同じサイズに保たれるが（例えば、６４０ｘ４８０キャンバスで、その上でＣＰＵがテクスチャマッピングを実行する）、ドローコールがそのレンダーターゲット内でより小さなブロックを指定してもよい。換言すれば、他の実施形態では、レンダーターゲットそれ自体を細分化する必要はない。むしろ、ドローコールは、皮膚検出及び局所化テクスチャ処理のためにレンダーターゲットの部分を指定してもよい。従って、本発明は、特許請求の範囲及びその等効物以外で制約されることはない。
【図面の簡単な説明】
【００６３】
【図１】ソース画像において皮膚を検出し局所化する画像処理システムを示す図である。
【図２】１組の皮膚サンプルに対するＲＧＢカラー値のプロットを含むＲＧＢカラースペースを示す図である。
【図３】１組の皮膚サンプルに対するＹ−Ｃｂ−Ｃｒカラー値のプロットを含むＹ−Ｃｂ−Ｃｒカラースペースと、Ｃｂ−Ｃｒ値のみに対する皮膚サンプルのプロットを含む二次元Ｃｂ−Ｃｒカラースペースとを示す図である。
【図４】図３に示すＣｂ−Ｃｒカラースペースから得られる確率プロットを示す図である。
【図５】皮膚検出又は局所化のためのＧＰＵを設定するために設定プログラムで行う動作を示す図である。
【図６】ソース画像に皮膚が存在するかどうか決定するために皮膚検出プログラムで行なう動作を示す図である。
【図７】ソース画像内で皮膚を位置決めするために皮膚位置プログラムで行なう動作を示す図である。
【図８】皮膚検出及び局所化を行なってソース画像内で皮膚ピクセルを識別するためにＧＰＵにおいてピクセルシェーダー制御プログラムで行う動作を示す図である。
【図９】皮膚ピクセル及び次第に小さなレンダーターゲットを含むソース画像の一部分を示す図である。
【図１０】皮膚ピクセル及び次第に小さなレンダーターゲットを含むソース画像の一部分を示す図である。
【図１１】汎用ＣＰＵで局所化を完全に行なうのに比して、画像処理システムの皮膚局所化性能を示すグラフである。
【図１２】汎用ＣＰＵの性能に比して、レンダーターゲットをセーブする画像処理システムの皮膚局所化性能を示すグラフである。
【図１３】汎用ＣＰＵの性能に比して、画像処理システム１００がレンダーターゲットをセーブしないという仮定のもとで画像処理システムの皮膚局所化性能を示すグラフである。
【図１４】ネットワークに接続された通信インターフェイスを含む画像処理システムを示す図である。
【符号の説明】
【００６４】
１００：画像処理システム
１０２：システムプロセッサ
１０４：システムメモリ
１０６：グラフィック処理ユニット
１０８：設定プログラム
１１０：皮膚検出プログラム
１１２：皮膚位置プログラム
１１４：確率テーブル
１１６：ソース画像
１１８：咬合問合せ
１２０：皮膚検出フラグ
１２２：システムパラメータ
１２４：咬合結果
１２６：皮膚位置
１２８：レンダーターゲットサイズ上限
１３０：レンダーターゲットサイズ下限
１３２：皮膚スレッシュホールド
１３４：皮膚ピクセルカウント
１３６：テクスチャメモリ
１３８：ピクセルシェーダー
１４０：フレームバッファ
１４２：確率テクスチャ
１４４：画像テクスチャ
１４８：ピクセルシェーダー制御プログラム
１５２：処理されたピクセル
【図１】
2007257652.tif 000005
【図４】
2007257652.tif 000006
【図５】
2007257652.tif 000007
【図６】
2007257652.tif 000008
【図７】
2007257652.tif 000009
【図８】
2007257652.tif 000010
【図９】
2007257652.tif 000011
【図１０】
2007257652.tif 000012
【図１１】
2007257652.tif 000013
【図１２】
2007257652.tif 000014
【図１３】
2007257652.tif 000015
【図１４】
2007257652.tif 000016
【図２】
2007257652.tif 000017
【図３】
2007257652.tif 000018
【外国語明細書】
2007257652.tif 000019
2007257652.tif 000020
2007257652.tif 000021
2007257652.tif 000022
2007257652.tif 000023
2007257652.tif 000024
2007257652.tif 000025
2007257652.tif 000026
2007257652.tif 000027
2007257652.tif 000028
2007257652.tif 000029
2007257652.tif 000030
2007257652.tif 000031
2007257652.tif 000032
2007257652.tif 000033
2007257652.tif 000034
2007257652.tif 000035
2007257652.tif 000036
2007257652.tif 000037
2007257652.tif 000038
2007257652.tif 000039
2007257652.tif 000040
2007257652.tif 000041
2007257652.tif 000042
2007257652.tif 000043
2007257652.tif 000044
2007257652.tif 000045
2007257652.tif 000046
2007257652.tif 000047
2007257652.tif 000048
2007257652.tif 000049
2007257652.tif 000050
2007257652.tif 000051
2007257652.tif 000052
2007257652.tif 000053
2007257652.tif 000054
2007257652.tif 000055
2007257652.tif 000056
2007257652.tif 000057