(57)【要約】  入力データ値のアレイのハフ変換を並列計算する際に、ハフ変換の変換空間は、多数の部分空間に動的または静的に分割される。変換の各部分空間は、メモリ位置（５１０，５１０’，５１０”）の部分空間に格納される。入力データ値のアレイからのデータ値は、複数のプロセッサ（５０８，５０８’，５０８”）に送られるが、各プロセッサは、メモリ位置の部分空間と動的または静的に関連している。他のプロセッサと並列に動作する各プロセッサ（５０８，５０８’，５０８”）は、入力データ値に従って関連する部分空間メモリ（５１０，５１０’，５１０”）内に格納しているハフ変換の成分要素を更新する。
2008546088.tif 000002
【特許請求の範囲】
【請求項１】
ハフ変換の並列計算を行うためのシステムであって、
並列動作を行うことができる複数のプロセッサと、
画像メモリからデータ値を検索し、同データ値を前記複数のプロセッサにそれぞれ送るための第１のメモリ・インタフェースと、
複数のハフ変換部分空間メモリであって、それぞれが前記複数のプロセッサのうちの１つのプロセッサと関連する複数のハフ変換部分空間メモリとを備え、
前記複数のプロセッサのうちの１つのプロセッサが、前記第１のメモリ・インタフェースから前記データ値を受信し、前記複数のハフ変換部分空間メモリのうちの関連するメモリ内のハフ変換値を更新するために動作することができる、システム。
【請求項２】
複数のデータ値を格納するために動作することができる画像メモリをさらに備える請求項１に記載のシステム。
【請求項３】
画像の複数の画素値を前処理して、前記画像メモリ内で前記複数のデータ値を生成するために動作することができるプリプロセッサをさらに備える請求項２に記載のシステム。
【請求項４】
前記複数のハフ変換部分空間メモリからハフ変換値を検索するために動作することができる第２のメモリ・インタフェースと、
前記ハフ変換値を処理するために動作することができるポスト・プロセッサとをさらに備える請求項１に記載のシステム。
【請求項５】
前記複数のハフ変換部分空間メモリが、１つの物理メモリの重ならない領域を備える請求項１に記載のシステム。
【請求項６】
前記複数のハフ変換部分空間メモリが、前記１つの物理メモリから動的に割り当てられる請求項５に記載のシステム。
【請求項７】
変換空間へのデータ値のアレイの変換の並列計算を行うための方法であって、
変換空間メモリを初期化するステップと、
データ値の前記アレイからデータ値を検索するステップと、
前記変換空間メモリを複数の変換部分空間メモリに分割するステップと、
複数のプロセッサに前記データ値を送るステップであって、各プロセッサが、前記複数の変換部分空間メモリの変換部分空間メモリに関連しているステップと、
前記複数のプロセッサの各プロセッサが、前記データ値に従って前記関連する変換部分空間メモリ内に格納している前記変換の要素を更新するステップと、
前記変換空間の要素に従って出力を提供するステップと、を含む方法。
【請求項８】
前記変換の要素を更新するステップが、
前記データ値により影響を受ける前記変換部分空間内の一組の要素を決定するステップと、
前記一組の影響を受けた要素内の各要素に前記データ値を追加するステップと、を含む請求項７に記載の方法。
【請求項９】
前記変換が、式ｓ（ｘ，ｐ）＝０によりパラメータ化された曲線を使用するハフ変換を含み、ここで、ｐは前記変換空間内のパラメータ・ベクトルであり、ｘは前記データ・アレイ内の位置ベクトルであり、ｓは関数であり、位置ｘｉのところの前記データ値を使用して、式ｓ（ｘｉ，ｐ）＝０を満足する変換パラメータｐを更新する請求項７に記載の方法。
【請求項１０】
前記データ・アレイが、前景要素を検出するために、画像を前処理することにより決定される画素値を含む請求項９に記載の方法。
【請求項１１】
前記データ・アレイが、前記画像内のオブジェクトの縁部を検出するために、画像を前処理することにより決定される画素値を含む請求項９に記載の方法。
【請求項１２】
前記ハフ変換の前記要素を探索して、前記ハフ変換要素内の最大値を発見するステップをさらに含み、前記ハフ変換の前記要素に従って出力を提供するステップが、前記最大値および前記ハフ変換内のその位置を出力するステップを含む請求項９に記載の方法。
【請求項１３】
前記並列計算がハフ変換タイプであり、
初期化の前に、前記ハフ変換の前記変換空間を複数の離散パラメータ値に量子化するステップであって、それぞれのパラメータ値が、Ｋ個の要素、およびＫ次元の離散変換空間を定義する前記複数の離散パラメータ値を有するステップをさらに含む請求項７に記載の方法。
【請求項１４】
前記変換メモリが、前記ハフ変換の計算が、指定の分配に従って前記複数のプロセッサのうちの前記プロセッサ間で分配されるように、複数のハフ変換部分空間メモリに分割される請求項１３に記載の方法。
【請求項１５】
前記変換メモリが、前記ハフ変換の計算が、前記複数のプロセッサのうちの前記プロセッサ間でほぼ均等に分配されるように、複数のハフ変換部分空間メモリに分割される請求項１３に記載の方法。
【請求項１６】
画素値の入力アレイとして表した画像の高レベルの特徴を識別するための方法であって、
画素値の入力アレイを正規化するステップと、
データ値のアレイを提供するために正規化した画素値の前記アレイを前処理するステップと、
データ値の前記アレイを対象となる１つまたは複数の領域にセグメント化するステップと、
データ値の前記アレイ内の低レベルの特徴を識別するステップと、
ハフ変換の変換空間を複数の部分空間に分割するステップと、
前記複数の部分空間内の対象となる前記１つまたは複数の領域の前記ハフ変換を並列に計算するステップと、
前記ハフ変換空間を探索して、前記画像の前記高レベルの特徴を識別するステップと、
パラメータを出力して、前記画像の前記高レベルの特徴を指定するステップと、を含む方法。
【請求項１７】
データ値の前記アレイ内の低レベルの特徴を識別するステップが、前記画像内のオブジェクトの縁部を検出するステップを含む請求項１６に記載の方法。
【請求項１８】
前記高レベルの特徴が、目の位置である請求項１６に記載の方法。
【請求項１９】
画素値の前記アレイが、映像フレームを定義する請求項１６に記載の方法であって、
前記識別した高レベルの特徴を後処理して、隣接する映像フレーム間の一致をチェックするステップをさらに含む方法。
【請求項２０】
ハフ変換を計算するためのシステムであって、
並列処理を行うことができる複数の処理手段であって、それぞれがハフ変換の要素のサブセットを計算することができる複数の処理手段と、
複数の部分空間格納手段であって、それぞれが前記複数の処理手段のうちの１つの処理手段と関連していて、前記ハフ変換の要素のサブセットを格納するために動作することができる複数の部分空間格納手段と、
前記複数の処理手段のうちの各処理手段に画素位置値を分配するための手段と、
前記ハフ変換の前記要素に従って結果を出力するための手段と、を含むシステム。
【請求項２１】
前記ハフ変換の前記要素を探索して最大の変換要素を検出するための後処理手段をさらに備える請求項２０に記載のシステム。
【請求項２２】
前記複数の部分空間格納手段が、メモリの重ならない領域を備える請求項２０に記載のシステム。
【請求項２３】
メモリの前記重ならない領域が、動的に割り当てられる請求項２２に記載のシステム。
【請求項２４】
目の運動を追跡するためのハフ変換方法であって、
第１のデータ値のアレイを備える映像フレームを受信するステップと、
第１のデータ値の前記アレイを前処理して複数の第２のデータ値を提供するステップと、
楕円基本曲線のための前記複数の第２のデータ値のハフ変換を計算するステップと、
前記ハフ変換を使用して楕円を検出することにより目の位置を識別するステップと、
楕円基本曲線の前記ハフ変換を使用して円を検出することにより虹彩位置を識別するステップと、を含み、
前記複数の第２のデータ値のハフ変換を計算するステップが、
ハフ変換メモリを初期化するステップと、
前記複数の第２のデータ値からあるデータ値を検索するステップと、
前記データ値を複数のプロセッサに送るステップと、
前記複数のプロセッサの各プロセッサを前記ハフ変換メモリのハフ変換部分空間メモリと関連付けるステップと、
前記複数のプロセッサの各プロセッサが、前記データ値に従って前記関連するハフ変換部分空間メモリ内に格納している前記ハフ変換の要素を更新するステップと、を含む方法。
【請求項２５】
前記複数のプロセッサの各プロセッサを前記ハフ変換メモリのハフ変換部分空間メモリと関連付けるステップが、各プロセッサにハフ変換部分空間メモリを動的に割り当て、前記複数のプロセッサ間の計算の実質的に均等な分配を維持するステップを含む請求項２４に記載の方法。
【請求項２６】
第１のデータ値の前記アレイを前処理して複数の第２のデータ値を提供するステップが、
第１のデータ値の前記アレイを正規化して、正規化したデータ値のアレイを提供するステップと、
正規化したデータ値の前記アレイをフィルタリングして、フィルタリングしたデータ値のアレイを提供するステップと、
フィルタリングしたデータ値の前記アレイをセグメント化して、対象となる１つまたは複数の領域を入手するステップと、
対象となる前記１つまたは複数の領域内の低レベルの特徴を抽出するステップとを含む請求項２４に記載の方法。
【請求項２７】
目の位置を識別し、虹彩位置を識別するステップが、隣接する映像フレームとの一致をチェックするためのステップをさらに含む請求項２４に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はアレイ処理の分野に関し、特には、ハフ変換を並列計算するためのシステムおよび方法に関する。
【背景技術】
【０００２】
画像処理における共通の問題は、画像データのフレーム内の直線、円、楕円、および他の高次多項式、または任意の曲線、等の基本要素（ｐｒｉｍｉｔｉｖｅ）を発見することである。１つの方法は、ハフ変換を使用する方法である。ハフ変換は、ある点を通るすべての基本要素のパラメータを示す、変換領域内の曲線または面へ画像アレイ内の点をマッピングする。基本要素が直線である場合には、全入力画像のハフ変換は、２次元離散ラドン変換またはスラント・スタック変換と数学的に等価である。しかし、２次元離散ラドン変換またはスラント・スタック変換を計算する場合には、通常、画像アレイ内の一組の点から変換領域内の各点の変換値を計算する。
【０００３】
他の曲線へのハフ技術の一般化は容易であり、この方法を任意の曲線ｓ（ｘ，ｐ）＝０（ここで、ｘは、画像アレイ内の座標の位置ベクトルであり、ｐは、係数のパラメータ・ベクトルである）に使用することができる。ハフ変換の複雑度は、所与の表示内の座標および係数の数に大きく依存する。簡単な解析表示でない曲線を検出するためのハフ変換をさらに一般化することもできる。
【０００４】
曲線検出のためのハフ方法の最大の利点は、入力データ内のノイズの多い点を無視する（ｏｖｅｒｌｏｏｋ）ことができることである。非常にノイズの多い点は、対象となるパラメータ点のところのアキュムレータ値を変えない。もう１つの利点は、ハフ方法を、パラメータ空間内の極大値を探索することにより、類似の形状の複数の曲線を検出するために使用することができることである。
【０００５】
ハフ変換の計算は高価である。そのため低コストで高速計算が必要である場合には、リアルタイムでの適用に問題がでてくる。一例としては、車両案内およびナンバー・プレート読取りのような用途用の自動車ビデオ・カメラからの映像フレームの解析がある。もう１つの例としては、ロボット用途用のマシン・ビジョンがある。これらのすべての用途は、データ・レートが高い映像フレームのリアルタイム処理を必要とする。
【０００６】
この分野での従来の用途は、パーソナル・コンピュータ、デジタル・シグナル・プロセッサ、または汎用性のある画像処理装置のような汎用プロセッサ上で実施するためのアルゴリズムの設計に主として焦点を当ててきた。
【特許文献１】米国特許第５，８０９，３２２号
【発明の開示】
【発明が解決しようとする課題】
【０００７】
ハフ変換の場合には、画像アレイ内の点を変換アレイ内の曲線または面へマッピングしなければならない。ハフ変換を計算するには２つの方法がある。第１の方法は、変換アレイ内の各要素に対して１つずつ、多数のアキュムレータを使用する方法である。この方法を使用すると、コンピュータ・グラフィックス・カードのようにハードウェアが複雑になる。第２の方法は、１つのアキュムレータを使用し、メモリ内に変換アレイを格納する方法である。この方法は、メモリとアキュムレータの間で部分和（ｐａｒｔｉａｌ  ｓｕｍ）を移動するために、各画像画素に対して複数の読取りおよび書込み動作を行わなければならないために速度が遅くなる。
【０００８】
ハフ変換を計算するために並列処理ハードウェアが提案されてきた。ある方法では、画素値のアレイを含む画像が複数のサブ画像に分割される。各サブ画像の変換は、別の処理エンジンにより計算され、そのため並列計算を行うことができる。この方法の一例については、１９８８年９月１５日付けのＡｋｅｒｉｂ；Ａｖｉｄａｎ（Ａｓｓｏｃｉａｔｅ  Ｃｏｍｐｕｔｉｎｇ  Ｌｉｍｉｔｅｄ）の、「信号処理のための装置および方法」（Ａｐｐａｒａｔｕｓ  ａｎｄ  ｍｅｔｈｏｄ  ｆｏｒ  ｓｉｇｎａｌ  ｐｒｏｃｅｓｓｉｎｇ）という名称の米国特許第５，８０９，３２２号に開示されている。この米国特許は、ハフ変換を含む画像解析ルーチン用のプロセッサ間で画像データが分割される用途について記載している。この方法の利点は、ある種の用途の場合、画像内の前景要素に対応する画素だけを処理さえすればよいということである。これらの用途の場合、計算の回数は、入力データ（画像）内の前景画素数とともに直線的に変化する。前景画素の空間分布により、作業負荷がプロセッサ間で均等に分配されていない場合がある。例えば、いくつかのサブ画像は、前景要素を有していない場合があるし、他のサブ画像は前景画素だけしか含んでいない場合もある。そのためプロセッサをうまく使用できなくなる。さらに、ハフ変換の部分和はメモリに格納される。２つ以上のプロセッサが同じ物理メモリを更新している場合があるので、そのため各プロセッサに対して共有メモリ機構（例えば、セマフォーなど）を使用しなければならないか、または別々のメモリを使用しなければならない。前者の方法は、より多くの計算オーバヘッドを導入するが、後者の方法は、より高価であり、高次元ハフ変換空間の場合には実行することができない。画像のサブ画像への分割は、低解像度画像の場合、または少数のパラメータ（例えば、直線など）を含む曲線の検出の場合だけに実行することができる。
【課題を解決するための手段】
【０００９】
本発明の特徴であると信ずる新規な特徴については添付の特許請求の範囲に記載されている。しかし、本発明自身、ならびにその他の目的および利点は、添付の図面を参照しながら、例示としての実施形態の下記の詳細な説明を読めばよりよく理解することができるだろう。
【００１０】
本発明は、多くの異なる形で実施することがき、１つまたは複数の特定の実施形態を図面に示し以下に詳細に説明するが、本発明は本発明の原理の例示としてのものであり、本発明を図示し説明する特定の実施形態に制限するものでないことを理解されたい。以下の説明においては、図面のいくつかの表示内の同一の、類似の、または対応する部分を説明するために類似の参照番号を使用している。
【００１１】
本発明は、入力データのアレイのハフ変換を並列計算するための方法および処理アーキテクチャに関する。一実施形態の場合には、ハフ変換の変換空間は、複数の部分空間に動的または静的に分割される。変換の各部分空間は、その構成部分空間メモリ・アドレスに格納される。入力データ値のアレイからのデータ値は、複数のプロセッサに送られ、各プロセッサは、メモリ・アドレスの部分空間と動的または静的に関連している。他のプロセッサと並列に動作する各プロセッサは、入力データ値に従って関連する部分空間メモリ・アドレスのところに格納しているハフ変換の要素を更新する。
【００１２】
各プロセッサは別々のメモリ位置にアクセスするので、メモリ共有機構もメモリ複製も必要としない。何故なら、各プロセッサは各画素を使用することができ、プロセッサが同時に重ならないメモリ空間を更新するからである。さらに、画像（例えば、前景オブジェクトなど）の一部だけが変換される場合でも、処理はプロセッサ間で均等に分配されるからである。
【００１３】
概念上は、プロセッサの数が前景画素数を超える場合でも、すべてのタイプの曲線を検出するために処理速度を直線的に増大することができる。この特徴により、多数のパラメータを含む曲線を検出するのに適した方法およびアーキテクチャにすることができる（高次元ハフ空間）。１つのハフ空間を更新する際に、すべての使用できるプロセッサ間に作業負荷を均等に分割することにより、プロセッサを効率的に使用することができる。
【発明を実施するための最良の形態】
【００１４】
本発明は、例えば、スマート画像センサ、映像解析装置（例えば、目線追跡システムなど）、障害者インタフェース・ユニット、ロボット・ビジョン・ユニット、および種々の臨床装置で使用するための画像特徴認識の用途に使用することができる。
【００１５】
ハフ変換は、下式を満足する基本曲線を使用する。
【００１６】
【数１】
2008546088.tif 000003
ここで、ｐはパラメータ・ベクトルであり、ｘは入力画像内の位置ベクトルである。このことは、固定パラメータ・ベクトルに対する画像空間内の点ｘを定義する式として、または位置ベクトルｘ（すなわち、特定の画素位置）の固定値に対するパラメータ空間内の点の定義点として見ることができる。
【００１７】
ハフ変換を計算する際には、パラメータ空間は、ハフ・パラメータ空間Ｐを形成するために、パラメータ・ベクトルの離散値に量子化される。固定パラメータ・ベクトルｐｋ∈Ｐの場合には、式（１）を満足する画像空間内のｘの座標は、ｘｎ（ｐｋ）で示される。パラメータ空間内の対応する点の値は、下式のように定義される。
【００１８】
【数２】
2008546088.tif 000004
ここで、Ａ（ｘ）は、位置ｘのところの画素のグレイ・レベル値であり、Ｎは、入力画像データ内の画素の全数である。通常、Ａ（ｘ）は、前景画素の場合には値１に設定され、背景画素の場合には０に設定される。次に、ハフ変換空間内の点に対応する値は、下式により再帰的に計算することができる。
【００１９】
【数３】
2008546088.tif 000005
図１は、ハフ変換を計算するための方法のフローチャートである。図１を参照すると、計算はブロック１０２から開始する。メモリ位置は、ハフ変換空間内の各点に対して使用される。ブロック１０４において、メモリはゼロに初期化される。このことは式（３）のＨ０（ｐｋ）に対応する。ブロック１０８において、画像空間内の位置ｘｎのところの画素の値Ａ（ｘｎ）が検索される。ブロック１１０において、式ｓ（ｘｎ，ｐ）を満足するハフ変換空間内のｐの値が決定される。これらの値は、ｐｋ（ｘｎ）で示される。ブロック１１２において、ハフ変換空間内の点ｐｋ（ｘｎ）が下式により更新される。
【００２０】
【数４】
2008546088.tif 000006
決定ブロック１１４において、画像のすべての画素が処理されたか否かを判定するためのチェックが行われる。処理が終了していない場合には、決定ブロック１１４からの負のブランチが示すように、流れはブロック１０８に戻り、次の画素値が検索される。画像のすべての画素が処理済みの場合には、決定ブロック１１４からの正のブランチが示すように、変換の計算が終了し、処理はブロック１１６において終了する。
【００２１】
図２は、ハフ変換を計算するためのもう１つの方法のフローチャートである。この方法は、ブロック１０６において画像が多数のサブ画像に分割される点を除けば、図１の方法に類似している。フローチャートを簡単にするために、この方法を２つのサブ画像に対してだけ表示するが、もっと多くのサブ画像も使用することができる。ブロック１０８において、画素が第１のサブ画像から検索され、ブロック１１０および１１２において（第１のプロセッサにより）処理される。並列に、ブロック１０８’において、画素が第２のサブ画像から検索され、ブロック１１０’および１１２’において（第２のプロセッサにより）処理される。ブロック１０４において初期化されたメモリは、第１および第２のプロセッサにより共有されることに留意されたい。この場合には、メモリ共有のための機構を使用しなければならない。
【００２２】
図３は、本発明のある実施形態によるハフ変換を計算するための方法のフローチャートである。図３を参照すると、計算はブロック３０２から開始する。ブロック３０４において、ハフ変換空間の分割が決定される。このブロックにおいて、パラメータの量子化およびパラメータの範囲が決定される。ブロック３０６において、メモリがゼロに初期化される。これは、式（３）のＨ０（ｐｋ）＝０に対応する。ブロック３０８において、画像空間内の位置ｘｎのところの画素の値Ａ（ｘｎ）が検索される。フローチャートを簡単にするために、２つの部分空間，ｐ１およびｐ２しか使用していないが、当業者であれば、この方法を任意の数の部分空間と一緒に使用することができることを理解することができるだろう。一般的に、変換空間は、
【００２３】
【数５】
2008546088.tif 000007
がＭ個の部分空間の結合になるように、Ｍ個の部分空間ｐｍに分割される。各部分空間は、完全なハフ変換のパラメータｐのサブセットを含む。部分空間の分割は、予め決定することができ、静的なものであってもよいし、または部分空間の分割は、動的に決定することもできる。部分空間の分割が動的に決定された場合には、各プロセッサに関連するメモリを、１つの物理メモリから動的に割り当てることができる。一実施形態の場合には、部分空間は、使用できるプロセッサ間で指定の処理の分配を行うように割り当てられる。メモリ位置はハフ変換空間内の各点に対して使用される。ブロック３１０において、式ｓ（ｘｎ，ｐ）＝０を満足する第１のハフ変換部分空間内のｐの値が決定される。これらの値は、
【００２４】
【数６】
2008546088.tif 000008
で示される。ブロック３１２において、ハフ変換部分空間内の影響を受けた要素
【００２５】
【数７】
2008546088.tif 000009
の値が下式により（第１のプロセッサにより）更新される。
【００２６】
【数８】
2008546088.tif 000010
ブロック３１０’において、式ｓ（ｘｎ，ｐ）＝０を満足する第２のハフ変換部分空間内のｐの値が決定される。これらの値は、
【００２７】
【数９】
2008546088.tif 000011
で示される。ブロック３１２において、ハフ変換部分空間内の影響を受けた点
【００２８】
【数１０】
2008546088.tif 000012
が下式により（第２のプロセッサにより）更新される。
【００２９】
【数１１】
2008546088.tif 000013
それ故、第１および第２のプロセッサは、異なるメモリ位置を更新するのでメモリ共有機構は必要ない。
【００３０】
決定ブロック３１４のところで、画像のすべての画素が処理されたか否かを判定するためにチェックが行われる。処理が終了していない場合には、決定ブロック３１４からの負のブランチが示すように、流れはブロック３０８に戻り、次の画素値が検索される。画像のすべての画素が処理済みの場合には、決定ブロック３１４からの正のブランチが示すように、変換が終了し、流れはブロック３１６に進む。ブロック３１６において、画像の特徴を識別するために変換空間を探索することができる。この処理の結果は、ブロック３１８のところで出力され、処理はブロック３２０において終了する。
【００３１】
図４は、本発明のある実施形態によるハフ変換を計算するための他の方法のフローチャートである。図４の方法は、ブロック４０２においてハフ空間が静的に分割される点を除けば、図３の方法に類似している。すなわち、各プロセッサには、画像の処理が開始する前にハフ空間の部分空間が割り当てられる。部分空間の分割は静的に行われるので、メモリ割当ても静的なものであってもよく、そのため各プロセッサは、別の部分空間メモリ分割（または別のメモリ）に関連している。ブロック４０４において、部分空間メモリがゼロに初期化される。
【００３２】
図５は、本発明のある実施形態による並列プロセッサの図面である。図５を参照すると、並列プロセッサ５００は、オプションとしてのプリプロセッサ５０４を備える。前処理は、例えば、処理する前景要素のような画像のエリアを選択するために、または画像内の縁部を検出するために使用することができる。前処理した（または元の）画像のデータ値（画素値）のアレイは、画像メモリ５０４に格納される。メモリ・インタフェース５０６は、画像メモリ５０４を複数のプロセッサ５０８、５０８’、５０８”等に結合している。メモリ・インタフェース５０６は、画像メモリ５０４から画素値のシーケンスを検索し、画素値をプロセッサに分配するように構成されている。各画素値は各プロセッサに送られる。各プロセッサは、完全なハフ変換空間の部分空間内の変換値を計算するために使用することができる。プロセッサ５０８、５０８’、５０８”は、ハフ変換空間の部分空間に対する変換値を格納するために使用する変換空間メモリ５１０と結合している。計算中の所与の時間に、各プロセッサは、メモリ５１０内の重ならないアドレス空間にアドレスする。
【００３３】
動作中、各画素値は、画像メモリ５０４から順番に検索され、メモリ・インタフェース５０６を介してプロセッサ５０８、５０８’、５０８”等に送られ、各プロセッサは、変換空間メモリ５１０内のその関連するメモリ位置のハフ変換値を更新する。すべての画素値が処理された場合には、完全なハフ変換空間に、オプションとしてのポストプロセッサ５１４により第２のメモリ・インタフェース５１２を通してアクセスすることができる。ポストプロセッサ５１４は、画像の特徴を識別するためにハフ変換空間を探索するために使用することができる。例えば、ハフ変換アレイ素子およびその位置の最大値を発見するために、変換空間を探索することができる。探索の結果および／またはハフ変換自身を出力５１６のところで提供することができる。
【００３４】
図６は、本発明のある実施形態によるもう１つの並列プロセッサの図面である。図６の並列プロセッサは、各プロセッサ５０８、５０８’、５０８”がそれ自身の部分空間メモリ５１０、５１０’または５１０”と結合している点を除けば、図５のプロセッサに類似している。これらのメモリは、同じ物理メモリの分割であってもよいし、または別々のメモリであってもよい。
【００３５】
一例として、基本曲線がその中心位置および半径値が分からない円であるハフ変換について考えてみる。円の式は下記の通りである。
【００３６】
【数１２】
2008546088.tif 000014
ここで、ｘ＝（ｘ，ｙ）は、画像空間の位置であり、ｐ＝（α，β，γ）は、３次元ハフ変換空間内の点である。図７は、パラメータ・ベクトルｐ１＝（α１，β１，γ１）を含む曲線７００を示す。画像空間（５０２）内の点ｘ１＝（ｘ１，ｙ１）は、曲線の近くに位置していて、変換空間内の点ｐ１＝（α１，β１，γ１）に貢献する。同様に、点７０４、７０６、７０８および７１０は、円７００の近くに位置していて、変換空間内の点ｐ１＝（α１，β１，γ１）に貢献する。画像空間（７０２）内の点ｘ１＝（ｘ１，ｙ１）も、変換空間内の他の点に貢献する。何故なら、他の円は、点７０２を通して描くことができるからである。図８においては、これらの点を円８０２として描いている。同様に、点７０４、７０６、７０８および７１０は、図８に示すように、変換空間内の円８０４、８０６、８０８および８１０にそれぞれ貢献する。
【００３７】
この例の場合には、３次元ハフ変換空間を、半径ｒの同じ値を有する変換ベクトルが同じ部分空間内に位置するように分割することができる。それ故、ｒの各値に対して１つの部分空間が存在する。図８は、ｒ＝ｒ１に対する２次元部分空間を示す。この図は、画像空間（図７）内の点７０２、７０４、７０６、７０８および７１０が、それぞれ貢献する曲線８０２、８０４、８０６、８０８および８１０の例を示す。点ｐ１＝（α１，β１，γ１）は、この部分空間内に位置しているので、画像空間内の点ｘ１＝（ｘ１，ｙ１）は、変換部分空間内の点（α１，β１）に貢献する。半径ｒ１の画像空間内の他の円は、点（ｘ１，ｙ１）を通る。これらの円は、異なる値のαおよびβを有しているが、同様に画像空間内の点（ｘ１，ｙ１）により影響を受ける。変換部分空間内の影響を受けたαおよびβの値は下式を満足する。
【００３８】
【数１３】
2008546088.tif 000015
図８の円８０２はこれを示す。αおよびβの量子化した値は、どのメモリ位置を更新すべきかを決定する。
【００３９】
ｒ１とは異なる半径を有する画像空間内の円も、点（ｘ１，ｙ１）を通る。これらの円は、（この例の分割の）異なる変換部分空間内のαおよびβの値に貢献する。
もう１つの例を挙げると、画像内の楕円を下式によりパラメータで表示した曲線により検出することができる。
【００４０】
【数１４】
2008546088.tif 000016
この式は４つのパラメータ（ｘｅ，ｙｅ，ａ，ｂ）を有し、４次元の変換空間になる。
【００４１】
ハフ変換空間は、任意の方法で分割することができる。しかし、ほとんどの場合、使用できるプロセッサ間で処理が等分に分配されるように、変換空間を分割すると有利である。例えば、ハフ変換基本要素が円である場合には、１つの画像点が、３次元ハフ変換空間内の円錐の表面上の変換点に貢献する。このハフ空間は、論理的に３次元空間であるが、通常、高次元データ構造の場合に行うように、予め定義した順序でパラメータ・インデックスをマッピングすることにより、物理的に１次元メモリに格納することができる。２つのプロセッサを使用することができる場合には、円錐の軸を通る面により円錐を動的に分割することができる。一方のプロセッサは、円錐の半分への貢献を計算することができ、他方のプロセッサは他の半分への貢献を計算することができる。一般的に、Ｍ個のプロセッサを使用できる場合には、円錐を円錐の軸から出る予め定義した面により動的に分割することができる。
【００４２】
一方、各プロセッサがその別々のメモリ・ユニットを有する場合には、静的分割も役に立つ。例えば、ハフ変換基本要素が円である場合には、１つの画像点が、３次元ハフ変換空間内の円錐の表面上の変換点に貢献する。２つのプロセッサを使用することができる場合には、円錐を円錐の半径軸を横切る面により静的に分割することができる。一方のプロセッサは、（ｒｍｉｎからｒｃｕｔまでの）円錐の一部への貢献を計算することができ、他方のプロセッサは、（ｒｃｕｔからｒｍａｘまでの）円錐の他の部分への貢献を計算することができる。ここで、ｒｃｕｔは、円錐の部分の表面がほぼ等しくなるように選択される（オフライン）。この場合、ｒｍｉｎおよびｒｍａｘは、半径パラメータ値に対する対象となる範囲を定義する。一般的に、Ｍ個のプロセッサを使用することができる場合には、ハフ空間を円錐の半径軸を横切る（Ｍ−１）個の面により静的に分割することができる。
【００４３】
ハフ変換計算の例示としての用途は、光学的目線追跡である。光学的目線追跡の場合には、人の目は、まぶたの縁部を表す楕円の内側の虹彩の縁部を表す円の全体または一部としてモデル化される。図９を参照すると、目のモデル９００は、（ｘｅ，ｙｅ）に中心を有する楕円９０２および（ｘｃ，ｙｃ）に中心を有する円９０４を含む。楕円は下式を満足する。
【００４４】
【数１５】
2008546088.tif 000017
一方、円は下式を満足する。
【００４５】
【数１６】
2008546088.tif 000018
目の開口を表すための楕円の選択が行われる。何故なら、そうすると両方の曲線を検出するための１つのハフ空間を使用することができるからである（何故なら、円はパラメータ（ｘｃ，ｙｃ，ｒ，ｒ）を含む楕円であるからである）。完全な特徴画像を生成することはできないので、システムは、ノイズの多い、不完全で、閉塞した縁部を処理するためにハフ方法の堅牢さに依存する。
【００４６】
ハフ方法は、リアルタイムで取り込んだ各映像フレームに対する円パラメータ（ｘｃ，ｙｃ，ｒ）、および楕円パラメータ（ｘｅ，ｙｅ，ａ，ｂ）を推定するためにこの光学的目線追跡システムで使用される。
【００４７】
図１０は、本発明のある実施形態による目線追跡システムの動作を示すフローチャート１０００である。このフローチャートは、多数の顔面動作ユニット（ａ１，ａ２，．．．，ａｃ）を生成するために、入力画像画素（ｘ１，ｘ２，．．．，ｘｎ）のアレイの１つの映像フレームの処理を示す。図１０を参照すると、開始ブロック８０２の後で、フレームはブロック１００４で正規化される。正規化を使用するのは、サイズ、光、色、配向角、および異なるスタイルが変動するためにコンピュータ・ビジョン・アルゴリズムの堅牢さを必要とするからである。正規化動作の目的は、画像を改善するためではなく、画像間の変動を除去するためである。取り込んだ画像は、固定特徴テンプレート・サイズの使用または高速化のためにダウンスケールしなければならない場合がある。光および色の正規化は、ヒストグラム・マッピング演算子（ヒストグラム等化、正規化または任意の他の操作）により行うことができる。ポーズの正規化は、被写体の配向角を調整するために使用することができる。一実施形態の場合には、取り込んだフレームは、固定サイズのカラー画像にスケールダウンされ、次に、サイズを変えた画像上でヒストグラム等化が行われる。方向の正規化は、楕円を確実に水平方向に向けるために使用することができる。
【００４８】
画像は、ブロック１００６において前処理される。この前処理により正規化した画像が改善され、以降の画像識別動作のための準備が行われる。前処理は、入力画像の２値画像（すなわち、２つのグレイ・レベルを有する画像）への変換を含むことができる。ノイズの影響および正規化によるアーティファクトを低減するために、線形および／または非線形画像フィルタリングを適用することができる。各取り込んだフレーム内の画像成分境界を明確にするために、平滑化を適用することができる。例えば、（例えば、３×３平方のカーネル（ウィンドウ）を使用して）メディアン・フィルタを、正規化したカラー画像に適用することができる。
【００４９】
画像はブロック１００８においてセグメント化される。セグメント化プロセスは、曲線適合のための対象となる潜在的な目の領域を識別するために使用される。セグメント化は、画像をその構成成分に分割するプロセスである。例えば、後の処理段階で確認するセグメント化仮説を生成するために数学的形態素技術を使用することができる。また、オブジェクトの自然のグループ分けを検出する機能を与えるためにクラスタリング技術を使用することができる。さらに、信頼手段（ｃｏｎｆｉｄｅｎｃｅ  ｍｅａｓｕｒｅ）を反復して改善するために、近傍のオブジェクト間で互換を行うことができるように緩和技術を使用することができる。以降の処理のために検出した構成要素にラベルを貼ることができる。
【００５０】
ブロック１０１０において、縁部のようなセグメント化した画像の低レベルの特徴が、その画像の領域、輪郭、または両方のテンプレートを使用して検出される。一実施形態の場合には、縁部検出は、特徴の境界／輪郭を強調するために行われる。縁部画像上でしきい値演算子を適用すると輪郭が太くなるので、１画素の太さの輪郭を生成するために細線化プロセスを使用することができる。通常、検出した輪郭は連続していないが、そうしたい場合には、リンクすることができる。一実施形態の場合には、フィルタリングした画像の縁部は、ゾーベル（Ｓｏｂｅｌ）勾配大きさ演算子を使用して検出される。勾配特徴画像をしきい値と比較した後で、３つの帯域（赤、緑、青）が、画素様「論理積（ＡＮＤ）」演算子を使用することにより１つの帯域の２値特徴画像に結合される。次に、細線化プロセスが、１画素の太さの特徴画像を生成するために２値特徴画像に適用される。
【００５１】
画像解析および分類は、ブロック１０１２において行われる。対象となる１つまたは複数の高レベルの特徴を検出する目的で、最適または準最適な推定値を発見するために探索技術が使用される。高レベルの特徴は、通常、目、人物または車両のナンバー・プレートのような特定のオブジェクトである。これは、複数のオブジェクトに共通な特徴である場合がある縁部または隅のような低レベルの特徴と比べて対照的である。顔面動作ユニット表示を構成するために必要なパラメータを計算するために画像識別技術が使用される。目線追跡システムは、虹彩およびまぶたの位置を推定するために、２値特徴画像内の最善の円および楕円を探索する。探索は、楕円基本要素（ｅｌｌｉｐｓｅ  ｐｒｉｍｉｔｉｖｅ）の１つのハフ変換を使用して、上記円および楕円を検出するためにハフ変換方法により行われる。
【００５２】
後処理は、ブロック１０１４において行われる。後処理は、同じフレーム内の特徴間の空間関係の一致をチェックするため、また以降のフレーム間のチェック、また動作ユニット（ａ１，ａ２，．．．，ａｃ）の構成のチェックのために使用される。一実施形態の場合には、一組の発見的規則（ｈｅｕｒｉｓｔｉｃ  ｒｕｌｅ）が、起こりそうにもない状況を監視するために適用される。目線追跡のために、対象となる曲線を適合させるために使用する縁部の点の数が、固定値より大きいか否かを判定するためにチェックされる。このプロセスは、また瞬きを検出するためにも使用することができる。推定した円および楕円パラメータは、目の運動の動作ユニットを計算するために必要な情報を提供する。アニメーション・パラメータは、顔面アニメーション・パラメータ（ＦＡＰＳ）または例えば、他の従来の顔面動作コード（ＦＡＣＳ）として、ＭＰＥＧ−４標準により表すことができる。
【００５３】
ブロック１０１６において、動作ユニット（ａ１，ａ２，．．．，ａｃ）および他の結果が出力される。このプロセスは、ブロック１０１８において終了する。
大部分のコンピュータ・ビジョン用途の場合、ハフ変換の計算は、入力データの解像度および推定値の必要な精度により、全画像処理時間の半分以上を使用する。通常、並列処理ハードウェアが、ハフ変換計算のために使用される。しかし、当業者であれば、例えば、並列細線化アルゴリズム（ｐａｒａｌｌｅｌ  ｔｈｉｎｎｉｎｇ  ａｌｇｏｒｉｔｈｍ）および形態素動作（ｍｏｒｐｈｏｌｏｇｉｃａｌ  ｏｐｅｒａｔｉｏｎ）のような他の画像処理アルゴリズムも、すでに説明したように並列計算から利益を受けることができることを理解することができるだろう。画像処理アルゴリズムは、一般的に、入力画像アレイを出力変換アレイ（出力メモリ空間）に変換する。本発明は、出力アレイ（出力メモリ空間）を多数の部分空間に動的または静的に分割し、並列処理要素を各部分空間に割り当てる一般的な技術を提供する。この方法を使用すれば、メモリの競合を避けることができ、使用できる計算およびメモリ・リソースを均等に分配することができる。
【００５４】
また、一方は、出力アレイの動的分割であり、他方は、静的分割である２つの例示としての実施形態により本発明を説明してきたが、動的および静的分割の両方を同時に使用することができる別のハイブリッド解決方法も使用することができることにも留意されたい。対象となるアプリケーションおよび利用可能なリソースの性質が、静的、動的、またはハイブリッドの分割スキーム（ｐａｒｔｉｔｉｏｎｉｎｇ  ｓｃｈｅｍｅ）を示唆している。
【００５５】
通常の当業者であれば、本発明を例示としての実施形態により説明してきたことを理解することができるだろう。しかし、本発明はそのように限定すべきではない。何故なら、本発明は、特殊な目的のハードウェア、および／または上記および特許請求の範囲に記載する本発明と等価の専用プロセッサのようなハードウェア構成要素等価物を使用して実施することができるからである。同様に、汎用コンピュータ、マイクロプロセッサをベースとするコンピュータ、デジタル・シグナル・プロセッサ、マイクロコントローラ、専用プロセッサ、カスタム回路、フィールド・プログラマブル・ゲート・アレイ、ＡＳＩＣおよび／または専用ハードワイヤード・ロジックを、本発明の別の等価実施形態を構成するために使用することができる。
【００５６】
本発明を特定の実施形態により説明してきたが、当業者であれば上記説明を読めば、多くの代替案、修正、置換、および変形を容易に思い付くことができるだろう。それ故、本発明は、このようなすべての代替案、修正および変形を添付の特許請求の範囲内に含む。
【図面の簡単な説明】
【００５７】
【図１】ハフ変換を計算するための方法のフローチャート。
【図２】ハフ変換を計算するためのもう１つの方法のフローチャート。
【図３】本発明のある実施形態によるハフ変換を計算するための方法のフローチャート。
【図４】本発明のある実施形態によるハフ変換を計算するためのもう１つの方法のフローチャート。
【図５】本発明のある実施形態による並列処理システムの図面。
【図６】本発明のある実施形態によるもう１つの並列処理システムの図面。
【図７】画像空間内の例示としての曲線のグラフ。
【図８】ハフ変換部分空間内の対応する曲線のグラフ。
【図９】光学的目線追跡のためのハフ変換モデル。
【図１０】本発明のある実施形態による目線追跡システムの方法のフローチャート。
【図１】
2008546088.tif 000019
【図２】
2008546088.tif 000020
【図３】
2008546088.tif 000021
【図４】
2008546088.tif 000022
【図５】
2008546088.tif 000023
【図６】
2008546088.tif 000024
【図７】
2008546088.tif 000025
【図８】
2008546088.tif 000026
【図９】
2008546088.tif 000027
【図１０】
2008546088.tif 000028
【国際調査報告】
2008546088.tif 000029