画像処理装置、画像処理方法及び撮像装置
【課題】ずれ量算出にかかる処理時間を短縮することのできる画像処理装置を提供する。
【解決手段】異なる位置から撮影され、複数の画素が2次元の行列状に配列された右眼画像PR及び左眼画像PLが格納されるメモリ51と、N行目の各画素に対応する切り出しブロックBRを右眼画像PRから切り出し、左眼画像PLの処理領域の全水平領域から比較ブロックBLを行方向に1画素ずつ移動させて切り出すメモリ制御部53を有する。また、切り出された各比較ブロックBLと切り出しブロックBRとを比較して輝度信号の差分絶対値和を算出するSAD演算部54と、各切り出しブロックBR毎に差分絶対値和の最小値に基づいてずれ量を算出する比較器55を有する。さらに、N+1行目の画素に対するずれ量算出処理の際に、N行目において算出された差分絶対値和に基づいて比較ブロックBLの処理領域内での移動範囲を絞るように設定する演算制御部56を有する。
【解決手段】異なる位置から撮影され、複数の画素が2次元の行列状に配列された右眼画像PR及び左眼画像PLが格納されるメモリ51と、N行目の各画素に対応する切り出しブロックBRを右眼画像PRから切り出し、左眼画像PLの処理領域の全水平領域から比較ブロックBLを行方向に1画素ずつ移動させて切り出すメモリ制御部53を有する。また、切り出された各比較ブロックBLと切り出しブロックBRとを比較して輝度信号の差分絶対値和を算出するSAD演算部54と、各切り出しブロックBR毎に差分絶対値和の最小値に基づいてずれ量を算出する比較器55を有する。さらに、N+1行目の画素に対するずれ量算出処理の際に、N行目において算出された差分絶対値和に基づいて比較ブロックBLの処理領域内での移動範囲を絞るように設定する演算制御部56を有する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像処理装置、画像処理方法及び撮像装置に関するものである。
【背景技術】
【0002】
従来、両眼視差を持った左眼画像と右眼画像を用意し(図22(a)参照)、それぞれ独立に観察者の左右の眼に投影することにより立体視を実現する2眼式の3次元表示装置が知られている。このような表示方法では、両眼視差、つまり左眼画像と右眼画像のずれ量によって、立体感(飛び出し量)が変化する。例えば、図22(b)、(c)に示すように、左右画像のずれ量が大きくなるほど、その画像を見ている左右の視線の方向も離れて、両視線の交差位置が画面から離れる。すなわち、左右画像のずれ量が大きくなるほど、立体像が画面から離れた位置に表示される(飛び出し量が大きくなる)。このため、上記ずれ量を算出・利用することにより、立体感を制御することや、表示の際の違和感を緩和することができる。
【0003】
このような左右画像のずれ量は、例えば輝度信号の差分絶対値和を尺度としたブロックマッチング法を利用して算出される(例えば、特許文献1,2参照)。詳述すると、図23(a)に示すように、一方の画像(ここでは、右眼画像)から所定サイズのブロックBR1を切り出し、その切り出しブロックBR1を他方の画像(ここでは、左眼画像)の同じ画素位置のブロックBL1と比較し、両ブロックBR1,BL1内の各画素の輝度差の絶対値和(差分絶対値和)を算出する。続いて、図23(b)に示すように、切り出しブロックBR1と比較する左眼画像の比較ブロックBL1を水平方向に1画素ずつシフトさせ、シフトさせる毎に差分絶対値和を算出する。この差分絶対値和の算出(比較ブロックBL1の移動)を、図23(c)に示すように、比較ブロックBL1が左眼画像の終端に達するまで続ける。そして、差分絶対値和の算出が終了すると、その算出した差分絶対値和の中から最小となる差分絶対値和を求め、図24(a)に示すように、その最小値に対応する比較ブロックBL1を特定する。この特定された比較ブロックBL1が、左眼画像における切り出しブロックBR1に対応する領域、つまり切り出しブロックBR1と最も類似する領域になる。このため、上記特定された比較ブロックBL1の位置と切り出しブロックBR1の位置との水平座標の差が左右画像のずれ量(両眼視差)となる。
【0004】
次に、図24(b)に示すように、切り出しブロックBR1を水平方向に1画素シフトさせ、図23(a)〜(c)で説明したのと同様に、左眼画像において差分絶対値和が最小となるブロック位置を特定し、左右画像のずれ量を算出する。その後、図24(c)に示すように、右眼画像の水平方向における終端(図中の右端)に達するまで、切り出しブロックBR1を水平方向に1画素ずつシフトさせ、そのシフトさせた各切り出しブロックBR1毎に上記ずれ量を算出する。
【0005】
次に、図25(a)に示すように、切り出しブロックBR1を右眼画像の水平方向における始点(図中の左端)に戻し、さらに垂直方向に1画素シフトさせ、図23及び図24で説明したのと同様に上記ずれ量を算出する。すなわち、切り出しブロックBR1を水平方向に1画素シフトさせる毎に、切り出しブロックBR1に対する左右画像のずれ量を算出する。
【0006】
以上の処理を、図25(b)に示すように、切り出しブロックBR1が右眼画像の終点(右下)に達するまで繰り返し、各切り出しブロックBR1に対する左右画像のずれ量を算出する。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開2009−129420号公報
【特許文献2】特開2001−045523号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
しかしながら、上述した算出方法では、右眼画像及び左眼画像の全ての領域に対して比較演算処理(差分絶対値和の算出処理)が行われるため、左右画像の画像サイズが大きくなるほど演算処理時間が長くなるという問題がある。
【課題を解決するための手段】
【0009】
本発明の一観点によれば、異なる位置から撮影され、複数の画素が2次元の行列状に配列された第1画像及び第2画像を入力する入力手段と、前記第1画像から所定サイズの第1ブロックを切り出す手段であって、N(Nは1以上の整数)行目の各画素に対応する前記第1ブロックを切り出す第1切り出し手段と、前記第2画像の前記第1ブロックに対する処理領域内に設定される移動範囲から前記所定サイズの第2ブロックを切り出す手段であって、前記N行目の各画素に対応する各第1ブロックに対して、領域が前記処理領域の全ての領域に設定された前記移動範囲から前記第2ブロックを行方向にP(Pは1以上の整数)画素ずつ移動させて切り出す第2切り出し手段と、前記第2ブロックの切り出し毎に、該切り出した第2ブロックと、演算対象の第1ブロックとを比較して両ブロックの相関値を算出する相関値算出手段と、前記各第1ブロック毎に、前記相関値の最大値を算出し、該最大値となる第2ブロックの移動量に基づいて、演算対象の第1ブロックに対する前記第1画像及び前記第2画像のずれ量を算出するずれ量算出手段と、前記第1画像のN+1行目の画素に対する前記ずれ量を算出する際に、前記N行目において算出された前記相関値に基づいて前記移動範囲を絞るように設定する設定手段と、を有する。
【発明の効果】
【0010】
本発明の一観点によれば、ずれ量算出にかかる処理時間を短縮することができるという効果を奏する。
【図面の簡単な説明】
【0011】
【図1】一実施形態の撮像装置を示すブロック図。
【図2】ずれ量算出処理部の内部構成例を示すブロック図。
【図3】(a)〜(c)は、ずれ量算出処理の概要を示す説明図。
【図4】(a)〜(d)は、ずれ量算出処理の概要を示す説明図。
【図5】(a)、(b)は、ずれ量算出処理の概要を示す説明図。
【図6】ずれ量算出処理方法を示すフローチャート。
【図7】ずれ量算出処理方法を示すフローチャート。
【図8】ずれ量算出処理方法を示すフローチャート。
【図9】(a)、(b)は、右眼画像及び左眼画像を示す説明図。
【図10】各種パラメータを示す説明図。
【図11】(a)〜(d)は、ずれ量算出処理を示す説明図。
【図12】(a)〜(c)は、ずれ量算出処理を示す説明図。
【図13】(a)〜(c)は、ずれ量算出処理を示す説明図。
【図14】(a)〜(c)は、ずれ量算出処理を示す説明図。
【図15】(a)〜(d)は、ずれ量算出処理を示す説明図。
【図16】(a)〜(d)は、ずれ量算出処理を示す説明図。
【図17】ずれ量算出処理を示す説明図。
【図18】(a)、(b)は、ずれ量算出処理を示す説明図。
【図19】(a)〜(d)は、ずれ量算出処理を示す説明図。
【図20】(a)〜(d)は、ずれ量算出処理を示す説明図。
【図21】(a)〜(c)は、ずれ量算出処理を示す説明図。
【図22】(a)〜(c)は、右眼画像と左眼画像のずれ量を示す説明図。
【図23】(a)〜(c)は、従来のずれ量算出処理を示す説明図。
【図24】(a)〜(c)は、従来のずれ量算出処理を示す説明図。
【図25】(a)、(b)は、従来のずれ量算出処理を示す説明図。
【発明を実施するための形態】
【0012】
以下、一実施形態を図1〜図21に従って説明する。
図1に示すように、撮像装置1は、撮像部10と、画像処理プロセッサ(ISP:Image Signal Processor)20と、入力部41と、メモリ42と、表示デバイス43とを有している。この撮像装置1は、例えばデジタルスチルカメラである。
【0013】
撮像部10は、右眼画像用の撮像部11Rと、左眼画像用の撮像部11Lとを有している。撮像部11Rは、撮像光学系12Rと、撮像素子部13Rと、アナログフロントエンド(AFE:Analog Front End)14Rとを有している。同様に、撮像部11Lは、撮像光学系12Lと、撮像素子部13Lと、AFE14Lとを有している。
【0014】
撮像光学系12R,12Lは、被写体からの光を集光する複数のレンズ(フォーカスレンズなど)や、これらのレンズを通過した光の量を調整する絞り等を含み、光学的な被写体像を撮像素子部13R,13Lにそれぞれ導く。これら撮像光学系12R,12Lは、例えば撮像装置1の前面(図示略)において異なる位置に設けられている。
【0015】
撮像素子部13R,13Lは、例えばベイヤ配列のカラーフィルタと、撮像素子とを含む。撮像素子は、例えばCCD(Charge Coupled Device)イメージセンサである。この撮像素子は、カラーフィルタを介して入射する光の量に応じた撮像信号(アナログ信号)を出力する。
【0016】
AFE14R,14Lは、撮像素子部13R,13Lからそれぞれ出力されるアナログの撮像信号をデジタルの画像データに変換するA/D変換回路を含み、画像データを画像処理プロセッサ20に出力する。また、AFE14R,14Lは、画像処理プロセッサ20から供給される制御信号を撮像素子部13R,13Lへそれぞれ出力する。
【0017】
画像処理プロセッサ20は、撮像部10から出力される画像データ(ベイヤデータ)に対して各種画像処理を施す。このとき、画像処理プロセッサ20は、所定の処理段階で画像データをメモリ42に一時的に格納する。すなわち、メモリ42は作業メモリとして機能する。このメモリ42は、例えば同期式半導体メモリ(SDRAM:Synchronous Dynamic Random Access Memory)などの書き換え可能なメモリである。また、画像処理プロセッサ20は、メモリ42に格納された各種画像処理後の画像データを表示デバイス43に表示したり、メモリカード44に格納したりする。
【0018】
なお、表示デバイス43としては、液晶表示装置(LCD:Liquid Crystal Display)や有機EL(Electronic Luminescence)などを用いることができる。メモリカード44は、例えばコンパクトフラッシュ(登録商標)やSDメモリカード(登録商標)などの携帯型メモリカードである。
【0019】
入力部41は、ユーザにより操作されるシャッタボタンやメニューボタン等の各種スイッチを有している。この各種スイッチは、例えば写真撮影、撮影条件の設定や表示方式の設定等を行うために使用される。
【0020】
次に、画像処理プロセッサ20の内部構成例を説明する。
画像処理プロセッサ20は、プリプロセス部21と、色処理部22と、画像処理部23と、ずれ量算出処理部24と、コーデック部25と、メモリカードインタフェース(I/F)26と、表示I/F27と、DMA調停部28と、メモリコントローラ29と、CPU30とを有している。
【0021】
プリプロセス部21、色処理部22、画像処理部23、ずれ量算出処理部24、コーデック部25、メモリカードI/F26、表示I/F27及びDMA調停部28は、内部バス31を介して互いに接続されている。DMA調停部28は、メモリコントローラ29を介してメモリ42と接続されている。
【0022】
プリプロセス部21は、撮像部10から出力される画像データ(RGB形式の画像データ(ベイヤデータ))に対し、例えばシェーディング補正、キズ補正、傾き補正やOB(Optical Black)レベル補正等の補正処理(前処理)を施す。そして、プリプロセス部21は、補正処理後の画像データをメモリ42に格納するとともに、補正処理後の画像データをずれ量算出処理部24に出力する。なお、撮像部11Rから出力された画像データに対して補正処理を施した後の画像データは、観察者の右眼に投影するための画像(映像)となるため、以下の説明では、その画像データを右眼画像PRと称する。また、撮像部11Lから出力された画像データに対して補正処理を施した後の画像データは、観察者の左眼に投影するための画像となるため、以下の説明では、その画像データを左眼画像PLと称する。
【0023】
色処理部22は、例えば色空間変換部である。この色処理部22は、メモリ42に格納されたRGB形式の画像データ(ベイヤデータ)を読み出し、画像データをYCbCr形式の画像データに変換する。そして、色処理部22は、変換後の画像データをメモリ42に格納する。
【0024】
画像処理部23は、上記色処理部22における処理以外の他の画像処理を行う1つ又は複数の処理部である。上記他の画像処理には、例えば画素数を増減する解像度変換処理、セピア色などの色調を変換する色調変換処理、画像の輪郭(エッジ)を強調するエッジ強調処理、画像データに含まれるノイズを除去するノイズ除去処理等が含まれる。
【0025】
ずれ量算出処理部24は、プリプロセス部21から右眼画像PR及び左眼画像PLを入力し、それら右眼画像PRと左眼画像PLとのずれ量(両眼視差)を算出する。例えば、ずれ量算出処理部24は、右眼画像PR及び左眼画像PLの両画像間で画素同士の対応付けを行うことにより、画素毎のずれ量を算出する。ここで、上記画素同士の対応付けは、各画像上の画素周辺のブロック同士の相関値を求め、最も相関値の高い画素同士を対応付ける方法を用いる。そして、ずれ量算出処理部24は、算出したずれ量をメモリ42に格納する。このずれ量は、画像データを3次元表示する際に立体感等を制御するパラメータとして使用される。
【0026】
コーデック部25は、メモリ42に格納された画像データを読み出し、その画像データを所定の方式(例えばJPEG(Joint Photographic Experts Group)方式)により符号化し、符号化後の画像データ(符号化データ)をメモリ42に格納する。なお、当該撮像装置1が動画の撮影が可能であれば、コーデック部25に、動画データを所定の方式(例えばMPEG(Moving Picture Experts Group)方式)により符号化する機能を持たせてもよい。
【0027】
メモリカードI/F26は、撮像装置1に装着されるメモリカード44と接続される。メモリカードI/F26は、メモリ42に格納されたデータ(例えば符号化された画像データ)をメモリカード44に格納する。
【0028】
表示I/F27には、表示デバイス43が接続されている。表示デバイス43は、撮影装置の駆動源であるバッテリの残量、撮影モード、撮影フレーム、記憶された画像データの2次元表示又は3次元表示等に用いられる。例えば表示I/F27は、メモリ42に格納された画像データを読み出し、その画像データを表示デバイス43に出力する。また、表示I/F27は、撮像部11R,11Lによって撮像された画像データを3次元表示する際には、メモリ42に格納された右眼画像PR、左眼画像PL及びずれ量を読み出し、ずれ量に基づいて右眼画像PR及び左眼画像PLを表示デバイス43に3次元表示する。
【0029】
ここで、3次元表示の表示方式としては、公知の方式を用いることができる。例えば右眼画像PR及び左眼画像PLを並べて表示して裸眼平行法により立体視を行う方式を用いることができる。また、表示デバイス43にレンチキュラーレンズを貼り付け、表示デバイス43の表示面の各々の所定位置に右眼画像PR及び左眼画像PLを表示することにより、観察者の左右の眼にそれぞれの画像PR,PLを入射させて3次元表示を実現する方式を用いることができる。
【0030】
プリプロセス部21と、色処理部22と、画像処理部23と、ずれ量算出処理部24と、コーデック部25と、メモリカードI/F26と、表示I/F27とは、メモリアクセスコントローラ(DMAC:Direct Memory Access Controller)21a〜27aをそれぞれ有している。DMAC21a〜27aは、各処理部21〜27が行う処理に応じたアクセス要求を出力する。例えばプリプロセス部21は、撮像部10から出力される画像データを、メモリ42に格納する。このため、プリプロセス部21のDMAC21aは、書き込み要求(ライトリクエスト)を出力する。表示I/F27は、表示デバイス43に表示する画像データをメモリ42から読み出す。このため、表示I/F27のDMAC27aは、読み出し要求(リードリクエスト)を出力する。
【0031】
DMA調停部28は、各処理部21〜27のDMAC21a〜27aから出力され競合する要求(リクエスト)を、例えば各処理部21〜27に対応して設定された優先度に従って要求を調停し、1つの処理部に対するアクセスを許可する。アクセスが許可された処理部は、メモリ42に対するアクセスのための制御信号を出力する。例えば読み出し要求の場合、メモリコントローラ29は、制御信号に応じてメモリ42からデータを読み出し、その読み出したデータを要求元に出力する。また、メモリコントローラ29は、書き込み要求と、その要求元から出力されるデータをメモリ42に出力し、メモリ42はそのデータを記憶する。
【0032】
CPU30は、画像処理プロセッサ20全体を統括制御するもので、データや画像の解析、解析結果に基づく必要な情報の各処理部への設定及びデータの書き込み/読み出し制御等を行う。また、CPU30は、上記撮像素子部13R,13L(CCDイメージセンサ)のリセットを指令する制御信号を、AFE14R,14Lをそれぞれ通じて撮像素子部13R,13Lに出力する。なお、このCPU30には、上記入力部41の各種スイッチにより設定・指定された操作情報が入力される。
【0033】
次に、ずれ量算出処理部24の内部構成例及び動作を説明する。
はじめに、ずれ量算出処理部24によるずれ量算出処理の概要を説明する。
図3(a)に示すように、まず、撮像部11R,11Lによって撮影された2つの画像データ、つまり異なる位置(視点)から撮影された右眼画像PR及び左眼画像PLを取得する。これら右眼画像PR及び左眼画像PLは、複数の画素が水平方向(行方向)及び垂直方向(列方向)に2次元状に配列された画像データ、つまり複数の画素が2次元の行列状に配列された画像データである。
【0034】
一番はじめの垂直位置の画素における演算処理(ここでは、一行目の画素に対するずれ量算出処理)では、一方の画像データ(ここでは、右眼画像PR)の水平位置の始点(1列目)から所定サイズの切り出しブロックBRを切り出す。その切り出しブロックBRと比較するブロックとして、他方の画像データ(ここでは、左眼画像PL)の処理領域A1内の始点(ここでは、1行1列目)から切り出しブロックBRと同サイズの比較ブロックBLを切り出す。そして、切り出しブロックBRと比較ブロックBLとの両ブロック内の各画素の輝度差の絶対値和(差分絶対値和)を算出する。なお、上記処理領域A1は、演算対象の切り出しブロックBRのずれ量を算出するためにその切り出しブロックBRと比較演算される領域であり、その切り出しブロックBRに対応する領域を左眼画像PLから探索するための領域である。
【0035】
続いて、図3(b)に示すように、比較ブロックBLを処理領域A1内で水平方向に1画素ずつシフト(移動)させるとともに、比較ブロックBLをシフトさせる毎に上記差分絶対値和を算出する。この差分絶対値和の算出処理を、比較ブロックBLが上記処理領域A1の終端に達するまで続ける。そして、算出された多数の差分絶対値和のうち最小となる差分絶対値和を算出し、その差分絶対値和の最小値となる比較ブロックBLの位置と切り出しブロックBRの位置とから当該切り出しブロックBRに対する両画像PR,PLのずれ量を算出する。このとき、図3(c)に示すように、切り出しブロックBRと比較ブロックBLとのずれ位置を横軸に取り、差分絶対値和の大きさを縦軸に取ったグラフ上に、処理領域A1内の水平方向の全ブロックから算出された全ての差分絶対値和をプロットし、各プロット点を曲線で結ぶ。すると、例えば図示のように、複数の極小点(極小値)を有する曲線が形成される。そして、この極小点における差分絶対値和の大きさと予め設定された判定レベルT1とを比較し、差分絶対値和が判定レベルT1よりも低くなる極小点を抽出する。なお、図示の例では、2つの極小点が抽出される(丸印参照)。
【0036】
次に、図4(a)に示すように、右眼画像PRからの切り出し位置を水平方向に1画素シフトして切り出しブロックBRを切り出す。そして、上述と同様に、切り出しブロックBRに対するずれ量を算出するとともに、図4(b)に示すように、判定レベルT1よりも低くなる極小点を抽出する。このとき、図示の例では、2つの極小点が抽出される。
【0037】
以後、図4(c)に示すように、切り出しブロックBRの切り出し位置が終点(具体的には、切り出しブロックBRの右端が右眼画像BLの右端に一致する点)に達するまで、上述と同様の処理が繰り返される。これにより、水平方向に1画素ずつ移動されて切り出された各切り出しブロックBRに対するずれ量が算出され、さらに図4(d)に示すように各切り出しブロックBRに対する極小点が抽出される。
【0038】
このように、一行目の画素に対するずれ量算出処理では、従来と同様に、切り出しブロックBRと比較される比較ブロックBLが処理領域A1の全ての領域で(始点から終点まで)水平方向に1画素ずつシフトされる。これにより、処理領域A1の全水平領域における差分絶対値和が算出され、当該切り出しブロックBRに対するずれ量が算出される。そして、切り出しブロックBRの切り出し位置が右眼画像PRの全ての領域で(始点から終点まで)水平方向に1画素ずつシフトされ、一行目の各画素に対応する各切り出しブロックBRに対するずれ量が算出される。但し、このとき、本実施形態では、ずれ量の算出と併せて、各切り出しブロックBRに対する差分絶対値和の極小点を抽出するようにしている。
【0039】
図5(a)は、上記抽出された多数の極小点、すなわち一行目の画素に対する全切り出しブロックBRにおいて抽出された極小点を1つのグラフ上にまとめてプロットしたものである。このグラフに基づいて、2行目以降の画素に対応する切り出しブロックBRと比較される比較ブロックBLの移動範囲MLを絞るように設定する。具体的には、上記グラフ上で極小点が密集した周辺領域のみを比較ブロックBLの移動範囲MLに設定する。より具体的には、極小点が密集した密集領域内の極小点におけるずれ位置の平均値を中心に、前後X画素間の領域のみを比較ブロックBLの移動範囲MLに設定する。なお、図示のように、密集領域が複数存在する場合には、比較ブロックBLの移動範囲MLも複数設定される。
【0040】
続いて、図5(b)に示すように、右眼画像PRの2行目の始点(1列目)から切り出しブロックBRを切り出す。その切り出しブロックBRと比較される比較ブロックBLを、処理領域A1内の上記設定された移動範囲MLから切り出す。ここでは、ずれ位置が0〜2画素の領域からの比較ブロックBLの切り出しはスキップされ、ずれ位置が3画素の位置から比較ブロックBLの切り出しが開始される。次に、これら切り出しブロックBRと比較ブロックBLとを比較して差分絶対値和を算出する。以降、比較ブロックBLが上記設定された移動範囲ML内のみから切り出され、その比較ブロックBLと切り出しブロックBRとの比較により差分絶対値和が算出される。そして、上記移動範囲ML内で算出された多数の差分絶対値和から当該切り出しブロックBRに対するずれ量が算出される。このように、2行目以降の画素に対するずれ量算出処理では、比較ブロックBLの移動範囲MLが絞られるため、左眼画像PLから切り出される比較ブロックBLの数が少なくなり、ずれ量を算出するための演算量が小さくなる。これにより、ずれ量算出処理における全体の処理時間を短縮することができる。
【0041】
次に、ずれ量算出処理部24の内部構成例を説明する。
図2に示すように、ずれ量算出処理部24は、メモリ51と、レジスタ52と、メモリ制御部53と、差分絶対値和(SAD)演算部54と、比較器55と、演算制御部56とを有している。
【0042】
メモリ51には、撮像部11Rから出力される画像データに対してプリプロセス部21で各種補正処理が施された画像データ(右眼画像PR)が格納される。このとき、メモリ制御部32によってメモリ51内の右眼画像PRを格納するための第1格納領域のアドレスが指定されることで、第1格納領域に右眼画像PRが格納される。また、メモリ51には、撮像部11Lから出力される画像データに対してプリプロセス部21で各種補正処理が施された画像データ(左眼画像PL)が格納される。このとき、メモリ制御部32によってメモリ51内の左眼画像PLを格納するための第2格納領域のアドレスが指定されることで、第2格納領域に左眼画像PLが格納される。なお、図2では、プリプロセス部21から直接メモリ51に、右眼画像PR及び左眼画像PLが入力されるようにしたが、これに限らず、メモリ42に格納された右眼画像PR及び左眼画像PLを読み出してメモリ51に入力するようにしてもよい。また、図2では、メモリ51がずれ量算出処理部24に内蔵されるようにしたが、メモリ51を省略して、ずれ量算出処理部24の外部に設けられたメモリ42をメモリ51の代わりに用いるようにしてもよい。
【0043】
レジスタ52には、撮影された右眼画像PR及び左眼画像PLの画像サイズ、切り出しブロックBR及び比較ブロックBLのブロックサイズ、処理領域A1のサイズや極小点の差分絶対値和と比較される判定レベルT1等の各種パラメータが格納される。上記CPU30(図1参照)からの制御信号に基づいて、ずれ量算出処理の開始・停止を指令する信号がレジスタ52から撮像部11R,11L、プリプロセス部21及びメモリ制御部32,53に出力される。また、CPU30の制御信号に基づいて、右眼画像PR及び左眼画像PLの画像サイズを示す信号がレジスタ52からメモリ制御部53に出力されるとともに、切り出しブロックBR及び比較ブロックBLのブロックサイズ、及び処理領域A1のサイズを示す信号がレジスタ52からメモリ制御部53に出力される。さらに、CPU30からの制御信号に基づいて、演算制御部56で抽出される極小点の差分絶対値和と比較される判定レベルT1がレジスタ52から演算制御部56に出力される。
【0044】
メモリ制御部53は、レジスタ52からの信号(切り出しブロックBRのブロックサイズ等を示す信号)に基づいて、メモリ51に格納された右眼画像PRの一部を切り出しブロックBRとして読み出すための読み出しアドレスをメモリ51に出力する。また、メモリ制御部53は、レジスタ52からの信号(比較ブロックBLのブロックサイズや処理領域A1のサイズ等を示す信号)に基づいてメモリ51に格納された左眼画像PLの一部を処理領域A1内から比較ブロックBLとして読み出すための読み出しアドレスをメモリ51に出力する。さらに、メモリ制御部53は、演算制御部56からのスキップ信号SS、具体的には処理領域A1内の移動範囲ML(図5参照)以外の領域をスキップすることを指令するスキップ信号SSに基づいて、メモリ51に格納された左眼画像PLの一部を上記移動範囲MLから比較ブロックBLとして読み出すための読み出しアドレスをメモリ51に出力する。これら読み出しアドレスに基づいて、メモリ51から右眼画像PRの切り出しブロックBR及び左眼画像PLの比較ブロックBLがSAD演算部54に出力される。
【0045】
メモリ制御部53は、上記読み出しアドレスを比較器55及び演算制御部56にも出力する。また、メモリ制御部53は、比較ブロックBLが処理領域A1内での移動が終了したことを示す終了信号ESを比較器55及び演算制御部56に出力する。さらに、メモリ制御部53は、演算対象の切り出しブロックBRの基準画素(ここでは、左上画素)の右眼画像PR内における座標を示すアドレスをメモリ42に出力する。
【0046】
SAD演算部54は、メモリ51から読み出された右眼画像PRの切り出しブロックBR及び左眼画像PLの比較ブロックBLを比較し、両ブロックBR,BL内の各画素の輝度差の絶対値和(差分絶対値和)を算出する。SAD演算部54は、算出した差分絶対値和を比較器55及び演算制御部56に出力する。
【0047】
比較器55は、SAD演算部54から入力する差分絶対値和を内蔵メモリ55aに格納する。この比較器55は、内蔵メモリ55aに格納された複数の差分絶対値和を各切り出しブロックBR毎に比較し、各切り出しブロックBRに対する差分絶対値和の最小値を求める。そして、比較器55は、算出した最小値に対応する比較ブロックBLの垂直位置と演算対象の切り出しブロックBRの垂直位置とに基づいて、当該切り出しブロックBRに対するずれ量を算出し、そのずれ量をメモリ42に出力する。
【0048】
演算制御部56は、当該ずれ量算出処理部24を統括的に制御し、図6〜図8に示すフローチャートの処理を実行する。この演算制御部56は、SAD演算部54から入力する差分絶対値和を内蔵メモリ56aに格納する。演算制御部56は、内蔵メモリ56aに格納された複数の差分絶対値和を切り出しブロックBR毎に比較し、各切り出しブロックに対する差分絶対値和の極小点を求める。演算制御部56は、求めた極小点における差分絶対値和とレジスタ52から入力される判定レベルT1とを比較し、判定レベルT1よりも低い極小点を抽出する。演算制御部56は、抽出した極小点を内蔵メモリ56aに順次格納する。演算制御部56は、その格納された極小点に基づいて、極小点が密集する密集領域(ずれ位置領域)を抽出し、その密集領域に基づいて比較ブロックBLの移動範囲ML(図5参照)を設定する。そして、演算制御部56は、設定した移動範囲MLに基づいて、その移動範囲ML以外の処理領域A1内の範囲から比較ブロックBLが切り出されないように上記スキップ信号SSを生成し、そのスキップ信号SSをメモリ制御部53に出力する。なお、このスキップ信号SSは、比較ブロックBLを切り出すためのアドレスをスキップさせることを指令するスキップパルスと、スキップ後のアドレス(読み出しアドレス)を示すスキップアドレスとを含んでいる。また、上記内蔵メモリ56aに格納された極小点は、右眼画像PRの各行のずれ量算出処理が終了される毎にリセットされる。
【0049】
なお、ずれ量算出処理部24は画像処理装置の一例、メモリ51は入力手段の一例、メモリ制御部53は第1切り出し手段及び第2切り出し手段の一例、SAD演算部54は相関値算出手段の一例、比較器55はずれ量算出手段の一例である。演算制御部56は、設定手段、抽出手段、第1制御手段及び第2制御手段の一例である。また、右眼画像PRは第1画像の一例、左眼画像PLは第2画像の一例、切り出しブロックBRは第1ブロックの一例、比較ブロックBLは第2ブロックの一例である。
【0050】
次に、ずれ量算出処理部24(とくに、演算制御部56)の動作、つまりずれ量算出処理方法を図6〜図21に従って説明する。ここでは、撮像部11R,11Lによって図9(a)に示すような風景を撮影し、つまり異なる位置から同一の風景を撮影し、図9(b)に示す左眼画像PLと右眼画像PRとが得られた場合を例に挙げて説明する。なお、撮影された2つの木は撮影位置から遠く離れた位置に存在する一方、車は撮影位置に近い位置に存在するものとする。
【0051】
まず、図6に示すステップS1において、メモリ制御部53及び演算制御部56によって各種パラメータが初期化される。具体的には、図10に示す切り出しブロックBR及び比較ブロックBLの左上画素の垂直位置Vpと、切り出しブロックBRの左上画素の水平位置HpRと、比較ブロックBLの左上画素の水平位置HpLとが0(ゼロ)に設定される。また、切り出しブロックBRと比較される比較ブロックBLの処理領域A1内における水平方向の移動範囲MLが処理領域A1の全ての領域に設定される。つまり、比較ブロックBLが処理領域A1の全水平領域を移動されて切り出されるように設定される。ここで、切り出しブロックBR及び比較ブロックBLの垂直ブロックサイズをBVsと示し、水平ブロックサイズをBHsと示す。また、1つの切り出しブロックBRに対する差分絶対値和の最小値及びずれ量を算出するための処理領域A1の垂直ブロックサイズをBVsと示し、水平ブロックサイズをAHsと示す。このため、全ての領域に設定された移動範囲MLは、図11(a)に示すように、処理領域A1の左端を始点とし、処理領域A1の水平ブロックサイズAHsから比較ブロックBLの水平ブロックサイズBHsを減算したサイズの領域に設定される。さらに、ステップS1の初期化では、切り出しブロックBRの右眼画像PR内における水平方向の移動領域MRが右眼画像PRの全ての領域に設定される。つまり、切り出しブロックBRが右眼画像PRの全水平領域を移動されて切り出されるように設定される。ここで、左眼画像PL及び右眼画像PRの垂直サイズをVsと示し、垂直サイズをHsと示す。このため、全ての領域に設定された移動領域MRは、右眼画像PRの左端(1列目)を始点とし、右眼画像PRの水平サイズHsから切り出しブロックBRの水平ブロックサイズBHsを減算したサイズの領域に設定される。
【0052】
また、本例では、切り出しブロックBR及び比較ブロックBLのブロックサイズBVs×BHsは5画素×5画素に設定され、処理領域A1のサイズBVs×AHsは5画素×14画素に設定されている。
【0053】
次に、図6に示すステップS2において、上記設定された座標(Vp,HpR)が切り出しブロックBRの左上に設定され、ブロックサイズが設定サイズ(BVs×BHs)に設定された切り出しブロックBRがメモリ51に格納された右眼画像PRから切り出される(読み出される)。すなわち、ここでは、図11(a)に示すように、左上画素の座標が上記設定された座標(Vp,HpR)、つまり座標(0,0)に設定され、ブロックサイズが設定サイズ(BVs×BHs)に設定された切り出しブロックBRが右眼画像PRから切り出される。
【0054】
続いて、図6に示すステップS3において、上記設定された座標(Vp,HpL)が比較ブロックBLの左上に設定され、ブロックサイズが設定サイズ(BVs×BHs)に設定された比較ブロックBLがメモリ51に格納された左眼画像PLから切り出される(読み出される)。すなわち、ここでは、図11(a)に示すように、左上画素の座標が上記設定された座標(Vp,HpL)、つまり座標(0,0)に設定され、ブロックサイズが設定サイズ(BVs×BHs)に設定された比較ブロックBLが左眼画像PLから切り出される(図6のステップS3)。
【0055】
次に、SAD演算部54は、切り出された切り出しブロックBR及び比較ブロックBLに基づいてSAD演算を行って差分絶対値和を算出する(図6のステップS4)。続いて、SAD演算部54は、算出した差分絶対値和を比較器55及び演算制御部56に出力する(ステップS5)。次いで、比較器55では上記差分絶対値和が内蔵メモリ55aに格納され、演算制御部56では上記差分絶対値和が内蔵メモリ56aに格納される(ステップS6)。
【0056】
次に、メモリ制御部53は、処理領域A1内での比較ブロックBLの移動が終了したか否かを判定する(ステップS7)。具体的には、比較ブロックBLの左上画素の水平位置HpLが、処理領域A1の右上画素の水平位置から比較ブロックBLの水平ブロックサイズBHsを減算した値に一致したときに、比較ブロックBLの処理領域A1内での移動が終了したと判定される。なお、処理領域A1の右上画素の水平位置は、処理領域A1の左上画素の水平位置に当該処理領域A1の水平ブロックサイズAHsを加算することによって算出することができる。
【0057】
上記ステップS7において、比較ブロックBLの移動が終了していないと判定されると(ステップS7でNO)、比較ブロックBLの移動範囲MLが全ての領域に設定されているか否かが判定される(ステップS8)。ここでは、上記ステップS1の初期化で上記移動範囲MLが全ての領域に設定されているため(ステップS8でYES)、比較ブロックBLの左上画素の水平位置HpLに1が加算され(ステップS9)、ステップS3に戻る。すなわち、図11(b)に示すように、比較ブロックBLの切り出し位置が処理領域A1(の移動範囲ML)内で水平方向に1画素シフトされ、そのシフトされた位置から比較ブロックBLが切り出される(ステップS3)。そして、上述と同様に、切り出しブロックBRと比較ブロックBLとに基づいて差分絶対値和が算出され(ステップS4)、その差分絶対値和が比較器55の内蔵メモリ55a及び演算制御部56の内蔵メモリ56aに格納される(ステップS5,S6)。なお、上記ステップS8において、比較ブロックBLの移動範囲MLが一部の領域に設定されていると判定された場合には(ステップS8でNO)、ステップS10の処理が実行された後にステップS3に戻る。
【0058】
以後、処理領域A1内での比較ブロックBLの移動が終了するまでステップS3〜S9の処理が繰り返し実行される。これにより、比較ブロックBLが処理領域A1内で水平方向に1画素シフトされる毎に差分絶対値和が算出されることになる。そして、図11(c)に示すように、比較ブロックBLが処理領域A1の終端まで移動され、その時の差分絶対値和が算出されると、処理領域A1内での比較ブロックBLの移動が終了したと判定される(ステップS7でYES)。このとき、図11(c)に示すように、比較ブロックBLの右上画素が処理領域A1の右上画素に一致し、比較ブロックBLの左上画素が処理領域A1の右上画素の水平位置から比較ブロックBLの水平ブロックサイズBHsを減算した値に一致する。また、メモリ制御部53からは終了信号ESが比較器55と演算制御部56に出力される。
【0059】
次に、図6に示すステップS11において、比較器55は、内蔵メモリ55aに格納された多数の差分絶対値和を比較し、差分絶対値和の最小値を算出する。このように差分絶対値和が最小値となったときの比較ブロックBLの移動量が、演算対象の切り出しブロックBRに対する右眼画像PR及び左眼画像PLのずれ量として算出される。そして、比較器55は、算出したずれ量をメモリ42に出力する。
【0060】
続いて、ステップS12において、演算制御部56は、内蔵メモリ56aに格納された各切り出しブロックBRに対応する多数の差分絶対値和から1つ又は複数の極小点を算出する。例えば図11(d)に示すように、切り出しブロックBRと比較ブロックBLとのずれ位置(比較ブロックBLの移動量)を横軸に取り、差分絶対値和の大きさを縦軸に取ったグラフ上に上記多数の差分絶対値和をプロットし、各プロット点を曲線で結び、この曲線に基づいて差分絶対値和の極小点を算出する。そして、演算制御部56は、算出した極小点の差分絶対値和の大きさとレジスタ52から入力される判定レベルT1とを比較し、その判定レベルT1よりも低くなる差分絶対値和の極小点を抽出する。このように抽出された極小点における差分絶対値和及びずれ位置は内蔵メモリ56aに格納される。
【0061】
次に、図7に示すステップS13において、メモリ制御部53は、右眼画像PR内での切り出しブロックBRの水平方向への移動が終了したか否かを判定する。具体的には、切り出しブロックBRの左上画素の水平位置HpLが、右眼画像PRの水平サイズHsから切り出しブロックBRの水平ブロックサイズBHsを減算した値に一致したときに、切り出しブロックBRの水平方向への移動が終了したと判定される。ここでは、切り出しブロックBRの水平方向への移動が未だ終了していないため(ステップS13でNO)、ステップS14において、切り出しブロックBRの移動領域MRが全ての領域に設定されているか否かが判定される。このとき、上記ステップS1の初期化で上記移動領域MRが全ての領域に設定されているため(ステップS14でYES)、切り出しブロックBRの左上画素の水平位置HpRに1が加算される(ステップS15)。その後、ステップS16に移る。なお、上記ステップS14において、切り出しブロックBRの移動領域MRが一部の領域に設定されていると判定された場合には(ステップS14でNO)、ステップS17の処理が実行された後にステップS16に移る。
【0062】
続いて、ステップS16において、比較ブロックBLの移動範囲MLが全ての領域に設定されているか否かが判定される。ここでは、上記ステップS1の初期化で上記移動範囲MLが全ての領域に設定されている(ステップS16でYES)。このため、続くステップS18において、比較ブロックBLの左上画素の水平位置HpLが、切り出しブロックBRの左上画素の水平位置HpRと等しくなるように変更される(HpL=HpR)。その後、ステップS2に戻る。なお、上記ステップS16において、比較ブロックBLの移動範囲MLが一部の領域に設定されていると判定された場合には(ステップS16でNO)、ステップS19の処理が実行された後にステップS2に戻る。
【0063】
次いで、ステップS2において、図12(a)に示すように、切り出しブロックBRが水平方向に1画素シフトされた位置から切り出される。続いて、左上画素の座標が上記設定された座標(0,1)に設定された比較ブロックBLが左眼画像PLから切り出される(ステップS3)。そして、切り出しブロックBRと比較ブロックBLとに基づいて差分絶対値和が算出され(ステップS4)、その差分絶対値和が比較器55の内蔵メモリ55a及び演算制御部56の内蔵メモリ56aに格納される(ステップS5,S6)。
【0064】
以後、図11で説明したのと同様に、処理領域A1内での比較ブロックBLの移動が終了するまでステップS3〜S9の処理が繰り返し実行される。そして、処理領域A1内での比較ブロックBLの移動が終了すると(ステップS7でYES)、ずれ量が算出され(ステップS11)、差分絶対値和の極小点が抽出される(ステップS12)。
【0065】
その後も同様に、一行目の画素に対応する切り出しブロックBRのずれ量算出処理が実行される、つまりステップS2〜S19の処理が繰り返し実行される。
ここで、図12(b)に示すように、左上画素の座標が座標(0,11)に設定された切り出しブロックBRを切り出した場合のずれ量算出処理について説明する。この切り出しブロックBRには、被写体(木)が含まれている。
【0066】
まず、図12(b)に示すように、左上画素の座標が座標(0,11)に設定された比較ブロックBLが左眼画像PLから切り出される(ステップS3)。続いて、切り出しブロックBRと比較ブロックBLとに基づいて差分絶対値和が算出され(ステップS4)、その差分絶対値和が内蔵メモリ55a,56aに格納される(ステップS5,S6)。
【0067】
次に、処理領域A1内で水平方向に1画素移動された位置から比較ブロックBLが切り出され、その比較ブロックBLと切り出しブロックBRとに基づいて差分絶対値和が算出され、その差分絶対値和が内蔵メモリ55a,56aに格納される(ステップS5,S6)。
【0068】
続いて、図12(c)に示すように、処理領域A1内で水平方向に1画素移動された位置から比較ブロックBLが切り出される。このときの切り出しブロックBRと比較ブロックBLとを比較すると、図示のように、切り出しブロックBR内の画像と比較ブロックBL内の画像とが略一致する。すなわち、このときの比較ブロックBLは切り出しブロックBRと酷似し、この比較ブロックBLが切り出しブロックBRに対応する左眼画像PLの領域であると言える。このような切り出しブロックBRと比較ブロックBLとに基づいて差分絶対値和が算出されると、その差分絶対値和は0(ゼロ)に近い値となり、その差分絶対値和が上記最小値となる。このため、このときの比較ブロックBLと切り出しブロックBRとのずれ位置、つまり処理領域A1の始点(左上画素)からの比較ブロックBLの移動量が右眼画像PR及び左眼画像PLのずれ量となる。したがって、この場合のずれ量は2画素となる。なお、差分絶対値和の最小値は、実際には、図13(a)に示すように比較ブロックBLの処理領域A1内での移動を終了した後に算出される。
【0069】
以後も同様に、切り出しブロックBRの右眼画像PR内での水平方向の移動が終了するまでステップS2〜S19の処理が繰り返し実行される。そして、図13(b)に示すように、切り出しブロックBRが右眼画像PRの終端まで移動された後、その時の切り出しブロックBRに対するずれ量が算出され、その切り出しブロックBRに対する差分絶対値和の極小点が抽出されると、切り出しブロックBRの右眼画像PR内での水平方向の移動が終了したと判定される(ステップS13でYES)。このような一連の処理により、右眼画像PR内で水平方向に1画素ずつシフトされた各切り出しブロックBR、つまり一行目の各画素に対応する各切り出しブロックBRに対するずれ量が算出される。さらに、図13(c)に示すように、一行目の各画素に対応する各切り出しブロックBRに対する差分絶対値和の極小点が抽出される(丸印参照)。
【0070】
次に、図8に示すステップS20において、メモリ制御部53は、右眼画像PR内での切り出しブロックBRの垂直方向への移動が終了したか否かを判定する。具体的には、切り出しブロックBRの左上画素の垂直位置Vpが、右眼画像PRの垂直サイズVsから切り出しブロックBRの垂直ブロックサイズBVsを減算した値に一致したときに、切り出しブロックBRの垂直方向への移動が終了したと判定される。ここでは、切り出しブロックBRの垂直方向への移動が未だ終了していないため(ステップS20でNO)、ステップS21に移る。
【0071】
続いて、直前の垂直位置Vp(ここでは、Vp=0)の全水平領域における切り出しブロックBR、つまり一行目の全画素に対応する全ての切り出しブロックBRに対する演算結果(ずれ量)に基づいて、次に切り出しブロックBRを切り出す垂直位置Vpを決定する。具体的には、ステップS21において、演算制御部56は、直前の垂直位置Vpにおける全ての切り出しブロックBRに対するずれ量が0であるか否かを判定する。ここでは、上述したようにずれ量が2となる切り出しブロックBRが存在するため(ステップS21でNO)、ステップS22に移る。このステップS22において、切り出しブロックBRの左上画素の垂直位置Vpに1が加算される。
【0072】
一方、上記ステップS21において、直前の垂直位置Vp(=0)における全ての切り出しブロックBRに対するずれ量が0であると判定された場合には(ステップS21でYES)、演算制御部56によって、切り出しブロックBRの左上画素の垂直位置Vpに切り出しブロックBRの垂直ブロックサイズBVsが加算される(ステップS23)。例えば図15(a)、(b)に示すように、右眼画像PRaにおいて切り出しブロックBRaが水平方向に移動した全領域(ブロック範囲)において視差のある被写体が含まれておらず、左眼画像PLaの比較ブロックBLaが移動される処理領域A1aの全領域において視差のある被写体が含まれていないと想定する。この場合には、図15(c)に示すように、M行目(図15では一行目)の全水平領域における切り出しブロックBRに対するずれ量が0になる可能性が高い。換言すると、M行目の全ての切り出しブロックBRに対するずれ量が0である場合には、それらのブロックが移動したブロック範囲(図15(b)のハッチング領域)には視差のある被写体が含まれていない可能性が高いため、このブロック範囲内の画素に対するずれ量算出処理が不要であると判断することができる。そこで、図15(d)に示すように、切り出しブロックBRaの左上画素の垂直位置Vpが垂直ブロックサイズBVs分シフトされ、上記ブロック範囲内の画素に対するずれ量算出処理がスキップされる。なお、この場合には、切り出しブロックBRaの移動領域MRが全水平領域に設定され、比較ブロックBLaの移動範囲MLが全水平領域に設定された上で、以下に説明するステップS24,S25の処理をスキップしてステップS26に移る(図8では図示略)。
【0073】
次に、これまでの演算結果(ずれ量及び極小点)に基づいて、処理領域A1内での比較ブロックBLの移動範囲ML及び右眼画像PR内での切り出しブロックBRの水平方向の移動領域MRが設定される。まず、ステップS24では、直前の垂直位置Vp(ここでは、Vp=0)におけるずれ量算出処理において、判定レベルT1よりも低い極小点が1つ以上抽出されか否かが判定される。本例では、図11(d)や図13(c)に示すように、判定レベルT1よりも低い極小点が1つ以上抽出されているため(ステップS24でYES)、ステップS25に移る。
【0074】
続いて、ステップS25において、演算制御部56は、直前の垂直位置Vp(N行目)で算出された演算結果(極小点)に基づいて、次の垂直位置(N+1行目)の画素に対するずれ量算出処理の際の移動範囲ML及び移動領域MRを絞るように設定する。このように設定するのは、同じ被写体(ここでは、木)であれば、垂直位置が移動しても水平方向のずれ量はほとんど変わらないと考えられ、N行目のずれ量算出処理で抽出された極小点におけるずれ位置付近に、N+1行目の画素に対する差分絶対値和の最小値が現れると考えられるためである。以下に、移動範囲ML及び移動領域MRの設定方法について詳述する。
【0075】
まず、演算制御部56は、直前の垂直位置Vp(=0)における全切り出しブロックBRに対するずれ量算出処理で抽出された差分絶対値和の極小点を、図14(a)に示すように、ずれ位置を横軸に取ったグラフ上にプロットする。このグラフ(極小点のずれ位置)に基づいて、次の垂直位置Vp(ここでは、Vp=1)における比較ブロックBLの移動範囲MLが設定される。
【0076】
具体的には、演算制御部56は、上記グラフ上にプロットされた極小点に基づいて、極小点が密集した密集領域(丸枠参照)を抽出する。続いて、演算制御部56は、上記抽出した密集領域内の極小点におけるずれ位置に基づいて、比較ブロックBLの移動範囲MLを設定する。
【0077】
より具体的には、演算制御部56は、密集領域内の極小点に対応するずれ位置の平均値を算出する。例えば密集領域内において、ずれ位置が0画素の極小点が1つ、ずれ位置が1画素の極小点が2つ、ずれ位置が2画素の極小点が1つ、ずれ位置が3画素の極小点が1つ、ずれ位置が4画素の極小点が1つ存在する場合のずれ位置の平均値は、(0+1+2+3+4)/5=2画素となる。次に、演算制御部56は、そのずれ位置の平均値を中心に、前後X画素間の領域のみを比較ブロックBLの移動範囲MLに設定する。ここで、上記X画素は、例えば密集領域内における極小点のずれ位置のばらつきが小さいほど少ない画素数に設定される。すなわち、上記ばらつきが小さいほど比較ブロックBLの移動範囲が狭く設定される。また、このとき、密集領域内の極小点が全て含まれるように比較ブロックBLの移動範囲MLが設定される。ここでは、処理領域A1内において、ずれ位置が0〜4画素の領域が比較ブロックBLの移動範囲MLに設定される。
【0078】
なお、密集領域であるか否かを判断する基準は適宜設定可能であるが、例えばずれ位置のY(Yは1以上の整数)画素間にZ(Zは1以上の整数)個以上の極小点が存在する領域を密集領域であると設定することができる。例えばY画素が2画素で、Z個が4個である場合には、ずれ位置が0〜2画素の間の領域に極小点が4個以上存在する場合にその領域が密集領域であると設定される。また、Y画素やZ個は、画像サイズ、切り出しブロックBRのサイズや処理領域A1のサイズなどに応じて適宜設定される。
【0079】
また、ステップS25では、上記グラフに基づいて、次の垂直位置Vpにおける切り出しブロックBRの水平方向の移動領域MRが設定される。具体的には、まず、演算制御部56は、ずれ位置が0画素付近となる極小点を抽出し、その極小点に対応する切り出しブロックBRを抽出する。本例では、ずれ位置が0画素である極小点に対応する切り出しブロックBRとして、図14(b)に示すように、水平位置HpRが1〜6の6つの切り出しブロックBRが抽出される。次に、演算制御部56は、この抽出された切り出しブロックBRにおける水平位置(行方向の位置)を移動領域MRから除外する。すなわち、演算制御部56は、次の垂直位置Vp(=1)におけるずれ量算出処理において、上記抽出された水平位置から切り出しブロックBRの切り出しを行わないように制御する。本例では、図14(c)に示すように、水平位置HpRが1〜10の領域が移動領域MRから除外されるため、移動領域MRは、水平位置HpRが0の領域及び11〜Hs−BHsの領域に設定される。このように移動領域MRから除外するのは、極小点におけるずれ位置が0画素ということは両眼視差がないということであり、当該撮像装置1から遠く離れた位置の映像である可能性が高いためである。
【0080】
このように本例では、図8に示すステップS25において、比較ブロックBLの移動範囲MLが一部の領域に設定され、切り出しブロックBRの移動領域MRが一部の領域に設定される。
【0081】
次に、切り出しブロックBRの移動領域MRが全ての領域に設定されているか、又は一部の領域に設定されているかが判定される(ステップS26)。ここでは、切り出しブロックBRの移動領域MRが一部の領域に設定されているため(ステップS26でNO)、切り出しブロックBRの左上画素の水平位置HpRが上記設定された移動領域MRの最初の水平位置(本例では、0)に設定される(ステップS27)。なお、上記ステップS26において、切り出しブロックBRの移動領域MRが全ての領域に設定されていると判定された場合には(ステップS26でYES)、切り出しブロックBRの左上画素の水平位置HpRが常に0に設定される(ステップS28)。
【0082】
続いて、比較ブロックBLの移動範囲MLが全ての領域に設定されているか、又は一部の領域に設定されているかが判定される(ステップS29)。ここでは、比較ブロックBLの移動範囲MLが一部の領域に設定されているため(ステップS29でNO)、比較ブロックBLの左上画素の水平位置HpLが上記設定された移動範囲MLの最初のずれ位置に対応する処理領域A1内の水平位置(本例では、0)に設定される(ステップS30)。なお、上記ステップS29において、比較ブロックBLの移動範囲MLが全ての領域に設定されていると判定された場合には(ステップS29でYES)、比較ブロックBLの左上画素の水平位置HpLが常に0に設定される(ステップS31)。これらステップS30,S31の処理後、ステップS2に戻って、垂直位置Vp=1の画素に対するずれ量算出処理が開始される。
【0083】
次に、ステップS2において、図16(a)に示すように、左上画素の座標が座標(1,0)に設定された切り出しブロックBRが右眼画像PRから切り出される。続いて、左上画素の座標が座標(1,0)に設定された比較ブロックBLが左眼画像PLから切り出される(ステップS3)。そして、これら切り出しブロックBRと比較ブロックBLとに基づいて差分絶対値和が算出され(ステップS4)、その差分絶対値和が内蔵メモリ55a,56aに格納される(ステップS5,S6)。
【0084】
次に、処理領域A1内での比較ブロックBLの移動が未終了で(ステップS7でNO)、比較ブロックBLの移動範囲MLが一部の領域に設定されているため(ステップS8でNO)、ステップS10に移る。このステップS10では、比較ブロックBLの左上画素の水平位置HpLが、上記ステップS25で設定された移動範囲MLの次の水平位置(ここでは、1)に設定される。このとき、上記水平位置HpLのアドレスをスキップ(例えば、0から5にスキップ)させる場合には、そのスキップを指令するスキップパルス信号と、スキップ後の水平位置の画素が格納されたメモリ51のアドレスを示すスキップアドレス信号とを含むスキップ信号SSが演算制御部56からメモリ制御部53に出力される。
【0085】
以後、処理領域A1の移動範囲ML内での比較ブロックBLの移動が終了するまでステップS3〜S10の処理が繰り返し実行される。そして、図16(b)に示すように、左上画素が座標(1,4)に設定された比較ブロックBLが切り出され、その比較ブロックBLと上記切り出しブロックBRとに基づく差分絶対値和が内蔵メモリ55a,56aに格納されると、ステップS10に移る。このステップS10において、移動範囲MLの次の水平位置がない場合、つまり比較ブロックBLの移動範囲ML内での移動が終了した場合には、ステップS11に移る(図示略)。続いて、上記ステップS11において切り出しブロックBRに対するずれ量が算出され、ステップS12において切り出しブロックBRに対する差分絶対値和の極小点が抽出される。具体的には、ずれ位置(移動量)が0〜4画素の比較ブロックBLとの比較演算によって算出された差分絶対値和に基づいて、切り出しブロックBRに対するずれ量が算出され、判定レベルT1よりも低い極小点が抽出される。
【0086】
このように、垂直位置Vp=1におけるずれ量算出処理では、処理領域A1内の移動範囲ML以外の領域(本例では、ずれ位置=5以降の領域)からは比較ブロックBLの切り出しが省略され、差分絶対値和の算出が省略される。
【0087】
次いで、切り出しブロックBRの右眼画像PR内における水平方向の移動が未終了で(ステップS13でNO)、切り出しブロックBRの移動領域MRが一部の領域に設定されているため(ステップS14でNO)、ステップS17に移る。このステップS17では、切り出しブロックBRの左上画素の水平位置HpRが、上記ステップS25で設定された移動領域MRの次の水平位置に設定される。本例では、図16(b)に示すように、右眼画像PRにおける水平位置=1から水平位置=10までが移動領域MRから除外されているため、切り出しブロックBRの左上画素の水平位置HpRが11に設定される。このとき、上記水平位置HpRを0から11にスキップさせるために、そのスキップを指令するスキップパルス信号と、スキップ後の水平位置の画素が格納されたメモリ51のアドレスを示すスキップアドレス信号とを含むスキップ信号SSが演算制御部56からメモリ制御部53に出力される。
【0088】
次に、比較ブロックBLの移動範囲MLが一部の領域に設定されているため(ステップS19でNO)、比較ブロックBLの左上画素の水平位置HpLが、上記ステップS25で設定された移動範囲MLの最初のずれ位置(ここでは、0画素)に対応する処理領域A1内の水平位置に設定される(ステップS19)。このため、本例では、比較ブロックBLの左上画素の水平位置HpLが11に設定される。その後、ステップS2に戻る。
【0089】
次に、図16(c)に示すように、左上画素の座標が座標(1,11)に設定された切り出しブロックBRが右眼画像PRから切り出され、左上画素の座標が座標(1,11)に設定された比較ブロックBLが左眼画像PLから切り出される。続いて、これら切り出しブロックBRと比較ブロックBLとに基づいて差分絶対値和が算出され(ステップS4)、その差分絶対値和が内蔵メモリ55a,56aに格納される(ステップS5,S6)。
【0090】
次に、処理領域A1に設定された移動範囲ML内で水平方向に1画素移動された位置から比較ブロックBLが切り出される。続いて、その比較ブロックBLと切り出しブロックBRとに基づいて差分絶対値和が算出され、その差分絶対値和が内蔵メモリ55a,56aに格納される(ステップS5,S6)。
【0091】
その後、図16(d)に示すように、処理領域A1に設定された移動範囲ML内で水平方向に1画素移動された位置から比較ブロックBLが切り出される。その比較ブロックBLと上記切り出しブロックBRとを比較すると、図示のように、切り出しブロックBR内の画像と比較ブロックBL内の画像とが略一致する。すなわち、このときの比較ブロックBLは切り出しブロックBRと酷似し、この比較ブロックBLが切り出しブロックBRに対応する左眼画像PLの領域であると言える。このような切り出しブロックBRと比較ブロックBLとに基づいて差分絶対値和が算出されると、その差分絶対値和は0に近い値となり、その差分絶対値和が上記最小値となる。このため、このときの比較ブロックBLにおける処理領域A1の始点(左上画素)からの移動量が、演算対象の切り出しブロックBRに対するずれ量となる。したがって、この場合のずれ量は2画素となる。その後、比較ブロックBLの移動範囲ML内での移動が終了するまでステップS3〜S10の処理が繰り返し実行される。
【0092】
以後も同様に、移動領域MR内での切り出しブロックBRの水平方向の移動が終了するまでステップS2〜S19の処理が繰り返し実行される。これにより、移動領域MRから切り出された各切り出しブロックBRが移動範囲MLから切り出された比較ブロックBLと比較され、各切り出しブロックBRに対するずれ量が算出される。そして、図17に示すように、各切り出しブロックBRに対する差分絶対値和の極小点が抽出される。この垂直位置Vp=1における全水平領域の演算結果(極小点)は、1つ前の垂直位置Vp=0の際に現れていた被写体(木)とは別の被写体が現れていないため、1つ前の垂直位置Vp=0と略同様の結果になる。したがって、比較ブロックBLの移動範囲MLを1つ前の垂直位置Vp=0における演算結果に基づいて絞っても、その絞った移動範囲ML内から切り出しブロックBRに対応するブロックを好適に探索することができ、切り出しブロックに対するずれ量を精度良く算出することができる。
【0093】
次に、ずれ量が1画素以上となる切り出しブロックBRが存在するため(図8のステップS21でNO)、ステップS22において、切り出しブロックBRの左上画素の垂直位置Vpに1が加算される(Vp=1+1)。続いて、図17に示すように判定レベルT1よりも低い極小点が1つ以上抽出されているため(ステップS24でYES)、ステップS25に移る。このステップS25では、比較ブロックBLの移動範囲MLが、直前の垂直位置Vp=1におけるずれ量算出処理で抽出された極小点に基づいて再設定される。例えば図17に示すように、垂直位置Vp=1における極小点のずれ位置の平均値が、垂直位置Vp=0における極小点のずれ位置の平均値からずれている場合には、そのずれに合わせて比較ブロックBLの移動範囲MLが変更される。本例では、垂直位置Vp=1の演算結果では、密集領域における極小点のずれ位置のばらつきが大きくなるため、次の垂直位置Vp=2における比較ブロックBLの移動範囲MLが、ずれ位置が0〜4画素の領域から0〜5画素の領域に変更される。
【0094】
ここで、例えば図18(a)に示すように、垂直位置Vp=N−1における演算結果では3つの密集領域が存在し、3つの移動範囲MLが設定されていた場合を想定する。これに対し、図18(b)に示すように、垂直位置Vp=Nにおける演算結果では、上記3つの移動範囲MLのうち1つの移動範囲ML1において算出された差分絶対値和が全て判定レベルT1以上になったとする。この場合には、全ての差分絶対値和が判定レベルT1以上になった移動範囲ML1を、比較ブロックBLの移動範囲MLから除外する。すなわち、次の垂直位置Vp=N+1のずれ量算出処理において、上記移動範囲MLでは比較ブロックBLの切り出し及び差分絶対値和の算出を行わないようにする。
【0095】
以後も同様に、前の垂直位置における演算結果を利用して移動範囲ML及び移動領域MRが設定された上で、ずれ量算出処理が実行される。
次に、図19(a)に示すように、直前の垂直位置において現れていた被写体(ここでは、木)とは異なる被写体(ここでは、車)が現れた場合について説明する。ここでは、切り出しブロックBR及び比較ブロックBLの左上画素の垂直位置Vpが6の場合を例に挙げて説明する。この場合にも、上述したのと同様に、直前の垂直位置Vp=5における演算結果に基づいて設定された移動範囲ML(ここでは、ずれ位置が0〜3画素の領域)及び移動領域MR(ここでは、全水平領域)を利用して、ステップS2〜S19の処理が実行される。
【0096】
すなわち、まず、図19(a)に示すように、左上画素が座標(6,0)に設定された切り出しブロックBR及び比較ブロックBLが切り出され、両ブロックBR,BLに基づき差分絶対値和が算出される(ステップS2〜S4)。続いて、図19(b)に示すように、処理領域A1の移動範囲ML内、具体的には座標(6,0)〜座標(6,3)から比較ブロックBLが順次切り出され、差分絶対値和が順次算出される。そして、それら複数の差分絶対値和から極小点が算出される。次に、図19(c)に示すように、切り出しブロックBRが右眼画像PR内で水平方向に1画素ずつ移動され、各切り出しブロックBR毎に移動範囲ML内の比較ブロックBLと比較されて差分絶対値和の極小点が算出される。この差分絶対値和の極小点の算出が、切り出しブロックBRの右眼画像PR内での移動が終了するまで繰り返し実行される(ステップS2〜S19)。なお、切り出しブロックBRの右眼画像PR内での移動が終了すると、切り出しブロックBR及び比較ブロックBLの垂直位置Vpに1が加算される(ステップS20〜S22)。
【0097】
しかし、上述したずれ量算出処理で算出される極小点(差分絶対値和)は、図19(d)に示すように、全てが判定レベルT1よりも高くなってしまうため、判定レベルT1よりも低い極小点として抽出することができない。これは、全水平領域に別の被写体(車)が現れたため、すなわち直前の垂直位置で現れていた被写体(木)とは視差量(ずれ量)の異なる被写体(車)が現れたために、直前の垂直位置の演算結果からフィードバックされた移動範囲MLを有効に利用できなくなり、ずれ量を正確に算出することができなくなったのである。
【0098】
そこで、本実施形態では、前の垂直位置における演算結果を利用するとずれ量を正確に算出することができないと判断した場合には、その時に設定されている移動範囲ML及び移動領域MRをクリアする。具体的には、算出された全ての極小点(差分絶対値和)が判定レベルT1を超えている場合、つまり判定レベルT1よりも低い極小点を1つも抽出できない場合には(図8のステップS24でNO)、ステップS32に移る。このステップS32において、演算制御部56は、切り出しブロックBR及び比較ブロックBLの左上画素の垂直位置Vpから1を減算する。ここでは、上記ステップS22において垂直位置Vp(=6)に1が加算されることで垂直位置Vpが7になっているため、その垂直位置Vp(=7)から1を減算することで垂直位置Vpを6に戻している。さらに、上記ステップS32において、演算制御部56は、移動範囲ML及び移動領域MRを全ての領域に設定する。その後、切り出しブロックBRの左上画素の水平位置HpRが0に設定され(ステップS28)、比較ブロックBLの左上画素の水平位置HpLが0に設定され(ステップS31)、ステップS2に戻る。これにより、図20(a)に示すように、移動範囲ML及び移動領域MRが全水平領域に設定された上で、垂直位置Vp=6の画素に対するずれ量算出処理が再度実行される、つまりステップS2〜S19の処理が再度繰り返し実行される。
【0099】
詳述すると、まず、左上画素が座標(6,0)に設定された切り出しブロックBRが右眼画像PRから切り出され(ステップS2)、左上画素が座標(6,0)に設定された比較ブロックBLが左眼画像PLから切り出される(ステップS3)。続いて、これら切り出しブロックBR及び比較ブロックBLに基づいて差分絶対値和が算出され(ステップS4)、その差分絶対値和が内蔵メモリ55a,56aに格納される(ステップS5,S6)。
【0100】
続いて、処理領域A1の全領域(移動範囲ML)内で水平方向に1画素ずつ移動された位置から比較ブロックBLが切り出される。そして、その切り出された各比較ブロックBLと切り出しブロックBRとに基づいて差分絶対値和が算出される。
【0101】
そして、図20(b)に示すように、処理領域A1の始点から水平方向に7画素移動された位置から切り出された比較ブロックBL、つまり左上画素が座標(6,7)に設定された比較ブロックBLと上記切り出しブロックBRが比較されると、切り出しブロックBR内の画像と比較ブロックBL内の画像とが略一致する。すなわち、このときの比較ブロックBLは切り出しブロックBRと酷似し、この比較ブロックBLが左眼画像PLにおける切り出しブロックBRに対応する領域であると言える。したがって、この演算対象の切り出しブロックBRに対するずれ量は7画素となる。
【0102】
以後、図20(c)に示すように、処理領域A1の全領域内での比較ブロックBLの移動が終了すると、演算対象の切り出しブロックに対するずれ量(本例では、7画素)が算出され、その切り出しブロックBRに対する差分絶対値和の極小点が抽出される。次に、図20(d)に示すように、切り出しブロックBRが右眼画像PRの全領域(移動領域MR)内で水平方向に1画素ずつ移動されて切り出される。そして、その切り出された各切り出しブロック毎にずれ量が算出され、差分絶対値和の極小点が抽出される。この垂直位置Vp=6における全水平領域の演算結果(極小点)は、図21(a)に示すように、ずれ位置の大きい領域に密集する。これは、当該垂直位置Vp=6における切り出しブロックBRに含まれる被写体(車)の視差量(ずれ量)が大きいためである。
【0103】
その後、図8のステップS21において、ずれ量が1以上となる切り出しブロックBRが存在すると判定されるため(ステップS21でNO)、切り出しブロックBRの左上画素の垂直位置Vpに1が加算される(ステップS22)。続いて、直前の垂直位置Vp=6におけるずれ量算出処理では判定レベルT1よりも低い極小点が1つ以上抽出されているため(ステップS24でYES)、比較ブロックBLの移動範囲ML及び切り出しブロックBRの移動領域MRが、直前の垂直位置Vp=6における極小点に基づいて再設定される。すなわち、本例では、図21(a)、(b)に示すように、次の垂直位置Vp=7の画素に対するずれ量算出処理における比較ブロックBLの移動範囲MLが、ずれ位置が6〜10画素の領域に設定される。
【0104】
以降も同様に、切り出しブロックBRが水平方向及び垂直方向に移動されてずれ量算出処理が実行される。そして、切り出しブロックBRの左上画素の垂直位置Vpが、右眼画像PRの垂直サイズVsから切り出しブロックBRの垂直ブロックサイズBVsを減算した値になった後に、図21(c)に示すように、その垂直位置Vpにおけるずれ量算出処理が終了すると(ステップS20でYES)、全てのずれ量算出処理が終了する。
【0105】
以上説明した本実施形態によれば、以下の効果を奏することができる。
(1)N行目の画素に対するずれ量算出処理で得られた演算結果に基づいて、N+1行目の画素に対するずれ量算出処理における比較ブロックBLの移動範囲MLを絞るように設定するようにした。これにより、N+1行目のずれ量算出処理では、左眼画像PLから切り出される比較ブロックBLの数が少なくなり、ずれ量を算出するための演算量が小さくなる。したがって、ずれ量算出処理にかかる処理時間を短縮することができる。
【0106】
(2)また、同じ被写体であれば、垂直位置が移動しても水平方向のずれ量はほとんど変わらないと考えられる。このため、比較ブロックBLの移動範囲MLを1つ前の垂直位置(N行目)における演算結果に基づいて絞っても、その絞った移動範囲ML内から切り出しブロックBRに対応するブロックを好適に探索することができ、切り出しブロックに対するずれ量を精度良く算出することができる。
【0107】
(3)さらに、左眼画像PLから切り出される比較ブロックBLの数が少なくなるため、比較ブロックBLを読み出すためのメモリ51へのメモリアクセスを減らすことができる。
【0108】
(4)視差がないと判断されるブロック範囲(例えば、ずれ量が0画素であるブロック範囲)のずれ量算出処理をスキップさせるようにした。これにより、右眼画像PRから切り出される切り出しブロックBR及び左眼画像PLから切り出される比較ブロックBLの数が少なくなり、ずれ量を算出するための演算量が小さくなる。したがって、ずれ量算出処理にかかる処理時間を短縮することができる。さらに、切り出しブロックBR及び比較ブロックBLを読み出すためのメモリ51へのメモリアクセスを減らすことができる。
【0109】
(5)N+1行目の画素に対するずれ量を算出した際に、設定された全ての移動範囲ML内で算出された差分絶対値和の全てが判定レベルT1以上である場合には、移動範囲MLを処理領域A1の全ての領域に設定した上で、N+1行目の各画素に対するずれ量算出処理を再度実行するようにした。これにより、N行目とは異なる被写体がN+1行目で現れてN行目の演算結果を有効に活用できない場合であっても、移動範囲MLを処理領域A1の全領域に設定し直すことでずれ量を正確に算出することができる。
【0110】
(他の実施形態)
なお、上記実施形態は、これを適宜変更した以下の態様にて実施することもできる。
・上記実施形態における処理領域A1のサイズは特に制限されない。例えば処理領域A1の水平ブロックサイズAHsを左眼画像PLの水平サイズHsと同一となるように設定してもよい。また、処理領域A1の垂直ブロックサイズを比較ブロックBLの垂直ブロックサイズBVsよりも大きくなるように設定してもよい。
【0111】
・上記実施形態では、左眼画像PLの処理領域A1に設定された移動範囲ML内を1画素ずつ水平方向に移動させて比較ブロックBLを切り出すようにした。これに限らず、処理領域A1に設定された移動範囲ML内をP(Pは1以上の整数)画素ずつ、例えば2画素ずつ水平方向に移動させて比較ブロックBLを切り出すようにしてもよい。
【0112】
・上記実施形態では、処理領域A1に設定された移動範囲ML内で比較ブロックBLを水平方向のみに移動させるようにした。これに限らず、処理領域A1に設定された移動範囲ML内で比較ブロックBLを水平方向(行方向)及び垂直方向(列方向)の2方向に移動させるようにしてもよい。この場合に、各切り出しブロックBRに対する水平方向のずれ量と併せて、各切り出しブロックBRに対する垂直方向のずれ量を算出するようにしてもよい。
【0113】
・上記実施形態では、切り出しブロックBR及び比較ブロックBLのブロックサイズBVs×BHsを5画素×5画素に設定したが、その大きさは特に制限されない。例えば上記ブロックサイズBVs×BHsを、3画素×3画素や3画素×5画素などに設定してもよい。
【0114】
・上記実施形態では、右眼画像PRから切り出しブロックBRを切り出し、左眼画像PLから比較ブロックBLを切り出すようにした。これに限らず、左眼画像PLから切り出しブロックを切り出し、右眼画像PRから比較ブロックを切り出すようにしてもよい。
【0115】
・上記実施形態では、各切り出しブロック毎に抽出した差分絶対値和の極小点に基づいて、次の行のずれ量算出処理における比較ブロックBLの移動範囲MLを設定するようにした。これに限らず、例えば各切り出しブロック毎に算出される差分絶対値和の最小値に基づいて、次の行のずれ量算出処理における比較ブロックBLの移動範囲MLを絞るように設定するようにしてもよい。具体的には、上記最小値となる比較ブロックBLの移動量(つまり、ずれ量)に基づいて移動範囲を絞るように設定するようにしてもよい。
【0116】
・上記実施形態では、切り出しブロックBRと比較ブロックBLとの両ブロックの相関値として輝度信号の差分絶対値和を利用するようにしたが、切り出しブロックBRと比較ブロックBLとの類似性を判断可能な相関値であれば特に限定されない。
【符号の説明】
【0117】
1 撮像装置
11R,11L 撮像部
20 画像処理プロセッサ
24 ずれ量算出処理部
42 メモリ
51 メモリ
52 レジスタ
53 メモリ制御部
54 SAD演算部
55 比較器
56 演算制御部
【技術分野】
【0001】
本発明は、画像処理装置、画像処理方法及び撮像装置に関するものである。
【背景技術】
【0002】
従来、両眼視差を持った左眼画像と右眼画像を用意し(図22(a)参照)、それぞれ独立に観察者の左右の眼に投影することにより立体視を実現する2眼式の3次元表示装置が知られている。このような表示方法では、両眼視差、つまり左眼画像と右眼画像のずれ量によって、立体感(飛び出し量)が変化する。例えば、図22(b)、(c)に示すように、左右画像のずれ量が大きくなるほど、その画像を見ている左右の視線の方向も離れて、両視線の交差位置が画面から離れる。すなわち、左右画像のずれ量が大きくなるほど、立体像が画面から離れた位置に表示される(飛び出し量が大きくなる)。このため、上記ずれ量を算出・利用することにより、立体感を制御することや、表示の際の違和感を緩和することができる。
【0003】
このような左右画像のずれ量は、例えば輝度信号の差分絶対値和を尺度としたブロックマッチング法を利用して算出される(例えば、特許文献1,2参照)。詳述すると、図23(a)に示すように、一方の画像(ここでは、右眼画像)から所定サイズのブロックBR1を切り出し、その切り出しブロックBR1を他方の画像(ここでは、左眼画像)の同じ画素位置のブロックBL1と比較し、両ブロックBR1,BL1内の各画素の輝度差の絶対値和(差分絶対値和)を算出する。続いて、図23(b)に示すように、切り出しブロックBR1と比較する左眼画像の比較ブロックBL1を水平方向に1画素ずつシフトさせ、シフトさせる毎に差分絶対値和を算出する。この差分絶対値和の算出(比較ブロックBL1の移動)を、図23(c)に示すように、比較ブロックBL1が左眼画像の終端に達するまで続ける。そして、差分絶対値和の算出が終了すると、その算出した差分絶対値和の中から最小となる差分絶対値和を求め、図24(a)に示すように、その最小値に対応する比較ブロックBL1を特定する。この特定された比較ブロックBL1が、左眼画像における切り出しブロックBR1に対応する領域、つまり切り出しブロックBR1と最も類似する領域になる。このため、上記特定された比較ブロックBL1の位置と切り出しブロックBR1の位置との水平座標の差が左右画像のずれ量(両眼視差)となる。
【0004】
次に、図24(b)に示すように、切り出しブロックBR1を水平方向に1画素シフトさせ、図23(a)〜(c)で説明したのと同様に、左眼画像において差分絶対値和が最小となるブロック位置を特定し、左右画像のずれ量を算出する。その後、図24(c)に示すように、右眼画像の水平方向における終端(図中の右端)に達するまで、切り出しブロックBR1を水平方向に1画素ずつシフトさせ、そのシフトさせた各切り出しブロックBR1毎に上記ずれ量を算出する。
【0005】
次に、図25(a)に示すように、切り出しブロックBR1を右眼画像の水平方向における始点(図中の左端)に戻し、さらに垂直方向に1画素シフトさせ、図23及び図24で説明したのと同様に上記ずれ量を算出する。すなわち、切り出しブロックBR1を水平方向に1画素シフトさせる毎に、切り出しブロックBR1に対する左右画像のずれ量を算出する。
【0006】
以上の処理を、図25(b)に示すように、切り出しブロックBR1が右眼画像の終点(右下)に達するまで繰り返し、各切り出しブロックBR1に対する左右画像のずれ量を算出する。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開2009−129420号公報
【特許文献2】特開2001−045523号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
しかしながら、上述した算出方法では、右眼画像及び左眼画像の全ての領域に対して比較演算処理(差分絶対値和の算出処理)が行われるため、左右画像の画像サイズが大きくなるほど演算処理時間が長くなるという問題がある。
【課題を解決するための手段】
【0009】
本発明の一観点によれば、異なる位置から撮影され、複数の画素が2次元の行列状に配列された第1画像及び第2画像を入力する入力手段と、前記第1画像から所定サイズの第1ブロックを切り出す手段であって、N(Nは1以上の整数)行目の各画素に対応する前記第1ブロックを切り出す第1切り出し手段と、前記第2画像の前記第1ブロックに対する処理領域内に設定される移動範囲から前記所定サイズの第2ブロックを切り出す手段であって、前記N行目の各画素に対応する各第1ブロックに対して、領域が前記処理領域の全ての領域に設定された前記移動範囲から前記第2ブロックを行方向にP(Pは1以上の整数)画素ずつ移動させて切り出す第2切り出し手段と、前記第2ブロックの切り出し毎に、該切り出した第2ブロックと、演算対象の第1ブロックとを比較して両ブロックの相関値を算出する相関値算出手段と、前記各第1ブロック毎に、前記相関値の最大値を算出し、該最大値となる第2ブロックの移動量に基づいて、演算対象の第1ブロックに対する前記第1画像及び前記第2画像のずれ量を算出するずれ量算出手段と、前記第1画像のN+1行目の画素に対する前記ずれ量を算出する際に、前記N行目において算出された前記相関値に基づいて前記移動範囲を絞るように設定する設定手段と、を有する。
【発明の効果】
【0010】
本発明の一観点によれば、ずれ量算出にかかる処理時間を短縮することができるという効果を奏する。
【図面の簡単な説明】
【0011】
【図1】一実施形態の撮像装置を示すブロック図。
【図2】ずれ量算出処理部の内部構成例を示すブロック図。
【図3】(a)〜(c)は、ずれ量算出処理の概要を示す説明図。
【図4】(a)〜(d)は、ずれ量算出処理の概要を示す説明図。
【図5】(a)、(b)は、ずれ量算出処理の概要を示す説明図。
【図6】ずれ量算出処理方法を示すフローチャート。
【図7】ずれ量算出処理方法を示すフローチャート。
【図8】ずれ量算出処理方法を示すフローチャート。
【図9】(a)、(b)は、右眼画像及び左眼画像を示す説明図。
【図10】各種パラメータを示す説明図。
【図11】(a)〜(d)は、ずれ量算出処理を示す説明図。
【図12】(a)〜(c)は、ずれ量算出処理を示す説明図。
【図13】(a)〜(c)は、ずれ量算出処理を示す説明図。
【図14】(a)〜(c)は、ずれ量算出処理を示す説明図。
【図15】(a)〜(d)は、ずれ量算出処理を示す説明図。
【図16】(a)〜(d)は、ずれ量算出処理を示す説明図。
【図17】ずれ量算出処理を示す説明図。
【図18】(a)、(b)は、ずれ量算出処理を示す説明図。
【図19】(a)〜(d)は、ずれ量算出処理を示す説明図。
【図20】(a)〜(d)は、ずれ量算出処理を示す説明図。
【図21】(a)〜(c)は、ずれ量算出処理を示す説明図。
【図22】(a)〜(c)は、右眼画像と左眼画像のずれ量を示す説明図。
【図23】(a)〜(c)は、従来のずれ量算出処理を示す説明図。
【図24】(a)〜(c)は、従来のずれ量算出処理を示す説明図。
【図25】(a)、(b)は、従来のずれ量算出処理を示す説明図。
【発明を実施するための形態】
【0012】
以下、一実施形態を図1〜図21に従って説明する。
図1に示すように、撮像装置1は、撮像部10と、画像処理プロセッサ(ISP:Image Signal Processor)20と、入力部41と、メモリ42と、表示デバイス43とを有している。この撮像装置1は、例えばデジタルスチルカメラである。
【0013】
撮像部10は、右眼画像用の撮像部11Rと、左眼画像用の撮像部11Lとを有している。撮像部11Rは、撮像光学系12Rと、撮像素子部13Rと、アナログフロントエンド(AFE:Analog Front End)14Rとを有している。同様に、撮像部11Lは、撮像光学系12Lと、撮像素子部13Lと、AFE14Lとを有している。
【0014】
撮像光学系12R,12Lは、被写体からの光を集光する複数のレンズ(フォーカスレンズなど)や、これらのレンズを通過した光の量を調整する絞り等を含み、光学的な被写体像を撮像素子部13R,13Lにそれぞれ導く。これら撮像光学系12R,12Lは、例えば撮像装置1の前面(図示略)において異なる位置に設けられている。
【0015】
撮像素子部13R,13Lは、例えばベイヤ配列のカラーフィルタと、撮像素子とを含む。撮像素子は、例えばCCD(Charge Coupled Device)イメージセンサである。この撮像素子は、カラーフィルタを介して入射する光の量に応じた撮像信号(アナログ信号)を出力する。
【0016】
AFE14R,14Lは、撮像素子部13R,13Lからそれぞれ出力されるアナログの撮像信号をデジタルの画像データに変換するA/D変換回路を含み、画像データを画像処理プロセッサ20に出力する。また、AFE14R,14Lは、画像処理プロセッサ20から供給される制御信号を撮像素子部13R,13Lへそれぞれ出力する。
【0017】
画像処理プロセッサ20は、撮像部10から出力される画像データ(ベイヤデータ)に対して各種画像処理を施す。このとき、画像処理プロセッサ20は、所定の処理段階で画像データをメモリ42に一時的に格納する。すなわち、メモリ42は作業メモリとして機能する。このメモリ42は、例えば同期式半導体メモリ(SDRAM:Synchronous Dynamic Random Access Memory)などの書き換え可能なメモリである。また、画像処理プロセッサ20は、メモリ42に格納された各種画像処理後の画像データを表示デバイス43に表示したり、メモリカード44に格納したりする。
【0018】
なお、表示デバイス43としては、液晶表示装置(LCD:Liquid Crystal Display)や有機EL(Electronic Luminescence)などを用いることができる。メモリカード44は、例えばコンパクトフラッシュ(登録商標)やSDメモリカード(登録商標)などの携帯型メモリカードである。
【0019】
入力部41は、ユーザにより操作されるシャッタボタンやメニューボタン等の各種スイッチを有している。この各種スイッチは、例えば写真撮影、撮影条件の設定や表示方式の設定等を行うために使用される。
【0020】
次に、画像処理プロセッサ20の内部構成例を説明する。
画像処理プロセッサ20は、プリプロセス部21と、色処理部22と、画像処理部23と、ずれ量算出処理部24と、コーデック部25と、メモリカードインタフェース(I/F)26と、表示I/F27と、DMA調停部28と、メモリコントローラ29と、CPU30とを有している。
【0021】
プリプロセス部21、色処理部22、画像処理部23、ずれ量算出処理部24、コーデック部25、メモリカードI/F26、表示I/F27及びDMA調停部28は、内部バス31を介して互いに接続されている。DMA調停部28は、メモリコントローラ29を介してメモリ42と接続されている。
【0022】
プリプロセス部21は、撮像部10から出力される画像データ(RGB形式の画像データ(ベイヤデータ))に対し、例えばシェーディング補正、キズ補正、傾き補正やOB(Optical Black)レベル補正等の補正処理(前処理)を施す。そして、プリプロセス部21は、補正処理後の画像データをメモリ42に格納するとともに、補正処理後の画像データをずれ量算出処理部24に出力する。なお、撮像部11Rから出力された画像データに対して補正処理を施した後の画像データは、観察者の右眼に投影するための画像(映像)となるため、以下の説明では、その画像データを右眼画像PRと称する。また、撮像部11Lから出力された画像データに対して補正処理を施した後の画像データは、観察者の左眼に投影するための画像となるため、以下の説明では、その画像データを左眼画像PLと称する。
【0023】
色処理部22は、例えば色空間変換部である。この色処理部22は、メモリ42に格納されたRGB形式の画像データ(ベイヤデータ)を読み出し、画像データをYCbCr形式の画像データに変換する。そして、色処理部22は、変換後の画像データをメモリ42に格納する。
【0024】
画像処理部23は、上記色処理部22における処理以外の他の画像処理を行う1つ又は複数の処理部である。上記他の画像処理には、例えば画素数を増減する解像度変換処理、セピア色などの色調を変換する色調変換処理、画像の輪郭(エッジ)を強調するエッジ強調処理、画像データに含まれるノイズを除去するノイズ除去処理等が含まれる。
【0025】
ずれ量算出処理部24は、プリプロセス部21から右眼画像PR及び左眼画像PLを入力し、それら右眼画像PRと左眼画像PLとのずれ量(両眼視差)を算出する。例えば、ずれ量算出処理部24は、右眼画像PR及び左眼画像PLの両画像間で画素同士の対応付けを行うことにより、画素毎のずれ量を算出する。ここで、上記画素同士の対応付けは、各画像上の画素周辺のブロック同士の相関値を求め、最も相関値の高い画素同士を対応付ける方法を用いる。そして、ずれ量算出処理部24は、算出したずれ量をメモリ42に格納する。このずれ量は、画像データを3次元表示する際に立体感等を制御するパラメータとして使用される。
【0026】
コーデック部25は、メモリ42に格納された画像データを読み出し、その画像データを所定の方式(例えばJPEG(Joint Photographic Experts Group)方式)により符号化し、符号化後の画像データ(符号化データ)をメモリ42に格納する。なお、当該撮像装置1が動画の撮影が可能であれば、コーデック部25に、動画データを所定の方式(例えばMPEG(Moving Picture Experts Group)方式)により符号化する機能を持たせてもよい。
【0027】
メモリカードI/F26は、撮像装置1に装着されるメモリカード44と接続される。メモリカードI/F26は、メモリ42に格納されたデータ(例えば符号化された画像データ)をメモリカード44に格納する。
【0028】
表示I/F27には、表示デバイス43が接続されている。表示デバイス43は、撮影装置の駆動源であるバッテリの残量、撮影モード、撮影フレーム、記憶された画像データの2次元表示又は3次元表示等に用いられる。例えば表示I/F27は、メモリ42に格納された画像データを読み出し、その画像データを表示デバイス43に出力する。また、表示I/F27は、撮像部11R,11Lによって撮像された画像データを3次元表示する際には、メモリ42に格納された右眼画像PR、左眼画像PL及びずれ量を読み出し、ずれ量に基づいて右眼画像PR及び左眼画像PLを表示デバイス43に3次元表示する。
【0029】
ここで、3次元表示の表示方式としては、公知の方式を用いることができる。例えば右眼画像PR及び左眼画像PLを並べて表示して裸眼平行法により立体視を行う方式を用いることができる。また、表示デバイス43にレンチキュラーレンズを貼り付け、表示デバイス43の表示面の各々の所定位置に右眼画像PR及び左眼画像PLを表示することにより、観察者の左右の眼にそれぞれの画像PR,PLを入射させて3次元表示を実現する方式を用いることができる。
【0030】
プリプロセス部21と、色処理部22と、画像処理部23と、ずれ量算出処理部24と、コーデック部25と、メモリカードI/F26と、表示I/F27とは、メモリアクセスコントローラ(DMAC:Direct Memory Access Controller)21a〜27aをそれぞれ有している。DMAC21a〜27aは、各処理部21〜27が行う処理に応じたアクセス要求を出力する。例えばプリプロセス部21は、撮像部10から出力される画像データを、メモリ42に格納する。このため、プリプロセス部21のDMAC21aは、書き込み要求(ライトリクエスト)を出力する。表示I/F27は、表示デバイス43に表示する画像データをメモリ42から読み出す。このため、表示I/F27のDMAC27aは、読み出し要求(リードリクエスト)を出力する。
【0031】
DMA調停部28は、各処理部21〜27のDMAC21a〜27aから出力され競合する要求(リクエスト)を、例えば各処理部21〜27に対応して設定された優先度に従って要求を調停し、1つの処理部に対するアクセスを許可する。アクセスが許可された処理部は、メモリ42に対するアクセスのための制御信号を出力する。例えば読み出し要求の場合、メモリコントローラ29は、制御信号に応じてメモリ42からデータを読み出し、その読み出したデータを要求元に出力する。また、メモリコントローラ29は、書き込み要求と、その要求元から出力されるデータをメモリ42に出力し、メモリ42はそのデータを記憶する。
【0032】
CPU30は、画像処理プロセッサ20全体を統括制御するもので、データや画像の解析、解析結果に基づく必要な情報の各処理部への設定及びデータの書き込み/読み出し制御等を行う。また、CPU30は、上記撮像素子部13R,13L(CCDイメージセンサ)のリセットを指令する制御信号を、AFE14R,14Lをそれぞれ通じて撮像素子部13R,13Lに出力する。なお、このCPU30には、上記入力部41の各種スイッチにより設定・指定された操作情報が入力される。
【0033】
次に、ずれ量算出処理部24の内部構成例及び動作を説明する。
はじめに、ずれ量算出処理部24によるずれ量算出処理の概要を説明する。
図3(a)に示すように、まず、撮像部11R,11Lによって撮影された2つの画像データ、つまり異なる位置(視点)から撮影された右眼画像PR及び左眼画像PLを取得する。これら右眼画像PR及び左眼画像PLは、複数の画素が水平方向(行方向)及び垂直方向(列方向)に2次元状に配列された画像データ、つまり複数の画素が2次元の行列状に配列された画像データである。
【0034】
一番はじめの垂直位置の画素における演算処理(ここでは、一行目の画素に対するずれ量算出処理)では、一方の画像データ(ここでは、右眼画像PR)の水平位置の始点(1列目)から所定サイズの切り出しブロックBRを切り出す。その切り出しブロックBRと比較するブロックとして、他方の画像データ(ここでは、左眼画像PL)の処理領域A1内の始点(ここでは、1行1列目)から切り出しブロックBRと同サイズの比較ブロックBLを切り出す。そして、切り出しブロックBRと比較ブロックBLとの両ブロック内の各画素の輝度差の絶対値和(差分絶対値和)を算出する。なお、上記処理領域A1は、演算対象の切り出しブロックBRのずれ量を算出するためにその切り出しブロックBRと比較演算される領域であり、その切り出しブロックBRに対応する領域を左眼画像PLから探索するための領域である。
【0035】
続いて、図3(b)に示すように、比較ブロックBLを処理領域A1内で水平方向に1画素ずつシフト(移動)させるとともに、比較ブロックBLをシフトさせる毎に上記差分絶対値和を算出する。この差分絶対値和の算出処理を、比較ブロックBLが上記処理領域A1の終端に達するまで続ける。そして、算出された多数の差分絶対値和のうち最小となる差分絶対値和を算出し、その差分絶対値和の最小値となる比較ブロックBLの位置と切り出しブロックBRの位置とから当該切り出しブロックBRに対する両画像PR,PLのずれ量を算出する。このとき、図3(c)に示すように、切り出しブロックBRと比較ブロックBLとのずれ位置を横軸に取り、差分絶対値和の大きさを縦軸に取ったグラフ上に、処理領域A1内の水平方向の全ブロックから算出された全ての差分絶対値和をプロットし、各プロット点を曲線で結ぶ。すると、例えば図示のように、複数の極小点(極小値)を有する曲線が形成される。そして、この極小点における差分絶対値和の大きさと予め設定された判定レベルT1とを比較し、差分絶対値和が判定レベルT1よりも低くなる極小点を抽出する。なお、図示の例では、2つの極小点が抽出される(丸印参照)。
【0036】
次に、図4(a)に示すように、右眼画像PRからの切り出し位置を水平方向に1画素シフトして切り出しブロックBRを切り出す。そして、上述と同様に、切り出しブロックBRに対するずれ量を算出するとともに、図4(b)に示すように、判定レベルT1よりも低くなる極小点を抽出する。このとき、図示の例では、2つの極小点が抽出される。
【0037】
以後、図4(c)に示すように、切り出しブロックBRの切り出し位置が終点(具体的には、切り出しブロックBRの右端が右眼画像BLの右端に一致する点)に達するまで、上述と同様の処理が繰り返される。これにより、水平方向に1画素ずつ移動されて切り出された各切り出しブロックBRに対するずれ量が算出され、さらに図4(d)に示すように各切り出しブロックBRに対する極小点が抽出される。
【0038】
このように、一行目の画素に対するずれ量算出処理では、従来と同様に、切り出しブロックBRと比較される比較ブロックBLが処理領域A1の全ての領域で(始点から終点まで)水平方向に1画素ずつシフトされる。これにより、処理領域A1の全水平領域における差分絶対値和が算出され、当該切り出しブロックBRに対するずれ量が算出される。そして、切り出しブロックBRの切り出し位置が右眼画像PRの全ての領域で(始点から終点まで)水平方向に1画素ずつシフトされ、一行目の各画素に対応する各切り出しブロックBRに対するずれ量が算出される。但し、このとき、本実施形態では、ずれ量の算出と併せて、各切り出しブロックBRに対する差分絶対値和の極小点を抽出するようにしている。
【0039】
図5(a)は、上記抽出された多数の極小点、すなわち一行目の画素に対する全切り出しブロックBRにおいて抽出された極小点を1つのグラフ上にまとめてプロットしたものである。このグラフに基づいて、2行目以降の画素に対応する切り出しブロックBRと比較される比較ブロックBLの移動範囲MLを絞るように設定する。具体的には、上記グラフ上で極小点が密集した周辺領域のみを比較ブロックBLの移動範囲MLに設定する。より具体的には、極小点が密集した密集領域内の極小点におけるずれ位置の平均値を中心に、前後X画素間の領域のみを比較ブロックBLの移動範囲MLに設定する。なお、図示のように、密集領域が複数存在する場合には、比較ブロックBLの移動範囲MLも複数設定される。
【0040】
続いて、図5(b)に示すように、右眼画像PRの2行目の始点(1列目)から切り出しブロックBRを切り出す。その切り出しブロックBRと比較される比較ブロックBLを、処理領域A1内の上記設定された移動範囲MLから切り出す。ここでは、ずれ位置が0〜2画素の領域からの比較ブロックBLの切り出しはスキップされ、ずれ位置が3画素の位置から比較ブロックBLの切り出しが開始される。次に、これら切り出しブロックBRと比較ブロックBLとを比較して差分絶対値和を算出する。以降、比較ブロックBLが上記設定された移動範囲ML内のみから切り出され、その比較ブロックBLと切り出しブロックBRとの比較により差分絶対値和が算出される。そして、上記移動範囲ML内で算出された多数の差分絶対値和から当該切り出しブロックBRに対するずれ量が算出される。このように、2行目以降の画素に対するずれ量算出処理では、比較ブロックBLの移動範囲MLが絞られるため、左眼画像PLから切り出される比較ブロックBLの数が少なくなり、ずれ量を算出するための演算量が小さくなる。これにより、ずれ量算出処理における全体の処理時間を短縮することができる。
【0041】
次に、ずれ量算出処理部24の内部構成例を説明する。
図2に示すように、ずれ量算出処理部24は、メモリ51と、レジスタ52と、メモリ制御部53と、差分絶対値和(SAD)演算部54と、比較器55と、演算制御部56とを有している。
【0042】
メモリ51には、撮像部11Rから出力される画像データに対してプリプロセス部21で各種補正処理が施された画像データ(右眼画像PR)が格納される。このとき、メモリ制御部32によってメモリ51内の右眼画像PRを格納するための第1格納領域のアドレスが指定されることで、第1格納領域に右眼画像PRが格納される。また、メモリ51には、撮像部11Lから出力される画像データに対してプリプロセス部21で各種補正処理が施された画像データ(左眼画像PL)が格納される。このとき、メモリ制御部32によってメモリ51内の左眼画像PLを格納するための第2格納領域のアドレスが指定されることで、第2格納領域に左眼画像PLが格納される。なお、図2では、プリプロセス部21から直接メモリ51に、右眼画像PR及び左眼画像PLが入力されるようにしたが、これに限らず、メモリ42に格納された右眼画像PR及び左眼画像PLを読み出してメモリ51に入力するようにしてもよい。また、図2では、メモリ51がずれ量算出処理部24に内蔵されるようにしたが、メモリ51を省略して、ずれ量算出処理部24の外部に設けられたメモリ42をメモリ51の代わりに用いるようにしてもよい。
【0043】
レジスタ52には、撮影された右眼画像PR及び左眼画像PLの画像サイズ、切り出しブロックBR及び比較ブロックBLのブロックサイズ、処理領域A1のサイズや極小点の差分絶対値和と比較される判定レベルT1等の各種パラメータが格納される。上記CPU30(図1参照)からの制御信号に基づいて、ずれ量算出処理の開始・停止を指令する信号がレジスタ52から撮像部11R,11L、プリプロセス部21及びメモリ制御部32,53に出力される。また、CPU30の制御信号に基づいて、右眼画像PR及び左眼画像PLの画像サイズを示す信号がレジスタ52からメモリ制御部53に出力されるとともに、切り出しブロックBR及び比較ブロックBLのブロックサイズ、及び処理領域A1のサイズを示す信号がレジスタ52からメモリ制御部53に出力される。さらに、CPU30からの制御信号に基づいて、演算制御部56で抽出される極小点の差分絶対値和と比較される判定レベルT1がレジスタ52から演算制御部56に出力される。
【0044】
メモリ制御部53は、レジスタ52からの信号(切り出しブロックBRのブロックサイズ等を示す信号)に基づいて、メモリ51に格納された右眼画像PRの一部を切り出しブロックBRとして読み出すための読み出しアドレスをメモリ51に出力する。また、メモリ制御部53は、レジスタ52からの信号(比較ブロックBLのブロックサイズや処理領域A1のサイズ等を示す信号)に基づいてメモリ51に格納された左眼画像PLの一部を処理領域A1内から比較ブロックBLとして読み出すための読み出しアドレスをメモリ51に出力する。さらに、メモリ制御部53は、演算制御部56からのスキップ信号SS、具体的には処理領域A1内の移動範囲ML(図5参照)以外の領域をスキップすることを指令するスキップ信号SSに基づいて、メモリ51に格納された左眼画像PLの一部を上記移動範囲MLから比較ブロックBLとして読み出すための読み出しアドレスをメモリ51に出力する。これら読み出しアドレスに基づいて、メモリ51から右眼画像PRの切り出しブロックBR及び左眼画像PLの比較ブロックBLがSAD演算部54に出力される。
【0045】
メモリ制御部53は、上記読み出しアドレスを比較器55及び演算制御部56にも出力する。また、メモリ制御部53は、比較ブロックBLが処理領域A1内での移動が終了したことを示す終了信号ESを比較器55及び演算制御部56に出力する。さらに、メモリ制御部53は、演算対象の切り出しブロックBRの基準画素(ここでは、左上画素)の右眼画像PR内における座標を示すアドレスをメモリ42に出力する。
【0046】
SAD演算部54は、メモリ51から読み出された右眼画像PRの切り出しブロックBR及び左眼画像PLの比較ブロックBLを比較し、両ブロックBR,BL内の各画素の輝度差の絶対値和(差分絶対値和)を算出する。SAD演算部54は、算出した差分絶対値和を比較器55及び演算制御部56に出力する。
【0047】
比較器55は、SAD演算部54から入力する差分絶対値和を内蔵メモリ55aに格納する。この比較器55は、内蔵メモリ55aに格納された複数の差分絶対値和を各切り出しブロックBR毎に比較し、各切り出しブロックBRに対する差分絶対値和の最小値を求める。そして、比較器55は、算出した最小値に対応する比較ブロックBLの垂直位置と演算対象の切り出しブロックBRの垂直位置とに基づいて、当該切り出しブロックBRに対するずれ量を算出し、そのずれ量をメモリ42に出力する。
【0048】
演算制御部56は、当該ずれ量算出処理部24を統括的に制御し、図6〜図8に示すフローチャートの処理を実行する。この演算制御部56は、SAD演算部54から入力する差分絶対値和を内蔵メモリ56aに格納する。演算制御部56は、内蔵メモリ56aに格納された複数の差分絶対値和を切り出しブロックBR毎に比較し、各切り出しブロックに対する差分絶対値和の極小点を求める。演算制御部56は、求めた極小点における差分絶対値和とレジスタ52から入力される判定レベルT1とを比較し、判定レベルT1よりも低い極小点を抽出する。演算制御部56は、抽出した極小点を内蔵メモリ56aに順次格納する。演算制御部56は、その格納された極小点に基づいて、極小点が密集する密集領域(ずれ位置領域)を抽出し、その密集領域に基づいて比較ブロックBLの移動範囲ML(図5参照)を設定する。そして、演算制御部56は、設定した移動範囲MLに基づいて、その移動範囲ML以外の処理領域A1内の範囲から比較ブロックBLが切り出されないように上記スキップ信号SSを生成し、そのスキップ信号SSをメモリ制御部53に出力する。なお、このスキップ信号SSは、比較ブロックBLを切り出すためのアドレスをスキップさせることを指令するスキップパルスと、スキップ後のアドレス(読み出しアドレス)を示すスキップアドレスとを含んでいる。また、上記内蔵メモリ56aに格納された極小点は、右眼画像PRの各行のずれ量算出処理が終了される毎にリセットされる。
【0049】
なお、ずれ量算出処理部24は画像処理装置の一例、メモリ51は入力手段の一例、メモリ制御部53は第1切り出し手段及び第2切り出し手段の一例、SAD演算部54は相関値算出手段の一例、比較器55はずれ量算出手段の一例である。演算制御部56は、設定手段、抽出手段、第1制御手段及び第2制御手段の一例である。また、右眼画像PRは第1画像の一例、左眼画像PLは第2画像の一例、切り出しブロックBRは第1ブロックの一例、比較ブロックBLは第2ブロックの一例である。
【0050】
次に、ずれ量算出処理部24(とくに、演算制御部56)の動作、つまりずれ量算出処理方法を図6〜図21に従って説明する。ここでは、撮像部11R,11Lによって図9(a)に示すような風景を撮影し、つまり異なる位置から同一の風景を撮影し、図9(b)に示す左眼画像PLと右眼画像PRとが得られた場合を例に挙げて説明する。なお、撮影された2つの木は撮影位置から遠く離れた位置に存在する一方、車は撮影位置に近い位置に存在するものとする。
【0051】
まず、図6に示すステップS1において、メモリ制御部53及び演算制御部56によって各種パラメータが初期化される。具体的には、図10に示す切り出しブロックBR及び比較ブロックBLの左上画素の垂直位置Vpと、切り出しブロックBRの左上画素の水平位置HpRと、比較ブロックBLの左上画素の水平位置HpLとが0(ゼロ)に設定される。また、切り出しブロックBRと比較される比較ブロックBLの処理領域A1内における水平方向の移動範囲MLが処理領域A1の全ての領域に設定される。つまり、比較ブロックBLが処理領域A1の全水平領域を移動されて切り出されるように設定される。ここで、切り出しブロックBR及び比較ブロックBLの垂直ブロックサイズをBVsと示し、水平ブロックサイズをBHsと示す。また、1つの切り出しブロックBRに対する差分絶対値和の最小値及びずれ量を算出するための処理領域A1の垂直ブロックサイズをBVsと示し、水平ブロックサイズをAHsと示す。このため、全ての領域に設定された移動範囲MLは、図11(a)に示すように、処理領域A1の左端を始点とし、処理領域A1の水平ブロックサイズAHsから比較ブロックBLの水平ブロックサイズBHsを減算したサイズの領域に設定される。さらに、ステップS1の初期化では、切り出しブロックBRの右眼画像PR内における水平方向の移動領域MRが右眼画像PRの全ての領域に設定される。つまり、切り出しブロックBRが右眼画像PRの全水平領域を移動されて切り出されるように設定される。ここで、左眼画像PL及び右眼画像PRの垂直サイズをVsと示し、垂直サイズをHsと示す。このため、全ての領域に設定された移動領域MRは、右眼画像PRの左端(1列目)を始点とし、右眼画像PRの水平サイズHsから切り出しブロックBRの水平ブロックサイズBHsを減算したサイズの領域に設定される。
【0052】
また、本例では、切り出しブロックBR及び比較ブロックBLのブロックサイズBVs×BHsは5画素×5画素に設定され、処理領域A1のサイズBVs×AHsは5画素×14画素に設定されている。
【0053】
次に、図6に示すステップS2において、上記設定された座標(Vp,HpR)が切り出しブロックBRの左上に設定され、ブロックサイズが設定サイズ(BVs×BHs)に設定された切り出しブロックBRがメモリ51に格納された右眼画像PRから切り出される(読み出される)。すなわち、ここでは、図11(a)に示すように、左上画素の座標が上記設定された座標(Vp,HpR)、つまり座標(0,0)に設定され、ブロックサイズが設定サイズ(BVs×BHs)に設定された切り出しブロックBRが右眼画像PRから切り出される。
【0054】
続いて、図6に示すステップS3において、上記設定された座標(Vp,HpL)が比較ブロックBLの左上に設定され、ブロックサイズが設定サイズ(BVs×BHs)に設定された比較ブロックBLがメモリ51に格納された左眼画像PLから切り出される(読み出される)。すなわち、ここでは、図11(a)に示すように、左上画素の座標が上記設定された座標(Vp,HpL)、つまり座標(0,0)に設定され、ブロックサイズが設定サイズ(BVs×BHs)に設定された比較ブロックBLが左眼画像PLから切り出される(図6のステップS3)。
【0055】
次に、SAD演算部54は、切り出された切り出しブロックBR及び比較ブロックBLに基づいてSAD演算を行って差分絶対値和を算出する(図6のステップS4)。続いて、SAD演算部54は、算出した差分絶対値和を比較器55及び演算制御部56に出力する(ステップS5)。次いで、比較器55では上記差分絶対値和が内蔵メモリ55aに格納され、演算制御部56では上記差分絶対値和が内蔵メモリ56aに格納される(ステップS6)。
【0056】
次に、メモリ制御部53は、処理領域A1内での比較ブロックBLの移動が終了したか否かを判定する(ステップS7)。具体的には、比較ブロックBLの左上画素の水平位置HpLが、処理領域A1の右上画素の水平位置から比較ブロックBLの水平ブロックサイズBHsを減算した値に一致したときに、比較ブロックBLの処理領域A1内での移動が終了したと判定される。なお、処理領域A1の右上画素の水平位置は、処理領域A1の左上画素の水平位置に当該処理領域A1の水平ブロックサイズAHsを加算することによって算出することができる。
【0057】
上記ステップS7において、比較ブロックBLの移動が終了していないと判定されると(ステップS7でNO)、比較ブロックBLの移動範囲MLが全ての領域に設定されているか否かが判定される(ステップS8)。ここでは、上記ステップS1の初期化で上記移動範囲MLが全ての領域に設定されているため(ステップS8でYES)、比較ブロックBLの左上画素の水平位置HpLに1が加算され(ステップS9)、ステップS3に戻る。すなわち、図11(b)に示すように、比較ブロックBLの切り出し位置が処理領域A1(の移動範囲ML)内で水平方向に1画素シフトされ、そのシフトされた位置から比較ブロックBLが切り出される(ステップS3)。そして、上述と同様に、切り出しブロックBRと比較ブロックBLとに基づいて差分絶対値和が算出され(ステップS4)、その差分絶対値和が比較器55の内蔵メモリ55a及び演算制御部56の内蔵メモリ56aに格納される(ステップS5,S6)。なお、上記ステップS8において、比較ブロックBLの移動範囲MLが一部の領域に設定されていると判定された場合には(ステップS8でNO)、ステップS10の処理が実行された後にステップS3に戻る。
【0058】
以後、処理領域A1内での比較ブロックBLの移動が終了するまでステップS3〜S9の処理が繰り返し実行される。これにより、比較ブロックBLが処理領域A1内で水平方向に1画素シフトされる毎に差分絶対値和が算出されることになる。そして、図11(c)に示すように、比較ブロックBLが処理領域A1の終端まで移動され、その時の差分絶対値和が算出されると、処理領域A1内での比較ブロックBLの移動が終了したと判定される(ステップS7でYES)。このとき、図11(c)に示すように、比較ブロックBLの右上画素が処理領域A1の右上画素に一致し、比較ブロックBLの左上画素が処理領域A1の右上画素の水平位置から比較ブロックBLの水平ブロックサイズBHsを減算した値に一致する。また、メモリ制御部53からは終了信号ESが比較器55と演算制御部56に出力される。
【0059】
次に、図6に示すステップS11において、比較器55は、内蔵メモリ55aに格納された多数の差分絶対値和を比較し、差分絶対値和の最小値を算出する。このように差分絶対値和が最小値となったときの比較ブロックBLの移動量が、演算対象の切り出しブロックBRに対する右眼画像PR及び左眼画像PLのずれ量として算出される。そして、比較器55は、算出したずれ量をメモリ42に出力する。
【0060】
続いて、ステップS12において、演算制御部56は、内蔵メモリ56aに格納された各切り出しブロックBRに対応する多数の差分絶対値和から1つ又は複数の極小点を算出する。例えば図11(d)に示すように、切り出しブロックBRと比較ブロックBLとのずれ位置(比較ブロックBLの移動量)を横軸に取り、差分絶対値和の大きさを縦軸に取ったグラフ上に上記多数の差分絶対値和をプロットし、各プロット点を曲線で結び、この曲線に基づいて差分絶対値和の極小点を算出する。そして、演算制御部56は、算出した極小点の差分絶対値和の大きさとレジスタ52から入力される判定レベルT1とを比較し、その判定レベルT1よりも低くなる差分絶対値和の極小点を抽出する。このように抽出された極小点における差分絶対値和及びずれ位置は内蔵メモリ56aに格納される。
【0061】
次に、図7に示すステップS13において、メモリ制御部53は、右眼画像PR内での切り出しブロックBRの水平方向への移動が終了したか否かを判定する。具体的には、切り出しブロックBRの左上画素の水平位置HpLが、右眼画像PRの水平サイズHsから切り出しブロックBRの水平ブロックサイズBHsを減算した値に一致したときに、切り出しブロックBRの水平方向への移動が終了したと判定される。ここでは、切り出しブロックBRの水平方向への移動が未だ終了していないため(ステップS13でNO)、ステップS14において、切り出しブロックBRの移動領域MRが全ての領域に設定されているか否かが判定される。このとき、上記ステップS1の初期化で上記移動領域MRが全ての領域に設定されているため(ステップS14でYES)、切り出しブロックBRの左上画素の水平位置HpRに1が加算される(ステップS15)。その後、ステップS16に移る。なお、上記ステップS14において、切り出しブロックBRの移動領域MRが一部の領域に設定されていると判定された場合には(ステップS14でNO)、ステップS17の処理が実行された後にステップS16に移る。
【0062】
続いて、ステップS16において、比較ブロックBLの移動範囲MLが全ての領域に設定されているか否かが判定される。ここでは、上記ステップS1の初期化で上記移動範囲MLが全ての領域に設定されている(ステップS16でYES)。このため、続くステップS18において、比較ブロックBLの左上画素の水平位置HpLが、切り出しブロックBRの左上画素の水平位置HpRと等しくなるように変更される(HpL=HpR)。その後、ステップS2に戻る。なお、上記ステップS16において、比較ブロックBLの移動範囲MLが一部の領域に設定されていると判定された場合には(ステップS16でNO)、ステップS19の処理が実行された後にステップS2に戻る。
【0063】
次いで、ステップS2において、図12(a)に示すように、切り出しブロックBRが水平方向に1画素シフトされた位置から切り出される。続いて、左上画素の座標が上記設定された座標(0,1)に設定された比較ブロックBLが左眼画像PLから切り出される(ステップS3)。そして、切り出しブロックBRと比較ブロックBLとに基づいて差分絶対値和が算出され(ステップS4)、その差分絶対値和が比較器55の内蔵メモリ55a及び演算制御部56の内蔵メモリ56aに格納される(ステップS5,S6)。
【0064】
以後、図11で説明したのと同様に、処理領域A1内での比較ブロックBLの移動が終了するまでステップS3〜S9の処理が繰り返し実行される。そして、処理領域A1内での比較ブロックBLの移動が終了すると(ステップS7でYES)、ずれ量が算出され(ステップS11)、差分絶対値和の極小点が抽出される(ステップS12)。
【0065】
その後も同様に、一行目の画素に対応する切り出しブロックBRのずれ量算出処理が実行される、つまりステップS2〜S19の処理が繰り返し実行される。
ここで、図12(b)に示すように、左上画素の座標が座標(0,11)に設定された切り出しブロックBRを切り出した場合のずれ量算出処理について説明する。この切り出しブロックBRには、被写体(木)が含まれている。
【0066】
まず、図12(b)に示すように、左上画素の座標が座標(0,11)に設定された比較ブロックBLが左眼画像PLから切り出される(ステップS3)。続いて、切り出しブロックBRと比較ブロックBLとに基づいて差分絶対値和が算出され(ステップS4)、その差分絶対値和が内蔵メモリ55a,56aに格納される(ステップS5,S6)。
【0067】
次に、処理領域A1内で水平方向に1画素移動された位置から比較ブロックBLが切り出され、その比較ブロックBLと切り出しブロックBRとに基づいて差分絶対値和が算出され、その差分絶対値和が内蔵メモリ55a,56aに格納される(ステップS5,S6)。
【0068】
続いて、図12(c)に示すように、処理領域A1内で水平方向に1画素移動された位置から比較ブロックBLが切り出される。このときの切り出しブロックBRと比較ブロックBLとを比較すると、図示のように、切り出しブロックBR内の画像と比較ブロックBL内の画像とが略一致する。すなわち、このときの比較ブロックBLは切り出しブロックBRと酷似し、この比較ブロックBLが切り出しブロックBRに対応する左眼画像PLの領域であると言える。このような切り出しブロックBRと比較ブロックBLとに基づいて差分絶対値和が算出されると、その差分絶対値和は0(ゼロ)に近い値となり、その差分絶対値和が上記最小値となる。このため、このときの比較ブロックBLと切り出しブロックBRとのずれ位置、つまり処理領域A1の始点(左上画素)からの比較ブロックBLの移動量が右眼画像PR及び左眼画像PLのずれ量となる。したがって、この場合のずれ量は2画素となる。なお、差分絶対値和の最小値は、実際には、図13(a)に示すように比較ブロックBLの処理領域A1内での移動を終了した後に算出される。
【0069】
以後も同様に、切り出しブロックBRの右眼画像PR内での水平方向の移動が終了するまでステップS2〜S19の処理が繰り返し実行される。そして、図13(b)に示すように、切り出しブロックBRが右眼画像PRの終端まで移動された後、その時の切り出しブロックBRに対するずれ量が算出され、その切り出しブロックBRに対する差分絶対値和の極小点が抽出されると、切り出しブロックBRの右眼画像PR内での水平方向の移動が終了したと判定される(ステップS13でYES)。このような一連の処理により、右眼画像PR内で水平方向に1画素ずつシフトされた各切り出しブロックBR、つまり一行目の各画素に対応する各切り出しブロックBRに対するずれ量が算出される。さらに、図13(c)に示すように、一行目の各画素に対応する各切り出しブロックBRに対する差分絶対値和の極小点が抽出される(丸印参照)。
【0070】
次に、図8に示すステップS20において、メモリ制御部53は、右眼画像PR内での切り出しブロックBRの垂直方向への移動が終了したか否かを判定する。具体的には、切り出しブロックBRの左上画素の垂直位置Vpが、右眼画像PRの垂直サイズVsから切り出しブロックBRの垂直ブロックサイズBVsを減算した値に一致したときに、切り出しブロックBRの垂直方向への移動が終了したと判定される。ここでは、切り出しブロックBRの垂直方向への移動が未だ終了していないため(ステップS20でNO)、ステップS21に移る。
【0071】
続いて、直前の垂直位置Vp(ここでは、Vp=0)の全水平領域における切り出しブロックBR、つまり一行目の全画素に対応する全ての切り出しブロックBRに対する演算結果(ずれ量)に基づいて、次に切り出しブロックBRを切り出す垂直位置Vpを決定する。具体的には、ステップS21において、演算制御部56は、直前の垂直位置Vpにおける全ての切り出しブロックBRに対するずれ量が0であるか否かを判定する。ここでは、上述したようにずれ量が2となる切り出しブロックBRが存在するため(ステップS21でNO)、ステップS22に移る。このステップS22において、切り出しブロックBRの左上画素の垂直位置Vpに1が加算される。
【0072】
一方、上記ステップS21において、直前の垂直位置Vp(=0)における全ての切り出しブロックBRに対するずれ量が0であると判定された場合には(ステップS21でYES)、演算制御部56によって、切り出しブロックBRの左上画素の垂直位置Vpに切り出しブロックBRの垂直ブロックサイズBVsが加算される(ステップS23)。例えば図15(a)、(b)に示すように、右眼画像PRaにおいて切り出しブロックBRaが水平方向に移動した全領域(ブロック範囲)において視差のある被写体が含まれておらず、左眼画像PLaの比較ブロックBLaが移動される処理領域A1aの全領域において視差のある被写体が含まれていないと想定する。この場合には、図15(c)に示すように、M行目(図15では一行目)の全水平領域における切り出しブロックBRに対するずれ量が0になる可能性が高い。換言すると、M行目の全ての切り出しブロックBRに対するずれ量が0である場合には、それらのブロックが移動したブロック範囲(図15(b)のハッチング領域)には視差のある被写体が含まれていない可能性が高いため、このブロック範囲内の画素に対するずれ量算出処理が不要であると判断することができる。そこで、図15(d)に示すように、切り出しブロックBRaの左上画素の垂直位置Vpが垂直ブロックサイズBVs分シフトされ、上記ブロック範囲内の画素に対するずれ量算出処理がスキップされる。なお、この場合には、切り出しブロックBRaの移動領域MRが全水平領域に設定され、比較ブロックBLaの移動範囲MLが全水平領域に設定された上で、以下に説明するステップS24,S25の処理をスキップしてステップS26に移る(図8では図示略)。
【0073】
次に、これまでの演算結果(ずれ量及び極小点)に基づいて、処理領域A1内での比較ブロックBLの移動範囲ML及び右眼画像PR内での切り出しブロックBRの水平方向の移動領域MRが設定される。まず、ステップS24では、直前の垂直位置Vp(ここでは、Vp=0)におけるずれ量算出処理において、判定レベルT1よりも低い極小点が1つ以上抽出されか否かが判定される。本例では、図11(d)や図13(c)に示すように、判定レベルT1よりも低い極小点が1つ以上抽出されているため(ステップS24でYES)、ステップS25に移る。
【0074】
続いて、ステップS25において、演算制御部56は、直前の垂直位置Vp(N行目)で算出された演算結果(極小点)に基づいて、次の垂直位置(N+1行目)の画素に対するずれ量算出処理の際の移動範囲ML及び移動領域MRを絞るように設定する。このように設定するのは、同じ被写体(ここでは、木)であれば、垂直位置が移動しても水平方向のずれ量はほとんど変わらないと考えられ、N行目のずれ量算出処理で抽出された極小点におけるずれ位置付近に、N+1行目の画素に対する差分絶対値和の最小値が現れると考えられるためである。以下に、移動範囲ML及び移動領域MRの設定方法について詳述する。
【0075】
まず、演算制御部56は、直前の垂直位置Vp(=0)における全切り出しブロックBRに対するずれ量算出処理で抽出された差分絶対値和の極小点を、図14(a)に示すように、ずれ位置を横軸に取ったグラフ上にプロットする。このグラフ(極小点のずれ位置)に基づいて、次の垂直位置Vp(ここでは、Vp=1)における比較ブロックBLの移動範囲MLが設定される。
【0076】
具体的には、演算制御部56は、上記グラフ上にプロットされた極小点に基づいて、極小点が密集した密集領域(丸枠参照)を抽出する。続いて、演算制御部56は、上記抽出した密集領域内の極小点におけるずれ位置に基づいて、比較ブロックBLの移動範囲MLを設定する。
【0077】
より具体的には、演算制御部56は、密集領域内の極小点に対応するずれ位置の平均値を算出する。例えば密集領域内において、ずれ位置が0画素の極小点が1つ、ずれ位置が1画素の極小点が2つ、ずれ位置が2画素の極小点が1つ、ずれ位置が3画素の極小点が1つ、ずれ位置が4画素の極小点が1つ存在する場合のずれ位置の平均値は、(0+1+2+3+4)/5=2画素となる。次に、演算制御部56は、そのずれ位置の平均値を中心に、前後X画素間の領域のみを比較ブロックBLの移動範囲MLに設定する。ここで、上記X画素は、例えば密集領域内における極小点のずれ位置のばらつきが小さいほど少ない画素数に設定される。すなわち、上記ばらつきが小さいほど比較ブロックBLの移動範囲が狭く設定される。また、このとき、密集領域内の極小点が全て含まれるように比較ブロックBLの移動範囲MLが設定される。ここでは、処理領域A1内において、ずれ位置が0〜4画素の領域が比較ブロックBLの移動範囲MLに設定される。
【0078】
なお、密集領域であるか否かを判断する基準は適宜設定可能であるが、例えばずれ位置のY(Yは1以上の整数)画素間にZ(Zは1以上の整数)個以上の極小点が存在する領域を密集領域であると設定することができる。例えばY画素が2画素で、Z個が4個である場合には、ずれ位置が0〜2画素の間の領域に極小点が4個以上存在する場合にその領域が密集領域であると設定される。また、Y画素やZ個は、画像サイズ、切り出しブロックBRのサイズや処理領域A1のサイズなどに応じて適宜設定される。
【0079】
また、ステップS25では、上記グラフに基づいて、次の垂直位置Vpにおける切り出しブロックBRの水平方向の移動領域MRが設定される。具体的には、まず、演算制御部56は、ずれ位置が0画素付近となる極小点を抽出し、その極小点に対応する切り出しブロックBRを抽出する。本例では、ずれ位置が0画素である極小点に対応する切り出しブロックBRとして、図14(b)に示すように、水平位置HpRが1〜6の6つの切り出しブロックBRが抽出される。次に、演算制御部56は、この抽出された切り出しブロックBRにおける水平位置(行方向の位置)を移動領域MRから除外する。すなわち、演算制御部56は、次の垂直位置Vp(=1)におけるずれ量算出処理において、上記抽出された水平位置から切り出しブロックBRの切り出しを行わないように制御する。本例では、図14(c)に示すように、水平位置HpRが1〜10の領域が移動領域MRから除外されるため、移動領域MRは、水平位置HpRが0の領域及び11〜Hs−BHsの領域に設定される。このように移動領域MRから除外するのは、極小点におけるずれ位置が0画素ということは両眼視差がないということであり、当該撮像装置1から遠く離れた位置の映像である可能性が高いためである。
【0080】
このように本例では、図8に示すステップS25において、比較ブロックBLの移動範囲MLが一部の領域に設定され、切り出しブロックBRの移動領域MRが一部の領域に設定される。
【0081】
次に、切り出しブロックBRの移動領域MRが全ての領域に設定されているか、又は一部の領域に設定されているかが判定される(ステップS26)。ここでは、切り出しブロックBRの移動領域MRが一部の領域に設定されているため(ステップS26でNO)、切り出しブロックBRの左上画素の水平位置HpRが上記設定された移動領域MRの最初の水平位置(本例では、0)に設定される(ステップS27)。なお、上記ステップS26において、切り出しブロックBRの移動領域MRが全ての領域に設定されていると判定された場合には(ステップS26でYES)、切り出しブロックBRの左上画素の水平位置HpRが常に0に設定される(ステップS28)。
【0082】
続いて、比較ブロックBLの移動範囲MLが全ての領域に設定されているか、又は一部の領域に設定されているかが判定される(ステップS29)。ここでは、比較ブロックBLの移動範囲MLが一部の領域に設定されているため(ステップS29でNO)、比較ブロックBLの左上画素の水平位置HpLが上記設定された移動範囲MLの最初のずれ位置に対応する処理領域A1内の水平位置(本例では、0)に設定される(ステップS30)。なお、上記ステップS29において、比較ブロックBLの移動範囲MLが全ての領域に設定されていると判定された場合には(ステップS29でYES)、比較ブロックBLの左上画素の水平位置HpLが常に0に設定される(ステップS31)。これらステップS30,S31の処理後、ステップS2に戻って、垂直位置Vp=1の画素に対するずれ量算出処理が開始される。
【0083】
次に、ステップS2において、図16(a)に示すように、左上画素の座標が座標(1,0)に設定された切り出しブロックBRが右眼画像PRから切り出される。続いて、左上画素の座標が座標(1,0)に設定された比較ブロックBLが左眼画像PLから切り出される(ステップS3)。そして、これら切り出しブロックBRと比較ブロックBLとに基づいて差分絶対値和が算出され(ステップS4)、その差分絶対値和が内蔵メモリ55a,56aに格納される(ステップS5,S6)。
【0084】
次に、処理領域A1内での比較ブロックBLの移動が未終了で(ステップS7でNO)、比較ブロックBLの移動範囲MLが一部の領域に設定されているため(ステップS8でNO)、ステップS10に移る。このステップS10では、比較ブロックBLの左上画素の水平位置HpLが、上記ステップS25で設定された移動範囲MLの次の水平位置(ここでは、1)に設定される。このとき、上記水平位置HpLのアドレスをスキップ(例えば、0から5にスキップ)させる場合には、そのスキップを指令するスキップパルス信号と、スキップ後の水平位置の画素が格納されたメモリ51のアドレスを示すスキップアドレス信号とを含むスキップ信号SSが演算制御部56からメモリ制御部53に出力される。
【0085】
以後、処理領域A1の移動範囲ML内での比較ブロックBLの移動が終了するまでステップS3〜S10の処理が繰り返し実行される。そして、図16(b)に示すように、左上画素が座標(1,4)に設定された比較ブロックBLが切り出され、その比較ブロックBLと上記切り出しブロックBRとに基づく差分絶対値和が内蔵メモリ55a,56aに格納されると、ステップS10に移る。このステップS10において、移動範囲MLの次の水平位置がない場合、つまり比較ブロックBLの移動範囲ML内での移動が終了した場合には、ステップS11に移る(図示略)。続いて、上記ステップS11において切り出しブロックBRに対するずれ量が算出され、ステップS12において切り出しブロックBRに対する差分絶対値和の極小点が抽出される。具体的には、ずれ位置(移動量)が0〜4画素の比較ブロックBLとの比較演算によって算出された差分絶対値和に基づいて、切り出しブロックBRに対するずれ量が算出され、判定レベルT1よりも低い極小点が抽出される。
【0086】
このように、垂直位置Vp=1におけるずれ量算出処理では、処理領域A1内の移動範囲ML以外の領域(本例では、ずれ位置=5以降の領域)からは比較ブロックBLの切り出しが省略され、差分絶対値和の算出が省略される。
【0087】
次いで、切り出しブロックBRの右眼画像PR内における水平方向の移動が未終了で(ステップS13でNO)、切り出しブロックBRの移動領域MRが一部の領域に設定されているため(ステップS14でNO)、ステップS17に移る。このステップS17では、切り出しブロックBRの左上画素の水平位置HpRが、上記ステップS25で設定された移動領域MRの次の水平位置に設定される。本例では、図16(b)に示すように、右眼画像PRにおける水平位置=1から水平位置=10までが移動領域MRから除外されているため、切り出しブロックBRの左上画素の水平位置HpRが11に設定される。このとき、上記水平位置HpRを0から11にスキップさせるために、そのスキップを指令するスキップパルス信号と、スキップ後の水平位置の画素が格納されたメモリ51のアドレスを示すスキップアドレス信号とを含むスキップ信号SSが演算制御部56からメモリ制御部53に出力される。
【0088】
次に、比較ブロックBLの移動範囲MLが一部の領域に設定されているため(ステップS19でNO)、比較ブロックBLの左上画素の水平位置HpLが、上記ステップS25で設定された移動範囲MLの最初のずれ位置(ここでは、0画素)に対応する処理領域A1内の水平位置に設定される(ステップS19)。このため、本例では、比較ブロックBLの左上画素の水平位置HpLが11に設定される。その後、ステップS2に戻る。
【0089】
次に、図16(c)に示すように、左上画素の座標が座標(1,11)に設定された切り出しブロックBRが右眼画像PRから切り出され、左上画素の座標が座標(1,11)に設定された比較ブロックBLが左眼画像PLから切り出される。続いて、これら切り出しブロックBRと比較ブロックBLとに基づいて差分絶対値和が算出され(ステップS4)、その差分絶対値和が内蔵メモリ55a,56aに格納される(ステップS5,S6)。
【0090】
次に、処理領域A1に設定された移動範囲ML内で水平方向に1画素移動された位置から比較ブロックBLが切り出される。続いて、その比較ブロックBLと切り出しブロックBRとに基づいて差分絶対値和が算出され、その差分絶対値和が内蔵メモリ55a,56aに格納される(ステップS5,S6)。
【0091】
その後、図16(d)に示すように、処理領域A1に設定された移動範囲ML内で水平方向に1画素移動された位置から比較ブロックBLが切り出される。その比較ブロックBLと上記切り出しブロックBRとを比較すると、図示のように、切り出しブロックBR内の画像と比較ブロックBL内の画像とが略一致する。すなわち、このときの比較ブロックBLは切り出しブロックBRと酷似し、この比較ブロックBLが切り出しブロックBRに対応する左眼画像PLの領域であると言える。このような切り出しブロックBRと比較ブロックBLとに基づいて差分絶対値和が算出されると、その差分絶対値和は0に近い値となり、その差分絶対値和が上記最小値となる。このため、このときの比較ブロックBLにおける処理領域A1の始点(左上画素)からの移動量が、演算対象の切り出しブロックBRに対するずれ量となる。したがって、この場合のずれ量は2画素となる。その後、比較ブロックBLの移動範囲ML内での移動が終了するまでステップS3〜S10の処理が繰り返し実行される。
【0092】
以後も同様に、移動領域MR内での切り出しブロックBRの水平方向の移動が終了するまでステップS2〜S19の処理が繰り返し実行される。これにより、移動領域MRから切り出された各切り出しブロックBRが移動範囲MLから切り出された比較ブロックBLと比較され、各切り出しブロックBRに対するずれ量が算出される。そして、図17に示すように、各切り出しブロックBRに対する差分絶対値和の極小点が抽出される。この垂直位置Vp=1における全水平領域の演算結果(極小点)は、1つ前の垂直位置Vp=0の際に現れていた被写体(木)とは別の被写体が現れていないため、1つ前の垂直位置Vp=0と略同様の結果になる。したがって、比較ブロックBLの移動範囲MLを1つ前の垂直位置Vp=0における演算結果に基づいて絞っても、その絞った移動範囲ML内から切り出しブロックBRに対応するブロックを好適に探索することができ、切り出しブロックに対するずれ量を精度良く算出することができる。
【0093】
次に、ずれ量が1画素以上となる切り出しブロックBRが存在するため(図8のステップS21でNO)、ステップS22において、切り出しブロックBRの左上画素の垂直位置Vpに1が加算される(Vp=1+1)。続いて、図17に示すように判定レベルT1よりも低い極小点が1つ以上抽出されているため(ステップS24でYES)、ステップS25に移る。このステップS25では、比較ブロックBLの移動範囲MLが、直前の垂直位置Vp=1におけるずれ量算出処理で抽出された極小点に基づいて再設定される。例えば図17に示すように、垂直位置Vp=1における極小点のずれ位置の平均値が、垂直位置Vp=0における極小点のずれ位置の平均値からずれている場合には、そのずれに合わせて比較ブロックBLの移動範囲MLが変更される。本例では、垂直位置Vp=1の演算結果では、密集領域における極小点のずれ位置のばらつきが大きくなるため、次の垂直位置Vp=2における比較ブロックBLの移動範囲MLが、ずれ位置が0〜4画素の領域から0〜5画素の領域に変更される。
【0094】
ここで、例えば図18(a)に示すように、垂直位置Vp=N−1における演算結果では3つの密集領域が存在し、3つの移動範囲MLが設定されていた場合を想定する。これに対し、図18(b)に示すように、垂直位置Vp=Nにおける演算結果では、上記3つの移動範囲MLのうち1つの移動範囲ML1において算出された差分絶対値和が全て判定レベルT1以上になったとする。この場合には、全ての差分絶対値和が判定レベルT1以上になった移動範囲ML1を、比較ブロックBLの移動範囲MLから除外する。すなわち、次の垂直位置Vp=N+1のずれ量算出処理において、上記移動範囲MLでは比較ブロックBLの切り出し及び差分絶対値和の算出を行わないようにする。
【0095】
以後も同様に、前の垂直位置における演算結果を利用して移動範囲ML及び移動領域MRが設定された上で、ずれ量算出処理が実行される。
次に、図19(a)に示すように、直前の垂直位置において現れていた被写体(ここでは、木)とは異なる被写体(ここでは、車)が現れた場合について説明する。ここでは、切り出しブロックBR及び比較ブロックBLの左上画素の垂直位置Vpが6の場合を例に挙げて説明する。この場合にも、上述したのと同様に、直前の垂直位置Vp=5における演算結果に基づいて設定された移動範囲ML(ここでは、ずれ位置が0〜3画素の領域)及び移動領域MR(ここでは、全水平領域)を利用して、ステップS2〜S19の処理が実行される。
【0096】
すなわち、まず、図19(a)に示すように、左上画素が座標(6,0)に設定された切り出しブロックBR及び比較ブロックBLが切り出され、両ブロックBR,BLに基づき差分絶対値和が算出される(ステップS2〜S4)。続いて、図19(b)に示すように、処理領域A1の移動範囲ML内、具体的には座標(6,0)〜座標(6,3)から比較ブロックBLが順次切り出され、差分絶対値和が順次算出される。そして、それら複数の差分絶対値和から極小点が算出される。次に、図19(c)に示すように、切り出しブロックBRが右眼画像PR内で水平方向に1画素ずつ移動され、各切り出しブロックBR毎に移動範囲ML内の比較ブロックBLと比較されて差分絶対値和の極小点が算出される。この差分絶対値和の極小点の算出が、切り出しブロックBRの右眼画像PR内での移動が終了するまで繰り返し実行される(ステップS2〜S19)。なお、切り出しブロックBRの右眼画像PR内での移動が終了すると、切り出しブロックBR及び比較ブロックBLの垂直位置Vpに1が加算される(ステップS20〜S22)。
【0097】
しかし、上述したずれ量算出処理で算出される極小点(差分絶対値和)は、図19(d)に示すように、全てが判定レベルT1よりも高くなってしまうため、判定レベルT1よりも低い極小点として抽出することができない。これは、全水平領域に別の被写体(車)が現れたため、すなわち直前の垂直位置で現れていた被写体(木)とは視差量(ずれ量)の異なる被写体(車)が現れたために、直前の垂直位置の演算結果からフィードバックされた移動範囲MLを有効に利用できなくなり、ずれ量を正確に算出することができなくなったのである。
【0098】
そこで、本実施形態では、前の垂直位置における演算結果を利用するとずれ量を正確に算出することができないと判断した場合には、その時に設定されている移動範囲ML及び移動領域MRをクリアする。具体的には、算出された全ての極小点(差分絶対値和)が判定レベルT1を超えている場合、つまり判定レベルT1よりも低い極小点を1つも抽出できない場合には(図8のステップS24でNO)、ステップS32に移る。このステップS32において、演算制御部56は、切り出しブロックBR及び比較ブロックBLの左上画素の垂直位置Vpから1を減算する。ここでは、上記ステップS22において垂直位置Vp(=6)に1が加算されることで垂直位置Vpが7になっているため、その垂直位置Vp(=7)から1を減算することで垂直位置Vpを6に戻している。さらに、上記ステップS32において、演算制御部56は、移動範囲ML及び移動領域MRを全ての領域に設定する。その後、切り出しブロックBRの左上画素の水平位置HpRが0に設定され(ステップS28)、比較ブロックBLの左上画素の水平位置HpLが0に設定され(ステップS31)、ステップS2に戻る。これにより、図20(a)に示すように、移動範囲ML及び移動領域MRが全水平領域に設定された上で、垂直位置Vp=6の画素に対するずれ量算出処理が再度実行される、つまりステップS2〜S19の処理が再度繰り返し実行される。
【0099】
詳述すると、まず、左上画素が座標(6,0)に設定された切り出しブロックBRが右眼画像PRから切り出され(ステップS2)、左上画素が座標(6,0)に設定された比較ブロックBLが左眼画像PLから切り出される(ステップS3)。続いて、これら切り出しブロックBR及び比較ブロックBLに基づいて差分絶対値和が算出され(ステップS4)、その差分絶対値和が内蔵メモリ55a,56aに格納される(ステップS5,S6)。
【0100】
続いて、処理領域A1の全領域(移動範囲ML)内で水平方向に1画素ずつ移動された位置から比較ブロックBLが切り出される。そして、その切り出された各比較ブロックBLと切り出しブロックBRとに基づいて差分絶対値和が算出される。
【0101】
そして、図20(b)に示すように、処理領域A1の始点から水平方向に7画素移動された位置から切り出された比較ブロックBL、つまり左上画素が座標(6,7)に設定された比較ブロックBLと上記切り出しブロックBRが比較されると、切り出しブロックBR内の画像と比較ブロックBL内の画像とが略一致する。すなわち、このときの比較ブロックBLは切り出しブロックBRと酷似し、この比較ブロックBLが左眼画像PLにおける切り出しブロックBRに対応する領域であると言える。したがって、この演算対象の切り出しブロックBRに対するずれ量は7画素となる。
【0102】
以後、図20(c)に示すように、処理領域A1の全領域内での比較ブロックBLの移動が終了すると、演算対象の切り出しブロックに対するずれ量(本例では、7画素)が算出され、その切り出しブロックBRに対する差分絶対値和の極小点が抽出される。次に、図20(d)に示すように、切り出しブロックBRが右眼画像PRの全領域(移動領域MR)内で水平方向に1画素ずつ移動されて切り出される。そして、その切り出された各切り出しブロック毎にずれ量が算出され、差分絶対値和の極小点が抽出される。この垂直位置Vp=6における全水平領域の演算結果(極小点)は、図21(a)に示すように、ずれ位置の大きい領域に密集する。これは、当該垂直位置Vp=6における切り出しブロックBRに含まれる被写体(車)の視差量(ずれ量)が大きいためである。
【0103】
その後、図8のステップS21において、ずれ量が1以上となる切り出しブロックBRが存在すると判定されるため(ステップS21でNO)、切り出しブロックBRの左上画素の垂直位置Vpに1が加算される(ステップS22)。続いて、直前の垂直位置Vp=6におけるずれ量算出処理では判定レベルT1よりも低い極小点が1つ以上抽出されているため(ステップS24でYES)、比較ブロックBLの移動範囲ML及び切り出しブロックBRの移動領域MRが、直前の垂直位置Vp=6における極小点に基づいて再設定される。すなわち、本例では、図21(a)、(b)に示すように、次の垂直位置Vp=7の画素に対するずれ量算出処理における比較ブロックBLの移動範囲MLが、ずれ位置が6〜10画素の領域に設定される。
【0104】
以降も同様に、切り出しブロックBRが水平方向及び垂直方向に移動されてずれ量算出処理が実行される。そして、切り出しブロックBRの左上画素の垂直位置Vpが、右眼画像PRの垂直サイズVsから切り出しブロックBRの垂直ブロックサイズBVsを減算した値になった後に、図21(c)に示すように、その垂直位置Vpにおけるずれ量算出処理が終了すると(ステップS20でYES)、全てのずれ量算出処理が終了する。
【0105】
以上説明した本実施形態によれば、以下の効果を奏することができる。
(1)N行目の画素に対するずれ量算出処理で得られた演算結果に基づいて、N+1行目の画素に対するずれ量算出処理における比較ブロックBLの移動範囲MLを絞るように設定するようにした。これにより、N+1行目のずれ量算出処理では、左眼画像PLから切り出される比較ブロックBLの数が少なくなり、ずれ量を算出するための演算量が小さくなる。したがって、ずれ量算出処理にかかる処理時間を短縮することができる。
【0106】
(2)また、同じ被写体であれば、垂直位置が移動しても水平方向のずれ量はほとんど変わらないと考えられる。このため、比較ブロックBLの移動範囲MLを1つ前の垂直位置(N行目)における演算結果に基づいて絞っても、その絞った移動範囲ML内から切り出しブロックBRに対応するブロックを好適に探索することができ、切り出しブロックに対するずれ量を精度良く算出することができる。
【0107】
(3)さらに、左眼画像PLから切り出される比較ブロックBLの数が少なくなるため、比較ブロックBLを読み出すためのメモリ51へのメモリアクセスを減らすことができる。
【0108】
(4)視差がないと判断されるブロック範囲(例えば、ずれ量が0画素であるブロック範囲)のずれ量算出処理をスキップさせるようにした。これにより、右眼画像PRから切り出される切り出しブロックBR及び左眼画像PLから切り出される比較ブロックBLの数が少なくなり、ずれ量を算出するための演算量が小さくなる。したがって、ずれ量算出処理にかかる処理時間を短縮することができる。さらに、切り出しブロックBR及び比較ブロックBLを読み出すためのメモリ51へのメモリアクセスを減らすことができる。
【0109】
(5)N+1行目の画素に対するずれ量を算出した際に、設定された全ての移動範囲ML内で算出された差分絶対値和の全てが判定レベルT1以上である場合には、移動範囲MLを処理領域A1の全ての領域に設定した上で、N+1行目の各画素に対するずれ量算出処理を再度実行するようにした。これにより、N行目とは異なる被写体がN+1行目で現れてN行目の演算結果を有効に活用できない場合であっても、移動範囲MLを処理領域A1の全領域に設定し直すことでずれ量を正確に算出することができる。
【0110】
(他の実施形態)
なお、上記実施形態は、これを適宜変更した以下の態様にて実施することもできる。
・上記実施形態における処理領域A1のサイズは特に制限されない。例えば処理領域A1の水平ブロックサイズAHsを左眼画像PLの水平サイズHsと同一となるように設定してもよい。また、処理領域A1の垂直ブロックサイズを比較ブロックBLの垂直ブロックサイズBVsよりも大きくなるように設定してもよい。
【0111】
・上記実施形態では、左眼画像PLの処理領域A1に設定された移動範囲ML内を1画素ずつ水平方向に移動させて比較ブロックBLを切り出すようにした。これに限らず、処理領域A1に設定された移動範囲ML内をP(Pは1以上の整数)画素ずつ、例えば2画素ずつ水平方向に移動させて比較ブロックBLを切り出すようにしてもよい。
【0112】
・上記実施形態では、処理領域A1に設定された移動範囲ML内で比較ブロックBLを水平方向のみに移動させるようにした。これに限らず、処理領域A1に設定された移動範囲ML内で比較ブロックBLを水平方向(行方向)及び垂直方向(列方向)の2方向に移動させるようにしてもよい。この場合に、各切り出しブロックBRに対する水平方向のずれ量と併せて、各切り出しブロックBRに対する垂直方向のずれ量を算出するようにしてもよい。
【0113】
・上記実施形態では、切り出しブロックBR及び比較ブロックBLのブロックサイズBVs×BHsを5画素×5画素に設定したが、その大きさは特に制限されない。例えば上記ブロックサイズBVs×BHsを、3画素×3画素や3画素×5画素などに設定してもよい。
【0114】
・上記実施形態では、右眼画像PRから切り出しブロックBRを切り出し、左眼画像PLから比較ブロックBLを切り出すようにした。これに限らず、左眼画像PLから切り出しブロックを切り出し、右眼画像PRから比較ブロックを切り出すようにしてもよい。
【0115】
・上記実施形態では、各切り出しブロック毎に抽出した差分絶対値和の極小点に基づいて、次の行のずれ量算出処理における比較ブロックBLの移動範囲MLを設定するようにした。これに限らず、例えば各切り出しブロック毎に算出される差分絶対値和の最小値に基づいて、次の行のずれ量算出処理における比較ブロックBLの移動範囲MLを絞るように設定するようにしてもよい。具体的には、上記最小値となる比較ブロックBLの移動量(つまり、ずれ量)に基づいて移動範囲を絞るように設定するようにしてもよい。
【0116】
・上記実施形態では、切り出しブロックBRと比較ブロックBLとの両ブロックの相関値として輝度信号の差分絶対値和を利用するようにしたが、切り出しブロックBRと比較ブロックBLとの類似性を判断可能な相関値であれば特に限定されない。
【符号の説明】
【0117】
1 撮像装置
11R,11L 撮像部
20 画像処理プロセッサ
24 ずれ量算出処理部
42 メモリ
51 メモリ
52 レジスタ
53 メモリ制御部
54 SAD演算部
55 比較器
56 演算制御部
【特許請求の範囲】
【請求項1】
異なる位置から撮影され、複数の画素が2次元の行列状に配列された第1画像及び第2画像を入力する入力手段と、
前記第1画像から所定サイズの第1ブロックを切り出す手段であって、N(Nは1以上の整数)行目の各画素に対応する前記第1ブロックを切り出す第1切り出し手段と、
前記第2画像の前記第1ブロックに対する処理領域内に設定される移動範囲から前記所定サイズの第2ブロックを切り出す手段であって、前記N行目の各画素に対応する各第1ブロックに対して、領域が前記処理領域の全ての領域に設定された前記移動範囲から前記第2ブロックを行方向にP(Pは1以上の整数)画素ずつ移動させて切り出す第2切り出し手段と、
前記第2ブロックの切り出し毎に、該切り出した第2ブロックと、演算対象の第1ブロックとを比較して両ブロックの相関値を算出する相関値算出手段と、
前記各第1ブロック毎に、前記相関値の最大値を算出し、該最大値となる第2ブロックの移動量に基づいて、演算対象の第1ブロックに対する前記第1画像及び前記第2画像のずれ量を算出するずれ量算出手段と、
前記第1画像のN+1行目の画素に対する前記ずれ量を算出する際に、前記N行目において算出された前記相関値に基づいて前記移動範囲を絞るように設定する設定手段と、
を有することを特徴とする画像処理装置。
【請求項2】
前記相関値は、前記第1ブロック及び前記第2ブロックの両ブロック内の各画素の輝度差の絶対値和である差分絶対値和であり、
前記設定手段は、
前記N行目の各画素に対応する各第1ブロック毎に、所定の判定レベルよりも低い前記差分絶対値和の極小点を抽出する手段と、
前記N行目の全ての第1ブロックにおいて抽出された極小点に基づいて、該極小点が密集する前記第2ブロックの移動量の範囲を密集領域として抽出する手段と、
前記密集領域に対応する前記第2ブロックの移動量に基づいて、前記移動範囲を絞るように設定する手段と、
を有することを特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記設定手段は、
前記密集領域内の極小点に対応する前記第2ブロックの移動量の平均値を中心として、前後X(Xは1以上の整数)画素の移動量の範囲のみを前記移動範囲に設定することを特徴とする請求項2に記載の画像処理装置。
【請求項4】
前記X画素は、前記密集領域内の極小点に対応する前記第2ブロックの移動量のばらつきが小さいほど画素数が少なくなるように設定されることを特徴とする請求項3に記載の画像処理装置。
【請求項5】
前記設定手段は、
前記N+1行目以降の各行毎に抽出される前記極小点に基づいて、前記密集領域における前記平均値がずれる場合には、該ずれた平均値に基づき前記移動範囲を変更することを特徴とする請求項3又は4に記載の画像処理装置。
【請求項6】
前記設定手段は、
前記移動範囲が複数の範囲に設定されている場合に、前記設定された一部の範囲内で算出された差分絶対値和の全てが前記判定レベル以上である場合には、前記一部の範囲を前記移動範囲から除外することを特徴とする請求項3〜5のいずれか1つに記載の画像処理装置。
【請求項7】
前記設定手段は、
前記N+1行目の画素に対するずれ量を算出した際に、前記設定された全ての移動範囲内で算出された差分絶対値和の全てが前記判定レベル以上である場合には、前記移動範囲を前記処理領域の全ての領域に設定した上で、前記N+1行目の各画素に対するずれ量を算出する処理を再度実行させることを特徴とする請求項2〜6のいずれか1つに記載の画像処理装置。
【請求項8】
前記第1画像のM(MはN又はN+1以上の整数)行目の画素に対する前記ずれ量を算出した際に、前記算出したずれ量が0である第1ブロックの行方向の位置を抽出する抽出手段と、
前記第1画像のM+1行目の画素に対する前記ずれ量を算出する際に、前記抽出された行方向の位置から前記第1ブロックの切り出しを行わないように制御する第1制御手段と、
を有することを特徴とする請求項1〜7のいずれか1つに記載の画像処理装置。
【請求項9】
前記第1画像のM(MはN又はN+1以上の整数)行目の画素に対する前記ずれ量を算出した際に、前記算出したずれ量が全て0である場合に、前記M行目に続いてM+V(Vは前記第1ブロックの列方向の画素数)行目の各画素に対するずれ量を算出する処理を実行させるように制御する第2制御手段を有することを特徴とする請求項1〜8のいずれか1つに記載の画像処理装置。
【請求項10】
異なる位置から撮影され、複数の画素が2次元の行列状に配列された第1画像及び第2画像を入力するステップと、
前記第1画像のN行1列目から所定サイズの第1ブロックを切り出すステップと、
前記第2画像の前記第1ブロックに対する処理領域内に設定された移動範囲から前記所定サイズの第2ブロックを切り出すステップと、
前記第1ブロックと前記第2ブロックとを比較して両ブロックの相関値を算出するステップと、
領域が前記処理領域の全ての領域に設定された前記移動範囲から前記第2ブロックを行方向にP(Pは1以上の整数)画素ずつ移動させて切り出す毎に前記相関値を算出するステップと、
前記相関値の最大値を算出し、該最大値となる第2ブロックの移動量に基づいて、前記第1ブロックに対する前記第1画像及び前記第2画像のずれ量を算出するステップと、
前記第1ブロックを前記第1画像内で前記行方向に1画素ずつ移動させて切り出し、該切り出した前記N行目の各画素に対応する各第1ブロック毎に、前記全ての領域に設定された前記移動範囲から切り出された比較ブロックと比較して前記相関値及び前記ずれ量を算出するステップと、
前記第1画像のN+1行目の画素に対する前記ずれ量を算出する際に、前記N行目において算出された前記相関値に基づいて前記移動範囲を絞るように設定するステップと、
を有することを特徴とする画像処理方法。
【請求項11】
異なる位置から撮影され、複数の画素が2次元の行列状に配列された第1画像及び第2画像を出力する撮像部と、
前記第1画像から所定サイズの第1ブロックを切り出す手段であって、N(Nは1以上の整数)行目の各画素に対応する前記第1ブロックを切り出す第1切り出し手段と、
前記第2画像の前記第1ブロックに対する処理領域内に設定される移動範囲から前記所定サイズの第2ブロックを切り出す手段であって、前記N行目の各画素に対応する各第1ブロックに対して、領域が前記処理領域の全ての領域に設定された前記移動範囲から前記第2ブロックを行方向にP(Pは1以上の整数)画素ずつ移動させて切り出す第2切り出し手段と、
前記第2ブロックの切り出し毎に、該切り出した第2ブロックと対応する前記第1ブロックとを比較して両ブロックの相関値を算出する相関値算出手段と、
前記各第1ブロック毎に、前記相関値の最大値を算出し、該最大値となる第2ブロックの移動量に基づいて、演算対象の第1ブロックに対する前記第1画像及び前記第2画像のずれ量を算出するずれ量算出手段と、
前記第1画像のN+1行目の画素に対する前記ずれ量を算出する際に、前記N行目において算出された前記相関値に基づいて前記移動範囲を絞るように設定する設定手段と、
を有することを特徴とする撮像装置。
【請求項1】
異なる位置から撮影され、複数の画素が2次元の行列状に配列された第1画像及び第2画像を入力する入力手段と、
前記第1画像から所定サイズの第1ブロックを切り出す手段であって、N(Nは1以上の整数)行目の各画素に対応する前記第1ブロックを切り出す第1切り出し手段と、
前記第2画像の前記第1ブロックに対する処理領域内に設定される移動範囲から前記所定サイズの第2ブロックを切り出す手段であって、前記N行目の各画素に対応する各第1ブロックに対して、領域が前記処理領域の全ての領域に設定された前記移動範囲から前記第2ブロックを行方向にP(Pは1以上の整数)画素ずつ移動させて切り出す第2切り出し手段と、
前記第2ブロックの切り出し毎に、該切り出した第2ブロックと、演算対象の第1ブロックとを比較して両ブロックの相関値を算出する相関値算出手段と、
前記各第1ブロック毎に、前記相関値の最大値を算出し、該最大値となる第2ブロックの移動量に基づいて、演算対象の第1ブロックに対する前記第1画像及び前記第2画像のずれ量を算出するずれ量算出手段と、
前記第1画像のN+1行目の画素に対する前記ずれ量を算出する際に、前記N行目において算出された前記相関値に基づいて前記移動範囲を絞るように設定する設定手段と、
を有することを特徴とする画像処理装置。
【請求項2】
前記相関値は、前記第1ブロック及び前記第2ブロックの両ブロック内の各画素の輝度差の絶対値和である差分絶対値和であり、
前記設定手段は、
前記N行目の各画素に対応する各第1ブロック毎に、所定の判定レベルよりも低い前記差分絶対値和の極小点を抽出する手段と、
前記N行目の全ての第1ブロックにおいて抽出された極小点に基づいて、該極小点が密集する前記第2ブロックの移動量の範囲を密集領域として抽出する手段と、
前記密集領域に対応する前記第2ブロックの移動量に基づいて、前記移動範囲を絞るように設定する手段と、
を有することを特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記設定手段は、
前記密集領域内の極小点に対応する前記第2ブロックの移動量の平均値を中心として、前後X(Xは1以上の整数)画素の移動量の範囲のみを前記移動範囲に設定することを特徴とする請求項2に記載の画像処理装置。
【請求項4】
前記X画素は、前記密集領域内の極小点に対応する前記第2ブロックの移動量のばらつきが小さいほど画素数が少なくなるように設定されることを特徴とする請求項3に記載の画像処理装置。
【請求項5】
前記設定手段は、
前記N+1行目以降の各行毎に抽出される前記極小点に基づいて、前記密集領域における前記平均値がずれる場合には、該ずれた平均値に基づき前記移動範囲を変更することを特徴とする請求項3又は4に記載の画像処理装置。
【請求項6】
前記設定手段は、
前記移動範囲が複数の範囲に設定されている場合に、前記設定された一部の範囲内で算出された差分絶対値和の全てが前記判定レベル以上である場合には、前記一部の範囲を前記移動範囲から除外することを特徴とする請求項3〜5のいずれか1つに記載の画像処理装置。
【請求項7】
前記設定手段は、
前記N+1行目の画素に対するずれ量を算出した際に、前記設定された全ての移動範囲内で算出された差分絶対値和の全てが前記判定レベル以上である場合には、前記移動範囲を前記処理領域の全ての領域に設定した上で、前記N+1行目の各画素に対するずれ量を算出する処理を再度実行させることを特徴とする請求項2〜6のいずれか1つに記載の画像処理装置。
【請求項8】
前記第1画像のM(MはN又はN+1以上の整数)行目の画素に対する前記ずれ量を算出した際に、前記算出したずれ量が0である第1ブロックの行方向の位置を抽出する抽出手段と、
前記第1画像のM+1行目の画素に対する前記ずれ量を算出する際に、前記抽出された行方向の位置から前記第1ブロックの切り出しを行わないように制御する第1制御手段と、
を有することを特徴とする請求項1〜7のいずれか1つに記載の画像処理装置。
【請求項9】
前記第1画像のM(MはN又はN+1以上の整数)行目の画素に対する前記ずれ量を算出した際に、前記算出したずれ量が全て0である場合に、前記M行目に続いてM+V(Vは前記第1ブロックの列方向の画素数)行目の各画素に対するずれ量を算出する処理を実行させるように制御する第2制御手段を有することを特徴とする請求項1〜8のいずれか1つに記載の画像処理装置。
【請求項10】
異なる位置から撮影され、複数の画素が2次元の行列状に配列された第1画像及び第2画像を入力するステップと、
前記第1画像のN行1列目から所定サイズの第1ブロックを切り出すステップと、
前記第2画像の前記第1ブロックに対する処理領域内に設定された移動範囲から前記所定サイズの第2ブロックを切り出すステップと、
前記第1ブロックと前記第2ブロックとを比較して両ブロックの相関値を算出するステップと、
領域が前記処理領域の全ての領域に設定された前記移動範囲から前記第2ブロックを行方向にP(Pは1以上の整数)画素ずつ移動させて切り出す毎に前記相関値を算出するステップと、
前記相関値の最大値を算出し、該最大値となる第2ブロックの移動量に基づいて、前記第1ブロックに対する前記第1画像及び前記第2画像のずれ量を算出するステップと、
前記第1ブロックを前記第1画像内で前記行方向に1画素ずつ移動させて切り出し、該切り出した前記N行目の各画素に対応する各第1ブロック毎に、前記全ての領域に設定された前記移動範囲から切り出された比較ブロックと比較して前記相関値及び前記ずれ量を算出するステップと、
前記第1画像のN+1行目の画素に対する前記ずれ量を算出する際に、前記N行目において算出された前記相関値に基づいて前記移動範囲を絞るように設定するステップと、
を有することを特徴とする画像処理方法。
【請求項11】
異なる位置から撮影され、複数の画素が2次元の行列状に配列された第1画像及び第2画像を出力する撮像部と、
前記第1画像から所定サイズの第1ブロックを切り出す手段であって、N(Nは1以上の整数)行目の各画素に対応する前記第1ブロックを切り出す第1切り出し手段と、
前記第2画像の前記第1ブロックに対する処理領域内に設定される移動範囲から前記所定サイズの第2ブロックを切り出す手段であって、前記N行目の各画素に対応する各第1ブロックに対して、領域が前記処理領域の全ての領域に設定された前記移動範囲から前記第2ブロックを行方向にP(Pは1以上の整数)画素ずつ移動させて切り出す第2切り出し手段と、
前記第2ブロックの切り出し毎に、該切り出した第2ブロックと対応する前記第1ブロックとを比較して両ブロックの相関値を算出する相関値算出手段と、
前記各第1ブロック毎に、前記相関値の最大値を算出し、該最大値となる第2ブロックの移動量に基づいて、演算対象の第1ブロックに対する前記第1画像及び前記第2画像のずれ量を算出するずれ量算出手段と、
前記第1画像のN+1行目の画素に対する前記ずれ量を算出する際に、前記N行目において算出された前記相関値に基づいて前記移動範囲を絞るように設定する設定手段と、
を有することを特徴とする撮像装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【公開番号】特開2013−38651(P2013−38651A)
【公開日】平成25年2月21日(2013.2.21)
【国際特許分類】
【出願番号】特願2011−174151(P2011−174151)
【出願日】平成23年8月9日(2011.8.9)
【出願人】(308014341)富士通セミコンダクター株式会社 (2,507)
【Fターム(参考)】
【公開日】平成25年2月21日(2013.2.21)
【国際特許分類】
【出願日】平成23年8月9日(2011.8.9)
【出願人】(308014341)富士通セミコンダクター株式会社 (2,507)
【Fターム(参考)】
[ Back to top ]