以下、この発明による画像処理装置および画像処理方法の実施形態を、撮像装置に適用した場合について、図を参照しながら説明する。
[第1の実施形態]
この第1の実施形態の撮像装置は、撮像素子(イメージャ)によって撮像された複数枚の静止画像を、位置合わせしながら重ね合わせて、画像のノイズ低減を行うようにするものである。
撮像装置を手で保持して撮影する環境は、手ぶれが生じ易い環境である。このような撮像装置の手持ち撮影時において、静止画を連写撮影した場合の、例えば1枚目をターゲットフレーム、2枚目以降を参照フレームとする。
参照フレーム全体に、平行移動、回転、拡大縮小を伴う変形処理を施すことにより、ターゲットフレームの位置に、参照フレームを位置合わせすることができる場合、この参照フレーム全体に加わっている変形処理がグローバルモーションである。グローバルモーションは、通常は、画像の背景静止画(以下、背景と略す)の動きおよび動き量を示すものとなる。
手ぶれは、参照フレームがターゲットフレームに対して、平行移動、回転、拡大縮小を伴う画像変形をした分だけ、ターゲットフレームに対して、グローバルモーションが生じたことを意味している。
この実施形態では、説明の簡単のため、撮影した静止画の1枚目を基準(ターゲットフレーム)とする。しかし、これは本質ではない。任意のn枚目をターゲットフレームとし、任意のm(n≠m)枚目を参照フレームとして、グローバルモーションを定義し直しても良い。また、動画中の時間的に異なる2枚のフレーム画像間を対象にして、グローバルモーションを定義してもよい。また、撮像画像の1フレームのうちの有効画枠全てを対象とせず、1フレームの画像の一部分のみに関して、グローバルモーションの処理を適用しても良い。
グローバルモーションが求められると、当該求められたグローバルモーションから、画面上の座標位置毎のターゲットフレームと参照フレームとの間の、画面全体に加わっている動きに応じた動きベクトルを算出することができる。当該画面全体に加わっている動きに応じた動きベクトルを、以下、グローバル動きベクトルという。このグローバル動きベクトルは、画面に設定される多数個のターゲットブロックのそれぞれについて求めることができる。また、グローバル動きベクトルは、画素毎に求めることもできる。
そして、グローバルモーションに基づいて、グローバル動きベクトルを正確に求めることができれば、手ぶれを良好に補正することができる。あるいは、グローバル動きベクトルを手ぶれ分を補正しながら、フレーム画像を重ね合わせることができる。
以下の説明において、動きベクトル検出および動き補償(動きベクトルにより、2フレームの画像を位置合わせすること)を用いて複数枚の画像を重ね合わせて、ノイズを低減することをNR(Noise Reduction)と呼ぶ。そして、NRによりノイズ低減された画像をNR画像と称する。
この実施形態では、1画面を多数個のブロック(後述のターゲットブロック)に分割して、そのブロック単位の動きベクトルを、上述したブロックマッチング手法により検出する。ブロックマッチング手法によりブロック毎に検出した動きベクトルを、この明細書ではローカル動きベクトルという。
また、この実施形態では、ローカル動きベクトルの信頼性の指標を、ブロックマッチング手法における相関値を用いて、後述するようにして検出する。そして、この実施形態では、検出したローカル動きベクトルのうちの、信頼性の高いもののみから、グローバルモーションを算出し、算出したグローバルモーションからブロック毎のグローバル動きベクトルを検出するようにする。
[ブロックマッチングの概要]
図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つ以上のターゲットブロックについて並列に計算するようにしてもよい。同時に処理するターゲットブロックが増加すると、処理は高速化する。しかし、SAD値を計算するハードウエアの規模が増大するので、処理の高速化と、回路規模の増大のトレードオフになる。
[実施形態のブロックマッチング]
以上のブロックマッチングの説明は、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は、この発明の画像処理装置の実施形態としての撮像装置の一例のブロック図を示すものである。
この図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の撮像装置の撮像信号処理系10は、記録再生装置部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信号であるアナログ撮像信号を、輝度信号成分Yと、色差信号成分Cb/Crとにより構成されるデジタル撮像信号(YCデータ)に変換する。データ変換部14からのデジタル撮像信号は、ユーザ操作入力部3を通じた撮影指示に基づいて、画像メモリ部4に、書き込まれる。
すなわち、ユーザ操作入力部3を通じた撮影指示として、シャッターボタンの押下による静止画撮影指示であると、データ変換部14からのデジタル撮像信号は、フレームメモリ41〜4Nに書き込まれる。この場合に、データ変換部14からのデジタル撮像信号は、重ね合わせるべき前述した複数フレーム分が画像メモリ部4の第1〜第N(Nは、重ね合わせる静止画の枚数)のフレームメモリ41〜4Nに書き込まれる。
この例においては、シャッターボタンの押下の1枚目のフレームの画像データは、ターゲットフレームの画像データとして第1のフレームメモリ41に書き込まれる。そして、2枚目以降のフレーム画像のデータは、参照フレームの画像データとして、それぞれ第2〜第Nのフレームメモリ42〜4Nに順次に書き込まれる。
そして、複数フレーム分の画像が画像メモリ部4に書き込まれた後、ターゲットフレームの画像データと参照フレームの画像データが、動きベクトル算出部15によって読み込まれる。そして、動きベクトル算出部15で、後述するようなローカル動きベクトルLMVの検出、ローカル動きベクトルLMVの信頼性の算出、グローバルモーションの算出およびグローバル動きベクトルGMVの算出処理がなされる。さらに、動きベクトル算出部15では、ターゲットブロックについての背景一致度合いの評価も行なって、ヒット率βを生成する。
この実施形態では、動きベクトル算出部15からは、ターゲットフレームの画像データTGvと、参照フレームの画像データREFvと、ヒット率βとが出力される。また、動きベクトル算出部15からは、グローバル動きベクトルGMVまたはローカル動きベクトルLMVからなるNR処理用動きベクトルMVnrの情報が出力される。
そして、動きベクトル算出部15からのNR処理用動きベクトルMVnrの情報と、参照フレームの画像データREFvとは動き補償画生成部16に供給される。動き補償画生成部16では、参照フレームの画像データREFvに対して、NR処理用動きベクトルMVnrによりグローバルモーションに対応する処理、つまり、平行移動、回転、拡大縮小を伴う変形処理を施して、動き補償画像を生成する。
そして、動きベクトル算出部15からのターゲットフレームの画像データTGvが加算部17に供給されると共に、動き補償画生成部16からの動き補償画像の画像データMCvが加算部17に供給される。
また、動きベクトル算出部15からのターゲットフレームの画像データTGvとヒット率βとが、加算率計算部21に供給される。加算率計算部21は、ターゲットフレームの各ターゲットブロック毎の加算率αを、背景一致度合いであるヒット率βに応じて計算する。そして、加算率計算部21は、算出したターゲットブロック毎の加算率αを、加算部17に供給する。
加算部17では、両画像データTGvおよびMCvの対応する位置の画素が加算されることにより、画像の重ね合わせ処理がなされ、その加算画像(NR画像である)の画像データMIXvが出力される。この画像重ね合わせは、ターゲットブロック単位に行なわれ、ターゲットブロックの画像データに対して、加算率αで、動き補償画像の画像データMCvの対応するブロックの画像データが加算される。
加算部17からの加算画像の画像データMIXvは、画像メモリ部4の第1のフレームメモリ41に、ターゲットフレームの画像データとして、その前のターゲットフレームの画像データに重ね書き(上書き)される。
すなわち、第1のフレームメモリ41のターゲットフレームの画像データは、最初は、シャッターボタンが押下された直後の1枚目のフレームの画像データとなる。第1のフレームメモリ41のターゲットフレームの画像データは、2枚目の参照フレームの動き補償画の画像データMCvとターゲットフレームとが加算されると、その加算結果の加算画像の画像データMIXvに書き換えられる。
そして、その加算画像の画像データMIXvが、3枚目の参照フレームの画像データに対するターゲットフレームの画像データとなる。そして、上述と同様にして、動きベクトル算出部15でNR処理用動きベクトルMVnrが算出され、加算部17で画像の重ね合わせ処理がなされる。
そして、その加算結果の加算画像の画像データMIXvが画像メモリ部4の第1のフレームメモリ41に、ターゲットフレームの画像データとして、その前のターゲットフレームの画像データに重ね書き(上書き)される。以下、4枚目以降の参照フレームに対しても同様の処理動作がなされる。
したがって、N枚目の参照フレームまでについての画像の重ね合わせ処理がなされた後には、画像メモリ部4の第1のフレームメモリ41には、重ね合わせるべきN枚の全てのフレームが重ね合わされたNR画像が書き込まれていることになる。
そして、この画像メモリ部4の第1フレームメモリ41に格納された重ね合わせ結果のNR画像である加算画像の画像データMIXvは、システムバス2を通じて静止画コーデック部18に供給されてコーデック変換される。静止画コーデック部18からの出力データは、記録再生装置部5の例えばDVD(Digital Versatile Disc)やハードディスクなどの記録媒体に記録される。この実施形態では、静止画コーデック部18では、JPEG(Joint Photographic Experts Group)方式の静止画についての画像圧縮符号化処理が行われる。
また、この静止画撮影モード時、シャッターボタンが押下操作される前においては、データ変換部14からの画像データは、画像メモリ部4の第1のフレームメモリ41を通じて、解像度変換部19に供給される。そして、画像データは、この解像度変換部19にて、所定の解像度に変換された後、NTSC(National Television System Committee)エンコーダ20に供給される。このNTSCエンコーダ20では、画像データは、NTSC方式の標準カラー映像信号に変換され、例えばLCD(Liquid Crystal Display;液晶ディスプレイ)からなるモニターディスプレイ6に供給される。モニターディスプレイ6の表示画面には、静止画撮影モード時のモニター画像がモニター表示される。
この記録再生装置部5の記録媒体に記録された静止画の画像データは、ユーザ操作入力部3を通じた再生開始操作に応じて読み出され、静止画コーデック部18に供給されて、再生デコードされる。そして、再生デコードされた静止画の画像データは、画像メモリ部4のバッファメモリ(図示は省略)を通じてNTSCエンコーダ20に供給される。NTSCエンコーダ20でNTSC方式の標準カラー映像信号に変換された画像データは、モニターディスプレイ6に供給され、再生画像がその表示画面に表示される。
なお、図1では、図示を省略したが、NTSCエンコーダ20からの出力映像信号は、映像出力端子を通じて外部に導出することが可能とされている。
なお、この実施形態では、静止画コーデック部18により画像データを圧縮して記録するようにしたが、静止画コーデック部18を省略して、画像データを圧縮せずに記録するようにしても良い。
また、上述した動きベクトル算出部15および動き補償画生成部16は、ハードウエアにより構成することできる。また、動きベクトル算出部15および動き補償画生成部16は、DSP(Digital Signal Processor)を用いて構成することもできる。さらには、動きベクトル算出部15および動き補償画生成部16は、CPU1によりソフトウエア処理とすることもできる。
同様に、加算部17も、ハードウエアにより構成することできるし、また、DSPを用いて構成することもできる。さらには、加算部17も、CPU1によりソフトウエア処理とすることもできる。また、静止画コーデック部18も、同様である。
[動きベクトル算出部15の説明]
動きベクトル算出部15では、この実施の形態では、先ず、図2〜図7を用いて説明した、SAD値を用いてブロックマッチング処理を行うことで、ローカル動きベクトルLMVの検出を行うようにする。ただし、この実施の形態では、動きベクトル算出部15は、後述するようなハードウエアで構成され、ローカル動きベクトルLMVは、階層化ブロックマッチング処理により算出することができる。
また、前述したように、この実施形態の動きベクトル算出部15では、ローカル動きベクトルLMVのそれぞれの信頼性の指標も算出するようにする。
さらに、動きベクトル算出部15では、信頼性の高いローカル動きベクトルのみを用いてグローバルモーションを算出する。そして、算出したグローバルモーションから、ブロック単位のグローバル動きベクトルを算出する。さらに、各ターゲットブロックについて、背景部分か、動被写体部分かの判定を行い、背景一致度合いを示すヒット率βを算出する。
<階層化ブロックマッチング処理>
一般的な従来のブロックマッチングにおける動きベクトル検出処理では、サーチ範囲内を、ピクセル単位(1ピクセル単位または複数ピクセル単位)で参照ブロックを移動させて、各移動位置における参照ブロックについてのSAD値を算出する。そして、その算出したSAD値の中から最小値を示すSAD値を検出し、当該最小SAD値を呈する参照ブロック位置に基づいて動きベクトルを検出するようにする。
そして、この実施形態では、1フレームが多数のブロックに分割されるので、以上のブロックマッチング処理をターゲットブロックおよび参照ブロックを順次切り替えながら、全画面において処理を行う。これにより、ターゲットフレーム内の全てのターゲットブロックについてのローカル動きベクトルLMVの算出を行う。
しかし、このような従来の動きベクトル検出処理では、サーチ範囲内をピクセル単位で参照ブロックを移動させるようにするので、検索するサーチ範囲に比例して、SAD値を算出するマッチング処理回数が多くなって、マッチング処理時間が大きくなる。また、SADテーブルの容量も大きくなるという問題があった。
特に、静止画像の高画素化、並びに動画像のHD(High Definition)化が進み、1枚の画像サイズが非常に大きくなってきていることを考慮すると、この問題は大きい。また、システムバス2を介して画像メモリをアクセスする回数も多くなり、バス帯域を大きくしなければならなくなるという問題もある。
以上のことを考慮して、この実施の形態では、先ず、ターゲット画像(ターゲットフレーム)および参照画像(参照フレーム)を縮小した縮小画像と中間画像を用意する。そして、縮小画像、中間画像、原画画像の順に、ブロックマッチングによる動きベクトルサーチを、前段階でのブロックマッチングの結果を次段階におけるサーチに反映させて行うという階層化ブロックマッチングを行う。
この階層化ブロックマッチングを行うことで、演算量や処理時間を少なく、効率の良いローカル動きベクトルの算出を行うようにする。ここで、縮小画像のことを縮小面、中間画像のことを中間面、縮小化をしていない元の画像のことを基底面と呼ぶことにする。
図11は、この階層化ブロックマッチングを説明するための図である。図11の例においては、基底面ターゲットフレーム201および基底面参照フレーム301を、1/a・1/b(1/a、1/bは、縮小倍率であって、a>1、b>1である)に縮小して、縮小面ターゲットフレーム211および縮小面参照フレーム311を生成する。
また、基底面ターゲットフレーム201および基底面参照フレーム301を、1/bに縮小して、中間面ターゲットフレーム221および中間面参照フレーム321を生成しておく。
縮小面や中間面の基底面に対する倍率は任意であるが、1/2〜1/8倍(画素数換算で1/4〜1/64倍)の範囲が適当である。なお、図11の例では、中間面に対する縮小面の縮小倍率は1/4(すなわち、a=4)、また、基底面に対する中間面の縮小倍率は1/4(すなわち、b=4)の場合として示している。
縮小面や中間面の作成にあたっても、その方法は任意である。しかし、単に、原画像の画素を、縮小倍率に応じて間引くだけで縮小面や中間面を作成する方法では、折り返し成分が発生し、1階層目(縮小面)で検出される動きベクトルが、正しいものから外れやすくなる。このため、通常、縮小倍率に応じたカットオフ周波数帯域を持つローパスフィルタを原画に対して施したのち、縮小倍率に応じたサブサンプリングを行う。
この実施形態では、倍率に応じたサブサンプリングにより消失する画素を含んだ、輝度平均値を生成し、それを縮小面画素や中間面画素としている。つまり、1/a縮小なら、a×a画素の正方領域の輝度平均値を算出し、これを縮小面画素や中間面画素の輝度値とする。この手法の場合、まず中間面を生成しておいてから、中間面から縮小面を生成しても、原画から直接縮小面を生成する場合と同じ結果が得られるため、より効率的である。
なお、縮小画像を得るに当たっては、水平方向の縮小率と垂直方向の縮小率は、上記のように同じであってよいし、また、異ならせても良い。
以上のようにして、縮小面および中間面を作成したら、先ず、縮小面ターゲットフレーム211に縮小面ターゲットブロック212を設定すると共に、縮小面参照フレーム311に縮小面サーチ範囲313を設定する。
そして、当該縮小面サーチ範囲313内の複数個の縮小面参照ブロック312について、縮小面の動きベクトル検出装置401で、上述したブロックマッチング処理を行い、最小SAD値を呈する縮小面参照ブロック位置を検出する。この縮小面参照ブロック位置の検出に基づき、縮小面動きベクトルMVsを検出する。
この例では、動きベクトル検出装置401は、縮小面ターゲットブロック212の大きさ(水平方向の画素数×垂直方向のライン数)のブロックをブロックマッチング処理単位として処理を実行する。
縮小面動きベクトルMVsの算出が終了したら、次に、縮小面ターゲットフレーム211をa倍したものに等しい中間面ターゲットフレーム221において、中間面ターゲットブロック222を設定する。
図11の例では、中間面の動きベクトル検出装置402は、縮小面の動きベクトル検出装置401におけるブロックマッチング処理単位と同じ大きさのブロックを中間面ターゲットブロックとしてブロックマッチング処理を行うようにしている。ここで、同じ大きさのブロックとは、同じピクセル数であって、同じ水平方向の画素数×同じ垂直方向のライン数からなるものである。
この例の場合、縮小面は中間面の1/aであるので、縮小面ターゲットブロック212に対応する中間面ターゲットフレームにおける領域には、中間面ターゲットブロック222が、a個含まれることなる。したがって、その中間面ターゲットブロック222のa個の全てが中間面の動きベクトル検出装置402におけるブロックマッチング処理対象として設定される。
そして、縮小面参照フレーム311をa倍したものに等しい中間面参照フレーム321において、縮小面動きベクトルMVsを中心とした中間面サーチ範囲323を設定する。この中間面サーチ範囲323内の複数個の中間面参照ブロック322について、動きベクトル検出装置402で、上述したブロックマッチング処理を行い、最小SAD値を呈する中間面参照ブロック位置を検出することにより、中間面動きベクトルMVmを検出する。
中間面の動きベクトル検出装置402では、a個の中間面ターゲットブロックのそれぞれについて、中間面サーチ範囲323内に設定したそれぞれの当該中間面ターゲットブロック用のサーチ範囲において、ブロックマッチング処理を実行する。これにより、それぞれの中間面ターゲットブロックについての動きベクトルの検出を行う。そして、それら複数個の動きベクトルのうち、最小のSAD値を呈する動きベクトルを、中間面における動きベクトル(中間面動きベクトル)MVmとして検出する。
縮小面動きベクトルMVsの算出が終了したら、次に、中間面ターゲットフレーム221をb倍したものに等しい基底面ターゲットフレーム201において、基底面ターゲットブロック202を設定する。
図11の例では、基底面の動きベクトル検出装置403も、動きベクトル検出装置401および402と同じ大きさ(同じピクセル数=同じ水平方向の画素数×同じ垂直方向のライン数)のブロックを処理単位ブロックとしてブロックマッチング処理を行うようにしている。
そして、前述したように、中間面動きベクトルMVmは、処理単位ブロックの単位で得られる。したがって、動きベクトル検出装置403で対象となる基底面ターゲットフレーム201における基底面ターゲットブロック202は、図11において、斜線を付して示すように、縮小面ターゲットブロックと同じ大きさのブロック(処理単位ブロック)のb倍の個数からなるものとして設定される。
一方、中間面参照フレーム321をb倍したものに等しい基底面参照フレーム301において、縮小面動きベクトルMVsと中間面動きベクトルMVmとの合成ベクトルを中心とした基底面サーチ範囲303を設定する。当該基底面サーチ範囲303内の複数個の基底面参照ブロック302について、動きベクトル検出装置403で、上述したブロックマッチング処理を行い、最小SAD値を呈する基底面参照ブロック位置を検出することにより、基底面動きベクトルMVbを検出する。
縮小面動きベクトルMVsおよび中間面動きベクトルMVmは、同じ大きさの処理単位ブロックの単位で得られる。このため、縮小面動きベクトルMVsと中間面動きベクトルMVmとの合成ベクトルを中心とした設定された基底面サーチ範囲303は、b個の基底面ターゲットブロック202を含む領域よりも若干広い領域とされる。
動きベクトル検出装置403では、b個の基底面ターゲットブロック202について、基底面サーチ範囲303内に設定したそれぞれの基底面ターゲットブロックについてのサーチ範囲において、ブロックマッチング処理を実行する。これにより、それぞれの基底面ターゲットブロックについての動きベクトルの検出を行う。そして、それら複数個の動きベクトルのうち、最小のSAD値を呈する動きベクトルを、基底面における動きベクトル(基底面動きベクトル)MVbとして検出する。
そして、以上のようにして求められた縮小面動きベクトルMVsと、中間面動きベクトルVMmと、基底面動きベクトルVMbとの合成ベクトルとして、基底面ターゲットフレーム201と基底面参照フレーム301との間における基底面ターゲットブロックについてのローカル動きベクトルLMVが検出される。
以上のような階層化ブロックマッチング処理を、ターゲットブロックおよび参照ブロックを順次切り替えながら、ターゲットフレームおよび参照フレームの全領域において、実行する。これにより、ターゲットフレーム内に設定した複数個のターゲットブロック単位の複数個のローカル動きベクトルLMVの全てが算出される。
図11の例で、動きベクトル検出装置401,402および403は、実際的には、1つの装置であって、画像メモリ部4から読み出されて入力されるターゲットブロックと、サーチ範囲から読み出される参照ブロックとが異なるのみである。
なお、ターゲットブロックの切り替えは、基底面ターゲットフレーム201において、全ての基底面ターゲットブロック202についてのローカル動きベクトルLMVを得るようにする場合には、次のようにする。すなわち、縮小面において、縮小面ターゲットブロックを、水平方向には、縮小倍率1/aおよび1/bに応じた水平方向の画素数分ずつ、ずらして設定する。また、垂直方向には、縮小倍率1/aおよび1/bに応じた垂直方向のライン数分ずつ、ずらして設定するようにすれば良い。
しかし、グローバルモーションを複数個のローカル動きベクトルLMVから求めるという目的からすると、次のようにしても良い。すなわち、基底面ターゲットフレーム201における飛び飛びの位置の基底面ターゲットブロックについてのローカル動きベクトルLMVを得るように、縮小面ターゲットブロックを、水平方向および垂直方向に、順次にずらして設定するようにしてもよい。
なお、上述した階層化ブロックマッチングは、中間面を省略し、縮小面と基底面のみの2階層で行っても良いし、逆に、中間面の階層が複数存在しても構わない。ただし、縮小倍率が大き過ぎて、動被写体と背景が同じ単位ブロックに含まれてしまう場合には、注意が必要である。すなわち、本来は異なる動きベクトルとして検出されるべきものが、1つの動きベクトルとして扱われてしまい、以降の階層ではリカバリが効かないため、縮小倍率の選定は慎重に行われる必要がある。
[ローカル動きベクトルLMVの信頼性の算出]
比較的ノイズの多い画像がターゲット画像の場合、SAD値がノイズの影響を受け、正しいベクトルが得られないケースが多い。図12は、夜景を撮影したもので、比較的ノイズの多い画像である。この図12の画像に対して、僅かに回転を伴いながら左方向に手ぶれして撮影された画像を参照画像として、両画像間の動きベクトルを図示すると、図13に示すような結果が得られる。この図13は、原画を1/8に縮小した縮小画像における縮小面動きベクトルを描画したものである。
この図13を見て分かるように、特にテクスチャのはっきりしない、夜空の動きベクトルが、全くバラバラの動きとして得られている。階層化ブロックマッチングにおいては、前述の通り、縮小画像の生成の際にはローパスフィルタが施されるため、比較的ノイズ耐性が高いが、この図13に示すように、ノイズの影響を受ける。
基底面のローカル動きベクトルLMVは、縮小面動きベクトルの周辺をサーチして得られるため、縮小面動きベクトルが、正しいものから外れている場合には、リカバリが効かず、ノイズの影響をまともに受け、さらに乱れることになる。
仮に、ノイズが全く無い撮像画像が対象であった場合でも、テクスチャがはっきりしない画像の場合は、連写撮影時の僅かな外光の変化や露光時間の差違によるグラデーョンの変化の方が大きく、検出された動きベクトルが、正しいものから外れるケースが多い。また、多数の木やビル等の人口建築物には、テクスチャの繰り返しパターンが多いが、そのようなテクスチャの繰り返しパターンの場合でも、検出された動きベクトルが、正しいものから外れ易くなる。
こうしたケースを想定して、前述したように、従来から、信頼性の高い動きベクトルのみを用いて、グローバルモーションを算出する試みが行われて来た。例えば、ターゲット画像において、エッジ検出を行い、エッジのはっきりしたブロックの動きベクトルは、信頼性が高いものとする提案がある。また、ターゲット画像のIDCT(Inverse Discreet Cosine Transform)結果のDC成分、AC成分を使って信頼性を算出する提案もなされている。
また、予め、フィルタの一種であるコーナーディテクタを用いて、ターゲット画像上の特徴点を検出し、それらの動きベクトルは信頼性が高いものとする提案もある。さらに、複数の特徴点の位置関係が、参照画像上でも維持されるという前提から、複数点の動きベクトルの組み合わせから信頼性の高い動きベクトルを抽出する手法も、提案されている。
しかしながら、これらの従来の手法は、いずれも高ノイズの画像を前提としておらず、ノイズが非常に大きいレベルの画像においては、どの手法も破綻してしまうことが明らかである。
この実施形態では、上記の実情に鑑み、高ノイズ環境の画像においても有効に、動きベクトルの信頼性を評価できる信頼性指標値を得るようにしている。
この実施形態では、ターゲットブロックと参照ブロックとの間の相関値の第1極大値と、第2極大値との差または比を、動きベクトルの信頼性の指標値とする。この実施形態では、ターゲットブロックと参照ブロックとの間の相関値は、SAD値として検出するので、相関値の第1極大値および第2極大値は、SAD値の第1極小値および第2極小値となる。
図14は、1つのターゲットブロックについてのSADテーブルにおける各SAD値を、模式的に示した図である。この図14では、サーチ範囲を、画像の水平方向(x方向)と垂直方向(y方向)との2次元で表わし、高さ方向(x方向およびy方向に直交する方向)にSAD値を取って、SADテーブルを3次曲面で表わしている。
通常のブロックマッチング処理の場合、動きベクトルを検出するためにはSADテーブルにおけるSAD値の最小値のみが検出対象とされる。このSAD値の最小値は、SADテーブルにおけるSAD値の第1極小値であり、図14においては、点501で示す位置となっている。図14では、動き原点(x=0、y=0)から、この点501で示すSAD値の最小値位置との間のベクトルとして、動きベクトルMVが検出される。
ノイズが存在しない理想的な状態を考えれば、サーチ範囲内の複数の参照ブロックとターゲットブロックとの相関値を求めたとき、3次曲面で表わされるSADテーブルは、一様に下に凸となり、SAD値の極小値は、1つのみ存在する状態となる。しかし、実際の撮影状況においては、光量変化や、動き物体の動きなどの影響のほか、種々のノイズのため、3次曲面で表わされるSADテーブルは、一様に下に凸となることは殆どなく、複数個のSAD値の極小値が存在するのが一般的である。
そこで、この実施形態では、SAD値の最小値に等しい第1極小値を呈する参照ブロックの位置に基づいて動きベクトルMVを検出するが、このSAD値の第1極小値を除くSAD値のうちの極小値、すなわち、SAD値の第2極小値を、信頼性の指標を生成するために検出する。図14においては、点501で示す位置が第1極小値を示し、点502で示す位置が第2極小値を示している。
ノイズ等の影響が少なければ、SAD値の第1極小値と、SAD値の第2極小値との差は大きく、SAD値の第1極小値、すなわち、SAD値の最小値から検出される動きベクトルMVの信頼性は高くなる。一方、ノイズ等が多い環境においては、SAD値の第1極小値と、SAD値の第2極小値との差が小さく、いずれが動きベクトルMVに正しく対応しているか分からない状況になるので、信頼性が低いことになる。
以上のことから、この実施形態では、SAD値の第1極小値(SAD値の最小値)と、SAD値の第2極小値との差を、検出した動きベクトルの信頼性の指標とする。図14のサーチ範囲を1次元軸上で表わし直したSADテーブルを、図15に示す。この実施形態では、この図15において、第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
・・・(式6)
ただし、
Ft;動きベクトルの信頼性指標値
Btm2SAD;SAD値の第2極小値
MinSAD;SAD値の最小値(第1極小値)
MaxTAR;ターゲットブロックの最大輝度値
MinTAR;ターゲットブロックの最小輝度値
Co;重み係数(≦1)
となる。
なお、動きベクトル信頼性指標値として、相関値の第1極大値と相関値の第2極大値との比を用いる場合にも、信頼性指標値算出式において、上述の(式6)と全く同様に、コントラストの影響を軽減する項を追加するようにすれば良い。もっとも、動きベクトルの信頼性指標値Ftの算出に当たって、コントラストの影響を軽減する項を追加することは必須ではなく、この項を省略してもよい。
上述の説明では、基底面動きベクトルMVbについての動きベクトル信頼性指標値のみを求めるようにしたが、縮小面動きベクトルMVsや中間面動きベクトルMVmについても、同様にして、動きベクトル信頼性指標値を求めることができることは、言うまでもない。
[グローバルモーションおよびグローバル動きベクトル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
・・・(式7)
なる演算式により、各ローカル動きベクトルLMVについての重み係数Wを、それぞれの動きベクトルの信頼性指標値Ftを用いて算出するようにする。
すなわち、この実施形態では、動きベクトル信頼性指標値Ftを用いて、複数個のローカル動きベクトルLMVのそれぞれの信頼性を判定し、複数個のローカル動きベクトルLMVから、信頼性の高いローカル動きベクトルLMVのみを抽出する。そして、当該抽出した信頼性の高いローカル動きベクトルLMVのみを用いてグローバルモーションを算出する。
この実施形態では、ターゲットフレームにおけるターゲットブロック数が比較的多いことから、この例のように、信頼性の高いローカル動きベクトルLMVのみを抽出する方法であっても精度の良いグローバルモーションの算出が可能である。
なお、複数個のローカル動きベクトルLMVから、グローバルモーションを算出する具体的な処理例は、後述する。
前述の図12のノイズの多い画像については、図13に示したようなローカル動きベクトルが得られることを説明した。この図13の画像上に示したローカル動きベクトルに対して、この実施形態による動きベクトルの信頼性指標値を用いて信頼性の判定をした上で、閾値以上の信頼性が得られたもののみを抽出し、そのブロックと動きベクトルを描画すると、図16のようになる。この図16に示した、これらのブロックについては、ノイズの影響を受けず、ほぼ正しいローカル動きベクトルが得られていると言える。
[動きベクトル算出部15のハードウエア構成例]
動きベクトル算出部15は、上述したように、ターゲットブロック毎のローカル動きベクトルLMVの検出、検出したローカル動きベクトルLMVの信頼性指標値の算出、グローバルモーションGMおよびグローバル動きベクトルGMVの算出、などの処理を行う。
この動きベクトル算出部15のハードウエア構成例を図17に示す。この例では、動きベクトル算出部15は、ターゲットブロック102の画素データを保持するターゲットブロックバッファ部151と、参照ブロック108の画素データを保持する参照ブロックバッファ部152とを備える。
また、動きベクトル算出部15は、ターゲットブロック102と参照ブロック108とで対応する画素についてのSAD値を計算するマッチング処理部153を備える。また、動きベクトル算出部15は、マッチング処理部153から出力されるSAD値情報からローカル動きベクトルを算出するローカル動きベクトル算出部154を備える。動きベクトル算出部15は、さらに、コントロール部155と、動きベクトル信頼性指標値算出部156と、グローバルモーション算出部157と、グローバル動きベクトル算出部158と、コントラスト算出部159と、背景/動被写体判定部150と、を備える。
コントラスト算出部159は、ローパスフィルタ1591と、最大輝度値検出部1592と、最小輝度値検出部1593とからなる。
この例では、図示は省略するが、画像メモリ部4には、原画のターゲットフレームや参照フレームの画像データから生成された、ターゲットフレームおよび参照フレームについての縮小面の画像データおよび中間面の画像データが、記憶保持されている。
コントロール部155は、この動きベクトル算出部15における処理シーケンスを制御するもので、図示のように各部に制御信号を供給するようにする。
ターゲットブロックバッファ部151は、このコントロール部155の制御を受けて、画像メモリ部4の縮小面、中間面あるいは基底面のターゲットフレームの画像データから、指示されたターゲットブロックの画像データを読み込んで、マッチング処理部153に供給する。
参照ブロックバッファ部152は、コントロール部155の制御を受けて、画像メモリ部4の縮小面、中間面あるいは基底面の参照フレームの画像データから、指示されたマッチング処理範囲の画像データを読み込む。そして、参照ブロックバッファ部152は、そのマッチング処理範囲の画像データの中から、参照ブロックの画像データを順次にマッチング処理部153に供給するようにする。
マッチング処理部153は、ターゲットブロックバッファ部151からのターゲットブロックの画像データと、参照ブロックバッファ部152からの参照ブロックの画像データを受ける。そして、マッチング処理部153は、縮小面、中間面および基底面におけるブロックマッチング処理を、コントロール部155の制御にしたがって行う。そして、マッチング処理部153は、参照ベクトル(参照ブロックの位置情報)と、ブロックマッチング処理結果のSAD値とを、ローカル動きベクトル算出部154に供給する。
ローカル動きベクトル算出部154は、SAD値の第1極小値保持部1541と、SAD値の第2極小値保持部1542とを備え、マッチング処理部153からのSAD値から、SAD値の第1極小値と、SAD値の第2極小値とを検出する処理を行う。
ローカル動きベクトル算出部154は、SAD値の第1極小値保持部1541のSAD値の第1極小値およびその位置情報(参照ベクトル)と、SAD値の第2極小値保持部1542のSAD値の第2極小値およびその位置情報(参照ベクトル)とを更新してゆく。ローカル動きベクトル算出部154は、この更新処理をマッチング処理範囲の全ての参照ブロックについてのブロックマッチング処理が終了するまで行なう。
ブロックマッチング処理が終了したときには、SAD値の第1極小値保持部1541には、そのときのターゲットブロックについてのSAD値の第1極小値およびその位置情報(参照ベクトル)が記憶保持される。また、SAD値の第2極小値保持部1542には、SAD値の第2極小値およびその位置情報(参照ベクトル)が、記憶保持される。
ローカル動きベクトル算出部154は、マッチング処理範囲の全ての参照ブロックについてのブロックマッチング処理が終了したときに、SAD値の第1極小値保持部1541に保持されている参照ベクトルの情報(位置情報)を、縮小面、中間面および基底面のそれぞれにおける動きベクトルとして検出する。このローカル動きベクトル算出部154の処理動作については、後で詳述する。
このローカル動きベクトル算出部154からは、この実施形態では、縮小面マッチング処理時には、縮小面動きベクトルMVsが、ローカル動きベクトルLMVとしてコントロール部155に供給される。
階層化ブロックマッチング処理を行なうときには、コントロール部155は、この縮小面動きベクトルMVsの情報から、中間面におけるサーチ範囲を決定する。そして、コントロール部は、ターゲットブロックバッファ部151、参照ブロックバッファ部152およびマッチング処理部153に制御信号を供給して、中間面におけるブロックマッチングを行なうように制御する。
中間面のマッチング処理が終了したときには、ローカル動きベクトル算出部154からは、縮小面動きベクトルMVsと中間面動きベクトルMVmとの合成ベクトルの情報が、ローカル動きベクトルLMVとしてコントロール部155に供給される。
コントロール部155は、この縮小面動きベクトルMVsと中間面動きベクトルMVmとの合成ベクトルの情報から、基底面におけるサーチ範囲を決定する。そして、コントロール部155は、基底面におけるブロックマッチングを行なうように、ターゲットブロックバッファ部151、参照ブロックバッファ部152およびマッチング処理部153に制御信号を供給する。
前述もしたように、階層化ブロックマッチングのいずれの階層までを行なって、当該階層での動きベクトルを、ローカル動きベクトルLMVとして出力するかは、コントローラ部155により制御可能である。
例えば、精度は犠牲にしても、短時間でローカル動きベクトルLMVを得たい場合には、ローカル動きベクトル算出部154は、縮小面ブロックマッチング処理のみをするようにすればよい。また、高精度のローカル動きベクトルLMVを必要とする場合には、ローカル動きベクトル算出部154は、基底面ブロックマッチング処理までの階層化ブロックマッチング処理をするのがよい。さらに、精度と、時間とを考慮した場合には、ローカル動きベクトル算出部154は、中間面ブロックマッチング処理までの階層化ブロックマッチング処理をした方が良い場合もある。
基底面までの階層化マッチング処理が終了したときには、ローカル動きベクトル算出部154からは、縮小面動きベクトルMVsと中間面動きベクトルMVmと基底面動きベクトルMVbとの合成ベクトルの情報が、ローカル動きベクトルLMVとして得られる。このローカル動きベクトルLMVは、グローバル動きベクトル演算部157に供給される。
グローバルモーション算出部157では、受け取ったローカル動きベクトルLMVを、一時保持する。
ローカル動きベクトル算出部154のローカル動きベクトルLMVの算出処理が終了したときには、動きベクトル信頼性指標値算出部156がコントロール部155によりイネーブルとされる。また、ローカル動きベクトル算出部154からは、第1極小値保持部1541のSAD値の最小値MinSADと、第2極小値保持部1542のSAD値の第2極小値Btm2SADとが、動きベクトル信頼性指標値算出部156に供給される。
また、このとき、ターゲットブロックバッファ部151からのターゲットブロックの画像データがローパスフィルタ1591を通じて最大輝度値検出部1592および最小輝度値検出部1593に供給される。そして、最大輝度値検出部1592および最小輝度値検出部1593のそれぞれで検出された最大輝度値MaxTARおよび最小輝度値MinTARが、動きベクトル信頼性指標値算出部156に供給される。
動きベクトル信頼性指標値算出部156では、これに供給される情報を用いて、前述した(式6)にしたがって、動きベクトルの信頼性指標値Ftを算出する。そして、動きベクトル信頼性指標値算出部156は、算出した動きベクトルの信頼性指標値Ftを、グローバルモーション算出部157に供給する。グローバルモーション算出部157では、そのときに供給されているローカル動きベクトルLMVに対応付けて、入力されてきた動きベクトルの信頼性指標値Ftを、一時保持する。
以上の処理が、ターゲットフレームの全てのターゲットブロックについて終了すると、コントロール部155は、グローバルモーション算出部157に、グローバルモーションの算出処理を開始するようにする制御指示信号を供給する。
この実施形態では、グローバルモーション算出部157は、この制御指示信号を受けて、先ず、保持している複数個のローカル動きベクトルLMVについて、対応して保持されている動きベクトル信頼性指標値Ftを用いて、信頼性の判定を行う。この実施形態では、前述した(式7)により、各ローカル動きベクトルLMVについての重み係数Wを算出する。グローバルモーション算出部157は、重み係数W=1である、信頼性の高いローカル動きベクトルLMVのみを抽出する。
そして、抽出した信頼性の高いローカル動きベクトルLMVのみを用いてグローバルモーションGMを算出する演算処理を実行する。そして、グローバルモーション算出部157は、算出したグローバルモーションGMをグローバル動きベクトル算出部158に供給する。
グローバル動きベクトル算出部158は、グローバルモーションGMを、ターゲットブロックの座標位置(例えば中心位置)に適用することにより、そのターゲットブロックのグローバル動きベクトルGMVを算出する。
グローバル動きベクトル算出部158は、算出したグローバル動きベクトルGMVを背景/動被写体判定部150に供給する。背景/動被写体判定部150には、ローカル動きベクトル算出部154からのローカル動きベクトルLMVも供給される。
背景/動被写体判定部150では、前述もしたように、ターゲットブロック毎のローカル動きベクトルLMVと、グローバル動きベクトルGMVとを比較して、ターゲットブロックについての両者の一致度、つまり、背景一致度合いを判定する。この場合に、背景/動被写体判定部150では、ローカル動きベクトルLMVおよびグローバル動きベクトルGMVのそれぞれが対応する参照ブロックについての相関値(SAD値)を比較して、背景と動被写体との判定を行う。
ところで、ローカル動きベクトル算出部154でグローバルモーションを算出するために求めたローカル動きベクトルLMVおよび相関値(SAD値)を、背景/動被写体判定部150における前記の比較用として使用することもできる。
しかし、その場合には、ローカル動きベクトル算出部154では、グローバルモーション算出部157やグローバル動きベクトル算出部158での処理時間分だけ、当該ローカル動きベクトルやSAD値を保持しておく必要がある。この場合、特に、保持しておくSAD値は、グローバル動きベクトルGMVが、どの参照ベクトルに対応するものであるかは判っていないので、各ターゲットブロックのそれぞれについてSAD値テーブルの全てを保持しておく必要がある。そのため、これらローカル動きベクトルLMVやSAD値を保持しておくメモリとして、容量が膨大なものが必要となってしまう。
このことにかんがみ、この実施形態では、ローカル動きベクトル算出部154では、背景/動被写体判定部150における前記比較用のローカル動きベクトルLMVやSAD値は、再計算するようにする。これにより、ローカル動きベクトル算出部154には、ローカル動きベクトルLMVやSAD値を保持しておくメモリは設ける必要はなく、前記メモリの容量の問題は回避できる。
したがって、背景/動被写体判定部150は、再算出されたローカル動きベクトルLMVおよびSAD値を用いて、ターゲットブロックについての背景一致度合いを示すヒット率βを求める。グローバル動きベクトルGMVに一致する参照ベクトル(参照ブロック位置)についてのSAD値も、当該再算出時に取得する。そして、背景/動被写体判定部150は、当該再算出されたローカル動きベクトルLMVやSAD値を用いて、ターゲットブロックが、背景部分か、動被写体部分かを判定するようにする。
背景/動被写体判定部150は、前述したように、ローカル動きベクトルLMVに対応する参照ブロックについてのSAD値と比較すべき、グローバル動きベクトルGMVに対応する参照ブロックについてのSAD値は、画像のノイズ分を反映した値に補正する。
画像のノイズは、一般に、画像の輝度値に応じたものとなる。そこで、この実施形態では、コントラスト算出部159の最大値輝度値検出部1592からの最大輝度値MaxTARと、最小輝度値系部1593からの最小輝度値MinTARが、背景/動被写体判定部150に供給される。
背景/動被写体判定部150は、最大輝度値MaxTARと、最小輝度値MinTARとの差分として、画像の輝度値を検出し、検出した輝度値に応じて、グローバル動きベクトルGMVに対応する参照ブロックについてのSAD値の補正値を決定する。
そして、背景/動被写体判定部150は、その補正後の相関値と、ローカル動きベクトルに対応する参照ブロックについての相関値とを比較する。そして、グローバル動きベクトルGMVに対応する参照ブロックについてのSAD値の補正値の方が、ローカル動きベクトルに対応する参照ブロックについての相関値よりも小さい(相関値は大きい)かどうか判定する。小さいときには、当該ターゲットブロックは、背景部分と評価判定する。
背景/動被写体判定部150は、ターゲットブロックが背景部分であると見なせるようなヒット率βのときには、NR処理用動きベクトルMVnrとして、グローバル動きベクトルGMVを出力する。それ以外のときには、背景/動被写体判定部150は、ターゲットブロックに対して、NR処理用動きベクトルMVnrとして、ローカル動きベクトルLMVを出力する。
前述したように、背景/動被写体判定部150からのNR処理用動きベクトルMVnrは、動き補償画生成部16に供給される。
動き補償画生成部16では、動きベクトル算出部15を通じて送られてくる参照フレームの画像データREFvに対して、NR処理用動きベクトルMVnrに対応する変形処理が施されて、動き補償画像のデータMCvが生成される。そして、生成された動き補償画像のデータMCvが加算部17に供給される。
また、背景/動被写体判定部150は、求めたヒット率βは、加算率計算部21に供給する。加算率計算部21は、ヒット率βに基づいて、ターゲット画像に対する動き補償画像の加算率αを算出する。
この場合、加算率αは、ブロック単位あるいは画素単位で計算をすることができる。画素単位で計算をする場合であっても、ヒット率βは、ブロック単位であるので、当該ヒット率βが加算率の計算に関与するのは、ブロック単位であるのは言うまでもない。
加算率αをブロック単位に計算する場合には、ヒット率βのみに応じた加算率αを計算することもできる。勿論、ヒット率β以外の他の加算率計算要素を加味して、加算率αを計算することもできる。この実施形態では、ヒット率βのみではなく、後述もするように、ターゲット画像と動き補償画像との画素単位の違い、ターゲット画像のノイズなどの要因を加味して加算率αを計算する。
加算率計算部21で求められた加算率αは、加算部17に供給される。加算部17は、これに送られてくるターゲット画像の画像データTGvに対して、動き補償画像の画像データMCvを、加算率αで加算する。
この実施形態においては、加算部17では、ターゲットブロックの背景一致度合い(ヒット率β)に応じた加算率で、ターゲット画像と動き補償画像とが重ね合わされる。つまり、静止画部分では、ターゲット画像に対する動き補償画像の加算率が高くなり、動被写体部分では、ターゲット画像に対する動き補償画像の加算率が低くなる。
こうして、この実施形態では、背景部分と動被写体部分とでは、それぞれに適切な加算率で画像の重ね合わせをすることができる。したがって、画像重ね合わせにより得られたNR画像は、良好なものとなる。
しかも、この実施形態におけるグローバルモーションおよびグローバル動きベクトルGMVは、信頼性の高いローカル動きベクトルLMVから生成されたものであるので、確度の高い動きベクトルであり、その点でも良好なNR画像を得ることができる。
[NR画像生成のための全体の処理の流れ]
図18は、画像メモリ4に取り込んだ撮像画像について、NR画像を生成する処理の流れを示すフローチャートである。
先ず、動きベクトル算出部15では、ローカル動きベクトル算出部154でブロックマッチングによるローカル動きベクトルLMVの検出を行なう(ステップS1)。次に、動きベクトル信頼性指標値算出部156は、検出されたローカル動きベクトルLMVについての信頼性の指標値Ftを、ローカル動きベクトル算出部154で算出されたSAD値の第1極小値MinSADと、第2極小値Btm2SADとを用いて算出する(ステップS2)。
次に、グローバルモーション算出部157は、算出された信頼性の指標値Ftに基づいて、信頼性の高いローカル動きベクトルLMVを抽出する。そして、グローバルモーション算出部157は、当該抽出した信頼性の高いローカル動きベクトルLMVのみを用いてグローバルモーションGMを算出する(ステップS3)。
次に、ステップS3で算出されたグローバルモーションGMを用いて、ターゲットブロック毎のグローバル動きベクトルGMVを算出する(ステップS4)。
また、ローカル動きベクトル算出部154で、再ブロックマッチング処理を行なって、ローカル動きベクトルLMVを再検出する(ステップS5)。そして、ローカル動きベクトルLMVが検出された参照ブロック位置(参照ベクトル)におけるSAD値(MinSAD)を保持すると共に、ステップS4で算出されたグローバル動きベクトルGMVに対応する参照ブロックについてのSAD値も保持しておく。なお、このときには、ローカル動きベクトルLMVの信頼性の指標値Ftの算出の必要はない。
次に、背景/動被写体判定部150は、ステップS5で算出されたローカル動きベクトルLMVと、ステップS4で求められたグローバル動きベクトルGMVとを比較することで、各ターゲットブロックについての背景一致度合いを評価し、ヒット率βを求める。そして、さらに、各ターゲットブロックについてのNR処理用動きベクトルMVnrを定め、動き補償画生成部16に出力する(ステップS6)。
このステップS6でのローカル動きベクトルLMVとグローバル動きベクトルGMVとの比較においては、ローカル動きベクトルLMVに対応する参照ブロックについてのSAD値と、グローバル動きベクトルGMVに対応する参照ブロックのついてのSAD値とを比較する。さらに、グローバル動きベクトルGMVに対応する参照ブロックのついてのSAD値については、上述したように、画像のノイズに応じた補正を加えるようにする。
次に、動き補償画生成部16では、ステップS6で定められたNR処理用動きベクトルMVnrを用いて、参照ブロック毎に動き補償画を生成し、加算部17に出力する(ステップS7)。
次に、加算率計算部21は、ステップS6で求められたヒット率βを用いて、上述したようにして、この例では、画素毎の加算率αを算出し、加算部17に供給する(ステップS8)。
次に、加算部17は、ターゲット画像に、ステップS7で生成された動き補償画を、ステップS8で算出された加算率αで画素毎に重ね合わせてNR画像を生成する(ステップS9)。以上で、NR画像の処理は終了となる。
なお、この図18は、あるターゲットフレームの1枚についての処理動作を示したものである。3枚以上の複数枚の画像を重ね合わせる場合には、生成したNR画像をターゲットフレームとすると共に、新たに重ね合わせる画像を参照フレームとして、図18の処理を繰り返す。
次に、動きベクトル算出部15の主要な各部の詳細な処理動作について、さらに説明する。
[ローカル動きベクトル算出部154での処理動作]
この実施形態のローカル動きベクトル算出部154では、SAD値についての極小値を検出するため、注目画素(自画素)についての差分値と、当該注目画素の周囲の画素の差分値とを比較するようにする。すなわち、図19において、点線で囲んで示すように、位置Poを判定対象点(画素)として、当該判定対象点位置PoのSAD値と、当該判定対象点位置Poの周囲近傍の8個の画素のSAD値とを比較する。そして、判定対象点の画素のSAD値が、点線で囲んで示す領域の9個のSAD値の中で最小値(ローカルミニマムという)であるか否か判断する。
そして、判定対象点のSAD値が、ローカルミニマムであると判断されたときには、それまで保持されていたSAD値の極小値と比較して、保持されていたSAD値の極小値よりも小さいか否か判断する。そして、判定対象点のSAD値が、保持されていたSAD値の極小値よりも小さいと判断されると、保持するSAD値の極小値を、新たに検出されたローカルミニマムのSAD値に更新してゆく。
上述したようなローカルミニマムのSAD値を検出するための構成として、この実施形態では、ローカル動きベクトル算出部154は、SAD値を保持しておくSADテーブルのバッファメモリとして、その規模を小さくするように工夫している。すなわち、参照ブロックを、1ピクセル単位でサーチする場合には、SAD値を保持しておくSADテーブルのバッファメモリとして、図19に示すように、ターゲットブロックの水平方向のサイズの2ライン分+3個分のSAD値の保持が可能なものを用意する。
図19から分かるように、ターゲットブロックの水平方向のサイズの2ライン分+3個分のSAD値が、バッファメモリに書き込まれると、判定対象点位置Poでのローカルミニマムの判定が可能となる。
バッファメモリのサイズを最小にするために、ここでは、図19に示すように、極小値評価(ローカルミニマム検出)で使われなくなったSAD値が記憶されていたメモリ位置Paには、新規に入力されるSAD値が上書きされる。すなわち、新規に入力されるSAD値は、順番として図19のメモリ位置Pbに書き込まれるのであるが、このメモリ位置Pbではなく、使われなくなったメモリ位置Paを再利用することで、メモリのハードウエア規模の増大を抑えるようにしている。
なお、この実施形態では、ローカル動きベクトル算出部154は、ローカルミニマムを検出するためのバッファの他に、前述した第1極小値保持部1541と、第2極小値保持部1542とを備えるものである。
以上の処理が基本的な処理であり、この基本的な処理を、第1極小値と第2極小値とに適用することにより、SAD値の最小値およびSAD値の第2極小値を検出するようにする。
この実施形態では、ローカル動きベクトル算出部154では、縮小面と、中間面と、基底面とで、同じ動作をするものであるが、この実施形態では、基底面で、ローカル動きベクトルLMVを検出するようにすると共に、その信頼性指標値を算出するようにする。したがって、SAD値の第2極小値が必要になるのは、この例では、基底面のみでよく、縮小面および中間面では、SAD値の第2極小値の算出保持は、省略するようにしてもよい。
図20は、このローカル動きベクトル算出部154における第1極小値および第2極小値の検出処理動作の流れを示すフローチャートである。
先ず、マッチング処理部153からのSAD値を取り込む(ステップS101)。そして、判定対象点位置PoのSAD値と、その周囲8個のSAD値との比較をする(ステップS102)。その比較の結果、判定対象点位置PoのSAD値は、ローカルミニマムであるか否か判別する(ステップS103)。
ステップS103で、判定対象点位置PoのSAD値は、ローカルミニマムではないと判別したときには、ステップS101に戻り、次のSAD値の取り込みを行う。
ステップS103で、判定対象点位置PoのSAD値は、ローカルミニマムであると判別したときには、保持しているSAD値の第1極小値および第2極小値と、判定対象点位置PoのSAD値とを比較する(ステップS104)。
そして、判定対象点位置PoのSAD値が、保持しているSAD値の第1極小値よりも小さいか否か判別する(ステップS105)。小さいと判別したときには、第1極小値保持部1541に保持しているSAD値を、第2極小値保持部1542に保持するように更新すると共に、判定対象点位置PoのSAD値を第1極小値保持部1541に保持するようにする(ステップS106)。
そして、ターゲットブロックに対して、全ての参照ブロックとの間のSAD値についての算出処理が完了したか否か判別し(ステップS109)、完了してはいないと判別したときには、ステップS101に戻って、次のSAD値を取り込む。また、ステップS109で、ターゲットブロックに対して、全ての参照ブロックとの間のSAD値についての算出処理が完了したと判別したときには、この処理ルーチンを終了する。
また、ステップS105で、判定対象点位置PoのSAD値が、保持しているSAD値の第1極小値より大きいと判別したときには、判定対象点位置PoのSAD値が、保持しているSAD値の第2極小値より小さいか否か判別する(ステップS107)。小さいと判別したときには、第2極小値保持部1542に保持するSAD値を、判定対象点位置PoのSAD値に更新するようにする(ステップS108)。
そして、ステップS108の次には、ステップS109に進み、ターゲットブロックに対して、全ての参照ブロックとの間のSAD値についての算出処理が完了したか否か判別する。完了してはいないと判別したときには、ステップS101に戻って、次のSAD値を取り込む。また、ステップS109で、ターゲットブロックに対して、全ての参照ブロックとの間のSAD値についての算出処理が完了したと判別したときには、この処理ルーチンを終了する。
また、ステップS107で、判定対象点位置PoのSAD値が、保持しているSAD値の第2極小値より小さくはないと判別したときにもステップS109に進む。そして、このステップS109で、ターゲットブロックに対して、全ての参照ブロックとの間のSAD値についての算出処理が完了したか否か判別する。
ステップS109で、ターゲットブロックに対して、全ての参照ブロックとの間のSAD値についての算出処理が完了してはいないと判別したときには、ステップS101に戻って、次のSAD値を取り込む。また、ステップS109で、ターゲットブロックに対して、全ての参照ブロックとの間のSAD値についての算出処理が完了したと判別したときには、この処理ルーチンを終了する。
この図20の処理フローチャートは、縮小面、中間面および基底面で同様とすることができる。この場合に、縮小面および中間面では、第1極小値保持部1541に最終的に保持されたSAD値を、SAD値の最小値MinSADとして検出し、それに対応する参照ベクトルを、縮小面動きベクトルMVsおよび中間面動きベクトルMVmとして検出して、出力することができる。
また、基底面では、第1極小値保持部1541に最終的に保持されたSAD値を、SAD値の最小値MinSADとして検出し、それに対応する参照ベクトルを、基底面動きベクトルMVbとして検出して出力することができる。また、基底面では、第1極小値保持部1541に最終的に保持されたSAD値(最小値MinSAD)と、第2極小値保持部1542に最終的に保持されたSAD値(SAD値の第2極小値)とを、動きベクトル信頼性指標値算出部156に供給するようにする。
[グローバルモーション算出部157での処理動作]
<拡張したアフィン変換について>
この実施形態では、多数個のローカル動きベクトルLMVから、グローバルモーションを算出(推定)する。そして、算出したグローバルモーションから、グローバル動きベクトルGMVを算出(グローバルモーションを推定)する。この場合において、グローバルモーションをアフィン変換で表現する方法を用いる。
しかしながら、通常のアフィン変換は、“あおり”に対応できない欠点がある。“あおり”とは、手ブレのピッチ軸(鉛直方向軸)またはヨー軸(鉛直方向に直交する水平方向軸)の回転成分によってもたらされる現象で、正対した矩形平面が、図21に示すように、台形に変形してしまうことから、台形歪みやキーストーンとも呼ばれる。
すなわち、図21(A)の下側に示すように、カメラCAMの光軸Lzが、被写体OBJの矩形平面に直交するように、カメラCAMが被写体OBJに正対しているときには、被写体OBJの矩形平面の撮像画像は、図21(A)の上側に示すように、そのまま矩形平面となる。
これに対して、例えば図21(B)の下側に示すように、カメラCAMの光軸Lzが、被写体OBJに正対せずに、角度θだけピッチ軸回転(鉛直な面内で回転)した場合には、被写体OBJの矩形平面の撮像画像は、図21(B)の上側に示すように、左右方向(画像の水平方向)の長さが、角度θに応じて線形に変化する台形となる。
なお、図示は省略するが、カメラCAMの光軸Lzが、被写体OBJに正対せずに、角度θだけヨー軸回転(水平面内で回転)した場合には、被写体OBJの矩形平面の撮像画像は、上下方向(画像の垂直方向)の長さが、角度θに応じて線形に変化する台形となる。
手ブレによって、上述のように撮像されてしまった画像を、元通り正対した形に戻す処理が、“あおり”補正または台形補正であるが、アフィン変換のパラメータではこれを表現できない。すなわち、例えば、図21(B)に示されるような“あおり”台形画像を、長方形に戻す“あおり”補正を考えた場合、鉛直軸(y軸)に沿って上方を水平縮小し、下方を水平拡大すれば良い。ところが、アフィン変換のパラメータのうち、水平拡大縮小に関するパラメータはaであり、このパラメータaが一定値のため、アフィン変換ではこの補正に対応できないのである。
このような問題を回避するため、アフィン変換の代わりに正射影変換を用いることが考えられている。正射影変換は、図22の(式8)で表され、3次元空間における、任意の平面から平面への射影変換を表すことが可能である。
しかし、ここで想定するような、多数のベクトルに対して1つのグローバルモーションを特定するようなケースにおいて、正射影変換を適用するのは極めて難しい。図22の(式8)の形状から最小自乗法を用いるのは難しく、他の手法を用いた場合でも、膨大な演算が必要となるからである。
現実的な問題として、実際の撮像対象は立体物であるため、観測されたローカル動きベクトルには、互いに距離の異なる被写体が多数含まれる。そうした場合、正射影変換の当てはめは、単なる近似に過ぎないことになる。したがって、正射影変換の一般解を解くために要する膨大なコストを勘案すると、コスト対効果として釣り合わない、とする判断が妥当と言える。
より簡易的に正射影変換を適用する場合には、6つのベクトルに対して解を求める方法が採用可能である。求めるべきパラメータが12個あるため、6つのベクトルの座標を代入すれば、6元1次方程式が6本×2組でき、これは、6×6行列の逆行列計算により、比較的容易に解が導き出せるからである。したがって、多数のローカルベクトルから6つのベクトルを、適切に選択できさえすれば良いことになる。
しかしながら、撮像画像に動被写体が含まれている場合を考慮すると、ローカルベクトルの精度のそれぞれは、それほど期待できないので、多くのローカル動きベクトルの中から、精度の高いベクトルのみを抽出することは困難である。このため、多数のローカル動きベクトルから6つのベクトルを、適切に選択することは非常に困難である。
この実施形態では、以上の点にかんがみ、画像に“あおり”変形があっても、良好にグローバルモーションを検出することができるようにする手法を用いる。
すなわち、この実施形態では、前述の図69に示した従来の通常のアフィン変換を変形した拡張したアフィン変換(以下、拡張アフィン変換という)を用いる。
図23で実線に示すような“あおり”台形画像を、図23で点線で示す矩形(長方形)に戻す“あおり”補正を考えた場合、図23において、矢印により示すように、鉛直軸(y軸)に沿って、台形画像の上方半分を水平縮小し、下方半分を水平拡大すれば良い。
通常のアフィン変換では、アフィン変換のパラメータa,b,c,d,e,fのうち、水平拡大縮小に関するパラメータはaであり、このパラメータaが一定値のため、通常のアフィン変換では、この“あおり”補正に対応できない。
そこで、図23の下側に示すように、パラメータaをy軸に沿って値が変化するように、q0・y+r0と置き換えれば、水平方向の拡大縮小率が、鉛直軸に応じて線形に変化する変換となる。すなわち、パラメータaを、“あおり”補正のために、y軸の変数yの関数に置き換える。ここでは、図23の“あおり”補正のためには、線形な関数、つまり、パラメータaは、一次関数q0・y+r0とすればよいことになる。
図23は、前述したピッチ軸の回転に伴う“あおり”の補正を考慮したものであるが、ヨー軸の回転に伴う“あおり”の補正や、ピッチ軸およびヨー軸の両者の回転が合成された“あおり”の補正を考慮する必要がある。
そこで、この実施形態では、図23を用いて説明した考え方を拡張する。すなわち、アフィン変換を、任意の軸に沿って、その軸と垂直な方向に拡大縮小する形にするには、パラメータa,b,d,eを、図24の(式9)に示すように、それぞれpn・x+qn・y+rn(n=0,1,2,3)と置き換えるようにする。
ここで、アフィンパラメータa,b,d,eは、画像の変形に関与するパラメータであるのに対して、アフィンパラメータc,fは、画像の左右、上下方向のシフトに関与するパラメータである。よって、アフィンパラメータc,fについては、関数への置き換えはしない。
この(式9)のように表すと、計14個のパラメータとなり、拡張アフィン変換は、煩雑性が高いように見えるが、(式9)を展開して整理すれば、結局12個のパラメータを使って、図25の(式10)の形となる。
この拡張アフィン変換の式形状であれば、複雑な式にはなるものの、最小自乗法によって、複数のローカル動きベクトルに対する解を、一意に導き出すことが可能である。手法はアフィン変換と同じであるため、最終結果のみを、図26〜図30に、それぞれ(式11〜(式15)として示す。
なお、この実施形態では、図24に示したように、画像の変形に関与するアフィンパラメータa,b,d,eの全てを関数に置き換えるようにしたが、画像の変形が特定の方向のみである場合には、その方向に関するパラメータのみを関数に置き換えるようにすればよい。例えば、図23の上方に示した変形のみを考慮する場合には、図23の下側に示すように、パラメータaのみを、関数に置き換えればよい。
また、上述の例では、置き換える関数は、線形変位を想定したため、一次関数としたが、曲線的な変位を想定する場合には、2次以上の関数とするようにしてもよい。
<拡張したアフィン変換を用いたグローバルモーションの算出>
不特定多数のベクトルから、最も好適なグローバルモーションを導出する手法として、この実施形態では、図31および図32のフローチャートに示す方法を用いる。この方法は、信頼性の高いブロックの中から、動被写体等の、グローバルモーションに適合しにくいブロックのローカル動きベクトルを徐々に排除しながら、最小自乗法を用いて、グローバルモーションのパラメータの収束を図る方法である。
この図31、図32のフローチャートの処理においては、拡張アフィン変換を導入することにより、ベクトル精度の低い多くのローカル動きベクトルから、動被写体等のエラーベクトルを排除しながら、“あおり”も含めた、最適なグローバルモーションを、現実的な演算コストで導出することが可能となる。
ところで、この実施形態の拡張アフィン変換は、変形パラメータが多く、柔軟であるが故に、グローバルモーションの収束演算において、動被写体やノイズ等の誤った動きベクトルにも対応してしまい、これら誤った動きベクトルを排除できない可能性がある。
そのため、この実施形態では、図31,32に示すように、収束演算ループの初期においては、通常のアフィン変換を用いて誤った動きベクトル(エラーベクトルという)の排除を行い、その後、拡張アフィン変換を用いた収束演算を行なうようにする。これは、通常のアフィン変換を用いることで、あおり成分のベクトルを排除しない程度に、ベクトルエラーが小さくなってから、拡張アフィン変換を用いて、あおり成分にも対応した高精度の収束を試みる手法を用いるようにするためである。
また、この実施形態では、収束演算の各回で求められたグローバルモーションGMから求められる動きベクトル(グローバル動きベクトル)と、検出された動きベクトル(上述のローカル動きベクトルLMV)との差としてのベクトルエラーの最大値を検出する。
そして、検出したベクトルエラーの最大値が、予め定めた閾値よりも大きい場合には、通常のアフィン変換を継続し、検出したベクトルエラーの最大値が、予め定めた閾値以下になったら、拡張アフィン変換を用いる収束演算を行なうようにする。
図31および図32のフローチャートに沿って説明する。
先ず、動きベクトル算出部157は、保持している複数個のローカル動きベクトルLMVについて、それぞれの動きベクトル信頼性指標値Ftと、予め定めた閾値とを比較する。そして、その比較結果から、動きベクトル信頼性指標値Ftが、予め定めた閾値よりも大きい信頼性の高いローカル動きベクトルLMVのターゲットブロック(以下、説明の簡単のためブロックと記載)のみを選定する(ステップS201)。この処理は、前述の(式7)を用いて説明したように、重み係数Wとして、1と0との2値を用いる場合に相当する。
次に、動きベクトル算出部157は、収束演算の収束ループが最初の1回目であるか否か判別する(ステップS202)。最初の1回目であると判別したときには、動きベクトル算出部157は、選定した複数のブロックのローカル動きベクトル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を導出する複数のブロックから排除する(図32のステップS211)。
次に、ステップS211でのブロック排除の結果、残存するブロックの数が予め定めた数の閾値θcよりも少ないか否か判別する(ステップS212)。ステップS212で、残存するブロックの数が閾値θcよりも少なくはないと判別したときには、ステップS202に戻り、残存するブロックを選定したブロックとして、ステップS202以降の処理を繰り返す。
残存するブロックの数が閾値θcよりも少ないときには、適切なグローバルモーションGMが得られないので、対象となっている参照フレームの画像は、この実施形態の画像の重ね合わせには使用できない。そこで、ステップS212で、残存するブロックの数が閾値θcよりも少ないと判別したときには、当該参照フレームについてのその後の処理を全て行わないようにスキップする(ステップS213)。
次に、ステップS202で、収束演算の収束ループが最初の1回目ではないと判別したときには、動きベクトル算出部157は、ステップS207で求めた各ブロックの誤差Enの最大値Emaxが、予め定めた閾値θdより大きいか否か判別する(ステップS204)。
ここで、閾値θdは、通常のアフィン変換を用いてグローバルモーションGMの演算を行い、上述のステップS211のようにして、エラーベクトルの排除を行うときに、あおり成分のベクトルを排除しない程度の値に選定される。
ステップS204で、誤差Enの最大値Emaxが、予め定めた閾値θdより大きいと判別したときには、動きベクトル算出部157は、ステップS203に進み、通常のアフィン変換を用いて、グローバルモーションGMを導出するようにする。つまり、拡張アフィン変換のパラメータを算出する。そして、前述したステップS203以降の処理を繰り返す。
また、ステップS204で、誤差Enの最大値Emaxが、予め定めた閾値θd以下になった判別したときには、動きベクトル算出部157は、選定した複数のブロックのローカル動きベクトルLMVのみを用いると共に、拡張アフィン変換を用いて、グローバルモーションを導出する(ステップS205)。そして、ステップS205の後は、上述したステップS206以降の処理を繰り返す。
そして、図31のステップ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との両方が、予め定められた閾値よりも大きいか否か判別する。そして、閾値よりも大きいと判別したときには、通常アフィン変換を用いた演算を行い、閾値よりも小さくなったと判別したときには、拡張アフィン変換を用いた演算を開始するようにしてもよい。
なお、手ブレ補正の範囲が、光学ズーム倍率やセット形状から同定できることと同様に、最大手ブレ量からあおり成分の最大値が得られるため、上記の閾値の同定は、比較的容易である。
グローバル動きベクトル演算部157は、以上のようにして算出したグローバルモーションGMに基づいて、各ターゲットブロック毎のグローバル動きベクトルGMVを算出する。すなわち、算出したグローバルモーションGMについての拡張アフィン変換のパラメータa〜l(図25参照)を用いて、図25の(式10)により、各ターゲットブロック毎の動きベクトル(理論上のローカル動きベクトルLMVsに相当)を求める。図25の(式10)において、x、yは、各ターゲットブロックの中心位置座標が用いられる。この求めた動きベクトルが、各ターゲットブロック毎のグローバル動きベクトルGMVとなる。
そして、動き補償画生成部16には、上述のようにして求められた、各ターゲットブロック毎のグローバル動きベクトルGMVが供給される。そして、動き補償画生成部16では、その各ターゲットブロック毎のグローバル動きベクトルGMVを用いて、ターゲットブロック毎の動き補償画を生成し、生成したブロック毎の動き補償画を加算部17に供給する。
この実施形態において、前述の図12のノイズの多い画像について求めた各ターゲットブロック毎のグローバル動きベクトルを、図33に示す。図33では、各ターゲットブロック毎のグローバル動きベクトルを、白線の矢印で示している。
[背景/動被写体判定部150の構成例および処理動作]
背景/動被写体判定部150では、上述したように、グローバル動きベクトル算出部158で算出されたグローバル動きベクトルGMVに対応する参照ブロックについてのSAD値を、ローカル動きベクトル算出部154での再ブロックマッチングの際に取得する。そして、取得したSAD値を、前述したように画像のノイズに応じて補正値により補正するようにする。その補正値による補正の方法としては、この実施形態では、2通りの方法を提供する。
<第1の例;オフセット付加によるSAD値の補正>
図34は、この第1の例の考え方を説明するための図である。図34は、横軸にサーチ範囲を取り、縦軸にSAD値を取ったときの、1個のターゲットブロックについてのSADテーブルの内容(SAD値)を示す図である。横軸の各値は、参照ブロック位置(参照ベクトル)となり、実線がSADテーブルの内容を示すものとなる。これは、図15に示したものと全く同様である。
この図34において、最小SAD値となる参照ブロックの位置(つまり参照ベクトル)501は、図15と同様に、ブロックマッチングによりローカル動きベクトルLMVとして検出される。一方、グローバル動きベクトルGMVとなる参照ブロックの位置が、図32において、位置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 ・・・ (式16)
となる。
ここで、このオフセット値OFSは、あまり大きな値を設定すると、動被写体の動きベクトルまで、最小SAD値として判定されるようになってしまう。そこで、この実施形態では、オフセット値OFSは、ローカル動きベクトルの信頼性の指標値Ftについての閾値th(式7参照)よりも小さい値に設定される。
そして、背景/動被写体判定部150では、その補正後SAD値MinSAD_Gと、ローカル動きベクトルLMVでのSAD値(MinSAD)とを比較する。その比較の結果、MinSAD_G<MinSADであれば、当該ターゲットブロックについてのSAD値の最小値は、グローバル動きベクトルGMVに対応する参照ブロックについてのSAD値の補正値であるMinSAD_Gであると評価する。図34は、MinSAD_G<MinSADである場合を示している。
すなわち、図34のように、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とが不一致の場合が含まれるからである。
図35に、この第1の例の場合の背景/動被写体判定部150の構成例(機能ブロック図)を、その周辺部と共に示す。
図35の例においては、背景/動被写体判定部150は、SAD_GMV検出部1501と、オフセット減算部1502と、オフセット生成部1503と、比較判定部1504とを備えて構成される。
この例の場合、マッチング処理部153からの再ブロックマッチング時に算出されたSAD値および各参照ブロックの位置情報(参照ベクトルの情報)が、ローカル動きベクトル算出部154に供給される。ローカル動きベクトル算出部154は、再ブロックマッチング時の最小SAD値MinSADを検出し、ローカル動きベクトルLMV(参照ブロックの位置情報(参照ベクトルの情報))を算出する。そして、ローカル動きベクトル算出部154は、再ブロックマッチング処理の結果、得られたローカル動きベクトルLMVと、最小SAD値MinSADとを比較判定部1504に供給する。
マッチング処理部153からの再ブロックマッチング時に算出されたSAD値および各参照ブロックの位置情報(参照ベクトルの情報)は、SAD_GMV検出部1501にも供給される。SAD_GMV検出部1501は、グローバル動きベクトルGMVに一致する参照ベクトルの参照ブロックについてのSAD値SAD_GMVを検出し、検出したSAD値SAD_GMVをオフセット減算部1502に供給する。
オフセット減算部1502では、オフセット生成部1503からのオフセット値OFSを、SAD_GMV検出部1501からのSAD値SAD_GMVから減算して、補正後SAD値MinSAD_Gを生成する。そして、オフセット減算部1502は、生成した補正後SAD値MinSAD_Gを比較判定部1504に供給する。
オフセット生成部1503は、画像のノイズに応じたオフセット値OFSを生成して、オフセット減算部1502に供給する。画像のノイズは、画像の輝度値に応じたものとなることにかんがみ、この例では、種々の輝度値とオフセット値OFSとの対応テーブルの情報がオフセット生成部1503に記憶されている。
オフセット生成部1503は、最大輝度値検出部1592からの最大輝度値MaxTARと最小輝度値検出部1593からの最小輝度値MinTARとの差としてターゲットブロックの輝度値を算出する。そして、オフセット生成部1503は、算出したターゲットブロックの輝度値を引数として、前記対応テーブルを検索し、前記引数の輝度値に対応するオフセット値OFSを取得するようにする。
比較判定部1504は、前述したように、ローカル動きベクトルLMVに対応する最小SAD値MinSADと、オフセット減算部1502からの補正後SAD値MinSAD_Gとを比較し、その比較結果に応じて、ヒット率βを生成して、出力する。
また、比較判定部1504には、ローカル動きベクトル算出部154からの再算出されたローカル動きベクトルLMVと、グローバル動きベクトル算出部158からのグローバル動きベクトルGMVも供給される。
そして、比較判定部1504は、MinSAD_G<MinSADである場合には、背景一致度合いが高いので、グローバル動きベクトルGMVをNR処理用ベクトルMVnrとして、動き補償画生成部16に出力する。また、比較判定部1504は、MinSAD_G<MinSADでないときには、背景一致度合いが低いので、ローカル動きベクトルLMVをNR処理用ベクトルMVnrとして、動き補償画生成部16に出力する。
なお、グローバル動きベクトルGMVのSAD値検出部1501およびオフセット減算部1502は、ローカル動きベクトル算出部154に含まれるように構成しても良い。その場合には、ローカル動きベクトル算出部154は、再ブロックマッチングを行いながら、グローバル動きベクトルGMVに対応する参照ブロックについてのSAD値SAD_GMVを検出し、オフセットOFSの減算演算を行なうようにする。
<背景/動被写体判定処理の流れ>
図35の構成によるローカル動きベクトル算出部154での再ブロックマッチング処理および背景/動被写体判定部150での背景一致度合い評価処理の流れを、図36および図37のフローチャートを参照して更に説明する。この図36および図37の処理は、コントロール部155の制御に基づいて、各部が実行する。なお、この図36および図37の例は、SAD_GMV検出部1501およびオフセット減算部1502は、ローカル動きベクトル算出部154に含まれるように構成されている場合である。
先ず、コントロール部155の制御により、再ブロックマッチングが開始され、ターゲットブロックバッファ部151に最初のターゲットブロックが設定される(ステップS301)。次に、コントロール部155の制御により、参照ブロックバッファ152にバッファリングされているマッチング処理範囲の参照フレームの画像データのうちから、ブロックマッチング処理する参照ブロックが設定される(ステップS302)。
マッチング処理部153は、設定されたターゲットブロックと、設定された参照ブロックとについてブロックマッチング処理を行い、SAD値を計算する。そして、マッチング処理部153は、求めたSAD値を、参照ブロックの位置情報(参照ベクトル)と共に、ローカル動きベクトル算出部154に供給する(ステップS303)。
ローカル動きベクトル算出部154は、参照ベクトルがグローバル動きベクトルGMVと一致しているか否か判別する(ステップS304)。これは、SAD_GMV検出部1501の処理動作に相当する。
ステップS304で、参照ベクトルがグローバル動きベクトルGMVとは一致していないと判別したときには、ローカル動きベクトル算出部154では、最小SAD値MinSADと、その参照ブロック位置(参照ベクトル)との更新処理を行なう(ステップS305)。つまり、それまでに保持されている最小SAD値MinSADと、新たに算出したSAD値とを比較して、小さい方のSAD値を最小SAD値MinSADとして保持すると共に、参照ブロック位置(参照ベクトル)も最小SAD値を呈するものに更新する。
次に、コントロール部155は、サーチ範囲内の全ての参照ブロックついてのターゲットブロックとのブロックマッチングが終了したか否か判別する(ステップS308)。
そして、ステップS308で、サーチ範囲内の全ての参照ブロックついての処理が終了してはいないと判別したときには、コントロール部155は、次の参照ブロックを設定する(ステップS309)。そして、ステップS302に戻り、上述したこのステップS302以降の処理を繰り返す。
また、ステップS304で、参照ベクトルがグローバル動きベクトルGMVと一致したと判別したときには、ローカル動きベクトル算出部154では、そのSAD値SAD_GMVからオフセット値OFSを減算する(ステップS306)。そして、その減算結果を補正後SAD値MinSAD_Gとして、その参照ブロック位置(参照ベクトル=グローバル動きベクトルGMV)とを保持する(ステップS307)。
そして、ステップS308に進み、サーチ範囲内の全ての参照ブロックついての処理が終了したか否か判別する。
そして、ステップS308で、サーチ範囲内の全ての参照ブロックついての処理が終了したと判別したときには、ローカル動きベクトル算出部154は、ローカル動きベクトルLMVと、最小SAD値MinSADを検出し、比較判定部1504に供給する。また、ローカル動きベクトル算出部154は、補正後SAD値MinSAD_Gも、比較判定部1504に供給する(図37のステップS311)。
そして、背景/動被写体判定部150の比較判定部1504は、最小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より大きいと判別したときには、比較判定部1504は、グローバル動きベクトルGMVを用いた背景一致度合いの判定を行わず、ヒット率β=0.25とする(ステップS313)。β=0としないのは、閾値TH1より大きいSAD値を呈するターゲットブロックの中にも、背景と一致しているブロックも存在するかもしれないことを考慮したものである。
そして、比較判定部1504は、再算出されたローカル動きベクトルLMVを、当該ターゲットブロックのNR処理用動きベクトルとして動き補償画生成部16に出力する(ステップS314)。
次に、コントロール部155は、ターゲットフレーム内の全てのターゲットブロックについての処理が終了したか否か判別し(ステップS320)、終了していなければ、次のターゲットブロックを設定する(ステップS321)。そして、ステップS302に戻り、コントロール部155の制御の下に、上述したステップS302以降の処理を繰り返す。
また、ステップS312で、最小SAD値MinSADが、前記閾値TH1より小さいと判別したときには、比較判定部1504は、最小SAD値MinSADと、補正後SAD値MinSAD_Gとを比較する(ステップS315)。そして、比較判定部1504は、MinSAD>MinSAD_Gであるか否か判別し(ステップS316)、そうではないと判別したときには、ターゲットブロックは背景には一致していないとして、ヒット率βは、β=0とする(ステップS317)。
このステップS317の次には、ステップS314に進み、比較判定部1504は、再算出されたローカル動きベクトルLMVを、当該ターゲットブロックのNR処理用動きベクトルとして動き補償画生成部16に出力する。そして、ステップS320に進み、前述したステップS320以降の処理を繰り返す。
また、ステップS316で、MinSAD>MinSAD_Gであると判別したときには、ターゲットブロックは背景に一致している度合いが高いとして、ヒット率βは、β=0.75とする(ステップS318)。そして、比較判定部1504は、グローバル動きベクトルGMVを、当該ターゲットブロックのNR処理用動きベクトルとして動き補償画生成部16に出力する(ステップS319)。
そして、このステップS319の次には、ステップS320に進み、コントロール部155は、ターゲットフレーム内の全てのターゲットブロックについての処理が終了したか否か判別する。このステップS320で、ターゲットフレーム内の全てのターゲットブロックについての処理が終了していないと判別したときには、コントロール部155は、次のターゲットブロックを設定し(ステップS321)、その後、ステップS302に戻る。
また、ステップS320で、ターゲットフレーム内の全てのターゲットブロックについての処理が終了したと判別したときには、コントロール部155は、この背景/動被写体判定処理動作を終了する。
なお、上述の実施形態では、グローバル動きベクトル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 ・・・ (式17)
となる。
図38に、この第2の例の場合の背景/動被写体判定部150の構成例(機能ブロック図)を、その周辺部と共に示す。
この図38の例は、前述した図35の例の構成において、オフセット減算部1502の代わりに、ゲイン乗算部1505を設け、また、オフセット生成部1503の代わりにゲイン生成部1506を設けた構成となる。
ゲイン生成部1506は、画像のノイズが画像の輝度値に応じたものとなることから、種々の輝度値とゲインg(g<1)との対応テーブルの情報を記憶し、ターゲットブロックの輝度値を引数として、対応するゲインgを出力する。
ゲイン乗算部1505は、ゲイン生成部1506からのゲインgを、SAD_GMV検出部1501からのSAD値SAD_GMVに乗算して、補正後SAD値MinSAD_Gを生成する。そして、ゲイン乗算部1505は、生成した補正後SAD値MinSAD_Gを比較判定部1504に供給する。その他の構成および処理動作は、上述した第1の例と同様である。
この第2の例における背景/動被写体判定処理においては、図36のフローチャートにおけるステップS306におけるSAD値SAD_GMVの補正処理が、上述した(式17)の演算処理に変わる。そして、その他のステップの処理は、第1の例と全く同様にすることができる。
なお、上述の実施形態では、グローバル動きベクトルGMVのSAD値SAD_GMVに対してゲインg(g<1)を乗算して、補正SAD値MinSAD_Gを得て、それと最小SAD値MinSADとを比較するようにした。しかし、ローカル動きベクトルLMVの最小SAD値MinSADに、ゲインgの逆数を乗算した値(MinSAD×1/g)と、グローバル動きベクトルGMVのSAD値SAD_GMVとを比較しても全く等価である。
なお、この第2の例におけるゲインgも、第1の例のオフセットOFSと同様に、動被写体の動きベクトルまで、最小SAD値として判定されるようになってしまうのを避ける値とされる。すなわち、この実施形態では、ゲインgも、オフセット値OFSと同様に、ローカル動きベクトルの信頼性の指標値Ftについての閾値th(式7参照)を考慮した値に設定される。
[背景/動被写体判定部150の他の構成例および処理動作]
ところで、グローバルモーションGMに基づいて算出されたグローバル動きベクトルGMVは、本来、画素ピッチよりも精細な精度で表わすことができるのに対して、上述の実施形態では、ブロックマッチングは画素ピッチの精度で行なわれる。このため、グローバル動きベクトルGMVと一致する参照ベクトルの参照ブロック位置に、誤差が生じる場合がある。
また、たとえ、上述の実施形態のように拡張したアフィン変換を用いたとしても、求められたグローバルモーションGMと、真のグローバルモーションとの間には誤差が存在し得る。また、この実施形態における階層化ブロックマッチングにおいて、浅い階層のブロックマッチングにおいてミスを生じると、以降の階層で、そのミスをリカバリーすることができない。以上のことを考慮すると、グローバル動きベクトルGMVの位置に関して、あるマージンを設ける方が良いと言える。
以下に説明する例は、以上のことを考慮した場合の例である。この例においては、グローバル動きベクトルGMVの位置PgmvのSAD値のみではなく、その周辺近傍位置のSAD値についても、前記のような補正をして、MinSADと比較するようにする。
例えば、図39に示すように、ターゲットブロックについてのSADテーブルTBLにおいて、グローバル動きベクトルGMVの位置が、位置Pgmvであると判定されたとする。このときに、その位置PgmvのSAD値のみではなく、当該位置Pgmvに対して1画素隣接の周囲近傍位置P1〜P8の8個のSAD値をも、前記のような補正をして、背景一致度合いを判定する対象とする。
そして、この例の場合には、位置Pgmvおよび位置P1〜P8の9個のSAD値の補正後SAD値MinSAD_G_0〜MinSAD_G_8と、再算出された最小SAD値MinSADとを比較する。そして、9個の補正後SAD値の中に、最小SAD値MinSADよりも小さいものがあれば、当該ターゲットブロックの動きベクトルは、グローバル動きベクトルGMVに一致度合いが高いと評価し、背景一途度合いが高いと評価する。
この例において、SAD値の補正方法として、前述した第1の例を用いる場合の背景/動被写体判定部150周辺の構成図を、図40に示す。
図40に示すように、この例は、図35におけるSAD_GMV検出部1501に代えて、GMV近傍SAD値検出部1507を設けると共に、オフセット減算部1502と、比較判定部1504との間に、最小値検出部1508を設けた構成である。
GMV近傍SAD値検出部1507は、マッチング処理部153からの位置情報およびSAD値のうちから、グローバル動きベクトルGMVの位置PgmvおよびそのSAD値と、その位置の周囲近傍8個の位置P1〜P8およびそのSAD値を検出する。
そして、GMV近傍SAD値検出部1507は、検出したSAD値は、オフセット減算部1502に供給する。オフセット減算部1502は、位置PgmvおよびP1〜P8の9個のSAD値のそれぞれについて、オフセット生成部1503からのオフセット値OFSを減算して、補正後SAD値MinSAD_G_0〜MinSAD_G_8を生成する。そして、オフセット減算部1502は、それらの補正後SAD値MinSAD_G_0〜MinSAD_G_8を最小値検出部1508に供給する。
また、GMV近傍SAD値検出部1507は、検出した位置PgmvおよびP1〜P8の情報も、それぞれの位置におけるSAD値に対応するように最小値検出部1508に供給する。
最小値検出部1508は、位置PgmvおよびP1〜P8の9個の補正後SAD値MinSAD_G_0〜MinSAD_G_8の中の最小値を検出し、その検出結果の最小値を前記MinSAD_Gとして、その位置情報と共に比較判定部1504に供給する。
比較判定部1504では、前述と同様にして、ローカル動きベクトル154から再ブロックマッチングの結果として得たMinSADと、最小値検出部1508からのMinSAD_Gとを比較して、前述と同様にして、背景一致度合いの評価判定を行う。
比較判定部1504は、MinSAD>MinSAD_Gではないときには、ヒット率βは、β=0.0とする共に、NR処理用動きベクトルとして、ローカル動きベクトルLMVを出力する。このことは前記の例と同様である。
MinSAD>MinSAD_Gであるときには、比較判定部1504は、当該MinSAD_Gに対応する位置情報が、グローバル動きベクトルGMVと一致しているか否かを判断し、その結果に応じたヒット率βを変える。例えば、MinSAD_Gに対応する位置情報が、グローバル動きベクトルGMVと一致している場合には、ヒット率βは、β=0.75とする。また、MinSAD_Gに対応する位置情報が、グローバル動きベクトルGMVと一致していない場合には、ヒット率βは、β=0.5とする。
そして、この例の場合においても、MinSAD>MinSAD_Gであるときには、、NR処理用動きベクトルとして、グローバル動きベクトルGMVを出力する。
しかし、この例においては、比較判定部1504は、MinSAD>MinSAD_Gであるときには、最小値検出部1508からの位置情報に対応するローカル動きベクトルLMVを、NR処理用動きベクトルとして出力するようにしてもよい。
なお、最小値検出部1508は、比較判定部1504に含めるように構成しても良い。その場合には、9個の補正後SAD値から最小値を検出してから最小SAD値MinSADと比較するようにしてもよいし、9個の補正後SAD値と最小SAD値MinSADとを逐次比較するようにしても勿論良い。
<背景/動被写体判定処理の流れ>
図40の構成によるローカル動きベクトル算出部154での再ブロックマッチング処理および背景/動被写体判定部150での背景一致度合い評価処理の流れを、図41および図42のフローチャートを参照して更に説明する。この図41および図42の処理は、コントロール部155の制御に基づいて、各部が実行する。なお、この図41および図42の例では、SAD_GMV検出部1501、オフセット減算部1502は、ローカル動きベクトル算出部154に含まれるように構成されている場合である。また、最小値検出部1508は、比較判定部1504に含まれている場合としている。
先ず、コントロール部155の制御により、再ブロックマッチングが開始され、ターゲットブロックバッファ部151に最初のターゲットブロックが設定される(ステップS401)。次に、コントロール部155の制御により、参照ブロックバッファ152にバッファリングされているマッチング処理範囲の参照フレームの画像データのうちから、ブロックマッチング処理する参照ブロックが設定される(ステップS402)。
マッチング処理部153は、設定されたターゲットブロックと、設定された参照ブロックとについてブロックマッチング処理を行い、SAD値を計算する。マッチング処理部153は算出したSAD値を、参照ブロックの位置情報(参照ベクトル)と共に、ローカル動きベクトル算出部154に供給する(ステップS403)。
ローカル動きベクトル算出部154は、参照ベクトルがグローバル動きベクトルGMVと一致しているか、また、その周囲近傍の8位置P1〜P8と一致しているか否か判別する(ステップS404)。
ステップS404で、参照ベクトルがグローバル動きベクトルGMVおよびその周囲近傍の8位置P1〜P8とは一致していないと判別したときには、ローカル動きベクトル算出部154では、最小SAD値MinSADと、その参照ブロック位置(参照ベクトル)との更新処理を行なう(ステップS405)。
次に、コントロール部155は、サーチ範囲内の全ての参照ブロックついてのターゲットブロックとのブロックマッチングが終了したか否か判別する(ステップS408)。
そして、ステップS408で、サーチ範囲内の全ての参照ブロックついての処理が終了してはいないと判別したときには、コントロール部155は、次の参照ブロックを設定する(ステップS409)。そして、ステップS402に戻り、上述したこのステップS402以降の処理を繰り返す。
また、ステップS404で、参照ベクトルがグローバル動きベクトルGMV、あるいはその周辺近傍位置P1〜P8のいずれかと一致したと判別したときには、ローカル動きベクトル算出部154では、そのSAD値からオフセット値OFSを減算する(ステップS406)。そして、その減算結果を補正後SAD値MinSAD_G_0〜MinSAD_G_8のいずれかとして、その参照ブロック位置(参照ベクトル)とを保持する(ステップS407)。
そして、ステップS408に進み、サーチ範囲内の全ての参照ブロックついての処理が終了したか否か判別する。
そして、ステップS408で、サーチ範囲内の全ての参照ブロックついての処理が終了したと判別したときには、ローカル動きベクトル算出部154は、ローカル動きベクトルLMVと、最小SAD値MinSADを検出し、比較判定部1504に供給する。また、ローカル動きベクトル算出部154は、9個の補正後SAD値MinSAD_G_0〜MinSAD_G_8の中の最小値として、補正後SAD値MinSAD_Gを検出し、比較判定部1504に供給する(図42のステップS411)。
そして、背景/動被写体判定部150の比較判定部1504は、最小SAD値MinSADが、予め定められている前記閾値TH1より小さいか否か判別する(ステップS412)。
ステップS412で、最小SAD値MinSADが、前記閾値TH1より大きいと判別したときには、比較判定部1504は、グローバル動きベクトルGMVを用いた背景一致度合いの判定を行わず、ヒット率β=0.25とする(ステップS413)。そして、比較判定部1504は、再算出されたローカル動きベクトルLMVを、当該ターゲットブロックのNR処理用動きベクトルとして動き補償画生成部16に出力する(ステップS414)。
そして、ステップS414の次に、コントロール部155は、ターゲットフレーム内の全てのターゲットブロックについての処理が終了したか否か判別し(ステップS422)、終了していなければ、次のターゲットブロックを設定する(ステップS423)。そして、ステップS402に戻り、コントロール部155の制御の下に、上述したステップS402以降の処理を繰り返す。
また、ステップS412で、最小SAD値MinSADが、前記閾値TH1より小さいと判別したときには、比較判定部1504は、最小SAD値MinSADと、補正後SAD値MinSAD_Gとを比較する(ステップS415)。そして、比較判定部1504は、MinSAD>MinSAD_Gであるか否か判別し(ステップS416)、そうではないと判別したときには、ターゲットブロックは背景には一致していないとして、ヒット率βは、β=0とする(ステップS417)。
このステップS417の次には、ステップS414に進み、比較判定部1504は、再算出されたローカル動きベクトルLMVを、当該ターゲットブロックのNR処理用動きベクトルとして動き補償画生成部16に出力する。そして、ステップS422に進み、前述したステップS422以降の処理を繰り返す。
また、ステップS416で、MinSAD>MinSAD_Gであると判別したときには、MinSADの位置(参照ベクトル)は、グローバル動きベクトルGMVと一致しているか否か判別する(ステップS418)。このステップS418で、MinSADの位置(参照ベクトル)は、グローバル動きベクトルGMVと一致してはいないと判別したときには、比較判定部1504は、ヒット率βを、β=0.5に設定する(ステップS419)。
また、ステップS418で、MinSADの位置(参照ベクトル)は、グローバル動きベクトルGMVと一致していると判別したときには、比較判定部1504は、ヒット率βを、β=0.75に設定する(ステップS420)。
そして、比較判定部1504は、ステップS419または420の次には、グローバル動きベクトルGMVを、当該ターゲットブロックのNR処理用動きベクトルとして動き補償画生成部16に出力する(ステップS421)。
このステップS421の次には、ステップS422に進み、コントロール部155は、ターゲットフレーム内の全てのターゲットブロックについての処理が終了したか否か判別する。このステップS422で、ターゲットフレーム内の全てのターゲットブロックについての処理が終了していないと判別したときには、コントロール部155は、次のターゲットブロックを設定し(ステップS423)、その後、ステップS402に戻る。
また、ステップS422で、ターゲットフレーム内の全てのターゲットブロックについての処理が終了したと判別したときには、コントロール部155は、この背景/動被写体判定処理動作を終了する。
このグローバル動きベクトルGMV位置のみならず、その周囲近傍の位置のSAD値をも考慮して、背景/動被写体判定をする方法は、前述したSAD値の補正方法の第2の例にも適用できる。
図43に、第2の例を適用した場合の背景/動被写体判定部およびその周辺部の構成例を示す。この図43の例は、図39におけるSAD_GMV検出部1501に代えて、GMV近傍SAD値検出部1507を設けると共に、ゲイン乗算部1505と、比較判定部1504との間に、最小値検出部1508を設けた構成である。
この図43の例の処理動作は、SAD値の補正方法が第2の例に変わるだけで、前述した図38の例と全く同様であるので、ここでは、その詳細な説明は省略する。
<加算率計算部21の構成例>
この実施形態においては、加算率計算部21では、画素単位に加算率α(0≦α≦1)を求める。そして、前述したように、基本的には、ターゲット画像と動き補償画像との画素単位の違いと、ヒット率βとに応じて加算率αを計算する。このため、加算率計算部21には、ヒット率βと、ターゲット画像のデータTGvおよび動き補償画像のデータMCvが供給される。
ここで、ターゲット画像と動き補償画像との画素単位の違いが大きければ、動き部分と考えられるので、加算率αは低くすべきであるが、前記画素単位の違いがない、あるいは小さければ加算率αは高くしても良い。しかし、ターゲットブロックが背景静止画部分であるか、動被写体部分であるかが不明である場合には、前述したように、動き部分における2重露光が目立たないようにするために、加算率αは比較的低く抑える必要がある。
しかし、この実施形態では、ヒット率βにより、背景静止画部分としての一致度合いが求められているので、ヒット率βが大きく、背景一致度合いが高いほど、加算率αは高くするようにする。
また、この実施形態では、さらに画像のノイズは、画像の明るさに応じたものとなるので、加算率計算部21では、ターゲット画像と動き補償画像との画素単位の違いに関しては、当該画像の明るさに応じたノイズを考慮するようにしている。すなわち、ターゲット画像と動き補償画像との画素単位の違いがノイズの範囲内であれば、両者の実際の差分は小さいと判断する。また、前記画素単位の違いがノイズの範囲よりも大きいときには、両者の差分は、実際に大きいと判断するようにする。
このノイズを考慮するため、加算率計算部21には、動きベクトル算出部15から、最大輝度値MaxTARおよび最小輝度値MinTARが供給される。そして、加算率計算部21では、この最大輝度値MaxTARおよび最小輝度値MinTARから、ターゲットブロック毎の明るさ、つまり、照度Lxを算出するようにする。
また、この実施形態の加算率計算部21には、加算度合いを、加算率計算部21の外部から制御することができるようにするため、加算調整用ゲインGAが供給される。この加算調整用ゲインGAの値は、予め用意されているゲイン値の中から、ユーザが選択したものとするように構成することができる。あるいは、撮像画像のISO感度に応じて、加算調整用ゲインGAの値を定めるように構成しても良い。後者の場合には、例えば撮像時の露出値やシャッター速度などに応じて、画像の明るさを判断して、加算調整用ゲインGAの値を定めるように構成することができる。つまり、明るい画像の場合には、ノイズが目立つので、加算率が小さくなるようにゲインを小さくし、逆に、暗い画像の場合には、加算率を大きくするようにゲインを大きく設定する。
この実施形態の加算率計算部21のハードウエア構成例を図44および図45に示す。この図44および図45の例においては、ターゲット画像のデータTGvおよび動き補償画像のデータMCvは、輝度成分と、色差成分とのそれぞれについて、別個に処理がなされる。
図44は、加算率計算部21における、輝度成分についての処理部分である。図44を参照して、先ず、輝度成分についての加算率計算処理についての説明する。
すなわち、ターゲット画像のデータ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には、画素値の輝度値に対するノイズ標準偏差σが、予め算出されて記憶されている。すなわち、横軸に画素値の輝度値を取り、縦軸にノイズ標準偏差σを取ったとき、ノイズ標準偏差σは、例えば図46に示すようなものとなる。この図46に示すように、明るい画素に対しては、ノイズの標準偏差σは小さく、暗い画素に対しては、ノイズの標準偏差σは大きい。
ノイズモデルは、ノイズが画像の明るさにより異なるものであるので、ノイズモデルメモリ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は、基本的には、図47に示すように、ノイズ標準偏差σと、差分値とから加算率αを定める。なお、加算率変換出力部608および609では、ノイズ標準偏差σは、ノイズモデルメモリ607からのノイズ標準偏差σYであり、差分値は、画素差分絶対値ΔPxYおよび平均差分絶対値ΔMeYである。そして、出力加算率αは、加算率αYAおよびαYBである。
この実施形態では、図47に示すように、差分値が、ノイズ標準偏差σの倍数として設定できる所定の第1の閾値以下のときには、背景画像部分であるとして、加算率αは、最大値であるα=1とする。
そして、差分値が、(第1の閾値<差分値<第2の閾値)の範囲では、背景部分と動被写体部分とのいずれとの判断ができない部分として、図47に示すように、加算率αは差分値が大きくなるに従って直線的に小さくなるようにされる。そして、(差分値≧第2の閾値)の範囲では、動被写体部分であると判断して、加算率αは、最小値であるα=0とする。
ターゲットブロックの背景一致度合いが不明であるときには、上述したように、動被写体部分での二重露光のような状態を軽減するために、第1の閾値は安全を見越した値とされて、加算率αは全体的に抑制される。つまり、背景画像部分であることが分かっていれば、第1の閾値および第2の閾値を大きな値として設定して、できるだけ大きな加算率での画像加算を行なうことができる。
しかし、背景一致度合いが不明であるであるときには、全てのターゲットブロックについて、動被写体部分での二重露光のような状態を軽減するようにすることを考慮する必要がある。そのため、通常は、図47の例に示すように、第1の閾値は、標準偏差σの1倍(1σ)程度とされ、第2の閾値は、標準偏差の3倍(3σ)程度とされる。
これに対して、この実施形態では、上述したように、ターゲットブロック毎に、背景一致度合いが、その指標値であるヒット率βとして算出される。したがって、この背景一致度合いの指標値βを用いることにより、背景静止画像部分では、より大きな加算率で加算を行うことが可能となる。
ヒット率βを考慮した場合における加算率変換出力部608および609での加算率変換出力特性を図48に示す。
すなわち、図48の例においては、ヒット率βに応じて、差分値に対する第1の閾値を変更するようにする。すなわち、ヒット率βが最低で、β=0であるとき(動被写体部分)では、図47の例の場合と同様に、第1の閾値は、標準偏差σの1倍(1σ)とする。そして、ヒット率βが、β>0であるときには、ヒット率βの値に応じて第1の閾値を、より大きなものに変更する。
そして、図48の例においては、差分値が第1の閾値よりも大きくなったときからの加算率αの漸減直線の傾きは常に一定とされる。したがって、図48の例では、第2の閾値は、第1の閾値の変更に応じて自動的に変更される。
例えば、図49に示すように、ヒット率βを考慮しない図47の例の場合(β=0)においては、差分値が2σであるときには、加算率αは常に0.5となる。これに対して、ヒット率を考慮する場合においては、図49に示すように、ヒット率β=1.0である背景静止画像部分では、加算率αはα=1となり、最大の加算率で加算されるようになる。
このように、背景静止画像部分では、ヒット率βに応じて、より大きな加算率αが設定されるので、所期の通りのノイズ低減効果が得られる。また、動被写体部分では、ヒット率βに応じて加算率αは低く抑えられるので、二重露光の状態を軽減するという効果を維持することができる。
なお、上述の例では、第1の閾値のみをヒット率βに応じて変更し、差分値が第1の閾値よりも大きくなったときからの加算率αの漸減直線の傾きは常に一定としたが、第2の閾値をもヒット率に応じて変更して、前記漸減直線の傾きも変更するようにしても良い。
次に、加算率変換出力部608および609におけるゲインGAの寄与について説明する。
ゲインGAは、以上のようにして算出される加算率αを、さらに、変更制御するパラメータである。前述したように、このゲインGAは、ユーザにより設定されたり、撮影条件に応じて画像の明るさに応じて設定されたりするものである。例えばユーザにより設定する場合には、NR加算により、より大きなノイズ低減効果を得ようとする場合には、ゲインGAは大きくする。すると、上述のようにして算出された加算率αが、ゲインGAに応じた値に変更制御される。
図50に、加算率変換出力部608および609における、ゲインGAと、ヒット率βと、加算率αとの関係を示す。図50では、加算率αは、ヒット率β=0の場合の加算率を基準加算率αoとして、その基準加算率αoを基にした値として示している。
この図50の例においては、ゲインGAは、ユーザにより、あるいは、撮影条件などにより、GA=0、GA=1、GA=2、GA=3の4段階に、変更設定可能とされる。そして、ヒット率βも、β=0、β=0.25、β=0.5、β=1.0の4段階に設定されるようにされる。
そして、加算率αは、図50に示すように、基準加算率αoを係数K倍(K≧1)したものとされるが、その係数Kが、ゲインGAとヒット率βとの組み合わせに応じた倍数とされるものである。
以上のようにして、加算率変換出力部608では、画素差分絶対値ΔPxYと、ノイズ標準偏差σYと、ヒット率βと、ゲインGAとから、輝度成分の画素差分に基づく出力加算率αYAを出力する。また、加算率変換出力部608では、平均差分絶対値ΔMeYと、ノイズ標準偏差σYと、ヒット率βと、ゲインGAとから、輝度成分の平均差分に基づく出力加算率αYBを出力する。
色差信号成分については、平均差分は計算されず、画素差分絶対値のみが計算されて、上述した輝度成分と同様にして、色差成分に基づく加算率が算出される。
図45は、加算率計算部21における、色差成分についての処理部分である。図45を参照して、色差成分についての加算率計算処理についての説明する。
すなわち、ターゲット画像のデータ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には、動きベクトル算出部15からのヒット率βと、外部からのゲイン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には、動きベクトル算出部15からのヒット率βと、外部からのゲインGAが供給される。
加算率変換出力部635は、上述した加算率変換出力部608や609と同様の構成を有するもので、これよりは、画素差分絶対値ΔPxCrと、ノイズ標準偏差σCrと、ヒット率βと、ゲインGAとの組み合わせにより定まる加算率αCrが得られる。
また、この実施形態では、ターゲット画像の画素分散値に基づいても、加算率を求めるようにする。分散値は、注目画素(自画素)と、その周囲近傍の例えば8画素とについて求める。この分散値は、輝度成分および色差成分のそれぞれについて求める。そして、求めた分散値のすべてから、加算率を算出する。
すなわち、図44に示すように、ターゲットブロックの画像データTGvの輝度データYtgは、ローパスフィルタ601を通じて空間分散フィルタ610に供給される。そして、この空間分散フィルタ610から、注目画素(自画素)と、その周囲近傍の例えば8画素との合計9個の画素についての分散値VaYが得られる。
また、図45に示すように、ターゲットブロックの画像データTGvの青の色差データCbtgは、ローパスフィルタ621を通じて空間分散フィルタ626に供給される。そして、この空間分散フィルタ626から、注目画素(自画素)と、その周囲近傍の例えば8画素との合計9個の画素についての分散値VaCbが得られる。
さらに、ターゲットブロックの画像データTGvの赤の色差データCrtgは、ローパスフィルタ631を通じて空間分散フィルタ636に供給される。そして、この空間分散フィルタ636から、注目画素(自画素)と、その周囲近傍の例えば8画素との合計9個の画素についての分散値VaCrが得られる。
そして、分散値VaY、VaCbおよびVaCrは、図44に示すように、加算部611で加算された後、加算率変換出力部612に供給される。さらに、加算率変換出力部612には、動きベクトル算出部15からのヒット率βと、外部からのゲインGAが供給される。
この加算率変換出力部612で求める加算率αCは、ターゲットブロックの画像が、テクスチャー成分が少なく、輝度レベル変化がなだらかな場合(グラデーションの場合)に、その加算率を抑えることを目的としている。この実施形態のようにブロック分割した画像処理においては、人間の視覚効果により、ブロック境界が非常に目立ち易くなり、特に、輝度レベル変化がなだらかな場合には殊更であることを考慮している。
上記の目的を実現させるために、基本的には、ブロック内の分散値が低いほど加算率を低くすれば良い。この実施形態の加算率変換出力部612では、図51(A)に示すように、分散値を横軸に取ると共に、分散値を所定の段階幅毎に幾つかの段階に分け、出力加算率を各段階の分散値に応じて決定するようにする。
図51(A)の例では、分散値を段階幅8毎に、5段階に分け、分散値0−7に対する加算率を0.0、分散値8−15に対する加算率を0.25、分散値16−23に対する加算率を0.5、分散値24−31に対する加算率を0.75、分散値32以上に対する加算率を1.0とする。
ところで、画像を重ね合わせる場合に、上述のようなブロック毎の境界が目立つのは、重ね合わせる画像に差異があるからである。換言すれば、背景静止画像部分については、重ね合わせる画像に差異はないので、分散値に応じた加算率の抑制をする必要はない。
そこで、この実施形態では、加算率変換出力部612では、ヒット率βに応じて、分散値の段階幅を制御し、ヒット率βが大きいほど、分散値の段階幅を小さくするようにする。これにより、背景静止画像部分については、分散値に応じた加算率の低減を抑制し、できるだけ、高い加算率で加算ができるようにしている。
すなわち、図51の例では、ヒット率βが、例えばβ=0というように低い値のときには、分散値の段階幅は、図51(A)に示すように、「8」とする。そして、ヒット率βが、例えばβ=0.5というような値のときには、分散値の段階幅は、図51(B)に示すように、「4」とする。
さらに、ヒット率βが、背景静止画部分であることを示すβ=1であるときには、分散値の段階幅は、図51(C)に示すように、「0」とする。つまり、このときには、分散値による加算率の低減は行なわない。
上述したように、加算率変換出力部612にも、ゲインGAが供給されており、このゲインGAによる出力加算率の制御が行なえるようにしている。この例の場合、ゲインGAにより、ヒット率βとの組み合わせにより、前述した分散値の段階幅を変更制御するようにする。
図52に、加算率変換出力部612における、ゲインGAと、ヒット率βと、段階幅との関係を示す。この図52の例においても、ゲインGAは、ユーザにより、あるいは、撮影条件などにより、GA=0、GA=1、GA=2、GA=3の4段階に、変更設定可能とされる。そして、ヒット率βも、β=0、β=0.25、β=0.5、β=1.0の4段階に設定されるようにされる。
なお、図52の例においては、段階幅については、ビットシフト演算により実現可能なように構成している。
なお、図51に示したように、この実施形態では、分散値を用いた加算率の算出に際しては、分散値について、段階幅を用いた複数段階を設定する構成としたが、複数段階とするのではなく、当該複数段階の間を線形補間するようにする構成としても良い。また、線形補間ではなく、2次曲線補間や3次曲線補間をするようにしても良い。
以上のようにして、各加算率変換出力部608、609、612、625および635では、輝度差分値や色差差分値、輝度平均差分値、分散値などに応じると共に、ヒット率βに応じた値として加算率αYA、αYB、αC、αCb、αCrが算出される。
そして、この実施形態では、これらの加算率αYA、αYB、αC、αCb、αCrが合成されて、加算率計算部21の出力加算率αが得られる。すなわち、図44に示すように、加算率変換出力部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が乗算された乗算結果が得られ、これが加算率計算部21の出力加算率αとして出力される。
こうして、加算率計算部21からは、画素単位で、ヒット率βに応じた値として加算率αが算出され、加算部17に供給される。
加算部17では、この加算率計算部21からの画素毎の加算率αに応じて、ターゲットブロックの画像データTGvと、動き補償ブロックの画像データMCvとが画素単位で加算される。そして、加算部17からの加算画像データは、画像メモリ部4、静止画コーデック部18を介して、記録再生装置部5に記録される。
上述した実施形態によれば、ターゲットブロック毎に背景一致度合いの指標値であるヒット率βを用いて、静止画像部分では、加算率αを大きくすることができるので、NR画像として、ノイズ低減効果が大きい画像が得られるという顕著な効果を奏する。
例えば、図53に示すようなノイズがあるターゲット画像(図53(A))と、参照画像(図53(B))とについてのNR画像を考える。なお、図53において、丸印で示す部分は、ターゲット画像と参照画像との間における動被写体部分である。この例の2枚の画像では、この動被写体部分以外は、全て背景静止画部分となっている。
図53の例の2枚の画像についてブロックマッチングを行なって、各ターゲットブロックについてローカル動きベクトルLMVを求め、そのローカル動きベクトルLMVを図示すると、図54に示すようなものとなる。
そして、上述のようなヒット率βによる考慮を行なわずに、このローカル動きベクトルLMVを用いて、参照画像から動き補償画像を行い、加算率判定を行った結果の加算率分布画像を、白黒画像として図55に示す。図55では、加算率が大きくなるにつれ、より白で表わし、加算率がちいさくなるにつれ、より黒で表わしている。
図54において丸印をして示した部分は背景静止画部分であって、ローカル動きベクトルLMVも正しいものが得られているが、ヒット率βを考慮していないので、図55における対応部分においては、加算率が低くなっていることがわかる。つまり、期待通りのノイズ低減効果を得ることができないことが分かる。
次に、上述した実施形態で説明したように、図53に示した2枚の画像について、グローバルモーションGMを求め、当該グローバルモーションGMから生成したグローバル動きベクトルGMVを図示すると、図56(A)に示すようなものとなる。
そして、生成したグローバル動きベクトルGMVと、ローカル動きベクトルLMVとの一致度合いをチェックし、その結果、動き補償画生成部16に出力するものとされた動きベクトルを図示すると、図56(B)に示すようなものとなる。図56(B)の右下の画像部分についての大きな動きベクトルは、図53で示した動被写体画像部分である。この図56から分かるように、この実施形態によれば、背景静止画像部分と、動被写体部分とが、正しく区別されて判定される。
そして、図56(B)の動きベクトルを生成する際に算出されたヒット率βを画像と対応させて図示すると、図57に示すようなものとなる。ただし、この図57では、ローカル動きベクトルLMVと、グローバル動きベクトルGMVとの一致度合いは、一致、不一致の2値で判定して、ヒット率βがβ=0と、β=1との2値で得られる場合として示している。白色部分がβ=1、黒色部分がβ=0の部分である。
そして、図58は、この実施形態により求められた加算率αを、画像に対応して示したものである。図58では、加算率αについて、0.0〜1.0を128階調に分解し、白から黒になるほど加算率が下がる(α=0.0に近づく)ように表示している。
図54と図58を比較すれば、この実施形態によれば、背景静止画部分では加算率αが上昇していることが分かる。これにより、この実施形態によれば、所期のノイズ低減効果が得られるものである。
なお、加算率変換出力部608、609、612、625、635は、上述したそれぞれの4個のパラメータ入力に対して、出力加算率αYA、αYB、αC、αCb、αCrを出力する変換テーブルを備えるROMの構成とすることができる。
[第2の実施形態]
上述した第1の実施形態では、ヒット率βは、ターゲットブロック単位で算出するようにした。そして、そのターゲットブロック単位のヒット率βを用いて、加算率αを制御するようにした。このため、加算率αは、画素単位で算出しているにも拘わらず、NR画像のブロック単位の境界が目立ち易いという問題がある。
そこで、この第2の実施形態では、ターゲットブロック単位に算出したヒット率βを、自ブロックに隣接するターゲットブロックのヒット率を参照して、ヒット率βが空間的に滑らかに変化するように補間処理をするようにする。
<ヒット率βの補間処理の第1の例>
第1の例においては、ターゲットブロック単位でヒット率βの補間を行なう。図59および図60に、この第1の例の場合における補間処理例を示す。なお、図59および図60において、Bkはターゲットブロックのそれぞれを示し、ターゲットブロックBk内に記載されている数値は、ヒット率βの値を示している。ここでは、説明の簡単のため、算出されたヒット率βは、β=1.0と、β=0.5の2値としている。
図59の例は、自ターゲットブロックBkに隣接する他のターゲットブロックBkのヒット率βを参照して、空間的に滑らかに変化するように、自ターゲットブロックBkのヒット率を小さくする方向に補間する例である。すなわち、ターゲットブロックBk単位に算出されたヒット率βが、図59(A)に示すような場合において、補間処理により、図59(B)に示すように、所定のターゲットブロックBkのヒット率βが変更される。
図59の例では、自ターゲットブロックBkのヒット率βがβ=1.0であるときであって、隣接する他のターゲットブロックBkのヒット率βがβ=0.0であるときに、当該自ターゲットブロックBkを補間対象のターゲットブロックとする。そして、その補間対象のターゲットブロックのヒット率βを、この例では、β=1.0からβ=0.5に変更する。これにより、ターゲットブロックBk単位のヒット率βが、図59(B)に示すように、空間的に滑らかに変化するようにされる。
図60の例は、自ターゲットブロックBkに隣接する他のターゲットブロックBkのヒット率βを参照して、空間的に滑らかに変化するように、自ターゲットブロックBkのヒット率を大きくする方向に補間する例である。すなわち、ターゲットブロックBk単位に算出されたヒット率βが、図60(A)に示すような場合において、補間処理により、図60(B)に示すように、所定のターゲットブロックBkのヒット率βが変更される。
図60の例では、自ターゲットブロックのヒット率βがβ=0.0であるときであって、隣接する他のターゲットブロックのヒット率βがβ=1.0であるときに、当該自ターゲットブロックBkを補間対象のターゲットブロックとする。そして、その補間対象の自ターゲットブロックのヒット率βを、β=0.0からβ=0.5に変更する。これにより、ターゲットブロックBk単位のヒット率βが、図60(B)に示すように、空間的に滑らかに変化するようにされる。
これにより、ヒット率βは、ターゲットブロック単位に算出されたとしても、ブロック単位の境界を目立たないようにすることができる。
<ヒット率βの補間処理の第2の例>
第2の例においては、ターゲットブロックBkをさらに分割した細ブロック単位で、ヒット率βの補間を行なう。図61および図62に、この第2の例の場合の補間処理例を示す。図61および図62において、Bkはターゲットブロックのそれぞれを示し、SBkは、当該ターゲットブロックBkを4分割した細ブロック、SSBkは、当該ターゲットブロックBkを8分割した細ブロックを示している。そして、ターゲットブロックBkや細ブロック内などに記載されている数値は、ヒット率βの値を示している。この第2の例においても、説明の簡単のため、算出されたヒット率(補間処理前のヒット率)βは、β=1.0と、β=0.5の2値としている。
図61の例は、自ターゲットブロックBkに隣接する他のターゲットブロックBkのヒット率βを参照して、空間的に滑らかに変化するように、自ターゲットブロックBkのヒット率を小さくする方向に補間する例である。
そして、図61(A)および(B)に示す例は、ターゲットブロックBkを4分割した細ブロックSBk単位で補間を行なう場合である。すなわち、ターゲットブロックBk単位に算出されたヒット率βが、図61(A)に示すような場合において、補間処理により、図61(B)に示すように、所定のターゲットブロックBk内の細ブロックSBkのヒット率βが変更される。
図61(B)の例では、自ターゲットブロックBkのヒット率βがβ=1.0であるときであって、隣接する他のターゲットブロックBkのヒット率βがβ=0.0であるときに、当該自ターゲットブロックBkを補間対象のターゲットブロックとする。そして、その補間対象の自ターゲットブロックのヒット率βを、β=1.0以下の値に、細ブロックSBk単位に変更する。
この場合に、自ターゲットブロックBk内の全ての細ブロックSBkのヒット率βをβ=0.5に変更するのではなく、ヒット率βがβ=0.0である他のターゲットブロックBkに隣接する細ブロックSBkのみのヒット率βをβ=0.5に変更する。そして、自ターゲットブロックBk内の他の細ブロックのヒット率はβ=1.0のまま保持するようにする。この第2の例の場合、隣接するターゲットブロックBkには、斜め方向に隣接するものも含むものとする。したがって、斜め方向に隣接するターゲットブロックBkのヒット率βがβ=0.0である細ブロックSBkのヒット率βも、β=0.5に変更する。
そして、図61(A)および(C)に示す例は、ターゲットブロックBkを8分割した細ブロックSSBk単位で補間を行なう場合である。この例では、自ターゲットブロックBkのヒット率βがβ=1.0であるのを、補間対象となるターゲットブロックBkでは、細ブロックSSBk単位で、ヒット率βを、0.25,0.5,0,75、1.0というように、変化幅0.25で変更する。
すなわち、ターゲットブロックBk単位に算出されたヒット率βが、図61(A)に示すような場合において、補間処理により、図61(C)に示すように、所定のターゲットブロックBk内の細ブロックSSBkのヒット率βが変更される。
図61(C)の例では、自ターゲットブロックBkのヒット率βがβ=1.0であるときであって、隣接する他のターゲットブロックBkのヒット率βがβ=0.0であるときに、当該自ターゲットブロックBkを補間対象のターゲットブロックとする。そして、その補間対象の自ターゲットブロックBkのヒット率βを、細ブロックSSBk単位で変更する。
この場合に、ヒット率βがβ=0.0である他のターゲットブロックBkに隣接する細ブロックSSBkのヒット率βはβ=0.25に変更する。そして、自ターゲットブロックBk内のβ=0.25に変更した細ブロックSSBkに隣接する細ブロックのヒット率はβ=0.5とする。
そして、補間対象のターゲットブロックBkにおいて、ヒット率βがβ=1.0である他のターゲットブロックBkに隣接する細ブロックSSBkのヒット率βはβ=1.0のままとする。そして、自ターゲットブロックBk内のβ=1.0のままとした細ブロックSSBkに隣接する細ブロックのヒット率はβ=0.75とする。そして、自ターゲットブロックBk内のβ=0.75に変更した細ブロックSSBkに隣接する細ブロックのヒット率はβ=0.5とする。
この例の場合も、隣接するターゲットブロックBkには、斜め方向に隣接するものも含むものとする。
これにより、ターゲットブロックBk単位のヒット率βが、図61(B)または(C)に示すように、空間的に滑らかに変化するようにされる。
次に、図62の例は、自ターゲットブロックBkに隣接する他のターゲットブロックBkのヒット率βを参照して、空間的に滑らかに変化するように、自ターゲットブロックBkのヒット率を大きくする方向に補間する例である。
そして、図62(A)および(B)に示す例は、ターゲットブロックBkを4分割した細ブロックSBk単位で補間を行なう場合である。すなわち、ターゲットブロックBk単位に算出されたヒット率βが、図62(A)に示すような場合において、補間処理により、図62(B)に示すように、所定のターゲットブロックBk内の細ブロックSBkのヒット率βが変更される。
図62(B)の例では、自ターゲットブロックBkのヒット率βがβ=0.0であるときであって、隣接する他のターゲットブロックBkのヒット率βがβ=1.0であるときに、当該自ターゲットブロックBkを補間対象のターゲットブロックとする。そして、その補間対象の自ターゲットブロックのヒット率βを、β=0.0以上の値に、細ブロックSBk単位に変更する。
この場合に、自ターゲットブロックBk内の全ての細ブロックSBkのヒット率βをβ=0.5に変更するのではなく、ヒット率βがβ=1.0である他のターゲットブロックBkに隣接する細ブロックSBkのみのヒット率βをβ=0.5に変更する。そして、自ターゲットブロックBk内の他の細ブロックのヒット率はβ=0.0のまま保持するようにする。この第2の例の場合、隣接するターゲットブロックBkには、斜め方向に隣接するものも含むものとする。したがって、斜め方向に隣接するターゲットブロックBkのヒット率βがβ=0.0である細ブロックSBkのヒット率βも、β=0.5に変更する。
そして、図62(A)および(C)に示す例は、ターゲットブロックBkを8分割した細ブロックSSBk単位で補間を行なう場合である。この例では、自ターゲットブロックBkのヒット率βがβ=0.0であるのを、補間対象となるターゲットブロックBkでは、細ブロックSSBk単位で、ヒット率βを、0.25,0.5,0,75、1.0というように、変化幅0.25で変更する。
すなわち、ターゲットブロックBk単位に算出されたヒット率βが、図62(A)に示すような場合において、補間処理により、図62(C)に示すように、所定のターゲットブロックBk内の細ブロックSSBkのヒット率βが変更される。
図62(C)の例では、自ターゲットブロックBkのヒット率βがβ=0.0であるときであって、隣接する他のターゲットブロックBkのヒット率βがβ=1.0であるときに、当該自ターゲットブロックBkを補間対象のターゲットブロックとする。そして、その補間対象の自ターゲットブロックBkのヒット率βを、細ブロックSSBk単位で変更する。
この場合に、ヒット率βがβ=1.0である他のターゲットブロックBkに隣接する細ブロックSSBkのヒット率βはβ=0.75に変更する。そして、自ターゲットブロックBk内のβ=0.75に変更した細ブロックSSBkに隣接する細ブロックのヒット率はβ=0.5とする。
そして、補間対象のターゲットブロックBkにおいて、ヒット率βがβ=0.0である他のターゲットブロックBkに隣接する細ブロックSSBkのヒット率βはβ=0.0のままとする。そして、自ターゲットブロックBk内のβ=0.0のままとした細ブロックSSBkに隣接する細ブロックのヒット率はβ=0.25とする。そして、自ターゲットブロックBk内のβ=0.25に変更した細ブロックSSBkに隣接する細ブロックのヒット率はβ=0.5とする。
この例の場合も、隣接するターゲットブロックBkには、斜め方向に隣接するものも含むものとする。
これにより、ターゲットブロックBk単位のヒット率βが、図62(B)または(C)に示すように、空間的に滑らかに変化するようにされる。
[第3の実施形態]
上述の実施形態では、ローカル動きベクトル算出部154では、階層化ブロックマッチングを行って、基底面におけるローカル動きベクトルLMVを算出した。そして、動きベクトル信頼性指標値算出部156では、当該基底面のローカル動きベクトルLMVの信頼性指標Ftを算出した。
また、動きベクトル算出部157では、この基底面のローカル動きベクトルLMVについて、その信頼性指標値Ftを生成し、当該信頼性指標値Ftを用いて信頼性の高いローカル動きベクトルLMVを抽出するようにした。そして、当該信頼性の高いローカル動きベクトルLMVを用いてグローバルモーションGMを算出し、そのグローバルモーションGMからグローバル動きベクトルGMVを算出するようにした。
ところで、縮小面動きベクトルMVsや中間面動きベクトルMVmを、基底面に対する画像縮小倍率の逆数倍することで、基底面基底面動きベクトルMVbを得ることができる。そこで、グローバルモーションGMを算出するためには、基底面動きベクトルMVbを求めなくても、縮小面動きベクトルMVsや中間面動きベクトルMVmから、グローバルモーションGMを求めるようにすることもできる。
例えば、縮小面動きベクトルMVsからグローバルモーションGMを求める場合には、先ず、ローカル動きベクトル算出部154で、縮小面におけるローカル動きベクトルLMV(縮小面動きベクトルMVs)を算出する。
そして、動きベクトル信頼性指標値算出部156で、算出した縮小面動きベクトルMVsについての信頼性指標Ftを算出する。また、動きベクトル算出部157で、この縮小面のローカル動きベクトルLMVについての信頼性指標値Ftを用いて、信頼性の高いローカル動きベクトルLMVを抽出する。そして、動きベクトル算出部157で、当該信頼性の高いローカル動きベクトルLMVを用いて、グローバルモーションGMおよびグローバル動きベクトルGMVを算出するようにするようにする。
中間面までの階層でブロックマッチングを行なって得た中間面動きベクトルMVmから、グローバルモーションGMを用いる場合も同様にして算出することができる。ただし、グローバル動きベクトルGMVの位置のSAD値についての補正を行う場合のオフセット値OFSやゲインgは、それぞれの階層に応じて適切に設定するようにする。
このようにして縮小面や中間面のローカル動きベクトルを用いて、グローバルモーションGMおよびグローバル動きベクトルGMVを求めるメリットは、次の通りある。
1つは、先に述べたように縮小面や中間面は、その生成にあたってローパスフィルタが施されるため、ノイズが除去され、結果として、得られたローカル動きベクトルがノイズの影響を受けにくい点である。
他の1つは、縮小面や中間面では、ターゲットブロックの数が少なくなるので、ローカル動きベクトルの数は少なくなり、演算コストが小さくなると共に、処理に要する時間や小さいので、処理の高速化が可能であることである。
上述の例のように、通常は、ハードウェアの制約から、縮小面、中間面、基底面のマッチング処理ブロック単位は同じサイズとなる。このため、画サイズの小さい縮小面のターゲットブロックの数(=ローカル動きベクトルの数)は、基底面のみでブロックマッチングを行う場合に較べて相対的に少なくなる。
そして、縮小面動きベクトルからグローバルモーションおよびグローバル動きベクトルGMVを求める場合には、中間面および基底面での動きベクトル検出処理は省略することができる。また、中間面動きベクトルからグローバルモーションおよびグローバル動きベクトルGMVを求める場合には、基底面での動きベクトル検出処理は省略することができる。したがって、処理の高速化が図れる。
特に、縮小面動きベクトルMVsを用いてグローバルモーションGMおよびグローバル動きベクトルGMVを求めるようにした場合には、そのメリットは、大きい。
図63に、縮小面動きベクトルMVsを用いてグローバルモーションおよびグローバル動きベクトルGMVを求め、基底面でのローカル動きベクトルLMVと比較する場合の処理の全体フローを示す。
先ず、動きベクトル算出部15では、縮小面ブロックマッチングを行なって、縮小面における各ターゲットブロック毎のローカル動きベクトルLMVsを求める。そして、各ターゲットブロック毎の縮小面ローカル動きベクトルLMVsの信頼性を評価して、信頼性の高い縮小面ローカル動きベクトルLMVsのみを用いてグローバルモーションGMを算出する。そして、算出したグローバルモーションからグローバル動きベクトルGMVを算出しておく(ステップS501)。
次に、階層化ブロックマッチングのため、縮小面再ブロックマッチングを行い、縮小面ローカル動きベクトルLMVsを再算出する(ステップS502)。
次に、縮小面ローカル動きベクトルLMVsから中間面におけるターゲットブロックに対する参照ブロックについてのサーチ範囲を求め、中間面ブロックマッチングを行う。そして、中間面ローカル動きベクトルLMVmを算出する(ステップS503)。
次に、中間面ローカル動きベクトルLMVmから基底面におけるターゲットブロックに対する参照ブロックについてのサーチ範囲を求め、基底面ブロックマッチングを行う。そして、基底面ローカル動きベクトルLMVbを算出する。そして、基底面ローカル動きベクトルLMVbと、ステップS501で算出されたグローバル動きベクトルGMVとを用いて、前述した背景一致度合いの評価判定を、ターゲットブロック毎に行う。そして、その評価判定に基づいて、ヒット率βを求めると共に、NR処理用動きベクトルMVnrを検出する(ステップS504)。
次に、動き補償画生成部16が、NR処理用動きベクトルMVnrを用いて、参照フレームの画像データから、ブロック単位で、動き補償画を生成する(ステップS505)。
また、加算率計算部21は、ステップS504で算出されたヒット率βに基づいて、上述したようにして、画素単位で加算率αを計算する(ステップS506)。そして、加算部17では、ステップS505で生成された動き補償画とターゲット画像とを、ブロック単位で、ステップS506で計算された加算率αで加算し、NR画像を生成する(ステップS507)。
なお、上述の図63の処理フローの説明では、1回目のブロックマッチングによる動きベクトル検出時に求められたグローバルモーションGMおよびグローバル動きベクトルGMVは、階層化の再ブロックマッチングの基底面動きベクトルに対してのみ適用した。
しかし、階層化の再ブロックマッチングの縮小面、中間面でも、グローバル動きベクトルGMVと、縮小面ローカル動きベクトルLMVs、中間面ローカル動きベクトルLMVmとを用いたターゲットブロックの背景一致度合い評価を行なってもよい。そして、その場合には、その結果としての動きベクトルMVnrを、縮小面、中間面における各ターゲットブロックについての動きベクトル出力とするようにする。
そのようにした場合、縮小面、中間面における各ターゲットブロックについての動きベクトル(ローカル動きベクトル)を、通常よりも精度良く取得することが可能となる。基底面においても同様である。その際に、前述もしたように、オフセット値OFSやゲインgは、各階層に応じて適切に設定するものである。
図63の処理フローに従って処理がなされたときのブロックマッチング結果および検出された動きベクトルの様子の例を、図64(A)〜(D)に示す。この図64の例は、前述した図74(A)のターゲット画像と、図74(B)の参照画像に対して、上述の処理を適用したときの処理結果を示している。
図64(A)は、図74(A)のターゲット画像と、図74(B)の参照画像に対して、縮小面ブロックマッチングを行なったときの、縮小面ローカル動きベクトルLMVsの検出結果を示している。
また、図64(B)は、当該縮小面ローカル動きベクトルLMVsについての信頼性評価を行い、高い信頼性を有するとされた縮小面ローカル動きベクトルLMVsおよびそのターゲットブロックを示している。なお、図64(B)で、右下隅の部分のブロックは、動被写体部分であり、縮小面ローカル動きベクトルLMVsが大きなものとなっている。
そして、図64(C)は、基底面ローカル動きベクトルLMVbから算出されたグローバルモーションGMに基づいて算出された、各ターゲットブロック毎のグローバル動きベクトルGMVである。更に、図64(D)は、再度、動きベクトル検出し、上述のようにして、背景部分と動被写体部分とを評価して、NR処理用動きベクトルMVnrを検出したものを示している。
図64(D)から、背景部分の動きベクトルは、グローバル動きベクトルGMVとして綺麗に揃っている状態が見て取れる。
なお、図64(D)において、右下の大きな動きベクトルは、ローカル動きベクトルLMVとグローバル動きベクトルGMVとを用いた評価判定において、NR処理用動きベクトルとしてグローバル動きベクトルGMVを出力しないとされた動被写体ブロックである。また、白抜きのベクトルは、サーチ範囲内の有効画素領域にグローバル動きベクトルGMVと一致する参照ベクトルが存在しなかったブロックである。
図64は、効果を判り易く示すために作成したものであり、実際には、よりブロックサイズの小さいターゲットブロックサイズとなる。小さいブロック単位でヒット率βの生成を行なう方が効果的であることは、上述の通りである。
ただし、画像内の動被写体領域とベクトルを、粗い単位で検出し、追跡するようなアプリケーションの場合、図64(D)のような粗い単位で、グローバル動きベクトルGMVを用いた評価に基づく、動きベクトルMVnrを出力する方が好適である。その際、画面内全てのブロックの情報が必要なのではなく、動被写体検出の信頼性を重視するならば、図64(B)のように、1回目の動きベクトル検出時の、信頼性の高いベクトルのみから動被写体ブロックの分離をおこなって良い。
[補間処理による高精度化について]
ところで、縮小面動きベクトルや中間面動きベクトルの精度は、縮小面および中間面は基底面の画像が縮小されたものであるので、低精度となっている点を考慮する必要がある。
そこで、この低精度の問題を改善する場合には、縮小面動きベクトルあるいは中間面動きベクトルを用いる場合には、補間処理を行う。すなわち、算出された縮小面動きベクトルあるいは中間面動きベクトルで指し示される縮小面参照ブロック位置あるいは中間面参照ブロック位置の近傍の縮小面参照ブロックあるいは中間面参照ブロックのSAD値およびその位置情報を用いて、補間処理を行う。この補間処理により、ピクセル精度の縮小面動きベクトルあるいは中間面動きベクトルの検出を行うことができる。縮小面の場合を例に、以下にこの補間処理を説明する。
例えば、縦および横、ともに1/4に縮小された縮小面でブロックマッチングを行った場合、縮小面動きベクトルは、4ピクセル精度の動きベクトルである。しかし、基底面参照フレームにおいては、縮小面動きベクトルMVsをn倍した動きベクトルの近傍に、1ピクセル精度の基底面動きベクトルMVbが存在することは明らかである。
したがって、図65に示すように、縮小面での最小SAD値601が求まった場合、その近傍の複数個、例えば上下左右に隣接する4個のSAD値602,603,604,605を用いて補間処理を行い、ピクセル精度の動きベクトルの検出をすることを考えることができる。この場合、補間倍率は4倍必要ということになる。
例えば、二次曲線を用いて、SADテーブルを補間することで、例えばnピクセル単位でマッチング処理を行った縮小面SADテーブルから、ピクセル精度の動きベクトルを算出することを考える。この場合において、二次曲線近似補間ではなく、線形補間や、3次以上の高次の近似曲線補間を用いても良いが、精度とハードウエア化との兼ね合いから、この例では、二次曲線近似補間を用いている。
この二次曲線近似補間においては、図65に示すように、nピクセル精度の縮小面動きベクトルが指し示す縮小面SADテーブルのSAD値の最小値Sminと、当該最小値Sminの位置の近傍位置の複数個のSAD値(近傍縮小面SAD値という)とを使用する。この例では、近傍縮小面SAD値としては、縮小面において、最小値Sminの位置のX方向(水平方向)およびY方向(垂直方向)に隣接する4個の近傍SAD値Sx1、Sx2およびSy1、Sy2を使用する。
先ず、X方向(水平方向)の補間においては、図66に示すように、縮小面SAD値の最小値Sminと、X方向(水平方向)の近傍2点の近傍縮小面SAD値Sx1、Sx2に対して二次の近似曲線700を当てはめる。すなわち、最小値Sminと、X方向(水平方向)の近傍2点の近傍縮小面SAD値Sx1、Sx2を通る二次の近似曲線700を求める。すると、図66に示すように、この二次曲線700の極小を取る座標が、ピクセル精度のSAD値の最小値SXminとなる縮小面動きベクトル(高精度縮小面動きベクトル)のX座標Vxとなる。このときの二次曲線近似補間の式を、次式の(式19)に示す。
SXmin=1/2×(Sx2−Sx1)/(Sx2−2Smin+Sx1)…(式19)
この計算式(式19)で求めたピクセル精度のSAD値の最小値SXminがSADテーブル上で取るX座標が、ピクセル精度の縮小面SAD値の最小値となるX座標Vxとなる。
この計算式(式19)の割り算は、複数回の引き算で実現可能である。求めたいピクセル精度が、例えば、縮小面における画素ピッチの1/4の画素ピッチの精度であれば、僅か2回の引き算で求められるため、回路規模、演算時間、共に小さく、二次の近似曲線補間よりもかなり複雑な三次曲線補間と殆ど変わらない性能が実現できる。
同様に、Y方向(垂直方向)の補間においては、縮小面SAD値の最小値Sminと、Y方向(垂直方向)の近傍2点の近傍縮小面SAD値Sy1、Sy2に対して、二次の近似曲線を当て嵌める。すると、この二次近似曲線の極小値SYminを取るY座標が、ピクセル精度のSAD値の最小値となるY座標Vyとなる。このときの二次曲線近似補間の式を、次式の(式20)に示す。
SYmin=1/2×(Sy2−Sy1)/(Sy2−2Smin+Sy1)…(式20)
以上のようにして、二次曲線の近似を、X方向およびY方向の2回、行うことで、ピクセル精度の高精度の縮小面動きベクトル(Vx、Vy)が求まる。
以上の説明では、縮小面SAD値の最小値と、そのX方向(水平方向)およびY方向(垂直方向)の近傍2点の縮小面SAD値を使用したが、各方向の近傍の縮小面SAD値は2点以上であってもよい。また、二次曲線をX方向、Y方向に代えて、例えば、斜め方向に近似曲線を当て嵌めてもかまわない。さらに、X方向、Y方向に、斜め方向を加えて近似曲線を当て嵌めてもかまわない。
以上のような手段、手順を用いることにより、nピクセル単位の精度のSADテーブルの値から、ピクセル精度のベクトル検出結果が得られることを図67に示す。図67の横軸は、補間倍率であり、1次元方向に分解能を何倍にするかを表している。SADテーブルは2次元のため、テーブル面積は、この2乗の割合で削減されるのに対し、補間による誤差は、線形程度にしか増加しないことから、上述の補間手法の有用性が分かる。
なお、図65〜図67を用いて説明した補間手法は、縮小面に限らず、中間面および基底面においても適用可能であることは言うまでもない。上記の補間手法を基底面に適用した場合には、画素ピッチよりも小さい精度(サブピクセル精度)のローカル動きベクトルLMVが得られる。
基底面でサブピクセル精度のローカル動きベクトルLMVを求めた場合には、NR処理用動きベクトルMVnrとして出力するグローバル動きベクトルGMVは、これと一致する基底面のサブピクセル精度のローカル動きベクトルLMVを出力するとよい。つまり、背景と判定されるブロックについては、グローバルモーションGMから算出されたグローバル動きベクトルGMVを出力してもよいし、当該グローバル動きベクトルGMVと一致するローカル動きベクトルLMVを出力しても良い。どちらでも良いのであるが、この場合には、高精度のローカル動きベクトルLMVを、グローバル動きベクトルGMVとして出力する方がよい。
また、基底面でサブピクセル精度のローカル動きベクトルLMVを算出した場合には、動き補償画生成部16においても、サブピクセル精度で補間画像を、動き補償画として生成することできるというメリットもある。
[実施形態の効果]
上述したように、上記の実施形態によれば、画像内の全てのターゲットブロックについての動きベクトルを、高い精度で検出することができる。更に、背景画像部分であるか、動被写体部分であるかを判定することができ、その指標値であるヒット率を得ることができる。そして、そのヒット率に応じて、画像の加算率を大きくすることが可能である。
したがって、従来は困難であった、高ノイズレベルの画像からの、精度の高いローカル動きベクトルの検出や、画像全体における背景静止画領域および動被写体領域の抽出が可能になると共に、背景静止画領域においては、高い加算率で画像の重ね合わせができる。このため、所期のノイズ低減効果が得られるNR画像が得られる。
[他の実施形態および変形例]
以上の説明においては、背景/動被写体判定部150では、ターゲットフレーム内の全てのターゲットブロックについて、背景一致度合いの評価判定を行うようにした。
しかし、この実施形態では、グローバルモーションは信頼性の高いローカル動きベクトルLMVのみを用いて収束演算して求めるようにしている。信頼性の高いローカル動きベクトルLMVのうち、図31および図32におけるグローバルモーションの収束演算過程において、排除されたローカル動きベクトルLMVは、動被写体ブロックのローカル動きベクトルLMVである可能性が高い。また、グローバルモーションの収束演算において、最終的にグローバルモーションの算出に使用されたローカル動きベクトルLMVは、背景ブロックであると判定することができる。
したがって、グローバルモーションの算出時に、評価した信頼性の高いローカル動きベクトルLMVを呈するブロックは、改めて、背景か、動被写体かの評価判定を行う必要はない。そこで、これらの信頼性が高いローカル動きベクトルLMVのターゲットブロックについては、再ブロックマッチングおよび背景/動被写体判定処理は省略することができる。これにより、処理時間および演算量を削減することができる。
なお、グローバルモーションの収束演算において、最終的にグローバルモーションの算出に使用されたローカル動きベクトルLMVは、背景ブロックであると判定できるので、そのヒット率βは、β=1.0とすることができる。
そして、ヒット率βが1.0のときには、ターゲットブロックと補償画ブロックとの加算率αが1.0となるようにすることにより、背景部分については積極的に強く加算され、大きなNR効果が期待できる。
なお、上述の実施形態では、動き補償画像は、ターゲットブロック単位で動き補償するようにしたが、グローバルモーションGMが得られるので、画素単位で動き補償することもできる。すなわち、例えば、ヒット率βが1.0や0.75のように高く、背景一致度が高いターゲットブロックの画像に対しては、画素毎に、グローバルモーションからグローバル動きベクトルを算出する。そして、算出した画素毎のグローバル動きベクトルを用いて動き補償を行う。動き補償結果は、画素位置に一致しない場合があるので、補間処理を行なって動き補償画素を生成し、これにより、動き補償画を生成するようにする。
このように、画素単位で動き補償するようにすれば、より滑らかな動き補償画像が得られると期待できる。
なお、上述の実施形態では、相関値としては、SAD値を検出するようにしたが、相関値はSAD値に限定されるものではないことは言うまでもない。
また、上述の実施形態では、静止画像についての動き検出処理および画像の重ね合わせ処理は、画像メモリ部4に、複数枚の撮像画像を取り込み、当該取り込んだ複数枚の撮像画像について、上述のような動き検出および画像重ね合わせ処理を行うようにした。しかし、処理対象の複数枚の画像を、動画撮影時と同様に、リアルタイムで処理するようにすることもできる。
なお、動きベクトルの検出対象となる画像情報は、撮像画像情報に限られるものではないことは言うまでもない。
また、上述の実施形態では、動きベクトルの信頼性の判定を、動きベクトル信頼性指標値に基づいて行うようにした。しかし、相関値の第1極大値と相関値の第2極大値の差や比のみではなく、当該相関値の第1極大値を取る参照ベクトルと、相関値の第2極大値を取る参照ベクトルとの位置的な異なりをさらに用いて信頼性の判定をするようにしてもよい。また、相関値の第3極大値、さらには、それよりも、より順位の高位の極大値の値や当該極大値を取る参照ベクトルの位置分布をさらに参照して、信頼性の判定をしたりするようにしてもよい。
なお、上述の実施形態では、グローバルモーションの演算処理に当たって、演算負荷を軽くするため、ローカル動きベクトルLMVの信頼性指標値に応じた重み係数Wは、0と、1とに2値化したものを使用した。しかし、ローカル動きベクトルLMVの信頼性指標値を正規化して得た、例えば0以上、1以下の重み係数Wを、そのまま用いて、グローバルモーションの演算処理をするようにしても、勿論よい。
また、グローバルモーションは、上述した実施形態のように、アフィン変換を用いた信号処理により算出するのではなく、例えば、ジャイロなどの加速度センサなどを用いて、撮像素子全体に加わる変位として検出することもできる。そして、このように検出されたグローバルモーションを用いて、上述と同様にしてグローバル動きベクトルGMVを求め、求めたグローバル動きベクトルGMVとローカル動きベクトルLMVとを比較して、両者の一致度合いを求めることができる。
この場合において、グローバル動きベクトルGMVは、グローバルモーションから求めた1つのベクトルのみを各ローカル動きベクトルLMVと比較しても良い。また、グローバルモーションが画像(フレーム)の中心位置において生じたと判断して、当該中心位置を原点座標として、各ターゲットブロックのグローバル動きベクトルGMVを、グローバルモーションから求めても良い。
また、重ね合わせる画像についてのターゲットブロック毎のグローバル動きベクトルGMVは、外部で生成するようにすることもできる。その場合には、グローバル動きベクトルGMVは、画像処理装置では、上述のような計算を行なう必要はなく、単に、外部から取得するようにすれば良い。外部では、上述のような信号処理のみからなる計算により、あるいは、ジャイロなどのセンサを用いると共に、必要な計算を行なって、グローバル動きベクトルGMVを生成することができる。
特に、静止画像について、予め連写した画像を記憶しておき、後の時点において、NR処理をするような場合には、外部でグローバルモーションを算出し、グローバル動きベクトルGMVを取得するようにすることは比較的容易である。
上述の実施形態においては、この発明を、静止画撮影時における動きベクトル検出および背景/動被写体判定の場合に適用したが、この発明は、動画撮影時における動きベクトル検出および背景/動被写体判定をする場合にも、勿論適用できる。
図68に、動画撮影時を考慮した撮像装置のハードウエア構成例を示す。図68において、図1と同一部分には、同一番号を付してその詳細な説明は省略する。
この図68の例の動画のNR処理時においては、1V(Vは垂直周期(フレームまたはフィールド))毎に、入力される撮像素子11からの撮像画像がターゲット画像となり、加算後の出力画像の、1V前と、2V前の画像が参照画像となる。
1V前だけでなく、2V前の画像も参照するのは、インターレース画像の場合、静止物体は2V前とのマッチング率の方が高いためである。
この図68のシステムにおいても、ローカルベクトルからグローバルモーションを算出し、ターゲット画像内の各ブロックまたは各画素の動きベクトルが、グローバルモーションに一致するかどうかによってヒット率情報を生成し、後段の加算率αを制御する。これにより、NR効果の高い動画の撮像システムとなる。
なお、この図68の例の場合には、コーデック部22は、MPEG方式の圧縮符号化を行なうものが用いられる。
以上の説明は、全て画像情報が撮像画像情報の場合であったが、この発明の対象となる画像情報は、撮像画像情報に限られるものではないことは言うまでもない。
また、上述の実施形態では、加算率は、画素単位で算出するようにしたが、ターゲットブロック単位で加算率を求めて、加算を行うようにしてもよい。
15…動きベクトル算出部、16…動き補償画生成部、17…加算部、21…加算率計算部、150…背景/動被写体判定部、153…マッチング処理部、154…ローカル動きベクトル算出部、155…コントロール部、156…動きベクトル信頼性指標値算出部、157…グローバルモーション算出部、158…グローバル動きベクトル演算部