(57)【特許請求の範囲】
【請求項１】
画像データを格納する画像メモリ部と、
少なくとも、入力される画像データと、前記画像メモリ部から読み出した画像データとを用いて、第１の処理を行うと共に、少なくとも、前記第１の処理の処理結果を用いて前記画像メモリ部から読み出した画像データを用いて、第２の処理を行ない、その処理結果の画像データを外部に転送出力する画像処理部とを備える画像処理装置であって、
前記画像処理部は、
前記入力される画像データまたは前記画像メモリからの画像データに対して、４バンクのバッファメモリ部と、
前記第１の処理、前記第２の処理および前記転送出力の処理を行う処理実行部と、
前記第１の処理と、前記第２の処理と、前記画像データの外部への転送出力処理との処理シーケンスを制御するコントロール部と、
を備え、
前記コントロール部は、
前記入力される画像データが静止画データである場合には、
前記第１の処理と、前記第２の処理と、前記画像データの外部への転送出力処理とを１組として行うものとして設定された処理時間区間を、３区間設定して、前記３区間を繰り返すように制御し、同じ画像データについて実行すべき前記第１の処理、前記第２の処理および前記転送出力処理は、前記３区間のそれぞれ異なる前記処理時間区間に割り当て、
前記入力される画像データが動画データである場合には、
前記入力される画像データを取り込むバッファリング処理と、前記第１の処理と、前記第２の処理と、前記画像データの外部への転送出力処理とを１組として行うものとして設定された処理時間区間を、４区間設定して、前記４区間を繰り返すように制御し、同じ画像データについて実行すべき前記バッファリング処理、前記第１の処理、前記第２の処理および前記転送出力処理は、前記４区間のそれぞれ異なる前記処理時間区間に割り当て、前記入力される画像データは、前記４区間のそれぞれにおいて、前記バッファメモリ部の異なるバンクに、書き込むように制御し、
１つの前記処理時間区間においては、前記第１の処理を実行しているときに、次の前記処理時間区間で前記第２の処理において使用できるように、一つ前の前記第１の処理の処理結果を用いて前記画像メモリ部からの画像データの読み出しを行って、前記バッファメモリ部のバンクの１つに書き込んでおき、また、前記第１の処理を実行するための画像データを前記画像メモリ部から読み出すときに、一つ前の前記処理時間区間の前記第２の処理結果の画像データの前記転送出力処理を実行するように制御する
画像処理装置。
【請求項２】
前記画像処理部は、
前記入力される画像データが静止画データである場合には、２画面間の動きベクトルを、ブロックマッチングを用いて検出し、検出した前記動きベクトルに基づいて、動き補償された画像データを転送出力し、
前記入力される画像データが動画データである場合には、前記画像処理部は、２画面間の動きベクトルを、ブロックマッチングを用いて検出し、検出した前記動きベクトルに基づいて、動き補償された画像データを転送出力し、
前記第１の処理は、画像を縮小した状態で、前記２画面間の動きベクトルを検出する縮小面ブロックマッチング処理であり、
前記第２の処理は、前記縮小面ブロックマッチング処理で検出された前記動きベクトルに基づいて設定される画像範囲において、縮小しない画像について、前記２画面間の動きベクトルを検出し、検出した動きベクトルを用いて、前記動き補償された画像データを生成する処理である
請求項１に記載の画像処理装置。
【請求項３】
画像データを格納する画像メモリ部と、
少なくとも、入力される画像データと、前記画像メモリ部から読み出した画像データとを用いて、第１の処理を行うと共に、少なくとも、前記第１の処理の処理結果を用いて前記画像メモリ部から読み出した画像データを用いて、第２の処理を行ない、その処理結果の画像データを外部に転送出力する画像処理部とを備え、
前記画像処理部は、
前記入力される画像データまたは前記画像メモリからの画像データに対して、少なくとも３バンクのバッファメモリ部と、
前記第１の処理、前記第２の処理および前記転送出力の処理を行う処理実行部と、
前記第１の処理と、前記第２の処理と、前記画像データの外部への転送出力処理との処理シーケンスを制御するコントロール部と、
を備える画像処理装置における画像処理方法であって、
前記コントロール部は、
前記入力される画像データが静止画データである場合には、
前記第１の処理と、前記第２の処理と、前記画像データの外部への転送出力処理とを１組として行うものとして設定された処理時間区間を、３区間設定して、前記３区間を繰り返すように制御し、同じ画像データについて実行すべき前記第１の処理、前記第２の処理および前記転送出力処理は、前記３区間のそれぞれ異なる前記処理時間区間に割り当て、
前記入力される画像データが動画データである場合には、
前記入力される画像データを取り込むバッファリング処理と、前記第１の処理と、前記第２の処理と、前記画像データの外部への転送出力処理とを１組として行うものとして設定された処理時間区間を、４区間設定して、前記４区間を繰り返すように制御し、同じ画像データについて実行すべき前記バッファリング処理、前記第１の処理、前記第２の処理および前記転送出力処理は、前記４区間のそれぞれ異なる前記処理時間区間に割り当て、前記入力される画像データは、前記４区間のそれぞれにおいて、前記バッファメモリ部の異なるバンクに、書き込むように制御し、
１つの前記処理時間区間においては、前記第１の処理を実行しているときに、次の前記処理時間区間で前記第２の処理において使用できるように、一つ前の前記第１の処理の処理結果を用いて前記画像メモリ部からの画像データの読み出しを行って、前記バッファメモリ部のバンクの１つに書き込んでおき、また、前記第１の処理を実行するための画像データを前記画像メモリ部から読み出すときに、一つ前の前記処理時間区間の前記第２の処理結果の画像データの前記転送出力処理を実行するように制御する
画像処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、例えば、いわゆる階層ブロックマッチングなどのように、下位の階層の処理結果を待って、上位の階層の処理を開始しなければならないような画像処理を行う画像処理装置および画像処理方法に関する。
【背景技術】
【０００２】
２つの画面間の動きベクトルを、画像情報自身から求めるブロックマッチング手法は、歴史の古い技術である。テレビジョンカメラのパン・チルト検出や被写体追尾、ＭＰＥＧ（Ｍｏｖｉｎｇ  Ｐｉｃｔｕｒｅ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ）方式の動画符号化などを中心に開発が進み、９０年代に入ってからは、画像の重ね合わせによる、センサレス手ブレ補正や低照度撮影時のノイズ除去（Ｎｏｉｓｅ  Ｒｅｄｕｃｔｉｏｎ：以降、ＮＲと表記する）など多岐に渡って応用が進められている。
【０００３】
ブロックマッチングは、注目画面（この明細書で、画面とは、１フレーム分または１フィールド分の画像データからなり、１枚分としてディスプレイに表示される画像を意味しているものとしている。以下同じ）である参照画面と、当該参照画面の動きの元となる元画面（ターゲット画面と称する）との間の２画面間の動きベクトルを、所定の大きさの矩形領域のブロックについて、参照画面と元画面との間での相関を算出することにより算出する方法である。元画面が時間的に参照画面よりも前の画面とされる場合（例えば、ＭＰＥＧにおける動き検出の場合）と、参照画面が時間的に元画面よりも前の画面とされる場合（例えば、後述する画像フレームの重ね合わせによるノイズ低減の場合）の両方がある。
【０００４】
なお、前述したように、この明細書で、画面とは、１フレームまたは１フィールドの画像データからなる画像を意味しているが、この明細書における以下の説明の便宜上、画面は１フレームからなるものとして、画面をフレームと称することとする。したがって、参照画面は参照フレーム、元画面は元フレームと称することとする。
【０００５】
図５５〜図６０は、従来のブロックマッチングの概要を説明するための図である。ここで説明するブロックマッチング手法においては、例えば、図５５（Ａ）に示すように、元フレーム（ターゲットフレーム）１００を、それぞれ水平方向の複数画素および垂直方向の複数ライン分からなる所定の大きさの矩形領域（ブロックという）の複数個に分割する。ターゲットフレームにおけるこれらの複数個のブロック１０２のそれぞれを、ターゲットブロックという。
【０００６】
ブロックマッチングにおいては、ターゲットブロック１０２と相関性の高いブロックを、参照フレーム１０１の中から検索する。この検索の結果、相関性が最も高いとして参照フレーム１０１内に検出されたブロック１０３（図５５（Ｂ）参照）を、動き補償ブロックと呼ぶ。また、ターゲットブロック１０２と動き補償ブロック１０３との間の位置ずれ量を、動きベクトル（図５５（Ｂ）の符号１０４参照）と称する。
【０００７】
ターゲットブロック１０２と動き補償ブロック１０３との間の位置ずれ（位置ずれ量と位置ずれ方向を含む）に対応する動きベクトル１０４は、参照フレーム１０１において、ターゲットフレーム１００の各ターゲットブロック１０２の位置と同じ位置に、ターゲットブロック１０２の射影イメージブロック１０９を想定したとき、このターゲットブロックの射影イメージブロック１０９の位置（例えば中心位置）と、動き補償ブロック１０３の位置（例えば中心位置）との間の位置ずれに相当し、位置ずれ量と位置ずれの方向成分も有するものである。
【０００８】
ブロックマッチング処理の概要を説明する。図５６において点線で示すように、参照フレーム１０１において、ターゲットフレーム１００の各ターゲットブロック１０２の位置と同じ位置にターゲットブロックの射影イメージブロック１０９を想定し、このターゲットブロックの射影イメージブロック１０９の中心の座標を、動き検出の原点１０５とする。そして、動きベクトル１０４が、動き検出の原点１０５から或る範囲内に存在すると仮定し、この動き検出の原点１０５を中心した所定の範囲をサーチ範囲１０６（図５６の一点鎖線参照）と設定する。
【０００９】
次に、ターゲットブロック１０２と同じ大きさのブロック（参照ブロックという）１０８を参照画面において設定する。そして、この参照ブロック１０８の位置を、サーチ範囲１０６内において、例えば水平方向および垂直方向に、１画素または複数画素単位で移動させるようにする。したがって、サーチ範囲１０６においては、複数個の参照ブロック１０８が設定されることになる。
【００１０】
ここで、参照ブロック１０８を、サーチ範囲１０６内を移動させるというのは、この例では、動き検出原点１０５がターゲットブロックの中心位置であるので、参照ブロック１０８の中心位置を、サーチ範囲１０６内を移動させることを意味し、参照ブロック１０８を構成する画素は、サーチ範囲１０６よりもはみ出すことがある。
【００１１】
そして、サーチ範囲において、設定される各参照ブロック１０８に対して、当該各参照ブロック１０８とターゲットブロック１０２との位置ずれ量および位置ずれ方向を表すベクトル（参照ベクトルという）１０７（図５６参照）を設定し、それぞれの参照ベクトル１０７が指し示す位置にある参照ブロック１０８の画像内容と、ターゲットブロック１０２の画像内容との相関性を評価する。
【００１２】
参照ベクトル１０７は、図５７に示すように、参照ブロック１０８の水平方向（Ｘ方向）の位置ずれ量Ｖｘとし、垂直方向（Ｙ方向）の位置ずれ量をＶｙとしたとき、ベクトル（Ｖｘ，Ｖｙ）と表すことができ、参照ブロック１０８の位置座標（例えば中心位置座標）とターゲットブロック１０２の位置座標（例えば中心位置座標）とが同じときには、参照ベクトル１０７は、ベクトル（０，０）と表す。
【００１３】
例えば、参照ブロック１０８が、ターゲットブロック１０２の位置から、Ｘ方向に１画素ずれた位置にある場合、参照ベクトル１０７はベクトル（１，０）となる。また、図５８に示すように、参照ブロック１０８が、ターゲットブロック１０２の位置から、Ｘ方向に３画素、Y方向に２画素ずれた位置にある場合には、参照ベクトル１０７はベクトル（３，２）となる。
【００１４】
つまり、参照ベクトル１０７は、図５８の例に示すように、ターゲットブロック１０２および参照ブロック１０８の位置を、それぞれのブロックの中心位置とした場合、各参照ベクトル１０８は、対応する各参照ブロック１０８の中心位置とターゲットブロック１０２の中心位置との位置ずれ（位置ずれ量と位置ずれの方向を含むベクトルとなる）を意味する。
【００１５】
参照ブロック１０８は、サーチ範囲１０６において移動するものとなるが、その場合に、参照ブロック１０８の中心位置がサーチ範囲１０６内を移動する。前述もしたように、参照ブロック１０８は、水平方向および垂直方向の複数画素からなるので、ターゲットブロック１０２とブロックマッチング処理される対象となる参照ブロック１０８が移動する最大範囲は、図５８に示すように、サーチ範囲１０６よりも広いマッチング処理範囲１１０となる。
【００１６】
そして、ターゲットブロック１０２の画像内容との相関が最も強いとして検出された参照ブロック１０８の位置を、ターゲットフレーム１００のターゲットブロック１０２の、参照フレーム１０１における位置（動いた後の位置）として検出し、検出した参照ブロックを、前述した動き補償ブロック１０３とする。そして、その検出した動き補償ブロック１０３の位置と、ターゲットブロック１０２の位置との間の位置ずれ量を、方向成分を含む量としての動きベクトル１０４として検出するようにする（図５５（Ｂ）参照）。
【００１７】
ここで、ターゲットブロック１０２と、サーチ範囲１０６において移動する参照ブロック１０８との相関の強さを表す相関値は、基本的にはターゲットブロック１０２と参照ブロック１０８との対応する画素値を用いて算出されるが、その算出方法は、自乗平均を用いる方法やその他種々の方法が提案されている。
【００１８】
そのうち、動きベクトルを算出する際に一般的に用いられる相関値としては、例えば、ターゲットブロック１０２内の各画素の輝度値と、参照ブロック１０６内の対応する各画素の輝度値との差分の絶対値の、ブロック内の全画素についての総和（この差分の絶対値の総和を差分絶対値和と呼ぶ。以下、この差分絶対値和をＳＡＤ（Ｓｕｍ  ｏｆ  Ａｂｓｏｌｕｔｅ  Ｄｉｆｆｅｒｅｎｃｅ）と記載することとする）が用いられる（図５９参照）。
【００１９】
相関値としてＳＡＤ値が用いられる場合には、ＳＡＤ値が小さいほど相関が強いものとされる。したがって、サーチ範囲１０６において移動する参照ブロック１０８のうち、ＳＡＤ値が最小となる位置の参照ブロック１０８が最も相関が強い最強相関参照ブロックとなり、この最強相関参照ブロックが、動き補償ブロック１０３として検出され、その検出された動き補償ブロック１０３のターゲットブロック１０２の位置に対する位置ずれ量が動きベクトルとして検出される。
【００２０】
前述したように、ブロックマッチングでは、サーチ範囲１０６において設定される複数個の参照ブロック１０８のそれぞれの、ターゲットブロック１０２の位置に対する位置ずれ量は、方向成分を含む量としての参照ベクトル１０７で表現される。各参照ブロック１０８の参照ベクトル１０７は、参照ブロック１０８の参照フレーム１０２上の位置に応じた値となる。前述したように、ブロックマッチングでは、相関値であるＳＡＤ値が最小値となる参照ブロック１０８の参照ベクトルを、動きベクトル１０４として検出する。
【００２１】
そこで、ブロックマッチングでは、一般に、図６０に示すように、サーチ範囲１０６において設定される複数個の参照ブロック１０８のそれぞれとターゲットブロック１０２との間におけるＳＡＤ値（以下、説明の簡単のため参照ブロック１０８についてのＳＡＤ値という）を、それぞれの参照ブロック１０８の位置に応じた参照ベクトル１０７（以下、説明の簡単のため、参照ブロック１０６の位置に応じた参照ベクトル１０７を参照ブロック１０８の参照ベクトル１０７という）のそれぞれに対応させて、メモリに記憶しておき、そのメモリに記憶された全ての参照ブロック１０８についてのＳＡＤ値の中から、最小のＳＡＤ値の参照ブロック１０８を検出することで、動きベクトル１０４を検出するようにしている。
【００２２】
サーチ範囲１０６において設定された複数個の参照ブロック１０８の位置に応じた参照ベクトル１０７のそれぞれに対応させて、それぞれの参照ブロック１０８についての相関値（この例では、ＳＡＤ値）を記憶したものを相関値テーブルと呼ぶ。この例では、相関値として差分絶対値和であるＳＡＤ値を用いるので、この相関値テーブルを、差分絶対値和テーブル（以下ＳＡＤテーブルという）と呼ぶことにする。
【００２３】
図６０のＳＡＤテーブルＴＢＬが、これを示しており、このＳＡＤテーブルＴＢＬにおいて、それぞれの参照ブロック１０８についての相関値（この例ではＳＡＤ値）を相関値テーブル要素という。図６０の例では、符号１１１で指し示すＳＡＤ値は、参照ベクトルがベクトル（０，０）のときのＳＡＤ値である。そして、図６０の例では、ＳＡＤ値の最小値は、参照ベクトルがベクトル（３，２）のときの「７」であるので、求める動きベクトル１０４は、当該（３，２）となる。
【００２４】
なお、上述の説明において、ターゲットブロック１０２および参照ブロック１０８の位置とは、それらのブロックの任意の特定の位置、例えば中心位置を意味するものであり、参照ベクトル１０７は、参照フレーム１０２におけるターゲットブロック１０２の射影イメージブロック１０９の位置と、参照ブロック１０８の位置との間のずれ量（方向を含む）を示すものである。
【００２５】
そして、各参照ブロック１０８に対応する参照ベクトル１０７は、参照フレーム１０１上において、ターゲットブロック１０２に対応する射影イメージブロック１０９の位置からの、各参照ブロック１０８の位置ずれとなっているので、参照ブロック１０８の位置が特定されると、その位置に対応して参照ベクトルの値も特定される。したがって、ＳＡＤテーブル１１０のメモリにおける参照ブロックの相関値テーブル要素のアドレスが特定されると、対応する参照ベクトルは特定されることになる。
【００２６】
なお、ＳＡＤ値は、同時に、２つ以上のターゲットブロックについて計算するようにしてもよい。同時に処理するターゲットブロックが増加すると、処理は高速化する。しかし、ＳＡＤ値を計算するハードウエアの規模が増大するので、処理の高速化と、回路規模の増大のトレードオフになる。
【００２７】
ところで、上述したブロックマッチング手法は、処理対象の画像の解像度が増大すると、２画像間（２画面間）で動きとして検出される画素数が、解像度の増大に応じて大きくなるために、その動きに追従させようとすると、動きベクトルのサーチ範囲を広く取る（サーチ範囲に含まれる画素数を増大させる）必要がある。
【００２８】
ところが、このように、サーチ範囲を広く取ると、処理対象の１ブロック当たりのフレームメモリからの画素の読み込み回数が増大することから、処理時間が長くなるという問題点があった。
【００２９】
上記のように、ブロックマッチング手法は、広い検索範囲の要求に対して、処理時間、回路規模が増大する傾向にあり、これを如何に小さくするかが求められてきた。
【００３０】
これらの問題に対して、従来、階層化したブロックマッチング手法が、例えば特許文献１（特開２００６-２４６５３７号公報）が提案されている。この特許文献１の手法は、画像を縮小した縮小画像（縮小面という）においてブロックマッチングを行って、大まかな動きベクトルを検出した後、縮小しない元の画像（基底面という）において、縮小画像上で検出した動きベクトルに基づいて、更なるブロックマッチングを行って、最終的な動きベクトルを得る方法である。
【００３１】
この特許文献１の手法によれば、画像を縮小することで、検索範囲を広くすることができると共に、回路規模の増大を図ることができる。
【００３２】
上記の特許文献は、次の通りである。
【特許文献１】特開２００６−２４６５３７号公報
【発明の開示】
【発明が解決しようとする課題】
【００３３】
ところで、上述した階層化したブロックマッチングにおいては、基底面でのブロックマッチングは、縮小面におけるブロックマッチングの処理結果である動きベクトルが検出されてからでないと処理を開始することができない。
【００３４】
また、動きベクトルを用いて補正した画像データを後段に転送出力する処理は、基底面での最終的な動きベクトルが求まり、その最終的な動きベクトルで画像を処理するまでは実行することができない。
【００３５】
ブロックマッチングでは、画像メモリ部に記憶した過去の画像データとの間での動きベクトルを求めるので、前記画像メモリから画像データを読み出しながら、処理を実行してゆく。しかし、上述のような制約から、従来は、縮小面マッチング処理時間中や、基底面マッチング処理時間中は、画像メモリ部からのメモリアクセスは、行っていない。
【００３６】
したがって、通常、縮小面におけるブロックマッチング処理、基底面におけるブロックマッチング処理、さらに、最終的な動きベクトルで処理した画像の転送出力処理の３つの処理からなる時間が１ブロックについてのマッチング処理時間となり、画像メモリ部からの読み出しなどが、効率的な行われておらず、処理速度が遅くなっているという問題があった。
【００３７】
この問題は、上述した階層化ブロックマッチング手法に限らず、処理を階層化して、下位の階層の処理結果を用いて、上位の処理を行う場合おいて生じる。
【００３８】
この発明は、この問題点にかんがみ、階層化処理を行う場合においても、より効率よく処理を行えるようにして、処理速度の向上を図ることができる画像処理装置および方法を提供することを目的とする。
【課題を解決するための手段】
【００３９】
本発明の画像処理装置は、画像データを格納する画像メモリ部と、少なくとも、入力される画像データと、前記画像メモリ部から読み出した画像データとを用いて、第１の処理を行うと共に、少なくとも、前記第１の処理の処理結果を用いて前記画像メモリ部から読み出した画像データを用いて、第２の処理を行ない、その処理結果の画像データを外部に転送出力する画像処理部とを備える画像処理装置であって、前記画像処理部は、前記入力される画像データまたは前記画像メモリからの画像データに対して、４バンクのバッファメモリ部と、前記第１の処理、前記第２の処理および前記転送出力の処理を行う処理実行部と、前記第１の処理と、前記第２の処理と、前記画像データの外部への転送出力処理との処理シーケンスを制御するコントロール部と、を備え、前記コントロール部は、前記入力される画像データが静止画データである場合には、前記第１の処理と、前記第２の処理と、前記画像データの外部への転送出力処理とを１組として行うものとして設定された処理時間区間を、３区間設定して、前記３区間を繰り返すように制御し、同じ画像データについて実行すべき前記第１の処理、前記第２の処理および前記転送出力処理は、前記３区間のそれぞれ異なる前記処理時間区間に割り当て、前記入力される画像データが動画データである場合には、前記入力される画像データを取り込むバッファリング処理と、前記第１の処理と、前記第２の処理と、前記画像データの外部への転送出力処理とを１組として行うものとして設定された処理時間区間を、４区間設定して、前記４区間を繰り返すように制御し、同じ画像データについて実行すべき前記バッファリング処理、前記第１の処理、前記第２の処理および前記転送出力処理は、前記４区間のそれぞれ異なる前記処理時間区間に割り当て、前記入力される画像データは、前記４区間のそれぞれにおいて、前記バッファメモリ部の異なるバンクに、書き込むように制御し、１つの前記処理時間区間においては、前記第１の処理を実行しているときに、次の前記処理時間区間で前記第２の処理において使用できるように、一つ前の前記第１の処理の処理結果を用いて前記画像メモリ部からの画像データの読み出しを行って、前記バッファメモリ部のバンクの１つに書き込んでおき、また、前記第１の処理を実行するための画像データを前記画像メモリ部から読み出すときに、一つ前の前記処理時間区間の前記第２の処理結果の画像データの前記転送出力処理を実行するように制御する。
【００４０】
第２の発明の画像処理方法は、画像データを格納する画像メモリ部と、少なくとも、入力される画像データと、前記画像メモリ部から読み出した画像データとを用いて、第１の処理を行うと共に、少なくとも、前記第１の処理の処理結果を用いて前記画像メモリ部から読み出した画像データを用いて、第２の処理を行ない、その処理結果の画像データを外部に転送出力する画像処理部とを備え、前記画像処理部は、前記入力される画像データまたは前記画像メモリからの画像データに対して、少なくとも３バンクのバッファメモリ部と、前記第１の処理、前記第２の処理および前記転送出力の処理を行う処理実行部と、前記第１の処理と、前記第２の処理と、前記画像データの外部への転送出力処理との処理シーケンスを制御するコントロール部と、を備える画像処理装置における画像処理方法であって、前記コントロール部は、前記入力される画像データが静止画データである場合には、前記第１の処理と、前記第２の処理と、前記画像データの外部への転送出力処理とを１組として行うものとして設定された処理時間区間を、３区間設定して、前記３区間を繰り返すように制御し、同じ画像データについて実行すべき前記第１の処理、前記第２の処理および前記転送出力処理は、前記３区間のそれぞれ異なる前記処理時間区間に割り当て、前記入力される画像データが動画データである場合には、前記入力される画像データを取り込むバッファリング処理と、前記第１の処理と、前記第２の処理と、前記画像データの外部への転送出力処理とを１組として行うものとして設定された処理時間区間を、４区間設定して、前記４区間を繰り返すように制御し、同じ画像データについて実行すべき前記バッファリング処理、前記第１の処理、前記第２の処理および前記転送出力処理は、前記４区間のそれぞれ異なる前記処理時間区間に割り当て、前記入力される画像データは、前記４区間のそれぞれにおいて、前記バッファメモリ部の異なるバンクに、書き込むように制御し、１つの前記処理時間区間においては、前記第１の処理を実行しているときに、次の前記処理時間区間で前記第２の処理において使用できるように、一つ前の前記第１の処理の処理結果を用いて前記画像メモリ部からの画像データの読み出しを行って、前記バッファメモリ部のバンクの１つに書き込んでおき、また、前記第１の処理を実行するための画像データを前記画像メモリ部から読み出すときに、一つ前の前記処理時間区間の前記第２の処理結果の画像データの前記転送出力処理を実行するように制御する。
【発明の効果】
【００４３】
この発明によれば、階層化された処理であっても、それぞれの処理をパイプライン化することができて、画像メモリ部からの画像データを効率的に読み出すことができ、処理速度の向上を図ることができる。
【発明を実施するための最良の形態】
【００４４】
以下、この発明による画像処理方法を用いた画像処理装置の実施形態として、撮像装置の場合を例にとって、図を参照しながら説明する。また、検出した動きベクトルを用いて行う処理として、複数枚の画像を重ね合わせてノイズ低減を行う場合の例について説明する。
【００４５】
［この発明による画像処理装置の実施形態］
以下に説明する実施の形態の撮像装置では、図２に示すように、連続して撮影された複数枚の画像、例えばＰ１，Ｐ２，Ｐ３を、動き検出および動き補償を用いて位置合わせをした後、重ね合わせすることで、ノイズが低減された画像Ｐｍｉｘを得ることができるようにしている。すなわち、複数枚の画像のそれぞれにおけるノイズはランダムなものであるので、同一内容の画像を重ね合わせることで、画像に対してノイズが低減されるものである。
【００４６】
以下の説明において、動き検出および動き補償を用いて複数枚の画像を重ね合わせて、ノイズを低減することをＮＲ（Ｎｏｉｓｅ Ｒｅｄｕｃｔｉｏｎ）と呼び、ＮＲによりノイズ低減された画像をＮＲ画像と称することとする。
【００４７】
この明細書では、ノイズ低減を施したい画面（画像）をターゲット画面（ターゲットフレーム）、重ね合わせたい画面を参照画面（参照フレーム）と定義する。連続して撮影された画像は、撮影者の手ブレなどにより、画像の位置がずれており、両画像の重ね合わせを行うには、位置合わせが重要となる。ここで、考慮しなければならないのは、手ブレのような画面全体のブレと共に、画面内における被写体の動きも存在することである。
【００４８】
このため、被写体に対してもノイズ低減効果を高めるためには、図３に示すように、ターゲットフレーム１００を分割して生成される複数個のターゲットブロック１０２のそれぞれ単位での位置合わせが必要になる。
【００４９】
したがって、この実施の形態では、複数個のターゲットブロック１０２の全てについて、ブロック単位の動きベクトル（以下、ブロック動きベクトルという）１０４Ｂを検出し、それぞれのターゲットブロック１０２について、対応するブロック動きベクトル１０４Ｂを用いて位置合わせを行い、画像を重ね合わせるようにする。
【００５０】
この実施の形態の撮像装置において、静止画撮影時は、図４に示すように、高速で複数枚の画像の撮影を行い、１枚目の撮影画像をターゲットフレーム１００とし、２枚目以降、所定枚数の撮影画像を参照フレーム１０１とし、重ね合わせを行い、その重ね合わせたものを静止画撮影画像として記録するようにする。すなわち、撮影者が撮像装置のシャッターボタンを押下操作すると、高速で前記所定枚数の画像が撮影され、その１枚目に撮影した画像（フレーム）に対して、時間的に後で撮影された複数枚の画像（フレーム）が、重ね合わされることになる。
【００５１】
また、動画撮影時は、図５のように、撮像素子から出力されている現フレームの画像をターゲットフレーム１００の画像とし、その前フレームの過去の画像を参照フレーム１０１の画像とする。したがって、現フレームの画像のノイズ低減を行うために、現フレームの前フレームの画像を現フレームに重ね合わせるということになる。
【００５２】
なお、上述の図４および図５の画像の重ね合わせの方法の説明の場合は、記録する動画画像のフレームレートを６０ｆｐｓ（ｆｌａｍｅ／ｓｅｃｏｎｄ）としたときに、撮像素子から当該６０ｆｐｓのフレームレートの２枚の画像フレームを重ね合わせて、その結果としてノイズの低減された６０ｆｐｓのフレームレートで撮像画像信号が得られる場合である。
【００５３】
しかし、撮像素子から、より高速の、例えば２４０ｆｐｓの高フレームレートで、撮像画像が出力されるように構成されている場合において、動画撮影時においても、４枚ずつの画像を重ねて１枚の動画フレームを生成することで、６０ｆｐｓのフレームレートの撮像画像信号を得るようにすることもできる。もちろん、２４０ｆｐｓの撮像動画画像を、この例と同様にして、２枚の画像フレームを重ね合わせて、その結果として２４０ｆｐｓのフレームレートのノイズ低減された撮像画像信号を得るようにすることもできる。
【００５４】
なお、この実施の形態においては、さらに、より高精度で画像の重ね合わせができるように、処理対象画像の画素ピッチの精度（ピクセル精度という）よりも高精度、つまり、元の画面（ターゲットフレーム）の画素ピッチよりも小さいピッチの高精度（この高精度をサブピクセル精度と呼ぶことにする）で、ブロック動きベクトルを検出するようにする。このサブピクセル精度での動きベクトル算出のために、後述するように、この実施の形態においては、ピクセル精度で求めた動きベクトルと、その近傍の参照ベクトルとを用いて補間処理をするようにする。
【００５５】
図１は、この発明の画像処理装置の実施形態としての撮像装置の一例のブロック図を示すものである。
【００５６】
この図１に示すように、この実施形態の撮像装置は、システムバス２にＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１が接続されると共に、システムバス２に、撮像信号処理系１０や、ユーザ操作入力部３、画像メモリ部４、記録再生装置部５などが接続されて構成されている。なお、この明細書においては、ＣＰＵ１は、図示は省略するが、種々のソフトウエア処理を行なうプログラムを記憶するＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）やワークエリア用ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などを含むものとしている。
【００５７】
ユーザ操作入力部３を通じた撮像記録開始操作を受けて、図１の撮像装置の撮像信号処理系は、後述するような撮像画像データの記録処理を行なう。また、ユーザ操作入力部３を通じた撮像記録画像の再生開始操作を受けて、図１の撮像装置の撮像信号処理系１０は、記録再生装置部５の記録媒体に記録された撮像画像データの再生処理を行なう。なお、撮像信号処理系１０の後述する各部は、制御レジスタ部７を通じたＣＰＵ３の制御コマンドを受けて、ＣＰＵ３の制御を受けながら、それぞれの処理を実行するものである。
【００５８】
図１に示すように、撮像信号処理系１０においては、撮像レンズ１０Ｌを備えるカメラ光学系（図示は省略）を通じた被写体からの入射光は、撮像素子１１に照射されて撮像される。この例では、撮像素子１１は、ＣＣＤ（Ｃｈａｒｇｅ  Ｃｏｕｐｌｅｄ  Ｄｅｖｉｃｅ）イメージャで構成されている。なお、撮像素子１２は、ＣＭＯＳ（Ｃｏｍｐｌｅｍｅｎｔａｒｙ  Ｍｅｔａｌ  Ｏｘｉｄｅ  Ｓｅｍｉｃｏｎｄｕｃｔｏｒ）イメージャで構成してもよい。
【００５９】
この例の撮像装置においては、撮像記録開始操作がなされると、レンズ１０Ｌを通じて入力された映像が、撮像素子１１により撮像画像信号に変換され、タイミング信号発生部１２からのタイミング信号に同期した信号として、赤（Ｒ）、緑（Ｇ）、青（Ｂ）の３原色から構成されるベイヤー配列のＲＡＷ信号（生の信号）であるアナログ撮像信号が出力される。出力されたアナログ撮像信号は、前処理部１３に供給され、欠陥補正やγ補正等の前処理が施され、データ変換部１４に供給される。
【００６０】
データ変換部１４は、これに入力されたＲＡＷ信号であるアナログ撮像信号を、輝度信号成分Ｙと、赤／青の色差信号成分Ｃｒ／Ｃｂとにより構成されるデジタル撮像信号（ＹＣデータ）に変換し、そのデジタル撮像信号を画像補正・解像度変換部１５に供給する。画像補正・解像度変換部１５では、ユーザ操作入力部３を通じて指定された解像度に、デジタル撮像信号を変換し、システムバスを介して、画像メモリ部４に供給する。
【００６１】
ユーザ操作入力部３を通じた撮影指示が、シャッターボタンの押下による静止画撮影指示であったときには、画像補正・解像度変換部１５で解像度変換されたデジタル撮像信号は、複数フレーム分が画像メモリ部４に書き込まれる。そして、複数フレーム分の画像が画像メモリ部４に書き込まれた後、ターゲットフレームの画像データと参照フレームの画像データが、動き検出・動き補償部１６によって読み込まれ、後述するようなこの実施形態におけるブロックマッチング処理がなされて、動きベクトルが検出され、当該検出された動きベクトルに基づいて、画像重ね合わせ部１７で後述するような画像の重ね合わせ処理が行われ、その重ね合わせ結果、ノイズ低減されたＮＲ画像の画像データが画像メモリ部４に格納される。
【００６２】
そして、この画像メモリ部４に格納された重ね合わせ結果のＮＲ画像の画像データは、静止画コーデック部１８においてコーデック変換され、システムバス２を通じて記録再生装置部５の例えばＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）やハードディスクなどの記録媒体に記録される。この実施形態では、静止画コーデック部１８では、ＪＰＥＧ（Ｊｏｉｎｔ  Ｐｈｏｔｏｇｒａｐｈｉｃ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ）方式の静止画についての画像圧縮符号化処理が行われる。
【００６３】
また、この静止画撮影時、シャッターボタンが押下操作される前においては、画像補正・解像度変換部１５からの画像データは、画像メモリ部４を通じてＮＴＳＣ（Ｎａｔｉｏｎａｌ  Ｔｅｌｅｖｉｓｉｏｎ  Ｓｙｓｔｅｍ  Ｃｏｍｍｉｔｔｅｅ）エンコーダ２０に供給され、このＮＴＳＣエンコーダ２０によりＮＴＳＣ方式の標準カラー映像信号に変換され、例えばＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ；液晶ディスプレイ）からなるモニターディスプレイ６に供給され、静止画撮影時のモニター画像がその表示画面にモニター表示される。
【００６４】
また、ユーザ操作入力部３を通じた撮影指示が、動画記録ボタンの押下による動画撮影指示であったときには、解像度変換された画像データは、画像メモリ部４に書き込まれると共に、リアルタイムに動き検出・動き補償部１６へ送られ、後述するようなこの実施形態におけるブロックマッチング処理がなされて、動きベクトルが検出され、当該検出された動きベクトルに基づいて、画像重ね合わせ部１７で後述するような画像の重ね合わせ処理が行われ、その重ね合わせ結果、ノイズ低減されたＮＲ画像の画像データが画像メモリ部４に格納される。
【００６５】
そして、この画像メモリ部４に格納された重ね合わせ結果のＮＲ画像の画像データは、ＮＴＳＣエンコーダ部２０を通じてモニターディスプレイ６の表示画面に出力されながら、動画コーデック部１９でコーデック変換され、システムバス２を通じて記録再生装置部５に供給され、ＤＶＤやハードディスクなどの記録媒体に記録される。この実施形態では、動画コーデック部１８では、ＭＰＥＧ（Ｍｏｖｉｎｇ  Ｐｉｃｔｕｒｅ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ）方式の動画についての画像圧縮符号化処理が行われる。
【００６６】
この記録再生装置部５の記録媒体に記録された撮像画像データは、ユーザ操作入力部３を通じた再生開始操作に応じて読み出され、動画コーデック部１９に供給されて、再生デコードされる。そして、再生デコードされた画像データはＮＴＳＣエンコーダ２０を通じてモニターディスプレイ６に供給され、再生画像がその表示画面に表示される。なお、図１では、図示を省略したが、ＮＴＳＣエンコーダ２０からの出力映像信号は、映像出力端子を通じて外部に導出することが可能とされている。
【００６７】
上述した動き検出・動き補償部１６は、ハードウエアにより構成することできるし、また、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）を用いて構成することもできる。さらには、ＣＰＵ１によりソフトウエア処理とすることもできる。
【００６８】
［動き検出・動き補償部１６の説明］
動き検出・動き補償部１６では、この実施の形態では、基本的には、図５５〜図６０を用いて説明した、ＳＡＤ値を用いてブロックマッチング処理を行うことで、動きベクトル検出を行うようにする。ただし、この実施の形態では、動き検出・動き補償部１６は、後述するようなハードウエアで構成され、共通のハードウエアで階層化したブロックマッチング処理を行うようにする。また、後述するように、共通のハードウエアで、静止画についてのノイズ低減処理と、動画についてのノイズ低減処理とが実現できるように構成している。
【００６９】
＜実施の形態の階層化ブロックマッチング処理の概要＞
一般的な従来のブロックマッチングにおける動きベクトル検出処理は、ピクセル単位（１ピクセル単位または複数ピクセル単位）で参照ブロックを移動させて、各移動位置における参照ブロックについてのＳＡＤ値を算出し、その算出したＳＡＤ値の中から最小値を示すＳＡＤ値を検出し、当該最小ＳＡＤ値を呈する参照ブロック位置に基づいて動きベクトルを検出するようにする。
【００７０】
しかし、このような従来の動きベクトル検出処理では、サーチ範囲内をピクセル単位で参照ブロックを移動させるようにするので、検索するサーチ範囲に比例して、ＳＡＤ値を算出するマッチング処理回数が多くなって、マッチング処理時間が大きくなると共に、ＳＡＤテーブルの容量も大きくなるという問題があった。
【００７１】
そこで、この実施の形態では、ターゲット画像（ターゲットフレーム）に対して縮小画像を作成し、作成した縮小画像でブロックマッチングを行い、縮小画像での動き検出結果を基に、もとのターゲット画像でのブロックマッチングを行う。ここで、縮小画像のことを縮小面、縮小化をしていない元の画像のことを基底面と呼ぶことにする。したがって、この第２の実施の形態では、縮小面でのブロックマッチングを行ったあと、そのマッチング結果を用いて基底面でのブロックマッチングを行う。
【００７２】
図６および図７に、ターゲットフレーム（画像）および参照フレーム（画像）の画像縮小化のイメージを示す。すなわち、この実施の形態においては、例えば図６に示すように、基底面ターゲットフレーム１３０は、水平方向および垂直方向のそれぞれを、１／ｎ（ｎは正の数）に縮小して、縮小面ターゲットフレーム１３２とする。したがって、基底面ターゲットフレーム１３０を複数個に分割して生成した基底面ターゲットブロック１３１は、縮小面ターゲットフレームでは、水平方向および垂直方向のそれぞれが１／ｎ×１／ｎに縮小された縮小面ターゲットブロック１３３となる。
【００７３】
そして、ターゲットフレームの画像縮小倍率１／ｎに合わせて、参照フレームを縮小する。すなわち、図７に示すように、基底面参照フレーム１３４は、水平方向および垂直方向のそれぞれを、１／ｎに縮小して、縮小面参照フレーム１３５とする。そして、基底面参照フレーム１３４上で検出された動き補償ブロック１０３についての動きベクトル１０４は、縮小面参照フレーム１３５では、１／ｎ×１／ｎに縮小された縮小面動きベクトル１３６として検出される。
【００７４】
なお、上記の例では、ターゲットフレームと参照フレームとの画像縮小倍率は同じとしたが、演算量削減のため、ターゲットフレーム（画像）と参照フレーム（画像）とで異なる画像縮小倍率を用い、画素補間等の処理で、両フレームの画素数を合わせて、マッチングを行うようにしてもよい。
【００７５】
また、水平方向および垂直方向のそれぞれの縮小倍率を同一としたが、水平方向と垂直方向とで、縮小倍率を異ならせるようにしても良い。例えば水平方向は１／ｎに縮小し、垂直方向は、１／ｍ（ｍは正の数で、ｎ≠ｍ）に縮小する場合には、縮小画面は、元の画面の１／ｎ×１／ｍの大きさになる。
【００７６】
図８に、縮小面参照ベクトルと基底面参照ベクトルの関係を示す。基底面参照フレーム１３４において、動き検出原点１０５と、サーチ範囲１０６が、図８（Ａ）に示すように決定されたとすると、１／ｎ×１／ｎに画像縮小された縮小面参照フレーム１３５上では、図８（Ｂ）に示すように、サーチ範囲は、１／ｎ×１／ｎに縮小された縮小面サーチ範囲１３７とされる。
【００７７】
そして、この実施の形態では、縮小面サーチ範囲１３７内において、縮小面参照フレーム１３５での動き検出原点１０５からの位置ズレ量を表す縮小面参照ベクトル１３８を設定し、それぞれの縮小面参照ベクトル１３８が指し示す位置にある縮小面参照ブロック１３９と、縮小面ターゲットブロック１３１（図８では図示は省略）との相関性を評価する。
【００７８】
この場合、縮小画像において、ブロックマッチングを行うので、縮小面参照フレーム１３５においてＳＡＤ値を算出すべき縮小面参照ブロック位置（縮小面参照ベクトル）の数を少なくすることができ、ＳＡＤ値の算出回数（マッチング処理回数）が少なくなる分だけ、処理を高速化することができると共に、ＳＡＤテーブルを小規模とすることができる。
【００７９】
図９に示すように、縮小面サーチ範囲１３７に応じて定まる縮小面マッチング処理範囲１４３内に設定される複数個の縮小面参照ブロック１３９と縮小面ターゲットブロック１３１とのブロックマッチングによる相関性評価により、縮小面参照フレーム１３５における縮小面動きベクトル１３６が算出される。この縮小面動きベクトル１３６の精度は、画像が１／ｎ×１／ｎに縮小されているので、１ピクセルのｎ倍の低精度となっている。そこで、この算出された縮小面動きベクトル１３６をｎ倍しても、基底面参照フレーム１３４において、１ピクセル精度の動きベクトル１０４は得られない。
【００８０】
しかし、基底面参照フレーム１３４においては、縮小面動きベクトル１３６をｎ倍した動きベクトルの近傍に、１ピクセル精度の基底面動きベクトル１０４が存在することは明らかである。
【００８１】
そこで、この実施の形態では、図８（Ｃ）および図９に示すように、基底面参照フレーム１３４において、縮小面動きベクトル１３６をｎ倍した動きベクトル（基底面参照ベクトル１４１）が指し示す位置を中心として、基底面動きベクトル１０４が存在するであろうと考えられる狭い範囲に、基底面サーチ範囲１４０を設定し、設定された基底面サーチ範囲１４０に応じて基底面マッチング処理範囲１４４を設定する。
【００８２】
そして、図８（Ｃ）に示すように、この基底面サーチ範囲１４０内の位置を示すものとして、基底面参照フレーム１３４における基底面参照ベクトル１４１を設定し、各基底面参照ベクトル１４１が指し示す位置に基底面参照ブロック１４２を設定して、基底面参照フレーム１３４におけるブロックマッチングを行うようにする。
【００８３】
ここで設定された基底面サーチ範囲１４０および基底面マッチング処理範囲１４４は、図９に示すように、縮小面サーチ範囲１３７および縮小面マッチング処理範囲１４３を縮小率の逆数倍であるｎ倍したサーチ範囲１３７´およびマッチング処理範囲１４３´に比較して非常に狭い範囲でよい。
【００８４】
したがって、階層化マッチングを行わずに、基底面においてのみブロックマッチング処理をした場合には、基底面においては、サーチ範囲１３７´およびマッチング処理範囲１４３´において、複数個の参照ブロックを設定して、ターゲットブロックとの相関値を求める演算をする必要があるが、階層化マッチング処理においては、図９のように、非常に狭い範囲においてのみマッチング処理を行えばよい。
【００８５】
このため、当該狭い範囲である、基底面サーチ範囲１４０および基底面マッチング処理範囲１４４に設定される基底面参照ブロックの数は非常に少なくなり、マッチング処理回数（相関値演算回数）および保持するＳＡＤ値を非常に小さくすることができ、処理を高速化することができると共に、ＳＡＤテーブルを小規模化することができるという効果を得ることができる。
【００８６】
こうして、基底面参照フレーム１３４において、ピクセル精度の基底面動きベクトル１３６が検出できたら、この実施の形態においては、基底面動きベクトル１３６が指し示す参照ブロックのＳＡＤ値、すなわち、最小ＳＡＤ値と、その近傍の近傍ＳＡＤ値とを用いて、この例においても二次曲線近似補間処理を行って、サブピクセル精度の高精度動きベクトルを算出するようにする。
【００８７】
サブピクセル精度の高精度動きベクトルについて説明する。前述したブロックマッチング手法では、ピクセル単位でブロックマッチングを行っているため、動きベクトルはピクセル精度でしか算出されない。図６０に示したように、マッチング処理を行った点、つまり、参照ブロックの位置は、ピクセル精度で存在し、より精度の高い動きベクトルを算出するには、サブピクセル単位でのマッチング処理が必要になる。
【００８８】
Ｎ倍のピクセル精度（画素ピッチは、１／Ｎ）の動きベクトルを算出するために、Ｎ倍のピクセル単位でマッチング処理を行うと、ＳＡＤテーブルは約Ｎ２倍の大きさになり、膨大なメモリが必要になる。また、ブロックマッチング処理のために、Ｎ倍にアッパーサンプルした画像を生成しなくてはならず、ハードウエアの規模は飛躍的に増大する。
【００８９】
そこで、二次曲線を用いて、ＳＡＤテーブルを補間することで、ピクセル単位でマッチング処理を行ったＳＡＤテーブルから、サブピクセル精度の動きベクトルを算出することを考える。この場合において、二次曲線近似補間ではなく、線形補間や、３次以上の高次の近似曲線補間を用いても良いが、精度とハードウエア化との兼ね合いから、この例では、二次曲線近似補間を用いている。
【００９０】
この二次曲線近似補間においては、図１０に示すように、ピクセル精度の動きベクトル１０４が指し示すＳＡＤテーブルのＳＡＤ値の最小値Ｓmin（図１０の参照符号１１３参照）と、当該最小値Ｓminの位置の近傍位置の複数個のＳＡＤ値（近傍ＳＡＤ値という）、この例では、最小値Ｓminの位置のＸ方向およびＹ方向に隣接する４個の近傍ＳＡＤ値Ｓx1、Ｓx2およびＳy1、Ｓy2（図１０の参照符号１１４，１１５，１１６，１１７参照）を使用する。
【００９１】
図１１に示すように、ＳＡＤ値の最小値Ｓminと、Ｘ方向（水平方向）の近傍２点の近傍ＳＡＤ値Ｓx1、Ｓx2を使って、二次の近似曲線１１８を当てはめ、この二次曲線１１８の極小を取る座標が、サブピクセル精度のＳＡＤ値の最小値ＳＸminとなる動きベクトル（高精度動きベクトル）のＸ座標Ｖｘとなる。このときの二次曲線近似補間の式を、次式（１）に示す。
【００９２】
ＳＸmin＝１／２×（Ｓx2−Ｓx1）／（Ｓx2−２Ｓmin＋Ｓx1）…式（１）
この計算式（１）で求めたサブピクセル精度のＳＡＤ値の最小値ＳＸminがＳＡＤテーブル上で取るＸ座標が、サブピクセル精度のＳＡＤ値の最小値となるＸ座標Ｖｘとなる。
【００９３】
この計算式（１）の割り算は、複数回の引き算で実現可能である。求めたいサブピクセル精度が、例えば元の画素ピッチの１／４の画素ピッチの精度であれば、僅か２回の引き算でも求められるため、回路規模、演算時間、共に小さく、二次の近時曲線補間よりもかなり複雑な三次曲線補間と殆ど変わらない性能が実現できる。
【００９４】
同様に、ＳＡＤ値の最小値Ｓminと、Ｙ方向（垂直方向）の近傍２点の近傍ＳＡＤ値Ｓy1、Ｓy2を使って、二次の近似曲線を当て嵌め、この二次曲線の極小値ＳＹminを取るＹ座標が、サブピクセル精度のＳＡＤ値の最小値となるＹ座標Ｖｙとなる。このときの二次曲線近似補間の式を、次式（２）に示す。
【００９５】
ＳＹmin＝１／２×（Ｓy2−Ｓy1）／（Ｓy2−２Ｓmin＋Ｓy1）…式（２）
以上のようにして、二次曲線の近似を、Ｘ方向およびＹ方向の２回、行うことで、サブピクセル精度の高精度の動きベクトル（Ｖｘ、Ｖｙ）が求まる。
【００９６】
以上の説明では、ＳＡＤ値の最小値と、そのＸ方向（水平方向）およびＹ方向（垂直方向）の近傍２点のＳＡＤ値を使用したが、各方向の近傍のＳＡＤ値は２点以上であってもよい。また、二次曲線をＸ方向、Ｙ方向に代えて、例えば、斜め方向に近似曲線を当て嵌めてもかまわない。さらに、Ｘ方向、Ｙ方向に、斜め方向を加えて近似曲線を当て嵌めてもかまわない。
【００９７】
以上のような手段、手順を用いることにより、ピクセル単位の精度のＳＡＤテーブルの値から、サブピクセル精度のベクトル検出結果が得られることを図１２に示す。図１２の横軸は、補間倍率であり、１次元方向に分解能を何倍にするかを表している。ＳＡＤテーブルは２次元のため、テーブル面積は、この２乗の割合で削減されるのに対し、補間による誤差は、線形程度にしか増加しないことから、上述の補間手法の有用性が分かる。
【００９８】
＜動き検出・動き補償部１６の構成例＞
図１３に、動き検出・動き補償部１６の構成例のブロック図を示す。この例では、動き検出・動き補償部１６は、ターゲットブロック１０２の画素データを保持するターゲットブロックバッファ部１６１と、参照ブロック１０８の画素データを保持する参照ブロックバッファ部１６２と、ターゲットブロック１０２と参照ブロック１０８とで対応する画素についてのＳＡＤ値を計算するマッチング処理部１６３と、マッチング処理部１６３から出力されるＳＡＤ値情報から動きベクトルを算出する動きベクトル算出部１６４と、それぞれのブロックを制御するコントロール部１６５と、を備える。
【００９９】
そして、動き検出・動き補償部１６と、画像メモリ部４とは、システムバス２を通じて接続されている。すなわち、この例では、システムバス２とターゲットブロックバッファ部１６１および参照ブロックバッファ部１６２との間には、それぞれバス・インターフェース部２１およびバス・インターフェース部２２が接続されている。ここで、システムバス２でのプロトコルは、この例では、ＡＸＩインターコネクトが用いられている。
【０１００】
静止画撮像時においては、ターゲットブロックバッファ部１６１には、画像メモリ部４に記憶されている縮小面ターゲット画像Ｐrtまたは基底面ターゲット画像Ｐbtの画像フレームからの縮小面ターゲットブロックまたは基底面ターゲットブロックが書き込まれる。縮小面ターゲット画像Ｐrtまたは基底面ターゲット画像Ｐbtは、１枚目は、シャッターボタン押下後の最初の撮像フレームの画像がターゲットフレーム１０２として書き込まれ、参照画像とのブロックマッチングに基づき画像の重ね合わせがなされると、当該画像の重ね合わせ後のＮＲ画像に書き換えられてゆく。
【０１０１】
参照ブロックバッファ部１６２には、画像メモリ部４に記憶されている縮小面参照画像Ｐrrまたは基底面参照画像Ｐbrの画像フレームからの縮小面参照ブロックまたは基底面参照ブロックが書き込まれる。縮小面参照画像Ｐrrまたは基底面参照画像Ｐbrは、前記最初の撮像フレームの後の撮像フレームが、参照フレーム１０８として書き込まれる。
【０１０２】
この場合、連続して撮影された複数枚の撮像画像を取り込みながら画像の重ね合わせ処理を行う場合（これを撮影中加算と呼ぶことにする）には、基底面参照画像および縮小面参照画像としては、前記最初の撮像フレームの後の撮像フレームが、１枚ずつ順次に取り込まれる。したがって、基底面参照画像および縮小面参照画像としては、１枚ずつを保持すればよい。
【０１０３】
しかし、連続して撮影された複数枚の撮像画像を取り込んだ後、動き検出・動き補償部１６および画像重ね合わせ部１７で、動きベクトル検出を行い、画像の重ね合わせを実行するようにする場合（これを撮影後加算と呼ぶことにする）には、基底面参照画像および縮小面参照画像としては、前記最初の撮像フレームの後の複数枚の撮像フレームの全てを格納保持しておく必要がある。
【０１０４】
撮像装置としては、撮影中加算および撮影後加算のいずれも用いることができるが、この実施形態では、静止画ＮＲ処理は、多少処理時間がかかっても、ノイズが低減された綺麗な画像が要求されることを考慮して、撮影後加算の処理を採用している。この実施形態における静止画ＮＲ処理の詳細な動作説明は、後で詳述する。
【０１０５】
一方、動画撮影時においては、動き検出・動き補償部１６には、画像補正・解像度変換部１５からの撮像フレームがターゲットフレーム１０２として入力される。ターゲットブロックバッファ部１６１には、この画像補正・解像度変換部１５からの、ターゲットフレームから抽出されたターゲットブロックが書き込まれる。また、参照ブロックバッファ部１６２には、前記ターゲットフレームよりも１枚前の、画像メモリ部４に記憶されている撮像フレームが、参照フレーム１０８とされ、この参照フレーム（基底面参照画像Ｐbrまたは縮小面参照画像Ｐrr）からの参照ブロックが書き込まれる。
【０１０６】
この動画撮影時には、画像メモリ部４には、画像補正・解像度変換部１５からのターゲットフレームとの間でブロックマッチングをすべき、１枚前の撮像画像フレームを基底面参照画像Ｐbrおよび縮小面参照画像Ｐrrとして保持するだけでよく、画像メモリ部４に保持する画像情報は、１枚分（１フレーム分）でよいので、この例では、基底面参照画像Ｐbrおよび縮小面参照画像Ｐrrとしては、画像データ圧縮していない。
【０１０７】
マッチング処理部１６３では、前述の図５５〜図６０を用いて説明したブロックマッチング処理を、ターゲットブロックバッファ部１６１に記憶されたターゲットブロックと、参照ブロックバッファ部１６２に記憶された参照ブロックとについて行う。
【０１０８】
ここで、ブロックマッチングにおけるターゲットブロックと、参照ブロックとの相関の強さを検出するためには、この実施の形態においても、画像データの輝度情報を用いてＳＡＤ値算出を行い、その最小ＳＡＤ値を検出して、当該最小ＳＡＤ値を呈する参照ブロックを最強相関参照ブロックとして検出するようにする。
【０１０９】
なお、ＳＡＤ値の算出は、輝度情報ではなく、色差信号や、３原色信号Ｒ，Ｇ，Ｂの情報を使用しても良いことは言うまでもない。また、ＳＡＤ値の算出に当たっては、通常は、ブロック内の全画素を用いるようにするが、演算量削減のため、間引き等により、飛び飛びの位置の限られた画素の画素値のみを使用するようにしてもよい。
【０１１０】
動きベクトル算出部１６４は、マッチング処理部１６３のマッチング処理結果からターゲットブロックに対する参照ブロックの動きベクトルを検出する。この実施形態では、動きベクトル算出部１６４は、ＳＡＤ値の最小値を検出保持すると共に、この最小ＳＡＤ値を呈する参照ベクトルの近傍の複数個の参照ベクトルのＳＡＤ値をも保持して、例えば二次曲線近似補間処理を行って、サブピクセル精度の高精度動きベクトルを検出する機能も備える。
【０１１１】
コントロール部１６５は、ＣＰＵ１による制御を受けながら、この動き検出・動き補償部１６における階層化ブロックマッチング処理の、後述するようなパイプライン化した効率の良い処理動作を行うための制御するようにする。
【０１１２】
また、コントロール部１６５は、この例では、動きベクトル算出部１６４からの基底面において算出された最終的な動きベクトルを用いて、参照ブロックバッファ１６２から、その画像データの読み出しを制御することにより、動き補償ブロックを読み出す制御も併せて行うようにしている。
【０１１３】
＜ターゲットブロックバッファ１６１の構成例＞
ターゲットブロックバッファ１６１の構成例のブロック図を、図１４に示す。この図１４に示すように、ターゲットブロックバッファ１６１は、基底面バッファ部１６１１と、縮小面バッファ部１６１２と、縮小化処理部１６１３と、セレクタ１６１４，１６１５および１６１６とを備えている。セレクタ１６１４，１６１５および１６１６は、図１４では、図示は省略したが、コントロール部１６５からの選択制御信号によりそれぞれ選択制御される。
【０１１４】
基底面バッファ部１６１１は、基底面ターゲットブロックを一時格納するためのもので、後述するようなパイプライン化処理を行うために、この例では、４バンクのバッファＢＫＴＯ−Ａ、ＢＫＴＯ−Ｂ、ＢＫＴＯ−Ｃ、ＢＫＴＯ−Ｄを備える。この基底面バッファ部１６１１の４バンクのバッファＢＫＴＯ−Ａ、ＢＫＴＯ−Ｂ、ＢＫＴＯ−Ｃ、ＢＫＴＯ−Ｄのそれぞれは、基底面ターゲットブロックを格納することができる容量を有する。この基底面バッファ部１６１１は、基底面ターゲットブロックを、画像重ね合わせ部１７に送ると共に、セレクタ１６１６に供給する。
【０１１５】
縮小面バッファ部１６１２は、縮小面ターゲットブロックを一時格納するためのもので、この例では、２バンクのバッファＢＫＲＯ−Ａ、ＢＫＲＯ−Ｂを備える。この縮小面バッファ部１６１２の２バンクのバッファＢＫＲＯ−Ａ、ＢＫＲＯ−Ｂのそれぞれは、縮小面ターゲットブロックを格納することができる容量を有する。縮小面バッファ部１６１２は、縮小面ターゲットブロックを、セレクタ１６１６に供給する。
【０１１６】
縮小化処理部１６１３は、動画撮影時には上述したように、ターゲットブロックは、画像補正・解像度変換部１５から送られてくるので、この縮小化処理部１６１３で縮小面ターゲットブロックを生成するために設けられている。縮小化処理部１６１３からの縮小面ターゲットブロックは、セレクタ１６１５に供給される。
【０１１７】
セレクタ１６１４は、動画撮影時には画像補正・解像度変換部１５からのターゲットブロック（基底面ターゲットブロック）を、静止画撮影時には画像メモリ部４からの基底面ターゲットブロックまたは縮小面ターゲットブロックを、コントロール部１６５からの選択制御信号により選択して出力し、その出力を基底面バッファ部１６１１と、縮小化処理部１６１３と、セレクタ１６１５とに供給する。
【０１１８】
セレクタ１６１５は、動画撮影時には縮小化処理部１５からの縮小面ターゲットブロックを、静止画撮影時には画像メモリ部４からの縮小面ターゲットブロックを、コントロール部１６５からの選択制御信号により選択して出力し、その出力を縮小面バッファ部１６１２に供給する。
【０１１９】
セレクタ１６１６は、コントロール部１６１５からの選択制御信号に応じて、縮小面でのブロックマッチング時には、縮小面バッファ部１６１２からの縮小面ターゲットブロックを、基底面でのブロックマッチング時には、基底面バッファ部１６１１からの基底面ターゲットブロックを、それぞれ選択出力し、出力した縮小面ターゲットブロックまたは基底面ターゲットブロックをマッチング処理部１６３に送る。
【０１２０】
＜参照ブロックバッファ１６２の構成例＞
参照ブロックバッファ１６２の構成例のブロック図を、図１５に示す。この図１５に示すように、参照ブロックバッファ１６２は、基底面バッファ部１６２１と、縮小面バッファ部１６２２と、セレクタ１６２３とを備えている。セレクタ１６２３は、図１５では、図示は省略したが、コントロール部１６５からの選択制御信号により選択制御される。
【０１２１】
基底面バッファ部１６２１は、画像メモリ部４からの基底面参照ブロックを一時格納し、その基底面参照ブロックを、セレクタ１６２３に供給すると共に、画像重ね合わせ部１７に、動き補償ブロックとして送る。基底面バッファ部１６２１は、この例では、２バンクのバッファＢＫＴＣ−Ａ、ＢＫＴＣ−Ｂを備える。この基底面バッファ部１６２１の２バンクのバッファＢＫＴＣ−Ａ、ＢＫＴＣ−Ｂのそれぞれは、基底面参照ブロックを格納することができる容量を有する。
【０１２２】
縮小面バッファ部１６２２は、画像メモリ部４からの縮小面参照ブロックを一時格納するためのもので、この例では、２バンクのバッファＢＫＲＣ−Ａ、ＢＫＲＣ−Ｂを備える。この縮小面バッファ部１６１２の２バンクのバッファＢＫＲＣ−Ａ、ＢＫＲＣ−Ｂのそれぞれは、縮小面参照ブロックを格納することができる容量を有する。縮小面バッファ部１６２２は、縮小面参照ブロックを、セレクタ１６２３に供給する。
【０１２３】
セレクタ１６２３は、コントロール部１６１５からの選択制御信号に応じて、縮小面でのブロックマッチング時には、縮小面バッファ部１６１２からの縮小面参照ブロックを、基底面でのブロックマッチング時には、基底面バッファ部１６１１からの基底面参照ブロックを、それぞれ選択出力し、出力した縮小面参照ブロックまたは基底面参照ブロックをマッチング処理部１６３に送る。
【０１２４】
＜画像重ね合わせ部１７の構成例＞
画像重ね合わせ部１７の構成例のブロック図を、図１６に示す。この図１６に示すように、画像重ね合わせ部１７は、加算率計算部１７１と、加算部１７２と、基底面出力バッファ部１７３と、縮小面生成部１７４と、縮小面出力バッファ部１７５とを備えて構成されている。
【０１２５】
そして、画像重ね合わせ部１７と、画像メモリ部４とは、システムバス２を通じて接続されている。すなわち、この例では、システムバス２と基底面出力バッファ部１７３および縮小面出力バッファ部１６２との間には、それぞれバス・インターフェース部２３およびバス・インターフェース部２４が接続されている。
【０１２６】
加算率計算部１７１は、動き検出・動き補償部１６からのターゲットブロックおよび動き補償ブロックを受けて、両者の加算率を、採用する加算方式が単純加算方式であるか、または平均加算方式であるかに応じて定め、定めた加算率を、ターゲットブロックおよび動き補償ブロックと共に加算部１７２に供給する。
【０１２７】
加算部１７２での加算結果の基底面ＮＲ画像は、基底面出力バッファ部１７３およびバス・インターフェース２３を通じて画像メモリ部４に書き込まれる。また、加算部１７２での加算結果の基底面ＮＲ画像は、縮小面生成部１７４にて縮小面ＮＲ画像に変換され、当該縮小面生成部１７４からの縮小面ＮＲ画像が、縮小面出力バッファ部１７５およびバス・インターフェース２４を通じて画像メモリ部４に書き込まれる。
【０１２８】
［撮像画像のノイズ低減処理の概要の流れ］
＜静止画撮影時＞
上述の構成の実施の形態の撮像装置において、静止画撮影時における画像の重ね合わせによるノイズ低減処理のフローチャートの例を、図１７および図１８に示す。この例は、撮影後加算の場合の例である。この図１７および図１８のフローチャートの各ステップは、ＣＰＵ１およびこのＣＰＵ１により制御される動き検出・動き補償部１６のコントロール部１６５の制御の下に実行されると共に、画像重ね合わせ部１７により実行されるものである。
【０１２９】
まず、シャッターボタンが押下されると、この例の撮像装置においては、ＣＰＵ１による制御によって、高速で複数枚の画像の高速撮影が行われる。この例では、静止画撮影時に重ね合わすべきＭ枚（Ｍフレーム；Ｍは２以上の整数）の撮像画像データを高速で取り込み、画像メモリ部４に貼っておく（ステップＳ１）。
【０１３０】
次に、参照フレームは、画像メモリ部４に蓄積されているＭ枚の画像フレームのうちの時間的にＮ番目（Ｎは２以上の整数で、最大値はＭ）とするのであるが、コントロール部１６５は、その何番目とする値Ｎの初期値を、Ｎ＝２とする（ステップＳ２）。そして、次に、コントロール部１６５は、１枚目の画像フレームをターゲット画像（ターゲットフレーム）とし、Ｎ＝２枚目の画像を参照画像(参照フレーム)に設定する（ステップＳ３）。
【０１３１】
次に、コントロール部１６５は、ターゲットフレームにターゲットブロックを設定し（ステップＳ４）、動き検出・動き補償部１６において、画像メモリ部４から、ターゲットブロックバッファ部１６１へターゲットブロックを読み込み（ステップＳ５）、参照ブロックバッファ部１６２へマッチング処理範囲の画素データを読み込む（ステップＳ６）。
【０１３２】
次に、コントロール部１６５は、参照ブロックバッファ部１６２から、サーチ範囲内において参照ブロックを読み出し、マッチング処理部１６３で、この実施形態における階層化マッチング処理を行う。なお、この例では、後述するように、マッチング処理部１６３で算出されたＳＡＤ値のうち、後述するＳＡＤ値は、ＳＡＤ値の最小値およびその近傍のＳＡＤ値を保持して、二次曲線近似補間処理を行うために、動きベクトル算出部１６４へ送られる。これをサーチ範囲内のすべての参照ベクトルで繰り返した後、二次曲線近似補間処理部で、前述した補間処理を行い、高精度の動きベクトルを出力する（ステップＳ７）。
【０１３３】
次に、コントロール部１６５は、以上のようにして検出された高精度の動きベクトルにしたがって、参照ブロックバッファ部１６２から動き補償ブロックを読み出し（ステップＳ８）、ターゲットブロックと同期して、後段の画像重ね合わせ部１７へ送る（ステップＳ９）。
【０１３４】
次に、ＣＰＵ１の制御に従って、画像重ね合わせ部１７は、ターゲットブロックと動き補償ブロックの重ね合わせを行い、重ね合わせたブロックのＮＲ画像データを画像メモリ部４に貼る。すなわち、画像重ね合わせ部１７は、重ね合わせたブロックのＮＲ画像データを画像メモリ部４に書き込む（ステップＳ１０）。
【０１３５】
次に、コントロール部１６５は、ターゲットフレーム内のすべてのターゲットブロックについてのブロックマッチングを終了したか否か判別し（ステップＳ１１）、すべてのターゲットブロックについては未だブロックマッチングの処理が終了していないと判別したときには、ステップＳ４に戻って、ターゲットフレーム内の次のターゲットブロックを設定して、ステップＳ４〜ステップＳ１１までの処理を繰り返す。
【０１３６】
また、コントロール部１６５は、ステップＳ１１で、ターゲットフレーム内のすべてのターゲットブロックについてのブロックマッチングを終了したと判別したときには、重ね合わすべきすべての参照フレームについての処理が終了したか否か、つまり、Ｍ＝Ｎであるか否か判別する（ステップＳ１２）。
【０１３７】
ステップＳ１２で、Ｍ＝Ｎではないと判別したときには、Ｎ＝Ｎ＋１とし（ステップＳ１３）、次に、ステップＳ１０での重ね合わせにより生成されたＮＲ画像をターゲット画像（ターゲットフレーム）とし、また、Ｎ＝Ｎ＋１枚目の画像を参照画像（参照フレーム）とする（ステップＳ１４）。その後、ステップＳ４に戻って、このステップＳ４以降の処理を繰り返す。つまり、Ｍが３以上の場合は、全てのターゲットブロックにおいて重ね合わせを行った画像を次のターゲット画像とし、３枚目以降の画像を参照フレームとして、上記の処理を繰り返して行く。これをＭ枚目の重ね合わせが終わるまで繰り返す。そして、ステップＳ１２で、Ｍ＝Ｎであると判別したときには、この処理ルーチンを終了する。
【０１３８】
なお、Ｍ枚の撮影画像が重ね合わされた結果のＮＲ画像の画像データは、静止画コーデック部１８により圧縮符号化エンコードされて、記録再生装置部５に供給されて、その記録媒体に記録されるものである。
【０１３９】
なお、以上の静止画のノイズ低減処理方法は、Ｍ枚の画像データを画像メモリ部４に貼っておく手法であるが、１枚撮影するたびに重ね合わせを行っても良い。その場合には、画像メモリ部４に記憶する画像フレームは、１枚でよいので、図２１および図２２の処理ルーチンのノイズ低減処理方法に比べて、撮影間隔は長くなるが、メモリコストを最小にすることが可能である。
【０１４０】
＜動画撮影時＞
次に、この実施の形態の撮像装置において、動画撮影時における画像の重ね合わせによるノイズ低減処理のフローチャートを、図１９に示す。この図１９のフローチャートの各ステップも、ＣＰＵ１およびこのＣＰＵ１により制御される動き検出・動き補償部１６のコントロール部１６５の制御の下に実行されるものである。動画記録ボタンがユーザにより操作されると、ＣＰＵ１は、図１９の処理をスタートから開始するように指示する。
【０１４１】
この実施の形態では、動き検出・動き補償部１６は、ターゲットブロック単位でマッチング処理をするのに適した構成とされている。そこで、画像補正・解像度変換部１５は、ＣＰＵ１の制御に従って、フレーム画像を保持し、ターゲットブロック単位で、動き検出・動き補償部１６へ画像データを送る（ステップＳ２１）。
【０１４２】
動き検出・動き補償部１６に送られたターゲットブロックの画像データは、ターゲットブロックバッファ部１６１に格納される。次に、コントロール部１６５は、ターゲットブロックに対応した参照ベクトルを設定し（ステップＳ２２）、画像メモリ部４から、マッチング処理範囲の画像データを参照ブロックバッファ部１６２へ読み込む（ステップＳ２３）。
【０１４３】
次に、マッチング処理部１６３および動きベクトル算出部１６４は、この実施形態における階層化ブロックマッチングによる動き検出処理を行う（ステップＳ２４）。すなわち、マッチング処理部１６３は、先ず、縮小面において、縮小面ターゲットブロックの画素値と縮小面参照ブロックの画素値との間のＳＡＤ値を算出し、算出したＳＡＤ値を動きベクトル算出部１６４へ送る。マッチング処理部１６３は、この処理をサーチ範囲内のすべての縮小面参照ブロックで繰り返す。サーチ範囲内のすべての縮小面参照ブロックについてのＳＡＤ値の算出が終了した後、動きベクトル算出部１６４は、最小のＳＡＤ値を特定して、縮小面動きベクトルを検出する。
【０１４４】
コントロール部１６５は、動きベクトル算出部１６４で検出された縮小面動きベクトルを縮小率の逆数倍して、基底面上における動きベクトルに変換し、その変換したベクトルが、基底面において指し示す位置を中心した領域を、基底面におけるサーチ範囲とする。そして、コントロール部１６５は、マッチング処理部１６３に、当該サーチ範囲において、基底面におけるブロックマッチング処理を行わせるように制御する。マッチング処理部１６３は、基底面ターゲットブロックの画素値と基底面参照ブロックの画素値との間のＳＡＤ値を算出し、算出したＳＡＤ値を動きベクトル算出部１６４へ送る。
【０１４５】
サーチ範囲内のすべての縮小面参照ブロックについてのＳＡＤ値の算出が終了した後、動きベクトル算出部１６４は、最小のＳＡＤ値を特定して、縮小面動きベクトルを検出すると共に、その近傍のＳＡＤ値を特定し、それらのＳＡＤ値を用いて、前述した二次曲線近似補間処理を行い、サブピクセル精度の高精度の動きベクトルを出力する。
【０１４６】
次に、コントロール部１６５は、ステップＳ２４で算出された高精度の動きベクトルにしたがって、参照ブロックバッファ部１６２から動き補償ブロックの画像データを読み出し（ステップＳ２５）、ターゲットブロックと同期して、後段の画像重ね合わせ部１７へ送る（ステップＳ２６）。
【０１４７】
画像重ね合わせ部１７においては、ターゲットブロックと動き補償ブロックの重ね合わせを行う。そして、画像重ね合わせ部１７は、その重ね合わせた結果のＮＲ画像の画像データを、ＮＴＳＣエンコーダ２０を通じてモニターディスプレイ６に出力することで、動画記録モニターをすると共に、動画コーデック部１９を通じて記録再生装置部６に送り、記録媒体に記録するようにする（ステップＳ２７）。
【０１４８】
画像重ね合わせ部１７で重ね合わせされた画像は、また、画像メモリ部４に格納し、次のフレーム（ターゲットフレーム）での参照フレームとなるようにする（ステップＳ２８）。
【０１４９】
そして、ＣＰＵ１は、動画記録停止操作がユーザによりなされたか否か判別し（ステップＳ２９）、当該動画記録停止操作がユーザによりなされていないと判別したときには、ステップＳ２１に戻って、このステップＳ２１以降の処理を繰り返すように指示する。また、ステップＳ２９で、動画記録停止操作がユーザによりなされたと判別したときには、ＣＰＵ１は、この処理ルーチンを終了するようにする。
【０１５０】
以上の動画のノイズ低減処理の処理ルーチンにおいては、１フレーム前の画像フレームを参照フレームとするようにしたが、１フレームよりもさらに過去のフレームの画像を参照フレームとして用いるようにしても良い。また、１フレーム前と２フレーム前の画像を、画像メモリ部４に格納しておき、それらの２枚の画像情報の内容から、どちらの画像フレームを参照フレームにするかを選択しても良い。
【０１５１】
上記のような手段、手順、システム構成を用いることで、一つの共通したブロックマッチング処理のハードウエアで、静止画ノイズ低減処理および動画ノイズ低減処理を行うことが可能になる。
【０１５２】
[動きベクトル算出部１６４について]
次に、動きベクトル算出部１６４の構成例およびその動作について説明する。
【０１５３】
従来から知られている動きベクトル算出部の例においては、サーチ範囲において算出したＳＡＤ値を全て記憶するＳＡＤテーブルＴＢＬを生成し、そのＳＡＤテーブルＴＢＬから最小ＳＡＤ値を検出し、当該最小ＳＡＤ値を呈する参照ブロックの位置に対応する参照ベクトルを動きベクトルとして算出する。そして、二次曲線近似補間をする場合には、生成したＳＡＤテーブルＴＢＬから、前記最小ＳＡＤ値の近傍の複数個、この例では、４個のＳＡＤ値を抽出し、これらのＳＡＤ値を用いて補間処理をする。したがって、この方法は、ＳＡＤテーブルＴＢＬの分だけ、大規模なメモリを必要とする。
【０１５４】
以下に説明する例は、サーチ範囲で算出したＳＡＤ値を全て記憶するＳＡＤテーブルＴＢＬを生成しないことにより、より回路規模を削減することができるとともに、処理時間も削減することができるようにするものである。
【０１５５】
＜実施形態の動きベクトル算出部１６４の第１の例＞
上述したように、ブロックマッチング処理は、参照ベクトルの示す位置を参照ブロックの位置とし、各参照ブロックの各画素とターゲットブロックの各画素のＳＡＤ値を計算し、その計算処理を、サーチ範囲内のすべての参照ベクトルの示す位置の参照ブロックについて行う。
【０１５６】
ここで、サーチ範囲内において参照ブロックの位置を変えて、動き補償ブロックをサーチする場合に、サーチを画面（フレーム）の端から順番に行う、画面（フレーム）の中心から外側に向かって行う、などいろいろな方法が考えられるが、この実施の形態では、サーチ方向は、図２０（Ａ）で矢印１２０に示すように設定され、サーチ範囲の左上端から水平方向にサーチを開始し、１ライン分のサーチが終わった後、垂直方向に１ライン下のラインを、左端から水平方向にサーチする、という手順を繰り返すサーチ方法を採用する。
【０１５７】
すなわち、図２０（Ｂ）に示すように、サーチ範囲１０６において、当該サーチ範囲１０６の左上から水平方向に参照ブロック１０８を順次に設定してサーチして、各参照ブロック１０８についてのＳＡＤ値の計算を行う。すると、図２０（Ｃ）に示すように、対応するＳＡＤテーブルも左上から水平方向に埋まっていく。このとき、実際にマッチング処理に使用される画素データの範囲は、参照ブロック１０８の大きさに応じたマッチング処理範囲１１０となるのは、前述した通りである。
【０１５８】
図１０および図１１に示したように、この例のサブピクセル精度の二次曲線近似補間処理を行うためには、ＳＡＤ値の最小値Ｓmin、およびその近傍のＳＡＤ値Ｓx1、Ｓx2、Ｓy1、Ｓy2が求まれば良い。
【０１５９】
各参照ブロックについてのＳＡＤ値を算出した際に、その算出したＳＡＤ値と、その時点までのＳＡＤ値の最小値とを比較して、算出したＳＡＤ値がその時までのＳＡＤ値の最小値よりも小さければ、算出したＳＡＤ値を最小値として保持すると共に、そのＳＡＤ値とそのときの参照ベクトルを保持することにより、ＳＡＤ値の最小値および当該最小値を取る参照ブロックの位置情報（参照ベクトルの情報）とを、ＳＡＤテーブルを生成することなく、求めることができる。
【０１６０】
そして、検出したＳＡＤ値の最小値を保持すると共に、その最小ＳＡＤ値となる参照ブロック位置の近傍の参照ブロックのＳＡＤ値を、近傍ＳＡＤ値として保持するようにすれば、近傍ＳＡＤ値をも、ＳＡＤテーブルを生成することなく、保持することができる。
【０１６１】
このとき、この例では、図２１（Ａ）に示すように、上述の図２０（Ａ）に示したようなサーチ方法を採用しているので、従来のＳＡＤテーブルＴＢＬにおいて水平方向の１ライン分のＳＡＤ値を記憶する容量のメモリ（以下、ラインメモリという）を設ければ、新たに参照ブロックのＳＡＤ値が算出されたときには、ＳＡＤテーブルＴＢＬ上では、図２１（Ｂ）で斜線を付して示すように、当該新たに算出されたＳＡＤ値１２１に対して、それより前に算出されたＳＡＤテーブルＴＢＬの１ライン分の複数個の参照ブロックのＳＡＤ値が、格納データ１２２として前記ラインメモリに格納されていることになる。
【０１６２】
そこで、新たに算出された参照ブロックのＳＡＤ値が、最小のＳＡＤ値として検出されたときには、ＳＡＤテーブルＴＢＬ上において、前記最小ＳＡＤ値１２１を呈する参照ブロックの位置の１ライン上の位置の参照ブロックのＳＡＤ値１２３（近傍ＳＡＤ値（Ｓy1））と、前記最小ＳＡＤ値１２１を呈する参照ブロックの位置の左横の位置の参照ブロックのＳＡＤ値１２４（近傍ＳＡＤ値（Ｓx1））は、前記ラインメモリから取得することができる。
【０１６３】
そして、ＳＡＤテーブルＴＢＬ上において、最小ＳＡＤ値の参照ブロックの位置の右横の位置の参照ブロックのＳＡＤ値である近傍ＳＡＤ値（Ｓx2）（図２１（Ｃ）の符号１２５参照）は、後で、その参照ブロック位置で算出されたＳＡＤ値を保持すればよい。同様に、ＳＡＤテーブルＴＢＬ上において、新たに算出された最小ＳＡＤ値の参照ブロックの位置の１ライン下の位置の参照ブロックのＳＡＤ値である近傍ＳＡＤ値（Ｓy2）（図２１（Ｃ）の符号１２６参照）も、後で、その参照ブロック位置で算出されたＳＡＤ値を保持すればよい。
【０１６４】
以上のことを考慮して、この動きベクトル算出部１６４の第１の例は、図２２に示すようなハードウエア構成とする。
【０１６５】
すなわち、この動きベクトル算出部１６４の第１の例においては、算出された全てのＳＡＤ値を保持するＳＡＤテーブルＴＢＬは備えず、ＳＡＤ値書き込み部１６４１と、ＳＡＤ値比較部１６４２と、ＳＡＤ値保持部１６４３と、Ｘ方向（水平方向）近傍値抽出部１６４４およびＹ方向（垂直方向）近傍値抽出部１６４５と、二次曲線近似補間処理部１６４６と、ＳＡＤテーブルＴＢＬの１ライン分のメモリ（ラインメモリという）１６４７とを備えてなる。
【０１６６】
ＳＡＤ値保持部１６４３は、最小ＳＡＤ値Ｓminおよび近傍ＳＡＤ値Ｓx1、Ｓx2、Ｓy1、Ｓy2の保持部（メモリ）を備える。そして、この第１の例においては、ＳＡＤ値保持部１６４３は、その最小ＳＡＤ値保持部からの最小ＳＡＤ値ＳminをＳＡＤ値比較部１６４２に供給する共に、保持している近傍ＳＡＤ値のうち、最小ＳＡＤ値Ｓminの右側の近傍ＳＡＤ値Ｓx2の参照ブロックの位置情報（参照ベクトル）と、最小ＳＡＤ値Ｓminの下側の近傍ＳＡＤ値Ｓy2の参照ブロックの位置情報（参照ベクトル）とを、ＳＡＤ値書き込み部１６４１に供給する。
【０１６７】
ＳＡＤ値比較部１６４２は、この第１の例においては、マッチング処理部１６３からの参照ブロックの位置情報（参照ベクトル）と、当該参照ブロックのＳＡＤ値Ｓinとを受けると共に、ＳＡＤ値保持部１６４３の最小ＳＡＤ値保持部からの最小ＳＡＤ値Ｓminとを受ける。
【０１６８】
そして、ＳＡＤ値比較部１６４２は、マッチング処理部１６３からの当該時点で算出されたＳＡＤ値Ｓinと、ＳＡＤ値保持部１６４３の最小ＳＡＤ値保持部からの最小ＳＡＤ値Ｓminとの両者を比較し、マッチング処理部１６３からの当該時点で算出されたＳＡＤ値Ｓinの方が小さいときには、当該時点で、そのＳＡＤ値を最小ＳＡＤ値であるとして検出し、また、ＳＡＤ値Ｓinの方が小さいときには、当該時点では、ＳＡＤ値保持部１６４３の最小ＳＡＤ値保持部からの最小ＳＡＤ値Ｓminが未だ最小値であると検出する。そして、ＳＡＤ値比較部１６４２は、その検出結果の情報ＤＥＴをＳＡＤ値書き込み部１６４１およびＳＡＤ値保持部１６４３に供給する。
【０１６９】
ＳＡＤ値書き込み部１６４１は、マッチング処理部１６３からの算出されたＳＡＤ値Ｓinおよびその位置情報（参照ベクトル）を一時保持するための１画素分のバッファメモリを備え、この第１の例においては、マッチング処理部１６３からの参照ブロックの位置情報（参照ベクトル）と、当該参照ブロックのＳＡＤ値Ｓinとを、ラインメモリ１６４７に書き込む。この場合、ラインメモリ１６４７は、シフトレジスタと同様の動作を行い、空きスペースが無いときには、新規の位置情報およびＳＡＤ値が記憶されると、ラインメモリ１６４７において最も古い前記位置情報およびＳＡＤ値が廃棄される。
【０１７０】
また、ＳＡＤ値書き込み部１６４１は、算出されたＳＡＤ値Ｓinおよびその位置情報をラインメモリ１６４７に書き込む前に、この第１の例においては、次のような処理を行う。
【０１７１】
すなわち、ＳＡＤ値書き込み部１６４１は、ＳＡＤ値比較部１６４２からの比較検出結果の情報ＤＥＴが、ＳＡＤ値Ｓinが最小値であることを示しているときには、マッチング処理部１６３からの参照ブロックの位置情報（参照ベクトル）と、当該参照ブロックのＳＡＤ値Ｓinとを、ＳＡＤ値保持部１６４３に送る。
【０１７２】
ＳＡＤ値保持部１６４３は、ＳＡＤ値比較部１６４２からの比較検出結果の情報ＤＥＴにより、ＳＡＤ値Ｓinが最小値であることを検知し、ＳＡＤ値書き込み部１６４１から送られてくる参照ブロックの位置情報（参照ベクトル）と、当該参照ブロックのＳＡＤ値Ｓinとを、最小ＳＡＤ値保持部に格納する。
【０１７３】
また、ＳＡＤ値書き込み部１６４１は、この第１の例においては、マッチング処理部１６３からの参照ブロックの位置情報（参照ベクトル）が、ＳＡＤ値保持部１６４３から受け取った近傍ＳＡＤ値Ｓx2またはＳy2の位置情報と一致したときにも、マッチング処理部１６３からの参照ブロックの位置情報（参照ベクトル）と、当該参照ブロックのＳＡＤ値Ｓinとを、ＳＡＤ値保持部１６４３に送る。
【０１７４】
ＳＡＤ値保持部１６４３は、受け取った参照ブロックの位置情報（参照ベクトル）から、いずれの近傍ＳＡＤ値に関する情報かを認識して、対応する近傍ＳＡＤ値保持部に格納する。
【０１７５】
以上の処理をサーチ範囲における全ての参照ブロックについて終了すると、ＳＡＤ値保持部１６４３には、前述したように、最小ＳＡＤ値およびその位置情報ならびに４個の近傍ＳＡＤ値およびその位置情報が保持される。
【０１７６】
そこで、Ｘ方向（水平方向）近傍値抽出部１６４４およびＹ方向（垂直方向）近傍値抽出部１６４５が、ＳＡＤ値保持部１６４３に保持された、前記検出した最小のＳＡＤ値Ｓminとその近傍ＳＡＤ値Ｓx1、Ｓx2、Ｓy1、Ｓy2およびそれらの位置情報を読み出し、二次曲線近似補間処理部１６４６に送る。これを受けた二次曲線近似補間処理部１６４６は、二次曲線による補間を、Ｘ方向およびＹ方向の２回行い、前述したようにして、サブピクセル精度の高精度の動きベクトルを算出する。
【０１７７】
以上のようにして、第１の例においては、ＳＡＤテーブルＴＢＬの代わりに、ＳＡＤテーブルＴＢＬの１ライン分のラインメモリを用いることにより、サブピクセル精度の動きベクトルの検出ができる。
【０１７８】
この第１の例における縮小面でのブロックマッチング処理時の流れの例を図２３のフローチャートに、基底面でのブロックマッチング処理時の流れの例を図２４および図２５のフローチャートに、それぞれ示す。これらの第２の例のフローチャートの各ステップも、マッチング処理部１６３および動きベクトル算出部１６４においてなされるものである。
【０１７９】
先ず、縮小面におけるブロックマッチング処理時の流れの例である図２３のフローチャートについて説明する。
【０１８０】
はじめに、動きベクトル算出部１６４のＳＡＤ値保持部１６４３の最小ＳＡＤ値Ｓminの初期値を設定する（ステップＳ３１）。この最小ＳＡＤ値Ｓminの初期値としては、例えば、画素の差分の最大値が設定される。
【０１８１】
次に、マッチング処理部１６３では、縮小面の参照ベクトル（Ｖｘ，Ｖｙ）を設定して、ＳＡＤ値を計算する縮小面参照ブロック位置を設定し（ステップＳ３２）、設定した縮小面参照ブロックの画素データを、参照ブロックバッファ部１６２から読み込む（ステップＳ３３）と共に、ターゲットブロックバッファ部１６１から縮小面ターゲットブロックの画素データを読み込んで、縮小面ターゲットブロックおよび縮小面参照ブロックの各画素データの差分の絶対値の総和、つまり、ＳＡＤ値を求め、求めたＳＡＤ値を動きベクトル算出部１６４に送出する（ステップＳ３４）。
【０１８２】
動きベクトル算出部１６４では、ＳＡＤ値書き込み部１６４１により、そのＳＡＤ値をラインメモリ１６４７に書き込む（ステップＳ３５）。
【０１８３】
そして、動きベクトル算出部１６４では、ＳＡＤ値比較部１６４２が、マッチング処理部１６３で算出されたＳＡＤ値Ｓinと、ＳＡＤ値保持部１６４３に保持されている最小ＳＡＤ値Ｓminとを比較して、算出されたＳＡＤ値Ｓinが、それまで保持されている最小ＳＡＤ値Ｓminよりも小さいか否か判別する（ステップＳ３６）。
【０１８４】
このステップＳ３６で、算出されたＳＡＤ値Ｓinが最小ＳＡＤ値Ｓminより小さいと判別したときには、ステップＳ３７に進み、ＳＡＤ値保持部１６４３に保持される最小ＳＡＤ値Ｓminの情報およびその位置情報（縮小面参照ベクトル）の更新がなされる。
【０１８５】
また、ステップＳ３６で、算出されたＳＡＤ値Ｓinが最小ＳＡＤ値Ｓminより大きいと判別したときには、ステップＳ３７の保持情報の更新処理は行わずにステップＳ３８に進み、マッチング処理部１６３は、サーチ範囲の全ての縮小面参照ブロックの位置（縮小面参照ベクトル）でマッチング処理を終了したか否か判別し、未だ、サーチ範囲においては、未処理の参照ブロックがあると判別したときには、ステップＳ３２に戻り、前述したステップＳ３２以降の処理を繰り返す。
【０１８６】
また、マッチング処理部１６３は、ステップＳ３８で、サーチ範囲の全ての縮小面参照ブロックの位置（縮小面参照ベクトル）でマッチング処理を終了したと判別したときには、その旨を動きベクトル算出部１６４に伝える。
【０１８７】
動きベクトル算出部１６４では、これを受けて、ＳＡＤ値保持部１６４３に保持される最小ＳＡＤ値Ｓminの位置情報（縮小面参照ベクトル）を、コントロール部１６５に出力する（ステップＳ３９）。
【０１８８】
以上で、この例における縮小面におけるブロックマッチング処理を終了する。
【０１８９】
次に、基底面におけるブロックマッチング処理時の流れの例である図２４および図２５のフローチャートについて説明する。
【０１９０】
はじめに、動きベクトル算出部１６４のＳＡＤ値保持部１６４３の最小ＳＡＤ値Ｓminの初期値を設定する（ステップＳ４１）。この最小ＳＡＤ値Ｓminの初期値としては、例えば、画素の差分の最大値が設定される。
【０１９１】
次に、マッチング処理部１６３では、基底面における参照ベクトル（Ｖｘ，Ｖｙ）を設定して、ＳＡＤ値を計算する基底面参照ブロック位置を設定し（ステップＳ４２）、設定した基底面参照ブロックの画素データを、参照ブロックバッファ部１６２から読み込む（ステップＳ４３）。
【０１９２】
そして、ターゲットブロックバッファ部１６１から基底面ターゲットブロックの画素データを読み込んで、基底面ターゲットブロックおよび基底面参照ブロックの各画素データの差分の絶対値の総和、つまり、ＳＡＤ値を求め、求めたＳＡＤ値を動きベクトル算出部１６４に送出する（ステップＳ４４）。
【０１９３】
動きベクトル算出部１６４では、ＳＡＤ値書き込み部１６４１により、そのＳＡＤ値をラインメモリ１６４７に書き込む（ステップＳ４５）。そして、動きベクトル算出部１６４では、ＳＡＤ値比較部１６４２が、マッチング処理部１６３で算出されたＳＡＤ値Ｓinと、ＳＡＤ値保持部１６４３に保持されている最小ＳＡＤ値Ｓminとを比較して、算出されたＳＡＤ値Ｓinが、それまで保持されている最小ＳＡＤ値Ｓminよりも小さいか否か判別する（ステップＳ４６）。
【０１９４】
このステップＳ４６で、算出されたＳＡＤ値Ｓinが最小ＳＡＤ値Ｓminより小さいと判別したときには、ステップＳ４７に進み、ＳＡＤ値保持部１６４３に保持される最小ＳＡＤ値Ｓminの情報および当該最小ＳＡＤ値Ｓminを呈する参照ブロック位置の１ピクセル上および１ピクセル左の位置の参照ブロックのＳＡＤ値およびその位置情報（基底面参照ベクトル）の更新がなされる。
【０１９５】
すなわち、ＳＡＤ値比較部１６４２は、算出されたＳＡＤ値Ｓinが最小ＳＡＤ値Ｓminより小さい旨の比較結果の情報ＤＥＴをＳＡＤ値書き込み部１６４１に送る。すると、ＳＡＤ値書き込み部１６４１は、当該算出されたＳＡＤ値Ｓinおよびその位置情報（基底面参照ベクトル）を、新たな最小ＳＡＤ値Ｓminの情報としてＳＡＤ値保持部１６４３に送ると共に、図２１（Ｂ）から分かるように、ラインメモリ１６４７の最も古いＳＡＤ値およびその位置情報（基底面参照ベクトル）と、最も新しいＳＡＤ値およびその位置情報（基底面参照ベクトル）とを、最小ＳＡＤ値の位置の１ピクセル上の位置の基底面参照ブロックのＳＡＤ値Ｓy1の情報および１ピクセル左の位置の基底面参照ブロックのＳＡＤ値Ｓx1の情報として、ＳＡＤ値保持部１６４３に送る。ＳＡＤ値保持部１６４３は、受け取った新たな最小ＳＡＤ値Ｓminの情報および１ピクセル上の位置の基底面参照ブロックのＳＡＤ値Ｓy1の情報および１ピクセル左の位置の基底面参照ブロックのＳＡＤ値Ｓx1の情報により、それぞれ対応する保持情報を更新する。
【０１９６】
そして、ステップ４７の次には、図２５のステップＳ５１に進む。また、ステップＳ４６で、算出されたＳＡＤ値Ｓinが最小ＳＡＤ値Ｓminより大きいと判別したときには、ステップＳ４７の保持情報の更新処理は行わずにステップＳ５１に進む。
【０１９７】
ステップＳ５１では、ＳＡＤ値書き込み部１６４１は、算出されたＳＡＤ値Ｓinについての位置情報（参照ベクトル）の指す位置が、最小ＳＡＤ値Ｓminとして保持されている基底面参照ブロックの位置の１ピクセル下の基底面参照ブロックの位置であるか否か判別し、１ピクセル下の基底面参照ブロックの位置であると判別したときには、算出されたＳＡＤ値Ｓinおよびその位置情報（参照ベクトル）をＳＡＤ値保持部１６４３に送る。ＳＡＤ値保持部１６４３は、受け取ったＳＡＤ値およびその位置情報により、前記１ピクセル下の位置の基底面参照ブロックについての近傍ＳＡＤ値Ｓy2の保持情報を更新する（ステップＳ５２）。
【０１９８】
ステップＳ５１で、算出されたＳＡＤ値Ｓinについての位置情報（基底面参照ベクトル）の指す位置が、最小ＳＡＤ値Ｓminとして保持されている基底面参照ブロックの位置の１ピクセル下の基底面参照ブロックの位置でないと判別したときには、ＳＡＤ値書き込み部１６４１は、算出されたＳＡＤ値Ｓinについての位置情報（基底面参照ベクトル）の指す位置が、最小ＳＡＤ値Ｓminとして保持されている基底面参照ブロックの位置の１ピクセル下の基底面参照ブロックの位置であるか否か判別する（ステップＳ５３）。
【０１９９】
このステップＳ５３で、算出されたＳＡＤ値Ｓinについての位置情報（基底面参照ベクトル）の指す位置が、最小ＳＡＤ値Ｓminとして保持されている基底面参照ブロックの位置の１ピクセル右の基底面参照ブロックの位置であると判別したときには、ＳＡＤ値書き込み部１６４１は、算出されたＳＡＤ値Ｓinおよびその位置情報（基底面参照ベクトル）をＳＡＤ値保持部１６４３に送る。ＳＡＤ値保持部１６４３は、受け取ったＳＡＤ値およびその位置情報により、前記１ピクセル右の位置の基底面参照ブロックについての近傍ＳＡＤ値Ｓx2の保持情報を更新する（ステップＳ５４）。
【０２００】
ステップＳ５３で、算出されたＳＡＤ値Ｓinについての位置情報（基底面参照ベクトル）の指す位置が、最小ＳＡＤ値Ｓminとして保持されている基底面参照ブロックの位置の１ピクセル右の基底面参照ブロックの位置でないと判別したときには、ＳＡＤ値書き込み部１６４１は、算出されたＳＡＤ値Ｓinおよびその位置情報（基底面参照ベクトル）は、ラインメモリ１６４７にのみ書き込み（前述のステップＳ４５）、ＳＡＤ値保持部１６４３に送らない。
【０２０１】
そして、マッチング処理部１６３は、サーチ範囲の全ての基底面参照ブロックの位置（参照ベクトル）でマッチング処理を終了したか否か判別し（ステップＳ５５）、未だ、サーチ範囲においては、未処理の基底面参照ブロックがあると判別したときには、図２４のステップＳ４２に戻り、前述したステップＳ４２以降の処理を繰り返す。
【０２０２】
また、マッチング処理部１６３は、ステップＳ４５で、サーチ範囲の全ての基底面参照ブロックの位置（基底面参照ベクトル）でマッチング処理を終了したと判別したときには、その旨を動きベクトル算出部１６４に伝える。
【０２０３】
動きベクトル算出部１６４では、これを受けて、Ｘ方向（水平方向）近傍値抽出部１６４４およびＹ方向（垂直方向）近傍値抽出部１６４５が、ＳＡＤ値保持部１６４３に保持された、前記検出した最小のＳＡＤ値Ｓminとその近傍ＳＡＤ値Ｓx1、Ｓx2、Ｓy1、Ｓy2およびそれらの位置情報を読み出し、二次曲線近似補間処理部１６４６に送る。これを受けた二次曲線近似補間処理部１６４６は、二次曲線による補間を、Ｘ方向およびＹ方向の２回行い、前述したようにして、サブピクセル精度の高精度の動きベクトルを算出する（ステップＳ５６）。以上で、１枚の基底面参照フレームについての第２の例のブロックマッチング処理を終了する。
【０２０４】
以上のように、この第１の例においては、算出された全てのＳＡＤ値を保持するＳＡＤテーブルを保持することなく、ＳＡＤテーブルの１ライン分を設けると共に、ＳＡＤ値書き込み部１６４１に１画素分のＳＡＤ値を保持しておくだけで、補間処理によるサブピクセル精度の動きベクトル検出を行うことができる。
【０２０５】
この第１の例の方法は、従来のＳＡＤテーブルＴＢＬのすべてを保持する手法と比べて、ブロックマッチング回数は同じであるため、処理時間は変わらず、ハードウエア規模を削減できるという効果を奏する。
【０２０６】
なお、上述した第１の例の説明においては、ＳＡＤ値比較部１６４２は、マッチング処理部１６３からの算出されたＳＡＤ値Ｓinと、ＳＡＤ値保持部１６３に保持されている最小ＳＡＤ値Ｓminとを比較するようにしたが、ＳＡＤ値比較部１６４２が最小ＳＡＤ値の保持部を備え、その保持した最小ＳＡＤ値と、算出されたＳＡＤ値Ｓinとを比較し、算出されたＳinの方が小さいときには、保持した最小ＳＡＤ値を更新すると共に、その位置情報と共に、ＳＡＤ値書き込み部１６４１を通じてＳＡＤ値保持部１６４３に送って、ＳＡＤ値保持部１６４３の最小ＳＡＤ値保持部に保持させるようにしても良い。
【０２０７】
＜実施形態の動きベクトル算出部１６４の第２の例＞
この動きベクトル算出部１６４の第２の例においては、前記第１の例の場合のラインメモリ１６４７も省略して、より、ハードウエア規模の削減を図るようにした例である。
【０２０８】
この第２の例においては、サーチ範囲における参照ブロックのＳＡＤ値の最小値Ｓminおよびその位置情報（参照ベクトル）の検出および保持は、上述した第１の例と全く同様に行う。しかし、近傍ＳＡＤ値およびその位置情報の取得および保持に関しては、第１の例のように、ＳＡＤ値Ｓminの検出時と同時には行わず、検出された最小ＳＡＤ値Ｓminの位置情報を、マッチング処理部１６３に返して、マッチング処理部１６３で、最小ＳＡＤ値Ｓminの近傍４点位置の参照ブロックについてのＳＡＤ値を再度、算出して、動きベクトル算出部１６４に供給するようにする。
【０２０９】
動きベクトル算出部１６４では、当該マッチング処理部１６３からの再度のブロックマッチング処理により算出された前記近傍４点位置のＳＡＤ値およびその位置情報（参照ベクトル）を受け取って、ＳＡＤ値保持部１６４３のそれぞれの保持部に格納するようにする。
【０２１０】
この動きベクトル算出部１６４の第２の例のハードウエア構成例を、図２６に示す。すなわち、この動きベクトル算出部１６４の第３の例においては、第１の例のラインメモリ１６４７は備えずに、図２６に示すように、ＳＡＤ値書き込み部１６４１と、ＳＡＤ値比較部１６４２と、ＳＡＤ値保持部１６４３と、Ｘ方向（水平方向）近傍値抽出部１６４４およびＹ方向（垂直方向）近傍値抽出部１６４５と、二次曲線近似補間処理部１６４６とを備えてなる。
【０２１１】
この第２の例においても、Ｘ方向（水平方向）近傍値抽出部１６４４およびＹ方向（垂直方向）近傍値抽出部１６４５と、二次曲線近似補間処理部１６４６とは、前述した第１の例と同様の動作を行うが、ＳＡＤ値書き込み部１６４１、ＳＡＤ値比較部１６４２、ＳＡＤ値保持部１６４３およびラインメモリ１６４７の部分は、前述の第１の例とは、異なる動作を行う。
【０２１２】
ＳＡＤ値保持部１６４３は、第１の例と同様に、最小ＳＡＤ値Ｓminおよび近傍ＳＡＤ値Ｓx1、Ｓx2、Ｓy1、Ｓy2の保持部（メモリ）を備える。そして、この第２の例においても、ＳＡＤ値保持部１６４３は、その最小ＳＡＤ値保持部からの最小ＳＡＤ値ＳminをＳＡＤ値比較部１６４２に供給する。しかし、この第２の例においては、ＳＡＤ値保持部１６４３は、第１の例とは異なり、近傍ＳＡＤ値の位置情報を、ＳＡＤ値書き込み部１６４１に供給することしない。
【０２１３】
ＳＡＤ値比較部１６４２は、この第２の例においても、マッチング処理部１６３からの当該時点で算出されたＳＡＤ値Ｓinと、ＳＡＤ値保持部１６４３の最小ＳＡＤ値保持部からの最小ＳＡＤ値Ｓminとの両者を比較し、マッチング処理部１６３からの当該時点で算出されたＳＡＤ値Ｓinの方が小さいときには、当該時点で、そのＳＡＤ値を最小ＳＡＤ値であるとして検出し、また、ＳＡＤ値Ｓinの方が小さいときには、当該時点では、ＳＡＤ値保持部１６４３の最小ＳＡＤ値保持部からの最小ＳＡＤ値Ｓminが未だ最小値であると検出する。そして、ＳＡＤ値比較部１６４２は、その検出結果の情報ＤＥＴをＳＡＤ値書き込み部１６４１およびＳＡＤ値保持部１６４３に供給する。
【０２１４】
ＳＡＤ値書き込み部１６４１は、前述例と同様に、マッチング処理部１６３からの算出されたＳＡＤ値Ｓinおよびその位置情報（参照ベクトル）を一時保持するための１画素分のバッファメモリを備える。そして、この第２の例においては、ＳＡＤ値書き込み部１６４１は、ＳＡＤ値比較部１６４２からの比較検出結果の情報ＤＥＴが、ＳＡＤ値Ｓinが最小値であることを示しているときには、マッチング処理部１６３からの参照ブロックの位置情報（参照ベクトル）と、当該参照ブロックのＳＡＤ値Ｓinとを、ＳＡＤ値保持部１６４３に送る。
【０２１５】
ＳＡＤ値保持部１６４３は、ＳＡＤ値比較部１６４２からの比較検出結果の情報ＤＥＴにより、ＳＡＤ値Ｓinが最小値であることを知り、ＳＡＤ値書き込み部１６４１から送られてくる参照ブロックの位置情報（参照ベクトル）と、当該参照ブロックのＳＡＤ値Ｓinとを、最小ＳＡＤ値保持部に格納する。
【０２１６】
以上の処理を、サーチ範囲内の全ての参照ブロックについてマッチング処理部１６３で算出されたＳＡＤ値について、行う。そして、この第２の例においては、サーチ範囲内の全ての参照ブロックについてのＳＡＤ値の算出が終了したときに、ＳＡＤ値保持部１６４３は、保持している最小ＳＡＤ値Ｓminの位置情報（参照ベクトル）Ｖminを、マッチング処理部１６３に供給して、当該位置情報の近傍の４点の参照ブロックについてのＳＡＤ値の再算出を依頼する。
【０２１７】
マッチング処理部１６３では、ＳＡＤ値保持部１６４３から最小ＳＡＤ値Ｓminの位置情報（参照ベクトル）Ｖminを含む近傍参照ブロックについてのＳＡＤ値の再算出の依頼を受け取ると、前記最小ＳＡＤ値Ｓminの位置情報（参照ベクトル）Ｖminから、その近傍４点の近傍参照ブロックの位置を検出し、検出した位置の参照ブロックについて、ＳＡＤ値の算出を行う。そして、算出したＳＡＤ値を、その位置情報（参照ベクトル）と共に、ＳＡＤ値書き込み部１６４１に順次に供給する。
【０２１８】
この場合、マッチング処理部１６３は、サーチ方向の順にブロックマッチング処理を行うので、近傍ＳＡＤ値は、ＳＡＤ値Ｓy1、Ｓx1、Ｓx2、Ｓy2の順に算出される。ＳＡＤ値書き込み部１６４１は、受け取った再算出されたＳＡＤ値およびその位置情報（参照ベクトル）を、順次にＳＡＤ値保持部１６４３に供給する。
【０２１９】
ＳＡＤ値保持部１６４３は、この再算出されたＳＡＤ値およびその位置情報（参照ベクトル）を、順次に、対応する格納部に書き込んで保持する。
【０２２０】
こうして、近傍参照ブロックについてのＳＡＤ値の再算出が終了すると、前述の第１の例と同様にして、Ｘ方向（水平方向）近傍値抽出部１６４４およびＹ方向（垂直方向）近傍値抽出部１６４５が、ＳＡＤ値保持部１６４３に保持された、前記検出した最小のＳＡＤ値Ｓminとその近傍ＳＡＤ値Ｓx1、Ｓx2、Ｓy1、Ｓy2およびそれらの位置情報を読み出し、二次曲線近似補間処理部１６４６に送る。これを受けた二次曲線近似補間処理部１６４６は、二次曲線による補間を、Ｘ方向およびＹ方向の２回行い、前述したようにして、サブピクセル精度の高精度の動きベクトルを算出する。
【０２２１】
以上のようにして、第２の例においては、ＳＡＤテーブルＴＢＬやラインメモリを用いずに、サブピクセル精度の動きベクトルの検出ができる。
【０２２２】
この第２の例における縮小面でのブロックマッチング処理時の流れの例は、ラインメモリ１６４７への書き込みを行わない点を除いて、図２３に示した第１の例の場合と同様であるので、ここでは、説明を省略する。そして、この第２の例における基底面でのブロックマッチング処理時の流れの例を、図２７のフローチャートを参照しながら説明する。
【０２２３】
はじめに、動きベクトル算出部１６４のＳＡＤ値保持部１６４３の最小ＳＡＤ値Ｓminの初期値を設定する（ステップＳ６１）。この最小ＳＡＤ値Ｓminの初期値としては、例えば、画素の差分の最大値が設定される。
【０２２４】
次に、マッチング処理部１６３では、基底面での参照ベクトル（Ｖｘ，Ｖｙ）を設定して、ＳＡＤ値を計算する基底面参照ブロック位置を設定し（ステップＳ６２）、設定した基底面参照ブロックの画素データを、参照ブロックバッファ部１６２から読み込む（ステップＳ６３）と共に、ターゲットブロックバッファ部１６１から基底面ターゲットブロックの画素データを読み込んで、基底面ターゲットブロックおよび基底面参照ブロックの各画素データの差分の絶対値の総和、つまり、ＳＡＤ値を求め、求めたＳＡＤ値を動きベクトル算出部１６４に送出する（ステップＳ６４）。
【０２２５】
動きベクトル算出部１６４では、ＳＡＤ値比較部１６４２が、マッチング処理部１６３で算出されたＳＡＤ値Ｓinと、ＳＡＤ値保持部１６４３に保持されている最小ＳＡＤ値Ｓminとを比較して、算出されたＳＡＤ値Ｓinが、それまで保持されている最小ＳＡＤ値Ｓminよりも小さいか否か判別する（ステップＳ６５）。
【０２２６】
このステップＳ６５で、算出されたＳＡＤ値Ｓinが最小ＳＡＤ値Ｓminより小さいと判別したときには、ステップＳ６６に進み、ＳＡＤ値保持部１６４３に保持される最小ＳＡＤ値Ｓminおよびその位置情報の更新がなされる。
【０２２７】
すなわち、ＳＡＤ値比較部１６４２は、算出されたＳＡＤ値Ｓinが最小ＳＡＤ値Ｓminより小さい旨の比較結果の情報ＤＥＴをＳＡＤ値書き込み部１６４１に送る。すると、ＳＡＤ値書き込み部１６４１は、当該算出されたＳＡＤ値Ｓinおよびその位置情報（基底面参照ベクトル）を、新たな最小ＳＡＤ値Ｓminの情報としてＳＡＤ値保持部１６４３に送る。ＳＡＤ値保持部１６４３は、保持すべき最小ＳＡＤ値Ｓminおよびその位置情報を、受け取った新たなＳＡＤ値Ｓinおよびその位置情報に更新する。
【０２２８】
ステップＳ６６の後には、ステップＳ６７に進む。また、ステップＳ６５で、算出されたＳＡＤ値Ｓinが最小ＳＡＤ値Ｓminより大きいと判別したときには、ステップＳ６６の保持情報の更新処理は行わずにステップＳ６７に進む。
【０２２９】
ステップＳ６７では、マッチング処理部１６３は、サーチ範囲の全ての基底面参照ブロックの位置（基底面参照ベクトル）でマッチング処理を終了したか否か判別し、未だ、サーチ範囲においては、未処理の基底面参照ブロックがあると判別したときには、ステップＳ６２に戻り、前述したステップＳ６２以降の処理を繰り返す。
【０２３０】
また、マッチング処理部１６３は、ステップＳ６７で、サーチ範囲の全ての基底面参照ブロックの位置（参照ベクトル）でマッチング処理を終了したと判別したときには、ＳＡＤ値保持部１６４３からの最小ＳＡＤ値Ｓminの位置情報を受け取り、その近傍４点の位置の基底面参照ブロックについてのＳＡＤ値の再算出を行い、再算出した近傍ＳＡＤ値をＳＡＤ値書き込み部１６４１を通じてＳＡＤ値保持部１６４３に供給し、保持させるようにする（ステップＳ６８）。
【０２３１】
次に、動きベクトル算出部１６４では、Ｘ方向（水平方向）近傍値抽出部１６４４およびＹ方向（垂直方向）近傍値抽出部１６４５が、ＳＡＤ値保持部１６４３に保持された、前記検出した最小のＳＡＤ値Ｓminとその近傍ＳＡＤ値Ｓx1、Ｓx2、Ｓy1、Ｓy2およびそれらの位置情報を読み出し、二次曲線近似補間処理部１６４６に送る。これを受けた二次曲線近似補間処理部１６４６は、二次曲線による補間を、Ｘ方向およびＹ方向の２回行い、前述したようにして、サブピクセル精度の高精度の動きベクトルを算出する（ステップＳ６９）。以上で、１枚の参照フレームについての第３の例の基底面でのブロックマッチング処理を終了する。
【０２３２】
この第２の例においては、上述した第１の例に比較して、ＳＡＤ値を再算出する分だけ、処理時間が増加するが、ラインメモリをも必要としないので、回路規模を、第１の例よりも削減することができる。しかも、ＳＡＤ値の再算出は、近傍ＳＡＤ値のみであるので、上述の例では、高々４回であるので、処理時間の増加は少ない。
【０２３３】
なお、上述した第２の例の説明では、最小ＳＡＤ値は、検出しながらＳＡＤ値保持部１６４３に保持するようにしたが、ＳＡＤ値比較部１６４２において、最小ＳＡＤ値を呈する参照ブロックの位置情報（参照ベクトル）を検出して保持するように構成し、１回目のブロックマッチングが終了したら、ＳＡＤ値比較部１６４２から、当該最小ＳＡＤ値の位置情報をマッチング処理部１６３に供給するようにしてもよい。
【０２３４】
その場合には、マッチング処理部１６３でのＳＡＤ値の再算出においては、近傍４点のＳＡＤ値に加えて、最小ＳＡＤ値をも再算出するようにする。この場合には、ＳＡＤ値の再算出回数が５回となり、１回増加するが、１回目のブロックマッチングでは、ＳＡＤ値比較部１６４２のみが動作すればよく、ＳＡＤ値書き込み部１６４１およびＳＡＤ値保持部１６４３は、再算出されたＳＡＤ値を保持するように動作すればよいので、処理動作が簡略化されるというメリットがある。
【０２３５】
また、動き検出および動き補償部１６での処理は、ターゲットフレームにおいて設定された複数個のターゲットブロックについて、並列および並行して、実行することができる。その場合には、以上説明した動き検出および動き補償部１６のハードウエアの系を、当該並列・並行処理するターゲットブロック数に応じた数だけ、設ける必要がある。
【０２３６】
従来例のように、ＳＡＤテーブルＴＢＬを生成する方法の場合には、当該ターゲットブロック数分だけのＳＡＤテーブルを生成する必要があり、非常に大きなメモリが必要となってしまう。しかし、第１の例では、１ターゲットブロック当たりについて、ＳＡＤテーブルの１ライン分でよく、メモリ容量を非常に少なくすることができる。さらに、第２の例の場合には、ラインメモリをも必要としないので、メモリ容量の大幅な削減をすることができる。
【０２３７】
［階層化ブロックマッチング処理の流れの例］
次に、図２８および図２９に、この実施の形態における動き検出・動き補償部１６での階層化ブロックマッチング処理の動作例のフローチャートを示す。
【０２３８】
なお、この図２８および図２９に示す処理の流れは、前述したマッチング処理部１６３、動き算出部１６４の処理例の流れとしての説明と、一部重複するものとなるが、この実施の形態の動作を、より理解し易くするために、説明するものである。
【０２３９】
はじめに、動き検出・動き補償部１６において、ターゲットブロックバッファ部１６１から、ターゲットブロックの縮小画、つまり、縮小面ターゲットブロックを読み込む（図２８のステップＳ７１）。次に、動きベクトル算出部１６４のＳＡＤ値保持部１６４３の最小ＳＡＤ値Ｓminの初期値として、縮小面最小ＳＡＤ値の初期値を設定する（ステップＳ７２）。この縮小面最小ＳＡＤ値Ｓminの初期値としては、例えば、画素の差分の最大値が設定される。
【０２４０】
次に、マッチング処理部１６３では、縮小面サーチ範囲を設定すると共に、設定した縮小サーチ範囲において、縮小面参照ベクトル（Ｖｘ／ｎ，Ｖｙ／ｎ：１／ｎは縮小倍率）を設定して、ＳＡＤ値を計算する縮小面参照ブロック位置を設定する（ステップＳ７３）。そして、設定した縮小面参照ブロックの画素データを、参照ブロックバッファ部１６２から読み込み（ステップＳ７４）、縮小面ターゲットブロックおよび縮小面参照ブロックの各画素データの差分の絶対値の総和、つまり、縮小面ＳＡＤ値を求め、求めた縮小面ＳＡＤ値を動きベクトル算出部１６４に送出する（ステップＳ７５）。
【０２４１】
動きベクトル算出部１６４では、ＳＡＤ値比較部１６４２が、マッチング処理部１６３で算出された縮小面ＳＡＤ値Ｓinと、ＳＡＤ値保持部１６４３に保持されている縮小面最小ＳＡＤ値Ｓminとを比較して、算出された縮小面ＳＡＤ値Ｓinが、それまで保持されている縮小面最小ＳＡＤ値Ｓminよりも小さいか否か判別する（ステップＳ７６）。
【０２４２】
このステップＳ７６で、算出された縮小面ＳＡＤ値Ｓinが縮小面最小ＳＡＤ値Ｓminより小さいと判別したときには、ステップＳ７７に進み、ＳＡＤ値保持部１６４３に保持される縮小面最小ＳＡＤ値Ｓminおよびその位置情報の更新がなされる。
【０２４３】
すなわち、ＳＡＤ値比較部１６４２は、算出された縮小面ＳＡＤ値Ｓinが縮小面最小ＳＡＤ値Ｓminより小さい旨の比較結果の情報ＤＥＴをＳＡＤ値書き込み部１６４１に送る。すると、ＳＡＤ値書き込み部１６４１は、当該算出された縮小面ＳＡＤ値Ｓinおよびその位置情報（縮小面参照ベクトル）を、新たな縮小面最小ＳＡＤ値Ｓminの情報としてＳＡＤ値保持部１６４３に送る。ＳＡＤ値保持部１６４３は、保持すべき縮小面最小ＳＡＤ値Ｓminおよびその位置情報を、受け取った新たな縮小面ＳＡＤ値Ｓinおよびその位置情報に更新する。
【０２４４】
ステップＳ７７の後には、ステップＳ７８に進む。また、ステップＳ７６で、算出された縮小面ＳＡＤ値Ｓinが縮小面最小ＳＡＤ値Ｓminより大きいと判別したときには、ステップＳ７７の保持情報の更新処理は行わずにステップＳ７８に進む。
【０２４５】
ステップＳ７８では、マッチング処理部１６３は、縮小面サーチ範囲の全ての縮小面参照ブロックの位置（縮小面参照ベクトル）でマッチング処理を終了したか否か判別し、未だ、縮小面サーチ範囲においては、未処理の縮小面参照ブロックがあると判別したときには、ステップＳ７３に戻り、前述したステップＳ７３以降の処理を繰り返す。
【０２４６】
また、マッチング処理部１６３は、ステップＳ７８で、縮小面サーチ範囲の全ての縮小面参照ブロックの位置（縮小面参照ベクトル）でマッチング処理を終了したと判別したときには、ＳＡＤ値保持部１６４３からの縮小面最小ＳＡＤ値Ｓminの位置情報（縮小面動きベクトル）を受け取り、受け取った縮小面動きベクトルを、縮小倍率の逆数倍、すなわち、ｎ倍したベクトルが、基底面ターゲットフレームにおいて指し示す位置座標を中心とした位置に基底面ターゲットブロックを設定するとともに、前記ｎ倍したベクトルが指し示す位置座標を中心とした比較的狭い範囲として、基底面サーチ範囲を、基底面ターゲットフレームに設定し（ステップＳ７９）、ターゲットブロックバッファ部１６１から、基底面ターゲットブロックの画素データを読み込む（ステップＳ８０）。
【０２４７】
そして、次に、動きベクトル算出部１６４のＳＡＤ値保持部１６４３の最小ＳＡＤ値Ｓminの初期値として、基底面最小ＳＡＤ値の初期値を設定する（図２９のステップＳ８１）。この基底面最小ＳＡＤ値Ｓminの初期値としては、例えば、画素の差分の最大値が設定される。
【０２４８】
次に、マッチング処理部１６３では、ステップＳ７９で設定した基底面縮小サーチ範囲において、基底面参照ベクトル（Ｖｘ，Ｖｙ）を設定して、ＳＡＤ値を計算する基底面参照ブロック位置を設定する（ステップＳ８２）。そして、設定した基底面参照ブロックの画素データを、参照ブロックバッファ部１６２から読み込み（ステップＳ８３）、基底面ターゲットブロックおよび基底面参照ブロックの各画素データの差分の絶対値の総和、つまり、基底面ＳＡＤ値を求め、求めた基底面ＳＡＤ値を動きベクトル算出部１６４に送出する（ステップＳ８４）。
【０２４９】
動きベクトル算出部１６４では、ＳＡＤ値比較部１６４２が、マッチング処理部１６３で算出された基底面ＳＡＤ値Ｓinと、ＳＡＤ値保持部１６４３に保持されている基底面最小ＳＡＤ値Ｓminとを比較して、算出された基底面ＳＡＤ値Ｓinが、それまで保持されている基底面最小ＳＡＤ値Ｓminよりも小さいか否か判別する（ステップＳ８５）。
【０２５０】
このステップＳ８５で、算出された基底面ＳＡＤ値Ｓinが基底面最小ＳＡＤ値Ｓminより小さいと判別したときには、ステップＳ８６に進み、ＳＡＤ値保持部１６４３に保持される基底面最小ＳＡＤ値Ｓminおよびその位置情報の更新がなされる。
【０２５１】
すなわち、ＳＡＤ値比較部１６４２は、算出された基底面ＳＡＤ値Ｓinが基底面最小ＳＡＤ値Ｓminより小さい旨の比較結果の情報ＤＥＴをＳＡＤ値書き込み部１６４１に送る。すると、ＳＡＤ値書き込み部１６４１は、当該算出された基底面ＳＡＤ値Ｓinおよびその位置情報（参照ベクトル）を、新たな基底面最小ＳＡＤ値Ｓminの情報としてＳＡＤ値保持部１６４３に送る。ＳＡＤ値保持部１６４３は、保持すべき基底面最小ＳＡＤ値Ｓminおよびその位置情報を、受け取った新たな基底面ＳＡＤ値Ｓinおよびその位置情報に更新する。
【０２５２】
ステップＳ８６の後には、ステップＳ８７に進む。また、ステップＳ８５で、算出された基底面ＳＡＤ値Ｓinが基底面最小ＳＡＤ値Ｓminより大きいと判別したときには、ステップＳ８６の保持情報の更新処理は行わずにステップＳ８７に進む。
【０２５３】
ステップＳ８７では、マッチング処理部１６３は、基底面サーチ範囲の全ての基底面参照ブロックの位置（基底面参照ベクトル）でマッチング処理を終了したか否か判別し、未だ、基底面サーチ範囲においては、未処理の基底面参照ブロックがあると判別したときには、ステップＳ８２に戻り、前述したステップＳ８２以降の処理を繰り返す。
【０２５４】
また、マッチング処理部１６３は、ステップＳ８７で、基底面サーチ範囲の全ての基底面参照ブロックの位置（基底面参照ベクトル）でマッチング処理を終了したと判別したときには、ＳＡＤ値保持部１６４３からの基底面最小ＳＡＤ値Ｓminの位置情報（基底面動きベクトル）を受け取り、その近傍４点の位置の基底面参照ブロックについての基底面ＳＡＤ値の再算出を行い、再算出した近傍基底面ＳＡＤ値をＳＡＤ値書き込み部１６４１を通じてＳＡＤ値保持部１６４３に供給し、保持させるようにする（ステップＳ８８）。
【０２５５】
次に、動きベクトル算出部１６４では、Ｘ方向（水平方向）近傍値抽出部１６４４およびＹ方向（垂直方向）近傍値抽出部１６４５が、ＳＡＤ値保持部１６４３に保持された、前記検出した最小の基底面ＳＡＤ値Ｓminとその近傍基底面ＳＡＤ値Ｓx1、Ｓx2、Ｓy1、Ｓy2およびそれらの位置情報を読み出し、二次曲線近似補間処理部１６４６に送る。これを受けた二次曲線近似補間処理部１６４６は、二次曲線による補間を、Ｘ方向およびＹ方向の２回行い、前述したようにして、サブピクセル精度の高精度の基底面動きベクトルを算出する（ステップＳ８９）。以上で、１枚の参照フレームについてのこの例のブロックマッチング処理を終了する。
【０２５６】
次に、この実施の形態による階層化ブロックマッチング手法を用いた画像処理方法の効果を、具体例を挙げて説明する。
【０２５７】
図３０に、上述の実施の形態の説明で用いた基底面、縮小面での、参照ブロック、サーチ範囲、マッチング処理範囲の具体例を示す。図３０の例は、水平方向および垂直方向の縮小倍率１／ｎは、ｎ＝４に設定した場合である。
【０２５８】
比較例として、図３０（Ａ）および（Ｂ）に示すように、例えば、縮小画像を用いない参照ブロック１０８は、横（水平）×縦（垂直）＝３２×３２ピクセルとし、また、サーチ範囲１０６は、横（水平）×縦（垂直）＝１４４×６４ピクセル、マッチング処理範囲１１０は、横（水平）×縦（垂直）＝１７６×９６ピクセルとする。
【０２５９】
すると、上述した実施の形態において、水平方向および垂直方向に、１／ｎ＝１／４に縮小された縮小面では、図３０（Ｃ）および（Ｄ）に示すように、縮小面参照ブロック１３９は、横（水平）×縦（垂直）＝８×８ピクセル、縮小面サーチ範囲１３７は、横（水平）×縦（垂直）＝３６×１６ピクセル、縮小面マッチング処理範囲１４３は、横（水平）×縦（垂直）＝４４×２４ピクセルとなる。
【０２６０】
水平方向および垂直方向に、１／４に縮小された縮小面で、ブロックマッチングを行った場合、縮小面動きベクトルは、４ピクセル精度の動きベクトルであり、単純に４倍しただけでは、１ピクセル精度の動きベクトルに対して誤差が生じる。すなわち、基底面での画素が図３１に示すようなものとした場合、基底面でのマッチング処理点１４８は、当該基底面の全ての画素が対象となるが、１／４に縮小された縮小面で、ブロックマッチングを行う場合のマッチング処理点は、図３１において、黒丸で示す４ピクセル単位のマッチング処理点１４７となっているからである。
【０２６１】
しかし、少なくとも、１ピクセル精度の動きベクトルは、縮小面動きベクトルが指し示す縮小面でのマッチング処理点の周囲、４ピクセル範囲以内に存在するであろうことは予測できる。
【０２６２】
そこで、この実施の形態では、算出された縮小面動きベクトルを元に基底面サーチ範囲を定める基底面マッチングでは、縮小面動きベクトルを縮小倍率の逆数である４倍した参照ベクトルが指し示すピクセル位置を中心に、基底面ターゲットブロックを設定するとともに、４ピクセル分のサーチ範囲（基底面サーチ範囲１４０）を決定して、基底面ブロックマッチングを行い、再度動きベクトルを算出する。
【０２６３】
したがって、図３０（Ｅ）および（Ｆ）に示すように、基底面参照ブロック１４２は、横（水平）×縦（垂直）＝３２×３２ピクセル、基底面サーチ範囲１４０は、横（水平）×縦（垂直）＝４×４ピクセル、基底面マッチング処理範囲１４４は、横（水平）×縦（垂直）＝４０×４０ピクセルとなる。
【０２６４】
図３２に、この実施の形態のように、縮小面マッチングと、基底面マッチングの２階層マッチングを行う場合において、ＳＡＤテーブルを使用すると仮定した場合における、基底面、縮小面での、ＳＡＤテーブルのサイズを示す。なお、図３２の例は、図３０に示した具体例に対応したものである。
【０２６５】
縮小する前の１４４×６４のサーチ範囲（図３０（Ｂ）参照）の場合におけるＳＡＤテーブルＴＢＬは、図３２（Ａ）に示すように、１４５×６５点である。
【０２６６】
これに対して、３６×１６の縮小面サーチ範囲（図３０（Ｄ）参照）の場合における縮小面ＳＡＤテーブルは、図３２（Ｂ）に示すように、３７点×１７点となる。
【０２６７】
また、４×４の基底面サーチ範囲（図３０（Ｆ）参照）の場合における基底面ＳＡＤテーブルは５点×５点となる。
【０２６８】
したがって、階層マッチングを施さない場合のマッチング処理回数は１４５×６５＝９４２５回であるのに対し、階層マッチングを適用した場合のマッチング回数は３７×１７＋５×５＝６５４回となり、処理時間を大幅に短縮できることが分かる。
【０２６９】
そして、前述した動きベクトル検出方法の第１の例の場合におけるラインメモリは、縮小面ＳＡＤテーブルの１ライン分でよいので、３７個のＳＡＤ値およびその位置情報を格納できるものでよく、ＳＡＤテーブルＴＢＬの場合の、９４２５個のＳＡＤ値およびその位置情報を格納するメモリに対して非常に小さいメモリでよくなる。
【０２７０】
また、前述した動きベクトル算出部１６４の構成例の第２の例の場合には、３７個のＳＡＤ値およびその位置情報を格納する縮小面ＳＡＤテーブルさえも不要となるので、さらに回路規模を小さくすることができる。
【０２７１】
以上のようにして、上記の実施の形態によれば、階層化したマッチング処理を行った後、基底面において補間処理をすることにより、広いサーチ範囲で、サブピクセル精度の動きベクトル検出を行うことが可能になる。
【０２７２】
なお、図３３に、この実施形態の階層化ブロックマッチング方式における、縮小面および基底面におけるターゲットブロックサイズおよびマッチング処理範囲の例を示す。この図３３の例は、縮小面ターゲットブロック１３３のサイズを、図３３（Ａ）に示すように、横×縦＝８×８画素で固定値としている。このため、縮小面マッチング処理範囲１４３は、図３３（Ｂ）に示すように、横×縦＝４４×２４画素分となる。
【０２７３】
そして、基底面ターゲットブロック１３１のサイズ、基底面マッチング処理範囲１４４のサイズおよび基底面参照ベクトル数は、図３３（Ｃ）に示すようなものとなる。この図３３（Ｃ）は、基底面に対する縮小面の縮小倍率が１／２、１／４、１／８の場合の例のそれぞれにおける基底面ターゲットブロック１３１のサイズ、基底面マッチング処理範囲１４４のサイズおよび基底面参照ベクトル数を示している。
【０２７４】
［静止画ＮＲ処理時におけるメモリ容量削減および効率的なメモリアクセス］
上述したように、この実施形態では、静止画ＮＲ処理、および動画ＮＲ処理に対応している。動画ＮＲ処理では、精度よりもリアルタイム性、すなわちスピードが要求されるのに対して、静止画ＮＲ処理は多少処理時間がかかっても、ノイズの取れた綺麗な画像が求められる。
【０２７５】
前述したように、画像の重ね合わせ方法をシステムアーキテクトの観点から大きく分類すると、静止画撮影時の高速連写中に、リアルタイムに画像の重ね合わせを行う手法である撮影中加算法と、前記高速連写後に、すべての参照画像が揃ってから画像の重ね合わせを行う手法である撮影後加算法の、２種類がある。十分な処理時間をかけてＮＲ処理を行うには、撮影中加算法ではなく、撮影後加算法の方が望ましく、この実施形態では、撮影後加算法を採っている。
【０２７６】
しかしながら、撮影後加算法は、参照画像を画像メモリに保持しておかなくてはならず、重ね合わせ枚数が増えるほど、画像メモリとして大容量が必要になるという問題がある。
【０２７７】
この実施形態では、この問題点にかんがみ、静止画ＮＲ処理時に、撮影後加算法を用いるに当たって、画像メモリ部４の容量をできるだけ削減すると共に、効率的にメモリアクセスを行うことができるように工夫している。以下、この点について説明する。
【０２７８】
＜メモリアクセス時のデータフォーマット＞
先ず、この実施形態における画像メモリ部４に対するメモリアクセス時のデータフォーマットについて説明する。
【０２７９】
図１３および図１６のブロック図に示したように、動き検出・動き補償部１６および画像重ね合わせ部１７とは、それぞれバス・インターフェース部２１，２２，２３，２４を介してシステムバス２に接続されている。
【０２８０】
この実施形態におけるシステムバス２は、バス幅は、例えば６４ビットであり、バースト長（所定の複数画素データ単位でバースト転送を連続して行える回数）は、例えば最大１６バーストとされている。
【０２８１】
動き検出・動き補償部１６のターゲットブロックバッファ部１６１および参照ブロックバッファ部１６２からの読み込み要求に応じて、バス・インターフェース部２１，２２にて、画像メモリ部４の所定のメモリに対して、スタートアドレス、バースト長、その他のバスプロトコルを生成して、システムバス２（ＡＸＩインターコネクト）にアクセスしている。
【０２８２】
この実施形態の撮像装置で使用している画像データは、１画素が、輝度ＹとクロマＣ（Ｃｒ，Ｃｂ）とからなる。そして、Ｙ：Ｃｒ：Ｃｂ＝４：２：２のフォーマットであり、輝度Ｙ、クロマＣ（Ｃｒ，Ｃｂ）は、共に符号なしの８ビット（Ｃｒ＝４ビット、Ｃｂ＝４ビット）であって、４ビットのメモリアクセス幅に、ＹＣ４画素分が並んでいるものである。システムバス２のデータ処理単位は、６４ビットであり、１画素分のＹＣ画素データが１６ビットであるので、４画素分になる。
【０２８３】
図１に示したようなグローバルなシステムバス２に、撮像装置の各処理部がつながっている場合、バス帯域と、各処理部で共有している画像メモリ部のメモリコントローラの処理単位とは、密接な関係がある。
【０２８４】
ところで、上述したように、この実施形態では、メモリコントローラ（図示は省略）が処理できる最大バースト長は１６バーストである。例えば、同じデータサイズの画像データを、画像メモリ部４のメモリに書き込む場合でも、１６バーストの転送をたくさん使える方が、バスのアービトレーション回数も減り、メモリコントローラの処理の効率が良く、バス帯域を削減できる。
【０２８５】
したがって、この実施形態では、ＹＣ画素データの４画素分のデータ（６４ビット）を１６バーストでバスアクセスすると、効率が良い。これを画素数に換算すると、４×１６＝６４画素分のデータになる。
【０２８６】
そこで、この実施形態では、図３４に示すように、１画面分の画像の水平方向を、１バースト転送（６４画素）単位で分割して、１画面分の画像を、縦長の分割ブロックの画像単位（以下、短冊と称する）の複数個からなるものとする。そして、画像データを、この短冊単位で、画像メモリ部４に書き込み、また、画像メモリ部４から読み出しするメモリアクセス方式（以下、短冊アクセス方式と称する）を採る。
【０２８７】
なお、水平方向の画像データが６４画素で割り切れない場合は、図３４で、影線を付して示すように、水平方向の右端にダミー領域を設けて、このダミー領域１５１に、例えば黒や白の画素データをダミーデータとして付加し、水平方向の画素数が、６４の倍数になるようにしている。
【０２８８】
従来のラスタースキャン方式は、画像メモリへのアクセスに対して、水平方向にアドレスが連続しているため、１ラインずつデータを読むのに適しているのに対して、短冊アクセス方式は、１バースト転送（６４画素）単位で垂直方向にアドレスがインクリメントするため、水平方向が６４画素以内であるブロック状のデータを読むのに適している。
【０２８９】
例えば、６４画素×６４ラインの短冊形式のブロックを読み込む際には、画像メモリ部４のメモリコントローラ（図示せず）は、ＹＣ画素データの４画素分のデータ（６４ビット）を１６バーストでバスアクセスすると、当該１６バーストで、４×１６＝６４画素分のデータになるので、水平方向の６４画素からなる１ライン目のアドレスの設定以降は、垂直方向にアドレスをインクリメントしていくだけで、残り６３ライン分の画素データのアドレス設定をすることが可能である。
【０２９０】
この実施形態の画像メモリ部４には、このような短冊アクセス方式を実行するためのアドレス生成部（図示は省略）を備えるメモリコントローラ（図示は省略）が設けられている。
【０２９１】
この実施形態では、動き検出・動き補償部１６が、上記の短冊アクセス方式で画像メモリ部４にアクセスできるように、その前段にある、画像補正・解像度変換部１５においても、短冊アクセス方式のアクセスに対応している。また、この実施形態では、静止画撮影時の静止画ＮＲ処理においては、高速連写撮影して得た複数枚の撮像画像を、圧縮して画像メモリ部４に記憶しておき、必要に応じて伸長デコードして読み出して、動き検出・動き補償部１６でのブロックマッチング処理ができるようにするため、静止画コーデック部１９においても、短冊アクセス方式に対応している。
【０２９２】
図３５（Ａ）は、１画面分の画像が、横×縦＝６４０×４８０画素からなる例における短冊単位の分割例である。この例においては、１画面分の画像が、水平方向の６４画素単位で分割される結果、１０個の短冊Ｔ０〜Ｔ９に分けられている。
【０２９３】
前述した図３３に示した縮小倍率１／４の場合では、１つの短冊の中には、図３５（Ｂ）に示すように、３２×３２画素の基底面ターゲットブロックが、Ｂ０〜Ｂ２９として示すように、水平方向に２個、垂直方向に１５個、合計３０個入っている。
【０２９４】
画像メモリ部４から基底面ターゲットブロックを読み込むときは、短冊アクセス方式の利点を活かすために、この実施形態では、６４画素×１ラインずつアクセスし、バス効率を上げるようにしている。
【０２９５】
したがって、図３６に示すように、縮小倍率１／２のときは、基底面ターゲットブロックは４個ずつ、縮小倍率１／４のときは、基底面ターゲットブロックは２個ずつ、縮小倍率１／８のときは、基底面ターゲットブロックは１個ずつ、バスアクセスしている。
【０２９６】
短冊アクセス方式は、バス帯域という面だけでなく、上記の回路の内部処理においても、非常に有益な手法である。第一に、垂直方向のフィルタ処理等を行うための、内部ラインメモリのサイズを削減することができる。また、解像度変換処理のような、ブロック形式で処理を行う回路にとっては、ラスタースキャン形式から任意のブロックに変換するよりも、短冊形式から任意のブロック形式に変換した方が、効率が良いという利点がある。
【０２９７】
＜静止画ＮＲ処理および動画ＮＲ処理におけるブロックマッチング処理の高速化およびバス帯域の削減＞
上述したように、この実施形態では、静止画ＮＲ処理および動画ＮＲ処理に対応している。静止画ＮＲ処理は、多少処理時間がかかっても、ノイズの取れた綺麗な画像を求められるのに対して、動画ＮＲ処理では、精度よりもリアルタイム性、すなわちスピードが要求される。精度を求めるあまり、１フレーム以内にＮＲ処理が終わらずに、処理が破綻してしまうといった事態は避けなくてはならない。
【０２９８】
また、図１に示したように、この実施形態の撮像装置は、グローバルなシステムバス２に、各種処理部が接続されていて、様々な処理を並列に行う。このようなシステムでは、処理速度とともに、バス帯域も重要視される。しかし、たとえ、内部回路の処理速度が速くとも、バス帯域がネックになり、１フレーム以内にＮＲ処理が終わらないという状況も考えられる。
【０２９９】
この実施形態では、この問題点を考慮して、動画ＮＲ処理時においては、動き検出・動き補償部１６では、画像補正・解像度変換部１５から送られてきた基底面ターゲットブロックに対して、内部回路であるターゲットブロックバッファ部１６１の縮小化処理部１６１３で縮小化処理を行うことにより、縮小面ターゲットブロックを生成している。したがって、動画ＮＲ処理時に、ターゲットブロックの読み込みによるバスアクセスは発生せず、バス帯域を大きく削減している。
【０３００】
また、動き検出・動き補償部１６における、階層化ブロックマッチングの処理および動き補償ブロックの画像重ね合わせ部１７への転送処理を後述するように、パイプライン処理化することにより、高速処理を可能にしている。このパイプライン処理化によるメリットは、静止画ＮＲ処理における階層化ブロックマッチング処理においても、享受することができるのはもちろんである。
【０３０１】
次に、静止画ＮＲ処理および動画ＮＲ処理でのブロックマッチング処理の高速化、バス帯域削減について説明する。
【０３０２】
上述したように、静止画ＮＲ処理の場合は、高速で複数枚の画像の撮影を行い、これら複数枚の画像データが画像メモリ部４に格納され、動き検出・動き補償部１６は、この画像メモリ部４に格納された画像を使って、ブロックマッチング処理を行う。図３７〜図４０に、静止画ＮＲ処理時であって、撮影中加算の場合における画像データの流れを点線で示す。
【０３０３】
すなわち、先ず、図３７に示すように、撮像素子１１からの撮影画像は、前処理部１３でセンサー補正などの前処理をなされた後、ＲＡＷ信号形式（カメラ信号処理を行う前のデータ形式）で、一旦、画像メモリ部４に格納される。
【０３０４】
その後、撮影画像は、画像メモリ部４から短冊形式で読み出されてデータ変換部１４でＲＡＷ信号からＹＣ画素データ（ＹＣ画像フォーマット）に変化され、画像補正・解像度変換部１５で画像補正、解像度変換などが行われた後、ＹＣ画像フォーマットで画像メモリ部４に書き込まれる。高速連写時は、以上の手順が複数枚分、繰り返して行われて、画像メモリ部４には、当該複数枚の撮像画像データがＹＣ画像フォーマットで格納保持される。
【０３０５】
画像メモリ部４に書き込まれたＹＣ画像フォーマットの画像データは、動き検出・動き補償部１６を通じて画像重ね合わせ部１７に供給され、図１６に示した画像重ね合わせ部１７の縮小面生成部１７４で縮小化される。
【０３０６】
その後、図３８に示すように、撮像素子１１からの３枚目の画像の取り込み処理と並行して、１枚目の画像をターゲット画像とし、２枚目の画像の参照画像として、動き検出・動き補償部１６で階層化ブロックマッチングによる動きベクトル検出および動き補償ブロックの生成が行なわれる。そして、画像重ね合わせ部１７で、生成された動き補償ブロックが用いられて画像重ね合わせ処理が行なわれる。
【０３０７】
次に、１枚目と２枚目の撮像画像の重ね合わせが終わったら、図３９に示すように、重ね合わせされた画像（ＮＲ画像）を次のターゲット画像とし、３枚目の画像を参照画像として、次の動きベクトル検出および画像重ね合わせが行なわれる。以上の処理が、連続撮影される複数の撮像画像が終わるまで、繰り返されて１枚の静止画ＮＲ画像が得られる。得られた静止画ＮＲ画像の画像データは、図４０に示すように、静止画コーデック部１８において、この例では、ＪＰＥＧ形式で圧縮されて、記録再生装置部５の記録媒体に保存される。
【０３０８】
次に、動画ＮＲ処理時における画像データの流れを、図４１および図４２を参照しながら説明する。
【０３０９】
動画ＮＲ処理の場合は、画像補正・解像度変換部１５から動き検出・動き補償部１６へ、リアルタイムにターゲットブロックが送られてくる。動き検出・動き補償部１６は、図４１に示すように、画像補正・解像度変換部１５から送られてきたターゲットブロックをターゲットブロックバッファ部１６１に格納すると共に、このターゲットブロックに応じて、ブロックマッチング処理範囲を画像メモリ部４から読み出して、参照ブロックバッファ部１６２に格納する。
【０３１０】
そして、動き検出・動き補償部１６は、ターゲットブロックバッファ部１６１からのターゲットブロックと、当該ブロックマッチング処理範囲から参照ブロックとを読み出して、前述した階層化ブロックマッチング処理をして、動きベクトル検出および動き補償ブロックの生成を行い、動き補償ブロックおよびターゲットブロックは、画像重ね合わせ部１７に供給する。
【０３１１】
画像重ね合わせ部１７は、受け取ったターゲットブロックと動き補償ブロックとを重ね合わせてゆく。そして、画像重ね合わせ部１７は、図４１に示すように、画像重ね合わせをしたＮＲ済みの画像を画像メモリ部４に貼る。
【０３１２】
図４２に示すように、画像メモリ部４に貼られたＮＲ画像は、次のフレーム（１フレーム前のＮＲ画像となっている）で、動画コーデック部１９に読み込まれ、圧縮された後、記録再生装置部５の記録媒体に保存される。また、画像メモリ部４に貼られたＮＲ画像（１フレーム前のＮＲ画像）は、同時に、ＮＴＳＣエンコーダ２０からも読み込まれ、モニターディスプレイ６に対するモニター出力も行われる。
【０３１３】
動画ＮＲ処理時においては、以上の処理が、撮影画像毎に繰り返される。
【０３１４】
なお、ここでは、参照画像は１フレーム分としたが、図４２に示すように、参照画像を複数フレーム保持しておき、より相関性の高い画像を使用しても良い。
【０３１５】
また、動画ＮＲ処理では、リアルタイム性が重視されるため、静止画ＮＲ処理のように、縮小面ターゲット画像を作って画像メモリ部４に格納することはせずに、図１４に示したターゲットブロックバッファ部１６１内の縮小化処理部１６１３で、縮小面ターゲットブロックを生成して、そのまま縮小面バッファ１６１２に格納している。
【０３１６】
＜階層化ブロックマッチング処理のパイプライン化処理の説明＞
以上のように、動き検出・動き補償部１６では、動き検出・動き補償処理において、常に、画像メモリ部４から、ターゲット画像および／または参照画像を読み出しながら、マッチング処理を行っている。
【０３１７】
この実施形態の階層化ブロックマッチング処理を、手順通りに、順次に実行した場合には、図４３に示すようなタイミングチャートに示すシーケンスとなる。なお、図４３は、静止画ＮＲ処理時におけるシーケンス例である。
【０３１８】
この実施形態の階層化ブロックマッチング処理においては、始めに、縮小面におけるブロックマッチングを行うために、ターゲットブロックバッファ部１６１が、画像メモリ部４から縮小面ターゲットブロックを、また、参照ブロックバッファ部１６２が画像メモリ部４から縮小面におけるマッチング処理範囲（縮小面マッチング処理範囲）を、それぞれ読み出す。この両方のアクセス（読み出しアクセス）が終了して、縮小面におけるブロックマッチング処理（縮小面マッチング処理）が開始される。
【０３１９】
次に、この縮小面マッチング処理の結果、縮小面動きベクトルが求まり、この求められた縮小面動きベクトルによって、基底面におけるマッチング処理範囲（基底面マッチング処理範囲）が決まる。したがって、参照ブロックバッファ部１６２による画像メモリ部４からの基底面マッチング処理範囲の読み出しは、縮小面マッチング処理が終わった後に、開始される。
【０３２０】
次に、図４３に示すように、基底面でのターゲットブロックの読み込み、および基底面マッチング処理範囲の読み込みが終わると、基底面におけるブロックマッチング処理（基底面マッチング処理）が開始される。また、この基底面マッチング処理の結果、基底面動きベクトルが求まり、この基底面動きベクトルによって、動き補償ブロックが決まる。したがって、動き検出・動き補償部１６から画像重ね合わせ部１７への動き補償ブロックの転送は、基底面マッチング処理が終わった後になされる。
【０３２１】
以上説明したように、ターゲットブロックバッファ部１６１が画像メモリ部４から縮小面ターゲットブロックを、また、参照ブロックバッファ部１６２が画像メモリ部４から縮小面マッチング処理範囲を、それぞれ読み出すまでは、縮小面マッチング処理は開始することができない。
【０３２２】
また、縮小面動きベクトルが求まるまでは、基底面マッチング処理範囲は決定されないので、参照ブロックバッファ部１６２による画像メモリ部４からの基底面マッチング処理範囲の読み出しは、縮小面マッチング処理が終わるまではできない。
【０３２３】
さらに、動き補償ブロックは、基底面動きベクトルが検出された後に生成されるので、動き検出・動き補償部１６から画像重ね合わせ部１７への動き補償ブロックの転送は、基底面マッチング処理が終わるまではできない。
【０３２４】
上記のことから、通常の処理シーケンスにおいては、図４３に示した、縮小面ターゲットブロックの読み出しから、動き補償ブロックの画像重ね合わせ部１７への転送までの時間が、１ターゲットブロック分についての階層化ブロックマッチングにおける処理時間（以下、マッチング処理時間という）となる。
【０３２５】
しかしながら、図４３の処理シーケンス例では、１マッチング処理時間中に、画像メモリ部４にメモリアクセスができない、画像重ね合わせ部１７へ転送している間に、画像メモリ部４にメモリアクセスができない、といった問題があり、１ターゲットブロック分についての１マッチング処理時間内に、システムバス２に対して、バスアクセスしていない期間が多く、バス２の使用効率が悪く、処理速度の高速化に改善の余地がある。
【０３２６】
そこで、これを改善したこの実施形態におけるブロックマッチング処理手法を、以下に説明する。
【０３２７】
先ず、図４３の例と対比する例として、静止画ＮＲ処理時におけるこの実施形態におけるブロックマッチング処理手法を、図４４および図４５〜図４７を参照しながら説明する。
【０３２８】
この実施形態におけるブロックマッチング処理手法においては、図４４に示すように、「縮小面マッチング処理が終わるまで、基底面マッチング処理範囲の読み出せない」問題と、「基底面マッチング処理が終わるまで、動き補償ブロックを転送できない」問題を回避するために、ターゲットブロックバッファ部１６１の基底面バッファ部１６１１におけるターゲットブロックを保持する４バンクのバッファＢＫＴＯ−Ａ〜ＢＫＴＯ−Ｄのうちの少なくとも３バンクを使用すると共に、縮小面マッチング処理、基底面マッチング処理、動き補償ブロック転送、の３つの処理を時間方向に分割し、３個のマッチング処理時間（３ターゲットブロック分のマッチング処理時間）にわたってパイプライン化を行っている。
【０３２９】
この図４４に示す処理手法では、基底面バッファ部１６１１の４個のバンクバッファＢＫＴＯ−Ａ〜ＢＫＴＯ−Ｄのうちの、３個のバンクバッファＢＫＴＯ−Ａ〜ＢＫＴＯ−Ｃを用いるものとして説明する。
【０３３０】
この例においては、静止画ＮＲ処理におけるブロックマッチング処理のパイプライン化においては、３個のマッチング処理時間ＭＡ，ＭＢ，ＭＣを設定する。これら３個のマッチング処理時間ＭＡ，ＭＢ，ＭＣのそれぞれは、１ターゲットブロックについて全てのマッチング処理内容を含み、３個のマッチング処理時間ＭＡ，ＭＢ，ＭＣは、３ターゲットブロック分のマッチング処理時間である。
【０３３１】
すなわち、これらマッチング処理時間ＭＡ，ＭＢ，ＭＣのそれぞれ内における処理内容には、画像メモリ部４からの縮小面ターゲットブロックおよび基底面ターゲットブロックの読み込み処理、画像メモリ部からの縮小面マッチング処理範囲および基底面マッチング処理範囲の読み込み処理、縮小面マッチング処理、基底面マッチング処理、基底面ターゲットブロックおよび動き補償ブロックの画像重ね合わせ部１７への転送出力処理の全てを含み、信号処理内容としては、３個のマッチング処理時間ＭＡ，ＭＢ，ＭＣは全く同じものを備えている。
【０３３２】
しかし、この例では、３個のマッチング処理時間ＭＡ，ＭＢ，ＭＣのそれぞれ内における画像メモリ部４からの縮小面ターゲットブロックおよび基底面ターゲットブロックの読み込み処理、画像メモリ部からの縮小面マッチング処理範囲および基底面マッチング処理範囲の読み込み処理、縮小面マッチング処理、基底面マッチング処理、基底面ターゲットブロックおよび動き補償ブロックの画像重ね合わせ部１７への転送出力処理が、何番目のターゲットブロックについてのものであるかを、次のように制御する。
【０３３３】
すなわち、この例においては、１つのターゲットブロックについての縮小面マッチング処理、基底面マッチング処理、動き補償ブロック転送処理、の３つの処理を、この３個のマッチング処理時間ＭＡ，ＭＢ，ＭＣに分散させて、順次に実行するようにする。そして、この３個のマッチング処理時間ＭＡ，ＭＢ，ＭＣを、ひとつの単位として繰り返し実行するようにする。
【０３３４】
すなわち、例えば、ある一つのターゲットブロックＴＧＢについての縮小面マッチング処理は、マッチング処理時間ＭＡで行い、そのターゲットブロックＴＧＢについての基底面マッチング処理は、次のマッチング処理時間ＭＢで行い、そのターゲットブロックＴＧＢについての動き補償ブロックの出力転送は、さらにその次のマッチング処理時間ＭＣで行う。
【０３３５】
そして、この例においては、あるターゲットブロックについての縮小面マッチング処理を行っている間に、並行してひとつ前のターゲットブロックの基底面マッチング処理範囲の読み出しを行なう。また、あるターゲットブロックについての縮小面マッチング処理範囲の画像メモリ部４からの読み出しを行っている間に、ひとつ前のマッチング処理時間における基底面マッチング処理で求められた最終的な動きベクトルに基づいて生成された、２つ前のターゲットブロックについて動き補償ブロックの出力転送処理を行う。これにより、階層化ブロックマッチング処理のパイプライン処理化を実現している。
【０３３６】
例えばｉ番目のターゲットブロックＴＧＡｉについての階層化ブロックマッチング処理のシーケンスを中心にして、この例の処理手法について説明すると、次のようなものとなる。
【０３３７】
先ず、マッチング処理時間ＭＡでは、ターゲットブロックバッファ部１６１により、画像メモリ部４から、ｉ番目（ｉは自然数）のターゲットブロックＴＧＡｉについての縮小面ターゲットブロックが、縮小面バッファ部１６１２の２個のバンクバッファＢＫＴＣ−Ａ，ＢＫＴＣ−Ｂの一方、例えばＢＫＴＣ−Ａに書き込まれる。その後、ターゲットブロックバッファ部１６１により、図４５に示すように、基底面ターゲットブロックが、基底面バッファ部１６１１の３個のバンクバッファＢＫＴＯ−Ａ、ＢＫＴＯ−Ｂ、ＢＫＴＯ−Ｃのうちの、この例ではバンクバッファＢＫＴＯ−Ａに書き込まれる。
【０３３８】
このとき、ｉ番目のターゲットブロックＴＧＡｉについての縮小面ターゲットブロックのバンクバッファＢＫＴＣ−Ａおよび基底面ターゲットブロックのバンクバッファＢＫＴＯ−Ａへの書き込みと並行して、ｉ番目のターゲットブロックＴＧＡｉについての縮小面マッチング処理範囲が、参照ブロックバッファ部１６２により、画像メモリ部４から、バンクバッファＢＫＲＣ−Ａに読み込まれる。
【０３３９】
さらに、このとき、ｉ番目のターゲットブロックＴＧＡｉについての縮小面マッチング処理範囲のバンクバッファＢＫＲＣ−Ａへの書き込みと並行して、当該マッチング処理時間ＭＡより一つ前のマッチング処理時間ＭＣで実行された、２つ前のターゲットブロックＴＧＢ（ｉ−２）についての基底面マッチング処理の処理結果の動きベクトルから当該２つ前のターゲットブロックＴＧＢ（ｉ−２）についての動き補償ブロックが、図４５の下側に示すように、参照ブロックバッファ部１６２の基底面バッファ部１６２１の一方、例えばバンクメモリＢＫＲＯ−Ａから読み出されて、画像重ね合わせ部１７に転送出力される。
【０３４０】
また、これと共に、当該２つ前のターゲットブロックＴＧＢ（ｉ−２）が、画像重ね合わせ部１７に転送出力される。このとき、図４５の上側に示すように、２つ前のターゲットブロックＴＧＢ（ｉ−２）は、ターゲットブロックバッファ部１６１の基底面バッファ部１６１１のバンクバッファＢＫＴＯ−Ｂに格納されているので、当該バンクバッファＢＫＴＯ−Ｂから画像重ね合わせ部１７に転送出力される。
【０３４１】
そして、マッチング処理時間ＭＡでは、前述のようにして、ターゲットブロックバッファ１６２の縮小面バッファ部１６１２に書き込まれた縮小面ターゲットブロックと、当該マッチング処理時間ＭＡより一つ前のマッチング処理時間ＭＣで動き補償ブロックの出力転送と並行して行われて画像メモリ部４から参照ブロックバッファ部１６２の縮小面バッファ部１６２２に取り込まれているｉ番目のターゲットブロックＴＧＡｉについての縮小面マッチング処理範囲から読み出される縮小面参照ブロックとの間で、縮小面マッチング処理が行われる。
【０３４２】
マッチング処理時間ＭＡでは、この縮小面マッチング処理と並行して、画像メモリ部４から、一つ前のターゲットブロックＴＧＢ（ｉ−１）の基底面マッチング処理範囲の読み出しが行なわれる。そして、当該一つ前のターゲットブロックＴＧＢ（ｉ−１）の基底面マッチング処理も、このマッチング処理時間ＭＡにおいて行われる。このとき、上述したように、図４５の下側に示すように、参照ブロックバッファ部１６２の基底面バッファ部１６１１のバンクバッファＢＫＲＯ−Ａからは、動き補償ブロックが読み出されて使用されているので、基底面マッチング処理範囲は、基底面バッファ部１６１１の空いているバンクバッファＢＫＲＯ−Ｂに書き込まれることになる。
【０３４３】
マッチング処理時間ＭＡで行われたｉ番目のターゲットブロックＴＧＢｉについての縮小面マッチング処理の処理結果である縮小面動きベクトルは、次のマッチング処理時間ＭＢにおいて、前述したように、当該ｉ番目のターゲットブロックＴＧＢｉについての基底面マッチング処理におけるサーチ範囲を決定するために用いられ、決定されたサーチ範囲に基づいて、画像メモリ部４から当該ｉ番目のターゲットブロックＴＧＢｉについての基底面マッチング処理範囲の読み出しがなされ、参照ブロックバッファ部１６２の基底面バッファ部１６２１に格納される。
【０３４４】
そして、このマッチング処理時間ＭＢでは、一つ前のマッチング処理時間でターゲットブロックバッファ部１６１に読み込まれた、ｉ番目のターゲットブロックＴＧＢｉについての基底面ターゲットブロックと、前記のようにして参照ブロックバッファ部１６２２に格納された基底面マッチング処理範囲から読み出される基底面参照ブロックとについて、基底面マッチング処理が行われる。
【０３４５】
このマッチング処理時間ＭＢにおける基底面ターゲットブロックバッファ部１６１の３個のバンクバッファＢＫＴＯ−Ａ〜ＢＫＴＯ−Ｃのそれぞれと、また、基底面参照ブロックバッファ部１６２の２個のバンクバッファのそれぞれと、画像メモリ部４、画像重ね合わせ部１７およびマッチング処理部１６３との間の関係を、図４６に示す。この図４６は、マッチング処理時間ＭＡにおける図４５に対応するものである。
【０３４６】
そして、マッチング処理時間ＭＢにおける基底面マッチング処理で求められた最終的な動きベクトルは、次のマッチング処理時間ＭＣにおいて、参照ブロックバッファ部１６２の基底面バッファ部１６１１からの動き補償ブロックの読み出しを行う際に使用されて、当該動き補償ブロックの画像重ね合わせ部１７への転送出力が実行される。
【０３４７】
このマッチング処理時間ＭＣにおける基底面ターゲットブロックバッファ部１６１の３個のバンクバッファＢＫＴＯ−Ａ〜ＢＫＴＯ−Ｃのそれぞれと、また、基底面参照ブロックバッファ部１６２の２個のバンクバッファのそれぞれと、画像メモリ部４、画像重ね合わせ部１７およびマッチング処理部１６３との間の関係を、図４７に示す。この図４７は、マッチング処理時間ＭＡにおける図４５およびマッチング処理時間ＭＢにおける図４６に対応するものである。
【０３４８】
なお、図４５〜図４７において、点線で囲んで示す矢印部分は、動き検出・動き補償部１６のコントロール部１６５によるターゲットブロックバッファ部１６１および参照ブロックバッファ部１６２に対するバッファ入力制御およびバッファ出力制御を示している。
【０３４９】
以上のようにして、この実施形態によれば、階層化ブロックマッチング処理をパイプライン化することができる。この場合、階層化ブロックマッチング処理のための、縮小面ターゲットブロックおよび基底面ターゲットブロックの読み込み処理、画像メモリ部からの縮小面マッチング処理範囲および基底面マッチング処理範囲の読み込み処理、縮小面マッチング処理、基底面マッチング処理、基底面ターゲットブロックおよび動き補償ブロックの画像重ね合わせ部１７への転送出力処理は、上述したように、並列処理として実行することができるので、１マッチング処理時間は、図４３の例の場合よりも短縮化されたものとなり、処理の高速化ができる。また、パイプライン化処理としたので、画像メモリ部４に対するメモリアクセスの効率化を図ることができる。
【０３５０】
上述の説明は、静止画ＮＲ処理の場合における階層化ブロックマッチング処理についてであるが、動画ＮＲ処理においては、１ターゲットブロック分のマッチング処理時間に、前段の画像補正・解像度変換部１５から、リアルタイムで１ターゲットブロック分の画像データが転送されてくる。そして、動画ＮＲ処理時には、前述したように、リアルタイム性の確保のために、ターゲットブロックバッファ部１６１内の縮小化処理部１６１３で縮小面ターゲットブロックを生成する必要がある。
【０３５１】
このため、動画ＮＲ処理においては、前段の画像補正・解像度変換部１５からリアルタイムで送られてくる１ターゲットブロック分の画像データを取り込んでからでないと、縮小面ターゲットブロックを生成することができず、この縮小面ターゲットブロックの生成の前処理（１ターゲットブロック分の画像データを取り込み）に、１マッチング処理時間を要することになる。
【０３５２】
このため、動画ＮＲ処理におけるブロックマッチング処理のパイプライン化に当たっては、図４８および図４９に示すように、４個のマッチング処理時間ＭＡ，ＭＢ，ＭＣ，ＭＤを設定する。そして、ターゲットブロックバッファ部１６１の基底面バッファ部１６１１としては、４個のバンクバッファＢＫＴＯ−Ａ〜ＢＫＴＯ−Ｄの全てを用いるものである。なお、図４８および図４９は、紙面の大きさの関係上、４個のマッチング処理時間ＭＡ，ＭＢ，ＭＣ，ＭＤを、１枚の紙面に図示できなかったので、２図に分けて示したものである。図４８および図４９で、マッチング処理時間ＭＢおよびＭＣは、重複して記載してある。
【０３５３】
これら４個のマッチング処理時間ＭＡ，ＭＢ，ＭＣ，ＭＤのそれぞれ内における処理内容には、前述の静止画ＮＲ処理におけるブロックマッチング処理における画像メモリ部４からの縮小面ターゲットブロックおよび基底面ターゲットブロックの読み込み処理の代わりに、画像補正・解像度変換部１５からのターゲットブロックの読み込みおよび縮小面ターゲットブロックの生成処理が行われる他は、前述の静止画ＮＲ処理におけるブロックマッチング処理における場合と同様で、画像メモリ部からの縮小面マッチング処理範囲および基底面マッチング処理範囲の読み込み処理、縮小面マッチング処理、基底面マッチング処理、基底面ターゲットブロックおよび動き補償ブロックの画像重ね合わせ部１７への転送出力処理の全てを含み、信号処理内容としては、４個のマッチング処理時間ＭＡ，ＭＢ，ＭＣ，ＭＤは全く同じものを備えている。
【０３５４】
そして、この動画ＮＲ処理における階層化ブロックマッチング処理の場合の例では、図４８および図４９に示すように、１つのターゲットブロックについての、縮小面ターゲットブロック生成処理のための前処理（ターゲットブロックの取り込み処理）、縮小マッチング処理、基底面マッチング処理、動き補償ブロック転送処理、の４つの処理を、この４個のマッチング処理時間ＭＡ，ＭＢ，ＭＣ，ＭＤに分散させて、順次に実行するようにする。そして、この４個のマッチング処理時間ＭＡ，ＭＢ，ＭＣ，ＭＤを、ひとつの単位として繰り返し実行するようにする。
【０３５５】
すなわち、例えば、ある一つのターゲットブロックＴＧＢについての取り込み処理は、マッチング処理時間ＭＡで行い、そのターゲットブロックＴＧＢについての縮小面ターゲットブロックの生成処理および縮小面マッチング処理は、マッチング処理時間ＭＢで行い、そのターゲットブロックＴＧＢについての基底面マッチング処理は、次のマッチング処理時間ＭＣで行い、そのターゲットブロックＴＧＢについての動き補償ブロックの出力転送は、さらにその次のマッチング処理時間ＭＤで行う。
【０３５６】
上述したように、この動画ＮＲ処理時における階層化ブロックマッチング処理のパイプライン化に当たっては、ターゲットブロックＴＧＢについての取り込み処理のために１マッチング処理時間を要するために、４個のマッチング処理時間を必要とするが、当該ターゲットブロックＴＧＢについての取り込み処理のための１マッチング処理時間ＭＡ以外の他の３個のマッチング処理時間ＭＢ〜ＭＤにおける処理シーケンス内容は、図４８および図４９に示すように、前述した静止画ＮＲ処理時の３個のマッチング処理時間ＭＡ〜ＭＣと同様となるものであるので、ここでは、詳細な説明は省略する。
【０３５７】
つまり、縮小面マッチング処理を行っている間に、並行してひとつ前のブロックの基底面マッチング処理範囲読み出しが行われている。また、縮小面マッチング処理範囲の読み出しがなされるのと並行して、ひとつ前のマッチング処理時間における基底面マッチング処理で求められた最終的な動きベクトルに基づいて生成された、２つ前のターゲットブロックについて動き補償ブロックの出力転送処理が行なわれる。これにより、動画ＮＲ処理時における階層化ブロックマッチング処理のパイプライン処理化を実現している。
【０３５８】
ただし、前述もしたように、この動画ＮＲ処理時においては、縮小面ターゲットブロックは、画像メモリ部４から読み出すのではなく、ターゲットブロックバッファ部１６１で生成するものである。
【０３５９】
この動画ＮＲ処理時における階層化ブロックマッチング処理のパイプライン化における処理シーケンスの理解を容易にするために、図５０〜図５３に、マッチング処理時間ＭＡ，ＭＢ，ＭＣ，ＭＤのそれぞれにおける基底面ターゲットブロックバッファ部１６１の４個のバンクバッファＢＫＴＯ−Ａ〜ＢＫＴＯ−Ｄのそれぞれと、また、基底面参照ブロックバッファ部１６２の２個のバンクバッファＢＫＲＯ−Ａ，ＢＫＲＯ−Ｂのそれぞれと、画像メモリ部４、画像重ね合わせ部１７およびマッチング処理部１６３との間の関係を示した。
【０３６０】
なお、図４５〜図４７と同様に、図５０〜図５３において、点線で囲んで示す矢印部分は、動き検出・動き補償部１６のコントロール部１６５によるターゲットブロックバッファ部１６１および参照ブロックバッファ部１６２に対するバッファ入力制御およびバッファ出力制御を示している。
【０３６１】
次に、このパイプライン化処理における制御処理を実現するための動き検出・動き補償部１６のコントロール部１６５の機能ブロック図を、図５４に示す。
【０３６２】
座標コントローラ１６５１は、ターゲット画面を分割した全てのターゲットブロックを、順番にブロックマッチング処理を行うようにするもので、ターゲット画面上におけるターゲットブロックの座標を管理している。そして、座標コントローラ１６５１は、各ターゲットブロックの座標情報、サーチ範囲の情報、ベクトル精度の情報、および処理スタート指示を、複数ブロックのパイプライン管理部１６５２のそれぞれに渡す。
【０３６３】
複数ブロックのパイプライン管理部１６５２は、座標コントローラ１６５１からの座標情報、サーチ範囲、ベクトル精度を基に、前述した４個のマッチング処理時間ＭＡ，ＭＢ，ＭＣ，ＭＤのそれぞれにおけるマッチング処理を制御するためのマッチング処理コントローラ１６５３Ａ，１６５３Ｂ，１６５３Ｃ，１６５３Ｄを制御して、前述したパイプライン処理を制御管理する。マッチング処理コントローラ１６５３Ａは、マッチング処理時間ＭＡにおける処理を、マッチング処理コントローラ１６５３Ｂは、マッチング処理時間ＭＢにおける処理を、マッチング処理コントローラ１６５３Ｃは、マッチング処理時間ＭＣにおける処理を、マッチング処理コントローラ１６５３Ｄは、マッチング処理時間ＭＤにおける処理を、それぞれ制御するためのものである。
【０３６４】
この複数ブロックのパイプライン管理部１６５２は、座標コントローラ１６５１からの座標情報、サーチ範囲、ベクトル精度を基に、各マッチング処理時間ＭＡ，ＭＢ，ＭＣ，ＭＤのそれぞれに対して、それぞれのマッチング処理時間で処理すべきターゲットブロックの座標情報、サーチ範囲、ベクトル精度の情報を渡すと共に、その開始指示を渡す。
【０３６５】
マッチング処理コントローラ１６５３Ａ，１６５３Ｂ，１６５３Ｃ，１６５３Ｄのそれぞれは、それぞれのマッチング処理時間ＭＡ，ＭＢ，ＭＣ，ＭＤにおけるマッチング処理部１６３の制御と、ターゲットブロックバッファ部１６１および参照ブロックバッファ部１６２におけるバッファ入力制御および出力バッファ制御を行う。
【０３６６】
バッファ入力制御機能部１６５４Ａ、１６５４Ｂ，１６５４Ｃ，１６５４Ｄは、それぞれマッチング処理時間ＭＡ，ＭＢ，ＭＣ，ＭＤにおけるターゲットブロックバッファ部１６１および参照ブロックバッファ部１６２におけるバッファ入力制御を、マッチング処理コントローラ１６５３Ａ，１６５３Ｂ，１６５３Ｃ，１６５３Ｄのそれぞれの制御指示を受けて実行する。
【０３６７】
また、バッファ出力制御機能部１６５５Ａ、１６５５Ｂ，１６５５Ｃ，１６５５Ｄは、それぞれマッチング処理時間ＭＡ，ＭＢ，ＭＣ，ＭＤにおけるターゲットブロックバッファ部１６１および参照ブロックバッファ部１６２におけるバッファ出力制御を、マッチング処理コントローラ１６５３Ａ，１６５３Ｂ，１６５３Ｃ，１６５３Ｄのそれぞれの制御指示を受けて実行する。
【０３６８】
そして、マッチング処理コントローラ１６５３Ａ，１６５３Ｂ，１６５３Ｃ，１６５３Ｄのそれぞれは、それぞれマッチング処理時間ＭＡ，ＭＢ，ＭＣ，ＭＤにおける処理を終了すると、終了通知を複数ブロックのパイプライン管理部１６５２に送る。
【０３６９】
複数ブロックのパイプライン管理部１６５２は、１周期分の４個のマッチング処理時間ＭＡ，ＭＢ，ＭＣ，ＭＤにおける処理を終了すると、その終了通知を座標コントローラ１６５１に送る。座標コントローラ１６５１は、この終了通知を受けると、次の１周期分の４個のマッチング処理時間ＭＡ，ＭＢ，ＭＣ，ＭＤについての座標情報、サーチ範囲、ベクトル精度などの情報を複数ブロックのパイプライン管理部１６５２に送る。
【０３７０】
以上のようにして、４個のマッチング処理時間ＭＡ，ＭＢ，ＭＣ，ＭＤを１周期分としたパイプライン処理を、繰り返す。
【０３７１】
なお、上述したように、４個のマッチング処理コントローラ１６５３Ａ〜１６５３Ｄを使用するのは、動画ＮＲ処理における階層化ブロックマッチング処理時であり、撮影後加算を採用した静止画ＮＲ処理においては、４個のマッチング処理コントローラ１６５３Ａ〜１６５３Ｄのうちの３個を使用して、処理制御をおこなうようにするものである。
【０３７２】
なお、静止画ＮＲ処理であっても、撮影中加算方式を採用する場合には、上述した動画ＮＲ処理と同様に行うので、４個のマッチング処理時間ＭＡ，ＭＢ，ＭＣ，ＭＤを１周期分としたパイプライン処理を繰り返し、行うものとなる。
【０３７３】
以上説明したようにして、この実施形態においては、１マッチング処理時間の間、常にバスアクセスが発生していて、バス効率が高く、さらに、パイプライン処理を行っているので、１ターゲットブロック分についての処理速度も向上している。
【０３７４】
［その他の実施の形態および変形例］
上述の実施形態においては、静止画コーデック部１８における圧縮符号化方式としては、ＪＰＥＧ方式を用い、動画コーデック部１９における圧縮符号化方式としては、ＭＰＥＧ方式を用いるようにしたが、これは一例であって、どのような画像圧縮符号化方式であっても適用可能であることは言うまでもない。
【０３７５】
また、上述の実施形態では、静止画ＮＲ処理において、３枚以上の撮像画像を重ね合わせる場合に、この発明を適用するようにしたが、この発明は、２枚の撮像画像を重ね合わせる場合にも適用可能である。
【０３７６】
また、画像を、水平方向の複数画素毎に分割して、短冊単位のデータとしてメモリアクセスするようにしたが、これは、画像メモリからの画像データの読み出し、書き込み方向が、水平ライン方向を基準にしたからである。画像メモリからの画像データの読み出し、書き込み方向が垂直方向である場合には、画像を垂直方向の複数ライン単位で分割した帯状単位のデータとしてデータアクセスするようにすれば、上述と同様の作用効果が得られることは言うまでもない。また、さらに、画像を水平方向と垂直方向との両方向に分割しても良いことはいうまでもない。
【０３７７】
また、上述の実施の形態において、動きベクトル算出部の第１の例においては、サーチ範囲におけるサーチ方向を水平ライン方向に取り、例えばサーチ範囲の左上から順に参照ブロックを移動させるようにしてサーチを行うようにすると共に、ＳＡＤテーブルの１ライン分のメモリを設けるようにしたが、サーチ範囲におけるサーチ方向を垂直方向に取り、例えばサーチ範囲の左上端から垂直方向にサーチを開始し、垂直方向の１列分のサーチが終わった後、水平方向に、参照ブロックの位置を１つ分、例えば１画素分右の垂直方向の列に移動し、その列の上端から垂直方向にサーチする、という手順を繰り返すサーチ方法を採用するようにしても良い。このようにサーチ範囲の左上端から順に、垂直方向に参照ブロックを移動させるようにしてサーチを行うようにする場合には、ＳＡＤテーブルの垂直方向の一列分のメモリを設けるようにすれば良い。
【０３７８】
ここで、水平方向にサーチ方向を取るか、垂直方向にサーチ方向を取るかは、マッチング処理部、動きベクトル算出部の回路規模を考慮して、より回路規模が小さくなる方を採用するのが好ましい。
【０３７９】
なお、前述もしたように、参照ブロックの移動は、１画素毎、また、１ライン毎ではなく、複数画素毎、また、複数ライン毎でもよい。したがって、前者の場合の水平方向の１ライン分メモリは、水平方向における参照ブロックの移動位置分だけでよく、また、後者の場合の垂直方向の一列分のメモリは、垂直方向における参照ブロックの移動位置分だけでよい。つまり、参照ブロックの移動を１画素毎、また、１ライン毎に行う場合には、１ライン分メモリは、１ラインの画素数分の容量のメモリが必要であり、また、垂直方向の一列分メモリは、ライン数分の容量のメモリが必要である。しかし、複数画素毎、また、複数ライン毎に、参照ブロックを移動させる場合には、１画素毎、また、１ライン毎に参照ブロックを移動させる場合よりも、１ライン分メモリおよび１列分メモリの容量は少なくなる。
【０３８０】
また、補間処理の方法は、上述した二次曲線近似補間処理に限られるものではなく、前述もしたように、３次曲線や、より高次の曲線を用いた補間処理を行っても良い。
【０３８１】
また、上述の実施の形態は、この発明による画像処理装置を撮像装置に適用した場合であるが、この発明は、撮像装置に限られるわけではなく、画像フレーム間の動きを検出する場合の全てに適用可能である。
【０３８２】
また、上述の実施の形態は、画像の重ね合わせによるノイズ低減処理のために、ブロック単位に動きベクトルを検出する場合に、この発明を適用した場合であるが、これに限られるものではなく、例えば撮像時の手ぶれによる動きベクトルを検出するためにも用いることができることは言うまでもない。
【０３８３】
また、上述の実施形態では、階層化処理として、階層化ブロックマッチング処理の場合をこの発明を適用したが、この発明による階層化処理としては、階層化ブロックマッチング処理に限られるものではなく、下位の階層の処理結果を、上位の階層の処理に用いるようにする場合の全ての場合に適用可能である。
【図面の簡単な説明】
【０３８４】
【図１】この発明による画像処理装置の一実施の形態である撮像装置の構成例を示すブロック図である。
【図２】実施の形態の図１の撮像装置における撮像画像のノイズ低減処理を説明するための図である。
【図３】実施の形態の図１の撮像装置におけるブロックマッチング処理の説明のために用いる図である。
【図４】実施の形態の図１の撮像装置における撮像画像のノイズ低減処理を説明するための図である。
【図５】実施の形態の図１の撮像装置における撮像画像のノイズ低減処理を説明するための図である。
【図６】この発明の実施の形態の画像処理方法を説明するために用いる図である。
【図７】この発明の実施の形態の画像処理方法を説明するために用いる図である。
【図８】この発明の実施の形態の画像処理方法を説明するために用いる図である。
【図９】実施の形態の図１の撮像装置における動き検出・動き補償部における動作を説明するために用いる図である。
【図１０】実施の形態の図１の撮像装置における動き検出・動き補償部における動作を説明するために用いる図である。
【図１１】実施の形態の図１の撮像装置における動き検出・動き補償部における動作を説明するために用いる図である。
【図１２】実施の形態の図１の撮像装置における動き検出・動き補償部における処理による効果を説明するための図である。
【図１３】実施の形態の図１の撮像装置における動き検出・動き補償部の構成例を示すブロック図である。
【図１４】図１３の動き検出・動き補償部の一部の詳細構成例のブロック図である。
【図１５】図１３の動き検出・動き補償部の一部の詳細構成例のブロック図である。
【図１６】実施の形態の図１の撮像装置における画像重ね合わせ部の構成例を示すブロック図である。
【図１７】この発明による画像処理方法の実施の形態を説明するためのフローチャートの一部を示す図である。
【図１８】この発明による画像処理方法の実施の形態を説明するためのフローチャートの一部を示す図である。
【図１９】この発明による画像処理方法の実施の形態を説明するためのフローチャートの一部を示す図である。
【図２０】実施の形態の撮像装置における動き検出・動き補償部の動きベクトル算出部の第１の例を説明するために用いる図である。
【図２１】実施の形態の撮像装置における動き検出・動き補償部の動きベクトル算出部の第１の例を説明するために用いる図である。
【図２２】実施の形態の撮像装置における動き検出・動き補償部の動きベクトル算出部の第１の例の構成を示すブロック図である。
【図２３】図２２の動きベクトル算出部の処理動作例を説明するためのフローチャートを示す図である。
【図２４】図２２の動きベクトル算出部の処理動作例を説明するためのフローチャートを示す図である。
【図２５】図２２の動きベクトル算出部の処理動作例を説明するためのフローチャートを示す図である。
【図２６】実施の形態の撮像装置における動き検出・動き補償部の動きベクトル算出部の第２の例の構成を示すブロック図である。
【図２７】図２６の動きベクトル算出部の処理動作例を説明するためのフローチャートを示す図である。
【図２８】図２６の動きベクトル算出部の処理動作例を説明するためのフローチャートを示す図である。
【図２９】図２６の動きベクトル算出部の処理動作例を説明するためのフローチャートを示す図である。
【図３０】この発明の実施の形態の画像処理方法における具体例を説明するために用いる図である。
【図３１】この発明の実施の形態の画像処理方法における具体例を説明するために用いる図である。
【図３２】この発明の実施の形態の画像処理方法における具体例を説明するために用いる図である。
【図３３】この発明の実施の形態の画像処理方法における具体例を説明するために用いる図である。
【図３４】この発明の実施の形態の画像処理方法における短冊アクセス方式を説明するための図である。
【図３５】この発明の実施の形態の画像処理方法における画像データのメモリアクセス方式を説明するための図である。
【図３６】この発明の実施の形態の画像処理方法における画像の処理単位の例を説明するための図である。
【図３７】この発明の実施の形態の画像処理方法における画像データの流れを説明するための図である。
【図３８】この発明の実施の形態の画像処理方法における画像データの流れを説明するための図である。
【図３９】この発明の実施の形態の画像処理方法における画像データの流れを説明するための図である。
【図４０】この発明の実施の形態の画像処理方法における画像データの流れを説明するための図である。
【図４１】この発明の実施の形態の画像処理方法における画像データの流れを説明するための図である。
【図４２】この発明の実施の形態の画像処理方法における画像データの流れを説明するための図である。
【図４３】この発明の実施の形態の画像処理方法における画像データの処理シーケンスの例を説明するための図である。
【図４４】この発明の実施の形態の画像処理方法における画像データの処理シーケンス例を説明するための図である。
【図４５】この発明の実施の形態の画像処理方法における画像データの処理シーケンス例におけるメモリアクセス制御を説明するための図である。
【図４６】この発明の実施の形態の画像処理方法における画像データの処理シーケンス例におけるメモリアクセス制御を説明するための図である。
【図４７】この発明の実施の形態の画像処理方法における画像データの処理シーケンス例におけるメモリアクセス制御を説明するための図である。
【図４８】この発明の実施の形態の画像処理方法における画像データの処理シーケンスの他の例を説明するための図である。
【図４９】この発明の実施の形態の画像処理方法における画像データの処理シーケンスの他の例を説明するための図である。
【図５０】この発明の実施の形態の画像処理方法における画像データの処理シーケンスの他の例におけるメモリアクセス制御を説明するための図である。
【図５１】この発明の実施の形態の画像処理方法における画像データの処理シーケンスの他の例におけるメモリアクセス制御を説明するための図である。
【図５２】この発明の実施の形態の画像処理方法における画像データの処理シーケンスの他の例におけるメモリアクセス制御を説明するための図である。
【図５３】この発明の実施の形態の画像処理方法における画像データの処理シーケンスの他の例におけるメモリアクセス制御を説明するための図である。
【図５４】この発明の実施の形態の画像処理方法における画像データの処理シーケンスを実現する制御部の機能的構成例を示す図である。
【図５５】ブロックマッチング処理を説明するために用いる図である。
【図５６】ブロックマッチング処理を説明するために用いる図である。
【図５７】ブロックマッチング処理を説明するために用いる図である。
【図５８】ブロックマッチング処理を説明するために用いる図である。
【図５９】ブロックマッチング処理を説明するために用いる図である。
【図６０】ブロックマッチング処理を説明するために用いる図である。
【符号の説明】
【０３８５】
４…画像メモリ部、１６…動き検出・動き補償部、１７…画像重ね合わせ部、１８…静止画コーデック部、１００…ターゲット画像（ターゲットフレーム）、１０１…参照画像（参照フレーム）、１０２…ターゲットブロック、１０４…動きベクトル１０６…サーチ範囲、１０７…参照ベクトル、１０８…参照ブロック、１６３…マッチング処理部、１６４…動きベクトル算出部、１６５…コントロール部
【図１】
0004888306.tif 000002
【図２】
0004888306.tif 000003
【図３】
0004888306.tif 000004
【図４】
0004888306.tif 000005
【図５】
0004888306.tif 000006
【図６】
0004888306.tif 000007
【図７】
0004888306.tif 000008
【図８】
0004888306.tif 000009
【図９】
0004888306.tif 000010
【図１０】
0004888306.tif 000011
【図１１】
0004888306.tif 000012
【図１２】
0004888306.tif 000013
【図１３】
0004888306.tif 000014
【図１４】
0004888306.tif 000015
【図１５】
0004888306.tif 000016
【図１６】
0004888306.tif 000017
【図１７】
0004888306.tif 000018
【図１８】
0004888306.tif 000019
【図１９】
0004888306.tif 000020
【図２０】
0004888306.tif 000021
【図２１】
0004888306.tif 000022
【図２２】
0004888306.tif 000023
【図２３】
0004888306.tif 000024
【図２４】
0004888306.tif 000025
【図２５】
0004888306.tif 000026
【図２６】
0004888306.tif 000027
【図２７】
0004888306.tif 000028
【図２８】
0004888306.tif 000029
【図２９】
0004888306.tif 000030
【図３０】
0004888306.tif 000031
【図３１】
0004888306.tif 000032
【図３２】
0004888306.tif 000033
【図３３】
0004888306.tif 000034
【図３４】
0004888306.tif 000035
【図３５】
0004888306.tif 000036
【図３６】
0004888306.tif 000037
【図３７】
0004888306.tif 000038
【図３８】
0004888306.tif 000039
【図３９】
0004888306.tif 000040
【図４０】
0004888306.tif 000041
【図４１】
0004888306.tif 000042
【図４２】
0004888306.tif 000043
【図４３】
0004888306.tif 000044
【図４４】
0004888306.tif 000045
【図４５】
0004888306.tif 000046
【図４６】
0004888306.tif 000047
【図４７】
0004888306.tif 000048
【図４８】
0004888306.tif 000049
【図４９】
0004888306.tif 000050
【図５０】
0004888306.tif 000051
【図５１】
0004888306.tif 000052
【図５２】
0004888306.tif 000053
【図５３】
0004888306.tif 000054
【図５４】
0004888306.tif 000055
【図５５】
0004888306.tif 000056
【図５６】
0004888306.tif 000057
【図５７】
0004888306.tif 000058
【図５８】
0004888306.tif 000059
【図５９】
0004888306.tif 000060
【図６０】
0004888306.tif 000061