(57)【要約】      （修正有）【課題】高精度なデプスマップを取得することのできる画像処理方法を提供する。【解決手段】撮像装置において、画像処理部は、被写体空間の奥行分布に関する第１の情報を取得する第１の工程と、参照情報を取得する第２の工程と、多層のニューラルネットワークと第１の情報と参照情報とを用いて被写体空間のデプスマップを算出する第３の工程とを含む画像処理を行う。参照情報は、撮影画像と、信頼度マップと、ラベルマップと、の少なくとも１つを含む。【選択図】図３
2019016275.tif 000002
【特許請求の範囲】
【請求項１】
被写体空間の奥行分布に関する第１の情報を取得する第１の工程と、
前記被写体空間に存在する被写体の特性に関する第２の情報と、前記第１の情報の信頼度を示す第３の情報と、前記被写体空間を撮影することにより得られた撮影画像と、のうちの少なくとも一つ含む参照情報を取得する第２の工程と、
多層のニューラルネットワークと前記第１の情報と前記参照情報とを用いて前記被写体空間のデプスマップを算出する第３の工程と、
を有することを特徴とする画像処理方法。
【請求項２】
前記第１の情報は、前記被写体空間を複数の視点から撮影した複数の撮影画像を用いて算出された情報であることを特徴とする請求項１に記載の画像処理方法。
【請求項３】
前記参照情報は前記被写体空間を複数の視点から撮影した複数の撮影画像を含むことを特徴とする請求項１または２に記載の画像処理方法。
【請求項４】
前記第３の工程において、前記複数の撮影画像のそれぞれにおける一部の領域を用いて、前記被写体空間のデプスマップを算出することを特徴とする請求項３に記載の画像処理方法。
【請求項５】
前記第１の情報は、合焦位置を異ならせて前記被写体空間を撮影した複数の撮影画像を用いて算出された情報であることを特徴とする請求項１に記載の画像処理方法。
【請求項６】
前記第１の情報は、光学系のＦ値を異ならせて前記被写体空間を撮影した複数の撮影画像を用いて算出された情報であることを特徴とする請求項１に記載の画像処理方法。
【請求項７】
前記第１の情報は、アクティブステレオ方式またはＴＯＦ方式によって取得された情報であることを特徴とする請求項１に記載の画像処理方法。
【請求項８】
前記第１の情報は、前記被写体空間のデプスマップであることを特徴とする請求項１乃至７のいずれか一項に記載の画像処理方法。
【請求項９】
前記参照情報は前記第２の情報を含み、
前記第３の工程において、前記第２の情報に基づいて定められた前記被写体空間の一部の領域に対する前記第１の情報を用いて前記被写体空間のデプスマップを算出することを特徴とする請求項１乃至８のいずれか一項に記載の画像処理方法。
【請求項１０】
前記参照情報は前記第２の情報を含み、
前記被写体の特性は、材質と、反射特性と、透過特性の少なくとも１つを含むことを特徴とする請求項１乃至９のいずれか一項に記載の画像処理方法。
【請求項１１】
前記参照情報は前記第３の情報を含み、
前記第３の工程において、前記第３の情報に基づいて定められた前記被写体空間の一部の領域に対する前記第１の情報を用いて前記被写体空間のデプスマップを算出することを特徴とする請求項１乃至１０のいずれか一項に記載の画像処理方法。
【請求項１２】
前記第３の工程は、予め学習された学習情報を用いて行われることを特徴とする請求項１乃至１１のいずれか一項に記載の画像処理方法。
【請求項１３】
前記学習情報は、前記被写体空間とは異なる被写体空間における奥行分布に関する情報を用いて学習された情報であることを特徴とする請求項１２に記載の画像処理方法。
【請求項１４】
前記参照情報は前記撮影画像を含み、
前記学習情報は、前記撮影画像を取得する際の撮影条件と同じ撮影条件で撮影された複数の画像を用いて学習された情報であることを特徴とする請求項１２または１３に記載の画像処理方法。
【請求項１５】
前記参照情報は前記撮影画像を含み、
前記学習情報は、複数の撮影条件で撮影された複数の画像を用いて学習された情報であることを特徴とする請求項１２または１３に記載の画像処理方法。
【請求項１６】
請求項１乃至１５のいずれか一項に記載の画像処理方法をコンピュータに実行させることを特徴とする画像処理プログラム。
【請求項１７】
請求項１６に記載の画像処理プログラムを記憶していることを特徴とする記憶媒体。
【請求項１８】
被写体空間の奥行分布に関する第１の情報を取得する第１の算出手段と、
前記被写体空間に存在する被写体の特性に応じて前記被写体空間をラベリングした第２の情報と、前記第１の情報の信頼度を示す第３の情報と、前記被写体空間を撮影した撮影画像と、のうちの少なくとも１つ含む参照情報を取得する取得手段と、
多層のニューラルネットワークと前記第１の情報と前記参照情報とを用いて前記被写体空間のデプスマップを算出する第２の算出手段と、
を有することを特徴とする画像処理装置。
【請求項１９】
光学像を光電変換して画像を出力する撮像部と、請求項１８に記載の画像処理装置を有することを特徴とする撮像装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デプスマップを取得するための画像処理方法に関する。
【背景技術】
【０００２】
画像に対するボケ付加処理や車両の自動運転制御を行うために、被写体空間のデプスマップを高精度に取得することが望まれている。
【０００３】
特許文献１には、多視点画像におけるオクルージョン領域の奥行情報を、オクルージョン領域と同等の特徴を有する非オクルージョン領域の奥行情報を用いて算出することが記載されている。このとき、オクルージョン領域の特徴としては色やテクスチャが用いられることが開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１１−０６０２１６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１では非オクルージョン領域の奥行情報を用いているため、全体がオクルージョン領域に含まれる被写体の奥行情報を正しく求めることができない。また、オクルージョン領域と同等の特徴を有するが奥行が異なる非オクルージョン領域が存在する場合、オクルージョン領域の奥行情報を正しく求めることができない。
【０００６】
本発明の目的は、高精度なデプスマップを取得することのできる画像処理方法を提供することである。
【課題を解決するための手段】
【０００７】
本発明の画像処理方法は、被写体空間の奥行分布に関する第１の情報を取得する第１の工程と、前記被写体空間に存在する被写体の特性に関する第２の情報と、前記第１の情報の信頼度を示す第３の情報と、前記被写体空間を撮影することにより得られた撮影画像と、のうちの少なくとも一つ含む参照情報を取得する第２の工程と、多層のニューラルネットワークと前記第１の情報と前記参照情報とを用いて前記被写体空間のデプスマップを算出する第３の工程と、を有することを特徴とする。
【発明の効果】
【０００８】
本発明によれば、高精度なデプスマップを取得することのできる画像処理方法を実現できる。
【図面の簡単な説明】
【０００９】
【図１】実施例１の撮像装置の概略図である。
【図２】実施例１の撮像装置の撮像部の概略図である。
【図３】実施例１の撮像装置の画像処理部において行われる処理を説明するフローチャートである。
【図４】多層のニューラルネットワークの概略図である。
【図５】学習情報を取得するための処理を説明するフローチャートである。
【図６】ボケ像の強度分布を説明する図である。
【図７】実施例２の画像処理システムの概略図である。
【図８】実施例２の画像処理システムで行われる処理を説明するフローチャートである。
【図９】実施例３の撮像装置の概略図である。
【発明を実施するための形態】
【００１０】
以下、本発明の実施形態について、図面を参照しながら説明する。
【００１１】
後述する各実施例では、多層のニューラルネットワークを用いて高精度なデプスマップを得ている。多視点画像などから求めた被写体空間の奥行分布に関する第１の情報と、第１の情報に含まれる破綻部を補完するための参照情報と、を多層のニューラルネットワークに入力することで被写体空間のデプスマップを得る。参照情報とは、被写体空間に存在する被写体の特性に応じて被写体空間をラベリングした情報である第２の情報と、第１の情報の信頼度を示す情報である第３の情報と、被写体空間を撮影した撮影画像と、のうちの少なくとも１つ含む情報である。なお破綻部とは、実際の奥行からの誤差が大きくなってしまった部分やオクルージョン等の影響で奥行分布に関する情報が欠損してしまった部分を言う。
【００１２】
第１の情報を参照情報と共にニューラルネットワークに入力することで、第１の情報の破綻部における奥行分布を高精度に推定でき、被写体空間のデプスマップを高精度に取得することができる。
【００１３】
［実施例１］
まず、本発明の撮像装置に関する実施例について説明する。本実施例では、第１の情報として被写体空間を多視点から撮像して得られた多視点画像から得られた第１のデプスマップを用いる。また、本実施例では参照情報として被写体空間を撮影した撮影画像を用いる。
【００１４】
本実施例の撮像装置１００のシステム構成を図１（ａ）に示す。また、撮像装置１００の外観図を図１（ｂ）に示す。撮像装置１００は、被写体空間の光学像を光電変換し、撮影画像として取得する撮像部１０１を有している。撮像部１０１は、被写体空間から入射する光を集光する光学系１０１ａと、複数の画素を有する撮像素子１０１ｂを有している。撮像素子１０１ｂとしては、ＣＣＤ（Ｃｈａｒｇｅ  Ｃｏｕｐｌｅｄ  Ｄｅｖｉｃｅ）センサや、ＣＭＯＳ（Ｃｏｍｐｌｅｍｅｎｔａｒｙ  Ｍｅｔａｌ−Ｏｘｉｄｅ  Ｓｅｍｉｃｏｎｄｕｃｔｏｒ）センサなどを用いることができる。撮像部１０１は、後述のように、多視点画像を取得できるように構成されている。
【００１５】
撮像部１０１で取得された撮影画像は、画像処理部１０２に入力される。画像処理部１０２は、学習部１０２ａ、第１の算出部１０２ｂ、第２の算出部１０２ｃを有する。第１の算出部１０２ｂは、多視点画像である複数の撮影画像の視差情報を用いて被写体空間の奥行分布を表す第１のデプスマップを生成する。第１のデプスマップにはオクルージョンなどの影響により奥行分布に破綻を生じた破綻部が含まれている場合がある。第２の算出部１０２ｃは、学習部１０２ａによって予め学習された学習情報を記憶部１０３から読み出し、第１のデプスマップよりも高精度な第２のデプスマップを算出する。
【００１６】
記憶部１０３は、予め学習された学習情報の他に、画像処理部１０２で行われる画像処理プログラムや撮像装置の制御に必要な各種情報を記憶している。
【００１７】
第２の算出部１０２ｃによって算出された第２のデプスマップは、撮影画像と合わせて記録媒体１０５に保存される。
【００１８】
表示部１０４には、第２のデプスマップを用いた画像処理を施された撮影画像が表示される。第２のデプスマップを用いた画像処理としては、例えばぼけ付加処理がある。以上の一連の制御は、システムコントローラ１０６によって行われる。
【００１９】
本実施例における撮像部１０１の構成を図２に示す。図２に示す構成は一般にＰｌｅｎｏｐｔｉｃ１．０構成と呼ばれる。図２において軸上光束を一点鎖線で表している。
【００２０】
撮像素子１０１ｂは、マイクロレンズアレイ１２２と、複数の画素１２１を有する。マイクロレンズアレイ１２２は、光学系１０１ａを介して被写体面１２０と共役になる位置に配置される。マイクロレンズアレイ１２２を構成する各マイクロレンズにはそれぞれ複数の画素が対応付けられている。これによって光学系１０１ａの瞳を分割して露光することができ、多視点画像を取得することができる。本実施例では１つのマイクロレンズに対して４つの画素が配列されており、撮像部１０１は多視点画像としてそれぞれ異なる視点から被写体空間を撮影した４枚の画像を一度に取得することができる。
【００２１】
次に、第２の算出部１０２ｃにおける処理に関して図３を用いて説明する。
【００２２】
図３は、第２の算出部１０２ｃで行われる処理に関するフローチャートである。図３において、「Ｓ」はステップ（工程）を表す。これは以下の説明でも同様である。
【００２３】
まずＳ１０１では、多視点画像と、学習情報と、第１のデプスマップと、を取得する。学習情報とは、入力画像と第２のデプスマップを結びつけるために予め学習された情報である。
【００２４】
Ｓ１０２では、第２の算出部１０２ｃがニューラルネットワークに入力する入力データを選択する。本実施例における入力データは、第１のデプスマップと撮影画像である。撮影画像は多視点画像のうちの１つの視点の画像でもよいし、複数の視点の画像でも良い。
【００２５】
撮影画像として複数の視点の画像を用いる場合、それぞれの視点の画像から一部の領域（以下、部分領域と称する）を切り出して入力することが好ましい。これによって入力データのサイズを小さくすることができ、第２の算出部１０２ｃの計算負荷を低減することができる。この場合、各部分領域は被写体空間における同一の位置を含むように切り出される。ただし、各視点の画像から切り出した各領域のサイズは同一でなくてもよい。撮影画像として複数の視点の画像を用いる場合、視差から被写体空間の奥行分布を見積もることができるため、部分領域のサイズが小さくても高精度に第２のデプスマップを算出することができる。
【００２６】
一方、撮影画像として１つの視点の画像のみを用いる場合は、構図など非局所的な特徴から被写体空間の奥行分布を推定するため、ある程度の画像サイズを有していることが望ましい。したがって、撮影画像として１つの視点の画像のみを用いる場合、撮影画像から部分領域を切り出さずにそのまま入力すると良い。
【００２７】
また、第１のデプスマップについては、一部の領域を抽出して入力しても良いし、全体を入力しても良い。撮影画像から一部の領域を抽出して入力する場合には、第１のデプスマップから一部の領域を抽出して入力すれば良い。
【００２８】
Ｓ１０３では、第２の算出部１０２ｃが学習情報と入力データを用いて第２のデプスマップを生成する。Ｓ１０３で行われる推定の詳細に関して、図４を用いて説明する。図４は、多層のニューラルネットワークの１つであるＣｏｎｖｏｌｕｔｉｏｎａｌ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋ（ＣＮＮ）のネットワーク構造を示している。
【００２９】
ＣＮＮは、複数の層を有する。具体的には、入力データが入力される入力層と、ＣＮＮによって推定された第２のデプスマップを出力する出力層と、入力層と出力層の間に設けられた複数の中間層を有する。各中間層には、学習情報を用いて直前の層の値を線型変換および非線型変換した値が入力される。
【００３０】
ここでＣＮＮがＮ個（Ｎは３以上の整数）の層を有するとする。ｎを１からＮまでの整数とした時、ｎ番目の層を第ｎ層と称する。このとき、第１層が入力層であり第Ｎ層が出力層である。
【００３１】
第１層２０１は複数のチャンネルを有しており、第１のデプスマップと撮影画像は第１層２０１のそれぞれ別のチャンネルに入力される。撮影画像として複数の視点の画像を入力する場合には、各視点の画像はそれぞれ別のチャンネルに入力される。なお、撮影画像を入力する際、撮影画像を１つのチャンネルに入力しても良いし、ＲＧＢに分けて３つのチャンネルに入力しても良い。
【００３２】
第１層２０１に入力された入力データは、複数のフィルタ２０２それぞれとのコンボリューション（複数の線型関数による線型変換）をとられる。その後、活性化関数（Ａｃｔｉｖａｔｉｏｎ  Ｆｕｎｃｔｉｏｎ）で非線形変換されて第２層２０３に入力される。図４におけるＡＦは活性化関数を表す。
【００３３】
複数のフィルタ２０２の係数は、学習情報から決定される。学習情報はフィルタ係数そのものでもよいし、フィルタをなんらかの関数でフィッティングした際の係数でもよい。複数のフィルタ２０２に含まれる各フィルタは、入力データ２０１と同一のチャンネル数を有する３次元フィルタである（３次元目がチャンネル数を表す）。なお、各フィルタでのコンボリューションの結果に、学習情報から決定される定数を加算してもよい。
【００３４】
活性化関数に入力される値をｘとしたとき、活性化関数ｆ（ｘ）の例としては以下の式（１）乃至（３）がある。
【００３５】
【数１】
2019016275.tif 000003
【００３６】
【数２】
2019016275.tif 000004
【００３７】
【数３】
2019016275.tif 000005
【００３８】
式（１）はシグモイド関数、式（２）はハイパボリックタンジェント関数、式（３）はＲｅＬＵ（Ｒｅｃｔｉｆｉｅｄ  Ｌｉｎｅａｒ  Ｕｎｉｔ）である。式（３）中のｍａｘは、ｘと０のうち大きい方の値を出力するＭＡＸ関数である。式（１）乃至（３）は、全て単調増加関数である。
【００３９】
第２層２０３は複数のチャンネルを有しており、第２層２０３の各チャンネルには複数のフィルタ２０２に含まれる各フィルタからの出力を活性化関数ＡＦで非線形変換した結果が入力される。そのため、第２層２０３のチャンネル数は、複数のフィルタ２０２に含まれるフィルタの数と同一である。
【００４０】
次に、第２層２０３に対して、第１層２０１に対して行った処理と同様に、学習情報から決定される複数のフィルタ２０４とのコンボリューションによる線型変換と、活性化関数による非線型変換を行なう。複数のフィルタ２０４に含まれる各フィルタのチャンネル数は第２層２０３のチャンネル数と同じである。フィルタ２０４に含まれるフィルタの数、各フィルタの係数、各フィルタのサイズは、第１層２０１に対して使用するフィルタ２０２と異なる。
【００４１】
同様の演算をＮ−２回繰り返すことで、第Ｎ−１層２１０のデータを得る。最後に、第Ｎ−１層に対してフィルタ２１１を用いたコンボリューションおよび定数の加算を行い、第Ｎ層（出力層）２１２にデータを出力する。第Ｎ−１層に対して用いるフィルタ２１１および定数も、学習情報から決定される。このようにして第Ｎ層２１２に出力されたデータは、入力データから推定された高精度なデプスマップである。なお、Ｓ１０２において撮影画像および第１のデプスマップの部分領域を抽出して入力データとした場合、Ｓ２０３で推定されるデプスマップはＳ１０２で抽出された部分領域に対応した領域のデプスマップとなる。なお、第Ｎ層２１２から出力されるデプスマップのサイズは入力データのサイズと異なっていても良い。
【００４２】
本実施例のように、多層のニューラルネットワークを用いる推定方法は、ディープラーニングと呼ばれる。ディープラーニングが高い性能を発揮できる理由は、非線型変換を多層構造によって何度も行うことで、高い非線型性が得られるためである。仮に、非線型変換を担う活性化関数が存在せず、線型変換のみでネットワークが構成されていた場合、いくら多層にしてもそれと等価な単層の線型変換が存在するため、多層構造にする意味がない。ディープラーニングでは、より多くの層で構成されたニューラルネットワークを用いることで、より高い性能が得られると言われている。一般に、少なくとも３層を有するニューラルネットワークを用いる場合にディープラーニングと呼ばれる。このように構成されたディープラーニングを用いることで、第１のデプスマップの破綻部の奥行情報を高精度に推定したデプスマップを得ることができる。
【００４３】
Ｓ１０４では、第１のデプスマップのうち既定の領域の全てに対して、デプスマップの推定処理を行ったかを第２の算出部１０２ｃが判定する。既定の領域とは、例えば第１のデプスマップの全体である。既定の領域の全てに対してデプスマップの推定処理が行われていれば、Ｓ１０５へ進む。そうでなければ、ステップＳ１０２へ戻り、デプスマップの推定処理がされていない領域を抽出して入力データとする。
【００４４】
Ｓ１０５では、第２の算出部１０２ｃが第２のデプスマップを出力する。第２のデプスマップは、Ｓ１０２からＳ１０４を複数回繰り返して得られたデプスマップを合成することで生成される。ただし、Ｓ１０２で撮影画像および第１のデプスマップの部分領域を抽出しなかった場合は、第Ｎ層２１２の出力をそのまま第２のデプスマップとする。
【００４５】
以上の処理によって、第１のデプスマップから撮影画像を参照して推定した第２のデプスマップを得ることができる。
【００４６】
次に、学習情報の学習に関して、図５のフローチャートを用いて説明する。学習情報の学習は、撮像装置１００の学習部１０２ａで行なってもよいし、撮像装置１００とは別の演算装置で行なってもよい。以下の説明では、学習部１０２ａで学習を実行する場合を例に説明する。
【００４７】
図５は学習部１０２ａで行われる学習工程を示すフローチャートである。この学習工程は図３に示す第２のデプスマップの推定処理に先立って行われる。
【００４８】
Ｓ２０１では、一対以上の学習データを取得する。一対の学習データとは、任意の方法で生成された被写体空間の奥行分布を示す参照デプスマップおよび被写体空間を撮影した参照画像を含む学習用入力データと、参照デプスマップよりも高精度な被写体空間の奥行分布である学習用デプスマップである。
【００４９】
本実施例では、上述のように、特定の方法で作成した第１のデプスマップを用いて第２のデプスマップの推定処理を行う。したがって、学習用入力データは第２のデプスマップの推定処理における入力データと同条件で取得することが好ましい。すなわち、参照デプスマップは、第２のデプスマップの推定時に用いる第１のデプスマップと同様の手法によって生成されることが好ましい。デプスマップの破綻部は、デプスマップの生成方法に応じて異なるが、参照デプスマップを第１のデプスマップと同じ方法で生成することで、第１のデプスマップの破綻部を高精度に補正可能な学習情報を得ることができる。また、学習時に用いる参照画像は第２のデプスマップの推定時に用いる撮影画像と枚数および撮影条件（光学系の焦点距離、Ｆ値、撮像素子のＩＳＯ感度）を一致させることが好ましい。これによって第２のデプスマップの推定精度を向上させることができる。
【００５０】
なお、学習時に用いる参照画像は第２のデプスマップの推定時に用いる撮影画像と撮影条件（光学系の焦点距離、Ｆ値、撮像素子のＩＳＯ感度）を異ならせても良い。これによって、撮影画像を取得した際の撮影条件による第２のデプスマップの推定誤差を低減させることができ、撮影画像を取得した際の撮影条件に依らず第２のデプスマップを高精度に推定することのできる学習情報を得ることができる。
【００５１】
学習用デプスマップは、参照デプスマップの破綻部の奥行に関する情報を有するデプスマップである。学習用デプスマップの精度によって、第２の算出部１０２ｃで推定される第２のデプスマップの精度が決まる。
【００５２】
学習用入力データと学習用デプスマップは、第１のデプスマップを取得した被写体空間とは異なる他の被写体空間から得られたデプスマップを用いる。他の被写体空間は、コンピュータグラフィックス（ＣＧ）によるシミュレーションを用いた仮想的な被写体空間を含む。したがって、学習用デプスマップは、被写体空間の奥行分布を実測したりして取得したデータでも良いし、ＣＧによるシミュレーションによって取得したデータでも良い。
【００５３】
学習情報は第１のデプスマップの補正に使用するため、参照画像のいくつかには第１のデプスマップを算出する際に奥行の精度が低くなるような被写体が含まれていることが好ましい。本実施例では多視点画像から第１のデプスマップを生成するが、以下に説明するように多視点画像からデプスマップを算出する場合、金属や透明体等の被写体において奥行の精度が低くなりやすい。また、被写体の境界など奥行が不連続に変化する領域で奥行の精度が低くなりやすい。したがって、本実施例では参照画像には金属や透明体等の被写体や、奥行が不連続に変化する領域が含まれていることが好ましい。
【００５４】
ここで、デプスマップの生成方法による破綻部の違いについて説明する。まず、本実施例で用いられている多視点画像からデプスマップを生成する場合に関して述べる。多視点画像からデプスマップを生成する場合、異なる視点の画像間における視差量（異なる視点間で対応する領域がどれだけずれているか）を求める必要がある。視点間の対応する領域は、被写体が異なる視点から観察しても略同一に見えるという仮定を置くことで、視点間の相関値が高くなる領域として求まる。そのため、視点によって見え方（例えば被写体の輝度分布）が大きく変わる被写体の奥行を正しく算出することは困難である。視点によって見え方が変わる被写体としては、金属などの鏡面反射の強い被写体や、ガラスなどの透明な被写体がこれに該当する。
【００５５】
また、異なる奥行に存在する被写体間の境界も、オクルージョンや、ブロックマッチング等で推定した奥行のエッジが膨張する問題（いわゆるｅｄｇｅ  ｆａｔｔｅｎｉｎｇ  ｐｒｏｂｌｅｍ）があるため、奥行の破綻を起こしやすい。さらに、画素値の変化が小さい領域や周期的な構造を持つ被写体も、相関値が高くなる領域が複数存在するため、奥行の算出の精度が低下する。
【００５６】
Ｓ２０２では、学習データから複数の学習ペアを取得する。学習ペアは、学習用入力データと学習用部分デプス情報とからなる。学習用入力データは参照デプスマップと参照画像から取得され、サイズはステップＳ１０２における入力データと同じである。学習用部分デプス情報は、学習用デプスマップから、該領域の中心が学習用入力データと同じ被写体位置になるように取得される。学習用部分デプス情報のサイズは、ステップＳ１０２で選択される第１のデプスマップのサイズと同じである。
【００５７】
Ｓ２０３では、複数の学習ペアから、学習情報を取得する。Ｓ２０３における学習では、第２のデプスマップの推定に用いるニューラルネットワークと同じ構造のニューラルネットワークを使用する。本実施例では、図４に示したネットワーク構造に対して学習用入力データを入力し、その出力結果と学習用部分デプス情報の誤差を算出する。該誤差が最小化されるように、例えば誤差逆伝播法（Ｂａｃｋｐｒｏｐａｇａｔｉｏｎ）などを用いて、第１乃至第Ｎ−１層に対して用いられる各フィルタの係数や定数（学習情報）を最適化する。
【００５８】
各フィルタの係数および定数の初期値は乱数を用いて定めると良い。なお、各フィルタの係数と定数の初期値をＡｕｔｏ  Ｅｎｃｏｄｅｒなどのプレトレーニングを行なって定めてもよい。Ａｕｔｏ  Ｅｎｃｏｄｅｒに関しては、Ｇ．  Ｅ．  Ｈｉｎｔｏｎ  ＆  Ｒ  ．Ｒ．  Ｓａｌａｋｈｕｔｄｉｎｏｖ  （２００６−０７−２８）．  “Ｒｅｄｕｃｉｎｇ  ｔｈｅ  Ｄｉｍｅｎｓｉｏｎａｌｉｔｙ  ｏｆ  Ｄａｔａ  ｗｉｔｈ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋｓ“，  Ｓｃｉｅｎｃｅ  ３１３（５７８６）：  ５０４−５０７．を参照すると良い。
【００５９】
取得した学習ペアを全てネットワーク構造へ入力し、それら全ての情報を使って学習情報を更新する学習方法をバッチ学習と呼ぶ。ただし、この学習方法は学習ペアの数が増えるにつれて、計算負荷が膨大になってしまう欠点がある。反対に、学習情報の更新に１つの学習ペアのみを使用し、更新ごとに異なる学習ペアを使用する学習方法をオンライン学習と呼ぶ。この学習方法は、学習ペアが増えても計算量が増大しない利点があるが、その代わりに１つの学習ペアに存在するノイズの影響を大きく受ける問題がある。そのため、これら２つの学習方法の中間に位置するミニバッチ法を用いて学習することが好ましい。ミニバッチ法は、全学習ペアの一部を抽出し、それらを用いて学習情報の更新を行なう。次の更新では、異なる少数の学習ペアを抽出して使用する。これを繰り返すことで、バッチ学習とオンライン学習の欠点を小さくすることができ、高い推定効果を得やすくなる。
【００６０】
Ｓ２０４では、学習された学習情報を出力する。本実施例では、学習情報は記憶部１０３に記憶される。
【００６１】
以上の処理によって、破綻の少ない高精度なデプスマップを推定することが可能な学習情報を学習することができる。
【００６２】
本実施例では、多層のニューラルネットワークの各層に前の層の出力を所定のフィルタでコンボリューションした結果が入力される例を説明したが、本発明はこれに限定されない。多層のニューラルネットワークを、公知のプーリング層、ドロップアウト層、全結合層を含んで構成しても良い。
【００６３】
また、本実施例では、多視点画像の視差情報から算出された第１のデプスマップを第１の情報として用いる例について説明したが、第１の情報はこれに限られない。第１の情報は被写体空間の距離情報に関する情報であれば良く、例えば、多視点画像から得た視差マップでも良い。この場合、多層のニューラルネットワークには、視差マップと撮影画像が入力される。ニューラルネットワークの出力としては、入力した視差マップにおける破綻部を高精度に補正した視差マップが出力される。このようにして得た視差マップを用い、視差量と奥行の関係から第２のデプスマップを算出することで、高精度なデプスマップを得ることができる。なお、ニューラルネットワークに視差マップと撮影画像を入力する場合、ニューラルネットワークが第２のデプスマップを出力するように構成しても良い。
【００６４】
ただし、画像処理部における処理負荷を低減させるためには、第１の情報は本実施例のようにデプスマップであることが好ましい。
【００６５】
また、本実施例では、第１の情報を多視点画像から求める例について説明したが、第１の情報の算出方法はこれに限られない。第１の情報は、被写体空間の奥行分布に関する情報を取得する種々の方法を用いて取得することができる。ただし、第１の情報は多視点撮影、Ｄｅｐｔｈ  ｆｒｏｍ  Ｆｏｃｕｓ（ＤＦＦ）、Ｄｅｐｔｈ  ｆｒｏｍ  Ｄｅｆｏｃｕｓ（ＤＦＤ）、光飛行時間（Ｔｉｍｅ  ｏｆ  Ｆｒｉｇｈｔ、ＴＯＦ）方式、アクティブステレオ方式のいずれかの手法で求めることが好ましい。これらの方法で被写体空間の奥行分布に関する情報を求める、特定の領域において奥行分布に破綻を生じるが、破綻を生じない領域については高精度に被写体空間の奥行分布を算出することができる。したがって、これらの方法を用いて取得した第１の情報の破綻部をニューラルネットワークで推定することで高精度なデプスマップを得ることができる。
【００６６】
ＤＦＦを用いてデプスマップを生成する場合の破綻部について説明する。ＤＦＦとは、合焦位置の異なる複数の画像の各領域において、最もコントラストの高い画像が該領域に合焦している画像と仮定することで、奥行を推定する手法である。ＤＦＦも多視点撮影と同様に、奥行の異なる被写体の境界や画素値の変化が小さい領域で奥行の推定精度が低下してしまう。またＤＦＦでは、デフォーカスによるぼけ像の強度が、図６（ａ）に示すように、なだらかに減衰するという仮定を置いている。したがって、この仮定が成り立たない場合正しいデプスを推定することが困難となる。実際の多くの光学系では、ぼけ像の強度分布は図６（ｂ）に示すように周辺にピークを持った強度分布となる。そのため、暗部に点光源が存在するようなコントラストの強いシーンでは、非合焦時に点光源のぼけ像周辺に強いエッジが生成される。ゆえに、そのエッジが合焦画像と誤判定され、破綻の原因となる。
【００６７】
次に、ＤＦＤを用いてデプスマップを生成する場合の破綻部について説明する。ＤＦＤは撮影時の合焦位置またはＦ値（瞳の大きさ）を異ならせて撮影された複数の画像（デフォーカスの異なる複数の画像）を使用する。あるデフォーカスの画像の部分領域に対して、複数のＰＳＦそれぞれとの畳み込み（或いは、逆畳み込み）を算出し、異なるデフォーカスの画像における同一位置の部分領域と相関を求める。最も相関が高くなる点像強度分布（Ｐｏｉｎｔ  Ｓｐｒｅａｄ  Ｆｕｎｃｔｉｏｎ，ＰＳＦ）から、該領域における奥行を推定することができる。ＤＦＤの場合でも、奥行の異なる被写体の境界と画素値の変化が小さい領域で奥行の推定精度が低下してしまう。また、輝度飽和している領域は被写体の情報が失われているため、異なるデフォーカスの画像と一致する畳み込み（或いは、逆畳み込み）結果が存在しない。そのため、輝度飽和が発生している領域でも奥行の推定精度が低下してしまう。
【００６８】
次に、ＴＯＦを用いてデプスマップを生成する場合の破綻部について説明する。ＴＯＦは、撮像装置から発した光が被写体に反射され、再び撮像装置まで戻ってくる時間と光速度から奥行を算出する手法である。そのため、光を透過、或いは吸収する被写体では正しく奥行を求めることができない。また、光を反射する被写体でも、鏡面反射を起こしやすい鏡面反射体では、該被写体の法線が撮像装置に対して傾いている場合、反射光が撮像装置に戻って来ないため奥行が算出できない。また、被写体間での光の相互反射もデプス取得精度の低下を招く。投射系と撮像系の組み合わせから奥行を推定するアクティブステレオ方式からデプスマップを生成する場合も、ＴＯＦと同様の被写体で破綻が生じる。被写体が鏡面反射体の場合、投射系から投射された光の反射光が撮像系に入射するような面の傾きを有する被写体しか奥行が取得できない。
【００６９】
以上のように、被写体空間の奥行分布を求める各方法には、奥行分布の算出結果に破綻を生じやすい領域があるが、多層のニューラルネットワークを用いて破綻部の奥行分布を推定することで高精度なデプスマップ（第２のデプスマップ）を得ることができる。
【００７０】
［実施例２］
次に、本発明の画像処理システムの実施例について説明する。本実施例の画像処理システムは、デプスマップを推定する画像処理装置と、撮影画像を取得する撮像装置、学習を行なうサーバーから構成されている。本実施例では、第１の情報としてＤＦＦを用いて取得した第１のデプスマップを用いる。また、本実施例では参照情報として第２の情報（ラベルマップ）または第３の情報（信頼度マップ）を用いる。
【００７１】
図７（ａ）に、本実施例の画像処理システムの構成の概略図を示す。また、本実施例の画像処理システムの外観図を図７（ｂ）に示す。撮像装置３００の構成は、撮影装置３００は、単一視点の画像を取得可能に構成されており、撮影時に合焦位置を変えながら複数回撮影することで、合焦位置が異なる複数の画像（撮影画像）を取得する。
【００７２】
撮像装置３００によって撮影された郷正一が異なる複数の撮影画像は、画像処理装置３０１に送信され、画像処理装置３０１の記憶部３０２に記憶される。画像処理装置３０１の第１の算出部３０３は、複数の撮影画像からＤＦＤまたはＤＦＦを用いて第１のデプスマップを算出する。第１の算出部３０３によって算出された第１のデプスマップは記憶部３０２に記憶される。
【００７３】
画像処理装置３０１は、サーバー３０６にネットワーク３０５を介して有線または無線で接続されている。サーバー３０６は、第１のデプスマップと参照データから第２のデプスマップを算出するための学習情報を学習する学習部３０８と、該学習情報を記憶する記憶部３０７を有している。画像処理装置３０１は、サーバー３０５の記憶部３０７から学習情報を取得し、取得した学習情報を用いて第２の算出部３０４で第２のデプスマップを推定する。
【００７４】
第２の算出部３０４で生成されたデプスマップは、モニタやプロジェクタなどの表示装置３０９、記録媒体３１０、プリンタなどの出力装置３１１の少なくとも何れかに出力される。ユーザーは表示装置３０９や出力装置３１１によって処理途中の画像を確認しながら作業を行うことができる。
【００７５】
記録媒体３１０は、例えば半導体メモリ、ハードディスク、ネットワーク上のサーバー等である。出力装置３１１は、プリンタなどである。画像処理装置３０１は、必要に応じて現像処理やその他の画像処理を行う機能を有していてよい。
【００７６】
本実施例の画像処理装置３０１において行われる処理について、図８を用いて説明する。
【００７７】
まず、Ｓ３０１で第２の算出部３０４は記憶部３０２から撮影画像を取得する。
【００７８】
Ｓ３０２では、第２の算出部３０４は記憶部３０２から第１のデプスマップと参照データを取得する。
【００７９】
ここで、前述のように本実施例における参照データはラベルマップまたは信頼度マップである。ラベルマップとは、被写体空間に存在する被写体の特性に基づいて撮影画像の各領域をラベリングした情報である。被写体の特性とは、例えば被写体の材質、被写体の透過特性、被写体の反射特性を指す。被写体の透過特性または反射特性は、例えばＳ．  Ｂｅｌｌ，  ｅｔ  ａｌ．，  “Ｍａｔｅｒｉａｌ  ｒｅｃｏｇｎｉｔｉｏｎ  ｉｎ  ｔｈｅ  ｗｉｌｄ  ｗｉｔｈ  ｔｈｅ  ｍａｔｅｒｉａｌｓ  ｉｎ  ｃｏｎｔｅｘｔ  ｄａｔａｂａｓｅ”，  Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  ＩＥＥＥ  ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  ＣＶＰＲ  （２０１５）．に記載された方法を用いることができる。これによって、ＤＦＤやＤＦＦで奥行が破綻しやすい被写体（例えば、鏡面反射によって輝度飽和を生じやすい金属）や、多視点撮影やＴＯＦ方式で推定した奥行が破綻する鏡面反射体や透明体などを判定できる。なお、信頼度マップは被写体空間の全ての被写体についてラベリングする必要はなく、奥行の破綻を生じやすい被写体とその他の被写体が分別できるようにラベリングすれば十分である。
【００８０】
また、信頼度マップとは、第１の情報としての第１のデプスマップの信頼度をマッピングした情報である。信頼度マップは、例えば第１の情報を算出する際のマッチングエラーの大きさに基づいて生成することができる。
【００８１】
Ｓ３０３では、参照データに基づいて、使用するネットワーク構造と学習情報、及び入力データのサイズを決定する。本実施例では、実施例１と同様に、図４に示したニューラルネットワークを使用してデプス情報の推定を行なう。ただし、本実施例では参照データの種類ごとに学習した学習情報を用いる。
【００８２】
まず、参照データとしてラベルマップを用いる場合について述べる。本実施例で用いるラベルマップでは第１のデプスマップにおいて破綻が生じやすい領域と破綻が生じにくい領域にそれぞれ異なるラベルが付されている。参照データとしてラベルマップを用いる場合に使用されるネットワーク構造と入力データのサイズは学習時の条件によって決まる。なお、ニューラルネットワークを用いて第２のデプスマップを推定する領域を、破綻が生じやすい領域としてラベル付けされた領域に限っても良い。すなわち、第１のデプスマップのうち、ラベルマップに基づいて定められた一部の領域に対してのみ第２のデプスマップを算出しても良い。これによって第２の算出部３０４における処理を高速化することができる。
【００８３】
参照データとして信頼度マップを用いる場合、信頼度が低い領域ほど入力データのサイズを大きくするとよい。また、入力データを抽出する際、抽出された部分領域が信頼度の高い領域を含むようにしてもよい。これによって、より精度の高い推定が可能となる。なお、なお、ニューラルネットワークを用いてデプスマップを推定する領域を信頼度マップにおける信頼度が所定の閾値より低い領域に限ってもよい。すなわち、第１のデプスマップのうち、信頼度マップに基づいて定められた一部の領域に対してのみ第２のデプスマップを算出しても良い。これによって第２の算出部３０４における処理を高速化することができる。
【００８４】
Ｓ３０４では、Ｓ３０３での決定に基づいて第１のデプスマップと参照データから入力データを取得する。
【００８５】
Ｓ３０５では、学習情報および多層のニューラルネットワークを用いて第１のデプスマップを高精度化したデプスマップを生成する。
【００８６】
Ｓ３０６では、既定の領域の全てに対してデプスマップを推定し終えたか判定する。Ｓ３０６がＹｅｓの場合Ｓ３０７へ進み、Ｎｏ場合はステップＳ３０４へ戻り既定の領域のうち第２のデプスマップが推定されていない領域を抽出して入力データとする。
【００８７】
Ｓ３０７では、複数回Ｓ３０５を行って生成された複数のデプスマップを合成して第２のデプスマップを出力する。
【００８８】
以上のような処理を行うことで、参照データとして信頼度マップまたはラベルマップを用いる場合にも、破綻の少ない高精度なデプスマップを取得することができる。
【００８９】
次に、学習部３０８が行なう学習情報の学習に関して説明する。本実施例では、前述のように参照データごとに異なる学習情報を学習する。学習方法は、実施例１と同様に、図５に示したフローチャートに従う。
【００９０】
一例として、学習データをシミュレーション（ＣＧレンダリング）によって生成する場合に関して述べる。この場合、あるデプス情報が設定されたレンダリング画像を生成し、該レンダリング画像から第１のデプスマップを取得する。レンダリング画像は第１のデプスマップで破綻が生じやすい領域および破綻が生じにくい領域を含むように構成されている。第２のデプスマップを生成する際の参照データとしてラベルマップを用いる場合は、レンダリング画像において第１のデプスマップの破綻を生じやすい領域にラベルを付けた参照ラベルマップを利用する。例えば第１のデプスマップをＤＦＤで算出する場合、被写体同士の境界部、画素値の変化の少ない平坦部、輝度飽和部、それ以外の領域で分類しラベル付けする。
【００９１】
Ｓ２０１で学習データとして、レンダリング画像から得た参照デプスマップ、参照ラベルマップ、レンダリング時の奥行に関する情報から取得した学習用デプスマップを取得する。その後、学習データに対してステップＳ２０２乃至Ｓ２０４を実行し、学習情報を得る。参照データとして信頼度マップを使用する場合も同様の手順で学習することで学習情報を得ることができる。すなわち、レンダリング画像から参照デプスマップを算出し、参照デプスマップを算出する際の信頼度を用いて参照信頼度マップを生成する。その後、学習データとして参照デプスマップ、参照信頼度マップ、学習用デプスマップを用いて学習情報を得ることができる。
【００９２】
なお、上述した実施例１および実施例２では、参照データとして撮影画像と信頼度マップとラベルマップのいずれか１つを用いる例について説明したが、本発明はこれに限定されない。参照データとして撮影画像と信頼度マップとラベルマップのうちの２つの情報を用いても良いし、全ての情報を用いても良い。撮影画像と信頼度マップとラベルマップのうち複数の情報を用いる場合、それぞれの情報は入力層２０１の異なるチャンネルに入力される。
【００９３】
［実施例３］
次に、実施例３の撮像装置について述べる。本実施例では、ＴＯＦ方式によって第１の情報としての第１のデプスマップを得る。
【００９４】
図１０に、本実施例の撮像装置４００のシステム構成図を示す。撮像装置４００は発光部４０７を有する点で実施例１の撮像装置１００と異なる。発光部４０７は撮影時に被写体に向かって近赤外光を照射する。
【００９５】
撮像素子４０１ｂは被写体で反射された近赤外光を受光する。撮像素子４０１ｂは撮影画像を取得するＲＧＢのカラー画素に加えて、近赤外光を受光して光電変換するＩＲ（Ｉｎｆｒａｒｅｄ）画素を有している。なお、カラー画素とＩＲ画素は同一の撮像素子に設ける必要はなく、カラー画素とＩＲ画素を別々の撮像素子に設けても良い。この場合、光学系４０１ａを通過した光をハーフミラーで可視光と近赤外光に分割することで、可視光と近赤外光を別々の撮像素子に受光させることができる。
【００９６】
第１の算出部４０２ｂは、ＩＲ画素の出力信号から第１のデプスマップを算出する。第２の算出部４０２ｃは、第１のデプスマップと参照情報を用いて第２の情報としての第２のデプスマップを算出する。なお、本実施例における参照情報はカラー画素の出力信号から得られた撮影画像でも良いし、実施例２で述べたラベルマップや信頼度マップでも良い。また、撮影画像とラベルマップと信頼度マップの複数を参照情報として用いても良い。
【００９７】
なお、本実施例では発光部４０７から近赤外光を発光し、ＴＯＦ方式によって第１のデプスマップを得る例について説明したが、発光部４０７から空間的なパターンを投射するように構成してアクティブステレオ方式で第１のデプスマップを得ても良い。
【００９８】
以上の構成により、高精度なデプスマップを推定することが可能な撮像装置を提供することができる。
【００９９】
［その他の実施例］
本発明は、上述の実施例の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【０１００】
以上、本発明の好ましい実施形態について説明したが、本発明はこれらの実施形態に限定されたものではなく、その要旨の範囲内で様々な変形、及び変更が可能である。
【符号の説明】
【０１０１】
１０２  画像処理部
１０２ｂ  第１の算出手段
１０２ｃ  第２の算出手段
【図１】
2019016275.tif 000006
【図２】
2019016275.tif 000007
【図３】
2019016275.tif 000008
【図４】
2019016275.tif 000009
【図５】
2019016275.tif 000010
【図６】
2019016275.tif 000011
【図７】
2019016275.tif 000012
【図８】
2019016275.tif 000013
【図９】
2019016275.tif 000014