(57)【要約】【課題】  従来、暗部における優れたノイズ除去と適切な輝度値の再現を両立させることが難しかった。【解決手段】  本発明では、複数画素の輝度値を有する画像データの処理対象画素の輝度値が予め設定された閾値未満の場合に、前記閾値を当該処理対象画素の出力輝度値とするクリップ部と、前記処理対象画素の輝度値に対する前記出力輝度値の増分値を求める増分算出部と、前記増分算出部が求めた前記増分値を保持する増分保持部と、前記処理対象画素の輝度値が前記閾値以上の場合に、当該輝度値から前記増分保持部に保持された前記増分値を減算して当該処理対象画素の出力輝度値を求める増分減算部とを備えることを特徴とする。【選択図】図４
2012070119.tif 000002
【特許請求の範囲】
【請求項１】
複数画素の輝度値を有する画像データの処理対象画素の輝度値が予め設定された閾値未満の場合に、前記閾値を当該処理対象画素の出力輝度値とするクリップ部と、
前記処理対象画素の輝度値に対する前記出力輝度値の増分値を求める増分算出部と、
前記増分算出部が求めた前記増分値を保持する増分保持部と、
前記処理対象画素の輝度値が前記閾値以上の場合に、当該輝度値から前記増分保持部に保持された前記増分値を減算して当該処理対象画素の出力輝度値を求める増分減算部と
を備えることを特徴とする画像処理装置。
【請求項２】
請求項１に記載の画像処理装置において、
前記増分減算部は、前記閾値未満の輝度値を有する画素周辺に配置された前記閾値以上の輝度値を有する画素の輝度値から前記増分保持部に保持された前記増分値を減算して当該処理対象画素の出力輝度値を求める
ことを特徴とする画像処理装置。
【請求項３】
請求項１または２に記載の画像処理装置において、
前記増分減算部は、前記減算後の出力輝度値が前記閾値未満になる場合は、前記閾値を出力輝度値とし、
前記増分保持部は、前記処理対象画素の輝度値が前記閾値以上の場合に、保持している前記増分値から前記増分減算部における減算分を差し引き、新たな増分値として保持する
ことを特徴とする画像処理装置。
【請求項４】
請求項１から３のいずれか一項に記載の画像処理装置において、
前記増分算出部は、前記処理対象画素および当該処理対象画素に隣接する画素の増分値を算出し、算出された各画素の増分値を予め設定された係数で重み付けした平滑増分値を求め、
前記増分保持部は、前記増分算出部が求めた前記平滑増分値を保持する
ことを特徴とする画像処理装置。
【請求項５】
請求項１から４のいずれか一項に記載の画像処理装置において、
前記画像データの複数画素は行列状に配置され、前記クリップ部，前記増分算出部および前記増分減算部は行単位または列単位でそれぞれの処理を行う場合に、
前記増分保持部は、前記行単位の処理または前記列単位の処理が終了する毎に、保持する値を零にリセットする
ことを特徴とする画像処理装置。
【請求項６】
請求項１から５のいずれか一項に記載の画像処理装置において、
前記画像処理装置が出力する画像データに対してノイズ除去処理を行うノイズ除去部と、
前記ノイズ除去処理後の画像データの各画素の輝度値が予め設定された黒レベル未満の場合に、当該画素の輝度値を前記黒レベルとする黒レベルクリップ部と
をさらに備えることを特徴とする画像処理装置。
【請求項７】
請求項１から６のいずれか一項に記載の画像処理装置において、
前記画像データは、ＲＧＢ３色の画素を有するＲａｗ形式の画像データとし、
前記クリップ部、前記増分算出部、前記増分保持部および前記増分減算部は、前記Ｒａｗ形式の画像データの各色毎にそれぞれの処理を行う
ことを特徴とする画像処理装置。
【請求項８】
請求項１から７のいずれか一項に記載の画像処理装置において、
前記閾値は、予め設定された負の係数と、画像データの遮光領域における暗部ノイズの標準偏差とを用いて、次式により与えられる
閾値  ＝  （負の係数）×（暗部ノイズの標準偏差）
ことを特徴とする画像処理装置。
【請求項９】
請求項１から８に記載の画像処理装置を搭載する電子カメラであって、
光学系を介して入射する被写体光を二次元状に配置された複数の画素で光電変換した輝度値を有する画像データを前記画像処理装置に出力する撮像部と、
前記撮像部に撮像タイミングを与える操作部材と、
前記画像処理装置が出力する画像データを記憶媒体に記録する記録部と
を設けたことを特徴とする電子カメラ。
【請求項１０】
コンピュータで実行可能な画像処理プログラムであって、
複数画素の輝度値を有する画像データの処理対象画素の輝度値が予め設定された閾値未満の場合に、前記閾値を当該処理対象画素の出力輝度値とするクリップ処理と、
前記処理対象画素の輝度値に対する前記出力輝度値の増分値を求める増分算出処理と、
前記増分算出処理で求めた前記増分値を変数として保持する増分保持処理と、
前記処理対象画素の輝度値が前記閾値以上の場合に、当該輝度値から前記変数に保持された前記増分値を減算して当該処理対象画素の出力輝度値を求める増分減算処理と
を有することを特徴とする画像処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置および画像処理プログラム並びに電子カメラに関する。
【背景技術】
【０００２】
近年、ＣＣＤ型撮像素子やＣＭＯＳ型撮像素子などを用いた電子カメラが広く普及している。これらの撮像素子を用いた電子カメラでは、高感度撮影時のノイズを除去する処理が行われている（例えば特許文献１参照）。ところが、非常にノイズが多い画像の場合、暗部における局所的な輝度値の増加を招くという問題が生じる。この理由は、一般に輝度値は０以上の輝度値にクリップされて用いられるが、暗部の輝度値がノイズによって負の輝度値を持っている場合、クリップされた負の成分だけ輝度値が増加してしまうからである（例えば特許文献２参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０００−２２４４２１号公報
【特許文献２】特開２００７−２９５２６０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
このように、従来は負の輝度値を有する暗部の画素においてクリップされた負の成分だけ輝度値が増加するという問題があった。そして、増加された輝度値を用いて後段のノイズ除去処理（例えば暗部周辺画素の輝度値の平均化など）を行うと、ノイズ除去後の画像における暗部の輝度値は、この増分によって実際より大きな値になってしまうという問題が生じる。
【０００５】
本発明の目的は、暗部における優れたノイズ除去と適切な輝度値の再現を両立させることができる画像処理装置および画像処理プログラム並びに電子カメラを提供することである。
【課題を解決するための手段】
【０００６】
本発明に係る画像処理装置は、複数画素の輝度値を有する画像データの処理対象画素の輝度値が予め設定された閾値未満の場合に、前記閾値を当該処理対象画素の出力輝度値とするクリップ部と、前記処理対象画素の輝度値に対する前記出力輝度値の増分値を求める増分算出部と、前記増分算出部が求めた前記増分値を保持する増分保持部と、前記処理対象画素の輝度値が前記閾値以上の場合に、当該輝度値から前記増分保持部に保持された前記増分値を減算して当該処理対象画素の出力輝度値を求める増分減算部とを備えることを特徴とする。
【０００７】
特に、前記増分減算部は、前記閾値未満の輝度値を有する画素周辺に配置された前記閾値以上の輝度値を有する画素の輝度値から前記増分保持部に保持された前記増分値を減算して当該処理対象画素の出力輝度値を求めることを特徴とする。
【０００８】
また、前記増分減算部は、前記減算後の出力輝度値が前記閾値未満になる場合は、前記閾値を出力輝度値とし、前記増分保持部は、前記処理対象画素の輝度値が前記閾値以上の場合に、保持している前記増分値から前記増分減算部における減算分を差し引き、新たな増分値として保持することを特徴とする。
【０００９】
また、  前記増分算出部は、前記処理対象画素および当該処理対象画素に隣接する画素の増分値を算出し、算出された各画素の増分値を予め設定された係数で重み付けした平滑増分値を求め、前記増分保持部は、前記増分算出部が求めた前記平滑増分値を保持することを特徴とする。
【００１０】
特に、前記画像データの複数画素は行列状に配置され、前記クリップ部，前記増分算出部および前記増分減算部は行単位または列単位でそれぞれの処理を行う場合に、前記増分保持部は、前記行単位の処理または前記列単位の処理が終了する毎に、保持する値を零にリセットすることを特徴とする。
【００１１】
さらに、前記画像処理装置が出力する画像データに対してノイズ除去処理を行うノイズ除去部と、前記ノイズ除去処理後の画像データの各画素の輝度値が予め設定された黒レベル未満の場合に、当該画素の輝度値を前記黒レベルとする黒レベルクリップ部とをさらに備えることを特徴とする。
【００１２】
また、前記画像データは、ＲＧＢ３色の画素を有するＲａｗ形式の画像データとし、前記クリップ部、前記増分算出部、前記増分保持部および前記増分減算部は、前記Ｒａｗ形式の画像データの各色毎にそれぞれの処理を行うことを特徴とする。
【００１３】
特に、前記閾値は、予め設定された負の係数と、画像データの遮光領域における暗部ノイズの標準偏差とを用いて、次式により与えられることを特徴とする。
閾値  ＝  （負の係数）×（暗部ノイズの標準偏差）
本発明に係る電子カメラは、光学系を介して入射する被写体光を二次元状に配置された複数の画素で光電変換した輝度値を有する画像データを前記画像処理装置に出力する撮像部と、前記撮像部に撮像タイミングを与える操作部材と、前記画像処理装置が出力する画像データを記憶媒体に記録する記録部とを設けたことを特徴とする。
【００１４】
本発明に係る画像処理プログラムは、コンピュータで実行可能な画像処理プログラムであって、複数画素の輝度値を有する画像データの処理対象画素の輝度値が予め設定された閾値未満の場合に、前記閾値を当該処理対象画素の出力輝度値とするクリップ処理と、前記処理対象画素の輝度値に対する前記出力輝度値の増分値を求める増分算出処理と、前記増分算出処理で求めた前記増分値を変数として保持する増分保持処理と、前記処理対象画素の輝度値が前記閾値以上の場合に、当該輝度値から前記変数に保持された前記増分値を減算して当該処理対象画素の出力輝度値を求める増分減算処理とを有することを特徴とする。
【発明の効果】
【００１５】
本発明に係る画像処理装置および画像処理プログラム並びに電子カメラは、クリップによる増分を周辺画素の輝度値から減算するので、暗部における局所的な輝度値の増加を招くことがなく、輝度値の平均値が適切に保たれた画像に対してノイズ除去処理を行うことができ、暗部における優れたノイズ除去と適切な輝度値の再現を両立させることができる。
【図面の簡単な説明】
【００１６】
【図１】本実施形態に係る電子カメラ１０１の構成例を示すブロック図である。
【図２】負の輝度値を説明するための説明図である。
【図３】撮像素子１０４の輝度値の一例を示す説明図である。
【図４】画像処理部１０７の構成例を示すブロック図である。
【図５】撮像素子１０４の画素配置例を示す説明図である。
【図６】輝度値の判定例示す説明図である。
【図７】暗部処理のフローチャートである。
【図８】Ｒａｗデータへの応用例を示す説明図である。
【発明を実施するための形態】
【００１７】
以下、本発明に係る画像処理装置および画像処理プログラム並びに電子カメラの実施形態について図面を用いて詳しく説明する。尚、以下の実施形態では、本発明に係る画像処理装置が搭載された電子カメラの例について説明するが、撮影済みの画像データを入力してノイズ除去などの画像処理を行うパソコンのプログラムや単体の画像処理装置であっても構わない。
【００１８】
［電子カメラ１０１の構成例および基本動作］
先ず、各実施形態に共通の電子カメラ１０１の構成例および基本動作について説明する。図１は電子カメラ１０１の構成例を示すブロック図で、電子カメラ１０１は、光学系１０２と、メカニカルシャッタ１０３と、撮像素子１０４と、Ａ／Ｄ変換部１０５と、画像バッファ１０６と、画像処理部１０７と、制御部１０８と、メモリ１０９と、表示部１１０と、操作部材１１１と、メモリカードＩＦ（インターフェース）１１２とで構成される。
【００１９】
図１において、光学系１０２に入射される被写体光は、メカニカルシャッタ１０３を介して撮像素子１０４の受光面に入射される。ここで、光学系１０２は、ズームレンズやフォーカスレンズなどの複数枚のレンズおよびレンズ駆動部や絞りなどで構成され、制御部１０８からの指令に応じて、ズームレンズやフォーカスレンズ或いは絞りなどが制御される。
【００２０】
撮像素子１０４は、例えばＣＭＯＳ型固体撮像素子で構成され、受光面に光電変換部を有する複数の画素が二次元状に配置されている。
【００２１】
Ａ／Ｄ変換部１０５は、撮像素子１０４が出力する画像信号を各画素毎にデジタル値に変換し、１枚の撮影画像分の画像データとして画像バッファ１０６に一時的に記憶する。例えば、撮像素子１０４の解像度が１０００画素×１０００画素である場合、１００万画素分の画像データが画像バッファ１０６に取り込まれる。
【００２２】
画像バッファ１０６は、例えば揮発性の高速メモリで構成され、Ａ／Ｄ変換部１０５が出力する画像データを一時的に記憶するだけでなく、画像処理部１０７が画像処理を行う際のバッファメモリとしても使用される。或いは撮影画像やメモリカードＩＦ１１２に接続されたメモリカード１１２ａに保存されている撮影済の画像を読み出して表示部１１０に表示したり、画像処理を施す際のバッファとしても使用される。
【００２３】
画像処理部１０７は、画像バッファ１０６に取り込まれた画像データに対して、ホワイトバランス処理，色補間処理，ガンマ補正処理，彩度強調処理，輪郭輪郭強調処理、或いはＪＰＥＧ規格などに準拠した画像圧縮方法で画像データの圧縮処理を施す。特に本実施形態では、画像処理部１０７は、後に説明する暗部処理，ノイズ除去処理および負クリップ処理などを実行する。
【００２４】
制御部１０８は、例えば内部に記憶されたプログラムに従って動作するＣＰＵで構成され、電子カメラ１０１全体の動作を制御する。例えば制御部１０８は、操作部材１１１の撮影モード選択ダイヤルやレリーズボタンの操作に応じて、電子カメラ１０１の撮影モードを設定したり、レリーズボタン押下時には光学系１０２のレンズ制御や絞り制御を行ってメカニカルシャッタ１０３を開閉し、撮像素子１０４で被写体画像を撮像する。そして、制御部１０８は、撮像素子１０４から予め設定した解像度で各画素から画像信号を読み出しながらＡ／Ｄ変換部１０５でデジタル値に変換し、１画面分の画像データを画像バッファ１０６に取り込む。さらに、制御部１０８は、画像バッファ１０６に取り込まれた画像データに対して所定の画像処理を施すよう画像処理部１０７に指令し、画像処理後の画像データ（例えばＪＰＥＧデータ）に所定のファイル名やヘッダ情報を付加してメモリカードＩ／Ｆ１１２を介してメモリカード１１２ａに保存したり、表示部１１０に撮影画像を表示する。
【００２５】
メモリ１０９は、例えばフラッシュメモリなどの不揮発性の半導体メモリで構成され、電子カメラ１０１の撮影モードや露出情報，フォーカス情報などのパラメータが記憶される。制御部１０８は、これらのパラメータを参照して電子カメラ１０１の動作を制御する。尚、これらのパラメータは、操作部材１１１を介して行われるユーザー操作に応じて適宜更新される。
【００２６】
表示部１１０は、液晶モニタなどで構成され、制御部１０８によって撮影画像や電子カメラ１０１の操作に必要な設定メニュー画面などが表示される。
【００２７】
操作部材１１１は、電源ボタン、レリーズボタン、撮影モード選択ダイヤル、カーソルボタンなどで構成される。ユーザーは、これらの操作ボタンを操作して電子カメラ１０１を使用する。例えば撮影モードダイヤルでは高感度撮影モードやＩＳＯ感度選択などを行う。尚、これらの操作ボタンの操作情報は制御部１０８に出力され、制御部１０８は操作部材１１１から入力する操作情報に応じて電子カメラ１０１全体の動作を制御する。
【００２８】
メモリカードＩＦ１１２は、電子カメラ１０１にメモリカード１１２ａを接続するためのインターフェースである。そして、制御部１０８はメモリカードＩＦ１１２を介してメモリカード１１２ａに画像データを読み書きする。
【００２９】
以上が電子カメラ１０１の構成および基本動作である。尚、電子カメラ１０１ではなく、本発明に係る単体の画像処理装置を構成する場合は、図１において、光学系１０２，メカニカルシャッタ１０３，撮像素子１０４およびＡ／Ｄ変換部１０５で構成される撮像のためのブロックを取り除いた装置とし、制御部１０８（画像処理装置の制御部に相当）が撮影済みの画像データをメモリカード１１２ａから画像バッファ１０６に読み出して、画像処理部１０７で暗部処理，ノイズ除去処理および負クリップ処理などを実行し、再びメモリカード１１２ａに記憶する動作を行う。
【００３０】
［負の輝度値について］
ここで、負の輝度値について図２を用いて説明する。図２は暗部を含むサンプル画像１１５の行１３１部分の輝度値の変化を示したグラフである。尚、グラフの縦軸は黒レベル（ＢＬ）を０とした輝度値を示し、横軸は行１３１の水平方向の位置に対応している。図２のグラフにおいて、領域１３２はサンプル画像１１５の行１３１の明るい部分に対応し、輝度値は２００程度である。また、領域１３３はサンプル画像１１５の行１３１の暗い部分に対応し、輝度値は１０程度である。一般に、黒レベル（ＢＬ）は、撮像素子１０４の遮光領域にある画素の出力を基準にして輝度値を０としているが、ノイズの影響により輝度値が０より負側に振れる場合があり、これを負の輝度値と呼んでいる。
【００３１】
図２のグラフにおいて、ノイズがある場合、画像の輝度値がノイズの影響を受けるため、例えばノイズ部分１３４，１３５，１３６および１３７のように、画像の輝度値が正負に変動する。尚、図２では、わかり易いように、ノイズ部分１３４，１３５，１３６および１３７を誇張して描いてある。実際にはノイズのレベルは小さいので輝度値が２００程度の明るい部分１３２では問題にはならないが、輝度値が１０程度の暗い部分１３３では、例えばノイズ部分１３６のように輝度値が黒レベル以下（負の輝度値）になってしまう場合がある。この場合、例えば輝度値が（−１０）などの値になり、従来は輝度値の範囲外として黒レベルにクリップされていた。一方、理論的にノイズの平均値は０になると考えると、負の輝度値をクリップした分だけ輝度値が大きくなることを意味する。特に、後段の処理で暗部領域の複数画素を用いて平均化などのノイズ除去処理を行った場合、負の輝度値を有する画素が多く含まれる暗部（画像の暗い部分１３３など）における平均的な輝度値が大きくなり、実際よりも明るく見えてしまうという問題が生じる。
【００３２】
そこで、本実施形態では、閾値（ＳＨ）を予め設定して（図２の例では（ＳＨ＝−３））、処理対象画素の輝度値が閾値未満の場合に閾値にクリップした時のクリップ部分１３８を増分として保持しておき、輝度値が閾値未満の画素周辺の輝度値が閾値以上の画素の輝度値から保持しておいた増分を減算する処理を行うようになっている。これにより、負の輝度値の画素が多く含まれる画像の暗い部分１３３における輝度値が大きくならないようにしている。尚、これらの処理は、図１の画像処理部１０７が行うが、画像処理部１０７の具体的な処理については後で詳しく説明する。
【００３３】
また、図２のグラフではわかり易いようにアナログ波形で示したが、実際にはＡ／Ｄ変換部１０５でＡ／Ｄ変換して画像バッファ１０６に取り込まれる画像データは、図３に示すように画素毎に量子化された輝度値を有している。尚、Ａ／Ｄ変換部１０５では、黒レベル以下の負の輝度値も量子化して画像バッファ１０６に取り込むものとする。これは、例えば撮像素子１０４から出力される画像信号をＡ／Ｄ変換する際の基準電圧を調整して、黒レベルをＡ／Ｄ変換部１０５の量子化範囲の最小値としないようにすればよい。
【００３４】
図３は、ｘ列ｙ行の二次元状に配置された画素を有する撮像素子１０４の一部の画素とその輝度値の一例を示した図である。図３のグラフでは、３行目の輝度値の例が示され、例えば画素ｐ（１，３），ｐ（３，３），ｐ（５，３）およびｐ（７，３）のそれぞれの入力輝度値ｉｎ（１，３），ｉｎ（３，３），ｉｎ（５，３）およびｉｎ（７，３）が負の輝度値を有している。ここで、図３に示した画素座標の画素ｐ（ｘ，ｙ）の画像値（入力輝度値）はｉｎ（ｘ，ｙ）と記載する。
【００３５】
［画像処理部１０７の構成および動作］
次に、画像処理部１０７の構成および動作について図４のブロック図を用いて説明する。図４において、画像処理部１０７は、暗部処理部２０１と、ノイズ除去処理部２０２と、黒レベルクリップ処理部２０３とで構成される。さらに画像処理部１０７は、黒レベルクリップ処理部２０３の処理後の画像データに対して、ホワイトバランス処理，色補間処理，ガンマ補正処理，彩度強調処理，輪郭輪郭強調処理、或いはＪＰＥＧ規格などに準拠した画像圧縮方法で画像データの圧縮処理を施す通常の画像処理部２０４を有し、画像処理後の画像データは制御部１０８およびメモリカードＩＦ１１２を介してメモリカード１１２ａに記憶される。
【００３６】
ここで、電子カメラ１０１ではなく単体の画像処理装置を実現する場合は、メモリカード１１２ａに記憶されている撮影済みの画像データを画像バッファ１０６に読み出して、暗部処理部２０１、ノイズ除去処理部２０２および黒レベルクリップ処理部２０３などの画像処理を行い、処理後の画像データを再び画像バッファ１０６に書き込むようにする。尚、図４において、図１と同符号のものは同じものを示す。以下、画像処理部１０７の各部について順番に説明する。
【００３７】
暗部処理部２０１は、黒レベル未満の負の輝度値を有する暗部の画素においてクリップされた負の成分だけ輝度値が増加するという問題を回避するために、黒レベルよりも小さい閾値を設定し、閾値にクリップした時の増分を周辺画素の輝度値から減算する処理を行う。これにより、暗部における局所的な輝度値の増加を招くことなく輝度値の平均値が適切に保たれた画像に対してノイズ除去処理を行うことができ、暗部における優れたノイズ除去と適切な輝度値の再現を両立させることができる。尚、暗部処理部２０１の詳細については後で詳しく説明する。
【００３８】
ノイズ除去処理部２０２は、例えば周辺画素の輝度値と平均化するなどの公知のノイズ除去方法を用いたノイズ除去処理を行う。
【００３９】
黒レベルクリップ処理部２０３は、例えば輝度値を輝度０以上の値にクリップする。これは、画像データは黒レベル（輝度値＝０）以上の輝度値にクリップして用いられるために行う一般的な処理である。尚、黒レベルクリップ処理部２０３は、暗部処理部２０１で行われる閾値を基準としたクリップ処理とは異なり、黒レベルを基準としたクリップ処理である。ここで、暗部処理部２０１の閾値を黒レベルとしてもよいが、経験的に暗部処理後の暗部の平均値が負側に偏る傾向にあるため、黒レベルよりも小さい閾値でクリップした時の増分を求めるのが好ましい。例えば、閾値は（式１）のように設定する。
閾値ＳＨ  ＝  （負の係数）×（暗部ノイズの標準偏差）  …（式１）
尚、（式１）において、負の係数は（−０．１から−１）程度の値、暗部ノイズの標準偏差は、画像データの遮光領域における画素（ＯＢ領域の画素）の出力値の標準偏差である。これらの値は、製造時に計測され電子カメラ１０１のメモリ１０９などに記憶されているものとする。そして、画像処理部１０７はメモリ１０９に記憶されたこれらのパラメータを読み出して処理を行う。
【００４０】
［暗部処理部２０１の処理］
以下、暗部処理部２０１の処理について詳しく説明する。尚、暗部処理部２０１は、クリップ部２５１と、増分算出部２５２と、増分保持部２５３と、増分減算部２５４とを有する。
【００４１】
クリップ部２５１は、処理対象画素ｐ（ｘ，ｙ）の入力輝度値ｉｎ（ｘ，ｙ）が予め設定された閾値未満の場合に、処理対象画素ｐ（ｘ，ｙ）の入力輝度値ｉｎ（ｘ，ｙ）を閾値にクリップする。そして、クリップ後の輝度値を処理対象画素ｐ（ｘ，ｙ）の出力輝度値ｏｕｔ（ｘ，ｙ）として出力する。例えば、入力輝度値ｉｎ（ｘ，ｙ）が（−１０）で閾値が（−３）の場合は、輝度値は（−３）にクリップされ、（−３）が出力輝度値となる。
【００４２】
増分算出部２５２は、クリップ部２５１がクリップ前の輝度値とクリップ後の輝度値との差分を増分値とする。尚、増分値を求める画素の入力輝度値ｉｎ（ｘ，ｙ）が予め設定された閾値以上の場合には、増分値は０である。また、本実施形態では、増分算出部２５２は、処理対象画素ｐ（ｘ，ｙ）周辺の複数画素の増分値を平滑した平滑増分値を算出する場合について説明するが、処理対象画素ｐ（ｘ，ｙ）の増分値のみ用いて処理してもよい。増分算出部２５２の詳細な処理については後で詳しく説明する。
【００４３】
増分保持部２５３は、増分算出部２５２が求めた増分値を保持する。尚、本実施形態では、増分算出部２５２が求めた平滑された増分値（平滑増分値）を保持する。以降の説明では増分保持部２５３が保持する増分値には平滑増分値の場合も含まれるものとする。
【００４４】
増分減算部２５４は、処理対象画素ｐ（ｘ，ｙ）の入力輝度値ｉｎ（ｘ，ｙ）が閾値以上の場合に、当該輝度値から増分保持部２５２に保持された増分値を減算する。そして、減算後の輝度値を処理対象画素ｐ（ｘ，ｙ）の出力輝度値ｏｕｔ（ｘ，ｙ）として出力する。
【００４５】
尚、減算後の輝度値が閾値未満にならないように減算し、減算された増分値は増分保持部２５２に保持された増分値から差し引かれる。そして、残った増分値は保持され、次の処理対象画素で求められた増分値が加えられて蓄積される。増分減算部２５４の詳細な処理については後で詳しく説明する。
【００４６】
次に、暗部処理部２０１の具体的な処理例について図５を用いて説明する。図５では、ｘ列ｙ行の二次元状に配置された画素を有する撮像素子１０４の一部分の１０行９列の画素が示されている。ここでは、処理対象画素ｐ（ｘ，ｙ）を３行５列目の画素ｐ（５，３）として、画素ｐ（５，３）の入力輝度値ｉｎ（５，３）を例に挙げて、暗部処理部２０１の処理について説明する。また、実際の暗部処理は図２で説明したように、行単位に１行目から順番に処理される。そして、各行においては、列単位に１列目の画素から順番に処理される。
【００４７】
（増分算出部２５２の処理）
図５において、処理対象画素を中心として増分の平滑値を求める画素群を参照画素群と称する。図５の例では、処理対象画素ｐ（５，３）を中心とする列方向の上下２つの画素からなる画素ｐ（５，１）から画素ｐ（５，５）までの５つの画素群が参照画素群である。尚、本実施形態では、参照画素群を処理対象画素ｐ（５，３）を中心とする列方向に上下２画素の領域としたが、これに限らず処理対象画素近傍の複数の画素群を参照画素群としてもよい。例えば図５において、処理対象画素ｐ（５，３）を中心とする周辺の画素ｐ（４，２），ｐ（５，２），ｐ（６，２），ｐ（４，３），ｐ（６，３），ｐ（４，４），ｐ（４，５），ｐ（４，６）からなる９つの画素群を参照画素群としてもよい。或いは、参照画素群を考えずに処理対象画素ｐ（５，３）の増分値のみを求めてもよい。
【００４８】
尚、ここでは説明が理解し易いように、入力画像の色成分は考えずにモノクロ画像として説明するが、入力画像がＲＧＢなどの複数色成分を有する場合は各色成分について同様の処理を行えばよい。
【００４９】
次に、参照画素群の各画素における増分の求め方について説明する。先ず、画素ｐ（ｘ，ｙ）の入力輝度値ｉｎ（ｘ，ｙ）と閾値（ＳＨ）との差分値を求める（式２）。尚、ここでは、閾値は先に（式１）で説明した値（ＳＨ）が予め設定されているものとする。
差分値ｄ  ＝  ＳＨ−ｉｎ（ｘ，ｙ）  …  （式２）
そして、処理対象画素ｐ（ｘ，ｙ）の入力輝度値ｉｎ（ｘ，ｙ）が閾値未満の場合は差分値ｄが正（ｄ≧０）となり、差分値ｄが増分に相当する。逆に、処理対象画素ｐ（ｘ，ｙ）の入力輝度値ｉｎ（ｘ，ｙ）が閾値以上の場合は差分値ｄが負（ｄ＜０）となり、差分値ｄは増分とはならないので、処理対象画素ｐ（ｘ，ｙ）の増分値は０である。例えば、図６（ａ）に示すように、画素ｐ（５，３）の入力輝度値ｉｎ（５，３）と閾値（ＳＨ）との差分値ｄは、（式２）より（ｄ≧０）となる。逆に、図６（ｂ）に示すように、差分値ｄは（ｄ＜０）となる。
【００５０】
このようにして、処理対象画素を中心とする参照画素群の各画素の増分値が求められる。
【００５１】
次に、処理対象画素を中心とする参照画素群の増分値を平滑化する方法について説明する。先ず、参照画素群の各画素に対して（式２）の差分値ｄを計算する。そして、ｄ＞０の場合の差分値ｄを増分として加算し、ｄ≦０の場合は当該画素の増分を０とする処理を行う。この処理を関数ｍａｘ（（ＳＨ−ｉｎ（ｘ，ｙ）），０）と記載する。この関数は、差分値ｄ（ＳＨ−ｉｎ（ｘ，ｙ））と０の最大値を出力値とする関数で、例えばｄ＞０の場合は差分値ｄが出力値となり、ｄ≦０の場合は０が出力値となる。このようにして、各画素の増分のみを抽出する。そして、抽出された各画素の増分が参照画素群内で平滑化され、参照画素群における増分の平滑値（平滑増分値）が求められる。この時、参照画素群の増分値を単純に平均して平滑増分値を求めてもよいが、本実施形態では参照画素群の各画素の増分値を予め設定された重み付け係数で重み付けして平滑増分値を求める。
【００５２】
例えば図５に示した処理対象画素ｐ（５，３）を中心とする列方向の上下２つの画素からなる画素ｐ（５，１）から画素ｐ（５，５）までの５つの参照画素群の増分の平滑増分値ｓを求める場合は、先に説明した関数ｍａｘを用いて（式３）のように計算する。
平滑増分値ｓ＝｛  ｍａｘ（（ＳＨ  −  ｉｎ（５，１）），０）
＋  ２  ×  ｍａｘ（（ＳＨ  −  ｉｎ（５，２）），０）
＋  ２  ×  ｍａｘ（（ＳＨ  −  ｉｎ（５，３）），０）
＋  ２  ×  ｍａｘ（（ＳＨ  −  ｉｎ（５，４）），０）
＋  ｍａｘ（（ＳＨ  −  ｉｎ（５，５）），０）  ｝／８  …（式３）
（式３）では、画素ｐ（５，２），ｐ（５，３），ｐ（５，４）の３つの画素を２倍の係数、画素ｐ（５，１）およびｐ（５，５）の２つの画素を１倍の係数にそれぞれ重み付けして１／８することで平滑増分値ｓを求めている。尚、上記の係数は一例であり、例えば（式４）のような係数で平滑増分値ｓを計算してもよい。
平滑増分値ｓ＝｛  ０．１  ×  ｍａｘ（（ＳＨ  −  ｉｎ（５，１）），０）
＋  ０．２  ×  ｍａｘ（（ＳＨ  −  ｉｎ（５，２）），０）
＋  ０．４  ×  ｍａｘ（（ＳＨ  −  ｉｎ（５，３）），０）
＋  ０．２  ×  ｍａｘ（（ＳＨ  −  ｉｎ（５，４）），０）
＋  ０．１  ×  ｍａｘ（（ＳＨ  −  ｉｎ（５，５）），０）｝  …（式４）
また、参照画素群の画素数が増減した場合でも、（式４）に示すように各画素の係数値の合計が１になるように重み付けを行うことにより、同様に平滑増分値ｓを求めることができる。
【００５３】
そして、求めた参照画素群の増分の平滑増分値ｓをその時点までに蓄積された蓄積変数ｓｔａｃｋに加えて増分値の蓄積を行う（式５）。
ｓｔａｃｋ  ＝  ｓｔａｃｋ  ＋  ｓ    …  （式５）
このようにして、増分算出部２５２は、処理対象画素ｐ（ｘ，ｙ）を中心とする参照画素群の増分を平滑化して平滑増分値ｓを求め、蓄積変数ｓｔａｃｋに加えて増分の蓄積を行う。ここで、蓄積変数ｓｔａｃｋは、増分保持部２５３に対応する。
【００５４】
（増分減算部２５４）
増分減算部２５４は、処理対象画素ｐ（ｘ，ｙ）の入力輝度値ｉｎ（ｘ，ｙ）が閾値以上の場合に、当該輝度値から増分保持部２５２に保持された増分値を減算する。
【００５５】
入力輝度値ｉｎ（ｘ，ｙ）が閾値未満である場合には、増分が増分保持部２５３で蓄積変数ｓｔａｃｋに蓄積されるだけなので増分減算部２５４は処理を行わない。増分減算部２５４は、入力輝度値ｉｎ（ｘ，ｙ）が閾値以上の場合に、その時点までに蓄積された増分値を保持する蓄積変数ｓｔａｃｋの値と、入力輝度値ｉｎ（ｘ，ｙ）とＳＨとの差分値（ｉｎ（ｘ，ｙ）−ＳＨ）とを比較して小さい方をオフセット値（ｏｆｆｓｅｔ）とし、入力輝度値ｉｎ（ｘ，ｙ）からｏｆｆｓｅｔ値を減算する。そして、減算後の輝度値を処理対象画素ｐ（ｘ，ｙ）の出力輝度値ｏｕｔ（ｘ，ｙ）として出力する。
【００５６】
ここで、蓄積変数ｓｔａｃｋの値と、差分値（ｉｎ（ｘ，ｙ）−ＳＨ）とを比較して小さい方をオフセット値（ｏｆｆｓｅｔ）とする処理を関数ｍｉｎ（ｓｔａｃｋ，（ｉｎ（ｘ，ｙ）−ＳＨ））と記載する。
【００５７】
また、オフセット値（ｏｆｆｓｅｔ）分だけ蓄積変数ｓｔａｃｋの値を減らす（式６）。
ｓｔａｃｋ  ＝  ｓｔａｃｋ  −  ｏｆｆｓｅｔ    …  （式６）
ここで、オフセット値（ｏｆｆｓｅｔ）は閾値以上の輝度値を有する処理対象画素の輝度値から減算される量に相当する。そして、輝度値を減算した量だけ、蓄積変数ｓｔａｃｋの値を減らし、蓄積変数ｓｔａｃｋの値が残っている場合は次の処理対象画素（図５の例では次の列の画素ｐ（６，３））の処理に持ち越す。
【００５８】
以降、次の列の画素ｐ（６，３）を処理対象画素として、同様の処理を繰り返す。そして、行の最後の列まで処理を終えたら、蓄積変数ｓｔａｃｋの値を０にリセットして、次の行の処理を同様に繰り返す。
【００５９】
尚、上記の例では、蓄積変数ｓｔａｃｋの値を同じ行の処理で保持し続けるようにしたが、例えば蓄積された増分値が大きい場合はなかなか減らないので、輝度値が閾値以上の画素に影響を与える場合が考えられる。これを回避するために、例えば輝度値が閾値以上の画素が所定数（例えば５個）だけ連続している場合に蓄積変数ｓｔａｃｋの値を０にリセットするようにしてもよい。これにより、画像の暗部領域から離れた位置にある画素の輝度値に影響を与えないようにすることができ、画像の暗部領域近傍のみ適切に処理できる。
【００６０】
このようにして、暗部処理部２０１は、輝度値が閾値未満の画素を閾値にクリップした時の増分を蓄積して、蓄積された増分（または増分の一部）を輝度値が閾値以上の画素の輝度値から減算するので、閾値未満の輝度値を有する暗部の画素近傍での増分による輝度値の上昇を抑制できる。
［暗部処理部２０１の処理の流れ］
次に、１画面分の画像データに対して暗部処理部２０１が行う処理の流れについて図７のフローチャートを用いて説明する。上記では、図５の画素ｐ（５，３）を処理対象画素とした時の処理を説明したが、実際の暗部処理部２０１は、ｘ列ｙ行の二次元状に配置された画素を有する撮像素子１０４で撮影された画像データに対して、行単位で１行目から順番に実行し、また各行においては列単位に１列目の画素から順番に同様の処理を繰り返す。ここで、図７において、ステップＳ１０２からステップＳ１０９までの処理は行単位に行われる処理、ステップＳ１０４からステップＳ１０８までの処理は列単位に行われる処理に対応する。
【００６１】
（ステップＳ１０１）１画面分の画像データを取得し、処理を行う行位置を示す変数（ｙ）を初期化する（ｙ＝１（１行目））。尚、参照画素群を処理対象画素の上下２画素とする場合、最初の１行目および２行目を処理する場合と、最後の２行分の処理を行う場合は、対象とする参照画素群が存在しないので、例外的な処理を行うものとする。例外的な処理は、例えば撮像素子１０４のＯＢ領域の画素を利用して、１行目に隣接するＯＢ領域から２行分の画素を選択し、これを参照画素としてしてもよい。或いは、１行目の処理の場合は、下２行分（２行目および３行目）の２画素の輝度値を二重に利用して上下４画素分の参照画素群を構成してもよい。
【００６２】
（ステップＳ１０２）参照画素群における増分の平滑増分値を蓄積するための変数（蓄積変数：ｓｔａｃｋ）を初期化する（ｓｔａｃｋ＝０）。
【００６３】
（ステップＳ１０３）ステップＳ１０２で選択した行の最初の列位置を示す変数（ｘ）を初期化する（ｘ＝１（１列目））。
【００６４】
（ステップＳ１０４）現在の行位置ｙおよび列位置ｘで示される処理対象画素ｐ（ｘ，ｙ）の画像データを入力する。ここで、図５に示した画素座標の画素ｐ（ｘ，ｙ）に対応する入力輝度値はｉｎ（ｘ，ｙ）と記載する。例えば、行位置がｙ＝３、列位置がｘ＝５の処理対象画素ｐ（５，３）の入力輝度値はｉｎ（５，３）となる。
【００６５】
（ステップＳ１０５）処理対象画素ｐ（ｘ，ｙ）の入力輝度値ｉｎ（ｘ，ｙ）が予め設定された閾値未満の場合に、処理対象画素ｐ（ｘ，ｙ）の入力輝度値ｉｎ（ｘ，ｙ）を閾値にクリップする。そして、クリップ後の輝度値を処理対象画素ｐ（ｘ，ｙ）の出力輝度値ｏｕｔ（ｘ，ｙ）として出力する。この処理は、クリップ部２５１の処理に対応する。
【００６６】
（ステップＳ１０６）処理対象画素ｐ（ｘ，ｙ）を中心とする参照画素群の増分値を平滑化した平滑増分値を算出し、蓄積変数ｓｔａｃｋに保持されている値に加算する。この処理は、増分算出部２５２および増分保持部２５３の処理に対応する。
【００６７】
（ステップＳ１０７）処理対象画素ｐ（ｘ，ｙ）の入力輝度値ｉｎ（ｘ，ｙ）が閾値以上の場合に、当該輝度値から増分保持部２５２に保持された増分値を減算する。そして、減算後の輝度値を処理対象画素ｐ（ｘ，ｙ）の出力輝度値ｏｕｔ（ｘ，ｙ）として出力する。この処理は、増分減算部２５４の処理に対応する。
【００６８】
（ステップＳ１０８）行位置変数（ｙ）で選択された行の全ての列の画素についてステップＳ１０４からステップＳ１０７までの処理を終了したか否かを判別する。全て終了した場合はステップＳ１０９に進み、終了していない場合はステップＳ１１０に進む。
【００６９】
（ステップＳ１０９）１画面の全ての行についてステップＳ１０２からステップＳ１０８までの処理を終了したか否かを判別する。全て終了した場合は暗部処理を終了し、終了していない場合はステップＳ１１１に進む。
【００７０】
（ステップＳ１１０）列位置変数（ｘ）を１つインクリメントして次の列を選択する。
【００７１】
（ステップＳ１１１）行位置変数（ｙ）を１つインクリメントして次の行を選択する。
【００７２】
このようにして、暗部処理部２０１は、処理対象画素ｐ（ｘ，ｙ）の入力輝度値ｉｎ（ｘ，ｙ）が閾値未満である場合はクリップ処理によって生じる増分を蓄積変数ｓｔａｃｋに蓄積し、処理対象画素ｐ（ｘ，ｙ）の入力輝度値ｉｎ（ｘ，ｙ）が閾値以上である場合は蓄積変数ｓｔａｃｋに蓄積された増分を当該画素の輝度値から減算するので、増分の蓄積が暗部領域で軽減され、局所的な平均値が適切に保たれた画像データを得ることができる。これにより、後のノイズ除去処理を行った場合でも暗部領域の平均的な輝度値の上昇を抑えることができ、暗部における優れたノイズ除去と適切な輝度値の再現とを両立させることができる。
［暗部処理のプログラム］
ここで、図７のフローチャートで行う処理をプログラム言語で表現すると以下のように記述できる。
（プログラム言語での表記の定義）
・暗部処理前の画素ｐ（ｘ，ｙ）の入力輝度値：ｉｎ（ｘ，ｙ）
・暗部処理後の画素ｐ（ｘ，ｙ）の出力輝度値：ｏｕｔ（ｘ，ｙ）
・ＳＨ：閾値
・Ａ＝Ｂ：変数ＡにＢの値を代入する。
・Ａ−＝Ｂ：変数Ａの値を（Ａ−Ｂ）に更新する。
・Ａ＋＝Ｂ：変数Ａの値を（Ａ＋Ｂ）に更新する。
・ｍｉｎ（ａ，ｂ，・・・）：ａ，ｂ，・・・の最小値を出力する。
・ｍａｘ（ａ，ｂ，・・・）：ａ，ｂ，・・・の最大値を出力する。
（プログラム例）
{(行単位の処理ａ)
stack ＝ 0
{(列単位の処理ｂ)
stack ＋＝ {max((SH-in(x,y-2),0)
＋ 2 ×max((SH-in(x,y-1),0)
＋ 2 ×max((SH-in(x,y),0)
＋ 2 ×max((SH-in(x,y+1),0)
＋ max((SH-in(x,y+2),0)}/8
if(in(x,y)＜SH)｛
out(x,y) ＝ SH 
}else｛
offset ＝ min(stack,(in(x,y)-SH))
out(x,y) ＝ in(x,y)-offset
stack −＝ offset
}
}(処理ｂ)
}(処理ａ)
このように、暗部処理部２０１の処理は、パソコンの画像処理プログラムとして実行することができる。この場合は、図４で説明したように、画像処理部１０７の処理全体を画像処理プログラムで実行し、例えば画像バッファ１０６の代わりに撮影済みの画像データが記憶されたメモリカードなどの記憶媒体をパソコンに装着して暗部処理部２０１、ノイズ除去処理部２０２、黒レベルクリップ処理部２０３およびその他の通常の画像処理部２０４などの処理を実行して、再びメモリカードに処理後の画像データを記憶する。
【００７３】
（応用例）
上記の実施形態では、特にカラー画像を意識せずに説明したが、実際の電子カメラではベイヤー配列と呼ばれるＲＧＢ３色のカラーフィルタを通して撮影されるＲａｗデータ（撮像素子１０４が出力する生の画像データ）を用いている。この場合は、上記の実施形態で説明した処理をＲＧＢの各色成分毎に適用することで同様の効果が得られる。例えば、Ｒａｗデータの各色成分毎に暗部処理を施した後でデモザイク処理（ベイヤー配列の画像データから各画素毎にＲＧＢのデータを補間して生成する色補間処理）を行うことにより、暗部のノイズが軽減された画像データに対してデモザイク処理を行うことになるので、本実施形態の暗部処理を施さない場合の従来のデモザイク処理に比べてデモザイク処理後の画像データの精度を向上することができる。
【００７４】
図８（ａ）はベイヤー配列の撮像素子１０４の画素座標の一例を示した図である。ベイヤー配列の撮像素子１０４で撮影された画像データは規則的にＲ画素、Ｇ画素およびＢ画素が配置されているので、例えば図８（ｂ）に示すように、奇数行および奇数列のＲ画素のみを抽出すれば、Ｒ画素だけの画素座標が得られる。そして、これを図５の画素座標に適用して、例えば処理対象画素ｐ（５，５）を中心とする周辺の画素ｐ（５，１），ｐ（５，３），ｐ（５，５），ｐ（５，７），ｐ（５，９）からなる５つの画素群を参照画素群として暗部処理を行う。同様に偶数行および偶数列のＢ画素についても暗部処理を行うことができる。また、Ｇ画素の場合は千鳥状に配置されているので、例えば図８（ａ）において処理対象画素ｐ（４，３）のＧ画素の場合、処理対象画素ｐ（４，３）を中心とする周囲の画素ｐ（３，２），ｐ（５，２），ｐ（４，３），ｐ（３，４），ｐ（５，４）からなる５つの画素群を参照画素群として暗部処理を行ってもよいし、処理対象画素ｐ（４，３）を中心とする周囲の画素ｐ（４，１），ｐ（５，２），ｐ（４，３），ｐ（３，４），ｐ（４，５）からなる５つの画素群を参照画素群として暗部処理を行ってもよい。或いは、処理対象画素ｐ（４，３）周辺の別の画素を参照画素群として選択してもよい。
【００７５】
このようにして、ベイヤー配列などのＲａｗデータの画像に対しても上記の実施形態と同様の暗部処理を適用することができる。これにより、後のノイズ除去処理を行った場合でも暗部の画素の輝度値の上昇を抑えることができ、暗部における優れたノイズ除去と適切な輝度値の再現とを両立させることができる。さらに、Ｒａｗデータの場合はデモザイク処理後の画像データの精度を向上することができる。
【００７６】
以上、本発明に係る画像処理装置および画像処理プログラム並びに電子カメラについて、各実施形態で例を挙げて説明してきたが、その精神またはその主要な特徴から逸脱することなく他の多様な形で実施することができる。そのため、上述した実施形態はあらゆる点で単なる例示に過ぎず、限定的に解釈してはならない。本発明は、特許請求の範囲によって示されるものであって、本発明は明細書本文にはなんら拘束されない。さらに、特許請求の範囲の均等範囲に属する変形や変更は、全て本発明の範囲内である。
【符号の説明】
【００７７】
１０１・・・電子カメラ；１０２・・・光学系；１０３・・・メカニカルシャッタ；１０４・・・撮像素子；１０５・・・Ａ／Ｄ変換部；１０６・・・画像バッファ；１０７・・・画像処理部；１０８・・・制御部；１０９・・・メモリ；１１０・・・表示部；１１１・・・操作部材；１１２・・・メモリカードＩＦ；１１２ａ・・・メモリカード；２０１・・・暗部処理部；２０２・・・ノイズ除去処理部；２０３・・・黒レベルクリップ処理部；２５１・・・クリップ部；２５２・・・増分算出部；２５３・・・増分保持部；２５４・・・増分減算部；ｐ（ｘ，ｙ）・・・画素
【図１】
2012070119.tif 000003
【図２】
2012070119.tif 000004
【図３】
2012070119.tif 000005
【図４】
2012070119.tif 000006
【図５】
2012070119.tif 000007
【図６】
2012070119.tif 000008
【図７】
2012070119.tif 000009
【図８】
2012070119.tif 000010