画像処理装置、撮像装置および画像処理プログラム
【課題】様々な撮像条件にて画像の十分な高精細化を行える画像処理装置を提供する。
【解決手段】画像処理装置110は、撮像系100,102により生成された入力画像を、撮像系の応答関数を用いて得られる評価値に差を持つ複数の領域に分割する領域分割手段1105と、該各領域に対して、該領域ごとに異なる応答関数を用いた画像精細度を増加させるための画像処理を行う処理手段1104とを有する。処理手段は、撮像系における該入力画像の生成時の撮像条件に対応する応答関数であって、記憶手段から読み出した、または演算により生成した応答関数を用いて画像処理を行う
【解決手段】画像処理装置110は、撮像系100,102により生成された入力画像を、撮像系の応答関数を用いて得られる評価値に差を持つ複数の領域に分割する領域分割手段1105と、該各領域に対して、該領域ごとに異なる応答関数を用いた画像精細度を増加させるための画像処理を行う処理手段1104とを有する。処理手段は、撮像系における該入力画像の生成時の撮像条件に対応する応答関数であって、記憶手段から読み出した、または演算により生成した応答関数を用いて画像処理を行う
【発明の詳細な説明】
【技術分野】
【0001】
本発明は,撮像装置より取得される画像の解像度を向上させる高精細画像生成技術に関する。
【背景技術】
【0002】
撮像系によって生成された画像を高精細化するための技術として超解像技術が知られている。再構成型に分類される超解像技術においては、撮像系における劣化過程を観測モデルとしてモデル化し、その逆問題として高精細化を行う。
【0003】
逆問題を解く方法として、撮影画像上のエイリアシングを利用した周波数領域法や、事前情報の事後確率を最適化することにより高精細画像を推定するMAP(Maximum a posteriori)法が提案されている。また、POCS(Projection onto Convex Sets)法という様々な事前情報を組み合わせることにより推定を行う手法も提案されている。
【0004】
観測モデルは、撮像系のモーション、光学系による劣化、CF(Color Filter)およびLPF(Low-Pass Filter)の効果から求まる撮像系の応答関数と、イメージセンサにおけるサンプリングとで構成される。この観測モデルにおける実際の撮像系による劣化過程に対する再現精度が超解像技術による高精細化の精度に大きく依存することが知られており、様々な観測モデルが提案されている。
【0005】
特許文献1には、撮像系の応答関数として、光学系による劣化を表す光学系PSF(Point Spread Function、点像分布関数)を利用した観測モデルを使用した超解像処理が開示されている。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2005−095328号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、特許文献1にて開示された画像の全領域に対して単一の応答関数を使用する超解像処理では、該単一の応答関数と本来の撮像系の応答関数との差が大きくなる領域においては十分な高精細化を行うことができない。
【0008】
さらに、絞り値、焦点距離および撮影光の波長(撮像波長)等の撮像条件が変更されたにもかかわらず、同じ応答関数を用いて超解像処理を行っても、良好な高精細画像を得ることができない可能性がある。
【0009】
本発明は、様々な撮像条件においても画像の十分な高精細化を行えるようにした画像処理装置および画像処理プログラムを提供する。
【課題を解決するための手段】
【0010】
本発明の一側面としての画像処理装置は、撮像系により生成された入力画像を、撮像系の応答関数を用いて得られる評価値に差を持つ複数の領域に分割する領域分割手段と、該各領域に対して、該領域ごとに異なる応答関数を用いた画像精細度を増加させるための画像処理を行う処理手段とを有する。そして、処理手段は、撮像系における該入力画像の生成時の撮像条件に対応する応答関数であって、記憶手段から読み出した、または演算により生成した応答関数を用いて画像処理を行うことを特徴とする。
【0011】
なお、撮像系と上記画像処理装置とを有する撮像装置も本発明の他の一側面を構成する。
【0012】
また、本発明のさらに他の一側面としての画像処理プログラムは、コンピュータに、撮像系により生成された入力画像を、撮像系の応答関数を用いて得られる評価値に差を持つ複数の領域に分割するステップと、該各領域に対して、該領域ごとに異なる応答関数を用いた画像精細度を増加させるための画像処理を行う画像処理ステップとを有する。そして、画像処理ステップにおいて、撮像系における入力画像の生成時の撮像条件に対応する応答関数であって、記憶手段から読み出した、または演算により生成した応答関数を用いて画像処理を行うことを特徴とする。
【0013】
なお、上記画像処理プログラムを格納した記憶媒体も本発明の他の一側面を構成する。
【発明の効果】
【0014】
本発明によれば、入力画像生成時の撮像条件に対応した撮像系の応答関数を用いて該入力画像に対する高精細化処理を行うことができる。これにより、様々な撮像条件にて生成された入力画像からでも、良好な高精細画像を生成することができる。
【図面の簡単な説明】
【0015】
【図1】本発明の実施例1である撮像装置の構成を示すブロック図。
【図2】実施例1の撮像装置の動作を示すフローチャート。
【図3】実施例1の撮像装置における画像領域分割処理を示すフローチャート。
【図4】実施例1の撮像装置における高精細画像処理を示すフローチャート。
【図5】本発明の実施例2である撮像装置の構成を示すブロック図。
【図6】実施例2の撮像装置の動作を示すフローチャート。
【図7】F値が小さい場合と大きい場合のPSFを示す図。
【図8】実施例2において線形補間で生成したPSFを示す図。
【図9】実施例2においてPSF補正に使用されるガウシアン関数を示す図。
【図10】実施例2においてガウシアン関数で補正したPSFを示す図。
【図11】本発明の実施例3である画像処理装置の構成を示す概略図。
【発明を実施するための形態】
【0016】
以下、本発明の実施例について図面を参照しながら説明する。
【実施例1】
【0017】
図1には、本発明の実施例1である撮像装置1の構成を示している。撮像装置1は、結像光学系100と、露光量制御部材101と、撮像素子102と、AD変換部103と、ズーム制御部104と、露光制御部105と、AF制御部106と、振れ検出部107とを有する。また、撮像装置1は、システム制御回路108と、メモリ109と、画像処理装置110と、視覚補正部111と、圧縮部112と、画像出力部113とを有する。fは撮像装置1により撮像される被写体である。
【0018】
図1において、被写体fからの光は、結像光学系100および露光量制御部材101を通して撮像素子102上に結像する。露光量制御部材101は、絞りやシャッタを含む。
【0019】
撮像素子102は、被写体像を電気信号に変換するCCDセンサやCMOSセンサ等のイメージセンサである。AD変換部103は、撮像素子102から出力されたアナログ電気信号をデジタルデータに変換する。結像光学系100、露光量制御部材101、撮像素子102およびAD変換部103により撮像系が構成される。
【0020】
ズーム制御部104は、結像光学系100のズーミングを制御する。露光制御部105は、露光制御部材101の動作を制御する。AF制御部106は、結像光学系100のフォーカシングを制御する。
【0021】
振れ検出部107は、撮像装置1の振れを検出する。システム制御回路108は、撮像装置1全体の動作の制御を司るマイクロコンピュータ等により構成されている。
【0022】
メモリ109は、システム制御回路108での動作制御用のデータや処理プログラム(後述する画像処理プログラムを含む)を記憶する。
【0023】
画像処理装置110は、AD変換部103でデジタルデータ化された撮影画像(入力画像)に対して画像精細度を増加させる、すなわち高精細化のための画像処理(高精細化処理)を行って、高精細画像を生成する。
【0024】
視覚補正部111は、画像処理装置110により生成された高精細画像の画質を向上させるための処理、例えばトーンカーブ(ガンマ)補正、彩度強調、色相補正およびエッジ強調といった画像補正処理を行う。
【0025】
圧縮部112は、視覚補正部111から出力された高精細画像をJPEG等の圧縮方法により画像圧縮を行って記録用の画像サイズを小さくする。
【0026】
画像出力部113は、圧縮部112により圧縮された画像を、不図示のモニタに表示したり半導体メモリや光ディスク等の記録媒体に記録したりする。
【0027】
次に、画像処理装置110の構成について説明する。1101は撮像条件取得部であり、システム制御部108から、撮像倍率、絞り値、焦点距離等の撮像条件を取得する。
【0028】
1002は撮像系応答関数記憶部であり、撮像系の応答関数(以下、撮像系応答関数という)であって、複数の撮像条件に対応した複数の撮像系応答関数(撮像条件ごとの撮像系応答関数)を予め記憶している。
【0029】
1103は撮像系応答関数選択部であり、撮像系応答関数記憶部1102に記憶されている複数の撮像系応答関数から、入力画像としての撮影画像の撮像時(生成時)の撮像条件に対応した撮像系応答関数を選択する。
【0030】
1105は画像領域分割部であり、AD変換部103からの撮影画像を、領域分割用の撮像系応答関数を用いて複数の領域に分割する。領域分割用の撮像系応答関数については後述する。
【0031】
1104は高精細画像処理部であり、画像領域分割部1105により取得した画像領域分割情報および撮像系応答関数選択部1103から取得した撮影画像の撮像時の撮像条件に対応した撮像系応答関数を用いて、入力画像に対して高精細化処理を行う。
【0032】
次に、撮像装置1の動作について、図2のフローチャートを用いて説明する。図2は、撮像装置1により被写体fを撮像し、撮影画像から高精細画像を生成して画像出力部113から出力するまでの処理を示すフローチャートである。この処理は、システム制御回路108が、不図示のメモリに格納されたコンピュータプログラム(画像処理プログラム)に従って実行する。このことは、後述する他の実施例でも同じである。
【0033】
ステップS201において、不図示の撮影開始ボタンがユーザにより操作されると、システム制御回路108は、露光制御部105に露光条件(絞り値や露光時間等)を決定させ、またAF制御部106にフォーカシングを行わせる。決定された露光条件、フォーカス位置およびズーム位置等の撮像条件は、メモリ109に記憶される。
【0034】
また、システム制御回路108は、振れ検出部107を通じて撮像装置1の手振れ等の振動が発生していることを検知した場合には、結像光学系100内の不図示の振れ補正光学系を駆動して像振れ補正を行う。
【0035】
そして、システム制御回路108は、撮像素子102に被写体像を光電変換させる。撮像素子102からは、被写体像の輝度に応じたアナログ信号が出力される。該アナログ信号は、AD変換部103によってデジタルデータに変換されることにより撮影画像が生成される。撮影画像は、画像処理装置110に伝送される。
【0036】
次にステップS202では、システム制御回路108は、撮像条件取得部1101において、高精細化処理の対象となる撮影画像の撮像時における撮像条件を取得する。メモリ109には、ステップS201の段階で撮像時の撮像条件データが格納されており、撮像条件取得部1101からの要求に応じた撮像条件データが撮像条件取得部1101へと伝送される。撮像条件としては、前述したように、絞り値、撮像倍率および焦点距離のうち少なくとも1つであってもよいし、それら以外でも、撮像系応答関数が変化するようなパラメータであればよい。
【0037】
次にステップS203では、システム制御回路108は、画像領域分割部1105に、撮影画像を、それぞれシフトインバリアント領域としての複数の領域に分割する画像領域分割処理を行わせる。ここにいうシフトインバリアント領域とは、高精細化処理について同じ撮像系応答関数を使用する領域を意味する。言い換えれば、複数のシフトインバリアント領域がある場合、該シフトインバリアント領域ごとに異なる撮像系応答関数を用いた高精細化処理が行われる。
【0038】
画像領域分割処理について、図3(a)に示すフローチャートを用いて説明する。まず、ステップS301では、画像領域分割部1105は、ある注目画像領域の仮領域分割を行う。仮領域分割では、領域分割を試行することで得られた複数の領域(仮分割領域)の評価値を算出するために行われる。該評価値に応じて、仮分割領域をその後に正式な分割領域として使用するか否かが判定される。
【0039】
次にステップS302では、画像領域分割部1105は、領域分割用の撮像系応答関数を、各仮分割領域の代表的な位置(例えば、各仮分割領域の中心画素)について生成する。領域分割用の撮像系応答関数の生成方法はどのような方法でもよく、例えば、撮像系の設計情報を用いて光線追跡により算出する方法や、予め測定して記憶した領域分割用の撮像系応答関数を読み出す方法でもよい。
【0040】
次にステップS303では、画像領域分割部1105は、ステップS302で生成した各仮分割領域の領域分割用の撮像系応答関数を用いて、各仮分割領域での評価値(以下、分割評価値という)Iを算出する。
【0041】
本実施例では、分割評価値Iは、撮像系応答関数の1つである撮像系MTF(Modulation Transfer Function、変調伝達関数)を用いて、以下の式(1)により算出する。
【0042】
【数1】
【0043】
ただし、ξは空間周波数であり、MTFは撮像系MTFである。ξ1とξ2はそれぞれ、空間周波数の上限下限を設定する定数である。分割評価値Iは、撮像系MTFを空間周波数で積分したものである。
【0044】
式(1)で表される分割評価値Iを各仮分割領域について算出し、これら評価値を比較することは、領域分割用の撮像系応答関数の変化(差)を評価することに相当する。このため、次に説明するように、領域分割用の撮像系応答関数の変化に応じた画像領域の分割結果を得ることが可能になる。
【0045】
次にステップS304では、画像領域分割部1105は、ステップS303により算出された各仮分割領域の分割評価値を比較する。具体的には、仮分割領域の分割評価値の差を求め、該差の絶対値が予め設定した閾値(所定値)α以上になるか否かを判定する。そして、差の絶対値が閾値α以上になる分割評価値を有する仮分割領域の組み合わせが少なくとも1つある場合は、ステップS305に進む。
【0046】
ステップS305では、画像領域分割部1105は、仮分割領域を正式な分割領域に設定する。そして、画像領域分割部1105は、このようにして得られた各分割領域について(つまりは、分割領域ごとに)ステップS301からステップS305の処理を繰り返す。
【0047】
一方、ステップS304において、差の絶対値が閾値α以上になる分割評価値を有する仮分割領域の組み合わせが1つもない場合には、画像領域分割部1105は、仮分割領域を正式な分割領域として設定しない。この場合、ステップS301にて仮分割領域に分割する前の注目画像領域をシフトインバリアント領域とする。
【0048】
画像領域分割部1105は、シフトインバリアント領域となった分割領域については、画像領域分割処理を終了する。さらに、分割された全ての画像領域がシフトインバリアント領域になると、画像領域分割処理を終了する。
【0049】
領域分割用の撮像系応答関数の変化が画像全体(全画像領域)の中心では小さく、周辺ほど大きい場合には、最終的な全画像領域701の領域分割結果は図3(b)に示すようになる。図3(b)では、領域分割用の撮像応答関数の変化に合わせて分割領域の大きさを変化させた分割結果が得られている。
【0050】
図2に戻り、ステップS204では、システム制御回路108は、撮像系応答関数選択部1103に、撮像系応答関数記憶部1102に記憶されている複数の撮像系応答関数の中から、ステップS202で取得した撮像条件に対応する撮像系応答関数を選択させる。
【0051】
ここで、撮像系応答関数記憶部1102への撮像系応答関数の記憶方法と、撮像条件に対応する撮像系応答関数の選択方法について説明する。
【0052】
撮像系応答関数とは、光学系に入射した光がデジタル画像として表示、記録されるまでに経る撮像系での劣化過程を表したものである。撮像系応答関数の表現方法としては、点像分布関数PSF(Point Spread Function)や光学的伝達関数OTF(Optical Transfer Function)等がある。本実施例では、撮像系応答関数としてPSFを用いる場合について説明するが、その他の場合でも同様の処理を適用することができる。
【0053】
PSFは、点光源を撮像系で撮像した場合に、最終的にどのような画像となって見えるかを光の強度と広がりについての3次元形状として表現したものである。そのため、撮像時の撮像条件によっては、PSFの形状は大きく異なったものとなる。例えば、撮像時に絞りのF値を大きくすればPSFは広くなだらかな形状になり、逆にF値を小さくすればPSFは狭く急峻な形状になる。このように、撮像条件が異なるとPSFの形状も変化するため、ある特定の撮像条件におけるPSFや、ガウシアン形状で近似したPSFだけを撮像装置に記憶していたのでは、多様な撮像条件の全てについて良好な高精細画像を生成することはできない。
【0054】
そこで、本実施例では、撮像系が取り得る範囲の全ての撮像条件におけるPSFを撮像系応答関数記憶部1102に記憶しておくことにより、どのような撮像条件においても良好な高精細画像を生成可能なPSFを用いることができるようにする。つまり、撮像系応答関数記憶部1102は、撮像条件が設定可能な最小単位ごとに、撮影画像の各画素についてのPSFを記憶する。
【0055】
撮像条件ごとのPSFは、例えば撮像装置の工場出荷時に計測したものを記憶させてもよいし、光学設計情報を用いた光線追跡により撮像条件ごとのPSFを算出して記憶させてもよい。また、ユーザがテストパターンを撮像し、そこからPSFを算出したり、撮像装置に対応したPSFのデータをネットワークを介してダウンロードして記憶させたりする等、いかなる記憶方法であってもよい。
【0056】
そして、撮像系応答関数選択部1103は、ステップS202において取得した撮像条件に対応したPSFを、撮像系応答関数記憶部1102に記憶されているPSFの中から選択する。ここで、PSFの選択に使用する撮像条件には、前述した絞り値、撮影倍率および焦点距離以外に、被写体fからの光(撮像光)の波長もある。波長ごとのPSFを記憶している場合には、例えば撮像装置が3板式のカラーカメラであれば、撮像系応答関数記憶部1102より、RGBの各波長に対応するPSFを選択する。さらに、白黒カメラにカラーフィルタを装着して撮影する場合等であれば、カラーフィルタの分光特性に対応した波長におけるPSFを選択するようにすればよい。
【0057】
以上のようにして、撮像系応答関数選択部1103によって選択された撮像条件に対応したPSFは、高精細画像処理部1104へと送られる。
【0058】
そして、図2のステップS205において、システム制御回路108は、高精細画像処理部1104に、撮影画像に対する高精細化処理を行わせる。このステップでの処理の詳細を、図4のフローチャートを用いて説明する。ここでは、高精細化処理として、再構成型超解像処理を行う。再構成型の超解像処理は、撮像系の劣化過程をモデル化し、その逆問題を解くことで劣化過程を経る前の高解像画像を再構成するものである。
【0059】
まず、超解像処理を行う画像をリファレンス画像とし、該リファレンス画像と同じ撮影シーンに対して微小に被写体に対する視点位置を変化させた撮像により得られた複数の画像(視点画像)を画像処理演算部1103に入力する。以下の説明において、リファレンス画像と視点位置が異なる複数の画像をいずれも撮影画像といい、さらにこれらをまとめて撮影画像群と称する。また、撮影画像数をNとする。このとき、撮像画像群に含まれる画像数は、撮像系の性能、超解像処理の拡大倍率および超解像処理後の画像(超解像画像)の用途に応じて適宜設定される。
【0060】
ステップS401では、高精細画像処理部1104は、入力されたリファレンス画像を設定された拡大倍率に応じて拡大処理し、最初の推定高精細画像(以下、初期推定高精細画像という)を生成する。拡大処理としては、単純な線形補間やスプライン補間等、どのような方法を使用してもよい。
【0061】
次にステップS402では、高精細画像処理部1104は、ステップS203での画像領域分割処理の結果(画像領域分割情報)、各分割領域に対応する領域分割用の撮像系応答関数および初期推定高精細画像を用いて撮像系による劣化過程を演算する。これにより、低解像画像を生成する。撮像系による劣化過程の演算には、該劣化過程をモデル化した観測モデルを使用する。観測モデルは、撮像系応答関数の1つであるPSF(Point Spread Function、点像分布関数)を用いて以下のように与えられる。
【0062】
【数2】
【0063】
ただし、Xは高精細画像であり、Y′kは劣化過程後のk番目の低解像画像である。*は畳み込み演算を示し、nは付加的なノイズを示す。また、PSFkは、撮影画像群のうちk番目の撮影画像に対する撮像系応答関数を表す。劣化過程の演算は、式(2)の右辺の第一項を用いる。なお、観測モデルは上記計算式で表されるものに限られず、撮像系の特性や超解像処理のアルゴリズムに合わせて適宜決定すればよい。
【0064】
劣化過程を演算する際に、画像領域分割情報を用い、演算する画素が含まれる分割領域に対応する撮像系応答関数を用いて式(2)を演算する。
【0065】
次にステップS403では、高精細画像処理部1104は、劣化過程処理を演算した低解像画像群を用いて評価値(以下、超解像評価値という)Jを、以下の式(3)により算出する。
【0066】
【数3】
【0067】
ただし、Ykはk番目の撮影画像を、Y′kはk番目の低解像画像を、αは拘束パラメータをそれぞれ示す。また、cは推定高精細画像に対する事前情報を表す行列を示し、‖‖2はL2ノルムを示す。
【0068】
超解像評価値Jの第一項は、撮影画像と推定高精細画像を劣化させて作成した低解像画像とを比較することで、推定高精細画像の評価を行う項である。超解像評価値Jの第二項は、推定高精細画像の尤もらしさを評価する項であり、推定高精細画像に対する既知の情報や性質を使用して評価を行う。拘束パラメータαは、画像や撮像系に合わせて適宜設定される。行列cは、例えばハイパスフィルタを用いる。
【0069】
なお、超解像評価値Jとしては式(3)に示されるもの以外に、Sina Farsiu他による下記の文献Aにて説明されているバイラテラルフィルタを用いて評価したり、色の相関を用いて評価したりしてもよい。
[文献A]“Multiframe Demosaicing and Super-Resolution of ColorImages”(IEEE TRANSACTION ON IMAGE PROCESSING,VOL.15,NO.1,JANUARY 2006)
次にステップS404では、高精細画像処理部1104は、ステップS403で算出した超解像評価値Jが閾値(所定値)βより小さいか否かを判定する。閾値βは、画像の種類、撮像系の性能および高精細化処理の目的に応じて適宜設定される。J≧βである場合には、ステップS405に進み、J<βである場合には、高精細化処理を終了し、推定高精細画像を超解像画像とする。その後、図2のステップS206に進む。
【0070】
ステップS405では、高精細画像処理部1104は、ステップS403で算出した超解像評価値Jを最適化する方向に推定高精細画像を更新する。更新方法としては、どのような方法を用いてもよいが、例えば最急降下法を用いて、
【0071】
【数4】
【0072】
として更新すればよい。ここで、X′は更新後の高精細画像を示し、γは更新ステップサイズを設定する定数である。以下、X′を推定高精細画像としてステップS402からの処理をJ<βとなるまで繰り返し行い、超解像画像を得る。そして、ステップS206に進む。
【0073】
図2のステップS206では、システム制御回路108は、ステップS205で生成された高精細画像を出力する処理を行う。まず、視覚補正部111に高精細画像に対する前述した画像補正処理を行わせる。次に、圧縮部112に画像補正処理後の高精細画像の圧縮処理を行わせる。そして、圧縮後の高精細画像を画像出力部113から出力させる。
【0074】
以上説明したように、本実施例では、撮影画像を領域分割用の撮像系応答関数を用いて得られる分割評価値に差を持つ複数の領域に分割する。そして、領域ごとの高精細化処理において、予め記憶された撮像条件ごとの撮像系応答関数から、撮影画像の撮像時の撮像条件に対応した撮像系応答関数を選択して用いる。これにより、分割された領域ごとに撮像条件に適した撮像系応答関数を用いて高精細化処理を行うことが可能となり、単一のPSFを用いた場合と比較して良好な高精細画像を生成することができる。
【実施例2】
【0075】
図5には、本発明の実施例2である撮像装置1′の構成を示している。本実施例では、離散的に記憶してある撮像系応答関数から、実際の撮像条件に対応した撮像系応答関数を生成する。
【0076】
図5において、図1に示した構成要素と共通する構成要素については、図1と同符号を付す。本実施例の撮像装置1′は、図1に示した構成に加えて、撮像系応答関数生成部4101を有する。以下、本実施例の撮像装置の動作について、図6に示すフローチャートを用いて説明する。
【0077】
ステップS501〜ステップS503はそれぞれ、図2に示したステップS201〜S203と同じである。ここで、本実施例における撮像系応答関数記憶部1102は、撮像系応答関数を予め定められた撮像条件の間隔で離散的に記憶しておくものとする。言い換えれば、撮像系応答関数記憶部1102は、複数の代表的な撮像条件に対応する複数の撮像系応答関数を記憶している。
【0078】
ステップS504では、システム制御回路108は、撮像系応答関数選択部1103に、ステップS502で取得した撮像時の撮像条件に対応した撮像系応答関数を選択させる。ただし、本実施例では、撮像系応答関数記憶部1102に撮像系応答関数が離散的に記憶されているために、ステップS502で取得した撮像条件に直接該当する撮像系応答関数が存在しない場合がある。この場合、撮像系応答関数選択部1103は、離散的に記憶されている撮像系応答関数の中から撮像時の撮像条件に近い撮像系応答関数を、1つまたは複数選択し、後段の撮像系応答関数生成部4101へと伝送する。
【0079】
そして、ステップS504では、システム制御回路108は、撮像系応答関数生成部4101に、撮像時の撮像条件に近い撮像系応答関数を用いて、撮像時の撮像条件に対応した撮像系応答関数を生成させる。
【0080】
撮像時の撮像条件に対応した撮像系応答関数の生成方法の1つとして、複数の撮像系応答関数を用いた補間処理が挙げられるが、ここでは、線形補間処理を行う方法について説明する。また、ここでは、撮像系応答関数としてPSFを用いる場合について説明するが、それ以外の場合でも同様の処理を適用することができる。
【0081】
線形補間では、撮像条件の変化に応じて線形的にPSFが変化しているとして、2つのPSFの間に存在するPSFを算出する。撮像系応答関数選択部1103によって、撮像条件の1つである絞りのF値aに対応する撮像系応答関数PSF_aと、F値bに対応する撮像系応答関数PSF_bとが選択されたとする。
【0082】
図7(a)にPSF_aの形状を示し、図7(b)にPSF_bの形状を示す。PSF_aはF値が小さい場合のPSFを示しており、急峻な形状を有する。それに対して、PSF_bは、F値が大きい場合のPSFを示しており、PSF_aに比べて広がった形状を有する。これらの図から、F値が異なるとPSFの形状も大きく異なることが分かる。
【0083】
このため、例えば、F値aに対応するPSF_aを用いて実際のPSF形状がPSF_bであるF値bの画像に対して高精細化処理を行ったとしても、撮像時の撮像条件に正しく対応したPSFではないため、良好な高精細画像を得ることはできない。したがって、高精細化処理を行う際には、撮像条件に対応したPSFを使用する必要があり、撮像系応答関数記憶部1102に対応するPSFがない場合には、補間処理によって対応するPSFを生成する必要がある。
【0084】
線形補間処理の一例として、ステップS502において取得した絞りのF値cがF値aとF値bの間にあるとした場合の該F値cに対応する撮像系応答関数PSF_cを算出するための計算式は以下のようになる。
【0085】
【数5】
【0086】
ここで、式(5)のαは、F値aとF値cの差分とF値bとF値cの差分との比率を表したものであり、PSF_aおよびPSF_bに対してF値cからの差分に応じた重み付けを行うことを表している。
【0087】
図8に、F値cがF値aとF値bのちょうど中間にある場合、つまりα=0.5のときに式(5)を適用した結果を示す。図8より、PSF_cは、PSF_aとPSF_bの中間の形状を有しており、線形補間によりF値aとF値bの中間にあるF値cに対応するPSFが生成されていることが確認できる。
【0088】
以上より、撮像系応答関数選択部1103により選択された2つのPSFに対して線形補間を行うことで、撮像時の撮像条件に対応したPSFを生成することができる。
【0089】
本実施例においては、補間処理として線形補間処理を行う場合について説明したが、その他にもスプライン補間や放物線補間等の他の補間処理を行ってもよい。
【0090】
また、撮像時の撮像条件を反映した撮像系応答関数の生成方法についての他の例として、選択した撮像系応答関数を撮像時の撮像系応答関数に補正するための補正関数を適用する補正処理がある。
【0091】
ここでは、補正関数の例としてガウシアン関数を用いて説明する。2次元のガウシアン関数G(x,y)は以下の式により表すことができる。
【0092】
【数6】
【0093】
ここで、G(x,y)は、図9に示すような凸型の形状を有しており、Aはピーク値の大きさ、BxおよびByはそれぞれx方向およびy方向についてのピーク位置の原点からの偏移量である。また、Cは凸形状の広がりを調節する係数である。
【0094】
そして、上記のガウシアン関数G(x,y)を用いて、ステップS504で選択したPSFに対して補正処理を行う。ステップS504で取得した撮像系応答関数PSF_IN(x,y)に対して、ガウス関数G(x,y)を適用して、撮像時の撮像系応答関数PSF_OUT(x,y)を生成するときの計算式は次式のようになる。
【0095】
【数7】
【0096】
ここで、式(7)の右辺はPSF_IN(x,y)とG(x,y)の同一座標位置の値同士で乗算を行うことを表している。これにより、G(x,y)の形状に応じてPSF_IN(x,y)の形状を補正することができる。
【0097】
本実施例では、撮像条件として絞りのF値に注目した場合について説明するが、他の撮像条件についても同様である。ここでは、例として図7(b)に示したPSF_bに対して、図9に示したガウシアン関数Gを用いて補正を行うことで、図7(a)のPSF_aと同等のPSFを生成する。
【0098】
図9は、式(6)においてA=1,Bx=By=0,C=0.3とした場合のガウシアン関数Gの形状を示す。そして、図7(b)のPSF_bをPSF_INとして、図9のガウシアン関数Gを用いて式(7)により生成したPSFの形状を、図10にPSF_OUTとして示す。
【0099】
図10より、ガウシアン関数Gを用いて補正処理を行うことで、図7(a)に示すPSF_aと同等のPSFが生成できていることが確認できる。
【0100】
ここで、補正処理の際に用いるガウシアン関数の係数A,Bx,By,Cの決定方法としては、例えばステップS504にて選択したPSFに対応する撮像条件と、実際の撮像時の撮像条件との差分から線形的に決定する方法がある。さらに、ガウシアン関数の各係数の決定方法についての他の例としては、どのように係数を設定すると、どのような撮像条件に対応したPSFが生成できるかを事前に算出もしくは計測しておく方法もある。これらの方法により得られた各係数は、ルックアップテーブルとして記憶しておいたり、係数にフィッティングさせた多次元関数として記憶しておいたりすればよい。
【0101】
本実施例においては、補正関数としてガウシアン関数を用いた方法について説明したが、その他にもsinc関数等を使用する方法もある。また、式(7)では、補正方法としてPSFと補正関数を画素位置毎に積算する方法を示したが、畳み込み積分を行っても同等の効果を得ることができる。
【0102】
さらに、撮像時の撮像条件に対応したPSFの生成方法についての他の例として、選択したPSFに対して、撮影時のPSFへと補正するための補正係数を適用する方法がある。
【0103】
例えば、PSFの補正対象としては、ピーク値や半値幅等が挙げられるが、このような補正対象についての補正係数を取得するための一例として、事前に計測を行う方法が挙げられる。
【0104】
まず、ある撮像条件におけるPSFを一つもしくは複数個選択し、それを基準PSFとする。そして、基準PSF以外の撮像条件におけるPSFと、基準PSFとの相違度を求める。相違度は、例えば前記のピーク値や半値幅の差分や拡大比率等で算出すればよく、その相違度を打ち消すような値が補間係数となる。このときに得られた各係数は、ルックアップテーブルとして記憶しておいたり、係数にフィッティングさせた多次元関数として記憶しておいたりすればよい。これにより、撮像系応答関数記憶部1102には、上記各係数と基準PSFだけを記憶しておけばよいことになる。
【0105】
そして、ステップS504において選択された基準PSFに対して、ステップS502において取得した撮像条件に対応した補正係数を用いて補正処理を行うことにより、撮像時の撮像条件に対応したPSFを生成することが可能となる。
【0106】
以上のように、撮像条件ごとの撮像系応答関数を多数記憶せず、ある一定の間隔を持った離散的な撮像条件に対応する撮像系応答関数を記憶しておき、それらに対して補間処理や補正処理を施すことで、撮像時の撮像条件に対応した撮像系応答関数を生成できる。これにより、撮像系応答関数記憶部1102で必要となる記憶容量を削減しつつ、撮像条件に対応した撮像系応答関数を用いた良好な高精細画像を生成することができる。
【0107】
図5のステップS506およびステップS507は、図2に示したステップS205およびステップS206と同じである。
【実施例3】
【0108】
上記各実施例では、撮像装置に、画像処理装置110を内蔵した場合について説明したが、本発明の実施例はこれに限らない。
【0109】
例えば図11に示すように、撮像装置1801で得られた撮影画像を、パーソナルコンピュータ1802に送信する。送信方法は、ケーブル方式、無線方式のいずれでもよく、インターネットやLANを介して送信してもよい。
【0110】
そして、パーソナルコンピュータ1802において、受信した撮影画像に対して、実施例1,2にて説明した画像領域分割処理や高精細化処理を行ってもよい。この場合、パーソナルコンピュータが、画像処理装置として機能する。
【0111】
さらに、上記実施例1,2にて説明した画像処理プログラムは、これを格納した半導体メモリや光ディスク等の記憶媒体やインターネット、LANを介して撮像装置やパーソナルコンピュータにインストールされるようにしてもよい。
【0112】
以上説明した各実施例は代表的な例にすぎず、本発明の実施に際しては、各実施例に対して種々の変形や変更が可能である。
【0113】
以上説明した各実施例は代表的な例にすぎず、本発明の実施に際しては、各実施例に対して種々の変形や変更が可能である。
【産業上の利用可能性】
【0114】
様々な撮像条件においても撮影画像の十分な高精細化処理が行える画像処理装置を提供できる。
【符号の説明】
【0115】
1,1′ 撮像装置
100 結像光学系
102 撮像素子
108 システム制御回路
110 画像処理装置
1102 撮像系応答関数記憶部
1103 撮像系応答関数選択部
1104 高精細画像処理部
1105 画像領域分割部
【技術分野】
【0001】
本発明は,撮像装置より取得される画像の解像度を向上させる高精細画像生成技術に関する。
【背景技術】
【0002】
撮像系によって生成された画像を高精細化するための技術として超解像技術が知られている。再構成型に分類される超解像技術においては、撮像系における劣化過程を観測モデルとしてモデル化し、その逆問題として高精細化を行う。
【0003】
逆問題を解く方法として、撮影画像上のエイリアシングを利用した周波数領域法や、事前情報の事後確率を最適化することにより高精細画像を推定するMAP(Maximum a posteriori)法が提案されている。また、POCS(Projection onto Convex Sets)法という様々な事前情報を組み合わせることにより推定を行う手法も提案されている。
【0004】
観測モデルは、撮像系のモーション、光学系による劣化、CF(Color Filter)およびLPF(Low-Pass Filter)の効果から求まる撮像系の応答関数と、イメージセンサにおけるサンプリングとで構成される。この観測モデルにおける実際の撮像系による劣化過程に対する再現精度が超解像技術による高精細化の精度に大きく依存することが知られており、様々な観測モデルが提案されている。
【0005】
特許文献1には、撮像系の応答関数として、光学系による劣化を表す光学系PSF(Point Spread Function、点像分布関数)を利用した観測モデルを使用した超解像処理が開示されている。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2005−095328号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、特許文献1にて開示された画像の全領域に対して単一の応答関数を使用する超解像処理では、該単一の応答関数と本来の撮像系の応答関数との差が大きくなる領域においては十分な高精細化を行うことができない。
【0008】
さらに、絞り値、焦点距離および撮影光の波長(撮像波長)等の撮像条件が変更されたにもかかわらず、同じ応答関数を用いて超解像処理を行っても、良好な高精細画像を得ることができない可能性がある。
【0009】
本発明は、様々な撮像条件においても画像の十分な高精細化を行えるようにした画像処理装置および画像処理プログラムを提供する。
【課題を解決するための手段】
【0010】
本発明の一側面としての画像処理装置は、撮像系により生成された入力画像を、撮像系の応答関数を用いて得られる評価値に差を持つ複数の領域に分割する領域分割手段と、該各領域に対して、該領域ごとに異なる応答関数を用いた画像精細度を増加させるための画像処理を行う処理手段とを有する。そして、処理手段は、撮像系における該入力画像の生成時の撮像条件に対応する応答関数であって、記憶手段から読み出した、または演算により生成した応答関数を用いて画像処理を行うことを特徴とする。
【0011】
なお、撮像系と上記画像処理装置とを有する撮像装置も本発明の他の一側面を構成する。
【0012】
また、本発明のさらに他の一側面としての画像処理プログラムは、コンピュータに、撮像系により生成された入力画像を、撮像系の応答関数を用いて得られる評価値に差を持つ複数の領域に分割するステップと、該各領域に対して、該領域ごとに異なる応答関数を用いた画像精細度を増加させるための画像処理を行う画像処理ステップとを有する。そして、画像処理ステップにおいて、撮像系における入力画像の生成時の撮像条件に対応する応答関数であって、記憶手段から読み出した、または演算により生成した応答関数を用いて画像処理を行うことを特徴とする。
【0013】
なお、上記画像処理プログラムを格納した記憶媒体も本発明の他の一側面を構成する。
【発明の効果】
【0014】
本発明によれば、入力画像生成時の撮像条件に対応した撮像系の応答関数を用いて該入力画像に対する高精細化処理を行うことができる。これにより、様々な撮像条件にて生成された入力画像からでも、良好な高精細画像を生成することができる。
【図面の簡単な説明】
【0015】
【図1】本発明の実施例1である撮像装置の構成を示すブロック図。
【図2】実施例1の撮像装置の動作を示すフローチャート。
【図3】実施例1の撮像装置における画像領域分割処理を示すフローチャート。
【図4】実施例1の撮像装置における高精細画像処理を示すフローチャート。
【図5】本発明の実施例2である撮像装置の構成を示すブロック図。
【図6】実施例2の撮像装置の動作を示すフローチャート。
【図7】F値が小さい場合と大きい場合のPSFを示す図。
【図8】実施例2において線形補間で生成したPSFを示す図。
【図9】実施例2においてPSF補正に使用されるガウシアン関数を示す図。
【図10】実施例2においてガウシアン関数で補正したPSFを示す図。
【図11】本発明の実施例3である画像処理装置の構成を示す概略図。
【発明を実施するための形態】
【0016】
以下、本発明の実施例について図面を参照しながら説明する。
【実施例1】
【0017】
図1には、本発明の実施例1である撮像装置1の構成を示している。撮像装置1は、結像光学系100と、露光量制御部材101と、撮像素子102と、AD変換部103と、ズーム制御部104と、露光制御部105と、AF制御部106と、振れ検出部107とを有する。また、撮像装置1は、システム制御回路108と、メモリ109と、画像処理装置110と、視覚補正部111と、圧縮部112と、画像出力部113とを有する。fは撮像装置1により撮像される被写体である。
【0018】
図1において、被写体fからの光は、結像光学系100および露光量制御部材101を通して撮像素子102上に結像する。露光量制御部材101は、絞りやシャッタを含む。
【0019】
撮像素子102は、被写体像を電気信号に変換するCCDセンサやCMOSセンサ等のイメージセンサである。AD変換部103は、撮像素子102から出力されたアナログ電気信号をデジタルデータに変換する。結像光学系100、露光量制御部材101、撮像素子102およびAD変換部103により撮像系が構成される。
【0020】
ズーム制御部104は、結像光学系100のズーミングを制御する。露光制御部105は、露光制御部材101の動作を制御する。AF制御部106は、結像光学系100のフォーカシングを制御する。
【0021】
振れ検出部107は、撮像装置1の振れを検出する。システム制御回路108は、撮像装置1全体の動作の制御を司るマイクロコンピュータ等により構成されている。
【0022】
メモリ109は、システム制御回路108での動作制御用のデータや処理プログラム(後述する画像処理プログラムを含む)を記憶する。
【0023】
画像処理装置110は、AD変換部103でデジタルデータ化された撮影画像(入力画像)に対して画像精細度を増加させる、すなわち高精細化のための画像処理(高精細化処理)を行って、高精細画像を生成する。
【0024】
視覚補正部111は、画像処理装置110により生成された高精細画像の画質を向上させるための処理、例えばトーンカーブ(ガンマ)補正、彩度強調、色相補正およびエッジ強調といった画像補正処理を行う。
【0025】
圧縮部112は、視覚補正部111から出力された高精細画像をJPEG等の圧縮方法により画像圧縮を行って記録用の画像サイズを小さくする。
【0026】
画像出力部113は、圧縮部112により圧縮された画像を、不図示のモニタに表示したり半導体メモリや光ディスク等の記録媒体に記録したりする。
【0027】
次に、画像処理装置110の構成について説明する。1101は撮像条件取得部であり、システム制御部108から、撮像倍率、絞り値、焦点距離等の撮像条件を取得する。
【0028】
1002は撮像系応答関数記憶部であり、撮像系の応答関数(以下、撮像系応答関数という)であって、複数の撮像条件に対応した複数の撮像系応答関数(撮像条件ごとの撮像系応答関数)を予め記憶している。
【0029】
1103は撮像系応答関数選択部であり、撮像系応答関数記憶部1102に記憶されている複数の撮像系応答関数から、入力画像としての撮影画像の撮像時(生成時)の撮像条件に対応した撮像系応答関数を選択する。
【0030】
1105は画像領域分割部であり、AD変換部103からの撮影画像を、領域分割用の撮像系応答関数を用いて複数の領域に分割する。領域分割用の撮像系応答関数については後述する。
【0031】
1104は高精細画像処理部であり、画像領域分割部1105により取得した画像領域分割情報および撮像系応答関数選択部1103から取得した撮影画像の撮像時の撮像条件に対応した撮像系応答関数を用いて、入力画像に対して高精細化処理を行う。
【0032】
次に、撮像装置1の動作について、図2のフローチャートを用いて説明する。図2は、撮像装置1により被写体fを撮像し、撮影画像から高精細画像を生成して画像出力部113から出力するまでの処理を示すフローチャートである。この処理は、システム制御回路108が、不図示のメモリに格納されたコンピュータプログラム(画像処理プログラム)に従って実行する。このことは、後述する他の実施例でも同じである。
【0033】
ステップS201において、不図示の撮影開始ボタンがユーザにより操作されると、システム制御回路108は、露光制御部105に露光条件(絞り値や露光時間等)を決定させ、またAF制御部106にフォーカシングを行わせる。決定された露光条件、フォーカス位置およびズーム位置等の撮像条件は、メモリ109に記憶される。
【0034】
また、システム制御回路108は、振れ検出部107を通じて撮像装置1の手振れ等の振動が発生していることを検知した場合には、結像光学系100内の不図示の振れ補正光学系を駆動して像振れ補正を行う。
【0035】
そして、システム制御回路108は、撮像素子102に被写体像を光電変換させる。撮像素子102からは、被写体像の輝度に応じたアナログ信号が出力される。該アナログ信号は、AD変換部103によってデジタルデータに変換されることにより撮影画像が生成される。撮影画像は、画像処理装置110に伝送される。
【0036】
次にステップS202では、システム制御回路108は、撮像条件取得部1101において、高精細化処理の対象となる撮影画像の撮像時における撮像条件を取得する。メモリ109には、ステップS201の段階で撮像時の撮像条件データが格納されており、撮像条件取得部1101からの要求に応じた撮像条件データが撮像条件取得部1101へと伝送される。撮像条件としては、前述したように、絞り値、撮像倍率および焦点距離のうち少なくとも1つであってもよいし、それら以外でも、撮像系応答関数が変化するようなパラメータであればよい。
【0037】
次にステップS203では、システム制御回路108は、画像領域分割部1105に、撮影画像を、それぞれシフトインバリアント領域としての複数の領域に分割する画像領域分割処理を行わせる。ここにいうシフトインバリアント領域とは、高精細化処理について同じ撮像系応答関数を使用する領域を意味する。言い換えれば、複数のシフトインバリアント領域がある場合、該シフトインバリアント領域ごとに異なる撮像系応答関数を用いた高精細化処理が行われる。
【0038】
画像領域分割処理について、図3(a)に示すフローチャートを用いて説明する。まず、ステップS301では、画像領域分割部1105は、ある注目画像領域の仮領域分割を行う。仮領域分割では、領域分割を試行することで得られた複数の領域(仮分割領域)の評価値を算出するために行われる。該評価値に応じて、仮分割領域をその後に正式な分割領域として使用するか否かが判定される。
【0039】
次にステップS302では、画像領域分割部1105は、領域分割用の撮像系応答関数を、各仮分割領域の代表的な位置(例えば、各仮分割領域の中心画素)について生成する。領域分割用の撮像系応答関数の生成方法はどのような方法でもよく、例えば、撮像系の設計情報を用いて光線追跡により算出する方法や、予め測定して記憶した領域分割用の撮像系応答関数を読み出す方法でもよい。
【0040】
次にステップS303では、画像領域分割部1105は、ステップS302で生成した各仮分割領域の領域分割用の撮像系応答関数を用いて、各仮分割領域での評価値(以下、分割評価値という)Iを算出する。
【0041】
本実施例では、分割評価値Iは、撮像系応答関数の1つである撮像系MTF(Modulation Transfer Function、変調伝達関数)を用いて、以下の式(1)により算出する。
【0042】
【数1】
【0043】
ただし、ξは空間周波数であり、MTFは撮像系MTFである。ξ1とξ2はそれぞれ、空間周波数の上限下限を設定する定数である。分割評価値Iは、撮像系MTFを空間周波数で積分したものである。
【0044】
式(1)で表される分割評価値Iを各仮分割領域について算出し、これら評価値を比較することは、領域分割用の撮像系応答関数の変化(差)を評価することに相当する。このため、次に説明するように、領域分割用の撮像系応答関数の変化に応じた画像領域の分割結果を得ることが可能になる。
【0045】
次にステップS304では、画像領域分割部1105は、ステップS303により算出された各仮分割領域の分割評価値を比較する。具体的には、仮分割領域の分割評価値の差を求め、該差の絶対値が予め設定した閾値(所定値)α以上になるか否かを判定する。そして、差の絶対値が閾値α以上になる分割評価値を有する仮分割領域の組み合わせが少なくとも1つある場合は、ステップS305に進む。
【0046】
ステップS305では、画像領域分割部1105は、仮分割領域を正式な分割領域に設定する。そして、画像領域分割部1105は、このようにして得られた各分割領域について(つまりは、分割領域ごとに)ステップS301からステップS305の処理を繰り返す。
【0047】
一方、ステップS304において、差の絶対値が閾値α以上になる分割評価値を有する仮分割領域の組み合わせが1つもない場合には、画像領域分割部1105は、仮分割領域を正式な分割領域として設定しない。この場合、ステップS301にて仮分割領域に分割する前の注目画像領域をシフトインバリアント領域とする。
【0048】
画像領域分割部1105は、シフトインバリアント領域となった分割領域については、画像領域分割処理を終了する。さらに、分割された全ての画像領域がシフトインバリアント領域になると、画像領域分割処理を終了する。
【0049】
領域分割用の撮像系応答関数の変化が画像全体(全画像領域)の中心では小さく、周辺ほど大きい場合には、最終的な全画像領域701の領域分割結果は図3(b)に示すようになる。図3(b)では、領域分割用の撮像応答関数の変化に合わせて分割領域の大きさを変化させた分割結果が得られている。
【0050】
図2に戻り、ステップS204では、システム制御回路108は、撮像系応答関数選択部1103に、撮像系応答関数記憶部1102に記憶されている複数の撮像系応答関数の中から、ステップS202で取得した撮像条件に対応する撮像系応答関数を選択させる。
【0051】
ここで、撮像系応答関数記憶部1102への撮像系応答関数の記憶方法と、撮像条件に対応する撮像系応答関数の選択方法について説明する。
【0052】
撮像系応答関数とは、光学系に入射した光がデジタル画像として表示、記録されるまでに経る撮像系での劣化過程を表したものである。撮像系応答関数の表現方法としては、点像分布関数PSF(Point Spread Function)や光学的伝達関数OTF(Optical Transfer Function)等がある。本実施例では、撮像系応答関数としてPSFを用いる場合について説明するが、その他の場合でも同様の処理を適用することができる。
【0053】
PSFは、点光源を撮像系で撮像した場合に、最終的にどのような画像となって見えるかを光の強度と広がりについての3次元形状として表現したものである。そのため、撮像時の撮像条件によっては、PSFの形状は大きく異なったものとなる。例えば、撮像時に絞りのF値を大きくすればPSFは広くなだらかな形状になり、逆にF値を小さくすればPSFは狭く急峻な形状になる。このように、撮像条件が異なるとPSFの形状も変化するため、ある特定の撮像条件におけるPSFや、ガウシアン形状で近似したPSFだけを撮像装置に記憶していたのでは、多様な撮像条件の全てについて良好な高精細画像を生成することはできない。
【0054】
そこで、本実施例では、撮像系が取り得る範囲の全ての撮像条件におけるPSFを撮像系応答関数記憶部1102に記憶しておくことにより、どのような撮像条件においても良好な高精細画像を生成可能なPSFを用いることができるようにする。つまり、撮像系応答関数記憶部1102は、撮像条件が設定可能な最小単位ごとに、撮影画像の各画素についてのPSFを記憶する。
【0055】
撮像条件ごとのPSFは、例えば撮像装置の工場出荷時に計測したものを記憶させてもよいし、光学設計情報を用いた光線追跡により撮像条件ごとのPSFを算出して記憶させてもよい。また、ユーザがテストパターンを撮像し、そこからPSFを算出したり、撮像装置に対応したPSFのデータをネットワークを介してダウンロードして記憶させたりする等、いかなる記憶方法であってもよい。
【0056】
そして、撮像系応答関数選択部1103は、ステップS202において取得した撮像条件に対応したPSFを、撮像系応答関数記憶部1102に記憶されているPSFの中から選択する。ここで、PSFの選択に使用する撮像条件には、前述した絞り値、撮影倍率および焦点距離以外に、被写体fからの光(撮像光)の波長もある。波長ごとのPSFを記憶している場合には、例えば撮像装置が3板式のカラーカメラであれば、撮像系応答関数記憶部1102より、RGBの各波長に対応するPSFを選択する。さらに、白黒カメラにカラーフィルタを装着して撮影する場合等であれば、カラーフィルタの分光特性に対応した波長におけるPSFを選択するようにすればよい。
【0057】
以上のようにして、撮像系応答関数選択部1103によって選択された撮像条件に対応したPSFは、高精細画像処理部1104へと送られる。
【0058】
そして、図2のステップS205において、システム制御回路108は、高精細画像処理部1104に、撮影画像に対する高精細化処理を行わせる。このステップでの処理の詳細を、図4のフローチャートを用いて説明する。ここでは、高精細化処理として、再構成型超解像処理を行う。再構成型の超解像処理は、撮像系の劣化過程をモデル化し、その逆問題を解くことで劣化過程を経る前の高解像画像を再構成するものである。
【0059】
まず、超解像処理を行う画像をリファレンス画像とし、該リファレンス画像と同じ撮影シーンに対して微小に被写体に対する視点位置を変化させた撮像により得られた複数の画像(視点画像)を画像処理演算部1103に入力する。以下の説明において、リファレンス画像と視点位置が異なる複数の画像をいずれも撮影画像といい、さらにこれらをまとめて撮影画像群と称する。また、撮影画像数をNとする。このとき、撮像画像群に含まれる画像数は、撮像系の性能、超解像処理の拡大倍率および超解像処理後の画像(超解像画像)の用途に応じて適宜設定される。
【0060】
ステップS401では、高精細画像処理部1104は、入力されたリファレンス画像を設定された拡大倍率に応じて拡大処理し、最初の推定高精細画像(以下、初期推定高精細画像という)を生成する。拡大処理としては、単純な線形補間やスプライン補間等、どのような方法を使用してもよい。
【0061】
次にステップS402では、高精細画像処理部1104は、ステップS203での画像領域分割処理の結果(画像領域分割情報)、各分割領域に対応する領域分割用の撮像系応答関数および初期推定高精細画像を用いて撮像系による劣化過程を演算する。これにより、低解像画像を生成する。撮像系による劣化過程の演算には、該劣化過程をモデル化した観測モデルを使用する。観測モデルは、撮像系応答関数の1つであるPSF(Point Spread Function、点像分布関数)を用いて以下のように与えられる。
【0062】
【数2】
【0063】
ただし、Xは高精細画像であり、Y′kは劣化過程後のk番目の低解像画像である。*は畳み込み演算を示し、nは付加的なノイズを示す。また、PSFkは、撮影画像群のうちk番目の撮影画像に対する撮像系応答関数を表す。劣化過程の演算は、式(2)の右辺の第一項を用いる。なお、観測モデルは上記計算式で表されるものに限られず、撮像系の特性や超解像処理のアルゴリズムに合わせて適宜決定すればよい。
【0064】
劣化過程を演算する際に、画像領域分割情報を用い、演算する画素が含まれる分割領域に対応する撮像系応答関数を用いて式(2)を演算する。
【0065】
次にステップS403では、高精細画像処理部1104は、劣化過程処理を演算した低解像画像群を用いて評価値(以下、超解像評価値という)Jを、以下の式(3)により算出する。
【0066】
【数3】
【0067】
ただし、Ykはk番目の撮影画像を、Y′kはk番目の低解像画像を、αは拘束パラメータをそれぞれ示す。また、cは推定高精細画像に対する事前情報を表す行列を示し、‖‖2はL2ノルムを示す。
【0068】
超解像評価値Jの第一項は、撮影画像と推定高精細画像を劣化させて作成した低解像画像とを比較することで、推定高精細画像の評価を行う項である。超解像評価値Jの第二項は、推定高精細画像の尤もらしさを評価する項であり、推定高精細画像に対する既知の情報や性質を使用して評価を行う。拘束パラメータαは、画像や撮像系に合わせて適宜設定される。行列cは、例えばハイパスフィルタを用いる。
【0069】
なお、超解像評価値Jとしては式(3)に示されるもの以外に、Sina Farsiu他による下記の文献Aにて説明されているバイラテラルフィルタを用いて評価したり、色の相関を用いて評価したりしてもよい。
[文献A]“Multiframe Demosaicing and Super-Resolution of ColorImages”(IEEE TRANSACTION ON IMAGE PROCESSING,VOL.15,NO.1,JANUARY 2006)
次にステップS404では、高精細画像処理部1104は、ステップS403で算出した超解像評価値Jが閾値(所定値)βより小さいか否かを判定する。閾値βは、画像の種類、撮像系の性能および高精細化処理の目的に応じて適宜設定される。J≧βである場合には、ステップS405に進み、J<βである場合には、高精細化処理を終了し、推定高精細画像を超解像画像とする。その後、図2のステップS206に進む。
【0070】
ステップS405では、高精細画像処理部1104は、ステップS403で算出した超解像評価値Jを最適化する方向に推定高精細画像を更新する。更新方法としては、どのような方法を用いてもよいが、例えば最急降下法を用いて、
【0071】
【数4】
【0072】
として更新すればよい。ここで、X′は更新後の高精細画像を示し、γは更新ステップサイズを設定する定数である。以下、X′を推定高精細画像としてステップS402からの処理をJ<βとなるまで繰り返し行い、超解像画像を得る。そして、ステップS206に進む。
【0073】
図2のステップS206では、システム制御回路108は、ステップS205で生成された高精細画像を出力する処理を行う。まず、視覚補正部111に高精細画像に対する前述した画像補正処理を行わせる。次に、圧縮部112に画像補正処理後の高精細画像の圧縮処理を行わせる。そして、圧縮後の高精細画像を画像出力部113から出力させる。
【0074】
以上説明したように、本実施例では、撮影画像を領域分割用の撮像系応答関数を用いて得られる分割評価値に差を持つ複数の領域に分割する。そして、領域ごとの高精細化処理において、予め記憶された撮像条件ごとの撮像系応答関数から、撮影画像の撮像時の撮像条件に対応した撮像系応答関数を選択して用いる。これにより、分割された領域ごとに撮像条件に適した撮像系応答関数を用いて高精細化処理を行うことが可能となり、単一のPSFを用いた場合と比較して良好な高精細画像を生成することができる。
【実施例2】
【0075】
図5には、本発明の実施例2である撮像装置1′の構成を示している。本実施例では、離散的に記憶してある撮像系応答関数から、実際の撮像条件に対応した撮像系応答関数を生成する。
【0076】
図5において、図1に示した構成要素と共通する構成要素については、図1と同符号を付す。本実施例の撮像装置1′は、図1に示した構成に加えて、撮像系応答関数生成部4101を有する。以下、本実施例の撮像装置の動作について、図6に示すフローチャートを用いて説明する。
【0077】
ステップS501〜ステップS503はそれぞれ、図2に示したステップS201〜S203と同じである。ここで、本実施例における撮像系応答関数記憶部1102は、撮像系応答関数を予め定められた撮像条件の間隔で離散的に記憶しておくものとする。言い換えれば、撮像系応答関数記憶部1102は、複数の代表的な撮像条件に対応する複数の撮像系応答関数を記憶している。
【0078】
ステップS504では、システム制御回路108は、撮像系応答関数選択部1103に、ステップS502で取得した撮像時の撮像条件に対応した撮像系応答関数を選択させる。ただし、本実施例では、撮像系応答関数記憶部1102に撮像系応答関数が離散的に記憶されているために、ステップS502で取得した撮像条件に直接該当する撮像系応答関数が存在しない場合がある。この場合、撮像系応答関数選択部1103は、離散的に記憶されている撮像系応答関数の中から撮像時の撮像条件に近い撮像系応答関数を、1つまたは複数選択し、後段の撮像系応答関数生成部4101へと伝送する。
【0079】
そして、ステップS504では、システム制御回路108は、撮像系応答関数生成部4101に、撮像時の撮像条件に近い撮像系応答関数を用いて、撮像時の撮像条件に対応した撮像系応答関数を生成させる。
【0080】
撮像時の撮像条件に対応した撮像系応答関数の生成方法の1つとして、複数の撮像系応答関数を用いた補間処理が挙げられるが、ここでは、線形補間処理を行う方法について説明する。また、ここでは、撮像系応答関数としてPSFを用いる場合について説明するが、それ以外の場合でも同様の処理を適用することができる。
【0081】
線形補間では、撮像条件の変化に応じて線形的にPSFが変化しているとして、2つのPSFの間に存在するPSFを算出する。撮像系応答関数選択部1103によって、撮像条件の1つである絞りのF値aに対応する撮像系応答関数PSF_aと、F値bに対応する撮像系応答関数PSF_bとが選択されたとする。
【0082】
図7(a)にPSF_aの形状を示し、図7(b)にPSF_bの形状を示す。PSF_aはF値が小さい場合のPSFを示しており、急峻な形状を有する。それに対して、PSF_bは、F値が大きい場合のPSFを示しており、PSF_aに比べて広がった形状を有する。これらの図から、F値が異なるとPSFの形状も大きく異なることが分かる。
【0083】
このため、例えば、F値aに対応するPSF_aを用いて実際のPSF形状がPSF_bであるF値bの画像に対して高精細化処理を行ったとしても、撮像時の撮像条件に正しく対応したPSFではないため、良好な高精細画像を得ることはできない。したがって、高精細化処理を行う際には、撮像条件に対応したPSFを使用する必要があり、撮像系応答関数記憶部1102に対応するPSFがない場合には、補間処理によって対応するPSFを生成する必要がある。
【0084】
線形補間処理の一例として、ステップS502において取得した絞りのF値cがF値aとF値bの間にあるとした場合の該F値cに対応する撮像系応答関数PSF_cを算出するための計算式は以下のようになる。
【0085】
【数5】
【0086】
ここで、式(5)のαは、F値aとF値cの差分とF値bとF値cの差分との比率を表したものであり、PSF_aおよびPSF_bに対してF値cからの差分に応じた重み付けを行うことを表している。
【0087】
図8に、F値cがF値aとF値bのちょうど中間にある場合、つまりα=0.5のときに式(5)を適用した結果を示す。図8より、PSF_cは、PSF_aとPSF_bの中間の形状を有しており、線形補間によりF値aとF値bの中間にあるF値cに対応するPSFが生成されていることが確認できる。
【0088】
以上より、撮像系応答関数選択部1103により選択された2つのPSFに対して線形補間を行うことで、撮像時の撮像条件に対応したPSFを生成することができる。
【0089】
本実施例においては、補間処理として線形補間処理を行う場合について説明したが、その他にもスプライン補間や放物線補間等の他の補間処理を行ってもよい。
【0090】
また、撮像時の撮像条件を反映した撮像系応答関数の生成方法についての他の例として、選択した撮像系応答関数を撮像時の撮像系応答関数に補正するための補正関数を適用する補正処理がある。
【0091】
ここでは、補正関数の例としてガウシアン関数を用いて説明する。2次元のガウシアン関数G(x,y)は以下の式により表すことができる。
【0092】
【数6】
【0093】
ここで、G(x,y)は、図9に示すような凸型の形状を有しており、Aはピーク値の大きさ、BxおよびByはそれぞれx方向およびy方向についてのピーク位置の原点からの偏移量である。また、Cは凸形状の広がりを調節する係数である。
【0094】
そして、上記のガウシアン関数G(x,y)を用いて、ステップS504で選択したPSFに対して補正処理を行う。ステップS504で取得した撮像系応答関数PSF_IN(x,y)に対して、ガウス関数G(x,y)を適用して、撮像時の撮像系応答関数PSF_OUT(x,y)を生成するときの計算式は次式のようになる。
【0095】
【数7】
【0096】
ここで、式(7)の右辺はPSF_IN(x,y)とG(x,y)の同一座標位置の値同士で乗算を行うことを表している。これにより、G(x,y)の形状に応じてPSF_IN(x,y)の形状を補正することができる。
【0097】
本実施例では、撮像条件として絞りのF値に注目した場合について説明するが、他の撮像条件についても同様である。ここでは、例として図7(b)に示したPSF_bに対して、図9に示したガウシアン関数Gを用いて補正を行うことで、図7(a)のPSF_aと同等のPSFを生成する。
【0098】
図9は、式(6)においてA=1,Bx=By=0,C=0.3とした場合のガウシアン関数Gの形状を示す。そして、図7(b)のPSF_bをPSF_INとして、図9のガウシアン関数Gを用いて式(7)により生成したPSFの形状を、図10にPSF_OUTとして示す。
【0099】
図10より、ガウシアン関数Gを用いて補正処理を行うことで、図7(a)に示すPSF_aと同等のPSFが生成できていることが確認できる。
【0100】
ここで、補正処理の際に用いるガウシアン関数の係数A,Bx,By,Cの決定方法としては、例えばステップS504にて選択したPSFに対応する撮像条件と、実際の撮像時の撮像条件との差分から線形的に決定する方法がある。さらに、ガウシアン関数の各係数の決定方法についての他の例としては、どのように係数を設定すると、どのような撮像条件に対応したPSFが生成できるかを事前に算出もしくは計測しておく方法もある。これらの方法により得られた各係数は、ルックアップテーブルとして記憶しておいたり、係数にフィッティングさせた多次元関数として記憶しておいたりすればよい。
【0101】
本実施例においては、補正関数としてガウシアン関数を用いた方法について説明したが、その他にもsinc関数等を使用する方法もある。また、式(7)では、補正方法としてPSFと補正関数を画素位置毎に積算する方法を示したが、畳み込み積分を行っても同等の効果を得ることができる。
【0102】
さらに、撮像時の撮像条件に対応したPSFの生成方法についての他の例として、選択したPSFに対して、撮影時のPSFへと補正するための補正係数を適用する方法がある。
【0103】
例えば、PSFの補正対象としては、ピーク値や半値幅等が挙げられるが、このような補正対象についての補正係数を取得するための一例として、事前に計測を行う方法が挙げられる。
【0104】
まず、ある撮像条件におけるPSFを一つもしくは複数個選択し、それを基準PSFとする。そして、基準PSF以外の撮像条件におけるPSFと、基準PSFとの相違度を求める。相違度は、例えば前記のピーク値や半値幅の差分や拡大比率等で算出すればよく、その相違度を打ち消すような値が補間係数となる。このときに得られた各係数は、ルックアップテーブルとして記憶しておいたり、係数にフィッティングさせた多次元関数として記憶しておいたりすればよい。これにより、撮像系応答関数記憶部1102には、上記各係数と基準PSFだけを記憶しておけばよいことになる。
【0105】
そして、ステップS504において選択された基準PSFに対して、ステップS502において取得した撮像条件に対応した補正係数を用いて補正処理を行うことにより、撮像時の撮像条件に対応したPSFを生成することが可能となる。
【0106】
以上のように、撮像条件ごとの撮像系応答関数を多数記憶せず、ある一定の間隔を持った離散的な撮像条件に対応する撮像系応答関数を記憶しておき、それらに対して補間処理や補正処理を施すことで、撮像時の撮像条件に対応した撮像系応答関数を生成できる。これにより、撮像系応答関数記憶部1102で必要となる記憶容量を削減しつつ、撮像条件に対応した撮像系応答関数を用いた良好な高精細画像を生成することができる。
【0107】
図5のステップS506およびステップS507は、図2に示したステップS205およびステップS206と同じである。
【実施例3】
【0108】
上記各実施例では、撮像装置に、画像処理装置110を内蔵した場合について説明したが、本発明の実施例はこれに限らない。
【0109】
例えば図11に示すように、撮像装置1801で得られた撮影画像を、パーソナルコンピュータ1802に送信する。送信方法は、ケーブル方式、無線方式のいずれでもよく、インターネットやLANを介して送信してもよい。
【0110】
そして、パーソナルコンピュータ1802において、受信した撮影画像に対して、実施例1,2にて説明した画像領域分割処理や高精細化処理を行ってもよい。この場合、パーソナルコンピュータが、画像処理装置として機能する。
【0111】
さらに、上記実施例1,2にて説明した画像処理プログラムは、これを格納した半導体メモリや光ディスク等の記憶媒体やインターネット、LANを介して撮像装置やパーソナルコンピュータにインストールされるようにしてもよい。
【0112】
以上説明した各実施例は代表的な例にすぎず、本発明の実施に際しては、各実施例に対して種々の変形や変更が可能である。
【0113】
以上説明した各実施例は代表的な例にすぎず、本発明の実施に際しては、各実施例に対して種々の変形や変更が可能である。
【産業上の利用可能性】
【0114】
様々な撮像条件においても撮影画像の十分な高精細化処理が行える画像処理装置を提供できる。
【符号の説明】
【0115】
1,1′ 撮像装置
100 結像光学系
102 撮像素子
108 システム制御回路
110 画像処理装置
1102 撮像系応答関数記憶部
1103 撮像系応答関数選択部
1104 高精細画像処理部
1105 画像領域分割部
【特許請求の範囲】
【請求項1】
撮像系により生成された入力画像を、前記撮像系の応答関数を用いて得られる評価値に差を持つ複数の領域に分割する領域分割手段と、
前記各領域に対して、該領域ごとに異なる前記応答関数を用いた画像精細度を増加させるための画像処理を行う処理手段とを有し、
前記処理手段は、前記撮像系における前記入力画像の生成時の撮像条件に対応する前記応答関数であって、記憶手段から読み出した、または演算により生成した応答関数を用いて前記画像処理を行うことを特徴とする画像処理装置。
【請求項2】
前記撮像条件は、前記撮像系の絞り値、撮像倍率、焦点距離および撮像光の波長のうち少なくとも1つであることを特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記記憶手段は、複数の前記撮像条件に対応する前記応答関数を記憶しており、
前記処理手段は、前記入力画像の生成時の撮像条件が前記複数の撮像条件と異なるときは、該記憶手段に記憶されている前記応答関数を用いた補間処理または補正処理により前記画像処理に用いる前記応答関数を生成することを特徴とする請求項1又は2に記載の画像処理装置。
装置。
【請求項4】
撮像系と、
請求項1から3のいずれか一項に記載の画像処理装置とを有することを特徴とする撮像装置。
【請求項5】
コンピュータに、
撮像系により生成された入力画像を、前記撮像系の応答関数を用いて得られる評価値に差を持つ複数の領域に分割するステップと、
前記各領域に対して、該領域ごとに異なる前記応答関数を用いた画像精細度を増加させるための画像処理を行う画像処理ステップとを有し、
前記画像処理ステップにおいて、前記撮像系における前記入力画像の生成時の撮像条件に対応する前記応答関数であって、記憶手段から読み出した、または演算により生成した応答関数を用いて前記画像処理を行うことを特徴とする画像処理プログラム。
【請求項6】
請求項5に記載の画像処理プログラムを格納したことを特徴とする記憶媒体。
【請求項1】
撮像系により生成された入力画像を、前記撮像系の応答関数を用いて得られる評価値に差を持つ複数の領域に分割する領域分割手段と、
前記各領域に対して、該領域ごとに異なる前記応答関数を用いた画像精細度を増加させるための画像処理を行う処理手段とを有し、
前記処理手段は、前記撮像系における前記入力画像の生成時の撮像条件に対応する前記応答関数であって、記憶手段から読み出した、または演算により生成した応答関数を用いて前記画像処理を行うことを特徴とする画像処理装置。
【請求項2】
前記撮像条件は、前記撮像系の絞り値、撮像倍率、焦点距離および撮像光の波長のうち少なくとも1つであることを特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記記憶手段は、複数の前記撮像条件に対応する前記応答関数を記憶しており、
前記処理手段は、前記入力画像の生成時の撮像条件が前記複数の撮像条件と異なるときは、該記憶手段に記憶されている前記応答関数を用いた補間処理または補正処理により前記画像処理に用いる前記応答関数を生成することを特徴とする請求項1又は2に記載の画像処理装置。
装置。
【請求項4】
撮像系と、
請求項1から3のいずれか一項に記載の画像処理装置とを有することを特徴とする撮像装置。
【請求項5】
コンピュータに、
撮像系により生成された入力画像を、前記撮像系の応答関数を用いて得られる評価値に差を持つ複数の領域に分割するステップと、
前記各領域に対して、該領域ごとに異なる前記応答関数を用いた画像精細度を増加させるための画像処理を行う画像処理ステップとを有し、
前記画像処理ステップにおいて、前記撮像系における前記入力画像の生成時の撮像条件に対応する前記応答関数であって、記憶手段から読み出した、または演算により生成した応答関数を用いて前記画像処理を行うことを特徴とする画像処理プログラム。
【請求項6】
請求項5に記載の画像処理プログラムを格納したことを特徴とする記憶媒体。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【公開番号】特開2012−3454(P2012−3454A)
【公開日】平成24年1月5日(2012.1.5)
【国際特許分類】
【出願番号】特願2010−137033(P2010−137033)
【出願日】平成22年6月16日(2010.6.16)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
【公開日】平成24年1月5日(2012.1.5)
【国際特許分類】
【出願日】平成22年6月16日(2010.6.16)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
[ Back to top ]