皮膚検出及び局所化のための画像処理システム
【課題】皮膚検出及び局所化のための改良された処理システムを提供する。
【解決手段】画像処理システムは、リアルタイムより高速の皮膚検出及び局所化を与える。このシステムは、グラフィック処理ユニットの高度に最適化されたアーキテクチャーを使用して、画像内の皮膚を迅速に且つ効率的に検出し位置決めする。グラフィック処理ユニットにおいて皮膚検出及び局所化を遂行することにより、画像処理システムは、メインシステムプロセッサが、汎用アプリケーションの実行を含む他の重要なタスクを遂行するように解放する。画像処理システムが皮膚を検出し局所化する速度は、顔検出及び動き追跡のようなその後の処理ステップも容易にする。
【解決手段】画像処理システムは、リアルタイムより高速の皮膚検出及び局所化を与える。このシステムは、グラフィック処理ユニットの高度に最適化されたアーキテクチャーを使用して、画像内の皮膚を迅速に且つ効率的に検出し位置決めする。グラフィック処理ユニットにおいて皮膚検出及び局所化を遂行することにより、画像処理システムは、メインシステムプロセッサが、汎用アプリケーションの実行を含む他の重要なタスクを遂行するように解放する。画像処理システムが皮膚を検出し局所化する速度は、顔検出及び動き追跡のようなその後の処理ステップも容易にする。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像処理に係る。より詳細には、本発明は、画像における皮膚検出及び局所化に係る。
【背景技術】
【0002】
画像技術の絶え間ないそして急速な開発は、それに対応して大きな需要を画像処理システムにもたらした。画像技術の広範囲な改良は、より大きく且つより高解像度の画像データセットを生じさせ、これは、ひいては、受け容れられるレベルのシステム応答性を維持するために、より高速で且つより効率的な処理システムを必要とする。同時に、薬品に対する警備から製造に至るまでの範囲の益々多数の産業が、近代的市場の需要と歩調を合わせるために画像処理に注意を向けることになった。
【0003】
例えば、皮膚を検出するための画像処理は、顔認識及び動き追跡を含む多数の警備産業アプリケーションにおける重要な第1ステップである。顔認識の場合には、セキュリティアプリケーションがある顔をデータベース内の顔と比較する前に、画像処理システムは、先ず、ビデオ又はスタティック画像が皮膚も含むかどうか決定しなければならない。画像が皮膚を含む場合には、画像処理システムは、その画像内のどこに皮膚が位置しているか及びそれが顔の皮膚であるかどうか決定しなければならない。更に、例えば、警備用カメラから30フレーム/秒で連続するビデオストリームを分析するためには、このような皮膚及び顔検出をリアルタイムで遂行することがしばしば要望される。
【0004】
過去において、画像処理システムの汎用中央処理ユニット(CPU)が皮膚検出を遂行していた。或いは又、特に、画像における皮膚を検出するために、コストが高く且つ高度にカスタマイズされた画像処理ハードウェアが時々設計され構築された。しかしながら、汎用CPUアーキテクチャーにおける年々の増分的進歩は、皮膚検出及び局所化のような特殊な画像処理ファンクションを遂行するための能力増加と直接的に相関していない。更に、CPUが皮膚検出に当てることのできるリソースには限度がある。というのは、CPUは、他の必要な汎用システムアプリケーション(例えば、ワードプロセッサ、スプレッドシート、及びコンピュータ支援型デザインプログラム)も実行しなければならないからである。
【発明の開示】
【発明が解決しようとする課題】
【0005】
それ故、皮膚検出及び局所化の過去の実施は、2つの比較的不満足な選択肢、即ち汎用CPUにより遂行される速度及び効率の低い処理か、或いは高コストで非常に複雑な高度にカスタマイズされたハードウェアか、に制限される。例えば、大都市全体にわたる警備用カメラの大量なロールアウトや、空港における増加されたセキュリティ審査を受け容れるように皮膚検出のための高度にカスタマイズされたハードウェアを設計し製造することは、非常にコストがかかり、実際的でないことが分かっている。まだ、これら及び他のアプリケーションは、高性能の画像処理解決策がないと、有効性が制限される。
【0006】
それ故、皮膚検出及び局所化のための改良された処理システムが要望される。
【課題を解決するための手段】
【0007】
画像処理システムは、非常に高速の皮膚検出及び局所化(localization)を与える。画像処理システムは、皮膚検出及び局所化処理の大部分を遂行するように、グラフィック処理ユニット(GPU)における特殊な処理技術を実施する。従って、メインシステムプロセッサは、他の重要なタスクを自由に遂行する。GPUは、高度に最適化されたテクスチャ処理アーキテクチャーであるために、検出及び局所化を加速する。従って、画像処理システムは、特に、高度にカスタマイズされた画像処理ハードウェアに依存する過去のシステムに比して、低廉な皮膚検出及び局所化解決策を導く。
【0008】
画像処理システムは、システムプロセッサと、GPUと、システムメモリと、皮膚検出プログラムとを備えている。GPUは、テクスチャメモリ及び多数のピクセルシェーダーを含む高度に最適化されたグラフィック処理アーキテクチャーを備えている。システムメモリは、最初に、確率テーブルと、皮膚を検出すべきところのソース画像とを記憶する。皮膚検出プログラムは、確率テーブル及びソース画像を、システムメモリからGPUのテクスチャメモリへアップロードする。次いで、皮膚検出プログラムは、ソース画像に対してレンダーターゲットを定義し、GPUへのドロー(draw)コールを発行する。このドローコールは、ピクセルシェーダーによりソース画像及び確率テーブルをレンダーターゲットにテクスチャマッピングするのを開始する。テクスチャマッピング動作は、皮膚スレッシュホールド(例えば、アルファテストスレッシュホールド)に関連して、レンダーターゲットでレンダリングされるピクセルのどれを皮膚ピクセルと考えるか決定する。
【0009】
ソース画像に皮膚が存在するかどうか決定するのに加えて、画像処理システムは、皮膚を位置決め(locate)することもできる。このため、画像処理システムは、皮膚位置プログラムを備えている。一実施形態では、皮膚位置プログラムは、ソース画像のブロックツリーサーチ(例えば、クオドツリーサーチ)を遂行する。以下に詳細に述べるように、ブロックツリーサーチを遂行する際に、皮膚位置プログラムは、GPUへドローコールを繰り返し発行して、ピクセルシェーダーが、確率テーブルを、ソース画像内に配置された次第に小さくなるレンダーターゲットへとテクスチャマップするようにさせる。皮膚位置プログラムは、皮膚ピクセルが見つかったソース画像内の位置をシステムメモリに記憶する。
【0010】
本発明の他のシステム、方法、特徴及び効果は、当業者であれば、添付図面及び以下の詳細な説明から明らかとなろう。この説明に含まれるこのような全ての付加的なシステム、方法、特徴及び効果は、本発明の範囲内に包含され、特許請求の範囲により保護されるものとする。
【0011】
本発明は、添付図面及び以下の説明から良く理解できよう。図面中のコンポーネントは、必ずしも正しいスケールではなく、本発明の原理を例示するときには強調がなされている。更に、異なる図面全体にわたり、対応部分は、同じ参照番号で示されている。
【発明を実施するための最良の形態】
【0012】
図示された要素は、以下に詳細に述べるように機能する。しかしながら、詳細な説明を行なう前に、特定実施形態の説明であるのに関わらず、以下の説明は、全て、例示的なものであり、それに限定されるものでないことに注意されたい。例えば、実施形態の選択された観点、特徴又は要素がメモリに記憶されるものとして示されるが、画像処理システムと一貫したシステム及び方法の全部又は一部分が、他のマシン読み取り可能な媒体、例えば、ハードディスク、フロッピーディスク及びCD−ROMのような二次記憶装置、ネットワークから受信される信号、或いは現在知られている又は以後開発される他の形式のROM又はRAMに記憶され、それらにわたって配布され、又はそれらから読み取られてもよい。
【0013】
更に、画像処理システムの特定のコンポーネントについて説明するが、これらシステムと一貫する方法、システム及び製品が、付加的なコンポーネント又は異なるコンポーネントを含んでもよい。例えば、システムプロセッサは、マイクロプロセッサ、マイクロコントローラ、特定用途向け集積回路(ASIC)、個別ロジック、或いは他の形式の回路又はロジックの組み合せとして実施されてもよい。同様に、メモリは、DRAM、SRAM、フラッシュ、又は他の形式のメモリでよい。パラメータ(例えば、スレッシュホールド)、データベース、テーブル、及び他のデータ構造体は、個別に記憶され管理されてもよいし、単一のメモリ又はデータベースに組み込まれてもよいし、或いは多数の異なる方法で論理的及び物理的に編成されてもよい。プログラムは、単一のプログラムの一部分でもよいし、個別のプログラムでもよいし、或いは多数のメモリ及びプロセッサにわたって分布されてもよい。
【0014】
図1は、リアルタイムより高速の皮膚検出及び局所化を与える画像処理システム100を示す。この画像処理システム100は、システムプロセッサ102と、システムメモリ104と、GPU106とを備えている。GPUは、例えば、カリフォルニア州サンタクララのNVIDIA、又はマサチューセッツ州マールボローのATIリサーチインクから入手できるグラフィックプロセッサでよい。以下に詳細に述べるように、システムプロセッサ102は、システムメモリ104からの設定プログラム108、皮膚検出プログラム110及び皮膚位置プログラム112を実行する。システムメモリ104は、確率テーブル114、ソース画像116、及び咬合(occlusion)問合せ118を記憶する。又、システムメモリ104は、皮膚検出フラグ120、システムパラメータ122、咬合結果124、及び皮膚位置126も記憶する。システムパラメータ122は、レンダーターゲットサイズ上限128、レンダーターゲットサイズ下限130、及び皮膚スレッシュホールド132を含むことができる。又、メモリは、GPU106から得られた咬合結果124も記憶する。咬合結果124は、皮膚ピクセルカウント134を与えてもよい。
【0015】
GPU106は、テクスチャメモリ136、多数のパラレルピクセルシェーダー138、及びフレームバッファ140を備えている。テクスチャメモリ136は、確率テクスチャ142及び画像テクスチャ144を記憶する。多数のパラレルピクセルシェーダー138は、システムプロセッサ102からのドローコールに応答して、確率テクスチャ142及び画像テクスチャ144を処理する。多数のパラレルピクセルシェーダー138は、ピクセルシェーダー制御プログラム148を実行する。アルファテスト回路150は、ピクセルシェーダー138により処理されたピクセルをフィルタする。特に、アルファテスト回路150は、アルファテスト154を適用して、テクスチャ処理されたピクセルを保持すべきか破棄すべきか決定する。システムプロセッサ102は、アルファテスト154に対する皮膚スレッシュホールド132又は他のフィルタパラメータを確立することができる。皮膚スレッシュホールド132は、それより低いと、テクスチャ処理されたピクセルがおそらく皮膚ピクセルとしてカウントするに充分な皮膚でない確率を表わす。GPU106は、このようなピクセルを破棄するが、処理されたピクセル152としてアルファテスト154にパスするピクセルをフレームバッファ140に記憶する。
【0016】
ソース画像116は、ビデオストリーム、デジタルカメラ又は他のソースから得ることができる。ソース画像116は、RGBカラースペースのような特定のカラースペースにおいて表わされる画像データを含む。しかしながら、画像処理システム100は、画像データが他のカラースペースにおいて表わされるような画像を処理してもよい。画像処理システム100は、ソース画像116を得て、処理のためにシステムメモリ104に記憶する。
【0017】
システムプロセッサ102は、皮膚検出プログラム110及び/又は皮膚位置プログラム112を実行するための先駆体として設定プログラム108を実行する。プログラム112及び114は、確率テーブル114及びソース画像116をGPU106に関連して使用して、ソース画像116において皮膚を迅速に検出し及び/又は位置決めする。設定プログラム108は、テクスチャマッピングオペレーションの準備において確率テーブル114及びソース画像116をGPU106に与える。
【0018】
画像処理システム100は、皮膚を含む画像の分析に基づいて構成された確率テーブル114を記憶する。確率テーブル114は、確率テーブル114のカラー座標インデックス(例えば、Cb−Cr)で表わされた特定のピクセルに対して、ピクセルが皮膚ピクセルである確率を記憶する。Cb及びCrの各考えられる値は、皮膚確率が記憶された確率テーブル114のカラー位置を定義する。確率テーブル114がシステム100に予め確立されてもよいし、或いは画像処理システム100が、図14に示して説明するソースのような外部ソースから確率テーブル114を得てもよい。システムプロセッサ102は、皮膚検出及び位置決めを特定の確率基準に適応させるために、処理中に確率テーブル114を動的に変更してもよい。
【0019】
図2は、赤軸204、緑軸206及び青軸208に沿った1組の既知の皮膚サンプル202に対するRGBカラー値のプロット200を示す。RGBプロット202は、RGBカラースペース全体にわたる皮膚サンプルの顕著なしみ(smear)を示している。各軸204、206及び208に沿った分散(variance)は、皮膚ピクセルと非スピンピクセルとの間の区別をRGBカラースペースにおいて困難なものにする。しかしながら、RGBカラー値が表わされるか又はY−Cb−Crカラースペースへ変換されるときには、皮膚ピクセルは、皮膚ピクセルと非皮膚ピクセルとの間の明確な区別を指して局所化する。
【0020】
図3は、1組の皮膚サンプル202に対するY−Cb−Crカラー値のプロット300と、Cb−Cr値のみに対する皮膚サンプル202の二次元プロット302とを示す。Y−Cb−Crプロット300は、Cb及びCr軸304及び306に沿った皮膚サンプル202の緊密なクラスター状態を示す。ルミナンスを表わすY軸308は、皮膚サンプルのY−Cb−Crプロット300内の最大量の分散を示す。ルミナンス値の分散は、人間の目にはほぼ見えない。ルミナンス値が下がると、皮膚サンプル202の二次元Cb−Crプロットが生じる。皮膚サンプル202は、Cb−Crカラースペースにおける少量の分散と共にクラスター状態になる傾向がある。
【0021】
図4は、図3に示す二次元Cb−Crカラースペース302から得た確率テーブル400を示す。この確率テーブル400は、Cb及びCr(X及びZ)軸402及び404から形成されたカラー座標インデックスに沿って設定される。各インデックス位置は、Cb−Crカラースペースにおける考えられるカラーを定義する。確率テーブル400は、各カラー位置においてY軸406に沿った皮膚確率(例えば、皮膚確率408)を確立する。
【0022】
確率テーブル400は、皮膚サンプルの組202のCb−Crカラー値を、X及びZ軸402及び404で表わされた255x255テーブルへとビンする(binning)ことにより構成されてもよい。Y軸で表わされた皮膚確率は、各ビンされた値を皮膚サンプルの全数で除算することにより決定されてもよい。Cb−Crカラーモデルにおける皮膚サンプル202のクラスター特性は、確率テーブル400に示す比較的大きな皮膚確率408を生じさせる。
【0023】
図1に戻ると、設定プログラム108は、確率テーブル114及びソース画像116をGPU106へアップロードする。GPU106は、確率テーブル114を確率テクスチャ142として記憶すると共に、ソース画像116を画像テクスチャ144としてテクスチャメモリ136に記憶する。又、設定プログラム108は、アルファテスト回路150に対するアルファパラメータ(例えば、皮膚スレッシュホールド132)を決定し、そしてそれらパラメータをGPU106のアルファテスト回路150にアップロードする。アルファテスト回路150は、皮膚スレッシュホールド132を、ピクセルシェーダー138により行なわれたテクスチャ決定に対して比較して、テクスチャ処理されたピクセルを皮膚ピクセルと考えるべきかどうか決定する。設定プログラム108により遂行される動作が図5に示されており、これについて以下に詳細に説明する。
【0024】
皮膚検出プログラム110は、ソース画像116が皮膚を含むかどうか検出する。皮膚検出プログラム110は、多数のパラレルピクセルシェーダー138においてテクスチャマッピングを開始するためにドローコールを発行する。又、皮膚検出プログラム110は、皮膚ピクセルカウント134を決定するために咬合問合せ118をGPU106へ発行する。皮膚ピクセルカウント134は、アルファテスト154にパスして皮膚ピクセルと考えられるピクセルの数である。これらのピクセルは、フレームバッファ140に書き込まれてもよい。皮膚検出プログラム110は、咬合結果124が非ゼロの皮膚ピクセルカウント134を返送するかどうかに基づいて皮膚検出フラグ120をセット又はクリアする。従って、皮膚検出プログラム110は、高速フィルタとして働いて、皮膚がソース画像116に少しでも存在するかどうか決定する。皮膚検出プログラム110により行われる動作が図6に示され、これについて以下に詳細に述べる。
【0025】
皮膚位置プログラム112は、ソース画像116において皮膚を位置決めする。一実施形態では、皮膚位置プログラム112は、ソース画像116のブロックツリーサーチを実行して、皮膚ピクセルを位置決めする。皮膚位置プログラム112は、最初に、レンダーターゲットサイズ上限128により定義されたソース画像116の領域をサーチする。皮膚ピクセルが検出される領域では、皮膚位置プログラム112は、その領域を細分化し、これらサブ領域内のピクセルをサーチする。皮膚位置プログラム112は、サブ領域のサイズがレンダーターゲットサイズ下限130に等しくなるまで細分化及びサーチを続けることができる。
【0026】
このように、皮膚位置プログラム112は、レンダーターゲットのサイズ下限に対応する解像度でソース画像116内において皮膚を効率的に且つ正確に位置決めする。皮膚位置プログラム112は、皮膚位置126(例えば、非ゼロの皮膚ピクセルカウントを有するレンダーターゲットの位置)をシステムメモリ104に記憶する。皮膚位置プログラム112により遂行される動作が図7に示されており、これについて以下に詳細に説明する。
【0027】
皮膚検出プログラム110及び皮膚位置プログラム112は、多数のパラレルピクセルシェーダー138においてテクスチャマッピングを開始するためにGPU106へドローコールを発行するインストラクションを含む。多数のパラレルピクセルシェーダー138は、確率テクスチャ142及び画像テクスチャ144をレンダーターゲットにテクスチャマッピングする。レンダーターゲットは、レンダーターゲットを境界定めする頂点(例えば、左上及び右下の頂点)により画成することができる。
【0028】
プログラム110及び112は、レンダーターゲットをテクスチャマッピングすることから生じる咬合結果124を受け取る。この咬合結果124は、アルファテスト回路150により適用されるアルファテストにパスする皮膚ピクセルの数を指定する。プログラム110及び112は、皮膚が見つかった位置をセーブすることができる(例えば、ソース画像116に対してレンダーターゲットの位置をセーブすることにより)。皮膚検出及び/又は位置プログラム112及び114を実行した後に、画像処理システム100は、スピンピクセルカウント134又は皮膚位置126を他のアプリケーションに報告してもよいし、或いは皮膚ピクセルカウント134又は皮膚位置126を他の目的で使用してもよい。
【0029】
図5は、皮膚検出又は局所化のためにGPU106を設定するために設定プログラム108が行なう動作500を示す。この設定プログラム108は、システムメモリ104から確率テーブル114を得る(動作502)。次いで、設定プログラム108は、確率テーブル114を確率テクスチャ142としてGPUのテクスチャメモリ136へアップロードする(動作504)。又、設定プログラム108は、システムメモリ104からソース画像116を得(動作506)、そしてソース画像116を画像テクスチャ144としてGPUテクスチャメモリ136へアップロードする(動作508)。従って、画像処理システム10は、GPU106における多数のパラレルピクセルシェーダーの速度及びパラレル処理能力を適用して、ソース画像116において皮膚を検出し位置決めすることができる。
【0030】
又、設定プログラム108は、アルファパラメータを決定することもできる(動作510)。アルファパラメータは、アルファテスト回路150においてアルファテスト154に使用される皮膚スレッシュホールド132又は他の基準を含むことができる。アルファテスト回路150は、テクスチャ処理されたピクセルが皮膚ピクセルとして適切であるかどうか決定する。又、図14を参照して以下に詳細に述べるように、設定プログラム108は、画像処理システム100によりソース画像116における皮膚検出又は位置を要求するシステムのような外部システムにより与えられる値に基づいてアルファパラメータを決定することもできる。設定プログラム108は、皮膚検出又は局所化の前にGPU106においてアルファテスト154を確立する(動作512)。
【0031】
図6は、ソース画像116に皮膚が存在するかどうか決定するために皮膚検出プログラム110が行なう動作600を示す。皮膚検出プログラム110は、設定プログラム108の実行を開始する(動作602)。上述したように、設定プログラム108は、確率テーブル114及びソース画像116を、各々、確率テクスチャ142及び画像テクスチャ144としてテクスチャメモリ136へアップロードする。
【0032】
皮膚検出プログラム110は、GPU106へ咬合問合せ118を発行し、皮膚ピクセルカウント134を要求する(動作604)。咬合問合せ118は、所与のレンダーターゲットに対してアルファテスト154にパスしたピクセルの数を返送する。又、皮膚検出プログラム110は、初期レンダーターゲットも定義する(動作606)。このため、皮膚検出プログラム110は、ソース画像116に対するレンダーターゲットのサイズ及び位置を決定する。初期レンダーターゲットは、サイズ上限128(例えば、ソース画像116の全サイズ)を有する長方形でもよいし、或いはサイズ下限130(例えば、単一ピクセル)と同程度に小さくてもよい。
【0033】
皮膚検出プログラム110は、皮膚検出フラグ120をクリアし(動作608)、そして現在レンダーターゲットへの確率テクスチャ142及び画像テクスチャ144のテクスチャマッピングを開始する(動作610)。これを行なうために、皮膚検出プログラム110は、GPU106へのドローコールを発行し、ピクセルシェーダー制御プログラム148の制御のもとで多数のパラレルピクセルシェーダー138によるテクスチャマッピングを開始する。GPU106は、レンダーターゲットにおける各ピクセルのトランスパレンシーを決定し、アルファテスト154を遂行し、そして皮膚ピクセルカウント134を含む咬合結果124を返送する。皮膚検出プログラム110は、現在レンダーターゲットの皮膚ピクセルカウント134を含む咬合結果124を受け取る(動作612)。
【0034】
皮膚ピクセルカウントが非ゼロである場合には、皮膚検出プログラム100は、皮膚検出フラグ120をセットし(動作614)、そして皮膚が配置されたレンダーターゲット位置をセーブすることができる(動作616)。他の実施形態では、皮膚検出フラグ120は、スレッシュホールド数の皮膚ピクセルが位置決めされた(例えば、画像の5%以上が皮膚を含む)ときにセットされてもよい。皮膚検出プログラム100が画像の他の部分において皮膚をサーチする場合には、皮膚検出プログラム100は、新たなレンダーターゲット(例えば、より大きなレンダーターゲット、より小さなレンダーターゲット、又はレンダーターゲットに対する新たな位置)を定義し(動作618)、そして現在レンダーターゲットにおいてテクスチャマッピングを開始する(動作610)。
【0035】
図7は、ソース画像116内で皮膚を位置決めするために皮膚位置プログラム112が行なう動作を示す。以下の例は、皮膚位置プログラム112がソース画像116全体にわたり皮膚を位置決めすることを仮定しているが、皮膚位置プログラム112は、ソース画像116の1つ以上のサブ部分において皮膚を選択的に位置決めしてもよいことに注意されたい。皮膚位置プログラム112は、設定プログラム108の実行を開始する(動作702)。上述したように、設定プログラム108は、確率テーブル114及びソース画像116を、各々、確率テクスチャ142及び画像テクスチャ144としてテクスチャメモリ136へアップロードする。又、設定プログラム108は、アルファパラメータを決定し、そしてGPU106においてアルファテスト154を確立することもできる。
【0036】
皮膚位置プログラム112は、レンダーターゲットのサイズ上限128を定義する(動作704)。皮膚位置プログラム112は、レンダーターゲットのサイズ上限128を、全ソース画像116のサイズとして、又はソース画像116のサブ領域として定義することもできる。又、皮膚位置プログラム112は、レンダーターゲットのサイズ下限130も定義する(動作706)。レンダーターゲットのサイズ下限130は、レンダーターゲットのサイズの下部境界を決定する(例えば、64x64ピクセル、16x16ピクセル、1x1ピクセル、又は他の下部境界)。レンダーターゲットのサイズが減少するにつれて、位置精度が高くなる。
【0037】
皮膚位置プログラム112は、咬合問合せ118をGPU106へ発行する(動作708)。皮膚位置プログラム112は、初期レンダーターゲットをセットする(動作710)。例えば、皮膚位置プログラム112は、初期レンダーターゲットをレンダーターゲットサイズ上限128にセットし、そしてそのレンダーターゲットに対する位置(例えば、ソース画像の左上角)を選択することができる。
【0038】
皮膚位置プログラム112は、GPU106へドローコールを行い、現在レンダーターゲットへの確率テクスチャ142及び画像テクスチャ144のテクスチャマッピングを開始する(動作712)。GPUにおけるアルファテストは、テクスチャマッピングされたピクセルのトランスパレンシー値に対するフィルタとして動作し、皮膚ピクセルとして適切なテクスチャマッピングされたピクセルの数を決定する。皮膚ピクセルカウント134は、咬合結果124において返送される。
【0039】
レンダーターゲットが皮膚ピクセルでいっぱいになるか、又は皮膚ピクセルが空であるときには、皮膚位置プログラム112は、レンダーターゲットを細分化しない。レンダーターゲットが皮膚ピクセルでいっぱいであるときには、皮膚位置プログラム112は、レンダーターゲット位置を皮膚位置126としてセーブする(動作718)。又、皮膚位置プログラム112は、レンダーターゲットのコンテンツをメモリ104にセーブしてもよい。処理されるべきソース画像が更に残っている場合には、皮膚位置プログラム112は、新たなレンダーターゲットをセットし(動作720)(例えば、レンダーターゲットをソース画像に対して新たな位置へ移動させる)、そして再びテクスチャマッピングを開始する。
【0040】
レンダーターゲットが皮膚ピクセルで一部分いっぱいである場合には、皮膚位置プログラム112は、レンダーターゲットがサイズ下限130に達したかどうか決定する。もしそうであれば、皮膚位置プログラム112は、皮膚位置をセーブし(動作718)、そして処理されるべきソース画像が更に残っているかどうか決定する。さもなければ、皮膚位置プログラムは、レンダーターゲットを細分化する(動作722)。例えば、クオドツリーサーチ戦略を適用するときには、皮膚位置プログラム112は、レンダーターゲットを、4つのより小さなレンダーターゲットに細分化する。それ故、新たな、より小さなレンダーターゲットがセットされ(動作720)、そして皮膚位置プログラム112が再びテクスチャマッピングを開始する。
【0041】
上述した実施例では、皮膚位置プログラム112は、皮膚ピクセルが全く空であるか又は皮膚ピクセルでいっぱいであるレンダーターゲットは細分化しない。他の実施形態では、皮膚位置プログラム112は、部分的に埋められたレンダーターゲットを、ゼロの皮膚ピクセル又は全部皮膚ピクセルを含むかのように処理するよう構成されてもよい。例えば、皮膚位置プログラム112は、ゼロからスレッシュホールド数までの皮膚ピクセルを含むレンダーターゲットを、収容皮膚ピクセルがゼロのレンダーターゲットであるかのように処理してもよい。同様に、皮膚位置プログラム112は、所与のスレッシュホールド数の皮膚ピクセルを含むものから全部皮膚ピクセルを含むものまでのレンダーターゲットを、レンダーターゲットが皮膚ピクセルでいっぱいであるかのように処理してもよい。
【0042】
又、上述した皮膚位置プログラム112は、予想されるドローコールを使用して皮膚位置決めを実行してもよい。皮膚位置プログラム112に使用される予想されるドローコールは、特定のレンダーターゲットを描写し、そのレンダーターゲットにおいて皮膚が検出された場合には、そのレンダーターゲットをサブ領域に細分化し、そしてそれらサブ領域を描写するようにGPUに命令するドローコールである。従って、皮膚位置プログラム112は、同じ領域を描写するために5つまでのドローコールを発行するのではなく、レンダーターゲット及び4つのより小さなレンダーターゲットを描写するために1つのドローコールを発行する。
【0043】
図8は、皮膚検出及び局所化を行なってソース画像116において皮膚ピクセルを識別するためにGPU106においてピクセルシェーダー制御プログラム148が行なう動作を示す。ピクセルシェーダー制御プログラム148は、画像テクスチャ144からピクセルを得る(動作802)。ピクセルシェーダー制御プログラム148は、ピクセルを、画像テクスチャ144が存在するカラースペース、例えば、RGBカラースペースから、確率テクスチャ142が存在するカラースペース、例えば、Cb−Crカラースペースへ変換する(動作804)。変換されたピクセルは、ピクセルシェーダー制御プログラム148が確率テクスチャ142へインデックスする確率座標となる。
【0044】
ピクセルシェーダー制御プログラム148は、確率座標を確率テクスチャ142へインデックスすることによりピクセルに対する皮膚確率を決定する(動作806)。上述したテクスチャマッピングから生じるインデックスされた値は、RGBA値でよく、ここで、Aは、ピクセルのCb−Cr値が皮膚である確率を含む。ピクセルシェーダー制御プログラム148は、出力ピクセルのアルファ値を、確率テクスチャから得た皮膚確率にセットする(動作808)。この場合には、RGB値は、ピクセルが含む皮膚の形式のような他のデータを含んでもよい。それにより得られるインデックスされた値は、ピクセルが皮膚を含む確率を含む1値成分テクスチャでもよい。これらの例において、ピクセルシェーダー制御プログラム148は、A値を、インデックスされたピクセルのトランスパレンシーとしてセットする。しかしながら、ピクセルシェーダー制御プログラム148は、ピクセルに対するレンダリングされたピクセル出力値(例えば、トランスパレンシー値)として、確率テクスチャ142の他の軸に他の成分を出力してもよい。
【0045】
次いで、ピクセルシェーダー制御プログラム148は、テクスチャマッピングされたピクセル152を出力し(動作810)、これは、次いで、ピクセルが皮膚ピクセルとして適切であるかどうか決定するためにアルファテストを受ける。以下のテーブル1は、RGBをCb−Crへと変換するピクセルシェーダー制御プログラムの一例を示し、ここで、「MainTexture」は、画像テクスチャ144を指し、「dot」は、ドット積演算であり、そして「Tex2D」は、確率テクスチャ142を指す。
【0046】
テーブル2は、立体マップへと配列された6つの2Dテクスチャをインデックスするように、3D方向ベクトルを使用して、テクスチャ処理されたピクセルが決定されるピクセルシェーダー制御プログラム148の別の例を示す。立体マップテクスチャ構造は、三次元立体の辺を各々表わす6つのテクスチャのセットである。ピクセルシェーダー制御プログラムは、3成分RGB値をベクトルとして使用して、立体の中心から立体壁のスポットを指すことができる。
【0047】
図9及び10は、皮膚ピクセル902と、レンダーターゲット904、906、908及び910と、次第に小さくなるレンダーターゲット1000、1002、1004及び1006とを含むソース画像900の48x48ピクセル部分の実施例を示す。図9及び10は、ソース画像900内で皮膚を位置決めするために皮膚位置プログラム112が行なうステップを示す。この実施例では、皮膚位置プログラム112は、レンダーターゲットのサイズ上限128を48x48にセットすると共に、レンダーターゲットのサイズ下限130を12x12にセットする。皮膚位置プログラム112は、ソース900の48x48部分を初期レンダーターゲットとしてセットする。皮膚位置プログラム112は、初期レンダーターゲット900への確率テクスチャ142及び画像テクスチャ144のテクスチャマッピングを開始する。
【0048】
皮膚位置プログラム112は、初期レンダーターゲット900が、ゼロより多いが全部より少ない皮膚ピクセル902を含むことを決定する。その結果、皮膚位置プログラム112は、初期レンダーターゲット900を、4つのより小さな24x24のサブ領域904−910に細分化する。皮膚位置プログラム112は、左上のサブ領域904を新たなレンダーターゲットとしてセットし、そしてレンダーターゲット904に関してテクスチャマッピングを開始する。
【0049】
皮膚位置プログラム112は、レンダーターゲット904が全皮膚ピクセル902を含むことを決定する。皮膚位置プログラム112は、皮膚位置126をシステムメモリ104に記憶する。皮膚位置プログラム112は、右上のサブ領域906を新たなレンダーターゲットとしてセットする。というのは、皮膚位置プログラム112は、細分化されたレンダーターゲット900全体をまだ処理していないからである。皮膚位置プログラム112は、レンダーターゲット906においてテクスチャマッピングを開始し、そしてそれがゼロの皮膚ピクセル902を含むことを決定する。皮膚検出位置112は、新たなレンダーターゲットとして左下のサブ領域908へ移動し、そしてレンダーターゲット908もゼロの皮膚ピクセル902を含むことを決定する。
【0050】
次いで、皮膚位置プログラム112は、新たなレンダーターゲットとして右下のサブ領域910へ移動し、そしてレンダーターゲット910においてテクスチャマッピングを開始した後に、レンダーターゲット910が、ゼロより多いが全部より少ない皮膚ピクセル902を含むことを決定する。レンダーターゲット910、24x24ピクセルは、レンダーターゲットサイズ下限130に達していない。従って、皮膚検出プログラム110は、レンダーターゲット910を細分化する(この例では、4つの象限に)。
【0051】
図10は、次第に小さな12x12のサブ領域1000−1006へ細分化されたレンダーターゲット910を示している。皮膚位置プログラム112は、次第に小さなサブ領域1000−1006の1つを新たなレンダーターゲットとしてセットする。この実施例では、皮膚位置プログラム112は、次第に小さなサブ領域1000を新たなレンダーターゲットとしてセットする。
【0052】
レンダーターゲット1000がゼロの皮膚ピクセル902を含み、且つ以前に細分化されたレンダーターゲット910の全部未満が処理されたと決定された後に、皮膚位置プログラム112は、次第に小さなサブ領域1002を新たなレンダーターゲットとしてセットする。皮膚位置プログラム112は、レンダーターゲット1002が全ての皮膚ピクセル902を含むと決定し、そして皮膚位置をシステムメモリ104に記憶する。皮膚位置プログラム112は、次第に小さなサブ領域1004を新たなレンダーターゲットとしてセットする。皮膚位置プログラム112は、レンダーターゲット1004が、ゼロより多いが全部より少ない皮膚ピクセル902を含むことを決定する。又、皮膚位置プログラム112は、レンダーターゲット1004のサイズがレンダーターゲットのサイズ下限130に等しいことも決定する。
【0053】
皮膚位置プログラム112は、皮膚位置をシステムメモリ104に記憶する。以前に細分化されたレンダーターゲット910の全部未満が処理されているので、皮膚位置プログラム112は、次第に小さなサブ領域1006を新たなレンダーターゲットとしてセットする。皮膚位置プログラム112は、レンダーターゲット1006が、ゼロより多いが全部より少ない皮膚ピクセル902を含むことを決定する。皮膚位置プログラム112は、レンダーターゲット1006を、更に細分化するのではなく、システムメモリ104に記憶する。というのは、レンダーターゲット1006のサイズが、レンダーターゲットのサイズ下限130に等しいからである。従って、皮膚位置プログラム112は、ソース画像900の一部分に存在する皮膚ピクセル902の位置を決定する。
【0054】
図11は、局所化を完全に汎用CPUにおいて遂行するのに比して、画像処理システム100の皮膚局所化性能を示すグラフ1100である。この性能グラフ1100は、近代的なGPU106を使用して達成される性能プロット1102−1112を示す。この性能プロット1102、1106及び1110は、レンダーターゲットがセーブされない異なるGPUを使用するシステム100の性能を示す。性能プロット1106、1108及び1112は、レンダーターゲットがメモリ104にセーブされる異なるGPUを使用するシステム性能を示す。図11に示すように、画像処理システム100を使用して皮膚を位置決めすることで、汎用CPUで行なわれる皮膚位置決めの性能プロット1114に比して、著しい性能改善が得られる(ある場合には、数百倍も高速である)。
【0055】
図12は、汎用CPUの性能に比して、レンダーターゲットをセーブする画像処理システム100の皮膚局所化性能を示すグラフ1200である。この性能グラフ1200は、画像処理システム100が、次のレンダーターゲットブロックレベルのレンダーターゲットをセーブするときに、画像処理システム100に対する異なる性能プロット1202−1214を示している:8x8ブロック、プロット1202;16x16ブロック、プロット1204;32x32ブロック、プロット1206;64x64ブロック、プロット1208;及び128x128ブロック、プロット1210。又、この性能グラフ1200は、画像処理システム100がクオドツリー解決策を使用して皮膚を位置決めする場合の画像処理システム100の性能1212及び平均性能1214も示す。性能グラフ1200で示されたように、画像処理システム100は、8x8ブロックをセーブするときでも、汎用CPUにおける処理より遥かに速く(ある場合には数百倍も速く)処理を遂行する。
【0056】
図13は、汎用CPUの性能に比して、画像処理システム100がレンダーターゲットをセーブしないという仮定のもとで画像処理システム100の皮膚局所化性能を示すグラフ1300である。次のレンダーターゲットブロックレベルの性能が作図されている:8x8ブロック、プロット1302;16x16ブロック、プロット1304;32x32ブロック、プロット1306;64x64ブロック、プロット1308;及び128x128ブロック、プロット1310。又、この性能グラフ1300は、画像処理システム100がクオドツリー解決策を使用して皮膚を位置決めする場合の画像処理システム100の性能1312及び平均性能1314も示す。性能グラフ1300で示されたように、画像処理システム100は、汎用CPUにおける処理よりも遥かに速い(通常は、数百倍も速い)。
【0057】
図12及び13の異なる性能プロットは、レンダーターゲットをセーブすることに関連するだけでなく、GPUへドローコールを発行することにも関連したオーバーヘッドがあることを示している。例えば、図13(レンダーターゲットがセーブされないと仮定している)は、レンダーターゲットにわたり128x128ブロックについてドローコールを発行すると、8x8ブロックを使用してレンダーターゲットをカバーするために著しい数の付加的なドローコールを実行する場合よりも高い性能が生じることを示している。それでも、性能は、汎用CPUの場合より依然高く、且つ初期のパス中にレンダーターゲットをセーブせずに、8x8のブロックサイズにおいて非常に精度が高いという付加的な利益を含む。クオドツリー解決策は、中間の性能レベル(依然、汎用CPUの場合より遥かに高い)を生じる。というのは、この解決策は、ピクセルでいっぱいであるか又は空であるブロックを更に細分化する必要がないからである。クオドツリー解決策では、多くの場合に、最小ブロックサイズまで掘り下げる必要はない。
【0058】
図14は、ネットワーク1402に接続された通信インターフェイス1400を備えた画像処理システム100を示す。この画像処理システム100は、ネットワーク1402を経てサービス要求者1404と通信し、このサービス要求者は、例えば、ソース画像、確率テーブル、及び特徴検出及び/又は位置要求を画像処理システム100へ提出する。特徴検出要求は、皮膚検出要求であってもよいし、或いは危険な物質のような他の特性をソース画像において検出する要求であってもよい。このため、サービス要求者は、当該特徴を検出するための確率を確立する確率テーブル(例えば、危険な物質である幾つかのカラーに確率を指定する確率テーブル)を与えてもよい。サービス要求者1404は、例えば、ソース画像116において皮膚検出及び/又は局所化を要求する外部セキュリティシステム、監視システム、薬品システム、及び/又は多のシステムでよい。それとは別に、又はそれに加えて、画像処理システム100は、画像ソース1406からソース画像を得てもよい。画像ソース158は、ビデオフィード、デジタルカメラ、又は他の画像ソースを含んでもよい。
【0059】
又、サービス要求者1404は、他のデータを画像処理システム100に与えてもよい。例えば、各サービス要求者1404は、特定のアプリケーションに使用するための異なる特徴検出スレッシュホールド(例えば、皮膚スレッシュホールド132)を与えてもよい。又、サービス要求者1404は、レンダーターゲットサイズ上限128、レンダーターゲットサイズ下限130、又は他のパラメータを指定してもよい。例えば、サービス要求者1404がソース画像116における非常に正確な皮膚位置を要求する場合には、画像処理システム100は、比較的小さな(例えば、8x8、4x4、2x2又は1x1)レンダーターゲットサイズ下限130をセットしてもよい。サービス要求者1404があまり厳格でない精度要求を指定するときには、画像処理システム100は、大きなレンダーターゲットサイズ下限130をセットしてもよい。
【0060】
サービス要求者1404は、皮膚検出及び/又は位置データを種々のアプリケーションに使用することができる。例えば、画像処理システム100は、顔認識システムの前処理ステップとしてソース画像116において皮膚を検出し位置決めしてもよい。皮膚検出及び局所化に加えて、上述した画像処理システム100は、他の画像処理タスクに使用されてもよい。例えば、画像処理システム100は、空港やバスターミナルや官庁ビルや他の施設のセキュリティステーションに使用するために、有機化合物を検出し及び/又は位置決めするように構成されてもよい。この実施例では、確率テーブル114は、有機化合物サンプルの画像セットに基づいて構成されてもよい。
【0061】
別の実施例では、画像処理システム100は、衛星画像においてある地域、物体、又は他の細部を検出し及び/又は位置決めするように構成されてもよい。例えば、1組のマリファナ畑の画像サンプルに基づく確率テーブル114を使用して、画像処理システム100は、衛星画像又は高い高度の画像において他のマリファナ畑を検出し位置決めしてもよい。別の実施例として、画像処理システム100は、医療画像において特定の組織又は他の物質を検出するように構成されてもよい。
【0062】
本発明の種々の実施形態を説明したが、当業者であれば、本発明の範囲内で多数の他の実施形態が考えられることが明らかであろう。一例として、レンダーターゲットは、皮膚検出又は局所化の間に同じサイズに保たれるが(例えば、640x480キャンバスで、その上でCPUがテクスチャマッピングを実行する)、ドローコールがそのレンダーターゲット内でより小さなブロックを指定してもよい。換言すれば、他の実施形態では、レンダーターゲットそれ自体を細分化する必要はない。むしろ、ドローコールは、皮膚検出及び局所化テクスチャ処理のためにレンダーターゲットの部分を指定してもよい。従って、本発明は、特許請求の範囲及びその等効物以外で制約されることはない。
【図面の簡単な説明】
【0063】
【図1】ソース画像において皮膚を検出し局所化する画像処理システムを示す図である。
【図2】1組の皮膚サンプルに対するRGBカラー値のプロットを含むRGBカラースペースを示す図である。
【図3】1組の皮膚サンプルに対するY−Cb−Crカラー値のプロットを含むY−Cb−Crカラースペースと、Cb−Cr値のみに対する皮膚サンプルのプロットを含む二次元Cb−Crカラースペースとを示す図である。
【図4】図3に示すCb−Crカラースペースから得られる確率プロットを示す図である。
【図5】皮膚検出又は局所化のためのGPUを設定するために設定プログラムで行う動作を示す図である。
【図6】ソース画像に皮膚が存在するかどうか決定するために皮膚検出プログラムで行なう動作を示す図である。
【図7】ソース画像内で皮膚を位置決めするために皮膚位置プログラムで行なう動作を示す図である。
【図8】皮膚検出及び局所化を行なってソース画像内で皮膚ピクセルを識別するためにGPUにおいてピクセルシェーダー制御プログラムで行う動作を示す図である。
【図9】皮膚ピクセル及び次第に小さなレンダーターゲットを含むソース画像の一部分を示す図である。
【図10】皮膚ピクセル及び次第に小さなレンダーターゲットを含むソース画像の一部分を示す図である。
【図11】汎用CPUで局所化を完全に行なうのに比して、画像処理システムの皮膚局所化性能を示すグラフである。
【図12】汎用CPUの性能に比して、レンダーターゲットをセーブする画像処理システムの皮膚局所化性能を示すグラフである。
【図13】汎用CPUの性能に比して、画像処理システム100がレンダーターゲットをセーブしないという仮定のもとで画像処理システムの皮膚局所化性能を示すグラフである。
【図14】ネットワークに接続された通信インターフェイスを含む画像処理システムを示す図である。
【符号の説明】
【0064】
100:画像処理システム
102:システムプロセッサ
104:システムメモリ
106:グラフィック処理ユニット
108:設定プログラム
110:皮膚検出プログラム
112:皮膚位置プログラム
114:確率テーブル
116:ソース画像
118:咬合問合せ
120:皮膚検出フラグ
122:システムパラメータ
124:咬合結果
126:皮膚位置
128:レンダーターゲットサイズ上限
130:レンダーターゲットサイズ下限
132:皮膚スレッシュホールド
134:皮膚ピクセルカウント
136:テクスチャメモリ
138:ピクセルシェーダー
140:フレームバッファ
142:確率テクスチャ
144:画像テクスチャ
148:ピクセルシェーダー制御プログラム
152:処理されたピクセル
【技術分野】
【0001】
本発明は、画像処理に係る。より詳細には、本発明は、画像における皮膚検出及び局所化に係る。
【背景技術】
【0002】
画像技術の絶え間ないそして急速な開発は、それに対応して大きな需要を画像処理システムにもたらした。画像技術の広範囲な改良は、より大きく且つより高解像度の画像データセットを生じさせ、これは、ひいては、受け容れられるレベルのシステム応答性を維持するために、より高速で且つより効率的な処理システムを必要とする。同時に、薬品に対する警備から製造に至るまでの範囲の益々多数の産業が、近代的市場の需要と歩調を合わせるために画像処理に注意を向けることになった。
【0003】
例えば、皮膚を検出するための画像処理は、顔認識及び動き追跡を含む多数の警備産業アプリケーションにおける重要な第1ステップである。顔認識の場合には、セキュリティアプリケーションがある顔をデータベース内の顔と比較する前に、画像処理システムは、先ず、ビデオ又はスタティック画像が皮膚も含むかどうか決定しなければならない。画像が皮膚を含む場合には、画像処理システムは、その画像内のどこに皮膚が位置しているか及びそれが顔の皮膚であるかどうか決定しなければならない。更に、例えば、警備用カメラから30フレーム/秒で連続するビデオストリームを分析するためには、このような皮膚及び顔検出をリアルタイムで遂行することがしばしば要望される。
【0004】
過去において、画像処理システムの汎用中央処理ユニット(CPU)が皮膚検出を遂行していた。或いは又、特に、画像における皮膚を検出するために、コストが高く且つ高度にカスタマイズされた画像処理ハードウェアが時々設計され構築された。しかしながら、汎用CPUアーキテクチャーにおける年々の増分的進歩は、皮膚検出及び局所化のような特殊な画像処理ファンクションを遂行するための能力増加と直接的に相関していない。更に、CPUが皮膚検出に当てることのできるリソースには限度がある。というのは、CPUは、他の必要な汎用システムアプリケーション(例えば、ワードプロセッサ、スプレッドシート、及びコンピュータ支援型デザインプログラム)も実行しなければならないからである。
【発明の開示】
【発明が解決しようとする課題】
【0005】
それ故、皮膚検出及び局所化の過去の実施は、2つの比較的不満足な選択肢、即ち汎用CPUにより遂行される速度及び効率の低い処理か、或いは高コストで非常に複雑な高度にカスタマイズされたハードウェアか、に制限される。例えば、大都市全体にわたる警備用カメラの大量なロールアウトや、空港における増加されたセキュリティ審査を受け容れるように皮膚検出のための高度にカスタマイズされたハードウェアを設計し製造することは、非常にコストがかかり、実際的でないことが分かっている。まだ、これら及び他のアプリケーションは、高性能の画像処理解決策がないと、有効性が制限される。
【0006】
それ故、皮膚検出及び局所化のための改良された処理システムが要望される。
【課題を解決するための手段】
【0007】
画像処理システムは、非常に高速の皮膚検出及び局所化(localization)を与える。画像処理システムは、皮膚検出及び局所化処理の大部分を遂行するように、グラフィック処理ユニット(GPU)における特殊な処理技術を実施する。従って、メインシステムプロセッサは、他の重要なタスクを自由に遂行する。GPUは、高度に最適化されたテクスチャ処理アーキテクチャーであるために、検出及び局所化を加速する。従って、画像処理システムは、特に、高度にカスタマイズされた画像処理ハードウェアに依存する過去のシステムに比して、低廉な皮膚検出及び局所化解決策を導く。
【0008】
画像処理システムは、システムプロセッサと、GPUと、システムメモリと、皮膚検出プログラムとを備えている。GPUは、テクスチャメモリ及び多数のピクセルシェーダーを含む高度に最適化されたグラフィック処理アーキテクチャーを備えている。システムメモリは、最初に、確率テーブルと、皮膚を検出すべきところのソース画像とを記憶する。皮膚検出プログラムは、確率テーブル及びソース画像を、システムメモリからGPUのテクスチャメモリへアップロードする。次いで、皮膚検出プログラムは、ソース画像に対してレンダーターゲットを定義し、GPUへのドロー(draw)コールを発行する。このドローコールは、ピクセルシェーダーによりソース画像及び確率テーブルをレンダーターゲットにテクスチャマッピングするのを開始する。テクスチャマッピング動作は、皮膚スレッシュホールド(例えば、アルファテストスレッシュホールド)に関連して、レンダーターゲットでレンダリングされるピクセルのどれを皮膚ピクセルと考えるか決定する。
【0009】
ソース画像に皮膚が存在するかどうか決定するのに加えて、画像処理システムは、皮膚を位置決め(locate)することもできる。このため、画像処理システムは、皮膚位置プログラムを備えている。一実施形態では、皮膚位置プログラムは、ソース画像のブロックツリーサーチ(例えば、クオドツリーサーチ)を遂行する。以下に詳細に述べるように、ブロックツリーサーチを遂行する際に、皮膚位置プログラムは、GPUへドローコールを繰り返し発行して、ピクセルシェーダーが、確率テーブルを、ソース画像内に配置された次第に小さくなるレンダーターゲットへとテクスチャマップするようにさせる。皮膚位置プログラムは、皮膚ピクセルが見つかったソース画像内の位置をシステムメモリに記憶する。
【0010】
本発明の他のシステム、方法、特徴及び効果は、当業者であれば、添付図面及び以下の詳細な説明から明らかとなろう。この説明に含まれるこのような全ての付加的なシステム、方法、特徴及び効果は、本発明の範囲内に包含され、特許請求の範囲により保護されるものとする。
【0011】
本発明は、添付図面及び以下の説明から良く理解できよう。図面中のコンポーネントは、必ずしも正しいスケールではなく、本発明の原理を例示するときには強調がなされている。更に、異なる図面全体にわたり、対応部分は、同じ参照番号で示されている。
【発明を実施するための最良の形態】
【0012】
図示された要素は、以下に詳細に述べるように機能する。しかしながら、詳細な説明を行なう前に、特定実施形態の説明であるのに関わらず、以下の説明は、全て、例示的なものであり、それに限定されるものでないことに注意されたい。例えば、実施形態の選択された観点、特徴又は要素がメモリに記憶されるものとして示されるが、画像処理システムと一貫したシステム及び方法の全部又は一部分が、他のマシン読み取り可能な媒体、例えば、ハードディスク、フロッピーディスク及びCD−ROMのような二次記憶装置、ネットワークから受信される信号、或いは現在知られている又は以後開発される他の形式のROM又はRAMに記憶され、それらにわたって配布され、又はそれらから読み取られてもよい。
【0013】
更に、画像処理システムの特定のコンポーネントについて説明するが、これらシステムと一貫する方法、システム及び製品が、付加的なコンポーネント又は異なるコンポーネントを含んでもよい。例えば、システムプロセッサは、マイクロプロセッサ、マイクロコントローラ、特定用途向け集積回路(ASIC)、個別ロジック、或いは他の形式の回路又はロジックの組み合せとして実施されてもよい。同様に、メモリは、DRAM、SRAM、フラッシュ、又は他の形式のメモリでよい。パラメータ(例えば、スレッシュホールド)、データベース、テーブル、及び他のデータ構造体は、個別に記憶され管理されてもよいし、単一のメモリ又はデータベースに組み込まれてもよいし、或いは多数の異なる方法で論理的及び物理的に編成されてもよい。プログラムは、単一のプログラムの一部分でもよいし、個別のプログラムでもよいし、或いは多数のメモリ及びプロセッサにわたって分布されてもよい。
【0014】
図1は、リアルタイムより高速の皮膚検出及び局所化を与える画像処理システム100を示す。この画像処理システム100は、システムプロセッサ102と、システムメモリ104と、GPU106とを備えている。GPUは、例えば、カリフォルニア州サンタクララのNVIDIA、又はマサチューセッツ州マールボローのATIリサーチインクから入手できるグラフィックプロセッサでよい。以下に詳細に述べるように、システムプロセッサ102は、システムメモリ104からの設定プログラム108、皮膚検出プログラム110及び皮膚位置プログラム112を実行する。システムメモリ104は、確率テーブル114、ソース画像116、及び咬合(occlusion)問合せ118を記憶する。又、システムメモリ104は、皮膚検出フラグ120、システムパラメータ122、咬合結果124、及び皮膚位置126も記憶する。システムパラメータ122は、レンダーターゲットサイズ上限128、レンダーターゲットサイズ下限130、及び皮膚スレッシュホールド132を含むことができる。又、メモリは、GPU106から得られた咬合結果124も記憶する。咬合結果124は、皮膚ピクセルカウント134を与えてもよい。
【0015】
GPU106は、テクスチャメモリ136、多数のパラレルピクセルシェーダー138、及びフレームバッファ140を備えている。テクスチャメモリ136は、確率テクスチャ142及び画像テクスチャ144を記憶する。多数のパラレルピクセルシェーダー138は、システムプロセッサ102からのドローコールに応答して、確率テクスチャ142及び画像テクスチャ144を処理する。多数のパラレルピクセルシェーダー138は、ピクセルシェーダー制御プログラム148を実行する。アルファテスト回路150は、ピクセルシェーダー138により処理されたピクセルをフィルタする。特に、アルファテスト回路150は、アルファテスト154を適用して、テクスチャ処理されたピクセルを保持すべきか破棄すべきか決定する。システムプロセッサ102は、アルファテスト154に対する皮膚スレッシュホールド132又は他のフィルタパラメータを確立することができる。皮膚スレッシュホールド132は、それより低いと、テクスチャ処理されたピクセルがおそらく皮膚ピクセルとしてカウントするに充分な皮膚でない確率を表わす。GPU106は、このようなピクセルを破棄するが、処理されたピクセル152としてアルファテスト154にパスするピクセルをフレームバッファ140に記憶する。
【0016】
ソース画像116は、ビデオストリーム、デジタルカメラ又は他のソースから得ることができる。ソース画像116は、RGBカラースペースのような特定のカラースペースにおいて表わされる画像データを含む。しかしながら、画像処理システム100は、画像データが他のカラースペースにおいて表わされるような画像を処理してもよい。画像処理システム100は、ソース画像116を得て、処理のためにシステムメモリ104に記憶する。
【0017】
システムプロセッサ102は、皮膚検出プログラム110及び/又は皮膚位置プログラム112を実行するための先駆体として設定プログラム108を実行する。プログラム112及び114は、確率テーブル114及びソース画像116をGPU106に関連して使用して、ソース画像116において皮膚を迅速に検出し及び/又は位置決めする。設定プログラム108は、テクスチャマッピングオペレーションの準備において確率テーブル114及びソース画像116をGPU106に与える。
【0018】
画像処理システム100は、皮膚を含む画像の分析に基づいて構成された確率テーブル114を記憶する。確率テーブル114は、確率テーブル114のカラー座標インデックス(例えば、Cb−Cr)で表わされた特定のピクセルに対して、ピクセルが皮膚ピクセルである確率を記憶する。Cb及びCrの各考えられる値は、皮膚確率が記憶された確率テーブル114のカラー位置を定義する。確率テーブル114がシステム100に予め確立されてもよいし、或いは画像処理システム100が、図14に示して説明するソースのような外部ソースから確率テーブル114を得てもよい。システムプロセッサ102は、皮膚検出及び位置決めを特定の確率基準に適応させるために、処理中に確率テーブル114を動的に変更してもよい。
【0019】
図2は、赤軸204、緑軸206及び青軸208に沿った1組の既知の皮膚サンプル202に対するRGBカラー値のプロット200を示す。RGBプロット202は、RGBカラースペース全体にわたる皮膚サンプルの顕著なしみ(smear)を示している。各軸204、206及び208に沿った分散(variance)は、皮膚ピクセルと非スピンピクセルとの間の区別をRGBカラースペースにおいて困難なものにする。しかしながら、RGBカラー値が表わされるか又はY−Cb−Crカラースペースへ変換されるときには、皮膚ピクセルは、皮膚ピクセルと非皮膚ピクセルとの間の明確な区別を指して局所化する。
【0020】
図3は、1組の皮膚サンプル202に対するY−Cb−Crカラー値のプロット300と、Cb−Cr値のみに対する皮膚サンプル202の二次元プロット302とを示す。Y−Cb−Crプロット300は、Cb及びCr軸304及び306に沿った皮膚サンプル202の緊密なクラスター状態を示す。ルミナンスを表わすY軸308は、皮膚サンプルのY−Cb−Crプロット300内の最大量の分散を示す。ルミナンス値の分散は、人間の目にはほぼ見えない。ルミナンス値が下がると、皮膚サンプル202の二次元Cb−Crプロットが生じる。皮膚サンプル202は、Cb−Crカラースペースにおける少量の分散と共にクラスター状態になる傾向がある。
【0021】
図4は、図3に示す二次元Cb−Crカラースペース302から得た確率テーブル400を示す。この確率テーブル400は、Cb及びCr(X及びZ)軸402及び404から形成されたカラー座標インデックスに沿って設定される。各インデックス位置は、Cb−Crカラースペースにおける考えられるカラーを定義する。確率テーブル400は、各カラー位置においてY軸406に沿った皮膚確率(例えば、皮膚確率408)を確立する。
【0022】
確率テーブル400は、皮膚サンプルの組202のCb−Crカラー値を、X及びZ軸402及び404で表わされた255x255テーブルへとビンする(binning)ことにより構成されてもよい。Y軸で表わされた皮膚確率は、各ビンされた値を皮膚サンプルの全数で除算することにより決定されてもよい。Cb−Crカラーモデルにおける皮膚サンプル202のクラスター特性は、確率テーブル400に示す比較的大きな皮膚確率408を生じさせる。
【0023】
図1に戻ると、設定プログラム108は、確率テーブル114及びソース画像116をGPU106へアップロードする。GPU106は、確率テーブル114を確率テクスチャ142として記憶すると共に、ソース画像116を画像テクスチャ144としてテクスチャメモリ136に記憶する。又、設定プログラム108は、アルファテスト回路150に対するアルファパラメータ(例えば、皮膚スレッシュホールド132)を決定し、そしてそれらパラメータをGPU106のアルファテスト回路150にアップロードする。アルファテスト回路150は、皮膚スレッシュホールド132を、ピクセルシェーダー138により行なわれたテクスチャ決定に対して比較して、テクスチャ処理されたピクセルを皮膚ピクセルと考えるべきかどうか決定する。設定プログラム108により遂行される動作が図5に示されており、これについて以下に詳細に説明する。
【0024】
皮膚検出プログラム110は、ソース画像116が皮膚を含むかどうか検出する。皮膚検出プログラム110は、多数のパラレルピクセルシェーダー138においてテクスチャマッピングを開始するためにドローコールを発行する。又、皮膚検出プログラム110は、皮膚ピクセルカウント134を決定するために咬合問合せ118をGPU106へ発行する。皮膚ピクセルカウント134は、アルファテスト154にパスして皮膚ピクセルと考えられるピクセルの数である。これらのピクセルは、フレームバッファ140に書き込まれてもよい。皮膚検出プログラム110は、咬合結果124が非ゼロの皮膚ピクセルカウント134を返送するかどうかに基づいて皮膚検出フラグ120をセット又はクリアする。従って、皮膚検出プログラム110は、高速フィルタとして働いて、皮膚がソース画像116に少しでも存在するかどうか決定する。皮膚検出プログラム110により行われる動作が図6に示され、これについて以下に詳細に述べる。
【0025】
皮膚位置プログラム112は、ソース画像116において皮膚を位置決めする。一実施形態では、皮膚位置プログラム112は、ソース画像116のブロックツリーサーチを実行して、皮膚ピクセルを位置決めする。皮膚位置プログラム112は、最初に、レンダーターゲットサイズ上限128により定義されたソース画像116の領域をサーチする。皮膚ピクセルが検出される領域では、皮膚位置プログラム112は、その領域を細分化し、これらサブ領域内のピクセルをサーチする。皮膚位置プログラム112は、サブ領域のサイズがレンダーターゲットサイズ下限130に等しくなるまで細分化及びサーチを続けることができる。
【0026】
このように、皮膚位置プログラム112は、レンダーターゲットのサイズ下限に対応する解像度でソース画像116内において皮膚を効率的に且つ正確に位置決めする。皮膚位置プログラム112は、皮膚位置126(例えば、非ゼロの皮膚ピクセルカウントを有するレンダーターゲットの位置)をシステムメモリ104に記憶する。皮膚位置プログラム112により遂行される動作が図7に示されており、これについて以下に詳細に説明する。
【0027】
皮膚検出プログラム110及び皮膚位置プログラム112は、多数のパラレルピクセルシェーダー138においてテクスチャマッピングを開始するためにGPU106へドローコールを発行するインストラクションを含む。多数のパラレルピクセルシェーダー138は、確率テクスチャ142及び画像テクスチャ144をレンダーターゲットにテクスチャマッピングする。レンダーターゲットは、レンダーターゲットを境界定めする頂点(例えば、左上及び右下の頂点)により画成することができる。
【0028】
プログラム110及び112は、レンダーターゲットをテクスチャマッピングすることから生じる咬合結果124を受け取る。この咬合結果124は、アルファテスト回路150により適用されるアルファテストにパスする皮膚ピクセルの数を指定する。プログラム110及び112は、皮膚が見つかった位置をセーブすることができる(例えば、ソース画像116に対してレンダーターゲットの位置をセーブすることにより)。皮膚検出及び/又は位置プログラム112及び114を実行した後に、画像処理システム100は、スピンピクセルカウント134又は皮膚位置126を他のアプリケーションに報告してもよいし、或いは皮膚ピクセルカウント134又は皮膚位置126を他の目的で使用してもよい。
【0029】
図5は、皮膚検出又は局所化のためにGPU106を設定するために設定プログラム108が行なう動作500を示す。この設定プログラム108は、システムメモリ104から確率テーブル114を得る(動作502)。次いで、設定プログラム108は、確率テーブル114を確率テクスチャ142としてGPUのテクスチャメモリ136へアップロードする(動作504)。又、設定プログラム108は、システムメモリ104からソース画像116を得(動作506)、そしてソース画像116を画像テクスチャ144としてGPUテクスチャメモリ136へアップロードする(動作508)。従って、画像処理システム10は、GPU106における多数のパラレルピクセルシェーダーの速度及びパラレル処理能力を適用して、ソース画像116において皮膚を検出し位置決めすることができる。
【0030】
又、設定プログラム108は、アルファパラメータを決定することもできる(動作510)。アルファパラメータは、アルファテスト回路150においてアルファテスト154に使用される皮膚スレッシュホールド132又は他の基準を含むことができる。アルファテスト回路150は、テクスチャ処理されたピクセルが皮膚ピクセルとして適切であるかどうか決定する。又、図14を参照して以下に詳細に述べるように、設定プログラム108は、画像処理システム100によりソース画像116における皮膚検出又は位置を要求するシステムのような外部システムにより与えられる値に基づいてアルファパラメータを決定することもできる。設定プログラム108は、皮膚検出又は局所化の前にGPU106においてアルファテスト154を確立する(動作512)。
【0031】
図6は、ソース画像116に皮膚が存在するかどうか決定するために皮膚検出プログラム110が行なう動作600を示す。皮膚検出プログラム110は、設定プログラム108の実行を開始する(動作602)。上述したように、設定プログラム108は、確率テーブル114及びソース画像116を、各々、確率テクスチャ142及び画像テクスチャ144としてテクスチャメモリ136へアップロードする。
【0032】
皮膚検出プログラム110は、GPU106へ咬合問合せ118を発行し、皮膚ピクセルカウント134を要求する(動作604)。咬合問合せ118は、所与のレンダーターゲットに対してアルファテスト154にパスしたピクセルの数を返送する。又、皮膚検出プログラム110は、初期レンダーターゲットも定義する(動作606)。このため、皮膚検出プログラム110は、ソース画像116に対するレンダーターゲットのサイズ及び位置を決定する。初期レンダーターゲットは、サイズ上限128(例えば、ソース画像116の全サイズ)を有する長方形でもよいし、或いはサイズ下限130(例えば、単一ピクセル)と同程度に小さくてもよい。
【0033】
皮膚検出プログラム110は、皮膚検出フラグ120をクリアし(動作608)、そして現在レンダーターゲットへの確率テクスチャ142及び画像テクスチャ144のテクスチャマッピングを開始する(動作610)。これを行なうために、皮膚検出プログラム110は、GPU106へのドローコールを発行し、ピクセルシェーダー制御プログラム148の制御のもとで多数のパラレルピクセルシェーダー138によるテクスチャマッピングを開始する。GPU106は、レンダーターゲットにおける各ピクセルのトランスパレンシーを決定し、アルファテスト154を遂行し、そして皮膚ピクセルカウント134を含む咬合結果124を返送する。皮膚検出プログラム110は、現在レンダーターゲットの皮膚ピクセルカウント134を含む咬合結果124を受け取る(動作612)。
【0034】
皮膚ピクセルカウントが非ゼロである場合には、皮膚検出プログラム100は、皮膚検出フラグ120をセットし(動作614)、そして皮膚が配置されたレンダーターゲット位置をセーブすることができる(動作616)。他の実施形態では、皮膚検出フラグ120は、スレッシュホールド数の皮膚ピクセルが位置決めされた(例えば、画像の5%以上が皮膚を含む)ときにセットされてもよい。皮膚検出プログラム100が画像の他の部分において皮膚をサーチする場合には、皮膚検出プログラム100は、新たなレンダーターゲット(例えば、より大きなレンダーターゲット、より小さなレンダーターゲット、又はレンダーターゲットに対する新たな位置)を定義し(動作618)、そして現在レンダーターゲットにおいてテクスチャマッピングを開始する(動作610)。
【0035】
図7は、ソース画像116内で皮膚を位置決めするために皮膚位置プログラム112が行なう動作を示す。以下の例は、皮膚位置プログラム112がソース画像116全体にわたり皮膚を位置決めすることを仮定しているが、皮膚位置プログラム112は、ソース画像116の1つ以上のサブ部分において皮膚を選択的に位置決めしてもよいことに注意されたい。皮膚位置プログラム112は、設定プログラム108の実行を開始する(動作702)。上述したように、設定プログラム108は、確率テーブル114及びソース画像116を、各々、確率テクスチャ142及び画像テクスチャ144としてテクスチャメモリ136へアップロードする。又、設定プログラム108は、アルファパラメータを決定し、そしてGPU106においてアルファテスト154を確立することもできる。
【0036】
皮膚位置プログラム112は、レンダーターゲットのサイズ上限128を定義する(動作704)。皮膚位置プログラム112は、レンダーターゲットのサイズ上限128を、全ソース画像116のサイズとして、又はソース画像116のサブ領域として定義することもできる。又、皮膚位置プログラム112は、レンダーターゲットのサイズ下限130も定義する(動作706)。レンダーターゲットのサイズ下限130は、レンダーターゲットのサイズの下部境界を決定する(例えば、64x64ピクセル、16x16ピクセル、1x1ピクセル、又は他の下部境界)。レンダーターゲットのサイズが減少するにつれて、位置精度が高くなる。
【0037】
皮膚位置プログラム112は、咬合問合せ118をGPU106へ発行する(動作708)。皮膚位置プログラム112は、初期レンダーターゲットをセットする(動作710)。例えば、皮膚位置プログラム112は、初期レンダーターゲットをレンダーターゲットサイズ上限128にセットし、そしてそのレンダーターゲットに対する位置(例えば、ソース画像の左上角)を選択することができる。
【0038】
皮膚位置プログラム112は、GPU106へドローコールを行い、現在レンダーターゲットへの確率テクスチャ142及び画像テクスチャ144のテクスチャマッピングを開始する(動作712)。GPUにおけるアルファテストは、テクスチャマッピングされたピクセルのトランスパレンシー値に対するフィルタとして動作し、皮膚ピクセルとして適切なテクスチャマッピングされたピクセルの数を決定する。皮膚ピクセルカウント134は、咬合結果124において返送される。
【0039】
レンダーターゲットが皮膚ピクセルでいっぱいになるか、又は皮膚ピクセルが空であるときには、皮膚位置プログラム112は、レンダーターゲットを細分化しない。レンダーターゲットが皮膚ピクセルでいっぱいであるときには、皮膚位置プログラム112は、レンダーターゲット位置を皮膚位置126としてセーブする(動作718)。又、皮膚位置プログラム112は、レンダーターゲットのコンテンツをメモリ104にセーブしてもよい。処理されるべきソース画像が更に残っている場合には、皮膚位置プログラム112は、新たなレンダーターゲットをセットし(動作720)(例えば、レンダーターゲットをソース画像に対して新たな位置へ移動させる)、そして再びテクスチャマッピングを開始する。
【0040】
レンダーターゲットが皮膚ピクセルで一部分いっぱいである場合には、皮膚位置プログラム112は、レンダーターゲットがサイズ下限130に達したかどうか決定する。もしそうであれば、皮膚位置プログラム112は、皮膚位置をセーブし(動作718)、そして処理されるべきソース画像が更に残っているかどうか決定する。さもなければ、皮膚位置プログラムは、レンダーターゲットを細分化する(動作722)。例えば、クオドツリーサーチ戦略を適用するときには、皮膚位置プログラム112は、レンダーターゲットを、4つのより小さなレンダーターゲットに細分化する。それ故、新たな、より小さなレンダーターゲットがセットされ(動作720)、そして皮膚位置プログラム112が再びテクスチャマッピングを開始する。
【0041】
上述した実施例では、皮膚位置プログラム112は、皮膚ピクセルが全く空であるか又は皮膚ピクセルでいっぱいであるレンダーターゲットは細分化しない。他の実施形態では、皮膚位置プログラム112は、部分的に埋められたレンダーターゲットを、ゼロの皮膚ピクセル又は全部皮膚ピクセルを含むかのように処理するよう構成されてもよい。例えば、皮膚位置プログラム112は、ゼロからスレッシュホールド数までの皮膚ピクセルを含むレンダーターゲットを、収容皮膚ピクセルがゼロのレンダーターゲットであるかのように処理してもよい。同様に、皮膚位置プログラム112は、所与のスレッシュホールド数の皮膚ピクセルを含むものから全部皮膚ピクセルを含むものまでのレンダーターゲットを、レンダーターゲットが皮膚ピクセルでいっぱいであるかのように処理してもよい。
【0042】
又、上述した皮膚位置プログラム112は、予想されるドローコールを使用して皮膚位置決めを実行してもよい。皮膚位置プログラム112に使用される予想されるドローコールは、特定のレンダーターゲットを描写し、そのレンダーターゲットにおいて皮膚が検出された場合には、そのレンダーターゲットをサブ領域に細分化し、そしてそれらサブ領域を描写するようにGPUに命令するドローコールである。従って、皮膚位置プログラム112は、同じ領域を描写するために5つまでのドローコールを発行するのではなく、レンダーターゲット及び4つのより小さなレンダーターゲットを描写するために1つのドローコールを発行する。
【0043】
図8は、皮膚検出及び局所化を行なってソース画像116において皮膚ピクセルを識別するためにGPU106においてピクセルシェーダー制御プログラム148が行なう動作を示す。ピクセルシェーダー制御プログラム148は、画像テクスチャ144からピクセルを得る(動作802)。ピクセルシェーダー制御プログラム148は、ピクセルを、画像テクスチャ144が存在するカラースペース、例えば、RGBカラースペースから、確率テクスチャ142が存在するカラースペース、例えば、Cb−Crカラースペースへ変換する(動作804)。変換されたピクセルは、ピクセルシェーダー制御プログラム148が確率テクスチャ142へインデックスする確率座標となる。
【0044】
ピクセルシェーダー制御プログラム148は、確率座標を確率テクスチャ142へインデックスすることによりピクセルに対する皮膚確率を決定する(動作806)。上述したテクスチャマッピングから生じるインデックスされた値は、RGBA値でよく、ここで、Aは、ピクセルのCb−Cr値が皮膚である確率を含む。ピクセルシェーダー制御プログラム148は、出力ピクセルのアルファ値を、確率テクスチャから得た皮膚確率にセットする(動作808)。この場合には、RGB値は、ピクセルが含む皮膚の形式のような他のデータを含んでもよい。それにより得られるインデックスされた値は、ピクセルが皮膚を含む確率を含む1値成分テクスチャでもよい。これらの例において、ピクセルシェーダー制御プログラム148は、A値を、インデックスされたピクセルのトランスパレンシーとしてセットする。しかしながら、ピクセルシェーダー制御プログラム148は、ピクセルに対するレンダリングされたピクセル出力値(例えば、トランスパレンシー値)として、確率テクスチャ142の他の軸に他の成分を出力してもよい。
【0045】
次いで、ピクセルシェーダー制御プログラム148は、テクスチャマッピングされたピクセル152を出力し(動作810)、これは、次いで、ピクセルが皮膚ピクセルとして適切であるかどうか決定するためにアルファテストを受ける。以下のテーブル1は、RGBをCb−Crへと変換するピクセルシェーダー制御プログラムの一例を示し、ここで、「MainTexture」は、画像テクスチャ144を指し、「dot」は、ドット積演算であり、そして「Tex2D」は、確率テクスチャ142を指す。
【0046】
テーブル2は、立体マップへと配列された6つの2Dテクスチャをインデックスするように、3D方向ベクトルを使用して、テクスチャ処理されたピクセルが決定されるピクセルシェーダー制御プログラム148の別の例を示す。立体マップテクスチャ構造は、三次元立体の辺を各々表わす6つのテクスチャのセットである。ピクセルシェーダー制御プログラムは、3成分RGB値をベクトルとして使用して、立体の中心から立体壁のスポットを指すことができる。
【0047】
図9及び10は、皮膚ピクセル902と、レンダーターゲット904、906、908及び910と、次第に小さくなるレンダーターゲット1000、1002、1004及び1006とを含むソース画像900の48x48ピクセル部分の実施例を示す。図9及び10は、ソース画像900内で皮膚を位置決めするために皮膚位置プログラム112が行なうステップを示す。この実施例では、皮膚位置プログラム112は、レンダーターゲットのサイズ上限128を48x48にセットすると共に、レンダーターゲットのサイズ下限130を12x12にセットする。皮膚位置プログラム112は、ソース900の48x48部分を初期レンダーターゲットとしてセットする。皮膚位置プログラム112は、初期レンダーターゲット900への確率テクスチャ142及び画像テクスチャ144のテクスチャマッピングを開始する。
【0048】
皮膚位置プログラム112は、初期レンダーターゲット900が、ゼロより多いが全部より少ない皮膚ピクセル902を含むことを決定する。その結果、皮膚位置プログラム112は、初期レンダーターゲット900を、4つのより小さな24x24のサブ領域904−910に細分化する。皮膚位置プログラム112は、左上のサブ領域904を新たなレンダーターゲットとしてセットし、そしてレンダーターゲット904に関してテクスチャマッピングを開始する。
【0049】
皮膚位置プログラム112は、レンダーターゲット904が全皮膚ピクセル902を含むことを決定する。皮膚位置プログラム112は、皮膚位置126をシステムメモリ104に記憶する。皮膚位置プログラム112は、右上のサブ領域906を新たなレンダーターゲットとしてセットする。というのは、皮膚位置プログラム112は、細分化されたレンダーターゲット900全体をまだ処理していないからである。皮膚位置プログラム112は、レンダーターゲット906においてテクスチャマッピングを開始し、そしてそれがゼロの皮膚ピクセル902を含むことを決定する。皮膚検出位置112は、新たなレンダーターゲットとして左下のサブ領域908へ移動し、そしてレンダーターゲット908もゼロの皮膚ピクセル902を含むことを決定する。
【0050】
次いで、皮膚位置プログラム112は、新たなレンダーターゲットとして右下のサブ領域910へ移動し、そしてレンダーターゲット910においてテクスチャマッピングを開始した後に、レンダーターゲット910が、ゼロより多いが全部より少ない皮膚ピクセル902を含むことを決定する。レンダーターゲット910、24x24ピクセルは、レンダーターゲットサイズ下限130に達していない。従って、皮膚検出プログラム110は、レンダーターゲット910を細分化する(この例では、4つの象限に)。
【0051】
図10は、次第に小さな12x12のサブ領域1000−1006へ細分化されたレンダーターゲット910を示している。皮膚位置プログラム112は、次第に小さなサブ領域1000−1006の1つを新たなレンダーターゲットとしてセットする。この実施例では、皮膚位置プログラム112は、次第に小さなサブ領域1000を新たなレンダーターゲットとしてセットする。
【0052】
レンダーターゲット1000がゼロの皮膚ピクセル902を含み、且つ以前に細分化されたレンダーターゲット910の全部未満が処理されたと決定された後に、皮膚位置プログラム112は、次第に小さなサブ領域1002を新たなレンダーターゲットとしてセットする。皮膚位置プログラム112は、レンダーターゲット1002が全ての皮膚ピクセル902を含むと決定し、そして皮膚位置をシステムメモリ104に記憶する。皮膚位置プログラム112は、次第に小さなサブ領域1004を新たなレンダーターゲットとしてセットする。皮膚位置プログラム112は、レンダーターゲット1004が、ゼロより多いが全部より少ない皮膚ピクセル902を含むことを決定する。又、皮膚位置プログラム112は、レンダーターゲット1004のサイズがレンダーターゲットのサイズ下限130に等しいことも決定する。
【0053】
皮膚位置プログラム112は、皮膚位置をシステムメモリ104に記憶する。以前に細分化されたレンダーターゲット910の全部未満が処理されているので、皮膚位置プログラム112は、次第に小さなサブ領域1006を新たなレンダーターゲットとしてセットする。皮膚位置プログラム112は、レンダーターゲット1006が、ゼロより多いが全部より少ない皮膚ピクセル902を含むことを決定する。皮膚位置プログラム112は、レンダーターゲット1006を、更に細分化するのではなく、システムメモリ104に記憶する。というのは、レンダーターゲット1006のサイズが、レンダーターゲットのサイズ下限130に等しいからである。従って、皮膚位置プログラム112は、ソース画像900の一部分に存在する皮膚ピクセル902の位置を決定する。
【0054】
図11は、局所化を完全に汎用CPUにおいて遂行するのに比して、画像処理システム100の皮膚局所化性能を示すグラフ1100である。この性能グラフ1100は、近代的なGPU106を使用して達成される性能プロット1102−1112を示す。この性能プロット1102、1106及び1110は、レンダーターゲットがセーブされない異なるGPUを使用するシステム100の性能を示す。性能プロット1106、1108及び1112は、レンダーターゲットがメモリ104にセーブされる異なるGPUを使用するシステム性能を示す。図11に示すように、画像処理システム100を使用して皮膚を位置決めすることで、汎用CPUで行なわれる皮膚位置決めの性能プロット1114に比して、著しい性能改善が得られる(ある場合には、数百倍も高速である)。
【0055】
図12は、汎用CPUの性能に比して、レンダーターゲットをセーブする画像処理システム100の皮膚局所化性能を示すグラフ1200である。この性能グラフ1200は、画像処理システム100が、次のレンダーターゲットブロックレベルのレンダーターゲットをセーブするときに、画像処理システム100に対する異なる性能プロット1202−1214を示している:8x8ブロック、プロット1202;16x16ブロック、プロット1204;32x32ブロック、プロット1206;64x64ブロック、プロット1208;及び128x128ブロック、プロット1210。又、この性能グラフ1200は、画像処理システム100がクオドツリー解決策を使用して皮膚を位置決めする場合の画像処理システム100の性能1212及び平均性能1214も示す。性能グラフ1200で示されたように、画像処理システム100は、8x8ブロックをセーブするときでも、汎用CPUにおける処理より遥かに速く(ある場合には数百倍も速く)処理を遂行する。
【0056】
図13は、汎用CPUの性能に比して、画像処理システム100がレンダーターゲットをセーブしないという仮定のもとで画像処理システム100の皮膚局所化性能を示すグラフ1300である。次のレンダーターゲットブロックレベルの性能が作図されている:8x8ブロック、プロット1302;16x16ブロック、プロット1304;32x32ブロック、プロット1306;64x64ブロック、プロット1308;及び128x128ブロック、プロット1310。又、この性能グラフ1300は、画像処理システム100がクオドツリー解決策を使用して皮膚を位置決めする場合の画像処理システム100の性能1312及び平均性能1314も示す。性能グラフ1300で示されたように、画像処理システム100は、汎用CPUにおける処理よりも遥かに速い(通常は、数百倍も速い)。
【0057】
図12及び13の異なる性能プロットは、レンダーターゲットをセーブすることに関連するだけでなく、GPUへドローコールを発行することにも関連したオーバーヘッドがあることを示している。例えば、図13(レンダーターゲットがセーブされないと仮定している)は、レンダーターゲットにわたり128x128ブロックについてドローコールを発行すると、8x8ブロックを使用してレンダーターゲットをカバーするために著しい数の付加的なドローコールを実行する場合よりも高い性能が生じることを示している。それでも、性能は、汎用CPUの場合より依然高く、且つ初期のパス中にレンダーターゲットをセーブせずに、8x8のブロックサイズにおいて非常に精度が高いという付加的な利益を含む。クオドツリー解決策は、中間の性能レベル(依然、汎用CPUの場合より遥かに高い)を生じる。というのは、この解決策は、ピクセルでいっぱいであるか又は空であるブロックを更に細分化する必要がないからである。クオドツリー解決策では、多くの場合に、最小ブロックサイズまで掘り下げる必要はない。
【0058】
図14は、ネットワーク1402に接続された通信インターフェイス1400を備えた画像処理システム100を示す。この画像処理システム100は、ネットワーク1402を経てサービス要求者1404と通信し、このサービス要求者は、例えば、ソース画像、確率テーブル、及び特徴検出及び/又は位置要求を画像処理システム100へ提出する。特徴検出要求は、皮膚検出要求であってもよいし、或いは危険な物質のような他の特性をソース画像において検出する要求であってもよい。このため、サービス要求者は、当該特徴を検出するための確率を確立する確率テーブル(例えば、危険な物質である幾つかのカラーに確率を指定する確率テーブル)を与えてもよい。サービス要求者1404は、例えば、ソース画像116において皮膚検出及び/又は局所化を要求する外部セキュリティシステム、監視システム、薬品システム、及び/又は多のシステムでよい。それとは別に、又はそれに加えて、画像処理システム100は、画像ソース1406からソース画像を得てもよい。画像ソース158は、ビデオフィード、デジタルカメラ、又は他の画像ソースを含んでもよい。
【0059】
又、サービス要求者1404は、他のデータを画像処理システム100に与えてもよい。例えば、各サービス要求者1404は、特定のアプリケーションに使用するための異なる特徴検出スレッシュホールド(例えば、皮膚スレッシュホールド132)を与えてもよい。又、サービス要求者1404は、レンダーターゲットサイズ上限128、レンダーターゲットサイズ下限130、又は他のパラメータを指定してもよい。例えば、サービス要求者1404がソース画像116における非常に正確な皮膚位置を要求する場合には、画像処理システム100は、比較的小さな(例えば、8x8、4x4、2x2又は1x1)レンダーターゲットサイズ下限130をセットしてもよい。サービス要求者1404があまり厳格でない精度要求を指定するときには、画像処理システム100は、大きなレンダーターゲットサイズ下限130をセットしてもよい。
【0060】
サービス要求者1404は、皮膚検出及び/又は位置データを種々のアプリケーションに使用することができる。例えば、画像処理システム100は、顔認識システムの前処理ステップとしてソース画像116において皮膚を検出し位置決めしてもよい。皮膚検出及び局所化に加えて、上述した画像処理システム100は、他の画像処理タスクに使用されてもよい。例えば、画像処理システム100は、空港やバスターミナルや官庁ビルや他の施設のセキュリティステーションに使用するために、有機化合物を検出し及び/又は位置決めするように構成されてもよい。この実施例では、確率テーブル114は、有機化合物サンプルの画像セットに基づいて構成されてもよい。
【0061】
別の実施例では、画像処理システム100は、衛星画像においてある地域、物体、又は他の細部を検出し及び/又は位置決めするように構成されてもよい。例えば、1組のマリファナ畑の画像サンプルに基づく確率テーブル114を使用して、画像処理システム100は、衛星画像又は高い高度の画像において他のマリファナ畑を検出し位置決めしてもよい。別の実施例として、画像処理システム100は、医療画像において特定の組織又は他の物質を検出するように構成されてもよい。
【0062】
本発明の種々の実施形態を説明したが、当業者であれば、本発明の範囲内で多数の他の実施形態が考えられることが明らかであろう。一例として、レンダーターゲットは、皮膚検出又は局所化の間に同じサイズに保たれるが(例えば、640x480キャンバスで、その上でCPUがテクスチャマッピングを実行する)、ドローコールがそのレンダーターゲット内でより小さなブロックを指定してもよい。換言すれば、他の実施形態では、レンダーターゲットそれ自体を細分化する必要はない。むしろ、ドローコールは、皮膚検出及び局所化テクスチャ処理のためにレンダーターゲットの部分を指定してもよい。従って、本発明は、特許請求の範囲及びその等効物以外で制約されることはない。
【図面の簡単な説明】
【0063】
【図1】ソース画像において皮膚を検出し局所化する画像処理システムを示す図である。
【図2】1組の皮膚サンプルに対するRGBカラー値のプロットを含むRGBカラースペースを示す図である。
【図3】1組の皮膚サンプルに対するY−Cb−Crカラー値のプロットを含むY−Cb−Crカラースペースと、Cb−Cr値のみに対する皮膚サンプルのプロットを含む二次元Cb−Crカラースペースとを示す図である。
【図4】図3に示すCb−Crカラースペースから得られる確率プロットを示す図である。
【図5】皮膚検出又は局所化のためのGPUを設定するために設定プログラムで行う動作を示す図である。
【図6】ソース画像に皮膚が存在するかどうか決定するために皮膚検出プログラムで行なう動作を示す図である。
【図7】ソース画像内で皮膚を位置決めするために皮膚位置プログラムで行なう動作を示す図である。
【図8】皮膚検出及び局所化を行なってソース画像内で皮膚ピクセルを識別するためにGPUにおいてピクセルシェーダー制御プログラムで行う動作を示す図である。
【図9】皮膚ピクセル及び次第に小さなレンダーターゲットを含むソース画像の一部分を示す図である。
【図10】皮膚ピクセル及び次第に小さなレンダーターゲットを含むソース画像の一部分を示す図である。
【図11】汎用CPUで局所化を完全に行なうのに比して、画像処理システムの皮膚局所化性能を示すグラフである。
【図12】汎用CPUの性能に比して、レンダーターゲットをセーブする画像処理システムの皮膚局所化性能を示すグラフである。
【図13】汎用CPUの性能に比して、画像処理システム100がレンダーターゲットをセーブしないという仮定のもとで画像処理システムの皮膚局所化性能を示すグラフである。
【図14】ネットワークに接続された通信インターフェイスを含む画像処理システムを示す図である。
【符号の説明】
【0064】
100:画像処理システム
102:システムプロセッサ
104:システムメモリ
106:グラフィック処理ユニット
108:設定プログラム
110:皮膚検出プログラム
112:皮膚位置プログラム
114:確率テーブル
116:ソース画像
118:咬合問合せ
120:皮膚検出フラグ
122:システムパラメータ
124:咬合結果
126:皮膚位置
128:レンダーターゲットサイズ上限
130:レンダーターゲットサイズ下限
132:皮膚スレッシュホールド
134:皮膚ピクセルカウント
136:テクスチャメモリ
138:ピクセルシェーダー
140:フレームバッファ
142:確率テクスチャ
144:画像テクスチャ
148:ピクセルシェーダー制御プログラム
152:処理されたピクセル
【特許請求の範囲】
【請求項1】
ソース画像内で皮膚を検出するための画像処理方法において、
確率テーブルを得るステップであって、この確率テーブルは、
確率テーブル内の多数のカラー位置を定義するカラー座標インデックス、及び
カラー位置に記憶される皮膚確率、
を含むものであるステップと、
前記確率テーブルをシステムメモリから確率テクスチャとしてグラフィック処理ユニットのテクスチャメモリへアップロードするステップと、
前記ソース画像を前記システムメモリから画像テクスチャとして前記グラフィック処理ユニットの前記テクスチャメモリへアップロードするステップと、
前記グラフィック処理ユニットへ咬合問合せを発行して、ドローコールから生じる皮膚ピクセルカウントを要求するステップと、
前記グラフィック処理ユニットへ前記ドローコールを発行して、前記画像テクスチャに基づきレンダーターゲットへの前記確率テクスチャのテクスチャマッピングを開始するステップと、
前記ドローコールから生じる前記皮膚ピクセルカウントを含む咬合結果を前記グラフィック処理ユニットから受け取るステップと、
を備えた画像処理方法。
【請求項2】
前記皮膚ピクセルカウントに基づいて前記画像に皮膚が存在するかどうか報告するステップを更に備えた、請求項1に記載の画像処理方法。
【請求項3】
前記テクスチャマッピングからの処理されたピクセル出力が皮膚ピクセルとして適切であるときを決定するために前記グラフィック処理ユニットにおいて皮膚スレッシュホールドを確立するステップを更に備えた、請求項1に記載の画像処理方法。
【請求項4】
皮膚スレッシュホールドを確立する前記ステップは、前記グラフィック処理ユニットにおいてアルファテストを確立することを含む、請求項3に記載の画像処理方法。
【請求項5】
前記画像テクスチャに基づいて前記レンダーターゲットに前記確率テクスチャをテクスチャマッピングするために前記グラフィック処理ユニットにおいてピクセルシェーダーをプログラミングするステップを更に備えた、請求項1に記載の画像処理方法。
【請求項6】
前記プログラミングステップは、ソース画像が存在するソース画像カラースペースから前記カラー座標インデックスの確率カラースペースへのカラースペース変換を実施することを含む、請求項5に記載の画像処理方法。
【請求項7】
前記プログラミングステップは、前記確率テクスチャへの前記カラースペース変換のインデックスオペレーションを実施することを含む、請求項6に記載の画像処理方法。
【請求項8】
前記プログラミングステップは、ソース画像が存在する赤−緑−青カラースペースから前記カラー座標インデックスのCb−Crカラースペースへのカラースペース変換を実施することを含む、請求項5に記載の画像処理方法。
【請求項9】
ソース画像内で皮膚を検出するための画像処理システムにおいて、
システムプロセッサと、
前記システムプロセッサに結合されたグラフィック処理ユニットであって、テクスチャメモリ、及び前記テクスチャメモリに結合された多数のパラレルのピクセルシェーダー、を含むようなグラフィック処理ユニットと、
前記システムプロセッサに結合されたシステムメモリであって、確率テーブル、皮膚を検出すべきソース画像、及び皮膚検出プログラムを備え、前記確率テーブルは、その確率テーブル内に多数のカラー位置を定義するカラー座標インデックス、及び前記カラー位置に記憶された皮膚確率を含むものであり、前記皮膚検出プログラムは、前記システムプロセッサにより実行されたときに、前記画像処理システムが、
前記確率テーブルを確率テクスチャとしてシステムメモリから前記グラフィック処理ユニットのテクスチャメモリへアップロードし、
前記ソース画像を画像テクスチャとしてシステムメモリから前記グラフィック処理ユニットのテクスチャメモリへアップロードし、
前記ソース画像に対してレンダーターゲットを定義し、更に、
前記グラフィック処理ユニットへドローコールを発行して、前記画像テクスチャに基づき前記レンダーターゲットへの前記確率テクスチャのピクセルシェーダーによるテクスチャマッピングを開始する、
ようにさせるインストラクションを含むものであるシステムメモリと、
を備えた画像処理システム。
【請求項10】
前記皮膚検出プログラムは、更に、前記システムプロセッサにより実行されたときに、前記画像処理システムが、
前記グラフィック処理ユニットへ咬合問合せを発行して、ドローコールから生じる皮膚ピクセルカウントを要求し、更に、
前記ドローコールから生じる皮膚ピクセルカウントを含む前記グラフィック処理ユニットからの咬合結果を受け取る、
ようにさせるインストラクションを含む、請求項9に記載の画像処理システム。
【請求項11】
前記皮膚検出プログラムは、更に、前記システムプロセッサにより実行されたときに、前記画像処理システムが、
前記テクスチャマッピングからの処理されたピクセル出力が皮膚ピクセルとして適切であるときを決定するために前記グラフィック処理ユニットにおいてアルファテストを確立するようにさせるインストラクションを含む、請求項10に記載の画像処理システム。
【請求項12】
前記レンダーターゲットは、前記ソース画像に配置された長方形である、請求項9に記載の画像処理システム。
【請求項13】
前記皮膚検出プログラムは、更に、前記システムプロセッサにより実行されたときに、前記画像処理システムが、次のこと、即ち
前記ソース画像に対して新たなレンダーターゲット位置を決定すること、
前記新たなレンダーターゲット位置においてレンダーターゲットを確立すること、及び
前記グラフィック処理ユニットへドローコールを発行して、前記画像テクスチャに基づき前記レンダーターゲットへの前記確率テクスチャのピクセルシェーダーによるテクスチャマッピングを開始すること、
を繰り返すようにさせるインストラクションを含む、請求項12に記載の画像処理システム。
【請求項14】
前記皮膚検出プログラムは、更に、前記システムプロセッサにより実行されたときに、前記画像処理システムが、前記グラフィック処理ユニットにおいてピクセルシェーダーをプログラムして、
前記ソース画像が存在するソース画像カラースペースから前記カラー座標インデックスの確率カラースペースへのカラースペース変換を実施し、更に、
前記確率テクスチャへの前記カラースペース変換のインデックスオペレーションを実施して、前記処理されたピクセル出力を決定する、
ようにさせるインストラクションを含む、請求項11に記載の画像処理システム。
【請求項15】
前記カラースペース変換は、赤−緑−青からCb−Crへの変換を含む、請求項14に記載の画像処理システム。
【請求項16】
請求項1から8のいずれかに記載の画像処理方法を実施するコンピュータプログラムを記憶するマシン読み取り可能な媒体。
【請求項1】
ソース画像内で皮膚を検出するための画像処理方法において、
確率テーブルを得るステップであって、この確率テーブルは、
確率テーブル内の多数のカラー位置を定義するカラー座標インデックス、及び
カラー位置に記憶される皮膚確率、
を含むものであるステップと、
前記確率テーブルをシステムメモリから確率テクスチャとしてグラフィック処理ユニットのテクスチャメモリへアップロードするステップと、
前記ソース画像を前記システムメモリから画像テクスチャとして前記グラフィック処理ユニットの前記テクスチャメモリへアップロードするステップと、
前記グラフィック処理ユニットへ咬合問合せを発行して、ドローコールから生じる皮膚ピクセルカウントを要求するステップと、
前記グラフィック処理ユニットへ前記ドローコールを発行して、前記画像テクスチャに基づきレンダーターゲットへの前記確率テクスチャのテクスチャマッピングを開始するステップと、
前記ドローコールから生じる前記皮膚ピクセルカウントを含む咬合結果を前記グラフィック処理ユニットから受け取るステップと、
を備えた画像処理方法。
【請求項2】
前記皮膚ピクセルカウントに基づいて前記画像に皮膚が存在するかどうか報告するステップを更に備えた、請求項1に記載の画像処理方法。
【請求項3】
前記テクスチャマッピングからの処理されたピクセル出力が皮膚ピクセルとして適切であるときを決定するために前記グラフィック処理ユニットにおいて皮膚スレッシュホールドを確立するステップを更に備えた、請求項1に記載の画像処理方法。
【請求項4】
皮膚スレッシュホールドを確立する前記ステップは、前記グラフィック処理ユニットにおいてアルファテストを確立することを含む、請求項3に記載の画像処理方法。
【請求項5】
前記画像テクスチャに基づいて前記レンダーターゲットに前記確率テクスチャをテクスチャマッピングするために前記グラフィック処理ユニットにおいてピクセルシェーダーをプログラミングするステップを更に備えた、請求項1に記載の画像処理方法。
【請求項6】
前記プログラミングステップは、ソース画像が存在するソース画像カラースペースから前記カラー座標インデックスの確率カラースペースへのカラースペース変換を実施することを含む、請求項5に記載の画像処理方法。
【請求項7】
前記プログラミングステップは、前記確率テクスチャへの前記カラースペース変換のインデックスオペレーションを実施することを含む、請求項6に記載の画像処理方法。
【請求項8】
前記プログラミングステップは、ソース画像が存在する赤−緑−青カラースペースから前記カラー座標インデックスのCb−Crカラースペースへのカラースペース変換を実施することを含む、請求項5に記載の画像処理方法。
【請求項9】
ソース画像内で皮膚を検出するための画像処理システムにおいて、
システムプロセッサと、
前記システムプロセッサに結合されたグラフィック処理ユニットであって、テクスチャメモリ、及び前記テクスチャメモリに結合された多数のパラレルのピクセルシェーダー、を含むようなグラフィック処理ユニットと、
前記システムプロセッサに結合されたシステムメモリであって、確率テーブル、皮膚を検出すべきソース画像、及び皮膚検出プログラムを備え、前記確率テーブルは、その確率テーブル内に多数のカラー位置を定義するカラー座標インデックス、及び前記カラー位置に記憶された皮膚確率を含むものであり、前記皮膚検出プログラムは、前記システムプロセッサにより実行されたときに、前記画像処理システムが、
前記確率テーブルを確率テクスチャとしてシステムメモリから前記グラフィック処理ユニットのテクスチャメモリへアップロードし、
前記ソース画像を画像テクスチャとしてシステムメモリから前記グラフィック処理ユニットのテクスチャメモリへアップロードし、
前記ソース画像に対してレンダーターゲットを定義し、更に、
前記グラフィック処理ユニットへドローコールを発行して、前記画像テクスチャに基づき前記レンダーターゲットへの前記確率テクスチャのピクセルシェーダーによるテクスチャマッピングを開始する、
ようにさせるインストラクションを含むものであるシステムメモリと、
を備えた画像処理システム。
【請求項10】
前記皮膚検出プログラムは、更に、前記システムプロセッサにより実行されたときに、前記画像処理システムが、
前記グラフィック処理ユニットへ咬合問合せを発行して、ドローコールから生じる皮膚ピクセルカウントを要求し、更に、
前記ドローコールから生じる皮膚ピクセルカウントを含む前記グラフィック処理ユニットからの咬合結果を受け取る、
ようにさせるインストラクションを含む、請求項9に記載の画像処理システム。
【請求項11】
前記皮膚検出プログラムは、更に、前記システムプロセッサにより実行されたときに、前記画像処理システムが、
前記テクスチャマッピングからの処理されたピクセル出力が皮膚ピクセルとして適切であるときを決定するために前記グラフィック処理ユニットにおいてアルファテストを確立するようにさせるインストラクションを含む、請求項10に記載の画像処理システム。
【請求項12】
前記レンダーターゲットは、前記ソース画像に配置された長方形である、請求項9に記載の画像処理システム。
【請求項13】
前記皮膚検出プログラムは、更に、前記システムプロセッサにより実行されたときに、前記画像処理システムが、次のこと、即ち
前記ソース画像に対して新たなレンダーターゲット位置を決定すること、
前記新たなレンダーターゲット位置においてレンダーターゲットを確立すること、及び
前記グラフィック処理ユニットへドローコールを発行して、前記画像テクスチャに基づき前記レンダーターゲットへの前記確率テクスチャのピクセルシェーダーによるテクスチャマッピングを開始すること、
を繰り返すようにさせるインストラクションを含む、請求項12に記載の画像処理システム。
【請求項14】
前記皮膚検出プログラムは、更に、前記システムプロセッサにより実行されたときに、前記画像処理システムが、前記グラフィック処理ユニットにおいてピクセルシェーダーをプログラムして、
前記ソース画像が存在するソース画像カラースペースから前記カラー座標インデックスの確率カラースペースへのカラースペース変換を実施し、更に、
前記確率テクスチャへの前記カラースペース変換のインデックスオペレーションを実施して、前記処理されたピクセル出力を決定する、
ようにさせるインストラクションを含む、請求項11に記載の画像処理システム。
【請求項15】
前記カラースペース変換は、赤−緑−青からCb−Crへの変換を含む、請求項14に記載の画像処理システム。
【請求項16】
請求項1から8のいずれかに記載の画像処理方法を実施するコンピュータプログラムを記憶するマシン読み取り可能な媒体。
【図1】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図2】
【図3】
【公開番号】特開2007−257652(P2007−257652A)
【公開日】平成19年10月4日(2007.10.4)
【国際特許分類】
【外国語出願】
【出願番号】特願2007−108724(P2007−108724)
【出願日】平成19年3月20日(2007.3.20)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.フロッピー
【出願人】(504051087)アクセンチュア グローバル サーヴィシズ ゲゼルシャフト ミット ベシュレンクテル ハフツング (17)
【Fターム(参考)】
【公開日】平成19年10月4日(2007.10.4)
【国際特許分類】
【出願番号】特願2007−108724(P2007−108724)
【出願日】平成19年3月20日(2007.3.20)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.フロッピー
【出願人】(504051087)アクセンチュア グローバル サーヴィシズ ゲゼルシャフト ミット ベシュレンクテル ハフツング (17)
【Fターム(参考)】
[ Back to top ]