(57)【要約】【課題】  簡単な回路構成で、複数の画像間に対しても効率的に高速演算処理が可能な多画素数の高速視覚センサ装置を提供する。【解決手段】  受光素子アレイ１１の各列の受光素子１２０に対して１個のＡ／Ｄ変換器２１０を対応させたＡ／Ｄ変換器アレイ１３と、受光素子１２０と１対１に対応する演算素子４００と転送用シフトレジスタ４１０からなる並列処理機構１４とを備えている。演算素子４００は並列処理により近傍画素間の画像処理演算を高速で行うことができるとともに、転送用シフトレジスタ４１０における転送処理と独立して演算処理が行えるので、演算処理、転送処理を効率良く行うことができる。【選択図】図１
2010136413.tif 000002
【特許請求の範囲】
【請求項１】
複数の受光素子が２次元状に配列されて構成された少なくとも一つの受光素子アレイと、
該複数の受光素子から順次読み出された出力信号をアナログ・デジタル変換する複数のＡ／Ｄ変換器を備えたＡ／Ｄ変換器アレイと、
複数の演算素子が、複数の行及び列に２次元状に配列され、各演算素子が該Ａ／Ｄ変換器アレイから転送されたデジタル信号について所定の演算を行う並列演算素子アレイと、該複数の演算素子行の各々に対応して少なくとも１ラインの転送用シフトレジスタを備え、前記転送用シフトレジスタが、対応する行に所属する所定の演算素子に対し、該Ａ／Ｄ変換器アレイから出力されたデジタル信号を順次転送する転送用シフトレジスタアレイとからなる並列処理機構と、
該受光素子アレイと該Ａ／Ｄ変換器アレイとを制御して一つのフレームについてのデジタル信号を出力させ、該転送用シフトレジスタアレイを制御して該並列演算素子アレイへ該一つのフレームのデジタル信号を転送させた後、該並列演算素子アレイを制御して該一つのフレームに対する該所定の演算を行わせると同時に、該受光素子アレイと該Ａ／Ｄ変換器アレイとを制御して次のフレームについてのデジタル信号を出力させ、該転送用シフトレジスタアレイを制御して該並列演算素子アレイへ該次のフレームのデジタル信号を転送させるための制御回路と、
を備える高速視覚センサ装置。
【請求項２】
前記少なくとも１つの受光素子アレイとして複数個の前記受光素子アレイを有しており、前記転送用シフトレジスタアレイが、前記演算素子の各行に対応して、前記受光素子アレイの個数に等しい数の複数ラインの前記転送用シフトレジスタを備えていることを特徴とする請求項１記載の高速視覚センサ装置。
【請求項３】
前記複数個の受光素子アレイは互いに異なる位置に配置されており、
前記制御回路は、前記複数の受光素子アレイの各々から出力される異なる位置での撮像画像を、対応するラインの前記転送用シフトレジスタにて転送させ、前記並列処理機構に、該複数の受光素子アレイから得られる画像信号に基づいて、撮像対象の該複数の受光素子アレイによる撮像画像間の位置ずれ量を求める演算を行わせる並列処理制御部と、該求められた位置ずれ量と各受光素子アレイの位置及び撮像方向の情報とを基にして、該撮像対象の３次元位置情報を求める演算を行う演算部とを有することを特徴とする請求項２記載の高速視覚センサ装置。
【請求項４】
前記複数個の受光素子アレイは、それぞれの受光素子のデータ転送方向である行方向を互いに同一の方向に合わせ、かつ、各受光素子アレイが、それぞれの対応する受光素子が該データ転送方向にずれるように配置されており、
前記並列処理制御部が、前記並列処理機構に対して、該複数の受光素子アレイから得られる画像信号に基づいて該複数の受光素子アレイによる撮像画像間の該データ転送方向における位置ずれ量を求める演算を行わせることを特徴とする請求項３記載の高速視覚センサ装置。
【請求項５】
さらに、前記複数個の受光素子アレイで撮像した複数の画像について前記並列処理機構により求めた前記データ転送方向における位置ずれ量を蓄積する画素ずれ量記憶装置を備え、前記並列処理制御部は、蓄積された位置ずれ量に基づいて、該各ラインの転送用シフトレジスタが画像信号を転送する前記演算素子の転送位置を制御することを特徴とする請求項４記載の高速視覚センサ装置。
【請求項６】
さらに、前記複数個の受光素子アレイにそれぞれ独立した撮像タイミングで撮像を行わせる撮像タイミング制御手段と、前記複数個の受光素子アレイに撮像対象の同一方向からの像を撮像させるビームスプリット手段とを備え、
前記制御回路は、前記複数の受光素子アレイの各々から出力される異なる時刻での撮像画像を、対応するラインの前記転送用シフトレジスタにて転送させることにより、前記演算素子に異なる時刻の画像間での演算を行わせる並列処理制御部を有することを特徴とする請求項２記載の高速視覚センサ装置。
【請求項７】
さらに、前記複数個の受光素子アレイに対し撮像対象の同一方向からの互いに異なる色分解画像を撮像させるためのフィルタリング／ビームスプリット手段を備え、
前記制御回路は、前記複数の受光素子アレイの各々から出力される異なる色分解撮像画像を、対応するラインの前記転送用シフトレジスタにて転送させることにより、前記演算素子に各色分解画像に対する演算を行わせる並列処理制御部を有することを特徴とする請求項２記載の高速視覚センサ装置。
【請求項８】
さらに、画像処理演算に必要な所定のデータを供給するデータ供給手段を備え、
前記転送用シフトレジスタが、前記Ａ／Ｄ変換器アレイからの出力信号及び該データ供給手段から供給される該所定のデータを、対応する演算素子行中の所定の前記演算素子に順次転送し、
前記制御回路が、前記受光素子アレイ、前記Ａ／Ｄ変換器アレイ、前記並列処理機構、及び、前記データ供給手段を制御することを特徴とする請求項１記載の高速視覚センサ装置。
【請求項９】
前記データ供給手段は、前記Ａ／Ｄ変換器アレイからの出力信号と前記所定のデータとを時分割混合する時分割混合ユニットを備えていることを特徴とする請求項８記載の高速視覚センサ装置。
【請求項１０】
前記並列処理機構が、さらに、前記転送用シフトレジスタアレイとは別に、前記複数行の演算素子の各行に対応して所定データ転送用シフトレジスタを備え、該所定データ転送用シフトレジスタが、対応する行の各演算素子に所定のデータを供給することを特徴とする請求項１記載の高速視覚センサ装置。
【請求項１１】
前記少なくとも１個の受光素子アレイとして複数個の前記受光素子アレイを有しており、前記転送用シフトレジスタアレイが前記複数の演算素子行の各々に対応して単一ラインの前記転送用シフトレジスタを備え、該単一ラインの転送用シフトレジスタを時分割使用して該複数個の受光素子アレイからの出力信号を転送することを特徴とする請求項１記載の高速視覚センサ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理機能を備えた高速視覚センサ装置に関する。
【背景技術】
【０００２】
ＦＡシステム等でロボットを高速で動作させるためには、高速の画像処理が必要とされる。例えば、視覚センサとアクチュエータの間でフィードバックループを形成するロボットの場合、アクチュエータはミリ秒単位で制御可能であるため、本来はこれに対応した画像処理速度が必要になる。ところが、現状のビジョンシステムでは画像処理速度がビデオフレームレートに限られているため、この画像処理速度に合わせた低速動作しかできず、ロボットの性能を十分に活かしきれていなかった。
【０００３】
一方、高速ＣＣＤカメラの中には１ミリ秒程度で画像を撮像できるものもあるが、これらは撮像した画像をいったんメモリに貯えて、後から読み出して処理を行う機構になっているため、画像解析などの用途には使えるが、実時間性はほとんどなく、ロボット制御などの用途には適用できなかった。
【０００４】
このような問題を解決するため、画像の取込部と処理部を一体として取り扱うビジョンチップの研究が進んでおり、マサチューセッツ工科大学、カリフォルニア工科大学、三菱電機などの研究が知られている（”An Object Position and Orientation IC with Embedded Imager”、David L. Standley (“Solid State Circuits”, Vol. 26, No. 12, Dec. 1991, pp. 1853-1859, IEEE)、”Computing Motion Using Analog and Binary Resistive Networks”、James Hutchinson, et al.(“Computer”, Vol. 21, March 1988, pp.52 - 64, IEEE)、及び、”Artificial retinas -fast, versatile image processors”、Kazuo Kyuma et al., (“Nature”, Vol. 372, 10 November 1994）。しかし、これらは主として集積化の容易なアナログの固定回路を用いており、出力信号の後処理が必要であったり、画像処理の内容が特定用途に限定されていて汎用性がないなどの問題点があった。
【０００５】
これらに対して汎用的な画像処理を行うことができるビジョンチップとしては、特開平１０−１４５６８０号公報に開示された技術が知られている。この技術は、受光素子と１対１に対応させて演算素子を設け、Ａ／Ｄ変換器を受光素子の列毎に設けているため、並列処理により演算時間を短縮するとともに、受光素子と演算素子間の伝送線を少なくすることができ、両者の集積度を最適にすることができるといった利点がある。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平１０−１４５６８０号公報
【非特許文献】
【０００７】
【非特許文献１】”An Object Position and Orientation IC with Embedded Imager”、David L. Standley (“Solid State Circuits”, Vol. 26, No. 12, Dec. 1991, pp. 1853-1859, IEEE)
【非特許文献２】”Computing Motion Using Analog and Binary Resistive Networks”、James Hutchinson, et al.(“Computer”, Vol. 21, March 1988, pp.52 - 64, IEEE)、
【非特許文献３】”Artificial retinas -fast, versatile image processors”、Kazuo Kyuma et al., (“Nature”, Vol. 372, 10 November 1994）
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、この技術では、各演算素子へのデータ転送に演算素子そのものを利用する構成となっているため、画像転送時には演算処理を行うことができない。また、物体の形状認識や動きの認識には、複数の画像間での画像演算が必要とされるが、従来は、一旦複数の画像をメモリに読み込んで演算処理を行う方法がとられていたため、リアルタイムの処理ができなかった。
【０００９】
そこで、本発明は、こうした問題点に鑑みて、簡単な回路構成で、複数の画像間に対しても効率的に高速演算処理が可能な多画素数の高速視覚センサ装置を提供することを課題としている。
【課題を解決するための手段】
【００１０】
上記課題を解決するために本発明の高速視覚センサ装置は、複数の受光素子が２次元状に配列されて構成された少なくとも一つの受光素子アレイと、該複数の受光素子から順次読み出された出力信号をアナログ・デジタル変換する複数のＡ／Ｄ変換器を備えたＡ／Ｄ変換器アレイと、複数の演算素子が、複数の行及び列に２次元状に配列され、各演算素子が該Ａ／Ｄ変換器アレイから転送されたデジタル信号について所定の演算を行う並列演算素子アレイと、該複数の演算素子行の各々に対応して少なくとも１ラインの転送用シフトレジスタを備え、前記転送用シフトレジスタが、対応する行に所属する所定の演算素子に対し、該Ａ／Ｄ変換器アレイから出力されたデジタル信号を順次転送する転送用シフトレジスタアレイとからなる並列処理機構と、該受光素子アレイと該Ａ／Ｄ変換器アレイとを制御して一つのフレームについてのデジタル信号を出力させ、該転送用シフトレジスタアレイを制御して該並列演算素子アレイへ該一つのフレームのデジタル信号を転送させた後、該並列演算素子アレイを制御して該一つのフレームに対する該所定の演算を行わせると同時に、該受光素子アレイと該Ａ／Ｄ変換器アレイとを制御して次のフレームについてのデジタル信号を出力させ、該転送用シフトレジスタアレイを制御して該並列演算素子アレイへ該次のフレームのデジタル信号を転送させるための制御回路とを備えることを特徴とする。
【００１１】
本発明によれば、画像処理演算を並列処理により高速で行うことができる。さらに、演算処理への転送を専用のシフトレジスタにより行うことで転送中でも演算処理を行うことが可能である。したがって、転送処理、演算処理とも待ち時間を少なくして効率良く行うことができ、全体の処理時間を短縮できる。この結果、パイプライン的な動作が可能となり、高速での画像処理、特に実時間的な処理が可能となる。
【００１２】
少なくとも１つの受光素子アレイとして複数個の受光素子アレイを有している場合は、転送用シフトレジスタアレイが、演算素子の各行に対応して、受光素子アレイの個数に等しい数の複数ラインの前記転送用シフトレジスタを備えていることが好ましい。
【００１３】
これによれば、複数の演算素子行の各々に対し、複数の受光素子アレイの対応する受光素子行のデータを転送するための複数ラインの転送用シフトレジスタが備えられることになる。このため、複数個の受光素子アレイがある場合でも、それぞれの受光素子アレイの画像信号を独立して転送できるので、転送処理に要する時間は受光素子アレイが一つのときと同一になる。したがって、演算処理を含めた画像処理を高速化できる。
【００１４】
これら複数個の受光素子アレイは、互いに異なる位置に配置されており、制御回路は、当該複数の受光素子アレイの各々から出力される異なる位置での撮像画像を、対応するラインの前記転送用シフトレジスタにて転送させ、前記並列処理機構に、該複数の受光素子アレイから得られる画像信号に基づいて、撮像対象の該複数の受光素子アレイによる撮像画像間の位置ずれ量を求める演算を行わせる並列処理制御部と、該求められた位置ずれ量と各受光素子アレイの位置及び撮像方向の情報とを基にして、該撮像対象の３次元位置情報を求める演算を行う演算部とを有することを特徴とするものでもよい。
【００１５】
複数個の受光素子アレイを異なる位置に配置して、同一の対象を撮像すると、それぞれの受光素子アレイから得られる画像は、対象物の所定方向への投影画像に相当する。それぞれの画像における対象物の同一部分の位置を基にして三角法により物体の３次元的な位置が求まる。この処理のためには、最低でも２個の受光素子アレイが必要であるが、精度の向上と死角を減らすため、３個以上の受光素子アレイを用いることもできる。
【００１６】
さらに、３次元的な位置を求める場合は、複数個の受光素子アレイは、それぞれの受光素子のデータ転送方向である行方向を互いに同一の方向に合わせ、かつ、各受光素子アレイが、それぞれの対応する受光素子が該データ転送方向にずれるように配置されており、並列処理制御部が、並列処理機構に対して、該複数の受光素子アレイから得られる画像信号に基づいて該複数の受光素子アレイによる撮像画像間の該データ転送方向における位置ずれ量を求める演算を行わせることが好ましい。
【００１７】
これにより、全受光素子アレイのデータ転送方向が一致し、各受光素子の対応する受光素子位置は、このデータ転送方向にずれた位置に配置されることになる。このため、複数の受光素子アレイで検出された画像間では、画像の一致する位置にずれが生ずることになる。この位置ずれの方向は、受光素子アレイのずれの方向、すなわちデータ転送方向と同一になる。転送方向と位置ずれの方向が同一になるため、一方の画像に対して他方の画像をずらすことはデータ転送の際の転送量を制御することで容易に実現できるため、同一部分の検索がより容易になり、３次元的な位置情報の検出が容易になる。
【００１８】
そして、複数個の受光素子アレイで撮像した複数の画像について並列処理機構により求めたデータ転送方向における位置ずれ量を蓄積する画素ずれ量記憶装置をさらに備え、並列処理制御部が、蓄積された位置ずれ量に基づいて、該各ラインの転送用シフトレジスタが画像信号を転送する前記演算素子の転送位置を制御することが好ましい。
【００１９】
これにより、前のフレームで演算した位置ずれ量を基準点として演算を行なうことができるので、位置ずれ量の計算、さらには同一部分の認識をより高速で行なうことができる。
【００２０】
あるいは、これら複数個の受光素子アレイにそれぞれ独立した撮像タイミングで撮像を行わせる撮像タイミング制御手段と、複数個の受光素子アレイに撮像対象の同一方向からの像を撮像させるビームスプリット手段とを備え、制御回路が、複数の受光素子アレイの各々から出力される異なる時刻での撮像画像を、対応するラインの転送用シフトレジスタにて転送させることにより、演算素子に異なる時刻の画像間での演算を行わせる並列処理制御部を有することを特徴とするものでもよい。
【００２１】
複数個の受光素子アレイの撮像タイミングを独立して制御しその画像取得時期を制御すると共に、これら複数個の受光素子アレイに撮像対象を同一方向から撮像させることにより、それぞれの受光素子アレイは短い時間間隔で異なる時刻の画像を取得できることになる。この異なる時刻に取得した画像を対応する別のラインの転送用シフトレジスタで転送することで、フレームごとに取得時期の異なる複数の画像を取得することができる。これらの画像間の演算により、高速で移動する物体、あるいは動きの認識を容易に行うことができる。
【００２２】
または、これら複数個の受光素子アレイに対し撮像対象の同一方向からの互いに異なる色分解画像を撮像させるためのフィルタリング／ビームスプリット手段を備え、制御回路が、複数の受光素子アレイの各々から出力される異なる色分解撮像画像を、対応するラインの転送用シフトレジスタにて転送させることにより、前記演算素子に各色分解画像に対する演算を行わせる並列処理制御部を有することを特徴とするものでもよい。
【００２３】
このようにすれば、各受光素子アレイから各色に分解された画像データが演算素子に送られることになる。したがって、色調整や色補正などの画像処理演算を容易に高速で行うことができる。
【００２４】
また、画像処理演算に必要な所定のデータを供給するデータ供給手段を備え、転送用シフトレジスタが、Ａ／Ｄ変換器アレイからの出力信号及び該データ供給手段から供給される該所定のデータを、対応する演算素子行中の所定の前記演算素子に順次転送し、制御回路が、受光素子アレイ、Ａ／Ｄ変換器アレイ、並列処理機構、及び、データ供給手段を制御することを特徴とするのでもよい。
【００２５】
これにより、受光素子から演算素子への画像データ転送のみならず、演算に必要な各種のデータの演算素子へのデータ転送をも、専用のシフトレジスタにより行うので、演算処理とこれらのデータ転送を並行して行うことが可能である。
【００２６】
このデータ供給手段は、Ａ／Ｄ変換器アレイからの出力信号と所定のデータとを時分割混合する時分割混合ユニットを備えていることが好ましい。画像データと演算に必要な所定のデータを時分割混合することによって、１ラインの転送用シフトレジスタで両方のデータを効率良く確実に転送することが可能である。
【００２７】
あるいは、並列処理機構が、さらに、前記転送用シフトレジスタアレイとは別に、複数行の演算素子の各行に対応して所定データ転送用シフトレジスタを備え、該所定データ転送用シフトレジスタが、対応する行の各演算素子に所定のデータを供給することを特徴とするのでもよい。
【００２８】
この場合は、入力画像データを転送する転送用シフトレジスタ群と、画像処理演算に必要な所定のデータを転送する所定データ転送用シフトレジスタ群とを別々に設けている。これにより、演算素子による演算処理と、入力画像データの転送処理、及び、画像処理演算に必要なその他のデータの転送処理のそれぞれを並行してパイプライン的に処理することが可能となり、高速での画像処理、特に実時間的な処理が可能となる。
【００２９】
また、少なくとも１個の受光素子アレイとして複数個の前記受光素子アレイを有している場合には、転送用シフトレジスタアレイが複数の演算素子行の各々に対応して単一ラインの前記転送用シフトレジスタを備え、該単一ラインの転送用シフトレジスタを時分割使用して複数個の受光素子アレイからの出力信号を転送することが好ましい。
【図面の簡単な説明】
【００３０】
【図１】図１は、本発明の第１の実施形態に係る高速視覚センサ装置のブロック図である。
【図２】図２は、第１の実施形態に係る高速視覚センサ装置の概略構成図である。
【図３（Ａ）】図３（Ａ）は、第１の実施形態に係る高速視覚センサ装置の備える制御回路の構成ブロック図である。
【図３（Ｂ）】図３（Ｂ）は、第１の実施形態に係る高速視覚センサ装置の備える制御回路の機能ブロック図である。
【図４】図４は、第１の実施形態に係る高速視覚センサ装置の備える受光素子アレイ、及び、Ａ／Ｄ変換器アレイの回路構成図である。
【図５】図５は、図４のＡ／Ｄ変換器アレイの備える積分回路の詳細回路構成図である。
【図６】図６は、第１の実施形態に係る高速視覚センサ装置の備える演算素子及び転送用シフトレジスタのブロック図である。
【図７（Ａ）】図７（Ａ）は、図６の演算素子の備えるレジスタマトリックスの回路図である。
【図７（Ｂ）】図７（Ｂ）は、図６の演算素子の制御タイミングチャートである。
【図８】図８は、第１の実施形態に係る高速視覚センサ装置の動作フロー図である。
【図９】図９は、図８中の工程Ｓ２００の動作フロー図である。
【図１０】図１０は、比較例による転送処理、演算処理のタイミングチャートである。
【図１１】図１１は、第１の実施形態による転送処理、演算処理のタイミングチャートである。
【図１２】図１２は、本発明の第２の実施形態による立体視用高速視覚センサ装置の概略構成図である。
【図１３】図１３は、第２の実施形態の高速視覚センサ装置の全体ブロック図である。
【図１４（Ａ）】図１４（Ａ）は、第２の実施形態による左右のカメラの配置状態を説明する図である。
【図１４（Ｂ）】図１４（Ｂ）は、左右のカメラによる撮像図と撮像対象の位置関係を説明する図である。
【図１５】図１５は、第２の実施形態に係る高速視覚センサ装置の動作フロー図である。
【図１６】図１６は、図１５中の工程Ｓ４００の動作フロー図である。
【図１７】図１７は、複数のカメラを有するシステムの比較例による転送処理、演算処理のタイミングチャートである。
【図１８】図１８は、複数のカメラを有するシステムの本実施形態による転送処理、演算処理のタイミングチャートである。
【図１９】図１９は、本発明の第３の実施形態による色画像認識用高速視覚センサ装置の概略構成図である。
【図２０】図２０は、第３の実施形態の高速視覚センサ装置の全体ブロック図である。
【図２１】図２１は、第３の実施形態に係る高速視覚センサ装置の動作フロー図である。
【図２２】図２２は、図２１中の工程Ｓ６００の動作フロー図である。
【図２３】図２３は、本発明の第４の実施形態による移動物体認識用高速視覚センサ装置の概略構成図である。
【図２４】図２４は、第３の実施形態の高速視覚センサ装置の全体ブロック図である。
【図２５】図２５は、第４の実施形態に係る高速視覚センサ装置の動作フロー図である。
【図２６】図２６は、図２５中の工程Ｓ８００の動作フロー図である。
【図２７】図２７は、本発明の第５の実施形態による高速視覚センサ装置のブロック図である。
【図２８】図２８は、第５の実施形態に係る概略構成図である。
【図２９】図２９は、第５の実施形態に係る演算素子のブロック図である。
【図３０】図３０は、第５の実施形態に係る高速視覚センサ装置の動作フロー図である。
【図３１】図３１は、比較例の並列処理機構の処理タイミングを示す図である。
【図３２】図３２は、第６の実施形態の並列処理機構の処理タイミングを示す図である。
【図３３】図３３は、本発明の第６の実施形態に係る高速視覚センサ装置のブロック図である。
【図３４】図３４は、第６の実施形態に係る演算素子のブロック図である。
【図３５】図３５は、第６の実施形態の並列処理機構の処理タイミングを示す図である。
【図３６】図３６は、本発明に係る高速視覚センサ装置の変更例のブロック図である。
【発明を実施するための形態】
【００３１】
本発明の実施形態に係る高速視覚センサ装置を図１〜図３６に基づき説明する。
【００３２】
なお、図面の説明においては同一要素には同一符号を付し、重複する説明を省略する。
【００３３】
まず、本発明の第１の実施形態に係る高速視覚センサ装置１を図１〜図１１に基づき説明する。
【００３４】
図１は、本実施形態に係る高速視覚センサ装置１０のブロック図である。
【００３５】
まず、図１により、センサ装置１０全体の構成を簡単に説明する。本実施形態の高速視覚センサ装置１０は、受光素子アレイ１１と、Ａ／Ｄ変換器アレイ１３と、並列処理機構１４と、制御回路１５、及び、インストラクション／コマンドバス１６とから構成されている。
【００３６】
受光素子アレイ１１には、Ｎ１個ｘＮ２個の受光素子１２０が２次元状（すなわち、Ｎ２行ｘＮ１列）に配置されている。すなわち、受光素子アレイ１１は、Ｎ１個の受光素子１２０が水平方向（ｘ方向）に並んで構成された水平受光部１１０が、Ｎ２個、水平方向（ｘ方向）に直交する垂直方向（ｙ方向）に配列されて構成されている。
【００３７】
Ａ／Ｄ変換器アレイ１３には、Ｎ２個のＡ／Ｄ変換器２１０が１次元状（垂直方向（ｙ方向））に配列されている。当該Ｎ２個のＡ／Ｄ変換器２１０は、受光素子アレイ１１内のＮ２個の水平受光部１１０に１対１に対応しており、対応する水平受光部１１０に所属する受光素子１２０から出力された電荷を順次電圧信号に変換しさらにＡ／Ｄ変換するためのものである。
【００３８】
並列処理機構１４には、Ｎ１個ｘＮ２個の演算素子（ＰＥ（processing element））４００が、受光素子１２０と１対１に対応して、２次元状（すなわち、Ｎ２行ｘＮ１列）に配置されて構成された演算素子アレイ４０が設けられている。この演算素子アレイ４０には、Ｎ２個の演算素子行に１対１に対応して、Ｎ２個の転送用シフトレジスタライン（画像転送用シフトレジスタライン）４２０が付加されている。各転送用シフトレジスタライン４２０は、対応する行の演算素子４００の個数（Ｎ１）に等しいＮ１個の転送用シフトレジスタ（画像転送用シフトレジスタ）４１０が直列接続されて構成されている。各転送用シフトレジスタ４１０が、対応する行内の対応する演算素子４００に接続されている。
【００３９】
制御回路１５は、本センサ装置１０の回路全体に命令信号等を送って制御するためのものである。インストラクション／コマンドバス１６は、制御回路１５からの信号を各回路に送るためのものである。
【００４０】
本センサ装置１０は上記構成となっているため、並列処理機構１４と受光素子アレイ１１との間を、Ｎ２本のデータラインで接続することができる。したがって、図２に示されるように受光素子アレイ１１と並列処理機構１４とを別々の基板に形成し、個々の動作を確認できる構成とすることで、センサ装置１０の安定した生産が可能となっている。また、このように、受光素子アレイ１１と並列処理機構１４とを別々の基板に形成することで、双方を高集積化することが可能であり、また、それぞれの装置の特性に合わせた加工工程を採用できる点からも、安定した生産が可能となっている。なお、図２では、並列処理機構１４を複数領域に分割してボード上に配置しているが、分割しなくても良い。また、本センサ装置１０の各構成要素は、全てＣＭＯＳプロセスによって作成可能であるため、すべての構成要素を１チップ化することも可能であり、これにより大幅なコストダウンを図ることもできる。
【００４１】
続いて、各回路の内部構成について説明する。
【００４２】
図３（Ａ）は、制御回路１５の構成ブロック図である。制御回路１５は、ＣＰＵ１５０，メモリ１５１，画像取り込み制御部３００（図４）、及び、外部との入出力インターフェース１５２等が、インストラクション／コマンドバス１６で接続されて構成されている。メモリ１５１には、ＣＰＵ１５０によって実行される後述の視覚センサ処理プログラム（図８）、及び、当該視覚センサ処理プログラム内の画像処理ステップ（図８のＳ２００）において並列処理機構１４の画像並列処理を制御するためのプログラム（例えば、図９）が格納されている。これら視覚センサ処理プログラムや画像処理プログラムは、外部装置（例えば、外部コンピュータ）１０００より、入出力インターフェース１５２を介して、メモリ１５１に書き込まれる。
【００４３】
ＣＰＵ１５０は、メモリ１５１内の視覚センサ処理プログラム（図８）に基づいて、画像取り込み制御部３００を介して受光素子アレイ１１とＡ／Ｄ変換器アレイ１３とを制御すると共に並列処理機構１４を制御する他、画像処理ステップ（Ｓ２００）において並列処理機構１４が求めた画像処理演算結果に基づいて、撮像対象物の重心や変位量、速度等の全体特徴量の演算を行う。こうして得られた全体特徴量は、入出力インターフェース１５２を介して、外部装置（例えば、外部コンピュータや外部アクチュエータ）１０００に出力される。
【００４４】
図３（Ｂ）は、制御回路１５の機能ブロック図である。制御回路１５は、図８の視覚センサ処理プログラムを実行するＣＰＵ１５０の機能に基づき、プログラム制御部１５Ａと演算処理部１５Ｂとを有する。プログラム制御部１５Ａは、図８の視覚センサ処理プログラムを実行することにより、画像取り込み制御部３００を介して受光素子アレイ１１とＡ／Ｄ変換器アレイ１３とを制御すると共に，並列処理機構１４を制御する。ここで、プログラム制御部１５Ａは、画像取り込み処理制御部３６０（図８のＳ１０１）と並列処理制御部３５０（図８のＳ１０２〜Ｓ１０６）とを有する。画像取り込み処理制御部３６０は、画像取り込み制御部３００（図４）を制御して、受光素子アレイ１１とＡ／Ｄ変換器アレイ１３に画像の取り込みを行わせる。並列処理制御部３５０は、並列処理機構１４内の転送用シフトレジスタ４１０によるデータ転送と演算素子４００による演算とを制御することで、ＳＩＭＤ（single instruction and multi data stream）型の並列演算処理を行う。演算処理部１５Ｂは、プログラム制御部１５Ａによる視覚センサ処理プログラムの実行中、必要な演算を行ったり、視覚センサ処理プログラム結果に基づいて、画像の重心や面積等の全体特徴量の演算や判別動作を行う。演算処理部１５Ｂは、さらに、外部装置１０００たる外部コンピュータとの通信を行ったり、別の外部装置１０００たる外部アクチュエータを制御したりする。
【００４５】
次に、画像取込部たる受光素子アレイ１１とＡ／Ｄ変換器アレイ１３の構成を、図４及び図５を参照して詳細に説明する。
【００４６】
受光素子アレイ１１は、光を検出する受光部として機能し、 Ａ／Ｄ変換器アレイ１３は、当該受光部１１からの出力信号を電流／電圧変換し、さらに、Ａ／Ｄ変換処理する信号処理部として機能する。制御回路１５の画像取り込み制御部３００が、受光素子アレイ１１とＡ／Ｄ変換器アレイ１３に接続されており、当該受光部１１及び信号処理部１３に動作タイミングの指示信号を通知するタイミング制御部として機能する。
【００４７】
まず、受光素子アレイ（受光部）１１の構成を説明する。
【００４８】
図４に示すように、受光素子アレイ１１では、各受光素子１２０が、入力した光強度に応じて電荷を発生する光電変換素子１３０と、光電変換素子１３０の信号出力端子に接続され、水平走査信号Ｖi（ｉ＝１〜Ｎ１）に応じて光電変換素子１３０に蓄積された電荷を出力するスイッチ素子１４０を１組として構成されている。この受光素子１２０が水平方向（ｘ方向）に沿ってＮ１個配置され、各受光素子１２０のスイッチ素子１４０が電気的に接続されて水平受光部１１０を構成している。そして、この水平受光部１１０を水平方向に直交する垂直方向（ｙ方向）に沿ってＮ２個配列することにより受光部１１が構成されている。したがって、受光部１１には、受光素子１２０ｉ，ｊ（ｉ＝１〜Ｎ１、ｊ＝１〜Ｎ２）が２次元状にＮ１列ｘＮ２行、配列されている。
【００４９】
次に、同じく図４により、信号処理部たるＡ／Ｄ変換器アレイ１３の構成を説明する。
【００５０】
Ａ／Ｄ変換器アレイ１３は、Ａ／Ｄ変換器２１０j（ｊ＝１〜Ｎ２）をＮ２個配置して構成されている。各Ａ／Ｄ変換器２１０j（ｊ＝１〜Ｎ２）は、対応する水平受光部１１０j（ｊ＝１〜Ｎ２）から転送されてきた電荷を個別に取り出して処理し、この電荷強度に対応するデジタル信号を出力するためのものである。
【００５１】
各Ａ／Ｄ変換器２１０jは、チャージアンプ２２１jを含む積分回路２２０jと、比較回路２３０j、及び、容量制御機構２４０jの３つの回路から構成されている。
【００５２】
積分回路２２０jは、水平受光部１１０jからの出力信号を入力として、この入力信号の電荷を増幅するチャージアンプ２２１jと、チャージアンプ２２１jの入力端子に一方の端が接続され、出力端子に他方の端が接続された可変容量部２２２jと、チャージアンプ２２１jの入力端子に一方の端が接続され、出力端子に他方の端が接続されたスイッチ素子２２３jとからなる。スイッチ素子２２３jは、画像取り込み制御部３００からのリセット信号Ｒに応じてＯＮ、ＯＦＦ状態となり、積分回路２２０jの積分、非積分動作を切り替えるためのものである。
【００５３】
図５は、積分回路２２０の詳細構成図である。本図は、４ビットつまり１６階調の分解能を持つＡ／Ｄ変換機能を備える積分回路の例であり、以下、この回路構成により説明する。
【００５４】
可変容量部２２２は、チャージアンプ２２１の水平受光部１１０からの出力信号の入力端子に一方の端子が接続された容量素子Ｃ１〜Ｃ４と、容量素子Ｃ１〜Ｃ４の他方の端子とチャージアンプ２２１の出力端子との間に接続され、容量指示信号Ｃ11〜Ｃ14に応じて開閉するスイッチ素子ＳＷ１１〜ＳＷ１４と、容量素子Ｃ１〜Ｃ４とスイッチ素子ＳＷ１１〜ＳＷ１４との間に一方の端子が接続され、他方の端子がＧＮＤレベルと接続されて、容量指示信号Ｃ21〜Ｃ24に応じて開閉するスイッチ素子ＳＷ２１〜ＳＷ２４とから構成されている。なお、容量素子Ｃ１〜Ｃ４の電気容量Ｃ1〜Ｃ4は、
Ｃ1＝２Ｃ2＝４Ｃ3＝８Ｃ4
Ｃ0＝Ｃ1＋Ｃ2＋Ｃ3＋Ｃ4
の関係を満たす。ここで、Ｃ0は積分回路２２０で必要とする最大電気容量であり、受光素子１３０（図４参照）の飽和電荷量をＱ0、基準電圧をＶREFとすると、
Ｃ0＝Ｑ0／ＶREF
の関係を満たす。
【００５５】
再び、図４に戻り、Ａ／Ｄ変換器２１０jの積分回路２２０j以外の回路を説明する。比較回路２３０jは、積分回路２２０jから出力された積分信号ＶSの値を基準値ＶREFと比較して、比較結果信号ＶCを出力する。容量制御機構２４０jは、比較結果信号ＶCの値から積分回路２２０j内の可変容量部２２２jに通知する容量指示信号Ｃを出力すると共に、容量指示信号Ｃに相当するデジタル信号Ｄ１を出力する。
【００５６】
なお、以上、Ａ／Ｄ変換器アレイ１３が４ビットつまり１６階調の分解能を持つ場合について説明したが、Ａ／Ｄ変換器アレイ１３は、６ビット、８ビット等、他のビット構成の分解能を持つ構成であってもよい。
【００５７】
上記構成の画像取り込み部１１及び１３は、制御回路１５内の画像取り込み制御部３００により、画像取り込みのタイミングを制御される。図４に示すように、画像取り込み制御部３００は、全回路１１及び１３のクロック制御を行う基本タイミングを発生する基本タイミング部３１０と、基本タイミング部３１０から通知された水平走査指示に従って水平走査信号Ｖiを発生する水平シフトレジスタ３２０と、リセット指示信号Ｒを発生する制御信号部３４０とから構成されている。
【００５８】
次に、並列処理機構１４を構成する演算素子４００と転送用シフトレジスタ４１０の構成を説明する。
【００５９】
既述のように、並列処理機構１４には、図１に示すように、受光素子アレイ１１のＮ２個の水平受光部１１０ｊ（ｊ＝１〜Ｎ２）及びＡ／Ｄ変換器アレイ１３のＮ２個のＡ／Ｄ変換器２１０ｊ（ｊ＝１〜Ｎ２）に対応して、Ｎ２個の転送用シフトレジスタライン４２０ｊ（ｊ＝１〜Ｎ２）が設けられている。各転送用シフトレジスタライン４２０ｊ（ｊ＝１〜Ｎ２）には、複数ビット（この場合、４ビット）の転送用シフトレジスタ４１０ｉ，ｊが、Ｎ１個、直列接続されている。図６に示すように、コントローラ１５内の並列処理制御部３５０が、各転送用シフトレジスタ４１０ｉ，ｊ（ｉ＝１〜Ｎ１、ｊ＝１〜Ｎ２）に接続されている。並列処理制御部３５０は、転送開始信号を各シフトレジスタ４１０ｉ，ｊに出力することより、Ａ／Ｄ変換器アレイ１３からのデータを必要な演算素子４００の位置まで転送させる。
【００６０】
また、並列処理機構１４には、Ｎ１個ｘＮ２個の受光素子１２０ｉ，ｊ（ｉ＝１〜Ｎ１，ｊ＝１〜Ｎ２）に１対１に対応して、演算素子４００ｉ，ｊ（ｉ＝１〜Ｎ１，ｊ＝１〜Ｎ２）がＮ１ｘＮ２個２次元状に配列されている。各演算素子４００ ｉ，ｊ（ｉ＝１〜Ｎ１，ｊ＝１〜Ｎ２）は、対応するシフトレジスタライン４２０ｊ（ｊ＝１〜Ｎ２）の対応する転送用シフトレジスタ４１０ｉ，ｊ（ｉ＝１〜Ｎ１，ｊ＝１〜Ｎ２）に接続されている。図６に示すように、並列処理制御部３５０が、各演算素子４００ ｉ，ｊに接続されており、当該演算素子４００における演算処理を制御する。
【００６１】
以下、演算素子４００の構造について、図６に示すブロック図を参照して、より詳細に説明する。
【００６２】
演算素子４００は、各素子が共通の制御信号で制御されるＳＩＭＤ型の並列処理を行う構造になっており、１素子あたりのトランジスタ数を削減し、並列処理機構１４の集積化を図り、素子数を増やすことができるようになっている。
【００６３】
演算素子４００は、４ｘ８ビットのランダムアクセス可能な１ビットシフトのレジスタマトリックス４０１と、Ａラッチ４０２、Ｂラッチ４０３、及び、演算論理ユニット（ＡＬＵ）４０４とで構成されている。レジスタマトリックス４０１は、データ保持と入出力のためのものである。より詳しくは、レジスタマトリックス４０１は、対応する受光素子１２０の出力信号に相当するデジタル信号Ｄ１をシフトレジスタ４１０から入力し収容するためのものである。レジスタマトリックス４０１はまた、４近傍の演算素子４００中のレジスタマトリックス４０１と直接接続しており、これらに収容されているデジタル信号をも収容することができる。ＡＬＵ４０４は、下位ビットから１ビットずつ順次演算する順次ビットシリアル演算を行うためのものである。Ａラッチ４０２、Ｂラッチ４０３は、レジスタマトリックス４０１に保持されている信号を収容し、ＡＬＵ４０４での演算に供するためのものである。
【００６４】
以上の構成により、演算素子４００では、Ａラッチ４０２、Ｂラッチ４０３がそれぞれレジスタマトリクス４０１内の任意のレジスタからデータを読み込み，ＡＬＵ４０４がそのデータをもとに演算を行なう。演算結果は、再び、レジスタマトリクス４０１内の任意のレジスタに書き込まれる。演算素子４００は、この作業を１サイクルとして繰り返し行うことで、さまざまな演算を実行できるようになっている。
【００６５】
より詳しくは、ＡＬＵ４０４は、１ビットの演算器で、論理積（ＡＮＤ），論理和（ＯＲ），排他的論理和（ＸＯＲ），加算（ＡＤＤ）、Ｃａｒｒｙつき加算などの演算機能を有している。１度に実行できるのは１ビットの演算だけであり，多ビット演算は１ビットずつシリアルに演算を行なうことで実行する。複雑な演算は上記演算機能の組み合わせとして記述できるため、ＡＬＵ４０４に対し上記演算機能の中から毎回一つずつを選択させながら繰り返し演算を行わせることで、複雑な演算を実現するようになっている。例えば、乗算は加算の組み合わせとして記述できるため、加算を複数回繰り返し行うことで実現する。減算は、引こうとする数をビット反転して１を足すことで負の数とし、これを足し算することで実現できる。割り算については、例えば、割る数を８，４，２というような数字にして、ビットシフトする（例えば、「割る数が８」の場合、ビットを３ビット右にシフトする）ことにより実現する。さらに、絶対値を求めるためには、マイナスの数（サインビットが１）に対して、符号反転、すなわち、ビット反転して１を足すことで、実現する。
【００６６】
レジスタマトリックス４０１は、図７（Ａ）に示すように、ランダムにアクセスできる１ビットのレジスタ４０１０を２４個並べ、さらに、外部や近傍演算素子４００との入出力用に８個の機能レジスタ４０１２を並べた構成となっており、これら全体が１つのアドレス空間として扱われる。図６において、各レジスタ４０１０、４０１２内に記載されている数は、当該レジスタに割り当てられたアドレスを示す。具体的には、２４個のレジスタ４０１０にアドレス「０」〜「２３」が割り振られ、８個の機能レジスタ４０１２にアドレス「２４」〜「３１」が割り振られている。かかる構成により、レジスタ内のデータを読み書きするのと同じ方法で入出力データとアクセスできるようになっている。
【００６７】
図７（Ａ）に示すように、レジスタマトリックス４０１は、これら３２個のレジスタ４０１０，４０１２に接続された１個のＯＲ回路４０１４をさらに備えており、レジスタ４０１０，４０１２は、すべて、このＯＲ回路４０１４を介して、Ａラッチ４０２及びＢラッチ４０３に接続されている。レジスタ４０１０，４０１２の内の一つのアドレスが選択されると、選択されたレジスタのみがその内容を出力し，選択されていないレジスタは全て０を出力する。全てのレジスタのＯＲをとったものが、レジスタマトリックス４０１全体の出力として、Ａラッチ４０２またはＢラッチ４０３に出力される。
【００６８】
機能レジスタ４０１２は主に入出力に用いられる。具体的には、アドレス「３０」の機能レジスタ４０１２は、対応する転送用シフトレジスタ４１０に接続されており、当該転送用シフトレジスタ４１０からの入力に用いられる。また、アドレス「２４」の機能レジスタ４０１２は、上下左右の４近傍の演算素子４００のレジスタマトリックス４０１への出力に用いられる。アドレス「２４」〜「２７」の機能レジスタ４０１２は、それぞれ、当該４近傍の演算素子４００のレジスタマトリックス４０１からの入力に用いられる。アドレス「２８」の機能レジスタ４０１２は演算処理部１５Ｂへの出力に用いられる。なお、アドレス「２８」の機能レジスタ４０１２は、読み込み時には常に０を読み込むようになっており、アドレス「２９」の機能レジスタ４０１２は常に１を読み込むようになっている。
【００６９】
並列処理制御部３５０がレジスタマトリクス４０１へのアクセスとＡＬＵ４０４の演算処理を制御することにより、演算素子４００における演算及び入出力の全処理を制御する。例えば、転送用シフトレジスタ４１０からの入力をレジスタマトリックス４０１のアドレス「０」に書き込みたいときは，０（レジスタアドレス「２８」）とセンサ入力（レジスタアドレス「３０」）のＯＲをとってレジスタアドレス「０」に書き込む命令を演算素子４００に出力する。なお、並列処理制御部３５０は、図７（Ｂ）に示すように，基本クロックＣＬＫの４倍を１サイクルとし，この間に、各種クロックＣＬＫ２，ＣＬＫ４を供給しながら、Ａラッチの読み込み、Ｂラッチの読み込み，演算結果の書き込みを順に行なう。かかる処理を複数サイクル繰り返し行うことで、レジスタマトリックス４０１への必要な入出力とＡＬＵ４０４による演算を行う。
【００７０】
次に、図４〜図６を参照して、本実施形態の動作について説明する。
【００７１】
まず、画像取り込み部１１及び１３の動作について説明する。
【００７２】
画像取り込み制御部３００は、まず、リセット信号Ｒを有為に設定し、図５に示す可変容量部２２２のＳＷ１１〜ＳＷ１４を全て「ＯＮ」、ＳＷ２１〜ＳＷ２４を全て「ＯＦＦ」状態にする。これにより、チャージアンプ２２１の入力端子と出力端子間の容量値をＣ0に設定する。それと同時に、図４に示す全てのスイッチ素子１４０を「ＯＦＦ」状態とし、水平走査信号Ｖｉをいずれの受光素子１２０i,jも選択しない状態に設定する。この状態から、リセット指示信号Ｒを非有為に設定し、各積分回路２２０での積分動作を開始させる。
【００７３】
積分動作を開始させると、図４に示すＮ２個の各水平受光部１１０jにある第１番目の受光素子１２０1,jのスイッチ素子１４０のみを「ＯＮ」とする水平走査信号Ｖ1が出力される。スイッチ素子が「ＯＮ」になると、それまでの受光によって光電変換素子１３０に蓄積された電荷Ｑ1は、電流信号として受光部１１から出力される。つまり、光電変換素子の信号を読み出すことができる。電荷Ｑ1は容量値Ｃ0に設定された可変容量部２２２に流入する。
【００７４】
次に、図５により積分回路２２０内部の動作を説明する。容量制御機構２４０（図４参照）は、ＳＷ１２〜ＳＷ１４を開放した後、ＳＷ２２〜２４を閉じる。この結果、積分信号ＶSは、
ＶS＝Ｑ／Ｃ1
で示す電圧値として出力される。積分信号ＶSは、比較回路２３０に入力して、基準電圧値ＶREFと比較される。ここで、ＶSとＶREFの差が、分解能の範囲以下、すなわち±（Ｃ4／２）以下の時は、一致したものとみなし、更なる容量制御は行わず、積分動作を終了する。分解能の範囲で一致しないときは、更に容量制御を行い、積分動作を続ける。
【００７５】
例えば、ＶS＞ＶREFであれば、容量制御機構２４０は、更に、ＳＷ２２を開放した後に、ＳＷ１２を閉じる。この結果、積分信号ＶSは、
ＶS＝Ｑ／（Ｃ1＋Ｃ2）
で示す電圧値となる。この積分信号ＶSは、後続の比較回路２３０（図４）に入力して、基準電圧値ＶREFと比較される。
【００７６】
また、ＶS＜ＶREFであれば、容量制御機構２４０は、更に、ＳＷ１１及びＳＷ２２を開放した後に、ＳＷ１２及びＳＷ２１を閉じる。この結果、積分信号ＶSは、
ＶS＝Ｑ／Ｃ2
で示す電圧値となる。この積分信号ＶSは、後続の比較回路２３０に送出され、基準電圧値ＶREFと比較される。
【００７７】
以後、同様にして、積分回路２２０→比較回路２３０→容量制御機構２４０→積分回路２２０のフィードバックループによって、積分信号ＶSが基準電圧値ＶREFと分解能の範囲で一致するまで、比較及び容量設定（ＳＷ１１〜ＳＷ１４及びＳＷ２１〜ＳＷ２４のＯＮ／ＯＦＦ制御）を順次繰り返す。積分動作が終了した時点のＳＷ１１〜ＳＷ１４のＯＮ／ＯＦＦ状態を示す容量指示信号Ｃ11〜Ｃ14の値は、電荷Ｑ1の値に対応したデジタル信号であり、最上位ビット（ＭＳＢ）の値がＣ11、最下位ビット（ＬＳＢ）の値がＣ14である。こうしてＡ／Ｄ変換が行われ、これらの値をデジタル信号Ｄ１として、演算素子アレイ１４に出力する。以上述べたように、この装置では、デジタル信号Ｄ１の各ビット値は、ＭＳＢ側からＬＳＢ側へ１ビットずつ順に定まる。
【００７８】
このように、容量Ｃ１〜Ｃ４が一つずつＯＮされながら、比較電圧ＶＲＥＦとの比較が行われ、その比較結果が出力デジタル信号Ｄ１として出力される。すなわち、まず、容量Ｃ１がオンとされ、積分信号ＶＳ＝Ｑ／Ｃ１となり、このＶＳがＶＲＥＦと比較される。ＶＳが大きければ“１”、小さければ“０”となり、これがＭＳＢ（最上位ビット）として出力される。次に、Ｃ２がオンとされ、ＶＳ＝Ｑ／（Ｃ１＋Ｃ２）（ＭＳＢ＝１の時）、または、ＶＳ＝Ｑ／Ｃ２（ＭＳＢ＝０の時）が得られ、ＶＲＥＦと比較される。ＶＳが大きければ“１”、小さければ“０”となり、これが２ビット目として出力される。以上の処理が必要なビット数まで繰り返されることで、Ａ／Ｄ変換が実行される。
【００７９】
第１番目の受光素子１２０1,jの光電出力に相当するデジタル信号の送出が終了すると、リセット信号Ｒが有為とされ、再び、非有為にして、可変容量部２２２jの容量値を初期化した後に、各水平受光部１１０jの第２番目の受光素子１２０2,jのスイッチ素子１４０のみを「ＯＮ」とする水平走査信号Ｖ2を出力し、上述と同様の動作により、第２番目の受光素子１２０2,jの光電出力を読み出し、これに相当するデジタル信号を送出する。以下、水平走査信号を切り替えて、全受光素子１２０の光電出力を読み出し、相当するデジタル信号を並列処理機構１４に出力する。
【００８０】
次に、演算素子４００の動作を図６により説明する。
【００８１】
Ａ／Ｄ変換されたデジタル信号は、転送用のシフトレジスタ４１０を介してそれぞれの受光素子１２０ｉ，ｊに対応する演算素子４００ｉ，ｊのレジスタマトリックス４０１に送られる。この転送は、対応する転送用シフトレジスタライン４２０ｊ内において、転送用シフトレジスタ４１０に格納された信号を順次隣の画素の転送用シフトレジスタ４１０に転送することによって行われる。転送用シフトレジスタ４１０を備えることにより、演算素子４００での演算処理と独立して転送用シフトレジスタでの転送処理を行うことができる。したがって、演算素子４００において処理演算を行わせている間に、転送用シフトレジスタ４１０に次のデータを転送させるパイプライン的な処理が可能となり、演算素子４００におけるより高速なフレームレートでの演算処理が可能となる。また、転送用シフトレジスタ４１０は、並列処理制御部３５０からの転送開始の信号に基づいて、Ａ／Ｄ変換されたデータの転送を開始し、（行内素子数（Ｎ１個）ｘアナログレベル）分だけビットシフトによる転送を行った後、「データ転送完了」の信号を並列処理制御部３５０に送り返すことで効率的な転送を行うことができる。このように、演算処理と転送処理を並列していわゆるパイプライン処理を行うことにより、両処理においてフレーム毎の処理の間の待ち時間を減らすことができ、より高速な画像処理が可能となる。
【００８２】
演算素子４００内部での画像処理演算は、以下の通りである。すなわち、必要に応じて、各演算素子４００間でそれぞれのレジスタマトリックス４０１に収容された信号の転送を行い、演算に必要な信号をレジスタマトリックス４０１からＡラッチ４０２とＢラッチ４０３に読み出し、ＡＬＵ４０４で所定の演算を行い、計算結果をレジスタマトリックス４０１を介して演算処理部１５Ｂに出力する。並列処理機構１４では、上記画像処理演算を全演算素子４００において同時に並列処理するため、極めて高速の演算が可能である。演算処理部１５Ｂは、並列処理機構１４の計算結果に基づき、必要な画像特徴量を演算し、演算結果を外部回路１０００に出力する。なお、並列処理機構１４による計算結果は、直接、外部装置１０００たる外部コンピュータや他の外部機器へ出力するようにしてもよい。例えば、当該計算結果を、外部機器のオン／オフ信号として利用するようにしてもよい。
【００８３】
次に、図８〜図９を参照して、本センサ装置１０による画像入力から、転送、及び、演算終了までの一連の視覚センサ処理について説明する。
【００８４】
制御回路１５のＣＰＵ１５０は、画像取り込み制御部３００（図４）を制御することで、リセット信号Ｒの有為／非有為と水平同期信号Ｖｉを順次切り替え、もって、受光素子アレイ１１の各行ｊ（ｊ＝１，…Ｎ２）において、各受光素子１２０ｉ，ｊ（以下、受光素子１２０（ｘ、ｙ）という）から出力された画像データ（フレームデータ：以下、Ｉ（ｘ，ｙ）という）を順番に対応するＡ／Ｄ変換器２１０ｊを介して並列処理機構１４に入力させる（Ｓ１０１）。
【００８５】
送られて来たデータは、対応する各行ｊ内の転送用シフトレジスタ４１０を次々に転送されていく（Ｓ１０２）。そして、受光素子１２０に対応する位置（ｉ，ｊ）（以下、（ｘ、ｙ）という）の転送用シフトレジスタ４１０ｉ，ｊにデータが転送されるまでこの転送処理を続ける（Ｓ１０３）。
【００８６】
転送が終了したら、転送用シフトレジスタ４１０から対応する演算素子４００ｉ，ｊ（以下、演算素子４００（ｘ、ｙ）という）のレジスタマトリックス４０１へと、当該画素のデータＩ（ｘ，ｙ）を転送する（Ｓ１０４）。具体的には、図６に示されるように、複数ビット（この場合、４ビット）で構成されている転送用シフトレジスタ４１０からレジスタマトリックス４０１へと１ビットずつ順番にデータを格納していく。次に、Ｓ２００において、各演算素子４００を制御することにより、必要な画像処理を行う。
【００８７】
各演算素子４００へとデータを転送した転送用シフトレジスタ４１０は、各演算素子４００がＳ２００の演算処理を行っている間に、次のフレームの処理へと移り（Ｓ１０５）、Ｓ１０１〜Ｓ１０３を実施する。一方、各演算素子４００も、その演算処理（Ｓ２００）が終了すると、次のフレームの処理へと移行し（Ｓ１０６）、次のフレームの画像データが各転送用シフトレジスタ４１０から演算素子４００のレジスタマトリックス４０１へと転送される（Ｓ１０４）。これを繰り返すことにより、演算素子４００は、転送用シフトレジスタ４１０が次のフレームのデータを転送している間（Ｓ１０１〜Ｓ１０３）に演算処理（Ｓ２００）を行うことができ、それぞれ無駄な待ち時間を減らすことができる。
【００８８】
次に、各演算素子４００が行う画像処理（Ｓ２００）の実行動作を、「エッジ抽出」を例にとり詳細に説明する。
【００８９】
「エッジ抽出」は画像処理において最も頻繁に利用される処理である。最も簡単に演算する場合は、左方向に隣接する１個の画素の強度値との差分による２近傍演算が用いられる。具体的には、位置（ｘ，ｙ）における入力画像強度をＩ（ｘ，ｙ）とすると、求めるエッジ抽出画像の画像強度データの値Ｉ‘（ｘ，ｙ）は、以下の式で表わされる。
Ｉ‘（ｘ、ｙ）＝  |Ｉ（ｘ、ｙ）  −  Ｉ（ｘ−１，ｙ）|
【００９０】
かかるエッジ抽出を行う場合には、Ｓ２００の画像処理ステップでは、図９に示すようなエッジ抽出工程が行われる。なお、この画像処理工程は、全演算素子４００において同時に並列処理される。
【００９１】
まず、４近傍入力端子から左隣の隣接画素のデータＩ（ｘ−１，ｙ）を本演算素子（ｘ、ｙ）のレジスタマトリックス４０１へと転送／格納する（Ｓ２１０）。次に、レジスタマトリックス４０１に現在格納されているＩ（ｘ，ｙ）とＩ（ｘ−１，ｙ）のデータをそれぞれ下位ビットからＡラッチ４０２とＢラッチ４０３にそれぞれ転送し（Ｓ２１１）、ＡＬＵ４０４により両者の差分を計算する（Ｓ２１２）。計算結果は一旦レジスタマトリックス４０１に格納する（Ｓ２１３）。計算完了後、計算結果を再びＡラッチ４０２へと読み出して（Ｓ２１４）、差分の絶対値をＡＬＵ４０４で求める（Ｓ２１５）。計算結果を再度レジスタマトリックス４０１へと格納する（Ｓ２１６）。絶対値の計算が完了したら、レジスタマトリックス４０１に格納された計算結果を、制御回路１５の演算処理部１５Ｂに出力し、画像処理工程を終了する（Ｓ２１７）。以上の計算処理は全ての演算素子４００で同時に並列処理されるため、演算処理が非常に高速に行われる。
【００９２】
計算結果を取得した演算処理部１５Ｂは、当該計算結果に基づき、撮像対象物の重心や変位量、速度、などの全体特徴量の演算を行い、その演算結果に基づいて良否判定を行ったり、その演算結果自体を、外部装置１０００たる外部アクチュエータ等への制御信号として出力したりする。
【００９３】
以上のように、本センサ装置１０では、画像処理の演算（画像の和、差、積、マッチング）については並列処理機構１４で行い、対象物の重心や変位量、速度、などの全体特徴量の演算を制御回路１５の演算処理部１５Ｂで行う。
【００９４】
図１０及び図１１は、比較例と本実施形態における、転送処理と演算処理のタイムチャートを比較して示している。比較例では、転送用シフトレジスタ４１０を設けず演算素子４００自身で転送処理を行わせるとすると、図１０に示すように、転送処理を行ったあと演算処理を行い、次の転送処理は演算処理終了まで待機する必要がある。つまり、１フレームの処理を行うのに、（転送処理に要する時間）＋（画像処理に要する時間）以上の時間が必要である。これに対して、本実施形態では、転送処理と演算処理にそれぞれ専用の回路を用いて両者を独立して行えるように構成されているので、図１１に示されるように、転送処理後にこのデータの画像処理を行っている間に次の転送処理を実施することができる。すなわち、１フレームの処理を行うのに要する時間は、（転送処理に要する時間）か（画像処理に要する時間）のうち長いほうの時間でほぼ足りることになる。つまり、パイプライン処理による演算処理及び転送処理の高速化が図れる。
【００９５】
上記構成の演算素子４００によれば、画像処理ステップＳ２００においては、上記エッジ抽出の他、様々な画像処理を行うことができる。
【００９６】
例えば、４近傍エッジ抽出の場合、位置（ｘ，ｙ）における入力画像強度をＩ（ｘ，ｙ）とすると、求める４近傍エッジ抽出画像の画像強度データの値Ｉ‘（ｘ，ｙ）は、以下の式で表せる。
Ｉ‘（ｘ、ｙ）＝Ｉ（ｘ、ｙ−１）＋Ｉ（ｘ、ｙ＋１）＋Ｉ（ｘ−１，ｙ）＋Ｉ（ｘ＋１，ｙ）―４Ｉ（ｘ、ｙ）
【００９７】
また、４近傍平滑化の場合、求める４近傍平滑画像の画像強度データの値Ｉ‘（ｘ，ｙ）は、以下の式で表せる。
Ｉ‘（ｘ、ｙ）＝（４Ｉ（ｘ、ｙ）＋ Ｉ（ｘ−１，ｙ）＋ Ｉ（ｘ＋１，ｙ） ＋Ｉ（ｘ、ｙ−１）＋Ｉ（ｘ、ｙ＋１））／８
【００９８】
上記アルゴリズムの他、画像処理でよく用いられるアルゴリズムのいくつかについて、本実施形態により演算を行った場合のステップ数、処理時間の例を表１に示す。
【表１】
2010136413.tif 000003
【００９９】
表１から明らかなように、本実施形態では、一般的な画像処理（例えば、平滑化、細線化、コンボリューション、相関、マスク処理）演算を完全並列処理により、非常に高速で行うことができる。表１に示される演算時間は、転送用シフトレジスタ４１０による画像データの転送時間は含んでいない。転送用シフトレジスタ４１０を設けていない場合は、この演算時間に加えて画像データを各演算素子４００に転送する時間が余分に必要となる。転送データ速度は、Ａ／Ｄ変換器２１０の変換スピードによって制限されるが、これを例えば、１ビット当たり１マイクロ秒とすると、１２８ｘ１２８画素ｘ８ビットの画像データを１２８列で並列転送する場合に要する時間は、１２８（画素）ｘ８（ビット）ｘ１（マイクロ秒／ビット）＝１ミリ秒となり、演算処理に要する時間と比較して数倍の時間が必要となることから、リアルタイムでの画像処理が困難になる。本実施形態では、この転送を演算処理と並行して行うことにより、この画像データについても１ミリ秒程度での処理が可能となる。したがって、これまでの視覚センサ装置では演算処理速度、転送速度が遅いために制限されていたＦＡロボット制御などの分野への応用が可能になる。
【０１００】
本実施形態が目指しているのは、実用的な高速性と十分な解像度を有する画像処理システムである。ＦＡシステムにおけるロボット制御には、受光素子１２０を１２８ｘ１２８個以上配列する解像度が必要とされる。本実施形態によれば、受光素子アレイ１１と並列処理機構１４を分離でき、それぞれの集積度を高められるため、この解像度を十分に実現できる。また、処理速度の目安としては、ロボットのアクチュエータの速度（１〜１０ミリ秒）が必要である。本実施形態では、この処理速度は、前述したようにＡ／Ｄ変換器２１０におけるＡ／Ｄ変換処理速度によって決まるが、以下に述べるように、十分に高速化が可能である。
【０１０１】
例えば、本実施形態での１画素あたりのＡ／Ｄ変換速度は、１ビットあたり１マイクロ秒となる。例えば、入力アナログ信号を６ビット（６４階調）でデジタル変換する場合には、１行分の１２８個の受光素子１２０の出力信号をデジタル変換するのに必要な時間は、６マイクロ秒ｘ１２８＝０．７６８ミリ秒となる。画像処理については、各受光素子に１対１に対応して演算素子が配置され、全演算素子で並列処理されるため、表１に示すように、０．４ミリ秒以下でほとんどの演算処理が行える。さらに、演算処理と転送処理を並行して行えるので、それぞれの処理の空き時間を減らすことができ、処理全体の時間を短縮することができる。
【０１０２】
また、前述したように本実施形態のＡ／Ｄ変換器２１０は、最上位ビットからＡ／Ｄ変換を行う。したがって、所望のビット数まで変換した時点で、リセット信号Ｒを送出し、次の光信号のＡ／Ｄ変換に移ることにより、Ａ／Ｄ変換の階調を変更することができる。これにより、より高速で、複雑な処理を行うことが可能となる。例えば、移動物体のトラッキングをするような場合に、物体が高速で移動している場合は、画像を１ビットの２値レベルで演算処理するように制御すれば、転送時間は、前述の６ビットの時の６分の１の０．１２８ミリ秒に短縮され、高速フィードバック制御に適用できる。逆に、低速で動いている場合には、階調を上げることにより、より精度を向上させて、追従させることができる。
【０１０３】
ただし、Ａ／Ｄ変換器から出力されるビット長を可変にする場合は、転送用シフトレジスタでは入力データのビット長を調整して固定長にする必要がある。なぜなら、例えば、通常のデータ長が８ビットの場合の転送用シフトレジスタラインには、固定長で８ビットｘ行内画素数（Ｎ１）のシフトレジスタが用いられる。そして、８ビットずつ区切った個々のシフトレジスタがそれぞれの位置に対応する各画素用の転送用シフトレジスタとして機能する。したがって、ビット長を８ビットに合わせておかないと、画像データが対応する位置の転送用シフトレジスタに正しく転送されないことになるからである。このため、転送用シフトレジスタに送る時点でダミー信号を加えて合計８ビットになるようにすることでデータが正しく転送される。
【０１０４】
以上説明したように、本実施形態のセンサ装置１０では、受光素子アレイ１１の各行の受光素子１２０に対して１個のＡ／Ｄ変換器２１０を対応させたＡ／Ｄ変換器アレイ１３と、受光素子１２０と１対１に対応する演算素子４００と転送用シフトレジスタ４１０とからなる並列処理機構１４とを備えている。このように受光素子１２０と１対１に対応する演算素子４００を有しているので、並列処理により近傍画素間の画像処理演算を高速で行うことができる。さらに、転送用シフトレジスタ４１０を演算素子４００に対応して設けているので、転送処理と独立して演算処理が行え、演算処理及び転送処理を効率良く行うことができる。また、転送処理と演算処理を並列に行うことができることから、各処理の待ち時間を減らし、より高速の画像処理を行うことができる。
【０１０５】
さらに、Ａ／Ｄ変換器２１０を１行ごとに設けているので、Ａ／Ｄ変換器２１０を受光素子１２０毎に設けた場合に比較して、受光素子１２０と演算素子４００間の伝送線の数が少なくて済み、受光素子１２０と演算素子４００とを別々に製造、配置することが容易にできる。このため、両者とも集積度を最適にすることができ、多画素数の高速視覚センサ装置１０を容易に製作できる。なお、このようにＡ／Ｄ変換器２１０を行ごとに設けたため、Ａ／Ｄ変換の処理速度により、全体の処理速度が制限を受けるが、ＦＡロボット制御に十分な画素数といわれる１２８ｘ１２８画素の映像を６４階調で処理する場合でも、ほとんどの画像処理が１ミリ秒以下で終了し、従来にない高速処理が可能である。したがって、本実施形態の多画素数／高速視覚センサ装置１０は、簡単な回路構成を有しながらも、複数の画像間でも効率的に高速演算処理が可能となっている。
【０１０６】
次に、図１２〜図１８を参照して、本発明の第２の実施形態について説明する。
【０１０７】
第１の実施形態では、受光素子アレイ１０を１つ用いているが、第２の実施形態では、複数の受光素子アレイ１０を用い、当該複数の受光素子アレイ１０からの信号を一つの並列処理機構１４に導いて演算処理を行うようにしている。
【０１０８】
図１２は、２個の受光素子アレイを用いて立体視を行う本実施形態の高速視覚センサ装置１０の概略図であり、図１３は、その詳細ブロック図である。
【０１０９】
図１２に示されるように、対象物２０００ａの像は、異なる位置に配置されたレンズ５０１Ｌ、５０１Ｒを介して、それぞれ、左目に対応する受光素子アレイ１１Ｌと右目に対応する受光素子アレイ１１Ｒに導かれ、単一の並列処理機構１４により処理されるようになっている。ここで、それぞれの受光素子アレイ１１Ｌ、１１Ｒは、図中に矢印Ｔで示されているデータ転送方向が一致し、かつ、データ転送方向に対応する画素の位置を、水平方向に、光学基線長ｂだけずらして配置されている。すなわち、図１３に示すように、受光素子アレイ１１Ｌ及び１１Ｒとは、互いの各水平受光部１１０ｊが同一の水平方向に延びるように、配置されている。
【０１１０】
より詳しくは、図１４（Ａ）に示すように、ワールド座標系（Ｘ、Ｙ、Ｚ）において、右目用受光素子アレイ１１Ｒの前方に右目用レンズ５０１Ｒが配置されており、両者により右目用カメラ５００Ｒが構成されている。同様に、左目用受光素子アレイ１１Ｌの前方に左目用レンズ５０１Ｌが配置されており、両者により左目用カメラ５００Ｌが構成されている。レンズ５０１Ｒと５０１Ｌとは、その焦点距離ｆが等しく、その光軸（Ｚ方向）が互いに平行になるように、ＸＹ平面上に配置されている。なお、レンズ５０１Ｌのレンズ中心をワールド座標系（Ｘ、Ｙ、Ｚ）の原点とする。これらレンズ５０１Ｒ及び５０１Ｌは、Ｘ方向に互いにｂだけずれて配置されている。また、受光素子アレイ１１Ｌ及び１１Ｒが、対応するレンズ５０１Ｌ、５０１Ｒの後方にｆだけ離れて配置されている。したがって、これら受光素子アレイ１１Ｌ、１１Ｒも、上記ＸＹ平面に平行に、かつ、互いにＸ方向にｂだけずれて配置されている。また、受光素子アレイ１１Ｌ及び１１Ｒの転送方向Ｔは、共に、Ｘ方向に向くように配置されている。
【０１１１】
制御回路１５には、図１２に示すように、一つのフレームで両受光素子アレイ１１Ｌ、１１Ｒが取得した画像間の位置ずれ量Ｊ（並列処理機構１４により演算した結果）を蓄積記憶しておく画素ずれ量記憶装置１５Ｃが備えられている。
【０１１２】
図１３に示すように、受光素子アレイ１１Ｒ及び１１Ｌは、それぞれ、第１実施形態の受光素子アレイ１１と同一の構成を有している。同様に、Ａ／Ｄ変換器アレイ１３Ｒ及び１３Ｌも、それぞれ、第１実施形態のＡ／Ｄ変換器アレイ１３と同一の構成を有している。
【０１１３】
並列処理機構１４には、第１の実施形態同様、各受光素子アレイ１１Ｒ、１１ＬのＮ１個ｘＮ２個の受光素子１２０ｉ，ｊ（ｉ＝１〜Ｎ１，ｊ＝１〜Ｎ２）に１対１に対応して、演算素子４００ｉ，ｊ（ｉ＝１〜Ｎ１，ｊ＝１〜Ｎ２）が、Ｎ１列ｘＮ２行、２次元状に配列されている。このＮ２個の演算素子行ｊ（ｊ＝１〜Ｎ２）に１対１に対応して、Ｎ２個の右用転送用シフトレジスタライン４２０Ｒｊ（ｊ＝１〜Ｎ２）と、Ｎ２個の左用転送用シフトレジスタライン４２０Ｌｊ（ｊ＝１〜Ｎ２）とが設けられている。
【０１１４】
ここで、Ｎ２個の右用転送用シフトレジスタライン４２０Ｒｊは、それぞれ、Ａ／Ｄ変換器アレイ１３ＲのＮ２個のＡ／Ｄ変換器２１０ｊに接続されている。また、Ｎ２個の左用転送用シフトレジスタライン４２０Ｌｊは、それぞれ、Ａ／Ｄ変換器アレイ１３ＬのＮ２個のＡ／Ｄ変換器２１０ｊに接続されている。
【０１１５】
また、第１実施形態の転送用シフトレジスタライン４１０と同様、各右用転送用シフトレジスタライン４２０Ｒｊには、複数ビット（この場合、４ビット）の右用転送用シフトレジスタ４１０Ｒｉ，ｊ（ｉ＝１〜Ｎ１）が、Ｎ１個、直列接続されている。同様に、各左用転送用シフトレジスタライン４２０Ｌｊには、複数ビット（この場合、４ビット）の左用転送用シフトレジスタ４１０Ｌｉ，ｊ（ｉ＝１〜Ｎ１）が、Ｎ１個、直列接続されている。各演算素子４００ｉ，ｊ（ｉ＝１〜Ｎ１，ｊ＝１〜Ｎ２）が、当該対応する右用転送用シフトレジスタ４１０Ｒｉ，ｊ（ｉ＝１〜Ｎ１，ｊ＝１〜Ｎ２）、及び、対応する左用転送用シフトレジスタ４１０Ｌｉ，ｊ（ｉ＝１〜Ｎ１，ｊ＝１〜Ｎ２）の両方に接続されている。
【０１１６】
このように、本実施形態においては、並列処理機構１４には、それぞれの受光素子アレイ１１Ｒ及び１１Ｌの受光素子１２０Ｒ、１２０Ｌに１対１に対応する左用及び右用転送用シフトレジスタ４１０Ｒ、４１０Ｌを備えており、対応する受光素子１２０Ｒと１２０Ｌのペアに対して１個の演算素子４００が対応する形で配置されている。したがって、各々の演算素子４００に対して、左及び右用転送用シフトレジスタ４１０Ｌ、４１０Ｒが１組ずつ配置されている形になる。制御回路１５、インストラクション／コマンドバス１６の構成は、制御回路１５に画素ずれ量記憶装置１５Ｃが追加されている点、及び、制御回路１５が各転送用シフトレジスタ４１０Ｒ、４１０Ｌの転送動作を制御する点を除き、基本的に図１に示される実施形態と同一である。
【０１１７】
この実施形態では、右目用受光素子アレイ１１Ｒの各受光素子１２０Ｒで得られた画像信号は、Ａ／Ｄ変換器２１０Ｒを経て右目画像転送用シフトレジスタ４１０Ｒに送られる。一方、左目用受光素子アレイ１１Ｌの各受光素子１２０Ｌで得られた画像信号は、Ａ／Ｄ変換器２１０Ｌを経て左目画像転送用シフトレジスタ４１０Ｌに送られる。この転送動作は独立して行われ、各転送用シフトレジスタ４１０Ｌ、４１０Ｒに転送された左目と右目の画像信号は演算素子４００によって処理される。ここで、各受光素子１２０Ｒ、１２０Ｌの位置情報等を基にして所定の演算を行うことにより、対象物２０００ａの３次元計測を行うことができる。
【０１１８】
ステレオ視による３次元計測では、奥富正敏著「ステレオ視」（「コンピュータビジョン」、松山他編、新技術コミュニケーションズ、１９９８年６月発行、１２３〜１２４頁）に開示されているように、画像マッチングと三角測量の原理に基づいて演算を行なう。
【０１１９】
以下、この立体視システムによる計測物体までの距離の求め方の概略を説明する。
【０１２０】
まず、画像マッチング処理を行い、右目画像ＰRと左目画像ＰL中の画像の一致点を求める。ここで、右目画像ＰRと左目画像ＰLのそれぞれのワールド画像座標系（ｘR、ｙR）及び（ｘL、ｙL）を、図１４（Ａ）のワールド座標系（Ｘ、Ｙ、Ｚ）に対して、図１４（Ｂ）のように定める。なお、撮像対象２０００ａが、当該ワールド座標系（Ｘ、Ｙ、Ｚ）において図１４（Ｂ）のように位置しているとする。次に、右目画像ＰRのワールド座標系で表したある位置（ｘR，ｙR）を中心とした所定の小領域（ｘR±ｗｘR，ｙR±ｗｙR）を定め、左目画像ＰL中からこれと同じ大きさの小領域を切り出し、両画像について差を求め、最も差が小さくなる領域のワールド座標系で表した中心位置（ｘＬ、ｙＬ）を求める。これが右目画像ＰRの位置（ｘR，ｙR）に対する左目画像ＰLの一致点である。このときのそれぞれの領域の差、つまり位置ずれ量（ｘR−ｘＬ、ｙR−ｙＬ）が視差ｄとなる。ここで、カメラのずれ方向と垂直な方向については、この位置ずれはほとんど生じないので、本実施形態のように、ｘ方向に左右のカメラをずらした場合は、ｙRはｙＬにほぼ等しく、従って、視差ｄはｘR−ｘＬにほぼ等しくなる。この場合、空間中にある１点Ｐ（Ｘ、Ｙ、Ｚ）が、各々の画像上で、（ｘＬ、ｙＬ）、（ｘR、ｙR）に投影されていることになり、以下の数式が成立する。
Ｚ＝ｂｆ／ｄ
【０１２１】
ここで、ｆは焦点距離、ｂは基線長（左右のカメラ５００Ｌ、５００Ｒ間の距離）、及び、ｄは視差（ｘR−ｘＬ）である。したがって、ｆ、ｂが既知の条件では、撮像対象のもとの3次元位置を再現することができる。
【０１２２】
このように、両方のカメラの焦点距離をｆ、光学中心間の距離である基線長をｂとすると、計測する物体までの距離ＺがＺ＝ｂｆ／ｄにより求められることがわかる。
【０１２３】
ここで、複数のカメラ５００Ｌ、５００Ｒのそれぞれで取得した画像中から一致する画像を如何に効率良く探し出せるかが、３次元計測における処理速度向上の上で問題となる。本実施形態によれば、図１２に示されるように、左右の受光素子アレイ１１Ｌ、１１Ｒの位置は、対応する画素たる受光素子１２０が、データ転送方向（左右（行）方向）Ｔと同一の方向に沿ってずらされて配置されている。この結果、左右の受光素子アレイで取得した画像中の画面における特定の画像の位置は、それぞれの画像中では左右にずれた位置に配置されることになる。したがって、一方の画像を左右方向にずらしていきながら、両画像の差分をとり、その差が最も小さい位置、つまりマッチングがとれる画素ずれ量を検出することで、３角法により対象物の位置検出を行なうことが可能である。
【０１２４】
さらに、本実施形態では、左右の画像がそれぞれ独立の転送用レジスタ４１０Ｌ、４１０Ｒにより転送されるので、差分の演算中に次の演算用に画像をずらしておくことができ、演算処理を効果的に行なうことができる。
【０１２５】
さらに、前のフレームでの位置ずれ量の演算結果Ｊを画素ずれ量記憶装置１５Ｃに保持しておき、例えば、前回のフレーム演算の際に左右の画素で１５画素分の位置ずれが検出されている場合は、この１５画素分の位置ずれＪを基準として、今回のフレーム演算での位置ずれ量は１５画素近傍であると推定して、その範囲から先に差分演算を行なうことが好ましい。この際に、左右の画像に所定の画素ずれを起こさせるためには、（１）左右のカメラのタイミングをずらす（２）カメラと並列処理機構の間にバッファを設ける（３）転送用レジスタを制御して一方の画像のみ画素ずれをおこさせた状態で転送を行なう、といった手法を採ることができる。これにより、前フレームでマッチングがとれた状態から演算をスタートさせることができるので、次のフレームでの正確な画素ずれ量を求めるまでの演算時間を短縮することが可能となる。
【０１２６】
以下、本実施形態のセンサ装置１０の動作の一例を、図１５〜図１６のフローチャートを参照して、説明する。なお、この例では、左右の画像に前回のフレームで検出された所定の画素ずれを起こさせるために、上記（３）転送用レジスタを制御して一方の画像のみ画素ずれをおこさせた状態で転送を行なう手法が採られている。
【０１２７】
まず、Ｓ３０１において、左右の画像Ｌ、Ｒをそれぞれの受光素子アレイ１１Ｌ、１１Ｒで取得し、対応するＡ／Ｄ変換器アレイ１３Ｌ、１３Ｒにてデジタルデータに変換する。次に、Ｓ３０２において、左画像Ｌを、左用転送シフトレジスタ４１０Ｌで、対応する位置（ｘ、ｙ）まで転送する。すなわち、左転送用シフトレジスタ４１０Ｌに、転送開始信号により左画像データの転送を開始させ、（行内全素子数（Ｎ１）ｘアナログレベル）分だけビットシフトによる転送を行わせる。同時に、右画像Ｒを、右用転送シフトレジスタ４１０Ｒで、前フレームで得られた画素ずれ値Ｊ（画素ずれ量記憶装置１５Ｃに記憶されたもの）分ずれた位置（ｘ−Ｊ、ｙ）まで転送する。すなわち、右転送用シフトレジスタ４１０Ｒに、転送開始信号により右画像データの転送を開始させ、（（行内全素子数（Ｎ１）―Ｊ）ｘアナログレベル）分だけビットシフトによる転送を行わせる。
【０１２８】
次に、Ｓ３０３において、上記転送位置で、左右画像データＬ（ｘ、ｙ）及びＲ（ｘ−Ｊ、ｙ）を両転送用シフトレジスタ４１０Ｌ、４１０Ｒから対応する位置（ｘ、ｙ）の演算素子４００のレジスタマトリックス４０１へデータ転送する。
【０１２９】
次に、Ｓ４００において、左右画像間のマッチング処理を行う。
【０１３０】
当該左右画像マッチング処理では、図１６に示すように、まず、ｊ＝Ｊと初期化した（Ｓ４１０）後、左画像のうちの一つのブロック（例えば、３ｘ３画素や、８ｘ８画素等）を参照画像として、右画像の中のどの部分と一致度が高いかを、右画像内の現在の対応ブロックとの相関値Ｃ（ｊ）（最初はｊ＝Ｊ）を演算することで求める。
【０１３１】
ここで、相関値Ｃ（ｊ）は、以下の式で表される。
Ｃ（ｊ）＝Σ｜Ｌ（ｘ、ｙ）−Ｒ（ｘ−ｊ、ｙ）｜
【０１３２】
なお、ｘ、ｙはブロックに含まれる全ての画素点である。
【０１３３】
すなわち、Ｓ４１１で、各画素点（ｘ、ｙ）の演算素子４００が、現在格納しているＬ（ｘ、ｙ）とＲ（ｘ−ｊ、ｙ）との差分演算を行い（図９のＳ２１１〜Ｓ２１３と同様の処理）、その差分結果の絶対値（以下、Ｄ（ｘ、ｙ）とする）を求める（図９のＳ２１４〜Ｓ２１６と同様）。さらに、ブロック内についての総和演算を行い、最終的な相関値Ｃ（ｊ）を得る。この総和演算では、各演算素子４００は、データ転送（近傍のレジスタマトリックス４０１間のデータ転送）と和算を繰り返し行う。
【０１３４】
例えば、ブロックが３ｘ３画素（８近傍）とすると、総和演算では、まず、左列の差分絶対値データＤ（ｘ−１，ｙ）を転送し、Ｄ（ｘ−１，ｙ）＋Ｄ（ｘ、ｙ）を演算する。なお、ＳＩＭＤにより、当該演算が全演算素子４００で行われる。次に、右列の差分絶対値データＤ（ｘ＋１，ｙ）を転送し、Ｄ（ｘ−１，ｙ）＋Ｄ（ｘ、ｙ）＋Ｄ（ｘ＋１，ｙ）を演算する。次に、上行のデータを転送して和を求め、 Ｄ（ｘ−１，ｙ―１）＋Ｄ（ｘ、ｙ―１）＋Ｄ（ｘ＋１，ｙ―１）＋Ｄ（ｘ−１，ｙ）＋Ｄ（ｘ、ｙ）＋Ｄ（ｘ＋１，ｙ）が得られる。さらに、下行のデータを転送して、Ｄ（ｘ−１，ｙ―１）＋Ｄ（ｘ、ｙ―１）＋Ｄ（ｘ＋１，ｙ―１）＋Ｄ（ｘ−１，ｙ）＋Ｄ（ｘ、ｙ）＋Ｄ（ｘ＋１，ｙ）＋Ｄ（ｘ−１，ｙ＋１）＋Ｄ（ｘ、ｙ＋１）＋Ｄ（ｘ＋１，ｙ＋１）が求められる。これが、最終的な相関値Ｃ（ｊ）となる。ブロックが８ｘ８画素の場合には、さらに上下左右方向からのデータ転送を行いながら上記総和演算を続けることにより最終的な相関値Ｃ（ｊ）を求める。
【０１３５】
得られた相関値Ｃ（ｊ）を、制御回路１５の演算処理部１５Ｂに転送格納する。
【０１３６】
次に、ｊを検索範囲内で変更する（Ｓ４１２でＮｏ、Ｓ４１３）。具体的には、右画像のデータＲを近傍演算素子４００のレジスタマトリックス４０１間で、右または左方向に転送する。
【０１３７】
再び、Ｓ４１１にて、上記相関値Ｃ（ｊ）の演算を行う。こうして、右画像のデータＲを近傍演算素子４００間で転送しながら、全検索範囲について相関値Ｃ（ｊ）の演算を繰り返す（Ｓ４１２でＮｏ、Ｓ４１３）。なお、当該検索範囲は、対象物２０００ａの予測される最高速度、レンズ５０１Ｒ、５０１Ｌの縮小倍率、受光素子アレイ１１のピクセルピッチなどの条件より定めるが、フレームレートが高速であることから、初期値Ｊに対し、例えば、左右方向に±１、±２等、小さい範囲とすることができる。
【０１３８】
全検索範囲について相関値Ｃ（ｊ）が得られると（Ｓ４１２にてｙｅｓ）、Ｓ４１４に移行する。Ｓ４１４では、演算処理部１５Ｂに現在格納されている全相関値Ｃ（ｊ）（例えば、ｊ＝Ｊ、Ｊ−１，Ｊ＋１）の内の最小値Ｃ（ｊ）を選択し、その値ｊを求める。求められた値ｊが、当該左画像ブロックの右画像ブロック中のマッチング位置を示す。
【０１３９】
こうして、左右画像マッチング処理Ｓ４００を終了する。
【０１４０】
次に、図１５に示すように、Ｓ３０５にて、上記左右画像マッチング処理Ｓ４００にて得られたｊ値を、現フレームに対する画素ずれ量Ｊと設定し、画素ずれ格納装置１５Ｃに格納する。次に、Ｓ３０６で、該左ブロック画像が示す対象物の距離Ｚ＝ｂｆ／Ｊを演算する。ここで、ｂは、左右のカメラ間距離、ｆはカメラ焦点距離である。
【０１４１】
なお、上記左右マッチング処理工程Ｓ４００のうち、Ｓ４１１〜Ｓ４１３の工程は、プログラム制御部１５Ａが演算素子４００を並列処理制御することにより行われる。一方、Ｓ４１４、Ｓ３０５，Ｓ３０６では、演算処理部１５Ｂが対応する演算を行う。また、上記左右画像マッチング処理Ｓ４００を受光面１１Ｌ、１１Ｒ中の全ブロックについてそれぞれ行うことにより、Ｓ３０５〜Ｓ３０６で、各ブロックイメージが示す対象物までの距離がそれぞれ求められる。
【０１４２】
各演算素子４００へとデータを転送した右及び左転送用シフトレジスタ４１０Ｒ、４１０Ｌは、各演算素子４００及び演算処理部１５ＢがＳ４００〜Ｓ３０６の演算処理を行っている間に、次のフレームの処理へと移り（Ｓ３０４）、Ｓ３０１〜Ｓ３０２を実施する。一方、各演算素子４００及び演算処理部１５Ｂも、その演算処理（Ｓ４００〜Ｓ３０６）が終了すると、次のフレームの処理へと移行し（Ｓ３０７）、次のフレームの左右画像データが各転送用シフトレジスタ４１０Ｌ、４１０Ｒから演算素子４００のレジスタマトリックス４０１へと転送される（Ｓ３０３）。これを繰り返すことにより、演算素子４００及び演算処理部１５Ｂは、転送用シフトレジスタ４１０Ｌ、４１０Ｒが次のフレームの左右画像データを転送している間（Ｓ３０１〜Ｓ３０２）に演算処理（Ｓ４００〜Ｓ３０６）を行うことができ、それぞれ無駄な待ち時間を減らすことができる。
【０１４３】
以上のように、本実施形態によるセンサ装置１０によれば、前回のフレームで検出された画素ずれ値Ｊを格納しておくことによって、検索を前フレームのずれ量の位置からはじめることで、探索範囲を小さくして、効率的に探すことが可能となっている。特に、本センサ装置１０のように非常に高速なフレームレート（例えば１ミリ秒）にマッチングを行うことが可能なシステムでは、フレーム間で物はほとんど動かない。例えば、時速１５０ｋｍの対象が４ｃｍ動くにすぎない。そのため、左右の画像のずれ量があらかじめわかっていれば、その位置から左右数点のずれた位置を探すことで対象は見つけることができるからである。
【０１４４】
また、もし、転送用シフトレジスタ４０１Ｒ、４１０Ｌを用いないとすると、演算素子４００で両方の受光素子アレイ１１Ｒ、１１Ｌの画像情報を転送する時間が必要になり、受光素子アレイが１個の場合に比べて転送処理に要する時間が倍以上になり、高速での画像処理が困難になる。しかし、本実施形態によれば、演算素子４００で演算処理を行っている間にも、転送用シフトレジスタ４１０Ｌ、４１０Ｒにより並列して転送処理を行うことが可能なので、前述の受光素子アレイが１個の場合と同様に高速での画像処理が可能である。受光素子アレイの個数は２個に限られるものではなく、３個以上であってもよい。この場合は、受光素子アレイのそれぞれに対して専用の転送用シフトレジスタを３個以上、それぞれの演算素子に対応させて設ける必要がある。３個以上の受光素子アレイを用いると、死角を減らす効果や、精度を高める効果がある。
【０１４５】
図１７、図１８は、複数、ここでは３個の受光素子アレイ（カメラ）１１を用いた場合において、転送用シフトレジスタ４１０を用いない場合（比較例）の転送処理、演算処理のタイムチャートと、本実施形態による転送処理、演算処理のタイムチャートをそれぞれ示している。図１７に示される比較例では、演算素子で画像信号の転送を行うため、各画像信号の転送をそれぞれ行った後に、演算処理を行う必要がある。つまり、（ａ）のカメラ１の画像信号の転送が終了してから、（ｂ）のカメラ２の画像信号の転送を行い、それが終了した後に（ｃ）のカメラ３の画像信号の転送を行って、全ての転送処理が終了した後に（ｄ）の演算処理を行う。次のフレームの画像信号の転送は、この演算処理が終了するまで行うことはできない。したがって、１フレームの処理に要する時間は、（１つのカメラの転送処理に要する時間）ｘ３＋（演算処理に要する時間）以上になる。
【０１４６】
一方、本実施形態による場合は、それぞれの演算素子に対して転送用シフトレジスタを受光素子アレイ、つまりカメラに応じた数、（この場合、３個）有するので、それぞれの転送処理を同時に行うことができ、また、演算処理も独立して行うことができる。図１８（ａ）〜（ｃ）に示されるように、転送用シフトレジスタによるカメラ１〜３の画像信号の転送は同時に行われる。転送されたデータは、演算素子により演算処理される。この演算処理が行われている間に、転送用シフトレジスタは次のフレームの画像データの転送処理を行う。したがって、演算素子は、演算処理を終えて間もなく次のフレームの演算処理を行うことができる。したがって、１フレームの処理に要する時間は、（１つのカメラの転送処理に要する時間）または（演算処理に要する時間）の長いほうの処理時間で足りることになる。本実施形態によれば、多数のカメラを用いた場合でも、処理時間の長時間化を防止でき、高速化が図れる。
【０１４７】
次に、複数の受光素子アレイを用いた別の実施形態（第３の実施形態）について、図１９〜図２２を参照して説明する。
【０１４８】
図１９は、本実施形態による色画像を認識するための高速視覚センサ装置１０の概略構成図であり、図２０はその詳細ブロック図である。
【０１４９】
対象物２０００ｂからの画像は、レンズ５０１を経て、クロスダイクロイックプリズム５０２によりＲＧＢ３原色に分解され、さらにそれぞれの色用のフィルタ５０３ｂ、５０３ｇ、５０３ｒによって余分な波長信号を取り除かれて、各色用の受光素子アレイ１１ｂ、１１ｇ、１１ｒに導かれるようになっている。
【０１５０】
図２０に示すように、第２の実施形態と同様、受光素子アレイ１１ｒ、１１ｇ、及び、１１ｂは、第１実施形態の受光素子アレイ１１と同一の構成を有しており、Ａ／Ｄ変換器アレイ１３ｒ、１３ｇ、１３ｂも、第１実施形態のＡ／Ｄ変換器アレイ１３と同一の構成を有している。第２の実施形態と同様、本実施形態の並列処理機構１４にも、各受光素子アレイ１１ｒ、１１ｇ、１１ｂのＮ１個ｘＮ２個の受光素子１２０に１対１に対応して、演算素子４００が、Ｎ１列ｘＮ２行、２次元状に配列されている。本実施形態では、このＮ２個の演算素子行に１対１に対応して、Ｎ２個のｒ用転送用シフトレジスタライン４２０ｒと、Ｎ２個のｇ用転送用シフトレジスタライン４２０ｇ、及び、Ｎ２個のｂ用転送用シフトレジスタライン４２０ｂが設けられている。各転送用シフトレジスタライン４２０ｒ、４２０ｇ、４２０ｂは、それぞれ、対応するＡ／Ｄ変換器アレイ１３ｒ、１３ｇ、１３ｂに接続されている。また、第２実施形態同様、各転送用シフトレジスタライン４２０ｒには複数ビット（この場合、４ビット）のｒ転送用シフトレジスタ４１０ｒが、Ｎ１個、直列接続され、各転送用シフトレジスタライン４２０ｇには複数ビット（この場合、４ビット）のｇ転送用シフトレジスタ４１０ｇが、Ｎ１個、直列接続され、各転送用シフトレジスタライン４２０ｂには複数ビット（この場合、４ビット）のｂ転送用シフトレジスタ４１０ｂが、Ｎ１個、直列接続されている。各演算素子４００が、対応するｒ転送用シフトレジスタ４１０ｒ、ｇ転送用シフトレジスタ４１０ｇ、及び、ｂ転送用シフトレジスタ４１０ｂに接続されている。
【０１５１】
各受光素子アレイ１１ｒ、１１ｇ、１１ｂで得られた画像信号は、それぞれ対応するＡ／Ｄ変換器アレイ１３ｒ、１３ｇ、１３ｂによりデジタル信号に変換された後に、単一の並列処理機構１４に導かれて演算処理される。並列処理機構１４内では、各演算素子４００に対し、３個の転送用シフトレジスタ４１０ｒ、４１０ｇ、４１０ｂが、対応する受光素子アレイ１１ｒ、１１ｇ、１１ｂで取得された画像信号を専用に転送する。このようにすることで、第２実施形態の立体視システムと同様に各色用の受光素子アレイ１１から送られる画像信号を演算処理に並列して独立して転送処理することができ、高速での画像処理が行える。
【０１５２】
本実施例の場合は、演算素子４００にはＲＧＢの各色に分離されたデジタル信号が送られてくるので、色補正や色変換等の画像処理を容易かつ高速に行うことができる利点がある。また、ＲＧＢ以外にも異なる波長領域の画像を取得するフィルタ５０３等を設けた受光素子アレイ１１を複数配置することで、波長特性の分析などにも用いることが可能である。かかる色画像認識は、色情報を持った物体の認識に利用できる。例えば、印刷物のリアルタイム良否判定や、道路から白線を抽出することによる自動走行への応用などが考えられる。本実施形態により、現在の入力画像がテンブレート画像と同一かどうかの判定も高速に実現することができる。
【０１５３】
以下、本実施形態の色画像認識の動作について、図２１〜図２２のフローチャートを参照して説明する。
【０１５４】
まず、Ｓ５０１にて、ＲＧＢ画像ｒ（ｘ、ｙ）、ｇ（ｘ、ｙ）、ｂ（ｘ、ｙ）をそれぞれの受光素子アレイ１１ｒ、１１ｇ、１１ｂの各位置（ｘ、ｙ）から取得し、対応するＡ／Ｄ変換器アレイ１３ｒ、１３ｇ、１３ｂにてデジタル信号に変換する。次に、Ｓ５０２，Ｓ５０３にて、ＲＧＢ画像ｒ（ｘ、ｙ）、ｇ（ｘ、ｙ）、ｂ（ｘ、ｙ）を、並列処理機構１４内の対応する位置（ｘ、ｙ）まで、ＲＧＢ用転送レジスタ４１０ｒ、４１０ｇ、４１０ｂにて転送する。すなわち、各転送用シフトレジスタ４１０ｒ、４１０ｇ、４１０ｂに対し、転送開始信号により、対応する色画像データの転送を開始させ、（行内全素子数（Ｎ１）ｘアナログレベル）分だけビットシフトによる転送を行わせる。次に、Ｓ５０４にて、転送位置（ｘ、ｙ）で、ＲＧＢ画像データｒ（ｘ、ｙ）、ｇ（ｘ、ｙ）、ｂ（ｘ、ｙ）を対応する演算素子４００のレジスタマトリックス４０１へデータ転送する。
【０１５５】
次に、Ｓ６００にて、ＲＧＢテンプレートマッチング処理を行う。
【０１５６】
なお、各ＲＧＢ用の参照画像データＴｒ（ｘ、ｙ）、Ｔｇ（ｘ、ｙ）、Ｔｂ（ｘ、ｙ）が、予め、対応する画素（ｘ、ｙ）の演算素子４００のレジスタマトリックス４０１に格納されている。この参照画像データは、理想的な対象物（例えば印刷物）を撮影して得られたフレーム画像（テンプレート）である。ＲＧＢテンプレートマッチング処理では、この参照データに対し入力画像データのマッチング位置を求める。
【０１５７】
具体的には、当該ＲＧＢテンプレートマッチング処理Ｓ６００では、図２２に示すように、まず、Ｓ６１０において、各ＲＧＢ毎に、参照画像のうちの一つのブロック（例えば３ｘ３画素）と入力画像内の現在の対応ブロックとの相関値Ｃ（ｍ 、ｎ）（最初はｍ＝０、ｎ＝０）を演算する。ここで、ｒ、ｇ、ｂ成分について、相関値Ｃｒ（ｍ、ｎ）、Ｃｇ（ｍ、ｎ）、Ｃｂ（ｍ、ｎ）は、それぞれ、以下の式で表される。
Ｃｒ（ｍ，ｎ）＝Σ｜ｒ（ｘ、ｙ）−Ｔｒ（ｘ＋ｍ、ｙ＋ｎ）｜
Ｃｇ（ｍ，ｎ）＝Σ｜ｇ（ｘ、ｙ）−Ｔｇ（ｘ＋ｍ、ｙ＋ｎ）｜
Ｃｂ（ｍ，ｎ）＝Σ｜ｂ（ｘ、ｙ）−Ｔｂ（ｘ＋ｍ、ｙ＋ｎ）｜
【０１５８】
ここで、ｘ、ｙはブロックに含まれる全ての画素点である。また、これら相関値は、各演算素子４００において、第２実施形態における相関値Ｃ（ｊ）を求めるのと同様の演算により、求められる。
【０１５９】
Ｓ６１０においては、さらに、これらｒｇｂ成分の相関値の総和Ｃａｌｌ（ｍ、ｎ）を求める。ここで、相関総和値Ｃａｌｌ（ｍ、ｎ）は以下の式で表される。
Ｃａｌｌ（ｍ、ｎ）＝ Ｃｒ（ｍ、ｎ）＋Ｃｇ（ｍ、ｎ）＋Ｃｂ（ｍ、ｎ）
【０１６０】
なお、この相関総和値Ｃａｌｌ（ｍ，ｎ）もまた、演算素子４００にて求められる。また、得られた相関総和値Ｃａｌｌ（ｍ，ｎ）を演算処理部１５Ｂに転送格納する。
【０１６１】
次に、ｍまたはｎを検索範囲内で変更する（Ｓ６１１でＮｏ、Ｓ６１２）。具体的には、参照画像データＴｒ、Ｔｇ、Ｔｂを近傍演算素子４００のレジスタマトリックス４０１間で、上下左右方向のいずれかに転送する。
【０１６２】
そして、再び、Ｓ６１０において、上記相関値Ｃａｌｌ（ｍ、ｎ）の演算を行う。こうして、参照画像Ｔｒ、Ｔｇ、Ｔｂを近傍演算素子４００間で転送しながら、全検索範囲について相関値Ｃａｌｌ（ｍ、ｎ）の演算を繰り返す（Ｓ６１１でＮｏ、Ｓ６１２）。なお、検索範囲は、対象物の予測される最高画像ずれ、レンズ５０１の縮小倍率、受光素子アレイ１１のピクセルピッチなどの条件より定める。
【０１６３】
全検索範囲について相関値Ｃａｌｌ（ｍ、ｎ）が得られると（Ｓ６１１にてｙｅｓ）、Ｓ６１３で、現在演算処理部１５Ｂ内に格納されている全相関値Ｃａｌｌ（ｍ、ｎ）の中の最小値であるＣａｌｌ（ｍ、ｎ）に対する（ｍ、ｎ）を求める。求められた値（ｍ、ｎ）がマッチング位置を示す。以上により、Ｓ６００のＲＧＢテンプレートマッチング処理を終了する。
【０１６４】
次に、図２１に示すように、Ｓ５０６において、得られたｍ、ｎに基づいて、画像ずれ量（ｍ２＋ｎ２）１／２を演算する。このずれ量が、当該ブロック内の対象画像の理想位置からの位置ずれ量である。なお、上記ＲＧＢテンプレートマッチング処理工程Ｓ６００のうち、Ｓ６１０〜Ｓ６１２の工程は、プログラム制御部１５Ａが演算素子４００を並列処理制御することにより行われる。一方、Ｓ６１３、Ｓ５０６では、演算処理部１５Ｂが対応する演算を行う。また、上記ＲＧＢ画像マッチング処理Ｓ６００を、受光面１１ｒ、１１ｇ、１１ｂ中の全ブロックについてそれぞれ行うことにより、各ブロックイメージが示す対象画像の位置ずれ量を求めることができる。
【０１６５】
各演算素子４００へとデータを転送したｒ、ｇ、ｂ転送用シフトレジスタ４１０ｒ、４１０ｇ、４１０ｂは、各演算素子４００及び演算処理部１５ＢがＳ６００〜Ｓ５０６の演算処理を行っている間に、次のフレームの処理へと移り（Ｓ５０５）、Ｓ５０１〜Ｓ５０３を実施する。一方、各演算素子４００及び演算処理部１５Ｂも、その演算処理（Ｓ６００〜Ｓ５０６）が終了すると、次のフレームの処理へと移行し（Ｓ５０７）、次のフレームのｒｇｂ画像データが各転送用シフトレジスタ４１０ｒ、４１０ｇ、４１０ｂから演算素子４００のレジスタマトリックス４０１へと転送される（Ｓ５０４）。これを繰り返すことにより、演算素子４００及び演算処理部１５Ｂは、転送用シフトレジスタ４１０ｒ、４１０ｇ、４１０ｂが次のフレームのｒｇｂ画像データを転送している間（Ｓ５０１〜Ｓ５０３）に演算処理（Ｓ６００〜Ｓ５０６）を行うことができ、それぞれ無駄な待ち時間を減らすことができる。
【０１６６】
以下、複数の受光素子アレイを用いた更に別の実施形態（第４の実施形態）について、図２３〜図２６を参照して説明する。
【０１６７】
図２３は、本実施形態による高速での移動物体の認識を行うシステム１０の概略構成図であり、図２４はその詳細ブロック図である。
【０１６８】
移動物体２０００ｃからの映像は、レンズ５０１を経てビームスプリッタ５０４で２方向に分岐され、それぞれシャッタ５０５Ａ、５０５Ｂを介して受光素子アレイ１１Ａ、１１Ｂに導かれるようになっている。制御回路１５によりシャッタ５０５Ａ、５０５Ｂを制御することにより、各受光素子アレイ１１Ａ、１１Ｂでは、異なる時刻（異なるフレーム）における移動物体２０００ｃの映像が取得されるようになっている。具体的には、受光素子アレイ１１Ａでは時刻ｔ（フレームｔ）における画像Ｐ（ｔ）が、受光素子アレイ１１Ｂでは時刻ｔ＋Δｔ（フレームｔ＋Δｔ）における画像Ｐ（ｔ＋Δｔ）が取得される。シャッタ５０５Ａ、５０５Ｂを制御することで、Δｔ（フレームレート）を非常に短い時間に設定することができる。
【０１６９】
図２４に示されるように、本実施形態では、第２の実施形態と同様、受光素子アレイ１１Ａ及び１１Ｂは、第１実施形態の受光素子アレイ１１と同一の構成を有しており、Ａ／Ｄ変換器アレイ１３Ａ及び１３Ｂも、第１実施形態のＡ／Ｄ変換器アレイ１３と同一の構成を有している。第２の実施形態と同様、本実施形態の並列処理機構１４にも、各受光素子アレイ１１Ａ及び１１ＢのＮ１個ｘＮ２個の受光素子１２０に１対１に対応して、演算素子４００が、Ｎ１列ｘＮ２行、２次元状に配列されている。このＮ２個の演算素子行に１対１に対応して、Ｎ２個の受光素子アレイ１１Ａ用転送用シフトレジスタライン４２０ＡとＮ２個の受光素子アレイ１１Ｂ用転送用シフトレジスタライン４２０Ｂとが設けられている。転送用シフトレジスタライン４２０Ａ、４２０Ｂは、それぞれ、対応するＡ／Ｄ変換器アレイ１３Ａ、１３Ｂに接続されている。また、第２実施形態同様、各転送用シフトレジスタライン４２０Ａには複数ビット（この場合、４ビット）の受光素子アレイ１１Ａ用転送用シフトレジスタ４１０Ａが、Ｎ１個、直列接続されており、各転送用シフトレジスタライン４２０Ｂには、複数ビット（この場合、４ビット）の受光素子アレイ１１Ｂ用転送用シフトレジスタ４１０Ｂが、Ｎ１個、直列接続されている。各演算素子４００が、対応する転送用シフトレジスタ４１０Ａ及び転送用シフトレジスタ４１０Ｂに接続されている。
【０１７０】
かかる構成のもと、受光素子アレイ１１Ａ及び１１Ｂで取得された二つの画像は、それぞれ、対応するＡ／Ｄ変換器アレイ１３Ａ，１３Ｂでデジタル信号に変換された後、単一の並列処理機構１４に送られ、それぞれ専用の転送用シフトレジスタ４１０Ａ、４１０Ｂを用いて、演算素子４００へ転送された後に、所定の演算処理が行われる。これにより、従来のフレームレートで取得した画像間では認識が困難であった高速での移動物体の動きを認識することが可能である。さらに、従来のフレームレート以上の遅れのない画像処理が可能となる。
【０１７１】
以下、本実施形態の動作について、図２５〜図２６のフローチャートを参照して、説明する。
【０１７２】
なお、本実施の形態では、あるフレームにおいて当該時刻ｔの画像を転送し、つぎのフレーム（ｔ＋Δｔ）を転送している間に、時刻ｔ及びその前の時刻（ｔ―Δｔ）の二つの画像を演算して、時刻ｔでの移動物体の速度を求める。そして、その次のフレーム（ｔ＋２Δｔ）を転送している間に、時刻（ｔ＋Δｔ）及び時刻ｔの２つの画像を演算して時刻ｔ＋Δｔでの速度を求めるようになっている。
【０１７３】
具体的には、まず、Ｓ７０１で、時刻ｔにおいて、ｔフレーム画像ｔ（ｘ、ｙ）を、対応するカメラ１１Ａから取得する。次に、Ｓ７０２、Ｓ７０３において、ｔ時刻フレーム画像を、対応する転送シフトレジスタ４１０Ａにて、対応する位置（ｘ、ｙ）の演算素子４００まで転送する。次に、Ｓ７０４で、当該転送位置（ｘ、ｙ）で、画像データｔ（ｘ、ｙ）を転送シフトレジスタ４１０Ａから演算素子４００へデータ転送する。なお、当該演算素子４００には、すでに、前回のフレーム、すなわち、ｔ―Δｔ時刻においてカメラ１１Ｂにて取得されたｔ―Δｔ時刻フレーム画像ｔ‘（ｘ、ｙ）が、対応する転送シフトレジスタ４１０Ｂにて転送され格納されている。
【０１７４】
次に、Ｓ８００にて、Δｔ時間画像間マッチング処理を行う。
【０１７５】
図２６に示すように、Δｔ時間画像間マッチング処理では、ｔ時刻画像のうちの一つのブロック（例えば３ｘ３画素）が、ｔ―Δｔ時刻画像の中のどの部分と一致度が高いかを、ｔ―Δｔ時刻画像内の対応ブロックとの相関値Ｃ（ｍ、ｎ）（最初はｍ＝０、ｎ＝０）を演算することで求める。
【０１７６】
ここで、Ｃ（ｍ，ｎ）は以下の式で表される。
Ｃ（ｍ、ｎ）＝Σ｜ｔ‘（ｘ、ｙ）−ｔ（ｘ＋ｍ、ｙ＋ｎ）｜
【０１７７】
ここで、ｘ、ｙはブロックに含まれる全ての画素点である。なお、相関値Ｃ（ｍ、ｎ）は、第２実施形態の相関値Ｃ（ｊ）と同様に演算することができる。得られた相関値Ｃ（ｍ、ｎ）を、演算処理部１５Ｂに転送格納する。
【０１７８】
次に、ｍ、ｎを検索範囲内で変更する（Ｓ８１１でＮｏ，Ｓ８１２）。具体的には、ｔ時刻画像データを近傍演算素子４００のレジスタマトリックス４０１間で、上下左右方向のいずれかに転送する。
【０１７９】
そして、Ｓ８１０において、再び、上記相関値Ｃ（ｍ、ｎ）の演算を行う。こうして、ｔ時刻画像データを近傍演算素子４００間で転送しながら、全検索範囲について相関値Ｃ（ｍ、ｎ）の演算を繰り返す（Ｓ８１１でＮｏ，Ｓ８１２）。なお、検索範囲は、対象物の予測される最高速度、レンズ５０１の縮小倍率、受光素子アレイ１１Ａ，１１Ｂのピクセルピッチなどの条件より定めるが、本機構が高速フレームレートを実現できること、すなわち、シャッタ時間間隔Δｔを短く設定することにより、例えば、ｍ、ｎとも、―１，０，＋１という小さい範囲とすることができる。
【０１８０】
全検索範囲について相関値Ｃ（ｍ、ｎ）が得られると（Ｓ８１１にてｙｅｓ）、Ｓ８１３にて、演算処理部１５Ｂに現在格納されている全相関値Ｃ（ｍ、ｎ）（ｍ＝―１，０，＋１，ｎ＝−１，０，＋１）の中で最小値であるＣ（ｍ、ｎ）に対する（ｍ、ｎ）を求める。求められた値（ｍ、ｎ）が、当該ｔ時刻画像中のブロックのｔ―Δｔ時刻画像中のマッチング位置を示す。
【０１８１】
こうして、Δｔ時間画像間マッチング処理（Ｓ８００）が終了する。
【０１８２】
次に、図２５に示すように、Ｓ７０６において、得られたｍ、ｎに基づいて、ずれ量（ｍ２＋ｎ２）１／２を演算する。このずれ量が当該ブロック内の対象画像のずれ量である。当該ずれ量より、対象物体の速度を演算する。なお、上記Δｔ時間画像間マッチング処理工程Ｓ８００のうち、Ｓ８１０〜Ｓ８１２の工程は、プログラム制御部１５Ａが演算素子４００を並列処理制御することにより行われる。一方、Ｓ８１３、Ｓ７０６では、演算処理部１５Ｂが対応する演算を行う。また、上記Δｔ時間画像間マッチング処理（Ｓ８００）を、受光面中の全ブロックについてそれぞれ行うことにより、Ｓ７０６において各ブロックイメージが示す対象のΔｔ間の位置ずれ量及び速度を求めることができる。
【０１８３】
以上のようにＳ８００〜Ｓ７０６で、時刻ｔ及び時刻ｔ―Δｔの画像間の演算処理が行われている間、受光部１１Ｂ及び対応する転送用シフトレジスタ４１０Ｂは、次のフレーム（時刻ｔ＋Δｔ）の処理へと移り（Ｓ７０５）、Ｓ７０１〜Ｓ７０３を実施することで、時刻ｔ＋Δｔにおける画像の並列処理機構１４への転送を行う。一方、各演算素子４００及び演算処理部１５Ｂも、その時刻ｔ及び時刻ｔ―Δｔ画像間の演算処理（Ｓ８００〜Ｓ７０６）が終了すると、次のフレーム（時刻ｔ＋Δｔ）の処理へと移行し（Ｓ７０７）、次のフレーム（時刻ｔ＋Δｔ）の画像データが対応する転送用シフトレジスタ４１０Ｂから演算素子４００のレジスタマトリックス４０１へと転送される（Ｓ７０４）と、時刻ｔ及び時刻ｔ＋Δｔの画像間の演算処理を行う（Ｓ８００〜Ｓ７０６）。このように、受光素子アレイ１１Ａ，１１Ｂでフレーム画像入力を交互に繰り返しつつ、同時に、連続する２つのフレーム画像間の演算処理を繰り返すようになっている。このため、演算素子４００及び演算処理部１５Ｂは、転送用シフトレジスタ４１０Ａまたは４１０Ｂが次のフレーム（時刻）の画像データを転送している間（Ｓ７０１〜Ｓ７０３）に演算処理（Ｓ８００〜Ｓ７０６）を行うことができ、それぞれ無駄な待ち時間を減らすことができる。
【０１８４】
上記本実施形態のセンサ装置１０は、例えば、自動追尾システムに応用可能で、マッチングした画像の位置に対して受光アレイ１１Ａ，１１Ｂを載置したカメラ台（外部機器）１０００を制御するようにすることができる。
【０１８５】
なお、上記説明では、２個の受光素子アレイを用いる場合について説明したが、もちろん受光素子アレイは３個以上あってもよい。その場合は、並列処理機構１４には、それぞれの受光素子アレイ専用の転送用シフトレジスタを設ける必要がある。
【０１８６】
以上、第２〜第４実施形態のセンサ装置１０によれば、複数の受光素子アレイ１１を用いる場合、それぞれの受光素子アレイ１１に対して専用の転送用シフトレジスタ４１０を設けたため、それぞれの受光素子アレイで取得した各画像の転送処理と演算処理を並列して行うことができ、効率的に転送を行うことができる。したがって、上述のように、立体視、色画像処理、高速移動物体認識の処理などに特に好適となっている。
【０１８７】
以下、本発明の第５の実施形態について図２７〜図３２を参照して説明する。
【０１８８】
各種の画像処理においては、入力画像と異なる画像データや画像処理のパラメータなど、入力画像の画像データとは別のデータが必要とされる。本実施形態は、かかる別のデータの転送をも含めた各種の画像処理演算を、より高速に処理することを可能としたものである。
【０１８９】
図２７に、本実施形態の高速視覚センサ装置１０の構成図を示す。本実施形態の高速視覚センサ装置１０は、第１実施形態の高速視覚センサ装置１０（図１）とは、データバッファ／データ生成装置１７を備えた点、及び、当該データバッファ／データ生成装置１７からの情報を各演算素子４００に転送するための情報転送用シフトレジスタ４１１を並列処理機構１４内に備えた点を除き、同一である。
【０１９０】
より詳しくは、本実施形態の並列処理機構１４では、Ｎ２個の演算素子行に１対１に対応して、Ｎ２個の画像転送用シフトレジスタライン４２０の他に、Ｎ２個の情報転送用シフトレジスタライン４３０が設けられている。当該Ｎ２個の情報転送用シフトレジスタライン４３０は、データバッファ／データ生成装置１７に接続されている。また、画像転送用シフトレジスタライン４２０同様、各情報転送用シフトレジスタライン４３０には、複数ビット（この場合、４ビット）の情報転送用シフトレジスタ４１１が、Ｎ１個、直列接続されている。各演算素子４００が、対応する画像転送用シフトレジスタ４１０の他、当該対応する情報転送用シフトレジスタ４１１に接続されている。
【０１９１】
データバッファ／データ生成装置１７は、制御回路１５の指示により、画像処理演算に必要な所定の外部データ（演算データ及び／または制御データ）を情報転送用シフトレジスタ４１１に送受信するためのものである。ここで、演算データとは、例えば、係数データ等、画像処理演算に必要なデータである。制御データとは、例えば、ある演算をする／またはしないといった、演算の制御内容を示すデータである。情報転送用シフトレジスタ４１１は、対応する演算素子４００に、データバッファ／データ生成装置１７から受信した外部データを転送する。
【０１９２】
なお、データバッファ１７は、図２８に示したように、並列処理機構１４と同一の基板上に形成しても、あるいは、制御回路１５と同一の基板上に形成してもよく、あるいはいずれかとともに集積化してもよい。  
【０１９３】
本実施形態によれば、図２９に示すように、各演算素子４００に対し、画像データ転送用シフトレジスタ４１０とは別に情報転送用シフトレジスタ４１１が設けられている。したがって、データバッファ／データ生成装置１７は、制御回路１５からの指示により、処理内容に応じた制御用データ及び／又は演算用データを準備し、画像データの転送と並行して、これらのデータを転送用シフトレジスタ４１１を介して、それぞれの受光素子１２０に対応する演算素子４００のレジスタマトリックス４０１へと転送する。転送用シフトレジスタ４１１自体の動作は、転送用シフトレジスタ４１０とほぼ同じであるので、その詳細な説明は省略する。
【０１９４】
本実施形態では、第１〜４の実施形態と同様、すべての演算素子４００において同等の演算を行うＳＩＭＤと呼ばれる方式のほか、制御データ転送用のシフトレジスタ４１１を用いて、各演算素子４００に一律でない制御データを転送することにより、演算素子ごと、つまり画素ごとに違う演算をさせて、より柔軟性のある処理を行うことが可能である。
【０１９５】
以下に、こうした制御データ転送用のシフトレジスタ４１１を用いた処理の実例を詳細に説明する。例えば、人間の目の機能として「画像の中心部分は高解像度で観察し、周辺部分は低解像度で観察したい」という機能があるが、これに相当する画像処理を行う場合を例に説明する。
【０１９６】
こうした処理は、中心部分と周辺部分で処理内容を変えたり、重みづけを変えたりすることで実現できる。
【０１９７】
例えば、解像度を周辺部分で低くするには、スムージングという下記の４近傍演算を行うことが考えられる。
【数１】
2010136413.tif 000004
【０１９８】
ここで、Ｉ（ｘ，ｙ）は画素位置（ｘ，ｙ）の入力画像データであり、Ｉ‘（ｘ，ｙ）が処理後の画素位置（ｘ，ｙ）の画像データである。Ｄ１〜Ｄ６は、重み付け平均の重み変数である。これらの重み変数を各画素毎に変えることでスムージングの度合を変えることができる。つまり、スムージングの必要がない中心部分では、例えば、Ｄ１＝１、Ｄ２〜Ｄ５＝０とし、周辺部分では強いスムージングをするため、例えば、Ｄ１＝２、Ｄ２〜Ｄ５＝１とする。そして、滑らかなスムージングが行われるよう画素位置に応じて重み変数を設定してデータバッファ１７に格納しておく。計算時には、これらの変数を制御データ転送用シフトレジスタ４１１を介して各演算素子４００に転送することで、画素毎に異なる演算を行わせることができる。
【０１９９】
このように、各画素毎に異なったフィルタ関数を用いた演算が可能となるため、解像度よりも高速演算を重視する場合には、例えば、２ｘ２＝４画素毎に画像データを加算平均した後、縦方向エッジ、横方向エッジ、右斜め、左斜めのエッジ抽出を４画素にそれぞれ行わせて、四方向のエッジ検出を同時に検出することも可能となる。
【０２００】
以下、本実施形態のセンサ装置１０の動作を、図３０のフローチャートを参照して説明する。
【０２０１】
まず、Ｓ９０１では、受光素子アレイ１１からの画像データを、Ａ／Ｄ変換器アレイ１３を介して、並列処理機構１４へ出力させる。同時に、データバッファ／データ生成装置１７に、演算コマンドを並列処理機構１４へ出力させる。
【０２０２】
ここで、演算コマンドは、３ｘ３マスクの重み付けを示しており、例えば、中心部分は高解像度、周辺部分は低解像度なフィルタリングをさせたい場合、中心部に転送すべき重み付けマスクは、自分自身の画素のみ８倍するものであり、周辺部に転送すべき重み付けマスクは、上下左右の画素とのスムージングを行うものとする。具体的には、データバッファ／データ転送装置１７は、予め、２種類のマスクデータ：マスクＡ＝（０，０，０，０，８，０，０，０，０）、及び、マスクＢ＝（０，１，０，１，４，１，０，１，０）を準備している。マスクＡは、自分自身の画素のみ８倍するものであり、マスクＢは、上下左右の画素とのスムージングを行うものである。並列処理機構１４が１２８ｘ１２８個の演算素子４００を有しているとする。すなわち、各演算素子の座標（ｘ、ｙ）が、ｘ＝０〜１２７，ｙ＝０〜１２７であるとする。この場合、マスクＡは、並列処理機構１４の中央部分に配列されている演算素子４００、具体的には、その座標位置（ｘ、ｙ）がｘ＝３２〜９５かつｙ＝３２〜９５である演算素子４００に対して使用されることになる。一方、マスクＢは、並列処理機構１４の周辺部分、具体的には、座標位置（ｘ、ｙ）がｘ＝０〜３１または９６〜１２７かつｙ＝０〜３１または９６〜１２７の演算素子４００に対して使用されることになる。
【０２０３】
Ｓ９０２〜Ｓ９０３では、Ａ／Ｄ変換器アレイ１３からの画像データＩ（ｘ，ｙ）が、転送用シフトレジスタ４１０を次々と転送され、対応する位置（ｘ、ｙ）の演算素子４００の位置まで転送される。同時に、データバッファ／データ生成装置１７からのマスクＡ及びマスクＢが、情報転送用シフトレジスタ４１１を次々と転送され、対応する位置（ｘ、ｙ）の演算素子４００の位置まで転送される。ここで、マスクＡは、座標位置（ｘ、ｙ）（３２≦ｘ≦９５かつ３２≦ｙ≦〜９５）に転送され、マスクＢは、座標位置（ｘ、ｙ）（０≦ｘ≦３１または９６≦ｘ≦１２７、かつ、ｙ＝０≦ｙ≦３１または９６≦ｙ≦〜１２７）に転送される。
【０２０４】
上記転送が終了すると、Ｓ９０４において、画像データＩ（ｘ，ｙ）が、転送用シフトレジスタ４１０から対応する演算素子４００のレジスタマトリックス４０１へ転送される。次に、Ｓ９０５において、マスクデータＡまたはＢが、情報転送用シフトレジスタ４１１から対応する演算素子４００のレジスタマトリックス４０１へ転送される。
【０２０５】
次に、Ｓ９０７で、各演算素子４００は、８近傍の入力画像データＩ（ｘ−１，ｙ−１）、Ｉ（ｘ，ｙ−１）、Ｉ（ｘ＋１，ｙ−１）、Ｉ（ｘ−１，ｙ）、Ｉ（ｘ＋１，ｙ）、Ｉ（ｘ−１，ｙ＋１）、Ｉ（ｘ，ｙ＋１）、及び、Ｉ（ｘ＋１，ｙ＋１）を受け取った後、Ｓ９０５で転送格納されたマスクＡまたはＢを使用して、これら８近傍入力画像データと自身の入力画像データＩ（ｘ、ｙ）に対して、以下の演算を行う。
Ｉ‘（ｘ，ｙ）= ｍａｓｋ（０）ｘＩ（ｘ−１，ｙ−１）
＋ ｍａｓｋ（１）ｘＩ（ｘ，ｙ−１）
＋ ｍａｓｋ（２）ｘＩ（ｘ＋１，ｙ−１）
＋ ｍａｓｋ（３）ｘＩ（ｘ−１，ｙ）
＋ ｍａｓｋ（４）ｘＩ（ｘ，ｙ）
＋ ｍａｓｋ（５）ｘＩ（ｘ＋１，ｙ）
＋ ｍａｓｋ（６）ｘＩ（ｘ−１，ｙ＋１）
＋ ｍａｓｋ（７）ｘＩ（ｘ，ｙ＋１）
＋ ｍａｓｋ（８）ｘＩ（ｘ＋１，ｙ＋１）
Ｉ“（ｘ，ｙ）= Ｉ‘（ｘ，ｙ）／８
【０２０６】
ここで、中央部分に位置する演算素子４００では、マスクＡ＝（０，０，０，０，８，０，０，０，０）が転送されているので、 ｍａｓｋ（０）〜 ｍａｓｋ（３）＝ ｍａｓｋ（５）〜 ｍａｓｋ（８）＝０，及び、ｍａｓｋ（４）＝８として演算が行われる。また、周辺部分に位置する演算素子４００では、マスクＢ＝（０，１，０，１，４，１，０，１，０）が転送されているので、 ｍａｓｋ（０）、ｍａｓｋ（２）、ｍａｓｋ（６）、ｍａｓｋ（８）＝０， ｍａｓｋ（１）、ｍａｓｋ（３）、ｍａｓｋ（５）、ｍａｓｋ（７）＝１，及び、ｍａｓｋ（４）＝４として、演算が行われる。このように、本実施形態では、画素毎に異なるマスク演算係数を設定した画像処理演算が実現できる。
【０２０７】
なお、８近傍入力画像データのうち、４近傍入力画像データＩ（ｘ，ｙ−１）、Ｉ（ｘ−１，ｙ）、Ｉ（ｘ＋１，ｙ）、及び、Ｉ（ｘ，ｙ＋１）は４近傍の演算素子４００のシフトレジスタマトリックスから直接転送される。一方、残りの８近傍入力画像データＩ（ｘ−１，ｙ−１）、Ｉ（ｘ＋１，ｙ−１）、Ｉ（ｘ−１，ｙ＋１）、及び、Ｉ（ｘ＋１，ｙ＋１）は、４近傍の演算素子間の転送を２回繰り返すことで転送される。
【０２０８】
得られた処理画像Ｉ“（ｘ，ｙ−１）は、演算素子４００より演算処理部１５Ｂに出力され、演算処理部１５Ｂにおいて必要な画像処理演算に供される。処理画像Ｉ“（ｘ，ｙ）は、中心部は入力画像そのまま、周辺部はスムージングされてぼかされた画像となっている。したがって、この画像を利用すれば、たとえば、人間の目の処理のように、周辺部分をぼけてマッチングさせることが可能となる。このため、演算処理部１５Ｂでは、当該処理画像Ｉ“（ｘ，ｙ）に基づいて、画像中の周辺部にある物について大まかなマッチングでおおよその位置と形の把握を行い、その結果に基づいて、受光部１１を載置したカメラ載置台たる外部機構１０００を移動し当該物をカメラの中心部に持っていき、今度は細かいマッチングを行うことを可能とするような制御動作を行うことができる。
【０２０９】
また、各演算素子４００へと画像データ及びマスクを転送した転送用シフトレジスタ４１０及び４１１は、各演算素子４００がＳ９０７の演算処理を行っている間に、次のフレームの処理へと移り（Ｓ９０６）、Ｓ９０１〜Ｓ９０３を実施する。一方、各演算素子４００も、その演算処理（Ｓ９０７）が終了すると、次のフレームの処理へと移行し（Ｓ９０８）、次のフレームの画像データが転送用シフトレジスタ４１０から演算素子４００のレジスタマトリックス４０１へと転送され、マスクデータが情報転送用シフトレジスタ４１１から演算素子４００のレジスタマトリックス４０１へと転送される（Ｓ９０４、Ｓ９０５）。これを繰り返すことにより、演算素子４００は、転送用シフトレジスタ４１０及び４１１が次のフレーム用のデータを転送している間（Ｓ９０１〜Ｓ９０３）に演算処理（Ｓ９０７）を行うことができ、それぞれ無駄な待ち時間を減らすことができる。
【０２１０】
図３１、図３２は、シフトレジスタ４１０、４１１を有していない比較例の並列処理機構と、本実施形態の並列処理機構における転送・演算処理の処理タイミングを比較した図である。シフトレジスタ４１０、４１１を有しておらず、演算素子で転送処理も行う比較例の並列処理機構では、図３１に示されるように、時分割で画像転送、演算・制御信号転送、画像演算を行う必要がある。したがって、ある画像の処理開始から次の画像の処理開始までの時間である１フレームは、最低でも（画像転送時間）＋（演算・制御信号転送時間）＋（画像演算時間）が必要となる。
【０２１１】
これに対して、本実施形態の並列処理機構では、図３２に示されるように、画像転送、演算・制御信号転送、画像演算のそれぞれを個別に並列して処理することが可能なため、１フレームは、（画像転送時間）、（演算・制御信号転送時間）、（画像演算時間）のうち最も時間のかかる処理時間まで短縮することが可能である。このため、実時間処理を実現することが可能となる。
【０２１２】
以上、本実施形態によれば、転送用シフトレジスタ４１０，４１１で、それぞれ、入力画像データ、演算・制御データを転送することで転送と演算を並列処理することにより、外部からデータ転送の必要な演算処理も高速で行うことができる。
【０２１３】
以下、第６の実施形態について、図３３〜図３５を参照して説明する。
【０２１４】
図３３は、本実施形態に係る高速視覚センサ装置１０を示すブロック図であり、図３４は、その演算素子４００と転送用シフトレジスタ４１２部分の構成図である。この装置においては、図２７、図２９に示される第５の実施形態と異なり、並列処理機構１４の各演算素子行ｊに対して、１ライン構成の画像データ／コマンド転送用シフトレジスタ４４０を設けている。すなわち、本実施形態では、Ｎ２個の演算素子行に１対１に対応して、Ｎ２個の画像データ／コマンド転送用シフトレジスタライン４４０が設けられている。さらに、それぞれのＡ／Ｄ変換器２１０から送られてきた入力画像データを一時的に保持する画像バッファ６０１をＮ２個配列させた画像バッファアレイ１８と、画像バッファ６０１からの信号とデータバッファ／データ生成装置１７からの信号を時分割混合する時分割混合器６０２をＮ２個配列させた混合器アレイ１９とを備えている。Ｎ２個の画像データ／コマンド転送用シフトレジスタライン４４０は、それぞれ、混合器アレイ１９のＮ２個の時分割混合器６０２に１対１に対応して接続されている。また、各画像データ／コマンド転送用シフトレジスタライン４４０には、複数ビット（この場合、４ビット）の情報転送用シフトレジスタ４１２が、Ｎ１個、直列接続されている。各演算素子４００が、対応する画像データ／コマンド転送用シフトレジスタ４１２に接続されている。
【０２１５】
この実施形態では、第５の実施形態が画像データと演算・制御データとを別々のシフトレジスタ４１０、４１１で転送していたのとは異なり、両者を時分割混合器６０２で時分割混合して単一のシフトレジスタ４１２で転送することを特徴としている。現在のシステム全体の速度を決めているのはＡ／Ｄ変換器２１０の変換速度（1Mbps(bit-per-second)）であり、転送用シフトレジスタ４１２の転送速度（10-100Mbps）から考えれば、１フレーム内での多重転送は十分可能だからである。
【０２１６】
図３５に本実施形態の並列処理機構における転送・演算処理の処理タイミングを示す。本実施形態も図３２に処理タイミングを示す第５の実施形態と同様に、画像演算と転送とをパイプライン的に並行処理することが可能なので、図３１に処理タイミングを示した比較例の並列処理機構と異なり、（画像・演算・制御信号転送時間）、（画像演算時間）のうち最も時間のかかる処理時間まで処理時間を短縮することが可能である。このため、実時間処理を実現することが可能となる。  
【０２１７】
以上のように、第５及び第６実施形態によれば、画像データだけでなく、データバッファ１７に格納された演算・制御データを、転送用シフトレジスタを通じて演算素子４００に転送することで、高速な演算、適応的な演算が実現できる。演算・制御データは、第５実施形態のように専用の転送用シフトレジスタを用いて転送しても、第６実施形態のように画像データと共通のシフトレジスタを用いて転送を行ってもよい。
【０２１８】
本発明に係る高速視覚センサ装置は、前述した実施形態に限定されず、種々の変更が可能である。
【０２１９】
例えば、第２〜第４実施形態においても、複数の受光素子アレイ１１からの画像データを、複数の転送用シフトレジスタ４１０を使用して転送する代わりに、第６実施形態の変更例のように、画像バッファアレイ１８と時分割混合器アレイ１９とを用いて、単一の転送用シフトレジスタ４１２を時分割使用して転送するようにしても良い。
【０２２０】
また、上述の第１〜第６実施形態では、Ａ／Ｄ変換器２１０がチャージアンプ２２１を含む構成となっているが、 Ａ／Ｄ変換器２１０とチャージアンプ２２１とを別体とし、図３６のように、Ｎ２個のチャージアンプ２２１からなるアンプアレイ１２を受光素子アレイ１１に接続させ、 さらに、Ｎ２個のＡ／Ｄ変換器２１０からなるＡ／Ｄ変換器アレイ１３を当該アンプアレイ１２と並列処理機構１４との間に設けるようにしても良い。この場合には、アンプアレイ１２内の各アンプ２２０は、受光素子アレイ１１の対応する行１１０上の計Ｎ１個の受光素子１２０から出力される電荷を順次電圧信号に変換し、得られたアナログ電圧信号を、Ａ／Ｄ変換器アレイ１３内の対応するＡ／Ｄ変換器２１０に出力する。 Ａ／Ｄ変換器２１０は、当該チャージアンプ２２１からのアナログ電圧信号を順次Ａ／Ｄ変換し、並列処理機構１４に供給する。
【０２２１】
また、第５及び第６実施形態の構成を、第２〜４実施形態のような受光素子アレイ１１を複数個備える構成に適用しても良い。
【産業上の利用可能性】
【０２２２】
本発明に係る高速視覚センサ装置は、ＦＡロボット制御の他、立体視、色画像処理、高速移動物体認識処理などの視覚認識処理に幅広く用いられる。
【符号の説明】
【０２２３】
１０・・・高速視覚センサ装置  １１・・・受光素子アレイ  １３・・・Ａ／Ｄ変換器アレイ  １４・・・並列処理機構  １５・・・制御回路  １６・・・インストラクション／コマンドバス  １５Ａ・・・プログラム制御部  １５Ｂ・・・演算処理部  １２０・・・受光素子  ２１０・・・Ａ／Ｄ変換器  ４０・・・演算素子アレイ  ４００・・・演算素子  ４２０・・・転送用シフトレジスタライン  ４１０・・・転送用シフトレジスタ  １１Ｌ・・・左目用受光素子アレイ  １１Ｒ・・・右目用受光素子アレイ  ４２０Ｌｊ・・・左用転送用シフトレジスタライン  ４１０Ｌ・・・左用転送用シフトレジスタ  ４２０Ｒｊ・・・右用転送用シフトレジスタライン  ４１０Ｒ・・・右用転送用シフトレジスタ  １５Ｃ・・・画素ずれ量記憶装置  １１ｂ、１１ｇ、１１ｒ・・・受光素子アレイ  ５０３ｂ、５０３ｇ、５０３ｒ・・・フィルタ  ４２０ｒ・・・ｒ用転送用シフトレジスタライン  ４１０ｒ・・・ｒ転送用シフトレジスタ  ４２０ｇ・・・ｇ用転送用シフトレジスタライン  ４１０ｇ・・・ｇ転送用シフトレジスタ  ４２０ｂ・・・ｂ用転送用シフトレジスタライン  ４１０ｂ・・・ｂ転送用シフトレジスタ  ５０２・・・クロスダイクロイックプリズム  ５０４・・・ビームスプリッタ  ５０５Ａ、５０５Ｂ・・・シャッタ  １１Ａ、１１Ｂ・・・受光素子アレイ  ４２０Ａ・・・受光素子アレイ１１Ａ用転送用シフトレジスタライン  ４２０Ｂ・・・受光素子アレイ１１Ｂ用転送用シフトレジスタライン  ４１０Ａ・・・受光素子アレイ１１Ａ用転送用シフトレジスタ  ４１０Ｂ・・・受光素子アレイ１１Ｂ用転送用シフトレジスタ  １７・・・データバッファ／データ生成装置  ４３０・・・情報転送用シフトレジスタライン  ４１１・・・情報転送用シフトレジスタ  １８・・・画像バッファアレイ  ６０１・・・画像バッファ  １９・・・混合器アレイ  ６０２・・・時分割混合器  ４４０・・・画像データ／コマンド転送用シフトレジスタライン  ４１２・・・画像データ／コマンド転送用シフトレジスタ
【図１】
2010136413.tif 000005
【図２】
2010136413.tif 000006
【図３（Ａ）】
2010136413.tif 000007
【図３（Ｂ）】
2010136413.tif 000008
【図４】
2010136413.tif 000009
【図５】
2010136413.tif 000010
【図６】
2010136413.tif 000011
【図７（Ａ）】
2010136413.tif 000012
【図７（Ｂ）】
2010136413.tif 000013
【図８】
2010136413.tif 000014
【図９】
2010136413.tif 000015
【図１０】
2010136413.tif 000016
【図１１】
2010136413.tif 000017
【図１２】
2010136413.tif 000018
【図１３】
2010136413.tif 000019
【図１４（Ａ）】
2010136413.tif 000020
【図１４（Ｂ）】
2010136413.tif 000021
【図１５】
2010136413.tif 000022
【図１６】
2010136413.tif 000023
【図１７】
2010136413.tif 000024
【図１８】
2010136413.tif 000025
【図１９】
2010136413.tif 000026
【図２０】
2010136413.tif 000027
【図２１】
2010136413.tif 000028
【図２２】
2010136413.tif 000029
【図２３】
2010136413.tif 000030
【図２４】
2010136413.tif 000031
【図２５】
2010136413.tif 000032
【図２６】
2010136413.tif 000033
【図２７】
2010136413.tif 000034
【図２８】
2010136413.tif 000035
【図２９】
2010136413.tif 000036
【図３０】
2010136413.tif 000037
【図３１】
2010136413.tif 000038
【図３２】
2010136413.tif 000039
【図３３】
2010136413.tif 000040
【図３４】
2010136413.tif 000041
【図３５】
2010136413.tif 000042
【図３６】
2010136413.tif 000043