(57)【要約】本発明は、取得された画像データの全セット内で当該画像内部の注意の焦点に基づいて離散的画像データを処理するためのシステムと方法を提供する。そのような処理の結果は、全体画像データのより限定されたサブセットに作用して、ビジョンシステムプロセスによって要求される出力値を生成することである。そのような出力値は復号されたＩＤまたは他の英数字データであってよい。このシステムと方法は２つのプロセッサグループを有するビジョンシステムにおいて、センサアレイから読み出される画像データの量より容量が小さいデータメモリを用いて実施される。第１のプロセッサグループは、データメモリと同じダイに一緒に配置された複数のＳＩＭＤプロセッサと少なくとも１台の汎用プロセッサである。データ縮小機能は、センサから読み出されたデータと同じクロックサイクル内で動作して縮小されたデータセットを生成し、これはオンダイデータメモリに保存される。全体の少なくとも一部で、縮小されない画像データが同時に（同じクロックサイクルで）第２のプロセッサに送られる一方で、第１のプロセッサは縮小されたデータセットに関して少なくとも１つの領域インジケータを第２のプロセッサに送る。領域インジケータは第２のプロセッサが作用するための少なくとも１つの注意の焦点を表す。
2013531838.tif 000002
【特許請求の範囲】
【請求項１】
一連の取得された画像の各々に関する画像データを生成する画像センサを有するビジョンシステムであって；
前記ビジョンシステムは、それぞれ単一のダイに載ってセンサと作動的に結合されている、複数のＳＩＭＤプロセッサと、少なくとも１つの汎用プロセッサと、直接アクセス可能なデータメモリとを含む第１のプロセッサグループを有しており、前記第１のプロセッサグループは画像センサから読み出された画像データを受け取り、データメモリは前記一連の取得された画像の各々に関する画像データのサイズより容量が小さく、前記第１のプロセッサグループは画像データが読み出されるのと同時に各々の画像データに関して縮小されたデータセットを生成するデータ縮小プロセスが作動するように構成および配置されており；
前記ビジョンシステムはさらに第２のプロセッサを有しており、前記第２のプロセッサは、前記縮小されたデータセットがデータメモリに保存されるのと同時に画像データの少なくとも一部を受け取り、前記第２のプロセッサは、縮小されたデータセット内の情報に基づく出力値を生成する画像解析プロセスを含んでいる
ビジョンシステム。
【請求項２】
前記縮小されたデータセットは、画像データの少なくとも一部に関して少なくとも１つの領域識別子（ＩＤ）を含み、画像解析プロセスが前記少なくとも１つの領域ＩＤによって指定された画像データの少なくとも一部の位置で作動して出力値を生成することを可能ならしめている、請求項１記載のビジョンシステム。
【請求項３】
前記画像解析プロセスがバーコード復号プロセスを含む請求項２記載のビジョンシステム。
【請求項４】
前記縮小されたデータセットは特徴情報を含み、前記出力値は検査及びアライメントデータの少なくとも１つを含む請求項１記載のビジョンシステム。
【請求項５】
前記センサが単一のダイに載っている請求項１記載のビジョンシステム。
【請求項６】
前記縮小されたデータセットは複数の画像の各々で位置を変える運動する対象または表面の少なくとも１つの特徴を含み、各々の画像はタイムスタンプを有しており、前記出力値は、運動、速度および登録情報の少なくとも１つを含む、請求項１記載のビジョンシステム。
【請求項７】
前記出力値はイベントをトリガする請求項６記載のビジョンシステム。
【請求項８】
前記縮小されたデータセットが前処理された画像データを含み、該前処理された画像データは画像データよりサイズが小さく、かつ、出力値を生成するために画像解析プロセスによって使用される少なくとも一つのデータ要素を提供する、請求項１記載のビジョンシステム。
【請求項９】
一連の取得された画像の各々に関する画像データを生成する画像センサを有するビジョンシステムであって；
前記ビジョンシステムは、それぞれ単一のダイに載ってセンサと作動的に結合されている、複数のＳＩＭＤプロセッサと、少なくとも１つの汎用プロセッサと、直接アクセス可能なデータメモリとを含む第１のプロセッサグループを有しており、前記第１のプロセッサグループは画像センサから読み出された画像データを受け取り、データメモリは前記一連の取得された画像の各々に関する画像データのサイズより容量が小さく、前記第１のプロセッサグループは画像センサから連続して１以上の画像を受け取るように配置されており；
前記第１のプロセッサグループ内の複数のＳＩＭＤプロセッサは、受け取った各々の画像にデータ縮小機能を用いて、データメモリに保存される縮小されたデータセットを生成するように構成および配置されている
ビジョンシステム。
【請求項１０】
さらに第２のプロセッサを含んでおり、前記第２のプロセッサは少なくとも縮小されたデータセットを受け取り、前記縮小されたデータセットに関して前記第２のプロセッサによって実行されるビジョンシステムのタスクに基づく出力値を生成する、請求項９記載のビジョンシステム。
【請求項１１】
前記第２のプロセッサは、画像センサから画像データが読み出されるのと同時に画像データを受け取り、前記縮小されたデータセットは第２のプロセッサにより受け取られた画像データの特定されたサブセットで前記ビジョンシステムのタスクが実行されるようにさし向ける、請求項１０記載のビジョンシステム。
【請求項１２】
一連の取得された画像の各々に関する画像データを生成する画像センサを有するビジョンシステムであって；
前記ビジョンシステムは、それぞれ単一のダイに載ってセンサと作動的に結合されている、複数のＳＩＭＤプロセッサと、少なくとも１つの汎用プロセッサと、直接アクセス可能なデータメモリとを含む第１のプロセッサグループを有しており、前記第１のプロセッサグループは画像センサから読み出された画像データを受け取り、データメモリは前記一連の取得された画像の各々に関する画像データのサイズより容量が小さく、前記第１のプロセッサグループは画像センサから連続して１以上の画像を受け取るように配置されており；
前記ビジョンシステムはさらに、画像センサから読み出された画像データを同時に受け取る追加メモリを有しており；
前記第１のプロセッサグループ内の複数のＳＩＭＤプロセッサは、受け取った各々の画像にデータ縮小機能を用いて、データメモリに保存される縮小されたデータセットを生成するように構成および配置されており、前記縮小されたデータセットは、追加メモリに保存されてさらなるビジョンシステムプロセスに供される画像データの領域に対する識別子を含んでいる
ビジョンシステム。
【請求項１３】
さらに第２のプロセッサを含んでおり、前記第２のプロセッサは追加メモリから画像データの領域を受け取り、領域に関して前記第２のプロセッサによって実行されるビジョンシステムのタスクに基づく出力値を生成する請求項１２記載のシステム。
【請求項１４】
一連の取得された画像の各々に関する画像データを生成する画像センサを有するビジョンシステムで画像データを処理するための方法であって；
複数のＳＩＭＤプロセッサと、少なくとも１つの汎用プロセッサと、直接アクセス可能なデータメモリとを含み、それらがそれぞれ単一のダイに載っている、第１のプロセッサグループによって、画像センサから読み出された画像データを受け取り、データメモリは前記一連の取得された画像の各々に関する画像データのサイズより容量が小さく；
前記第１のプロセッサグループで、画像データが読み出されるのと同時に各々の画像データに関して縮小されたデータセットを生成し；
第２のプロセッサによって、前記縮小されたデータセットがデータメモリに保存されるのと同時に画像データの少なくとも一部を受け取り；
第２のプロセッサによって、縮小されたデータセットに含まれた情報に基づいて出力値を生成する
ステップを含む方法。
【請求項１５】
前記縮小されたデータセットは、画像データの少なくとも一部に関して少なくとも１つの領域識別子（ＩＤ）を含み、画像解析プロセスが前記少なくとも１つの領域ＩＤによって指定された画像データの少なくとも一部の位置で作動して出力値を生成することを可能ならしめている、請求項１４記載の方法。
【請求項１６】
前記出力値が復号されたバーコードデータを含む請求項１５記載の方法。
【請求項１７】
前記縮小されたデータセットが特徴情報を含み、前記出力値は検査及びアライメントデータの少なくとも１つを含む、請求項１４記載の方法。
【請求項１８】
前記センサが単一のダイに載っている請求項１４記載の方法。
【請求項１９】
前記縮小されたデータセットは複数の画像の各々で位置を変える移動対象または表面の少なくとも１つの特徴を含み、各々の画像はタイムスタンプを有しており、前記出力値は、運動、速度および登録情報の少なくとも１つを含む請求項１４記載の方法。
【請求項２０】
前記出力値はイベントをトリガする請求項２１記載の方法。
【請求項２１】
前記縮小されたデータセットが前処理された画像データを含み、該前処理された画像データは画像データよりサイズが小さく、かつ、出力値を生成するために画像解析プロセスによって使用される少なくとも１つのデータ要素を提供する、請求項１４記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はマシンビジョンシステムに関し、より具体的にはビジョンシステム処理装置による画像データの処理に関する。
【背景技術】
【０００２】
マシンビジョンシステムは、見られた対象／表面に関する情報を供給するカメラセンサを含む画像取得装置を用いる。次にシステムはこの情報を多様なアルゴリズムに従って解釈して、プログラムされた意思決定、アライメント、および／または識別機能を実行する。
【０００３】
背景技術として、図１は、光学カメラレンズ１２０および関連する一次元（１Ｄ）または二次元（２Ｄ）画像センサピクセルアレイ１２１を含む例示的なビジョンシステム１１０を示す。これらのコンポーネント１２０、１２１は画像をピクセルデータのマトリックスの形で取得するために配置されている。視野１２２は取得された画像の境界１２６を定義し、これはこの例ではシステム１１０が解析しようとする特徴を有する対象または表面１２４を含む。視野１２２は関連する境界によって示されているように、対象１２４を越えて広がっていてもよい。カラーピクセルまたはグレースケールピクセル濃淡値の形で取得された画像データ１４０は、画像プロセッサ１３０によって処理されて、別の装置（図示せず）に送られる。接続されている装置の一例は、復号シンボルに適合されたデジタル信号プロセッサ（ＤＳＰ）である。画像プロセッサは、多様な処理タスクを実行するハードウェア機能および／またはプログラム命令を含んでいてもよい。たとえば、画像プロセッサは、ブロブ解析、エッジ検出および他の慣用的なビジョンシステム動作などを用いて特徴検出を実行できる。特徴はさらに画像プロセッサ１３０によって処理されて、たとえば、姿勢およびアライメントデータ、検査結果、対象認識結果または他の有用な画像データを提供する。結果は内部で使用されてアラームや信号を提供し、または別の装置またはシステムに送られてもよい。たとえばシステム１１０によって取得されたバーコードからのＩＤ特徴は、専用のデジタル信号プロセッサ（ＤＳＰ）に送られて、慣用的な復号機能を用いて特徴を英数字列に復号できる。
【０００４】
全視野１２２から取得されたピクセルデータは、処理オーバヘッドの観点からするとかなり大きいことがあり得る。一般に、このピクセルデータはセンサからプロセッサと関連するデータメモリに読み出され、続いてこの画像データで画像処理機能が実行される。プロセッサがグラフィック処理ユニット（ＧＰＵ）またはデジタル信号プロセッサＤＳＰであるとき、所望の結果を導くために取得された画像から画像データの全セットをより分けることが典型的には要求される。このことは典型的には非常に大量のデータを扱うことを装置に要求し、したがって多大な処理オーバヘッドを発生させることがある。一般的に装置（ＧＰＵ、ＤＳＰなど）は比較的小さく、対応するより大きなオフダイ・ランダムアクセスメモリ（ＲＡＭ）に対応するキャッシュから画像データが移されることが要求される、直接アクセス可能なキャッシュメモリを有し得る。このデータの動きは処理オーバヘッドの点でコストがかかる。これらの種々の問題は、要求された処理量およびその他のシステムパラメータを満たすために、ＤＳＰに画像データで過大な負荷を掛けるというシナリオにつながる。
【０００５】
とりわけ、撮像される対象または表面１２４の画像データの量は典型的には全視野１２２の画像に含まれる画像データの量より小さい。対象／表面１２４の小さい画像データの内部で、関心のある特徴１５０（たとえばバーコード、部品、ボルト穴など）は、全体画像データのさらに小さいサブセットであり得る。したがってＤＳＰまたはその他の処理装置による後続の処理のために有用な実際の画像データは、実際には全体画像データのはるかに小さいサブセットであり得る。
【０００６】
それゆえ、取得された全体画像データのセット内で有用な画像データを特定して、ビジョンシステムで使用されるプロセッサによってデータをより高速かつ効率的に処理できるようにするシステムと方法を提供することが望まれる。
【発明の概要】
【０００７】
本発明は従来の技術の短所を克服するために、取得された画像データの全セット内で当該画像内部の注意の焦点に基づいて離散的画像データを処理するためのシステムと方法を提供する。そのような処理の結果は、全体画像データのより限定されたサブセットに作用して、ビジョンシステムプロセスによって要求される出力値を生成することである。そのような出力値は復号されたＩＤまたは他の英数字データであってよい。このシステムと方法は２つのプロセッサグループを有するビジョンシステムにおいて、第１のプロセッサグループに属している、センサアレイから読み出されるべき画像データの量より容量が小さい、データメモリに沿って実施される。このデータメモリは、動作待ち時間オーバヘッドの観点から比較的低コストのメモリアクセスを与えるように、第１のプロセッサグループによって直接アクセス可能なランダムアクセスメモリ（ＲＡＭ）を含んでいてもよい。効率を増すために、第１のプロセッサグループ、典型的にはデータメモリと同じダイに一緒に配置されている、複数のＳＩＭＤプロセッサと少なくとも１台の汎用プロセッサ（ＣＰＵ）は、センサからデータが読み出されるのと同じ処理サイクル内で同時に作用するデータ縮小機能を用いて、オンダイデータメモリに保存される縮小されたデータセットを生成する。一実施形態において、全体の少なくとも一部で、縮小されない画像データはセンサからデータが読み出されるのと「同時に」（同じ処理サイクルで）第２のプロセッサグループ（代替的に「第２のプロセッサ」と定義する）に送られる。ときに、該当する場合には、処理サイクルは代替的に「クロックサイクル」と呼ばれることに留意されたい。加えて、第１のプロセッサグループは、領域インジケータが作成された後で、縮小されたデータセットに関して少なくとも１つの領域インジケータを第２のプロセッサに送る。領域インジケータは第２のプロセッサが作用するための少なくとも１つの「注意の焦点」を表す。領域インジケータは画像に関係する他のデータ、たとえば前処理されたエッジデータ、信頼値、および第２のプロセッサをそのタスクにおいて支援する他のデータを含んでいてもよい。さらに一般的に、「領域インジケータ」または「領域ＩＤ」は、第２のプロセッサが読み出された全体画像データのサブセットである画像データの一部で画像処理機能を実行できるようにする任意の縮小されたデータ値または縮小されたデータセットであってもよい。第２のプロセッサは示された領域に基づき画像解析機能を用いて縮小されない画像データセットを処理し、それによって画像に関する情報（たとえば英数字コード、良否信号、アライメント値など）を含む１以上の出力値を生成する。データは種々の実施形態に従い、多様なメカニズムとプロセス第１のプロセッサグループを用いてから第２のプロセッサに送られ、これはシフトレジスタおよびダイレクトメモリアクセス（ＤＭＡ）構成を含むが、これに限られない。
【０００８】
別の実施形態において、縮小されたデータセットは第１のプロセッサグループによって作成され、そして注意の焦点が縮小されたデータセット内に位置しているときは、データ選択機能が領域を表す縮小されたデータセットを第２のプロセッサに転送する。この縮小されたデータセットは、画像データおよび／または第２のプロセッサがそのタスクを実行するために有用なその他の関連情報を含んでいてもよい。それ以外の情報は前処理された特徴情報、エッジ位置データ、信頼値などであってよい。この場合、出力値は第２のプロセッサによって、可能ならば受け取った縮小されたデータセットに基づいて生成される。
【０００９】
一実施形態において、第２のプロセッサはシンボル（ＩＤ）復号器である。１Ｄおよび／または２Ｄバーコードを復号して、バーコードを表す英数字出力値を生成する。第１のプロセッサは、少なくともバーコード状の特徴を含んだ画像において１以上の領域を決定して、それらを領域ＩＤなど他のデータと一緒に第２のプロセッサに提供する。上述したように、この実施形態における第２のプロセッサは、慣用的なバーコード復号機能を用いるオフダイＤＳＰを含んでいてもよい。
【００１０】
一実施形態において、第１のプロセッサグループは固定動作またはアライメント動作を行い、第２のプロセッサは固定データを受け取って、対象／表面の画像で測定動作、計測動作または検査動作を行う。第１のプロセッサグループは、画像データ上で特定されたパターンの位置に関する領域ＩＤを送る。第１のプロセッサグループはパターン検出プロセス（たとえば慣用的なブロブ解析、エッジ検出、幾何学的パターンマッチングなど）を含んで、画像がパターンを持つ位置を決定できるようにする。画像の全部または一部が、任意の有用な前処理情報と一緒に第２のプロセッサに送られる。この情報を使用して、対象／表面に関するサイズ、回転、スキュー、欠陥の有無などを含み得る検査が実行される。パターン位置（すなわち処理のための注意の焦点）を知ることにより、第２のプロセッサは、全体画像において所定のパターンを持った領域を含まない位置での動作を省くことができる。
【００１１】
別の実施形態において、このシステムと方法は粗い／詳細なアライメントタスクに用いられる。粗いアライメントは第１のプロセッサグループでアライメントプロセスによって行われ、１以上のパターンを用いて画像内の１以上の対象および／または表面特徴の位置を粗い精度で特定する。この粗い精度は例示的な実装においてピクセルまたは約１／２ピクセルレベルであってよい。この粗いアライメントステップは、シングルステップの詳細なアライメントプロセスに通常伴う処理時間およびデータ保存オーバヘッドを節約する。粗いアライメントプロセスはそれによって取得された画像内の対象または特徴の特定されたパターンのおよその（粗い）位置に対するデータを提供して、画像内のそれぞれの対象または特徴の位置を特定する。特定された粗いアライメント位置に関するデータおよび関連するデータ（および他のプロセスで有用な特徴情報）が、オフダイの第２のプロセッサに転送される。画像データはセンサから読み出されるのと同時に第２のプロセッサに提供されることもできる。第２のプロセッサはこれらのデータを使用して、全体画像データで詳細なアライメントプロセスを実行するが、これは好適には粗く位置合わせされた画像の領域に焦点を当てる。一般に、関心のある領域はこれらの領域の周囲（たとえば１ないし数ピクセルの境界）に描くことができ、詳細なアライメントプロセスは１以上のパターンを使用して各々の領域に作用することにより高精度の（たとえば、１０分の１ピクセルおよび１０分の１回転度、またはより詳細な）アライメント値を導く。１以上の粗く位置合わせされた対象または特徴を含む全体画像の領域に詳細なアライメントを集中する能力により、詳細なアライメントプロセスは、１回のプロセスステップで全画像が詳細に位置合わせされた場合より高速かつ効率的に行われることができる。この実施形態の出力値は、多自由度における対象または特徴の箇所の高精度な位置である。
【００１２】
別の実施形態において、このシステムと方法は対象または表面の粗い／詳細な検査のために用いられる。低精度の検査プロセスは第１のプロセッサグループで行われ、種々の誤検出の特定と、有効な検査結果とを含み得る候補結果を高速に特定する。第１のプロセッサグループがそのような結果を生成できる速さは、誤検出が存在する可能性を埋め合わせる。特徴候補に対する位置およびその他のデータは、より精確な検査プロセス（たとえば合成画像データまたは実際に教示された画像データに基づく）を含む第２のプロセッサに送られる。検査プロセスは全画像よりもむしろ候補に「注意を集中」し、それによって待ち時間オーバヘッドを少なくする。出力値は検査結果（たとえば合格品、不良品、公差内／公差外品）である。
【００１３】
別の実施形態において、システムは運動する対象または運動する表面の動きを特徴付けるように実装できる。領域ＩＤおよび特徴は第１のプロセッサグループによって運動する物体または表面から取得される画像の流れから生成され、１以上の特徴の位置と、各々の画像に対するタイムスタンプを含んでいる。これらの領域ＩＤはオンダイデータメモリに保存されて、第２のプロセッサに送られる。第２のプロセッサは各々の画像における特徴の位置と画像間の相対的時間を相関させて、対象または表面の速度、運動および／または登録情報を決定する。この情報は第２のプロセッサ、第１のプロセッサグループまたは別のプロセッサに使用されて、カウンタの割り出し、速度制御の変化、指定された時間におけるカッタの動作、その他所定の量の動きが起きたときに生じるべき活動などのイベントを引き起こすことができる。
【００１４】
さらに別の実施形態において、このシステムと方法は画像データを、（ａ）画像データを第１のプロセッサグループとオンダイデータメモリに読み出すのと同時に直接センサから、または（ｂ）適当なデータリンクまたはバスを介して第１のプロセッサグループを通して受け取るように配置された追加メモリを用いる。この追加メモリ（たとえばＲＡＭ）は画像データを既知のアドレスに保存する。第１のプロセッサグループは縮小されたデータセットを生成する。これは追加メモリ内の画像データの部分／ブロックに対するアドレスの形式による領域ＩＤであってもよく、第２のプロセッサがそのビジョンシステムの処理タスクをさし向ける（焦点を当てる）べきデータの領域を表す。画像データのアドレス指定されたブロックまたは領域は、追加メモリから第２のプロセッサに送られる。第２のプロセッサは所望のビジョンシステムのタスクに基づいて出力値を生成する。
【図面の簡単な説明】
【００１５】
【図１】後続の処理にとって関心のある特徴を有する対象または表面の視野内で画像を取得する、上述した例示的なビジョンシステム処理装置の斜視図である。
【図２】例示的な実施形態に従いビジョンシステムとして提供され得る、チップ（ＶＳｏＣ）上の例示的なビジョンシステムのブロック図である。
【図３】図２のＶＳｏＣと関連する装置との相互接続を示すブロック図である。
【図４】図２のＶＳｏＣの機能的コンポーネントを示すブロック図である。
【図５】図２のＶＳｏＣの機能的コンポーネントを示し、例示的な実施形態に従い線形アレイプロセッサ（ＬＡＰ）の個々のコンポーネントの詳細を含む、より詳細な模式図である。
【図６】例示的な実施形態に従いモデルの座標を変換するために用いる図２のＶＳｏＣの画像アドレスプロセッサのブロック図である。
【図７】例示的な実施形態に従いＶＳｏＣによってモデルの座標を変換するための例示的な数式を詳細に示すテキストブロックである。
【図８】例示的な実施形態に従い図２のＶＳｏＣのコンパレータ・アキュムレータの模式図である。
【図９】システム内部の第１のプロセッサグループと第２のプロセッサの一般化された画像処理機能を示すブロック図である。
【図１０】第１のプロセッサグループを用いて読み出された画像データの流れに関して縮小されたデータセットを生成し、さらに第２のプロセッサで縮小されたデータセットに基づいて画像データの少なくとも一部を処理し、縮小されたデータセットが第１のプロセッサによって処理するためのオンラインデータメモリに保存されるのと同時に、画像データが第２のプロセッサに同時に送られる、例示的なプロセスのフローチャートである。
【図１１】第１のプロセッサグループを用いて読み出された画像データの流れに関して縮小されたデータセットを生成し、さらに第２のプロセッサで縮小されたデータセットに基づいて画像データの少なくとも一部を処理し、縮小されたデータセットが生成されて領域が特定されると画像データの領域が第２のプロセッサに送られる、例示的なプロセスのフローチャートである。
【図１２】例示的な実施形態に従いアライメントまたは固定動作を実行する際に使用する読み出された画像データの流れに関して縮小されたデータセットを生成するためのプロセスのフローチャートである。
【図１３】例示的な実施形態に従いアライメントまたは検査動作を実行する際に使用する読み出された画像データの流れに関して縮小されたデータセットを生成するためのプロセスのフローチャートである。
【図１４】運動する対象または表面の速度、運動および／または登録情報を決定するために使用される、縮小されたデータセットを生成するためのプロセスのフローチャートである。
【図１５】センサおよび読み出し回路と相互接続された第１のプロセッサグループと、第２のプロセッサと、第１のプロセッサに基づいて画像データを保存してアドレス指定された領域またはブロックを第２のプロセッサに送る追加メモリのブロック図である。
【発明を実施するための形態】
【００１６】
以下に、本発明を添付の図面に基づいて説明する。
注意の焦点に基づいて取得された画像データの全セット内で離散的画像データを処理するための例示的なシステムと方法は、離散的処理サイクルで相互接続されたピクセルアレイから読み出された行全体のデータ（すなわち各々のクロックサイクルで同時に処理されている行に含まれる全データ）を処理できるアーキテクチャを定義するビジョンシステムプロセッサで動作するように適合されている。これを達成するために、全体プロセッサは画像データ保存メモリ（幅１０２４の記憶アレイを有し、本明細書では「データメモリ」とも呼ぶ）と、ピクセルアレイ（この例では８ビットまたは６ビットピクセルの１０２４×７６８ピクセルアレイ）との間に広いオンビットデータバス（たとえば１０２４×１バス）を含むように編成されている。このメモリは別の類似の幅（たとえば１０２４×１）のバスによって画像処理コンポーネントと相互に接続されており、これはたとえば近傍演算で非常に効率的な単一命令複数データ（ＳＩＭＤ）プロセッサを用いて行全体を同時に処理するように編成されている。したがって各々のプロセッサは行内部の近傍データを処理している他のプロセッサと相互作用できる。これらのプロセッサは組み合わせて線形アレイプロセッサ（ＬＡＰ）と呼ばれる。例示的な実施形態においてこれらのプロセッサはそれぞれ９０ＭＨｚで動作する。それらは行全体のデータ（１０２４要素）で同時に１ビット演算処理装置（ＡＬＵ）として動作するように構成されている。例示的な実施形態においてＬＡＰ内のプロセッサはさらに、広範かつ効率的な近傍演算を容易にするためにデータがプロセッサ間で最大１３列移動できるように適合されている。例示的な処理速度はＬＡＰに対して約１１，５２０メガバイト／秒の処理量を生み出す。プロセッサアーキテクチャの一種が共通の譲受人による米国特許出願明細書第１２／１８４，１８７号「ビジョンセンサ、システムと方法」（Ｅ．ジョン・マクゲリー他）で開示されており、その教示内容は有益な背景情報として参照することにより本明細書に組み込まれ、以下の関連部分でも説明される。さらに一般的に本明細書に記載されたシステムと方法は、多様な市販の画像取得・処理システムで動作するように適合され得る。たとえば初期バージョンのシングルチップ画像センサが出版物「デジタルプロセッサアレイを有するシングルチップ画像センサ」（ロバート・フォルヒハイマー他、ＶＬＳＩ信号処理誌、第５巻、１２１〜１３１ページ（１９９３年））に記載されている。
【００１７】
Ｉ．ビジョンシステム・オン・チップ（ＶＳｏＣ）の概観
図２は、本発明の実施形態に従うシステムと方法で使用するためのシングルチップ・ビジョンシステム２００（ＶＳｏＣ）のブロック図を描写する。ＶＳｏＣ２００はシングルチップ上にピクセルアレイ２０８と１以上の回路２３０を含む。本明細書での用法では、「チップ」という用語は、よく知られている用語「ダイ」と同じ意味で使われる。これは適当な回路要素と線を上に配置した単一のシリコンウエハ片である。製造においては、チップまたはダイは製造工程のある段階で離散的パッケージに分離されるチップまたはダイの大型ウエハの部分であり得るが、以下においては単一のコンポーネントとして扱う。種々の実施形態において、ピクセルアレイ２０８は、撮像されている場面に対する検知された光に基づいてピクセル信号を１以上の回路２３０に提供するように構成されている。また、種々の実施形態において１以上の回路２３０は、ピクセルアレイ２０８から提供されたピクセル信号を処理して画像を形成し、および随意に画像に関してパターンマッチングを実行するように構成されている。種々の実施形態においてピクセルアレイ２０８と１以上の回路２３０は半導体材料からなる基板上に単一の集積回路を形成する。また、種々の実施形態において、データをＶＳｏＣ２００に入力し、およびデータＶＳｏＣ２００をから出力するために１以上のＩ／Ｏピン（図示せず）をＶＳｏＣ２００は含んでいる。
【００１８】
ＶＳｏＣ２００はマシンビジョン用途、コンシューマ用途など、さまざまな用途で使用できる。種々の実施形態においてＶＳｏＣ２００を、（ｉ）画像取得、（ｉｉ）画像前処理、および（ｉｉｉ）パターンマッチングのいずれか１以上の必要がある用途で使用することができる。種々の実施形態においてＶＳｏＣ２００は、シングルチップまたは集積回路において画像を取得し前処理、および／またはパターンマッチングを実行できるようにする。
【００１９】
さらにＶＳｏＣ２００について、図３は本発明の実施形態に従う相互接続されたシステム３００のブロック図を描写する。システム３００は、有線または無線ネットワークまたはその他のデータ接続３２０によって作動的に結合されているＶＳｏＣ２００および相互接続された装置３１０を含む。システム３００において、ＶＳｏＣ２００は装置３１０と通信しており、装置３１０とＶＳｏＣとの間で信号が伝送される。例示的な実施形態において、図示された装置３１０は、スキャニング装置、および／またはベースコンピュータ（ＰＣ）、またはスキャニング装置からＩＤデータを受け取るその他のデータプロセッサの１以上のコンポーネント（たとえばディスプレイ、別個のＩＤ復号器回路、種々のインジケータ、アラートなど）を表すことができる。装置３１０とＶＳｏＣとの間の通信は、多様なデータと制御信号を含んでいてもよい。種々の実施形態において、ＶＳｏＣ２００は画像を取得して、画像の処理を実行し、処理の結果に基づいてデータを装置３１０に提供するように構成されている。たとえば種々の実施形態において、ＶＳｏＣ２００は１以上の特徴の１以上のモデルに基づいて画像内の１以上の特徴をサーチし、このサーチの結果に基づいてデータを装置３１０に出力するように構成されている。画像を取得するための画像取得と、画像内の特徴をサーチするパターンマッチングの両方をシングルチップまたは集積回路で実行できるようにすることにより、別個のプロセッサによってパターンマッチングを実行するため画像データがＶＳｏＣ２００からＶＳｏＣ２００の外部にある別個のプロセッサに送られなければならない場合と比べて、ＶＳｏＣ２００から送られるデータの量を減らすことができる。
【００２０】
たとえば種々の実施形態において、例示的なＶＳｏＣ２００は画像を取得し、その画像の１以上の特徴のモデルを用いて１以上の特徴に対する画像をサーチし、続いて画像内で１以上の特徴が検出された場合はトリガ信号を装置３１０に提供することができる。また、幾つかの実施形態において、ＶＳｏＣ２００は画像を取得し、画像の１以上の特徴の１以上の特徴のモデルを用いて１以上の特徴をサーチし、続いて画像内に１以上の特徴が検出される場合は、１以上の特徴の物理的場面における位置を示す位置データを装置３１０に提供することができる。その帰結として、そのような実施形態においてはＶＳｏＣ２００から全画像データを別個の外部プロセッサに送って、これらの別個の外部プロセッサに特徴のサーチを実行させるよりも、ＶＳｏＣ２００はこのサーチをビジョンセンサチップ上で実行できる。そのような場合には、ＶＳｏＣはトリガ信号、アライメント／位置データ、特徴データなどに含まれたより最小の情報を装置３００に送ることができるが、これによりＶＳｏＣ２００からオフチップで送られるデータの量を減らすことができる。
【００２１】
種々の実施形態において、ＶＳｏＣ２００から送られるデータの量を減らすことにより、ＶＳｏＣ２００が画像を取得できる速度（毎秒のフレーム）を増すことができる。なぜならばＶＳｏＣ２００の動作は送信動作の完了に制約されることがより少ないからである。たとえば幾つかの実施形態において、ＶＳｏＣ２００は画像を２００フレーム・パー・セコンド以上の速度で取得して処理するように構成されてよく、これによりＶＳｏＣ２００は自動ビデオ監視、車両制御、ＩＤ読取装置／スキャニング装置におけるトリガと特徴検出／抽出（以下に説明する）、ジェスチャー認識、静止ビジョンセンサまたは移動ビジョンセンサを用いた三次元（３Ｄ）モデルによる対象の寸法決定、運動解析などの用途で有益に使用できる。
【００２２】
種々の実施形態において、ＶＳｏＣ２００はセルフトリガするように構成されてよく、種々の実施形態においてＶＳｏＣ２００はその周囲を連続的に撮像して、連続的な画像の流れを取得できる。より具体的には、ＶＳｏＣ２００は他のビジョンアプリケーションのためのソフトウェアまたはハードウェアトリガとして提供するように構成できる。それはたとえばＩＤ読取装置のためのソフトウェアトリガとして使用され、関連する復号プロセスまたはアプリケーション、たとえば相互接続された装置によって復号するためにＩＤ特徴を検出して特定することを目指してＩＤ候補を含んだ関心のある領域が処理される（以下にさらに説明する）。
【００２３】
ＶＳｏＣ２００からオフチップで送られるデータの量を減らすことにより、信号をオフチップで駆動するのに必要とされる電流が少なくなるので電力の消費は減る。同様に、これはＶＳｏＣ２００と外部装置の間でのデータの交換が減少するために電磁干渉（ＥＭＩ）を減らす。電力消費が減ることは、バッテリー制限用途など多くの用途で有利である。
【００２４】
幾つかの実施形態において、装置３１０は画像データを処理できるタイプの装置であり、ＶＳｏＣ２００は画像データを装置３１０に送るように構成されている。ＶＳｏＣ２００が画像データを装置３１０に送るように構成された幾つかの実施形態において、ＶＳｏＣ２００は１以上の特徴のモデルを用いて画像を１以上の特徴についてサーチし、画像内で１以上の特徴の少なくとも１つが検出された場合のみその画像の画像データを装置３１０に送るように構成されている。また、ＶＳｏＣ２００が画像データを装置３１０に送るように構成された幾つかの実施形態において、ＶＳｏＣ２００は１以上の特徴のモデルを用いて画像を１以上の特徴についてサーチし、このサーチから特定された特徴に基づいて決定される画像内の関心のある領域に対する画像データのみを装置３１０に送るように構成されている。ＶＳｏＣ２００が画像データを装置３１０に送るように構成された種々の実施形態において、ＶＳｏＣ２００は当該画像に対する全画像データを装置３１０に送るように制御可能であってよい。幾つかの実施形態において、ＶＳｏＣ２００は１以上の特徴が検出された画像に関してモデルの姿勢を示めす姿勢情報を装置３１０に送るように構成されている。
【００２５】
種々の実施形態において、装置３１０はプロセッサを含むことができ、ＶＳｏＣ２００は処理タスクを装置３１０のプロセッサと相互に交換し、および／またはＶＳｏＣ２００と装置３１０のプロセッサの各々によってどの特定のタスクが実行されるべきかを使用者が指定できるようにし、たとえば処理量、メモリの使用などを最適化できるように構成され得る。また、種々の実施形態において、装置３１０はプロセッサを含んでよく、ＶＳｏＣ２００は１以上の特徴を含んでいる候補画像または画像の部分を決定し、次に候補画像または画像の部分を装置３１０による後続の処理のために装置３１０に転送するように構成されてもよい。幾つかの実施形態において、ＶＳｏＣ２００は他の１以上のコンポーネント（図示せず）、たとえば自動焦点光学系、アダプタ装置などと接続して使用されて、たとえば種々異なる被写界深度または種々異なる照明を提供する一方で、画像を取得し、随意に種々の用途にとって有用な時間周期内にそれらを処理することができる。
【００２６】
本明細書で説明される例示的なＶＳｏＣ、および一般的に望ましいと考えられているその他の実装はいわゆるデータ「ファネル」として作用し、そこにおいてこれらの実装は取得された１組の画像データを、装置３１０に送られるように縮小されたサイズのデータに変換することを容易にする一方で、この縮小されたデータセットでさらにバックエンドおよび／またはオフチップ処理を実行するのに十分である有意味な情報特徴を保持する。例を示すと、そのようなファネリング処理は、（ａ）アレイからの画像データを処理して一般的に装置転送画像のサイズおよび／または深度を縮小すること、（ｂ）画像を処理して原画像と比較したときに縮小されたサイズの特徴を抽出し、縮小されたサイズの特徴セットを装置に転送すること、および（ｃ）多数の画像フレームを処理し、そこから縮小された数の画像を全部または縮小されたデータセットで送ることを含むが、これらに限定されない。さらに本明細書に記載するシステムと方法に従って使用するために考えられたＶＳｏＣ実装は一般に、画像またはその他の処理されたデータ（たとえばエッジ、ＲＯＩなど）を前処理し、この処理されたデータを装置（３１０）に送信することを可能にするが、前処理はＶＳｏＣによって装置よりも効率的に実行される。そのためＶＳｏＣにおいてより生データが高速に前処理されて焦点を絞ったデータセットを生み出すので処理速度を増すことができ、このデータセットは装置によってゆっくり処理することができる。種々の実装において、画像からのピクセルデータを大きいグルーピング（たとえば取得されたピクセルデータ行）として同時に処理できる高度な並行プロセス環境が存在することが、高速前処理を容易にする。大グループプロセスの恩恵を受ける何らかの動作、たとえば近傍演算は、そのような並行環境において大幅に増した効率で実行される。
【００２７】
さらに以下に説明するように、例示的なシステムと方法を参照すると、実装のファネリング特徴は、次の事実によって強化される。すなわち、本発明に従う種々のＶＳｏＣ実装は、データをピクセルアレイからバッファメモリに読み出すと同時に保存されたデータを処理して、より精選されたおよび／または小さいサイズのデータセットを生成することを可能にする。一実施形態において、この処理は１行ずつ実行されるが、同時に処理されるデータの別のグルーピングも想定される。これはデータを処理できる速度が生画像データの取得速度であるフレーム・パー・セコンド（ＦＰＳ）に比べて高いことによる。
【００２８】
図４は、ＶＳｏＣ２００の実施形態の内部アーキテクチャを例示する。ＶＳｏＣ２００は上述したピクセルアレイ２０８と上述した１以上の回路２３０（図２）を含む。種々の実施形態において、１以上の回路２３０は制御回路４２２、汎用メモリ４０２、処理回路４２４、画像アドレスプロセッサ４１０、１以上の画像メモリ装置４１４、画像データセレクタ４１５、モデルデータシフト４１６、１以上のコンパレータ・アキュムレータ４２０、およびプライオリティエンコーダ４１７を含む。
【００２９】
種々の実施形態において、ピクセルアレイ２０８は、撮像されている場面に対して検知された光に基づいて１以上のピクセル信号を提供するように構成されている。また、種々の実施形態において、処理回路４２４はピクセルアレイ２０８から提供された１以上のピクセル信号を処理して画像を生成するように構成されている。一般に、例示的な実施形態の処理回路はＳＩＭＤアーキテクチャとして実装されており、ピクセルアレイ２０８から送られた行全体のピクセルデータは同時に処理され、やはり１以上の画像メモリ装置と通信するワイドバス４０４を介して転送され、これらの画像メモリ装置も行全体の画像ピクセルデータを同時に（すなわち共通のクロックサイクル）読み込みまたは読み出すことができるワイドバスによって特徴付けられる。幾つかの実施形態において、ピクセルアレイ２０８から提供された１以上のピクセル信号はアナログ信号であり、そのような信号は、ＬＡＰによる処理に先立って、適切なＡＤＣ回路でデジタル信号に変換される。種々の実施形態において、処理回路４２４は１以上のピクセル信号から獲得されたデジタルピクセル値で１以上の前処理動作を実行して、前処理された画像データを提供するように構成されている。
【００３０】
例を示すと、種々の実施形態において処理回路４２４は、デジタルピクセル値に含まれたノイズを減らすノイズリダクションのための前処理を実行するように構成されている。画像ノイズはピクセル値の不規則変動であり、ＶＳｏＣ２００内の電子雑音などによって引き起こされる。種々の実施形態において、処理回路４２４はノイズリダクションをフィルタリングプロセスによって、たとえば原ピクセル値が近傍ピクセル値の強度の中央値と置き換えられる中央値フィルタリングによって達成するように構成されている。このノイズリダクションフィルタリング機能について、さらに以下に説明する。幾つかの実施形態において、処理回路４２４は他のタイプのフィルタリング、たとえば低域フィルタリングを実行するように構成されており、その場合は平滑化演算を表すマスクでピクセル値のデータを畳み込み演算することによってノイズを減らして、各々のピクセル値を近傍ピクセル値の値に近づける。中央値フィルタリングと低域フィルタリングは単にフィルタリングのタイプの例として提供されるにすぎず、他の種々の実施形態においてＶＳｏＣ２００は他のタイプのフィルタリングを実行するように構成してもよいと理解されるべきである。
【００３１】
種々の実施形態において、処理回路４２４はまた６ビットまたは８ビット（または他の値の）グレースケールピクセル値を１ビットバイナリピクセル値に変換するための前処理を実行するように構成されている。幾つかの実施形態において、処理回路４２４は、たとえばグレースケールピクセル値と閾値との比較に基づいて、グレースケールピクセル値を絶対的な黒ピクセル値または白ピクセル値に変換する閾値化プロセスを実行するように構成されている。そのような閾値化プロセスによりピクセル値を２値化することができる。種々の実施形態において処理回路４２４はまたデータで形態学的な閉演算を実行構成されており、構造化要素を用いてデータで膨張が実行され、次にその結果生じるデータで構造化要素を用いて侵食が実行される。このような形態学的な閉演算は、たとえば画像の前景領域内にある背景のカラーホールを収縮させるために用いられてよい。
【００３２】
種々の実施形態において、１以上の画像メモリ装置４１４はある画像の画像データを保存するように構成されている。たとえば、上述したように、種々の実施形態において、処理回路４２４はデータピクセルアレイ２０８から提供されたピクセルデータで処理を実行して、処理の結果を取得された画像のピクセル強度データとして１以上の画像メモリ装置４１４に保存する。種々の実施形態において、１以上の画像メモリ装置４１４はデータを保存および提供するために、それぞれランダムアクセスメモリ（ＲＡＭ）などを含む。ＲＡＭのサイズとレイアウトは、メモリの行がピクセルアレイ２０８の行に対応するアドレスを含むように提供され得る。同様に、処理回路内の個々のＳＩＭＤプロセッサ（集合的に上述したＬＡＰを定義する）４２５は、与えられたピクセルアレイおよびメモリ行における要素の数と同じ数であってもよい。種々の実施形態において、制御回路４２２はピクセルアレイ２０８を制御して光を捕捉し、ピクセル信号を提供するように構成されており、および処理回路４２４を制御してピクセルアレイ２０８からのピクセル信号を処理してある画像の画像データを提供するように構成されている。幾つかの実施形態において、ピクセルアレイ２０８は可視スペクトル内にある光を捕捉して、捕捉された光に基づいてピクセル信号を提供するように構成されている。幾つかの実施形態において、ピクセルアレイ２０８は可視スペクトルの外部にある光をさらに（あるいは代替的に）捕捉し、捕捉された光に基づいてピクセル信号を提供するように構成されている。幾つかの実施形態において、ピクセルアレイ２０８は、可視スペクトルと可視スペクトルの外部の双方から光を捕捉し、捕捉された光に基づいてピクセル信号を提供するように構成されている。
【００３３】
種々の実施形態において、制御回路４２２は外部装置、たとえば上述したＰＣから１以上の特徴のモデルに対してモデル命令を受け取るように構成され、およびモデル命令を汎用メモリ４０２に保存するように構成されている。種々の実施形態において、汎用メモリ４０２はデータを保存および提供するためにＲＡＭなどを含む。種々の実施形態において、汎用メモリ４０２は制御回路４２２によって実行できるプログラムを保存する。幾つかの実施形態において、汎用メモリ４０２はＶＳｏＣ２００の外部にある外部メモリ（図示せず）で補足されてよく、そのような実施形態においてＶＳｏＣ２００は外部メモリと汎用メモリ４０２との間でデータを転送できるように構成できる。種々の実施形態において、図４の構成要素は所望すれば種々異なる用途のために補足または省略でき、以下にそのような変形例の幾つかを例示的なシステムと方法を参照して説明する。
【００３４】
種々の実施形態において、１以上の回路２３０は１以上の特徴のモデルを用いて画像の１以上の特徴をサーチするように構成されている。幾つかの実施形態において、サーチされる画像は１以上の画像メモリ装置４１４に保存され、画像をサーチするために用いられる１以上の特徴のモデルのモデル命令は汎用メモリ４０２に保存される。また、種々の実施形態において制御回路４２２は汎用メモリ４０２からのモデル命令を実行し、モデル命令に基づいて処理回路４２４、画像アドレスプロセッサ４１０、モデルデータ４１６および複数のコンパレータ・アキュムレータ４００を制御するように構成されている。画像マッチングおよび対象／特徴姿勢（アライメント）決定を実行するように適合された幾つかの実施形態において、各々のモデル命令はモデル基準点に対する位置を指定する相応の座標を含む。また、幾つかの実施形態において、制御回路４２２はプログラムされた画像モデルのモデル命令から座標を画像アドレスプロセッサ４１０に提供するように構成され、画像アドレスプロセッサ４１０は座標を少なくとも部分的に１以上の変換値に基づいて変換された座標に変換するように構成されている。種々の画像アドレスプロセッサ４１０の実施形態では、モデルの座標を幾何学的変換に従って変換できるようにする。
【００３５】
モデルの座標を幾何学的変換に従って変換する能力を持つと、画像内の特徴をサーチするとき、種々異なる画像において画像内の特徴が種々異なる角度で回転され、種々異なるサイズに拡大縮小され、または種々異なる位置に移動される場合に有利である。幾つかの例において、特徴のモデルを幾何学的に変換する能力により、画像内の特徴の回転、縮尺または位置に関わりなくモデルを画像内の特徴を検出するために使用できる。種々の画像アドレスプロセッサ４１０の実施形態では、モデルの１以上の座標を１以上のアフィン変換値に従って変換するように構成されている。
【００３６】
種々の実施形態において、画像アドレスプロセッサ４１０は、変換された座標の第１の座標を１以上の画像メモリ装置４１４に提供して１以上の画像メモリ装置４１４にアクセスし、それにより１以上の画像メモリ装置４１４が、変換された座標の第１の座標によってアドレス指定されたデータを画像データセレクタ４１５に提供するように構成されている。種々の実施形態において、画像アドレスプロセッサ４１０もまた変換された座標の第２の座標を画像データセレクタ４１５に提供し、それにより画像データセレクタ４１５が、１以上の画像メモリ装置４１４から受け取ったデータを変換された座標の第２の座標に基づく量だけシフトさせるように構成されている。
【００３７】
種々の実施形態において、制御回路４２２は累積インクリメントと１以上の値をモデルからモデルデータシフタ４１６に提供するように構成されており、モデルデータシフタ４１６は１以上の値と累積インクリメントを１以上のコンパレータ・アキュムレータ４２０に提供するように構成されている。実施形態において、１以上のコンパレータ・アキュムレータ４２０はサーチされる画像のデータに基づいて得られた１以上の値をモデルからの１以上の値と比較するように構成されている。また、種々の実施形態において、１以上のコンパレータ・アキュムレータ４２０は比較の結果に基づいて累積インクリメントを累積するための累積を選択的に実行するように構成されている。
【００３８】
種々の実施形態において、処理回路４２４もまた、累積された値を１以上のコンパレータ・アキュムレータ４００から受け取り、バイナリタグワードを形成して画像とモデルデータとの比較に対して局所的な最大反応を示すように構成されている。さらに、プライオリティエンコーダ４１７は、処理回路４２４からバイナリタグワードを受け取り、バイナリタグワードに基づいて出力を制御回路４２２に提供するように構成できる。種々の実施形態において、制御回路４２２はさらにＶＳｏＣ２００から出力を提供するように構成されている。
【００３９】
図５はＶＳｏＣ２００の実施形態のより詳細な表現を描写する。種々の実施形態において、ＶＳｏＣ２００は上述したピクセルアレイ２０８と並んで、ピクセルコントローラ５０５、複数のアナログコンパレータ５０７、アナログ傾斜波発生器５０４、複数のアナログ・デジタル・コンバータ（ＡＤＣ）ラッチ５０９、およびデジタル傾斜波発生器５０３を含む。種々の実施形態において、ピクセルアレイ２０８は行と列に配列された複数のピクセル回路５０６を含む。また、種々の実施形態において、各々のピクセル回路５０６は感光要素または光検出器、たとえば光ダイオードなどを含んで、撮像されている場面の対応する部分の光強度をサンプリングし、各々のピクセル回路５０６はサンプリングされた光強度に基づいてアナログピクセル信号を提供するように構成されている。
【００４０】
種々の実施形態において、ピクセルコントローラ５０５はピクセルアレイ２０８内のピクセル回路５０６に制御信号を供給して、ピクセル回路５０６の動作を制御する。幾つかの実施形態において、ピクセルアレイ２０８の同じ行にあるピクセル回路５０６はピクセルコントローラ５０５からの共通の行の制御信号を共有し、ピクセルアレイ２０８の同じ列にあるピクセル回路５０６は出力を提供する共通の列読み出しラインを共有する。種々の実施形態において、ピクセルコントローラ５０５は、ピクセル回路５０６を制御して１行ずつデータの出力を提供する。また、種々の実施形態において、ピクセルアレイ２０８内のピクセル回路５０６の各々の列から出力されたアナログピクセル信号は、対応するアナログコンパレータ５０７に入力される。
【００４１】
種々の実施形態において、ピクセルアレイ２０８から出力されたアナログピクセル信号のアナログ・デジタル変換が、複数のアナログコンパレータ２０７、アナログ傾斜波発生器２０４、複数のＡＤＣラッチ２０９、およびデジタル傾斜波発生器５０３を用いて実行される。幾つかの実施形態において、ピクセルアレイ５０８の各々の列で出力されたアナログピクセル信号が、アナログ傾斜波発生器５０４によって生成される共通のアナログ基準レベルに対応するアナログコンパレータ５０７で比較される。また、幾つかの実施形態において、デジタル傾斜波発生器５０３は、アナログ傾斜波発生器５０４によって生成されるアナログ基準レベルを表すデジタル信号を生成するように構成されている。種々の実施形態において、何らかの列でアナログ基準レベルがアナログピクセル信号のレベルに等しい場合、対応するアナログコンパレータ５０７はデジタル出力を生成して対応するＡＤＣラッチ５０９に、デジタル傾斜波発生器５０３によって供給されるデジタル信号の値をラッチさせる。
【００４２】
種々の実施形態において、ＶＳｏＣ２００さらに制御プロセッサ５０１、上述したエッジ汎用メモリ４０２、複数の画像入力レジスタ５１０、複数の入力／出力（Ｉ／Ｏ）レジスタ５１１、複数のシフトレジスタ５１２、複数の演算処理装置（ＡＬＵ）５１３、複数の画像メモリ装置４１４（上述）、および適当なサイズのバスを介して種々の回路コンポーネントを相互接続する複数のデータパス５１８を含む。種々の実施形態において、制御プロセッサ５０１は汎用メモリ５０２に接続されており、ここからプログラムとモデル獲得してＶＳｏＣ２００の制御要素を実行する。種々の実施形態において、各々のＡＤＣラッチ５０９は対応する画像入力レジスタ５１０に接続されており、各々の画像入力レジスタ５１０は出力データラインによってデータパス５１８の対応するブランチに接続されている。
【００４３】
種々の実施形態において、各々のデータパス５１８は、データをビットシリアル形式で搬送するシリアルデータパスを含む。他の種々の実施形態において、各々のデータパス５１８は、データを搬送するための複数のデータラインを含んでいてもよい。幾つかの実施形態において、複数のデータパス５１８はバスの一部分である。また、幾つかの実施形態において、ピクセルアレイ２０８内のピクセル回路５０６の各列に対して少なくとも１個のデータパス５１８がある。種々の実施形態において、各々のデータパス５１８は対応する画像入力レジスタ５１０、対応するＩ／Ｏレジスタ５１１、対応するシフトレジスタ５１２、対応するＡＬＵ５１３および対応する画像メモリ装置４１４に接続されている。また、種々の実施形態において、複数のＩ／Ｏレジスタ５１１はそれぞれ制御プロセッサ５０１に接続されていて、制御プロセッサ５０１からデータを入力し、および制御プロセッサ５０１にデータを出力する。幾つかの実施形態において、複数のシフトレジスタ５１２は、もしあれば左右すぐ隣のシフトレジスタにそれぞれ接続されている。また、幾つかの実施形態において各々のＡＬＵ５１３は、少なくとも２個のデータ入力レジスタ（ａおよびｂ）と１個のキャリーレジスタ（ｃ）を含む１組の対応するレジスタを通して、対応するデータパス５１８に接続されている。
【００４４】
種々の実施形態において、各々の画像入力レジスタ５１０は、対応するデータパス５１８によって、対応するＩ／Ｏレジスタ５１１、対応するシフトレジスタ５１２、対応するＡＬＵ５１３、および対応する画像メモリ装置４１４に、デジタル化された画像データが利用できるようにする。種々の処理動作において、画像データは複数の画像メモリ装置４１４にバッファリングされ、集合的にＬＡＰ４２５の一部を含む複数のＡＬＵ５１３を用いて処理される。種々の実施形態において、処理された画像データまたはその他のデータは、二次データ処理および／またはＶＳｏＣ２００の外部にある装置との外部データ通信のために、制御プロセッサ５０１によって複数のＩ／Ｏレジスタ５１１を通してアクセスされてもよい。
【００４５】
図４および図５を参照すると、種々の実施形態において、制御回路４２２は制御プロセッサ５０１とピクセルコントローラ５０５を含む。また、種々の実施形態において、処理回路４２４は複数のアナログコンパレータ５０７、アナログ傾斜波発生器５０４、複数のＡＤＣラッチ５０９、デジタル傾斜波発生器５０３、複数の画像入力レジスタ５１０、複数のＩ／Ｏレジスタ５１１、複数のシフトレジスタ５１２および複数のＡＬＵ５１３を含む。種々の実施形態において、１以上の画像メモリ装置４１４（図４）は、図５に例示されているように複数の画像メモリ装置４１４を含む。
【００４６】
さらに図５を参照すると、種々の実施形態において、ＶＳｏＣ２００はさらに画像アドレスプロセッサ４１０、画像データセレクタ４１５、モデルデータシフタ４１６、複数のコンパレータ・アキュムレータ４２０およびプライオリティエンコーダ４１７を含む。種々の実施形態において、各々のデータパス５１８は画像データセレクタ４１５に接続されている。また、種々の実施形態において、制御プロセッサ５０１は画像アドレスプロセッサ４１０に接続されており、画像アドレスプロセッサ４１０は同じく複数の画像メモリ装置４１４のアドレス入力と画像のデータセレクタ４１５の制御入力に接続されている。
【００４７】
幾つかの実施形態において、制御プロセッサ５０１はモデルデータシフタ４１６の入力に接続されており、モデルデータシフタ４１６の出力は複数のコンパレータ・アキュムレータ４２０の各々の入力に接続されている。各々のコンパレータ・アキュムレータ４２０もまた画像データセレクタ４１５から入力を受け取るために接続されている。種々の実施形態において、画像データセレクタ４１５は双方向バレルシフタまたは類似のものを含む。また、種々の実施形態において、複数のコンパレータ・アキュムレータ４２０の各々は、対応するデータパス５１８と作動的に結合されている。幾つかの実施形態において、プライオリティエンコーダ４１７は各データパス５１８に接続され、制御プロセッサ５０１に接続されている。図５に例示されたＶＳｏＣ２００のアーキテクチャの接続および／または編成は例を示すために提供されたものであり、他の種々の実施形態においてＶＳｏＣ２００はその他の適当な構成を持ち得ることが理解されるべきである。
【００４８】
図６は、ＶＳｏＣ２００で使用するための画像アドレスプロセッサ４１０の実施形態のブロック図を描写する。種々の画像アドレスプロセッサ４１０の実施形態では、少なくとも部分的に１以上の変換値に基づいてモデルの座標を変換された座標に変換するように構成されている。種々の画像アドレスプロセッサ４１０の実施形態では変換値を保存するために、変換係数レジスタ６０２、６０３、６０４、６０５、画像行オフセットレジスタ６０１および画像列オフセットレジスタ６０６を含む。種々の画像アドレスプロセッサ４１０の実施形態ではさらに符号付き乗算器６０７、６０８、６０９、６１０、および加算器６１１、６１２、６１３、６１４を含む。
【００４９】
アドレスプロセッサの動作の例を示すと、モデルの第１の座標（図６にＸで示す）とモデルの第２の座標（図６にＹで示す）は、画像アドレスプロセッサ４１０への入力として提供される。図５と図６を参照すると、種々の実施形態において制御プロセッサ５０１はモデルのモデル命令を汎用メモリ４０２からフェッチして、モデル命令に含まれている座標を画像アドレスプロセッサ４１０に提供するように構成されている。たとえば制御プロセッサ５０１は、モデルのモデル命令、たとえばモデル例として提供されるモデルの第１のモデル命令を汎用メモリ４０２からフェッチして、モデル命令に含まれている座標、たとえば例では座標（−７、−２）を画像アドレスプロセッサ４１０に提供するように構成できる。この例では、第１の座標に対する−７の値は画像アドレスプロセッサ４１０に入力されるＸとして提供され、第２の座標に対する−２の値は画像アドレスプロセッサ４１０に入力されるＹとして提供されよう。
【００５０】
図６に示されているように、種々の実施形態において変換係数レジスタ６０２、６０３、６０４、６０５は、それぞれアフィン変換係数Ｋ００、Ｋ０１、Ｋ１１、Ｋ１０を保存するために書き込み可能であり、Ｋ００、Ｋ０１、Ｋ１１、Ｋ１０の値は所望の変換を実行できるように設定可能である。種々の実施形態において、画像行オフセットレジスタ６０１は行オフセット値ＤＲを保存するために書き込み可能であり、画像列オフセットレジスタ６０６は列オフセット値ＤＣを保存するために書き込み可能であり、ＤＲとＤＣの値は設定可能である。種々の実施形態において制御プロセッサ５０１（図５）はモデルに対する所望の幾何学的変換に基づいて画像アドレスプロセッサ４１０内でＫ００、Ｋ０１、Ｋ１１、Ｋ１０、ＤＲ、ＤＣの値を設定するように構成されている。
【００５１】
種々の実施形態において、符号付き乗算器６０７は変換係数レジスタ６０２からの入力と、変換されるべき第１の座標である入力を受け取り、出力を加算器６１１に提供する。また、種々の実施形態において符号付き乗算器６０８は変換係数レジスタ６０３からの入力と、変換されるべき第２の座標である入力を受け取り、出力を加算器６１１に提供する。種々の実施形態において、符号付き乗算器６０９は変換係数レジスタ６０４からの入力と、変換されるべき第２の座標である入力を受け取り、出力を加算器６１２に提供する。また、種々の実施形態において、符号付き乗算器６１０は変換係数レジスタ６０５からの入力と、変換されるべき第１の座標である入力を受け取り、出力を加算器６１２に提供する。
【００５２】
種々の実施形態において、加算器６１１は符号付き乗算器６０７と符号付き乗算器６０８から入力を受け取り、出力を加算器６１３に提供する。また、種々の実施形態において、加算器６１２は符号付き乗算器６０９と符号付き乗算器６１０から入力を受け取り、出力を加算器６１４に提供する。種々の実施形態において、加算器６１３は画像行オフセットレジスタ６０１と加算器６１１から入力を受け取り、出力として第１の変換された座標（図６にＲで示す）を提供する。また、種々の実施形態において、加算器６１４は画像列オフセットレジスタ６０６と加算器６１２から入力を受け取り、出力として第２の変換された座標（図６にＣで示す）を提供する。このようにして図６の実施形態において画像アドレスプロセッサ６００は、複数の変換値Ｋ００、Ｋ０１、Ｋ１１、Κ１０、ＤＲ、ＤＣに基づいて座標（Ｘ、Ｙ）を変換座標（Ｒ、Ｃ）に変換できるようにする。
【００５３】
図７は、図６の画像アドレスプロセッサ４１０の実施形態に対して（Ｘ、Ｙ）入力と（Ｒ、Ｃ）出力との関係を指定する数式を記載したテキストボックス７１０を示す。図７に例示されているように、Ｒに対する式はＲ＝Ｘ＊Ｋ００＋Ｙ＊Ｋ０１＋ＤＲとして提供され、Ｃに対する式はＣ＝Ｘ＊Ｋ１０＋Ｙ＊Ｋ１１＋ＤＣとして提供される。このようにして図６の画像アドレスプロセッサ４１０の実施形態は、幾何学的変換、たとえば回転、拡大縮小または移動に従い所望の幾何学的変換に対する変換値を設定することによりモデルの座標を変換できるようにする。画像アドレスプロセッサ４１０を使用することで幾何学的変換を可能にすることにより、１以上の特徴のモデルが１以上の画像内の特徴の種々異なる回転、縮尺および移動に対するパターンマッチングのために使用できる。
【００５４】
図６の画像アドレスプロセッサ４１０の画像アドレスプロセッサ４１０の実施形態では６個の変換値Ｋ００、Ｋ０１、Ｋ１１、Ｋ１０、ＤＲ、ＤＣに基づいて座標を変換できるようにする。したがって図６の画像アドレスプロセッサ４１０の実施形態は変換のための６自由度を可能にする。当然のことながら、画像アドレスプロセッサ４１０の他の種々の実施形態において、変換に対して６を超える自由度を許容するために６個を超える変換値が用いられてよいと理解されるべきである。たとえば種々の画像アドレスプロセッサ４１０の実施形態で別の３個の変化値が設けられ、画像アドレスプロセッサ４１０はさらに透視歪みに対する変換を可能にするように構成されている。また、他の種々の実施形態において、画像アドレスプロセッサ４１０の実施形態に６個以下の変換値を使用してもよいことが理解されるべきである。たとえば、種々の画像アドレスプロセッサ４１０の実施形態は移動を可能にするために２個の変換値のみ設定できるようにしてよい。また、図６に例示された画像アドレスプロセッサ４１０の実施形態は、例示的な画像アドレスプロセッサの実装例を示すために提供されたものであり、他の種々の実施形態で代替的な構成を、座標の変換に使用するための画像アドレスプロセッサとして使用できることが理解されるべきである。
【００５５】
図８は、ＶＳｏＣ（図４）で使用するためのコンパレータ・アキュムレータ４２０の実施形態のブロック図を描写する。種々の実施形態において、コンパレータ・アキュムレータ４２０は、画像データシフタ８０１、画像データ復号器８０２、複数のＡＮＤゲート８０３、ＯＲゲート８０４、マッチシフタ８０５、マッチエンコーダ８０６およびマッチアキュムレータ８０７を含む。種々の実施形態において、画像データシフタ８０１は画像データ入力ライン８０８でデータを受け取り、画像データシフタ８０１内で画像データシフタ８０１がシフトするようにクロックされる度にデータを１位置だけシフトするように構成されている。また、種々の実施形態において画像データシフタ８０１は出力を画像データ復号器８０２に提供するように構成されている。
【００５６】
種々の実施形態において、画像データ復号器８０２は画像データシフタ８０１から提供された値を復号して、復号された値の各ビットを複数のＡＮＤゲート８０３の対応するＡＮＤゲートの対応する第１の入力に提供するように構成されている。また、種々の実施形態において、モデルの１以上のモデル値の各ビットが１以上のモデルデータ入力ライン８０９を介して複数のＡＮＤゲート８０３の対応するＡＮＤゲートの対応する第２の入力に提供される。
【００５７】
種々の実施形態において、画像からのビットは画像データシフタ８０１内にシフトされ、次いで画像データ復号器８０２により、画像データシフタ８０１の２進数のデシマル値に対応するビット位置に「１」ビット、および他のすべての位置に「０」ビットを有するビットストリングに２進展開することによって復号される。この場合、復号されたビットストリング内の低位ビットは０のビット位置に対応する。続いて、種々の実施形態において、画像データ復号器８０２から復号されたビットストリングは複数のＡＮＤゲート８０３を用いて、モデル内の値から再構成され１以上のモデルデータ入力ライン８０９を介して提供されたビットストリングと比較することができる。種々の実施形態において、ＯＲゲート８０４は複数のＡＮＤゲート８０３の各々の出力を受け取り、複数のＡＮＤゲート８０３の出力のいずれかが「１」の場合は「１」の出力ビットを提供する。幾つかの実施形態において、ＯＲゲート８０４は、複数のＡＮＤゲート８０３のいずれかが「１」の値を有するビットを出力したか決定するように構成された複数のＯＲゲートに置き換えてもよい。種々の実施形態において、ＯＲゲート８０４の出力は、ある画像の画像データとあるモデルのモデルデータとの間で、当該モデルの特定の幾何学的変換と、当該画像に関して幾何学的に変換されたモデルの特定の位置について一致が検出されたか否かを示す。種々の実施形態において、複数のＡＮＤゲート８０３とＯＲゲート８０４はコンパレータと見なすことができる。当然のことながら、複数のＡＮＤゲート８０３とＯＲゲート８０４は比較を実行するための構成の例を示すために提供されたものであり、他の種々の実施形態においてその他のタイプのコンパレータを使用できることが理解されるべきである。
【００５８】
種々の実施形態において、ＯＲゲート８０４の出力はマッチシフタ８０５に提供され、マッチシフタ８０５はＯＲゲート８０４から提供されたビットを入力し、シフトマッチシフタ８０５内のその他のビットはマッチシフタ８０５がクロックされる度にデータを１位置だけシフトするように構成されている。種々の実施形態において、マッチシフタ８０５内のデータはマッチエンコーダ８０６に出力され、マッチエンコーダ８０６はマッチシフタ８０５内に保存されたビットで表される値をコード化して、出力をマッチアキュムレータ８０７のクロックに提供するように構成されている。種々の実施形態において、マッチアキュムレータ８０７は１以上のモデルデータ入力ライン８０９を介してモデルの累積インクリメントを受け取り、マッチエンコーダ８０６の出力の値に基づいてクロックされると累積インクリメントを累積するように構成されている。また、種々の実施形態において、マッチアキュムレータ８０７はマッチアキュムレータ８０７内で累積された値を対応するデータパス５１８に出力するように構成されている。
【００５９】
種々の実施形態において、制御回路４２２（図４）は、信号を各々のコンパレータ・アキュムレータ４２０に送り、制御回路４２２がリセット命令を含むモデル命令を実行すると、各コンパレータ・アキュムレータ４２０内のマッチアキュムレータ８０７がデフォルト値にリセットされるように構成されている。また、種々の実施形態において、制御回路４２２は信号を送り、制御回路４２２が比較命令を含むモデル命令を実行すると、各コンパレータ・アキュムレータ４２０内のマッチアキュムレータ８０７によって累積が行われるように構成されている。そのような実施形態において、各コンパレータ・アキュムレータ４２０内のマッチアキュムレータ８０７は、対応するマッチエンコーダ８０６の出力によってクロックされることもでき、累積が許可されると、マッチアキュムレータ８０７は対応するマッチエンコーダ８０６から出力された値に依存して累積を実行するか、または実行しない。
【００６０】
ＩＩ．ＶＳｏＣシステム実装
取得された画像データの全セット内で当該画像内部の注意の焦点に基づいて離散的画像データを処理するためのシステムと方法の例示的な実施形態において、全体的ビジョンシステムアーキテクチャに実装されるビジョンセンサ（ＶＳｏＣ）２００が提供される。このシステムと方法の機能を相互参照しやすくするために、上記の例示的なＶＳｏＣ２００について説明された種々の要素が再編成される。たとえば読み出し回路の要素は、一部は上述した制御回路４２２内にあり、一部は処理回路４２４（図４および図５）内にある。同様に、ＬＡＰ４２５は全体的な処理回路４２４の部分である。読者が例示的なシステムと方法の動作の基礎をなす例示的（または代替的）なＶＳｏＣアーキテクチャの環境をさらに理解するのを助けるために、追加的な機能および相互接続（たとえばオフダイの第２のプロセッサおよび種々の通信ポート）についても説明する。
【００６１】
図示されたピクセルアレイ２０８は例示的な表面または対象およびこれらと関連する関心のある特徴を含む視野（ＦＯＶ）を撮像し、関心のある特徴はビジョンシステムの決定または後続のプロセス（たとえばバーコード復号）の前提となる所望の画像情報を含んでいる。ＦＯＶに対するピクセルアレイ２０８の向きは、角度と回転において非常に可変である。同様に、対象／表面の運動が存在する場合に、ピクセルアレイはこの実施形態に従って考えられる画像の取得と処理のために、復号に必要とされる情報をより確実に取得することができるフレームレートで動いていることも可能である。例示的なピクセルアレイは１，０２８列と７８６行で構成できる。そのようなアレイは境界効果を避けるために上下左右に２行もしくは２列のダミーを含むことができ、したがって例示的な１，０２４行×７８２列のアクティブな８ビット（または代替的に６ビット）ピクセルアレイを提供する。ＡＤＣ回路を含め相互接続された読み出し回路および上述した関連する機能は、アナログセンサ出力をデジタルピクセルデータに変換し、これは例示的な実施形態に従い関連するバスを介して１０２４行として線形アレイプロセッサ（ＬＡＰ）４２５に読み出される。ピクセルアレイの構成は非常に可変であることに留意されたい。例示的なアレイは２Ｄ構成であるが、代替的な実装においては１以上のＩＤアレイも用いることができる。
【００６２】
ピクセルアレイ２０８内の画像取得プロセスは、センサコントローラによって扱われる。例示的な実装は、アレイ内の各ピクセル行に対する動作と、読み出し回路に対するイベントのシーケンスを制御するために必要な波形を生成する有限状態機械（ＦＳＭ）からなる。センサコントローラの動作は、使用者によりＶＳｏＣ２００の部分である別個の１６ビットプロセッサ５０１（上述した図５の制御プロセッサ５０１）内のコンフィギュレーションレジスタを介してプログラムでき、これについては以下に説明する。これらのレジスタは、ＲＯＩのパラメータ、シャッタモード、露光時間およびＡＤＣ解像度を含め、ピクセルアレイ２０８と読み出し回路のすべてのプログラム可能なパラメータを構成する。画像フレームが取得されると、これが読み出されて１０２４幅で１行ずつデジタル形式に変換される。この読み出しおよびＡ／Ｄ変換プロセスと並行して、ＬＡＰ４２５はこのシステムと方法のＲＯＩ検出および特徴抽出用途のプログラムコードに従って画像を処理する（以下に説明する）。
【００６３】
ＬＡＰ４２５は１，０２４個の同一処理要素一次元アレイからなるパラレルプロセッサであり、それらの各々は一般的に上述したように１ビットデータパス、１６アキュムレータビット、キャリーフラグおよびイネーブルフラグを含んでいる。ＬＡＰ４２５はＳＩＭＤマシンとして実装され、すべてのプロセッサは同調して動作し、同じ動作を異なるデータで実行する。
【００６４】
各々のＬＡＰ要素はデータメモリの１列（４，０９６ビット）から１ビットを読み出しおよび書き込むことができる。行アドレスはＬＡＰメモリの読み出しまたは書き込みサイクルの間はすべての要素に対して同じである。データメモリとＬＡＰとの間には、読み出されたデータを左または右に１３位置までシフトするように構成できるバレルシフタがある。これにより各ＬＡＰ要素はそれ自身の位置から左および右の１３列からのデータにアクセス（各クロックサイクル）することが許容される。データメモリ（すなわち図４で上述した１以上の画像メモリ装置４１４）は幅１０２４のバスを介して相互に接続されており、１，０２４×１，０２４ビットのブロックからなる。このメモリは画像処理の中間結果を保存するために使用される。メモリは処理され全体画像のうちＬＡＰに由来する部分のみ保存するように適合されていることに留意すべきである。以下に説明するように、メモリはまたＲＯＩ情報や抽出された特徴など処理の中間結果も保存する。こうしてピクセルアレイからのデータは絶えずメモリ４１４を通して動かされ、成果のあるＩＤ検出動作に関係しなければ放棄され、または情報が有望なＩＤ特性を示せば復号などの後続のステップおよびプロセッサに移される。典型的な用途において、取得された画像は１行ずつＬＡＰに送られる。ＬＡＰ４２５において、データは処理されて同等の二値画像を生成する。その結果生じる二値画像は後続の処理のために漸進的にデータメモリに保存される。ビジョンシステムの幾つかの実施形態において、二値画像はＶＳｏＣの相関器によって処理されて正規化相関とパターンマッチング情報を獲得する。該当する場合は、二値画像は正規化相関を加速して、画像内のパターンマッチングを実行するために使用できる。プライオリティエンコーダは、画像行における推移を検出するために最適化される。上述したプライオリティエンコーダ（１０２４ビット幅）はバスを介してメモリ４１４と相互作用して、データメモリ行における設定ビットの高速検出に備える。
【００６５】
ＬＡＰ４２５で実行される多数の画像処理動作があり、画像行内のポイントの接続性または分布が検出されなければならない。例示的な実施形態において、これらの動作を加速するためにＶＳｏＣ２００はアレイを横断して「伝播・生成」機能を実装するカスタム論理ブロックを包含する。伝播・生成ユニット（バス上）の２つの可能な用途は、対象の位置特定と「未知ポイント」の解明である。ブロックは１，０２４個の同一セルからなる。各セルは近傍セルと通信する１対の信号「伝播ＩＮ」および「伝播ＯＵＴ」を有する（それぞれ右方向と左方向に対応）。アレイの左側と右側の入力はゼロにリセットされる。ＬＡＰ４２５ワードを伝播・生成ユニットに書き込んだ後、伝播・生成ユニットの値が有効になるまで、例示的に５サイクル必要である。
【００６６】
制御プロセッサ５０１はＶＳｏＣ２００に、ＬＡＰ４２５とは別個のコンパクトな高速処理ユニットを提供する。例示的な実施形態においてプロセッサ５０１は１６ビットユニットであるが、その他のサイズも考えられる。プロセッサ５０１はＬＡＰ４２５と相関器に効率的な低レベル画像処理と制御を提供する。プロセッサ５０１は汎用命令セットを用いて動作するが、二値画像はＶＳｏＣの動作の典型的なモードであるため、二値画像で動作するための追加的な専用命令もサポートする。プロセッサ５０１は、任意の主要なフラグまたは周辺的なフラグを含め多数のソースからトリガされて、インタラプトをサポートする。プロセッサ５０１はそれぞれの１６ビットバスを介してＬＡＰ４２５およびデータメモリ４１４と相互接続されている。
【００６７】
例示的な実施形態において制御プロセッサ５０１（本明細書では「ＣＰＵ」とも呼ばれる）は、縮小命令セットコンピュータ（ＲＩＳＣ）を採用したハーバードアーキテクチャを用いて実装され、プログラムとデータに対して別個のメモリを提供するが、プログラムメモリはデータ保存にも使用できる。制御プロセッサ５０１はＲ０からＲ１４まで１６個の汎用レジスタを定義する。例示的な実装においてこれらのレジスタはそれぞれ１６ビット幅である。例示的な１７ビットプログラムカウンタ／シーケンサもあり、これはプロセッサがプログラムＲＡＭ（すなわち上記の汎用メモリ４０２）に６５，５３６１６ビットワード、および同じ量をプログラムＲＯＭ９４８に直接アドレス指定できるようにする（ただし本発明の実施形態では現在ＲＯＭのみ４８Ｋのアクティブワードを有する）。すべての計算はレジスタ間で行われる。したがってメモリからの値は、操作される前にレジスタにロードされる。
【００６８】
データメモリ４１４はレジスタをポインタとして用いて、バスを介して１６ビットワードとしてアクセスされる。レジスタは随意にメモリアクセス後にプレデクリメントもしくはポストデクリメントまたはプレインクリメント／ポストインクリメントされ得る。例示的な実装においてポインタプラス一定オフセットアドレス指定モードが設けられている。２５６Ｋワード（５１２Ｋバイト）の全データメモリにアクセスすることを可能にするために、例示的な実装ではページレジスタが使用される。二値画像はデータメモリにおいて１６ピクセルで１ワードに圧縮される。効率的なアクセスを可能にするために、２個のポインタレジスタＰＸおよびＰＹが使用される。これらは単一のピクセルをアドレス指定するために使用され、アクセス後に独立にポストインクリメントおよび／またはポスト−デクリメントされるか、または修正されないままである。ＰＸレジスタは１０ビットであり、ＰＹレジスタは１２ビットでイメージマッピングを反映する（１，０２４列×４，０９６行）。
【００６９】
１２８ワードＩ／Ｏスペースも例示的に提供され（図示せず）、絶対的アドレス指定を用いて直接アクセスされる。これは多くのシステムと周辺レジスタを含んでおり、残りはスクラッチメモリによって占められる。追加的なレジスタ演算のために補助レジスタセットも提供される。ＬＡＰ４２５のアキュムレータバンク（１６ビットの１，０２４ワード）はＰＸレジスタをポインタとして用いてアクセスできる。ＡＬＵ演算はワーキングレジスタ間でＡＬＵと１６×１６乗算器・累算器を用いて行われ、任意の２個の汎用レジスタをオペランドとすることができる。そのような演算の３２ビット結果は、３２ビットＭＲレジスタ（図示せず）に保存されるまたは累積される。シフタが例示的に設けられており、これはＭＲレジスタを０〜３１ビットだけシフトダウンでき、結果を指定された汎用レジスタに入れる。乗算器およびシフタは符号付きまたは符号なしの演算用に構成できる。
【００７０】
プログラムメモリ４０２は１６ビットの６５，５３６ワードを保存する（図４で上述した汎用メモリの一部）。このＲＡＭメモリ４０２は物理的に３２ビットの３２Ｋワードとして編成できる。ＲＯＭは３２ビットの２４Ｋワーとして編成できる。ページレジスタは、ＲＯＭまたはＳＲＡＭが、プログラムフェッチ、プログラムメモリ読み出しおよびプログラムメモリ書き込みに対する別個のページでアクセスされたか決定する。起動時にプロセッサ５０１は最初にＲＯＭからを実行する。ＲＯＭはプロセッサの起動コンフィギュレーションピンを読み出して所望の二次起動モードを決定する起動ソフトウェアを含んでいる。これらのモードはホストパラレルポート（ＦＩＦＯ）からの起動、ＳＰＩスレーブポートを介するホストプロセッサからの起動、およびＳＰＩマスタポートを介するシリアルフラッシュからの起動を含み、これらはすべて１６ビット通信バスを介してプロセッサと相互接続されている。レジスタ値およびデータのＲＡＭとの双方向伝送を可能にする全二重通信を実装するために、ＳＰＩチャネルが提供されていることに留意されたい。標準ＳＰＩマスタポートはシリアルフラッシュメモリ、またはその他の周辺装置にアクセスすることが意図されている。ソフトウェア制御下で２台の互換装置を接続できるようにするために２個のセレクトピンが設けられている。スレーブＳＰＩポートはホストマイクロコントローラとの代替的インタフェースとして使用できる。利用可能な起動モードの一つが選択されたら、ソフトウェアは適当な装置からコードをロードして、プログラムＲＡＭ４０２に保存する。すべてのソフトウェアがロードされたら、制御はプログラムＲＡＭ４０２のスタートに送られる。
【００７１】
パラレル処理タスクとシリアル処理タスクとの効率的なバランスを提供するために、例示的なＶＳｏＣのＬＡＰ４２５に関連して多様なプロセッサ実装を使用できることを明確にしておくべきである。例示的な実施形態において、ＣＰＵ／プロセッサ５０１とＬＡＰ４２５は同時に動作せず、むしろいずれか一方は他方が与えられた命令を実行している間はアイドル状態に留まることを要求する。図示されたＣＰＵ／プロセッサ５０１は例示的な実施形態に従って可能な１つの実装にすぎない。ＬＡＰ、データメモリおよびその他の関連するコンポーネントとの適当な相互接続を有する代替的な実施形態において、プロセッサは種々の（非ハーバードおよび／または非ＲＩＳＣ）アーキテクチャに基づいて実装できる。
【００７２】
ＳＰＩポート構成に加えて、パラレル（ＦＩＦＯ）ポートが設けられている。このポートはオフチップホストプロセッサ、マイクロコントローラまたはその他の装置、たとえば例示的な実施形態の第２のプロセッサとの通信のために意図されている。第２のプロセッサはデータメモリ４１４からＬＡＰ４２５を介して処理されデータを受け取り、受け取ったデータで特定の動作または一群の動作を実行して、所望の出力値を提供しようとする。このプロセスについてさらに以下に説明する。代替的に、同じピンはここに示すビデオポートとして使用でき、ビデオポートを備えた別のプロセッサに画像を出力する。一実施形態において、５１２ワードのホストポートは１０２４ピクセル行を約２５．５マイクロ秒または約５１画像／秒で転送する。バスに沿って別個の専用ビデオポートを設けてもよいことに留意されたい。
【００７３】
ツイストペア線を通してデータを連続的に高速で送るために低電圧差動信号（ＬＶＤＳ）ポートが設けられている。これは多様な商業ソースからの非直列化ＩＣと互換性のあるスタートビット、１０データビットおよびストップビットからなるフレームフォーマットを使用する。種々の実施形態において、ＬＶＤＳポートは第２のプロセッサと通信するためにホストポートの代替として使用できる。さらに、シリアルポートが標準ＵＡＲＴの形で設けられており、および例示的に１６までのＧＰＩＯラインを有する汎用入力／出力（ＧＰＩＯ）ポートが設けられており、バスに沿った他のＩ／Ｏポートのピンで多重化される。ＩＥＥＥ標準合同検査活動グループ（ＪＴＡＧ）ポートがデバッグポートとして使用でき、プロセッサ５０１と内部コンフィギュレーションレジスタを通してほとんどすべての内部装置と直接接続できる。このチャネルによりメインメモリおよび内部装置にアクセスすることが可能である。電力管理機能、システムクロック生成器、リセット機能およびバステーブルＲＯＭもＶＳｏＣ２００内で例示的に設けられている。加えて、バス相互接続はプロセッサ５０１に反応する統計ユニットである。このユニットは例示的にエッジトラッキング動作中に統計を計算する。統計は１組のＩ／Ｏマップレジスタに保存される。エッジトラッキングが完了したら、統計を使用して追跡されている対象の周囲と、直交線および対角線による境界ボックスを決定することができる。
【００７４】
上述したＶＳｏＣの実装は、例示的な実施形態に従うシステムと方法で使用するための種々可能なプロセッサ実装の例であることを明確にしておくべきである。代替的な実施形態において、プロセッサは種々のパラレルアーキテクチャの周囲に、別個の制御プロセッサを有して、または有さずに編成できる。同様に、本発明のシステムと方法を実行するために、高度にパラレルではなく適当な速度とデータ処理能力を有する１以上のプロセッサを使用できる。したがって本明細書で使用する「ＶＳｏＣ」または「ビジョンセンサ」という用語は広く捉えるべきであり、上述した何らかの動作が他のオンチップコンポーネントと相互接続された別個のコンポーネントによりオフチップ（オフダイ）で実行されるものも含め、多様なプロセッサアーキテクチャを含む。
【００７５】
たとえば、本明細書の例示的なアーキテクチャはＳＩＭＤ構成（ＬＡＰ）、メモリ、汎用プロセッサ（ＣＰＵ）およびピクセルアレイを単一のチップ／ダイ上に含んでＶＳｏＣアーキテクチャを定義する一方で、（たとえば）ピクセルアレイはオフチップ／オフダイで存在し、適当なリードによって作動的に相互接続され得ることが明確に想定されている。このことは何らかの実装において望ましいであろう。たとえば、装置フォームファクタが特定のジオメトリを規定する場合、または処理アセンブリとは別個のピクセルアレイが所望される場合などである。
【００７６】
ＩＩＩ．注意の焦点に基づく処理
Ａ．システムの概観
最初に例示的な実施形態を図９の一般化された配置構成を参照して説明する。これは例示的なシステムと方法に従って使用するための上述したＶＳｏＣアーキテクチャの内部の機能を要約したものである。以下に例示的な実装について説明する。ＶＳｏＣ内で実行されるオンダイコンポーネントおよび機能１０１０は離散的なボックスで示されている。センサおよび読み出し機能１０２０は、視野（ＦＯＶ）１０３０内で例示的な対象１０３２の連続画像を取得する。対象はビジョンシステムプロセスにおいて１以上の特別関心のある領域１０３４を含んでいる。以下に説明するように、これらの領域はビジョンシステムのプロセスに対する１以上の注意の焦点として確定される。センサ／読み出し機能１０２０はこの画像のシーケンスから処理されていない画像データ１０３６をＳＩＭＤプロセッサ１０４０のアレイに提供し、これがオンダイの汎用ＣＰＵ１０５０と連携して前処理アプリケーション１０４２を実行する。ＳＩＭＤアレイとＣＰＵは集合的に、本明細書で説明するオンダイの「第１のプロセッサグループ」１０５２を定義する。画像データで実行される前処理のタイプは、本明細書で想定されている種々の実施形態においては非常に可変である。例示的な実施形態において、前処理プロセスは１組の前処理された画像データ１０６２を生成し、これはＳＩＭＤアレイ１０４０と作動的に結合されたオンダイメモリ１０６０に保存される。一実施形態において、以下に説明するように、前処理されたデータは例示的に特別関心のある領域に関する縮小されたデータセットを含む。前処理されたデータは当該領域に関する情報、たとえば注目された特徴のピクセル位置やその他の画像データパラメータを含む。この縮小されたデータセットは全体画像データよりはるかにコンパクトであり、より容易にメモリ１０６０に保存される。
【００７７】
画像データ１０３６が読み出されると、第１のプロセッサグループ１０５２は典型的に読み出しと「並行して」または「同時に」（すなわち同じ処理サイクルで）前処理を実行する。種々の実施形態において前処理されたデータは同様にメモリ１０６０に保存される一方で、原画像データの少なくとも一部（１０３６）（たとえばデータに関係する領域）１０６４は並行して（同じ処理サイクルで）第２のプロセッサにまたはプロセッサグループ１０７０に送られて、ローカルメモリ１０７４に保存される。適当な時間で他の追加のおよび／または関連する情報１０６６も第２のプロセッサに送られ得る（そのような情報が作成された後）。第２のプロセッサは上述したようにオフダイで存在できる。本明細書で用いられている「第２のプロセッサ」という用語は、画像データに関して１以上の画像処理ステップを実行する１以上の処理メカニズム（たとえば「第２のプロセッサグループ」）を指す。以下に、例示的な実施形態に関して第２のプロセッサの種々の例を説明する。代替的な実施形態において、第２のプロセッサは他の画像処理装置コンポーネントとオンダイまたは部分的にオンダイで具体化できる。他の例示的な実施形態において、第２のプロセッサ１０７０に送られた画像データ１０６４および情報１０６６は前処理された画像データセットとして特徴付けられる。以下に説明するように、これは縮小された画像（たとえば原画像またはエッジ画像よりピクセルが少ない画像）、特徴情報、または第２のプロセッサ１０７０が所定の機能を実行する上で有用な原画像データの他のサブセットおよび派生物であってよい。一般的に、第２のプロセッサの機能は、受け取ったデータで（ハードウェアおよび／またはソフトウェアを用いる）画像処理アプリケーション１０７２を実行して出力値１０８０を生成し、これらの出力値１０８０は出力値を利用するタスク１０９０で用いられる。本明細書で用いられている「出力値」という用語は、使用者または装置がタスクを実行したり、決定したりできるようにする、画像から導き出された情報またはデータを指す。「出力値」は典型的に、記号コードに関するデータ、部分アライメントの向きおよび検査結果（欠陥／非欠陥、公差内／公差外、アラーム／非アラーム、拒否／承認など）を提供する数字およびテキストによる情報または他の記号による情報であるが、これらに限定されない。「出力値」は一般的に、実際にタスクを実行する決定または命令を得るためになおも後続のステップ（たとえば人または装置による新しい画像のレビュー）を必要とする実際の画像ピクセル値の任意のグルーピングであり、具体的には部分画像、圧縮画像、精選された画像、フィルタリングされた画像などである。
【００７８】
データは、種々の実施形態に従いシフトレジスタおよびダイレクトメモリアクセス（ＤＭＡ）構成を含む（これらに限定されない）多様なメカニズムとプロセスを用いて、第１のプロセッサグループから第２のプロセッサに送られる。そのようなメカニズムと構成、および関連するプロセス（図示せず）は、当業者にとっては明白なはずである。
【００７９】
本明細書で説明するＳＩＭＤアーキテクチャは、全体の読み出しから離散的ピクセルに割り当てられたグループからプロセッサを用いてデータを有益に処理することに留意されたい。一実施形態において、プロセッサはセンサアレイの行に対応するが、その他の編成も想定されている。これは例示的にビットシリアルデザインとして実装される。代替として、本明細書の原理はバイトシリアルデザインまたは他の「データグルーピング」・シリアルデザインとして実装できることが明確に想定されている。この構成は一般的に、画像のクワドラント（２Ｄセクタ）が与えられた時間に与えられたプロセッサによって処理される慣用のブロックレベル処理と対照をなす。以下に、上述したプロセッサ構成および関連する機能を用いる種々の例示的な実施形態を詳しく説明する。
【００８０】
とりわけ、例示的な実施形態のシステムと方法は、第１のプロセッサグループ１０５２と関連したデータメモリ１０６０を提供し、これは与えられた画像取得イベントでセンサアレイ１０２０から読み出される画像データの量より容量が小さい。データメモリは、別個のプログラムメモリ構造を含む全体メモリアーキテクチャ（典型的にオンダイ）の部分であってもよい。代替的にデータメモリは統合されたまたは単一のメモリアレイにおいてプログラムメモリ（および随意に他のタスク指向メモリ構造）と組み合わせてもよい。このデータメモリは第１のプロセッサグループによって「直接アクセス可能な」ランダムアクセスメモリ（ＲＡＭ）を含んでいてもよい。つまりプロセッサグループは、保存されたデータの部分のシリアル送信を要求するバスベースのアーキテクチャではなく、比較的直接的な接続を通してデータメモリの記憶位置をアドレス指定できる。代替的に言えば、第１のプロセッサグループとデータメモリとの接続は、メモリアクセス動作を待ち時間オーバヘッドの観点から比較的低コストにする。
【００８１】
Ｂ．縮小された画像データセット
プロセス１１００のフローチャートを詳細に示す図１０を参照すると、例示的な実施形態に従いプロセス１１００は原画像データから縮小された画像データセットを生成し、縮小されたデータセットを処理して出力値を生成する。プロセス１１００は、対象または表面を含んだ視野の一連の画像の各々を取得し、これが実行されるタスクの基礎となる（ステップ１１１０）。タスクは、たとえば対象で検出されたバーコードから復号されたバーコード値を出力することであってよい。第１のプロセッサグループ（ＳＩＭＤアレイとＣＰＵ）は、所定の前処理機能に従って縮小された画像データセットを生成する（ステップ１１２０）。たとえば前処理プロセスは、周囲の視野および対象の非エッジ特徴から関係のないデータを取り除いたエッジ画像を生成できる。第１のプロセッサグループは、画像データがセンサから読み出されるのと同時に（たとえば同じ処理サイクルで）動作する。縮小された画像データはオンダイデータメモリに保存される（ステップ１１３０）。エッジ画像などの縮小されたデータセットのために保存される情報の量は、典型的に全画像に含まれるデータの量より著しく少ない。これにより縮小されたデータセットは、実行時動作が進行するときにデータメモリ内に収まることができる。この実施形態において、センサから読み出された画像データの少なくとも一部は第２のプロセッサに送られる（ステップ１１３２）。一実施形態において、第２のプロセッサはセンサから全画像データを受け取ることができる。代替的に、データセットの一部が第２のプロセッサに送られる。どの部分が送られるかの決定は、（他の基準と並んで）縮小されたデータセット内に特徴が存在することに基づいて制御できる。ステップ１１４０で、縮小されたデータセットはさらに第１のプロセッサグループで前処理されて、さらに第２のプロセッサにより第２のプロセッサ上にある画像解析アプリケーション／プロセスを用いて処理される必要のある１以上の領域を特定する。たとえばデータメモリに縮小されたデータセットとして保存されたエッジ画像特徴はバーコード状の特徴について、特定の相対的間隔および特定の相対的配置パターンで配置されたエッジ検出について解析され得る。所定の領域は候補特徴を有するエリアの周囲に定義され、領域の位置は領域識別子（ＩＤ）として定義される。ＩＤはピクセル位置（領域境界ポイントまたはその他の指標）、または第２のプロセッサが処理の注意を特定された領域に集中できるようにする類似の情報からなっていてもよい。この領域情報はステップ１１５０で第２のプロセッサに送られる。さらに一般的に、「領域インジケータ」または「領域ＩＤ」は、第２のプロセッサが読み出された全体画像データのサブセットである画像データの一部で画像処理機能を実行できるようにする任意の縮小されたデータ値または縮小されたデータセットであってもよい。したがってこの用語は、それ自体は全体画像の領域ではない画像データサブセットに関係する情報を含め、広く取られるべきである。
【００８２】
プロセス１１００において、第２のプロセッサがステップ１１５０で受け取った領域情報を用いて、ステップ１１６０で第２のプロセッサの所定の画像解析プロセスを実行する。例示的な実施形態において、第２のプロセッサはその画像解析処理タスクを情報中の特定された領域にさし向け、したがって直ちにそのローカルメモリ内の全体（または全体の一部）の画像データの小さいサブセットで作業することができる。第２のプロセッサの所定のプロセスから結果が得られたら、ステップ１１７０で１以上の出力値として提供される。バーコード復号の実施形態において、第２のプロセッサは復号されたバーコード値（または読み出し失敗）を出力値として提供する。
【００８３】
図１１は、別の例示的な実施形態による、原画像データから縮小された画像データセットを生成し、縮小されたデータセットを処理して出力値を生成するプロセス１２００のフローチャートを示す。上述したように、センサは解析されるべき対象または表面を含んだ視野の画像データを生成する（ステップ１２１０）。上述したように、第１のプロセッサグループは縮小されたデータセットを生成する一方、同じ処理サイクルでデータ縮小機能、たとえばエッジ検出プロセスまたは類似の特徴識別プロセスを用いてセンサから画像データを読み出す（ステップ１２２０）。縮小されたデータセットは並行してオンダイデータメモリに保存される（ステップ１２３０）。第１のプロセッサグループはステップ１２４０で、後続の前処理タスクとしてデータ選択機能を適用する。例を示すと、データ選択機能を用いてデータの領域を決定および選択することができ、（１）最初に類似の向きの近傍エッジを検出し、（２）これらのエッジを領域内に組み入れ、最後に（３）所望の特性を持った領域、たとえば特定のアスペクト比のレンジに含まれるか、またはエッジ密度閾値を越える領域を選択する。これにより第２のプロセッサに転送されるべきデータのサブセットが生成される。これらのサブセットは、第２のプロセッサがその処理活動を集中させるべき特徴を含んでいる領域を定義できる。ある実装においてサブセットは縮小されたデータ（エッジ画像など）のみを含んでいてもよい。代替的にサブセットは、縮小されない原画像データの、処理されるべき特徴を有する領域を表す部分と、当該領域に関係する情報を含んでいてもよい。この情報は領域位置情報およびその他の関連データ、たとえば個々の特徴位置や特性を含んでいてもよい。
【００８４】
次にステップ１２６０で、画像のデータのサブセットは第２のプロセッサにより所定の処理タスクに従って処理され、画像に関連する出力値が装置または使用者に送られ、これらはタスクを実行し、または決定を下すために出力値を利用する。
【００８５】
Ｃ．固定／アライメント処理
図１２を参照すると、プロセス１３００は固定／アライメント動作で使用される縮小されたデータセットを生成するために示されている。例を示すと、そのような動作は対象上の特定の構造の位置、たとえばロボットマニピュレータが固定部材を提供するボルト穴の配置、または回路基板上の電子部品ピックアンドプレース動作を決定するために使用される。ステップ１３１０で、センサは対象または表面の一連の画像を取得して、画像データを第１のプロセッサグループに読み出す。画像が読み出される間、第１のプロセッサグループによって縮小されたデータセットが生成される（ステップ１３２０）。縮小されたデータセットは生成されると、オンダイデータメモリに保存される（ステップ１３３０）。画像データを読み出す間、画像データの少なくとも一部は第２のプロセッサに送られる。これはセンサ読み出しと同じ処理サイクルで同時に起こる（ステップ１３４０）。最初の縮小されたデータセットの生成において（ステップ１３２０）、第１のプロセッサグループは画像データを受け取ったら処理して、たとえばエッジ画像を提供する。エッジ画像またはその他の縮小されたデータセットは、読み出された原画像データよりもサイズが著しく小さく、パターン検出プロセスで重要性を持ち得る特徴のみを含んでいる。続いて第１のプロセッサグループは、縮小されたデータセットでパターン検出プロセス（たとえば慣用的なブロブ解析、幾何学的パターン検出など）を実行して、画像内のどの位置が所定のパターンを有するか決定する（ステップ１３５０）。この結果は原画像データから縮小されたデータセットを表すので、さらに「縮小されたデータセット」として定義できる。この実施形態において、さらに縮小されたデータセットは特定された特徴を有する画像内の領域の位置（領域ＩＤ）であり、これは撮像された対象または表面に関するアライメント、計測、測定または固定動作で用いることができる。生成された領域ＩＤは、オンダイデータメモリに保存され、および／またはステップ１３６０で第１のプロセッサグループから第２のプロセッサに送られる。破線ブロックで示されているように、その他の有用な前処理情報、たとえば最初の縮小されたデータセットの全部または一部（たとえばエッジ画像）または追加の領域ＩＤ情報が、随意に第１のプロセッサグループから第２のプロセッサに送られる（ステップ１３７０）。第２のプロセッサは画像データと領域ＩＤデータを受け取ると、ビジョンシステムアルゴリズムを実行し、これは対象／表面のサイズ、回転、スキューなどを決定するための慣用的なアプリケーションを含んでいてもよい（ステップ１３８０）。パターン位置（注意の焦点）の知識により、第２のプロセッサは全体画像のうち所定の計測、測定および検査動作に使用されるパターンを有する領域を含まない位置で動作を省略できる。したがって第２のプロセッサはステップ１３８０で、出力値をアライメントまたは固定パラメータ、たとえば位置、サイズ、回転、スキュー、距離測定値などを提供する。
【００８６】
Ｄ．粗い／詳細なアライメントおよび粗い／詳細な検査処理
図１３を参照すると、プロセス１４００は粗い／詳細なアライメントまたは粗い／詳細な検査動作で使用される縮小されたデータセットを生成するために示されている。ステップ１４１０でセンサは対象または表面の一連の画像を取得すると、画像データを第１のプロセッサグループに読み出す。画像が読み出される間、第１のプロセッサグループによって縮小されたデータセットが生成される（ステップ１４２０）。縮小されたデータセットは生成されると、オンダイデータメモリに保存される（ステップ１４３０）。画像データを読み出す間、画像データの少なくとも一部が第２のプロセッサに送られる。これはセンサ読み出しと同じ処理サイクルで並行して起こる（ステップ１４４０）。最初の縮小されたデータセットの生成（ステップ１４２０）において、第１のプロセッサグループは画像データを受け取ると処理して、たとえば粗いエッジ位置を提供する。この縮小されたデータセットは読み出された原画像データよりサイズが著しく小さく、後続のパターン検出プロセスで重要性を持ち得る特徴のみを含んでいる。次に第１のプロセッサグループは縮小されたデータセットでパターン検出プロセスを実行して、画像内のどの位置が所定のパターンを有するか決定できる（ステップ１４５０）。この結果は原画像データから縮小されたデータセットを表すので、さらに「縮小されたデータセット」として定義できる。この実施形態において、さらに縮小されたデータセットは特定された特徴を有する画像内の領域の位置（領域ＩＤ）であり、これは撮像された対象または表面に関するアライメント、計測、測定または固定動作で用いることができる。生成された領域ＩＤは、オンダイデータメモリに保存され、および／またはステップ１４６０で第１のプロセッサグループから第２のプロセッサに送られる。破線ブロックで示されているように、その他の有用な前処理情報、たとえば最初の縮小されたデータセットの全部または一部（たとえばエッジ画像）または追加の領域ＩＤ情報が、随意に第１のプロセッサグループから第２のプロセッサに送られる（ステップ１４７０）。ステップ１４８０で、領域ＩＤおよびその他の情報は第２のプロセッサによって使用されて出力値を詳細なアライメントまたは詳細な検査結果の形で生成するが、これについてさらに以下に説明する。
【００８７】
粗い／詳細なアライメントの実施形態において、領域ＩＤとその他の有用な前処理情報は、対象または特徴アライメントの粗い評価、たとえば粗い精度を採用するエッジ検出プロセスを用いて比較的高速に得ることができる粗いエッジ位置を提供する。たとえば、この粗い精度は約１／２ピクセル以上であってもよいが、これより粗大または微細な粒度も想定されている。これは通常シングルステップの詳細なアライメントプロセスに伴う処理時間およびデータ保存オーバヘッドを節約する。第２のプロセッサは画像データと粗いエッジ位置を受け取ると、詳細なアライメントアルゴリズム案を実行するが、これは高精度の２Ｄまたは３Ｄアライメントを実行するための慣用的なアプリケーションを含んでよい（ステップ１４４０）。このアプリケーションはピクセルの１／４０のエッジ精度および１／１０の回転度またはそれ以上の精度を有していてもよい。それ以外の精度もシステムの必要性に応じて明確に想定される。一般に、粗いアライメントプロセスは詳細なアライメントプロセスよりも精度が少なくとも数倍低い。詳細なアライメントを実行するために慣用的なまたはカスタマイズされたアプリケーションを使用できる。とりわけ詳細なアライメントアプリケーションはエッジを含んでいることが既に特定されている比較的限局された領域で動作するので、処理の速度と効率は大幅に増す。アライメントは典型的なＤＳＰ構成における処理集約的なアプリケーションである。それを限局された小さいエリアに集中させることによって、詳細なアライメントプロセスは著しく高速に行われる。詳細なアライメントステップでサーチされた領域が実際にエッジ位置を特定することを保証するために、第１のプロセッサグループは、検出されたエッジの周囲の十分なエリア（たとえばエッジ周りの数ピクセル境界）を定義する粗いアライメントデータ（たとえば対象または特徴のエッジ位置）を提供できることに留意されたい。アライメントの一実施形態におけるこの出力値は詳細なアライメントデータ（たとえばエッジ位置または対象位置）として特徴付けられ、多自由度（たとえば移動、回転、スキューなど）に関して定義され得る。
【００８８】
出力値として検査結果を提供する実施形態において、領域ＩＤおよびその他の有用な前処理情報は、典型的に対象または表面の訓練されたパターンに基づく粗い検査結果（特徴および位置）を含んでいてもよい。検査結果は対象または表面に出現することが想定されている特徴（ボルト穴、ラベルなど）および／または出現することが想定されていない特徴（裂け目、亀裂など）であってもよい。一般に、第１のプロセッサグループは検査アプリケーションを操作できるが、これは慣用的であってよく、検査動作の実行では粗い精度に設定されている。粗い検査を行うことができる例示的な検査アプリケーションは、コグネックス・コーポレーション（マサチューセッツ州ナティック）から出ているＰａｔＱｕｉｃｋ（商標）である。第２のプロセッサはステップ１４８０で画像データと粗い検査結果を受け取るとビジョンシステムアルゴリズムを実行し、これは精確な結果を提供する慣用的な検査アルゴリズムを含んでよい。このアルゴリズムは具体的には粗い結果の位置を含んだ画像データ内の位置で動作できる。第１のプロセッサグループでは急いで候補結果を特定して適当な領域ＩＤと情報を生成するために低精度の検査プロセスが採用されているので、これは種々の誤検出の特徴と実際の特徴を含んでいることがある。第１のプロセッサグループがそのような結果を生成できる速さは、誤検出が存在する可能性を埋め合わせる。詳細なプロセスで誤検出が発見されたら、これは放棄されて、次の粗い結果が（該当する場合）第２のプロセッサによって処理される。検査の実施形態において、第２のプロセッサは出力値対象または表面に対する精確な検査結果の形で提供する（ステップ１４８０）。これらの検査結果は検出された特徴のリスト（たとえば３個の穴、１個の完全なラベルなど）であるか、または決定（たとえば公差内／公差外品、良品／不良品、部品承認／拒否）であってよい。粗い検査と詳細な検査で得られる結果はばらつきがあることに留意されたい。ある実装において粗い検査は精確な位置を生成できるが特徴は不確かであるか、または位置はあまり精確ではないがより確かな特徴を得ることができる。同様に粗い段階では位置および特徴の存在／不在は精度が低いことがある。詳細な検査はより精確な位置と、より確定的な特徴の存在／不在、または両方を生成できる。
【００８９】
Ｅ．運動、速度および登録情報の決定
図１４はプロセス１６００のフローチャートを示す。別の例示的な実施形態により、プロセス１６００は原画像データから縮小された画像データセットを生成し、縮小されたデータセットを処理して、撮像された運動する物体または表面に対する登録情報、速度または運動の情報の形で出力値を生成する（「運動する」はより一般的には対象または表面とセンサの視野との相対的な動きとして定義される）。センサは運動の判定を可能にする対象または表面の特徴を含んだ視野の一連の画像を生成する（ステップ１５１０）。対象は画像フレーム間で追跡できる認識可能な対象もしくは対象の部分、またはウェブ登録マークや表面上に規則的な間隔で現れる穿孔などの特徴であってもよい。より一般的に、対象または表面上の任意のユニークな構造、基準または登録マークを、この実施形態において登録情報を追跡するために使用できる。第１のプロセッサグループは各々の取得された画像フレームに対して読み出された画像データを受け取り、これらは対象または特徴を含んでよい。画像データは第１のプロセッサグループによって処理され、データ縮小機能またはプロセスを用いて縮小されたデータセットを生成する（ステップ１５２０）。この実施形態においてプロセスは、１以上の所定の対象および／または特徴をサーチするパターン認識または特徴検出プロセス（慣用的であってよい）であってもよい。画像内で特定された各々の特徴またはパターンは位置が付与され、タイムスタンプを含んでいる。このデータは領域ＩＤおよび／または他の有用な情報としてオンダイデータメモリに保存される（ステップ１５３０）。これらの領域ＩＤおよびその他の有用な情報は第２のプロセッサに送られる。特定された特徴は画像から画像へと動くので、画像間の時間から各画像内の特徴の相対的位置を計算できる。したがって位置の変化と位置の変化の時間が与えられると、第２のプロセッサはシステム内の他の対象（たとえばプリントヘッドまたはカッタ）に対して対象または表面の瞬間的な速度、その相対的な運動および／または登録情報を計算できる（ステップ１５４０）。この計算を用いて出力値を、イベントについて決定するために使用できる対象または表面の速度、運動の情報および／または登録信号の形で提供する（ステップ１５５０）。たとえば、信号を用いて所定の時間でカッタを操作し、またはカウンタを割り出すことができる。同様に、信号を用いて動いているコンベヤベルトを加速したり、減速したりできる。この決定は第２のプロセッサ、別のプロセッサまたは第１のプロセッサグループによって下すことができる。
【００９０】
Ｆ．領域を保存するための追加メモリ
幾つかの実装において、オフダイであってもよく、第１のプロセッサグループおよび第２のプロセッサと相互接続された追加メモリを提供することが望ましい。図１５に構成１６００が示されているが、これは本明細書に記載された第１のプロセッサグループ１６１０と、第２のプロセッサ１６２０、および追加メモリ１６３０を含んでいる。図示されているように、第１のプロセッサグループ１６１０はセンサ／読み出し回路１６４０と相互接続されており、センサ／読み出し回路１６４０は第１のプロセッサグループおよびその直接アドレス指定可能なデータメモリ１６１２に対してオンダイまたはオフダイであってよい。センサ／読み出し回路１６４０は撮像された場面１６４２から取得された画像データ１６４４を第１のプロセッサグループに前処理のために送る。本明細書で他の実施形態で説明されているように、オンダイの直接アドレス指定可能なデータメモリ１６１２は一般的に容量が限られており、完全に読み出された所定の画像フレームで取得された画像データの全セットを容易に保存できないと想定されている。動作中、第１のプロセッサグループは縮小されたデータセットを生成し、これはオンダイのデータメモリに保存される。この縮小されたデータセットは、後続の画像プロセスを特定の関心のある特徴を含んでいる画像の部分に集中させるために有用なエッジ画像または他の縮小された画像データセットであってもよい。一実施形態において、画像データ１６４６は並行してセンサ／読み出し回路１６４０から、追加メモリ１６３０（メモリ容量が十分大きければ）にも送られる。代替的な実施形態において、画像データ１６４８は直接センサ／読み出し回路１７４０からではなく、第１のプロセッサグループを介して（画像データが読み出されると）メモリ１６３０に送られることができる。第１のプロセッサグループは縮小されたデータセットでデータ選択機能を実行して領域ＩＤ１６５０を生成する。これらはオンダイメモリに保存できる。領域ＩＤは追加メモリ１６３０内の対応する画像データの位置に関係している。そのような領域ＩＤは、縮小されたデータセットに基づいて関心のある領域を含む、追加メモリ１６３０の特定の位置（すなわちブロック）に対するメモリアドレスに関係できる。領域ＩＤ１６６０に対応する領域ＩＤおよび／または画像データ（領域ブロック）は第２のプロセッサ１６２０に送られる。この転送は直接追加メモリから行われるか、または（破線のブランチライン１６６２で示されているように）第１のプロセッサグループの少なくとも部分を介して行われてよい。縮小されたデータセット１６６４の全部または一部は、第２のプロセッサにその処理機能で使用され有用な情報の一部として送られることもできる。第２のプロセッサ１６２０は領域ＩＤ、画像データおよび他の有用なデータを受け取り、それによって所望のビジョンシステムアルゴリズムを実行して、所望の出力値１６７０を生成する追加メモリ１６３０との間で画像データおよびその他の情報の転送を容易にするために、メモリコントローラおよび／またはその他の適当な回路（図示せず）が設けられてよい。第２のプロセッサは多様な後続の処理機能を実行できる。後続の処理機能は上述した任意の機能を包含でき、これにはＩＤ認識、固定、アライメント、検査および登録を含むが、これらに限られない。
【００９１】
以上の他にも多くのビジョンシステムプロセスが上述した第１のプロセッサグループと第２のプロセッサおよび関連するメモリの構造と機能から恩恵を受けられることは明確にしておくべきである。第１のＳＩＭＤプロセッサグループによって画像データ内に縮小されたデータセットを作成し、続いて縮小されたデータセットを用いて画像データの全部または一部を後続処理するように第２のプロセッサ操作するいかなるプロセスも、代替的な実施形態に従って実装できる
【００９２】
以上が本発明の例示的な実施形態の詳細な説明である。本発明の精神と範囲から逸脱することなく種々の変容および追加を行うことができる。上述した種々の実施形態の各々は、上述した他の実施形態と組み合わせて多数の特徴を提供することができる。さらに、以上に本発明の装置と方法のそれぞれの実施形態について説明したが、本明細書で説明されていることは本発明の原理の応用を例示するものにすぎない。たとえば特定のプロセッサコンポーネントの配置構成は、第１のプロセッサグループ、第２のプロセッサまたは第２のプロセッサグループおよびオンダイデータメモリに関する一般的な記述の範囲内で大幅に異なってよい。また、第１のプロセッサグループは全体的な処理構成の一部としてＳＩＭＤアーキテクチャを含んでいるが、この用語は入力された画像データで同等の機能を実行するために同等の構造を採用する他の処理アーキテクチャを含むように広く解されるべきである。同様に、ビジョンシステム構成において複数の第１のプロセッサグループが使用することができ、１以上の画像センサと相互接続され、関連する第１のプロセッサグループとオンダイに存在し、または存在しなくてもよいことが明確に想定されている。この複数の第１のプロセッサグループは１以上の第２のプロセッサまたは第２のプロセッサグループと相互接続されて、所望の出力値を生成できる。加えて本明細書で説明されたいかなる動作も、プログラム命令を有するコンピュータ可読媒体を含むハードウェア、ソフトウェア、またはハードウェアとソフトウェアの組み合わせとして実装できる。したがって本明細書の説明は単に例を示すことが意図されており、それ以外に本発明の範囲を限定するものではない。
【図１】
2013531838.tif 000003
【図２】
2013531838.tif 000004
【図３】
2013531838.tif 000005
【図４】
2013531838.tif 000006
【図５】
2013531838.tif 000007
【図６】
2013531838.tif 000008
【図７】
2013531838.tif 000009
【図８】
2013531838.tif 000010
【図９】
2013531838.tif 000011
【図１０】
2013531838.tif 000012
【図１１】
2013531838.tif 000013
【図１２】
2013531838.tif 000014
【図１３】
2013531838.tif 000015
【図１４】
2013531838.tif 000016
【図１５】
2013531838.tif 000017
【手続補正書】
【提出日】平成25年2月18日(2013.2.18)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項２０
【補正方法】変更
【補正の内容】
【請求項２０】
前記出力値はイベントをトリガする請求項１４記載の方法。
【国際調査報告】
2013531838.tif 000018
2013531838.tif 000019
2013531838.tif 000020