【実施例1】
【0010】
実施例1の概要について説明する。本実施例1では連続して撮像した複数のRAW画像データに対して合成処理を行うことでノイズ低減を行い1枚のRAW画像に対応する画像データを生成する。以下、この1枚のRAW画像に対応する画像データのことを1枚のRAW画像データと称する。その後、生成した1枚のRAW画像データに対して、1画像内でのRAWノイズ低減処理を行うことでよりノイズ低減した画像データを生成する。なお、RAW画像データとは、後述するカラー撮像素子部201とA/D変換部208とを介して得られるデジタル信号のことである。
【0011】
尚、本実施例では連続して撮像した画像データが示す画像のうち、いずれか一つを着目画像と呼び、それ以外を参照画像と呼ぶことにする。
【0012】
図1は本実施例における撮像装置の構成を示す外観図である。
図1(a)は撮像装置の前面を、
図1(b)は撮像装置の背面を示す。撮像装置101は、光学部102、撮像ボタン103、表示部104、操作ボタン105からなる。光学部102はズームレンズ、フォーカスレンズ、ブレ補正レンズ、絞り、シャッターから構成され被写体の光情報を集光する。撮像ボタン103は、ユーザが撮像の開始を撮像装置101に指示するためのボタンである。表示部104は、液晶ディスプレイなどが用いられており、撮像装置101にて処理された画像データの表示や各種データなどを表示する。操作ボタン105は、ユーザが撮像条件のパラメータなどを撮像装置101に指示するためのボタンである。
【0013】
図2は本実施例における撮像装置101の内部構成を示すブロック図である。カラー撮像素子部201は、光学部102にて集光された光情報を電流値へと変換する素子で、カラーフィルタなどと組み合わせることで色情報を取得する。CPU202は、各構成の処理すべてに関わり、ROM(Read Only Memory)203や、RAM(Rondom Access Memory)204に格納された命令を順次に読み込み、解釈し、その結果に従って処理を実行する。また、撮像系制御部205は光学部102に対して、フォーカスを合わせる、シャッターを開く、絞りを調整するなどのCPU202から指示された制御を行う。制御部206は、撮像ボタン103や操作ボタン105からのユーザ指示によって、撮像動作の開始及び終了の制御を行う。キャラクタージェネレーション部207は文字やグラフィックなどを生成する。A/D変換部208は、カラー撮像素子部201にて検知した被写体の光量をデジタル信号値に変換する。画像処理部209は上記のデジタル信号の画像データ(すなわち、RAW画像データ)に対して、画像処理を行う。エンコーダ部210は、画像処理部209にて処理した画像データをJpegなどのファイルフォーマットに変換処理を行う。メディアI/F211は、PC/メディア213(例えば、ハードディスク、メモリカード、CFカード、SDカードなど)に画像データを送受信するためのインタフェースである。システムバス212はデータを送受信するためのバスである。
【0014】
図3は本実施例1における画像処理部209の内部構成ブロック図である。着目RAW画像データ記憶部301は複数のRAW画像データのうち着目画像のRAW画像データ(以下、着目RAW画像データという)を記憶する。参照RAW画像データ記憶部302は、参照画像のRAW画像データ(以下、参照RAW画像データという)を記憶する。
【0015】
出力RAW画像データ記憶部303は後述する合成処理を行った結果得られるRAW画像データを記憶する。パラメータ記憶部304は合成処理や1枚の画像内でのノイズ低減処理に必要なパラメータを記憶する。合成重みデータ記憶部305は合成時の合成重みデータを記憶する。合成重みデータとは、合成処理によるノイズ低減効果の度合い(補正量)を示す指標となるデータである。詳細は後述する。出力画像データ記憶部306は各処理部が出力した画像データを記憶する。複数RAW画像合成処理部307は着目RAW画像データ記憶部301に記憶している着目RAW画像データと参照RAW画像データ記憶部302に記憶している参照RAW画像データとを合成する。そして、合成処理によって得られる合成画像データ(RAW画像データ)を出力RAW画像データ記憶部303に記憶する。また、複数RAW画像合成処理部307は、合成重みデータを合成重みデータ記憶部305に記憶する。RAWノイズ低減処理部308は合成重みデータ記憶部305に記憶している合成重みデータを用いて、出力RAW画像データ記憶部303に記憶している合成後のRAW画像データに対して1枚の画像内のRAWノイズ低減処理を行う。RAWノイズ低減処理部308は、出力のRAW画像データを出力RAW画像データ記憶部303に記憶する。現像処理部309は出力RAW画像データ記憶部303に記憶しているRAWノイズ低減処理後のRAW画像データに対して各種の現像処理をする。例えば、ホワイトバランス、デモザイキング、色変換、ガンマ、シャープネス、Jpeg変換などの処理を行い、現像処理後の画像データを出力画像データ記憶部306に記憶する。
【0016】
図4は本実施例1における全体処理フローを示した図である。まずステップS401において、制御部206は、ユーザが操作ボタン105を介して指示した絞り値、焦点距離などの撮像条件を設定する。ステップS402において、制御部206は、撮像ボタン103がユーザに押されたかどうかを判定する。押された場合にはステップS403に進み、押されていない場合にはステップS401に戻る。
【0017】
ステップS403で撮像系制御部205は、同一被写体に対して連続での撮像を実行する。画像処理部209は、撮像したRAW画像データのうち着目画像のRAW画像データを着目RAW画像データ記憶部301に記憶し、さらに、参照画像のRAW画像データを参照RAW画像データ記憶部302に記憶する。
【0018】
ステップS404で、複数RAW画像合成処理部307は、着目画像のRAW画像データと、参照画像のRAW画像データと、パラメータ記憶部304に記憶している撮像センサのノイズ特性データとを用いて複数枚合成処理を行う。複数枚合成処理の詳細は後述する。複数RAW画像合成処理部307は、複数枚合成処理の結果得られるRAW画像データを出力RAW画像データ記憶部303に記憶する。さらに、複数RAW画像合成処理部307は合成時の合成重みデータを合成重みデータ記憶部305に記憶する。
【0019】
ステップS405で、RAWノイズ低減処理部308は、出力RAW画像データ記憶部303に記憶しているRAW画像データと合成重みデータ記憶部305に記憶している合成重みデータとを用いて、RAWノイズ低減処理を行う。RAWノイズ低減処理の詳細については後述する。RAWノイズ低減処理部308は、RAWノイズ低減処理の結果得られるRAW画像データを出力RAW画像データ記憶部303に記憶する。
【0020】
ステップS406で、現像処理部309は、出力RAW画像データ記憶部303に記憶しているRAW画像データに対して現像処理を行う。現像処理部309は、現像処理の結果得られる画像データを出力画像データ記憶部306に記憶する。ステップS407で、制御部206は、出力画像データ記憶部306に記憶している出力画像データを表示部104に表示する。最後に、ステップS408で、制御部206は、出力画像データ記憶部306に記憶している画像データをメディアI/F211を介して、PC/メディア213に出力する。
【0021】
<複数枚合成処理>
図4におけるS404の複数枚合成処理について説明する。複数枚合成処理は着目画像データと1つ以上の参照画像データとを用いて画像データを合成することによってノイズ低減させる処理である。すなわち、複数枚合成処理は、第1のノイズ低減処理ということもできる。以下では、説明の簡素化のため、合成対象のデータを単に着目画像と参照画像と称する。一般的に、着目画像と参照画像とを単純に平均化すればノイズを低減させることができる。しかしながら、連続撮像した場合、撮像装置の位置ずれや動被写体の移動などによって各画像の絵柄が一致しない場合、単純な平均化を行うと多重像や暈けといった画質劣化が生じてしまう。そこで、着目画像の注目画素を含む画像領域(以下、ブロック領域)と参照画像のブロック領域ごとの比較(以下、ブロックマッチング)を行うことで合成を行う。
【0022】
図5は複数枚合成処理S404の処理フローである。
図7は複数枚合成処理を説明するための図である。
図7(a)は、着目画像701を示し、
図7(b)は参照画像702を示す。また、着目画像701のうち、処理対象となる画素の位置を703で示す。また、この着目画像701の処理画素位置703に対応する、参照画像702の探索領域を704で示す。また、着目画像701の処理画素位置703に対応するブロック領域を705で示す。また、参照画像702の探索位置707に対応するブロック領域を706で示す。
【0023】
次に、ブロックマッチングの概要について説明する。ブロックマッチングは、着目画像の各画素を処理画素として順次処理を行う。
図7の例では、着目画像701の処理画素位置703に対応する探索範囲が決定される。
図7の例では、探索範囲は着目画像データの処理画素位置に対応する位置にある参照画像の画素を中心に5×5の画素と決定されているものとする。そして、処理画素位置703に対応するブロック領域705と、探索位置707に対応するブロック領域706とのブロックマッチングを行う。ブロックマッチングは、探索範囲内における各探索位置に対して行われることになる。
【0024】
次に、複数枚合成処理の流れを
図5を参照して説明する。
【0025】
ステップS501で複数RAW画像合成処理部307は、パラメータ記憶部304に記憶している探索範囲を設定する。
図7の例では、探索範囲は着目画像の処理対象位置に対応する位置にある参照画像の画素を中心に5×5の画素と設定される。尚、一般的なRAW画像データは、1画素につきR,G,Bのうち1色しかないBayer配置である。そのため、探索位置707は、処理画素位置703と同じ色の必要がある。すなわち、
図7の例では、探索範囲704に含まれるRの画素を示す9画素分の探索位置に対してブロックマッチングが行われる。
【0026】
ステップS502で複数RAW画像合成処理部307は出力画素値と合成重みデータとを1に初期化する。
【0027】
ステップS503で複数RAW画像合成処理部307は参照画像データ記憶部302に記憶している参照RAW画像データのうち1つの画像データを読み込む。
【0028】
ステップS504で複数RAW画像合成処理部307は処理画素位置の初期化を行う。
【0029】
ステップS505で複数RAW画像合成処理部307は探索範囲内で最大類似度となる出力画素値及び類似度を決定する。詳細は後述する。
【0030】
ステップS506で複数RAW画像合成処理部307はステップS505にて決定した出力画素値と類似度とを用いて、出力画素値及び合成重みデータの更新を行う。詳細は後述する。
【0031】
ステップS507で複数RAW画像合成処理部307は着目画像データのすべての処理画素位置に対して、ステップS505〜S506の処理が行われたかどうかを判定する。すべての処理画素位置に対して処理が行われた場合には、ステップS509に進み、そうでない場合にはステップS508に進む。
【0032】
ステップS508で複数RAW画像合成処理部307は処理画素位置の更新を行い、ステップS505に処理を進める。
【0033】
ステップS509で複数RAW画像合成処理部307は、参照RAW画像データ記憶部302に記憶しているすべての参照RAW画像データに対して、ステップS504〜S508の処理が行われたかどうかを判定する。処理が行われた場合にはステップS511に進み、そうでない場合にはステップS510に進む。
【0034】
ステップS510で複数RAW画像合成処理部307は参照RAW画像データ記憶部302に記憶している参照RAW画像データのうち未処理のRAW画像データを読み込み、ステップS504に処理を進める。
【0035】
ステップS511で複数RAW画像合成処理部307は、出力RAW画像データを出力RAW画像データ記憶部303に出力する。出力RAW画像データは、ステップS506で出力画素値の更新が行われた(すなわち、合成が行われた結果得られた)RAW画像データのことである。
【0036】
<探索範囲内で最大類似度となる画素値及び類似度を算出>
図5のステップS505の探索範囲内で最大類似度となる出力画素値及び類似度を決定する処理について説明する。
図6は、ステップS505の内部処理フローを示している。
図6の処理は、1つの処理対象の画素に対して行われる。
【0037】
本実施例では、着目画像と参照画像について、探索領域内においてブロック同士の最小の誤差を決定し、その結果に基づいて最大類似度を決定する。
【0038】
ステップS601で複数RAW画像合成処理部307はパラメータ記憶部304に記憶しているブロックサイズNb及び重み制御パラメータh(詳細は後述する)を設定する。
【0039】
ステップS602で複数RAW画像合成処理部307は最小誤差値Cminを、取りうる値の範囲の最大値に初期化する。ステップS603で複数RAW画像合成処理部307は出力画素値oをゼロに初期化する。ステップS604で複数RAW画像合成処理部307は、現在着目している処理画素に対応する探索範囲の中の探索位置iを初期化する。ステップS605で複数RAW画像合成処理部307は式1に基づいて誤差Ciを決定する。
【0040】
【数1】
【0041】
ここで、b
tは着目画像のブロック領域であり、b
r,iは参照画像の探索位置iにおけるブロック領域である。
【0042】
ステップS606で複数RAW画像合成処理部307はステップS605にて決定したCiと最小誤差値Cminとを比較する。CiがCminよりも小さい場合にはステップS607に進み、そうでない場合にはステップS609に進む。
【0043】
ステップS607で複数RAW画像合成処理部307は最小誤差値CminをCiに更新する。
【0044】
ステップS608で複数RAW画像合成処理部307は出力画素値を探索位置iにおける画素値に更新する。
【0045】
ステップS609で複数RAW画像合成処理部307はすべての探索位置で処理をしたかどうかを判定する。すべての探索位置で処理を行った場合にはステップS611に進む。そうでない場合にはステップS610に進む。
【0046】
ステップS610で複数RAW画像合成処理部307は探索位置の更新を行う。
【0047】
ステップS611で複数RAW画像合成処理部307は、式2に基づいて最大類似度となる類似度sを算出する。
【0048】
【数2】
【0049】
<重み制御パラメータh>
図6のステップS601にて設定する重み制御パラメータhについて説明する。
図8は、式2で重み制御パラメータhを変化させて、最小誤差値Cminとしての誤差Cと、類似度sとをプロットした例を示すものである。
図8に示すように、hの値が大きくなるほど誤差に対して類似度sが大きくなる。一方、一般的にまったく同じ被写体を撮像したとしてもISO感度が大きくなれば、ノイズ量が増加する。その結果、式1によって決定される誤差は、ノイズ量が増加するに従って大きくなる。そのため、本実施例では、同一被写体に対してノイズ量に寄らず同様の類似度を決定するために撮像時のノイズ量すなわちISO感度に応じてhの値を変化させる。
【0050】
<出力画素値及び合成重みデータの更新>
ステップS506の出力画素値及び合成重みデータの更新について説明する。ステップS505にて決定した出力画素値をv、類似度をsとすると、更新後の出力画素値O(x,y)は式3に示すように出力画素値と類似度との加重加算で得られる。また、更新後の合成重みデータα(x,y)は、式4で求められる。ステップS506の更新は参照画像データ毎にそれぞれ行われる。
O(x,y)+=v・s (式3)
α(x,y)+=s (式4)
【0051】
<RAWノイズ低減処理>
図4のステップS405のRAWノイズ低減処理について説明する。RAWノイズ低減処理は、従来の1枚の画像内でのノイズ低減処理方法に加え、ステップS404において決定した合成重みデータαを用いることで、より効果的なノイズ低減処理を行う。具体的には、ステップS404において決定した合成重みデータαは出力RAW画像データの各画素におけるノイズの低減効果になる。そこで、複数枚合成処理によってノイズ低減効果が小さかった画素については、1枚の画像内でのノイズ低減処理の効果を大きく設定し、大きかった画素については、1枚の画像内でのノイズ低減処理の効果を小さく設定する。このように処理することによって、領域によってノイズ低減効果が異なることを避けることができる。本実施例では、連続して撮像した複数のRAW画像データを用いて合成処理を行っている。この複数のRAW画像データは互いに類似しているので、複数のRAW画像データ同士を合成することによってノイズ低減できた画素については、そのノイズ低減された画素を使用する。一方、複数のRAW画像データ同士を合成することによってノイズ低減できなかった画素については、1枚の画像データ内でのノイズ低減処理を行う。このように、本実施例によれば各画素について同等のノイズ低減効果を得ることが可能となる。なお、ステップS405の1枚の画像データ内のノイズ低減処理を第2のノイズ低減処理という。
【0052】
図9は
図4のステップS405のRAWノイズ低減処理の内部処理のフローを示した図である。
【0053】
ステップS901でRAWノイズ低減処理部308は処理に必要となるパラメータをパラメータ記憶部304から取得して設定する。
【0054】
ステップS902でRAWノイズ低減処理部308は出力RAW画像データ記憶部303に記憶している、ステップS404において複数枚合成して得られたRAW画像データを読み込む。
【0055】
ステップS903でRAWノイズ低減処理部308は処理画素位置の初期化を行う。
【0056】
ステップS904でRAWノイズ低減処理部308は処理画素位置に対してノイズ低減処理を行う。詳細は後述する。
【0057】
ステップS906でRAWノイズ低減処理部308はすべての処理画素位置に対して、ステップS904のノイズ低減処理が行われたかどうかを判定する。すべての処理画素位置に対してノイズ低減処理が行われた場合にはステップS908に進み、そうでない場合にはステップS907に進む。
【0058】
ステップS907でRAWノイズ低減処理部308は処理画素位置の更新を行い、ステップS904に戻る。
【0059】
ステップS908でRAWノイズ低減処理部308は処理結果のRAW画像データを出力RAW画像データ記憶部303に出力する。
【0060】
<ノイズ低減処理>
本処理では、ステップS904のノイズ低減処理として、Non−Local−Means(以下、NLM)法と呼ばれる手法を用いる。この手法は、ノイズ低減対象となる着目画素を含む、着目画素の周辺に存在する複数の参照画素の画素値に適応的な重みを掛け、その結果を全て加算した結果で着目画素の画素値を置き換える事でノイズを低減する。参照画素の画素数をN
S、参照画素の画素値をI
j(j=1〜N
S)、参照画素の重みをw
j(j=1〜N
S)とすると、ノイズ低減処理後の着目画素の画素値I
newは式5になる。
【0061】
【数3】
【0062】
次に、参照画素の重みの決定方法について、
図10および
図11を参照して説明する。
【0063】
図10(a)は、1枚の画像データ1001を示す。画像データ1001の左上の画素を原点として各画素の画素値をI(x、y)と表すものとする。ここで、1002は着目画素であり、その画素値はI(4、4)である。1003は着目領域であり、ノイズ低減対象となる着目画素1002を中心とした5×5画素の矩形領域である。1004は参照画素であり、着目画素1002を含む5×5画素(N
S=25)の矩形領域内の画素である。1005は、参照画素I(2,2)の参照領域であり、参照画素I(2,2)を中心とし、着目領域と同サイズの5×5画素の矩形領域である。尚、参照領域は参照画素毎に存在するが、ここでは参照画素I(2,2)の参照領域だけ示している。
【0064】
参照画素I(2、2)の重みを求めるために、まず、着目領域1003と当該参照画素I(2、2)の参照領域1005とを比較して類似度を算出する。尚、類似度は所望の方法で求めてよい。例えば、
図10(b)のように、着目領域1003の画素をb
s(p,q)、参照領域1005の画素をb
j(p,q)(j=1〜N
S)とする。そして、着目領域1003と参照領域1005との空間的に対応する画素の差を誤差とすると、誤差C
jは式6になる。
【0065】
【数4】
【0066】
誤差C
jは値が小さいほど着目領域と参照領域の類似度が高くなる。そこで、誤差に応じて、重みを決定する。重みは
図11に示す関数のように誤差C
jが小さいほど重みが大きく、誤差C
jが大きいほど重みが小さくなるように決定すればよく、例えば式7で定まる。
【0067】
【数5】
【0068】
hは重みの大きさを制御する変数であり、hを大きくすると重みを大きくなりノイズ低減効果が大きくなる。一方、hを小さくすると重みが小さくなり、ノイズ低減効果が小さくなる。ここで、hは画像データ中に含まれるノイズ量に応じて変化させることで効果的にノイズ低減させることができる。そこで、本実施例では、ステップS404において複数枚合成処理において合成処理した際の合成重みデータに応じて、hの値を変化させる。ここで、ステップS404において出力する合成重みデータは、合成に使用した画像の枚数となる。この時、n枚の画像を合成した際のノイズの標準偏差σ‘は1枚のノイズの標準偏差をσとすると、式8のようになる。
【0069】
【数6】
【0070】
そこで、処理画素位置jにおける合成重みデータをα(j)とすると、式7を式9のように変更する。
【0071】
【数7】
【0072】
以下同様に、着目領域1003と各参照画素の参照領域とを順次比較していくことで、各参照画素の重みが得られる。そして、得られた重みを式5に適用してノイズ低減後の画素値を得る。
【0073】
尚、本実施例におけるノイズ低減処理は、参照画素の重みを着目領域と参照領域の誤差及び合成重みデータに基づいて決まる処理であればよく、誤差や重みの算出方法などはここで説明した方法に限られるものではない。
【0074】
以上、説明したように、本実施例ではまず複数枚の画像データの合成によりノイズ低減を行い、さらに、合成結果に基づいて1枚の画像データのノイズ低減を行う。これにより、ノイズ低減効果の低下やアーティファクト発生などの画質障害を軽減することが可能となる。さらに、1枚の画像データのノイズ低減は合成後の画像データのみに行うため処理負荷も軽減することができる。
【0075】
<その他の実施例>
上記の実施例においては、デモザイク処理(画素補間処理)前のベイヤ画像を合成する例を説明した。デモザイク処理前のベイヤ画像を合成することによってデモザイク時に生じ得る画像劣化を防止することができる。しかしながら、本発明は、1枚の画像内でのノイズ低減処理を行う前の画像データ同士を合成し、合成して得られた画像データに対して1枚の画像内でのノイズ低減処理を行う場合に適用可能である。例えば、デモザイク処理後のRGB画像データ同士を合成する処理であってもよい。
【0076】
また、積層型撮像センサや3CCDセンサなどのようにセンサから得られる画素がRGBプレーンを有する画像データ同士を合成し、合成して得られた画像データに対して1枚の画像内でのノイズ低減処理を行ってもよい。この場合、合成処理における探索範囲や、ノイズ低減処理における参照画素の設定を合成する画像データに応じて設定し、その他の処理は同様に行えばよい。
【0077】
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。