(57)【要約】【課題】ステレオマッチングを行うための演算の回数および演算器の個数を削減するとともに、処理の高速化を実現する。【解決手段】画像処理装置（１）は、対象領域（Ｔ）における注目画素（ｎ）と探索領域（Ｓ）における比較画素（ｃ）との相関値を算出する相関値算出処理を、注目する行の画素の各々を順次に注目画素（ｎ）として設定する毎に実行することを処理単位として、探索領域（Ｓ）を水平方向へ移動させる毎に上記処理単位を繰り返し実行する。相関値算出処理では、注目画素（ｎ）を中心とする基準領域（Ｂ）と比較画素（ｃ）を中心とする比較領域（Ｃ）とにおいて、画素間の差分の絶対値を画素列毎に積算した値を全ての画素列について積算することにより相関値を算出する。画像処理装置（１）は、同一の注目画素（ｎ）に対して算出される相関値のうちの最小値が算出されたときの探索領域（Ｓ）の移動量をシフトレジスタ部（４０）に保持する。【選択図】図１
2018026032.tif 000002
【特許請求の範囲】
【請求項１】
基準画像に設けられた対象領域に設定された注目画素と、比較画像に設けられた上記対象領域と同形同大の探索領域における相対位置が上記対象領域における上記注目画素の相対位置と同じである比較画素との相関値を算出する相関値算出処理を、上記注目画素が設定された行の水平方向に並ぶ画素の各々を順次に上記注目画素として設定する毎に実行することを処理単位として、上記探索領域を初期位置から水平方向へ所定量ずつ移動させる毎に上記処理単位を繰り返し実行する演算部を備え、
上記演算部は、同一の上記注目画素に対して算出される上記相関値のうちの最小値が算出されたときの、上記探索領域の上記初期位置からの移動量を、上記注目画素毎に保持する移動量保持部を備え、
上記相関値算出処理は、
上記基準画像における、上記注目画素を中心とする基準領域において垂直方向に並ぶ画素から成る画素列の各々について、上記画素列を構成する第１画素の画素値と、上記比較画像における、上記基準領域と同形同大の、上記比較画素を中心とする比較領域を構成する、上記比較領域における相対位置が上記基準領域における上記第１画素の相対位置と同じである第２画素の画素値との差分の絶対値を、上記画素列を構成する全ての画素について算出し、該算出した差分の絶対値を上記画素列毎に積算した列積算値を算出し、
上記画素列毎の上記列積算値を全て積算することにより上記相関値を算出する処理であることを特徴とする画像処理装置。
【請求項２】
上記相関値算出処理では、
同一の上記画素列についての上記列積算値の算出を、１回の上記処理単位において１回のみ行うとともに、上記画素列毎に算出された上記列積算値を算出された順に、直列に接続された複数のフリップフロップの最前段に入力し、
上記基準領域における全ての上記画素列の、上記複数のフリップフロップの各々に保持された上記列積算値を積算して上記相関値を算出することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
上記基準領域は、水平方向の画素数がＸ（Ｘは正の整数）、かつ、垂直方向の画素数がＹ（Ｙは正の整数）の四角形状であり、
上記演算部は、
上記画素列の単位でＹ個の上記差分を算出するためのＹ個の減算器を含む減算部と、
上記画素列毎にＹ個の上記差分の絶対値から上記列積算値を算出するためのＹ個未満の加算器を含む第１加算部と、
Ｘ個の上記列積算値を積算するためのＸ個未満の加算器を含む第２加算部とを含むことを特徴とする請求項１または２に記載の画像処理装置。
【請求項４】
上記演算部は、さらに、
上記探索領域の水平方向の移動量が上限に達する毎に、上記注目画素が設定される行を垂直方向にずらすとともに、上記探索領域の水平位置を上記初期位置に戻した上で、
上記探索領域を上記初期位置から水平方向へ所定量ずつ移動させる毎に上記処理単位を繰り返し実行することを特徴とする請求項１から３のいずれか１項に記載の画像処理装置。
【請求項５】
基準画像に設けられた対象領域に設定された注目画素と、比較画像に設けられた上記対象領域と同形同大の探索領域における相対位置が上記対象領域における上記注目画素の相対位置と同じである比較画素との相関値を算出する相関値算出処理を、上記注目画素が設定された行の水平方向に並ぶ画素の各々を順次に上記注目画素として設定する毎に実行することを処理単位として、上記探索領域を初期位置から水平方向へ所定量ずつ移動させる毎に上記処理単位を繰り返し実行する演算ステップを含み、
上記演算ステップは、同一の上記注目画素に対して算出される上記相関値のうちの最小値が算出されたときの、上記探索領域の上記初期位置からの移動量を、上記注目画素毎に保持する保持ステップをさらに含み、
上記相関値算出処理は、
上記基準画像における、上記注目画素を中心とする基準領域において垂直方向に並ぶ画素から成る画素列の各々について、上記画素列を構成する第１画素の画素値と、上記比較画像における、上記基準領域と同形同大の、上記比較画素を中心とする比較領域を構成する、上記比較領域における相対位置が上記基準領域における上記第１画素の相対位置と同じである第２画素の画素値との差分の絶対値を、上記画素列を構成する全ての画素について算出し、該算出した差分の絶対値を上記画素列毎に積算した列積算値を算出し、
上記画素列毎の上記列積算値を全て積算することにより上記相関値を算出する処理であることを特徴とする画像処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ステレオマッチングを行う画像処理装置等に関する。
【背景技術】
【０００２】
２つ以上の異なる方向から同一の被写体をカメラにて撮影して得られた画像における、対応する画素間の視差情報を求める手法（いわゆるステレオマッチング）に関し、従来から様々な技術開発がなされている。中でも、特許文献１には、演算に必要な演算器の個数を、演算時間の増大を抑制しつつ減少させるウィンドウマッチング手法について開示されている。
【先行技術文献】
【特許文献】
【０００３】
特許第４３９６１８９号公報（２０１０年１月１３日発行）
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１に開示されている技術は、演算に必要な演算器の個数を減少させるものの、処理時間が僅かではあるが増加するという問題がある。
【０００５】
そこで、本願の発明者らは、演算回数および演算器の個数を大幅に削減しつつ、演算処理を大幅に高速化するステレオマッチング手法について鋭意検討した結果、本発明を完成するに至った。
【０００６】
本発明の目的は、ステレオマッチングを行うための演算の回数および演算器の個数を削減するとともに、ステレオマッチング処理の高速化を実現する画像処理装置等を提供することにある。
【課題を解決するための手段】
【０００７】
上記の課題を解決するために、本発明の一態様に係る画像処理装置は、基準画像に設けられた対象領域に設定された注目画素と、比較画像に設けられた上記対象領域と同形同大の探索領域における相対位置が上記対象領域における上記注目画素の相対位置と同じである比較画素との相関値を算出する相関値算出処理を、上記注目画素が設定された行の水平方向に並ぶ画素の各々を順次に上記注目画素として設定する毎に実行することを処理単位として、上記探索領域を初期位置から水平方向へ所定量ずつ移動させる毎に上記処理単位を繰り返し実行する演算部を備え、上記演算部は、同一の上記注目画素に対して算出される上記相関値のうちの最小値が算出されたときの、上記探索領域の上記初期位置からの移動量を、上記注目画素毎に保持する移動量保持部を備え、上記相関値算出処理は、上記基準画像における、上記注目画素を中心とする基準領域において垂直方向に並ぶ画素から成る画素列の各々について、上記画素列を構成する第１画素の画素値と、上記比較画像における、上記基準領域と同形同大の、上記比較画素を中心とする比較領域を構成する、上記比較領域における相対位置が上記基準領域における上記第１画素の相対位置と同じである第２画素の画素値との差分の絶対値を、上記画素列を構成する全ての画素について算出し、該算出した差分の絶対値を上記画素列毎に積算した列積算値を算出し、上記画素列毎の上記列積算値を全て積算することにより上記相関値を算出する処理であることを特徴としている。
【０００８】
上記構成によれば、上記画素列毎の列積算値を積算することにより上記相関値を算出するという手順で行う相関値算出処理を、注目画素が設定された行の水平方向に並ぶ画素の各々を順次に注目画素として設定する毎に実行することを処理単位として、探索領域を初期位置から水平方向へ所定量ずつ移動させる毎に上記処理単位を繰り返し実行する。ここで、注目画素を中心とする基準領域と比較画素を中心とする比較領域とは、いずれも、注目画素を新たに設定する毎に同一方向に移動する。
【０００９】
そうすると、移動後の基準領域を構成する画素列のうち、移動方向の最前列を除く画素列は、移動前の基準領域にも存在する。このことは比較領域についても同様である。よって、探索領域の位置が変わらない期間において、移動前の基準領域および比較領域に対する相関値算出処理において算出した列積算値のうち、移動方向側に位置する画素列の列積算値は、移動後の基準領域および比較領域に対する相関値算出処理において改めて算出しなおす必要はなく、算出済みの列積算値として再利用することができる。
【００１０】
したがって、再利用しない場合と比べて、演算回数および演算器を大幅に削減することができ、処理全体を大幅に高速化することができる。
【００１１】
なお、本発明の一態様に係る画像処理装置は、コンピュータによって実現してもよく、この場合には、コンピュータを上記画像処理装置が備える各手段として動作させることにより上記画像処理装置をコンピュータにて実現させる画像処理装置の制御プログラム、およびそれを記録したコンピュータ読み取り可能な記録媒体も、本発明の範疇に入る。また、本発明の一態様に係る画像処理装置は集積回路として実現してもよく、この場合には、上記集積回路を備えるチップなども本発明の範疇に入る。
【発明の効果】
【００１２】
本発明の一態様によれば、ステレオマッチングを行うための演算の回数および演算器の個数を削減するとともに、ステレオマッチング処理の高速化を実現できる。
【図面の簡単な説明】
【００１３】
【図１】本発明の一実施形態に係る画像処理装置の構成例を示すブロック図である。
【図２】図１に示した画像処理装置を含む車両用ステレオカメラシステムの構成例を示す模式図である。
【図３】図１に示した画像処理装置における、注目画素および探索領域の移動手順の一例を示す模式図である。
【図４】図１に示した画像処理装置における、基準領域および比較領域を構成する画素列の一例を示す模式図である。
【図５】図１に示した画像処理装置のシフトレジスタ部のフリップフロップに列積算値が格納される様子の一例を示す模式図である。
【図６】図１に示した画像処理装置が実行するステレオマッチング処理の流れの一例を示すフローチャートである。
【図７】図６に示した処理のうちの相関値算出処理の流れの一例を示すフローチャートである。
【発明を実施するための形態】
【００１４】
本発明の一実施形態について、図１〜図７に基づいて説明すると以下のとおりである。
【００１５】
本実施形態において、画像を構成する画素の位置（座標）は、画像の左上端の画素を原点とする二次元座標（つまりＸ座標およびＹ座標）で表すものとして説明する。原点から水平右方向をＸ軸方向、原点から垂直下方向をＹ軸方向とする。
【００１６】
本実施形態に係る画像処理装置１は、左右に離間して配置された２台のカメラにて同一の被写体を異なる方向から撮影して得られる２枚の画像における、対応する画素間の視差情報を画素毎に算出する装置である。画像処理装置１は、典型例として、図２に示す車両用ステレオカメラシステムに用いられ、ＦＰＧＡ（field programmable gate array）またはＡＳＩＣ（application specific integrated circuit）（不図示）として構成される。同図に示す例では、車両５のフロントガラスの上部に車両前方へ向けて取り付けられた２台のステレオカメラ２、３にて路上の人物４、車両、物体などを撮影して得られる画像が、画像処理装置１に入力される。
【００１７】
以降の説明において、２台のカメラのうち左側に配置されたカメラにて被写体を撮影して得られる画像を「左画像Ｌ」（基準画像）と表記し、右側に配置されたカメラにて被写体を撮影して得られる画像を「右画像Ｒ」（比較画像）と表記する。説明の便宜上、左画像Ｌおよび右画像Ｒは同形同大であるものとする。なお、左画像Ｌまたは右画像Ｒのエピポーララインの方向が水平方向と異なる場合は、周知技術であるレクティフィケーション（画像平行化）等によりエピポーララインの方向を水平方向に揃えるものとする。
【００１８】
画像処理装置１は、左画像Ｌにおいて、処理対象となる領域（以下では「対象領域Ｔ」と表記する）を設定するとともに、右画像Ｒにおいて、対象領域Ｔと同形同大の探索対象となる領域（以下では「探索領域Ｓ」と表記する）を設定する。その上で、画像処理装置１は、対象領域Ｔにおいて処理対象として注目する画素（以下では「注目画素ｎ」と表記する）と、探索領域Ｓにおいて注目画素ｎと比較する対象の画素（以下では「比較画素ｃ」と表記する）との相関値を算出する。この算出処理を「相関値算出処理」と表記する。画像処理装置１は、この相関値算出処理を、注目画素ｎを対象領域Ｔ内で移動させながら、また、探索領域Ｓを予め定められた範囲（以下では「探索範囲Ｍ」と表記する）内で移動させながら、繰り返し実行することにより、画素毎の視差情報を算出する。
【００１９】
なお、対象領域Ｔを設ける画像は、左画像Ｌおよび右画像Ｒのいずれであってもよい。右画像Ｒに対象領域Ｔを設ける場合は、左画像Ｌに探索領域Ｓを設ける。
【００２０】
また、比較画素ｃの典型例は、探索領域Ｓにおける相対位置が対象領域Ｔにおける注目画素ｎの相対位置と同じ画素であるが、これに限定されるものではない。
【００２１】
また、探索領域Ｓの、初期位置から水平方向への移動量を、以下では「探索値ｄ」とも表記する。
【００２２】
画像処理装置１は、相関値算出処理において、相関の精度を高めるために面積相関を演算する。面積相関では、左画像Ｌにおける、注目画素ｎを含む所定サイズの領域（ウィンドウとも称されるが、以下では「基準領域Ｂ」と表記する）と、右画像Ｒにおける、比較画素ｃを含む基準領域Ｂと同形同大の領域（ウィンドウとも称されるが、以下では「比較領域Ｃ」と表記する）との相関を求める。より具体的には、基準領域Ｂを構成する画素毎に、当該画素に対応する比較領域Ｃを構成する画素との相関値を求め、画素毎に求めた相関値を積算する。面積相関の具体的な演算方法は限定されるものではなく、一般的な正規相関で用いられるＳＡＤ（Sum of Absolute Difference）を用いて演算してもよいし、ＳＳＤ（Sum of Squared Difference）を用いて演算してもよい。本実施形態では、下記式１にて規定されるＳＡＤを用いて面積相関を演算するものとする。式１において、Ｌｅｆｔ（ｘ，ｙ）は、Ｘ座標がｘでありＹ座標がｙである注目画素ｎを表し、Ｒｉｇｈｔ（ｘ，ｙ）は、Ｘ座標がｘでありＹ座標がｙである比較画素ｃを表し、ｄは、探索領域Ｓの初期位置からの移動量（以下では「探索値」とも表記する）を表すものとする。式１では、注目画素ｎと比較画素ｃとの画素値の差分の絶対値（以下では「差分絶対値」と表記する）を、処理対象となる全ての画素について積算する演算式である。
【００２３】
【数１】
2018026032.tif 000003
【００２４】
以降の説明において、対象領域Ｔは四角形状であるものとし、その水平方向の画素数を「Ｔｘ」と表記し、その垂直方向の画素数を「Ｔｙ」と表記する。同様に、探索領域Ｓは四角形状であるものとし、その水平方向の画素数を「Ｓｘ」と表記し、その垂直方向の画素数を「Ｓｙ」と表記する。Ｔｘ、Ｔｙ、Ｓｘ、およびＳｙは正の整数である。上述したとおり、対象領域Ｔと探索領域Ｓとは同形同大であるから、Ｔｘ＝Ｓｘ、Ｔｙ＝Ｓｙである。
【００２５】
また、基準領域Ｂは注目画素ｎを中心とする四角形状であるものとし、その水平方向の画素数を「Ｂｘ」と表記し、その垂直方向の画素数を「Ｂｙ」と表記する。同様に、比較領域Ｃは比較画素ｃを中心とする四角形状であるものとし、その水平方向の画素数を「Ｃｘ」と表記し、その垂直方向の画素数を「Ｃｙ」と表記する。Ｂｘ、Ｂｙ、Ｃｘ、およびＣｙは正の整数である。上述したとおり、基準領域Ｂと比較領域Ｃとは同形同大であるから、Ｂｘ＝Ｃｘ、Ｂｙ＝Ｃｙである。
【００２６】
上述したとおり、画像処理装置１は、相関値算出処理を、注目画素ｎを対象領域Ｔ内で移動させながら、また、探索領域Ｓを探索範囲Ｍ内で移動させながら、繰り返し実行することにより、画素毎の視差情報を算出する。ここで、画像処理装置１の特徴は、（１）注目画素ｎおよび探索領域Ｓの移動手順、および（２）面積相関の演算手順、をそれぞれ工夫したことにより、演算結果を再利用し、演算の回数および演算器の個数を大幅に削減した点にある。
【００２７】
まず、注目画素ｎおよび探索領域Ｓの移動手順について説明する。画像処理装置１は、対象領域Ｔにおいて処理対象として注目する行（以下では「注目行」と表記する）を構成するＴｘ個の各画素を順次に注目画素ｎとして設定する毎に、相関値算出処理を実行する。このとき、Ｔｘ個の各画素に対して１回ずつ相関値算出処理を実行し終わるまでの期間において、探索領域Ｓの位置は動かさない。
【００２８】
また、対象領域Ｔにおける注目行の設定順は、垂直方向に順番であることが好ましく、典型例では、対象領域Ｔの最上行からＹ軸方向（垂直下方向）へ１行ずつ順番に設定する。以降では、この典型例を前提として説明する。
【００２９】
また、注目行における注目画素ｎの設定順は、水平方向に順番であることが好ましく、典型例では、注目行の最左画素からＸ軸方向（水平右方向）へ１画素ずつ順番に１クロック毎に設定する。以降では、この典型例を前提として説明する。
【００３０】
１つの注目行の各画素に対して相関値算出処理を実行し終えると、画像処理装置１は、探索領域Ｓの位置を所定量だけ水平方向へ移動させる。典型的には探索領域Ｓを１画素だけＸ軸の負方向（水平左方向）へ移動させる（つまり、探索値ｄの値を１つ増やす）。そして、この状態において再び、探索領域Ｓを移動する前と同じ注目行の各画素を順次に注目画素ｎとして設定する毎に相関値算出処理を実行する。画像処理装置１は、この処理を、探索領域Ｓの移動量が探索範囲Ｍ内である限り繰り返し実行する。
【００３１】
この繰り返しの結果、同一の注目行の各画素について、探索範囲Ｍ＋１回分の相関値が算出されることとなるが、そのうちの最小値が算出された時点における探索領域Ｓの移動量（つまり、その時点での探索値ｄ）が、視差情報となる。
【００３２】
そして、画像処理装置１は、探索領域Ｓの移動量が探索範囲Ｍに達したら、現在の注目行に対する処理を終了する。そして、画像処理装置１は、探索領域Ｓの水平位置を初期化する（つまり、探索値ｄを０にする）とともに、新たな注目行に対して上述と同様に、相関値算出処理および探索領域Ｓの移動を繰り返し実行する。
【００３３】
そして、対象領域Ｔの最下行を注目行とした処理が完了すると、ステレオマッチング処理は全て完了する。
【００３４】
以上で説明した注目画素ｎおよび探索領域Ｓの移動手順について、図３を参照しながら具体的に説明する。なお、図３では、Ｔｘ＝Ｓｘ＝１０、Ｔｙ＝Ｓｙ＝８、Ｂｘ＝Ｃｘ＝５、Ｂｙ＝Ｃｙ＝３であり、また、探索範囲Ｍ＝４であるものとする。
【００３５】
まず、図３の（ａ）〜（ｃ）は、対象領域Ｔの最上行を注目行として注目画素ｎを順次に設定したうちの、１回目、２回目、および１０回目（最終回）を示しており、図３の（ａ）は１回目に注目画素ｎ最左画素に設定した例であり、図３の（ｂ）は２回目に注目画素ｎを左から２番目の画素に設定した例であり、図３の（ｃ）は最後に注目画素ｎを最右画素に設定した例である。図３の（ｄ）〜（ｆ）は、それぞれ、図３の（ａ）〜（ｃ）に示した注目画素ｎと比較する比較画素ｃを比較領域Ｃにおいて設定した様子を示している。図３の（ｄ）〜（ｆ）において、探索領域Ｓは初期位置から移動していないものとする（探索値ｄ＝０）。
【００３６】
画像処理装置１は、対象領域Ｔの最上行を注目行として、図３の（ａ）（ｄ）に示す状態から図３の（ｃ）（ｆ）に示す状態に達するまで相関値算出処理を繰り返し実行することにより、探索値ｄ＝０のときの、対象領域Ｔの最上行についての処理を完了する。
【００３７】
続いて、画像処理装置１は、探索領域Ｓの位置を１画素だけ水平左方向へ移動させるとともに（探索値ｄ＝１）、再び、対象領域Ｔの最上行の各画素を順次に注目画素ｎとして設定する。つまり、再び、図３の（ａ）〜（ｃ）に示したとおり最上行の最左画素から順次に注目画素ｎを設定する一方、図３の（ａ）〜（ｃ）に示した注目画素ｎと比較する比較画素ｃを、それぞれ、図３の（ｇ）〜（i）に示すとおりに設定する。図３の（ｇ）〜（i）において、探索領域Ｓは初期位置から１画素だけ水平左方向へ移動している（探索値ｄ＝１）。なお、図３の（ｇ）〜（i）に示す比較画素ｃは、それぞれ、図３の（ｄ）〜（ｆ）に示す比較画素ｃより１画素だけ左隣の画素である。
【００３８】
画像処理装置１は、対象領域Ｔの最上行を注目行として、図３の（ａ）（ｇ）に示す状態から図３の（ｃ）（i）に示す状態に達するまで相関値算出処理を繰り返し実行することにより、探索値ｄ＝１のときの、対象領域Ｔの最上行についての処理を完了する。
【００３９】
その後、画像処理装置１は、さらに探索領域Ｓの位置を１画素だけ水平左方向へ移動させるとともに、再び、対象領域Ｔの最上行の各画素を順次に注目画素ｎとして設定する処理の流れを繰り返す。
【００４０】
図３の（ｊ）〜（ｌ）は、探索領域Ｓの移動量が探索範囲Ｍに達した状態において（探索値ｄ＝４）、図３の（ａ）〜（ｃ）に示した注目画素ｎと比較する比較画素ｃを示している。画像処理装置１は、対象領域Ｔの最上行を注目行として、図３の（ａ）（ｊ）に示す状態から図３の（ｃ）（ｌ）に示す状態に達するまで相関値算出処理を繰り返し実行することにより、探索値ｄ＝４のときの、対象領域Ｔの最上行についての処理を完了する。
【００４１】
そして、探索領域Ｓの移動量が探索範囲Ｍに達しているから、この時点で、対象領域Ｔの最上行についての処理は全て完了する。したがって、画像処理装置１は、探索領域Ｓの水平位置を初期化した上で（探索値ｄ＝０）、新たな注目行である対象領域Ｔの上から２行目に対して同様の処理を繰り返し実行する（不図示）。
【００４２】
次に、面積相関の演算手順について説明する。上述したとおり、画像処理装置１は、面積相関の演算において、基準領域Ｂを構成する画素毎に、当該画素に対応する比較領域Ｃを構成する画素との相関値を求め、画素毎に求めた相関値の全てを積算する処理を行う。
【００４３】
このとき、画像処理装置１は、基準領域Ｂを構成する各画素を、基準領域Ｂにおいて列方向（垂直方向）に並ぶＢｙ個の画素から成るＢｘ個の画素列に分け、画素列の単位で相関値を積算する。言い換えれば、基準領域Ｂを構成する画素の画素値と、比較領域Ｃにおける相対位置が当該画素の基準領域Ｂにおける相対位置と同じである比較領域Ｃを構成する画素の画素値との差分絶対値を、画素列の単位で積算する。そして、画素列の単位で積算した結果（以下では「列積算値」と表記する）の全てを積算することにより、面積相関の演算結果を得るのである。
【００４４】
画素列単位の列積算値を求めることの意義は、その列積算値を再利用することにある。この再利用は、上述した注目画素ｎおよび探索領域Ｓの移動手順と、面積相関の演算手順とが相俟って実現可能となる。上述したとおり、画像処理装置１は、対象領域Ｔにおいて注目行を構成する各画素を順次に注目画素ｎとして設定する毎に相関値算出処理を実行するともに、この期間中は探索領域Ｓの位置を動かさない。そうすると、基準領域Ｂおよび比較領域Ｃは、いずれも、注目行において注目画素ｎを新たに設定する毎に、同一方向に１画素ずつ移動することとなる。よって、１画素移動後の基準領域Ｂを構成する画素列のうち、移動方向の最前列を除くＢｘ−１個の画素列は、１画素移動前の基準領域Ｂにも存在する。逆に言えば、１画素移動前の基準領域Ｂを構成する画素列のうち、移動方向側に位置するＢｘ−１個の画素列は、１画素移動後の基準領域Ｂにも存在する。このことは比較領域Ｃについても同様である。
【００４５】
そうすると、探索領域Ｓの位置が変わらない期間において、１画素移動前の基準領域Ｂに対して求めた列積算値のうち、移動方向側に位置するＢｘ−１個の画素列の列積算値は、１画素移動後の基準領域Ｂに対する相関値算出処理においては算出済みの列積算値として再利用すればよく、改めて演算しなおす必要はない。したがって、注目画素ｎが注目行の最左端に位置するときを除き、相関値算出処理においては、基準領域Ｂのうち移動方向の最前列（つまり最右列）の列積算値のみを演算すれば足りる。言い換えれば、探索領域Ｓの位置が変わらない期間において、画素列の各々について列積算値の算出は最初の１回のみ行い、同一の画素列の列積算値が再び必要なときは、算出済みの列積算値を再利用する。これにより、再利用しない場合と比べて、演算回数を削減することができ、処理全体の高速化を実現することができる。
【００４６】
以上で説明した面積相関の演算手順について、図４を参照しながら具体的に説明する。なお、図４では、Ｂｘ＝Ｃｘ＝５、Ｂｙ＝Ｃｙ＝３である。図４の（ａ）は、対象領域Ｔの最上行を注目行として、最左画素Ｂ８を注目画素ｎとして設定した状態を示している。同図において、基準領域Ｂの各画素列を破線枠で囲んで明示した。図４の（ｂ）は、図４の（ａ）に示した注目画素ｎと比較する画素Ｃ８を比較画素ｃとして設定した状態を示している。同図において、比較領域Ｃの各画素列を破線枠で囲んで明示した。図４の（ａ）（ｂ）の状態において、画像処理装置１は、下記に示す列積算値Ｅ１〜Ｅ５をこの順で算出する。
【００４７】
列積算値Ｅ１＝｜Ｂ１−Ｃ１｜＋｜Ｂ２−Ｃ２｜＋｜Ｂ３−Ｃ３｜
列積算値Ｅ２＝｜Ｂ４−Ｃ４｜＋｜Ｂ５−Ｃ５｜＋｜Ｂ６−Ｃ６｜
列積算値Ｅ３＝｜Ｂ７−Ｃ７｜＋｜Ｂ８−Ｃ８｜＋｜Ｂ９−Ｃ９｜
列積算値Ｅ４＝｜Ｂ１０−Ｃ１０｜＋｜Ｂ１１−Ｃ１１｜＋｜Ｂ１２−Ｃ１２｜
列積算値Ｅ５＝｜Ｂ１３−Ｃ１３｜＋｜Ｂ１４−Ｃ１４｜＋｜Ｂ１５−Ｃ１５｜
なお、Ｂ１〜Ｂ１５はそれぞれ画素Ｂ１〜画素Ｂ１５の画素値を示し、Ｃ１〜Ｃ１５はそれぞれ画素Ｃ１〜画素Ｃ１５の画素値を示すものとする。
【００４８】
次に、図４の（ｃ）は、画素Ｂ８の右隣の画素Ｂ１１を注目画素ｎとして新たに設定した状態を示している。画素Ｂ４〜Ｂ６から成る画素列、画素Ｂ７〜Ｂ９から成る画素列、画素Ｂ１０〜Ｂ１２から成る画素列、画素Ｂ１３〜Ｂ１５から成る画素列は、図４の（ａ）に示した基準領域Ｂにも存在する画素列である。図４の（ｄ）は、図４の（ｃ）に示した注目画素ｎと比較する画素Ｃ１１を比較画素ｃとして設定した状態を示している。図４の（ｃ）（ｄ）の状態において、画像処理装置１が算出する列積算値は、下記に示す列積算値Ｅ２〜Ｅ６である。
【００４９】
列積算値Ｅ２＝｜Ｂ４−Ｃ４｜＋｜Ｂ５−Ｃ５｜＋｜Ｂ６−Ｃ６｜
列積算値Ｅ３＝｜Ｂ７−Ｃ７｜＋｜Ｂ８−Ｃ８｜＋｜Ｂ９−Ｃ９｜
列積算値Ｅ４＝｜Ｂ１０−Ｃ１０｜＋｜Ｂ１１−Ｃ１１｜＋｜Ｂ１２−Ｃ１２｜
列積算値Ｅ５＝｜Ｂ１３−Ｃ１３｜＋｜Ｂ１４−Ｃ１４｜＋｜Ｂ１５−Ｃ１５｜
列積算値Ｅ６＝｜Ｂ１６−Ｃ１６｜＋｜Ｂ１７−Ｃ１７｜＋｜Ｂ１８−Ｃ１８｜
なお、Ｂ１６〜Ｂ１８はそれぞれ画素Ｂ１６〜画素Ｂ１８の画素値を示し、Ｃ１６〜Ｃ１８はそれぞれ画素Ｃ１６〜画素Ｃ１８の画素値を示すものとする。
【００５０】
列積算値Ｅ２〜Ｅ５は、図４の（ａ）（ｂ）に示した状態において算出済みであるから、その演算結果を保持していれば改めて演算する必要はなく、それゆえ新たに演算する必要があるのは列積算値Ｅ６のみである。
【００５１】
次に、図４の（ｅ）は、画素Ｂ１１の右隣の画素Ｂ１４を注目画素ｎとして新たに設定した状態を示している。画素Ｂ７〜Ｂ９から成る画素列、画素Ｂ１０〜Ｂ１２から成る画素列、画素Ｂ１３〜Ｂ１５から成る画素列、画素Ｂ１６〜Ｂ１８から成る画素列は、図４の（ｃ）に示した基準領域Ｂにも存在する画素列である。図４の（ｆ）は、図４の（ｅ）に示した注目画素ｎと比較する画素Ｃ１４を比較画素ｃとして設定した状態を示している。図４の（ｅ）（ｆ）の状態において、画像処理装置１が算出する列積算値は、下記に示す列積算値Ｅ３〜Ｅ７である。
【００５２】
列積算値Ｅ３＝｜Ｂ７−Ｃ７｜＋｜Ｂ８−Ｃ８｜＋｜Ｂ９−Ｃ９｜
列積算値Ｅ４＝｜Ｂ１０−Ｃ１０｜＋｜Ｂ１１−Ｃ１１｜＋｜Ｂ１２−Ｃ１２｜
列積算値Ｅ５＝｜Ｂ１３−Ｃ１３｜＋｜Ｂ１４−Ｃ１４｜＋｜Ｂ１５−Ｃ１５｜
列積算値Ｅ６＝｜Ｂ１６−Ｃ１６｜＋｜Ｂ１７−Ｃ１７｜＋｜Ｂ１８−Ｃ１８｜
列積算値Ｅ７＝｜Ｂ１９−Ｃ１９｜＋｜Ｂ２０−Ｃ２０｜＋｜Ｂ２１−Ｃ２１｜
なお、Ｂ１９〜Ｂ２１はそれぞれ画素Ｂ１９〜画素Ｂ２１の画素値を示し、Ｃ１９〜Ｃ２１はそれぞれ画素Ｃ１９〜画素Ｃ２１の画素値を示すものとする。
【００５３】
列積算値Ｅ３〜Ｅ６は、図４の（ｃ）（ｄ）に示した状態までに算出済みであるから、その演算結果を保持していれば改めて演算する必要はなく、それゆえ新たに演算する必要があるのは列積算値Ｅ７のみである。
【００５４】
以上から分かるとおり、注目画素ｎが注目行の最左端に位置するときを除き、基準領域Ｂの最右列の列積算値のみを演算し、その他の列積算値については直前までの演算結果を再利用する構成とすれば、演算回数を削減することができる。
【００５５】
次に、上述した各手順を実現するための画像処理装置１の構成例について、図１を参照しながら説明する。同図は、画像処理装置１の構成例を示すブロック図である。画像処理装置１は、同図に示すとおり、左画像バッファー１０、右画像バッファー１１、左アドレス生成部２０、右アドレス生成部２１、減算部３０、加算部３２（第１加算部）、シフトレジスタ部４０（保持部）、加算部５０（第２加算部）、相関結果保持ラインバッファー６０、比較器７０、セレクタ８０、セレクタ８１、および、探索値保持ラインバッファー９０（移動量保持部）を含んでいる。なお、特許請求の範囲の「演算部」は、左アドレス生成部２０、右アドレス生成部２１、減算部３０、加算部３２、シフトレジスタ部４０、加算部５０、比較器７０、セレクタ８０、セレクタ８１を含んでいる。
【００５６】
左画像バッファー１０は、画像処理装置１に入力される左画像Ｌを保持するためのバッファーである。右画像バッファー１１は、画像処理装置１に入力される右画像Ｒを保持するためのバッファーである。
【００５７】
左アドレス生成部２０は、基準領域Ｂを構成する各画素の画素値が格納されている左画像バッファー１０内アドレスを生成する。右アドレス生成部２１は、比較領域Ｃを構成する各画素の画素値が格納されている右画像バッファー１１内アドレスを生成する。また、右アドレス生成部２１は、探索領域Ｓの移動量である探索値ｄをセレクタ８１へ出力する。なお、左アドレス生成部２０および右アドレス生成部２１には、左画像Ｌおよび右画像Ｒのサイズ（同図では「画像サイズ（X,Y）」と表記）、対象領域Ｔのサイズおよび基準位置（同図では「対象領域サイズ（X,Y）・位置」と表記）、基準領域Ｂおよび比較領域Ｃのサイズ（同図では「ウィンドウサイズ（X,Y）」と表記）、および、探索範囲Ｍが与えられる。なお、対象領域Ｔの基準位置はどのように設定してもよく、対象領域Ｔの中心を基準位置として設定してもよいし、対象領域Ｔの左上端を基準位置として設定してもよい。
【００５８】
減算部３０は、左アドレス生成部２０が生成するアドレスに従って左画像バッファー１０から読み出された画素の画素値と、右アドレス生成部２１が生成するアドレスに従って右画像バッファー１１から読み出された画素の画素値との差分絶対値を、対応する画素毎に並列に算出する。
【００５９】
左アドレス生成部２０、右アドレス生成部２１、および減算部３０が実行する処理を具体的に説明すると、まず、基準領域Ｂを構成するＢｘ個の画素列の各々について、最左列からＸ軸方向に順番に、画素列を構成するＢｙ個の画素の画素値を左画像バッファー１０から読み出し、かつ、比較領域Ｃにおける相対位置が当該画素の基準領域Ｂにおける相対位置と同じである比較領域Ｃを構成する画素の画素値を右画像バッファー１１から読み出す。そして、減算部３０は、画素列単位で、対応する画素について読み出された画素値の差分絶対値を１クロック毎に並列に算出する（列並列）。そのために、減算部３０は、２入力１出力のＢｙ個の減算器３１（不図示）を含んでいる。減算器３１は、対応する画素の画素値を入力とし、その差分を出力する。
【００６０】
加算部３２は、減算部３０が算出したＢｙ個の差分絶対値を全て積算することにより列積算値を算出する処理を、Ｂｘ個の画素列の各々について１クロック毎に順次に行う。加算部３２は、Ｂｙ個の差分絶対値を積算するためにＢｙ個未満の加算器３３（不図示）を備えている。典型的として、加算部３２は、２入力１出力の加算器３３が多段に接続された構成であることが好ましい。
【００６１】
シフトレジスタ部４０は、直列に接続されたＢｘ個のフリップフロップ４１（図１では「Ｆ」と表記している）で構成され、加算部３２から出力される列積算値を各フリップフロップ４１にて保持する。最前段のフリップフロップ４１には加算部３２の出力が入力される。最後段を除くフリップフロップ４１の出力は後段のフリップフロップ４１に入力される。各々のフリップフロップ４１の出力は加算部５０に入力される。フリップフロップ４１に格納されている列積算値は、１クロック毎に、次段のフリップフロップ４１へシフトされるとともに加算部５０へ出力される。この構成により、シフトレジスタ部４０に入力された列積算値は、Ｂｘクロックの期間、シフトレジスタ部４０に保持され続けるともに、１クロック毎に合計Ｂｘ回だけ加算部５０へ出力される。
【００６２】
ここで、図４および図５を参照しながら、シフトレジスタ部４０のフリップフロップ４１に列積算値が格納される様子の一例について説明する。図４を参照しながら説明したとおり、図４の（ａ）および（ｂ）に示した状態において、上述した列積算値Ｅ１〜Ｅ５がこの順で算出される（列積算値Ｅ１＝｜Ｂ１−Ｃ１｜＋｜Ｂ２−Ｃ２｜＋｜Ｂ３−Ｃ３｜、列積算値Ｅ２＝｜Ｂ４−Ｃ４｜＋｜Ｂ５−Ｃ５｜＋｜Ｂ６−Ｃ６｜、列積算値Ｅ３＝｜Ｂ７−Ｃ７｜＋｜Ｂ８−Ｃ８｜＋｜Ｂ９−Ｃ９｜、列積算値Ｅ４＝｜Ｂ１０−Ｃ１０｜＋｜Ｂ１１−Ｃ１１｜＋｜Ｂ１２−Ｃ１２｜、列積算値Ｅ５＝｜Ｂ１３−Ｃ１３｜＋｜Ｂ１４−Ｃ１４｜＋｜Ｂ１５−Ｃ１５｜）。よって、列積算値Ｅ１〜Ｅ５はこの順でシフトレジスタ部４０に入力され、その結果、図５の（ａ）に示すとおり、シフトレジスタ部４０の最後段のフリップフロップ（「Ｆ４」と表記する）に列積算値Ｅ１が、その前段のフリップフロップ（「Ｆ３」と表記する）に列積算値Ｅ２が、その前段のフリップフロップ（「Ｆ２」と表記する）に列積算値Ｅ３が、その前段のフリップフロップ（「Ｆ１」と表記する）に列積算値Ｅ４が、そして、最前段のフリップフロップ（「Ｆ０」と表記する）に列積算値Ｅ５が、それぞれ保持される。
【００６３】
引き続き、図４の（ｃ）（ｄ）の状態において、上述した列積算値Ｅ６が新たに算出される（列積算値Ｅ６＝｜Ｂ１６−Ｃ１６｜＋｜Ｂ１７−Ｃ１７｜＋｜Ｂ１８−Ｃ１８｜）。列積算値Ｅ６がシフトレジスタ部４０に入力されると、フリップフロップＦ０に列積算値Ｅ６が保持され、列積算値Ｅ２〜Ｅ５はそれぞれ後段のフリップフロップＦ４〜Ｆ１にシフトされる（図５の（ｂ）参照）。
【００６４】
引き続き、図４の（ｅ）（ｆ）の状態において、上述した列積算値Ｅ７が新たに算出される（列積算値Ｅ７＝｜Ｂ１９−Ｃ１９｜＋｜Ｂ２０−Ｃ２０｜＋｜Ｂ２１−Ｃ２１｜）。列積算値Ｅ７がシフトレジスタ部４０に入力されると、フリップフロップＦ０に列積算値Ｅ７が保持され、列積算値Ｅ３〜Ｅ６はそれぞれ後段のフリップフロップＦ４〜Ｆ１にシフトされる（図５の（ｃ）参照）。
【００６５】
再び図１に戻り説明する。加算部５０は、シフトレジスタ部４０を構成するＢｘ個のフリップフロップから同じタイミングで出力される列積算値の全てを１クロックで積算する（ライン並列）。加算部５０は、Ｂｘ個の列積算値を積算するためにＢｘ個未満の加算器５１（不図示）を備えている。典型的として、加算部５０は、２入力１出力の加算器５１が多段に接続された構成であることが好ましい。加算部５０による積算の結果が、注目画素ｎと比較画素ｃとの相関値である。
【００６６】
相関結果保持ラインバッファー６０は、対象領域Ｔの注目行に対して相関値算出処理を実行して得られるＴｘ個の相関値を保持するためのバッファーである。上述したとおり、同一の注目行の各画素について、探索範囲Ｍ＋１回分の相関値が算出されるが、相関結果保持ラインバッファー６０に最終的に保持させる相関値は、そのうちの最小値である。探索領域Ｓの移動量が０（探索値ｄ＝０）であるときは、注目行の各画素に対して初めて相関値を算出することになるため、加算部５０から出力される相関値の全てを相関結果保持ラインバッファー６０に格納する。探索領域Ｓの移動量が０より大きい（探索値ｄ＞０）ときは、加算部５０から出力される相関値と、相関結果保持ラインバッファー６０に格納されている相関値とを比較器７０により比較し、それらの小さい方をセレクタ８０で選択し、相関結果保持ラインバッファー６０に格納する。
【００６７】
探索値保持ラインバッファー９０は、対象領域Ｔの注目行の各画素に対応するＴｘ個の探索値を保持するためのバッファーである。探索値保持ラインバッファー９０に最終的に保持させる値は、対象領域Ｔの注目行の各画素について最小の相関値を算出した時点での探索領域Ｓの移動量（すなわち探索値ｄ）である。探索領域Ｓの移動量が０（探索値ｄ＝０）であるときは、探索値保持ラインバッファー９０には全て０を格納する。探索領域Ｓの移動量が０より大きい（探索値ｄ＞０）場合において、上述した比較器７０による比較結果として加算部５０から出力される相関値の方が小さいときは、セレクタ８１によりその時点の探索値ｄを選択し、探索値保持ラインバッファー９０に格納する。一方、相関結果保持ラインバッファー６０に格納されている相関値の方が小さいときは、セレクタ８１は探索値保持ラインバッファー９０に格納されている探索値を選択する。探索領域Ｓの移動量が探索範囲Ｍに達した時点で最終的に探索値保持ラインバッファー９０に格納されている探索値の各々が、対象領域Ｔの注目行についての視差情報である。
【００６８】
なお、セレクタ８１には、画像の１ライン目のときにＨ（High）となり、１ライン目以外のときにＬ（Low）となる制御信号ＦＩＲＳＴＬＩＮＥが入力されている。セレクタ８０にもセレクタ８１を経由して制御信号ＦＩＲＳＴＬＩＮＥが入力されている。制御信号ＦＩＲＳＴがＨのときセレクタ８０および８１は選択動作を行わず、Ｌのときセレクタ８０および８１は選択動作を行う。
【００６９】
次に、上述した構成例の画像処理装置１が実行するステレオマッチング処理の流れの一例を、図６を参照しながら説明する。図６は、ステレオマッチング処理の流れの一例を示すフローチャートである。
【００７０】
まず最初に、探索領域Ｓの位置を初期位置に設定し、探索値ｄを０に初期化する（ステップＳ１）。そして、注目画素ｎの位置を初期化する（ステップＳ２）。具体的には、対象領域Ｔにおける注目行の最左画素を注目画素ｎとして設定するとともに、注目画素ｎに対応する探索領域Ｓの画素を比較画素ｃとして設定する。そして、注目画素ｎと比較画素ｃとの相関値算出処理を実行する（ステップＳ３）。ステップＳ３の詳細については図７を参照しながら別途説明する。
【００７１】
そして、現在の注目画素ｎが注目行の最右画素でなければ（ステップＳ４にてＮＯ）、注目画素ｎの位置を水平右方向（Ｘ軸方向）に１画素だけ移動させる（ステップＳ５）。その後、ステップＳ３へ戻る。
【００７２】
一方、現在の注目画素ｎが注目行の最右画素であれば（ステップＳ４にてＹＥＳ）、探索領域Ｓの移動量が探索範囲Ｍであるか否かを判定する（ステップＳ６）。探索領域Ｓの移動量が探索範囲Ｍでなければ（ステップＳ６にてＮＯ）、探索領域Ｓの位置を水平左方向に１画素だけ移動させる（探索値ｄの値を１つ増やす）（ステップＳ７）。その後、ステップＳ２へ戻る。
【００７３】
探索領域Ｓの移動量が探索範囲Ｍであれば（ステップＳ６にてＹＥＳ）、注目行が対象領域Ｔの最下行であるか否かを判定する（ステップＳ８）。注目行が対象領域Ｔの最下行でなければ（ステップＳ８にてＮＯ）、注目行をＹ軸方向に１画素だけ移動させる（ステップＳ９）。その後、ステップＳ１へ戻る。
【００７４】
一方、注目行が対象領域Ｔの最下行であれば（ステップＳ８にてＹＥＳ）、ステレオマッチング処理を終了する。
【００７５】
なお、ステップＳ３は、左画像バッファー１０から読み出された画素の画素値と、右アドレス生成部２１が生成するアドレスに従って右画像バッファー１１から読み出された画素の画素値とを用いて、減算部３０、加算部３２、シフトレジスタ部４０、および加算部５０が実行する処理であり、ステップＳ３以外は、左アドレス生成部２０および右アドレス生成部２１が実行する処理である。
【００７６】
次に、図７を参照しながら、図６に示した相関値算出処理（ステップＳ３）について具体的に説明する。まず、減算部３０にて、基準領域Ｂを構成するＢｘ個の画素列のうち、処理対象とする画素列と、対応する比較領域Ｃの画素列との間で、画素列を構成するＢｙ個の画素同士の画素値の差分絶対値を算出する（ステップＳ３１）。具体的には、基準領域Ｂにおける処理対象の画素列を構成する画素の画素値と、比較領域Ｃにおける相対位置が当該画素の基準領域Ｂにおける相対位置と同じである比較領域Ｃを構成する画素の画素値との差分絶対値を算出する。
【００７７】
そして、加算部３２にて、ステップＳ３１にて算出されたＢｙ個の差分絶対値を全て積算することにより、列積算値を算出する（ステップＳ３２）。
【００７８】
そして、基準領域Ｂにおける全ての画素列に対して処理し終えるまで（ステップＳ３３にてＮＯ）、ステップＳ３１〜Ｓ３２を繰り返し実行する。画素列毎に算出された列積算値は、シフトレジスタ部４０にて保持する。
【００７９】
そして、シフトレジスタ部４０において、基準領域Ｂの全ての画素列の列積算値が揃う毎に（ステップＳ３３にてＹＥＳ）、加算部５０にて列積算値を積算することにより、相関値を算出する（ステップＳ３４）。
【００８０】
そして、探索領域Ｓの移動量が０（探索値ｄ＝０）であるか、または、加算部５０にて算出した相関値が相関結果保持ラインバッファー６０に格納されている相関値より小さいとき（ステップＳ３５にてＹＥＳ）、加算部５０にて算出した相関値を相関結果保持ラインバッファー６０へ格納し（ステップＳ３６）、その時点の探索値ｄを探索値保持ラインバッファー９０へ格納する（ステップＳ３７）。
【００８１】
次に、画像処理装置１により面積相関の演算結果を再利用し、演算の回数および演算器の個数を削減できることについて説明する。そのために、まず、比較対象として、画像処理装置１の特徴として説明した演算結果の再利用をいっさい行わずに全ての対象領域Ｔの全画素について面積相関を演算する例について説明する。対象領域ＴがＴｘ＝Ｔｙ＝６４であり、基準領域ＢがＢｘ＝Ｂｙ＝３２であり、探索範囲Ｍ＝６４であるものとすると、基準領域Ｂ内の全画素分の差分絶対値を算出し、算出された全ての差分絶対値を積算して相関値を算出するのに必要な加減算回数は、（加算１回＋減算１回）×Ｂｘ×Ｂｙ＝２×３２×３２＝２０４８である。この加減算を、対象領域Ｔ内の１つの画素について探索領域Ｓを探索範囲Ｍ内で移動させる毎に実行する処理を、対象領域Ｔの全画素について実行すると、その総演算回数は、（加算１回＋減算１回）×Ｂｘ×Ｂｙ×Ｔｘ×Ｔｙ×Ｍ＝２×３２×３２×６４×６４×６４≒５億３６００万回となる。
【００８２】
一方、画像処理装置１では、減算部３０は２入力１出力のＢｙ（＝３２）個の減算器３１で構成される。また、加算部３２は、Ｂｘ（＝３２）個の値を積算するための２入力１出力の加算器３３が多段に接続される構成であるとすれば、１６＋８＋４＋２＋１＝３１個の加算器３３で構成される。また、加算部５０は、Ｂｘ（＝３２）個の列積算値を積算するための２入力１出力の加算器５１が多段に接続される構成とすれば、１６＋８＋４＋２＋１＝３１個の加算器５１で構成される。よって、画像処理装置１では、基準領域Ｂ内の全画素分の差分絶対値を算出し、算出された全ての差分絶対値を積算して相関値を算出するのに必要な加減算器は、３２＋３１＋３１＝９４個となる。したがって、画像処理装置１にて、対象領域Ｔ内の１つの画素について探索領域Ｓを探索範囲Ｍ内で移動させる毎に実行する処理を対象領域Ｔの全画素について実行すると、その総演算回数は、９４×Ｔｘ×Ｔｙ×Ｍ＝９４×６４×６４×６４≒２４６０万回である。
【００８３】
以上のとおり、この例では、面積相関の演算結果を再利用しない場合に必要となる２０４８回の加減算を、画像処理装置１では９４個の加減算器で実現できる。また、面積相関の演算結果を再利用しない場合に総演算回数が５億３６００万回となるところ、画像処理装置１では総演算回数が２４６０万回に大幅に削減される。このように、画像処理装置１によればステレオマッチング処理の高速化を実現することが可能となるのである。
【００８４】
最後に、画像処理装置１の各ブロック（ただし、バッファーを除く）は、集積回路（ＩＣチップ）等に形成された論理回路（ハードウェア）によって実現してもよいし、ＣＰＵ（Central Processing Unit）を用いてソフトウェアによって実現してもよい。ＣＰＵを用いて実現する場合、画像処理装置１は、各機能を実現するソフトウェアであるプログラムの命令を実行するＣＰＵ、上記プログラムおよび各種データがコンピュータ（またはＣＰＵ）で読み取り可能に記録されたＲＯＭまたは記憶装置（これらを「記録媒体」と称する）、上記プログラムを展開するＲＡＭ（Random Access Memory）などを備えている。そして、コンピュータ（またはＣＰＵ）が上記プログラムを上記記録媒体から読み取って実行することにより、本発明の目的が達成される。上記記録媒体としては、「一時的でない有形の媒体」、例えば、テープ、ディスク、カード、半導体メモリ、プログラマブルな論理回路などを用いることができる。また、上記プログラムは、該プログラムを伝送可能な任意の伝送媒体（通信ネットワークや放送波等）を介して上記コンピュータに供給されてもよい。なお、本発明は、上記プログラムが電子的な伝送によって具現化された、搬送波に埋め込まれたデータ信号の形態でも実現され得る。
【００８５】
本発明は上述した実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
【符号の説明】
【００８６】
１  画像処理装置、２０  左アドレス生成部（演算部の一部）、２１  右アドレス生成部（演算部の一部）、３０  減算部（演算部の一部）、３１  減算器、３２  加算部（演算部の一部、第１加算部）、３３  加算器、４０  シフトレジスタ部（演算部の一部）、４１  フリップフロップ、５０  加算部（演算部の一部、第２加算部）、５１  加算器、６０  相関結果保持ラインバッファー、９０  探索値保持ラインバッファー（移動量保持部）、ｎ  注目画素、ｃ  比較画素、ｄ  探索値、Ｌ  左画像（基準画像）、Ｒ  右画像（比較画像）、Ｂ  基準領域、Ｃ  比較領域、Ｔ  対象領域、Ｓ  探索領域、Ｍ  探索範囲
【図１】
2018026032.tif 000004
【図２】
2018026032.tif 000005
【図３】
2018026032.tif 000006
【図４】
2018026032.tif 000007
【図５】
2018026032.tif 000008
【図６】
2018026032.tif 000009
【図７】
2018026032.tif 000010