JP4489305B2 - 高速視覚センサ装置 - Google Patents
高速視覚センサ装置 Download PDFInfo
- Publication number
- JP4489305B2 JP4489305B2 JP2000605967A JP2000605967A JP4489305B2 JP 4489305 B2 JP4489305 B2 JP 4489305B2 JP 2000605967 A JP2000605967 A JP 2000605967A JP 2000605967 A JP2000605967 A JP 2000605967A JP 4489305 B2 JP4489305 B2 JP 4489305B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- row
- data transfer
- arithmetic
- light receiving
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 230000000007 visual effect Effects 0.000 title claims description 37
- 238000012546 transfer Methods 0.000 claims description 215
- 238000012545 processing Methods 0.000 claims description 193
- 238000004364 calculation method Methods 0.000 claims description 152
- 230000007246 mechanism Effects 0.000 claims description 53
- 239000000872 buffer Substances 0.000 claims description 24
- 238000006243 chemical reaction Methods 0.000 claims description 23
- 238000000034 method Methods 0.000 description 107
- 230000008569 process Effects 0.000 description 98
- 239000011159 matrix material Substances 0.000 description 93
- 238000007792 addition Methods 0.000 description 41
- 230000006870 function Effects 0.000 description 29
- 230000010354 integration Effects 0.000 description 29
- 230000005484 gravity Effects 0.000 description 17
- 238000010586 diagram Methods 0.000 description 15
- 238000000605 extraction Methods 0.000 description 13
- 238000001514 detection method Methods 0.000 description 9
- 230000005540 biological transmission Effects 0.000 description 7
- 239000000758 substrate Substances 0.000 description 4
- 239000003990 capacitor Substances 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000002457 bidirectional effect Effects 0.000 description 2
- 239000000470 constituent Substances 0.000 description 2
- 238000009499 grossing Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000007781 pre-processing Methods 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- HSFWRNGVRCDJHI-UHFFFAOYSA-N Acetylene Chemical compound C#C HSFWRNGVRCDJHI-UHFFFAOYSA-N 0.000 description 1
- 102100040844 Dual specificity protein kinase CLK2 Human genes 0.000 description 1
- 102100040858 Dual specificity protein kinase CLK4 Human genes 0.000 description 1
- 101000749291 Homo sapiens Dual specificity protein kinase CLK2 Proteins 0.000 description 1
- 101000749298 Homo sapiens Dual specificity protein kinase CLK4 Proteins 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 230000002250 progressing effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004576 sand Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/0007—Image acquisition
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N25/00—Circuitry of solid-state image sensors [SSIS]; Control thereof
- H04N25/70—SSIS architectures; Circuits associated therewith
- H04N25/76—Addressed sensors, e.g. MOS or CMOS sensors
- H04N25/78—Readout circuits for addressed sensors, e.g. output amplifiers or A/D converters
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N25/00—Circuitry of solid-state image sensors [SSIS]; Control thereof
- H04N25/70—SSIS architectures; Circuits associated therewith
- H04N25/71—Charge-coupled device [CCD] sensors; Charge-transfer registers specially adapted for CCD sensors
- H04N25/75—Circuitry for providing, modifying or processing image signals from the pixel array
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Transforming Light Signals Into Electric Signals (AREA)
- Image Processing (AREA)
- Length Measuring Devices By Optical Means (AREA)
Description
本発明は、画像処理機能を備えた高速視覚センサ装置に関する。
背景技術
FAシステム等でロボットを高速で動作させるためには、高速の画像処理が必要とされる。例えば、視覚センサとアクチュエータの間でフィードバックループを形成するロボットの場合、アクチュエータはミリ秒単位で制御可能であるため、本来はこれに対応した画像処理速度が必要になる。ところが、現状のビジョンシステムでは画像処理速度がビデオフレームレートに限られているため、この画像処理速度に合わせた低速動作しかできず、ロボットの性能を十分に活かしきれていなかった。
一方、高速CCDカメラの中には1ミリ秒程度で画像を撮像できるものもあるが、これらは撮像した画像をいったんメモリに貯えて、後から読み出して処理を行う機構になっているため、画像解析などの用途には使えるが、実時間性はほとんどなく、ロボット制御などの用途には適用できなかった。
このような問題を解決するため、画像の取込部と処理部を一体として取り扱うビジョンチップの研究が進んでおり、マサチューセッツ工科大学、カリフォルニア工科大学、三菱電機などの研究が知られている(”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 Resisitive Networks”、James Hutchinson,et al.(“Computer”,Vol.21,March1988,pp.52−64,IEEE)、及び、“Artificial retinas−fast,versatile imageprocessors”、Kazuo Kyuma et al.,(“Nature”,Vol.372,10 November1994)。しかし、これらは主として集積化の容易なアナログの固定回路を用いており、出力信号の後処理が必要であったり、画像処理の内容が特定用途に限定されていて汎用性がないなどの問題点があった。
これらに対して汎用的な画像処理を行うことができるビジョンチップとしては、特開平10−145680号公報に開示された技術が知られている。この技術は、受光素子と1対1に対応させて演算素子を設け、A/D変換器を受光素子の行毎に設けているため、並列処理により演算時間を短縮するとともに、受光素子と演算素子間の伝送線を少なくすることができ、両者の集積度を最適にすることができるといった利点がある。
しかしながら、多くの画像処理において必要とされる情報である画像の重心(1次モーメント)を演算する場合には、その画素の位置情報(x方向の位置、y方向の位置)と画素データとの演算を行うので、予めそれぞれの画素の位置情報をそれぞれの演算素子のメモリーに保管しておく必要がある。上記特開平10−145680号公報の技術では、まず位置情報を制御回路から順に各演算素子に転送しておき、その位置データと、受光素子からの画像データを演算して出力しなければならず、位置情報の転送に時間を要してしまう。こうした基本的な画像演算処理の高速化が望まれていた。
発明の開示
そこで、本発明は、こうした問題点に鑑みて、簡単な回路構成で、基本的な画像演算を高速に処理することが可能な多画素数の高速視覚センサ装置を提供することを課題としている。
上記課題を解決するために本発明の高速視覚センサ装置は、複数の受光素子が複数の行及び列に2次元状に配列されて構成された受光素子アレイと、複数のA/D変換器が該受光素子アレイの該複数の行に1対1に対応して1次元状に配列されて構成され、各A/D変換器が、該対応する1行中の受光素子から順次読み出された出力信号をアナログ・デジタル変換するA/D変換器アレイと、複数の演算素子が、該受光素子アレイの該複数の受光素子と1対1に対応して複数の行及び列に2次元状に配列され、各演算素子が該A/D変換器アレイから転送されたデジタル信号について所定の演算を行う並列演算素子アレイからなる並列処理機構と、複数の列方向データ転送用データラインが前記並列処理機構の各列と1対1に対応して設けられ、各列方向データ転送用データラインが、対応する列に存在する複数の演算素子を接続し該対応する列の各演算素子とのデータ転送を行う列方向データ転送用バスと、複数の行方向データ転送用データラインが前記並列処理機構の各行と1対1に対応して設けられ、各行方向データ転送用データラインが、対応する行に存在する複数の演算素子を接続し該対応する行の各演算素子とのデータ転送を行う行方向データ転送用バスと、前記受光素子アレイ、前記A/D変換器アレイ、前記並列処理機構、前記列方向データ転送用バス、及び、前記行方向データ転送用バスを制御し、前記列方向データ転送用バスと前記行方向データ転送用バスとを介した各演算素子とのデータ転送を行う制御回路とを備え、前記制御回路が、前記各列方向データ転送用データラインを介して対応する演算素子へ転送するデータと前記各行方向データ転送用データラインを介して対応する演算素子へ転送するデータとの組み合わせを制御することで、前記各演算素子に対し、対応する列方向データ転送用データライン及び対応する行方向データ転送用データラインより受け取るデータの組み合わせに基づいた処理を行わせることを特徴とする。
本発明によれば、受光素子と1対1に対応させて演算素子が設けられているので、画像処理演算を並列処理により高速で行うことができる。また、A/D変換器を各行毎に設けることで伝送路の本数が少なくて済むという利点がある。
さらに、各演算素子に対して行方向および列方向に専用のデータバスを配置しているので、様々な画像処理演算を行うことができ、したがって、半導体による集積化に適したアーキテクチャを堅持したまま、柔軟な処理能力を達成できる。
例えば、制御回路は、各列方向データ転送用データラインに対し、対応する列の位置情報を示すデータを対応する列の演算素子にデータ転送させ、各行方向データ転送用データラインに対し、対応する行の位置情報を示すデータを対応する行の演算素子にデータ転送させ、各演算素子に対し、該データ転送された対応する行の位置情報を示すデータ及び対応する列の位置情報を示すデータに基づき、デジタル信号に対する所定の重心演算を行わせる重心演算制御部を有することが好ましい。この場合、専用のデータバスを行方向および列方向に配置しているので、画像処理の基本演算である重心演算で必要となる位置情報を少ないデータ転送系統で効率的に転送することができる。
また、該専用のデータバスにより、各演算素子に対して個別にアクセスすることも可能となっている。
このため、例えば、制御回路は、所定の演算素子と接続された列方向データ転送用データラインと行方向データ転送用データラインとに対し所定の組み合わせの演算制御データをデータ転送させることで、該所定の演算素子に対しデジタル信号に対する所定の演算を行わせる所定素子演算制御部を有することが好ましい。この場合、個々の演算素子に異なった演算処理を実行させることができる。
さらに、制御回路は、所定の演算素子と接続された列方向データ転送用データラインと行方向データ転送用データラインとに対し所定の組み合わせの演算制御データをデータ転送させることで、該所定の演算素子にその演算結果データを制御回路へ転送させるデータ転送制御部を有することが好ましい。この場合、例えば、特定の演算素子の演算結果を制御回路に転送させることができる。
ここで、列方向データ転送用バス及び行方向データ転送用バスのそれぞれに対応するデータバッファをさらに備えていることが好ましい。データバッファを設けることで、制御回路とデータ転送用バスとのデータ転送速度が低くても高速でのデータ転送が可能となる。並列処理機構、データ転送用バス、データバッファとを集積化すれば、演算素子からバッファまでのデータ転送の高速化を比較的容易に行える。
また、並列処理機構が、さらに、複数の転送用シフトレジスタが複数のA/D変換器と複数の演算素子行の各々と1対1に対応して配列され、各転送用シフトレジスタが、対応するA/D変換器から出力された対応する受光素子行に所属する受光素子の出力信号に相当するデジタル信号を、対応する行に所属する所定の演算素子に順次転送する転送用シフトレジスタアレイを有することが好ましい。このように演算素子への転送を専用のシフトレジスタにより行うことで転送中でも演算処理を行うことが可能である。したがって、転送処理、演算処理とも待ち時間を少なくして効率良く行うことができ、全体の処理時間を短縮できる。この結果、パイプライン的な動作が可能となり、高速での画像処理、特に実時間的な処理が可能となる。
また、本発明の高速視覚センサ装置は、複数の受光素子が複数の行及び列に2次元状に配列されて構成された受光素子アレイと、複数のA/D変換器が該受光素子アレイの該複数の行に1対1に対応して1次元状に配列されて構成され、各A/D変換器が、該対応する1行中の受光素子から順次読み出された出力信号をアナログ・デジタル変換するA/D変換器アレイと、複数の演算素子が、該受光素子アレイの該複数の受光素子と1対1に対応して複数の行及び列に2次元状に配列され、各演算素子が該A/D変換器アレイから転送されたデジタル信号について所定の演算を行う並列演算素子アレイからなる並列処理機構と、複数の列方向データ転送用データラインが前記並列処理機構の各列と1対1に対応して設けられ、各列方向データ転送用データラインが、対応する列に存在する複数の演算素子を接続し該対応する列の各演算素子とのデータ転送を行う列方向データ転送用バスと、複数の行方向データ転送用データラインが前記並列処理機構の各行と1対1に対応して設けられ、各行方向データ転送用データラインが、対応する行に存在する複数の演算素子を接続し該対応する行の各演算素子とのデータ転送を行う行方向データ転送用バスと、前記受光素子アレイ、前記A/D変換器アレイ、前記並列処理機構、前記列方向データ転送用バス、及び、前記行方向データ転送用バスを制御し、前記列方向データ転送用バスと前記行方向データ転送用バスとを介した各演算素子とのデータ転送を行う制御回路とを備え、前記制御回路が、各演算素子からのデータを、対応する列方向データ転送用データラインと対応する行方向データ転送用データラインとを介して受け取り、所定のデータが転送された列方向データ転送用データラインと該所定のデータが転送された行方向データ転送用データラインとの組み合わせに基づいて、該所定のデータを出力した演算素子の位置を求めることを特徴とする。
発明を実施するための最良の形態
本発明の実施形態に係る高速視覚センサ装置を第1図〜第16図に基づき説明する。
なお、図面の説明においては同一要素には同一符号を付し、重複する説明を省略する。
第1図は、本実施形態に係る高速視覚センサ装置10のブロック図である。また、第2図に、当該センサ装置10の構成例を示す。
まず、第1図により、センサ装置10全体の構成を簡単に説明する。本実施形態の高速視覚センサ装置10は、受光素子アレイ11と、A/D変換器アレイ13と、並列処理機構14と、制御回路15と、x方向データバス17及びy方向データバス18と、x方向データバッファ19及びy方向データバッファ20、インストラクション/コマンドバス16、及び、後述する出力バス155(第6図)とから構成されている。
受光素子アレイ11には、N1個xN2個の受光素子120が2次元状(すなわち、N1列xN2行)に配置されている。すなわち、受光素子アレイ11は、N1個の受光素子120が水平方向(x方向)に並んで構成された水平受光部110が、N2個、水平方向(x方向)に直交する垂直方向(y方向)に配列されて構成されている。
A/D変換器アレイ13には、N2個のA/D変換器210が1次元状(垂直方向(y方向))に配列されている。当該N2個のA/D変換器210は、受光素子アレイ11内のN2個の水平受光部110に1対1に対応しており、対応する水平受光部110に所属する受光素子120から出力された電荷を順次電圧信号に変換しさらにA/D変換するためのものである。
並列処理機構14には、N1個xN2個の演算素子(PE(processing element))400が、受光素子120と1対1に対応して、2次元状(すなわち、N1列xN2行)に配置されて構成された演算素子アレイ40が設けられている。この演算素子アレイ40には、そのN2個の演算素子行に1対1に対応して、N2個の転送用シフトレジスタライン(画像転送用シフトレジスタライン)420が付加されている。各転送用シフトレジスタライン420は、対応する行の演算素子400の個数(N1)に等しいN1個の転送用シフトレジスタ(画像転送用シフトレジスタ)410が直列接続されて構成されている。各転送用シフトレジスタ410が、対応する行内の対応する演算素子400に接続されている。
制御回路15は、本センサ装置10の回路全体に命令信号やデータ等を送って制御するためのものである。x方向データバス17は、各列ごとの演算素子400と接続され、列毎の各演算素子400にデータを転送するためのものである。また、y方向データバス18は、各行ごとの演算素子400と接続され、行毎の各演算素子400にデータを転送するためのものである。さらに、x方向データバッファ19がx方向データバス17と制御回路15とに接続されており、y方向データバッファ20がy方向データバス18と制御回路15とに接続されている。こうして、x方向データバス17は、x方向データバッファ19を介して制御回路15と接続され、y方向データバス18は、y方向データバッファ20を介して制御回路15と接続されている。インストラクション/コマンドバス16は、制御回路15からの信号を受光素子アレイ11、A/D変換器アレイ13、及び、並列処理機構14に送るためのものである。なお、後述する第6図に示すように、制御回路15は、さらに、単一の出力バス155を介して全演算素子400と接続されている。
本センサ装置10は上記構成となっているため、並列処理機構14と受光素子アレイ11との間を、N2本のデータラインで接続することができる。したがって、第2図に示されるように受光素子アレイ11と並列処理機構14とを別々の基板に形成し、個々の動作を確認できる構成とすることで、センサ装置10の安定した生産が可能となっている。また、このように、受光素子アレイ11と並列処理機構14とを別々の基板に形成することで、双方を高集積化することが可能であり、また、それぞれの装置の特性に合わせた加工工程を採用できる点からも、安定した生産が可能となっている。x方向、y方向のそれぞれのデータバス17、18及びデータバッファ19、20は、図示されているように、並列処理機構14と同一の基板上に形成してもよいし、別の基板上に形成してもよい。一体として集積化すれば、データバッファ19、20と演算素子400間のデータ転送速度を高速化させることが容易であり、特に、好ましい。また、本センサ装置10の各構成要素は、全てCMOSプロセスによって作成可能であるため、すべての構成要素を1チップ化することも可能であり、これにより大幅なコストダウンを図ることもできる。
続いて、各回路の内部構成について説明する。
第3図は、制御回路15の構成ブロック図である。制御回路15は、CPU150,メモリ151,画像取り込み制御部300(第4図)、及び、外部との入出力インターフェース152等が、バス153で接続されて構成されている。メモリ151には、CPU150によって実行される後述の視覚センサ処理プログラム(第8図)、及び、当該視覚センサ処理プログラム内の画像処理ステップ(第8図のS110)において並列処理機構14の画像並列処理を制御するためのプログラム(例えば、第9図〜第12図、第13図、第14図、第15図、第16図)が格納されている。これら視覚センサ処理プログラムや画像処理プログラムは、外部装置(例えば、外部コンピュータ)1000より、入出力インターフェース152を介して、メモリ151に書き込まれる。なお、バス153は、図示しないコマンドバスやデータバスを備えており、第1図のインストラクション/コマンドバス16やデータバツファ19,20、及び、第6図の出力バス155に接続されている。
CPU150は、メモリ151内の視覚センサ処理プログラム(第8図)に基づいて、画像取り込み制御部300を介して受光素子アレイ11とA/D変換器アレイ13とを制御すると共に、並列処理機構14を制御する。より詳しくは、CPU150は、画像取り込み制御部300(第4図)を制御して(第8図のS101)、受光素子アレイ11とA/D変換器アレイ13に画像の取り込みを行わせる。CPU150はまた、並列処理機構14内の転送用シフトレジスタ410によるデータ転送と演算素子400による演算とを制御する(第8図のS102〜S104、S110)ことで、SIMD(single instruction and multi data stream)型の並列演算処理を行わせる。CPU150は、さらに、並列処理機構14の並列演算処理実行中必要な演算を行ったり、並列処理機構14による処理結果に基づいて必要な演算や判別動作を行う。CPU150は、さらに、入出力インターフェース152を介して、外部装置1000たる外部コンピュータとの通信を行ったり、別の外部装置1000たる外部アクチュエータを制御したりする。例えば、CPU150は、得られた演算結果を外部コンピュータに出力したり、当該演算結果に基づき外部アクチュエータを制御したりする。
次に、画像取込部たる受光素子アレイ11とA/D変換器アレイ13の構成を、第4図及び第5図を参照して詳細に説明する。
受光素子アレイ11は、光を検出する受光部として機能し、A/D変換器アレイ13は、当該受光部11からの出力信号を電流/電圧変換し、さらに、A/D変換処理する信号処理部として機能する。制御回路15の画像取り込み制御部300が、受光素子アレイ11とA/D変換器アレイ13に接続されており、当該受光部11及び信号処理部13に動作タイミングの指示信号を通知するタイミング制御部として機能する。
まず、受光素子アレイ(受光部)11の構成を説明する。
第4図に示すように、受光素子アレイ11では、各受光素子120が、入力した光強度に応じて電荷を発生する光電変換素子130と、光電変換素子130の信号出力端子に接続され、水平走査信号Vi(i=1〜N1)に応じて光電変換素子130に蓄積された電荷を出力するスイッチ素子140とを1組として構成されている。この受光素子120が水平方向(x方向)に沿ってN1個配置され、各受光素子120のスイッチ素子140が電気的に接続されて水平受光部110を構成している。そして、この水平受光部110を水平方向に直交する垂直方向(y方向)に沿ってN2個配列することにより受光部11が構成されている。したかって、受光部11には、受光素子120i,j(i=1〜N1、j=1〜N2)が2次元状にN1列xN2行、配列されている。
次に、同じく第4図により、信号処理部たるA/D変換器アレイ13の構成を説明する。
A/D変換器アレイ13は、A/D変換器210j(j=1〜N2)をN2個配置して構成されている。各A/D変換器210j(j=1〜N2)は、対応する水平受光部110j(j=1〜N2)から転送されてきた電荷を個別に取り出して処理し、この電荷強度に対応するデジタル信号を出力するためのものである。
各A/D変換器210jは、チャージアンプ221jを含む積分回路220jと、比較回路230j、及び、容量制御機構240j,の3つの回路から構成されている。
積分回路220jは、水平受光部110jからの出力信号を入力として、この入力信号の電荷を増幅するチャージアンプ221jと、チャージアンプ221jの入力端子に一方の端が接続され、出力端子に他方の端が接続された可変容量部222jと、チャージアンプ221jの入力端子に一方の端が接続され、出力端子に他方の端が接続されたスイッチ素子223jとからなる。スイッチ素子223jは、画像取り込み制御部300からのリセット信号Rに応じてON、OFF状態となり、積分回路220jの積分、非積分動作を切り替えるためのものである。
第5図は、積分回路220の詳細構成図である。本図は、4ビットつまり16階調の分解能を持つA/D変換機能を備える積分回路の例であり、以下、この回路構成により説明する。
可変容量部222は、チャージアンプ221の水平受光部110からの出力信号の入力端子に一方の端子が接続された容量素子C1〜C4と、容量素子C1〜C4の他方の端子とチャージアンプ221の出力端子との間に接続され、容量指示信号C11〜C14に応じて開閉するスイッチ素子SW11〜SW14と、容量素子C1〜C4とスイッチ素子SW11〜SW14との間に一方の端子が接続され、他方の端子がGNDレベルと接続されて、容量指示信号C21〜C24に応じて開閉するスイッチ素子SW21〜SW24とから構成されている。なお、容量素子C1〜C4の電気容量C1〜C4は、
C1=2C2=4C3=8C4
C0=C1+C2+C3+C4
の関係を満たす。ここで、C0は積分回路220で必要とする最大電気容量であり、受光素子130(第4図参照)の飽和電荷量をQ0、基準電圧をVREFとすると、
C0=Q0/VREF
の関係を満たす。
再び、第4図に戻り、A/D変換器210jの積分回路220j以外の回路を説明する。比較回路230jは、積分回路220jから出力された積分信号Vsの値を基準値VREFと比較して、比較結果信号Vcを出力する。容量制御機構240jは、比較結果信号Vcの値から積分回路220j内の可変容量部222jに通知する容量指示信号Cを出力すると共に、容量指示信号Cに相当するデジタル信号D1を出力する。
なお、以上、A/D変換器アレイ13が4ビットつまり16階調の分解能を持つ場合について説明したが、A/D変換器アレイ13は、6ビット、8ビット等、他のビット構成の分解能を持つ構成であってもよい。
上記構成の画像取り込み部11及び13は、制御回路15内の画像取り込み制御部300により、画像取り込みのタイミングを制御される。第4図に示すように、画像取り込み制御部300は、全回路11及び13のクロック制御を行う基本タイミングを発生する基本タイミング部310と、基本タイミング部310から通知された水平走査指示に従って水平走査信号Viを発生する水平シフトレジスタ320と、リセット指示信号Rを発生する制御信号部340とから構成されている。
次に、並列処理機構14の構成を説明する。
既述のように、並列処理機構14には、第1図に示すように、受光素子アレイ11のN2個の水平受光部110j(j=1〜N2)及びA/D変換器アレイ13のN2個のA/D変換器210j(j=1〜N2)に対応して、N2個の転送用シフトレジスタライン420j(j=1〜N2)が設けられている。各転送用シフトレジスタライン420j(j=1〜N2)には、複数ビット(この場合、4ビット)の転送用シフトレジスタ410i,jが、N1個、直列接続されている。第6図に示すように、コントローラー5が、インストラクション/コマンドバス16を介して、各転送用シフトレジスタ410i,j(i=1〜N1、j=1〜N2)に接続されている。コントローラー5は、転送開始信号を各シフトレジスタ410i,jに出力することより、A/D変換器アレイ13からのデータを必要な演算素子400の位置まで転送させる。
また、並列処理機構14には、N1個xN2個の受光素子120i,j(i=1〜N1,j=1〜N2)に1対1に対応して、演算素子400i,j(1=1〜N1,j=1〜N2)がN1xN2個2次元状に配列されている。各演算素子400i,j(i=1〜N1,j=1〜N2)は、対応するシフトレジスタライン420j(j=1〜N2)の対応する転送用シフトレジスタ410i,j(i=1〜N1,j=1〜N2)に接続されている。第6図に示すように、コントローラー5が、インストラクション/コマンドバス16を介して各演算素子400i,jに接続されており、当該演算素子400における演算処理を制御する。
次に、出力バス155について説明する。
第6図に示すように、全演算素子400が単一の出力バス155に接続されている。ここで、出力バス155は、単一の1ビット信号線から構成されている。当該出力バス155は、全演算素子400に接続されているため、全演算素子400の出力のOR論理演算結果を制御回路15に通信するワイヤードOR回路(wired OR 回路)の機能を有する。このため、制御回路15は、全演算素子400の出力信号をまとめてから受け取ることができ、スキャンを用いることなく高速に出力信号を受け取ることができる。
次に、x方向データバス17とy方向データバス18について説明する。
なお、x方向データバス17とy方向データバス18としては、例えば、制御回路15から演算素子400へのデータ転送/書き込み機能のみを有する一方向性のデータバスを利用することができる。
x方向データバス17は、第1図に示すように、複数(この場合N1個)の1ビットデータライン170i(1≦i≦N1)から構成されている。各1ビットデータライン170iが、対応する演算素子列iに位置する全N2個の演算素子400(i、j)(1≦j≦N2)と接続されている。各1ビットデータライン170iはまた、x方向データバッファ19を介して、制御回路15に接続されている。かかる構成により、各1ビットデータライン170iは、制御回路15からのデータを、x方向データバッファ19を介して、対応する列i内に位置する各演算素子400(i、j)に転送するようになっている。
同様に、y方向データバス18は、複数(この場合N2個)の1ビットデータライン180j(1≦j≦N2)から構成されている。各1ビットデータライン180jが、対応する演算素子行jに位置する全N1個の演算素子400(i,j)(1≦i≦N1)と接続されている。各1ビットデータライン180iはまた、y方向データバッファ20を介して、制御回路15に接続されている。かかる構成により、各1ビットデータライン180iは、制御回路15からのデータを、y方向データバッファ20を介して、当該対応する行j内に位置する各演算素子400(i,j)に転送するようになっている。
次に、演算素子400の構造について、第6図に示すブロック図を参照して、より詳細に説明する。
演算素子400は、各素子が共通の制御信号で制御されるSIMD型の並列処理を行う構造になっており、1素子あたりのトランジスタ数を削減し、並列処理機構14の集積化を図り、素子数を増やすことができるようになっている。
より詳しくは、演算素子400は、4x8ビットのランダムアクセス可能な1ビットシフトのレジスタマトリックス401と、Aラッチ402、Bラッチ403、及び、演算論理ユニット(ALU)404とで構成されている。レジスタマトリックス401は、データ保持と入出力のためのものである。より詳しくは、レジスタマトリックス401は、対応する受光素子120の出力信号に相当するデジタル信号D1をシフトレジスタ410から入力し収容するためのものである。レジスタマトリックス401はまた、4近傍の演算素子400中のレジスタマトリックス401と直接接続しており、これらに収容されているデジタル信号をも収容することができる。レジスタマトリックス401は、さらに、x方向データバス17の対応するx方向データライン170i、及び、y方向データバス18の対応するy方向データライン180jに接続され、両方のデータバスを利用してデータ転送を行うことができるようになっている。ALU404は、下位ビットから1ビットずつ順次演算する順次ビットシリアル演算を行うためのものである。Aラッチ402、Bラッチ403は、レジスタマトリックス401に保持されている信号を収容し、ALU404での演算に供するためのものである。
以上の構成により、演算素子400では、Aラッチ402、Bラッチ403がそれぞれレジスタマトリクス401内の任意のレジスタからデータを読み込み,ALU404がそのデータをもとに演算を行なう。演算結果は、再び、レジスタマトリクス401内の任意のレジスタに書き込まれる。演算素子400は、この作業を1サイクルとして繰り返し行うことで、さまざまな演算を実行できるようになっている。
より詳しくは、ALU404は、1ビットの演算器で、論理積(AND),論理和(OR),排他的論理和(XOR),加算(ADD)、Carryつき加算などの演算機能を有している。1度に実行できるのは1ビットの演算だけであり,多ビット演算は1ビットずつシリアルに演算を行なうことで実行する。複雑な演算は上記演算機能の組み合わせとして記述できるため、ALU404に対し上記演算機能の中から毎回一つずつを選択させながら繰り返し演算を行わせることで、複雑な演算を実現するようになっている。例えば、乗算は加算の組み合わせとして記述できるため、加算を複数回繰り返し行うことで実現する。減算は、引こうとする数をビット反転して1を足すことで負の数とし、これを足し算することで実現できる。割り算については、例えば、割る数を8,4,2というような数字にして、ビットシフトする(例えば、「割る数が8」の場合、ビットを3ビット右にシフトする)ことにより実現する。さらに、絶対値を求めるためには、マイナスの数(サインビットが1)に対して、符号反転、すなわち、ビット反転して1を足すことで、実現する。
レジスタマトリックス401は、第7(A)図に示すように、ランダムにアクセスできる1ビットのレジスタ4010を24個並べ、さらに、外部や近傍演算素子400との入出力用に8個の機能レジスタ4012を並べた構成となっており、これら全体が1つのアドレス空間として扱われる。第6図において、各レジスタ4010、4012内に記載されている数は、当該レジスタに割り当てられたアドレスを示す。具体的には、24個のレジスタ4010にアドレス「0」〜「23」が割り振られ、8個の機能レジスタ4012にアドレス「24」〜「31」が割り振られている。かかる構成により、レジスタ内のデータを読み書きするのと同じ方法で入出力データとアクセスできるようになっている。
第7(A)図に示すように、レジスタマトリックス401は、これら32個のレジスタ4010,4012に接続された1個のOR回路4014をさらに備えており、レジスタ4010,4012は、すべて、このOR回路4014を介して、Aラッチ402及びBラッチ403に接続されている。レジスタ4010,4012の内の一つのアドレスが選択されると、選択されたレジスタのみがその内容を出力し,選択されていないレジスタは全て0を出力する。全てのレジスタのORをとったものが、レジスタマトリックス401全体の出力として、Aラッチ402またはBラッチ403に出力される。
機能レジスタ4012は主に入出力に用いられる。具体的には、アドレス「29」の機能レジスタ4012は、対応する転送用シフトレジスタ410に接続されており、当該転送用シフトレジスタ410からの入力に用いられる。また、アドレス「24」の機能レジスタ4012は、上下左右の4近傍の演算素子400のレジスタマトリックス401への出力に用いられる。アドレス「24」〜「27」の機能レジスタ4012は、それぞれ、当該4近傍の演算素子400のうちの対応する1個の演算素子400のレジスタマトリックス401からの入力に用いられる。アドレス「28」の機能レジスタ4012は、出力バス155に接続されており、制御回路15への出力アドレスとして用いられる。なお、全演算素子400(i,j)におけるレジスタマトリックス401のアドレス「28」が当該単一の出力バス155に接続されている。アドレス「30」の機能レジスタ4012は、y方向データバス18内の対応するy方向データライン180jに接続されており、当該y方向データライン180jからのデータの入力に用いられる。また、アドレス「31」の機能レジスタ4012は、x方向データバス17内の対応するx方向データライン170iに接続されており、当該x方向データライン170iからのデータの入力に用いられる。なお、アドレス「28」の機能レジスタ4012は、読み込み時には常に0を読み込むようになっている。 制御回路15がレジスタマトリクス401へのアクセスとALU404の演算処理を制御することにより、演算素子400における演算及び入出力の全処理を制御する。例えば、転送用シフトレジスタ410からの入力をレジスタマトリックス401のアドレス「0」に書き込みたいときは,0(レジスタアドレス「28」)とセンサ入力(レジスタアドレス「29」)のORをとってレジスタアドレス「0」に書き込む命令を演算素子400に出力する。なお、制御回路15は、第7(B)図に示すように,基本クロックCLKの4倍を1サイクルとし,この間に、各種クロックCLK2,CLK4を供給しながら、Aラッチの読み込み、Bラッチの読み込み,演算結果の書き込みを順に行なう。かかる処理を複数サイクル繰り返し行うことで、レジスタマトリックス401への必要な入出力とALU404による演算を行う。
次に、第4図〜第6図を参照して、本実施形態の動作について説明する。
まず、画像取り込み部11及び13の動作について説明する。
画像取り込み制御部300は、まず、リセット信号Rを有為に設定し、第5図に示す可変容量部222のSW11〜SW14を全て「ON」、SW21〜SW24を全て「OFF」状態にする。これにより、チャージアンプ221の入力端子と出力端子間の容量値をC0に設定する。それと同時に、第4図に示す全てのスイッチ素子140を「OFF」状態とし、水平走査信号Viをいずれの受光素子120i,jも選択しない状態に設定する。この状態から、リセット指示信号Rを非有為に設定し、各積分回路220での積分動作を開始させる。
積分動作を開始させると、第4図に示すN2個の各水平受光部110jにある第1番目の受光素子12011,jのスイッチ素子140のみを「ON」とする水平走査信号V1が出力される。スイッチ素子が「ON」になると、それまでの受光によって光電変換素子130に蓄積された電荷Q1は、電流信号として受光部11から出力される。つまり、光電変換素子の信号を読み出すことができる。電荷Q1は容量値C0に設定された可変容量部222に流入する。
次に、第5図により積分回路220内部の動作を説明する。容量制御機構240(第4図参照)は、SW12〜SW14を開放した後、SW22〜24を閉じる。この結果、積分信号VSは、
VS=Q/C1
で示す電圧値として出力される。積分信号VSは、比較回路230に入力して、基準電圧値VREFと比較される。ここで、VSとVREFの差が、分解能の範囲以下、すなわち±(C4/2)以下の時は、一致したものとみなし、更なる容量制御は行わず、積分動作を終了する。分解能の範囲で一致しないときは、更に容量制御を行い、積分動作を続ける。例えば、VS>VREFであれば、容量制御機構240は、更に、SW22を開放した後に、SW12を閉じる。この結果、積分信号VSは、
VS=Q/(C1+C2)
で示す電圧値となる。この積分信号VSは、後続の比較回路230(第4図)に入力して、基準電圧値VREFと比較される。一方、VS<VREFであれば、容量制御機構240は、更に、SW11及びSW22を開放した後に、SW12及びSW21を閉じる。この結果、積分信号VSは、
VS=Q/C2
で示す電圧値となる。この積分信号VSは、後続の比較回路230に送出され、基準電圧値VREFと比較される。
以後、同様にして、積分回路220→比較回路230→容量制御機構240→積分回路220のフィードバックループによって、積分信号VSが基準電圧値VREFと分解能の範囲で一致するまで、比較及び容量設定(SW11〜SW14及びSW21〜SW24のON/OFF制御)を順次繰り返す。積分動作が終了した時点のSW11〜SW14のON/OFF状態を示す容量指示信号C11〜C14の値は、電荷Q1の値に対応したデジタル信号であり、最上位ビット(MSB)の値がC11、最下位ビット(LSB)の値がC14である。こうしてA/D変換が行われ、これらの値をデジタル信号D1として、演算素子アレイ14に出力する。以上述べたように、この装置では、デジタル信号D1の各ビット値は、MSB側からLSB側へ1ビットずつ順に定まる。
このように、容量C1〜C4が一つずつONされながら、比較電圧VREFとの比較が行われ、その比較結果が出力デジタル信号D1として出力される。すなわち、まず、容量C1がオンとされ、積分信号VS=Q/C1となり、このVSがVREFと比較される。VSが大きければ“1”、小さければ“0”となり、これがMSB(最上位ビット)として出力される。次に、C2がオンとされ、VS=Q/(C1+C2)(MSB=1の時)、または、VS=Q/C2(MSB=0の時)が得られ、VREFと比較される。VSが大きければ“1”、小さければ“0”となり、これが2ビット目として出力される。以上の処理が必要なビット数まで繰り返されることで、A/D変換が実行される。
第1番目の受光素子1201,jの光電出力に相当するデジタル信号の送出が終了すると、リセット信号Rが有為とされ、再び、非有為にして、可変容量部222jの容量値を初期化した後に、各水平受光部110jの第2番目の受光素子12022,jのスイッチ素子140のみを「ON」とする水平走査信号V2を出力し、上述と同様の動作により、第2番目の受光素子1202,jの光電出力を読み出し、これに相当するデジタル信号を送出する。以下、水平走査信号を切り替えて、全受光素子120の光電出力を読み出し、相当するデジタル信号を並列処理機構14に出力する。
次に、演算素子400の動作を第6図により説明する。
A/D変換されたデジタル信号は、転送用のシフトレジスタ410を介してそれぞれの受光素子120i,jに対応する演算素子400i,jのレジスタマトリックス401に送られる。この転送は、対応する転送用シフトレジスタライン420j内において、転送用シフトレジスタ410に格納された信号を順次隣の画素の転送用シフトレジスタ410に転送することによって行われる。転送用シフトレジスタ410を備えることにより、演算素子400での演算処理と独立して転送用シフトレジスタでの転送処理を行うことができる。したがって、演算素子400において処理演算を行わせている間に、転送用シフトレジスタ410に次のデータを転送させるパイプライン的な処理が可能となり、演算素子400におけるより高速なフレームレートでの演算処理が可能となる。また、転送用シフトレジスタ410は、制御回路15からの転送開始の信号に基づいて、A/D変換されたデータの転送を開始し、(行方向の素子数xアナログレベル)分だけビットシフトによる転送を行った後、「データ転送完了」の信号を制御回路15に送り返すことで効率的な転送を行うことができる。このように、演算処理と転送処理を並列していわゆるパイプライン処理を行うことにより、両処理においてフレーム毎の処理の間の待ち時間を減らすことができ、より高速な画像処理が可能となる。
演算素子400内部での画像処理演算は、以下の通りである。すなわち、必要に応じて、各演算素子400間でそれぞれのレジスタマトリックス401に収容された信号の転送を行い、x方向データバス17、y方向データバス18と各バッファ19、20を介した制御回路15からのデータ、制御信号の転送を行った後、演算に必要な信号をレジスタマトリックス401からAラッチ402とBラッチ403に読み出し、ALU404で所定の演算を行い、計算結果を、レジスタマトリックス401及び出力バス155を介して、制御回路15に出力する。
並列処理機構14では、上記画像処理演算を全演算素子400において同時に並列処理するため、極めて高速の演算が可能である。制御回路15は、並列処理機構14の計算結果を、外部装置1000たる外部コンピュータや他の外部機器へ出力する。例えば、当該計算結果を、外部機器のオン/オフ信号として利用する。制御回路15は、また、並列処理機構14の計算結果に基づき、必要な演算を行った後その演算結果を外部回路1000に出力するようにしてもよい。
次に、第8図を参照して、本センサ装置10による画像入力から、転送、及び、演算終了までの一連の視覚センサ処理について説明する。
制御回路15のCPU150は、画像取り込み制御部300(第4図)を制御することで、リセット信号Rの有為/非有為と水平同期信号Viを順次切り替え、もって、受光素子アレイ11の各行j(j=1,…N2)において、各受光素子120i,j(以下、受光素子120(x、y)という)から出力された画像データ(フレームデータ:以下、I(x,y)という)を順番に対応するA/D変換器210jを介して並列処理機構14に入力させる(S101)。
送られて来たデータを、対応する各行j内の転送用シフトレジスタ410にて、次々に転送させていく(S102)。そして、受光素子120に対応する位置(i,j)(以下、(x、y)という)の転送用シフトレジスタ410i,jにデータが転送されるまでこの転送処理を続ける(S103)。
転送が終了したら、転送用シフトレジスタ410から対応する演算素子400i,j(以下、演算素子400(x、y)という)のレジスタマトリックス401へと、当該画素のデータI(x,y)を転送する(S104)。具体的には、第6図に示されるように、複数ビット(この場合、4ビット)で構成されている転送用シフトレジスタ410からレジスタマトリックス401へと1ビットずつ順番にデータを格納していく。次に、S110において、各演算素子400を制御することにより、必要な並列演算処理を行う。
転送用シフトレジスタ410が各演算素子400へのデータ転送を完了すると、各演算素子400を制御してS110の並列演算処理を行っている間に次のフレームの処理へと移り(S105)、S101〜S103を実施して、受光素子アレイ11とA/D変換器アレイ13、及び、転送用シフトレジスタ410を制御して、次のフレームの入力/転送動作を行う。一方、各演算素子400を用いた並列演算処理についても、1フレームの処理(S110)が終了すると、次のフレームの処理へと移行し(S106)、次のフレームの画像データが各転送用シフトレジスタ410から演算素子400のレジスタマトリックス401へと転送され(S104)、当該次のフレームの並列演算処理を開始する(S110)。これを繰り返すことにより、受光素子アレイ11とA/D変換器アレイ13、及び、転送用シフトレジスタ410が次のフレームのデータを入力/転送している間(S101〜S103)に演算素子400を用いた演算処理(S110)を行うことができ、それぞれ無駄な待ち時間を減らすことができる。
次に、演算素子400を用いた並列画像処理(S110)の実行動作を、いくつかの画像処理について詳細に説明する。なお、これら画像処理工程では、制御回路15のCPU150が全演算素子400を同時に並列制御するようになっており、演算処理が非常に高速に行われる。
(実施例1)
本実施形態では、x方向データバス17、y方向データバス18を介して外部から高速で演算データあるいは演算制御データを各演算素子に供給することができる。したがって、S110の演算の際に各演算素子400において画像情報以外のデータを必要とするような演算処理を行う場合も、極めて高速の演算が可能となる。例えば、画像処理工程(S110)において、位置情報データを必要とする「重心演算」を行う場合、この位置情報を外部からデータとして供給して重心演算処理を行う。以下、この重心演算処理を画像処理工程(S110)にて実行する場合の動作を詳細に説明する。
なお、制御回路15のメモリ151は、各画素のx方向位置情報(以下、単に「xアドレス」と呼ぶ)とy方向位置情報(以下、単に「yアドレス」と呼ぶ)とを予め格納している。具体的には、xアドレスとして、「1」〜「N1」の値を示す2進数データを格納し、yアドレスとして、「1」〜「N2」の値を示す2進数データを格納している。
ここで、重心演算とは、x方向およびy方向のそれぞれについての重みづけ総和の演算が基本となる演算である。重心座標Gcは、画像上の各画素位置(x、y)の画像強度のデータをI(x,y)として以下の計算式(1)により求められる。
つまり、重心演算を行うためには、各演算素子400において当該画素のデータI(x、y)にその位置情報(x、y)を掛け合わせてその和を求める必要があるため、予め画素の位置情報(x、y)を各演算素子に転送しておく。
重心のx座標を求める際には、画像のx方向の位置情報と画像強度I(x、y)とを掛け合わせてx方向モーメントx・I(x、y)を求め、さらに、全画素のx方向モーメントを足し合わせて得られるx方向モーメント総和ΣΣx・I(x、y)を画像強度総和ΣΣI(x、y)で割ることで、重心のx座標を求めることができる。なお、画像強度総和ΣΣI(x、y)は、全画素の画像強度を足し合わせて求めることができる。重心のy座標についても、同様に、各画素について画像のy方向の位置情報と画像強度I(x、y)とを掛け合わせてy方向モーメントy・I(x、y)を求め、さらに、全画素のy方向モーメントを足し合わせて得られるy方向モーメント総和ΣΣy・I(x、y)を画像強度総和ΣΣI(x、y)で割ることで得られる。
したがって、入力画像の重心位置を求めるためには、第9図に示すような重心演算処理(S300)を、画像処理工程S110(第8図)にて行えば良い。
当該重心演算処理(S300)では、まず、S350にて画像強度総和ΣΣI(x、y)を求め、次に、S400にて、重心のx座標を求め、さらに、S500にて、重心のy座標を求める。
なお、重心演算処理(S300)がスタートした際には、入力画像Dの各画素の画像データI(x、y)は、既に、S104(第8図)にて、転送用シフトレジスタ410から各演算素子400(x、y)のレジスタマトリックス401へ転送され、当該レジスタマトリックス401のある領域へ格納されている。
まず、画像強度総和ΣΣI(x、y)の演算処理(S350)の処理内容について、第10(A)図を参照して、詳細に説明する
当該画像強度総和演算処理(S350)では、CPU150は、まず、S360にて、画像強度値I(x、y)の総和を求めるための総和演算処理を行う。
以下、この総和演算処理(S360)について、第10(B)図を参照して詳細に説明する。
まず、総和を求めようとする目的データ(この場合、画像データI(x、y))を、レジスタマトリックス401からAラッチ402に読み込ませる(S1002)。すなわち、レジスタマトリックス401に格納されているI(x,y)のデータを下位ビットからAラッチ402に転送する。次に、各演算素子400(x,y)は、それぞれ、x方向において隣接する画素位置(x+1,y)に存在する演算素子400(x+1,y)に格納されている目的データ(この場合、画像データI(x+1,y))を、レジスタマトリックス401間の転送によって、該演算素子400(x、y)のレジスタマトリックス401に転送・格納する(S1004)。具体的には、レジスタマトリックス401の近傍転送機能を利用して隣の画素に格納されている画像データ値を空いている領域に転送する。次に、当該転送されてきた隣接画素(x+1,y)の目的データ(画像データI(x+1,y))をBラッチ403に読み込み(S1006)、Aラッチ402とBラッチ403の値の加算を行い(S1008)、加算結果をレジスタマトリックス401を介して(S1010)Aラッチ402へと格納する(S1012)。これにより、各画素400(x、y)には、2画素分の目的データ(この場合、画像データI(x、y)とI(x+1、y))の和が格納されることになる。
次に、x方向の総和を取るための初期設定としてi=1とした(S1014)後、各演算素子400(x,y)は、S1018において、x方向において2つ目に隣接する画素位置(x+n,y)(ここで、n=2i、この場合、n=21=2)の演算素子400(x+2,y)に現在収容されている計算結果(この場合、I(x+2,y)+I(x+3,y))を、x方向に隣接するレジスタマトリックス401間の転送を2回繰り返すことにより、該演算素子400(x、y)へ転送格納する(S1018)。次に、当該転送されてきた2つ目に隣接する画素(x+2,y)の計算結果データをBラッチ403に読み込み(S1020)、Aラッチ402とBラッチ403の値の加算を行い(S1022)、加算結果をレジスタマトリックス401を介して(S1024)Aラッチ402へと格納する(S1026)。これにより、各画素400(x、y)には、隣接する4画素の画像データI(x、y)、I(x+1、y)、I(x+2、y)、I(x+3、y)の和が格納されることになる。
次に、iを1インクリメントし(S1028)、得られたn=2iが1行画素数の半分の値であるN1/2を越えたか否かを判断し(S1030)、N1/2を越えていなければ(S1030でNo)、S1018に戻る。S1018で、各演算素子400(x、y)は、n個目に隣接する位置(x+n,y)(n=2i;この場合、n=22=4)の演算素子400に現在収容されている計算結果データ(画像データの加算結果)を、x方向に隣接するレジスタマトリックス401間の転送をn回(この場合、4回)繰り返すことにより、該演算素子400(x、y)へ転送し、Bラッチ403に読み込み(S1020)、同様の加算を行う(S1022〜S1026)。
続いて、iを1インクリメントしつつ(S1028)、S1018〜S1030の処理を繰り返すことにより、8個(n=23)隣、16個(n=24)隣、32個(n=25)隣、64(n=26)隣、…と進めて、(N1/2)隣まで加算を繰り返す。この結果、各行における全ての画像強度の加算結果I(1,y)+I(2,y)+…+I(N1,y)が、当該行の先頭にある演算素子400(1,y)のAラッチ402に得られる(S1026)。nがN1/2を越えると(S1030でYes)、S1032に移行する。
S1032以降では、各行毎に求められた画像強度加算結果を、上記と同様の手法を用いて、加算することで、(1)式に示した分母である画像強度総和ΣΣI(x、y)を得る。
具体的には、初期設定としてj=0とした(S1032)後、各演算素子400(x,y)は、y方向において隣接する位置(x,y+m)(ここで、m=2j、この場合、m=2j=1)に存在する演算素子400(x,y+m)(この場合、400(x,y+1))の加算結果を、レジスタマトリックス401間の転送にて、該演算素子400(x、y)のレジスタマトリックス401に格納する(S1034)。次に、当該隣接画素(x,y+1)の演算結果をBラッチ403に読み込み(S1036)、Aラッチ402とBラッチ403の値の加算を行い(S1038)、加算結果をレジスタマトリックス401に記憶する(S1040)。これにより、各行の先頭にある演算素子400(1,y)には、2行分の演算結果の和が格納されることになる。
次に、jを1インクリメントし(S1044)、m=2jが1列画素数の半分の値であるN2/2を越えたか否かを判断し(S1046)、N2/2を越えていなければ(S1046でNo)、S1038で得られた加算結果をレジスタマトリックス401からAラッチ402へ転送した(S1048)後、S1034に戻る。
次に、各演算素子400(x、y)は、位置(x,y+m)(m=2j;この場合、位置(x,y+2))の演算素子400に収容されている加算結果を、隣接するレジスタマトリックス401間の転送を2回繰り返すことにより、該演算素子400(x、y)へ転送し(S1034)、Bラッチ403に読み込み(S1036)、同様の加算を行う(S1038〜1040)。
続いて、jを1インクリメントしつつ(S1044)、S1046〜S1040の処理を繰り返すことにより、4つ(m=22)隣、8つ(m=23)隣、16個(m=24)隣、32個(m=25)隣、64(m=26)隣、…と進めて、(N2/2)隣まで加算を繰り返すことにより、全画素の画像強度の加算結果ΣΣI(x、y)が、演算素子アレイ40の先頭にある演算素子400(1,1)のレジスタマトリックス401に得られる(S1040)。mがN2/2を越えると(S1046でYes)、総和演算処理は終了する。
総和演算処理(S360)が終了すると、目的画素位置(x1,y1)(この場合、先頭画素位置(1,1))を選択するための画素選択処理(S370)に移行する(第10(A)図)。
以下、画素選択処理(S370)について、第10(C)図を参照して、詳細に説明する。
画素選択処理においては、CPU150は、まず、S1102において、x方向データバス17のうち、選択しようとする目的画素位置(x1,y1)のxアドレス位置x1に対応するx方向データライン170i(以下、「x方向データライン170x」という)にデータ(1)を転送し、残りの全てのx方向データライン170xにデータ(0)を転送する。この場合、選択しようとする目的画素位置たる先頭画素位置(x1(=1),y1(=1))のxアドレス位置x1に対応するx方向データライン170x(x=x1=1)にデータ(1)を転送し、残りの全てのx方向データライン170x(x≠x1)にデータ(0)を転送する。
次に、各演算素子400(x、y)のレジスタマトリックス401に、対応するx方向データライン170xからの転送データを格納させる(S1104)。この結果、全演算素子400のうち、xアドレスがx1(=1)の演算素子400(1,y)(1≦y≦N2)のレジスタマトリックス401にのみ、データ(1)が格納され、それ以外の演算素子400のレジスタマトリックス401にはデータ(0)が格納される。次に、このデータをAラッチ402に転送する(S1106)。
次に、CPU150は、S1108において、y方向データバス18のうち、目的画素位置(x1,y1)のyアドレス位置y1に対応するy方向データライン180j(以下、「y方向データライン180y」という)にデータ(1)を転送し、残りの全てのy方向データライン180yにデータ(0)を転送する。この場合、選択しようとする目的画素位置たる先頭画素位置(x1(=1),y1(=1))のyアドレス位置y1のy方向データライン180y(y=y1=1)にデータ(1)を転送し、残りの全てのy方向データライン180y(y≠y1)にデータ(0)を転送する。
次に、各演算素子400(x、y)のレジスタマトリックス401に、対応するy方向データライン180yからの転送データを格納させる(S1110)。この結果、全演算素子400(x、y)のうち、yアドレスがy1(=1)の演算素子400(x、1)(1≦x≦N1)のレジスタマトリックス401にのみデータ(1)が格納され、それ以外の演算素子400のレジスタマトリックス401にはデータ(0)が格納されることになる。次に、このデータをBラッチ403に転送する(S1112)。
ついで、各演算素子400(x、y)にて、ALU404により、Aラッチ402の値とBラッチ403の値の乗算を行い(S1114)、演算結果をレジスタマトリックス401に格納する(S1116)。この結果、目的アドレス(x1,y1)の演算素子400(x1,y1)(この場合、先頭演算素子400(1,1))にのみ、乗算結果1が設定され、それ以外の演算素子400では、乗算結果0が設定されることになる。こうして、画素選択処理(S370)が終了する。
画素選択処理(S370)が終了すると、S372に移行する(第10(A)図)。S372では、画素選択処理(S370)にて得られた乗算結果を、レジスタマトリックス401からAラッチ402に転送する(S372)。次に、総和演算処理(S360)にて最終的に求められた演算結果を、やはりレジスタマトリックス401からBラッチ403に転送する(S374)。ついで、ALU404にて、Aラッチ402の値とBラッチ403の値の乗算を行う(S376)。この結果、先頭アドレス(1,1)の演算素子400には、総和演算結果ΣΣI(x、y)と(1)との乗算結果として、画像強度総和ΣΣI(x、y)が求められる。一方、それ以外の演算素子400では、総和演算結果と0(ゼロ)との乗算の結果として、ゼロ(0)が得られる。S378にて、当該乗算結果をレジスタマトリックス401に格納し、S380にて、当該乗算結果を、レジスタマトリックス401の出力アドレス「28」より出力バス155に出力する。この結果、全演算素子400でのS376の乗算結果が単一の出力バス155に出力されることになる。ここで、先頭位置の演算素子400(1,1)のみが乗算結果として画像強度総和ΣΣI(x、y)を出力し、残りの全ての演算素子は乗算結果としてゼロ(0)を出力する。したがって、出力バス155は、これら全演算素子400からの演算結果のOR論理演算結果たる画像強度総和ΣΣI(x、y)を制御回路15に転送することになる。CPU150は、受け取った画像強度総和ΣΣI(x、y)をメモリ151に記憶する。
次に、重心のx方向座標の演算処理(S400)の処理内容について、第11図を参照して、詳細に説明する。
CPU150は、まず、S402にて、重心演算に必要なデータである各画素のx方向位置情報(xアドレスデータ“x”)を、メモリ151から読みだし、各演算素子400に転送する。この転送は、各xアドレスデータ“x”をx方向のデータバッファ19に一旦格納し、x方向データバス17の対応するデータライン170xを用いてビットシリアル方式によって下位ビットより1ビットづつ順番に転送することで行う。ここで、x方向データバス17の各x方向データライン170xに接続されている画素のxアドレスデータ“x”は、互いに等しく、かつ、1〜N1のいずれかの値の2進数データである。したがって、各データライン170xでは、対応するxアドレス“x”の2進数データを、その下位ビットから順にlog2(N1)ビット転送することにより、対応するxアドレスの全演算素子400(x、y)に転送することが可能である。
各演算素子400(x、y)では、転送されたxアドレスデータ“x”がそのレジスタマトリックス401に格納され(S404)、その後、下位ビットからBラッチ403へと読み込まれる(S406)。一方、画像データI(x、y)が、再び、レジスタマトリックス401からAラッチ402に読み込まれる(S408)。ALU404で、Aラッチ402の値とBラッチ403の値の乗算を行い(S410)、演算結果たるx方向モーメント値(x・I(x、y))が、レジスタマトリックスに格納される(S412)。
次に、S420にて、全画素におけるx方向モーメント値(x・I(x、y))の総和を求めるための総和演算処理を行う。
当該総和演算処理(S420)では、第10(B)図を参照して説明した総和演算処理を、x方向モーメント値(x・I(x、y))を目的データとして行う。
具体的には、S1002にて、各演算素子において、総和を求めたい目的データであるx方向モーメント値(x・I(x、y))を、レジスタマトリックス401からAラッチ402に転送する。次に、S1004にて、各演算素子400(x、y)に、x方向において隣接する位置(x+1,y)の演算素子400(x+1,y)のx方向モーメント値((x+1)・I(x+1、y))を転送する。当該x方向モーメント値((x+1)・I(x+1、y))をBラッチへ格納し(S1006)、AラッチとBラッチの値を加算することにより、当該隣り合う2つの画素におけるx方向モーメント値の加算を行い、加算結果をレジスタマトリックス401を介してAラッチ402へと格納する(S1008〜S1012)。この結果、各画素400(x、y)には、2画素分のx方向モーメント値の和(x・I(x,y)+(x+1)・I(x+1,y))が格納されることになる。
次に、初期設定としてi=1とした(S1014)後、各演算素子400(x,y)は、S1018〜S1026において、格納している加算結果(x・I(x,y)+(x+1)・I(x+1,y))と、x方向において2つ目に隣接する画素位置(x+n,y)(ここで、n=2i、この場合、n=21=2)の演算素子400(x+2,y)に格納されている加算結果((x+2)・I(x+2,y)+(x+3)・I(x+3,y))とを加算する転送・加算処理を行う。
続いて、iを1インクリメントしつつ(S1028)、S1018〜S1030の処理を繰り返すことにより、4個(n=22)隣、8個(n=23)隣、16個(n=24)隣、32個(n=25)隣、64(n=26)隣、…と進めて、(N1/2)隣まで転送・加算を繰り返す。その結果、各行における全てのx方向モーメント値の加算結果1・I(1,y)+2・I(2,y)+…+N1・I(N1,y)が、当該行の先頭にある演算素子400(1,y)に得られる。
次に、初期設定としてj=0とした(S1032)後、S1034〜S1040にて、各演算素子400(x,y)は、その加算結果と、y方向において隣接する位置(x,y+m)(ここで、m=21、この場合、m=2j=1)の演算素子400(x,y+m)(この場合、400(x,y+1))の加算結果とを、加算する転送・加算処理を行う。
続いて、jを1インクリメントしつつ(S1044)、S1046〜S1040の処理を繰り返すことにより、2つ(m=21)隣、4つ(m=22)隣、8つ(m=23)隣、16個(m=24)隣、32個(m=25)隣、64(m=26)隣、…と進めて、(N2/2)隣まで転送・加算を繰り返す。この結果、全画素のx方向モーメント値の加算結果ΣΣx・I(x、y)が、演算素子アレイ40の先頭にある演算素子400(1,1)に得られ、総和演算処理(S420)が終了する。
総和演算処理(S420)が終了すると、S430に移行する(第11図)。
S430では、先頭画素位置(1,1)を選択するための画素選択処理を行う。
当該画素選択処理では、第10(C)図を参照して説明した画素選択処理と同一の処理を行う。その結果、S1114〜S1116にて、先頭演算素子400(1,1)にのみ乗算結果(1)が設定され、他の演算素子400では、乗算結果(0)が設定される。
画素選択処理(S430)が終了すると、S432に移行する(第11図)。S432では、画素選択処理(S430)にて得られた乗算結果を、レジスタマトリックス401からAラッチ402に転送する。次に、総和演算処理(S420)にて最終的に求められた総和演算結果を、やはりレジスタマトリックス401からBラッチ403に転送する(S434)。ついで、ALU404にて、Aラッチ402の値とBラッチ403の値の乗算を行う(S436)。この結果、先頭アドレス(1,1)の演算素子400には、総和演算結果ΣΣx・I(x,y)と(1)との乗算結果として、x方向モーメント総和ΣΣx・I(x、y)が求められる。一方、他の演算素子400では、総和演算結果と0(ゼロ)との乗算の結果として、ゼロ(0)が得られる。次に、S438にて、当該乗算結果をレジスタマトリックス401に格納し、S440にて、当該乗算結果を、レジスタマトリックス401の出力アドレス「28」より出力バス155に出力する。この結果、全演算素子400でのS436の乗算結果が出力バス155に出力されることになる。ここで、先頭位置の演算素子400(1,1)のみが乗算結果としてx方向モーメント総和ΣΣx・I(x、y)を出力し、残りの全ての演算素子は乗算結果としてゼロ(0)を出力する。したがって、出力バス155は、これら全演算素子400からの演算結果のOR論理演算結果たるx方向モーメント総和ΣΣx・I(x、y)を制御回路15に転送することになる。
次に、S450において、CPU150は、当該受け取ったx方向モーメント総和ΣΣx・I(x、y)を画像強度総和ΣΣI(x、y)で除算することにより、重心のx座標を求める。
次に、処理は、S500へ以降し、S500において、重心のy座標を、重心のx座標を求めたのと同様な方法で求める。
すなわち、第12図に示すように、まず、S502にて、CPU150は、各画素のy方向位置情報(xアドレスデータ“y”)をメモリ151から読みだし、各演算素子400に転送する。この転送は、各yアドレスデータ“y”をy方向のデータバッファ20に一旦格納し、y方向データバス18の対応するデータライン180yを用いてビットシリアル方式によって下位ビットより1ビットづつ順番に転送することで行う。ここで、y方向データバス18の各y方向データライン180yに接続されている画素のyアドレスデータ“y”は、互いに等しく、かつ、1〜N2のいずれかの値の2進数データである。したがって、各データライン180yでは、対応するyアドレス“y”の2進数データを、その下位ビットから順にlog2(N2)ビット転送することにより、対応するyアドレスの全演算素子400(x、y)に転送することが可能である。
各演算素子400(x、y)では、転送されたyアドレスデータ“y”がそのレジスタマトリックス401に格納され(S504)、その後、下位ビットからBラッチ403へと読み込まれる(S506)。一方、画像データI(x、y)が、再び、レジスタマトリックス401を通じてAラッチ402に読み込まれる(S508)。ALU404で、Aラッチ402の値とBラッチ403の値の乗算を行い(S510)、演算結果たるy方向モーメント値(y・I(x、y))をレジスタマトリックスに格納する(S512)。
次に、S520にて、全画素におけるy方向モーメント値(y・I(x、y))の総和を求めるための総和演算処理を行う。
当該総和演算処理(S520)では、第10(B)図を参照して説明した総和演算処理を、y方向モーメント値(y・I(x、y))を目的データとして行う。
具体的には、S1002にて、各演算素子において、総和を求めたい目的データであるy方向モーメント値(y・I(x、y))を、レジスタマトリックス401からAラッチ402に転送する。次に、S1004にて、各演算素子400(x、y)に、x方向において隣接する位置(x+1,y)の演算素子400(x+1,y)のy方向モーメント値(y・I(x+1、y))を転送する。当該y方向モーメント値(y・I(x+1、y))をBラッチへ格納し(S1006)、AラッチとBラッチの値を加算することにより、当該隣り合う2つの画素におけるy方向モーメント値の加算を行い、加算結果をレジスタマトリックス401を介してAラッチ402へと格納する(S1008〜S1012)。この結果、各画素400(x、y)には、2画素分のy方向モーメント値の和(y・I(x,y)+y・I(x+1,y))が格納されることになる。
次に、初期設定としてi=1とした(S1014)後、各演算素子400(x,y)は、S1018〜S1026において、格納している加算結果(y・I(x,y)+y・I(x+1,y))と、x方向において2つ目に隣接する画素位置(x+n,y)(ここで、n=2i、この場合、n=21=2)の演算素子400(x+2,y)に格納されている加算結果(y・I(x+2,y)+y・I(x+3,y))とを加算する転送・加算処理を行う。
続いて、iを1インクリメントしつつ(S1028)、S1018〜S1030の処理を繰り返すことにより、4個(n=22)隣、8個(n=23)隣、16個(n=24)隣、32個(n=25)隣、64(n=26)隣、…と進めて、(N1/2)隣まで転送・加算を繰り返す。その結果、各行における全てのy方向モーメント値の加算結果y・I(1,y)+y・I(2,y)+…+y・I(N1,y)が、当該行の先頭にある演算素子400(1,y)に得られる。
次に、初期設定としてj=0とした(S1032)後、S1034〜S1040にて、各演算素子400(x,y)は、その加算結果と、y方向において隣接する位置(x,y+m)(ここで、m=2j、この場合、m=2j=1)の演算素子400(x,y+m)(この場合、400(x,y+1))の加算結果とを、加算する転送・加算処理を行う。この結果、各行の先頭位置の演算素子400(1,y)には、2行分の加算結果の和(y・I(1,y)+y・I(2,y)+…+y・I(N1,y))+((y+1)・I(1,y+1)+(y+1)・I(2,y+1)+…+(y+1)・I(N1,y+1))が得られる。
続いて、jを1インクリメントしつつ(S1044)、S1046〜S1040の処理を繰り返すことにより、2つ(m=21)隣、4つ(m=22)隣、8つ(m=23)隣、16個(m=24)隣、32個(m=25)隣、64(m=26)隣、…と進めて、(N2/2)隣まで転送・加算を繰り返す。この結果、全画素のy方向モーメント値の加算結果ΣΣy・I(x、y)が、演算素子アレイ40の先頭にある演算素子400(1,1)に得られ、総和演算処理(S520)が終了する。
総和演算処理(S520)が終了すると、S530に移行する(第12図)。
S530では、先頭画素位置(1,1)を選択するための画素選択処理を行う。
当該画素選択処理では、第10(C)図を参照して説明した画素選択処理と同一の処理を行う。その結果、S1114〜S1116にて、先頭演算素子400(1,1)にのみ乗算結果(1)が設定され、他の演算素子400では、乗算結果(0)が設定される。
画素選択処理(S530)が終了すると、S532に移行する(第12図)。S532では、画素選択処理(S530)にて得られた乗算結果を、レジスタマトリックス401からAラッチ402に転送する。次に、総和演算処理(S520)にて最終的に求められた総和演算結果を、やはりレジスタマトリックス401からBラッチ403に転送する(S534)。ついで、ALU404にて、Aラッチ402の値とBラッチ403の値の乗算を行う(S536)。この結果、先頭アドレス(1,1)の演算素子400には、総和演算結果ΣΣy・I(x、y)と(1)との乗算結果として、y方向モーメント総和ΣΣy・I(x、y)が求められる。一方、他の演算素子400では、総和演算結果と0(ゼロ)との乗算の結果として、ゼロ(0)が得られる。次に、S538にて、当該乗算結果をレジスタマトリックス401に格納し、S540にて、当該乗算結果を、レジスタマトリックス401の出力アドレス「28」より出力バス155に出力する。この結果、全演算素子400でのS536の乗算結果が出力バス155に出力されることになる。ここで、先頭位置の演算素子400(1,1)のみが乗算結果としてy方向モーメント総和ΣΣy・1(x、y)を出力し、残りの全ての演算素子は乗算結果としてゼロ(0)を出力する。したがって、出力バス155は、これら全演算素子400からの演算結果のOR論理演算結果たるy方向モーメント総和ΣΣy・I(x、y)を制御回路15に転送することになる。
次に、S550において、CPU150は、当該受け取ったy方向モーメント総和ΣΣy・I(x、y)を画像強度総和ΣΣI(x、y)で除算することにより、重心のx座標を求める。
(実施例2)
本システムの並列演算方法は、すべての演算素子において同等の演算を行うSIMDと呼ばれる方式であるが、場合によっては、各画素ごとに違う演算をさせたり、ある画素のみに特別な演算を行わせることができれば、より柔軟性のある処理が可能となる。ここで、本実施形態によれば、データバス17,18を利用することで、各演算素子400に対して異なった演算を行わせることが可能となっている。x方向データバス17およびy方向データバス18を用いて、各演算素子400に演算制御データを転送することができるからである。
例えば、ある画素のみに特別な演算を行わせたい場合、x方向データバス17とy方向データバス18から、目的の画素(例えば、(x1,y1))を指定し、(x1,y1)のラインにのみ1、他には0を転送し、この値と演算素子400が保持している値を掛け合わせた後に画像処理演算を行えば、位置(x1,y1)の演算素子400のみで画像処理演算がなされることになる。
具体的には、第8図の画像処理工程S110において、第13図のような所望位置演算処理(S600)を行うことが可能である。
なお、所望位置演算処理(S600)がスタートした際には、入力画像Dの各画素の画像データI(x、y)は、既に、S104(第8図)にて、転送用シフトレジスタ410から各演算素子400(x、y)のレジスタマトリックス401へ転送され、当該レジスタマトリックス401のある領域へ格納されている。
当該所望位置演算処理(S600)では、まず、S610において、所望の画素位置(x1、y1)を選択するための画素選択処理を行う。当該画素選択処理(S610)では、当該所望の画素位置(x1,y1)を選択するよう、第10(C)図を参照して説明した画素選択処理を行う。
具体的には、CPU150は、S1102〜S1106において、目的のxアドレスx1のx方向データライン170x(x=x1)にデータ(1)を転送し、残りの全てのx方向データライン170x(x≠x1)にデータ(0)を転送することで、全演算素子400のうち、xアドレスがx1の演算素子400(x1,y)(1≦y≦N2)にのみデータ(1)をセットし、それ以外の演算素子400にデータ(0)をセットする。次に、S1108〜S1112において、目的のyアドレスy1のy方向データライン180y(y=y1)にデータ(1)を転送し、残りの全てのy方向データライン180y(x≠x1)にデータ(0)を転送することで、全演算素子400のうち、yアドレスがy1の演算素子400(x,y1)(1≦x≦N1)にのみデータ(1)をセットし、それ以外の演算素子400にデータ(0)をセットする。
ついで、各演算素子400(x、y)にて、上記x方向データライン170xからの転送データとy方向データライン180yからの転送データとの乗算を行い(S1114)、乗算結果をレジスタマトリックス401に格納して(S1116)、画素選択処理(S610)を終了する。この結果、所望のアドレス(x1,y1)の演算素子400(x1,y1)のみで乗算結果が1となり、それ以外の演算素子400では乗算結果は0となる。
選択処理(S610)が終了すると、S612に移行する(第13図)。S612では、上記画素選択処理(S610)の乗算結果をレジスタマトリックス401からAラッチ402に転送する。次に、演算に供しようとする目的のデータ(例えば、画像データI(x、y))を、レジスタマトリックス401からBラッチ403に転送し(S614)、Aラッチ402の値とBラッチ403の値の乗算を行う(S616)。この結果、目的の画素位置(x1,y1)の演算素子400でのみ目的データそのものが得られ、それ以外の演算素子400では、ゼロ(0)データが得られる。当該乗算結果をレジスタマトリックス401に格納した(S618)のち、S620にて、当該乗算結果に対する所望の演算処理を行う。具体的には、S616の乗算結果をレジスタマトリックス401がらAラッチ402またはBラッチ403に転送し、ALU404により所定の演算処理を行う。この結果、目的の画素位置(x1,y1)のみで、目的のデータに対する演算処理が行われ、当該画素位置以外では、ゼロ(0)データに対して演算処理が行われることになる。演算結果は、出力バス155を介して制御回路15に出力される。
なお、S620では、演算を行わず、S616で得られた乗算結果を、そのまま、出力アドレス「28」から出力バス155を介して制御回路15に出力するようにしてもよい。このようにすれば、所望のアドレス(x1,y1)で得られた所望のデータ(例えば、画像データI(x、y))のみを制御回路15に出力することができる。
また、上記所望位置演算処理(S600)を、その演算処理(S620)の内容を変更しつつ個々の演算素子(画素)を選択しながら行えば、個々の演算素子に異なった演算処理を実行させることもできる。
さらに、画素選択処理(S610)では、単一の画素のみを選択せず、複数の画素を選択するようにしてもよい。すなわち、当該複数の画素のxアドレス及びyアドレスに対応するx方向データライン170xとy方向データライン180yにデータ(1)を転送し、それ以外のデータラインにデータ(0)を転送するようにしてもよい。選択された複数の画素のみで、S1114(第10(C)図)の乗算結果が1となり、その結果、S616(第13図)での乗算結果として目的データが得られる。従って、S620では、当該選択された複数の画素において目的のデータに対する所望の演算を行うことができる。
S620で行われる演算としては、後述するエッジ抽出処理等、様々な演算処理を行うことができる。
(実施例3)
また、データバス17,18を用いることで、全演算素子400で所定の演算を行なった後、ある1つの演算素子400のレジスタマトリックス401の中身(演算結果)だけを選択的に取り出すことも可能である。
具体的には、第8図の画像処理工程S110において、第14図のような演算−抽出処理(S650)を行うことが可能である。
なお、演算−抽出処理(S650)がスタートした際には、入力画像Dの各画素の画像データI(x、y)は、既に、S104(第8図)にて、転送用シフトレジスタ410から各演算素子400(x、y)のレジスタマトリックス401へ転送され、当該レジスタマトリックス401のある領域へ格納されている。
当該演算−抽出処理(S650)では、まず、S660において、各演算素子400に、画像データI(x、y)に対する所望の演算を行わせる。当該所望の演算としては、後述するエッジ抽出処理等、様々な演算処理が考えられる。
次に、目的の画素位置(x1,y1)を選択するための画素選択処理(S680)を行う。当該画素選択処理(S680)では、第10(C)図を参照して説明した画素選択処理を目的の画素(x1,y1)に対して行う。この結果、目的の演算素子400(x1,y1)のみでS1114の乗算結果として(1)が設定され、それ以外の演算素子400ではS1114の乗算結果として(0)が設定される。
選択処理(S680)が終了すると、S682に移行する(第14図)。S682では、上記画素選択処理(S680)の乗算結果をレジスタマトリックス401からAラッチ402に転送する。次に、抽出したい目的のデータ(S660の演算結果)を、レジスタマトリックス401からBラッチ403に転送し(S684)、Aラッチ402の値とBラッチ403の値の乗算を行う(S686)。この結果、目的の画素位置(x1,y1)の演算素子400でのみ演算結果データそのものが得られ、それ以外の演算素子400では、ゼロ(0)データが得られる。この乗算結果をレジスタマトリックス401に格納した(S688)のち、S690にて、出力アドレス「28」から出力バス155へ出力する。全演算素子400からS686の乗算結果が出力バス15に出力される結果、これら全演算素子の乗算結果のOR論理演算出力として、目的の画素400(x1,y1)における演算結果が、制御回路15に出力されることになる。
(実施例4)
なお、x方向データバス17及びy方向データバス18としては、制御回路15から演算素子400への転送/書き込み機能のみを有する一方向性のデータバスではなく、制御回路15から演算素子400への転送/書き込み機能と演算素子400から制御回路への出力/転送機能とを有する双方向性のデータバスを使用してもよい。レジスタマトリックスのアドレス「30」及び「31」をy方向データライン180y及びx方向データライン170xへのデータの出力にも用いることで、演算素子400の計算結果をx方向データライン170xまたはy方向データライン180yを介して制御回路15に出力することができるようになる。
さらに、データバス17及び18として双方向性のものを採用し、これらを双方向に使用すれば、x方向、y方向のある位置の演算素子400からの信号を制御回路15が受信することが可能となる。この機能を利用すれば、例えばある検索画像(m1×m2画素)を並列演算によって探したい場合には、制御装置15は、一致信号が得られた位置をデータバスを通じて高速に確認できる。
当該画像検索の具体例を以下説明する。
この検索は、検索パターンPが入力画像D(=I(x,y)、ここで、1≦x≦N1、1≦y≦N2)内にあるか、あるとすればいずれの位置にあるかを見つける作業である。マッチングのアルゴリズムには多くの研究例があるが、ここでは、最も簡単な次の計算式で示される画像間の距離ERROR(p,q)が、あるしきい値より小さい時に同一画像とみなすアルゴリズムを用いるものとする。ここで、(p,q)は、画像D内の基準画素(x、y)の位置である。
このアルゴリズムに基づく検索処理(S700)のフローチャートを第15図に示し、同図を参照しつつデータ処理の流れを以下に説明する。
ここで、この検索処理(S700)も、第8図の画像処理工程S110において実行されるものである。また、各画素(x、y)を、それぞれ、画像検索の基準位置(p、q)とする。さらに、検索画像Pの画像データP(i,j)(1≦i≦m1,1≦j≦m2)は、制御回路15のメモリ151に格納されている。 なお、検索処理(S700)がスタートした際、入力画像Dの各画素の画像データI(x、y)(以下、I(p、q)という)は、既に、S104(第8図)にて、転送用シフトレジスタ410から各演算素子400(x、y)(以下、400(p、q)という)のレジスタマトリックス401へ転送され、当該レジスタマトリックス401のある領域へ格納されている。
検索処理(S700)では、CPU150は、まず、ステップS702において、初期状態を設定する。具体的には、検索パターンP中のマッチング検出位置(i,j)に先頭位置(1,1)を設定し、各演算素子400(p、q)のレジスタマトリックス401に格納しようとする計算結果Er(p,q)をリセットする。
ステップS703で、検索パターンP内の現在の検出位置(i,j)(ここでは、先頭位置(1,1))の画像データP(i,j)をメモリ151から読みだし、データバス17、18を介して、各演算素子400へと転送する。
ステップS704においては、各演算素子400(p、q)において、レジスタマトリックス401のある領域に格納されている当該画素の画像データI(p,q)と検索パターンのマッチング検出位置の画像データP(i,j)との差の絶対値を求め、Er(p,q)に加算する。ここでは、具体的には、画像データI(p,q)と検索画像の先頭位置の画像データP(1,1)との差の絶対値を求め、レジスタマトリックス401の別の領域を割り当ててEr(p,q)として格納する。
ステップS705では、CPU150は、検出位置(i,j)が最終位置(m1,m2)に到達しているか否かを判定する。ここでは、検出位置(i,j)は、まだ先頭位置(1,1)なので、最終位置には到達しておらず(ステップ705でNo)、ステップS706へと移行する。ステップS706では、i≠m1の場合は、iの値のみを1増加させ、i=m1の場合は、x方向の端に達したとしてiを1にリセットし、jの値を1増加させる。ここでは、i=1、j=1の場合なので、i=2、j=1へと更新される。そして、ステップS707では、位置(p+i−1,q+j−1)の画像データ、ここでは、位置(p+1,q)の画像データI(p+1,q)を、演算素子400(p、q)のレジスタマトリックス401に転送する。具体的には、レジスタマトリックス401の近傍転送機能を利用して、隣の画素400(p+1,q)に格納されている画像データ値I(p+1,q)を、当該画素400(p、q)の空いている領域に転送することでこの転送は行われる。
転送が終了したら、ステップS703に戻り、CPU150は、検索パターンP内の現在の検出位置(i,j)(ここでは、位置(2,1))の画像データP(i,j)をメモ151から読みだし、データバス17、18を介して、各演算素子400(p、q)へと転送する。ステップS704において、各演算素子400(p、q)は、現在レジスタマトリックス401に格納されている隣接画素の画像データI(p+1,q)と検索パターンの現在のマッチング検出位置の画像データP(i,j)との差の絶対値を求め、Er(p,q)に加算する。検出位置(i、j)が最終位置(m1,m2)に到達していないので(S705でNo)、S706に進み、検出位置(i,j)を更新する。
かかる処理(ステップS703〜S707)を、検出位置(i.j)が最終位置(m1,m2)に到達するまで、繰り返す。
このように、ステップS704で繰り返し加算を行うことにより、各演算素子400(p、q)において、ERROR(p,q)を求めることができる。
また、ステップS707による転送は、レジスタマトリックス401の転送機能を利用して、x方向、y方向にそれぞれ順次隣の画素に転送していくことで転送を行えばよい。
検出位置が最終位置(m1,m2)に達し、ERROR(p,q)が求まると、ステップS705(S705でYes)からステップS708へと移行する。ステップS708においては、CPU150は、閾値Ethを設定し、ステップS709で、設定した閾値Ethデータを、データバス17または18を介して、各演算素子400へと転送する。
各演算素子400(p、q)は、ステップS710で、閾値Ethと求めたERROR(p,q)、つまり、Er(p,q)とを比較する。具体的には、各演算素子400は、ERROR(p,q)−閾値Ethの演算を行い、この結果のサインビット(正負の符号)のビットを、比較結果として出力する。すなわち、Er(p,q)が閾値Eth以下の場合は、ステップS711に移行して1を出力し、Er(p,q)が閾値Ethより大きい場合は、ステップS712に移行して0を出力する。各演算素子400は、これら出力データを、データバス17及び18に出力する。CPU150は、これらデータバス17,18からの出力信号の総和をとることで、1を出力した演算素子400の個数をカウントする。
ステップS713では、CPU150は、この個数を判定し、出力個数が0の場合は、ステップS714に移行して、マッチング画像なしとの判定結果を出力する。
出力個数が1個の場合は、データバス17,18のうち、それぞれ単一のデータライン170x、180yのみにおいて1の出力信号が得られている。したがって、CPU150は、S715において、1の出力信号が得られている出力信号線170x、180yの位置x、yに基づいて、1を出力した演算素子400の位置データ(p,q)を求める。
なお、S715では、データバス17,18の代わりに出力バス155を利用してもよい。すなわち、各演算素子400に対し、S710の判断結果としての出力(0または1)とその位置データ(p、q)とを乗算させ、その乗算結果を出力バス155に出力させるようにしてもよい。この場合、S710の判断結果として出力信号1を出力した画素(マッチング位置画素)のみが、その位置データ(p、q)を出力する。他の画素は、その出力信号(0)と位置データ(p、q)との乗算結果である(0)を出力する。したがって、マッチング位置の位置データ(p、q)のみが、出力バス155を介して、制御回路15に転送されることになる。かかる方法によれば、マッチング位置データ(p、q)のみならず、他のマッチング演算結果(例えば、入力画像Dと検索パターンPとの差の絶対値等)も制御回路15に転送させることができる。
一方、出力個数が2個以上あった場合は、ステップS716で閾値Ethを小さく変更してステップS709に戻り、出力個数が1個になるまで閾値Ethを小さくしていくことで絞り込みを行う。
以上のように、本実施形態の高速視覚センサ装置10は、受光素子アレイ11の各行の全受光素子120に対して1個のA/D変換器210を対応させたA/D変換器アレイ13と、受光素子120と1対1に対応する演算素子400と転送用シフトレジスタ410とからなる並列処理機構14とを備え、さらに、演算素子400にデータ転送を行うデータバス17、18とデータバッファ19、20を備えている。演算素子400は並列処理により近傍画素間の画像処理演算を高速で行うことができ、データバス17、18を利用することで外部からデータ転送の必要な演算処理も高速で行うことができる。
また、本実施形態の高速視覚センサ装置10によれば、画像処理ステップS110においては、上述の画像処理(第9図〜第15図)を行うにあたり、その前処理として、入力画像I(x、y)に様々な画像処理を行うこともできる。
例えば、エッジ抽出を行うことができる。ここで、「エッジ抽出」は画像処理において最も頻繁に利用される処理である。最も簡単に演算する場合は、左方向に隣接する1個の画素の強度値との差分による2近傍演算を用いた2近傍エッジ抽出が用いられる。
具体的には、位置(x,y)における入力画像強度I(x,y)に対し、求める2近傍エッジ抽出画像の画像強度データの値I‘(x,y)は、以下の式で表わされる。
I‘(x、y)= |I(x、y) − I(x−1,y)|
S110の画像処理ステップにおいて当該2近傍エッジ抽出を前処理として行う場合には、上記(実施例1)〜(実施例4)の演算処理工程S300,S600,S650,S700の前に、第16図に示すような2近傍エッジ抽出工程(S1200)を行う。
具体的には、まず、各演算素子400(x、y)において、4近傍入力端子から左隣の隣接画素のデータI(x−1,y)を当該演算素子400(x、y)のレジスタマトリックス401へと転送/格納する(S1210)。次に、レジスタマトリックス401に現在格納されているI(x,y)とI(x−1,y)のデータをAラッチ402とBラッチ403にそれぞれ転送し(S1211)、ALU404により両者の差分を計算する(S1212)。計算結果は一旦レジスタマトリックス401に格納する(S1213)。計算完了後、計算結果を再びAラッチ402へと読み出して(S1214)、差分の絶対値をALU404で求める(S1215)。計算結果を再度レジスタマトリックス401へと格納する(S1216)。
こうして得られた2近傍エッジ抽出画像I‘(x、y)に対して、(実施例1)〜(実施例4)の画像演算工程(S300,S600,S650,S700)を行うようにする。
なお、4近傍エッジ抽出を行う場合には、位置(x,y)における入力画像強度I(x,y)に対し求める4近傍エッジ抽出画像の画像強度データの値I‘(x,y)は、以下の式で表せる。
I‘(x、y)=I(x、y−1)+I(x、y+1)+I(x−1,y)+I(x+1,y)―4I(x、y)
また、4近傍平滑化を行う場合には、求める4近傍平滑画像の画像強度データの値I‘(x,y)は、以下の式で表せる。
I‘(x、y)=(4I(x、y)+I(x−1,y)+I(x+1,y)+I(x、y−1)+I(x、y+1))/8
上記アルゴリズムの他、画像処理でよく用いられるアルゴリズムのいくつかについて、本実施形態により演算を行った場合のステップ数、処理時間の例を表1に示す。
表1から明らかなように、本実施形態では、一般的な画像処理(例えば、平滑化、細線化、コンボリューション、相関、マスク処理)演算を完全並列処理により、非常に高速で行うことができる。したがって、これまでの視覚センサ装置では演算処理速度、転送速度が遅いために制限されていたFAロボット制御などの分野への応用が可能になる。
なお、表1に示される演算時間は、転送用シフトレジスタ410による画像データの転送時間は含んでいない。転送データ速度は、A/D変換器210の変換スピードによって制限されるが、これを例えば、1ビット当たり1マイクロ秒とすると、128x128画素x8ビットの画像データを128行で並列転送する場合に要する時間は、128(画素)x8(ビット)x1(マイクロ秒/ビット)≒1ミリ秒となる。本実施形態では、この転送を演算処理と並行して行う。
本実施形態が目指しているのは、実用的な高速性と十分な解像度を有する画像処理システムである。FAシステムにおけるロボット制御には、受光素子120を128x128個以上配列する解像度が必要とされる。本実施形態によれば、受光素子アレイ11と並列処理機構14を分離でき、それぞれの集積度を高められるため、この解像度を十分に実現できる。また、処理速度の目安としては、ロボットのアクチュエータの速度(1〜10ミリ秒)が必要である。本実施形態では、この処理速度は、A/D変換器210におけるA/D変換処理速度によって決まるが、十分に高速化が可能である。
例えば、本実施形態での1画素あたりのA/D変換速度は、1ビットあたり1マイクロ秒となる。例えば、入力アナログ信号を6ビット(64階調)でデジタル変換する場合には、1行分の128個の受光素子120の出力信号をデジタル変換するのに必要な時間は、6マイクロ秒x128=0.768ミリ秒となる。画像処理については、各受光素子に1対1に対応して演算素子が配置され、全演算素子で並列処理されるため、表1に示すように、0.4ミリ秒以下でほとんどの演算処理が行える。さらに、演算処理と転送処理を並行して行えるので、それぞれの処理の空き時間を減らすことができ、処理全体の時間を短縮することができる。
また、前述したように本実施形態のA/D変換器210は、最上位ビットからA/D変換を行う。したがって、所望のビット数まで変換した時点で、リセット信号Rを送出し、次の光信号のA/D変換に移ることにより、A/D変換の階調を変更することができる。これにより、より高速で、複雑な処理を行うことが可能となる。例えば、移動物体のトラッキングをするような場合に、物体が高速で移動している場合は、画像を1ビットの2値レベルで演算処理するように制御すれば、転送時間は、前述の6ビットの時の6分の1の0.128ミリ秒に短縮され、高速フィードバック制御に適用できる。逆に、低速で動いている場合には、階調を上げることにより、より精度を向上させて、追従させることができる。
ただし、A/D変換器から出力されるビット長を可変にする場合は、転送用シフトレジスタでは入力データのビット長を調整して固定長にする必要がある。なぜなら、例えば、通常のデータ長が8ビットの場合の転送用シフトレジスタラインには、固定長で8ビットx行内画素数(N1)のシフトレジスタが用いられる。そして、8ビットずつ区切った個々のシフトレジスタがそれぞれの位置に対応する各画素用の転送用シフトレジスタとして機能する。したがって、ビット長を8ビットに合わせておかないと、画像データが対応する位置の転送用シフトレジスタに正しく転送されないことになるからである。このため、転送用シフトレジスタに送る時点でダミー信号を加えて合計8ビットになるようにすることでデータが正しく転送される。
以上説明したように、本実施形態のセンサ装置10では、受光素子アレイ11の各行の受光素子120に対して1個のA/D変換器210を対応させたA/D変換器アレイ13と、受光素子120と1対1に対応する演算素子400と転送用シフトレジスタ410とからなる並列処理機構14とを備えている。このように受光素子120と1対1に対応する演算素子400を有しているので、並列処理により近傍画素間の画像処理演算を高速で行うことができる。
さらに、A/D変換器210を1行ごとに設けているので、A/D変換器210を受光素子120毎に設けた場合に比較して、受光素子120と演算素子400間の伝送線の数が少なくて済み、受光素子120と演算素子400とを別々に製造、配置することが容易にできる。このため、両者とも集積度を最適にすることができ、多画素数の高速視覚センサ装置10を容易に製作できる。なお、このようにA/D変換器210を行ごとに設けたため、A/D変換の処理速度により、全体の処理速度が制限を受けるが、FAロボット制御に十分な画素数といわれる128x128画素の映像を64階調で処理する場合でも、ほとんどの画像処理が1ミリ秒以下で終了し、従来にない高速処理が可能である。したがって、本実施形態の多画素数/高速視覚センサ装置10は、簡単な回路構成を有しながらも、基本的な画像演算を高速に処理することが可能となっている。
特に、外部からのデータが必要となる演算では、x方向データバスおよびy方向データバスより効率的にデータ転送(送受信)が可能であるため、高速な演算が可能である。
さらに、転送用シフトレジスタ410を演算素子400に対応して設けているので、転送処理と独立して演算処理が行え、演算処理及び転送処理を効率良く行うことができる。また、転送処理と演算処理を並列に行うことができることから、各処理の待ち時間を減らし、より高速の画像処理を行うことができる。すなわち、A/D変換器から演算素子へのデータ転送時に、転送用シフトレジスタを用いて、演算処理と転送とを独立に実行できる機能を実現することで、実時間処理が可能となっている。
本発明に係る高速視覚センサ装置は、前述した実施形態に限定されず、種々の変更が可能である。
例えば、上記の実施形態では、データバッファ19、20を設けていたが、制御回路15とデータバス17、18間に十分な転送速度が得られるような場合は、データバッファを設ける必要はない。
また、上記の実施形態では、A/D変換器210から演算素子400へのデータ転送を、転送用シフトレジスタ410により行っているが、転送用シフトレジスタ410はなくてもいい。すなわち、第17図のように、各A/D変換器210を、並列処理機構14のうち、対応する行の先頭の演算素子400(1,y)のレジスタマトリックス401と接続するようにしてもよい。この場合、各行のA/D変換器210から出力される画素データI(x、y)は、対応する演算素子400(x、y)まで、x方向に隣接している演算素子400(1,y)〜400(x、y)のレジスタマトリックス401間の転送を順次行うことにより、転送される。
このように転送用シフトレジスタ410を設けていない場合には、表1の演算時間に加えて画像データを各演算素子400に転送する時間が余分に必要となる。ここで、上述したように、本実施形態での1画素あたりのA/D変換速度は、1ビットあたり約1マイクロ秒となる。したがって、例えば、入力アナログ信号を6ビット(64階調)でデジタル変換する場合には、1行分の128個の受光素子120の出力信号をデジタル変換するのに必要な時間は、6マイクロ秒x128=0.768ミリ秒となる。一方、画像処理については、表1に示すように、0.4ミリ秒以下でほとんどの演算処理が行える。したがって、転送時間を考慮しても、ほとんどの画像処理が1ミリ秒以下で行えることになり、十分な高速性能を有している。
また、上述の実施形態では、A/D変換器210がチャージアンプ221を含む構成となっているが、A/D変換器210とチャージアンプ221とを別体とし、第18図のように、N2個のチャージアンプ221からなるアンプアレイ12を受光素子アレイ11に接続させ、さらに、N2個のA/D変換器210からなるA/D変換器アレイ13を当該アンプアレイ12と並列処理機構14との間に設けるようにしても良い。この場合には、アンプアレイ12内の各アンプ221は、受光素子アレイ11の対応する行110上の計N1個の受光素子120から出力される電荷を順次電圧信号に変換し、得られたアナログ電圧信号を、A/D変換器アレイ13内の対応するA/D変換器210に出力する。A/D変換器210は、当該チャージアンプ221からのアナログ電圧信号を順次A/D変換し、並列処理機構14に供給する。
さらに、上述の実施形態では、画像強度やx/y方向モーメントの総和を求めるために、第10(B)図に示す総和演算処理を行うようにしているが、各演算素子400からの出力の総和を求めるための回路を出力バス155に付加し、当該回路にて総和を求めるようにしても良い。
産業上の利用可能性
本発明に係る高速視覚センサ装置は、FAロボット制御等、視覚認識処理に幅広く用いられる。
【図面の簡単な説明】
第1図は、本発明の実施形態に係る高速視覚センサ装置のブロック図である。
第2図は、実施形態に係る高速視覚センサ装置の概略構成図である。
第3図は、実施形態に係る高速視覚センサ装置の備える制御回路の構成ブロック図である。
第4図は、実施形態に係る高速視覚センサ装置の備える受光素子アレイ、及び、A/D変換器アレイの回路構成図である。
第5図は、第4図のA/D変換器アレイの備える積分回路の詳細回路構成図である。
第6図は、実施形態に係る高速視覚センサ装置の備える演算素子及び転送用シフトレジスタのブロック図である。
第7(A)図は、第6図の演算素子の備えるレジスタマトリックスの回路図である。
第7(B)図は、第6図の演算素子の制御タイミングチャートである。
第8図は、実施形態に係る高速視覚センサ装置の動作フロー図である。
第9図は、第8図中の工程S110の一例としての重心演算処理工程の動作フロー図である。
第10(A)図は、第9図の重心演算処理工程のうちの画像強度総和演算処理工程の動作フロー図である。
第10(B)図は、第10(A)図の画像強度総和演算処理工程のうちの総和演算処理工程の動作フロー図である。
第10(C)図は、第10(A)図の画像強度総和演算処理工程のうちの画素選択処理工程の動作フロー図である。
第11図は、第9図の重心演算処理工程のうちのx方向座標演算処理工程の動作フロー図である。
第12図は、第9図の重心演算処理工程のうちのy方向座標演算処理工程の動作フロー図である。
第13図は、第8図中の工程S110の一例としての所望位置演算処理工程の動作フロー図である。
第14図は、第8図中の工程S110の一例としての演算−抽出処理工程の動作フロー図である。
第15図は、第8図中の工程S110の一例としての画像検索処理工程の動作フロー図である。
第16図は、第8図中の工程S110中に行われる前処理の一例としてのエッジ抽出処理工程の動作フロー図である。
第17図は、本発明に係る高速視覚センサ装置の変更例のブロック図である。
第18図は、本発明に係る高速視覚センサ装置の他の変更例のブロック図である。
Claims (7)
- 複数の受光素子が複数の行及び列に2次元状に配列されて構成された受光素子アレイと、
複数のA/D変換器が該受光素子アレイの該複数の行に1対1に対応して1次元状に配列されて構成され、各A/D変換器が、該対応する1行中の受光素子から順次読み出された出力信号をアナログ・デジタル変換するA/D変換器アレイと、
複数の演算素子が、該受光素子アレイの該複数の受光素子と1対1に対応して複数の行及び列に2次元状に配列され、各演算素子が該A/D変換器アレイから転送されたデジタル信号について所定の演算を行う並列演算素子アレイからなる並列処理機構と、
複数の列方向データ転送用データラインが前記並列処理機構の各列と1対1に対応して設けられ、各列方向データ転送用データラインが、対応する列に存在する複数の演算素子を接続し該対応する列の各演算素子とのデータ転送を行う列方向データ転送用バスと、
複数の行方向データ転送用データラインが前記並列処理機構の各行と1対1に対応して設けられ、各行方向データ転送用データラインが、対応する行に存在する複数の演算素子を接続し該対応する行の各演算素子とのデータ転送を行う行方向データ転送用バスと、
前記受光素子アレイ、前記A/D変換器アレイ、前記並列処理機構、前記列方向データ転送用バス、及び、前記行方向データ転送用バスを制御し、前記列方向データ転送用バスと前記行方向データ転送用バスとを介した各演算素子とのデータ転送を行う制御回路と、
を備え、
前記制御回路が、前記各列方向データ転送用データラインを介して対応する演算素子へ転送するデータと前記各行方向データ転送用データラインを介して対応する演算素子へ転送するデータとの組み合わせを制御することで、前記各演算素子に対し、対応する列方向データ転送用データライン及び対応する行方向データ転送用データラインより受け取るデータの組み合わせに基づいた処理を行わせることを特徴とする高速視覚センサ装置。 - 前記制御回路が、前記各列方向データ転送用データラインに対し、対応する列の位置情報を示すデータを対応する列の演算素子にデータ転送させ、前記各行方向データ転送用データラインに対し、対応する行の位置情報を示すデータを対応する行の演算素子にデータ転送させ、各演算素子に対し、該データ転送された対応する行の位置情報を示すデータ及び対応する列の位置情報を示すデータに基づき、前記デジタル信号に対する所定の重心演算を行わせる重心演算制御部を有することを特徴とする請求項1記載の高速視覚センサ装置。
- 前記制御回路が、所定の演算素子と接続された列方向データ転送用データラインと行方向データ転送用データラインとに対し所定の組み合わせの演算制御データをデータ転送させることで、該所定の演算素子に対しデジタル信号に対する所定の演算を行わせる所定素子演算制御部を有することを特徴とする請求項1記載の高速視覚センサ装置。
- 前記制御回路が、所定の演算素子と接続された列方向データ転送用データラインと行方向データ転送用データラインとに対し所定の組み合わせの演算制御データをデータ転送させることで、該所定の演算素子にその演算結果データを該制御回路へ転送させるデータ転送制御部を有することを特徴とする請求項1記載の高速視覚センサ装置。
- 前記列方向データ転送用バス及び前記行方向データ転送用バスのそれぞれに対応するデータバッファをさらに備えていることを特徴とする請求項1記載の高速視覚センサ装置。
- 前記並列処理機構が、さらに、複数の転送用シフトレジスタが該複数のA/D変換器と該複数の演算素子行の各々と1対1に対応して配列され、各転送用シフトレジスタが、該対応するA/D変換器から出力された対応する受光素子行に所属する該受光素子の出力信号に相当するデジタル信号を、該対応する行に所属する所定の演算素子に順次転送する転送用シフトレジスタアレイを有することを特徴とする請求項1記載の高速視覚センサ装置。
- 複数の受光素子が複数の行及び列に2次元状に配列されて構成された受光素子アレイと、
複数のA/D変換器が該受光素子アレイの該複数の行に1対1に対応して1次元状に配列されて構成され、各A/D変換器が、該対応する1行中の受光素子から順次読み出された出力信号をアナログ・デジタル変換するA/D変換器アレイと、
複数の演算素子が、該受光素子アレイの該複数の受光素子と1対1に対応して複数の行及び列に2次元状に配列され、各演算素子が該A/D変換器アレイから転送されたデジタル信号について所定の演算を行う並列演算素子アレイからなる並列処理機構と、
複数の列方向データ転送用データラインが前記並列処理機構の各列と1対1に対応して設けられ、各列方向データ転送用データラインが、対応する列に存在する複数の演算素子を接続し該対応する列の各演算素子とのデータ転送を行う列方向データ転送用バスと、
複数の行方向データ転送用データラインが前記並列処理機構の各行と1対1に対応して設けられ、各行方向データ転送用データラインが、対応する行に存在する複数の演算素子を接続し該対応する行の各演算素子とのデータ転送を行う行方向データ転送用バスと、
前記受光素子アレイ、前記A/D変換器アレイ、前記並列処理機構、前記列方向データ転送用バス、及び、前記行方向データ転送用バスを制御し、前記列方向データ転送用バスと前記行方向データ転送用バスとを介した各演算素子とのデータ転送を行う制御回路と、
を備え、
前記制御回路が、各演算素子からのデータを、対応する列方向データ転送用データラインと対応する行方向データ転送用データラインとを介して受け取り、所定のデータが転送された列方向データ転送用データラインと該所定のデータが転送された行方向データ転送用データラインとの組み合わせに基づいて、該所定のデータを出力した演算素子の位置を求めることを特徴とする高速視覚センサ装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP7012199 | 1999-03-16 | ||
PCT/JP2000/001471 WO2000055810A1 (fr) | 1999-03-16 | 2000-03-10 | Capteur de vision ultra-rapide |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009283335A Division JP4503697B2 (ja) | 1999-03-16 | 2009-12-14 | 高速視覚センサ装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP4489305B2 true JP4489305B2 (ja) | 2010-06-23 |
Family
ID=13422416
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000605967A Expired - Fee Related JP4489305B2 (ja) | 1999-03-16 | 2000-03-10 | 高速視覚センサ装置 |
JP2009283335A Expired - Fee Related JP4503697B2 (ja) | 1999-03-16 | 2009-12-14 | 高速視覚センサ装置 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009283335A Expired - Fee Related JP4503697B2 (ja) | 1999-03-16 | 2009-12-14 | 高速視覚センサ装置 |
Country Status (5)
Country | Link |
---|---|
US (2) | US6970196B1 (ja) |
EP (1) | EP1164544B1 (ja) |
JP (2) | JP4489305B2 (ja) |
AU (1) | AU2941600A (ja) |
WO (1) | WO2000055810A1 (ja) |
Families Citing this family (54)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2000055810A1 (fr) * | 1999-03-16 | 2000-09-21 | Hamamatsu Photonics K. K. | Capteur de vision ultra-rapide |
JP2002094886A (ja) * | 2000-09-13 | 2002-03-29 | Hamamatsu Photonics Kk | 高速画像処理装置 |
WO2002073538A1 (fr) * | 2001-03-13 | 2002-09-19 | Ecchandes Inc. | Dispositif visuel, compteur asservi et capteur d'images |
JP4863340B2 (ja) * | 2001-06-05 | 2012-01-25 | 浜松ホトニクス株式会社 | 画像計測カメラ |
JP3902741B2 (ja) * | 2002-01-25 | 2007-04-11 | 株式会社半導体理工学研究センター | 半導体集積回路装置 |
GB2395299B (en) * | 2002-09-17 | 2006-06-21 | Micron Technology Inc | Control of processing elements in parallel processors |
US6871409B2 (en) | 2002-12-18 | 2005-03-29 | Snap-On Incorporated | Gradient calculating camera board |
US7676648B2 (en) * | 2003-04-23 | 2010-03-09 | Micron Technology, Inc. | Method for manipulating data in a group of processing elements to perform a reflection of the data |
US7596678B2 (en) * | 2003-04-23 | 2009-09-29 | Micron Technology, Inc. | Method of shifting data along diagonals in a group of processing elements to transpose the data |
US7581080B2 (en) * | 2003-04-23 | 2009-08-25 | Micron Technology, Inc. | Method for manipulating data in a group of processing elements according to locally maintained counts |
US7913062B2 (en) * | 2003-04-23 | 2011-03-22 | Micron Technology, Inc. | Method of rotating data in a plurality of processing elements |
JP4277216B2 (ja) * | 2005-01-13 | 2009-06-10 | ソニー株式会社 | 撮像装置及び撮像結果の処理方法 |
TWI429066B (zh) | 2005-06-02 | 2014-03-01 | Sony Corp | Semiconductor image sensor module and manufacturing method thereof |
US8179296B2 (en) | 2005-09-30 | 2012-05-15 | The Massachusetts Institute Of Technology | Digital readout method and apparatus |
US20100226495A1 (en) | 2007-10-29 | 2010-09-09 | Michael Kelly | Digital readout method and apparatus |
US7787021B2 (en) * | 2006-10-30 | 2010-08-31 | Texas Instruments Incorporated | Programmable architecture for flexible camera image pipe processing |
JP4661912B2 (ja) | 2008-07-18 | 2011-03-30 | ソニー株式会社 | 固体撮像素子およびカメラシステム |
US8755515B1 (en) | 2008-09-29 | 2014-06-17 | Wai Wu | Parallel signal processing system and method |
WO2011137236A1 (en) | 2010-04-30 | 2011-11-03 | Corning Cable Systems Llc | Fiber optic cables with access features and methods of making fiber optic cables |
CN106886076B (zh) | 2010-10-28 | 2019-11-05 | 康宁光缆系统有限责任公司 | 具有挤出式接近特征的光纤电缆以及用于制造光纤电缆的方法 |
WO2013006188A1 (en) | 2011-07-01 | 2013-01-10 | Schultz Kenneth I | Methods and apparatus for in-pixel filtering in focal plane arrays |
US20130027416A1 (en) * | 2011-07-25 | 2013-01-31 | Karthikeyan Vaithianathan | Gather method and apparatus for media processing accelerators |
US9274302B2 (en) | 2011-10-13 | 2016-03-01 | Corning Cable Systems Llc | Fiber optic cables with extruded access features for access to a cable cavity |
US9323022B2 (en) | 2012-10-08 | 2016-04-26 | Corning Cable Systems Llc | Methods of making and accessing cables having access features |
US9201208B2 (en) | 2011-10-27 | 2015-12-01 | Corning Cable Systems Llc | Cable having core, jacket and polymeric jacket access features located in the jacket |
US9343497B2 (en) * | 2012-09-20 | 2016-05-17 | Semiconductor Components Industries, Llc | Imagers with stacked integrated circuit dies |
JP2014239309A (ja) | 2013-06-06 | 2014-12-18 | 富士通オプティカルコンポーネンツ株式会社 | 光送信装置、光受信装置、および光送受信装置 |
CN104184963B (zh) * | 2014-09-05 | 2017-10-13 | 无锡英斯特微电子有限公司 | 光电导航系统中高效资源利用的方法 |
US9838635B2 (en) * | 2014-09-30 | 2017-12-05 | Qualcomm Incorporated | Feature computation in a sensor element array |
US20170132466A1 (en) | 2014-09-30 | 2017-05-11 | Qualcomm Incorporated | Low-power iris scan initialization |
US9749548B2 (en) | 2015-01-22 | 2017-08-29 | Google Inc. | Virtual linebuffers for image signal processors |
KR102426677B1 (ko) | 2015-03-09 | 2022-07-28 | 삼성전자주식회사 | 오프셋 및 잡음이 감소되는 차분 증폭기 및 이벤트에 기반한 비전 센서 |
US9785423B2 (en) * | 2015-04-23 | 2017-10-10 | Google Inc. | Compiler for translating between a virtual image processor instruction set architecture (ISA) and target hardware having a two-dimensional shift array structure |
US10095479B2 (en) | 2015-04-23 | 2018-10-09 | Google Llc | Virtual image processor instruction set architecture (ISA) and memory model and exemplary target hardware having a two-dimensional shift array structure |
US10291813B2 (en) | 2015-04-23 | 2019-05-14 | Google Llc | Sheet generator for image processor |
US9769356B2 (en) * | 2015-04-23 | 2017-09-19 | Google Inc. | Two dimensional shift array for image processor |
US9772852B2 (en) * | 2015-04-23 | 2017-09-26 | Google Inc. | Energy efficient processor core architecture for image processor |
US9756268B2 (en) | 2015-04-23 | 2017-09-05 | Google Inc. | Line buffer unit for image processor |
US9965824B2 (en) | 2015-04-23 | 2018-05-08 | Google Llc | Architecture for high performance, power efficient, programmable image processing |
US10313641B2 (en) | 2015-12-04 | 2019-06-04 | Google Llc | Shift register with reduced wiring complexity |
US9830150B2 (en) | 2015-12-04 | 2017-11-28 | Google Llc | Multi-functional execution lane for image processor |
US10387988B2 (en) | 2016-02-26 | 2019-08-20 | Google Llc | Compiler techniques for mapping program code to a high performance, power efficient, programmable image processing hardware platform |
US10204396B2 (en) | 2016-02-26 | 2019-02-12 | Google Llc | Compiler managed memory for image processor |
US10380969B2 (en) | 2016-02-28 | 2019-08-13 | Google Llc | Macro I/O unit for image processor |
US20180005346A1 (en) | 2016-07-01 | 2018-01-04 | Google Inc. | Core Processes For Block Operations On An Image Processor Having A Two-Dimensional Execution Lane Array and A Two-Dimensional Shift Register |
US20180007302A1 (en) | 2016-07-01 | 2018-01-04 | Google Inc. | Block Operations For An Image Processor Having A Two-Dimensional Execution Lane Array and A Two-Dimensional Shift Register |
US10546211B2 (en) | 2016-07-01 | 2020-01-28 | Google Llc | Convolutional neural network on programmable two dimensional image processor |
US20180005059A1 (en) | 2016-07-01 | 2018-01-04 | Google Inc. | Statistics Operations On Two Dimensional Image Processor |
WO2018090163A1 (en) * | 2016-11-15 | 2018-05-24 | Shenzhen Xpectvision Technology Co., Ltd. | An image sensor |
US10614332B2 (en) | 2016-12-16 | 2020-04-07 | Qualcomm Incorportaed | Light source modulation for iris size adjustment |
US10984235B2 (en) | 2016-12-16 | 2021-04-20 | Qualcomm Incorporated | Low power data generation for iris-related detection and authentication |
US10672101B1 (en) * | 2019-03-04 | 2020-06-02 | Omnivision Technologies, Inc. | DRAM with simultaneous read and write for multiwafer image sensors |
CN111397510B (zh) * | 2020-03-24 | 2021-05-18 | 青岛罗博智慧教育技术有限公司 | 一种数字轨迹记录装置及坐标校准方法 |
US20230194677A1 (en) * | 2021-12-16 | 2023-06-22 | Waymo Llc | Multi-Chip Daisychain for Output Aggregation |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS62295174A (ja) * | 1986-06-14 | 1987-12-22 | Agency Of Ind Science & Technol | 並列デ−タ処理装置 |
JPH10145680A (ja) * | 1996-11-08 | 1998-05-29 | Hamamatsu Photonics Kk | 高速視覚センサ装置 |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS60221877A (ja) * | 1984-04-18 | 1985-11-06 | Mitsubishi Electric Corp | 図形演算装置 |
US4725970A (en) * | 1985-02-05 | 1988-02-16 | Sanders Associates, Inc. | Simulation device |
US4665440A (en) * | 1985-09-17 | 1987-05-12 | Honeywell, Inc. | Parallel processing of the output from monolithic sensor arrays |
US4910665A (en) * | 1986-09-02 | 1990-03-20 | General Electric Company | Distributed processing system including reconfigurable elements |
JP2900359B2 (ja) | 1986-10-30 | 1999-06-02 | 株式会社日立製作所 | マルチプロセッサシステム |
US4873626A (en) * | 1986-12-17 | 1989-10-10 | Massachusetts Institute Of Technology | Parallel processing system with processor array having memory system included in system memory |
US5113365A (en) * | 1989-05-16 | 1992-05-12 | Massachusetts Institute Of Technology | Method and charge coupled apparatus for algorithmic computations |
US5253308A (en) * | 1989-06-21 | 1993-10-12 | Amber Engineering, Inc. | Massively parallel digital image data processor using pixel-mapped input/output and relative indexed addressing |
US5297289A (en) * | 1989-10-31 | 1994-03-22 | Rockwell International Corporation | System which cooperatively uses a systolic array processor and auxiliary processor for pixel signal enhancement |
JPH0620070A (ja) | 1992-06-30 | 1994-01-28 | Mitsubishi Electric Corp | 並列データ処理装置 |
JPH06195480A (ja) | 1992-10-13 | 1994-07-15 | Nec Corp | 並列処理装置 |
JPH06274467A (ja) * | 1993-03-23 | 1994-09-30 | Sumitomo Metal Ind Ltd | フィールドプログラマブルプロセッサアレイ |
EP0733233A4 (en) * | 1993-12-12 | 1997-05-14 | Asp Solutions Usa Inc | SIGNAL PROCESSING APPARATUS AND METHOD |
US6021172A (en) * | 1994-01-28 | 2000-02-01 | California Institute Of Technology | Active pixel sensor having intra-pixel charge transfer with analog-to-digital converter |
US6507362B1 (en) * | 1994-12-09 | 2003-01-14 | Neomagic Israel Ltd. | Digital image generation device for transmitting digital images in platform-independent form via the internet |
JPH08235149A (ja) | 1995-02-24 | 1996-09-13 | Sumitomo Metal Ind Ltd | 単一命令・多データ型並列計算機の命令生成・分配装置 |
US5892962A (en) * | 1996-11-12 | 1999-04-06 | Lucent Technologies Inc. | FPGA-based processor |
US6362482B1 (en) * | 1997-09-16 | 2002-03-26 | Advanced Scientific Concepts, Inc. | High data rate smart sensor technology |
US6721008B2 (en) * | 1998-01-22 | 2004-04-13 | Eastman Kodak Company | Integrated CMOS active pixel digital camera |
WO2000021284A1 (fr) * | 1998-10-07 | 2000-04-13 | Hamamatsu Photonics K. K. | Capteur de vision ultra-rapide |
US6757019B1 (en) * | 1999-03-13 | 2004-06-29 | The Board Of Trustees Of The Leland Stanford Junior University | Low-power parallel processor and imager having peripheral control circuitry |
WO2000055810A1 (fr) * | 1999-03-16 | 2000-09-21 | Hamamatsu Photonics K. K. | Capteur de vision ultra-rapide |
-
2000
- 2000-03-10 WO PCT/JP2000/001471 patent/WO2000055810A1/ja active Application Filing
- 2000-03-10 US US09/936,267 patent/US6970196B1/en not_active Expired - Fee Related
- 2000-03-10 AU AU29416/00A patent/AU2941600A/en not_active Abandoned
- 2000-03-10 JP JP2000605967A patent/JP4489305B2/ja not_active Expired - Fee Related
- 2000-03-10 EP EP00908001A patent/EP1164544B1/en not_active Expired - Lifetime
-
2005
- 2005-08-17 US US11/205,001 patent/US7532244B2/en not_active Expired - Fee Related
-
2009
- 2009-12-14 JP JP2009283335A patent/JP4503697B2/ja not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS62295174A (ja) * | 1986-06-14 | 1987-12-22 | Agency Of Ind Science & Technol | 並列デ−タ処理装置 |
JPH10145680A (ja) * | 1996-11-08 | 1998-05-29 | Hamamatsu Photonics Kk | 高速視覚センサ装置 |
Also Published As
Publication number | Publication date |
---|---|
AU2941600A (en) | 2000-10-04 |
WO2000055810A1 (fr) | 2000-09-21 |
US7532244B2 (en) | 2009-05-12 |
EP1164544A4 (en) | 2010-04-21 |
EP1164544B1 (en) | 2011-11-02 |
JP2010063173A (ja) | 2010-03-18 |
US20050280728A1 (en) | 2005-12-22 |
JP4503697B2 (ja) | 2010-07-14 |
EP1164544A1 (en) | 2001-12-19 |
US6970196B1 (en) | 2005-11-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4489305B2 (ja) | 高速視覚センサ装置 | |
US7098437B2 (en) | Semiconductor integrated circuit device having a plurality of photo detectors and processing elements | |
Fossum | Architectures for focal plane image processing | |
US6563540B2 (en) | Light sensor with increased dynamic range | |
US6670904B1 (en) | Double-ramp ADC for CMOS sensors | |
JP4458678B2 (ja) | 高速視覚センサ装置 | |
JP4592243B2 (ja) | 高速画像処理カメラシステム | |
Suarez et al. | CMOS-3D smart imager architectures for feature detection | |
KR20120061094A (ko) | 아날로그 디지털 컨버터 및 이를 포함하는 이미지 센서 | |
JP2000152082A (ja) | イメージセンサ | |
US7382937B2 (en) | Method and apparatus for re-constructing high-resolution images | |
KR100224557B1 (ko) | 반도체 장치, 연산 장치, 신호 변환기, 및 반도체 장치를 이용한 신호 처리시스템 | |
JP2000194839A (ja) | イメ―ジセンサで画面をパニング及びスケ―リングするための装置 | |
JP4334672B2 (ja) | 高速視覚センサ装置 | |
JP4302212B2 (ja) | 高速視覚センサ装置 | |
EP0725356A2 (en) | Semiconductor device, semiconductor circuit using the device, and correlation calculation device, signal converter, and signal processing system using the circuit | |
WO2022255493A1 (ja) | 撮像装置、撮像方法および撮像プログラム | |
US20010030690A1 (en) | Image detection processor | |
JP2002094886A (ja) | 高速画像処理装置 | |
Linan et al. | Architectural and basic circuit considerations for a flexible 128× 128 mixed-signal SIMD vision chip | |
JP3991751B2 (ja) | 固体撮像素子及びその読み出し方法 | |
Ito et al. | A computational digital pixel sensor featuring block-readout architecture for on-chip image processing | |
Dudek et al. | An analogue SIMD focal-plane processor array | |
JP2002183724A (ja) | 高速画像処理装置 | |
JP3776513B2 (ja) | 画像処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20070305 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20100330 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20100331 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130409 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4489305 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130409 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140409 Year of fee payment: 4 |
|
LAPS | Cancellation because of no payment of annual fees |