(57)【特許請求の範囲】
【請求項１】
複数の受光素子が２次元状に配列され、列ごとに出力信号を転送して画像フレームデータを順次出力する少なくとも一つの受光素子アレイと、
前記受光素子アレイの各列に対応して設けられ、対応する１列中の受光素子から順次読み出された出力信号をアナログ・デジタル変換して転送する複数のＡ／Ｄ変換器を有し、当該複数のＡ／Ｄ変換器が１次元状に配列されて構成されるＡ／Ｄ変換器アレイと、
前記各Ａ／Ｄ変換器の各々に対応して設けられ、前記Ａ／Ｄ変換器から転送される１列中の受光素子の出力信号の総和である０次モーメントを計算する０次モーメント演算器と、当該１列中の受光素子の出力信号の重み付け総和である１次モーメント値を計算する１次モーメント演算器と、各Ａ／Ｄ変換器の出力を対応する０次モーメント演算器、１次モーメント演算器それぞれに転送する転送用レジスタとを備え、対応するＡ／Ｄ変換器からの画像フレーム中の該当する１列分のデータ転送中に当該１列分のデータについて前記０次モーメント演算器および１次モーメント演算器による演算を行うモーメント演算器を複数有し、当該複数のモーメント演算器が１次元状に配列されて構成されるモーメント演算器アレイと、
前記受光素子アレイの各受光素子と１対１に対応して設けられ、前記Ａ／Ｄ変換器アレイから転送された対応する受光素子の出力信号に相当するデジタル信号について所定の演算を行う複数の演算素子を２次元状に配列して、前記受光素子アレイから前記Ａ／Ｄ変換器を介して、次の画像フレームの出力信号を転送する間にその前の画像フレームのデータについて所定の並列演算処理を行う演算素子アレイと、前記各演算素子に対応して設けられ、対応する列の前記モーメント演算器の転送用レジスタと列ごとに相互に接続されて、前記Ａ／Ｄ変換器アレイと前記モーメント演算器の転送用レジスタを介して転送された出力信号を順次転送して蓄積することにより、前記並列演算処理が終了した後に、次の画像フレームの出力信号を所定の前記演算素子へと転送する複数の転送用シフトレジスタと、を有する並列処理機構と、
前記受光素子アレイ、前記Ａ／Ｄ変換器アレイ、前記モーメント演算器アレイ及び前記並列処理機構の動作とともに、前記モーメント演算器の演算結果を基に前記並列処理機構における演算を制御する制御回路と、
を備える高速視覚センサ装置。
【請求項２】
前記モーメント演算器は、前記Ａ／Ｄ変換器から出力された信号列をビット順序の逆転した信号列に変換するビット反転器を備えていることを特徴とする請求項１記載の高速視覚センサ装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、画像処理機能を備えた高速視覚センサ装置に関する。
【０００２】
【従来の技術】
ＦＡシステム等でロボットを高速で動作させるためには、高速の画像処理が必要とされる。例えば、視覚センサとアクチュエータの間でフィードバックループを形成するロボットの場合、アクチュエータはミリ秒単位で制御可能であるため、本来はこれに対応した画像処理速度が必要になる。ところが、現状のビジョンシステムでは画像処理速度がビデオフレームレートに限られているため、この画像処理速度に合わせた低速動作しかできず、ロボットの性能を十分に活かしきれていなかった。
【０００３】
一方、高速ＣＣＤカメラの中には１ミリ秒程度で画像を撮像できるものもあるが、これらは撮像した画像をいったんメモリに貯えて、後から読み出して処理を行う機構になっているため、画像解析などの用途には使えるが、実時間性はほとんどなく、ロボット制御などの用途には適用できなかった。
【０００４】
このような問題を解決するため、画像の取込部と処理部を一体として取り扱うビジョンチップの研究が進んでおり、マサチューセッツ工科大学、カリフォルニア工科大学、三菱電機などの研究が知られている。しかし、これらは主として集積化の容易なアナログの固定回路を用いており、出力信号の後処理が必要であったり、画像処理の内容が特定用途に限定されていて汎用性がないなどの問題点があった。
【０００５】
これらに対して汎用的な画像処理を行うことができるビジョンチップとしては、特開平１０−１４５６８０号公報に開示された技術が知られている。この技術は、受光素子と１対１に対応させて演算素子を設け、Ａ／Ｄ変換器を受光素子の列毎に設けているため、並列処理により演算時間を短縮するとともに、受光素子と演算素子間の伝送線を少なくすることができ、両者の集積度を最適にすることができるといった利点がある。
【０００６】
上記課題を解決するため、本発明の高速視覚センサ装置は、（１）複数の受光素子が２次元状に配列され、列ごとに出力信号を転送して画像フレームデータを順次出力する少なくとも一つの受光素子アレイと、（２）受光素子アレイの各列に対応して設けられ、対応する１列中の受光素子から順次読み出された出力信号をアナログ・デジタル変換して転送する複数のＡ／Ｄ変換器を有し、当該複数のＡ／Ｄ変換器が１次元状に配列されて構成されるＡ／Ｄ変換器アレイと、（３）Ａ／Ｄ変換器の各々に対応して設けられ、Ａ／Ｄ変換器から転送される１列中の受光素子の出力信号の総和である０次モーメントを計算する０次モーメント演算器と、当該１列中の受光素子の出力信号の重み付け総和である１次モーメント値を計算する１次モーメント演算器と、各Ａ／Ｄ変換器の出力を対応する０次モーメント演算器、１次モーメント演算器それぞれに転送する転送用レジスタとを備え、対応するＡ／Ｄ変換器からの画像フレーム中の該当する１列分のデータ転送中に当該１列分のデータについて０次モーメント演算器および１次モーメント演算器による演算を行うモーメント演算器を複数有し、当該複数のモーメント演算器が１次元状に配列されて構成されるモーメント演算器アレイと、（４）受光素子アレイの各受光素子と１対１に対応して設けられ、Ａ／Ｄ変換器アレイから転送された対応する受光素子の出力信号に相当するデジタル信号について所定の演算を行う複数の演算素子を２次元状に配列して、受光素子アレイからＡ／Ｄ変換器を介して、次の画像フレームの出力信号を転送する間にその前の画像フレームのデータについて所定の並列演算処理を行う演算素子アレイと、演算素子に対応して設けられ、対応する列のモーメント演算器の転送用シフトレジスタと列ごとに相互に接続されて、Ａ／Ｄ変換器アレイとモーメント演算器の転送用レジスタを介して転送された出力信号を順次転送して蓄積することにより、並列演算処理が終了した後に、次の画像フレームの出力信号を所定の演算素子に順次転送する複数の転送用シフトレジスタと、を有する並列処理機構と、（５）受光素子アレイ、Ａ／Ｄ変換器アレイ、モーメント演算器アレイ及び並列処理機構の動作とともに、モーメント演算器の演算結果を基に並列処理機構における演算を制御する制御回路と、を備えることを特徴とする。
【０００７】
そこで、本発明は、こうした問題点に鑑みて、簡単な回路構成で、全画素データを利用する演算についても高速処理が可能な多画素数の高速視覚センサ装置を提供することを課題としている。
【０００８】
【課題を解決するための手段】
上記課題を解決するため、本発明の高速視覚センサ装置は、（１）複数の受光素子が２次元状に配列された少なくとも一つの受光素子アレイと、（２）受光素子アレイの各列に対応して設けられ、対応する１列中の受光素子から順次読み出された出力信号をアナログ・デジタル変換する複数のＡ／Ｄ変換器を有し、当該複数のＡ／Ｄ変換器が１次元状に配列されて構成されるＡ／Ｄ変換器アレイと、（３）Ａ／Ｄ変換器の各々に対応して設けられ、対応する１列中の受光信号列の総和である０次モーメントと重み付け総和である１次モーメント値とをそれぞれ計算する複数のモーメント演算器を有し、当該複数のモーメント演算器が１次元状に配列されて構成されるモーメント演算器アレイと、（４）受光素子アレイの各受光素子と１対１に対応して設けられ、Ａ／Ｄ変換器アレイから転送された対応する受光素子の出力信号に相当するデジタル信号について所定の演算を行う複数の演算素子を２次元状に配列して、並列演算処理を行う演算素子アレイと、演算素子に対応して設けられ、モーメント演算器からの出力信号を所定の演算素子に順次転送する複数の転送用シフトレジスタと、を有する並列処理機構と、（５）受光素子アレイ、Ａ／Ｄ変換器アレイ、モーメント演算器アレイ及び並列処理機構を制御する制御回路と、を備えることを特徴とする。
【０００９】
本発明によれば、受光素子と１対１に対応させて演算素子が設けられているので、画像処理演算を並列処理により高速で行うことができる。さらに、演算処理への転送を専用のシフトレジスタにより行うことで転送中でも演算処理を行うことが可能である。また、Ａ／Ｄ変換器を各列毎に設けることで伝送路の本数が少なくて済むという利点がある。そして、モーメント演算を行う専用のモーメント演算器を備えることにより、転送時に画像処理演算の基礎パラメータとなる画像強度、画像重心を容易かつ高速で求めることができる。この結果、このパラメータを利用した他の画像演算も高速化される。
【００１０】
モーメント演算器は、Ａ／Ｄ変換器から出力された信号列をビット順序の逆転した信号列に変換するビット反転器を備えていてもよい。
【００１１】
これによれば、各信号列は下位ビットから先に伝送されるので、モーメント演算時の桁上がりの処理が簡単な回路構成で実現される。そしてこのビット反転は例えば、ＦＩＬＯ（First In Last Out）メモリ２つを組み合わせた単純な構成により実現される。
【００１２】
【発明の実施の形態】
以下、本発明の一実施形態を図面に基づいて説明する。なお、説明の理解を容易にするため、各図面において同一の構成要素に対しては、可能な限り同一の参照番号を附し、重複する説明を省略する。図１は、本実施形態に係る高速視覚センサ装置のブロック図である。
【００１３】
まず、図１により、センサ装置全体の構成を簡単に説明する。本実施形態の高速視覚センサ装置は、Ｎ１個×Ｎ２個の２次元状に配置された受光素子１２０からなる受光素子アレイ１１と、受光素子アレイ１１の１列ごとに対応して受光素子１２０から出力された電荷を電圧信号に変換するＮ２個のチャージアンプ２２１からなる並列アンプ１２と、チャージアンプ２２１からの出力信号をＡ／Ｄ変換するＮ２個のＡ／Ｄ変換器２１０からなるＡ／Ｄ変換器アレイ１３と、Ａ／Ｄ変換器２１０より順次出力されたデジタル信号から画像信号の列毎の総和と重み付け総和を演算するＮ２個のモーメント演算器１７０からなるモーメント演算器アレイ１７と、受光素子１２０と１対１に対応するＮ１個×Ｎ２個の演算素子４００からなる演算素子アレイに複数の転送用シフトレジスタ４１０を付加した並列処理機構１４と、回路全体に命令信号等を送って制御する制御回路１５及び制御回路１５からの信号を各回路に送るインストラクション／コマンドバス１６により構成されている。
【００１４】
図２は、装置の構成例を示したものである。受光素子アレイ１１と並列処理機構１４を別々の基板に形成することで、双方を高集積化することが可能であり、また、それぞれの装置の特性に合わせた加工工程を採用できるため、安定した生産が可能となる。
【００１５】
続いて、各回路の内部構成について説明する。図３は、画像取込部の詳細構成を示している。画像取込部は、光を検出する受光部１００（図１に示す受光素子アレイ１１に相当）、受光部１００からの出力信号を処理する信号処理部２００（図１に示す並列アンプ１２及びＡ／Ｄ変換器アレイ１３に相当）、受光部１００及び信号処理部２００に動作タイミングの指示信号を通知するタイミング制御部３００（図１に示す制御回路１５の一部に相当）を備えている。
【００１６】
最初に、図３により、図１の受光素子アレイ１１に相当する受光部１００の構成を説明する。受光素子１２０は、入力した光強度に応じて電荷を発生する光電変換素子１３０と、光電変換素子１３０の信号出力端子に接続され、垂直走査信号Ｖi（ｉ＝１〜Ｎ１）に応じて光電変換素子１３０に蓄積された電荷を出力するスイッチ素子１４０を１組として構成されている。この受光素子１２０が第１の方向（以下垂直方向と呼ぶ）に沿ってＮ１個配置され、各受光素子１２０のスイッチ素子１４０が電気的に接続されて垂直受光部１１０を構成している。そして、この垂直受光部１１０を垂直方向に直交する水平方向に沿ってＮ２個配列することにより受光部１００が構成されている。
【００１７】
次に、同じく図３により、図１では並列アンプ１２及びＡ／Ｄ変換器アレイ１３に相当する信号処理部２００の構成を説明する。信号処理部２００は、対応する垂直受光部１１０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の光電出力を読み出し、これに相当するデジタル信号を送出する。以下、垂直走査信号を切り替えて、全受光素子１２０の光電出力を読み出し、相当するデジタル信号をモーメント演算器１７０を介して並列処理機構１４に出力する。
【００３２】
ここで、モーメント演算器１７０の動作を図５、図７を参照して説明する。図７は、モーメント演算器１７０の動作を示すフローチャートである。
【００３３】
図１に示したように、モーメント演算器１７０は、受光素子アレイ１１から並列処理機構１４に画像データが転送される途中のＡ／Ｄ変換器アレイ１３の直後にＡ／Ｄ変換器２１０に対応して配置されている。つまり、モーメント演算器１７０は受光素子１２０の一列毎に一個ずつ配置され、受光素子１２０の一列分の画素データ全てが一個のモーメント演算器１７０を通過することになる。したがって、この転送時に演算を行うことにより通常なら演算に際して多くのデータ転送を必要とするモーメント演算を効率的に行うことができる。モーメント演算器１７で行う演算は、以下に示す画像強度の列毎の総和Ｇ（ｙ）および重みづけ総和Ｇ’（ｙ）の演算のための部分和演算である。
【００３４】
【数１】
0004302212.tif 000002
ここで、Ｉ（ｘ，ｙ）は位置（ｘ、ｙ）の受光素子の出力強度を示す。ｘは転送方向、ｙはその垂直方向の位置を示す。それぞれの演算は、単純な和および積の演算から構成されるので、図５に示されるような簡単な回路構成で演算が実現できる。
【００３５】
まず、画像強度の列毎の総和（０次モーメント）は、列毎に転送されるデータ全てを積算していけばよい。図７（ａ）は、この総和演算の演算フローチャートである。最初に、フレーム開始信号により積算用Ａラッチ１７５ａをリセットする（Ｓ１０１）。そして、転送用シフトレジスタ１７１に転送されてきた第１番目のデータＩ(１,ｙ)をＢラッチ１７６ａに転送し（Ｓ１０２）、加算器１７４ａでＡラッチ１７５ａとＢラッチ１７６ａの和を演算し、演算結果をＡラッチ１７５ａに格納する（Ｓ１０３）。格納後、列全体の演算が終了したかを判定し（Ｓ１０４）、列全体の演算が終了していない場合は、次のｘ位置の画像強度についてＳ１０２へ戻り、データ転送、加算を行うことで、画像強度の積算を行う。ライン全体、つまりＮ１個のデータを加算すると、Ａラッチ１７５ａには、一列分の画像強度の総和Ｇ（ｙ）が格納されていることになる。この総和Ｇ（ｙ）を出力して、次のフレームの計算に移る（Ｓ１０５）。
【００３６】
一方、重み付け総和（１次モーメント）の場合には、画像強度を画素位置ｘで重み付けして積算していけばよい。図７（ｂ）は、この重み付け総和演算の演算フローチャートである。最初に、積算用のＡラッチ１７５ｂをリセットし（Ｓ１１１）、カウンタ１７８に１をセットする（Ｓ１１２）。そして、転送用レジスタ１７１に転送されてきた第１番目のデータＩ(１,ｙ)をＢラッチ１７６ｂに転送し（Ｓ１１３）、Ｂラッチ１７６ｂとカウンタ１７７の乗算値を乗算器１７７によって求める（Ｓ１１４）。この結果とＡラッチ１７５ｂの格納値の和を加算器１７４ｂで演算して、演算結果をＡラッチ１７５ｂに格納する（Ｓ１１５）。さらにカウンタ１７８の格納値を１だけインクリメントする（Ｓ１１６）。格納後、列全体の演算が終了したかを判定し（Ｓ１１７）、列全体の演算が終了していない場合は、次のｘ位置の画像強度についてＳ１１３へ戻り、データ転送、加算を行うことで、位置ｘで重み付けされた画像強度の積算を行う。ライン全体、つまりＮ１個のデータを同様に演算すると、Ａラッチ１７５ｂには、一列分の画像強度の重み付け総和Ｇ’（ｙ）が格納されていることになる。この総和Ｇ’（ｙ）を出力して、次のフレームの計算に移る（Ｓ１１８）。
【００３７】
画像全体の画像強度の総和Ｇ及びｘ方向の位置による重み付け総和Ｇ’は以下の式により表せる。
【００３８】
【数２】
0004302212.tif 000003
そして、画像の重心位置は以下の式により表せる。
【００３９】
【数３】
0004302212.tif 000004
これらの演算は、モーメント演算器１７０の演算結果を制御回路１５に転送して、まとめて演算処理を行う。データ数が列の数であるＮ２個に減少しているため、全画素データを一度に演算する場合（Ｎ１×Ｎ２個）に比べて演算量は少なくてすみ、高速に実行できる。さらに高速化が必要であれば、(5)式のｙ座標を求める際に分子の計算を行うために重みづけ総和のための専用の積和演算素子を用意すればよい。
【００４０】
上記のＡラッチ１７５ａ、１７５ｂのビット長は、例えば、Ｎ１＝１２８画素分の積和演算を行う場合には、データ長（８ビット）＋列の素子数(７ビット)＋重みづけ／２（７ビット／２＝４ビット）＝１９ビットのビット長を用意しておけば、オーバーフローを起こさないで演算が実施できる。これらのモーメント演算を並列処理機構１４の演算素子４００側で行おうとすると、通常の近傍演算で必要なビット長よりも冗長なビット長を有するレジスタが必要となる。そして、このために全ての演算素子４００のレジスタのビット長を長くすると、回路規模が増大して、集積化の妨げになる。本発明では、モーメント演算のような、全画像のデータを扱うような特殊演算を専用のモーメント演算器１７０を利用して効率的に行うことにより、並列処理を行う演算素子４００のレジスタ長を長くする必要がなく、集積化が図れる。さらに、モーメント演算器１７０では、演算時間をほとんどロスすることなく、これらの特殊演算を効率良く処理が行える。他の全画像データを扱うような特殊演算、例えば、画像平均強度の算出なども０次モーメント、１次モーメント値を利用して簡単かつ高速に精度良く計算することが可能である。これらの処理は、重心位置と同様に制御回路１５により行えばよく、さらに高速化が必要であれば、専用の演算処理回路を付加してもよい。
【００４１】
次に、演算素子４００の動作を図６により説明する。Ａ／Ｄ変換されたデジタル信号は、転送用のシフトレジスタ４１０を介してそれぞれの受光素子１２０に対応する演算素子４００のレジスタマトリックス４０１に送られる。この転送は、転送用シフトレジスタ４１０に格納された信号を順次隣の画素の転送用シフトレジスタ４１０に転送することによって行われる。
【００４２】
演算素子４００内部の演算は、必要があれば、各演算素子４００間でそれぞれのレジスタマトリックス４０１に収容された信号の転送を行った後、演算に必要な信号をレジスタマトリックス４０１からＡラッチ４０２とＢラッチ４０３に読み出し、ＡＬＵ４０４で所定の演算を行い、計算結果はレジスタマトリックス４０１を介して外部回路に出力される。演算は全演算素子４００において同時に並列処理されるため、極めて高速の演算が可能である。以下に、「エッジ抽出」を例にとり、画像処理の実行動作を詳細に説明する。
【００４３】
例に挙げる「エッジ抽出」は画像処理において最も頻繁に利用される処理である。最も簡単に演算する場合は、隣接する画素の強度値との差分による２近傍演算が用いられる。求めるエッジ抽出画像の画像強度データの値Ｉ’（ｘ，ｙ）は、以下の式で表せる。
【００４４】
【数４】
0004302212.tif 000005
転送から演算終了までの各演算素子４００及び転送用シフトレジスタ４１０における処理のフロー図を図８に示す。
【００４５】
各受光素子１２０から出力された画像データは、各列毎に一列のデータが順番にチャージアンプ２２１、Ａ／Ｄ変換器２１０、モーメント演算器１７０を介して並列処理機構１４に入力される（Ｓ２０１）。送られて来たデータは各列の転送用シフトレジスタ４１０間を次々に転送されていく（Ｓ２０２）。そして、受光素子１２０に対応する位置の転送用シフトレジスタ４１０にデータが転送されるまでこの転送処理を続ける（Ｓ２０３）。
【００４６】
転送が終了したら、転送用シフトレジスタ４１０から対応する演算素子４００のレジスタマトリックス４０１へと当該画素のデータＩ（ｘ，ｙ）を転送する（Ｓ２０４）。このとき、図６に示されるように、複数ビットで構成されている転送用シフトレジスタ４１０からレジスタマトリックス４０１へと１ビットずつ順番にデータを格納していく。また、４近傍入力端子から隣接画素のデータＩ（ｘ−１，ｙ）をレジスタマトリックス４０１へと格納する（Ｓ２１０）。次に、レジスタマトリックス４０１に格納されているＩ（ｘ，ｙ）とＩ（ｘ−１，ｙ）のデータをそれぞれ下位ビットからＡラッチ４０２とＢラッチ４０３にそれぞれ転送し（Ｓ２１１）、ＡＬＵ４０４により両者の差分を計算する（Ｓ２１２）。計算結果は一旦レジスタマトリックス４０１に格納し（Ｓ２１３）、計算完了後再びＡラッチ４０２へと読み出して（Ｓ２１４）、差分の絶対値をＡＬＵ４０４で求め（Ｓ２１５）、計算結果を再度レジスタマトリックス４０１へと格納する（Ｓ２１６）。絶対値の計算が完了したら、レジスタマトリックス４０１に格納された計算結果を出力する（Ｓ２１７）。以上の計算処理は全ての演算素子４００で同時に並列処理されるため、非常に高速で演算処理が行われる。
【００４７】
各演算素子４００へとデータを転送した転送用シフトレジスタ４１０は、各演算素子４００がＳ２１０〜Ｓ２１７の演算処理を行っている間に、次のフレームの処理へと移り（Ｓ２０５）、Ｓ２０１〜Ｓ２０３を実施する。そして、各演算素子４００での演算処理が終了すると、演算素子４００は次のフレームの処理へと移行し（Ｓ２１８）、次のフレームの画像データが各転送用シフトレジスタ４１０から演算素子４００のレジスタマトリックス４０１へと転送される（Ｓ２０４）。これを繰り返すことにより、演算素子４００は、転送用シフトレジスタ４１０が次のフレームのデータを転送している間（Ｓ２０１〜Ｓ２０３）に演算処理（Ｓ２１０〜Ｓ２１７）を行うことができ、それぞれ無駄な待ち時間を減らすことができる。つまり、パイプライン処理による演算処理及び転送処理の高速化が図れる。
【００４８】
画像処理でよく用いられるアルゴリズムのいくつかについて、本実施形態により演算を行った場合のステップ数、処理時間の例を表１に示す。
【００４９】
【表１】
0004302212.tif 000006
表１から明らかなように、本実施形態では、一般的な画像処理（例えば、平滑化、細線化、コンボリューション、相関、マスク処理）演算を完全並列処理により、非常に高速で行うことができる。表１に示される演算時間は、転送用シフトレジスタ４１０による画像データの転送時間は含んでいない。転送用シフトレジスタ４１０を設けていない場合は、この演算時間に加えて画像データを各演算素子４００に転送する時間が余分に必要となる。転送データ速度は、Ａ／Ｄ変換器２１０の変換スピードによって制限されるが、これを例えば、１ビット当たり１マイクロ秒とすると、１２８×１２８画素×８ビットの画像データを１２８列で並列転送した場合に要する時間は、１２８（画素）×８（ビット）×１（マイクロ秒／ビット）＝１ミリ秒となり、演算処理に要する時間と比較して数倍の時間が必要となることから、リアルタイムでの画像処理が困難になる。本実施形態では、この転送を演算処理と並行して行うことにより、この画像データについても１ミリ秒程度での処理が可能となる。したがって、これまでの視覚センサ装置では、演算処理速度、転送速度が遅いために制限されていたＦＡロボット制御などの分野への応用が可能になる。
【００５０】
本実施形態が目指しているのは、実用的な高速性と十分な解像度を有する画像処理システムである。解像度の目安としては、ＦＡシステムにおけるロボット制御には、受光素子１２０を１２８×１２８個以上配列する解像度が必要とされる。本実施形態によれば、受光素子アレイ１１と並列処理機構１４を分離でき、それぞれの集積度を高められるため、この解像度を十分に実現できる。また、処理速度の目安としては、ロボットのアクチュエータの速度（１〜１０ミリ秒）が必要である。本実施形態では、この処理速度は、前述したようにＡ／Ｄ変換器２１０におけるＡ／Ｄ変換処理速度によって決まるが、以下に述べるように、十分に高速化が可能である。
【００５１】
ここで、本実施形態での１画素あたりのＡ／Ｄ変換速度は、１ビットあたり１マイクロ秒となる。例えば、入力アナログ信号を６ビット（６４階調）でデジタル変換する場合には、１列分の１２８個の受光素子１２０の出力信号をデジタル変換するのに必要な時間は、６マイクロ秒×１２８＝０．７６８ミリ秒となる。画像処理については、各受光素子に１対１に対応して演算素子が配置され、全演算素子で並列処理されるため、表１に示すように、０．４ミリ秒以下でほとんどの演算処理が行える。さらに、演算処理と転送処理を並行して行えるので、それぞれの処理の空き時間を減らすことができ、処理全体の時間を短縮することができる。
【００５２】
また、前述したように本実施形態のＡ／Ｄ変換器は、最上位ビットからＡ／Ｄ変換を行う。したがって、所望のビット数まで変換した時点で、リセット信号Ｒを送出し、次の光信号のＡ／Ｄ変換に移ることにより、Ａ／Ｄ変換の階調を変更することができる。これにより、より高速で、複雑な処理を行うことが可能となる。例えば、移動物体のトラッキングをするような場合に、物体が高速で移動している場合は、画像を１ビットの２値レベルで演算処理するように制御すれば、転送時間は、前述の６ビットの時の６分の１の０．１２８秒に短縮され、高速フィードバック制御に適用できる。逆に、低速で動いている場合には、階調を上げることにより、より精度を向上させて、追従させることができる。
【００５３】
ただし、Ａ／Ｄ変換器から出力されるビット長を可変にする場合は、転送用シフトレジスタでは入力データのビット長を調整して固定長にする必要がある。なぜなら、例えば、通常のデータ長が８ビットの場合の転送用シフトレジスタには、固定長で８ビット×列画素数のシフトレジスタが用いられる。そして、８ビットずつ区切った個々のシフトレジスタがそれぞれの位置に対応する各画素用の転送用シフトレジスタとして機能する。したがって、ビット長を８ビットに合わせておかないと、画像データが対応する位置の転送用シフトレジスタに正しく転送されないことになるからである。このため、転送用シフトレジスタに送る時点でダミー信号を加えて合計８ビットになるようにすることでデータが正しく転送される。
【００５４】
以上の説明においては、図１に示されるように受光素子アレイを１つ用いているが、左右の目からの画像による立体視や、色画像（Ｒ、Ｇ、Ｂ）を用いた認識などにおいては、複数の受光素子アレイからの信号を同時に一つの並列処理機構に導いて演算処理を行うことも可能である。この場合は、転送用シフトレジスタを受光素子アレイの数だけ用意することにより、演算素子の演算中に、それぞれの受光素子からの画像データ信号を転送用シフトレジスタに転送することで、転送時間による遅れがほとんど無い高速画像処理システムが構築できることになる。
【００５５】
本発明に係る装置の最大の特徴は、０次モーメントおよび１次モーメントの演算を画像転送ラインに専用のモーメント演算器を用意することにより効率的に実現できることにある。この０次モーメント（画像総和）は、例えば照明光の明るさが変化するような対象を処理する場合に、画像のしきい値レベルの最適化やマッチング演算における規格化に不可欠な値である。さらに０次モーメントの値は、ｙ方向の重心を求めるために必要となる。また、１次モーメント（重心）は、対象物体の概略位置や速度を重心演算の算出によって求めておき、対象物の速度によって処理の方法を変えたり、適切な前処理方法を選択したりする場合に有効な情報となる。このモーメント演算は画像全てのデータを必要とするため、並列演算素子アレイによって演算する場合には多くのデータ転送を必要としてしまう。さらに、多くのデータの積分を桁あふれなく実行するには、十分なビット数を持ったシフトレジスタが必要となり、これを並列演算素子のすべてに用意することは集積化の点から難しい。そこで、本装置では、受光素子アレイによって得た画像データを列毎に伝送ラインを設けて転送を行うために、転送ラインの途中にモーメント演算器を挿入することで、並列演算素子へのデータ転送に要する時間をほとんど変えずに、画像処理の基本となる２つの特徴量（画像の総和および重心）を演算することが可能となる。この２つの特徴量を用いることで、並列演算素子における処理の選択や、照明系の制御、カメラの制御などを高速に行うことが可能となる。
【００５６】
モーメント演算器に入力される信号は、Ａ／Ｄ変換器アレイから出力される信号であるため最上位ビットからの信号列となる。演算を行うためには、桁上がりの処理のために最下位ビットから演算する必要があるため、図９に示されるようなビット反転器３７０をＡ／Ｄ変換器アレイの後ろに設置し、入力信号列を最下位ビット（ＬＳＢ）からに変更することで、より効率的な転送、演算が実現できる。このビット反転器３７０は、ＦＩＬＯ（First-In-Last-Out）型の８ビットメモリを２つ組み合わせて構成される。まず一方のＦＩＬＯメモリ３７１に、転送されてくる画像データを入れて、８ビットがいっぱいになった時点で、もう一方のＦＩＬＯメモリ３７２にデータ転送を切り替える。それと同時に、いっぱいになったＦＩＬＯメモリ３７１の後から入力されたビット（ＬＳＢ）から読み出しが行われるため、これを繰り返すことによって転送時間の損失が最小限のビット反転が実行できる。
【００５７】
【発明の効果】
以上説明したように、本発明によれば、受光素子と１対１に対応する演算素子を有しているので、並列処理により高速の画像処理が可能であるとともに、１列ごとにモーメント演算器を用意することで転送を行いながら画像の基本特徴量である総和と重心を求めることが可能となる。このように高速な近傍演算能力を持つ並列処理機構と、データ転送時に全体画素の特徴量を演算するモーメント演算器を組み合わせることで、画像処理の基本となる演算をそれぞれの演算回路で効率的に実行することができ、高速な画像認識が実行できる。
【００５８】
また、Ａ／Ｄ変換器を１列ごとに設けているので、Ａ／Ｄ変換器を素子毎に設けている場合に比較して、受光素子と演算素子間の伝送線の数が少なく、受光素子と演算素子を別々に製造、配置することが容易にできる。このため、両者とも集積度を最適にすることができ、多画素数の高速視覚センサ装置を容易に製作できる。Ａ／Ｄ変換器を列ごとに設けたため、Ａ／Ｄ変換の処理速度により、全体の処理速度が制限を受けるが、ＦＡロボット制御に十分な画素数といわれる１２８×１２８画素の映像を６４階調で処理する場合でも、ほとんどの画像処理が１ミリ秒以下で終了し、従来にない高速処理が可能である。
【図面の簡単な説明】
【図１】本発明の一実施形態に係るブロック図である。
【図２】図１の実施形態に係る概略構成図である。
【図３】図１の実施形態に係る受光素子アレイ、並列アンプ及びＡ／Ｄ変換器アレイの回路構成図である。
【図４】図１の実施形態に係る積分回路の詳細回路構成図である。
【図５】図１の実施形態におけるモーメント演算器のブロック図である。
【図６】図１の実施形態に係る演算素子及び転送用シフトレジスタのブロック図である。
【図７】図５のモーメント演算器における処理のフロー図である。
【図８】図６の演算素子及び転送用シフトレジスタの処理のフロー図である。
【図９】図１のモーメント演算器に追加可能なビット反転器のブロック図である。
【符号の説明】
１１…受光素子アレイ、１２…アンプ、１３…Ａ／Ｄ変換器アレイ、１４…並列処理機構、１５…制御回路、１６…インストラクション／コマンドバス、１７…モーメント演算器アレイ、１００…受光部、１１０…垂直受光部、１２０…受光素子、１３０…光電変換素子、１４０…スイッチ素子、１７０…モーメント演算器、１７１…転送用レジスタ、１７２…０次モーメント演算器、１７３…１次モーメント演算器、２００…信号処理部、２１０…Ａ／Ｄ変換器、２２０…積分回路、２２１…チャージアンプ、２２２…可変容量部、２２３…スイッチ素子、２３０…比較回路、２４０…容量制御機構、３００…タイミング制御部、３１０…基本タイミング部、３２０…垂直シフトレジスタ、３４０…制御信号部、３７０…ビット反転器、４００…演算素子、４０１…レジスタマトリックス、４０２…Ａラッチ、４０３…Ｂラッチ、４０４…ＡＬＵ、４１０…転送用シフトレジスタ、５００…対象物、５０１…テレビカメラ、５０２…画像処理装置、Ｃ１〜Ｃ４…容量素子、ＳＷ１１〜ＳＷ１４、ＳＷ２１〜ＳＷ２４…スイッチ素子。
【図１】
0004302212.tif 000007
【図２】
0004302212.tif 000008
【図３】
0004302212.tif 000009
【図４】
0004302212.tif 000010
【図５】
0004302212.tif 000011
【図６】
0004302212.tif 000012
【図７】
0004302212.tif 000013
【図８】
0004302212.tif 000014
【図９】
0004302212.tif 000015