説明

画像処理装置および画像処理プログラム並びに電子カメラ

【課題】
従来、暗部における優れたノイズ除去と適切な輝度値の再現を両立させることが難しかった。
【解決手段】
本発明では、複数画素の輝度値を有する画像データの処理対象画素の輝度値が予め設定された閾値未満の場合に、前記閾値を当該処理対象画素の出力輝度値とするクリップ部と、前記処理対象画素の輝度値に対する前記出力輝度値の増分値を求める増分算出部と、前記増分算出部が求めた前記増分値を保持する増分保持部と、前記処理対象画素の輝度値が前記閾値以上の場合に、当該輝度値から前記増分保持部に保持された前記増分値を減算して当該処理対象画素の出力輝度値を求める増分減算部とを備えることを特徴とする。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像処理装置および画像処理プログラム並びに電子カメラに関する。
【背景技術】
【0002】
近年、CCD型撮像素子やCMOS型撮像素子などを用いた電子カメラが広く普及している。これらの撮像素子を用いた電子カメラでは、高感度撮影時のノイズを除去する処理が行われている(例えば特許文献1参照)。ところが、非常にノイズが多い画像の場合、暗部における局所的な輝度値の増加を招くという問題が生じる。この理由は、一般に輝度値は0以上の輝度値にクリップされて用いられるが、暗部の輝度値がノイズによって負の輝度値を持っている場合、クリップされた負の成分だけ輝度値が増加してしまうからである(例えば特許文献2参照)。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2000−224421号公報
【特許文献2】特開2007−295260号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
このように、従来は負の輝度値を有する暗部の画素においてクリップされた負の成分だけ輝度値が増加するという問題があった。そして、増加された輝度値を用いて後段のノイズ除去処理(例えば暗部周辺画素の輝度値の平均化など)を行うと、ノイズ除去後の画像における暗部の輝度値は、この増分によって実際より大きな値になってしまうという問題が生じる。
【0005】
本発明の目的は、暗部における優れたノイズ除去と適切な輝度値の再現を両立させることができる画像処理装置および画像処理プログラム並びに電子カメラを提供することである。
【課題を解決するための手段】
【0006】
本発明に係る画像処理装置は、複数画素の輝度値を有する画像データの処理対象画素の輝度値が予め設定された閾値未満の場合に、前記閾値を当該処理対象画素の出力輝度値とするクリップ部と、前記処理対象画素の輝度値に対する前記出力輝度値の増分値を求める増分算出部と、前記増分算出部が求めた前記増分値を保持する増分保持部と、前記処理対象画素の輝度値が前記閾値以上の場合に、当該輝度値から前記増分保持部に保持された前記増分値を減算して当該処理対象画素の出力輝度値を求める増分減算部とを備えることを特徴とする。
【0007】
特に、前記増分減算部は、前記閾値未満の輝度値を有する画素周辺に配置された前記閾値以上の輝度値を有する画素の輝度値から前記増分保持部に保持された前記増分値を減算して当該処理対象画素の出力輝度値を求めることを特徴とする。
【0008】
また、前記増分減算部は、前記減算後の出力輝度値が前記閾値未満になる場合は、前記閾値を出力輝度値とし、前記増分保持部は、前記処理対象画素の輝度値が前記閾値以上の場合に、保持している前記増分値から前記増分減算部における減算分を差し引き、新たな増分値として保持することを特徴とする。
【0009】
また、 前記増分算出部は、前記処理対象画素および当該処理対象画素に隣接する画素の増分値を算出し、算出された各画素の増分値を予め設定された係数で重み付けした平滑増分値を求め、前記増分保持部は、前記増分算出部が求めた前記平滑増分値を保持することを特徴とする。
【0010】
特に、前記画像データの複数画素は行列状に配置され、前記クリップ部,前記増分算出部および前記増分減算部は行単位または列単位でそれぞれの処理を行う場合に、前記増分保持部は、前記行単位の処理または前記列単位の処理が終了する毎に、保持する値を零にリセットすることを特徴とする。
【0011】
さらに、前記画像処理装置が出力する画像データに対してノイズ除去処理を行うノイズ除去部と、前記ノイズ除去処理後の画像データの各画素の輝度値が予め設定された黒レベル未満の場合に、当該画素の輝度値を前記黒レベルとする黒レベルクリップ部とをさらに備えることを特徴とする。
【0012】
また、前記画像データは、RGB3色の画素を有するRaw形式の画像データとし、前記クリップ部、前記増分算出部、前記増分保持部および前記増分減算部は、前記Raw形式の画像データの各色毎にそれぞれの処理を行うことを特徴とする。
【0013】
特に、前記閾値は、予め設定された負の係数と、画像データの遮光領域における暗部ノイズの標準偏差とを用いて、次式により与えられることを特徴とする。
閾値 = (負の係数)×(暗部ノイズの標準偏差)
本発明に係る電子カメラは、光学系を介して入射する被写体光を二次元状に配置された複数の画素で光電変換した輝度値を有する画像データを前記画像処理装置に出力する撮像部と、前記撮像部に撮像タイミングを与える操作部材と、前記画像処理装置が出力する画像データを記憶媒体に記録する記録部とを設けたことを特徴とする。
【0014】
本発明に係る画像処理プログラムは、コンピュータで実行可能な画像処理プログラムであって、複数画素の輝度値を有する画像データの処理対象画素の輝度値が予め設定された閾値未満の場合に、前記閾値を当該処理対象画素の出力輝度値とするクリップ処理と、前記処理対象画素の輝度値に対する前記出力輝度値の増分値を求める増分算出処理と、前記増分算出処理で求めた前記増分値を変数として保持する増分保持処理と、前記処理対象画素の輝度値が前記閾値以上の場合に、当該輝度値から前記変数に保持された前記増分値を減算して当該処理対象画素の出力輝度値を求める増分減算処理とを有することを特徴とする。
【発明の効果】
【0015】
本発明に係る画像処理装置および画像処理プログラム並びに電子カメラは、クリップによる増分を周辺画素の輝度値から減算するので、暗部における局所的な輝度値の増加を招くことがなく、輝度値の平均値が適切に保たれた画像に対してノイズ除去処理を行うことができ、暗部における優れたノイズ除去と適切な輝度値の再現を両立させることができる。
【図面の簡単な説明】
【0016】
【図1】本実施形態に係る電子カメラ101の構成例を示すブロック図である。
【図2】負の輝度値を説明するための説明図である。
【図3】撮像素子104の輝度値の一例を示す説明図である。
【図4】画像処理部107の構成例を示すブロック図である。
【図5】撮像素子104の画素配置例を示す説明図である。
【図6】輝度値の判定例示す説明図である。
【図7】暗部処理のフローチャートである。
【図8】Rawデータへの応用例を示す説明図である。
【発明を実施するための形態】
【0017】
以下、本発明に係る画像処理装置および画像処理プログラム並びに電子カメラの実施形態について図面を用いて詳しく説明する。尚、以下の実施形態では、本発明に係る画像処理装置が搭載された電子カメラの例について説明するが、撮影済みの画像データを入力してノイズ除去などの画像処理を行うパソコンのプログラムや単体の画像処理装置であっても構わない。
【0018】
[電子カメラ101の構成例および基本動作]
先ず、各実施形態に共通の電子カメラ101の構成例および基本動作について説明する。図1は電子カメラ101の構成例を示すブロック図で、電子カメラ101は、光学系102と、メカニカルシャッタ103と、撮像素子104と、A/D変換部105と、画像バッファ106と、画像処理部107と、制御部108と、メモリ109と、表示部110と、操作部材111と、メモリカードIF(インターフェース)112とで構成される。
【0019】
図1において、光学系102に入射される被写体光は、メカニカルシャッタ103を介して撮像素子104の受光面に入射される。ここで、光学系102は、ズームレンズやフォーカスレンズなどの複数枚のレンズおよびレンズ駆動部や絞りなどで構成され、制御部108からの指令に応じて、ズームレンズやフォーカスレンズ或いは絞りなどが制御される。
【0020】
撮像素子104は、例えばCMOS型固体撮像素子で構成され、受光面に光電変換部を有する複数の画素が二次元状に配置されている。
【0021】
A/D変換部105は、撮像素子104が出力する画像信号を各画素毎にデジタル値に変換し、1枚の撮影画像分の画像データとして画像バッファ106に一時的に記憶する。例えば、撮像素子104の解像度が1000画素×1000画素である場合、100万画素分の画像データが画像バッファ106に取り込まれる。
【0022】
画像バッファ106は、例えば揮発性の高速メモリで構成され、A/D変換部105が出力する画像データを一時的に記憶するだけでなく、画像処理部107が画像処理を行う際のバッファメモリとしても使用される。或いは撮影画像やメモリカードIF112に接続されたメモリカード112aに保存されている撮影済の画像を読み出して表示部110に表示したり、画像処理を施す際のバッファとしても使用される。
【0023】
画像処理部107は、画像バッファ106に取り込まれた画像データに対して、ホワイトバランス処理,色補間処理,ガンマ補正処理,彩度強調処理,輪郭輪郭強調処理、或いはJPEG規格などに準拠した画像圧縮方法で画像データの圧縮処理を施す。特に本実施形態では、画像処理部107は、後に説明する暗部処理,ノイズ除去処理および負クリップ処理などを実行する。
【0024】
制御部108は、例えば内部に記憶されたプログラムに従って動作するCPUで構成され、電子カメラ101全体の動作を制御する。例えば制御部108は、操作部材111の撮影モード選択ダイヤルやレリーズボタンの操作に応じて、電子カメラ101の撮影モードを設定したり、レリーズボタン押下時には光学系102のレンズ制御や絞り制御を行ってメカニカルシャッタ103を開閉し、撮像素子104で被写体画像を撮像する。そして、制御部108は、撮像素子104から予め設定した解像度で各画素から画像信号を読み出しながらA/D変換部105でデジタル値に変換し、1画面分の画像データを画像バッファ106に取り込む。さらに、制御部108は、画像バッファ106に取り込まれた画像データに対して所定の画像処理を施すよう画像処理部107に指令し、画像処理後の画像データ(例えばJPEGデータ)に所定のファイル名やヘッダ情報を付加してメモリカードI/F112を介してメモリカード112aに保存したり、表示部110に撮影画像を表示する。
【0025】
メモリ109は、例えばフラッシュメモリなどの不揮発性の半導体メモリで構成され、電子カメラ101の撮影モードや露出情報,フォーカス情報などのパラメータが記憶される。制御部108は、これらのパラメータを参照して電子カメラ101の動作を制御する。尚、これらのパラメータは、操作部材111を介して行われるユーザー操作に応じて適宜更新される。
【0026】
表示部110は、液晶モニタなどで構成され、制御部108によって撮影画像や電子カメラ101の操作に必要な設定メニュー画面などが表示される。
【0027】
操作部材111は、電源ボタン、レリーズボタン、撮影モード選択ダイヤル、カーソルボタンなどで構成される。ユーザーは、これらの操作ボタンを操作して電子カメラ101を使用する。例えば撮影モードダイヤルでは高感度撮影モードやISO感度選択などを行う。尚、これらの操作ボタンの操作情報は制御部108に出力され、制御部108は操作部材111から入力する操作情報に応じて電子カメラ101全体の動作を制御する。
【0028】
メモリカードIF112は、電子カメラ101にメモリカード112aを接続するためのインターフェースである。そして、制御部108はメモリカードIF112を介してメモリカード112aに画像データを読み書きする。
【0029】
以上が電子カメラ101の構成および基本動作である。尚、電子カメラ101ではなく、本発明に係る単体の画像処理装置を構成する場合は、図1において、光学系102,メカニカルシャッタ103,撮像素子104およびA/D変換部105で構成される撮像のためのブロックを取り除いた装置とし、制御部108(画像処理装置の制御部に相当)が撮影済みの画像データをメモリカード112aから画像バッファ106に読み出して、画像処理部107で暗部処理,ノイズ除去処理および負クリップ処理などを実行し、再びメモリカード112aに記憶する動作を行う。
【0030】
[負の輝度値について]
ここで、負の輝度値について図2を用いて説明する。図2は暗部を含むサンプル画像115の行131部分の輝度値の変化を示したグラフである。尚、グラフの縦軸は黒レベル(BL)を0とした輝度値を示し、横軸は行131の水平方向の位置に対応している。図2のグラフにおいて、領域132はサンプル画像115の行131の明るい部分に対応し、輝度値は200程度である。また、領域133はサンプル画像115の行131の暗い部分に対応し、輝度値は10程度である。一般に、黒レベル(BL)は、撮像素子104の遮光領域にある画素の出力を基準にして輝度値を0としているが、ノイズの影響により輝度値が0より負側に振れる場合があり、これを負の輝度値と呼んでいる。
【0031】
図2のグラフにおいて、ノイズがある場合、画像の輝度値がノイズの影響を受けるため、例えばノイズ部分134,135,136および137のように、画像の輝度値が正負に変動する。尚、図2では、わかり易いように、ノイズ部分134,135,136および137を誇張して描いてある。実際にはノイズのレベルは小さいので輝度値が200程度の明るい部分132では問題にはならないが、輝度値が10程度の暗い部分133では、例えばノイズ部分136のように輝度値が黒レベル以下(負の輝度値)になってしまう場合がある。この場合、例えば輝度値が(−10)などの値になり、従来は輝度値の範囲外として黒レベルにクリップされていた。一方、理論的にノイズの平均値は0になると考えると、負の輝度値をクリップした分だけ輝度値が大きくなることを意味する。特に、後段の処理で暗部領域の複数画素を用いて平均化などのノイズ除去処理を行った場合、負の輝度値を有する画素が多く含まれる暗部(画像の暗い部分133など)における平均的な輝度値が大きくなり、実際よりも明るく見えてしまうという問題が生じる。
【0032】
そこで、本実施形態では、閾値(SH)を予め設定して(図2の例では(SH=−3))、処理対象画素の輝度値が閾値未満の場合に閾値にクリップした時のクリップ部分138を増分として保持しておき、輝度値が閾値未満の画素周辺の輝度値が閾値以上の画素の輝度値から保持しておいた増分を減算する処理を行うようになっている。これにより、負の輝度値の画素が多く含まれる画像の暗い部分133における輝度値が大きくならないようにしている。尚、これらの処理は、図1の画像処理部107が行うが、画像処理部107の具体的な処理については後で詳しく説明する。
【0033】
また、図2のグラフではわかり易いようにアナログ波形で示したが、実際にはA/D変換部105でA/D変換して画像バッファ106に取り込まれる画像データは、図3に示すように画素毎に量子化された輝度値を有している。尚、A/D変換部105では、黒レベル以下の負の輝度値も量子化して画像バッファ106に取り込むものとする。これは、例えば撮像素子104から出力される画像信号をA/D変換する際の基準電圧を調整して、黒レベルをA/D変換部105の量子化範囲の最小値としないようにすればよい。
【0034】
図3は、x列y行の二次元状に配置された画素を有する撮像素子104の一部の画素とその輝度値の一例を示した図である。図3のグラフでは、3行目の輝度値の例が示され、例えば画素p(1,3),p(3,3),p(5,3)およびp(7,3)のそれぞれの入力輝度値in(1,3),in(3,3),in(5,3)およびin(7,3)が負の輝度値を有している。ここで、図3に示した画素座標の画素p(x,y)の画像値(入力輝度値)はin(x,y)と記載する。
【0035】
[画像処理部107の構成および動作]
次に、画像処理部107の構成および動作について図4のブロック図を用いて説明する。図4において、画像処理部107は、暗部処理部201と、ノイズ除去処理部202と、黒レベルクリップ処理部203とで構成される。さらに画像処理部107は、黒レベルクリップ処理部203の処理後の画像データに対して、ホワイトバランス処理,色補間処理,ガンマ補正処理,彩度強調処理,輪郭輪郭強調処理、或いはJPEG規格などに準拠した画像圧縮方法で画像データの圧縮処理を施す通常の画像処理部204を有し、画像処理後の画像データは制御部108およびメモリカードIF112を介してメモリカード112aに記憶される。
【0036】
ここで、電子カメラ101ではなく単体の画像処理装置を実現する場合は、メモリカード112aに記憶されている撮影済みの画像データを画像バッファ106に読み出して、暗部処理部201、ノイズ除去処理部202および黒レベルクリップ処理部203などの画像処理を行い、処理後の画像データを再び画像バッファ106に書き込むようにする。尚、図4において、図1と同符号のものは同じものを示す。以下、画像処理部107の各部について順番に説明する。
【0037】
暗部処理部201は、黒レベル未満の負の輝度値を有する暗部の画素においてクリップされた負の成分だけ輝度値が増加するという問題を回避するために、黒レベルよりも小さい閾値を設定し、閾値にクリップした時の増分を周辺画素の輝度値から減算する処理を行う。これにより、暗部における局所的な輝度値の増加を招くことなく輝度値の平均値が適切に保たれた画像に対してノイズ除去処理を行うことができ、暗部における優れたノイズ除去と適切な輝度値の再現を両立させることができる。尚、暗部処理部201の詳細については後で詳しく説明する。
【0038】
ノイズ除去処理部202は、例えば周辺画素の輝度値と平均化するなどの公知のノイズ除去方法を用いたノイズ除去処理を行う。
【0039】
黒レベルクリップ処理部203は、例えば輝度値を輝度0以上の値にクリップする。これは、画像データは黒レベル(輝度値=0)以上の輝度値にクリップして用いられるために行う一般的な処理である。尚、黒レベルクリップ処理部203は、暗部処理部201で行われる閾値を基準としたクリップ処理とは異なり、黒レベルを基準としたクリップ処理である。ここで、暗部処理部201の閾値を黒レベルとしてもよいが、経験的に暗部処理後の暗部の平均値が負側に偏る傾向にあるため、黒レベルよりも小さい閾値でクリップした時の増分を求めるのが好ましい。例えば、閾値は(式1)のように設定する。
閾値SH = (負の係数)×(暗部ノイズの標準偏差) …(式1)
尚、(式1)において、負の係数は(−0.1から−1)程度の値、暗部ノイズの標準偏差は、画像データの遮光領域における画素(OB領域の画素)の出力値の標準偏差である。これらの値は、製造時に計測され電子カメラ101のメモリ109などに記憶されているものとする。そして、画像処理部107はメモリ109に記憶されたこれらのパラメータを読み出して処理を行う。
【0040】
[暗部処理部201の処理]
以下、暗部処理部201の処理について詳しく説明する。尚、暗部処理部201は、クリップ部251と、増分算出部252と、増分保持部253と、増分減算部254とを有する。
【0041】
クリップ部251は、処理対象画素p(x,y)の入力輝度値in(x,y)が予め設定された閾値未満の場合に、処理対象画素p(x,y)の入力輝度値in(x,y)を閾値にクリップする。そして、クリップ後の輝度値を処理対象画素p(x,y)の出力輝度値out(x,y)として出力する。例えば、入力輝度値in(x,y)が(−10)で閾値が(−3)の場合は、輝度値は(−3)にクリップされ、(−3)が出力輝度値となる。
【0042】
増分算出部252は、クリップ部251がクリップ前の輝度値とクリップ後の輝度値との差分を増分値とする。尚、増分値を求める画素の入力輝度値in(x,y)が予め設定された閾値以上の場合には、増分値は0である。また、本実施形態では、増分算出部252は、処理対象画素p(x,y)周辺の複数画素の増分値を平滑した平滑増分値を算出する場合について説明するが、処理対象画素p(x,y)の増分値のみ用いて処理してもよい。増分算出部252の詳細な処理については後で詳しく説明する。
【0043】
増分保持部253は、増分算出部252が求めた増分値を保持する。尚、本実施形態では、増分算出部252が求めた平滑された増分値(平滑増分値)を保持する。以降の説明では増分保持部253が保持する増分値には平滑増分値の場合も含まれるものとする。
【0044】
増分減算部254は、処理対象画素p(x,y)の入力輝度値in(x,y)が閾値以上の場合に、当該輝度値から増分保持部252に保持された増分値を減算する。そして、減算後の輝度値を処理対象画素p(x,y)の出力輝度値out(x,y)として出力する。
【0045】
尚、減算後の輝度値が閾値未満にならないように減算し、減算された増分値は増分保持部252に保持された増分値から差し引かれる。そして、残った増分値は保持され、次の処理対象画素で求められた増分値が加えられて蓄積される。増分減算部254の詳細な処理については後で詳しく説明する。
【0046】
次に、暗部処理部201の具体的な処理例について図5を用いて説明する。図5では、x列y行の二次元状に配置された画素を有する撮像素子104の一部分の10行9列の画素が示されている。ここでは、処理対象画素p(x,y)を3行5列目の画素p(5,3)として、画素p(5,3)の入力輝度値in(5,3)を例に挙げて、暗部処理部201の処理について説明する。また、実際の暗部処理は図2で説明したように、行単位に1行目から順番に処理される。そして、各行においては、列単位に1列目の画素から順番に処理される。
【0047】
(増分算出部252の処理)
図5において、処理対象画素を中心として増分の平滑値を求める画素群を参照画素群と称する。図5の例では、処理対象画素p(5,3)を中心とする列方向の上下2つの画素からなる画素p(5,1)から画素p(5,5)までの5つの画素群が参照画素群である。尚、本実施形態では、参照画素群を処理対象画素p(5,3)を中心とする列方向に上下2画素の領域としたが、これに限らず処理対象画素近傍の複数の画素群を参照画素群としてもよい。例えば図5において、処理対象画素p(5,3)を中心とする周辺の画素p(4,2),p(5,2),p(6,2),p(4,3),p(6,3),p(4,4),p(4,5),p(4,6)からなる9つの画素群を参照画素群としてもよい。或いは、参照画素群を考えずに処理対象画素p(5,3)の増分値のみを求めてもよい。
【0048】
尚、ここでは説明が理解し易いように、入力画像の色成分は考えずにモノクロ画像として説明するが、入力画像がRGBなどの複数色成分を有する場合は各色成分について同様の処理を行えばよい。
【0049】
次に、参照画素群の各画素における増分の求め方について説明する。先ず、画素p(x,y)の入力輝度値in(x,y)と閾値(SH)との差分値を求める(式2)。尚、ここでは、閾値は先に(式1)で説明した値(SH)が予め設定されているものとする。
差分値d = SH−in(x,y) … (式2)
そして、処理対象画素p(x,y)の入力輝度値in(x,y)が閾値未満の場合は差分値dが正(d≧0)となり、差分値dが増分に相当する。逆に、処理対象画素p(x,y)の入力輝度値in(x,y)が閾値以上の場合は差分値dが負(d<0)となり、差分値dは増分とはならないので、処理対象画素p(x,y)の増分値は0である。例えば、図6(a)に示すように、画素p(5,3)の入力輝度値in(5,3)と閾値(SH)との差分値dは、(式2)より(d≧0)となる。逆に、図6(b)に示すように、差分値dは(d<0)となる。
【0050】
このようにして、処理対象画素を中心とする参照画素群の各画素の増分値が求められる。
【0051】
次に、処理対象画素を中心とする参照画素群の増分値を平滑化する方法について説明する。先ず、参照画素群の各画素に対して(式2)の差分値dを計算する。そして、d>0の場合の差分値dを増分として加算し、d≦0の場合は当該画素の増分を0とする処理を行う。この処理を関数max((SH−in(x,y)),0)と記載する。この関数は、差分値d(SH−in(x,y))と0の最大値を出力値とする関数で、例えばd>0の場合は差分値dが出力値となり、d≦0の場合は0が出力値となる。このようにして、各画素の増分のみを抽出する。そして、抽出された各画素の増分が参照画素群内で平滑化され、参照画素群における増分の平滑値(平滑増分値)が求められる。この時、参照画素群の増分値を単純に平均して平滑増分値を求めてもよいが、本実施形態では参照画素群の各画素の増分値を予め設定された重み付け係数で重み付けして平滑増分値を求める。
【0052】
例えば図5に示した処理対象画素p(5,3)を中心とする列方向の上下2つの画素からなる画素p(5,1)から画素p(5,5)までの5つの参照画素群の増分の平滑増分値sを求める場合は、先に説明した関数maxを用いて(式3)のように計算する。
平滑増分値s={ max((SH − in(5,1)),0)
+ 2 × max((SH − in(5,2)),0)
+ 2 × max((SH − in(5,3)),0)
+ 2 × max((SH − in(5,4)),0)
+ max((SH − in(5,5)),0) }/8 …(式3)
(式3)では、画素p(5,2),p(5,3),p(5,4)の3つの画素を2倍の係数、画素p(5,1)およびp(5,5)の2つの画素を1倍の係数にそれぞれ重み付けして1/8することで平滑増分値sを求めている。尚、上記の係数は一例であり、例えば(式4)のような係数で平滑増分値sを計算してもよい。
平滑増分値s={ 0.1 × max((SH − in(5,1)),0)
+ 0.2 × max((SH − in(5,2)),0)
+ 0.4 × max((SH − in(5,3)),0)
+ 0.2 × max((SH − in(5,4)),0)
+ 0.1 × max((SH − in(5,5)),0)} …(式4)
また、参照画素群の画素数が増減した場合でも、(式4)に示すように各画素の係数値の合計が1になるように重み付けを行うことにより、同様に平滑増分値sを求めることができる。
【0053】
そして、求めた参照画素群の増分の平滑増分値sをその時点までに蓄積された蓄積変数stackに加えて増分値の蓄積を行う(式5)。
stack = stack + s … (式5)
このようにして、増分算出部252は、処理対象画素p(x,y)を中心とする参照画素群の増分を平滑化して平滑増分値sを求め、蓄積変数stackに加えて増分の蓄積を行う。ここで、蓄積変数stackは、増分保持部253に対応する。
【0054】
(増分減算部254)
増分減算部254は、処理対象画素p(x,y)の入力輝度値in(x,y)が閾値以上の場合に、当該輝度値から増分保持部252に保持された増分値を減算する。
【0055】
入力輝度値in(x,y)が閾値未満である場合には、増分が増分保持部253で蓄積変数stackに蓄積されるだけなので増分減算部254は処理を行わない。増分減算部254は、入力輝度値in(x,y)が閾値以上の場合に、その時点までに蓄積された増分値を保持する蓄積変数stackの値と、入力輝度値in(x,y)とSHとの差分値(in(x,y)−SH)とを比較して小さい方をオフセット値(offset)とし、入力輝度値in(x,y)からoffset値を減算する。そして、減算後の輝度値を処理対象画素p(x,y)の出力輝度値out(x,y)として出力する。
【0056】
ここで、蓄積変数stackの値と、差分値(in(x,y)−SH)とを比較して小さい方をオフセット値(offset)とする処理を関数min(stack,(in(x,y)−SH))と記載する。
【0057】
また、オフセット値(offset)分だけ蓄積変数stackの値を減らす(式6)。
stack = stack − offset … (式6)
ここで、オフセット値(offset)は閾値以上の輝度値を有する処理対象画素の輝度値から減算される量に相当する。そして、輝度値を減算した量だけ、蓄積変数stackの値を減らし、蓄積変数stackの値が残っている場合は次の処理対象画素(図5の例では次の列の画素p(6,3))の処理に持ち越す。
【0058】
以降、次の列の画素p(6,3)を処理対象画素として、同様の処理を繰り返す。そして、行の最後の列まで処理を終えたら、蓄積変数stackの値を0にリセットして、次の行の処理を同様に繰り返す。
【0059】
尚、上記の例では、蓄積変数stackの値を同じ行の処理で保持し続けるようにしたが、例えば蓄積された増分値が大きい場合はなかなか減らないので、輝度値が閾値以上の画素に影響を与える場合が考えられる。これを回避するために、例えば輝度値が閾値以上の画素が所定数(例えば5個)だけ連続している場合に蓄積変数stackの値を0にリセットするようにしてもよい。これにより、画像の暗部領域から離れた位置にある画素の輝度値に影響を与えないようにすることができ、画像の暗部領域近傍のみ適切に処理できる。
【0060】
このようにして、暗部処理部201は、輝度値が閾値未満の画素を閾値にクリップした時の増分を蓄積して、蓄積された増分(または増分の一部)を輝度値が閾値以上の画素の輝度値から減算するので、閾値未満の輝度値を有する暗部の画素近傍での増分による輝度値の上昇を抑制できる。
[暗部処理部201の処理の流れ]
次に、1画面分の画像データに対して暗部処理部201が行う処理の流れについて図7のフローチャートを用いて説明する。上記では、図5の画素p(5,3)を処理対象画素とした時の処理を説明したが、実際の暗部処理部201は、x列y行の二次元状に配置された画素を有する撮像素子104で撮影された画像データに対して、行単位で1行目から順番に実行し、また各行においては列単位に1列目の画素から順番に同様の処理を繰り返す。ここで、図7において、ステップS102からステップS109までの処理は行単位に行われる処理、ステップS104からステップS108までの処理は列単位に行われる処理に対応する。
【0061】
(ステップS101)1画面分の画像データを取得し、処理を行う行位置を示す変数(y)を初期化する(y=1(1行目))。尚、参照画素群を処理対象画素の上下2画素とする場合、最初の1行目および2行目を処理する場合と、最後の2行分の処理を行う場合は、対象とする参照画素群が存在しないので、例外的な処理を行うものとする。例外的な処理は、例えば撮像素子104のOB領域の画素を利用して、1行目に隣接するOB領域から2行分の画素を選択し、これを参照画素としてしてもよい。或いは、1行目の処理の場合は、下2行分(2行目および3行目)の2画素の輝度値を二重に利用して上下4画素分の参照画素群を構成してもよい。
【0062】
(ステップS102)参照画素群における増分の平滑増分値を蓄積するための変数(蓄積変数:stack)を初期化する(stack=0)。
【0063】
(ステップS103)ステップS102で選択した行の最初の列位置を示す変数(x)を初期化する(x=1(1列目))。
【0064】
(ステップS104)現在の行位置yおよび列位置xで示される処理対象画素p(x,y)の画像データを入力する。ここで、図5に示した画素座標の画素p(x,y)に対応する入力輝度値はin(x,y)と記載する。例えば、行位置がy=3、列位置がx=5の処理対象画素p(5,3)の入力輝度値はin(5,3)となる。
【0065】
(ステップS105)処理対象画素p(x,y)の入力輝度値in(x,y)が予め設定された閾値未満の場合に、処理対象画素p(x,y)の入力輝度値in(x,y)を閾値にクリップする。そして、クリップ後の輝度値を処理対象画素p(x,y)の出力輝度値out(x,y)として出力する。この処理は、クリップ部251の処理に対応する。
【0066】
(ステップS106)処理対象画素p(x,y)を中心とする参照画素群の増分値を平滑化した平滑増分値を算出し、蓄積変数stackに保持されている値に加算する。この処理は、増分算出部252および増分保持部253の処理に対応する。
【0067】
(ステップS107)処理対象画素p(x,y)の入力輝度値in(x,y)が閾値以上の場合に、当該輝度値から増分保持部252に保持された増分値を減算する。そして、減算後の輝度値を処理対象画素p(x,y)の出力輝度値out(x,y)として出力する。この処理は、増分減算部254の処理に対応する。
【0068】
(ステップS108)行位置変数(y)で選択された行の全ての列の画素についてステップS104からステップS107までの処理を終了したか否かを判別する。全て終了した場合はステップS109に進み、終了していない場合はステップS110に進む。
【0069】
(ステップS109)1画面の全ての行についてステップS102からステップS108までの処理を終了したか否かを判別する。全て終了した場合は暗部処理を終了し、終了していない場合はステップS111に進む。
【0070】
(ステップS110)列位置変数(x)を1つインクリメントして次の列を選択する。
【0071】
(ステップS111)行位置変数(y)を1つインクリメントして次の行を選択する。
【0072】
このようにして、暗部処理部201は、処理対象画素p(x,y)の入力輝度値in(x,y)が閾値未満である場合はクリップ処理によって生じる増分を蓄積変数stackに蓄積し、処理対象画素p(x,y)の入力輝度値in(x,y)が閾値以上である場合は蓄積変数stackに蓄積された増分を当該画素の輝度値から減算するので、増分の蓄積が暗部領域で軽減され、局所的な平均値が適切に保たれた画像データを得ることができる。これにより、後のノイズ除去処理を行った場合でも暗部領域の平均的な輝度値の上昇を抑えることができ、暗部における優れたノイズ除去と適切な輝度値の再現とを両立させることができる。
[暗部処理のプログラム]
ここで、図7のフローチャートで行う処理をプログラム言語で表現すると以下のように記述できる。
(プログラム言語での表記の定義)
・暗部処理前の画素p(x,y)の入力輝度値:in(x,y)
・暗部処理後の画素p(x,y)の出力輝度値:out(x,y)
・SH:閾値
・A=B:変数AにBの値を代入する。
・A−=B:変数Aの値を(A−B)に更新する。
・A+=B:変数Aの値を(A+B)に更新する。
・min(a,b,・・・):a,b,・・・の最小値を出力する。
・max(a,b,・・・):a,b,・・・の最大値を出力する。
(プログラム例)
{(行単位の処理a)
stack = 0
{(列単位の処理b)
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
}
}(処理b)
}(処理a)
このように、暗部処理部201の処理は、パソコンの画像処理プログラムとして実行することができる。この場合は、図4で説明したように、画像処理部107の処理全体を画像処理プログラムで実行し、例えば画像バッファ106の代わりに撮影済みの画像データが記憶されたメモリカードなどの記憶媒体をパソコンに装着して暗部処理部201、ノイズ除去処理部202、黒レベルクリップ処理部203およびその他の通常の画像処理部204などの処理を実行して、再びメモリカードに処理後の画像データを記憶する。
【0073】
(応用例)
上記の実施形態では、特にカラー画像を意識せずに説明したが、実際の電子カメラではベイヤー配列と呼ばれるRGB3色のカラーフィルタを通して撮影されるRawデータ(撮像素子104が出力する生の画像データ)を用いている。この場合は、上記の実施形態で説明した処理をRGBの各色成分毎に適用することで同様の効果が得られる。例えば、Rawデータの各色成分毎に暗部処理を施した後でデモザイク処理(ベイヤー配列の画像データから各画素毎にRGBのデータを補間して生成する色補間処理)を行うことにより、暗部のノイズが軽減された画像データに対してデモザイク処理を行うことになるので、本実施形態の暗部処理を施さない場合の従来のデモザイク処理に比べてデモザイク処理後の画像データの精度を向上することができる。
【0074】
図8(a)はベイヤー配列の撮像素子104の画素座標の一例を示した図である。ベイヤー配列の撮像素子104で撮影された画像データは規則的にR画素、G画素およびB画素が配置されているので、例えば図8(b)に示すように、奇数行および奇数列のR画素のみを抽出すれば、R画素だけの画素座標が得られる。そして、これを図5の画素座標に適用して、例えば処理対象画素p(5,5)を中心とする周辺の画素p(5,1),p(5,3),p(5,5),p(5,7),p(5,9)からなる5つの画素群を参照画素群として暗部処理を行う。同様に偶数行および偶数列のB画素についても暗部処理を行うことができる。また、G画素の場合は千鳥状に配置されているので、例えば図8(a)において処理対象画素p(4,3)のG画素の場合、処理対象画素p(4,3)を中心とする周囲の画素p(3,2),p(5,2),p(4,3),p(3,4),p(5,4)からなる5つの画素群を参照画素群として暗部処理を行ってもよいし、処理対象画素p(4,3)を中心とする周囲の画素p(4,1),p(5,2),p(4,3),p(3,4),p(4,5)からなる5つの画素群を参照画素群として暗部処理を行ってもよい。或いは、処理対象画素p(4,3)周辺の別の画素を参照画素群として選択してもよい。
【0075】
このようにして、ベイヤー配列などのRawデータの画像に対しても上記の実施形態と同様の暗部処理を適用することができる。これにより、後のノイズ除去処理を行った場合でも暗部の画素の輝度値の上昇を抑えることができ、暗部における優れたノイズ除去と適切な輝度値の再現とを両立させることができる。さらに、Rawデータの場合はデモザイク処理後の画像データの精度を向上することができる。
【0076】
以上、本発明に係る画像処理装置および画像処理プログラム並びに電子カメラについて、各実施形態で例を挙げて説明してきたが、その精神またはその主要な特徴から逸脱することなく他の多様な形で実施することができる。そのため、上述した実施形態はあらゆる点で単なる例示に過ぎず、限定的に解釈してはならない。本発明は、特許請求の範囲によって示されるものであって、本発明は明細書本文にはなんら拘束されない。さらに、特許請求の範囲の均等範囲に属する変形や変更は、全て本発明の範囲内である。
【符号の説明】
【0077】
101・・・電子カメラ;102・・・光学系;103・・・メカニカルシャッタ;104・・・撮像素子;105・・・A/D変換部;106・・・画像バッファ;107・・・画像処理部;108・・・制御部;109・・・メモリ;110・・・表示部;111・・・操作部材;112・・・メモリカードIF;112a・・・メモリカード;201・・・暗部処理部;202・・・ノイズ除去処理部;203・・・黒レベルクリップ処理部;251・・・クリップ部;252・・・増分算出部;253・・・増分保持部;254・・・増分減算部;p(x,y)・・・画素

【特許請求の範囲】
【請求項1】
複数画素の輝度値を有する画像データの処理対象画素の輝度値が予め設定された閾値未満の場合に、前記閾値を当該処理対象画素の出力輝度値とするクリップ部と、
前記処理対象画素の輝度値に対する前記出力輝度値の増分値を求める増分算出部と、
前記増分算出部が求めた前記増分値を保持する増分保持部と、
前記処理対象画素の輝度値が前記閾値以上の場合に、当該輝度値から前記増分保持部に保持された前記増分値を減算して当該処理対象画素の出力輝度値を求める増分減算部と
を備えることを特徴とする画像処理装置。
【請求項2】
請求項1に記載の画像処理装置において、
前記増分減算部は、前記閾値未満の輝度値を有する画素周辺に配置された前記閾値以上の輝度値を有する画素の輝度値から前記増分保持部に保持された前記増分値を減算して当該処理対象画素の出力輝度値を求める
ことを特徴とする画像処理装置。
【請求項3】
請求項1または2に記載の画像処理装置において、
前記増分減算部は、前記減算後の出力輝度値が前記閾値未満になる場合は、前記閾値を出力輝度値とし、
前記増分保持部は、前記処理対象画素の輝度値が前記閾値以上の場合に、保持している前記増分値から前記増分減算部における減算分を差し引き、新たな増分値として保持する
ことを特徴とする画像処理装置。
【請求項4】
請求項1から3のいずれか一項に記載の画像処理装置において、
前記増分算出部は、前記処理対象画素および当該処理対象画素に隣接する画素の増分値を算出し、算出された各画素の増分値を予め設定された係数で重み付けした平滑増分値を求め、
前記増分保持部は、前記増分算出部が求めた前記平滑増分値を保持する
ことを特徴とする画像処理装置。
【請求項5】
請求項1から4のいずれか一項に記載の画像処理装置において、
前記画像データの複数画素は行列状に配置され、前記クリップ部,前記増分算出部および前記増分減算部は行単位または列単位でそれぞれの処理を行う場合に、
前記増分保持部は、前記行単位の処理または前記列単位の処理が終了する毎に、保持する値を零にリセットする
ことを特徴とする画像処理装置。
【請求項6】
請求項1から5のいずれか一項に記載の画像処理装置において、
前記画像処理装置が出力する画像データに対してノイズ除去処理を行うノイズ除去部と、
前記ノイズ除去処理後の画像データの各画素の輝度値が予め設定された黒レベル未満の場合に、当該画素の輝度値を前記黒レベルとする黒レベルクリップ部と
をさらに備えることを特徴とする画像処理装置。
【請求項7】
請求項1から6のいずれか一項に記載の画像処理装置において、
前記画像データは、RGB3色の画素を有するRaw形式の画像データとし、
前記クリップ部、前記増分算出部、前記増分保持部および前記増分減算部は、前記Raw形式の画像データの各色毎にそれぞれの処理を行う
ことを特徴とする画像処理装置。
【請求項8】
請求項1から7のいずれか一項に記載の画像処理装置において、
前記閾値は、予め設定された負の係数と、画像データの遮光領域における暗部ノイズの標準偏差とを用いて、次式により与えられる
閾値 = (負の係数)×(暗部ノイズの標準偏差)
ことを特徴とする画像処理装置。
【請求項9】
請求項1から8に記載の画像処理装置を搭載する電子カメラであって、
光学系を介して入射する被写体光を二次元状に配置された複数の画素で光電変換した輝度値を有する画像データを前記画像処理装置に出力する撮像部と、
前記撮像部に撮像タイミングを与える操作部材と、
前記画像処理装置が出力する画像データを記憶媒体に記録する記録部と
を設けたことを特徴とする電子カメラ。
【請求項10】
コンピュータで実行可能な画像処理プログラムであって、
複数画素の輝度値を有する画像データの処理対象画素の輝度値が予め設定された閾値未満の場合に、前記閾値を当該処理対象画素の出力輝度値とするクリップ処理と、
前記処理対象画素の輝度値に対する前記出力輝度値の増分値を求める増分算出処理と、
前記増分算出処理で求めた前記増分値を変数として保持する増分保持処理と、
前記処理対象画素の輝度値が前記閾値以上の場合に、当該輝度値から前記変数に保持された前記増分値を減算して当該処理対象画素の出力輝度値を求める増分減算処理と
を有することを特徴とする画像処理プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2012−70119(P2012−70119A)
【公開日】平成24年4月5日(2012.4.5)
【国際特許分類】
【出願番号】特願2010−211709(P2010−211709)
【出願日】平成22年9月22日(2010.9.22)
【出願人】(000004112)株式会社ニコン (12,601)
【Fターム(参考)】