(57)【要約】【課題】画像探索処理を行うことなく視差の算出に必要な計算負荷を軽減する。【解決手段】画像処理装置１０２は、互いに異なる複数の視点からの撮像により生成された撮像画像データから取得可能な視差画像データに含まれる視差を算出する。該装置は、互いに異なる視差に対応する複数の参照パターンデータのうち、視差画像データに含まれる視差の想定範囲に応じた複数の特定参照パターンデータを取得し、複数の特定参照パターンデータを用いて視差画像データを表すために該複数の特定参照パターンデータのそれぞれに重みを付ける複数の係数を算出し、複数の特定参照パターンデータのそれぞれに対応する視差と複数の係数とを用いて視差画像データに含まれる視差を算出する。【選択図】図２
2018081378.tif 000002
【特許請求の範囲】
【請求項１】
互いに異なる複数の視点からの撮像により生成された撮像画像データから取得可能な視差画像データに含まれる視差を算出する画像処理装置であって、
互いに異なる視差に対応する複数の参照パターンデータのうち、前記視差画像データに含まれる前記視差の想定範囲に応じた複数の特定参照パターンデータを取得する取得手段と、
前記複数の特定参照パターンデータを用いて前記視差画像データを表すために該複数の特定参照パターンデータのそれぞれに重みを付ける複数の係数を算出し、前記複数の特定参照パターンデータのそれぞれに対応する視差と前記複数の係数とを用いて前記視差画像データに含まれる前記視差を算出する算出手段とを有することを特徴とする画像処理装置。
【請求項２】
前記取得手段は、前記想定範囲を、前記撮像を行った撮像装置の構成に応じて設定することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記算出手段は、前記複数の係数を、前記視差画像データに基づいて設定された行列と前記複数の特定参照パターンデータを配列した行列の一般化逆行列との積により算出することを特徴とする請求項１または２に記載の画像処理装置。
【請求項４】
前記撮像画像データから複数の視差画像データを取得する場合において、
前記算出手段は、前記視差を算出する視差画像データのサイズを、前記視差を算出しない視差画像データのサイズよりも小さくすることを特徴とする請求項１から３のいずれか一項に記載の画像処理装置。
【請求項５】
前記撮像を行った撮像装置の構成に応じて設定された視差を有する学習画像データを用いた機械学習によって前記複数の参照パターンデータを生成する生成手段をさらに有することを特徴とする請求項１から４のいずれか一項に記載の画像処理装置。
【請求項６】
前記撮像を行った撮像装置の構成に応じて前記視差画像データのサイズを設定する設定手段をさらに有することを特徴とする請求項１から５のいずれか一項に記載の画像処理装置。
【請求項７】
前記撮像装置の構成は、前記複数の視点の数、撮像素子の画素ピッチ、撮像光学系の焦点距離、前記複数の視点の配置、Ｆ値およびフォーカス位置のうち少なくとも１つを含むことを特徴とする請求項２、５または６に記載の画像処理装置。
【請求項８】
前記算出手段は、前記複数の係数を算出する前に、前記撮像画像データまたは前記視差画像データに対して平滑化処理を行うことを特徴とする請求項１から７のいずれか一項に記載の画像処理装置。
【請求項９】
前記複数の参照パターンデータを記憶する記憶手段を有することを特徴とする請求項１から８のいずれか一項に記載の画像処理装置。
【請求項１０】
互いに異なる複数の視点からの撮像を行う撮像部と、
請求項９に記載の画像処理装置とを有することを特徴とする撮像装置。
【請求項１１】
互いに異なる複数の視点からの撮像により生成された撮像画像データから取得可能な視差画像データに含まれる視差を算出する画像処理方法であって、
互いに異なる視差に対応する複数の参照パターンデータのうち、前記視差画像データに含まれる前記視差の想定範囲に応じた複数の特定参照パターンデータを取得するステップと、
前記複数の特定参照パターンデータを用いて前記視差画像データを表すために該複数の特定参照パターンデータのそれぞれに重みを付ける複数の係数を算出し、前記複数の特定参照パターンデータのそれぞれに対応する視差と前記複数の係数とを用いて前記視差画像データに含まれる前記視差を算出するステップとを有することを特徴とする画像処理方法。
【請求項１２】
コンピュータに、互いに異なる複数の視点からの撮像により生成された撮像画像データから取得可能な視差画像データに含まれる視差を算出する画像処理を実行させるコンピュータプログラムであって、
前記コンピュータに、
互いに異なる視差に対応する複数の参照パターンデータのうち、前記視差画像データに含まれる前記視差の想定範囲に応じた複数の特定参照パターンデータを取得させ、
前記複数の特定参照パターンデータを用いて前記視差画像データを表すために該複数の特定参照パターンデータのそれぞれに重みを付ける複数の係数を算出させ、
前記複数の特定参照パターンデータのそれぞれに対応する視差と前記複数の係数とを用いて前記視差画像データに含まれる前記視差を算出させることを特徴とする画像処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、被写体空間を異なる視点から撮像することで得られた画像データから視差の情報を取得する画像処理技術に関する。
【背景技術】
【０００２】
被写体空間を複数の視点から撮像することで得られた複数の視点画像から視差の情報を取得する方法が種々提案されている。例えば、複数の視点画像間においてブロックマッチング等の画像探索処理によって互いに対応する対応点を検出し、それぞれの視点画像における対応点の位置（座標）の相違量から視差量を求める方法がある。求められた視差量は、被写体までの距離の算出等に利用される。
【０００３】
また、特許文献１には、互いに異なる２視点からの撮像により得られた２つの視点画像間で同サイズの領域同士の相対的な位置を変えながら該領域間でブロックマッチングを行い、最も類似性が高い領域同士を対応領域として検出する方法が開示されている。そして、対応領域内での位置差をそれらの対応領域間の視差として得る。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１４−８９４９８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、ブロックマッチング等の画像探索処理は計算負荷が大きい。この点、特許文献１にて開示された方法では、探索する領域のサイズを制限することで計算負荷を低減させているが、画像探索処理が必要であるために負荷軽減には限界がある。
【０００６】
本発明は、画像探索処理を行うことなく視差の算出に必要な計算負荷を軽減することができるようにした画像処理装置等を提供する。
【課題を解決するための手段】
【０００７】
本発明の一側面としての画像処理装置は、互いに異なる複数の視点からの撮像により生成された撮像画像データから取得可能な視差画像データに含まれる視差を算出する。該装置は、互いに異なる視差に対応する複数の参照パターンデータのうち、視差画像データに含まれる視差の想定範囲に応じた複数の特定参照パターンデータを取得する取得手段と、複数の特定参照パターンデータを用いて視差画像データを表すために該複数の特定参照パターンデータのそれぞれに重みを付ける複数の係数を算出し、複数の特定参照パターンデータのそれぞれに対応する視差と複数の係数とを用いて視差画像データに含まれる視差を算出する算出手段とを有することを特徴とする。
【０００８】
なお、上記画像処理装置を含む撮像装置も、本発明の他の一側面を構成する。
【０００９】
また、本発明の他の一側面としての画像処理方法は、互いに異なる複数の視点からの撮像により生成された撮像画像データから取得可能な視差画像データに含まれる視差を算出する方法である。該方法は、互いに異なる視差に対応する複数の参照パターンデータのうち、視差画像データに含まれる視差の想定範囲に応じた複数の特定参照パターンデータを取得するステップと、複数の特定参照パターンデータを用いて視差画像データを表すために該複数の特定参照パターンデータのそれぞれに重みを付ける複数の係数を算出し、複数の特定参照パターンデータのそれぞれに対応する視差と前記複数の係数とを用いて視差画像データに含まれる視差を算出するステップとを有することを特徴とする。
【００１０】
なお、コンピュータを上記画像処理装置として動作させるコンピュータプログラムとしての画像処理プログラムも、本発明の他の一側面を構成する。
【発明の効果】
【００１１】
本発明によれば、計算負荷を軽減しつつ視差画像データに含まれる視差を算出することができる。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施例１，２における視差算出の概略を示す図。
【図２】実施例１における撮像装置の構成を示すブロック図。
【図３】実施例１における撮像部の構成を示す図。
【図４】実施例１における視差算出処理を示すフローチャート。
【図５】実施例１，２における参照パターンの機械学習処理を示すフローチャート。
【図６】実施例１におけるライトフィールドデータの例を示す図。
【図７】実施例２における画像処理システムの構成を示すブロック図。
【図８】実施例２における視差算出処理を示すフローチャート。
【図９】実施例２における信頼度算出の基準となるグラフを示す図。
【発明を実施するための形態】
【００１３】
以下、本発明の実施例について図面を参照しながら説明する。まず、実施例の具体的な説明の前に、典型的な実施例の概要について図１を用いて説明する。
【００１４】
典型的な実施例では、被写体空間を複数の視点から撮像することで生成された撮像画像データ（図示せず）から視差の情報を含む視差画像データとしての一組の入力画像ｉ（ｉ１，ｉ２，…）を取得する。ただし、一組の入力画像は、撮像画像データから取得可能であればよく、後述するように一組の入力画像の視差が算出される前に実際に取得されなくてもよい。例えば、撮像画像データが複数の視点からの撮像により得られた視差の情報を含む１つの画像に相当する場合に、該１つの画像から一組の入力画像が分離されるのと同時または分離より前に該一組の入力画像の視差が算出されるようにしてもよい。
【００１５】
また、実施例では、事前に互いに異なる複数の既知の視差に対応する複数の参照パターンデータを用意する。参照パターンデータは、ある視差を有する画像間に表れる相違を表す一組の基本的なパターンである一組の参照パターンを示すデータである。以下の説明において、参照パターンデータに対応する視差を参照視差ともいい、複数の参照パターンデータのそれぞれに対応する複数の視差をまとめて参照視差群ともいう。
【００１６】
一組の入力画像は、複数の参照パターンデータのうち該一組の入力画像が有する視差として想定される範囲内の既知の視差に対応する参照パターンデータ（以下、特定参照パターンデータといい、図では参照パターン１，２，…と示す）を用いて表すことができる。一組の入力画像の視差の想定範囲（以下、想定視差範囲という）は、例えば撮像を行って撮像画像データを生成した撮像装置の構成に基づいて設定される。実施例では、一組の入力画像を複数の特定参照パターンデータの組合せにより表すために、それぞれの特定参照パターンデータに重みを付けるための複数の係数α１，α２，…（以下、まとめて係数群αともいう）を算出する。一組の入力画像は、複数の特定参照パターンデータに係数群α（α１，α２，…）を乗じて加算する（重み付け平均する）ことで表すことができる。実施例では、このことを利用して、算出した係数群αと複数の特定参照パターンデータに対応する参照視差群ｄ（ｄ１，ｄ２，…）とを用いて一組の入力画像の視差を算出する。この際、一組の入力画像を入力とする関数を用いるが、この関数の例については具体的な実施例にて説明する。
【００１７】
このような実施例においては、予め用意された複数の参照パターンデータから一組の入力画像の想定視差範囲に応じた特定参照パターンデータを取得（選択）し、後述する行列演算によって係数群を算出すればよい。このため、ブロックマッチング等の画像探索処理が必要なくなり、視差算出における計算負荷が低減される。また、想定視差範囲に基づいて使用する特定参照パターンデータを取得することで、可能な限り少数の参照パターンデータを用いて入力画像の視差を算出することができ、より計算負荷を低減させることができる。
【００１８】
さらに、複数の参照パターンデータに対応する参照視差群は、一組の入力画像における視差を算出する前に既知の情報として取得しておく。これにより、特定参照パターンデータに対応する参照視差群と係数群とを用いた単純な演算によって一組の入力画像の視差を算出することができる。すなわち、視差算出のための計算負荷を低減することができる。
【実施例１】
【００１９】
本発明の具体的な実施例１である撮像装置１００の構成について図２を用いて説明する。撮像部１０１は、被写体空間を互いに異なる複数の視点から撮像することにより撮像画像データとしての一組（例えば一対）の撮像画像を生成する。撮像部１０１の詳しい構成については後述する。
【００２０】
画像処理装置としての画像処理部１０２は、一組の撮像画像から取得した一組の入力画像の視差を算出する。画像処理部１０２は、学習部１０２ａと視差算出部１０２ｂとを有する。学習部１０２ａは、複数の参照パターンデータを機械学習によって生成（算出）し、生成した複数の参照パターンデータをこれらのそれぞれに対応する参照視差と関連付けて記憶部（記憶手段）１０３に記憶させる。学習部１０２ａは生成手段として機能する。
【００２１】
視差算出部１０２ｂは、記憶部１０３から、前述した想定視差範囲に基づいて選択した複数の特定参照パターンデータを読み出し、読み出された特定参照パターンデータを用いて一組の入力画像の視差を算出する。視差算出部１０２ｂは、取得手段、算出手段および設定手段として機能する。画像処理部１０２が行う機械学習や視差算出処理についての詳細は後述する。
【００２２】
なお、視差算出部１０２ｂは、記憶媒体１０５に保存された一組の入力画像について、ユーザにより指定されたタイミングで視差を算出してもよい。また、一組の入力画像は静止画に限らず動画でもよい。この場合、一組の動画のそれぞれを構成する同タイミングのフレーム画像間の視差が算出される。
【００２３】
システムコントローラ１０６は、撮像部１０１および画像処理部１０２の動作を制御する。また、システムコントローラ１０６は、撮像画像を液晶ディスプレイ等の表示部１０４に表示したり記録媒体１０５に保存したりする。
【００２４】
次に、撮像部１０１の構成について図３（ａ），（ｂ）を用いて説明する。図３（ａ），（ｂ）では代表的な撮像部１０１の構成を示しているが、撮像部としては被写体空間を互いに異なる複数の視点から撮像することで互いに異なる視差を含む撮像画像データ（１又は複数の撮像画像）を得ることができる構成を有すればよい。
【００２５】
図３（ａ）には、撮像レンズ（撮像光学系）２０１と撮像素子２０２とにより構成される第１のカメラユニットと、撮像レンズ２０３と撮像素子２０４とにより構成される第２のカメラユニットの２つのカメラユニットを有する撮像部１０１を示している。なお、撮像部１０１に設けられるカメラユニットは２つである必要はなく、３つ以上の複数のカメラユニットを含んでいてもよい。また、各撮像レンズは１つのレンズ素子により構成されてもよいし、複数のレンズ素子により構成されてもよい。このような構成の撮像部１０１を有する撮像装置は、多眼カメラ、カメラアレイまたはステレオカメラ等と称される。
【００２６】
複数のカメラユニットが同時に被写体空間における被写体面２００を撮像することで一組の撮像画像が生成される。複数のカメラユニットは互いに異なる視点に配置されているため、被写体面２００を互いに異なる複数の視点に対応する撮像画像データを取得することができる。また、複数のカメラユニットの配置方向と平行な直線被写体に対しては視差が付かないので、３つ以上のカメラユニットについては同一直線上に並ばないように配置する方が、後述する視差算出（推定）に対するロバスト性の観点から有利である。
【００２７】
また、図３（ｂ）には、撮像レンズ２１１と撮像素子２１３との間にマイクロレンズアレイ２１２が配置された撮像部１０１を示している。このような撮像部１０１を有する撮像装置は、プレノプティックカメラと称される。マイクロレンズアレイ２１２は、複数の微小な凸レンズを２次元アレイ状に配置することで構成される。撮像レンズ２１１は１つのレンズ素子により構成されてもよいし、複数のレンズ素子により構成されてもよい。
【００２８】
被写体面２００の同一点から発せられて撮像レンズ２１１に入射した光束２１４，２１５は、マイクロレンズアレイ２１２のうち同一の凸レンズを通過して撮像素子２１３における互いに異なる画素（受光素子）２１６，２１７に到達する。このようなプレノプティックカメラは、マイクロレンズアレイ２１２の作用によって撮像レンズ２１１の射出瞳のうち互いに異なる瞳領域を通過した光束を弁別することができる。
【００２９】
具体的には、撮像レンズ２１１の射出瞳のうち上半分（平面視における右半分）の瞳領域を通過した光束２１４は撮像素子２１３の画素２１７等のＲ画素に入射する。また、射出瞳の下半分（平面視における左半分）の領域を通過した光束２１５は撮像素子２１３の画素２１６等のＬ画素に入射する。このように、撮像レンズ２１１の射出瞳のうち互いに異なる瞳領域を通過した光束が撮像素子２１３における互いに異なる画素に入射するため、これら光束を弁別することができる。
【００３０】
そして、撮像素子２１３における複数のＲ画素の信号を抜き出して再配置することで、撮像レンズ２１１の右瞳領域を視点とするＲ撮像画像を生成することができる。また、複数のＬ画素の信号を抜き出して再配置することで、撮像レンズ２１１の左瞳領域を視点とするＬ撮像画像を生成することができる。
【００３１】
なお、図３（ｂ）ではマイクロレンズアレイ２１２の１つの凸レンズに対して２つの画素が配置される撮像素子２１３を示しているが、３つ以上の画素が配置されてもよく、１つの凸レンズに対する画素数に応じた視点数の画像を生成することができる。
【００３２】
次に、画像処理部１０２が行う視差算出処理について、図４のフローチャートを用いて説明する。画像処理コンピュータにより構成される画像処理部１０２のうち視差算出部１０２ｂがコンピュータプログラムである画像処理プログラムに従って本処理を実行する。
【００３３】
ステップＳ１０１では、視差算出部１０２ｂは、事前に用意されて記憶部１０３に記憶された複数の参照パターンデータのうち複数の特定参照パターンデータとこれらに対応する参照視差群とを取得する。参照パターンデータの生成方法（学習方法）および参照視差群の算出方法については後に詳しく説明する。
【００３４】
視差算出部１０２ｂは、複数の特定参照パターンデータを前述したように視差想定範囲に基づいて選択する。視差算出部１０２ｂは、想定視差範囲を撮像装置１００の構成や想定される被写体までの距離に基づいて設定する。ここにいう撮像装置１００の構成とは、視点数、撮像素子の画素ピッチ、撮像光学系の焦点距離、複数の視点（カメラユニット）の基線長、基線方向および輻輳角、プレノプティックカメラのＦ値やフォーカス位置等である。すなわち、撮像装置１００の構成は、撮像装置により生成された一組の撮像画像間に発生する視差に影響する様々な要素を含む。言い換えれば、撮像装置１００の構成とは、一組の撮像画像間に発生する視差に関する撮像条件である。
【００３５】
特定参照パターンデータの数が多いほど視差算出における計算負荷が増加するので、想定視差範囲に基づいて最小限の数の特定参照パターンデータを用いることにより視差算出における計算負荷を軽減することができる。
【００３６】
ステップＳ１０２では、視差算出部１０２ｂは、撮像部１０１が生成した一組の撮像画像を取得し、各撮像画像から入力画像を取得する。すなわち、一組の入力画像を取得する。
【００３７】
撮像画像がＲＧＢ（Red, Green, Blue）等の複数の色成分で表されている場合には、これら複数の色成分を１つの色成分に変換することにより入力画像を取得（生成）する。例えば、全ての色成分を平均化することでグレースケールの色成分の入力画像を生成したり任意の変換式を用いて１つの色成分に変換することで入力画像を生成したりする。また、複数の色成分のうち代表的な１つの色成分を入力画像として取得してもよい。また、複数の色成分をすべて入力画像として取得してもよい。この場合、色成分ごとに視差を算出してその平均値を入力画像の視差としてもよい。
【００３８】
さらに、１つの色成分は、それをそのまま入力画像として取得してもよいし、微分フィルタを用いて輝度変化を表す入力画像に変換してもよい。複数の色成分を、それらの平均値を差し引いた上でコントラストを揃えて入力画像として取得してもよい。これらの入力画像取得処理を行うことにより、撮像画像の明暗や撮像部１０１でのヴィネッティングの影響を低減し、より正確に視差の算出を行うことが可能な入力画像を取得することができる。なお、微分フィルタを用いる場合は、後述する学習画像に対しても同様の処理を行うことが望ましい。
【００３９】
ステップＳ１０３では、視差算出部１０２ｂは、一組の入力画像と選択した複数の特定参照パターンデータとを用いて係数群を算出する。具体的には、視差算出部１０２ｂは、複数の特定参照パターンデータに乗じることで一組の入力画像を表すことができる係数群を算出可能な任意の関数に該入力画像を代入することで係数群を算出する。関数の計算量によって入力画像の視差算出における計算負荷が大きく左右されるため、できるだけ計算量を少なくすることができる関数を用いることが望ましい。なお、入力画像は、計算負荷を軽減する観点から、複数の特定参照パターンデータの組合せで表されることが望ましい。入力画像を表す特定参照パターンデータの数が１つであると、入力画像を正確に表すためにはその特定参照パターンデータに非常に多くの参照パターンのデータを含める必要があり、計算負荷が増大するためである。
【００４０】
本実施例では、上記関数として、特定参照パターンデータに基づいた行列演算を用いる。一組の入力画像を列ベクトルｉとし、特定参照パターンデータを列ベクトルとしたときに複数の特定参照パターンデータのそれぞれを列成分として持つ（つまりは配列した）行列を変換行列Ｄとし、係数群を列ベクトルαで表す。この場合、以下の式（１）のように変換行列Ｄの一般化逆行列Ｄ−１に列ベクトルｉを乗じることで列ベクトルαが求められる。
【００４１】
【数１】
2018081378.tif 000003
【００４２】
変換行列Ｄが正則行列である場合は、一般化逆行列Ｄ−１は行列Ｄの逆行列を指す。なお、図１に示すように、各参照パターンは入力画像間の視差を表すだけでなく明暗や構造も表すため、参照パターンには視点間で同一のパターン等、視差を表さないものも含まれる。視差算出において視差を表さない参照パターンは必要ないため、変換行列Ｄの一般化逆行列Ｄ−１から視差を表さない参照パターンを除いて以後の処理に用いてもよいし、そのまま用いてもよい。
【００４３】
ステップＳ１０４では、視差算出部１０２ｂは、ステップＳ１０３で求めた係数群と複数の特定参照パターンデータに対応する参照視差群とを用いて一組の入力画像の視差を算出（推定）する。参照視差群を行ベクトルｄとし、任意の１つの視点を基準とした一組の入力画像間の視差をスカラー量ｐとすると、ｐは以下の式（２）に示すようにｄの各要素（ｄｉ）とαの各要素（αｉ）と符号調整項ｊとの積の総和で求められる。
【００４４】
【数２】
2018081378.tif 000004
【００４５】
参照パターンの濃淡反転等を表現するために、係数群αは正と負の両方の値を取り得る。しかし、係数の符号の違いは視差が発生する方向には関係なく、一組の入力画像の視差の算出においては該係数の大きさのみが用いられる。したがって、係数が負の場合は、係数あるいは対応する参照視差のどちらか一方の符号を反転させることによって、係数と参照視差との積の符号を、常に参照視差の符号と一致させる必要がある。本実施例では、符号を反転させる方法として符号調整項ｊを用いて係数と同じ符号の値を乗じる手法を用いているが、αの絶対値をとる手法を用いてもよい。これにより、入力画像の色や明暗の違いによる影響を低減し、視差の算出精度を向上させることができる。
【００４６】
次に、参照パターンデータの生成方法について図５のフローチャートを用いて説明する。本実施例では、参照パターンデータを機械学習によって生成（算出）する。機械学習は、視差算出の前であれば、撮像装置１００の学習部１０２ａで行ってもよいし、撮像装置１００とは別の演算装置で行ってもよい。本実施例では、学習部１０２ａで機械学習を行う場合について説明する。
【００４７】
ステップＳ２０１では、学習部１０２ａは、複数の視点から被写体を撮像することにより生成された一組の撮像画像の少なくとも一部から、該複数の視点のうち一組の視点から撮像された同一被写体位置の画像の組を複数の被写体位置について抽出する。そして、このように抽出した視点ごとの複数の被写体位置の画像の集合を１つの学習画像とし、一組の視点に対応する学習画像の組を学習画像データとしての一組の学習画像とする。なお、学習画像の元となる上記撮像画像は、被写体の撮像をコンピュータでシミュレーションして生成された画像であってもよい。
【００４８】
１つの学習画像を構成する撮像画像からそれぞれ抽出された画像のサイズは、入力画像と同じサイズの画像であってもよいし、入力画像とは異なるサイズの学習画像を入力画像のサイズに合わせて拡大または縮小して用いてもよい。一般に、撮像装置の構成に応じて撮像画像にて発生する視差が異なるため、参照パターンデータは撮像装置の構成に基づいて設定された視差を有する学習画像から生成することが望ましい。これにより、学習画像から生成される参照パターンデータと一組の入力画像に含まれる視差とを同等にすることができ、発生しない視差ずれ量を参照パターンデータから排除することができるので、入力画像の視差算出における精度や計算速度が向上する。学習部１０２ａは、視点の組が互いに異なる複数組の学習画像を生成する。
【００４９】
ステップＳ２０２では、学習部１０２ａは、ステップＳ２０１で生成した複数組の学習画像（複数の学習画像データ）を用いた機械学習により複数の参照パターンデータを生成する。参照パターンデータを求めるために、以下の式（３）に示すように、学習画像を変換行列Ｄと係数行列Ａとの積で表したときの誤差を最小にする変換行列Ｄを最適化によって求める。
【００５０】
【数３】
2018081378.tif 000005
【００５１】
係数行列Ａは、一組の学習画像に対応する係数群を列ベクトルとしたときに複数組の学習画像のそれぞれの係数群を複数の列成分として持つ行列を表す。また、Ｌは一組の学習画像を列ベクトルとしたときに複数組の学習画像のそれぞれを複数の列成分として持つ行列を表す。
2018081378.tif 000006
【００５２】
はフロベニウスノルムを、
2018081378.tif 000007
【００５３】
はＬ０ノルムを、ｋは任意の定数を表す。変換行列Ｄや行列Ａの初期値は任意の値でよく、例えば乱数から決定するとよい。行列ＡのＬ０ノルムでの最適化に制約を課すことで、少ない参照パターンデータの組合せで行列Ｌを表すことができる。これについて、例えば以下の参考文献に詳しい。
［参考文献］K. Marwah, et al., “Compressive Light Field Photography using Overcomplete Dictionaries and Optimized Projections.” Proc. of SIGGRAPH 2013 (ACM Transactions on Graphics 32, 4), 2013.
変換行列Ｄの各列成分としての列ベクトルは一組の参照パターンを表しているので、変換行列Ｄから該一組の参照パターンを示すデータである参照パターンデータを求めることができる。
【００５４】
ステップＳ２０３では、学習部１０２ａは参照パターンデータに対応する視差を求める。視差を求める方法としては、任意の方法を用いることができる。例えば、ブロックマッチングを用いて視差を求める方法でもよいし、ライトフィールド（以下、ＬＦと略記する）の断面の傾きから視差を求める方法でもよい。ここでは、ＬＦの断面の傾きから視差を求める方法について説明する。
【００５５】
ここではまず、ＬＦの定義について説明する。ＬＦは被写体から撮像面に入射する光線の入射位置、入射方向および強度の情報を示す空間である。一般には、撮像面上で光線が入射する点の空間座標（ｘ，ｙ）と光線の方向を示す方向座標（ｕ，ｖ）とを用いて、４次元空間（ｘ，ｙ，ｕ，ｖ）として表される。方向座標（ｕ，ｖ）は、ｘｙ平面に平行で所定の距離だけ離れたｕｖ平面において光線が通過する点の空間座標であり、視点位置と対応付けることができる。一組の参照パターンはそれぞれ視点ごとの２次元画像であり、視点の位置を（ｕ，ｖ）とし、２次元画像内の座標を（ｘ，ｙ）で表せば、上記の対応関係に基づいて４次元のＬＦデータ（ｘ，ｙ，ｕ，ｖ）に変換することができる。視差を求める際は、１次元の空間座標および１次元の方向座標により表現されるＬＦの２次元断面が用いられる。２次元断面は、（ｘ，ｕ）あるいは（ｙ，ｖ）で表される。ここで、２次元断面は１つの断面に限定されるものではなく、（ｘ，ｕ）および（ｙ，ｖ）の両方の２次元断面を用いて視差を求めることもできる。
【００５６】
図６には、２次元断面を（ｘ，ｕ）で表した例を示す。図６に示すように、被写体２２１の同一点に対応するデータ点は、ＬＦの２次元断面において線分を形成する。これは、被写体２２１の同一点から出射した光線の空間座標ｘまたはｙの位置が、方向座標ｕまたはｖの変化に対応して移動するためである。この線分の傾きは、異なる視点から入射した光線が撮像素子上でどれだけ異なる位置に入射するか、つまり異なる視点から見た場合の複数の画像間にどれだけの視差が生じるかを示している。そこで、この傾きを参照パターンデータに対応する視差として、複数の参照パターンデータの全てについて視差を事前に求める。
【００５７】
本実施例では、計算負荷が大きくなり易い複数の参照パターンデータに対応する視差の算出を入力画像の視差算出の前に行い、該入力画像に対しては選択した複数の特定参照パターンに対応する参照視差群と係数群とを用いた単純な演算により視差を算出する。これにより、入力画像の視差算出における計算負荷を軽減させることが可能となる。
【００５８】
算出された入力画像の視差は、撮像装置の構成（基線長等）に基づいて距離に変換することができる。そして、求めた距離の情報は、深度が深い撮像画像に対して距離に応じたぼけを付加する処理や撮像時のオートフォーカス等に利用することができる。また、撮像装置１００を車載カメラとして構成し、距離情報や撮像画像から周囲の障害物を認識して自走する自動運転や衝突を回避するための運転補助（ブレーキ制御等）に利用することもできる。
【００５９】
また、本実施例では撮像装置１００に学習部１０２ａを設ける場合について説明したが、予め学習した結果を記憶部１０３に記憶させておくことで、撮像装置１００に学習部１０２ａを設けなくてもよい。
【実施例２】
【００６０】
次に、本発明の実施例２である画像処理システムについて説明する。本実施例では、入力画像の視差算出を行う画像処理装置と、撮像画像を生成する撮像装置と、機械学習を行うサーバーとが個別に存在している。また、画像処理装置には、多眼カメラやプレノプティックカメラ等の様々な撮像装置を接続することができ、接続された撮像装置の構成に応じて使用する変換行列を切り替える。本実施例にいう撮像装置の構成も、実施例１と同様に、視点数、撮像素子の画素ピッチ、撮像光学系の焦点距離、複数の視点（カメラユニット）の基線長、基線方向および輻輳角、プレノプティックカメラのＦ値やフォーカス位置等である。言い換えれば、一組の撮像画像間に発生する視差に関する撮像条件である。
【００６１】
また、本実施例では、撮像時に想定される視差の大きさに応じて、入力画像の視差算出に使用する変換行列を取得するための学習画像を取得する。これにより、より高精度な視差算出を可能とする。
【００６２】
本実施例における画像処理システムは、図７に示す構成を有する。撮像装置３００の構成は、実施例１の撮像装置１００から画像処理部１０２を除いたものと同じである。撮像装置３００により生成された一組の撮像画像は画像処理装置３０１に送られ、画像処理装置３０１内の記憶部３０２に記憶される。画像処理装置３０１は、有線または無線通信により直接またはネットワークを介してサーバー３０４と接続されている。
【００６３】
サーバー３０４は、複数の参照パターンデータを生成し、さらに変換行列と参照視差群を機械学習により生成（算出）する学習部３０５と、これら変換行列および参照視差群を記憶する記憶部３０６とを有する。画像処理装置３０１は、サーバー３０４の記憶部３０６から変換行列と参照視差群を取得する。視差算出部３０３は、それら変換行列と参照視差群を用いて、一組の入力画像の視差を算出する。算出された入力画像の視差は、撮像画像に対するぼけ付加処理等の画像処理に利用され、該画像処理後の画像は、表示装置３０７、記録媒体３０８および出力装置３０９のうち少なくとも１つに出力される。
【００６４】
表示装置３０７は、液晶ディスプレイやプロジェクタ等である。記録媒体３０８は、半導体メモリ、ハードディスクまたはネットワーク上のサーバー等である。出力装置３０９は、プリンタ等である。画像処理装置３０１は、必要に応じて現像処理やその他の画像処理を行う機能を有していてもよい。
【００６５】
次に、画像処理コンピュータにより構成される視差算出部３０３で行う視差算出処理を、図８のフローチャートを用いて説明する。
【００６６】
ステップＳ３０１では、視差算出部３０３は、撮像装置３００から一組の撮像画像を取得するとともに、サーバー３０４から撮像装置３００の構成に応じた変換行列を取得する。サーバー３０４の学習部３０５は、後述するように、撮像装置３００の構成、用いる参照パターンデータの数および画像サイズ等の条件が異なる変換行列を複数生成して記憶部３０６に保持させている。
【００６７】
視差算出部３０３は、記憶部３０６から、一組の撮像画像が生成された撮像時の撮像装置３００の構成等の条件に合致する１つの変換行列（つまりはその条件での想定視差範囲内の視差に対応する複数の特定参照パターンデータ）を取得する。また、記憶部３０６に広い範囲の視差に対応する単一の変換行列を保持させておき、該変換行列から、想定視差範囲に対応する特定参照パターンデータのみを取得してもよい。なお、参照パターンデータの生成方法は実施例１で図５のフローチャートを用いて説明した方法と同じである。
【００６８】
また、所望の処理時間に応じて変換行列を切り替えることもできる。例えば、精度よりも高速な処理が重要である場合は、画像サイズが小さい学習画像からの学習により生成した少数の参照パターンデータを含む変換行列を用いるとよい。
【００６９】
ステップＳ３０２では、視差算出部３０３は、一組の撮像画像に対して平滑化処理を行う。平滑化処理を行うことによって、撮像画像に含まれる雑音成分を取り除き、視差算出の誤差を低減させる。平滑化処理としては、例えば、ガウシアンフィルタやバイラテラルフィルタを撮像画像に適用する。なお、ステップＳ３０２を次に説明するステップＳ３０３の後に行ってもよい。その場合は、撮像画像ではなく入力画像に対して平滑化処理を行う。
【００７０】
ステップＳ３０３では、視差算出部３０３は、予め設定した画像サイズに合わせて、一組の撮像画像のうち後述するステップ３０６において視差を算出する領域（視差算出領域）から複数組の入力画像を抽出（取得）する。この際、視差算出部３０３は、複数組の入力画像を互いに重複しないように抽出してもよいし、部分的に重複するように抽出してもよい。ただし、一組の入力画像から１つの視差を算出するため、重複しないように複数組の入力画像を抽出した場合は、算出された視差の分布、すなわち視差マップの解像度が入力画像と比べて低下する。言い換えれば、複数組の入力画像を部分的に重複するように抽出することで視差マップの解像度を高めることができる。
【００７１】
なお、撮像画像のサイズが予め設定した画像サイズと同じである場合は、撮像画像の全体から入力画像を抽出する。抽出した入力画像内で視差算出を行うため、設定する画像サイズによって求める視差が影響を受ける。例えば、設定する画像サイズより大きい視差は、入力画像内で変化を捉えきれないため、正確な視差の算出が困難である。逆に、設定する画像サイズが撮像画像の視差より大きすぎる場合は、処理するデータ量が増えることにより計算負荷が増加する。このため、撮像装置の構成等から一組の撮像画像で発生すると想定される視差に応じて画像サイズを決定することが望ましい。
【００７２】
また、視差を算出する入力画像のサイズを、視差を算出しない入力画像のサイズよりも小さくしてもよい。この際、参照パターンのサイズも入力画像のサイズに合わせて予め設定したり、参照パターンを拡大、縮小またはトリミングして用いたりする。これにより、視差を算出する入力画像のサイズを最小限にしながら、大きい視差による変化を捉えることができ、全ての入力画像を同一のサイズとして視差を算出する場合よりも計算負荷を軽減することができる。また、本ステップでは、一組の入力画像を列ベクトルとしたときに、複数組の入力画像を複数の列成分に持つ行列Ｉを生成する。入力画像を行列の形でまとめておくことで、以降の処理を画像全体で一括して行うことができ、視差算出の計算負荷を軽減することができる。
【００７３】
ステップＳ３０４では、視差算出部３０３は、記憶部３０６から変換行列Ｄを取得し、以下の式（４）に示すように行列Ｉと変換行列Ｄの一般化逆行列との積を計算することで係数行列Ａを求める。
【００７４】
【数４】
2018081378.tif 000008
【００７５】
ステップＳ３０５では、視差算出部３０３は、係数行列Ａの各要素をＮ乗（Ｎは正の偶数）して各係数の符号を正にすることで、入力画像の明暗や色の変化の影響を低減させる。Ｎの大きさによって各係数の重みのバランスを調整することができる。また、係数行列Ａの各列のベクトルの大きさは、入力画像の明暗の大きさによって影響を受ける。それは、参照パターンは視差だけでなく明暗も表しており、入力画像の明暗が変われば、それに合わせて係数の大きさも変える必要があるからである。このため、係数行列Ａの各列を正規化して列ベクトルの大きさを一定の値に揃えた行列Ｂを求めることによって、入力画像の明暗の影響を低減させ、視差の推定精度を向上させることができる。
【００７６】
ステップＳ３０６では、視差算出部３０３は、以下の式（５）に示すように参照視差群を表す行ベクトルｄに行列Ｂ（つまりは係数群）を乗じることにより、各組の入力画像の視差を表す行ベクトルＰを求める。
【００７７】
【数５】
2018081378.tif 000009
【００７８】
ここで求めた視差Ｐを入力画像の位置に応じて並び変えることで、撮像画像のうち視差算出領域全体の視差マップを求めることができる。
【００７９】
ステップＳ３０７では、視差算出部３０３は、ステップＳ３０５で求めた行列Ｂに基づいてステップＳ３０６で求めた視差の信頼度を算出する。一般に、画素値の変動が小さい領域（テクスチャレス領域）では視点間で変化が現れにくいため視差の算出が難しい。例えば、画素値の変動が十分大きい領域では、図９（ａ）に示すように参照視差を横軸とし、対応する係数の大きさを縦軸としてプロットしたときに、特定の視差に大きい係数が偏る。それに対して、テクスチャレス領域では、図９（ｂ）に示すように、特定の視差に係数が偏らず、係数の分布がばらつく。そこで、係数が予め設定した値よりも大きく、かつ対応する視差の分散も大きい領域は、算出した視差の信頼度が低いと判定する。
【００８０】
ステップＳ３０８では、視差算出部３０３は、ステップＳ３０７で求めた信頼度に基づいて、テクスチャレス領域等の視差の算出精度が低い領域の視差を補正する。例えば、視差の信頼度が低い領域については視差の算出を行わず、その領域の周辺で視差の信頼度が高い領域の視差を用いて補間により求める。
【００８１】
次に、学習部３０５における参照パターンデータ、変換行列および参照視差群の生成方法について、実施例１でも用いた図５のフローチャートを用いて説明する。学習部３０５は、ステップＳ２０１において、撮像装置や被写体が異なる様々な条件において実際の撮像またはシミュレーションにより生成した撮像画像（視差画像）を用いて学習画像を生成する。そして、学習部３０５は、ステップＳ２０２において、上記条件ごとに学習画像を用いた機械学習によって変換行列Ｄを求め、該変換行列Ｄから参照パターンデータを生成する。
【００８２】
さらに学習部３０５は、ステップＳ２０３において、視差の分布（視差マップ）が既知である視差画像を用いて参照視差群を算出する。具体的には、学習部３０５は、変換行列Ｄを用いて、視差算出部３０３に代わって図８のステップＳ３０１からステップＳ３０５までの処理を行うことで行列Ｂを求める。ここではステップＳ３０３において視差マップが既知である撮像画像としての視差画像を入力画像として用いる。
【００８３】
次に、学習部３０５は、式（６）に示すように、求めたい参照視差群を表す参照視差ベクトルｄと行列Ｂとの積が視差マップを行ベクトルで表したときの正解視差ベクトルＲを正確に表すように最適化を行う。
【００８４】
【数６】
2018081378.tif 000010
【００８５】
2018081378.tif 000011
【００８６】
はＬ２ノルムを表す。以上の処理では、用いる画像内で比較して視差を算出するため、画像サイズよりも大きい視差を求めることは難しい。このため、参照視差ベクトルｄの各要素に対して画像サイズを上限値とする制限を加えて最適化を行った方が、参照視差ベクトルｄの算出精度の面で有利である。また、参照パターンデータは必ずしも学習によって生成する必要はなく、４次元離散コサイン変換等の画像圧縮で使われる変換基底画像から生成してもよい。
【００８７】
こうしてステップＳ２０１で視差画像を生成する撮像装置の構成を変化させながらステップＳ２０２，Ｓ２０３の処理を繰り返すことで、様々な視差の情報を含む複数の変換行列（参照パターンデータ）とこれらに対応する参照視差群とを生成することができる。
【００８８】
本実施例によれば、一組の入力画像の視差を算出する際の計算負荷を軽減させることが可能な画像処理システムを実現することができる。
（その他の実施例）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【００８９】
以上説明した各実施例は代表的な例にすぎず、本発明の実施に際しては、各実施例に対して種々の変形や変更が可能である。
【符号の説明】
【００９０】
１００，３００  撮像装置
１０２  画像処置部
１０２ｂ，３０３  視差算出部
３０１  画像処理装置
【図１】
2018081378.tif 000012
【図２】
2018081378.tif 000013
【図３】
2018081378.tif 000014
【図４】
2018081378.tif 000015
【図５】
2018081378.tif 000016
【図６】
2018081378.tif 000017
【図７】
2018081378.tif 000018
【図８】
2018081378.tif 000019
【図９】
2018081378.tif 000020