(57)【要約】【課題】従来は処理できなかった撮像素子前方に配置された保護ガラス、フィルタ等に付着したゴミによる画質劣化部分を補正できるようにする。【解決手段】二次元的に複数の画素が配列された撮像素子を有する撮像装置により撮像され、撮像素子の前方に配置された光学素子に付着した異物の影が写り込んだ撮影画像を、異物の影の影響を低減するように補正する画像処理装置であって、撮影画像における異物の影に対応する画素の信号をその周囲の画素の信号で補間する補間処理を行う補間部と、補間部に補間処理を行わせる指示を入力する指示部と、指示部から入力される指示により補間部に補間処理を行わせ、補間部が補間処理を失敗した場合に、指示部から再度入力される指示により補間部に補間処理のためのパラメータまたは補間処理のアルゴリズムを変更して補間処理を再実行させる制御部と、を備える。【選択図】図６
2008258982.tif 000002
【特許請求の範囲】
【請求項１】
二次元的に複数の画素が配列された撮像素子を有する撮像装置により撮像され、前記撮像素子の前方に配置された光学素子に付着した異物の影が写り込んだ撮影画像を、前記異物の影の影響を低減するように補正する画像処理装置であって、
前記撮影画像における異物の影に対応する画素の信号を該異物の影に対応する画素の周囲の画素の信号で補間する補間処理を行う補間手段と、
前記補間手段に前記補間処理を行わせる指示を入力する指示手段と、
前記指示手段から入力される指示により前記補間手段に前記補間処理を行わせ、前記補間手段が前記補間処理を失敗したと判断した場合に、前記指示手段から入力される再度の指示を受け付け、前記再度の指示があったときには、前記補間手段に前記補間処理のためのパラメータまたは前記補間処理のアルゴリズムを変更して前記補間処理を再実行させる制御手段と、
を備えることを特徴とする画像処理装置。
【請求項２】
前記指示手段は、最初に前記補間処理を行わせる指示を入力する場合の表示と、前記再度の指示を受け付ける場合の表示とを異ならせることを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記指示手段は、最初に前記補間処理を行わせる指示を入力する第１の指示手段と、前記再度の指示を受け付けるための第２の指示手段とを有することを特徴とする請求項１に記載の画像処理装置。
【請求項４】
前記画像処理装置は更に、
前記撮影画像の任意の位置を指定する位置指定手段と、
前記補間処理の領域の大きさを指定する大きさ指定手段とを有し、
前記制御手段は、前記指示手段から入力される指示により前記補間手段に、前記位置指定手段と前記大きさ指定手段によって指定された位置および大きさに基づいて前記補間処理を実行させ、前記再度の指示があったときには、前記位置もしくは前記大きさの少なくとも一方の値を変更して前記補間手段に前記補間処理を再実行させることを特徴とする請求項１に記載の画像処理装置。
【請求項５】
前記撮影画像には、前記撮像装置により、前記異物の影の少なくとも位置および大きさに関する情報が関連付けられており、
前記制御手段は、前記指示手段から入力される指示により前記補間手段に、前記情報の位置および大きさに基づいて前記補間処理を実行させ、前記再度の指示があったときには、前記位置もしくは前記大きさの少なくとも一方の値を変更して前記補間手段に前記補間処理を再実行させることを特徴とする請求項１に記載の画像処理装置。
【請求項６】
二次元的に複数の画素が配列された撮像素子を有する撮像装置により撮像され、前記撮像素子の前方に配置された光学素子に付着した異物の影が写り込んだ撮影画像を、前記異物の影の影響を低減するように補正する画像処理装置であり、前記撮影画像における異物の影に対応する画素の信号を該異物の影に対応する画素の周囲の画素の信号で補間する補間処理を行う補間手段と、該補間手段に前記補間処理を行わせる指示を入力する指示手段とを備える画像処理装置を制御する方法であって、
前記指示手段から入力される指示により前記補間手段に前記補間処理を行わせ、前記補間手段が前記補間処理を失敗したと判断した場合に、前記指示手段から入力される再度の指示を受け付け、前記再度の指示があったときには、前記補間手段に前記補間処理のためのパラメータまたは前記補間処理のアルゴリズムを変更して前記補間処理を再実行させる工程を備えることを特徴とする画像処理装置の制御方法。
【請求項７】
請求項６に記載の制御方法をコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＣＣＤやＣＭＯＳセンサ等の撮像素子を用いた撮像装置で得られた撮影画像の、撮像素子の前方に配置された光学素子に付着した異物による画質劣化部分を補正する技術に関する。
【背景技術】
【０００２】
近年、デジタルカメラやデジタルビデオカメラなどのように、ＣＣＤ等の撮像素子を用いて画像信号を生成し、それをデータとして記録する撮像装置が数多く出回るようになってきている。デジタルカメラでは、従来記録媒体として使用していた感光フィルムが不要になり、これに代わって半導体メモリカードやハードディスク装置等のデータ記録媒体にデータ化された画像を記録する。これらのデータ記録媒体はフィルムと違って何度でも書き込み、消去が可能であるので、消耗品にかかる経費が少なくて済み、大変便利である。
【０００３】
通常、デジタルカメラには撮像画像を随時表示可能なＬＣＤ（液晶表示器）モニタ装置と、着脱可能な大容量記憶装置が搭載されている。
【０００４】
これら二つの装置を備えたデジタルカメラを利用すると、従来消耗品として使用してきた記録媒体であるフィルムが不要になるばかりでなく、撮像した画像をＬＣＤモニタ装置に表示してその場で直ちに確認できる。したがって、満足の得られない画像データはその場で消去したり、必要に応じて再撮影したりすることが可能となり、フィルムを用いる銀塩カメラと比較すると、写真撮影の効率が飛躍的に高まったと言える。
【０００５】
このような利便性と撮像素子の多画素化などの技術革新により、デジタルカメラの利用範囲は拡大しており、近年では一眼レフ方式などレンズ交換が可能なデジタルカメラも多くなってきている。
【特許文献１】特開２００４-２２２２３１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、デジタルカメラでは、撮像素子に固定された撮像素子保護ガラスや、撮像素子前方に配置された光学フィルタ等（以下、まとめて撮像素子光学系部品）の表面上にゴミ、ほこりなどのゴミ（以下、単にゴミ）が付着する場合がある。このように撮像素子光学系部品にゴミが付着すると、そのゴミによって光が遮られ、その部分が撮影されないなど、撮影した画像の品質が低下するという問題があった。
【０００７】
デジタルカメラに限らず銀塩フィルムを用いるカメラにおいても、フィルム上にゴミが存在すると写りこんでしまう問題はあったが、フィルムの場合は１コマごとにフィルムが移動するため、全てのコマに同様のゴミが写りこむことは大変稀である。
【０００８】
しかし、デジタルカメラの撮像素子は移動せず、共通した撮像素子で撮影を行うため、撮像素子光学系部品に一度ゴミが付着すると、多くのコマ（撮影画像）に同様のゴミが写りこんでしまう。特にレンズ交換式のデジタルカメラにおいては、レンズ交換時にカメラ内にゴミが入り込みやすいという問題がある。
【０００９】
したがって、撮影者は撮像素子光学系部品へのゴミの付着に常時気を使わねばならず、ゴミのチェックや清掃に多くの労力を費やしていた。特に撮像素子は、カメラ内部の比較的奥まったところに配置されているため、清掃やゴミの確認は容易ではない。
【００１０】
さらにレンズ交換式のデジタルカメラでは、レンズ着脱によりゴミの侵入が容易であるばかりでなく、レンズ交換式デジタルカメラの多くは撮像素子の直前にフォーカルプレーンシャッターを配置しており、撮像素子光学系部品上にゴミが付着しやすい。
【００１１】
このような撮像素子光学系部品上のゴミは、通常撮像素子の表面にではなく、保護用のガラスや光学フィルタ上に付着しているため、撮影レンズの絞り値や瞳位置の距離により結像状態が異なる。即ち、絞りが開放値に近いとぼやけてしまい、小さいゴミが付着していたとしてもほとんど影響が無くなるが、逆に絞り値が大きくなるとはっきり結像し画像に影響を与えてしまう。
【００１２】
そこで、画像編集プログラムでゴミが付着した画像を読み込み、ゴミを含む領域をユーザが指定し、指定領域内のゴミの有無を判定して補間処理（以下リペア処理という）を行ってゴミを除去したりすることが行われている。
【００１３】
しかしながら、上記のリペア処理はユーザが指定した領域について、ゴミが検出されなかった場合や、ゴミが指定領域に接している場合には補間処理を実行しない。これは、適切にゴミの領域が検出されずに補間を行うと不自然な画像になる可能性が高いためであり、この場合はユーザが同じ領域を何度指定しても処理は行われなかった。
【００１４】
また、レンズの絞りを絞った状態で白い壁などを撮影し、撮像素子上のゴミだけが写った画像を予め用意して通常撮影画像と組み合わせて使用することで、ゴミを目立たなくする方法が知られている（特許文献１参照）。しかし、この方法では、ゴミ検出用に撮影した画像と、それに関連付ける本撮影画像群との対応付けを常に意識しなくてはならず、煩わしい。そこで、白い壁などを撮影してゴミの位置を取得した後これをデジタルカメラ上で保持しておき、通常撮影時の画像データにゴミの位置や大きさのリストを添付することが考えられる。例えば別途用意された画像処理装置を用い、添付されたゴミの位置から画像データ上のゴミ位置を解析し、解析された領域を周囲の画素で補間処理することにより目立たなくする方法（自動リペア処理）もある。
【００１５】
しかしながら、上記の自動リペア処理でも、ゴミが無いと判定された場合や、ゴミが指定領域に接している場合には自動リペア処理の補間処理は実行されない。これもリペア処理と同様の理由で、適切にゴミの領域が検出されずに補間を行うと不自然な画像になる可能性が高いためである。すなわち、この場合にはその領域には自動リペア処理を行うことができなかった。
【００１６】
従って、本発明は上述した課題に鑑みてなされたものであり、その目的は、撮像素子を用いた撮像装置で得られた撮影画像の、従来は処理できなかった撮像素子前方に配置された保護ガラス、フィルタ等に付着したゴミによる画質劣化部分を補正できるようにすることである。
【課題を解決するための手段】
【００１７】
上述した課題を解決し、目的を達成するために、本発明に係わる画像処理装置は、二次元的に複数の画素が配列された撮像素子を有する撮像装置により撮像され、前記撮像素子の前方に配置された光学素子に付着した異物の影が写り込んだ撮影画像を、前記異物の影の影響を低減するように補正する画像処理装置であって、前記撮影画像における異物の影に対応する画素の信号を該異物の影に対応する画素の周囲の画素の信号で補間する補間処理を行う補間手段と、前記補間手段に前記補間処理を行わせる指示を入力する指示手段と、前記指示手段から入力される指示により前記補間手段に前記補間処理を行わせ、前記補間手段が前記補間処理を失敗したと判断した場合に、前記指示手段から入力される再度の指示を受け付け、前記再度の指示があったときには、前記補間手段に前記補間処理のためのパラメータまたは前記補間処理のアルゴリズムを変更して前記補間処理を再実行させる制御手段と、を備えることを特徴とする。
【００１８】
また、本発明に係わる画像処理装置の制御方法は、二次元的に複数の画素が配列された撮像素子を有する撮像装置により撮像され、前記撮像素子の前方に配置された光学素子に付着した異物の影が写り込んだ撮影画像を、前記異物の影の影響を低減するように補正する画像処理装置であり、前記撮影画像における異物の影に対応する画素の信号を該異物の影に対応する画素の周囲の画素の信号で補間する補間処理を行う補間手段と、該補間手段に前記補間処理を行わせる指示を入力する指示手段とを備える画像処理装置を制御する方法であって、前記指示手段から入力される指示により前記補間手段に前記補間処理を行わせ、前記補間手段が前記補間処理を失敗したと判断した場合に、前記指示手段から入力される再度の指示を受け付け、前記再度の指示があったときには、前記補間手段に前記補間処理のためのパラメータまたは前記補間処理のアルゴリズムを変更して前記補間処理を再実行させる工程を備えることを特徴とする。
【発明の効果】
【００１９】
本発明によれば、撮影画像の、従来は処理できなかった撮像素子前方に配置された保護ガラス、フィルタ等に付着したゴミによる画質劣化部分を、補正することが可能となる。
【発明を実施するための最良の形態】
【００２０】
以下、本発明の好適な実施形態について、図面を参照して詳細に説明する。
【００２１】
＜第１の実施形態＞
被写体をデジタルカメラで撮影すると、そのデジタルカメラの二次元的に複数の画素が配列された撮像素子前方に配置された光学ローパスフィルタ等の光学素子の表面に付着した塵埃等の異物（ゴミ）の影が画像に写り込む。本実施形態では、そのゴミの影が写り込んだ画像データをカメラ外部の画像処理装置に移し、その画像処理装置内で画像データ中のゴミの位置を検出し、ゴミ除去処理（ゴミの影の画像品質に対する影響を低減する処理）を行う。また、ゴミ除去処理を失敗した場合の再処理を行う。
【００２２】
（ゴミ除去処理）
まず、ゴミ除去処理の流れについて説明する。ゴミ除去処理は、デジタルカメラ本体ではなく、別途用意した画像処理装置上で行う。
【００２３】
図１は、画像処理装置のシステム構成の概略を示した図である。
【００２４】
ＣＰＵ１００１は、システム全体の動作をコントロールし、一次記憶部１００２に格納されたプログラムの実行などを行う。一次記憶部１００２は、主にメモリであり、二次記憶部１００３に記憶されたプログラムなどを読み込んで格納する。二次記憶部１００３は、例えばハードディスクなどがこれに該当する。一般に一次記憶部の容量は二次記憶部の容量より小さく、一次記憶部に格納しきれないプログラムやデータなどは二次記憶部に格納される。また、長時間記憶しなくてはならないデータなども二次記憶部に格納される。本実施形態では、プログラムを二次記憶部１００３に格納し、プログラム実行時に一次記憶部１００２に読み込んでＣＰＵ１００１が実行処理を行う。
【００２５】
入力デバイス１００４とは例えば、システムのコントロールに用いるマウスやキーボードの他、画像データの入力に必要なカードリーダー、スキャナ、フィルムスキャナなどがこれに該当する。出力デバイス１００５とは例えば、モニタやプリンタなどが考えられる。この装置の構成方法は他にも様々な形態が考えられるが、本発明の主眼ではないので説明を省略する。
【００２６】
画像処理装置には、複数のプログラムを並列実行可能なオペレーティングシステムが搭載され、操作者はＧＵＩを使ってこの装置上で動作するプログラムの操作が可能である。
【００２７】
本実施形態における画像処理装置は、画像編集機能として２つの処理を実行可能である。一つはコピースタンプ処理で、もう一つはリペア処理である。コピースタンプ処理とは、指定された画像上の一部の領域を別途指定された別の領域に合成する機能である。リペア処理とは、指定された領域内で予め定められた条件に合う孤立領域を検出し、この孤立領域を周囲の画素で補間する機能である。
図２は、画像処理装置における画像編集プログラムのＧＵＩ（Graphical User Interface）を示す図である。ウィンドウにはクローズボタン１１００とタイトルバー１１０１が備えられ、クローズボタン１１００を押すことでプログラムを終了する。ファイルを画像表示領域１１０２にドラッグアンドドロップすることで編集対象画像を指定し、編集対象画像が決定された場合、タイトルバー１１０１にファイル名を表示した後、画像表示領域１１０２に対象画像をＦiｔ表示する。
【００２８】
編集対象画像の表示状態は、Ｆｉｔ表示と画素等倍表示の２つがあり、表示モードボタン１１０８で切り換えることが出来る。本ＧＵＩでは、画像上をクリックして加工位置を指定するが、Ｆｉｔ表示時はクリックされた位置に対応する加工画像上での座標を表示倍率に応じて算出し、その座標に処理を適用するものとする。また、本ＧＵＩでは処理範囲を半径で指定するが、この半径は編集対象画像上での半径であり、表示倍率によってはＦｉｔ表示した画像上での半径とは異なる場合がある。
【００２９】
半径スライダ１１０６は、コピースタンプ処理とリペア処理の適用範囲を指定するスライダである。
【００３０】
リペア処理モードボタン１１０４を押すと、リペア処理モードになる。リペア処理モード時に画像中を左クリックすると、左クリックした座標を中心、半径スライダ１１０６で指定した画素数を半径とする領域に対し、後述するリペア処理を適用する。リペア処理を適用した後は、リペア処理モードを抜ける。また、リペア処理モード時に画像表示領域１１０２上で右クリックが押された場合、あるいはＧＵＩ上のいずれかのボタンが押された場合、リペアモードを抜ける。
【００３１】
コピースタンプ処理モードボタン１１０５を押すと、コピースタンプモードになる。コピースタンプモード時に画像中を左クリックした場合、左クリックされた座標をコピー元領域の中心座標に設定する。コピー元領域の中心座標が設定された状態で更に画像上を左クリックした場合、左クリックされた座標をコピー先領域の中心座標、この時点での半径スライダ１１０６で指定された半径をコピー半径としてコピースタンプ処理を実行する。そして、コピー元領域の中心座標を未設定の状態にしてコピースタンプモードを抜ける。また、コピースタンプモード時に画像表示領域１１０２上で右クリックが押された場合、あるいはＧＵＩ上のいずれかのボタンが押された場合、コピー元領域の中心座標を未設定の状態にしてコピースタンプモードを抜ける。
【００３２】
保存ボタン１１０７が押された場合、処理後の画像を保存する。
【００３３】
本実施形態の画像編集プログラムでは、図３に示すように元画像と処理後の画像の両方を保持する。ＧＵＩで指定された編集処理は、処理後の画像に対して適用し、適用した編集処理を編集履歴に登録する。編集履歴に登録した１回分の編集処理のことを、編集エントリと呼ぶ。編集エントリの例を図４に示す。本実施形態における編集エントリには、コピースタンプ処理かリペア処理かを区別するための処理ＩＤ、処理の適用領域を示す中心と半径、コピースタンプ処理の場合に必要なコピー元座標からコピー先座標への相対座標、後述する差分画像データへのポインタを保持する。
【００３４】
このような実装にすることで、編集履歴を完全に破棄して元画像を復元したり、直前の編集処理を取り消したりすることができる。
【００３５】
例えば直前の編集処理を取り消す処理は、一旦処理後の画像を元画像で上書きし、取り消し対象の編集エントリの直前まで編集処理を再実行することで実現可能である。しかし、エントリの数が非常に多い場合など編集処理の再実行に時間がかかってしまう場合がある。そこで、編集操作を実行する度に、編集処理の実行前後について画像データの差分を取り、これを編集エントリに保持する。差分画像を保持すれば、編集エントリに記載された編集処理を最初から再実行する代わりに、取り消し対象の編集エントリに対応する差分画像を反映するだけで良い。
【００３６】
次に、リペア処理の詳細について述べる。コピースタンプ処理はよく知られた技術であるため、処理の詳細については説明を省略する。
【００３７】
リペア処理は、指定された領域内の孤立領域を検出し、この孤立領域を補間する処理である。リペア処理は、ＧＵＩで指定された中心座標と半径で表現される領域に対し、後述する補間ルーチンを適用することで実現する。
【００３８】
（補間ルーチン）
ここで、リペア処理で実行する補間ルーチンについて説明する。
【００３９】
図５は、補間ルーチンの流れを示すフローチャートである。
【００４０】
まずステップＳ１２０１で、ゴミ領域（ゴミの影が写り込んだ領域、欠損領域とも呼ぶ）の判定を行う。ここで、リペア処理の対象となる領域の中心座標をＰ、半径をＲとする。ゴミ領域とは、次の条件全てを満たす領域とする。
（１）リペア処理対象領域に含まれる画素の平均輝度Ｙaveと最高輝度Ｙmaxを用いて次式で求められるスレッショルド値Ｔ２より暗い領域。
【００４１】
Ｔ２＝Ｙave×０.６＋Ｙmax×０.４
（２）上記の中心座標Ｐ、半径Ｒで表される円と接しない領域。
（３）（１）で選択された輝度の低い画素によって構成される孤立領域に対し、図１６中のステップＳ６３と同様の方法で算出した半径値がl１画素以上、l２画素未満である領域。なお、図１６のステップＳ６３については後述する。
【００４２】
本実施形態では、l１は３画素、l２は３０画素とする。このようにすることで、孤立した小領域だけをゴミ領域として扱うことが可能になる。
【００４３】
ステップＳ１２０２で、このような領域があればステップＳ１２０３へ進みゴミ領域補間を行い、存在しない場合は処理を終了する。
【００４４】
ステップＳ１２０３で実行するゴミ領域補間処理は、公知の欠損領域補間法で行う。公知の欠損領域補間法には例えば、特開２００１−２２３８９４号公報に開示されているパターン置換がある。特開２００１−２２３８９４号公報では赤外光を用いて欠損領域を特定しているが、本実施形態ではステップＳ１２０１で検出したゴミ領域を欠損領域として扱い、パターン置換によりゴミ領域を周囲の正常画素で補間する。パターン置換で埋められない画素については、パターン置換後の画像データに対し、補間対象画素に最も近い順に正常画素をｐ個、最も遠い順にｑ個選択し、その平均色を用いて補間する。
【００４５】
ここで、ステップＳ１２０２でゴミ領域が存在しないと判定された場合の処理手順を図６に示す。
【００４６】
ステップＳ５１０１において、孤立した小領域が存在しない、すなわちゴミが検出されなかった条件を記録する。
【００４７】
ここで、孤立した小領域が存在しない条件とは、以下のような条件である。
（１）ゴミが上記の中心座標Ｐ、半径Ｒで表される円に接している。
（２）半径Ｒ内に上記スレッショルド値Ｔ２より暗い領域が存在しない。
【００４８】
さらに、検出されたゴミの条件として、ゴミの領域の個数などがあり、これらの条件を記録する。
【００４９】
次に、ステップＳ５１０２において、一定時間(例えば２秒)以内にユーザから全く同位置の領域について再処理指定があった場合、たとえば同じ場所をユーザがクリックした場合には、次のようにする。即ち、ゴミ領域は検出されなかったが、どうしてもその位置にあるゴミを除去したいと判断し、ステップＳ５１０３に進む。
【００５０】
ユーザの再処理指定がなかった場合には、処理を終了する。
【００５１】
ステップＳ５１０３において、ゴミ検出半径の大きさを変更して処理を実行する。ゴミ検出半径の変更方法については後述する。
【００５２】
次にステップＳ５１０４において、ゴミの検出処理が成功すれば、処理を終了する。失敗した場合には、ステップＳ５１０５に進み、ゴミ検出半径の中心位置を変更して処理を実行する。
【００５３】
ゴミ検出半径の中心位置の変更方法については後述する。
【００５４】
次にステップＳ５１０６において、検出処理が成功すれば、処理を終了する。
【００５５】
失敗した場合には、ステップＳ５１０７に進む。
【００５６】
ステップＳ５１０７においては、ゴミ検出アルゴリズムを変更して、ゴミ検出領域内のいずれかの位置をゴミ位置と検出する。
【００５７】
ゴミ検出アルゴリズムの変更方法については後述する。
【００５８】
次に、図７を用いて、ゴミ検出半径の変更方法について説明する。
【００５９】
ステップＳ５２０１において、上記の（１）、（２）の検出条件に応じて、ゴミ検出半径を変化させる処理を変更する。
【００６０】
すなわち、ゴミが一つ存在し、ゴミ検出半径にゴミが接した場合にはステップＳ５２０２にすすみ、ゴミ検出半径を大きくする。
【００６１】
ゴミが複数個存在し、ゴミ検出半径にゴミが接した場合にはステップＳ５２０３にすすみ、ゴミ検出半径を小さくする。
【００６２】
ステップＳ５２０４において、リペア処理を実行し、ステップＳ５２０５において、リペア処理が成功した場合にはステップＳ５２０６に進み、処理を終了する。
【００６３】
リペア処理が不可となった場合にはステップＳ５２０７に進み、図６のステップＳ５１０５においてゴミ検出半径の位置を変更する。
【００６４】
図８を用いて、ゴミ検出半径の中心位置の変更方法について説明する。
【００６５】
ステップＳ５３０１において、上記の（１）、（２）の検出条件に応じて、ゴミ検出半径の中心位置を変化させる処理を変更する。
【００６６】
すなわち、ゴミが複数個存在し、ゴミ検出半径にゴミが接した場合には、ステップＳ５３０２に進み、ゴミが接していない方向、即ち一様性が高い方向にゴミ検出半径の中心位置を移動する。ゴミが一つ存在し、半径にゴミが接した場合には、ステップＳ５３０３に進み、ゴミが接している方向、即ち輝度変化が大きい方向に中心位置を移動する。
【００６７】
ステップＳ５３０４において、リペア処理を実行し、ステップＳ５３０５において、リペア処理が成功した場合にはステップＳ５３０６に進み、処理を終了する。
【００６８】
上記の手法では、ゴミ検出半径の位置もしくはゴミ検出半径の中心位置の少なくとも一方の値を変更していると言うことができる。
【００６９】
リペア処理が不可となった場合にはステップＳ５３０７に進み、図６のステップＳ５１０７においてゴミ検出アルゴリズムを変更する。
【００７０】
図９を用いて、ゴミ検出アルゴリズムの変更方法について説明する。
【００７１】
ステップＳ５４０１において、ユーザが任意に位置指定した中心位置に必ずゴミがあると判断する。そして、ステップＳ１２０１においては平均輝度からゴミの位置を算出していたのに対して、このステップでは、領域拡大手法を用いてゴミ領域を決定し、リペア処理を施す。ここで、領域拡大手法とは、指定された画素（シード画素という）に隣り合う画素が領域の内部に属するか否かを判定する手法である。具体的には、ユーザが指定した中心位置の画素をシード画素とし、このシード画素の情報、例えば輝度情報や色情報に対して予め定められた範囲内の情報を持つ隣り合う画素を領域内と定義していく。領域内と定義された画素については、さらにその画素に隣り合う画素を探索し、これを繰り返して領域を拡大していく。そして、隣り合う画素のすべてが予め定められた範囲外の情報をもつ画素となったところで、領域の内部に属する画素のすべてを確定する。このように確定された内部領域をゴミ領域とし、この領域に対してリペア処理を施す。
【００７２】
上記の方法により、ユーザの指示によって、一度検出に失敗したゴミもパラメータ、アルゴリズムを変更することにより、必ず処理を施してゴミを除去することができる。
【００７３】
このように、ゴミ検出半径を変更したり、ゴミ検出半径の中心位置を変更したり、アルゴリズムを変更したりする動作を行う場合には、図１０のようにユーザの指定したゴミ検出半径の位置や大きさが変化することを画面に表示する。そして、ユーザに自動処理の過程を知らせる。
【００７４】
また、本実施形態では、まずゴミ検出半径の大きさの変更を行い、失敗したらゴミ検出半径の中心位置を変更し、最後に処理アルゴリズムを変更して処理を行ったが、ゴミ検出半径の大きさの変更と位置の変更は順番を入れ替えても良い。
【００７５】
また、本実施形態では、一度しかゴミ検出半径の大きさを変えていないが、ゴミ検出半径の大きさ、中心位置を変更する場合に何度か処理を繰り返して、ゴミ検出半径の大きさ、中心位置を決めるようにしても良い。その場合は繰り返し回数やゴミ検出半径の最小値、最大値、移動量の最大量などを決めて、その範囲内で処理を繰り返す。
【００７６】
また、ランダムにゴミ検出半径の大きさや中心位置を変更してもよい。その場合は回数などを決めて、その範囲内で処理を繰り返す。
【００７７】
＜第２の実施形態＞
第１の実施形態では、ゴミが写り込んだ画像データをカメラ外部の画像処理装置に移してゴミ検出処理、ゴミ除去処理を行う場合について説明した。また、ゴミ除去処理を失敗した場合の再処理についても説明した。
【００７８】
本実施形態では、カメラ本体でゴミを検出して、ゴミ補正データを画像データに添付し、カメラ外部の画像処理装置で、画像データに添付されたゴミ補正データを用いて画像データからゴミ除去処理を行う場合について説明する。また、ゴミ除去処理を失敗した場合についての再処理についても説明する。
【００７９】
図１１は、本発明の第２の実施形態に係る撮像装置としてのレンズ交換式一眼レフデジタルカメラの回路構成を示すブロック図である。
【００８０】
図１１において、マイクロコンピュータ４０２は、撮像素子（本実施形態ではＣＣＤ）４１８が出力する画像データの処理や、ＬＣＤモニタ装置４１７の表示制御をはじめ、カメラ全体の動作を制御する。
【００８１】
スイッチ（ＳＷ１）４０５は、レリーズボタン１１２（図１２参照）の半押し状態でオンになり、スイッチ（ＳＷ１）４０５がオンすると本実施形態のデジタルカメラは撮影準備状態になる。スイッチ（ＳＷ２）４０６は、レリーズボタン１１２が最後まで押された状態（全押し状態）でオンし、スイッチ（ＳＷ２）４０６がオンすると本実施形態のデジタルカメラは撮影動作を開始する。
【００８２】
レンズ制御回路４０７は、撮影レンズ２００（図１３参照）との通信およびＡＦ（オートフォーカス）時の撮影レンズ２００の駆動制御や絞り羽根の駆動制御を行う。
【００８３】
また図１１において、外部表示制御回路４０８は、外部表示装置（ＯＬＣ）４０９や、ファインダ内の表示装置（不図示）の制御を行う。スイッチセンス回路４１０は、カメラに設けられた電子ダイヤル４１１を含む多数のスイッチ類の信号をマイクロコンピュータ４０２に伝える。
【００８４】
ストロボ発光調光制御回路４１２は、Ｘ接点４１２ａを介して接地されており、外部ストロボの制御を行う。測距回路４１３は、ＡＦのための被写体に対するデフォーカス量を検出する。測光回路４１４は、被写体の輝度を測定する。
【００８５】
シャッター制御回路４１５はシャッターの制御を行い、撮像素子４１８に対して適正な露光を行う。ＬＣＤモニタ装置４１７とバックライト照明装置４１６は、画像表示装置を構成している。記録装置４１９は例えばカメラ本体に着脱可能なハードディスクドライブや半導体メモリカード等である。
【００８６】
また、マイクロコンピュータ４０２には、Ａ／Ｄコンバータ４２３、画像バッファメモリ４２４、ＤＳＰなどからなる画像処理回路４２５、撮像素子内の所定画素そのものに欠陥があることを記憶している画素欠陥位置メモリ４２６が接続されている。また、ゴミによる画像不良を起こしている撮像素子内の画素位置を記憶しているゴミ位置メモリ４２７も接続されている。なお、画素欠陥位置メモリ４２６およびゴミ位置メモリ４２７は不揮発性メモリを用いることが好ましい。また、画素欠陥位置メモリ４２６とゴミ位置メモリ４２７は、同一メモリ空間の異なるアドレスを用いて記憶しても良い。
【００８７】
また、４２８は、マイクロコンピュータ４０２が実行するプログラム等を記憶する不揮発性のメモリである。
【００８８】
図１２は、本実施形態に係るデジタルカメラの外観を示す斜視図、図１３は図１２の垂直断面図である。
【００８９】
図１２において、カメラ本体１００の上部には、ファインダ観察用の接眼窓１１１、ＡＥ（自動露出）ロックボタン１１４、ＡＦの測距点選択ボタン１１３、撮影操作をするためのレリーズボタン１１２が設けられている。また、電子ダイヤル４１１、撮影モード選択ダイヤル１１７、および外部表示装置４０９も設けられている。電子ダイヤル４１１は、他の操作ボタンと併用してカメラに数値を入力したり、撮影モードを切り換えたりするための多機能信号入力装置である。また、外部表示装置４０９は、液晶表示装置から構成され、シャッタースピード、絞り、撮影モードなどの撮影条件や、他の情報を表示する。
【００９０】
また、カメラ本体１００の背面には、撮影された画像や各種設定画面などを表示するＬＣＤモニタ装置４１７、ＬＣＤモニタ装置４１７をオン／オフするためのモニタスイッチ１２１、十字配置スイッチ１１６、およびメニューボタン１２４が設けられている。
【００９１】
十字配置スイッチ１１６は、上下左右に配された４つのボタンと、中央に配されたＳＥＴボタンを有し、ユーザがＬＣＤモニタ装置４１７に表示されるメニュー項目などの選択や実行をカメラに指示するために用いられる。
【００９２】
メニューボタン１２４は、ＬＣＤモニタ装置４１７にカメラの各種設定を行うためのメニュー画面を表示させるためのボタンである。例えば、撮影モードを選択、設定する時は、このメニューボタン１２４を押した後、十字配置スイッチ１１６の上下左右のボタンを操作して希望のモードを選択し、希望のモードが選択された状態でＳＥＴボタンを押すことにより設定が完了する。このメニューボタン１２４と十字配置スイッチ１１６は、後述するゴミ検出処理を行うゴミ検出モードの設定や、ゴミ検出モードの際の表示モード設定および識別マークの設定にも使用される。
【００９３】
本実施形態のＬＣＤモニタ装置４１７は透過型であるため、ＬＣＤモニタ装置の駆動だけでは画像を視認することはできず、必ずその裏面には図１３に示すようにバックライト照明装置４１６が必要である。このようにＬＣＤモニタ装置４１７とバックライト照明装置４１６は画像表示装置を構成している。
【００９４】
図１３に示すように、撮像光学系の撮影レンズ２００はカメラ本体１００に対してレンズマウント２０２を介して着脱可能である。図１３において２０１は撮影光軸、２０３はクイックリターンミラーである。
【００９５】
クイックリターンミラー２０３は撮影光路中に配置され、撮影レンズ２００からの被写体光をファインダ光学系に導く位置（図１３に示す位置、斜設位置と呼ぶ）と撮影光路外に退避する位置（退避位置と呼ぶ）との間で移動可能である。
【００９６】
図１３において、ピント板２０４上にはクイックリターンミラー２０３からファインダ光学系に導かれる被写体光が結像される。２０５はファインダの視認性を向上させるためのコンデンサレンズ、２０６はペンタゴナルダハプリズムであり、ピント板２０４およびコンデンサレンズ２０５を通った被写体光をファインダ観察用の接眼レンズ２０８および測光センサ２０７に導く。
【００９７】
２０９，２１０はそれぞれシャッターを構成する後幕と先幕で、これら後幕２０９、先幕２１０の開放によって後方に配置されている固体撮像素子である撮像素子４１８が必要時間だけ露光される。撮像素子によって画素毎の電気信号に変換された撮影画像は、Ａ／Ｄコンバータ４２３や画像処理回路４２５などによって処理され、画像データとして記録装置４１９に記録される。
【００９８】
撮像素子４１８はプリント基板２１１に保持されている。このプリント基板２１１の後方には、もう一枚のプリント基板である表示基板２１５が配置されている。この表示基板２１５の反対側の面にＬＣＤモニタ装置４１７およびバックライト照明装置４１６が配置されている。
【００９９】
４１９は画像データを記録する記録装置、２１７は電池（携帯用電源）である。この記録装置４１９および電池２１７は、カメラ本体に対して着脱可能である。
【０１００】
（ゴミ検出処理）
図１４は、本実施形態に係るデジタルカメラにおけるゴミ検出処理（ゴミによって画像不良が生じている画素位置の検出処理）を説明するフローチャートである。当該処理は、マイクロコンピュータ４０２がメモリ４２８に記憶されたゴミ検出処理プログラムを実行することにより実施される。
【０１０１】
ゴミ検出処理は、ゴミ検出用画像を撮像することにより行われる。ゴミ検出処理を行う場合、面光源装置の出射面や白い壁などの均一な色を持つ面にレンズ２００の撮影光軸２０１を向けてカメラを設置し、ゴミ検出の準備を行なう。または、レンズマウント２０２にゴミ検出用のライトユニット（レンズの代わりに装着する小型の点光源装置）を装着し、ゴミ検出の準備を行う。ライトユニットの光源は例えば白色ＬＥＤが考えられ、発光面のサイズを予め定めた絞り値（例えば、本実施形態ではＦ６４）相当になるように調整するのが望ましい。
【０１０２】
本実施形態では、通常の撮影レンズを用いた場合について説明するが、上記のライトユニットをレンズマウント２０２に取り付けてゴミ検出を行っても良い。このように、本実施形態においてゴミ検出用画像は、均一な色を有する画像である。
【０１０３】
準備が終了した後、例えば十字配置スイッチ１１６からゴミ検出処理の開始が指示されると、マイクロコンピュータ４０２は、まず絞りの設定を行う。撮像素子近傍のゴミはレンズの絞り値によって結像状態が変わり、レンズの瞳位置によって位置が変化する。したがって、ゴミ補正データにはゴミの位置や大きさに加え、検出時の絞り値とレンズの瞳位置を保持する必要がある。
【０１０４】
ただし、ゴミ補正データを作成する段階で、異なるレンズを用いたとしても常に同じ絞り値を使うことを予め決めておけば、必ずしもゴミ補正データ内に絞り値を保持する必要はない。また、瞳位置に関してもライトユニットを用いたり、特定のレンズのみの使用を許可することで、同様に必ずしもゴミ補正データ内に瞳位置を保持する必要はなくなる。つまり、ゴミ補正データを作成する段階において、使用するレンズを複数許したり、絞り込む絞り値を適宜変更する場合には、検出時の絞り値とレンズの瞳位置を、ゴミ補正データ内に保持する必要があると言える。なお、ここで瞳位置とは、射出瞳の撮像面（焦点面）からの距離をいう。
【０１０５】
ここでは、絞り値として例えばＦ１６を指定する（ステップＳ２１）。
【０１０６】
次にマイクロコンピュータ４０２はレンズ制御回路４０７に対し、撮影レンズ２００の絞り羽根制御を行わせ、ステップＳ２１で指定された絞り値に絞りを設定する（ステップＳ２２）。さらに、フォーカス位置を無限遠に設定する（ステップＳ２３）。
【０１０７】
撮影レンズの絞り値とフォーカス位置が設定されると、ゴミ検出モードでの撮影を実行する（ステップＳ２４）。ステップＳ２４で行う撮影処理ルーチンの詳細に関しては図１９を用いて後に説明する。撮影された画像データは、バッファメモリ４２４に格納される。
【０１０８】
撮影が終了すると、撮影時の絞り値とレンズ瞳位置を取得する（ステップＳ２５）。画像処理回路４２５に画像バッファメモリ４２４に記憶されている撮影画像の各画素に対応するデータを呼び出す（ステップＳ２６）。画像処理回路４２５は、図１６に示す処理を行い、ゴミが存在する画素の位置と大きさを取得する（ステップＳ２７）。ステップＳ２７で取得したゴミが存在する画素の位置と大きさ、およびステップＳ２５で取得した絞り値とレンズ瞳位置情報を、ゴミ位置メモリ４２７に登録する（ステップＳ２８）。ここで、前述したライトユニットを用いた場合には、レンズ情報を取得できない。そこで、レンズ情報が取得できない場合は、ライトユニットを使ったと判断し、予め定められたレンズ瞳位置情報と、ライトユニットの光源径から算出される換算絞り値を登録する。
【０１０９】
ここで、ステップＳ２８において、予め画素欠陥位置メモリ４２６に記録されている製造時からの不良画素（画素欠陥）の位置と、読み出した画素データの位置を比べて画素欠陥であるかどうかを確認する。そして、画素欠陥によるものでは無いと判断された領域のみ、ゴミ位置メモリ４２７に位置を登録しても良い。
【０１１０】
ゴミ位置メモリ４２７に格納されるゴミ補正データのデータ形式例を図１５に示す。図１５に示した通り、ゴミ補正データには、検出用画像撮影時の、レンズ情報とゴミの位置、大きさの情報が格納される。このゴミ補正データは、通常撮影時に画像データの撮影時情報と共に画像に付加し、後に説明するゴミ除去処理で利用する。
【０１１１】
具体的には、検出画像撮影時のレンズ情報として、検出画像撮影時における実際の絞り値（Ｆ値）と、そのときのレンズ瞳位置を格納する。続く記憶領域に検出したゴミ領域の数（整数値）を格納し、これに続き、個々の具体的なゴミ領域のパラメータを、ゴミ領域の数だけ繰返して格納する。ゴミ領域のパラメータは、ゴミの半径（例えば２バイト）、有効画像領域における中心のｘ座標（例えば２バイト）、おなじく中心のｙ座標（例えば２バイト）の３つの数値のセットである。
【０１１２】
ゴミ位置メモリ４２７の大きさ等によりゴミ補正データサイズに制限がある場合、ステップＳ２７で得たゴミ領域の先頭から優先してデータを格納する。これは、ステップＳ２７のゴミ領域取得ルーチン内では、後述するようにゴミ領域を、目立つゴミの順にソートするからである。
【０１１３】
（ゴミ領域取得ルーチン）
次に、図１６から図１８を用いて、ステップＳ２７で行うゴミ領域取得ルーチンの詳細について述べる。
【０１１４】
図１７に示すように、呼び出した画像データをメモリ上に展開し、予め定められたブロック単位で処理を行う。これは、レンズやセンサ特性に起因する周辺減光に対応するためである。周辺減光とは、レンズの中央部に比べ周辺部の輝度が落ちてしまう現象であり、レンズの絞りを小さくすることである程度軽減されることが知られている。しかし、絞りを絞った状態でも、撮影画像に対して予め定められたスレッショルド値でゴミ位置の判定を行うと、レンズによっては周辺部のゴミが正確に検出できなくなるという問題がある。そこで、画像をブロック分割して周辺減光の影響を軽減する。
【０１１５】
単純にブロック分割すると、ブロックとブロックの間でスレッショルド値が異なる場合、ブロック間をまたぐゴミの検出結果がずれてしまうという問題がある。そこで、ブロック間をオーバーラップさせ、オーバーラップ領域を構成するブロックのいずれかでゴミと判定された画素をゴミ領域として扱う。
【０１１６】
ブロック内のゴミ領域判定は、図１６に示す処理の流れで行う。まず、ブロック内の最大輝度Ｌmax、平均輝度Ｌaveを算出し、次式を用いてブロック内のスレッショルド値Ｔ１を算出する。
【０１１７】
Ｔ１＝Ｌave×０.６＋Ｌmax×０.４
次に、スレッショルド値を超えない画素をゴミ画素とし（ステップＳ６１）、ゴミ画素によって構成される孤立領域を各々一つのゴミ領域ｄｉ（ｉ＝０，１，…，ｎ）とする（ステップＳ６２）。図１８に示すように、ゴミ領域毎に、ゴミ領域を構成する画素の水平方向の座標の最大値Ｘmaxおよび最小値Ｘmin、垂直方向の座標の最大値Ｙmaxおよび最小値Ｙminを求め、ゴミ領域ｄｉのサイズを表す半径ｒｉを次式によって算出する（ステップＳ６３）。
【０１１８】
ｒｉ＝√[｛（Ｘmax−Ｘmin）／２｝2＋｛（Ｙmax−Ｙmin）／２｝2]
Ｘmax、Ｘmin、Ｙmax、Ｙminとｒｉの関係を、図１８に示す。
【０１１９】
その後ステップＳ６４で、ゴミ領域毎の平均輝度値を算出する。
【０１２０】
ゴミ位置メモリ４２７のサイズによる制限などにより、ゴミ補正データのデータサイズが制限されている場合がある。このような場合に対応するために、ゴミ位置情報を、大きさやゴミ領域の平均輝度値によってソートする（ステップＳ６５）。本実施形態では、ｒｉの大きい順にソートする。ｒｉが等しい場合、平均輝度値の低い順にソートする。このようにすることで、目立つゴミを優先してゴミ補正データに登録することが出来る。なお、ソート済みのゴミ領域をＤｉ、ゴミ領域Ｄｉの半径をＲｉとする。
【０１２１】
なお、予め定められたサイズより大きいゴミ領域がある場合、ソートの対象から外し、ソート済みゴミ領域リストの末尾に配置しても良い。大きいゴミ領域については、後に補間処理をするとかえって画質を低下させる場合があり、編集対象の優先順位としては最下位として扱うことが望ましいからである。
【０１２２】
（撮影処理ルーチン）
次に、図１９に示すフローチャートを用いて、図１４のステップＳ２４で行われる撮影処理ルーチンの詳細について説明する。当該処理はマイクロコンピュータ４０２がメモリ４２８に記憶された撮影処理プログラムを実行することにより実施される。
【０１２３】
この撮影処理ルーチンが実行されると、ステップＳ２０１でマイクロコンピュータ４０２は、図１３に示すクイックリターンミラー２０３を作動させ、いわゆるミラーアップを行い、撮影光路外にクイックリターンミラー２０３を退避させる。
【０１２４】
次に、ステップＳ２０２で撮像素子での電荷蓄積を開始し、次のステップＳ２０３では図１３に示したシャッターの先幕２１０、後幕２０９をそれぞれ走行させて露光を行う。そして、ステップＳ２０４で撮像素子の電荷蓄積を終了し、次のステップＳ２０５で撮像素子から画像信号を読み出してＡ／Ｄコンバータ４２３および画像処理回路４２５で処理した画像データをバッファメモリ４２４に一次記憶する。
【０１２５】
次のステップＳ２０６で撮像素子から全ての画像信号の読み出しが終了すると、ステップＳ２０７でクイックリターンミラー２０３をミラーダウンし、クイックリターンミラーを斜設位置に戻して一連の撮影動作を終了する。
【０１２６】
ステップＳ２０８において、通常撮影かゴミ検出用画像撮影かを判断し、通常撮影時にはステップＳ２０９へ進んで撮影時のカメラ設定値等と共に図１５に示したゴミ補正データを画像データに関連付けて記録装置４１９に記録する。
【０１２７】
具体的には、例えば、撮影時のカメラ設定値等が記録される画像ファイルのヘッダ領域であるＥｘｉｆ領域にゴミ補正データを追記することで、関連付けを実現することができる。または、ゴミ補正データをファイルとして独立して記録し、画像データにはそのゴミ補正データファイルへのリンク情報のみを記録することで関連付けを実現することも可能である。ただし、画像ファイルとゴミ補正データファイルを別々に記録すると、画像ファイルの移動時に、リンク関係が消失する場合があるので、ゴミ補正データは画像データと一体的に保持することが望ましい。
【０１２８】
（ゴミ除去処理）
次に、ゴミ除去処理の流れについて説明する。ゴミ除去処理は、デジタルカメラ本体ではなく、別途用意した画像処理装置上で行う。
【０１２９】
図１は、画像処理装置のシステム構成の概略を示した図である。
【０１３０】
図１に示す画像処理装置の構成については、既に第１の実施形態において説明済みであるので、ここではその説明を省略する。
【０１３１】
本実施形態における画像処理装置は、画像編集機能として２つの処理を実行可能である。一つはコピースタンプ処理で、もう一つはリペア処理である。コピースタンプ処理とは、指定された画像上の一部の領域を別途指定された別の領域に合成する機能である。リペア処理とは、指定された領域内で予め定められた条件に合う孤立領域を検出し、この孤立領域を周囲の画素で補間する機能である。
【０１３２】
また、デジタルカメラ本体で画像データに添付したゴミ補正データを用い、指定された座標に対してリペア処理（ゴミ除去処理）を自動実行する自動リペア機能を持つ。
【０１３３】
これらの処理の詳細については後述する。
【０１３４】
図２は、画像処理装置における画像編集プログラムのＧＵＩ（Graphical User Interface）を示す図である。ウィンドウにはクローズボタン１１００とタイトルバー１１０１が備えられ、クローズボタンを押すことでプログラムを終了する。ファイルを画像表示領域１１０２にドラッグアンドドロップすることで編集対象画像を指定し、編集対象画像が決定された場合、タイトルバー１１０１にファイル名を表示した後、画像表示領域１１０２に対象画像をＦiｔ表示する。
【０１３５】
編集対象画像の表示状態は、Ｆｉｔ表示と画素等倍表示の２つがあり、表示モードボタン１１０８で切り換えることが出来る。本ＧＵＩでは、画像上をクリックして加工位置を指定するが、Ｆｉｔ表示時はクリックされた位置に対応する加工画像上での座標を表示倍率に応じて算出し、その座標に処理を適用するものとする。また、本ＧＵＩでは処理範囲を半径で指定するが、この半径は編集対象画像上での半径であり、表示倍率によってはＦｉｔ表示した画像上での半径とは異なる場合がある。
【０１３６】
自動リペア処理実行ボタン１１０３を押すと、後述する自動ゴミ除去処理を実行し、処理後の画像を画像表示領域１１０２に表示する。自動リペア処理実行ボタン１１０３は、画像が未編集の状態でのみ有効になり、コピースタンプ処理やリペア処理、自動リペア処理の実行により画像が編集された状態の場合は無効になる。
【０１３７】
半径スライダ１１０６は、コピースタンプ処理とリペア処理の適用範囲を指定するスライダである。
【０１３８】
リペア処理モードボタン１１０４を押すと、リペア処理モードになる。リペア処理モード時に画像中を左クリックすると、左クリックした座標を中心、半径スライダ１１０６で指定した画素数を半径とする領域に対し、後述するリペア処理を適用する。リペア処理を適用した後は、リペア処理モードを抜ける。また、リペアモード時に画像表示領域１１０２上で右クリックが押された場合、あるいはＧＵＩ上のいずれかのボタンが押された場合、リペアモードを抜ける。
【０１３９】
コピースタンプ処理モードボタン１１０５を押すと、コピースタンプモードになる。コピースタンプモード時に画像中を左クリックした場合、左クリックされた座標をコピー元領域の中心座標に設定する。コピー元領域の中心座標が設定された状態で更に画像上を左クリックした場合、左クリックされた座標をコピー先領域の中心座標、この時点での半径スライダ１１０６で指定された半径をコピー半径としてコピースタンプ処理を実行する。そして、コピー元領域の中心座標を未設定の状態にしてコピースタンプモードを抜ける。また、コピースタンプモード時に画像表示領域１１０２上で右クリックが押された場合、あるいはＧＵＩ上のいずれかのボタンが押された場合、コピー元領域の中心座標を未設定の状態にしてコピースタンプモードを抜ける。
【０１４０】
保存ボタン１１０７が押された場合、処理後の画像を保存する。
【０１４１】
本画像編集プログラムでは、図３に示すように元画像と処理後の画像の両方を保持する。ＧＵＩで指定された編集処理は、処理後の画像に対して適用し、適用した編集処理を編集履歴に登録する。編集履歴に登録した１回分の編集処理のことを、編集エントリと呼ぶ。編集エントリの例を図４に示す。本実施形態における編集エントリには、コピースタンプ処理かリペア処理かを区別するための処理ＩＤ、処理の適用領域を示す中心と半径、コピースタンプ処理の場合に必要なコピー元座標からコピー先座標への相対座標、後述する差分画像データを保持する。自動リペア処理を実行した場合、ゴミ補正データに従ってリペア処理を実行し、リペア処理を適用する度に編集エントリを編集履歴に追加する。
【０１４２】
このような実装にすることで、編集履歴を完全に破棄して元画像を復元したり、直前の編集処理を取り消したりすることができる。
【０１４３】
例えば直前の編集処理を取り消す処理は、一旦処理後の画像を元画像で上書きし、取り消し対象の編集エントリの直前まで編集処理を再実行することで実現可能である。しかし、エントリの数が非常に多い場合など編集処理の再実行に時間がかかってしまう場合がある。そこで、編集操作を実行する度に、編集処理の実行前後について画像データの差分を取り、これを編集エントリに保持する。差分画像を保持すれば、編集エントリに記載された編集処理を最初から再実行する代わりに、取り消し対象の編集エントリに対応する差分画像を反映するだけで良い。
【０１４４】
次に、リペア処理、自動リペア処理の各処理の詳細について述べる。コピースタンプ処理はよく知られた技術であるため、処理の詳細については説明を省略する。
【０１４５】
リペア処理は、指定された領域内の孤立領域を検出し、この孤立領域を補間する処理である。リペア処理は、ＧＵＩで指定された中心座標と半径で表現される領域に対し、後述する補間ルーチンを適用することで実現する。
【０１４６】
自動リペア処理は、通常撮影画像データからゴミ補正データを抽出し、ゴミ補正データに応じてリペア処理を自動実行する。自動リペア処理の基本的な処理の流れを、図２０に示す。
【０１４７】
まず、デジタルカメラ内又はデジタルカメラから取り外された記録装置４１９からゴミ補正データが添付された通常撮影画像データを画像処理装置に取り込んで、一次記憶部１００２又は二次記憶部１００３に記憶する（ステップＳ９０）。
【０１４８】
次に、通常撮影された画像データ（ゴミ除去処理を行う対象となる画像）から、ステップＳ２０９で撮影画像に付与されたゴミ補正データを抽出する（ステップＳ９１）。
【０１４９】
次に、ステップＳ９１で抽出したゴミ補正データから座標列Ｄｉ（ｉ＝１，２，…ｎ）、半径列Ｒｉ（ｉ＝１，２，…，ｎ）、絞り値ｆ１とレンズ瞳位置Ｌ１を得る（ステップＳ９２）。ここでＲｉは、図１６のステップＳ６５で算出した座標Ｄｉのゴミの大きさである。ステップＳ９３で、通常撮影された画像の撮影時の絞り値ｆ２とレンズ瞳位置Ｌ２を取得し、ステップＳ９４でＤｉを次式で変換する。ここで、ｄは画像中心から座標Ｄｉまでの距離、Ｈは撮像素子４１８の表面とゴミとの距離であるとする。変換後の座標Ｄｉ’と変換後の半径Ｒｉ’は例えば次式で定義する。
【０１５０】
Ｄｉ’（ｘ，ｙ）＝（Ｌ２×（Ｌ１−Ｈ）×ｄ／（（Ｌ２−Ｈ）×Ｌ１））×Ｄｉ（ｘ，ｙ）
Ｒｉ’＝（Ｒｉ×ｆ１／ｆ２＋３）× ２              （１）
ここでの単位はピクセルであり、Ｒｉ’についての「＋３」はマージン量である。２倍しているのは、平均輝度を用いてゴミ領域を検出するため、ゴミ領域外の領域が必要であるからである。
【０１５１】
ステップＳ９５で、補間処理カウンタｉを０に初期化し、ステップＳ９６でｉをカウントアップする。
【０１５２】
ステップＳ９７でｉ番目の座標Ｄｉ’、半径Ｒｉ’によって表される領域に対して補間ルーチンを実行し、領域内のゴミを除去する。ステップＳ９８で全ての座標についてゴミ除去処理を適用したかどうかを判定し、全ての座標について処理が終わっていれば処理を終了し、そうでなければステップＳ９６に戻る。
【０１５３】
ここで、撮影時のf値が小さい（開放に近い）ほど、ゴミ像のぼけ方は大きく目立ちにくくなることが知られている。そこで、自動リペア処理実行前に撮影時のｆ値を参照し、この値が閾値未満の場合は全てのリペア処理を処理しないようにすることが考えられる。このようにすれば、解析処理などを省略することが可能になり、編集対象画像が多数ある場合でも、効率よく処理することが出来る。例えば本実施形態では、ゴミが目立ちにくくなるｆ８未満の場合は処理をスキップする。
【０１５４】
このように修正した自動リペア処理の流れを図２１に示す。
【０１５５】
全ての処理の前に撮影時パラメータを取得し、閾値との比較を行う事以外は、図２０と同様の処理である。
【０１５６】
（補間ルーチン）
ここで、リペア処理、および自動リペア処理で実行する補間ルーチンについて説明する。
【０１５７】
図５は、補間ルーチンの流れを示すフローチャートである。まずステップＳ１２０１で、ゴミ領域（欠損領域）の判定を行う。ここで、リペア処理の対象となる領域の中心座標をＰ、半径をＲとする。ゴミ領域とは、次の条件全てを満たす領域とする。
（１）リペア処理対象領域に含まれる画素の平均輝度Ｙaveと最高輝度Ｙmaxを用いて次式で求められるスレッショルド値Ｔ２より暗い領域。
【０１５８】
Ｔ２＝Ｙave×０.６＋Ｙmax×０.４
（２）上記の中心座標Ｐ、半径Ｒで表される円と接しない領域。
（３）（１）で選択された輝度の低い画素によって構成される孤立領域に対し、図１６中のステップＳ６３と同様の方法で算出した半径値がl１画素以上、l２画素未満である領域。
【０１５９】
自動リペア処理時には、上記の条件に加え、さらに次の条件を満たす領域をゴミ領域とする。
（４）円の中心座標Ｐを含む領域。
【０１６０】
本実施形態では、l１は３画素、l２は３０画素とする。このようにすることで、孤立した小領域だけをゴミ領域として扱うことが可能になる。
【０１６１】
ステップＳ１２０２で、このような領域があればステップＳ１２０３へ進みゴミ領域補間を行い、存在しない場合は処理を終了する。ステップＳ１２０３で実行するゴミ領域補間処理は、公知の欠損領域補間法で行う。公知の欠損領域補間法には例えば、特開２００１−２２３８９４号公報に開示されているパターン置換がある。特開２００１−２２３８９４号公報では赤外光を用いて欠損領域を特定しているが、本実施形態ではステップＳ１２０１で検出したゴミ領域を欠損領域として扱い、パターン置換によりゴミ領域を周囲の正常画素で補間する。パターン置換で埋められない画素については、パターン補間後の画像データに対し、補間対象画素に最も近い順に正常画素をｐ個、最も遠い順にｑ個選択し、その平均色を用いて補間する。
【０１６２】
ここで、ステップＳ１２０２でゴミ領域が存在しないと判定された場合の処理について、図２２のフローチャートを用いて説明する。
【０１６３】
ステップＳ５５０１において、自動リペア処理において、孤立した小領域が存在しない場所と、ゴミが検出されなかった条件を記録する。
【０１６４】
ここで、孤立した小領域が存在しない条件とは、次のような条件である。
（１）ゴミがゴミ検出半径に接している。
（２）ゴミ検出半径内に上記スレッショルド値Ｔ２より暗い領域が存在しない。
【０１６５】
さらに、検出されたゴミの条件として、ゴミの領域の個数などがあり、これらの条件を記録する。
【０１６６】
次に、ステップＳ５５０２において、ゴミ領域が存在しないと判定された位置が１箇所以上存在し、さらに自動リペア処理実施後にユーザから自動リペア再処理指定があった場合は、次のようにする。即ち、ゴミ領域は検出されなかったが、どうしてもその位置にあるゴミを除去したいと判断し、ステップＳ５５０３に進む。
【０１６７】
具体的には、例えば図２の自動リペアボタン（第１の指示手段）１１０３を押して、自動リペア処理を実行した後に、ゴミ領域が存在しないと判定された位置が１箇所以上存在した場合には、次のようにする。即ち、自動リペアボタン１１０３に表示されている文字列を「自動再処理」などと変更表示して押下可能とし（第２の指示手段）、ユーザが自動リペアボタン１１０３を再度押した場合には、自動リペアの再処理を行う。また、文字列を変更して再処理のボタンであることを示す他にも、自動リペアボタン１１０３とは別に再処理指示用のボタンを用意しておいても良い。また、再処理を行う前に再処理を行うゴミの場所をユーザに知らせるために、図２３に示すように、ボタン上にマウスカーソルを置いただけで、処理しなかったゴミ領域全てを画像表示領域１１０２上に表示しても良い。
【０１６８】
ユーザの再処理指定がなかった場合には、処理を終了する。
【０１６９】
ステップＳ５５０３においては、まず最も左上にある検出されなかったゴミ領域の位置の処理から始める。まずゴミ検出半径の大きさを変更して処理を実行する。ゴミ検出半径の変更方法については、第１の実施形態の図７に示す処理と同等であるので、説明を省略する。
【０１７０】
次にステップＳ５５０４において、検出処理が成功すれば、ステップＳ５５０８に進む。失敗した場合には、ステップＳ５５０５に進み、ゴミ検出半径の中心位置を変更して処理を実行する。
【０１７１】
ゴミ検出半径の中心位置の変更方法については、第１の実施形態の図８に示す処理と同等であるので、説明を省略する。
【０１７２】
次にステップＳ５５０６において、検出処理が成功すれば、ステップＳ５５０８に進む。失敗した場合には、ステップＳ５５０７に進む。
【０１７３】
ステップＳ５５０７においては、ゴミ検出アルゴリズムを変更して、ゴミ検出領域内のいずれかの位置をゴミ位置と検出し、ステップＳ５５０８に進む。
【０１７４】
ゴミ検出アルゴリズムの変更方法については、第１の実施形態の図９に示す処理と同等であるので、説明を省略する。
【０１７５】
ステップＳ５５０８においては、検出できなかった全ての領域を処理したがどうかを判断し、処理していなかった場合には、処理していない領域を処理すべくステップＳ５５０３に戻る。すべて処理を終了していた場合には処理を終了する。
【０１７６】
上記の方法により、自動リペア処理において一度検出に失敗したゴミもパラメータ、アルゴリズムを変更することにより、必ず処理を施してゴミを除去することができる。
【０１７７】
また、上記の自動リペア処理では、図２１のステップＳ１３２に示すように、単純に撮影時ｆ値によって処理を適用するかしないかを決定する。しかし実際には、ゴミの大きさが大きいほど目立ちやすく、ｆ値とゴミの大きさの組み合わせによって処理を適用するかどうかを判定しても良い。あるいは、検出時にゴミ領域とその周辺の領域との輝度差を計算してゴミ補正データに格納し、これを補間ルーチンの実行判定処理に用いても良い。例えば、薄いゴミは絞りが開放に近い場合は目立たないことが考えられるので処理をスキップするなどの方法が考えられる。
【０１７８】
また、本実施形態では、まずゴミ検出半径の大きさの変更を行い、失敗したらゴミ検出半径の中心位置を変更し、最後に処理アルゴリズムを変更して処理を行った。しかし、ゴミ検出半径の大きさの変更と位置の変更は順番を入れ替えても良い。
【０１７９】
また、本実施形態では、一度しかゴミ検出半径の大きさを変えていないが、ゴミ検出半径の大きさ、中心位置を変更する場合も何度か処理を繰り返して、ゴミ検出半径の大きさ、中心位置を決めても良い。その場合は繰り返しの回数やゴミ検出半径の最小値、最大値、移動量の最大量などを決めて、その範囲内で処理を繰り返す。
【０１８０】
また、ランダムにゴミ検出半径の大きさや中心位置を変更してもよい。その場合は回数などを決めて、その範囲内で処理を繰り返す。
【０１８１】
（他の実施形態）
また、各実施形態の目的は、次のような方法によっても達成される。すなわち、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体（または記録媒体）を、システムあるいは装置に供給する。そして、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読み出し実行する。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、本発明には次のような場合も含まれる。すなわち、プログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム（ＯＳ）などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される。
【０１８２】
さらに、次のような場合も本発明に含まれる。すなわち、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれる。その後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される。
【０１８３】
本発明を上記記憶媒体に適用する場合、その記憶媒体には、先に説明した手順に対応するプログラムコードが格納されることになる。
【図面の簡単な説明】
【０１８４】
【図１】画像処理装置のシステム構成の概略を示した図である。
【図２】画像処理装置におけるＧＵＩの例を示す図である。
【図３】画像編集プログラムの内部構造を示す図である。
【図４】画像編集プログラムの編集履歴のデータ構造を示す図である。
【図５】補間ルーチンの詳細を説明するフローチャートである。
【図６】第１の実施形態におけるゴミが検出されなかった場合の再処理の流れを示すフローチャートである。
【図７】第１の実施形態におけるゴミ検出半径の大きさを変更する処理の流れを示すフローチャートである。
【図８】第１の実施形態におけるゴミ検出半径の中心位置を変更する処理の流れを示すフローチャートである。
【図９】第１の実施形態におけるゴミ検出アルゴリズムを変更する処理の流れを示すフローチャートである。
【図１０】第１の実施形態におけるリペア処理後の再処理の過程を示すユーザインターフェースの例を示す図である。
【図１１】本発明の第２の実施形態に係る撮像装置としてのレンズ交換式一眼レフデジタルカメラの回路構成を示すブロック図である。
【図１２】第２の実施形態に係るデジタルカメラの外観斜視図である。
【図１３】第２の実施形態に係るデジタルカメラの内部構造を示す垂直断面図である。
【図１４】第２の実施形態に係るデジタルカメラにおけるゴミ検出処理を説明するフローチャートである。
【図１５】ゴミ補正データのデータ形式例を示す図である。
【図１６】図１４のステップＳ２７で行われるゴミ領域取得ルーチンの詳細を説明するフローチャートである。
【図１７】図１６のステップＳ６２で行われるゴミ領域判定処理の処理単位を示す図である。
【図１８】図１６のステップＳ６３で行われるゴミ領域サイズ算出の概要を示す図である。
【図１９】図１４のステップＳ２４で行われる撮影処理ルーチンの詳細を説明するフローチャートである。
【図２０】自動リペア処理の基本的な流れを説明するフローチャートである。
【図２１】図２０の自動リペア処理の変形例の流れを示すフローチャートである。
【図２２】自動リペア処理でゴミが検出されなかった部分の再処理の流れを示すフローチャートである。
【図２３】自動リペア処理後の再処理の過程を示すユーザインターフェースの例を示す図である。
【図１】
2008258982.tif 000003
【図２】
2008258982.tif 000004
【図３】
2008258982.tif 000005
【図４】
2008258982.tif 000006
【図５】
2008258982.tif 000007
【図６】
2008258982.tif 000008
【図７】
2008258982.tif 000009
【図８】
2008258982.tif 000010
【図９】
2008258982.tif 000011
【図１０】
2008258982.tif 000012
【図１１】
2008258982.tif 000013
【図１２】
2008258982.tif 000014
【図１３】
2008258982.tif 000015
【図１４】
2008258982.tif 000016
【図１５】
2008258982.tif 000017
【図１６】
2008258982.tif 000018
【図１７】
2008258982.tif 000019
【図１８】
2008258982.tif 000020
【図１９】
2008258982.tif 000021
【図２０】
2008258982.tif 000022
【図２１】
2008258982.tif 000023
【図２２】
2008258982.tif 000024
【図２３】
2008258982.tif 000025