以下、発明を実施するための最良の形態(以下、実施の形態と称する)について説明する。なお、説明は以下の順序で行う。
1.第1の実施の形態(ダイナミックレンジにより画像を分類し、ボケ度を検出する例)
2.第1の実施の形態の変形例
3.第2の実施の形態(ダイナミックレンジおよび画像のサイズにより画像を分類し、ボケ度を検出する例)
4.第2の実施の形態の変形例
5.第3の実施の形態(ダイナミックレンジおよび撮影場所により画像を分類し、ボケ度を検出する例)
6.第3の実施の形態の変形例
7.第4の実施の形態(白飛び対策を施してボケ度を検出する例)
8.第4の実施の形態の変形例
9.第5の実施の形態(ボケ度検出に用いるパラメータの学習処理)
10.第5の実施の形態の変形例
<1.第1の実施の形態>
まず、図1乃至図8を参照して、本発明を適用した画像処理装置の第1の実施の形態について説明する。
[画像処理装置の機能の構成例]
図1は、本発明を適用した画像処理装置の第1の実施の形態としての、画像処理装置1の機能の構成例を示すブロック図である。
画像処理装置1は、入力された画像(以下、入力画像と称する)内のエッジポイントにおいてボケが発生しているか否かを分析し、分析結果に基づいて、入力画像のボケ具合を検出する。画像処理装置1は、エッジマップ作成部11、ダイナミックレンジ検出部12、演算パラメータ調整部13、ローカルマックス作成部14、エッジポイント抽出部15、抽出量判定部16、エッジ分析部17、および、ボケ度検出部18を含むように構成される。
エッジマップ作成部11は、図2を参照して後述するように、スケール1乃至3の大きさが異なる3種類のブロック単位で入力画像のエッジの強度(以下、エッジ強度と称する)を検出し、検出したエッジ強度を画素値とするスケール1乃至3のエッジマップ(以下、エッジマップ1乃至3と称する)を作成する。エッジマップ作成部11は、作成したエッジマップ1乃至3を、ダイナミックレンジ検出部12およびローカルマックス作成部14に供給する。
ダイナミックレンジ検出部12は、図2を参照して後述するように、入力画像のエッジ強度の最大値と最小値の差であるダイナミックレンジを検出し、検出したダイナミックレンジを示す情報を演算パラメータ調整部13に供給する。
演算パラメータ調整部13は、図2を参照して後述するように、検出されたダイナミックレンジに基づいて、入力画像のボケ具合の検出に用いるエッジポイントの抽出量(以下、エッジポイント抽出量とも称する)が適切な値になるように、エッジポイントの抽出に用いる演算パラメータを調整する。演算パラメータは、エッジポイントであるか否かの判定に用いるエッジ基準値、および、エッジポイント抽出量が適切であるか否かの判定に用いる抽出基準値を含む。演算パラメータ調整部13は、設定したエッジ基準値を示す情報をエッジポイント抽出部15および抽出量判定部16に供給し、設定した抽出基準値を示す情報を抽出量判定部16に供給する。
ローカルマックス作成部14は、図2を参照して後述するように、エッジマップ1乃至3をそれぞれ所定の大きさのブロックに分割し、各ブロックの画素値の最大値を抽出することにより、スケール1乃至3のローカルマックス(以下、ローカルマックス1乃至3と称する)を作成する。ローカルマックス作成部14は、作成したローカルマックス1乃至3をエッジポイント抽出部15およびエッジ分析部17に供給する。
エッジポイント抽出部15は、図2を参照して後述するように、エッジ基準値、および、ローカルマックス1乃至3に基づいて、入力画像からエッジポイントを抽出し、抽出したエッジポイントの情報を示すスケール1乃至3のエッジポイントテーブル(以下、エッジポイントテーブル1乃至3と称する)を作成し、抽出量判定部16に供給する。
抽出量判定部16は、図2を参照して後述するように、エッジポイントテーブル1乃至3および抽出基準値に基づいて、エッジポイント抽出量が適切であるか否かを判定する。
抽出量判定部16は、エッジポイント抽出量が適切でないと判定した場合、エッジポイント抽出量が適切でないことを演算パラメータ調整部13に通知し、エッジポイント抽出量が適切であると判定した場合、そのときのエッジ基準値およびエッジポイントテーブル1乃至3をエッジ分析部17に供給する。
エッジ分析部17は、図2を参照して後述するように、抽出されたエッジポイントの分析を行い、分析結果を示す情報をボケ度検出部18に供給する。
ボケ度検出部18は、図2を参照して後述するように、エッジポイントの分析結果に基づいて、入力画像のボケ具合を示す指標であるボケ度を検出する。ボケ度検出部18は、検出したボケ度を示す情報を外部に出力する。
なお、以下、入力画像の画素値の範囲が、0(黒色、最も暗い)から255(白色、最も明るい)までである場合の例について説明する。
[動作説明]
次に、図2のフローチャートを参照して、画像処理装置1により実行されるボケ度検出処理について説明する。なお、この処理は、例えば、検出対象となる入力画像がエッジマップ作成部11に入力されたとき開始される。
ステップS1において、エッジマップ作成部11は、エッジマップを作成する。具体的には、エッジマップ作成部11は、入力画像を2×2画素の大きさのブロックに分割し、以下の式(1)乃至(6)に基づいて、各ブロック内の画素間の画素値の差分の絶対値MTL_TR乃至MBL_BRを算出する。
なお、式(1)乃至(6)において、図3に示されるように、画素値aはブロック内の左上の画素の画素値、画素値bはブロック内の右上の画素の画素値、画素値cはブロック内の左下の画素の画素値、および、画素値dはブロック内の右下の画素の画素値を示している。
次に、エッジマップ作成部11は、以下の式(7)に基づいて、差分絶対値MTL_TR乃至MBL_BRの平均値MAveを算出する。
すなわち、平均値MAveは、ブロック内の上下、左右および斜め方向のエッジ強度の平均値を示している。
エッジマップ作成部11は、算出した平均値MAveを対応するブロックと同じ順序に並べることにより、エッジマップ1を作成する。
さらに、エッジマップ作成部11は、エッジマップ2およびエッジマップ3を作成するために、以下の式(8)に基づいて、スケール2および3の平均化画像を作成する。
なお、式(8)において、Pi(x,y)は、スケールiの平均化画像の座標(x,y)の画素値を示し、Pi+1(x,y)は、スケールi+1の平均化画像の座標(x,y)の画素値を示している。なお、スケール1の平均化画像は入力画像とする。すなわち、スケール2の平均化画像は、入力画像を2×2画素の大きさのブロックに分割した各ブロックの画素値の平均値からなる画像であり、スケール3の平均化画像は、スケール2の平均化画像を2×2画素の大きさのブロックに分割した各ブロックの画素値の平均値からなる画像である。
エッジマップ作成部11は、スケール2およびスケール3の平均化画像に対して、それぞれ式(1)乃至(7)を用いて入力画像に対して行ったのと同様の処理を行い、エッジマップ2およびエッジマップ3を作成する。
従って、エッジマップ1乃至3は、スケール1乃至3のそれぞれ異なる周波数帯域のエッジ成分を入力画像から抽出した画像となる。なお、エッジマップ1の画素数は入力画像の1/4(縦1/2×横1/2)となり、エッジマップ2の画素数は入力画像の1/16(縦1/4×横1/4)となり、エッジマップ3の画素数は入力画像の1/64(縦1/8×横1/8)となる。
エッジマップ作成部11は、作成したエッジマップ1乃至3をダイナミックレンジ検出部12およびローカルマックス作成部14に供給する。
ステップS2において、ローカルマックス作成部14は、ローカルマックスを作成する。具体的には、ローカルマックス作成部14は、図4の左側に示されるように、エッジマップ1を2×2画素のブロックに分割し、各ブロックの最大値を抽出し、抽出した最大値を対応するブロックと同じ順序に並べることにより、ローカルマックス1を作成する。また、ローカルマックス作成部14は、図4の中央に示されるように、エッジマップ2を4×4画素のブロックに分割し、各ブロックの最大値を抽出し、抽出した最大値を対応するブロックと同じ順序に並べることにより、ローカルマックス2を作成する。さらに、ローカルマックス作成部14は、図4の右側に示されるように、エッジマップ3を8×8画素のブロックに分割し、各ブロックの最大値を抽出し、抽出した最大値を対応するブロックと同じ順序に並べることにより、ローカルマックス3を作成する。ローカルマックス作成部14は、作成したローカルマックス1乃至3をエッジポイント抽出部15およびエッジ分析部17に供給する。
ステップS3において、ダイナミックレンジ検出部12は、ダイナミックレンジを検出する。具体的には、ダイナミックレンジ検出部12は、エッジマップ1乃至3の中から画素値の最大値と最小値を検出し、検出した画素値の最大値から最小値を引いた値、すなわち、入力画像のエッジ強度の最大値と最小値の差をダイナミックレンジとして検出する。ダイナミックレンジ検出部12は、検出したダイナミックレンジを示す情報を演算パラメータ調整部13に供給する。
なお、上述した方法以外にも、例えば、各エッジマップごとにダイナミックレンジを検出し、検出したダイナミックレンジの最大値や平均値などを実際に使用するダイナミックレンジとして採用することも考えられる。
ステップS4において、演算パラメータ調整部13は、ダイナミックレンジが所定の閾値未満であるかを判定する。ダイナミックレンジが所定の閾値未満である、すなわち、ローダイナミックレンジであると判定された場合、処理はステップS4に進む。
ステップS5において、演算パラメータ調整部13は、演算パラメータをローダイナミックレンジの画像用の初期値に設定する。すなわち、演算パラメータ調整部13は、エッジ基準値および抽出基準値の初期値をローダイナミックレンジの画像用の値に設定する。なお、ローダイナミックレンジの画像用のエッジ基準値および抽出基準値の初期値は、図22乃至図27を参照して後述する学習処理により求められる。演算パラメータ調整部13は、設定したエッジ基準値を示す情報をエッジポイント抽出部15および抽出量判定部16に供給し、設定した抽出基準値を示す情報を抽出量判定部16に供給する。
ステップS6において、エッジポイント抽出部15は、エッジポイントを抽出する。具体的には、エッジポイント抽出部15は、入力画像において注目画素を1つ選択し、選択した注目画素の座標を(x,y)とした場合、以下の式(9)に基づいて、注目画素に対応するローカルマックス1の画素の座標(x1,y1)を求める。
(x1,y1)=(x/4,y/4) ・・・(9)
ただし、小数点以下は切り捨て。
すなわち、ローカルマックス1の1画素は、入力画像の4×4画素のブロックから生成されるため、入力画像の注目画素に対応するローカルマックス1の画素の座標は、注目画素のx座標およびy座標をそれぞれ1/4にした値となる。
同様に、エッジポイント抽出部15は、以下の式(10)および式(11)に基づいて、注目画素に対応するローカルマックス2の画素の座標(x2,y2)、および、注目画素に対応するローカルマックス3の画素の座標(x3,y3)を求める。
(x2,y2)=(x/16,y/16) ・・・(10)
(x3,y3)=(x/64,y/64) ・・・(11)
ただし、小数点以下は切り捨て。
エッジポイント抽出部15は、ローカルマックス1の座標(x1,y1)の画素値がエッジ基準値以上である場合、注目画素をローカルマックス1におけるエッジポイントとして抽出し、注目画素の座標(x,y)とローカルマックス1の座標(x1,y1)の画素値を対応づけて記憶する。同様に、エッジポイント抽出部15は、ローカルマックス2の座標(x2,y2)の画素値がエッジ基準値以上である場合、注目画素をローカルマックス2におけるエッジポイントとして抽出し、注目画素の座標(x,y)とローカルマックス2の座標(x2,y2)の画素値を対応づけて記憶し、ローカルマックス3の座標(x3,y3)の画素値がエッジ基準値以上である場合、注目画素をローカルマックス3におけるエッジポイントとして抽出し、注目画素の座標(x,y)とローカルマックス3の座標(x3,y3)の画素値を対応づけて記憶する。
エッジポイント抽出部15は、入力画像の全ての画素が注目画素となるまで以上の処理を繰り返し、ローカルマックス1に基づいて、入力画像の4×4画素のブロックのうちエッジ強度がエッジ基準値以上となるブロックに含まれる画素をエッジポイントとして抽出し、ローカルマックス2に基づいて、入力画像の16×16画素のブロックのうちブロック内のエッジ強度がエッジ基準値以上となるブロックに含まれる画素をエッジポイントとして抽出し、ローカルマックス3に基づいて、入力画像の64×64画素のブロックのうちブロック内のエッジ強度がエッジ基準値以上となるブロックに含まれる画素をエッジポイントとして抽出する。従って、エッジ強度がエッジ基準値以上となる入力画像の4×4画素、16×16画素、または、64×64画素のブロックの少なくとも1つに含まれる画素がエッジポイントとして抽出される。
エッジポイント抽出部15は、ローカルマックス1に基づいて抽出したエッジポイントの座標(x,y)とそのエッジポイントに対応するローカルマックス1の画素の画素値とが対応づけられたテーブルであるエッジポイントテーブル1、ローカルマックス2に基づいて抽出したエッジポイントの座標(x,y)とそのエッジポイントに対応するローカルマックス2の画素の画素値とが対応づけられたテーブルであるエッジポイントテーブル2、および、ローカルマックス3に基づいて抽出したエッジポイントの座標(x,y)とそのエッジポイントに対応するローカルマックス3の画素の画素値とが対応づけられたテーブルであるエッジポイントテーブル3を作成し、抽出量判定部16に供給する。
ステップS7において、抽出量判定部16は、エッジポイント抽出量が適切であるかを判定する。抽出量判定部16は、抽出されたエッジポイントの合計数、すなわち、エッジポイントテーブル1乃至3のデータ数の合計を抽出基準値と比較し、抽出基準値未満である場合、エッジポイント抽出量が適切でないと判定し、処理はステップS8に進む。
ステップS8において、演算パラメータ調整部13は、演算パラメータを調整する。具体的には、抽出量判定部16は、エッジポイント抽出量が適切でないことを演算パラメータ調整部13に通知する。演算パラメータ調整部13は、いまより多くのエッジポイントが抽出されるように、エッジ基準値を所定の値だけ小さくする。演算パラメータ調整部13は、調整したエッジ基準値を示す情報をエッジポイント抽出部15および抽出量判定部16に供給する。
その後、処理はステップS6に戻り、ステップS7において、エッジポイント抽出量が適切であると判定されるまで、ステップS6乃至S8の処理が繰り返し実行される。すなわち、エッジポイント抽出量が適切な値になるまで、エッジ基準値を調整しながら、エッジポイントを抽出し、エッジポイントテーブル1乃至3を作成する処理が繰り返される。
一方、ステップS7において、抽出量判定部16は、抽出されたエッジポイントの合計数が抽出基準値以上である場合、エッジポイント抽出量が適切であると判定し、処理はステップS13に進む。
また、ステップS4において、ダイナミックレンジが所定の閾値以上である、すなわち、ハイダイナミックレンジであると判定された場合、処理はステップS9に進む。
ステップS9において、演算パラメータ調整部13は、演算パラメータをハイダイナミックレンジの画像用の初期値に設定する。すなわち、演算パラメータ調整部13は、エッジ基準値および抽出基準値の初期値をハイダイナミックレンジの画像用の値に設定する。なお、ハイダイナミックレンジの画像用のエッジ基準値および抽出基準値の初期値は、図22乃至図27を参照して後述する学習処理により求められる。演算パラメータ調整部13は、設定したエッジ基準値を示す情報をエッジポイント抽出部15および抽出量判定部16に供給し、設定した抽出基準値を示す情報を抽出量判定部16に供給する。
ステップS10において、ステップS6の処理と同様に、エッジポイントテーブル1乃至3が作成され、作成されたエッジポイントテーブル1乃至3が抽出量判定部16に供給される。
ステップS11において、ステップS7の処理と同様に、エッジポイント抽出量が適切であるかが判定され、エッジポイント抽出量が適切でないと判定された場合、処理はステップS12に進む。
ステップS12において、ステップS8の処理と同様に、演算パラメータが調整され、その後、処理はステップS10に戻り、ステップS11において、エッジポイント抽出量が適切であると判定されるまで、ステップS10乃至S12の処理が繰り返し実行される。
一方、ステップS11において、エッジポイント抽出量が適切であると判定された場合、処理はステップS13に進む。
なお、以上の処理により、ボケ度の検出精度を向上させるために、ローダイナミックレンジの入力画像については、入力画像のボケ度の検出精度を一定のレベル以上とするのに十分な量のエッジポイントを確保できるよう、エッジ強度の弱いブロックからもエッジポイントが抽出され、ハイダイナミックレンジの入力画像については、より強いエッジを構成するエッジポイントが抽出されるように、できるだけエッジ強度の強いブロックからエッジポイントが抽出されるようになる。
ステップS13において、エッジ分析部17は、エッジ分析を行う。具体的には、抽出量判定部16は、エッジポイント抽出量が適切であると判定した時点のエッジ基準値、および、エッジポイントテーブル1乃至3をエッジ分析部17に供給する。
エッジ分析部17は、エッジポイントテーブル1乃至3に基づいて、入力画像から抽出されたエッジポイントのうちの1つを注目画素に選択する。エッジ分析部17は、選択した注目画素の座標を(x,y)とした場合、上述した式(9)乃至(11)に基づいて、注目画素に対応するローカルマックス1乃至3の画素の座標(x1,y1)乃至座標(x3,y3)を求める。エッジ分析部17は、ローカルマックス1の座標(x1,y1)の画素を左上隅の画素とするm×m画素(例えば、4×4画素)のブロック内の画素値の最大値をLocal Max1(x1,y1)に設定し、ローカルマックス2の座標(x2,y2)の画素を左上隅の画素とするn×n画素(例えば、2×2画素)のブロック内の画素値の最大値をLocal Max2(x2,y2)に設定し、ローカルマックス3の座標(x3,y3)の画素値をLocal Max3(x3,y3)に設定する。
なお、Local Max1(x1,y1)の設定に用いるm×m、および、Local Max2(x2,y2)の設定に用いるn×nのパラメータは、ローカルマックス1乃至3の1画素に対応する入力画像のブロックの大きさの差を調整するためのパラメータである。
エッジ分析部17は、Local Max1(x1,y1)、Local Max2(x2,y2)およびLocal Max3(x3,y3)が以下の条件式(12)を満足するか否かを判定する。Local Max1(x1,y1)、Local Max2(x2,y2)およびLocal Max3(x3,y3)が条件式(12)を満足する場合、エッジ分析部17は、変数Nedgeの値を1つインクリメントする。
なお、条件式(12)を満足するエッジポイントは、図5に示される急峻なインパルス状のエッジ、図5のエッジよりは傾きが緩やかな図6に示されるパルス状のエッジ、図7に示される傾きがほぼ垂直な階段状のエッジ、および、図7のエッジよりは傾きが緩やかな図8に示される階段状のエッジなど、その構造に関わらず、一定以上の強度を有するエッジを構成するエッジポイントであると推定される。
また、エッジ分析部17は、Local Max1(x1,y1)、Local Max2(x2,y2)およびLocal Max3(x3,y3)が条件式(12)を満足する場合、さらに、以下の条件式(13)または条件式(14)を満足するか否かを判定する。Local Max1(x1,y1)、Local Max2(x2,y2)およびLocal Max3(x3,y3)が条件式(13)または条件式(14)を満足する場合、エッジ分析部17は、変数Nsmallblurの値を1つインクリメントする。
なお、条件式(12)を満足し、かつ、条件式(13)または条件式(14)を満足するエッジポイントは、一定以上の強度を有するが、図5または図7のエッジと比較して強度の弱い図6または図8の構造を有するエッジを構成するエッジポイントであると推定される。
さらに、エッジ分析部17は、Local Max1(x1,y1)、Local Max2(x2,y2)およびLocal Max3(x3,y3)が条件式(12)を満足し、かつ、条件式(13)または条件式(14)を満足する場合、Local Max1(x1,y1)が、以下の条件式(15)を満足するか否かを判定する。Local Max1(x1,y1)が条件式(15)を満足する場合、エッジ分析部17は、変数Nlargelblurの値を1つインクリメントする。
なお、条件式(12)を満足し、かつ、条件式(13)または条件式(14)を満足し、かつ、条件式(15)を満足するエッジポイントは、一定以上の強度の図6または図8の構造を有するエッジのうち、ボケが発生し鮮明さを失ったエッジを構成するエッジポイントであると推定される。換言すれば、そのエッジポイントにおいてボケが発生していると推定される。
エッジ分析部17は、入力画像から抽出された全てのエッジポイントが注目画素となるまで、以上の処理を繰り返す。これにより、抽出されたエッジポイントのうち、条件式(13)を満足するエッジポイントの数Nedge、条件式(12)を満足し、かつ、条件式(13)または条件式(14)を満足するエッジポイントの数Nsmallblur、条件式(12)を満足し、かつ、条件式(13)または条件式(14)を満足し、かつ、条件式(15)を満足するエッジポイントの数Nlargelblurが求められる。エッジ分析部17は、算出したNsmallblurおよびNlargelblurを示す情報をボケ度検出部18に供給する。
ステップS14において、ボケ度検出部18は、以下の式(16)に基づいて、入力画像のボケ具合の指標となるボケ度BlurEstimationを検出する。
すなわち、ボケ度BlurEstimationは、一定以上の強度の図6または図8の構造を有するエッジを構成すると推定されるエッジポイントのうち、ボケが発生しているエッジを構成すると推定されるエッジポイントが占める比率である。従って、ボケ度BlurEstimationが大きいほど、入力画像のボケ具合は大きく、ボケ度BlurEstimationが小さいほど、入力画像のボケ具合は小さいと推定される。
ボケ度検出部18は、検出したボケ度BlurEstimationを外部に出力し、ボケ度検出処理は終了する。例えば、外部の装置は、ボケ度BlurEstimationを所定の閾値と比較することにより、入力画像がぼけているか否かを判定する。
なお、ステップS13およびS14の処理の詳細については、上述した非特許文献1に記載されている。
以上のようにして、入力画像に応じて、エッジポイントを抽出する条件、および、エッジポイントの抽出量が適切に制御されるので、より高い精度で入力画像のボケ具合を検出することができる。
また、ウェーブレット変換などの複雑な演算を行わずに、エッジ強度を検出するので、非特許文献1に記載の発明と比較して、エッジ強度の検出に要する時間を短縮することができる。
<2.第1の実施の形態の変形例>
なお、以上の説明では、エッジマップを作成する場合に、ブロック内の上下、左右および斜めの3方向のエッジ強度の平均値を求める例を示したが、例えば、1方向または2方向のエッジ強度の平均値を求めるようにしてもよい。
また、以上の説明では、入力画像をローダイナミックレンジとハイダイナミックレンジの2種類に分類して処理を行う例を示したが、ダイナミックレンジの範囲により3種類以上に分類して処理を行うようにしてもよい。これにより、より高い精度で入力画像のボケ具合を検出できるようになる。
さらに、以上の説明では、抽出されたエッジポイントの量が少なすぎる場合に、より多くのエッジポイントが抽出されるように、エッジ基準値を小さくする例を示したが、さらに、抽出されたエッジポイントの量が多すぎる場合に、抽出されるエッジポイントの量を減らすように、エッジ基準値を大きくするようにしてもよい。すなわち、エッジポイントの抽出量が適切な量になる方向にエッジ基準値を調整するようにしてもよい。
また、例えば、ローダイナミックレンジの入力画像であると判定した場合に、抽出されたエッジポイントの量が多すぎるとき、ハイダイナミックレンジの入力画像として処理するようにしてもよい。
また、上述したエッジマップおよびローカルマックスを作成する場合のブロックのサイズは、その一例であり、上述したサイズと異なるサイズに設定することも可能である。
<3.第2の実施の形態>
次に、図9および図10を参照して、本発明を適用した画像処理装置の第2の実施の形態について説明する。なお、画像処理装置の第2の実施の形態では、入力画像のダイナミックレンジに加えて、入力画像の画像サイズも考慮して、エッジ基準値および抽出基準値の初期値の設定が行われる。
[画像処理装置の機能の構成例]
図9は、本発明を適用した画像処理装置の第2の実施の形態としての、画像処理装置101の機能の構成例を示すブロック図である。
画像処理装置101は、エッジマップ作成部111、ダイナミックレンジ検出部112、演算パラメータ調整部113、ローカルマックス作成部114、エッジポイント抽出部115、抽出量判定部116、エッジ分析部117、ボケ度検出部118、および、画像サイズ検出部119を含むように構成される。なお、図中、図1と対応する部分については下2桁が同じ符号を付してあり、処理が同じ部分に関しては、その説明は繰り返しになるので省略する。
画像サイズ検出部119は、入力画像の画像サイズ(画素数)を検出し、検出した入力画像の画像サイズを示す情報を演算パラメータ調整部113に供給する。
演算パラメータ調整部113は、図10を参照して後述するように、検出された入力画像の画像サイズおよびダイナミックレンジに基づいて、エッジ基準値および抽出基準値を含む演算パラメータを調整する。演算パラメータ調整部113は、設定したエッジ基準値を示す情報をエッジポイント抽出部115および抽出量判定部116に供給し、設定した抽出基準値を示す情報を抽出量判定部116に供給する。
[動作説明]
次に、図10のフローチャートを参照して、画像処理装置101により実行されるボケ度検出処理について説明する。なお、この処理は、例えば、検出対象となる入力画像がエッジマップ作成部111および画像サイズ検出部119に入力されたとき開始される。
ステップS101乃至S103の処理は、図2のステップS1乃至S3の処理と同様であり、その説明は繰り返しになるので省略する。なお、これらの処理により、入力画像のエッジマップおよびローカルマックスが作成され、入力画像のダイナミックレンジが検出される。
ステップS104において、画像サイズ検出部119は、画像サイズを検出する。例えば、画像サイズ検出部119は、入力画像の縦方向および横方向の画素数を画像サイズとして検出する。画像サイズ検出部119は、検出した画像サイズを示す情報を演算パラメータ調整部113に供給する。
ステップS105において、演算パラメータ調整部113は、画像サイズが所定の閾値以上であるかを判定する。演算パラメータ調整部113は、入力画像の画素数が所定の閾値未満(例えば、256×256画素)である場合、画像サイズが所定の閾値以上でないと判定し、処理はステップS106に進む。
ステップS106乃至S114の処理は、図2のステップS4乃至S12の処理と同様であり、その説明は繰り返しになるので省略する。なお、これらの処理により、エッジ基準値および抽出基準値を調整しながら、画像サイズが所定の閾値未満の入力画像からエッジポイントが抽出される。その後、処理はステップS124に進む。
一方、ステップS105において、画像サイズが所定の閾値以上であると判定された場合、処理はステップS115に進む。
ステップS115乃至S123の処理は、図2のステップS4乃至S12の処理と同様であり、その説明は繰り返しになるので省略する。なお、これらの処理により、エッジ基準値および抽出基準値を調整しながら、画像サイズが所定の閾値以上の入力画像からエッジポイントが抽出される。その後、処理はステップS124に進む。
なお、ステップS107、S111、S116およびS120において設定されるエッジ基準値および抽出基準値の初期値は、入力画像の画像サイズおよびダイナミックレンジに基づいて、4種類のエッジ基準値および抽出基準値の初期値の組み合わせの中から1つが選択され、設定される。
例えば、画像サイズが大きいほど、抽出基準値の初期値がより大きい値に設定される。従って、同じローダイナミックレンジの画像の場合、画像サイズが所定の閾値未満のとき、画像サイズが所定の閾値以上のときと比べて、抽出基準値の初期値が小さな値に設定される。ハイダイナミックレンジの画像の場合も同様である。
これは、同じダイナミックレンジの画像の場合、画像サイズが小さいほど、画像内のエッジが少なく、抽出されるエッジポイントの量が少なくなると推定される。従って、画像サイズが小さい画像に対して、画像サイズが大きい画像と同様の数だけエッジポイントを抽出しようとした場合、エッジポイントの抽出精度が低下する恐れがある。それを避けるために、画像サイズが所定の閾値未満のとき、画像サイズが所定の閾値以上のときと比べて、抽出基準値の初期値が小さい値に設定される。
ステップS124およびS125の処理は、図2のステップS13およびS14の処理と同様であり、その説明は繰り返しになるので省略する。なお、この処理により、入力画像の各画素のエッジ分析が行われ、エッジ分析の結果に基づいて、入力画像のボケ度BlurEstimationが検出される。その後、ボケ検出処理は終了する。
以上のようにして、入力画像のダイナミックレンジだけでなく、画像サイズも考慮して、エッジ基準値および抽出基準値の初期値が設定されるので、より高い精度で入力画像のボケ具合を検出することができる。
<4.第2の実施の形態の変形例>
なお、以上の説明では、入力画像の画像サイズを2種類に分類して処理を行う例を示したが、3種類以上に分類して、抽出基準値の初期値を設定するようにしてもよい。
また、入力画像の画像サイズに応じて、エッジ基準値の初期値を変更するようにしてもよい。
さらに、入力画像の画像サイズに応じて、入力画像のダイナミックレンジの分類に用いる閾値を変更するようにしてもよい。
また、以上の説明では、入力画像の画像サイズを分類してから、入力画像のダイナミックレンジを分類する例を示したが、処理の順序を逆にすることも可能である。
<5.第3の実施の形態>
次に、図11および図12を参照して、本発明を適用した画像処理装置の第3の実施の形態について説明する。なお、画像処理装置の第2の実施の形態では、入力画像のダイナミックレンジに加えて、入力画像の撮影シーンも考慮して、エッジ基準値および抽出基準値の初期値の設定が行われる。
[画像処理装置の機能の構成例]
図11は、本発明を適用した画像処理装置の第3の実施の形態としての、画像処理装置201の機能の構成例を示すブロック図である。
画像処理装置201は、エッジマップ作成部211、ダイナミックレンジ検出部212、演算パラメータ調整部213、ローカルマックス作成部214、エッジポイント抽出部215、抽出量判定部216、エッジ分析部217、ボケ度検出部218、および、シーン認識部219を含むように構成される。なお、図中、図1と対応する部分については下2桁が同じ符号を付してあり、処理が同じ部分に関しては、その説明は繰り返しになるので省略する。
シーン認識部219は、所定のシーン認識手法を用いて、入力画像の撮影シーンを認識する。例えば、シーン認識部219は、入力画像が室内または屋外のどちらで撮影されたかを認識する。シーン認識部219は、認識結果を示す情報を演算パラメータ調整部213に供給する。
演算パラメータ調整部213は、図12を参照して後述するように、検出された入力画像の撮影シーンおよびダイナミックレンジに基づいて、エッジ基準値および抽出基準値を含む演算パラメータを調整する。演算パラメータ調整部213は、設定したエッジ基準値を示す情報をエッジポイント抽出部215および抽出量判定部216に供給し、設定した抽出基準値を示す情報を抽出量判定部216に供給する。
[動作説明]
次に、図12のフローチャートを参照して、画像処理装置201により実行されるボケ度検出処理について説明する。なお、この処理は、例えば、検出対象となる入力画像がエッジマップ作成部211およびシーン認識部219に入力されたとき開始される。
ステップS201乃至S203の処理は、図2のステップS1乃至S3の処理と同様であり、その説明は繰り返しになるので省略する。なお、これらの処理により、入力画像のエッジマップおよびローカルマックスが作成され、入力画像のダイナミックレンジが検出される。
ステップS204において、シーン認識部219は、シーン認識を行う。具体的には、シーン認識部219は、所定のシーン認識手法を用いて、入力画像が室内または屋外のどちらで撮影されたかを認識する。シーン認識部219は、認識結果を示す情報を演算パラメータ調整部213に供給する。
ステップS205において、演算パラメータ調整部213は、シーン認識の結果に基づいて、撮影場所が室内であるか、あるいは、屋外であるかを判定する。撮影場所が室内であると判定された場合、処理はステップS206に進む。
ステップS206乃至S214の処理は、図2のステップS4乃至S12の処理と同様であり、その説明は繰り返しになるので省略する。なお、これらの処理により、エッジ基準値および抽出基準値を調整しながら、画像サイズが所定の閾値未満の入力画像からエッジポイントが抽出される。その後、処理はステップS224に進む。
一方、ステップS205において、撮影場所が屋外であると判定された場合、処理はステップS215に進む。
ステップS215乃至S223の処理は、図2のステップS4乃至S12の処理と同様であり、その説明は繰り返しになるので省略する。なお、これらの処理により、エッジ基準値および抽出基準値を調整しながら、画像サイズが所定の閾値以上の入力画像からエッジポイントが抽出される。その後、処理はステップS224に進む。
なお、ステップS207、S211、S216およびS220において設定されるエッジ基準値および抽出基準値の初期値は、入力画像の撮影場所およびダイナミックレンジに基づいて、4種類のエッジ基準値および抽出基準値の初期値の組み合わせの中から1つが選択され、設定される。
ステップS224およびS225の処理は、図2のステップS13およびS14の処理と同様であり、その説明は繰り返しになるので省略する。なお、この処理により、入力画像の各画素のエッジ分析が行われ、エッジ分析の結果に基づいて、入力画像のボケ度BlurEstimationが検出される。その後、ボケ検出処理は終了する。
以上のようにして、入力画像のダイナミックレンジだけでなく、撮影場所も考慮して、エッジ基準値および抽出基準値の初期値が設定されるので、より高い精度で入力画像のボケ具合を検出することができる。
<6.第3の実施の形態の変形例>
なお、以上の説明では、入力画像の撮影場所を2種類に分類して処理を行う例を示したが、撮影場所を3種類以上に分類して、演算パラメータの初期値を設定するようにしてもよい。
また、撮影場所以外の他の撮影シーンのパラメータを用いて入力画像を分類するようにしてもよい。例えば、撮影時間(例えば、昼間か夜間か)、天候(例えば、晴れ、曇り、雨、雪)などにより入力画像を分類して、演算パラメータの初期値を設定するようにしてもよい。さらに、複数の撮影シーンのパラメータを組み合わせて、入力画像を分類して、演算パラメータの初期値を設定するようにしてもよい。
さらに、入力画像の画像サイズと撮影シーンを含み合わせて、入力画像を分類して、演算パラメータの初期値を設定するようにしてもよい。
また、入力画像の撮影シーンに応じて、入力画像のダイナミックレンジの分類に用いる閾値を変更するようにしてもよい。
さらに、以上の説明では、撮影シーンを分類してから、入力画像のダイナミックレンジを分類する例を示したが、処理の順序を逆にすることも可能である。
<7.第4の実施の形態>
次に、図13乃至図21を参照して、本発明を適用した画像処理装置の第4の実施の形態について説明する。なお、画像処理装置の第4の実施の形態では、入力画像に白飛びが発生している場合のボケ具合の検出精度を向上させる対策が施される。
[入力画像に白飛びが発生している場合の問題点]
入力画像に白飛びが発生している場合、白飛びが発生している部分においては、ボケが発生していないにも関わらず、画素値の変化が実際の被写体の輝度の変化より小さくなる。そのため、ボケ度BlurEstimationの検出精度が低下する場合がある。これについて、図13乃至図18を参照して、具体的に説明する。
図13は、蛍光灯を撮影した場合の入力画像の例を示している。図13の入力画像では、蛍光灯およびその周辺において白飛びが発生している。すなわち、蛍光灯が明るすぎて、蛍光灯およびその周辺の画素値が最大値または最大値に近い値となり、実際の被写体の輝度の変化に対して、画素値の変化が小さくなっている。
図14は、図13の入力画像の枠F1で囲まれる部分、すなわち、蛍光灯のエッジ付近を拡大した図であり、図15は、図14の拡大図の画素値の分布を示している。なお、図15において斜線で示される部分は、画素値が250以上の画素を示している。
以下、図15の枠F2で囲まれる部分(以下、画像F2と称する)に注目して説明する。
図16の下の図は、画像F2に対応するエッジマップ1の画素値の分布を示している。また、図17のまん中の図は、画像F2に対応するスケール2の平均化画像の画素値の分布を示し、いちばん下の図は、画像F2に対応するエッジマップ2の画素値の分布を示している。
スケール2の平均化画像では、白飛びが発生している部分と発生していない部分の境界付近において、白飛びを含む部分の画素値が大きくなり、含まない部分の画素値が小さくなる傾向が見られる。そのため、白飛びが発生している部分と発生していない部分の境界付近において、エッジマップ2の画素値が大きくなる傾向が見られる。従って、入力画像の同じ部分に対応するエッジマップ1とエッジマップ2とを比較した場合、エッジマップ2の画素値の方がエッジマップ1の画素値より大きくなるケースが増加する。例えば、画像F2に対応するエッジマップ1とエッジマップ2とを比較した場合、図18の太枠で示される部分のように、エッジマップ2の画素値の方がエッジマップ1の画素値より大きくなる。なお、図18の太枠で示される画素は、エッジマップ1の2×2画素のブロック内で画素値が最大となり、ローカルマックス1の画素として抽出される画素、および、エッジマップ2の4×4画素のブロック内(ただし、図中2×2画素の範囲しか示していない)で画素値が最大となり、ローカルマックス2の画素として抽出される画素を示している。
従って、白飛びが発生している入力画像では、上述した条件式(13)または条件式(14)が満足され、変数Nlargelblurの値が大きくなる傾向が見られる。その結果、上述した式(16)の分母の値が大きくなり、ボケ度BlurEstimationの値が実際より小さくなり、ボケ画像をボケ画像でないと誤判定する割合が高くなる。
後述するように、画像処理装置の第4の実施の形態では、以上を考慮して、入力画像に白飛びが発生している場合のボケ度BlurEstimationの検出精度を向上させる対策が施される。
[画像処理装置の機能の構成例]
図13は、本発明を適用した画像処理装置の第4の実施の形態としての、画像処理装置301の機能の構成例を示すブロック図である。
画像処理装置301は、エッジマップ作成部311、ダイナミックレンジ検出部312、演算パラメータ調整部313、ローカルマックス作成部314、エッジポイント抽出部315、抽出量判定部316、エッジ分析部317、ボケ度検出部318、および、画像サイズ検出部319を含むように構成される。なお、図中、図9と対応する部分については下2桁が同じ符号を付してあり、処理が同じ部分に関しては、その説明は繰り返しになるので省略する。
エッジマップ作成部311は、図1のエッジマップ作成部11、図9のエッジマップ作成部111、および、図11のエッジマップ作成部211と比較して、エッジマップ2の作成方法が異なる。なお、この点については、図20および図21を参照して後述する。
エッジポイント抽出部315は、図1のエッジポイント抽出部15、図9のエッジポイント抽出部115、および、図11のエッジポイント抽出部215と比較して、エッジポイントの抽出方法が異なる。なお、この点については、図20および図21を参照して後述する。
[動作説明]
次に、図20のフローチャートを参照して、画像処理装置301により実行されるボケ度検出処理について説明する。なお、この処理は、例えば、検出対象となる入力画像がエッジマップ作成部311および画像サイズ検出部319に入力されたとき開始される。
ステップS301において、エッジマップ作成部311は、エッジマップを作成する。なお、上述したように、エッジマップ作成部311は、図1のエッジマップ作成部11、図9のエッジマップ作成部111、および、図11のエッジマップ作成部211と比較して、エッジマップ2の作成方法が異なる。
具体的には、エッジマップ作成部311は、画素値が所定の閾値THw以上(例えば、240)の画素を含むスケール2の平均化画像のブロックに対応するエッジマップ2の画素値を、所定の値FLAGに設定する。例えば、上述した画像F2について考えた場合、図21に示されるように、スケール2の平均化画像において画素値が240を超えている画素を含むブロックB1およびブロックB2に対応するエッジマップ2の画素の画素値が、値FLAGに設定される。
なお、画素値が所定の閾値THw以上の画素を含まないスケール2の平均化画像のブロックに対応するエッジマップ2の画素値の算出方法は、上述した方法と同様である。また、画素値が閾値THw以上の画素を含まないブロックに対応するエッジマップ2の画素値は、必ず閾値THw未満となるため、値FLAGは、閾値THw以上の値であればよく、例えば、255に設定される。これにより、エッジマップ2において、値FLAGが設定されている画素と他の画素とを区別することができる。
なお、エッジマップ1およびエッジマップ3の作成方法については、上述した方法と同様であり、その説明は繰り返しになるので省略する。
エッジマップ作成部311は、作成したエッジマップ1乃至3をダイナミックレンジ検出部312およびローカルマックス作成部314に供給する。
ステップS302において、ローカルマックス作成部314は、図2のステップS2と同様の処理により、ローカルマックス1乃至3を作成し、作成したローカルマックス1乃至3をエッジポイント抽出部315およびエッジ分析部317に供給する。
このとき、上述したように、ローカルマックス2は、エッジマップ2を4×4画素のブロックに分割し、各ブロックの最大値を抽出し、抽出した最大値を対応するブロックと同じ順序に並べることにより作成される。従って、エッジマップ2において値FLAGが設定されている画素を含むブロックに対応するローカルマックス2の画素の画素値は、必ず値FLAGに設定される。すなわち、エッジマップ2からローカルマックス2に値FLAGが引き継がれる。
なお、ローカルマックス1およびローカルマックス3については、図2のステップS2において作成されるローカルマックス1およびローカルマックス3と同様である。
ステップS303乃至ステップS325の処理は、ステップS308、S312、S317およびS321の処理を除いて、上述した図10のステップS103乃至S125の処理と同様であり、その説明は繰り返しになるので省略する。
ステップS308において、エッジポイント抽出部315は、図2のステップS6と同様の処理により、エッジポイントを抽出する。ただし、エッジポイント抽出部315は、選択した注目画素に対応するローカルマックス2の画素値が値FLAGに設定されている場合、その注目画素がローカルマックス1またはローカルマックス3に基づいてエッジポイントとして抽出されていても、エッジポイントから除外する。これにより、ローカルマックス1乃至ローカルマックス3のいずれかにおいて画素値がエッジ基準値以上となるブロックに含まれ、かつ、スケール2の平均化画像において画素値がTHw未満であるブロックに含まれる入力画像の画素が、エッジポイントとして抽出される。
ステップS312、S317およびS321においても、ステップS308の処理と同様に、エッジポイントが抽出される。
従って、入力画像において画素値が所定の値以上となる白飛びが発生している部分に含まれる画素が、エッジポイントとして抽出されなくなる。換言すれば、エッジ強度がエッジ基準値以上、かつ、入力画像において画素値が所定の値未満となるブロックに含まれる画素が、エッジポイントとして抽出される。その結果、入力画像の白飛びが、ボケ度の検出結果に影響を与えることが防止され、より高い精度で入力画像のボケ具合を検出することができる。
<8.第4の実施の形態の変形例>
なお、以上の説明では、画像処理装置の第2の実施の形態に対して、白飛び対策を適用する例を示したが、第1の実施の形態および第3の実施の形態に、白飛び対策を適用することも可能である。
また、黒つぶれが発生している画素をエッジポイントから除去するようにしてもよい。これは、例えば、画素値が閾値THb以下(例えば、20以下)の画素を含むスケール2の平均化画像のブロックに対応するエッジマップ2の画素の画素値を、値FLAGを設定することにより実現される。
さらに、白飛びまたは黒つぶれのいずれかが発生している画素をエッジポイントから除去するようにしてもよい。これは、例えば、画素値が閾値THb以下または閾値THw以上の画素を含むスケール2の平均化画像のブロックに対応するエッジマップ2の画素の画素値を、値FLAGを設定することにより実現される。
また、エッジマップ2ではなく、エッジマップ1において、画素値を値FLAGに設定する処理を行うようにしてもよい。具体的には、画素値が閾値THw以上の画素を含む入力画像のブロックに対応するエッジマップ1の画素値を、値FLAGに設定するようにしてもよい。この場合、エッジマップ2に対して処理を行う場合と比較して、白飛びが発生している画素をより正確にエッジポイントから除去することができ、ボケ度BlurEstimationの検出精度が向上する一方、処理時間は遅くなる。
さらに、エッジマップ2ではなく、エッジマップ3において、画素値を値FLAGに設定する処理を行うようにしてもよい。具体的には、画素値が閾値THw以上の画素を含むスケール3の平均化画像のブロックに対応するエッジマップ3の画素値を、値FLAGに設定するようにしてもよい。この場合、エッジマップ2に対して処理を行う場合と比較して、処理時間が速くなる一方、白飛びが発生している画素をエッジポイントから除去する精度が低下し、ボケ度BlurEstimationの検出精度は低下する。
<9.第5の実施の形態>
次に、図22乃至図27を参照して、本発明の第5の実施の形態について説明する。なお、本発明の第5の実施の形態では、上述したボケ度検出処理に用いられるパラメータの学習が行われる。
[学習装置の機能の構成例]
図22は、本発明を適用した学習装置の一実施の形態を示すブロック図である。図22の学習装置501は、図1の画像処理装置1において使用される、ダイナミックレンジの判定に用いる閾値(以下、ダイナミックレンジ判定値と称する)、エッジ基準値、および、抽出基準値の最適な組み合わせを学習する装置である。
学習装置501は、教師データ取得部511、パラメータ供給部512、画像処理部513、学習データ生成部514、および、パラメータ抽出部515を含むように構成される。また、画像処理部513は、エッジマップ作成部521、ダイナミックレンジ検出部522、画像分類部523、ローカルマックス作成部524、エッジポイント抽出部525、抽出量判定部526、エッジ分析部527、ボケ度検出部528、および、画像判定部529を含むように構成される。
教師データ取得部511は、外部から入力される教師データを取得する。ここで、教師データは、学習処理の対象となる教師画像、および、その教師画像がボケているか否かを示す正解データを含む。正解データは、例えば、教師画像がボケ画像であるか否かを示し、ユーザが実際に教師画像を見て判断した結果、あるいは、所定の画像処理により分析した結果などから求められる。なお、以下、ボケ画像でない画像をシャープ画像と称する。
教師データ取得部511は、教師データに含まれる教師画像を、エッジマップ作成部521に供給する。また、教師データ取得部511は、教師データに含まれる正解データを学習データ生成部514に供給する。
パラメータ供給部512は、学習データ生成部514から通知される変数iおよび変数jの値に基づいて、ダイナミックレンジ判定値、エッジ基準値および抽出基準値からなる複数のパラメータの組み合わせのうちの1つを選択する。パラメータ供給部512は、選択したパラメータのうち、ダイナミックレンジ判定値を画像分類部523に通知し、エッジ基準値をエッジポイント抽出部525およびエッジ分析部527に通知し、抽出基準値を抽出量判定部526に通知する。
図23は、パラメータ供給部512から供給されるパラメータの組み合わせの例を示している。この例では、ダイナミックレンジ判定値THdr[i]は、60から100までの41種類の値をとり、エッジ基準値RVe[j]は、10から30までの21種類の値をとり、抽出基準値RVa[j]は、1から200までの200種類の値をとる。従って、パラメータの組み合わせは、41×21×200=172200種類となる。
例えば、パラメータ供給部512は、学習データ生成部514からi=1、j=1が通知された場合、ダイナミックレンジ判定値THdr[1]=60、エッジ基準値RVe[1]=10、および、抽出基準値RVa[1]=1の組み合わせを選択する。そして、パラメータ供給部512は、ダイナミックレンジ判定値THdr[1]を画像分類部523に通知し、エッジ基準値RVe[1]をエッジポイント抽出部525およびエッジ分析部527に通知し、抽出基準値RVa[1]を抽出量判定部526に通知する。
画像処理部513は、パラメータ供給部512から供給されるダイナミックレンジ判定値THdr[i]に基づいて、教師画像をハイダイナミックレンジの画像またはローダイナミックレンジの画像のいずれかに分類する。画像処理部513は、分類した結果を学習データ生成部514に通知する。また、画像処理部513は、パラメータ供給部512から供給されるエッジ基準値RVe[i]および抽出基準値RVa[i]に基づいて、教師画像がボケ画像またはシャープ画像のいずれであるかを判定する。画像処理部513は、判定結果を学習データ生成部514に通知する。
より具体的には、画像処理部513のエッジマップ作成部521は、図1のエッジマップ作成部11と同様の機能を有しており、与えられた教師画像からエッジマップ1乃至3を作成する。エッジマップ作成部521は、作成したエッジマップ1乃至3をダイナミックレンジ検出部522およびローカルマックス作成部524に供給する。
ダイナミックレンジ検出部522は、図1のダイナミックレンジ検出部12と同様の機能を有しており、教師画像のダイナミックレンジを検出する。ダイナミックレンジ検出部522は、検出したダイナミックレンジを示す情報を画像分類部523に供給する。
画像分類部523は、パラメータ供給部512から供給されるダイナミックレンジ判定値THdr[i]に基づいて、教師画像をハイダイナミックレンジの画像またはローダイナミックレンジの画像のいずれかに分類する。画像分類部523は、分類した結果を学習データ生成部514に通知する。
ローカルマックス作成部524は、図1のローカルマックス作成部14と同様の機能を有しており、エッジマップ1乃至3に基づいて、ローカルマックス1乃至3を作成する。ローカルマックス作成部524は、作成したローカルマックス1乃至3をエッジポイント抽出部525およびエッジ分析部527に供給する。
エッジポイント抽出部525は、図1のエッジポイント抽出部15と同様の機能を有しており、パラメータ供給部512から供給されるエッジ基準値RVe[i]、および、ローカルマックス1乃至3に基づいて、教師画像からエッジポイントを抽出する。また、エッジポイント抽出部525は、抽出したエッジポイントの情報を示すエッジポイントテーブル1乃至3を作成する。エッジポイント抽出部525は、作成したエッジポイントテーブル1乃至3を抽出量判定部526に供給する。
抽出量判定部526は、図1の抽出量判定部16と同様の機能を有しており、エッジポイントテーブル1乃至3、および、パラメータ供給部512から供給される抽出基準値RVa[i]に基づいて、エッジポイント抽出量が適切であるか否かを判定する。抽出量判定部526は、エッジポイント抽出量が適切であると判定した場合、エッジポイントテーブル1乃至3をエッジ分析部527に供給する。また、抽出量判定部526は、エッジポイント抽出量が適切でないと判定した場合、エッジポイント抽出量が適切でないことを学習データ生成部514に通知する。
エッジ分析部527は、図1のエッジ分析部17と同様の機能を有しており、エッジポイントテーブル1乃至3、ローカルマックス1乃至3、および、エッジ基準値RVe[i]に基づいて、教師画像のエッジポイントの分析を行う。エッジ分析部527は、分析結果を示す情報をボケ度検出部528に供給する。
ボケ度検出部528は、図1のボケ度検出部18と同様の機能を有しており、エッジポイントの分析結果に基づいて、教師画像のボケ度を検出する。ボケ度検出部528は、検出したボケ度を示す情報を画像判定部529に供給する。
画像判定部529は、図24乃至図26を参照して後述するように、ボケ度検出部528により検出されたボケ度に基づいて、教師画像のボケ判定を行う。すなわち、画像判定部529は、教師画像が、ボケ画像またはシャープ画像のどちらであるかを判定する。画像判定部529は、判定結果を示す情報を学習データ生成部514に供給する。
学習データ生成部514は、図24乃至図26を参照して後述するように、正解データ、画像分類部523による教師画像の分類結果、および、画像判定部529による判定結果に基づいて、学習データを生成する。学習データ生成部514は、生成した学習データを示す情報をパラメータ抽出部515に供給する。また、学習データ生成部514は、教師データ取得部511に教師データの取得を指令する。
パラメータ抽出部515は、図24乃至図27を参照して後述するように、学習データに基づいて、パラメータ供給部512から供給されるパラメータの組み合わせのうち、画像のボケ度の検出に最も適した組み合わせを抽出する。パラメータ抽出部515は、抽出したパラメータの組み合わせを示す情報を、図1の画像処理装置1などの外部の装置に供給する。
[動作説明]
次に、図24乃至図26のフローチャートを参照して、学習装置501により実行される学習処理について説明する。なお、この処理は、例えば、図示せぬ操作部を介して、学習処理の開始の指令が学習装置501に入力されたとき、開始される。
ステップS501において、教師データ取得部511は、教師データを取得する。教師データ取得部511は、取得した教師データに含まれる教師画像をエッジマップ作成部521に供給する。また、教師データ取得部511は、教師データに含まれる正解データを学習データ生成部514に供給する。
ステップS502において、エッジマップ作成部521は、図2のステップS1と同様の処理により、教師画像に対するエッジマップ1乃至3を作成する。エッジマップ作成部521は、作成したエッジマップ1乃至3をダイナミックレンジ検出部522およびローカルマックス作成部524に供給する。
ステップS503において、ローカルマックス作成部524は、図2のステップS2と同様の処理により、教師画像に対するローカルマックス1乃至3を作成する。ローカルマックス作成部524は、作成したローカルマックス1乃至3を、エッジポイント抽出部525およびエッジ分析部527に供給する。
ステップS504において、ダイナミックレンジ検出部522は、図2のステップS3と同様の処理により、教師画像のダイナミックレンジを検出する。ダイナミックレンジ検出部522は、検出したダイナミックレンジを示す情報を画像分類部523に供給する。
ステップS505において、学習データ生成部514は、変数iの値を1に設定し、変数jの値を1に設定する。学習データ生成部514は、設定した変数iおよび変数jの値をパラメータ供給部512に通知する。パラメータ供給部512は、ダイナミックレンジ判定値THdr[i](いまの場合、THdr[1])を画像分類部523に通知する。また、パラメータ供給部512は、エッジ基準値RVe[i](いまの場合、RVe[1])をエッジポイント抽出部525およびエッジ分析部527に通知する。さらに、パラメータ供給部512は、抽出基準値RVa[i](いまの場合、RVa[1])を抽出量判定部526に通知する。
ステップS506において、画像分類部523は、ダイナミックレンジ判定値THdr[i]に基づいて、教師画像の種類を分類する。具体的には、画像分類部523は、教師画像のダイナミックレンジ<THdr[i]である場合、教師画像をローダイナミックレンジの画像に分類する。また、画像分類部523は、教師画像のダイナミックレンジ≧THdr[i]である場合、教師画像をハイダイナミックレンジの画像に分類する。画像分類部523は、分類した結果を学習データ生成部514に通知する。
ステップS507において、学習データ生成部514は、画像分類部523による分類結果および正解データに基づいて、教師画像がローダイナミックレンジのボケ画像であるか否かを判定する。ローダイナミックレンジのボケ画像であると判定された場合、処理はステップS508に進む。
ステップS508において、学習データ生成部514は、変数lowBlurImage[i]の値を1つインクリメントする。なお、変数lowBlurImage[i]は、ダイナミックレンジ判定値THdr[i]および正解データに基づいて、ローダイナミックレンジのボケ画像に分類された教師画像の枚数をカウントするための変数である。その後、処理はステップS514に進む。
一方、ステップS507において、ローダイナミックレンジのボケ画像でないと判定された場合、処理はステップS509に進む。
ステップS509において、学習データ生成部514は、画像分類部523による分類結果および正解データに基づいて、教師画像がハイダイナミックレンジのボケ画像であるか否かを判定する。ハイダイナミックレンジのボケ画像であると判定された場合、処理はステップS510に進む。
ステップS510において、学習データ生成部514は、変数highBlurImage[i]の値を1つインクリメントする。なお、変数highBlurImage[i]は、ダイナミックレンジ判定値THdr[i]および正解データに基づいて、ハイダイナミックレンジのボケ画像に分類された教師画像の枚数をカウントするための変数である。その後、処理はステップS514に進む。
一方、ステップS509において、ハイダイナミックレンジのボケ画像でないと判定された場合、処理はステップS511に進む。
ステップS511において、学習データ生成部514は、画像分類部523による分類結果および正解データに基づいて、教師画像がローダイナミックレンジのシャープ画像であるか否かを判定する。ローダイナミックレンジのシャープ画像であると判定された場合、処理はステップS512に進む。
ステップS512において、学習データ生成部514は、変数lowSharpImage[i]の値を1つインクリメントする。なお、変数lowSharpImage[i]は、ダイナミックレンジ判定値THdr[i]および正解データに基づいて、ローダイナミックレンジのシャープ画像に分類された教師画像の枚数をカウントするための変数である。その後、処理はステップS514に進む。
一方、ステップS511において、ローダイナミックレンジのシャープ画像でないと判定された場合、すなわち、教師画像がハイダイナミックレンジのシャープ画像である場合、処理はステップS513に進む。
ステップS513において、学習データ生成部514は、変数highSharpImage[i]の値を1つインクリメントする。なお、変数highSharpImage[i]は、ダイナミックレンジ判定値THdr[i]および正解データに基づいて、ハイダイナミックレンジのシャープ画像に分類された教師画像の枚数をカウントするための変数である。その後、処理はステップS514に進む。
ステップS514において、エッジポイント抽出部525は、図2のステップS6と同様の処理により、エッジ基準値RVe[i]およびローカルマックス1乃至3に基づいて、エッジポイントを抽出し、エッジポイントテーブル1乃至3を作成する。エッジポイント抽出部525は、作成したエッジポイントテーブル1乃至3を抽出量判定部526に供給する。
ステップS515において、抽出量判定部526は、エッジポイント抽出量が適切であるか否かを判定する。抽出量判定部526は、エッジポイント抽出量≧抽出基準値RVa[j]である場合、エッジポイント抽出量が適切であると判定し、処理はステップS516に進む。
ステップS516において、エッジ分析部527は、エッジ分析を行う。具体的には、抽出量判定部526は、エッジポイントテーブル1乃至3をエッジ分析部527に供給する。エッジ分析部527は、図2のステップS13の処理と同様に、エッジポイントテーブル1乃至3、ローカルマックス1乃至3、および、エッジ基準値RVe[i]に基づいて、教師画像のエッジ分析を行う。エッジ分析部527は、エッジ分析により算出されたNsmallblurおよびNlargelblurを示す情報をボケ度検出部528に供給する。
ステップS517において、ボケ度検出部528は、図2のステップS14の処理と同様に、ボケ度BlurEstimationを算出する。ボケ度検出部528は、算出したボケ度BlurEstimationを示す情報を画像判定部529に供給する。
ステップS518において、画像判定部529は、ボケ判定を行う。具体的には、画像判定部529は、ボケ度BlurEstimationを所定の閾値と比較する。そして、画像判定部529は、ボケ度BlurEstimation≧所定の閾値である場合、教師画像はボケ画像であると判定し、ボケ度BlurEstimation<所定の閾値である場合、教師画像はシャープ画像であると判定する。画像判定部529は、判定結果を示す情報を学習データ生成部514に供給する。
ステップS519において、学習データ生成部514は、判定結果が正しいか否かを判定する。学習データ生成部514は、画像判定部529による判定結果と正解データが一致する場合、判定結果が正しいと判定し、処理はステップS520に進む。
ステップS520において、ステップS507の処理と同様に、ローダイナミックレンジのボケ画像であるか否かが判定される。ローダイナミックレンジのボケ画像であると判定された場合、処理はステップS521に進む。
ステップS521において、学習データ生成部514は、変数lowBlurCount[i][j]の値を1つインクリメントする。なお、変数lowBlurCount[i][j]は、ダイナミックレンジ判定値THdr[i]に基づいてローダイナミックレンジの画像に分類され、かつ、エッジ基準値RVe[j]および抽出基準値RVa[j]に基づいて、正しくボケ画像であると判定された教師画像の枚数をカウントするための変数である。その後、処理はステップS527に進む。
一方、ステップS520において、ローダイナミックレンジのボケ画像でないと判定された場合、処理はステップS522に進む。
ステップS522において、ステップS509の処理と同様に、ハイダイナミックレンジのボケ画像であるか否かが判定される。ハイダイナミックレンジのボケ画像であると判定された場合、処理はステップS523に進む。
ステップS523において、学習データ生成部514は、変数highBlurCount[i][j]の値を1つインクリメントする。なお、変数highBlurCount[i][j]は、ダイナミックレンジ判定値THdr[i]に基づいてハイダイナミックレンジの画像に分類され、かつ、エッジ基準値RVe[j]および抽出基準値RVa[j]に基づいて、正しくボケ画像であると判定された教師画像の枚数をカウントするための変数である。その後、処理はステップS527に進む。
一方、ステップS522において、ハイダイナミックレンジのボケ画像でないと判定された場合、処理はステップS524に進む。
ステップS524において、ステップS511の処理と同様に、ローダイナミックレンジのシャープ画像であるか否かが判定される。ローダイナミックレンジのシャープ画像であると判定された場合、処理はステップS525に進む。
ステップS525において、学習データ生成部514は、変数lowSharpCount[i][j]の値を1つインクリメントする。なお、変数lowSharpCount[i][j]は、ダイナミックレンジ判定値THdr[i]に基づいてローダイナミックレンジの画像に分類され、かつ、エッジ基準値RVe[j]および抽出基準値RVa[j]に基づいて、正しくシャープ画像であると判定された教師画像の枚数をカウントするための変数である。その後、処理はステップS527に進む。
一方、ステップS524において、ローダイナミックレンジのシャープ画像でないと判定された場合、すなわち、教師画像がハイダイナミックレンジのシャープ画像である場合、処理はステップS526に進む。
ステップS526において、学習データ生成部514は、変数highSharpCount[i][j]の値を1つインクリメントする。なお、変数highSharpCount[i][j]は、ダイナミックレンジ判定値THdr[i]に基づいてハイダイナミックレンジの画像に分類され、かつ、エッジ基準値RVe[j]および抽出基準値RVa[j]に基づいて、正しくシャープ画像であると判定された教師画像の枚数をカウントするための変数である。その後、処理はステップS527に進む。
一方、ステップS519において、学習データ生成部514は、画像判定部529による判定結果と正解データが一致しない場合、判定結果が間違っていると判定する。その後、ステップS520乃至S526の処理はスキップされ、処理はステップS527に進む。
また、ステップS515において、抽出量判定部526は、エッジポイント抽出量<抽出基準値RVa[j]である場合、エッジポイント抽出量が適切でないと判定する。その後、ステップS516乃至S526の処理はスキップされ、処理はステップS527に進む。
ステップS527において、学習データ生成部514は、変数j<JMAXであるか否かを判定する。変数j<JMAXであると判定された場合、処理はステップS528に進む。なお、例えば、上述した図23のパラメータの組み合わせが用いられる場合、JMAXの値は4200となる。
ステップS528において、学習データ生成部514は、変数jの値を1つインクリメントする。学習データ生成部514は、現在の変数iおよび変数jの値をパラメータ供給部512に通知する。パラメータ供給部512は、ダイナミックレンジ判定値THdr[i]を画像分類部523に通知する。また、パラメータ供給部512は、エッジ基準値RVe[j]をエッジポイント抽出部525およびエッジ分析部527に通知する。さらに、パラメータ供給部512は、抽出基準値RVa[j]を抽出量判定部526に通知する。
その後、処理はステップS514に戻り、ステップS527において、変数j≧JMAXであると判定されるまで、ステップS514乃至S528の処理が繰り返し実行される。
一方、ステップS527において、変数j≧JMAXであると判定された場合、処理はステップS529に進む。
ステップS529において、学習データ生成部514は、変数i<IMAXであるか否かを判定する。変数i<IMAXであると判定された場合、処理はステップS530に進む。なお、例えば、上述した図23のパラメータの組み合わせが用いられる場合、IMAXの値は41となる。
ステップS530において、学習データ生成部514は、変数iの値を1つインクリメントし、変数jの値を1に設定する。学習データ生成部514は、現在の変数iおよび変数jの値をパラメータ供給部512に通知する。パラメータ供給部512は、ダイナミックレンジ判定値THdr[i]を画像分類部523に通知する。また、パラメータ供給部512は、エッジ基準値RVe[j]をエッジポイント抽出部525およびエッジ分析部527に通知する。さらに、パラメータ供給部512は、抽出基準値RVa[j]を抽出量判定部526に通知する。
その後、処理はステップS506に戻り、ステップS529において、変数i≧IMAXであると判定されるまで、ステップS506乃至S530の処理が繰り返し実行される。
一方、ステップS530において、変数i≧IMAXであると判定された場合、処理はステップS531に進む。
ステップS531において、学習データ生成部514は、所定の枚数の教師画像について学習したか否かを判定する。学習データ生成部514は、まだ所定の枚数の教師画像について処理してないと判定した場合、教師データ取得部511に教師データの取得を指令する。その後、処理はステップS501に戻り、ステップS531において、所定の枚数の教師画像について処理したと判定されるまで、ステップS501乃至S531の処理が繰り返し実行される。
これにより、ダイナミックレンジ判定値THdr[i]、エッジ基準値RVe[j]、抽出基準値RVa[j]の各組み合わせを用いた場合の、所定の枚数の教師画像に対するボケ判定の判定結果が求められ、学習データとして蓄積される。
一方、ステップS531において、学習データ生成部514は、所定の枚数の教師画像について学習したと判定した場合、変数lowBlurImage[i]、highBlurImage[i]、lowSharpImage[i]、highSharpImage[i]、lowBlurCount[i][j]、highBlurCount[i][j]、lowSharpCount[i][j]、highSharpCount[i][j]の値を、学習データとしてパラメータ抽出部515に供給する。その後、処理はステップS532に進む。
ステップS532において、パラメータ抽出部515は、変数iの値を1に設定し、変数jの値を1に設定する。
ステップS533において、パラメータ抽出部515は、変数MinhighCV、MinlowCV、highJ、lowJの値を初期化する。すなわち、パラメータ抽出部515は、変数MinhighCVおよび変数MinlowCVの値を、それぞれ後述するhighCVおよびlowCVが取り得る最大値より大きい値に設定する。また、パラメータ抽出部515は、変数highJおよび変数lowJの値を0に設定する。
ステップS534において、パラメータ抽出部515は、以下の式(17)乃至(20)に基づいて、highSharp、lowSharp、highBlur、lowBlurを算出する。
highSharpは、ダイナミックレンジ判定値THdr[i]に基づいてハイダイナミックレンジに分類されたシャープ画像のうち、エッジ基準値RVe[j]および抽出基準値RVa[j]に基づいて、ボケ画像であると誤判定されたシャープ画像の割合を示している。すなわち、highSharpは、ダイナミックレンジ判定値THdr[i]、エッジ基準値RVe[j]、抽出基準値RVa[j]を用いた場合に、ハイダイナミックレンジのシャープ画像をボケ画像であると誤判定する確率を示している。同様に、lowSharpは、ダイナミックレンジ判定値THdr[i]、エッジ基準値RVe[j]、抽出基準値RVa[j]を用いた場合に、ローダイナミックレンジのシャープ画像をボケ画像であると誤判定する確率を示している。
また、highBlurは、ダイナミックレンジ判定値THdr[i]に基づいてハイダイナミックレンジに分類されたボケ画像のうち、エッジ基準値RVe[j]および抽出基準値RVa[j]に基づいて、ボケ画像であると正しく判定されたボケ画像の割合を示している。すなわち、highBlurは、ダイナミックレンジ判定値THdr[i]、エッジ基準値RVe[j]、抽出基準値RVa[j]を用いた場合に、ハイダイナミックレンジのボケ画像をボケ画像であると正しく判定する確率を示している。同様に、lowBlurは、ダイナミックレンジ判定値THdr[i]、エッジ基準値RVe[j]、抽出基準値RVa[j]を用いた場合に、ローダイナミックレンジのボケ画像をボケ画像であると正しく判定する確率を示している。
ステップS535において、パラメータ抽出部515は、以下の式(21)および式(22)に基づいて、highCV、lowCVを算出する。
highCVは、ステップS534で求めたhighShapの値をx1、highBlurの値をy1とした場合、x軸をhighSharp、y軸をhighBlurとする座標系における、座標(0,1)と座標(x1,y1)との間の距離を示している。従って、ハイダイナミックレンジの画像に対するボケ判定の精度が高いほど、highCVの値は小さくなり、ハイダイナミックレンジの画像に対するボケ判定の精度が低いほど、highCVの値は大きくなる。
同様に、lowCVは、ステップS534で求めたlowShapの値をx2、lowBlurの値をy2とした場合、x軸をlowSharp、y軸をlowBlurとする座標系における、座標(0,1)と座標(x2,y2)との間の距離を示している。従って、ローダイナミックレンジの画像のボケ判定の精度が高いほど、lowCVの値は小さくなり、ローダイナミックレンジの画像のボケ判定の精度が低いほど、lowCVの値は大きくなる。
ステップS536において、パラメータ抽出部515は、highCV<MinhighCVであるか否かを判定する。highCV<MinhighCVであると判定された場合、すなわち、今回求めたhighCVがこれまでの最小値である場合、処理はステップS537に進む。
ステップS537において、パラメータ抽出部515は、変数highJに現在の変数jの値を設定し、変数MinhighCVに今回求めたhighCVの値を設定する。その後、処理はステップS538に進む。
一方、ステップS536において、highCV≧MinhighCVであると判定された場合、ステップS537の処理はスキップされ、処理はステップS538に進む。
ステップS538において、パラメータ抽出部515は、lowCV<MinlowCVであるか否かを判定する。lowCV<MinlowCVであると判定された場合、すなわち、今回求めたlowCVがこれまでの最小値である場合、処理はステップS539に進む。
ステップS539において、パラメータ抽出部515は、変数lowJに現在の変数jの値を設定し、変数MinlowCVに今回求めたlowCVの値を設定する。その後、処理はステップS540に進む。
一方、ステップS538において、lowCV≧MinlowCVであると判定された場合、ステップS539の処理はスキップされ、処理はステップS540に進む。
ステップS540において、パラメータ抽出部515は、変数j<JMAXであるか否かを判定する。j<JMAXであると判定された場合、処理はステップS541に進む。
ステップS541において、パラメータ抽出部515は、変数jの値を1つインクリメントする。
その後、処理はステップS534に戻り、ステップS540において、変数j≧JMAXであると判定されるまで、ステップS534乃至S541の処理が繰り返し実行される。これにより、ダイナミックレンジ判定値がTHdr[i](いまの場合、THdr[1])である場合における、エッジ基準値RVe[j]および抽出基準値RVa[j](j=1〜JMAX)の各組み合わせに対するhighCVおよびlowCVが算出される。また、highCVが最小となったときの変数jの値が変数highJに格納され、lowCVが最小となったときの変数jの値が変数lowJに格納される。
図27は、1つのダイナミックレンジ判定値THdr[i]について、エッジ基準値RVe[j]および抽出基準値RVa[j]の各組み合わせに対して得られた(highSharp,highBlur)の値をプロットすることにより描かれるROC(Receiver Operating Characteristic)曲線の例を示している。なお、この座標系のx軸はhighSharpを示し、y軸はhighBlurを示している。
このROC曲線において座標(0,1)との間の距離が最小となる点に対応するエッジ基準値および抽出基準値の組み合わせが、エッジ基準値RVe[highJ]および抽出基準値RVa[highJ]となる。すなわち、ダイナミックレンジ判定値がTHdr[i]に設定されている場合、エッジ基準値RVe[highJ]および抽出基準値RVa[highJ]の組み合わせを用いたとき、ハイダイナミックレンジの画像に対するボケ判定の精度が最も高くなる。
同様に、ダイナミックレンジ判定値がTHdr[i]に設定されている場合、エッジ基準値RVe[lowJ]および抽出基準値RVa[lowJ]の組み合わせを用いたとき、ローダイナミックレンジの画像に対するボケ判定の精度が最も高くなる。
一方、ステップS540において、変数j≧JMAXであると判定された場合、処理はステップS542に進む。
ステップS542において、パラメータ抽出部515は、以下の式(23)に基づいて、CostValue[i]を算出する。
式(23)の右辺の第1項は、ダイナミックレンジ判定値THdr[i]、エッジ基準値RVe[highJ]、抽出基準値RVa[highJ]、エッジ基準値RVe[lowJ]および抽出基準値RVa[lowJ]の組み合わせを用いた場合に、シャープ画像を正しくシャープ画像であると判定する確率を示している。また、式(23)の右辺の第2項は、ダイナミックレンジ判定値THdr[i]、エッジ基準値RVe[highJ]、抽出基準値RVa[highJ]、エッジ基準値RVe[lowJ]および抽出基準値RVa[lowJ]の組み合わせを用いた場合に、ボケ画像を正しくボケ画像であると判定する確率を示している。
すなわち、CostValue[i]は、ダイナミックレンジ判定値THdr[i]、エッジ基準値RVe[highJ]、抽出基準値RVa[highJ]、エッジ基準値RVe[lowJ]および抽出基準値RVa[lowJ]の組み合わせを用いた場合の、画像のボケ判定の精度を示している。より具体的には、CostValue[i]は、ダイナミックレンジ判定値THdr[i]によりハイダイナミックレンジに分類される画像に対して、エッジ基準値RVe[highJ]および抽出基準値RVa[highJ]の組み合わせを用いてボケ判定を行い、ダイナミックレンジ判定値THdr[i]によりローダイナミックレンジに分類される画像に対して、エッジ基準値RVe[lowJ]および抽出基準値RVa[lowJ]の組み合わせを用いてボケ判定を行ったときに、シャープ画像を正確にシャープ画像であると判定する確率とボケ画像を正確にボケ画像であると判定する確率の和を示している。従って、CostValue[i]の最大値は2となる。
ステップS543において、パラメータ抽出部515は、変数highJ[i]の値を現在の変数highJの値に設定し、変数lowJ[i]の値を現在の変数lowJの値に設定する。
ステップS544において、パラメータ抽出部515は、変数i<IMAXであるか否かを判定する。変数i<IMAXであると判定された場合、処理はステップS545に進む。
ステップS545において、パラメータ抽出部515は、変数iの値を1つインクリメントし、変数jの値を1に設定する。
その後、処理はステップS533に戻り、ステップS544において、変数i≧IMAXであると判定されるまで、ステップS533乃至S545の処理が繰り返し実行される。これにより、THdr[1]からTHdr[IMAX]までの各ダイナミックレンジ判定値THdr[i]に対して、highCVが最小となるエッジ基準値RVe[j]および抽出基準値RVa[j]の組み合わせ、lowCVが最小となるエッジ基準値RVe[j]および抽出基準値RVa[j]の組み合わせが抽出される。また、各ダイナミックレンジ判定値THdr[i]に対して、抽出されたエッジ基準値RVe[j]および抽出基準値RVa[j]の組み合わせを用いた場合のCostValue[i]が算出される。
一方、ステップS544において、変数i≧IMAXであると判定された場合、処理はステップS546に進む。
ステップS546において、パラメータ抽出部515は、CostValue[i]が最大となるパラメータの組み合わせを抽出する。換言すれば、パラメータ抽出部515は、画像のボケ判定の精度が最も高くなるパラメータの組み合わせを抽出する。具体的には、パラメータ抽出部515は、CostValue[1]からCostValue[IMAX]までのCostValue[i]の中から最大値を抽出する。また、パラメータ抽出部515は、CostValue[i]が最大となるiの値をIとし、highJ[I]=HJ、lowJ[I]=LJとした場合、ダイナミックレンジ判定値THdr[I]、エッジ基準値RVe[HJ]、抽出基準値RVa[HJ]、エッジ基準値RVe[LJ]、および、抽出基準値RVa[LJ]の組み合わせを、図2を参照して上述したボケ度検出処理に用いるパラメータとして抽出する。
そして、ダイナミックレンジ判定値THdr[I]が、図2のステップS4の処理において画像のダイナミックレンジを判定する際の閾値として用いられる。また、エッジ基準値RVe[LJ]および抽出基準値RVa[LJ]が、ステップS5の処理において設定される演算パラメータの初期値として用いられる。さらに、エッジ基準値RVe[HJ]および抽出基準値RVa[HJ]が、ステップS9の処理において設定される演算パラメータの初期値として用いられる。
以上のようにして、図1の画像処理装置1において使用されるダイナミックレンジ判定値、エッジ基準値の初期値、および、抽出基準値の初期値をより適切な値に設定することができる。また、エッジ基準値および抽出基準値の初期値を、ダイナミックレンジ判定値により分類される画像の種類毎に、より適切な値に設定することができる。その結果、より高い精度で入力画像のボケ具合を検出することができる。
<10.第5の実施の形態の変形例>
なお、同様の処理により、ダイナミックレンジの範囲に基づいて画像の種類を3種類以上に分類し、各画像の種類ごとに適切なエッジ基準値および抽出基準値の初期値を求めることも可能である。
また、ダイナミックレンジ判定値の学習を行わずに、ダイナミックレンジ判定値を所定の値に固定して、同様の処理により、エッジ基準値および抽出基準値の初期値のみ求めるようにすることも可能である。
さらに、上述した画像サイズ、撮影場所など、ダイナミックレンジ以外の画像の特徴量に基づいて画像の種類を分類し、画像の種類毎にエッジ基準値および抽出基準値の初期値を設定する場合にも、この学習処理を適用することが可能である。例えば、画像サイズにより画像の種類を分類する場合、図23のパラメータの組み合わせにおいて、ダイナミックレンジ判定値の代わりに、画像サイズの判定値を用いることにより、画像サイズの判定値、エッジ基準値および抽出基準値の適切な組み合わせを求めることができる。
また、同様に、複数の特徴量(例えば、ダイナミックレンジと画像サイズ)を組み合わせて画像の種類を分類し、画像の種類毎にエッジ基準値および抽出基準値の初期値を設定する場合にも、この学習処理を適用することが可能である。
さらに、例えば、上述した白飛び対策における閾値THwなど、エッジ基準値および抽出基準値以外の演算パラメータについても、同様の学習処理により、適切な値を求めることができる。これは、例えば、図23のパラメータの組み合わせにおける演算パラメータのセットに、求めたい演算パラメータの項目を追加して、学習処理を行うことにより実現することができる。
また、以上の説明では、学習装置501において、教師画像からエッジマップを作成する例を示したが、外部の装置で教師画像に対するエッジマップを作成し、エッジマップを教師データに含めるようにしてもよい。同様に、外部の装置で教師画像に対するローカルマックスを作成し、ローカルマックスを教師データに含めるようにしてもよい。
上述した一連の処理は、ハードウエアにより実行することもできるし、ソフトウエアにより実行することもできる。一連の処理をソフトウエアにより実行する場合には、そのソフトウエアを構成するプログラムが、専用のハードウエアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、プログラム記録媒体からインストールされる。
図28は、上述した一連の処理をプログラムにより実行するコンピュータのハードウエアの構成例を示すブロック図である。
コンピュータにおいて、CPU(Central Processing Unit)701,ROM(Read Only Memory)702,RAM(Random Access Memory)703は、バス704により相互に接続されている。
バス704には、さらに、入出力インタフェース705が接続されている。入出力インタフェース705には、キーボード、マウス、マイクロホンなどよりなる入力部706、ディスプレイ、スピーカなどよりなる出力部707、ハードディスクや不揮発性のメモリなどよりなる記憶部708、ネットワークインタフェースなどよりなる通信部709、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブルメディア711を駆動するドライブ710が接続されている。
以上のように構成されるコンピュータでは、CPU701が、例えば、記憶部708に記憶されているプログラムを、入出力インタフェース705及びバス704を介して、RAM703にロードして実行することにより、上述した一連の処理が行われる。
コンピュータ(CPU701)が実行するプログラムは、例えば、磁気ディスク(フレキシブルディスクを含む)、光ディスク(CD-ROM(Compact Disc-Read Only Memory),DVD(Digital Versatile Disc)等)、光磁気ディスク、もしくは半導体メモリなどよりなるパッケージメディアであるリムーバブルメディア711に記録して、あるいは、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の伝送媒体を介して提供される。
そして、プログラムは、リムーバブルメディア711をドライブ710に装着することにより、入出力インタフェース705を介して、記憶部708にインストールすることができる。また、プログラムは、有線または無線の伝送媒体を介して、通信部709で受信し、記憶部708にインストールすることができる。その他、プログラムは、ROM702や記憶部708に、あらかじめインストールしておくことができる。
なお、コンピュータが実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われるプログラムであっても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであっても良い。
また、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。