(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024002317
(43)【公開日】2024-01-11
(54)【発明の名称】奥行値推定装置、奥行値推定方法、及び奥行値推定プログラム
(51)【国際特許分類】
G01C 3/06 20060101AFI20231228BHJP
【FI】
G01C3/06 110V
G01C3/06 140
G01C3/06 130
G01C3/06 120Q
【審査請求】未請求
【請求項の数】8
【出願形態】OL
(21)【出願番号】P 2022101429
(22)【出願日】2022-06-23
(71)【出願人】
【識別番号】000004226
【氏名又は名称】日本電信電話株式会社
(71)【出願人】
【識別番号】504137912
【氏名又は名称】国立大学法人 東京大学
(74)【代理人】
【識別番号】110001519
【氏名又は名称】弁理士法人太陽国際特許事務所
(72)【発明者】
【氏名】八尾 泰洋
(72)【発明者】
【氏名】安藤 慎吾
(72)【発明者】
【氏名】島村 潤
(72)【発明者】
【氏名】石川 涼一
(72)【発明者】
【氏名】大石 岳史
【テーマコード(参考)】
2F112
【Fターム(参考)】
2F112AC06
2F112AD01
2F112BA06
2F112CA12
(57)【要約】
【課題】多視点ステレオにおける奥行値の推定の精度を向上する。
【解決手段】奥行値推定装置10は、計測した三次元点群を、多視点ステレオによる奥行値の対象画像に対応する二次元座標に投影し、第1デプスマップを生成し、設定した第2デプスマップの奥行値を用いて、対象画像と異なる視点で撮影された参照画像をサンプリングし、第2デプスマップの奥行値候補から、奥行値候補を用いて対応付けられる参照画像と対象画像との第1類似度、及び、奥行値候補と第1デプスマップにおける対応する画素の奥行値との第2類似度に基づくコストに応じて選択した奥行値候補で、第2デプスマップの各画素の奥行値を更新し、参照画像のサンプリングと、第2デプスマップの奥行値の更新とを交互に所定回数繰り返した際の第2デプスマップの奥行値を最終的な奥行値として推定する。
【選択図】
図2
【特許請求の範囲】
【請求項1】
物体上の各点の三次元座標を光測距により計測した三次元点群を、多視点ステレオによる奥行値推定の対象である対象画像に対応する二次元座標に投影し、前記二次元座標の各画素が前記三次元座標に基づく奥行値を持つ第1デプスマップを生成するデプスマップ生成部と、
前記対象画像の各画素に対応する二次元座標の各画素に推定対象の奥行値を設定した第2デプスマップの奥行値を用いて、前記対象画像と異なる視点で撮影された複数の画像から所定数の参照画像をサンプリングするサンプリング部と、
前記第2デプスマップの画素毎に生成した複数の奥行値候補から、前記奥行値候補を用いて対応付けられる前記参照画像と前記対象画像との第1類似度、及び、前記奥行値候補と前記第1デプスマップにおける対応する画素の奥行値との第2類似度に基づくコストに応じて選択した奥行値候補で、前記第2デプスマップの各画素の奥行値を更新する奥行値更新部と、
前記サンプリング部による前記参照画像のサンプリングと、前記奥行値更新部による前記第2デプスマップの奥行値の更新とを交互に所定回数繰り返した際の前記第2デプスマップの奥行値を最終的な奥行値として推定する推定部と、
を含む奥行値推定装置。
【請求項2】
前記第1類似度は、前記奥行値候補と、前記対象画像を撮影したカメラの内部パラメータ及び外部パラメータと、前記参照画像を撮影したカメラの内部パラメータ及び外部パラメータとに基づいて対応付けられる前記対象画像の画素と前記参照画像の画素との類似度であり、
前記第2類似度は、前記奥行値候補に対応する前記第1デプスマップにおける対応する画素及び周辺画素の奥行値において、前記奥行値候補に最も近い奥行値と前記奥行値候補との類似度である
請求項1に記載の奥行値推定装置。
【請求項3】
前記最終的に推定された奥行値を前記第2デプスマップの奥行値の初期値として、前記サンプリング部による前記参照画像のサンプリングと、前記奥行値更新部による前記第2デプスマップの奥行値の更新とを交互に所定回数繰り返して得られる前記第2デプスマップの各画素の奥行値の分散が大きいほど低くなる信頼度を、前記第2デプスマップの画素毎に算出する算出部を含む請求項1又は請求項2に記載の奥行値推定装置。
【請求項4】
最終的な奥行値が推定された前記第2デプスマップにおいて、前記算出部で算出された信頼度が所定値以上となる画素の二次元座標及び奥行値と、前記対象画像を撮影したカメラの外部パラメータ及び内部パラメータとに基づいて、前記第2デプスマップを前記光測距の座標系に投影した三次元点群を生成する点群生成部を含む請求項3に記載の奥行値推定装置。
【請求項5】
前記点群生成部で生成された三次元点群と、前記光測距により計測した三次元点群とを比較して得られた補正値に基づいて、前記対象画像を撮影したカメラの外部パラメータを更新するパラメータ更新部を含む請求項4に記載の奥行値推定装置。
【請求項6】
前記点群生成部は、前記パラメータ更新部で更新された前記カメラの外部パラメータを用いて、前記三次元点群を再生成する請求項5に記載の奥行値推定装置。
【請求項7】
物体上の各点の三次元座標を光測距により計測した三次元点群を、多視点ステレオによる奥行値推定の対象である対象画像に対応する二次元座標に投影し、前記二次元座標の各画素が前記三次元座標に基づく奥行値を持つ第1デプスマップを生成し、
前記対象画像の各画素に対応する二次元座標の各画素に推定対象の奥行値を設定した第2デプスマップの奥行値を用いて、前記対象画像と異なる視点で撮影された複数の画像から所定数の参照画像をサンプリングし、
前記第2デプスマップの画素毎に生成した複数の奥行値候補から、前記奥行値候補を用いて対応付けられる前記参照画像と前記対象画像との第1類似度、及び、前記奥行値候補と前記第1デプスマップにおける対応する画素の奥行値との第2類似度に基づくコストに応じて選択した奥行値候補で、前記第2デプスマップの各画素の奥行値を更新し、
前記参照画像のサンプリングと、前記第2デプスマップの奥行値の更新とを交互に所定回数繰り返した際の前記第2デプスマップの奥行値を最終的な奥行値として推定する
処理をコンピュータが実行する奥行値推定方法。
【請求項8】
コンピュータを、請求項1又は請求項2に記載の奥行値推定装置の各部として機能させるための奥行値推定プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
開示の技術は、奥行値推定装置、奥行値推定方法、及び奥行値推定プログラムに関する。
【背景技術】
【0002】
光測距の一例であるLiDAR(Light Detection And Ranging)は、レーザ光をパルス波として周囲に照射し、反射光が返ってくるまでの時間から周囲にある物体までの距離を計測し、三次元点群を得る。LiDARは、レーザ光を回転させながら、又は回路によってレーザ光の照射方向を制御しながら周囲にわたる計測を行う。そのため、LiDARは、照射したパルス波の数しか三次元点を得ることができず、一般的に得られる三次元点群の密度が疎である場合が多い。
【0003】
それに対して、複数の画像を用いて三次元点群を生成する多視点ステレオの手法も存在する(非特許文献1及び2)。多視点ステレオの手法は、複数の画像と、画像それぞれについてのカメラパラメータ(内部パラメータ及び外部パラメータ)とを入力とし、それぞれの画像について奥行を推定する。多視点ステレオの手法は、推定した奥行値をカメラパラメータによって逆投影することで、画像それぞれについて三次元点群を得る。多視点ステレオの手法の一例である非特許文献1及び2に記載の技術は、対象画像の画素それぞれについて、奥行値の推定に用いる参照画像の選択を最適化する。すなわち、非特許文献1及び2の技術は、画素毎に異なる参照画像を用いて奥行値の推定を行う。
【0004】
カメラは、レンズに入射する可視光を記録する機器であるため、LiDARのように照射点についてしかデータが得られないということがない。したがって、多視点ステレオによって高密度な三次元点群を得ることができる。しかし、多視点ステレオは、三次元点群の生成に必要な奥行値が対象画像と参照画像とのマッチングに依存し、画像が明瞭でない場合等に奥行値を正しく推定することが困難な場合がある。画像が明瞭でない場合等とは、例えば、テクスチャが鮮明でない領域、繰り返し同じパターンが出現する領域、入射光が強い又は弱いことによる白とび(サチュレーション)及び黒とびの領域等が存在する場合である。
【0005】
そこで、上記のLiDAR及び多視点ステレオの問題点の解決のために、LiDARによる手法と画像を用いた手法とを統合する手法が提案されている(非特許文献3及び4)。非特許文献3及び4に記載の技術は、画像による奥行値推定が失敗するような領域でも、正しい三次元位置を得つつ、高密度な三次元点群を生成する。具体的には、非特許文献3及び4に記載の技術は、LiDARで計測した点群と多視点ステレオの結果得た点群とを重ね合わせる。
【0006】
また、Early Fusionの統合により、画像からの奥行値推定にLiDARの計測情報を利用する手法が提案されている(非特許文献5)。非特許文献5に記載の技術は、画像のみにより奥行値を推定する場合よりも奥行値の推定精度が向上すると共に、LiDARとカメラとの外部キャリブレーションに誤差がある場合でも頑健に奥行値を推定することができる。
【先行技術文献】
【非特許文献】
【0007】
【非特許文献1】E. Zheng, E. Dunn, V. Jojic, and J. M. Frahm, “Patchmatch based joint view selection and depthmap estimation”, IEEE Conference on Computer Vision and Pattern Recognition, 2014
【非特許文献2】J. L. Schonberger, E. Zheng, J. M. Frahm, and M. Pollefeys, “Pixelwise view selection for unstructured multi-view stereo”, European Conference on Computer Vision, 2016
【非特許文献3】Z. Li, P. C. Gogia, and M. Kaess, “Dense surface reconstruction from monocular vision and LiDAR”, IEEE International Conference on Robotics and Automation (ICRA), 2019
【非特許文献4】V. Amblard, T. P. Osedach, A. Croux, A. Speck, and J. J. Leonard, “Lidar-Monocular Surface Reconstruction Using Line Segments”, IEEE International Conference on Robotics and Automation (ICRA), 2021
【非特許文献5】Y. Yao, R. Ishikawa, S. Ando, K. Kurata, N. Ito, J. Shimamura, and T. Oishi, “Non-Learning Stereo-Aided Depth Completion Under Mis-Projection via Selective Stereo Matching”, IEEE Access, 2021
【発明の概要】
【発明が解決しようとする課題】
【0008】
しかし、非特許文献3に記載の技術は、入力されたカメラ外部パラメータ(LiDAR-カメラ間、カメラ-カメラ間の回転及び並進)をそのまま用いるため、カメラ外部パラメータに誤りがある場合に三次元点群の生成が不正確になるという課題がある。一般的に、LiDARとカメラとの外部キャリブレーションは、対応点を見つけることが困難であることから、カメラ外部パラメータが誤差を含み易い。
【0009】
また、非特許文献4に記載の技術は、画像から線分を検出し、検出した線分と入力された三次元点群のエッジとの重なりを大きくするように外部パラメータを更新する。しかし、非特許文献4に記載の技術では、画像から線分を検出できない場合には、カメラ外部パラメータを更新できないという課題がある。
【0010】
さらに、非特許文献3及び4に記載の技術は共に、多視点ステレオによって生成した三次元点群をLiDAR点群と重ね合わせるLate Fusionの統合を行っている。このため、非特許文献3及び4に記載の技術では、LiDARの計測情報を多視点ステレオの奥行値の推定の中で活用できていないという課題がある。
【0011】
また、非特許文献5に記載の技術は、Early Fusionの統合を行っている。しかし、非特許文献5に記載の技術では、多視点ステレオで用いる画像は2枚のみであり、2枚の画像の撮影領域の重なりが大きくなければならない点、及びLiDARの計測情報が欠損している領域について奥行値の推定が不正確になる点が課題である。
【0012】
本開示は、上記の点に鑑みてなされたものであり、多視点ステレオにおける奥行値の推定の精度を向上することを目的とする。
【課題を解決するための手段】
【0013】
本開示の第1態様は、奥行値推定装置であって、物体上の各点の三次元座標を光測距により計測した三次元点群を、多視点ステレオによる奥行値推定の対象である対象画像に対応する二次元座標に投影し、前記二次元座標の各画素が前記三次元座標に基づく奥行値を持つ第1デプスマップを生成するデプスマップ生成部と、前記対象画像の各画素に対応する二次元座標の各画素に推定対象の奥行値を設定した第2デプスマップの奥行値を用いて、前記対象画像と異なる視点で撮影された複数の画像から所定数の参照画像をサンプリングするサンプリング部と、前記第2デプスマップの画素毎に生成した複数の奥行値候補から、前記奥行値候補を用いて対応付けられる前記参照画像と前記対象画像との第1類似度、及び、前記奥行値候補と前記第1デプスマップにおける対応する画素の奥行値との第2類似度に基づくコストに応じて選択した奥行値候補で、前記第2デプスマップの各画素の奥行値を更新する奥行値更新部と、前記サンプリング部による前記参照画像のサンプリングと、前記奥行値更新部による前記第2デプスマップの奥行値の更新とを交互に所定回数繰り返した際の前記第2デプスマップの奥行値を最終的な奥行値として推定する推定部と、を含む。
【0014】
本開示の第2態様は、奥行値推定方法であって、物体上の各点の三次元座標を光測距により計測した三次元点群を、多視点ステレオによる奥行値推定の対象である対象画像に対応する二次元座標に投影し、前記二次元座標の各画素が前記三次元座標に基づく奥行値を持つ第1デプスマップを生成し、前記対象画像の各画素に対応する二次元座標の各画素に推定対象の奥行値を設定した第2デプスマップの奥行値を用いて、前記対象画像と異なる視点で撮影された複数の画像から所定数の参照画像をサンプリングし、前記第2デプスマップの画素毎に生成した複数の奥行値候補から、前記奥行値候補を用いて対応付けられる前記参照画像と前記対象画像との第1類似度、及び、前記奥行値候補と前記第1デプスマップにおける対応する画素の奥行値との第2類似度に基づくコストに応じて選択した奥行値候補で、前記第2デプスマップの各画素の奥行値を更新し、前記参照画像のサンプリングと、前記第2デプスマップの奥行値の更新とを交互に所定回数繰り返した際の前記第2デプスマップの奥行値を最終的な奥行値として推定する方法である。
【0015】
本開示の第3態様は、奥行値推定プログラムであって、コンピュータを、上記の奥行値推定装置の各部として機能させるためのプログラムである。
【発明の効果】
【0016】
開示の技術によれば、多視点ステレオにおける奥行値の推定の精度を向上できる。
【図面の簡単な説明】
【0017】
【
図1】奥行値推定装置のハードウェア構成を示すブロック図である。
【
図3】参照画像のサンプリングを説明するための図である。
【
図4】奥行値候補の選択の一例を説明するための図である。
【
図5A】奥行値推定処理の一例を示すフローチャートである。
【
図5B】奥行値推定処理の一例を示すフローチャートである。
【
図5C】奥行値推定処理の一例を示すフローチャートである。
【発明を実施するための形態】
【0018】
以下、開示の技術の実施形態の一例を、図面を参照しつつ説明する。なお、各図面において同一又は等価な構成要素及び部分には同一の参照符号を付与している。また、図面の寸法比率は、説明の都合上誇張されており、実際の比率とは異なる場合がある。
【0019】
まず、本実施形態に係る奥行値推定装置の構成について説明する。
【0020】
図1は、本実施形態に係る奥行値推定装置10のハードウェア構成を示すブロック図である。
図1に示すように、奥行値推定装置10は、CPU(Central Processing Unit)11、ROM(Read Only Memory)12、RAM(Random Access Memory)13、ストレージ14、入力部15、表示部16、及び通信I/F(インタフェース)17を有する。各構成は、バス19を介して相互に通信可能に接続されている。
【0021】
CPU11は、中央演算処理ユニットであり、各種プログラムを実行したり、各部を制御したりする。すなわち、CPU11は、ROM12又はストレージ14からプログラムを読み出し、RAM13を作業領域としてプログラムを実行する。CPU11は、ROM12又はストレージ14に記憶されているプログラムに従って、上記各構成の制御及び各種の演算処理を行う。本実施形態では、ROM12又はストレージ14には、後述する奥行値推定処理を実行するための奥行値推定プログラムが格納されている。
【0022】
ROM12は、各種プログラム及び各種データを格納する。RAM13は、作業領域として一時的にプログラム又はデータを記憶する。ストレージ14は、HDD(Hard Disk Drive)、SSD(Solid State Drive)等の記憶装置により構成され、オペレーティングシステムを含む各種プログラム、及び各種データを格納する。
【0023】
入力部15は、マウス等のポインティングデバイス、及びキーボードを含み、各種の入力を行うために使用される。表示部16は、例えば、液晶ディスプレイであり、各種の情報を表示する。表示部16は、タッチパネル方式を採用して、入力部15として機能させてもよい。
【0024】
通信I/F17は、携帯端末等の他の機器と通信するためのインタフェースである。当該通信には、例えば、4G、5G、又はWi-Fi(登録商標)等の無線通信の規格が用いられる。
【0025】
次に、本実施形態に係る奥行値推定装置10の機能構成について説明する。
【0026】
図2は、奥行値推定装置10の機能構成の例を示すブロック図である。
図2に示すように、奥行値推定装置10には、各種データベース(DB:database)に記憶された入力データが入力される。各種DBは、例えば外部の記憶装置に記憶されている。入力データには、対象画像I、参照画像I
i、カメラパラメータ、及びLiDAR点群CLが含まれる。
【0027】
対象画像Iは、カメラで物体を撮影した画像であり、多視点ステレオによる奥行値の推定対象となる画像である。参照画像I
iは、対象画像Iとは異なる視点でカメラにより物体を撮影した画像であり、対象画像Iの奥行値の推定のために参照される画像である。対象画像Iは1枚であり、参照画像I
i(i=1,2,・・・,N)は1枚又は複数枚である。Nは参照画像I
iの総数である。なお、対象画像Iは特別な画像ではなく、視点がそれぞれ異なる多数の画像のうち1枚が対象画像Iとなり、それ以外が参照画像I
iとなる。また、全ての画像を順に対象画像Iとすることで、全てのカメラ視点について奥行値を推定することも可能である。対象画像Iは、対象画像IDB22Aに記憶され、参照画像I
iは、参照画像I
iDB24iAに記憶されている。
図2では、参照画像I
iDB24iAとして、i=1及びNの場合である参照画像I
1DB241A及び参照画像I
NDB24NAを図示し、他の参照画像I
iDB24iA(i=2~N-1)の図示は省略している。
【0028】
カメラパラメータは、カメラ外部パラメータRと、カメラ外部パラメータTと、カメラ内部パラメータKとを含む。カメラ外部パラメータRは、カメラで物体を撮影した際にカメラが向いている方向を示す回転行列である。本実施形態では、カメラ外部パラメータRは、LiDAR点群(詳細は後述)の座標系に対する回転を示しているものとする。カメラ外部パラメータTは、カメラで物体を撮影した際にカメラが位置していた場所を示す三次元の並進ベクトルである。本実施形態では、カメラ外部パラメータTは、LiDAR点群の座標系原点に対する位置を示しているものとする。カメラ内部パラメータKは、カメラで物体を撮影したカメラそれぞれの、三次元点座標を画像座標に変換するための3×3の行列で表されるパラメータである。カメラパラメータR、T、及びKは、対象画像Iを撮影したカメラについてのカメラパラメータである。また、添え字i付きのカメラパラメータR
i、T
i、及びK
iは、参照画像I
iを撮影したカメラそれぞれについてのカメラパラメータである。カメラパラメータR、T、及びKは、カメラパラメータDB22Bに記憶され、カメラパラメータR
i、T
i、及びK
iは、カメラパラメータiDB24iBに記憶されている。
図2では、カメラパラメータiDB24iBとして、i=1及びNの場合であるカメラパラメータ1DB241B及びカメラパラメータNDB24NBを図示し、他のカメラパラメータiDB24iB(i=2~N-1)の図示は省略している。
【0029】
LiDAR点群CLは、物体上の各点の三次元座標をLiDARにより計測して得られた三次元点の集合である。なお、LiDARによる計測は、光測距による計測の一例である。各三次元点の三次元座標を(Xj,Yj,Zj)(j=1,2,・・・,M)と表記する。Mは、LiDAR点群CLに含まれる三次元点の総数である。LiDAR点群CLは、LiDAR点群DB28に記憶されている。
【0030】
図2に示すように、奥行値推定装置10は、機能構成として、デプスマップ生成部32、サンプリング部36、奥行値更新部38、推定部42、算出部44、点群生成部48、及びパラメータ更新部52を有する。また、奥行値推定装置10の所定の記憶領域には、第1デプスマップDB34、第2デプスマップDB40、奥行値信頼度DB46、MVS(Multi View Stereo)点群DB50、及びカメラ外部パラメータDB54が記憶される。各機能構成は、CPU11がROM12又はストレージ14に記憶された奥行値推定プログラムを読み出し、RAM13に展開して実行することにより実現される。
【0031】
デプスマップ生成部32は、LiDAR点群CLを対象画像Iに対応する二次元座標に投影し、二次元座標の各画素がLiDAR点群CLの各三次元点の三次元座標に基づく奥行値を持つデプスマップDLを生成する。デプスマップDLは、開示の技術の「第1デプスマップ」の一例である。具体的には、デプスマップ生成部32は、LiDAR点群CLをLiDAR点群DB28から取得する。デプスマップ生成部32は、取得したLiDAR点群CLに含まれる各三次元点の三次元座標(Xj,Yj,Zj)を、下記(1)式及び(2)式を用いて、画像平面の二次元座標(xj,yj)(j=1,・・・,M)に変換する。
【0032】
【0033】
すなわち、デプスマップ生成部32は、(1)式及び(2)式により、カメラパラメータR、T、及びKを用いて、LiDAR点群CLを画像の二次元平面に投影する。なお、二次元座標への変換の際に、座標(xj,yj)が対象画像Iの範囲外の座標である場合、又は(1)式で算出したz'jが負の値となる場合には、当該点を変換後の(xj,yj)から除外する。
【0034】
デプスマップ生成部32は、変換後の二次元座標(xj,yj)を元にデプスマップDLを生成する。具体的には、デプスマップ生成部32は、対象画像Iと同サイズの空の配列であって、全ての画素の画素値(奥行値に相当)が0で初期化された配列を用意し、(xj,yj)の位置の要素にz'jの値を代入する。デプスマップ生成部32は、複数の三次元点が同じ二次元座標(xj,yj)に変換された場合は、複数の(xj,yj)に対応するz'jのうち、最も小さいz'jを代入する。デプスマップ生成部32は、M個の全ての三次元点について当該配列の要素へ奥行値(ここではz'j)を代入することで、デプスマップDLを生成する。
【0035】
デプスマップ生成部32は、生成したデプスマップDLを、第1デプスマップDB34に格納する。
【0036】
サンプリング部36は、対象画像Iの各画素に対応する二次元座標の各画素に推定対象の奥行値を設定したデプスマップDSの奥行値を用いて、参照画像Iiから奥行値の推定に用いるn枚の参照画像Iiをサンプリングする。nは、予め設定したサンプリング数(n≦N)である。サンプリング部36は、対象画像Iの画素の座標位置(x,y)毎にN枚の参照画像Iiの中からn枚の参照画像Iiをサンプリングする。
【0037】
具体的には、サンプリング部36は、サンプリング部36の処理開始時に、対象画像Iと同サイズの空の配列であって、全ての画素の画素値(奥行値に相当)が初期化された配列をデプスマップDSとして生成し、第2デプスマップDB40に格納する。デプスマップDSの奥行値の初期値は、例えば、デプスマップDLの奥行値と同様の値を用いてもよいし、乱数等で初期化した値としてもよい。サンプリング部36は、サンプリング時点でのデプスマップDSにおいて、対象画像Iの画素(x,y)に格納されている奥行値dに基づいて、下記(3)式及び(4)式により、対象画像Iの画素(x,y)に対応する参照画像Iiの画素(xi,yi)を特定する。
【0038】
【0039】
サンプリング部36は、画素(x,y)及びその周辺画素を含む対象画像Iの画素群と、画素(xi,yi)及びその周辺画素を含む参照画像Iiの画素群との類似度を評価する。サンプリング部36は、類似度の高い参照画像Iiほど選択されるようにサンプリングをする。すなわち、サンプリング部36は、類似度の高い順に参照画像Iiからn枚の参照画像Iiをサンプリングする。なお、類似度の評価には、NCC(Normalized Cross Correlation)を用いてもよい。また、NCC、ステレオマッチングコスト、センサス変換画像のハミング距離、及び画像勾配のマッチングコスト等の重みづけ和による指標を定義してもよい。また、非特許文献1に記載の技術と同様に、隣り合う画素では同じ参照画像がサンプリングされ易くなるようにしてもよい。
【0040】
図3に、サンプリング部36による参照画像のサンプリングの一例を概略的に示す。
図3の例では、サンプリング数n=3とし、対象画像Iの画素毎に参照画像I
iをサンプリングする例を示している。また、
図3において、四角で囲ったA及びBは各々1つの画素を示しており、Aの画素については、参照画像I
1、I
2、及びI
5がサンプリングされ、Bの画素については、参照画像I
2、I
3、及びI
4がサンプリングされた例を示している。このように、対象画像Iの画素と参照画像I
iの画素との類似度に基づいてサンプリングを行うことにより、各画素に応じた参照画像I
iがサンプリングされる。
【0041】
奥行値更新部38は、デプスマップDSの画素毎に生成した複数の奥行値候補から、コストLに応じて選択した奥行値候補でデプスマップDSの奥行値を更新する。具体的には、奥行値更新部38は、対象画像Iの画素毎に奥行値候補dk(k=1,・・・,K)をK個生成する。奥行値候補dkは、例えば、画素(x,y)の位置におけるデプスマップDSの奥行値d、画素(x,y)に隣接する位置におけるデプスマップDSの奥行値d、隣接する位置の奥行値に微小な変動を付したもの、ランダムに生成されたもの等としてよい。
【0042】
奥行値更新部38は、各奥行値候補dkについてコストLを算出し、K個の奥行値候補dkからコストLが最小となる奥行値候補dkを奥行値dとして選択する。コストLは、奥行値候補dkを用いて対応付けられる対象画像Iと参照画像Iiとの類似度を表すコストLsと、奥行値候補dkとデプスマップDLにおける対応する画素の奥行値との類似度を表すコストLdとに基づくコストである。コストLsは、開示の技術の「第1類似度」の一例であり、コストLdは、開示の技術の「第2類似度」の一例である。
【0043】
具体的には、奥行値更新部38は、K個の奥行値候補dkのそれぞれに基づいて、(3)式及び(4)式により、対象画像Iの画素(x,y)に対応する参照画像Iiの画素(xi,yi)を特定する。ここでの参照画像Iiは、N枚の中からサンプリングされたn枚の参照画像Ii(iは1~Nから選択されたn個の数字)である。なお、(3)式内の「d」は、「dk」と読み替える。そして、奥行値更新部38は、画素(x,y)及びその周辺画素を含む対象画像Iの画素群と、画素(xi,yi)及びその周辺画素を含む参照画像Iiの画素群との類似度を評価する。これにより、奥行値をdkとした場合における対象画像Iと参照画像Iiとの類似度が評価される。なお、類似度の評価には、サンプリング部36と同様に、NCCを用いてもよいし、他の指標を定義してもよい。そして、奥行値更新部38は、評価した類似度が高いほど小さい値をとるコストLs(dk)を導出する。
【0044】
また、奥行値更新部38は、デプスマップDSの画素(x,y)の位置における奥行値候補dkと、デプスマップDLの画素(x,y)の位置及びその近傍における奥行値dLのうち、dkと最も近似するdLとの差分をLd(dk)として導出する。すなわち、デプスマップDLの画素(x,y)の近傍における奥行値の集合をDneighborと表記すると、Ld(dk)は下記(5)式のように表される。
【0045】
【0046】
近傍のとり方は、例えば、画素(x,y)を中心として、予め定めた半径の円の中に含まれるか否かに基づいて定義してよい。なお、Ld(dk)が予め定められた最大値(Lu)よりも大きい場合は、Ld(dk)の値を打ち切る。このように、画素(x,y)の位置の奥行値だけでなく、近傍のデプスマップDLの奥行値を考慮することで、カメラ外部パラメータに誤差があり、LiDARの投影点が画像とずれている場合においても、その影響を軽減して奥行値の選択を行うことができる。
【0047】
奥行値更新部38は、導出したLs(dk)とLd(dk)との重みづけ和からなるコストLを算出し、コストLを最小化する奥行値候補dkを、奥行値dとして選択する。奥行値dの選択を式で表すと(6)式のようになる。なお、(6)式中のwdはLdの重みである。なお、コストLは、Ls(dk)とLd(dk)との重みづけ和に限定されず、Ls(dk)とLd(dk)との積等、他の方法でLs(dk)とLd(dk)とを統合したコストであってもよい。
【0048】
【0049】
奥行値更新部38は、画素(x,y)について選択した奥行値dで、第2デプスマップDB40に格納されているデプスマップDSの画素(x,y)の奥行値を更新する。
【0050】
図4は、対象画像IとデプスマップDLの一部の奥行値d
Lとを概略的に示した図である。四角で囲んだA及びBは、対象画像Iの画素A及び画素Bに対応するデプスマップDLの位置を示し、点線円はその近傍を示している。
図4では、一例として、画素Aにおける真の奥行値に近い奥行値d
Lを斜線の丸で、真の奥行値から外れている奥行値d
Lを網点の丸で表している。また、画素Bにおける真の奥行値に近い奥行値d
Lを横線の丸で、真の奥行値から外れている奥行値d
Lを斜め格子の丸で表している。
【0051】
図4の例では、仮に、画素Aの位置に最も近い奥行値58を採用してコストLを算出した場合、奥行値58、すなわち真の奥行値とは外れた奥行値に近い奥行値候補d
kのコストLが小さくなる。一方、本実施形態では、奥行値候補d
kに基づいて対応付けた対象画像Iと参照画像I
iとの類似度を示すコストL
s、及び画素Aの近傍の奥行値d
Lと奥行値候補d
kとの類似度を示すコストL
dに基づいてコストLを算出する。そのため、
図4の例のように、画素Aの近傍に真の奥行値に近い奥行値56が含まれる場合、その奥行値56に近い奥行値候補d
kについてのL
s及びL
dが共に小さくなるため、真の奥行値に近い奥行値候補d
kのコストLが小さくなる。すなわち、真の奥行値に近い奥行値候補d
kが選択され易くなる。画素Bについても同様に、画素Bの近傍に真の奥行値に近い奥行値が存在するため、真の奥行値に近い奥行値候補d
kが選択され易くなる。
【0052】
推定部42は、サンプリング部36の処理と奥行値更新部38の処理とを交互に所定回数繰り返した際のデプスマップDSの奥行値を最終的な奥行値として推定する。なお、所定回数は固定回数に限定されず、コストが所定値以下になるまでの回数、前回算出したコストと今回算出したコストとの差が所定値以下になるまでの回数等、動的に設定される回数としてもよい。具体的には、推定部42は、奥行値更新部38により更新されたデプスマップDSの奥行値dを用いて、サンプリング部36に参照画像Iiを再度サンプリングさせる。そして推定部42は、再度サンプリングされた参照画像Iiを用いて、奥行値更新部38でコストLを算出してK個の奥行値候補から1つを選択し、デプスマップDSの奥行値を更新させる。推定部42は、この一連の処理を交互に所定回数繰り返し、繰り返し終了時のデプスマップDSの奥行値dを最終的な奥行値として推定する。
【0053】
算出部44は、デプスマップDSの各画素について推定された奥行値の信頼度を算出する。具体的には、算出部44は、推定部42で推定された奥行値dを第2デプスマップDB40から取得して、サンプリング部36で用いるデプスマップDSの画素(x,y)毎の奥行値の初期値とする。そして、算出部44は、サンプリング部36による参照画像Iiのサンプリングと奥行値更新部38による奥行値の更新とを交互に所定回数繰り返す。なお、算出部44の繰り返し回数と、推定部42の繰り返し回数とは同じ回数でもよいし、異なる回数でもよい。
【0054】
そして、算出部44は、サンプリング部36と奥行値更新部38との繰り返し処理毎に得られる奥行値の分散を、デプスマップDSの各画素(x,y)について導出する。算出部44は、導出した分散に対して、例えばマイナス1を乗じるなどして、分散が小さいほど高い値(大きい値)をとる信頼度を算出する。すなわち、奥行値の分散が小さい場合には、推定した奥行値が収束しており、推定した奥行値の信頼度が高いことを表す。算出部44は、算出した信頼度を奥行値信頼度DB46に格納する。
【0055】
点群生成部48は、第2デプスマップDB40に格納されたデプスマップDSを、カメラパラメータR、T、及びKを用いて、LiDAR点群CLの三次元座標系に逆投影する。具体的には、点群生成部48は、(7)式により、デプスマップDSの二次元座標(x,y)及び奥行値dを、三次元座標(X,Y,Z)に変換して、三次元点群(以下、「MVS点群CS」という)を生成する。
【0056】
【0057】
この際に、点群生成部48は、奥行値信頼度DB46から、デプスマップDSの各画素の奥行値の信頼度を取得し、信頼度が予め定めた閾値以上の画素を逆投影する。すなわち、信頼度が閾値よりも小さい画素は逆投影されない。点群生成部48は、生成したMVS点群CSをMVS点群DB50に格納する。
【0058】
また、点群生成部48は、後述するパラメータ更新部52でカメラ外部パラメータR及びTが更新された場合、カメラ外部パラメータDB54から更新されたカメラ外部パラメータR及びTを取得する。そして、点群生成部48は、取得したカメラ外部パラメータR及びTを用いてMVS点群CSを再生成する。点群生成部48は、再生成したMVS点群CSをMVS点群DB50に格納する。
【0059】
パラメータ更新部52は、MVS点群CSをMVS点群DB50から取得し、LiDAR点群CLをLiDAR点群DB28から取得する。パラメータ更新部52は、MVS点群CSとLiDAR点群CLとを比較して補正値を算出する。そして、パラメータ更新部52は、その補正値に基づいて対象画像Iのカメラ外部パラメータR及びカメラ外部パラメータTを更新する。具体的には、パラメータ更新部52は、MVS点群CSとLiDAR点群CLとの差分に基づいて、カメラ外部パラメータRである回転行列の補正値ΔR、及びカメラ外部パラメータTである並進ベクトルの補正値ΔTを算出する。そして、パラメータ更新部52は、R’=RΔR、T’=RΔT+Tにより、補正後のカメラ外部パラメータR’、及びT’を得る。パラメータ更新部52で更新されたカメラ外部パラメータは、カメラ外部パラメータDB54に格納される。
【0060】
次に、本実施形態に係る奥行値推定装置10の作用について説明する。
【0061】
図5A、
図5B、及び
図5Cは、奥行値推定装置10による奥行値推定処理の流れを示すフローチャートである。奥行値推定装置10における奥行値推定処理は、CPU11がデプスマップ生成部32、サンプリング部36、奥行値更新部38、推定部42、算出部44、点群生成部48、及びパラメータ更新部52として機能することにより実行される。CPU11がROM12又はストレージ14から奥行値推定プログラムを読み出して、RAM13に展開して実行することにより、奥行値推定処理が行なわれる。なお、奥行値推定処理は、開示の技術の奥行値推定方法の一例である。
【0062】
【0063】
まず、ステップS101で、CPU11は、奥行値推定装置10の機能を実行するために必要となる入力データを、例えば各データベース(
図2を参照)から取得する。次に、ステップS105で、CPU11は、デプスマップ生成部32として、LiDAR点群CLを対象画像Iに対応する二次元座標に投影し、LiDAR点群CLの各三次元点の三次元座標に基づいてデプスマップDLを生成する。
【0064】
次に、ステップS107で、CPU11は、サンプリング部36として、デプスマップDSの奥行値を、デプスマップDLの奥行値と同様の値、乱数等で初期化した値等により初期化する。次に、ステップS109で、CPU11は、変数countに1を代入する。変数countは繰り返し処理の回数が現在何回目かを示す。
【0065】
次に、ステップS111で、CPU11は、推定後フラグがtrueか否かを判定する。推定後フラグとは、推定部42でサンプリング部36の処理と奥行値更新部38の処理を繰り返し、最終的な奥行値dの推定を終えたか否かを示すフラグである。推定後フラグの値でtrueは推定部42の推定を終えたことを示し、falseは推定部42の推定をまだ終えていないことを示す。ステップS111で、CPU11が、推定後フラグはtrueであると判定した場合(ステップS111:NO)、ステップS115へ移行する。一方、ステップS111で、CPU11が、推定後フラグはtrueではないと判定した場合(ステップS111:YES)、ステップS113へ移行する。
【0066】
ステップS113では、CPU11は、変数maxCountに更新回数を代入する。更新回数は、推定部42による繰り返し処理を実行する回数である。一方、ステップS115では、CPU11は、変数maxCountに分散値導出回数を代入する。分散値算出回数は、算出部44による繰り返し処理を実行する回数である。
【0067】
次に、ステップS117で、CPU11は、変数countの値が変数maxCountの値以下か否かを判定する。ステップS117で、CPU11が、変数countの値が変数maxCountの値以下ではないと判定した場合(ステップS117:NO)、ステップS131へ移行する。一方、ステップS117で、CPU11が、変数countの値が変数maxCountの値以下であると判定した場合(ステップS117:YES)、ステップS119へ移行する。
【0068】
ステップS119で、CPU11は、サンプリング部36として、サンプリング時のデプスマップDSの奥行値を用いて、対象画像Iの画素毎に、参照画像Iiからn枚の参照画像Iiをサンプリングする。次に、ステップS121で、CPU11は、奥行値更新部38として、デプスマップDSの画素毎に複数の奥行値候補dkを生成する。次に、ステップS123で、CPU11は、奥行値更新部38として、各奥行値候補dkのコストLを算出する。次に、ステップS125で、CPU11は、奥行値更新部38として、複数の奥行値候補dkのうち、コストLが最小の奥行値候補dkを奥行値dとして選択する。次に、ステップS127で、CPU11は、奥行値更新部38として、画素(x,y)について選択した奥行値dで、第2デプスマップDB40に格納されているデプスマップDSの画素(x,y)の奥行値を更新する。次に、ステップS129で、CPU11は、変数countの値をインクリメントし、ステップS117へ戻る。
【0069】
ステップS131では、CPU11は、推定後フラグがtrueか否かを判定する。CPU11が、推定後フラグがtrueではないと判定した場合(ステップS131:NO)、ステップS133へ移行する。一方、CPU11が、推定後フラグがtrueであると判定した場合(ステップS131:YES)、ステップS137へ移行する。ステップS133では、CPU11は、推定部42として、第2デプスマップDB40に格納されている現時点でのデプスマップDSの奥行値dを最終的な奥行値として推定する。
【0070】
次に、ステップS135で、CPU11は、推定後フラグにtrueを代入し、ステップS107へ戻る。この2回目に通るステップS107では、サンプリング部36として、デプスマップDSの奥行値を初期化する際の初期値を、推定部42で推定された最終的な奥行値dとする。
【0071】
ステップS137では、CPU11は、算出部44として、変数maxCountの値の数の奥行値dに対して分散を算出し、分散が小さいほど高くなる信頼度を、デプスマップDSの画素毎に算出する。次に、ステップS139で、CPU11は、点群生成部48として、デプスマップDSにおいて、上記ステップS137で算出された、奥行値の信頼度が閾値以上の画素を採用して、MVS点群CSを生成する。
【0072】
次に、ステップS141で、CPU11は、パラメータ更新部52として、LiDAR点群CLとMVS点群CSとを比較し、カメラ外部パラメータR及びTを更新するための補正値を取得する。次に、ステップS143で、CPU11は、パラメータ更新部52として、ステップS141で得られた補正値に基づいてカメラ外部パラメータ(R及びT)を更新する。次に、ステップS145で、CPU11は、点群生成部48として、パラメータ更新部52で更新されたカメラ外部パラメータを用いて、三次元点群CSの生成を再度行う。そして、奥行値推定処理は終了する。
【0073】
以上説明したように、本実施形態に係る奥行値推定装置は、物体上の各点の三次元座標を光測距により計測した三次元点群を、多視点ステレオによる奥行値推定の対象である対象画像に対応する二次元座標に投影する。そして、二次元座標の各画素が三次元座標に基づく奥行値を持つ第1デプスマップを生成する。さらに、対象画像の各画素に対応する二次元座標の各画素に推定対象の奥行値を設定した第2デプスマップの奥行値を用いて、対象画像と異なる視点で撮影された複数の画像から所定数の参照画像をサンプリングする。その第2デプスマップの画素毎に生成した複数の奥行値候補から、奥行値候補を用いて対応付けられる参照画像と対象画像との第1類似度を算出する。その第1類似度と、奥行値候補と第1デプスマップにおける対応する画素の奥行値との第2類似度とに基づくコストに応じて選択した奥行値候補により、第2デプスマップの各画素の奥行値を更新する。そして、参照画像のサンプリングと、第2デプスマップの奥行値の更新とを交互に所定回数繰り返した際の第2デプスマップの奥行値を最終的な奥行値として推定する。このように、LiDARにより計測された奥行値をEarly Fusionのデータ統合により利用するため、多視点ステレオにおける奥行値の推定の精度を向上させることができる。
【0074】
また、本実施形態に係る奥行値推定装置は、第2類似度として、奥行値候補に対応する第1デプスマップにおける対応する画素及び周辺画素の奥行値において、奥行値候補に最も近い奥行値と奥行値候補との類似度を用いる。これにより、LiDARとカメラとの外部キャリブレーション誤差に対して頑健に奥行値を推定することができる。
【0075】
また、本実施形態に係る奥行値推定装置は、第1類似度として、奥行値候補と、対象画像及び参照画像についてのカメラパラメータとに基づいて対応付けられる対象画像の画素と参照画像の画素との類似度を用いる。これにより、LiDARのデータが欠損している領域についても多視点ステレオの情報により奥行値を推定することができる。
【0076】
また、本実施形態に係る奥行値推定装置は、最終的に推定された奥行値を第2デプスマップの奥行値の初期値として、参照画像のサンプリングと、第2デプスマップの奥行値の更新とを交互に所定回数繰り返す。そして、得られた第2デプスマップの各画素の奥行値の分散が大きいほど低くなる信頼度を、第2デプスマップの画素毎に算出する。これにより、推定した奥行値候補の信頼度を把握することができる。
【0077】
また、本実施形態に係る奥行値推定装置は、信頼度が所定値以上となる画素の二次元座標及び奥行値と、対象画像を撮影したカメラの外部パラメータ及び内部パラメータとに基づいて、第2デプスマップを光測距の座標系に投影した三次元点群を生成する。これにより、多視点ステレオに由来する密な三次元点群を生成することができる。
【0078】
また、本実施形態に係る奥行値推定装置は、生成された三次元点群と、計測した三次元点群とを比較して得られた補正値に基づいて、対象画像を撮影したカメラの外部パラメータを更新する。これにより、LiDARとカメラとの外部キャリブレーションを行うことができる。
【0079】
また、本実施形態に係る奥行値推定装置は、更新されたカメラの外部パラメータを用いて、多視点ステレオに由来する三次元点群を再生成する。これにより、より精度の良い多視点ステレオに由来する三次元点群が得られる。
【0080】
なお、上記実施形態でCPUがソフトウェア(プログラム)を読み込んで実行した奥行値推定処理を、CPU以外の各種のプロセッサが実行してもよい。この場合のプロセッサとしては、FPGA(Field-Programmable Gate Array)等の製造後に回路構成を変更可能なPLD(Programmable Logic Device)、及びASIC(Application Specific Integrated Circuit)等の特定の処理を実行させるために専用に設計された回路構成を有するプロセッサである専用電気回路等が例示される。また、奥行値推定処理を、これらの各種のプロセッサのうちの1つで実行してもよいし、同種又は異種の2つ以上のプロセッサの組み合わせ(例えば、複数のFPGA、及びCPUとFPGAとの組み合わせ等)で実行してもよい。また、これらの各種のプロセッサのハードウェア的な構造は、より具体的には、半導体素子等の回路素子を組み合わせた電気回路である。
【0081】
また、上記実施形態では、奥行値推定処理プログラムがROM12又はストレージ14に予め記憶(インストール)されている態様を説明したが、これに限定されない。プログラムは、CD-ROM(Compact Disk Read Only Memory)、DVD-ROM(Digital Versatile Disk Read Only Memory)、及びUSB(Universal Serial Bus)メモリ等の非一時的(non-transitory)記憶媒体に記憶された形態で提供されてもよい。また、プログラムは、ネットワークを介して外部装置からダウンロードされる形態としてもよい。
【0082】
以上の実施形態に関し、更に以下の付記を開示する。
【0083】
(付記項1)
メモリと、
前記メモリに接続された少なくとも1つのプロセッサと、
を含み、
前記プロセッサは、
物体上の各点の三次元座標を光測距により計測した三次元点群を、多視点ステレオによる奥行値推定の対象である対象画像に対応する二次元座標に投影し、前記二次元座標の各画素が前記三次元座標に基づく奥行値を持つ第1デプスマップを生成し、
前記対象画像の各画素に対応する二次元座標の各画素に推定対象の奥行値を設定した第2デプスマップの奥行値を用いて、前記対象画像と異なる視点で撮影された複数の画像から所定数の参照画像をサンプリングし、
前記第2デプスマップの画素毎に生成した複数の奥行値候補から、前記奥行値候補を用いて対応付けられる前記参照画像と前記対象画像との第1類似度、及び、前記奥行値候補と前記第1デプスマップにおける対応する画素の奥行値との第2類似度に基づくコストに応じて選択した奥行値候補で、前記第2デプスマップの各画素の奥行値を更新し、
前記参照画像のサンプリングと、前記第2デプスマップの奥行値の更新とを交互に所定回数繰り返した際の前記第2デプスマップの奥行値を最終的な奥行値として推定する
ように構成されている奥行値推定装置。
【0084】
(付記項2)
奥行値推定処理を実行するようにコンピュータによって実行可能なプログラムを記憶した非一時的記録媒体であって、
前記奥行値推定処理は、
物体上の各点の三次元座標を光測距により計測した三次元点群を、多視点ステレオによる奥行値推定の対象である対象画像に対応する二次元座標に投影し、前記二次元座標の各画素が前記三次元座標に基づく奥行値を持つ第1デプスマップを生成し、
前記対象画像の各画素に対応する二次元座標の各画素に推定対象の奥行値を設定した第2デプスマップの奥行値を用いて、前記対象画像と異なる視点で撮影された複数の画像から所定数の参照画像をサンプリングし、
前記第2デプスマップの画素毎に生成した複数の奥行値候補から、前記奥行値候補を用いて対応付けられる前記参照画像と前記対象画像との第1類似度、及び、前記奥行値候補と前記第1デプスマップにおける対応する画素の奥行値との第2類似度に基づくコストに応じて選択した奥行値候補で、前記第2デプスマップの各画素の奥行値を更新し、
前記参照画像のサンプリングと、前記第2デプスマップの奥行値の更新とを交互に所定回数繰り返した際の前記第2デプスマップの奥行値を最終的な奥行値として推定する
ことを含む非一時的記録媒体。
【符号の説明】
【0085】
10 奥行値推定装置
11 CPU
12 ROM
13 RAM
14 ストレージ
15 入力部
16 表示部
17 通信I/F
22A 対象画像IDB
22B カメラパラメータDB
241A 参照画像I1DB
241B カメラパラメータ1DB
24NA 参照画像INDB
24NB カメラパラメータNDB
28 LiDAR点群DB
32 デプスマップ生成部
34 第1デプスマップDB
36 サンプリング部
38 奥行値更新部
40 第2デプスマップDB
42 推定部
44 算出部
46 奥行値信頼度DB
48 点群生成部
50 MVS点群DB
52 パラメータ更新部
54 カメラ外部パラメータDB
56 真の奥行値に近い奥行値
58 真の奥行値から外れている奥行値