(58)【調査した分野】(Int.Cl.,DB名)
前記合成手段は、前記複数の領域のうちの第1の領域の前記コントラスト値の変化量が予め定められた第1の閾値以下であり、かつ、前記第1の領域の近傍に前記コントラスト値の変化量が第2の閾値よりも大きい領域が存在しない場合は、前記第1の領域の前記合成比率を、前記第1の領域の前記コントラスト値に基づいて設定することを特徴とする請求項1に記載の画像処理装置。
前記合成手段は、前記複数の領域のうちの第3の領域の前記コントラスト値の変化量が前記第1の閾値より大きい場合は、前記第3の領域の前記合成比率を、前記第3の領域の前記コントラスト値に基づいて設定することを特徴とする請求項1乃至3のいずれか1項に記載の画像処理装置。
【発明を実施するための形態】
【0010】
以下では、添付の図面を参照しながら、本発明の好適な実施形態について詳細に説明する。
【0011】
(第1の実施形態)
図1は本実施形態に係る画像処理装置としてのデジタルカメラの構造を示すブロック図である。デジタルカメラ100は、静止画を撮像することができ、かつ、合焦位置の情報を記録し、コントラスト値の算出および画像の合成が可能なものである。さらに、デジタルカメラ100は、撮像して保存した画像、または、外部から入力した画像に対して、拡大処理または縮小処理を行うことができる。
【0012】
制御部101は、例えばCPUやMPUなどのシグナルプロセッサであり、予め後述するROM105に内蔵されたプログラムを読み出しながら、デジタルカメラ100の各部分を制御する。たとえば、後述するように、制御部101が、後述する撮像部104に対して撮像の開始と終了について指令を出す。または、後述する画像処理部107に対して、ROM105に内蔵されたプログラムに基づいて、画像処理の指令を出す。ユーザによる指令は、後述する操作部110によってデジタルカメラ100に入力され、制御部101を通して、デジタルカメラ100の各部分に達する。
【0013】
駆動部102は、モーターなどによって構成され、制御部101の指令の下で、後述する光学系103を機械的に動作させる。たとえば、制御部101の指令に基づいて、駆動部102が光学系103に含まれるフォーカスレンズの位置を移動させ、光学系103の焦点距離を調整する。
【0014】
光学系103は、ズームレンズ、フォーカスレンズ、および絞りなどにより構成される。絞りは、透過する光量を調整する機構である。レンズの位置を変えることによって、合焦位置を変えることができる。
【0015】
撮像部104は、光電変換素子であり、入射された光信号を電気信号に変換する光電変換を行うものである。たとえば、撮像部104に、CCDセンサやCMOSセンサなどを適用することができる。撮像部104は、動画撮像モードを設け、時間的に連続する複数の画像を動画の各々のフレームとして、撮像することができる。
【0016】
ROM105は、記録媒体としての読み出し専用の不揮発性メモリであり、デジタルカメラ100が備える各ブロックの動作プログラムに加え、各ブロックの動作に必要なパラメータ等を記憶している。RAM106は、書き換え可能な揮発性メモリであり、デジタルカメラ100が備える各ブロックの動作において出力されたデータの一時的な記憶領域として用いられる。
【0017】
画像処理部107は、撮像部104から出力された画像、あるいは後述する内蔵メモリ109に記録されている画像信号のデータに対して、ホワイトバランス調整、色補間、フィルタリングなど、様々な画像処理を行う。また、撮像部104が撮像した画像信号のデータに対して、JPEGなどの規格で、圧縮処理を行う。
【0018】
画像処理部107は、特定の処理を行う回路を集めた集積回路(ASIC)で構成される。あるいは、制御部101がROM105から読み出したプログラムに従って処理することで、制御部101が画像処理部107の機能の一部または全部を兼用するようにしてもよい。制御部101が画像処理部107の全ての機能を兼用する場合には、画像処理部107をハードウェアとして有する必要はなくなる。
【0019】
表示部108は、RAM106に一時保存されている画像、または、後述する内蔵メモリ109に保存されている画像、あるいは、デジタルカメラ100の設定画面などを表示するための液晶ディスプレイや有機ELディスプレイなどである。
【0020】
内蔵メモリ109は、撮像部104が撮像した画像や画像処理部107の処理を得た画像、および、画像撮像時の合焦位置の情報などを記録する場所である。内蔵メモリの代わりに、メモリカードなどを用いてもよい。
【0021】
操作部110は、たとえば、デジタルカメラ100につけるボタンやスイッチ、キー、モードダイアルなど、あるいは、表示部108に兼用されるタッチパネルなどである。ユーザによる指令は、操作部110を経由して、制御部101に達する。
【0022】
図2は、本実施形態における合成画像の生成について説明するためのフローチャートである。ステップS201では、撮像部104は、ピント位置の異なる複数の画像を撮像する。ステップS202では、制御部101は、ステップS201で撮像部104が撮像した複数の画像に対して位置合わせを行う。ステップS203で、画像処理部107は、位置合わせを行った後の画像に対して合成を行い、合成画像を生成する。以下では、それぞれのステップについて詳細に説明する。
【0023】
図3は、本実施形態におけるステップS201での撮像について説明するためのフローチャートである。
【0024】
ステップS301で、制御部101は、ピント位置の設定を行う。たとえば、ユーザは表示部108が兼用するタッチパネルを通して合焦位置を指定し、その合焦位置に相当するピント位置の光軸方向の前後に等間隔に複数のピント位置を指定する。同時に、制御部101は、設定したピント位置において、距離順に撮像順番を決める。
【0025】
ステップS302で、撮像部104は、ステップS301で設定したピント位置のうち、未撮像のものの中で、撮像順番が最も先のピント位置において撮像する。
【0026】
ステップS303で、制御部101は、ステップS301で設定したすべてのピント位置において撮像を行ったかどうかについて判断する。すべてのピント位置に撮像した場合は、このフローチャートでの処理を終了し、まだ撮像していないピント位置があれば、ステップS302に戻る。
【0027】
図4は、本実施形態におけるステップS202での位置合わせについて説明するためのフローチャートである。
【0028】
ステップS401では、制御部101は、ステップS201で撮像部104が撮像した画像のうちから、位置合わせの基準画像を取得する。位置合わせの基準画像は、撮像順番が最も早いものとする。あるいは、ピント位置を変えながら撮像することで、わずかながら撮像された画像間で画角が変化するため、撮像した画像の中で画角が最も狭いものにしてもよい。
【0029】
ステップS402では、制御部101は、位置合わせの処理の対象画像を取得する。対象画像は、ステップS401で取得した基準画像以外の画像で、位置合わせの処理が済んでいないものとする。制御部101は、撮像順番が最も早いものを基準画像とするならば、撮像した順番で順次に対象画像を取得すればよい。
【0030】
ステップS403では、制御部101は、基準画像と対象画像との位置のずれ量を算出する。算出方法の一例は、以下に述べる。まず、制御部101は、基準画像に、複数のブロックを設定する。制御部101は、各々のブロックのサイズが同じになるように設定することが好ましい。次に、制御部101は、対象画像の、基準画像のそれぞれのブロックと同じ位置に、基準画像のブロックよりも広い範囲を、探索範囲を設定する。最後に、制御部101は、対象画像のそれぞれの探索範囲に、基準画像のブロックとの輝度の差分絶対値和(Sum of Absolute Difference、以下、SADをいう)が最小となる対応点を算出する。制御部101は、基準画像のブロックの中心と前述した対応点から、ステップS403でいう位置のずれをベクトルとして算出する。制御部101は、前述する対応点の算出において、SADのほかに、差分二乗和(Sum of Squared Difference、以下SSDをいう)や正規化相互相関(Normalized Cross Correlation、以下NCCをいう)などを用いてもよい。
【0031】
ステップS404で、制御部101で、基準画像と対象画像との位置のずれ量から変換係数を算出する。制御部101は、変換係数として、例えば射影変換係数を用いる。ただし、変換係数として射影変換係数だけに限定するわけではなく、アフィン変換係数や水平垂直シフトのみの簡略化した変換係数を用いてもよい。
【0032】
ステップS405で、画像処理部107は、ステップS404で算出した変換係数を用いて対象画像に対して変換を行う。
【0033】
たとえば、制御部101は、(式1)に示した式を用いて変形を行うことができる。
【0035】
(式1)では、(x´、y´)は変形を行った後の座標を示し、(x、y)は変形を行う前の座標を示す。行列AはステップS404で制御部101が算出した変形係数を示す。
【0036】
ステップS406で、制御部101は、基準画像以外のすべての画像に対して位置合わせを行ったかどうかについて判断する。基準画像以外のすべての画像に対して位置合わせを行った場合は、このフローチャートでの処理を終了し、まだ処理していない画像があれば、ステップS402に戻る。
【0037】
図5は、本実施形態におけるステップS203での画像の合成について説明するためのフローチャートである。
【0038】
ステップ501で、画像処理部107は、位置合わせを行った後のそれぞれの画像(基準画像を含む)に対してコントラスト値を算出する。コントラスト値の算出方法の一例としては、たとえば、まず、画像処理部107は、それぞれの画素の色信号Sr、Sg、Sbから、下記の(式2)を用いて輝度Yを算出する。
Y = 0.299Sr + 0.587Sg + 0.114Sb・・・(式2)
【0039】
次に、3×3の画素の輝度Yの行列Lに、下記の(式3)乃至(式5)に示したように、ソーベルフィルタを用いてコントラスト値Iを算出する。
【0043】
また、上述のコントラスト値の計算方法は一例にすぎず、たとえば、使用するフィルタをラプラシアンフィルタ等のエッジ検出フィルタや所定の帯域を通過するバンドパスフィルタを用いることも可能である。
【0044】
ステップS502で、画像処理部107は、合成マップを生成する。合成マップの生成方法としては、画像処理部107は、それぞれの画像の同じ位置にある画素のコントラスト値を比較し、コントラスト値の最も高い画素の合成比率を100%とし、同じ位置にあるほかの画素の合成比率を0%とする。画像処理部107は、こうした合成比率の設定を、画像のすべての位置に対して行う。
【0045】
ステップS503で、制御部101は、ステップS502で画像処理部107が生成した合成マップに対して補正を行う。具体的な補正方法は後述する。
【0046】
ステップS504では、画像処理部107は、ステップS503で制御部101が補正した合成マップに従い画素の置き換えを行い、合成画像を生成する。なお、このようにして算出した合成比率に対して、隣接画素間で合成比率が0%から100%に変化(あるいは100%から0%に変化)すると、合成境界での不自然さが目立つようになる。そのため、合成マップに対して所定の画素数(タップ数)を持つフィルタをかけ、隣接画素間で合成比率が急激に変化しないようにする。
【0047】
以下では、ステップS503での合成マップの補正について詳細に説明する。
【0048】
図6は、本実施形態におけるステップS503での合成マップの補正について説明するためのフローチャートである。ステップS601で、制御部101は、未処理の画素から着目画素を選定する。
【0049】
次に、ステップS602で、制御部101は、着目画素のコントラスト値の変化量を算出する。ここでいうコントラスト値の変化量を、位置合わせを行った後のそれぞれの画像(基準画像を含む)において、着目画素と同じ位置にある画素のうち、コントラスト値の最大値と最小値との差を指す。
【0050】
ステップS603で、制御部101は、ステップS602で算出したコントラスト値の変化量を予め定められた閾値と比較し、閾値以下であれば、ステップS604に進み、着目画素の合成比率の変更を行う。一方、閾値以下でなければ、ステップS605に進む。ここでは、制御部101は、コントラスト値の変化量が閾値以下の画素は、
図10の画素1001のように、被写体のエッジボケである可能性が高いと判断した。
【0051】
ステップS604で、制御部101は、着目画素の合成比率を変更する。ここで、制御部101は、着目画素の合成比率を、その近傍の、コントラスト値の変化量が閾値よりも大きい画素を参照して変更する。たとえば、制御部101は、着目画素の合成比率を、その近傍のコントラスト値の変化量が閾値よりも大きい画素のうち、最も大きいものの合成比率にする。または、その近傍のコントラスト値の変化量が閾値よりも大きい画素のうち、最も近いものの合成比率にする。このステップS604における閾値は、ステップS603で比較に用いた閾値と同じ値としてもよいし、ステップS603で比較に用いた閾値よりも大きな値としてもよい。近傍にコントラスト値の変化量が閾値より大きくなる画素が存在しなければ、その画素の近傍にはエッジが無く、その画素がエッジボケである可能性は低いとして、合成比率の補正は行わない。なお、ここでいう「近傍」の範囲については、後述する。
図8は、本実施形態におけるコントラスト値の変化量を説明するためのである。
図7(a)では、複数の画像の同じ位置にある画素711乃至715のコントラスト値と画像撮像時のピント位置との関係を示している。画素713がある画像を撮像したときのコントラスト値が最大であり、このピント位置においてこの画素はピントが合っていると判断し、このピント位置をベストピントとも呼ぶ。ここで、コントラスト値の最も大きい画素513のコントラスト値と、コントラスト値の最も小さい画素715のコントラスト値の差、つまり前述したコントラスト値の変化量を算出し、前述した閾値より大きいと仮定する。
【0052】
一方で、
図7(b)は、画素711乃至715のそれぞれの近傍にある同じ位置の画素721乃至725のコントラスト値とピント位置との関係を示している。
図7(b)では、画素725のコントラスト値が最も高いが、それと、コントラスト値の最も低い画素723のコントラスト値との差、つまり、コントラスト値の変化量は閾値以下とする。コントラスト値の変化量が閾値以下である場合、前述したように、制御部は、この画素はコントラスト値の小さな被写体の領域の位置にあり、周囲の被写体のエッジのボケの影響を受けている可能性があるとして、合成比率の変更を行う。変更の方法として、制御部101は、
図7(a)の画素711のベストピントとなるピント位置を、
図7(b)の画素723におけるベストピントと判断する。そして、制御部101は、このピント位置にある画素723の合成比率を100%にし、画素725を含むほかの画像の同じ位置の画素の合成比率を0%にする。このような変更は、
図10に例えると、画像処理部107は合成画像1000を作成するとき、
図10の画素1051の代わりに、画素1031を合成画像に使うことになり、エッジボケを防ぐことになる。
【0053】
ステップS605で、制御部101は、すべての画素を処理したかどうかについて判断する。すべての画素を処理した場合このフローを終了し、まだ処理していない画素があれば、ステップS601に戻る。
【0054】
なお、前述したように、上記処理は、
図7(a)に示した画素は
図7(b)に示した画素の近傍にあることを前提にしている。ここでいう「近傍」の判断は、点広がり関数(Point spread function、以下PSFをいう)を用いて行うことができる。
【0055】
図8は、本実施形態におけるPSFを説明するための図である。
図8では、横軸が画素の座標、縦軸がコントラスト値を示している。なお、実際のPSFは2次元的な広がりを持っているが、
図8では簡略のため、1次元で表現している。
図8(a)は理想的なレンズを用いて点像をベストピントの位置で結像させた場合のPSFを示している。
図8(b)では、ピント位置を動かしたデフォーカス状態(撮像面の位置がベストピントの位置から離れる状態)での結像は曲線820のようになり、像の広がる(ボケが広がる)画素数Nは距離821に示したようになる。
図8(c)では、さらにデフォーカス量が大きくなると結像は曲線830になり、像の広がる画素数Nは距離831になる。
【0056】
デフォーカス量(ピント位置の変更量)はステップS301での設定から計算することができるので、PSFに応じて像がどれだけ広がるかを計算することが可能である。前述した着目画素の「近傍」を、この画素数Nに収めるように設定するとよい。つまり、制御部101は、着目画素のコントラスト値の変化量が閾値以下であれば、予め計算したPSFに基づいて設定した範囲において、コントラスト値の変化量が閾値より大きい画素があるかどうかを確かめる。着目画素の近傍にあれば、制御部101は、前述した合成比率の変更を行う。
【0057】
なお、上述した近傍の決め方は一例にすぎず、様々な変更をすることができる。たとえば、PSFの広がりで得られた画素数Nで判断したうえで、さらに、被写体の距離情報を用いて判断する。つまり、
図7(a)と
図7(b)とに示した画素の被写体距離の差が所定量以下でないと、制御部101は、その2つの画素は「近傍」にあると判断しない。距離情報は公知の技術で算出することが可能で、一例として1つの画素に複数の光電変換部を有する撮像素子が取得するステレオ画像から算出することができる。
【0058】
さらに、上記の「近傍」と判断された画素のうち、コントラスト値の変化の特性を考慮することも可能である。たとえば、
図7(a)に示した画素はベストピントの位置でコントラスト値が最大で、ピント位置が変化するとコントラスト値が減少する特性を持っている。それに対して、エッジボケ画素は
図7(a)のベストピントの位置でコントラスト値が最小で、ピント位置が変化するとコントラスト値が増加する特性をもつ可能性が高い。そのため、着目画素のコントラスト値の変化特性と逆のコントラスト値の変化特性をもつ画素のみ用いて、着目画素の合成比率の補正を行うようにするようにしても良い。
【0059】
第1の実施形態によれば、画素のコントラスト値の変化量を計算し、閾値以下の画素の合成比率を変更することによって、エッジボケを低減することができる。
【0060】
(第2の実施形態)
第1の実施形態では、着目画素のコントラスト値の変化量が閾値以下である場合に、その着目画素の合成比率を変更したが、第2の実施形態では、着目画素のコントラスト値の変化量が閾値より大きい場合に、その周辺画素の合成比率を変更するものである。以下では、第2の実施形態について、第1の実施形態と異なる所を中心に説明する。なお、第1の実施形態と同様な所は省略する。
【0061】
図9は、本実施形態におけるステップS503での合成マップの補正について説明するためのフローチャートである。ステップS901で、制御部101は、未処理の画素から着目画素を選定する。
【0062】
ステップS902で、制御部101は、着目画素のコントラスト値の変化量を算出する。算出の方法は第1の実施形態のステップS602と同様である。
【0063】
ステップS903で、制御部101は、ステップS902で算出したコントラスト値の変化量が予め定められた閾値以上であれば、ステップS904に進み、閾値より小さければ、ステップS905に進む。ここでいう「閾値」は、第1の実施形態の合成マップの補正についての説明での「閾値」と異なるものである。
【0064】
ステップS904で、制御部101は、着目画素の合成比率を参照し、近傍画素の合成比率を変更する。たとえば、制御部101は、着目画素の近傍の画素のうちコントラスト値の変化量が閾値以下である画素の合成比率を、着目画素と同じ合成比率にする。ここで、その近傍の画素に対して、着目画素よりも近い位置に、コントラスト値の変化量が予め定められた閾値以上となる他の画素が存在するならば、その画素に基づく合成比率を優先するようにしてもよい。また、着目画素の近傍に、コントラスト値の変化量が閾値以下の画素となる画素が無い場合には、この近傍の範囲において合成比率の変更は行わない。ここでいう「近傍」の判断方法は、第1の実施形態のステップS604で説明した方法と同様でよい。
【0065】
ステップS905で、制御部101は、すべての画素を処理したかどうかについて判断する。すべての画素を処理した場合このフローを終了し、まだ処理していない画素があれば、ステップS901に戻る。
【0066】
ステップS903では、着目画素のコントラスト値が閾値以上である場合、ピント位置を変更することでエッジボケが広がる可能性が高く、近傍画素において単純にコントラスト値の最大値で合成比率を決定するとエッジボケした画像を出力する可能性がある。そのため、閾値以上のコントラスト値をもつ画素を検出した場合は、近傍にエッジボケの影響を受けやすいコントラスト値の変化量が小さな画素があれば、その画素の合成比率を着目画素と同じ合成比率に変更するようにする。
【0067】
第2の実施形態によれば、画素のコントラスト値の変化量を計算し、閾値以上の画素の近傍画素の合成比率を変更することによって、エッジボケを低減することができる。
【0068】
(その他の実施形態)
以上の実施形態は、デジタルカメラでの実施をもとに説明したが、デジタルカメラに限定するものではない。たとえば、撮像素子が内蔵した携帯機器などで実施してもよく、画像を撮像することができるネットワークカメラなどでもよい。
【0069】
なお、本発明は、上述の実施形態の1つ以上の機能を実現するプログラムを、ネットワークまたは記憶媒体を介してシステムまたは装置に供給し、そのシステムまたは装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読み出し作動させる処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。