以下、この発明による画像処理装置および画像処理方法の実施形態を、静止画像の撮像装置に適用した場合について、図を参照しながら説明する。
この実施形態の撮像装置は、撮像素子(イメージャ)によって撮像された静止画像に対して面内NR処理部で、面内NR処理を施した後、面内NR処理部からの複数枚の静止画像を位置合わせしながら重ね合わせて時間方向に加算する加算NR処理を施すようにする。これにより、この実施形態の撮像装置は、空間方向および時間方向のノイズ低減を施した静止画像を得て、記録媒体に記録するようにするものである。
[撮像装置のハードウエア構成例]
図1は、この発明の画像処理装置の実施形態としての撮像装置の一例のブロック図を示すものである。
この図1に示すように、この実施形態の撮像装置は、システムバス2にCPU(Central Processing Unit)1が接続される。また、システムバス2に、撮像信号処理系10や、ユーザ操作入力部3、画像メモリ部4、記録再生装置部5などが接続されて構成されている。なお、この明細書においては、CPU1は、図示は省略するが、種々のソフトウエア処理を行なうプログラムを記憶するROM(Read Only Memory)やワークエリア用RAM(Random Access Memory)などを含むものとしている。
ユーザ操作入力部3を通じた撮像記録開始操作を受けて、図1の撮像装置の撮像信号処理系は、後述するような静止画の撮像画像データの記録処理を行なう。また、ユーザ操作入力部3を通じた撮像記録画像の再生開始操作を受けて、図1の撮像装置は、記録再生装置部5の記録媒体に記録された撮像画像データの再生処理を行なう。
図1に示すように、撮像信号処理系10においては、撮像レンズ10Lを備えるカメラ光学系(図示は省略)を通じた被写体からの入射光は、撮像素子11に照射されて撮像される。この例では、撮像素子11は、CCD(Charge Coupled Device)イメージャで構成されている。なお、撮像素子11は、CMOS(Complementary Metal Oxide Semiconductor)イメージャで構成してもよい。
この例の撮像装置においては、撮像記録開始操作がなされると、撮像レンズ10Lを通じて入力された映像が、撮像素子11により撮像画像信号に変換される。そして、タイミング信号発生部12からのタイミング信号に同期した信号として、赤(R)、緑(G)、青(B)の3原色から構成されるベイヤー配列のRAW信号(生の信号)であるアナログ撮像信号が、撮像素子11から出力される。出力されたアナログ撮像信号は、前処理部13に供給され、欠陥補正やγ補正等の前処理が施され、面内NR処理部14に供給される。
この実施形態の面内NR処理部14は、撮像素子11からの撮像画像の1枚ごとに、空間方向のノイズ低減処理である面内NR処理のノイズ低減の強さを変更制御可能な構成とされている。面内NR処理部14の構成例については後述する。
CPU1は、この面内NR処理部14のノイズ低減の強さを、撮像画像の1枚ごとに可変制御することができる。この実施形態では、CPU1は、面内NR処理部14における空間方向のノイズ低減の強さを、加算NR処理で重ね合わせる複数枚の画像内で変更制御する。そして、CPU1は、当該複数枚の画像内での空間方向のノイズ低減の強さの制御を、前記複数枚の画像群単位で繰り返すようにする。
この実施形態では、後述もするように、加算NR処理で重ね合わせる複数枚の画像の最初の1枚目は、面内NR処理部14でのノイズ低減の強さを強くする。そして、前記複数枚の画像の2枚目以降は、面内NR処理部14でのノイズ低減の強さを、1枚目よりも弱くする。
面内NR処理部14で面内NR処理を施された撮像画像信号(RAW信号)は、現像処理部15に供給される。
現像処理部15は、これに入力されたRAW信号であるアナログ撮像信号に対して、デモザイク処理、ガンマ補正処理、ホワイトバランス調整処理、画質補正もしくは画質調整処理などを行う。そして、現像処理部15は、その入力信号である赤(R)、緑(G)、青(B)のRAW信号から、輝度信号成分Yと、色差信号成分Cb/Crとにより構成されるデジタル撮像信号(YCデータ;YUV画像)に変換する。
現像処理部15からのデジタル撮像信号は、ユーザ操作入力部3を通じた静止画の撮影指示に基づいて、画像メモリ部4に、加算NR処理する複数枚(N(Nは2以上の自然数)枚)分が書き込まれる。
すなわち、ユーザ操作入力部3を通じた撮影指示として、シャッターボタンの押下による静止画撮影指示があると、現像処理部15からのN枚分(Nフレーム)のデジタル撮像信号が、1枚ずつ、N個のフレームメモリ41〜4Nのそれぞれに書き込まれる。つまり、現像処理部15からのデジタル撮像信号は、加算NR処理部で重ね合わせるべきNフレーム分が、画像メモリ部4の第1〜第N(Nは、重ね合わせる静止画の枚数)のフレームメモリ41〜4Nのそれぞれに1フレームずつに書き込まれる。
この例においては、シャッターボタンの押下時点から数えて1枚目のフレームの画像データは、後述するターゲットフレームの画像データとして第1のフレームメモリ41に書き込まれる。そして、シャッターボタンの押下時点から数えて2枚目以降のフレーム画像のデータは、後述する参照フレームの画像データとして、それぞれ第2〜第Nのフレームメモリ42〜4Nに順次に書き込まれる。この例では、例えばN=6とされる。
なお、以下の説明において、シャッターボタンの押下時点から数えて1枚目、2枚目、・・・の画像フレームは、説明の簡単のため、単に、1枚目、2枚目、・・・の画像フレームということとする。
そして、複数フレーム分の画像が画像メモリ部4に書き込まれた後、CPU1は、画像メモリ部4から当該複数フレーム分の画像を読み出して、加算NR処理部20において、加算NR処理を実行する。
CPU1は、後述するように、この実施形態では、始めに、1枚目の画像フレームと2枚目の画像フレームを画像メモリ部4から読み出して、加算NR処理部20で両者の動き分(動きベクトル)を検出する。そして、加算NR処理部20では、検出した動きベクトルを用いて、動き分を補償しながら2個の画像フレームを重ね合わせる。
また、この実施形態では、所定の大きさのブロック単位で動きベクトルの検出を行うと共に、そのブロックが静止画の背景部分か、動被写体部分かを判定し、背景部分での加算率は大きくし、動き被写体部分での加算率は小さくするようにする。これにより、動被写体部分で複数フレームを重ね合わせることによる、いわゆる多重露光と同じ画像状態になることを防止しながら、背景静止画部分について、所期のノイズ低減効果を得ることができる。
1枚目と2枚目の画像フレーム加算が終了したら、3枚目の画像フレームを画像メモリ部4から読み出し、これと、1枚目と2枚目の画像フレーム加算結果の画像とを、両者の間の動き分を補償しながら重ね合わせる。以下、4枚目以降は、3枚目の画像フレームと同様に、これと加算結果の画像とを、両者の間の動き分を補償しながら重ね合わせる。
加算NR処理部20での重ね合わせ結果の画像データMIXvは、後述するように、画像メモリ部4に書き戻される。そして、画像メモリ部4に書き戻された重ね合わせ結果の画像フレームは、重ね合わされる画像フレームとの間での動き検出のために用いられる。そして、画像メモリ部4に記憶された最終的な重ね合わせ結果の画像フレームは、記録媒体への記録画像フレームとされる。
すなわち、画像メモリ部4に格納された重ね合わせ結果のNR画像である加算画像の画像データMIXvは、システムバス2を通じて静止画コーデック部16に供給されてコーデック変換される。静止画コーデック部16からの出力データは、記録再生装置部5の例えばDVD(Digital Versatile Disc)やハードディスクなどの記録媒体に記録される。この実施形態では、静止画コーデック部16では、JPEG(Joint Photographic Experts Group)方式の静止画についての画像圧縮符号化処理が行われる。
また、この静止画撮影モード時、シャッターボタンが押下操作される前においては、現像処理部5からの画像データは、画像メモリ部4を通じて、解像度変換部17に供給される。そして、画像データは、この解像度変換部17にて、所定の解像度に変換された後、NTSC(National Television System Committee)エンコーダ18に供給される。このNTSCエンコーダ18では、画像データは、NTSC方式の標準カラー映像信号に変換され、例えばLCD(Liquid Crystal Display;液晶ディスプレイ)からなるモニターディスプレイ6に供給される。モニターディスプレイ6の表示画面には、静止画撮影モード時のモニター画像がモニター表示される。
記録再生装置部5の記録媒体に記録された静止画の画像データは、ユーザ操作入力部3を通じた再生開始操作に応じて読み出され、静止画コーデック部16に供給されて、再生デコードされる。そして、再生デコードされた静止画の画像データは、画像メモリ部4のバッファメモリ(図示は省略)を通じ、解像度変換部17を通じてNTSCエンコーダ18に供給される。NTSCエンコーダ18でNTSC方式の標準カラー映像信号に変換された画像データは、モニターディスプレイ6に供給され、再生画像がその表示画面に表示される。
なお、図1では、図示を省略したが、NTSCエンコーダ18からの出力映像信号は、映像出力端子を通じて外部に導出することが可能とされている。
なお、この実施形態では、静止画コーデック部16により画像データを圧縮して記録するようにしたが、静止画コーデック部16を省略して、画像データを圧縮せずに記録するようにしても良い。
[面内NR処理部14の構成および処理動作]
<第1の例>
この第1の例は、面内NR処理部14を、εフィルタの構成とした場合であって、デスクリートの複数の回路からなるハードウエア構成とした場合である。この第1の例においては、面内NR処理部14は、入力バッファ部141と、ウィンドウ演算処理部142と、フィルタ処理部143とからなる。
入力バッファ部141は、注目画素の周囲に設定される前述したウィンドウ領域の垂直方向のサイズ(ライン数)に応じた複数ライン分のラインバッファを備える。そして、入力バッファ部141は、前処理部13からのRAW画像データから、注目画素とその周辺のウィンドウ領域内の複数の画素を一時格納する。
例えばウィンドウ領域の大きさが、縦×横=3×3=9である場合には、入力バッファ部は、3個のラインバッファを備え、9個の画素からなるウィンドウ領域の中央位置の画素を注目画素とし、その周囲の8個の画素を周辺画素として格納する。また、例えばウィンドウ領域の大きさが、縦×横=5×5=25である場合には、5個のラインバッファを備え、25個の画素からなるウィンドウ領域の中央位置の画素を注目画素とし、その周囲の24個の画素を周辺画素として格納する。
この入力バッファ部141は、順次に注目画素を変えながら、ウィンドウ内の注目画素および周辺画素をウィンドウ内演算処理部142に供給する。
ウィンドウ内演算処理部142は、各周辺画素については、注目画素との差分を算出し、算出した差分と閾値θthとを比較し、その比較結果に応じて画素値を決定して、ウィンドウ内の各画素の画素値として順次にフィルタ処理部143に供給する。この場合、ウィンドウ内演算処理部142は、算出した差分が、閾値θth以下である周辺画素はそのままの画素値で出力する。また、ウィンドウ内演算処理部142は、算出した差分が閾値θthよりも大きい周辺画素は、注目画素の画素値に変換して出力する。注目画素は、その画素値をそのまま出力する。
フィルタ処理部143は、この例では、ウィンドウ領域内に含まれる画素数に応じたタップ数のFIR(Finite Impulse Response)デジタルフィルタで構成される。このフィルタ処理部143の各タップに対するフィルタ係数は、例えば、それぞれタップの画素と注目画素との距離に応じた値が設定される。これにより、このフィルタ処理部143では、注目画素について、周辺画素を用いた重み付け平均値を求め、その求めた重み付け平均値を、ノイズ低減された注目画素データとして出力する。
こうしてフィルタ処理部143から出力されたノイズ低減処理された注目画素データが、画像メモリ部4のフレームメモリに順次に格納される。
ところで、従来は、一般的に、この面内NR処理部14に用いる閾値θthは、撮像素子11の光学ショットノイズ特性が考慮された固定値とされていた。例えば、CCDやCMOSなどからなる撮像素子11の光学ショットノイズ特性は、図3に示すようなものとなることが知られている。すなわち、光学ショットノイズのノイズ量(標準偏差σ)は、画素値(輝度値)をXとすると、
A×sqrt(X)
で表わされる。ここで、Aは、アナログゲイン、デジタルゲイン、フィルタ特性などにより決まる定数である。
そして、この光学ショットノイズは、ランダムノイズであり、当該ランダムノイズは、図4に示すようなガウス分布を示すことも知られている。
そして、閾値θth=1σに設定した場合には、68.26%のノイズ除去が可能であり、閾値θth=2σに設定した場合には、95.44%のノイズ除去が可能であり、閾値θth=3σに設定した場合には、99.74%のノイズ除去が可能である。
以上のことが考慮して、予め、撮像素子11の光学ショットノイズ特性を測定して、当該撮像素子11におけるノイズの標準偏差σを求めておく。そして、前記閾値θthは、低減すべきノイズ量に応じた値として設定するようにする。
この場合に、前述もしたように、閾値θthを大きくして、ノイズ低減効果を大きくした場合には、信号成分の消失によるエッジの劣化が大きくなることを考慮する必要がある。このため、冒頭でも述べたように、ノイズ低減効果を上げつつ、信号成分の消失を最小限に抑えることができる適正な固定の閾値θthを設定することが困難であった。
この実施形態では、このことにかんがみ、ウィンドウ内演算処理部142における前記閾値θthは固定値とせず、CPU1により、1フレーム単位で変更可能に構成する。この閾値θthが1フレーム単位で変更可能とされることにより、面内NR処理部14におけるノイズ低減の強さが1フレーム単位で変更可能とされる。
そして、この実施形態では、後述するように、シャッターボタンの押下に応じて取り込まれ、加算NR処理される複数枚の画像フレームの1枚目が基準とされて加算NR処理がなされることを考慮して、面内NR処理のノイズ低減強さを次のように設定制御する。
すなわち、この実施形態では、加算NR処理される複数枚の画像フレームの1枚目は、ノイズ低減の強さを大きくし、例えば閾値θthを、3σに設定する。その他の2枚の以降の画像フレームについては、ノイズ低減の強さを弱く、例えば閾値θthを、1σに設定する。
これにより、加算される複数枚の画像フレームのうち、1枚目の画像フレームは面内NR処理によるノイズ低減が強く施されて、光学ショットノイズは、上述したように99.74%が除去される。しかし、閾値θth=3σよりも小さい信号成分が消失してしまい、画像の詳細情報が失われるおそれがある。
しかし、加算される複数枚の画像フレームの、2枚目以降についての面内NR処理によるノイズ低減の強さは、弱くされる。すなわち、閾値θth=1σであるので、光学ショットノイズは、上述したように68.26%しか除去されないが、3σ以下、1σ以上の信号成分は消失してしまうことは無い。
そして、後段の加算NR処理部20では、1枚目の画像フレームに対して、信号成分が消失していない2枚目以降の画像フレームが加算される結果、1枚目の画像フレームで消失した画像の詳細情報が復元されるようになる。これにより、信号成分を残しつつ、高いノイズリダクション効果を得ることができる。
図5は、この実施形態におけるCPU1の閾値θthの設定処理を説明するためのフローチャートである。この図5のフローチャートは、ユーザによりシャッターボタンが押下されて、撮像素子11からの画像フレームの読み出しが開始されると共にスタートから開始される。
すなわち、先ず、CPU1は、取り込む画像フレームの、シャッターボタン押下からの枚数Nを初期設定する。つまり、N=1とする(ステップS1)。次に、CPU1は、前処理部13からの画像フレーム(RAWデータ)を取り込む(ステップS2)。そして、取り込んだ画像フレームが1枚目であるか、すなわち、N=1であるか否かを判別する(ステップS3)。
ステップS3で、N=1であると判別したときには、CPU1は、面内NR処理部14のウィンドウ内演算処理部142に供給する閾値θthを、この例では3σに設定して、ノイズ低減強さを強い状態とする(ステップS4)。
また、ステップS3で、N=1ではないと判別したときには、CPU1は、面内NR処理部14のウィンドウ内演算処理部142に供給する閾値θthを、この例では1σに設定して、ノイズ低減強さを比較的弱い状態とする(ステップS5)。
ステップS4またはステップS5の次には、CPU1は、1フレームの全ての画素についての面内NR処理を終了するのを待つ(ステップS6)。このとき、CPU1は、1フレーム内における処理対象の注目画素の位置および数を管理しているので、その管理データにより、1フレームの全ての画素についての面内NR処理を終了したか否かを判別することができる。
そして、CPU1は、1フレームの全ての画素についての面内NR処理を終了したと判別したときには、処理対象画像フレームのシャッターボタン押下からの枚数Nを1だけ更新して、N=N+1とする(ステップS7)。次に、CPU1は、更新後の枚数Nが6を超えたか否かを判別し(ステップS8)、超えていないと判別したときには、ステップS2に戻り、次の画像フレームを取り込む。そして、このステップS2以降の処理を繰り返す。
また、CPU1は、ステップS7で、更新後の枚数Nが6を超えたと判別したときには、この処理ルーチンを終了する。
<第2の例>
上述の第1の例は、ウィンドウ内演算処理部142およびフィルタ処理部143をハードウエア構成とした場合であるが、これらの処理は、CPU1がソフトウエア処理とすることもできる。第2の例は、その場合の例であり、この第2の例の場合のCPU1の処理動作のフローチャートの一例を図6に示す。
この図6のフローチャートのステップS11〜ステップS15までは、図5のフローチャートのステップS1〜ステップS5までと全く同一である。
この第2の例においては、ステップS14またはステップS15で、面内NRのノイズ低減強さを設定した後には、CPU1は、注目画素を設定する(ステップS16)。次に、CPU1は、設定された注目画素およびその周辺画素を用いてウィンドウ内演算処理部142の処理を実行する(ステップS17)。
すなわち、各周辺画素について、注目画素との差分を求め、その差分がステップS14またはステップS15で設定された閾値θth以下のときには、その周辺画素の画素値を注目画素の画素値に変更して出力する。また、注目画素との差分が閾値θthよりも大きい周辺画素については、当該周辺画素の画素値をそのまま出力する。注目画素は、そのままの画素値を出力する。
次に、CPU1は、ステップS17でウィンドウ内演算処理された周辺画素および注目画素の画素値について、前述したフィルタ処理部143における重み付け平均演算処理を行って、ノイズ低減された注目画素の画素値を生成して出力する(ステップS18)。こうして生成出力されたノイズ低減処理された注目画素データが、画像メモリ部4のフレームメモリに順次に格納される。
次に、CPU1は、処理を終了した注目画素が、1フレーム内の最後の注目画素であるか否か判別し(ステップS19)、最後の注目画素でなければ、ステップS16に戻って、次の注目画素を設定し、このステップS16以降の処理を繰り返す。
また、ステップS19で、処理を終了した注目画素が、1フレーム内の最後の注目画素であると判別したときには、CPU1は、処理対象画像フレームのシャッターボタン押下からの枚数Nを1だけ更新して、N=N+1とする(ステップS20)。次に、CPU1は、更新後の枚数Nが6を超えたか否かを判別し(ステップS21)、超えていないと判別したときには、ステップS2に戻り、次の画像フレームを取り込む。そして、このステップS2以降の処理を繰り返す。
また、CPU1は、ステップS21で、更新後の枚数Nが6を超えたと判別したときには、この処理ルーチンを終了する。
<面内NR処理部14の他の例>
上述した第1の例および第2の例は、面内NR処理部14としてεフィルタを用いた構成であったが、前述もしたように、バイラテラルフィルタを用いた構成としてもよい。また、特許文献1に記載された、複数個のεフィルタを用いた多段εフィルタを用いた構成とすることもできる。その場合にも、例えば注目画素と周辺画素との差分に対する閾値θthを変更することにより、面内NR処理のノイズ低減の強さを変更制御できるのは、上述の例と同様である。
また、面内NR処理部14は、上述のような条件付き平均値フィルタで構成する場合のほか、単純なメディアンフィルタやローパスフィルタの構成とすることもできる。その場合に、メディアンフィルタやローパスフィルタのタップ数や、フィルタ係数を1フレーム毎に変更することにより、面内NR処理部14におけるノイズ低減強さを変更制御することができる。
なお、面内NR処理部14でのノイズ低減強さを弱くする状態としては、面内NRを画像データに対して施さない状態を含むものである。
[加算NR処理部20の構成および処理動作]
この実施形態の撮像装置は、撮像素子(イメージャ)11によって撮像され、画像メモリ部4に格納された複数枚の静止画像を、位置合わせしながら重ね合わせて、画像の時間方向のノイズ低減を行うようにする。
撮像装置を手で保持して撮影する環境は、手ぶれが生じ易い環境である。このような撮像装置の手持ち撮影時において、静止画を連写撮影した場合に、この実施形態では、例えば1枚目をターゲットフレーム、2枚目以降を参照フレームとする。ここで参照フレームは、処理対象となるフレーム、つまり注目フレームであり、一方、ターゲットフレームは、当該参照フレームの動きの元となる元フレームである。この例では、ターゲットフレームに対して参照フレームを動き補償しながら加算するようにする。
参照フレーム全体に、平行移動、回転、拡大縮小を伴う変形処理を施すことにより、ターゲットフレームの位置に、参照フレームを位置合わせすることができる場合、この参照フレーム全体に加わっている変形処理がグローバルモーションである。グローバルモーションは、通常は、画像の背景静止画(以下、背景と略す)の動きおよび動き量を示すものとなる。
手ぶれは、参照フレームがターゲットフレームに対して、平行移動、回転、拡大縮小を伴う画像変形をした分だけ、ターゲットフレームに対して、グローバルモーションが生じたことを意味している。
この実施形態では、説明の簡単のため、撮影した静止画の1枚目を基準(ターゲットフレーム)とする。しかし、これは本質ではない。任意のn枚目をターゲットフレームとし、任意のm(n≠m)枚目を参照フレームとして、グローバルモーションを定義し直しても良い。また、動画中の時間的に異なる2枚のフレーム画像間を対象にして、グローバルモーションを定義してもよい。また、撮像画像の1フレームのうちの有効画枠全てを対象とせず、1フレームの画像の一部分のみに関して、グローバルモーションの処理を適用しても良い。
グローバルモーションが求められると、当該求められたグローバルモーションから、画面上の座標位置毎のターゲットフレームと参照フレームとの間の、画面全体に加わっている動きに応じた動きベクトルを算出することができる。当該画面全体に加わっている動きに応じた動きベクトルを、以下、グローバル動きベクトルという。このグローバル動きベクトルは、画面に設定される多数個のターゲットブロックのそれぞれについて求めることができる。また、グローバル動きベクトルは、画素毎に求めることもできる。
そして、グローバルモーションに基づいて、グローバル動きベクトルを正確に求めることができれば、手ぶれを良好に補正することができる。あるいは、グローバル動きベクトルを手ぶれ分を補正しながら、フレーム画像を重ね合わせることができる。
この明細書においては、動きベクトル検出および動き補償(動きベクトルにより、2フレームの画像を位置合わせすること)を用いて複数枚の画像を重ね合わせて、ノイズを低減する処理を加算NR処理と呼ぶ。なお、加算NRによりノイズ低減された画像を加算NR画像と称する。
この実施形態では、1画面を多数個のブロック(後述のターゲットブロック)に分割して、そのブロック単位の動きベクトルを、ブロックマッチング手法により検出する。ブロックマッチング手法によりブロック毎に検出した動きベクトルを、この明細書ではローカル動きベクトルという。
また、この実施形態では、ローカル動きベクトルの信頼性の指標を、ブロックマッチング手法における相関値を用いて、後述するようにして検出する。そして、この実施形態では、検出したローカル動きベクトルのうちの、信頼性の高いもののみから、グローバルモーションを算出し、算出したグローバルモーションからブロック毎のグローバル動きベクトルを検出するようにする。
また、この実施形態では、算出したグローバル動きベクトルと、ローカル動きベクトルLMVとを用いて、ブロック毎の背景画部分か、動被写体部分かの判定をするようにしている。
[ブロックマッチングの概要]
図7〜図12は、ブロックマッチング手法の概要を説明するための図である。ここで説明するブロックマッチング手法においては、例えば、図7(A)に示すように、ターゲットフレーム100に、それぞれ水平方向の複数画素および垂直方向の複数ライン分からなる所定の大きさの矩形領域のブロック(ターゲットブロック)102を想定する。また、参照フレーム101にも、ターゲットブロックと同じ大きさのブロック(参照ブロック)を設定する。
ブロックマッチングにおいては、ターゲットブロック102と相関性の高い参照ブロックを、参照フレーム101の中から検索する。この検索の結果、相関性が最も高いとして参照フレーム101内に検出された参照ブロック103(図7(B)参照)を、動き補償ブロックと呼ぶ。また、ターゲットブロック102と動き補償ブロック103(相関性が最も高い参照ブロック)との間の位置ずれ量を、動きベクトル(図7(B)の符号104参照)と称する。
ターゲットブロック102と動き補償ブロック103との間の位置ずれ(位置ずれ量と位置ずれ方向を含む)に対応する動きベクトル104は、参照フレーム101におけるターゲットブロックの射影イメージブロック109の位置と、動き補償ブロック103の位置との間の位置ずれに相当する。ここで、射影イメージブロック109の位置と、動き補償ブロック103の位置は、例えばブロックの中心位置を用いる。
ターゲットブロック102の射影イメージブロック109は、参照フレーム101において、ターゲットフレーム100の各ターゲットブロック102の位置と同じ位置に想定される。
ブロックマッチング処理の概要を説明する。
先ず、図8において点線で示すように、参照フレーム101において、ターゲットフレーム100のターゲットブロック102の位置と同じ位置にターゲットブロック102の射影イメージブロック109を想定する。そして、このターゲットブロック102の射影イメージブロック109の中心の座標を、動き検出の原点105とする。そして、動きベクトル104が、動き検出の原点105から或る範囲内に存在すると仮定し、この動き検出の原点105を中心した所定の範囲をサーチ範囲106(図8の一点鎖線参照)と設定する。
次に、ターゲットブロック102と同じ大きさのブロック(参照ブロックという)108を参照画面において設定する。そして、この参照ブロック108の位置を、設定されたサーチ範囲106内において、例えば水平方向および垂直方向に、1画素または複数画素単位で移動させるようにする。したがって、サーチ範囲106においては、複数個の参照ブロック108が設定されることになる。
ここで、参照ブロック108を、サーチ範囲106内を移動させるというのは、この例では、動き検出原点105がターゲットブロックの中心位置であるので、参照ブロック108の中心位置を、サーチ範囲106内を移動させることを意味する。したがって、参照ブロック108を構成する画素は、サーチ範囲106よりもはみ出すことがある。
そして、サーチ範囲において、設定される各参照ブロック108に対して、当該各参照ブロック108とターゲットブロック102との位置ずれ量および位置ずれ方向を表すベクトル(参照ベクトルという)107(図8参照)を設定する。そして、それぞれの参照ベクトル107が指し示す位置にある参照ブロック108の画像内容と、ターゲットブロック102の画像内容との相関性を評価する。
参照ベクトル107は、図9に示すように、参照ブロック108の水平方向(X方向)の位置ずれ量Vxとし、垂直方向(Y方向)の位置ずれ量をVyとしたとき、ベクトル(Vx,Vy)と表すことができる。参照ブロック108の位置座標(例えば中心位置座標)とターゲットブロック102の位置座標(例えば中心位置座標)とが同じときには、参照ベクトル107は、ベクトル(0,0)と表す。
例えば、参照ブロック108が、ターゲットブロック102の位置から、X方向に1画素ずれた位置にある場合、参照ベクトル107はベクトル(1,0)となる。また、図10に示すように、参照ブロック108が、ターゲットブロック102の位置から、X方向に3画素、Y方向に2画素ずれた位置にある場合には、参照ベクトル107はベクトル(3,2)となる。
つまり、参照ベクトル107は、図10の例に示すように、対応する各参照ブロック108とターゲットブロック102との間での位置ずれ(位置ずれ量と位置ずれの方向を含むベクトルとなる)を意味する。なお、図10では、ターゲットブロック102および参照ブロック108の位置を、それぞれのブロックの中心位置としている。
参照ブロック108は、サーチ範囲106において移動するものとなるが、その場合に、参照ブロック108の中心位置がサーチ範囲106内を移動する。参照ブロック108は、水平方向および垂直方向の複数画素からなる。したがって、ターゲットブロック102とブロックマッチング処理される対象となる参照ブロック108が移動する最大範囲は、図10に示すように、サーチ範囲106よりも広いマッチング処理範囲110となる。
そして、ターゲットブロック102の画像内容との相関が最も強いとして検出された参照ブロック108の位置を、ターゲットフレーム100のターゲットブロック102の、参照フレーム101における位置(動いた後の位置)として検出する。検出した参照ブロックを、前述した動き補償ブロック103とする。そして、その検出した動き補償ブロック103の位置と、ターゲットブロック102の位置との間の位置ずれ量を、方向成分を含む量としての動きベクトル104として検出するようにする(図7(B)参照)。
ここで、ターゲットブロック102と、サーチ範囲106において移動する参照ブロック108との相関の強さを表す相関値は、基本的にはターゲットブロック102と参照ブロック108との対応する画素値を用いて算出される。その算出方法としては、自乗平均を用いる方法やその他種々の方法が提案されている。
そのうち、動きベクトルを算出する際に一般的に用いられる相関値としては、例えば、ターゲットブロック102内の各画素の輝度値と、参照ブロック106内の対応する各画素の輝度値との差分の絶対値の、ブロック内の全画素についての総和が用いられる(図11参照)。この差分の絶対値の総和を差分絶対値和と呼ぶ。以下、この差分絶対値和をSAD(Sum of Absolute Difference)値と記載することとする。
相関演算結果としてSAD値が用いられる場合には、SAD値が小さいほど相関が強いものとされる。したがって、サーチ範囲106において移動する参照ブロック108のうち、SAD値が最小となる位置の参照ブロック108が最も相関が強い最強相関参照ブロックとなる。この最強相関参照ブロックが、動き補償ブロック103として検出され、その検出された動き補償ブロック103のターゲットブロック102の位置に対する位置ずれ量が動きベクトルとして検出される。
なお、一般的には、相関値が大きい方が相関が強いとされる。しかし、相関演算結果としてSAD値が用いられる場合には、当該SAD値が小さいほど相関値が大きく、相関が強いと言うことができる。
前述したように、ブロックマッチングでは、サーチ範囲106において設定される複数個の参照ブロック108のそれぞれの、ターゲットブロック102の位置に対する位置ずれ量は、方向成分を含む量としての参照ベクトル107で表現される。各参照ブロック108の参照ベクトル107は、参照ブロック108の参照フレーム102上の位置に応じた値となる。前述したように、ブロックマッチングでは、相関値であるSAD値が最小値となる参照ブロック108の参照ベクトルを、動きベクトル104として検出する。
そこで、ブロックマッチングでは、サーチ範囲106において設定される複数個の参照ブロック108のそれぞれとターゲットブロック102との間におけるSAD値(以下、説明の簡単のため参照ブロック108についてのSAD値という)を、先ず求める。
次に、求めたSAD値を、図12に示すように、それぞれの参照ブロック108の位置に応じた参照ベクトル107のそれぞれに対応させて、メモリに記憶しておく。そして、そのメモリに記憶された全ての参照ブロック108についてのSAD値の中から、最小のSAD値の参照ブロック108を検出することで、動きベクトル104を検出するようにしている。なお、以下、説明の簡単のため、参照ブロック106の位置に応じた参照ベクトル107を参照ブロック108の参照ベクトル107という。
サーチ範囲106において設定された複数個の参照ブロック108の位置に応じた参照ベクトル107のそれぞれに対応させて、それぞれの参照ブロック108についての相関値(この例では、SAD値)を記憶したものを相関値テーブルと呼ぶ。この例では、相関値として差分絶対値和であるSAD値を用いるので、この相関値テーブルを、差分絶対値和テーブル(以下SADテーブルという)と呼ぶことにする。
図12のSADテーブルTBLが、これを示しており、このSADテーブルTBLにおいて、それぞれの参照ブロック108についての相関値(この例ではSAD値)を相関値テーブル要素という。図12の例では、符号111で指し示すSAD値は、参照ベクトルがベクトル(0,0)のときのSAD値である。そして、図12の例では、SAD値の最小値は、参照ベクトルがベクトル(3,2)のときの「7」であるので、求める動きベクトル104は、当該(3,2)となる。
なお、上述の説明において、ターゲットブロック102および参照ブロック108の位置とは、それらのブロックの任意の特定の位置、例えば中心位置を意味するものである。参照ベクトル107は、参照フレーム102におけるターゲットブロック102の射影イメージブロック109の位置と、参照ブロック108の位置との間のずれ量(方向を含む)を示すものである。
そして、各参照ブロック108に対応する参照ベクトル107は、参照フレーム101上において、ターゲットブロック102に対応する射影イメージブロック109の位置からの、各参照ブロック108の位置ずれとなっている。したがって、参照ブロック108の位置が特定されると、その位置に対応して参照ベクトルの値も特定される。これにより、SADテーブル110のメモリにおける参照ブロックの相関値テーブル要素のアドレスが特定されると、対応する参照ベクトルは特定されることになる。
なお、SAD値は、同時に、2つ以上のターゲットブロックについて並列に計算するようにしてもよい。
<ブロック単位の動きベクトル検出および信頼性評価>
以上のブロックマッチングの説明は、1つのターゲットブロックについての動きベクトルの算出についての説明である。このターゲットブロックのターゲットフレームの全体に占める割合は、通常、小さいので、この1つのターゲットブロックに基づいてターゲットフレームについての動き(グローバルモーション)を求めるようにすることは一般的には困難である。
この実施形態では、図13に示すように、ターゲットフレーム100を、例えば64画素×64ラインのような、比較的小さい大きさのターゲットブロック102の複数個に分割する。そして、この複数個のターゲットブロックのそれぞれについての動きベクトル(ローカル動きベクトル)104Bを先ず求める。このとき、この実施形態では、求めたそれぞれのローカル動きベクトルの信頼性を示す指標を、併せて算出するようにする。
そして、ローカル動きベクトルの信頼性の指標から、ターゲットフレームについて求めた複数個のローカル動きベクトルの中から、信頼性の高いローカル動きベクトルのみを抽出する。
次に、抽出した信頼性の高いローカル動きベクトルのみから、グローバルモーションを算出する。そして、算出したグローバルモーションを用いて、各ターゲットブロック単位のグローバル動きベクトルを算出する。
そして、算出したグローバル動きベクトルと、ターゲットブロック毎のローカル動きベクトルとを比較して、その比較結果に基づいて、各ターゲットブロックが背景部分か、動被写体部分かを評価判定するようにする。この実施形態では、算出したグローバル動きベクトルと、ターゲットブロック毎のローカル動きベクトルとを比較して、両者の一致度合いを判定する。そして、その判定結果として、ターゲットブロック毎のローカル動きベクトルとグローバル動きベクトルとの一致度合いを示す指標値を算出する。この指標値を、この明細書ではヒット率と称する。
このような評価判定を行うのは、画像に含まれるノイズの、ブロックマッチングで算出される相関値に与える影響を考慮したものである。
ターゲットブロックについてのグローバル動きベクトルとローカル動きベクトルとが一致したときには、そのターゲットブロックは背景画像部分であると判断できる。したがって、この一致度合いの指標値は、ターゲットブロックの画像が、背景画像部分と一致しているかどうかの度合い(背景一致度合い)を示すものとなる。
ターゲットブロックが背景画像部分であれば、静止画像部分であるので、ターゲットブロックの画像に対して、動き補償画像は、100%の割合(1:1の割合)で加算することができ、加算NR効果を最大限にすることができる。
そして、背景一致度合いが低ければ、ターゲットブロックは動被写体部分であると予想されるので、その画像に対する、動き補償画像の加算割合を、背景一致度合いに応じて低くすることで、多重露光のような状態を軽減することができる。
ここで、グローバル動きベクトルとローカル動きベクトルとが一致しない場合には、画像ノイズを考慮しなければ、そのターゲットブロックは、全て動被写体部分であると判断しても良い。この場合、ローカル動きベクトルに対応する参照ブロックについての相関値が最大(SAD値が最小)となっており、グローバル動きベクトルに対応する参照ブロックについての相関値よりも大きい(SAD値は小さい)。
しかし、一般に撮像画像などの画像中にはノイズが含まれる。この画像ノイズを考慮すると、グローバル動きベクトルとローカル動きベクトルとが一致しない場合であっても、ターゲットブロックが背景部分である場合がある。そして、そのようなターゲットブロックでは、ローカル動きベクトルに対応する参照ブロックについての相関値と、グローバル動きベクトルに対応する参照ブロックについての相関値との差は、前記画像ノイズ分よりも小さいものとなると考えられる。
そこで、この実施形態では、グローバル動きベクトルに対応する参照ブロックについての相関値を、前記画像のノイズ分を反映した値に補正し、その補正後の相関値と、ローカル動きベクトルに対応する参照ブロックについての相関値とを比較する。そして、補正後の相関値の方が大きい(SAD値は小さい)ときには、当該ターゲットブロックは、背景画像部分であると評価するようにする。すなわち、この実施形態では、補正した相関値に基づいて、前記背景一致度合いを評価するようにする。このとき、グローバル動きベクトルは、当該ターゲットブロックについての本来のローカル動きベクトルに一致したと考えられる。
そして、この実施形態では、背景一致度合いの評価の結果、ターゲットブロックが背景画像部分であると判定されたときには、当該ターゲットブロックについては、グローバル動きベクトルを、出力動きベクトルとして出力する。また、背景一致度合いの評価の結果、ターゲットブロックが背景画像部分と一致していないと判定されたときには、当該ターゲットブロックについては、ローカル動きベクトルを、出力動きベクトルとして出力する。この実施形態では、出力動きベクトルは、後段の処理用動きベクトル、この実施形態では、NR処理用動きベクトルである。
なお、グローバル動きベクトルとローカル動きベクトルとが全く一致したときには、グローバル動きベクトルとローカル動きベクトルのいずれを出力動きベクトルとしてもよいことは言うまでもない。
そして、この実施形態では、上述のようにして得たターゲットブロック単位の出力動きベクトルを用いて、ターゲットフレームに対して、参照フレームをブロック単位で位置合わせを行い、動き補償画像(動き補償フレーム)を生成する。そして、ターゲットフレームと、動き補償フレームとを重ね合わせて加算NR画像を生成するようにする。
そして、この実施の形態の撮像装置において、静止画撮影においては、図14に示すように、高速で複数枚の静止画像の撮影を行い、1枚目の静止画撮影画像をターゲットフレーム100とする。そして、2枚目以降、所定枚数の静止画撮影画像を参照フレーム101として、重ね合わせを行い、その重ね合わせたものを静止画撮影画像として記録するようにする。
すなわち、撮影者が撮像装置のシャッターボタンを押下操作すると、高速で前記所定枚数の静止画像が撮影される。そして、その1枚目に撮影した静止画像(フレーム)に対して、時間的に後で撮影された複数枚の静止画像(フレーム)が、重ね合わされて、記録されることになる。
なお、この実施形態では対象としないが、動画撮影時は、図15のように、撮像素子から出力されている現フレームの画像をターゲットフレーム100の画像とし、その前フレームの過去の画像を参照フレーム101の画像とする。つまり、動画撮影時には、現フレームの画像のノイズ低減を行うために、現フレームの前フレームの画像を現フレームに重ね合わせるということになる。
<動きベクトルの信頼性評価方法>
この実施形態では、上記の実情に鑑み、高ノイズ環境の画像においても有効に、動きベクトルの信頼性を評価できる信頼性指標値を得るようにしている。
この実施形態では、ターゲットブロックと参照ブロックとの間の相関値の第1極大値と、第2極大値との差または比を、動きベクトルの信頼性の指標値とする。この実施形態では、ターゲットブロックと参照ブロックとの間の相関値は、SAD値として検出するので、相関値の第1極大値および第2極大値は、SAD値の第1極小値および第2極小値となる。
図16は、1つのターゲットブロックについてのSADテーブルにおける各SAD値を、模式的に示した図である。この図16では、サーチ範囲を、画像の水平方向(x方向)と垂直方向(y方向)との2次元で表わし、高さ方向(x方向およびy方向に直交する方向)にSAD値を取って、SADテーブルを3次曲面で表わしている。
通常のブロックマッチング処理の場合、動きベクトルを検出するためにはSADテーブルにおけるSAD値の最小値のみが検出対象とされる。このSAD値の最小値は、SADテーブルにおけるSAD値の第1極小値であり、図16においては、点501で示す位置となっている。図16では、動き原点(x=0、y=0)から、この点501で示すSAD値の最小値位置との間のベクトルとして、動きベクトルMVが検出される。
ノイズが存在しない理想的な状態を考えれば、サーチ範囲内の複数の参照ブロックとターゲットブロックとの相関値を求めたとき、3次曲面で表わされるSADテーブルは、一様に下に凸となり、SAD値の極小値は、1つのみ存在する状態となる。しかし、実際の撮影状況においては、光量変化や、動き物体の動きなどの影響のほか、種々のノイズのため、3次曲面で表わされるSADテーブルは、一様に下に凸となることは殆どなく、複数個のSAD値の極小値が存在するのが一般的である。
そこで、この実施形態では、SAD値の最小値に等しい第1極小値を呈する参照ブロックの位置に基づいて動きベクトルMVを検出するが、このSAD値の第1極小値を除くSAD値のうちの極小値、すなわち、SAD値の第2極小値を、信頼性の指標を生成するために検出する。図16においては、点501で示す位置が第1極小値を示し、点502で示す位置が第2極小値を示している。
ノイズ等の影響が少なければ、SAD値の第1極小値と、SAD値の第2極小値との差は大きく、SAD値の第1極小値、すなわち、SAD値の最小値から検出される動きベクトルMVの信頼性は高くなる。一方、ノイズ等が多い環境においては、SAD値の第1極小値と、SAD値の第2極小値との差が小さく、いずれが動きベクトルMVに正しく対応しているか分からない状況になるので、信頼性が低いことになる。
以上のことから、この実施形態では、SAD値の第1極小値(SAD値の最小値)と、SAD値の第2極小値との差を、検出した動きベクトルの信頼性の指標とする。図16のサーチ範囲を1次元軸上で表わし直したSADテーブルを、図17に示す。この実施形態では、この図17において、第2極小値と第1極小値(SAD値の最小値)との差の値を、動きベクトルMVの指標値Ftとする。
なお、SAD値の第1極小値しか得られず、第2極小値が得られない場合には、この実施形態では、SAD値の理論上の最大値またはSADテーブル内のSAD値の最大値を、その動きベクトルMVの信頼性指標値とするようにする。したがって、そのようなブロックの動きベクトルは信頼性の高いものとされるが、このようなブロックは殆ど存在しないので、SAD値の第1極小値しか得られず、第2極小値が得られないようなブロックの動きベクトルは、信頼性の評価から外すようにしても良い。
なお、SAD値の第1極小値(SAD値の最小値)と、SAD値の第2極小値との差の代わりに、SAD値の第1極小値(SAD値の最小値)と、SAD値の第2極小値との比を、動きベクトルMVの信頼性の指標値Ftとすることもできる。しかし、以下の説明においては、動きベクトルの信頼性の指標値Ftとしては、SAD値の第1極小値(SAD値の最小値)と、SAD値の第2極小値との差を用いるものとする。
この実施形態の動きベクトルの信頼性指標によれば、従来のような画像のエッジや特徴などの画像成分を用いるものではなく、ターゲットフレームと参照フレームとの間の相関値のみを用いているので、ノイズに対してロバスト性が高い。すなわち、画像のノイズに影響されること無く、精度の高い動きベクトルの信頼性指標が得られる。
また、この実施形態では、相関値の第1極大値(SAD値の第1極小値)と、相関値の第2極大値(SAD値の第2極小値)との差または比を用いていることも、この実施形態の動きベクトルの信頼性指標が、ノイズに対してロバスト性が高い理由となっている。
すなわち、一般に、ノイズレベルが高くなって来ると、正しい動きベクトルであったとしても、そのSAD値は値が上昇してしまう。このため、信頼性の高い動きベクトルを抽出する目的で、動きベクトルの信頼性指標値Ftに対して閾値を設定し、当該閾値との比較処理を行う場合には、その閾値自体もノイズレベルに応じて変化させる必要がある。
これに対して、この実施形態による動きベクトルの信頼性指標値Ftの場合、ノイズレベルが高くなると、相関値の第1極大値(SAD値の第1極小値)と、相関値の第2極大値(SAD値の第2極小値)の両方が、ノイズレベルに応じて、値が上昇する。このため、相関値の第1極大値(SAD値の第1極小値)と、相関値の第2極大値の差に関しては、ノイズの影響が相殺されることになる。
つまり、ノイズレベルに依らない一定値の閾値処理が可能となる。相関値の第1極大値(SAD値の第1極小値)と、相関値の第2極大値(SAD値の第2極小値)との比を、動きベクトルの信頼性指標値Ftとして用いる場合も同様のことが言える。
ところで、ブロックマッチングを行う対象ブロックの画像のコントラストが低い場合、SAD値の第2極小値と、SAD値の最小値の差は縮まる傾向にある。このため、同一フレーム内にコントラストの高い領域と低い領域があるとき、同一の閾値でベクトル信頼性の評価値Ixを評価すると、コントラストの高い領域が優先的に抽出され易い。
これは、動きベクトルの信頼性という観点では正しい結果ではあるが、コントラストの低い領域をある程度救済する目的で、この実施形態では、動きベクトルの信頼性の指標値を求める演算式に、コントラストの影響を軽減する項を追加する。すなわち、ターゲットフレームの画像の最大輝度の値と最小輝度の値との差を求め、当該輝度の差を動きベクトルの信頼性の指標値に反映させるようにする。なお、ノイズによる悪影響を避けるため、ターゲットフレームの画像データに対してローパスフィルタを施してから、最大輝度と最小輝度の抽出を行う。
以上のことを踏まえたこの実施形態における動きベクトルの信頼性指標値Ftの算出式は、
Ft=(Btm2SAD−MinSAD)−(MaxTAR−MinTAR)×Co
・・・(式1)
ただし、
Ft;動きベクトルの信頼性指標値
Btm2SAD;SAD値の第2極小値
MinSAD;SAD値の最小値(第1極小値)
MaxTAR;ターゲットブロックの最大輝度値
MinTAR;ターゲットブロックの最小輝度値
Co;重み係数(≦1)
となる。
なお、動きベクトル信頼性指標値として、相関値の第1極大値と相関値の第2極大値との比を用いる場合にも、信頼性指標値算出式において、上述の(式1)と全く同様に、コントラストの影響を軽減する項を追加するようにすれば良い。もっとも、動きベクトルの信頼性指標値Ftの算出に当たって、コントラストの影響を軽減する項を追加することは必須ではなく、この項を省略してもよい。
[グローバルモーションおよびグローバル動きベクトルGMVの算出]
従来は、上述したような動きベクトルの信頼性指標値はなかったので、ターゲットフレームについて求められた複数個のローカル動きベクトルLMVのすべてを、同じ重みで用いてグローバルモーションを算出するようにしている。
これに対して、この実施形態では、上述のようにして、ターゲットフレームについての複数個のローカル動きベクトルLMVのそれぞれの信頼性指標値Ftを得ることができる。
そこで、求められた複数個のローカル動きベクトルLMVの信頼性指標値Ftを正規化して、例えば0以上、1以下の重み係数を、それぞれのローカル動きベクトルLMVに対して設定することができる。そして、各ローカル動きベクトルLMVは同じ重みではなく、それぞれの重み係数に応じた重みで用いて、グローバルモーションを算出するようにすることができる。すなわち、求められた複数個のローカル動きベクトルLMVの全てを用いてグローバルモーションを算出する収束演算を開始するようにするが、その際に、各ローカル動きベクトルLMVは、信頼性指標値Ftに応じた重み係数に応じた重みを用いるようにする。
しかし、グローバルモーションの算出演算処理を簡単にして、演算負荷を軽くするため、この実施形態では、ローカル動きベクトルLMVについての重み係数Wを、0と、1に2値化するようにする。
このため、この実施形態では、動きベクトルの信頼性指標値Ftに対する閾値thを設定し、
Ft>thであるときには、W=1
Ft≦thであるときには、W=0
・・・(式2)
とする。この演算式により、各ローカル動きベクトルLMVについての重み係数Wを、それぞれの動きベクトルの信頼性指標値Ftを用いて算出するようにする。
すなわち、この実施形態では、動きベクトル信頼性指標値Ftを用いて、複数個のローカル動きベクトルLMVのそれぞれの信頼性を判定し、複数個のローカル動きベクトルLMVから、信頼性の高いローカル動きベクトルLMVのみを抽出する。そして、当該抽出した信頼性の高いローカル動きベクトルLMVのみを用いてグローバルモーションを算出する。
この実施形態では、ターゲットフレームにおけるターゲットブロック数が比較的多いことから、この例のように、信頼性の高いローカル動きベクトルLMVのみを抽出する方法であっても精度の良いグローバルモーションの算出が可能である。
なお、複数個のローカル動きベクトルLMVから、グローバルモーションを算出する具体的な処理例は、後述する。
<加算NR処理部20のハードウエア構成例>
加算NR処理部20は、この実施形態では、図1に示すように、動きベクトル算出部21と、動き補償画生成部22と、加算部23と、加算率計算部24とからなる。
動きベクトル算出部21は、複数フレーム分の画像が画像メモリ部4に書き込まれた後、当該画像メモリ部4からターゲットフレームの画像データと参照フレームの画像データを読み込む。
そして、動きベクトル算出部21は、ブロックマッチング手法によるローカル動きベクトルLMVの検出を行うと共に、ローカル動きベクトルLMVの信頼性の算出、グローバルモーションの算出およびグローバル動きベクトルGMVの算出処理を行う。さらに、動きベクトル算出部21は、ターゲットブロックについての背景一致度合いの評価も行なって、ヒット率βを生成する。
この実施形態では、動きベクトル算出部21からは、ターゲットフレームの画像データTGvと、参照フレームの画像データREFvと、ヒット率βとが出力される。また、動きベクトル算出部21からは、グローバル動きベクトルGMVまたはローカル動きベクトルLMVからなるNR処理用動きベクトルMVnrの情報が出力される。
そして、動きベクトル算出部21からのNR処理用動きベクトルMVnrの情報と、参照フレームの画像データREFvとは動き補償画生成部22に供給される。動き補償画生成部22では、参照フレームの画像データREFvに対して、NR処理用動きベクトルMVnrによりグローバルモーションに対応する処理、つまり、平行移動、回転、拡大縮小を伴う変形処理を施して、動き補償画像を生成する。
そして、動きベクトル算出部21からのターゲットフレームの画像データTGvが加算部23に供給されると共に、動き補償画生成部22からの動き補償画像の画像データMCvが加算部23に供給される。
また、動きベクトル算出部21からのターゲットフレームの画像データTGvとヒット率βとが、加算率計算部24に供給される。加算率計算部24は、ターゲットフレームの各ターゲットブロック毎の加算率αを、背景一致度合いであるヒット率βに応じて計算する。そして、加算率計算部24は、算出したターゲットブロック毎の加算率αを、加算部23に供給する。
加算部23では、両画像データTGvおよびMCvの対応する位置の画素が加算されることにより、画像の重ね合わせ処理がなされ、その加算画像(NR画像である)の画像データMIXvが出力される。この画像重ね合わせは、ターゲットブロック単位に行なわれ、ターゲットブロックの画像データに対して、加算率αで、動き補償画像の画像データMCvの対応するブロックの画像データが加算される。
加算部23からの加算画像の画像データMIXvは、画像メモリ部4の第1のフレームメモリ41に、ターゲットフレームの画像データとして、その前のターゲットフレームの画像データに重ね書き(上書き)される。
すなわち、第1のフレームメモリ41のターゲットフレームの画像データは、最初は、シャッターボタンが押下された直後の1枚目のフレームの画像データとなる。第1のフレームメモリ41のターゲットフレームの画像データは、2枚目の参照フレームの動き補償画の画像データMCvとターゲットフレームとが加算されると、その加算結果の加算画像の画像データMIXvに書き換えられる。
そして、その加算画像の画像データMIXvが、3枚目の参照フレームの画像データに対するターゲットフレームの画像データとなる。そして、上述と同様にして、動きベクトル算出部21でNR処理用動きベクトルMVnrが算出され、加算部23で画像の重ね合わせ処理がなされる。
そして、その加算結果の加算画像の画像データMIXvが画像メモリ部4の第1のフレームメモリ41に、ターゲットフレームの画像データとして、その前のターゲットフレームの画像データに重ね書き(上書き)される。以下、4枚目以降の参照フレームに対しても同様の処理動作がなされる。
したがって、N枚目の参照フレームまでについての画像の重ね合わせ処理がなされた後には、画像メモリ部4の第1のフレームメモリ41には、重ね合わせるべきN枚の全てのフレームが重ね合わされたNR画像が書き込まれていることになる。
上述した動きベクトル算出部21および動き補償画生成部22は、ハードウエアにより構成することできる。また、動きベクトル算出部21および動き補償画生成部22は、DSP(Digital Signal Processor)を用いて構成することもできる。さらには、動きベクトル算出部15および動き補償画生成部16は、CPU1によりソフトウエア処理とすることもできる。
同様に、加算部23も、ハードウエアにより構成することできるし、また、DSPを用いて構成することもできる。さらには、加算部23も、CPU1によりソフトウエア処理とすることもできる。また、静止画コーデック部16も、同様である。
[動きベクトル算出部21の構成例]
動きベクトル算出部21のハードウエア構成例を図18に示す。この例では、動きベクトル算出部21は、ターゲットブロック102の画素データを保持するターゲットブロックバッファ部211と、参照ブロック108の画素データを保持する参照ブロックバッファ部212とを備える。
また、動きベクトル算出部21は、ターゲットブロック102と参照ブロック108とで対応する画素についてのSAD値を計算するマッチング処理部213を備える。また、動きベクトル算出部21は、マッチング処理部213から出力されるSAD値情報からローカル動きベクトルを算出するローカル動きベクトル算出部214を備える。動きベクトル算出部21は、さらに、コントロール部215と、動きベクトル信頼性指標値算出部216と、グローバルモーション算出部217と、グローバル動きベクトル算出部218と、コントラスト算出部219と、背景/動被写体判定部210と、を備える。
コントラスト算出部219は、ローパスフィルタ2191と、最大輝度値検出部2192と、最小輝度値検出部2193とからなる。
この例では、図示は省略するが、画像メモリ部4には、原画のターゲットフレームや参照フレームの画像データから生成された、ターゲットフレームおよび参照フレームについての縮小面の画像データおよび中間面の画像データが、記憶保持されている。
コントロール部215は、この動きベクトル算出部21における処理シーケンスを制御するもので、図示のように各部に制御信号を供給するようにする。
ターゲットブロックバッファ部211は、このコントロール部215の制御を受けて、画像メモリ部4のターゲットフレームの画像データから、指示されたターゲットブロックの画像データを読み込んで、マッチング処理部213に供給する。
参照ブロックバッファ部212は、コントロール部215の制御を受けて、画像メモリ部4の参照フレームの画像データから、指示されたマッチング処理範囲の画像データを読み込む。そして、参照ブロックバッファ部212は、そのマッチング処理範囲の画像データの中から、参照ブロックの画像データを順次にマッチング処理部213に供給するようにする。
マッチング処理部213は、ターゲットブロックバッファ部211からのターゲットブロックの画像データと、参照ブロックバッファ部212からの参照ブロックの画像データを受ける。そして、マッチング処理部213は、ブロックマッチング処理を、コントロール部215の制御にしたがって行う。そして、マッチング処理部213は、参照ベクトル(参照ブロックの位置情報)と、ブロックマッチング処理結果のSAD値とを、ローカル動きベクトル算出部214に供給する。
ローカル動きベクトル算出部214は、SAD値の第1極小値保持部2141と、SAD値の第2極小値保持部2142とを備え、マッチング処理部213からのSAD値から、SAD値の第1極小値と、SAD値の第2極小値とを検出する処理を行う。
ローカル動きベクトル算出部214は、SAD値の第1極小値保持部2141のSAD値の第1極小値およびその位置情報(参照ベクトル)と、SAD値の第2極小値保持部2142のSAD値の第2極小値およびその位置情報(参照ベクトル)とを更新してゆく。ローカル動きベクトル算出部214は、この更新処理をマッチング処理範囲の全ての参照ブロックについてのブロックマッチング処理が終了するまで行なう。
ブロックマッチング処理が終了したときには、SAD値の第1極小値保持部2141には、そのときのターゲットブロックについてのSAD値の第1極小値およびその位置情報(参照ベクトル)が記憶保持される。また、SAD値の第2極小値保持部2142には、SAD値の第2極小値およびその位置情報(参照ベクトル)が、記憶保持される。
ローカル動きベクトル算出部214は、マッチング処理範囲の全ての参照ブロックについてのブロックマッチング処理が終了したときに、SAD値の第1極小値保持部2141に保持されている参照ベクトルの情報(位置情報)を、動きベクトルとして検出する。このローカル動きベクトル算出部214の処理動作については、後で詳述する。
ローカル動きベクトル算出部214で得られたローカル動きベクトルLMVは、グローバル動きベクトル演算部217に供給される。グローバルモーション算出部217では、受け取ったローカル動きベクトルLMVを、一時保持する。
ローカル動きベクトル算出部214のローカル動きベクトルLMVの算出処理が終了したときには、コントロール部215は、動きベクトル信頼性指標値算出部216をイネーブルとして、動作を開始させる。そして、ローカル動きベクトル算出部214からは、第1極小値保持部2141のSAD値の最小値MinSADと、第2極小値保持部2142のSAD値の第2極小値Btm2SADとが、動きベクトル信頼性指標値算出部216に供給される。
また、このとき、ターゲットブロックバッファ部211からのターゲットブロックの画像データがローパスフィルタ2191を通じて最大輝度値検出部2192および最小輝度値検出部2193に供給される。そして、最大輝度値検出部2192および最小輝度値検出部2193のそれぞれで検出された最大輝度値MaxTARおよび最小輝度値MinTARが、動きベクトル信頼性指標値算出部216に供給される。
動きベクトル信頼性指標値算出部216では、これに供給される情報を用いて、前述した(式1)にしたがって、動きベクトルの信頼性指標値Ftを算出する。そして、動きベクトル信頼性指標値算出部216は、算出した動きベクトルの信頼性指標値Ftを、グローバルモーション算出部217に供給する。グローバルモーション算出部217では、そのときに供給されているローカル動きベクトルLMVに対応付けて、入力されてきた動きベクトルの信頼性指標値Ftを、一時保持する。
以上の処理が、ターゲットフレームの全てのターゲットブロックについて終了すると、コントロール部215は、グローバルモーション算出部217に、グローバルモーションの算出処理を開始するようにする制御指示信号を供給する。
この実施形態では、グローバルモーション算出部217は、この制御指示信号を受けて、先ず、保持している複数個のローカル動きベクトルLMVについて、対応して保持されている動きベクトル信頼性指標値Ftを用いて、信頼性の判定を行う。この実施形態では、前述した(式2)により、各ローカル動きベクトルLMVについての重み係数Wを算出する。グローバルモーション算出部217は、重み係数W=1である、信頼性の高いローカル動きベクトルLMVのみを抽出する。
そして、グローバルモーション算出部217は、抽出した信頼性の高いローカル動きベクトルLMVのみを用いてグローバルモーションGMを算出する演算処理を実行する。この例では、グローバルモーション算出部217は、アフィン変換を用いてグローバルモーションを推定して算出する。そして、グローバルモーション算出部217は、算出したグローバルモーションGMをグローバル動きベクトル算出部218に供給する。
グローバル動きベクトル算出部218は、グローバルモーションGMを、ターゲットブロックの座標位置(例えば中心位置)に適用することにより、そのターゲットブロックのグローバル動きベクトルGMVを算出する。
グローバル動きベクトル算出部218は、算出したグローバル動きベクトルGMVを背景/動被写体判定部210に供給する。背景/動被写体判定部210には、ローカル動きベクトル算出部214からのローカル動きベクトルLMVも供給される。
背景/動被写体判定部210では、前述もしたように、ターゲットブロック毎のローカル動きベクトルLMVと、グローバル動きベクトルGMVとを比較して、ターゲットブロックについての両者の一致度、つまり、背景一致度合いを判定する。この場合に、背景/動被写体判定部210では、ローカル動きベクトルLMVおよびグローバル動きベクトルGMVのそれぞれが対応する参照ブロックについての相関値(SAD値)を比較して、背景と動被写体との判定を行う。
ところで、ローカル動きベクトル算出部214でグローバルモーションを算出するために求めたローカル動きベクトルLMVおよび相関値(SAD値)を、背景/動被写体判定部210における前記の比較用として使用することもできる。
しかし、その場合には、ローカル動きベクトル算出部214では、グローバルモーション算出部217やグローバル動きベクトル算出部218での処理時間分だけ、当該ローカル動きベクトルやSAD値を保持しておく必要がある。この場合、特に、保持しておくSAD値は、グローバル動きベクトルGMVが、どの参照ベクトルに対応するものであるかは判っていないので、各ターゲットブロックのそれぞれについてSAD値テーブルの全てを保持しておく必要がある。そのため、これらローカル動きベクトルLMVやSAD値を保持しておくメモリとして、容量が膨大なものが必要となってしまう。
このことにかんがみ、この実施形態では、ローカル動きベクトル算出部214では、背景/動被写体判定部210における前記比較用のローカル動きベクトルLMVやSAD値は、再計算するようにする。これにより、ローカル動きベクトル算出部214には、ローカル動きベクトルLMVやSAD値を保持しておくメモリは設ける必要はなく、前記メモリの容量の問題は回避できる。
したがって、背景/動被写体判定部210は、再算出されたローカル動きベクトルLMVおよびSAD値を用いて、ターゲットブロックについての背景一致度合いを示すヒット率βを求める。グローバル動きベクトルGMVに一致する参照ベクトル(参照ブロック位置)についてのSAD値も、当該再算出時に取得する。そして、背景/動被写体判定部210は、当該再算出されたローカル動きベクトルLMVやSAD値を用いて、ターゲットブロックが、背景部分か、動被写体部分かを判定するようにする。
背景/動被写体判定部210は、前述したように、ローカル動きベクトルLMVに対応する参照ブロックについてのSAD値と比較すべき、グローバル動きベクトルGMVに対応する参照ブロックについてのSAD値は、画像のノイズ分を反映した値に補正する。
画像のノイズは、一般に、画像の輝度値に応じたものとなる。そこで、この実施形態では、コントラスト算出部219の最大値輝度値検出部2192からの最大輝度値MaxTARと、最小輝度値系部2193からの最小輝度値MinTARが、背景/動被写体判定部210に供給される。
背景/動被写体判定部210は、最大輝度値MaxTARと、最小輝度値MinTARとの差分として、画像の輝度値を検出し、検出した輝度値に応じて、グローバル動きベクトルGMVに対応する参照ブロックについてのSAD値の補正値を決定する。
そして、背景/動被写体判定部210は、その補正後の相関値と、ローカル動きベクトルに対応する参照ブロックについての相関値とを比較する。そして、グローバル動きベクトルGMVに対応する参照ブロックについてのSAD値の補正値の方が、ローカル動きベクトルに対応する参照ブロックについての相関値よりも小さい(相関値は大きい)かどうか判定する。小さいときには、当該ターゲットブロックは、背景部分と評価判定する。
背景/動被写体判定部210は、ターゲットブロックが背景部分であると見なせるようなヒット率βのときには、NR処理用動きベクトルMVnrとして、グローバル動きベクトルGMVを出力する。それ以外のときには、背景/動被写体判定部210は、ターゲットブロックに対して、NR処理用動きベクトルMVnrとして、ローカル動きベクトルLMVを出力する。
前述したように、背景/動被写体判定部210からのNR処理用動きベクトルMVnrは、動き補償画生成部16に供給される。
動き補償画生成部16では、動きベクトル算出部21を通じて送られてくる参照フレームの画像データREFvに対して、NR処理用動きベクトルMVnrに対応する変形処理が施されて、動き補償画像のデータMCvが生成される。そして、生成された動き補償画像のデータMCvが加算部17に供給される。
また、背景/動被写体判定部210は、求めたヒット率βは、加算率計算部21に供給する。加算率計算部21は、ヒット率βに基づいて、ターゲット画像に対する動き補償画像の加算率αを算出する。
この場合、加算率αは、ブロック単位あるいは画素単位で計算をすることができる。画素単位で計算をする場合であっても、ヒット率βは、ブロック単位であるので、当該ヒット率βが加算率の計算に関与するのは、ブロック単位であるのは言うまでもない。
加算率αをブロック単位に計算する場合には、ヒット率βのみに応じた加算率αを計算することもできる。勿論、ヒット率β以外の他の加算率計算要素を加味して、加算率αを計算することもできる。この実施形態では、ヒット率βのみではなく、後述もするように、ターゲット画像と動き補償画像との画素単位の違い、ターゲット画像のノイズなどの要因を加味して加算率αを計算する。
加算率計算部21で求められた加算率αは、加算部23に供給される。加算部23は、これに送られてくるターゲット画像の画像データTGvに対して、動き補償画像の画像データMCvを、加算率αで加算する。
この実施形態においては、加算部23では、ターゲットブロックの背景一致度合い(ヒット率β)に応じた加算率で、ターゲット画像と動き補償画像とが重ね合わされる。つまり、静止画部分では、ターゲット画像に対する動き補償画像の加算率が高くなり、動被写体部分では、ターゲット画像に対する動き補償画像の加算率が低くなる。
こうして、この実施形態では、背景部分と動被写体部分とでは、それぞれに適切な加算率で画像の重ね合わせをすることができる。したがって、画像重ね合わせにより得られたNR画像は、良好なものとなる。
しかも、この実施形態におけるグローバルモーションおよびグローバル動きベクトルGMVは、信頼性の高いローカル動きベクトルLMVから生成されたものであるので、確度の高い動きベクトルであり、その点でも良好な加算NR画像を得ることができる。
[NR画像生成のための全体の処理の流れ]
図19は、画像メモリ4に取り込んだ撮像画像について、NR画像を生成する処理の流れを示すフローチャートである。
先ず、動きベクトル算出部21では、ローカル動きベクトル算出部214でブロックマッチングによるローカル動きベクトルLMVの検出を行なう(ステップS31)。次に、動きベクトル信頼性指標値算出部216は、検出されたローカル動きベクトルLMVについての信頼性の指標値Ftを、ローカル動きベクトル算出部214で算出されたSAD値の第1極小値MinSADと、第2極小値Btm2SADとを用いて算出する(ステップS32)。
次に、グローバルモーション算出部217は、算出された信頼性の指標値Ftに基づいて、信頼性の高いローカル動きベクトルLMVを抽出する。そして、グローバルモーション算出部217は、当該抽出した信頼性の高いローカル動きベクトルLMVのみを用いてグローバルモーションGMを算出する(ステップS33)。
次に、ステップS33で算出されたグローバルモーションGMを用いて、ターゲットブロック毎のグローバル動きベクトルGMVを算出する(ステップS34)。
また、ローカル動きベクトル算出部214で、再ブロックマッチング処理を行なって、ローカル動きベクトルLMVを再検出する(ステップS35)。そして、ローカル動きベクトルLMVが検出された参照ブロック位置(参照ベクトル)におけるSAD値(MinSAD)を保持すると共に、ステップS34で算出されたグローバル動きベクトルGMVに対応する参照ブロックについてのSAD値も保持しておく。なお、このときには、ローカル動きベクトルLMVの信頼性の指標値Ftの算出の必要はない。
次に、背景/動被写体判定部210は、ステップS35で算出されたローカル動きベクトルLMVと、ステップS34で求められたグローバル動きベクトルGMVとを比較して、各ターゲットブロックについての背景一致度合いを評価し、ヒット率βを求める。そして、さらに、各ターゲットブロックについてのNR処理用動きベクトルMVnrを定め、動き補償画生成部22に出力する(ステップS36)。
このステップS26でのローカル動きベクトルLMVとグローバル動きベクトルGMVとの比較においては、ローカル動きベクトルLMVおよびグローバル動きベクトルGMVのそれぞれに対応する参照ブロックについてのSAD値を比較する。さらに、グローバル動きベクトルGMVに対応する参照ブロックのついてのSAD値については、上述したように、画像のノイズに応じた補正を加えるようにする。
次に、動き補償画生成部22では、ステップS36で定められたNR処理用動きベクトルMVnrを用いて、参照ブロック毎に動き補償画を生成し、加算部23に出力する(ステップS37)。
次に、加算率計算部21は、ステップS36で求められたヒット率βを用いて、上述したようにして、この例では、画素毎の加算率αを算出し、加算部23に供給する(ステップS38)。
次に、加算部23は、ターゲット画像に、ステップS37で生成された動き補償画を、ステップS28で算出された加算率αで画素毎に重ね合わせてNR画像を生成する(ステップS39)。以上で、NR画像の処理は終了となる。
なお、この図19は、あるターゲットフレームの1枚についての処理動作を示したものである。3枚以上の複数枚の画像を重ね合わせる場合には、生成した加算NR画像をターゲットフレームとすると共に、新たに重ね合わせる画像を参照フレームとして、図19の処理を繰り返す。
次に、動きベクトル算出部21の主要な各部の詳細な処理動作について、さらに説明する。
<グローバルモーション算出部217およびグローバル動きベクトル算出部218の処理動作>
不特定多数のベクトルから、最も好適なグローバルモーションを導出する手法として、この実施形態では、前述したようにアフィン変換を用いる方法を用いる。この方法は、信頼性の高いブロックの中から、動被写体等のグローバルモーションに適合しにくいブロックのローカル動きベクトルを徐々に排除しながら、最小自乗法を用いて、グローバルモーションのパラメータの収束を図る方法である。
図20に、アフィン変換の一般式を、(式3)として示す。この(式3)において、vは、ターゲットブロックの動きベクトルの水平成分、wはターゲットブロックの動きベクトルの垂直成分を示し、a,b,c,d,e,fは、アフィンパラメータを示している。ここで、アフィン変換では、アフィンパラメータa,b,c,d,e,fは、固定値である。そして、x,yは、ターゲットブロックの中心座標の水平成分、垂直成分を示している。
グローバルモーションの収束演算過程において求められたアフィンパラメータと、各ターゲットブロックの中心の座標から、グローバルモーションに応じた動きベクトル(このベクトルを理想的な動きベクトルと呼ぶ)が得られる。この理想的なベクトルと、観測(ブロックマッチングにより検出)された動きベクトルとの間のエラーの総和εは、図21の(式4)のように表される。
グローバルモーションを導出するという命題は、上記のエラーの総和εを最小化するアフィンパラメータa〜fの推定であり、これは、例えば、最小自乗法によって解くことが可能である。図22、図23、図24の(式5)、(式6)、(式7)には、アフィンパラメータa〜fの導出過程と、その結果を示す。
このように、アフィン変換のパラメータは比較的容易に算出されるが、その効果は大きい。アフィン変換は、画像の平行移動、回転、拡大縮小の他、ある程度の変形にも対応できるため、大抵の手ブレ即ちカメラワークの微少な補正をカバーする。
なお、アフィン変換についての先行技術文献としては、特許文献3(特開2005−321902号公報)などがある。
この例のグローバルモーション算出部217におけるグローバルモーションGMの算出処理の例を、図25のフローチャートに沿って説明する。
先ず、グローバルモーション算出部217は、保持している複数個のローカル動きベクトルLMVについて、それぞれの動きベクトル信頼性指標値Ftと、予め定めた閾値とを比較する。そして、その比較結果から、動きベクトル信頼性指標値Ftが、予め定めた閾値よりも大きい信頼性の高いローカル動きベクトルLMVのターゲットブロック(以下、説明の簡単のためブロックと記載)のみを選定する(ステップS41)。この処理は、前述の(式2)を用いて説明したように、重み係数Wとして、1と0との2値を用いる場合に相当する。
次に、グローバルモーション算出部217は、選定した複数のブロックのローカル動きベクトルLMVのみを用いると共に、アフィン変換を用いて、グローバルモーションGMを導出(推定)する(ステップS42)。つまり、グローバルモーションGMについてのアフィンパラメータa〜fを算出する。
次に、導出したグローバルモーションGMに基づいて、演算に用いた、選定したブロックのそれぞれの理論上のローカル動きベクトルLMVsを計算する(ステップS43)。
次に、選定した複数のブロックのそれぞれにおいて、ブロックマッチング処理により求めたローカル動きベクトルLMVと、ステップS43で求めた理論上のローカル動きベクトルLMVsとの誤差Enを計算する(ステップS44)。
このブロックマッチングで求めた動きベクトルと理論上の動きベクトルとの誤差計算は、演算の精度を重視するなら、三平方の定理から正しく距離計算を行えば良い。しかし、演算の精度よりも軽さを重要視するなら、水平及び垂直の両者の距離をそれぞれ求め、それらの和を、近似的な距離として用いても良い。
次に、選定した複数のブロックのそれぞれについて求めた誤差Enの全てを用いて、それら全ての誤差の平均値Eaveと、最大値Emaxとを算出する(ステップS45)。そして、平均値Eaveが、それに対して予め定められた閾値θaよりも小さく、且つ、最大値Emaxが、それに対して予め定められた閾値θbよりも小さいか否か判別する(ステップS46)。
ステップS46での判別の結果、条件を満足してはいないと判別したときには、ステップS44で求めた各ブロックの誤差Enの中から、誤差En=Emaxとなるブロックを、グローバルモーションを導出する複数のブロックから排除する。または、誤差En≧θbとなるブロックを検出し、検出したブロックの全てを、グローバルモーションGMを導出する複数のブロックから排除する(ステップS47)。
次に、ステップS47でのブロック排除の結果、残存するブロックの数が予め定めた数の閾値θcよりも少ないか否か判別する(ステップS48)。ステップS48で、残存するブロックの数が閾値θcよりも少なくはないと判別したときには、ステップS42に戻り、残存するブロックを選定したブロックとして、ステップS42以降の処理を繰り返す。
残存するブロックの数が閾値θcよりも少ないときには、適切なグローバルモーションGMが得られないので、対象となっている参照フレームの画像は、この実施形態の画像の重ね合わせには使用できない。そこで、ステップS48で、残存するブロックの数が閾値θcよりも少ないと判別したときには、当該参照フレームについてのその後の処理を全て行わないようにスキップする(ステップS49)。
そして、ステップS46で、誤差Enの平均値Eaveが閾値θaよりも小さく、且つ、誤差Enの最大値Emaxが閾値θbよりも小さいと判別したときには、演算は収束したとして、グローバルモーションGMをそのときのもので確定する(ステップS50)。そして、この処理ルーチンを終了する。
なお、ステップS47で、誤差Enが最大エラーEmaxのブロックのみを排除するか、誤差Enが閾値θb以上のブロックをまとめて排除するかは、グローバル動きベクトルGMVを求める際の収束の早さと精度のバランスで決めれば良い。精度を優先するなら前者の方式を採用し、エラーブロックを1つずつ排除して行けば良く、収束の早さを優先するなら後者を選択しても構わない。
グローバル動きベクトル演算部218は、以上のようにして算出したグローバルモーションGMに基づいて、各ターゲットブロック毎のグローバル動きベクトルGMVを算出する。すなわち、算出したグローバルモーションGMについての拡張アフィン変換のパラメータa〜lを用いて、図20の(式3)により、各ターゲットブロック毎の動きベクトル(理論上のローカル動きベクトルLMVsに相当)を求める。図20の(式3)において、x、yは、各ターゲットブロックの中心位置座標が用いられる。この求めた動きベクトルが、各ターゲットブロック毎のグローバル動きベクトルGMVとなる。
そして、動き補償画生成部22には、上述のようにして求められた、各ターゲットブロック毎のグローバル動きベクトルGMVが供給される。そして、動き補償画生成部22では、その各ターゲットブロック毎のグローバル動きベクトルGMVを用いて、ターゲットブロック毎の動き補償画を生成し、生成したブロック毎の動き補償画を加算部23に供給する。
[背景/動被写体判定部210の構成例および処理動作]
背景/動被写体判定部210では、上述したように、グローバル動きベクトル算出部218で算出されたグローバル動きベクトルGMVに対応する参照ブロックについてのSAD値を、ローカル動きベクトル算出部214での再ブロックマッチングの際に取得する。そして、取得したSAD値を、前述したように画像のノイズに応じて補正値により補正するようにする。その補正値による補正の方法としては、この実施形態では、2通りの方法を提供する。
<第1の例;オフセット付加によるSAD値の補正>
図26は、この第1の例の考え方を説明するための図である。図26は、横軸にサーチ範囲を取り、縦軸にSAD値を取ったときの、1個のターゲットブロックについてのSADテーブルの内容(SAD値)を示す図である。横軸の各値は、参照ブロック位置(参照ベクトル)となり、実線がSADテーブルの内容を示すものとなる。これは、図17に示したものと全く同様である。
この図26において、最小SAD値となる参照ブロックの位置(つまり参照ベクトル)501は、図17と同様に、ブロックマッチングによりローカル動きベクトルLMVとして検出される。一方、グローバル動きベクトルGMVとなる参照ブロックの位置が、図26において、位置503であるとする。
このとき、ローカル動きベクトルLMVにおけるSAD値と、グローバル動きベクトルGMVにおけるSAD値とが、画像のノイズ分に応じた差の範囲にあれば、グローバル動きベクトルGMVが、最小SAD値を取る参照ベクトルとなっている可能性がある。
つまり、本来はグローバル動きベクトルGMV(参照ブロックの位置)でのSAD値が最小となるべきであったのに、ノイズのために、異なる参照ブロックの位置(これがローカル動きベクトルLMV)を最小として検出されてしまったとすることができる。
そこで、この例では、画像のノイズ分に応じたオフセット値OFSを、グローバル動きベクトルGMVでのSAD値に付加して補正する。この例の場合には、オフセット値OFSを、グローバル動きベクトルGMVでのSAD値(SAD_GMVとする)から減算して補正する。すなわち、補正後のSAD値は、MinSAD_Gとすると、
MinSAD_G=SAD_GMV−OFS ・・・ (式8)
となる。
ここで、このオフセット値OFSは、あまり大きな値を設定すると、動被写体の動きベクトルまで、最小SAD値として判定されるようになってしまう。そこで、この実施形態では、オフセット値OFSは、ローカル動きベクトルの信頼性の指標値Ftについての閾値th(式7参照)よりも小さい値に設定される。
そして、背景/動被写体判定部210では、その補正後SAD値MinSAD_Gと、ローカル動きベクトルLMVでのSAD値(MinSAD)とを比較する。その比較の結果、MinSAD_G<MinSADであれば、当該ターゲットブロックについてのSAD値の最小値は、グローバル動きベクトルGMVに対応する参照ブロックについてのSAD値の補正値であるMinSAD_Gであると評価する。図26は、MinSAD_G<MinSADである場合を示している。
すなわち、図26のように、MinSAD_G<MinSADとなる場合は、当該ターゲットブロックについての真のローカル動きベクトルは、グローバル動きベクトルGMVに一致すると判定する。そして、その場合は、当該ターゲットブロックに対する背景一致度合いは高いと評価し、当該ターゲットブロックについてのヒット率βは大きな値とする。そして、当該ターゲットブロックについてのNR処理用動きベクトルは、グローバル動きベクトルGMVとする。
ここで、この実施形態では、ヒット率βは、0≦β≦1の範囲の値とされる。ローカル動きベクトルLMVと、グローバル動きベクトルGMVとが全く一致したときには、ヒット率βは、β=1とすることができる。しかし、この例では、ローカル動きベクトルLMVと、グローバル動きベクトルGMVとが全く一致しているかどうかの評価は行なわず、補正後SAD値MinSAD_Gと、ローカル動きベクトルLMVでのSAD値(MinSAD)との比較で評価する。したがって、評価結果には、ローカル動きベクトルLMVと、グローバル動きベクトルGMVとが全く一致する場合も含まれるが、不一致の場合も含まれる。
そして、後述もするように、この実施形態では、MinSAD_G<MinSADであれば、ヒット率βは、例えばβ=0.75とする。ここで、β=1としなかったのは、上述のように、前記比較結果には、ローカル動きベクトルLMVとグローバル動きベクトルGMVとが不一致の場合が含まれるからである。
図27に、この第1の例の場合の背景/動被写体判定部210の構成例(機能ブロック図)を、その周辺部と共に示す。
図27の例においては、背景/動被写体判定部210は、SAD_GMV検出部2101と、オフセット減算部2102と、オフセット生成部2103と、比較判定部2104とを備えて構成される。
この例の場合、マッチング処理部213からの再ブロックマッチング時に算出されたSAD値および各参照ブロックの位置情報(参照ベクトルの情報)が、ローカル動きベクトル算出部214に供給される。ローカル動きベクトル算出部214は、再ブロックマッチング時の最小SAD値MinSADを検出し、ローカル動きベクトルLMV(参照ブロックの位置情報(参照ベクトルの情報))を算出する。そして、ローカル動きベクトル算出部214は、再ブロックマッチング処理の結果、得られたローカル動きベクトルLMVと、最小SAD値MinSADとを比較判定部2104に供給する。
マッチング処理部213からの再ブロックマッチング時に算出されたSAD値および各参照ブロックの位置情報(参照ベクトルの情報)は、SAD_GMV検出部2101にも供給される。SAD_GMV検出部2101は、グローバル動きベクトルGMVに一致する参照ベクトルの参照ブロックについてのSAD値SAD_GMVを検出し、検出したSAD値SAD_GMVをオフセット減算部2102に供給する。
オフセット減算部2102では、オフセット生成部2103からのオフセット値OFSを、SAD_GMV検出部2101からのSAD値SAD_GMVから減算して、補正後SAD値MinSAD_Gを生成する。そして、オフセット減算部2102は、生成した補正後SAD値MinSAD_Gを比較判定部2104に供給する。
オフセット生成部2103は、画像のノイズに応じたオフセット値OFSを生成して、オフセット減算部2102に供給する。画像のノイズは、画像の輝度値に応じたものとなることにかんがみ、この例では、種々の輝度値とオフセット値OFSとの対応テーブルの情報がオフセット生成部2103に記憶されている。
オフセット生成部2103は、最大輝度値検出部2192からの最大輝度値MaxTARと最小輝度値検出部2193からの最小輝度値MinTARとの差としてターゲットブロックの輝度値を算出する。そして、オフセット生成部2103は、算出したターゲットブロックの輝度値を引数として、前記対応テーブルを検索し、前記引数の輝度値に対応するオフセット値OFSを取得するようにする。
比較判定部2104は、前述したように、ローカル動きベクトルLMVに対応する最小SAD値MinSADと、オフセット減算部2102からの補正後SAD値MinSAD_Gとを比較し、その比較結果に応じて、ヒット率βを生成して、出力する。
また、比較判定部2104には、ローカル動きベクトル算出部214からの再算出されたローカル動きベクトルLMVと、グローバル動きベクトル算出部218からのグローバル動きベクトルGMVも供給される。
そして、比較判定部2104は、MinSAD_G<MinSADである場合には、背景一致度合いが高いので、グローバル動きベクトルGMVをNR処理用ベクトルMVnrとして、動き補償画生成部22に出力する。また、比較判定部2104は、MinSAD_G<MinSADでないときには、背景一致度合いが低いので、ローカル動きベクトルLMVをNR処理用ベクトルMVnrとして、動き補償画生成部22に出力する。
なお、グローバル動きベクトルGMVのSAD値検出部2101およびオフセット減算部2102は、ローカル動きベクトル算出部214に含まれるように構成しても良い。その場合には、ローカル動きベクトル算出部214は、再ブロックマッチングを行いながら、グローバル動きベクトルGMVに対応する参照ブロックについてのSAD値SAD_GMVを検出し、オフセットOFSの減算演算を行なうようにする。
<背景/動被写体判定処理の流れ>
図27の構成によるローカル動きベクトル算出部214での再ブロックマッチング処理および背景/動被写体判定部210での背景一致度合い評価処理の流れを、図28および図29のフローチャートを参照して更に説明する。この図28および図29の処理は、コントロール部155の制御に基づいて、各部が実行する。なお、この図28および図29の例は、SAD_GMV検出部2101およびオフセット減算部2102は、ローカル動きベクトル算出部214に含まれるように構成されている場合である。
先ず、コントロール部215の制御により、再ブロックマッチングが開始され、ターゲットブロックバッファ部211に最初のターゲットブロックが設定される(ステップS61)。次に、コントロール部215の制御により、参照ブロックバッファ212にバッファリングされているマッチング処理範囲の参照フレームの画像データのうちから、ブロックマッチング処理する参照ブロックが設定される(ステップS62)。
マッチング処理部213は、設定されたターゲットブロックと、設定された参照ブロックとについてブロックマッチング処理を行い、SAD値を計算する。そして、マッチング処理部213は、求めたSAD値を、参照ブロックの位置情報(参照ベクトル)と共に、ローカル動きベクトル算出部214に供給する(ステップS63)。
ローカル動きベクトル算出部214は、参照ベクトルがグローバル動きベクトルGMVと一致しているか否か判別する(ステップS64)。これは、SAD_GMV検出部2101の処理動作に相当する。
ステップS64で、参照ベクトルがグローバル動きベクトルGMVとは一致していないと判別したときには、ローカル動きベクトル算出部214では、最小SAD値MinSADと、その参照ブロック位置(参照ベクトル)との更新処理を行なう(ステップS65)。つまり、それまでに保持されている最小SAD値MinSADと、新たに算出したSAD値とを比較して、小さい方のSAD値を最小SAD値MinSADとして保持すると共に、参照ブロック位置(参照ベクトル)も最小SAD値を呈するものに更新する。
次に、コントロール部215は、サーチ範囲内の全ての参照ブロックついてのターゲットブロックとのブロックマッチングが終了したか否か判別する(ステップS68)。
そして、ステップS68で、サーチ範囲内の全ての参照ブロックついての処理が終了してはいないと判別したときには、コントロール部215は、次の参照ブロックを設定する(ステップS69)。そして、ステップS62に戻り、上述したこのステップS62以降の処理を繰り返す。
また、ステップS64で、参照ベクトルがグローバル動きベクトルGMVと一致したと判別したときには、ローカル動きベクトル算出部214では、そのSAD値SAD_GMVからオフセット値OFSを減算する(ステップS66)。そして、その減算結果を補正後SAD値MinSAD_Gとして、その参照ブロック位置(参照ベクトル=グローバル動きベクトルGMV)とを保持する(ステップS67)。
そして、ステップS68に進み、サーチ範囲内の全ての参照ブロックついての処理が終了したか否か判別する。
そして、ステップS68で、サーチ範囲内の全ての参照ブロックついての処理が終了したと判別したときには、ローカル動きベクトル算出部214は、ローカル動きベクトルLMVと、最小SAD値MinSADを検出し、比較判定部2104に供給する。また、ローカル動きベクトル算出部214は、補正後SAD値MinSAD_Gも、比較判定部2104に供給する(図29のステップS71)。
そして、背景/動被写体判定部210の比較判定部2104は、最小SAD値MinSADが、予め定められている閾値TH1より小さいか否か判別する(ステップS72)。このステップS72の処理は、次のような問題に対処するために設けられている。
すなわち、例えばターゲット画像上の動被写体部分に相当するブロックが、参照画像上では動きにより消失したり、大きな変形を伴ったりした場合に、サーチ範囲内のどの参照ブロックともターゲットブロックについてのマッチングが取れない状況が生じる。
このような場合、SADテーブルのSAD値は、大きな値で、同様の値となって、最小SAD値MinSADと他の値が近い値となってしまう。このような状況では、グローバル動きベクトルGMVに一致する参照ベクトルでのSAD値からオフセット値OFSを減算した補正後SAD値MinSAD_Gは、必ず、最小SAD値MinSADよりも小さくなり、背景部分と誤検出されることになるおそれがある。
そこで、この問題を回避するため、この実施形態では、グローバル動きベクトルGMVに一致する参照ベクトルでのSAD値を補正して、背景一致度合いを判定する処理は、最小SAD値MinSADが、前記閾値TH1より大きい場合には、行わないようにする。
したがって、ステップS72で、最小SAD値MinSADが、前記閾値TH1より大きいと判別したときには、比較判定部2104は、グローバル動きベクトルGMVを用いた背景一致度合いの判定を行わず、ヒット率β=0.25とする(ステップS73)。β=0としないのは、閾値TH1より大きいSAD値を呈するターゲットブロックの中にも、背景と一致しているブロックも存在するかもしれないことを考慮したものである。
そして、比較判定部2104は、再算出されたローカル動きベクトルLMVを、当該ターゲットブロックのNR処理用動きベクトルとして動き補償画生成部22に出力する(ステップS74)。
次に、コントロール部215は、ターゲットフレーム内の全てのターゲットブロックについての処理が終了したか否か判別し(ステップS80)、終了していなければ、次のターゲットブロックを設定する(ステップS81)。そして、ステップS62に戻り、コントロール部215の制御の下に、上述したステップS62以降の処理を繰り返す。
また、ステップS72で、最小SAD値MinSADが、前記閾値TH1より小さいと判別したときには、比較判定部2104は、最小SAD値MinSADと、補正後SAD値MinSAD_Gとを比較する(ステップS75)。そして、比較判定部2104は、MinSAD>MinSAD_Gであるか否か判別し(ステップS76)、そうではないと判別したときには、ターゲットブロックは背景には一致していないとして、ヒット率βは、β=0とする(ステップS77)。
このステップS77の次には、ステップS74に進み、比較判定部2104は、再算出されたローカル動きベクトルLMVを、当該ターゲットブロックのNR処理用動きベクトルとして動き補償画生成部22に出力する。そして、ステップS80に進み、前述したステップS80以降の処理を繰り返す。
また、ステップS76で、MinSAD>MinSAD_Gであると判別したときには、ターゲットブロックは背景に一致している度合いが高いとして、ヒット率βは、β=0.75とする(ステップS78)。そして、比較判定部2104は、グローバル動きベクトルGMVを、当該ターゲットブロックのNR処理用動きベクトルとして動き補償画生成部22に出力する(ステップS79)。
そして、このステップS79の次には、ステップS80に進み、コントロール部215は、ターゲットフレーム内の全てのターゲットブロックについての処理が終了したか否か判別する。このステップS80で、ターゲットフレーム内の全てのターゲットブロックについての処理が終了していないと判別したときには、コントロール部215は、次のターゲットブロックを設定し(ステップS81)、その後、ステップS62に戻る。
また、ステップS80で、ターゲットフレーム内の全てのターゲットブロックについての処理が終了したと判別したときには、コントロール部215は、この背景/動被写体判定処理動作を終了する。
なお、上述の実施形態では、グローバル動きベクトルGMVのSAD値SAD_GMVに対してオフセット値OFSを減算して、補正SAD値MinSAD_Gを得て、それと最小SAD値MinSADとを比較するようにした。しかし、ローカル動きベクトルLMVの最小SAD値MinSADにオフセット値OFSを加算した値(MinSAD+OFS)と、グローバル動きベクトルGMVのSAD値SAD_GMVとを比較しても全く等価である。
<第2の例;ゲイン乗算によるSAD値の補正>
上述した第1の例では、オフセット値OFSの付加によりグローバル動きベクトルGMVと一致する参照ベクトル位置の参照ブロックについてのSAD値SAD_GMVを補正するようにした。
同様の考え方により、オフセット付加の代わりに、画像のノイズ分を考慮したゲインgを乗算することにより、SAD値SAD_GMVを補正することもできる。この例の場合には、SAD値SAD_GMVを、より小さい方向にゲイン倍するようにするので、ゲインgは、g<1となる。なお、相関値が相関の強さに応じて大きくなるものであるときには、g>1であることは勿論である。
この第2の例における、グローバル動きベクトルGMVでのSAD値SAD_GMVの補正後SAD値MinSAD_Gは、
MinSAD_G=SAD_GMV×g ・・・ (式9)
となる。
<加算率計算部24の構成例>
この実施形態においては、加算率計算部24では、画素単位に加算率α(0≦α≦1)を求める。そして、前述したように、基本的には、ターゲット画像と動き補償画像との画素単位の違いと、ヒット率βとに応じて加算率αを計算する。このため、加算率計算部24には、ヒット率βと、ターゲット画像のデータTGvおよび動き補償画像のデータMCvが供給される。
ここで、ターゲット画像と動き補償画像との画素単位の違いが大きければ、動き部分と考えられるので、加算率αは低くすべきであるが、前記画素単位の違いがない、あるいは小さければ加算率αは高くしても良い。しかし、ターゲットブロックが背景静止画部分であるか、動被写体部分であるかが不明である場合には、前述したように、動き部分における2重露光が目立たないようにするために、加算率αは比較的低く抑える必要がある。
しかし、この実施形態では、ヒット率βにより、背景静止画部分としての一致度合いが求められているので、ヒット率βが大きく、背景一致度合いが高いほど、加算率αは高くするようにする。
また、この実施形態では、さらに画像のノイズは、画像の明るさに応じたものとなるので、加算率計算部24では、ターゲット画像と動き補償画像との画素単位の違いに関しては、当該画像の明るさに応じたノイズを考慮するようにしている。すなわち、ターゲット画像と動き補償画像との画素単位の違いがノイズの範囲内であれば、両者の実際の差分は小さいと判断する。また、前記画素単位の違いがノイズの範囲よりも大きいときには、両者の差分は、実際に大きいと判断するようにする。
このノイズを考慮するため、加算率計算部24には、動きベクトル算出部21から、最大輝度値MaxTARおよび最小輝度値MinTARが供給される。そして、加算率計算部24では、この最大輝度値MaxTARおよび最小輝度値MinTARから、ターゲットブロック毎の明るさ、つまり、照度Lxを算出するようにする。
また、この実施形態の加算率計算部24には、加算度合いを、加算率計算部24の外部から制御することができるようにするため、加算調整用ゲインGAが供給される。この加算調整用ゲインGAの値は、予め用意されているゲイン値の中から、ユーザが選択したものとするように構成することができる。あるいは、撮像画像のISO感度に応じて、加算調整用ゲインGAの値を定めるように構成しても良い。後者の場合には、例えば撮像時の露出値やシャッター速度などに応じて、画像の明るさを判断して、加算調整用ゲインGAの値を定めるように構成することができる。つまり、明るい画像の場合には、ノイズが目立つので、加算率が小さくなるようにゲインを小さくし、逆に、暗い画像の場合には、加算率を大きくするようにゲインを大きく設定する。
この実施形態の加算率計算部24のハードウエア構成例を図30および図31に示す。この図30および図31の例においては、ターゲット画像のデータTGvおよび動き補償画像のデータMCvは、輝度成分と、色差成分とのそれぞれについて、別個に処理がなされる。
図30は、加算率計算部24における、輝度成分についての処理部分である。図30を参照して、先ず、輝度成分についての加算率計算処理についての説明する。
すなわち、ターゲット画像のデータTGvのうちの輝度データYtgは、ローパスフィルタ601を通じて差分絶対値計算部603に供給される。また、動き補償画像のデータMCvのうちの輝度データYmcが、ローパスフィルタ602を通じて差分絶対値計算部603に供給される。
差分絶対値計算部603は、画素毎に、輝度データYtgと輝度データYmcとの画素差分絶対値ΔPxYを算出し、算出した画素差分絶対値ΔPxYを、加算率変換出力部608に供給する。
ローパスフィルタ601を通じた輝度データYtgは、また、空間平均フィルタ604に供給される。そして、ローパスフィルタ602を通じた輝度データYmcは、また、空間平均フィルタ605に供給される。
空間平均フィルタ604および605のそれぞれは、差分絶対値計算部603で画素差分を求める画素(注目画素という)の周囲の8個の画素と、自画素との9個の画素の平均値MtgおよびMmcを求める。そして、空間平均フィルタ604および605は、求めた平均値MtgおよびMmcは、差分絶対値計算部606に供給する。
差分絶対値計算部606では、平均値Mtgと平均値Mmcとの平均差分絶対値ΔMeYを算出し、算出した平均差分絶対値ΔMeYを、加算率変換出力部609に供給する。
そして、この例においては、輝度成分についてのノイズモデルメモリ607が設けられる。このノイズモデルメモリ607には、画素値の輝度値に対するノイズ標準偏差σが、予め算出されて記憶されている。すなわち、横軸に画素値の輝度値を取り、縦軸にノイズ標準偏差σを取ったとき、ノイズ標準偏差σは、例えば図32に示すようなものとなる。この図32に示すように、明るい画素に対しては、ノイズの標準偏差σは小さく、暗い画素に対しては、ノイズの標準偏差σは大きい。
なお、この図32の特性図は、RAWデータではなく、ガンマ補正が施された後の撮像データについてのものである。撮像素子11からのRAWデータについて示した図3の場合とは異なっているが、両者は本質的には変わりは無い。
ノイズモデルは、ノイズが画像の明るさにより異なるものであるので、ノイズモデルメモリ607には、画像の照度Lxに応じた複数個のノイズモデルが記憶されている。
そして、前述したようにして、最大輝度値MaxTARおよび最小輝度値MinTARから求められたターゲットブロック毎の照度Lxが、ノイズモデルメモリ607に、照度に応じたノイズモデルを選択用として供給される。これにより、どのノイズモデルを使用するかが、照度Lxにより定められる。
また、ローパスフィルタ601を通じたターゲット画像データTGvの輝度データYtgが、ノイズモデルメモリ607に供給され、照度Lxおよび輝度データYtgにより定まるノイズ標準偏差σYが、ノイズモデルメモリ607から得られる。このノイズ標準偏差σYは、加算率変換出力部608および609に供給される。
さらに、これら加算率変換出力部608および609には、動きベクトル算出部15からのヒット率βと、外部からのゲインGAが供給される。
加算率変換出力部608は、画素差分絶対値ΔPxYと、ノイズ標準偏差σYと、ヒット率βと、ゲインGAとを変換パラメータとする変換関数を用いて、画素差分絶対値ΔPxYに基づく加算率αYAを出力する。
また、加算率変換出力部609は、平均差分絶対値ΔMeYと、ノイズ標準偏差σYと、ヒット率βと、ゲインGAとを変換パラメータとする変換関数を用いて、平均差分絶対値ΔMeYに基づく加算率αYBを出力する。
加算率変換出力部608および609は、基本的には、図33に示すように、ノイズ標準偏差σと、差分値とから加算率αを定める。なお、加算率変換出力部608および609では、ノイズ標準偏差σは、ノイズモデルメモリ607からのノイズ標準偏差σYであり、差分値は、画素差分絶対値ΔPxYおよび平均差分絶対値ΔMeYである。そして、出力加算率αは、加算率αYAおよびαYBである。
この実施形態では、図33に示すように、差分値が、ノイズ標準偏差σの倍数として設定できる所定の第1の閾値以下のときには、背景画像部分であるとして、加算率αは、最大値であるα=1とする。
そして、差分値が、(第1の閾値<差分値<第2の閾値)の範囲では、背景部分と動被写体部分とのいずれとの判断ができない部分として、図33に示すように、加算率αは差分値が大きくなるに従って直線的に小さくなるようにされる。そして、(差分値≧第2の閾値)の範囲では、動被写体部分であると判断して、加算率αは、最小値であるα=0とする。
ターゲットブロックの背景一致度合いが不明であるときには、上述したように、動被写体部分での二重露光のような状態を軽減するために、第1の閾値は安全を見越した値とされて、加算率αは全体的に抑制される。つまり、背景画像部分であることが分かっていれば、第1の閾値および第2の閾値を大きな値として設定して、できるだけ大きな加算率での画像加算を行なうことができる。
しかし、背景一致度合いが不明であるであるときには、全てのターゲットブロックについて、動被写体部分での二重露光のような状態を軽減するようにすることを考慮する必要がある。そのため、通常は、図33の例に示すように、第1の閾値は、標準偏差σの1倍(1σ)程度とされ、第2の閾値は、標準偏差の3倍(3σ)程度とされる。
これに対して、この実施形態では、上述したように、ターゲットブロック毎に、背景一致度合いが、その指標値であるヒット率βとして算出される。したがって、この背景一致度合いの指標値βを用いることにより、背景静止画像部分では、より大きな加算率で加算を行うことが可能となる。
ヒット率βを考慮した場合における加算率変換出力部608および609での加算率変換出力特性を図34に示す。
すなわち、図34の例においては、ヒット率βに応じて、差分値に対する第1の閾値を変更するようにする。すなわち、ヒット率βが最低で、β=0であるとき(動被写体部分)では、図33の例の場合と同様に、第1の閾値は、標準偏差σの1倍(1σ)とする。そして、ヒット率βが、β>0であるときには、ヒット率βの値に応じて第1の閾値を、より大きなものに変更する。
そして、図34の例においては、差分値が第1の閾値よりも大きくなったときからの加算率αの漸減直線の傾きは常に一定とされる。したがって、図34の例では、第2の閾値は、第1の閾値の変更に応じて自動的に変更される。
例えば、図35に示すように、ヒット率βを考慮しない図33の例の場合(β=0)においては、差分値が2σであるときには、加算率αは常に0.5となる。これに対して、ヒット率を考慮する場合においては、図35に示すように、ヒット率β=1.0である背景静止画像部分では、加算率αはα=1となり、最大の加算率で加算されるようになる。
このように、背景静止画像部分では、ヒット率βに応じて、より大きな加算率αが設定されるので、所期の通りのノイズ低減効果が得られる。また、動被写体部分では、ヒット率βに応じて加算率αは低く抑えられるので、二重露光の状態を軽減するという効果を維持することができる。
なお、上述の例では、第1の閾値のみをヒット率βに応じて変更し、差分値が第1の閾値よりも大きくなったときからの加算率αの漸減直線の傾きは常に一定としたが、第2の閾値をもヒット率に応じて変更して、前記漸減直線の傾きも変更するようにしても良い。
次に、加算率変換出力部608および609におけるゲインGAの寄与について説明する。
ゲインGAは、以上のようにして算出される加算率αを、さらに、変更制御するパラメータである。前述したように、このゲインGAは、ユーザにより設定されたり、撮影条件に応じて画像の明るさに応じて設定されたりするものである。例えばユーザにより設定する場合には、NR加算により、より大きなノイズ低減効果を得ようとする場合には、ゲインGAは大きくする。すると、上述のようにして算出された加算率αが、ゲインGAに応じた値に変更制御される。
図36に、加算率変換出力部608および609における、ゲインGAと、ヒット率βと、加算率αとの関係を示す。図36では、加算率αは、ヒット率β=0の場合の加算率を基準加算率αoとして、その基準加算率αoを基にした値として示している。
この図36の例においては、ゲインGAは、ユーザにより、あるいは、撮影条件などにより、GA=0、GA=1、GA=2、GA=3の4段階に、変更設定可能とされる。そして、ヒット率βも、β=0、β=0.25、β=0.5、β=1.0の4段階に設定されるようにされる。
そして、加算率αは、図36に示すように、基準加算率αoを係数K倍(K≧1)したものとされるが、その係数Kが、ゲインGAとヒット率βとの組み合わせに応じた倍数とされるものである。
以上のようにして、加算率変換出力部608では、画素差分絶対値ΔPxYと、ノイズ標準偏差σYと、ヒット率βと、ゲインGAとから、輝度成分の画素差分に基づく出力加算率αYAを出力する。また、加算率変換出力部608では、平均差分絶対値ΔMeYと、ノイズ標準偏差σYと、ヒット率βと、ゲインGAとから、輝度成分の平均差分に基づく出力加算率αYBを出力する。
色差信号成分については、平均差分は計算されず、画素差分絶対値のみが計算されて、上述した輝度成分と同様にして、色差成分に基づく加算率が算出される。
図31は、加算率計算部24における、色差成分についての処理部分である。図31を参照して、色差成分についての加算率計算処理についての説明する。
すなわち、ターゲット画像のデータTGvのうちの青の色差データCbtgは、ローパスフィルタ621を通じて差分絶対値計算部623に供給される。また、動き補償画像のデータMCvのうちの青の色差データCbmcが、ローパスフィルタ622を通じて差分絶対値計算部623に供給される。差分絶対値計算部623は、画素毎に、色差データCbtgと色差データCbmcとの画素差分絶対値ΔPxCbを算出し、算出した画素差分絶対値ΔPxCbを、加算率変換出力部625に供給する。
そして、輝度成分の場合と同様に、画素値の青の色差成分についてのノイズモデルメモリ624が設けられ、このノイズモデルメモリ624には、画素値の青の色差成分値に対するノイズ標準偏差σが、予め算出されて記憶されている。輝度成分の場合と同様に、ノイズモデルメモリ624には、画像の照度Lxに応じた複数個のノイズモデルが記憶されている。
そして、ターゲットブロック毎の照度Lxと、ローパスフィルタ621を通じたターゲット画像データTGvの色差データCbtgが、ノイズモデルメモリ624に供給される。これにより、ノイズモデルメモリ624から、照度Lxおよび色差データCbtgにより定まるノイズ標準偏差σCbが得られ、加算率変換出力部625に供給される。
さらに、この加算率変換出力部625には、動きベクトル算出部21からのヒット率βと、外部からのゲインGAが供給される。
加算率変換出力部625は、上述した加算率変換出力部608や609と同様の構成を有するもので、これよりは、画素差分絶対値ΔPxCbと、ノイズ標準偏差σCbと、ヒット率βと、ゲインGAとの組み合わせにより定まる加算率αCbが得られる。
同様にして、ターゲット画像のデータTGvのうちの赤の色差データCrtgは、ローパスフィルタ631を通じて差分絶対値計算部633に供給される。また、動き補償画像のデータMCvのうちの赤の色差データCrmcが、ローパスフィルタ632を通じて差分絶対値計算部633に供給される。差分絶対値計算部633は、画素毎に、色差データCrtgと色差データCrmcとの画素差分絶対値ΔPxCrを算出し、算出した画素差分絶対値ΔPxCrを、加算率変換出力部635に供給する。
そして、輝度成分の場合と同様に、画素値の赤の色差成分についてのノイズモデルメモリ634が設けられ、このノイズモデルメモリ634には、画素値の赤の色差成分値に対するノイズ標準偏差σが、予め算出されて記憶されている。輝度成分の場合と同様に、ノイズモデルメモリ634には、画像の照度Lxに応じた複数個のノイズモデルが記憶されている。
そして、ターゲットブロック毎の照度Lxと、ローパスフィルタ631を通じたターゲット画像データTGvの色差データCrtgが、ノイズモデルメモリ634に供給される。これにより、ノイズモデルメモリ634から、照度Lxおよび色差データCrtgにより定まるノイズ標準偏差σCrが得られ、加算率変換出力部635に供給される。
さらに、この加算率変換出力部635には、動きベクトル算出部21からのヒット率βと、外部からのゲインGAが供給される。
加算率変換出力部635は、上述した加算率変換出力部608や609と同様の構成を有するもので、これよりは、画素差分絶対値ΔPxCrと、ノイズ標準偏差σCrと、ヒット率βと、ゲインGAとの組み合わせにより定まる加算率αCrが得られる。
また、この実施形態では、ターゲット画像の画素分散値に基づいても、加算率を求めるようにする。分散値は、注目画素(自画素)と、その周囲近傍の例えば8画素とについて求める。この分散値は、輝度成分および色差成分のそれぞれについて求める。そして、求めた分散値のすべてから、加算率を算出する。
すなわち、図30に示すように、ターゲットブロックの画像データTGvの輝度データYtgは、ローパスフィルタ601を通じて空間分散フィルタ610に供給される。そして、この空間分散フィルタ610から、注目画素(自画素)と、その周囲近傍の例えば8画素との合計9個の画素についての分散値VaYが得られる。
また、図31に示すように、ターゲットブロックの画像データTGvの青の色差データCbtgは、ローパスフィルタ621を通じて空間分散フィルタ626に供給される。そして、この空間分散フィルタ626から、注目画素(自画素)と、その周囲近傍の例えば8画素との合計9個の画素についての分散値VaCbが得られる。
さらに、ターゲットブロックの画像データTGvの赤の色差データCrtgは、ローパスフィルタ631を通じて空間分散フィルタ636に供給される。そして、この空間分散フィルタ636から、注目画素(自画素)と、その周囲近傍の例えば8画素との合計9個の画素についての分散値VaCrが得られる。
そして、分散値VaY、VaCbおよびVaCrは、図30に示すように、加算部611で加算された後、加算率変換出力部612に供給される。さらに、加算率変換出力部612には、動きベクトル算出部15からのヒット率βと、外部からのゲインGAが供給される。
この加算率変換出力部612で求める加算率αCは、ターゲットブロックの画像が、テクスチャー成分が少なく、輝度レベル変化がなだらかな場合(グラデーションの場合)に、その加算率を抑えることを目的としている。この実施形態のようにブロック分割した画像処理においては、人間の視覚効果により、ブロック境界が非常に目立ち易くなり、特に、輝度レベル変化がなだらかな場合には殊更であることを考慮している。
上記の目的を実現させるために、基本的には、ブロック内の分散値が低いほど加算率を低くすれば良い。この実施形態の加算率変換出力部612では、図37(A)に示すように、分散値を横軸に取ると共に、分散値を所定の段階幅毎に幾つかの段階に分け、出力加算率を各段階の分散値に応じて決定するようにする。
図37(A)の例では、分散値を段階幅8毎に、5段階に分け、分散値0−7に対する加算率を0.0、分散値8−15に対する加算率を0.25、分散値16−23に対する加算率を0.5、分散値24−31に対する加算率を0.75、分散値32以上に対する加算率を1.0とする。
ところで、画像を重ね合わせる場合に、上述のようなブロック毎の境界が目立つのは、重ね合わせる画像に差異があるからである。換言すれば、背景静止画像部分については、重ね合わせる画像に差異はないので、分散値に応じた加算率の抑制をする必要はない。
そこで、この実施形態では、加算率変換出力部612では、ヒット率βに応じて、分散値の段階幅を制御し、ヒット率βが大きいほど、分散値の段階幅を小さくするようにする。これにより、背景静止画像部分については、分散値に応じた加算率の低減を抑制し、できるだけ、高い加算率で加算ができるようにしている。
すなわち、図37の例では、ヒット率βが、例えばβ=0というように低い値のときには、分散値の段階幅は、図37(A)に示すように、「8」とする。そして、ヒット率βが、例えばβ=0.5というような値のときには、分散値の段階幅は、図37(B)に示すように、「4」とする。
さらに、ヒット率βが、背景静止画部分であることを示すβ=1であるときには、分散値の段階幅は、図37(C)に示すように、「0」とする。つまり、このときには、分散値による加算率の低減は行なわない。
上述したように、加算率変換出力部612にも、ゲインGAが供給されており、このゲインGAによる出力加算率の制御が行なえるようにしている。この例の場合、ゲインGAにより、ヒット率βとの組み合わせにより、前述した分散値の段階幅を変更制御するようにする。
図38に、加算率変換出力部612における、ゲインGAと、ヒット率βと、段階幅との関係を示す。この図38の例においても、ゲインGAは、ユーザにより、あるいは、撮影条件などにより、GA=0、GA=1、GA=2、GA=3の4段階に、変更設定可能とされる。そして、ヒット率βも、β=0、β=0.25、β=0.5、β=1.0の4段階に設定されるようにされる。
なお、図38の例においては、段階幅については、ビットシフト演算により実現可能なように構成している。
なお、図37に示したように、この実施形態では、分散値を用いた加算率の算出に際しては、分散値について、段階幅を用いた複数段階を設定する構成としたが、複数段階とするのではなく、当該複数段階の間を線形補間するようにする構成としても良い。また、線形補間ではなく、2次曲線補間や3次曲線補間をするようにしても良い。
以上のようにして、各加算率変換出力部608、609、612、625および635では、輝度差分値や色差差分値、輝度平均差分値、分散値などに応じると共に、ヒット率βに応じた値として加算率αYA、αYB、αC、αCb、αCrが算出される。
そして、この実施形態では、これらの加算率αYA、αYB、αC、αCb、αCrが合成されて、加算率計算部21の出力加算率αが得られる。すなわち、図30に示すように、加算率変換出力部608および609からの加算率αYAおよびαYBは、乗算器613で乗算され、その乗算結果が乗算器614に供給される。この乗算器614には、加算率変換出力部625からの加算率αCbが供給されて、乗算器613の乗算結果と乗算される。
そして、この乗算器614の乗算結果は、乗算器615に供給される。この乗算器615には、加算率変換出力部635からの加算率αCrが供給されて、乗算器614の乗算結果と乗算される。また、この乗算器615の乗算結果は、乗算器616に供給される。この乗算器616には、加算率変換出力部612からの加算率αCが供給されて、乗算器615の乗算結果と乗算される。
以上により、乗算器616からは、算出された全ての加算率αYA、αYB、αC、αCb、αCrが乗算された乗算結果が得られ、これが加算率計算部24の出力加算率αとして出力される。
こうして、加算率計算部24からは、画素単位で、ヒット率βに応じた値として加算率αが算出され、加算部23に供給される。
加算部23では、この加算率計算部24からの画素毎の加算率αに応じて、ターゲットブロックの画像データTGvと、動き補償ブロックの画像データMCvとが画素単位で加算される。そして、加算部23からの加算画像データは、画像メモリ部4、静止画コーデック部16を介して、記録再生装置部5に記録される。
[実施形態の効果]
上述した実施形態によれば、ターゲットブロック毎に背景一致度合いの指標値であるヒット率βを用いて、静止画像部分では、加算率αを大きくすることができるので、NR画像として、ノイズ低減効果が大きい画像が得られるという顕著な効果を奏する。
また、動被写体部分では、加算率αが小さくされて加算されないようにされるので、動き部分が2重露光のような状態となってしまうことが軽減される。
ところで、この実施形態では、加算する複数枚の画像フレームの1枚目については、面内NRのノイズ低減強さは強くなるように設定されているので、当該1枚目の画像フレームにおいては、信号成分のディテール部分が消失してしまうおそれがある。
しかし、この実施形態では、面内NR処理部14においては、2枚目以降の画像フレームの面内NRのノイズ低減強さは弱く設定されているので、当該2枚目以降の画像フレームにおける信号成分の消失は少ない。
そして、加算NR処理部20において、この信号成分の消失が少ない2枚目以降の画像フレームが、前記1枚目の画像フレームに対して加算されることにより、信号成分が復元される。
特に、この実施形態では、静止画像部分は、大きな加算率αで加算されることにより、信号成分の復元により、良好な画像の状態となる。また、画像加算による時間方向のノイズ低減の効果も良好に得られる。
一方、動被写体部分は、加算率が小さいことにより、信号成分の復元および時間方向のノイズ低減は少ないが、動き部分であるので、信号成分の劣化は目立たないという特徴がある。そして、1枚目の画像フレームに対する面内NR処理部14でのノイズ低減効果が大きいので、ノイズが少なくなる。すなわち、2重露光のような画像の軽減効果を得ながら、ノイズの少ない動被写体部分の画像データが得られると言う効果がある。
この実施形態の効果について、更に説明する。
上述したように、複数枚加算NR処理は、基準画像(ターゲット画像)と参照画像の2枚の画像の位置合わせを行い、基準画像と参照画像を位置合わせした画像との差分値を相関値として評価を行う。
図33〜図35に示したように、前記評価値が、1σであれば100%加算平均し、1σ〜3σの間は位置合わせ画像の加算率を0〜99%に変化させ加算平均を行う。
この複数枚加算NR処理では、面内NR処理と異なり、時間軸のずれた同じ画素位置の画素を平均する。したがって、静止領域であれば、基準画像と位置合わせ画像(参照画像)のエッジ部は同じ位相に来るため、画素平均を行ってもエッジ部がなまることはない。つまり、信号成分の劣化は少ない。
また、動被写体領域の場合であれば、前記評価値の相関値が3σに入らないため、加算平均化処理は行われず、エッジ部がなまったり、透けたりすることもない。これが、実施形態の複数枚画像加算NR処理の特徴である。
従来のように、面内NR処理において、閾値θthを一律3σにして複数枚画像加算を行った場合、ノイズ成分は3σ+δ(δは複数枚加算NR処理におけるノイズリダクション効果)のノイズリダクション効果を得ることができる。
しかし、加算する複数枚の入力画像において、すべての信号のエッジ成分が同様になまっているため、復元することができない。さらに、図45で示したように、加算NR処理部20において、画像同士の位置合わせをピクセル単位で合わせることができなかった場合、さらに信号のエッジ成分がなまってしまうことがある。
一方、面内NR処理の閾値θthを一律1σにした場合、信号のエッジ成分は保存できるが、ノイズ成分は1σ+δのノイズリダクション効果しか得ることができない。
これに対して、上述の実施形態では、その特徴から、1枚目の面内NRでなまってしまった信号成分も、加算する複数枚の画像フレームの2枚目以降の信号成分と加算平均を行うことにより、復元することが可能となる。
また、1枚目の面内NR処理における閾値θthを3σに設定し、その他の画像の面内NR処理における閾値θthを1σにすることで、ノイズ成分については、3σ+δのノイズリダクション効果を得ることができる。
つまり、静止領域では信号成分のエッジ成分は残しつつ、高いノイズリダクション効果が得られ、動被写体領域においても、通常の1枚キャプチャーと同等となる3σのノイズリダクション効果のある画像が得られる。
[他の実施形態および変形例]
静止画について、加算NR処理を行う場合には、ターゲット画像と参照画像とを、どのように選択設定するか、また、画像の重ね合わせ順序をどのようにするか、などにより、種々の例がある。
複数枚の画像の重ね合わせを行う場合、動き補償をする基準となる画像が必要になる。上述した実施形態では、シャッターを切った瞬間の画像が撮影者の意図した画像であるという考えから、1枚目の撮影画像を基準画像にしている。つまり、撮影者がシャッターを切り、1枚目に撮影した写真に対して、時間的に後で撮影した画像を使って、重ね合わせを行っている。
そして、上述の加算方法は、ターゲット画像と参照画像を重ね合わせた結果のNR画像を、次のターゲット画像としており、2回目以降の画像重ね合わせにおいて、ターゲット画像は常にNR処理を施した画像になっている。この加算方式をターゲット加算方式と呼ぶ。
このターゲット加算方式の画像重ね合わせのイメージ図を、高速連写で4枚の画像を撮影したときを例に、図39に示す。
撮影画像を、時間的にシャッターの押下時点から近い順に、Org0、Org1、Org2、Org3とする。図39に示すように、始めに、撮影画像Org0をターゲット画像、撮影画像Org1を参照画像とし、動き補償画像MC1を作る。そして、撮影画像Org0と動き補償画像MC1を重ね合わせて、加算NR画像NR1を作る。
次に、加算NR画像NR1をターゲット画像、撮影画像Org2を参照画像とし、動き補償画像MC2を作る。そして、加算NR画像NR1と動き補償画像MC2を重ね合わせて加算NR画像NR2を作る。
次に、加算NR画像NR2をターゲット画像、撮影画像Org3を参照画像とし、動き補償画像MC3を作る。そして、加算NR画像NR2と動き補償画像MC3を重ね合わせて、4枚の画像が最終的に1枚に合成された加算NR画像NR3を作る。
上述したターゲット画像が常に加算NR画像となるターゲット加算方式の他に、参照画像を常にNR画像にする参照加算方式があり、この参照加算方式にも、この発明は、適用することが可能である。
図40に、図39の場合と同様に、高速連写で4枚の画像を撮影したときを例に、参照加算方式のイメージ図を示す。
始めに、撮像画像Org2をターゲット画像、撮像画像Org3を参照画像とし、動き補償画像MC3を作る。そして、撮像画像Org2と動き補償画像MC3を重ね合わせて、加算NR画像NR3を作る。
次に、撮像画像Org1をターゲット画像、加算NR画像NR3を参照画像とし、動き補償画像MC2を作る。撮像画像Org1と加算NR画像NR3を重ね合わせて加算NR画像NR2を作る。
次に、撮像画像Org0をターゲット画像、加算NR画像NR2を参照画像とし、動き補償画像MC1を作る。そして、撮像画像Org0と動き補償画像MC1を重ね合わせて加算NR画像NR1を作る。この加算NR画像NR1が、最終的に1枚に合成されたNR画像になる。
この参照加算方式の場合にも、1枚目の撮像画像Org0についての面内NRのノイズ手減強さを強くし、その他の撮像画像Org1,Org2,Org3についての面内NRのノイズ低減強さを弱くするようにすると良い。
なお、上述の例のように、加算NR処理する複数枚の画像フレームのうちの、1枚目の撮像画像フレームについての面内NRのノイズ低減強さを強くしたときには、最も、好ましい効果が得られる。
しかし、この発明においては、面内NR処理のノイズ低減の強さを可変とし、強い面内NRを施して信号成分が消失した画像フレームに対して、弱い面内NRにより信号成分が残留している画像フレームを加算することにより、消失した信号成分の復元ができる。したがって、加算する複数枚の画像フレームについての面内NRのノイズ低減強さの制御は、上述の例に限られるものではない。
すなわち、面内NR処理のノイズ低減の強さを強くする画像フレームは、1枚目ではなく、2枚目、3枚目、・・・など、任意枚数目であっても良い。また、ノイズ低減の強さを強くする画像フレームは、1枚目のみではなく、2枚目も同様にするなど、複数枚の画像フレームとしても良い。
また、面内NR処理のノイズ低減の強さは、上述の例のように2段階ではなく、最大の強い、中間の強さ、最小の強さなど、3段階以上であっても良い。その場合に、何枚目をどのノイズ低減の強さにするかも、上述のように任意とすることができる。なお、ノイズ低減の強さが弱い設定状態には、面内NR処理を施さない場合を含むことができる。
また、上述の実施形態は、静止画撮像時の場合であるが、この発明は、動画撮像時にも適用することもできる。例えば、動画撮影開始時には、面内NR処理のノイズ低減の強さを強くし、その他は面内NR処理のノイズ低減の強さを弱くする。また、一旦、記録した動画画像データの場合であれば、シーンチェンジ位置を検出し、当該シーンチェンジ位置では、面内NR処理のノイズ低減の強さを強くし、その他は面内NR処理のノイズ低減の強さを弱くするように設定しても良い。
なお、上述の実施形態では、加算NR処理は、YCデータについて行うようにしたが、面内NR処理は、RAW信号について施されるので、加算NR処理をRAW画像信号に対して行う場合にも、この発明は適用可能である。
なお、上述の実施形態は、画像処理装置が撮像装置の場合であるが、この発明が適用される画像処理装置は、撮像装置に限らないことは言うまでもない。