(57)【特許請求の範囲】
【請求項１】
入射光量を調節する開口絞りと、複数のレンズを配置したレンズアレイと、前記レンズアレイを介して被写体の像を光電変換する撮像素子とを有する撮像装置によって得られたキャリブレーション画像データを取得する画像データ取得手段と、
前記キャリブレーション画像データが前記レンズアレイのキャリブレーションに適しているかどうかを、前記キャリブレーション画像データに含まれる前記レンズアレイを介した前記被写体の像の少なくとも１つの形状に基づいて判定する判定手段と、
前記キャリブレーション画像データがキャリブレーションに適している場合、前記キャリブレーション画像データを用いて、前記レンズアレイを介して前記被写体の像が形成された前記撮像素子上での領域の位置を取得する位置取得手段と、
を備え、
前記キャリブレーション画像データは、前記レンズアレイを介した被写体の像を含み、各像は前記複数のレンズのうちの１つに対応する、
ことを特徴とする画像処理装置。
【請求項２】
前記判定手段は、前記キャリブレーション画像データに含まれる前記レンズアレイを介した前記被写体の像の形状が、前記開口絞りの形状から予測される形状から所定の範囲を超えて変形している場合に、前記キャリブレーション画像データは前記キャリブレーションに適していないと判定することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記キャリブレーション画像データに基づいて、前記各レンズに対応する前記撮像素子上での前記領域の位置の設計値からのずれを算出するずれ算出手段を更に有することを特徴とする請求項１又は２に記載の画像処理装置。
【請求項４】
前記位置取得手段は、前記領域の重心位置を、前記領域の位置として取得することを特徴とする請求項１乃至３のいずれか一項に記載の画像処理装置。
【請求項５】
前記ずれ算出手段は、算出した前記ずれを基に、前記各レンズの実際の光学中心位置を算出することを特徴とする請求項３乃至４のいずれか一項に記載の画像処理装置。
【請求項６】
前記開口絞りの状態が前記キャリブレーション画像データが取得されたときよりも開放された状態で得られた画像データを用いて、前記ずれ算出手段で算出された前記ずれ或いは前記実際の光学中心位置に基づいて、任意のフォーカス位置における合成画像データを生成する画像合成手段をさらに備えることを特徴とする請求項５に記載の画像処理装置。
【請求項７】
前記判定手段は、前記複数のレンズのうちの１つを介した前記被写体の像が形成された前記撮像素子上における領域の重心位置と当該領域の境界部に隣接する境界画素の位置との距離を求め、求められた距離の変動量に基づいて、前記キャリブレーション画像データが前記キャリブレーションに適しているかどうかを判定することを特徴とする請求項４に記載の画像処理装置。
【請求項８】
前記キャリブレーション画像データが前記キャリブレーションに適していない場合に、前記開口絞りをより絞った状態に変更する手段をさらに備えることを特徴とする請求項１乃至７のいずれか１項に記載の画像処理装置。
【請求項９】
前記キャリブレーション画像データが前記キャリブレーションに適していない場合に、ユーザにその旨を警告することを特徴とする請求項１乃至７のいずれか１項に記載の画像処理装置。
【請求項１０】
前記キャリブレーション画像データは、前記開口絞りが絞られ、前記撮像装置が前記開口絞りが開放された状態におけるＦナンバーよりも大きなＦナンバーを有する状態で取得されることを特徴とする請求項１乃至９のいずれか一項に記載の画像処理装置。
【請求項１１】
前記キャリブレーション画像データは、前記レンズアレイに対するキャリブレーションの指示に従って前記開口絞りが絞られた状態で取得されることを特徴とする請求項１０に記載の画像処理装置。
【請求項１２】
入射光量を調節する開口絞りと、複数のレンズを配置したレンズアレイと、前記レンズアレイを介して被写体の像を光電変換する撮像素子とを有する撮像装置によって得られたキャリブレーション画像データを取得する画像データ取得ステップと、
前記キャリブレーション画像データが前記レンズアレイのキャリブレーションに適しているかどうかを、前記キャリブレーション画像データに含まれる前記レンズアレイを介した前記被写体の像の少なくとも１つの形状に基づいて判定する判定ステップと、
前記キャリブレーション画像データがキャリブレーションに適している場合、前記キャリブレーション画像データを用いて、前記レンズアレイを介して前記被写体の像が形成された前記撮像素子上での領域の位置を取得する位置取得ステップと、
を含み、
前記キャリブレーション画像データは、前記レンズアレイを介した被写体の像を含み、各像は前記複数のレンズのうちの１つに対応する、
ことを特徴とする画像処理方法。
【請求項１３】
コンピュータを請求項１から請求項１１のいずれか１項に記載の画像処理装置として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロレンズアレイのキャリブレーションに関する。
【背景技術】
【０００２】
これまで、カメラのピント調整を誤って撮像した場合は、ピント調整をやり直して再撮像する必要があった。また、奥行きの異なる複数の被写体に対してそれぞれにピントが合った画像を得たい場合には、被写体毎にピントを合わせた撮像を複数回行う必要があった。
【０００３】
近年、光学系に新たな光学素子を追加することで多視点からの画像を取得し、後で画像処理によってピント位置を調節すること（リフォーカス）が可能なライトフィールドフォトグラフィという技術が発展している。
【０００４】
この技術を用いれば、撮像後にピント調整を行えるため、撮像時のピント調整の失敗を画像処理で補うことができるという利点がある。さらに、画像処理方法を変えることで画像中の任意の被写体にピントを合わせた複数の画像を一枚の撮像画像から得る事ができ、撮像回数を減らす事ができるという利点もある。
【０００５】
ライトフィールドフォトグラフィでは、多視点の画像データから、空間中の複数の位置について、それぞれの位置を通過する光線の方向と強度（ライトフィールド、以下、「ＬＦ」という。）を計算する。そして、得られたＬＦの情報を用いて、仮想の光学系を通過して仮想のセンサに結像した場合の画像を計算する。このような仮想の光学系やセンサを適宜設定する事で、前述したリフォーカスも可能となる。ＬＦを取得するための撮像装置としてはメインレンズの後ろにマイクロレンズアレイを置いたPlenoptic Camera（例えば、特許文献１）や、小型のカメラを並べたカメラアレイが知られている。いずれも被写体を異なる方向から撮像した多視点画像を一回の撮像で得る事ができる。ライトフィールドフォトグラフィとは、多視点の画像データから仮想の光学条件下での仮想センサの取得する画像を計算することと言い換えることもできる。なお、以下では、この仮想のセンサが取得する画像を計算する処理を「リフォーカス処理」と呼ぶこととする。リフォーカス処理としては、取得した多視点の画像データを仮想センサ上に射影変換し加算して平均化する方法が知られている（例えば、特許文献２）。
【０００６】
リフォーカス処理では、仮想センサ上の画素の値を、該画素の位置に対応する多視点画像の画素を用いて計算する。通常、仮想センサの１画素には、多視点画像の複数の画素が対応している。したがって、マイクロレンズアレイの取り付け位置が基準位置（設計値）からずれると、計算によって求められる仮想センサ上の画素が、本来の加算されるべき画素と異なってしまい、リフォーカス処理にて得られる画像の鮮鋭度が損なわれてしまう。このような問題を解決するため、マイクロレンズアレイにおけるマイクロレンズ間のシフト量を、取得される多視点の画像データから計算によって求める方法が提案されている（例えば、特許文献３）。具体的には、各マイクロレンズを介して得られるそれぞれの画像データについて相関演算を行い、マイクロレンズ間のシフト量を計算によって求める方法である。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００９−１２４２１３号公報
【特許文献２】ＷＯ２００８０５０９０４
【特許文献３】特開２００３−１４１５２９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
特許文献３で提案される手法では、各マイクロレンズを介して得られるそれぞれの画像データ間の相対的なシフト量を求めることができるものの、設計値からのマイクロレンズアレイ取り付け位置のずれを求めることはできない。したがって、所望の被写体距離において正確にリフォーカス処理された画像を提供することができない。
【課題を解決するための手段】
【０００９】
本発明に係る画像処理装置は、入射光量を調節する開口絞りと、複数のレンズを配置したレンズアレイと、前記レンズアレイを介して被写体の像を光電変換する撮像素子とを有する撮像装置によって得られたキャリブレーション画像データを取得する画像データ取得手段と、前記キャリブレーション画像データが前記レンズアレイのキャリブレーションに適しているかどうかを、前記キャリブレーション画像データに含まれる前記レンズアレイを介した前記被写体の像の少なくとも１つの形状に基づいて判定する判定手段と、前記キャリブレーション画像データがキャリブレーションに適している場合、前記キャリブレーション画像データを用いて、前記レンズアレイを介して前記被写体の像が形成された前記撮像素子上での領域の位置を取得する位置取得手段と、を備え、前記キャリブレーション画像データは、前記レンズアレイを介した被写体の像を含み、各像は前記複数のレンズのうちの１つに対応する、ことを特徴とする。
【発明の効果】
【００１０】
本発明によれば、マイクロレンズアレイ（便宜上、各レンズのサイズに関わらず「マイクロレンズアレイ」と呼ぶ。）における各マイクロレンズの位置の設計値からのずれを高精度に求めることができる。また、ずれがあった場合において、リフォーカス処理時にずれ量を考慮し、所望の合焦位置にてボケを抑制したリフォーカス画像を得ることができる。
【図面の簡単な説明】
【００１１】
【図１】実施例１に係る撮像装置の内部構成を示すブロック図である。
【図２】撮像部の内部構成を示す図である。
【図３】通常の撮像光学系の構成を示す図である。
【図４】撮像部の構成を通常の撮像光学系に対応させて示した図である。
【図５】（ａ）は、絞りを解放した状態で均一な被写体を撮像した場合の、センサに記録される被写体像を模式的に示す図である。（ｂ）は、絞りを絞った状態で同じ被写体を撮像した場合の、センサに記録される被写体像を模式的に示す図である。
【図６】（ａ）〜（ｃ）は、絞りを解放にした状態で均一な面光源を撮像した際のセンサ上での撮像画像を示す図である。
【図７】（ａ）〜（ｃ）は、絞りを絞った状態で均一な面光源を撮像した際のセンサ上での撮像画像を示す図である。
【図８】実施例１に係る画像処理部の内部構成を示すブロック図である。
【図９】実施例１に係る撮像装置における、キャリブレーションの実行〜合成画像データの出力までの一連の処理の流れを示すフローチャートである。
【図１０】キャリブレーション処理の流れを示すフローチャートである。
【図１１】重心位置算出処理の流れを示すフローチャートである。
【図１２】重心位置を算出する際の参照範囲を説明する図である。
【図１３】ずれ算出処理の流れを示すフローチャートである。
【図１４】各マイクロレンズに対応するセンサ上での像の重心位置と各マイクロレンズの実際の光学中心位置との関係を示す図である。
【図１５】ずれ算出部が出力し得る情報の一例を示すテーブルである。
【図１６】画像合成部の内部構成を示すブロック図である。
【図１７】画像合成処理の流れを示すフローチャートである。
【図１８】合成画像における画素位置の算出方法を説明する図である。
【図１９】バッファに格納された中間データの一例である。
【図２０】本発明に適用可能なその他の撮像部の構成の一例を示す図である。
【図２１】実施例２に係る画像処理部の内部構成を示すブロック図である。
【図２２】実施例２に係る撮像装置における、キャリブレーションの実行〜合成画像データの出力までの一連の処理の流れを示すフローチャートである。
【図２３】画像解析部の内部構成を示すブロック図である。
【図２４】画像解析処理の流れを示すフローチャートである。
【図２５】重心境界間距離の概念を説明する図である。
【図２６】像解析処理の流れを示すフローチャートである。
【図２７】（ａ）は、絞りを解放の状態にして撮像した画像データから算出した変動量のヒストグラムを示す図である。（ｂ）は、絞りを絞って撮像した画像データから算出した変動量のヒストグラムを示す図である。
【図２８】実施例３に係る撮像装置における、キャリブレーションの実行〜任意のフォーカス位置における合成画像データの出力までの一連の処理の流れを示すフローチャートである。
【発明を実施するための形態】
【００１２】
［実施例１］
図１は、本実施例に係る撮像装置の内部構成を示すブロック図である。
【００１３】
撮像部１００は、被写体の光情報を撮像素子で受光し、受光した信号をＡ／Ｄ変換して、カラー画像データ（デジタルデータ）を取得する。撮像部１００の詳細については後述する。中央処理装置（ＣＰＵ）１０１は、以下に述べる各部を統括的に制御する。ＲＡＭ１０２は、ＣＰＵ１０１の主メモリ、ワークエリア等として機能する。ＲＯＭ１０３は、ＣＰＵ１０１で実行される制御プログラム等を格納している。バス１０４は各種データの転送経路であり、例えば、撮像部１００によって取得されたデジタル画像データはこのバス１０４を介して所定の処理部に送られる。ユーザの指示を受け取る操作部１０５には、ボタンやモードダイヤルなどが含まれる。撮像画像や文字の表示を行う表示部１０６には、例えば、液晶ディスプレイが用いられる。表示部１０６はタッチスクリーン機能を有していても良く、その場合はタッチスクリーンを用いたユーザ指示を操作部１０５の入力として扱うことも可能である。表示制御部１０７は、表示部１０６に表示される撮像画像や文字の表示制御を行う。撮像部制御部１０８は、フォーカスを合わせる、シャッターを開く・閉じる、開口絞りを調節するなどの、ＣＰＵ１０１からの指示に基づいた撮像系の制御を行う。デジタル信号処理部１０９は、バス１０４を介して受け取ったデジタルデータに対し、ホワイトバランス処理、ガンマ処理、ノイズ低減処理などの各種処理を行う。エンコーダ部１１０は、デジタルデータをＪＰＥＧやＭＰＥＧなどのファイルフォーマットに変換する処理を行う。外部メモリ制御部１１１は、ＰＣやその他のメディア（例えば、ハードディスク、メモリーカード、ＣＦカード、ＳＤカード、ＵＳＢメモリ）に繋ぐためのインターフェースである。画像処理部１１２は、撮像部１００で取得されたカラー画像データ或いは、デジタル信号処理部１０９から出力されるカラー画像データから、撮像部１００に具備されるマイクロレンズアレイのキャリブレーション、並びにリフォーカス処理を行う。画像処理部１１２の詳細については後述する。
【００１４】
なお、撮像装置の構成要素は上記以外にも存在するが、本実施例の主眼ではないので、説明を省略する。
【００１５】
図２は、撮像部１００の内部構成を示す図である。
【００１６】
撮像部１００は、撮像レンズ２０１〜２０３、開口絞り（以下、単に「絞り」と呼ぶ。）２０４、シャッター２０５、マイクロレンズアレイ２０６、光学ローパスフィルタ２０７、ｉＲカットフィルタ２０８、カラーフィルタ２０９、光電変換する撮像素子（以下、センサ）２１０及びＡ／Ｄ変換部２１１で構成される。撮像レンズ２０１〜２０３は夫々、ズームレンズ２０１、フォーカスレンズ２０２、ぶれ補正レンズ２０３である。絞りを調整することにより、撮像部１００に入射される入射光量を調整することができる。なお、各レンズのサイズがマイクロメートル単位、あるいはミリメートル単位であっても、便宜上、各レンズのサイズに関わらず「マイクロレンズアレイ」と呼ぶことにする。
【００１７】
＜リフォーカスの原理＞
図３は、通常の撮像光学系の構成を示す図であり、ピントがずれてしまった状態を表している。なお、図３では、説明を簡単にするため、シャッター、光学ローパスフィルタ、ｉＲカットフィルタ、カラーフィルタ、ズームレンズなどの構成については省略してある。また、レンズ構成についても、メインレンズ３０２でレンズ群を代表して表している。
【００１８】
物点３０１からの光はメインレンズ３０２で集光され、センサ３０４の一部領域３０５に到達している。メインレンズ３０２で集光された光が一点に結像する前にセンサ３０４に到達しているので、センサ３０４の一部領域３０５では物点３０１からの光が広がって記録され、先鋭性の低いぼけた画像になっている。鮮鋭性の高い画像を得たい場合には、ピント位置を調整し、物点３０１の像がセンサ３０４上の１点に結像されるようにして再度撮像を行う必要がある。
【００１９】
図４は、図２で示した撮像部１００の構成を図３で示した通常の撮像光学系に対応させて示した図である。図４では、図２のマイクロレンズアレイ２０６に対応するマイクロレンズアレイ４０５が追加され、センサ４０４の位置がメインレンズ４０２により近い位置に変更されている。図４において、物点４０１から放たれた光はメインレンズ４０２により集光された後、結像する前にマイクロレンズアレイ４０５を通過して、センサ４０４により記録される。この時、物点４０１から放たれた光は、センサ４０４上の複数の画素位置において、光線の強度に応じた値として記録される。つまり、１つのマイクロレンズにより生成されるセンサ上（撮像素子上）の光学像は、物点４０１を異なる方向から観察した画像となるため、センサ４０４では多視点の画像が一枚の画像として記録されることになる。
【００２０】
リフォーカス処理では、この光線群を延長し、仮想センサ位置における光強度の計算を通して、仮想センサに記録される画像（リフォーカス画像）を演算により求めることができる。いま、仮想センサＡ（４０９）の位置で記録される画像を計算すると、物点４０１のからの光は広がり、ぼけた画像が得られる。一方、仮想センサＢ（４１０）の位置で記録される画像を計算すると、物点４０１からの光は一点に集まり、ピントが合った画像が得られる。このように、仮想センサの位置を調整し、該仮想センサ位置で記録される画像を計算によって取得する処理が、通常の光学系でピント位置を調整する行為に相当する。なお、図４に示されるように、より多くの異なる方向から物点４０１を観察した画像を得るためには、撮像部に具備される絞り４０３は、できるだけ開口を開いた状態である方が好ましい。以上が、撮像後にピント位置調整した画像を計算により得るリフォーカス処理の原理である。
【００２１】
図５の（ａ）は、図４において絞り４０３を解放した状態で均一な被写体５０１を撮像した場合の、センサ４０４に記録される被写体像５０２を模式的に示す図である。ここで、絞り４０３の形状は円形であるとする。被写体５０１のような均一な被写体を撮像する場合、ケラレの影響がない状態においては、センサ４０４上での像の形状は、絞り４０３の形状と略同一、すなわち円形となる。図５の（ａ）におけるマイクロレンズアレイ４０５を通して得られるセンサ４０４上での像５０２を見ると、その上下端部の形状は、メインレンズ４０２のケラレにより、中央付近の像の形状と比べて、円形から大きく変化する。
【００２２】
一方、図５の（ｂ）は、図４において絞り４０３を絞った状態で同じ被写体５０１を撮像した場合の、センサ４０４に記録される被写体像５０３を模式的に示す図である。絞り４０３を絞ることにより、メインレンズ４０２のケラレの影響が抑制され、マイクロレンズアレイ４０５を通して得られるセンサ４０４上での像５０３の形状は、どの位置においても略均一な円形となる。
【００２３】
図６の（ａ）〜（ｃ）は、絞り４０３を解放にした状態（例えば、Ｆナンバー２．８）で均一な面光源を撮像した際のセンサ４０４上での撮像画像を示している。同図の（ａ）は撮像画像の全体を表し、（ｂ）はその上左端部の拡大図、（ｃ）はその中央部の拡大図である。上左端部拡大図では、レンズのケラレにより、各マイクロレンズを通した像が楕円状に変形している。これに対し、中央部拡大図では、レンズのケラレの影響が少ないため、各マイクロレンズを通した像が変形することなく、真円に近い形を維持している。このように、絞りを解放した状態で撮像すると、センサ上での像の形状に空間的な不均一が発生する。しかしながら、図４で説明したように、より多くの異なる視点から観察した被写体像を得るためには、絞りを解放した状態で被写体を撮像する方が好ましい。
【００２４】
図７の（ａ）〜（ｃ）は、絞り４０３を絞った状態（例えば、Ｆナンバー１１）で均一な面光源を撮像した際のセンサ４０４上での撮像画像を示している。同図の（ａ）は撮像画像の全体を表し、（ｂ）はその上左端部の拡大図、（ｃ）はその中央部の拡大図である。図６と異なり、どの部分でもレンズのケラレの影響が少ないため、上左端部の拡大図（ｂ）においても各マイクロレンズを通した像は変形することなく円形を維持している。
【００２５】
後述するマイクロレンズアレイのキャリブレーションは、絞りを絞った状態で撮像すると、各マイクロレンズアレイを通して得られるセンサ上での像の形状がこのように略同一となる特性を利用して実行される。
【００２６】
＜画像処理部１１２の説明＞
図８は、画像処理部１１２の内部構成を示したブロック図である。
【００２７】
画像処理部１１２は主に、キャリブレーション部８０３と、メモリ部８０８と、画像合成部８０９から構成される。キャリブレーション部８０３は、撮像部１００のマイクロレンズアレイ２０６における各マイクロレンズの光学中心位置を算出する。メモリ部８０８は、キャリブレーション部８０３の結果を格納する。画像合成部８０９は、キャリブレーション結果に基づいて画像を合成する。
【００２８】
撮像モード判定部８０１は、ユーザからの指示が、マイクロレンズアレイのキャリブレーションであるか否か、本撮像であるか否か、を判定する。
【００２９】
８０２は画像取得部（撮像画像データ取得部）であり、撮像部１００からバス１０４を経由して供給されるカラー画像データを取得する。
【００３０】
キャリブレーションパラメータ取得部８０４は、キャリブレーションに必要となる各種パラメータを取得する。具体的には、マイクロレンズアレイ２０６に配置されるマイクロレンズの縦横方向の個数、設計値から得られるセンサ上での各マイクロレンズの光学中心の位置とマイクロレンズを介した時のセンサ上での像の重心位置を取得する。
【００３１】
８０５は二値画像変換部であり、カラー画像データを二値画像データに変換する。
【００３２】
重心位置算出部８０６は、キャリブレーションパラメータ取得部８０４から供給されるパラメータと二値画像変換部８０５から供給される二値画像データを入力し、各マイクロレンズを通したセンサ上でのそれぞれの像の重心位置を算出する。
【００３３】
ずれ算出部８０７は、マイクロレンズアレイ２０６における各マイクロレンズの位置の設計値からのずれ或いは当該ずれを反映した各マイクロレンズの実際の光学中心位置等、画像合成処理で正確なリフォーカス処理を行うための情報を算出する。
【００３４】
合成パラメータ取得部８１０は、画像合成部８０９で必要となる撮像部１００の光学データ等を取得する。
【００３５】
画像合成部８０９では、任意のフォーカス位置における合成画像データを生成する。
【００３６】
なお、本実施例に係る画像処理部１１２の全部又は一部は、独立した画像処理装置として成立し得るものであり、適宜、撮像装置本体やＰＣ等に組み込まれることにより実施可能なものである。
【００３７】
図９は、本実施例に係る撮像装置における、キャリブレーションの実行〜合成画像データの出力までの一連の処理の流れを示すフローチャートである。なお、この一連の処理は、以下に示す手順を記述したコンピュータ実行可能なプログラムをＲＯＭ１０３からＲＡＭ１０２上に読み込んだ後、ＣＰＵ１０１によって該プログラムを実行することによって実施される。
【００３８】
ステップ９０１において、撮像モード判定部８０１は、操作部１０５から供給される撮像モードに関するユーザ指示が、キャリブレーションの指示か否かを判定する。キャリブレーションの指示であればステップ９０２に進む。一方、キャリブレーションの指示でなければステップ９０７に進む。
【００３９】
ステップ９０２において、撮像部制御部１０８は、メインレンズ４０２の絞りを絞る。具体的には、本撮像時における絞り値（Ｆナンバー）よりも相対的に大きい値（例えば、Ｆ１１）となるようにメインレンズ４０２の絞りを調整する。
【００４０】
ステップ９０３において、撮像部１００は、マイクロレンズアレイ４０５のキャリブレーションに使用する被写体像を撮像する。キャリブレーションに使用する被写体像としては、キャリブレーションの精度を高めるため、比較的均一な輝度分布を持つ明るい被写体が好ましい。
【００４１】
ステップ９０４において、デジタル信号処理部１０９は、キャリブレーション用に撮像された画像データ（キャリブレーション画像データ）を出力する。
【００４２】
ステップ９０５において、キャリブレーション部８０３は、マイクロレンズアレイ４０５のキャリブレーションを実行する。キャリブレーション処理の詳細については後述する。
【００４３】
ステップ９０６において、メモリ部８０８は、キャリブレーション部８０３から供給されるキャリブレーションの結果を保持する。
【００４４】
ステップ９０７において、撮像モード判定部８０１は、操作部１０５から供給される撮像モードに関するユーザ指示が、本撮像の指示か否かを判定する。本撮像の指示であればステップ９０８に進む。一方、本撮像の指示でなければステップ９０１に戻る。
【００４５】
ステップ９０８において、撮像部制御部１０８は、メインレンズ４０２の絞りを任意の値に設定する。具体的には、キャリブレーション時の絞り値（Ｆナンバー）よりも相対的に小さい値（例えば、Ｆ２．８）となるようにメインレンズ４０２の絞りが調整される。
【００４６】
ステップ９０９において、撮像部１００は、本撮像の被写体像を撮像する。
【００４７】
ステップ９１０において、デジタル信号処理部１０９は、本撮像用に撮像された画像データを出力する。
【００４８】
ステップ９１１において、画像合成部８０９は、任意のフォーカス位置における画像合成処理を実施する。画像合成処理の詳細については後述する。
【００４９】
＜キャリブレーション処理＞
次に、ステップ９０５におけるキャリブレーション処理の詳細について説明する。
【００５０】
図１０は、キャリブレーション部８０３における処理の流れを示すフローチャートである。
【００５１】
ステップ１００１において、キャリブレーション部８０３は、画像取得部８０２からキャリブレーション画像データを受け取る。ここで受け取るキャリブレーション画像データは、絞りを絞った状態で撮像されたカラーの画像データである（図７を参照。）。
【００５２】
ステップ１００２において、二値画像変換部８０５は、カラー画像データを二値画像データＩ（ｘ，ｙ）に変換する。ここで、（ｘ，ｙ）はセンサ上における画素位置を示す座標である。二値画像変換部８０５は、カラー画像データにおける画素値と予め規定される閾値とを比較し、白色で表される画素位置の画素値を１、黒色で表される画素位置の画素値を０となるように、二値画像データＩ（ｘ，ｙ）に変換する。例えば、カラー画像からモノクロ画像に変換した後、モノクロ画像の画素値の中央値を閾値に設定して、二値画像に変換する。
【００５３】
ステップ１００３において、キャリブレーションパラメータ取得部８０４は、マイクロレンズアレイのキャリブレーションに必要となる、各種パラメータを取得する。具体的には、センサ画素数、マイクロレンズの縦横方向の個数、設計値から得られる各マイクロレンズに対応するセンサ上での像の重心位置、設計値から得られる各マイクロレンズの光学中心位置などの情報を取得する。なお、マイクロレンズアレイは、横方向にＭ個、縦方向にＮ個（Ｍ、Ｎは自然数）のマイクロレンズが並んだ構成であるものとする。
【００５４】
ステップ１００４において、重心位置算出部８０６は、各マイクロレンズを介したセンサ上における像の重心位置を、ステップ１００２で得た二値画像データから算出する。重心位置算出処理の詳細については後述する。
【００５５】
ステップ１００５において、ずれ算出部８０７は、各マイクロレンズの位置の設計値からのずれ（或いはそれと等価の情報）を算出する。ずれ算出処理の詳細については後述する。
【００５６】
＜重心位置算出処理＞
次に、ステップ１００４における重心位置算出処理の詳細について説明する。
【００５７】
図１１は、重心位置算出部８０６における処理の流れを示すフローチャートである。
【００５８】
ステップ１１０１において、重心位置算出部８０６は、処理対象となる着目マイクロレンズ（ｍ，ｎ）を設定する。ここで、（ｍ，ｎ）はマイクロレンズの位置を示す座標を表しており、ｍは横方向の座標位置、ｎは縦方向の座標位置を表している。なお、（ｍ，ｎ）は、ｍ＝０，１，・・・，Ｍ−１、ｎ＝０，１，・・・，Ｎ−１の値を持つ整数値であり、Ｍは横方向のマイクロレンズの個数、Ｎは縦方向のマイクロレンズの個数である。処理開始時には、初期値として（ｍ，ｎ）＝（０，０）に設定される。
【００５９】
ステップ１１０２において、重心位置算出部８０６は、重心位置を算出する際の参照範囲を設定する。具体的には、以下の式（１）〜式（４）を満たすような参照範囲が設定される。
Ｌｘ（ｍ）≦ｘ＜Ｌｘ（ｍ＋１）          ・・・式（１）
Ｌｙ（ｎ）≦ｙ＜Ｌｙ（ｎ＋１）          ・・・式（２）
Ｌｘ（ｍ）＝（Ｓｘ／Ｍ）×ｍ＋ａ        ・・・式（３）
Ｌｙ（ｎ）＝（Ｓｙ／Ｎ）×ｎ＋ｂ        ・・・式（４）
【００６０】
ここで、（ｘ，ｙ）はセンサ上における画素位置、Ｓｘはセンサの横画素数、Ｓｙはセンサの縦画素数、ａ，ｂはオフセット値である。図１２は、本ステップで設定される参照範囲を説明する図である。同図において、左上端部が着目マイクロレンズ（ｍ，ｎ）を示しており、オフセット値ａ、ｂの値を好適に設定することで、着目マイクロレンズのセンサ上での像が含まれるように参照範囲が設定される。
【００６１】
図１１のフローチャートの説明に戻る。
【００６２】
ステップ１１０２にて重心位置を算出する際の参照範囲が設定されると、ステップ１１０３において、重心位置算出部８０６は、着目マイクロレンズ（ｍ，ｎ）に対応するセンサ上での像の重心位置（Ｃｘ（ｍ，ｎ），Ｃｙ（ｍ，ｎ））を求める。具体的には、以下の式（５）〜式（７）を使用して重心位置を算出する。
【００６３】
【数１】
0005882789.tif 000002
【００６４】
【数２】
0005882789.tif 000003
【００６５】
【数３】
0005882789.tif 000004
【００６６】
ここで、Ｉ（ｘ，ｙ）は、二値画像変換部８０５で変換された二値画像データであり、マイクロレンズに対応するセンサ上での像に相当する画素には１の値が入力され、その他の画素位置には０の値が入力されている。Ｓは参照範囲に含まれる画像データＩ（ｘ，ｙ）のうち、画素値が１となる画素の個数を表している。
【００６７】
ステップ１１０４において、重心位置算出部８０６は、全てのマイクロレンズについてセンサ上での像の重心位置の算出処理が完了したか否かを判定する。未処理のマイクロレンズがある場合にはステップ１１０１に戻って次の着目マイクロレンズ（ｍ，ｎ）を設定し、ステップ１１０２からステップ１１０４までの処理を繰り返す。一方、全てのマイクロレンズについてセンサ上での像の重心位置の算出処理が完了したと判定した場合には、ステップ１１０５に進む。
【００６８】
ステップ１１０５において、重心位置算出部８０６は、撮像画像データ（二値画像データ）から得た各マイクロレンズに対応するセンサ上での像の重心位置（Ｃｘ（ｍ，ｎ），Ｃｙ（ｍ，ｎ））を出力する。
【００６９】
＜ずれ算出処理＞
次に、ステップ１００５におけるずれ算出処理の詳細について説明する。なお、ここでは、各マイクロレンズの位置の設計値からのずれ量を算出し、さらに当該ずれ量を反映した各マイクロレンズの実際の光学中心位置を算出して出力する場合の処理について説明するものとする。
【００７０】
図１３は、ずれ算出部８０７における処理の流れを示すフローチャートである。
【００７１】
ステップ１３０１において、ずれ算出部８０７は、撮像画像データ及び設計値にそれぞれ基づくセンサ上での像の重心位置、設計値に基づく各マイクロレンズの光学中心位置を取得する。撮像画像データに基づくセンサ上での像の重心位置（Ｃｘ（ｍ，ｎ），Ｃｙ（ｍ，ｎ））は、重心位置算出部８０６から取得する。設計値に基づくセンサ上での像の重心位置（Ｃｘ＿ｓ（ｍ，ｎ），Ｃｙ＿ｓ（ｍ，ｎ））及び設計値に基づく各マイクロレンズの光学中心位置（Ｏｘ＿ｓ（ｍ，ｎ），Ｏｙ＿ｓ（ｍ，ｎ））は、キャリブレーションパラメータ取得部８０４から取得する。
【００７２】
ステップ１３０２において、ずれ算出部８０７は、処理対象となる着目マイクロレンズ（ｍ，ｎ）を設定する。処理開始時には、初期値として（ｍ，ｎ）＝（０，０）に設定される。
【００７３】
ステップ１３０３において、ずれ算出部８０７は、撮像画像データから算出したセンサ上での像の重心位置（Ｃｘ（ｍ，ｎ），Ｃｙ（ｍ，ｎ））と、設計値から得られるセンサ上での像の重心位置（Ｃｘ＿ｓ（ｍ，ｎ），Ｃｙ＿ｓ（ｍ，ｎ））とのずれを求める。具体的には、以下の式（８）と式（９）とから、両重心位置間のずれ量（Ｓｘ（ｍ，ｎ），Ｓｙ（ｍ，ｎ））を算出する。
Ｓｘ（ｍ，ｎ）＝Ｃｘ（ｍ，ｎ）−Ｃｘ＿ｓ（ｍ，ｎ）      ・・・式（８）
Ｓｙ（ｍ，ｎ）＝Ｃｙ（ｍ，ｎ）−Ｃｙ＿ｓ（ｍ，ｎ）      ・・・式（９）
【００７４】
ステップ１３０４において、ずれ算出部８０７は、算出されたずれ量（Ｓｘ（ｍ，ｎ），Ｓｙ（ｍ，ｎ））と、設計値に基づく光学中心位置（Ｏｘ＿ｓ（ｍ，ｎ），Ｏｙ＿ｓ（ｍ，ｎ））とから、着目マイクロレンズの実際の光学中心位置を求める。具体的には、以下の式（１０）と式（１１）とから、マイクロレンズの実際の光学中心位置（Ｏｘ（ｍ，ｎ），Ｏｙ（ｍ，ｎ））を算出する。
Ｏｘ（ｍ，ｎ）＝Ｏｘ＿ｓ（ｍ，ｎ）＋Ｓｘ（ｍ，ｎ）    ・・・式（１０）
Ｏｙ（ｍ，ｎ）＝Ｏｙ＿ｓ（ｍ，ｎ）＋Ｓｙ（ｍ，ｎ）    ・・・式（１１）
【００７５】
なお、本実施例では、各マイクロレンズに対応するセンサ上での像の重心位置のずれ量を求め、求められたずれ量を基に各マイクロレンズの実際の光学中心位置を算出しているが、その理由は以下のとおりである。
【００７６】
図１４は、各マイクロレンズに対応するセンサ上での像の重心位置と各マイクロレンズの実際の光学中心位置との関係を示す図である。同図から明らかなように、本実施例においてマイクロレンズアレイ４０５を通して得られるセンサ４０４上での像１４０４〜１４０６は、ほぼ真円の形に形成される。この場合において、マイクロレンズアレイ４０５の中央付近に配置されるマイクロレンズ１４０２への入射光は正面方向から平行に入射される。そのため、センサ４０４上における像１４０５の重心位置１４０８は、マイクロレンズの光学中心位置１４１１と一致する。しかしながら、マイクロレンズアレイ４０５の端部に配置されるマイクロレンズ１４０１や１４０３への入射光は斜め方向から入射される。そのため、センサ４０４上での像１４０４の重心位置１４０７（像１４０６の重心位置１４０９）は、マイクロレンズの光学中心位置１４１０（光学中心位置１４１２）と一致しない。このように、センサ４０４上で形成される像の重心位置からマイクロレンズの実際の光学中心位置を求めることは、特にマイクロレンズアレイ４０５の端部で難しいことが分かる。そこで、本実施例では、撮像画像データから算出される各マイクロレンズに対応するセンサ上での像の重心位置と設計値から得られるセンサ上での像の重心位置とのずれ量を求めることで、各マイクロレンズの実際の光学中心位置を得ている。
【００７７】
図１３のフローチャートの説明に戻る。
【００７８】
ステップ１３０５において、ずれ算出部８０７は、全てのマイクロレンズについてマイクロレンズの実際の光学中心位置の算出が完了したか否かを判定する。未処理のマイクロレンズがある場合にはステップ１３０２に戻って次の着目マイクロレンズ（ｍ，ｎ）を設定し、ステップ１３０２〜ステップ１３０４の処理を繰り返す。一方、全てのマイクロレンズについてマイクロレンズの実際の光学中心位置の算出が完了したと判定した場合には、ステップ１３０６に進む。
【００７９】
ステップ１３０６において、ずれ算出部８０７は、算出された各マイクロレンズの実際の光学中心位置を出力する。なお、ここではセンサ上の像の重心位置のずれ量から求めた各マイクロレンズの実際の光学中心位置のみを出力するものとしたが、これに限るものではない。要は、後述の画像合成処理において、各マイクロレンズの位置の設計値からのずれが反映できればよいのであり、そのために必要な情報が出力される。図１５は、本ステップで出力され得る情報の一例を示すテーブルである。ここでは、撮像画像データに基づくセンサ上での像の重心位置、設計値に基づくセンサ上での像の重心位置、設計値に基づくマイクロレンズの光学中心位置、センサ上での像の重心位置のずれ量、マイクロレンズの実際の光学中心位置の各情報が示されている。例えば、本実施例では、設計値に基づくマイクロレンズの光学中心位置の情報を、予めＲＡＭ１０２等に記憶したものを画像合成処理中（後述のステップ１７０１）で読み出して取得している。これを、実際の光学中心位置の情報と共に設計値に基づくマイクロレンズの光学中心位置の情報も本ステップで出力するようにして、画像合成処理中での設計値に基づくマイクロレンズの光学中心位置の取得を省いてもよい。このように、ずれ算出処理における出力の内容は、後続の処理内容を考慮した上で決定される。
【００８０】
＜画像合成処理＞
次に、ステップ９１１における画像合成処理の詳細について説明する。
図１６は、画像合成部８０９の内部構成を示す図である。
【００８１】
画像合成部８０９は、画素位置算出部１６０１、色導出部１６０２および画素値算出部１６０３とからなり、さらに画素値算出部１６０３は、バッファ１６０４と画素値合成部１６０５とで構成される。画像合成部８０９では、これら各部によって、画像取得部８０２から送られてくるデジタル値の入力画像データ（多視点画像データ）から合成画像における画素値の算出を行い、算出が完了した画素値から順に出力する処理を行う。以下、詳しく説明する。
【００８２】
図１７は、画像合成処理の流れを示すフローチャートである。なお、説明を簡単にするため、画像取得部８０２から供給されるデジタル値の入力画像データが１次元であるものとして説明する。
【００８３】
ステップ１７０１において、画像合成部８０９は、入力画像データにおける所定の画素の画素値と画素位置、さらに画像合成に必要となる光学パラメータおよび合成パラメータを取得する。ここで、光学パラメータとは、撮像時における物理的に定まった各種のパラメータであって、例えば、設計値から得られるマイクロレンズの光学中心位置や、σrealなどの値を指す。これらの情報は、予めＲＡＭ１０２等に保持されているものを読み出すことで取得される。また、合成パラメータとは、画像処理に関わる適宜設定変更が可能な各種のパラメータであって、例えば、任意のフォーカス位置に相当するσvirtualなどの値を指す。これらの情報は、例えば操作部１０５を介した任意のフォーカス位置を指定するユーザからの入力操作に基づいて取得される。
【００８４】
ステップ１７０２おいて、画素位置算出部１６０１は、入力画像データにおける所定の画素の合成画像における画素位置を算出する。図１８は、その算出方法を説明する図である。ここで、センサ１８０１上のセンサ画素領域１８０３に対応する画素が画像合成部８０９に入力されたと仮定する。この場合、画素位置算出部１６０１は、センサ画素領域１８０３に対応する、仮想センサ１８０２上の投影領域１８０６を計算することになる。なお、図１８において、Ｏｘ（ｍ，ｎ）はマイクロレンズ１８０４の光学中心の位置を示しており、（ｍ，ｎ）はマイクロレンズの座標位置を示す。ｘは入力画素の位置（この図では、センサ画素領域１８０３の中心）を表す。Ｘ１及びＸ２は計算によって求められる仮想センサ１８０２上の位置であって、算出されたＸ１とＸ２との間の領域が投影領域１８０６となる。本実施例に係る発明では、Ｏｘ（ｍ，ｎ）として、設計値ではなく、上述のずれ算出処理で算出された実際の光学中心位置が用いられることになる。すなわち、図１８に示す通り、センサ画素領域１８０３を、算出されたマイクロレンズ１８０４の実際の光学中心位置を基準として仮想センサ１８０２に投影した投影領域１８０６が、入力画像データの画素の合成画像における位置となる。そして、σrealはセンサ１８０１と各マイクロレンズとの距離であり、σvirtualは各マイクロレンズと仮想センサ１８０２との距離である。図１８から明らかなように、投影領域１８０６はセンサ画素領域１８０３に対して拡大されており、その拡大率はσvirtual/σreal倍である。なお、σvirtualは、ユーザによって指定された任意のフォーカス位置に応じて予め設定される。例えば、予め光学シミュレーションによって、任意のフォーカス位置と、当該フォーカス位置の被写体が鮮明に結像するような仮想センサの位置との対応関係を求めてＲＯＭ１０３等に保持しておき、これを画像合成部８０９が適宜参照することにより設定される。投影領域１８０６を画定するＸ１及びＸ２の位置の算出は、以下の式（１２）及び式（１３）に従ってなされる。
Ｘ１＝Ｏｘ（ｍ，ｎ）＋（σvirtual／σreal）（ｘ＋ｓ／２−Ｏｘ（ｍ，ｎ））
・・・式（１２）
Ｘ２＝Ｏｘ（ｍ，ｎ）＋（σvirtual／σreal）（ｘ−ｓ／２−Ｏｘ（ｍ，ｎ））
・・・式（１３）
上記式（１２）及び式（１３）において、sはセンサ画素領域１８０３のサイズである。算出されたＸ１及びＸ２の情報は画素値算出部１６０３に送られる。
【００８５】
このようにして、マイクロレンズの実際の光学中心の位置を考慮して、入力画像データの各画素の画素位置と、任意のフォーカス位置に応じた合成画像の画素位置とが対応付けられる。図１７のフローチャートの説明に戻る。
【００８６】
ステップ１７０３において、色導出部１６０２は、入力画像データの各画素の色を導出する。色の種別としてはカラーフィルタアレイのフィルタ分光感度に応じてＲＧＢや、赤外＋ＲＧＢ、ＣＭＹなどがある。ここでは、ＲＧＢの三色の場合を考える。色導出部１６０２は、入力画素位置と色の対応を示すテーブルを参照して、入力画素の色を導出する。入力画素位置と色の対応を示すテーブルは、例えば、解像度が６００万画素の場合、縦２０００ｐｘｌ×横３０００ｐｘｌのテーブルであり、ＲＯＭ１０３等に保持しておけばよい。さらに、撮像部１００が、ベイヤー配列のカラーフィルタアレイを具備するなど、入力画素位置と色の関係が数式的に明らかな場合は、入力画素位置から所定の演算により色を求めても良い。導出された色の情報は画素値算出部１６０３に出力される。
【００８７】
ステップ１７０４において、画素値算出部１６０３は、バッファ１６０４内のデータ（中間データ）を更新する。具体的には、算出された合成画像における画素位置と導出された色に対応する、入力画像データにおける画素値をバッファ１６０４に格納する。図１９は、バッファ１６０４に格納された中間データの一例を示している。図１９において、インデックス１９０１〜１９０３には、それぞれ１又は複数の画素値が保持されている。本ステップでは、画素位置算出部１６０１から受け取った合成画像における画素位置と色導出部１６０２から受け取った色の情報に従って入力画素値が追加・格納され、中間データが更新される。なお、図１９の例では、合成画像における画素位置が整数で表記されているが、上記式（１２）、（１３）で算出されるＸ１、Ｘ２は一般に非整数となる。そこで、合成画像における画素位置を特定するための数値として非整数を許容し、小数部分を重みとして合成画像の画素値の計算に用いてもよい。例えば、合成画像における画素位置を示す座標（１０，１０．４）に対して画素値２０、同じく座標（１０，１０．１）に対して画素値１０が割り当てられている場合を考える。この場合、合成画像における画素位置を示す座標(１０，１０)には、(０．１＊２０＋０．４＊１０)／(０．１＋０．４)といった重み付けの計算により画素値１２を割り当てる、といった具合である。
【００８８】
ステップ１７０５において、画素値算出部１６０３は、所定のインデックスについて中間データの更新が完了したかどうか、すなわち、いずれかのインデックスに画素値がすべて揃ったかどうかを判定する。例えば、図１９のインデックス１９０１（座標（１０，１０）の画素位置で、かつ、色がＲの部分）において２つの画素値（２４及び２６）が格納されると、中間データの更新が完了と判定される。この判定は、例えば、格納されるはずの画素値の数をインデックス毎に予め計算しておき、格納された画素値の数がその数に達したかどうかにより行うことができる。
【００８９】
ここで、インデックス毎の格納されるはずの画素値の数は、以下のようにして予め求めておく。まず、全ての画素値が１となるようなダミーの撮像画像を用意し、これを入力画像データとしてステップ１７０２〜ステップ１７０４の処理を行う。そして、全ての画素について処理を行った後、格納された画素値の数をインデックス毎にカウントすれば良い。このような判定処理により、いずれかのインデックスについて追加されるはずの画素値がすべて揃ったと判定された場合にはステップ１７０７に進む。一方、いずれのインデックスについても画素値が揃っていないと判定された場合にはステップ１７０２に戻り、次の画素についてステップ１７０１〜ステップ１７０４の処理を繰り返す。
【００９０】
ステップ１７０６において、画素値合成部１６０５は、更新が完了したインデックスの中間データ（多視点画像の画素値）をバッファ１６０４から取得し、これらの平均値を算出して合成画像の画素値として出力する。例えば、図１９のインデックス１９０１の更新が完了した場合であれば、まず、合成に用いられる画素値の数として“２”、合成に用いられる多視点画像の画素値として“２４”と“２６”が取得される。そして、合成に用いられる多視点画像の画素値の総和“２４＋２６”を合成に用いられる画素値の数“２”で除算して得られた平均値“２５”が算出される。そして、算出された平均値“２５”が、座標（１０，１０）、色：Ｒに対応する合成画像の画素値として出力される。
【００９１】
ステップ１７０７において、画像合成部８０９は、入力画像データのすべての画素に対して、上述の処理が完了したかどうかを判定する。未処理の入力画素がなければ本処理を終える。一方、未処理の入力画素があればステップ１７０２に戻り、ステップ１７０２〜ステップ１７０７を繰り返す。
【００９２】
以上の処理により、各マイクロレンズの実際の光学中心位置を考慮し、任意のフォーカス位置における合成画像の画素値が順次計算される。
【００９３】
なお、本実施例では、マイクロレンズアレイを、メインレンズの結像位置に配置していたが（前述の図５を参照）、マイクロレンズアレイの配置位置はメインレンズの結像位置に限定されない。例えば、図２０に示されるように、メインレンズの結像位置に形成される空中像を観察するように、結像位置から離れたセンサに近い位置にマイクロレンズアレイを配置しても構わない。また、図２０の例とは逆に、メインレンズの結像位置よりもメインレンズに近い側に配置しても良い。本実施例に係る発明では、絞りとセンサとの間にマイクロレンズアレイが配置される構成である限りにおいて、いかなる構成でも良い。
【００９４】
以上説明したように、本実施例に係る発明によれば、マイクロレンズアレイにおける各マイクロレンズの位置の設計値からのずれを考慮したリフォーカス処理となるため、より鮮鋭なリフォーカス画像を提供することができる。
【００９５】
［実施例２］
実施例１では、マイクロレンズアレイのキャリブレーション時に選択されるメインレンズの絞り値（Ｆナンバー）は、本撮像時のメインレンズの絞り値よりも相対的に大きい値（絞りを絞った状態）に設定する様態であった。次に、キャリブレーション時に撮像される画像データを解析し、好適なメインレンズの絞り値を選択した上で、マイクロレンズアレイのキャリブレーションを行う態様について、実施例２として説明する。なお、実施例１と共通する部分については説明を簡略化ないしは省略し、ここでは差異点を中心に説明することとする。
【００９６】
＜画像処理部の構成図＞
図２１は、本実施例における画像処理部１１２の内部構成を示したブロック図である。図８で説明した実施例１の画像処理部１１２に対して、画像解析部２１０１が追加されている。画像解析部２１０１は、画像取得部８０２から供給されるキャリブレーション用に撮像された画像データを解析し、メインレンズの絞り値が好適な設定か否かを判定する。その他の処理部については、基本的に図８と同様であるため説明を省略する。
【００９７】
図２２は、本実施例に係る撮像装置での、キャリブレーションの実行〜任意のフォーカス位置における合成画像データの出力までの一連の処理の流れを示すフローチャートである。なお、この一連の処理は、実施例1の図９のフローチャート同様、以下に示す手順を記述したコンピュータ実行可能なプログラムをＲＯＭ１０３からＲＡＭ１０２上に読み込んだ後、ＣＰＵ１０１によって該プログラムを実行することによって実施される。
【００９８】
ステップ２２０１において、撮像部制御部１０８は、メインレンズの絞りを開放した状態に設定する。例えば、メインレンズ解放時のＦナンバーがＦ２.８の場合には、Ｆ２.８となるように絞りを設定する。
【００９９】
ステップ２２０２において、撮像モード判定部８０１は、操作部１０５から供給される撮像モードの指示が、キャリブレーション指示か否かを判定する。撮像モードの指示がキャリブレーション指示であればステップ２２０３に進む。一方、ステップ２２０２において、撮像モードの指示がキャリブレーション指示でなければステップ２２０９に進む。ステップ２２０３〜２２０４は、実施例１に係る図９のフローチャートのステップ９０３〜９０４と同様であり、キャリブレーション用の被写体像を撮像したキャリブレーション画像データが取得される。
【０１００】
ステップ２２０５において、画像解析部２１０１は、画像取得部８０２から入力されるキャリブレーション画像データを解析する。解析処理の詳細については後述する。
【０１０１】
ステップ２２０６において、画像解析部２１０１は、入力された画像データの画像がキャリブレーション可能な画像か否かを判定する。キャリブレーション可能な画像であると判定した場合には、ステップ２２０８に進む。一方、入力された画像データの画像がキャリブレーション可能な画像ではないと判定した場合には、ステップ２２０７に進む。
【０１０２】
ステップ２２０７において、メインレンズの絞りの設定を変更する。具体的には、メインレンズの絞りを例えば一段絞る。仮に、ステップ２２０１でメインレンズのＦナンバーをＦ２.８に設定していた場合には、Ｆナンバーを一段大きな値（例えばＦ４）に変更する。メインレンズの絞りの設定変更を終えると、ステップ２２０３に戻り、変更された絞り値の下で、キャリブレーション用の被写体像が撮像される。以上の処理が、キャリブレーション可能な画像データが得られるまで繰り返される。
【０１０３】
ステップ２２０８において、キャリブレーション部８０３は、マイクロレンズアレイのキャリブレーション処理を実行する。
【０１０４】
ステップ２２０８〜ステップ２２１４までの処理は、実施例１に係る図９のフローチャートのステップ９０５〜９１１と同様であるため説明を省略する。ただし、ステップ２２１０で撮像モードの指示が本撮像の指示でないと判定された場合の行き先は、実施例１と異なる。つまり、撮像モードの指示がキャリブレーション指示か否かの判定処理（ステップ２２０２）に戻るのではなく、メインレンズの絞りを開放した状態に設定する処理（ステップ２２０１）に戻ることになる。
【０１０５】
なお、ステップ２２０１では、メインレンズのＦナンバーを解放時の値であるＦ２.８に設定したが、ユーザが任意のＦナンバーに設定してよい。また、ステップ２２０７では、メインレンズの絞りを一段絞ったがその他の段数分（例えば、二段や三段）変更してもよいし、或いは所望の絞り値を操作部１０５を介したユーザ入力に基づいて設定するようにしてもよい。
【０１０６】
＜画像解析部２１０１の説明＞
図２３は、画像処理部２１０１の内部構成を示したブロック図である。
【０１０７】
パラメータ取得部２３０１は、画像解析に必要となるセンサ画素数、マイクロレンズの縦横方向の個数などの情報を取得する。
【０１０８】
二値画像変換部２３０２、重心位置算出部２３０３は、図８のキャリブレーション部８０３に含まれる二値画像変換部８０５、重心位置算出部８０６と同様である。なお、画像解析部２１０１内に二値画像変換部８０５と重心位置算出部８０６を持つため、本実施例におけるキャリブレーション部８０３内には、二値画像変換部８０５と重心位置算出部８０６は不要となる。
【０１０９】
解析部２３０４は、二値画像変換部２３０２から供給される二値画像データと、重心位置算出部２３０３から供給される各マイクロレンズを介してセンサ上に記録される像の重心位置とを用いて、キャリブレーションの適否を解析する。
【０１１０】
判定部２３０５は、解析部２３０４の解析結果に基づいて、マイクロレンズアレイのキャリブレーション処理を実行するのか、メインレンズの絞りを変更してキャリブレーション用の画像を再撮像するのかを判定する。
【０１１１】
図２４は、画像解析部２１０１における画像解析処理の流れを示すフローチャートである。
【０１１２】
ステップ２４０１において、画像解析部２１０１は、画像取得部８０２から供給されるキャリブレーション画像データを受け取る。ここで受け取るキャリブレーション画像データはカラーの画像データである。
【０１１３】
ステップ２４０２において、二値画像変換部２３０２は、カラー画像データを二値画像データＩ（ｘ，ｙ）に変換する。（ｘ，ｙ）はセンサ上における画素位置である。
【０１１４】
ステップ２４０３において、パラメータ取得部２３０１は、画像解析に必要となるセンサ画素数、マイクロレンズの縦横方向の個数の情報を取得する。
【０１１５】
ステップ２４０４において、重心位置算出部２３０３は、二値画像変換部２３０２から供給される二値画像データから、各マイクロレンズを介してセンサ上に記録される像の重心位置を算出する。重心位置の算出方法は実施例１で説明した内容（図１１のフローチャートを参照）と同様であるため説明を省略する。
【０１１６】
ステップ２４０５において、解析部２３０４は、各マイクロレンズを介したセンサ上における像を解析する。ここでは、各マイクロレンズを介したセンサ上における像の重心位置と当該像の境界部に隣接する画素（境界画素）との距離（以下、「重心境界間距離」と呼ぶ）を求め、その変動量に基づくヒストグラムによって解析する手法について説明する。図２５は、重心境界間距離の概念を説明する図であり、重心位置から角度θｉ方向に向かって、像の境界画素を探索する過程が示されている。ここで、ｄ（ｍ，ｎ，θｉ）は、マイクロレンズ（ｍ，ｎ）に対して、角度θｉについて求めた重心境界間距離である。ｉは着目している角度を表すインデックスである。本実施例では、全周３６０°を１５°刻みで重心境界間距離ｄ（ｍ，ｎ，θｉ）を求める。
【０１１７】
図２６は、像解析処理の流れを示すフローチャートである。
【０１１８】
ステップ２６０１において、解析部２３０４は、二値画像変換部２３０２から供給される二値画像データを受け取る。
【０１１９】
ステップ２６０２において、解析部２３０４は、重心位置算出部２３０３が算出した各マイクロレンズ（ｍ，ｎ）に対応するセンサ上での像の重心位置（Ｃｘ（ｍ，ｎ），Ｃｙ（ｍ，ｎ））を取得する。
【０１２０】
ステップ２６０３において、解析部２３０４は、解析の対象となる着目マイクロレンズを設定する。処理開始時には、初期値として（ｍ，ｎ）＝（０，０）に設定される。
【０１２１】
ステップ２６０４において、解析部２３０４は、重心境界間距離ｄ（ｍ，ｎ，θｉ）を求める際の角度θｉを設定する。上述のとおり角度θｉは、θ0＝０°，θ1＝１５°，・・・，θ23＝３４５°と順次設定されることになる。処理開始時には、初期値として、θ0＝０°に設定される。
【０１２２】
ステップ２６０５において、解析部２３０４は、設定された角度θｉにおける、像の重心位置、及び当該重心位置から境界画素までの距離を算出する。具体的には、重心位置に該当する画素位置から、設定された角度θｉ方向に向かって画像を走査し、像以外の画素（ここでは、画素値が０となる画素）を探索する。その後、像の画素（ここでは、画素値が１となる画素）に隣接する画素（境界画素）を探索する。境界画素が見つかると、像の重心位置と当該見つかった境界画素との距離ｄ＿θｉを算出する。
【０１２３】
ステップ２６０６において、解析部２３０４は、全ての角度θｉにおいて、重心境界間距離ｄ（ｍ，ｎ，θｉ）の算出が完了したか否かを判定する。全ての角度について重心境界間距離の算出が完了した場合には、ステップ２５０７に進む。重心境界間距離の算出が未処理の角度がある場合には、ステップ２５０４に戻り、θ２３＝３４５°に達するまで、ステップ２６０４〜２６０６の処理を繰り返す。
【０１２４】
ステップ２６０７において、解析部２３０４は、マイクロレンズ（ｍ，ｎ）に対して、重心境界間距離ｄ（ｍ，ｎ，θｉ）の変動量を算出する。変動量ｄｉｖ（ｍ，ｎ）は、以下の式（１４）を用いて算出する。
ｄｉｖ（ｍ，ｎ）＝ｓｔｄ（ｄ（ｍ，ｎ，θｉ））        ・・・式（１４）
ここで、ｓｔｄ（）は、θｉについて標準偏差を算出する関数である。
【０１２５】
ステップ２６０８において、解析部２３０４は、全てのマイクロレンズに対して、変動量ｄｉｖ（ｍ，ｎ）を算出したか否かを判定する。未処理のマイクロレンズがある場合には、ステップ２６０３に戻って次の着目マイクロレンズアレイを設定し、全てのマイクロレンズについて処理が完了するまで、ステップ２６０４〜ステップ２６０８の処理を繰り返す。一方、全てのマイクロレンズについて変動量ｄｉｖ（ｍ，ｎ）の算出処理が完了したと判定した場合にはステップ２６０９に進む。
【０１２６】
ステップ２６０９において、解析部２３０４は、変動量ｄｉｖ（ｍ，ｎ）のヒストグラムを作成する。図２７の（ａ）は、絞りを解放の状態にして撮像した画像データから算出した変動量ｄｉｖ（ｍ，ｎ）のヒストグラム、同（ｂ）は、絞りを絞って撮像した画像データ（図７参照）から算出した変動量ｄｉｖ（ｍ，ｎ）のヒストグラムをそれぞれ示している。なお、図２７の（ａ）及び（ｂ）において、横軸は変動量を、縦軸は頻度を表している。図２７の（ａ）に示すヒストグラムでは、撮像画像の端部における像の形状に空間的な不均一が発生していることから（図６参照）、それらの影響を受け、大きな変動量を示すマイクロレンズの頻度が多くなっている。これに対し、図２７の（ｂ）に示すヒストグラムでは、空間的に不均一な形状のマイクロレンズが無いため（図７参照）、大きな変動量を示すマイクロレンズの頻度が出現しない。
【０１２７】
ステップ２６１０において、解析部２３０４は、ヒストグラムを参照し、変動量ｄｉｖ（ｍ，ｎ）が予め設定した閾値を超えるマイクロレンズの個数を算出する。図２７の（ａ）に示すヒストグラムでは、閾値を超えるマイクロレンズが複数個出現する一方で、同（ｂ）に示すヒストグラムでは、閾値を超えるマイクロレンズが出現していないのが分かる。
【０１２８】
ステップ２６１１において、解析部２３０４は、キャリブレーションの可否を出力する。例えば、ステップ２６１０で算出された個数が０の場合にはキャリブレーション可能、算出された個数が１以上の場合にはキャリブレーション不可能といった解析結果を判定部２３０５へ出力する。
【０１２９】
なお、本実施例では変動量ｄｉｖ（ｍ，ｎ）のヒストグラムを生成した後、予め設定した閾値との比較によって、キャリブレーション可否を決定していた。しかし、その他の方法、例えば、変動量ｄｉｖ（ｍ，ｎ）の最大値、平均値など、その他の指標に着目してキャリブレーション可否を決定してもよい。
【０１３０】
また、本実施例では、ステップ２４０５でマイクロレンズ像を解析する際に、重心境界間距離の標準偏差に着目して解析したが、その他の解析方法でも構わない。例えば、各マイクロレンズを介したセンサ上における像に外接する四角形を求め、その外接四角形の縦横比に着目して解析を行っても良い。マイクロレンズアレイにおける各マイクロレンズを介したセンサ上における像の空間的な形状変動が把握できる指標であれば、その他の解析方法を採用することも可能である。
【０１３１】
以上説明したように、本実施例に係る発明によれば、マイクロレンズアレイのキャリブレーション用に取得したキャリブレーション画像データを解析し、キャリブレーションに適しているか否かを判断することにより、より正確なキャリブレーションを行うことが可能となる。
【０１３２】
［実施例３］
実施例２では、マイクロレンズアレイのキャリブレーション用に撮像される画像データを解析し、好適なメインレンズの絞り値（Ｆナンバー）を選択した上でキャリブレーションを実行する態様であった。次に、キャリブレーション用に撮像される画像データを解析し、撮像された画像データがキャリブレーションに適していない場合には、その旨をユーザに警告する態様について、実施例３として説明する。なお、実施例２と共通する部分については説明を簡略化ないしは省略し、ここでは差異点を中心に説明することとする。
【０１３３】
実施例３における画像処理部１１２の内部構成は、実施例２に係る図２１に示した画像処理部１１２の内部構成と基本的に同じである。違いは、解析処理部２１０１における解析結果が、操作部２０５とキャリブレーション部８０３以外に、表示制御部１０７へも送られる点である（不図示）。
【０１３４】
図２８は、本実施例に係る撮像装置における、キャリブレーションの実行〜任意のフォーカス位置における合成画像データの出力までの一連の処理の流れを示すフローチャートである。
【０１３５】
ステップ２８０１〜２８０６は、図２２のフローチャートにおけるステップ２２０１〜２２０６と同様であるため、説明を省略する。
【０１３６】
ステップ２８０６において、画像解析部２１０１は、入力された画像データがキャリブレーションに適していないと判断した場合には、ステップ２８０８に進む。一方、入力された画像データがキャリブレーションに適していると判断した場合には、ステップ２８０７〜ステップ２８１４の各処理を行う。なお、ステップ２８０７〜ステップ２８１４は、図２２のフローチャートにおけるステップ２２０８〜２２１４と同様であるため、説明を省略する。
【０１３７】
ステップ２８０８において、表示制御部１０７は、撮像されたキャリブレーション画像データがキャリブレーションに適していないことを示すメッセージ（不図示）等を表示部１０６に表示し、ユーザに警告する。ユーザへの警告が完了したら、本処理を終了する。警告を受けたユーザは、メインレンズの絞り値の設定を変更するなどして、再度、キャリブレーション指示を行うことになる。
【０１３８】
以上説明したように、本実施例に係る発明によれば、マイクロレンズアレイのキャリブレーション用に取得した画像データを解析し、画像データがキャリブレーションに適していない場合には、ユーザに警告する。これにより、キャリブレーションの失敗、キャリブレーション精度の低下を抑制することが可能となる。
【０１３９】
［その他の実施形態］
また、本発明の目的は、以下の処理を実行することによっても達成される。即ち、上述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）が記憶媒体に格納されたプログラムコードを読み出す処理である。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施の形態の機能を実現することになり、そのプログラムコード及び該プログラムコードを記憶した記憶媒体は本発明を構成することになる。
【図１】
0005882789.tif 000005
【図２】
0005882789.tif 000006
【図３】
0005882789.tif 000007
【図４】
0005882789.tif 000008
【図５】
0005882789.tif 000009
【図６】
0005882789.tif 000010
【図７】
0005882789.tif 000011
【図８】
0005882789.tif 000012
【図９】
0005882789.tif 000013
【図１０】
0005882789.tif 000014
【図１１】
0005882789.tif 000015
【図１２】
0005882789.tif 000016
【図１３】
0005882789.tif 000017
【図１４】
0005882789.tif 000018
【図１５】
0005882789.tif 000019
【図１６】
0005882789.tif 000020
【図１７】
0005882789.tif 000021
【図１８】
0005882789.tif 000022
【図１９】
0005882789.tif 000023
【図２０】
0005882789.tif 000024
【図２１】
0005882789.tif 000025
【図２２】
0005882789.tif 000026
【図２３】
0005882789.tif 000027
【図２４】
0005882789.tif 000028
【図２５】
0005882789.tif 000029
【図２６】
0005882789.tif 000030
【図２７】
0005882789.tif 000031
【図２８】
0005882789.tif 000032