(57)【特許請求の範囲】
【請求項１】
第１の制御手段と、第２の制御手段と、外部メモリと、内部メモリと、第１のレジスタと、第２のレジスタと、参照画像データおよび検索画像データを使用して画像認識のための演算を行う演算手段とを備え、
上記第２の制御手段は、上記第１の制御手段で作成された制御リストに基づき、
上記外部メモリより上記参照画像データおよび上記検索画像データを上記内部メモリに転送し、
上記内部メモリから上記参照画像データの参照画素データをｍ個（ｍは正の整数）ずつ読み出して上記第１のレジスタにｍ又は２ｍ個の参照画素データを保持すると共に、上記内部メモリから上記検索画像データの検索画素データをｍ個ずつ読み出して上記第２のレジスタにｍ個の検索画素データを保持し、
１回目の段階で、当該ｍ個の検索画素データに係る当該ｍ個の参照画素データを並列的に積算し、
２回目の段階で、次の当該ｍ個の検索画素データに係る当該２ｍ個の参照画素データを並列的に積算し、
３回目以降の各段階でも同様に、次の当該ｍ個の検索画素データに係る当該２ｍ個の参照画素データを並列的に積算するように上記演算手段に画像認識のための演算を行わせ、
さらに上記演算手段の演算結果を上記外部メモリに転送するように制御する
ことを特徴とする画像処理装置。
【請求項２】
ビデオカメラをさらに備え、上記参照画像データおよび検索画像データは上記ビデオカメラより出力される画像データより生成されて上記外部メモリに格納されること
を特徴とする請求項１に記載の画像処理装置。
【請求項３】
上記制御リストは上記外部メモリに格納されており、上記第２の制御手段は上記外部メモリより上記制御リストを取得すること
を特徴とする請求項１に記載の画像処理装置。
【請求項４】
上記演算手段は、上記画像認識のための複数の積和演算を並列的に行うこと
を特徴とする請求項１に記載の画像処理装置。
【請求項５】
上記外部メモリには上記演算手段の演算工程を示す複数のインストラクションからなるインストラクションセットが格納されており、
上記第２の制御手段は、さらに上記外部メモリより上記インストラクションセットを上記内部メモリに取り込むように制御し、
上記演算手段は上記内部メモリに取り込まれたインストラクションセットに基づいて演算を行うこと
を特徴とする請求項１に記載の画像処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、例えばロボットシステムに適用して好適な画像処理装置に関する。詳しくは、第２の制御手段は、第１の制御手段で作成された制御リストに基づき、外部メモリより参照画像データおよび検索画像データを内部メモリに転送し、それらの画像データを使用して演算手段に画像認識のための演算を行わせ、さらにその演算結果を外部メモリに転送するように制御することによって、第１の制御手段の負担軽減を図るようにした画像処理装置に係るものである。
【０００２】
【従来の技術】
従来の積和演算装置等は、高度に並列化されており、演算の処理自体は非常に高速に行えるものが多い。また、画像の圧縮伸長等に処理を特定し、画像の転送や積和演算後の処理をハードウェア化することによりシステム全体を高速化する例もある。
【０００３】
【発明が解決しようとする課題】
しかしながら、積和演算装置等を例えばロボットシステムにおける画像認識処理等の汎用な処理の一部として使用する場合、積和演算装置への大量のデータ転送や積和演算の後処理等のために、システムの制御手段としてのＣＰＵ（central processing unit）の負担が増大し、システム全体のスループットを上げることが困難となる。また、従来の積和演算装置等は、積算器、加算器自体を多く持って高度に並列化することで、回路面積が大きくなるという不都合もあった。
【０００４】
そこで、この発明では、例えばシステムの制御手段としてのＣＰＵの負担を軽減し得る画像処理装置を提供することを目的とする。
【０００５】
【課題を解決するための手段】
この発明に係る画像処理装置は、第１の制御手段と、第２の制御手段と、外部メモリと、内部メモリと、第１のレジスタと、第２のレジスタと、参照画像データおよび検索画像データを使用して画像認識のための演算を行う演算手段とを備え、第２の制御手段は、第１の制御手段で作成された制御リストに基づき、外部メモリより参照画像データおよび検索画像データを内部メモリに転送し、内部メモリから参照画像データの参照画素データをｍ個（ｍは正の整数）ずつ読み出して第１のレジスタにｍ又は２ｍ個の参照画素データを保持すると共に、内部メモリから検索画像データの検索画素データをｍ個ずつ読み出して第２のレジスタにｍ個の検索画素データを保持し、１回目の段階で、当該ｍ個の検索画素データに係る当該ｍ個の参照画素データを並列的に積算し、２回目の段階で、次の当該ｍ個の検索画素データに係る当該２ｍ個の参照画素データを並列的に積算し、３回目以降の各段階でも同様に、次の当該ｍ個の検索画素データに係る当該２ｍ個の参照画素データを並列的に積算するように演算手段に画像認識のための演算を行わせ、さらに演算手段の演算結果を外部メモリに転送するように制御するものである。
【０００６】
この発明において、画像認識の演算を行う際、第１の制御手段、例えばシステムの制御手段としてのＣＰＵより第２の制御手段にその演算の開始が指示される。これに対して、第２の制御手段は、第１の制御手段で作成された制御リストを例えば外部メモリより取得し、この制御リストに基づいてデータの転送制御をする。
【０００７】
すなわち、まず外部メモリより内部メモリに参照画像データおよび検索画像データを転送する。参照画像データおよび検索画像データは、例えばビデオカメラより出力される画像データより生成されたものである。次に、内部メモリから参照画像データの参照画素データをｍ個（ｍは正の整数）ずつ読み出して第１のレジスタにｍ又は２ｍ個の参照画素データを保持し、また内部メモリから検索画像データの検索画素データをｍ個ずつ読み出して第２のレジスタにｍ個の検索画素データを保持する。そして、１回目の段階で、当該ｍ個の検索画素データに係る当該ｍ個の参照画素データを並列的に積算し、２回目の段階で、次の当該ｍ個の検索画素データに係る当該２ｍ個の参照画素データを並列的に積算し、３回目以降の各段階でも同様に、次の当該ｍ個の検索画素データに係る当該２ｍ個の参照画素データを並列的に積算するように演算手段に画像認識のための演算を行わせる。この場合、画像認識のための複数の積和演算を並列的に行うことができ、処理の高速化が図られる。そして、画像認識のための演算結果を外部メモリに転送する。
【０００８】
このように、画像認識の演算を行う際、第１の制御手段、例えばシステムの制御手段としてのＣＰＵは第２の制御手段にその演算の開始を指示するだけで済む。これにより、ＣＰＵの負担が軽減されることとなり、システム全体のスループットを上げることが可能となる。また、外部メモリより内部メモリに参照画像データおよび検索画像データを転送して処理するものであり、処理前の画像データは外部メモリに残っているため、同一の画像データに対して演算を繰り返し行うことが可能となる。
【０００９】
【発明の実施の形態】
以下、図面を参照しながら、この発明の実施の形態について説明する。図１は、実施の形態としてのロボットシステム１０の構成を示している。このロボットシステム１０は、システム全体を制御する制御手段としてのＣＰＵ１１と、例えばＣＣＤ（charge coupled device）固体撮像素子を有してなるビデオカメラ１２と、このビデオカメラ１２より出力される画像データなどを記憶する外部メモリとしてのＤＲＡＭ（dynamic random access memory）１３と、ＣＰＵ１１の動作プログラム等が記憶されたフラッシュＲＯＭ（read only memory）１４と、ＣＰＵ１１の周辺回路、音声認識や音声合成のためのＤＳＰ（digital signal processor）、画像処理回路、シリアルバスのホストコントローラ等を１つにまとめたＬＳＩ（large scale integrated circuit）１５とを有している。
【００１０】
ＣＰＵ１１、ビデオカメラ１２、ＤＲＡＭ１３およびフラッシュＲＯＭ１４は、ＬＳＩ１５に接続されている。なお、フラッシュＲＯＭ１４に記憶されているＣＰＵ１１の動作プログラムは、外部ＰＣ（personal computer）１６等の開発環境によって作成および変更が可能とされている。この場合、開発環境としてのＰＣ１６は、ＬＳＩ１５に接続される。
【００１１】
また、ロボットシステム１０は、アクチュエータ１７ａ、ポテンショメータ１７ｂ、スピーカ１７ｃ、マイクロホン１７ｄ等のＣＰＣ（configurable physical component）ディバイスを有している。このＣＰＣディバイス１７は、ロボットの手足や耳、口等を構成するものであり、分岐部１８を介してＬＳＩ１５に接続されている。この場合、ＣＰＵ１１によって、ポテンショメータ１７ｂの出力やマイクロホン１７ｄの出力が監視され、アクチュエータ１７ａの動きやスピーカ１７ｃからの音声出力が制御される。
【００１２】
図２は、ＬＳＩ１５の構成を示している。このＬＳＩ１５は、ＤＲＡＭ１３のコントローラとしてのＤＲＡＭインタフェース２１と、ＣＰＵ１１と接続するためのホストインタフェース２２と、フラッシュＲＯＭ１４のコントローラとしてのＲＯＭインタフェース２３と、外部バス２４と内部バス２５のアービトレーションを行うためのバスアービッタ２６とを有している。インタフェース２１〜２３は、それぞれ外部バス２４に接続されている。
【００１３】
また、ＬＳＩ１５は、例えば開発環境としてのＰＣ１６が接続されるシリアルポート２７と、パラレルポート２８と、バッテリーの残量の管理や後述するタイマと連係してある時間にパワーオンとする等の制御を行うためのバッテリーマネージャ２９とを有している。これらシリアルポート２７、パラレルポート２８およびバッテリーマネージャ２９は、それぞれペリフェラルインタフェース３０を介して内部バス２５に接続されている。
【００１４】
また、ＬＳＩ１５は、リアルタイムの時間情報を得るためのタイマ３１と、音声認識や音声合成を行うためのＤＳＰ３２と、画像データ等のＤＭＡ（direct memory access）転送を制御するＤＭＡコントローラ３３と、ビデオカメラ１２より出力される画像データに対して間引き処理等をして種々の解像度の画像データを作成するＦＢＫ（filter bank）３４とを有している。これらタイマ３１、ＤＳＰ３２、ＤＭＡコントローラ３３およびＦＢＫ３４は、それぞれ内部バス２５に接続されている。ＦＢＫ３４で作成された種々の解像度の画像データは、ＤＭＡコントローラ３３によりＤＲＡＭ１３に転送される。ＣＰＵ１１は、ＤＭＡの制御リストの終了割り込み等によって、１フィールド画像が処理されたことを知ることができる。
【００１５】
また、ＬＳＩ１５は、ＣＰＣディバイス１７との通信を司るホストのコントローラとして機能するＵＳＢ（universal serial bus）ホストコントローラ３５と、ロボットシステムをＣＰＣディバイスとみなして外部ＰＣ等の開発環境１９に接続するためのＵＳＢインタフェース３６とを有している。このＵＳＢインタフェース３６に接続される外部ＰＣ等の開発環境１９によって、フラッシュＲＯＭ１４に記憶されているＣＰＵ１１の動作プログラムの作成および変更が可能とされる。これらＵＳＢホストコントローラ３５およびＵＳＢインタフェース３６は、それぞれ内部バス２５に接続されている。
【００１６】
また、ＬＳＩ１５は、外部メモリ１３より転送される参照画像データおよび検索画像データを使用して画像認識のための演算を行う演算手段としてのＩＰＥ（inner Product Engine）３７を有している。このＩＰＥ３７は内部バス２５に接続されている。この場合、ＤＭＡコントローラ３３によりＤＲＡＭ１３より参照画像データおよび検索画像データが転送されてくると共に、このＩＰＥ３７の演算結果はＤＭＡコントローラ３３によりＤＲＡＭ１３に転送される。
【００１７】
ここで、ＤＲＡＭ１３に記憶されている画像データのうちどの部分を参照画像データおよび検索画像データとしてＩＰＥ３７に転送し、また演算結果をＩＰＥ３７よりＤＲＡＭ１３のどこに転送するかは予めＤＭＡの制御リストとしてＣＰＵ１１によって作成されており、ＤＲＡＭ１３に記憶されている。したがって、ＤＭＡＣ３３は、ＤＲＡＭ１３よりこの制御リストを取得し、その制御リストに基づいて転送制御を行うようにされている。
【００１８】
なお、後述するように、ＩＰＥ３７のＦＰＵ（floating point processing unit）では、画像認識のための演算として正規化相関演算や画像間の自乗誤差演算等の演算が行われる。そして、これらの演算は複数の処理手順によって行われるが、その処理手順を示す複数のインストラクションからなるインストラクションセットはＤＲＡＭ１３に記憶されており、このインストラクションセットも、上述した制御リストに基づき、ＤＭＡコントローラ３３によりＤＲＡＭ１３よりＩＰＥ３７に転送される。
【００１９】
図３は、ＩＰＥ３７の具体構成を示している。このＩＰＥ３７は、ＩＰＥ３７の動作を制御するためのＩＰＥコントローラ４１と、ＤＲＡＭ１３より転送されてくる参照画像データＴＭＤを記憶しておくテンプレートＲＡＭ４２と、ＤＲＡＭ１３より転送されてくる検索画像データＳＲＤを記憶しておくサーチＲＡＭ４３と、さらにＤＲＡＭ１３より転送されてくるインストラクションセットＩＳＴを記憶しておくインストラクションＲＡＭ４４とを有している。これらＲＡＭ４２〜４４は、それぞれ内部メモリを構成している。
【００２０】
参照画像データＴＭＤはｔｘ×ｔｙ画素（最大３２×３２画素）のブロックの画像データであり、一方検索画像データＳＲＤはｓｘ×ｓｙ画素（最大６４×６４画素）のブロックの画像データである。後述する積和演算器では、図４に示すように、参照画像データＴＭＤと、検索画像データＳＲＤから同じサイズで順次切り出されたブロックの画像データｓｒｄとの間で積和の演算が行われる。
【００２１】
また、ＩＰＥ３７は、参照画像データＴＭＤと、検索画像データＳＲＤから同じサイズで順次切り出されたブロックの画像データｓｒｄとの間で積和の演算を行うための積和演算器４５と、積和の演算結果を使用して画像認識の演算としての正規化相関演算や画像間の自乗誤差演算等を行うＦＰＵ４６と、このＦＰＵ４６より出力される演算結果を蓄えておくＦＩＦＯメモリ４７とを有している。
【００２２】
ここで、積和演算器４５では、参照画像データＴＭＤおよび画像データｓｒｄの中の画素データ（ａi，ｂi）の総和、自乗和、積和が演算される。つまり、Σａi，Σａi2，Σａiｂi，Σｂi，Σｂi2が演算される。図５は、積和演算器４５の構成例を示しており、演算処理の高速化のために４ブロックの画像データｓｒｄに係る演算が並列的に行われるようになっている。
【００２３】
積和演算器４５は、テンプレートＲＡＭ４２より順次読み出される参照画像データＴＭＤの８画素の画素データを保持するレジスタ５１と、サーチＲＡＭ４３より読み出される４ブロックＢＫ１〜ＢＫ４の画像データｓｒｄに跨る４画素の画素データを保持するレジスタ５２と、参照画像データＴＭＤおよび４ブロックＢＫ１〜ＢＫ４の画像データｓｒｄの中の画素データの積算ａiｂiを行う積算部５３と、参照画像データＴＭＤの中の画素データの積算ａiａiを行う積算部５４と、４ブロックＢＫ１〜ＢＫ４の画像データｓｒｄの中の画素データの積算ｂiｂiを行う積算部５５とを有している。
【００２４】
この場合、積算部５３では１６画素分（最初と最後は１０画素分）の積算処理が並列的に行われ、積算部５４，５５ではそれぞれ４画素分の積算処理が並列的に行われる。上述せずも、テンプレートＲＡＭ４２より、「A0,A1,A2,A3」、「A4,A5,A6,A7」、「A8,A9,A10,A11」、・・・のように参照画像データＴＭＤの画素データが４画素ずつ読み出されてレジスタ５１に供給される。そして、レジスタ５１は、「A0,A1,A2,A3」、「A0,A1,A2,A3,A4,A5,A6,A7」、「A4,A5,A6,A7,A8,A9,A10,A11」、・・・のように画素データを順次保持した状態となる。
【００２５】
これに対応して、サーチＲＡＭ４３より、「B0,B1,B2,B3」、「B4,B5,B6,B7」、「B8,B9,B10,B11」、・・・のように画素データが４画素ずつ読み出されてレジスタ５２に供給される。そして、レジスタ５２は、「B0,B1,B2,B3」、「B4,B5,B6,B7」、「B8,B9,B10,B11」、・・・のように画素データを順次保持した状態となる。
【００２６】
図６は、テンプレートＲＡＭ４２より１回目に読み出される参照画像データＴＭＤの４画素の画素データ「A0,A1,A2,A3」と、サーチＲＡＭ４３より１回目に読み出される４ブロックＢＫ１〜ＢＫ４の画像データｓｒｄに跨る４画素の画素データ「B0,B1,B2,B3」とを示している。１回目の段階で、レジスタ５１には画素データ「A0,A1,A2,A3」が保持され、レジスタ５２には画素データ「B0,B1,B2,B3」が保持される。そして、積算部５３では、ブロックＢＫ１に係る４画素分の積算「a0b0,a1b1,a2b2,a3b3」として「A0B0,A1B1,A2B2,A3B3」が、ブロックＢＫ２に係る３画素分の積算「a0b0,a1b1,a2b2」として「A0B1,A1B2,A2B3」が、ブロックＢＫ３に係る２画素分の積算「a0b0,a1b1」として「A0B2,A1B3」が、ブロックＢＫ４に係る１画素分の積算「a0b0」として「A0B3」が並列的に演算される（図７参照）。
【００２７】
また、１回目の段階で、積算部５４では、参照画像データに係る４画素分の積算「a0a0,a1a1,a2a2,a3a3」として、「A0A0,A1A1,A2A2,A3A3」が並列的に演算される。また、１回目の段階で、積算部５５では、４画素分の積算「B0B0,B1B1,B2B2,B3B3」が行われる。つまり、ブロックＢＫ１に係る４画素分の積算「b0b0,b1b1,b2b2,b3b3」として「B0B0,B1B1,B2B2,B3B3」が、ブロックＢＫ２に係る３画素分の積算「b0b0,b1b1,b2b2」として「B1B1,B2B2,B3B3」が、ブロックＢＫ３に係る２画素分の積算「b0b0,b1b1」として「B2B2,B3B3」が、ブロックＢＫ４に係る１画素分の積算「b0b0」として「B3B3」が演算されることとなる。
【００２８】
また、２回目の段階で、レジスタ５１には画素データ「A0,A1,A2,A3,A4,A5,A6,A7」が保持され、レジスタ５２には画素データ「B4,B5,B6,B7」が保持される。そして、２回目の段階で、積算部５３では、ブロックＢＫ１に係る４画素分の積算「a4b4,a5b5,a6b6,a7b7」として「A4B4,A5B5,A6B6,A7B7」が、ブロックＢＫ２に係る４画素分の積算「a3b3,a4b4,a5b5,a6b6」として「A3B4,A4B5,A5B6,A6B7」が、ブロックＢＫ３に係る４画素分の積算「a2b2,a3b3,a4b4,a5b5」として「A2B4,A3B5,A4B6,A5B7」が、ブロックＢＫ４に係る４画素分の積算「a1b1,a2b2,a3b3,a4b4」として「A1B4,A2B5,A3B6,A4B7」が並列的に演算される（図７参照）。
【００２９】
また、２回目の段階で、積算部５４では、参照画像データに係る４画素分の積算「a4a4,a5a5,a6a6,a7a7」として、「A4A4,A5A5,A6A6,A7A7」が並列的に演算される。また、２回目の段階で、積算部５５では、４画素分の積算「B4B4,B5B5,B6B6,B7B7」が行われる。つまり、ブロックＢＫ１に係る４画素分の積算「b4b4,b5b5,b6b6,b7b7」として、ブロックＢＫ２に係る４画素分の積算「b3b3,b4b4,b5b5,b6b6」として、ブロックＢＫ3に係る４画素分の積算「b2b2,b3b3,b4b4,b5b5」として、さらにはブロックＢＫ４に係る、４画素分の積算「b1b1,b2b2,b3b3,b4b4」として、「B4B4,B5B5,B6B6,B7B7」が演算されることとなる。
【００３０】
積算部５３〜５５では、３回目以降の各段階でも同様の演算が行われる。これにより、参照画像データＴＭＤと、４ブロックＢＫ１〜ＢＫ４の画像データｓｒｄの処理で必要とする積算が行われる。つまり、積算部５３では４ブロックＢＫ１〜ＢＫ４のそれぞれに係るｎ画素分の積算「a0b0〜anbn」が行われ、積算部５４では参照画像データＴＭＤに係るｎ画素分の積算「a0a0〜anan」が行われ、積算部５５では４ブロックＢＫ１〜ＢＫ４のそれぞれに係るｎ画素分の積算「b0b0〜bnbn」が行われる。
【００３１】
図５に戻って、積和演算器４５は、積算部５３より出力される４ブロックＢＫ１〜ＢＫ４のそれぞれに係るｎ画素分の積算「a0b0〜anbn」の結果をそれぞれ加算して４ブロックＢＫ１〜ＢＫ４のそれぞれに係る積和Σａiｂiを並列的に得る加算部５６と、その４ブロックＢＫ１〜ＢＫ４の積和Σａiｂiをそれぞれ保持する４個のレジスタ５７-1〜５７-4と、積算部５４より出力される参照画像データＴＭＤに係るｎ画素分の積算「a0a0〜anan」の結果を加算して自乗和Σａi2を得る加算部５６と、その自乗和Σａi2を保持するレジスタ５９とを有している。
【００３２】
また、積和演算器４５は、積算部５５より出力される４ブロックＢＫ１〜ＢＫ４のそれぞれに係るｎ画素分の積算「b0b0〜bnbn」の結果をそれぞれ加算して４ブロックＢＫ１〜ＢＫ４のそれぞれに係る自乗和Σｂi2を並列的に得る加算部６０と、その４ブロックＢＫ１〜ＢＫ４の自乗和Σｂi2をそれぞれ保持する４個のレジスタ６１-1〜６１-4とを有している。
【００３３】
また、積和演算器４５は、参照画像データＴＭＤのｎ画素分の画素データを加算して総和Σａiを得る加算部６２と、その総和Σａiを保持するレジスタ６３と、４ブロックＢＫ１〜ＢＫ４のそれぞれに係るｎ画素分の画素データを加算して４ブロックＢＫ１〜ＢＫ４のそれぞれに係る総和Σｂiを並列的に得る加算部６４と、その４ブロックＢＫ１〜ＢＫ４の総和Σｂiをそれぞれ保持する４個のレジスタ６５-1〜６５-4とを有している。
【００３４】
なお、上述したように積和演算器４５では検索画像データＳＲＤから切り出される４ブロックの画像データｓｒｄに対して並列的に演算が行われるものであるが、ある４ブロックの画像データｓｒｄに対する処理が終了すると次の４ブロックの画像データｓｒｄに対して同様の処理が行われ、最終的に検索画像データＳＲＤから切り出される全てのブロックの画像データｓｒｄに対する処理が行われる。
【００３５】
ＦＰＵ４６では、上述した積和演算器４５の演算結果を使用して、（１）式に示す正規化相関演算や、（２）式に示す画像間の自乗誤差演算等が行われる。図８は、ＦＰＵ４６の構成例を示している。このＦＰＵ４６は、積和演算器４５より演算結果として出力される各ブロックに係るΣａi，Σａi2，Σａiｂi，Σｂi，Σｂi2を整数データから浮動小数点データに変換するための整数／浮動小数点変換器７１と、複数のデータを保持するためのｍ個のレジスタ（浮動小数点レジスタ）７３-1〜７３-mと、変換器７１の出力データ、後述する演算器７６の出力データを選択的に取り出してレジスタ７３-1〜７３-mのうち任意のレジスタに供給するセレクタ７２とを有している。
【００３６】
【数１】
0003826517.tif 000002
【００３７】
また、ＦＰＵ４６は、加減乗除等の各種の演算を選択的に行う演算器７６と、この演算器７６で演算を行うためのデータを保持する２個のレジスタ（入力レジスタ）７５-1，７５-2と、レジスタ７３-1〜７３-mに保持されているデータを選択的に取り出してレジスタ７５-1，７５-2に供給するセレクタ７４とを有している。なお、レジスタ７５-2には、演算終了時に最終的な演算結果が保持される。
【００３８】
正規化相関演算等の手順が複雑であり、複数の演算器を多段で持つことは面積上の制約があるため、ＦＰＵ４６では演算の手順がプログラマブルになっている。すなわち、ＦＰＵ４６では、ＤＲＡＭ１３より転送されてインストラクションＲＡＭ４４に記憶されているインストラクションセットＩＳＴを構成する複数のインストラクションを最初から順に実行する。これにより、セレクタ７２，７４におけるデータの取り出しや演算器７６における演算種類が順に制御され、最終的にレジスタ７５-2に正規化相関演算等の演算結果が保持された状態となる。そして、この演算結果は、例えば浮動小数点データを整数データに変換する浮動小数点／整数変換器７７を介してＦＩＦＯメモリ４７に供給される。
【００３９】
次に、ＩＰＥ３７における正規化相関演算等の画像認識のための演算の手順について説明する。まず、ＣＰＵ１１よりＩＰＥ３７（ＩＰＥコントローラ４１）に演算の開始が指示される。この指示に対応して、図９に示すように、ＩＰＥ４１よりＤＭＡコントローラ３３にデータ転送の要求ＲＱ１が供給される。これに対応してＤＭＡコントローラ３３は、矩形領域メモリ−メモリ転送機能を用いて参照画像データＴＭＤ、検索画像データＳＲＤおよびインストラクションセットＩＳＴの転送を順次実行する。
【００４０】
この場合、ＤＲＡＭ１３に記憶されている画像データのうちどの部分を参照画像データＴＭＤおよび検索画像データＳＲＤとしてＩＰＥ３７に転送するかはＤＭＡの制御リストとしてＤＲＡＭ１３に記憶されており、ＤＭＡコントローラ３３はその制御リストに基づいて転送制御をする。例えば、図９に示すように、ＤＲＡＭ１３に記憶されたフィールドＡの画像データの一部が参照画像データＴＭＤとしてＤＭＡＣ３３内のバッファ３３ｍを介してＩＰＥ３７のテンプレートＲＡＭ４２に転送され、ＤＲＡＭ１３に記憶されたフィールドＡに続くフィールドＢの画像データの一部が検索画像データＳＲＤとしてバッファ３３ｍを介してＩＰＥ３７のサーチＲＡＭ４３に転送される。
【００４１】
次に、ＩＰＥ３７の積和演算器４５でサーチＲＡＭ４３に転送された検索画像データＳＲＤから切り出される各ブロックに係るΣａi，Σａi2，Σａiｂi，Σｂi，Σｂi2が順次演算され、さらにＦＰＵ４６でその演算結果を用いてインストラクションＲＡＭ４４に転送されたインストラクションセットに基づいて正規化相関演算等が行われる。そして、ＦＰＵ４６の演算結果はＦＩＦＯメモリ４７に供給されて順次蓄えられる。
【００４２】
次に、ＦＩＦＯメモリ４７に蓄えられるＦＰＵ４６の演算結果の個数が所定のしきい値を越える毎に、ＩＰＥ３７のコントローラ４１よりＤＭＡコントローラ３３にデータ転送の要求ＲＱ２が供給される。これに対応してＤＭＡコントローラ３３は、図１０に示すようにＦＩＦＯメモリ４７よりバッファ３３ｍを介してＤＲＡＭ１３に演算結果を転送する。この場合、演算結果をＤＲＡＭ１３のどこに転送するかは予めＤＭＡの制御リストとしてＤＲＡＭ１３に記憶されており、ＤＭＡコントローラ３３はその制御リストに基づいて転送制御をする。検索画像データＳＲＤから切り出される全てのブロックに係るＦＰＵ４６の演算結果がＤＲＡＭ１３に転送されることで、ＩＰＥ３７による画像認識のための演算処理が終了する。
【００４３】
以上説明したように本実施の形態においては、正規化相関演算等の画像認識のための演算処理を行う際、ロボットシステム１０の全体を制御する制御手段としてのＣＰＵ１１は、ＩＰＥ３７のコントローラ４１に演算の開始を指示するだけでよくなる。したがって、ＣＰＵ１１の負担が軽減されることとなり、システム全体のスループットを上げることができる。
【００４４】
また、外部メモリとしてのＤＲＡＭ１３より内部メモリとしてのテンプレートＲＡＭ４２およびサーチＲＡＭ４３に参照画像データＴＭＤおよび検索画像データＳＲＤを転送して演算処理が行われるものであるため、処理前の画像データはＤＲＡＭ１３に残っているため、同一の画像データに対して演算を繰り返し行うことができる。
【００４５】
また、ＩＰＥ３７の積和演算器４５では、サーチＲＡＭ４３に記憶されている検索画像データＳＲＤより切り出される４ブロックの画像データｓｒｄに係る演算が並列的に行われるものであり、演算処理の高速化を図ることができる。さらに、ＦＰＵ４６では演算の手順がプログラマブルになっており、複数の演算器を多段で持たなくても済む利益がある。そして、積和演算器４５では、各回毎にＲＡＭ４２，４３より読み出すことができるデータ量に対して効率よく積算器、加算器を用いて演算を行うものであるため、回路面積がむやみに大きくなることを抑制できる。
【００４６】
なお、上述実施の形態は、この発明をロボットシステムに適用したものであるが、この発明は画像認識のための演算処理が必要なその他のシステムにも同様に適用できることは勿論である。
【００４７】
【発明の効果】
この発明によれば、第２の制御手段は、第１の制御手段で作成された制御リストに基づき、外部メモリより参照画像データおよび検索画像データを内部メモリに転送し、さらに内部メモリから参照画像データの画素データをｍ個（ｍは正の整数）ずつ読み出して第１のレジスタに２ｍ個の画素データを保持し、また内部メモリから検索画像データの画素データをｍ個ずつ読み出して第２のレジスタにｍ個の画素データを保持し、それらのレジスタに保持されている画素データを使用して演算手段に画像認識のための演算を行わせ、さらにその演算結果を外部メモリに転送するように制御するものである。
したがって、第１の制御手段の負担軽減を図ることができる。例えば、ロボットシステムに適用した場合においては、システム全体を制御する第１の制御手段（ＣＰＵ）の負担軽減を図ることができ、システム全体のスループットを上げることができる。また、画像認識のための複数の積和演算を並列的に行うことができ、処理の高速化を図ることができる。
【図面の簡単な説明】
【図１】実施の形態としてのロボットシステムの構成を示すブロック図である。
【図２】ロボットシステムを構成するＬＳＩの構成を示すブロック図である。
【図３】ＬＳＩを構成するＩＰＥの構成を示すブロック図である。
【図４】積和演算のための検索画像データからの画像データの切り出しを説明するための図である。
【図５】ＩＰＥの積和演算器の構成を示すブロック図である。
【図６】テンプレートＲＡＭ、サーチＲＡＭからの画素データの読み出し動作を説明するための図である。
【図７】１６並列の積算処理の説明のための図である。
【図８】ＩＰＥのＦＰＵの構成を示すブロック図である。
【図９】参照画像データや検索画像データ等の入力データの転送動作を説明するための図である。
【図１０】演算結果としての出力データの転送動作を説明するための図である。
【符号の説明】
１０・・・ロボットシステム、１１・・・ＣＰＵ、１２・・・ビデオカメラ、１３・・・ＤＲＡＭ、１５・・・ＬＳＩ、１７・・・ＣＰＣディバイス、１７ａ・・・アクチュエータ、１７ｂ・・・ポテンショメータ、２４・・・外部バス、２５・・・内部バス、２６・・・バスアービッタ、２７・・・シリアルポート、２８・・・パラレルポート、３２・・・ＤＳＰ、３３・・・ＤＭＡコントローラ、３４・・・ＦＢＫ、３５・・・ＵＳＢホストコントローラ、３６・・・ＵＳＢインタフェース、  ３７・・・ＩＰＥ、４１・・・ＩＰＥコントローラ、４２・・・テンプレートＲＡＭ、４３・・・サーチＲＡＭ、４４・・・インストラクションＲＡＭ、４５・・・積和演算器、４６・・・ＦＰＵ、４７・・・ＦＩＦＯメモリ
【図１】
0003826517.tif 000003
【図２】
0003826517.tif 000004
【図３】
0003826517.tif 000005
【図４】
0003826517.tif 000006
【図５】
0003826517.tif 000007
【図６】
0003826517.tif 000008
【図７】
0003826517.tif 000009
【図８】
0003826517.tif 000010
【図９】
0003826517.tif 000011
【図１０】
0003826517.tif 000012