画像処理装置、画像処理方法およびプログラム
【課題】 レンズを用いて撮影することによって得られるぼかし画像を、画像データを処理することによって得ること。
【解決手段】 処理対象の画像内で検出された点光源領域502を含む加算領域503に対してぼかし処理を施す際、中心部504からの距離に応じて加算係数kを増加させながら周辺に向かうほど輝度値が高くなるようにする。
【解決手段】 処理対象の画像内で検出された点光源領域502を含む加算領域503に対してぼかし処理を施す際、中心部504からの距離に応じて加算係数kを増加させながら周辺に向かうほど輝度値が高くなるようにする。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、入力された画像データに所定の処理を施す画像処理装置、画像処理方法およびプログラムに関する。
【背景技術】
【0002】
従来、デジタルカメラによって撮影を行う際、主な被写体にピントを合わせ、背景をぼかす撮影手法が知られている。このような撮影手法において、点光源をぼかすことにより、当該点光源に対応する部分において玉ボケを生じさせ、幻想的な効果のある画像を得ることができる。このような玉ボケはデジタルカメラのレンズの光学的特性により生ずるものであり、玉状のボケ画像内で明るさが異なる。なお、点光源とはある程度の大きさを有した局所的な光の存在する領域を指す。
【0003】
また、画像データを取り込み、画像処理によって玉ボケを生じたような画像に加工するものが知られている(特許文献1、2参照)。
【0004】
特許文献1は、画像内の光源領域に対して、予め用意された複数のフィルタのいずれかを選択することで、光源領域をぼかす際の大きさまたは形状を変える手法を開示している。特許文献2は、背景ぼかし処理に際して高輝度部分の強調処理を行う手法を開示している。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2009−003858号公報
【特許文献2】特開2009−218704号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
実際にデジタルカメラ等で撮影して得た画像中の玉ボケ部分は、レンズの光学的特性により複雑に変化している。従って、上記特許文献1、2に示された手法では実際の撮影によって得た画像のような風合いを再現できていない。
【0007】
本発明は以上のような課題に鑑みてなされたものであり、レンズを用いて撮影することによって得られるぼかし画像を、画像データを処理することによって得ることのできる画像処理装置、画像処理方法およびプログラムを提供するものである。
【課題を解決するための手段】
【0008】
上記課題を解決するため、本発明の画像処理装置は、画像データを入力する入力手段と、前記入力手段により入力された画像データが表す画像のうち局所光に対応する領域を検出する検出手段と、前記検出手段により検出された局所光に対応する領域に対してぼかし処理を施す処理手段とを有し、前記処理手段は、局所光に対応する領域の中心部よりも周辺部が明るい画像となるようにぼかし処理を施す。
【発明の効果】
【0009】
本発明によれば、レンズを用いて撮影することによって得られるぼかし画像を、画像データを処理することによって得ることができる。
【図面の簡単な説明】
【0010】
【図1】実施形態の画像処理装置の構成を示すブロック図である。
【図2】実施形態の処理の流れを示すフローチャートである。
【図3】点光源検出の処理の流れを示すフローチャートである。
【図4】レンズを通して入力される光の結像の様子を示す図である。
【図5】点光源ぼかし処理を説明するための図である。
【図6】背景ぼかし処理の流れを示すフローチャートである。
【図7】点光源ぼかしの形状を点光源の位置に応じて変更する例を示す図である。
【図8】点光源ぼかしの大きさを点光源の位置に応じて変更する例を示す図である。
【図9】点光源検出の処理の流れを示すフローチャートである。
【図10】適応的2値化処理の流れを示すフローチャートである。
【図11】輝度値毎の画素数を示すヒストグラムである。
【図12】2値化処理の流れを示すフローチャートである。
【図13】処理対象の画像内における点光源候補の領域群を示す図である。
【図14】境界線追跡法によるクラスタリング処理を説明するための図である。
【図15】点光源を抽出する処理の流れを示すフローチャートである。
【図16】色相に応じた重みを説明するための図である。
【図17】2値化処理の流れを示すフローチャートである。
【図18】撮影シーンに応じた重みを説明するための図である。
【図19】2値化処理の流れを示すフローチャートである。
【図20】2値化処理の流れを示すフローチャートである。
【図21】ISO感度に応じた重みを説明するための図である。
【図22】F値に応じたサイズ閾値を説明するための図である。
【発明を実施するための形態】
【0011】
以下、本発明を実施するための形態の一例について図面を用いて説明する。これはあくまで実施の1つの形態を例として示したものであり、本発明は以下の実施形態に限定されるものではない。なお、以下で扱う点光源はある程度の大きさを持った光に対応する画像もその範疇とするため局所光ともいう。
【0012】
<実施例1>
図1は、実施形態の画像処理装置のハードウェア構成例を示すブロック図である。本画像処理装置は、例えば汎用的なパーソナルコンピュータ(PC)に所定のソフトウェアをインストールすることにより実現可能である。図1において、CPU(中央演算装置)100は、以下のフローチャートで示される処理に対応するプログラムに従って画像処理装置を制御する。ROM101は、CPU100により実行されるプログラムを記憶する。RAM102は、CPU100によるプログラムの実行時に、各種情報を一時的に記憶したり、画像処理装置の処理に関する設定情報を記憶したりする。ハードディスク(HD)103は、処理対象の画像データ(画像ファイル)やパターン識別用のパラメータなどを保存するための記憶媒体である。またHD103は以下のフローチャート等で示される処理に対応するプログラムも記憶する。ディスプレイ104は、ユーザに提示すべき情報を表示する。ユーザインタフェース(UI)105は、ユーザによる操作を受け付ける。UI105にはマウス等のポインティングデバイスやキーボードなどを含む。外部インタフェース(I/F)は、画像処理装置に外部装置を接続するためのインタフェースである。外部装置としては、原稿上の画像を読み取る画像スキャナ、画像データを記憶可能なメモリデバイス、画像を撮影可能なデジタルカメラなどが含まれる。画像処理装置は外部I/F106を介して処理対象の画像データを取得可能である。制御バス/データバス110は上記各部とCPU100とを接続し互いに通信可能にする。
【0013】
次に図1の画像処理装置において、入力された画像データが表す画像に対してぼかし処理を施すための処理について説明する。図2はこの処理の流れを示すフローチャートである。ここで行うぼかし処理では、画像内の特定のオブジェクトにはピントが合った状態とし、背景となるオブジェクトに対してぼかしが入ったような画像に加工する。そして画像に含まれる点光源に対応する箇所に対しては点光源のぼかしに適した点光源ぼかし処理を施す。これらの処理は、実際にカメラのレンズを通して撮影した場合の風合いを擬似的に再現するための処理である。実際にカメラで撮影する際、主な被写体にピントを合わせ、背景のぼかしを行う場合、絞りを大きく開き、被写界深度を浅くすることでピントが合う範囲を狭める。あるいは望遠レンズやマクロレンズを用いて同様な効果をもたらすことができる。この場合、点光源については玉ボケが生じるが、この玉ボケの領域についてはレンズの光学特性により、領域内の中心部分より周辺部の方が輝度が高くなる。以下に示す処理ではこのような撮影手法で背景ぼかしを行った場合の画像を画像データの加工により再現する。そして、以降の処理はROM101またはHD103に記憶されているプログラムをRAM102にロードし、それをCPU100が実行することによりなされる処理である。処理対象の画像データは外部I/F106を介して画像処理装置内に取り込まれ、HD103に記憶される。そして、ユーザがUI105によって当該画像データを指定し、ぼかし処理の実行を指示することにより以下の図2に示す処理が開始される。処理対象の画像データは、デジタルカメラやデジタルビデオで撮影されたもの、アナログカメラで撮影して得た画像をスキャナで読み取ることによって得たものなどがある。処理対象の画像データはこれらの方法以外、画像処理アプリケーションで作成されたものなど種々の方法以外で取得された画像データを用いることができる。また、処理対象の画像データが表す画像には点光源(円とは限らない)に相当する領域が少なくとも1か所は含まれ、それには玉ボケが生じていない、あるいはあまり大きくは玉ボケが生じていないものである場合、以下の処理による効果が大きい。
【0014】
まずS201では、入力された画像データから点光源に対応する領域を検出する。処理対象の画像データは入力された画像データが表す画像(画角)全域、または当該画像のうちユーザによって指定された範囲などである。また、処理対象の画像データを印刷処理する場合、印刷対象となる範囲としてもよい。次にS202において入力された画像データに対するぼかし処理を行う。このときのぼかし方法は画像データを平滑化する方法を用いる。具体的には、平均値フィルタやガウシアンフィルタなどのローパス系のフィルタ処理、画像データを空間周波数領域に変換し、高周波成分を除去する処理、画像を縮小後に拡大する処理などを用いる。このとき、ぼかし処理はS201で検出された点光源及び主要被写体以外の背景部分についてぼかし処理を行う。背景部分の特定については、中央部分に存在するオブジェクトを主要被写体として自動で検出したり、ユーザによりUI105を介して指定されたオブジェクトを主要被写体として抽出し、残った部分を背景部分として扱う。そしてS202ではこの背景部分から点光源として検出された部分を取り除いた部分に対してぼかし処理を行う。
【0015】
次にS203においてS201で検出された点光源領域に対して点光源ぼかし処理を行う。なお、ここでいう点光源とは所定の大きさを持ち、周囲の輝度より高い輝度を持つ光の画像のことである。S201で点光源領域が検出できなかった場合はS203の処理は省略される。
【0016】
次にS201の詳細について図3を用いて説明する。点光源検出処理では、処理対象の画像データの中から孤立した光源領域を検出する。まず光源であると判断するために、所定の輝度閾値Ythを決定する。ここでは一例として、輝度閾値Ythは予め決められた一定の輝度値とする。そして処理対象の画像データから順に注目画素を特定し、順次図3に示す処理を行っていく。
【0017】
S301では、注目画素の輝度が輝度閾値Yth以上かどうかを判断する。輝度閾値Yth以上であると判断された場合、次にS302で当該画素が平坦領域に属するかどうかを判断する。
【0018】
S302では、当該画素を含む点光源候補の画素群で構成される領域が所定の大きさ以下で周囲の画素の輝度値との差が一定より大きい画素を点光源領域として検出し、それ以外は平坦領域(点光源以外の領域)であるとする。ここで、検出したい点光源領域は円形であるとし、検出したい点光源領域の半径をRと周囲との輝度差をYdiffとし、それぞれの値を決定する。この場合S302では、まず注目画素の輝度Yorgと注目画素から見て周囲8方向(上下左右斜め)の半径R離れた画素の輝度値Yn(nは1から8の値)を求める。なお、半径Rの値に応じて比較対象とする画素位置を予め決めておいたり、比較対象とする画素数を変更したりしてもよい。比較対象の画素を隣接する画素とする場合には自ずと上下左右斜めの8画素は特定される。ここでは比較対象の画素は8つとして説明する。輝度値Yorgと8つ分の輝度値Ynそれぞれとの輝度差を算出し、どれか一つでも輝度差Ydiffより小さい画素があった場合、当該画素は平坦領域内であると判断し、全ての輝度差が輝度差Ydiff以上であった場合は平坦領域内ではないと判断する。
【0019】
S302で平坦領域でないと判断された画素は、S303で点光源として検出結果に追加される。以上の処理を処理対象の画像データ内の全ての画素に実施する。なお、ここでは検出したい点光源を円形として説明したが、多角形など他の形状としてもよい。点光源の形状に応じてS302で比較する周囲の画素の位置や、比較する画素数が異なることもある。
【0020】
なお、以上の処理において一旦処理対象の画像データに縮小処理を施して上記のような処理を行い、その後拡大処理を行って元の画像サイズとするようにしてもよい。この場合、縮小処理したときに点光源と判断した1つの画素は拡大処理によって複数の画素となる。これを後続の処理に適用することになる。
【0021】
次に、S203の詳細について説明する。ここで、点光源ぼかし処理のモデルとする現象について説明する。図4はデジタルカメラ等において実際にレンズを通して撮影した場合の点光源の玉ボケの発生を説明するための図である。図4ではデジタルカメラ、デジタルカメラに対する入光、レンズ等は説明のため簡略化して示してある。
【0022】
図4において、光405が左から右に向けて入るものとし、光軸401が中心部に存在する。デジタルカメラに入った通常の光405は、レンズ403を介して結像面404(イメージセンサ)へ到達する。なお、レンズ403は球面レンズを想定しているが、簡略化のためここでは平面で図示している。ここでは点光源に対応する光(背景から入ってくる光)に対する説明であるため、結像面404ではピントが合っていない(焦点が結像面404より前)状態となっている(被写体にはピントが合っている状態である)。
【0023】
このとき、デジタルカメラに入ってきた光のうち絞り402で遮られた光406は本来ならレンズ403に入ってこないが、光の特性である回折現象により絞り402の裏側にある程度回り込み、レンズ403を通り結像面404に届く。なお、光の回折とは、光が障害物にぶつかった場合に、光の波動性のため光が障害物の背後に回り込んで伝わって行く現象のことである。このように光の回折により、結像面404で作られる画像は、絞り402の内側を通った光405に加え、絞り402で遮られた光406の影響を受ける。またこの光はピントが合っていないため、一点に集まる光が拡散されて結像面404に入るので遮られた光406の影響が大きくなる。
【0024】
この現象はカメラレンズに入ってくる光が強いほど遮られた光406も強くなり、それが顕著に表れる。また遮られた光406は回折により光軸401に対して斜めの光としてレンズ403に入る。そのため遮られた光406の焦点は光軸から離れる方向にずれる。そのため結像面404に入るときは、通常の光405と合成されて結像される。そのため、点光源の玉ボケ内においては中心部と比べ中心部より外側(周辺部)の方が輝度が高くなる。
【0025】
また、点光源(背景)がより遠くなったり被写界深度がより浅くなったりする場合、結像面に入ってくる通常の光405の焦点は結像面404からより離れることになる。そのため、結像面404に入ってくる光によってできるぼけの大きさは大きくなり、それに連れて輝度は下がっていく。また、遮られた光406と通常の光405とは異なる角度で結像面404に入る。そのため、焦点と結像面404とが離れていると、所定の距離までは遮られた光406は通常の光405と合成され、かつ所定の距離に近づくにつれ徐々に通常の光405の縁に集まるように変化する。それ以上の距離になると遮られた光406は通常の光605の外側で結像面に入るため、無視できる光の強さになる。
【0026】
このようにカメラレンズに入るある一定以上の明るさを持つ背景からの光は、回折が起こり中心部の輝度より周辺部の輝度の方が高いものとなる。
【0027】
以上のような実際のレンズを通した撮影において点光源の玉ボケに対して発生する現象をモデルとし、点光源ぼかし処理においてはこの現象に近づくように画像データの処理を行う。
【0028】
図5(a)において、処理対象の画像領域501内で、S201で検出された点光源領域が502であった場合、その周囲に点光源領域502を囲むように拡大された領域である加算領域503を設定する。そして、加算領域503の外周より内側(点光源領域502も含む)に次のようにぼかし処理を施す。
【0029】
まず、点光源領域502の各画素の平均輝度値または中心点に相当する画素の輝度値を基にして基準となる加算輝度値を算出する。そして点光源領域502の大きさや平均輝度値、UI105からの指定等に基づくぼかし強度などから点光源領域502より広い加算領域503が決定され、これを加算領域として設定する。
【0030】
この加算領域503の内側にある画素に対して、予め決められた加算輝度値に中心点からの距離に応じて決められた加算係数を用いて得た輝度値を加算していく。加算輝度値をYadd、加算係数をk、注目画素輝度をYorg、出力画素輝度をYoutとすると、下記の式で出力画素輝度を算出できる。
Yout=(1−k)×Yorg+k×Yadd (式1)
このとき、加算係数kは、図4で説明したように玉ボケとなる部分の外周の輝度値が高くなるように設定する。
【0031】
なお、出力輝度値の範囲を特定の範囲に限定すべき場合は、出力輝度値に特定の範囲を指定したクリップ処理を行って、適切な範囲となるように演算するようにしてもよい。
【0032】
また、加算輝度値Yaddは加算領域503の大きさに基づいて変化させてもよい。この場合、所定の基準面積を決め、基準面積に対して加算領域503の面積が大きいときは加算輝度値Yaddが小さくなるようにし、小さいときは大きくなるようにする。
【0033】
なお、以上では各画素の輝度値について演算するようにしたが、上記の処理を各画素の画素値について行ってもよい。こうすることで輝度だけではなく、画素の色に基づいても点光源のぼかし処理が行える。以下では、例として赤(R)緑(G)青(B)の三原色で構成されている各色成分の画素について演算する(画素値を変更する)場合について説明する。
【0034】
ここでは上記と同様に点光源領域502の平均画素値や中心点画素値などを基にして基準となる加算画素値を算出する。加算領域503の内側の画素に対して加算係数を用いて加算していく。加算画素値をRadd、Gadd、Badd、加算係数をk、注目画素値をRorg、Gorg、Borg、出力画素値をRout、Gout、Bout、とすると、下記の式で出力画素値を算出できる。
Rout=(1−k)×Rorg+k×Radd (式2)
Gout=(1−k)×Gorg+k×Gadd (式3)
Bout=(1−k)×Borg+k×Badd (式4)
出力輝度値の範囲を特定の範囲に限定すべき場合は、出力輝度値に特定の範囲を指定したクリップ処理を行って、適切な範囲となるように演算する。加算画素値Radd、Gadd、Baddは加算領域503の大きさに基づいて変化させてもよい。この場合、所定の基準面積を決め、基準面積に対して加算領域503が広いときは加算画素値Radd、Gadd、Baddが小さくなり、狭いときは大きくなるようにする。
【0035】
次に以上の演算で用いた加算係数kの決定方法の例について図5(b)、(c)を用いて説明する。ここでは下記のような2次関数を用いて加算係数を決めている。加算係数をk、点光源の中心504からの距離をr、中心504から加算領域503の外周までの半径をR、aとbは任意の定数とする。ただしkは0.0から1.0の間とする。
1.0=a×R2+b (式5)
1.0≧b≧0.0 (式6)
a≧0.0 (式7)
これらを前提条件として加算係数kは下記の式で算出できる
k=a×r2+b (式8)
なお、加算領域503の面積に基づいて加算係数kを変化させてもよい。この場合、加算領域503が広いときの中心部と周辺部の輝度差より、狭いときの輝度差を大きくする。その場合は、所定の基準面積Sbaseを決め、その基準面積でのbをbbaseとすると、上記前提条件に下記の式を加えることで実現できる。
b=bbase×S÷Sbase (式9)
このときbが1.0より大きくなった場合はbが1.0になるようクリップ処理してもよい。
【0036】
また、加算係数の決定方法は上記のような2次関数以外に基づき求めてもよい。加算係数kの決定方法は加算領域503の中心点504より周辺付近の係数の方が高くなっており、また線形に増加するのではなく図5(c)に示すように下に凸な形で増加しているという特徴があれば他の方法でもよい。例えば、表示や印刷のためのガンマ補正の際に用いられるガンマを使って決定してもよいし、予め計算結果を用意したテーブルを作成して決定してもよい。この加算係数は上述した光の回折を考慮した特性に基づいた値となっている。ここでは加算領域を円形として記述したが、多角形など他の形状でもよい。この場合、上記での加算領域の半径Rは、加算領域の中心点から最も遠い加算領域内の位置になる。また円の中心点を加算係数の開始点としたが、加算領域の形や輝度分布などから開始点を変えてもよい。
【0037】
また、点光源位置と加算領域の大きさによっては、複数の点光源に対する加算領域が重なり合う場合がある。そのとき上記のように出力画素値を算出し、出力画素値同士を比較して値の高い方を出力画素値として出力してもよい。または出力画素値の平均値を出力画素値としてもよい。
【0038】
以上のようにして、画像データの輝度値を変更することによって、レンズを通して撮影した場合の点光源ぼかし処理をより忠実に再現することができる。
【0039】
なお、以上の処理においてS201では、点光源と判断された画素が逐次検出される。このとき、S203でぼかす対象にする点光源領域は、周囲の画素が点光源であった場合は、ひとまとまりとして点光源領域として扱ってもよいし、検出された点光源の一画素ずつを別々の点光源領域として扱ってもよい。
【0040】
また、以上のような処理(背景ぼかし)を行う際、主要な被写体にはピントが合った状態とする必要がある。即ち、特定のオブジェクト(主要な被写体)にはぼかしがかからないようにする必要がある。この場合、図6に示すように以下の手順で処理することでこれを容易にかつ精度良く実現することができる。
【0041】
S601では、入力された画像データから被写体(ピントを合わせるべきオブジェクト)の抽出を行い、主要被写体と背景を分離する。ここで分離する方法は、ディスプレイ104で対象となる画像を表示させ、UI105を用いてユーザに領域を指定させるものとしてもよいし、自動的に被写体を特定して分離させるようにしてもよい。自動で分離させる場合、画像データに付加されている被写界深度などの撮影条件の情報などを用いて被写体を特定するようにしてもよい。なお、ユーザに領域を指定させる場合、図6のフローが開始される前の段階でユーザに指定させる。また、領域の指定に際してはユーザにラフに指定させ、指定された領域の近傍のエッジをCPU100が検出するなどして、CPU100が最終的な領域を決定する半自動方式としてもよい。
【0042】
主要被写体と背景が分離できたらS602に進み、背景と主要被写体とを区別するための背景マスクD601を作成する。ここで、背景マスクD601とは、処理対象の画像データからS601で抽出した主要被写体を除き(画像なしに置き換え)、背景のみとしたものである。そして、この背景マスクD601に対してS603〜605における処理を施す。S603〜605は前述のS201〜203と同様の処理を行う。このとき、背景マスクD601のうち背景に対応する領域の画素だけでS603以降の処理を行ってもよいし、全画素に対してS603の処理を行ってもよい。また、検出された点光源の位置と背景マスクD601とを比較して背景に対応する領域に対しS604以降の処理を行ってもよい。また、S605において、例えば加算領域503が主要被写体領域に重なっている場合は、重なっていないところだけ加算処理を行うようにしてもよい。また、主要被写体領域の画素は加算画素値を算出する対象から除くようにしてもよい。
【0043】
そして、S605の処理が行われた後、抽出された主要被写体を戻すことによって、主要被写体にはピントが合った状態で、背景部分にはぼかし処理が施された画像を得ることができる。
【0044】
以上のように本実施例では、光源領域をぼかすときに中心付近より周辺付近の方が輝度が高くなるように(明るい画像となるように)ぼかすことで、デジタル画像加工処理において実際のレンズで撮影したかのような風合いを再現することが可能となる。
【0045】
<実施例2>
デジタルカメラ等によってレンズを用いて撮影した場合、画角の中心にピントを合わせ、上述のように背景をぼかすと、レンズの光学特性により画角の中心から離れるに従い、玉ボケの形状は扁平していく。実施例2では、実施例1における処理を行う際のぼかし領域の形状をレンズの光学特性を考慮し、その位置に応じた形状に変化させる場合の処理について述べる。
【0046】
図7(a)は、処理対象の画像データの全域を示している。図7(a)では説明のために画像データが表す画像の中心に原点701、原点を通り垂直方向にy軸、水平方向にx軸をとっている。画像データが表す画像は、高さ(height)と幅(width)で表され、処理対象の画像データは、height×width個の画素で構成されているものとする。各画素は、
p(x,y){x|−width≦x<width,y|−height/2≦y<height/2} (式10)
で表される。本実施例では処理対象の画像データの画像はheight<widthである横長の長方形となっているものを例に説明する。
【0047】
また、図7(a)中の黒丸の点は、S201によって検出された点光源の画素を示す。図7(a)では、画像の中心にあるP0(0,0)701と、P1(x,y)702を含む複数点が点光源として検出された状態を示している。
【0048】
そして、検出された点光源の位置が画像全体に対して原点からどれだけ離れているかによって、形状の異なる複数のボケマスクを使い分ける。即ち、原点に近いものは真円に近い形とし、原点から離れるに従って扁平させた楕円形状のボケマスクとする。ここで、ボケマスクとは図5で示した加算領域503に対応し、当該マスク内でぼかし処理を施し、点光源のボケ画像を得るための領域である。
【0049】
P0(0,0)701のぼかし補正では、図7(b)に示すぼけマスク領域703を使用する。P0(0,0)701を中心に、大きさ2R0の補正領域が設定される。P0(0,0)701から半径R0の範囲内にある画素が補正対象となる。本実施例では、画像の中心位置のマスク領域703の形状は円形とする。R0は初期値として適当な値を指定することが可能であり、大きいほどぼけの度合いが大きくなる。本実施例では、R0は、画像のwidthの5%の固定値とする。R0は、ユーザの指定によって可変とするようにしてもよく、その際には、補正効果をユーザが選択できるという効果が出てくる。
【0050】
原点から予め決められた距離離れた範囲にあるP1(x,y)702のぼかし補正は、図7(c)に示すぼけマスク領域704を使用する。図7(c)で示されるぼけマスク領域は、P1(x,y)702の座標に応じて変化する。その変化の制御を以下に説明する。ぼけマスク領域704は、長辺R0、短辺R(x,y)、さらに角度θ°だけ回転した楕円形とする。ここで、R(x,y)との定義は以下の様にする。
R(x,y)=R0×(width−(l/2))/width(式11)
ただし、l=(x2+y2)1/2 (式12)
θ: 中心点P0(0,0)701とP1(x,y)702とを結ぶ直線と、x軸とのなす角度[°]
【0051】
このようにして定義されるボケマスク領域の形状を図7(d)に示す。加算領域を以上のように中心から離れるに従って扁平させる点以外は実施例1に示した処理を施す。図7(d)に示されるように、中心に近づくほど円形に近いぼけ効果が得られ、端部ほどより扁平した形状のぼけ効果が得られるようになっている。即ち、点光源領域の画角内における位置に応じてぼかし処理を施す範囲を異ならせることによってレンズを通して撮影した画像の再現性が向上する。さらに扁平する方向が原点を中心に回転しており、よりレンズによる光学的特性に従った点光源のボケの状態を再現できるようになっている。
【0052】
<実施例3>
実施例2では、点光源の座標によって、ボケマスク領域の扁平率と回転を制御する例について述べた。しかし、デジタルカメラ等によってレンズを通して実際に撮影された画像では、画像の端部に行くに従って、ボケ領域が大きくなる。これはレンズの中心から離れるに従ってボケの度合いが大きくなるためである。そこで、本実施例では実施例2のボケマスク領域の形状の制御に加え、端部に行くほどぼけマスク領域のサイズを大きくする制御を加えることで、実施例2よりも、より実際にレンズを用いて撮影した際のボケ画像に近づく補正効果を得るものである。
【0053】
以下では、実施例2との差分のみ説明する。その他の部分は実施例1、2と同じ処理が実行されるものとする。
【0054】
実施例2では、図7(c)において、楕円の短辺R(x,y)が座標p(x,y)の関数となって変化し、長辺R0は固定であった。実施例3では、楕円の長編をR’(x,y)として、座標p(x,y)の関数として求めることで、画像の端部ではボケマスク領域が拡大されるように制御する。このため、R’(x,y)を以下のように定義する。
R’(x,y)=R0×cosh(Z) (式13)
ただし、Z=l/(width)×π/2,l=(x2+y2)1/2 (式14)
これにより、R’は、図8(a)に示すように下に凸の単調増加の曲線となり、画像の端部にいくほど値が大きくなる。
【0055】
このようにして定義されるボケマスク領域の形状を図8(b)に示す。図8(b)に示されるように、中心では円形のぼけ効果が得られ、端部ほど扁平した形状になるとともに、実施例2と同様に扁平する方向が原点を中心に回転する形状としながらも、端部ほどボケマスク領域が大きくなっている。これにより、実施例2よりさらにレンズの光学的な特性を考慮したぼけの状態を再現できるようになる。
【0056】
なお、R’を制御する関数に双曲線関数のcosh( )を使用したが、特にこの関数に限定するものではない。端部に行くにしたがって増加する特性を持った関数であればよい。
【0057】
また、実施例3では、実施例2のボケマスク領域の形状の制御にサイズを変化させる制御を追加したが、形状を変化させずにサイズ(面積)を変化させる制御のみでボケマスク領域を決定してもよい。
【0058】
<実施例4>
以上の実施例において、点光源の検出(S201、S603)を、注目画素の輝度値が周辺画素の輝度値よりも所定閾値よりも高いものを抽出することによって行うことを示した。即ち、周辺に比べて周辺に比べて突出して明るい画素(画素群)を点光源として検出することを示した。しかしながら、デジタルカメラ等で実際に撮影される画像は種々の撮影状態が存在し得て、点光源はその撮影状態に応じてその特徴が異なることがある。本実施例では、点光源の検出の精度を上げるための方法について述べる。
【0059】
画像の撮影状態は、様々な条件が考えられる。例えば、夜景撮影の場合と晴天の昼光下における撮影の場合とでは、点光源の明るさに違いが出てくることがある。また、曇天の時に露出不足の状態で撮影した画像などは、全体的に低い輝度値となる。
【0060】
本実施例ではこのような状況を考慮し、処理対象の画像の特徴を解析し、その結果により当該画像の撮影状態を推定し、その結果に基づき点光源の検出の際のパラメータを変更したり、さらに点光源候補の領域の形状や大きさも考慮するものである。なお、画像の特徴の解析結果から撮影状態を推定するものであり、処理対象の画像は実際にその状態で撮影されたものとは限らないし、そもそも撮影によって得られた画像とも限らない。
【0061】
図9は、本実施例における点光源検出処理(S201、S603)の流れを示すフローチャートである。
【0062】
S901では、処理対象の入力画像データIin(x,y)(各画素RGB成分で構成されたカラー画像)を所定サイズにリサイズし、リサイズ後の画像データIre(x,y)を得る。ここでx,yは画像上での座標位置を示す。入力される画像データのサイズ(画像データが表す画像の縦横サイズの組合せ)が複数存在する場合、後続の処理において点光源の大きさを判断する時などに、元画像のサイズを考慮した判定をする必要がある。従ってここでは、いずれのサイズの画像データが入力されても予め決められたサイズにリサイズすることで、以降の処理における制御パラメータを統一化できるようにする。リサイズに際しては画素の補間、または画素の間引きを行う。リサイズ後のサイズについては特に限定するものではないが、例えば、1600×1200画素など画素数を基準に統一されたサイズにリサイズする。ただし、ここでリサイズを行わずに、入力された画像データをそのまま用いて後段の処理に移るようにしてもよいし、リサイズさせる場合はリサイズ後のサイズを常に同一とする必要もない。また、リサイズを縮小する処理(間引き)に限定し、処理対象の画像データの量を減らし、負荷軽減を図るようにしてもよい。以下では処理対象の画像データを所定のサイズにリサイズを行った場合について述べる。処理対象の画像データは1画素につき多値の画像データである。
【0063】
S902では、リサイズされた処理対象の画像データに対して適応的2値化処理を行う。図10はS902における処理の詳細を示すフローチャートである。
【0064】
S1001では、入力されたカラー画像データに対して、画素単位で輝度・色差変換を行う。輝度・色差成分については種々のものを採用可能であるが、ここでは、YCbCr成分に変換するものとし、変換後の画像をIrey(x,y)とする。ここでの変換は公知の変換方式を採用可能である。
【0065】
S1002では、Irey(x,y)におけるY(輝度)成分のヒストグラムを算出する。図11は、S1002で算出したヒストグラムの例であり、横軸は輝度値Y、縦軸は度数(画素数)を示している。
【0066】
次にS1003において、ハイライトポイントの算出を行う。ハイライトポイントとは、ヒストグラムの累積度数割合が予め決められた割合(例えば97.0%)となる高輝度ポイントであり、図11においてHLYで示した箇所である。また処理対象の画像データにおける最大輝度値は図中MaxYで示した箇所である。ここでハイライトポイントを求めるのは、度数分布における上位および下位の数パーセントの領域はノイズである可能性が高いという統計学上の考えを適用したものである。そのため、ここではMaxYではなく、HLYを基準として後述の点光源閾値を決定する。これにより画像中、ノイズの可能性のある最高輝度の画素の影響を排除して適切な点光源抽出を行う。
【0067】
そしてS1004において、Irey(x,y)上の画素単位で順次2値化処理を行う。図12は、S1004における2値化処理の詳細を示すフローチャートである。まずS1201において、重みWを決定する。後続の2値化処理において、2値化を行う際に0とするか1とするかを決めるための輝度閾値ThYは、重みWとHLYとを用いて、以下のように決定する。
ThY=HLY×W (式15)
【0068】
S1201で決定される重みは、本実施例においては予め決められた所定値とし、例えば0.9などの値とする。重みWが決定されたら、S1202〜1203において、Irey(x,y)の各画素に対して以下の条件に従って2値化処理を行い、2値化済み画像データIreb(x,y)を生成する。
Irey(x,y)のY成分≧ThYのときIreb(x,y)=1,Irey(x,y)のY成分<ThYのときIreb(x,y)=0 (式16)
【0069】
このようにして生成された2値化済み画像データIreb(x,y)を、図13に示す。図13において、1301〜1304は輝度が高い画素群である領域(ハイライト領域)として抽出された領域群である。ここでは図に示すように様々な大きさや形状の領域が含まれているものとする。
【0070】
処理は図9に戻り、S903において、2値化済み画像データIreb(x,y)上に存在する領域(1301〜1304)のクラスタリングを行う。領域のクラスタリング手法については特に限定するものではなく、ラベリング処理等の公知の方法を用いればよい。ここでは、演算量が少なく、かつ領域の大きさや形状把握が容易に行える境界線追跡法を用いて説明する。
【0071】
図14は境界線追跡法によるクラスタリングを説明するための図である。図14(a)において、1401は2値化済み画像データIreb(x,y)の一部を示している。本実施例の境界線追跡法では、まず2値化済み画像データを左上から右下に向かって順次走査していき、Ireb(x,y)の値が1である画素で一時停止する。その後、領域の境界に存在する画素を反時計回り(時計回りでもよい)に順次探索してゆき、一時停止した画像まで戻ったら、1つの領域の探索が終了する。この1つの領域の境界を追跡する間に、領域の最大最小座標位置(Xmin,Xmax,Ymin,Ymax)や周辺長Larrを算出する。最大最小座標位置が得られれば、領域の中心位置(Cx,Cy)は以下のように求めることができる。
Cx=(Xmax+Xmin)/2,Cy=(Ymax+Ymin)/2 (式17)
【0072】
一つの領域についての探索が終了すると、CPU100は探索の結果を示す情報をRAM102に記憶し、次の領域の探索を行うために、再び水平方向に走査を開始する。図14(b)は、本処理の結果得られた情報が、領域探索順に割り当てられたIDと対応付けられて記憶されている様子を示している。ここでは記号で示しているが実際には数値によって座標や長さが記憶される。
【0073】
そしてS904では、図14(b)に示す領域IDと領域座標情報などのクラスタリング情報を用いて点光源の抽出(特定)を行う。図15はS904において点光源の抽出(点光源の位置を特定)する処理の流れを示すフローチャートである。
【0074】
まず、ID=0の領域に対してS1501において、当該領域のサイズが適切か判定する。この判定は以下の式に従って行う。
(XmaxID−XminID)≦ThSizeかつ(YmaxID−YminID)≦ThSize (式18)
上式において、ThSizeは点光源の大きさの上限を示す所定の閾値であり、予め決められているものとする。
【0075】
上式を満たすと判定された場合、S1502に進み、当該領域の周辺長の長さが適切か(点光源となり得る長さであるか)判定する。この判定は、以下の式に従って。
abs(LarrID−LrectID×K)≦ThArrL (式19)
上記において、abs( )は絶対値を求める関数であり、LrectIDおよびKは以下の式によって求める。
LrectID=((XmaxID−XminID)+(YmaxID−YminID))×2 (式20)
K=π/4=0.785 (式21)
【0076】
上式において、LrectIDは注目領域を取り囲む矩形の周辺長であって、このLrectIDに上記Kを乗じることにより、矩形内に隣接する円、または楕円の周辺長を近似的に求めることができる。この周辺長と、実際に境界線追跡処理において計測した周辺長LarrIDとの絶対差が、所定の閾値ThArrLより大きい場合、点光源候補の領域の形状が、円または楕円ではなく、もっと複雑な形状をしている可能性が高い。従って当該領域は点光源リストから除外する。
【0077】
以上のような処理によりS1502において周辺長が適切であると判定された領域については、S1503に移り、当該領域の密度についての判定を行う。
【0078】
S1503では、座標(Xmin,Ymin)−(Xmax,Ymax)で表される矩形領域に対して、Ireb(x,y)上で1となっている画素の数をカウントする。該カウント値をNumIDとすると、S1503における密度判定は以下の式に従って行われる。
abs(NumID―Sid)≦ThNum (式22)
上式において、Sidは矩形領域の面積であり、以下の式で求められる。
Sid=(XmaxID−XminID)×(YmaxID−YminID) (式23)
【0079】
式22において、ThNumは予め決められた所定の閾値であり、矩形の面積と画素密度を比較して、ThNum以上の差があれば、それは円形領域ではなく別の形状である可能性が高いため、点光源リストから除外する。
【0080】
そして、S1504で最後の領域と判断されるまでS1505で領域IDのインクリメントを行い、以上説明したS1501〜1503の処理を、全ての点光源候補領域に対して適用する。これにより、図13において、点光源としては大きすぎる領域1302、形状が複雑な領域1303、密度が低い(形がいびつ過ぎる)領域1304を点光源から除外する。そうすることで、図13のような点光源候補の中から点光源候補として確からしい領域1301のみを抽出(特定)することが可能となる。
【0081】
そして、図2のS202または図6のS604のぼかし処理が行われた後、ここで抽出された点光源領域1301の座標リストは、図2のS203または図6のS605の点光源ぼかし処理に入力され、上述のような点光源加工処理が行われる。それ以外の処理については、前述の実施例と同様の処理を行えばよい。ただし、S901におけるリサイズを行った場合は、元の画像サイズに戻すための処理を行ってからS202またはS604以降の処理を、あるいはリサイズされた状態でS202またはS604以降の処理を行ってから最後に元の画像サイズに戻す。
【0082】
本実施例によれば、処理対象の画像データの輝度分布に従って点光源候補と認識するための輝度レベルを変更して点光源領域を特定する。即ち、処理対象の画像データの特徴に応じて点光源領域の特定基準を変更するので、処理対象の画像の撮影状態等に従って適切に点光源を検出可能となる。また、点光源候補の領域の中から、その領域の形状や大きさに基づき点光源領域を特定するので、点光源領域の特定の精度を上げることができる。なお、輝度分布に従って点光源候補を特定する処理または点光源領域の形状や大きさに基づく特定する処理のいずれかのみを行っても十分な効果は期待できる。
【0083】
<実施例5>
例えば、夜景の画像を処理対象とする場合、様々な色の照明が点光源となり得る。こういった種々の光源を点光源として抽出する際、点光源候補としてリストアップする際の2値化閾値を実施例4のように固定閾値とすると輝度の高い黄色近辺の点光源だけが抽出され、青系色の近辺は抽出されにくくなる。そこで、本実施例では種々の色の点光源を適切に抽出(特定)できるように実施例4の適応的2値化処理を行う際の閾値を各画素の色によって変動させるものとする。
【0084】
図16(a)は、色相と輝度値の関係を示す図である。同図において、横軸は色相を示し、0度付近が赤、そこから黄色、緑、青と変化することを示している。また、同図において縦軸は輝度値Yである。図16(a)に示すように、輝度値は黄色近辺が最も高く、青近辺が最も低い値となる。本実施例ではこの関係を考慮して適応的2値化処理の際の閾値を色毎に決定する。即ち、図16(b)に示すように図16(a)の色相と輝度値の関係に従って色毎に重みWを変動させ、注目画素が示す色毎に実施例4における閾値に図16(b)に従った重みWを乗じた値を2値化の閾値として2値化を行う。図16(b)に示す色相と重みWの関係を示す値はテーブルとしてHD103に記憶しておく。このテーブル化の際の色相の刻み間隔は処理対象の画像の階調等により適宜決定するようにしたり、固定の間隔としたりする。重みWは、図16(b)に示すように、黄色近辺で大きく、青色近辺では小さくなるように設定されており、元々存在するそれぞれの色における輝度差を吸収し、両者を同様に点光源として抽出可能としている。
【0085】
図17は、本実施例における適応的2値化処理における2値化処理の流れを示すフローチャートである。このフローチャートは図10のS1004において行われる処理を示す。
【0086】
S1701では、処理対象の画像データの今回の処理対象である注目画素Ire(x,y)の色相を算出する。この算出は公知の演算式を用いればよい。そしてS1702では、注目画素の色相に応じた重みWを図16(b)に対応するテーブルを参照し、参照結果に基づき決定する。
【0087】
そしてS1703において式16で示した式に従い2値化処理を行う。そして処理対象の全ての画素について2値化処理を行うまでS1701〜1703の処理を行う。これ以外の処理は実施例4において説明した通りなのでここでの説明は省略する。
【0088】
以上のように、本実施例によれば、様々な色の点光源が存在する夜景のような画像においても適切に点光源を特定することが可能となる。
【0089】
<実施例6>
デジタルカメラ等で撮影された画像には、様々な環境下での撮影による画像が存在し得る。例えば、晴天の昼光下で撮影された風景、ネオンライトが煌めく夜景、曇天の下で露出不足の状態で撮影された画像などである。このように種々の撮影環境下において点光源の特徴が異なることがあり、実施例4のように固定閾値に従って2値化処理すると適切に点光源を特定できないことがある。
【0090】
本実施例では、実施例4の適応的2値化処理において、このような種々の撮影環境下に対応した画像について、その特徴に応じて2値化の際の閾値を変動させることにより、適切に点光源を特定することができるようにするものである。本実施例では、図9のS902の処理を行う際に、処理対象の画像の撮影シーンを判定し、その結果に従って2値化処理の際の閾値が変動するように重みWを決定する。
【0091】
図18(a)は晴天の昼光下で撮影された画像の典型的サンプルの輝度ヒストグラムを、図18(b)は夜景シーンで撮影された画像の典型的サンプルの輝度ヒストグラムを示している。これらのヒストグラムでも実施例4と同様に、累積度数割合が所定の割合(例えば97.0%)となる位置を、HLYとしている。このHLYを基軸として点光源を抽出する際に、昼光下においては撮影時の光量が十分であるため、画像のコントラストも適正である確率が高く、検出したHLYをそのまま閾値として利用してもよい。一方、図18(b)に示すような夜景シーンの場合、固定割合で特定したHLYを閾値とすると、本来抽出したい点光源閾値HLY_2に対してHLYの位置の輝度値が高く、実際に画像中に存在する点光源の一部しか抽出できていない可能性がある。このような状況を鑑みると、点光源を抽出するための2値化閾値は、撮影シーンの種類に応じて適応的に制御した方が、より適切な点光源抽出処理が可能となる。従って、本実施例ではこれらの撮影シーン毎の輝度分布に従って図18(c)に示すように重みWを異ならせる。ここでは撮影シーンを3種類に分類したものを例示する。これらの重みWは撮影シーンと対応付けられてHD103に記憶される。また、これらの重みWは以下の関係を満たす。
風景>夜景>露出不足 (式24)
なお、ここでは撮影シーンとして3パターンを例示したが、これらに限らず種々の撮影シーンを採用することが可能である。
【0092】
図19は、本実施例における適応的2値化処理における2値化処理の流れを示すフローチャートである。このフローチャートは図10のS1004において行われる処理を示す。
【0093】
まず、S1901において処理対象の画像の撮影シーンの情報を取得する。ここで取得される撮影シーンは入力される画像データに付随している撮影情報を用いてもよいし、画像の特徴量の解析によって推定するものでもよい。前者の場合、例えばExif(Exchangeable Image File Format)の規格に準拠した画像ファイルであれば、デジタルカメラ等で撮影した際の撮影情報をタグとして画像ファイルに書き込むことが可能である。従って、その情報を画像ファイルから読み出して取得すればよい。後者の場合、例えば、特開2011−10162号公報、特開2010−273144号公報、特開2010−251999号公報に記載されている方法を用いればよい。即ち、撮影シーンの推定を行うために、処理対象の画像から複数種類の特徴量を算出して特徴量ベクトルを形成する。そしてこの特徴量ベクトルを、予め各種シーン毎に学習して保持しているデータベースと比較し、入力画像がどのようなシーンで撮影されたものかを推定するものである。なお、S1901では撮影シーンの推定ができれば十分なので、実際のヒストグラムの作成は省略しても構わない。
【0094】
S1902では取得した撮影シーンに応じて重みWを決定し、S1903でその重みWを用いて式16で示した式に従って2値化処理を行う。そして、S1904で最終画素と判断されるまで順次全画素について2値化処理を行う。
【0095】
以上のように、本実施例によれば、撮影シーンに基づく画像の特徴に応じて閾値を設定して点光源の検出を行うので、撮影シーンに応じた適切な検出が可能となる。また、このとき、撮影シーンの特定によって閾値が決定されるので、処理負荷はあまり高くならない。
【0096】
なお、以上の例では撮影シーンに応じた点光源抽出のためのパラメータ制御の例として重みWを変化させるものを示したが、他の方法も採用可能である。例えば、HLYとする累積度数割合を撮影シーン毎に調整することによって、それを閾値とすることによっても同等の効果が得られる。また、これら以外の方法としてもよい。
【0097】
<実施例7>
実施例6では処理対象の画像の撮影シーンの情報を特定することによって、それを点光源の検出の際のパラメータに反映させる例を説明した。デジタルカメラ等の撮影においては、撮影感度(ISO感度)を変更して撮影することができる。ISO感度は50〜数万までの値を取る可能性があり、その値が高いほどセンサ感度が高い状態で撮影されたことを意味する。撮影感度が高い状態であった場合、少しの光量においても輝度値としては非常に高い値となるため、点光源検出のための2値化の閾値は高くすべきである。また、撮影感度が低い状態であった場合、全体の光量が低下した状態と等価になるため、2値化閾値は低く設定すべきである。
【0098】
従って、本実施例では、処理対象の画像がデジタルカメラ等で撮影された画像である場合、当該画像の撮影時のISO感度の情報を取得し、それに従って点光源検出のための適応的2値化処理の際の閾値を変更するものである。これにより、点光源を適切に検出可能とする。
【0099】
図20は、本実施例における適応的2値化処理における2値化処理の流れを示すフローチャートである。このフローチャートは図10のS1004において行われる処理を示す。
【0100】
S2001では、処理対象の画像データから撮影情報を取得する。処理対象の画像データがExifの規格に準拠したものであれば、タグとして撮影感度情報としてISOSpeedRateが書き込まれているものがある。ここではこの値を取得する。
【0101】
次にS2002において、取得したISO感度に応じた重みWを決定するが、本実施例による重みは以下のように決定する。
【0102】
図21は、ISO感度(ISOSpeedRate)の値とそれに対応する重みWの関係を示す図である。図に示すように、ISO感度が所定値ThSR0より低い場合には、ISO感度が大きくなるにつれて重みWも増加し、ThSR0の時点でW=1.0となる。この関係を示すデータをテーブル化してHD103に記憶しておく。そして、S2002では、S2001で取得した撮影情報に対応する重みWを、上記テーブルを参照することにより決定する。そしてS2003では、その重みWを用いて式16で示した式に従って2値化処理を行う。そして、S2004で最終画素と判断されるまで順次全画素について2値化処理を行う。
【0103】
以上のように、本実施例によれば、処理対象の画像の撮影時の撮影感度に応じて適切に点光源の検出を行うことが可能となる。また、この場合、処理対象の画像ファイルに付随する情報を用いるので処理負荷は高くならない。
【0104】
なお、以上の例では撮影感度に応じた点光源抽出のためのパラメータ制御の例として重みWを変化させるものを示したが、他の方法も採用可能である。例えば、HLYとする累積度数割合を撮影感度に応じて調整することによって、それを閾値とすることによっても同等の効果が得られる。また、これら以外の方法としてもよい。
【0105】
<実施例8>
デジタルカメラ等の撮影においては、センサに届く光量を調節するために、絞りを手動、あるいは自動で調整することがある。この絞りの度合いはF値として表される。
【0106】
このF値は値が小さいほど絞りが開放状態になっていることを示しており、その場合、撮影画像はいわゆる被写界深度が浅い状態となる。被写界深度が浅い状態であると、撮影時の主要被写体のみ合焦状態となり、背景はぼけることになるため、点光源も絞りの形状に応じて大きくぼけた状態となる。逆にF値が大きいと、撮影画像はいわゆる被写界深度が深い状態となる。被写界深度が深いと、撮影時の主要被写体から背景に至る広範囲に渡って合焦状態となっているため、背景の点光源は小さいままとなる。
【0107】
そこで、本実施例では背景の点光源のサイズが撮影時の絞りの状態によって変化することを考慮し、図15のS1501におけるサイズの判定に反映させる。本実施例では、S1501で点光源候補とするためのサイズの閾値ThSizeを、F値に応じて変更する。
【0108】
図22は、F値とサイズ閾値ThSizeとの関係を示す図である。F値がThF0より小さいとき、すなわち、被写界深度が浅い場合には、閾値を大きくし、F値が増加するにつれて閾値が減少するような関係となっている。F値が所定値ThF0より大きいときには、被写界深度は十分深いため、閾値は一定値となるようにしている。
【0109】
なお、実施例6、7で述べたようにExifの規格に準拠した画像データにはタグとしてF値が書き込まれるものがある。従って処理対象の画像データに付随しているF値を参照することによって特定されたF値に従ってサイズ閾値ThSizeを特定し、図15の処理を実行する。
【0110】
このように、F値を参照して画像の被写界深度を推定し、背景に存在する点光源のサイズに適応的に対応することで、被写界深度の状態が変化したとしても、適切な点光源の特定が可能となる。
【0111】
なお、以上述べてきた実施例の処理は適宜複合させたり、一部変更させたりしてもよい。また、以上の実施例は、PCによる処理だけでなく、デジタルカメラやプリンタによって処理させるようにしてもよい。この場合、デジタルカメラやプリンタが画像処理装置として機能することになる。また、プリンタにおいて処理する際、上記したような処理が施された画像を被記録媒体上にプリントすることが可能となるが、以上の処理を濃度データに変換した後の画像データに対して行うようにしてもよい。
【0112】
以上述べてきたような実施例により、適切に点光源を特定し、特定された点光源のぼかし処理を適切に行うことができる。
【0113】
また、本実施形態は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(CPUやMPU等)がプログラムを読み出して実行する処理である。また、プログラムは、1つのコンピュータで実行させても、複数のコンピュータを連動させて実行させるようにしてもよい。また、上記した処理の全てをソフトウェアで実現する必要はなく、一部または全部をハードウェアによって実現するようにしてもよい。
【技術分野】
【0001】
本発明は、入力された画像データに所定の処理を施す画像処理装置、画像処理方法およびプログラムに関する。
【背景技術】
【0002】
従来、デジタルカメラによって撮影を行う際、主な被写体にピントを合わせ、背景をぼかす撮影手法が知られている。このような撮影手法において、点光源をぼかすことにより、当該点光源に対応する部分において玉ボケを生じさせ、幻想的な効果のある画像を得ることができる。このような玉ボケはデジタルカメラのレンズの光学的特性により生ずるものであり、玉状のボケ画像内で明るさが異なる。なお、点光源とはある程度の大きさを有した局所的な光の存在する領域を指す。
【0003】
また、画像データを取り込み、画像処理によって玉ボケを生じたような画像に加工するものが知られている(特許文献1、2参照)。
【0004】
特許文献1は、画像内の光源領域に対して、予め用意された複数のフィルタのいずれかを選択することで、光源領域をぼかす際の大きさまたは形状を変える手法を開示している。特許文献2は、背景ぼかし処理に際して高輝度部分の強調処理を行う手法を開示している。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2009−003858号公報
【特許文献2】特開2009−218704号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
実際にデジタルカメラ等で撮影して得た画像中の玉ボケ部分は、レンズの光学的特性により複雑に変化している。従って、上記特許文献1、2に示された手法では実際の撮影によって得た画像のような風合いを再現できていない。
【0007】
本発明は以上のような課題に鑑みてなされたものであり、レンズを用いて撮影することによって得られるぼかし画像を、画像データを処理することによって得ることのできる画像処理装置、画像処理方法およびプログラムを提供するものである。
【課題を解決するための手段】
【0008】
上記課題を解決するため、本発明の画像処理装置は、画像データを入力する入力手段と、前記入力手段により入力された画像データが表す画像のうち局所光に対応する領域を検出する検出手段と、前記検出手段により検出された局所光に対応する領域に対してぼかし処理を施す処理手段とを有し、前記処理手段は、局所光に対応する領域の中心部よりも周辺部が明るい画像となるようにぼかし処理を施す。
【発明の効果】
【0009】
本発明によれば、レンズを用いて撮影することによって得られるぼかし画像を、画像データを処理することによって得ることができる。
【図面の簡単な説明】
【0010】
【図1】実施形態の画像処理装置の構成を示すブロック図である。
【図2】実施形態の処理の流れを示すフローチャートである。
【図3】点光源検出の処理の流れを示すフローチャートである。
【図4】レンズを通して入力される光の結像の様子を示す図である。
【図5】点光源ぼかし処理を説明するための図である。
【図6】背景ぼかし処理の流れを示すフローチャートである。
【図7】点光源ぼかしの形状を点光源の位置に応じて変更する例を示す図である。
【図8】点光源ぼかしの大きさを点光源の位置に応じて変更する例を示す図である。
【図9】点光源検出の処理の流れを示すフローチャートである。
【図10】適応的2値化処理の流れを示すフローチャートである。
【図11】輝度値毎の画素数を示すヒストグラムである。
【図12】2値化処理の流れを示すフローチャートである。
【図13】処理対象の画像内における点光源候補の領域群を示す図である。
【図14】境界線追跡法によるクラスタリング処理を説明するための図である。
【図15】点光源を抽出する処理の流れを示すフローチャートである。
【図16】色相に応じた重みを説明するための図である。
【図17】2値化処理の流れを示すフローチャートである。
【図18】撮影シーンに応じた重みを説明するための図である。
【図19】2値化処理の流れを示すフローチャートである。
【図20】2値化処理の流れを示すフローチャートである。
【図21】ISO感度に応じた重みを説明するための図である。
【図22】F値に応じたサイズ閾値を説明するための図である。
【発明を実施するための形態】
【0011】
以下、本発明を実施するための形態の一例について図面を用いて説明する。これはあくまで実施の1つの形態を例として示したものであり、本発明は以下の実施形態に限定されるものではない。なお、以下で扱う点光源はある程度の大きさを持った光に対応する画像もその範疇とするため局所光ともいう。
【0012】
<実施例1>
図1は、実施形態の画像処理装置のハードウェア構成例を示すブロック図である。本画像処理装置は、例えば汎用的なパーソナルコンピュータ(PC)に所定のソフトウェアをインストールすることにより実現可能である。図1において、CPU(中央演算装置)100は、以下のフローチャートで示される処理に対応するプログラムに従って画像処理装置を制御する。ROM101は、CPU100により実行されるプログラムを記憶する。RAM102は、CPU100によるプログラムの実行時に、各種情報を一時的に記憶したり、画像処理装置の処理に関する設定情報を記憶したりする。ハードディスク(HD)103は、処理対象の画像データ(画像ファイル)やパターン識別用のパラメータなどを保存するための記憶媒体である。またHD103は以下のフローチャート等で示される処理に対応するプログラムも記憶する。ディスプレイ104は、ユーザに提示すべき情報を表示する。ユーザインタフェース(UI)105は、ユーザによる操作を受け付ける。UI105にはマウス等のポインティングデバイスやキーボードなどを含む。外部インタフェース(I/F)は、画像処理装置に外部装置を接続するためのインタフェースである。外部装置としては、原稿上の画像を読み取る画像スキャナ、画像データを記憶可能なメモリデバイス、画像を撮影可能なデジタルカメラなどが含まれる。画像処理装置は外部I/F106を介して処理対象の画像データを取得可能である。制御バス/データバス110は上記各部とCPU100とを接続し互いに通信可能にする。
【0013】
次に図1の画像処理装置において、入力された画像データが表す画像に対してぼかし処理を施すための処理について説明する。図2はこの処理の流れを示すフローチャートである。ここで行うぼかし処理では、画像内の特定のオブジェクトにはピントが合った状態とし、背景となるオブジェクトに対してぼかしが入ったような画像に加工する。そして画像に含まれる点光源に対応する箇所に対しては点光源のぼかしに適した点光源ぼかし処理を施す。これらの処理は、実際にカメラのレンズを通して撮影した場合の風合いを擬似的に再現するための処理である。実際にカメラで撮影する際、主な被写体にピントを合わせ、背景のぼかしを行う場合、絞りを大きく開き、被写界深度を浅くすることでピントが合う範囲を狭める。あるいは望遠レンズやマクロレンズを用いて同様な効果をもたらすことができる。この場合、点光源については玉ボケが生じるが、この玉ボケの領域についてはレンズの光学特性により、領域内の中心部分より周辺部の方が輝度が高くなる。以下に示す処理ではこのような撮影手法で背景ぼかしを行った場合の画像を画像データの加工により再現する。そして、以降の処理はROM101またはHD103に記憶されているプログラムをRAM102にロードし、それをCPU100が実行することによりなされる処理である。処理対象の画像データは外部I/F106を介して画像処理装置内に取り込まれ、HD103に記憶される。そして、ユーザがUI105によって当該画像データを指定し、ぼかし処理の実行を指示することにより以下の図2に示す処理が開始される。処理対象の画像データは、デジタルカメラやデジタルビデオで撮影されたもの、アナログカメラで撮影して得た画像をスキャナで読み取ることによって得たものなどがある。処理対象の画像データはこれらの方法以外、画像処理アプリケーションで作成されたものなど種々の方法以外で取得された画像データを用いることができる。また、処理対象の画像データが表す画像には点光源(円とは限らない)に相当する領域が少なくとも1か所は含まれ、それには玉ボケが生じていない、あるいはあまり大きくは玉ボケが生じていないものである場合、以下の処理による効果が大きい。
【0014】
まずS201では、入力された画像データから点光源に対応する領域を検出する。処理対象の画像データは入力された画像データが表す画像(画角)全域、または当該画像のうちユーザによって指定された範囲などである。また、処理対象の画像データを印刷処理する場合、印刷対象となる範囲としてもよい。次にS202において入力された画像データに対するぼかし処理を行う。このときのぼかし方法は画像データを平滑化する方法を用いる。具体的には、平均値フィルタやガウシアンフィルタなどのローパス系のフィルタ処理、画像データを空間周波数領域に変換し、高周波成分を除去する処理、画像を縮小後に拡大する処理などを用いる。このとき、ぼかし処理はS201で検出された点光源及び主要被写体以外の背景部分についてぼかし処理を行う。背景部分の特定については、中央部分に存在するオブジェクトを主要被写体として自動で検出したり、ユーザによりUI105を介して指定されたオブジェクトを主要被写体として抽出し、残った部分を背景部分として扱う。そしてS202ではこの背景部分から点光源として検出された部分を取り除いた部分に対してぼかし処理を行う。
【0015】
次にS203においてS201で検出された点光源領域に対して点光源ぼかし処理を行う。なお、ここでいう点光源とは所定の大きさを持ち、周囲の輝度より高い輝度を持つ光の画像のことである。S201で点光源領域が検出できなかった場合はS203の処理は省略される。
【0016】
次にS201の詳細について図3を用いて説明する。点光源検出処理では、処理対象の画像データの中から孤立した光源領域を検出する。まず光源であると判断するために、所定の輝度閾値Ythを決定する。ここでは一例として、輝度閾値Ythは予め決められた一定の輝度値とする。そして処理対象の画像データから順に注目画素を特定し、順次図3に示す処理を行っていく。
【0017】
S301では、注目画素の輝度が輝度閾値Yth以上かどうかを判断する。輝度閾値Yth以上であると判断された場合、次にS302で当該画素が平坦領域に属するかどうかを判断する。
【0018】
S302では、当該画素を含む点光源候補の画素群で構成される領域が所定の大きさ以下で周囲の画素の輝度値との差が一定より大きい画素を点光源領域として検出し、それ以外は平坦領域(点光源以外の領域)であるとする。ここで、検出したい点光源領域は円形であるとし、検出したい点光源領域の半径をRと周囲との輝度差をYdiffとし、それぞれの値を決定する。この場合S302では、まず注目画素の輝度Yorgと注目画素から見て周囲8方向(上下左右斜め)の半径R離れた画素の輝度値Yn(nは1から8の値)を求める。なお、半径Rの値に応じて比較対象とする画素位置を予め決めておいたり、比較対象とする画素数を変更したりしてもよい。比較対象の画素を隣接する画素とする場合には自ずと上下左右斜めの8画素は特定される。ここでは比較対象の画素は8つとして説明する。輝度値Yorgと8つ分の輝度値Ynそれぞれとの輝度差を算出し、どれか一つでも輝度差Ydiffより小さい画素があった場合、当該画素は平坦領域内であると判断し、全ての輝度差が輝度差Ydiff以上であった場合は平坦領域内ではないと判断する。
【0019】
S302で平坦領域でないと判断された画素は、S303で点光源として検出結果に追加される。以上の処理を処理対象の画像データ内の全ての画素に実施する。なお、ここでは検出したい点光源を円形として説明したが、多角形など他の形状としてもよい。点光源の形状に応じてS302で比較する周囲の画素の位置や、比較する画素数が異なることもある。
【0020】
なお、以上の処理において一旦処理対象の画像データに縮小処理を施して上記のような処理を行い、その後拡大処理を行って元の画像サイズとするようにしてもよい。この場合、縮小処理したときに点光源と判断した1つの画素は拡大処理によって複数の画素となる。これを後続の処理に適用することになる。
【0021】
次に、S203の詳細について説明する。ここで、点光源ぼかし処理のモデルとする現象について説明する。図4はデジタルカメラ等において実際にレンズを通して撮影した場合の点光源の玉ボケの発生を説明するための図である。図4ではデジタルカメラ、デジタルカメラに対する入光、レンズ等は説明のため簡略化して示してある。
【0022】
図4において、光405が左から右に向けて入るものとし、光軸401が中心部に存在する。デジタルカメラに入った通常の光405は、レンズ403を介して結像面404(イメージセンサ)へ到達する。なお、レンズ403は球面レンズを想定しているが、簡略化のためここでは平面で図示している。ここでは点光源に対応する光(背景から入ってくる光)に対する説明であるため、結像面404ではピントが合っていない(焦点が結像面404より前)状態となっている(被写体にはピントが合っている状態である)。
【0023】
このとき、デジタルカメラに入ってきた光のうち絞り402で遮られた光406は本来ならレンズ403に入ってこないが、光の特性である回折現象により絞り402の裏側にある程度回り込み、レンズ403を通り結像面404に届く。なお、光の回折とは、光が障害物にぶつかった場合に、光の波動性のため光が障害物の背後に回り込んで伝わって行く現象のことである。このように光の回折により、結像面404で作られる画像は、絞り402の内側を通った光405に加え、絞り402で遮られた光406の影響を受ける。またこの光はピントが合っていないため、一点に集まる光が拡散されて結像面404に入るので遮られた光406の影響が大きくなる。
【0024】
この現象はカメラレンズに入ってくる光が強いほど遮られた光406も強くなり、それが顕著に表れる。また遮られた光406は回折により光軸401に対して斜めの光としてレンズ403に入る。そのため遮られた光406の焦点は光軸から離れる方向にずれる。そのため結像面404に入るときは、通常の光405と合成されて結像される。そのため、点光源の玉ボケ内においては中心部と比べ中心部より外側(周辺部)の方が輝度が高くなる。
【0025】
また、点光源(背景)がより遠くなったり被写界深度がより浅くなったりする場合、結像面に入ってくる通常の光405の焦点は結像面404からより離れることになる。そのため、結像面404に入ってくる光によってできるぼけの大きさは大きくなり、それに連れて輝度は下がっていく。また、遮られた光406と通常の光405とは異なる角度で結像面404に入る。そのため、焦点と結像面404とが離れていると、所定の距離までは遮られた光406は通常の光405と合成され、かつ所定の距離に近づくにつれ徐々に通常の光405の縁に集まるように変化する。それ以上の距離になると遮られた光406は通常の光605の外側で結像面に入るため、無視できる光の強さになる。
【0026】
このようにカメラレンズに入るある一定以上の明るさを持つ背景からの光は、回折が起こり中心部の輝度より周辺部の輝度の方が高いものとなる。
【0027】
以上のような実際のレンズを通した撮影において点光源の玉ボケに対して発生する現象をモデルとし、点光源ぼかし処理においてはこの現象に近づくように画像データの処理を行う。
【0028】
図5(a)において、処理対象の画像領域501内で、S201で検出された点光源領域が502であった場合、その周囲に点光源領域502を囲むように拡大された領域である加算領域503を設定する。そして、加算領域503の外周より内側(点光源領域502も含む)に次のようにぼかし処理を施す。
【0029】
まず、点光源領域502の各画素の平均輝度値または中心点に相当する画素の輝度値を基にして基準となる加算輝度値を算出する。そして点光源領域502の大きさや平均輝度値、UI105からの指定等に基づくぼかし強度などから点光源領域502より広い加算領域503が決定され、これを加算領域として設定する。
【0030】
この加算領域503の内側にある画素に対して、予め決められた加算輝度値に中心点からの距離に応じて決められた加算係数を用いて得た輝度値を加算していく。加算輝度値をYadd、加算係数をk、注目画素輝度をYorg、出力画素輝度をYoutとすると、下記の式で出力画素輝度を算出できる。
Yout=(1−k)×Yorg+k×Yadd (式1)
このとき、加算係数kは、図4で説明したように玉ボケとなる部分の外周の輝度値が高くなるように設定する。
【0031】
なお、出力輝度値の範囲を特定の範囲に限定すべき場合は、出力輝度値に特定の範囲を指定したクリップ処理を行って、適切な範囲となるように演算するようにしてもよい。
【0032】
また、加算輝度値Yaddは加算領域503の大きさに基づいて変化させてもよい。この場合、所定の基準面積を決め、基準面積に対して加算領域503の面積が大きいときは加算輝度値Yaddが小さくなるようにし、小さいときは大きくなるようにする。
【0033】
なお、以上では各画素の輝度値について演算するようにしたが、上記の処理を各画素の画素値について行ってもよい。こうすることで輝度だけではなく、画素の色に基づいても点光源のぼかし処理が行える。以下では、例として赤(R)緑(G)青(B)の三原色で構成されている各色成分の画素について演算する(画素値を変更する)場合について説明する。
【0034】
ここでは上記と同様に点光源領域502の平均画素値や中心点画素値などを基にして基準となる加算画素値を算出する。加算領域503の内側の画素に対して加算係数を用いて加算していく。加算画素値をRadd、Gadd、Badd、加算係数をk、注目画素値をRorg、Gorg、Borg、出力画素値をRout、Gout、Bout、とすると、下記の式で出力画素値を算出できる。
Rout=(1−k)×Rorg+k×Radd (式2)
Gout=(1−k)×Gorg+k×Gadd (式3)
Bout=(1−k)×Borg+k×Badd (式4)
出力輝度値の範囲を特定の範囲に限定すべき場合は、出力輝度値に特定の範囲を指定したクリップ処理を行って、適切な範囲となるように演算する。加算画素値Radd、Gadd、Baddは加算領域503の大きさに基づいて変化させてもよい。この場合、所定の基準面積を決め、基準面積に対して加算領域503が広いときは加算画素値Radd、Gadd、Baddが小さくなり、狭いときは大きくなるようにする。
【0035】
次に以上の演算で用いた加算係数kの決定方法の例について図5(b)、(c)を用いて説明する。ここでは下記のような2次関数を用いて加算係数を決めている。加算係数をk、点光源の中心504からの距離をr、中心504から加算領域503の外周までの半径をR、aとbは任意の定数とする。ただしkは0.0から1.0の間とする。
1.0=a×R2+b (式5)
1.0≧b≧0.0 (式6)
a≧0.0 (式7)
これらを前提条件として加算係数kは下記の式で算出できる
k=a×r2+b (式8)
なお、加算領域503の面積に基づいて加算係数kを変化させてもよい。この場合、加算領域503が広いときの中心部と周辺部の輝度差より、狭いときの輝度差を大きくする。その場合は、所定の基準面積Sbaseを決め、その基準面積でのbをbbaseとすると、上記前提条件に下記の式を加えることで実現できる。
b=bbase×S÷Sbase (式9)
このときbが1.0より大きくなった場合はbが1.0になるようクリップ処理してもよい。
【0036】
また、加算係数の決定方法は上記のような2次関数以外に基づき求めてもよい。加算係数kの決定方法は加算領域503の中心点504より周辺付近の係数の方が高くなっており、また線形に増加するのではなく図5(c)に示すように下に凸な形で増加しているという特徴があれば他の方法でもよい。例えば、表示や印刷のためのガンマ補正の際に用いられるガンマを使って決定してもよいし、予め計算結果を用意したテーブルを作成して決定してもよい。この加算係数は上述した光の回折を考慮した特性に基づいた値となっている。ここでは加算領域を円形として記述したが、多角形など他の形状でもよい。この場合、上記での加算領域の半径Rは、加算領域の中心点から最も遠い加算領域内の位置になる。また円の中心点を加算係数の開始点としたが、加算領域の形や輝度分布などから開始点を変えてもよい。
【0037】
また、点光源位置と加算領域の大きさによっては、複数の点光源に対する加算領域が重なり合う場合がある。そのとき上記のように出力画素値を算出し、出力画素値同士を比較して値の高い方を出力画素値として出力してもよい。または出力画素値の平均値を出力画素値としてもよい。
【0038】
以上のようにして、画像データの輝度値を変更することによって、レンズを通して撮影した場合の点光源ぼかし処理をより忠実に再現することができる。
【0039】
なお、以上の処理においてS201では、点光源と判断された画素が逐次検出される。このとき、S203でぼかす対象にする点光源領域は、周囲の画素が点光源であった場合は、ひとまとまりとして点光源領域として扱ってもよいし、検出された点光源の一画素ずつを別々の点光源領域として扱ってもよい。
【0040】
また、以上のような処理(背景ぼかし)を行う際、主要な被写体にはピントが合った状態とする必要がある。即ち、特定のオブジェクト(主要な被写体)にはぼかしがかからないようにする必要がある。この場合、図6に示すように以下の手順で処理することでこれを容易にかつ精度良く実現することができる。
【0041】
S601では、入力された画像データから被写体(ピントを合わせるべきオブジェクト)の抽出を行い、主要被写体と背景を分離する。ここで分離する方法は、ディスプレイ104で対象となる画像を表示させ、UI105を用いてユーザに領域を指定させるものとしてもよいし、自動的に被写体を特定して分離させるようにしてもよい。自動で分離させる場合、画像データに付加されている被写界深度などの撮影条件の情報などを用いて被写体を特定するようにしてもよい。なお、ユーザに領域を指定させる場合、図6のフローが開始される前の段階でユーザに指定させる。また、領域の指定に際してはユーザにラフに指定させ、指定された領域の近傍のエッジをCPU100が検出するなどして、CPU100が最終的な領域を決定する半自動方式としてもよい。
【0042】
主要被写体と背景が分離できたらS602に進み、背景と主要被写体とを区別するための背景マスクD601を作成する。ここで、背景マスクD601とは、処理対象の画像データからS601で抽出した主要被写体を除き(画像なしに置き換え)、背景のみとしたものである。そして、この背景マスクD601に対してS603〜605における処理を施す。S603〜605は前述のS201〜203と同様の処理を行う。このとき、背景マスクD601のうち背景に対応する領域の画素だけでS603以降の処理を行ってもよいし、全画素に対してS603の処理を行ってもよい。また、検出された点光源の位置と背景マスクD601とを比較して背景に対応する領域に対しS604以降の処理を行ってもよい。また、S605において、例えば加算領域503が主要被写体領域に重なっている場合は、重なっていないところだけ加算処理を行うようにしてもよい。また、主要被写体領域の画素は加算画素値を算出する対象から除くようにしてもよい。
【0043】
そして、S605の処理が行われた後、抽出された主要被写体を戻すことによって、主要被写体にはピントが合った状態で、背景部分にはぼかし処理が施された画像を得ることができる。
【0044】
以上のように本実施例では、光源領域をぼかすときに中心付近より周辺付近の方が輝度が高くなるように(明るい画像となるように)ぼかすことで、デジタル画像加工処理において実際のレンズで撮影したかのような風合いを再現することが可能となる。
【0045】
<実施例2>
デジタルカメラ等によってレンズを用いて撮影した場合、画角の中心にピントを合わせ、上述のように背景をぼかすと、レンズの光学特性により画角の中心から離れるに従い、玉ボケの形状は扁平していく。実施例2では、実施例1における処理を行う際のぼかし領域の形状をレンズの光学特性を考慮し、その位置に応じた形状に変化させる場合の処理について述べる。
【0046】
図7(a)は、処理対象の画像データの全域を示している。図7(a)では説明のために画像データが表す画像の中心に原点701、原点を通り垂直方向にy軸、水平方向にx軸をとっている。画像データが表す画像は、高さ(height)と幅(width)で表され、処理対象の画像データは、height×width個の画素で構成されているものとする。各画素は、
p(x,y){x|−width≦x<width,y|−height/2≦y<height/2} (式10)
で表される。本実施例では処理対象の画像データの画像はheight<widthである横長の長方形となっているものを例に説明する。
【0047】
また、図7(a)中の黒丸の点は、S201によって検出された点光源の画素を示す。図7(a)では、画像の中心にあるP0(0,0)701と、P1(x,y)702を含む複数点が点光源として検出された状態を示している。
【0048】
そして、検出された点光源の位置が画像全体に対して原点からどれだけ離れているかによって、形状の異なる複数のボケマスクを使い分ける。即ち、原点に近いものは真円に近い形とし、原点から離れるに従って扁平させた楕円形状のボケマスクとする。ここで、ボケマスクとは図5で示した加算領域503に対応し、当該マスク内でぼかし処理を施し、点光源のボケ画像を得るための領域である。
【0049】
P0(0,0)701のぼかし補正では、図7(b)に示すぼけマスク領域703を使用する。P0(0,0)701を中心に、大きさ2R0の補正領域が設定される。P0(0,0)701から半径R0の範囲内にある画素が補正対象となる。本実施例では、画像の中心位置のマスク領域703の形状は円形とする。R0は初期値として適当な値を指定することが可能であり、大きいほどぼけの度合いが大きくなる。本実施例では、R0は、画像のwidthの5%の固定値とする。R0は、ユーザの指定によって可変とするようにしてもよく、その際には、補正効果をユーザが選択できるという効果が出てくる。
【0050】
原点から予め決められた距離離れた範囲にあるP1(x,y)702のぼかし補正は、図7(c)に示すぼけマスク領域704を使用する。図7(c)で示されるぼけマスク領域は、P1(x,y)702の座標に応じて変化する。その変化の制御を以下に説明する。ぼけマスク領域704は、長辺R0、短辺R(x,y)、さらに角度θ°だけ回転した楕円形とする。ここで、R(x,y)との定義は以下の様にする。
R(x,y)=R0×(width−(l/2))/width(式11)
ただし、l=(x2+y2)1/2 (式12)
θ: 中心点P0(0,0)701とP1(x,y)702とを結ぶ直線と、x軸とのなす角度[°]
【0051】
このようにして定義されるボケマスク領域の形状を図7(d)に示す。加算領域を以上のように中心から離れるに従って扁平させる点以外は実施例1に示した処理を施す。図7(d)に示されるように、中心に近づくほど円形に近いぼけ効果が得られ、端部ほどより扁平した形状のぼけ効果が得られるようになっている。即ち、点光源領域の画角内における位置に応じてぼかし処理を施す範囲を異ならせることによってレンズを通して撮影した画像の再現性が向上する。さらに扁平する方向が原点を中心に回転しており、よりレンズによる光学的特性に従った点光源のボケの状態を再現できるようになっている。
【0052】
<実施例3>
実施例2では、点光源の座標によって、ボケマスク領域の扁平率と回転を制御する例について述べた。しかし、デジタルカメラ等によってレンズを通して実際に撮影された画像では、画像の端部に行くに従って、ボケ領域が大きくなる。これはレンズの中心から離れるに従ってボケの度合いが大きくなるためである。そこで、本実施例では実施例2のボケマスク領域の形状の制御に加え、端部に行くほどぼけマスク領域のサイズを大きくする制御を加えることで、実施例2よりも、より実際にレンズを用いて撮影した際のボケ画像に近づく補正効果を得るものである。
【0053】
以下では、実施例2との差分のみ説明する。その他の部分は実施例1、2と同じ処理が実行されるものとする。
【0054】
実施例2では、図7(c)において、楕円の短辺R(x,y)が座標p(x,y)の関数となって変化し、長辺R0は固定であった。実施例3では、楕円の長編をR’(x,y)として、座標p(x,y)の関数として求めることで、画像の端部ではボケマスク領域が拡大されるように制御する。このため、R’(x,y)を以下のように定義する。
R’(x,y)=R0×cosh(Z) (式13)
ただし、Z=l/(width)×π/2,l=(x2+y2)1/2 (式14)
これにより、R’は、図8(a)に示すように下に凸の単調増加の曲線となり、画像の端部にいくほど値が大きくなる。
【0055】
このようにして定義されるボケマスク領域の形状を図8(b)に示す。図8(b)に示されるように、中心では円形のぼけ効果が得られ、端部ほど扁平した形状になるとともに、実施例2と同様に扁平する方向が原点を中心に回転する形状としながらも、端部ほどボケマスク領域が大きくなっている。これにより、実施例2よりさらにレンズの光学的な特性を考慮したぼけの状態を再現できるようになる。
【0056】
なお、R’を制御する関数に双曲線関数のcosh( )を使用したが、特にこの関数に限定するものではない。端部に行くにしたがって増加する特性を持った関数であればよい。
【0057】
また、実施例3では、実施例2のボケマスク領域の形状の制御にサイズを変化させる制御を追加したが、形状を変化させずにサイズ(面積)を変化させる制御のみでボケマスク領域を決定してもよい。
【0058】
<実施例4>
以上の実施例において、点光源の検出(S201、S603)を、注目画素の輝度値が周辺画素の輝度値よりも所定閾値よりも高いものを抽出することによって行うことを示した。即ち、周辺に比べて周辺に比べて突出して明るい画素(画素群)を点光源として検出することを示した。しかしながら、デジタルカメラ等で実際に撮影される画像は種々の撮影状態が存在し得て、点光源はその撮影状態に応じてその特徴が異なることがある。本実施例では、点光源の検出の精度を上げるための方法について述べる。
【0059】
画像の撮影状態は、様々な条件が考えられる。例えば、夜景撮影の場合と晴天の昼光下における撮影の場合とでは、点光源の明るさに違いが出てくることがある。また、曇天の時に露出不足の状態で撮影した画像などは、全体的に低い輝度値となる。
【0060】
本実施例ではこのような状況を考慮し、処理対象の画像の特徴を解析し、その結果により当該画像の撮影状態を推定し、その結果に基づき点光源の検出の際のパラメータを変更したり、さらに点光源候補の領域の形状や大きさも考慮するものである。なお、画像の特徴の解析結果から撮影状態を推定するものであり、処理対象の画像は実際にその状態で撮影されたものとは限らないし、そもそも撮影によって得られた画像とも限らない。
【0061】
図9は、本実施例における点光源検出処理(S201、S603)の流れを示すフローチャートである。
【0062】
S901では、処理対象の入力画像データIin(x,y)(各画素RGB成分で構成されたカラー画像)を所定サイズにリサイズし、リサイズ後の画像データIre(x,y)を得る。ここでx,yは画像上での座標位置を示す。入力される画像データのサイズ(画像データが表す画像の縦横サイズの組合せ)が複数存在する場合、後続の処理において点光源の大きさを判断する時などに、元画像のサイズを考慮した判定をする必要がある。従ってここでは、いずれのサイズの画像データが入力されても予め決められたサイズにリサイズすることで、以降の処理における制御パラメータを統一化できるようにする。リサイズに際しては画素の補間、または画素の間引きを行う。リサイズ後のサイズについては特に限定するものではないが、例えば、1600×1200画素など画素数を基準に統一されたサイズにリサイズする。ただし、ここでリサイズを行わずに、入力された画像データをそのまま用いて後段の処理に移るようにしてもよいし、リサイズさせる場合はリサイズ後のサイズを常に同一とする必要もない。また、リサイズを縮小する処理(間引き)に限定し、処理対象の画像データの量を減らし、負荷軽減を図るようにしてもよい。以下では処理対象の画像データを所定のサイズにリサイズを行った場合について述べる。処理対象の画像データは1画素につき多値の画像データである。
【0063】
S902では、リサイズされた処理対象の画像データに対して適応的2値化処理を行う。図10はS902における処理の詳細を示すフローチャートである。
【0064】
S1001では、入力されたカラー画像データに対して、画素単位で輝度・色差変換を行う。輝度・色差成分については種々のものを採用可能であるが、ここでは、YCbCr成分に変換するものとし、変換後の画像をIrey(x,y)とする。ここでの変換は公知の変換方式を採用可能である。
【0065】
S1002では、Irey(x,y)におけるY(輝度)成分のヒストグラムを算出する。図11は、S1002で算出したヒストグラムの例であり、横軸は輝度値Y、縦軸は度数(画素数)を示している。
【0066】
次にS1003において、ハイライトポイントの算出を行う。ハイライトポイントとは、ヒストグラムの累積度数割合が予め決められた割合(例えば97.0%)となる高輝度ポイントであり、図11においてHLYで示した箇所である。また処理対象の画像データにおける最大輝度値は図中MaxYで示した箇所である。ここでハイライトポイントを求めるのは、度数分布における上位および下位の数パーセントの領域はノイズである可能性が高いという統計学上の考えを適用したものである。そのため、ここではMaxYではなく、HLYを基準として後述の点光源閾値を決定する。これにより画像中、ノイズの可能性のある最高輝度の画素の影響を排除して適切な点光源抽出を行う。
【0067】
そしてS1004において、Irey(x,y)上の画素単位で順次2値化処理を行う。図12は、S1004における2値化処理の詳細を示すフローチャートである。まずS1201において、重みWを決定する。後続の2値化処理において、2値化を行う際に0とするか1とするかを決めるための輝度閾値ThYは、重みWとHLYとを用いて、以下のように決定する。
ThY=HLY×W (式15)
【0068】
S1201で決定される重みは、本実施例においては予め決められた所定値とし、例えば0.9などの値とする。重みWが決定されたら、S1202〜1203において、Irey(x,y)の各画素に対して以下の条件に従って2値化処理を行い、2値化済み画像データIreb(x,y)を生成する。
Irey(x,y)のY成分≧ThYのときIreb(x,y)=1,Irey(x,y)のY成分<ThYのときIreb(x,y)=0 (式16)
【0069】
このようにして生成された2値化済み画像データIreb(x,y)を、図13に示す。図13において、1301〜1304は輝度が高い画素群である領域(ハイライト領域)として抽出された領域群である。ここでは図に示すように様々な大きさや形状の領域が含まれているものとする。
【0070】
処理は図9に戻り、S903において、2値化済み画像データIreb(x,y)上に存在する領域(1301〜1304)のクラスタリングを行う。領域のクラスタリング手法については特に限定するものではなく、ラベリング処理等の公知の方法を用いればよい。ここでは、演算量が少なく、かつ領域の大きさや形状把握が容易に行える境界線追跡法を用いて説明する。
【0071】
図14は境界線追跡法によるクラスタリングを説明するための図である。図14(a)において、1401は2値化済み画像データIreb(x,y)の一部を示している。本実施例の境界線追跡法では、まず2値化済み画像データを左上から右下に向かって順次走査していき、Ireb(x,y)の値が1である画素で一時停止する。その後、領域の境界に存在する画素を反時計回り(時計回りでもよい)に順次探索してゆき、一時停止した画像まで戻ったら、1つの領域の探索が終了する。この1つの領域の境界を追跡する間に、領域の最大最小座標位置(Xmin,Xmax,Ymin,Ymax)や周辺長Larrを算出する。最大最小座標位置が得られれば、領域の中心位置(Cx,Cy)は以下のように求めることができる。
Cx=(Xmax+Xmin)/2,Cy=(Ymax+Ymin)/2 (式17)
【0072】
一つの領域についての探索が終了すると、CPU100は探索の結果を示す情報をRAM102に記憶し、次の領域の探索を行うために、再び水平方向に走査を開始する。図14(b)は、本処理の結果得られた情報が、領域探索順に割り当てられたIDと対応付けられて記憶されている様子を示している。ここでは記号で示しているが実際には数値によって座標や長さが記憶される。
【0073】
そしてS904では、図14(b)に示す領域IDと領域座標情報などのクラスタリング情報を用いて点光源の抽出(特定)を行う。図15はS904において点光源の抽出(点光源の位置を特定)する処理の流れを示すフローチャートである。
【0074】
まず、ID=0の領域に対してS1501において、当該領域のサイズが適切か判定する。この判定は以下の式に従って行う。
(XmaxID−XminID)≦ThSizeかつ(YmaxID−YminID)≦ThSize (式18)
上式において、ThSizeは点光源の大きさの上限を示す所定の閾値であり、予め決められているものとする。
【0075】
上式を満たすと判定された場合、S1502に進み、当該領域の周辺長の長さが適切か(点光源となり得る長さであるか)判定する。この判定は、以下の式に従って。
abs(LarrID−LrectID×K)≦ThArrL (式19)
上記において、abs( )は絶対値を求める関数であり、LrectIDおよびKは以下の式によって求める。
LrectID=((XmaxID−XminID)+(YmaxID−YminID))×2 (式20)
K=π/4=0.785 (式21)
【0076】
上式において、LrectIDは注目領域を取り囲む矩形の周辺長であって、このLrectIDに上記Kを乗じることにより、矩形内に隣接する円、または楕円の周辺長を近似的に求めることができる。この周辺長と、実際に境界線追跡処理において計測した周辺長LarrIDとの絶対差が、所定の閾値ThArrLより大きい場合、点光源候補の領域の形状が、円または楕円ではなく、もっと複雑な形状をしている可能性が高い。従って当該領域は点光源リストから除外する。
【0077】
以上のような処理によりS1502において周辺長が適切であると判定された領域については、S1503に移り、当該領域の密度についての判定を行う。
【0078】
S1503では、座標(Xmin,Ymin)−(Xmax,Ymax)で表される矩形領域に対して、Ireb(x,y)上で1となっている画素の数をカウントする。該カウント値をNumIDとすると、S1503における密度判定は以下の式に従って行われる。
abs(NumID―Sid)≦ThNum (式22)
上式において、Sidは矩形領域の面積であり、以下の式で求められる。
Sid=(XmaxID−XminID)×(YmaxID−YminID) (式23)
【0079】
式22において、ThNumは予め決められた所定の閾値であり、矩形の面積と画素密度を比較して、ThNum以上の差があれば、それは円形領域ではなく別の形状である可能性が高いため、点光源リストから除外する。
【0080】
そして、S1504で最後の領域と判断されるまでS1505で領域IDのインクリメントを行い、以上説明したS1501〜1503の処理を、全ての点光源候補領域に対して適用する。これにより、図13において、点光源としては大きすぎる領域1302、形状が複雑な領域1303、密度が低い(形がいびつ過ぎる)領域1304を点光源から除外する。そうすることで、図13のような点光源候補の中から点光源候補として確からしい領域1301のみを抽出(特定)することが可能となる。
【0081】
そして、図2のS202または図6のS604のぼかし処理が行われた後、ここで抽出された点光源領域1301の座標リストは、図2のS203または図6のS605の点光源ぼかし処理に入力され、上述のような点光源加工処理が行われる。それ以外の処理については、前述の実施例と同様の処理を行えばよい。ただし、S901におけるリサイズを行った場合は、元の画像サイズに戻すための処理を行ってからS202またはS604以降の処理を、あるいはリサイズされた状態でS202またはS604以降の処理を行ってから最後に元の画像サイズに戻す。
【0082】
本実施例によれば、処理対象の画像データの輝度分布に従って点光源候補と認識するための輝度レベルを変更して点光源領域を特定する。即ち、処理対象の画像データの特徴に応じて点光源領域の特定基準を変更するので、処理対象の画像の撮影状態等に従って適切に点光源を検出可能となる。また、点光源候補の領域の中から、その領域の形状や大きさに基づき点光源領域を特定するので、点光源領域の特定の精度を上げることができる。なお、輝度分布に従って点光源候補を特定する処理または点光源領域の形状や大きさに基づく特定する処理のいずれかのみを行っても十分な効果は期待できる。
【0083】
<実施例5>
例えば、夜景の画像を処理対象とする場合、様々な色の照明が点光源となり得る。こういった種々の光源を点光源として抽出する際、点光源候補としてリストアップする際の2値化閾値を実施例4のように固定閾値とすると輝度の高い黄色近辺の点光源だけが抽出され、青系色の近辺は抽出されにくくなる。そこで、本実施例では種々の色の点光源を適切に抽出(特定)できるように実施例4の適応的2値化処理を行う際の閾値を各画素の色によって変動させるものとする。
【0084】
図16(a)は、色相と輝度値の関係を示す図である。同図において、横軸は色相を示し、0度付近が赤、そこから黄色、緑、青と変化することを示している。また、同図において縦軸は輝度値Yである。図16(a)に示すように、輝度値は黄色近辺が最も高く、青近辺が最も低い値となる。本実施例ではこの関係を考慮して適応的2値化処理の際の閾値を色毎に決定する。即ち、図16(b)に示すように図16(a)の色相と輝度値の関係に従って色毎に重みWを変動させ、注目画素が示す色毎に実施例4における閾値に図16(b)に従った重みWを乗じた値を2値化の閾値として2値化を行う。図16(b)に示す色相と重みWの関係を示す値はテーブルとしてHD103に記憶しておく。このテーブル化の際の色相の刻み間隔は処理対象の画像の階調等により適宜決定するようにしたり、固定の間隔としたりする。重みWは、図16(b)に示すように、黄色近辺で大きく、青色近辺では小さくなるように設定されており、元々存在するそれぞれの色における輝度差を吸収し、両者を同様に点光源として抽出可能としている。
【0085】
図17は、本実施例における適応的2値化処理における2値化処理の流れを示すフローチャートである。このフローチャートは図10のS1004において行われる処理を示す。
【0086】
S1701では、処理対象の画像データの今回の処理対象である注目画素Ire(x,y)の色相を算出する。この算出は公知の演算式を用いればよい。そしてS1702では、注目画素の色相に応じた重みWを図16(b)に対応するテーブルを参照し、参照結果に基づき決定する。
【0087】
そしてS1703において式16で示した式に従い2値化処理を行う。そして処理対象の全ての画素について2値化処理を行うまでS1701〜1703の処理を行う。これ以外の処理は実施例4において説明した通りなのでここでの説明は省略する。
【0088】
以上のように、本実施例によれば、様々な色の点光源が存在する夜景のような画像においても適切に点光源を特定することが可能となる。
【0089】
<実施例6>
デジタルカメラ等で撮影された画像には、様々な環境下での撮影による画像が存在し得る。例えば、晴天の昼光下で撮影された風景、ネオンライトが煌めく夜景、曇天の下で露出不足の状態で撮影された画像などである。このように種々の撮影環境下において点光源の特徴が異なることがあり、実施例4のように固定閾値に従って2値化処理すると適切に点光源を特定できないことがある。
【0090】
本実施例では、実施例4の適応的2値化処理において、このような種々の撮影環境下に対応した画像について、その特徴に応じて2値化の際の閾値を変動させることにより、適切に点光源を特定することができるようにするものである。本実施例では、図9のS902の処理を行う際に、処理対象の画像の撮影シーンを判定し、その結果に従って2値化処理の際の閾値が変動するように重みWを決定する。
【0091】
図18(a)は晴天の昼光下で撮影された画像の典型的サンプルの輝度ヒストグラムを、図18(b)は夜景シーンで撮影された画像の典型的サンプルの輝度ヒストグラムを示している。これらのヒストグラムでも実施例4と同様に、累積度数割合が所定の割合(例えば97.0%)となる位置を、HLYとしている。このHLYを基軸として点光源を抽出する際に、昼光下においては撮影時の光量が十分であるため、画像のコントラストも適正である確率が高く、検出したHLYをそのまま閾値として利用してもよい。一方、図18(b)に示すような夜景シーンの場合、固定割合で特定したHLYを閾値とすると、本来抽出したい点光源閾値HLY_2に対してHLYの位置の輝度値が高く、実際に画像中に存在する点光源の一部しか抽出できていない可能性がある。このような状況を鑑みると、点光源を抽出するための2値化閾値は、撮影シーンの種類に応じて適応的に制御した方が、より適切な点光源抽出処理が可能となる。従って、本実施例ではこれらの撮影シーン毎の輝度分布に従って図18(c)に示すように重みWを異ならせる。ここでは撮影シーンを3種類に分類したものを例示する。これらの重みWは撮影シーンと対応付けられてHD103に記憶される。また、これらの重みWは以下の関係を満たす。
風景>夜景>露出不足 (式24)
なお、ここでは撮影シーンとして3パターンを例示したが、これらに限らず種々の撮影シーンを採用することが可能である。
【0092】
図19は、本実施例における適応的2値化処理における2値化処理の流れを示すフローチャートである。このフローチャートは図10のS1004において行われる処理を示す。
【0093】
まず、S1901において処理対象の画像の撮影シーンの情報を取得する。ここで取得される撮影シーンは入力される画像データに付随している撮影情報を用いてもよいし、画像の特徴量の解析によって推定するものでもよい。前者の場合、例えばExif(Exchangeable Image File Format)の規格に準拠した画像ファイルであれば、デジタルカメラ等で撮影した際の撮影情報をタグとして画像ファイルに書き込むことが可能である。従って、その情報を画像ファイルから読み出して取得すればよい。後者の場合、例えば、特開2011−10162号公報、特開2010−273144号公報、特開2010−251999号公報に記載されている方法を用いればよい。即ち、撮影シーンの推定を行うために、処理対象の画像から複数種類の特徴量を算出して特徴量ベクトルを形成する。そしてこの特徴量ベクトルを、予め各種シーン毎に学習して保持しているデータベースと比較し、入力画像がどのようなシーンで撮影されたものかを推定するものである。なお、S1901では撮影シーンの推定ができれば十分なので、実際のヒストグラムの作成は省略しても構わない。
【0094】
S1902では取得した撮影シーンに応じて重みWを決定し、S1903でその重みWを用いて式16で示した式に従って2値化処理を行う。そして、S1904で最終画素と判断されるまで順次全画素について2値化処理を行う。
【0095】
以上のように、本実施例によれば、撮影シーンに基づく画像の特徴に応じて閾値を設定して点光源の検出を行うので、撮影シーンに応じた適切な検出が可能となる。また、このとき、撮影シーンの特定によって閾値が決定されるので、処理負荷はあまり高くならない。
【0096】
なお、以上の例では撮影シーンに応じた点光源抽出のためのパラメータ制御の例として重みWを変化させるものを示したが、他の方法も採用可能である。例えば、HLYとする累積度数割合を撮影シーン毎に調整することによって、それを閾値とすることによっても同等の効果が得られる。また、これら以外の方法としてもよい。
【0097】
<実施例7>
実施例6では処理対象の画像の撮影シーンの情報を特定することによって、それを点光源の検出の際のパラメータに反映させる例を説明した。デジタルカメラ等の撮影においては、撮影感度(ISO感度)を変更して撮影することができる。ISO感度は50〜数万までの値を取る可能性があり、その値が高いほどセンサ感度が高い状態で撮影されたことを意味する。撮影感度が高い状態であった場合、少しの光量においても輝度値としては非常に高い値となるため、点光源検出のための2値化の閾値は高くすべきである。また、撮影感度が低い状態であった場合、全体の光量が低下した状態と等価になるため、2値化閾値は低く設定すべきである。
【0098】
従って、本実施例では、処理対象の画像がデジタルカメラ等で撮影された画像である場合、当該画像の撮影時のISO感度の情報を取得し、それに従って点光源検出のための適応的2値化処理の際の閾値を変更するものである。これにより、点光源を適切に検出可能とする。
【0099】
図20は、本実施例における適応的2値化処理における2値化処理の流れを示すフローチャートである。このフローチャートは図10のS1004において行われる処理を示す。
【0100】
S2001では、処理対象の画像データから撮影情報を取得する。処理対象の画像データがExifの規格に準拠したものであれば、タグとして撮影感度情報としてISOSpeedRateが書き込まれているものがある。ここではこの値を取得する。
【0101】
次にS2002において、取得したISO感度に応じた重みWを決定するが、本実施例による重みは以下のように決定する。
【0102】
図21は、ISO感度(ISOSpeedRate)の値とそれに対応する重みWの関係を示す図である。図に示すように、ISO感度が所定値ThSR0より低い場合には、ISO感度が大きくなるにつれて重みWも増加し、ThSR0の時点でW=1.0となる。この関係を示すデータをテーブル化してHD103に記憶しておく。そして、S2002では、S2001で取得した撮影情報に対応する重みWを、上記テーブルを参照することにより決定する。そしてS2003では、その重みWを用いて式16で示した式に従って2値化処理を行う。そして、S2004で最終画素と判断されるまで順次全画素について2値化処理を行う。
【0103】
以上のように、本実施例によれば、処理対象の画像の撮影時の撮影感度に応じて適切に点光源の検出を行うことが可能となる。また、この場合、処理対象の画像ファイルに付随する情報を用いるので処理負荷は高くならない。
【0104】
なお、以上の例では撮影感度に応じた点光源抽出のためのパラメータ制御の例として重みWを変化させるものを示したが、他の方法も採用可能である。例えば、HLYとする累積度数割合を撮影感度に応じて調整することによって、それを閾値とすることによっても同等の効果が得られる。また、これら以外の方法としてもよい。
【0105】
<実施例8>
デジタルカメラ等の撮影においては、センサに届く光量を調節するために、絞りを手動、あるいは自動で調整することがある。この絞りの度合いはF値として表される。
【0106】
このF値は値が小さいほど絞りが開放状態になっていることを示しており、その場合、撮影画像はいわゆる被写界深度が浅い状態となる。被写界深度が浅い状態であると、撮影時の主要被写体のみ合焦状態となり、背景はぼけることになるため、点光源も絞りの形状に応じて大きくぼけた状態となる。逆にF値が大きいと、撮影画像はいわゆる被写界深度が深い状態となる。被写界深度が深いと、撮影時の主要被写体から背景に至る広範囲に渡って合焦状態となっているため、背景の点光源は小さいままとなる。
【0107】
そこで、本実施例では背景の点光源のサイズが撮影時の絞りの状態によって変化することを考慮し、図15のS1501におけるサイズの判定に反映させる。本実施例では、S1501で点光源候補とするためのサイズの閾値ThSizeを、F値に応じて変更する。
【0108】
図22は、F値とサイズ閾値ThSizeとの関係を示す図である。F値がThF0より小さいとき、すなわち、被写界深度が浅い場合には、閾値を大きくし、F値が増加するにつれて閾値が減少するような関係となっている。F値が所定値ThF0より大きいときには、被写界深度は十分深いため、閾値は一定値となるようにしている。
【0109】
なお、実施例6、7で述べたようにExifの規格に準拠した画像データにはタグとしてF値が書き込まれるものがある。従って処理対象の画像データに付随しているF値を参照することによって特定されたF値に従ってサイズ閾値ThSizeを特定し、図15の処理を実行する。
【0110】
このように、F値を参照して画像の被写界深度を推定し、背景に存在する点光源のサイズに適応的に対応することで、被写界深度の状態が変化したとしても、適切な点光源の特定が可能となる。
【0111】
なお、以上述べてきた実施例の処理は適宜複合させたり、一部変更させたりしてもよい。また、以上の実施例は、PCによる処理だけでなく、デジタルカメラやプリンタによって処理させるようにしてもよい。この場合、デジタルカメラやプリンタが画像処理装置として機能することになる。また、プリンタにおいて処理する際、上記したような処理が施された画像を被記録媒体上にプリントすることが可能となるが、以上の処理を濃度データに変換した後の画像データに対して行うようにしてもよい。
【0112】
以上述べてきたような実施例により、適切に点光源を特定し、特定された点光源のぼかし処理を適切に行うことができる。
【0113】
また、本実施形態は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(CPUやMPU等)がプログラムを読み出して実行する処理である。また、プログラムは、1つのコンピュータで実行させても、複数のコンピュータを連動させて実行させるようにしてもよい。また、上記した処理の全てをソフトウェアで実現する必要はなく、一部または全部をハードウェアによって実現するようにしてもよい。
【特許請求の範囲】
【請求項1】
画像データを入力する入力手段と、
前記入力手段により入力された画像データが表す画像のうち局所光に対応する領域を検出する検出手段と、
前記検出手段により検出された局所光に対応する領域に対してぼかし処理を施す処理手段とを有し、
前記処理手段は、局所光に対応する領域の中心部よりも周辺部が明るい画像となるようにぼかし処理を施すことを特徴とする画像処理装置。
【請求項2】
前記検出手段により検出された局所光に対応する領域を囲む拡大領域を設定する設定手段を有し、
前記処理手段は、前記検出手段により検出された局所光に対応する領域を含む前記設定手段により設定された拡大領域に対してぼかし処理を施すことを特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記処理手段は、前記検出手段により検出された局所光に対応する領域の位置に応じてぼかし処理を施す領域を異ならせることを特徴とする請求項1または2に記載の画像処理装置。
【請求項4】
前記処理手段は、前記検出手段により検出された局所光に対応する領域に含まれる各画素について所定の輝度値を加算することによりぼかし処理を行うことを特徴とする請求項1〜3のいずれか1項に記載の画像処理装置。
【請求項5】
前記処理手段は、前記検出手段により検出された局所光に対応する領域に含まれる各画素の各色成分の画素値を変更することによりぼかし処理を行うことを特徴とする請求項1〜3のいずれか1項に記載の画像処理装置。
【請求項6】
前記処理手段は、レンズを介して画像を撮影する際に発生する回折現象をモデルとしたぼかし処理を施すことを特徴とする請求項1〜5のいずれか1項に記載の画像処理装置。
【請求項7】
入力された画像データが表す画像のうち局所光に対応する領域を検出し、
前記検出された局所光に対応する領域に対して領域の中心部よりも周辺部が明るい画像となるようにぼかし処理を施すことを特徴とする画像処理方法。
【請求項8】
請求項1〜6のいずれか1項に記載の画像処理装置の各手段をコンピュータにより実現することを特徴とするプログラム。
【請求項1】
画像データを入力する入力手段と、
前記入力手段により入力された画像データが表す画像のうち局所光に対応する領域を検出する検出手段と、
前記検出手段により検出された局所光に対応する領域に対してぼかし処理を施す処理手段とを有し、
前記処理手段は、局所光に対応する領域の中心部よりも周辺部が明るい画像となるようにぼかし処理を施すことを特徴とする画像処理装置。
【請求項2】
前記検出手段により検出された局所光に対応する領域を囲む拡大領域を設定する設定手段を有し、
前記処理手段は、前記検出手段により検出された局所光に対応する領域を含む前記設定手段により設定された拡大領域に対してぼかし処理を施すことを特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記処理手段は、前記検出手段により検出された局所光に対応する領域の位置に応じてぼかし処理を施す領域を異ならせることを特徴とする請求項1または2に記載の画像処理装置。
【請求項4】
前記処理手段は、前記検出手段により検出された局所光に対応する領域に含まれる各画素について所定の輝度値を加算することによりぼかし処理を行うことを特徴とする請求項1〜3のいずれか1項に記載の画像処理装置。
【請求項5】
前記処理手段は、前記検出手段により検出された局所光に対応する領域に含まれる各画素の各色成分の画素値を変更することによりぼかし処理を行うことを特徴とする請求項1〜3のいずれか1項に記載の画像処理装置。
【請求項6】
前記処理手段は、レンズを介して画像を撮影する際に発生する回折現象をモデルとしたぼかし処理を施すことを特徴とする請求項1〜5のいずれか1項に記載の画像処理装置。
【請求項7】
入力された画像データが表す画像のうち局所光に対応する領域を検出し、
前記検出された局所光に対応する領域に対して領域の中心部よりも周辺部が明るい画像となるようにぼかし処理を施すことを特徴とする画像処理方法。
【請求項8】
請求項1〜6のいずれか1項に記載の画像処理装置の各手段をコンピュータにより実現することを特徴とするプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【公開番号】特開2013−26938(P2013−26938A)
【公開日】平成25年2月4日(2013.2.4)
【国際特許分類】
【出願番号】特願2011−161443(P2011−161443)
【出願日】平成23年7月23日(2011.7.23)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
【公開日】平成25年2月4日(2013.2.4)
【国際特許分類】
【出願日】平成23年7月23日(2011.7.23)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
[ Back to top ]