フィルタリング処理回路とそれを有するマッチング回路
【課題】簡単な回路構成で高速にフィルタリング処理を行う。
【解決手段】異なる視点での2つの画像に対する複数のずれ量に対応する差分絶対値和のうち,最小差分絶対値和を抽出するフィルタリング処理回路であって,入力回路に入力される複数のずれ量にそれぞれ対応する複数の差分絶対値和が当該入力時点までで最小の差分絶対値和の場合に最小の差分絶対値和として保持する最小差分絶対値和保持回路と,次に小さい第2最小差分絶対値和を検出して保持する第2最小差分絶対値和検出回路と,入力時点までで最小の差分絶対値和でない場合には,当該入力差分絶対値和を第2最小差分絶対値和検出回路に入力し,最小の差分絶対値和である場合には,最小差分絶対値和保持回路で最小差分絶対値が更新されることに伴って最小差分絶対値和保持回路から出力される元の最小差分絶対値和を,第2最小差分絶対値和検出回路に入力するセレクタ回路とを有する。
【解決手段】異なる視点での2つの画像に対する複数のずれ量に対応する差分絶対値和のうち,最小差分絶対値和を抽出するフィルタリング処理回路であって,入力回路に入力される複数のずれ量にそれぞれ対応する複数の差分絶対値和が当該入力時点までで最小の差分絶対値和の場合に最小の差分絶対値和として保持する最小差分絶対値和保持回路と,次に小さい第2最小差分絶対値和を検出して保持する第2最小差分絶対値和検出回路と,入力時点までで最小の差分絶対値和でない場合には,当該入力差分絶対値和を第2最小差分絶対値和検出回路に入力し,最小の差分絶対値和である場合には,最小差分絶対値和保持回路で最小差分絶対値が更新されることに伴って最小差分絶対値和保持回路から出力される元の最小差分絶対値和を,第2最小差分絶対値和検出回路に入力するセレクタ回路とを有する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は,フィルタリング処理回路とそれを有するマッチング回路に関する。
【背景技術】
【0002】
デジタルスチールカメラなどで三次元(3D)画像を撮像し再生することが提案されている。例えば,左右の視点から画像を撮像し,ステレオ法により,両画像内の被写体のずれ量を視差(両眼視差)として抽出し,画像内の被写体までの距離を三角測量の原理により求め,3D画像を生成する。そのためには,左右の画像のずれ量を視差として求めるマッチング処理が行われる。
【0003】
マッチング処理は,左右の画像のうち一方の画像を視差方向(通常は水平方向)にずらしながら他方の画像とマッチングするか否かを検出し,マッチングした時のずれ量を視差として出力する。このマッチング処理では,2つの画像間の各画素値の差分の絶対値を求め,所定範囲内で差分絶対値の総和,つまり差分絶対値和(SAD値:Sum of Absolute Difference)を演算し,複数のずれ量に対するSAD値のうち最小のSAD値を検出し,その最小SAD値をとるときのずれ量を視差として出力する。したがって,各ずれ量に対応するSAD値を求める演算部と,その複数のSAD値のうち最小SAD値を抽出するフィルタリング処理部とが必要になる。
【0004】
さらに,フィルタリング処理では,例えば窓などの同じパターンが繰り返される画像では,SAD値の極小値が繰り返されて,最小SAD値が複数検出されたり,輪郭がはっきりしない画像では,最小SAD値の近傍に類似するSAD値が検出されたりし,検出されるSAD値の信憑性が低い場合がある。そのような場合は,検出された視差を採用して3D画像を生成することは適切でなく,検出された最小SAD値はエラーであることを出力することが必要になる。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2006−164297号公報
【特許文献2】特開2002−247604号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
このように,マッチング処理で行われるフィルタリング処理は,複雑な処理が必要であり,従来はファームウエアによるデータ処理で複数のSAD値からの最小SAD値の検出と,そのエラー検出を行っている。そのため,回路が大規模なものとなり,携帯電話などの携帯情報端末への搭載は現実的ではない。また,最初に全てのSAD値を演算してメモリなどに記憶しておいてから,最小SAD値を抽出するとともにエラーチェックを行うため,処理時間が長くなるという問題もある。
【0007】
そこで,本発明の目的は,小さな回路規模で且つ高速にフィルタリング処理を行うフィルタリング処理回路とそれを有するマッチング回路を提供することにある。
【課題を解決するための手段】
【0008】
フィルタリング処理回路の第1の側面は,異なる視点での2つの画像に対する複数のずれ量に対応する差分絶対値和のうち,最小差分絶対値和を抽出するフィルタリング処理回路であって,
前記複数のずれ量にそれぞれ対応する複数の差分絶対値和を順次入力する入力回路と,
前記入力回路に入力される差分絶対値和が当該入力時点までで最小の差分絶対値和の場合に,前記入力差分絶対値和を最小の差分絶対値和として保持する最小差分絶対値和保持回路と,
前記最小差分絶対値和保持回路に保持される最小差分絶対値和の次に小さい第2最小差分絶対値和を検出して保持する第2最小差分絶対値和検出回路と,
前記入力時点までで最小の差分絶対値和でない場合には,当該入力差分絶対値和を前記第2最小差分絶対値和検出回路に入力し,最小の差分絶対値和である場合には,前記最小差分絶対値和保持回路で最小差分絶対値が更新されることに伴って前記最小差分絶対値和保持回路から出力される元の最小差分絶対値和を,前記第2最小差分絶対値和検出回路に入力するセレクタ回路とを有する。
【発明の効果】
【0009】
第1の側面によれば,簡単な回路構成で高速に最小SAD値を抽出することができる。
【図面の簡単な説明】
【0010】
【図1】3D画像を撮像するデジタルスチルカメラシステムの概略図である。
【図2】異なる視点の左右の画像を示す図である。
【図3】マッチング処理回路の処理を示す図である。
【図4】ずれ量に対する差分絶対値和の分布例を示す図である。
【図5】本実施の形態におけるマッチング処理回路の構成図である。
【図6】本実施の形態におけるフィルタリング処理回路113の構成図である。
【図7】本実施の形態におけるフィルタリング処理回路の詳細な回路図である。
【図8】左右の画像の例であり,同じ形状の窓の画像が繰り返し存在する画像である。
【図9】図8の例において演算された16のSAD値D0〜Dfの例を示す図である。
【図10】図9のSAD値D0〜Dfが順次入力された場合のフィルタリング処理回路の動作を示すタイミングチャート図である。
【図11】最後の入力Dfが最小値の場合のスイープ処理を示す図である。
【図12】本実施の形態におけるフィルタリング処理の全体の動作を示すフローチャート図である。
【図13】スイープ処理の例を示す図である。
【図14】スイープ処理の例を示す図である。
【発明を実施するための形態】
【0011】
図1は,3D画像を撮像するデジタルスチルカメラシステムの概略図である。このシステムにおいて,撮像部1は,右画像と左画像をそれぞれ撮像するための撮像光学系7R,7L,CCDセンサなどの撮像素子,センサのタイミング制御を行い撮像信号をAD変換するアナログフロントエンドAFEを有する。そして,撮像部1から出力されるデジタル信号を処理するイメージ・シグナル・プロセッサ2は,CPUと内部バスに加えて,センサ出力のノイズを除去するセンサインターフェース8と,色調や輪郭処理などを行う色処理部9と,拡大縮小や歪み補正,また画質調整を行う画像処理部10と,左右の画像のずれ量を視差(両眼視差)として検出するマッチング処理回路11,静止画の符号化,復号化を行うコーデック部14などの周辺マクロを有する。また,プロセッサ2は,外付けのSDRAM3に対してDRAM調停部12とSDRAMコントローラ13,外付けメモリカード4に対するメモリカードインターフェース15,表示インターフェース16を有する。
【0012】
イメージ・シグナル・プロセッサ2は,左右の画像データと,マッチング処理回路11が検出した視差データとを3Dプロセッサに出力し,3Dプロセッサ5がそれらのデータに基づいて3D画像を生成し,表示装置6が3D画像を表示する。
【0013】
次に,マッチング処理回路11の処理について説明する。
【0014】
図2は,異なる視点の左右の画像を示す図である。被写体19が含まれる画像17を,左右のカメラ1L,1Rによりそれぞれ撮像すると,左画像18Lと右画像18Rとを取得することができる。そして,左右の画像18L,19R内の被写体の位置は,左右のカメラの異なる視点間の距離と視点から被写体までの距離とに応じてずれる。このずれ量が視差である。ステレオ法によれば,左右の画像での被写体のずれ量と,両カメラの視点間の距離に基づいて,視点から被写体までの距離を算出することができる。それにより3D画像を生成することができる。
【0015】
図3は,マッチング処理回路の処理を示す図である。左右の画像18L,18R内の被写体画像19L,19Rのずれ量を検出するために,マッチング処理回路は,左画像18L内の例えば5×5画素の領域の画像IMAGAを,右画像18R内の前記画像IMAGAに対応する位置にあり画像IMAGAより水平方向に広い画像IMAGBとマッチングをとる。即ち,右画像の画像IMAGBに対して,左画像の画像IMAGAを画素単位で水平方向にシフトしながら,各ずれ量(シフト量)毎に,画像IMAGAとそれと重なる画像IMAGB内の画像との各画素の画素値の差分絶対値を求め,5×5=25個の差分絶対値の和を差分絶対値和(SAD値)として求める。
【0016】
そして,このSAD値が最小になるときのずれ量(シフト量)が視差に対応する。この視差情報があれば,被写体までの距離をステレオ法により求めることができる。したがって,マッチング回路は,水平方向にシフトした回数分のSAD値から最小SAD値を抽出するフィルタリング処理回路を有する。
【0017】
図4は,ずれ量に対する差分絶対値和の分布例を示す図である。図4には3種類の差分絶対値和の分布例が示されている。図4(A)は,通常の画像の場合の差分絶対値和(SAD値)の分布を示す。異なるずれ量に対してSAD値は変化し,あるずれ量の時にSAD値は最小値になる。このずれ量の時に画像IMAGAと画像IMAGBの対応する画像とがマッチングしたことを意味する。したがって,最小SAD値のときのずれ量が視差に対応する。
【0018】
一方,図4(B)は,例えば窓やフェンスなど繰り返しパターンが含まれる画像の場合のSAD値の分布を示す。この場合は,複数のずれ量で最小SAD値が繰り返し検出される。したがって,どの最小SAD値が正しい視差に対応するのか明確でなく,得られた視差が正しくない場合は,不適切な3D画像が生成されるので好ましくない。
【0019】
同様に,図4(C)は,例えば画像の輪郭が不鮮明な場合のSAD値の分布を示す。この場合は,類似したSAD値が連続して生成されるので,その水平シフト量のSAD値が真の最小SAD値かを判断することが困難である。
【0020】
本実施の形態におけるフィルタリング処理回路は,第1に,複数のずれ量毎に演算されるSAD値のうち最小のSAD値を抽出する機能と,第2に,最小SAD値から閾値範囲内に他のSAD値が存在する場合はエラー値であることを示す無効信号を出力する機能を有する。さらに,第2の機能において,最小SAD値から閾値範囲内に他のSAD値が存在するか否かの判定において,最小SAD値の位置の左右の隣接点のSAD値は判定の対象外にする。このようにすることで,図4(A)ではエラーは検出されないが,図4(B)(C)の場合にはエラーが検出され無効信号を出力することができる。
【0021】
このような複雑な判断を必要とするフィルタリング処理回路を,簡単な回路で構成し,且つ順次生成される複数のずれ量に対するSAD値からの最小SAD値の抽出と,エラーの検出とを高速に行うことができることが望まれる。
【0022】
図5は,本実施の形態におけるマッチング処理回路の構成図である。内部バスBUSに接続されたDMAコントローラDMACによりSDRAM3などから左右の画像データがメモリ110L,110Rに転送される。マッチング処理回路全体を制御するステートマシンSMが生成する制御信号φCNにより,これらのメモリ110L,110Rから図3に示した画像IMGAと,画像IMGBのうちシフトした画像IMGAと重なる画像が読み出され,SAD演算部111が5×5画素=25画素の画素値の差分絶対値の和(SAD値)を演算する。SAD演算部111は,異なるずれ量(シフト量)に対するSAD値を順次演算して出力する。それらの次々に演算されるSAD値をSADnowとする。この差分絶対値和SADnowは,最小差分絶対値和112と,フィルタリング処理回路113とに順番に出力される。
【0023】
一方,最小差分絶対値和判定回路(SADmin判定回路)112は,順次生成されるSAD値がその時点までで最小のSAD値か否かを判定する。このSADmin判定回路112は,たとえば,比較器とその比較により小さいと判定された値を保持するフリップフロップ回路とを有する。そして,生成された差分絶対値和SADnowがその時点までで最小であると判定したら,更新イネーブル信号UpENをHレベルにして出力する。最小でない場合は更新イネーブル信号UpENはLレベルで出力する。
【0024】
フィルタリング処理回路113は,異なる視点での2つの画像に対する複数のずれ量に対応するSAD値のうち,最小差分絶対値和(最小SAD値)を抽出する。フィルタリング処理回路113は,順次生成される差分絶対値和SADnowを更新イネーブル信号UpENと共に入力し,更新イネーブル信号UpENが最小値が更新されたことを示すHレベルの場合に,入力された差分絶対値和SADnowを最小差分絶対値和保持回路に保持する。また,フィルタリング処理回路113は,最小差分絶対値和保持回路に保持される最小差分絶対値和の次に小さい第2最小差分絶対値和を検出して保持する第2最小差分絶対値和検出回路を有する。この第2最小差分絶対値和検出回路は,更新イネーブル信号UpENが最小値が更新されたことを示さない場合は,入力された差分絶対値和SADnowが2番目の最小値か否かの判定を行い,更新イネーブル信号UpENが最小値が更新されたことを示す場合は,最小差分絶対値和保持回路から出力される元最小差分絶対値和が2番目の最小値か否かの判定を行う。
【0025】
そして,全てのずれ量に対する差分絶対値和SADnowの入力が終了すると,フィルタリング処理回路113は,最小差分絶対値和保持回路に保持される最小SAD値を出力する。この最小SAD値に対応するずれ量が視差に対応する。また,フィルタリング処理回路113は,最小SAD値と2番目の最小SAD値との差が所定の閾値以下である場合には無効フラグ信号を出力する。無効フラグ信号が出力された場合は,検出した最小SAD値はエラーが含まれている可能性が高いので,イメージ・シグナル・プロセッサ2は,検出したずれ量を3Dプロセッサ5に出力しない,または,無効フラグ信号と共に出力する。
【0026】
図6は,本実施の形態におけるフィルタリング処理回路113の構成図である。フィルタリング処理回路113は,SAD演算回路からの差分絶対値和SADnowを順次入力する入力回路24と,入力回路に入力されたSAD値が当該入力時点までで最小のSAD値の場合に,その入力されるSAD値を最小のSAD値として保持する最小SAD値保持回路26とを有する。さらに,フィルタリング処理回路は,最小SAD値保持回路26に保持される最小SAD値を除いて次に小さい第2最小SAD値を検出して保持する第2最小SAD値検出回路30を有する。
【0027】
また,フィルタリング処理回路113は,入力差分絶対値和SADnowと共に入力される更新イネーブル信号UpENを入力して保持する更新イネーブル信号履歴保持回路20と,その履歴に応じて制御信号Aを生成する生成回路22を有する。さらにSAD演算回路111から順次供給される差分絶対値和SADnowを入力する入力回路24と,データスルーパス(Path2)27と,制御信号Aに応じて最小SAD値保持回路26からのSAD値か,データスルーパス27からのSAD値かのいずれかを選択するセレクタ回路28とを有する。
【0028】
フィルタリング処理回路113の概略的な動作は次の通りである。複数のずれ量に対して順次生成される差分絶対値和SADnowと,それがその時点で最小値か否かを示す更新イネーブル信号UpENとが,順番に入力される。履歴保持回路20は,その更新イネーブル信号UpENの履歴を保持する。また,入力回路24は,入力される差分絶対値和SADnowを一時的にラッチする。
【0029】
制御回路22は入力される更新イネーブル信号UpENとその履歴に応じて,制御信号Aを生成する。この制御信号Aに応じて,入力回路24に一時的にラッチされるSAD値SADnowは,最小SAD値保持回路26にシフトされて保持されるか,第2最小SAD値検出回路30に入力される。また,最小値保持回路26が保持する最小SAD値が更新される場合は,元の最小SAD値は第2最小SAD値検出回路30に入力される。そして,第2最小SAD値検出回路30は,最小SAD値保持回路26に保持されている最小SAD値以外のSAD値の中で最小の値,つまり第2最小SAD値を検出する。
【0030】
即ち,順次入力されるSAD値SADnowは,上流の入力回路24から,最小SAD値保持回路26に保持されるか,第2最小SAD値検出回路30に入力されるかである。また,最小SAD値保持回路26が新たな最小SAD値に更新する場合,元の最小SAD値は出力されて,第2最小SAD値検出回路30に入力される。そして,無効判定回路32は,最小SAD値と第2最小SAD値との差分が閾値Th以内かどうかを判定して,閾値以内の場合は無効フラグ信号を出力する。このように,全てのずれ量に対するSAD値SADnowの入力が完了すると,後述する数サイクルのスイープ処理後に,最小SAD値と無効フラグ信号とが確定する。
【0031】
図7は,本実施の形態におけるフィルタリング処理回路の詳細な回路図である。図6内の対応する回路には同じ引用番号を与えている。まず,入力回路24は,入力されるSAD値SADnowを一時的に保持するフリップフロップFF1を有し,最小SAD値保持回路26は,最小SAD値とそれに隣接するずれ量のSAD値を保持する3つのフリップフロップFF2,FF3,FF4を有する。これらのフリップフロップFF1〜FF4は,図示しないクロックに同期してSAD値をシフトするシフトレジスタを構成する。また,最小SAD値保持回路26内の3つのフリップフロップFF2〜FF4は,制御信号Aがイネーブル信号として入力され,制御信号AがHレベルのときにシフト動作を行う。
【0032】
データスルーパス27は,単なる信号配線であり,入力回路24とセレクタSELとの間に設けられ,セレクタSELは,制御信号AがLレベルの場合にデータスルーパス27側からシフトされる入力回路24内に一時的に保持されたSAD値SADnowを選択し,制御信号AがHレベルの場合に最小SAD値保持回路26から出力されるSAD値を選択する。
【0033】
セレクタSELの後段に設けられた第2最小SAD値検出回路30は,フリップフロップFF5と,比較器CMPと,フリップフロップFF6とを有し,フリップフロップFF5は比較イネーブル信号SM_cmpenがHの間,セレクタSELが選択したSAD値をラッチし,比較器CMPに出力する。比較器CMPは,フリップフロップFF6に保持されている第2最小SAD値と,フリップフロップFF5に入力された新たなSAD値とを比較して,小さいほうのSAD値をフリップフロップFF6に出力する。前述のSADmin判定回路112も,これと同様の比較器の構成を有する。
【0034】
履歴保持回路20は,フリップフロップFF11〜FF13からなるシフトレジスタを有する。このフリップフロップFF11〜FF13のシフトレジスタは,フリップフロップFF1〜FF3のシフトレジスタとタイミングが同期している。そして,図示しない同期クロックに応答して,3ビットのシフトレジスタFF11〜FF13が順次入力される更新イネーブル信号UpENを保持する。したがって,履歴保持回路20では,入力された更新イネーブル信号UpENと,シフトレジスタでそれぞれ保持される3つの遅延された更新イネーブル信号dUpEN1〜dUpEN3とが参照可能である。
【0035】
制御回路22は,履歴保持回路20で参照可能な4ビットの更新イネーブル信号に応じて,制御信号AをHレベルまたはLレベルに制御する。たとえば,ステートマシンSMからのスタート信号SM_start(1クロックサイクルだけLレベル)に応答して,フリップフロップFF10がリセットされ出力がLレベルになりアンドノアゲートG4により制御信号AはLレベルに初期化される。つまり,フリップフロップFF1のリセット端子はLレベルでアクティブになる。そして,その後,更新イネーブル信号UpENがHレベルになると,オアゲートOR2の出力はHレベルになる。NANDゲートNAND1は4つの更新イネーブル信号の履歴が「1000」(dUpEN3のみH,他はL)の時にその出力がLになりそれ以外は出力はHであるので,UpEN=Hになると,アンドオアゲートG3の出力がHレベルになりフリップフロップFF10がHレベルをラッチし,制御信号AはHレベルになる。FF10の出力がアンドオアゲートG3に入力されているので,更新イネーブル信号UpENがLレベルに変化しても,制御信号AがHレベルの状態は維持される。そして,4つの更新イネーブル信号の履歴が「1000」になって初めて,NANDゲートNAND1の出力がLレベルになりFF10がLレベルをラッチし制御信号AがLレベルになる。
【0036】
このように,制御信号Aは,更新イネーブル信号UpENがHレベルになるとHレベルになり,その履歴が「1000」になるまで維持し,履歴が「1000」になると初めてLレベルになる。この履歴が「1000」の状態は,更新イネーブル信号UpENが最後にHレベルになった時のSAD値がフリップフロップFF3にラッチされた状態に対応する。
【0037】
無効判定回路32は,具体的な回路は示されていないが,フリップフロップFF3内の最小SAD値とフリップフロップFF6内の2番目の最小値である第2最小SAD値との差分が閾値Th以下か否かを判定し,閾値以下の場合に無効フラグ信号をHレベルにする。
【0038】
なお,各フリップフロップFFの上側の端子はプリセット端子で内部がHレベルに初期化され,下側の端子はリセット端子で内部がLレベルに初期化され,いずれもLアクティブな端子である。したがって,スタート信号SM_startがLレベルになると,フリップフロップFF1〜FF6はプリセットされ全てHレベル,つまりそれぞれのSAD値は最大値に初期化され,フリップフロップFF10〜FF13は全てLレベルに初期化される。
【0039】
図7のフィルタリング処理回路の具体的な動作を図8,9の例にしたがって説明する。
【0040】
図8は,左右の画像の例であり,同じ形状の窓の画像が繰り返し存在する画像である。そして,左画像内の3×3画素のブロックIMGAを,右画像内の3×18画素のブロックIMGB上で水平方向にシフトさせたときの,それぞれずれ量での複数のSAD値のなかから最小SAD値を抽出する例である。
【0041】
図9は,図8の例において演算された16のSAD値D0〜Dfの例を示す図である。図8の画像は同じような形状の窓が繰り返しているので,演算された16のSAD値には3つの極小値D1,D7,Deが含まれている。そして,SAD値D7が最小値であり,この最小値D7とそのずれ量の両側の隣接点のSAD値D6,D8を除いたなかでSAD値D1が2番目の最小値であり,これらの差分は閾値以下であり無効フラグ信号がアサートされる例である。
【0042】
図10は,図9のSAD値D0〜Dfが順次入力された場合のフィルタリング処理回路の動作を示すタイミングチャート図である。図10では,システムクロックCLKのクロックサイクル1から19でフィルタリング処理が完了している。
【0043】
最初に,クロックサイクル1で,ステートマシンSMがスタート信号SM_startをLレベルにすると,履歴保持回路20内のフリップフロップFF11〜FF13と制御回路22内のフリップフロップFF10とがリセットされ内部データはLレベルに初期化され,一方,シフトレジスタを構成するフリップフロップFF1〜FF3と第2最小SAD値検出回路30内のフリップフロップFF5,FF6はプリセットされ内部データは全てHの最大値(0xFF)に初期化される。
【0044】
クロックサイクル1で初期化された後,クロックサイクル2で,ステートマシンSMは,比較イネーブル信号SM_cmpenをHレベルにして,第2最小SAD値検出回路30内のフリップフロップFF5をイネーブル状態にして,2番目に小さい第2最小SAD値を検出するための比較動作状態にする。
【0045】
クロックサイクル2で,最初の入力SADnowとしてD0が入力される。最初の入力D0は常に最小値と認定されるので更新イネーブル信号UpENはHレベルになる。このUpEN=Hに応答して制御回路22は制御信号AをHレベルにする。A=Hにより,最小SAD値保持回路26内のシフトレジスタのフリップフロップFF2〜FF4はイネーブル状態にされ,入力値を取り込み可能状態にされる。
【0046】
クロックサイクル3で,D0は入力回路24内のフリップフロップFF1にラッチされ,新たに入力SADnowにはD1が入力される。図9によれば,D1<D0であるのでUpEN=Hとなる。そして,クロックサイクル4,5で入力SADnowにはD2,D3が入力され,フリップフロップFF1にラッチされたD0,D1は,最小SAD値保持回路26内のシフトレジスタのFF2,FF3,FF4へとシフトされる。また,D2,D3>D1であるのでUpEN=Lになるが,制御信号AはA=Hに維持される。
【0047】
クロックサイクル6では,この時点で最小値のD1とその両側の隣接点のD0,D2が,最小SAD値保持回路26内のフリップフロップFF3,FF2,FF4に格納される。さらに,履歴保持回路20内の4ビットの更新イネーブル信号UpEN,dUpEN1〜3の4ビットの履歴は,UpENをLSBとすると「1000」になっているので,制御回路22が制御信号AをLレベルに切り替える。
【0048】
これにより,その次のクロックサイクル7,8では,最小SAD値保持回路26のシフトレジスタのフリップフロップFF2〜FF4はディセーブル状態になりシフト動作が停止し,且つセレクタ28はデータスルーパス27側を選択する状態になる。したがって,入力回路24内のフリップフロップFF1内のSAD値D3,D4は,データスルーパス27を介して第2最小SAD値検出回路30内のフリップフロップFF5にラッチされる。D3<D4であるので,第2最小SAD値検出回路30の比較器CMPの比較動作によりクロックサイクル8ではSAD値D3がフリップフロップFF6にラッチされる。このラッチされたSAD値がその時点で2番目に小さいSAD値,つまり第2最小SAD値である。
【0049】
次に,クロックサイクル9では,入力SADnowにD7が入力され,D7<D1であるので,更新イネーブル信号UpEN=Hとなる。これに応答して,再度制御信号AがA=Hとなり,最小SAD値保持回路26のフリップフロップFF2〜FF4がイネーブル状態になり,セレクタ28は最小SAD値保持回路26の出力側を選択する。この時点で入力回路24内のフリップフロップFF1にはD7の隣接点のD6がラッチされている。
【0050】
次のクロックサイクル10では,D6がフリップフロップFF2にラッチされ,D7はフリップフロップFF1にラッチされ,入力SADnowにはD8が入力される。そして,以後の入力D8〜Dfは全て最小値D7より大きいので,更新イネーブル信号UpENは全てLになり,クロックサイクル9でのUpEN=Hが,次の3サイクルで履歴保持回路20内のシフトレジスタのフリップフロップFF11,12,13をシフトし,SAD値D6,D7,D8も入力回路24内のフリップフロップFF1と,最小SAD値保持回路26内のシフトレジスタのフリップフロップFF2〜FF4をシフトする。そして,クロックサイクル12で,最小SAD値保持回路26内のシフトレジスタには,最小値D7とその両側隣接点のD6,D8が格納される。
【0051】
SAD値D6,D7,D8が最小SAD値保持回路26内に更新されるとき,元の最小SAD値とその隣接点のSAD値D0,D1,D2は,セレクタ28を介して,第2最小SAD値検出回路30のフリップフロップFF5にラッチされ,2番目に小さいSAD値か否かを比較される。
【0052】
クロックサイクル12で,履歴保持回路20内の更新イネーブル信号の4ビットの履歴が再び「1000」となるので,制御回路22は制御信号AをA=Lに切り替える。その結果,クロックサイクル13以降は,入力回路24内のフリップフロップFF1にラッチされたSAD値D9〜Dfは,データスルーパス27,セレクタ28を経由して,第2最小SAD値検出回路30のフリップフロップFF5にラッチされ,比較器CMPにより比較判定される。
【0053】
なお,上記では更新イネーブル信号の履歴が「1000」になると制御信号AをLレベルに切り替えている。その理由は次のとおりである。即ち,履歴が「100」となった時点で,極小値である最小SAD値とその両隣接点のSAD値はフリップフロップFF1,FF2,FF3にラッチされている。そして,次のクロックサイクルで最小値でない入力SAD値がフリップフロップFF1にラッチされると共に,その次のSAD値が入力SADnowに現れる。この入力SADnowが新たな最小値の場合は,フリップフロップFF1にラッチされているSAD値(新たな最小値の隣接点)と共に,フリップフロップFF2,FF3,FF4にシフトされる必要がある。そこで,履歴が「1000」であることを確認してそのクロックサイクルで制御信号AをLに切り替えている。もし履歴が「1001」になれば,制御信号AはHのまま維持されて,それにより新たな最小値と隣接点のSAD値がフリップフロップFF2〜FF3にシフトされる。
【0054】
クロックサイクル17で最後のSAD値Dfが入力SADnowに入力される。その最後の入力Dfは,未だフィルタリング処理されていないので,スイープ処理によって,最小SAD値保持回路20内のフリップフロップFF2又はFF3にラッチするか,第2最小SAD値検出回路30内のフリップフロップFF5にラッチして比較器CMPによる第2最小値か否かの比較動作をするかが行われる。そこで,ステートマシンSMは,最後のSAD値Dfに対応する更新イネーブル信号UpENのレベルを参照して,UpEN=Lであればその後2サイクルのスイープ処理を行い,UpEN=Hであればその後3サイクルのスイープ処理を行い,その後比較イネーブル信号SM_cmpenをLレベルに切り替える。
【0055】
図10の例では,最後の入力SADnowのDfが最小値ではないので,UpEN=Lであり,2サイクルのスイープ処理(SWP=2)により,Dfは第2最小SAD値検出回路30内のフリップフロップFF5までシフトし,そのDfが比較器CMPにより第2最小値か否かの比較動作が行われる。そして,クロックサイクル20で比較イネーブル信号SM_cmpenがLレベルにされその後の比較動作は禁止される。なお,Dfが第2最小値の場合は,比較器CMPからDfが最終段のフリップフロップFF6にラッチされる。ただし,比較器CMPの出力をフリップフロップFF6を介さずに第2最小SAD値として出力する回路構成にすれば,クロックサイクル20はスイープ処理には必要ない。
【0056】
図11は,最後の入力Dfが最小値の場合のスイープ処理を示す図である。クロックサイクル17で入力された最後のSAD値Dfが最小値の場合は,更新イネーブル信号UpENがHレベルになり,制御信号AがHレベルになる。そして,ステートマシンSMはスイープ処理を3サイクルに設定し,クロックサイクル21で比較イネーブル信号SM_cmpenをLレベルにする。3サイクルのスイープ処理により最小値のDfは最小SAD値保持回路26内のフリップフロップFF3にラッチされ,両側隣接点の一方のDeはフリップフロップFF4にラッチされる。それと共に,クロックサイクル19で,元の最小SAD値D7は第2最小SAD値検出回路30内のフリップフロップFF5にラッチされ第2最小判定される。
【0057】
このように,最後の入力SAD値が最小値の場合は,3クロックサイクルのスイープ処理を行って,その入力されるSAD値をフリップフロップFF1,FF2,FF3にシフトさせる。
【0058】
図12は,本実施の形態におけるフィルタリング処理の全体の動作を示すフローチャート図である。最後のSAD値を入力した後のスイープ処理か否か(S10)により,左側の処理S11〜S14に示した最後のSAD値を入力するまでのクロックサイクル(図10,11の例ではクロックサイクル1〜17)での処理と,右側の処理S15〜S20に示したスイープ処理とを有する。
【0059】
スイープ処理でない間は(S10のN),入力SAD値が最小値の場合に(S11のY),UpEN=Hにより制御信号AはA=Hにされる(S12)。そして,履歴パターンが「1000」でない間(S13のN)は制御信号AはA=Hに維持され,履歴パターンが「1000」になると(S13のY),制御信号AはA=Lに切り替えられる。この制御信号AがA=Hなら,3つの連続する入力SAD値がフリップフロップFF2〜FF4にシフトしてラッチされるとともに,フリップフロップFF2〜FF4に元々ラッチされていた3つのSAD値は第2最小値判定回路内のフリップフロップFF5にシフトされて第2最小判定される。一方,A=Lなら,入力SAD値は第2最小値判定回路内のフリップフロップFF5にシフトされて第2最小値判定され,フリップフロップFF2〜FF4内の最小SAD値とその隣接点SAD値は保持される。
【0060】
図13は,スイープ処理の例を示す図である。入力SAD値が最小値の場合は破線枠で,隣接点は枠無しで,そして最小値でも隣接点でもない場合は二重枠で示している。左から順に,最後の入力であるSADnowの「4」は最小値ではないので,2サイクルのスイープ処理が行われ,「3」「4」はフリップフロップFF5にラッチされて第2最小値判定されている。真ん中の場合は,最後の入力「4」が最小値であるので,3サイクルのスイープ処理が行われ,入力「3」「4」がフリップフロップFF3,FF4にラッチされ,元の最小値と隣接点の「1」「2」はフリップフロップFF5にラッチされて第2最小値判定されている。右側の例は,最後の入力「6」が最小値でない場合であり,左側と同様の2サイクルのスイープ処理になっている。
【0061】
図14は,スイープ処理の例を示す図である。ここに示した4つのスイープ処理SWP1〜SWP4は,いずれも最後の入力が最小値でない場合であり2クロックサイクルの長さである。そして,直前の入力最小値の位置に応じて4つの例が示されている。
【0062】
スイープ処理SWP1では,最後の入力「p」の前の入力「o」が最小値の例であり,スイープ処理サイクル中に制御信号AがLレベルに切り替えられている。そのため,入力「n」「o」「p」はフリップフロップFF2〜FF4にシフトされてラッチされる。
【0063】
スイープ処理SWP2では,最後の入力「q」の2つ前の入力「o」が最小値の例であり,「n」「o」「p」がフリップフロップFF2〜FF4にラッチされている。スイープ処理SWP3では,最後の入力「r」の3つ前の入力「o」が最小値の例であり,「n」「o」「p」がフリップフロップFF2〜FF4にラッチされ,入力「q」「r」はフリップフロップFF5にラッチされて第2最小値判定されている。スイープ処理SWP4は,SWP3と同様である。
【0064】
図7に戻り,無効判定回路32は,フリップフロップFF3の最小SAD値と,フリップフロップFF6の第2最小SAD値とを比較し,その差分が閾値Th以下の場合に無効フラグをHレベルにする。したがって,スイープ処理が終了した時点で,最小SAD値の抽出と,それがエラー値か否かの判定が完了する。
【0065】
以上の通り,本実施の形態のフィルタリング処理回路によれば,異なるずれ量に対するSAD値を順次入力し,パイプライン処理により最小値の保持と,第2最小値の判定及び無効判定を行うので,簡単な構成の回路により高速に処理を行うことができる。
【0066】
以上の実施の形態をまとめると,次の付記のとおりである。
【0067】
(付記1)
異なる視点での2つの画像に対する複数のずれ量に対応する差分絶対値和のうち,最小差分絶対値和を抽出するフィルタリング処理回路であって,
前記複数のずれ量にそれぞれ対応する複数の差分絶対値和を順次入力する入力回路と,
前記入力回路に入力される差分絶対値和が当該入力時点までで最小の差分絶対値和の場合に,前記入力差分絶対値和を最小の差分絶対値和として保持する最小差分絶対値和保持回路と,
前記最小差分絶対値和保持回路に保持される最小差分絶対値和の次に小さい第2最小差分絶対値和を検出して保持する第2最小差分絶対値和検出回路と,
前記入力時点までで最小の差分絶対値和でない場合には,当該入力差分絶対値和を前記第2最小差分絶対値和検出回路に入力し,最小の差分絶対値和である場合には,前記最小差分絶対値和保持回路で最小差分絶対値が更新されることに伴って前記最小差分絶対値和保持回路から出力される元の最小差分絶対値和を,前記第2最小差分絶対値和検出回路に入力するセレクタ回路とを有するフィルタリング処理回路。
【0068】
(付記2)
付記1において,
前記最小差分絶対値和保持回路は,前記保持される最小差分絶対値和のずれ量に隣接するずれ量に対応する差分絶対値和も保持し,前記最小差分絶対値が更新される場合には,当該保持されていた元の最小差分絶対値和に加えて前記隣接するずれ量の差分絶対値和も出力するフィルタリング処理回路。
【0069】
(付記3)
付記1または2において,
さらに,前記最小差分絶対値和保持回路に保持される前記最小差分絶対値和と,前記第2最小差分絶対値和との差が,閾値以下の場合に,無効信号を出力する無効判定回路を有するフィルタリング処理回路。
【0070】
(付記4)
付記2において,
前記最小差分絶対値和保持回路は,前記最小差分絶対値和と前記隣接するずれ量の差分絶対値和を順次シフトして保持する第1,第2及び第3のレジスタを有する最小値シフトレジスタを有し,
さらに,前記入力回路に順次入力される差分絶対値和が前記入力時点までで最小の差分絶対値和か否かを示す更新イネーブル信号を,順次入力して保持する更新イネーブル信号履歴保持回路と,
前記更新イネーブル信号履歴保持回路の履歴に応じて,前記入力される差分絶対値和を前記最小値シフトレジスタに入力させるとともに,前記最小値シフトレジスタに保持していた前記元の最小差分絶対値和を前記隣接するずれ量の差分絶対値和と共に出力させる第1の制御信号と,前記セレクタ回路により前記入力される差分絶対値和を前記第2最小差分絶対値和検出回路に入力させる第2の制御信号を生成する制御回路とを有するフィルタリング処理回路。
【0071】
(付記5)
付記4において,
前記セレクタ回路は,前記第1の制御信号に応答して,前記最小値シフトレジスタから出力される前記元の最小差分絶対値和と隣接するずれ量の差分絶対値和とを前記第2最小差分絶対値和検出回路に入力するフィルタリング処理回路。
【0072】
(付記6)
付記4において,
前記複数のずれ量に対応する差分絶対値和のうち最後の差分絶対値和が入力された後,当該最後の差分絶対値和に対応する更新イネーブル信号が最小の差分絶対値和であることを示す第1の場合に,第1のクロックサイクル期間,示さない第2の場合に,前記第1のクロックサイクル期間と異なる第2のクロックサイクル期間,それぞれ前記最小値シフトレジスタとセレクタ回路と第2最小差分絶対値和検出回路とを動作させステートマシンを有するフィルタリング処理回路。
【0073】
(付記7)
付記6において,
前記第1の場合に,前記第1のクロックサイクル期間で,前記最後の差分絶対値和が前記最小値シフトレジスタの第2のレジスタに転送され,前記第2の場合に,前記第2のクロックサイクル期間で,前記最後の差分絶対値和が前記第2最小差分絶対値和検出回路で第2最小値判定されるフィルタリング処理回路。
【0074】
(付記8)
付記4において,
さらに,前記入力回路が入力される前記SAD値をラッチする入力レジスタを有し,
クロックに同期して,入力レジスタと前記最小値シフトレジスタとが入力されるSAD値を順次シフトするフィルタリング処理回路。
【0075】
(付記9)
付記1〜3のいずれかに記載のフィルタリング処理回路と,
前記2つの画像間の複数のずれ量に対応して,当該ずれ量だけずらした2つの画像の各画素値の差分絶対値和を順次演算する差分絶対値和演算回路とを有するマッチング処理回路。
【0076】
(付記10)
付記4〜6のいずれかに記載のフィルタリング処理回路と,
前記2つの画像間の複数のずれ量に対応して,当該ずれ量だけずらした2つの画像の各画素値の差分絶対値和を順次演算する差分絶対値和演算回路と,
前記入力回路に順次入力される差分絶対値和が前記入力時点までで最小の差分絶対値和か否かを判定して前記更新イネーブル信号を生成する最小差分絶対値和判定回路とを有するマッチング処理回路。
【符号の説明】
【0077】
20:更新イネーブル信号履歴保持回路 22:制御回路
24:入力回路 26:最小SAD値保持回路
28:セレクタ回路 30:第2最小SAD値判定回路
32:無効判定回路
【技術分野】
【0001】
本発明は,フィルタリング処理回路とそれを有するマッチング回路に関する。
【背景技術】
【0002】
デジタルスチールカメラなどで三次元(3D)画像を撮像し再生することが提案されている。例えば,左右の視点から画像を撮像し,ステレオ法により,両画像内の被写体のずれ量を視差(両眼視差)として抽出し,画像内の被写体までの距離を三角測量の原理により求め,3D画像を生成する。そのためには,左右の画像のずれ量を視差として求めるマッチング処理が行われる。
【0003】
マッチング処理は,左右の画像のうち一方の画像を視差方向(通常は水平方向)にずらしながら他方の画像とマッチングするか否かを検出し,マッチングした時のずれ量を視差として出力する。このマッチング処理では,2つの画像間の各画素値の差分の絶対値を求め,所定範囲内で差分絶対値の総和,つまり差分絶対値和(SAD値:Sum of Absolute Difference)を演算し,複数のずれ量に対するSAD値のうち最小のSAD値を検出し,その最小SAD値をとるときのずれ量を視差として出力する。したがって,各ずれ量に対応するSAD値を求める演算部と,その複数のSAD値のうち最小SAD値を抽出するフィルタリング処理部とが必要になる。
【0004】
さらに,フィルタリング処理では,例えば窓などの同じパターンが繰り返される画像では,SAD値の極小値が繰り返されて,最小SAD値が複数検出されたり,輪郭がはっきりしない画像では,最小SAD値の近傍に類似するSAD値が検出されたりし,検出されるSAD値の信憑性が低い場合がある。そのような場合は,検出された視差を採用して3D画像を生成することは適切でなく,検出された最小SAD値はエラーであることを出力することが必要になる。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2006−164297号公報
【特許文献2】特開2002−247604号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
このように,マッチング処理で行われるフィルタリング処理は,複雑な処理が必要であり,従来はファームウエアによるデータ処理で複数のSAD値からの最小SAD値の検出と,そのエラー検出を行っている。そのため,回路が大規模なものとなり,携帯電話などの携帯情報端末への搭載は現実的ではない。また,最初に全てのSAD値を演算してメモリなどに記憶しておいてから,最小SAD値を抽出するとともにエラーチェックを行うため,処理時間が長くなるという問題もある。
【0007】
そこで,本発明の目的は,小さな回路規模で且つ高速にフィルタリング処理を行うフィルタリング処理回路とそれを有するマッチング回路を提供することにある。
【課題を解決するための手段】
【0008】
フィルタリング処理回路の第1の側面は,異なる視点での2つの画像に対する複数のずれ量に対応する差分絶対値和のうち,最小差分絶対値和を抽出するフィルタリング処理回路であって,
前記複数のずれ量にそれぞれ対応する複数の差分絶対値和を順次入力する入力回路と,
前記入力回路に入力される差分絶対値和が当該入力時点までで最小の差分絶対値和の場合に,前記入力差分絶対値和を最小の差分絶対値和として保持する最小差分絶対値和保持回路と,
前記最小差分絶対値和保持回路に保持される最小差分絶対値和の次に小さい第2最小差分絶対値和を検出して保持する第2最小差分絶対値和検出回路と,
前記入力時点までで最小の差分絶対値和でない場合には,当該入力差分絶対値和を前記第2最小差分絶対値和検出回路に入力し,最小の差分絶対値和である場合には,前記最小差分絶対値和保持回路で最小差分絶対値が更新されることに伴って前記最小差分絶対値和保持回路から出力される元の最小差分絶対値和を,前記第2最小差分絶対値和検出回路に入力するセレクタ回路とを有する。
【発明の効果】
【0009】
第1の側面によれば,簡単な回路構成で高速に最小SAD値を抽出することができる。
【図面の簡単な説明】
【0010】
【図1】3D画像を撮像するデジタルスチルカメラシステムの概略図である。
【図2】異なる視点の左右の画像を示す図である。
【図3】マッチング処理回路の処理を示す図である。
【図4】ずれ量に対する差分絶対値和の分布例を示す図である。
【図5】本実施の形態におけるマッチング処理回路の構成図である。
【図6】本実施の形態におけるフィルタリング処理回路113の構成図である。
【図7】本実施の形態におけるフィルタリング処理回路の詳細な回路図である。
【図8】左右の画像の例であり,同じ形状の窓の画像が繰り返し存在する画像である。
【図9】図8の例において演算された16のSAD値D0〜Dfの例を示す図である。
【図10】図9のSAD値D0〜Dfが順次入力された場合のフィルタリング処理回路の動作を示すタイミングチャート図である。
【図11】最後の入力Dfが最小値の場合のスイープ処理を示す図である。
【図12】本実施の形態におけるフィルタリング処理の全体の動作を示すフローチャート図である。
【図13】スイープ処理の例を示す図である。
【図14】スイープ処理の例を示す図である。
【発明を実施するための形態】
【0011】
図1は,3D画像を撮像するデジタルスチルカメラシステムの概略図である。このシステムにおいて,撮像部1は,右画像と左画像をそれぞれ撮像するための撮像光学系7R,7L,CCDセンサなどの撮像素子,センサのタイミング制御を行い撮像信号をAD変換するアナログフロントエンドAFEを有する。そして,撮像部1から出力されるデジタル信号を処理するイメージ・シグナル・プロセッサ2は,CPUと内部バスに加えて,センサ出力のノイズを除去するセンサインターフェース8と,色調や輪郭処理などを行う色処理部9と,拡大縮小や歪み補正,また画質調整を行う画像処理部10と,左右の画像のずれ量を視差(両眼視差)として検出するマッチング処理回路11,静止画の符号化,復号化を行うコーデック部14などの周辺マクロを有する。また,プロセッサ2は,外付けのSDRAM3に対してDRAM調停部12とSDRAMコントローラ13,外付けメモリカード4に対するメモリカードインターフェース15,表示インターフェース16を有する。
【0012】
イメージ・シグナル・プロセッサ2は,左右の画像データと,マッチング処理回路11が検出した視差データとを3Dプロセッサに出力し,3Dプロセッサ5がそれらのデータに基づいて3D画像を生成し,表示装置6が3D画像を表示する。
【0013】
次に,マッチング処理回路11の処理について説明する。
【0014】
図2は,異なる視点の左右の画像を示す図である。被写体19が含まれる画像17を,左右のカメラ1L,1Rによりそれぞれ撮像すると,左画像18Lと右画像18Rとを取得することができる。そして,左右の画像18L,19R内の被写体の位置は,左右のカメラの異なる視点間の距離と視点から被写体までの距離とに応じてずれる。このずれ量が視差である。ステレオ法によれば,左右の画像での被写体のずれ量と,両カメラの視点間の距離に基づいて,視点から被写体までの距離を算出することができる。それにより3D画像を生成することができる。
【0015】
図3は,マッチング処理回路の処理を示す図である。左右の画像18L,18R内の被写体画像19L,19Rのずれ量を検出するために,マッチング処理回路は,左画像18L内の例えば5×5画素の領域の画像IMAGAを,右画像18R内の前記画像IMAGAに対応する位置にあり画像IMAGAより水平方向に広い画像IMAGBとマッチングをとる。即ち,右画像の画像IMAGBに対して,左画像の画像IMAGAを画素単位で水平方向にシフトしながら,各ずれ量(シフト量)毎に,画像IMAGAとそれと重なる画像IMAGB内の画像との各画素の画素値の差分絶対値を求め,5×5=25個の差分絶対値の和を差分絶対値和(SAD値)として求める。
【0016】
そして,このSAD値が最小になるときのずれ量(シフト量)が視差に対応する。この視差情報があれば,被写体までの距離をステレオ法により求めることができる。したがって,マッチング回路は,水平方向にシフトした回数分のSAD値から最小SAD値を抽出するフィルタリング処理回路を有する。
【0017】
図4は,ずれ量に対する差分絶対値和の分布例を示す図である。図4には3種類の差分絶対値和の分布例が示されている。図4(A)は,通常の画像の場合の差分絶対値和(SAD値)の分布を示す。異なるずれ量に対してSAD値は変化し,あるずれ量の時にSAD値は最小値になる。このずれ量の時に画像IMAGAと画像IMAGBの対応する画像とがマッチングしたことを意味する。したがって,最小SAD値のときのずれ量が視差に対応する。
【0018】
一方,図4(B)は,例えば窓やフェンスなど繰り返しパターンが含まれる画像の場合のSAD値の分布を示す。この場合は,複数のずれ量で最小SAD値が繰り返し検出される。したがって,どの最小SAD値が正しい視差に対応するのか明確でなく,得られた視差が正しくない場合は,不適切な3D画像が生成されるので好ましくない。
【0019】
同様に,図4(C)は,例えば画像の輪郭が不鮮明な場合のSAD値の分布を示す。この場合は,類似したSAD値が連続して生成されるので,その水平シフト量のSAD値が真の最小SAD値かを判断することが困難である。
【0020】
本実施の形態におけるフィルタリング処理回路は,第1に,複数のずれ量毎に演算されるSAD値のうち最小のSAD値を抽出する機能と,第2に,最小SAD値から閾値範囲内に他のSAD値が存在する場合はエラー値であることを示す無効信号を出力する機能を有する。さらに,第2の機能において,最小SAD値から閾値範囲内に他のSAD値が存在するか否かの判定において,最小SAD値の位置の左右の隣接点のSAD値は判定の対象外にする。このようにすることで,図4(A)ではエラーは検出されないが,図4(B)(C)の場合にはエラーが検出され無効信号を出力することができる。
【0021】
このような複雑な判断を必要とするフィルタリング処理回路を,簡単な回路で構成し,且つ順次生成される複数のずれ量に対するSAD値からの最小SAD値の抽出と,エラーの検出とを高速に行うことができることが望まれる。
【0022】
図5は,本実施の形態におけるマッチング処理回路の構成図である。内部バスBUSに接続されたDMAコントローラDMACによりSDRAM3などから左右の画像データがメモリ110L,110Rに転送される。マッチング処理回路全体を制御するステートマシンSMが生成する制御信号φCNにより,これらのメモリ110L,110Rから図3に示した画像IMGAと,画像IMGBのうちシフトした画像IMGAと重なる画像が読み出され,SAD演算部111が5×5画素=25画素の画素値の差分絶対値の和(SAD値)を演算する。SAD演算部111は,異なるずれ量(シフト量)に対するSAD値を順次演算して出力する。それらの次々に演算されるSAD値をSADnowとする。この差分絶対値和SADnowは,最小差分絶対値和112と,フィルタリング処理回路113とに順番に出力される。
【0023】
一方,最小差分絶対値和判定回路(SADmin判定回路)112は,順次生成されるSAD値がその時点までで最小のSAD値か否かを判定する。このSADmin判定回路112は,たとえば,比較器とその比較により小さいと判定された値を保持するフリップフロップ回路とを有する。そして,生成された差分絶対値和SADnowがその時点までで最小であると判定したら,更新イネーブル信号UpENをHレベルにして出力する。最小でない場合は更新イネーブル信号UpENはLレベルで出力する。
【0024】
フィルタリング処理回路113は,異なる視点での2つの画像に対する複数のずれ量に対応するSAD値のうち,最小差分絶対値和(最小SAD値)を抽出する。フィルタリング処理回路113は,順次生成される差分絶対値和SADnowを更新イネーブル信号UpENと共に入力し,更新イネーブル信号UpENが最小値が更新されたことを示すHレベルの場合に,入力された差分絶対値和SADnowを最小差分絶対値和保持回路に保持する。また,フィルタリング処理回路113は,最小差分絶対値和保持回路に保持される最小差分絶対値和の次に小さい第2最小差分絶対値和を検出して保持する第2最小差分絶対値和検出回路を有する。この第2最小差分絶対値和検出回路は,更新イネーブル信号UpENが最小値が更新されたことを示さない場合は,入力された差分絶対値和SADnowが2番目の最小値か否かの判定を行い,更新イネーブル信号UpENが最小値が更新されたことを示す場合は,最小差分絶対値和保持回路から出力される元最小差分絶対値和が2番目の最小値か否かの判定を行う。
【0025】
そして,全てのずれ量に対する差分絶対値和SADnowの入力が終了すると,フィルタリング処理回路113は,最小差分絶対値和保持回路に保持される最小SAD値を出力する。この最小SAD値に対応するずれ量が視差に対応する。また,フィルタリング処理回路113は,最小SAD値と2番目の最小SAD値との差が所定の閾値以下である場合には無効フラグ信号を出力する。無効フラグ信号が出力された場合は,検出した最小SAD値はエラーが含まれている可能性が高いので,イメージ・シグナル・プロセッサ2は,検出したずれ量を3Dプロセッサ5に出力しない,または,無効フラグ信号と共に出力する。
【0026】
図6は,本実施の形態におけるフィルタリング処理回路113の構成図である。フィルタリング処理回路113は,SAD演算回路からの差分絶対値和SADnowを順次入力する入力回路24と,入力回路に入力されたSAD値が当該入力時点までで最小のSAD値の場合に,その入力されるSAD値を最小のSAD値として保持する最小SAD値保持回路26とを有する。さらに,フィルタリング処理回路は,最小SAD値保持回路26に保持される最小SAD値を除いて次に小さい第2最小SAD値を検出して保持する第2最小SAD値検出回路30を有する。
【0027】
また,フィルタリング処理回路113は,入力差分絶対値和SADnowと共に入力される更新イネーブル信号UpENを入力して保持する更新イネーブル信号履歴保持回路20と,その履歴に応じて制御信号Aを生成する生成回路22を有する。さらにSAD演算回路111から順次供給される差分絶対値和SADnowを入力する入力回路24と,データスルーパス(Path2)27と,制御信号Aに応じて最小SAD値保持回路26からのSAD値か,データスルーパス27からのSAD値かのいずれかを選択するセレクタ回路28とを有する。
【0028】
フィルタリング処理回路113の概略的な動作は次の通りである。複数のずれ量に対して順次生成される差分絶対値和SADnowと,それがその時点で最小値か否かを示す更新イネーブル信号UpENとが,順番に入力される。履歴保持回路20は,その更新イネーブル信号UpENの履歴を保持する。また,入力回路24は,入力される差分絶対値和SADnowを一時的にラッチする。
【0029】
制御回路22は入力される更新イネーブル信号UpENとその履歴に応じて,制御信号Aを生成する。この制御信号Aに応じて,入力回路24に一時的にラッチされるSAD値SADnowは,最小SAD値保持回路26にシフトされて保持されるか,第2最小SAD値検出回路30に入力される。また,最小値保持回路26が保持する最小SAD値が更新される場合は,元の最小SAD値は第2最小SAD値検出回路30に入力される。そして,第2最小SAD値検出回路30は,最小SAD値保持回路26に保持されている最小SAD値以外のSAD値の中で最小の値,つまり第2最小SAD値を検出する。
【0030】
即ち,順次入力されるSAD値SADnowは,上流の入力回路24から,最小SAD値保持回路26に保持されるか,第2最小SAD値検出回路30に入力されるかである。また,最小SAD値保持回路26が新たな最小SAD値に更新する場合,元の最小SAD値は出力されて,第2最小SAD値検出回路30に入力される。そして,無効判定回路32は,最小SAD値と第2最小SAD値との差分が閾値Th以内かどうかを判定して,閾値以内の場合は無効フラグ信号を出力する。このように,全てのずれ量に対するSAD値SADnowの入力が完了すると,後述する数サイクルのスイープ処理後に,最小SAD値と無効フラグ信号とが確定する。
【0031】
図7は,本実施の形態におけるフィルタリング処理回路の詳細な回路図である。図6内の対応する回路には同じ引用番号を与えている。まず,入力回路24は,入力されるSAD値SADnowを一時的に保持するフリップフロップFF1を有し,最小SAD値保持回路26は,最小SAD値とそれに隣接するずれ量のSAD値を保持する3つのフリップフロップFF2,FF3,FF4を有する。これらのフリップフロップFF1〜FF4は,図示しないクロックに同期してSAD値をシフトするシフトレジスタを構成する。また,最小SAD値保持回路26内の3つのフリップフロップFF2〜FF4は,制御信号Aがイネーブル信号として入力され,制御信号AがHレベルのときにシフト動作を行う。
【0032】
データスルーパス27は,単なる信号配線であり,入力回路24とセレクタSELとの間に設けられ,セレクタSELは,制御信号AがLレベルの場合にデータスルーパス27側からシフトされる入力回路24内に一時的に保持されたSAD値SADnowを選択し,制御信号AがHレベルの場合に最小SAD値保持回路26から出力されるSAD値を選択する。
【0033】
セレクタSELの後段に設けられた第2最小SAD値検出回路30は,フリップフロップFF5と,比較器CMPと,フリップフロップFF6とを有し,フリップフロップFF5は比較イネーブル信号SM_cmpenがHの間,セレクタSELが選択したSAD値をラッチし,比較器CMPに出力する。比較器CMPは,フリップフロップFF6に保持されている第2最小SAD値と,フリップフロップFF5に入力された新たなSAD値とを比較して,小さいほうのSAD値をフリップフロップFF6に出力する。前述のSADmin判定回路112も,これと同様の比較器の構成を有する。
【0034】
履歴保持回路20は,フリップフロップFF11〜FF13からなるシフトレジスタを有する。このフリップフロップFF11〜FF13のシフトレジスタは,フリップフロップFF1〜FF3のシフトレジスタとタイミングが同期している。そして,図示しない同期クロックに応答して,3ビットのシフトレジスタFF11〜FF13が順次入力される更新イネーブル信号UpENを保持する。したがって,履歴保持回路20では,入力された更新イネーブル信号UpENと,シフトレジスタでそれぞれ保持される3つの遅延された更新イネーブル信号dUpEN1〜dUpEN3とが参照可能である。
【0035】
制御回路22は,履歴保持回路20で参照可能な4ビットの更新イネーブル信号に応じて,制御信号AをHレベルまたはLレベルに制御する。たとえば,ステートマシンSMからのスタート信号SM_start(1クロックサイクルだけLレベル)に応答して,フリップフロップFF10がリセットされ出力がLレベルになりアンドノアゲートG4により制御信号AはLレベルに初期化される。つまり,フリップフロップFF1のリセット端子はLレベルでアクティブになる。そして,その後,更新イネーブル信号UpENがHレベルになると,オアゲートOR2の出力はHレベルになる。NANDゲートNAND1は4つの更新イネーブル信号の履歴が「1000」(dUpEN3のみH,他はL)の時にその出力がLになりそれ以外は出力はHであるので,UpEN=Hになると,アンドオアゲートG3の出力がHレベルになりフリップフロップFF10がHレベルをラッチし,制御信号AはHレベルになる。FF10の出力がアンドオアゲートG3に入力されているので,更新イネーブル信号UpENがLレベルに変化しても,制御信号AがHレベルの状態は維持される。そして,4つの更新イネーブル信号の履歴が「1000」になって初めて,NANDゲートNAND1の出力がLレベルになりFF10がLレベルをラッチし制御信号AがLレベルになる。
【0036】
このように,制御信号Aは,更新イネーブル信号UpENがHレベルになるとHレベルになり,その履歴が「1000」になるまで維持し,履歴が「1000」になると初めてLレベルになる。この履歴が「1000」の状態は,更新イネーブル信号UpENが最後にHレベルになった時のSAD値がフリップフロップFF3にラッチされた状態に対応する。
【0037】
無効判定回路32は,具体的な回路は示されていないが,フリップフロップFF3内の最小SAD値とフリップフロップFF6内の2番目の最小値である第2最小SAD値との差分が閾値Th以下か否かを判定し,閾値以下の場合に無効フラグ信号をHレベルにする。
【0038】
なお,各フリップフロップFFの上側の端子はプリセット端子で内部がHレベルに初期化され,下側の端子はリセット端子で内部がLレベルに初期化され,いずれもLアクティブな端子である。したがって,スタート信号SM_startがLレベルになると,フリップフロップFF1〜FF6はプリセットされ全てHレベル,つまりそれぞれのSAD値は最大値に初期化され,フリップフロップFF10〜FF13は全てLレベルに初期化される。
【0039】
図7のフィルタリング処理回路の具体的な動作を図8,9の例にしたがって説明する。
【0040】
図8は,左右の画像の例であり,同じ形状の窓の画像が繰り返し存在する画像である。そして,左画像内の3×3画素のブロックIMGAを,右画像内の3×18画素のブロックIMGB上で水平方向にシフトさせたときの,それぞれずれ量での複数のSAD値のなかから最小SAD値を抽出する例である。
【0041】
図9は,図8の例において演算された16のSAD値D0〜Dfの例を示す図である。図8の画像は同じような形状の窓が繰り返しているので,演算された16のSAD値には3つの極小値D1,D7,Deが含まれている。そして,SAD値D7が最小値であり,この最小値D7とそのずれ量の両側の隣接点のSAD値D6,D8を除いたなかでSAD値D1が2番目の最小値であり,これらの差分は閾値以下であり無効フラグ信号がアサートされる例である。
【0042】
図10は,図9のSAD値D0〜Dfが順次入力された場合のフィルタリング処理回路の動作を示すタイミングチャート図である。図10では,システムクロックCLKのクロックサイクル1から19でフィルタリング処理が完了している。
【0043】
最初に,クロックサイクル1で,ステートマシンSMがスタート信号SM_startをLレベルにすると,履歴保持回路20内のフリップフロップFF11〜FF13と制御回路22内のフリップフロップFF10とがリセットされ内部データはLレベルに初期化され,一方,シフトレジスタを構成するフリップフロップFF1〜FF3と第2最小SAD値検出回路30内のフリップフロップFF5,FF6はプリセットされ内部データは全てHの最大値(0xFF)に初期化される。
【0044】
クロックサイクル1で初期化された後,クロックサイクル2で,ステートマシンSMは,比較イネーブル信号SM_cmpenをHレベルにして,第2最小SAD値検出回路30内のフリップフロップFF5をイネーブル状態にして,2番目に小さい第2最小SAD値を検出するための比較動作状態にする。
【0045】
クロックサイクル2で,最初の入力SADnowとしてD0が入力される。最初の入力D0は常に最小値と認定されるので更新イネーブル信号UpENはHレベルになる。このUpEN=Hに応答して制御回路22は制御信号AをHレベルにする。A=Hにより,最小SAD値保持回路26内のシフトレジスタのフリップフロップFF2〜FF4はイネーブル状態にされ,入力値を取り込み可能状態にされる。
【0046】
クロックサイクル3で,D0は入力回路24内のフリップフロップFF1にラッチされ,新たに入力SADnowにはD1が入力される。図9によれば,D1<D0であるのでUpEN=Hとなる。そして,クロックサイクル4,5で入力SADnowにはD2,D3が入力され,フリップフロップFF1にラッチされたD0,D1は,最小SAD値保持回路26内のシフトレジスタのFF2,FF3,FF4へとシフトされる。また,D2,D3>D1であるのでUpEN=Lになるが,制御信号AはA=Hに維持される。
【0047】
クロックサイクル6では,この時点で最小値のD1とその両側の隣接点のD0,D2が,最小SAD値保持回路26内のフリップフロップFF3,FF2,FF4に格納される。さらに,履歴保持回路20内の4ビットの更新イネーブル信号UpEN,dUpEN1〜3の4ビットの履歴は,UpENをLSBとすると「1000」になっているので,制御回路22が制御信号AをLレベルに切り替える。
【0048】
これにより,その次のクロックサイクル7,8では,最小SAD値保持回路26のシフトレジスタのフリップフロップFF2〜FF4はディセーブル状態になりシフト動作が停止し,且つセレクタ28はデータスルーパス27側を選択する状態になる。したがって,入力回路24内のフリップフロップFF1内のSAD値D3,D4は,データスルーパス27を介して第2最小SAD値検出回路30内のフリップフロップFF5にラッチされる。D3<D4であるので,第2最小SAD値検出回路30の比較器CMPの比較動作によりクロックサイクル8ではSAD値D3がフリップフロップFF6にラッチされる。このラッチされたSAD値がその時点で2番目に小さいSAD値,つまり第2最小SAD値である。
【0049】
次に,クロックサイクル9では,入力SADnowにD7が入力され,D7<D1であるので,更新イネーブル信号UpEN=Hとなる。これに応答して,再度制御信号AがA=Hとなり,最小SAD値保持回路26のフリップフロップFF2〜FF4がイネーブル状態になり,セレクタ28は最小SAD値保持回路26の出力側を選択する。この時点で入力回路24内のフリップフロップFF1にはD7の隣接点のD6がラッチされている。
【0050】
次のクロックサイクル10では,D6がフリップフロップFF2にラッチされ,D7はフリップフロップFF1にラッチされ,入力SADnowにはD8が入力される。そして,以後の入力D8〜Dfは全て最小値D7より大きいので,更新イネーブル信号UpENは全てLになり,クロックサイクル9でのUpEN=Hが,次の3サイクルで履歴保持回路20内のシフトレジスタのフリップフロップFF11,12,13をシフトし,SAD値D6,D7,D8も入力回路24内のフリップフロップFF1と,最小SAD値保持回路26内のシフトレジスタのフリップフロップFF2〜FF4をシフトする。そして,クロックサイクル12で,最小SAD値保持回路26内のシフトレジスタには,最小値D7とその両側隣接点のD6,D8が格納される。
【0051】
SAD値D6,D7,D8が最小SAD値保持回路26内に更新されるとき,元の最小SAD値とその隣接点のSAD値D0,D1,D2は,セレクタ28を介して,第2最小SAD値検出回路30のフリップフロップFF5にラッチされ,2番目に小さいSAD値か否かを比較される。
【0052】
クロックサイクル12で,履歴保持回路20内の更新イネーブル信号の4ビットの履歴が再び「1000」となるので,制御回路22は制御信号AをA=Lに切り替える。その結果,クロックサイクル13以降は,入力回路24内のフリップフロップFF1にラッチされたSAD値D9〜Dfは,データスルーパス27,セレクタ28を経由して,第2最小SAD値検出回路30のフリップフロップFF5にラッチされ,比較器CMPにより比較判定される。
【0053】
なお,上記では更新イネーブル信号の履歴が「1000」になると制御信号AをLレベルに切り替えている。その理由は次のとおりである。即ち,履歴が「100」となった時点で,極小値である最小SAD値とその両隣接点のSAD値はフリップフロップFF1,FF2,FF3にラッチされている。そして,次のクロックサイクルで最小値でない入力SAD値がフリップフロップFF1にラッチされると共に,その次のSAD値が入力SADnowに現れる。この入力SADnowが新たな最小値の場合は,フリップフロップFF1にラッチされているSAD値(新たな最小値の隣接点)と共に,フリップフロップFF2,FF3,FF4にシフトされる必要がある。そこで,履歴が「1000」であることを確認してそのクロックサイクルで制御信号AをLに切り替えている。もし履歴が「1001」になれば,制御信号AはHのまま維持されて,それにより新たな最小値と隣接点のSAD値がフリップフロップFF2〜FF3にシフトされる。
【0054】
クロックサイクル17で最後のSAD値Dfが入力SADnowに入力される。その最後の入力Dfは,未だフィルタリング処理されていないので,スイープ処理によって,最小SAD値保持回路20内のフリップフロップFF2又はFF3にラッチするか,第2最小SAD値検出回路30内のフリップフロップFF5にラッチして比較器CMPによる第2最小値か否かの比較動作をするかが行われる。そこで,ステートマシンSMは,最後のSAD値Dfに対応する更新イネーブル信号UpENのレベルを参照して,UpEN=Lであればその後2サイクルのスイープ処理を行い,UpEN=Hであればその後3サイクルのスイープ処理を行い,その後比較イネーブル信号SM_cmpenをLレベルに切り替える。
【0055】
図10の例では,最後の入力SADnowのDfが最小値ではないので,UpEN=Lであり,2サイクルのスイープ処理(SWP=2)により,Dfは第2最小SAD値検出回路30内のフリップフロップFF5までシフトし,そのDfが比較器CMPにより第2最小値か否かの比較動作が行われる。そして,クロックサイクル20で比較イネーブル信号SM_cmpenがLレベルにされその後の比較動作は禁止される。なお,Dfが第2最小値の場合は,比較器CMPからDfが最終段のフリップフロップFF6にラッチされる。ただし,比較器CMPの出力をフリップフロップFF6を介さずに第2最小SAD値として出力する回路構成にすれば,クロックサイクル20はスイープ処理には必要ない。
【0056】
図11は,最後の入力Dfが最小値の場合のスイープ処理を示す図である。クロックサイクル17で入力された最後のSAD値Dfが最小値の場合は,更新イネーブル信号UpENがHレベルになり,制御信号AがHレベルになる。そして,ステートマシンSMはスイープ処理を3サイクルに設定し,クロックサイクル21で比較イネーブル信号SM_cmpenをLレベルにする。3サイクルのスイープ処理により最小値のDfは最小SAD値保持回路26内のフリップフロップFF3にラッチされ,両側隣接点の一方のDeはフリップフロップFF4にラッチされる。それと共に,クロックサイクル19で,元の最小SAD値D7は第2最小SAD値検出回路30内のフリップフロップFF5にラッチされ第2最小判定される。
【0057】
このように,最後の入力SAD値が最小値の場合は,3クロックサイクルのスイープ処理を行って,その入力されるSAD値をフリップフロップFF1,FF2,FF3にシフトさせる。
【0058】
図12は,本実施の形態におけるフィルタリング処理の全体の動作を示すフローチャート図である。最後のSAD値を入力した後のスイープ処理か否か(S10)により,左側の処理S11〜S14に示した最後のSAD値を入力するまでのクロックサイクル(図10,11の例ではクロックサイクル1〜17)での処理と,右側の処理S15〜S20に示したスイープ処理とを有する。
【0059】
スイープ処理でない間は(S10のN),入力SAD値が最小値の場合に(S11のY),UpEN=Hにより制御信号AはA=Hにされる(S12)。そして,履歴パターンが「1000」でない間(S13のN)は制御信号AはA=Hに維持され,履歴パターンが「1000」になると(S13のY),制御信号AはA=Lに切り替えられる。この制御信号AがA=Hなら,3つの連続する入力SAD値がフリップフロップFF2〜FF4にシフトしてラッチされるとともに,フリップフロップFF2〜FF4に元々ラッチされていた3つのSAD値は第2最小値判定回路内のフリップフロップFF5にシフトされて第2最小判定される。一方,A=Lなら,入力SAD値は第2最小値判定回路内のフリップフロップFF5にシフトされて第2最小値判定され,フリップフロップFF2〜FF4内の最小SAD値とその隣接点SAD値は保持される。
【0060】
図13は,スイープ処理の例を示す図である。入力SAD値が最小値の場合は破線枠で,隣接点は枠無しで,そして最小値でも隣接点でもない場合は二重枠で示している。左から順に,最後の入力であるSADnowの「4」は最小値ではないので,2サイクルのスイープ処理が行われ,「3」「4」はフリップフロップFF5にラッチされて第2最小値判定されている。真ん中の場合は,最後の入力「4」が最小値であるので,3サイクルのスイープ処理が行われ,入力「3」「4」がフリップフロップFF3,FF4にラッチされ,元の最小値と隣接点の「1」「2」はフリップフロップFF5にラッチされて第2最小値判定されている。右側の例は,最後の入力「6」が最小値でない場合であり,左側と同様の2サイクルのスイープ処理になっている。
【0061】
図14は,スイープ処理の例を示す図である。ここに示した4つのスイープ処理SWP1〜SWP4は,いずれも最後の入力が最小値でない場合であり2クロックサイクルの長さである。そして,直前の入力最小値の位置に応じて4つの例が示されている。
【0062】
スイープ処理SWP1では,最後の入力「p」の前の入力「o」が最小値の例であり,スイープ処理サイクル中に制御信号AがLレベルに切り替えられている。そのため,入力「n」「o」「p」はフリップフロップFF2〜FF4にシフトされてラッチされる。
【0063】
スイープ処理SWP2では,最後の入力「q」の2つ前の入力「o」が最小値の例であり,「n」「o」「p」がフリップフロップFF2〜FF4にラッチされている。スイープ処理SWP3では,最後の入力「r」の3つ前の入力「o」が最小値の例であり,「n」「o」「p」がフリップフロップFF2〜FF4にラッチされ,入力「q」「r」はフリップフロップFF5にラッチされて第2最小値判定されている。スイープ処理SWP4は,SWP3と同様である。
【0064】
図7に戻り,無効判定回路32は,フリップフロップFF3の最小SAD値と,フリップフロップFF6の第2最小SAD値とを比較し,その差分が閾値Th以下の場合に無効フラグをHレベルにする。したがって,スイープ処理が終了した時点で,最小SAD値の抽出と,それがエラー値か否かの判定が完了する。
【0065】
以上の通り,本実施の形態のフィルタリング処理回路によれば,異なるずれ量に対するSAD値を順次入力し,パイプライン処理により最小値の保持と,第2最小値の判定及び無効判定を行うので,簡単な構成の回路により高速に処理を行うことができる。
【0066】
以上の実施の形態をまとめると,次の付記のとおりである。
【0067】
(付記1)
異なる視点での2つの画像に対する複数のずれ量に対応する差分絶対値和のうち,最小差分絶対値和を抽出するフィルタリング処理回路であって,
前記複数のずれ量にそれぞれ対応する複数の差分絶対値和を順次入力する入力回路と,
前記入力回路に入力される差分絶対値和が当該入力時点までで最小の差分絶対値和の場合に,前記入力差分絶対値和を最小の差分絶対値和として保持する最小差分絶対値和保持回路と,
前記最小差分絶対値和保持回路に保持される最小差分絶対値和の次に小さい第2最小差分絶対値和を検出して保持する第2最小差分絶対値和検出回路と,
前記入力時点までで最小の差分絶対値和でない場合には,当該入力差分絶対値和を前記第2最小差分絶対値和検出回路に入力し,最小の差分絶対値和である場合には,前記最小差分絶対値和保持回路で最小差分絶対値が更新されることに伴って前記最小差分絶対値和保持回路から出力される元の最小差分絶対値和を,前記第2最小差分絶対値和検出回路に入力するセレクタ回路とを有するフィルタリング処理回路。
【0068】
(付記2)
付記1において,
前記最小差分絶対値和保持回路は,前記保持される最小差分絶対値和のずれ量に隣接するずれ量に対応する差分絶対値和も保持し,前記最小差分絶対値が更新される場合には,当該保持されていた元の最小差分絶対値和に加えて前記隣接するずれ量の差分絶対値和も出力するフィルタリング処理回路。
【0069】
(付記3)
付記1または2において,
さらに,前記最小差分絶対値和保持回路に保持される前記最小差分絶対値和と,前記第2最小差分絶対値和との差が,閾値以下の場合に,無効信号を出力する無効判定回路を有するフィルタリング処理回路。
【0070】
(付記4)
付記2において,
前記最小差分絶対値和保持回路は,前記最小差分絶対値和と前記隣接するずれ量の差分絶対値和を順次シフトして保持する第1,第2及び第3のレジスタを有する最小値シフトレジスタを有し,
さらに,前記入力回路に順次入力される差分絶対値和が前記入力時点までで最小の差分絶対値和か否かを示す更新イネーブル信号を,順次入力して保持する更新イネーブル信号履歴保持回路と,
前記更新イネーブル信号履歴保持回路の履歴に応じて,前記入力される差分絶対値和を前記最小値シフトレジスタに入力させるとともに,前記最小値シフトレジスタに保持していた前記元の最小差分絶対値和を前記隣接するずれ量の差分絶対値和と共に出力させる第1の制御信号と,前記セレクタ回路により前記入力される差分絶対値和を前記第2最小差分絶対値和検出回路に入力させる第2の制御信号を生成する制御回路とを有するフィルタリング処理回路。
【0071】
(付記5)
付記4において,
前記セレクタ回路は,前記第1の制御信号に応答して,前記最小値シフトレジスタから出力される前記元の最小差分絶対値和と隣接するずれ量の差分絶対値和とを前記第2最小差分絶対値和検出回路に入力するフィルタリング処理回路。
【0072】
(付記6)
付記4において,
前記複数のずれ量に対応する差分絶対値和のうち最後の差分絶対値和が入力された後,当該最後の差分絶対値和に対応する更新イネーブル信号が最小の差分絶対値和であることを示す第1の場合に,第1のクロックサイクル期間,示さない第2の場合に,前記第1のクロックサイクル期間と異なる第2のクロックサイクル期間,それぞれ前記最小値シフトレジスタとセレクタ回路と第2最小差分絶対値和検出回路とを動作させステートマシンを有するフィルタリング処理回路。
【0073】
(付記7)
付記6において,
前記第1の場合に,前記第1のクロックサイクル期間で,前記最後の差分絶対値和が前記最小値シフトレジスタの第2のレジスタに転送され,前記第2の場合に,前記第2のクロックサイクル期間で,前記最後の差分絶対値和が前記第2最小差分絶対値和検出回路で第2最小値判定されるフィルタリング処理回路。
【0074】
(付記8)
付記4において,
さらに,前記入力回路が入力される前記SAD値をラッチする入力レジスタを有し,
クロックに同期して,入力レジスタと前記最小値シフトレジスタとが入力されるSAD値を順次シフトするフィルタリング処理回路。
【0075】
(付記9)
付記1〜3のいずれかに記載のフィルタリング処理回路と,
前記2つの画像間の複数のずれ量に対応して,当該ずれ量だけずらした2つの画像の各画素値の差分絶対値和を順次演算する差分絶対値和演算回路とを有するマッチング処理回路。
【0076】
(付記10)
付記4〜6のいずれかに記載のフィルタリング処理回路と,
前記2つの画像間の複数のずれ量に対応して,当該ずれ量だけずらした2つの画像の各画素値の差分絶対値和を順次演算する差分絶対値和演算回路と,
前記入力回路に順次入力される差分絶対値和が前記入力時点までで最小の差分絶対値和か否かを判定して前記更新イネーブル信号を生成する最小差分絶対値和判定回路とを有するマッチング処理回路。
【符号の説明】
【0077】
20:更新イネーブル信号履歴保持回路 22:制御回路
24:入力回路 26:最小SAD値保持回路
28:セレクタ回路 30:第2最小SAD値判定回路
32:無効判定回路
【特許請求の範囲】
【請求項1】
異なる視点での2つの画像に対する複数のずれ量に対応する差分絶対値和のうち,最小差分絶対値和を抽出するフィルタリング処理回路であって,
前記複数のずれ量にそれぞれ対応する複数の差分絶対値和を順次入力する入力回路と,
前記入力回路に入力される差分絶対値和が当該入力時点までで最小の差分絶対値和の場合に,前記入力差分絶対値和を最小の差分絶対値和として保持する最小差分絶対値和保持回路と,
前記最小差分絶対値和保持回路に保持される最小差分絶対値和の次に小さい第2最小差分絶対値和を検出して保持する第2最小差分絶対値和検出回路と,
前記入力時点までで最小の差分絶対値和でない場合には,当該入力差分絶対値和を前記第2最小差分絶対値和検出回路に入力し,最小の差分絶対値和である場合には,前記最小差分絶対値和保持回路で最小差分絶対値が更新されることに伴って前記最小差分絶対値和保持回路から出力される元の最小差分絶対値和を,前記第2最小差分絶対値和検出回路に入力するセレクタ回路とを有するフィルタリング処理回路。
【請求項2】
請求項1において,
前記最小差分絶対値和保持回路は,前記保持される最小差分絶対値和のずれ量に隣接するずれ量に対応する差分絶対値和も保持し,前記最小差分絶対値が更新される場合には,当該保持されていた元の最小差分絶対値和に加えて前記隣接するずれ量の差分絶対値和も出力するフィルタリング処理回路。
【請求項3】
請求項1または2において,
さらに,前記最小差分絶対値和保持回路に保持される前記最小差分絶対値和と,前記第2最小差分絶対値和との差が,閾値以下の場合に,無効信号を出力する無効判定回路を有するフィルタリング処理回路。
【請求項4】
請求項2において,
前記最小差分絶対値和保持回路は,前記最小差分絶対値和と前記隣接するずれ量の差分絶対値和を順次シフトして保持する第1,第2及び第3のレジスタを有する最小値シフトレジスタを有し,
さらに,前記入力回路に順次入力される差分絶対値和が前記入力時点までで最小の差分絶対値和か否かを示す更新イネーブル信号を,順次入力して保持する更新イネーブル信号履歴保持回路と,
前記更新イネーブル信号履歴保持回路の履歴に応じて,前記入力される差分絶対値和を前記最小値シフトレジスタに入力させるとともに,前記最小値シフトレジスタに保持していた前記元の最小差分絶対値和を前記隣接するずれ量の差分絶対値和と共に出力させる第1の制御信号と,前記セレクタ回路により前記入力される差分絶対値和を前記第2最小差分絶対値和検出回路に入力させる第2の制御信号を生成する制御回路とを有するフィルタリング処理回路。
【請求項5】
請求項4において,
前記複数のずれ量に対応する差分絶対値和のうち最後の差分絶対値和が入力された後,当該最後の差分絶対値和に対応する更新イネーブル信号が最小の差分絶対値和であることを示す第1の場合に,第1のクロックサイクル期間,示さない第2の場合に,前記第1のクロックサイクル期間と異なる第2のクロックサイクル期間,それぞれ前記最小値シフトレジスタとセレクタ回路と第2最小差分絶対値和検出回路とを動作させステートマシンを有するフィルタリング処理回路。
【請求項6】
請求項5において,
前記第1の場合に,前記第1のクロックサイクル期間で,前記最後の差分絶対値和が前記最小値シフトレジスタの第2のレジスタに転送され,前記第2の場合に,前記第2のクロックサイクル期間で,前記最後の差分絶対値和が前記第2最小差分絶対値和検出回路で第2最小値判定されるフィルタリング処理回路。
【請求項7】
請求項1〜3のいずれかに記載のフィルタリング処理回路と,
前記2つの画像間の複数のずれ量に対応して,当該ずれ量だけずらした2つの画像の各画素値の差分絶対値和を順次演算する差分絶対値和演算回路とを有するマッチング処理回路。
【請求項8】
請求項4,5のいずれかに記載のフィルタリング処理回路と,
前記2つの画像間の複数のずれ量に対応して,当該ずれ量だけずらした2つの画像の各画素値の差分絶対値和を順次演算する差分絶対値和演算回路と,
前記入力回路に順次入力される差分絶対値和が前記入力時点までで最小の差分絶対値和か否かを判定して前記更新イネーブル信号を生成する最小差分絶対値和判定回路とを有するマッチング処理回路。
【請求項1】
異なる視点での2つの画像に対する複数のずれ量に対応する差分絶対値和のうち,最小差分絶対値和を抽出するフィルタリング処理回路であって,
前記複数のずれ量にそれぞれ対応する複数の差分絶対値和を順次入力する入力回路と,
前記入力回路に入力される差分絶対値和が当該入力時点までで最小の差分絶対値和の場合に,前記入力差分絶対値和を最小の差分絶対値和として保持する最小差分絶対値和保持回路と,
前記最小差分絶対値和保持回路に保持される最小差分絶対値和の次に小さい第2最小差分絶対値和を検出して保持する第2最小差分絶対値和検出回路と,
前記入力時点までで最小の差分絶対値和でない場合には,当該入力差分絶対値和を前記第2最小差分絶対値和検出回路に入力し,最小の差分絶対値和である場合には,前記最小差分絶対値和保持回路で最小差分絶対値が更新されることに伴って前記最小差分絶対値和保持回路から出力される元の最小差分絶対値和を,前記第2最小差分絶対値和検出回路に入力するセレクタ回路とを有するフィルタリング処理回路。
【請求項2】
請求項1において,
前記最小差分絶対値和保持回路は,前記保持される最小差分絶対値和のずれ量に隣接するずれ量に対応する差分絶対値和も保持し,前記最小差分絶対値が更新される場合には,当該保持されていた元の最小差分絶対値和に加えて前記隣接するずれ量の差分絶対値和も出力するフィルタリング処理回路。
【請求項3】
請求項1または2において,
さらに,前記最小差分絶対値和保持回路に保持される前記最小差分絶対値和と,前記第2最小差分絶対値和との差が,閾値以下の場合に,無効信号を出力する無効判定回路を有するフィルタリング処理回路。
【請求項4】
請求項2において,
前記最小差分絶対値和保持回路は,前記最小差分絶対値和と前記隣接するずれ量の差分絶対値和を順次シフトして保持する第1,第2及び第3のレジスタを有する最小値シフトレジスタを有し,
さらに,前記入力回路に順次入力される差分絶対値和が前記入力時点までで最小の差分絶対値和か否かを示す更新イネーブル信号を,順次入力して保持する更新イネーブル信号履歴保持回路と,
前記更新イネーブル信号履歴保持回路の履歴に応じて,前記入力される差分絶対値和を前記最小値シフトレジスタに入力させるとともに,前記最小値シフトレジスタに保持していた前記元の最小差分絶対値和を前記隣接するずれ量の差分絶対値和と共に出力させる第1の制御信号と,前記セレクタ回路により前記入力される差分絶対値和を前記第2最小差分絶対値和検出回路に入力させる第2の制御信号を生成する制御回路とを有するフィルタリング処理回路。
【請求項5】
請求項4において,
前記複数のずれ量に対応する差分絶対値和のうち最後の差分絶対値和が入力された後,当該最後の差分絶対値和に対応する更新イネーブル信号が最小の差分絶対値和であることを示す第1の場合に,第1のクロックサイクル期間,示さない第2の場合に,前記第1のクロックサイクル期間と異なる第2のクロックサイクル期間,それぞれ前記最小値シフトレジスタとセレクタ回路と第2最小差分絶対値和検出回路とを動作させステートマシンを有するフィルタリング処理回路。
【請求項6】
請求項5において,
前記第1の場合に,前記第1のクロックサイクル期間で,前記最後の差分絶対値和が前記最小値シフトレジスタの第2のレジスタに転送され,前記第2の場合に,前記第2のクロックサイクル期間で,前記最後の差分絶対値和が前記第2最小差分絶対値和検出回路で第2最小値判定されるフィルタリング処理回路。
【請求項7】
請求項1〜3のいずれかに記載のフィルタリング処理回路と,
前記2つの画像間の複数のずれ量に対応して,当該ずれ量だけずらした2つの画像の各画素値の差分絶対値和を順次演算する差分絶対値和演算回路とを有するマッチング処理回路。
【請求項8】
請求項4,5のいずれかに記載のフィルタリング処理回路と,
前記2つの画像間の複数のずれ量に対応して,当該ずれ量だけずらした2つの画像の各画素値の差分絶対値和を順次演算する差分絶対値和演算回路と,
前記入力回路に順次入力される差分絶対値和が前記入力時点までで最小の差分絶対値和か否かを判定して前記更新イネーブル信号を生成する最小差分絶対値和判定回路とを有するマッチング処理回路。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図9】
【図12】
【図13】
【図14】
【図8】
【図10】
【図11】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図9】
【図12】
【図13】
【図14】
【図8】
【図10】
【図11】
【公開番号】特開2012−222382(P2012−222382A)
【公開日】平成24年11月12日(2012.11.12)
【国際特許分類】
【出願番号】特願2011−82428(P2011−82428)
【出願日】平成23年4月4日(2011.4.4)
【出願人】(308014341)富士通セミコンダクター株式会社 (2,507)
【Fターム(参考)】
【公開日】平成24年11月12日(2012.11.12)
【国際特許分類】
【出願日】平成23年4月4日(2011.4.4)
【出願人】(308014341)富士通セミコンダクター株式会社 (2,507)
【Fターム(参考)】
[ Back to top ]