特許第5739522号(P5739522)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ コグネックス・コーポレイションの特許一覧

特許5739522全体画像内で注意の焦点に関する画像データを処理するためのシステムと方法
<>
  • 特許5739522-全体画像内で注意の焦点に関する画像データを処理するためのシステムと方法 図000002
  • 特許5739522-全体画像内で注意の焦点に関する画像データを処理するためのシステムと方法 図000003
  • 特許5739522-全体画像内で注意の焦点に関する画像データを処理するためのシステムと方法 図000004
  • 特許5739522-全体画像内で注意の焦点に関する画像データを処理するためのシステムと方法 図000005
  • 特許5739522-全体画像内で注意の焦点に関する画像データを処理するためのシステムと方法 図000006
  • 特許5739522-全体画像内で注意の焦点に関する画像データを処理するためのシステムと方法 図000007
  • 特許5739522-全体画像内で注意の焦点に関する画像データを処理するためのシステムと方法 図000008
  • 特許5739522-全体画像内で注意の焦点に関する画像データを処理するためのシステムと方法 図000009
  • 特許5739522-全体画像内で注意の焦点に関する画像データを処理するためのシステムと方法 図000010
  • 特許5739522-全体画像内で注意の焦点に関する画像データを処理するためのシステムと方法 図000011
  • 特許5739522-全体画像内で注意の焦点に関する画像データを処理するためのシステムと方法 図000012
  • 特許5739522-全体画像内で注意の焦点に関する画像データを処理するためのシステムと方法 図000013
  • 特許5739522-全体画像内で注意の焦点に関する画像データを処理するためのシステムと方法 図000014
  • 特許5739522-全体画像内で注意の焦点に関する画像データを処理するためのシステムと方法 図000015
  • 特許5739522-全体画像内で注意の焦点に関する画像データを処理するためのシステムと方法 図000016
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5739522
(24)【登録日】2015年5月1日
(45)【発行日】2015年6月24日
(54)【発明の名称】全体画像内で注意の焦点に関する画像データを処理するためのシステムと方法
(51)【国際特許分類】
   G06T 1/20 20060101AFI20150604BHJP
   G06K 7/10 20060101ALI20150604BHJP
【FI】
   G06T1/20 B
   G06K7/10 412
   G06K7/10 456
【請求項の数】21
【全頁数】34
(21)【出願番号】特願2013-511240(P2013-511240)
(86)(22)【出願日】2011年5月13日
(65)【公表番号】特表2013-531838(P2013-531838A)
(43)【公表日】2013年8月8日
(86)【国際出願番号】US2011036458
(87)【国際公開番号】WO2011146337
(87)【国際公開日】20111124
【審査請求日】2013年2月18日
(31)【優先権主張番号】12/781,651
(32)【優先日】2010年5月17日
(33)【優先権主張国】US
【前置審査】
(73)【特許権者】
【識別番号】504382671
【氏名又は名称】コグネックス・コーポレイション
(74)【代理人】
【識別番号】100119378
【弁理士】
【氏名又は名称】栗原 弘幸
(72)【発明者】
【氏名】モエド,マイケル シー.
(72)【発明者】
【氏名】マクガリー,イー.ジョン
【審査官】 佐田 宏史
(56)【参考文献】
【文献】 特開2003−218338(JP,A)
【文献】 特開2009−015515(JP,A)
【文献】 国際公開第2009/070354(WO,A1)
【文献】 特開平11−289543(JP,A)
【文献】 特開2004−153382(JP,A)
【文献】 特開2009−089332(JP,A)
【文献】 A. Broggi, et al.,"The Paprica massively parallel processor ",Proceedings of the First International Conference on Massively Parallel Computing Systems, 1994.,米国,IEEE,1994年 5月 2日,p.16-30
【文献】 F. Gregoretti, et al.,"The PAPRICA SIMD array: Critical reviews and perspectives",Proceedings of International Conference on Application-Specific Array Processors, 1993. ,米国,IEEE,1993年10月25日,p.309-320
【文献】 A. Broggi, et al.,"Enhancement of a 2D array processor for an efficient implementation of visual perception tasks ",Proceedings Computer Architectures for Machine Perception, 1993.,米国,IEEE,1993年12月15日,p.172-178
(58)【調査した分野】(Int.Cl.,DB名)
G06T 1/20
G06K 7/00,7/10
(57)【特許請求の範囲】
【請求項1】
一連の取得された画像の各々に関する画像データを生成する画像センサを有するビジョンシステムであって;
前記ビジョンシステムは、それぞれ単一のダイに載ってセンサと作動的に結合されている、複数のSIMDプロセッサと、少なくとも1つの汎用プロセッサと、直接アクセス可能なデータメモリとを含む第1のプロセッサグループを有しており、前記第1のプロセッサグループは画像センサから読み出された画像データを受け取り、前記データメモリは前記一連の取得された画像の各々に関する画像データのサイズより容量が小さく、前記第1のプロセッサグループは画像データが読み出されるのと同時に各々の画像データに関して縮小されたデータセットを生成するデータ縮小プロセスが作動するように構成および配置されており;
前記ビジョンシステムはさらに第2のプロセッサを有しており、前記第2のプロセッサは、前記縮小されたデータセットがデータメモリに保存されるのと同時に画像データの少なくとも一部を受け取り、前記第2のプロセッサは、縮小されたデータセット内の情報に基づく出力値を生成する画像解析プロセスを含んでいる
ビジョンシステム。
【請求項2】
前記縮小されたデータセットは、画像データの少なくとも一部に関して少なくとも1つの領域識別子(ID)を含み、画像解析プロセスが前記少なくとも1つの領域IDによって指定された画像データの少なくとも一部の位置で作動して出力値を生成することを可能ならしめている、請求項1記載のビジョンシステム。
【請求項3】
前記画像解析プロセスがバーコード復号プロセスを含む請求項2記載のビジョンシステム。
【請求項4】
前記縮小されたデータセットは特徴情報を含み、前記出力値は検査及びアライメントデータの少なくとも1つを含む請求項1記載のビジョンシステム。
【請求項5】
前記センサが単一のダイに載っている請求項1記載のビジョンシステム。
【請求項6】
前記縮小されたデータセットは複数の画像の各々で位置を変える運動する対象または表面の少なくとも1つの特徴を含み、各々の画像はタイムスタンプを有しており、前記出力値は、運動、速度および登録情報の少なくとも1つを含む、請求項1記載のビジョンシステム。
【請求項7】
前記出力値はイベントをトリガする請求項6記載のビジョンシステム。
【請求項8】
前記縮小されたデータセットが前処理された画像データを含み、該前処理された画像データは画像データよりサイズが小さく、かつ、出力値を生成するために画像解析プロセスによって使用される少なくとも一つのデータ要素を提供する、請求項1記載のビジョンシステム。
【請求項9】
一連の取得された画像の各々に関する画像データを生成する画像センサを有するビジョンシステムであって;
前記ビジョンシステムは、それぞれ単一のダイに載ってセンサと作動的に結合されている、複数のSIMDプロセッサと、少なくとも1つの汎用プロセッサと、直接アクセス可能なデータメモリとを含む第1のプロセッサグループを有しており、前記第1のプロセッサグループは画像センサから読み出された画像データを受け取り、前記データメモリは前記一連の取得された画像の各々に関する画像データのサイズより容量が小さく、前記第1のプロセッサグループは画像センサから連続して1以上の画像を受け取るように配置されており;
前記第1のプロセッサグループ内の複数のSIMDプロセッサは、受け取った各々の画像にデータ縮小機能を用いて、データメモリに保存される縮小されたデータセットを生成するように構成および配置されている
ビジョンシステム。
【請求項10】
さらに第2のプロセッサを含んでおり、前記第2のプロセッサは少なくとも縮小されたデータセットを受け取り、前記縮小されたデータセットに関して前記第2のプロセッサによって実行されるビジョンシステムのタスクに基づく出力値を生成する、請求項9記載のビジョンシステム。
【請求項11】
前記第2のプロセッサは、画像センサから画像データが読み出されるのと同時に画像データを受け取り、前記縮小されたデータセットは第2のプロセッサにより受け取られた画像データの特定されたサブセットで前記ビジョンシステムのタスクが実行されるようにさし向ける、請求項10記載のビジョンシステム。
【請求項12】
一連の取得された画像の各々に関する画像データを生成する画像センサを有するビジョンシステムであって;
前記ビジョンシステムは、それぞれ単一のダイに載ってセンサと作動的に結合されている、複数のSIMDプロセッサと、少なくとも1つの汎用プロセッサと、直接アクセス可能なデータメモリとを含む第1のプロセッサグループを有しており、前記第1のプロセッサグループは画像センサから読み出された画像データを受け取り、前記データメモリは前記一連の取得された画像の各々に関する画像データのサイズより容量が小さく、前記第1のプロセッサグループは画像センサから連続して1以上の画像を受け取るように配置されており;
前記ビジョンシステムはさらに、画像センサから読み出された画像データを同時に受け取る追加メモリを有しており;
前記第1のプロセッサグループ内の複数のSIMDプロセッサは、受け取った各々の画像にデータ縮小機能を用いて、データメモリに保存される縮小されたデータセットを生成するように構成および配置されており、前記縮小されたデータセットは、追加メモリに保存されてさらなるビジョンシステムプロセスに供される画像データの領域に対する識別子を含んでいる
ビジョンシステム。
【請求項13】
さらに第2のプロセッサを含んでおり、前記第2のプロセッサは追加メモリから画像データの領域を受け取り、領域に関して前記第2のプロセッサによって実行されるビジョンシステムのタスクに基づく出力値を生成する請求項12記載のシステム。
【請求項14】
一連の取得された画像の各々に関する画像データを生成する画像センサを有するビジョンシステムで画像データを処理するための方法であって;
複数のSIMDプロセッサと、少なくとも1つの汎用プロセッサと、直接アクセス可能なデータメモリとを含み、それらがそれぞれ単一のダイに載っている、第1のプロセッサグループによって、画像センサから読み出された画像データを受け取り、前記データメモリは前記一連の取得された画像の各々に関する画像データのサイズより容量が小さく;
前記第1のプロセッサグループで、画像データが読み出されるのと同時に各々の画像データに関して縮小されたデータセットを生成し;
第2のプロセッサによって、前記縮小されたデータセットがデータメモリに保存されるのと同時に画像データの少なくとも一部を受け取り;
第2のプロセッサによって、縮小されたデータセットに含まれた情報に基づいて出力値を生成する
ステップを含む方法。
【請求項15】
前記縮小されたデータセットは、画像データの少なくとも一部に関して少なくとも1つの領域識別子(ID)を含み、画像解析プロセスが前記少なくとも1つの領域IDによって指定された画像データの少なくとも一部の位置で作動して出力値を生成することを可能ならしめている、請求項14記載の方法。
【請求項16】
前記出力値が復号されたバーコードデータを含む請求項15記載の方法。
【請求項17】
前記縮小されたデータセットが特徴情報を含み、前記出力値は検査及びアライメントデータの少なくとも1つを含む、請求項14記載の方法。
【請求項18】
前記センサが単一のダイに載っている請求項14記載の方法。
【請求項19】
前記縮小されたデータセットは複数の画像の各々で位置を変える移動対象または表面の少なくとも1つの特徴を含み、各々の画像はタイムスタンプを有しており、前記出力値は、運動、速度および登録情報の少なくとも1つを含む請求項14記載の方法。
【請求項20】
前記出力値はイベントをトリガする請求項14記載の方法。
【請求項21】
前記縮小されたデータセットが前処理された画像データを含み、該前処理された画像データは画像データよりサイズが小さく、かつ、出力値を生成するために画像解析プロセスによって使用される少なくとも1つのデータ要素を提供する、請求項14記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明はマシンビジョンシステムに関し、より具体的にはビジョンシステム処理装置による画像データの処理に関する。
【背景技術】
【0002】
マシンビジョンシステムは、見られた対象/表面に関する情報を供給するカメラセンサを含む画像取得装置を用いる。次にシステムはこの情報を多様なアルゴリズムに従って解釈して、プログラムされた意思決定、アライメント、および/または識別機能を実行する。
【0003】
背景技術として、図1は、光学カメラレンズ120および関連する一次元(1D)または二次元(2D)画像センサピクセルアレイ121を含む例示的なビジョンシステム110を示す。これらのコンポーネント120、121は画像をピクセルデータのマトリックスの形で取得するために配置されている。視野122は取得された画像の境界126を定義し、これはこの例ではシステム110が解析しようとする特徴を有する対象または表面124を含む。視野122は関連する境界によって示されているように、対象124を越えて広がっていてもよい。カラーピクセルまたはグレースケールピクセル濃淡値の形で取得された画像データ140は、画像プロセッサ130によって処理されて、別の装置(図示せず)に送られる。接続されている装置の一例は、復号シンボルに適合されたデジタル信号プロセッサ(DSP)である。画像プロセッサは、多様な処理タスクを実行するハードウェア機能および/またはプログラム命令を含んでいてもよい。たとえば、画像プロセッサは、ブロブ解析、エッジ検出および他の慣用的なビジョンシステム動作などを用いて特徴検出を実行できる。特徴はさらに画像プロセッサ130によって処理されて、たとえば、姿勢およびアライメントデータ、検査結果、対象認識結果または他の有用な画像データを提供する。結果は内部で使用されてアラームや信号を提供し、または別の装置またはシステムに送られてもよい。たとえばシステム110によって取得されたバーコードからのID特徴は、専用のデジタル信号プロセッサ(DSP)に送られて、慣用的な復号機能を用いて特徴を英数字列に復号できる。
【0004】
全視野122から取得されたピクセルデータは、処理オーバヘッドの観点からするとかなり大きいことがあり得る。一般に、このピクセルデータはセンサからプロセッサと関連するデータメモリに読み出され、続いてこの画像データで画像処理機能が実行される。プロセッサがグラフィック処理ユニット(GPU)またはデジタル信号プロセッサDSPであるとき、所望の結果を導くために取得された画像から画像データの全セットをより分けることが典型的には要求される。このことは典型的には非常に大量のデータを扱うことを装置に要求し、したがって多大な処理オーバヘッドを発生させることがある。一般的に装置(GPU、DSPなど)は比較的小さく、対応するより大きなオフダイ・ランダムアクセスメモリ(RAM)に対応するキャッシュから画像データが移されることが要求される、直接アクセス可能なキャッシュメモリを有し得る。このデータの動きは処理オーバヘッドの点でコストがかかる。これらの種々の問題は、要求された処理量およびその他のシステムパラメータを満たすために、DSPに画像データで過大な負荷を掛けるというシナリオにつながる。
【0005】
とりわけ、撮像される対象または表面124の画像データの量は典型的には全視野122の画像に含まれる画像データの量より小さい。対象/表面124の小さい画像データの内部で、関心のある特徴150(たとえばバーコード、部品、ボルト穴など)は、全体画像データのさらに小さいサブセットであり得る。したがってDSPまたはその他の処理装置による後続の処理のために有用な実際の画像データは、実際には全体画像データのはるかに小さいサブセットであり得る。
【0006】
それゆえ、取得された全体画像データのセット内で有用な画像データを特定して、ビジョンシステムで使用されるプロセッサによってデータをより高速かつ効率的に処理できるようにするシステムと方法を提供することが望まれる。
【発明の概要】
【0007】
本発明は従来の技術の短所を克服するために、取得された画像データの全セット内で当該画像内部の注意の焦点に基づいて離散的画像データを処理するためのシステムと方法を提供する。そのような処理の結果は、全体画像データのより限定されたサブセットに作用して、ビジョンシステムプロセスによって要求される出力値を生成することである。そのような出力値は復号されたIDまたは他の英数字データであってよい。このシステムと方法は2つのプロセッサグループを有するビジョンシステムにおいて、第1のプロセッサグループに属している、センサアレイから読み出されるべき画像データの量より容量が小さい、データメモリに沿って実施される。このデータメモリは、動作待ち時間オーバヘッドの観点から比較的低コストのメモリアクセスを与えるように、第1のプロセッサグループによって直接アクセス可能なランダムアクセスメモリ(RAM)を含んでいてもよい。効率を増すために、第1のプロセッサグループ、典型的にはデータメモリと同じダイに一緒に配置されている、複数のSIMDプロセッサと少なくとも1台の汎用プロセッサ(CPU)は、センサからデータが読み出されるのと同じ処理サイクル内で同時に作用するデータ縮小機能を用いて、オンダイデータメモリに保存される縮小されたデータセットを生成する。一実施形態において、全体の少なくとも一部で、縮小されない画像データはセンサからデータが読み出されるのと「同時に」(同じ処理サイクルで)第2のプロセッサグループ(代替的に「第2のプロセッサ」と定義する)に送られる。ときに、該当する場合には、処理サイクルは代替的に「クロックサイクル」と呼ばれることに留意されたい。加えて、第1のプロセッサグループは、領域インジケータが作成された後で、縮小されたデータセットに関して少なくとも1つの領域インジケータを第2のプロセッサに送る。領域インジケータは第2のプロセッサが作用するための少なくとも1つの「注意の焦点」を表す。領域インジケータは画像に関係する他のデータ、たとえば前処理されたエッジデータ、信頼値、および第2のプロセッサをそのタスクにおいて支援する他のデータを含んでいてもよい。さらに一般的に、「領域インジケータ」または「領域ID」は、第2のプロセッサが読み出された全体画像データのサブセットである画像データの一部で画像処理機能を実行できるようにする任意の縮小されたデータ値または縮小されたデータセットであってもよい。第2のプロセッサは示された領域に基づき画像解析機能を用いて縮小されない画像データセットを処理し、それによって画像に関する情報(たとえば英数字コード、良否信号、アライメント値など)を含む1以上の出力値を生成する。データは種々の実施形態に従い、多様なメカニズムとプロセス第1のプロセッサグループを用いてから第2のプロセッサに送られ、これはシフトレジスタおよびダイレクトメモリアクセス(DMA)構成を含むが、これに限られない。
【0008】
別の実施形態において、縮小されたデータセットは第1のプロセッサグループによって作成され、そして注意の焦点が縮小されたデータセット内に位置しているときは、データ選択機能が領域を表す縮小されたデータセットを第2のプロセッサに転送する。この縮小されたデータセットは、画像データおよび/または第2のプロセッサがそのタスクを実行するために有用なその他の関連情報を含んでいてもよい。それ以外の情報は前処理された特徴情報、エッジ位置データ、信頼値などであってよい。この場合、出力値は第2のプロセッサによって、可能ならば受け取った縮小されたデータセットに基づいて生成される。
【0009】
一実施形態において、第2のプロセッサはシンボル(ID)復号器である。1Dおよび/または2Dバーコードを復号して、バーコードを表す英数字出力値を生成する。第1のプロセッサは、少なくともバーコード状の特徴を含んだ画像において1以上の領域を決定して、それらを領域IDなど他のデータと一緒に第2のプロセッサに提供する。上述したように、この実施形態における第2のプロセッサは、慣用的なバーコード復号機能を用いるオフダイDSPを含んでいてもよい。
【0010】
一実施形態において、第1のプロセッサグループは固定動作またはアライメント動作を行い、第2のプロセッサは固定データを受け取って、対象/表面の画像で測定動作、計測動作または検査動作を行う。第1のプロセッサグループは、画像データ上で特定されたパターンの位置に関する領域IDを送る。第1のプロセッサグループはパターン検出プロセス(たとえば慣用的なブロブ解析、エッジ検出、幾何学的パターンマッチングなど)を含んで、画像がパターンを持つ位置を決定できるようにする。画像の全部または一部が、任意の有用な前処理情報と一緒に第2のプロセッサに送られる。この情報を使用して、対象/表面に関するサイズ、回転、スキュー、欠陥の有無などを含み得る検査が実行される。パターン位置(すなわち処理のための注意の焦点)を知ることにより、第2のプロセッサは、全体画像において所定のパターンを持った領域を含まない位置での動作を省くことができる。
【0011】
別の実施形態において、このシステムと方法は粗い/詳細なアライメントタスクに用いられる。粗いアライメントは第1のプロセッサグループでアライメントプロセスによって行われ、1以上のパターンを用いて画像内の1以上の対象および/または表面特徴の位置を粗い精度で特定する。この粗い精度は例示的な実装においてピクセルまたは約1/2ピクセルレベルであってよい。この粗いアライメントステップは、シングルステップの詳細なアライメントプロセスに通常伴う処理時間およびデータ保存オーバヘッドを節約する。粗いアライメントプロセスはそれによって取得された画像内の対象または特徴の特定されたパターンのおよその(粗い)位置に対するデータを提供して、画像内のそれぞれの対象または特徴の位置を特定する。特定された粗いアライメント位置に関するデータおよび関連するデータ(および他のプロセスで有用な特徴情報)が、オフダイの第2のプロセッサに転送される。画像データはセンサから読み出されるのと同時に第2のプロセッサに提供されることもできる。第2のプロセッサはこれらのデータを使用して、全体画像データで詳細なアライメントプロセスを実行するが、これは好適には粗く位置合わせされた画像の領域に焦点を当てる。一般に、関心のある領域はこれらの領域の周囲(たとえば1ないし数ピクセルの境界)に描くことができ、詳細なアライメントプロセスは1以上のパターンを使用して各々の領域に作用することにより高精度の(たとえば、10分の1ピクセルおよび10分の1回転度、またはより詳細な)アライメント値を導く。1以上の粗く位置合わせされた対象または特徴を含む全体画像の領域に詳細なアライメントを集中する能力により、詳細なアライメントプロセスは、1回のプロセスステップで全画像が詳細に位置合わせされた場合より高速かつ効率的に行われることができる。この実施形態の出力値は、多自由度における対象または特徴の箇所の高精度な位置である。
【0012】
別の実施形態において、このシステムと方法は対象または表面の粗い/詳細な検査のために用いられる。低精度の検査プロセスは第1のプロセッサグループで行われ、種々の誤検出の特定と、有効な検査結果とを含み得る候補結果を高速に特定する。第1のプロセッサグループがそのような結果を生成できる速さは、誤検出が存在する可能性を埋め合わせる。特徴候補に対する位置およびその他のデータは、より精確な検査プロセス(たとえば合成画像データまたは実際に教示された画像データに基づく)を含む第2のプロセッサに送られる。検査プロセスは全画像よりもむしろ候補に「注意を集中」し、それによって待ち時間オーバヘッドを少なくする。出力値は検査結果(たとえば合格品、不良品、公差内/公差外品)である。
【0013】
別の実施形態において、システムは運動する対象または運動する表面の動きを特徴付けるように実装できる。領域IDおよび特徴は第1のプロセッサグループによって運動する物体または表面から取得される画像の流れから生成され、1以上の特徴の位置と、各々の画像に対するタイムスタンプを含んでいる。これらの領域IDはオンダイデータメモリに保存されて、第2のプロセッサに送られる。第2のプロセッサは各々の画像における特徴の位置と画像間の相対的時間を相関させて、対象または表面の速度、運動および/または登録情報を決定する。この情報は第2のプロセッサ、第1のプロセッサグループまたは別のプロセッサに使用されて、カウンタの割り出し、速度制御の変化、指定された時間におけるカッタの動作、その他所定の量の動きが起きたときに生じるべき活動などのイベントを引き起こすことができる。
【0014】
さらに別の実施形態において、このシステムと方法は画像データを、(a)画像データを第1のプロセッサグループとオンダイデータメモリに読み出すのと同時に直接センサから、または(b)適当なデータリンクまたはバスを介して第1のプロセッサグループを通して受け取るように配置された追加メモリを用いる。この追加メモリ(たとえばRAM)は画像データを既知のアドレスに保存する。第1のプロセッサグループは縮小されたデータセットを生成する。これは追加メモリ内の画像データの部分/ブロックに対するアドレスの形式による領域IDであってもよく、第2のプロセッサがそのビジョンシステムの処理タスクをさし向ける(焦点を当てる)べきデータの領域を表す。画像データのアドレス指定されたブロックまたは領域は、追加メモリから第2のプロセッサに送られる。第2のプロセッサは所望のビジョンシステムのタスクに基づいて出力値を生成する。
【図面の簡単な説明】
【0015】
図1】後続の処理にとって関心のある特徴を有する対象または表面の視野内で画像を取得する、上述した例示的なビジョンシステム処理装置の斜視図である。
図2】例示的な実施形態に従いビジョンシステムとして提供され得る、チップ(VSoC)上の例示的なビジョンシステムのブロック図である。
図3図2のVSoCと関連する装置との相互接続を示すブロック図である。
図4図2のVSoCの機能的コンポーネントを示すブロック図である。
図5図2のVSoCの機能的コンポーネントを示し、例示的な実施形態に従い線形アレイプロセッサ(LAP)の個々のコンポーネントの詳細を含む、より詳細な模式図である。
図6】例示的な実施形態に従いモデルの座標を変換するために用いる図2のVSoCの画像アドレスプロセッサのブロック図である。
図7】例示的な実施形態に従いVSoCによってモデルの座標を変換するための例示的な数式を詳細に示すテキストブロックである。
図8】例示的な実施形態に従い図2のVSoCのコンパレータ・アキュムレータの模式図である。
図9】システム内部の第1のプロセッサグループと第2のプロセッサの一般化された画像処理機能を示すブロック図である。
図10】第1のプロセッサグループを用いて読み出された画像データの流れに関して縮小されたデータセットを生成し、さらに第2のプロセッサで縮小されたデータセットに基づいて画像データの少なくとも一部を処理し、縮小されたデータセットが第1のプロセッサによって処理するためのオンラインデータメモリに保存されるのと同時に、画像データが第2のプロセッサに同時に送られる、例示的なプロセスのフローチャートである。
図11】第1のプロセッサグループを用いて読み出された画像データの流れに関して縮小されたデータセットを生成し、さらに第2のプロセッサで縮小されたデータセットに基づいて画像データの少なくとも一部を処理し、縮小されたデータセットが生成されて領域が特定されると画像データの領域が第2のプロセッサに送られる、例示的なプロセスのフローチャートである。
図12】例示的な実施形態に従いアライメントまたは固定動作を実行する際に使用する読み出された画像データの流れに関して縮小されたデータセットを生成するためのプロセスのフローチャートである。
図13】例示的な実施形態に従いアライメントまたは検査動作を実行する際に使用する読み出された画像データの流れに関して縮小されたデータセットを生成するためのプロセスのフローチャートである。
図14】運動する対象または表面の速度、運動および/または登録情報を決定するために使用される、縮小されたデータセットを生成するためのプロセスのフローチャートである。
図15】センサおよび読み出し回路と相互接続された第1のプロセッサグループと、第2のプロセッサと、第1のプロセッサに基づいて画像データを保存してアドレス指定された領域またはブロックを第2のプロセッサに送る追加メモリのブロック図である。
【発明を実施するための形態】
【0016】
以下に、本発明を添付の図面に基づいて説明する。
注意の焦点に基づいて取得された画像データの全セット内で離散的画像データを処理するための例示的なシステムと方法は、離散的処理サイクルで相互接続されたピクセルアレイから読み出された行全体のデータ(すなわち各々のクロックサイクルで同時に処理されている行に含まれる全データ)を処理できるアーキテクチャを定義するビジョンシステムプロセッサで動作するように適合されている。これを達成するために、全体プロセッサは画像データ保存メモリ(幅1024の記憶アレイを有し、本明細書では「データメモリ」とも呼ぶ)と、ピクセルアレイ(この例では8ビットまたは6ビットピクセルの1024×768ピクセルアレイ)との間に広いオンビットデータバス(たとえば1024×1バス)を含むように編成されている。このメモリは別の類似の幅(たとえば1024×1)のバスによって画像処理コンポーネントと相互に接続されており、これはたとえば近傍演算で非常に効率的な単一命令複数データ(SIMD)プロセッサを用いて行全体を同時に処理するように編成されている。したがって各々のプロセッサは行内部の近傍データを処理している他のプロセッサと相互作用できる。これらのプロセッサは組み合わせて線形アレイプロセッサ(LAP)と呼ばれる。例示的な実施形態においてこれらのプロセッサはそれぞれ90MHzで動作する。それらは行全体のデータ(1024要素)で同時に1ビット演算処理装置(ALU)として動作するように構成されている。例示的な実施形態においてLAP内のプロセッサはさらに、広範かつ効率的な近傍演算を容易にするためにデータがプロセッサ間で最大13列移動できるように適合されている。例示的な処理速度はLAPに対して約11,520メガバイト/秒の処理量を生み出す。プロセッサアーキテクチャの一種が共通の譲受人による米国特許出願明細書第12/184,187号「ビジョンセンサ、システムと方法」(E.ジョン・マクゲリー他)で開示されており、その教示内容は有益な背景情報として参照することにより本明細書に組み込まれ、以下の関連部分でも説明される。さらに一般的に本明細書に記載されたシステムと方法は、多様な市販の画像取得・処理システムで動作するように適合され得る。たとえば初期バージョンのシングルチップ画像センサが出版物「デジタルプロセッサアレイを有するシングルチップ画像センサ」(ロバート・フォルヒハイマー他、VLSI信号処理誌、第5巻、121〜131ページ(1993年))に記載されている。
【0017】
I.ビジョンシステム・オン・チップ(VSoC)の概観

図2は、本発明の実施形態に従うシステムと方法で使用するためのシングルチップ・ビジョンシステム200(VSoC)のブロック図を描写する。VSoC200はシングルチップ上にピクセルアレイ208と1以上の回路230を含む。本明細書での用法では、「チップ」という用語は、よく知られている用語「ダイ」と同じ意味で使われる。これは適当な回路要素と線を上に配置した単一のシリコンウエハ片である。製造においては、チップまたはダイは製造工程のある段階で離散的パッケージに分離されるチップまたはダイの大型ウエハの部分であり得るが、以下においては単一のコンポーネントとして扱う。種々の実施形態において、ピクセルアレイ208は、撮像されている場面に対する検知された光に基づいてピクセル信号を1以上の回路230に提供するように構成されている。また、種々の実施形態において1以上の回路230は、ピクセルアレイ208から提供されたピクセル信号を処理して画像を形成し、および随意に画像に関してパターンマッチングを実行するように構成されている。種々の実施形態においてピクセルアレイ208と1以上の回路230は半導体材料からなる基板上に単一の集積回路を形成する。また、種々の実施形態において、データをVSoC200に入力し、およびデータVSoC200をから出力するために1以上のI/Oピン(図示せず)をVSoC200は含んでいる。
【0018】
VSoC200はマシンビジョン用途、コンシューマ用途など、さまざまな用途で使用できる。種々の実施形態においてVSoC200を、(i)画像取得、(ii)画像前処理、および(iii)パターンマッチングのいずれか1以上の必要がある用途で使用することができる。種々の実施形態においてVSoC200は、シングルチップまたは集積回路において画像を取得し前処理、および/またはパターンマッチングを実行できるようにする。
【0019】
さらにVSoC200について、図3は本発明の実施形態に従う相互接続されたシステム300のブロック図を描写する。システム300は、有線または無線ネットワークまたはその他のデータ接続320によって作動的に結合されているVSoC200および相互接続された装置310を含む。システム300において、VSoC200は装置310と通信しており、装置310とVSoCとの間で信号が伝送される。例示的な実施形態において、図示された装置310は、スキャニング装置、および/またはベースコンピュータ(PC)、またはスキャニング装置からIDデータを受け取るその他のデータプロセッサの1以上のコンポーネント(たとえばディスプレイ、別個のID復号器回路、種々のインジケータ、アラートなど)を表すことができる。装置310とVSoCとの間の通信は、多様なデータと制御信号を含んでいてもよい。種々の実施形態において、VSoC200は画像を取得して、画像の処理を実行し、処理の結果に基づいてデータを装置310に提供するように構成されている。たとえば種々の実施形態において、VSoC200は1以上の特徴の1以上のモデルに基づいて画像内の1以上の特徴をサーチし、このサーチの結果に基づいてデータを装置310に出力するように構成されている。画像を取得するための画像取得と、画像内の特徴をサーチするパターンマッチングの両方をシングルチップまたは集積回路で実行できるようにすることにより、別個のプロセッサによってパターンマッチングを実行するため画像データがVSoC200からVSoC200の外部にある別個のプロセッサに送られなければならない場合と比べて、VSoC200から送られるデータの量を減らすことができる。
【0020】
たとえば種々の実施形態において、例示的なVSoC200は画像を取得し、その画像の1以上の特徴のモデルを用いて1以上の特徴に対する画像をサーチし、続いて画像内で1以上の特徴が検出された場合はトリガ信号を装置310に提供することができる。また、幾つかの実施形態において、VSoC200は画像を取得し、画像の1以上の特徴の1以上の特徴のモデルを用いて1以上の特徴をサーチし、続いて画像内に1以上の特徴が検出される場合は、1以上の特徴の物理的場面における位置を示す位置データを装置310に提供することができる。その帰結として、そのような実施形態においてはVSoC200から全画像データを別個の外部プロセッサに送って、これらの別個の外部プロセッサに特徴のサーチを実行させるよりも、VSoC200はこのサーチをビジョンセンサチップ上で実行できる。そのような場合には、VSoCはトリガ信号、アライメント/位置データ、特徴データなどに含まれたより最小の情報を装置300に送ることができるが、これによりVSoC200からオフチップで送られるデータの量を減らすことができる。
【0021】
種々の実施形態において、VSoC200から送られるデータの量を減らすことにより、VSoC200が画像を取得できる速度(毎秒のフレーム)を増すことができる。なぜならばVSoC200の動作は送信動作の完了に制約されることがより少ないからである。たとえば幾つかの実施形態において、VSoC200は画像を200フレーム・パー・セコンド以上の速度で取得して処理するように構成されてよく、これによりVSoC200は自動ビデオ監視、車両制御、ID読取装置/スキャニング装置におけるトリガと特徴検出/抽出(以下に説明する)、ジェスチャー認識、静止ビジョンセンサまたは移動ビジョンセンサを用いた三次元(3D)モデルによる対象の寸法決定、運動解析などの用途で有益に使用できる。
【0022】
種々の実施形態において、VSoC200はセルフトリガするように構成されてよく、種々の実施形態においてVSoC200はその周囲を連続的に撮像して、連続的な画像の流れを取得できる。より具体的には、VSoC200は他のビジョンアプリケーションのためのソフトウェアまたはハードウェアトリガとして提供するように構成できる。それはたとえばID読取装置のためのソフトウェアトリガとして使用され、関連する復号プロセスまたはアプリケーション、たとえば相互接続された装置によって復号するためにID特徴を検出して特定することを目指してID候補を含んだ関心のある領域が処理される(以下にさらに説明する)。
【0023】
VSoC200からオフチップで送られるデータの量を減らすことにより、信号をオフチップで駆動するのに必要とされる電流が少なくなるので電力の消費は減る。同様に、これはVSoC200と外部装置の間でのデータの交換が減少するために電磁干渉(EMI)を減らす。電力消費が減ることは、バッテリー制限用途など多くの用途で有利である。
【0024】
幾つかの実施形態において、装置310は画像データを処理できるタイプの装置であり、VSoC200は画像データを装置310に送るように構成されている。VSoC200が画像データを装置310に送るように構成された幾つかの実施形態において、VSoC200は1以上の特徴のモデルを用いて画像を1以上の特徴についてサーチし、画像内で1以上の特徴の少なくとも1つが検出された場合のみその画像の画像データを装置310に送るように構成されている。また、VSoC200が画像データを装置310に送るように構成された幾つかの実施形態において、VSoC200は1以上の特徴のモデルを用いて画像を1以上の特徴についてサーチし、このサーチから特定された特徴に基づいて決定される画像内の関心のある領域に対する画像データのみを装置310に送るように構成されている。VSoC200が画像データを装置310に送るように構成された種々の実施形態において、VSoC200は当該画像に対する全画像データを装置310に送るように制御可能であってよい。幾つかの実施形態において、VSoC200は1以上の特徴が検出された画像に関してモデルの姿勢を示めす姿勢情報を装置310に送るように構成されている。
【0025】
種々の実施形態において、装置310はプロセッサを含むことができ、VSoC200は処理タスクを装置310のプロセッサと相互に交換し、および/またはVSoC200と装置310のプロセッサの各々によってどの特定のタスクが実行されるべきかを使用者が指定できるようにし、たとえば処理量、メモリの使用などを最適化できるように構成され得る。また、種々の実施形態において、装置310はプロセッサを含んでよく、VSoC200は1以上の特徴を含んでいる候補画像または画像の部分を決定し、次に候補画像または画像の部分を装置310による後続の処理のために装置310に転送するように構成されてもよい。幾つかの実施形態において、VSoC200は他の1以上のコンポーネント(図示せず)、たとえば自動焦点光学系、アダプタ装置などと接続して使用されて、たとえば種々異なる被写界深度または種々異なる照明を提供する一方で、画像を取得し、随意に種々の用途にとって有用な時間周期内にそれらを処理することができる。
【0026】
本明細書で説明される例示的なVSoC、および一般的に望ましいと考えられているその他の実装はいわゆるデータ「ファネル」として作用し、そこにおいてこれらの実装は取得された1組の画像データを、装置310に送られるように縮小されたサイズのデータに変換することを容易にする一方で、この縮小されたデータセットでさらにバックエンドおよび/またはオフチップ処理を実行するのに十分である有意味な情報特徴を保持する。例を示すと、そのようなファネリング処理は、(a)アレイからの画像データを処理して一般的に装置転送画像のサイズおよび/または深度を縮小すること、(b)画像を処理して原画像と比較したときに縮小されたサイズの特徴を抽出し、縮小されたサイズの特徴セットを装置に転送すること、および(c)多数の画像フレームを処理し、そこから縮小された数の画像を全部または縮小されたデータセットで送ることを含むが、これらに限定されない。さらに本明細書に記載するシステムと方法に従って使用するために考えられたVSoC実装は一般に、画像またはその他の処理されたデータ(たとえばエッジ、ROIなど)を前処理し、この処理されたデータを装置(310)に送信することを可能にするが、前処理はVSoCによって装置よりも効率的に実行される。そのためVSoCにおいてより生データが高速に前処理されて焦点を絞ったデータセットを生み出すので処理速度を増すことができ、このデータセットは装置によってゆっくり処理することができる。種々の実装において、画像からのピクセルデータを大きいグルーピング(たとえば取得されたピクセルデータ行)として同時に処理できる高度な並行プロセス環境が存在することが、高速前処理を容易にする。大グループプロセスの恩恵を受ける何らかの動作、たとえば近傍演算は、そのような並行環境において大幅に増した効率で実行される。
【0027】
さらに以下に説明するように、例示的なシステムと方法を参照すると、実装のファネリング特徴は、次の事実によって強化される。すなわち、本発明に従う種々のVSoC実装は、データをピクセルアレイからバッファメモリに読み出すと同時に保存されたデータを処理して、より精選されたおよび/または小さいサイズのデータセットを生成することを可能にする。一実施形態において、この処理は1行ずつ実行されるが、同時に処理されるデータの別のグルーピングも想定される。これはデータを処理できる速度が生画像データの取得速度であるフレーム・パー・セコンド(FPS)に比べて高いことによる。
【0028】
図4は、VSoC200の実施形態の内部アーキテクチャを例示する。VSoC200は上述したピクセルアレイ208と上述した1以上の回路230(図2)を含む。種々の実施形態において、1以上の回路230は制御回路422、汎用メモリ402、処理回路424、画像アドレスプロセッサ410、1以上の画像メモリ装置414、画像データセレクタ415、モデルデータシフト416、1以上のコンパレータ・アキュムレータ420、およびプライオリティエンコーダ417を含む。
【0029】
種々の実施形態において、ピクセルアレイ208は、撮像されている場面に対して検知された光に基づいて1以上のピクセル信号を提供するように構成されている。また、種々の実施形態において、処理回路424はピクセルアレイ208から提供された1以上のピクセル信号を処理して画像を生成するように構成されている。一般に、例示的な実施形態の処理回路はSIMDアーキテクチャとして実装されており、ピクセルアレイ208から送られた行全体のピクセルデータは同時に処理され、やはり1以上の画像メモリ装置と通信するワイドバス404を介して転送され、これらの画像メモリ装置も行全体の画像ピクセルデータを同時に(すなわち共通のクロックサイクル)読み込みまたは読み出すことができるワイドバスによって特徴付けられる。幾つかの実施形態において、ピクセルアレイ208から提供された1以上のピクセル信号はアナログ信号であり、そのような信号は、LAPによる処理に先立って、適切なADC回路でデジタル信号に変換される。種々の実施形態において、処理回路424は1以上のピクセル信号から獲得されたデジタルピクセル値で1以上の前処理動作を実行して、前処理された画像データを提供するように構成されている。
【0030】
例を示すと、種々の実施形態において処理回路424は、デジタルピクセル値に含まれたノイズを減らすノイズリダクションのための前処理を実行するように構成されている。画像ノイズはピクセル値の不規則変動であり、VSoC200内の電子雑音などによって引き起こされる。種々の実施形態において、処理回路424はノイズリダクションをフィルタリングプロセスによって、たとえば原ピクセル値が近傍ピクセル値の強度の中央値と置き換えられる中央値フィルタリングによって達成するように構成されている。このノイズリダクションフィルタリング機能について、さらに以下に説明する。幾つかの実施形態において、処理回路424は他のタイプのフィルタリング、たとえば低域フィルタリングを実行するように構成されており、その場合は平滑化演算を表すマスクでピクセル値のデータを畳み込み演算することによってノイズを減らして、各々のピクセル値を近傍ピクセル値の値に近づける。中央値フィルタリングと低域フィルタリングは単にフィルタリングのタイプの例として提供されるにすぎず、他の種々の実施形態においてVSoC200は他のタイプのフィルタリングを実行するように構成してもよいと理解されるべきである。
【0031】
種々の実施形態において、処理回路424はまた6ビットまたは8ビット(または他の値の)グレースケールピクセル値を1ビットバイナリピクセル値に変換するための前処理を実行するように構成されている。幾つかの実施形態において、処理回路424は、たとえばグレースケールピクセル値と閾値との比較に基づいて、グレースケールピクセル値を絶対的な黒ピクセル値または白ピクセル値に変換する閾値化プロセスを実行するように構成されている。そのような閾値化プロセスによりピクセル値を2値化することができる。種々の実施形態において処理回路424はまたデータで形態学的な閉演算を実行構成されており、構造化要素を用いてデータで膨張が実行され、次にその結果生じるデータで構造化要素を用いて侵食が実行される。このような形態学的な閉演算は、たとえば画像の前景領域内にある背景のカラーホールを収縮させるために用いられてよい。
【0032】
種々の実施形態において、1以上の画像メモリ装置414はある画像の画像データを保存するように構成されている。たとえば、上述したように、種々の実施形態において、処理回路424はデータピクセルアレイ208から提供されたピクセルデータで処理を実行して、処理の結果を取得された画像のピクセル強度データとして1以上の画像メモリ装置414に保存する。種々の実施形態において、1以上の画像メモリ装置414はデータを保存および提供するために、それぞれランダムアクセスメモリ(RAM)などを含む。RAMのサイズとレイアウトは、メモリの行がピクセルアレイ208の行に対応するアドレスを含むように提供され得る。同様に、処理回路内の個々のSIMDプロセッサ(集合的に上述したLAPを定義する)425は、与えられたピクセルアレイおよびメモリ行における要素の数と同じ数であってもよい。種々の実施形態において、制御回路422はピクセルアレイ208を制御して光を捕捉し、ピクセル信号を提供するように構成されており、および処理回路424を制御してピクセルアレイ208からのピクセル信号を処理してある画像の画像データを提供するように構成されている。幾つかの実施形態において、ピクセルアレイ208は可視スペクトル内にある光を捕捉して、捕捉された光に基づいてピクセル信号を提供するように構成されている。幾つかの実施形態において、ピクセルアレイ208は可視スペクトルの外部にある光をさらに(あるいは代替的に)捕捉し、捕捉された光に基づいてピクセル信号を提供するように構成されている。幾つかの実施形態において、ピクセルアレイ208は、可視スペクトルと可視スペクトルの外部の双方から光を捕捉し、捕捉された光に基づいてピクセル信号を提供するように構成されている。
【0033】
種々の実施形態において、制御回路422は外部装置、たとえば上述したPCから1以上の特徴のモデルに対してモデル命令を受け取るように構成され、およびモデル命令を汎用メモリ402に保存するように構成されている。種々の実施形態において、汎用メモリ402はデータを保存および提供するためにRAMなどを含む。種々の実施形態において、汎用メモリ402は制御回路422によって実行できるプログラムを保存する。幾つかの実施形態において、汎用メモリ402はVSoC200の外部にある外部メモリ(図示せず)で補足されてよく、そのような実施形態においてVSoC200は外部メモリと汎用メモリ402との間でデータを転送できるように構成できる。種々の実施形態において、図4の構成要素は所望すれば種々異なる用途のために補足または省略でき、以下にそのような変形例の幾つかを例示的なシステムと方法を参照して説明する。
【0034】
種々の実施形態において、1以上の回路230は1以上の特徴のモデルを用いて画像の1以上の特徴をサーチするように構成されている。幾つかの実施形態において、サーチされる画像は1以上の画像メモリ装置414に保存され、画像をサーチするために用いられる1以上の特徴のモデルのモデル命令は汎用メモリ402に保存される。また、種々の実施形態において制御回路422は汎用メモリ402からのモデル命令を実行し、モデル命令に基づいて処理回路424、画像アドレスプロセッサ410、モデルデータ416および複数のコンパレータ・アキュムレータ400を制御するように構成されている。画像マッチングおよび対象/特徴姿勢(アライメント)決定を実行するように適合された幾つかの実施形態において、各々のモデル命令はモデル基準点に対する位置を指定する相応の座標を含む。また、幾つかの実施形態において、制御回路422はプログラムされた画像モデルのモデル命令から座標を画像アドレスプロセッサ410に提供するように構成され、画像アドレスプロセッサ410は座標を少なくとも部分的に1以上の変換値に基づいて変換された座標に変換するように構成されている。種々の画像アドレスプロセッサ410の実施形態では、モデルの座標を幾何学的変換に従って変換できるようにする。
【0035】
モデルの座標を幾何学的変換に従って変換する能力を持つと、画像内の特徴をサーチするとき、種々異なる画像において画像内の特徴が種々異なる角度で回転され、種々異なるサイズに拡大縮小され、または種々異なる位置に移動される場合に有利である。幾つかの例において、特徴のモデルを幾何学的に変換する能力により、画像内の特徴の回転、縮尺または位置に関わりなくモデルを画像内の特徴を検出するために使用できる。種々の画像アドレスプロセッサ410の実施形態では、モデルの1以上の座標を1以上のアフィン変換値に従って変換するように構成されている。
【0036】
種々の実施形態において、画像アドレスプロセッサ410は、変換された座標の第1の座標を1以上の画像メモリ装置414に提供して1以上の画像メモリ装置414にアクセスし、それにより1以上の画像メモリ装置414が、変換された座標の第1の座標によってアドレス指定されたデータを画像データセレクタ415に提供するように構成されている。種々の実施形態において、画像アドレスプロセッサ410もまた変換された座標の第2の座標を画像データセレクタ415に提供し、それにより画像データセレクタ415が、1以上の画像メモリ装置414から受け取ったデータを変換された座標の第2の座標に基づく量だけシフトさせるように構成されている。
【0037】
種々の実施形態において、制御回路422は累積インクリメントと1以上の値をモデルからモデルデータシフタ416に提供するように構成されており、モデルデータシフタ416は1以上の値と累積インクリメントを1以上のコンパレータ・アキュムレータ420に提供するように構成されている。実施形態において、1以上のコンパレータ・アキュムレータ420はサーチされる画像のデータに基づいて得られた1以上の値をモデルからの1以上の値と比較するように構成されている。また、種々の実施形態において、1以上のコンパレータ・アキュムレータ420は比較の結果に基づいて累積インクリメントを累積するための累積を選択的に実行するように構成されている。
【0038】
種々の実施形態において、処理回路424もまた、累積された値を1以上のコンパレータ・アキュムレータ400から受け取り、バイナリタグワードを形成して画像とモデルデータとの比較に対して局所的な最大反応を示すように構成されている。さらに、プライオリティエンコーダ417は、処理回路424からバイナリタグワードを受け取り、バイナリタグワードに基づいて出力を制御回路422に提供するように構成できる。種々の実施形態において、制御回路422はさらにVSoC200から出力を提供するように構成されている。
【0039】
図5はVSoC200の実施形態のより詳細な表現を描写する。種々の実施形態において、VSoC200は上述したピクセルアレイ208と並んで、ピクセルコントローラ505、複数のアナログコンパレータ507、アナログ傾斜波発生器504、複数のアナログ・デジタル・コンバータ(ADC)ラッチ509、およびデジタル傾斜波発生器503を含む。種々の実施形態において、ピクセルアレイ208は行と列に配列された複数のピクセル回路506を含む。また、種々の実施形態において、各々のピクセル回路506は感光要素または光検出器、たとえば光ダイオードなどを含んで、撮像されている場面の対応する部分の光強度をサンプリングし、各々のピクセル回路506はサンプリングされた光強度に基づいてアナログピクセル信号を提供するように構成されている。
【0040】
種々の実施形態において、ピクセルコントローラ505はピクセルアレイ208内のピクセル回路506に制御信号を供給して、ピクセル回路506の動作を制御する。幾つかの実施形態において、ピクセルアレイ208の同じ行にあるピクセル回路506はピクセルコントローラ505からの共通の行の制御信号を共有し、ピクセルアレイ208の同じ列にあるピクセル回路506は出力を提供する共通の列読み出しラインを共有する。種々の実施形態において、ピクセルコントローラ505は、ピクセル回路506を制御して1行ずつデータの出力を提供する。また、種々の実施形態において、ピクセルアレイ208内のピクセル回路506の各々の列から出力されたアナログピクセル信号は、対応するアナログコンパレータ507に入力される。
【0041】
種々の実施形態において、ピクセルアレイ208から出力されたアナログピクセル信号のアナログ・デジタル変換が、複数のアナログコンパレータ207、アナログ傾斜波発生器204、複数のADCラッチ209、およびデジタル傾斜波発生器503を用いて実行される。幾つかの実施形態において、ピクセルアレイ508の各々の列で出力されたアナログピクセル信号が、アナログ傾斜波発生器504によって生成される共通のアナログ基準レベルに対応するアナログコンパレータ507で比較される。また、幾つかの実施形態において、デジタル傾斜波発生器503は、アナログ傾斜波発生器504によって生成されるアナログ基準レベルを表すデジタル信号を生成するように構成されている。種々の実施形態において、何らかの列でアナログ基準レベルがアナログピクセル信号のレベルに等しい場合、対応するアナログコンパレータ507はデジタル出力を生成して対応するADCラッチ509に、デジタル傾斜波発生器503によって供給されるデジタル信号の値をラッチさせる。
【0042】
種々の実施形態において、VSoC200さらに制御プロセッサ501、上述したエッジ汎用メモリ402、複数の画像入力レジスタ510、複数の入力/出力(I/O)レジスタ511、複数のシフトレジスタ512、複数の演算処理装置(ALU)513、複数の画像メモリ装置414(上述)、および適当なサイズのバスを介して種々の回路コンポーネントを相互接続する複数のデータパス518を含む。種々の実施形態において、制御プロセッサ501は汎用メモリ502に接続されており、ここからプログラムとモデル獲得してVSoC200の制御要素を実行する。種々の実施形態において、各々のADCラッチ509は対応する画像入力レジスタ510に接続されており、各々の画像入力レジスタ510は出力データラインによってデータパス518の対応するブランチに接続されている。
【0043】
種々の実施形態において、各々のデータパス518は、データをビットシリアル形式で搬送するシリアルデータパスを含む。他の種々の実施形態において、各々のデータパス518は、データを搬送するための複数のデータラインを含んでいてもよい。幾つかの実施形態において、複数のデータパス518はバスの一部分である。また、幾つかの実施形態において、ピクセルアレイ208内のピクセル回路506の各列に対して少なくとも1個のデータパス518がある。種々の実施形態において、各々のデータパス518は対応する画像入力レジスタ510、対応するI/Oレジスタ511、対応するシフトレジスタ512、対応するALU513および対応する画像メモリ装置414に接続されている。また、種々の実施形態において、複数のI/Oレジスタ511はそれぞれ制御プロセッサ501に接続されていて、制御プロセッサ501からデータを入力し、および制御プロセッサ501にデータを出力する。幾つかの実施形態において、複数のシフトレジスタ512は、もしあれば左右すぐ隣のシフトレジスタにそれぞれ接続されている。また、幾つかの実施形態において各々のALU513は、少なくとも2個のデータ入力レジスタ(aおよびb)と1個のキャリーレジスタ(c)を含む1組の対応するレジスタを通して、対応するデータパス518に接続されている。
【0044】
種々の実施形態において、各々の画像入力レジスタ510は、対応するデータパス518によって、対応するI/Oレジスタ511、対応するシフトレジスタ512、対応するALU513、および対応する画像メモリ装置414に、デジタル化された画像データが利用できるようにする。種々の処理動作において、画像データは複数の画像メモリ装置414にバッファリングされ、集合的にLAP425の一部を含む複数のALU513を用いて処理される。種々の実施形態において、処理された画像データまたはその他のデータは、二次データ処理および/またはVSoC200の外部にある装置との外部データ通信のために、制御プロセッサ501によって複数のI/Oレジスタ511を通してアクセスされてもよい。
【0045】
図4および図5を参照すると、種々の実施形態において、制御回路422は制御プロセッサ501とピクセルコントローラ505を含む。また、種々の実施形態において、処理回路424は複数のアナログコンパレータ507、アナログ傾斜波発生器504、複数のADCラッチ509、デジタル傾斜波発生器503、複数の画像入力レジスタ510、複数のI/Oレジスタ511、複数のシフトレジスタ512および複数のALU513を含む。種々の実施形態において、1以上の画像メモリ装置414(図4)は、図5に例示されているように複数の画像メモリ装置414を含む。
【0046】
さらに図5を参照すると、種々の実施形態において、VSoC200はさらに画像アドレスプロセッサ410、画像データセレクタ415、モデルデータシフタ416、複数のコンパレータ・アキュムレータ420およびプライオリティエンコーダ417を含む。種々の実施形態において、各々のデータパス518は画像データセレクタ415に接続されている。また、種々の実施形態において、制御プロセッサ501は画像アドレスプロセッサ410に接続されており、画像アドレスプロセッサ410は同じく複数の画像メモリ装置414のアドレス入力と画像のデータセレクタ415の制御入力に接続されている。
【0047】
幾つかの実施形態において、制御プロセッサ501はモデルデータシフタ416の入力に接続されており、モデルデータシフタ416の出力は複数のコンパレータ・アキュムレータ420の各々の入力に接続されている。各々のコンパレータ・アキュムレータ420もまた画像データセレクタ415から入力を受け取るために接続されている。種々の実施形態において、画像データセレクタ415は双方向バレルシフタまたは類似のものを含む。また、種々の実施形態において、複数のコンパレータ・アキュムレータ420の各々は、対応するデータパス518と作動的に結合されている。幾つかの実施形態において、プライオリティエンコーダ417は各データパス518に接続され、制御プロセッサ501に接続されている。図5に例示されたVSoC200のアーキテクチャの接続および/または編成は例を示すために提供されたものであり、他の種々の実施形態においてVSoC200はその他の適当な構成を持ち得ることが理解されるべきである。
【0048】
図6は、VSoC200で使用するための画像アドレスプロセッサ410の実施形態のブロック図を描写する。種々の画像アドレスプロセッサ410の実施形態では、少なくとも部分的に1以上の変換値に基づいてモデルの座標を変換された座標に変換するように構成されている。種々の画像アドレスプロセッサ410の実施形態では変換値を保存するために、変換係数レジスタ602、603、604、605、画像行オフセットレジスタ601および画像列オフセットレジスタ606を含む。種々の画像アドレスプロセッサ410の実施形態ではさらに符号付き乗算器607、608、609、610、および加算器611、612、613、614を含む。
【0049】
アドレスプロセッサの動作の例を示すと、モデルの第1の座標(図6にXで示す)とモデルの第2の座標(図6にYで示す)は、画像アドレスプロセッサ410への入力として提供される。図5図6を参照すると、種々の実施形態において制御プロセッサ501はモデルのモデル命令を汎用メモリ402からフェッチして、モデル命令に含まれている座標を画像アドレスプロセッサ410に提供するように構成されている。たとえば制御プロセッサ501は、モデルのモデル命令、たとえばモデル例として提供されるモデルの第1のモデル命令を汎用メモリ402からフェッチして、モデル命令に含まれている座標、たとえば例では座標(−7、−2)を画像アドレスプロセッサ410に提供するように構成できる。この例では、第1の座標に対する−7の値は画像アドレスプロセッサ410に入力されるXとして提供され、第2の座標に対する−2の値は画像アドレスプロセッサ410に入力されるYとして提供されよう。
【0050】
図6に示されているように、種々の実施形態において変換係数レジスタ602、603、604、605は、それぞれアフィン変換係数K00、K01、K11、K10を保存するために書き込み可能であり、K00、K01、K11、K10の値は所望の変換を実行できるように設定可能である。種々の実施形態において、画像行オフセットレジスタ601は行オフセット値DRを保存するために書き込み可能であり、画像列オフセットレジスタ606は列オフセット値DCを保存するために書き込み可能であり、DRとDCの値は設定可能である。種々の実施形態において制御プロセッサ501(図5)はモデルに対する所望の幾何学的変換に基づいて画像アドレスプロセッサ410内でK00、K01、K11、K10、DR、DCの値を設定するように構成されている。
【0051】
種々の実施形態において、符号付き乗算器607は変換係数レジスタ602からの入力と、変換されるべき第1の座標である入力を受け取り、出力を加算器611に提供する。また、種々の実施形態において符号付き乗算器608は変換係数レジスタ603からの入力と、変換されるべき第2の座標である入力を受け取り、出力を加算器611に提供する。種々の実施形態において、符号付き乗算器609は変換係数レジスタ604からの入力と、変換されるべき第2の座標である入力を受け取り、出力を加算器612に提供する。また、種々の実施形態において、符号付き乗算器610は変換係数レジスタ605からの入力と、変換されるべき第1の座標である入力を受け取り、出力を加算器612に提供する。
【0052】
種々の実施形態において、加算器611は符号付き乗算器607と符号付き乗算器608から入力を受け取り、出力を加算器613に提供する。また、種々の実施形態において、加算器612は符号付き乗算器609と符号付き乗算器610から入力を受け取り、出力を加算器614に提供する。種々の実施形態において、加算器613は画像行オフセットレジスタ601と加算器611から入力を受け取り、出力として第1の変換された座標(図6にRで示す)を提供する。また、種々の実施形態において、加算器614は画像列オフセットレジスタ606と加算器612から入力を受け取り、出力として第2の変換された座標(図6にCで示す)を提供する。このようにして図6の実施形態において画像アドレスプロセッサ600は、複数の変換値K00、K01、K11、Κ10、DR、DCに基づいて座標(X、Y)を変換座標(R、C)に変換できるようにする。
【0053】
図7は、図6の画像アドレスプロセッサ410の実施形態に対して(X、Y)入力と(R、C)出力との関係を指定する数式を記載したテキストボックス710を示す。図7に例示されているように、Rに対する式はR=X*K00+Y*K01+DRとして提供され、Cに対する式はC=X*K10+Y*K11+DCとして提供される。このようにして図6の画像アドレスプロセッサ410の実施形態は、幾何学的変換、たとえば回転、拡大縮小または移動に従い所望の幾何学的変換に対する変換値を設定することによりモデルの座標を変換できるようにする。画像アドレスプロセッサ410を使用することで幾何学的変換を可能にすることにより、1以上の特徴のモデルが1以上の画像内の特徴の種々異なる回転、縮尺および移動に対するパターンマッチングのために使用できる。
【0054】
図6の画像アドレスプロセッサ410の画像アドレスプロセッサ410の実施形態では6個の変換値K00、K01、K11、K10、DR、DCに基づいて座標を変換できるようにする。したがって図6の画像アドレスプロセッサ410の実施形態は変換のための6自由度を可能にする。当然のことながら、画像アドレスプロセッサ410の他の種々の実施形態において、変換に対して6を超える自由度を許容するために6個を超える変換値が用いられてよいと理解されるべきである。たとえば種々の画像アドレスプロセッサ410の実施形態で別の3個の変化値が設けられ、画像アドレスプロセッサ410はさらに透視歪みに対する変換を可能にするように構成されている。また、他の種々の実施形態において、画像アドレスプロセッサ410の実施形態に6個以下の変換値を使用してもよいことが理解されるべきである。たとえば、種々の画像アドレスプロセッサ410の実施形態は移動を可能にするために2個の変換値のみ設定できるようにしてよい。また、図6に例示された画像アドレスプロセッサ410の実施形態は、例示的な画像アドレスプロセッサの実装例を示すために提供されたものであり、他の種々の実施形態で代替的な構成を、座標の変換に使用するための画像アドレスプロセッサとして使用できることが理解されるべきである。
【0055】
図8は、VSoC(図4)で使用するためのコンパレータ・アキュムレータ420の実施形態のブロック図を描写する。種々の実施形態において、コンパレータ・アキュムレータ420は、画像データシフタ801、画像データ復号器802、複数のANDゲート803、ORゲート804、マッチシフタ805、マッチエンコーダ806およびマッチアキュムレータ807を含む。種々の実施形態において、画像データシフタ801は画像データ入力ライン808でデータを受け取り、画像データシフタ801内で画像データシフタ801がシフトするようにクロックされる度にデータを1位置だけシフトするように構成されている。また、種々の実施形態において画像データシフタ801は出力を画像データ復号器802に提供するように構成されている。
【0056】
種々の実施形態において、画像データ復号器802は画像データシフタ801から提供された値を復号して、復号された値の各ビットを複数のANDゲート803の対応するANDゲートの対応する第1の入力に提供するように構成されている。また、種々の実施形態において、モデルの1以上のモデル値の各ビットが1以上のモデルデータ入力ライン809を介して複数のANDゲート803の対応するANDゲートの対応する第2の入力に提供される。
【0057】
種々の実施形態において、画像からのビットは画像データシフタ801内にシフトされ、次いで画像データ復号器802により、画像データシフタ801の2進数のデシマル値に対応するビット位置に「1」ビット、および他のすべての位置に「0」ビットを有するビットストリングに2進展開することによって復号される。この場合、復号されたビットストリング内の低位ビットは0のビット位置に対応する。続いて、種々の実施形態において、画像データ復号器802から復号されたビットストリングは複数のANDゲート803を用いて、モデル内の値から再構成され1以上のモデルデータ入力ライン809を介して提供されたビットストリングと比較することができる。種々の実施形態において、ORゲート804は複数のANDゲート803の各々の出力を受け取り、複数のANDゲート803の出力のいずれかが「1」の場合は「1」の出力ビットを提供する。幾つかの実施形態において、ORゲート804は、複数のANDゲート803のいずれかが「1」の値を有するビットを出力したか決定するように構成された複数のORゲートに置き換えてもよい。種々の実施形態において、ORゲート804の出力は、ある画像の画像データとあるモデルのモデルデータとの間で、当該モデルの特定の幾何学的変換と、当該画像に関して幾何学的に変換されたモデルの特定の位置について一致が検出されたか否かを示す。種々の実施形態において、複数のANDゲート803とORゲート804はコンパレータと見なすことができる。当然のことながら、複数のANDゲート803とORゲート804は比較を実行するための構成の例を示すために提供されたものであり、他の種々の実施形態においてその他のタイプのコンパレータを使用できることが理解されるべきである。
【0058】
種々の実施形態において、ORゲート804の出力はマッチシフタ805に提供され、マッチシフタ805はORゲート804から提供されたビットを入力し、シフトマッチシフタ805内のその他のビットはマッチシフタ805がクロックされる度にデータを1位置だけシフトするように構成されている。種々の実施形態において、マッチシフタ805内のデータはマッチエンコーダ806に出力され、マッチエンコーダ806はマッチシフタ805内に保存されたビットで表される値をコード化して、出力をマッチアキュムレータ807のクロックに提供するように構成されている。種々の実施形態において、マッチアキュムレータ807は1以上のモデルデータ入力ライン809を介してモデルの累積インクリメントを受け取り、マッチエンコーダ806の出力の値に基づいてクロックされると累積インクリメントを累積するように構成されている。また、種々の実施形態において、マッチアキュムレータ807はマッチアキュムレータ807内で累積された値を対応するデータパス518に出力するように構成されている。
【0059】
種々の実施形態において、制御回路422(図4)は、信号を各々のコンパレータ・アキュムレータ420に送り、制御回路422がリセット命令を含むモデル命令を実行すると、各コンパレータ・アキュムレータ420内のマッチアキュムレータ807がデフォルト値にリセットされるように構成されている。また、種々の実施形態において、制御回路422は信号を送り、制御回路422が比較命令を含むモデル命令を実行すると、各コンパレータ・アキュムレータ420内のマッチアキュムレータ807によって累積が行われるように構成されている。そのような実施形態において、各コンパレータ・アキュムレータ420内のマッチアキュムレータ807は、対応するマッチエンコーダ806の出力によってクロックされることもでき、累積が許可されると、マッチアキュムレータ807は対応するマッチエンコーダ806から出力された値に依存して累積を実行するか、または実行しない。
【0060】
II.VSoCシステム実装

取得された画像データの全セット内で当該画像内部の注意の焦点に基づいて離散的画像データを処理するためのシステムと方法の例示的な実施形態において、全体的ビジョンシステムアーキテクチャに実装されるビジョンセンサ(VSoC)200が提供される。このシステムと方法の機能を相互参照しやすくするために、上記の例示的なVSoC200について説明された種々の要素が再編成される。たとえば読み出し回路の要素は、一部は上述した制御回路422内にあり、一部は処理回路424(図4および図5)内にある。同様に、LAP425は全体的な処理回路424の部分である。読者が例示的なシステムと方法の動作の基礎をなす例示的(または代替的)なVSoCアーキテクチャの環境をさらに理解するのを助けるために、追加的な機能および相互接続(たとえばオフダイの第2のプロセッサおよび種々の通信ポート)についても説明する。
【0061】
図示されたピクセルアレイ208は例示的な表面または対象およびこれらと関連する関心のある特徴を含む視野(FOV)を撮像し、関心のある特徴はビジョンシステムの決定または後続のプロセス(たとえばバーコード復号)の前提となる所望の画像情報を含んでいる。FOVに対するピクセルアレイ208の向きは、角度と回転において非常に可変である。同様に、対象/表面の運動が存在する場合に、ピクセルアレイはこの実施形態に従って考えられる画像の取得と処理のために、復号に必要とされる情報をより確実に取得することができるフレームレートで動いていることも可能である。例示的なピクセルアレイは1,028列と786行で構成できる。そのようなアレイは境界効果を避けるために上下左右に2行もしくは2列のダミーを含むことができ、したがって例示的な1,024行×782列のアクティブな8ビット(または代替的に6ビット)ピクセルアレイを提供する。ADC回路を含め相互接続された読み出し回路および上述した関連する機能は、アナログセンサ出力をデジタルピクセルデータに変換し、これは例示的な実施形態に従い関連するバスを介して1024行として線形アレイプロセッサ(LAP)425に読み出される。ピクセルアレイの構成は非常に可変であることに留意されたい。例示的なアレイは2D構成であるが、代替的な実装においては1以上のIDアレイも用いることができる。
【0062】
ピクセルアレイ208内の画像取得プロセスは、センサコントローラによって扱われる。例示的な実装は、アレイ内の各ピクセル行に対する動作と、読み出し回路に対するイベントのシーケンスを制御するために必要な波形を生成する有限状態機械(FSM)からなる。センサコントローラの動作は、使用者によりVSoC200の部分である別個の16ビットプロセッサ501(上述した図5の制御プロセッサ501)内のコンフィギュレーションレジスタを介してプログラムでき、これについては以下に説明する。これらのレジスタは、ROIのパラメータ、シャッタモード、露光時間およびADC解像度を含め、ピクセルアレイ208と読み出し回路のすべてのプログラム可能なパラメータを構成する。画像フレームが取得されると、これが読み出されて1024幅で1行ずつデジタル形式に変換される。この読み出しおよびA/D変換プロセスと並行して、LAP425はこのシステムと方法のROI検出および特徴抽出用途のプログラムコードに従って画像を処理する(以下に説明する)。
【0063】
LAP425は1,024個の同一処理要素一次元アレイからなるパラレルプロセッサであり、それらの各々は一般的に上述したように1ビットデータパス、16アキュムレータビット、キャリーフラグおよびイネーブルフラグを含んでいる。LAP425はSIMDマシンとして実装され、すべてのプロセッサは同調して動作し、同じ動作を異なるデータで実行する。
【0064】
各々のLAP要素はデータメモリの1列(4,096ビット)から1ビットを読み出しおよび書き込むことができる。行アドレスはLAPメモリの読み出しまたは書き込みサイクルの間はすべての要素に対して同じである。データメモリとLAPとの間には、読み出されたデータを左または右に13位置までシフトするように構成できるバレルシフタがある。これにより各LAP要素はそれ自身の位置から左および右の13列からのデータにアクセス(各クロックサイクル)することが許容される。データメモリ(すなわち図4で上述した1以上の画像メモリ装置414)は幅1024のバスを介して相互に接続されており、1,024×1,024ビットのブロックからなる。このメモリは画像処理の中間結果を保存するために使用される。メモリは処理され全体画像のうちLAPに由来する部分のみ保存するように適合されていることに留意すべきである。以下に説明するように、メモリはまたROI情報や抽出された特徴など処理の中間結果も保存する。こうしてピクセルアレイからのデータは絶えずメモリ414を通して動かされ、成果のあるID検出動作に関係しなければ放棄され、または情報が有望なID特性を示せば復号などの後続のステップおよびプロセッサに移される。典型的な用途において、取得された画像は1行ずつLAPに送られる。LAP425において、データは処理されて同等の二値画像を生成する。その結果生じる二値画像は後続の処理のために漸進的にデータメモリに保存される。ビジョンシステムの幾つかの実施形態において、二値画像はVSoCの相関器によって処理されて正規化相関とパターンマッチング情報を獲得する。該当する場合は、二値画像は正規化相関を加速して、画像内のパターンマッチングを実行するために使用できる。プライオリティエンコーダは、画像行における推移を検出するために最適化される。上述したプライオリティエンコーダ(1024ビット幅)はバスを介してメモリ414と相互作用して、データメモリ行における設定ビットの高速検出に備える。
【0065】
LAP425で実行される多数の画像処理動作があり、画像行内のポイントの接続性または分布が検出されなければならない。例示的な実施形態において、これらの動作を加速するためにVSoC200はアレイを横断して「伝播・生成」機能を実装するカスタム論理ブロックを包含する。伝播・生成ユニット(バス上)の2つの可能な用途は、対象の位置特定と「未知ポイント」の解明である。ブロックは1,024個の同一セルからなる。各セルは近傍セルと通信する1対の信号「伝播IN」および「伝播OUT」を有する(それぞれ右方向と左方向に対応)。アレイの左側と右側の入力はゼロにリセットされる。LAP425ワードを伝播・生成ユニットに書き込んだ後、伝播・生成ユニットの値が有効になるまで、例示的に5サイクル必要である。
【0066】
制御プロセッサ501はVSoC200に、LAP425とは別個のコンパクトな高速処理ユニットを提供する。例示的な実施形態においてプロセッサ501は16ビットユニットであるが、その他のサイズも考えられる。プロセッサ501はLAP425と相関器に効率的な低レベル画像処理と制御を提供する。プロセッサ501は汎用命令セットを用いて動作するが、二値画像はVSoCの動作の典型的なモードであるため、二値画像で動作するための追加的な専用命令もサポートする。プロセッサ501は、任意の主要なフラグまたは周辺的なフラグを含め多数のソースからトリガされて、インタラプトをサポートする。プロセッサ501はそれぞれの16ビットバスを介してLAP425およびデータメモリ414と相互接続されている。
【0067】
例示的な実施形態において制御プロセッサ501(本明細書では「CPU」とも呼ばれる)は、縮小命令セットコンピュータ(RISC)を採用したハーバードアーキテクチャを用いて実装され、プログラムとデータに対して別個のメモリを提供するが、プログラムメモリはデータ保存にも使用できる。制御プロセッサ501はR0からR14まで16個の汎用レジスタを定義する。例示的な実装においてこれらのレジスタはそれぞれ16ビット幅である。例示的な17ビットプログラムカウンタ/シーケンサもあり、これはプロセッサがプログラムRAM(すなわち上記の汎用メモリ402)に65,53616ビットワード、および同じ量をプログラムROM948に直接アドレス指定できるようにする(ただし本発明の実施形態では現在ROMのみ48Kのアクティブワードを有する)。すべての計算はレジスタ間で行われる。したがってメモリからの値は、操作される前にレジスタにロードされる。
【0068】
データメモリ414はレジスタをポインタとして用いて、バスを介して16ビットワードとしてアクセスされる。レジスタは随意にメモリアクセス後にプレデクリメントもしくはポストデクリメントまたはプレインクリメント/ポストインクリメントされ得る。例示的な実装においてポインタプラス一定オフセットアドレス指定モードが設けられている。256Kワード(512Kバイト)の全データメモリにアクセスすることを可能にするために、例示的な実装ではページレジスタが使用される。二値画像はデータメモリにおいて16ピクセルで1ワードに圧縮される。効率的なアクセスを可能にするために、2個のポインタレジスタPXおよびPYが使用される。これらは単一のピクセルをアドレス指定するために使用され、アクセス後に独立にポストインクリメントおよび/またはポスト−デクリメントされるか、または修正されないままである。PXレジスタは10ビットであり、PYレジスタは12ビットでイメージマッピングを反映する(1,024列×4,096行)。
【0069】
128ワードI/Oスペースも例示的に提供され(図示せず)、絶対的アドレス指定を用いて直接アクセスされる。これは多くのシステムと周辺レジスタを含んでおり、残りはスクラッチメモリによって占められる。追加的なレジスタ演算のために補助レジスタセットも提供される。LAP425のアキュムレータバンク(16ビットの1,024ワード)はPXレジスタをポインタとして用いてアクセスできる。ALU演算はワーキングレジスタ間でALUと16×16乗算器・累算器を用いて行われ、任意の2個の汎用レジスタをオペランドとすることができる。そのような演算の32ビット結果は、32ビットMRレジスタ(図示せず)に保存されるまたは累積される。シフタが例示的に設けられており、これはMRレジスタを0〜31ビットだけシフトダウンでき、結果を指定された汎用レジスタに入れる。乗算器およびシフタは符号付きまたは符号なしの演算用に構成できる。
【0070】
プログラムメモリ402は16ビットの65,536ワードを保存する(図4で上述した汎用メモリの一部)。このRAMメモリ402は物理的に32ビットの32Kワードとして編成できる。ROMは32ビットの24Kワーとして編成できる。ページレジスタは、ROMまたはSRAMが、プログラムフェッチ、プログラムメモリ読み出しおよびプログラムメモリ書き込みに対する別個のページでアクセスされたか決定する。起動時にプロセッサ501は最初にROMからを実行する。ROMはプロセッサの起動コンフィギュレーションピンを読み出して所望の二次起動モードを決定する起動ソフトウェアを含んでいる。これらのモードはホストパラレルポート(FIFO)からの起動、SPIスレーブポートを介するホストプロセッサからの起動、およびSPIマスタポートを介するシリアルフラッシュからの起動を含み、これらはすべて16ビット通信バスを介してプロセッサと相互接続されている。レジスタ値およびデータのRAMとの双方向伝送を可能にする全二重通信を実装するために、SPIチャネルが提供されていることに留意されたい。標準SPIマスタポートはシリアルフラッシュメモリ、またはその他の周辺装置にアクセスすることが意図されている。ソフトウェア制御下で2台の互換装置を接続できるようにするために2個のセレクトピンが設けられている。スレーブSPIポートはホストマイクロコントローラとの代替的インタフェースとして使用できる。利用可能な起動モードの一つが選択されたら、ソフトウェアは適当な装置からコードをロードして、プログラムRAM402に保存する。すべてのソフトウェアがロードされたら、制御はプログラムRAM402のスタートに送られる。
【0071】
パラレル処理タスクとシリアル処理タスクとの効率的なバランスを提供するために、例示的なVSoCのLAP425に関連して多様なプロセッサ実装を使用できることを明確にしておくべきである。例示的な実施形態において、CPU/プロセッサ501とLAP425は同時に動作せず、むしろいずれか一方は他方が与えられた命令を実行している間はアイドル状態に留まることを要求する。図示されたCPU/プロセッサ501は例示的な実施形態に従って可能な1つの実装にすぎない。LAP、データメモリおよびその他の関連するコンポーネントとの適当な相互接続を有する代替的な実施形態において、プロセッサは種々の(非ハーバードおよび/または非RISC)アーキテクチャに基づいて実装できる。
【0072】
SPIポート構成に加えて、パラレル(FIFO)ポートが設けられている。このポートはオフチップホストプロセッサ、マイクロコントローラまたはその他の装置、たとえば例示的な実施形態の第2のプロセッサとの通信のために意図されている。第2のプロセッサはデータメモリ414からLAP425を介して処理されデータを受け取り、受け取ったデータで特定の動作または一群の動作を実行して、所望の出力値を提供しようとする。このプロセスについてさらに以下に説明する。代替的に、同じピンはここに示すビデオポートとして使用でき、ビデオポートを備えた別のプロセッサに画像を出力する。一実施形態において、512ワードのホストポートは1024ピクセル行を約25.5マイクロ秒または約51画像/秒で転送する。バスに沿って別個の専用ビデオポートを設けてもよいことに留意されたい。
【0073】
ツイストペア線を通してデータを連続的に高速で送るために低電圧差動信号(LVDS)ポートが設けられている。これは多様な商業ソースからの非直列化ICと互換性のあるスタートビット、10データビットおよびストップビットからなるフレームフォーマットを使用する。種々の実施形態において、LVDSポートは第2のプロセッサと通信するためにホストポートの代替として使用できる。さらに、シリアルポートが標準UARTの形で設けられており、および例示的に16までのGPIOラインを有する汎用入力/出力(GPIO)ポートが設けられており、バスに沿った他のI/Oポートのピンで多重化される。IEEE標準合同検査活動グループ(JTAG)ポートがデバッグポートとして使用でき、プロセッサ501と内部コンフィギュレーションレジスタを通してほとんどすべての内部装置と直接接続できる。このチャネルによりメインメモリおよび内部装置にアクセスすることが可能である。電力管理機能、システムクロック生成器、リセット機能およびバステーブルROMもVSoC200内で例示的に設けられている。加えて、バス相互接続はプロセッサ501に反応する統計ユニットである。このユニットは例示的にエッジトラッキング動作中に統計を計算する。統計は1組のI/Oマップレジスタに保存される。エッジトラッキングが完了したら、統計を使用して追跡されている対象の周囲と、直交線および対角線による境界ボックスを決定することができる。
【0074】
上述したVSoCの実装は、例示的な実施形態に従うシステムと方法で使用するための種々可能なプロセッサ実装の例であることを明確にしておくべきである。代替的な実施形態において、プロセッサは種々のパラレルアーキテクチャの周囲に、別個の制御プロセッサを有して、または有さずに編成できる。同様に、本発明のシステムと方法を実行するために、高度にパラレルではなく適当な速度とデータ処理能力を有する1以上のプロセッサを使用できる。したがって本明細書で使用する「VSoC」または「ビジョンセンサ」という用語は広く捉えるべきであり、上述した何らかの動作が他のオンチップコンポーネントと相互接続された別個のコンポーネントによりオフチップ(オフダイ)で実行されるものも含め、多様なプロセッサアーキテクチャを含む。
【0075】
たとえば、本明細書の例示的なアーキテクチャはSIMD構成(LAP)、メモリ、汎用プロセッサ(CPU)およびピクセルアレイを単一のチップ/ダイ上に含んでVSoCアーキテクチャを定義する一方で、(たとえば)ピクセルアレイはオフチップ/オフダイで存在し、適当なリードによって作動的に相互接続され得ることが明確に想定されている。このことは何らかの実装において望ましいであろう。たとえば、装置フォームファクタが特定のジオメトリを規定する場合、または処理アセンブリとは別個のピクセルアレイが所望される場合などである。
【0076】
III.注意の焦点に基づく処理
A.システムの概観

最初に例示的な実施形態を図9の一般化された配置構成を参照して説明する。これは例示的なシステムと方法に従って使用するための上述したVSoCアーキテクチャの内部の機能を要約したものである。以下に例示的な実装について説明する。VSoC内で実行されるオンダイコンポーネントおよび機能1010は離散的なボックスで示されている。センサおよび読み出し機能1020は、視野(FOV)1030内で例示的な対象1032の連続画像を取得する。対象はビジョンシステムプロセスにおいて1以上の特別関心のある領域1034を含んでいる。以下に説明するように、これらの領域はビジョンシステムのプロセスに対する1以上の注意の焦点として確定される。センサ/読み出し機能1020はこの画像のシーケンスから処理されていない画像データ1036をSIMDプロセッサ1040のアレイに提供し、これがオンダイの汎用CPU1050と連携して前処理アプリケーション1042を実行する。SIMDアレイとCPUは集合的に、本明細書で説明するオンダイの「第1のプロセッサグループ」1052を定義する。画像データで実行される前処理のタイプは、本明細書で想定されている種々の実施形態においては非常に可変である。例示的な実施形態において、前処理プロセスは1組の前処理された画像データ1062を生成し、これはSIMDアレイ1040と作動的に結合されたオンダイメモリ1060に保存される。一実施形態において、以下に説明するように、前処理されたデータは例示的に特別関心のある領域に関する縮小されたデータセットを含む。前処理されたデータは当該領域に関する情報、たとえば注目された特徴のピクセル位置やその他の画像データパラメータを含む。この縮小されたデータセットは全体画像データよりはるかにコンパクトであり、より容易にメモリ1060に保存される。
【0077】
画像データ1036が読み出されると、第1のプロセッサグループ1052は典型的に読み出しと「並行して」または「同時に」(すなわち同じ処理サイクルで)前処理を実行する。種々の実施形態において前処理されたデータは同様にメモリ1060に保存される一方で、原画像データの少なくとも一部(1036)(たとえばデータに関係する領域)1064は並行して(同じ処理サイクルで)第2のプロセッサにまたはプロセッサグループ1070に送られて、ローカルメモリ1074に保存される。適当な時間で他の追加のおよび/または関連する情報1066も第2のプロセッサに送られ得る(そのような情報が作成された後)。第2のプロセッサは上述したようにオフダイで存在できる。本明細書で用いられている「第2のプロセッサ」という用語は、画像データに関して1以上の画像処理ステップを実行する1以上の処理メカニズム(たとえば「第2のプロセッサグループ」)を指す。以下に、例示的な実施形態に関して第2のプロセッサの種々の例を説明する。代替的な実施形態において、第2のプロセッサは他の画像処理装置コンポーネントとオンダイまたは部分的にオンダイで具体化できる。他の例示的な実施形態において、第2のプロセッサ1070に送られた画像データ1064および情報1066は前処理された画像データセットとして特徴付けられる。以下に説明するように、これは縮小された画像(たとえば原画像またはエッジ画像よりピクセルが少ない画像)、特徴情報、または第2のプロセッサ1070が所定の機能を実行する上で有用な原画像データの他のサブセットおよび派生物であってよい。一般的に、第2のプロセッサの機能は、受け取ったデータで(ハードウェアおよび/またはソフトウェアを用いる)画像処理アプリケーション1072を実行して出力値1080を生成し、これらの出力値1080は出力値を利用するタスク1090で用いられる。本明細書で用いられている「出力値」という用語は、使用者または装置がタスクを実行したり、決定したりできるようにする、画像から導き出された情報またはデータを指す。「出力値」は典型的に、記号コードに関するデータ、部分アライメントの向きおよび検査結果(欠陥/非欠陥、公差内/公差外、アラーム/非アラーム、拒否/承認など)を提供する数字およびテキストによる情報または他の記号による情報であるが、これらに限定されない。「出力値」は一般的に、実際にタスクを実行する決定または命令を得るためになおも後続のステップ(たとえば人または装置による新しい画像のレビュー)を必要とする実際の画像ピクセル値の任意のグルーピングであり、具体的には部分画像、圧縮画像、精選された画像、フィルタリングされた画像などである。
【0078】
データは、種々の実施形態に従いシフトレジスタおよびダイレクトメモリアクセス(DMA)構成を含む(これらに限定されない)多様なメカニズムとプロセスを用いて、第1のプロセッサグループから第2のプロセッサに送られる。そのようなメカニズムと構成、および関連するプロセス(図示せず)は、当業者にとっては明白なはずである。
【0079】
本明細書で説明するSIMDアーキテクチャは、全体の読み出しから離散的ピクセルに割り当てられたグループからプロセッサを用いてデータを有益に処理することに留意されたい。一実施形態において、プロセッサはセンサアレイの行に対応するが、その他の編成も想定されている。これは例示的にビットシリアルデザインとして実装される。代替として、本明細書の原理はバイトシリアルデザインまたは他の「データグルーピング」・シリアルデザインとして実装できることが明確に想定されている。この構成は一般的に、画像のクワドラント(2Dセクタ)が与えられた時間に与えられたプロセッサによって処理される慣用のブロックレベル処理と対照をなす。以下に、上述したプロセッサ構成および関連する機能を用いる種々の例示的な実施形態を詳しく説明する。
【0080】
とりわけ、例示的な実施形態のシステムと方法は、第1のプロセッサグループ1052と関連したデータメモリ1060を提供し、これは与えられた画像取得イベントでセンサアレイ1020から読み出される画像データの量より容量が小さい。データメモリは、別個のプログラムメモリ構造を含む全体メモリアーキテクチャ(典型的にオンダイ)の部分であってもよい。代替的にデータメモリは統合されたまたは単一のメモリアレイにおいてプログラムメモリ(および随意に他のタスク指向メモリ構造)と組み合わせてもよい。このデータメモリは第1のプロセッサグループによって「直接アクセス可能な」ランダムアクセスメモリ(RAM)を含んでいてもよい。つまりプロセッサグループは、保存されたデータの部分のシリアル送信を要求するバスベースのアーキテクチャではなく、比較的直接的な接続を通してデータメモリの記憶位置をアドレス指定できる。代替的に言えば、第1のプロセッサグループとデータメモリとの接続は、メモリアクセス動作を待ち時間オーバヘッドの観点から比較的低コストにする。
【0081】
B.縮小された画像データセット

プロセス1100のフローチャートを詳細に示す図10を参照すると、例示的な実施形態に従いプロセス1100は原画像データから縮小された画像データセットを生成し、縮小されたデータセットを処理して出力値を生成する。プロセス1100は、対象または表面を含んだ視野の一連の画像の各々を取得し、これが実行されるタスクの基礎となる(ステップ1110)。タスクは、たとえば対象で検出されたバーコードから復号されたバーコード値を出力することであってよい。第1のプロセッサグループ(SIMDアレイとCPU)は、所定の前処理機能に従って縮小された画像データセットを生成する(ステップ1120)。たとえば前処理プロセスは、周囲の視野および対象の非エッジ特徴から関係のないデータを取り除いたエッジ画像を生成できる。第1のプロセッサグループは、画像データがセンサから読み出されるのと同時に(たとえば同じ処理サイクルで)動作する。縮小された画像データはオンダイデータメモリに保存される(ステップ1130)。エッジ画像などの縮小されたデータセットのために保存される情報の量は、典型的に全画像に含まれるデータの量より著しく少ない。これにより縮小されたデータセットは、実行時動作が進行するときにデータメモリ内に収まることができる。この実施形態において、センサから読み出された画像データの少なくとも一部は第2のプロセッサに送られる(ステップ1132)。一実施形態において、第2のプロセッサはセンサから全画像データを受け取ることができる。代替的に、データセットの一部が第2のプロセッサに送られる。どの部分が送られるかの決定は、(他の基準と並んで)縮小されたデータセット内に特徴が存在することに基づいて制御できる。ステップ1140で、縮小されたデータセットはさらに第1のプロセッサグループで前処理されて、さらに第2のプロセッサにより第2のプロセッサ上にある画像解析アプリケーション/プロセスを用いて処理される必要のある1以上の領域を特定する。たとえばデータメモリに縮小されたデータセットとして保存されたエッジ画像特徴はバーコード状の特徴について、特定の相対的間隔および特定の相対的配置パターンで配置されたエッジ検出について解析され得る。所定の領域は候補特徴を有するエリアの周囲に定義され、領域の位置は領域識別子(ID)として定義される。IDはピクセル位置(領域境界ポイントまたはその他の指標)、または第2のプロセッサが処理の注意を特定された領域に集中できるようにする類似の情報からなっていてもよい。この領域情報はステップ1150で第2のプロセッサに送られる。さらに一般的に、「領域インジケータ」または「領域ID」は、第2のプロセッサが読み出された全体画像データのサブセットである画像データの一部で画像処理機能を実行できるようにする任意の縮小されたデータ値または縮小されたデータセットであってもよい。したがってこの用語は、それ自体は全体画像の領域ではない画像データサブセットに関係する情報を含め、広く取られるべきである。
【0082】
プロセス1100において、第2のプロセッサがステップ1150で受け取った領域情報を用いて、ステップ1160で第2のプロセッサの所定の画像解析プロセスを実行する。例示的な実施形態において、第2のプロセッサはその画像解析処理タスクを情報中の特定された領域にさし向け、したがって直ちにそのローカルメモリ内の全体(または全体の一部)の画像データの小さいサブセットで作業することができる。第2のプロセッサの所定のプロセスから結果が得られたら、ステップ1170で1以上の出力値として提供される。バーコード復号の実施形態において、第2のプロセッサは復号されたバーコード値(または読み出し失敗)を出力値として提供する。
【0083】
図11は、別の例示的な実施形態による、原画像データから縮小された画像データセットを生成し、縮小されたデータセットを処理して出力値を生成するプロセス1200のフローチャートを示す。上述したように、センサは解析されるべき対象または表面を含んだ視野の画像データを生成する(ステップ1210)。上述したように、第1のプロセッサグループは縮小されたデータセットを生成する一方、同じ処理サイクルでデータ縮小機能、たとえばエッジ検出プロセスまたは類似の特徴識別プロセスを用いてセンサから画像データを読み出す(ステップ1220)。縮小されたデータセットは並行してオンダイデータメモリに保存される(ステップ1230)。第1のプロセッサグループはステップ1240で、後続の前処理タスクとしてデータ選択機能を適用する。例を示すと、データ選択機能を用いてデータの領域を決定および選択することができ、(1)最初に類似の向きの近傍エッジを検出し、(2)これらのエッジを領域内に組み入れ、最後に(3)所望の特性を持った領域、たとえば特定のアスペクト比のレンジに含まれるか、またはエッジ密度閾値を越える領域を選択する。これにより第2のプロセッサに転送されるべきデータのサブセットが生成される。これらのサブセットは、第2のプロセッサがその処理活動を集中させるべき特徴を含んでいる領域を定義できる。ある実装においてサブセットは縮小されたデータ(エッジ画像など)のみを含んでいてもよい。代替的にサブセットは、縮小されない原画像データの、処理されるべき特徴を有する領域を表す部分と、当該領域に関係する情報を含んでいてもよい。この情報は領域位置情報およびその他の関連データ、たとえば個々の特徴位置や特性を含んでいてもよい。
【0084】
次にステップ1260で、画像のデータのサブセットは第2のプロセッサにより所定の処理タスクに従って処理され、画像に関連する出力値が装置または使用者に送られ、これらはタスクを実行し、または決定を下すために出力値を利用する。
【0085】
C.固定/アライメント処理

図12を参照すると、プロセス1300は固定/アライメント動作で使用される縮小されたデータセットを生成するために示されている。例を示すと、そのような動作は対象上の特定の構造の位置、たとえばロボットマニピュレータが固定部材を提供するボルト穴の配置、または回路基板上の電子部品ピックアンドプレース動作を決定するために使用される。ステップ1310で、センサは対象または表面の一連の画像を取得して、画像データを第1のプロセッサグループに読み出す。画像が読み出される間、第1のプロセッサグループによって縮小されたデータセットが生成される(ステップ1320)。縮小されたデータセットは生成されると、オンダイデータメモリに保存される(ステップ1330)。画像データを読み出す間、画像データの少なくとも一部は第2のプロセッサに送られる。これはセンサ読み出しと同じ処理サイクルで同時に起こる(ステップ1340)。最初の縮小されたデータセットの生成において(ステップ1320)、第1のプロセッサグループは画像データを受け取ったら処理して、たとえばエッジ画像を提供する。エッジ画像またはその他の縮小されたデータセットは、読み出された原画像データよりもサイズが著しく小さく、パターン検出プロセスで重要性を持ち得る特徴のみを含んでいる。続いて第1のプロセッサグループは、縮小されたデータセットでパターン検出プロセス(たとえば慣用的なブロブ解析、幾何学的パターン検出など)を実行して、画像内のどの位置が所定のパターンを有するか決定する(ステップ1350)。この結果は原画像データから縮小されたデータセットを表すので、さらに「縮小されたデータセット」として定義できる。この実施形態において、さらに縮小されたデータセットは特定された特徴を有する画像内の領域の位置(領域ID)であり、これは撮像された対象または表面に関するアライメント、計測、測定または固定動作で用いることができる。生成された領域IDは、オンダイデータメモリに保存され、および/またはステップ1360で第1のプロセッサグループから第2のプロセッサに送られる。破線ブロックで示されているように、その他の有用な前処理情報、たとえば最初の縮小されたデータセットの全部または一部(たとえばエッジ画像)または追加の領域ID情報が、随意に第1のプロセッサグループから第2のプロセッサに送られる(ステップ1370)。第2のプロセッサは画像データと領域IDデータを受け取ると、ビジョンシステムアルゴリズムを実行し、これは対象/表面のサイズ、回転、スキューなどを決定するための慣用的なアプリケーションを含んでいてもよい(ステップ1380)。パターン位置(注意の焦点)の知識により、第2のプロセッサは全体画像のうち所定の計測、測定および検査動作に使用されるパターンを有する領域を含まない位置で動作を省略できる。したがって第2のプロセッサはステップ1380で、出力値をアライメントまたは固定パラメータ、たとえば位置、サイズ、回転、スキュー、距離測定値などを提供する。
【0086】
D.粗い/詳細なアライメントおよび粗い/詳細な検査処理

図13を参照すると、プロセス1400は粗い/詳細なアライメントまたは粗い/詳細な検査動作で使用される縮小されたデータセットを生成するために示されている。ステップ1410でセンサは対象または表面の一連の画像を取得すると、画像データを第1のプロセッサグループに読み出す。画像が読み出される間、第1のプロセッサグループによって縮小されたデータセットが生成される(ステップ1420)。縮小されたデータセットは生成されると、オンダイデータメモリに保存される(ステップ1430)。画像データを読み出す間、画像データの少なくとも一部が第2のプロセッサに送られる。これはセンサ読み出しと同じ処理サイクルで並行して起こる(ステップ1440)。最初の縮小されたデータセットの生成(ステップ1420)において、第1のプロセッサグループは画像データを受け取ると処理して、たとえば粗いエッジ位置を提供する。この縮小されたデータセットは読み出された原画像データよりサイズが著しく小さく、後続のパターン検出プロセスで重要性を持ち得る特徴のみを含んでいる。次に第1のプロセッサグループは縮小されたデータセットでパターン検出プロセスを実行して、画像内のどの位置が所定のパターンを有するか決定できる(ステップ1450)。この結果は原画像データから縮小されたデータセットを表すので、さらに「縮小されたデータセット」として定義できる。この実施形態において、さらに縮小されたデータセットは特定された特徴を有する画像内の領域の位置(領域ID)であり、これは撮像された対象または表面に関するアライメント、計測、測定または固定動作で用いることができる。生成された領域IDは、オンダイデータメモリに保存され、および/またはステップ1460で第1のプロセッサグループから第2のプロセッサに送られる。破線ブロックで示されているように、その他の有用な前処理情報、たとえば最初の縮小されたデータセットの全部または一部(たとえばエッジ画像)または追加の領域ID情報が、随意に第1のプロセッサグループから第2のプロセッサに送られる(ステップ1470)。ステップ1480で、領域IDおよびその他の情報は第2のプロセッサによって使用されて出力値を詳細なアライメントまたは詳細な検査結果の形で生成するが、これについてさらに以下に説明する。
【0087】
粗い/詳細なアライメントの実施形態において、領域IDとその他の有用な前処理情報は、対象または特徴アライメントの粗い評価、たとえば粗い精度を採用するエッジ検出プロセスを用いて比較的高速に得ることができる粗いエッジ位置を提供する。たとえば、この粗い精度は約1/2ピクセル以上であってもよいが、これより粗大または微細な粒度も想定されている。これは通常シングルステップの詳細なアライメントプロセスに伴う処理時間およびデータ保存オーバヘッドを節約する。第2のプロセッサは画像データと粗いエッジ位置を受け取ると、詳細なアライメントアルゴリズム案を実行するが、これは高精度の2Dまたは3Dアライメントを実行するための慣用的なアプリケーションを含んでよい(ステップ1440)。このアプリケーションはピクセルの1/40のエッジ精度および1/10の回転度またはそれ以上の精度を有していてもよい。それ以外の精度もシステムの必要性に応じて明確に想定される。一般に、粗いアライメントプロセスは詳細なアライメントプロセスよりも精度が少なくとも数倍低い。詳細なアライメントを実行するために慣用的なまたはカスタマイズされたアプリケーションを使用できる。とりわけ詳細なアライメントアプリケーションはエッジを含んでいることが既に特定されている比較的限局された領域で動作するので、処理の速度と効率は大幅に増す。アライメントは典型的なDSP構成における処理集約的なアプリケーションである。それを限局された小さいエリアに集中させることによって、詳細なアライメントプロセスは著しく高速に行われる。詳細なアライメントステップでサーチされた領域が実際にエッジ位置を特定することを保証するために、第1のプロセッサグループは、検出されたエッジの周囲の十分なエリア(たとえばエッジ周りの数ピクセル境界)を定義する粗いアライメントデータ(たとえば対象または特徴のエッジ位置)を提供できることに留意されたい。アライメントの一実施形態におけるこの出力値は詳細なアライメントデータ(たとえばエッジ位置または対象位置)として特徴付けられ、多自由度(たとえば移動、回転、スキューなど)に関して定義され得る。
【0088】
出力値として検査結果を提供する実施形態において、領域IDおよびその他の有用な前処理情報は、典型的に対象または表面の訓練されたパターンに基づく粗い検査結果(特徴および位置)を含んでいてもよい。検査結果は対象または表面に出現することが想定されている特徴(ボルト穴、ラベルなど)および/または出現することが想定されていない特徴(裂け目、亀裂など)であってもよい。一般に、第1のプロセッサグループは検査アプリケーションを操作できるが、これは慣用的であってよく、検査動作の実行では粗い精度に設定されている。粗い検査を行うことができる例示的な検査アプリケーションは、コグネックス・コーポレーション(マサチューセッツ州ナティック)から出ているPatQuick(商標)である。第2のプロセッサはステップ1480で画像データと粗い検査結果を受け取るとビジョンシステムアルゴリズムを実行し、これは精確な結果を提供する慣用的な検査アルゴリズムを含んでよい。このアルゴリズムは具体的には粗い結果の位置を含んだ画像データ内の位置で動作できる。第1のプロセッサグループでは急いで候補結果を特定して適当な領域IDと情報を生成するために低精度の検査プロセスが採用されているので、これは種々の誤検出の特徴と実際の特徴を含んでいることがある。第1のプロセッサグループがそのような結果を生成できる速さは、誤検出が存在する可能性を埋め合わせる。詳細なプロセスで誤検出が発見されたら、これは放棄されて、次の粗い結果が(該当する場合)第2のプロセッサによって処理される。検査の実施形態において、第2のプロセッサは出力値対象または表面に対する精確な検査結果の形で提供する(ステップ1480)。これらの検査結果は検出された特徴のリスト(たとえば3個の穴、1個の完全なラベルなど)であるか、または決定(たとえば公差内/公差外品、良品/不良品、部品承認/拒否)であってよい。粗い検査と詳細な検査で得られる結果はばらつきがあることに留意されたい。ある実装において粗い検査は精確な位置を生成できるが特徴は不確かであるか、または位置はあまり精確ではないがより確かな特徴を得ることができる。同様に粗い段階では位置および特徴の存在/不在は精度が低いことがある。詳細な検査はより精確な位置と、より確定的な特徴の存在/不在、または両方を生成できる。
【0089】
E.運動、速度および登録情報の決定

図14はプロセス1600のフローチャートを示す。別の例示的な実施形態により、プロセス1600は原画像データから縮小された画像データセットを生成し、縮小されたデータセットを処理して、撮像された運動する物体または表面に対する登録情報、速度または運動の情報の形で出力値を生成する(「運動する」はより一般的には対象または表面とセンサの視野との相対的な動きとして定義される)。センサは運動の判定を可能にする対象または表面の特徴を含んだ視野の一連の画像を生成する(ステップ1510)。対象は画像フレーム間で追跡できる認識可能な対象もしくは対象の部分、またはウェブ登録マークや表面上に規則的な間隔で現れる穿孔などの特徴であってもよい。より一般的に、対象または表面上の任意のユニークな構造、基準または登録マークを、この実施形態において登録情報を追跡するために使用できる。第1のプロセッサグループは各々の取得された画像フレームに対して読み出された画像データを受け取り、これらは対象または特徴を含んでよい。画像データは第1のプロセッサグループによって処理され、データ縮小機能またはプロセスを用いて縮小されたデータセットを生成する(ステップ1520)。この実施形態においてプロセスは、1以上の所定の対象および/または特徴をサーチするパターン認識または特徴検出プロセス(慣用的であってよい)であってもよい。画像内で特定された各々の特徴またはパターンは位置が付与され、タイムスタンプを含んでいる。このデータは領域IDおよび/または他の有用な情報としてオンダイデータメモリに保存される(ステップ1530)。これらの領域IDおよびその他の有用な情報は第2のプロセッサに送られる。特定された特徴は画像から画像へと動くので、画像間の時間から各画像内の特徴の相対的位置を計算できる。したがって位置の変化と位置の変化の時間が与えられると、第2のプロセッサはシステム内の他の対象(たとえばプリントヘッドまたはカッタ)に対して対象または表面の瞬間的な速度、その相対的な運動および/または登録情報を計算できる(ステップ1540)。この計算を用いて出力値を、イベントについて決定するために使用できる対象または表面の速度、運動の情報および/または登録信号の形で提供する(ステップ1550)。たとえば、信号を用いて所定の時間でカッタを操作し、またはカウンタを割り出すことができる。同様に、信号を用いて動いているコンベヤベルトを加速したり、減速したりできる。この決定は第2のプロセッサ、別のプロセッサまたは第1のプロセッサグループによって下すことができる。
【0090】
F.領域を保存するための追加メモリ

幾つかの実装において、オフダイであってもよく、第1のプロセッサグループおよび第2のプロセッサと相互接続された追加メモリを提供することが望ましい。図15に構成1600が示されているが、これは本明細書に記載された第1のプロセッサグループ1610と、第2のプロセッサ1620、および追加メモリ1630を含んでいる。図示されているように、第1のプロセッサグループ1610はセンサ/読み出し回路1640と相互接続されており、センサ/読み出し回路1640は第1のプロセッサグループおよびその直接アドレス指定可能なデータメモリ1612に対してオンダイまたはオフダイであってよい。センサ/読み出し回路1640は撮像された場面1642から取得された画像データ1644を第1のプロセッサグループに前処理のために送る。本明細書で他の実施形態で説明されているように、オンダイの直接アドレス指定可能なデータメモリ1612は一般的に容量が限られており、完全に読み出された所定の画像フレームで取得された画像データの全セットを容易に保存できないと想定されている。動作中、第1のプロセッサグループは縮小されたデータセットを生成し、これはオンダイのデータメモリに保存される。この縮小されたデータセットは、後続の画像プロセスを特定の関心のある特徴を含んでいる画像の部分に集中させるために有用なエッジ画像または他の縮小された画像データセットであってもよい。一実施形態において、画像データ1646は並行してセンサ/読み出し回路1640から、追加メモリ1630(メモリ容量が十分大きければ)にも送られる。代替的な実施形態において、画像データ1648は直接センサ/読み出し回路1740からではなく、第1のプロセッサグループを介して(画像データが読み出されると)メモリ1630に送られることができる。第1のプロセッサグループは縮小されたデータセットでデータ選択機能を実行して領域ID1650を生成する。これらはオンダイメモリに保存できる。領域IDは追加メモリ1630内の対応する画像データの位置に関係している。そのような領域IDは、縮小されたデータセットに基づいて関心のある領域を含む、追加メモリ1630の特定の位置(すなわちブロック)に対するメモリアドレスに関係できる。領域ID1660に対応する領域IDおよび/または画像データ(領域ブロック)は第2のプロセッサ1620に送られる。この転送は直接追加メモリから行われるか、または(破線のブランチライン1662で示されているように)第1のプロセッサグループの少なくとも部分を介して行われてよい。縮小されたデータセット1664の全部または一部は、第2のプロセッサにその処理機能で使用され有用な情報の一部として送られることもできる。第2のプロセッサ1620は領域ID、画像データおよび他の有用なデータを受け取り、それによって所望のビジョンシステムアルゴリズムを実行して、所望の出力値1670を生成する追加メモリ1630との間で画像データおよびその他の情報の転送を容易にするために、メモリコントローラおよび/またはその他の適当な回路(図示せず)が設けられてよい。第2のプロセッサは多様な後続の処理機能を実行できる。後続の処理機能は上述した任意の機能を包含でき、これにはID認識、固定、アライメント、検査および登録を含むが、これらに限られない。
【0091】
以上の他にも多くのビジョンシステムプロセスが上述した第1のプロセッサグループと第2のプロセッサおよび関連するメモリの構造と機能から恩恵を受けられることは明確にしておくべきである。第1のSIMDプロセッサグループによって画像データ内に縮小されたデータセットを作成し、続いて縮小されたデータセットを用いて画像データの全部または一部を後続処理するように第2のプロセッサ操作するいかなるプロセスも、代替的な実施形態に従って実装できる
【0092】
以上が本発明の例示的な実施形態の詳細な説明である。本発明の精神と範囲から逸脱することなく種々の変容および追加を行うことができる。上述した種々の実施形態の各々は、上述した他の実施形態と組み合わせて多数の特徴を提供することができる。さらに、以上に本発明の装置と方法のそれぞれの実施形態について説明したが、本明細書で説明されていることは本発明の原理の応用を例示するものにすぎない。たとえば特定のプロセッサコンポーネントの配置構成は、第1のプロセッサグループ、第2のプロセッサまたは第2のプロセッサグループおよびオンダイデータメモリに関する一般的な記述の範囲内で大幅に異なってよい。また、第1のプロセッサグループは全体的な処理構成の一部としてSIMDアーキテクチャを含んでいるが、この用語は入力された画像データで同等の機能を実行するために同等の構造を採用する他の処理アーキテクチャを含むように広く解されるべきである。同様に、ビジョンシステム構成において複数の第1のプロセッサグループが使用することができ、1以上の画像センサと相互接続され、関連する第1のプロセッサグループとオンダイに存在し、または存在しなくてもよいことが明確に想定されている。この複数の第1のプロセッサグループは1以上の第2のプロセッサまたは第2のプロセッサグループと相互接続されて、所望の出力値を生成できる。加えて本明細書で説明されたいかなる動作も、プログラム命令を有するコンピュータ可読媒体を含むハードウェア、ソフトウェア、またはハードウェアとソフトウェアの組み合わせとして実装できる。したがって本明細書の説明は単に例を示すことが意図されており、それ以外に本発明の範囲を限定するものではない。


図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15