(57)【要約】      （修正有）【課題】反射特性や形状の制約がない一般的な被写体において、高精度に法線情報を推定可能な画像処理方法を提供する。【解決手段】画像処理方法は、被写体空間の第１法線マップと参照データを入力データとして取得する第１工程と学習情報を取得する第２工程と入力データと学習情報に基づいて第２法線マップを推定する第３工程を有する。第１法線マップは、照度差ステレオ法またはシェイプフロムシェーディング法を用いて取得された法線マップおよび距離マップを用いて取得された法線マップのいずれかである。参照データは、被写体空間を撮影した撮影画像を含む。第３工程では、入力データに対して学習情報に基づく第ｎ線型変換および第ｎ非線型変換を整数ｎが１からＮ（≧２）になるまで実行して中間データを生成する工程と、中間データに対して学習情報に基づく第Ｎ＋１線型変換を実行する工程と、を実行することで第２法線マップを推定する。【選択図】図３
2020119333.tif 000002
【特許請求の範囲】
【請求項１】
被写体空間の第１の法線マップと参照データとを入力データとして取得する第１工程と、
あらかじめ学習された学習情報を取得する第２工程と、
前記入力データと前記学習情報とに基づいて、第２の法線マップを推定する第３工程と、を有し、
前記第１の法線マップは、照度差ステレオ法またはシェイプフロムシェーディング法を用いて取得された法線マップ、および距離マップを用いて取得された法線マップのいずれかであり、
前記参照データは、前記被写体空間を撮影した撮影画像を含み、
前記第３工程では、Ｎを２以上の整数、ｎを１からＮまでの整数とした場合、前記入力データに対して、前記学習情報に基づく第ｎの線型変換、および第ｎの非線型変換を、ｎが１からＮになるまで順に実行して中間データを生成する工程と、前記中間データに対して、前記学習情報に基づく第Ｎ＋１の線型変換を実行する工程と、が実行されることで前記第２の法線マップが推定されることを特徴とする画像処理方法。
【請求項２】
前記撮影画像は、前記被写体空間を異なる複数の光源環境下で撮影した複数の画像であることを特徴とする請求項１に記載の画像処理方法。
【請求項３】
前記第１工程では、前記第１の法線マップの部分領域と前記参照データの部分領域とが前記入力データとして取得され、
前記入力データは、前記複数の画像のそれぞれから抽出した同一位置の部分領域を含むことを特徴とする請求項２に記載の画像処理方法。
【請求項４】
前記参照データは、被写体の特性に基づいて前記撮影画像の各領域をラベル付けしたラベルマップ、前記第１の法線マップに含まれる法線情報の信頼度を表す信頼度マップ、および距離マップのうち少なくとも１つを含むことを特徴とする請求項１から３のいずれか１項に記載の画像処理方法。
【請求項５】
被写体空間の第１の法線マップと参照データとを入力データとして取得する第１工程と、
あらかじめ学習された学習情報を取得する第２工程と、
前記入力データと前記学習情報とに基づいて、第２の法線マップを推定する第３工程と、を有し、
前記参照データは、被写体の特性に基づいて前記被写体空間を撮影した撮影画像の各領域をラベル付けしたラベルマップ、前記第１の法線マップに含まれる法線情報の信頼度を表す信頼度マップ、および距離マップのうち少なくとも１つを含み、
前記第３工程では、Ｎを２以上の整数、ｎを１からＮまでの整数とした場合、前記入力データに対して、前記学習情報に基づく第ｎの線型変換、および第ｎの非線型変換を、ｎが１からＮになるまで順に実行して中間データを生成する工程と、前記中間データに対して、前記学習情報に基づく第Ｎ＋１の線型変換を実行する工程と、が実行されることで前記第２の法線マップが推定されることを特徴とする画像処理方法。
【請求項６】
前記第１工程では、前記第１の法線マップの部分領域と前記参照データの部分領域とが入力データとして取得され、
前記部分領域は、前記ラベルマップ、前記信頼度マップ、および前記距離マップのうち少なくとも１つに基づいて抽出されることを特徴とする請求項４または５に記載の画像処理方法。
【請求項７】
前記部分領域は、前記ラベルマップのうち前記第１の法線マップにおいて精度が低くなる被写体を表すラベルの領域、または前記信頼度マップの信頼度が低い領域であることを特徴とする請求項６に記載の画像処理方法。
【請求項８】
前記学習情報は、前記被写体空間とは異なる被写体空間に関する第１の法線マップおよび参照データを含む学習用入力データと、前記学習用入力データに対応する第１の法線マップとは異なる学習用法線マップに基づいて学習された情報であり、
前記学習用入力データは、前記第１の法線マップにおいて精度が低くなる被写体を含むことを特徴とする請求項１から７のいずれか１項に記載の画像処理方法。
【請求項９】
前記学習用入力データは、鏡面反射する被写体、表面の粗い被写体、金属体、透明体および半透明体のうち少なくとも１つを含むことを特徴とする請求項８に記載の画像処理方法。
【請求項１０】
前記線型変換に対応する前記学習情報は、前記参照データに基づいて決定されることを特徴とする請求項１から９のいずれか１項に記載の画像処理方法。
【請求項１１】
前記線型変換に用いられるフィルタのサイズは、前記参照データに基づいて決定されることを特徴とする請求項１０に記載の画像処理方法。
【請求項１２】
前記第１の法線マップは、照度差ステレオ法またはシェイプフロムシェーディング法に基づいて取得された法線マップであることを特徴とする請求項１から１１のいずれか１項に記載の画像処理方法。
【請求項１３】
被写体空間の第１の法線マップと参照データとを入力データとして取得するとともに、あらかじめ学習された学習情報を取得する取得部と、
前記入力データと前記学習情報とに基づいて、第２の法線マップを推定する推定部と、を有し、
前記第１の法線マップは、照度差ステレオ法またはシェイプフロムシェーディング法を用いて取得された法線マップ、および距離マップを用いて取得された法線マップのいずれかであり、
前記参照データは、前記被写体空間を撮影した撮影画像を含み、
前記推定部は、Ｎを２以上の整数、ｎを１からＮまでの整数とした場合、前記入力データに対して、前記学習情報に基づく第ｎの線型変換、および第ｎの非線型変換を、ｎが１からＮになるまで順に実行して中間データを生成する工程と、前記中間データに対して、前記学習情報に基づく第Ｎ＋１の線型変換を実行する工程と、を実行することで前記第２の法線マップを推定することを特徴とする画像処理装置。
【請求項１４】
被写体空間の第１の法線マップと参照データとを入力データとして取得するとともに、あらかじめ学習された学習情報を取得する取得部と、
前記入力データと前記学習情報とに基づいて、第２の法線マップを推定する推定部と、を有し、
前記参照データは、被写体の特性に基づいて前記被写体空間を撮影した撮影画像の各領域をラベル付けしたラベルマップ、前記第１の法線マップに含まれる法線情報の信頼度を表す信頼度マップ、および距離マップのうち少なくとも１つを含み、
前記推定部は、Ｎを２以上の整数、ｎを１からＮまでの整数とした場合、前記入力データに対して、前記学習情報に基づく第ｎの線型変換、および第ｎの非線型変換を、ｎが１からＮになるまで順に実行して中間データを生成する工程と、前記中間データに対して、前記学習情報に基づく第Ｎ＋１の線型変換を実行する工程と、を実行することで前記第２の法線マップを推定することを特徴とする画像処理装置。
【請求項１５】
前記学習情報を記憶する記憶部を更に有することを特徴とする請求項１３または１４に記載の画像処理装置。
【請求項１６】
請求項１３から１５のいずれか１項に記載の画像処理装置と、
被写体空間を撮影した撮影画像を前記画像処理装置に出力する画像出力装置と、を有することを特徴とする画像処理システム。
【請求項１７】
被写体空間の像を撮影画像として取得する撮像部と、
前記撮影画像に対して請求項１から１２のいずれか１項に記載の画像処理方法を実行する画像処理部と、を有することを特徴とする撮像装置。
【請求項１８】
請求項１から１２のいずれか１項に記載の画像処理方法をコンピュータに実行させるためのプログラム。
【請求項１９】
請求項１８に記載のプログラムを記憶したコンピュータが読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、被写体の法線情報を取得する画像処理方法、画像処理装置、画像処理システム、撮像装置、プログラム、および、記憶媒体に関する。
【背景技術】
【０００２】
デジタルカメラ等の撮像装置で被写体を撮像して得られた撮影画像から、被写体の形状情報として面法線の情報（以下、法線情報という）を取得する方法が知られている。法線情報を取得する方法としては、シェイプフロムシェーディング法や、照度差ステレオ法がある。シェイプフロムシェーディング法では、１枚の撮影画像から法線情報を推定できるが、対象物体の反射率が一様であることや被写体の形状がなめらかに変化すること等の仮定を必要とする。照度差ステレオ法は、被写体の面法線と光源方向に基づいた反射特性を仮定し、複数の光源位置での被写体の輝度情報と仮定した反射特性とから法線情報を推定する方法である。複数の光源位置で撮像した撮影画像を用いることでシェイプフロムシェーディング法よりも少ない仮定の下で法線情報を推定できる。仮定される被写体の反射特性としてはランバートの余弦則に従うランバート反射モデルが用いられることが多い。
【０００３】
一般に、物体での反射には、鏡面反射と拡散反射がある。鏡面反射は、物体表面での正反射であり、物体表面（界面）においてフレネルの式に従うフレネル反射である。拡散反射は、被写体の表面を透過した後に物体内部で散乱されて光が返ってくる反射である。鏡面反射した光は上述のランバートの余弦則では表せず、撮像装置で観測される被写体からの反射光に鏡面反射光が含まれていると、シェイプフロムシェーディング法や照度差ステレオ法では法線情報を正確に推定できない。光源からの光が当たらない陰影部においても仮定した反射モデルからのずれが生じ、法線情報を正確に推定できない。また、表面の粗い被写体や半透明体などでは拡散反射成分もランバートの余弦則からずれを生じる。さらに、相互反射が生じている場合および拡散反射成分が観測されない金属体や透明体などにおいても、法線情報を正確に推定できない。
【０００４】
特許文献１には、４つ以上の光源を使用して得られた複数の法線候補から、鏡面反射成分の影響を除いて高精度に法線情報を求める方法が開示されている。また、非特許文献１には、畳み込みニューラルネットワークを応用して１枚の撮影画像から法線情報を推定する方法が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１０−１２２１５８号公報
【非特許文献】
【０００６】
【非特許文献１】Ｄ.  Ｅｉｇｅｎ,  ｅｔ  ａｌ.  “Ｐｒｅｄｉｃｔｉｎｇ  Ｄｅｐｔｈ，  Ｓｕｒｆａｃｅ  Ｎｏｒｍａｌｓ  ａｎｄ  Ｓｅｍａｎｔｉｃ  Ｌａｂｅｌｓ  ｗｉｔｈ  ａ  Ｃｏｍｍｏｎ  Ｍｕｌｔｉ−Ｓｃａｌｅ  Ｃｏｎｖｏｌｕｔｉｏｎａｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ”，  ａｒＸｉｖ：１４１１．４７３４（２０１４）
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１に開示された方法では、鏡面反射成分の影響を受ける撮影画像が複数ある場合において法線情報を推定できない。また、陰影部が生じた場合、ランバートの余弦則からずれた反射特性を持つ被写体の場合、相互反射が生じた場合、および拡散反射成分が観測されない被写体の場合等においても法線情報を推定できない。非特許文献１に開示された方法では、法線情報を推定できないことによる破綻部は生じにくいが、照度差ステレオ法等で高精度に取得された法線マップに対して推定精度が低い。
【０００８】
本発明は、反射特性や形状の制約がない一般的な被写体において、高精度に法線情報を推定可能な画像処理方法、画像処理装置、画像処理システム、撮像装置、画像処理プログラム、および、記憶媒体を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明の一側面としての画像処理方法は、被写体空間の第１の法線マップと参照データとを入力データとして取得する第１工程と、あらかじめ学習された学習情報を取得する第２工程と、入力データと学習情報とに基づいて、第２の法線マップを推定する第３工程と、を有し、第１の法線マップは、照度差ステレオ法またはシェイプフロムシェーディング法を用いて取得された法線マップ、および距離マップを用いて取得された法線マップのいずれかであり、参照データは、被写体空間を撮影した撮影画像を含み、第３工程では、Ｎを２以上の整数、ｎを１からＮまでの整数とした場合、入力データに対して、学習情報に基づく第ｎの線型変換、および第ｎの非線型変換を、ｎが１からＮになるまで順に実行して中間データを生成する工程と、中間データに対して、学習情報に基づく第Ｎ＋１の線型変換を実行する工程と、が実行されることで第２の法線マップが推定されることを特徴とする。
【００１０】
本発明の他の側面としての画像処理方法は、被写体空間の第１の法線マップと参照データとを入力データとして取得する第１工程と、あらかじめ学習された学習情報を取得する第２工程と、入力データと学習情報とに基づいて、第２の法線マップを推定する第３工程と、を有し、参照データは、被写体の特性に基づいて被写体空間を撮影した撮影画像の各領域をラベル付けしたラベルマップ、第１の法線マップに含まれる法線情報の信頼度を表す信頼度マップ、および距離マップのうち少なくとも１つを含み、第３工程では、Ｎを２以上の整数、ｎを１からＮまでの整数とした場合、入力データに対して、学習情報に基づく第ｎの線型変換、および第ｎの非線型変換を、ｎが１からＮになるまで順に実行して中間データを生成する工程と、中間データに対して、学習情報に基づく第Ｎ＋１の線型変換を実行する工程と、が実行されることで第２の法線マップが推定されることを特徴とする。
【発明の効果】
【００１１】
本発明によれば、反射特性や形状の制約がない一般的な被写体において、高精度に法線情報を推定可能な画像処理方法、画像処理装置、画像処理システム、撮像装置、画像処理プログラム、および、記憶媒体を提供することができる。
【図面の簡単な説明】
【００１２】
【図１】実施例１の撮像装置の外観図である。
【図２】実施例１の撮像装置のブロック図である。
【図３】実施例１の第２の法線マップの推定処理を示すフローチャートである。
【図４】ディープラーニングの１つであるＣＮＮ（Ｃｏｎｖｏｌｕｔｉｏｎａｌ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋ）のネットワーク構造を示す図である（実施例１，２）。
【図５】実施例１の学習情報の学習を示すフローチャートである。
【図６】実施例２の画像処理システムの外観図である。
【図７】実施例２の画像処理システムのブロック図である。
【図８】実施例２の第２の法線マップの推定処理を示すフローチャートである。
【発明を実施するための形態】
【００１３】
以下、本発明の好ましい実施の形態を、添付の図面に基づいて詳細に説明する。各図において、同一の部材については同一の参照番号を付し、重複する説明は省略する。
【００１４】
本発明では、破綻部や精度が十分でない領域を有する第１の法線マップに基づいて、ディープラーニング（深層学習とも呼ばれる）を用いて、第１の法線マップを改善した第２の法線マップを推定する。法線マップとは、被写体空間の法線情報を画像として並べたマップであり、法線情報とは、法線方向ベクトルや、法線を表す各自由度を指す。ディープラーニングの入力として、第１の法線マップに加えて撮影画像、ラベルマップ、信頼度マップ、または距離マップのうち少なくとも１つを入力し、これらのデータを参照することで第２の法線マップを推定する。第１の法線マップと、撮影画像、ラベルマップ、信頼度マップ、または距離マップのうち少なくとも１つからなる入力データを用いて、対応関係をディープラーニングによって学習することで、高精度に法線情報を推定可能である。
【実施例１】
【００１５】
本実施例では、本発明の画像処理方法を撮像装置１００に適用した場合について説明する。図１は、撮像装置１００の外観図である。図２は、撮像装置１００のブロック図である。
【００１６】
撮像装置１００は、被写体空間の像を撮影画像として取得する撮像部１０１を有する。撮像部１０１は、被写体空間から入射する光を集光する結像光学系１０１ａ、および複数の画素を有する撮像素子１０１ｂを有する。撮像素子１０１ｂは、例えば、ＣＣＤ（Ｃｈａｒｇｅ  Ｃｏｕｐｌｅｄ  Ｄｅｖｉｃｅ）センサや、ＣＭＯＳ（Ｃｏｍｐｌｅｍｅｎｔａｒｙ  Ｍｅｔａｌ−Ｏｘｉｄｅ  Ｓｅｍｉｃｏｎｄｕｃｔｏｒ）センサなどである。画像処理部１０２は、被写体空間の第１の法線マップの部分領域を取得し、撮影画像の対応する領域と合わせた入力データに対して、法線情報（第２の法線マップ）の推定を行う。画像処理部１０２は、学習部１０２ａ、推定部１０２ｂ、および取得部１０２ｃを有する。第２の法線マップの推定の際には、記憶部１０３に記憶された学習情報が呼び出されて使用される。推定された第２の法線マップは、液晶ディスプレイなどの表示部１０４に表示、または記録媒体１０５に保存される。第２の法線マップの代わりに、第２の法線マップに基づいて生成された画像（例えば、レンダリング画像）を表示部１０４に表示、または記録媒体１０５に保存してもよい。ただし、第１の法線マップ、撮影画像、または入力データを記録媒体１０５に保存し、任意のタイミングで第２の法線マップの推定を行ってもよい。光源１１０は、撮像時に選択的に点灯し、撮像部１０１が複数の異なる光源環境下で撮影を行うことを可能とする。本実施例では、光源１１０は、撮像装置１００と一体的に構成されているが、撮像装置１００とは異なる外部装置であってもよい。システムコントローラ１０６は、上述した一連の制御を行う。
【００１７】
以下、図３を参照して、画像処理部１０２により実行される第２の法線マップの推定について説明する。図３は、第２の法線マップの推定処理を示すフローチャートである。
【００１８】
ステップＳ１０１では、取得部１０２ｃは、異なる光源環境下で被写体を撮影した複数の撮影画像と学習情報を取得する。学習情報とは、後述する入力データに対して、推定された第２の法線マップを結び付けるためにあらかじめ学習された情報である。
【００１９】
ステップＳ１０２では、取得部１０２ｃは、入力データとして、第１の法線マップの部分領域、および異なる光源下で被写体を撮影した複数の撮影画像の部分領域を取得する。本実施例では、第１の法線マップとして、あらかじめ取得部１０２ｃによって、異なる光源環境下で被写体を撮影した複数の撮影画像から、照度差ステレオ法で取得されたものを用いる。また、複数の撮影画像のそれぞれから取得される領域は、画像上の同一位置となるように選択されている。なお、複数の撮影画像のそれぞれに対して、電子的な手振れ補正処理等の位置ずらし処理を行ってもよい。また、入力データとして、全ての撮影画像を用いる必要はなく、１枚の撮影画像を用いてもよいし、照度差ステレオ法に用いた撮影画像とは異なる撮影画像を用いてもよい。第２の法線マップの推定は、入力データを単位として部分領域ごとに行われる。部分領域は、各撮影画像の一部の領域であればよく、撮影画像全体であってもよい。また、第１の法線マップを取得する方法は照度差ステレオ法に限定されず、シェイプフロムシェーディング法や視差画像から取得した被写体空間の距離マップに基づいて取得してもよい。この場合、ステップＳ１０１では、第１の法線マップの取得方法および入力データに必要な撮影画像を取得すればよく、所定の光源を用いて撮影しても環境光のみで撮影してもよく、１枚の撮影画像のみ取得しても視差画像を取得してもよい。なお、第１の法線マップは、あらかじめ記録媒体１０５に保存されていてもよい。第１の法線マップを記録媒体１０５から取得する場合、ステップＳ１０１では入力データに必要な撮影画像のみを取得すればよい。
【００２０】
ステップＳ１０３では、推定部１０２ｂは、学習情報を用いて入力データから部分法線情報を推定する。ステップＳ１０３では、多層のニューラルネットワークを用いて入力データの処理を行う。以下、図４を参照して、ステップＳ１０３で行われる推定の詳細について説明する。
【００２１】
図４は、ディープラーニングの１つであるＣＮＮ（Ｃｏｎｖｏｌｕｔｉｏｎａｌ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋ）のネットワーク構造を示している。ただし、多層のニューラルネットワークであれば、ＣＮＮ以外の方法（例えばＤＢＮ（Ｄｅｅｐ  Ｂｅｌｉｅｆ  Ｎｅｔｗｏｒｋ）など）を用いても構わない。
【００２２】
ＣＮＮは、複数の層構造になっており、各層で学習情報に基づく線型変換、および非線型変換が実行される。非線型変換は、学習情報に基づいていてもよいし、学習情報に基づいていなくてもよい。ここで、ｎを１からＮまでの整数とする場合、ｎ番目の層を第ｎ層、第ｎ層における線型変換と非線型変換をそれぞれ、第ｎの線型変換と第ｎの非線型変換と呼称する。ただし、Ｎは、２以上の整数である。入力データ２０１は、第１層で複数のフィルタ２０２それぞれとのコンボリューション（複数の線型関数による第１の線型変換）をとられる。その後、活性化関数（Ａｃｔｉｖａｔｉｏｎ  Ｆｕｎｃｔｉｏｎ，図４ではＡＦ）と呼ばれる非線型関数で変換（第１の非線型変換）される。また、入力データ２０１が複数枚描画されているのは、複数のチャンネルを有しているためである。本実施例では、入力データが第１の法線マップのチャンネル数に加えて、入力データに用いる撮影画像１枚ごとにＲＧＢ（Ｒｅｄ，Ｇｒｅｅｎ，Ｂｌｕｅ）の３チャンネルを有している。第１の法線マップのチャンネル数は、法線情報の表現方法によって異なる。法線ベクトルの３次元の成分を各チャンネルに割り当てれば３チャンネルであり、法線ベクトルの方向を２つの角度で表現すれば２チャンネルである。また、入力データがＲＧＢのチャンネルを有していても、各色で個別にＣＮＮへ入力しても構わない。
【００２３】
フィルタ２０２は、複数存在し、それぞれと入力データ２０１とのコンボリューションを個別に算出する。フィルタ２０２の係数は、学習情報から決定される。学習情報はフィルタ係数そのものでもよいし、フィルタを所定の関数でフィッティングした際の係数でもよい。フィルタ２０２それぞれのチャンネル数は、入力データ２０１と一致し、３次元フィルタとなる（３次元目がチャンネル数を表す）。また、コンボリューションの結果に対して、学習情報から決定される定数（負もとり得る）を加算してもよい。
【００２４】
活性化関数ｆ（ｘ）の例として、以下の式（１）から（３）が挙げられる。
【００２５】
【数１】
2020119333.tif 000003
【００２６】
式（１）はシグモイド関数、式（２）はハイパボリックタンジェント関数、式（３）はＲｅＬＵ（Ｒｅｃｔｉｆｉｅｄ  Ｌｉｎｅａｒ  Ｕｎｉｔ）と呼ばれる。式（３）中のｍａｘは、引数のうち最大値を出力するＭＡＸ関数を表す。式（１）から（３）は、全て単調増加関数である。また、活性化関数としてＭａｘｏｕｔを使用してもよい。Ｍａｘｏｕｔは、第ｎの線型変換の出力である複数の画像のうち、各画素で最大値である信号値を出力するＭＡＸ関数である。
【００２７】
第１の線型変換、および第１の非線型変換を施された入力データを、第１変換入力データ２０３と呼称する。第１変換入力データ２０３の各チャンネル成分は、入力データ２０１とフィルタ２０２それぞれのコンボリューションから生成される。そのため、第１変換入力データ２０３のチャンネル数は、フィルタ２０２の数と同じになる。
【００２８】
第２層では、第１変換入力データ２０３に対して、第１層と同様に学習情報から決定される複数のフィルタ２０４とのコンボリューション（第２の線型変換）と、活性化関数による非線型変換（第２の非線型変換）が行われる。第２層で使用されるフィルタ２０４は通常、第１層で使用されるフィルタ２０２と同一ではない。フィルタのサイズや数も一致しなくてもよい。ただし、フィルタ２０４のチャンネル数と第１変換入力データ２０３のチャンネル数は一致する。同様の演算を第Ｎ層まで繰り返すことで、中間データ２１０が得られる。最後に、第Ｎ＋１層で中間データ２１０とフィルタ２１１のコンボリューションと定数の加算（第Ｎ＋１の線型変換）から、入力データ２０１に対する第２の法線マップを推定した部分法線情報２１２が得られる。フィルタ２１１と定数も、学習情報から決定される。部分法線情報２１２のチャンネル数は、法線情報の表現方法によって異なり、第１の法線マップのチャンネル数に等しい。したがって、フィルタ２１１の数は部分法線情報２１２のチャンネル数と同じになる。部分法線情報２１２の各チャンネルの成分は、中間データ２１０とフィルタ２１１それぞれとのコンボリューションを含む演算から求められる。なお、入力データ２０１と部分法線情報２１２のサイズは一致しなくてよい。コンボリューション時、入力データ２０１の外側にはデータが存在しないため、データの存在する領域のみで演算すると、コンボリューション結果はサイズが小さくなる。ただし、周期境界条件などを設けることで、サイズを保つこともできる。なお、本実施例では、第ｍの線型変換（ｍ＝１〜Ｎ＋１）のそれぞれに関する各フィルタの係数は、全て異なっている。
【００２９】
ディープラーニングが高い性能を発揮できる理由は、非線型変換を多層構造によって何度も行うことで、高い非線型性が得られるためである。仮に、非線型変換を担う活性化関数が存在せず、線型変換のみでネットワークが構成されていた場合、いくら多層にしてもそれと等価な単層の線型変換が存在するため、多層構造にする意味がない。ディープラーニングは、より多層にする方が強い非線型を得られるため、高い性能が出やすいと言われている。一般に、少なくとも３層以上を有する場合がディープラーニングと呼ばれている。このように構成されたディープラーニングを用いることで、破綻部を低減した法線情報（第２の法線マップ）を推定できる。
【００３０】
ステップＳ１０４では、推定部１０２ｂは、撮影画像のうち既定の領域に対して、第２の法線マップの推定が完了したかどうかを判定する。既定の領域全てに対して、部分法線情報が生成されていれば、ステップＳ１０５に進む。そうでなければ、ステップＳ１０２に戻り、法線情報が推定されていない入力データを取得する。
【００３１】
ステップＳ１０５では、推定部１０２ｂは、第２の法線マップを出力する。第２の法線マップは、生成された部分法線情報を合成することで生成される。入力データが画像領域の全体である場合、部分法線情報をそのまま第２の法線マップとすればよい。
【００３２】
以上の処理によって、第１の法線マップから撮影画像を参照して第２の法線マップを推定することができる。
【００３３】
なお、第１の法線マップを取得する際に視差画像を用いなかった場合でも、視点の異なる複数の撮影画像を入力し、第２の法線マップを得るようにしてもよい。視点によっても光の反射角が変化することから被写体の反射特性の影響も変化する。同一の被写体に対して異なる光の反射を受けた撮影画像を複数入力することで、推定精度を向上することができる。
【００３４】
以下、図５を参照して、学習情報の学習について説明する。図５は、学習情報の学習を示すフローチャートである。学習は、第２の法線マップを推定する前であれば、学習部１０２ａで行なってもよいし、撮像装置１００とは別の演算装置で行なってもよい。本実施例では、学習部１０２ａで学習を実行する場合について説明する。
【００３５】
ステップＳ２０１では、学習部１０２ａは、一対以上の学習データを取得する。一対の学習データとは、第１の法線マップと撮影画像とを含む学習用入力データと、同一の被写体の第１の法線マップより高精度な学習用法線マップである。ここで、第１の法線マップは取得方法によって異なるものの、低解像度であったり取得方法ごとの苦手とする条件によって生じた破綻部（低精度または取得できていない部分）が存在したりする。本実施例では、第１の法線マップをより高精度な第２の法線マップに補正するための推定処理を行う。したがって、学習データにおいては第１の法線マップが破綻する条件や破綻による影響を推定時とそろえる必要がある。そのため、学習時に用いる第１の法線マップは推定時に用いる第１の法線マップと同様に取得したデータであり、学習時に用いる撮影画像は推定時に用いる撮影画像と枚数、撮影条件を対応させることが望ましい。学習データとして用いる高精度な法線情報（学習用法線マップ）として、第１の法線マップに比べて精度が高く破綻部のない法線情報を用いる必要がある。この法線情報の精度によって、推定される第２の法線マップの精度が変わる。
【００３６】
学習データとして用いる高精度な法線情報には、様々な形状、法線ベクトルを持つ被写体、および様々な反射特性の被写体が含まれていることが望ましい。例えば、学習データに光沢のある被写体がない場合、同様の反射特性を持つ被写体での第１の法線マップ、撮影画像、後述する参照データ、および第２の法線マップを用いた学習データが存在しない。そのため、同様の被写体に対する法線情報推定の効果が充分に得られない可能性がある。
【００３７】
学習データを用意する方法として、シミュレーションを利用してもよいし、実測した情報を使用してもよい。シミュレーションを行う場合、反射特性を付与した３Ｄモデルに対して、ＣＧレンダリングを行うことで撮影画像に相当する画像を生成し、生成された画像から取得部１０２ｃと同等の取得方法に基づいて、第１の法線マップを取得すればよい。３Ｄモデルが既知のため、学習用法線マップは既知である。
【００３８】
実測した情報を使用する場合、形状が既知の被写体（法線情報が既知の被写体）を撮影し、取得部１０２ｃと同等の取得方法に基づいて第１の法線マップに相当する法線情報を取得すればよい。これにより、正確な法線情報を得られる。この場合も、学習用法線マップは既知である。
【００３９】
また、形状が未知の被写体に対しても、異なる方法を用いることで取得した法線情報（第２の法線マップ）を用いて、学習させてもよい。例として、レーザー測距によって形状を取得したり、構造化照明で照明した画像から形状を取得したり、鏡面反射の反射方向と光源の入射方向から形状を取得したり、接触式の計測機器で形状を取得したりする方法が挙げられる。被写体のサイズ、形状、および反射特性といった条件に応じて適切な取得方法を選択することで、一般の被写体に対して第１の法線マップよりも高精度に法線情報を取得することができる。
【００４０】
ここで、第１の法線マップの破綻しやすい条件について説明する。まず、照度差ステレオ法について説明する。照度差ステレオ法によって法線を取得する場合、異なる光源環境下で撮影した際の輝度の変化から法線方向が取得される。照度差ステレオ法として、一般の反射特性に対応したものもあるが、撮影枚数や計算負荷が増えるため、多くの場合はランバートモデルに従う拡散反射を仮定している。したがって、鏡面反射が観測される場合には誤った法線が取得される。また、入射光が遮蔽される影部や入射光が当たらない陰部、他の物体からの反射光が入射する相互反射による輝度の変化によっても法線が破綻しやすい。表面の粗い被写体や内部散乱の強い半透明体においてはランバートモデルから外れた反射特性を示し、光沢のある金属体やグラスのような透明体では拡散反射が観測されないため、これらの被写体においても法線が破綻しやすい。また、環境光が強い場合には、光源からの入射光による寄与が相対的に小さくなり、取得精度が低下する。シェイプフロムシェーディング法においてもランバートモデルが仮定されることが多く、同様の被写体で破綻が生じやすい。また、法線の連続的な変化を仮定した場合、細かい凹凸形状が反映されない場合がある。
【００４１】
距離マップから法線情報を取得する場合、遠近の被写体に対する境界部で距離が不連続的に変化すると誤った法線情報が推定される。法線情報は、距離情報の微分に相当するため、距離マップのノイズにも強く影響される。また、距離マップの取得方法によって距離マップ自体に破綻がある場合もあり、この場合も法線情報が破綻する。例えば、多視点画像から視点間の相関をもとに距離を取得する場合、視点ごとに見えの異なる鏡面反射体や透明体、オクルージョン、位置ごとに輝度変化の少ないテクスチャの少ない被写体や、周期的な構造を持つ被写体などによって距離が破綻しやすい。Ｔｉｍｅ  ｏｆ  ｆｌｉｇｈｔ法によって距離を取得する場合、光が返ってこない鏡面反射体や透明体で距離が取得できなかったり、低反射物体や外光の強い環境下でノイズによって取得精度が低下したりする。
【００４２】
ステップＳ２０２では、学習部１０２ａは、学習データから複数の学習ペアを取得する。学習ペアは、学習用入力データと学習用部分法線情報とからなる。学習用入力データは、第１の法線マップと撮影画像から取得される。学習用入力データのサイズは、ステップＳ１０２で取得された入力データと同じである。学習用部分法線情報は、学習用法線マップから、領域の中心が学習用入力データと同じ被写体位置になるように取得される。学習用部分法線情報のサイズは、ステップＳ１０３で生成された部分法線情報と同じである。
【００４３】
ステップＳ２０３では、学習部１０２ａは、複数の学習ペアから、学習情報を学習によって取得する。学習では、第２の法線マップの推定と同じネットワーク構造を使用する。本実施例では、図４のネットワーク構造に対して学習用入力データが入力され、その出力結果と学習用部分法線情報の誤差が算出される。法線情報の誤差は、各成分の差分をとってもよいし、学習用部分法線情報の法線ベクトルと出力結果の法線ベクトルの内積を１から引いた値としてもよい。誤差が最小化されるように、例えば、誤差逆伝播法（Ｂａｃｋｐｒｏｐａｇａｔｉｏｎ）などを用いて、第１層から第Ｎ＋１層で用いる各フィルタの係数や加算する定数（学習情報）を更新、最適化する。各フィルタと定数の初期値は、例えば、乱数から決定すればよい。また、各層ごとに初期値を事前学習するＡｕｔｏ  Ｅｎｃｏｄｅｒなどのプレトレーニングを行なってもよい。
【００４４】
学習ペアを全てネットワーク構造に入力し、それら全ての情報を使って学習情報を更新する方法をバッチ学習と呼ぶ。バッチ学習では、学習ペアの数が増えるにつれて、計算負荷が膨大になってしまう。また、学習情報の更新に１つの学習ペアのみを使用し、更新ごとに異なる学習ペアを使用する学習方法をオンライン学習と呼ぶ。オンライン学習では、学習ペアが増えても計算量は増大しないが、１つの学習ペアに存在するノイズの影響を大きく受けてしまう。そのため、これら２つの方法の中間に位置するミニバッチ法を用いて学習することが望ましい。ミニバッチ法では、全学習ペアの中からいくつかのペアを抽出し、それらを用いて学習情報の更新が行われる。次の更新では、異なる学習ペアを抽出して使用する。これを繰り返すことで、バッチ学習とオンライン学習の欠点を小さくすることができ、高い推定効果を得やすくなる。
【００４５】
ステップＳ２０４では、学習部１０２ａは、学習された学習情報を出力する。本実施例では、出力された学習情報は記憶部１０３に記憶される。
【００４６】
以上の処理によって、反射特性や形状の制約がない一般的な被写体において、高精度に法線情報を推定可能な学習情報を学習することができる。
【００４７】
また、以上の処理に加えて、ＣＮＮの性能を向上させる工夫を併用してもよい。例えば、ロバスト性の向上のためネットワークの各層において、ドロップアウト（Ｄｒｏｐｏｕｔ）やダウンサンプリングであるプーリング（ｐｏｏｌｉｎｇ）を行なってもよい。
【００４８】
また、本実施例では、撮影画像の部分領域から入力データを取得したが、撮影画像に任意の画像処理を行った後の画像から取得してもよい。例えば、撮影画像から鏡面反射の影響を受けない拡散反射画像を生成し、拡散反射画像から入力データを取得してもよい。これにより、反射特性の異なる被写体においても鏡面反射を除いた成分に絞って学習および推定ができ、推定精度を向上することができる。
【００４９】
以上説明した構成により、反射特性や形状の制約がない一般的な被写体において、高精度に法線情報を推定することができる。
【実施例２】
【００５０】
本実施例では、本発明の画像処理方法を画像処理システム５００に適用した場合について説明する。図６は、画像処理システム５００の外観図である。図７（ａ）は、画像処理システム５００のブロック図である。
【００５１】
画像処理システム５００は、撮影画像を得る撮像装置３００、第２の法線マップを推定する画像処理装置３０１、および学習を行うサーバー３０５を有する。本実施例では、第２の法線マップを推定する際の参照データとして、第１の実施例で用いた撮影画像ではなく、ラベルマップ、信頼度マップ、または距離マップのうち少なくとも１つを用いる。これにより、高精度な法線情報の推定を可能とする。
【００５２】
撮像装置３００の基本構成は、第２の法線マップの推定と学習情報の学習を行う画像処理部を除いて、実施例１の撮像装置１００と同様である。撮像装置３００で撮影された撮影画像は、画像処理装置３０１内の記憶部３０２に記憶される。画像処理装置３０１は、ネットワーク３０４と有線または無線で接続されており、同様にネットワーク３０４に接続されたサーバー３０５にアクセスする。サーバー３０５は、取得部３１１により取得された第１の法線マップ、および参照データから第２の法線マップを推定するための学習情報を学習する学習部３０７と、学習情報を記憶する記憶部３０６とを有する。推定部３０３は、記憶部３０６から学習情報を取得し、第２の法線マップを推定する。第２の法線マップは、表示装置３０８、記録媒体３０９、および出力装置３１０のうち少なくとも１つに出力される。第２の法線マップの代わりに、第２の法線マップに基づいて生成された画像（例えば、レンダリング画像）が出力されてもよい。
【００５３】
表示装置３０８は、例えば、液晶ディスプレイやプロジェクタなどである。ユーザーは、表示装置３０８を介して、処理途中の法線情報を確認しながら作業を行うことができる。記録媒体３０９は、例えば、半導体メモリ、ハードディスク、およびネットワーク上のサーバー等である。出力装置３１０は、例えば、プリンタなどである。画像処理装置３０１は、必要に応じて現像処理やその他の画像処理を行う機能を有していてよい。
【００５４】
以下、図８を参照して、画像処理装置３０１により実行される第２の法線マップの推定について説明する。図８は、第２の法線マップの推定処理を示すフローチャートである。
【００５５】
ステップＳ３０１では、推定部３０３は、記憶部３０２から撮影画像を取得する。
【００５６】
ステップＳ３０２では、推定部３０３は、第１の法線マップと参照データを取得する。第１の法線マップは、取得部３１１によってあらかじめ取得されている。参照データは、本実施例では、ラベルマップ、信頼度マップ、および距離マップのうち少なくとも１つである。なお、実施例１と同様に、撮影画像を参照データとして用いてもよい。第１の法線マップおよび距離マップは、実施例１で説明したによって取得すればよい。ラベルマップとは、被写体の特性に基づいて撮影画像の各領域をラベル付けした分布である。被写体の特性とは、例えば、透過・反射特性を指し、被写体の材質ごとにラベル付けをすることで、その被写体がどのような透過・反射特性を有しているかが分かる。また、鏡面反射領域、相互反射領域、または影領域など第１の法線マップを取得する際に破綻の原因となる領域を取得してラベル付けしてもよい。信頼度マップとは、第１の法線マップの各位置において、法線情報がどの程度信頼できるかを示した分布である。信頼度マップは、例えば、第１の法線マップが照度差ステレオ法により取得されている場合、第１の法線マップおよびランバートモデルから推測される輝度値と実際の輝度値との差分量などから生成することができる。
【００５７】
ステップＳ３０３では、推定部３０３は、参照データに基づいて、使用するネットワーク構造と学習情報、入力データのサイズ、および推定を実行する領域を決定する。本実施例では、推定部３０３は、図４を用いて説明したＣＮＮを使用して法線情報を推定する。また、本実施例では、参照データに応じて個別に学習させた学習情報を用いるため、ネットワーク構造および入力データのサイズも学習時に使用したものと同じになる。取得した参照データに応じた学習情報を用いることで、より高精度に第２の法線マップを推定することができる。
【００５８】
参照データとしてラベルマップを用いる場合、第１の法線マップで破綻が生じやすい領域がその種類に応じてラベル付けされ、破綻が生じにくい領域についてもラベル付けされている。例えば、金属体や透明体など反射特性の異なる被写体ごとにラベル付けされている場合、被写体の種類ごとに学習した学習情報を使用する。これにより、より精度の高い推定が可能となる。使用するネットワーク構造と学習情報、および入力データのサイズは学習時の条件によって決まる。また、推定を実行する領域を破綻が生じやすい領域としてラベル付けされた領域に限ってもよく、これによって推定を高速に実行できる。
【００５９】
参照データとして信頼度マップを用いる場合、第１の法線マップで破綻が生じている可能性の度合いが信頼度によって表されている。そこで、例えば、信頼度が低いほど入力データのサイズを大きくすればよい。また、信頼度が高い領域を含むように入力データのサイズを決定してもよい。これにより、より精度の高い推定が可能となる。また、推定を実行する領域を信頼度が所定の閾値より低い領域に限ってもよく、これによって推定を高速に実行できる。
【００６０】
次に、参照データとして距離マップを用いる場合、距離によって第１の法線マップの取得精度が変わる場合がある。例えば、撮像装置３００の光源を順次点灯して照度差ステレオ法によって法線を取得する場合、光源が撮像装置３００に固定されているため、距離が遠いほど各光源を点灯して撮影した複数の撮影画像間で光源方向の差が小さくなり輝度の変化が出にくくなる。輝度の変化が出にくいほど法線取得精度が低下するため、距離マップが法線の信頼度に対応する。したがって、距離マップに応じて入力データのサイズを変えてもよい。また、距離マップが不連続に変化する点では、遠近の被写体の境界領域であり、距離マップから法線マップを取得する際に誤った法線を算出しやすい。したがって、境界領域では、境界領域のデータを用いて学習した学習情報を用いてもよいし、境界領域に限って推定を実行してもよい。
【００６１】
ネットワーク構造は、各層で使用するフィルタのサイズだけでなく、１つの層で使用されるフィルタの数や層数なども含む。
【００６２】
学習情報は参照データに応じて学習されており、対応した学習情報が使用される。これにより、より精度の高い推定が可能となる。
【００６３】
ステップＳ３０４では、推定部３０３は、第１の法線マップと参照データとから入力データを取得する。
【００６４】
ステップＳ３０５では、推定部３０３は、学習情報から部分法線情報を生成する。
【００６５】
ステップＳ３０６では、推定部３０３は、既定の領域を推定し終えたかどうかを判定する。既定の領域を推定し終えた場合、ステップＳ３０７に進み、そうでない場合、ステップＳ３０４に戻る。
【００６６】
ステップＳ３０７では、推定部３０３は、第２の法線マップを出力する。
【００６７】
なお、ステップ３０４をステップＳ３０２およびステップＳ３０３の前に実行してもよい。その場合、ステップＳ３０２およびステップＳ３０３では、ステップ３０４で取得した部分領域に対して第１の法線マップと参照データを取得して、対応する学習情報などを取得する。
【００６８】
以下、学習部３０７により実行される学習情報の学習に関して説明する。本実施例では、参照データごとに異なる学習情報を学習する。学習方法は、図５のフローチャートに従う。
【００６９】
まず、学習データをシミュレーション（ＣＧレンダリング）によって生成する場合について説明する。例えば、所定の反射特性に設定して法線情報からレンダリング画像を生成し、レンダリング画像から第１の法線マップを取得することで、反射特性に対応した一対の学習データを得る。類似する複数の反射特性を１つのラベルとして対応付ける場合には、類似する反射特性それぞれにおいて学習データを得ることが望ましい。学習データに対してステップＳ２０１からＳ２０４を実行し、その後、異なる反射特性の被写体に対して同様の手順を繰り返す。信頼度マップや距離マップを参照データとして使用する場合も被写体領域の特性別に同様の手順で学習すればよい。
【００７０】
また、形状が既知の実被写体を用いて学習データを生成する場合について説明する。この場合、既知の形状を持つ被写体に対して推定時に用いる第１の法線マップおよび参照データを取得することで学習データを得る。被写体の距離によって学習情報を変える場合、被写体の距離を変えながら撮影画像、第１の法線マップ、および参照データを取得すればよい。被写体の反射特性が既知の場合、異なる反射特性の被写体に変えながら学習データを取得すればよい。厳密に反射特性が既知でなくとも、材質を変えながら学習データを取得すればよい。この場合、信頼度マップは事前に取得することが困難であるため、第１の法線マップと同時に信頼度マップを取得し、様々な信頼度の被写体空間について学習データを取得する必要がある。そして、同じ分類にあたる学習データごとにステップＳ２０１からＳ２０４を実行して学習情報を生成する。
【００７１】
なお、本実施例では、本発明を適用可能な画像処理システムの一例として図７（ａ）に示される画像処理システム５００について説明したが、本発明はこれに限定されない。例えば、図７（ｂ）に示されるように、サーバー４０１が図７（ａ）の画像処理装置３０１およびサーバー３０５の機能を有していてもよい。この場合、サーバー４０１は、撮像装置、スマートフォン、タブレット端末、およびパソコン（ＰＣ）などの画像出力装置から出力された撮影画像を、ネットワーク４０２を介して取得し、取得した撮影画像に対して本発明の画像処理方法を実行する。
【００７２】
以上説明した構成により、反射特性や形状の制約がない一般的な被写体において、高精度に法線情報を推定することができる。
（その他の実施例）
本発明は、上述の実施例の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【００７３】
各実施例によれば、反射特性や形状の制約がない一般的な被写体において、精度よく法線情報を推定可能な画像処理装置、撮像装置、画像処理方法、画像処理プログラム、および、記憶媒体を提供することができる。
【００７４】
以上、本発明の好ましい実施形態について説明したが、本発明はこれらの実施形態に限定されず、その要旨の範囲内で種々の変形及び変更が可能である。
【符号の説明】
【００７５】
２０１    入力データ
２１０    中間データ 
【図１】
2020119333.tif 000004
【図２】
2020119333.tif 000005
【図３】
2020119333.tif 000006
【図４】
2020119333.tif 000007
【図５】
2020119333.tif 000008
【図６】
2020119333.tif 000009
【図７】
2020119333.tif 000010
【図８】
2020119333.tif 000011