(57)【要約】【課題】  簡単な回路構成で、基本的な画像演算を高速に処理することが可能な多画素数の高速視覚センサ装置を提供する。【解決手段】  受光素子アレイ１１の各行の全受光素子１２０に対して１個のＡ／Ｄ変換器２１０を対応させたＡ／Ｄ変換器アレイ１３と、受光素子１２０と１対１に対応する演算素子４００と転送用シフトレジスタ４１０とからなる並列処理機構１４とを備え、さらに、演算素子４００にデータ転送を行うデータバス１７、１８とデータバッファ１９、２０を備えている。演算素子４００は並列処理により近傍画素間の画像処理演算を高速で行うことができ、データバス１７、１８を利用することで外部からデータ転送の必要な演算処理も高速で行うことができる。【選択図】図１
2010063173.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を発生する水平シフトレジスタ３２０と、リセット指示信号Ｒを発生する制御信号部３４０とから構成されている。
【００４４】
次に、並列処理機構１４の構成を説明する。
【００４５】
既述のように、並列処理機構１４には、第１図に示すように、受光素子アレイ１１のＮ２個の水平受光部１１０ｊ（ｊ＝１〜Ｎ２）及びＡ／Ｄ変換器アレイ１３のＮ２個のＡ／Ｄ変換器２１０ｊ（ｊ＝１〜Ｎ２）に対応して、Ｎ２個の転送用シフトレジスタライン４２０ｊ（ｊ＝１〜Ｎ２）が設けられている。各転送用シフトレジスタライン４２０ｊ（ｊ＝１〜Ｎ２）には、複数ビット（この場合、４ビット）の転送用シフトレジスタ４１０ｉ，ｊが、Ｎ１個、直列接続されている。第６図に示すように、コントローラ１５が、インストラクション／コマンドバス１６を介して、各転送用シフトレジスタ４１０ｉ，ｊ（ｉ＝１〜Ｎ１、ｊ＝１〜Ｎ２）に接続されている。コントローラ１５は、転送開始信号を各シフトレジスタ４１０ｉ，ｊに出力することより、Ａ／Ｄ変換器アレイ１３からのデータを必要な演算素子４００の位置まで転送させる。
【００４６】
また、並列処理機構１４には、Ｎ１個ｘＮ２個の受光素子１２０ｉ，ｊ（ｉ＝１〜Ｎ１，ｊ＝１〜Ｎ２）に１対１に対応して、演算素子４００ｉ，ｊ（ｉ＝１〜Ｎ１，ｊ＝１〜Ｎ２）がＮ１ｘＮ２個２次元状に配列されている。各演算素子４００ ｉ，ｊ（ｉ＝１〜Ｎ１，ｊ＝１〜Ｎ２）は、対応するシフトレジスタライン４２０ｊ（ｊ＝１〜Ｎ２）の対応する転送用シフトレジスタ４１０ｉ，ｊ（ｉ＝１〜Ｎ１，ｊ＝１〜Ｎ２）に接続されている。第６図に示すように、コントローラ１５が、インストラクション／コマンドバス１６を介して各演算素子４００ ｉ，ｊに接続されており、当該演算素子４００における演算処理を制御する。
【００４７】
次に、出力バス１５５について説明する。
【００４８】
第６図に示すように、全演算素子４００が単一の出力バス１５５に接続されている。ここで、出力バス１５５は、単一の１ビット信号線から構成されている。当該出力バス１５５は、全演算素子４００に接続されているため、全演算素子４００の出力のＯＲ論理演算結果を制御回路１５に通信するワイヤードＯＲ回路（wired OR回路）の機能を有する。このため、制御回路１５は、全演算素子４００の出力信号をまとめてから受け取ることができ、スキャンを用いることなく高速に出力信号を受け取ることができる。
【００４９】
次に、ｘ方向データバス１７とｙ方向データバス１８について説明する。
【００５０】
なお、ｘ方向データバス１７とｙ方向データバス１８としては、例えば、制御回路１５から演算素子４００へのデータ転送／書き込み機能のみを有する一方向性のデータバスを利用することができる。
【００５１】
ｘ方向データバス１７は、第１図に示すように、複数（この場合Ｎ１個）の１ビットデータライン１７０ｉ（１≦ｉ≦Ｎ１）から構成されている。各１ビットデータライン１７０ｉが、対応する演算素子列ｉに位置する全Ｎ２個の演算素子４００（ｉ、ｊ）（１≦ｊ≦Ｎ２）と接続されている。各１ビットデータライン１７０ｉはまた、ｘ方向データバッファ１９を介して、制御回路１５に接続されている。かかる構成により、各１ビットデータライン１７０ｉは、制御回路１５からのデータを、ｘ方向データバッファ１９を介して、対応する列ｉ内に位置する各演算素子４００（ｉ、ｊ）に転送するようになっている。
【００５２】
同様に、ｙ方向データバス１８は、複数（この場合Ｎ２個）の１ビットデータライン１８０ｊ（１≦ｊ≦Ｎ２）から構成されている。各１ビットデータライン１８０ｊが、対応する演算素子行ｊに位置する全Ｎ１個の演算素子４００（ｉ，ｊ）（１≦ｉ≦Ｎ１）と接続されている。各１ビットデータライン１８０ｉはまた、ｙ方向データバッファ２０を介して、制御回路１５に接続されている。かかる構成により、各１ビットデータライン１８０ｉは、制御回路１５からのデータを、ｙ方向データバッファ２０を介して、当該対応する行ｊ内に位置する各演算素子４００（ｉ，ｊ）に転送するようになっている。
【００５３】
次に、演算素子４００の構造について、第６図に示すブロック図を参照して、より詳細に説明する。
【００５４】
演算素子４００は、各素子が共通の制御信号で制御されるＳＩＭＤ型の並列処理を行う構造になっており、１素子あたりのトランジスタ数を削減し、並列処理機構１４の集積化を図り、素子数を増やすことができるようになっている。
【００５５】
より詳しくは、演算素子４００は、４ｘ８ビットのランダムアクセス可能な１ビットシフトのレジスタマトリックス４０１と、Ａラッチ４０２、Ｂラッチ４０３、及び、演算論理ユニット（ＡＬＵ）４０４とで構成されている。レジスタマトリックス４０１は、データ保持と入出力のためのものである。より詳しくは、レジスタマトリックス４０１は、対応する受光素子１２０の出力信号に相当するデジタル信号Ｄ１をシフトレジスタ４１０から入力し収容するためのものである。レジスタマトリックス４０１はまた、４近傍の演算素子４００中のレジスタマトリックス４０１と直接接続しており、これらに収容されているデジタル信号をも収容することができる。レジスタマトリックス４０１は、さらに、ｘ方向データバス１７の対応するｘ方向データライン１７０ｉ、及び、ｙ方向データバス１８の対応するｙ方向データライン１８０ｊに接続され、両方のデータバスを利用してデータ転送を行うことができるようになっている。ＡＬＵ４０４は、下位ビットから１ビットずつ順次演算する順次ビットシリアル演算を行うためのものである。Ａラッチ４０２、Ｂラッチ４０３は、レジスタマトリックス４０１に保持されている信号を収容し、ＡＬＵ４０４での演算に供するためのものである。
【００５６】
以上の構成により、演算素子４００では、Ａラッチ４０２、Ｂラッチ４０３がそれぞれレジスタマトリクス４０１内の任意のレジスタからデータを読み込み，ＡＬＵ４０４がそのデータをもとに演算を行なう。演算結果は、再び、レジスタマトリクス４０１内の任意のレジスタに書き込まれる。演算素子４００は、この作業を１サイクルとして繰り返し行うことで、さまざまな演算を実行できるようになっている。
【００５７】
より詳しくは、ＡＬＵ４０４は、１ビットの演算器で、論理積（ＡＮＤ），論理和（ＯＲ），排他的論理和（ＸＯＲ），加算（ＡＤＤ）、Ｃａｒｒｙつき加算などの演算機能を有している。１度に実行できるのは１ビットの演算だけであり，多ビット演算は１ビットずつシリアルに演算を行なうことで実行する。複雑な演算は上記演算機能の組み合わせとして記述できるため、ＡＬＵ４０４に対し上記演算機能の中から毎回一つずつを選択させながら繰り返し演算を行わせることで、複雑な演算を実現するようになっている。例えば、乗算は加算の組み合わせとして記述できるため、加算を複数回繰り返し行うことで実現する。減算は、引こうとする数をビット反転して１を足すことで負の数とし、これを足し算することで実現できる。割り算については、例えば、割る数を８，４，２というような数字にして、ビットシフトする（例えば、「割る数が８」の場合、ビットを３ビット右にシフトする）ことにより実現する。さらに、絶対値を求めるためには、マイナスの数（サインビットが１）に対して、符号反転、すなわち、ビット反転して１を足すことで、実現する。
【００５８】
レジスタマトリックス４０１は、第７（Ａ）図に示すように、ランダムにアクセスできる１ビットのレジスタ４０１０を２４個並べ、さらに、外部や近傍演算素子４００との入出力用に８個の機能レジスタ４０１２を並べた構成となっており、これら全体が１つのアドレス空間として扱われる。第６図において、各レジスタ４０１０、４０１２内に記載されている数は、当該レジスタに割り当てられたアドレスを示す。具体的には、２４個のレジスタ４０１０にアドレス「０」〜「２３」が割り振られ、８個の機能レジスタ４０１２にアドレス「２４」〜「３１」が割り振られている。かかる構成により、レジスタ内のデータを読み書きするのと同じ方法で入出力データとアクセスできるようになっている。
【００５９】
第７（Ａ）図に示すように、レジスタマトリックス４０１は、これら３２個のレジスタ４０１０，４０１２に接続された１個のＯＲ回路４０１４をさらに備えており、レジスタ４０１０，４０１２は、すべて、このＯＲ回路４０１４を介して、Ａラッチ４０２及びＢラッチ４０３に接続されている。レジスタ４０１０，４０１２の内の一つのアドレスが選択されると、選択されたレジスタのみがその内容を出力し，選択されていないレジスタは全て０を出力する。全てのレジスタのＯＲをとったものが、レジスタマトリックス４０１全体の出力として、Ａラッチ４０２またはＢラッチ４０３に出力される。
【００６０】
機能レジスタ４０１２は主に入出力に用いられる。具体的には、アドレス「２９」の機能レジスタ４０１２は、対応する転送用シフトレジスタ４１０に接続されており、当該転送用シフトレジスタ４１０からの入力に用いられる。また、アドレス「２４」の機能レジスタ４０１２は、上下左右の４近傍の演算素子４００のレジスタマトリックス４０１への出力に用いられる。アドレス「２４」〜「２７」の機能レジスタ４０１２は、それぞれ、当該４近傍の演算素子４００のうちの対応する１個の演算素子４００のレジスタマトリックス４０１からの入力に用いられる。アドレス「２８」の機能レジスタ４０１２は、出力バス１５５に接続されており、制御回路１５への出力アドレスとして用いられる。なお、全演算素子４００（ｉ，ｊ）におけるレジスタマトリックス４０１のアドレス「２８」が当該単一の出力バス１５５に接続されている。アドレス「３０」の機能レジスタ４０１２は、ｙ方向データバス１８内の対応するｙ方向データライン１８０ｊに接続されており、当該ｙ方向データライン１８０ｊからのデータの入力に用いられる。また、アドレス「３１」の機能レジスタ４０１２は、ｘ方向データバス１７内の対応するｘ方向データライン１７０ｉに接続されており、当該ｘ方向データライン１７０ｉからのデータの入力に用いられる。なお、アドレス「２８」の機能レジスタ４０１２は、読み込み時には常に０を読み込むようになっている。
【００６１】
制御回路１５がレジスタマトリクス４０１へのアクセスとＡＬＵ４０４の演算処理を制御することにより、演算素子４００における演算及び入出力の全処理を制御する。例えば、転送用シフトレジスタ４１０からの入力をレジスタマトリックス４０１のアドレス「０」に書き込みたいときは，０（レジスタアドレス「２８」）とセンサ入力（レジスタアドレス「２９」）のＯＲをとってレジスタアドレス「０」に書き込む命令を演算素子４００に出力する。なお、制御回路１５は、第７（Ｂ）図に示すように，基本クロックＣＬＫの４倍を１サイクルとし，この間に、各種クロックＣＬＫ２，ＣＬＫ４を供給しながら、Ａラッチの読み込み、Ｂラッチの読み込み，演算結果の書き込みを順に行なう。かかる処理を複数サイクル繰り返し行うことで、レジスタマトリックス４０１への必要な入出力とＡＬＵ４０４による演算を行う。
【００６２】
次に、第４図〜第６図を参照して、本実施形態の動作について説明する。
【００６３】
まず、画像取り込み部１１及び１３の動作について説明する。
【００６４】
画像取り込み制御部３００は、まず、リセット信号Ｒを有為に設定し、第５図に示す可変容量部２２２のＳＷ１１〜ＳＷ１４を全て「ＯＮ」、ＳＷ２１〜ＳＷ２４を全て「ＯＦＦ」状態にする。これにより、チャージアンプ２２１の入力端子と出力端子間の容量値をＣ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の光電出力を読み出し、これに相当するデジタル信号を送出する。以下、水平走査信号を切り替えて、全受光素子１２０の光電出力を読み出し、相当するデジタル信号を並列処理機構１４に出力する。
【００７０】
次に、演算素子４００の動作を第６図により説明する。
【００７１】
Ａ／Ｄ変換されたデジタル信号は、転送用のシフトレジスタ４１０を介してそれぞれの受光素子１２０ｉ，ｊに対応する演算素子４００ｉ，ｊのレジスタマトリックス４０１に送られる。この転送は、対応する転送用シフトレジスタライン４２０ｊ内において、転送用シフトレジスタ４１０に格納された信号を順次隣の画素の転送用シフトレジスタ４１０に転送することによって行われる。転送用シフトレジスタ４１０を備えることにより、演算素子４００での演算処理と独立して転送用シフトレジスタでの転送処理を行うことができる。したがって、演算素子４００において処理演算を行わせている間に、転送用シフトレジスタ４１０に次のデータを転送させるパイプライン的な処理が可能となり、演算素子４００におけるより高速なフレームレートでの演算処理が可能となる。また、転送用シフトレジスタ４１０は、制御回路１５からの転送開始の信号に基づいて、Ａ／Ｄ変換されたデータの転送を開始し、（行方向の素子数ｘアナログレベル）分だけビットシフトによる転送を行った後、「データ転送完了」の信号を制御回路１５に送り返すことで効率的な転送を行うことができる。このように、演算処理と転送処理を並列していわゆるパイプライン処理を行うことにより、両処理においてフレーム毎の処理の間の待ち時間を減らすことができ、より高速な画像処理が可能となる。
【００７２】
演算素子４００内部での画像処理演算は、以下の通りである。すなわち、必要に応じて、各演算素子４００間でそれぞれのレジスタマトリックス４０１に収容された信号の転送を行い、ｘ方向データバス１７、ｙ方向データバス１８と各バッファ１９、２０を介した制御回路１５からのデータ、制御信号の転送を行った後、演算に必要な信号をレジスタマトリックス４０１からＡラッチ４０２とＢラッチ４０３に読み出し、ＡＬＵ４０４で所定の演算を行い、計算結果を、レジスタマトリックス４０１及び出力バス１５５を介して、制御回路１５に出力する。
【００７３】
並列処理機構１４では、上記画像処理演算を全演算素子４００において同時に並列処理するため、極めて高速の演算が可能である。制御回路１５は、並列処理機構１４の計算結果を、外部装置１０００たる外部コンピュータや他の外部機器へ出力する。例えば、当該計算結果を、外部機器のオン／オフ信号として利用する。制御回路１５は、また、並列処理機構１４の計算結果に基づき、必要な演算を行った後その演算結果を外部回路１０００に出力するようにしてもよい。
【００７４】
次に、第８図を参照して、本センサ装置１０による画像入力から、転送、及び、演算終了までの一連の視覚センサ処理について説明する。
【００７５】
制御回路１５のＣＰＵ１５０は、画像取り込み制御部３００（第４図）を制御することで、リセット信号Ｒの有為／非有為と水平同期信号Ｖｉを順次切り替え、もって、受光素子アレイ１１の各行ｊ（ｊ＝１，…Ｎ２）において、各受光素子１２０ｉ，ｊ（以下、受光素子１２０（ｘ、ｙ）という）から出力された画像データ（フレームデータ：以下、Ｉ（ｘ，ｙ）という）を順番に対応するＡ／Ｄ変換器２１０ｊを介して並列処理機構１４に入力させる（Ｓ１０１）。
【００７６】
送られて来たデータを、対応する各行ｊ内の転送用シフトレジスタ４１０にて、次々に転送させていく（Ｓ１０２）。そして、受光素子１２０に対応する位置（ｉ，ｊ）（以下、（ｘ、ｙ）という）の転送用シフトレジスタ４１０ｉ，ｊにデータが転送されるまでこの転送処理を続ける（Ｓ１０３）。
【００７７】
転送が終了したら、転送用シフトレジスタ４１０から対応する演算素子４００ｉ，ｊ（以下、演算素子４００（ｘ、ｙ）という）のレジスタマトリックス４０１へと、当該画素のデータＩ（ｘ，ｙ）を転送する（Ｓ１０４）。具体的には、第６図に示されるように、複数ビット（この場合、４ビット）で構成されている転送用シフトレジスタ４１０からレジスタマトリックス４０１へと１ビットずつ順番にデータを格納していく。次に、Ｓ１１０において、各演算素子４００を制御することにより、必要な並列演算処理を行う。
【００７８】
転送用シフトレジスタ４１０が各演算素子４００へのデータ転送を完了すると、各演算素子４００を制御してＳ１１０の並列演算処理を行っている間に次のフレームの処理へと移り（Ｓ１０５）、Ｓ１０１〜Ｓ１０３を実施して、受光素子アレイ１１とＡ／Ｄ変換器アレイ１３、及び、転送用シフトレジスタ４１０を制御して、次のフレームの入力／転送動作を行う。一方、各演算素子４００を用いた並列演算処理についても、１フレームの処理（Ｓ１１０）が終了すると、次のフレームの処理へと移行し（Ｓ１０６）、次のフレームの画像データが各転送用シフトレジスタ４１０から演算素子４００のレジスタマトリックス４０１へと転送され（Ｓ１０４）、当該次のフレームの並列演算処理を開始する（Ｓ１１０）。これを繰り返すことにより、受光素子アレイ１１とＡ／Ｄ変換器アレイ１３、及び、転送用シフトレジスタ４１０が次のフレームのデータを入力／転送している間（Ｓ１０１〜Ｓ１０３）に演算素子４００を用いた演算処理（Ｓ１１０）を行うことができ、それぞれ無駄な待ち時間を減らすことができる。
【００７９】
次に、演算素子４００を用いた並列画像処理（Ｓ１１０）の実行動作を、いくつかの画像処理について詳細に説明する。なお、これら画像処理工程では、制御回路１５のＣＰＵ１５０が全演算素子４００を同時に並列制御するようになっており、演算処理が非常に高速に行われる。
（実施例１）
【００８０】
本実施形態では、ｘ方向データバス１７、ｙ方向データバス１８を介して外部から高速で演算データあるいは演算制御データを各演算素子に供給することができる。したがって、Ｓ１１０の演算の際に各演算素子４００において画像情報以外のデータを必要とするような演算処理を行う場合も、極めて高速の演算が可能となる。例えば、画像処理工程（Ｓ１１０）において、位置情報データを必要とする「重心演算」を行う場合、この位置情報を外部からデータとして供給して重心演算処理を行う。以下、この重心演算処理を画像処理工程（Ｓ１１０）にて実行する場合の動作を詳細に説明する。
【００８１】
なお、制御回路１５のメモリ１５１は、各画素のｘ方向位置情報（以下、単に「ｘアドレス」と呼ぶ）とｙ方向位置情報（以下、単に「ｙアドレス」と呼ぶ）とを予め格納している。具体的には、ｘアドレスとして、「１」〜「Ｎ１」の値を示す２進数データを格納し、ｙアドレスとして、「１」〜「Ｎ２」の値を示す２進数データを格納している。
【００８２】
ここで、重心演算とは、ｘ方向およびｙ方向のそれぞれについての重みづけ総和の演算が基本となる演算である。重心座標Ｇｃは、画像上の各画素位置（ｘ、ｙ）の画像強度のデータをＩ（ｘ，ｙ）として以下の計算式（１）により求められる。  
【数１】
2010063173.tif 000003
【００８３】
つまり、重心演算を行うためには、各演算素子４００において当該画素のデータＩ（ｘ、ｙ）にその位置情報（ｘ、ｙ）を掛け合わせてその和を求める必要があるため、予め画素の位置情報（ｘ、ｙ）を各演算素子に転送しておく。
【００８４】
重心のｘ座標を求める際には、画像のｘ方向の位置情報と画像強度Ｉ（ｘ、ｙ）とを掛け合わせてｘ方向モーメントｘ・Ｉ（ｘ、ｙ）を求め、さらに、全画素のｘ方向モーメントを足し合わせて得られるｘ方向モーメント総和ΣΣｘ・Ｉ（ｘ、ｙ）を画像強度総和ΣΣＩ（ｘ、ｙ）で割ることで、重心のｘ座標を求めることができる。なお、画像強度総和ΣΣＩ（ｘ、ｙ）は、全画素の画像強度を足し合わせて求めることができる。重心のｙ座標についても、同様に、各画素について画像のｙ方向の位置情報と画像強度Ｉ（ｘ、ｙ）とを掛け合わせてｙ方向モーメントｙ・Ｉ（ｘ、ｙ）を求め、さらに、全画素のｙ方向モーメントを足し合わせて得られるｙ方向モーメント総和ΣΣｙ・Ｉ（ｘ、ｙ）を画像強度総和ΣΣＩ（ｘ、ｙ）で割ることで得られる。
【００８５】
したがって、入力画像の重心位置を求めるためには、第９図に示すような重心演算処理（Ｓ３００）を、画像処理工程Ｓ１１０（第８図）にて行えば良い。
【００８６】
当該重心演算処理（Ｓ３００）では、まず、Ｓ３５０にて画像強度総和ΣΣＩ（ｘ、ｙ）を求め、次に、Ｓ４００にて、重心のｘ座標を求め、さらに、Ｓ５００にて、重心のｙ座標を求める。
【００８７】
なお、重心演算処理（Ｓ３００）がスタートした際には、入力画像Ｄの各画素の画像データＩ（ｘ、ｙ）は、既に、Ｓ１０４（第８図）にて、転送用シフトレジスタ４１０から各演算素子４００（ｘ、ｙ）のレジスタマトリックス４０１へ転送され、当該レジスタマトリックス４０１のある領域へ格納されている。
【００８８】
まず、画像強度総和ΣΣＩ（ｘ、ｙ）の演算処理（Ｓ３５０）の処理内容について、第１０（Ａ）図を参照して、詳細に説明する。
【００８９】
当該画像強度総和演算処理（Ｓ３５０）では、ＣＰＵ１５０は、まず、Ｓ３６０にて、画像強度値Ｉ（ｘ、ｙ）の総和を求めるための総和演算処理を行う。
【００９０】
以下、この総和演算処理（Ｓ３６０）について、第１０（Ｂ）図を参照して詳細に説明する。
【００９１】
まず、総和を求めようとする目的データ（この場合、画像データＩ（ｘ、ｙ））を、レジスタマトリックス４０１からＡラッチ４０２に読み込ませる（Ｓ１００２）。すなわち、レジスタマトリックス４０１に格納されているＩ（ｘ，ｙ）のデータを下位ビットからＡラッチ４０２に転送する。次に、各演算素子４００（ｘ，ｙ）は、それぞれ、ｘ方向において隣接する画素位置（ｘ＋１，ｙ）に存在する演算素子４００（ｘ＋１，ｙ）に格納されている目的データ（この場合、画像データＩ（ｘ＋１，ｙ））を、レジスタマトリックス４０１間の転送によって、該演算素子４００（ｘ、ｙ）のレジスタマトリックス４０１に転送・格納する（Ｓ１００４）。具体的には、レジスタマトリックス４０１の近傍転送機能を利用して隣の画素に格納されている画像データ値を空いている領域に転送する。次に、当該転送されてきた隣接画素（ｘ＋１，ｙ）の目的データ（画像データＩ（ｘ＋１，ｙ））をＢラッチ４０３に読み込み（Ｓ１００６）、Ａラッチ４０２とＢラッチ４０３の値の加算を行い（Ｓ１００８）、加算結果をレジスタマトリックス４０１を介して（Ｓ１０１０）Ａラッチ４０２へと格納する（Ｓ１０１２）。これにより、各画素４００（ｘ、ｙ）には、２画素分の目的データ（この場合、画像データＩ（ｘ、ｙ）とＩ（ｘ＋１、ｙ））の和が格納されることになる。
【００９２】
次に、ｘ方向の総和を取るための初期設定としてｉ＝１とした（Ｓ１０１４）後、各演算素子４００（ｘ，ｙ）は、Ｓ１０１８において、ｘ方向において２つ目に隣接する画素位置（ｘ＋ｎ，ｙ）（ここで、ｎ＝２ｉ、この場合、ｎ＝２１＝２）の演算素子４００（ｘ＋２，ｙ）に現在収容されている計算結果（この場合、Ｉ（ｘ＋２，ｙ）＋Ｉ（ｘ＋３，ｙ））を、ｘ方向に隣接するレジスタマトリックス４０１間の転送を２回繰り返すことにより、該演算素子４００（ｘ、ｙ）へ転送格納する（Ｓ１０１８）。次に、当該転送されてきた２つ目に隣接する画素（ｘ＋２，ｙ）の計算結果データをＢラッチ４０３に読み込み（Ｓ１０２０）、Ａラッチ４０２とＢラッチ４０３の値の加算を行い（Ｓ１０２２）、加算結果をレジスタマトリックス４０１を介して（Ｓ１０２４）Ａラッチ４０２へと格納する（Ｓ１０２６）。これにより、各画素４００（ｘ、ｙ）には、隣接する４画素の画像データＩ（ｘ、ｙ）、Ｉ（ｘ＋１、ｙ）、Ｉ（ｘ＋２、ｙ）、Ｉ（ｘ＋３、ｙ）の和が格納されることになる。
【００９３】
次に、ｉを１インクリメントし（Ｓ１０２８）、得られたｎ＝２ｉが１行画素数の半分の値であるＮ１／２を越えたか否かを判断し（Ｓ１０３０）、Ｎ１／２を越えていなければ（Ｓ１０３０でＮｏ）、Ｓ１０１８に戻る。Ｓ１０１８で、各演算素子４００（ｘ、ｙ）は、ｎ個目に隣接する位置（ｘ＋ｎ，ｙ）（ｎ＝２ｉ；この場合、ｎ＝２２＝４）の演算素子４００に現在収容されている計算結果データ（画像データの加算結果）を、ｘ方向に隣接するレジスタマトリックス４０１間の転送をｎ回（この場合、４回）繰り返すことにより、該演算素子４００（ｘ、ｙ）へ転送し、Ｂラッチ４０３に読み込み（Ｓ１０２０）、同様の加算を行う（Ｓ１０２２〜Ｓ１０２６）。
【００９４】
続いて、ｉを１インクリメントしつつ（Ｓ１０２８）、Ｓ１０１８〜Ｓ１０３０の処理を繰り返すことにより、８個（ｎ＝２３）隣、１６個（ｎ＝２４）隣、３２個（ｎ＝２５）隣、６４（ｎ＝２６）隣、…と進めて、（Ｎ１／２）隣まで加算を繰り返す。この結果、各行における全ての画像強度の加算結果Ｉ（１，ｙ）＋Ｉ（２，ｙ）＋…＋Ｉ（Ｎ１，ｙ）が、当該行の先頭にある演算素子４００（１，ｙ）のＡラッチ４０２に得られる（Ｓ１０２６）。ｎがＮ１／２を越えると（Ｓ１０３０でＹｅｓ）、Ｓ１０３２に移行する。
【００９５】
Ｓ１０３２以降では、各行毎に求められた画像強度加算結果を、上記と同様の手法を用いて、加算することで、（１）式に示した分母である画像強度総和ΣΣＩ（ｘ、ｙ）を得る。
【００９６】
具体的には、初期設定としてｊ＝０とした（Ｓ１０３２）後、各演算素子４００（ｘ，ｙ）は、ｙ方向において隣接する位置（ｘ，ｙ＋ｍ）（ここで、ｍ＝２ｊ、この場合、ｍ＝２ｊ＝１）に存在する演算素子４００（ｘ，ｙ＋ｍ）（この場合、４００（ｘ，ｙ＋１））の加算結果を、レジスタマトリックス４０１間の転送にて、該演算素子４００（ｘ、ｙ）のレジスタマトリックス４０１に格納する（Ｓ１０３４）。次に、当該隣接画素（ｘ，ｙ＋１）の演算結果をＢラッチ４０３に読み込み（Ｓ１０３６）、Ａラッチ４０２とＢラッチ４０３の値の加算を行い（Ｓ１０３８）、加算結果をレジスタマトリックス４０１に記憶する（Ｓ１０４０）。これにより、各行の先頭にある演算素子４００（１，ｙ）には、２行分の演算結果の和が格納されることになる。
【００９７】
次に、ｊを１インクリメントし（Ｓ１０４４）、ｍ＝２ｊが１列画素数の半分の値であるＮ２／２を越えたか否かを判断し（Ｓ１０４６）、Ｎ２／２を越えていなければ（Ｓ１０４６でＮｏ）、Ｓ１０３８で得られた加算結果をレジスタマトリックス４０１からＡラッチ４０２へ転送した（Ｓ１０４８）後、Ｓ１０３４に戻る。
【００９８】
次に、各演算素子４００（ｘ、ｙ）は、位置（ｘ，ｙ＋ｍ）（ｍ＝２ｊ；この場合、位置（ｘ，ｙ＋２））の演算素子４００に収容されている加算結果を、隣接するレジスタマトリックス４０１間の転送を２回繰り返すことにより、該演算素子４００（ｘ、ｙ）へ転送し（Ｓ１０３４）、Ｂラッチ４０３に読み込み（Ｓ１０３６）、同様の加算を行う（Ｓ１０３８〜１０４０）。
【００９９】
続いて、ｊを１インクリメントしつつ（Ｓ１０４４）、Ｓ１０４６〜Ｓ１０４０の処理を繰り返すことにより、４つ（ｍ＝２２）隣、８つ（ｍ＝２３）隣、１６個（ｍ＝２４）隣、３２個（ｍ＝２５）隣、６４（ｍ＝２６）隣、…と進めて、（Ｎ２／２）隣まで加算を繰り返すことにより、全画素の画像強度の加算結果ΣΣＩ（ｘ、ｙ）が、演算素子アレイ４０の先頭にある演算素子４００（１，１）のレジスタマトリックス４０１に得られる（Ｓ１０４０）。ｍがＮ２／２を越えると（Ｓ１０４６でＹｅｓ）、総和演算処理は終了する。
【０１００】
総和演算処理（Ｓ３６０）が終了すると、目的画素位置（ｘ１，ｙ１）（この場合、先頭画素位置（１，１））を選択するための画素選択処理（Ｓ３７０）に移行する（第１０（Ａ）図）。
【０１０１】
以下、画素選択処理（Ｓ３７０）について、第１０（Ｃ）図を参照して、詳細に説明する。
【０１０２】
画素選択処理においては、ＣＰＵ１５０は、まず、Ｓ１１０２において、ｘ方向データバス１７のうち、選択しようとする目的画素位置（ｘ１，ｙ１）のｘアドレス位置ｘ１に対応するｘ方向データライン１７０ｉ（以下、「ｘ方向データライン１７０ｘ」という）にデータ（１）を転送し、残りの全てのｘ方向データライン１７０ｘにデータ（０）を転送する。この場合、選択しようとする目的画素位置たる先頭画素位置（ｘ１（＝１），ｙ１（＝１））のｘアドレス位置ｘ１に対応するｘ方向データライン１７０ｘ（ｘ＝ｘ１＝１）にデータ（１）を転送し、残りの全てのｘ方向データライン１７０ｘ（ｘ≠ｘ１）にデータ（０）を転送する。
【０１０３】
次に、各演算素子４００（ｘ、ｙ）のレジスタマトリックス４０１に、対応するｘ方向データライン１７０ｘからの転送データを格納させる（Ｓ１１０４）。この結果、全演算素子４００のうち、ｘアドレスがｘ１（＝１）の演算素子４００（１，ｙ）（１≦ｙ≦Ｎ２）のレジスタマトリックス４０１にのみ、データ（１）が格納され、それ以外の演算素子４００のレジスタマトリックス４０１にはデータ（０）が格納される。次に、このデータをＡラッチ４０２に転送する（Ｓ１１０６）。
【０１０４】
次に、ＣＰＵ１５０は、Ｓ１１０８において、ｙ方向データバス１８のうち、目的画素位置（ｘ１，ｙ１）のｙアドレス位置ｙ１に対応するｙ方向データライン１８０ｊ（以下、「ｙ方向データライン１８０ｙ」という）にデータ（１）を転送し、残りの全てのｙ方向データライン１８０ｙにデータ（０）を転送する。この場合、選択しようとする目的画素位置たる先頭画素位置（ｘ１（＝１），ｙ１（＝１））のｙアドレス位置ｙ１のｙ方向データライン１８０ｙ（ｙ＝ｙ１＝１）にデータ（１）を転送し、残りの全てのｙ方向データライン１８０ｙ（ｙ≠ｙ１）にデータ（０）を転送する。
【０１０５】
次に、各演算素子４００（ｘ、ｙ）のレジスタマトリックス４０１に、対応するｙ方向データライン１８０ｙからの転送データを格納させる（Ｓ１１１０）。この結果、全演算素子４００（ｘ、ｙ）のうち、ｙアドレスがｙ１（＝１）の演算素子４００（ｘ、１）（１≦ｘ≦Ｎ１）のレジスタマトリックス４０１にのみデータ（１）が格納され、それ以外の演算素子４００のレジスタマトリックス４０１にはデータ（０）が格納されることになる。次に、このデータをＢラッチ４０３に転送する（Ｓ１１１２）。
【０１０６】
ついで、各演算素子４００（ｘ、ｙ）にて、ＡＬＵ４０４により、Ａラッチ４０２の値とＢラッチ４０３の値の乗算を行い（Ｓ１１１４）、演算結果をレジスタマトリックス４０１に格納する（Ｓ１１１６）。この結果、目的アドレス（ｘ１，ｙ１）の演算素子４００（ｘ１，ｙ１）（この場合、先頭演算素子４００（１，１））にのみ、乗算結果１が設定され、それ以外の演算素子４００では、乗算結果０が設定されることになる。こうして、画素選択処理（Ｓ３７０）が終了する。
【０１０７】
画素選択処理（Ｓ３７０）が終了すると、Ｓ３７２に移行する（第１０（Ａ）図）。Ｓ３７２では、画素選択処理（Ｓ３７０）にて得られた乗算結果を、レジスタマトリックス４０１からＡラッチ４０２に転送する（Ｓ３７２）。次に、総和演算処理（Ｓ３６０）にて最終的に求められた演算結果を、やはりレジスタマトリックス４０１からＢラッチ４０３に転送する（Ｓ３７４）。ついで、ＡＬＵ４０４にて、Ａラッチ４０２の値とＢラッチ４０３の値の乗算を行う（Ｓ３７６）。この結果、先頭アドレス（１，１）の演算素子４００には、総和演算結果ΣΣＩ（ｘ、ｙ）と（１）との乗算結果として、画像強度総和ΣΣＩ（ｘ、ｙ）が求められる。一方、それ以外の演算素子４００では、総和演算結果と０（ゼロ）との乗算の結果として、ゼロ（０）が得られる。Ｓ３７８にて、当該乗算結果をレジスタマトリックス４０１に格納し、Ｓ３８０にて、当該乗算結果を、レジスタマトリックス４０１の出力アドレス「２８」より出力バス１５５に出力する。この結果、全演算素子４００でのＳ３７６の乗算結果が単一の出力バス１５５に出力されることになる。ここで、先頭位置の演算素子４００（１，１）のみが乗算結果として画像強度総和ΣΣＩ（ｘ、ｙ）を出力し、残りの全ての演算素子は乗算結果としてゼロ（０）を出力する。したがって、出力バス１５５は、これら全演算素子４００からの演算結果のＯＲ論理演算結果たる画像強度総和ΣΣＩ（ｘ、ｙ）を制御回路１５に転送することになる。ＣＰＵ１５０は、受け取った画像強度総和ΣΣＩ（ｘ、ｙ）をメモリ１５１に記憶する。
【０１０８】
次に、重心のｘ方向座標の演算処理（Ｓ４００）の処理内容について、第１１図を参照して、詳細に説明する。
【０１０９】
ＣＰＵ１５０は、まず、Ｓ４０２にて、重心演算に必要なデータである各画素のｘ方向位置情報（ｘアドレスデータ“ｘ”）を、メモリ１５１から読みだし、各演算素子４００に転送する。この転送は、各ｘアドレスデータ“ｘ”をｘ方向のデータバッファ１９に一旦格納し、ｘ方向データバス１７の対応するデータライン１７０ｘを用いてビットシリアル方式によって下位ビットより１ビットづつ順番に転送することで行う。ここで、ｘ方向データバス１７の各ｘ方向データライン１７０ｘに接続されている画素のｘアドレスデータ“ｘ”は、互いに等しく、かつ、１〜Ｎ１のいずれかの値の２進数データである。したがって、各データライン１７０ｘでは、対応するｘアドレス“ｘ”の２進数データを、その下位ビットから順にｌｏｇ2（Ｎ１）ビット転送することにより、対応するｘアドレスの全演算素子４００（ｘ、ｙ）に転送することが可能である。
【０１１０】
各演算素子４００（ｘ、ｙ）では、転送されたｘアドレスデータ“ｘ”がそのレジスタマトリックス４０１に格納され（Ｓ４０４）、その後、下位ビットからＢラッチ４０３へと読み込まれる（Ｓ４０６）。一方、画像データＩ（ｘ、ｙ）が、再び、レジスタマトリックス４０１からＡラッチ４０２に読み込まれる（Ｓ４０８）。ＡＬＵ４０４で、Ａラッチ４０２の値とＢラッチ４０３の値の乗算を行い（Ｓ４１０）、演算結果たるｘ方向モーメント値（ｘ・Ｉ（ｘ、ｙ））が、レジスタマトリックスに格納される（Ｓ４１２）。
【０１１１】
次に、Ｓ４２０にて、全画素におけるｘ方向モーメント値（ｘ・Ｉ（ｘ、ｙ））の総和を求めるための総和演算処理を行う。
【０１１２】
当該総和演算処理（Ｓ４２０）では、第１０（Ｂ）図を参照して説明した総和演算処理を、ｘ方向モーメント値（ｘ・Ｉ（ｘ、ｙ））を目的データとして行う。
【０１１３】
具体的には、Ｓ１００２にて、各演算素子において、総和を求めたい目的データであるｘ方向モーメント値（ｘ・Ｉ（ｘ、ｙ））を、レジスタマトリックス４０１からＡラッチ４０２に転送する。次に、Ｓ１００４にて、各演算素子４００（ｘ、ｙ）に、ｘ方向において隣接する位置（ｘ＋１，ｙ）の演算素子４００（ｘ＋１，ｙ）のｘ方向モーメント値（（ｘ＋１）・Ｉ（ｘ＋１、ｙ））を転送する。当該ｘ方向モーメント値（（ｘ＋１）・Ｉ（ｘ＋１、ｙ））をＢラッチへ格納し（Ｓ１００６）、ＡラッチとＢラッチの値を加算することにより、当該隣り合う２つの画素におけるｘ方向モーメント値の加算を行い、加算結果をレジスタマトリックス４０１を介してＡラッチ４０２へと格納する（Ｓ１００８〜Ｓ１０１２）。この結果、各画素４００（ｘ、ｙ）には、２画素分のｘ方向モーメント値の和（ｘ・Ｉ（ｘ，ｙ）＋（ｘ＋１）・Ｉ（ｘ＋１，ｙ））が格納されることになる。
【０１１４】
次に、初期設定としてｉ＝１とした（Ｓ１０１４）後、各演算素子４００（ｘ，ｙ）は、Ｓ１０１８〜Ｓ１０２６において、格納している加算結果（ｘ・Ｉ（ｘ，ｙ）＋（ｘ＋１）・Ｉ（ｘ＋１，ｙ））と、ｘ方向において２つ目に隣接する画素位置（ｘ＋ｎ，ｙ）（ここで、ｎ＝２ｉ、この場合、ｎ＝２１＝２）の演算素子４００（ｘ＋２，ｙ）に格納されている加算結果（（ｘ＋２）・Ｉ（ｘ＋２，ｙ）＋（ｘ＋３）・Ｉ（ｘ＋３，ｙ））とを加算する転送・加算処理を行う。
【０１１５】
続いて、ｉを１インクリメントしつつ（Ｓ１０２８）、Ｓ１０１８〜Ｓ１０３０の処理を繰り返すことにより、４個（ｎ＝２２）隣、８個（ｎ＝２３）隣、１６個（ｎ＝２４）隣、３２個（ｎ＝２５）隣、６４（ｎ＝２６）隣、…と進めて、（Ｎ１／２）隣まで転送・加算を繰り返す。その結果、各行における全てのｘ方向モーメント値の加算結果１・Ｉ（１，ｙ）＋２・Ｉ（２，ｙ）＋…＋Ｎ１・Ｉ（Ｎ１，ｙ）が、当該行の先頭にある演算素子４００（１，ｙ）に得られる。
【０１１６】
次に、初期設定としてｊ＝０とした（Ｓ１０３２）後、Ｓ１０３４〜Ｓ１０４０にて、各演算素子４００（ｘ，ｙ）は、その加算結果と、ｙ方向において隣接する位置（ｘ，ｙ＋ｍ）（ここで、ｍ＝２ｊ、この場合、ｍ＝２ｊ＝１）の演算素子４００（ｘ，ｙ＋ｍ）（この場合、４００（ｘ，ｙ＋１））の加算結果とを、加算する転送・加算処理を行う。
【０１１７】
続いて、ｊを１インクリメントしつつ（Ｓ１０４４）、Ｓ１０４６〜Ｓ１０４０の処理を繰り返すことにより、２つ（ｍ＝２１）隣、４つ（ｍ＝２２）隣、８つ（ｍ＝２３）隣、１６個（ｍ＝２４）隣、３２個（ｍ＝２５）隣、６４（ｍ＝２６）隣、…と進めて、（Ｎ２／２）隣まで転送・加算を繰り返す。この結果、全画素のｘ方向モーメント値の加算結果ΣΣｘ・Ｉ（ｘ、ｙ）が、演算素子アレイ４０の先頭にある演算素子４００（１，１）に得られ、総和演算処理（Ｓ４２０）が終了する。
【０１１８】
総和演算処理（Ｓ４２０）が終了すると、Ｓ４３０に移行する（第１１図）。
【０１１９】
Ｓ４３０では、先頭画素位置（１，１）を選択するための画素選択処理を行う。
【０１２０】
当該画素選択処理では、第１０（Ｃ）図を参照して説明した画素選択処理と同一の処理を行う。その結果、Ｓ１１１４〜Ｓ１１１６にて、先頭演算素子４００（１，１）にのみ乗算結果（１）が設定され、他の演算素子４００では、乗算結果（０）が設定される。
【０１２１】
画素選択処理（Ｓ４３０）が終了すると、Ｓ４３２に移行する（第１１図）。Ｓ４３２では、画素選択処理（Ｓ４３０）にて得られた乗算結果を、レジスタマトリックス４０１からＡラッチ４０２に転送する。次に、総和演算処理（Ｓ４２０）にて最終的に求められた総和演算結果を、やはりレジスタマトリックス４０１からＢラッチ４０３に転送する（Ｓ４３４）。ついで、ＡＬＵ４０４にて、Ａラッチ４０２の値とＢラッチ４０３の値の乗算を行う（Ｓ４３６）。この結果、先頭アドレス（１，１）の演算素子４００には、総和演算結果ΣΣｘ・Ｉ（ｘ、ｙ）と（１）との乗算結果として、ｘ方向モーメント総和ΣΣｘ・Ｉ（ｘ、ｙ）が求められる。一方、他の演算素子４００では、総和演算結果と０（ゼロ）との乗算の結果として、ゼロ（０）が得られる。次に、Ｓ４３８にて、当該乗算結果をレジスタマトリックス４０１に格納し、Ｓ４４０にて、当該乗算結果を、レジスタマトリックス４０１の出力アドレス「２８」より出力バス１５５に出力する。この結果、全演算素子４００でのＳ４３６の乗算結果が出力バス１５５に出力されることになる。ここで、先頭位置の演算素子４００（１，１）のみが乗算結果としてｘ方向モーメント総和ΣΣｘ・Ｉ（ｘ、ｙ）を出力し、残りの全ての演算素子は乗算結果としてゼロ（０）を出力する。したがって、出力バス１５５は、これら全演算素子４００からの演算結果のＯＲ論理演算結果たるｘ方向モーメント総和ΣΣｘ・Ｉ（ｘ、ｙ）を制御回路１５に転送することになる。
【０１２２】
次に、Ｓ４５０において、ＣＰＵ１５０は、当該受け取ったｘ方向モーメント総和ΣΣｘ・Ｉ（ｘ、ｙ）を画像強度総和ΣΣＩ（ｘ、ｙ）で除算することにより、重心のｘ座標を求める。
【０１２３】
次に、処理は、Ｓ５００へ以降し、Ｓ５００において、重心のｙ座標を、重心のｘ座標を求めたのと同様な方法で求める。
【０１２４】
すなわち、第１２図に示すように、まず、Ｓ５０２にて、ＣＰＵ１５０は、各画素のｙ方向位置情報（ｘアドレスデータ“ｙ”）をメモリ１５１から読みだし、各演算素子４００に転送する。この転送は、各ｙアドレスデータ“ｙ”をｙ方向のデータバッファ２０に一旦格納し、ｙ方向データバス１８の対応するデータライン１８０ｙを用いてビットシリアル方式によって下位ビットより１ビットづつ順番に転送することで行う。ここで、ｙ方向データバス１８の各ｙ方向データライン１８０ｙに接続されている画素のｙアドレスデータ“ｙ”は、互いに等しく、かつ、１〜Ｎ２のいずれかの値の２進数データである。したがって、各データライン１８０ｙでは、対応するｙアドレス“ｙ”の２進数データを、その下位ビットから順にｌｏｇ2（Ｎ２）ビット転送することにより、対応するｙアドレスの全演算素子４００（ｘ、ｙ）に転送することが可能である。
【０１２５】
各演算素子４００（ｘ、ｙ）では、転送されたｙアドレスデータ“ｙ”がそのレジスタマトリックス４０１に格納され（Ｓ５０４）、その後、下位ビットからＢラッチ４０３へと読み込まれる（Ｓ５０６）。一方、画像データＩ（ｘ、ｙ）が、再び、レジスタマトリックス４０１を通じてＡラッチ４０２に読み込まれる（Ｓ５０８）。ＡＬＵ４０４で、Ａラッチ４０２の値とＢラッチ４０３の値の乗算を行い（Ｓ５１０）、演算結果たるｙ方向モーメント値（ｙ・Ｉ（ｘ、ｙ））をレジスタマトリックスに格納する（Ｓ５１２）。
【０１２６】
次に、Ｓ５２０にて、全画素におけるｙ方向モーメント値（ｙ・Ｉ（ｘ、ｙ））の総和を求めるための総和演算処理を行う。
【０１２７】
当該総和演算処理（Ｓ５２０）では、第１０（Ｂ）図を参照して説明した総和演算処理を、ｙ方向モーメント値（ｙ・Ｉ（ｘ、ｙ））を目的データとして行う。
【０１２８】
具体的には、Ｓ１００２にて、各演算素子において、総和を求めたい目的データであるｙ方向モーメント値（ｙ・Ｉ（ｘ、ｙ））を、レジスタマトリックス４０１からＡラッチ４０２に転送する。次に、Ｓ１００４にて、各演算素子４００（ｘ、ｙ）に、ｘ方向において隣接する位置（ｘ＋１，ｙ）の演算素子４００（ｘ＋１，ｙ）のｙ方向モーメント値（ｙ・Ｉ（ｘ＋１、ｙ））を転送する。当該ｙ方向モーメント値（ｙ・Ｉ（ｘ＋１、ｙ））をＢラッチへ格納し（Ｓ１００６）、ＡラッチとＢラッチの値を加算することにより、当該隣り合う２つの画素におけるｙ方向モーメント値の加算を行い、加算結果をレジスタマトリックス４０１を介してＡラッチ４０２へと格納する（Ｓ１００８〜Ｓ１０１２）。この結果、各画素４００（ｘ、ｙ）には、２画素分のｙ方向モーメント値の和（ｙ・Ｉ（ｘ，ｙ）＋ｙ・Ｉ（ｘ＋１，ｙ））が格納されることになる。
【０１２９】
次に、初期設定としてｉ＝１とした（Ｓ１０１４）後、各演算素子４００（ｘ，ｙ）は、Ｓ１０１８〜Ｓ１０２６において、格納している加算結果（ｙ・Ｉ（ｘ，ｙ）＋ｙ・Ｉ（ｘ＋１，ｙ））と、ｘ方向において２つ目に隣接する画素位置（ｘ＋ｎ，ｙ）（ここで、ｎ＝２ｉ、この場合、ｎ＝２１＝２）の演算素子４００（ｘ＋２，ｙ）に格納されている加算結果（ｙ・Ｉ（ｘ＋２，ｙ）＋ｙ・Ｉ（ｘ＋３，ｙ））とを加算する転送・加算処理を行う。
【０１３０】
続いて、ｉを１インクリメントしつつ（Ｓ１０２８）、Ｓ１０１８〜Ｓ１０３０の処理を繰り返すことにより、４個（ｎ＝２２）隣、８個（ｎ＝２３）隣、１６個（ｎ＝２４）隣、３２個（ｎ＝２５）隣、６４（ｎ＝２６）隣、…と進めて、（Ｎ１／２）隣まで転送・加算を繰り返す。その結果、各行における全てのｙ方向モーメント値の加算結果ｙ・Ｉ（１，ｙ）＋ｙ・Ｉ（２，ｙ）＋…＋ｙ・Ｉ（Ｎ１，ｙ）が、当該行の先頭にある演算素子４００（１，ｙ）に得られる。
【０１３１】
次に、初期設定としてｊ＝０とした（Ｓ１０３２）後、Ｓ１０３４〜Ｓ１０４０にて、各演算素子４００（ｘ，ｙ）は、その加算結果と、ｙ方向において隣接する位置（ｘ，ｙ＋ｍ）（ここで、ｍ＝２ｊ、この場合、ｍ＝２ｊ＝１）の演算素子４００（ｘ，ｙ＋ｍ）（この場合、４００（ｘ，ｙ＋１））の加算結果とを、加算する転送・加算処理を行う。この結果、各行の先頭位置の演算素子４００（１，ｙ）には、２行分の加算結果の和（ｙ・Ｉ（１，ｙ）＋ｙ・Ｉ（２，ｙ）＋…＋ｙ・Ｉ（Ｎ１，ｙ））＋（（ｙ＋１）・Ｉ（１，ｙ＋１）＋（ｙ＋１）・Ｉ（２，ｙ＋１）＋…＋（ｙ＋１）・Ｉ（Ｎ１，ｙ＋１））が得られる。
【０１３２】
続いて、ｊを１インクリメントしつつ（Ｓ１０４４）、Ｓ１０４６〜Ｓ１０４０の処理を繰り返すことにより、２つ（ｍ＝２１）隣、４つ（ｍ＝２２）隣、８つ（ｍ＝２３）隣、１６個（ｍ＝２４）隣、３２個（ｍ＝２５）隣、６４（ｍ＝２６）隣、…と進めて、（Ｎ２／２）隣まで転送・加算を繰り返す。この結果、全画素のｙ方向モーメント値の加算結果ΣΣｙ・Ｉ（ｘ、ｙ）が、演算素子アレイ４０の先頭にある演算素子４００（１，１）に得られ、総和演算処理（Ｓ５２０）が終了する。
【０１３３】
総和演算処理（Ｓ５２０）が終了すると、Ｓ５３０に移行する（第１２図）。
【０１３４】
Ｓ５３０では、先頭画素位置（１，１）を選択するための画素選択処理を行う。
【０１３５】
当該画素選択処理では、第１０（Ｃ）図を参照して説明した画素選択処理と同一の処理を行う。その結果、Ｓ１１１４〜Ｓ１１１６にて、先頭演算素子４００（１，１）にのみ乗算結果（１）が設定され、他の演算素子４００では、乗算結果（０）が設定される。
【０１３６】
画素選択処理（Ｓ５３０）が終了すると、Ｓ５３２に移行する（第１２図）。Ｓ５３２では、画素選択処理（Ｓ５３０）にて得られた乗算結果を、レジスタマトリックス４０１からＡラッチ４０２に転送する。次に、総和演算処理（Ｓ５２０）にて最終的に求められた総和演算結果を、やはりレジスタマトリックス４０１からＢラッチ４０３に転送する（Ｓ５３４）。ついで、ＡＬＵ４０４にて、Ａラッチ４０２の値とＢラッチ４０３の値の乗算を行う（Ｓ５３６）。この結果、先頭アドレス（１，１）の演算素子４００には、総和演算結果ΣΣｙ・Ｉ（ｘ、ｙ）と（１）との乗算結果として、ｙ方向モーメント総和ΣΣｙ・Ｉ（ｘ、ｙ）が求められる。一方、他の演算素子４００では、総和演算結果と０（ゼロ）との乗算の結果として、ゼロ（０）が得られる。次に、Ｓ５３８にて、当該乗算結果をレジスタマトリックス４０１に格納し、Ｓ５４０にて、当該乗算結果を、レジスタマトリックス４０１の出力アドレス「２８」より出力バス１５５に出力する。この結果、全演算素子４００でのＳ５３６の乗算結果が出力バス１５５に出力されることになる。ここで、先頭位置の演算素子４００（１，１）のみが乗算結果としてｙ方向モーメント総和ΣΣｙ・Ｉ（ｘ、ｙ）を出力し、残りの全ての演算素子は乗算結果としてゼロ（０）を出力する。したがって、出力バス１５５は、これら全演算素子４００からの演算結果のＯＲ論理演算結果たるｙ方向モーメント総和ΣΣｙ・Ｉ（ｘ、ｙ）を制御回路１５に転送することになる。
【０１３７】
次に、Ｓ５５０において、ＣＰＵ１５０は、当該受け取ったｙ方向モーメント総和ΣΣｙ・Ｉ（ｘ、ｙ）を画像強度総和ΣΣＩ（ｘ、ｙ）で除算することにより、重心のｘ座標を求める。
（実施例２）
【０１３８】
本システムの並列演算方法は、すべての演算素子において同等の演算を行うＳＩＭＤと呼ばれる方式であるが、場合によっては、各画素ごとに違う演算をさせたり、ある画素のみに特別な演算を行わせることができれば、より柔軟性のある処理が可能となる。ここで、本実施形態によれば、データバス１７，１８を利用することで、各演算素子４００に対して異なった演算を行わせることが可能となっている。ｘ方向データバス１７およびｙ方向データバス１８を用いて、各演算素子４００に演算制御データを転送することができるからである。
【０１３９】
例えば、ある画素のみに特別な演算を行わせたい場合、ｘ方向データバス１７とｙ方向データバス１８から、目的の画素（例えば、（ｘ１，ｙ１））を指定し、（ｘ１，ｙ１）のラインにのみ１、他には０を転送し、この値と演算素子４００が保持している値を掛け合わせた後に画像処理演算を行えば、位置（ｘ１，ｙ１）の演算素子４００のみで画像処理演算がなされることになる。
【０１４０】
具体的には、第８図の画像処理工程Ｓ１１０において、第１３図のような所望位置演算処理（Ｓ６００）を行うことが可能である。
【０１４１】
なお、所望位置演算処理（Ｓ６００）がスタートした際には、入力画像Ｄの各画素の画像データＩ（ｘ、ｙ）は、既に、Ｓ１０４（第８図）にて、転送用シフトレジスタ４１０から各演算素子４００（ｘ、ｙ）のレジスタマトリックス４０１へ転送され、当該レジスタマトリックス４０１のある領域へ格納されている。
【０１４２】
当該所望位置演算処理（Ｓ６００）では、まず、Ｓ６１０において、所望の画素位置（ｘ１、ｙ１）を選択するための画素選択処理を行う。当該画素選択処理（Ｓ６１０）では、当該所望の画素位置（ｘ１，ｙ１）を選択するよう、第１０（Ｃ）図を参照して説明した画素選択処理を行う。
【０１４３】
具体的には、ＣＰＵ１５０は、Ｓ１１０２〜Ｓ１１０６において、目的のｘアドレスｘ１のｘ方向データライン１７０ｘ（ｘ＝ｘ１）にデータ（１）を転送し、残りの全てのｘ方向データライン１７０ｘ（ｘ≠ｘ１）にデータ（０）を転送することで、全演算素子４００のうち、ｘアドレスがｘ１の演算素子４００（ｘ１，ｙ）（１≦ｙ≦Ｎ２）にのみデータ（１）をセットし、それ以外の演算素子４００にデータ（０）をセットする。次に、Ｓ１１０８〜Ｓ１１１２において、目的のｙアドレスｙ１のｙ方向データライン１８０ｙ（ｙ＝ｙ１）にデータ（１）を転送し、残りの全てのｙ方向データライン１８０ｙ（ｘ≠ｘ１）にデータ（０）を転送することで、全演算素子４００のうち、ｙアドレスがｙ１の演算素子４００（ｘ，ｙ１）（１≦ｘ≦Ｎ１）にのみデータ（１）をセットし、それ以外の演算素子４００にデータ（０）をセットする。
【０１４４】
ついで、各演算素子４００（ｘ、ｙ）にて、上記ｘ方向データライン１７０ｘからの転送データとｙ方向データライン１８０ｙからの転送データとの乗算を行い（Ｓ１１１４）、乗算結果をレジスタマトリックス４０１に格納して（Ｓ１１１６）、画素選択処理（Ｓ６１０）を終了する。この結果、所望のアドレス（ｘ１，ｙ１）の演算素子４００（ｘ１，ｙ１）のみで乗算結果が１となり、それ以外の演算素子４００では乗算結果は０となる。
【０１４５】
選択処理（Ｓ６１０）が終了すると、Ｓ６１２に移行する（第１３図）。Ｓ６１２では、上記画素選択処理（Ｓ６１０）の乗算結果をレジスタマトリックス４０１からＡラッチ４０２に転送する。次に、演算に供しようとする目的のデータ（例えば、画像データＩ（ｘ、ｙ））を、レジスタマトリックス４０１からＢラッチ４０３に転送し（Ｓ６１４）、Ａラッチ４０２の値とＢラッチ４０３の値の乗算を行う（Ｓ６１６）。この結果、目的の画素位置（ｘ１，ｙ１）の演算素子４００でのみ目的データそのものが得られ、それ以外の演算素子４００では、ゼロ（０）データが得られる。当該乗算結果をレジスタマトリックス４０１に格納した（Ｓ６１８）のち、Ｓ６２０にて、当該乗算結果に対する所望の演算処理を行う。具体的には、Ｓ６１６の乗算結果をレジスタマトリックス４０１からＡラッチ４０２またはＢラッチ４０３に転送し、ＡＬＵ４０４により所定の演算処理を行う。この結果、目的の画素位置（ｘ１，ｙ１）のみで、目的のデータに対する演算処理が行われ、当該画素位置以外では、ゼロ（０）データに対して演算処理が行われることになる。演算結果は、出力バス１５５を介して制御回路１５に出力される。
【０１４６】
なお、Ｓ６２０では、演算を行わず、Ｓ６１６で得られた乗算結果を、そのまま、出力アドレス「２８」から出力バス１５５を介して制御回路１５に出力するようにしてもよい。このようにすれば、所望のアドレス（ｘ１，ｙ１）で得られた所望のデータ（例えば、画像データＩ（ｘ、ｙ））のみを制御回路１５に出力することができる。
【０１４７】
また、上記所望位置演算処理（Ｓ６００）を、その演算処理（Ｓ６２０）の内容を変更しつつ個々の演算素子（画素）を選択しながら行えば、個々の演算素子に異なった演算処理を実行させることもできる。
【０１４８】
さらに、画素選択処理（Ｓ６１０）では、単一の画素のみを選択せず、複数の画素を選択するようにしてもよい。すなわち、当該複数の画素のｘアドレス及びｙアドレスに対応するｘ方向データライン１７０ｘとｙ方向データライン１８０ｙにデータ（１）を転送し、それ以外のデータラインにデータ（０）を転送するようにしてもよい。選択された複数の画素のみで、Ｓ１１１４（第１０（Ｃ）図）の乗算結果が１となり、その結果、Ｓ６１６（第１３図）での乗算結果として目的データが得られる。従って、Ｓ６２０では、当該選択された複数の画素において目的のデータに対する所望の演算を行うことができる。
【０１４９】
Ｓ６２０で行われる演算としては、後述するエッジ抽出処理等、様々な演算処理を行うことができる。
（実施例３）
【０１５０】
また、データバス１７，１８を用いることで、全演算素子４００で所定の演算を行なった後、ある１つの演算素子４００のレジスタマトリックス４０１の中身（演算結果）だけを選択的に取り出すことも可能である。
【０１５１】
具体的には、第８図の画像処理工程Ｓ１１０において、第１４図のような演算―抽出処理（Ｓ６５０）を行うことが可能である。
【０１５２】
なお、演算―抽出処理（Ｓ６５０）がスタートした際には、入力画像Ｄの各画素の画像データＩ（ｘ、ｙ）は、既に、Ｓ１０４（第８図）にて、転送用シフトレジスタ４１０から各演算素子４００（ｘ、ｙ）のレジスタマトリックス４０１へ転送され、当該レジスタマトリックス４０１のある領域へ格納されている。
【０１５３】
当該演算―抽出処理（Ｓ６５０）では、まず、Ｓ６６０において、各演算素子４００に、画像データＩ（ｘ、ｙ）に対する所望の演算を行わせる。当該所望の演算としては、後述するエッジ抽出処理等、様々な演算処理が考えられる。
【０１５４】
次に、目的の画素位置（ｘ１，ｙ１）を選択するための画素選択処理（Ｓ６８０）を行う。当該画素選択処理（Ｓ６８０）では、第１０（Ｃ）図を参照して説明した画素選択処理を目的の画素（ｘ１，ｙ１）に対して行う。この結果、目的の演算素子４００（ｘ１，ｙ１）のみでＳ１１１４の乗算結果として（１）が設定され、それ以外の演算素子４００ではＳ１１１４の乗算結果として（０）が設定される。
【０１５５】
選択処理（Ｓ６８０）が終了すると、Ｓ６８２に移行する（第１４図）。Ｓ６８２では、上記画素選択処理（Ｓ６８０）の乗算結果をレジスタマトリックス４０１からＡラッチ４０２に転送する。次に、抽出したい目的のデータ（Ｓ６６０の演算結果）を、レジスタマトリックス４０１からＢラッチ４０３に転送し（Ｓ６８４）、Ａラッチ４０２の値とＢラッチ４０３の値の乗算を行う（Ｓ６８６）。この結果、目的の画素位置（ｘ１，ｙ１）の演算素子４００でのみ演算結果データそのものが得られ、それ以外の演算素子４００では、ゼロ（０）データが得られる。この乗算結果をレジスタマトリックス４０１に格納した（Ｓ６８８）のち、Ｓ６９０にて、出力アドレス「２８」から出力バス１５５へ出力する。全演算素子４００からＳ６８６の乗算結果が出力バス１５に出力される結果、これら全演算素子の乗算結果のＯＲ論理演算出力として、目的の画素４００（ｘ１，ｙ１）における演算結果が、制御回路１５に出力されることになる。
（実施例４）
【０１５６】
なお、ｘ方向データバス１７及びｙ方向データバス１８としては、制御回路１５から演算素子４００への転送／書き込み機能のみを有する一方向性のデータバスではなく、制御回路１５から演算素子４００への転送／書き込み機能と演算素子４００から制御回路への出力／転送機能とを有する双方向性のデータバスを使用してもよい。レジスタマトリックスのアドレス「３０」及び「３１」をｙ方向データライン１８０ｙ及びｘ方向データライン１７０ｘへのデータの出力にも用いることで、演算素子４００の計算結果をｘ方向データライン１７０ｘまたはｙ方向データライン１８０ｙを介して制御回路１５に出力することができるようになる。
【０１５７】
さらに、データバス１７及び１８として双方向性のものを採用し、これらを双方向に使用すれば、ｘ方向、ｙ方向のある位置の演算素子４００からの信号を制御回路１５が受信することが可能となる。この機能を利用すれば、例えばある検索画像（ｍ１×ｍ２画素）を並列演算によって探したい場合には、制御装置１５は、一致信号が得られた位置をデータバスを通じて高速に確認できる。
【０１５８】
当該画像検索の具体例を以下説明する。
【０１５９】
この検索は、検索パターンＰが入力画像Ｄ（＝Ｉ（ｘ，ｙ）、ここで、１≦ｘ≦Ｎ１、１≦ｙ≦Ｎ２）内にあるか、あるとすればいずれの位置にあるかを見つける作業である。マッチングのアルゴリズムには多くの研究例があるが、ここでは、最も簡単な次の計算式で示される画像間の距離ERROR（ｐ，ｑ）が、あるしきい値より小さい時に同一画像とみなすアルゴリズムを用いるものとする。ここで、（ｐ，ｑ）は、画像Ｄ内の基準画素（ｘ、ｙ）の位置である。
【数２】
2010063173.tif 000004
【０１６０】
このアルゴリズムに基づく検索処理（Ｓ７００）のフローチャートを第１５図に示し、同図を参照しつつデータ処理の流れを以下に説明する。
【０１６１】
ここで、この検索処理（Ｓ７００）も、第８図の画像処理工程Ｓ１１０において実行されるものである。また、各画素（ｘ、ｙ）を、それぞれ、画像検索の基準位置（ｐ、ｑ）とする。さらに、検索画像Ｐの画像データＰ（ｉ，ｊ）（１≦ｉ≦ｍ１，１≦ｊ≦ｍ２）は、制御回路１５のメモリ１５１に格納されている。
【０１６２】
なお、検索処理（Ｓ７００）がスタートした際、入力画像Ｄの各画素の画像データＩ（ｘ、ｙ）（以下、Ｉ（ｐ、ｑ）という）は、既に、Ｓ１０４（第８図）にて、転送用シフトレジスタ４１０から各演算素子４００（ｘ、ｙ）（以下、４００（ｐ、ｑ）という）のレジスタマトリックス４０１へ転送され、当該レジスタマトリックス４０１のある領域へ格納されている。
【０１６３】
検索処理（Ｓ７００）では、ＣＰＵ１５０は、まず、ステップＳ７０２において、初期状態を設定する。具体的には、検索パターンＰ中のマッチング検出位置（ｉ，ｊ）に先頭位置（１，１）を設定し、各演算素子４００（ｐ、ｑ）のレジスタマトリックス４０１に格納しようとする計算結果Ｅｒ（ｐ，ｑ）をリセットする。
【０１６４】
ステップＳ７０３で、検索パターンＰ内の現在の検出位置（ｉ，ｊ）（ここでは、先頭位置（１，１））の画像データＰ（ｉ，ｊ）をメモリ１５１から読みだし、データバス１７、１８を介して、各演算素子４００へと転送する。
【０１６５】
ステップＳ７０４においては、各演算素子４００（ｐ、ｑ）において、レジスタマトリックス４０１のある領域に格納されている当該画素の画像データＩ（ｐ，ｑ）と検索パターンのマッチング検出位置の画像データＰ（ｉ，ｊ）との差の絶対値を求め、Ｅｒ（ｐ，ｑ）に加算する。ここでは、具体的には、画像データＩ（ｐ，ｑ）と検索画像の先頭位置の画像データＰ（１，１）との差の絶対値を求め、レジスタマトリックス４０１の別の領域を割り当ててＥｒ（ｐ，ｑ）として格納する。
【０１６６】
ステップＳ７０５では、ＣＰＵ１５０は、検出位置（ｉ，ｊ）が最終位置（ｍ１，ｍ２）に到達しているか否かを判定する。ここでは、検出位置（ｉ，ｊ）は、まだ先頭位置（１，１）なので、最終位置には到達しておらず（ステップ７０５でＮｏ）、ステップＳ７０６へと移行する。ステップＳ７０６では、ｉ≠ｍ１の場合は、ｉの値のみを１増加させ、ｉ＝ｍ１の場合は、ｘ方向の端に達したとしてｉを１にリセットし、ｊの値を１増加させる。ここでは、ｉ＝１、ｊ＝１の場合なので、ｉ＝２、ｊ＝１へと更新される。そして、ステップＳ７０７では、位置（ｐ＋ｉ−１，ｑ＋ｊ−１）の画像データ、ここでは、位置（ｐ＋１，ｑ）の画像データＩ（ｐ＋１，ｑ）を、演算素子４００（ｐ、ｑ）のレジスタマトリックス４０１に転送する。具体的には、レジスタマトリックス４０１の近傍転送機能を利用して、隣の画素４００（ｐ＋１，ｑ）に格納されている画像データ値Ｉ（ｐ＋１，ｑ）を、当該画素４００（ｐ、ｑ）の空いている領域に転送することでこの転送は行われる。
【０１６７】
転送が終了したら、ステップＳ７０３に戻り、ＣＰＵ１５０は、検索パターンＰ内の現在の検出位置（ｉ，ｊ）（ここでは、位置（２，１））の画像データＰ（ｉ，ｊ）をメモリ１５１から読みだし、データバス１７、１８を介して、各演算素子４００（ｐ、ｑ）へと転送する。ステップＳ７０４において、各演算素子４００（ｐ、ｑ）は、現在レジスタマトリックス４０１に格納されている隣接画素の画像データＩ（ｐ＋１，ｑ）と検索パターンの現在のマッチング検出位置の画像データＰ（ｉ，ｊ）との差の絶対値を求め、Ｅｒ（ｐ，ｑ）に加算する。検出位置（ｉ、ｊ）が最終位置（ｍ１，ｍ２）に到達していないので（Ｓ７０５でＮｏ）、Ｓ７０６に進み、検出位置（ｉ，ｊ）を更新する。
【０１６８】
かかる処理（ステップＳ７０３〜Ｓ７０７）を、検出位置（ｉ、ｊ）が最終位置（ｍ１，ｍ２）に到達するまで、繰り返す。
【０１６９】
このように、ステップＳ７０４で繰り返し加算を行うことにより、各演算素子４００（ｐ、ｑ）において、ERROR（ｐ，ｑ）を求めることができる。
【０１７０】
また、ステップＳ７０７による転送は、レジスタマトリックス４０１の転送機能を利用して、ｘ方向、ｙ方向にそれぞれ順次隣の画素に転送していくことで転送を行えばよい。
【０１７１】
検出位置が最終位置（ｍ１，ｍ２）に達し、ERROR（ｐ，ｑ）が求まると、ステップＳ７０５（Ｓ７０５でＹｅｓ）からステップＳ７０８へと移行する。ステップＳ７０８においては、ＣＰＵ１５０は、閾値Ｅthを設定し、ステップＳ７０９で、設定した閾値Ｅthデータを、データバス１７または１８を介して、各演算素子４００へと転送する。
【０１７２】
各演算素子４００（ｐ、ｑ）は、ステップＳ７１０で、閾値Ｅthと求めたERROR（ｐ，ｑ）、つまり、Ｅｒ（ｐ，ｑ）とを比較する。具体的には、各演算素子４００は、ERROR（ｐ，ｑ）−閾値Ｅthの演算を行い、この結果のサインビット（正負の符号）のビットを、比較結果として出力する。すなわち、Ｅｒ（ｐ，ｑ）が閾値Ｅth以下の場合は、ステップＳ７１１に移行して１を出力し、Ｅｒ（ｐ，ｑ）が閾値Ｅthより大きい場合は、ステップＳ７１２に移行して０を出力する。各演算素子４００は、これら出力データを、データバス１７及び１８に出力する。ＣＰＵ１５０は、これらデータバス１７，１８からの出力信号の総和をとることで、１を出力した演算素子４００の個数をカウントする。
【０１７３】
ステップＳ７１３では、ＣＰＵ１５０は、この個数を判定し、出力個数が０の場合は、ステップＳ７１４に移行して、マッチング画像なしとの判定結果を出力する。
【０１７４】
出力個数が１個の場合は、データバス１７，１８のうち、それぞれ単一のデータライン１７０ｘ、１８０ｙのみにおいて１の出力信号が得られている。したがって、ＣＰＵ１５０は、Ｓ７１５において、１の出力信号が得られている出力信号線１７０ｘ、１８０ｙの位置ｘ、ｙに基づいて、１を出力した演算素子４００の位置データ（ｐ，ｑ）を求める。
【０１７５】
なお、Ｓ７１５では、データバス１７，１８の代わりに出力バス１５５を利用してもよい。すなわち、各演算素子４００に対し、Ｓ７１０の判断結果としての出力（０または１）とその位置データ（ｐ、ｑ）とを乗算させ、その乗算結果を出力バス１５５に出力させるようにしてもよい。この場合、Ｓ７１０の判断結果として出力信号１を出力した画素（マッチング位置画素）のみが、その位置データ（ｐ、ｑ）を出力する。他の画素は、その出力信号（０）と位置データ（ｐ、ｑ）との乗算結果である（０）を出力する。したがって、マッチング位置の位置データ（ｐ、ｑ）のみが、出力バス１５５を介して、制御回路１５に転送されることになる。かかる方法によれば、マッチング位置データ（ｐ、ｑ）のみならず、他のマッチング演算結果（例えば、入力画像Ｄと検索パターンＰとの差の絶対値等）も制御回路１５に転送させることができる。
【０１７６】
一方、出力個数が２個以上あった場合は、ステップＳ７１６で閾値Ｅthを小さく変更してステップＳ７０９に戻り、出力個数が１個になるまで閾値Ｅthを小さくしていくことで絞り込みを行う。
【０１７７】
以上のように、本実施形態の高速視覚センサ装置１０は、受光素子アレイ１１の各行の全受光素子１２０に対して１個のＡ／Ｄ変換器２１０を対応させたＡ／Ｄ変換器アレイ１３と、受光素子１２０と１対１に対応する演算素子４００と転送用シフトレジスタ４１０とからなる並列処理機構１４とを備え、さらに、演算素子４００にデータ転送を行うデータバス１７、１８とデータバッファ１９、２０を備えている。演算素子４００は並列処理により近傍画素間の画像処理演算を高速で行うことができ、データバス１７、１８を利用することで外部からデータ転送の必要な演算処理も高速で行うことができる。
【０１７８】
また、本実施形態の高速視覚センサ装置１０によれば、画像処理ステップＳ１１０においては、上述の画像処理（第９図〜第１５図）を行うにあたり、その前処理として、入力画像Ｉ（ｘ、ｙ）に様々な画像処理を行うこともできる。
【０１７９】
例えば、エッジ抽出を行うことができる。ここで、「エッジ抽出」は画像処理において最も頻繁に利用される処理である。最も簡単に演算する場合は、左方向に隣接する１個の画素の強度値との差分による２近傍演算を用いた２近傍エッジ抽出が用いられる。
【０１８０】
具体的には、位置（ｘ，ｙ）における入力画像強度Ｉ（ｘ，ｙ）に対し、求める２近傍エッジ抽出画像の画像強度データの値Ｉ‘（ｘ，ｙ）は、以下の式で表わされる。
Ｉ‘（ｘ、ｙ）＝  |Ｉ（ｘ、ｙ）  −  Ｉ（ｘ−１，ｙ）|
【０１８１】
Ｓ１１０の画像処理ステップにおいて当該２近傍エッジ抽出を前処理として行う場合には、上記（実施例１）〜（実施例４）の演算処理工程Ｓ３００，Ｓ６００，Ｓ６５０，Ｓ７００の前に、第１６図に示すような２近傍エッジ抽出工程（Ｓ１２００）を行う。
【０１８２】
具体的には、まず、各演算素子４００（ｘ、ｙ）において、４近傍入力端子から左隣の隣接画素のデータＩ（ｘ−１，ｙ）を当該演算素子４００（ｘ、ｙ）のレジスタマトリックス４０１へと転送／格納する（Ｓ１２１０）。次に、レジスタマトリックス４０１に現在格納されているＩ（ｘ，ｙ）とＩ（ｘ−１，ｙ）のデータをＡラッチ４０２とＢラッチ４０３にそれぞれ転送し（Ｓ１２１１）、ＡＬＵ４０４により両者の差分を計算する（Ｓ１２１２）。計算結果は一旦レジスタマトリックス４０１に格納する（Ｓ１２１３）。計算完了後、計算結果を再びＡラッチ４０２へと読み出して（Ｓ１２１４）、差分の絶対値をＡＬＵ４０４で求める（Ｓ１２１５）。計算結果を再度レジスタマトリックス４０１へと格納する（Ｓ１２１６）。
【０１８３】
こうして得られた２近傍エッジ抽出画像Ｉ‘（ｘ、ｙ）に対して、（実施例１）〜（実施例４）の画像演算工程（Ｓ３００，Ｓ６００，Ｓ６５０，Ｓ７００）を行うようにする。
【０１８４】
なお、４近傍エッジ抽出を行う場合には、位置（ｘ，ｙ）における入力画像強度Ｉ（ｘ，ｙ）に対し求める４近傍エッジ抽出画像の画像強度データの値Ｉ‘（ｘ，ｙ）は、以下の式で表せる。
Ｉ‘（ｘ、ｙ）＝Ｉ（ｘ、ｙ−１）＋Ｉ（ｘ、ｙ＋１）＋Ｉ（ｘ−１，ｙ）＋Ｉ（ｘ＋１，ｙ）―４Ｉ（ｘ、ｙ）
【０１８５】
また、４近傍平滑化を行う場合には、求める４近傍平滑画像の画像強度データの値Ｉ‘（ｘ，ｙ）は、以下の式で表せる。
Ｉ‘（ｘ、ｙ）＝（４Ｉ（ｘ、ｙ）＋ Ｉ（ｘ−１，ｙ）＋ Ｉ（ｘ＋１，ｙ） ＋Ｉ（ｘ、ｙ−１）＋Ｉ（ｘ、ｙ＋１））／８
【０１８６】
上記アルゴリズムの他、画像処理でよく用いられるアルゴリズムのいくつかについて、本実施形態により演算を行った場合のステップ数、処理時間の例を表１に示す。
【表１】
2010063173.tif 000005
【０１８７】
表１から明らかなように、本実施形態では、一般的な画像処理（例えば、平滑化、細線化、コンボリューション、相関、マスク処理）演算を完全並列処理により、非常に高速で行うことができる。したがって、これまでの視覚センサ装置では演算処理速度、転送速度が遅いために制限されていたＦＡロボット制御などの分野への応用が可能になる。
【０１８８】
なお、表１に示される演算時間は、転送用シフトレジスタ４１０による画像データの転送時間は含んでいない。転送データ速度は、Ａ／Ｄ変換器２１０の変換スピードによって制限されるが、これを例えば、１ビット当たり１マイクロ秒とすると、１２８ｘ１２８画素ｘ８ビットの画像データを１２８行で並列転送する場合に要する時間は、１２８（画素）ｘ８（ビット）ｘ１（マイクロ秒／ビット）≒１ミリ秒となる。本実施形態では、この転送を演算処理と並行して行う。
【０１８９】
本実施形態が目指しているのは、実用的な高速性と十分な解像度を有する画像処理システムである。ＦＡシステムにおけるロボット制御には、受光素子１２０を１２８ｘ１２８個以上配列する解像度が必要とされる。本実施形態によれば、受光素子アレイ１１と並列処理機構１４を分離でき、それぞれの集積度を高められるため、この解像度を十分に実現できる。また、処理速度の目安としては、ロボットのアクチュエータの速度（１〜１０ミリ秒）が必要である。本実施形態では、この処理速度は、Ａ／Ｄ変換器２１０におけるＡ／Ｄ変換処理速度によって決まるが、十分に高速化が可能である。
【０１９０】
例えば、本実施形態での１画素あたりのＡ／Ｄ変換速度は、１ビットあたり１マイクロ秒となる。例えば、入力アナログ信号を６ビット（６４階調）でデジタル変換する場合には、１行分の１２８個の受光素子１２０の出力信号をデジタル変換するのに必要な時間は、６マイクロ秒ｘ１２８＝０．７６８ミリ秒となる。画像処理については、各受光素子に１対１に対応して演算素子が配置され、全演算素子で並列処理されるため、表１に示すように、０．４ミリ秒以下でほとんどの演算処理が行える。さらに、演算処理と転送処理を並行して行えるので、それぞれの処理の空き時間を減らすことができ、処理全体の時間を短縮することができる。
【０１９１】
また、前述したように本実施形態のＡ／Ｄ変換器２１０は、最上位ビットからＡ／Ｄ変換を行う。したがって、所望のビット数まで変換した時点で、リセット信号Ｒを送出し、次の光信号のＡ／Ｄ変換に移ることにより、Ａ／Ｄ変換の階調を変更することができる。これにより、より高速で、複雑な処理を行うことが可能となる。例えば、移動物体のトラッキングをするような場合に、物体が高速で移動している場合は、画像を１ビットの２値レベルで演算処理するように制御すれば、転送時間は、前述の６ビットの時の６分の１の０．１２８ミリ秒に短縮され、高速フィードバック制御に適用できる。逆に、低速で動いている場合には、階調を上げることにより、より精度を向上させて、追従させることができる。
【０１９２】
ただし、Ａ／Ｄ変換器から出力されるビット長を可変にする場合は、転送用シフトレジスタでは入力データのビット長を調整して固定長にする必要がある。なぜなら、例えば、通常のデータ長が８ビットの場合の転送用シフトレジスタラインには、固定長で８ビットｘ行内画素数（Ｎ１）のシフトレジスタが用いられる。そして、８ビットずつ区切った個々のシフトレジスタがそれぞれの位置に対応する各画素用の転送用シフトレジスタとして機能する。したがって、ビット長を８ビットに合わせておかないと、画像データが対応する位置の転送用シフトレジスタに正しく転送されないことになるからである。このため、転送用シフトレジスタに送る時点でダミー信号を加えて合計８ビットになるようにすることでデータが正しく転送される。
【０１９３】
以上説明したように、本実施形態のセンサ装置１０では、受光素子アレイ１１の各行の受光素子１２０に対して１個のＡ／Ｄ変換器２１０を対応させたＡ／Ｄ変換器アレイ１３と、受光素子１２０と１対１に対応する演算素子４００と転送用シフトレジスタ４１０とからなる並列処理機構１４とを備えている。このように受光素子１２０と１対１に対応する演算素子４００を有しているので、並列処理により近傍画素間の画像処理演算を高速で行うことができる。
【０１９４】
さらに、Ａ／Ｄ変換器２１０を１行ごとに設けているので、Ａ／Ｄ変換器２１０を受光素子１２０毎に設けた場合に比較して、受光素子１２０と演算素子４００間の伝送線の数が少なくて済み、受光素子１２０と演算素子４００とを別々に製造、配置することが容易にできる。このため、両者とも集積度を最適にすることができ、多画素数の高速視覚センサ装置１０を容易に製作できる。なお、このようにＡ／Ｄ変換器２１０を行ごとに設けたため、Ａ／Ｄ変換の処理速度により、全体の処理速度が制限を受けるが、ＦＡロボット制御に十分な画素数といわれる１２８ｘ１２８画素の映像を６４階調で処理する場合でも、ほとんどの画像処理が１ミリ秒以下で終了し、従来にない高速処理が可能である。したがって、本実施形態の多画素数／高速視覚センサ装置１０は、簡単な回路構成を有しながらも、基本的な画像演算を高速に処理することが可能となっている。
【０１９５】
特に、外部からのデータが必要となる演算では、ｘ方向データバスおよびｙ方向データバスより効率的にデータ転送（送受信）が可能であるため、高速な演算が可能である。
【０１９６】
さらに、転送用シフトレジスタ４１０を演算素子４００に対応して設けているので、転送処理と独立して演算処理が行え、演算処理及び転送処理を効率良く行うことができる。また、転送処理と演算処理を並列に行うことができることから、各処理の待ち時間を減らし、より高速の画像処理を行うことができる。すなわち、Ａ／Ｄ変換器から演算素子へのデータ転送時に、転送用シフトレジスタを用いて、演算処理と転送とを独立に実行できる機能を実現することで、実時間処理が可能となっている。
【０１９７】
本発明に係る高速視覚センサ装置は、前述した実施形態に限定されず、種々の変更が可能である。
【０１９８】
例えば、上記の実施形態では、データバッファ１９、２０を設けていたが、制御回路１５とデータバス１７、１８間に十分な転送速度が得られるような場合は、データバッファを設ける必要はない。
【０１９９】
また、上記の実施形態では、Ａ／Ｄ変換器２１０から演算素子４００へのデータ転送を、転送用シフトレジスタ４１０により行っているが、転送用シフトレジスタ４１０はなくてもいい。すなわち、第１７図のように、各Ａ／Ｄ変換器２１０を、並列処理機構１４のうち、対応する行の先頭の演算素子４００（１，ｙ）のレジスタマトリックス４０１と接続するようにしてもよい。この場合、各行のＡ／Ｄ変換器２１０から出力される画素データＩ（ｘ、ｙ）は、対応する演算素子４００（ｘ、ｙ）まで、ｘ方向に隣接している演算素子４００（１，ｙ）〜４００（ｘ、ｙ）のレジスタマトリックス４０１間の転送を順次行うことにより、転送される。
【０２００】
このように転送用シフトレジスタ４１０を設けていない場合には、表１の演算時間に加えて画像データを各演算素子４００に転送する時間が余分に必要となる。ここで、上述したように、本実施形態での１画素あたりのＡ／Ｄ変換速度は、１ビットあたり約１マイクロ秒となる。したがって、例えば、入力アナログ信号を６ビット（６４階調）でデジタル変換する場合には、１行分の１２８個の受光素子１２０の出力信号をデジタル変換するのに必要な時間は、６マイクロ秒ｘ１２８＝０．７６８ミリ秒となる。一方、画像処理については、表１に示すように、０．４ミリ秒以下でほとんどの演算処理が行える。したがって、転送時間を考慮しても、ほとんどの画像処理が１ミリ秒以下で行えることになり、十分な高速性能を有している。
【０２０１】
また、上述の実施形態では、Ａ／Ｄ変換器２１０がチャージアンプ２２１を含む構成となっているが、 Ａ／Ｄ変換器２１０とチャージアンプ２２１とを別体とし、第１８図のように、Ｎ２個のチャージアンプ２２１からなるアンプアレイ１２を受光素子アレイ１１に接続させ、 さらに、Ｎ２個のＡ／Ｄ変換器２１０からなるＡ／Ｄ変換器アレイ１３を当該アンプアレイ１２と並列処理機構１４との間に設けるようにしても良い。この場合には、アンプアレイ１２内の各アンプ２２１は、受光素子アレイ１１の対応する行１１０上の計Ｎ１個の受光素子１２０から出力される電荷を順次電圧信号に変換し、得られたアナログ電圧信号を、Ａ／Ｄ変換器アレイ１３内の対応するＡ／Ｄ変換器２１０に出力する。 Ａ／Ｄ変換器２１０は、当該チャージアンプ２２１からのアナログ電圧信号を順次Ａ／Ｄ変換し、並列処理機構１４に供給する。
【０２０２】
さらに、上述の実施形態では、画像強度やｘ／ｙ方向モーメントの総和を求めるために、第１０（Ｂ）図に示す総和演算処理を行うようにしているが、各演算素子４００からの出力の総和を求めるための回路を出力バス１５５に付加し、当該回路にて総和を求めるようにしても良い。
【産業上の利用可能性】
【０２０３】
本発明に係る高速視覚センサ装置は、ＦＡロボット制御等、視覚認識処理に幅広く用いられる。
【符号の説明】
【０２０４】
１０・・・高速視覚センサ装置  １１・・・受光素子アレイ  １３・・・Ａ／Ｄ変換器アレイ  １４・・・並列処理機構  １５・・・制御回路  １７・・・ｘ方向データバス  １８・・・ｙ方向データバス  １９・・・ｘ方向データバッファ  ２０・・・ｙ方向データバッファ
【図１】
2010063173.tif 000006
【図２】
2010063173.tif 000007
【図３】
2010063173.tif 000008
【図４】
2010063173.tif 000009
【図５】
2010063173.tif 000010
【図６】
2010063173.tif 000011
【図７（Ａ）】
2010063173.tif 000012
【図７（Ｂ）】
2010063173.tif 000013
【図８】
2010063173.tif 000014
【図９】
2010063173.tif 000015
【図１０（Ａ）】
2010063173.tif 000016
【図１０（Ｂ）】
2010063173.tif 000017
【図１０（Ｃ）】
2010063173.tif 000018
【図１１】
2010063173.tif 000019
【図１２】
2010063173.tif 000020
【図１３】
2010063173.tif 000021
【図１４】
2010063173.tif 000022
【図１５】
2010063173.tif 000023
【図１６】
2010063173.tif 000024
【図１７】
2010063173.tif 000025
【図１８】
2010063173.tif 000026