(57)【要約】【目的】本発明は、画像の相関演算を行う画像処理装置に関し、画像の相関演算、空間フィルタを高速に処理したり、および小さな画像演算を複数同時ないしは結合して高速に実行したりする装置を構築することを目的としている。【構成】メモリから複数画素のデータを１サイクルで転送する共有画像入力バスと、共有画像入力バス上に転送された複数画素のデータのうち、指定された水平および垂直開始地点から指定された垂直および水平サイズ分のデータを選択する手段と、記選択されたデータを格納する入力バッファと、入力バッファからデータを取り込んで演算を行うシストリックアレイと、シフトリックアレイで演算された結果について、同期化する同期化メモリと、同期化された複数の演算結果同士の演算またはピーク抽出をパイプライン処理する手段とを備える。【選択図】        図１
2008084034.tif 000002
【特許請求の範囲】
【請求項１】
画像の相関演算を行う画像処理装置において、
メモリから複数画素のデータを１サイクルで転送する共有画像入力バスと、
前記共有画像入力バス上に転送された複数画素のデータのうち、指定された水平および垂直開始地点から指定された垂直および水平サイズ分のデータを選択する手段と、
前記選択されたデータを格納する入力バッファと、
前記入力バッファからデータを取り込んで演算を行うシストリックアレイと、
前記シフトリックアレイで演算された結果について、同期化する同期化メモリと、
前記同期化された複数の演算結果同士の演算またはピーク抽出をパイプライン処理する手段と
を備えたことを特徴とする画像処理装置。
【請求項２】
請求項１において、前記シフトリックアレイの演算結果を除算する除算器と、
前記共有画像入力バスからのデータ、あるいは前段の前記除算器で除算したデータのうちから予め指定されたデータを前記入力バッファに取り込んでシストリックアレイへ入力する選択手段と
を設けたことを特徴とする画像処理装置。
【請求項３】
請求項１において、各シストリックアレイに参照画像領域を分割した部分領域をロードし、探索領域との相関演算を部分領域毎に演算し、異なるタイミングで出力される個々の演算結果を前記同期化メモリで同期化後、演算結果同士を加算およびピーク検出をパイプライン処理することを特徴とする画像処理装置。
【請求項４】
請求項１あるいは請求項２において、前記シストリックアレイをカスケード接続して各々のシストリックアレイで空間フィルタ演算を行い、個々の空間フィルタの演算出力結果を前記同期メモリで同期化した後、演算結果同士を減算することを特徴とする画像処理装置。
【請求項５】
請求項１において、参照画像ロード時に、
【数０１】
2008084034.tif 000007
探索画像ロード時に
【数０２】
2008084034.tif 000008
の３つをそれぞれ３つの前記シフトリックアレイでそれぞれ計算し、下式をパイプライン演算処理して正規化相関演算を処理することを特徴とする画像処理装置。
【数０３】
2008084034.tif 000009
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像の相関演算を行う画像処理装置に関するものである。
【背景技術】
【０００２】
移動ロボットは、絶えず変化する周辺環境に対応するために、カメラから入力された画像をリアルタイムで処理して周辺環境を把握する必要がある。その画像演算量は膨大であり、多用される相関演算、空間フィルタ、特徴抽出の演算を高速に処理することが求められている。
【０００３】
従来、撮影した画像について、追跡する物体に関する固定の参照画像データをもとに相関値を求め、そのピーク位置を検出して当該物体の追跡を行う技術がある。当該技術において、探索画像データとｍ画素×ｎ画素の参照画像データとの相関演算を、参照画像の探索画像に対する位置を動かしなら複数回行って相関値を出力してその累積を求めることで、等価的にａｍ画素×ｂｎ画素の参照画像に対する参照画像データと探索画像データとの相関値を高速に出力することが行われている（特許文献１）。
【０００４】
また、上述した前者で相関演算などを高速に処理するためにＰＥ（プロセッサエレメント）を２次元アレイ状に並べたシストリックアレイでパイプライン状に並列演算を行うＬＳＩによって高速処理を行う技術について、図１４および図１５を用いて簡単に説明する。
【０００５】
図１４の（ａ）が従来技術の画像処理装置の全体構成である。ビデオ入出力回路ではビデオ入力とビデオ出力の制御、メモリ制御回路は外部メモリとの制御を扱い、ビデオ入力画像を外部メモリに取り込む。外部からコマンドを与えると動作制御回路からの要求により、外部メモリから画像データが並列演算回路に転送する。並列演算回路は図１４の（ｂ）の並列演算回路のようにＰＥを２次元アレイ状に並べた構成となっており、画像データを左下のＰＥｎ１に入力して、ＰＥｎ１→ＰＥｎ２→ＰＥｎ３へと,パイプライン状にデータを流していくことによって演算を行う回路であり、下記式で表現される画像のＳＡＤ相関演算の演算結果を出力する。
【０００６】
【数０４】
2008084034.tif 000003
【０００７】
この構成では複数のＰＥで並列演算を行っており、相関演算の処理を高速に行うことができる。
【特許文献１】特開平１０−０４０３９２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
ロボットの自律移動などリアルタイムで周辺環境の把握を行う場合には、前者でも性能が不十分であり、更に、後者の従来技術でも性能が十分であるとはいえず、更なる性能向上が要求される。
【０００９】
近年の半導体プロセスの微細化により多くの回路をＬＳＩに実装することができるようになり、性能を向上させるためにより多くのＰＥを実装して処理することが考えられる。
【００１０】
しかし、上述した従来技術のアレイ構成で要素数を単純に例えば８ｘ８から１６ｘ１６にして４倍にしても、１６ｘ１６の大きな参照領域に対する相関演算を実行させる場合、演算性能の向上は単純に４倍とはならない。
【００１１】
例えば、８ｘ８のアレイ構成で図１４の（ｃ）の参照画像８ｘ８、図１４の（ｄ）の探索範囲１６ｘ１６の相関演算を実行した場合のタイミングチャートを図１４の（ｅ）に示す。この演算では、図１４の（ｅ）に示すように、参照画像のロードに６４サイクル、探索画像のロードに５２９サイクル、演算結果の出力に１０サイクルを要しており、合計６０３サイクルの処理時間となる。参照画像のサイズを１６ｘ１６として演算する場合には、この演算を４回実施することになるので２４１２サイクルの処理時間になる。
【００１２】
それに対し、１６ｘ１６のアレイ構成で、図１５の（ａ）の参照画像１６ｘ１６、探索範囲１６ｘ１６の相関演算を実行した場合のタイミングチャートを図１５の（ｃ）に示す。この演算では、図１５の（ｃ）に示すように、参照画像のロードに２５６サイクル、探索画像のロードに９６１サイクル、演算結果の出力に１０サイクルを要しており、合計１２２７サイクルの処理時間となる。４倍の数のＰＥを使用しても性能向上は２倍程度と、それほど増加しない。
【００１３】
この理由は、シストリックアレイはデータを入力ポートから１画素ずつデータをロードして処理するため、画像データロード時間が演算処理時間を決定している。そのため、ＰＥの数を増やした分の性能向上とはなっておらずそれぞれのＰＥの動作率を向上させる必要があるという問題点があった。
【００１４】
また、画像認識では小さい画像サイズの演算が複数利用されることが多く、例えば特徴抽出では７ｘ７の２つの空間フィルタを使用して輝度勾配画像を生成し、その共分散行列を求める処理をしばしば行う。このような小さいサイズの画像演算を複数同時実行し、演算結果をカスケード結合することができる方式が求められている。
【課題を解決するための手段】
【００１５】
本発明は、これらの問題を解決するため、画像の相関演算、空間フィルタを高速に処理することが可能であり、更に、小さな画像演算を複数同時ないしは結合して高速に実行するハードウエアを構築するようにしている。
【００１６】
請求項１は、画像メモリから複数画素のデータを1サイクルで転送可能な共有画像入力バス、各シストリックアレイへの入力データのうち、指定された水平/垂直開始地点から指定された水平/垂直サイズのデータを選択する手段、各シストリックアレイの演算結果を同期化するための手段、同期化されたシストリックアレイの演算結果同士の演算またはピーク抽出をパイプライン処理する手段を設けたものである。共有画像入力バス上で複数画素分のデータ送信を行って個々のシストリックアレイが必要なデータを入力バッファに取り込むことで、データ待ち時間を短縮し、さらに個々のシストリックアレイが入力バッファにからそれぞれのタイミングでデータを読み出して処理した結果に対して同期化する手段を設けることで、異なるタイミングで出てくる演算結果同士のタイミングを合わせて演算することが可能となる。
【００１７】
請求項２は、各シストリックアレイへの画像入力データとして、共有画像入力バスからのデータとシストリックアレイの演算結果のデータから各シストリックアレイへの入力データを選択する手段と、各シストリックアレイの演算結果後に除算器を設けるものである。シストリックアレイと除算器を使った空間フィルタの演算結果を後段にシストリックアレイの入力として使用することが可能となる。
【００１８】
請求項３は、複数のシストリックアレイを用いて、大きな参照領域との相関演算を行うため、請求項４は空間フィルタをカスケード接続して演算するため、請求項５は正規化相関演算をおこなうため、請求項６は特徴抽出処理を行うためのものである。
【発明の効果】
【００１９】
従来のシストリックアレイが個々にデータをとってくる場合、個々のデータ転送バスにメモリを用意し、各々のメモリに同じデータを書き込む必要があり、必要なメモリの容量並びに消費電力が大きくなってしまう。
【００２０】
本発明では、個々のシストリックアレイが必要とする画像領域がオーバラップしていることを考慮して、共有画像入力バス上に複数画素分のデータ送信を行って個々のシストリックアレイが必要なデータを入力バッファに取り込むことで、単一のメモリを使って必要なメモリ容量を抑えながらもデータ待ち時間を短縮による処理時間の短縮を図ることを可能にしている。
【００２１】
更に、個々のシストリックアレイが入力バッファからそれぞれのタイミングでデータを読み出して処理した結果に対して同期化する手段（同期化メモリ）を設けることで、異なるタイミングで出てくる演算結果同士のタイミングを合わせて演算することを可能にし、かつパイプライン処理で評価値の演算並びにピーク抽出を行うことを可能にしている。
【００２２】
例えば６４個のＰＥで構成されたシストリックアレイ１個で１６ｘ１６サイズの相関演算を行う場合と比較して、本発明の構成で６４個のＰＥで構成されたシストリックアレイ４個で１６ｘ１６サイズの相関演算を行う場合は３．４倍の性能向上となる。
【００２３】
また、請求項２の発明では、シストリックアレイの演算結果を他のシストリックアレイの入力することでカスケード結合して処理する手段を設けており、複数の演算が必要な処理を１回のデータ入力で処理することが可能となる。
【発明を実施するための最良の形態】
【００２４】
本発明は、個々のシストリックアレイが必要とする画像領域がオーバラップしていることを考慮して、共有画像入力バス上に複数画素分のデータ送信を行って個々のシストリックアレイが必要なデータを入力バッファに取り込むことで、単一のメモリを使って必要なメモリ容量を抑えながらもデータ待ち時間を短縮による処理時間の短縮を実現したり、個々のシストリックアレイが入力バッファからそれぞれのタイミングでデータを読み出して処理した結果に対して同期化する手段（同期化メモリ）を設け、異なるタイミングで出てくる演算結果同士のタイミングを合わせて演算することを実現、更に、パイプライン処理で評価値の演算並びにピーク抽出を行うことを実現したりした。
【実施例１】
【００２５】
図１は、本発明のシステム構成図を示す。
図１において、画像メモリ制御回路１は、画像メモリ２に画像（例えばロボットに装着したカメラで撮影した画像）を格納したり、画像について複数画素を１サイクルで共有画像入力バス３に出力したり（図２参照）などするものである。
【００２６】
画像メモリ２は、カメラで撮影した画像などを一時的に保持するものである。
共有画像入力バス３は、画像メモリ２から複数画素を１サイクルで送出し、入力バッファ４１に所定画像をそれぞれ取り込ませるためのバスである（図２参照）。図２で説明する実施例では、共有画像入力バス３は例えば４画素のデータを１サイクルで転送できるように構成されている（図２参照）。
【００２７】
並列演算回路４は、共有画像入力バス３から指定された水平/垂直開始地点から指定された水平/垂直サイズのデータを選択する図示外の制御回路を設けたり、共有画像入力バス３を介して取り込んだ画像を並列演算（相関演算など）を行わせたりなどするものであって、ここでは、図示の、入力バッファ４１、シストリックアレイ４２、除算器４３などから構成されるものである。
【００２８】
入力バッファ４１は、画像メモリ２から１サイクルで送出された複数画素を共有画像入力バス３を介し、自己宛の画像を選択して取り込んで一時的に保持するものである（図２参照）。
【００２９】
シストリックアレイ４２は、ＰＥ（プロセッサエレメント）を多数配置した並列演算回路（例えば既述した図１５の（ｂ）参照）であって、高速演算する回路である。
【００３０】
除算器４３は、シストリックアレイ４２で演算した結果を、除算するものである。
セレクタ５は、共有画像入力バス３上の画像（データ）あるいは除算器４３でシストリックアレイ４２で演算した結果を除算した画像（データ）のうちの、指定されたデータを選択して入力バッファ４１に格納するものである。
【００３１】
同期化メモリ６は、シストリックアレイ４２で演算した結果（あるいは更に、除算器４３で除算した結果）について、他のシストリックアレイ４２で演算した結果と演算を行うための同期化を行うためのメモリである。
【００３２】
パイプライン演算回路７は、同期化メモリ６でそれぞれシストリックアレイ４２の演算結果（あるいは更に除算した結果）を同期化した後のデータについて、パイプラインで高速演算、ここでは、同期化されたシストリックアレイ４２の演算結果同士の加算並びにピーク抽出をパイプライン処理などするものである。
【００３３】
演算結果メモリ８は、パイプライン演算回路７で演算した結果を格納するメモリである。
【００３４】
図２は、本発明の説明図（図１）を示す。これは、各シストリックアレイ４２の動作を示す。４つの図示のシストリックアレイＡ，Ｂ、Ｃ，Ｄ（図１のシストリックアレイＡ，Ｂ，Ｃ，Ｄに対応する）４２は１６ｘ１６の参照画像を４分割した８ｘ８の部分参照画像領域を割り当てる（図２の（ａ）参照）。共有画像入力バス３に流れてくる１６ｘ１６の画像領域からそれぞれが担当する８ｘ８の部分参照画像領域をまず取り込む（図２の（ａ）のＡ，Ｂ，Ｃ，Ｄの８ｘ８のいずれかの該当するものをそれぞれを１つ入力バッファ４１に取り込む）。そして探索画像をロードする際にはそれぞれの部分領域の演算に必要な探索画像領域（図２の（ｂ）の（ｂ−１）のＡ，（ｂ−２）のＢ，（ｂ−３）のＣ，（ｂ−４）のＤのいずれか１つの領域のデータを入力バッファ４１にそれぞれ取り込み、それぞれで相関演算を各シストリックアレイ４２でそれぞれ実行する。各シストリックアレイ４２からの出力データのタイミングは異なるので、同期化メモリ６でそれぞれ同期化後、全データをパイプライン演算回路７で加算して演算結果の出力を演算結果メモリ８に行う。
【００３５】
本実施例では図２の（ｃ）のロード／演算フローに示すように、参照画像のロードに６４サイクル、探索画像のロードに２４８サイクルそれぞれの時間を要す。最もタイミングの遅いシストリックアレイＤの演算結果の出力は参照画像ロード後から５９５サイクル後となり、全演算結果の出力はその１４サイクル後となる。演算開始から全結果の演算出力までは７０９サイクルとなり、性能向上は約３．４倍となる。これは、従来の図１５、図１６の構成の場合には８×８から１６×１６に画素数を４倍に増やしても、約２倍ほどしか性能向上ができないのに比し、本実施例の図１、図２の構成によれば、８×８から１６×１６に画素数を４倍に増やした場合に４倍に近い約３．４倍という大幅な性能向上を達成できた。
【００３６】
図２の（ａ）は参照画像１６×１６をＡ，Ｂ，Ｃ，Ｄの４つの８×８画素に分割した様子を示す。ロード時間は、図示のように、
・３４（アレイＤ参照画像ロード待ち時間）＋６４（アレイＤ参照画像ロード時間）＋６６（アレイＤ探索画像ロード待ち時間）＋５２９（アレイＤ探索画像ロード時間）＋１４（シストリックアレイ４２の演算処理遅延）＝７０９サイクル
となる（各数字は、図２の（ｃ）のロード／演算フローの対応する項目とその数字参照）。
【００３７】
ここで、５２９は、図２の（ｂ）のＡ、Ｂ、Ｃ、Ｄの領域のサイズ２３×２３の乗算結果である。
【００３８】
図２の（ｂ）は、シストリックアレイ４２の例を示す。図２の（ｂ−１）はシストリックアレイＡの探索画像の例、図２の（ｂ−２）はシストリックアレイＢの探索画像の例、図２の（ｂ−３）はシストリックアレイＣの探索画像の例、図２の（ｂ−４）はシストリックアレイＤの探索画像の例をそれぞれ示す。ここでは、Ａ，Ｂ，Ｃ，Ｄの各探索領域は、２３×２３画素である。
【００３９】
図２の（ｃ）は、図２の（ａ）の参照画像Ａ，Ｂ，Ｃ，Ｄ，および図２の（ｂ）の探索画像Ａ，Ｂ，Ｃ，Ｄをそれぞれ画像メモリ２から共有画像入力バス３を介して各入力バッファ４１にロードするときのフロー（波形）を示す。ここで、シストリックアレイＣの波形図（フロー）は図２の（ｃ）では省略した（他のＢ，Ｄと同じである）。
【００４０】
図３は、本発明のシステム構成図（その２）を示す。図３は、空間フィルタを多重に処理あるいは画像同士の差分画像を生成する場合のシステム構成例を示す。詳述すれば、各シストリックアレイ４２への画像入力データとして、共有画像入力バス３からのデータと、シストリックアレイ４２の演算結果のデータとから各シストリックアレイ４２への入力データを選択するセレクタ５と、各シストリックアレイ４２の演算結果の後に除算器４３がついている。シストリックアレイ４２から出力された演算結果は除算器４３にて除算を行って空間フィルタの出力を演算し、その出力を同期化メモリ６およびに次段のシストリックアレイ４２に送信する。次段のシストリックアレイ４２は同様に空間フィルタの演算を行い、更に次段のシストリックアレイ４２へと演算結果を送信する。このようにカスケード接続することによって空間フィルタを多重に処理することが可能である。
【００４１】
また、各シストリックアレイ４２から出力される演算結果を同期化メモリ６で同期化して差分をとることにより、空間フィルタをかけた結果の画像同士の差分画像の生成を行うことができる。
【００４２】
図３の（ａ）はシステム構成を示し、図３の（ｂ）は既述した図２の（ｃ）に対応するロード／演算フローを表す。シストリックアレイ４２を図３の（ａ）に示すようにカスケード接続した場合には、図３の（ｂ）に示す、参照画像のロード、探索画像のロード、シストリックアレイＡ，Ｂ（Ｃ，Ｄは省略）へのロードが図示のようなサイクルとなる。
【００４３】
図４は、本発明のシステム構成図（その３）を示す。これは、参照画像のロード時に
【００４４】
【数５】
2008084034.tif 000004
【００４５】
をまず計算する。そして、参照画像ロード時に３つのシストリックアレイ４２では
【００４６】
【数６】
2008084034.tif 000005
【００４７】
をそれぞれ計算して、パイプライン演算回路７で
【００４８】
【数７】
2008084034.tif 000006
【００４９】
を計算することによって画像の正規化相関演算を実行する。
これらの様子を図４の（ａ）のシステム構成上の並列演算回路４にそれぞれ記載する。また、図４の（ｂ）に、その演算結果を記載する（数式９）と同じ。
【００５０】
図５は、本発明の参照画像の設定フローチャートを示す。これは、例えば図１で画像メモリ２から参照画像を各入力バッファ４１に設定（ロード）するときの詳細フローチャートである。
【００５１】
図５において、Ｓ１は、画像メモリ制御回路１に転送開始座標（水平／垂直）とサイズ（水平／垂直）を指定する。これは、例えば図１（あるいは図２から図４も同様、以下同じ）の画像メモリ制御回路１に、図示外のホストから参照画像（図２の（ａ）参照）の転送開始座標として、水平および垂直の座標と、そのサイズとして水平および垂直の座標を指定する。この際、図１の共有画像入力バス３は、ここでは、１サイクルで４画素のデータを転送できるものとする。
【００５２】
Ｓ２は、並列演算回路Ａ−Ｄそれぞれに取り込み開始座標（水平／垂直）とサイズ（水平／垂直）を指定する。これは、図１の並列演算回路Ａ．Ｂ，Ｃ，Ｄの入力バッファ４１に、共有画像入力バス３から取り込む参照画像の開始座標として、水平および垂直と、そのサイズとして水平および垂直を指定する。
【００５３】
Ｓ３は、画像メモリ２から参照画像データを共有画像入力バス３にここでは、１サイクルに４画素づつ送り出す。
【００５４】
Ｓ４は、取り込み開始座標からサイズ分の範囲にあるデータだけを入力バッファ４２に取り込む。これは、Ｓ３で共有画像入力バス３に送出された参照画像データから、各並列演算回路Ａ，Ｂ，Ｃ，ＤがＳ２で指定された参照画像データのみをそれぞれ取り込んで入力バッファ４１に格納する。これにより、Ａ，Ｂ，Ｃ，Ｄの各入力バッファ４１には、例えば図１の（ａ）のＡ，Ｂ，Ｃ，Ｄの部分の参照画像のみが取り込まれて格納されることとなる。
【００５５】
以上によって、画像メモリ２から参照画像データを１サイクルで４画素を順次共有画像入力バス３に送信し、各並列演算回路Ａ，Ｂ，Ｃ，Ｄでは自己に指定された参照画像のみを取り込んで入力バッファ４１に格納し、図１の（ａ）のＡ，Ｂ，Ｃ，Ｄの参照画像（８ｘ８）がそれぞれ入力バッファ４１に設定されることとなる。
【００５６】
図６は、本発明の探索画像の設定フローチャートを示す。これは、例えば図１で画像メモリ２から探索画像を各入力バッファ４１に設定（ロード）するときの詳細フローチャートである。
【００５７】
図６において、Ｓ１１は、画像メモリ制御回路１に転送開始座標（水平／垂直）とサイズ（水平／垂直）を指定する。これは、例えば図１（あるいは図２から図４も同様、以下同じ）の画像メモリ制御回路１に、図示外のホストから探索画像（図２の（ｂ）参照）の転送開始座標として、水平および垂直の座標と、そのサイズとして水平および垂直の座標を指定する。この際、図１の共有画像入力バス３は、ここでは、１サイクルで４画素のデータを転送できるものとする。
【００５８】
Ｓ１２は、並列演算回路Ａ−Ｄそれぞれに取り込み開始座標（水平／垂直）とサイズ（水平／垂直）を指定する。これは、図１の並列演算回路Ａ．Ｂ，Ｃ，Ｄの入力バッファ４１に、共有画像入力バス３から取り込む探索画像の開始座標として、水平および垂直と、そのサイズとして水平および垂直を指定する。
【００５９】
Ｓ１３は、画像メモリ２から探索画像データを共有画像入力バス３にここでは、１サイクルに４画素づつ送り出す。
【００６０】
Ｓ１４は、取り込み開始座標からサイズ分の範囲にあるデータだけを入力バッファ４２に取り込む。これは、Ｓ１３で共有画像入力バス３に送出された探索画像データから、各並列演算回路Ａ，Ｂ，Ｃ，ＤがＳ１２で指定された探索画像データのみをそれぞれ取り込んで入力バッファ４１に格納する。これにより、Ａ，Ｂ，Ｃ，Ｄの各入力バッファ４１には、例えば図１の（ｂ）のＡ，Ｂ，Ｃ，Ｄの部分の探索画像のみが取り込まれて格納されることとなる。
【００６１】
以上によって、画像メモリ２から探索画像データを１サイクルで４画素を順次共有画像入力バス３に送信し、各並列演算回路Ａ，Ｂ，Ｃ，Ｄでは自己に指定された探索画像のみを取り込んで入力バッファ４１に格納し、図１の（ｂ）のＡ，Ｂ，Ｃ，Ｄの探索画像（２３ｘ２３）がそれぞれ入力バッファ４１に設定されることとなる。
【００６２】
図７は、本発明の探索画像の転送説明図（３１×３１画素の場合）を示す。これは、既述した図７のフローチャートで探索画像を共有画像入力バス３に転送する場合の様子を示す。
【００６３】
図７において、垂直座標＝Ｖ、Ｖ＋１、・・・は、画像メモリから探索画像を転送する垂直座標であって、ここでは、３１画素分である。横方向は、探索画像の水平方向の画素数であって、ここでは、３１画素分である。
【００６４】
以上のように表現される探索画像（図２の（ｂ−１）、（ｂ−２），（ｂ−３）、（ｂ−４）中のＡ，Ｂ，Ｃ，Ｄの探索画像（２３×２３画素））について、図７の垂直座標＝ｖで水平方向へサイクル１，２，３，４，５，６，７，８、更に、垂直座標＝ｖ＋１のサイクル９，１０・・・・と、１サイクルに４画素づつ画像メモリ２から共有画像入力バス３に順次送出することが可能となる。そして、共有画像入力バス３に送出された図７に示す探索画像は、図１の並列演算回路Ａ，Ｂ，Ｃ，Ｄで自己宛の画像のみを選択的に取り込んで入力バッファ４１にそれぞれ格納することにより、既述した図２の（ｃ）に示す、シストリックアレイＡの探索画像ロード、Ｂ探索画像ロード、Ｃ探索画像ロード、Ｄ探索画像ロードというようにそれぞれ入力バッファ４１に格納されることとなる。尚、ここでは、画像メモリからは３１×３１の領域を送信し、並列演算回路はそれぞれ２３×２３の領域を取り込むようにしている。
【００６５】
図８は、本発明の説明図を示す。これは、図１のシステム構成を用い、相関関数（画像サイズ１６ｘ１６，探索範囲１６ｘ１６を実施する場合の相関関数）を計算する様子を模式的に表す。図中で、
・Ｓは探索画像
・Ｒは参照画像
・並列演算回路Ａ，Ｂ，Ｃ，Ｄは図１の並列演算回路Ａ，Ｂ，Ｃ，Ｄ
をそれぞれ表す。
【００６６】
ここで、既述した探索画像、参照画像をそれぞれ画像メモリ２から各並列演算回路Ａ，Ｂ，Ｃ，Ｄの入力バッファ４１にそれぞれ格納した後（図１、図２、図５から図７参照）、シストリックアレイＡ，Ｂ，Ｃ，Ｄで、図８の（ａ）の式で表す相関演算をそれぞれ実行し、図８の（ｂ）の結果を算出する。
【００６７】
図９は、本発明の説明図を示す。これは、図１のシステム構成を用い、フィルタ演算（フィルタサイズ１６ｘ１６，処理範囲１６ｘ１６を実施する場合のフィルタ演算）を実行する様子を模式的に表す。図中で、
・Ｋはフィルタ
・Ｉは処理対象となる画像
・並列演算回路Ａ，Ｂ，Ｃ，Ｄは図１の並列演算回路Ａ，Ｂ，Ｃ，Ｄ
をそれぞれ表す。
【００６８】
ここで、既述したフィルタ（１６×１６画素）、処理範囲（１６×１６画素）をそれぞれ画像メモリ２から各並列演算回路Ａ，Ｂ，Ｃ，Ｄの入力バッファ４１にそれぞれ格納した後（図１、図２、図５から図７参照）、シストリックアレイＡ，Ｂ，Ｃ，Ｄで、図９の（ａ）の式で表すフィルタ演算をそれぞれ実行し、図９の（ｂ）の結果を算出する。
【００６９】
図１０は、本発明のフィルタ係数／除算の設定フローチャートを示す。これは、既述した図９のフィルタ演算を行う際に、フィルタ係数を入力バッファ２１に設定および除数Ｃ１、Ｃ２、Ｃ３、Ｃ４を除算器４３に設定するときのフローチャートを示す。
【００７０】
図１０において、Ｓ２１は、画像メモリ制御回路１に転送開始座標（水平／垂直）とサイズ（水平／垂直）を指定する。これは、例えば図１の画像メモリ制御回路１に、図示外のホストからフィルタ係数の転送開始座標として、水平および垂直の座標と、そのサイズとして水平および垂直の座標を指定する。この際、図１の共有画像入力バス３は、１サイクルで４画素のデータを転送できるものとする。
【００７１】
Ｓ２２は、並列演算回路Ａ−Ｄそれぞれに取り込み開始座標（水平／垂直）とサイズ（水平／垂直）を指定する。これは、図１の並列演算回路Ａ．Ｂ，Ｃ，Ｄの入力バッファ４１に、共有画像入力バス３から取り込むフィルタ係数の開始座標として、水平および垂直と、そのサイズとして水平および垂直を指定する。
【００７２】
Ｓ２３は、画像メモリ２からフィルタ係数Ｋ１、Ｋ２、Ｋ３、Ｋ４を共有画像入力バス３にここでは、１サイクルに４画素づつ送り出す。
【００７３】
Ｓ２４は、取り込み開始座標からサイズ分の範囲にあるデータだけを入力バッファ４２に取り込む。これは、Ｓ２３で共有画像入力バス３に送出されたフィルタ係数Ｋから、各並列演算回路Ａ，Ｂ，Ｃ，ＤがＳ２２で指定されたフィルタ係数のみをそれぞれ取り込んで入力バッファ４１に格納する。これにより、Ａ，Ｂ，Ｃ，Ｄの各入力バッファ４１にはそれぞれのフィルタ係数のみが取り込まれて格納されることとなる。
【００７４】
Ｓ２５は、並列演算回路４に除数Ｃを設定する。これは、図示外のホストが各並列演算回路４の除算回路４３にそれぞれ該当除数Ｃ１、Ｃ２、Ｃ３、Ｃ４を設定する。
【００７５】
以上によって、画像メモリ２からフィルタ係数を１サイクルで４画素を順次共有画像入力バス３に送信し、各並列演算回路Ａ，Ｂ，Ｃ，Ｄでは自己に指定されたフィルタ係数のみを取り込んで入力バッファ４１に格納、および除数Ｃ１、Ｃ２、Ｃ３、Ｃ４を除算器４３にそれぞれ格納し、フィルタ演算処理の準備が完了したこととなる。
【００７６】
図１１は、本発明の説明図を示す。これは、図３のシステム構成のもとで、フィルタ演算カスケードの様子を模式的に示す。
【００７７】
（１）入力画像ＩＯ（アイゼロ）について、フィルタＡのフィルタ演算処理を図１の並列演算回路Ａで行い、その結果（除算器４３の出力）である画像Ｉ１を生成する（演算は、下段の式で表される演算を行う）。
【００７８】
（２）  （１）で生成した画像Ｉ１を更に、フィルタＢのフィルタ演算処理を図１の並列演算回路Ｂで行い、その結果（除算器４３の出力）である画像１２を生成する（演算は、下段の式で表される演算を行う）。
【００７９】
（３）  画像Ｉ１と画像Ｉ２との減算を行い、画像Ｉ３を生成する。
以上によって、フィルタ演算をカスケード（フィルタＡ，更に、フィルタＢというようにフィルタ演算をカスケード）することが、図３のシステム構成（図３では４重のフィルタ演算が可）により可能となる。
【００８０】
図１２は、本発明の正規化相関参照画像の設定フローチャートを示す。
図１２において、Ｓ３１は、画像メモリ制御回路１に転送開始座標（水平／垂直）とサイズ（水平／垂直）を指定する。これは、例えば図１の画像メモリ制御回路１に、図示外のホストから参照画像（図２の（ｂ）参照）の転送開始座標として、水平および垂直の座標と、そのサイズとして水平および垂直の座標を指定する。この際、図１の共有画像入力バス３は、１サイクルで４画素のデータを転送できるものとする。
【００８１】
Ｓ３２は、並列演算回路Ｃに取り込み開始座標（水平／垂直）とサイズ（水平／垂直）を指定する。これは、図１の並列演算回路Ｃの入力バッファ４１に、共有画像入力バス３から取り込む参照画像の開始座標として、水平および垂直と、そのサイズとして水平および垂直を指定する。
【００８２】
Ｓ３３は、画像メモリ２から参照画像データを共有画像入力バス３にここでは、１サイクルに４画素づつ送り出す。
【００８３】
Ｓ３４は、取り込み開始座標からサイズ分の範囲にあるデータだけを入力バッファ４２に取り込む。これは、Ｓ３３で共有画像入力バス３に送出された参照画像データから、並列演算回路ＣがＳ３２で指定された参照画像データのみをそれぞれ取り込んで入力バッファ４１に格納する。
【００８４】
Ｓ３５は、図示の演算を行い、正規化相関参照画像を生成する。
以上によって、画像メモリ２から参照画像データを１サイクルで４画素を順次共有画像入力バス３に送信し、並列演算回路Ｃでは自己に指定された参照画像のみを取り込んで入力バッファ４１に格納し、Ｓ３５の演算を実行することが可能となる。
【００８５】
図１３は、本発明の正規化相関演算の探索画像の設定フローチャートを示す。
図１３において、Ｓ４１は、画像メモリ制御回路１に転送開始座標（水平／垂直）とサイズ（水平／垂直）を指定する。これは、例えば図４の画像メモリ制御回路１に、図示外のホストから探索画像（図２の（ｂ）参照）の転送開始座標として、水平および垂直の座標と、そのサイズとして水平および垂直の座標を指定する。この際、図４の共有画像入力バス３は、１サイクルで４画素のデータを転送できるものとする。
【００８６】
Ｓ４２は、並列演算回路Ａ−Ｃそれぞれに取り込み開始座標（水平／垂直）とサイズ（水平／垂直）を指定する。これは、図４の並列演算回路Ａ．Ｂ，Ｃの入力バッファ４１に、共有画像入力バス３から取り込む探索画像の開始座標として、水平および垂直と、そのサイズとして水平および垂直を指定する。
【００８７】
尚、正規化相関演算では並列演算回路Ａ，Ｂ，Ｃの入力バッファに指定される開始座標、サイズは同一の値が指定される。
【００８８】
Ｓ４３は、画像メモリ２から探索画像データを共有画像入力バス３にここでは、１サイクルに４画素づつ送り出す。
【００８９】
Ｓ４４は、取り込み開始座標からサイズ分の範囲にあるデータだけを入力バッファ４２に取り込む。これは、Ｓ４３で共有画像入力バス３に送出された探索画像データから、各並列演算回路Ａ，Ｂ，ＣがＳ４２で指定された探索画像データのみをそれぞれ取り込んで入力バッファ４１に格納する。
【００９０】
Ｓ４５は、図示の演算を並列演算回路４でそれぞれ行う。
Ｓ４６は、図示の式の演算を行い、絶対値の最大値をとる座標を求める。
【００９１】
以上によって、画像メモリ２から探索画像データを１サイクルで４画素を順次共有画像入力バス３に送信し、各並列演算回路Ａ，Ｂ，Ｃでは自己に指定された探索画像のみを取り込んで入力バッファ４１に格納し、Ｓ４５の演算を実行した後、Ｓ４６の演算を行ってその結果の絶対値の最大値をとる座標を求めることが可能となる。
【産業上の利用可能性】
【００９２】
本発明は、個々のシストリックアレイが必要とする画像領域がオーバラップしていることを考慮して、共有画像入力バス上に複数画素分のデータ送信を行って個々のシストリックアレイが必要なデータを入力バッファに取り込むことで、単一のメモリを使って必要なメモリ容量を抑えながらもデータ待ち時間を短縮による処理時間の短縮を図ったり、個々のシストリックアレイが入力バッファからそれぞれのタイミングでデータを読み出して処理した結果に対して同期化する手段（同期化メモリ）を設け、異なるタイミングで出てくる演算結果同士のタイミングを合わせて演算したり、更に、パイプライン処理で評価値の演算並びにピーク抽出を行ったりする画像処理装置に関するものである。
【図面の簡単な説明】
【００９３】
【図１】本発明のシステム構成図である。
【図２】本発明の説明図（図１）である。
【図３】本発明のシステム構成図（その２）である。
【図４】本発明のシステム構成図（その３）である。
【図５】本発明の参照画像の設定フローチャートである。
【図６】本発明の探索画像の設定フローチャートである。
【図７】本発明の探索画像の転送説明図（３１×３１の場合）である。
【図８】本発明の説明図である。
【図９】本発明の説明図である。
【図１０】本発明のフィルタ係数／除数の設定フローチャートである。
【図１１】本発明の説明図である。
【図１２】本発明の正規化相関探索画像の設定フローチャートである。
【図１３】本発明の正規化相関演算の探索画像の設定フローチャートである。
【図１４】従来技術の説明図（その１）である。
【図１５】従来技術の説明図（その２）である。
【符号の説明】
【００９４】
１：画像メモリ制御回路
２：画像メモリ
３：共有画像入力バス
４：並列演算回路
４１：入力バッファ
４２：シストリックアレイ
４３：除算器
５：セレクタ
６：同期化メモリ
７：パイプライン演算回路
８：演算結果メモリ
【図１】
2008084034.tif 000010
【図２】
2008084034.tif 000011
【図３】
2008084034.tif 000012
【図４】
2008084034.tif 000013
【図５】
2008084034.tif 000014
【図６】
2008084034.tif 000015
【図７】
2008084034.tif 000016
【図８】
2008084034.tif 000017
【図９】
2008084034.tif 000018
【図１０】
2008084034.tif 000019
【図１１】
2008084034.tif 000020
【図１２】
2008084034.tif 000021
【図１３】
2008084034.tif 000022
【図１４】
2008084034.tif 000023
【図１５】
2008084034.tif 000024