撮像装置、画像処理装置およびその方法
【課題】 異なる撮影位置から被写体を撮影した複数の画像データから任意のピント面にフォーカスを合わせた画像データを生成する。
【解決手段】 画像入力部110は、異なる撮影位置から被写体を撮影した複数の画像データ、および、撮影位置を示す情報を入力する。フォーカス座標取得部111は、複数の画像データの一つが表す画像におけるフォーカスを合わせる位置を示す少なくも一つのフォーカス座標を取得する。距離推定部112は、複数の画像データおよび撮影位置を示す情報から被写体の撮影距離を推定する。仮想ピント面生成部114は、フォーカス座標および撮影距離からピント面を示す情報を生成する。画像合成部115は、撮影位置を示す情報およびピント面を示す情報に基づき複数の画像データを合成して、ピント面にフォーカスを合せた画像データを生成する。
【解決手段】 画像入力部110は、異なる撮影位置から被写体を撮影した複数の画像データ、および、撮影位置を示す情報を入力する。フォーカス座標取得部111は、複数の画像データの一つが表す画像におけるフォーカスを合わせる位置を示す少なくも一つのフォーカス座標を取得する。距離推定部112は、複数の画像データおよび撮影位置を示す情報から被写体の撮影距離を推定する。仮想ピント面生成部114は、フォーカス座標および撮影距離からピント面を示す情報を生成する。画像合成部115は、撮影位置を示す情報およびピント面を示す情報に基づき複数の画像データを合成して、ピント面にフォーカスを合せた画像データを生成する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、多眼方式のカメラのような撮像装置が撮影した画像データの画像処理に関する。
【背景技術】
【0002】
同じ被写体を撮影した、撮影位置が異なる複数の画像からピントや被写界深度を変更した画像を生成する技術が存在する。この技術は、撮影位置とフォーカスを合わせたい被写体の距離に応じて複数の画像を変形し、変形後の画像を合成して被写界深度の浅い画像を生成する(リフォーカス処理)。
【0003】
また、特許文献1の発明は、被写体すべてにピントが合うように被写界深度を変更する発明を開示する。特許文献2の発明は、視点が異なる複数の画像からリフォーカス処理を行い、被写体が複数の場合はパンフォーカスによって複数の被写体にフォーカスを合わせる。しかし、これら発明は、被写界深度を深くするかパンフォーカスを用いるによって複数の被写体にフォーカスを合わせるため、被写界深度の浅い画像を生成することはできない。
【0004】
また、カメラに正対しない平面にフォーカスを合せた画像を合成する技術も提案されている。しかし、フォーカスを合わせたい複数の被写体が点在し、それら被写体が同一平面上にない場合は、この技術を用いても、それら被写体にフォーカスを合わせた、被写界深度が浅い画像を生成することはできない。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2008-256826公報
【特許文献2】特開2011-022796公報
【特許文献3】特開2011-053959公報
【特許文献4】特開2009-060379公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
本発明は、異なる撮影位置から被写体を撮影した複数の画像データから任意のピント面にフォーカスを合わせた画像データを生成することを目的とする。
【課題を解決するための手段】
【0007】
本発明は、前記の目的を達成する一手段として、以下の構成を備える。
【0008】
本発明にかかる画像処理は、異なる撮影位置から被写体を撮影した複数の画像データ、および、前記撮影位置を示す情報を入力し、前記複数の画像データの一つが表す画像におけるフォーカスを合わせる位置を示す少なくも一つのフォーカス座標を取得し、前記複数の画像データおよび前記撮影位置を示す情報から前記被写体の撮影距離を推定し、前記フォーカス座標および前記撮影距離からピント面を示す情報を生成し、前記撮影位置を示す情報および前記ピント面を示す情報に基づき前記複数の画像データを合成して、前記ピント面にフォーカスを合せた画像データを生成することを特徴とする。
【発明の効果】
【0009】
本発明によれば、異なる撮影位置から被写体を撮影した複数の画像データから任意のピント面にフォーカスを合わせた画像データを生成することができる。
【図面の簡単な説明】
【0010】
【図1】実施例の撮像装置の概観を説明する概観図。
【図2】実施例の画像処理装置の構成例を説明するブロック図。
【図3】画像処理装置の機能構成例を説明するブロック図。
【図4】画像処理の一例を説明するフローチャート。
【図5】フォーカス座標取得部の処理を説明する図。
【図6】距離推定部の処理を説明するフローチャート。
【図7】距離の計算を説明する図。
【図8】仮想ピント面設定部の処理を説明するフローチャート。
【図9】フォーカス点とフォーカス座標の関係を説明する図。
【図10】仮想ピント面の生成を説明する図。
【図11】仮想ピント面生成部の処理を説明するフローチャート。
【図12】仮想ピント面(曲面)および仮想ピント面画像を説明する図。
【図13】画像合成部の処理を説明するフローチャート。
【図14】重み係数を説明する図。
【図15】実施例2の画像処理装置の機能構成例を説明するブロック図。
【図16】実施例2の画像処理の一例を説明するフローチャート。
【図17】仮想ピント面設定部の処理を説明するフローチャート。
【図18】フォーカス点のグループ化を説明する図。
【図19】被写体領域の認識結果の一例を示す図。
【発明を実施するための形態】
【0011】
以下、本発明にかかる実施例の画像処理を図面を参照して詳細に説明する。
【実施例1】
【0012】
[撮像装置の概観]
図1の概観図により実施例の撮像装置140の概観を説明する。
【0013】
図1に示すように、撮像装置140の正面には複数の撮像部131-139が配置され、上部には撮影開始を指示するレリーズボタン130が配置されている。撮像部131-139は、正方格子状に均等に配置され、それら撮像部の上下軸、左右軸、光軸はすべて同じ方向である。
【0014】
撮像装置140は、多視点撮影装置または多眼方式のカメラと呼ばれ、撮像部131-139によって撮像した複数の画像を合成して、被写界深度が浅い画像を生成する。その際、平面上にない任意の被写体すべてにフォーカスを合わせ、それ以外は暈けた、被写界深度が浅い画像を生成する。
【0015】
ユーザがレリーズボタン130を押すと、撮像部131-139はそれぞれ、撮影レンズや絞りなどを介して撮像デバイス上に結像された被写体の光情報に相当するアナログ信号を撮像デバイスから取り出す。そして、アナログ信号をアナログ-ディジタル変換し、さらにデモザイキングなどの画像処理を施した画像データを出力する。
【0016】
このような撮影装置140により、同一の被写体を複数の視点位置から撮影した画像データ群を得ることができる。ここでは撮像部の数が九個の例を示すが、複数の撮像部があれば本発明を適用することが可能であり、撮像部の数は任意である。また、撮像部の配置は、正方格子状に均等な配置である必要はなく、撮像部の配置も任意である。例えば、放射状や直線状に配置してもよいし、全くランダムな配置でもよい。
【0017】
また、一つの撮像部を雲台またはロボットアームなどによって移動して、異なる視点位置から被写体を撮影した複数の画像データに本発明を適用することができる。
【0018】
[画像処理装置]
●構成
図2のブロック図により実施例の画像処理装置の構成例を説明する。なお、画像処理装置は、撮像装置140の内部に組み込んでもよいし、撮像装置140とは別体とし、後述するインタフェイスを介して撮像装置140と通信を行い、後述する画像処理を行ってもよい。
【0019】
CPU101は、RAM102をワークメモリとして、ROM103およびハードディスクドライブ(HDD)105に格納されたプログラムを実行し、システムバス100を介して後述する各構成を制御して、後述する画像処理を含む様々な処理を実行する。
【0020】
撮像インタフェイス(I/F)104は、例えばUSBやIEEE1394などのシリアルバスインタフェイスであり、撮像装置140が接続される。CPU101は、撮像I/F104を介して、撮像装置140を制御して撮影を行い、撮像装置140から撮像データをから入力することが可能である。
【0021】
HDD I/F104は、例えばシリアルATAインタフェイスであり、例えばHDD105や光ディスクドライブなどの二次記憶装置が接続される。CPU101は、HDD I/F104を介して、HDD105のデータを読み出し、HDD105へデータを書き込むことが可能である。さらに、CPU101は、HDD105に格納されたデータをRAM102に展開し、逆に、RAM102に展開されたデータをHDD105に保存することが可能である。
【0022】
汎用I/F106は、例えばUSBやIEEE1394などのシリアルバスインタフェイスであり、キーボードやマウスなどの入力デバイス107や図示しないプリンタなどが接続される。また、ビデオI/F108は、例えばディジタルビジュアルインタフェイス(DVI)や高解像度マルチメディアインタフェイス(HDMI(登録商標))などインタフェイスであり、モニタ109などが接続される。CPU101は、モニタ109にユーザインタフェイス(UI)を表示する。
【0023】
●機能構成
図3のブロック図により画像処理装置の機能構成例を説明する。なお、図3に示す機能構成は、CPU101が画像処理のプログラムを実行することにより実現される。また、各機能構成における処理の詳細は後述する。
【0024】
画像入力部110は、撮像装置140またはHDD105などから撮像データおよび撮像データを撮影した装置(例えば撮像装置140)の情報や撮影情報(シャッタ速度、絞り値など)を示す撮像装置情報を入力する。なお、撮像データは、複数の撮像部(例えば撮像装置140の撮像部131-139)によって撮影された複数の画像データを含む。また、撮像装置情報は、撮像装置の画角や各撮像部の撮影位置(相対的な位置関係)などを示す。
【0025】
フォーカス座標取得部111は、基準の画像データを入力して、ユーザ指示に従いフォーカスを合わせる位置を示すフォーカス座標を出力する。なお、フォーカス座標取得部111はHDD105などから入力したフォーカス座標を出力してもよい。また、基準の画像データは、複数の画像データのうちの一つであり、複数の画像データのどれでもよいが、例えば撮像装置140の撮像部131-139のうち、中央に位置する撮像部135によって撮影された画像データを基準の画像データにする。
【0026】
距離推定部112は、複数の画像データおよび撮像装置情報を入力し、ステレオマッチングにより撮像シーンのデプス値を推定してデプス画像(距離マップ)を生成する。仮想ピント面設定部113は、フォーカス座標およびデプス画像を入力して曲面パラメータおよび三次元座標を示すフォーカス点を算出する。
【0027】
仮想ピント面生成部114は、曲面パラメータおよびフォーカス点を入力して仮想ピント面画像を生成する。画像合成部115は、複数の画像データ、撮像装置情報、デプス画像および仮想ピント面画像を入力して合成画像データを生成する。なお、CPU101は、合成画像データをモニタ109に表示したり、HDD105へ保存したりする。
【0028】
●画像処理
図4のフローチャートにより画像処理の一例を説明する。なお、図4に示す画像処理は、例えばUIを介してユーザに指示された場合にCPU101が実行する処理である。また、各処理の詳細は後述する。
【0029】
CPU101は、画像入力部110により、ユーザが指定する撮像データおよび撮像装置情報を入力し(S101)、フォーカス座標取得部111により、基準の画像データからフォーカス座標Pnを取得する(S102)。
【0030】
次に、CPU101は、距離推定部112により距離推定処理を実行してデプス画像を生成し(S103)、仮想ピント面設定部113により仮想ピント面設定処理を実行して曲面パラメータSとフォーカス点pnを算出する(S104)。
【0031】
次に、CPU101は、仮想ピント面生成部114により仮想ピント面生成処理を実行して仮想ピント面画像を生成する(S105)。そして、画像合成部115により画像合成処理を実行して合成画像データを生成し(S106)、合成画像データを出力する(S107)。
【0032】
●フォーカス座標取得部
図5によりフォーカス座標取得部111の処理(S102)を説明する。
【0033】
フォーカス座標取得部111は、図5(b)に一例を示すように、基準の画像データが表す画像(以下、基準画像)503をUI501に表示して、ユーザにフォーカスを合わせる位置(以下、フォーカス位置)を入力させる。ユーザは、ポインティングデバイスを用いてフォーカス位置を指定したり、画面にタッチすることでフォーカス位置を指定する。
【0034】
フォーカス座標取得部111は、フォーカス位置が指定されると、当該位置の基準画像503における座標をUI501の表示部502に表示する。図5(a)(b)において+記号はユーザが指定したフォーカス位置を示す。フォーカス座標は、図5(a)に示すように、基準画像160における座標Pn(xn, yn)(n=1, 2, …)として表現される。
【0035】
●距離推定部
距離推定部112は、視点が異なる複数の画像データを基に撮影シーンに含まれる被写体の距離を推定する。距離の推定方法にはステレオ法を利用するが、マルチベースラインステレオ法などの利用も可能である。図6のフローチャートにより距離推定部112の処理(S103)を説明する。
【0036】
距離推定部112は、撮像データから視点が異なる二つの画像データを入力する(S301)。例えば、中央に配置された撮像部135が撮影した画像データと、撮像部135の横方向に隣接する撮像部134が撮影した画像データを利用するものとする。以下では、撮像部135が撮影した画像データが表す画像を「基準画像」、撮像部134が撮影した画像データを「対応画像」と呼ぶ。なお、対応画像の撮像部は撮像部134に限らず、他の撮像部が撮影した画像データを用いても構わない。
【0037】
次に、距離推定部112は、基準画像の例えば原点に注目画素を設定し(S302)、注目画素とその周囲画素を含む注目領域を設定する(S303)。そして、注目領域と対応画像の間でブロックマッチングを行って、注目画素に対応する対応画像の画素(対応画素)を決定する(S304)。
【0038】
次に、距離推定部112は、撮像装置情報が示す対応画像を撮影した撮像部134の画角や撮像部135からの相対位置、および、注目画素と対応画素に基づき、注目画素に対応する距離pを計算する(S305)。
【0039】
図7により距離pの計算を説明する。角度αは、撮像部135の水平画角、基準画像の撮像位置、注目画素の座標から算出される。角度βは撮像部134の水平画角、対応画像の撮像位置、対応画素の座標から算出される。距離sは、撮像部135と撮像部134の距離であり、基準画像と対応画像の撮像位置から算出される。被写体141との距離pは次式によって計算される。
p = {sinα・sinβ/sin(π-α-β)}s …(1)
【0040】
次に、距離推定部112は、基準画像の全画素に対応する距離pを計算したか否かを判定し(S306)、未計算の画素があれば注目画素を移動して(S307)、処理をステップS303に戻す。また、基準画像の全画素に対応する距離pを計算した場合は、各画素に対応する距離pを画素値に対応させたデプス画像を生成する(S308)。
【0041】
●仮想ピント面設定部
仮想ピント面設定部113は、入力したフォーカス座標Pnからフォーカス点pn、つまり三次元空間のフォーカス座標を算出する。次に、算出した被写体位置に応じてフォーカスを合わせる面(以下、ピント面)の式の次数を設定し、当該次数を曲面パラメータSとして出力する。言い換えれば、仮想ピント面設定部113は、フォーカス座標Pnの位置と数に応じたピント面の形状を設定する。
【0042】
図8のフローチャートにより仮想ピント面設定部113の処理(S104)を説明する。仮想ピント面設定部113は、デプス画像とフォーカス座標Pnを入力し(S131)、デプス画像からフォーカス座標Pnに対応するフォーカス点pnを算出する(S132)。
【0043】
図9によりフォーカス点pnとフォーカス座標Pnの関係を説明する。フォーカス座標Pnは基準画像160のxy座標として表現され、フォーカス点pnは、フォーカス座標Pnに対応する、現実の三次元空間におけるフォーカス点をxyz座標で表現する。デプス画像を二次元配列をDmap、フォーカス座標をPn=(xn, yn)とすると、フォーカス座標Pnの、撮影装置140からの距離はDmap(Pn)と表される。従って、フォーカス点はpn(x, y, z)=(xn, yn, Dmap(xn, yn))である。
【0044】
次に、仮想ピント面設定部113は、フォーカス点pnの数Nと所定数Gthを比較する(S133)。そして、N≦Gthであれば曲面パラメータSにN-1を設定し(S134)、N>Gthであれば曲面パラメータSに所定数Gthを設定し(S135)、曲面パラメータSとフォーカス点pnを出力する(S136)。
【0045】
例えばフォーカス点pnが三点の場合は曲面パラメータS=2になり、仮想ピント面生成部114は、二次曲線からピント面を生成する。つまり、曲面パラメータSを制御して、より低い次数の曲線を一意に決定することができる。
【0046】
また、フォーカス点pnの数が膨大になると次数も大きくなって複雑なピント面になる。その結果、ピント面を生成する演算コストが高くなったり、ピント面を生成できな場合が生じる。そこで、フォーカス点pnの数が所定数Gthを超える場合は次数をGthに制限する。
【0047】
Gth=3とすれば、フォーカス点pnが三点を超える場合も曲面パラメータはS=3になり、ピント面の次数は3である。フォーカス点pnの数Nが10や20など膨大な場合も、三次曲線によりピント面を近似することで、ピント面をより単純に生成することが可能になる。勿論、フォーカス点pnの数Nに比べて次数が低い場合はピント面に載らないフォーカス点pnが発生する場合がある。Gthは、フォーカス点pnの数Nと演算コストを考慮して適切に決定するか、必要に応じて調整可能にする。
【0048】
●仮想ピント面生成部
図10により仮想ピント面の生成を説明する。図10における原点は撮像装置140の位置であり、図10は被写体が存在する三次元空間をy軸方向から観察した様子を示す。従って、図10におけるz軸は奥行き(撮影距離)に相当する。また、以下の説明ではGth=3とする。
【0049】
図10(a)はフォーカス点pnが一点の場合を示し、曲面パラメータはS=0になり、零次曲線に従う仮想ピント面が生成される。つまり、N=1の場合は、z軸に直交する仮想ピント面が生成される。
【0050】
図10(b)はフォーカス点pnが二点の場合を示し、曲面パラメータはS=1になり、フォーカス点p1、p2を通る一次曲線に従う仮想ピント面が生成される。
【0051】
図10(c)はフォーカス点pnが三点の場合を示し、曲面パラメータはS=2になり、フォーカス点p1、p2、p3を通る二次曲線に従う仮想ピント面が生成される。
【0052】
図10(d)はフォーカス点pnが四点の場合を示し(N>Gth)、曲面パラメータはS=Gth=3になり、フォーカス点p1、p2、p3、p4を通る三次曲線に従う仮想ピント面が生成される。
【0053】
図10(e)はフォーカス点pnが五点の場合を示し(N>Gth)、曲面パラメータはS=Gth=3になり、三次曲線に従う仮想ピント面が生成される。この場合は、フォーカス点p1-p5のすべてが仮想ピント面に載るとは限らないが、仮想ピント面として単純で滑らかな曲面が生成される。
【0054】
図11のフローチャートにより仮想ピント面生成部114の処理(S105)を説明する。仮想ピント面生成部114は、曲面パラメータSとフォーカス点pnを入力し(S141)、曲面パラメータSに対応する多項式を選択する(S142)。Gth=3の場合、多項式は次のようになる。
if (S = 0) z = a;
if (S = 1) z = ax + b;
if (S = 2) z = ax2 +bx +c;
if (S = 3) z = ax3 +bx2 +cx + d; …(2)
【0055】
次に、仮想ピント面生成部114は、フォーカス点pnから多項式の係数を算出する(S143)。多項式の係数は、選択された式(2)に応じて、(a, b)、(a, b, c)または(a, b, c, d)の形態をとる。フォーカス点pnはxyz座標値であるが、xz座標により多項式を解くことで、xz平面上の曲線を算出する。係数の算出方法は既知であるが、例えば最小二乗法により近似曲線を求めて算出してもよいし、行列演算により算出してもよい。
【0056】
次に、仮想ピント面生成部114は、算出した係数を適用した多項式が表す曲線から仮想ピント面画を生成する(S144)。つまり、多項式が表す曲線と撮像装置情報に含まれる画角θwから、基準画像160の各画素の仮想ピント面のz座標値を表す二次元画像を生成する。そして、当該二次元画像を仮想ピント面画像として出力する(S145)。
【0057】
図12により仮想ピント面(曲面)および仮想ピント面画像を説明する。図12(a)に示すように、三つのフォーカス点pnを通る曲線1201を求め、曲線1201をy軸方向に拡張した仮想ピント面1202を生成する。そして、図12(b)に示すように、仮想ピント面1202の深さに対応してグレイスケール値を設定した仮想ピント面画像1203を生成する。例えば、仮想ピント面画像1203の濃度が大きい領域はピント面が深い(遠い)領域を表し、濃度が小さい領域はピント面が浅い(近い)領域を表す。
【0058】
また、曲線1201は、下式に示すように、フォーカス点pnのXZ座標を通るスプライン関数によって算出してもよい。ただし、仮想ピント面にフォーカス点が載らない場合がある。
z = ΣiCiBi(x) …(3)
ここで、xは入力値、
zは出力値、
Bi(x)は基底関数、
Ciはスプライン係数、
iは基底関数番号。
【0059】
スプライン関数を用いて所望するフォーカス点pnを通るような補間関数を得るには、与えられたフォーカス点pnからスプライン係数を算出する。スプライン係数の算出は、フォーカス点pnのベクトルをX={x0, …, xN}(ただし、x0≦ … ≦xN)とする。また、対応する出力値のベクトルをZ={z0, …, zN}とする。
【0060】
次に、フォーカス点pnに対して節点を設定する。シェーンバーグ・ホイットニの条件を満たせば節点を任意に設定してよい。例えば節点として、フォーカス点pnの中点を設定したり、フォーカス点と同一点を設定してもよい。そして、設定した節点から基底関数を算出する。ここで、基底関数の算出は、一般的なDeBoor-Coxのアルゴリズムを用いる。
【0061】
次に、フォーカス点pnと基底関数から下の係数行列Mを生成する。
┌ ┐
│B0(x0) B1(x0) … BN(x0)│
│B0(x1) B1(x1) … BN(x1)│
M =│ : : │ …(4)
│ : : │
│B0(xN) B1(xN) … BN(xN)│
└ ┘
【0062】
さらに、スプライン係数のベクトルをCとすると、スプライン関数は次の行列式によって表される。LU分解などを用いて、行列式(5)をスプライン係数について解くとスプライン係数ベクトルCを得ることができる。
Z = MC …(5)
【0063】
上記では基底関数としてBスプラインを用いる例を説明したが、基底関数には不均等有理Bスプライン(non uniform rational B-spline)、ベジェ(Bezier)など、あらゆる区分的関数を用いることができる。
【0064】
また、上記では仮想ピント面1202のY座標値が同一の例を説明したが、Y軸方向も自由に変形した仮想ピント曲面を生成することができる。その場合、三次元スプライン関数の係数を算出するが、三次元スプライン関数は上記の一次元スプライン関数を拡張した次式によって表される。
X = ΣiΣjΣkαijkBi(y)Bj(z)Bkz(x)
Y = ΣiΣjΣkβijkBi(y)Bj(z)Bkz(x) …(6)
Z = ΣiΣjΣkγijkBi(y)Bj(z)Bkz(x)
ここで、Σiの演算範囲はi=0からN、
Σjの演算範囲はj=0からN、
Σkの演算範囲はk=0からN。
【0065】
そして、一次元の場合と同様に、各次元のスプライン係数を算出する。図12(c)はフォーカス点pnが四点の場合の仮想ピント曲面1204の一例を示す。
【0066】
●画像合成部
画像合成部115は、各画像データに重み係数を設定し、仮想ピント画像および撮像装置情報を基に各画像データが表す画像をシフトして重み係数を乗算した画像データを加算した合成画像データを生成する。
【0067】
図13のフローチャートにより画像合成部115の処理(S106)を説明する。画像合成部115は、撮像データ、撮像装置情報、仮想ピント面画像を入力し(S151)、画像を合成する際に用いる、各画像データの重み係数を設定する(S152)。
【0068】
図14により重み係数を説明する。図14(a)は撮像部131-139の位置Pcm (m=0-8)を表し、位置Pcmに対応する画像データが表す画像をIm、画像Imに対応する重み係数をA(m)とする。ここでは、中央Pc4に配置された撮像部135の重み係数A(4)を中心にガウス関数に従う重み係数を設定し、重み係数の和が1になるよう正規化する(図14(b)参照)。こうすれば、仮想ピント面から外れた領域の暈けを滑らかに増加させることができる。言い換えれば、撮像部135が撮影した画像を中心に、撮像部131-139が撮影した画像を合成する。
【0069】
次に、画像合成部115は、仮想ピント面画像と撮像装置情報を基に各画像のシフト量を算出する(S153)。仮想ピント面画像の注目画素の値に対応する撮影距離をdとすると、画像Imの水平方向のシフト量Δi(m, d)および垂直方向のシフト量Δj(m, d)を下式により算出する。
Δi(m, d) = (sm - s')W/{2d・tan(θw/2)}
Δj(m, d) = (tm - t')H/{2d・tan(θh/2)} …(7)
ここで、dは仮想ピント面画像が示す撮影距離、
Wは水平方向の画像サイズ、
Hは垂直方向の画像サイズ、
θwは撮像部の水平視野角、
θhは撮像部の垂直視野角、
(sm, tm)はxy平面におけるPcmの座標、
(s', t')はxy平面における撮像部135の位置Pc4の座標。
【0070】
次に、画像合成部115は、各画像データの画素にシフト量分のシフトを行い重み係数を乗算して、シフトおよび重み付けされた画素の値の総和を求める下式の重み付け加算を行う(S154)。そして、全画素に対する下式の計算が終了すると合成画像データとして出力する(S155)。
H(i, j) = ΣmA(m)Im(i+Δi(m, d), j+Δj(m, d)) …(8)
ここで、Hは合成画像データ。
【0071】
上記では、重み係数A(m)を固定値として説明したが、汎用I/F106を介して処理パラメータとして重み係数A(m)を入力してもよい。
【0072】
このように、視点が異なる複数の画像データから画像を生成する際、平面とは限らないピント面(またはピント曲面)に位置する被写体にフォーカスが合い、ピント面以外の領域は暈けが滑らかに増加する、被写界深度が浅い画像を容易に生成することができる。
【実施例2】
【0073】
以下、本発明にかかる実施例2の画像処理を説明する。なお、実施例2において、実施例1と略同様の構成については、同一符号を付して、その詳細説明を省略する。
【0074】
実施例1では、仮想ピント面の形状をフォーカス点pnの数Nから決定する例を説明した。この手法によれば、数Nが増えると仮想ピント面の形状が複雑になり計算コストが激増する。そこで、実施例2においては、フォーカス点pnをグループ化したグループの数から仮想ピント面の形状を決定する例を説明する。
【0075】
図15のブロック図により実施例2の画像処理装置の機能構成例を説明する。なお、図15に示す機能構成は、CPU101が画像処理のプログラムを実行することにより実現される。実施例2の機能構成において、実施例1と異なる点は、被写界深度取得部121が追加されたことである。
【0076】
被写界深度取得部121は、撮像装置情報が示す絞り値から撮像データが撮影された際の被写界深度を取得し、被写界深度を示す情報を出力する。なお、絞り値と撮像装置140の被写界深度の関係は、例えばHDD105などに格納されたテーブルに格納されている。あるいは、撮像装置情報に付加された被写界深度を示す情報を取得してもよいし、ユーザが入力してもよい。仮想ピント面設定部113は、フォーカス座標、デプス画像、被写界深度を示す情報を入力して曲面パラメータおよびフォーカス点を算出する。
【0077】
図16のフローチャートにより実施例2の画像処理の一例を説明する。なお、図16に示す画像処理は、例えばUIを介してユーザに指示された場合にCPU101が実行する処理である。また、ステップS101-S103、S105-S107の処理は実施例1と同様であり、その詳細説明を省略する。
【0078】
CPU101は、フォーカス座標Pnを取得(S102)した後、被写界深度取得部121により被写界深度を取得する(S201)。また、デプス画像を生成(S103)した後、仮想ピント面設定部113により仮想ピント面設定処理を実行して曲面パラメータSとフォーカス点pnを算出する(S202)。
【0079】
図17のフローチャートにより仮想ピント面設定部113の処理(S202)を説明する。なお、ステップS132、S135、S136の処理は実施例1と同様であり、その詳細説明を省略する。
【0080】
仮想ピント面設定部113は、デプス画像、フォーカス座標Pn、被写界深度を示す情報を入力し(S211)、フォーカス点pnを算出(S132)した後、被写界深度に基づきxz平面においてフォーカス点pnをグループ化する(S212)。そして、グループの数NGと所定数Gthを比較して(S213)。NG≦Gthであれば曲面パラメータSにNG-1を設定し(S214)、NG>Gthであれば曲面パラメータSに所定数Gthを設定する(S215)。
【0081】
被写界深度に含まれる被写体は一つの被写体として扱うことができる。従って、被写界深度に含まれる、フォーカス点pnに対応する被写体をグループ化すれば、次数を下げた面(または曲面)を用いても、フォーカス点pnにフォーカスが合った画像を得ることができる。
【0082】
図18によりフォーカス点pnのグループ化を説明する。図18は、図10と同様に、被写体が存在する三次元空間をy軸方向から観察した様子を示す。グループ化は、フォーカス点pnのxz座標上の距離Dと被写界深度Dc-Dfを比較して、距離DがDc-Dfの範囲に含まれるフォーカス点pnをグループ化する。
【0083】
図18の例では、四点のフォーカス点pnがあるが、フォーカス点p1とp2の距離はDc-Dfの範囲に含まれるためグループ化される。また、フォーカス点p3とp4の距離はDc-Dfの範囲に含まれないためグループ化されず、グループの数NGは3になる。
【0084】
また、グループ化されたフォーカス点の平均的な座標をグループのフォーカス点として以降の処理を行う。例えば、フォーカス点p1とp2をグループ化した場合、当該グループの代表フォーカス点Gi(x, y, z)を次式により計算する。なお、フォーカス点を一つしか含まないグループの代表フォーカス点は当該フォーカス点に等しいことは言うまでもない。
Gi(x) = {p1(x) + p(x)}/2
Gi(y) = {p1(y) + p(y)}/2 …(9)
Gi(z) = {p1(z) + p(z)}/2
【0085】
[変形例]
上記では、フォーカス座標PnをUIを介してユーザが指定する例を説明した。しかし、撮影画像中のオブジェクトや人物の顔を被写体領域として認識し、被写体領域の位置をフォーカス座標Pnにすることもできる。
【0086】
つまり、フォーカス座標取得部111は、基準画像から被写体領域を認識する。なお、被写体の認識には既存技術を用いる。例えば、基準画像から花瓶のようなオブジェクトを検出するには特許文献3が開示する手法を用い、人物の顔を認識するには特許文献4が開示する手法を用いる。
【0087】
図19により被写体領域の認識結果の一例を示す。フォーカス座標取得部111は、基準画像160の、例えば図19に破線で囲んだ領域を被写体領域として抽出し、被写体領域の中央の座標をフォーカス座標Pnとして出力する。
【0088】
[その他の実施例]
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステムあるいは装置のコンピュータ(又はCPUやMPU等)がプログラムを読み出して実行する処理である。
【技術分野】
【0001】
本発明は、多眼方式のカメラのような撮像装置が撮影した画像データの画像処理に関する。
【背景技術】
【0002】
同じ被写体を撮影した、撮影位置が異なる複数の画像からピントや被写界深度を変更した画像を生成する技術が存在する。この技術は、撮影位置とフォーカスを合わせたい被写体の距離に応じて複数の画像を変形し、変形後の画像を合成して被写界深度の浅い画像を生成する(リフォーカス処理)。
【0003】
また、特許文献1の発明は、被写体すべてにピントが合うように被写界深度を変更する発明を開示する。特許文献2の発明は、視点が異なる複数の画像からリフォーカス処理を行い、被写体が複数の場合はパンフォーカスによって複数の被写体にフォーカスを合わせる。しかし、これら発明は、被写界深度を深くするかパンフォーカスを用いるによって複数の被写体にフォーカスを合わせるため、被写界深度の浅い画像を生成することはできない。
【0004】
また、カメラに正対しない平面にフォーカスを合せた画像を合成する技術も提案されている。しかし、フォーカスを合わせたい複数の被写体が点在し、それら被写体が同一平面上にない場合は、この技術を用いても、それら被写体にフォーカスを合わせた、被写界深度が浅い画像を生成することはできない。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2008-256826公報
【特許文献2】特開2011-022796公報
【特許文献3】特開2011-053959公報
【特許文献4】特開2009-060379公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
本発明は、異なる撮影位置から被写体を撮影した複数の画像データから任意のピント面にフォーカスを合わせた画像データを生成することを目的とする。
【課題を解決するための手段】
【0007】
本発明は、前記の目的を達成する一手段として、以下の構成を備える。
【0008】
本発明にかかる画像処理は、異なる撮影位置から被写体を撮影した複数の画像データ、および、前記撮影位置を示す情報を入力し、前記複数の画像データの一つが表す画像におけるフォーカスを合わせる位置を示す少なくも一つのフォーカス座標を取得し、前記複数の画像データおよび前記撮影位置を示す情報から前記被写体の撮影距離を推定し、前記フォーカス座標および前記撮影距離からピント面を示す情報を生成し、前記撮影位置を示す情報および前記ピント面を示す情報に基づき前記複数の画像データを合成して、前記ピント面にフォーカスを合せた画像データを生成することを特徴とする。
【発明の効果】
【0009】
本発明によれば、異なる撮影位置から被写体を撮影した複数の画像データから任意のピント面にフォーカスを合わせた画像データを生成することができる。
【図面の簡単な説明】
【0010】
【図1】実施例の撮像装置の概観を説明する概観図。
【図2】実施例の画像処理装置の構成例を説明するブロック図。
【図3】画像処理装置の機能構成例を説明するブロック図。
【図4】画像処理の一例を説明するフローチャート。
【図5】フォーカス座標取得部の処理を説明する図。
【図6】距離推定部の処理を説明するフローチャート。
【図7】距離の計算を説明する図。
【図8】仮想ピント面設定部の処理を説明するフローチャート。
【図9】フォーカス点とフォーカス座標の関係を説明する図。
【図10】仮想ピント面の生成を説明する図。
【図11】仮想ピント面生成部の処理を説明するフローチャート。
【図12】仮想ピント面(曲面)および仮想ピント面画像を説明する図。
【図13】画像合成部の処理を説明するフローチャート。
【図14】重み係数を説明する図。
【図15】実施例2の画像処理装置の機能構成例を説明するブロック図。
【図16】実施例2の画像処理の一例を説明するフローチャート。
【図17】仮想ピント面設定部の処理を説明するフローチャート。
【図18】フォーカス点のグループ化を説明する図。
【図19】被写体領域の認識結果の一例を示す図。
【発明を実施するための形態】
【0011】
以下、本発明にかかる実施例の画像処理を図面を参照して詳細に説明する。
【実施例1】
【0012】
[撮像装置の概観]
図1の概観図により実施例の撮像装置140の概観を説明する。
【0013】
図1に示すように、撮像装置140の正面には複数の撮像部131-139が配置され、上部には撮影開始を指示するレリーズボタン130が配置されている。撮像部131-139は、正方格子状に均等に配置され、それら撮像部の上下軸、左右軸、光軸はすべて同じ方向である。
【0014】
撮像装置140は、多視点撮影装置または多眼方式のカメラと呼ばれ、撮像部131-139によって撮像した複数の画像を合成して、被写界深度が浅い画像を生成する。その際、平面上にない任意の被写体すべてにフォーカスを合わせ、それ以外は暈けた、被写界深度が浅い画像を生成する。
【0015】
ユーザがレリーズボタン130を押すと、撮像部131-139はそれぞれ、撮影レンズや絞りなどを介して撮像デバイス上に結像された被写体の光情報に相当するアナログ信号を撮像デバイスから取り出す。そして、アナログ信号をアナログ-ディジタル変換し、さらにデモザイキングなどの画像処理を施した画像データを出力する。
【0016】
このような撮影装置140により、同一の被写体を複数の視点位置から撮影した画像データ群を得ることができる。ここでは撮像部の数が九個の例を示すが、複数の撮像部があれば本発明を適用することが可能であり、撮像部の数は任意である。また、撮像部の配置は、正方格子状に均等な配置である必要はなく、撮像部の配置も任意である。例えば、放射状や直線状に配置してもよいし、全くランダムな配置でもよい。
【0017】
また、一つの撮像部を雲台またはロボットアームなどによって移動して、異なる視点位置から被写体を撮影した複数の画像データに本発明を適用することができる。
【0018】
[画像処理装置]
●構成
図2のブロック図により実施例の画像処理装置の構成例を説明する。なお、画像処理装置は、撮像装置140の内部に組み込んでもよいし、撮像装置140とは別体とし、後述するインタフェイスを介して撮像装置140と通信を行い、後述する画像処理を行ってもよい。
【0019】
CPU101は、RAM102をワークメモリとして、ROM103およびハードディスクドライブ(HDD)105に格納されたプログラムを実行し、システムバス100を介して後述する各構成を制御して、後述する画像処理を含む様々な処理を実行する。
【0020】
撮像インタフェイス(I/F)104は、例えばUSBやIEEE1394などのシリアルバスインタフェイスであり、撮像装置140が接続される。CPU101は、撮像I/F104を介して、撮像装置140を制御して撮影を行い、撮像装置140から撮像データをから入力することが可能である。
【0021】
HDD I/F104は、例えばシリアルATAインタフェイスであり、例えばHDD105や光ディスクドライブなどの二次記憶装置が接続される。CPU101は、HDD I/F104を介して、HDD105のデータを読み出し、HDD105へデータを書き込むことが可能である。さらに、CPU101は、HDD105に格納されたデータをRAM102に展開し、逆に、RAM102に展開されたデータをHDD105に保存することが可能である。
【0022】
汎用I/F106は、例えばUSBやIEEE1394などのシリアルバスインタフェイスであり、キーボードやマウスなどの入力デバイス107や図示しないプリンタなどが接続される。また、ビデオI/F108は、例えばディジタルビジュアルインタフェイス(DVI)や高解像度マルチメディアインタフェイス(HDMI(登録商標))などインタフェイスであり、モニタ109などが接続される。CPU101は、モニタ109にユーザインタフェイス(UI)を表示する。
【0023】
●機能構成
図3のブロック図により画像処理装置の機能構成例を説明する。なお、図3に示す機能構成は、CPU101が画像処理のプログラムを実行することにより実現される。また、各機能構成における処理の詳細は後述する。
【0024】
画像入力部110は、撮像装置140またはHDD105などから撮像データおよび撮像データを撮影した装置(例えば撮像装置140)の情報や撮影情報(シャッタ速度、絞り値など)を示す撮像装置情報を入力する。なお、撮像データは、複数の撮像部(例えば撮像装置140の撮像部131-139)によって撮影された複数の画像データを含む。また、撮像装置情報は、撮像装置の画角や各撮像部の撮影位置(相対的な位置関係)などを示す。
【0025】
フォーカス座標取得部111は、基準の画像データを入力して、ユーザ指示に従いフォーカスを合わせる位置を示すフォーカス座標を出力する。なお、フォーカス座標取得部111はHDD105などから入力したフォーカス座標を出力してもよい。また、基準の画像データは、複数の画像データのうちの一つであり、複数の画像データのどれでもよいが、例えば撮像装置140の撮像部131-139のうち、中央に位置する撮像部135によって撮影された画像データを基準の画像データにする。
【0026】
距離推定部112は、複数の画像データおよび撮像装置情報を入力し、ステレオマッチングにより撮像シーンのデプス値を推定してデプス画像(距離マップ)を生成する。仮想ピント面設定部113は、フォーカス座標およびデプス画像を入力して曲面パラメータおよび三次元座標を示すフォーカス点を算出する。
【0027】
仮想ピント面生成部114は、曲面パラメータおよびフォーカス点を入力して仮想ピント面画像を生成する。画像合成部115は、複数の画像データ、撮像装置情報、デプス画像および仮想ピント面画像を入力して合成画像データを生成する。なお、CPU101は、合成画像データをモニタ109に表示したり、HDD105へ保存したりする。
【0028】
●画像処理
図4のフローチャートにより画像処理の一例を説明する。なお、図4に示す画像処理は、例えばUIを介してユーザに指示された場合にCPU101が実行する処理である。また、各処理の詳細は後述する。
【0029】
CPU101は、画像入力部110により、ユーザが指定する撮像データおよび撮像装置情報を入力し(S101)、フォーカス座標取得部111により、基準の画像データからフォーカス座標Pnを取得する(S102)。
【0030】
次に、CPU101は、距離推定部112により距離推定処理を実行してデプス画像を生成し(S103)、仮想ピント面設定部113により仮想ピント面設定処理を実行して曲面パラメータSとフォーカス点pnを算出する(S104)。
【0031】
次に、CPU101は、仮想ピント面生成部114により仮想ピント面生成処理を実行して仮想ピント面画像を生成する(S105)。そして、画像合成部115により画像合成処理を実行して合成画像データを生成し(S106)、合成画像データを出力する(S107)。
【0032】
●フォーカス座標取得部
図5によりフォーカス座標取得部111の処理(S102)を説明する。
【0033】
フォーカス座標取得部111は、図5(b)に一例を示すように、基準の画像データが表す画像(以下、基準画像)503をUI501に表示して、ユーザにフォーカスを合わせる位置(以下、フォーカス位置)を入力させる。ユーザは、ポインティングデバイスを用いてフォーカス位置を指定したり、画面にタッチすることでフォーカス位置を指定する。
【0034】
フォーカス座標取得部111は、フォーカス位置が指定されると、当該位置の基準画像503における座標をUI501の表示部502に表示する。図5(a)(b)において+記号はユーザが指定したフォーカス位置を示す。フォーカス座標は、図5(a)に示すように、基準画像160における座標Pn(xn, yn)(n=1, 2, …)として表現される。
【0035】
●距離推定部
距離推定部112は、視点が異なる複数の画像データを基に撮影シーンに含まれる被写体の距離を推定する。距離の推定方法にはステレオ法を利用するが、マルチベースラインステレオ法などの利用も可能である。図6のフローチャートにより距離推定部112の処理(S103)を説明する。
【0036】
距離推定部112は、撮像データから視点が異なる二つの画像データを入力する(S301)。例えば、中央に配置された撮像部135が撮影した画像データと、撮像部135の横方向に隣接する撮像部134が撮影した画像データを利用するものとする。以下では、撮像部135が撮影した画像データが表す画像を「基準画像」、撮像部134が撮影した画像データを「対応画像」と呼ぶ。なお、対応画像の撮像部は撮像部134に限らず、他の撮像部が撮影した画像データを用いても構わない。
【0037】
次に、距離推定部112は、基準画像の例えば原点に注目画素を設定し(S302)、注目画素とその周囲画素を含む注目領域を設定する(S303)。そして、注目領域と対応画像の間でブロックマッチングを行って、注目画素に対応する対応画像の画素(対応画素)を決定する(S304)。
【0038】
次に、距離推定部112は、撮像装置情報が示す対応画像を撮影した撮像部134の画角や撮像部135からの相対位置、および、注目画素と対応画素に基づき、注目画素に対応する距離pを計算する(S305)。
【0039】
図7により距離pの計算を説明する。角度αは、撮像部135の水平画角、基準画像の撮像位置、注目画素の座標から算出される。角度βは撮像部134の水平画角、対応画像の撮像位置、対応画素の座標から算出される。距離sは、撮像部135と撮像部134の距離であり、基準画像と対応画像の撮像位置から算出される。被写体141との距離pは次式によって計算される。
p = {sinα・sinβ/sin(π-α-β)}s …(1)
【0040】
次に、距離推定部112は、基準画像の全画素に対応する距離pを計算したか否かを判定し(S306)、未計算の画素があれば注目画素を移動して(S307)、処理をステップS303に戻す。また、基準画像の全画素に対応する距離pを計算した場合は、各画素に対応する距離pを画素値に対応させたデプス画像を生成する(S308)。
【0041】
●仮想ピント面設定部
仮想ピント面設定部113は、入力したフォーカス座標Pnからフォーカス点pn、つまり三次元空間のフォーカス座標を算出する。次に、算出した被写体位置に応じてフォーカスを合わせる面(以下、ピント面)の式の次数を設定し、当該次数を曲面パラメータSとして出力する。言い換えれば、仮想ピント面設定部113は、フォーカス座標Pnの位置と数に応じたピント面の形状を設定する。
【0042】
図8のフローチャートにより仮想ピント面設定部113の処理(S104)を説明する。仮想ピント面設定部113は、デプス画像とフォーカス座標Pnを入力し(S131)、デプス画像からフォーカス座標Pnに対応するフォーカス点pnを算出する(S132)。
【0043】
図9によりフォーカス点pnとフォーカス座標Pnの関係を説明する。フォーカス座標Pnは基準画像160のxy座標として表現され、フォーカス点pnは、フォーカス座標Pnに対応する、現実の三次元空間におけるフォーカス点をxyz座標で表現する。デプス画像を二次元配列をDmap、フォーカス座標をPn=(xn, yn)とすると、フォーカス座標Pnの、撮影装置140からの距離はDmap(Pn)と表される。従って、フォーカス点はpn(x, y, z)=(xn, yn, Dmap(xn, yn))である。
【0044】
次に、仮想ピント面設定部113は、フォーカス点pnの数Nと所定数Gthを比較する(S133)。そして、N≦Gthであれば曲面パラメータSにN-1を設定し(S134)、N>Gthであれば曲面パラメータSに所定数Gthを設定し(S135)、曲面パラメータSとフォーカス点pnを出力する(S136)。
【0045】
例えばフォーカス点pnが三点の場合は曲面パラメータS=2になり、仮想ピント面生成部114は、二次曲線からピント面を生成する。つまり、曲面パラメータSを制御して、より低い次数の曲線を一意に決定することができる。
【0046】
また、フォーカス点pnの数が膨大になると次数も大きくなって複雑なピント面になる。その結果、ピント面を生成する演算コストが高くなったり、ピント面を生成できな場合が生じる。そこで、フォーカス点pnの数が所定数Gthを超える場合は次数をGthに制限する。
【0047】
Gth=3とすれば、フォーカス点pnが三点を超える場合も曲面パラメータはS=3になり、ピント面の次数は3である。フォーカス点pnの数Nが10や20など膨大な場合も、三次曲線によりピント面を近似することで、ピント面をより単純に生成することが可能になる。勿論、フォーカス点pnの数Nに比べて次数が低い場合はピント面に載らないフォーカス点pnが発生する場合がある。Gthは、フォーカス点pnの数Nと演算コストを考慮して適切に決定するか、必要に応じて調整可能にする。
【0048】
●仮想ピント面生成部
図10により仮想ピント面の生成を説明する。図10における原点は撮像装置140の位置であり、図10は被写体が存在する三次元空間をy軸方向から観察した様子を示す。従って、図10におけるz軸は奥行き(撮影距離)に相当する。また、以下の説明ではGth=3とする。
【0049】
図10(a)はフォーカス点pnが一点の場合を示し、曲面パラメータはS=0になり、零次曲線に従う仮想ピント面が生成される。つまり、N=1の場合は、z軸に直交する仮想ピント面が生成される。
【0050】
図10(b)はフォーカス点pnが二点の場合を示し、曲面パラメータはS=1になり、フォーカス点p1、p2を通る一次曲線に従う仮想ピント面が生成される。
【0051】
図10(c)はフォーカス点pnが三点の場合を示し、曲面パラメータはS=2になり、フォーカス点p1、p2、p3を通る二次曲線に従う仮想ピント面が生成される。
【0052】
図10(d)はフォーカス点pnが四点の場合を示し(N>Gth)、曲面パラメータはS=Gth=3になり、フォーカス点p1、p2、p3、p4を通る三次曲線に従う仮想ピント面が生成される。
【0053】
図10(e)はフォーカス点pnが五点の場合を示し(N>Gth)、曲面パラメータはS=Gth=3になり、三次曲線に従う仮想ピント面が生成される。この場合は、フォーカス点p1-p5のすべてが仮想ピント面に載るとは限らないが、仮想ピント面として単純で滑らかな曲面が生成される。
【0054】
図11のフローチャートにより仮想ピント面生成部114の処理(S105)を説明する。仮想ピント面生成部114は、曲面パラメータSとフォーカス点pnを入力し(S141)、曲面パラメータSに対応する多項式を選択する(S142)。Gth=3の場合、多項式は次のようになる。
if (S = 0) z = a;
if (S = 1) z = ax + b;
if (S = 2) z = ax2 +bx +c;
if (S = 3) z = ax3 +bx2 +cx + d; …(2)
【0055】
次に、仮想ピント面生成部114は、フォーカス点pnから多項式の係数を算出する(S143)。多項式の係数は、選択された式(2)に応じて、(a, b)、(a, b, c)または(a, b, c, d)の形態をとる。フォーカス点pnはxyz座標値であるが、xz座標により多項式を解くことで、xz平面上の曲線を算出する。係数の算出方法は既知であるが、例えば最小二乗法により近似曲線を求めて算出してもよいし、行列演算により算出してもよい。
【0056】
次に、仮想ピント面生成部114は、算出した係数を適用した多項式が表す曲線から仮想ピント面画を生成する(S144)。つまり、多項式が表す曲線と撮像装置情報に含まれる画角θwから、基準画像160の各画素の仮想ピント面のz座標値を表す二次元画像を生成する。そして、当該二次元画像を仮想ピント面画像として出力する(S145)。
【0057】
図12により仮想ピント面(曲面)および仮想ピント面画像を説明する。図12(a)に示すように、三つのフォーカス点pnを通る曲線1201を求め、曲線1201をy軸方向に拡張した仮想ピント面1202を生成する。そして、図12(b)に示すように、仮想ピント面1202の深さに対応してグレイスケール値を設定した仮想ピント面画像1203を生成する。例えば、仮想ピント面画像1203の濃度が大きい領域はピント面が深い(遠い)領域を表し、濃度が小さい領域はピント面が浅い(近い)領域を表す。
【0058】
また、曲線1201は、下式に示すように、フォーカス点pnのXZ座標を通るスプライン関数によって算出してもよい。ただし、仮想ピント面にフォーカス点が載らない場合がある。
z = ΣiCiBi(x) …(3)
ここで、xは入力値、
zは出力値、
Bi(x)は基底関数、
Ciはスプライン係数、
iは基底関数番号。
【0059】
スプライン関数を用いて所望するフォーカス点pnを通るような補間関数を得るには、与えられたフォーカス点pnからスプライン係数を算出する。スプライン係数の算出は、フォーカス点pnのベクトルをX={x0, …, xN}(ただし、x0≦ … ≦xN)とする。また、対応する出力値のベクトルをZ={z0, …, zN}とする。
【0060】
次に、フォーカス点pnに対して節点を設定する。シェーンバーグ・ホイットニの条件を満たせば節点を任意に設定してよい。例えば節点として、フォーカス点pnの中点を設定したり、フォーカス点と同一点を設定してもよい。そして、設定した節点から基底関数を算出する。ここで、基底関数の算出は、一般的なDeBoor-Coxのアルゴリズムを用いる。
【0061】
次に、フォーカス点pnと基底関数から下の係数行列Mを生成する。
┌ ┐
│B0(x0) B1(x0) … BN(x0)│
│B0(x1) B1(x1) … BN(x1)│
M =│ : : │ …(4)
│ : : │
│B0(xN) B1(xN) … BN(xN)│
└ ┘
【0062】
さらに、スプライン係数のベクトルをCとすると、スプライン関数は次の行列式によって表される。LU分解などを用いて、行列式(5)をスプライン係数について解くとスプライン係数ベクトルCを得ることができる。
Z = MC …(5)
【0063】
上記では基底関数としてBスプラインを用いる例を説明したが、基底関数には不均等有理Bスプライン(non uniform rational B-spline)、ベジェ(Bezier)など、あらゆる区分的関数を用いることができる。
【0064】
また、上記では仮想ピント面1202のY座標値が同一の例を説明したが、Y軸方向も自由に変形した仮想ピント曲面を生成することができる。その場合、三次元スプライン関数の係数を算出するが、三次元スプライン関数は上記の一次元スプライン関数を拡張した次式によって表される。
X = ΣiΣjΣkαijkBi(y)Bj(z)Bkz(x)
Y = ΣiΣjΣkβijkBi(y)Bj(z)Bkz(x) …(6)
Z = ΣiΣjΣkγijkBi(y)Bj(z)Bkz(x)
ここで、Σiの演算範囲はi=0からN、
Σjの演算範囲はj=0からN、
Σkの演算範囲はk=0からN。
【0065】
そして、一次元の場合と同様に、各次元のスプライン係数を算出する。図12(c)はフォーカス点pnが四点の場合の仮想ピント曲面1204の一例を示す。
【0066】
●画像合成部
画像合成部115は、各画像データに重み係数を設定し、仮想ピント画像および撮像装置情報を基に各画像データが表す画像をシフトして重み係数を乗算した画像データを加算した合成画像データを生成する。
【0067】
図13のフローチャートにより画像合成部115の処理(S106)を説明する。画像合成部115は、撮像データ、撮像装置情報、仮想ピント面画像を入力し(S151)、画像を合成する際に用いる、各画像データの重み係数を設定する(S152)。
【0068】
図14により重み係数を説明する。図14(a)は撮像部131-139の位置Pcm (m=0-8)を表し、位置Pcmに対応する画像データが表す画像をIm、画像Imに対応する重み係数をA(m)とする。ここでは、中央Pc4に配置された撮像部135の重み係数A(4)を中心にガウス関数に従う重み係数を設定し、重み係数の和が1になるよう正規化する(図14(b)参照)。こうすれば、仮想ピント面から外れた領域の暈けを滑らかに増加させることができる。言い換えれば、撮像部135が撮影した画像を中心に、撮像部131-139が撮影した画像を合成する。
【0069】
次に、画像合成部115は、仮想ピント面画像と撮像装置情報を基に各画像のシフト量を算出する(S153)。仮想ピント面画像の注目画素の値に対応する撮影距離をdとすると、画像Imの水平方向のシフト量Δi(m, d)および垂直方向のシフト量Δj(m, d)を下式により算出する。
Δi(m, d) = (sm - s')W/{2d・tan(θw/2)}
Δj(m, d) = (tm - t')H/{2d・tan(θh/2)} …(7)
ここで、dは仮想ピント面画像が示す撮影距離、
Wは水平方向の画像サイズ、
Hは垂直方向の画像サイズ、
θwは撮像部の水平視野角、
θhは撮像部の垂直視野角、
(sm, tm)はxy平面におけるPcmの座標、
(s', t')はxy平面における撮像部135の位置Pc4の座標。
【0070】
次に、画像合成部115は、各画像データの画素にシフト量分のシフトを行い重み係数を乗算して、シフトおよび重み付けされた画素の値の総和を求める下式の重み付け加算を行う(S154)。そして、全画素に対する下式の計算が終了すると合成画像データとして出力する(S155)。
H(i, j) = ΣmA(m)Im(i+Δi(m, d), j+Δj(m, d)) …(8)
ここで、Hは合成画像データ。
【0071】
上記では、重み係数A(m)を固定値として説明したが、汎用I/F106を介して処理パラメータとして重み係数A(m)を入力してもよい。
【0072】
このように、視点が異なる複数の画像データから画像を生成する際、平面とは限らないピント面(またはピント曲面)に位置する被写体にフォーカスが合い、ピント面以外の領域は暈けが滑らかに増加する、被写界深度が浅い画像を容易に生成することができる。
【実施例2】
【0073】
以下、本発明にかかる実施例2の画像処理を説明する。なお、実施例2において、実施例1と略同様の構成については、同一符号を付して、その詳細説明を省略する。
【0074】
実施例1では、仮想ピント面の形状をフォーカス点pnの数Nから決定する例を説明した。この手法によれば、数Nが増えると仮想ピント面の形状が複雑になり計算コストが激増する。そこで、実施例2においては、フォーカス点pnをグループ化したグループの数から仮想ピント面の形状を決定する例を説明する。
【0075】
図15のブロック図により実施例2の画像処理装置の機能構成例を説明する。なお、図15に示す機能構成は、CPU101が画像処理のプログラムを実行することにより実現される。実施例2の機能構成において、実施例1と異なる点は、被写界深度取得部121が追加されたことである。
【0076】
被写界深度取得部121は、撮像装置情報が示す絞り値から撮像データが撮影された際の被写界深度を取得し、被写界深度を示す情報を出力する。なお、絞り値と撮像装置140の被写界深度の関係は、例えばHDD105などに格納されたテーブルに格納されている。あるいは、撮像装置情報に付加された被写界深度を示す情報を取得してもよいし、ユーザが入力してもよい。仮想ピント面設定部113は、フォーカス座標、デプス画像、被写界深度を示す情報を入力して曲面パラメータおよびフォーカス点を算出する。
【0077】
図16のフローチャートにより実施例2の画像処理の一例を説明する。なお、図16に示す画像処理は、例えばUIを介してユーザに指示された場合にCPU101が実行する処理である。また、ステップS101-S103、S105-S107の処理は実施例1と同様であり、その詳細説明を省略する。
【0078】
CPU101は、フォーカス座標Pnを取得(S102)した後、被写界深度取得部121により被写界深度を取得する(S201)。また、デプス画像を生成(S103)した後、仮想ピント面設定部113により仮想ピント面設定処理を実行して曲面パラメータSとフォーカス点pnを算出する(S202)。
【0079】
図17のフローチャートにより仮想ピント面設定部113の処理(S202)を説明する。なお、ステップS132、S135、S136の処理は実施例1と同様であり、その詳細説明を省略する。
【0080】
仮想ピント面設定部113は、デプス画像、フォーカス座標Pn、被写界深度を示す情報を入力し(S211)、フォーカス点pnを算出(S132)した後、被写界深度に基づきxz平面においてフォーカス点pnをグループ化する(S212)。そして、グループの数NGと所定数Gthを比較して(S213)。NG≦Gthであれば曲面パラメータSにNG-1を設定し(S214)、NG>Gthであれば曲面パラメータSに所定数Gthを設定する(S215)。
【0081】
被写界深度に含まれる被写体は一つの被写体として扱うことができる。従って、被写界深度に含まれる、フォーカス点pnに対応する被写体をグループ化すれば、次数を下げた面(または曲面)を用いても、フォーカス点pnにフォーカスが合った画像を得ることができる。
【0082】
図18によりフォーカス点pnのグループ化を説明する。図18は、図10と同様に、被写体が存在する三次元空間をy軸方向から観察した様子を示す。グループ化は、フォーカス点pnのxz座標上の距離Dと被写界深度Dc-Dfを比較して、距離DがDc-Dfの範囲に含まれるフォーカス点pnをグループ化する。
【0083】
図18の例では、四点のフォーカス点pnがあるが、フォーカス点p1とp2の距離はDc-Dfの範囲に含まれるためグループ化される。また、フォーカス点p3とp4の距離はDc-Dfの範囲に含まれないためグループ化されず、グループの数NGは3になる。
【0084】
また、グループ化されたフォーカス点の平均的な座標をグループのフォーカス点として以降の処理を行う。例えば、フォーカス点p1とp2をグループ化した場合、当該グループの代表フォーカス点Gi(x, y, z)を次式により計算する。なお、フォーカス点を一つしか含まないグループの代表フォーカス点は当該フォーカス点に等しいことは言うまでもない。
Gi(x) = {p1(x) + p(x)}/2
Gi(y) = {p1(y) + p(y)}/2 …(9)
Gi(z) = {p1(z) + p(z)}/2
【0085】
[変形例]
上記では、フォーカス座標PnをUIを介してユーザが指定する例を説明した。しかし、撮影画像中のオブジェクトや人物の顔を被写体領域として認識し、被写体領域の位置をフォーカス座標Pnにすることもできる。
【0086】
つまり、フォーカス座標取得部111は、基準画像から被写体領域を認識する。なお、被写体の認識には既存技術を用いる。例えば、基準画像から花瓶のようなオブジェクトを検出するには特許文献3が開示する手法を用い、人物の顔を認識するには特許文献4が開示する手法を用いる。
【0087】
図19により被写体領域の認識結果の一例を示す。フォーカス座標取得部111は、基準画像160の、例えば図19に破線で囲んだ領域を被写体領域として抽出し、被写体領域の中央の座標をフォーカス座標Pnとして出力する。
【0088】
[その他の実施例]
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステムあるいは装置のコンピュータ(又はCPUやMPU等)がプログラムを読み出して実行する処理である。
【特許請求の範囲】
【請求項1】
異なる撮影位置から被写体を撮影した複数の画像データ、および、前記撮影位置を示す情報を入力する入力手段と、
前記複数の画像データの一つが表す画像におけるフォーカスを合わせる位置を示す少なくも一つのフォーカス座標を取得する取得手段と、
前記複数の画像データおよび前記撮影位置を示す情報から前記被写体の撮影距離を推定する推定手段と、
前記フォーカス座標および前記撮影距離からピント面を示す情報を生成する面の生成手段と、
前記撮影位置を示す情報および前記ピント面を示す情報に基づき前記複数の画像データを合成して、前記ピント面にフォーカスを合せた画像データを生成する画像の生成手段とを有することを特徴とする画像処理装置。
【請求項2】
前記面の生成手段は、前記フォーカス座標および前記撮影距離から前記フォーカスを合わせる位置の三次元座標を示すフォーカス点を設定する手段と、
前記フォーカス点の数に応じた次数の、前記フォーカス点を通る曲線を設定し、前記曲線を拡張して前記ピント面とする手段とを有することを特徴とする請求項1に記載された画像処理装置。
【請求項3】
前記面の生成手段は、前記複数の画像データの撮影における被写界深度を入力する手段と、
前記フォーカス座標および前記撮影距離から前記フォーカスを合わせる位置の三次元座標を示すフォーカス点を設定する手段と、
前記被写界深度に基づき前記フォーカス点をグループ化する手段と、
前記フォーカス点のグループの数に応じた次数の、前記グループの代表フォーカス点を通る曲線を設定し、前記曲線を拡張して前記ピント面とする手段とを有することを特徴とする請求項1に記載された画像処理装置。
【請求項4】
前記面の生成手段は、所定数を超えないように前記次数を制限することを特徴とする請求項2または請求項3に記載された画像処理装置。
【請求項5】
前記画像の生成手段は、前記複数の画像データそれぞれの重み係数を設定する手段と、
前記撮影位置を示す情報および前記ピント面を示す情報に基づき前記複数の画像データそれぞれが表す画像のシフト量を算出する手段と、
前記複数の画像データそれぞれについて前記シフト量分のシフトを行い前記重み係数を乗算した画像データを合成する手段とを有することを特徴とする請求項1から請求項4の何れか一項に記載された画像処理装置。
【請求項6】
前記取得手段は、前記複数の画像データの一つが表す画像の被写体領域を認識し、前記被写体領域の中央の座標を前記フォーカス座標とすることを特徴とする請求項1から請求項5の何れか一項に記載された画像処理装置。
【請求項7】
異なる撮影位置から被写体を撮影する複数の撮像手段と、
請求項1から請求項6の何れか一項に記載された画像処理装置とを有することを特徴とする撮像装置。
【請求項8】
入力手段、取得手段、推定手段、面の生成手段、画像の生成手段を有する画像処理装置の画像処理方法であって、
前記入力手段が、異なる撮影位置から被写体を撮影した複数の画像データ、および、前記撮影位置を示す情報を入力し、
前記取得手段が、前記複数の画像データの一つが表す画像におけるフォーカスを合わせる位置を示す少なくも一つのフォーカス座標を取得し、
前記推定手段が、前記複数の画像データおよび前記撮影位置を示す情報から前記被写体の撮影距離を推定し、
前記面の生成手段が、前記フォーカス座標および前記撮影距離からピント面を示す情報を生成し、
前記画像の生成手段が、前記撮影位置を示す情報および前記ピント面を示す情報に基づき前記複数の画像データを合成して、前記ピント面にフォーカスを合せた画像データを生成するとを有することを特徴とする画像処理方法。
【請求項9】
コンピュータを請求項1から請求項6の何れか一項に記載された画像処理装置の各手段として機能させることを特徴とするプログラム。
【請求項1】
異なる撮影位置から被写体を撮影した複数の画像データ、および、前記撮影位置を示す情報を入力する入力手段と、
前記複数の画像データの一つが表す画像におけるフォーカスを合わせる位置を示す少なくも一つのフォーカス座標を取得する取得手段と、
前記複数の画像データおよび前記撮影位置を示す情報から前記被写体の撮影距離を推定する推定手段と、
前記フォーカス座標および前記撮影距離からピント面を示す情報を生成する面の生成手段と、
前記撮影位置を示す情報および前記ピント面を示す情報に基づき前記複数の画像データを合成して、前記ピント面にフォーカスを合せた画像データを生成する画像の生成手段とを有することを特徴とする画像処理装置。
【請求項2】
前記面の生成手段は、前記フォーカス座標および前記撮影距離から前記フォーカスを合わせる位置の三次元座標を示すフォーカス点を設定する手段と、
前記フォーカス点の数に応じた次数の、前記フォーカス点を通る曲線を設定し、前記曲線を拡張して前記ピント面とする手段とを有することを特徴とする請求項1に記載された画像処理装置。
【請求項3】
前記面の生成手段は、前記複数の画像データの撮影における被写界深度を入力する手段と、
前記フォーカス座標および前記撮影距離から前記フォーカスを合わせる位置の三次元座標を示すフォーカス点を設定する手段と、
前記被写界深度に基づき前記フォーカス点をグループ化する手段と、
前記フォーカス点のグループの数に応じた次数の、前記グループの代表フォーカス点を通る曲線を設定し、前記曲線を拡張して前記ピント面とする手段とを有することを特徴とする請求項1に記載された画像処理装置。
【請求項4】
前記面の生成手段は、所定数を超えないように前記次数を制限することを特徴とする請求項2または請求項3に記載された画像処理装置。
【請求項5】
前記画像の生成手段は、前記複数の画像データそれぞれの重み係数を設定する手段と、
前記撮影位置を示す情報および前記ピント面を示す情報に基づき前記複数の画像データそれぞれが表す画像のシフト量を算出する手段と、
前記複数の画像データそれぞれについて前記シフト量分のシフトを行い前記重み係数を乗算した画像データを合成する手段とを有することを特徴とする請求項1から請求項4の何れか一項に記載された画像処理装置。
【請求項6】
前記取得手段は、前記複数の画像データの一つが表す画像の被写体領域を認識し、前記被写体領域の中央の座標を前記フォーカス座標とすることを特徴とする請求項1から請求項5の何れか一項に記載された画像処理装置。
【請求項7】
異なる撮影位置から被写体を撮影する複数の撮像手段と、
請求項1から請求項6の何れか一項に記載された画像処理装置とを有することを特徴とする撮像装置。
【請求項8】
入力手段、取得手段、推定手段、面の生成手段、画像の生成手段を有する画像処理装置の画像処理方法であって、
前記入力手段が、異なる撮影位置から被写体を撮影した複数の画像データ、および、前記撮影位置を示す情報を入力し、
前記取得手段が、前記複数の画像データの一つが表す画像におけるフォーカスを合わせる位置を示す少なくも一つのフォーカス座標を取得し、
前記推定手段が、前記複数の画像データおよび前記撮影位置を示す情報から前記被写体の撮影距離を推定し、
前記面の生成手段が、前記フォーカス座標および前記撮影距離からピント面を示す情報を生成し、
前記画像の生成手段が、前記撮影位置を示す情報および前記ピント面を示す情報に基づき前記複数の画像データを合成して、前記ピント面にフォーカスを合せた画像データを生成するとを有することを特徴とする画像処理方法。
【請求項9】
コンピュータを請求項1から請求項6の何れか一項に記載された画像処理装置の各手段として機能させることを特徴とするプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図12】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図12】
【公開番号】特開2012−253444(P2012−253444A)
【公開日】平成24年12月20日(2012.12.20)
【国際特許分類】
【出願番号】特願2011−122597(P2011−122597)
【出願日】平成23年5月31日(2011.5.31)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
【公開日】平成24年12月20日(2012.12.20)
【国際特許分類】
【出願日】平成23年5月31日(2011.5.31)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
[ Back to top ]