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