以下、この発明による画像処理装置および画像処理方法の実施形態を、静止画像の撮像装置に適用した場合について、図を参照しながら説明する。
この実施形態の撮像装置は、撮像素子(イメージャ)によって撮像された複数枚の静止画像を動き補償により位置合わせしながら重ね合わせて時間方向に加算して時間方向のノイズ低減をする加算NR処理を施すようにする。そして、加算NR処理して得た1枚の撮像画像に対してレンズ歪みの補正を施して、レンズ歪みを除去あるいは軽減した静止画像を得、その静止画像を記録媒体に記録するようにするものである。
すなわち、この実施形態では、処理出力画像生成手段は、加算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に供給され、欠陥補正やγ補正等の前処理が施され、現像処理部14に供給される。
現像処理部14は、これに入力されたRAW信号であるアナログ撮像信号に対して、デモザイク処理、ガンマ補正処理、ホワイトバランス調整処理、画質補正もしくは画質調整処理などを行う。そして、現像処理部14からの処理後のRAW信号は、データ変換部15に供給する。
データ変換部15は、その入力信号である赤(R)、緑(G)、青(B)のRAW信号から、輝度信号成分Yと、色差信号成分Cb/Crとにより構成されるデジタル撮像信号(YCデータ;YUV画像)に変換する。
従来の場合には、このデータ変換部15の出力側にレンズ歪み補正部が設けられて、撮像画像データについて、1フレーム毎に、レンズ歪み補正がなされる。しかし、この実施形態では、レンズ歪み補正部は、この位置には設けられず、加算NR処理された後の位置に設けられる。
この実施形態では、データ変換部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に記憶された最終的な重ね合わせ結果の画像フレームは、レンズ歪み補正部16に供給されて、レンズ歪みの補正処理がなされた後、記録媒体への記録画像フレームとされる。
すなわち、画像メモリ部4に格納された重ね合わせ結果のNR画像である加算画像の画像データMIXvは、システムバス2を通じてレンズ歪み補正部16に供給される。このレンズ歪み補正部16では、画像データMIXvに残留しているレンズ歪みを、後述するように、この実施形態では、ソフトウエア処理として補正手段により補正する。
そして、レンズ歪み補正部16からのレンズ歪みを補正した静止画の画像データは静止画コーデック部17に供給されてコーデック変換される。この実施形態では、静止画コーデック部17では、JPEG(Joint Photographic Experts Group)方式の静止画についての画像圧縮符号化処理が行われる。
静止画コーデック部17からの出力データは、記録再生装置部5の例えばDVD(Digital Versatile Disc)やハードディスクなどの記録媒体に記録される。
また、この静止画撮影モード時、シャッターボタンが押下操作される前においては、現像処理部5からの画像データは、画像メモリ部4およびレンズ歪み補正部16を通じて、解像度変換部18に供給される。そして、画像データは、この解像度変換部18にて、所定の解像度に変換された後、NTSC(National Television System Committee)エンコーダ19に供給される。このNTSCエンコーダ19では、画像データは、NTSC方式の標準カラー映像信号に変換され、例えばLCD(Liquid Crystal Display;液晶ディスプレイ)からなるモニターディスプレイ6に供給される。モニターディスプレイ6の表示画面には、静止画撮影モード時のモニター画像がモニター表示される。
記録再生装置部5の記録媒体に記録された静止画の画像データは、ユーザ操作入力部3を通じた再生開始操作に応じて読み出され、静止画コーデック部17に供給されて、再生デコードされる。そして、再生デコードされた静止画の画像データは、画像メモリ部4のバッファメモリ(図示は省略)を通じ、解像度変換部18を通じてNTSCエンコーダ19に供給される。NTSCエンコーダ19でNTSC方式の標準カラー映像信号に変換された画像データは、モニターディスプレイ6に供給され、再生画像がその表示画面に表示される。
なお、図1では、図示を省略したが、NTSCエンコーダ19からの出力映像信号は、映像出力端子を通じて外部に導出することが可能とされている。
なお、この実施形態では、静止画コーデック部17により画像データを圧縮して記録するようにしたが、静止画コーデック部17を省略して、画像データを圧縮せずに記録するようにしても良い。
[加算NR処理部20の構成および処理動作]
この実施形態の撮像装置は、撮像素子(イメージャ)11によって撮像され、画像メモリ部4に格納された複数枚の静止画像を、位置合わせしながら重ね合わせて、画像の時間方向のノイズ低減を行うようにする。
撮像装置を手で保持して撮影する環境は、手ぶれが生じ易い環境である。このような撮像装置の手持ち撮影時において、静止画を連写撮影した場合に、この実施形態では、例えば1枚目をターゲットフレーム、2枚目以降を参照フレームとする。ここで参照フレームは、処理対象となるフレーム、つまり注目フレームであり、一方、ターゲットフレームは、当該参照フレームの動きの元となる元フレームである。この例では、ターゲットフレームに対して参照フレームを動き補償しながら加算するようにする。
参照フレーム全体に、平行移動、回転、拡大縮小を伴う変形処理を施すことにより、ターゲットフレームの位置に、参照フレームを位置合わせすることができる場合、この参照フレーム全体に加わっている変形処理がグローバルモーションである。グローバルモーションは、通常は、画像の背景静止画(以下、背景と略す)の動きおよび動き量を示すものとなる。
手ぶれは、参照フレームがターゲットフレームに対して、平行移動、回転、拡大縮小を伴う画像変形をした分だけ、ターゲットフレームに対して、グローバルモーションが生じたことを意味している。
この実施形態では、説明の簡単のため、撮影した静止画の1枚目を基準(ターゲットフレーム)とする。しかし、これは本質ではない。任意のn枚目をターゲットフレームとし、任意のm(n≠m)枚目を参照フレームとして、グローバルモーションを定義し直しても良い。また、動画中の時間的に異なる2枚のフレーム画像間を対象にして、グローバルモーションを定義してもよい。また、撮像画像の1フレームのうちの有効画枠全てを対象とせず、1フレームの画像の一部分のみに関して、グローバルモーションの処理を適用しても良い。
グローバルモーションが求められると、当該求められたグローバルモーションから、画面上の座標位置毎のターゲットフレームと参照フレームとの間の、画面全体に加わっている動きに応じた動きベクトルを算出することができる。当該画面全体に加わっている動きに応じた動きベクトルを、以下、グローバル動きベクトルという。このグローバル動きベクトルは、画面に設定される多数個のターゲットブロックのそれぞれについて求めることができる。また、グローバル動きベクトルは、画素毎に求めることもできる。
そして、グローバルモーションに基づいて、グローバル動きベクトルを正確に求めることができれば、手ぶれを良好に補正することができる。あるいは、グローバル動きベクトルを手ぶれ分を補正しながら、フレーム画像を重ね合わせることができる。
この明細書においては、動きベクトル検出および動き補償(動きベクトルにより、2フレームの画像を位置合わせすること)を用いて複数枚の画像を重ね合わせて、ノイズを低減する処理を加算NR処理と呼ぶ。なお、加算NRによりノイズ低減された画像を加算NR画像と称する。
この実施形態では、1画面を多数個のブロック(後述のターゲットブロック)に分割して、そのブロック単位の動きベクトルを、ブロックマッチング手法により検出する。ブロックマッチング手法によりブロック毎に検出した動きベクトルを、この明細書ではローカル動きベクトルという。
また、この実施形態では、ローカル動きベクトルの信頼性の指標を、ブロックマッチング手法における相関値を用いて、後述するようにして検出する。そして、この実施形態では、検出したローカル動きベクトルのうちの、信頼性の高いもののみから、グローバルモーションを算出し、算出したグローバルモーションからブロック毎のグローバル動きベクトルを検出するようにする。
また、この実施形態では、算出したグローバル動きベクトルと、ローカル動きベクトルLMVとを用いて、ブロック毎の背景画部分か、動被写体部分かの判定をするようにしている。
[ブロックマッチングの概要]
図2〜図7は、ブロックマッチング手法の概要を説明するための図である。ここで説明するブロックマッチング手法においては、例えば、図2(A)に示すように、ターゲットフレーム100に、それぞれ水平方向の複数画素および垂直方向の複数ライン分からなる所定の大きさの矩形領域のブロック(ターゲットブロック)102を想定する。また、参照フレーム101にも、ターゲットブロックと同じ大きさのブロック(参照ブロック)を設定する。
ブロックマッチングにおいては、ターゲットブロック102と相関性の高い参照ブロックを、参照フレーム101の中から検索する。この検索の結果、相関性が最も高いとして参照フレーム101内に検出された参照ブロック103(図2(B)参照)を、動き補償ブロックと呼ぶ。また、ターゲットブロック102と動き補償ブロック103(相関性が最も高い参照ブロック)との間の位置ずれ量を、動きベクトル(図2(B)の符号104参照)と称する。
ターゲットブロック102と動き補償ブロック103との間の位置ずれ(位置ずれ量と位置ずれ方向を含む)に対応する動きベクトル104は、参照フレーム101におけるターゲットブロックの射影イメージブロック109の位置と、動き補償ブロック103の位置との間の位置ずれに相当する。ここで、射影イメージブロック109の位置と、動き補償ブロック103の位置は、例えばブロックの中心位置を用いる。
ターゲットブロック102の射影イメージブロック109は、参照フレーム101において、ターゲットフレーム100の各ターゲットブロック102の位置と同じ位置に想定される。
ブロックマッチング処理の概要を説明する。
先ず、図3において点線で示すように、参照フレーム101において、ターゲットフレーム100のターゲットブロック102の位置と同じ位置にターゲットブロック102の射影イメージブロック109を想定する。そして、このターゲットブロック102の射影イメージブロック109の中心の座標を、動き検出の原点105とする。そして、動きベクトル104が、動き検出の原点105から或る範囲内に存在すると仮定し、この動き検出の原点105を中心した所定の範囲をサーチ範囲106(図3の一点鎖線参照)と設定する。
次に、ターゲットブロック102と同じ大きさのブロック(参照ブロックという)108を参照画面において設定する。そして、この参照ブロック108の位置を、設定されたサーチ範囲106内において、例えば水平方向および垂直方向に、1画素または複数画素単位で移動させるようにする。したがって、サーチ範囲106においては、複数個の参照ブロック108が設定されることになる。
ここで、参照ブロック108を、サーチ範囲106内を移動させるというのは、この例では、動き検出原点105がターゲットブロックの中心位置であるので、参照ブロック108の中心位置を、サーチ範囲106内を移動させることを意味する。したがって、参照ブロック108を構成する画素は、サーチ範囲106よりもはみ出すことがある。
そして、サーチ範囲において、設定される各参照ブロック108に対して、当該各参照ブロック108とターゲットブロック102との位置ずれ量および位置ずれ方向を表すベクトル(参照ベクトルという)107(図3参照)を設定する。そして、それぞれの参照ベクトル107が指し示す位置にある参照ブロック108の画像内容と、ターゲットブロック102の画像内容との相関性を評価する。
参照ベクトル107は、図4に示すように、参照ブロック108の水平方向(X方向)の位置ずれ量Vxとし、垂直方向(Y方向)の位置ずれ量をVyとしたとき、ベクトル(Vx,Vy)と表すことができる。参照ブロック108の位置座標(例えば中心位置座標)とターゲットブロック102の位置座標(例えば中心位置座標)とが同じときには、参照ベクトル107は、ベクトル(0,0)と表す。
例えば、参照ブロック108が、ターゲットブロック102の位置から、X方向に1画素ずれた位置にある場合、参照ベクトル107はベクトル(1,0)となる。また、図5に示すように、参照ブロック108が、ターゲットブロック102の位置から、X方向に3画素、Y方向に2画素ずれた位置にある場合には、参照ベクトル107はベクトル(3,2)となる。
つまり、参照ベクトル107は、図5の例に示すように、対応する各参照ブロック108とターゲットブロック102との間での位置ずれ(位置ずれ量と位置ずれの方向を含むベクトルとなる)を意味する。なお、図5では、ターゲットブロック102および参照ブロック108の位置を、それぞれのブロックの中心位置としている。
参照ブロック108は、サーチ範囲106において移動するものとなるが、その場合に、参照ブロック108の中心位置がサーチ範囲106内を移動する。参照ブロック108は、水平方向および垂直方向の複数画素からなる。したがって、ターゲットブロック102とブロックマッチング処理される対象となる参照ブロック108が移動する最大範囲は、図5に示すように、サーチ範囲106よりも広いマッチング処理範囲110となる。
そして、ターゲットブロック102の画像内容との相関が最も強いとして検出された参照ブロック108の位置を、ターゲットフレーム100のターゲットブロック102の、参照フレーム101における位置(動いた後の位置)として検出する。検出した参照ブロックを、前述した動き補償ブロック103とする。そして、その検出した動き補償ブロック103の位置と、ターゲットブロック102の位置との間の位置ずれ量を、方向成分を含む量としての動きベクトル104として検出するようにする(図2(B)参照)。
ここで、ターゲットブロック102と、サーチ範囲106において移動する参照ブロック108との相関の強さを表す相関値は、基本的にはターゲットブロック102と参照ブロック108との対応する画素値を用いて算出される。その算出方法としては、自乗平均を用いる方法やその他種々の方法が提案されている。
そのうち、動きベクトルを算出する際に一般的に用いられる相関値としては、例えば、ターゲットブロック102内の各画素の輝度値と、参照ブロック106内の対応する各画素の輝度値との差分の絶対値の、ブロック内の全画素についての総和が用いられる(図6参照)。この差分の絶対値の総和を差分絶対値和と呼ぶ。以下、この差分絶対値和を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値を、図7に示すように、それぞれの参照ブロック108の位置に応じた参照ベクトル107のそれぞれに対応させて、メモリに記憶しておく。そして、そのメモリに記憶された全ての参照ブロック108についてのSAD値の中から、最小のSAD値の参照ブロック108を検出することで、動きベクトル104を検出するようにしている。なお、以下、説明の簡単のため、参照ブロック106の位置に応じた参照ベクトル107を参照ブロック108の参照ベクトル107という。
サーチ範囲106において設定された複数個の参照ブロック108の位置に応じた参照ベクトル107のそれぞれに対応させて、それぞれの参照ブロック108についての相関値(この例では、SAD値)を記憶したものを相関値テーブルと呼ぶ。この例では、相関値として差分絶対値和であるSAD値を用いるので、この相関値テーブルを、差分絶対値和テーブル(以下SADテーブルという)と呼ぶことにする。
図7のSADテーブルTBLが、これを示しており、このSADテーブルTBLにおいて、それぞれの参照ブロック108についての相関値(この例ではSAD値)を相関値テーブル要素という。図7の例では、符号111で指し示すSAD値は、参照ベクトルがベクトル(0,0)のときのSAD値である。そして、図7の例では、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つのターゲットブロックに基づいてターゲットフレームについての動き(グローバルモーション)を求めるようにすることは一般的には困難である。
この実施形態では、図8に示すように、ターゲットフレーム100を、例えば64画素×64ラインのような、比較的小さい大きさのターゲットブロック102の複数個に分割する。そして、この複数個のターゲットブロックのそれぞれについての動きベクトル(ローカル動きベクトル)104Bを先ず求める。このとき、この実施形態では、求めたそれぞれのローカル動きベクトルの信頼性を示す指標を、併せて算出するようにする。
そして、ローカル動きベクトルの信頼性の指標から、ターゲットフレームについて求めた複数個のローカル動きベクトルの中から、信頼性の高いローカル動きベクトルのみを抽出する。
次に、抽出した信頼性の高いローカル動きベクトルのみから、グローバルモーションを算出する。そして、算出したグローバルモーションを用いて、各ターゲットブロック単位のグローバル動きベクトルを算出する。
そして、算出したグローバル動きベクトルと、ターゲットブロック毎のローカル動きベクトルとを比較して、その比較結果に基づいて、各ターゲットブロックが背景部分か、動被写体部分かを評価判定するようにする。この実施形態では、算出したグローバル動きベクトルと、ターゲットブロック毎のローカル動きベクトルとを比較して、両者の一致度合いを判定する。そして、その判定結果として、ターゲットブロック毎のローカル動きベクトルとグローバル動きベクトルとの一致度合いを示す指標値を算出する。この指標値を、この明細書ではヒット率と称する。
このような評価判定を行うのは、画像に含まれるノイズの、ブロックマッチングで算出される相関値に与える影響を考慮したものである。
ターゲットブロックについてのグローバル動きベクトルとローカル動きベクトルとが一致したときには、そのターゲットブロックは背景画像部分であると判断できる。したがって、この一致度合いの指標値は、ターゲットブロックの画像が、背景画像部分と一致しているかどうかの度合い(背景一致度合い)を示すものとなる。
ターゲットブロックが背景画像部分であれば、静止画像部分であるので、ターゲットブロックの画像に対して、動き補償画像は、100%の割合(1:1の割合)で加算することができ、加算NR効果を最大限にすることができる。
そして、背景一致度合いが低ければ、ターゲットブロックは動被写体部分であると予想されるので、その画像に対する、動き補償画像の加算割合を、背景一致度合いに応じて低くすることで、多重露光のような状態を軽減することができる。
ここで、グローバル動きベクトルとローカル動きベクトルとが一致しない場合には、画像ノイズを考慮しなければ、そのターゲットブロックは、全て動被写体部分であると判断しても良い。この場合、ローカル動きベクトルに対応する参照ブロックについての相関値が最大(SAD値が最小)となっており、グローバル動きベクトルに対応する参照ブロックについての相関値よりも大きい(SAD値は小さい)。
しかし、一般に撮像画像などの画像中にはノイズが含まれる。この画像ノイズを考慮すると、グローバル動きベクトルとローカル動きベクトルとが一致しない場合であっても、ターゲットブロックが背景部分である場合がある。そして、そのようなターゲットブロックでは、ローカル動きベクトルに対応する参照ブロックについての相関値と、グローバル動きベクトルに対応する参照ブロックについての相関値との差は、前記画像ノイズ分よりも小さいものとなると考えられる。
そこで、この実施形態では、グローバル動きベクトルに対応する参照ブロックについての相関値を、前記画像のノイズ分を反映した値に補正し、その補正後の相関値と、ローカル動きベクトルに対応する参照ブロックについての相関値とを比較する。そして、補正後の相関値の方が大きい(SAD値は小さい)ときには、当該ターゲットブロックは、背景画像部分であると評価するようにする。すなわち、この実施形態では、補正した相関値に基づいて、前記背景一致度合いを評価するようにする。このとき、グローバル動きベクトルは、当該ターゲットブロックについての本来のローカル動きベクトルに一致したと考えられる。
そして、この実施形態では、背景一致度合いの評価の結果、ターゲットブロックが背景画像部分であると判定されたときには、当該ターゲットブロックについては、グローバル動きベクトルを、出力動きベクトルとして出力する。また、背景一致度合いの評価の結果、ターゲットブロックが背景画像部分と一致していないと判定されたときには、当該ターゲットブロックについては、ローカル動きベクトルを、出力動きベクトルとして出力する。この実施形態では、出力動きベクトルは、後段の処理用動きベクトル、この実施形態では、NR処理用動きベクトルである。
なお、グローバル動きベクトルとローカル動きベクトルとが全く一致したときには、グローバル動きベクトルとローカル動きベクトルのいずれを出力動きベクトルとしてもよいことは言うまでもない。
そして、この実施形態では、上述のようにして得たターゲットブロック単位の出力動きベクトルを用いて、ターゲットフレームに対して、参照フレームをブロック単位で位置合わせを行い、動き補償画像(動き補償フレーム)を生成する。そして、ターゲットフレームと、動き補償フレームとを重ね合わせて加算NR画像を生成するようにする。
そして、この実施の形態の撮像装置において、静止画撮影においては、図9に示すように、高速で複数枚の静止画像の撮影を行い、1枚目の静止画撮影画像をターゲットフレーム100とする。そして、2枚目以降、所定枚数の静止画撮影画像を参照フレーム101として、重ね合わせを行い、その重ね合わせたものを静止画撮影画像として記録するようにする。
すなわち、撮影者が撮像装置のシャッターボタンを押下操作すると、高速で前記所定枚数の静止画像が撮影される。そして、その1枚目に撮影した静止画像(フレーム)に対して、時間的に後で撮影された複数枚の静止画像(フレーム)が、重ね合わされて、記録されることになる。
なお、この実施形態では対象としないが、動画撮影時は、図10のように、撮像素子から出力されている現フレームの画像をターゲットフレーム100の画像とし、その前フレームの過去の画像を参照フレーム101の画像とする。つまり、動画撮影時には、現フレームの画像のノイズ低減を行うために、現フレームの前フレームの画像を現フレームに重ね合わせるということになる。
<動きベクトルの信頼性評価方法>
この実施形態では、上記の実情に鑑み、高ノイズ環境の画像においても有効に、動きベクトルの信頼性を評価できる信頼性指標値を得るようにしている。
この実施形態では、ターゲットブロックと参照ブロックとの間の相関値の第1極大値と、第2極大値との差または比を、動きベクトルの信頼性の指標値とする。この実施形態では、ターゲットブロックと参照ブロックとの間の相関値は、SAD値として検出するので、相関値の第1極大値および第2極大値は、SAD値の第1極小値および第2極小値となる。
図11は、1つのターゲットブロックについてのSADテーブルにおける各SAD値を、模式的に示した図である。この図11では、サーチ範囲を、画像の水平方向(x方向)と垂直方向(y方向)との2次元で表わし、高さ方向(x方向およびy方向に直交する方向)にSAD値を取って、SADテーブルを3次曲面で表わしている。
通常のブロックマッチング処理の場合、動きベクトルを検出するためにはSADテーブルにおけるSAD値の最小値のみが検出対象とされる。このSAD値の最小値は、SADテーブルにおけるSAD値の第1極小値であり、図11においては、点501で示す位置となっている。図11では、動き原点(x=0、y=0)から、この点501で示すSAD値の最小値位置との間のベクトルとして、動きベクトルMVが検出される。
ノイズが存在しない理想的な状態を考えれば、サーチ範囲内の複数の参照ブロックとターゲットブロックとの相関値を求めたとき、3次曲面で表わされるSADテーブルは、一様に下に凸となり、SAD値の極小値は、1つのみ存在する状態となる。しかし、実際の撮影状況においては、光量変化や、動き物体の動きなどの影響のほか、種々のノイズのため、3次曲面で表わされるSADテーブルは、一様に下に凸となることは殆どなく、複数個のSAD値の極小値が存在するのが一般的である。
そこで、この実施形態では、SAD値の最小値に等しい第1極小値を呈する参照ブロックの位置に基づいて動きベクトルMVを検出するが、このSAD値の第1極小値を除くSAD値のうちの極小値、すなわち、SAD値の第2極小値を、信頼性の指標を生成するために検出する。図11においては、点501で示す位置が第1極小値を示し、点502で示す位置が第2極小値を示している。
ノイズ等の影響が少なければ、SAD値の第1極小値と、SAD値の第2極小値との差は大きく、SAD値の第1極小値、すなわち、SAD値の最小値から検出される動きベクトルMVの信頼性は高くなる。一方、ノイズ等が多い環境においては、SAD値の第1極小値と、SAD値の第2極小値との差が小さく、いずれが動きベクトルMVに正しく対応しているか分からない状況になるので、信頼性が低いことになる。
以上のことから、この実施形態では、SAD値の第1極小値(SAD値の最小値)と、SAD値の第2極小値との差を、検出した動きベクトルの信頼性の指標とする。図11のサーチ範囲を1次元軸上で表わし直したSADテーブルを、図12に示す。この実施形態では、この図12において、第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)を用いて構成することもできる。さらには、動きベクトル算出部21および動き補償画生成部22は、CPU1によりソフトウエア処理とすることもできる。
同様に、加算部23も、ハードウエアにより構成することできるし、また、DSPを用いて構成することもできる。さらには、加算部23も、CPU1によりソフトウエア処理とすることもできる。また、静止画コーデック部17も、同様である。
[動きベクトル算出部21の構成例]
動きベクトル算出部21のハードウエア構成例を図13に示す。この例では、動きベクトル算出部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は、動き補償画生成部22に供給される。
動き補償画生成部22では、動きベクトル算出部21を通じて送られてくる参照フレームの画像データREFvに対して、NR処理用動きベクトルMVnrに対応する変形処理が施されて、動き補償画像のデータMCvが生成される。そして、生成された動き補償画像のデータMCvが加算部17に供給される。
また、背景/動被写体判定部210は、求めたヒット率βは、加算率計算部21に供給する。加算率計算部21は、ヒット率βに基づいて、ターゲット画像に対する動き補償画像の加算率αを算出する。
この場合、加算率αは、ブロック単位あるいは画素単位で計算をすることができる。画素単位で計算をする場合であっても、ヒット率βは、ブロック単位であるので、当該ヒット率βが加算率の計算に関与するのは、ブロック単位であるのは言うまでもない。
加算率αをブロック単位に計算する場合には、ヒット率βのみに応じた加算率αを計算することもできる。勿論、ヒット率β以外の他の加算率計算要素を加味して、加算率αを計算することもできる。この実施形態では、ヒット率βのみではなく、後述もするように、ターゲット画像と動き補償画像との画素単位の違い、ターゲット画像のノイズなどの要因を加味して加算率αを計算する。
加算率計算部21で求められた加算率αは、加算部23に供給される。加算部23は、これに送られてくるターゲット画像の画像データTGvに対して、動き補償画像の画像データMCvを、加算率αで加算する。
この実施形態においては、加算部23では、ターゲットブロックの背景一致度合い(ヒット率β)に応じた加算率で、ターゲット画像と動き補償画像とが重ね合わされる。つまり、静止画部分では、ターゲット画像に対する動き補償画像の加算率が高くなり、動被写体部分では、ターゲット画像に対する動き補償画像の加算率が低くなる。
こうして、この実施形態では、背景部分と動被写体部分とでは、それぞれに適切な加算率で画像の重ね合わせをすることができる。したがって、画像重ね合わせにより得られたNR画像は、良好なものとなる。
しかも、この実施形態におけるグローバルモーションおよびグローバル動きベクトルGMVは、信頼性の高いローカル動きベクトルLMVから生成されたものであるので、確度の高い動きベクトルであり、その点でも良好な加算NR画像を得ることができる。
[NR画像生成のための全体の処理の流れ]
図14は、画像メモリ4に取り込んだ撮像画像について、NR画像を生成する処理の流れを示すフローチャートである。
先ず、動きベクトル算出部21では、ローカル動きベクトル算出部214でブロックマッチングによるローカル動きベクトルLMVの検出を行なう(ステップS101)。次に、動きベクトル信頼性指標値算出部216は、検出されたローカル動きベクトルLMVについての信頼性の指標値Ftを、ローカル動きベクトル算出部214で算出されたSAD値の第1極小値MinSADと、第2極小値Btm2SADとを用いて算出する(ステップS102)。
次に、グローバルモーション算出部217は、算出された信頼性の指標値Ftに基づいて、信頼性の高いローカル動きベクトルLMVを抽出する。そして、グローバルモーション算出部217は、当該抽出した信頼性の高いローカル動きベクトルLMVのみを用いてグローバルモーションGMを算出する(ステップS103)。
次に、ステップS103で算出されたグローバルモーションGMを用いて、ターゲットブロック毎のグローバル動きベクトルGMVを算出する(ステップS104)。
また、ローカル動きベクトル算出部214で、再ブロックマッチング処理を行なって、ローカル動きベクトルLMVを再検出する(ステップS105)。そして、ローカル動きベクトルLMVが検出された参照ブロック位置(参照ベクトル)におけるSAD値(MinSAD)を保持すると共に、ステップS104で算出されたグローバル動きベクトルGMVに対応する参照ブロックについてのSAD値も保持しておく。なお、このときには、ローカル動きベクトルLMVの信頼性の指標値Ftの算出の必要はない。
次に、背景/動被写体判定部210は、ステップS105で算出されたローカル動きベクトルLMVと、ステップS104で求められたグローバル動きベクトルGMVとを比較して、各ターゲットブロックについての背景一致度合いを評価し、ヒット率βを求める。そして、さらに、各ターゲットブロックについてのNR処理用動きベクトルMVnrを定め、動き補償画生成部22に出力する(ステップS106)。
このステップS106でのローカル動きベクトルLMVとグローバル動きベクトルGMVとの比較においては、ローカル動きベクトルLMVおよびグローバル動きベクトルGMVのそれぞれに対応する参照ブロックについてのSAD値を比較する。さらに、グローバル動きベクトルGMVに対応する参照ブロックのついてのSAD値については、上述したように、画像のノイズに応じた補正を加えるようにする。
次に、動き補償画生成部22では、ステップS106で定められたNR処理用動きベクトルMVnrを用いて、参照ブロック毎に動き補償画を生成し、加算部23に出力する(ステップS107)。
次に、加算率計算部21は、ステップS106で求められたヒット率βを用いて、上述したようにして、この例では、画素毎の加算率αを算出し、加算部23に供給する(ステップS108)。
次に、加算部23は、ターゲット画像に、ステップS107で生成された動き補償画を、ステップS108で算出された加算率αで画素毎に重ね合わせてNR画像を生成する(ステップS109)。以上で、NR画像の処理は終了となる。
なお、この図14は、あるターゲットフレームの1枚についての処理動作を示したものである。3枚以上の複数枚の画像を重ね合わせる場合には、生成した加算NR画像をターゲットフレームとすると共に、新たに重ね合わせる画像を参照フレームとして、図14の処理を繰り返す。
次に、動きベクトル算出部21の主要な各部の詳細な処理動作について、さらに説明する。
<グローバルモーション算出部217およびグローバル動きベクトル算出部218の処理動作>
<拡張したアフィン変換について>
この実施形態では、多数個のローカル動きベクトルLMVから、グローバルモーションを算出(推定)する。そして、算出したグローバルモーションから、グローバル動きベクトルGMVを算出(グローバルモーションを推定)する。この場合において、グローバルモーションをアフィン変換で表現する方法を用いる。
不特定多数のベクトルから、最も好適なグローバルモーションを導出する手法として、この実施形態では、前述したようにアフィン変換を用いる方法を用いる。この方法は、信頼性の高いブロックの中から、動被写体等のグローバルモーションに適合しにくいブロックのローカル動きベクトルを徐々に排除しながら、最小自乗法を用いて、グローバルモーションのパラメータの収束を図る方法である。
図15に、アフィン変換の一般式を、(式3)として示す。この(式3)において、vは、ターゲットブロックの動きベクトルの水平成分、wはターゲットブロックの動きベクトルの垂直成分を示し、a,b,c,d,e,fは、アフィンパラメータを示している。ここで、アフィン変換では、アフィンパラメータa,b,c,d,e,fは、固定値である。そして、x,yは、ターゲットブロックの中心座標の水平成分、垂直成分を示している。
グローバルモーションの収束演算過程において求められたアフィンパラメータと、各ターゲットブロックの中心の座標から、グローバルモーションに応じた動きベクトル(このベクトルを理想的な動きベクトルと呼ぶ)が得られる。この理想的なベクトルと、観測(ブロックマッチングにより検出)された動きベクトルとの間のエラーの総和εは、図16の(式4)のように表される。
グローバルモーションを導出するという命題は、上記のエラーの総和εを最小化するアフィンパラメータa〜fの推定であり、これは、例えば、最小自乗法によって解くことが可能である。
しかしながら、通常のアフィン変換は、“あおり”に対応できない欠点がある。“あおり”とは、手ブレのピッチ軸(鉛直方向軸)またはヨー軸(鉛直方向に直交する水平方向軸)の回転成分によってもたらされる現象で、正対した矩形平面が、図17に示すように、台形に変形してしまうことから、台形歪みやキーストーンとも呼ばれる。
すなわち、図17(A)の下側に示すように、カメラCAMの光軸Lzが、被写体OBJの矩形平面に直交するように、カメラCAMが被写体OBJに正対しているときには、被写体OBJの矩形平面の撮像画像は、図17(A)の上側に示すように、そのまま矩形平面となる。
これに対して、例えば図17(B)の下側に示すように、カメラCAMの光軸Lzが、被写体OBJに正対せずに、角度θだけピッチ軸回転(鉛直な面内で回転)した場合には、被写体OBJの矩形平面の撮像画像は、図17(B)の上側に示すように、左右方向(画像の水平方向)の長さが、角度θに応じて線形に変化する台形となる。
なお、図示は省略するが、カメラCAMの光軸Lzが、被写体OBJに正対せずに、角度θだけヨー軸回転(水平面内で回転)した場合には、被写体OBJの矩形平面の撮像画像は、上下方向(画像の垂直方向)の長さが、角度θに応じて線形に変化する台形となる。
手ブレによって、上述のように撮像されてしまった画像を、元通り正対した形に戻す処理が、“あおり”補正または台形補正であるが、アフィン変換のパラメータではこれを表現できない。すなわち、例えば、図17(B)に示されるような“あおり”台形画像を、長方形に戻す“あおり”補正を考えた場合、鉛直軸(y軸)に沿って上方を水平縮小し、下方を水平拡大すれば良い。
ところが、上述したアフィン変換のパラメータのうち、水平拡大縮小に関するパラメータはaであり、このパラメータaが一定値のため、アフィン変換ではこの補正に対応できないのである。
この実施形態では、以上の点にかんがみ、画像に“あおり”変形があっても、良好にグローバルモーションを検出することができるようにする手法を用いる。
すなわち、この実施形態では、前述の図15に示した通常のアフィン変換を変形した拡張したアフィン変換(以下、拡張アフィン変換という)を用いる。
図18で実線に示すような“あおり”台形画像を、図18で点線で示す矩形(長方形)に戻す“あおり”補正を考えた場合、図18において、矢印により示すように、鉛直軸(y軸)に沿って、台形画像の上方半分を水平縮小し、下方半分を水平拡大すれば良い。
通常のアフィン変換では、アフィン変換のパラメータa,b,c,d,e,fのうち、水平拡大縮小に関するパラメータはaであり、このパラメータaが一定値のため、通常のアフィン変換では、この“あおり”補正に対応できない。
そこで、図18の下側に示すように、パラメータaをy軸に沿って値が変化するように、q0・y+r0と置き換えれば、水平方向の拡大縮小率が、鉛直軸に応じて線形に変化する変換となる。すなわち、パラメータaを、“あおり”補正のために、y軸の変数yの関数に置き換える。ここでは、図18の“あおり”補正のためには、線形な関数、つまり、パラメータaは、一次関数q0・y+r0とすればよいことになる。
図18は、前述したピッチ軸の回転に伴う“あおり”の補正を考慮したものであるが、ヨー軸の回転に伴う“あおり”の補正や、ピッチ軸およびヨー軸の両者の回転が合成された“あおり”の補正を考慮する必要がある。
そこで、この実施形態では、図18を用いて説明した考え方を拡張する。すなわち、アフィン変換を、任意の軸に沿って、その軸と垂直な方向に拡大縮小する形にするには、パラメータa,b,d,eを、図19の(式5)に示すように、それぞれpn・x+qn・y+rn(n=0,1,2,3)と置き換えるようにする。
ここで、アフィンパラメータa,b,d,eは、画像の変形に関与するパラメータであるのに対して、アフィンパラメータc,fは、画像の左右、上下方向のシフトに関与するパラメータである。よって、アフィンパラメータc,fについては、関数への置き換えはしない。
この(式5)のように表すと、計14個のパラメータとなり、拡張アフィン変換は、煩雑性が高いように見えるが、(式5)を展開して整理すれば、結局12個のパラメータを使って、図20の(式6)の形となる。
この拡張アフィン変換の式形状であれば、複雑な式にはなるものの、最小自乗法によって、複数のローカル動きベクトルに対する解を、一意に導き出すことが可能である。手法はアフィン変換と同じであるため、最終結果のみを、図21〜図25に、それぞれ(式7)〜(式11)として示す。
なお、この実施形態では、図19に示したように、画像の変形に関与するアフィンパラメータa,b,d,eの全てを関数に置き換えるようにしたが、画像の変形が特定の方向のみである場合には、その方向に関するパラメータのみを関数に置き換えるようにすればよい。例えば、図18の上方に示した変形のみを考慮する場合には、図18の下側に示すように、パラメータaのみを、関数に置き換えればよい。
また、上述の例の拡張したアフィン変換では、パラメータを置き換える関数は、線形変位を想定したため、一次関数としたが、曲線的な変位を想定する場合には、2次以上の関数とするようにしてもよい。
<拡張したアフィン変換を用いたグローバルモーションの算出>
不特定多数のベクトルから、最も好適なグローバルモーションを導出する手法として、この実施形態では、図26および図27のフローチャートに示す方法を用いる。この方法は、信頼性の高いブロックの中から、動被写体等の、グローバルモーションに適合しにくいブロックのローカル動きベクトルを徐々に排除しながら、最小自乗法を用いて、グローバルモーションのパラメータの収束を図る方法である。
この図26、図27のフローチャートの処理においては、拡張アフィン変換を導入することにより、ベクトル精度の低い多くのローカル動きベクトルから、動被写体等のエラーベクトルを排除しながら、“あおり”も含めた、最適なグローバルモーションを、現実的な演算コストで導出することが可能となる。
ところで、この実施形態の拡張アフィン変換は、変形パラメータが多く、柔軟であるが故に、グローバルモーションの収束演算において、動被写体やノイズ等の誤った動きベクトルにも対応してしまい、これら誤った動きベクトルを排除できない可能性がある。
そのため、この実施形態では、図26,図27に示すように、収束演算ループの初期においては、通常のアフィン変換を用いて誤った動きベクトル(エラーベクトルという)の排除を行い、その後、拡張アフィン変換を用いた収束演算を行なうようにする。これは、通常のアフィン変換を用いることで、あおり成分のベクトルを排除しない程度に、ベクトルエラーが小さくなってから、拡張アフィン変換を用いて、あおり成分にも対応した高精度の収束を試みる手法を用いるようにするためである。
また、この実施形態では、収束演算の各回で求められたグローバルモーションGMから求められる動きベクトル(グローバル動きベクトル)と、検出された動きベクトル(上述のローカル動きベクトルLMV)との差としてのベクトルエラーの最大値を検出する。
そして、検出したベクトルエラーの最大値が、予め定めた閾値よりも大きい場合には、通常のアフィン変換を継続し、検出したベクトルエラーの最大値が、予め定めた閾値以下になったら、拡張アフィン変換を用いる収束演算を行なうようにする。
図26および図27のフローチャートに沿って説明する。
先ず、動きベクトル算出部21は、保持している複数個のローカル動きベクトルLMVについて、それぞれの動きベクトル信頼性指標値Ftと、予め定めた閾値とを比較する。そして、その比較結果から、動きベクトル信頼性指標値Ftが、予め定めた閾値よりも大きい信頼性の高いローカル動きベクトルLMVのターゲットブロック(以下、説明の簡単のためブロックと記載)のみを選定する(ステップS201)。この処理は、前述の(式7)を用いて説明したように、重み係数Wとして、1と0との2値を用いる場合に相当する。
次に、動きベクトル算出部21は、収束演算の収束ループが最初の1回目であるか否か判別する(ステップS202)。最初の1回目であると判別したときには、動きベクトル算出部21は、選定した複数のブロックのローカル動きベクトルLMVのみを用いると共に、通常のアフィン変換を用いて、グローバルモーションGMを導出(推定)する(ステップS203)。つまり、グローバルモーションGMについてのアフィンパラメータa〜fを算出する。
次に、導出したグローバルモーションGMに基づいて、演算に用いた、選定したブロックのそれぞれの理論上のローカル動きベクトルLMVsを計算する(ステップS206)。
次に、選定した複数のブロックのそれぞれにおいて、ブロックマッチング処理により求めたローカル動きベクトルLMVと、ステップS206で求めた理論上のローカル動きベクトルLMVsとの誤差Enを計算する(ステップS207)。
このブロックマッチングで求めた動きベクトルと理論上の動きベクトルとの誤差計算は、演算の精度を重視するなら、三平方の定理から正しく距離計算を行えば良い。しかし、演算の精度よりも軽さを重要視するなら、水平及び垂直の両者の距離をそれぞれ求め、それらの和を、近似的な距離として用いても良い。
次に、選定した複数のブロックのそれぞれについて求めた誤差Enの全てを用いて、それら全ての誤差の平均値Eaveと、最大値Emaxとを算出する(ステップS208)。そして、平均値Eaveが、それに対して予め定められた閾値θaよりも小さく、且つ、最大値Emaxが、それに対して予め定められた閾値θbよりも小さいか否か判別する(ステップS209)。
ステップS209での判別の結果、条件を満足してはいないと判別したときには、ステップS207で求めた各ブロックの誤差Enの中から、誤差En=Emaxとなるブロックを、グローバルモーションを導出する複数のブロックから排除する。または、誤差En≧θbとなるブロックを検出し、検出したブロックの全てを、グローバルモーションGMを導出する複数のブロックから排除する(図27のステップS211)。
次に、ステップS211でのブロック排除の結果、残存するブロックの数が予め定めた数の閾値θcよりも少ないか否か判別する(ステップS212)。ステップS212で、残存するブロックの数が閾値θcよりも少なくはないと判別したときには、ステップS202に戻り、残存するブロックを選定したブロックとして、ステップS202以降の処理を繰り返す。
残存するブロックの数が閾値θcよりも少ないときには、適切なグローバルモーションGMが得られないので、対象となっている参照フレームの画像は、この実施形態の画像の重ね合わせには使用できない。そこで、ステップS212で、残存するブロックの数が閾値θcよりも少ないと判別したときには、当該参照フレームについてのその後の処理を全て行わないようにスキップする(ステップS213)。
次に、ステップS202で、収束演算の収束ループが最初の1回目ではないと判別したときには、動きベクトル算出部21は、ステップS207で求めた各ブロックの誤差Enの最大値Emaxが、予め定めた閾値θdより大きいか否か判別する(ステップS204)。
ここで、閾値θdは、通常のアフィン変換を用いてグローバルモーションGMの演算を行い、上述のステップS211のようにして、エラーベクトルの排除を行うときに、あおり成分のベクトルを排除しない程度の値に選定される。
ステップS204で、誤差Enの最大値Emaxが、予め定めた閾値θdより大きいと判別したときには、動きベクトル算出部21は、ステップS203に進み、通常のアフィン変換を用いて、グローバルモーションGMを導出するようにする。つまり、拡張アフィン変換のパラメータを算出する。そして、前述したステップS203以降の処理を繰り返す。
また、ステップS204で、誤差Enの最大値Emaxが、予め定めた閾値θd以下になった判別したときには、動きベクトル算出部21は、選定した複数のブロックのローカル動きベクトルLMVのみを用いると共に、拡張アフィン変換を用いて、グローバルモーションを導出する(ステップS205)。そして、ステップS205の後は、上述したステップS206以降の処理を繰り返す。
そして、図26のステップS206で、誤差Enの平均値Eaveが閾値θaよりも小さく、且つ、誤差Enの最大値Emaxが閾値θbよりも小さいと判別したときには、演算は収束したとして、グローバルモーションGMをそのときのもので確定する(ステップS210)。そして、この処理ルーチンを終了する。
なお、ステップS211で、誤差Enが最大エラーEmaxのブロックのみを排除するか、誤差Enが閾値θb以上のブロックをまとめて排除するかは、グローバル動きベクトルGMVを求める際の収束の早さと精度のバランスで決めれば良い。精度を優先するなら前者の方式を採用し、エラーブロックを1つずつ排除して行けば良く、収束の早さを優先するなら後者を選択しても構わない。
なお、上述の例では、ステップS204においては、通常のアフィン変換を用いた演算と、拡張アフィン変換を用いた演算の切り替え判断に、誤差Enの最大値Emaxを用いるようにした。しかし、上記のステップS204での切り替え判断は、誤差Enの最大値Emaxだけでなく、誤差Enの平均値Eaveを考慮しても良い。
すなわち、ステップS204で、誤差Enの平均値Eaveが予め定められた閾値よりも大きいか否か判別し、平均値Eaveが閾値よりも大きいときには、通常アフィン変換を用いた演算を行う。そして、平均値Eaveが閾値以下になったときには、拡張アフィン変換を用いた演算を開始するようにする。
また、ステップS204で、誤差Enの最大値Emaxと、平均値Eaveとの両方が、予め定められた閾値よりも大きいか否か判別する。そして、閾値よりも大きいと判別したときには、通常アフィン変換を用いた演算を行い、閾値よりも小さくなったと判別したときには、拡張アフィン変換を用いた演算を開始するようにしてもよい。
なお、手ブレ補正の範囲が、光学ズーム倍率やセット形状から同定できることと同様に、最大手ブレ量からあおり成分の最大値が得られるため、上記の閾値の同定は、比較的容易である。
グローバル動きベクトル算出部218は、以上のようにして算出したグローバルモーションGMに基づいて、各ターゲットブロック毎のグローバル動きベクトルGMVを算出する。すなわち、算出したグローバルモーションGMについての拡張アフィン変換のパラメータa〜l(図20参照)を用いて、図20の(式6)により、各ターゲットブロック毎の動きベクトル(理論上のローカル動きベクトルLMVsに相当)を求める。図20の(式6)において、x、yは、各ターゲットブロックの中心位置座標が用いられる。この求めた動きベクトルが、各ターゲットブロック毎のグローバル動きベクトルGMVとなる。
そして、動き補償画生成部22には、上述のようにして求められた、各ターゲットブロック毎のグローバル動きベクトルGMVが供給される。そして、動き補償画生成部22では、その各ターゲットブロック毎のグローバル動きベクトルGMVを用いて、ターゲットブロック毎の動き補償画を生成し、生成したブロック毎の動き補償画を加算部23に供給する。
[背景/動被写体判定部210の構成例および処理動作]
背景/動被写体判定部210では、上述したように、グローバル動きベクトル算出部218で算出されたグローバル動きベクトルGMVに対応する参照ブロックについてのSAD値を、ローカル動きベクトル算出部214での再ブロックマッチングの際に取得する。そして、取得したSAD値を、前述したように画像のノイズに応じて補正値により補正するようにする。その補正値による補正の方法としては、この実施形態では、2通りの方法を提供する。
<第1の例;オフセット付加によるSAD値の補正>
図28は、この第1の例の考え方を説明するための図である。図28は、横軸にサーチ範囲を取り、縦軸にSAD値を取ったときの、1個のターゲットブロックについてのSADテーブルの内容(SAD値)を示す図である。横軸の各値は、参照ブロック位置(参照ベクトル)となり、実線がSADテーブルの内容を示すものとなる。これは、図12に示したものと全く同様である。
この図28において、最小SAD値となる参照ブロックの位置(つまり参照ベクトル)501は、図12と同様に、ブロックマッチングによりローカル動きベクトルLMVとして検出される。一方、グローバル動きベクトルGMVとなる参照ブロックの位置が、図28において、位置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 ・・・ (式12)
となる。
ここで、このオフセット値OFSは、あまり大きな値を設定すると、動被写体の動きベクトルまで、最小SAD値として判定されるようになってしまう。そこで、この実施形態では、オフセット値OFSは、ローカル動きベクトルの信頼性の指標値Ftについての閾値th(式2参照)よりも小さい値に設定される。
そして、背景/動被写体判定部210では、その補正後SAD値MinSAD_Gと、ローカル動きベクトルLMVでのSAD値(MinSAD)とを比較する。その比較の結果、MinSAD_G<MinSADであれば、当該ターゲットブロックについてのSAD値の最小値は、グローバル動きベクトルGMVに対応する参照ブロックについてのSAD値の補正値であるMinSAD_Gであると評価する。図28は、MinSAD_G<MinSADである場合を示している。
すなわち、図28のように、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とが不一致の場合が含まれるからである。
図29に、この第1の例の場合の背景/動被写体判定部210の構成例(機能ブロック図)を、その周辺部と共に示す。
図29の例においては、背景/動被写体判定部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の減算演算を行なうようにする。
<背景/動被写体判定処理の流れ>
図29の構成によるローカル動きベクトル算出部214での再ブロックマッチング処理および背景/動被写体判定部210での背景一致度合い評価処理の流れを、図30および図31のフローチャートを参照して更に説明する。この図30および図31の処理は、コントロール部215の制御に基づいて、各部が実行する。なお、この図30および図31の例は、SAD_GMV検出部2101およびオフセット減算部2102は、ローカル動きベクトル算出部214に含まれるように構成されている場合である。
先ず、コントロール部215の制御により、再ブロックマッチングが開始され、ターゲットブロックバッファ部211に最初のターゲットブロックが設定される(ステップS301)。次に、コントロール部215の制御により、参照ブロックバッファ212にバッファリングされているマッチング処理範囲の参照フレームの画像データのうちから、ブロックマッチング処理する参照ブロックが設定される(ステップS302)。
マッチング処理部213は、設定されたターゲットブロックと、設定された参照ブロックとについてブロックマッチング処理を行い、SAD値を計算する。そして、マッチング処理部213は、求めたSAD値を、参照ブロックの位置情報(参照ベクトル)と共に、ローカル動きベクトル算出部214に供給する(ステップS303)。
ローカル動きベクトル算出部214は、参照ベクトルがグローバル動きベクトルGMVと一致しているか否か判別する(ステップS304)。これは、SAD_GMV検出部2101の処理動作に相当する。
ステップS304で、参照ベクトルがグローバル動きベクトルGMVとは一致していないと判別したときには、ローカル動きベクトル算出部214では、最小SAD値MinSADと、その参照ブロック位置(参照ベクトル)との更新処理を行なう(ステップS305)。つまり、それまでに保持されている最小SAD値MinSADと、新たに算出したSAD値とを比較して、小さい方のSAD値を最小SAD値MinSADとして保持すると共に、参照ブロック位置(参照ベクトル)も最小SAD値を呈するものに更新する。
次に、コントロール部215は、サーチ範囲内の全ての参照ブロックついてのターゲットブロックとのブロックマッチングが終了したか否か判別する(ステップS308)。
そして、ステップS308で、サーチ範囲内の全ての参照ブロックついての処理が終了してはいないと判別したときには、コントロール部215は、次の参照ブロックを設定する(ステップS309)。そして、ステップS302に戻り、上述したこのステップS302以降の処理を繰り返す。
また、ステップS304で、参照ベクトルがグローバル動きベクトルGMVと一致したと判別したときには、ローカル動きベクトル算出部214では、そのSAD値SAD_GMVからオフセット値OFSを減算する(ステップS306)。そして、その減算結果を補正後SAD値MinSAD_Gとして、その参照ブロック位置(参照ベクトル=グローバル動きベクトルGMV)とを保持する(ステップS307)。
そして、ステップS308に進み、サーチ範囲内の全ての参照ブロックついての処理が終了したか否か判別する。
そして、ステップS308で、サーチ範囲内の全ての参照ブロックついての処理が終了したと判別したときには、ローカル動きベクトル算出部214は、ローカル動きベクトルLMVと、最小SAD値MinSADを検出し、比較判定部2104に供給する。また、ローカル動きベクトル算出部214は、補正後SAD値MinSAD_Gも、比較判定部2104に供給する(図31のステップS311)。
そして、背景/動被写体判定部210の比較判定部2104は、最小SAD値MinSADが、予め定められている閾値TH1より小さいか否か判別する(ステップS312)。このステップS312の処理は、次のような問題に対処するために設けられている。
すなわち、例えばターゲット画像上の動被写体部分に相当するブロックが、参照画像上では動きにより消失したり、大きな変形を伴ったりした場合に、サーチ範囲内のどの参照ブロックともターゲットブロックについてのマッチングが取れない状況が生じる。
このような場合、SADテーブルのSAD値は、大きな値で、同様の値となって、最小SAD値MinSADと他の値が近い値となってしまう。このような状況では、グローバル動きベクトルGMVに一致する参照ベクトルでのSAD値からオフセット値OFSを減算した補正後SAD値MinSAD_Gは、必ず、最小SAD値MinSADよりも小さくなり、背景部分と誤検出されることになるおそれがある。
そこで、この問題を回避するため、この実施形態では、グローバル動きベクトルGMVに一致する参照ベクトルでのSAD値を補正して、背景一致度合いを判定する処理は、最小SAD値MinSADが、前記閾値TH1より大きい場合には、行わないようにする。
したがって、ステップS312で、最小SAD値MinSADが、前記閾値TH1より大きいと判別したときには、比較判定部2104は、グローバル動きベクトルGMVを用いた背景一致度合いの判定を行わず、ヒット率β=0.25とする(ステップS313)。β=0としないのは、閾値TH1より大きいSAD値を呈するターゲットブロックの中にも、背景と一致しているブロックも存在するかもしれないことを考慮したものである。
そして、比較判定部2104は、再算出されたローカル動きベクトルLMVを、当該ターゲットブロックのNR処理用動きベクトルとして動き補償画生成部22に出力する(ステップS314)。
次に、コントロール部215は、ターゲットフレーム内の全てのターゲットブロックについての処理が終了したか否か判別し(ステップS320)、終了していなければ、次のターゲットブロックを設定する(ステップS321)。そして、ステップS302に戻り、コントロール部215の制御の下に、上述したステップS302以降の処理を繰り返す。
また、ステップS312で、最小SAD値MinSADが、前記閾値TH1より小さいと判別したときには、比較判定部2104は、最小SAD値MinSADと、補正後SAD値MinSAD_Gとを比較する(ステップS315)。そして、比較判定部2104は、MinSAD>MinSAD_Gであるか否か判別し(ステップS316)、そうではないと判別したときには、ターゲットブロックは背景には一致していないとして、ヒット率βは、β=0とする(ステップS317)。
このステップS317の次には、ステップS314に進み、比較判定部2104は、再算出されたローカル動きベクトルLMVを、当該ターゲットブロックのNR処理用動きベクトルとして動き補償画生成部22に出力する。そして、ステップS320に進み、前述したステップS320以降の処理を繰り返す。
また、ステップS316で、MinSAD>MinSAD_Gであると判別したときには、ターゲットブロックは背景に一致している度合いが高いとして、ヒット率βは、β=0.75とする(ステップS318)。そして、比較判定部2104は、グローバル動きベクトルGMVを、当該ターゲットブロックのNR処理用動きベクトルとして動き補償画生成部22に出力する(ステップS319)。
そして、このステップS319の次には、ステップS320に進み、コントロール部215は、ターゲットフレーム内の全てのターゲットブロックについての処理が終了したか否か判別する。このステップS320で、ターゲットフレーム内の全てのターゲットブロックについての処理が終了していないと判別したときには、コントロール部215は、次のターゲットブロックを設定し(ステップS321)、その後、ステップS302に戻る。
また、ステップS320で、ターゲットフレーム内の全てのターゲットブロックについての処理が終了したと判別したときには、コントロール部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 ・・・ (式13)
となる。
<加算率計算部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のハードウエア構成例を図32および図33に示す。この図32および図33の例においては、ターゲット画像のデータTGvおよび動き補償画像のデータMCvは、輝度成分と、色差成分とのそれぞれについて、別個に処理がなされる。
図32は、加算率計算部24における、輝度成分についての処理部分である。図32を参照して、先ず、輝度成分についての加算率計算処理についての説明する。
すなわち、ターゲット画像のデータ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には、画素値の輝度値に対するノイズ標準偏差σが、予め算出されて記憶されている。すなわち、横軸に画素値の輝度値を取り、縦軸にノイズ標準偏差σを取ったとき、ノイズ標準偏差σは、例えば図34に示すようなものとなる。この図34に示すように、明るい画素に対しては、ノイズの標準偏差σは小さく、暗い画素に対しては、ノイズの標準偏差σは大きい。
なお、この図34の特性図は、RAWデータではなく、ガンマ補正が施された後の撮像データについてのものである。
ノイズモデルは、ノイズが画像の明るさにより異なるものであるので、ノイズモデルメモリ607には、画像の照度Lxに応じた複数個のノイズモデルが記憶されている。
そして、前述したようにして、最大輝度値MaxTARおよび最小輝度値MinTARから求められたターゲットブロック毎の照度Lxが、ノイズモデルメモリ607に、照度に応じたノイズモデルを選択用として供給される。これにより、どのノイズモデルを使用するかが、照度Lxにより定められる。
また、ローパスフィルタ601を通じたターゲット画像データTGvの輝度データYtgが、ノイズモデルメモリ607に供給され、照度Lxおよび輝度データYtgにより定まるノイズ標準偏差σYが、ノイズモデルメモリ607から得られる。このノイズ標準偏差σYは、加算率変換出力部608および609に供給される。
さらに、これら加算率変換出力部608および609には、動きベクトル算出部21からのヒット率βと、外部からのゲインGAが供給される。
加算率変換出力部608は、画素差分絶対値ΔPxYと、ノイズ標準偏差σYと、ヒット率βと、ゲインGAとを変換パラメータとする変換関数を用いて、画素差分絶対値ΔPxYに基づく加算率αYAを出力する。
また、加算率変換出力部609は、平均差分絶対値ΔMeYと、ノイズ標準偏差σYと、ヒット率βと、ゲインGAとを変換パラメータとする変換関数を用いて、平均差分絶対値ΔMeYに基づく加算率αYBを出力する。
加算率変換出力部608および609は、基本的には、図35に示すように、ノイズ標準偏差σと、差分値とから加算率αを定める。なお、加算率変換出力部608および609では、ノイズ標準偏差σは、ノイズモデルメモリ607からのノイズ標準偏差σYであり、差分値は、画素差分絶対値ΔPxYおよび平均差分絶対値ΔMeYである。そして、出力加算率αは、加算率αYAおよびαYBである。
この実施形態では、図35に示すように、差分値が、ノイズ標準偏差σの倍数として設定できる所定の第1の閾値以下のときには、背景画像部分であるとして、加算率αは、最大値であるα=1とする。
そして、差分値が、(第1の閾値<差分値<第2の閾値)の範囲では、背景部分と動被写体部分とのいずれとの判断ができない部分として、図35に示すように、加算率αは差分値が大きくなるに従って直線的に小さくなるようにされる。そして、(差分値≧第2の閾値)の範囲では、動被写体部分であると判断して、加算率αは、最小値であるα=0とする。
ターゲットブロックの背景一致度合いが不明であるときには、上述したように、動被写体部分での二重露光のような状態を軽減するために、第1の閾値は安全を見越した値とされて、加算率αは全体的に抑制される。つまり、背景画像部分であることが分かっていれば、第1の閾値および第2の閾値を大きな値として設定して、できるだけ大きな加算率での画像加算を行なうことができる。
しかし、背景一致度合いが不明であるであるときには、全てのターゲットブロックについて、動被写体部分での二重露光のような状態を軽減するようにすることを考慮する必要がある。そのため、通常は、図35の例に示すように、第1の閾値は、標準偏差σの1倍(1σ)程度とされ、第2の閾値は、標準偏差の3倍(3σ)程度とされる。
これに対して、この実施形態では、上述したように、ターゲットブロック毎に、背景一致度合いが、その指標値であるヒット率βとして算出される。したがって、この背景一致度合いの指標値βを用いることにより、背景静止画像部分では、より大きな加算率で加算を行うことが可能となる。
ヒット率βを考慮した場合における加算率変換出力部608および609での加算率変換出力特性を図36に示す。
すなわち、図36の例においては、ヒット率βに応じて、差分値に対する第1の閾値を変更するようにする。すなわち、ヒット率βが最低で、β=0であるとき(動被写体部分)では、図35の例の場合と同様に、第1の閾値は、標準偏差σの1倍(1σ)とする。そして、ヒット率βが、β>0であるときには、ヒット率βの値に応じて第1の閾値を、より大きなものに変更する。
そして、図36の例においては、差分値が第1の閾値よりも大きくなったときからの加算率αの漸減直線の傾きは常に一定とされる。したがって、図36の例では、第2の閾値は、第1の閾値の変更に応じて自動的に変更される。
例えば、図37に示すように、ヒット率βを考慮しない図35の例の場合(β=0)においては、差分値が2σであるときには、加算率αは常に0.5となる。これに対して、ヒット率を考慮する場合においては、図37に示すように、ヒット率β=1.0である背景静止画像部分では、加算率αはα=1となり、最大の加算率で加算されるようになる。
このように、背景静止画像部分では、ヒット率βに応じて、より大きな加算率αが設定されるので、所期の通りのノイズ低減効果が得られる。また、動被写体部分では、ヒット率βに応じて加算率αは低く抑えられるので、二重露光の状態を軽減するという効果を維持することができる。
なお、上述の例では、第1の閾値のみをヒット率βに応じて変更し、差分値が第1の閾値よりも大きくなったときからの加算率αの漸減直線の傾きは常に一定としたが、第2の閾値をもヒット率に応じて変更して、前記漸減直線の傾きも変更するようにしても良い。
次に、加算率変換出力部608および609におけるゲインGAの寄与について説明する。
ゲインGAは、以上のようにして算出される加算率αを、さらに、変更制御するパラメータである。前述したように、このゲインGAは、ユーザにより設定されたり、撮影条件に応じて画像の明るさに応じて設定されたりするものである。例えばユーザにより設定する場合には、NR加算により、より大きなノイズ低減効果を得ようとする場合には、ゲインGAは大きくする。すると、上述のようにして算出された加算率αが、ゲインGAに応じた値に変更制御される。
図38に、加算率変換出力部608および609における、ゲインGAと、ヒット率βと、加算率αとの関係を示す。図38では、加算率αは、ヒット率β=0の場合の加算率を基準加算率αoとして、その基準加算率αoを基にした値として示している。
この図38の例においては、ゲインGAは、ユーザにより、あるいは、撮影条件などにより、GA=0、GA=1、GA=2、GA=3の4段階に、変更設定可能とされる。そして、ヒット率βも、β=0、β=0.25、β=0.5、β=1.0の4段階に設定されるようにされる。
そして、加算率αは、図38に示すように、基準加算率αoを係数K倍(K≧1)したものとされるが、その係数Kが、ゲインGAとヒット率βとの組み合わせに応じた倍数とされるものである。
以上のようにして、加算率変換出力部608では、画素差分絶対値ΔPxYと、ノイズ標準偏差σYと、ヒット率βと、ゲインGAとから、輝度成分の画素差分に基づく出力加算率αYAを出力する。また、加算率変換出力部608では、平均差分絶対値ΔMeYと、ノイズ標準偏差σYと、ヒット率βと、ゲインGAとから、輝度成分の平均差分に基づく出力加算率αYBを出力する。
色差信号成分については、平均差分は計算されず、画素差分絶対値のみが計算されて、上述した輝度成分と同様にして、色差成分に基づく加算率が算出される。
図33は、加算率計算部24における、色差成分についての処理部分である。図33を参照して、色差成分についての加算率計算処理についての説明する。
すなわち、ターゲット画像のデータ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画素とについて求める。この分散値は、輝度成分および色差成分のそれぞれについて求める。そして、求めた分散値のすべてから、加算率を算出する。
すなわち、図32に示すように、ターゲットブロックの画像データTGvの輝度データYtgは、ローパスフィルタ601を通じて空間分散フィルタ610に供給される。そして、この空間分散フィルタ610から、注目画素(自画素)と、その周囲近傍の例えば8画素との合計9個の画素についての分散値VaYが得られる。
また、図33に示すように、ターゲットブロックの画像データTGvの青の色差データCbtgは、ローパスフィルタ621を通じて空間分散フィルタ626に供給される。そして、この空間分散フィルタ626から、注目画素(自画素)と、その周囲近傍の例えば8画素との合計9個の画素についての分散値VaCbが得られる。
さらに、ターゲットブロックの画像データTGvの赤の色差データCrtgは、ローパスフィルタ631を通じて空間分散フィルタ636に供給される。そして、この空間分散フィルタ636から、注目画素(自画素)と、その周囲近傍の例えば8画素との合計9個の画素についての分散値VaCrが得られる。
そして、分散値VaY、VaCbおよびVaCrは、図32に示すように、加算部611で加算された後、加算率変換出力部612に供給される。さらに、加算率変換出力部612には、動きベクトル算出部21からのヒット率βと、外部からのゲインGAが供給される。
この加算率変換出力部612で求める加算率αCは、ターゲットブロックの画像が、テクスチャー成分が少なく、輝度レベル変化がなだらかな場合(グラデーションの場合)に、その加算率を抑えることを目的としている。この実施形態のようにブロック分割した画像処理においては、人間の視覚効果により、ブロック境界が非常に目立ち易くなり、特に、輝度レベル変化がなだらかな場合には殊更であることを考慮している。
上記の目的を実現させるために、基本的には、ブロック内の分散値が低いほど加算率を低くすれば良い。この実施形態の加算率変換出力部612では、図39(A)に示すように、分散値を横軸に取ると共に、分散値を所定の段階幅毎に幾つかの段階に分け、出力加算率を各段階の分散値に応じて決定するようにする。
図39(A)の例では、分散値を段階幅8毎に、5段階に分け、分散値0−7に対する加算率を0.0、分散値8−15に対する加算率を0.25、分散値16−23に対する加算率を0.5、分散値24−31に対する加算率を0.75、分散値32以上に対する加算率を1.0とする。
ところで、画像を重ね合わせる場合に、上述のようなブロック毎の境界が目立つのは、重ね合わせる画像に差異があるからである。換言すれば、背景静止画像部分については、重ね合わせる画像に差異はないので、分散値に応じた加算率の抑制をする必要はない。
そこで、この実施形態では、加算率変換出力部612では、ヒット率βに応じて、分散値の段階幅を制御し、ヒット率βが大きいほど、分散値の段階幅を小さくするようにする。これにより、背景静止画像部分については、分散値に応じた加算率の低減を抑制し、できるだけ、高い加算率で加算ができるようにしている。
すなわち、図39の例では、ヒット率βが、例えばβ=0というように低い値のときには、分散値の段階幅は、図39(A)に示すように、「8」とする。そして、ヒット率βが、例えばβ=0.5というような値のときには、分散値の段階幅は、図39(B)に示すように、「4」とする。
さらに、ヒット率βが、背景静止画部分であることを示すβ=1であるときには、分散値の段階幅は、図39(C)に示すように、「0」とする。つまり、このときには、分散値による加算率の低減は行なわない。
上述したように、加算率変換出力部612にも、ゲインGAが供給されており、このゲインGAによる出力加算率の制御が行なえるようにしている。この例の場合、ゲインGAにより、ヒット率βとの組み合わせにより、前述した分散値の段階幅を変更制御するようにする。
図40に、加算率変換出力部612における、ゲインGAと、ヒット率βと、段階幅との関係を示す。この図40の例においても、ゲインGAは、ユーザにより、あるいは、撮影条件などにより、GA=0、GA=1、GA=2、GA=3の4段階に、変更設定可能とされる。そして、ヒット率βも、β=0、β=0.25、β=0.5、β=1.0の4段階に設定されるようにされる。
なお、図40の例においては、段階幅については、ビットシフト演算により実現可能なように構成している。
なお、図39に示したように、この実施形態では、分散値を用いた加算率の算出に際しては、分散値について、段階幅を用いた複数段階を設定する構成としたが、複数段階とするのではなく、当該複数段階の間を線形補間するようにする構成としても良い。また、線形補間ではなく、2次曲線補間や3次曲線補間をするようにしても良い。
以上のようにして、各加算率変換出力部608、609、612、625および635では、輝度差分値や色差差分値、輝度平均差分値、分散値などに応じると共に、ヒット率βに応じた値として加算率αYA、αYB、αC、αCb、αCrが算出される。
そして、この実施形態では、これらの加算率αYA、αYB、αC、αCb、αCrが合成されて、加算率計算部21の出力加算率αが得られる。すなわち、図32に示すように、加算率変換出力部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、静止画コーデック部17を介して、記録再生装置部5に記録される。
[レンズ歪み補正部16の例]
レンズ歪み補正部16の構成例としては、背景技術で説明した特許文献2や特許文献3に開示されている補正手法を用いることもできるし、また、非特許文献1〜5に紹介されているような補正手法を用いることもできる。
図41は、特許文献2に開示されている手法を適用したこの実施形態の構成例である。この例のレンズ歪み補正部16は、レンズ歪み補正実行部161と、レンズ歪み補正量データデコード部162と、レンズ歪み補正用データ導出・エンコード部163とからなる。
レンズ歪み補正用データ導出・エンコード部163は、ユーザ操作入力部3を通じて入力されたレンズ10Lの歪曲収差に関するデータおよびCPU1(制御部)からの光学ズームの操作情報に応じた撮像レンズの光軸位置に関する情報などから、撮像素子11の全画素の当該撮像素子11上の各位置に応じたレンズ歪み補正ベクトルを予め計算する。
そして、補正用データ導出・エンコード部163は、求めた補正ベクトルを圧縮するなどしてエンコードしてメモリに格納しておく。この補正用データ導出・エンコード部163は、非常に負荷の大きな演算が必要となるので、専用のマイクロコンピュータやDSP(Digital Signal Processor)が用いられて構成される。
レンズ歪み補正量データデコード部162は、レンズ歪み補正用データ導出・エンコード部163に格納されている、撮像素子11上の各位置に応じたレンズ歪み補正ベクトルの圧縮エンコードデータを読み出し、レンズ歪み補正量データをデコードして生成する。
レンズ歪み補正量データデコード部121は、レンズ歪み補正実行部161からの歪み補正対象部位としての画素位置の情報を引数として受けて、当該画素位置におけるレンズ歪み補正量データをレンズ歪み補正実行部161に返す。
レンズ歪み補正実行部161では、画像メモリ4からの画像データの読み出しを制御しながら、読み出した画像データについてのレンズ歪みを、レンズ歪み補正量データデコード部162から得たレンズ歪み補正量データを用いて補正する。そして、レンズ歪み補正実行部161は、補正後の画像データを静止画コーデック部17や解像度変換部18に出力する。
なお、この実施形態では、レンズ歪み補正量データデコード部162およびレンズ歪み補正実行部161は、CPU1や、専用のマイクロコンピュータあるいはDSPが用いられて、ソフトウエア処理として処理を実行するものとして構成されている。
[実施形態の効果]
上述の実施形態によれば、加算NR処理する複数枚の画像フレームのそれぞれに対してレンズ歪み補正を施すのではなく、加算NR処理した後の1枚の画像フレームに対してのみ、レンズ歪み補正を施す。このため、レンズ歪み補正処理は、1枚の画像に対して行うだけでよいため、処理時間が少なくて済む。これにより、レンズ歪み補正をソフトウエア処理としても、その処理負荷が軽減され、短時間処理が可能となる。
また、レンズ歪み補正処理により画像を拡大してしまうような場合においては、ノイズも拡大してしまうが、この実施形態では、加算NR処理を行ってノイズ低減した画像に対してレンズ歪み補正を行うので、ノイズの拡大を軽減することができる。
また、上述の実施形態においては、拡張したアフィン変換を用いることにより、あおり変形や曲線的な動き変化に対しても、動き補償して位置合わせを行うようにしているので、レンズ歪みが生じたままの画像であっても、良好な動き補償をすることができる。
そして、この実施形態の加算NR処理では、例えば1枚目の画像フレームを基準として重ね合わせて加算NR画像が得られ、加算NR処理した後のレンズ歪み補正を、当該基準画像フレームに存在していたレンズ歪みのみとすることができる。このため、加算NR画像に対するレンズ歪みを良好に補正することができるという効果がある。
また、実施形態における加算NR処理においては、ターゲットブロック毎に背景一致度合いの指標値であるヒット率βを用いて、静止画像部分では、加算率αを大きくすることができる。このため、NR画像として、ノイズ低減効果が大きい画像が得られるという顕著な効果を奏する。
また、動被写体部分では、加算率αが小さくされて加算されないようにされるので、動き部分が2重露光のような状態となってしまうことが軽減されるという効果もある。
[他の実施形態および変形例]
加算NR処理としては、上述したターゲット画像が常に加算NR画像となるターゲット加算方式の他に、参照画像を常にNR画像にする参照加算方式があり、この参照加算方式にも、この発明は、適用することが可能である。
また、上述の実施形態は、複数枚の画像を用いて行う処理として加算NR処理の場合を例に説明した。しかし、この発明は、複数枚の画像を用いて超高解像度の1枚の画像を生成する処理や、複数枚の画像を用いて高ダイナミックレンジ化を図った1枚の画像を生成する処理にも適用可能である。
また、撮像光学系により画像に生じる画像歪みは、上述した撮像レンズの歪曲収差特性に基づくものに限らず、種々の画像歪み(色歪みを含む)に適用可能である。
すなわち、例えば、撮像レンズを有する撮像光学系で発生する収差の例として、上述した歪曲収差の他に、レンズの色収差がある。レンズの屈折率は、光の波長によって、すなわち、色によって異なる。このため、同じレンズを用いても、波長によって焦点距離が異なるために、像の大きさと位置に差が生じる。これがレンズの色収差である。
この色収差には軸上色収差と倍率色収差とに分けることができ、そのうち、軸上色収差とはレンズの焦点距離が波長により異なるために、色によって結像面の位置が前後にずれることである。このため、画像はぼけたようになる。
また、倍率色収差は色によって像の倍率が異なり、結像面での像の大きさが異なることである。例えば白色点光源を撮影したとき、特に画面に周辺部において虹色に色づいて放射状に伸びるように見える画像歪みが生じる。この倍率色収差については、画像データについて、ソフトウエア処理により、補正する手法が種々提案されている。
この撮像レンズの色収差(倍率色収差)の補正を画像データに対して施す場合も、従来は、全ての撮像画像について、補正を施すようにするが、この倍率色収差の補正についても、この発明を適用することができる。
すなわち、例えば加算NR処理の例の場合であれば、加算NR処理する前の撮像画像のそれぞれに倍率色収差の補正を施すのではなく、加算NR処理した後の出力画像に対して、色収差の補正処理を施すようにするものである。
なお、このレンズの色収差による画像歪み(色歪み)を補正する手法としては、例えば特許文献4(特開2000−299874号公報)に記載の手法を用いることができ、ここでは、その詳細な説明は省略する。
なお、上述の実施形態は、画像処理装置が撮像装置の場合であるが、この発明が適用される画像処理装置は、撮像装置に組み込まれたものに限らないことは言うまでもない。