(57)【特許請求の範囲】
【請求項１】
異なる位置から撮影され、複数の画素が２次元の行列状に配列された第１画像及び第２画像を入力する入力手段と、
前記第１画像から所定サイズの第１ブロックを切り出す手段であって、Ｎ（Ｎは１以上の整数）行目の各画素に対応する前記第１ブロックを切り出す第１切り出し手段と、
前記第２画像の前記第１ブロックに対する処理領域内に設定される移動範囲から前記所定サイズの第２ブロックを切り出す手段であって、前記Ｎ行目の各画素に対応する各第１ブロックに対して、領域が前記処理領域の全ての領域に設定された前記移動範囲から前記第２ブロックを行方向にＰ（Ｐは１以上の整数）画素ずつ移動させて切り出す第２切り出し手段と、
前記第２ブロックの切り出し毎に、該切り出した第２ブロックと、演算対象の第１ブロックとを比較して、前記第１ブロック及び前記第２ブロックの両ブロック内の各画素の輝度差の絶対値和である差分絶対値和を算出する相関値算出手段と、
前記各第１ブロック毎に、前記差分絶対値和の最小値を算出し、該最小値となるときの第１ブロックに対する第２ブロックのずれ位置に基づいて、演算対象の第１ブロックに対する前記第１画像及び前記第２画像のずれ量を算出するずれ量算出手段と、
前記第１画像のＮ＋１行目の画素に対する前記ずれ量を算出する際に、前記Ｎ行目において算出された前記差分絶対値和に基づいて前記移動範囲を絞るように設定する設定手段と、を有し、
前記設定手段は、
前記Ｎ行目の各画素に対応する各第１ブロック毎に、所定の判定レベルよりも低い前記差分絶対値和の極小点又は最小値を抽出する手段と、
前記Ｎ行目の全ての第１ブロックにおいて抽出された極小点又は最小値に基づいて、該極小点又は最小値が密集する前記ずれ位置の範囲を密集領域として抽出する手段と、
前記密集領域内の前記極小点又は前記最小値におけるずれ位置に基づいて、前記移動範囲を絞るように設定する手段と、を有する
することを特徴とする画像処理装置。
【請求項２】
前記設定手段は、
前記密集領域内の極小点に対応する前記第２ブロックのずれ位置の平均値を中心として、前後Ｘ（Ｘは１以上の整数）画素の移動量の範囲のみを前記移動範囲に設定することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記Ｘ画素は、前記密集領域内の極小点に対応する前記第２ブロックのずれ位置のばらつきが小さいほど画素数が少なくなるように設定されることを特徴とする請求項２に記載の画像処理装置。
【請求項４】
前記設定手段は、
前記Ｎ＋１行目以降の各行毎に抽出される前記極小点に基づいて、前記密集領域における前記平均値がずれる場合には、該ずれた平均値に基づき前記移動範囲を変更することを特徴とする請求項２又は３に記載の画像処理装置。
【請求項５】
前記設定手段は、
前記移動範囲が複数の範囲に設定されている場合に、前記設定された一部の範囲内で算出された差分絶対値和の全てが前記判定レベル以上である場合には、前記一部の範囲を前記移動範囲から除外することを特徴とする請求項２〜４のいずれか１つに記載の画像処理装置。
【請求項６】
前記設定手段は、
前記Ｎ＋１行目の画素に対するずれ量を算出した際に、前記設定された全ての移動範囲内で算出された差分絶対値和の全てが前記判定レベル以上である場合には、前記移動範囲を前記処理領域の全ての領域に設定した上で、前記Ｎ＋１行目の各画素に対するずれ量を算出する処理を再度実行させることを特徴とする請求項１〜５のいずれか１つに記載の画像処理装置。
【請求項７】
前記第１画像のＭ（ＭはＮ又はＮ＋１以上の整数）行目の画素に対する前記ずれ量を算出した際に、前記算出したずれ量が０である第１ブロックの行方向の位置を抽出する抽出手段と、
前記第１画像のＭ＋１行目の画素に対する前記ずれ量を算出する際に、前記抽出された行方向の位置から前記第１ブロックの切り出しを行わないように制御する第１制御手段と、
を有することを特徴とする請求項１〜６のいずれか１つに記載の画像処理装置。
【請求項８】
前記第１画像のＭ（ＭはＮ又はＮ＋１以上の整数）行目の画素に対する前記ずれ量を算出した際に、前記算出したずれ量が全て０である場合に、前記Ｍ行目に続いてＭ＋Ｖ（Ｖは前記第１ブロックの列方向の画素数）行目の各画素に対するずれ量を算出する処理を実行させるように制御する第２制御手段を有することを特徴とする請求項１〜７のいずれか１つに記載の画像処理装置。
【請求項９】
異なる位置から撮影され、複数の画素が２次元の行列状に配列された第１画像及び第２画像を入力するステップと、
前記第１画像のＮ行１列目から所定サイズの第１ブロックを切り出すステップと、
前記第２画像の前記第１ブロックに対する処理領域内に設定された移動範囲から前記所定サイズの第２ブロックを切り出すステップと、
前記第１ブロックと前記第２ブロックとを比較して、前記第１ブロック及び前記第２ブロックの両ブロック内の各画素の輝度差の絶対値和である差分絶対値和を算出するステップと、
領域が前記処理領域の全ての領域に設定された前記移動範囲から前記第２ブロックを行方向にＰ（Ｐは１以上の整数）画素ずつ移動させて切り出す毎に前記差分絶対値和を算出するステップと、
前記差分絶対値和の最小値を算出し、該最小値となるときの第１ブロックに対する第２ブロックのずれ位置に基づいて、前記第１ブロックに対する前記第１画像及び前記第２画像のずれ量を算出するステップと、
前記第１ブロックを前記第１画像内で前記行方向に１画素ずつ移動させて切り出し、該切り出した前記Ｎ行目の各画素に対応する各第１ブロック毎に、前記全ての領域に設定された前記移動範囲から切り出された比較ブロックと比較して前記差分絶対値和及び前記ずれ量を算出するステップと、
前記第１画像のＮ＋１行目の画素に対する前記ずれ量を算出する際に、前記Ｎ行目において算出された前記差分絶対値和に基づいて前記移動範囲を絞るように設定するステップと、
を有し、
前記移動範囲を絞るように設定するステップでは、
前記Ｎ行目の各画素に対応する各第１ブロック毎に、所定の判定レベルよりも低い前記差分絶対値和の極小点又は最小値を抽出し、
前記Ｎ行目の全ての第１ブロックにおいて抽出された極小点又は最小値に基づいて、該極小点又は最小値が密集する前記ずれ位置の範囲を密集領域として抽出し、
前記密集領域内の前記極小点又は前記最小値におけるずれ位置に基づいて、前記移動範囲を絞るように設定する
ことを特徴とする画像処理方法。
【請求項１０】
異なる位置から撮影され、複数の画素が２次元の行列状に配列された第１画像及び第２画像を出力する撮像部と、
前記第１画像から所定サイズの第１ブロックを切り出す手段であって、Ｎ（Ｎは１以上の整数）行目の各画素に対応する前記第１ブロックを切り出す第１切り出し手段と、
前記第２画像の前記第１ブロックに対する処理領域内に設定される移動範囲から前記所定サイズの第２ブロックを切り出す手段であって、前記Ｎ行目の各画素に対応する各第１ブロックに対して、領域が前記処理領域の全ての領域に設定された前記移動範囲から前記第２ブロックを行方向にＰ（Ｐは１以上の整数）画素ずつ移動させて切り出す第２切り出し手段と、
前記第２ブロックの切り出し毎に、該切り出した第２ブロックと対応する前記第１ブロックとを比較して、前記第１ブロック及び前記第２ブロックの両ブロック内の各画素の輝度差の絶対値和である差分絶対値和を算出する相関値算出手段と、
前記各第１ブロック毎に、前記差分絶対値和の最小値を算出し、該最小値となるときの第１ブロックに対する第２ブロックのずれ位置に基づいて、演算対象の第１ブロックに対する前記第１画像及び前記第２画像のずれ量を算出するずれ量算出手段と、
前記第１画像のＮ＋１行目の画素に対する前記ずれ量を算出する際に、前記Ｎ行目において算出された前記差分絶対値和に基づいて前記移動範囲を絞るように設定する設定手段と、を有し、
前記設定手段は、
前記Ｎ行目の各画素に対応する各第１ブロック毎に、所定の判定レベルよりも低い前記差分絶対値和の極小点又は最小値を抽出する手段と、
前記Ｎ行目の全ての第１ブロックにおいて抽出された極小点又は最小値に基づいて、該極小点又は最小値が密集する前記ずれ位置の範囲を密集領域として抽出する手段と、
前記密集領域内の前記極小点又は前記最小値におけるずれ位置に基づいて、前記移動範囲を絞るように設定する手段と、を有する
ことを特徴とする撮像装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置、画像処理方法及び撮像装置に関するものである。
【背景技術】
【０００２】
従来、両眼視差を持った左眼画像と右眼画像を用意し（図２２（ａ）参照）、それぞれ独立に観察者の左右の眼に投影することにより立体視を実現する２眼式の３次元表示装置が知られている。このような表示方法では、両眼視差、つまり左眼画像と右眼画像のずれ量によって、立体感（飛び出し量）が変化する。例えば、図２２（ｂ）、（ｃ）に示すように、左右画像のずれ量が大きくなるほど、その画像を見ている左右の視線の方向も離れて、両視線の交差位置が画面から離れる。すなわち、左右画像のずれ量が大きくなるほど、立体像が画面から離れた位置に表示される（飛び出し量が大きくなる）。このため、上記ずれ量を算出・利用することにより、立体感を制御することや、表示の際の違和感を緩和することができる。
【０００３】
このような左右画像のずれ量は、例えば輝度信号の差分絶対値和を尺度としたブロックマッチング法を利用して算出される（例えば、特許文献１，２参照）。詳述すると、図２３（ａ）に示すように、一方の画像（ここでは、右眼画像）から所定サイズのブロックＢＲ１を切り出し、その切り出しブロックＢＲ１を他方の画像（ここでは、左眼画像）の同じ画素位置のブロックＢＬ１と比較し、両ブロックＢＲ１，ＢＬ１内の各画素の輝度差の絶対値和（差分絶対値和）を算出する。続いて、図２３（ｂ）に示すように、切り出しブロックＢＲ１と比較する左眼画像の比較ブロックＢＬ１を水平方向に１画素ずつシフトさせ、シフトさせる毎に差分絶対値和を算出する。この差分絶対値和の算出（比較ブロックＢＬ１の移動）を、図２３（ｃ）に示すように、比較ブロックＢＬ１が左眼画像の終端に達するまで続ける。そして、差分絶対値和の算出が終了すると、その算出した差分絶対値和の中から最小となる差分絶対値和を求め、図２４（ａ）に示すように、その最小値に対応する比較ブロックＢＬ１を特定する。この特定された比較ブロックＢＬ１が、左眼画像における切り出しブロックＢＲ１に対応する領域、つまり切り出しブロックＢＲ１と最も類似する領域になる。このため、上記特定された比較ブロックＢＬ１の位置と切り出しブロックＢＲ１の位置との水平座標の差が左右画像のずれ量（両眼視差）となる。
【０００４】
次に、図２４（ｂ）に示すように、切り出しブロックＢＲ１を水平方向に１画素シフトさせ、図２３（ａ）〜（ｃ）で説明したのと同様に、左眼画像において差分絶対値和が最小となるブロック位置を特定し、左右画像のずれ量を算出する。その後、図２４（ｃ）に示すように、右眼画像の水平方向における終端（図中の右端）に達するまで、切り出しブロックＢＲ１を水平方向に１画素ずつシフトさせ、そのシフトさせた各切り出しブロックＢＲ１毎に上記ずれ量を算出する。
【０００５】
次に、図２５（ａ）に示すように、切り出しブロックＢＲ１を右眼画像の水平方向における始点（図中の左端）に戻し、さらに垂直方向に１画素シフトさせ、図２３及び図２４で説明したのと同様に上記ずれ量を算出する。すなわち、切り出しブロックＢＲ１を水平方向に１画素シフトさせる毎に、切り出しブロックＢＲ１に対する左右画像のずれ量を算出する。
【０００６】
以上の処理を、図２５（ｂ）に示すように、切り出しブロックＢＲ１が右眼画像の終点（右下）に達するまで繰り返し、各切り出しブロックＢＲ１に対する左右画像のずれ量を算出する。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００９−１２９４２０号公報
【特許文献２】特開２００１−０４５５２３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、上述した算出方法では、右眼画像及び左眼画像の全ての領域に対して比較演算処理（差分絶対値和の算出処理）が行われるため、左右画像の画像サイズが大きくなるほど演算処理時間が長くなるという問題がある。
【課題を解決するための手段】
【０００９】
本発明の一観点によれば、異なる位置から撮影され、複数の画素が２次元の行列状に配列された第１画像及び第２画像を入力する入力手段と、前記第１画像から所定サイズの第１ブロックを切り出す手段であって、Ｎ（Ｎは１以上の整数）行目の各画素に対応する前記第１ブロックを切り出す第１切り出し手段と、前記第２画像の前記第１ブロックに対する処理領域内に設定される移動範囲から前記所定サイズの第２ブロックを切り出す手段であって、前記Ｎ行目の各画素に対応する各第１ブロックに対して、領域が前記処理領域の全ての領域に設定された前記移動範囲から前記第２ブロックを行方向にＰ（Ｐは１以上の整数）画素ずつ移動させて切り出す第２切り出し手段と、前記第２ブロックの切り出し毎に、該切り出した第２ブロックと、演算対象の第１ブロックとを比較して、前記第１ブロック及び前記第２ブロックの両ブロック内の各画素の輝度差の絶対値和である差分絶対値和を算出する相関値算出手段と、前記各第１ブロック毎に、前記差分絶対値和の最小値を算出し、該最小値となるときの第１ブロックに対する第２ブロックのずれ位置に基づいて、演算対象の第１ブロックに対する前記第１画像及び前記第２画像のずれ量を算出するずれ量算出手段と、前記第１画像のＮ＋１行目の画素に対する前記ずれ量を算出する際に、前記Ｎ行目において算出された前記差分絶対値和に基づいて前記移動範囲を絞るように設定する設定手段と、を有し、前記設定手段は、前記Ｎ行目の各画素に対応する各第１ブロック毎に、所定の判定レベルよりも低い前記差分絶対値和の極小点又は最小値を抽出する手段と、前記Ｎ行目の全ての第１ブロックにおいて抽出された極小点又は最小値に基づいて、該極小点又は最小値が密集する前記ずれ位置の範囲を密集領域として抽出する手段と、前記密集領域内の前記極小点又は前記最小値におけるずれ位置に基づいて、前記移動範囲を絞るように設定する手段と、を有する。
【発明の効果】
【００１０】
本発明の一観点によれば、ずれ量算出にかかる処理時間を短縮することができるという効果を奏する。
【図面の簡単な説明】
【００１１】
【図１】一実施形態の撮像装置を示すブロック図。
【図２】ずれ量算出処理部の内部構成例を示すブロック図。
【図３】（ａ）〜（ｃ）は、ずれ量算出処理の概要を示す説明図。
【図４】（ａ）〜（ｄ）は、ずれ量算出処理の概要を示す説明図。
【図５】（ａ）、（ｂ）は、ずれ量算出処理の概要を示す説明図。
【図６】ずれ量算出処理方法を示すフローチャート。
【図７】ずれ量算出処理方法を示すフローチャート。
【図８】ずれ量算出処理方法を示すフローチャート。
【図９】（ａ）、（ｂ）は、右眼画像及び左眼画像を示す説明図。
【図１０】各種パラメータを示す説明図。
【図１１】（ａ）〜（ｄ）は、ずれ量算出処理を示す説明図。
【図１２】（ａ）〜（ｃ）は、ずれ量算出処理を示す説明図。
【図１３】（ａ）〜（ｃ）は、ずれ量算出処理を示す説明図。
【図１４】（ａ）〜（ｃ）は、ずれ量算出処理を示す説明図。
【図１５】（ａ）〜（ｄ）は、ずれ量算出処理を示す説明図。
【図１６】（ａ）〜（ｄ）は、ずれ量算出処理を示す説明図。
【図１７】ずれ量算出処理を示す説明図。
【図１８】（ａ）、（ｂ）は、ずれ量算出処理を示す説明図。
【図１９】（ａ）〜（ｄ）は、ずれ量算出処理を示す説明図。
【図２０】（ａ）〜（ｄ）は、ずれ量算出処理を示す説明図。
【図２１】（ａ）〜（ｃ）は、ずれ量算出処理を示す説明図。
【図２２】（ａ）〜（ｃ）は、右眼画像と左眼画像のずれ量を示す説明図。
【図２３】（ａ）〜（ｃ）は、従来のずれ量算出処理を示す説明図。
【図２４】（ａ）〜（ｃ）は、従来のずれ量算出処理を示す説明図。
【図２５】（ａ）、（ｂ）は、従来のずれ量算出処理を示す説明図。
【発明を実施するための形態】
【００１２】
以下、一実施形態を図１〜図２１に従って説明する。
図１に示すように、撮像装置１は、撮像部１０と、画像処理プロセッサ（ＩＳＰ：Image Signal Processor）２０と、入力部４１と、メモリ４２と、表示デバイス４３とを有している。この撮像装置１は、例えばデジタルスチルカメラである。
【００１３】
撮像部１０は、右眼画像用の撮像部１１Ｒと、左眼画像用の撮像部１１Ｌとを有している。撮像部１１Ｒは、撮像光学系１２Ｒと、撮像素子部１３Ｒと、アナログフロントエンド（ＡＦＥ：Analog Front End）１４Ｒとを有している。同様に、撮像部１１Ｌは、撮像光学系１２Ｌと、撮像素子部１３Ｌと、ＡＦＥ１４Ｌとを有している。
【００１４】
撮像光学系１２Ｒ，１２Ｌは、被写体からの光を集光する複数のレンズ（フォーカスレンズなど）や、これらのレンズを通過した光の量を調整する絞り等を含み、光学的な被写体像を撮像素子部１３Ｒ，１３Ｌにそれぞれ導く。これら撮像光学系１２Ｒ，１２Ｌは、例えば撮像装置１の前面（図示略）において異なる位置に設けられている。
【００１５】
撮像素子部１３Ｒ，１３Ｌは、例えばベイヤ配列のカラーフィルタと、撮像素子とを含む。撮像素子は、例えばＣＣＤ（Charge Coupled Device）イメージセンサである。この撮像素子は、カラーフィルタを介して入射する光の量に応じた撮像信号（アナログ信号）を出力する。
【００１６】
ＡＦＥ１４Ｒ，１４Ｌは、撮像素子部１３Ｒ，１３Ｌからそれぞれ出力されるアナログの撮像信号をデジタルの画像データに変換するＡ／Ｄ変換回路を含み、画像データを画像処理プロセッサ２０に出力する。また、ＡＦＥ１４Ｒ，１４Ｌは、画像処理プロセッサ２０から供給される制御信号を撮像素子部１３Ｒ，１３Ｌへそれぞれ出力する。
【００１７】
画像処理プロセッサ２０は、撮像部１０から出力される画像データ（ベイヤデータ）に対して各種画像処理を施す。このとき、画像処理プロセッサ２０は、所定の処理段階で画像データをメモリ４２に一時的に格納する。すなわち、メモリ４２は作業メモリとして機能する。このメモリ４２は、例えば同期式半導体メモリ（ＳＤＲＡＭ：Synchronous Dynamic Random Access Memory）などの書き換え可能なメモリである。また、画像処理プロセッサ２０は、メモリ４２に格納された各種画像処理後の画像データを表示デバイス４３に表示したり、メモリカード４４に格納したりする。
【００１８】
なお、表示デバイス４３としては、液晶表示装置（ＬＣＤ：Liquid Crystal Display）や有機ＥＬ（Electronic Luminescence）などを用いることができる。メモリカード４４は、例えばコンパクトフラッシュ（登録商標）やＳＤメモリカード（登録商標）などの携帯型メモリカードである。
【００１９】
入力部４１は、ユーザにより操作されるシャッタボタンやメニューボタン等の各種スイッチを有している。この各種スイッチは、例えば写真撮影、撮影条件の設定や表示方式の設定等を行うために使用される。
【００２０】
次に、画像処理プロセッサ２０の内部構成例を説明する。
画像処理プロセッサ２０は、プリプロセス部２１と、色処理部２２と、画像処理部２３と、ずれ量算出処理部２４と、コーデック部２５と、メモリカードインタフェース（Ｉ／Ｆ）２６と、表示Ｉ／Ｆ２７と、ＤＭＡ調停部２８と、メモリコントローラ２９と、ＣＰＵ３０とを有している。
【００２１】
プリプロセス部２１、色処理部２２、画像処理部２３、ずれ量算出処理部２４、コーデック部２５、メモリカードＩ／Ｆ２６、表示Ｉ／Ｆ２７及びＤＭＡ調停部２８は、内部バス３１を介して互いに接続されている。ＤＭＡ調停部２８は、メモリコントローラ２９を介してメモリ４２と接続されている。
【００２２】
プリプロセス部２１は、撮像部１０から出力される画像データ（ＲＧＢ形式の画像データ（ベイヤデータ））に対し、例えばシェーディング補正、キズ補正、傾き補正やＯＢ（Optical Black）レベル補正等の補正処理（前処理）を施す。そして、プリプロセス部２１は、補正処理後の画像データをメモリ４２に格納するとともに、補正処理後の画像データをずれ量算出処理部２４に出力する。なお、撮像部１１Ｒから出力された画像データに対して補正処理を施した後の画像データは、観察者の右眼に投影するための画像（映像）となるため、以下の説明では、その画像データを右眼画像ＰＲと称する。また、撮像部１１Ｌから出力された画像データに対して補正処理を施した後の画像データは、観察者の左眼に投影するための画像となるため、以下の説明では、その画像データを左眼画像ＰＬと称する。
【００２３】
色処理部２２は、例えば色空間変換部である。この色処理部２２は、メモリ４２に格納されたＲＧＢ形式の画像データ（ベイヤデータ）を読み出し、画像データをＹＣｂＣｒ形式の画像データに変換する。そして、色処理部２２は、変換後の画像データをメモリ４２に格納する。
【００２４】
画像処理部２３は、上記色処理部２２における処理以外の他の画像処理を行う１つ又は複数の処理部である。上記他の画像処理には、例えば画素数を増減する解像度変換処理、セピア色などの色調を変換する色調変換処理、画像の輪郭（エッジ）を強調するエッジ強調処理、画像データに含まれるノイズを除去するノイズ除去処理等が含まれる。
【００２５】
ずれ量算出処理部２４は、プリプロセス部２１から右眼画像ＰＲ及び左眼画像ＰＬを入力し、それら右眼画像ＰＲと左眼画像ＰＬとのずれ量（両眼視差）を算出する。例えば、ずれ量算出処理部２４は、右眼画像ＰＲ及び左眼画像ＰＬの両画像間で画素同士の対応付けを行うことにより、画素毎のずれ量を算出する。ここで、上記画素同士の対応付けは、各画像上の画素周辺のブロック同士の相関値を求め、最も相関値の高い画素同士を対応付ける方法を用いる。そして、ずれ量算出処理部２４は、算出したずれ量をメモリ４２に格納する。このずれ量は、画像データを３次元表示する際に立体感等を制御するパラメータとして使用される。
【００２６】
コーデック部２５は、メモリ４２に格納された画像データを読み出し、その画像データを所定の方式（例えばＪＰＥＧ（Joint Photographic Experts Group）方式）により符号化し、符号化後の画像データ（符号化データ）をメモリ４２に格納する。なお、当該撮像装置１が動画の撮影が可能であれば、コーデック部２５に、動画データを所定の方式（例えばＭＰＥＧ（Moving Picture Experts Group）方式）により符号化する機能を持たせてもよい。
【００２７】
メモリカードＩ／Ｆ２６は、撮像装置１に装着されるメモリカード４４と接続される。メモリカードＩ／Ｆ２６は、メモリ４２に格納されたデータ（例えば符号化された画像データ）をメモリカード４４に格納する。
【００２８】
表示Ｉ／Ｆ２７には、表示デバイス４３が接続されている。表示デバイス４３は、撮影装置の駆動源であるバッテリの残量、撮影モード、撮影フレーム、記憶された画像データの２次元表示又は３次元表示等に用いられる。例えば表示Ｉ／Ｆ２７は、メモリ４２に格納された画像データを読み出し、その画像データを表示デバイス４３に出力する。また、表示Ｉ／Ｆ２７は、撮像部１１Ｒ，１１Ｌによって撮像された画像データを３次元表示する際には、メモリ４２に格納された右眼画像ＰＲ、左眼画像ＰＬ及びずれ量を読み出し、ずれ量に基づいて右眼画像ＰＲ及び左眼画像ＰＬを表示デバイス４３に３次元表示する。
【００２９】
ここで、３次元表示の表示方式としては、公知の方式を用いることができる。例えば右眼画像ＰＲ及び左眼画像ＰＬを並べて表示して裸眼平行法により立体視を行う方式を用いることができる。また、表示デバイス４３にレンチキュラーレンズを貼り付け、表示デバイス４３の表示面の各々の所定位置に右眼画像ＰＲ及び左眼画像ＰＬを表示することにより、観察者の左右の眼にそれぞれの画像ＰＲ，ＰＬを入射させて３次元表示を実現する方式を用いることができる。
【００３０】
プリプロセス部２１と、色処理部２２と、画像処理部２３と、ずれ量算出処理部２４と、コーデック部２５と、メモリカードＩ／Ｆ２６と、表示Ｉ／Ｆ２７とは、メモリアクセスコントローラ（ＤＭＡＣ：Direct Memory Access Controller）２１ａ〜２７ａをそれぞれ有している。ＤＭＡＣ２１ａ〜２７ａは、各処理部２１〜２７が行う処理に応じたアクセス要求を出力する。例えばプリプロセス部２１は、撮像部１０から出力される画像データを、メモリ４２に格納する。このため、プリプロセス部２１のＤＭＡＣ２１ａは、書き込み要求（ライトリクエスト）を出力する。表示Ｉ／Ｆ２７は、表示デバイス４３に表示する画像データをメモリ４２から読み出す。このため、表示Ｉ／Ｆ２７のＤＭＡＣ２７ａは、読み出し要求（リードリクエスト）を出力する。
【００３１】
ＤＭＡ調停部２８は、各処理部２１〜２７のＤＭＡＣ２１ａ〜２７ａから出力され競合する要求（リクエスト）を、例えば各処理部２１〜２７に対応して設定された優先度に従って要求を調停し、１つの処理部に対するアクセスを許可する。アクセスが許可された処理部は、メモリ４２に対するアクセスのための制御信号を出力する。例えば読み出し要求の場合、メモリコントローラ２９は、制御信号に応じてメモリ４２からデータを読み出し、その読み出したデータを要求元に出力する。また、メモリコントローラ２９は、書き込み要求と、その要求元から出力されるデータをメモリ４２に出力し、メモリ４２はそのデータを記憶する。
【００３２】
ＣＰＵ３０は、画像処理プロセッサ２０全体を統括制御するもので、データや画像の解析、解析結果に基づく必要な情報の各処理部への設定及びデータの書き込み／読み出し制御等を行う。また、ＣＰＵ３０は、上記撮像素子部１３Ｒ，１３Ｌ（ＣＣＤイメージセンサ）のリセットを指令する制御信号を、ＡＦＥ１４Ｒ，１４Ｌをそれぞれ通じて撮像素子部１３Ｒ，１３Ｌに出力する。なお、このＣＰＵ３０には、上記入力部４１の各種スイッチにより設定・指定された操作情報が入力される。
【００３３】
次に、ずれ量算出処理部２４の内部構成例及び動作を説明する。
はじめに、ずれ量算出処理部２４によるずれ量算出処理の概要を説明する。
図３（ａ）に示すように、まず、撮像部１１Ｒ，１１Ｌによって撮影された２つの画像データ、つまり異なる位置（視点）から撮影された右眼画像ＰＲ及び左眼画像ＰＬを取得する。これら右眼画像ＰＲ及び左眼画像ＰＬは、複数の画素が水平方向（行方向）及び垂直方向（列方向）に２次元状に配列された画像データ、つまり複数の画素が２次元の行列状に配列された画像データである。
【００３４】
一番はじめの垂直位置の画素における演算処理（ここでは、一行目の画素に対するずれ量算出処理）では、一方の画像データ（ここでは、右眼画像ＰＲ）の水平位置の始点（１列目）から所定サイズの切り出しブロックＢＲを切り出す。その切り出しブロックＢＲと比較するブロックとして、他方の画像データ（ここでは、左眼画像ＰＬ）の処理領域Ａ１内の始点（ここでは、１行１列目）から切り出しブロックＢＲと同サイズの比較ブロックＢＬを切り出す。そして、切り出しブロックＢＲと比較ブロックＢＬとの両ブロック内の各画素の輝度差の絶対値和（差分絶対値和）を算出する。なお、上記処理領域Ａ１は、演算対象の切り出しブロックＢＲのずれ量を算出するためにその切り出しブロックＢＲと比較演算される領域であり、その切り出しブロックＢＲに対応する領域を左眼画像ＰＬから探索するための領域である。
【００３５】
続いて、図３（ｂ）に示すように、比較ブロックＢＬを処理領域Ａ１内で水平方向に１画素ずつシフト（移動）させるとともに、比較ブロックＢＬをシフトさせる毎に上記差分絶対値和を算出する。この差分絶対値和の算出処理を、比較ブロックＢＬが上記処理領域Ａ１の終端に達するまで続ける。そして、算出された多数の差分絶対値和のうち最小となる差分絶対値和を算出し、その差分絶対値和の最小値となる比較ブロックＢＬの位置と切り出しブロックＢＲの位置とから当該切り出しブロックＢＲに対する両画像ＰＲ，ＰＬのずれ量を算出する。このとき、図３（ｃ）に示すように、切り出しブロックＢＲと比較ブロックＢＬとのずれ位置を横軸に取り、差分絶対値和の大きさを縦軸に取ったグラフ上に、処理領域Ａ１内の水平方向の全ブロックから算出された全ての差分絶対値和をプロットし、各プロット点を曲線で結ぶ。すると、例えば図示のように、複数の極小点（極小値）を有する曲線が形成される。そして、この極小点における差分絶対値和の大きさと予め設定された判定レベルＴ１とを比較し、差分絶対値和が判定レベルＴ１よりも低くなる極小点を抽出する。なお、図示の例では、２つの極小点が抽出される（丸印参照）。
【００３６】
次に、図４（ａ）に示すように、右眼画像ＰＲからの切り出し位置を水平方向に１画素シフトして切り出しブロックＢＲを切り出す。そして、上述と同様に、切り出しブロックＢＲに対するずれ量を算出するとともに、図４（ｂ）に示すように、判定レベルＴ１よりも低くなる極小点を抽出する。このとき、図示の例では、２つの極小点が抽出される。
【００３７】
以後、図４（ｃ）に示すように、切り出しブロックＢＲの切り出し位置が終点（具体的には、切り出しブロックＢＲの右端が右眼画像ＢＬの右端に一致する点）に達するまで、上述と同様の処理が繰り返される。これにより、水平方向に１画素ずつ移動されて切り出された各切り出しブロックＢＲに対するずれ量が算出され、さらに図４（ｄ）に示すように各切り出しブロックＢＲに対する極小点が抽出される。
【００３８】
このように、一行目の画素に対するずれ量算出処理では、従来と同様に、切り出しブロックＢＲと比較される比較ブロックＢＬが処理領域Ａ１の全ての領域で（始点から終点まで）水平方向に１画素ずつシフトされる。これにより、処理領域Ａ１の全水平領域における差分絶対値和が算出され、当該切り出しブロックＢＲに対するずれ量が算出される。そして、切り出しブロックＢＲの切り出し位置が右眼画像ＰＲの全ての領域で（始点から終点まで）水平方向に１画素ずつシフトされ、一行目の各画素に対応する各切り出しブロックＢＲに対するずれ量が算出される。但し、このとき、本実施形態では、ずれ量の算出と併せて、各切り出しブロックＢＲに対する差分絶対値和の極小点を抽出するようにしている。
【００３９】
図５（ａ）は、上記抽出された多数の極小点、すなわち一行目の画素に対する全切り出しブロックＢＲにおいて抽出された極小点を１つのグラフ上にまとめてプロットしたものである。このグラフに基づいて、２行目以降の画素に対応する切り出しブロックＢＲと比較される比較ブロックＢＬの移動範囲ＭＬを絞るように設定する。具体的には、上記グラフ上で極小点が密集した周辺領域のみを比較ブロックＢＬの移動範囲ＭＬに設定する。より具体的には、極小点が密集した密集領域内の極小点におけるずれ位置の平均値を中心に、前後Ｘ画素間の領域のみを比較ブロックＢＬの移動範囲ＭＬに設定する。なお、図示のように、密集領域が複数存在する場合には、比較ブロックＢＬの移動範囲ＭＬも複数設定される。
【００４０】
続いて、図５（ｂ）に示すように、右眼画像ＰＲの２行目の始点（１列目）から切り出しブロックＢＲを切り出す。その切り出しブロックＢＲと比較される比較ブロックＢＬを、処理領域Ａ１内の上記設定された移動範囲ＭＬから切り出す。ここでは、ずれ位置が０〜２画素の領域からの比較ブロックＢＬの切り出しはスキップされ、ずれ位置が３画素の位置から比較ブロックＢＬの切り出しが開始される。次に、これら切り出しブロックＢＲと比較ブロックＢＬとを比較して差分絶対値和を算出する。以降、比較ブロックＢＬが上記設定された移動範囲ＭＬ内のみから切り出され、その比較ブロックＢＬと切り出しブロックＢＲとの比較により差分絶対値和が算出される。そして、上記移動範囲ＭＬ内で算出された多数の差分絶対値和から当該切り出しブロックＢＲに対するずれ量が算出される。このように、２行目以降の画素に対するずれ量算出処理では、比較ブロックＢＬの移動範囲ＭＬが絞られるため、左眼画像ＰＬから切り出される比較ブロックＢＬの数が少なくなり、ずれ量を算出するための演算量が小さくなる。これにより、ずれ量算出処理における全体の処理時間を短縮することができる。
【００４１】
次に、ずれ量算出処理部２４の内部構成例を説明する。
図２に示すように、ずれ量算出処理部２４は、メモリ５１と、レジスタ５２と、メモリ制御部５３と、差分絶対値和（ＳＡＤ）演算部５４と、比較器５５と、演算制御部５６とを有している。
【００４２】
メモリ５１には、撮像部１１Ｒから出力される画像データに対してプリプロセス部２１で各種補正処理が施された画像データ（右眼画像ＰＲ）が格納される。このとき、メモリ制御部３２によってメモリ５１内の右眼画像ＰＲを格納するための第１格納領域のアドレスが指定されることで、第１格納領域に右眼画像ＰＲが格納される。また、メモリ５１には、撮像部１１Ｌから出力される画像データに対してプリプロセス部２１で各種補正処理が施された画像データ（左眼画像ＰＬ）が格納される。このとき、メモリ制御部３２によってメモリ５１内の左眼画像ＰＬを格納するための第２格納領域のアドレスが指定されることで、第２格納領域に左眼画像ＰＬが格納される。なお、図２では、プリプロセス部２１から直接メモリ５１に、右眼画像ＰＲ及び左眼画像ＰＬが入力されるようにしたが、これに限らず、メモリ４２に格納された右眼画像ＰＲ及び左眼画像ＰＬを読み出してメモリ５１に入力するようにしてもよい。また、図２では、メモリ５１がずれ量算出処理部２４に内蔵されるようにしたが、メモリ５１を省略して、ずれ量算出処理部２４の外部に設けられたメモリ４２をメモリ５１の代わりに用いるようにしてもよい。
【００４３】
レジスタ５２には、撮影された右眼画像ＰＲ及び左眼画像ＰＬの画像サイズ、切り出しブロックＢＲ及び比較ブロックＢＬのブロックサイズ、処理領域Ａ１のサイズや極小点の差分絶対値和と比較される判定レベルＴ１等の各種パラメータが格納される。上記ＣＰＵ３０（図１参照）からの制御信号に基づいて、ずれ量算出処理の開始・停止を指令する信号がレジスタ５２から撮像部１１Ｒ，１１Ｌ、プリプロセス部２１及びメモリ制御部３２，５３に出力される。また、ＣＰＵ３０の制御信号に基づいて、右眼画像ＰＲ及び左眼画像ＰＬの画像サイズを示す信号がレジスタ５２からメモリ制御部５３に出力されるとともに、切り出しブロックＢＲ及び比較ブロックＢＬのブロックサイズ、及び処理領域Ａ１のサイズを示す信号がレジスタ５２からメモリ制御部５３に出力される。さらに、ＣＰＵ３０からの制御信号に基づいて、演算制御部５６で抽出される極小点の差分絶対値和と比較される判定レベルＴ１がレジスタ５２から演算制御部５６に出力される。
【００４４】
メモリ制御部５３は、レジスタ５２からの信号（切り出しブロックＢＲのブロックサイズ等を示す信号）に基づいて、メモリ５１に格納された右眼画像ＰＲの一部を切り出しブロックＢＲとして読み出すための読み出しアドレスをメモリ５１に出力する。また、メモリ制御部５３は、レジスタ５２からの信号（比較ブロックＢＬのブロックサイズや処理領域Ａ１のサイズ等を示す信号）に基づいてメモリ５１に格納された左眼画像ＰＬの一部を処理領域Ａ１内から比較ブロックＢＬとして読み出すための読み出しアドレスをメモリ５１に出力する。さらに、メモリ制御部５３は、演算制御部５６からのスキップ信号ＳＳ、具体的には処理領域Ａ１内の移動範囲ＭＬ（図５参照）以外の領域をスキップすることを指令するスキップ信号ＳＳに基づいて、メモリ５１に格納された左眼画像ＰＬの一部を上記移動範囲ＭＬから比較ブロックＢＬとして読み出すための読み出しアドレスをメモリ５１に出力する。これら読み出しアドレスに基づいて、メモリ５１から右眼画像ＰＲの切り出しブロックＢＲ及び左眼画像ＰＬの比較ブロックＢＬがＳＡＤ演算部５４に出力される。
【００４５】
メモリ制御部５３は、上記読み出しアドレスを比較器５５及び演算制御部５６にも出力する。また、メモリ制御部５３は、比較ブロックＢＬが処理領域Ａ１内での移動が終了したことを示す終了信号ＥＳを比較器５５及び演算制御部５６に出力する。さらに、メモリ制御部５３は、演算対象の切り出しブロックＢＲの基準画素（ここでは、左上画素）の右眼画像ＰＲ内における座標を示すアドレスをメモリ４２に出力する。
【００４６】
ＳＡＤ演算部５４は、メモリ５１から読み出された右眼画像ＰＲの切り出しブロックＢＲ及び左眼画像ＰＬの比較ブロックＢＬを比較し、両ブロックＢＲ，ＢＬ内の各画素の輝度差の絶対値和（差分絶対値和）を算出する。ＳＡＤ演算部５４は、算出した差分絶対値和を比較器５５及び演算制御部５６に出力する。
【００４７】
比較器５５は、ＳＡＤ演算部５４から入力する差分絶対値和を内蔵メモリ５５ａに格納する。この比較器５５は、内蔵メモリ５５ａに格納された複数の差分絶対値和を各切り出しブロックＢＲ毎に比較し、各切り出しブロックＢＲに対する差分絶対値和の最小値を求める。そして、比較器５５は、算出した最小値に対応する比較ブロックＢＬの垂直位置と演算対象の切り出しブロックＢＲの垂直位置とに基づいて、当該切り出しブロックＢＲに対するずれ量を算出し、そのずれ量をメモリ４２に出力する。
【００４８】
演算制御部５６は、当該ずれ量算出処理部２４を統括的に制御し、図６〜図８に示すフローチャートの処理を実行する。この演算制御部５６は、ＳＡＤ演算部５４から入力する差分絶対値和を内蔵メモリ５６ａに格納する。演算制御部５６は、内蔵メモリ５６ａに格納された複数の差分絶対値和を切り出しブロックＢＲ毎に比較し、各切り出しブロックに対する差分絶対値和の極小点を求める。演算制御部５６は、求めた極小点における差分絶対値和とレジスタ５２から入力される判定レベルＴ１とを比較し、判定レベルＴ１よりも低い極小点を抽出する。演算制御部５６は、抽出した極小点を内蔵メモリ５６ａに順次格納する。演算制御部５６は、その格納された極小点に基づいて、極小点が密集する密集領域（ずれ位置領域）を抽出し、その密集領域に基づいて比較ブロックＢＬの移動範囲ＭＬ（図５参照）を設定する。そして、演算制御部５６は、設定した移動範囲ＭＬに基づいて、その移動範囲ＭＬ以外の処理領域Ａ１内の範囲から比較ブロックＢＬが切り出されないように上記スキップ信号ＳＳを生成し、そのスキップ信号ＳＳをメモリ制御部５３に出力する。なお、このスキップ信号ＳＳは、比較ブロックＢＬを切り出すためのアドレスをスキップさせることを指令するスキップパルスと、スキップ後のアドレス（読み出しアドレス）を示すスキップアドレスとを含んでいる。また、上記内蔵メモリ５６ａに格納された極小点は、右眼画像ＰＲの各行のずれ量算出処理が終了される毎にリセットされる。
【００４９】
なお、ずれ量算出処理部２４は画像処理装置の一例、メモリ５１は入力手段の一例、メモリ制御部５３は第１切り出し手段及び第２切り出し手段の一例、ＳＡＤ演算部５４は相関値算出手段の一例、比較器５５はずれ量算出手段の一例である。演算制御部５６は、設定手段、抽出手段、第１制御手段及び第２制御手段の一例である。また、右眼画像ＰＲは第１画像の一例、左眼画像ＰＬは第２画像の一例、切り出しブロックＢＲは第１ブロックの一例、比較ブロックＢＬは第２ブロックの一例である。
【００５０】
次に、ずれ量算出処理部２４（とくに、演算制御部５６）の動作、つまりずれ量算出処理方法を図６〜図２１に従って説明する。ここでは、撮像部１１Ｒ，１１Ｌによって図９（ａ）に示すような風景を撮影し、つまり異なる位置から同一の風景を撮影し、図９（ｂ）に示す左眼画像ＰＬと右眼画像ＰＲとが得られた場合を例に挙げて説明する。なお、撮影された２つの木は撮影位置から遠く離れた位置に存在する一方、車は撮影位置に近い位置に存在するものとする。
【００５１】
まず、図６に示すステップＳ１において、メモリ制御部５３及び演算制御部５６によって各種パラメータが初期化される。具体的には、図１０に示す切り出しブロックＢＲ及び比較ブロックＢＬの左上画素の垂直位置Ｖｐと、切り出しブロックＢＲの左上画素の水平位置ＨｐＲと、比較ブロックＢＬの左上画素の水平位置ＨｐＬとが０（ゼロ）に設定される。また、切り出しブロックＢＲと比較される比較ブロックＢＬの処理領域Ａ１内における水平方向の移動範囲ＭＬが処理領域Ａ１の全ての領域に設定される。つまり、比較ブロックＢＬが処理領域Ａ１の全水平領域を移動されて切り出されるように設定される。ここで、切り出しブロックＢＲ及び比較ブロックＢＬの垂直ブロックサイズをＢＶｓと示し、水平ブロックサイズをＢＨｓと示す。また、１つの切り出しブロックＢＲに対する差分絶対値和の最小値及びずれ量を算出するための処理領域Ａ１の垂直ブロックサイズをＢＶｓと示し、水平ブロックサイズをＡＨｓと示す。このため、全ての領域に設定された移動範囲ＭＬは、図１１（ａ）に示すように、処理領域Ａ１の左端を始点とし、処理領域Ａ１の水平ブロックサイズＡＨｓから比較ブロックＢＬの水平ブロックサイズＢＨｓを減算したサイズの領域に設定される。さらに、ステップＳ１の初期化では、切り出しブロックＢＲの右眼画像ＰＲ内における水平方向の移動領域ＭＲが右眼画像ＰＲの全ての領域に設定される。つまり、切り出しブロックＢＲが右眼画像ＰＲの全水平領域を移動されて切り出されるように設定される。ここで、左眼画像ＰＬ及び右眼画像ＰＲの垂直サイズをＶｓと示し、垂直サイズをＨｓと示す。このため、全ての領域に設定された移動領域ＭＲは、右眼画像ＰＲの左端（１列目）を始点とし、右眼画像ＰＲの水平サイズＨｓから切り出しブロックＢＲの水平ブロックサイズＢＨｓを減算したサイズの領域に設定される。
【００５２】
また、本例では、切り出しブロックＢＲ及び比較ブロックＢＬのブロックサイズＢＶｓ×ＢＨｓは５画素×５画素に設定され、処理領域Ａ１のサイズＢＶｓ×ＡＨｓは５画素×１４画素に設定されている。
【００５３】
次に、図６に示すステップＳ２において、上記設定された座標（Ｖｐ，ＨｐＲ）が切り出しブロックＢＲの左上に設定され、ブロックサイズが設定サイズ（ＢＶｓ×ＢＨｓ）に設定された切り出しブロックＢＲがメモリ５１に格納された右眼画像ＰＲから切り出される（読み出される）。すなわち、ここでは、図１１（ａ）に示すように、左上画素の座標が上記設定された座標（Ｖｐ，ＨｐＲ）、つまり座標（０，０）に設定され、ブロックサイズが設定サイズ（ＢＶｓ×ＢＨｓ）に設定された切り出しブロックＢＲが右眼画像ＰＲから切り出される。
【００５４】
続いて、図６に示すステップＳ３において、上記設定された座標（Ｖｐ，ＨｐＬ）が比較ブロックＢＬの左上に設定され、ブロックサイズが設定サイズ（ＢＶｓ×ＢＨｓ）に設定された比較ブロックＢＬがメモリ５１に格納された左眼画像ＰＬから切り出される（読み出される）。すなわち、ここでは、図１１（ａ）に示すように、左上画素の座標が上記設定された座標（Ｖｐ，ＨｐＬ）、つまり座標（０，０）に設定され、ブロックサイズが設定サイズ（ＢＶｓ×ＢＨｓ）に設定された比較ブロックＢＬが左眼画像ＰＬから切り出される（図６のステップＳ３）。
【００５５】
次に、ＳＡＤ演算部５４は、切り出された切り出しブロックＢＲ及び比較ブロックＢＬに基づいてＳＡＤ演算を行って差分絶対値和を算出する（図６のステップＳ４）。続いて、ＳＡＤ演算部５４は、算出した差分絶対値和を比較器５５及び演算制御部５６に出力する（ステップＳ５）。次いで、比較器５５では上記差分絶対値和が内蔵メモリ５５ａに格納され、演算制御部５６では上記差分絶対値和が内蔵メモリ５６ａに格納される（ステップＳ６）。
【００５６】
次に、メモリ制御部５３は、処理領域Ａ１内での比較ブロックＢＬの移動が終了したか否かを判定する（ステップＳ７）。具体的には、比較ブロックＢＬの左上画素の水平位置ＨｐＬが、処理領域Ａ１の右上画素の水平位置から比較ブロックＢＬの水平ブロックサイズＢＨｓを減算した値に一致したときに、比較ブロックＢＬの処理領域Ａ１内での移動が終了したと判定される。なお、処理領域Ａ１の右上画素の水平位置は、処理領域Ａ１の左上画素の水平位置に当該処理領域Ａ１の水平ブロックサイズＡＨｓを加算することによって算出することができる。
【００５７】
上記ステップＳ７において、比較ブロックＢＬの移動が終了していないと判定されると（ステップＳ７でＮＯ）、比較ブロックＢＬの移動範囲ＭＬが全ての領域に設定されているか否かが判定される（ステップＳ８）。ここでは、上記ステップＳ１の初期化で上記移動範囲ＭＬが全ての領域に設定されているため（ステップＳ８でＹＥＳ）、比較ブロックＢＬの左上画素の水平位置ＨｐＬに１が加算され（ステップＳ９）、ステップＳ３に戻る。すなわち、図１１（ｂ）に示すように、比較ブロックＢＬの切り出し位置が処理領域Ａ１（の移動範囲ＭＬ）内で水平方向に１画素シフトされ、そのシフトされた位置から比較ブロックＢＬが切り出される（ステップＳ３）。そして、上述と同様に、切り出しブロックＢＲと比較ブロックＢＬとに基づいて差分絶対値和が算出され（ステップＳ４）、その差分絶対値和が比較器５５の内蔵メモリ５５ａ及び演算制御部５６の内蔵メモリ５６ａに格納される（ステップＳ５，Ｓ６）。なお、上記ステップＳ８において、比較ブロックＢＬの移動範囲ＭＬが一部の領域に設定されていると判定された場合には（ステップＳ８でＮＯ）、ステップＳ１０の処理が実行された後にステップＳ３に戻る。
【００５８】
以後、処理領域Ａ１内での比較ブロックＢＬの移動が終了するまでステップＳ３〜Ｓ９の処理が繰り返し実行される。これにより、比較ブロックＢＬが処理領域Ａ１内で水平方向に１画素シフトされる毎に差分絶対値和が算出されることになる。そして、図１１（ｃ）に示すように、比較ブロックＢＬが処理領域Ａ１の終端まで移動され、その時の差分絶対値和が算出されると、処理領域Ａ１内での比較ブロックＢＬの移動が終了したと判定される（ステップＳ７でＹＥＳ）。このとき、図１１（ｃ）に示すように、比較ブロックＢＬの右上画素が処理領域Ａ１の右上画素に一致し、比較ブロックＢＬの左上画素が処理領域Ａ１の右上画素の水平位置から比較ブロックＢＬの水平ブロックサイズＢＨｓを減算した値に一致する。また、メモリ制御部５３からは終了信号ＥＳが比較器５５と演算制御部５６に出力される。
【００５９】
次に、図６に示すステップＳ１１において、比較器５５は、内蔵メモリ５５ａに格納された多数の差分絶対値和を比較し、差分絶対値和の最小値を算出する。このように差分絶対値和が最小値となったときの比較ブロックＢＬの移動量が、演算対象の切り出しブロックＢＲに対する右眼画像ＰＲ及び左眼画像ＰＬのずれ量として算出される。そして、比較器５５は、算出したずれ量をメモリ４２に出力する。
【００６０】
続いて、ステップＳ１２において、演算制御部５６は、内蔵メモリ５６ａに格納された各切り出しブロックＢＲに対応する多数の差分絶対値和から１つ又は複数の極小点を算出する。例えば図１１（ｄ）に示すように、切り出しブロックＢＲと比較ブロックＢＬとのずれ位置（比較ブロックＢＬの移動量）を横軸に取り、差分絶対値和の大きさを縦軸に取ったグラフ上に上記多数の差分絶対値和をプロットし、各プロット点を曲線で結び、この曲線に基づいて差分絶対値和の極小点を算出する。そして、演算制御部５６は、算出した極小点の差分絶対値和の大きさとレジスタ５２から入力される判定レベルＴ１とを比較し、その判定レベルＴ１よりも低くなる差分絶対値和の極小点を抽出する。このように抽出された極小点における差分絶対値和及びずれ位置は内蔵メモリ５６ａに格納される。
【００６１】
次に、図７に示すステップＳ１３において、メモリ制御部５３は、右眼画像ＰＲ内での切り出しブロックＢＲの水平方向への移動が終了したか否かを判定する。具体的には、切り出しブロックＢＲの左上画素の水平位置ＨｐＬが、右眼画像ＰＲの水平サイズＨｓから切り出しブロックＢＲの水平ブロックサイズＢＨｓを減算した値に一致したときに、切り出しブロックＢＲの水平方向への移動が終了したと判定される。ここでは、切り出しブロックＢＲの水平方向への移動が未だ終了していないため（ステップＳ１３でＮＯ）、ステップＳ１４において、切り出しブロックＢＲの移動領域ＭＲが全ての領域に設定されているか否かが判定される。このとき、上記ステップＳ１の初期化で上記移動領域ＭＲが全ての領域に設定されているため（ステップＳ１４でＹＥＳ）、切り出しブロックＢＲの左上画素の水平位置ＨｐＲに１が加算される（ステップＳ１５）。その後、ステップＳ１６に移る。なお、上記ステップＳ１４において、切り出しブロックＢＲの移動領域ＭＲが一部の領域に設定されていると判定された場合には（ステップＳ１４でＮＯ）、ステップＳ１７の処理が実行された後にステップＳ１６に移る。
【００６２】
続いて、ステップＳ１６において、比較ブロックＢＬの移動範囲ＭＬが全ての領域に設定されているか否かが判定される。ここでは、上記ステップＳ１の初期化で上記移動範囲ＭＬが全ての領域に設定されている（ステップＳ１６でＹＥＳ）。このため、続くステップＳ１８において、比較ブロックＢＬの左上画素の水平位置ＨｐＬが、切り出しブロックＢＲの左上画素の水平位置ＨｐＲと等しくなるように変更される（ＨｐＬ＝ＨｐＲ）。その後、ステップＳ２に戻る。なお、上記ステップＳ１６において、比較ブロックＢＬの移動範囲ＭＬが一部の領域に設定されていると判定された場合には（ステップＳ１６でＮＯ）、ステップＳ１９の処理が実行された後にステップＳ２に戻る。
【００６３】
次いで、ステップＳ２において、図１２（ａ）に示すように、切り出しブロックＢＲが水平方向に１画素シフトされた位置から切り出される。続いて、左上画素の座標が上記設定された座標（０，１）に設定された比較ブロックＢＬが左眼画像ＰＬから切り出される（ステップＳ３）。そして、切り出しブロックＢＲと比較ブロックＢＬとに基づいて差分絶対値和が算出され（ステップＳ４）、その差分絶対値和が比較器５５の内蔵メモリ５５ａ及び演算制御部５６の内蔵メモリ５６ａに格納される（ステップＳ５，Ｓ６）。
【００６４】
以後、図１１で説明したのと同様に、処理領域Ａ１内での比較ブロックＢＬの移動が終了するまでステップＳ３〜Ｓ９の処理が繰り返し実行される。そして、処理領域Ａ１内での比較ブロックＢＬの移動が終了すると（ステップＳ７でＹＥＳ）、ずれ量が算出され（ステップＳ１１）、差分絶対値和の極小点が抽出される（ステップＳ１２）。
【００６５】
その後も同様に、一行目の画素に対応する切り出しブロックＢＲのずれ量算出処理が実行される、つまりステップＳ２〜Ｓ１９の処理が繰り返し実行される。
ここで、図１２（ｂ）に示すように、左上画素の座標が座標（０，１１）に設定された切り出しブロックＢＲを切り出した場合のずれ量算出処理について説明する。この切り出しブロックＢＲには、被写体（木）が含まれている。
【００６６】
まず、図１２（ｂ）に示すように、左上画素の座標が座標（０，１１）に設定された比較ブロックＢＬが左眼画像ＰＬから切り出される（ステップＳ３）。続いて、切り出しブロックＢＲと比較ブロックＢＬとに基づいて差分絶対値和が算出され（ステップＳ４）、その差分絶対値和が内蔵メモリ５５ａ，５６ａに格納される（ステップＳ５，Ｓ６）。
【００６７】
次に、処理領域Ａ１内で水平方向に１画素移動された位置から比較ブロックＢＬが切り出され、その比較ブロックＢＬと切り出しブロックＢＲとに基づいて差分絶対値和が算出され、その差分絶対値和が内蔵メモリ５５ａ，５６ａに格納される（ステップＳ５，Ｓ６）。
【００６８】
続いて、図１２（ｃ）に示すように、処理領域Ａ１内で水平方向に１画素移動された位置から比較ブロックＢＬが切り出される。このときの切り出しブロックＢＲと比較ブロックＢＬとを比較すると、図示のように、切り出しブロックＢＲ内の画像と比較ブロックＢＬ内の画像とが略一致する。すなわち、このときの比較ブロックＢＬは切り出しブロックＢＲと酷似し、この比較ブロックＢＬが切り出しブロックＢＲに対応する左眼画像ＰＬの領域であると言える。このような切り出しブロックＢＲと比較ブロックＢＬとに基づいて差分絶対値和が算出されると、その差分絶対値和は０（ゼロ）に近い値となり、その差分絶対値和が上記最小値となる。このため、このときの比較ブロックＢＬと切り出しブロックＢＲとのずれ位置、つまり処理領域Ａ１の始点（左上画素）からの比較ブロックＢＬの移動量が右眼画像ＰＲ及び左眼画像ＰＬのずれ量となる。したがって、この場合のずれ量は２画素となる。なお、差分絶対値和の最小値は、実際には、図１３（ａ）に示すように比較ブロックＢＬの処理領域Ａ１内での移動を終了した後に算出される。
【００６９】
以後も同様に、切り出しブロックＢＲの右眼画像ＰＲ内での水平方向の移動が終了するまでステップＳ２〜Ｓ１９の処理が繰り返し実行される。そして、図１３（ｂ）に示すように、切り出しブロックＢＲが右眼画像ＰＲの終端まで移動された後、その時の切り出しブロックＢＲに対するずれ量が算出され、その切り出しブロックＢＲに対する差分絶対値和の極小点が抽出されると、切り出しブロックＢＲの右眼画像ＰＲ内での水平方向の移動が終了したと判定される（ステップＳ１３でＹＥＳ）。このような一連の処理により、右眼画像ＰＲ内で水平方向に１画素ずつシフトされた各切り出しブロックＢＲ、つまり一行目の各画素に対応する各切り出しブロックＢＲに対するずれ量が算出される。さらに、図１３（ｃ）に示すように、一行目の各画素に対応する各切り出しブロックＢＲに対する差分絶対値和の極小点が抽出される（丸印参照）。
【００７０】
次に、図８に示すステップＳ２０において、メモリ制御部５３は、右眼画像ＰＲ内での切り出しブロックＢＲの垂直方向への移動が終了したか否かを判定する。具体的には、切り出しブロックＢＲの左上画素の垂直位置Ｖｐが、右眼画像ＰＲの垂直サイズＶｓから切り出しブロックＢＲの垂直ブロックサイズＢＶｓを減算した値に一致したときに、切り出しブロックＢＲの垂直方向への移動が終了したと判定される。ここでは、切り出しブロックＢＲの垂直方向への移動が未だ終了していないため（ステップＳ２０でＮＯ）、ステップＳ２１に移る。
【００７１】
続いて、直前の垂直位置Ｖｐ（ここでは、Ｖｐ＝０）の全水平領域における切り出しブロックＢＲ、つまり一行目の全画素に対応する全ての切り出しブロックＢＲに対する演算結果（ずれ量）に基づいて、次に切り出しブロックＢＲを切り出す垂直位置Ｖｐを決定する。具体的には、ステップＳ２１において、演算制御部５６は、直前の垂直位置Ｖｐにおける全ての切り出しブロックＢＲに対するずれ量が０であるか否かを判定する。ここでは、上述したようにずれ量が２となる切り出しブロックＢＲが存在するため（ステップＳ２１でＮＯ）、ステップＳ２２に移る。このステップＳ２２において、切り出しブロックＢＲの左上画素の垂直位置Ｖｐに１が加算される。
【００７２】
一方、上記ステップＳ２１において、直前の垂直位置Ｖｐ（＝０）における全ての切り出しブロックＢＲに対するずれ量が０であると判定された場合には（ステップＳ２１でＹＥＳ）、演算制御部５６によって、切り出しブロックＢＲの左上画素の垂直位置Ｖｐに切り出しブロックＢＲの垂直ブロックサイズＢＶｓが加算される（ステップＳ２３）。例えば図１５（ａ）、（ｂ）に示すように、右眼画像ＰＲａにおいて切り出しブロックＢＲａが水平方向に移動した全領域（ブロック範囲）において視差のある被写体が含まれておらず、左眼画像ＰＬａの比較ブロックＢＬａが移動される処理領域Ａ１ａの全領域において視差のある被写体が含まれていないと想定する。この場合には、図１５（ｃ）に示すように、Ｍ行目（図１５では一行目）の全水平領域における切り出しブロックＢＲに対するずれ量が０になる可能性が高い。換言すると、Ｍ行目の全ての切り出しブロックＢＲに対するずれ量が０である場合には、それらのブロックが移動したブロック範囲（図１５（ｂ）のハッチング領域）には視差のある被写体が含まれていない可能性が高いため、このブロック範囲内の画素に対するずれ量算出処理が不要であると判断することができる。そこで、図１５（ｄ）に示すように、切り出しブロックＢＲａの左上画素の垂直位置Ｖｐが垂直ブロックサイズＢＶｓ分シフトされ、上記ブロック範囲内の画素に対するずれ量算出処理がスキップされる。なお、この場合には、切り出しブロックＢＲａの移動領域ＭＲが全水平領域に設定され、比較ブロックＢＬａの移動範囲ＭＬが全水平領域に設定された上で、以下に説明するステップＳ２４，Ｓ２５の処理をスキップしてステップＳ２６に移る（図８では図示略）。
【００７３】
次に、これまでの演算結果（ずれ量及び極小点）に基づいて、処理領域Ａ１内での比較ブロックＢＬの移動範囲ＭＬ及び右眼画像ＰＲ内での切り出しブロックＢＲの水平方向の移動領域ＭＲが設定される。まず、ステップＳ２４では、直前の垂直位置Ｖｐ（ここでは、Ｖｐ＝０）におけるずれ量算出処理において、判定レベルＴ１よりも低い極小点が１つ以上抽出されか否かが判定される。本例では、図１１（ｄ）や図１３（ｃ）に示すように、判定レベルＴ１よりも低い極小点が１つ以上抽出されているため（ステップＳ２４でＹＥＳ）、ステップＳ２５に移る。
【００７４】
続いて、ステップＳ２５において、演算制御部５６は、直前の垂直位置Ｖｐ（Ｎ行目）で算出された演算結果（極小点）に基づいて、次の垂直位置（Ｎ＋１行目）の画素に対するずれ量算出処理の際の移動範囲ＭＬ及び移動領域ＭＲを絞るように設定する。このように設定するのは、同じ被写体（ここでは、木）であれば、垂直位置が移動しても水平方向のずれ量はほとんど変わらないと考えられ、Ｎ行目のずれ量算出処理で抽出された極小点におけるずれ位置付近に、Ｎ＋１行目の画素に対する差分絶対値和の最小値が現れると考えられるためである。以下に、移動範囲ＭＬ及び移動領域ＭＲの設定方法について詳述する。
【００７５】
まず、演算制御部５６は、直前の垂直位置Ｖｐ（＝０）における全切り出しブロックＢＲに対するずれ量算出処理で抽出された差分絶対値和の極小点を、図１４（ａ）に示すように、ずれ位置を横軸に取ったグラフ上にプロットする。このグラフ（極小点のずれ位置）に基づいて、次の垂直位置Ｖｐ（ここでは、Ｖｐ＝１）における比較ブロックＢＬの移動範囲ＭＬが設定される。
【００７６】
具体的には、演算制御部５６は、上記グラフ上にプロットされた極小点に基づいて、極小点が密集した密集領域（丸枠参照）を抽出する。続いて、演算制御部５６は、上記抽出した密集領域内の極小点におけるずれ位置に基づいて、比較ブロックＢＬの移動範囲ＭＬを設定する。
【００７７】
より具体的には、演算制御部５６は、密集領域内の極小点に対応するずれ位置の平均値を算出する。例えば密集領域内において、ずれ位置が０画素の極小点が１つ、ずれ位置が１画素の極小点が２つ、ずれ位置が２画素の極小点が１つ、ずれ位置が３画素の極小点が１つ、ずれ位置が４画素の極小点が１つ存在する場合のずれ位置の平均値は、（０＋１＋２＋３＋４）／５＝２画素となる。次に、演算制御部５６は、そのずれ位置の平均値を中心に、前後Ｘ画素間の領域のみを比較ブロックＢＬの移動範囲ＭＬに設定する。ここで、上記Ｘ画素は、例えば密集領域内における極小点のずれ位置のばらつきが小さいほど少ない画素数に設定される。すなわち、上記ばらつきが小さいほど比較ブロックＢＬの移動範囲が狭く設定される。また、このとき、密集領域内の極小点が全て含まれるように比較ブロックＢＬの移動範囲ＭＬが設定される。ここでは、処理領域Ａ１内において、ずれ位置が０〜４画素の領域が比較ブロックＢＬの移動範囲ＭＬに設定される。
【００７８】
なお、密集領域であるか否かを判断する基準は適宜設定可能であるが、例えばずれ位置のＹ（Ｙは１以上の整数）画素間にＺ（Ｚは１以上の整数）個以上の極小点が存在する領域を密集領域であると設定することができる。例えばＹ画素が２画素で、Ｚ個が４個である場合には、ずれ位置が０〜２画素の間の領域に極小点が４個以上存在する場合にその領域が密集領域であると設定される。また、Ｙ画素やＺ個は、画像サイズ、切り出しブロックＢＲのサイズや処理領域Ａ１のサイズなどに応じて適宜設定される。
【００７９】
また、ステップＳ２５では、上記グラフに基づいて、次の垂直位置Ｖｐにおける切り出しブロックＢＲの水平方向の移動領域ＭＲが設定される。具体的には、まず、演算制御部５６は、ずれ位置が０画素付近となる極小点を抽出し、その極小点に対応する切り出しブロックＢＲを抽出する。本例では、ずれ位置が０画素である極小点に対応する切り出しブロックＢＲとして、図１４（ｂ）に示すように、水平位置ＨｐＲが１〜６の６つの切り出しブロックＢＲが抽出される。次に、演算制御部５６は、この抽出された切り出しブロックＢＲにおける水平位置（行方向の位置）を移動領域ＭＲから除外する。すなわち、演算制御部５６は、次の垂直位置Ｖｐ（＝１）におけるずれ量算出処理において、上記抽出された水平位置から切り出しブロックＢＲの切り出しを行わないように制御する。本例では、図１４（ｃ）に示すように、水平位置ＨｐＲが１〜１０の領域が移動領域ＭＲから除外されるため、移動領域ＭＲは、水平位置ＨｐＲが０の領域及び１１〜Ｈｓ−ＢＨｓの領域に設定される。このように移動領域ＭＲから除外するのは、極小点におけるずれ位置が０画素ということは両眼視差がないということであり、当該撮像装置１から遠く離れた位置の映像である可能性が高いためである。
【００８０】
このように本例では、図８に示すステップＳ２５において、比較ブロックＢＬの移動範囲ＭＬが一部の領域に設定され、切り出しブロックＢＲの移動領域ＭＲが一部の領域に設定される。
【００８１】
次に、切り出しブロックＢＲの移動領域ＭＲが全ての領域に設定されているか、又は一部の領域に設定されているかが判定される（ステップＳ２６）。ここでは、切り出しブロックＢＲの移動領域ＭＲが一部の領域に設定されているため（ステップＳ２６でＮＯ）、切り出しブロックＢＲの左上画素の水平位置ＨｐＲが上記設定された移動領域ＭＲの最初の水平位置（本例では、０）に設定される（ステップＳ２７）。なお、上記ステップＳ２６において、切り出しブロックＢＲの移動領域ＭＲが全ての領域に設定されていると判定された場合には（ステップＳ２６でＹＥＳ）、切り出しブロックＢＲの左上画素の水平位置ＨｐＲが常に０に設定される（ステップＳ２８）。
【００８２】
続いて、比較ブロックＢＬの移動範囲ＭＬが全ての領域に設定されているか、又は一部の領域に設定されているかが判定される（ステップＳ２９）。ここでは、比較ブロックＢＬの移動範囲ＭＬが一部の領域に設定されているため（ステップＳ２９でＮＯ）、比較ブロックＢＬの左上画素の水平位置ＨｐＬが上記設定された移動範囲ＭＬの最初のずれ位置に対応する処理領域Ａ１内の水平位置（本例では、０）に設定される（ステップＳ３０）。なお、上記ステップＳ２９において、比較ブロックＢＬの移動範囲ＭＬが全ての領域に設定されていると判定された場合には（ステップＳ２９でＹＥＳ）、比較ブロックＢＬの左上画素の水平位置ＨｐＬが常に０に設定される（ステップＳ３１）。これらステップＳ３０，Ｓ３１の処理後、ステップＳ２に戻って、垂直位置Ｖｐ＝１の画素に対するずれ量算出処理が開始される。
【００８３】
次に、ステップＳ２において、図１６（ａ）に示すように、左上画素の座標が座標（１，０）に設定された切り出しブロックＢＲが右眼画像ＰＲから切り出される。続いて、左上画素の座標が座標（１，０）に設定された比較ブロックＢＬが左眼画像ＰＬから切り出される（ステップＳ３）。そして、これら切り出しブロックＢＲと比較ブロックＢＬとに基づいて差分絶対値和が算出され（ステップＳ４）、その差分絶対値和が内蔵メモリ５５ａ，５６ａに格納される（ステップＳ５，Ｓ６）。
【００８４】
次に、処理領域Ａ１内での比較ブロックＢＬの移動が未終了で（ステップＳ７でＮＯ）、比較ブロックＢＬの移動範囲ＭＬが一部の領域に設定されているため（ステップＳ８でＮＯ）、ステップＳ１０に移る。このステップＳ１０では、比較ブロックＢＬの左上画素の水平位置ＨｐＬが、上記ステップＳ２５で設定された移動範囲ＭＬの次の水平位置（ここでは、１）に設定される。このとき、上記水平位置ＨｐＬのアドレスをスキップ（例えば、０から５にスキップ）させる場合には、そのスキップを指令するスキップパルス信号と、スキップ後の水平位置の画素が格納されたメモリ５１のアドレスを示すスキップアドレス信号とを含むスキップ信号ＳＳが演算制御部５６からメモリ制御部５３に出力される。
【００８５】
以後、処理領域Ａ１の移動範囲ＭＬ内での比較ブロックＢＬの移動が終了するまでステップＳ３〜Ｓ１０の処理が繰り返し実行される。そして、図１６（ｂ）に示すように、左上画素が座標（１，４）に設定された比較ブロックＢＬが切り出され、その比較ブロックＢＬと上記切り出しブロックＢＲとに基づく差分絶対値和が内蔵メモリ５５ａ，５６ａに格納されると、ステップＳ１０に移る。このステップＳ１０において、移動範囲ＭＬの次の水平位置がない場合、つまり比較ブロックＢＬの移動範囲ＭＬ内での移動が終了した場合には、ステップＳ１１に移る（図示略）。続いて、上記ステップＳ１１において切り出しブロックＢＲに対するずれ量が算出され、ステップＳ１２において切り出しブロックＢＲに対する差分絶対値和の極小点が抽出される。具体的には、ずれ位置（移動量）が０〜４画素の比較ブロックＢＬとの比較演算によって算出された差分絶対値和に基づいて、切り出しブロックＢＲに対するずれ量が算出され、判定レベルＴ１よりも低い極小点が抽出される。
【００８６】
このように、垂直位置Ｖｐ＝１におけるずれ量算出処理では、処理領域Ａ１内の移動範囲ＭＬ以外の領域（本例では、ずれ位置＝５以降の領域）からは比較ブロックＢＬの切り出しが省略され、差分絶対値和の算出が省略される。
【００８７】
次いで、切り出しブロックＢＲの右眼画像ＰＲ内における水平方向の移動が未終了で（ステップＳ１３でＮＯ）、切り出しブロックＢＲの移動領域ＭＲが一部の領域に設定されているため（ステップＳ１４でＮＯ）、ステップＳ１７に移る。このステップＳ１７では、切り出しブロックＢＲの左上画素の水平位置ＨｐＲが、上記ステップＳ２５で設定された移動領域ＭＲの次の水平位置に設定される。本例では、図１６（ｂ）に示すように、右眼画像ＰＲにおける水平位置＝１から水平位置＝１０までが移動領域ＭＲから除外されているため、切り出しブロックＢＲの左上画素の水平位置ＨｐＲが１１に設定される。このとき、上記水平位置ＨｐＲを０から１１にスキップさせるために、そのスキップを指令するスキップパルス信号と、スキップ後の水平位置の画素が格納されたメモリ５１のアドレスを示すスキップアドレス信号とを含むスキップ信号ＳＳが演算制御部５６からメモリ制御部５３に出力される。
【００８８】
次に、比較ブロックＢＬの移動範囲ＭＬが一部の領域に設定されているため（ステップＳ１９でＮＯ）、比較ブロックＢＬの左上画素の水平位置ＨｐＬが、上記ステップＳ２５で設定された移動範囲ＭＬの最初のずれ位置（ここでは、０画素）に対応する処理領域Ａ１内の水平位置に設定される（ステップＳ１９）。このため、本例では、比較ブロックＢＬの左上画素の水平位置ＨｐＬが１１に設定される。その後、ステップＳ２に戻る。
【００８９】
次に、図１６（ｃ）に示すように、左上画素の座標が座標（１，１１）に設定された切り出しブロックＢＲが右眼画像ＰＲから切り出され、左上画素の座標が座標（１，１１）に設定された比較ブロックＢＬが左眼画像ＰＬから切り出される。続いて、これら切り出しブロックＢＲと比較ブロックＢＬとに基づいて差分絶対値和が算出され（ステップＳ４）、その差分絶対値和が内蔵メモリ５５ａ，５６ａに格納される（ステップＳ５，Ｓ６）。
【００９０】
次に、処理領域Ａ１に設定された移動範囲ＭＬ内で水平方向に１画素移動された位置から比較ブロックＢＬが切り出される。続いて、その比較ブロックＢＬと切り出しブロックＢＲとに基づいて差分絶対値和が算出され、その差分絶対値和が内蔵メモリ５５ａ，５６ａに格納される（ステップＳ５，Ｓ６）。
【００９１】
その後、図１６（ｄ）に示すように、処理領域Ａ１に設定された移動範囲ＭＬ内で水平方向に１画素移動された位置から比較ブロックＢＬが切り出される。その比較ブロックＢＬと上記切り出しブロックＢＲとを比較すると、図示のように、切り出しブロックＢＲ内の画像と比較ブロックＢＬ内の画像とが略一致する。すなわち、このときの比較ブロックＢＬは切り出しブロックＢＲと酷似し、この比較ブロックＢＬが切り出しブロックＢＲに対応する左眼画像ＰＬの領域であると言える。このような切り出しブロックＢＲと比較ブロックＢＬとに基づいて差分絶対値和が算出されると、その差分絶対値和は０に近い値となり、その差分絶対値和が上記最小値となる。このため、このときの比較ブロックＢＬにおける処理領域Ａ１の始点（左上画素）からの移動量が、演算対象の切り出しブロックＢＲに対するずれ量となる。したがって、この場合のずれ量は２画素となる。その後、比較ブロックＢＬの移動範囲ＭＬ内での移動が終了するまでステップＳ３〜Ｓ１０の処理が繰り返し実行される。
【００９２】
以後も同様に、移動領域ＭＲ内での切り出しブロックＢＲの水平方向の移動が終了するまでステップＳ２〜Ｓ１９の処理が繰り返し実行される。これにより、移動領域ＭＲから切り出された各切り出しブロックＢＲが移動範囲ＭＬから切り出された比較ブロックＢＬと比較され、各切り出しブロックＢＲに対するずれ量が算出される。そして、図１７に示すように、各切り出しブロックＢＲに対する差分絶対値和の極小点が抽出される。この垂直位置Ｖｐ＝１における全水平領域の演算結果（極小点）は、１つ前の垂直位置Ｖｐ＝０の際に現れていた被写体（木）とは別の被写体が現れていないため、１つ前の垂直位置Ｖｐ＝０と略同様の結果になる。したがって、比較ブロックＢＬの移動範囲ＭＬを１つ前の垂直位置Ｖｐ＝０における演算結果に基づいて絞っても、その絞った移動範囲ＭＬ内から切り出しブロックＢＲに対応するブロックを好適に探索することができ、切り出しブロックに対するずれ量を精度良く算出することができる。
【００９３】
次に、ずれ量が１画素以上となる切り出しブロックＢＲが存在するため（図８のステップＳ２１でＮＯ）、ステップＳ２２において、切り出しブロックＢＲの左上画素の垂直位置Ｖｐに１が加算される（Ｖｐ＝１＋１）。続いて、図１７に示すように判定レベルＴ１よりも低い極小点が１つ以上抽出されているため（ステップＳ２４でＹＥＳ）、ステップＳ２５に移る。このステップＳ２５では、比較ブロックＢＬの移動範囲ＭＬが、直前の垂直位置Ｖｐ＝１におけるずれ量算出処理で抽出された極小点に基づいて再設定される。例えば図１７に示すように、垂直位置Ｖｐ＝１における極小点のずれ位置の平均値が、垂直位置Ｖｐ＝０における極小点のずれ位置の平均値からずれている場合には、そのずれに合わせて比較ブロックＢＬの移動範囲ＭＬが変更される。本例では、垂直位置Ｖｐ＝１の演算結果では、密集領域における極小点のずれ位置のばらつきが大きくなるため、次の垂直位置Ｖｐ＝２における比較ブロックＢＬの移動範囲ＭＬが、ずれ位置が０〜４画素の領域から０〜５画素の領域に変更される。
【００９４】
ここで、例えば図１８（ａ）に示すように、垂直位置Ｖｐ＝Ｎ−１における演算結果では３つの密集領域が存在し、３つの移動範囲ＭＬが設定されていた場合を想定する。これに対し、図１８（ｂ）に示すように、垂直位置Ｖｐ＝Ｎにおける演算結果では、上記３つの移動範囲ＭＬのうち１つの移動範囲ＭＬ１において算出された差分絶対値和が全て判定レベルＴ１以上になったとする。この場合には、全ての差分絶対値和が判定レベルＴ１以上になった移動範囲ＭＬ１を、比較ブロックＢＬの移動範囲ＭＬから除外する。すなわち、次の垂直位置Ｖｐ＝Ｎ＋１のずれ量算出処理において、上記移動範囲ＭＬでは比較ブロックＢＬの切り出し及び差分絶対値和の算出を行わないようにする。
【００９５】
以後も同様に、前の垂直位置における演算結果を利用して移動範囲ＭＬ及び移動領域ＭＲが設定された上で、ずれ量算出処理が実行される。
次に、図１９（ａ）に示すように、直前の垂直位置において現れていた被写体（ここでは、木）とは異なる被写体（ここでは、車）が現れた場合について説明する。ここでは、切り出しブロックＢＲ及び比較ブロックＢＬの左上画素の垂直位置Ｖｐが６の場合を例に挙げて説明する。この場合にも、上述したのと同様に、直前の垂直位置Ｖｐ＝５における演算結果に基づいて設定された移動範囲ＭＬ（ここでは、ずれ位置が０〜３画素の領域）及び移動領域ＭＲ（ここでは、全水平領域）を利用して、ステップＳ２〜Ｓ１９の処理が実行される。
【００９６】
すなわち、まず、図１９（ａ）に示すように、左上画素が座標（６，０）に設定された切り出しブロックＢＲ及び比較ブロックＢＬが切り出され、両ブロックＢＲ，ＢＬに基づき差分絶対値和が算出される（ステップＳ２〜Ｓ４）。続いて、図１９（ｂ）に示すように、処理領域Ａ１の移動範囲ＭＬ内、具体的には座標（６，０）〜座標（６，３）から比較ブロックＢＬが順次切り出され、差分絶対値和が順次算出される。そして、それら複数の差分絶対値和から極小点が算出される。次に、図１９（ｃ）に示すように、切り出しブロックＢＲが右眼画像ＰＲ内で水平方向に１画素ずつ移動され、各切り出しブロックＢＲ毎に移動範囲ＭＬ内の比較ブロックＢＬと比較されて差分絶対値和の極小点が算出される。この差分絶対値和の極小点の算出が、切り出しブロックＢＲの右眼画像ＰＲ内での移動が終了するまで繰り返し実行される（ステップＳ２〜Ｓ１９）。なお、切り出しブロックＢＲの右眼画像ＰＲ内での移動が終了すると、切り出しブロックＢＲ及び比較ブロックＢＬの垂直位置Ｖｐに１が加算される（ステップＳ２０〜Ｓ２２）。
【００９７】
しかし、上述したずれ量算出処理で算出される極小点（差分絶対値和）は、図１９（ｄ）に示すように、全てが判定レベルＴ１よりも高くなってしまうため、判定レベルＴ１よりも低い極小点として抽出することができない。これは、全水平領域に別の被写体（車）が現れたため、すなわち直前の垂直位置で現れていた被写体（木）とは視差量（ずれ量）の異なる被写体（車）が現れたために、直前の垂直位置の演算結果からフィードバックされた移動範囲ＭＬを有効に利用できなくなり、ずれ量を正確に算出することができなくなったのである。
【００９８】
そこで、本実施形態では、前の垂直位置における演算結果を利用するとずれ量を正確に算出することができないと判断した場合には、その時に設定されている移動範囲ＭＬ及び移動領域ＭＲをクリアする。具体的には、算出された全ての極小点（差分絶対値和）が判定レベルＴ１を超えている場合、つまり判定レベルＴ１よりも低い極小点を１つも抽出できない場合には（図８のステップＳ２４でＮＯ）、ステップＳ３２に移る。このステップＳ３２において、演算制御部５６は、切り出しブロックＢＲ及び比較ブロックＢＬの左上画素の垂直位置Ｖｐから１を減算する。ここでは、上記ステップＳ２２において垂直位置Ｖｐ（＝６）に１が加算されることで垂直位置Ｖｐが７になっているため、その垂直位置Ｖｐ（＝７）から１を減算することで垂直位置Ｖｐを６に戻している。さらに、上記ステップＳ３２において、演算制御部５６は、移動範囲ＭＬ及び移動領域ＭＲを全ての領域に設定する。その後、切り出しブロックＢＲの左上画素の水平位置ＨｐＲが０に設定され（ステップＳ２８）、比較ブロックＢＬの左上画素の水平位置ＨｐＬが０に設定され（ステップＳ３１）、ステップＳ２に戻る。これにより、図２０（ａ）に示すように、移動範囲ＭＬ及び移動領域ＭＲが全水平領域に設定された上で、垂直位置Ｖｐ＝６の画素に対するずれ量算出処理が再度実行される、つまりステップＳ２〜Ｓ１９の処理が再度繰り返し実行される。
【００９９】
詳述すると、まず、左上画素が座標（６，０）に設定された切り出しブロックＢＲが右眼画像ＰＲから切り出され（ステップＳ２）、左上画素が座標（６，０）に設定された比較ブロックＢＬが左眼画像ＰＬから切り出される（ステップＳ３）。続いて、これら切り出しブロックＢＲ及び比較ブロックＢＬに基づいて差分絶対値和が算出され（ステップＳ４）、その差分絶対値和が内蔵メモリ５５ａ，５６ａに格納される（ステップＳ５，Ｓ６）。
【０１００】
続いて、処理領域Ａ１の全領域（移動範囲ＭＬ）内で水平方向に１画素ずつ移動された位置から比較ブロックＢＬが切り出される。そして、その切り出された各比較ブロックＢＬと切り出しブロックＢＲとに基づいて差分絶対値和が算出される。
【０１０１】
そして、図２０（ｂ）に示すように、処理領域Ａ１の始点から水平方向に７画素移動された位置から切り出された比較ブロックＢＬ、つまり左上画素が座標（６，７）に設定された比較ブロックＢＬと上記切り出しブロックＢＲが比較されると、切り出しブロックＢＲ内の画像と比較ブロックＢＬ内の画像とが略一致する。すなわち、このときの比較ブロックＢＬは切り出しブロックＢＲと酷似し、この比較ブロックＢＬが左眼画像ＰＬにおける切り出しブロックＢＲに対応する領域であると言える。したがって、この演算対象の切り出しブロックＢＲに対するずれ量は７画素となる。
【０１０２】
以後、図２０（ｃ）に示すように、処理領域Ａ１の全領域内での比較ブロックＢＬの移動が終了すると、演算対象の切り出しブロックに対するずれ量（本例では、７画素）が算出され、その切り出しブロックＢＲに対する差分絶対値和の極小点が抽出される。次に、図２０（ｄ）に示すように、切り出しブロックＢＲが右眼画像ＰＲの全領域（移動領域ＭＲ）内で水平方向に１画素ずつ移動されて切り出される。そして、その切り出された各切り出しブロック毎にずれ量が算出され、差分絶対値和の極小点が抽出される。この垂直位置Ｖｐ＝６における全水平領域の演算結果（極小点）は、図２１（ａ）に示すように、ずれ位置の大きい領域に密集する。これは、当該垂直位置Ｖｐ＝６における切り出しブロックＢＲに含まれる被写体（車）の視差量（ずれ量）が大きいためである。
【０１０３】
その後、図８のステップＳ２１において、ずれ量が１以上となる切り出しブロックＢＲが存在すると判定されるため（ステップＳ２１でＮＯ）、切り出しブロックＢＲの左上画素の垂直位置Ｖｐに１が加算される（ステップＳ２２）。続いて、直前の垂直位置Ｖｐ＝６におけるずれ量算出処理では判定レベルＴ１よりも低い極小点が１つ以上抽出されているため（ステップＳ２４でＹＥＳ）、比較ブロックＢＬの移動範囲ＭＬ及び切り出しブロックＢＲの移動領域ＭＲが、直前の垂直位置Ｖｐ＝６における極小点に基づいて再設定される。すなわち、本例では、図２１（ａ）、（ｂ）に示すように、次の垂直位置Ｖｐ＝７の画素に対するずれ量算出処理における比較ブロックＢＬの移動範囲ＭＬが、ずれ位置が６〜１０画素の領域に設定される。
【０１０４】
以降も同様に、切り出しブロックＢＲが水平方向及び垂直方向に移動されてずれ量算出処理が実行される。そして、切り出しブロックＢＲの左上画素の垂直位置Ｖｐが、右眼画像ＰＲの垂直サイズＶｓから切り出しブロックＢＲの垂直ブロックサイズＢＶｓを減算した値になった後に、図２１（ｃ）に示すように、その垂直位置Ｖｐにおけるずれ量算出処理が終了すると（ステップＳ２０でＹＥＳ）、全てのずれ量算出処理が終了する。
【０１０５】
以上説明した本実施形態によれば、以下の効果を奏することができる。
（１）Ｎ行目の画素に対するずれ量算出処理で得られた演算結果に基づいて、Ｎ＋１行目の画素に対するずれ量算出処理における比較ブロックＢＬの移動範囲ＭＬを絞るように設定するようにした。これにより、Ｎ＋１行目のずれ量算出処理では、左眼画像ＰＬから切り出される比較ブロックＢＬの数が少なくなり、ずれ量を算出するための演算量が小さくなる。したがって、ずれ量算出処理にかかる処理時間を短縮することができる。
【０１０６】
（２）また、同じ被写体であれば、垂直位置が移動しても水平方向のずれ量はほとんど変わらないと考えられる。このため、比較ブロックＢＬの移動範囲ＭＬを１つ前の垂直位置（Ｎ行目）における演算結果に基づいて絞っても、その絞った移動範囲ＭＬ内から切り出しブロックＢＲに対応するブロックを好適に探索することができ、切り出しブロックに対するずれ量を精度良く算出することができる。
【０１０７】
（３）さらに、左眼画像ＰＬから切り出される比較ブロックＢＬの数が少なくなるため、比較ブロックＢＬを読み出すためのメモリ５１へのメモリアクセスを減らすことができる。
【０１０８】
（４）視差がないと判断されるブロック範囲（例えば、ずれ量が０画素であるブロック範囲）のずれ量算出処理をスキップさせるようにした。これにより、右眼画像ＰＲから切り出される切り出しブロックＢＲ及び左眼画像ＰＬから切り出される比較ブロックＢＬの数が少なくなり、ずれ量を算出するための演算量が小さくなる。したがって、ずれ量算出処理にかかる処理時間を短縮することができる。さらに、切り出しブロックＢＲ及び比較ブロックＢＬを読み出すためのメモリ５１へのメモリアクセスを減らすことができる。
【０１０９】
（５）Ｎ＋１行目の画素に対するずれ量を算出した際に、設定された全ての移動範囲ＭＬ内で算出された差分絶対値和の全てが判定レベルＴ１以上である場合には、移動範囲ＭＬを処理領域Ａ１の全ての領域に設定した上で、Ｎ＋１行目の各画素に対するずれ量算出処理を再度実行するようにした。これにより、Ｎ行目とは異なる被写体がＮ＋１行目で現れてＮ行目の演算結果を有効に活用できない場合であっても、移動範囲ＭＬを処理領域Ａ１の全領域に設定し直すことでずれ量を正確に算出することができる。
【０１１０】
（他の実施形態）
なお、上記実施形態は、これを適宜変更した以下の態様にて実施することもできる。
・上記実施形態における処理領域Ａ１のサイズは特に制限されない。例えば処理領域Ａ１の水平ブロックサイズＡＨｓを左眼画像ＰＬの水平サイズＨｓと同一となるように設定してもよい。また、処理領域Ａ１の垂直ブロックサイズを比較ブロックＢＬの垂直ブロックサイズＢＶｓよりも大きくなるように設定してもよい。
【０１１１】
・上記実施形態では、左眼画像ＰＬの処理領域Ａ１に設定された移動範囲ＭＬ内を１画素ずつ水平方向に移動させて比較ブロックＢＬを切り出すようにした。これに限らず、処理領域Ａ１に設定された移動範囲ＭＬ内をＰ（Ｐは１以上の整数）画素ずつ、例えば２画素ずつ水平方向に移動させて比較ブロックＢＬを切り出すようにしてもよい。
【０１１２】
・上記実施形態では、処理領域Ａ１に設定された移動範囲ＭＬ内で比較ブロックＢＬを水平方向のみに移動させるようにした。これに限らず、処理領域Ａ１に設定された移動範囲ＭＬ内で比較ブロックＢＬを水平方向（行方向）及び垂直方向（列方向）の２方向に移動させるようにしてもよい。この場合に、各切り出しブロックＢＲに対する水平方向のずれ量と併せて、各切り出しブロックＢＲに対する垂直方向のずれ量を算出するようにしてもよい。
【０１１３】
・上記実施形態では、切り出しブロックＢＲ及び比較ブロックＢＬのブロックサイズＢＶｓ×ＢＨｓを５画素×５画素に設定したが、その大きさは特に制限されない。例えば上記ブロックサイズＢＶｓ×ＢＨｓを、３画素×３画素や３画素×５画素などに設定してもよい。
【０１１４】
・上記実施形態では、右眼画像ＰＲから切り出しブロックＢＲを切り出し、左眼画像ＰＬから比較ブロックＢＬを切り出すようにした。これに限らず、左眼画像ＰＬから切り出しブロックを切り出し、右眼画像ＰＲから比較ブロックを切り出すようにしてもよい。
【０１１５】
・上記実施形態では、各切り出しブロック毎に抽出した差分絶対値和の極小点に基づいて、次の行のずれ量算出処理における比較ブロックＢＬの移動範囲ＭＬを設定するようにした。これに限らず、例えば各切り出しブロック毎に算出される差分絶対値和の最小値に基づいて、次の行のずれ量算出処理における比較ブロックＢＬの移動範囲ＭＬを絞るように設定するようにしてもよい。具体的には、上記最小値となる比較ブロックＢＬの移動量（つまり、ずれ量）に基づいて移動範囲を絞るように設定するようにしてもよい。
【０１１６】
・上記実施形態では、切り出しブロックＢＲと比較ブロックＢＬとの両ブロックの相関値として輝度信号の差分絶対値和を利用するようにしたが、切り出しブロックＢＲと比較ブロックＢＬとの類似性を判断可能な相関値であれば特に限定されない。
【符号の説明】
【０１１７】
１  撮像装置
１１Ｒ，１１Ｌ  撮像部
２０  画像処理プロセッサ
２４  ずれ量算出処理部
４２  メモリ
５１  メモリ
５２  レジスタ
５３  メモリ制御部
５４  ＳＡＤ演算部
５５  比較器
５６  演算制御部
【図１】
0005824953.tif 000002
【図２】
0005824953.tif 000003
【図３】
0005824953.tif 000004
【図４】
0005824953.tif 000005
【図５】
0005824953.tif 000006
【図６】
0005824953.tif 000007
【図７】
0005824953.tif 000008
【図８】
0005824953.tif 000009
【図９】
0005824953.tif 000010
【図１０】
0005824953.tif 000011
【図１１】
0005824953.tif 000012
【図１２】
0005824953.tif 000013
【図１３】
0005824953.tif 000014
【図１４】
0005824953.tif 000015
【図１５】
0005824953.tif 000016
【図１６】
0005824953.tif 000017
【図１７】
0005824953.tif 000018
【図１８】
0005824953.tif 000019
【図１９】
0005824953.tif 000020
【図２０】
0005824953.tif 000021
【図２１】
0005824953.tif 000022
【図２２】
0005824953.tif 000023
【図２３】
0005824953.tif 000024
【図２４】
0005824953.tif 000025
【図２５】
0005824953.tif 000026