(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-02-16
(45)【発行日】2024-02-27
(54)【発明の名称】撮像装置、方法及びプログラム
(51)【国際特許分類】
G06T 7/593 20170101AFI20240219BHJP
【FI】
G06T7/593
(21)【出願番号】P 2019195059
(22)【出願日】2019-10-28
【審査請求日】2022-10-11
(73)【特許権者】
【識別番号】000001007
【氏名又は名称】キヤノン株式会社
(74)【代理人】
【識別番号】100114775
【氏名又は名称】高岡 亮一
(74)【代理人】
【識別番号】100121511
【氏名又は名称】小田 直
(74)【代理人】
【識別番号】100208580
【氏名又は名称】三好 玲奈
(72)【発明者】
【氏名】西山 知宏
【審査官】小池 正彦
(56)【参考文献】
【文献】特開2020-140497(JP,A)
【文献】特開2018-151999(JP,A)
【文献】二宮 芳樹,走行環境認識のためのステレオ視の一方法,電子情報通信学会論文誌 (J91-D) 第3号 THE IEICE TRANSACTIONS ON INFORMATION AND SYSTEMS (JAPANESE EDITION),第J91-D巻 第3号,日本,電子情報通信学会,2008年03月01日,p803-812
(58)【調査した分野】(Int.Cl.,DB名)
G06T 7/593
(57)【特許請求の範囲】
【請求項1】
互いに異なる複数の視点から同一の被写体を見た場合の画像である複数の画像を示す画像データを取得する取得手段と、
前記画像データにおいて、背景と被写体
が隣接もしくは被写体同士が隣接しているか否かを判定する判定手段と、
前記隣接する領域は、二つ以上、それ以外の領域は、少なくとも一つ以上の概算距離値を取得する取得手段と、
前記複数の画像のうちの一つの画像に設定した参照ウィンドウに対し、前記概算距離値のそれぞれに基づいて設定される探索範囲内で、前記複数の画像のうちの前記一つの画像とは異なる画像における類似度の高いウィンドウを検出し、前記検出したウィンドウの位置に基づいて、距離候補値を算出する算出手段と、
前記距離候補値及び前記類似度に基づき、距離値を決定する決定手段と、を有する
ことを特徴とする撮像装置。
【請求項2】
前記隣接する領域には、前記取得した概算距離値のうちの複数を付与する付与手段を有する
ことを特徴とする請求項1に記載の撮像装置。
【請求項3】
前記概算距離値は、無限遠の距離値を含む
ことを特徴とする請求項1または2に記載の撮像装置。
【請求項4】
前記取得手段は、前記画像データに対して膨張処理を行って前記概算距離値を取得する
ことを特徴とする請求項1から3のいずれか1項に記載の撮像装置。
【請求項5】
前記取得手段は、前記画像データに対して被写体認識を行い、認識した被写体の既知の大きさと焦点距離に基づき前記概算距離値を取得する
ことを特徴とする請求項1から4のいずれか1項に記載の撮像装置。
【請求項6】
前記取得手段は、前記複数の画像のうちの一つの画像と視差画像とでマッチングを行って得た結果に基づき距離値でクラスタリングし、クラスタ内の代表値を概算距離値として取得する
ことを特徴とする請求項1から4のいずれか1項に記載の撮像装置。
【請求項7】
前記算出手段は、複数の概算距離値を付与した領域では、それ以外の領域よりもウィンドウサイズを小さくする
ことを特徴とする請求項1から6のいずれか1項に記載の撮像装置。
【請求項8】
前記算出手段は、前記概算距離値に応じて前記探索範囲を狭める
ことを特徴とする請求項1から7のいずれか1項に記載の撮像装置。
【請求項9】
前記決定手段は、前記距離候補値の中から、前記複数の画像のうちの一つの画像と視差画像との相関値に応じて距離値を決定する
ことを特徴とする請求項1から8のいずれか1項に記載の撮像装置。
【請求項10】
前記決定手段は、
前記複数の画像のうちの一つの画像と視差画像との相関値の最小値との差分の絶対値が閾値未満である距離候補値が少なくとも2つ以上ある場合、前記膨張処理を行った領域に含まれている値は前記距離候補値から除外することを特徴とする請求項4に記載の撮像装置。
【請求項11】
互いに異なる複数の視点から同一の被写体を見た場合の画像である複数の画像を示す画像データを取得する取得工程と、
前記画像データにおいて、背景と被写体
が隣接もしくは被写体同士が隣接しているか否かを判定する判定工程と、
前記隣接する領域は、二つ以上、それ以外の領域は、少なくとも一つ以上の概算距離値を取得する取得工程と、
前記複数の画像のうちの一つの画像に設定した参照ウィンドウに対し、前記概算距離値のそれぞれに基づいて設定される探索範囲内で、前記複数の画像のうちの前記一つの画像とは異なる画像における類似度の高いウィンドウを検出し、前記検出したウィンドウの位置に基づいて、距離候補値を算出する算出工程と、
前記距離候補値及び前記類似度に基づき、距離値を決定する決定工程と、を有する
ことを特徴とする方法。
【請求項12】
請求項1乃至10のいずれか1項に記載の撮像装置の各手段としてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、撮像装置、方法及びプログラムに関する。
【背景技術】
【0002】
同一の被写体を互いに異なる複数の視点から見た場合の複数の画像を用いて被写体までの距離を推定し、推定した距離情報を画像処理に応用する技術がある。異なる視点に対応する複数の画像から距離情報を推定する方法としては、各画像間に生じた視差を利用する方法がある。ここで視差は、同じ被写体領域に対応する画像領域の位置の、各視点に対応する画像間でのずれを表わす。視差の大きさは被写体までの距離の大きさに依存するため、各画像間に生じた視差の大きさと、各視点間の距離等に基づいて、被写体までの距離を推定することが可能である。視差は、ブロックマッチング法などの方法を用いて、各視点の画像間で同じ被写体領域に対応する画像領域を検出することで求められる。
【0003】
特許文献1では、予め被写体までの距離の概算値を算出し、得られた概算値をもとにブロックマッチング時の探索範囲を限定することで、高速かつ高精度に視差を求める技術が開示されている。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかし、特許文献1に記載の技術では、画像中において、異なる距離にある被写体同士や、被写体と背景が近接している領域(以下、遠近競合部という)において、誤った概算値が付与される可能性が存在する。その場合、探索範囲を限定することにより、通常のブロックマッチングより、精度が劣化するという課題がある。
【0006】
本発明は上述した課題に鑑みたものであり、高速かつ高精度に距離を求められる技術を提供することを目的とする。
【課題を解決するための手段】
【0007】
本発明の一実施形態の撮像装置は、互いに異なる複数の視点から同一の被写体を見た場合の画像である複数の画像を示す画像データを取得する取得手段と、前記画像データにおいて、背景と被写体が隣接もしくは被写体同士が隣接しているか否かを判定する判定手段と、前記隣接する領域は、二つ以上、それ以外の領域は、少なくとも一つ以上の概算距離値を取得する取得手段と、前記複数の画像のうちの一つの画像に設定した参照ウィンドウに対し、前記概算距離値のそれぞれに基づいて設定される探索範囲内で、前記複数の画像のうちの前記一つの画像とは異なる画像における類似度の高いウィンドウを検出し、前記検出したウィンドウの位置に基づいて、距離候補値を算出する算出手段と、前記距離候補値及び前記類似度に基づき、距離値を決定する決定手段と、を有することを特徴とする。
【発明の効果】
【0008】
本発明によれば、高速かつ高精度に距離を求められる技術を提供することができる。
【図面の簡単な説明】
【0009】
【
図1】本発明の第1の実施形態に係る撮像装置の構成例を示すブロック図である。
【
図3】距離マップ生成部161の構成例を示すブロック図である。
【
図4】距離マップ生成部161が行う処理のフローチャートである。
【
図5】概算視差の付与方法を説明する概念図である。
【
図6】視差候補値の算出方法を説明する概念図である。
【
図7】第2の実施形態におけるフローチャートである。
【発明を実施するための形態】
【0010】
以下、添付図面を参照し、本発明の実施形態について説明する。なお、以下説明する実施形態は、本発明を具体的に実施した場合の一例を示すもので、特許請求の範囲に記載した構成の具体的な実施例の1つである。
【0011】
[第1の実施形態]
(本実施形態の構成)
図1を参照して、本実施形態における撮像装置の構成について説明する。
図1は、本発明の第1の実施形態に係る撮像装置の構成例を示すブロック図である。撮像装置は、情報処理装置の一例である。
撮像装置100は、被写体を撮影して、動画や静止画のデータをテープ、固体メモリ、光ディスク、及び磁気ディスクなどの各種メディアに記録するデジタルスチルカメラやビデオカメラなどであるが、本発明はこれらに限定されるものではない。撮像装置100内の各ユニットは、バス160を介して互いに接続されている。また各ユニットは、主制御部151により制御される。
【0012】
レンズユニット101は、固定1群レンズ102、ズームレンズ111、絞り103、固定3群レンズ121、及び、フォーカスレンズ131を備えて構成される。
絞り制御部105は、主制御部151の指令に従い、絞りモータ104(図中の「AM」は、アパーチャーモータの略称である。)を介して絞り103を駆動することにより、絞り103の開口径を調整して撮影時の光量調節を行う。
ズーム制御部113は、ズームモータ112(図中の「ZM」は、ズームモータの略称である。)を介してズームレンズ111を駆動することにより、焦点距離を変更する。
フォーカス制御部133は、レンズユニット101のピント方向のずれ量に基づいてフォーカスモータ132(図中の「FM」は、フォーカスモータの略称である。)を駆動する駆動量を決定する。加えてフォーカス制御部133は、フォーカスモータ132を介してフォーカスレンズ131を駆動することにより、焦点調節状態を制御する。フォーカス制御部133及びフォーカスモータ132によるフォーカスレンズ131の移動制御により、AF制御が実現される。AFは、オートフォーカスの略称である。フォーカスレンズ131は、焦点調節用レンズであり、
図1には単レンズで簡略的に示されているが、通常は複数のレンズで構成される。
【0013】
レンズユニット101を介して撮像素子141上に結像する被写体像は、撮像素子141により電気信号に変換される。撮像素子141は、被写体像(光学像)を電気信号に光電変換を行う光電変換素子である。撮像素子141は、横方向にm画素、縦方向にn画素の受光素子が配置されている。撮像素子141上に結像されて光電変換された画像は、撮像信号処理部142により画像信号(画像データ)として整えられ、撮像面の画像を取得することができる。
【0014】
撮像信号処理部142から出力される画像データは、撮像制御部143に送られ、一時的にRAM154(ランダム・アクセス・メモリ)に蓄積される。RAM154に蓄積された画像データは、画像圧縮解凍部153にて圧縮された後、画像記録媒体157に記録される。これと並行して、RAM154に蓄積された画像データは、画像処理部152に送られる。
【0015】
画像処理部152は、RAM154に蓄積された画像データに対して予め定められた画像処理を適用する。画像処理部152が適用する画像処理には、ホワイトバランス調整処理、色補間(デモザイク)処理、及びガンマ補正処理といった所謂現像処理のほか、信号形式変換処理、スケーリング処理などがあるが、これらに限定されない。
【0016】
操作スイッチ156は、タッチパネルやボタンなどを含む入力インターフェイスであり、ユーザーが表示部150に表示される種々の機能アイコンを選択操作することなどにより、様々な操作が行える。
【0017】
主制御部151は、例えばCPUやMPUなどのプログラマブルプロセッサを1つ以上有し、例えばフラッシュメモリ155に記憶されたプログラムをRAM154に読み込んで実行することにより各部を制御し、撮像装置100の機能を実現する。CPUは、Central Processing Unitの略称である。MPUは、Micro Processing Unitの略称である。
【0018】
主制御部151は、また、被写体輝度の情報に基づいて露出条件(シャッタースピードもしくは蓄積時間、絞り値、感度)を自動的に決定するAE処理を実行する。被写体輝度の情報は、例えば画像処理部152から取得することができる。主制御部151は、例えば人物の顔など、特定被写体の領域を基準として露出条件を決定することもできる。
【0019】
フォーカス制御部133では、RAM154に保存された主被写体の位置に対するAF制御を行う。
絞り制御部105では、特定の被写体領域の輝度値を用いた露出制御を行う。
表示部150では、画像や動体検出結果などを表示する。
バッテリ159は、電源管理部158により適切に管理され、撮像装置100の全体に安定した電源供給を行う。
【0020】
フラッシュメモリ155には、撮像装置100の動作に必要な制御プログラムや、各部の動作に用いるパラメータ等が記録されている。撮像装置100は、ユーザーの操作により起動すると(電源OFF状態から電源ON状態へ移行すると)、フラッシュメモリ155に格納された制御プログラム及びパラメータを読み出してRAM154の一部に書き込むことでロードを行う。主制御部151は、RAM154にロードされた制御プログラム及びパラメータに従って撮像装置100の動作を制御する。
【0021】
距離マップ生成部161では距離マップを生成する。距離マップは、画素のそれぞれが被写体距離を表す距離情報の1つであり、デプスマップ、又は奥行きマップと呼ばれることもある。距離マップの生成過程の例については後述する。生成された距離マップは、RAM154に保存され、画像処理部152から参照される。
なお、
図1に示した構成は、撮像装置の構成の一例に過ぎない。
【0022】
(本実施形態の処理)
本実施形態では、1つのマイクロレンズを共有する複数の光電変換素子を備えた撮像素子141を用いて視差画像を取得するものとする。視差画像とは、視点をずらして得られる画像のことである。このときの撮像素子の構成や光学原理は、周知の技術を適用可能であるため、詳しい説明は省略する。なお、撮像装置100をステレオカメラや多眼カメラとして視差画像を取得してもよい。
【0023】
また、本実施形態では、視差画像に基づいて視差マップを生成するものとする。視差マップとは、画素ごとに視差値(像ズレ量)を格納した画像のことである。
図2は、視差マップの概念図である。
図2に示す視差マップ201は、[0,255]のグレースケールの画像として表されている。背景領域は0の値が割り当てられ、画素値が小さいほど遠くの被写体を、画素値が大きいほど近くの被写体を表す。視差の算出方法としては、ブロックマッチングや位相限定相関法などの手法が知られており、本実施形態では、ブロックマッチングを例にとって説明する。ブロックマッチングでは、画像を小領域に分割したブロックごとに相関演算を行う。三角測量の式を用いることで、視差マップから距離マップに変換することができる。
【0024】
【0025】
数1において、zは被写体までの距離[mm]である。また、fはレンズユニット101を1枚のレンズとみなしたときの合成レンズの焦点距離をピクセル単位に換算した値[pix]である。また、lは視差画像を取得する際の基線長[mm]である。また、dは視差[pix]である。
【0026】
以下、第1の実施形態の距離マップ生成部161で行われる処理について、
図3に示す機能ブロック図及び
図4に示すフローチャートを用いて説明する。
図3に示すように距離マップ生成部161は、画像取得部301、カメラパラメータ取得部302、概算視差値取得部303、視差候補値算出部304、視差決定部305及び視差マップ変換部306を含む。
本実施形態では視差を求めてから被写体までの距離に変換するようにしている。ここで、視差は被写体までの距離に対応するので、後述の概算視差すなわち概算視差値を求めることは概算距離すなわち概算距離値を求めることに対応し、視差候補値を求めることは距離候補値を求めることに対応する。
【0027】
S401において、画像取得部301は、撮像制御部143から画像データを取得する。
S402において、カメラパラメータ取得部302は、フラッシュメモリ155から撮像装置100に関するパラメータを取得する。ここでは、カメラパラメータ取得部302は、カメラパラメータとして、視差画像を取得する際の基線長、及びレンズユニット101に含まれるレンズ群の焦点距離値fを取得するものとする。カメラパラメータ取得部302は、その他にも、二台のカメラが平行配置されていない場合は、カメラの向きを取得するなど、距離を算出するために必要なパラメータを取得する。
【0028】
S403において、概算視差値取得部303は、各画素に対し、概算視差を取得する。概算視差の取得方法については後述する。本実施形態では、画素ごとに概算視差を取得する例について説明するが、画像中の領域ごとに取得しても構わない。後で説明するように、一つの画素(領域)には、複数の概算視差が与えられる場合がある。
【0029】
S404において、視差候補値算出部304は、i番目の概算視差に基づいて、より精度の高い視差値を算出する。これをi番目の視差候補値と呼称する。視差候補値の算出方法については後述する。
S405において、視差候補値算出部304は、着目画素に付与されたすべての概算視差に対して、視差候補値を算出したかを判定する。
S405の判定の結果、全てに対して処理した場合は、S406において、視差決定部305は、複数の視差候補値の中から、一つの視差値を決定し、着目画素の視差とする。視差の決定方法に関しては、後述する。
S405の判定の結果、全てに対して処理していない場合は、S407において、概算視差値のインデックスiを1つインクリメントし、S404に戻る。
【0030】
S408において、視差決定部305は、すべての画素に対して視差を決定したかを判定する。
S408の判定の結果、すべての画素に対して処理した場合は、S410において、視差マップ変換部305は、数1に基づいて各画素の視差を距離に変換して距離マップを生成し、RAM154に距離マップを保存して処理を終了する。
S408の判定の結果、すべての画素に対して処理していない場合は、S409において、視差決定部305は、着目画素の位置を更新し、S403に戻る。以上が、距離マップ生成部161の動作である。
【0031】
(概算視差の取得方法)
概算視差値取得部303は、被写体ごとの概算視差を簡易的に取得する。まず、被写体の典型的な大きさの情報(既知のサイズ)を利用する場合について説明する。例えば被写体が人物である場合、顔検出(被写体認識)を行って、検出した顔(認識した被写体)を含むバウンディングボックスの画像上での大きさL[pix]を取得する。Lとしては、バウンディングボックスの縦・横幅の最大値とするが、対角線など他の量を用いてもよい。人間の顔の平均的な直径をRave[mm]とし、レンズユニット101の焦点距離をf[pix]とすると、顔検出された人物までの距離の概算値z[mm]は、以下の数2で得られる。
【0032】
【0033】
次に、人物検出を行って、全身のマスクやバウンディングボックスを取得し、上で得られた距離値を数1に基づいて視差に変換し、領域内の画素に割り当てる。顔検出や人物検出の方法としては、機械学習を用いた手法など周知の技術を用いることができるため、ここでは説明を割愛する。
【0034】
その他にも、例えば視差画像を縮小し、それらを用いてブロックマッチングを実施してもよい。また、視差画像を縮小する代わりに、サイズの大きなブロックを用いてブロックマッチングを行ってもよい。ブロックマッチングの結果、得られた概略視差マップに対して、視差値が近いもの同士でクラスタリングして、クラスタごとに視差の代表値を割り当てることで、概ね被写体ごとに概算視差を得ることができる。ここで、視差の代表値としては、クラスタ内の視差の平均値や最頻値を用いることができる。
【0035】
このとき、被写体の一部が、実際の視差とは異なる概算視差を有する別のクラスタに含まれてしまう可能性がある。そこで、クラスタの領域を広げる膨張処理を施すことで、各クラスタ同士に重複領域を発生させることが望ましい。このことにより、それぞれの被写体が本来のクラスタに含まれるようにすることが可能になる。ブロックマッチングとは異なる手法で概算視差を算出した場合においても、概算視差が一定の領域に対し、膨張処理を行っても構わない。
【0036】
各画素や領域に対する概算視差の割り当て方の概念図を
図5に示す。
図5は、人物検出を用いて、概算視差を算出した例を表している。
図5において、視差画像500は撮影された視差画像を表している。被写体501及び502は視差画像500に含まれる被写体である。領域503及び504は、それぞれ概算視差が一定の領域を表している。例えば、領域503には距離1000[mm]に対応する概算視差D1が付与されており、領域504には距離2000[mm]に対応する概算視差D2が付与されているものとする。距離から視差へは、数1を用いて換算することができる。
【0037】
図5では、同一被写体に対し、同一の概算視差を対応させている。概算視差値取得部303は、着目する画素が、複数の領域に含まれるか、被写体境界の近傍であるかを判定し、前述の条件を満たす画素に対しては、複数の概算視差を付与する。これは、遠近競合部に対して、複数の概算視差値を付与することに対応する。例えば、領域505は、領域503と504が重なった領域であるため、領域505に対しては、領域503に対応する概算視差値D1、及び領域504に対応する概算視差値D2の両方を付与する。さらに、領域505には、背景(無限遠)に対応する視差である0も付与してもよい。すなわち、概算視差値取得部303は、背景と被写体もしくは被写体同士が隣接しているか否かを判定している。
【0038】
同様に、領域503における被写体境界の近傍の領域に対しては、概算視差D1のほかに背景に対応する視差0も概算視差として付与する。被写体境界は、ソーベル法、ラプラシアン法やキャニー法など周知の技術を用いて検出することができる。検出された被写体境界に対して、閾値未満の距離にある画素の集合を被写体境界の近傍領域とする。なお、別の手法で被写体境界近傍の領域を特定しても構わない。領域504に対しても同様である。
以上のように、遠近競合部に対しては、概算視差を2つ以上与える。
【0039】
(視差候補値の算出方法)
視差候補値算出部304は、概算視差値取得部303が取得した概算視差をもとにブロックマッチングを行う際の探索範囲を限定する(探索範囲を狭める)。概念図を
図6に示す。
図6は、領域505における画素に対して、ブロックマッチングを行う際のシフト量と評価値の関係を示したものである。評価値は、相関値の一例である。
図6において、横軸はシフト量であり、縦軸は評価値を表している。シフト量は、視差値に対応するため、
図6では、横軸に概算視差値D1及びD2を記載している。視差=0は、無限遠に対応する。概算視差値D1は、距離値1000[mm]に対応した視差を表している。概算視差値D2は、距離値2000[mm]に対応した視差を表している。
【0040】
評価値としては、SAD(差分絶対値和)、SSD(差分2乗和)やZNCC(正規化相互相関)を用いることができる。以下では、SADを用いた場合について説明する。グレースケール画像に対するSADは以下の数3で与えられる。評価値としてのSADは、値が最小になる場所が類似度が最も高い。
【0041】
【0042】
数3において、I1は基準画像、I2は探索対象の視差画像を表し、(x,y)は画像上の座標、dは視差を表す。基準画像は、複数の画像のうちの一つの画像の一例である。視差画像は、複数の画像のうちの一つの画像とは異なる画像の一例である。和はブロック内に含まれる画素に対してとるものとし、Nはブロック内に含まれる画素数とする。カラー画像の場合は、RGBの各チャネルで差分絶対値を算出し、和をとって3で除算する。数3により、SADの値が小さいほど、ブロック間の類似性が高いことが分かる。なお、ブロック内の画素値の類似度を表す指標であれば、上記以外のものを用いても構わない。
【0043】
図6の説明に戻る。探索範囲601、602及び603は、各概算視差に対する探索範囲を表している。探索範囲sの決め方としては、概算視差値Dを中心として、以下の数4のように決める。
【0044】
【0045】
数4において、Δは一定値であり、例えばΔ=5[pix]ととることができる。なお、Δは視差に基づいて決定してもよい。例えば、Δを概算視差Dの2乗に比例して決めても構わない。これは、ある距離zに対して、範囲[z-δ,z+δ]にある被写体の視差の取りうる値の幅は、zに対応する視差Dを中心として、おおむねαδD2で与えられることに起因する。αは定数である。
【0046】
視差候補値算出部304は、探索範囲601、602及び603のそれぞれに対し、評価値の探索範囲内の最小値604、605及び606を検出し、各最小値に対応する視差d0、d2、d1を取得する。即ち、探索範囲内で最も類似度が高い視差を取得する。ここで、最小値は必ずしも極小値である必要はない。例えば、探索範囲602には極小値は存在しないが、最小値605に対応する視差d2を取得する。最小値が複数存在する場合は、概算視差値に最も近い視差を選択する。また、視差候補値の値が近接しており、探索範囲同士に重なりがある場合は、探索範囲の和集合をとり、その範囲内において評価値が最小となる視差を取得する。
【0047】
なお、点607は探索対象の視差画像上に、基準画像のブロックと類似したテクスチャパターンが表れたため、極値となった点を示している。このような偽の極値は、被写体上に類似したテクスチャパターンが周期的に存在する場合に発生する。それ以外にも、ブロックサイズが小さい場合は、ブロック内テクスチャパターンが偶然類似する頻度が多くなるため、ノイズなどの影響により、偽の極値が発生する確率が高くなる。視差距離値に基づいて、探索範囲を限定することにより、このような偽の極値を除外することができる。ブロックマッチングにおけるブロックサイズは、マッチングにおけるウィンドウサイズの一例である。ブロックマッチングにおけるブロックは、マッチングにおける参照ウィンドウの一例である。
【0048】
視差候補値算出部304は、複数の概算視差が与えられている画素に対しては、ブロックサイズを小さくしてマッチングを行うことが好ましい。これは、遠近競合部において、被写体の境界部における視差を高精度に算出するためである。例えば、ある画素における概算視差の個数に応じて、ブロックサイズを決めても構わない。前述したように、ブロックサイズを小さくした場合、偽の極値の発生確率が高くなるため、探索範囲の限定がより有効に作用する。
【0049】
(視差の決定方法)
視差決定部305は、各視差候補値d0、d1、d2における評価値を比較し、最も評価値の値が小さい(最も類似度が高い)視差候補値を最終的な視差dとして決定する。
図6の例では、最小値606に対応する視差が選択される。
【0050】
以上説明したように、本実施形態によれば、遠近競合部においても高精度に被写体までの距離(視差)を算出することが可能になる。
【0051】
[第2の実施形態]
第1の実施形態では、評価値の値が近接する視差候補値が複数存在する場合、誤った視差を選択する可能性がある。そこで、本実施形態では、上記のような場合において、より精度の高い視差の決定方法について説明する。
【0052】
第2の実施形態の処理について、
図7のフローチャートを参照して説明する。なお、第1の実施形態と同一の処理に関しては、同じ符号を付して詳しい説明を省略する。また、第1の実施形態と同様、評価値として、SAD(差分絶対値和)を用いた場合について説明する。
【0053】
概算視差値取得部303は、S701において、概算視差に加えて、概算視差の信頼度を取得する。信頼度の算出方法については後述する。
S702において、視差決定部305は、評価値の最小値Vminを検出し、|V(d)―Vmin|<Thとなる視差候補値dが複数存在するか判定する。V(d)はdに対する評価値、Thは予め定めた閾値である。ここでは、最小値Vminとの値の近さを測る尺度として絶対値を用いたが、別の関数を用いても構わない。
【0054】
|V(d)―Vmin|<Thとなる視差候補値dが1つしか存在しない場合は、S703において、視差決定部305は、Vminに対応する視差候補値dを最終的な視差として決定する。
|V(d)―Vmin|<Thとなる視差候補値dが複数存在する場合は、S704において、視差決定部305は、|V(d)―Vmin|<Thとなる視差候補値の中で、最も信頼度の高い視差候補値を最終的な視差として決定する。
なお、ここでは、信頼度のみを用いて視差を決定したが、信頼度と、評価値の重みづけ和を用いて最終的な視差を決定してもよい。
【0055】
(信頼度の算出方法)
概算視差値取得部303は、同一の概算視差を有する領域の境界に近いほど信頼度を低く設定し、遠いほど信頼度を高く設定する。例えば、境界からの距離に定数を乗じたものを信頼度とすることができる。信頼度は連続値や複数の値を用いてもよいし、2値でも構わない。また、第1の実施形態で述べたように、領域を膨張させた場合は、膨張領域に対して信頼度を低く設定する。膨張領域に含まれている値は、信頼度を低く設定することで、視差候補値から除外するようにしてもよい。|V(d)―Vmin|<Thとなる視差候補値dが複数存在する場合には、膨張領域に含まれている値は、予め視差候補値から除外するようにしてもよい。
ブロックマッチングを用いて、概算視差を決めた場合は、ブロックマッチングをした際の評価値を用いて信頼度を決めても構わない。例えば、評価値が大きい場合は、信頼度を低くする。
【0056】
以上説明したように、本実施形態によれば、概算視差の信頼度も考慮することにより、より高精度に視差を決定することが可能になる。
【0057】
(その他の実施形態)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
【0058】
以上、本発明の好ましい実施形態について説明したが、本発明は、これらの実施形態に限定されず、その要旨の範囲内で種々の変形及び変更が可能である。
【符号の説明】
【0059】
100 撮像装置
152 画像処理部
301 画像取得部
302 カメラパラメータ取得部
303 概算視差値取得部
304 視差候補値算出部
305 視差決定部
306 視差マップ変換部