画像処理装置および画像処理方法
【課題】被写体が大部分を占める場合にもNR効果を挙げつつ、正確性の低い動き補償画像がターゲット画像に加算されてしまう可能性を低減する。
【解決手段】撮像装置10は、ターゲットブロック毎にローカル動きベクトルとして算出するとともに、ローカル動きベクトルとグローバル動きベクトルとの一致度合いを示す指標値をターゲットブロック毎に算出する動きベクトル算出部と、ローカル動きベクトルに基づいて参照ブロックを動き補償した動き補償ブロックをターゲットブロック毎に生成することにより、動き補償画像を生成する動き補償画像生成部と、動き補償画像とターゲット画像との相関性をターゲットブロック毎に判定する相関性判定部と、相関性と指標値とに基づいて、ターゲット画像と動き補償画像とを加算する加算部と、を備える。
【解決手段】撮像装置10は、ターゲットブロック毎にローカル動きベクトルとして算出するとともに、ローカル動きベクトルとグローバル動きベクトルとの一致度合いを示す指標値をターゲットブロック毎に算出する動きベクトル算出部と、ローカル動きベクトルに基づいて参照ブロックを動き補償した動き補償ブロックをターゲットブロック毎に生成することにより、動き補償画像を生成する動き補償画像生成部と、動き補償画像とターゲット画像との相関性をターゲットブロック毎に判定する相関性判定部と、相関性と指標値とに基づいて、ターゲット画像と動き補償画像とを加算する加算部と、を備える。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像処理装置および画像処理方法に関し、特に、画像に含まれるノイズを低減する画像処理装置および画像処理方法に関する。
【背景技術】
【0002】
画像の撮影において、連続して撮影された複数の画像(フレーム)を重ね合わせて、ノイズが低減された画像を得る技術が知られている。例えば、処理対象となる画像(ターゲット画像)に、ターゲット画像の前または後に連続して撮影され、動き検出および動き補償によって位置合わせされた複数の画像(参照画像)を重ね合わせた場合、略同一の画像が時間方向で積分されることになるため、各画像にランダムに含まれるノイズが相殺され、結果としてノイズが低減される。以下、このような方法によるノイズ低減(NR:Noise Reduction)を、フレームNRという。
【0003】
前記動き補償の方法は様々であるが、1画素ごとに動き補償をすると処理時間およびコストが大きいので、画像を複数個のブロックに分割してブロックごとに動き補償を行う方法がある。また、前記分割されたブロックごとに動きベクトルを算出すれば、動きベクトルが求まると同時に動き補償ブロックを生成することができる。
【0004】
ここで、ターゲット画像内に設定された多数のターゲットブロックの画像内容との相関が最も強いとして検出された参照ブロックの位置は、参照画像におけるターゲットブロックの位置(動いた後の位置)として検出される。検出された参照ブロックは、動き補償ブロックと認識される。検出された動き補償ブロックの位置と、ターゲットブロックの位置との間の位置ずれ量は、方向成分を含む量としての動きベクトル(ローカル動きベクトル)として検出され得る。
【0005】
従来、2画像間の画像全体に加わっている変形を表わすグローバルモーションを算出することが行なわれている。このグローバルモーションの算出方法は、複数フレーム間の画像情報を用いて計算する方法や、ジャイロ素子など画像情報以外の情報を元に算出する方法がある。グローバルモーションは、通常は、画像の静止画部分としての背景の動きおよび動き量を示すものとなる。
【0006】
グローバルモーションを用いた技術としては、例えば、画像内における背景静止画部分と動被写体部分を分離し、グローバルモーションから生成したグローバル動きベクトルと一致したローカル動きベクトルを用いて動き補償画像(MC画像)を生成し、動き補償画像とターゲット画像とを重ね合わせる技術について開示されている(例えば、特許文献1参照)。この技術では、グローバル動きベクトルとローカル動きベクトルとの一致度合いをGMV(グローバル動きベクトル)ヒット率(単に、「ヒット率」と言う場合もある。)として使用している。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開2009−290827号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
しかしながら、上記した技術には、例えば、撮影領域内に背景が大部分を占める場合(例えば、夜景撮影を行った場合など)には、高いNR効果を得ることができるが、撮影領域内に被写体が大部分を占める場合などには、NR効果を挙げることが難しいという問題があった。これは、例えば、上記した技術によれば、GMVヒット率が低い場合には一律的にターゲット画像に対する動き補償画像の加算を積極的に行わないこととしていることが要因の1つである。したがって、GMVヒット率が高くなり易い背景については加算が積極的に行われる一方、GMVヒット率が低くなり易い被写体(以下、「動体」とも言う。)については、ターゲット画像と動き補償画像との相関性が高い場合であっても加算が行われず、高いNR効果を期待できない。
【0009】
また、撮影領域内に存在する物体が影に隠れてしまった場合や変形した場合など、正確性の高い動き補償画像が存在しない場合にも関わらず、GMVヒット率が高く算出された場合などには、正確性の低い動き補償画像がターゲット画像に加算されてしまい、透けやボケのある画像が生成されてしまうという問題があった。これは、例えば、上記した技術によれば、特徴点がない領域は背景に相当し、特徴点がある領域は被写体に相当するという近似が行われるため、特徴点がない被写体については背景と認識され、グローバル動きベクトルを用いた動き補償画像がターゲット画像に対して積極的に加算されてしまうことが要因の1つである。
【0010】
そこで、本発明は、上記問題に鑑みてなされたものであり、本発明の目的とするところは、被写体が大部分を占める場合にもNR効果を挙げつつ、正確性の低い動き補償画像がターゲット画像に加算されてしまう可能性を低減することが可能な、新規かつ改良された画像処理装置および画像処理方法を提供することにある。
【課題を解決するための手段】
【0011】
上記課題を解決するために、本発明のある観点によれば、参照画像のターゲット画像に対する動きをターゲットブロック毎にローカル動きベクトルとして算出するとともに、ローカル動きベクトルとグローバル動きベクトルとの一致度合いを示す指標値を上記ターゲットブロック毎に算出する動きベクトル算出部と、上記動きベクトル算出部により算出された上記ローカル動きベクトルに基づいて参照ブロックを動き補償した動き補償ブロックを上記ターゲットブロック毎に生成することにより、動き補償画像を生成する動き補償画像生成部と、上記動き補償画像生成部により生成された上記動き補償画像と上記ターゲット画像との相関性を上記ターゲットブロック毎に判定する相関性判定部と、上記相関性判定部により判定された上記相関性と上記動きベクトル算出部により算出された上記指標値とに基づいて、上記ターゲット画像と上記動き補償画像とを加算する加算部と、を備える、画像処理装置が提供される。
【0012】
上記画像処理装置は、上記相関性判定部により判定された上記相関性と上記動きベクトル算出部により算出された上記指標値とに基づいて加算率を算出する加算率計算部をさらに備え、上記加算部は、上記加算率計算部により算出された上記加算率に基づいて、上記ターゲット画像と上記動き補償画像とを加算することとしてもよい。
【0013】
上記加算率計算部は、上記相関性が第1閾値よりも大きい場合であり、かつ、上記指標値が第2閾値よりも大きい場合には、上記相関性を一定とした場合に、上記指標値の上昇に伴って上記加算率を上昇させることとしてもよい。
【0014】
上記加算率計算部は、上記相関性が第1閾値よりも小さい場合であり、かつ、上記指標値が第2閾値よりも大きい場合には、上記相関性が上記第1閾値よりも大きい場合であり、かつ、上記指標値が上記第2閾値よりも大きい場合と比較して、上記相関性を一定とした場合に、上記指標値の増加に伴う上記加算率の上昇を抑制させることとしてもよい。
【0015】
上記加算率計算部は、上記相関性が第1閾値よりも大きい場合であり、かつ、上記指標値が第2閾値よりも大きい場合には、上記指標値を一定とした場合に、上記相関性に関わらず上記加算率を一定とすることとしてもよい。
【0016】
上記加算率計算部は、上記相関性が第1閾値よりも大きい場合であり、かつ、上記指標値が第2閾値よりも小さい場合には、上記指標値を一定とした場合に、上記相関性の上昇に伴って上記加算率を上昇させることとしてもよい。
【0017】
また、上記課題を解決するために、本発明の別の観点によれば、参照画像のターゲット画像に対する動きをターゲットブロック毎にローカル動きベクトルとして算出するとともに、ローカル動きベクトルとグローバル動きベクトルとの一致度合いを示す指標値を上記ターゲットブロック毎に算出するステップと、上記ローカル動きベクトルに基づいて参照ブロックを動き補償した動き補償ブロックを上記ターゲットブロック毎に生成することにより、動き補償画像を生成するステップと、上記動き補償画像と上記ターゲット画像との相関性を上記ターゲットブロック毎に判定するステップと、上記相関性と上記指標値とに基づいて、上記ターゲット画像と上記動き補償画像とを加算するステップと、を含む、画像処理方法が提供される。
【発明の効果】
【0018】
以上説明したように本発明によれば、被写体が大部分を占める場合にもNR効果を挙げつつ、正確性の低い動き補償画像がターゲット画像に加算されてしまう可能性を低減することができる。
【図面の簡単な説明】
【0019】
【図1】本発明の実施形態に係る撮像装置の機能構成を示すブロック図である。
【図2】本発明の実施形態におけるブロックマッチングについての説明図である。
【図3】本発明の実施形態におけるフレームNR処理の概念図である。
【図4】本発明の実施形態における階層化ブロックマッチングについての説明図である。
【図5】本発明の実施形態に係る撮像装置における動き補償部の機能構成を示すブロック図である。
【図6】本発明の実施形態に係る撮像装置において動き補償部に含まれるターゲットブロックバッファ部の機能構成を示すブロック図である。
【図7】本発明の実施形態に係る撮像装置において動き補償部に含まれる参照ブロックバッファ部の機能構成を示すブロック図である。
【図8】本発明の実施形態に係る撮像装置における画像重ね合わせ部の機能構成を示すブロック図である。
【図9】本発明の実施形態に係る撮像装置により実行される主要な処理の流れを示すフローチャートである。
【図10】本発明の実施形態におけるSADテーブルの内容を示す図である。
【図11】本発明の実施形態における背景一致度合い評価処理の流れを示すフローチャートである。
【図12】本発明の実施形態における背景一致度合い評価処理の流れを示すフローチャートの続きである。
【図13】本発明の実施形態における加算率計算部のハードウェア構成例を示す図である。
【図14】本発明の実施形態における加算率計算部のハードウェア構成例を示す図である。
【図15】本発明の実施形態における画素値の輝度値とノイズ標準偏差との関係について示す図である。
【図16】本発明の実施形態におけるノイズ標準偏差と差分値と加算率との関係の一例を示す図である。
【図17】本発明の実施形態におけるノイズ標準偏差と差分値と加算率との関係の一例を示す図である。
【図18】本発明の実施形態におけるノイズ標準偏差と差分値と加算率との関係の一例を示す図である。
【図19】本発明の実施形態における分散値の段階幅と加算率との関係の一例を示す図である。
【図20】本発明の実施形態におけるヒット率とゲインと分散値の段階幅との関係の一例を示す図である。
【図21】基礎加算率とNR効果との関係の一例を示す図である。
【図22】本発明の実施形態における平均値と分散値とを使用して、相関性フラグに値を設定する手法の一例を示す図である。
【図23】本発明の実施形態におけるヒット率および相関性フラグと加算率との関係を示す図である。
【図24】本発明の実施形態におけるヒット率および相関性フラグと加算率との関係の一例を示す図である。
【図25】本発明の実施形態におけるブロックマッチングから加算処理までの流れを示すフローチャートである。
【図26】本発明の実施形態におけるターゲット画像と動き補償画像との重ね合わせの一例を説明するための図である。
【発明を実施するための形態】
【0020】
以下に添付図面を参照しながら、本発明の好適な実施の形態について詳細に説明する。なお、本明細書および図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
【0021】
なお、説明は以下の順序で行うものとする。
1.実施形態
1−1.撮像装置の全体構成
1−2.フレームNR処理について
1−3.階層化ブロックマッチング処理について
1−4.フレームNR処理の詳細
2.まとめ
【0022】
<1.実施形態>
<1−1.撮像装置の全体構成>
まず、本発明の実施形態に係る撮像装置の構成について説明する。本発明の実施形態において、撮像装置は、画像処理装置の一例に相当するものである。
【0023】
図1は、本発明の実施形態に係る撮像装置10の機能構成を示すブロック図である。撮像装置10は、静止画または動画を撮像してデジタル方式の画像データとして記録媒体に記録する機能を有する、例えばデジタルカメラなどの任意の電子機器でありうる。
【0024】
図1を参照すると、撮像装置10は、制御部1、操作部3、メモリ4、ストレージ5、撮像光学系10L、タイミングジェネレータ12、撮像素子11、信号処理部13、RAW/YC変換部14、動き補償部16、画像重ね合わせ部17、静止画コーデック18、動画コーデック19、NTSCエンコーダ20、およびディスプレイ6を含む。これらの各構成要素は、システムバス2を介して相互に接続される。
【0025】
制御部1は、撮像装置10の各部の動作を制御する。制御部1は、メモリ4に格納されたプログラムに基づいて動作することによって、制御のために必要な各種の演算処理を実行するCPU(Central Processing Unit)でありうる。制御部1は、演算処理のための一時格納領域としてメモリ4を用いてもよい。なお、制御部1が動作するためのプログラムは、メモリ4に予め書き込まれたものであってもよく、ディスク状記録媒体またはメモリカードなどのリムーバブル記憶媒体に格納されて撮像装置10に提供されるものであってもよい。また、制御部1が動作するためのプログラムは、LAN(Local Area Network)、インターネット等のネットワークを介して撮像装置10にダウンロードされるものであってもよい。
【0026】
操作部3は、撮像装置10を操作するためのユーザインターフェースとして機能する、操作部3は、例えば、撮像装置10の外装に設けられたシャッターボタンなどの操作ボタン、タッチパネル、またはリモートコントローラなどでありうる。操作部3は、ユーザの操作に基づいて、撮像装置10の起動および停止、静止画もしくは動画の撮影開始および終了、または撮像装置10の各種機能の設定などの操作信号を制御部1に出力しうる。
【0027】
メモリ4には、撮像装置10の処理に関するデータが格納される。メモリ4は、例えば、フラッシュROM(Read Only Memory)またはDRAM(Dynamic Random Access Memory)などの半導体メモリでありうる。メモリ4には、例えば、制御部1が用いるプログラム、および画像処理機能によって処理される画像信号が、一時的または継続的に格納されうる。メモリ4に格納される画像信号は、例えば、後述する基底面および縮小面のターゲット画像、参照画像、およびNR画像でありうる。
【0028】
ストレージ5には、撮像装置10によって撮影された画像が、画像データとして格納される。ストレージ5は、例えば、フラッシュROMなどの半導体メモリ、BD(Blu-ray Disc)、DVD(Digital Versatile Disc)、もしくはCD(Compact Disc)などの光ディスク、またはハードディスクなどでありうる。ストレージ5は、撮像装置10に内蔵される記憶装置であってもよく、メモリカードなどの撮像装置10に着脱可能なリムーバブルメディアであってもよい。
【0029】
撮像光学系10Lは、フォーカスレンズ、ズームレンズ等の各種レンズ、光学フィルタ、および絞りなどの光学部品からなる。被写体から入射された光学像(被写体像)は、撮像光学系10Lにおける各光学部品を介して、撮像素子11の露光面に結像される。
【0030】
タイミングジェネレータ12は、制御部1の指示に従って、垂直転送のための4相パルス、フィールドシフトパルス、水平転送のための2相パルス、シャッタパルスなどの各種パルスを生成して撮像素子11に供給する。
【0031】
撮像素子(イメージセンサ)11は、例えば、CCD(Charge Coupled Device)またはCMOS(Complementary Metal Oxide Semiconductor)などの固体撮像素子で構成される。撮像素子11は、タイミングジェネレータ12からの動作パルスによって駆動され、撮像光学系10Lから導かれた被写体像を光電変換する。これによって、撮像画像を表す画像信号が、信号処理部13に出力される。ここで出力される画像信号は、タイミングジェネレータ12からの動作パルスに同期した信号であって、赤(R)、緑(G)、および青(B)の3原色から構成されるベイヤー配列のRAW信号(生の信号)である。
【0032】
信号処理部13以降の各部の画像処理機能は、例えばDSP(Digital Signal Processor)を用いて実現されうる。信号処理部13は、撮像素子11から入力された画像信号に、ノイズ除去、ホワイトバランス調整、色補正、エッジ強調、ガンマ補正、解像度変換などの画像信号処理を実行する。信号処理部13は、デジタル画像信号をメモリ4に一時的に格納してもよい。RAW/YC変換部14は、信号処理部13から入力されたRAW信号をYC信号に変換して、動き補償部16に出力する。ここで、YC信号は、輝度成分(Y)、および赤/青の色差成分(Cr/Cb)を含む画像信号である。
【0033】
動き補償部16は、ターゲット画像および参照画像の画像信号をメモリ4から読み込む。動き補償部16は、例えばブロックマッチングなどの処理によって、これらの画像の間の動きベクトル(ローカル動きベクトルLMV)を検出し、ターゲット画像と参照画像との間の動きを補償する。また、動き補償部16は、ターゲットブロックについての背景一致度合いの評価を行なって、ヒット率βを生成する。さらに、動き補償部16は、ターゲットブロックと動き補償ブロックとの相関性を判定して、相関性フラグを生成する。この実施形態では、動き補償部16からは、ターゲット画像と、動き補償画像と、ヒット率βと、相関性フラグとが画像重ね合わせ部17に出力される。
【0034】
画像重ね合わせ部17は、ヒット率βや相関性フラグに基づいて、ターゲット画像と動き補償画像とを重ね合わせ、重ね合わせた結果としてNR画像を生成する。NR画像では、上述したフレームNRの効果によって、画像に含まれるノイズが低減されている。なお、動き補償部16および画像重ね合わせ部17の詳細については後述する。
【0035】
静止画コーデック18は、操作部3によって静止画撮影の指示が取得されている場合(静止画撮影時)に、NR処理後の画像信号をメモリ4から読み込み、例えばJPEG(Joint Photographic Experts Group)などの所定の圧縮符号化様式で圧縮して、画像データとしてストレージ5に格納する。また、静止画コーデック18は、操作部3によって静止画再生の指示が取得されている場合(静止画再生時)に、画像データをストレージ5から読み込み、JPEGなどの所定の圧縮符号化様式で伸張した画像信号をNTSCエンコーダ20に提供してもよい。
【0036】
動画コーデック19は、操作部3によって動画撮影の指示が取得されている場合(動画撮影時)に、NR処理後の画像信号をメモリ4から読み込み、例えばMPEG(Moving Picture Experts Group)などの所定の圧縮符号化様式で圧縮して、画像データとしてストレージ5に格納する。また、動画コーデック19は、操作部3によって動画再生の指示が取得されている場合(動画再生時)に、画像データをストレージ5から読み込み、MPEGなど所定の圧縮符号化様式で伸張した画像信号をNTSCエンコーダ20に提供してもよい。
【0037】
NTSC(National Television System Committee)エンコーダ121は、画像信号をNTSC方式の標準カラー映像信号に変換して、ディスプレイ6に提供する。静止画撮影時または動画撮影時において、NTSCエンコーダ20は、NR処理後の画像信号をメモリ4から読み込み、スルー画像または撮影された画像としてディスプレイ6に提供してもよい。また、静止画再生時または動画再生時において、NTSCエンコーダ20は、静止画コーデック18または動画コーデック19から画像信号を取得し、再生画像としてディスプレイ6に提供してもよい。
【0038】
ディスプレイ6は、NTSCエンコーダ20から取得した映像信号を表示する。ディスプレイ6は、例えば、LCD(Liquid Crystal Display)または有機EL(Electro-Luminescence)ディスプレイなどでありうる。また、NTSCエンコーダ20から出力される映像信号は、図示しないHDMI(High-Definition Multimedia Interface)などの通信部によって、撮像装置10から外部に出力されてもよい。
【0039】
<1−2.フレームNR処理について>
次に、本発明の実施形態におけるフレームNR処理について説明する。本実施形態に係る撮像装置10において、フレームNR処理は、主に、動き補償部16および画像重ね合わせ部17によって実行される。
【0040】
上述のように、撮像装置10においては、撮像素子11によるセンサーコーディングによって生成されたRAW信号が、RAW/YC変換部14によってYC信号に変換される。フレームNRは、RAW信号に対して行われることが一般的である。しかし、RAW信号に対するフレームNRでは、撮像装置10の中で非常に大きなシステムリソースが使用される。そのため、本実施形態では、フレームNRをYC信号に対して行うことによって、フレームNRで使用されるシステムリソースを抑制する。
【0041】
図2は、本発明の実施形態におけるブロックマッチングについての説明図である。この実施形態では、図2に示すように、ターゲットフレーム100を、例えば、64画素×64ラインのような、比較的小さい大きさのターゲットブロック102の複数個に分割する。そして、この複数個のターゲットブロックのそれぞれについての動きベクトル(ローカル動きベクトル)104Bを先ず求める。このとき、この実施形態では、求めたそれぞれのローカル動きベクトルの信頼性を示す指標を、併せて算出するようにする。
【0042】
そして、ローカル動きベクトルの信頼性の指標から、ターゲットフレームについて求めた複数個のローカル動きベクトルの中から、信頼性の高いローカル動きベクトルのみを抽出する。次に、抽出した信頼性の高いローカル動きベクトルのみから、グローバルモーションを算出する。そして、算出したグローバルモーションを用いて、各ターゲットブロック単位のグローバル動きベクトルを算出する。しかしながら、この実施形態においては、グローバル動きベクトルの算出手法については、特に限定されるものではない。
【0043】
そして、算出したグローバル動きベクトルと、ターゲットブロック毎のローカル動きベクトルとを比較して、その比較結果に基づいて、各ターゲットブロックが背景部分か、動被写体部分かを評価判定するようにする。この実施形態では、算出したグローバル動きベクトルと、ターゲットブロック毎のローカル動きベクトルとを比較して、両者の一致度合いを判定する。そして、その判定結果として、ターゲットブロック毎のローカル動きベクトルとグローバル動きベクトルとの一致度合いを示す指標値を算出する。この指標値を、この明細書ではヒット率と称する。
【0044】
この実施形態では、ターゲットブロックについてのグローバル動きベクトルとローカル動きベクトルとの一致度合いを判定することができる。そして、一致度合いの評価の結果、一致度合いが高いと判定されたときには、当該ターゲットブロックについては、グローバル動きベクトルを、出力動きベクトルとして出力する。また、一致度合いが低いと判定されたときには、当該ターゲットブロックについては、ローカル動きベクトルを、出力動きベクトルとして出力する。この実施形態では、出力動きベクトルは、後段の処理用動きベクトル、この実施形態では、NR処理用動きベクトルである。
【0045】
なお、グローバル動きベクトルとローカル動きベクトルとが全く一致したときには、グローバル動きベクトルとローカル動きベクトルのいずれを出力動きベクトルとしてもよいことは言うまでもない。そして、この実施形態では、上述のようにして得たターゲットブロック単位の出力動きベクトルを用いて、ターゲットフレームに対して、参照フレームをブロック単位で位置合わせを行い、動き補償画像(動き補償フレーム)を生成する。そして、ターゲットフレームと、動き補償フレームとを重ね合わせてNR画像を生成するようにする。
【0046】
図3は、本発明の実施形態におけるフレームNR処理の概念図である。図3を参照すると、本実施形態におけるフレームNR処理では、連続して撮影された複数の画像P1〜P3が、位置合わせ(動き補償)後に重ね合わせられて、ノイズが低減された画像Pmixになる。なお、上述のように、連続して撮影された複数の画像を重ね合わせた場合にノイズが低減されるのは、略同一の画像が時間方向で積分され、各画像にランダムに含まれるノイズが相殺されるためである。
【0047】
図示された例において、重ね合わせられる複数の画像P1〜P3は、必ずしも3枚の画像でなくてもよく、2枚または4枚以上の画像であってもよい。例えば、本実施形態に係る撮像装置10が静止画を撮影する場合、高速で連続して撮影された複数枚の画像のうち、1枚目の画像がターゲット画像になり、このターゲット画像に2枚目以降の画像が参照画像として順次重ね合わせられうる。また、撮像装置10が動画を撮影する場合、順次撮影される連続したフレームの画像がそれぞれターゲット画像になり、これらのターゲット画像に、それぞれのターゲット画像の1つ前のフレームの画像が参照画像として重ね合わせられうる。つまり、あるフレームの画像は、ターゲット画像にもなりうるし、別のフレームの画像をターゲット画像とした場合の参照画像にもなりうる。
【0048】
このように、連続して撮影された画像を重ねあわせるフレームNRの処理では、重ね合わせられるターゲット画像と参照画像との間での位置合わせ(動き補償)が重要になる。これらの画像には、例えば撮影者の手ぶれなどによる画像の位置ずれが生じている場合がある。また、それぞれの画像において、被写体自体が動いたことによる位置ずれが生じている場合もある。そこで、本実施形態におけるフレームNRでは、ターゲット画像を分割して生成される複数個のターゲットブロックのそれぞれについて、ブロック単位の動きベクトルを検出する。さらに、各ブロックについて、ブロック単位の動きベクトルを反映した動き補償をしてから、ターゲット画像と参照画像とを重ね合わせる。
【0049】
ここで、ブロック単位の動きベクトルを検出する処理では、ターゲット画像の各ブロック(ターゲットブロック)について、参照画像の各ブロック(参照ブロック)の中から相関性が最も高いブロック(動き補償ブロック)が探索されるブロックマッチング法が用いられる。ブロック単位の動きベクトルは、ターゲットブロックと動き補償ブロックとの間の位置ずれとして求められる。ターゲットブロックと参照ブロックとの間の相関性の高さは、例えば、双方のブロック内の各画素の輝度値の差分絶対値総和(SAD:Sum of Absolute Difference)値によって評価されうる。
【0050】
<1−3.階層化ブロックマッチング処理について>
一般的な従来のブロックマッチングにおける動きベクトル検出処理では、サーチ範囲内を、ピクセル単位(1ピクセル単位または複数ピクセル単位)で参照ブロックを移動させて、各移動位置における参照ブロックについてのSAD値を算出する。そして、その算出したSAD値の中から最小値を示すSAD値を検出し、当該最小SAD値を呈する参照ブロック位置に基づいて動きベクトルを検出するようにする。
【0051】
そして、この実施形態では、1フレームが多数のブロックに分割されるので、以上のブロックマッチング処理をターゲットブロックおよび参照ブロックを順次切り替えながら、全画面において処理を行う。これにより、ターゲットフレーム内の全てのターゲットブロックについてのローカル動きベクトルLMVの算出を行う。
【0052】
しかし、このような従来の動きベクトル検出処理では、サーチ範囲内をピクセル単位で参照ブロックを移動させるようにするので、検索するサーチ範囲に比例して、SAD値を算出するマッチング処理回数が多くなって、マッチング処理時間が大きくなる。また、SADテーブルの容量も大きくなるという問題があった。
【0053】
特に、静止画像の高画素化、並びに動画像のHD(High Definition)化が進み、1枚の画像サイズが非常に大きくなってきていることを考慮すると、この問題は大きい。また、システムバス2を介して画像メモリをアクセスする回数も多くなり、バス帯域を大きくしなければならなくなるという問題もある。
【0054】
以上のことを考慮して、この実施の形態では、先ず、ターゲット画像(ターゲットフレーム)および参照画像(参照フレーム)を縮小した縮小画像と中間画像を用意する。そして、縮小画像、中間画像、原画画像の順に、ブロックマッチングによる動きベクトルサーチを、前段階でのブロックマッチングの結果を次段階におけるサーチに反映させて行うという階層化ブロックマッチングを行う。
【0055】
この階層化ブロックマッチングを行うことで、演算量や処理時間を少なく、効率の良いローカル動きベクトルの算出を行うようにする。ここで、縮小画像のことを縮小面、中間画像のことを中間面、縮小化をしていない元の画像のことを基底面と呼ぶことにする。
【0056】
図4は、この階層化ブロックマッチングを説明するための図である。図4の例においては、基底面ターゲットフレーム201および基底面参照フレーム301を、1/a・1/b(1/a、1/bは、縮小倍率であって、a>1、b>1である)に縮小して、縮小面ターゲットフレーム211および縮小面参照フレーム311を生成する。また、基底面ターゲットフレーム201および基底面参照フレーム301を、1/bに縮小して、中間面ターゲットフレーム221および中間面参照フレーム321を生成しておく。
【0057】
縮小面や中間面の基底面に対する倍率は任意であるが、1/2〜1/8倍(画素数換算で1/4〜1/64倍)の範囲が適当である。なお、図4に示した例では、中間面に対する縮小面の縮小倍率は1/4(すなわち、a=4)、また、基底面に対する中間面の縮小倍率は1/4(すなわち、b=4)の場合として示している。
【0058】
縮小面や中間面の作成にあたっても、その方法は任意である。しかし、単に、原画像の画素を、縮小倍率に応じて間引くだけで縮小面や中間面を作成する方法では、折り返し成分が発生し、1階層目(縮小面)で検出される動きベクトルが、正しいものから外れやすくなる。このため、通常、縮小倍率に応じたカットオフ周波数帯域を持つローパスフィルタを原画に対して施したのち、縮小倍率に応じたサブサンプリングを行う。
【0059】
この実施形態では、倍率に応じたサブサンプリングにより消失する画素を含んだ、輝度平均値を生成し、それを縮小面画素や中間面画素としている。つまり、1/a縮小なら、a×a画素の正方領域の輝度平均値を算出し、これを縮小面画素や中間面画素の輝度値とする。この手法の場合、まず中間面を生成しておいてから、中間面から縮小面を生成しても、原画から直接縮小面を生成する場合と同じ結果が得られるため、より効率的である。
【0060】
なお、縮小画像を得るに当たっては、水平方向の縮小率と垂直方向の縮小率は、上記のように同じであってよいし、また、異ならせても良い。
【0061】
以上のようにして、縮小面および中間面を作成したら、先ず、縮小面ターゲットフレーム211に縮小面ターゲットブロック212を設定すると共に、縮小面参照フレーム311に縮小面サーチ範囲313を設定する。
【0062】
そして、当該縮小面サーチ範囲313内の複数個の縮小面参照ブロック312について、縮小面の動きベクトル検出装置401で、上述したブロックマッチング処理を行い、最小SAD値を呈する縮小面参照ブロック位置を検出する。この縮小面参照ブロック位置の検出に基づき、縮小面動きベクトルMVsを検出する。この例では、動きベクトル検出装置401は、縮小面ターゲットブロック212の大きさ(水平方向の画素数×垂直方向のライン数)のブロックをブロックマッチング処理単位として処理を実行する。
【0063】
縮小面動きベクトルMVsの算出が終了したら、次に、縮小面ターゲットフレーム211をa倍したものに等しい中間面ターゲットフレーム221において、中間面ターゲットブロック222を設定する。図4に示した例では、中間面の動きベクトル検出装置402は、縮小面の動きベクトル検出装置401におけるブロックマッチング処理単位と同じ大きさのブロックを中間面ターゲットブロックとしてブロックマッチング処理を行うようにしている。ここで、同じ大きさのブロックとは、同じピクセル数であって、同じ水平方向の画素数×同じ垂直方向のライン数からなるものである。
【0064】
この例の場合、縮小面は中間面の1/aであるので、縮小面ターゲットブロック212に対応する中間面ターゲットフレームにおける領域には、中間面ターゲットブロック222が、a個含まれることなる。したがって、その中間面ターゲットブロック222のa個の全てが中間面の動きベクトル検出装置402におけるブロックマッチング処理対象として設定される。
【0065】
そして、縮小面参照フレーム311をa倍したものに等しい中間面参照フレーム321において、縮小面動きベクトルMVsを中心とした中間面サーチ範囲323を設定する。この中間面サーチ範囲323内の複数個の中間面参照ブロック322について、動きベクトル検出装置402で、上述したブロックマッチング処理を行い、最小SAD値を呈する中間面参照ブロック位置を検出することにより、中間面動きベクトルMVmを検出する。
【0066】
中間面の動きベクトル検出装置402では、a個の中間面ターゲットブロックのそれぞれについて、中間面サーチ範囲323内に設定したそれぞれの当該中間面ターゲットブロック用のサーチ範囲において、ブロックマッチング処理を実行する。これにより、それぞれの中間面ターゲットブロックについての動きベクトルの検出を行う。そして、それら複数個の動きベクトルのうち、最小のSAD値を呈する動きベクトルを、中間面における動きベクトル(中間面動きベクトル)MVmとして検出する。
【0067】
縮小面動きベクトルMVsの算出が終了したら、次に、中間面ターゲットフレーム221をb倍したものに等しい基底面ターゲットフレーム201において、基底面ターゲットブロック202を設定する。図4に示した例では、基底面の動きベクトル検出装置403も、動きベクトル検出装置401および402と同じ大きさ(同じピクセル数=同じ水平方向の画素数×同じ垂直方向のライン数)のブロックを処理単位ブロックとしてブロックマッチング処理を行うようにしている。
【0068】
そして、前述したように、中間面動きベクトルMVmは、処理単位ブロックの単位で得られる。したがって、動きベクトル検出装置403で対象となる基底面ターゲットフレーム201における基底面ターゲットブロック202は、図4において、斜線を付して示すように、縮小面ターゲットブロックと同じ大きさのブロック(処理単位ブロック)のb倍の個数からなるものとして設定される。
【0069】
一方、中間面参照フレーム321をb倍したものに等しい基底面参照フレーム301において、縮小面動きベクトルMVsと中間面動きベクトルMVmとの合成ベクトルを中心とした基底面サーチ範囲303を設定する。当該基底面サーチ範囲303内の複数個の基底面参照ブロック302について、動きベクトル検出装置403で、上述したブロックマッチング処理を行い、最小SAD値を呈する基底面参照ブロック位置を検出することにより、基底面動きベクトルMVbを検出する。
【0070】
縮小面動きベクトルMVsおよび中間面動きベクトルMVmは、同じ大きさの処理単位ブロックの単位で得られる。このため、縮小面動きベクトルMVsと中間面動きベクトルMVmとの合成ベクトルを中心とした設定された基底面サーチ範囲303は、b個の基底面ターゲットブロック202を含む領域よりも若干広い領域とされる。
【0071】
動きベクトル検出装置403では、b個の基底面ターゲットブロック202について、基底面サーチ範囲303内に設定したそれぞれの基底面ターゲットブロックについてのサーチ範囲において、ブロックマッチング処理を実行する。これにより、それぞれの基底面ターゲットブロックについての動きベクトルの検出を行う。そして、それら複数個の動きベクトルのうち、最小のSAD値を呈する動きベクトルを、基底面における動きベクトル(基底面動きベクトル)MVbとして検出する。
【0072】
そして、以上のようにして求められた縮小面動きベクトルMVsと、中間面動きベクトルVMmと、基底面動きベクトルVMbとの合成ベクトルとして、基底面ターゲットフレーム201と基底面参照フレーム301との間における基底面ターゲットブロックについてのローカル動きベクトルLMVが検出される。
【0073】
以上のような階層化ブロックマッチング処理を、ターゲットブロックおよび参照ブロックを順次切り替えながら、ターゲットフレームおよび参照フレームの全領域において、実行する。これにより、ターゲットフレーム内に設定した複数個のターゲットブロック単位の複数個のローカル動きベクトルLMVの全てが算出される。図4に示した例で、動きベクトル検出装置401,402および403は、実際的には、1つの装置であって、メモリ4から読み出されて入力されるターゲットブロックと、サーチ範囲から読み出される参照ブロックとが異なるのみである。
【0074】
なお、ターゲットブロックの切り替えは、基底面ターゲットフレーム201において、全ての基底面ターゲットブロック202についてのローカル動きベクトルLMVを得るようにする場合には、次のようにする。すなわち、縮小面において、縮小面ターゲットブロックを、水平方向には、縮小倍率1/aおよび1/bに応じた水平方向の画素数分ずつ、ずらして設定する。また、垂直方向には、縮小倍率1/aおよび1/bに応じた垂直方向のライン数分ずつ、ずらして設定するようにすれば良い。
【0075】
しかし、グローバルモーションを複数個のローカル動きベクトルLMVから求めるという目的からすると、次のようにしても良い。すなわち、基底面ターゲットフレーム201における飛び飛びの位置の基底面ターゲットブロックについてのローカル動きベクトルLMVを得るように、縮小面ターゲットブロックを、水平方向および垂直方向に、順次にずらして設定するようにしてもよい。
【0076】
なお、上述した階層化ブロックマッチングは、中間面を省略し、縮小面と基底面のみの2階層で行っても良いし、逆に、中間面の階層が複数存在しても構わない。ただし、縮小倍率が大き過ぎて、動被写体と背景が同じ単位ブロックに含まれてしまう場合には、注意が必要である。すなわち、本来は異なる動きベクトルとして検出されるべきものが、1つの動きベクトルとして扱われてしまい、以降の階層ではリカバリが効かないため、縮小倍率の選定は慎重に行われる必要がある。
【0077】
<1−4.フレームNR処理の詳細>
次に、本発明の実施形態におけるフレームNR処理の詳細について、動き補償部16、および画像重ね合わせ部17の機能の詳細とともに説明する。
【0078】
(動き補償部の詳細)
図5は、本発明の実施形態に係る撮像装置10における動き補償部16の機能構成を示すブロック図である。図5を参照すると、動き補償部16は、ターゲットブロックバッファ部161、参照ブロックバッファ部162、マッチング処理部163、動きベクトル算出部164、コントロール部165、動き補償画像生成部166、および相関性判定部167を含む。これらの各部を含む動き補償部16は、例えばDSPを用いて実現されうる。
【0079】
ここで、図6を参照して、ターゲットブロックバッファ部161について説明する。図5は、本発明の実施形態に係る撮像装置10において動き補償部16に含まれるターゲットブロックバッファ部161の機能構成を示すブロック図である。図6を参照すると、ターゲットブロックバッファ部161は、基底面バッファ部1611、縮小面バッファ部1612、および縮小化処理部1613を含む。
【0080】
ターゲットブロックバッファ部161は、メモリ4、またはRAW/YC変換部14から提供される基底面ターゲットフレーム201または縮小面ターゲットフレーム301の画素データを取得する。これらの画素データの取得元は、セレクタ1614によって切り替えられうる。例えば、ターゲットブロックバッファ部161は、静止画撮影時にはメモリ4から画素データを取得し、動画撮影時にはRAW/YC変換部14から画素データを取得してもよい。なお、ここで取得される縮小面ターゲットフレーム301の画素データは、後述する画像重ね合わせ部17に含まれる縮小面生成部174、または、RAW/YC変換部14によって生成され、メモリ4に格納されたものでありうる。
【0081】
ターゲットブロックバッファ部161は、基底面バッファ部1611において、基底面ターゲットフレーム201の画素データを蓄積する。また、ターゲットブロックバッファ部161は、縮小面バッファ部1612において、縮小面ターゲットフレーム301の画素データを蓄積する。例えば、動画撮影時に、RAW/YC変換部14から取得される画素データに縮小面ターゲットフレーム301の画素データが含まれないような場合、ターゲットブロックバッファ部161は、縮小化処理部1613を用いて、基底面ターゲットフレーム201の画素データから縮小面ターゲットフレーム301の画素データを生成する。縮小化処理部1613を用いるか否かは、セレクタ1615によって切り替えられうる。
【0082】
ターゲットブロックバッファ部161は、相関性判定部167、およびマッチング処理部163に、基底面ターゲットフレーム201または縮小面ターゲットフレーム301の画素データを提供する。相関性判定部167には、基底面バッファ部1611に蓄積された基底面ターゲットフレーム201の画素データが提供される。マッチング処理部163には、縮小面でのブロックマッチング処理時は縮小面バッファ部1612に蓄積された縮小面ターゲットフレーム301の画素データが、基底面でのブロックマッチング処理時には基底面バッファ部1611に蓄積された基底面ターゲットフレーム201の画素データが、それぞれ提供される。マッチング処理部163に提供される画素データは、セレクタ1616によって切り替えられうる。
【0083】
続いて、図7を参照して、参照ブロックバッファ部162について説明する。図7は、本発明の実施形態に係る撮像装置10において動き補償部16に含まれる参照ブロックバッファ部162の機能構成を示すブロック図である。図7を参照すると、参照ブロックバッファ部162は、基底面バッファ部1621、および縮小面バッファ部1622を含む。
【0084】
参照ブロックバッファ部162は、メモリ4から、縮小面マッチング処理範囲および基底面マッチング処理範囲の画素データを取得する。取得された縮小面マッチング処理範囲および基底面マッチング処理範囲の画素データは、それぞれ基底面バッファ部1621および縮小面バッファ部1622に蓄積される。
【0085】
また、参照ブロックバッファ部162は、動き補償画像生成部166、およびマッチング処理部163に、基底面または縮小面の参照ブロックの画素データを提供する。動き補償画像生成部166には、基底面バッファ部1621に蓄積された基底面マッチング処理範囲の画素データのうち、動き補償ブロックとして特定された範囲の画素データが提供される。マッチング処理部163には、縮小面でのブロックマッチング処理時は、縮小面バッファ部1622に蓄積された縮小面マッチング処理範囲の画素データのうち、ブロックマッチング処理で用いられる縮小面参照ブロックの画素データが提供される。また、基底面でのブロックマッチング処理時は、基底面バッファ部1621に蓄積された基底面マッチング処理範囲の画素データのうち、ブロックマッチング処理で用いられる基底面参照ブロックの画素データが提供される。なお、マッチング処理部163に提供される画素データは、セレクタ1623によって切り替えられる。
【0086】
再び図4を参照する。マッチング処理部163は、ターゲットブロックと参照ブロックとの間の相関の強さを検出するブロックマッチングの処理を実行する。ターゲットブロックと参照ブロックとの間の相関の強さは、例えば、各画素の輝度信号のSAD値を用いて評価されうる。ターゲットブロックと参照ブロックとの間の相関の強さは、各画素の色差信号などの他の情報を用いて評価されてもよい。また、演算量の削減のために、演算の対象とする画素が間引かれてもよい。
【0087】
動きベクトル算出部164は、参照画像のターゲット画像に対する動きをターゲットブロック毎にローカル動きベクトルとして算出する。具体的には、例えば、動きベクトル算出部164は、マッチング処理部163におけるブロックマッチングの処理結果に基づいて、ローカル動きベクトルを取得する。動きベクトル算出部164は、例えば、マッチング処理部163によって算出されたSAD値の最小値を検出および保持し、さらに、SAD値が最小である参照ブロックの近傍の複数の参照ブロックのSAD値を保持して、二次曲線近似補間処理によって、サブピクセル精度の高精度のローカル動きベクトルを検出してもよい。
【0088】
また、動きベクトル算出部164は、ローカル動きベクトルとグローバル動きベクトルとの一致度合いを示す指標値をターゲットブロック毎に算出する。具体的には、例えば、動きベクトル算出部164は、ターゲットブロックについての背景一致度合いの評価を行なって、ヒット率βを生成する。また、動きベクトル算出部164は、グローバル動きベクトルとローカル動きベクトルとに基づいて、NR処理用動きベクトルを算出する。動きベクトル算出部164からは、ヒット率βが画像重ね合わせ部17に出力され、NR処理用動きベクトルが動き補償画像生成部166に出力される。NR処理用動きベクトルの算出手法の例については、後述する。
【0089】
コントロール部165は、動き補償部16の各部を制御する。コントロール部165は、例えば、ターゲットブロックバッファ部161に含まれるセレクタ1614〜1616、および参照ブロックバッファ部162に含まれるセレクタ1623を制御する。また、コントロール部165は、ターゲットブロックバッファ部161および参照ブロックバッファ部162によって提供される画素データに応じて、縮小面または基底面でのブロックマッチング処理を実行するようにマッチング処理部163を制御してもよい。
【0090】
動き補償画像生成部166は、動きベクトル算出部164により算出されたローカル動きベクトルに基づいて参照ブロックを動き補償した動き補償ブロックをターゲットブロック毎に生成する。動き補償画像生成部166は、かかる処理を行うことにより、動き補償画像を生成することができる。具体的には、例えば、動き補償画像生成部166は、動きベクトル算出部164により算出されたローカル動きベクトルとグローバル動きベクトルとに基づいて生成されるNR処理用動きベクトルに基づいて、動き補償ブロックをターゲットブロック毎に生成することができる。
【0091】
さらに詳細には、例えば、動き補償画像生成部166は、参照ブロックに対して、NR処理用動きベクトルによりグローバルモーションに対応する処理、つまり、平行移動、回転、拡大縮小を伴う変形処理を施して、動き補償画像を生成することができる。動き補償画像生成部166からは、動き補償ブロック(動き補償画像)が相関性判定部167に出力される。
【0092】
相関性判定部167は、動き補償画像生成部166により生成された動き補償画像とターゲット画像との相関性をターゲットブロック毎に判定する。相関性判定部167は、例えば、判定した相関性が設定された相関性フラグを生成することができる。相関性判定部167が有する機能の詳細については後述する。相関性判定部167からは、動き補償ブロック(動き補償画像)とターゲットブロック(ターゲット画像)と相関性フラグとが画像重ね合わせ部17に出力される。
【0093】
(画像重ね合わせ部の詳細)
図8は、本発明の実施形態に係る撮像装置10における画像重ね合わせ部17の機能構成を示すブロック図である。図8を参照すると、画像重ね合わせ部17は、加算率計算部171、加算部172、基底面出力バッファ部173、縮小面生成部174、および縮小面出力バッファ部175を含む。これらの各部を含む画像重ね合わせ部17は、例えばDSPを用いて実現されうる。
【0094】
加算率計算部171は、動き補償部16から、基底面ターゲットブロックおよび動き補償ブロックの画素データを取得し、これらのブロックの加算率を算出する。加算率の算出手法の詳細については後述する。基底面ターゲットフレーム201と動き補償ブロック208とは、例えば、単純加算方式または平均加算方式などの加算方式によって加算されうる。加算率計算部171は、これらの加算方式に応じて加算率を算出しうる。加算率計算部171は、算出した加算率と、基底面ターゲットフレーム201および動き補償ブロック208の画素データとを、加算部172に提供する。
【0095】
加算部172は、加算率計算部171から、基底面ターゲットブロックおよび動き補償ブロックの画素データと、これらのブロックの加算率とを取得する。加算部172は、基底面ターゲットブロックの画素データと動き補償ブロックの画素データとを、取得した加算率で加算し、フレームNRの効果によってノイズが低減された基底面NRブロックを生成する。加算部172は、基底面NRブロックの画素データを、基底面出力バッファ部173および縮小面生成部174に提供する。
【0096】
基底面出力バッファ部173は、加算部172から提供された基底面NRブロックの画素データを蓄積し、基底面NR画像としメモリ4に提供する。
【0097】
縮小面生成部174は、加算部172から提供された基底面NRブロックの画素データを縮小して、縮小面NRブロックの画素データを生成する。縮小面生成部174は、縮小面NRブロックの画素データを、縮小面出力バッファ部175に提供する。
【0098】
縮小面出力バッファ部175は、縮小面生成部174から提供された縮小面NRブロックの画素データを蓄積し、縮小面NR画像としてメモリ4に格納する。ここでメモリ4に格納された縮小面NR画像は、例えば、静止画撮影時に、フレームNR後のターゲット画像にさらに参照画像を重ね合わせる場合、縮小面ターゲット画像として用いられうる。また、ここでメモリ4に格納された縮小面NR画像は、動画撮影時に、次のフレームをターゲット画像としてフレームNRを実行する場合、縮小面参照画像として用いられうる。
【0099】
(画像重ね合わせ部の詳細)
図9は、本発明の実施形態に係る撮像装置10により実行される主要な処理の流れを示すフローチャートである。図9を参照すると、先ず、動きベクトル算出部164は、ブロックマッチングによるローカル動きベクトルLMVの検出を行なう(ステップS101)。次に、動きベクトル算出部164は、ターゲットブロック毎のグローバル動きベクトルGMVを検出する(ステップS102)。
【0100】
次に、動きベクトル算出部164は、ステップS101で検出されたローカル動きベクトルLMVと、ステップS102で検出されたグローバル動きベクトルGMVとに基づいて、ローカル動きベクトルLMVとグローバル動きベクトルGMVとの一致度合いを示すヒット率βを算出する(ステップS103)。具体的には、動きベクトル算出部164は、ステップS101で検出されたローカル動きベクトルLMVと、ステップS102で検出されたグローバル動きベクトルGMVとを比較することで、各ターゲットブロックについての背景一致度合いを評価し、ヒット率βを求める。
【0101】
そして、さらに、動きベクトル算出部164は、各ターゲットブロックについてのNR処理用動きベクトルMVnrを定め、動き補償画像生成部166に出力する。このステップS103でのローカル動きベクトルLMVとグローバル動きベクトルGMVとの比較においては、動きベクトル算出部164は、例えば、ローカル動きベクトルLMVに対応する参照ブロックについてのSAD値と、グローバル動きベクトルGMVに対応する参照ブロックのついてのSAD値とを比較する。さらに、動きベクトル算出部164は、グローバル動きベクトルGMVに対応する参照ブロックのついてのSAD値については、画像のノイズに応じた補正を加えるようにすることができる。
【0102】
次に、動き補償画像生成部166では、NR処理用動きベクトルMVnrを用いて、参照ブロック毎に動き補償ブロックを生成する(ステップS104)。これにより、動き補償画像が生成される。動き補償画像生成部166は、動き補償画像とターゲット画像とを相関性判定部167に出力する。相関性判定部167は、動き補償画像とターゲットブロックとの相関性をターゲットブロック毎に判定し、相関性を示す相関性フラグを生成する(ステップS105)。相関性判定部167は、動き補償画像とターゲット画像と生成した相関性フラグとを画像重ね合わせ部17に出力する。
【0103】
次に、加算率計算部171は、ステップS103で求められたヒット率βとステップS105で生成された相関性フラグとを用いて、画素毎の加算率αを算出し、加算部172に供給する(ステップS106)。加算率計算部171は、算出した加算率αと動き補償画像とターゲットブロックとを加算部172に供給する。次に、加算部172は、ターゲット画像に、ステップS104で生成された動き補償画像を、ステップS106で算出された加算率αで画素毎に重ね合わせてNR画像を生成する(ステップS107)。以上で、NR画像生成の処理は終了となる。加算率αを用いてターゲット画像に動き補償画像を画素毎に重ね合わせる手法の例については、後述する。
【0104】
なお、この図9は、あるターゲットフレームの1枚についての処理動作を示したものである。したがって、3枚以上の複数枚の画像を重ね合わせる場合には、生成したNR画像をターゲットフレームとすると共に、新たに重ね合わせる画像を参照フレームとして、図9に示した処理を繰り返せばよい。
【0105】
(SAD値とGMVとの関係)
図10は、横軸にサーチ範囲を取り、縦軸にSAD値を取ったときの、1個のターゲットブロックについてのSADテーブルの内容(SAD値)を示す図である。横軸の各値は、参照ブロック位置(参照ベクトル)となり、実線がSADテーブルの内容を示すものとなる。この図10において、最小SAD値となる参照ブロックの位置(つまり参照ベクトル)は、ブロックマッチングによりローカル動きベクトルLMVとして検出される。
【0106】
このとき、ローカル動きベクトルLMVにおけるSAD値と、グローバル動きベクトルGMVにおけるSAD値とが、画像のノイズ分に応じた差の範囲にあれば、グローバル動きベクトルGMVが、最小SAD値を取る参照ベクトルとなっている可能性がある。つまり、本来はグローバル動きベクトルGMV(参照ブロックの位置)でのSAD値が最小となるべきであったのに、ノイズのために、異なる参照ブロックの位置(これがローカル動きベクトルLMV)を最小として検出されてしまったとすることができる。
【0107】
そこで、この例では、画像のノイズ分に応じたオフセット値OFSを、グローバル動きベクトルGMVでのSAD値に付加して補正することができる。この例の場合には、オフセット値OFSを、グローバル動きベクトルGMVでのSAD値(SAD_GMVとする)から減算して補正する。すなわち、補正後のSAD値は、MinSAD_Gとすると、
【0108】
MinSAD_G=SAD_GMV−OFS ・・・ (式1)
【0109】
となる。ここで、このオフセット値OFSは、あまり大きな値を設定すると、動被写体の動きベクトルまで、最小SAD値として判定されるようになってしまう。そこで、この実施形態では、オフセット値OFSは、ローカル動きベクトルの信頼性の指標値Ftについての閾値thよりも小さい値に設定される。ローカル動きベクトルの信頼性の指標値Ftとしては、例えば、第2極小値と第1極小値(SAD値の最小値)との差の値を用いることができる。信頼性の指標値Ftが閾値thを超えているローカル動きベクトルは、例えば、信頼性の高いローカル動きベクトルとして抽出され、後述するようなグローバルモーションGMおよびグローバル動きベクトルGMVの算出に用いられる。信頼性の指標値Ftが閾値th以下であるローカル動きベクトルは、例えば、信頼性の高くないローカル動きベクトルであるとして扱われる。
【0110】
そして、動きベクトル算出部164では、その補正後SAD値MinSAD_Gと、ローカル動きベクトルLMVでのSAD値(MinSAD)とを比較する。その比較の結果、MinSAD_G<MinSADであれば、当該ターゲットブロックについてのSAD値の最小値は、グローバル動きベクトルGMVに対応する参照ブロックについてのSAD値の補正値であるMinSAD_Gであると評価する。図10は、MinSAD_G<MinSADである場合を示している。
【0111】
すなわち、図10に示すように、MinSAD_G<MinSADとなる場合は、当該ターゲットブロックについての真のローカル動きベクトルは、グローバル動きベクトルGMVに一致すると判定する。そして、その場合は、当該ターゲットブロックに対する背景一致度合いは高いと評価し、当該ターゲットブロックについてのヒット率βは大きな値とする。そして、当該ターゲットブロックについてのNR処理用動きベクトルは、グローバル動きベクトルGMVとする。
【0112】
ここで、この実施形態では、ヒット率βは、0≦β≦1の範囲の値とされる。ローカル動きベクトルLMVと、グローバル動きベクトルGMVとが全く一致したときには、ヒット率βは、β=1とすることができる。しかし、この例では、ローカル動きベクトルLMVと、グローバル動きベクトルGMVとが全く一致しているかどうかの評価は行なわず、補正後SAD値MinSAD_Gと、ローカル動きベクトルLMVでのSAD値(MinSAD)との比較で評価する。したがって、評価結果には、ローカル動きベクトルLMVと、グローバル動きベクトルGMVとが全く一致する場合も含まれるが、不一致の場合も含まれる。
【0113】
そして、後述するように、この実施形態では、MinSAD_G<MinSADであれば、ヒット率βは、例えば、β=0.75とする。ここで、β=1としなかったのは、上述のように、上記比較結果には、ローカル動きベクトルLMVとグローバル動きベクトルGMVとが不一致の場合が含まれるからである。
【0114】
(背景/動被写体判定処理の流れ)
動きベクトル算出部164での背景一致度合い評価処理の流れを、図11および図12のフローチャートを参照して更に説明する。この図11および図12の処理は、コントロール部165の制御に基づいて、各部が実行する。
【0115】
先ず、コントロール部165の制御により、ターゲットブロックバッファ部161に最初のターゲットブロックが設定される(ステップS301)。次に、コントロール部165の制御により、参照ブロックバッファ152にバッファリングされているマッチング処理範囲の参照フレームの画像データのうちから、ブロックマッチング処理する参照ブロックが設定される(ステップS302)。
【0116】
マッチング処理部163は、設定されたターゲットブロックと、設定された参照ブロックとについてブロックマッチング処理を行い、SAD値を計算する。マッチング処理部163は、算出したSAD値を、参照ブロックの位置情報(参照ベクトル)と共に、動きベクトル算出部164に供給する(ステップS303)。
【0117】
動きベクトル算出部164は、参照ベクトルがグローバル動きベクトルGMVと一致しているか、また、その周囲近傍の8位置P1〜P8と一致しているか否か判別する(ステップS304)。
【0118】
ステップS304で、参照ベクトルがグローバル動きベクトルGMVおよびその周囲近傍の8位置P1〜P8とは一致していないと判別したときには、動きベクトル算出部164では、最小SAD値MinSADと、その参照ブロック位置(参照ベクトル)との更新処理を行なう(ステップS305)。
【0119】
次に、コントロール部165は、サーチ範囲内の全ての参照ブロックついてのターゲットブロックとのブロックマッチングが終了したか否か判別する(ステップS308)。
【0120】
そして、ステップS308で、サーチ範囲内の全ての参照ブロックついての処理が終了してはいないと判別したときには、コントロール部165は、次の参照ブロックを設定する(ステップS309)。そして、ステップS302に戻り、上述したこのステップS302以降の処理を繰り返す。
【0121】
また、ステップS304で、参照ベクトルがグローバル動きベクトルGMV、あるいはその周辺近傍位置P1〜P8のいずれかと一致したと判別したときには、動きベクトル算出部164では、そのSAD値からオフセット値OFSを減算する(ステップS306)。そして、その減算結果を補正後SAD値MinSAD_G_0〜MinSAD_G_8のいずれかとして、その参照ブロック位置(参照ベクトル)とを保持する(ステップS307)。
【0122】
そして、ステップS308に進み、サーチ範囲内の全ての参照ブロックついての処理が終了したか否か判別する。
【0123】
そして、ステップS308で、サーチ範囲内の全ての参照ブロックついての処理が終了したと判別したときには、動きベクトル算出部164は、ローカル動きベクトルLMVと、最小SAD値MinSADを検出する。また、動きベクトル算出部164は、9個の補正後SAD値MinSAD_G_0〜MinSAD_G_8の中の最小値として、補正後SAD値MinSAD_Gを検出する(図12のステップS311)。
【0124】
そして、動きベクトル算出部164は、ヒット率βを算出し(ステップS312)、最小SAD値MinSADが、予め定められている前記閾値TH1より小さいか否か判別する(ステップS313)。
【0125】
ステップS313で、最小SAD値MinSADが、前記閾値TH1より大きいと判別したときには、再算出されたローカル動きベクトルLMVを、当該ターゲットブロックのNR処理用動きベクトルとして動き補償画像生成部166に出力する(ステップS314)。
【0126】
また、ステップS313で、最小SAD値MinSADが、前記閾値TH1より小さいと判別したときには、グローバル動きベクトルGMVを、当該ターゲットブロックのNR処理用動きベクトルとして動き補償画像生成部166に出力する(ステップS315)。
【0127】
そして、ステップS314およびステップS315の次に、動き補償画像生成部166は、NR処理用動きベクトルに基づいて動き補償ブロックを生成し(ステップS316)、相関性判定部167は、ターゲットブロックと動き補償ブロックとの相関性を示す相関性フラグを生成する(ステップS317)。コントロール部165は、ターゲットフレーム内の全てのターゲットブロックについての処理が終了したか否か判別し(ステップS318)、終了していなければ、次のターゲットブロックを設定する(ステップS319)。そして、ステップS302に戻り、コントロール部165の制御の下に、上述したステップS302以降の処理を繰り返す。
【0128】
また、ステップS318で、ターゲットフレーム内の全てのターゲットブロックについての処理が終了したと判別したときには、コントロール部165は、この背景/動被写体判定処理動作を終了する。
【0129】
(加算率算出処理の流れ)
この実施形態においては、加算率計算部171では、画素単位に加算率α(0≦α≦1)を求める。そして、前述したように、基本的には、ターゲット画像と動き補償画像との画素単位の違いと、ヒット率βとに応じて加算率αを計算する。このため、加算率計算部171には、ヒット率βと、ターゲット画像のデータTGvおよび動き補償画像のデータMCvが供給される。
【0130】
ここで、ターゲット画像と動き補償画像との画素単位の違いが大きければ、動き部分と考えられるので、加算率αは低くすべきであるが、前記画素単位の違いがない、あるいは小さければ加算率αは高くしても良い。しかし、ターゲットブロックが背景静止画部分であるか、動被写体部分であるかが不明である場合には、前述したように、動き部分における2重露光が目立たないようにするために、加算率αは比較的低く抑える必要がある。
【0131】
しかし、この実施形態では、ヒット率βにより、背景静止画部分としての一致度合いが求められているので、ヒット率βが大きく、背景一致度合いが高いほど、加算率αは高くするようにする。
【0132】
また、この実施形態では、さらに画像のノイズは、撮影シーンの明るさ(画像のゲイン量)に応じたものとなるので、加算率計算部171では、ターゲット画像と動き補償画像との画素単位の違いに関しては、当該撮影シーンの明るさ(画像のゲイン量)に応じたノイズを考慮するようにしている。すなわち、ターゲット画像と動き補償画像との画素単位の違いがノイズの範囲内であれば、両者の実際の差分は小さいと判断する。また、前記画素単位の違いがノイズの範囲よりも大きいときには、両者の差分は、実際に大きいと判断するようにする。
【0133】
ところで、ヒット率βとは、背景静止画部分としての一致度合いである。したがって、ヒット率βが大きいと、基本的には相関性フラグも大きいという関係がある。しかしながら、SAD値の(相対的な)比較でヒット率βを算出している都合上、実際は背景でないにもかかわらず、GMVヒット(ヒット率βが高い)となってしまうケースもある。この場合、ヒット率βは高いが、相関性フラグは低いという状態になる。この状態のときは、加算率αを高くするのを取りやめることで、実際には背景でないのにもかかわらずGMVヒットになってしまうケースを回避することができる。
【0134】
また、GMVヒットである背景領域についての加算率αが高くなる一方、GMVヒットではない領域(すなわち被写体領域)についての加算率が変化しないと、例えば、被写体領域が大きいシーンなどで不自然に背景のノイズが除去され、被写体領域に存在するノイズが残っている画像になってしまうことが懸念される。この場合、GMVヒットではないものの、相関性フラグが高ければ、この動き補償画像が正しいことにはある程度確証が持てる。そこで、相関性フラグの値に応じて加算率αを高くし、背景と被写体のバランスを取ることも可能である。
【0135】
また、この実施形態の加算率計算部171には、加算度合いを、加算率計算部171の外部から制御することができるようにするため、加算調整用ゲインGAが供給される。この加算調整用ゲインGAの値は、予め用意されているゲイン値の中から、ユーザが選択したものとするように構成することができる。あるいは、撮像画像のISO感度に応じて、加算調整用ゲインGAの値を定めるように構成しても良い。後者の場合には、例えば、撮像時の露出値やシャッター速度などに応じて、画像の明るさを判断して、加算調整用ゲインGAの値を定めるように構成することができる。つまり、明るい画像の場合には、ノイズが目立つので、加算率が小さくなるようにゲインを小さくし、逆に、暗い画像の場合には、加算率を大きくするようにゲインを大きく設定する。
【0136】
このゲインGAによって、ヒット率βと相関性フラグとの組み合わせのマトリクスが決定する。しかし、設定パラメータを増やし、このマトリックスそのものをユーザが自由に選択できるようにしても良い。
【0137】
この実施形態の加算率計算部171のハードウェア構成例を図13および図14に示す。この図13および図14の例においては、ターゲット画像のデータTGvおよび動き補償画像のデータMCvは、輝度成分と、色差成分とのそれぞれについて、別個に処理がなされる。
【0138】
図13は、加算率計算部171における、輝度成分についての処理部分である。図13を参照して、先ず、輝度成分についての加算率計算処理について説明する。
【0139】
すなわち、ターゲット画像のデータTGvのうちの輝度データYtgは、ローパスフィルタ601を通じて差分絶対値計算部603に供給される。また、動き補償画像のデータMCvのうちの輝度データYmcが、ローパスフィルタ602を通じて差分絶対値計算部603に供給される。差分絶対値計算部603は、画素毎に、輝度データYtgと輝度データYmcとの画素差分絶対値ΔPxYを算出し、算出した画素差分絶対値ΔPxYを、加算率変換出力部608に供給する。
【0140】
ローパスフィルタ601を通じた輝度データYtgは、また、空間平均フィルタ604に供給される。そして、ローパスフィルタ602を通じた輝度データYmcは、また、空間平均フィルタ605に供給される。
【0141】
空間平均フィルタ604および605のそれぞれは、差分絶対値計算部603で画素差分を求める画素(注目画素という)の周囲の8個の画素と、自画素との9個の画素の平均値MtgおよびMmcを求める。そして、空間平均フィルタ604および605は、求めた平均値MtgおよびMmcは、差分絶対値計算部606に供給する。
【0142】
差分絶対値計算部606では、平均値Mtgと平均値Mmcとの平均差分絶対値ΔMeYを算出し、算出した平均差分絶対値ΔMeYを、加算率変換出力部609に供給する。
【0143】
そして、この例においては、輝度成分についてのノイズモデルメモリ607が設けられる。このノイズモデルメモリ607には、画素値の輝度値に対するノイズ標準偏差σが、予め算出されて記憶されている。すなわち、横軸に画素値の輝度値を取り、縦軸にノイズ標準偏差σを取ったとき、ノイズ標準偏差σは、例えば図15に示すようなものとなる。この図15に示すように、明るい画素に対しては、ノイズの標準偏差σは小さく、暗い画素に対しては、ノイズの標準偏差σは大きい。
【0144】
ノイズモデルは、ノイズが画像の明るさにより異なるものであるので、ノイズモデルメモリ607には、画像の照度Lxに応じた複数個のノイズモデルが記憶されている。
【0145】
そして、画像の照度Lxが、ノイズモデルメモリ607に、照度に応じたノイズモデルを選択用として供給される。これにより、どのノイズモデルを使用するかが、照度Lxにより定められる。
【0146】
また、ローパスフィルタ601を通じたターゲット画像データTGvの輝度データYtgが、ノイズモデルメモリ607に供給され、照度Lxおよび輝度データYtgにより定まるノイズ標準偏差σYが、ノイズモデルメモリ607から得られる。このノイズ標準偏差σYは、加算率変換出力部608および609に供給される。
【0147】
さらに、これら加算率変換出力部608および609には、動きベクトル算出部164からのヒット率βと、外部からのゲインGAと、相関性判定部167からの相関性フラグとが供給される。
【0148】
加算率変換出力部608は、画素差分絶対値ΔPxYと、ノイズ標準偏差σYと、ヒット率βと、ゲインGAとを変換パラメータとする変換関数と、相関性フラグとを用いて、画素差分絶対値ΔPxYに基づく加算率αYAを出力する。
【0149】
また、加算率変換出力部609は、平均差分絶対値ΔMeYと、ノイズ標準偏差σYと、ヒット率βと、ゲインGAとを変換パラメータとする変換関数と、相関性フラグとを用いて、平均差分絶対値ΔMeYに基づく加算率αYBを出力する。
【0150】
加算率変換出力部608および609は、基本的には、図16に示すように、ノイズ標準偏差σと、差分値とから加算率αを定める。なお、加算率変換出力部608および609では、ノイズ標準偏差σは、ノイズモデルメモリ607からのノイズ標準偏差σYであり、差分値は、画素差分絶対値ΔPxYおよび平均差分絶対値ΔMeYである。そして、出力加算率αは、加算率αYAおよびαYBである。
【0151】
この実施形態では、図16に示すように、差分値が、ノイズ標準偏差σの倍数として設定できる所定の第1の閾値以下のときには、背景画像部分であるとして、加算率αは、最大値であるα=1とする。
【0152】
そして、差分値が、(第1の閾値<差分値<第2の閾値)の範囲では、背景部分と動被写体部分とのいずれとの判断ができない部分として、図16に示すように、加算率αは差分値が大きくなるに従って直線的に小さくなるようにされる。そして、(差分値≧第2の閾値)の範囲では、動被写体部分であると判断して、加算率αは、最小値であるα=0とする。
【0153】
ターゲットブロックの背景一致度合いが不明であるときには、上述したように、動被写体部分での二重露光のような状態を軽減するために、第1の閾値は安全を見越した値とされて、加算率αは全体的に抑制される。つまり、背景画像部分であることが分かっていれば、第1の閾値および第2の閾値を大きな値として設定して、できるだけ大きな加算率での画像加算を行なうことができる。
【0154】
これに対して、この実施形態では、上述したように、ターゲットブロック毎に、背景一致度合いが、その指標値であるヒット率βとして算出される。したがって、この背景一致度合いの指標値βを用いることにより、背景静止画像部分では、より大きな加算率で加算を行うことが可能となる。ヒット率βを考慮した場合における加算率変換出力部608および609での加算率変換出力特性を図17に示す。
【0155】
すなわち、図17の例においては、ヒット率βに応じて、差分値に対する第1の閾値を変更するようにする。すなわち、ヒット率βが最低で、β=0であるとき(動被写体部分)では、図16の例の場合と同様に、第1の閾値は、標準偏差σの1倍(1σ)とする。そして、ヒット率βが、β>0であるときには、ヒット率βの値に応じて第1の閾値を、より大きなものに変更する。
【0156】
そして、図17の例においては、差分値が第1の閾値よりも大きくなったときからの加算率αの漸減直線の傾きは常に一定とされる。したがって、図17の例では、第2の閾値は、第1の閾値の変更に応じて自動的に変更される。
【0157】
例えば、図18に示すように、ヒット率βを考慮しない図16の例の場合(β=0)においては、差分値が2σであるときには、加算率αは常に0.5となる。これに対して、ヒット率を考慮する場合においては、図18に示すように、ヒット率β=1.0である背景静止画像部分では、加算率αはα=1となり、最大の加算率で加算されるようになる。
【0158】
このように、背景静止画像部分では、ヒット率βに応じて、より大きな加算率αが設定されるので、所期の通りのノイズ低減効果が得られる。また、動被写体部分では、ヒット率βに応じて加算率αは低く抑えられるので、二重露光の状態を軽減するという効果を維持することができる。
【0159】
なお、上述の例では、第1の閾値のみをヒット率βに応じて変更し、差分値が第1の閾値よりも大きくなったときからの加算率αの漸減直線の傾きは常に一定としたが、第2の閾値をもヒット率に応じて変更して、前記漸減直線の傾きも変更するようにしても良い。
【0160】
次に、加算率変換出力部608および609におけるゲインGAの寄与について説明する。
【0161】
ゲインGAは、以上のようにして算出される加算率αを、さらに、変更制御するパラメータである。前述したように、このゲインGAは、ユーザにより設定されたり、撮影条件に応じて撮影シーンの明るさに応じて設定されたりするものである。例えば、ユーザにより設定する場合には、NR加算により、より大きなノイズ低減効果を得ようとする場合には、ゲインGAは大きくする。すると、上述のようにして算出された加算率αが、ゲインGAに応じた値に変更制御される。
【0162】
加算率変換出力部608および609における、ゲインGAと、ヒット率βと、相関性フラグと、加算率αとの関係についての詳細は後述する。加算率αは、例えば、ヒット率β=0の場合の加算率を基準加算率αoとして、その基準加算率αoを基にした値として示される。ゲインGAは、ユーザにより、あるいは、撮影条件などにより、GA=0、GA=1、GA=2、GA=3の4段階に、変更設定可能とされる。そして、ヒット率βも、β=0、β=0.25、β=0.5、β=1.0の4段階に設定されるようにされる。そして、加算率αは、基準加算率αoを係数K倍(K≧1)したものとされるが、その係数Kが、ゲインGAとヒット率βと相関性フラグとの組み合わせに応じた倍数とされるものである。
【0163】
以上のようにして、加算率変換出力部608では、画素差分絶対値ΔPxYと、ノイズ標準偏差σYと、ヒット率βと、ゲインGAと、相関性フラグとから、輝度成分の画素差分に基づく出力加算率αYAを出力する。また、加算率変換出力部608では、平均差分絶対値ΔMeYと、ノイズ標準偏差σYと、ヒット率βと、ゲインGAと、相関性フラグとから、輝度成分の平均差分に基づく出力加算率αYBを出力する。
【0164】
色差信号成分については、平均差分は計算されず、画素差分絶対値のみが計算されて、上述した輝度成分と同様にして、色差成分に基づく加算率が算出される。
【0165】
図14は、加算率計算部171における、色差成分についての処理部分である。図14を参照して、色差成分についての加算率計算処理について説明する。
【0166】
すなわち、ターゲット画像のデータTGvのうちの青の色差データCbtgは、ローパスフィルタ621を通じて差分絶対値計算部623に供給される。また、動き補償画像のデータMCvのうちの青の色差データCbmcが、ローパスフィルタ622を通じて差分絶対値計算部623に供給される。差分絶対値計算部623は、画素毎に、色差データCbtgと色差データCbmcとの画素差分絶対値ΔPxCbを算出し、算出した画素差分絶対値ΔPxCbを、加算率変換出力部625に供給する。
【0167】
そして、輝度成分の場合と同様に、画素値の青の色差成分についてのノイズモデルメモリ624が設けられ、このノイズモデルメモリ624には、画素値の青の色差成分値に対するノイズ標準偏差σが、予め算出されて記憶されている。輝度成分の場合と同様に、ノイズモデルメモリ624には、画像の照度Lxに応じた複数個のノイズモデルが記憶されている。
【0168】
そして、ターゲットブロック毎の照度Lxと、ローパスフィルタ621を通じたターゲット画像データTGvの色差データCbtgが、ノイズモデルメモリ624に供給される。これにより、ノイズモデルメモリ624から、照度Lxおよび色差データCbtgにより定まるノイズ標準偏差σCbが得られ、加算率変換出力部625に供給される。
【0169】
さらに、この加算率変換出力部625には、動きベクトル算出部164からのヒット率βと、外部からのゲインGAと、相関性フラグとが供給される。
【0170】
加算率変換出力部625は、上述した加算率変換出力部608や609と同様の構成を有するもので、これよりは、画素差分絶対値ΔPxCbと、ノイズ標準偏差σCbと、ヒット率βと、ゲインGAと、相関性フラグとの組み合わせにより定まる加算率αCbが得られる。
【0171】
同様にして、ターゲット画像のデータTGvのうちの赤の色差データCrtgは、ローパスフィルタ631を通じて差分絶対値計算部633に供給される。また、動き補償画像のデータMCvのうちの赤の色差データCrmcが、ローパスフィルタ632を通じて差分絶対値計算部633に供給される。差分絶対値計算部633は、画素毎に、色差データCrtgと色差データCrmcとの画素差分絶対値ΔPxCrを算出し、算出した画素差分絶対値ΔPxCrを、加算率変換出力部635に供給する。
【0172】
そして、輝度成分の場合と同様に、画素値の赤の色差成分についてのノイズモデルメモリ634が設けられ、このノイズモデルメモリ634には、画素値の赤の色差成分値に対するノイズ標準偏差σが、予め算出されて記憶されている。輝度成分の場合と同様に、ノイズモデルメモリ634には、画像の照度Lxに応じた複数個のノイズモデルが記憶されている。
【0173】
そして、ターゲットブロック毎の照度Lxと、ローパスフィルタ631を通じたターゲット画像データTGvの色差データCrtgが、ノイズモデルメモリ634に供給される。これにより、ノイズモデルメモリ634から、照度Lxおよび色差データCrtgにより定まるノイズ標準偏差σCrが得られ、加算率変換出力部635に供給される。
【0174】
さらに、この加算率変換出力部635には、動きベクトル算出部164からのヒット率βと、外部からのゲインGAが供給される。
【0175】
加算率変換出力部635は、上述した加算率変換出力部608や609と同様の構成を有するもので、これよりは、画素差分絶対値ΔPxCrと、ノイズ標準偏差σCrと、ヒット率βと、ゲインGAと、相関性フラグとの組み合わせにより定まる加算率αCrが得られる。
【0176】
このような加算率の制御は、画素単位の比較だけでなく、例えば、画素分散値、画素平均値などに適用してもよい。すなわち、例えば、ターゲット画像の画素分散値に基づいても、加算率を求めるようにしてもよい。分散値は、注目画素(自画素)と、その周囲近傍の例えば8画素とについて求める。この分散値は、輝度成分および色差成分のそれぞれについて求める。そして、求めた分散値のすべてから、加算率を算出する。
【0177】
すなわち、図13に示すように、ターゲットブロックの画像データTGvの輝度データYtgは、ローパスフィルタ601を通じて空間分散フィルタ610に供給される。そして、この空間分散フィルタ610から、注目画素(自画素)と、その周囲近傍の例えば8画素との合計9個の画素についての分散値VaYが得られる。
【0178】
また、図14に示すように、ターゲットブロックの画像データTGvの青の色差データCbtgは、ローパスフィルタ621を通じて空間分散フィルタ626に供給される。そして、この空間分散フィルタ626から、注目画素(自画素)と、その周囲近傍の例えば8画素との合計9個の画素についての分散値VaCbが得られる。
【0179】
さらに、ターゲットブロックの画像データTGvの赤の色差データCrtgは、ローパスフィルタ631を通じて空間分散フィルタ636に供給される。そして、この空間分散フィルタ636から、注目画素(自画素)と、その周囲近傍の例えば8画素との合計9個の画素についての分散値VaCrが得られる。
【0180】
そして、分散値VaY、VaCbおよびVaCrは、図13に示すように、加算部611で加算された後、加算率変換出力部612に供給される。さらに、加算率変換出力部612には、動きベクトル算出部164からのヒット率βと、外部からのゲインGAが供給される。
【0181】
この加算率変換出力部612で求める加算率αCは、ターゲットブロックの画像が、テクスチャー成分が少なく、輝度レベル変化がなだらかな場合(グラデーションの場合)に、その加算率を抑えることを目的としている。この実施形態のようにブロック分割した画像処理においては、人間の視覚効果により、ブロック境界が非常に目立ち易くなり、特に、輝度レベル変化がなだらかな場合には殊更であることを考慮している。
【0182】
上記の目的を実現させるために、基本的には、ブロック内の分散値が低いほど加算率を低くすれば良い。この実施形態の加算率変換出力部612では、図19(A)に示すように、分散値を横軸に取ると共に、分散値を所定の段階幅毎に幾つかの段階に分け、出力加算率を各段階の分散値に応じて決定するようにする。
【0183】
図19(A)の例では、分散値を段階幅8毎に、5段階に分け、分散値0−7に対する加算率を0.0、分散値8−15に対する加算率を0.25、分散値16−23に対する加算率を0.5、分散値24−31に対する加算率を0.75、分散値32以上に対する加算率を1.0とする。
【0184】
ところで、画像を重ね合わせる場合に、上述のようなブロック毎の境界が目立つのは、重ね合わせる画像に差異があるからである。換言すれば、背景静止画像部分については、重ね合わせる画像に差異はないので、分散値に応じた加算率の抑制をする必要はない。
【0185】
そこで、この実施形態では、加算率変換出力部612では、ヒット率βに応じて、分散値の段階幅を制御し、ヒット率βが大きいほど、分散値の段階幅を小さくするようにする。これにより、背景静止画像部分については、分散値に応じた加算率の低減を抑制し、できるだけ、高い加算率で加算ができるようにしている。
【0186】
すなわち、図19の例では、ヒット率βが、例えばβ=0というように低い値のときには、分散値の段階幅は、図19(A)に示すように、「8」とする。そして、ヒット率βが、例えばβ=0.5というような値のときには、分散値の段階幅は、図19(B)に示すように、「4」とする。
【0187】
さらに、ヒット率βが、背景静止画部分であることを示すβ=1であるときには、分散値の段階幅は、図19(C)に示すように、「0」とする。つまり、このときには、分散値による加算率の低減は行なわない。
【0188】
上述したように、加算率変換出力部612にも、ゲインGAが供給されており、このゲインGAによる出力加算率の制御が行なえるようにしている。この例の場合、ゲインGAにより、ヒット率βとの組み合わせにより、前述した分散値の段階幅を変更制御するようにする。
【0189】
図20に、加算率変換出力部612における、ゲインGAと、ヒット率βと、段階幅との関係を示す。この図20の例においても、ゲインGAは、ユーザにより、あるいは、撮影条件などにより、GA=0、GA=1、GA=2、GA=3の4段階に、変更設定可能とされる。そして、ヒット率βも、β=0、β=0.25、β=0.5、β=1.0の4段階に設定されるようにされる。
【0190】
なお、図20の例においては、段階幅については、ビットシフト演算により実現可能なように構成している。
【0191】
なお、図19に示したように、この実施形態では、分散値を用いた加算率の算出に際しては、分散値について、段階幅を用いた複数段階を設定する構成としたが、複数段階とするのではなく、当該複数段階の間を線形補間するようにする構成としても良い。また、線形補間ではなく、2次曲線補間や3次曲線補間をするようにしても良い。
【0192】
以上のようにして、各加算率変換出力部608、609、612、625および635では、輝度差分値や色差差分値、輝度平均差分値、分散値などに応じると共に、ヒット率βと相対性フラグとに応じた値として、加算率αYA、αYB、αCb、αCrが算出され、ヒット率βに応じた値として、αCが算出される。
【0193】
そして、この実施形態では、これらの加算率αYA、αYB、αC、αCb、αCrが合成されて、加算率計算部171の出力加算率αが得られる。すなわち、図13に示すように、加算率変換出力部608および609からの加算率αYAおよびαYBは、乗算器613で乗算され、その乗算結果が乗算器614に供給される。この乗算器614には、加算率変換出力部625からの加算率αCbが供給されて、乗算器613の乗算結果と乗算される。
【0194】
そして、この乗算器614の乗算結果は、乗算器615に供給される。この乗算器615には、加算率変換出力部635からの加算率αCrが供給されて、乗算器614の乗算結果と乗算される。また、この乗算器615の乗算結果は、乗算器616に供給される。この乗算器616には、加算率変換出力部612からの加算率αCが供給されて、乗算器615の乗算結果と乗算される。
【0195】
以上により、乗算器616からは、算出された全ての加算率αYA、αYB、αC、αCb、αCrが乗算された乗算結果が得られ、これが加算率計算部171の出力加算率αとして出力される。
【0196】
こうして、加算率計算部171からは、画素単位で、ヒット率βと相関性フラグとに応じた値として加算率αが算出され、加算部172に供給される。
【0197】
加算部172では、この加算率計算部171からの画素毎の加算率αに応じて、ターゲットブロックの画像データTGvと、動き補償ブロックの画像データMCvとが画素単位で加算される。そして、加算部172からの加算画像データは、メモリ4、静止画コーデック18を介して、ストレージ5に記録される。
【0198】
上述した実施形態によれば、ターゲットブロック毎に背景一致度合いの指標値であるヒット率βを用いて、静止画像部分では、加算率αを大きくすることができるので、NR画像として、ノイズ低減効果が大きい画像が得られるという顕著な効果を奏する。
【0199】
(より改善された加算率算出について)
本来、ターゲット画像と動き補償画像との間における加算率を決める際には、撮影シーンでのノイズ標準偏差を考慮して閾値を規定し、|ターゲットブロック−動き補償ブロック|>閾値であるときは動体と判断して、ターゲットブロックを残すようにし、|ターゲットブロック−動き補償ブロック|≦閾値であるときは、ノイズの範囲内であるとし、ターゲットブロックと動き補償ブロックとを加算すれば良い。しかしながら、この方法では誤加算による副作用を考慮すると、本来加算するために使用されるべき閾値よりも低い値を閾値として設定しなくてはならない。つまり、NR効果を低くする必要がある。この問題に対して、特許文献1にも記載されているように、ヒット率βを参考に、背景であることを考慮して、加算率を上げる方法が有効である。
【0200】
しかしながら、前述したとおり、撮影領域内に存在する物体が影に隠れてしまった場合や変形した場合など、正確性の高い動き補償画像が存在しない場合にも関わらず、GMVヒット率が高く算出された場合などには、正確性の低い動き補償画像がターゲット画像に加算されてしまい、透けやボケのある画像が生成されてしまうという問題があった。
これはNRアプリケーションの本質的な課題であり、NR効果を高めるためには必ず副作用が発生するという問題である。
【0201】
そこで、前述したとおり、NR効果を高めるためのヒット率βという付加情報に対して、その副作用を防止する相関性フラグという付加情報を作成することにする。一般的に、効果を高めるための付加情報と副作用を防止するための付加情報とがある場合、その関係は、図21に示すようになるはずである。この実施形態では、効果を高めるための付加情報としてはヒット率βを使用している。すなわち、ヒット率βは、動き検出(ME)におけるサーチの過程において、そのサーチ範囲の中で相対的に最もターゲット画像との相関性が高い動き補償画像(MC画像)を生成するためのベクトルがグローバル動きベクトル(GMV)だったか否かを示す情報として使用し得る。
【0202】
一方、副作用を防止するための付加情報は、ターゲット画像と動き補償画像(MC画像)とを比較することにより得ることができる。すなわち、ターゲット画像と動き補償画像(MC画像)との相関性に対して、人間がおかしいと感じることができる絶対的な情報としてターゲット画像と動き補償画像(MC画像)との比較結果を取得し得る。この実施形態では、このように、相対的な情報としての付加情報および絶対的な情報としての付加情報の2種類の付加情報を用意し、この2種類の付加情報に基づいて加算率を算出することができる。これにより、例えば、動き補償ブロックを確認し、動き補償ブロックがターゲットブロックと大きく異なるときは加算しない仕組みを取り入れることができる。
【0203】
(相関性フラグ生成処理の詳細について)
絶対的な情報としての付加情報である相関性フラグは、上記したように、相関性判定部167により生成される。相関性判定部167は、動き補償画像生成部により生成された動き補償画像とターゲット画像との相関性をターゲットブロック毎に判定する。ここでは、動き補償ブロックとターゲットブロックとしては、動き補償画像生成部166から供給されたものを使用し得る。相関性フラグには、例えば、相関性を示す値「0」〜「1」が設定されている。相関性判定部167により生成された相関性フラグは、加算率計算部171に供給される。
【0204】
動き補償画像とターゲット画像との相関性の算出手法としては、様々なものが想定されるが、例えば、YC信号の輝度成分(Y)、および赤/青の色差成分(Cr/Cb)のそれぞれに対して判定を行うことができる。すなわち、相関性判定部167は、YC信号の輝度成分(Y)、および赤/青の色差成分(Cr/Cb)の各々に対する判定値を3つ算出し、算出した3つの判定値に対応する1つの相関性が設定された相関性フラグを生成することができる。3つの判定値と1つの相関性との対応関係については、あらかじめ設定しておくことができる。
【0205】
相関性判定部167は、例えば、対応するブロック単位におけるターゲットブロックと動き補償ブロックとの差分の平均値が所定の平均値よりも小さい場合には、相関性が高いと判断して相関性フラグに高い値を設定し、対応するブロック単位におけるターゲットブロックと動き補償ブロックとの差分の平均値が所定の平均値よりも大きい場合には、相関性フラグに低い値を設定することができる。対応するブロック単位におけるターゲットブロックと動き補償ブロックとの差分の平均値としては、例えば、対応する動き補償ブロック(例えば、8×8画素)およびターゲットブロック(例えば、8×8画素)の差分の平均値を使用することができる。相関性フラグに設定される高い値としては、例えば、「1」「0.5」などが想定され、相関性フラグに設定される低い値としては、例えば、「0.25」「0」などが想定される。
【0206】
また、平均値の代わりにコントラストを使用することもできる。その場合には、相関性判定部167は、例えば、対応するブロック単位におけるターゲットブロックと動き補償ブロックとの各々のコントラストの差分の平均値が所定の平均値よりも小さい場合には、相関性が高いと判断して相関性フラグに高い値を設定し、コントラストの差分の平均値が所定の平均値よりも大きい場合には、相関性フラグに低い値を設定することができる。コントラストの差分としては、例えば、対応する動き補償ブロック(例えば、8×8画素)およびターゲットブロック(例えば、8×8画素)の各々の最大差(最大画素と最小画素との差)の差分を使用することができる。
【0207】
また、平均値の代わりに分散値を使用することもできる。その場合には、相関性判定部167は、例えば、対応するブロック単位におけるターゲットブロックと動き補償ブロックとの差分の分散値が所定の分散値よりも小さい場合には、相関性が高いと判断して相関性フラグに高い値を設定し、対応するブロック単位におけるターゲットブロックと動き補償ブロックとの差分の分散値が所定の分散値の差分よりも大きい場合には、相関性フラグに低い値を設定することができる。差分の分散値としては、例えば、対応する動き補償ブロック(例えば、8×8画素)およびターゲットブロック(例えば、8×8画素)の差分の分散値を使用することができる。
【0208】
また、平均値の代わりにSAD値を使用することもできる。その場合には、相関性判定部167は、例えば、対応するブロック単位におけるターゲットブロックと動き補償ブロックとのSAD値の差分が所定のSAD値の差分よりも小さい場合には、相関性が高いと判断して相関性フラグに高い値を設定し、SAD値の差分が所定のSAD値の差分よりも大きい場合には、相関性フラグに低い値を設定することができる。SAD値の差分としては、例えば、対応する動き補償ブロック(例えば、8×8画素)およびターゲットブロック(例えば、8×8画素)の各々の差分絶対値和の差分を使用することができる。
【0209】
また、平均値、コントラスト、分散値およびSAD値のうちのいずれか2つ以上を組み合わせて、相関性判定のために使用することとしてもよい。図22は、平均値と分散値とを使用して、相関性フラグに値を設定する手法の一例を示したものである。図22に示すように、相関性判定部167は、まず、平均値の差分が所定の平均値の差分よりも小さいか否かを判定し(ステップS401)、平均値の差分が所定の平均値の差分よりも小さい場合には、ステップS402に進み、その他の場合には、相関性フラグに「0」を設定する。
【0210】
次いで、相関性判定部167は、分散値が所定の第1分散値よりも小さいか否かを判定し(ステップS402)、分散値の差分が所定の分散値の差分よりも小さい場合には、相関性フラグに「1」を設定し、その他の場合には、ステップS404に進む。次いで、相関性判定部167は、分散値が所定の第2分散値よりも小さいか否かを判定し(ステップS404)、分散値が所定の第2分散値よりも小さい場合には、相関性フラグに「0.5」を設定し、その他の場合には、相関性フラグに「0.25」を設定する。以上で、相関性フラグに値を設定する処理一例は終了となる。
【0211】
このように、ヒット率βを用いた場合に生じる欠点を補うために、相関性フラグを使用することができる。この相関性フラグは、ヒット率βとは関係なくターゲット画像とMC画像との相関性を絶対的に評価したものである。相関性フラグは、平均値、コントラスト、分散値およびSAD値を単独で使用して判定することもできるし、図22に示したように、平均値と分散値との組み合わせにより判定することもできる。また、平均値とSAD値との組み合わせにより判定することもできる。この場合に使用される閾値は、例えば、制御部1(例えば、CPUなど)から絶対的な指標として与えることができる。
【0212】
相関性フラグは、例えば、0〜1までを分割したものであり、相関性フラグに設定される「0」は「相関性がなく、GMVヒットであっても加算するのは危険」、相関性フラグに設定される「1」は「相関性が高く、GMVヒットでなくても加算率を上げることできる」という意味で使用することができる。相関性フラグに設定される「1」は、従来の「GMVヒットであれば強制加算する」と同様に使用され得る。なお、本発明で相関性フラグに設定される値は、「0」「0.25」「0.5」「1」の4段階にしているが、段数や値は、特に限定されるものではない。
【0213】
これにより、例えば、ヒット率βが「0」でも、相関性フラグが「1」であれば、加算率を高くすることができる。また、ヒット率βが「1」であっても、相関性フラグが「0」であれば、加算率を高くすることを防ぐことができる。ヒット率βは、隣り合うブロックで急な変化がないように補正され得るものである。相関性フラグに設定される値に対して行われる補正も同様に有効である。
【0214】
(より改善された加算率算出についての詳細)
前述したように、この実施形態においては、相関性フラグとヒット率βとを使用して加算率を算出することができる。図23は、ヒット率βおよび相関性フラグと加算率との関係を示す図である。図23に示すように、ヒット率βと相関性フラグとの各々を縦軸および横軸として示し、ヒット率βの閾値Tβと相関性フラグの閾値TRとにより区分けすれば、各領域に対して、ターゲット画像と動き補償画像との加算に関する説明を付することができる。
【0215】
より詳細には、加算率計算部171は、相関性(相関性フラグに設定されている値)が閾値TRよりも大きい場合であり、かつ、ヒット率βが閾値Tβよりも大きい場合には、MC画像が絶対的にも相対的にも有効である場合と想定される。この場合には、MC画像を積極的にターゲット画像に加算することができる。また、加算率計算部171は、相関性が閾値TRよりも小さい場合であり、かつ、ヒット率βが閾値Tβよりも大きい場合には、MC画像が相対的に有効であるが絶対的には無効である場合と想定される。例えば、サーチ範囲内に有効なMC画像が存在しない場合などが該当すると想定される。
【0216】
また、加算率計算部171は、相関性が閾値TRよりも大きい場合であり、かつ、ヒット率βが閾値Tβよりも小さい場合には、MC画像が相対的には無効であるが絶対的には有効である場合と想定される。例えば、GMVを使用してMC画像を生成してはいないが、有効なMC画像を生成できている場合などが該当すると想定される。また、加算率計算部171は、相関性が閾値TRよりも小さい場合であり、かつ、ヒット率βが閾値Tβよりも小さい場合には、MC画像が絶対的にも相対的にも無効である場合と想定される。例えば、この場合には、MC画像を積極的にターゲット画像に加算できないと想定される。
【0217】
加算率計算部171においては、このように説明される加算手法に従って、加算率を算出すればよい。図24は、ヒット率βおよび相関性フラグと加算率αとの関係の一例を示す図である。なお、図24に示した場合においては、閾値Tβと閾値TRとは、共に、「0」より大きく、「0.25」より小さい値として設定されている。また、図24においては、ゲインGAが「3」のときの基礎加算率α0に対する加算率αの倍数により加算率を示している。したがって、ゲインGAの値によってマトリクスも変更され得るものであり、ゲインGAは、前述したような様々な方式により選択され得るものである。
【0218】
ここで、相関性が閾値TRよりも大きい場合であり、かつ、ヒット率βが閾値Tβよりも大きい場合は、図24に示したマトリクスにおいては、相関性フラグの値が「0.25」「0.5」「1」のいずれかであり、かつ、ヒット率βが「0.25」「0.5」「1」のいずれかである場合に相当する。この場合には、上記したように、MC画像を積極的にターゲット画像に加算することができるため、図24に示すように、相関性を一定とした場合に、ヒット率βの上昇に伴って加算率を上昇させることとすればよい。また、この場合には、図24に示すように、ヒット率βを一定とした場合に、相関性に関わらず加算率αを一定とすればよい。
【0219】
また、相関性が閾値TRよりも小さい場合であり、かつ、ヒット率βが閾値Tβよりも大きい場合は、図24に示したマトリクスにおいては、相関性フラグの値が「0」であり、かつ、ヒット率βが「0.25」「0.5」「1」のいずれかである場合に相当する。この場合には、上記したように、MC画像が相対的に有効であるが絶対的には無効である場合と想定されるため、相関性が閾値TRよりも大きい場合であり、かつ、ヒット率βが閾値Tβよりも大きい場合と比較して、相関性を一定とした場合に、ヒット率βの増加に伴う加算率αの上昇を抑制させることとすればよい。
【0220】
また、相関性が閾値TRよりも大きい場合であり、かつ、ヒット率βが閾値Tβよりも小さい場合は、図24に示したマトリクスにおいては、相関性フラグの値が「0.25」「0.5」「1」のいずれかであり、かつ、ヒット率βが「0」である場合に相当する。この場合には、上記したように、MC画像が相対的には無効であるが絶対的には有効である場合と想定されるため、ヒット率βを一定とした場合に、相関性の上昇に伴って加算率αを上昇させればよい。
【0221】
(ブロックマッチングから重ね合わせまでの詳細)
図25に、グローバルモーションおよびグローバル動きベクトルGMVを、基底面でのローカル動きベクトルLMVと比較する場合の処理の全体フローを示す。ここでは、一例として、グローバルモーションを複数フレーム間のローカル動きベクトルから算出する方法について説明する。なお、本発明の実施形態では、ブロック単位のローカルベクトルとフレーム単位のグローバルベクトルを用いて、効果と副作用のバランスを取りながら画像の加算率を制御することができれば良く、グローバルモーションはどのような方法で算出しても良い。
【0222】
縮小面動きベクトルMVsや中間面動きベクトルMVmを、基底面に対する画像縮小倍率の逆数倍することで、基底面基底面動きベクトルMVbを得ることができる。そこで、グローバルモーションGMを算出するためには、基底面動きベクトルMVbを求めなくても、縮小面動きベクトルMVsや中間面動きベクトルMVmから、グローバルモーションGMを求めるようにすることもできる。
【0223】
例えば、縮小面動きベクトルMVsからグローバルモーションGMを求める場合には、先ず、動きベクトル算出部164で、縮小面におけるローカル動きベクトルLMV(縮小面動きベクトルMVs)を算出する。そして、動きベクトル算出部164で、算出した縮小面動きベクトルMVsについての信頼性指標Ftを算出する。また、動きベクトル算出部164で、この縮小面のローカル動きベクトルLMVについての信頼性指標値Ftを用いて、信頼性の高いローカル動きベクトルLMVを抽出する。そして、動きベクトル算出部164で、当該信頼性の高いローカル動きベクトルLMVを用いて、グローバルモーションGMおよびグローバル動きベクトルGMVを算出するようにする。
【0224】
中間面までの階層でブロックマッチングを行なって得た中間面動きベクトルMVmから、グローバルモーションGMを用いる場合も同様にして算出することができる。ただし、グローバル動きベクトルGMVの位置のSAD値についての補正を行う場合のオフセット値OFSやゲインgは、それぞれの階層に応じて適切に設定するようにする。このようにして縮小面や中間面のローカル動きベクトルを用いて、グローバルモーションGMおよびグローバル動きベクトルGMVを求めるメリットは、次の通りある。
【0225】
1つは、先に述べたように縮小面や中間面は、その生成にあたってローパスフィルタが施されるため、ノイズが除去され、結果として、得られたローカル動きベクトルがノイズの影響を受けにくい点である。
【0226】
他の1つは、縮小面や中間面では、ターゲットブロックの数が少なくなるので、ローカル動きベクトルの数は少なくなり、演算コストが小さくなると共に、処理に要する時間や小さいので、処理の高速化が可能であることである。
【0227】
上述の例のように、通常は、ハードウェアの制約から、縮小面、中間面、基底面のマッチング処理ブロック単位は同じサイズとなる。このため、画サイズの小さい縮小面のターゲットブロックの数(=ローカル動きベクトルの数)は、基底面のみでブロックマッチングを行う場合に較べて相対的に少なくなる。
【0228】
そして、縮小面動きベクトルからグローバルモーションおよびグローバル動きベクトルGMVを求める場合には、中間面および基底面での動きベクトル検出処理は省略することができる。また、中間面動きベクトルからグローバルモーションおよびグローバル動きベクトルGMVを求める場合には、基底面での動きベクトル検出処理は省略することができる。したがって、処理の高速化が図れる。特に、縮小面動きベクトルMVsを用いてグローバルモーションGMおよびグローバル動きベクトルGMVを求めるようにした場合には、そのメリットは、大きい。
【0229】
先ず、動きベクトル算出部164では、縮小面ブロックマッチングを行なって、縮小面におけるターゲットブロック毎のローカル動きベクトルLMVsを求める。そして、ターゲットブロック毎の縮小面ローカル動きベクトルLMVsの信頼性を評価して、信頼性の高い縮小面ローカル動きベクトルLMVsのみを用いてグローバルモーションGMを算出する。そして、算出したグローバルモーションからグローバル動きベクトルGMVを算出しておく(ステップS501)。
【0230】
次に、階層化ブロックマッチングのため、縮小面再ブロックマッチングを行い、縮小面ローカル動きベクトルLMVsを再算出する(ステップS502)。次に、縮小面ローカル動きベクトルLMVsから中間面におけるターゲットブロックに対する参照ブロックについてのサーチ範囲を求め、中間面ブロックマッチングを行う。そして、中間面ローカル動きベクトルLMVmを算出する(ステップS503)。
【0231】
次に、中間面ローカル動きベクトルLMVmから基底面におけるターゲットブロックに対する参照ブロックについてのサーチ範囲を求め、基底面ブロックマッチングを行う。そして、基底面ローカル動きベクトルLMVbを算出する。そして、基底面ローカル動きベクトルLMVbと、ステップS501で算出されたグローバル動きベクトルGMVとを用いて、前述した背景一致度合いの評価判定を、ターゲットブロック毎に行う。そして、その評価判定に基づいて、ヒット率βを求めると共に、NR処理用動きベクトルMVnrを検出する(ステップS504)。
【0232】
次に、動き補償画像生成部166が、NR処理用動きベクトルMVnrを用いて、参照フレームの画像データから、ブロック単位で、動き補償画像を生成する(ステップS505)。上記した相関性フラグは、動き補償画像の生成とともに生成され、縮小面および中間面においては生成しなくてよい。また、加算率計算部171は、ステップS504で算出されたヒット率βと相関性フラグとに基づいて、上述したようにして、画素単位で加算率αを計算する(ステップS506)。そして、加算部172では、ステップS505で生成された動き補償画とターゲット画像とを、ブロック単位で、ステップS506で計算された加算率αで加算し、NR画像を生成する(ステップS507)。
【0233】
なお、上述の図25の処理フローの説明では、1回目のブロックマッチングによる動きベクトル検出時に求められたグローバルモーションGMおよびグローバル動きベクトルGMVは、階層化の再ブロックマッチングの基底面動きベクトルに対してのみ適用した。
【0234】
しかし、階層化の再ブロックマッチングの縮小面、中間面でも、グローバル動きベクトルGMVと、縮小面ローカル動きベクトルLMVs、中間面ローカル動きベクトルLMVmとを用いたターゲットブロックの背景一致度合い評価を行なってもよい。そして、その場合には、その結果としての動きベクトルMVnrを、縮小面、中間面における各ターゲットブロックについての動きベクトル出力とするようにする。
【0235】
そのようにした場合、縮小面、中間面における各ターゲットブロックについての動きベクトル(ローカル動きベクトル)を、通常よりも精度良く取得することが可能となる。基底面においても同様である。その際に、前述もしたように、オフセット値OFSやゲインgは、各階層に応じて適切に設定するものである。
【0236】
(加算処理の詳細)
上記したように、加算部172は、加算率αを用いて、ターゲット画像に動き補償画像を、画素毎に重ね合わせてNR画像を生成する。ここで、加算部172による加算率αを用いた重ね合わせの手法については様々なものが想定される。図26は、ターゲット画像と動き補償画像との重ね合わせの一例を説明するための図である。
【0237】
図26に示した例では、ターゲット画像Aに対して動き補償画像Bを重ね合わせ、この重ね合わせにより生成された画像B’に対して動き補償画像Cを重ね合わせ、この重ね合わせにより生成された画像C’に対して動き補償画像Dを重ね合わせることにより、重ね合わせ後の画像を生成する例について示している。しかし、ターゲット画像に重ね合わせる動き補償画像の枚数は3枚以外でもよく、1枚以上であれば特に限定されるものではない。
【0238】
図26に示すように、重ね合わせの回数を増加させるとともに、Pの値を「1/2」「1/3」「1/4」・・・と下げながら、動き補償画像を次々と加算していくことができる。すなわち、重ね合わせの回数をn回とした場合、Pの値を「1/n−1」として、動き補償画像を加算する。このような加算により、ターゲット画像および動き補償画像の全てを均等な重みにより加算することができる。
【0239】
<2.まとめ>
本発明の実施形態において、画像処理装置は、被写体が大部分を占める場合にもNR効果を挙げつつ、正確性の低い動き補償画像がターゲット画像に加算されてしまう可能性を低減することができる。
【0240】
本発明の実施形態においては、静止画撮影について主に説明しているが、本発明の実施形態におけるフレームNRを動画フレームNRに応用することも可能である。ただし、動画フレームNRに適用する場合は、以下のような注意が必要である。
【0241】
静止画撮影時におけるGM(グローバルモーション)計算は、GMが正しく算出されることが前提となっている。すなわち、GMが正しく算出できない場合は、その参照フレームは加算されない。つまり、N枚目の画像とN+1枚目の画像でGMが求まらない場合、N枚目の画像がそのまま加算画となり、次に、N+2枚目の画像と処理を行う。これは、出力画像がターゲット画像となるためであり、ターゲット画像にN枚加算したことによるNR効果があるためである。
【0242】
例えば、最終的にM枚加算する予定だった画像の中で、1枚GMが正しく求まらない画像があったとする。この1枚は撮影条件など信頼性にかける画像であること考慮すると、M−1枚で加算をした方が理想の画像を得ることができるという考えである。一方、動画フレームNRの場合は、GMが算出できない場合に、参照フレームを加算しないという手段は取れない。これは、IIR型フィルタを構成している関係で、参照画像に、過去Nフレーム分のNR効果があるためである。したがって、動画フレームNRでは、静止画撮影のように2枚の画像からGMを求めるだけではなく、光学センサの情報、手ぶれの情報、また時間的に前後のフレームの情報などを利用し、常にGMが求まる状態にしなくてはいけない。
【0243】
以上、添付図面を参照しながら本発明の好適な実施形態について詳細に説明したが、本発明はかかる例に限定されない。本発明の属する技術の分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本発明の技術的範囲に属するものと了解される。
【0244】
例えば、上記実施形態では、画像処理装置として撮像装置を例示したが、本発明はかかる例に限定されない。例えば、画像処理装置は、保存されている画像データを加工するために用いられる独立した装置であってもよく、また、画像データを加工するアプリケーションとしてPC(Personal Computer)などの情報処理装置に組み込まれていてもよい。
【0245】
また、上記実施形態では、画像処理装置の動き補償部、および画像重ね合わせ部の機能がDSPを用いて実現される場合を例示したが、本発明はかかる例に限定されない。例えば、これらの各部の機能は、専用のハードウェアによって実現されてもよく、またCPUを用いてソフトウェアとして実現されてもよい。
【符号の説明】
【0246】
10 撮像装置(画像処理装置)
1 制御部
16 動き補償部
163 マッチング処理部
164 動きベクトル算出部
165 コントロール部
166 補償画像生成部
167 相関性判定部
171 加算率計算部
172 加算部
【技術分野】
【0001】
本発明は、画像処理装置および画像処理方法に関し、特に、画像に含まれるノイズを低減する画像処理装置および画像処理方法に関する。
【背景技術】
【0002】
画像の撮影において、連続して撮影された複数の画像(フレーム)を重ね合わせて、ノイズが低減された画像を得る技術が知られている。例えば、処理対象となる画像(ターゲット画像)に、ターゲット画像の前または後に連続して撮影され、動き検出および動き補償によって位置合わせされた複数の画像(参照画像)を重ね合わせた場合、略同一の画像が時間方向で積分されることになるため、各画像にランダムに含まれるノイズが相殺され、結果としてノイズが低減される。以下、このような方法によるノイズ低減(NR:Noise Reduction)を、フレームNRという。
【0003】
前記動き補償の方法は様々であるが、1画素ごとに動き補償をすると処理時間およびコストが大きいので、画像を複数個のブロックに分割してブロックごとに動き補償を行う方法がある。また、前記分割されたブロックごとに動きベクトルを算出すれば、動きベクトルが求まると同時に動き補償ブロックを生成することができる。
【0004】
ここで、ターゲット画像内に設定された多数のターゲットブロックの画像内容との相関が最も強いとして検出された参照ブロックの位置は、参照画像におけるターゲットブロックの位置(動いた後の位置)として検出される。検出された参照ブロックは、動き補償ブロックと認識される。検出された動き補償ブロックの位置と、ターゲットブロックの位置との間の位置ずれ量は、方向成分を含む量としての動きベクトル(ローカル動きベクトル)として検出され得る。
【0005】
従来、2画像間の画像全体に加わっている変形を表わすグローバルモーションを算出することが行なわれている。このグローバルモーションの算出方法は、複数フレーム間の画像情報を用いて計算する方法や、ジャイロ素子など画像情報以外の情報を元に算出する方法がある。グローバルモーションは、通常は、画像の静止画部分としての背景の動きおよび動き量を示すものとなる。
【0006】
グローバルモーションを用いた技術としては、例えば、画像内における背景静止画部分と動被写体部分を分離し、グローバルモーションから生成したグローバル動きベクトルと一致したローカル動きベクトルを用いて動き補償画像(MC画像)を生成し、動き補償画像とターゲット画像とを重ね合わせる技術について開示されている(例えば、特許文献1参照)。この技術では、グローバル動きベクトルとローカル動きベクトルとの一致度合いをGMV(グローバル動きベクトル)ヒット率(単に、「ヒット率」と言う場合もある。)として使用している。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開2009−290827号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
しかしながら、上記した技術には、例えば、撮影領域内に背景が大部分を占める場合(例えば、夜景撮影を行った場合など)には、高いNR効果を得ることができるが、撮影領域内に被写体が大部分を占める場合などには、NR効果を挙げることが難しいという問題があった。これは、例えば、上記した技術によれば、GMVヒット率が低い場合には一律的にターゲット画像に対する動き補償画像の加算を積極的に行わないこととしていることが要因の1つである。したがって、GMVヒット率が高くなり易い背景については加算が積極的に行われる一方、GMVヒット率が低くなり易い被写体(以下、「動体」とも言う。)については、ターゲット画像と動き補償画像との相関性が高い場合であっても加算が行われず、高いNR効果を期待できない。
【0009】
また、撮影領域内に存在する物体が影に隠れてしまった場合や変形した場合など、正確性の高い動き補償画像が存在しない場合にも関わらず、GMVヒット率が高く算出された場合などには、正確性の低い動き補償画像がターゲット画像に加算されてしまい、透けやボケのある画像が生成されてしまうという問題があった。これは、例えば、上記した技術によれば、特徴点がない領域は背景に相当し、特徴点がある領域は被写体に相当するという近似が行われるため、特徴点がない被写体については背景と認識され、グローバル動きベクトルを用いた動き補償画像がターゲット画像に対して積極的に加算されてしまうことが要因の1つである。
【0010】
そこで、本発明は、上記問題に鑑みてなされたものであり、本発明の目的とするところは、被写体が大部分を占める場合にもNR効果を挙げつつ、正確性の低い動き補償画像がターゲット画像に加算されてしまう可能性を低減することが可能な、新規かつ改良された画像処理装置および画像処理方法を提供することにある。
【課題を解決するための手段】
【0011】
上記課題を解決するために、本発明のある観点によれば、参照画像のターゲット画像に対する動きをターゲットブロック毎にローカル動きベクトルとして算出するとともに、ローカル動きベクトルとグローバル動きベクトルとの一致度合いを示す指標値を上記ターゲットブロック毎に算出する動きベクトル算出部と、上記動きベクトル算出部により算出された上記ローカル動きベクトルに基づいて参照ブロックを動き補償した動き補償ブロックを上記ターゲットブロック毎に生成することにより、動き補償画像を生成する動き補償画像生成部と、上記動き補償画像生成部により生成された上記動き補償画像と上記ターゲット画像との相関性を上記ターゲットブロック毎に判定する相関性判定部と、上記相関性判定部により判定された上記相関性と上記動きベクトル算出部により算出された上記指標値とに基づいて、上記ターゲット画像と上記動き補償画像とを加算する加算部と、を備える、画像処理装置が提供される。
【0012】
上記画像処理装置は、上記相関性判定部により判定された上記相関性と上記動きベクトル算出部により算出された上記指標値とに基づいて加算率を算出する加算率計算部をさらに備え、上記加算部は、上記加算率計算部により算出された上記加算率に基づいて、上記ターゲット画像と上記動き補償画像とを加算することとしてもよい。
【0013】
上記加算率計算部は、上記相関性が第1閾値よりも大きい場合であり、かつ、上記指標値が第2閾値よりも大きい場合には、上記相関性を一定とした場合に、上記指標値の上昇に伴って上記加算率を上昇させることとしてもよい。
【0014】
上記加算率計算部は、上記相関性が第1閾値よりも小さい場合であり、かつ、上記指標値が第2閾値よりも大きい場合には、上記相関性が上記第1閾値よりも大きい場合であり、かつ、上記指標値が上記第2閾値よりも大きい場合と比較して、上記相関性を一定とした場合に、上記指標値の増加に伴う上記加算率の上昇を抑制させることとしてもよい。
【0015】
上記加算率計算部は、上記相関性が第1閾値よりも大きい場合であり、かつ、上記指標値が第2閾値よりも大きい場合には、上記指標値を一定とした場合に、上記相関性に関わらず上記加算率を一定とすることとしてもよい。
【0016】
上記加算率計算部は、上記相関性が第1閾値よりも大きい場合であり、かつ、上記指標値が第2閾値よりも小さい場合には、上記指標値を一定とした場合に、上記相関性の上昇に伴って上記加算率を上昇させることとしてもよい。
【0017】
また、上記課題を解決するために、本発明の別の観点によれば、参照画像のターゲット画像に対する動きをターゲットブロック毎にローカル動きベクトルとして算出するとともに、ローカル動きベクトルとグローバル動きベクトルとの一致度合いを示す指標値を上記ターゲットブロック毎に算出するステップと、上記ローカル動きベクトルに基づいて参照ブロックを動き補償した動き補償ブロックを上記ターゲットブロック毎に生成することにより、動き補償画像を生成するステップと、上記動き補償画像と上記ターゲット画像との相関性を上記ターゲットブロック毎に判定するステップと、上記相関性と上記指標値とに基づいて、上記ターゲット画像と上記動き補償画像とを加算するステップと、を含む、画像処理方法が提供される。
【発明の効果】
【0018】
以上説明したように本発明によれば、被写体が大部分を占める場合にもNR効果を挙げつつ、正確性の低い動き補償画像がターゲット画像に加算されてしまう可能性を低減することができる。
【図面の簡単な説明】
【0019】
【図1】本発明の実施形態に係る撮像装置の機能構成を示すブロック図である。
【図2】本発明の実施形態におけるブロックマッチングについての説明図である。
【図3】本発明の実施形態におけるフレームNR処理の概念図である。
【図4】本発明の実施形態における階層化ブロックマッチングについての説明図である。
【図5】本発明の実施形態に係る撮像装置における動き補償部の機能構成を示すブロック図である。
【図6】本発明の実施形態に係る撮像装置において動き補償部に含まれるターゲットブロックバッファ部の機能構成を示すブロック図である。
【図7】本発明の実施形態に係る撮像装置において動き補償部に含まれる参照ブロックバッファ部の機能構成を示すブロック図である。
【図8】本発明の実施形態に係る撮像装置における画像重ね合わせ部の機能構成を示すブロック図である。
【図9】本発明の実施形態に係る撮像装置により実行される主要な処理の流れを示すフローチャートである。
【図10】本発明の実施形態におけるSADテーブルの内容を示す図である。
【図11】本発明の実施形態における背景一致度合い評価処理の流れを示すフローチャートである。
【図12】本発明の実施形態における背景一致度合い評価処理の流れを示すフローチャートの続きである。
【図13】本発明の実施形態における加算率計算部のハードウェア構成例を示す図である。
【図14】本発明の実施形態における加算率計算部のハードウェア構成例を示す図である。
【図15】本発明の実施形態における画素値の輝度値とノイズ標準偏差との関係について示す図である。
【図16】本発明の実施形態におけるノイズ標準偏差と差分値と加算率との関係の一例を示す図である。
【図17】本発明の実施形態におけるノイズ標準偏差と差分値と加算率との関係の一例を示す図である。
【図18】本発明の実施形態におけるノイズ標準偏差と差分値と加算率との関係の一例を示す図である。
【図19】本発明の実施形態における分散値の段階幅と加算率との関係の一例を示す図である。
【図20】本発明の実施形態におけるヒット率とゲインと分散値の段階幅との関係の一例を示す図である。
【図21】基礎加算率とNR効果との関係の一例を示す図である。
【図22】本発明の実施形態における平均値と分散値とを使用して、相関性フラグに値を設定する手法の一例を示す図である。
【図23】本発明の実施形態におけるヒット率および相関性フラグと加算率との関係を示す図である。
【図24】本発明の実施形態におけるヒット率および相関性フラグと加算率との関係の一例を示す図である。
【図25】本発明の実施形態におけるブロックマッチングから加算処理までの流れを示すフローチャートである。
【図26】本発明の実施形態におけるターゲット画像と動き補償画像との重ね合わせの一例を説明するための図である。
【発明を実施するための形態】
【0020】
以下に添付図面を参照しながら、本発明の好適な実施の形態について詳細に説明する。なお、本明細書および図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
【0021】
なお、説明は以下の順序で行うものとする。
1.実施形態
1−1.撮像装置の全体構成
1−2.フレームNR処理について
1−3.階層化ブロックマッチング処理について
1−4.フレームNR処理の詳細
2.まとめ
【0022】
<1.実施形態>
<1−1.撮像装置の全体構成>
まず、本発明の実施形態に係る撮像装置の構成について説明する。本発明の実施形態において、撮像装置は、画像処理装置の一例に相当するものである。
【0023】
図1は、本発明の実施形態に係る撮像装置10の機能構成を示すブロック図である。撮像装置10は、静止画または動画を撮像してデジタル方式の画像データとして記録媒体に記録する機能を有する、例えばデジタルカメラなどの任意の電子機器でありうる。
【0024】
図1を参照すると、撮像装置10は、制御部1、操作部3、メモリ4、ストレージ5、撮像光学系10L、タイミングジェネレータ12、撮像素子11、信号処理部13、RAW/YC変換部14、動き補償部16、画像重ね合わせ部17、静止画コーデック18、動画コーデック19、NTSCエンコーダ20、およびディスプレイ6を含む。これらの各構成要素は、システムバス2を介して相互に接続される。
【0025】
制御部1は、撮像装置10の各部の動作を制御する。制御部1は、メモリ4に格納されたプログラムに基づいて動作することによって、制御のために必要な各種の演算処理を実行するCPU(Central Processing Unit)でありうる。制御部1は、演算処理のための一時格納領域としてメモリ4を用いてもよい。なお、制御部1が動作するためのプログラムは、メモリ4に予め書き込まれたものであってもよく、ディスク状記録媒体またはメモリカードなどのリムーバブル記憶媒体に格納されて撮像装置10に提供されるものであってもよい。また、制御部1が動作するためのプログラムは、LAN(Local Area Network)、インターネット等のネットワークを介して撮像装置10にダウンロードされるものであってもよい。
【0026】
操作部3は、撮像装置10を操作するためのユーザインターフェースとして機能する、操作部3は、例えば、撮像装置10の外装に設けられたシャッターボタンなどの操作ボタン、タッチパネル、またはリモートコントローラなどでありうる。操作部3は、ユーザの操作に基づいて、撮像装置10の起動および停止、静止画もしくは動画の撮影開始および終了、または撮像装置10の各種機能の設定などの操作信号を制御部1に出力しうる。
【0027】
メモリ4には、撮像装置10の処理に関するデータが格納される。メモリ4は、例えば、フラッシュROM(Read Only Memory)またはDRAM(Dynamic Random Access Memory)などの半導体メモリでありうる。メモリ4には、例えば、制御部1が用いるプログラム、および画像処理機能によって処理される画像信号が、一時的または継続的に格納されうる。メモリ4に格納される画像信号は、例えば、後述する基底面および縮小面のターゲット画像、参照画像、およびNR画像でありうる。
【0028】
ストレージ5には、撮像装置10によって撮影された画像が、画像データとして格納される。ストレージ5は、例えば、フラッシュROMなどの半導体メモリ、BD(Blu-ray Disc)、DVD(Digital Versatile Disc)、もしくはCD(Compact Disc)などの光ディスク、またはハードディスクなどでありうる。ストレージ5は、撮像装置10に内蔵される記憶装置であってもよく、メモリカードなどの撮像装置10に着脱可能なリムーバブルメディアであってもよい。
【0029】
撮像光学系10Lは、フォーカスレンズ、ズームレンズ等の各種レンズ、光学フィルタ、および絞りなどの光学部品からなる。被写体から入射された光学像(被写体像)は、撮像光学系10Lにおける各光学部品を介して、撮像素子11の露光面に結像される。
【0030】
タイミングジェネレータ12は、制御部1の指示に従って、垂直転送のための4相パルス、フィールドシフトパルス、水平転送のための2相パルス、シャッタパルスなどの各種パルスを生成して撮像素子11に供給する。
【0031】
撮像素子(イメージセンサ)11は、例えば、CCD(Charge Coupled Device)またはCMOS(Complementary Metal Oxide Semiconductor)などの固体撮像素子で構成される。撮像素子11は、タイミングジェネレータ12からの動作パルスによって駆動され、撮像光学系10Lから導かれた被写体像を光電変換する。これによって、撮像画像を表す画像信号が、信号処理部13に出力される。ここで出力される画像信号は、タイミングジェネレータ12からの動作パルスに同期した信号であって、赤(R)、緑(G)、および青(B)の3原色から構成されるベイヤー配列のRAW信号(生の信号)である。
【0032】
信号処理部13以降の各部の画像処理機能は、例えばDSP(Digital Signal Processor)を用いて実現されうる。信号処理部13は、撮像素子11から入力された画像信号に、ノイズ除去、ホワイトバランス調整、色補正、エッジ強調、ガンマ補正、解像度変換などの画像信号処理を実行する。信号処理部13は、デジタル画像信号をメモリ4に一時的に格納してもよい。RAW/YC変換部14は、信号処理部13から入力されたRAW信号をYC信号に変換して、動き補償部16に出力する。ここで、YC信号は、輝度成分(Y)、および赤/青の色差成分(Cr/Cb)を含む画像信号である。
【0033】
動き補償部16は、ターゲット画像および参照画像の画像信号をメモリ4から読み込む。動き補償部16は、例えばブロックマッチングなどの処理によって、これらの画像の間の動きベクトル(ローカル動きベクトルLMV)を検出し、ターゲット画像と参照画像との間の動きを補償する。また、動き補償部16は、ターゲットブロックについての背景一致度合いの評価を行なって、ヒット率βを生成する。さらに、動き補償部16は、ターゲットブロックと動き補償ブロックとの相関性を判定して、相関性フラグを生成する。この実施形態では、動き補償部16からは、ターゲット画像と、動き補償画像と、ヒット率βと、相関性フラグとが画像重ね合わせ部17に出力される。
【0034】
画像重ね合わせ部17は、ヒット率βや相関性フラグに基づいて、ターゲット画像と動き補償画像とを重ね合わせ、重ね合わせた結果としてNR画像を生成する。NR画像では、上述したフレームNRの効果によって、画像に含まれるノイズが低減されている。なお、動き補償部16および画像重ね合わせ部17の詳細については後述する。
【0035】
静止画コーデック18は、操作部3によって静止画撮影の指示が取得されている場合(静止画撮影時)に、NR処理後の画像信号をメモリ4から読み込み、例えばJPEG(Joint Photographic Experts Group)などの所定の圧縮符号化様式で圧縮して、画像データとしてストレージ5に格納する。また、静止画コーデック18は、操作部3によって静止画再生の指示が取得されている場合(静止画再生時)に、画像データをストレージ5から読み込み、JPEGなどの所定の圧縮符号化様式で伸張した画像信号をNTSCエンコーダ20に提供してもよい。
【0036】
動画コーデック19は、操作部3によって動画撮影の指示が取得されている場合(動画撮影時)に、NR処理後の画像信号をメモリ4から読み込み、例えばMPEG(Moving Picture Experts Group)などの所定の圧縮符号化様式で圧縮して、画像データとしてストレージ5に格納する。また、動画コーデック19は、操作部3によって動画再生の指示が取得されている場合(動画再生時)に、画像データをストレージ5から読み込み、MPEGなど所定の圧縮符号化様式で伸張した画像信号をNTSCエンコーダ20に提供してもよい。
【0037】
NTSC(National Television System Committee)エンコーダ121は、画像信号をNTSC方式の標準カラー映像信号に変換して、ディスプレイ6に提供する。静止画撮影時または動画撮影時において、NTSCエンコーダ20は、NR処理後の画像信号をメモリ4から読み込み、スルー画像または撮影された画像としてディスプレイ6に提供してもよい。また、静止画再生時または動画再生時において、NTSCエンコーダ20は、静止画コーデック18または動画コーデック19から画像信号を取得し、再生画像としてディスプレイ6に提供してもよい。
【0038】
ディスプレイ6は、NTSCエンコーダ20から取得した映像信号を表示する。ディスプレイ6は、例えば、LCD(Liquid Crystal Display)または有機EL(Electro-Luminescence)ディスプレイなどでありうる。また、NTSCエンコーダ20から出力される映像信号は、図示しないHDMI(High-Definition Multimedia Interface)などの通信部によって、撮像装置10から外部に出力されてもよい。
【0039】
<1−2.フレームNR処理について>
次に、本発明の実施形態におけるフレームNR処理について説明する。本実施形態に係る撮像装置10において、フレームNR処理は、主に、動き補償部16および画像重ね合わせ部17によって実行される。
【0040】
上述のように、撮像装置10においては、撮像素子11によるセンサーコーディングによって生成されたRAW信号が、RAW/YC変換部14によってYC信号に変換される。フレームNRは、RAW信号に対して行われることが一般的である。しかし、RAW信号に対するフレームNRでは、撮像装置10の中で非常に大きなシステムリソースが使用される。そのため、本実施形態では、フレームNRをYC信号に対して行うことによって、フレームNRで使用されるシステムリソースを抑制する。
【0041】
図2は、本発明の実施形態におけるブロックマッチングについての説明図である。この実施形態では、図2に示すように、ターゲットフレーム100を、例えば、64画素×64ラインのような、比較的小さい大きさのターゲットブロック102の複数個に分割する。そして、この複数個のターゲットブロックのそれぞれについての動きベクトル(ローカル動きベクトル)104Bを先ず求める。このとき、この実施形態では、求めたそれぞれのローカル動きベクトルの信頼性を示す指標を、併せて算出するようにする。
【0042】
そして、ローカル動きベクトルの信頼性の指標から、ターゲットフレームについて求めた複数個のローカル動きベクトルの中から、信頼性の高いローカル動きベクトルのみを抽出する。次に、抽出した信頼性の高いローカル動きベクトルのみから、グローバルモーションを算出する。そして、算出したグローバルモーションを用いて、各ターゲットブロック単位のグローバル動きベクトルを算出する。しかしながら、この実施形態においては、グローバル動きベクトルの算出手法については、特に限定されるものではない。
【0043】
そして、算出したグローバル動きベクトルと、ターゲットブロック毎のローカル動きベクトルとを比較して、その比較結果に基づいて、各ターゲットブロックが背景部分か、動被写体部分かを評価判定するようにする。この実施形態では、算出したグローバル動きベクトルと、ターゲットブロック毎のローカル動きベクトルとを比較して、両者の一致度合いを判定する。そして、その判定結果として、ターゲットブロック毎のローカル動きベクトルとグローバル動きベクトルとの一致度合いを示す指標値を算出する。この指標値を、この明細書ではヒット率と称する。
【0044】
この実施形態では、ターゲットブロックについてのグローバル動きベクトルとローカル動きベクトルとの一致度合いを判定することができる。そして、一致度合いの評価の結果、一致度合いが高いと判定されたときには、当該ターゲットブロックについては、グローバル動きベクトルを、出力動きベクトルとして出力する。また、一致度合いが低いと判定されたときには、当該ターゲットブロックについては、ローカル動きベクトルを、出力動きベクトルとして出力する。この実施形態では、出力動きベクトルは、後段の処理用動きベクトル、この実施形態では、NR処理用動きベクトルである。
【0045】
なお、グローバル動きベクトルとローカル動きベクトルとが全く一致したときには、グローバル動きベクトルとローカル動きベクトルのいずれを出力動きベクトルとしてもよいことは言うまでもない。そして、この実施形態では、上述のようにして得たターゲットブロック単位の出力動きベクトルを用いて、ターゲットフレームに対して、参照フレームをブロック単位で位置合わせを行い、動き補償画像(動き補償フレーム)を生成する。そして、ターゲットフレームと、動き補償フレームとを重ね合わせてNR画像を生成するようにする。
【0046】
図3は、本発明の実施形態におけるフレームNR処理の概念図である。図3を参照すると、本実施形態におけるフレームNR処理では、連続して撮影された複数の画像P1〜P3が、位置合わせ(動き補償)後に重ね合わせられて、ノイズが低減された画像Pmixになる。なお、上述のように、連続して撮影された複数の画像を重ね合わせた場合にノイズが低減されるのは、略同一の画像が時間方向で積分され、各画像にランダムに含まれるノイズが相殺されるためである。
【0047】
図示された例において、重ね合わせられる複数の画像P1〜P3は、必ずしも3枚の画像でなくてもよく、2枚または4枚以上の画像であってもよい。例えば、本実施形態に係る撮像装置10が静止画を撮影する場合、高速で連続して撮影された複数枚の画像のうち、1枚目の画像がターゲット画像になり、このターゲット画像に2枚目以降の画像が参照画像として順次重ね合わせられうる。また、撮像装置10が動画を撮影する場合、順次撮影される連続したフレームの画像がそれぞれターゲット画像になり、これらのターゲット画像に、それぞれのターゲット画像の1つ前のフレームの画像が参照画像として重ね合わせられうる。つまり、あるフレームの画像は、ターゲット画像にもなりうるし、別のフレームの画像をターゲット画像とした場合の参照画像にもなりうる。
【0048】
このように、連続して撮影された画像を重ねあわせるフレームNRの処理では、重ね合わせられるターゲット画像と参照画像との間での位置合わせ(動き補償)が重要になる。これらの画像には、例えば撮影者の手ぶれなどによる画像の位置ずれが生じている場合がある。また、それぞれの画像において、被写体自体が動いたことによる位置ずれが生じている場合もある。そこで、本実施形態におけるフレームNRでは、ターゲット画像を分割して生成される複数個のターゲットブロックのそれぞれについて、ブロック単位の動きベクトルを検出する。さらに、各ブロックについて、ブロック単位の動きベクトルを反映した動き補償をしてから、ターゲット画像と参照画像とを重ね合わせる。
【0049】
ここで、ブロック単位の動きベクトルを検出する処理では、ターゲット画像の各ブロック(ターゲットブロック)について、参照画像の各ブロック(参照ブロック)の中から相関性が最も高いブロック(動き補償ブロック)が探索されるブロックマッチング法が用いられる。ブロック単位の動きベクトルは、ターゲットブロックと動き補償ブロックとの間の位置ずれとして求められる。ターゲットブロックと参照ブロックとの間の相関性の高さは、例えば、双方のブロック内の各画素の輝度値の差分絶対値総和(SAD:Sum of Absolute Difference)値によって評価されうる。
【0050】
<1−3.階層化ブロックマッチング処理について>
一般的な従来のブロックマッチングにおける動きベクトル検出処理では、サーチ範囲内を、ピクセル単位(1ピクセル単位または複数ピクセル単位)で参照ブロックを移動させて、各移動位置における参照ブロックについてのSAD値を算出する。そして、その算出したSAD値の中から最小値を示すSAD値を検出し、当該最小SAD値を呈する参照ブロック位置に基づいて動きベクトルを検出するようにする。
【0051】
そして、この実施形態では、1フレームが多数のブロックに分割されるので、以上のブロックマッチング処理をターゲットブロックおよび参照ブロックを順次切り替えながら、全画面において処理を行う。これにより、ターゲットフレーム内の全てのターゲットブロックについてのローカル動きベクトルLMVの算出を行う。
【0052】
しかし、このような従来の動きベクトル検出処理では、サーチ範囲内をピクセル単位で参照ブロックを移動させるようにするので、検索するサーチ範囲に比例して、SAD値を算出するマッチング処理回数が多くなって、マッチング処理時間が大きくなる。また、SADテーブルの容量も大きくなるという問題があった。
【0053】
特に、静止画像の高画素化、並びに動画像のHD(High Definition)化が進み、1枚の画像サイズが非常に大きくなってきていることを考慮すると、この問題は大きい。また、システムバス2を介して画像メモリをアクセスする回数も多くなり、バス帯域を大きくしなければならなくなるという問題もある。
【0054】
以上のことを考慮して、この実施の形態では、先ず、ターゲット画像(ターゲットフレーム)および参照画像(参照フレーム)を縮小した縮小画像と中間画像を用意する。そして、縮小画像、中間画像、原画画像の順に、ブロックマッチングによる動きベクトルサーチを、前段階でのブロックマッチングの結果を次段階におけるサーチに反映させて行うという階層化ブロックマッチングを行う。
【0055】
この階層化ブロックマッチングを行うことで、演算量や処理時間を少なく、効率の良いローカル動きベクトルの算出を行うようにする。ここで、縮小画像のことを縮小面、中間画像のことを中間面、縮小化をしていない元の画像のことを基底面と呼ぶことにする。
【0056】
図4は、この階層化ブロックマッチングを説明するための図である。図4の例においては、基底面ターゲットフレーム201および基底面参照フレーム301を、1/a・1/b(1/a、1/bは、縮小倍率であって、a>1、b>1である)に縮小して、縮小面ターゲットフレーム211および縮小面参照フレーム311を生成する。また、基底面ターゲットフレーム201および基底面参照フレーム301を、1/bに縮小して、中間面ターゲットフレーム221および中間面参照フレーム321を生成しておく。
【0057】
縮小面や中間面の基底面に対する倍率は任意であるが、1/2〜1/8倍(画素数換算で1/4〜1/64倍)の範囲が適当である。なお、図4に示した例では、中間面に対する縮小面の縮小倍率は1/4(すなわち、a=4)、また、基底面に対する中間面の縮小倍率は1/4(すなわち、b=4)の場合として示している。
【0058】
縮小面や中間面の作成にあたっても、その方法は任意である。しかし、単に、原画像の画素を、縮小倍率に応じて間引くだけで縮小面や中間面を作成する方法では、折り返し成分が発生し、1階層目(縮小面)で検出される動きベクトルが、正しいものから外れやすくなる。このため、通常、縮小倍率に応じたカットオフ周波数帯域を持つローパスフィルタを原画に対して施したのち、縮小倍率に応じたサブサンプリングを行う。
【0059】
この実施形態では、倍率に応じたサブサンプリングにより消失する画素を含んだ、輝度平均値を生成し、それを縮小面画素や中間面画素としている。つまり、1/a縮小なら、a×a画素の正方領域の輝度平均値を算出し、これを縮小面画素や中間面画素の輝度値とする。この手法の場合、まず中間面を生成しておいてから、中間面から縮小面を生成しても、原画から直接縮小面を生成する場合と同じ結果が得られるため、より効率的である。
【0060】
なお、縮小画像を得るに当たっては、水平方向の縮小率と垂直方向の縮小率は、上記のように同じであってよいし、また、異ならせても良い。
【0061】
以上のようにして、縮小面および中間面を作成したら、先ず、縮小面ターゲットフレーム211に縮小面ターゲットブロック212を設定すると共に、縮小面参照フレーム311に縮小面サーチ範囲313を設定する。
【0062】
そして、当該縮小面サーチ範囲313内の複数個の縮小面参照ブロック312について、縮小面の動きベクトル検出装置401で、上述したブロックマッチング処理を行い、最小SAD値を呈する縮小面参照ブロック位置を検出する。この縮小面参照ブロック位置の検出に基づき、縮小面動きベクトルMVsを検出する。この例では、動きベクトル検出装置401は、縮小面ターゲットブロック212の大きさ(水平方向の画素数×垂直方向のライン数)のブロックをブロックマッチング処理単位として処理を実行する。
【0063】
縮小面動きベクトルMVsの算出が終了したら、次に、縮小面ターゲットフレーム211をa倍したものに等しい中間面ターゲットフレーム221において、中間面ターゲットブロック222を設定する。図4に示した例では、中間面の動きベクトル検出装置402は、縮小面の動きベクトル検出装置401におけるブロックマッチング処理単位と同じ大きさのブロックを中間面ターゲットブロックとしてブロックマッチング処理を行うようにしている。ここで、同じ大きさのブロックとは、同じピクセル数であって、同じ水平方向の画素数×同じ垂直方向のライン数からなるものである。
【0064】
この例の場合、縮小面は中間面の1/aであるので、縮小面ターゲットブロック212に対応する中間面ターゲットフレームにおける領域には、中間面ターゲットブロック222が、a個含まれることなる。したがって、その中間面ターゲットブロック222のa個の全てが中間面の動きベクトル検出装置402におけるブロックマッチング処理対象として設定される。
【0065】
そして、縮小面参照フレーム311をa倍したものに等しい中間面参照フレーム321において、縮小面動きベクトルMVsを中心とした中間面サーチ範囲323を設定する。この中間面サーチ範囲323内の複数個の中間面参照ブロック322について、動きベクトル検出装置402で、上述したブロックマッチング処理を行い、最小SAD値を呈する中間面参照ブロック位置を検出することにより、中間面動きベクトルMVmを検出する。
【0066】
中間面の動きベクトル検出装置402では、a個の中間面ターゲットブロックのそれぞれについて、中間面サーチ範囲323内に設定したそれぞれの当該中間面ターゲットブロック用のサーチ範囲において、ブロックマッチング処理を実行する。これにより、それぞれの中間面ターゲットブロックについての動きベクトルの検出を行う。そして、それら複数個の動きベクトルのうち、最小のSAD値を呈する動きベクトルを、中間面における動きベクトル(中間面動きベクトル)MVmとして検出する。
【0067】
縮小面動きベクトルMVsの算出が終了したら、次に、中間面ターゲットフレーム221をb倍したものに等しい基底面ターゲットフレーム201において、基底面ターゲットブロック202を設定する。図4に示した例では、基底面の動きベクトル検出装置403も、動きベクトル検出装置401および402と同じ大きさ(同じピクセル数=同じ水平方向の画素数×同じ垂直方向のライン数)のブロックを処理単位ブロックとしてブロックマッチング処理を行うようにしている。
【0068】
そして、前述したように、中間面動きベクトルMVmは、処理単位ブロックの単位で得られる。したがって、動きベクトル検出装置403で対象となる基底面ターゲットフレーム201における基底面ターゲットブロック202は、図4において、斜線を付して示すように、縮小面ターゲットブロックと同じ大きさのブロック(処理単位ブロック)のb倍の個数からなるものとして設定される。
【0069】
一方、中間面参照フレーム321をb倍したものに等しい基底面参照フレーム301において、縮小面動きベクトルMVsと中間面動きベクトルMVmとの合成ベクトルを中心とした基底面サーチ範囲303を設定する。当該基底面サーチ範囲303内の複数個の基底面参照ブロック302について、動きベクトル検出装置403で、上述したブロックマッチング処理を行い、最小SAD値を呈する基底面参照ブロック位置を検出することにより、基底面動きベクトルMVbを検出する。
【0070】
縮小面動きベクトルMVsおよび中間面動きベクトルMVmは、同じ大きさの処理単位ブロックの単位で得られる。このため、縮小面動きベクトルMVsと中間面動きベクトルMVmとの合成ベクトルを中心とした設定された基底面サーチ範囲303は、b個の基底面ターゲットブロック202を含む領域よりも若干広い領域とされる。
【0071】
動きベクトル検出装置403では、b個の基底面ターゲットブロック202について、基底面サーチ範囲303内に設定したそれぞれの基底面ターゲットブロックについてのサーチ範囲において、ブロックマッチング処理を実行する。これにより、それぞれの基底面ターゲットブロックについての動きベクトルの検出を行う。そして、それら複数個の動きベクトルのうち、最小のSAD値を呈する動きベクトルを、基底面における動きベクトル(基底面動きベクトル)MVbとして検出する。
【0072】
そして、以上のようにして求められた縮小面動きベクトルMVsと、中間面動きベクトルVMmと、基底面動きベクトルVMbとの合成ベクトルとして、基底面ターゲットフレーム201と基底面参照フレーム301との間における基底面ターゲットブロックについてのローカル動きベクトルLMVが検出される。
【0073】
以上のような階層化ブロックマッチング処理を、ターゲットブロックおよび参照ブロックを順次切り替えながら、ターゲットフレームおよび参照フレームの全領域において、実行する。これにより、ターゲットフレーム内に設定した複数個のターゲットブロック単位の複数個のローカル動きベクトルLMVの全てが算出される。図4に示した例で、動きベクトル検出装置401,402および403は、実際的には、1つの装置であって、メモリ4から読み出されて入力されるターゲットブロックと、サーチ範囲から読み出される参照ブロックとが異なるのみである。
【0074】
なお、ターゲットブロックの切り替えは、基底面ターゲットフレーム201において、全ての基底面ターゲットブロック202についてのローカル動きベクトルLMVを得るようにする場合には、次のようにする。すなわち、縮小面において、縮小面ターゲットブロックを、水平方向には、縮小倍率1/aおよび1/bに応じた水平方向の画素数分ずつ、ずらして設定する。また、垂直方向には、縮小倍率1/aおよび1/bに応じた垂直方向のライン数分ずつ、ずらして設定するようにすれば良い。
【0075】
しかし、グローバルモーションを複数個のローカル動きベクトルLMVから求めるという目的からすると、次のようにしても良い。すなわち、基底面ターゲットフレーム201における飛び飛びの位置の基底面ターゲットブロックについてのローカル動きベクトルLMVを得るように、縮小面ターゲットブロックを、水平方向および垂直方向に、順次にずらして設定するようにしてもよい。
【0076】
なお、上述した階層化ブロックマッチングは、中間面を省略し、縮小面と基底面のみの2階層で行っても良いし、逆に、中間面の階層が複数存在しても構わない。ただし、縮小倍率が大き過ぎて、動被写体と背景が同じ単位ブロックに含まれてしまう場合には、注意が必要である。すなわち、本来は異なる動きベクトルとして検出されるべきものが、1つの動きベクトルとして扱われてしまい、以降の階層ではリカバリが効かないため、縮小倍率の選定は慎重に行われる必要がある。
【0077】
<1−4.フレームNR処理の詳細>
次に、本発明の実施形態におけるフレームNR処理の詳細について、動き補償部16、および画像重ね合わせ部17の機能の詳細とともに説明する。
【0078】
(動き補償部の詳細)
図5は、本発明の実施形態に係る撮像装置10における動き補償部16の機能構成を示すブロック図である。図5を参照すると、動き補償部16は、ターゲットブロックバッファ部161、参照ブロックバッファ部162、マッチング処理部163、動きベクトル算出部164、コントロール部165、動き補償画像生成部166、および相関性判定部167を含む。これらの各部を含む動き補償部16は、例えばDSPを用いて実現されうる。
【0079】
ここで、図6を参照して、ターゲットブロックバッファ部161について説明する。図5は、本発明の実施形態に係る撮像装置10において動き補償部16に含まれるターゲットブロックバッファ部161の機能構成を示すブロック図である。図6を参照すると、ターゲットブロックバッファ部161は、基底面バッファ部1611、縮小面バッファ部1612、および縮小化処理部1613を含む。
【0080】
ターゲットブロックバッファ部161は、メモリ4、またはRAW/YC変換部14から提供される基底面ターゲットフレーム201または縮小面ターゲットフレーム301の画素データを取得する。これらの画素データの取得元は、セレクタ1614によって切り替えられうる。例えば、ターゲットブロックバッファ部161は、静止画撮影時にはメモリ4から画素データを取得し、動画撮影時にはRAW/YC変換部14から画素データを取得してもよい。なお、ここで取得される縮小面ターゲットフレーム301の画素データは、後述する画像重ね合わせ部17に含まれる縮小面生成部174、または、RAW/YC変換部14によって生成され、メモリ4に格納されたものでありうる。
【0081】
ターゲットブロックバッファ部161は、基底面バッファ部1611において、基底面ターゲットフレーム201の画素データを蓄積する。また、ターゲットブロックバッファ部161は、縮小面バッファ部1612において、縮小面ターゲットフレーム301の画素データを蓄積する。例えば、動画撮影時に、RAW/YC変換部14から取得される画素データに縮小面ターゲットフレーム301の画素データが含まれないような場合、ターゲットブロックバッファ部161は、縮小化処理部1613を用いて、基底面ターゲットフレーム201の画素データから縮小面ターゲットフレーム301の画素データを生成する。縮小化処理部1613を用いるか否かは、セレクタ1615によって切り替えられうる。
【0082】
ターゲットブロックバッファ部161は、相関性判定部167、およびマッチング処理部163に、基底面ターゲットフレーム201または縮小面ターゲットフレーム301の画素データを提供する。相関性判定部167には、基底面バッファ部1611に蓄積された基底面ターゲットフレーム201の画素データが提供される。マッチング処理部163には、縮小面でのブロックマッチング処理時は縮小面バッファ部1612に蓄積された縮小面ターゲットフレーム301の画素データが、基底面でのブロックマッチング処理時には基底面バッファ部1611に蓄積された基底面ターゲットフレーム201の画素データが、それぞれ提供される。マッチング処理部163に提供される画素データは、セレクタ1616によって切り替えられうる。
【0083】
続いて、図7を参照して、参照ブロックバッファ部162について説明する。図7は、本発明の実施形態に係る撮像装置10において動き補償部16に含まれる参照ブロックバッファ部162の機能構成を示すブロック図である。図7を参照すると、参照ブロックバッファ部162は、基底面バッファ部1621、および縮小面バッファ部1622を含む。
【0084】
参照ブロックバッファ部162は、メモリ4から、縮小面マッチング処理範囲および基底面マッチング処理範囲の画素データを取得する。取得された縮小面マッチング処理範囲および基底面マッチング処理範囲の画素データは、それぞれ基底面バッファ部1621および縮小面バッファ部1622に蓄積される。
【0085】
また、参照ブロックバッファ部162は、動き補償画像生成部166、およびマッチング処理部163に、基底面または縮小面の参照ブロックの画素データを提供する。動き補償画像生成部166には、基底面バッファ部1621に蓄積された基底面マッチング処理範囲の画素データのうち、動き補償ブロックとして特定された範囲の画素データが提供される。マッチング処理部163には、縮小面でのブロックマッチング処理時は、縮小面バッファ部1622に蓄積された縮小面マッチング処理範囲の画素データのうち、ブロックマッチング処理で用いられる縮小面参照ブロックの画素データが提供される。また、基底面でのブロックマッチング処理時は、基底面バッファ部1621に蓄積された基底面マッチング処理範囲の画素データのうち、ブロックマッチング処理で用いられる基底面参照ブロックの画素データが提供される。なお、マッチング処理部163に提供される画素データは、セレクタ1623によって切り替えられる。
【0086】
再び図4を参照する。マッチング処理部163は、ターゲットブロックと参照ブロックとの間の相関の強さを検出するブロックマッチングの処理を実行する。ターゲットブロックと参照ブロックとの間の相関の強さは、例えば、各画素の輝度信号のSAD値を用いて評価されうる。ターゲットブロックと参照ブロックとの間の相関の強さは、各画素の色差信号などの他の情報を用いて評価されてもよい。また、演算量の削減のために、演算の対象とする画素が間引かれてもよい。
【0087】
動きベクトル算出部164は、参照画像のターゲット画像に対する動きをターゲットブロック毎にローカル動きベクトルとして算出する。具体的には、例えば、動きベクトル算出部164は、マッチング処理部163におけるブロックマッチングの処理結果に基づいて、ローカル動きベクトルを取得する。動きベクトル算出部164は、例えば、マッチング処理部163によって算出されたSAD値の最小値を検出および保持し、さらに、SAD値が最小である参照ブロックの近傍の複数の参照ブロックのSAD値を保持して、二次曲線近似補間処理によって、サブピクセル精度の高精度のローカル動きベクトルを検出してもよい。
【0088】
また、動きベクトル算出部164は、ローカル動きベクトルとグローバル動きベクトルとの一致度合いを示す指標値をターゲットブロック毎に算出する。具体的には、例えば、動きベクトル算出部164は、ターゲットブロックについての背景一致度合いの評価を行なって、ヒット率βを生成する。また、動きベクトル算出部164は、グローバル動きベクトルとローカル動きベクトルとに基づいて、NR処理用動きベクトルを算出する。動きベクトル算出部164からは、ヒット率βが画像重ね合わせ部17に出力され、NR処理用動きベクトルが動き補償画像生成部166に出力される。NR処理用動きベクトルの算出手法の例については、後述する。
【0089】
コントロール部165は、動き補償部16の各部を制御する。コントロール部165は、例えば、ターゲットブロックバッファ部161に含まれるセレクタ1614〜1616、および参照ブロックバッファ部162に含まれるセレクタ1623を制御する。また、コントロール部165は、ターゲットブロックバッファ部161および参照ブロックバッファ部162によって提供される画素データに応じて、縮小面または基底面でのブロックマッチング処理を実行するようにマッチング処理部163を制御してもよい。
【0090】
動き補償画像生成部166は、動きベクトル算出部164により算出されたローカル動きベクトルに基づいて参照ブロックを動き補償した動き補償ブロックをターゲットブロック毎に生成する。動き補償画像生成部166は、かかる処理を行うことにより、動き補償画像を生成することができる。具体的には、例えば、動き補償画像生成部166は、動きベクトル算出部164により算出されたローカル動きベクトルとグローバル動きベクトルとに基づいて生成されるNR処理用動きベクトルに基づいて、動き補償ブロックをターゲットブロック毎に生成することができる。
【0091】
さらに詳細には、例えば、動き補償画像生成部166は、参照ブロックに対して、NR処理用動きベクトルによりグローバルモーションに対応する処理、つまり、平行移動、回転、拡大縮小を伴う変形処理を施して、動き補償画像を生成することができる。動き補償画像生成部166からは、動き補償ブロック(動き補償画像)が相関性判定部167に出力される。
【0092】
相関性判定部167は、動き補償画像生成部166により生成された動き補償画像とターゲット画像との相関性をターゲットブロック毎に判定する。相関性判定部167は、例えば、判定した相関性が設定された相関性フラグを生成することができる。相関性判定部167が有する機能の詳細については後述する。相関性判定部167からは、動き補償ブロック(動き補償画像)とターゲットブロック(ターゲット画像)と相関性フラグとが画像重ね合わせ部17に出力される。
【0093】
(画像重ね合わせ部の詳細)
図8は、本発明の実施形態に係る撮像装置10における画像重ね合わせ部17の機能構成を示すブロック図である。図8を参照すると、画像重ね合わせ部17は、加算率計算部171、加算部172、基底面出力バッファ部173、縮小面生成部174、および縮小面出力バッファ部175を含む。これらの各部を含む画像重ね合わせ部17は、例えばDSPを用いて実現されうる。
【0094】
加算率計算部171は、動き補償部16から、基底面ターゲットブロックおよび動き補償ブロックの画素データを取得し、これらのブロックの加算率を算出する。加算率の算出手法の詳細については後述する。基底面ターゲットフレーム201と動き補償ブロック208とは、例えば、単純加算方式または平均加算方式などの加算方式によって加算されうる。加算率計算部171は、これらの加算方式に応じて加算率を算出しうる。加算率計算部171は、算出した加算率と、基底面ターゲットフレーム201および動き補償ブロック208の画素データとを、加算部172に提供する。
【0095】
加算部172は、加算率計算部171から、基底面ターゲットブロックおよび動き補償ブロックの画素データと、これらのブロックの加算率とを取得する。加算部172は、基底面ターゲットブロックの画素データと動き補償ブロックの画素データとを、取得した加算率で加算し、フレームNRの効果によってノイズが低減された基底面NRブロックを生成する。加算部172は、基底面NRブロックの画素データを、基底面出力バッファ部173および縮小面生成部174に提供する。
【0096】
基底面出力バッファ部173は、加算部172から提供された基底面NRブロックの画素データを蓄積し、基底面NR画像としメモリ4に提供する。
【0097】
縮小面生成部174は、加算部172から提供された基底面NRブロックの画素データを縮小して、縮小面NRブロックの画素データを生成する。縮小面生成部174は、縮小面NRブロックの画素データを、縮小面出力バッファ部175に提供する。
【0098】
縮小面出力バッファ部175は、縮小面生成部174から提供された縮小面NRブロックの画素データを蓄積し、縮小面NR画像としてメモリ4に格納する。ここでメモリ4に格納された縮小面NR画像は、例えば、静止画撮影時に、フレームNR後のターゲット画像にさらに参照画像を重ね合わせる場合、縮小面ターゲット画像として用いられうる。また、ここでメモリ4に格納された縮小面NR画像は、動画撮影時に、次のフレームをターゲット画像としてフレームNRを実行する場合、縮小面参照画像として用いられうる。
【0099】
(画像重ね合わせ部の詳細)
図9は、本発明の実施形態に係る撮像装置10により実行される主要な処理の流れを示すフローチャートである。図9を参照すると、先ず、動きベクトル算出部164は、ブロックマッチングによるローカル動きベクトルLMVの検出を行なう(ステップS101)。次に、動きベクトル算出部164は、ターゲットブロック毎のグローバル動きベクトルGMVを検出する(ステップS102)。
【0100】
次に、動きベクトル算出部164は、ステップS101で検出されたローカル動きベクトルLMVと、ステップS102で検出されたグローバル動きベクトルGMVとに基づいて、ローカル動きベクトルLMVとグローバル動きベクトルGMVとの一致度合いを示すヒット率βを算出する(ステップS103)。具体的には、動きベクトル算出部164は、ステップS101で検出されたローカル動きベクトルLMVと、ステップS102で検出されたグローバル動きベクトルGMVとを比較することで、各ターゲットブロックについての背景一致度合いを評価し、ヒット率βを求める。
【0101】
そして、さらに、動きベクトル算出部164は、各ターゲットブロックについてのNR処理用動きベクトルMVnrを定め、動き補償画像生成部166に出力する。このステップS103でのローカル動きベクトルLMVとグローバル動きベクトルGMVとの比較においては、動きベクトル算出部164は、例えば、ローカル動きベクトルLMVに対応する参照ブロックについてのSAD値と、グローバル動きベクトルGMVに対応する参照ブロックのついてのSAD値とを比較する。さらに、動きベクトル算出部164は、グローバル動きベクトルGMVに対応する参照ブロックのついてのSAD値については、画像のノイズに応じた補正を加えるようにすることができる。
【0102】
次に、動き補償画像生成部166では、NR処理用動きベクトルMVnrを用いて、参照ブロック毎に動き補償ブロックを生成する(ステップS104)。これにより、動き補償画像が生成される。動き補償画像生成部166は、動き補償画像とターゲット画像とを相関性判定部167に出力する。相関性判定部167は、動き補償画像とターゲットブロックとの相関性をターゲットブロック毎に判定し、相関性を示す相関性フラグを生成する(ステップS105)。相関性判定部167は、動き補償画像とターゲット画像と生成した相関性フラグとを画像重ね合わせ部17に出力する。
【0103】
次に、加算率計算部171は、ステップS103で求められたヒット率βとステップS105で生成された相関性フラグとを用いて、画素毎の加算率αを算出し、加算部172に供給する(ステップS106)。加算率計算部171は、算出した加算率αと動き補償画像とターゲットブロックとを加算部172に供給する。次に、加算部172は、ターゲット画像に、ステップS104で生成された動き補償画像を、ステップS106で算出された加算率αで画素毎に重ね合わせてNR画像を生成する(ステップS107)。以上で、NR画像生成の処理は終了となる。加算率αを用いてターゲット画像に動き補償画像を画素毎に重ね合わせる手法の例については、後述する。
【0104】
なお、この図9は、あるターゲットフレームの1枚についての処理動作を示したものである。したがって、3枚以上の複数枚の画像を重ね合わせる場合には、生成したNR画像をターゲットフレームとすると共に、新たに重ね合わせる画像を参照フレームとして、図9に示した処理を繰り返せばよい。
【0105】
(SAD値とGMVとの関係)
図10は、横軸にサーチ範囲を取り、縦軸にSAD値を取ったときの、1個のターゲットブロックについてのSADテーブルの内容(SAD値)を示す図である。横軸の各値は、参照ブロック位置(参照ベクトル)となり、実線がSADテーブルの内容を示すものとなる。この図10において、最小SAD値となる参照ブロックの位置(つまり参照ベクトル)は、ブロックマッチングによりローカル動きベクトルLMVとして検出される。
【0106】
このとき、ローカル動きベクトルLMVにおけるSAD値と、グローバル動きベクトルGMVにおけるSAD値とが、画像のノイズ分に応じた差の範囲にあれば、グローバル動きベクトルGMVが、最小SAD値を取る参照ベクトルとなっている可能性がある。つまり、本来はグローバル動きベクトルGMV(参照ブロックの位置)でのSAD値が最小となるべきであったのに、ノイズのために、異なる参照ブロックの位置(これがローカル動きベクトルLMV)を最小として検出されてしまったとすることができる。
【0107】
そこで、この例では、画像のノイズ分に応じたオフセット値OFSを、グローバル動きベクトルGMVでのSAD値に付加して補正することができる。この例の場合には、オフセット値OFSを、グローバル動きベクトルGMVでのSAD値(SAD_GMVとする)から減算して補正する。すなわち、補正後のSAD値は、MinSAD_Gとすると、
【0108】
MinSAD_G=SAD_GMV−OFS ・・・ (式1)
【0109】
となる。ここで、このオフセット値OFSは、あまり大きな値を設定すると、動被写体の動きベクトルまで、最小SAD値として判定されるようになってしまう。そこで、この実施形態では、オフセット値OFSは、ローカル動きベクトルの信頼性の指標値Ftについての閾値thよりも小さい値に設定される。ローカル動きベクトルの信頼性の指標値Ftとしては、例えば、第2極小値と第1極小値(SAD値の最小値)との差の値を用いることができる。信頼性の指標値Ftが閾値thを超えているローカル動きベクトルは、例えば、信頼性の高いローカル動きベクトルとして抽出され、後述するようなグローバルモーションGMおよびグローバル動きベクトルGMVの算出に用いられる。信頼性の指標値Ftが閾値th以下であるローカル動きベクトルは、例えば、信頼性の高くないローカル動きベクトルであるとして扱われる。
【0110】
そして、動きベクトル算出部164では、その補正後SAD値MinSAD_Gと、ローカル動きベクトルLMVでのSAD値(MinSAD)とを比較する。その比較の結果、MinSAD_G<MinSADであれば、当該ターゲットブロックについてのSAD値の最小値は、グローバル動きベクトルGMVに対応する参照ブロックについてのSAD値の補正値であるMinSAD_Gであると評価する。図10は、MinSAD_G<MinSADである場合を示している。
【0111】
すなわち、図10に示すように、MinSAD_G<MinSADとなる場合は、当該ターゲットブロックについての真のローカル動きベクトルは、グローバル動きベクトルGMVに一致すると判定する。そして、その場合は、当該ターゲットブロックに対する背景一致度合いは高いと評価し、当該ターゲットブロックについてのヒット率βは大きな値とする。そして、当該ターゲットブロックについてのNR処理用動きベクトルは、グローバル動きベクトルGMVとする。
【0112】
ここで、この実施形態では、ヒット率βは、0≦β≦1の範囲の値とされる。ローカル動きベクトルLMVと、グローバル動きベクトルGMVとが全く一致したときには、ヒット率βは、β=1とすることができる。しかし、この例では、ローカル動きベクトルLMVと、グローバル動きベクトルGMVとが全く一致しているかどうかの評価は行なわず、補正後SAD値MinSAD_Gと、ローカル動きベクトルLMVでのSAD値(MinSAD)との比較で評価する。したがって、評価結果には、ローカル動きベクトルLMVと、グローバル動きベクトルGMVとが全く一致する場合も含まれるが、不一致の場合も含まれる。
【0113】
そして、後述するように、この実施形態では、MinSAD_G<MinSADであれば、ヒット率βは、例えば、β=0.75とする。ここで、β=1としなかったのは、上述のように、上記比較結果には、ローカル動きベクトルLMVとグローバル動きベクトルGMVとが不一致の場合が含まれるからである。
【0114】
(背景/動被写体判定処理の流れ)
動きベクトル算出部164での背景一致度合い評価処理の流れを、図11および図12のフローチャートを参照して更に説明する。この図11および図12の処理は、コントロール部165の制御に基づいて、各部が実行する。
【0115】
先ず、コントロール部165の制御により、ターゲットブロックバッファ部161に最初のターゲットブロックが設定される(ステップS301)。次に、コントロール部165の制御により、参照ブロックバッファ152にバッファリングされているマッチング処理範囲の参照フレームの画像データのうちから、ブロックマッチング処理する参照ブロックが設定される(ステップS302)。
【0116】
マッチング処理部163は、設定されたターゲットブロックと、設定された参照ブロックとについてブロックマッチング処理を行い、SAD値を計算する。マッチング処理部163は、算出したSAD値を、参照ブロックの位置情報(参照ベクトル)と共に、動きベクトル算出部164に供給する(ステップS303)。
【0117】
動きベクトル算出部164は、参照ベクトルがグローバル動きベクトルGMVと一致しているか、また、その周囲近傍の8位置P1〜P8と一致しているか否か判別する(ステップS304)。
【0118】
ステップS304で、参照ベクトルがグローバル動きベクトルGMVおよびその周囲近傍の8位置P1〜P8とは一致していないと判別したときには、動きベクトル算出部164では、最小SAD値MinSADと、その参照ブロック位置(参照ベクトル)との更新処理を行なう(ステップS305)。
【0119】
次に、コントロール部165は、サーチ範囲内の全ての参照ブロックついてのターゲットブロックとのブロックマッチングが終了したか否か判別する(ステップS308)。
【0120】
そして、ステップS308で、サーチ範囲内の全ての参照ブロックついての処理が終了してはいないと判別したときには、コントロール部165は、次の参照ブロックを設定する(ステップS309)。そして、ステップS302に戻り、上述したこのステップS302以降の処理を繰り返す。
【0121】
また、ステップS304で、参照ベクトルがグローバル動きベクトルGMV、あるいはその周辺近傍位置P1〜P8のいずれかと一致したと判別したときには、動きベクトル算出部164では、そのSAD値からオフセット値OFSを減算する(ステップS306)。そして、その減算結果を補正後SAD値MinSAD_G_0〜MinSAD_G_8のいずれかとして、その参照ブロック位置(参照ベクトル)とを保持する(ステップS307)。
【0122】
そして、ステップS308に進み、サーチ範囲内の全ての参照ブロックついての処理が終了したか否か判別する。
【0123】
そして、ステップS308で、サーチ範囲内の全ての参照ブロックついての処理が終了したと判別したときには、動きベクトル算出部164は、ローカル動きベクトルLMVと、最小SAD値MinSADを検出する。また、動きベクトル算出部164は、9個の補正後SAD値MinSAD_G_0〜MinSAD_G_8の中の最小値として、補正後SAD値MinSAD_Gを検出する(図12のステップS311)。
【0124】
そして、動きベクトル算出部164は、ヒット率βを算出し(ステップS312)、最小SAD値MinSADが、予め定められている前記閾値TH1より小さいか否か判別する(ステップS313)。
【0125】
ステップS313で、最小SAD値MinSADが、前記閾値TH1より大きいと判別したときには、再算出されたローカル動きベクトルLMVを、当該ターゲットブロックのNR処理用動きベクトルとして動き補償画像生成部166に出力する(ステップS314)。
【0126】
また、ステップS313で、最小SAD値MinSADが、前記閾値TH1より小さいと判別したときには、グローバル動きベクトルGMVを、当該ターゲットブロックのNR処理用動きベクトルとして動き補償画像生成部166に出力する(ステップS315)。
【0127】
そして、ステップS314およびステップS315の次に、動き補償画像生成部166は、NR処理用動きベクトルに基づいて動き補償ブロックを生成し(ステップS316)、相関性判定部167は、ターゲットブロックと動き補償ブロックとの相関性を示す相関性フラグを生成する(ステップS317)。コントロール部165は、ターゲットフレーム内の全てのターゲットブロックについての処理が終了したか否か判別し(ステップS318)、終了していなければ、次のターゲットブロックを設定する(ステップS319)。そして、ステップS302に戻り、コントロール部165の制御の下に、上述したステップS302以降の処理を繰り返す。
【0128】
また、ステップS318で、ターゲットフレーム内の全てのターゲットブロックについての処理が終了したと判別したときには、コントロール部165は、この背景/動被写体判定処理動作を終了する。
【0129】
(加算率算出処理の流れ)
この実施形態においては、加算率計算部171では、画素単位に加算率α(0≦α≦1)を求める。そして、前述したように、基本的には、ターゲット画像と動き補償画像との画素単位の違いと、ヒット率βとに応じて加算率αを計算する。このため、加算率計算部171には、ヒット率βと、ターゲット画像のデータTGvおよび動き補償画像のデータMCvが供給される。
【0130】
ここで、ターゲット画像と動き補償画像との画素単位の違いが大きければ、動き部分と考えられるので、加算率αは低くすべきであるが、前記画素単位の違いがない、あるいは小さければ加算率αは高くしても良い。しかし、ターゲットブロックが背景静止画部分であるか、動被写体部分であるかが不明である場合には、前述したように、動き部分における2重露光が目立たないようにするために、加算率αは比較的低く抑える必要がある。
【0131】
しかし、この実施形態では、ヒット率βにより、背景静止画部分としての一致度合いが求められているので、ヒット率βが大きく、背景一致度合いが高いほど、加算率αは高くするようにする。
【0132】
また、この実施形態では、さらに画像のノイズは、撮影シーンの明るさ(画像のゲイン量)に応じたものとなるので、加算率計算部171では、ターゲット画像と動き補償画像との画素単位の違いに関しては、当該撮影シーンの明るさ(画像のゲイン量)に応じたノイズを考慮するようにしている。すなわち、ターゲット画像と動き補償画像との画素単位の違いがノイズの範囲内であれば、両者の実際の差分は小さいと判断する。また、前記画素単位の違いがノイズの範囲よりも大きいときには、両者の差分は、実際に大きいと判断するようにする。
【0133】
ところで、ヒット率βとは、背景静止画部分としての一致度合いである。したがって、ヒット率βが大きいと、基本的には相関性フラグも大きいという関係がある。しかしながら、SAD値の(相対的な)比較でヒット率βを算出している都合上、実際は背景でないにもかかわらず、GMVヒット(ヒット率βが高い)となってしまうケースもある。この場合、ヒット率βは高いが、相関性フラグは低いという状態になる。この状態のときは、加算率αを高くするのを取りやめることで、実際には背景でないのにもかかわらずGMVヒットになってしまうケースを回避することができる。
【0134】
また、GMVヒットである背景領域についての加算率αが高くなる一方、GMVヒットではない領域(すなわち被写体領域)についての加算率が変化しないと、例えば、被写体領域が大きいシーンなどで不自然に背景のノイズが除去され、被写体領域に存在するノイズが残っている画像になってしまうことが懸念される。この場合、GMVヒットではないものの、相関性フラグが高ければ、この動き補償画像が正しいことにはある程度確証が持てる。そこで、相関性フラグの値に応じて加算率αを高くし、背景と被写体のバランスを取ることも可能である。
【0135】
また、この実施形態の加算率計算部171には、加算度合いを、加算率計算部171の外部から制御することができるようにするため、加算調整用ゲインGAが供給される。この加算調整用ゲインGAの値は、予め用意されているゲイン値の中から、ユーザが選択したものとするように構成することができる。あるいは、撮像画像のISO感度に応じて、加算調整用ゲインGAの値を定めるように構成しても良い。後者の場合には、例えば、撮像時の露出値やシャッター速度などに応じて、画像の明るさを判断して、加算調整用ゲインGAの値を定めるように構成することができる。つまり、明るい画像の場合には、ノイズが目立つので、加算率が小さくなるようにゲインを小さくし、逆に、暗い画像の場合には、加算率を大きくするようにゲインを大きく設定する。
【0136】
このゲインGAによって、ヒット率βと相関性フラグとの組み合わせのマトリクスが決定する。しかし、設定パラメータを増やし、このマトリックスそのものをユーザが自由に選択できるようにしても良い。
【0137】
この実施形態の加算率計算部171のハードウェア構成例を図13および図14に示す。この図13および図14の例においては、ターゲット画像のデータTGvおよび動き補償画像のデータMCvは、輝度成分と、色差成分とのそれぞれについて、別個に処理がなされる。
【0138】
図13は、加算率計算部171における、輝度成分についての処理部分である。図13を参照して、先ず、輝度成分についての加算率計算処理について説明する。
【0139】
すなわち、ターゲット画像のデータTGvのうちの輝度データYtgは、ローパスフィルタ601を通じて差分絶対値計算部603に供給される。また、動き補償画像のデータMCvのうちの輝度データYmcが、ローパスフィルタ602を通じて差分絶対値計算部603に供給される。差分絶対値計算部603は、画素毎に、輝度データYtgと輝度データYmcとの画素差分絶対値ΔPxYを算出し、算出した画素差分絶対値ΔPxYを、加算率変換出力部608に供給する。
【0140】
ローパスフィルタ601を通じた輝度データYtgは、また、空間平均フィルタ604に供給される。そして、ローパスフィルタ602を通じた輝度データYmcは、また、空間平均フィルタ605に供給される。
【0141】
空間平均フィルタ604および605のそれぞれは、差分絶対値計算部603で画素差分を求める画素(注目画素という)の周囲の8個の画素と、自画素との9個の画素の平均値MtgおよびMmcを求める。そして、空間平均フィルタ604および605は、求めた平均値MtgおよびMmcは、差分絶対値計算部606に供給する。
【0142】
差分絶対値計算部606では、平均値Mtgと平均値Mmcとの平均差分絶対値ΔMeYを算出し、算出した平均差分絶対値ΔMeYを、加算率変換出力部609に供給する。
【0143】
そして、この例においては、輝度成分についてのノイズモデルメモリ607が設けられる。このノイズモデルメモリ607には、画素値の輝度値に対するノイズ標準偏差σが、予め算出されて記憶されている。すなわち、横軸に画素値の輝度値を取り、縦軸にノイズ標準偏差σを取ったとき、ノイズ標準偏差σは、例えば図15に示すようなものとなる。この図15に示すように、明るい画素に対しては、ノイズの標準偏差σは小さく、暗い画素に対しては、ノイズの標準偏差σは大きい。
【0144】
ノイズモデルは、ノイズが画像の明るさにより異なるものであるので、ノイズモデルメモリ607には、画像の照度Lxに応じた複数個のノイズモデルが記憶されている。
【0145】
そして、画像の照度Lxが、ノイズモデルメモリ607に、照度に応じたノイズモデルを選択用として供給される。これにより、どのノイズモデルを使用するかが、照度Lxにより定められる。
【0146】
また、ローパスフィルタ601を通じたターゲット画像データTGvの輝度データYtgが、ノイズモデルメモリ607に供給され、照度Lxおよび輝度データYtgにより定まるノイズ標準偏差σYが、ノイズモデルメモリ607から得られる。このノイズ標準偏差σYは、加算率変換出力部608および609に供給される。
【0147】
さらに、これら加算率変換出力部608および609には、動きベクトル算出部164からのヒット率βと、外部からのゲインGAと、相関性判定部167からの相関性フラグとが供給される。
【0148】
加算率変換出力部608は、画素差分絶対値ΔPxYと、ノイズ標準偏差σYと、ヒット率βと、ゲインGAとを変換パラメータとする変換関数と、相関性フラグとを用いて、画素差分絶対値ΔPxYに基づく加算率αYAを出力する。
【0149】
また、加算率変換出力部609は、平均差分絶対値ΔMeYと、ノイズ標準偏差σYと、ヒット率βと、ゲインGAとを変換パラメータとする変換関数と、相関性フラグとを用いて、平均差分絶対値ΔMeYに基づく加算率αYBを出力する。
【0150】
加算率変換出力部608および609は、基本的には、図16に示すように、ノイズ標準偏差σと、差分値とから加算率αを定める。なお、加算率変換出力部608および609では、ノイズ標準偏差σは、ノイズモデルメモリ607からのノイズ標準偏差σYであり、差分値は、画素差分絶対値ΔPxYおよび平均差分絶対値ΔMeYである。そして、出力加算率αは、加算率αYAおよびαYBである。
【0151】
この実施形態では、図16に示すように、差分値が、ノイズ標準偏差σの倍数として設定できる所定の第1の閾値以下のときには、背景画像部分であるとして、加算率αは、最大値であるα=1とする。
【0152】
そして、差分値が、(第1の閾値<差分値<第2の閾値)の範囲では、背景部分と動被写体部分とのいずれとの判断ができない部分として、図16に示すように、加算率αは差分値が大きくなるに従って直線的に小さくなるようにされる。そして、(差分値≧第2の閾値)の範囲では、動被写体部分であると判断して、加算率αは、最小値であるα=0とする。
【0153】
ターゲットブロックの背景一致度合いが不明であるときには、上述したように、動被写体部分での二重露光のような状態を軽減するために、第1の閾値は安全を見越した値とされて、加算率αは全体的に抑制される。つまり、背景画像部分であることが分かっていれば、第1の閾値および第2の閾値を大きな値として設定して、できるだけ大きな加算率での画像加算を行なうことができる。
【0154】
これに対して、この実施形態では、上述したように、ターゲットブロック毎に、背景一致度合いが、その指標値であるヒット率βとして算出される。したがって、この背景一致度合いの指標値βを用いることにより、背景静止画像部分では、より大きな加算率で加算を行うことが可能となる。ヒット率βを考慮した場合における加算率変換出力部608および609での加算率変換出力特性を図17に示す。
【0155】
すなわち、図17の例においては、ヒット率βに応じて、差分値に対する第1の閾値を変更するようにする。すなわち、ヒット率βが最低で、β=0であるとき(動被写体部分)では、図16の例の場合と同様に、第1の閾値は、標準偏差σの1倍(1σ)とする。そして、ヒット率βが、β>0であるときには、ヒット率βの値に応じて第1の閾値を、より大きなものに変更する。
【0156】
そして、図17の例においては、差分値が第1の閾値よりも大きくなったときからの加算率αの漸減直線の傾きは常に一定とされる。したがって、図17の例では、第2の閾値は、第1の閾値の変更に応じて自動的に変更される。
【0157】
例えば、図18に示すように、ヒット率βを考慮しない図16の例の場合(β=0)においては、差分値が2σであるときには、加算率αは常に0.5となる。これに対して、ヒット率を考慮する場合においては、図18に示すように、ヒット率β=1.0である背景静止画像部分では、加算率αはα=1となり、最大の加算率で加算されるようになる。
【0158】
このように、背景静止画像部分では、ヒット率βに応じて、より大きな加算率αが設定されるので、所期の通りのノイズ低減効果が得られる。また、動被写体部分では、ヒット率βに応じて加算率αは低く抑えられるので、二重露光の状態を軽減するという効果を維持することができる。
【0159】
なお、上述の例では、第1の閾値のみをヒット率βに応じて変更し、差分値が第1の閾値よりも大きくなったときからの加算率αの漸減直線の傾きは常に一定としたが、第2の閾値をもヒット率に応じて変更して、前記漸減直線の傾きも変更するようにしても良い。
【0160】
次に、加算率変換出力部608および609におけるゲインGAの寄与について説明する。
【0161】
ゲインGAは、以上のようにして算出される加算率αを、さらに、変更制御するパラメータである。前述したように、このゲインGAは、ユーザにより設定されたり、撮影条件に応じて撮影シーンの明るさに応じて設定されたりするものである。例えば、ユーザにより設定する場合には、NR加算により、より大きなノイズ低減効果を得ようとする場合には、ゲインGAは大きくする。すると、上述のようにして算出された加算率αが、ゲインGAに応じた値に変更制御される。
【0162】
加算率変換出力部608および609における、ゲインGAと、ヒット率βと、相関性フラグと、加算率αとの関係についての詳細は後述する。加算率αは、例えば、ヒット率β=0の場合の加算率を基準加算率αoとして、その基準加算率αoを基にした値として示される。ゲインGAは、ユーザにより、あるいは、撮影条件などにより、GA=0、GA=1、GA=2、GA=3の4段階に、変更設定可能とされる。そして、ヒット率βも、β=0、β=0.25、β=0.5、β=1.0の4段階に設定されるようにされる。そして、加算率αは、基準加算率αoを係数K倍(K≧1)したものとされるが、その係数Kが、ゲインGAとヒット率βと相関性フラグとの組み合わせに応じた倍数とされるものである。
【0163】
以上のようにして、加算率変換出力部608では、画素差分絶対値ΔPxYと、ノイズ標準偏差σYと、ヒット率βと、ゲインGAと、相関性フラグとから、輝度成分の画素差分に基づく出力加算率αYAを出力する。また、加算率変換出力部608では、平均差分絶対値ΔMeYと、ノイズ標準偏差σYと、ヒット率βと、ゲインGAと、相関性フラグとから、輝度成分の平均差分に基づく出力加算率αYBを出力する。
【0164】
色差信号成分については、平均差分は計算されず、画素差分絶対値のみが計算されて、上述した輝度成分と同様にして、色差成分に基づく加算率が算出される。
【0165】
図14は、加算率計算部171における、色差成分についての処理部分である。図14を参照して、色差成分についての加算率計算処理について説明する。
【0166】
すなわち、ターゲット画像のデータTGvのうちの青の色差データCbtgは、ローパスフィルタ621を通じて差分絶対値計算部623に供給される。また、動き補償画像のデータMCvのうちの青の色差データCbmcが、ローパスフィルタ622を通じて差分絶対値計算部623に供給される。差分絶対値計算部623は、画素毎に、色差データCbtgと色差データCbmcとの画素差分絶対値ΔPxCbを算出し、算出した画素差分絶対値ΔPxCbを、加算率変換出力部625に供給する。
【0167】
そして、輝度成分の場合と同様に、画素値の青の色差成分についてのノイズモデルメモリ624が設けられ、このノイズモデルメモリ624には、画素値の青の色差成分値に対するノイズ標準偏差σが、予め算出されて記憶されている。輝度成分の場合と同様に、ノイズモデルメモリ624には、画像の照度Lxに応じた複数個のノイズモデルが記憶されている。
【0168】
そして、ターゲットブロック毎の照度Lxと、ローパスフィルタ621を通じたターゲット画像データTGvの色差データCbtgが、ノイズモデルメモリ624に供給される。これにより、ノイズモデルメモリ624から、照度Lxおよび色差データCbtgにより定まるノイズ標準偏差σCbが得られ、加算率変換出力部625に供給される。
【0169】
さらに、この加算率変換出力部625には、動きベクトル算出部164からのヒット率βと、外部からのゲインGAと、相関性フラグとが供給される。
【0170】
加算率変換出力部625は、上述した加算率変換出力部608や609と同様の構成を有するもので、これよりは、画素差分絶対値ΔPxCbと、ノイズ標準偏差σCbと、ヒット率βと、ゲインGAと、相関性フラグとの組み合わせにより定まる加算率αCbが得られる。
【0171】
同様にして、ターゲット画像のデータTGvのうちの赤の色差データCrtgは、ローパスフィルタ631を通じて差分絶対値計算部633に供給される。また、動き補償画像のデータMCvのうちの赤の色差データCrmcが、ローパスフィルタ632を通じて差分絶対値計算部633に供給される。差分絶対値計算部633は、画素毎に、色差データCrtgと色差データCrmcとの画素差分絶対値ΔPxCrを算出し、算出した画素差分絶対値ΔPxCrを、加算率変換出力部635に供給する。
【0172】
そして、輝度成分の場合と同様に、画素値の赤の色差成分についてのノイズモデルメモリ634が設けられ、このノイズモデルメモリ634には、画素値の赤の色差成分値に対するノイズ標準偏差σが、予め算出されて記憶されている。輝度成分の場合と同様に、ノイズモデルメモリ634には、画像の照度Lxに応じた複数個のノイズモデルが記憶されている。
【0173】
そして、ターゲットブロック毎の照度Lxと、ローパスフィルタ631を通じたターゲット画像データTGvの色差データCrtgが、ノイズモデルメモリ634に供給される。これにより、ノイズモデルメモリ634から、照度Lxおよび色差データCrtgにより定まるノイズ標準偏差σCrが得られ、加算率変換出力部635に供給される。
【0174】
さらに、この加算率変換出力部635には、動きベクトル算出部164からのヒット率βと、外部からのゲインGAが供給される。
【0175】
加算率変換出力部635は、上述した加算率変換出力部608や609と同様の構成を有するもので、これよりは、画素差分絶対値ΔPxCrと、ノイズ標準偏差σCrと、ヒット率βと、ゲインGAと、相関性フラグとの組み合わせにより定まる加算率αCrが得られる。
【0176】
このような加算率の制御は、画素単位の比較だけでなく、例えば、画素分散値、画素平均値などに適用してもよい。すなわち、例えば、ターゲット画像の画素分散値に基づいても、加算率を求めるようにしてもよい。分散値は、注目画素(自画素)と、その周囲近傍の例えば8画素とについて求める。この分散値は、輝度成分および色差成分のそれぞれについて求める。そして、求めた分散値のすべてから、加算率を算出する。
【0177】
すなわち、図13に示すように、ターゲットブロックの画像データTGvの輝度データYtgは、ローパスフィルタ601を通じて空間分散フィルタ610に供給される。そして、この空間分散フィルタ610から、注目画素(自画素)と、その周囲近傍の例えば8画素との合計9個の画素についての分散値VaYが得られる。
【0178】
また、図14に示すように、ターゲットブロックの画像データTGvの青の色差データCbtgは、ローパスフィルタ621を通じて空間分散フィルタ626に供給される。そして、この空間分散フィルタ626から、注目画素(自画素)と、その周囲近傍の例えば8画素との合計9個の画素についての分散値VaCbが得られる。
【0179】
さらに、ターゲットブロックの画像データTGvの赤の色差データCrtgは、ローパスフィルタ631を通じて空間分散フィルタ636に供給される。そして、この空間分散フィルタ636から、注目画素(自画素)と、その周囲近傍の例えば8画素との合計9個の画素についての分散値VaCrが得られる。
【0180】
そして、分散値VaY、VaCbおよびVaCrは、図13に示すように、加算部611で加算された後、加算率変換出力部612に供給される。さらに、加算率変換出力部612には、動きベクトル算出部164からのヒット率βと、外部からのゲインGAが供給される。
【0181】
この加算率変換出力部612で求める加算率αCは、ターゲットブロックの画像が、テクスチャー成分が少なく、輝度レベル変化がなだらかな場合(グラデーションの場合)に、その加算率を抑えることを目的としている。この実施形態のようにブロック分割した画像処理においては、人間の視覚効果により、ブロック境界が非常に目立ち易くなり、特に、輝度レベル変化がなだらかな場合には殊更であることを考慮している。
【0182】
上記の目的を実現させるために、基本的には、ブロック内の分散値が低いほど加算率を低くすれば良い。この実施形態の加算率変換出力部612では、図19(A)に示すように、分散値を横軸に取ると共に、分散値を所定の段階幅毎に幾つかの段階に分け、出力加算率を各段階の分散値に応じて決定するようにする。
【0183】
図19(A)の例では、分散値を段階幅8毎に、5段階に分け、分散値0−7に対する加算率を0.0、分散値8−15に対する加算率を0.25、分散値16−23に対する加算率を0.5、分散値24−31に対する加算率を0.75、分散値32以上に対する加算率を1.0とする。
【0184】
ところで、画像を重ね合わせる場合に、上述のようなブロック毎の境界が目立つのは、重ね合わせる画像に差異があるからである。換言すれば、背景静止画像部分については、重ね合わせる画像に差異はないので、分散値に応じた加算率の抑制をする必要はない。
【0185】
そこで、この実施形態では、加算率変換出力部612では、ヒット率βに応じて、分散値の段階幅を制御し、ヒット率βが大きいほど、分散値の段階幅を小さくするようにする。これにより、背景静止画像部分については、分散値に応じた加算率の低減を抑制し、できるだけ、高い加算率で加算ができるようにしている。
【0186】
すなわち、図19の例では、ヒット率βが、例えばβ=0というように低い値のときには、分散値の段階幅は、図19(A)に示すように、「8」とする。そして、ヒット率βが、例えばβ=0.5というような値のときには、分散値の段階幅は、図19(B)に示すように、「4」とする。
【0187】
さらに、ヒット率βが、背景静止画部分であることを示すβ=1であるときには、分散値の段階幅は、図19(C)に示すように、「0」とする。つまり、このときには、分散値による加算率の低減は行なわない。
【0188】
上述したように、加算率変換出力部612にも、ゲインGAが供給されており、このゲインGAによる出力加算率の制御が行なえるようにしている。この例の場合、ゲインGAにより、ヒット率βとの組み合わせにより、前述した分散値の段階幅を変更制御するようにする。
【0189】
図20に、加算率変換出力部612における、ゲインGAと、ヒット率βと、段階幅との関係を示す。この図20の例においても、ゲインGAは、ユーザにより、あるいは、撮影条件などにより、GA=0、GA=1、GA=2、GA=3の4段階に、変更設定可能とされる。そして、ヒット率βも、β=0、β=0.25、β=0.5、β=1.0の4段階に設定されるようにされる。
【0190】
なお、図20の例においては、段階幅については、ビットシフト演算により実現可能なように構成している。
【0191】
なお、図19に示したように、この実施形態では、分散値を用いた加算率の算出に際しては、分散値について、段階幅を用いた複数段階を設定する構成としたが、複数段階とするのではなく、当該複数段階の間を線形補間するようにする構成としても良い。また、線形補間ではなく、2次曲線補間や3次曲線補間をするようにしても良い。
【0192】
以上のようにして、各加算率変換出力部608、609、612、625および635では、輝度差分値や色差差分値、輝度平均差分値、分散値などに応じると共に、ヒット率βと相対性フラグとに応じた値として、加算率αYA、αYB、αCb、αCrが算出され、ヒット率βに応じた値として、αCが算出される。
【0193】
そして、この実施形態では、これらの加算率αYA、αYB、αC、αCb、αCrが合成されて、加算率計算部171の出力加算率αが得られる。すなわち、図13に示すように、加算率変換出力部608および609からの加算率αYAおよびαYBは、乗算器613で乗算され、その乗算結果が乗算器614に供給される。この乗算器614には、加算率変換出力部625からの加算率αCbが供給されて、乗算器613の乗算結果と乗算される。
【0194】
そして、この乗算器614の乗算結果は、乗算器615に供給される。この乗算器615には、加算率変換出力部635からの加算率αCrが供給されて、乗算器614の乗算結果と乗算される。また、この乗算器615の乗算結果は、乗算器616に供給される。この乗算器616には、加算率変換出力部612からの加算率αCが供給されて、乗算器615の乗算結果と乗算される。
【0195】
以上により、乗算器616からは、算出された全ての加算率αYA、αYB、αC、αCb、αCrが乗算された乗算結果が得られ、これが加算率計算部171の出力加算率αとして出力される。
【0196】
こうして、加算率計算部171からは、画素単位で、ヒット率βと相関性フラグとに応じた値として加算率αが算出され、加算部172に供給される。
【0197】
加算部172では、この加算率計算部171からの画素毎の加算率αに応じて、ターゲットブロックの画像データTGvと、動き補償ブロックの画像データMCvとが画素単位で加算される。そして、加算部172からの加算画像データは、メモリ4、静止画コーデック18を介して、ストレージ5に記録される。
【0198】
上述した実施形態によれば、ターゲットブロック毎に背景一致度合いの指標値であるヒット率βを用いて、静止画像部分では、加算率αを大きくすることができるので、NR画像として、ノイズ低減効果が大きい画像が得られるという顕著な効果を奏する。
【0199】
(より改善された加算率算出について)
本来、ターゲット画像と動き補償画像との間における加算率を決める際には、撮影シーンでのノイズ標準偏差を考慮して閾値を規定し、|ターゲットブロック−動き補償ブロック|>閾値であるときは動体と判断して、ターゲットブロックを残すようにし、|ターゲットブロック−動き補償ブロック|≦閾値であるときは、ノイズの範囲内であるとし、ターゲットブロックと動き補償ブロックとを加算すれば良い。しかしながら、この方法では誤加算による副作用を考慮すると、本来加算するために使用されるべき閾値よりも低い値を閾値として設定しなくてはならない。つまり、NR効果を低くする必要がある。この問題に対して、特許文献1にも記載されているように、ヒット率βを参考に、背景であることを考慮して、加算率を上げる方法が有効である。
【0200】
しかしながら、前述したとおり、撮影領域内に存在する物体が影に隠れてしまった場合や変形した場合など、正確性の高い動き補償画像が存在しない場合にも関わらず、GMVヒット率が高く算出された場合などには、正確性の低い動き補償画像がターゲット画像に加算されてしまい、透けやボケのある画像が生成されてしまうという問題があった。
これはNRアプリケーションの本質的な課題であり、NR効果を高めるためには必ず副作用が発生するという問題である。
【0201】
そこで、前述したとおり、NR効果を高めるためのヒット率βという付加情報に対して、その副作用を防止する相関性フラグという付加情報を作成することにする。一般的に、効果を高めるための付加情報と副作用を防止するための付加情報とがある場合、その関係は、図21に示すようになるはずである。この実施形態では、効果を高めるための付加情報としてはヒット率βを使用している。すなわち、ヒット率βは、動き検出(ME)におけるサーチの過程において、そのサーチ範囲の中で相対的に最もターゲット画像との相関性が高い動き補償画像(MC画像)を生成するためのベクトルがグローバル動きベクトル(GMV)だったか否かを示す情報として使用し得る。
【0202】
一方、副作用を防止するための付加情報は、ターゲット画像と動き補償画像(MC画像)とを比較することにより得ることができる。すなわち、ターゲット画像と動き補償画像(MC画像)との相関性に対して、人間がおかしいと感じることができる絶対的な情報としてターゲット画像と動き補償画像(MC画像)との比較結果を取得し得る。この実施形態では、このように、相対的な情報としての付加情報および絶対的な情報としての付加情報の2種類の付加情報を用意し、この2種類の付加情報に基づいて加算率を算出することができる。これにより、例えば、動き補償ブロックを確認し、動き補償ブロックがターゲットブロックと大きく異なるときは加算しない仕組みを取り入れることができる。
【0203】
(相関性フラグ生成処理の詳細について)
絶対的な情報としての付加情報である相関性フラグは、上記したように、相関性判定部167により生成される。相関性判定部167は、動き補償画像生成部により生成された動き補償画像とターゲット画像との相関性をターゲットブロック毎に判定する。ここでは、動き補償ブロックとターゲットブロックとしては、動き補償画像生成部166から供給されたものを使用し得る。相関性フラグには、例えば、相関性を示す値「0」〜「1」が設定されている。相関性判定部167により生成された相関性フラグは、加算率計算部171に供給される。
【0204】
動き補償画像とターゲット画像との相関性の算出手法としては、様々なものが想定されるが、例えば、YC信号の輝度成分(Y)、および赤/青の色差成分(Cr/Cb)のそれぞれに対して判定を行うことができる。すなわち、相関性判定部167は、YC信号の輝度成分(Y)、および赤/青の色差成分(Cr/Cb)の各々に対する判定値を3つ算出し、算出した3つの判定値に対応する1つの相関性が設定された相関性フラグを生成することができる。3つの判定値と1つの相関性との対応関係については、あらかじめ設定しておくことができる。
【0205】
相関性判定部167は、例えば、対応するブロック単位におけるターゲットブロックと動き補償ブロックとの差分の平均値が所定の平均値よりも小さい場合には、相関性が高いと判断して相関性フラグに高い値を設定し、対応するブロック単位におけるターゲットブロックと動き補償ブロックとの差分の平均値が所定の平均値よりも大きい場合には、相関性フラグに低い値を設定することができる。対応するブロック単位におけるターゲットブロックと動き補償ブロックとの差分の平均値としては、例えば、対応する動き補償ブロック(例えば、8×8画素)およびターゲットブロック(例えば、8×8画素)の差分の平均値を使用することができる。相関性フラグに設定される高い値としては、例えば、「1」「0.5」などが想定され、相関性フラグに設定される低い値としては、例えば、「0.25」「0」などが想定される。
【0206】
また、平均値の代わりにコントラストを使用することもできる。その場合には、相関性判定部167は、例えば、対応するブロック単位におけるターゲットブロックと動き補償ブロックとの各々のコントラストの差分の平均値が所定の平均値よりも小さい場合には、相関性が高いと判断して相関性フラグに高い値を設定し、コントラストの差分の平均値が所定の平均値よりも大きい場合には、相関性フラグに低い値を設定することができる。コントラストの差分としては、例えば、対応する動き補償ブロック(例えば、8×8画素)およびターゲットブロック(例えば、8×8画素)の各々の最大差(最大画素と最小画素との差)の差分を使用することができる。
【0207】
また、平均値の代わりに分散値を使用することもできる。その場合には、相関性判定部167は、例えば、対応するブロック単位におけるターゲットブロックと動き補償ブロックとの差分の分散値が所定の分散値よりも小さい場合には、相関性が高いと判断して相関性フラグに高い値を設定し、対応するブロック単位におけるターゲットブロックと動き補償ブロックとの差分の分散値が所定の分散値の差分よりも大きい場合には、相関性フラグに低い値を設定することができる。差分の分散値としては、例えば、対応する動き補償ブロック(例えば、8×8画素)およびターゲットブロック(例えば、8×8画素)の差分の分散値を使用することができる。
【0208】
また、平均値の代わりにSAD値を使用することもできる。その場合には、相関性判定部167は、例えば、対応するブロック単位におけるターゲットブロックと動き補償ブロックとのSAD値の差分が所定のSAD値の差分よりも小さい場合には、相関性が高いと判断して相関性フラグに高い値を設定し、SAD値の差分が所定のSAD値の差分よりも大きい場合には、相関性フラグに低い値を設定することができる。SAD値の差分としては、例えば、対応する動き補償ブロック(例えば、8×8画素)およびターゲットブロック(例えば、8×8画素)の各々の差分絶対値和の差分を使用することができる。
【0209】
また、平均値、コントラスト、分散値およびSAD値のうちのいずれか2つ以上を組み合わせて、相関性判定のために使用することとしてもよい。図22は、平均値と分散値とを使用して、相関性フラグに値を設定する手法の一例を示したものである。図22に示すように、相関性判定部167は、まず、平均値の差分が所定の平均値の差分よりも小さいか否かを判定し(ステップS401)、平均値の差分が所定の平均値の差分よりも小さい場合には、ステップS402に進み、その他の場合には、相関性フラグに「0」を設定する。
【0210】
次いで、相関性判定部167は、分散値が所定の第1分散値よりも小さいか否かを判定し(ステップS402)、分散値の差分が所定の分散値の差分よりも小さい場合には、相関性フラグに「1」を設定し、その他の場合には、ステップS404に進む。次いで、相関性判定部167は、分散値が所定の第2分散値よりも小さいか否かを判定し(ステップS404)、分散値が所定の第2分散値よりも小さい場合には、相関性フラグに「0.5」を設定し、その他の場合には、相関性フラグに「0.25」を設定する。以上で、相関性フラグに値を設定する処理一例は終了となる。
【0211】
このように、ヒット率βを用いた場合に生じる欠点を補うために、相関性フラグを使用することができる。この相関性フラグは、ヒット率βとは関係なくターゲット画像とMC画像との相関性を絶対的に評価したものである。相関性フラグは、平均値、コントラスト、分散値およびSAD値を単独で使用して判定することもできるし、図22に示したように、平均値と分散値との組み合わせにより判定することもできる。また、平均値とSAD値との組み合わせにより判定することもできる。この場合に使用される閾値は、例えば、制御部1(例えば、CPUなど)から絶対的な指標として与えることができる。
【0212】
相関性フラグは、例えば、0〜1までを分割したものであり、相関性フラグに設定される「0」は「相関性がなく、GMVヒットであっても加算するのは危険」、相関性フラグに設定される「1」は「相関性が高く、GMVヒットでなくても加算率を上げることできる」という意味で使用することができる。相関性フラグに設定される「1」は、従来の「GMVヒットであれば強制加算する」と同様に使用され得る。なお、本発明で相関性フラグに設定される値は、「0」「0.25」「0.5」「1」の4段階にしているが、段数や値は、特に限定されるものではない。
【0213】
これにより、例えば、ヒット率βが「0」でも、相関性フラグが「1」であれば、加算率を高くすることができる。また、ヒット率βが「1」であっても、相関性フラグが「0」であれば、加算率を高くすることを防ぐことができる。ヒット率βは、隣り合うブロックで急な変化がないように補正され得るものである。相関性フラグに設定される値に対して行われる補正も同様に有効である。
【0214】
(より改善された加算率算出についての詳細)
前述したように、この実施形態においては、相関性フラグとヒット率βとを使用して加算率を算出することができる。図23は、ヒット率βおよび相関性フラグと加算率との関係を示す図である。図23に示すように、ヒット率βと相関性フラグとの各々を縦軸および横軸として示し、ヒット率βの閾値Tβと相関性フラグの閾値TRとにより区分けすれば、各領域に対して、ターゲット画像と動き補償画像との加算に関する説明を付することができる。
【0215】
より詳細には、加算率計算部171は、相関性(相関性フラグに設定されている値)が閾値TRよりも大きい場合であり、かつ、ヒット率βが閾値Tβよりも大きい場合には、MC画像が絶対的にも相対的にも有効である場合と想定される。この場合には、MC画像を積極的にターゲット画像に加算することができる。また、加算率計算部171は、相関性が閾値TRよりも小さい場合であり、かつ、ヒット率βが閾値Tβよりも大きい場合には、MC画像が相対的に有効であるが絶対的には無効である場合と想定される。例えば、サーチ範囲内に有効なMC画像が存在しない場合などが該当すると想定される。
【0216】
また、加算率計算部171は、相関性が閾値TRよりも大きい場合であり、かつ、ヒット率βが閾値Tβよりも小さい場合には、MC画像が相対的には無効であるが絶対的には有効である場合と想定される。例えば、GMVを使用してMC画像を生成してはいないが、有効なMC画像を生成できている場合などが該当すると想定される。また、加算率計算部171は、相関性が閾値TRよりも小さい場合であり、かつ、ヒット率βが閾値Tβよりも小さい場合には、MC画像が絶対的にも相対的にも無効である場合と想定される。例えば、この場合には、MC画像を積極的にターゲット画像に加算できないと想定される。
【0217】
加算率計算部171においては、このように説明される加算手法に従って、加算率を算出すればよい。図24は、ヒット率βおよび相関性フラグと加算率αとの関係の一例を示す図である。なお、図24に示した場合においては、閾値Tβと閾値TRとは、共に、「0」より大きく、「0.25」より小さい値として設定されている。また、図24においては、ゲインGAが「3」のときの基礎加算率α0に対する加算率αの倍数により加算率を示している。したがって、ゲインGAの値によってマトリクスも変更され得るものであり、ゲインGAは、前述したような様々な方式により選択され得るものである。
【0218】
ここで、相関性が閾値TRよりも大きい場合であり、かつ、ヒット率βが閾値Tβよりも大きい場合は、図24に示したマトリクスにおいては、相関性フラグの値が「0.25」「0.5」「1」のいずれかであり、かつ、ヒット率βが「0.25」「0.5」「1」のいずれかである場合に相当する。この場合には、上記したように、MC画像を積極的にターゲット画像に加算することができるため、図24に示すように、相関性を一定とした場合に、ヒット率βの上昇に伴って加算率を上昇させることとすればよい。また、この場合には、図24に示すように、ヒット率βを一定とした場合に、相関性に関わらず加算率αを一定とすればよい。
【0219】
また、相関性が閾値TRよりも小さい場合であり、かつ、ヒット率βが閾値Tβよりも大きい場合は、図24に示したマトリクスにおいては、相関性フラグの値が「0」であり、かつ、ヒット率βが「0.25」「0.5」「1」のいずれかである場合に相当する。この場合には、上記したように、MC画像が相対的に有効であるが絶対的には無効である場合と想定されるため、相関性が閾値TRよりも大きい場合であり、かつ、ヒット率βが閾値Tβよりも大きい場合と比較して、相関性を一定とした場合に、ヒット率βの増加に伴う加算率αの上昇を抑制させることとすればよい。
【0220】
また、相関性が閾値TRよりも大きい場合であり、かつ、ヒット率βが閾値Tβよりも小さい場合は、図24に示したマトリクスにおいては、相関性フラグの値が「0.25」「0.5」「1」のいずれかであり、かつ、ヒット率βが「0」である場合に相当する。この場合には、上記したように、MC画像が相対的には無効であるが絶対的には有効である場合と想定されるため、ヒット率βを一定とした場合に、相関性の上昇に伴って加算率αを上昇させればよい。
【0221】
(ブロックマッチングから重ね合わせまでの詳細)
図25に、グローバルモーションおよびグローバル動きベクトルGMVを、基底面でのローカル動きベクトルLMVと比較する場合の処理の全体フローを示す。ここでは、一例として、グローバルモーションを複数フレーム間のローカル動きベクトルから算出する方法について説明する。なお、本発明の実施形態では、ブロック単位のローカルベクトルとフレーム単位のグローバルベクトルを用いて、効果と副作用のバランスを取りながら画像の加算率を制御することができれば良く、グローバルモーションはどのような方法で算出しても良い。
【0222】
縮小面動きベクトルMVsや中間面動きベクトルMVmを、基底面に対する画像縮小倍率の逆数倍することで、基底面基底面動きベクトルMVbを得ることができる。そこで、グローバルモーションGMを算出するためには、基底面動きベクトルMVbを求めなくても、縮小面動きベクトルMVsや中間面動きベクトルMVmから、グローバルモーションGMを求めるようにすることもできる。
【0223】
例えば、縮小面動きベクトルMVsからグローバルモーションGMを求める場合には、先ず、動きベクトル算出部164で、縮小面におけるローカル動きベクトルLMV(縮小面動きベクトルMVs)を算出する。そして、動きベクトル算出部164で、算出した縮小面動きベクトルMVsについての信頼性指標Ftを算出する。また、動きベクトル算出部164で、この縮小面のローカル動きベクトルLMVについての信頼性指標値Ftを用いて、信頼性の高いローカル動きベクトルLMVを抽出する。そして、動きベクトル算出部164で、当該信頼性の高いローカル動きベクトルLMVを用いて、グローバルモーションGMおよびグローバル動きベクトルGMVを算出するようにする。
【0224】
中間面までの階層でブロックマッチングを行なって得た中間面動きベクトルMVmから、グローバルモーションGMを用いる場合も同様にして算出することができる。ただし、グローバル動きベクトルGMVの位置のSAD値についての補正を行う場合のオフセット値OFSやゲインgは、それぞれの階層に応じて適切に設定するようにする。このようにして縮小面や中間面のローカル動きベクトルを用いて、グローバルモーションGMおよびグローバル動きベクトルGMVを求めるメリットは、次の通りある。
【0225】
1つは、先に述べたように縮小面や中間面は、その生成にあたってローパスフィルタが施されるため、ノイズが除去され、結果として、得られたローカル動きベクトルがノイズの影響を受けにくい点である。
【0226】
他の1つは、縮小面や中間面では、ターゲットブロックの数が少なくなるので、ローカル動きベクトルの数は少なくなり、演算コストが小さくなると共に、処理に要する時間や小さいので、処理の高速化が可能であることである。
【0227】
上述の例のように、通常は、ハードウェアの制約から、縮小面、中間面、基底面のマッチング処理ブロック単位は同じサイズとなる。このため、画サイズの小さい縮小面のターゲットブロックの数(=ローカル動きベクトルの数)は、基底面のみでブロックマッチングを行う場合に較べて相対的に少なくなる。
【0228】
そして、縮小面動きベクトルからグローバルモーションおよびグローバル動きベクトルGMVを求める場合には、中間面および基底面での動きベクトル検出処理は省略することができる。また、中間面動きベクトルからグローバルモーションおよびグローバル動きベクトルGMVを求める場合には、基底面での動きベクトル検出処理は省略することができる。したがって、処理の高速化が図れる。特に、縮小面動きベクトルMVsを用いてグローバルモーションGMおよびグローバル動きベクトルGMVを求めるようにした場合には、そのメリットは、大きい。
【0229】
先ず、動きベクトル算出部164では、縮小面ブロックマッチングを行なって、縮小面におけるターゲットブロック毎のローカル動きベクトルLMVsを求める。そして、ターゲットブロック毎の縮小面ローカル動きベクトルLMVsの信頼性を評価して、信頼性の高い縮小面ローカル動きベクトルLMVsのみを用いてグローバルモーションGMを算出する。そして、算出したグローバルモーションからグローバル動きベクトルGMVを算出しておく(ステップS501)。
【0230】
次に、階層化ブロックマッチングのため、縮小面再ブロックマッチングを行い、縮小面ローカル動きベクトルLMVsを再算出する(ステップS502)。次に、縮小面ローカル動きベクトルLMVsから中間面におけるターゲットブロックに対する参照ブロックについてのサーチ範囲を求め、中間面ブロックマッチングを行う。そして、中間面ローカル動きベクトルLMVmを算出する(ステップS503)。
【0231】
次に、中間面ローカル動きベクトルLMVmから基底面におけるターゲットブロックに対する参照ブロックについてのサーチ範囲を求め、基底面ブロックマッチングを行う。そして、基底面ローカル動きベクトルLMVbを算出する。そして、基底面ローカル動きベクトルLMVbと、ステップS501で算出されたグローバル動きベクトルGMVとを用いて、前述した背景一致度合いの評価判定を、ターゲットブロック毎に行う。そして、その評価判定に基づいて、ヒット率βを求めると共に、NR処理用動きベクトルMVnrを検出する(ステップS504)。
【0232】
次に、動き補償画像生成部166が、NR処理用動きベクトルMVnrを用いて、参照フレームの画像データから、ブロック単位で、動き補償画像を生成する(ステップS505)。上記した相関性フラグは、動き補償画像の生成とともに生成され、縮小面および中間面においては生成しなくてよい。また、加算率計算部171は、ステップS504で算出されたヒット率βと相関性フラグとに基づいて、上述したようにして、画素単位で加算率αを計算する(ステップS506)。そして、加算部172では、ステップS505で生成された動き補償画とターゲット画像とを、ブロック単位で、ステップS506で計算された加算率αで加算し、NR画像を生成する(ステップS507)。
【0233】
なお、上述の図25の処理フローの説明では、1回目のブロックマッチングによる動きベクトル検出時に求められたグローバルモーションGMおよびグローバル動きベクトルGMVは、階層化の再ブロックマッチングの基底面動きベクトルに対してのみ適用した。
【0234】
しかし、階層化の再ブロックマッチングの縮小面、中間面でも、グローバル動きベクトルGMVと、縮小面ローカル動きベクトルLMVs、中間面ローカル動きベクトルLMVmとを用いたターゲットブロックの背景一致度合い評価を行なってもよい。そして、その場合には、その結果としての動きベクトルMVnrを、縮小面、中間面における各ターゲットブロックについての動きベクトル出力とするようにする。
【0235】
そのようにした場合、縮小面、中間面における各ターゲットブロックについての動きベクトル(ローカル動きベクトル)を、通常よりも精度良く取得することが可能となる。基底面においても同様である。その際に、前述もしたように、オフセット値OFSやゲインgは、各階層に応じて適切に設定するものである。
【0236】
(加算処理の詳細)
上記したように、加算部172は、加算率αを用いて、ターゲット画像に動き補償画像を、画素毎に重ね合わせてNR画像を生成する。ここで、加算部172による加算率αを用いた重ね合わせの手法については様々なものが想定される。図26は、ターゲット画像と動き補償画像との重ね合わせの一例を説明するための図である。
【0237】
図26に示した例では、ターゲット画像Aに対して動き補償画像Bを重ね合わせ、この重ね合わせにより生成された画像B’に対して動き補償画像Cを重ね合わせ、この重ね合わせにより生成された画像C’に対して動き補償画像Dを重ね合わせることにより、重ね合わせ後の画像を生成する例について示している。しかし、ターゲット画像に重ね合わせる動き補償画像の枚数は3枚以外でもよく、1枚以上であれば特に限定されるものではない。
【0238】
図26に示すように、重ね合わせの回数を増加させるとともに、Pの値を「1/2」「1/3」「1/4」・・・と下げながら、動き補償画像を次々と加算していくことができる。すなわち、重ね合わせの回数をn回とした場合、Pの値を「1/n−1」として、動き補償画像を加算する。このような加算により、ターゲット画像および動き補償画像の全てを均等な重みにより加算することができる。
【0239】
<2.まとめ>
本発明の実施形態において、画像処理装置は、被写体が大部分を占める場合にもNR効果を挙げつつ、正確性の低い動き補償画像がターゲット画像に加算されてしまう可能性を低減することができる。
【0240】
本発明の実施形態においては、静止画撮影について主に説明しているが、本発明の実施形態におけるフレームNRを動画フレームNRに応用することも可能である。ただし、動画フレームNRに適用する場合は、以下のような注意が必要である。
【0241】
静止画撮影時におけるGM(グローバルモーション)計算は、GMが正しく算出されることが前提となっている。すなわち、GMが正しく算出できない場合は、その参照フレームは加算されない。つまり、N枚目の画像とN+1枚目の画像でGMが求まらない場合、N枚目の画像がそのまま加算画となり、次に、N+2枚目の画像と処理を行う。これは、出力画像がターゲット画像となるためであり、ターゲット画像にN枚加算したことによるNR効果があるためである。
【0242】
例えば、最終的にM枚加算する予定だった画像の中で、1枚GMが正しく求まらない画像があったとする。この1枚は撮影条件など信頼性にかける画像であること考慮すると、M−1枚で加算をした方が理想の画像を得ることができるという考えである。一方、動画フレームNRの場合は、GMが算出できない場合に、参照フレームを加算しないという手段は取れない。これは、IIR型フィルタを構成している関係で、参照画像に、過去Nフレーム分のNR効果があるためである。したがって、動画フレームNRでは、静止画撮影のように2枚の画像からGMを求めるだけではなく、光学センサの情報、手ぶれの情報、また時間的に前後のフレームの情報などを利用し、常にGMが求まる状態にしなくてはいけない。
【0243】
以上、添付図面を参照しながら本発明の好適な実施形態について詳細に説明したが、本発明はかかる例に限定されない。本発明の属する技術の分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本発明の技術的範囲に属するものと了解される。
【0244】
例えば、上記実施形態では、画像処理装置として撮像装置を例示したが、本発明はかかる例に限定されない。例えば、画像処理装置は、保存されている画像データを加工するために用いられる独立した装置であってもよく、また、画像データを加工するアプリケーションとしてPC(Personal Computer)などの情報処理装置に組み込まれていてもよい。
【0245】
また、上記実施形態では、画像処理装置の動き補償部、および画像重ね合わせ部の機能がDSPを用いて実現される場合を例示したが、本発明はかかる例に限定されない。例えば、これらの各部の機能は、専用のハードウェアによって実現されてもよく、またCPUを用いてソフトウェアとして実現されてもよい。
【符号の説明】
【0246】
10 撮像装置(画像処理装置)
1 制御部
16 動き補償部
163 マッチング処理部
164 動きベクトル算出部
165 コントロール部
166 補償画像生成部
167 相関性判定部
171 加算率計算部
172 加算部
【特許請求の範囲】
【請求項1】
参照画像のターゲット画像に対する動きをターゲットブロック毎にローカル動きベクトルとして算出するとともに、ローカル動きベクトルとグローバル動きベクトルとの一致度合いを示す指標値を前記ターゲットブロック毎に算出する動きベクトル算出部と、
前記動きベクトル算出部により算出された前記ローカル動きベクトルに基づいて参照ブロックを動き補償した動き補償ブロックを前記ターゲットブロック毎に生成することにより、動き補償画像を生成する動き補償画像生成部と、
前記動き補償画像生成部により生成された前記動き補償画像と前記ターゲット画像との相関性を前記ターゲットブロック毎に判定する相関性判定部と、
前記相関性判定部により判定された前記相関性と前記動きベクトル算出部により算出された前記指標値とに基づいて、前記ターゲット画像と前記動き補償画像とを加算する加算部と、
を備える、画像処理装置。
【請求項2】
前記画像処理装置は、
前記相関性判定部により判定された前記相関性と前記動きベクトル算出部により算出された前記指標値とに基づいて加算率を算出する加算率計算部をさらに備え、
前記加算部は、
前記加算率計算部により算出された前記加算率に基づいて、前記ターゲット画像と前記動き補償画像とを加算する、
請求項1に記載の画像処理装置。
【請求項3】
前記加算率計算部は、
前記相関性が第1閾値よりも大きい場合であり、かつ、前記指標値が第2閾値よりも大きい場合には、前記相関性を一定とした場合に、前記指標値の上昇に伴って前記加算率を上昇させる、
請求項2に記載の画像処理装置。
【請求項4】
前記加算率計算部は、
前記相関性が第1閾値よりも小さい場合であり、かつ、前記指標値が第2閾値よりも大きい場合には、前記相関性が前記第1閾値よりも大きい場合であり、かつ、前記指標値が前記第2閾値よりも大きい場合と比較して、前記相関性を一定とした場合に、前記指標値の増加に伴う前記加算率の上昇を抑制させる、
請求項3に記載の画像処理装置。
【請求項5】
前記加算率計算部は、
前記相関性が第1閾値よりも大きい場合であり、かつ、前記指標値が第2閾値よりも大きい場合には、前記指標値を一定とした場合に、前記相関性に関わらず前記加算率を一定とする、
請求項1に記載の画像処理装置。
【請求項6】
前記加算率計算部は、
前記相関性が第1閾値よりも大きい場合であり、かつ、前記指標値が第2閾値よりも小さい場合には、前記指標値を一定とした場合に、前記相関性の上昇に伴って前記加算率を上昇させる、
請求項5に記載の画像処理装置。
【請求項7】
参照画像のターゲット画像に対する動きをターゲットブロック毎にローカル動きベクトルとして算出するとともに、ローカル動きベクトルとグローバル動きベクトルとの一致度合いを示す指標値を前記ターゲットブロック毎に算出するステップと、
前記ローカル動きベクトルに基づいて参照ブロックを動き補償した動き補償ブロックを前記ターゲットブロック毎に生成することにより、動き補償画像を生成するステップと、
前記動き補償画像と前記ターゲット画像との相関性を前記ターゲットブロック毎に判定するステップと、
前記相関性と前記指標値とに基づいて、前記ターゲット画像と前記動き補償画像とを加算するステップと、
を含む、画像処理方法。
【請求項1】
参照画像のターゲット画像に対する動きをターゲットブロック毎にローカル動きベクトルとして算出するとともに、ローカル動きベクトルとグローバル動きベクトルとの一致度合いを示す指標値を前記ターゲットブロック毎に算出する動きベクトル算出部と、
前記動きベクトル算出部により算出された前記ローカル動きベクトルに基づいて参照ブロックを動き補償した動き補償ブロックを前記ターゲットブロック毎に生成することにより、動き補償画像を生成する動き補償画像生成部と、
前記動き補償画像生成部により生成された前記動き補償画像と前記ターゲット画像との相関性を前記ターゲットブロック毎に判定する相関性判定部と、
前記相関性判定部により判定された前記相関性と前記動きベクトル算出部により算出された前記指標値とに基づいて、前記ターゲット画像と前記動き補償画像とを加算する加算部と、
を備える、画像処理装置。
【請求項2】
前記画像処理装置は、
前記相関性判定部により判定された前記相関性と前記動きベクトル算出部により算出された前記指標値とに基づいて加算率を算出する加算率計算部をさらに備え、
前記加算部は、
前記加算率計算部により算出された前記加算率に基づいて、前記ターゲット画像と前記動き補償画像とを加算する、
請求項1に記載の画像処理装置。
【請求項3】
前記加算率計算部は、
前記相関性が第1閾値よりも大きい場合であり、かつ、前記指標値が第2閾値よりも大きい場合には、前記相関性を一定とした場合に、前記指標値の上昇に伴って前記加算率を上昇させる、
請求項2に記載の画像処理装置。
【請求項4】
前記加算率計算部は、
前記相関性が第1閾値よりも小さい場合であり、かつ、前記指標値が第2閾値よりも大きい場合には、前記相関性が前記第1閾値よりも大きい場合であり、かつ、前記指標値が前記第2閾値よりも大きい場合と比較して、前記相関性を一定とした場合に、前記指標値の増加に伴う前記加算率の上昇を抑制させる、
請求項3に記載の画像処理装置。
【請求項5】
前記加算率計算部は、
前記相関性が第1閾値よりも大きい場合であり、かつ、前記指標値が第2閾値よりも大きい場合には、前記指標値を一定とした場合に、前記相関性に関わらず前記加算率を一定とする、
請求項1に記載の画像処理装置。
【請求項6】
前記加算率計算部は、
前記相関性が第1閾値よりも大きい場合であり、かつ、前記指標値が第2閾値よりも小さい場合には、前記指標値を一定とした場合に、前記相関性の上昇に伴って前記加算率を上昇させる、
請求項5に記載の画像処理装置。
【請求項7】
参照画像のターゲット画像に対する動きをターゲットブロック毎にローカル動きベクトルとして算出するとともに、ローカル動きベクトルとグローバル動きベクトルとの一致度合いを示す指標値を前記ターゲットブロック毎に算出するステップと、
前記ローカル動きベクトルに基づいて参照ブロックを動き補償した動き補償ブロックを前記ターゲットブロック毎に生成することにより、動き補償画像を生成するステップと、
前記動き補償画像と前記ターゲット画像との相関性を前記ターゲットブロック毎に判定するステップと、
前記相関性と前記指標値とに基づいて、前記ターゲット画像と前記動き補償画像とを加算するステップと、
を含む、画像処理方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【公開番号】特開2012−142828(P2012−142828A)
【公開日】平成24年7月26日(2012.7.26)
【国際特許分類】
【出願番号】特願2011−349(P2011−349)
【出願日】平成23年1月5日(2011.1.5)
【出願人】(000002185)ソニー株式会社 (34,172)
【Fターム(参考)】
【公開日】平成24年7月26日(2012.7.26)
【国際特許分類】
【出願日】平成23年1月5日(2011.1.5)
【出願人】(000002185)ソニー株式会社 (34,172)
【Fターム(参考)】
[ Back to top ]