●(第1実施形態)
以下、本発明の例示的な実施形態について、添付の図面に基づいて詳細に説明する。
図1は本発明の第1実施形態に係る撮像装置の一例としてのデジタルカメラ(以下、単にカメラという)1の機能構成例を示すブロック図である。なお、カメラのように専ら撮像機能を提供する電子機器に限らず、カメラを内蔵もしくは接続可能な任意の電子機器において本発明を実施することができる。
図1において、カメラ1は、フォーカスレンズなどを有する撮像レンズ(撮像光学系)2を備えている。撮像レンズ2はカメラ1から着脱可能な交換レンズであってもよい。システム制御部3は例えば不揮発性メモリ、揮発性メモリ、およびプログラマブルプロセッサを有し、不揮発性メモリに記憶されたプログラムを揮発性メモリに展開してプロセッサで実行することにより各部の動作を制御し、カメラ1の動作を実現する。
撮像素子4は光電変換機能を有する画素が複数配列された構成を有し、撮像レンズ2が撮像面に形成する被写体像を電気信号(画像信号)に変換する。後述するように、撮像素子4は各画素が複数の光電変換領域を有し、1度の撮影(露光)で複数の視差画像を取得可能な構成を有する。画像処理部5は撮像素子4が生成する画像信号やメモリ部6から読み出された信号などに様々な画像処理を適用する。画像処理部5が適用する画像処理の例には、ホワイトバランス調整処理、色補完処理、ガンマ補正処理、符号化および復号処理などが含まれるが、これらに限定されない。
メモリ部6は例えば不揮発性メモリ、揮発性メモリの少なくとも一方を有し、データの一時記憶や各種設定値などの保存などに用いられる。なお、システム制御部3が実行するプログラムの少なくとも一部がメモリ部6に記憶されていてもよいし、メモリ部6がシステム制御部3のワークエリアとして用いられてもよい。なお、メモリ部6には、着脱可能な記憶媒体と、記憶媒体にデータを書き込んだり、記憶媒体からデータを読み出したりするためのインタフェースや周辺回路が含まれていてもよい。
入力部7はユーザがカメラ1へ各種の指示やデータを入力するためのユーザインタフェースである。入力部7はキー、ボタン、スイッチ、タッチパネル等、物理的な操作を伴う入力デバイス群に限らず、音声入力などの非接触な入力方法に対応した構成を有していてもよい。
入力部7には、立体物造形を行う被写体を撮像画像から選択するための被写体選択部8と、造形分解能を入力する造形分解能入力部9と、立体造形物の被写体に対する造形倍率を入力する造形倍率入力部10が設けられている。これらは、専用の入力デバイスとして構成されてもよいが、例えば入力部7に含まれる汎用的な入力デバイスの操作とGUI表示との組み合わせなどによって実現されてもよい。
ここで造形分解能とは、想定している造形装置がどの程度の細かさで立体物を造形可能かという程度を表し、例えば、0.02mmピッチで造形可能な装置の場合、造形分解能は0.02mmとなる。造形分解能の入力は、値を直接入力する方法のほか、装置の型番を入力する方法など,他の方法を用いてもよい。この場合、いくつかの造形装置について、装置を特定する情報(例えば装置の型番)と造形解像度とを対応付けてメモリ部6に記憶させておき、入力部7から入力された型番を用いてシステム制御部3がメモリ部6を参照し、造形分解能を取得することができる。システム制御部3は、入力された造形分解能、もしくは取得した造形分解能を造形分解能記憶部11に記憶する。
また、造形倍率とは、被写体の実際の大きさに対する造形物の大きさを表す値であり、変形を伴わない場合にはx,y,zのいずれか一方向についての倍率を指定するようにしてもよい。例えば、2倍を指定した場合、造形物は実物の8倍(=2^3)の大きさとなる。もちろん、体積の倍率を指定するように構成してもよい。
あるいは、カメラ起動時や、造形を行う被写体が決定された際に自動で設定されるようにしてもよい。造形倍率の自動決定方法としては、例えば、被写体の実際の大きさと、使用する造形装置で造形可能な最大の大きさとから、最大の造形物を生成する場合の倍率を造形倍率として算出する方法がある。また、造形可能な最大の大きさの代わりに、ユーザが入力した造形物の大きさ(例えば「100×100×100mm以内」など)を用いて造形倍率を求めてもよい。
3次元情報取得部12は、撮像素子4によって撮像された画像から、被写体の3次元情報を取得する。また、取得分解能記憶部13は、3次元情報取得部12により取得された3次元情報の分解能を記憶する。本実施形態における被写体の3次元情報とは、撮像画像(2次元情報)と、カメラ1から被写体までの距離情報(奥行き情報)とを組み合わせた情報である。
通信部16は、カメラ1と外部装置との通信インターフェースであり、有線および無線の少なくとも一方により、カメラ1と外部装置とが通信することを可能にする。例えば造形装置を通信部16を介してケーブル接続したり、無線LAN接続したりすることで、造形用のデータをカメラ1から造形装置に直接供給することができる。
上述の通り、本実施形態のカメラ1は、複数の視差画像を一度の撮影(露光)で取得することができる。このようなカメラとしてはステレオカメラの様な多眼カメラを代表としてさまざまなものが知られているが、本実施形態では、撮像素子4が受光面上に撮像レンズ2の射出瞳を分割するマイクロレンズアレイ(以下、MLA)を備えている。そして、このような撮像素子4で得られる複数の視差画像の位相差を検出することで、被写体の距離情報(奥行き情報)を得ることができる。また、視差画像を加算することで、被写体の2次元情報も得ることができる。撮像素子4の詳細な構成および、視差画像から被写体の3次元情報を取得する方法の詳細については、図2及び図3を用いて後述する。
3次元情報取得部12により取得された被写体の距離情報と、画像処理部5で生成された撮像画像(2次元情報)との組み合わせは、被写体の3次元情報としてメモリ部6に記憶される。また、取得した3次元情報の分解能(以下、取得分解能)は、取得分解能記憶部13に記憶される。取得分解能は、被写体の3次元情報の細かさを表すものであり、取得した3次元情報を構成する3次元座標群の最短距離を表す。
比較部14は、造形分解能記憶部11に記憶された造形分解能と、取得分解能記憶部13に記憶された取得分解能とを比較し、比較結果をシステム制御部3に出力する。ここで、比較部14が取得分解能と比較する、造形分解能記憶部11に記憶する分解能は上記のような造形装置のスペックを十分に生かすような分解能に限らず、ユーザが造形装置を用いて出力しようとしている分解能であってもよい。この場合、造形分解能記憶部11に、ユーザにより所望の分解能の設定が記憶されている。例えば、ユーザが所有する造形装置では0.02mmの分解能で出力可能であるが、ユーザが0.04mmの分解能で出力すれば十分であるとすれば、ユーザ設定として造形分解能記憶部11に0.04mmが設定できるようにする。
システム制御部3は、比較部14により得られた比較結果から、造形分解能に対して十分な取得分解能が得られているか否かを判定し、その結果を表示部15に表示させる。取得分解能が十分か否かの判定方法の詳細については、後述する。
次に、本実施形態における被写体の3次元情報取得方法について説明する。まず、撮像素子4の構成例について、図2(a)〜図2(d)を用いて説明する。図2(a)は撮像素子4をカメラ1の正面および側方から見た状態を模式的に示している。撮像素子4が有する画素群143の受光面上にはMLA141が形成され、画素群143を構成する各画素は、図2(b)および(c)に示すように、一つのマイクロレンズ142と二つのフォトダイオード(光電変換領域)143a,143bで構成される。以下、フォトダイオード143aをA像用フォトダイオード(Aピクセル)、フォトダイオード143bをB像用フォトダイオード(Bピクセル)と呼ぶ。
図2(d)は撮像レンズ2の射出瞳144を概念的に示しており、A像瞳145aとAピクセル143a、B像瞳145bとBピクセル143bは、それぞれマイクロレンズ142により共役の関係を有する。従って、撮像素子4の各画素は瞳分割機能を有し、Aピクセル143aには射出瞳144の右半分のA像瞳145aを通過した光束が、Bピクセル143bには射出瞳144の左半分のB像瞳145bを通過した光束が入射する。従って、Aピクセル群からなる画像と、Bピクセル群からなる画像は視差画像である。
複数の画素について、Aピクセル群から構成される像信号をA像、Bピクセル群から構成される像信号をB像とし、A像とB像のずれ量を検出することにより、撮像レンズ2のデフォーカス量とデフォーカス方向を検出することができる。従って、撮像素子4の出力する信号から位相差検出方式の自動焦点検出(AF)を実現することができる。
図2(e)〜(g)は位相差検出方式の焦点検出の原理を模式的に示している。図2(e)の状態は被写体よりも前にピントが合っている様子を、図2(f)は被写体にピントが合っている様子を、図2(g)は被写体よりも後ろにピントが合っている様子をそれぞれ表している。147aおよび147bは撮像素子4に設定された焦点検出領域内の画素群から得られるA像およびB像をそれぞれ模式的に表したものである。図2(f)の場合はA像147aとB像147bのずれがなく、被写体に対して合焦している。図2(e)の場合はA像147aが中心に対して左側に、B像147bが中心に対して右側に離れており、図2(g)の場合はA像147aが中心に対して右側に、B像147bが中心に対して左側に離れている。このA像、B像のズレ量(デフォーカス量)と中心からのズレ方向、撮像レンズ2の焦点距離、撮像素子4とフォーカスレンズとの距離から、被写体の距離情報を得ることができる。
図3を用いて被写体距離の算出方法について説明する。図3(a)は被写体の位置の算出方法を模式的に表している。A像151aとB像151bが得られているとすると、撮像レンズ2の焦点距離およびフォーカスレンズと撮像素子4との距離情報から、実線のように光束が屈折されることがわかる。従って、ピントの合う被写体は152aの位置にあることがわかる。同様にして、A像151aに対してB像151cが得られた場合には位置152b、B像151dが得られた場合には位置152cにピントの合う被写体があることがわかる。以上のように、各画素において、その画素を含むA像信号と、対応するB像信号との相対位置から、その画素位置における被写体の距離情報を算出することができる。
被写体の3次元情報は、A像、B像及び撮影時の撮像レンズ2の情報を保持する方法のほかに、被写体の距離情報を保持する方法でも記憶できる。例えば図3(a)においてA像151aとB像151dが得られている場合、像のずれ量の半分に相当する中間点の画素154から被写体位置152cまでの距離153を、画素154における被写体の距離情報として記憶する。このようにして、各画素について、被写体の距離情報を保持することが可能である。距離情報は、奥行き画像または距離画像として記憶してもよい。
図3(b)は、上述した方法で3次元情報取得部12が取得した被写体の距離情報を、被写体に向かって投影した際の模式図を表しており、取得した距離情報を投影した点を点群156で模式的に示している。また、実際の被写体表面の形状(距離情報の集合)を155で示している。このように、3次元情報取得部12において取得した距離情報から、被写体の3次元形状を再現することができる。なお、実際には複数の異なる方向から同一被写体に対して撮影を行い、各撮影で得られた3次元情報を組み合わせて被写体全体の3次元情報を取得する。ただし、例えば建物のような、下面が水平面と見なせる被写体の場合には、下面の撮影は行わなくてもよい。
次に、図4を用いて、3次元情報の取得分解能と造形分解能との違いが立体造形物の形状に与える影響について説明する。図4(a)は3次元情報を取得する被写体を示し、図4(b)、(c)はカメラ1により図4(a)の被写体を撮影した画像から取得した3次元情報を構成する座標を模式的に示している。図4(b)は取得分解能が粗い場合、図4(c)は取得分解能が細かい場合の3次元情報をそれぞれ示し、破線21は被写体の外形、22は3次元情報を構成する座標、23は取得分解能である。取得分解能23は、3次元情報を構成する座標22の隣接座標間の距離である。図4(b)は3次元情報を構成する座標22の数が図4(c)より少なく、取得分解能23が粗い。
図4(d)、(e)はそれぞれ図4(b)、(c)に示した3次元情報を基に、図4(c)に示した取得分解能以上の造形分解能を有する造形装置を用いて得られる造形物を模式的に示している。ここでは、3次元情報の隣接座標が直線で接続されるものとして造形している。図4(d)、(e)の比較から明らかなように、取得分解能の粗い3次元情報に基づく造形物は、上面の鋸歯形状の再現性が低い。このように、取得分解能23が粗い場合(取得した3次元情報の密度が低い場合)、被写体の大まかな形状は再現できるものの、詳細な形状に関してはうまく再現できないことがある。
図5(a)は造形装置を用いて造形する被写体を示し、被写体51上部の一部31が図5(b)に拡大して示されている。図5(b)の破線32は造形時に走査可能な最小間隔の軌跡を示し、造形分解能33は最小間隔に等しい。図5(c)、(d)は図5(b)に対して、取得分解能23aが粗い座標22aからなる3次元情報と、取得分解能23bが細かい座標22bからなる3次元情報を付加した状態を示している。座標22aからなる3次元情報の取得分解能23aは造形分解能33よりも粗く、座標22bからなる3次元情報の取得分解能23bは造形分解能33とほぼ等しい。
図6(a)、(b)は図5(c)、(d)と同一であり、このような3次元情報を造形分解能33の造形装置に適用すると、図6(c)、(d)のような立体物が造形される。取得分解能23aの3次元情報を適用した場合、図6(c)に示すように、被写体51上部の鋸歯形状は再現できない。一方、取得分解能23bの3次元情報を適用した場合、図6(d)に示すように、被写体51上部の鋸歯形状も再現可能である。このように、取得分解能が造形分解能未満の場合、造形装置で再現可能な形状であっても再現できないことが起こりうる。そのため、装置の造形分解能を最大限に活かすためには、造形分解能と等しいか、造形分解能より高い取得分解能で3次元情報を取得することが必要である。なお、ここでは分解能を座標のピッチで表しているため、分解能は値が小さい方が高くなり、
取得分解能≦造形分解能 (1)
という関係を満たせば、造形装置が立体物を造形するのに十分な3次元情報が取得されたと判定することができる。
したがって、図1の比較部14は、取得分解能記憶部13に記憶された取得分解能が、造形分解能記憶部11に記憶された造形分解能以上であれば、十分な分解能の3次元情報が取得されていると判定することができる。
図7は、3次元情報を取得する被写体と、取得した3次元情報を用いて生成する立体造形物を模式的に示した図である。図7(a)において、W、T、Hはそれぞれ被写体51の水平方向、奥行き方向、および垂直方向の大きさである。また、図7(b)は、被写体51をカメラ1で撮影した画像から取得された3次元情報を用いて造形装置52で生成された造形物53を表しており、W´、T´、H´はそれぞれ水平方向、奥行き方向、および垂直方向の大きさである。
造形倍率kを、各方向に共通する倍率とした場合、被写体の大きさW,T,Hと造形物の大きさW´,T´,H´とは、
W×k=W´ (2)
T×k=T´ (3)
H×k=H´ (4)
という関係を有する。
実物大の造形物を生成する場合、造形倍率k=1である。造形倍率は、ユーザが任意の値を、造形倍率入力部10から指定してもよいし、カメラ1が自動的に設定してもよい。例えば、撮影した被写体の実際の大きさ(図7(a)中のW、T、H)及び、使用する造形装置で生成可能な造形物の最大サイズとから造形倍率を算出して決定することができる。また、生成したい造形物の大きさ(例えば図7(b)中の最長辺W´=100[mm]となるようになど)をユーザに入力させ、同方向における被写体の実サイズ(図7(a)中のW)とから、造形倍率を算出して決定してもよい。
造形倍率kを用いると、式(1)で示された、十分な取得分解能を有する3次元情報が取得されたか否かの判定条件は、
取得分解能×k≦造形分解能 (5)
となる。比較部14は、造形倍率を考慮する場合、取得分解能記憶部13に記憶された取得分解能と造形倍率との積と、造形分解能記憶部11に記憶された造形分解能とが式(5)の関係を満たせば、十分な分解能の3次元情報が取得されていると判定することができる。
図8および図9を用いて、比較部14における比較結果の表示方法に関して説明する。ここでは造形倍率k=1とし、実物大の造形物を作成するものとする。図8は立体物造形を行う被写体と取得分解能、造形分解能の関係を示した図であり、図9はカメラ1の表示部15における、比較部14の比較結果の表示例を示した図である。
図8(a)は3次元情報を取得する被写体をカメラ1で撮影している様子を模式的に示している。図8(b)は図8(a)の状態において、一辺の長さが造形分解能33に対応する四角形で構成されるメッシュ状の破線32を被写体に重畳させた状態を模式的に示している。図8(b)には、被写体上部の一部を拡大し、図8(b)の状態においてカメラ1が取得した3次元情報(座標22a)を示している。この状態では、造形分解能33が取得分解能23aより小さく、上述した式(1)や式(5)の条件を満たしておらず、撮影条件を変更して再撮影することが必要である。
従って、システム制御部3は、比較部14から取得分解能が不足しているとの比較結果を取得すると、取得分解能を上げる方法とともに再撮影を促す情報を表示部15に表示させる。図9(a)は取得分解能が不足している場合の表示例を示しており、取得分解能が不足していることを報知する情報の一例としてのメッセージ161と、取得分解能を上げるための方法を報知する情報の一例としてのメッセージ162が含まれている。これらの報知は音声によって行ったり、特定のインジケータの点灯など、他の任意の方法で行うことができる。また、図9(a)の例では撮影後の再生画面もしくはライブビュー画面においてメッセージ表示を行っているが、他の表示画面に対してメッセージ表示を行ってもよい。
取得分解能は撮像画像に占める被写体の領域が大きくなるほど高くなる。したがって、再撮影時には前回撮影時よりもカメラ1を被写体に近づけるか、撮像レンズ2がズームレンズであれば入力部7に含まれるズームレバーを操作するなどの方法で撮像レンズ2の焦点距離を大きくすればよい。そのため、メッセージ162ではこれらの方法をユーザに報知している。なお、画像の撮影に用いられる画素数を増やす(例えば撮影画像サイズが小さい場合に、より大きなサイズとする)など、他の方法を報知してもよい。
なお、前回撮影時におけるカメラ1と被写体との距離の情報や前回撮影時の撮像レンズ2の焦点距離の情報を記憶しておき、取得分解能が高まるような撮影条件で再撮影時が行われるように支援することもできる。例えば、再撮影時の合焦距離が前回撮影時の合焦距離以上であれば、もっと近づくようユーザに促したり、再撮影時の撮像レンズ2の焦点距離が前回撮影時以下であれば、ズームアップするようにユーザに促すように構成することができる。これらの支援も表示部15へのメッセージの表示や音声出力などを用いてシステム制御部3が実現することができる。
また、図8(c)は図8(b)と同様の図であるが、カメラ1が図8(a)および(b)の位置から矢印61の方向(被写体に近づく方向)へ移動している点で異なる。これにより、図8(b)の状態よりも撮影画像に占める被写体の領域が大きくなると、図8(c)の状態における3次元情報の取得分解能23bは、図8(b)の状態における3次元情報の取得分解能23aより高くなる(距離が短くなる)。
その結果、取得分解能23bが造形分解能33とが式(1)や式(5)の関係を満たすと、システム制御部3は、比較部14から十分な取得分解能の3次元情報が取得されているとの比較結果を取得する。そして、システム制御部3は、十分な取得分解能の3次元情報が取得されたことを示す情報を表示部15に表示させる。図9(b)は取得分解能が十分な場合の表示例を示しており、取得分解能が十分であることを報知する情報の一例としてのメッセージ163が含まれている。
なお、本実施形態においては1回の撮影により、3次元情報の取得分解能が十分か否かの判定を行っているが、複数回の撮影結果から得られる3次元情報を考慮して取得分解能を求めてから造形分解能と比較してもよい。
図10を用いて、被写体の同一部分を撮影範囲に含んだ複数回の撮影で得られた画像から取得した3次元情報を用いて、取得分解能が十分か否か判定する方法について説明する。図10(a)は図5(c)に対応しており、1回の撮影で取得した3次元情報の概要を示している。この状態では、3次元情報を構成する座標22の間隔が造形分解能33より大きく、取得分解能が不十分である。上述のように、このような場合にはより高い取得分解能が得られる条件での再撮影が促される。
図10(b)は再撮影で得られた画像から取得された3次元情報を1回目の撮影で得られた3次元情報の座標系における値に変換し、2回の撮影で得られた3次元情報を統合した状態を模式的に示している。再撮影時に取得された、座標171から構成される3次元情報と、それを用いて生成される造形物を模式的に172で示している。1回目の撮影で取得した3次元情報(座標22の集合)と、2回目の撮影で取得した3次元情報(座標171の集合)は、それぞれ単独では造形分解能に満たないが、双方を用いることで、被写体形状の再現性は向上すると考えられる。
図10(c)は図10(b)のような複数回の撮影から得られた3次元情報の取得分解能が、造形分解能と式(1)または式(5)の関係を満たすか否かの比較方法の一例を模式的に示している。球174a〜174cは、3次元情報を構成する座標を中心として、造形分解能173を半径とする球である。このような球を、3次元情報の各座標について想定し、全ての座標において、球内に3次元情報の他の座標が1つ以上含まれていることが確認できれば、3次元情報の取得分解能が造形分解能と式(1)または式(5)の関係を満たすと判定できる。
このような方法を用いるのは、1回の撮影から得られた3次元情報では、撮像画像のある画素に対応する座標に最も近い座標は、隣接画素に対応する座標から得られるが、複数回の撮影で得られた3次元情報を統合した場合には必ずしも当てはまらないからである。なお、造形倍率kが1でない場合、つまり、造形物が実物大でない場合は、判定に用いる球の半径(造形分解能173)に造形倍率kの逆数1/kを乗じた値を用いて比較を行う。
なお、本発明において取得分解能の算出方法に特に制限は無く、撮像画像を用いた公知の測量技術を用いることができる。例えば、撮像素子4の画素ピッチと撮影時の撮像レンズ2の焦点距離と、画素ごとの距離情報とから、各画素に対応した被写体表面の3次元座標を得ることができる。各画素に対応する3次元座標について、隣接画素に対応する3次元座標との距離を求め、その最大値を取得分解能とすることができる。
また、1回の撮影では被写体の全体について3次元情報を取得することはできないため、被写体を異なる角度から複数回撮影し、個々の撮影画像に基づいて取得した3次元情報を組み合わせる必要がある。例えば個々の画像が重複するように撮影し、3次元座標の対応点を特定することで実現することができる。被写体の3次元情報を得るための撮影方法や、異なる角度から撮影された画像に基づく3次元情報の統合方法については、公知の方法を用いれば良く、その詳細についての説明は省略する。また、水平面と考えられる被写体の底面のように、撮影画像が必ずしも必要とされない部分については、画像を用いずに3次元情報を生成してもよい。
本発明の趣旨は、ある撮影画像から得られた被写体の3次元情報が、ある特定の造形装置で用いるのに十分な分解能を有するかどうかの判定を行い、適切な分解能を有する3次元情報を得るための撮影を支援することにある。従って、被写体の全体的な3次元情報を得るための撮影手法や、得られた3次元情報の統合方法には依存しない。必要であれば、カメラ1の3次元位置や撮影方向を測定して用いることもできる。
さらに、本実施形態では、表示部15上に、取得分解能を上げるための方法を表示してユーザに撮影条件の変更を促しているが、カメラ1が取得分解能を上げるための撮影条件の変更を自動で行ってもよい。例えば、図8(b)のように、取得分解能が十分でなかった場合に、システム制御部3が撮像レンズ2の焦点距離を所定量に長くしたり、撮影画像のサイズ(画素数)を大きくしたりするなど、3次元情報の取得分解能を高めるように自動で制御することができる。
また、カメラ1で設定可能な取得分解能の変更方法の一つに、カメラ1から見た奥行方向の距離分解能を上げる方法がある。上述したように、本実施形態では奥行き方向の距離は、撮像素子4の前面に設けられたマイクロレンズアレイによって作られる複数の視差画像の位相差を用いて取得している。そのため、用いる視差画像の組み合わせを、より視差の大きな画像の組み合わせに変えることにより、奥行方向の距離分解能を上げることが可能である。図2では各画素を、一つのマイクロレンズ142と二つのフォトダイオード143a,143bで構成されるとしたが、より多くのフォトダイオードで構成することにより基線長の異なる視差画像を作り出すことが可能となる。撮影条件の変更を自動で行う場合、システム制御部3は表示部15に、再撮影を促すメッセージを表示する。この際、撮影条件を変更したことについてもユーザに知らせるようにしてもよい。
図11は本実施形態のカメラ1における3次元情報の取得動作に関するフローチャートである。この動作は例えば被写体の3次元情報の取得用の撮影モードにおいて実行される。3次元情報の取得のための撮影モードにおいても、表示部15へのライブビュー表示など、一般的な静止画撮影モードのスタンバイ時と同様の処理が実行されているものとする。
S8001においてシステム制御部3は、造形分解能が入力済か否か(造形分解能記憶部11に設定されているか否か)を判定し、入力済の場合はS8002へ、未入力の場合はS8003へ処理を進める。S8002でシステム制御部3は、ユーザが造形分解能入力部9を用いて入力した造形分解能を造形分解能記憶部11から読み出し、処理をS8004へ進める。S8003でシステム制御部3は、表示部15に造形分解能の入力画面を表示し、造形分解能入力部9を通してユーザが造形分解能を入力するのを待つ。前述したように、造形分解能は値を直接入力する他に、造形装置の型番など、造形分解能を特定可能な情報の入力であってもよい。後者の場合、システム制御部3は予め記憶されているテーブル等を入力された情報を用いて検索し、造形分解能を取得する。システム制御部3は、造形分解能を造形分解能記憶部11へ記憶させ、処理をS8004へ進める。なお、造形倍率についても、S8001〜S8003と同様にして取得することができる。造形倍率は取得分解能記憶部13に記憶する。
S8004でシステム制御部3はユーザからの撮影開始指示を待機する。撮影開始指示は例えば入力部7に含まれるシャッターボタンの全押し操作であってよい。なお、撮影開始指示に先立って撮影準備指示がなされてもよい。撮影準備指示が入力されると、システム制御部3は露出制御動作や焦点検出動作を実行する。
撮影開始指示に応答して、システム制御部3は設定された露出条件に従って撮像素子4を露光する。露光が終了すると、システム制御部3は画像処理部5を用いて撮像素子4から画像信号を読み出し、Aピクセル群から1枚、Bピクセル群から1枚の、1組の視差画像を生成する。
システム制御部3はメモリ部6に記憶された視差画像を読み出して3次元情報取得部12へ供給する。3次元情報取得部12は、撮像素子4の各画素(AピクセルとBピクセルとを有する構成単位)位置における距離情報を求める。さらに3次元情報取得部12は、撮像レンズ2の焦点距離および撮像素子の画素ピッチなどの情報から、各画素に対応する3次元座標を3次元情報として算出する。算出した3次元情報は例えばシステム制御部3を通じてメモリ部6に記憶される。
S8005でシステム制御部3は、撮像画像中の被写体領域を決定する。被写体領域の決定は、被写体選択部8を通してユーザに指定させてもよいし、画像中の合焦領域の画素情報から、同様の色を有する画像の集合を探索したり、輪郭を抽出するなどしてシステム制御部3が決定してもよい。ユーザに指定される場合、システム制御部3は撮像画像を表示部15に表示し、被写体選択部8を通じて画像中の被写体領域を含む領域を指定させ、指定された領域内で輪郭を検出して被写体領域を抽出してもよい。あるいは、システム制御部3は撮像画像全体に対して輪郭抽出を行い、閉じた輪郭を有する領域のうち、ユーザが指定した領域を被写体領域としてもよい。輪郭抽出等の画像処理は、画像処理部5に行わせてもよい。何らかの方法で撮像画像中の被写体領域が指定されれば、その方法はいかなるものであってもよい。
S8006でシステム制御部3は、S8004で3次元情報取得部12が算出した3次元情報のうち、被写体領域に含まれる画素に対応する3次元情報を被写体の3次元情報として抽出する。そして、システム制御部3は、被写体領域に含まれる画素の各々について、対応する3次元情報と、隣接画素に対応する3次元情報との被写体上の距離を求め、最小距離を検出する。システム制御部3は、各画素について求めた最小距離のうち、最も大きな値を、取得分解能とし、取得分解能記憶部13に記憶する。
S8006でシステム制御部3は、比較部14に造形分解能と取得分解能とを比較させ、比較結果を取得して、処理をS8007へ進める。具体的には、比較部14は、上述したように、造形分解能記憶部11に記憶された造形分解能と、取得分解能記憶部13に記憶された取得分解能と造形倍率とから、上述の式(5)に従って分解能の比較を行う。
S8007でシステム制御部3は、表示部15にS8006における比較結果の表示を行うか、もしくは、取得分解能が不十分との比較結果であれば、予め定められた設定に基づいて再撮影時の撮影条件を決定し、処理をS8008へ進める。S8007における比較結果の表示は、図9を用いて説明をした方法で行うことができる。また、S8007における再撮影時の撮影条件の決定は、3次元情報の取得分解能の値をより小さくするための撮影条件の決定であり、撮像レンズ2の焦点距離を長くしたり、撮影画像サイズを大きくしたりする方法であってよい。
S8008でシステム制御部3は造形分解能を変更するか否かの判定を行い、変更する場合はS8009へ、変更しない場合はS8011へ処理を進める。S8008において、造形分解能の変更を行うと判定する場合の例としては、取得分解能が造形分解能に対して非常に高く、現在の造形分解能で再現可能な形状よりもより詳細な形状が造形可能な場合などが挙げられる。
このような場合、システム制御部3はS8008において、より詳細な造形が可能であることを示す情報を表示部15に表示するなどして、ユーザに報知する。これによりユーザは、より細かな形状で造形可能であることを知ることができ、造形装置を変更したり、造形装置で設定可能な造形分解能のうち、より高い値を設定することにより、造形分解能を設定し直すことができる。
なお、例えばS8008においてユーザが新たな造形分解能を入力しなかった場合(例えばキャンセル指示があった場合や、入力なしで一定時間経過した場合)、システム制御部3は処理をS8011へ進める。
一方、新たな造形分解能が入力された場合、S8009でシステム制御部3は新たに入力された造形分解能を造形分解能記憶部11に記憶した後、処理をS8010へ進める。S8010でシステム制御部3は、比較部14において、造形分解能記憶部11に記憶された造形分解能と、取得分解能記憶部13に記憶された取得分解能の比較を式(5)に従って再び行い、処理をS8007へ戻す。
S8011でシステム制御部3は、再撮影が必要か否かを判定し、再撮影が必要と判定された場合は処理をS8004へ戻し、次の撮影開始指示を待機する。また再撮影が不要と判定された場合、システム制御部3は、処理を終了する。
再撮影が必要か否かの判定は、S8007もしくはS8010において求めた比較結果から、立体物造形装置が立体物を造形するのに十分な分解能の3次元情報が取得されたと判定できるか否かに基づいて行うことができる。式(5)を満たしていなければ、再撮影が必要と判断できる。また、他の方法としては、ユーザにより再撮影を行うという入力があった場合に、再撮影が必要と判定してもよい。
ここで、図12に示すフローチャートを用い、カメラ1での3次元情報の取得から造形装置に用いるデータを得るまでのデータ処理について説明する。
撮影が行われ、3次元情報の取得が開始されると、S1601において3次元情報取得部12は、1組の視差画像を用いて、図2で説明したように各画素におけるA像とB像のずれ量(デフォーカス量)を算出し、デフォーカスマップを生成する。
次にS1602で3次元情報取得部12は、S1601で取得したデフォーカスマップ、撮像レンズの焦点距離、及びフォーカスレンズの位置から、各画素位置における被写体距離を算出する。この被写体距離の情報(距離画像)は、システム制御部3がメモリ部6に記憶する。
S1603でシステム制御部3は、画像中の被写体領域に対応する画素に対応する距離情報をメモリ部6から読み出し、撮像レンズの焦点距離や画素ピッチとともに用いて被写体の3次元情報を算出する。
S1604でシステム制御部3は、さらに撮影を行う必要があるかどうかを判定する。これは、十分な取得分解能の3次元情報が、被写体の立体造形物を生成するのに必要な量得られているかどうかの判定に相当する。例えばシステム制御部3は、被写体の外面で撮影されていない部分が残っていたり(底面は除いてもよい)、取得分解能が不足していたりする領域がある場合には、それらの部分について十分な取得分解能の3次元情報を得るための撮影が必要と判断する。S8011における再撮影の判定もここでの判定に含まれる。
なお、S1604では、被写体の外面の一部について十分な取得分解能の3次元情報が得られているかどうかの判定に止め、被写体の外面全体について十分な取得分解能の3次元情報が得られているかどうかの判定は3次元情報を統合する際に行うようにしてもよい。
S1604での判定範囲において、十分な取得分解能の3次元情報が得られており、さらなる撮影を行う必要がないと判定された場合、S1605でシステム制御部3は3次元情報の統合を行う。
S1605でシステム制御部3は、それまでに取得された3次元情報の座標系を統一して統合する。各撮影において取得された3次元情報は撮影時の撮像素子4の位置を原点とした座標系における値であるため、共通した座標系における値に変換して統合する必要がある。統合方法に特に制限は無いが、各撮影時におけるカメラ1の3次元位置及び撮影方向を撮影時に記録しておき、その情報を元に座標系を統一することができる。あるいは、撮影画像中の被写体領域の形状の関係から、撮影時のカメラ位置と撮影方向の相対的な差異を推定し、補正することによって座標系を統一してもよい。システム制御部3は、統合した3次元情報をメモリ部6へ記憶する。また、上述したように、ここでの統合結果により、被写体の外面のうち撮影されていない領域の有無について判定してもよい。
S1606でシステム制御部3は、メモリ部6に記憶された3次元情報を基に、造形物の3次元モデルを作成する。3次元モデルはメモリ部6に記憶された3次元座標(3次元情報)からポリゴン(面)を形成して作成することができる。ポリゴンの作成方法に制限は無いが、例えばいわゆるSTL形式のように取得した3次元座標のうちから最も近い3点を選び、その3点から1つの面を作成し、面を繋いでいくという方法であってよい。
S1607でシステム制御部3は、3次元モデルを、立体物造形装置が直接利用可能な形式の造形用データに変換し、メモリ部6や着脱可能な記録媒体に記録して処理を終了する。なお、S1606で作成した3次元モデル情報そのものを利用可能な立体物造形装置については、S1607でのデータ変換は不要である。
なお、ここで説明した処理のうち、S1605以降の処理は外部装置、例えばパーソナルコンピュータのような、カメラ1よりも処理能力や記憶容量の大きな装置で実行してもよい。
また、取得分解能と造形分解能との比較は、S1604で行うものとして説明したが、S1602、S1605、またはS1606において行ってもよい。ある領域についての3次元情報を1回の撮影で得られた視差画像に基づいて生成する場合には、S1602、S1605、S1606のいずれにおいても取得分解能と造形分解能とを比較することができる。一方、図10を用いて説明したような、1回の撮影で得られた3次元情報を補完して分解能を上げるために複数回の撮影を行った場合には、3次元情報の座標の統合が必要であるため、S1605以降で比較を行う。
またS1606で示すような、3次元モデルの状態に変換してから造形分解能との比較を行っても構わない。なお、S1605やS1606で説明したデータ形式で比較を行う際には、少なくとも比較に用いるデータ形式への変換まではカメラ1で実行するものとする。
以上説明したように、本実施形態によれば、視差画像を取得して、画像中の被写体の3次元情報を算出可能な撮像装置において、算出した3次元情報が造形装置で利用するのに適した分解能を有するかどうかを判定するようにした。そのため、3次元情報の分解能が不足していると判定される場合には、分解能が向上する撮影条件で再撮影するようにユーザに促したり、分解能が向上する撮影条件を自動的に決定したりできるようになり、造形装置に適した所望の3次元情報の取得を支援できる。
●(第2実施形態)
次に、本発明の第2実施形態について説明する。第1実施形態では視差の大きな画像を用いることで奥行方向の距離分解能を向上させる構成について説明した。本実施形態は、撮影条件、より具体的は絞り値を変更することにより奥行方向の距離分解能を向上させることを特徴とする。なお、本実施形態は第1実施形態と同一構成のカメラ1によって実施可能であるため、カメラ1の構成に関する説明は省略する。
図13は、奥行方向および光軸に直交する面内での分解能と絞りとの関係を説明するための図である。ここで、面内での分解能とは、第1および第2実施形態で着目した分解能に相当する。一方、奥行方向の分解能とは、光軸に平行な方向の分解能である。
図13において、図1および図2に示したものと同様の構成には同じ参照番号を付してある。201はピント面、202はデフォーカス面、203はピント面201と光軸との交点、204、205はデフォーカス面202上の点を示す。206、207はデフォーカス面202上でのボケの大きさを示す矢印である。また、208は撮像レンズの射出瞳面、209、210はピント面201上でのA像とB像の間隔を示す。
図13(a)を用いて絞り値とデフォーカス面内での分解能との関係について説明する。ここではピント面201と光軸との交点203を通る光束を想定する。撮像レンズ2によってピント面201と撮像素子4とは共役の関係にあるので、ピント面201と光軸との交点203を通る光束は、撮像素子4上の撮像面と光軸との交点に集束する。この状態で、絞り値(Fナンバー)が小さい(開放に近い)場合の光束の外縁の光線205aを破線で、絞り値が大きい場合の光束の外縁の光線204aを実線で示した。
これらの光束を撮像素子4からみてピント面201より奥のデフォーカス面202まで延長すると、光線204aはデフォーカス面上の点204に対応し、光線205aはデフォーカス面上の点205に対応する。図13(a)は光軸に対して回転対称であるため、デフォーカス面202でのボケは、絞り値を小さくした場合は直径207の大きさの円となり、絞り値を大きくした場合は直径206の大きさの円になる。直径206は直径207よりも小さいため、絞り値を大きくした方がピント面201と距離の異なる位置における面内での分解能は高くなる。これは、絞り値が大きい方が被写界深度が大きくなることからも理解される。
次に、図13(b)を用いて絞り値と奥行方向の分解能との関係について説明する。ここではデフォーカス面202上の点204および205を通って撮像素子4方向に進む光束を考える。光線204a、205aは図13(a)と同じ光線であるため、いずれも撮像レンズ2によって撮像素子4上の撮像面と光軸との交点に入射する。一方、撮像レンズ2の絞りの開口に応じた大きさを有する射出瞳面208内の別の位置を通過する光線204b、205bは、撮像面上の異なる位置に入射する。これは、光線がデフォーカス面上の点から出射しているからである。
この結果、図3で説明したA像とB像とは撮像面上の異なる位置に結像される。A像、B像の結像位置のずれ(間隔)の大きさは、絞り値を小さくした場合は間隔210であり、絞り値を大きくした場合は間隔209となる。つまり、デフォーカス量が同じ場合、絞り値が小さい方が撮像面上におけるA像とB像の結像位置の間隔が大きくなる。言い換えると、絞り値が小さい方が、奥行方向の変化に伴う結像位置のずれが大きく、奥行方向の分解能が高いことを示している。
図13(a)と図13(b)を用いて説明したように、光軸に直交する面内での分解能を向上するためには絞り値を大きくした方がよいが、奥行方向での分解能を向上するためには絞り値を小さくした方がよい。つまり、絞り値を変更すると、光軸に直交する面内での分解能と、奥行方向での分解能との一方が向上し、他方が低下するという関係を有し、両者を同時に向上させることはできない。
図14は、撮像素子4の画素が有するマイクロレンズ142によって、画素のAピクセル143aおよびBピクセル143bが撮像レンズ2の射出瞳にどのように投影されるかを示す図である。図14は図2(b)と(d)とを併せて記載したものと同様であり、射出瞳面208については光軸に直交する方向からの平面図、画素の構成については光軸を含む垂直断面図として記載している。また、図2と同じ要素については同じ参照数字を付してある。射出瞳144は絞り値を小さくした場合を、射出瞳244は絞り値を大きくした場合をそれぞれ示している。
絞り値が小さい場合、Aピクセル143aには射出瞳144の右半分のA像瞳145aを通過した光束が、Bピクセル143bには射出瞳144の左半分のB像瞳145bを通過した光束が入射する。一方、絞り値を大きくすると、Aピクセル143aには射出瞳244の領域250を通過した光束が、Bピクセル143bには射出瞳244の領域251を通過した光束が入射する。これはつまり、1つのマイクロレンズ142に対して複数の光電変換領域が設けられている構成の撮像素子を用いる場合、射出瞳の面積を変化させることで実効的な絞り値を制御可能であることを示している。
ここで、Aピクセル143a、Bピクセル143bのそれぞれに着目した場合の、実効絞り値の考え方について述べる。光学系の絞り値は一般的には焦点距離と有効口径の比として表現される。1つのマイクロレンズに1つの光電変換部が設けられている通常の構成では、光電変換部が絞りを介して射出瞳面208上に投影される射出瞳144や244の径を有効口径の代表値として用いる。
しかしながら本実施形態で用いている光学系においては、1つのマイクロレンズに対してAピクセル143a、Bピクセル143bの2つの光電変換部が設けられているため、個々の光電変換部が投影される射出瞳面208内の面積は半分となる。そのため、Aピクセル143a、Bピクセル143bがそれぞれ対応する面積を実効の絞り値として定義して、ボケの発生のしやすさを示す指標とする。なお、この考え方は1つのマイクロレンズに対して3つ以上の光電変換部が設けられる場合についても同様に適用可能である。
図15は、奥行方向の分解能が一定でない撮影条件で得られる3次元情報の取得分戒能について、図4と同様の表現で表した図である。図15(a)は3次元情報を取得する被写体を示し、図15(b)はカメラ1の絞り値が小さい(ここでは代表例として絞り開放とした)撮影条件の画像から得られる3次元情報を構成する座標を示している。また、図15(c)はカメラ1の絞り値が大きな撮影条件の画像から得られる3次元情報を構成する座標を示している。破線21は被写体の外形を、22は3次元情報を構成する座標を、211、221はピント面での撮影面内での分解能を、212、222はデフォーカス面での撮影面内での分解能を、213,223は奥行方向の分解能をそれぞれ模式的に示している。
図15(b)に示すように、絞り値の小さな撮影条件の画像からは、絞り値の大きな撮影条件の画像からよりも奥行方向の分解能213が高い3次元情報が得られる。しかし、デフォーカス面内で得られる3次元情報の分解能212については、絞り値の大きな撮影条件の画像から得られる3次元情報の分解能222よりも低下する。
逆に、図15(c)に示すように、絞り値の大きな撮影条件の画像からは、絞り値の小さな撮影条件の画像からよりもデフォーカス面内での分解能222が高い3次元情報が得られるが、奥行方向の分解能223については分解能213よりも低下する。
なお、絞り値を大きくしすぎると回折の影響でピント面での分解能211、221が低下するが、絞り値の差によるデフォーカス面内や奥行方向での分解能の差に比べると回折による分解能の低下は非常に小さい。そのため、絞り値を大きくする場合の回折の影響は実質的には無視しても差し支えない。
例えば3Dプリンタを用いて造形物を形成するために3次元情報を用いることを考えると、奥行方向と撮影面内の両方で十分な分解能を有する3次元情報を得ることが望ましい。そのため、本実施形態ではシステム制御部3が、図11のS8006において、抽出した3次元情報について、面内(xy)方向の最低分解能と奥行(z:光軸)方向の最低分解能とを隣接座標間の最大距離として別個に求める。そして、システム制御部3は、比較部14に、各方向について最低分解能が造形分解能に対して十分か否かを判定させ、判定結果を取得する。
S8007でシステム制御部3は、いずれかの最低分解能が不十分と判定され、再撮影時の撮影条件を決定する際に、分解能が不十分な方向に応じて絞り値を変更する。つまり、システム制御部3は、面内の分解能が不十分と判定された場合には次回の撮影条件における絞り値を大きく、奥行方向の分解能が不十分と判定された場合には次回の撮影条件における絞り値を小さくする。なお、システム制御部3は、絞り値の変更とともに撮像レンズ2の焦点距離を長くしたり、撮影画像サイズを大きくしたりしてもよい。
なお、絞り値だけを変更して再撮影する場合、再撮影を促すメッセージにおいて絞り値の変更をユーザに知らせる必要はなく、単に「もう一度撮影して下さい」等のメッセージを表示するだけでよい。また、撮像画像に占める被写体の領域の割合が不足している場合でも、メッセージ162(図9(a))を表示し、絞り値の変更に関してはカメラ1が自動で変更すればよい。
また、撮像画像に占める被写体の領域の割合が不足していると判定される場合には、絞り値を変更せずにまず撮像画像に占める被写体の領域の割合を上げた再撮影を実行してもよい。そして、依然としていずれかの方向の分解能が不足している場合には、絞り値を変更した再撮影をさらに行うようにしてもよい。なお、両方向の分解能が不足していれば、絞り値を大きくした撮影条件と、絞り値を小さくした撮影条件とでそれぞれ再撮影を行う。
以上説明したように、本実施形態によれば、3次元情報の取得分解能を面内方向と奥行方向とについて別個に評価し、取得分解能が不十分と判定された方向に応じて再撮影時の絞り値を大きく、あるいは小さくなるように変更する。このような制御により、撮影倍率を上げたり、視差の大きな視差画像の組み合わせを用いたりする方法に加え、さらに面内方向および奥行方向の分解能を選択的に向上させることができる。
(その他の実施形態)
なお、上述の実施形態において、比較部14の動作をシステム制御部3が実行してもよい。また、造形分解能記憶部11と取得分解能記憶部13の少なくとも一方は、メモリ部6内の記憶領域であってもよい。
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。