以下、本発明の一実施形態について、添付図面を参照して詳細に説明する。図1は、本発明の画像処理装置の一実施形態であるカメラシステムの構成を示す図であり、図1(a)は中央断面図、図1(b)は電気的構成を示すブロック図である。なお、本実施形態のカメラシステムは、被写体の3次元形状の情報を取得することが可能であるため、3Dスキャナと呼ぶこともできる。
図1(a)において、カメラシステム100は、カメラ本体1と、カメラ本体1に着脱自在に装着されるレンズユニット2を備えて構成されている。カメラ本体1は、撮像素子6、クイックリターンミラー14、表示部9、レンズユニット2との電気接点11、慣性センサ15を備えている。また、レンズユニット2は、光軸4に沿って複数のレンズからなる撮影光学系3が配置されて構成されている。レンズユニット2は、レンズユニット2の全体を制御するレンズシステム制御回路12を備えている。本実施形態では、撮像素子6はRGBのカラーフィルタを用いてマイクロレンズ単位でベイヤ配列で構成されたCMOSセンサであるとする。しかし、撮像素子6の構成としてはこれに限らない。
図1(b)において、カメラ本体1は、電気的ブロックとして、カメラシステム制御回路5、画像処理部7、メモリ部8、操作検出部10、表示部9を備えている。また、レンズユニット2は、電気的ブロックとして、レンズシステム制御回路12、レンズ駆動部13を備えている。
カメラ本体1とレンズユニット2とからなるカメラシステム100は、大きく分けて、撮像部、画像処理部、記録再生部、制御部で構成される。撮像部は、撮影光学系3 、撮像素子6を含み、画像処理部は、画像処理部7を含む。また、記録再生部は、メモリ部8、表示部9を含み、制御部は、カメラシステム制御回路5、操作検出部10、およびレンズシステム制御回路12、レンズ駆動部13を含む。カメラシステム制御回路5は、カメラ本体1およびレンズユニット2から得られる信号に基づいて、システム全体の制御を統括する。レンズ駆動部13は、フォーカスレンズ31、ブレ補正レンズ、絞りなどを駆動する。
撮像部は、物体からの光を、撮影光学系3を介して撮像素子6の撮像面に結像させる。撮像素子6の表面にはマイクロレンズが格子状に配置されており、マイクロレンズアレイ(以下 MLA)を形成している。MLAの機能や配置の詳細については図2を用いて後述する。後述するように、撮像素子6の信号からピント評価量および適切な露光量が得られるので、これらの信号に基づいて撮影光学系3が調整される。これにより、適切な光量の物体光を撮像素子6に露光させるとともに、撮像素子6の近傍に被写体像を結像させることができる。
画像処理部7は、内部にA/D変換器、ホワイトバランス調整回路、ガンマ補正回路、補間演算回路等を有しており、記録用の画像を生成する。色補間処理部は、この画像処理部7に備えられており、撮像素子6から得られたベイヤ配列の信号に色補間(デモザイキング)処理を施してカラー画像を生成する。また、画像処理部7は後述する機能として、信号の並べ替えを行い視点の異なる像を生成する、視点の異なる像から深さ情報に相当する被写体の距離を算出する、セグメントに分割する、質感情報を取得するという機能を有しており、物体情報取得手段として動作する。
メモリ部8は実際の記憶部に加えて記録に必要な処理回路を備えている。メモリ部8は、記録を行うとともに、表示部9に出力する画像を生成し、保存する。さらに、メモリ部8は、予め定められた方法を用いて静止画、動画、音声などの圧縮を行う。
カメラシステム制御回路5は撮像の際のタイミング信号などを生成して出力する。外部操作に応答して撮像部、画像処理部、記録再生部をそれぞれ制御する。例えば、不図示のシャッターレリーズボタンの押下を操作検出部10が検出して、撮像素子6の駆動、画像処理部7の動作、メモリ部8の圧縮処理などを制御する。さらに表示部9による画像の表示を制御する。
次に、撮影光学系3の調整動作について説明する。カメラシステム制御回路5には画像処理部7が接続されており、撮像素子6からの信号に基づいて焦点位置、絞り位置を求める。カメラシステム制御回路5は、電気接点11を介してレンズシステム制御回路12に指令を出し、レンズシステム制御回路12はレンズ駆動部13を制御する。さらにレンズシステム制御回路12には不図示の手ぶれ検出センサが接続されており、手ぶれ補正を行うモードにおいては、手ぶれ検出センサの信号に基づいてレンズ駆動部13を介してブレ補正レンズを制御する。
また、カメラ本体1は慣性センサ15を備えており、カメラ本体1の位置、姿勢を計測することが可能である。これにより、例えば、連続して撮影した画像の相対的な視点の違いを計測することが可能である。
図2は、本実施形態における撮影光学系の要部を説明する図である。本実施形態では、光線の位置に加えて光線の入射角度の情報(視差の異なる像ともいえる)を取得することができる。本実施形態では、光線の入射角度の情報の取得のために撮影光学系3の結像面近傍にマイクロレンズアレイ(以下MLA)20を配置するとともに、MLA20を構成する1つのレンズに対して複数の画素を対応させている。
図2(a)は撮像素子6とMLA20の関係を模式的に示す図である。図2(b)は撮像素子の画素とMLA20の対応を示す模式図である。図2(c)はMLA20によってMLA20下に設けられた画素が特定の瞳領域と対応づけられることを示す図である。
図2(a)に示すように撮像素子6上にはMLA20が設けられており、MLA20の前側主点は撮影光学系3の結像面近傍になるように配置されている。図2(a)はカメラシステム100の横からと、正面からMLA20を見た状態を示しており、カメラシステム100の正面から見るとMLA20のレンズが撮像素子6上の画素を覆うように配置されている。なお、図2(a)ではMLA20を構成する各マイクロレンズを見やすくするために、大きく記載したが、実際には各マイクロレンズは画素の数倍程度の大きさしかない。実際の大きさについては図2(b)を用いて説明する。
図2(b)は図2(a)のカメラ正面からの図を一部拡大した図である。図2(b)に示す格子状の枠は、撮像素子6の各画素を示している。一方MLA20を構成する各マイクロレンズは太い円21で示した。図2(b)から明らかなように、1つのマイクロレンズ21に対して複数の画素が割り当てられており、図2(b)の例では、5行×5列=25個の画素が1つのマイクロレンズ21に対して設けられている。すなわち、各マイクロレンズ21の大きさは1つの画素の大きさの5倍×5倍の大きさである。
図2(c)の下方に示した図は撮像素子6を、1つのマイクロレンズの光軸を含み撮像素子6の長手方向が図の横方向になるように切断した図である。図2(c)の20a,20b,20c,20d,20eは撮像素子6の画素(1つの光電変換部)を示している。一方、図2(c)の上方に示した図は撮影光学系3の射出瞳面を示している。実際には、図2(c)の下方に示した撮像素子の図と方向を合わせると、射出瞳面は図2(c)の紙面垂直方向になるが、説明を分かりやすくするために投影方向を変化させている。また、図2(c)においては説明を分かりやすくするために、1次元の投影および信号処理について説明する。実際の装置においては、これを容易に2次元に拡張することができる。
図2(c)の画素20a,20b,20c,20d,20eは図2(b)の画素20a,20b,20c,20d,20eとそれぞれ対応する位置関係にある。図2(c)に示すように、MLA20によって各画素は撮影光学系3の射出瞳面上の特定の領域と共役になるように設計されている。図2(c)の例では画素20aと領域30aが、画素20bと領域30bが、画素20cと領域30cが、画素20dと領域30dが、画素20eと領域30eがそれぞれ対応している。すなわち画素20aには撮影光学系3の射出瞳面上の領域30aを通過した光束のみが入射する。他の画素も同様である。結果として、瞳面上での通過領域と撮像素子6上の位置関係から角度の情報を取得することが可能となる。 瞳領域30aを通過した光束のみを捉えている画素20aと同じ対応関係にある画素のみを複数のマイクロレンズ21について集めた画像と、瞳領域30aとは異なる瞳領域(たとえば30e)を通過した光束のみを捉えている画素(たとえば20e)と同じ対応関係にある画素のみを複数のマイクロレンズ21について集めた画像を考えると視点の異なる像となっている。画素20aと同じ対応関係にある画素のみ集めた画像は瞳領域30aから見たような画像となっており、画素20eと同じ対応関係にある画素のみ集めた画像は瞳領域30eから見たような画像となっている。すなわち一度の露光を行い、信号を適切に並べると、同じタイミングで露光された複数の視点の異なる像(複数の視点画像群)を得ることができる。
次に、本実施形態の質感情報を取得可能な3Dスキャナとして機能するカメラシステム100の動作について図3乃至図8を用いて説明する。
図3は本実施形態のカメラシステム100の動作を説明するフローチャートである。図3(a)はカメラシステム100でのデータ取得の動作を説明するフローチャートである。図3(b)は形状および色の取得の動作を説明するフローチャートである。図3(c)は質感取得の動作を説明するフローチャートである。図3(d)はデータ出力(3Dプリンタでの造形)の動作を説明するフローチャートである。
図3(a)は、カメラシステム100を用いて物体の形状、色および質感を取得するときの動作の要部を示している。まず、ステップS101において本実施形態の動作が開始される。カメラシステム100においては、像の取得を指示するレリーズボタンを押下することにより動作が開始される。
ステップS102において、データを出力する3Dプリンタに関する情報を取得する。これは予めユーザーによって設定されたデータ103を取得すればよい。また、カメラシステム100あるいはカメラシステム100と接続状態にあるパーソナルコンピュータ(PC)105と、接続状態にある3Dプリンタの情報を取得することで取得してもよい。3Dプリンタには多くの種類があり、プリンタによって表現可能な情報の次元が異なる。ここでいう次元とは、例えば、形状のみの3次元、RGBの色を加えた次元、さらには質感と呼ばれる反射特性や不透明度を含めた次元を指している。最も基礎的な3Dプリンタは、形状のみを表現可能である。このような3Dプリンタに出力する場合は、形状のみを取得できれば良い。一方で、質感と呼ばれる反射特性を表現可能な3Dプリンタにおいては、より多くの情報(情報の詳細については後述する)を取得する必要がある。取得すべき情報を判断して指定するための情報をステップS102で取得する。
3Dプリンタに関する情報としては、具体的には例えばプリンタIDや対応可能なファイル形式、質感情報タイプ、プリント方法などが考えられる。これらの3Dプリンタに関する情報は予めメモリに記憶されていてもよいし、ステップS102にてカメラシステム制御部5より不図示の通信インターフェースを介して3Dプリンタに3Dプリンタに関する情報の送信要求を送ることに応じて、3Dプリンタ側から受信して取得してもよい。
ステップS104において、画像を取得する。図2を用いて説明した光学系を有しているので、本実施形態におけるカメラシステム100においては、1度の露光で複数の視点の画像を得ることが出来る。そのため、ステップS104では1度の露光のみでデータを取得しても良いし、複数回の露光を行い複数の画像を取得することで、さらに視点を増やし高精細に、かつ精度よく反射特性を求めても良い。複数回の露光を利用する別の例としてはダイナミックレンジの拡張を行う場合がある。すなわち、データ103の3Dプリンタに関する情報のうち、表現できる階調がカメラシステム100の値よりも大きいときは、複数回の撮影を行いダイナミックレンジの拡張を行うこともできる。複数回の露光を行う場合の設定に関しては後述する。
ステップS105において、形状および色を取得するためのサブルーチンを呼び出す。サブルーチンの詳細については後述する。ステップS106において、ステップS102で選択された3Dプリンタが質感情報を表現可能か否かを判断する。表現可能である場合はステップS107に進みそうでない場合はステップS108に進む。
ステップS107において、質感を取得するためのサブルーチンを呼び出す。サブルーチンの詳細については後述する。ステップS108において、データを保存する。ここでは、ユーザによって、あるいはカメラシステム100またはPC105と接続状態にある3Dプリンタとして予め定められたフォーマットに従ってデータを記録する。本実施形態では、記録するデータの種類やフォーマットも出力先やユーザの設定に応じて設定可能であるとする。例えば、3Dプリンタの出力(印刷)に最低限必要な形状(ボクセル)の情報、メタデータを1ファイルで記録する形式や、質感情報を表現可能なプリンタに対応するために、取得した質感情報を同一ファイルに記録する形式である。メタデータには、設定された出力先の3Dプリンタに関する情報と、撮像日時、撮像機器の情報や用いた画像処理やパラメータ、サムネイル画像用の現像された画像、そのほか画像ファイルのメタデータとして公知の情報が記録される。質感情報はメタデータに代表値を格納してもよいし、領域ごとに形状データと同様の形式で例えば形状データ全体の後ろに並べてもよい。また、形状、質感情報に加えて元の2次元画像データを未現像(RAW画像、RAWデータ))の状態で記録してもよいし、現像後の画像データで同一ファイルに記録してもよい。複数の視点画像に対応するRAW画像を記録する形式の場合、DCF形式で画像データ部分に複数の視点画像を並べ、メタデータの部分に形状情報を格納しておく形式でもよい。形状情報は3Dプリンタに関する情報に基づいてボクセル形式からSTL形式等3Dプリンタが対応する形式に変換し、変換後の形状情報を格納するとよい。また、2次元画像データを、関連づけて別ファイルとして記録しておいてもよい。ステップS109において、データ取得の動作を終了する。
次に図3(b)を用いて、形状および色の取得を行うためのサブルーチンについて説明する。ステップS201は、メインルーチンから呼ばれたときの開始点である。ステップS202において、複数の視点からの像を生成する。図2で説明したように本実施形態の撮像素子6で得られた信号は、信号を適切に並べると同じタイミングで露光された複数の視点の異なる像を得ることが出来る。ステップS202においては、この並べ替えを行い複数の視点からの像を生成する。この時の像の相対的な視点の位置関係は図2の光学系の設定によって定まる。さらには複数回の露光によって画像を得た場合は、それぞれの信号の並べ替えを行い複数の視点の異なる像を得るとともに、慣性センサ15の信号に基づいて、像の相対的な視点の位置関係の情報を生成する。
ステップS203において、対応点の探索を行う。複数の視点から見た像の中から同一の物体に対応する点を探索する。視野枠と呼ばれる注目する領域を設定して、いわゆる位相差AFの原理に基づいて探索すればよい。この方法については後述する。別の方法としては、一方の画像中の適当な領域をテンプレートとして他方の画像で同じ部分を探索する方法、さらに別の方法としては特徴点を抽出して対応する特徴点を探索する方法などが考えられる。
ステップS204において、光学系の情報を取得する。視点間の相対的な距離および現在のピント情報を利用して、被写体までの距離を計測する。図2を用いて説明した光学系においては、撮影光学系3によってマイクロレンズ20の主点と共役になっている被写体(いわゆるピントが合っている被写体)は、同じ物体から出た光束が、通過した瞳領域によらず同じマイクロレンズに入射する。一方で、ピントが合っていない被写体は同じ物体から出た光束が、通過した瞳領域によって異なるマイクロレンズに入射する。この時のずれ量はピントのずれ量に対応しているのでこれを利用して被写体までの距離を算出する。この方法の詳細については後述する。
ステップS205において、画像における所定の横幅、所定の縦幅、所定の奥行き方向の距離からなるボクセルを生成する。このように複数の視点画像からボクセルによる3次元の形状情報を生成する手法は周知であり、特開2015−95000号公報にもあるようなSFM(Structure from Motion)法などを用いることができる。ステップS204で距離を求めたことにより、撮影した画像(X,Yの位置に関する2次元の位置情報と色に関する情報)について奥行(Z)の情報を得ることが出来る。これにより、立体的な画素であるボクセルを生成する。本実施形態では、ボクセルの値として色の情報を与えるが、出力対象の3Dプリンタでは色情報についても必ずしも必要ではなく、上述した3Dプリンタに関する情報に基づいて省略してもよい。ステップS206でメインルーチンに戻る。
次に図3(c)を用いて、質感情報の取得を行うサブルーチンについて説明する。ステップS301は、メインルーチンから呼ばれたときの開始点である。ステップS302において、セグメンテーションを施し画像を複数の領域に分割する。セグメンテーションの例は図6を用いて後述する。セグメンテーションを行わない場合はボクセル毎に以下の処理を行う。以下に説明するステップS303からステップS306の処理はステップS302で分割された領域ごとに行われる。
ステップS303において、ステップS302で分割された領域ごとに反射特性を求める。ここでいう反射特性とは質感情報の一つであり、物体のBRDF(Bidirectional Reflectance Distribution Function)などが相当する。BRDFは光が物体に入射した場合に、任意の方向にどれだけの光が反射されるかを示した関数である。図4を用いて後述するように拡散成分と正反射成分にモデル化できる。BRDFの詳細な取得方法は図4などを用いて後述する。
ステップS304において、質感情報をテンプレートマッチングする。予めメモリ上に設けられた質感データベース305のパターンと最も整合するものを選択し、その領域の質感情報とする。ステップS306において、保存用の反射特性のデータを生成する。ステップS304で得た情報と領域またはボクセル毎に対応させて保存する。別の方法としてファイルのメタデータに主被写体の特性を記録するようにしても良い。この方法を用いると、データを大幅に圧縮しながら簡単な質感提示デバイスに活用することが出来る。質感データベース305には、カメラ本体1を利用するユーザーが高い頻度で撮影する被写体の質感特性(例としては後述する人物の顔等)を登録しておけば良い。また、カメラシステム制御部5、画像処理部7により公知のテンプレートマッチングなどによる被写体検出技術により画像中に特定の被写体が検出されていた場合、その情報を補助情報として質感情報の選択に用いることができる。例えば、対象となるセグメントあるいはボクセルが人物の顔が検出されていた領域であった場合、マッチングの対象とするパターンを人物向けのものに絞ったり、特定のパターンに重みをつけて選択されやすくすることが考えられる。ステップS307でメインルーチンに戻る。
図3(a)〜図3(c)で説明した動作によって、必要に応じて(出力プリンタの特性に合わせて)質感情報を取得し、データを格納することが出来る。
図3(d)は、3Dプリンタを用いて造形を行うときの動作を示すフローチャートである。ステップS401は、動作の開始である。ステップS402において、カメラシステム100により取得されたデータを読み出す。ステップS403において、出力モードを選択する。データ取得時の動作でも説明したが、質感と呼ばれる反射特性を表現可能な3Dプリンタも提案されており、ここではどのような設定でプリントするかを設定する。サポート材と呼ばれる造型の補助材を備えた3Dプリンタがあり、そのような製品ではサポート材と接触した面はマット(つや消し)面となりそうでない面はグロッシー(光沢)面となる。最終製品として同一の形状を造形する場合であっても、サポート材の配置によってマット面、グロッシー面を制御することが出来る。これに関しては後述する。ステップS403においては、使用目的、造形時間、コスト等を勘案してユーザーの意図に沿った造形の指示がなされる。
ステップS404において、質感を表現するか否かを判断する。質感を表現する場合はステップS405に進みそうでない場合はステップS406に進む。ステップS404の別の選択方法としては、カメラ本体の種別に応じて切り替えても良い。すなわち質感情報を取得可能なカメラ本体で取得されたデータである場合は、質感を表現するステップS405に進みそうでない場合はステップS406に進むようにしても良い。
ステップS405において、質感に忠実に造形を行う。前述したサポート材の有無によって出力された面の質感を制御するような3Dプリンタにおいては、積層方向やサポート材を使用する個所を最適化して、可能な限り質感に忠実に造形を行う。ステップS406においては、質感にかかわらず造形が行われ、造形時間、コスト等に最適化された方法で造形がなされる。ステップS407において、データの出力である造形動作を終了する。図3(d)に説明した動作によって、必要に応じて(ユーザーの意図に合わせて)質感情報を出力し、適切な造形物が得られる。
次に、図4を用いて反射光の状態について説明する。図4(a)は被写体がランバート面の場合の拡散反射光の状態を示す図である。図4(b)は鏡面反射光の状態を示す図である。図4(c)は拡散反射光および鏡面反射光を含む光線をカメラシステム100でとらえる様子を模式的に示す図である。図4(d)は平行光が物体に当たっている状態をカメラシステム100でとらえる様子と、その時の信号の状態を示す図である。
図4(a)において、50は物体を、51は光線を、52は拡散反射光を、それぞれ示している。また、図4(b)において、53は鏡面反射光を、61は光線51の正反射方向をそれぞれ示している。以下に説明する反射モデルはいわゆる2色性反射モデルに基づいている(「ディジタル画像処理」 CG-ARTS協会 P.281などを参照)。
まず拡散反射を考える。拡散反射光は多くの場合完全に乱反射するような反射でモデル化され、ランバート反射と呼ばれる。このような反射をする面はランバート面と呼ばれる。図4(a)はランバート面でモデル化された反射特性を示しており、各方向への反射が均一な様子を分かりやすく示すために反射光の強度の包絡線を52で示した。拡散反射光は見る方向によって輝度が変化しない。これを式で記載すると次のようになる。
Ld(λ)=Ie(λ)Kd(λ)cosθ …(1)
ただしLd(λ)は拡散反射光の輝度、Ie(λ)は光源の輝度、Kd(λ)は拡散反射特性、θは入射角、λは波長である。
次に鏡面反射を考える。鏡面反射光は多くのモデルが提案されている。ここではCGなどで多く利用されているフォンモデルを示すが他のモデルを用いても良い。図4(b)はフォン反射モデルでモデル化された反射特性を示しており、光線51の正反射方向61に強いピークを持ち、角度が変わると急に減衰する。観察する方向によって反射光が変化する様子を分かりやすく示すために反射光の強度の包絡線を53で示した。これを式で記載すると次のようになる。
Ls(λ)=Ie(λ)(cosφ)n …(2)
ただしLs(λ)は鏡面反射光の輝度、φは正反射方向と観察方向のなす角、nは物体の特性によって決まる定数である。
上記の鏡面反射光と拡散反射光を合成したものを観察するので、任意の視点pから観察する場合は次の式のように記述される。
L(λ)=Ld(λ)+Ls(λ)
=Ie(λ)Kd(λ)cosθ+Ie(λ)(cosφp)n …(3)
ただし、L(λ)は拡散反射光と鏡面反射光を合わせた反射光の輝度、φpは正反射方向と視点pとのなす角である。
次に図4(c)を用いて、本実施形態のカメラシステム100がとらえている光線の状態について説明する。図4(c)において3は撮影光学系を、4は撮影光軸を、6は撮像素子を、30a,30eは図2(c)と対応する撮影光学系3の特定の瞳領域をそれぞれ示している。また、54は拡散反射光と鏡面反射光を加えた反射光を、φaは瞳領域30aと正反射方向61がなす角を、φeは瞳領域30eと正反射方向61がなす角をそれぞれ示している。
カメラシステム100は、図4(c)に示すように拡散反射光と鏡面反射光が合成された複雑な輝度分布54を観察している。この時、瞳領域30eを通過する光束は正反射方向61となす角が小さく、瞳領域30aを通過する光束は正反射方向61となす角が大きい。すなわち、式(3)によれば、瞳領域30aと瞳領域30eを通過する光束を比較した場合に、拡散反射光は同じ量含まれているが、鏡面反射光は強度が異なる。一方で、本実施形態のカメラシステム100は瞳の通過領域を分別して光束を取得可能な構成となっている。
図4(d)を用いて実際の撮影状況についてさらに詳しく説明する。図4(d)において50a,50b,50c,50dは物体50上の点を、6a,6b,6c,6dは撮像素子6上の物体50上の点50a,50b,50c,50dのそれぞれに対応する点をそれぞれ示している。また、51a,51b,51c,51dは点50a,50b,50c,50dに入射する光線を、61a,61b,61c,61dは光線51a,51b,51c,51dの正反射方向を示す線をそれぞれ示している。さらに、152a,152eは瞳領域30a、30eを通過した信号の輝度を、153は瞳領域30aを通過した点50c上の輝度を、154は瞳領域30eを通過した点50c上の輝度を、155は拡散反射光のレベルをそれぞれ示している。
図4(d)は平行光が物体50にあたって、その反射光を撮像している様子を示している。図4(c)の説明では省略したが、撮像素子6上には物体の様々な個所の反射光が結像している。例えば図4(d)においては物体50上の点50a,50b,50c,50dはそれぞれ撮像素子上の点6a,6b,6c,6dに対応している。図4(d)の例では説明を分かりやすくするために撮影光学系3のピントは物体50に合っているように記載した。すなわち瞳通過領域によらず物体側の点は撮像素子上の同じ位置に結像している。一方で、撮影光学系3のピントが物体50に合っていない場合は瞳通過領域によって結像する位置がずれる。
このような状況で得られる信号は図4(d)の下段のような信号になる。瞳領域30aを通過した信号は152a、瞳領域30eを通過した信号は152eとして示した。ここで物体の拡散反射光レベル155は式(1)、式(3)のLd(λ)に対応している。
図4(d)の例では物体上の点50c→瞳領域30aを通過した場合の信号を153、物体上の点50c→瞳領域30eを通過した場合の信号を154として示した。信号153,154に注目すると、鏡面反射光の影響で像の一致度が低下している。図5を用いて後述するように、図4(d)には不図示の物体の輪郭などで信号152aと152eの位置合わせがなされる。
図4を用いて説明した視点に対する輝度の特性がBRDFの近似値として利用される。同一物体からの輝度のピーク値を1として正規化し、視点の変化(反射角度の変化)に対する変化を見ればよい。ここから式(3)の拡散反射成分と鏡面反射成分の比率および鏡面反射成分の光沢感を示すnを決定する。さらに簡単な例としてテンプレートマッチングする方法があるが、それについては図7を用いて後述する。
図5を用いて、図3(b)の対応点探索ステップS203の具体的な動作について説明する。図5(a)は複数の視差像を取得する様子を模式的に示した図である。矢印79は光源からの光線を、80は被写体を、矢印81,82,83は各視差像の視点からの方向をそれぞれ示している。84,85,86はそれぞれ81,82,83で示す方向から見たときの被写体を、84a,85a,86aは、それぞれ被写体像84,85,86上の鏡面反射成分の位置を示している。
図5(b)は位置合わせを行った後の状態を模式的に示す図であり、84(85および86は重なっている)は図5(a)の被写体像を示している。また、84a,85a,86aは図5(a)と同じ鏡面反射成分の位置を、81a,82a,83aは視点81,82,83からの像を位置合わせしたことを模式的に示す枠をそれぞれ示している。87は位置合わせのために用いる部分領域を模式的に示す枠を示している。
図5(c)は図5(b)の状態での枠87内の輝度分布を模式的に示した図である。図5(c)の横軸は図5(b)の横方向の位置を、縦軸は輝度を示している。図5(c)において91,92,93はそれぞれ被写体84,85,86の輝度を示すグラフ、94は背景の輝度レベル、95は被写体80の拡散反射レベル、96は拡散反射と鏡面反射を合わせた輝度レベルをそれぞれ示している。
図5(a)では3つの視点から被写体80を撮影している様子を示している。ここでは複数の視点から撮影することを模式的に示しており3視点ということには特別な意味はない。図2を用いて説明したように、本実施形態の光学系においては通常のカメラと同じ露光動作を行うことで同時に露光された複数の視差像を得ることができる。また図2の例では5視点の画像が得られるように示されている。さらに本実施形態のカメラシステム100においては時間を隔てて多数回の露光を行い、さらに多くの視差の異なる像を得ることもできる。
図5(a)に示すように複数の視点81,82,83から撮影するとそれぞれの視差像には同一の被写体80が異なる位置84,85,86に結像する。位相差を利用したオートフォーカスの原理や三角測量の原理として知られているように、視点の異なる像の相対的な位置は、視点間の距離と被写体の距離によって決まる。本実施形態に示すカメラシステム100においては、光学系の構成及び、図1に示した慣性センサ15の信号によって複数の視点の異なる像の相対的な位置関係を把握することが出来る。図5(a)では横方向にずれて結像している様子を示した。
被写体像を適当な大きさで切り出し、被写体像が一致するように位置合わせを行うと図5(b)のような像が得られる。すなわち被写体像84,85,86が重なり、反対に像の取得範囲を示す枠81a,82a,83aがずれた状態である。被写体の位置合わせに用いた枠を87で模式的に示した。枠87内の輝度分布は図5(c)に示すようになっている。ここで図5(c)は1次元的な広がりを持つように図示しているが、これはエピポーラ拘束と関連している。図5(a)の説明で横方向にずれて結像していると記載したが、これは視差が横方向にのみ生じているような視差像を用いていることを意味している。図2の例に対応させると瞳領域30a,30c,30eに対応した視差像を利用すればx方向にのみ視差を持ちこの例のようになる。この場合は縦方向には被写体像のずれは生じないので、視差方向に直交する方向(図5では縦方向)の信号を加算して画像を1次元的な広がりを持つように扱うことができる。このようにすることで計算量を削減するとともに信号のS/N比を向上させて位置合わせを行うことが可能となる。
図5(c)に示す被写体84,85,86の信号91,92,93は鏡面反射を強く含む領域84a,85a,86aでは像の一致度が低い。なお、ここでいう一致度とは、2つの像を位置合わせしたのちの差分絶対値の和を指しており、図5では2つの像を比較した時に重ならない部分の大きさのことを指している。一方で、その周辺部や被写体80のエッジでは非常に良く一致している。
鏡面反射による影響が支配的ではない場合、図5(c)に示すように被写体84,85,86は被写体エッジを利用して位置合わせがなされる。被写体の位置合わせに用いる枠87の大きさを適切に設定すれば、鏡面反射成分に引きずられて位置合わせ精度が低下することを避けることができる。
図5を用いて説明した対応点探索によれば鏡面反射成分の影響を低減させて被写体の同一点に対応する画素を検知することが出来る。同様の意味であるが、視差方向の同一物体に対応する像のずれ量を検知することが出来る。
図6を用いて、画像取得、距離変換、セグメンテーションについて説明する。図6(a)は画像取得において時間を隔てて複数回の露光を行う場合の取得方法を説明する図である。図6(b)は距離変換を具体的に説明する図である。図6(c)はセグメンテーションを模式的に示した図である。
図6(a)は図3(a)のステップS104の画像取得を説明する図であり、特に時間を隔てて複数回の露光を行う場合を説明する図である。図6(a)の番号は図4(c)の番号に準じており、同じものに同じ番号を付した。図4(c)と異なるのは、移動しながら複数枚の画像を取得するので、カメラシステム100に設けられた撮影光学系3および撮像素子6が複数描かれている点である。移動して露光するごとに’を付した。すなわち撮影光学系3に着目すると3→3’→3’’の順に露光される。
図6(a)では時間的に隣接する2つの画像において、少なくとも1つの視点が重なるように取得する様子が描かれている。すなわち、撮影光学系が3の位置にあった時の一番端の光束30aと次の時間である撮影光学系が3’の位置にあるときの反対の端の光束30e’が重なり合うようになっている。同様に光束30a’と光束30e’’も重なり合っている。撮影光学系の条件から取り込める光束の幅(30aと30eの幅)は分かっているので、図1に示した慣性センサ15の信号を参照しながらこの幅を超える前に次の露光がされるように制御すればよい。図6(a)のようにして画像を取得することで光線を必要十分に稠密に取得することが出来る。
図6(b)は図3(b)のステップS204の距離変換を説明する図である。図6(b)において3,4,6は図1と同様にそれぞれ撮影光学系、光軸、撮像素子を、70,71は物体の存在する位置を、70a,71aはそれぞれ撮影光学系3によって物体70,71と共役となっている位置を示している。ここで、撮影光学系3の主点から物体70,71、共役点70a,71aのそれぞれまでの距離を、S0,S1,S0’,S1’とする。また、ステップS203で対応点探索を行ったときに用いた像の視差方向の距離をH、検出された像面での像のずれ量をΔとする。
図5を用いて、図3(b)のステップS203に対応する対応点探索について説明した。この情報と撮影光学系の情報を用いて、物体までの距離を算出する。まず、レンズユニット2と通信することにより撮影光学系の情報(撮像素子6と共役になっている物体面の距離など)を得る。結像公式によると以下の式が成り立つ。
1/S0’=1/S0+1/f …(4)
1/S1’=1/S1+1/f …(5)
ここで三角形の相似関係から
S1’:S0’=H:(H−Δ) …(6)
このうち前述したピント状態からS0,S0’は既知である。またf,H,Δも既知なので、式(4)および式(6)からS1’を既知の値を用いて表現すると、
S1’=HfS0’/{(H−Δ)f−HS0’} …(7)
となる。さらに式(5)を用いれば、被写体までの距離を求めることが出来る。これにより被写体までの距離を算出することが出来る。
図6(c)および図6(d)は図3(c)のステップS302のセグメンテーションを説明する図である。図6(c)において、72は撮影された画像を、73は被写体を、74は顔検知の検知枠をそれぞれ示している。図6(d)において75はセグメンテーション後の画像を、76,77,78、79はそれぞれ分割された領域を示している。
図6(c)および図6(d)に示した例では、説明を分かりやすくするために被写体73のみが画面内に存在し、背景は平坦な状況を仮定している。図6(c)に示した例では人間の顔を検知している。図6(d)では被写体の距離や色の情報などを利用して画像を複数の領域に分割する。セグメンテーションはグラフカットとして画像処理ではよく知られており、そのいずれかの技術を活用すればよい。図6(d)では髪の毛の領域76、顔の肌の領域77、服の領域78、背景の領域79の4つに分割される。顔検知に対応した領域77は人の肌である可能性が非常に高いので、反射特性の検出(図3(c)のステップS303)や質感のテンプレートマッチング(図3(c)のステップS304)を省略して人の肌の特性を付与してもよい。
図7は図3(c)のステップS304のテンプレートマッチングに関する動作を説明する図である。図7(a)、図7(b)、図7(c)は反射特性の例を示したグラフであり、いずれも縦軸は正規化した光量(同一物体からの輝度のピーク値を1として正規化した光量)を、横軸は正反射光と視点がなす角を示している。ただし本実施形態のカメラシステム100においては、照明光の方向が未知なので、同一物体からの輝度がピークとなる位置を0としてそこからの相対的な位置を横軸にとる。例えば図5(c)の例であれば、84a,85a,86aの位置をそれぞれ0として相対的な角度としてプロットする。
図7(a)はマット面の反射特性を、図7(b)は鏡面に近い状態の面の反射特性を、図7(c)は図7(a)と図7(b)の中間の特性を持つ面の反射特性をそれぞれ示している。本実施形態のカメラシステム100は、多く存在する物体の反射特性をデータベースとして予めメモリ上に備えている。
本実施形態のカメラシステム100を用いると、図4および図5を用いて説明したように、図4(d)または図5(c)のような反射特性を得ることが出来る。この特性と図7に示したデータベースを比較し、最も類似するものをその領域の質感情報とすればよい。式(1)から式(3)を見ても明らかなように、特に正反射光と視点がなす角度が0度近傍が変化が大きい。このあたりの情報が得られていれば、その他の個所は推測して類似するものを当てはめればよい。図7のデータベースが多くの物体をカバーしていれば、データを圧縮しながら通常撮影する多くの物体の質感を表現することが出来る。
次に、図8を用いて本実施形態のカメラシステム100を用いた3Dプリントシステムについて説明する。図8(a)は3Dプリントシステムの構成を説明する図である。図8(b)は造形する物体の斜視図を、図8(c)、図8(d)、図8(e)はそれぞれ3Dプリンタの造形状態を説明する図を示している。図8(a)において、105はパーソナルコンピュータ(PC)を、110は3Dプリンタをそれぞれ示している。図8(b)から図8(d)において120は造形する物体を、120a,120bは物体120上の面を、121は造形を行う際のサポート材をそれぞれ示している。図8(a)に示すように、カメラシステム100で取得された情報はPC105を介して3Dプリンタ110に送られる。PC105ではフォーマットの変換やユーザーによる造形時の指示がなされる。
また、図3のステップS102において3Dプリンタに関する情報を外部から取得する場合、カメラシステム100はPC105あるいはPC105を介して3Dプリンタ110にプリンタの種別を示すプリンタIDやスペック情報の送信要求を出す。PC105は送信要求を受けて、メモリに記憶された、あるいは3Dプリンタ110より受信した3Dプリンタに関する情報を通信インターフェースを介してカメラシステム100に送信する。
図8(b)に示す物体であるボタンの情報を取得して3Dプリンタ110で造形する場面を考える。物体120上の表面を120a、裏面を120bとする。図8(c)〜図8(e)は造形状態を説明するための断面図を示している。図8(c)ではサポート材を表面120aの上に積層しないように形成している。図8(d)ではサポート材を全面に接触するように形成している。図8(e)では図8(c),図8(d)とは物体の造形方向を反対にしたうえで、物体の裏面120bの上にはサポート材が積層しないように形成している。
このようにすると、図8(d)では全面がマット面に、図8(c)では表面120aがグロッシー面にその他の面がマット面に、図8(e)では裏面120bがグロッシー面にその他の面がマット面になる。すなわち造形する方向やサポート材の積層状態を変化させることで一定の質感を表現することが可能である。図8を用いた説明においてはサポート材を利用して質感を表現する方法について説明したが、サポート材以外の方法(例えば造形に用いる樹脂種を変える、造形中の塗料を変更する)などを用いてもよい。
ユーザーによって質感を優先して造形するように指示があった場合(図3(d)のステップS405)は、カメラシステム100で得た情報を参照して、物体120の表面が光沢感がある場合は図8(c)のような造形方法を選択すればよい。図8で説明した方法によれば、任意性(自由度)がある造形方法を利用して、質感を表現することが可能となる。
以上に説明したように上記の実施形態によれば、簡易な構成で物体の質感情報を取得可能なカメラシステムやカメラシステムを含めたプリントシステムを提供することができる。
上述した実施形態では、ステップS104にて取得される画像は図1および図2に示す撮像光学系3および撮像素子6から取得されるもので説明したが、これに限らない。情報としては被写体からの光の強度と角度の情報(いわゆるライトフィールドデータ)を取得できるものであればよく、例えば特開2011−22796号公報のように、複数の視点の異なるカメラをまとめて撮像部とみなす構成でもよい。また、図2の撮像素子6と異なり、物体平面と撮像素子6が共役の関係にあるように、マイクロレンズアレイ上で撮像光学系3からの光束を結像させ、その結像面に撮像素子6を設ける構成でもよい。さらには、マイクロレンズアレイ上で撮像光学系3からの光束を再結像させ(一度結像した光束が拡散する状態にあるものを結像させるので再結像と呼んでいる)、その結像面に撮像素子6を設けるような構成でも良い。また、適当なパターンを施したマスク(ゲイン変調素子)を撮像光学系3の光路中に挿入する方法も利用できる。さらに、必ずしも上記のような撮像部によって1度の露光で得られる必要はなく、従来からの撮像部を用いて被写界深度やピント位置を複数箇所に振って撮像することで得られる複数の画像を用いても、本発明は達成される。この場合、例えば特開2014−155008号公報のように、得られた複数の画像から図2の撮像素子6から得られるライトフィールドデータの状態に変換して利用することも可能である。さらに別の取得方法としては、カメラを移動させながら取得する方法もある。すなわち図6(a)に示す6,6’,6’’のそれぞれの位置で複数の画像を取得しても良い。これらの画像からライトフィールドデータの状態に変換して利用することも可能である。
(その他の実施形態)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。