【文献】
二宮 芳樹,車の知能化のための画像認識技術の現状と今後,情報処理 第51巻 第12号,日本,一般社団法人情報処理学会,2010年12月15日,Vol.51 No.12 Dec.2010,P.1569-1574,ISSN 0447-8053
(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0022】
以下に添付図面を参照しながら、本開示の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
【0023】
なお、説明は以下の順序で行うものとする。
1.第1の実施形態
1.1.画像処理装置の構成例
1.2.マージ部のアルゴリズム
2.第2の実施形態
2.1.物体の距離と解像度の関係
2.
2.複数解像度をマージする具体例
2.
3.低解像度をベースとした複数解像度のマージの具体例
2.
4.注目領域の視差取得性能を向上させる方法
【0024】
<1.第1の実施形態>
[1.1.画像処理装置の構成例]
まず、
図1を参照して、本開示の第1の実施形態に係る視差画像生成フローの全体について説明する。
図1は、本実施形態に係る画像処理装置100の概略構成を示す模式図である。
図1に示すように、画像処理装置100は、射影変換部102a,102b、プレフィルタ部104a,104b、ステレオマッチング部106、マージ部108、ポストフィルタ部110、逆射影変換部112を有して構成される。
【0025】
図1に示すように、カメラ画像として、左右に離間した2つのカメラの画像(カメラ画像(左)、カメラ画像(右))が取得される。それぞれの画像は、射影変換部102a,102bにて射影変換がされ、補正画像(左)、補正画像(右)として出力される。左右それぞれの補正画像は、プレフィルタ部104a,104bにてプレフィルタ処理がされ、エッジ画像(左)、エッジ画像(右)として出力される。それぞれのエッジ画像は、ステレオマッチング部106に入力され、ステレオマッチングが行われる。ステレオマッチング部106は、ステレオマッチングを行った結果、左右の視差画像(視差画像(左)、視差画像(右))を出力する。左右の視差画像はマージ部108に入力される。マージ部108は、視差画像(左)と視差画像(右)をマージし、マージして得られる画像をポストフィルタ部110へ出力する。ポストフィルタ部110は、入力された画像にポストフィルタ処理を施し、ポストフィルタ処理が行われた画像は逆射影変換部112へ入力される。逆射影変換部112は、入力されて画像に逆射影変換を行い、視差画像として出力する。
【0026】
以下、
図1に示す各構成要素が行う処理について説明する。
図2は、射影変換部102a,102b、及び逆射影変換部112が行う処理を示す模式図である。射影変換部102a,102bは、後の処理でステレオマッチングを容易に行うために、左右画像の同一点が水平ライン(=マッチングの探索方向)上に重なるよう、左右画像を変形する。具体的には、射影変換部102a,102bは、エピポーラライン(epipolar line)の並行化を行う。この際、射影変換部102a,102bは、メッシュ情報やホモグラフィ行列を用いる。
図39は、メッシュ情報を示す模式図である。ここで、メッシュ情報とは、入力のカメラ画像に写った正方格子と、本来あるべき格子の位置(補正後の位置)の関係を表す情報である。メッシュ情報は、
図39に示すように、予め格子を撮影するなどして用意しておく。
図39に示すように、カメラによって撮影された格子(補正前)と、本来写っているべき格子(補正後)との関係について、撮影対象のどの点がどの位置にあるべきかを示す情報をメッシュ情報として記録しておく。メッシュ情報からホモグラフィ行列を算出することも可能である。また、逆射影変換部112は、射影変換部102a,102bとは逆の処理を行い。射影変換部102a,102bによる画像の変形を元に戻し、元の入力画像の位置関係に戻す処理を行う。
【0027】
プレフィルタ部104a,104bは、ステレオマッチングの処理において、左右カメラの明度ズレやシェーディングの影響を緩和するため、プレフィルタ処理を行う。例えば、SobelフィルタやPrewittフィルタを用いて、垂直エッジ画像を生成する。これにより、ステレオマッチングにおいて、水平方向に生じる視差の対応点探索を容易に行うことができる。具体的には、入力画像の輝度値をg(x,y)、出力画像の輝度値をf(x,y)とすると、以下の式(1)を演算することで輝度値f(x,y)を求める。
【0029】
Sobelフィルタを使用する場合、式(1)のhの値は、以下の式(2)で表すことができる。
【0031】
ステレオマッチング部106は、右画像を基準とした視差画像と、左画像を基準とした視差画像をそれぞれ生成する。視差画像は、左右の画像の各画素について視差の情報(視差値)を含む。このため、ステレオマッチング部106は、視差画像を生成するため、左右の画像のブロックマッチングを行い、類似度の最も高いブロックを抽出する。左画像を基準とした場合、
図3に示すように、ステレオマッチング部106は、左画像の注目ブロックと類似する右画像の類似ブロックが、左画像の注目ブロックの位置から水平方向に何ピクセル移動したかという値を視差値として算出する。
【0032】
具体的には、ステレオマッチング部106は、以下のような処理の流れにより視差を計算する。例えば4x4のブロック単位で処理を行う場合、出力座標(x,y)の範囲は、x,y共に入力画像の縦横1/4の範囲となる。プレフィルタ部104a,104bの出力である左右のエッジ画像をleft(x,y),right(x,y)とし、左右画像間の視差をdisparityとする。出力座標(x,y)における、左画像と右画像との間の4x4画素ブロックの差分絶対値和block_abs_sum(x,y,disparity)は以下の式(3)で表すことができる。
【0034】
そして、出力画像の各座標(x,y)毎に、disparityを一定範囲(例えば、0から63の間)において1ピクセル単位で連続的に変化させて、上式の4x4画素ブロックの差分絶対値和block_abs_sum(x,y,disparity)が最小となるdisparityの値を求め、これを視差disparity(x,y)とする。
【0035】
マージ部108は、ステレオマッチング後の左右の視差画像を入力とし、1枚にマージされた視差画像を出力する。マージ部108の処理の詳細については後述する。
【0036】
ポストフィルタ部110は、マージ部108により得られた視差画像における異常値を取り除くため、また信頼度が低く視差値を算出できなかった画素の穴埋めをするために、ポストフィルタ処理を行う。ポストフィルタ部110は、例えばメディアンフィルタを用いてポストフィルタ処理を行う。
【0037】
図4は、ポストフィルタ部110がメディアンフィルタの場合の処理を示す模式図である。3×3の画素領域でフィルタリングする場合、
図4に示すように、注目画素とその周囲の画素の画素値を取り出して一列に並べ、注目画素の画素値(20)を9個の画素値の中央値(2)と置き換える。これにより、異常値を取り除くことができ、また視差値を算出できなかった画素の穴埋めをすることができる。
【0038】
[1.2.マージ部のアルゴリズム]
図5は、マージ部108のアルゴリズムの基本的な概念を説明するための模式図であって、ステレオマッチング部106から出力された左右の視差画像を示している。上述したように、ステレオマッチング部106では、右画像を基準とした視差画像と、左画像を基準とした視差画像をそれぞれ生成する。このため、左右の視差画像の対応する点は、同じような視差値をもつと考えられる。そこで、左右の視差画像のうち一方の視差画像の注目点の視差値から、対応する他方の視差画像の参照点を求め、注目点と参照点の2つの視差を比較することで信頼度を算出する。
【0039】
図6は、マージ部108の基本的な処理を示す模式図である。
図6は、本実施形態に係るマージ部108の処理の前提となるもので、右の視差画像の視差を基準として、左の視差画像の参照点の視差と比較する場合を示している。
【0040】
図6に示すように、先ず、右の視差画像の注目画素の視差から、左画像における参照位置(参照画素)を算出する(ステップS10)。次に、右の視差(注目画素の視差)と左の視差(参照画素の視差)を比較し、信頼度を算出する(ステップS12)。そして、信頼度が所定の閾値より高ければ、右の視差画像の視差を出力する(ステップS14)。
【0041】
図7は、
図6の処理を説明するための模式図であって、右の視差画像の注目画素を基準として左の視差画像の参照画素を算出する例を示している。
図7に示すように、左右の視差画像に写る物体の高さ(上下方向の位置)は、射影変換などによって既に揃えられている。この場合、注目画素と同じ水平ライン上に参照画素を見つけることができる。右の視差画像の注目画素の位置(xR,yR)における視差がdRであるとき、左の視差画像の参照画素の位置(xL,yL)は、(xL,yL)=(xR+dR,yR)となる。従って、注目画素の位置(xR,yR)における視差dRと参照画素の位置(xL,yL)における視差dLとを比較することで、視差の値の信頼度を判定することができる。
【0042】
従って、「右の注目画素の視差dR」と「左の参照画素の視差dL」が同じような視差値である場合は、注目画素の視差値は信頼できると考えられる。この場合、左右の視差の差の絶対値abs(dR-dL)の逆数を、信頼度を表す値とする。そして、abs(dR-dL)と信頼度判定のための閾値(threshold_same_disparity)とを比較し、abs(dR-dL)<threshold_same_disparity)の場合は、視差の値が信頼できるため、右の視差画像の注目画素の視差dRをマージ後の視差(merged_disparity)として出力する。また、abs(dR-dL)≧(threshold_same_disparity)の場合は、視差の値が信頼出来ないため、「視差なし(=0)」をマージ後の視差(merged_disparity)として出力する。アルゴリズムの例としては、以下のものが考えられる。
【0043】
if(abs(dR-dL)<threshold_same_disparity)
merged_disparity=dR;
else
merged_disparity=0;
【0044】
上記アルゴリズムにおいて、abs(dR-dL)は、視差値の信頼度の逆数を表す値である。また、threshold_same_disparityは、dRが信頼できるかを決定するための閾値である。つまり、この閾値に基づいてdRとdLが同様の視差であるか否かを判定することができる。
【0045】
一方、
図6及び
図7に示した手法では、視差を1対1でしか比較しないため、左右の視差のいずれかが異常値をとっている場合は、視差の値が信頼できないと判定されてしまう。このため、左右の視差画像の視差に異常値が多いと、マージ後の視差が0となる画素が多くなり、マージ後の視差画像に多くの穴が開いた状態となってしまう。
【0046】
そこで、本実施形態では、参照画素の位置を決定する前に、視差画像にポストフィルタ処理をかけることで異常値を予め除去しておく。これにより、右の視差画像の注目画素と左の視差画像の参照画素の相互参照時の有効領域を増やすことができる。ポストフィルタとしては、メディアンフィルタなどを用いる
【0047】
図8は、ポストフィルタ処理を加えた本実施形態に係る処理を示している。
図6に対して、左右の視差画像へのポストフィルタ処理部107が加えられている。このように、ポストフィルタ処理を入れることで、異常値を取り除く効果が得られ、マージ後の視差が0となることを最小限に抑えることができる。
【0048】
また、処理時間を短縮するために、ポストフィルタ処理を視差参照元の画像にのみ行うことも可能である。
図9は、参照元である右の視差画像にのみポストフィルタ処理を行う例を示している。参照元である右の視差画像にポストフィルタ処理を施した上で、参照元の注目画素と、参照先の対応する画素の視差を比較することで信頼度を算出し、マージ後の視差を決定する。これにより、ポストフィルタ処理は左右の視差画像の一方のみで行われるため、処理の高速化を実現できる。但し、参照先である左の視差画像には、依然として視差の異常値が多く残っている可能性があるため、マージ後に有効な視差値を多く残すためには、マージの際の信頼度算出の方法を工夫することが望ましい。
【0049】
このため、
図10に示すように、右の注目画素の視差dRと、左の参照画素の周辺の9画素の視差dL[i](i=0, …, 8)をそれぞれ比較して、dRの信頼度を決定する。例えば、参照画素の周囲の3x3画素中、参照元の注目画素と同じような視差の値を有する画素がいくつあるかカウントし、その値を信頼度として閾値と比較する。この場合のアルゴリズムを以下に示す。
【0050】
Int count=0;
for(int i=0; i < 9; i++) {
if(abs(dR-dL[i])<threshold_same_disparity)
count++;
}
if (count>=threshold_count)
merged_disparity=dR;
else
merged_disparity=0;
【0051】
上記アルゴリズムにおいて、threshold_same_disparityは、dRとdL[i]が同じような視差かどうかを判定するための閾値である。また、countは、参照画素周辺にdRと同じような視差がいくつあるかを示す値であり、信頼度を表す値である。このアルゴリズムでは、信頼度が閾値よりも小さい場合は、マージした視差値を不定の値(不明値)として“0”を割り当てている。
【0052】
図11は、
図10及び上記アルゴリズムの処理を詳細に示す模式図である。右の視差画像の注目画素の視差d
Rと、左の視差画像の参照画素及びその周囲の8画素の視差dL[i](i=0,…,8)を順次比較し、視差dRと左の参照画素及びその周辺の視差値dL[i](i=0,…,8)との差abs(dR-dL[i])を算出する。
【0053】
そして、abs(dR-dL[i])と閾値threshold_same_disparityを比較し、閾値以下の画素数(=参照画素周辺でdRと同様の視差値を有する画素がいくつあるか)をカウントする。そして、カウント値に基づいてマージ後の視差merged_disparityを決定する。
図11に示すように、この閾値は必要に応じて変化させ、abs(dR-dL[i])がこの閾値以下であれば、注目画素の視差d
Rと参照画素の視差d
Lはほぼ同じであると見做す。
【0054】
図12は、右の注目画素の視差値dRから左の参照画素の位置を求めた後、参照画素の周囲の各視差値dL[i](i=0,…8)とdRの差ごとに重みをつけながら信頼度を決定する方法を示す模式図である。視差dRと左の参照画素及びその周辺の視差値dL[i](i=0,…,8)との差abs(dR-dL[i])を算出する点は、
図11の処理と同様である。
図12では、左右視差の差と信頼度の関係を示す階段状の特性の伝達関数を用い、左右の視差の差abs(dR-dL[i])を、伝達関数に基づいて信頼度に変換し、これらを加算して得られる値を注目画素における信頼度conf[i]とする。
図12中における閾値1を1、閾値2を2、閾値3を3、信頼度1を10、信頼度2を5、信頼度3を2とすると、上図の注目画素の信頼度conf(x,y)は、
conf(x,y)=conf[0]+conf[1]+…+conf[8]=27
となる。従って、この信頼度conf[i]に基づいて視差の信頼度を判定することができる。
【0055】
以上説明したように第1の実施形態によれば、ステレオマッチング後の左右の視差画像をマージする前に、視差画像に対してポストフィルタ処理を行うようにしたため、視差画像の視差の異常値を予め除去しておくことができる。これにより、右の視差画像の注目画素と左の視差画像の参照画素の相互参照時の有効領域を増やすことができ、マージ後の視差が0(視差なし)となることを最小限に抑えることができる。
【0056】
<2.第2の実施形態>
次に、本開示の第2の実施形態について説明する。第2の実施形態は、複数解像度の入力を使用して視差画像を生成するものである。
【0057】
第2の実施形態において、基本的な処理の流れは
図1に示した第1の実施形態と同様である。第2の実施形態では、ステレオマッチング部106において、複数の解像度の入力画像を使用する。
【0058】
[2.1.物体の距離と解像度の関係]
図13は、左右のカメラと被写体である物体の位置を示す模式図である。
図13に示すように、カメラから近くの物体の視差は大きく、遠くの物体の視差は小さい。
図13に示すように、カメラからの距離が比較的遠い物体は、視差が小さい。このため、ステレオマッチング部106によるマッチングを行って奥行き方向の距離を抽出するためには、ある程度の高解像度が必要となる。
【0059】
一方、カメラからの距離が比較的近い物体は、視差が大きい。このため、ステレオマッチング部106によるマッチングを行って奥行き方向の距離(デプス)を抽出するためには、画像の面内の幅広い探索が必要となる。
【0060】
このように、近くの物体と遠くの物体とでは、視差が相違するため、マッチングの際の探索レンジが一定であると、入力画像の解像度によって得ることのできる視差に違いが生じる。
図14の左側の図に示すように、解像度が大きい場合は、より細かい範囲で探索を行うことが可能であり、小さな視差を探知することができる。これにより、遠くの物体のデプスを抽出することができる。
【0061】
一方、
図14の右側の図に示すように、解像度が小さい場合は、同じ物体に対してより広いエリアを探索することができる。このため、大きい視差を探知することができ、近くの物体のデプスを抽出することができる。
【0062】
図15〜
図17は、画像解像度と推定可能デプスとの関係を示す模式図である。
図15は、画像サイズが640x480、64ピクセル探索の場合を示している。この場合、カメラからの距離がD11以下では、デプスを推定することが困難となる。
【0063】
図16は、画像サイズが320x240、64ピクセル探索の場合を示している。この場合、カメラからの距離がD11よりも近いD12以下では、デプスを推定することが困難となる。また、
図17は、画像サイズが160x120、64ピクセル探索の場合を示している。この場合、カメラからの距離がD12よりも更に近いD13以下では、デプスを推定することが困難となる。このように、解像度が低くなるほど、近くの物体のデプスを推定可能であることが判る。
【0064】
第2の実施形態では、以上のような特性を利用して、複数の解像度の画像を入力として用い、それぞれの解像度の視差情報をマージすることで、処理コストを増加させることなく、スケーラブルに視差を抽出することを可能とする。これにより、画像中で視差を得ることができない領域を最小限に抑えることが可能となる。
【0065】
[2.
2.複数解像度をマージする具体例]
図18は、第2の実施形態において、複数解像度を使用する際の処理を示す模式図である。
図18においては、ステレオマッチング部106及びマージ部108を一体のブロックとして示している。また、射影変換部102a,102b、プレフィルタ部104a,104b、ポストフィルタ部110、及び逆射影変換部112については、図示を省略している。ステレオマッチング部106及びマージ部108は、複数解像度のそれぞれについて、ステレオマッチング及びマージを行う。
【0066】
図18に示すように、左右のカメラ画像の元の解像度(画像スケール)を“1”とする。画像スケール“1”の画像は1/4に縮小されて、画像スケール“1/4”の画像が生成される。更に、画像スケール“1/4”の画像は1/4に縮小されて、画像スケール“1/16”の画像が生成される。そして、画像スケール“1”,“1/4”
“1/16”の左右のカメラ画像がそれぞれステレオマッチング部106に入力される。
【0067】
図19は、
図18の構成に射影変換部102a,102b、プレフィルタ部104a,104b、及び逆射影変換部112を加え、ステレオマッチング部106及びマージ部108を別体のブロックとして示したものである。射影変換部102a,102b、プレフィルタ部104a,104b、ステレオマッチング部106、及びマージ部108は、複数解像度のそれぞれに対応して設けられる。そして、各解像度のマージ部108から出力されたマージ後の視差画像は、解像度の異なる視差をマージするマージ部120へ入力される。このように、「解像度の最も高い画像」、「解像度の1階層低い画像」、及び「解像度の最も低い画像」のそれぞれについて、
図1と同様の構成が設けられる。ここで、「解像度の最も高い画像」は、
図18の画像スケール“1”の画像に相当する。また、「解像度の1階層低い画像」は、
図18の画像スケール“1/4”の画像に相当し、「解像度の最も低い画像」は
図18の画像スケール“1/16”の画像に相当する。
【0068】
「解像度の最も高い画像」、「解像度の1階層低い画像」、及び「解像度の最も低い画像」のそれぞれについて、マージ部108にて左右視差のマージが行われ、その結果はマージ部120へ入力される。なお、「解像度の最も高い画像」、「解像度の1階層低い画像」、及び「解像度の最も低い画像」のそれぞれについて、マージ部108への入力の前に、各視差画像にポストフィルタをかけて異常値を除去することもできる。
【0069】
図19に示すように、第2の実施形態の複数解像度を使用するアルゴリズムにおいては、上述のように複数の解像度の入力画像を用意し、複数解像度の入力画像のそれぞれについて、ステレオマッチング部106によるステレオマッチングを行って視差画像を得る。この視差画像を得る処理は、各解像度の入力画像毎に並列処理が可能である。
【0070】
図20は、マージ部120による処理を説明するための模式図である。先ず、最も高い解像度の視差画像1の中で、視差値がある部分(視差値≠0)については、その視差値を用い、視差値が無い部分(視差値=0)については、1階層低い解像度の視差画像2から視差値を補う処理を行う。更に、視差画像2にも視差値が無い場合は、更に1階層低い解像度の視差画像3から視差値を補う処理を行う。このような処理を繰り返し、最も低い解像度の視差画像からも視差値が得られなかった場合は、その部分は「視差値なし」とされる。これにより、視差画像1において「視差なし」と判定される領域を最小限に抑えることが可能となる。
【0071】
このように、「解像度の高い視差画像」で視差が求まっていない画素がある場合は、「「1段階だけ解像度の小さい視差画像」にその画素の視差情報がないかを探索し、視差情報があればその視差情報を用いる。このような処理を「最も高い解像度の視差画像(視差画像1)」から階層的に行う。これにより、「視差なし」と判定される領域を最小限に抑えることが可能となる。
【0072】
ここで、画像中の視差値の無い部分は、オクルージョン領域またはテクスチャレス領域であると考えられる。本来的にオクルージョン領域(手前にある物体が背後の物体を隠す領域)は視差値が出ないので、低解像度の画像を用いて視差値を求める必要は生じない。このため、以下の方法によりオクルージョン領域については、低解像度の画像を用いる処理を行わないようにする。
【0073】
第1の方法では、ステレオマッチング時にあらかじめ視差の信頼度を算出しておき、これを指標として、視差の信頼度が低い場合は低解像度の画像を用いる処理を行わないようにする。指標としては、カメラ画像の輝度分布(テクスチャの有無)が挙げられる。この方法では、ステレオマッチングの際に計算した信頼度を複数解像度マージ時の指標とする。輝度分布を使用する例では、エッジ画像におけるブロック内の輝度値の和を使用する。例えば4x4のブロックでマッチングを行う場合、座標(x,y)におけるエッジ画像の輝度値をlum(x,y)とすると、ブロック内の輝度値の和は以下の式(4)で表すことができる。この値はエッジの有無の判定に使用することができる。
【0075】
図21に示すように、輝度値の和が所定の閾値より大きい場合は、エッジあり(テクスチャ領域)と判定され、ブロックマッチング信頼度が高いものと判定される。一方、輝度値の和が所定の閾値より小さい場合は、エッジなし(テクスチャレス領域)と判定され、ブロックマッチング信頼度が低いものと判定される。従って、ブロックマッチング信頼度が高い場合は、低解像度の視差画像を用いて視差値を求めないように処理を行うことができる。
【0076】
第2の方法では、以下の2文献に示すような既存のオクルージョン検知手法を用いる。オクルージョン領域と判定された場合は、ブロックマッチング信頼度が高いものと判定され、低解像度の視差画像を用いて視差値を求めないように処理を行うことができる。
(文献1)A Cooperative Algorithm for Stereo Matching and Occlusion Detection
By Zitnick, C., Kanade, T.
Tech Report CMU-RI-TR-99-35 (1999)
(文献2)Real-Time Correlation-Based Stereo Vision with Reduced Border Errors
By Hirschmuller, H., Innocent, P.R., Garibaldi, J.M.
In International Journal of Computer Vision, vol. 47(1/2/3), pp.229-246. (2002)
【0077】
図22は、ステレオマッチング部106にてステレオマッチングの信頼度を求め、信頼度の情報を視差画像とともに出力する構成を示している。
図22に示すように、解像度の最も高い画像から視差画像を出力するステレオマッチング部106は、信頼度算出部106aを含む。信頼度算出部106aは、上記の方法によりステレオマッチングの信頼度を算出して出力する。
【0078】
図23は、視差値の信頼度に基づいて解像度の異なる視差をマージする処理を示すフローチャートである。先ず、ステップS200では、注目画素に視差値があるか否かを判定する。注目画素に視差値がある場合はステップS202へ進み、その視差値を出力する。一方、注目画素に視差が無い場合はステップS204へ進み、注目画素の視差値の信頼度が高いか否かを判定する。
【0079】
ステップS204において、注目画素の視差値の信頼度が高い場合は、ステップS206へ進む。ここで、「信頼度が高い」とは、オクルージョン領域である、またはテクスチャ領域である可能性が高いことを意味する。このため、ステップS206では、視差値「なし」を出力する。一方、ステップS204において、注目画素の信頼度が高くない場合は、ステップS208へ進む。ステップS208では、1階層解像度の低い画像の該当する注目画素を調べる。ステップS208の後はステップS210へ進む。
【0080】
ステップS210では、1階層解像度の低い画像において、注目画素に視差値があるか否かを判定する。注目画素に視差値がある場合はステップS202へ進み、その視差値を出力する。一方、注目画素に視差値がない場合はステップS212へ進み、最も低い解像度の視差画像で視差値を調べたか否かを判定する。
【0081】
ステップS212で最も低い解像度の視差画像で視差値を調べたことが判定された場合は、ステップS206へ進み、視差値「なし」を出力する。一方、ステップS212で最も低い解像度の視差画像で視差値を調べていないことが判定された場合は、ステップS2
08へ戻り、1階層解像度の低い画像において、注目画素に視差値があるか否かを判定する。
【0082】
以上のように
図23の処理によれば、注目画素の視差値の信頼度に応じて、信頼度が高い場合は1階層解像度の低い視差画像を調べることなく視差値「なし」を出力することができる。従って、オクルージョン領域などのように、本来的に視差値が抽出されない領域について、低解像度の視差画像による視差値の抽出が行われることがなく、処理を簡素化することができる。また、テクスチャ領域についても、信頼度が高いため、1階層解像度の低い視差画像を調べることなく視差値「なし」を出力することができる。
【0083】
図24〜
図29は、第2の実施形態の処理を説明するための模式図である。
図24〜
図29では、最も高い解像度の視差画像1、視差画像1よりも1階層低い解像度の視差画像2、及び視差画像2よりも更に1階層低い解像度の視差画像3を用いた処理について説明する。
【0084】
先ず、
図24に示すように、
図19の構成において、マージ部108から視差画像1、視差画像2、視差画像3をそれぞれ得る。得られた各視差画像において、××印は視差値が無い画素(視差値が得られなかった画素)を示しており、×印は視差値が無い画素であるが、信頼度が高い(テクスチャ領域ではなく、オクルージョンの可能性が高い)画素を示している。
【0085】
そして、マージ部120では、得られた視差画像1、視差画像2、及び視差画像3を用いて、視差値をマージして出力する。
図25に示すように、最も解像度の高い視差画像1の左上の画素11から順に視差値を抽出していく。視差画像の画素11では、視差値が得られているため、マージ部120から出力される視差画像10の画素101の視差値は、視差画像1の画素11の視差値とする。
【0086】
次に、
図26に示すように、最も解像度の高い視差画像1の画素12について視差値を抽出すると、画素12には視差値が無いため、1階層解像度の低い視差画像2において、画素12に対応する位置の画素21の視差値を調べる。
図26の例では視差画像2の画素21にも視差値が無いため、
図27に示すように、更に解像度の低い視差画像3において、画素21に対応する位置の画素31の視差値を調べる。
【0087】
図27に示す例では、視差画像3の画素31で視差値が得られているため、マージ部120から出力される視差画像10の画素102の視差値は、視差画像3の画素31の視差値とする。
【0088】
次に、
図28に示すように、最も解像度の高い視差画像1の画素16について視差値を抽出すると、画素16には視差値がないが、画素16の信頼度が高いため、オクルージョンである可能性が高い。このため、下の階層である視差画像2を調べることなく、視差画像10の画素106の視差値として「視差値なし」を出力する。この処理は、
図23のステップS204,S206の処理に相当する。
【0089】
図29は、以上の処理を繰り返し、マージ部120から出力される視差画像の各画素の視差値を全て決定した状態を示している。視差画像1と視差画像10を比較すると明らかなように、視差画像1では「視差値なし」とされていた画素の多くが、視差画像10では「視差値あり」とされている。従って、複数の解像度の視差画像をマージすることにより、視差値をより詳細に求めることが可能である。
【0090】
また、上述の例では最も解像度の高い視差画像1について信頼度を求める例を示したが、視差画像1のみならず、視差画像2,3についてステレオマッチングにおける信頼度を算出しておいても良い。
図30は、視差画像2,3を出力するステレオマッチング部106が信頼度算出部106aをそれぞれ備えた構成を示している。この場合、各解像度で「注目画素に視差があるか(
図23のステップS200,S210)」を確認する度に信頼度もチェックすることができるため、オクルージョンに対してよりロバストな(外乱に強い)処理が可能となる。
【0091】
ところで、低解像度から情報を持ってきて視差値の穴埋めする場合、解像度の違いにより視差値の境界がブロックのように目立つ場合がある。
図29の例では、領域Aにおいて(出力先の解像度>元の情報の解像度)の関係が成立するため、ブロックが目立つ場合がある。このため、以下の文献に記載された方法により、輝度情報を参照してエッジを保持しながらアップサンプリングする手法を用いることで、ブロック境界を目立たなくすることも可能である。
(文献3)“Joint Bilateral Upsampling”
By
Kopf, J., Cohen, M. F., Linschinski, D., Uyttendaele, M.
ACM
Transaction of Graphics (2007)
(文献4)特開2011-186958号公報
【0092】
以上のように、高解像度の視差画像をベースとして複数解像度の視差画像をマージする方法では、低解像度の視差画像から情報を補うことにより、高解像度の視差画像中の視差なしの領域を最小限に抑えることができる。
【0093】
[2.
3.低解像度をベースとした複数解像度のマージの具体例]
一方、高解像度の視差画像を使用する場合、
図13〜
図17で説明したように、カメラから近い距離の物体の視差の取得が難しくなる場合があるが、ミスマッチにより視差値が算出されてしまうことがある。例えば、
図31に示すように、カメラから比較的近い箇所に繰り返し模様のある家具150などが配置されている場合、家具150の領域A1は右画像には写っていないが、似たような模様が連続しているため、ブロックマッチングで誤ったマッチングをしてしまう可能性がある。
【0094】
このため、この場合は低解像度をベースとした複数解像度のマージを行う。低解像度の視差画像で取得可能な、カメラから近い(視差の大きい)部分について、同じような視差値に囲まれている画素を検出し、その画素の視差を信頼して、高解像度の対応する位置の視差値を上書きする。具体的には、
図32に示すように、低解像度の視差画像では、カメラから近い近接部分において、適切な深度
精度の視差情報を抽出できる。一方、近接部分は、高解像度の視差画像では過剰な深度精度であり、オクルージョン耐性が低い。このため、近接部分は、高解像度の視差画像では視差を間違えやすい。なお、
図32において、同じ濃度の画素は同じ視差値を持つことを表す。
【0095】
図32に示す画素G1では、4つの隣接する画素が同じ視差値を有するため、周囲と同一の奥行きである可能性が高い。このため、近接物体のエッジでない領域を判定する。例えば、
図32の画素G1の4近傍全てが同一物体とみなせる一定の深度差内か判定する。一定の深度差としては、例えば深度10cm程度とし、深度10cm程度に相当する視差を用いて判定を行う。そして、4近傍の全てが一定深度範囲内であれば、近接物体のエッジでない領域である「穴埋め対象エリア」と判定し、最高解像度の視差画像において、画素G1と対応する箇所を注目解像度における視差値で上書きする。また、エッジ判定することなく、低解像度でしかとれない視差をもつ領域は全て高解像度において上書きすることも可能である。
【0096】
具体的には、
図33に示すように、最も低い解像度を注目解像度とし、周囲と同じ視差値を有する画素G1を探す処理を行う。なお、
図33では、隣接する4つの画素が同じ視差値である画素を検出しているが、周囲にいくつ同じ画素値があれば検出するかは任意に決定できる。
【0097】
そして、
図34に示すように、最高解像度の視差画像において、画素G1と対応する箇所を注目解像度における視差値で上書きする。また、注目解像度と最高解像度の間の解像度の画像に対しては、対応する箇所に「ここはもう上書きされました」というフラグを書き込んでおく。これにより、フラグが書き込まれた領域については以降の探索が不要となり、計算時間を削減することが可能である。
【0098】
そして、
図35に示すように、最も低い解像度からの上書きが完了したら、一段階低い解像度を注目解像度として同様の処理を繰り返す。そして、周囲と同じ視差値を有する画素G2を探す処理を行い、最高解像度の視差画像において、画素G2と対応する箇所を注目解像度における視差値で上書きする。この際、低解像度になる程、近い部分の視差がとれない解像度になるため、その解像度で取得できる視差を考慮しながら探索していく。
【0099】
以上のように、高解像度画像を用いた視差算出では、カメラに近い部分で視差値が算出されずに、視差画像中に視差なしの画素が多く存在する(いわゆる穴だらけになる)が、高解像度をベースにしたマージ方法によれば高解像度の視差画像中の視差なしの画素をより低解像度の視差画像における視差値で補うことができ、視差なしの画素を最小限に抑えることができる。
【0100】
また、高解像度画像を用いた視差算出では、カメラに近い部分で視差を誤って算出することが想定される。具体的には、+探索範囲外で視差が算出できない不足の場合がある。このため、低解像度をベースにしたマージ方法を用いる。これにより、低解像度の視差画像を参照して、カメラに近く、かつ物体のエッジ内部である部分を検出し、高解像度視差画像での対応する部分の視差値を上書きすることで、高解像度の視差画像中において、間違っている可能性のある視差値を上書きして訂正することができる。このように、カメラに近い部分の深度を適切に検出できる低解像度の視差値をベースとして、高解像度の視差値を補完するとともに、計算量を削減することが可能である。
【0101】
なお、高解像度をベースとした複数解像度のマージと、低解像度をベースとした複数解像度のマージとは、組み合わせて使用することもできる。
【0102】
[2.
4.注目領域の視差取得性能を向上させる方法]
次に、複数解像度の視差画像を用いて注目領域の視差取得性能を向上させる方法について説明する。視差を綺麗に取得したい注目領域(例えば、画像中の手や顔など)における視差算出性能を向上させるために、複数解像度の視差画像を用いることも可能である。
図36は、
図18と同様の構成に対して、注目領域検出・追跡部112を付加したものである。注目領域検出・追跡部112は、画像中の「手」や「顔」などの注目領域を検出し、その移動を追跡する。ステレオマッチング部106、マージ部108は、注目領域の視差値に応じて、マージする際に元にする視差画像の解像度を選択する。
【0103】
なお、手などの注目領域を抽出する方法としては、例えば特開2012-113622号公報に記載された方法を用いることができる。この場合、先ず「局所的な先端部(一定領域内で最も手前である部分の座標)」をブロック単位(例えば16x16pixelごと)で検出し、その後周囲のブロック(例えば3x3ブロック)と比較して、大局的な先端部(=注目領域)を抽出する。
【0104】
また、「注目領域の視差を綺麗にとるためにどの解像度の視差画像をマージするべきか」を示す指標を算出する。指標の例としては、視差情報が埋まりやすいと思われる「最も低い解像度の視差画像」における、注目領域の視差平均を用いることができる。
【0105】
図37に基づいて、カメラからの距離が「近い」人物、「中くらい」の人物、「遠い」人物の合計3人の人物が写っている画像において、カメラからの距離が「中くらい」の人物(中央の人物)の「手」の視差を綺麗に出したい場合、について具体的に説明する。先ず、複数の解像度のそれぞれで視差画像を生成する。
【0106】
視差画像を参照すると、解像度「大」の場合、カメラから遠い人物の視差は抽出できるが、カメラから近い人物の視差は異常値が多くなる。このため、最も
低い解像度の画像から注目領域(手)の視差を抽出する。この際、
図15〜
図17で説明した「画像解像度と推定可能デプスの関係」に基づいて、その視差をもっとも綺麗に抽出できると考えられる解像度を選択する。
【0107】
図38は、処理を示すフローチャートである。先ず、ステップS300では、各解像度における視差画像を作成する。次のステップS302では、最も低い解像度の視差画像における注目領域を取得する。次のステップS304では、注目領域の視差値の平均を算出する。次のステップS306では、ステップS304で算出した視差値の平均から、その視差値を綺麗に抽出するために最適と考えられる解像度の画像を選択し、この解像度を元にして、これよりも低い解像度の視差画像が有する視差値を参照する。その後は、
図23のステップS200へ戻る。
【0108】
この際、ステップS306では、
図15〜
図17で説明した「画像解像度と推定可能デプスの関係」に基づいて、どの視差値ではどの解像度を使用するかを示す伝達関数を予め決めておき、伝達関数に基づいて最適と考えられる解像度の画像を選択する。対象が遠い場合は、探索レンジが固定だと、高解像度の方が視差を綺麗にとれる。一方、対象が近い場合は、探索レンジが固定だと、低解像度のほうが視差を綺麗にとれることになる。
【0109】
また、この場合においても、上述した信頼度の情報を全ての解像度で算出しておくことにより、任意の解像度の視差画像をベースとして他の視差画像の視差値で補っていく場合に、オクルージョンを加味して処理を簡素にすることができる。
【0110】
以上説明したように第2の実施形態によれば、複数の解像度の視差画像を用いることにより、カメラから被写体までの距離に応じて、最適な解像度の視差画像を用いて視差値を得ることができる。従って、視差値が0となる画素を最小限に抑えるとともに、視差値に誤りが生じてしまうことを確実に抑止することが可能となる。
【0111】
以上、添付図面を参照しながら本開示の好適な実施形態について詳細に説明したが、本開示の技術的範囲はかかる例に限定されない。本開示の技術分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本開示の技術的範囲に属するものと了解される。
【0112】
なお、以下のような構成も本開示の技術的範囲に属する。
(1)左右のカメラが撮像した1対の撮像画像に基づいて、ステレオマッチングにより左右の視差画像をそれぞれ取得するステレオマッチング部と、
前記視差画像にフィルタ処理を行うフィルタ処理部と、
前記フィルタ処理が行われた前記視差画像について、左右の前記視差画像の対応する位置の視差値を比較し、比較の結果に基づいて左右の前記視差画像の視差値をマージする第1のマージ部と、
を備える、画像処理装置。
(2)前記フィルタ処理部は、左右の前記視差画像の少なくとも一方に前記フィルタ処理を行う、前記(1)に記載の画像処理装置。
(3)前記フィルタ処理部は、左右の前記視差画像の双方に前記フィルタリングを行う、前記(1)に記載の画像処理装置。
(4)前記フィルタ処理部は、メディアンフィルタから構成される、前記(1)に記載の画像処理装置。
(5)前記フィルタ処理部は、左右の前記視差画像の一方に前記フィルタ処理を行い、
前記第1のマージ部は、前記フィルタ処理が行われた一方の視差画像の特定の画素の視差値と、前記フィルタリングが行われていない他方の視差画像の前記特定の画素に対応する画素及びその周辺の複数の画素の視差値とを比較する、前記(1)に記載の画像処理装置。
(6)前記第1のマージ部は、前記特定の画素の視差値と前記他方の視差画像の前記特定の画素に対応する画素及びその周辺の複数の画素のそれぞれの視差値との差分と、所定のしきい値との比較の結果に基づいて、前記視差値をマージする、前記(5)に記載の画像処理装置。
(7)前記第1のマージ部は、前記所定のしきい値と前記視差値の信頼度との関係を規定した伝達関数に基づいて、前記視差値をマージする、前記(6)に記載の画像処理装置。
(8)複数の解像度の前記撮像画像を取得し、
前記ステレオマッチング部、前記フィルタ処理部、及び前記第1のマージ部は、前記複数の解像度毎に対応して複数設けられ、
前記第1のマージ部がマージした前記複数の解像度毎の視差値をマージする第2のマージ部を更に備える、前記(1)に記載の画像処理装置。
(9)前記第2のマージ部は、第1の解像度の前記視差画像の特定の画素の視差値が得られていない場合は、前記第1の解像度よりも低い第2の解像度の前記視差画像の前記特定の画素に対応する画素の視差値に基づいて、前記複数の解像度毎の視差値をマージする、前記(8)に記載の画像処理装置。
(10)前記ステレオマッチング部は、前記左右の視差画像の視差値について信頼度を算出する信頼度算出部を含み、
前記第2のマージ部は、前記信頼度が所定のしきい値よりも高い場合に、前記第1の解像度の前記視差画像の特定の画素の視差値が得られていない場合は、当該視差値を不明値とする、前記(9)に記載の画像処理装置。
(11)前記第2のマージ部は、第1の解像度の視差画像の視差値に基づいて、前記第1の解像度よりも高解像度の第2の解像度の視差画像の視差値を書き換える、前記(8)に記載の画像処理装置。
(12)前記第2のマージ部は、前記第1の解像度の視差画像の特定の画素と隣接する複数の画素の視差値が所定の範囲内である場合は、前記特定の画素の視差値に基づいて前記第2の解像度の視差画像の前記特定の画素に対応する画素の視差値を書き換える、前記(11)に記載の画像処理装置。
(13)前記第2のマージ部は、前記複数の解像度のうち最も低い解像度の視差画像の注目領域における視差値に基づいて、前記複数の解像度の1つを選択し、選択した解像度の視差画像に基づいて前記注目領域の視差値をマージする、前記(8)に記載の画像処理装置。
(14)左右のカメラが撮像した1対の撮像画像に基づいて、ステレオマッチングにより左右の視差画像をそれぞれ取得することと、
前記視差画像にフィルタ処理を行うことと、
前記フィルタ処理が行われた前記視差画像について、左右の前記視差画像の対応する位置の視差値を比較し、比較の結果に基づいて左右の前記視差画像の視差値をマージすることと、
を備える、画像処理方法。