(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】
(43)【公開日】
(54)【発明の名称】画像処理装置、画像処理方法、及びプログラム
(51)【国際特許分類】
【FI】
【審査請求】未請求
【請求項の数】17
【出願形態】
(21)【出願番号】
(22)【出願日】
(71)【出願人】
【識別番号】000001007
【氏名又は名称】キヤノン株式会社
(74)【代理人】
【識別番号】110001243
【氏名又は名称】弁理士法人谷・阿部特許事務所
(72)【発明者】
【氏名】岩尾 知頼
【テーマコード(参考)】
【Fターム(参考)】
5L096AA02
5L096AA06
5L096CA05
5L096FA66
5L096FA67
5L096FA69
5L096HA11
5L096KA04
(57)【要約】
【課題】三次元場の推定に要する演算量を低減する。
【解決手段】本開示に係る画像処理装置102は、学習対象の三次元空間を複数の方向から撮像することにより得られた複数の撮像画像を取得し、三次元空間に複数の学習空間を設定し、学習空間ごとに学習空間の三次元場を推定に用いる学習モデルを割り当てて、学習空間ごとに割り当てられた学習モデルの学習の終了条件を設定し、終了条件に基づいて、学習空間ごとに割り当てられた学習モデルの学習を複数の撮像画像を用いて行うことにより三次元場を推定するものであって、学習空間ごとに割り当てられた学習モデルに、終了条件を満たしている学習済みの学習モデルと終了条件を満たしていない学習途中の学習モデルとが含まれる場合に、学習済みの学習モデルが割り当てられた学習空間については学習済みの学習モデルに関する特徴量を用いて学習途中の学習モデルの学習を行う。
【選択図】
図4
【特許請求の範囲】
【請求項】
学習対象の三次元空間を複数の方向から撮像することにより得られた複数の撮像画像を取得する画像取得手段と、
前記三次元空間に複数の学習空間を設定し、前記学習空間ごとに前記学習空間の三次元場を推定に用いる学習モデルを割り当てて、前記学習空間ごとに割り当てられた学習モデルの学習の終了条件を設定する設定手段と、
前記終了条件に基づいて、前記学習空間ごとに割り当てられた学習モデルの学習を前記複数の撮像画像を用いて行うことにより前記三次元場を推定する学習手段と、
を有し、
前記学習手段は、前記学習空間ごとに割り当てられた学習モデルに、前記終了条件を満たしている学習済みの学習モデルと前記終了条件を満たしていない学習途中の学習モデルとが含まれる場合に、前記学習済みの学習モデルが割り当てられた前記学習空間については前記学習済みの学習モデルに関する特徴量を用いて前記学習途中の学習モデルの学習を行うこと、
を特徴とする画像処理装置。
【請求項】
前記設定手段は、前記終了条件として、前記学習空間ごとに割り当てられた学習モデルについて学習モデルごとに学習回数を設定すること、
を特徴とする請求項1に記載の画像処理装置。
【請求項】
前記設定手段は、前記終了条件として、前記学習空間ごとに割り当てられた学習モデルについて、光線ごとに学習回数を設定すること、
を特徴とする請求項1に記載の画像処理装置。
【請求項】
前記設定手段は、前記学習空間に存在するオブジェクトの種類に応じて前記学習回数を設定すること、
を特徴とする請求項2に記載の画像処理装置。
【請求項】
前記設定手段は、前記学習空間に存在するオブジェクトの大きさに応じて前記学習回数を設定すること、
を特徴とする請求項2に記載の画像処理装置。
【請求項】
前記設定手段は、前記学習空間に存在するオブジェクトの三次元形状の複雑度に応じて前記学習回数を設定すること、
を特徴とする請求項2に記載の画像処理装置。
【請求項】
前記設定手段は、任意の仮想的な視点の位置、前記視点における視線の方向、及び前記視点における視野角に応じて前記学習回数を設定すること、
を特徴とする請求項2に記載の画像処理装置。
【請求項】
前記設定手段は、前記終了条件として、前記学習空間ごとに割り当てられた学習モデルについて学習モデルごとに学習の収束条件を設定すること、
を特徴とする請求項1に記載の画像処理装置。
【請求項】
前記収束条件は、前記学習空間ごとに割り当てられた学習モデルに関する特徴量、及び前記学習空間ごとに割り当てられた学習モデルの出力値のロスの少なくともいずれかの変化量に対する閾値であること、
を特徴とする請求項8に記載の画像処理装置。
【請求項】
前記学習モデルに関する特徴量は、前記学習空間の位置における色と、密度、透明度、及び不透明度の少なくともいずれかを表す値であること、
を特徴とする請求項1に記載の画像処理装置。
【請求項】
前記学習モデルに関する特徴量は、前記学習空間ごとに割り当てられた前記学習モデルのパラメータであること、
を特徴とする請求項1に記載の画像処理装置。
【請求項】
前記学習モデルに関する特徴量は、前記学習空間ごとに割り当てられた前記学習モデルを用いたボリュームレンダリングにより得られる値であること、
を特徴とする請求項1に記載の画像処理装置。
【請求項】
前記学習空間ごとに割り当てられた前記学習モデルは、ニューラルネットワーク、グリッド、及び関数分布の少なくともいずれかにより構成されたものであること、
を特徴とする請求項1に記載の画像処理装置。
【請求項】
前記設定手段は、前記三次元空間に存在するオブジェクトの位置に基づいて、前記複数の学習空間を設定すること、
を特徴とする請求項1に記載の画像処理装置。
【請求項】
前記学習済みの学習モデルを用いたボリュームレンダリングを行う描画手段、
を更に有すること、
を特徴とする請求項1に記載の画像処理装置。
【請求項】
学習対象の三次元空間を複数の方向から撮像することにより得られた複数の撮像画像を取得する画像取得工程と、
前記三次元空間に複数の学習空間を設定し、前記学習空間ごとに前記学習空間の三次元場を推定に用いる学習モデルを割り当てて、前記学習空間ごとに割り当てられた学習モデルの学習の終了条件を設定する設定工程と、
前記終了条件に基づいて、前記学習空間ごとに割り当てられた学習モデルの学習を前記複数の撮像画像を用いて行うことにより前記三次元場を推定する学習工程と、
を有し、
前記学習工程は、前記学習空間ごとに割り当てられた学習モデルに、前記終了条件を満たしている学習済みの学習モデルと前記終了条件を満たしていない学習途中の学習モデルとが含まれる場合に、前記学習済みの学習モデルが割り当てられた前記学習空間については前記学習済みの学習モデルに関する特徴量を用いて前記学習途中の学習モデルの学習を行うこと、
を特徴とする画像処理方法。
【請求項】
コンピュータを請求項1乃至15のいずれか1項に記載の画像処理装置として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【】
本開示は、三次元空間に関する三次元場の推定技術に関する。
【背景技術】
【】
互いに異なる複数の視点からの撮像により得られる複数の撮像画像(以下「多視点画像」と呼ぶ。)のデータを用いて、撮像対象の三次元空間におけるシーンに対応する三次元場を推定する技術がある。また、推定された三次元場を用いて、任意の仮想的な視点(以下「仮想視点」と呼ぶ。)からのシーンの見えに対応する画像(以下「仮想視点画像」と呼ぶ。)を生成する技術がある。非特許文献1には、三次元場の推定技術の一例として、深層学習用のニューラルネットワークにより構成されるNeRF(Neural Radiance Fields)を用いて放射輝度場(Radiance Fields)を推定する技術が開示されている。多視点画像を用いたNeRFの学習の結果として得られる学習済みのNeRFに対して、任意の仮想視点の位置と仮想視点における視線の方向とを示す仮想視点情報を入力することにより、仮想視点からのシーンの見えに対応する仮想視点画像が得られる。具体的には、学習済みのNeRFに対して、仮想視点情報を入力することにより、シーンに対応する色値と体積密度(以下、単に「密度」と呼ぶ。)とが推定される。これらの色値と密度とを積算することにより、仮想視点画像の画素値が得られる。ここで、密度とは、色の不透明度を表す指標である。
【】
NeRFの学習を行う場合には、以下のような一連の処理が繰り返し実行される。まず、撮像装置の位置(以下「撮像位置」と呼ぶ。)と撮像装置の光軸方向(以下「姿勢」と呼ぶ。)とを示す情報とを含む撮像視点情報が学習途中のNeRFに入力される。NeRFは、入力された撮像視点情報に基づいて、上述の仮想視点画像の生成処理と同様の処理を実行することにより、当該撮像装置の撮像により得られる撮像画像に対応する画像を生成する。続いて、当該撮像画像のデータを教師データとして用いて、NeRFにより生成された画像と当該撮像画像の互いに対応する画素値同士の差分がより小さくなるように、NeRFを構成するニューラルネットワークの重みパラメータが更新される。しかし、NeRFで高精度に放射輝度場を推定するためには、膨大な演算量を要するという問題点があった。
【】
非特許文献2には、DeRF(Decomposed Radiance Fields)を用いて、撮像空間を複数の空間に分割し、分割した各空間(以下「分割空間」と呼ぶ。)に割り当てた規模の小さなNeRFの学習を行う技術が開示されている。非特許文献2に開示の技術によれば、学習に用いるNeRFの規模を小さくすることにより、三次元場の推定に要する総演算量が削減され得る。
【先行技術文献】
【非特許文献】
【】
【非特許文献】Ben Mildenhall,外5名,“NeRF:Representing Scene As Neural Radiance Fields For View Synthesis“,[online],令和2年8月3日,arXiv,[令和6年12月25日検索],インターネット<https://arxiv.org/pdf/2003.08934.pdf>
【非特許文献】Daniel Rebain1,外5名,”DeRF:Decomposed Radiance Fields”,[online],令和2年11月25日,arXiv,[令和6年12月25日検索],インターネット<https://arxiv.org/pdf/2011.12490.pdf>
【発明の概要】
【発明が解決しようとする課題】
【】
DeRFでは、各分割空間に割り当てられたNeRFが分割空間の重要度に関わらず一様に学習される。そのため、DeRFには、例えば、重要度の高い分割空間における三次元場の推定精度を上げるために十分な学習を行う場合に重要度の低い分割空間についても不要な学習を行うことになる。このように、DeRFには、三次元場の推定に要する総演算量が増大してしまう可能性がある。
【課題を解決するための手段】
【】
本開示に係る画像処理装置は、学習対象の三次元空間を複数の方向から撮像することにより得られた複数の撮像画像を取得する画像取得手段と、前記三次元空間に複数の学習空間を設定し、前記学習空間ごとに前記学習空間の三次元場を推定に用いる学習モデルを割り当てて、前記学習空間ごとに割り当てられた学習モデルの学習の終了条件を設定する設定手段と、前記終了条件に基づいて、前記学習空間ごとに割り当てられた学習モデルの学習を前記複数の撮像画像を用いて行うことにより前記三次元場を推定する学習手段と、を有し、前記学習手段は、前記学習空間ごとに割り当てられた学習モデルに、前記終了条件を満たしている学習済みの学習モデルと前記終了条件を満たしていない学習途中の学習モデルとが含まれる場合に、前記学習済みの学習モデルが割り当てられた前記学習空間については前記学習済みの学習モデルに関する特徴量を用いて前記学習途中の学習モデルの学習を行う。
【図面の簡単な説明】
【】
【図】実施形態1に係る撮像システムの構成の一例を示す図である。
【図】実施形態1に係る画像処理装置のハードウェア構成の一例を示すブロック図である。
【図】実施形態1に係る画像処理装置における三次元場の推定方法の概略を説明するための図である。
【図】実施形態1に係る画像処理装置の機能構成の一例を示すブロック図である。
【図】実施形態1に係る画像処理装置の処理フローの一例を示すフローチャートである。
【図】実施形態1に係る学習部における学習処理の流れの一例を示すフローチャートである。
【図】実施形態1に係るNeRFの特徴量の一例を説明するための図である。
【図】実施形態1に係る学習部の学習処理の一例を説明するための図である。
【図】実施形態2に係る画像処理装置の処理フローの一例を示すフローチャートである。
【図】実施形態2に係る学習部における学習処理の流れの一例を示すフローチャートである。
【発明を実施するための形態】
【】
以下、本開示の技術に係る実施形態について、図面を参照して説明する。なお、以下の実施形態は、本開示の技術を限定するものではなく、また、以下の実施形態で説明されている特徴の組み合わせの全てが本開示の技術の解決手段に必須のものとは限らない。なお、同一の構成については、同じ符号を付して説明する。
【】
[実施形態1]
実施形態1では、三次元場の推定の対象の三次元空間を分割した各分割空間に割り当てた、三次元場を推定するための学習モデル(以下「三次元場モデル」と呼ぶ。)に対して、分割空間ごとに学習回数を設定する態様について説明する。また、実施形態1では、既定回数の学習が完了した分割空間に関しては学習済みの三次元場モデルを流用する態様について説明する。
【】
<撮像システムの構成>
図1は、実施形態1に係る撮像システムの構成の一例を示す図である。撮像システムは、複数台の撮像装置101、画像処理装置102、ユーザインタフェース((以下「UI」と表記する。)パネル103、記憶装置104、及び表示装置105を有する。各撮像装置101は、デジタルスティルカメラ又はデジタルビデオカメラ等により構成され、互いに異なる位置に配置されている。各撮像装置101は、設定された撮像条件に従って、撮像空間106内に存在するオブジェクト107及び108を互いに異なる視点から同期した撮像を行う。各撮像装置101は、当該撮像により得られた撮像画像のデータを出力する。
【】
なお、互いに同期した撮像とは、同期処理を行った上での撮像を意味し、互いに同期した撮像には、ほぼ同じ時点に行われる撮像も含まれる。撮像装置101の撮像により得られる撮像画像のデータは、静止画像のデータであってもよく、動画像のデータであってもよく、静止画像及び動画像の両方のデータであってもよい。以下、「画像」という語句は、特に断りがない限り、「静止画像」及び「動画像」の両方の意味を含むものとして説明する。各撮像装置101により生成された撮像画像のデータは、画像処理装置102に送信される。また、本実施形態では、
図1に示すように、複数台の撮像装置101のそれぞれと画像処理装置102とが互いに接続されているものとして説明するが、撮像装置101と画像処理装置102との間の接続方法はこれに限定されるものではない。具体的には、例えば、互いに隣接する撮像装置101同士を接続することにより複数台の撮像装置101をカスケード接続し、複数台の撮像装置101のうちの少なくとも1台を画像処理装置102に接続してもよい。
【】
UIパネル103は、液晶パネル等の表示デバイスを備え、撮像装置101における撮像条件、及び画像処理装置102の処理設定等の情報をユーザに提示するためのGUI(グラフィカルユーザインターフェース)を当該表示デバイスに表示する。また、UIパネル103は、タッチパネル又はボタン等の入力デバイスを備えていてもよく、この場合、UIパネル103は、入力デバイスを介して上述の撮像条件又は処理条件の設定若しくは変更等に関するユーザからの指示を受け付ける。また、UIパネル103は、推定された三次元場に基づいて仮想視点画像を生成する場合の仮想視点の設定に関するユーザからの指示を受け付けてもよい。なお、ユーザは、必ずしもUIパネル103が備える入力デバイスから入力を行わなくてもよく、例えば、UIパネル103又は画像処理装置102等に接続されたマウス又はキーボード等の入力デバイスを用いて入力を行ってもよい。
【】
記憶装置104は、ハードディスクドライブ等により構成され、各撮像装置101の同期した撮像により得られた撮像画像のデータ、及び画像処理装置102から出力されたオブジェクト107及び108に関する推定された三次元場に関する情報を記憶する。また、記憶装置104は、画像処理装置102から出力された仮想視点画像のデータを記憶してもよい。表示装置105は、液晶ディスプレイ等により構成され、推定された三次元場、及び設定された仮想カメラパスに基づいて画像処理装置102により生成されて出力された仮想視点画像を表示する。
【】
画像処理装置102は、複数台の撮像装置101から送信される複数の撮像画像(多視点画像)のデータを取得し、取得した多視点画像を用いて、撮像空間106内に存在するオブジェクト107及び108を含む三次元空間に対応する三次元場を推定する。画像処理装置102により推定された三次元場の情報は、記憶装置104に出力される。また、画像処理装置102は、推定された三次元場と、設定された仮想カメラパスとに基づいて仮想視点画像を生成する。仮想カメラパスとは、時系列の、仮想視点の位置及び仮想視点における視線の方向(以下「仮想視点の方向」と呼ぶ。)を示す情報を含むデータである。画像処理装置102により生成された仮想視点画像は、記憶装置104又は表示装置105等に出力される。
【】
<画像処理装置のハードウェア構成>
図2は、実施形態1に係る画像処理装置102のハードウェア構成の一例を示すブロック図である。画像処理装置102は、ハードウェア構成として、CPU201、メインメモリ202、記憶デバイス203、入力デバイス204、表示デバイス205、及び外部I/F206を有する。画像処理装置102がハードウェア構成として有する各部は、バス207を介して互いに通信可能に接続されている。
【】
CPU201は、画像処理装置102を統括的に制御する演算処理装置であり、記憶デバイス203等に格納された各種のプログラムを実行して様々な処理を行う。メインメモリ202は、各種の処理において用いられるデータ及びパラメータ等を一時的に格納する他、CPU201の作業領域として用いられる。記憶デバイス203は、各種のプログラム及びGUIの表示に必要な各種データ等を記憶する大容量記憶装置である。記憶デバイス203は、例えば、ハードディスクドライブ又はシリコンディスクドライブ等の不揮発性メモリにより構成される。なお、後述するフローチャートに示す各ステップの処理は、記憶デバイス203等に格納されたプログラムコードがメインメモリ202に展開されて、これをCPU201が実行することにより実現される。
【】
入力デバイス204は、キーボード、マウス、電子ペン、又はタッチパネル等により構成され、ユーザからの操作入力を受け付ける。表示デバイス205は、液晶パネル等により構成され、GUI等の表示を行う。外部I/F206は、各撮像装置101等の外部装置との間の通信を行うためのインタフェースである。例えば、画像処理装置102と各撮像装置101とは、外部I/F206及びLAN(ローカルエリアネットワーク)208を介して接続され、外部I/F206及びLAN208を介して撮像画像のデータ及び制御信号データ等の送受信が行われる。LAN208は、ローカルエリアネットワークに限定されるものではなく、SDI(Serial Digital Interface)又はHDMI(登録商標)(High-Definition Multimedia Interface(登録商標))等により構成されてもよい。
【】
各撮像装置101は、画像処理装置102から出力される制御信号に基づいて、撮像の開始及び停止、シャッタースピード又は絞り等に関する撮像条件の設定の変更、並びに、撮像により得られた撮像画像のデータの出力を行う。なお、画像処理装置102は、上述のハードウェア構成以外にも、様々な構成要素を有し得るが、本開示の主眼ではないため、その他のハードウェア構成については説明を省略する。
【】
以下、三次元場の推定は、撮像空間106内の三次元場をモデル化した学習モデル(以下「三次元場モデル」と呼ぶ。)の学習により行われるものとして、三次元場モデルの学習方法について説明する。また、本実施形態では、一例として、三次元場モデルは、多層パーセプトロンにより構成されたNeRFであり、三次元場は、放射輝度場により表現されるものとして説明するが、三次元場モデルの構成、及び三次元場は、これに限定されるものではない。
【】
三次元場の表現方法は学習内容に応じて異なる。具体的には、例えば、三次元場モデルは、NeRFと類似する高速手法であるInstantNGPにより構成されたものであってもよい。また、三次元場モデルは、多層パーセプトロンにより構成されたものに限定されるものではなく、明示的に三次元場を表現するPlenoxels又はTensoRF(Tensorial Radiance Fields)等により構成されたものであってもよい。また、三次元場モデルは、SDF(Signed Distance Field)による三次元場の表現により形状の推定の精度を向上させたNeuS等により構成されたものであってもよい。また、三次元場モデルは、広がりを持った点の集合により三次元場が表現された、3D Gaussian Splatting等により構成されたもの等、様々な手法により構成されたものであってもよい。
【】
<三次元場の推定方法>
図3は、実施形態1に係る画像処理装置102における三次元場の推定方法の概略を説明するための図である。具体的には、
図3(a)は、オブジェクト107及び108のそれぞれに対応する学習空間301又は302、並びに、学習空間301及び302のそれぞれに割り当てられるNeRF311又は312を示している。まず、画像処理装置102は、各オブジェクト107及び108のそれぞれに対応する学習空間301又は302を設定する。例えば、画像処理装置102は、各オブジェクト107及び108のそれぞれが存在する三次元空間における位置の座標を取得する。続いて、画像処理装置102は、オブジェクト107及び108のそれぞれの領域を内包するように学習空間301及び302を設定する。続いて、画像処理装置102は、学習空間301にNeRF311を、学習空間302にNeRF312をそれぞれ割り当てる。続いて、画像処理装置102は、NeRF311及び312のそれぞれの学習回数を設定する。学習回数は、学習空間に含まれるオブジェクトの種類又は重要度等に基づいて決定される。
【】
以下、一例として、学習空間301に存在するオブジェクト108は静止物体であり、学習空間302に存在するオブジェクト107は自然人等の動体であるものとして説明する。また、以下、オブジェクト108は、オブジェクト107よりも重要度の低いオブジェクト(以下「非重要オブジェクト」と呼ぶ。)であるものとして説明する。これに対して、オブジェクト107は、オブジェクト108よりも重要度の高いオブジェクト(以下「重要オブジェクト」と呼ぶ。)であるものとして説明する。
【】
更に、以下、非重要オブジェクトであるオブジェクト108が存在する学習空間301に割り当てられるNeRF311の学習回数には3000回が設定されるものとして説明する。これに対して、重要オブジェクトであるオブジェクト107が存在する学習空間302に割り当てられるNeRF312の学習回数には、NeRF311の学習回数よりも多い6000回が設定されるものとして説明する。
【】
続いて、画像処理装置102は、まず、NeRF311に設定された学習回数(3000回)に至るまで、NeRF311及び312の学習を行う。その後、画像処理装置102は、既定の学習回数の学習が完了したNeRF311のパラメータを固定した上で、NeRF312に設定された学習回数(6000回)に至るまで、NeRF312について残りの学習を行う。全てのNeRFのそれぞれに設定された学習回数の学習が完了した後、画像処理装置102は、NeRFの学習を終了して、学習済みのNeRFのパラメータを記憶装置104又は記憶デバイス203等に記憶させる。学習済みのNeRFのパラメータは、仮想視点画像の生成に用いられる。
【】
図3(b)は、NeRF311に設定された学習回数(3000回)だけNeRF311及び312の学習が行われた状態を示し、
図3(c)は、NeRF312に設定された学習回数(6000回)だけNeRF312の学習が行われた状態を示している。また、
図3(d)は、NeRF312に設定された学習回数(6000回)の学習を行うまでの、学習回数と当該学習に要する演算量との関係の一例を示している。なお、
図3(d)に示す従来手法とは、非特許文献2に示すDeRFのように、NeRF311及びNeRF312のそれぞれについて、6000回の学習を行う手法である。上述したように、画像処理装置102は、NeRF311に設定された学習回数(3000回)の学習が完了した後に、NeRF311のパラメータの更新を停止して固定する。このように設定された学習回数(以下「既定の学習回数」と呼ぶ。)の学習が完了したNeRFのパラメータを固定することにより、全てのNeRFの学習を完了するまでの総演算量が削減され得る。
【】
具体的には、従来手法では、学習空間301に割り当てられたNeRF311の学習が完了した後も、NeRF312の学習においてNeRF311の学習が継続される。そのため、学習空間301に割り当てられたNeRF311学習の完了後においても、1回の学習あたりに要する演算量は変わらない。結果として、学習の要する演算量は、全ての学習空間に割り当てられたNeRFの学習が完了するまで、
図3(d)に示すように線形(「略線形」も含む)に増加する。一方、本開示の技術では、学習空間301に割り当てられたNeRF311の学習が完了した後にはNeRF311の学習が行われない。そのため、学習空間301に割り当てられたNeRF311の学習が完了した後には、1回あたりの学習に要する演算量は減少する。結果として、本開示の技術によれば、
図3(d)に示すように、全ての学習空間に割り当てられたNeRFの学習が完了するまでに要する総演算量を、従来手法と比較して低減させることができる。
【】
<画像処理装置の機能構成>
図4は、実施形態1に係る画像処理装置102の機能構成の一例を示すブロック図である。画像処理装置102は、撮像パラメータ取得部401、画像取得部402、設定部403、学習部404、視点取得部406、及び描画部405を有する。画像処理装置102が機能構成として有する各部は、メインメモリ202を作業領域として、CPU201が記憶デバイス203等に格納されたプログラムを実行することにより実現される。なお、以下に示す処理の全てが必ずしもCPU201によるプログラムの実行により実現される必要はなく、画像処理装置102は、処理の一部又は全てがCPU201以外の1つ又は複数の処理回路により実行されるように構成されていてもよい。以下、本実施形態では、画像処理装置102によりオブジェクト107及び108を含む、三次元場の推定の対象の三次元空間(以下、単に「対象の三次元空間」と呼ぶ。)に対応する放射輝度場を推定するものとして説明する。
【】
画像取得部402は、各撮像装置101による同期した撮像により得られた多視点画像のデータを取得する。撮像パラメータ取得部401は、多視点画像を構成する各撮像画像を撮像装置101が撮像した際の撮像パラメータを取得する。画像取得部402により取得された多視点画像及び撮像パラメータ取得部401により取得された撮像パラメータを用いて、三次元場モデルの一例であるNeRFの学習が行われる。
【】
撮像パラメータには、外部パラメータ、内部パラメータ、及び歪曲パラメータ等が含まれる。外部パラメータとは、撮像装置の位置及び姿勢を表すパラメータである。内部パラメータとは、撮像装置による撮像により得らえる撮像画像の中央の座標、及び撮像装置が有するレンズの焦点距離を表すパラメータである。歪曲パラメータとは、レンズの歪みを示すパラメータである。各撮像装置101の撮像パラメータは、事前に行われたカメラキャリブレーションの結果から算出され得る。以下、各撮像装置101の撮像パラメータは、記憶デバイス203に予め記憶されており、撮像パラメータ取得部401は、記憶デバイス203から読み出すことにより、各撮像装置101の撮像パラメータを取得するものとして説明する。なお、撮像パラメータ取得部401は、画像取得部402により取得された多視点画像を用いてカメラキャリブレーションを行うことにより、各撮像装置101の撮像パラメータを算出して取得してもよい。
【】
設定部403は、画像取得部402にて取得された多視点画像、及び撮像パラメータ取得部401にて取得された撮像パラメータに基づいて、対象の三次元空間のうちからオブジェクト107及び108のそれぞれを含む空間を分割空間として特定する。また、設定部403は、特定した複数の分割空間のそれぞれを学習空間301又は302として、学習空間ごとにNeRF311又は312を割り当てる。更に、設定部403は、オブジェクト107及び108のそれぞれについて、シーンにおける重要度又はオブジェクト形状の複雑度等を特定し、特定した重要度又は複雑度等に基づいて、各NeRF311及び312に対して学習回数を設定する。
【】
学習部404は、画像取得部402にて取得された多視点画像、及び撮像パラメータ取得部401にて取得された撮像パラメータに基づいて、設定部403にて各学習空間301及び302に割り当てられたNeRF311及び312の学習を行う。当該学習によりオブジェクト107及び108のそれぞれを含む分割空間、すなわち、学習空間301及び302に対応する放射輝度場が推定される。
【】
具体的には、学習部404は、設定部403により割り当てられたNeRF311,312ごとの学習回数を参照して、学習が完了したNeRF311のパラメータの値により示される特徴量を以降の学習において更新しないように保持する。また、学習部404は、学習済みの学習空間301については、保持された学習が完了したNeRF311の特徴量を割り当てて、以降の学習において、NeRF311については学習を行わないようにする。一方、学習部404は、以降の学習において、保持された学習が完了したNeRF311の特徴量を流用しつつ、学習が完了していないNeRF312の学習を継続して行う。学習部404は、全ての学習空間301及び302に割り当てられたNeRF311及び312の学習が完了した後、学習済みのNeRF311及び312のパラメータを記憶装置104等に出力して記憶させる。
【】
視点取得部406は、仮想視点の位置及び方向を示す情報を含む仮想視点情報を取得する。仮想視点情報は、例えば、時系列の仮想視点の位置及び方向を示す情報により構成される仮想カメラパスであってもよい。描画部405は、学習部404よる学習の結果として得られた学習済みのNeRF311及び312と、視点取得部406により取得された仮想視点情報とに基づく描画処理を行うことにより、仮想視点からの見えに対応する画像(仮想視点画像)を生成する。描画部405により生成された仮想視点画像は、表示装置105又は表示デバイス205等に出力されて表示される。
【】
<画像処理装置の動作>
図5は、実施形態1に係る画像処理装置102の処理フローの一例を示すフローチャートである。
図4に示すブロック図、及び
図5に示すフローチャートを参照して、画像処理装置102の動作について詳細に説明する。なお、以下の説明において記号「S」は処理ステップを意味する。また、以下において説明する画像処理装置102における一連の処理ステップは、CPU201が、所定のプログラムを記憶デバイス203から読み出してメインメモリ202に展開し、これをCPU201が実行することにより実現される。
【】
まず、S501にて、撮像パラメータ取得部401は、各撮像装置101の撮像パラメータを取得する。以下、画像処理装置102の動作中において、各撮像装置101の撮像パラメータは経時変化しないものとして説明する。なお、S501における撮像パラメータの取得処理は、後述するS503における学習空間の設定処理より前であれば、任意のタイミングで実行されてよい。
【】
次に、S502にて、画像取得部402は、多視点画像のデータを取得する。具体的には、例えば、画像取得部402は、まず、仮想視点画像の生成の対象期間において、外部I/F部206及びLAN208を介して各撮像装置101に撮像指示を送信する。各撮像装置101は、画像処理装置102から撮像指示を受けて撮像を行い、当該撮像により得られた撮像画像のデータは、LAN208及び外部I/F部206を介して画像処理装置102に送信される。画像取得部402は、各撮像装置101から送信された撮像画像のデータを取得する。画像取得部402にて取得された各撮像装置101に対応する撮像画像のデータはメインメモリ202等に記憶される。
【】
次に、S503にて、設定部403は、S501にて取得された撮像パラメータとS502にて取得された多視点画像とに基づいて、オブジェクトごとに対応する学習空間を設定し、設定した学習空間ごとに新規のNeRFを割り当てる。具体的には、まず、設定部403は、オブジェクト107及び108のそれぞれを含む各三次元空間をNeRFの学習空間として設定する。続いて、設定部403は、設定した各学習空間に対して、新規のNeRFとして学習前のNeRFを割り当てる。
【】
より具体的には、例えば、まず、設定部403は、各撮像装置101に対応する撮像パラメータと撮像画像とに基づいて、オブジェクトの三次元形状を推定することにより、オブジェクトごとに、オブジェクトを含む三次元空間を特定する。例えば、撮像画像が動画像である場合、設定部403は、撮像パラメータと動画像としての撮像画像の基準フレームとに基づいて、各オブジェクトを含む三次元空間を特定する。例えば、設定部403は、撮像パラメータと基準フレームとに基づいて、オブジェクトごとの三次元形状を推定し、推定したオブジェクトの三次元形状ごとに三次元形状に外接する直方体を学習空間として設定する。この場合、オブジェクトの大きさに対する余白を設定していき、直方体の大きさはオブジェクトよりも余白分だけ大きく設定されてもよい。続いて、設定部403は、オブジェクトごとに特定した三次元空間のそれぞれを内包する三次元空間を学習空間として、学習空間ごとに新規のNeRFを割り当てる。
【】
オブジェクトの三次元形状の推定方法としては、例えば、VH(ビジュアルハル)法がある。VH法では、多視点画像を構成する各撮像画像からオブジェクトの像を含む領域をシルエット領域として抽出し、抽出したシルエット領域と撮像画像を撮像した際の撮像パラメータとから、オブジェクトの三次元形状を取得する。撮像画像におけるオブジェクトのシルエット領域の抽出方法としては、事前に取得された背景画像と撮像画像との差分を取得する背景差分法、又は撮像画像に対してセグメンテーション処理を行う手法等がある。設定部403は、各撮像画像におけるオブジェクトのシルエット領域を対応する撮像パラメータに基づいて三次元空間に投影し、投影領域の積集合をオブジェクトの三次元形状として取得する。
【】
具体的には、まず、設定部403は、所与の大きさのボクセルを敷き詰めた三次元空間を定義する。続いて、設定部403は、各撮像装置101に対応する撮像パラメータを用いて、三次元空間中の全てのボクセルについて、各ボクセルを三次元座標から多視点画像を構成する二次元の各撮像画像上に射影する。続いて、設定部403は、射影された各ボクセルが各撮像画像におけるオブジェクトのシルエット領域と重なっているかを判定する。続いて、設定部403は、重なっていると判定された撮像画像の枚数が所与の閾値以上であるボクセルについて、オブジェクトの三次元形状の一部を構成するボクセルであると決定する。例えば、設定部403は、初期値として、全てのボクセルのフラグにOFFボクセルであることを示す「0」を与えておく。設定部403は、オブジェクトの三次元形状の一部を構成するボクセルであると決定されたボクセルのフラグの値を、ONボクセルであることを示す「1」に変更する。フラグの値が「1」に設定されているボクセル(ONボクセル)の集合が、オブジェクトの三次元形状を構成するボクセル群となる。
【】
本実施形態では、VH法を用いてオブジェクトの三次元形状を推定するものとして説明するが、オブジェクトの三次元形状の推定方法は、必ずしもVH法に限定されるものではない。例えば、オブジェクトの三次元形状は、深層学習による学習の結果として得られる学習済モデルを用いて、一つ以上の撮像装置101の撮像に得られる少数の撮像画像に基づいて推定されてもよい。また、オブジェクトの三次元形状は、LiDAR等を用いた測距装置を用いて三次元空間におけるオブジェクトの表面の位置を点群として特定することにより推定されてもよい。
【】
S503の後、S504にて、設定した学習空間ごとに学習空間の重要度を設定する。学習空間ごとの重要度は、各学習空間に存在するオブジェクトの種類、又は仮想視点からのオブジェクトの見え等により設定され得る。例えば、設定部403がオブジェクトの種類に基づいて学習空間の重要度を設定する場合、設定部403は、存在するオブジェクトが自然人である学習空間の重要度を高く設定してもよい。この場合、例えば、設定部403は、撮像画像が入力として撮像画像に像として含まれる自然人を検出する人物検出器を用いて、学習空間に存在するオブジェクトが自然人であるか否かを判定する。例えば、人物検出器から出力される尤度が高いほど、設定部403は、オブジェクトが自然人である確率が高いものとして、当該オブジェクトに対応する学習空間の重要度を高く設定する。ここで、尤度とは、その物らしさを表す指標である。
【】
人物検出器から出力されるオブジェクト107及び108に対応する尤度がそれぞれ「0.6」及び「0.3」である場合、設定部403は、オブジェクト107及び108のそれぞれに対応する学習空間の重要度を例えば以下のように設定する。具体的には、例えば、この場合、設定部403は、オブジェクト107に対応する学習空間の重要度を「0.6」に設定し、オブジェクト108に対応する学習空間の重要度を「0.3」に設定する。上述の、尤度に基づく学習空間の重要度の設定方法は一例であって、これに限定されるものではない。
【】
また、例えば、設定部403が仮想視点からのオブジェクトの見えに基づいて学習空間の重要度を設定する場合、例えば、設定部403は、以下のようにして学習空間の重要度を設定する。まず、設定部403は、S503にて推定されたオブジェクト107及び108のそれぞれの三次元形状を、生成され得る仮想視点画像の画像平面に逆射影する。複数のオブジェクトのそれぞれは、各オブジェクトの三次元形状が逆射影された場合の画像平面上の領域がどのオブジェクトに対応する領域であるかについて、仮想視点画像と各撮像画像との間で整合がとれているものとする。
【】
例えば、仮想視点画像におけるオブジェクト107及び108のそれぞれのシルエットの大きさが600画素及び300画素である場合、設定部403は、オブジェクト107及び108のそれぞれに対応する学習空間の重要度を例えば以下のように設定する。具体的には、例えば、この場合、設定部403は、オブジェクト107に対応する学習空間の重要度を「0.6」に設定し、オブジェクト108に対応する学習空間の重要度を「0.3」に設定する。上述の、仮想視点からのオブジェクトの見えに基づく学習空間の重要度の設定方法は一例であって、これに限定されるものではない。
【】
上述では学習空間の重要度の設定方法の一例として、各学習空間に存在するオブジェクトの種類、又は仮想視点からのオブジェクトの見えに基づく設定方法について説明したが、学習空間の重要度の設定方法は、これに限定されるものではない。例えば、学習空間の重要度は、ユーザにより予め設定されたオブジェクトごとの仮の重要度に基づいて設定されてもよい。例えば、ユーザは、オブジェクト107及び108のそれぞれの重要度について、仮の重要度を予め設定しておく。オブジェクトごとの仮の重要度は、オブジェクトの種類、又はユーザの興味若しくは関心等のユーザが考えるオブジェクトの重要度に基づいて、任意に設定され得る。
【】
例えば、オブジェクト107及び108のそれぞれに設定された仮の重要度が「0.6」及び「0.3」である場合、設定部403は、オブジェクト107及び108のそれぞれに対応する学習空間の重要度を以下のように設定する。具体的には、例えば、この場合、設定部403は、オブジェクト107に対応する学習空間の重要度を「0.6」に設定し、オブジェクト108に対応する学習空間の重要度を「0.3」に設定する。上述の、オブジェクトごとの仮の重要度に基づく学習空間の重要度の設定方法は一例であって、これに限定されるものではない。
【】
設定部403は、一例として上述した学習空間の重要度の設定方法を組み合わせて、学習空間の重要度を設定してもよい。例えば、設定部403は、仮想視点画像におけるオブジェクトごとの領域の大きさに基づいて決定した重要度に対して、オブジェクトごとに予め設定された仮の重要度に基づく所定の重みづけを行うことにより各学習空間の真の重要度を設定する。具体的には、例えば、オブジェクトの種類に基づく学習空間の重要度の設定値が、オブジェクト107については「0.6」であり、オブジェクト108については「0.3」であるものとする。また、オブジェクトの仮想視点からの見えに基づく学習空間の重要度の設定値が、オブジェクト107については「0.6」であり、オブジェクト108については「0.3」であるものとする。この場合、例えば、設定部403は、対応する重要度を互いに乗じて、オブジェクト107に対応する学習空間の重要度を「0.36」に設定し、オブジェクト108に対応する学習空間の重要度を「0.09」に設定する。複数の重要度を組み合わせて学習空間の重要度を設定する方法は、これに限定されるものではない。
【】
また、例えば、設定部403は、S503にて推定されたオブジェクトの三次元形状の複雑度に基づいて、各オブジェクトに対応する学習空間の重要度を設定してもよい。オブジェクトの三次元形状の複雑度は、例えば、法線分布の分散の大きさを取得することにより算出され得る。以下、一例として、設定部403は、オブジェクトの種類と仮想視点画像におけるオブジェクトごとの領域の大きさとに基づいて、各オブジェクトに対応する学習空間の重要度を設定するものとして説明する。
【】
S504の後、S505にて、設定部403は、S504にて設定された学習空間ごとの重要度に基づいて、S503にて学習空間ごとに割り当てられた新規のNeRFの学習回数を設定する。例えば、学習空間ごとの学習回数は、S504にて設定された各学習空間の重要度同士の比率に応じて設定される。例えば、上述したように、オブジェクトの種類に応じて学習空間の重要度が設定される場合、学習空間301に割り当てられたNeRF311の学習回数と学習空間302に割り当てられたNeRF312の学習回数との比率は、0.3:0.6=1:2となる。基準となるNeRFの学習回数を予め設定されているものとすると、当該比率に応じて各学習空間の学習回数が設定される。例えば、学習回数の比率が最も小さい学習空間のNeRFの学習回数を基準として、これを3000回とすると、NeRF311の学習回数は3000回となり、NeRF312の学習回数は6000回となる。
【】
次に、S506にて、学習部404は、S503にて各学習空間に割り当てられたNeRFの学習処理を実行する。具体的には、学習部404は、S505にて設定された学習回数に応じて、S503にて各学習空間に割り当てられたNeRFについて既定回数の学習を行う。S506における学習処理の詳細については後述する。次に、S507にて、視点取得部406は仮想視点情報を取得する。次に、S508にて、描画部405は仮想視点画像を生成する。具体的には、描画部405は、S506の学習処理の結果として得られた学習済みのNeRFの特徴量、すなわち、推定された放射輝度場と、S507にて取得された仮想視点情報とに基づいて、仮想視点画像を生成する。仮想視点画像の生成方法には、ボリュームレンダリングの手法が用いられ得る。ボリュームレンダリングの手法の詳細については後述する。S508の後、画像処理装置102は、
図5に示すフローチャートの処理を終了する。
【】
<学習処理について>
本実施形態に係る学習部404における学習処理を説明する前に、一般的なNeRFの学習手法について説明する。NeRFでは、学習空間における任意の位置(x、y、z)とその位置に対する視線の方向(θ、φ)との入力に対して、当該位置に対応する色値cと密度σとが推定される。具体的には、まず、NeRFでは、撮像位置から撮像画像の各画素に向かう方向に対応する光線が設定される。続いて、設定された光線上に複数のサンプリング点が設定される。続いて、設定された各サンプリング点における色値cと密度σとが推定される。続いて、同一の光線上の各サンプリング点において推定された色値c及び密度σのそれぞれについて撮像位置から積算することにより、各光線に対応する画素の値(画素値)が決定されて撮像画像に対応する画像が生成される。このような画像の生成は、一般にボリュームレンダリングと呼ばれる。続いて、ボリュームレンダリングにより生成された画像と、当該画像に対応する正解データとしての撮像画像との差分が小さくなるようにNeRFを構成するニューラルネットワークの重みパラメータが更新される。
【】
本実施形態では、各オブジェクトに対応する学習空間ごとにNeRFが割り当てられる。そのため、対象の三次元空間に2以上のオブジェクトが存在する場合、対象の三次元空間中に2つ以上の学習空間が設定される。これにより、対象の三次元空間には、2つ以上のNeRFが割り当てられる。対象の三次元空間に2つ以上のNeRFが割り当てられる場合において、ある光線が複数の学習空間を通過する場合、当該光線が通過する複数の学習空間について上述の積算処理が実行されて当該光線に対応する画素値が決定される。
【】
例えば、ある画素に対応する光線が学習空間301と学習空間302とを順に通過する場合、学習空間301及び302のそれぞれに割り当てられたNeRFにより、学習空間301及び302には、複数のサンプリング点がそれぞれ設定される。続いて、各学習空間301及び302内の各サンプリング点における色値と密度とが、それぞれに割り当てられたNeRFにより推定される。続いて、学習空間301及び302内において推定された各サンプリング点の色値及び密度について順に積算することによりボリュームレンダリングが行われることにより画像が生成される。対象の三次元空間に2つ以上のNeRFが割り当てられている場合の各NeRFの学習手法及びボリュームレンダリングの手法については、非特許文献2に開示されている。
【】
図6は、実施形態1に係る学習部404における学習処理の流れ、すなわち、
図5に示すS506の処理の詳細な流れの一例を示すフローチャートである。
図6に示すフローチャートを用いて、学習部404における学習処理、すなわち、本実施形態に係る放射輝度場の推定方法について説明する。
図6に示すフローチャートの処理は、
図5に示すS505の処理の後に実行される。
【】
S505の後、まず、S601にて、学習部404は、全ての学習空間に割り当てられたNeRFについて、S505にてNeRFごとに設定された学習回数(既定の学習回数)の学習処理を実行したか否かを判定する。S601にて全ての学習空間に割り当てられたNeRFについて既定の学習回数の学習処理が実行されていると判定された場合、学習部404は、
図6に示すフローチャートの処理、すなわち、
図5に示すS506の処理を終了する。S601にて少なくとも1つの学習空間に割り当てられたNeRFについて既定の学習回数の学習処理が実行されていないと判定された場合、学習部404は、S602の処理を実行する。S602にて、学習部404は、学習対象の光線群のうちから任意の光線を選択する。以下、S602にて選択された光線を「選択光線」と呼ぶ。ここで、学習対象の光線群とは、撮像位置から撮像画像における各画素に向かう方向に射出される複数の光線のことである。
【】
S602の後、S603にて、学習部404は、S503にて設定された複数の学習空間のうち、S602にて選択された光線(選択光線)が通過する学習空間を特定する。選択光線が通過すると特定された学習空間(以下「通過学習空間」と呼ぶ。)が2つ以上存在する場合、学習部404は、S603にて、選択光線が通過学習空間をどのような順番で通過するかについても特定する。S603にて特定された通過学習空間、及び通過学習空間を通過する順序に関する情報は、メインメモリ202等に記憶される。また、選択光線が学習空間を通過する場合、各通過学習空間に割り当てられたNeRFについての学習済みの回数(以下「学習済み回数」と呼ぶ。)がインクリメントされ、当該回数に関する情報は、メインメモリ202等に記憶される。学習済み回数が既定の学習回数に達している場合、学習部404は、学習済み回数をインクリメントせずに、以降の処理において、学習済み回数が既定の学習回数に達しているNeRFを学習済みのNeRFとして扱う。以下、割り当てられたNeRFの学習済み回数が既定の学習回数に達している学習空間を「学習済みの学習空間」と呼ぶ。
【】
S603の後、S604にて、学習部404は、S603にて特定された通過学習空間に学習済みの学習空間が含まれるか否かを判定する。S604にて通過学習空間に学習済みの学習空間が含まれると判定された場合、学習部404は、S605の処理を実行し、そうでない場合、学習部404は、後述するS607の処理を実行する。S605にて、学習部404は、通過学習空間に含まれる学習済みの学習空間について、保持されているNeRFの特徴量が存在するか否かを判定する。NeRFの特徴量の具体的な説明については後述する。S605にて学習済みの学習空間について保持されているNeRFの特徴量が存在すると判定された場合、学習部404は、S606の処理を実行し、そうでない場合、学習部404は、後述するS607の処理を実行する。S606にて、学習部404は、学習済みの通過学習空間に対して、保持されているNeRFの特徴量を割り当てる。S606の処理の後、学習部404は、S607の処理を実行する。
【】
図7は、実施形態1に係るNeRF311及び312の特徴量の一例を説明するための図である。具体的には、
図7(a)は、学習空間301及び302のそれぞれに割り当てられているNeRF312又は311を示している。また、
図7(b)は、学習空間301及び302のそれぞれに設定されるサンプリング点の一例を示しており、
図7(c)は、NeRF311又は312の特徴量701及び702を示している。なお、
図7において、学習空間301及び302を貫く矢印は、撮像位置kからの撮像により得られる撮像画像における任意の画素に対応する光線の一例を示している。
【】
NeRFの特徴量とは、例えば、各NeRF311及び312の重みパラメータがある。NeRFの特徴量は、
図7(b)に一例として示すように、各学習空間301及び302に設定された各サンプリング点において学習の結果として推定された色値c及び密度σであってもよい。この場合、色値c及び密度σにより表現されるNeRF311及び312の特徴量のそれぞれは、順に、c(k,r,w,h)及びσ(k,r,w,h)と表現され得る。ここで、kは撮像位置であり、(w、h)は、撮像位置kからの撮像により得られる撮像画像における画素位置であり、rは、NeRF311及び312を一意に識別し得る番号等の識別子である。このような特徴量を記憶装置104等に記憶させておくことにより、学習済みの学習空間に関しては当該学習空間に割り当てられているNeRFの特徴量を流用しつつ、学習途中の学習空間に割り当てられているNeRFの学習を行うことが可能となる。
【】
また、
図7(c)に一例として示すように、NeRFの特徴量701及び702は、同一の光線上且つ同一の学習空間内に設定された各サンプリング点において推定された色値c及び密度σのそれぞれについて撮像位置から積算した値Cであってもよい。色値の積算値及び密度の積算値により表現される特徴量701及び702の値Cは、例えば、以下の数式(1)及び(2)を用いて算出され得る。
【】
【】
ここで、Tiは、各サンプリング点における累積透過率である。また、上述と同様に、kは撮像位置であり、(w,h)は撮像画像における画素位置であり、rはNeRFの識別子である。また、Nはサンプリング点の総数であり、δiはi番目のサンプリング点iから次のi+1番目のサンプリング点i+1までの距離である。また、NeRFの特徴量における密度の積算値は、密度を重みwに変換した重みの積算値Wを用いて表現されたものであってもよい。重みの積算値Wは、例えば、以下の数式(3)及び(4)を用いて算出され得る。
【】
【】
また、NeRFの特徴量には、各サンプリング点において推定された色値c及び密度σに加えて、同一の光線上且つ同一の学習空間内に設定された各サンプリング点の色値及び密度のそれぞれを積算した値が含まれる等、種々の特徴量が含まれていてもよい。S607にて、学習部404は、学習途中の学習空間に割り当てられているNeRFの学習処理を実行する。S607の処理において、学習済みの学習空間に関しては、保持されているNeRFの特徴量を流用した学習が行われるため、当該NeRFの重みパラメータの更新は行われない。
【】
図8は、実施形態1に係る学習部404の学習処理の一例を説明するための図であって、
図6のフローチャートに示すS607の処理の一例を説明するための図である。
図8には、学習済みの学習空間301に割り当てられている学習済みのNeRF311と、学習途中の学習空間302に割り当てられている学習途中のNeRF312とが示されている。なお、
図8において、学習空間301及び302を貫く矢印は、撮像位置kからの撮像により得られる撮像画像における任意の画素に対応する光線の一例を示している。また、
図8において、中黒の円は、色値及び密度について学習済みのサンプリング点811乃至813の一例を示しており、中白の円は、色値及び密度について学習途中の状態のサンプリング点821乃至823の一例を示している。
【】
S607における学習処理において、まず、学習空間301内のサンプリング点811乃至813の色値と密度とが、基準フレームに基づく学習の結果として得られた学習済みのNeRF311を用いて算出される。続いて、学習空間302内のサンプリング点821乃至823の色値と密度とが、学習途中のNeRF312を用いて算出される。続いて、サンプリング点811乃至813及び821乃至823において算出された色値と密度とを積算することによりボリュームレンダリングが行われる。これにより、これらのサンプリング点811乃至813及び821乃至823を通る光線に対応する画素の値(画素値)が算出される。最後に、学習済みのNeRF311の重みを保持したまま、当該画素値と撮像画像における当該画素に対応する画素の値との誤差をNeRF312にフィードバックすることにより、NeRF312の重みパラメータが更新される。以上のようにして、学習部404は、S607における学習処理において、学習済みの学習空間301に割り当てられている学習済みのNeRF311の重みパラメータを流用した学習を行う。
【】
次に、学習済みのサンプリング点の色値と密度とが学習済みのNeRFの特徴量として割り当てられる場合について説明する。学習空間302内のサンプリング点821乃至823の色値と密度とが学習中のNeRF312を用いて算出される。続いて、サンプリング点811乃至813及び821乃至823の色値と密度とを積算することによりボリュームレンダリングが行われる。これにより、これらのサンプリング点811乃至813及び821乃至823を通る光線に対応する画素の値(画素値)が算出される。最後に、当該画素値と撮像画像における当該画素に対応する画素の値との誤差をNeRF312にフィードバックすることにより、NeRF312の重みパラメータが更新される。以上のようにして、学習部404は、学習済みの学習空間301に割り当てられている学習済みのNeRF311の特徴量である色値及び密度を流用した学習を行う。
【】
次に、学習済みのサンプリング点の色値及び密度の積算値が学習済みのNeRFの特徴量として割り当てられる場合について説明する。まず、学習空間302のサンプリング点821乃至823の色値と密度とが学習中のNeRF312を用いて算出される。続いて、サンプリング点811乃至813の色値及び密度の積算値として基準フレームに基づく学習の結果として得られた学習済みの色値及び密度の積算値が割り当てられた状態において、サンプリング点821乃至823の色値及び密度を積算する。これによりボリュームレンダリングが行われ、サンプリング点811乃至813及び821乃至823を通る光線に対応する画素の値(画素値)が算出される。最後に、当該画素値と撮像画像における当該画素に対応する画素の値との誤差をNeRF312にフィードバックすることにより、NeRF312の重みパラメータが更新される。以上のようにして、学習部404は、学習済みの学習空間301に割り当てられている学習済みのNeRF311の特徴量である色値及び密度の積算値を流用した学習を行う。
【】
また、学習済みの学習空間と学習途中の学習空間の位置関係により、学習処理の内容は変更され得る。例えば、学習済みの学習空間が学習途中の学習空間よりも撮像位置に近い場合、学習部404は、以下のような処理を実行してもよい。この場合、学習部404は、まず、各光線に対応する学習済みの学習空間に割り当てられている特徴量のうち、密度の積算値を示す特徴量を参照する。ある光線に対応する学習済みの密度の積算値が所与の閾値以上である場合、学習部404は、学習途中の学習空間に割り当てられているNeRFの学習を省略し得る。ここで、ある光線に対応する学習済みの密度の積算値が所与の閾値以上である場合とは、例えば、当該光線が通る経路において学習済みの学習空間に存在するオブジェクトが透明又は半透明ではない場合である。
【】
これに対して、例えば、学習途中の学習空間が、学習済みの学習空間よりも撮像位置に近い場合、学習部404は、以下のような処理を実行してもよい。この場合、学習部404は、まず、各光線に対応する学習途中の学習空間の密度の積算値を算出する。ある光線に対応する当該積算値が所与の閾値以上である場合、学習部404は、学習途中の学習空間に割り当てられているNeRFのみを用いてボリュームレンダリングを行い得る。ここで、ある光線に対応する当該積算値が所与の閾値以上である場合とは、当該光線が通る経路において学習途中の学習空間に存在するオブジェクトが透明又は半透明ではない場合である。このような処理は、撮像位置から当該光線が進む方向を見た場合に、学習済みの学習空間が、学習途中の学習空間により遮蔽されるためである。続いて、学習部404は、当該ボリュームレンダリングにより算出された画素の値と撮像画像における当該画素に対応する画素の値との誤差をNeRFにフィードバックすることにより、NeRF312の重みパラメータを更新する。
【】
一方、学習部404は、ある光線に対応する学習途中の学習空間の密度の積算値が当該閾値未満である場合、学習部404は、以下のような処理を実行してもよい。この場合、学習部404は、まず、学習途中の学習空間の密度の積算値と学習済みの学習空間の密度の積算値との和を算出する。この和が所与の閾値未満である場合、学習部404は、以下のような処理を実行する。この場合、まず、学習部404は、学習途中の学習空間の色値及び密度の積算値を算出し、当該積算値と、学習済みの学習空間に割り当てられた学習済みの色値及び密度の積算値との和を算出する。続いて、学習部404は、当該和の値と撮像画像の画素値との誤差をNeRFにフィードバックすることにより、NeRF312の重みパラメータを更新する。
【】
学習途中の学習空間の密度の積算値と学習済みの学習空間の密度の積算値との和が閾値以上である場合、学習部404は、以下のような処理を実行してもよい。この場合、まず、学習部404は、学習途中の学習空間の色値及び密度の積算値を算出する。続いて、学習部404は、当該積算値に対して、学習済みの学習空間における学習済みのサンプリング点の色値及び密度を、学習途中の学習空間に近い順に、密度の積算値が上述の閾値以上になるまで積算する。続いて、学習部404は、当該積算により得られた画素値と撮像画像の画素値との誤差をNeRFにフィードバックすることにより、NeRF312の重みパラメータを更新する。
【】
S607の後、S608にて、学習部404は、学習済み回数が既定の学習回数に達している学習空間、すなわち、学習済みの学習空間に割り当てられているNeRFの特徴量をメインメモリ202等に記憶して保持する。具体的には、S601にて学習が新たに完了する空間、及び学習が既に完了している空間が特定される。そのため、S608では、学習が新たに完了した学習空間について前述したNeRFの特徴量が保存される。ここで、NeRFの特徴量については、前述したようにNeRF自体の重みパラメータ、光線ごとのサンプリング点の色値及び密度等が挙げられる。なお、学習が既に完了している学習空間についてはNeRFの特徴量を保存し直す必要はない。しかしながら、光線ごとにNeRFの特徴量が保存される場合、学習済みの学習空間であっても、いずれかの光線に関する特徴量が保存されていない場合がある。そのような場合には、S607の処理に用いられた光線に関する特徴量が新たに保存され得る。
【】
S608の処理の後、学習部404は、S601の処理に戻って、S601にて全ての学習空間に割り当てられたNeRFについて既定の学習回数の学習処理が実行されていると判定されるまで、
図6に示すフローチャートの処理を繰り返し実行する。
【】
なお、本実施形態では、一例として、推定されたオブジェクトの三次元形状を画像平面に逆射影し、画像平面におけるオブジェクトに対応する領域の大きさに基づいて学習回数を設定する態様について説明した。しかしながら、学習回数の設定方法はこれに限定されるものではない。例えば、学習回数は、推定されたオブジェクトの三次元形状の、各撮像位置からの距離に応じて設定されてもよい。具体的には、例えば、設定部403は、仮想視点の位置、及び仮想視点における視線の方向に対して最も近い位置に存在するオブジェクトを重要度が高いものとして、そのオブジェクトが存在する学習空間の学習回数を多く設定してもよい。また、例えば、設定部403は、推定されたオブジェクトの三次元形状の体積を学習回数を設定する指標として用いてもよく、上述の各撮像位置からの距離とオブジェクトの三次元形状の体積とを組み合わせて学習回数を設定する指標として用いてもよい。
【】
また、本実施形態では、一例として、学習空間ごとに学習回数を設定する態様について説明したが、学習回数は、光線ごとに設定されてもよい。具体的には、例えば、ある学習空間における学習回数を各光線に対して3回等の所定の回数として、全ての光線についての学習が所定の回数ずつ行われた場合に、当該学習空間の学習を完了したとしてもよい。この場合、S602にて、学習部404は、残りの学習回数が多い光線を優先して選択してもよい。
【】
<画像処理装置が奏する効果>
上述したように、本実施形態では、学習空間ごとに学習回数を設定し、学習済みの学習空間に割り当てられているNeRFの特徴量を、学習途中の学習空間の学習を行う場合に流用するように画像処理装置102を構成した。このような画像処理装置102によれば、三次元場の推定に要する演算量を削減することができる。
【】
[実施形態2]
実施形態1に係る画像処理装置102は、各学習空間の重要度に基づいて学習空間ごとに学習回数を設定し、学習済みの学習空間のNeRFの学習結果を学習途中の学習空間の学習に流用するものであった。実施形態2では、各学習空間の学習の完了をNeRFの学習の収束度に基づいて判定する態様について説明する。なお、実施形態2に係る撮像システムの構成及び画像処理装置の構成については、実施形態1と同様であるため、以下、同一の構成については、
図1、2、又は4に付した符号を用いて説明する。
【】
<画像処理装置の動作>
図9は、実施形態2に係る画像処理装置102の処理フローの一例を示すフローチャートである。以下、画像処理装置102の動作について、
図4に示すブロック図、及び
図9に示すフローチャートを参照して詳細に説明する。なお、
図9に示すフローチャートの説明において、
図5に示す処理ステップと同様の処理を行う処理ステップについては、
図5に付した符号を用いて説明を省略する。
図9のフローチャートに示す一連の処理ステップは、CPU201が、所定のプログラムを記憶デバイス203から読み出してメインメモリ202に展開し、これをCPU201が実行することにより実現される。
【】
まず、画像処理装置102は、S501からS503までの処理を実行する。S503の後、S904にて、学習部404は、各学習空間に割り当てられているNeRFの学習の収束を判定しながら学習処理を実行する。S904の処理の詳細については後述する。S904の後、画像処理装置102は、S507及びS508の処理を実行し、S508の後、
図9に示すフローチャートの処理を終了する。
【】
<学習処理について>
図10は、実施形態2に係る学習部404における学習処理の流れ、すなわち、
図9に示すS904の処理の詳細な流れの一例を示すフローチャートである。
図10に示すフローチャートを用いて、学習部404における学習処理、すなわち、本実施形態に係る放射輝度場の推定方法について説明する。なお、
図10に示すフローチャートの説明において、
図6に示す処理ステップと同様の処理を行う処理ステップについては、
図6に付した符号を用いて説明を省略する。
図10に示すフローチャートの処理は、
図9に示すS503の処理の後に実行される。
【】
まず、S1001にて、学習部404は、全ての学習空間に割り当てられているNeRFについて、学習が収束しているか否かを判定する。S1001にて全ての学習空間に割り当てられているNeRFの学習が収束していると判定された場合、学習部404は、
図10に示すフローチャートの処理、すなわち、
図9に示すS904の処理を終了する。S1001にて少なくとも1つの学習空間に割り当てられたNeRFの学習が収束していないと判定された場合、学習部404は、S602及びS603の処理を実行する。なお、各学習空間に割り当てられているNeRFの学習が収束しているか否かの判定処理は、S1007にて行われる。したがって、繰り返しの処理における最初のS1001の処理においては、全ての学習空間に割り当てられているNeRFの学習は何れも収束していないと判定される。
【】
S603の処理の後、S1004にて、学習部404は、S603にて特定された通過学習空間にNeRFの学習が収束した学習空間が含まれるか否かを判定する。S1004にて通過学習空間にNeRFの学習が収束した学習空間が含まれると判定された場合、学習部404は、S1005の処理を実行し、そうでない場合、学習部404は、後述するS1007の処理を実行する。
【】
S1005にて、学習部404は、通過学習空間に含まれるNeRFの学習が収束した学習空間について、保持されているNeRFの特徴量が存在するか否かを判定する。NeRFの特徴量の具体的な説明については、実施形態1にて上述したため説明を省略する。S1005にて学習が収束した学習空間について保持されているNeRFの特徴量が存在すると判定された場合は、学習部404は、S1006の処理を実行し、そうでない場合は、後述するS1007の処理を実行する。S1006にて、学習部404は、学習が収束した学習空間に対して、保持されているNeRFの特徴量を割り当てる。NeRFの特徴量の割り当て方法は、実施形態1に係る割り当て方法と同様であるため説明を省略する。S1006の処理の後、学習部404は、S1007の処理を実行する。
【】
S1007にて、学習部404は、学習が収束していない学習空間に割り当てられているNeRFの学習処理を実行する。S1007の処理において、学習が収束している空間に関しては、保持されているNeRFの特徴量を流用した学習が行われるため、当該NeRFの重みパラメータの更新は行わない。保持されているNeRFの特徴量を利用する学習方法は、実施形態1にて上述したため説明を省略する。S1007の後、S1008にて、学習部404は、学習が収束した学習空間に割り当てられているNeRFの特徴量をメインメモリ202等に記憶して保持する。各学習空間に割り当てられているNeRFの学習が収束しているか否かの特定方法としては、例えば、学習におけるロスの減少量に基づく方法がある。例えば、i(iは1以上の整数)回目の学習処理において算出されるロスLiは、例えば、以下の数式(5)を用いて算出され得る。
【】
【】
ここで、Ci(k,r,w,h)は、i(iは1以上の整数)回目の学習処理において、例えば、数式(1)を用いたボリュームレンダリングによって算出される特徴量であり、C´(k,r,w,h)は、対応する撮像画像の画素値である。NeRFの学習が収束しているか否かの特定処理は、例えば、以下の数式(6)のように、ロスLiの減少量を所与の閾値Mth,Lとを比較することにより行われ得る。
【】
【】
例えば、学習部404は、数式(6)を満たす場合、数式(5)の特徴量Ci(k,r,w,h)を算出するために用いたNeRFの学習が収束したと特定する。また、NeRFの学習が収束しているか否かの特定は、学習空間ごとに行われてもよい。例えば、ある学習空間dにおけるi回目の学習処理におけるNeRFの各ノードの重みパラメータをNd,iとすると、NeRFの学習が収束しているか否かの特定処理は、例えば、以下の数式(7)を用いて行われ得る。
【】
【】
ここで、左辺は、重みパラメータをNd,iの減少量を表し、右辺は、所与の閾値Mth,Nである。なお、上述の数式(6)及び(7)の右辺の閾値Mth,Nは、例えば、設定部403により設定され得る。例えば、学習部404は、数式(7)を満たす学習空間について、割り当てられているNeRFの学習が収束したと特定する。
【】
以上のように、学習部404は、一例として示す数式(6)又は(7)等を用いて、NeRFの学習の収束を特定することができる。このような処理により、各学習空間は、繰り返し学習処理における前の学習処理までにNeRFの学習が既に収束した学習空間、新たにNeRFの学習が収束した学習空間、及び未だNeRFの学習が収束していない学習空間のいずれかに分類され得る。学習部404は、S1007の処理において、新たにNeRFの学習が収束したと特定された学習空間に割り当てられているNeRFの特徴量を保存する。なお、繰り返し学習処理における前の学習処理までにNeRFの学習が既に収束していた学習空間についてはNeRFの特徴量を保存し直す必要はない。しかしながら、光線ごとにNeRFの特徴量を保存される場合、NeRFの学習が既に収束していた学習空間であっても、いずれかの光線に関する特徴量が保存されていない場合がある。そのような場合には、S1007の処理に用いられた光線に関する特徴量が新たに保存され得る。
【】
S1008の処理の後、学習部404は、S1001の処理に戻って、S1001にて全ての学習空間に割り当てられたNeRFについて学習が収束したと判定されるまで、
図10に示すフローチャートの処理を繰り返し実行する。
【】
<画像処理装置が奏する効果>
上述したように、本実施形態では学習空間に割り当てられているNeRFの学習が収束したことを学習空間ごとに特定し、学習が収束していないNeRFの学習を行う場合に学習が収束しているNeRFの特徴量を流用するように画像処理装置102を構成した。このような画像処理装置102によれば、三次元場の推定に要する演算量を削減することができる。
【】
[その他の実施形態]
本開示の技術は、上述の実施形態の1つ以上の機能を実現するプログラムをネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1つ以上の機能を実現するASIC等の処理ハードウェアによっても実現可能である。
【】
なお、本開示の技術は、その開示の範囲内において、各実施形態の自由な組み合わせ、各実施形態の任意の構成要素の変形、又は、各実施形態において任意の構成要素の省略が可能である。
【】
[本開示の技術的特徴]
本開示は、以下の構成、方法、及びプログラムを含む。
【】
(構成1)
学習対象の三次元空間を複数の方向から撮像することにより得られた複数の撮像画像を取得する画像取得手段と、
前記三次元空間に複数の学習空間を設定し、前記学習空間ごとに前記学習空間の三次元場を推定に用いる学習モデルを割り当てて、前記学習空間ごとに割り当てられた学習モデルの学習の終了条件を設定する設定手段と、
前記終了条件に基づいて、前記学習空間ごとに割り当てられた学習モデルの学習を前記複数の撮像画像を用いて行うことにより前記三次元場を推定する学習手段と、
を有し、
前記学習手段は、前記学習空間ごとに割り当てられた学習モデルに、前記終了条件を満たしている学習済みの学習モデルと前記終了条件を満たしていない学習途中の学習モデルとが含まれる場合に、前記学習済みの学習モデルが割り当てられた前記学習空間については前記学習済みの学習モデルに関する特徴量を用いて前記学習途中の学習モデルの学習を行うこと、
を特徴とする画像処理装置。
【】
(構成2)
前記設定手段は、前記終了条件として、前記学習空間ごとに割り当てられた学習モデルについて学習モデルごとに学習回数を設定すること、
を特徴とする構成1に記載の画像処理装置。
【】
(構成3)
前記設定手段は、前記終了条件として、前記学習空間ごとに割り当てられた学習モデルについて、光線ごとに学習回数を設定すること、
を特徴とする構成1又は2に記載の画像処理装置。
【】
(構成4)
前記設定手段は、前記学習空間に存在するオブジェクトの種類に応じて前記学習回数を設定すること、
を特徴とする構成2又は3に記載の画像処理装置。
【】
(構成5)
前記設定手段は、前記学習空間に存在するオブジェクトの大きさに応じて前記学習回数を設定すること、
を特徴とする構成2乃至4のいずれか1つに記載の画像処理装置。
【】
(構成6)
前記設定手段は、前記学習空間に存在するオブジェクトの三次元形状の複雑度に応じて前記学習回数を設定すること、
を特徴とする構成2乃至5のいずれか1つに記載の画像処理装置。
【】
(構成7)
前記設定手段は、任意の仮想的な視点の位置、前記視点における視線の方向、及び前記視点における視野角に応じて前記学習回数を設定すること、
を特徴とする構成2乃至6のいずれか1つに記載の画像処理装置。
【】
(構成8)
前記設定手段は、前記終了条件として、前記学習空間ごとに割り当てられた学習モデルについて学習モデルごとに学習の収束条件を設定すること、
を特徴とする構成1乃至7のいずれか1つに記載の画像処理装置。
【】
(構成9)
前記収束条件は、前記学習空間ごとに割り当てられた学習モデルに関する特徴量、及び前記学習空間ごとに割り当てられた学習モデルの出力値のロスの少なくともいずれかの変化量に対する閾値であること、
を特徴とする構成8に記載の画像処理装置。
【】
(構成10)
前記学習モデルに関する特徴量は、前記学習空間の位置における色と、密度、透明度、及び不透明度の少なくともいずれかを表す値であること、
を特徴とする構成1乃至9のいずれか1つに記載の画像処理装置。
【】
(構成11)
前記学習モデルに関する特徴量は、前記学習空間ごとに割り当てられた前記学習モデルのパラメータであること、
を特徴とする構成1乃至10のいずれか1つに記載の画像処理装置。
【】
(構成12)
前記学習モデルに関する特徴量は、前記学習空間ごとに割り当てられた前記学習モデルを用いたボリュームレンダリングにより得られる値であること、
を特徴とする構成1乃至11のいずれか1つに記載の画像処理装置。
【】
(構成13)
前記学習空間ごとに割り当てられた前記学習モデルは、ニューラルネットワーク、グリッド、及び関数分布の少なくともいずれかにより構成されたものであること、
を特徴とする構成1乃至12のいずれか1つに記載の画像処理装置。
【】
(構成14)
前記設定手段は、前記三次元空間に存在するオブジェクトの位置に基づいて、前記複数の学習空間を設定すること、
を特徴とする構成1乃至13のいずれか1つに記載の画像処理装置。
【】
(構成15)
前記学習済みの学習モデルを用いたボリュームレンダリングを行う描画手段、
を更に有すること、
を特徴とする構成1乃至14のいずれか1つに記載の画像処理装置。
【】
(方法)
学習対象の三次元空間を複数の方向から撮像することにより得られた複数の撮像画像を取得する画像取得工程と、
前記三次元空間に複数の学習空間を設定し、前記学習空間ごとに前記学習空間の三次元場を推定に用いる学習モデルを割り当てて、前記学習空間ごとに割り当てられた学習モデルの学習の終了条件を設定する設定工程と、
前記終了条件に基づいて、前記学習空間ごとに割り当てられた学習モデルの学習を前記複数の撮像画像を用いて行うことにより前記三次元場を推定する学習工程と、
を有し、
前記学習工程は、前記学習空間ごとに割り当てられた学習モデルに、前記終了条件を満たしている学習済みの学習モデルと前記終了条件を満たしていない学習途中の学習モデルとが含まれる場合に、前記学習済みの学習モデルが割り当てられた前記学習空間については前記学習済みの学習モデルに関する特徴量を用いて前記学習途中の学習モデルの学習を行うこと、
を特徴とする画像処理方法。
【】
(プログラム)
コンピュータを構成1乃至15のいずれか1つに記載の画像処理装置として機能させるためのプログラム。
【符号の説明】
【】
102 画像処理装置
402 画像取得部
403 設定部
404 学習部
【図】
【図】
【図】
【図】
【図】
【図】
【図】
【図】
【図】
【図】