以下に本発明の最良の形態を説明するが、開示される発明と実施の形態との対応関係を例示すると、次のようになる。明細書中には記載されているが、発明に対応するものとして、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その発明に対応するものではないことを意味するものではない。逆に、実施の形態が発明に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その発明以外の発明には対応しないものであることを意味するものでもない。
さらに、この記載は、明細書に記載されている発明の全てを意味するものではない。換言すれば、この記載は、明細書に記載されている発明であって、この出願では請求されていない発明の存在、すなわち、将来、分割出願されたり、補正により出現し、追加される発明の存在を否定するものではない。
第1の側面の画像処理装置は、補正対象の画像のぼけ補正に関するパラメータ(例えば、パラメータσ)を取得するパラメータ取得手段(例えば、図14のステップS51の処理を実行する図10のユーザIF部31)と、前記補正対象の画像の特徴量(例えば、画像データの1次微分値、2次微分値、ダイナミックレンジ、または分散)を検出する特徴量検出手段(例えば、図14のステップS52,S53の処理を実行する図13の特徴量検出部61-1乃至61-4)と、前記特徴量に基づいて前記パラメータを補正して補正パラメータを生成するパラメータ生成手段(例えば、図14のステップS55の処理を実行する図13のルックアップテーブル62-1乃至62-4)と、前記補正パラメータに基づいて前記補正対象の画像のぼけを補正するぼけ補正手段(例えば、図12のステップS32の処理を実行する図10のぼけ補正部33)とを備えることを特徴とする。
前記パラメータ生成手段は、前記補正対象の画像の前記特徴量の最大値としての第1の特徴量(例えば、図19の特徴量V80)が、取得された前記パラメータ(例えば、図20のパラメータσ70)に対応する最大の前記特徴量としての第2の特徴量(例えば、図20の特徴量V70)より小さい場合(例えば、第1の特徴量が図16の特徴量V80である場合)、取得された前記パラメータ(例えば、図16のパラメータσ70)をそのまま前記補正パラメータとし(例えば、図16の縦の座標軸のパラメータσ70に対応する枠の中に補正パラメータとして記載されているパラメータσ70とし)、大きい場合(例えば、第1の特徴量が図20の特徴量V60である場合)、前記第1の特徴量より大きい特徴量としての第3の特徴量(例えば、図20の特徴量V50)が最大の特徴量として対応する前記パラメータ(例えば、図20のパラメータσ50)を、前記補正パラメータとする(例えば、図16の縦の座標軸のパラメータσ70に対応する枠の中の補正パラメータをパラメータσ50とする)。
前記特徴量検出手段は、複数の前記特徴量を検出し、前記パラメータ生成手段は、複数の前記特徴量に対応する複数の前記補正パラメータを生成し、前記画像処理装置は、複数の前記補正パラメータから最小のものを選択する補正パラメータ選択手段(例えば、図14のステップS56の処理を実行する図13の選択部63)をさらに備え、前記ぼけ補正手段は、選択された前記補正パラメータに基づいて前記補正対象の画像のぼけを補正する。
前記特徴量検出手段(例えば、図13の特徴量検出部61-1乃至61-4を構成する特徴量抽出部71-1乃至71-4)は、前記特徴量として、前記補正対象の画像の一部の領域内の複数の画素の前記特徴量のうちの最大値を検出する(例えば、図14のステップS54の処理)。
前記ぼけ補正手段は、前記補正対象の画像の一部の領域(例えば、図15の観察領域)を、取得された前記パラメータの値に基づいた大きさに設定する(例えば、図14のステップS52の処理)。
前記ぼけ補正手段は、隣接する画素の画素値の差分(例えば、差分絶対値)を利用して、前記補正対象の画像のぼけを補正する演算を行う(例えば、図23のステップS104の処理)。
前記ぼけ補正手段は、前記差分を基準値と比較してエッジの方向を判定し(例えば、図23と図24のステップS105,S108,S111,S114の処理)、前記エッジが存在する方向の前記差分は、存在しない方向の差分に較べ、利用する割合を少なくする(例えば、図23と図24のステップS106,S107,S109,S110,S112,S113,S115,S116の処理)。
第1の側面の画像処理方法、記録媒体のプログラム、並びにプログラムは、補正対象の画像のぼけ補正に関するパラメータ(例えば、パラメータσ)を取得するパラメータ取得ステップ(例えば、図14のステップS51)と、前記補正対象の画像の特徴量(例えば、画像データの1次微分値、2次微分値、ダイナミックレンジ、または分散)を検出する特徴量検出ステップ(例えば、図14のステップS52,S53)と、前記特徴量に基づいて前記パラメータを補正して補正パラメータを生成するパラメータ生成ステップ(例えば、図14のステップS55)と、前記補正パラメータに基づいて前記補正対象の画像のぼけを補正するぼけ補正ステップ(例えば、図12のステップS32)とを含むことを特徴とする。
第2の側面の画像処理装置は、学習用の画像データを取得する取得手段(例えば、図29のステップS151の処理を実行する図28の取得部211)と、画像にぼけを発生するためのパラメータを設定する設定手段(例えば、図29のステップS152の処理を実行する図29の設定部213)と、取得された前記画像データに前記パラメータを含む関数(例えば、式(2)のガウス関数)を適用してぼけの発生した画像の画像データを生成する生成手段(例えば、図29のステップS153の処理を実行する図28の演算部212)と、生成された前記画像データの画像の特徴量(例えば、画像データの1次微分値、2次微分値、ダイナミックレンジ、または分散)を検出する特徴量検出手段(例えば、図29のステップS154の処理を実行する図28の特徴量抽出部214)と、設定された前記パラメータに対応するぼけが発生した画像の前記特徴量の最大値を検出する最大値検出手段(例えば、図29のステップS156の処理を実行する図28の最大値検出部216)と、指定パラメータと指定特徴量(例えば、図16のルックアップテーブルのアドレスとしての縦軸のパラメータσと横軸の特徴量V)が指定されたとき、前記指定パラメータと前記指定特徴量に対応する補正パラメータを読み出すテーブル(例えば、図16のルックアップテーブル)であって、前記指定特徴量が、前記指定パラメータ(例えば、図16の指示値としてのパラメータσ80)に対応する前記特徴量の最大値(例えば、図19の特徴量V80)より小さい場合(例えば、指定特徴量が図16の特徴量V90である場合)、前記指定パラメータを前記補正パラメータとし(例えば、図16のルックアップテーブルの縦の座標軸のパラメータσ80に対応する枠の中に補正パラメータとして記載されているパラメータσ80とし)、大きい場合(例えば、指定特徴量が図16の特徴量V60である場合)、前記指定特徴量より値が大きい特徴量(例えば、図16の特徴量V50)が前記特徴量の最大値として対応する前記パラメータ(例えば、図17のパラメータσ50)を前記補正パラメータとする(例えば、図16のルックアップテーブルの縦の座標軸のパラメータσ70に対応する枠の中の補正パラメータをパラメータσ50とする)前記テーブルを作成する作成手段(例えば、図29のステップS157の処理を実行する図28のテーブル作成部217)とを備えることを特徴とする。
前記特徴量の度数を検出する度数検出手段(例えば、図29のステップS155の処理を実行する図28の度数検出部215)をさらに備え、前記最大値検出手段は、検出された度数が予め定められている閾値より大きい前記特徴量の中から前記特徴量の最大値を検出する。
第2の側面の画像処理方法、記録媒体のプログラム、並びにプログラムは、学習用の画像データを取得する取得ステップ(例えば、図29のステップS151)と、画像にぼけを発生するためのパラメータを設定する設定ステップ(例えば、図29のステップS152)と、取得された前記画像データに前記パラメータを含む関数(例えば、式(2)のガウス関数)を適用してぼけの発生した画像の画像データを生成する生成ステップ(例えば、図29のステップS153)と、生成された前記画像データの画像の特徴量(例えば、画像データの1次微分値、2次微分値、ダイナミックレンジ、または分散)を検出する特徴量検出ステップ(例えば、図29のステップS154)と、設定された前記パラメータに対応するぼけが発生した画像の前記特徴量の最大値を検出する最大値検出ステップ(例えば、図29のステップS156)と、指定パラメータと指定特徴量(例えば、図16のルックアップテーブルのアドレスとしての縦軸のパラメータσと横軸の特徴量V)が指定されたとき、前記指定パラメータと前記指定特徴量に対応する補正パラメータを読み出すテーブル(例えば、図16のルックアップテーブル)であって、前記指定特徴量が、前記指定パラメータ(例えば、図16の指示値としてのパラメータσ80)に対応する前記特徴量の最大値(例えば、図19の特徴量V80)より小さい場合(例えば、指定特徴量が図16の特徴量V90である場合)、前記指定パラメータを前記補正パラメータとし(例えば、図16のルックアップテーブルの縦の座標軸のパラメータσ80に対応する枠の中に補正パラメータとして記載されているパラメータσ80とし)、大きい場合(例えば、指定特徴量が図16の特徴量V60である場合)、前記指定特徴量より値が大きい特徴量(例えば、図16の特徴量V50)が前記特徴量の最大値として対応する前記パラメータ(例えば、図17のパラメータσ50)を前記補正パラメータとする(例えば、図16のルックアップテーブルの縦の座標軸のパラメータσ70に対応する枠の中の補正パラメータをパラメータσ50とする)前記テーブルを作成する作成ステップ(例えば、図29のステップS157)とを含むことを特徴とする。
次に、本発明を適用した実施の形態について図面を参照して説明する。
図1は、本発明を適用した画像処理装置の構成例を表している。この画像処理装置1は、画像補正処理装置11と表示デバイス12とにより構成されている。画像補正処理装置11は、入力された画像データの画像のぼけを補正し、出力する。表示デバイス12は、画像補正処理装置11より出力された画像データに基づく画像を表示し、ユーザ13に呈示する。
次に、図2のフローチャートを参照して、この画像処理装置1の画像処理について説明する。
ステップS1において、画像補正処理装置11は、画像補正処理を行う。その詳細は図12を参照して後述するが、画像補正処理装置11は、入力された画像データに対して、ユーザ13より指示されたパラメータσに対応する補正処理を行い、補正処理した後の画像データを出力する。この画像データは、後段の図示せぬ装置に出力されるとともに、表示デバイス12に供給され、画像として表示される。
ユーザ13は、表示デバイス12に表示された画像をみて、ぼけが充分補正されているか否かを判定し、ぼけがまだ充分補正されていない場合には、パラメータσの値を異なる値になるようにつまみ等を調整する。
そこで、ステップS2において、画像補正処理装置11は、ユーザより新たな操作がなされたか否かを判定し、新たな操作がなされた場合には、処理をステップS1に戻し、再び設定された新たなパラメータ信号に基づく画像補正処理を行う。
補正された画像データに基づく画像が、表示デバイス12により表示されるので、ユーザ13は、再びこの画像をみて、画像の動きをさらに補正するか否かを判断する。そして、さらに、ぼけを補正する必要があると判断した場合には、つまみを調整することで、さらに新たなパラメータσの値を設定する。
以上のような処理が繰り返し実行される。そして、ステップS2において、新たな操作がなされなかったと判定された場合、処理は終了される。
次に、画像補正処理装置11における画像補正の原理について説明する。本発明では、ぼけの発生について、次式に基づくモデルが仮定される。
上記式におけるX(x+i,y+j)は、座標X(x+i,y+j)のぼけが発生していない画像のデータを表し、これに重み付け係数W(i,j)を乗算した値をたたみ込むことで、ぼけが発生した画像のデータY(x,y)が発生するものとされる。そして、重み付け係数W(i,j)は、次式に示されるように、ガウス関数とされる。
パラメータσは、ぼけに対応するパラメータであり、パラメータσの値が大きくなるほど、ぼけも大きくなる。
重み付け係数W(i,j)の値は、パラメータσの値が小さいと、図3に示されるように、比較的急峻な特性となり、パラメータσの値が大きいと、図4に示されるように、全体的になだらかな広い範囲に渡った分布となる。
なお、図3と図4の水平面内のプラスの方向は、それぞれ水平方向(i)と垂直方向(j)の画素位置を表し、縦軸は重み付け係数W(i,j)の値を表す。
以上の関係を、水平方向に1軸に配慮されたCCD撮像装置の画素毎の出力について説明すると、図5に示されるようになる。
すなわち、図5の最下段に示されるP0乃至P8は、それぞれ水平方向に配列されているCCD撮像装置のぼけた画像の電荷の蓄積を表す。図5の最上段のX0乃至X8は、それぞれ、画素P0乃至P8が、ぼけのない画像を撮像した場合の電荷の蓄積を表す。図5の中段のグラフは、重み付け係数W(i)の特性を表す。この例においては、変数iが、-2≧i≧2とされ、中央の係数がW(0)とされ、その左側の係数がW(-1)、さらにその左側の係数はW(-2)とされる。同様に、中央の係数W(0)の右側の係数はW(1)とされ、さらにその右側の係数はW(2)とされる。各係数W(i)の値は、W(0)が最も大きく、係数W(-1),W(1)がそれより小さく、係数W(-2),W(2)は、さらにそれより小さい値となっている。
上記した式(1)に基づいて、画素P4の観測値Y2を式で表すと、次のようになる。
Y2 = W(-2)X2 + W(-1)X3 + W(0)X4 + W(1)X5 + W(2)X6
・・・(3)
同様に、図5の画素P2の観測値Y0を求める場合、画素P2を中心とする図6の枠90−1で示される真値で演算を行うことにより、次のように観測値Y0が求められる。
Y0 = W(-2)X0 + W(-1)X1 + W(0)X2 + W(1)X3 + W(2)X4
・・・(4)
さらに、画素P3の画素Y1を求める場合、画素P3を中心とする図6の枠90−2で示される真値に基づいて演算を行うことにより、次のように観測値Y1が求められる。
Y1 = W(-2)X1 + W(-1)X2 + W(0)X3 + W(1)X4 + W(2)X5
・・・(5)
観測値Y3,Y4についても同様に演算することが可能である。
図5に示される1次元の関係を2次元に展開して表すと、図7と図8に示されるようになる。
すなわち、図7は、観測値Ytを中心とする7×7画素の観察領域の観測値Y(x,y)を表す。この観測値Y(x,y)は、図8に示される真値X(x,y)の値を重み付け係数により、積和演算することで得られた値となる。
具体的には、図7の左上の画素Aの値は、図8の画素Aに対応する画素A’を中心とする5×5画素の枠(a)で示される25個の画素に対応する真値に基づいて、次式で表される。
同様に、図7の画素Aの右隣の画素Bの観測値は、図8の画素Bに対応する画素B’を中心とする枠(b)で示される25個の画素に対応する真値に基づいて、次式で演算される。
画素Bのさらに右隣の画素Cについては、図8の画素Cに対応する画素C’を中心とする枠(c)内の25個の画素に対応する真値に基づいて、次式に表されるように演算される。
なお、図8のXtは、図7の観測値Ytに対応する真値であり、枠(t)は、真値Xtを中心とする5×5画素の枠である。
式(8),(9)における重み係数W(i,j)は、式(6)における場合と同様に、式(7)で表される。
以上のようにして、図7に示される各画素に対応する観測値を全て求めると、次式で表されるような行列式が得られる。
式(10)乃至式(13)で表される行列式から、Wfの逆行列を演算することができれば、真値X(x,y)を推定することが可能である。
しかしながら、図7の観察領域21とそれに対応する図8の混合領域22の面積(画素数)の違いをみても分かるように、観測値Y(x,y)に比べて、推定するべき真値X(x,y)の数が多いため、上記した式(10)乃至式(13)だけでは、真値X(x,y)を解くことはできない。
そこで、本発明においては、式(10)乃至式(13)に加えて、次の式(14)乃至式(17)が関係式として導入される。これらは、それぞれ、上、右、下、または左側に隣接する画素との差分に係数Waを乗算した値が0となる条件である。
Wa(X(x,y)−X(x,y−1))=0 ・・・(14)
Wa(X(x,y)−X(x+1,y))=0 ・・・(15)
Wa(X(x,y)−X(x,y+1))=0 ・・・(16)
Wa(X(x,y)−X(x−1,y))=0 ・・・(17)
すなわち、一般的な画像の特性として、隣接する画素間の相関は高いので、上記式(14)乃至式(17)における係数Waを、極めて小さい値にしておけば、それほど大きな矛盾とはならない。また、入力画像から推定されるアクティビティなどに基づいて、式(14)乃至式(17)における係数Waを、それぞれ画素毎に切り替えることも可能である。このように、式(10)乃至式(13)に加えて、図8に示される11×11の真値X(x,y)の領域全体に対して、あるいは領域内の一部に対して、式(14)乃至式(17)の関係式を補助的に追加することで、真値X(x,y)の数が式の数と等しいかそれ以下となり、次式に基づいて、真値X(x,y)を演算することができる。
Ys=WsXs ・・・(18)
Xs=Ws -1Ys ・・・(19)
また、図9に示されるように、エッジが存在する方向に基づいて式(14)乃至式(17)のいずれを付加するかを選択するようにすることができる。
すなわち、画素P0aは、上下左右に接するいずれの画素もエッジ25Aにまたがっていない。そこで、この場合には、式(14)乃至式(17)の全ての条件を付加することができる。これに対して、画素P0bは、上下と右側に隣接する画素との間にはエッジ25Aが存在しないが、左側に隣接する画素との間にはエッジ25Aが存在する。そこで、この場合には、式(14)乃至式(16)だけを条件として加えるようにし、左側に隣接する画素との差分に対応する式(17)は条件として加えないようにすることができる。このようにすることで、より正確な補正が可能となる。
同様に、画素P0cは、右側と下側に隣接する画素との間にはエッジが存在しないが、上側と左側に隣接する画素との間にはエッジ25Aが存在する。そこで、右側または下側に隣接する画素との差分に対応する式(15)と式(16)は条件式として加え、上側または左側に隣接する画素との差分に対応する式(14)と式(17)は条件として加えないようにすることができる。
なお、条件として加えないということは、式(14)乃至式(17)における係数Waの値を0とすることを意味する。係数Waの値を0とするのではなく、エッジが存在する方向の係数Waの値をエッジが存在しない方向の係数Waの値に比べて小さい値に設定するようにしてもよい。
なお、この場合にも、図9Aに示される観測値の画素P0a,P0b,P0cの上下左右に隣接する画素との差分の値が、図9Bにおける対応する真値の画素P1a,P1b,P1cの上下左右に隣接する画素との差がほぼ等しいことが前提となる。
図10は、画像補正処理装置11のより詳細な構成例を表している。この画像補正処理装置11は、ユーザインタフェース(IF)部31、パラメータ補正部32、およびぼけ補正部33とにより構成されている。
ユーザインタフェース部31は、図11に示されるように、つまみ51を有し、それを反時計方向に回転することでパラメータσの値を小さくし、時計方向に回転させることでパラメータσの値を大きくすることができる。ユーザインタフェース部31により指定されたパラメータσは、パラメータ補正部32に供給される。パラメータ補正部32は、入力された画像データの特徴量に基づいて、ユーザインタフェース部31より供給されたパラメータσの値を補正し、補正されたパラメータσをぼけ補正部33に供給する。ぼけ補正部33は、補正されたパラメータσに基づいて、入力された画像データの画像のぼけを補正する処理を行い、その画像データを出力する。
図10の画像補正処理装置11の処理(図2のステップS1の画像補正処理に対応する)は、図12のフローチャートに示されるようになる。
すなわち、ユーザが、ユーザインタフェース部31を操作して、所定のパラメータσを指定すると、ステップS31において、パラメータ補正部32は、パラメータ補正処理を実行する。その詳細は図14を参照して後述するが、これにより、パラメータσが画像データの特徴量に基づいて補正され、補正されたパラメータσが生成される。
ステップS32において、ぼけ補正部33はぼけ補正処理を実行する。その詳細は図23と図24のフローチャートを参照して後述するが、これにより、入力された画像データの画像のぼけが補正され、ぼけが補正された画像の画像データが出力され、表示デバイス12に供給され、画像として表示される。
そして、ユーザは、この画像を見てさらに補正が必要と判断した場合には、再びユーザインタフェース部31を操作して新たなパラメータσを指定する。このような処理が繰り返されることで、ぼけが補正された画像の画像データが得られることになる。
図13は、パラメータ補正部32の詳細な構成例を表している。パラメータ補正部32は、入力された画像データから、それぞれ異なる特徴量を検出する特徴量検出部61−1乃至61−4、特徴量検出部61−1乃至61−4より出力された特徴量と、ユーザインタフェース部31より供給されたパラメータσの値に基づいて、推定パラメータを推定するルックアップテーブル(LUT)62−1乃至62−4、並びにルックアップテーブル62−1乃至62−4より出力された4個の推定パラメータの中から、最小の推定パラメータを補正パラメータとして1つ選択する選択部63により構成されている。
特徴量検出部61−1は、特徴量抽出部71−1と最大値探索部72−1により構成されている。特徴量抽出部71−1は、入力された画像データが、ユーザインタフェース部31より供給されるパラメータσの値に基づいて設定される観察領域の画素の特徴量を抽出する。観察領域の範囲の画素の数がN個ある場合には、N個の特徴量が抽出されることになる。最大値探索部72−1は、特徴量抽出部71−1より供給されたN個の特徴量からその最大値を探索し、ルックアップテーブル62−1に出力する。
特徴量検出部61−2乃至61−4も、特徴量検出部61−1と同様に、特徴量抽出部71−2乃至71−4と最大値探索部72−2乃至72−4を有している。その基本的動作は、特徴量検出部61−1における場合と同様である。
特徴量抽出部71−1乃至71−4がそれぞれ抽出する特徴量は、いずれもアクティビティ系の特徴量であり、ぼけ量に対応するパラメータσと一定の相関を有する特徴量である。すなわち、パラメータσが大きければ、特徴量は小さくなるか或いは大きくなる。具体的には、画素値の1次微分値、2次微分値、N個の画素のダイナミックレンジ、N個の画素の分散などが抽出される。
1次微分値は、注目画素をB、その左隣の画素をA、右隣の画素をCとするとき、注目画素Bと左隣の画素Aとの差の絶対値|B−A|と、注目画素Bと右隣の画素Cとの差の絶対値|B−C|のうち、大きい方の値とすることができる。また、2次微分値は、注目画素Bの2倍の値(2B)と、左右の画素の和(A+C)との差の絶対値|2B−(A+C)|とすることができる。また、N個の画素のダイナミックレンジDRは、N個の画素のうちの最大値MAX と最小値MIN の差分であり、DR=MAX−MIN で表される。また、N個の画素の分散(N個の画素の平均値とN個の各画素との差の2乗の総和をNで割った値)の代わりに、N個の画素の平均値とN個の各画素との差の2乗の総和や、N個の画素の平均値とN個の各画素との差の絶対値の総和、若しくはその差の絶対値の総和をNで割った値などを用いてもよい。
次に、図14のフローチャートを参照して、パラメータ補正処理について説明する。この処理は、図12のステップS31の処理として行われるものである。
ステップS51において、ユーザインタフェース部31は、パラメータを取得する。すなわち、ユーザがつまみ51を操作することで入力したパラメータσの値が取得される。
取得されたパラメータσは、特徴量抽出部71−1乃至71−4とルックアップテーブル62−1乃至62−4に供給される。
ステップS52において、特徴量抽出部71−1乃至71−4は観察領域を設定する。
すなわち、特徴量抽出部71−1乃至71−4は、まず、ステップS51の処理で取得されたパラメータσに対応する領域を観察領域として設定する。具体的には、図15に示されるように、注目画素からパラメータσの3倍の値の数の画素を含む領域が観察領域とされる。図15Aは、3σの値が1である場合の観察領域を表している。ただし、3σの値は、丸め処理された値である。従って、σの値が0.1,0.2,0.3のいずれの場合も、3σの値は1とされる。図15Bは、3σの値が2である場合の観察領域を表す。この場合のσの値は、0.4,0.5,または0.6である。
以下、同様に、図15C乃図15Iは、3σの値がそれぞれ3乃至9である場合における観察領域を表している。図中下に表されているσの値は、それぞれの値を3倍して、丸め処理した場合に対応する観察領域となることを表す。この例の場合は、図15に示されるように、観察領域は、注目画素を中心とするほぼ円形の領域とされる。このように、観察領域の大きさをパラメータσの値が大きくなる程大きくなるように設定することで、ぼけに影響していない画素の特徴量が検出され、誤った処理が行われることが防止される。
次に、ステップS53において、特徴量抽出部71−1乃至71−4は特徴量を抽出する。上述したように、特徴量抽出部71−1乃至71−4は、それぞれ自分自身に割り当てられた他とは異なる特徴量を抽出する。例えば、特徴量抽出部71−1は1次微分値を特徴量として抽出し、特徴量抽出部71−2は2次微分値を特徴量として抽出し、特徴量抽出部71−3はダイナミックレンジを特徴量として抽出し、特徴量抽出部71−4は分散を特徴量として抽出する。このように、複数の特徴量を検出することで、本来なされるべきぼけパラメータの補正もれを回避することができる。
ステップS54において、最大値探索部72−1乃至72−4は最大値(ぼけが最も少い特徴量)を探索する。すなわち、最大値探索部72−1は、特徴量抽出部71−1が抽出した観察領域内の画素の1次微分値の最大値を探索する。最大値探索部72−2は、特徴量抽出部71−2が抽出した観察領域内の画素の2次微分値の最大値を探索する。最大値探索部72−3は、特徴量抽出部71−3が抽出した観察領域内の画素のダイナミックレンジの最大値を探索する。最大値探索部72−4は、特徴量抽出部71−4が抽出した観察領域内の画素の分散を探索する。なお、分散の場合は、その値が1個であるので、その値がそのまま最大値として探索される。
ステップS55において、ルックアップテーブル62−1乃至62−4は、統計的データを参照して推定パラメータを推定する。その詳細は、図16乃至図21を参照して後述するが、これによりユーザインタフェース部31より供給されたユーザにより指定されたパラメータσの値が、推定パラメータに変換される。この推定パラメータは、ユーザが指定したパラメータσの値に対応する特徴量の最大値が、最大値探索部72−1乃至72−4で探索された最大値より小さい場合には、最大値探索部72−1乃至72−4で探索された最大値より大きな値の最大値が対応するパラメータの値に変更される。これにより、ぼけていない画像に対して、オーバーシュートやリンギングなどが発生し、画像が劣化してしまうことが抑制される。
ステップS56において、選択部63は、ルックアップテーブル62−1乃至62−4が出力した推定パラメータの中から、最小の推定パラメータを選択する処理を実行する。
すなわち、ルックアップテーブル62−1乃至62−4が出力する4個の推定パラメータの大小が比較され、最小の推定パラメータ(ぼけが最も少いパラメータ)が1つ選択され、それが補正パラメータとして出力される。これにより、ユーザが指定したパラメータσが補正パラメータに変換(補正)されたことになる。
このようにして生成された補正パラメータは、画像の一部のぼけていない部分が、ぼけ補正処理によりオーバーシュートやリンギングなどの劣化を抑制可能な値に設定されている。
図16は、ルックアップテーブル62−1乃至62−4の例を表している。これらは、いずれも同様の構成とされている。図16が、例えば、ルックアップテーブル62−1であるとすると、同図に示されるように、ルックアップテーブル62−1は、ユーザインタフェース部31により指定されたパラメータσの値が一方の軸(図16における縦軸)のアドレスとされ、最大値探索部72−1が出力する特徴量の最大値を他方の軸(図16における横軸)のアドレスとするテーブルであり、縦軸と横軸で指定された領域に記憶されている推定パラメータを出力する。図16において、縦軸のパラメータσは、下から上に順次大きくなるようになっており、横軸の特徴量Vは、左から右にいくほど大きくなるようになっている。
図16の枠(記憶領域を表す)内に記憶されている推定パラメータの値は、基本的には、図16において、ハッチングを施していない領域に示されるように、ユーザが指定したパラメータσの値とされる。例えば、縦軸のアドレスとしてのパラメータσの値がσ60の枠においては、そのハッチングが施されていない領域(アドレスとしての特徴量Vの値が、比較的小さい場合の領域)で、特徴量Vの値に関わらず、そのアドレスとしての値σ60と同じである値σ60が推定パラメータとして記憶されており、アドレスとしてのパラメータσの値がσ80の枠においては、そのハッチングを施していない領域で、特徴量Vの値に関わらず、σ80が推定パラメータとして記憶されている。
しかしながら、図中、ハッチングを施してある領域(アドレスとしての特徴量Vの値が大きい場合の領域)では、ユーザにより指定されたパラメータσより小さい値σ70,σ50,σ30のいずれかが記憶されている。すなわち、検出された最大の特徴量が、ユーザにより指定されたパラメータσに対応する特徴量の最大値より小さい場合には、指定されたパラメータσの値がそのまま推定パラメータとされるが、検出された最大の特徴量が指定されたパラメータσに対応する特徴量の最大値より大きい場合、検出された特徴量より値が大きい特徴量が、特徴量の最大値として対応するパラメータが推定パラメータとして記憶される。
この原理(規則)を図17を参照してさらに説明すると次のようになる。図17に示されるように、パラメータσと特徴量Vは、一般的に、パラメータσの値が大きくなるほど、取り得る特徴量Vの値が小さくなる関係にあることが実験により確認されている。すなわち、パラメータσの値を所定の値に設定した場合の画像の特徴量Vを検出し、その数(度数)をプロットすると、図17に示されるようになり、特徴量Vの値が小さい画素が多く、特徴量Vが大きい画素の数は次第に少なくなり、所定の値(最大値)より大きい特徴量Vを有する画素は殆どなくなる。換言すると、画像のパラメータσを決定すると、その画像の特徴量の最大値が決まる。そして、特徴量Vの分布の範囲はパラメータσの値が大きいほど狭くなり、度数の最大値はパラメータσの値が大きいほど大きくなる(特徴量Vと度数の特性は、パラメータσの値が大きいほど急峻となり、度数の最大値も大きくなり、パラメータσの値が小さくなるほど緩やかとなり、度数の最大値も小さくなる)。
例えば、パラメータσの値がσ70である場合、その画像の取り得る特徴量Vの最大値はV70であるとする。同様に、パラメータσの値がσ50である場合における特徴量の最大値がV50であり、パラメータσの値がσ30である場合における特徴量の最大値がV30であるとする。この場合、パラメータσの値σ70が最も大きく、値σ50が次に大きく、値σ30が最も小さいとすると、最大値V30の値が最も大きく、値V50が次に大きく、最大値V70が最も小さいことになる。
ユーザが指定したパラメータσの値がσ70である場合において、処理対象の画像の特徴量の最大値が値V70(パラメータσの値がσ70である場合における特徴量Vの最大値)より小さい場合には、そのような特徴量は通常存在しうるため、ぼけ補正処理を行ってもオーバーシュートやリンギングが発生しない。これに対して、その画像の特徴量の最大値Vが値V70より大きいと、指定されたパラメータσ70の画像の特徴量Vとしては、本来存在しえない値が存在することになるため、そのままぼけを補正する処理を行うと、オーバーシュートやリンギングが発生する。そこで、これを抑制するため、このような場合には、指定されたパラメータσの値σ70を、それより小さい値σ50に強制的に変更するようにする。
さらに、処理対象の画像の特徴量の最大値が値V50よりさらに大きい場合、パラメータσの値をσ50に変更したとしても、対応する最大値V50より大きな特徴量が存在しているため、オーバーシュートやリンギングが発生することになる。そこで、この場合には、パラメータσの値を、さらに小さい値σ30に変更させるようにする。そこで、図16の縦軸のパラメータσの値がσ70である枠に示されるように、アドレスとしての特徴量Vの値が、値V70に対応する領域までは、推定パラメータの値はユーザにより指定された値と同一の値σ70とされるが、特徴量Vの値が値V70とV50の間の領域であって、図中右下がりのハッチングを施して示す領域においては、推定パラメータの値はσ50とされる。そして、さらに、アドレスとしての特徴量Vの値が、値V50乃至V30の間の領域であって、図中縦方向のハッチングで示されている領域においては、推定パラメータの値はσ30とされる。
同様に、例えば、ユーザが指定したパラメータσの値が値σ90である場合における、取り得る特徴量Vの最大値の値が値V90である場合には、アドレスとしての特徴量Vの値が、値V90までの図中ハッチングを施していない領域においては、推定パラメータの値は、ユーザにより指定されたパラメータσの値と同一の値σ90とされる。そして、特徴量Vの値がV90乃至V70の領域であって、図中左下がりのハッチングが施されている領域においては、推定パラメータの値はσ70とされる。特徴量Vの値が、V70乃至V50の右下がりのハッチングを施して示す領域においては、推定パラメータの値はσ50とされ、特徴量Vの値が値V50乃至V30の縦方向のハッチングを施して示す領域においては、推定パラメータの値はσ30とされる。
図16の例においては、オーバーシュートまたはリンギングが発生する恐れがある領域における推定パラメータの値を、σ70,σ50,σ30の3つのうちのいずれかとするようにしたが、より多くの数の推定パラメータを予め用意することももちろん可能である。
この図16の実施の形態においては、ユーザにより指定可能なパラメータσの値は、σ30が最低とされている。したがって、それより小さいパラメータσが設定された場合の推定パラメータは、用意する必要がないので記憶されていない。
図16における特徴量V80は、ユーザが指定したパラメータσの値がσ80である場合において、存在し得る特徴量の最大値を表し、特徴量V60はユーザが指定したパラメータσの値がσ60である場合において、取り得る画像の特徴量Vの最大値を表し、特徴量V40は、ユーザが指定したパラメータσの値がσ40である場合における特徴量Vの最大値を意味する。
なお、V90<V80<V70<V60<V50<V40<V30の関係にある。
すなわち、このルックアップテーブル62−1乃至62−4によるステップS55における統計的データを参照して、推定パラメータを推定する処理は、実質的に、図18のフローチャートに示される処理を実行することになる。
すなわち、ステップS71において、ルックアップテーブル62−1乃至62−4は、ユーザインタフェース部31より入力されたパラメータσを取得する。ステップS72において、ルックアップテーブル62−1乃至62−4は、最大値探索部72−1乃至72−4より供給される特徴量の最大値が、取得されたパラメータに対応する最大の特徴量より大きいかを判定し、大きい場合には、ステップS74で、予め用意された値のうち、特徴量の最大値より大きい値であって、最も差の小さい値を最大の特徴量とするパラメータの値を推定パラメータとする。
例えば、図19に示されるように、指定されたパラメータσが値σ90である場合、処理対象画像の特徴量の最大値V80が値V90より大きい場合には、予め用意されている値V70,V50,V30のうち、最大値V80より大きい値であって、最も差の小さい値V70を最大の特徴量とするパラメータの値σ70が推定パラメータとされる。
また、例えば、図20に示されるように、指定されたパラメータσの値がσ70である場合において、処理対象画像の特徴量の最大値が値V70より大きい値V60である場合には、予め用意されている値V70,V50,V30のうち、特徴量の最大値V60より大きい値であって、最も差の小さい値V50を最大の特徴量とするパラメータσ50が推定パラメータとされる。
同様に、図21に示されるように、指定されたパラメータの値がσ50である場合において、処理対象画像の特徴量の最大値がパラメータに対応する最大の特徴量V50より大きい値V40である場合には、予め用意された値V70,V50,V30のうち、特徴量の最大値V40より大きい値であって、最も差の小さい値V30を最大の特徴量とするパラメータσ30の値が推定パラメータとされる。
これに対して、ステップS72において、特徴量の最大値が、取得されたパラメータに対応する最大の特徴量と等しいかそれより小さいと判定された場合においては、ステップS73において、ルックアップテーブル62−1乃至62−4は、取得されたパラメータを推定パラメータとする処理を行う。すなわち、この場合においては、ステップS71で取得されたパラメータがそのまま推定パラメータとされる。
このように、ユーザにより指定されたパラメータσの値が、ぼけの補正処理をしても、オーバーシュートやリンギングが発生しない推定パラメータに変更される。これにより、オーバーシュートやリンギングの発生が防止される。
なお、図17、図19、図20、図21における度数、特徴量、パラメータσの値は、それぞれの図内における相対的関係を表すように示されており、異なる図との間での相関は無視されている。
図22は、図10のぼけ補正部33のより詳細な構成例を表している。このぼけ補正部33は、パラメータ取得部101、設定部102、画素取得部103、差分絶対値演算部104、判定部105、読み出し部106、記憶部107、および積和演算部108により構成されている。
パラメータ取得部101は、パラメータ補正部32の選択部63より出力された補正パラメータを取得し、設定部102と読み出し部106に供給する。設定部102は、パラメータ取得部101より供給された補正パラメータに基づいて、画像データのうちの所定の範囲の観察領域を設定する。画素取得部103は、入力された画像データから設定部102により設定された観察領域内の画素データを取得し、差分絶対値演算部104と積和演算部108に供給する。
差分絶対値演算部104は、画素取得部103より供給された画素の差分絶対値を演算する。判定部105は、差分絶対値演算部104で演算された値を、予め設定してある基準値と比較する。記憶部107は、上述した式(10)乃至式(17)を解くことで得られた式(19)に示される係数Ws -1を予め記憶している。読み出し部106は、判定部105の判定結果に基づいて、記憶部107に記憶されている係数の中から、所定の係数を読み出す。積和演算部108は、画素取得部103より供給された画素データYsと、読み出し部106より供給された係数Ws -1に対して、式(19)に基づいて積和演算を行うことで、ぼけが補正された画像の画像データを生成する。
次に、図23と図24のフローチャートを参照して、ぼけ補正処理について説明する。
この処理は、図12のステップS32の処理に対応する。
ステップS101において、パラメータ取得部101は、図13の選択部63より出力された補正パラメータを取得し、設定部102と読み出し部106に出力する。ステップS102において、設定部102は、観察領域を設定する処理を行う。具体的には、パラメータ取得部101より取得された補正パラメータσの3倍の値(3σ)を半径とする観察領域を設定する。ステップS103において、画素取得部103は、観察領域の画素データを取得する。すなわち、入力された画像データの中から、設定部102で設定された観察領域内の画素データを取得し、差分絶対値演算部104と積和演算部108に出力する。
ステップS104で、差分絶対値演算部104は、注目画素の上下左右方向に隣接する画素値の差分絶対値を演算する。具体的には、上述した式(14)乃至式(17)の左辺の項を演算する。判定部105は、ステップS105において、上方向に隣接する画素との差分絶対が、基準値より大きいか否かを判定する。すなわち、式(14)の左辺の演算結果が、予め設定してある所定の基準値より大きいか否かが判定される。差分絶対値が基準値より大きい場合には、ステップS106において、判定部105は、4ビットのフラグのLSBを1に設定する。差分絶対値が基準値と等しいかそれより小さいと判定された場合には、ステップS107において、判定部105はフラグのLSBを0に設定する。
すなわち、式(14)の左辺の項の値が、基準値より大きいということは、注目画素の上方向にはエッジが存在することを意味する。したがって、その場合には、式(14)における重み付け係数Waの値が、0または充分小さい値に設定された上で、予測係数が演算されている。そこで、このようにして生成された予測係数を選択するために、4ビットのフラグのLSBの値が1に設定される。
これに対して、差分絶対値が基準値と等しいかそれより小さい場合には、上方向に隣接する画素との間にはエッジが存在しないため、式(14)における重み付け係数Waの値は、比較的大きい値に設定された上で、予測係数が演算されている。そこで、この場合には、4ビットのフラグのLSBの値を0に設定することで、上方向に隣接する画素との間にエッジがない場合における予測係数が選択されるように、フラグのLSBに0が設定される。
ステップS108において、判定部105は、注目画素の下方向に隣接する画素との差分絶対値が基準値より大きいか否かを判定する。具体的には、式(16)の左辺の値が、基準値より大きいか否かが判定され、大きい場合には、ステップS109において、判定部105は、4ビットフラグの第2ビットを1に設定し、等しいかそれより小さい場合には、ステップS110において、フラグの第2ビットを0に設定する。すなわち、式(16)の左辺の項の値が、基準値より大きいということは、注目画素と下方向に隣接する画素との間にエッジが存在することを意味する。そこで、この場合、式(16)における重み付け係数Waの値は、0か充分小さい値に設定されている。そこで、下方向に隣接する画素との間にエッジが存在する場合に演算された予測係数を選択できるようにするために、フラグの第2ビットに1が設定される。逆に、式(16)の左辺の項の値が基準値と等しいかそれより小さい場合には、注目画素の下方向に隣接する画素との間には、エッジが存在しないことになる。そこで、この場合には、式(16)における重み付け係数Waの値は、比較的大きな値に設定されているので、下方向に隣接する画素との間に、エッジが存在しないことを前提にして計算された予測係数を選択できるようにするために、フラグの第2ビットに0が設定される。
以下、同様にして、ステップS111において、判定部105は、左方向に隣接する画素との差分絶対値が基準値より大きいかを判定する。すなわち、式(17)の左辺の値が基準値より大きいか否かが判定され、大きい場合には、ステップS112において、判定部105は、フラグの第3ビットを1に設定し、等しいか小さい場合には、ステップS113において0を設定する。これにより、注目画素の左方向に隣接する画素との間に、エッジが存在する場合と存在しない場合とで、それぞれのために計算された予測係数が選択できるようにフラグが設定される。
ステップS114においては、判定部105は、右方向に隣接する画素との差分絶対値が基準値より大きいか否かを判定する。差分絶対値が基準値より大きい場合には、ステップS115において、判定部105は、フラグのMSBを1に設定し、等しいか小さい場合には、ステップS116において0に設定する。これにより、式(15)の左辺で表される値が基準値より大きい場合(エッジが存在する場合)には、式(15)における重み付け係数Waの値を0か充分小さい値に設定することで演算された予測係数が選択できるようになされ、逆に、式(15)の左辺で表される値が基準と等しいかそれより小さい場合(右方向に隣接する画素との間にエッジが存在しない場合)には、そのことを前提として計算された予測係数が選択できるようにフラグが設定される。
ステップS117において、読み出し部106は、フラグと補正パラメータに対応する係数を読み出す。すなわち、この実施の形態の場合、記憶部107には、注目画素の上方向に隣接する画素との間にエッジが存在する場合と存在しない場合、下方向に隣接する画素との間にエッジが存在する場合と存在しない場合、左方向に隣接する画素との間にエッジが存在する場合と存在しない場合、並びに右方向に隣接する画素との間にエッジが存在する場合と存在しない場合を組み合わせた、合計16種類の予測係数が補正パラメータσに対応して記憶部107に記憶されている。読み出し部106は、判定部105で判定されたフラグと、パラメータ取得部101により、ステップS101で取得された補正パラメータσに基づいて、16種類の予測係数の中から、そのフラグと補正パラメータに対応する予測係数を読み出す。
ステップS118において、積和演算部108は、画素値と係数の積和を演算する。具体的には、積和演算部108は、式(19)に従って、画素取得部103より供給された画素値と、読み出し部106より供給された予測係数との積和を演算し、画素データを生成する。この予測係数は、上述したように、ぼけを補正する係数となされているため、この演算により、ぼけが補正された画像の画像データが生成されることになる。
図25乃至図27は、ぼけが補正された画像の例を表している。図25は、補正前の画像の例を表し、この画像においては、背景の草にフォーカスがなされているため、背景は鮮明な画像となっているが、前景の昆虫はぼけた画像となっている。
図26は、ユーザにより指定されたパラメータσを補正せずに、ぼけを補正した画像の例を表している。この例においては、前景の画像のぼけは補正されているが、背景の画像にオーバーシュートまたはリンギングが発生してしまっている結果となっている。
これに対して、図27は、本発明によりぼけが補正された画像の例を表している。同図に示されるように、本発明においては、上述したように、ユーザがパラメータσの値を過大に設定したとしても、より小さい値に補正されるので、背景のオーバーシュートやリンギングなどの劣化が抑制されている。そして、もちろん、前景の画像のぼけも図25に示される場合に比べて充分ぼけが補正されている。
図13のルックアップテーブル62−1乃至62−4は、例えば、図28に示されるルックアップテーブル作成装置201により作成される。このルックアップテーブル作成装置201は、取得部211、演算部212、設定部213、特徴量抽出部214、度数検出部215、最大値探索部216、テーブル作成部217、および記憶部218により構成されている。
取得部211は、学習用の画像データを取得し、演算部212に出力する。設定部213は、通常、図1に示される画像処理装置1のメーカの操作者の操作に基づきパラメータσを設定する。演算部212は、設定部213により設定されたパラメータσに基づいて、取得部211より供給された画像データからぼけ画像の画像データを生成する。具体的には、上述した式(1)に基づいて、ぼけ画像データが生成される。特徴量抽出部214は、図13の特徴量抽出部71−1乃至71−4と同一の特徴量を抽出する。度数検出部215は、特徴量抽出部214により抽出された特徴量の度数を検出する。最大値探索部216は、予め設定された閾値以上の度数を有する特徴量の中の最大値を探索する。
テーブル作成部217は、設定部213により設定されたパラメータσの値と、最大値探索部216により探索された最大値に基づいて、推定パラメータを設定する。記憶部218は、テーブル作成部217により作成されたテーブルを、予め用意されているメモリなどに記憶させる。
次に、図29のフローチャートを参照して、ルックアップテーブル作成処理について説明する。
ステップS151において、取得部211は、学習用の画像データを取得する。この学習用の画像データとしては、複数の、多くの、様々なぼけていない画像の画像データが用意され、これが取得される。ステップS152において、設定部213は、パラメータσを設定する。すなわち、設定部213は、操作者の操作に基づいたパラメータσの値を演算部212に出力する。ステップS153において、演算部212は、ぼけ画像の画像データを生成する。具体的には、ステップS152の設定処理で設定部213により設定されたパラメータσの値を式(1)と式(2)に適用して、ぼけのない画像の画像データX(x+i,y+j)からぼけ画像の画像データY(x,y)を生成する。
ステップS154において、特徴量抽出部214は、特徴量を抽出する。すなわち、演算部212により演算されたぼけ画像の画像データから、図13の特徴量抽出部71−1乃至71−4で抽出される場合と同一の特徴量が抽出される。
ステップS155において、度数検出部215は度数を検出する。すなわち、同一の特徴量が得られる度数が検出される。これにより、例えば、図30に示されるような特徴量毎の度数分布が得られることになる。図30の例においては、設定部213により設定されたパラメータがσAである場合、σBである場合、並びにσCである場合における度数分布の例が示されている。
ステップS156において、最大値探索部216は、パラメータσ毎の特徴量の最大値を探索する。図30の例においては、設定されているパラメータの値がσAである場合には、特徴量の最大値としてVAが、パラメータがσBである場合には、特徴量の最大値としてVBが、パラメータがσCである場合の特徴量の最大値としてVCが、それぞれ探索される。
なお、この特徴量の最大値は、その度数が予め設定してある所定の基準値以上の度数のものの中から選択するようにしてもよい。これにより、ノイズ的な特徴量に基づいて、誤った補正が行われるようなことが抑制される。
ステップS157において、テーブル作成部217は、テーブル作成処理を実行する。
その詳細は、図31のフローチャートを参照して後述するが、この処理により、ルックアップテーブルが作成される。ステップS158において、記憶部218は、ステップS157の処理でテーブル作成部217により作成されたテーブルを記憶する。すなわち、記憶部218は、予め用意されたメモリにルックアップテーブルを書き込む。このルックアップテーブルが、上述した図13のパラメータ補正部32のルックアップテーブル62−1乃至62−4として用いられる。
次に、図31のフローチャートを参照して、図29のステップS157におけるテーブル作成処理について説明する。
ステップS181において、テーブル作成部217は、アドレスとしての特徴量が、ステップS152で設定されたパラメータに対応する特徴量の最大値より大きい領域か否かを判定する。アドレスとしての特徴量が設定されたパラメータに対応する特徴量の最大値と等しいか、それより小さい領域である場合には、ステップS182において、テーブル作成部217は、設定されたパラメータの値を、そのままその領域に書き込む処理を実行する。
例えば、いま設定されているパラメータが、図16のパラメータσ70であり、アドレスとしての特徴量(図16の横軸に示される特徴量)の値が、例えば、V80である場合、値V80は、パラメータσ70に対応する特徴量の最大値V70より小さい(V80<V70)。そこで、この場合、図16におけるパラメータσ70の枠の中には、パラメータの値σ70がそのまま書き込まれる。
これに対して、ステップS181において、アドレスとしての特徴量が、設定されたパラメータに対応する特徴量の最大値より大きいと判定された場合、ステップS183において、テーブル作成部217は、予め用意されている推定パラメータのうち、アドレスとしての特徴量をより大きく、かつアドレスとしての特徴量に最も近い値を最大の特徴量とするパラメータを書き込む。例えば、図16の例においては、予め用意されている推定パラメータとしては、σ70,σ50,σ30の3つがある。これらのパラメータに対応する特徴量の最大値は、図17に示されるように、それぞれ、V70,V50,V30である。
アドレスとしての特徴量の値が、例えば、V60である場合、この値V60は、パラメータσ70が対応する最大値V70より大きい。従って、ステップS181の処理でYESと判定される。アドレスとしての特徴量V60より大きく、かつ、この値V60に最も近い予め用意されたパラメータが対応する最大値V50を最大の特徴量とするパラメータは、パラメータσ50である(パラメータσ70に対応する最大値V70は、アドレスとしてのV60より小さく、またパラメータσ30に対応する最大値V30は、パラメータσ50が対応する最大値V50より離れている)。そこで、この場合には、アドレスとしての特徴量V60の領域には、パラメータσ50が書き込まれる。
パラメータσの値がσ70であり、アドレスとしての特徴量がV70である場合には、アドレスとしての特徴量V40より大きく、かつアドレスとしての特徴量V40に最も近い値を最大の特徴量とするパラメータは、値V30を最大の特徴量とするパラメータσ30である。そこで、アドレスとしての特徴量V40に対応する領域には、パラメータσ30が書き込まれる。
以上のようにして、図16に示されるルックアップテーブルが作成される。
なお、以上においては、フォーカスぼけを補正する場合の例を説明したが、本発明は、動きぼけを補正する場合にも適用することが可能である。
動きぼけを補正する場合の処理とそれを実行する機能ブロックは、基本的にフォーカスぼけを補正する場合と同様であるが、フォーカスぼけを補正する場合の図14のパラメータ補正処理は、動きぼけを補正する場合、図32に示すようになる。
ステップS211において、ユーザインタフェース部31は、動きぼけの方向と大きさを取得する。すなわち、ユーザは表示デバイス12に表示されている画像を見ながら動きぼけの方向(動きぼけの補正を行う方向)と大きさを入力する。この入力は、例えばユーザインタフェース部31のつまみ51やマウス等を操作することで行われるようにすることができる。この場合、例えば図33に示されるように、補正対象の画像に重畳して、方向を表すカーソル311を表示デバイス12に表示させ、このカーソル311を、ユーザが操作したつまみ51の回転量と方向に応じて回転させ、最終的にカーソル311が指向する方向が動きぼけの処理を行う方向として取得される。あるいは、予め用意されている上下左右、右上、右下、左上、左下の8個の方向(勿論、それ以上の数の方向であってもよい)から、ユーザにより選択された1つの方向を動きぼけの処理を行う方向として取得するようにしてもよい。また、大きさを入力するために、つまみ51とは別のつまみを設けることができる。あるいは、キーボードにより大きさの値を入力させたり、マウスでドラッグさせ、その長さ(距離)で入力させてもよい。
ステップS212において、ユーザインタフェース部31は、動きぼけを補正するパラメータを取得する。例えば特開2001−250119号公報に開示されているように、動きぼけは、移動する物体(オブジェクト)の動きに対応する数の画素値の和を演算することでモデル化することができる。そこで、この演算対象とする画素の数をパラメータPで制御することで、動きぼけを調整することができる。ユーザインタフェース部31は、ユーザが入力したこのパラメータPの値を取得する。つまり、ユーザにより入力された動きぼけの大きさが、このパラメータPに対応する。取得されたパラメータPは、ステップS211において取得された方向とともに、特徴量抽出部71−1乃至71−4とルックアップテーブル62−1乃至62−4に供給される。
ステップS213において、特徴量抽出部71−1乃至71−4は観察領域を設定する。すなわち、特徴量抽出部71−1乃至71−4は、まず、ステップS212の処理で取得されたパラメータPに対応する領域を観察領域として設定する。具体的には、取得された方向と一致する方向(完全に一致する方向は勿論、若干ずれていても、その差が閾値以下である方向を含む)の取得されたパラメータPに対応する範囲の領域が観察領域とされる。
例えば、図33に示されるように、移動するオブジェクト301の動きぼけを補正する場合において、取得された方向と一致する方向の動きベクトルが矢印302であるとき、着目画素を含む画素303のうち、パラメータPに対応する数の画素が観察領域として設定される。
次に、ステップS214において、特徴量抽出部71−1乃至71−4は特徴量を抽出する。上述したように、特徴量抽出部71−1乃至71−4は、それぞれ自分自身に割り当てられた他とは異なる特徴量を抽出する。この処理は、図14のステップS53の処理と同様の処理である。
ステップS215において、最大値探索部72−1乃至72−4は最大値(ぼけが最も少い特徴量)を探索する。特徴量抽出部71−1が1次微分値を特徴量として抽出し、特徴量抽出部71−2が2次微分値を特徴量として抽出し、特徴量抽出部71−3がダイナミックレンジを特徴量として抽出し、特徴量抽出部71−4が分散を特徴量として抽出するものとすると、最大値探索部72−1は、特徴量抽出部71−1が抽出した観察領域内の画素の1次微分値の最大値を探索する。最大値探索部72−2は、特徴量抽出部71−2が抽出した観察領域内の画素の2次微分値の最大値を探索する。最大値探索部72−3は、特徴量抽出部71−3が抽出した観察領域内の画素のダイナミックレンジの最大値を探索する。最大値探索部72−4は、特徴量抽出部71−4が抽出した観察領域内の画素の分散を探索する。
ステップS216において、ルックアップテーブル62−1乃至62−4は、統計的データを参照して推定パラメータを推定する。すなわち、ルックアップテーブル62−1乃至62−4は、テーブルを有している。図34はこのテーブルの例を表している。図34のテーブルは、縦軸のパラメータの値が、図16においてはパラメータσであるものが、図34においてはパラメータPとなっている点が異なっているだけであり、その他は基本的に図16に示されているテーブルと同様のテーブルである。ルックアップテーブル62−1乃至62−4は、それぞれのテーブルに基づいて、取得されたパラメータPを推定パラメータに変換する。その基本的な処理は、図14のステップS55における場合と同様である。すなわち、ユーザが指定したパラメータPは、その値に対応する特徴量の最大値が、最大値探索部72−1乃至72−4で探索された最大値より小さい場合には、最大値探索部72−1乃至72−4で探索された最大値より大きな値の最大値が対応する推定パラメータに変更される。
ステップS217において、選択部63は、ルックアップテーブル62−1乃至62−4が出力した推定パラメータの中から、最小の推定パラメータを選択する処理を実行する。すなわち、ルックアップテーブル62−1乃至62−4が出力する4個の推定パラメータの大小が比較され、最小の推定パラメータ(動きぼけが最も少いパラメータ)が1つ選択され、それが補正パラメータとして出力される。これにより、ユーザが指定したパラメータPが補正パラメータに変換(補正)されたことになる。
動きぼけを補正する場合におけるその他の処理は、フォーカスぼけを補正する場合と基本的に同様であるからその説明は省略する。
以上においては、パラメータσまたはパラメータPをルックアップテーブルに基づいて補正するようにしたが、その都度演算するようにしてもよいのはもとよりである。
上述した一連の処理は、ハードウエアにより実行させることもできるし、ソフトウエアにより実行させることもできる。この場合、例えば、画像処理装置は、図35に示されるようなパーソナルコンピュータ420により構成される。
図35において、CPU(Central Processing Unit)421は、ROM(Read Only Memory)422に記憶されているプログラム、または記憶部428からRAM(Random Access Memory)423にロードされたプログラムに従って各種の処理を実行する。RAM423にはまた、CPU421が各種の処理を実行する上において必要なデータなども適宜記憶される。
CPU421、ROM422、およびRAM423は、バス424を介して相互に接続されている。このバス424にはまた、入出力インタフェース425も接続されている。
入出力インタフェース425には、キーボード、マウスなどよりなる入力部426、CRT(Cathode Ray Tube)、LCD(Liquid Crystal display)などよりなるディスプレイ、並びにスピーカなどよりなる出力部427、ハードディスクなどより構成される記憶部428、モデムなどより構成される通信部429が接続されている。通信部429は、インターネットを含むネットワークを介しての通信処理を行う。
入出力インタフェース425にはまた、必要に応じてドライブ430が接続され、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブルメディア431が適宜装着され、それらから読み出されたコンピュータプログラムが、必要に応じて記憶部428にインストールされる。
一連の処理をソフトウエアにより実行させる場合には、そのソフトウエアを構成するプログラムが、専用のハードウエアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、ネットワークや記録媒体からインストールされる。
この記録媒体は、図35に示されるように、装置本体とは別に、ユーザにプログラムを提供するために配布される、プログラムが記録されている磁気ディスク(フロッピディスクを含む)、光ディスク(CD-ROM(Compact Disk-Read Only Memory),DVD(Digital Versatile Disk)を含む)、光磁気ディスク(MD(Mini-Disk)を含む)、もしくは半導体メモリなどよりなるリムーバブルメディア431により構成されるだけでなく、装置本体に予め組み込まれた状態でユーザに提供される、プログラムが記録されているROM422や、記憶部428に含まれるハードディスクなどで構成される。
なお、本明細書において、記録媒体に記録されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
また、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
1 画像処理装置, 11 画像補正処理装置, 12 表示デバイス, 31 ユーザインタフェース部, 32 パラメータ補正部, 33 ぼけ補正部, 61−1乃至61−4 特徴量検出部, 62−1乃至62−4 ルックアップテーブル, 63 選択部, 71−1乃至71−4 特徴量抽出部, 72−1乃至72−4 最大値探索部