(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の位置の近傍位置の複数個のＳＡＤ値（基底面近傍ＳＡＤ値という）、この例では、基底面最小ＳＡＤ値ＳＳ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に対応する参照ベクトルの情報、すなわち、縮小面動きベクトルの情報は、動きベクトル算出部１６４からコントロール部１６５に供給され、動き補償ブロックを、参照ブロックバッファ部１６２から読み出すために用いられる。
【０１７６】
また、前述した階層化マッチング処理モード１においては、縮小面マッチング処理後にＳＡＤ値保持部１６４３に保持された最小のＳＡＤ値Ｓminに対応する参照ベクトルの情報、すなわち、縮小面動きベクトルの情報は、動きベクトル算出部１６４からコントロール部１６５に供給され、基底面におけるブロックマッチングの際のサーチ範囲を設定するために用いられる。
【０１７７】
また、前述した階層化マッチング処理モード２においては、基底面マッチング処理後にＳＡＤ値保持部１６４３に保持された最小のＳＡＤ値Ｓminに対応する参照ベクトルの情報、すなわち、基底面動きベクトルの情報は、動きベクトル算出部１６４からコントロール部１６５に供給され、動き補償ブロックを、参照ブロックバッファ部１６２から読み出すために用いられる。
【０１７８】
ブロックマッチング処理において、縮小面動きベクトルまたは基底面動きベクトルを検出するだけでよい場合には、ＳＡＤ値保持部１６４３には、最小のＳＡＤ値ＳminまたはＳＳminおよび、当該最小のＳＡＤ値ＳminまたはＳＳminを呈する縮小面参照ブロックまたは基底面参照ブロックの位置情報（縮小面参照ベクトルまたは基底面参照ベクトル）を保持するだけでよい。
【０１７９】
しかしながら、この実施の形態では、縮小面マッチング処理モードのみではなく、縮小面マッチング＋補間処理モードや、階層化マッチング＋補間処理モード１，２を、実行することができるように構成する必要があり、動きベクトル算出部１６４では、ブロックマッチング処理結果としての動きベクトルを算出するだけでなく、前述したように、補間処理をも実行するように構成する必要がある。
【０１８０】
すなわち、この実施の形態においては、動きベクトル算出部１６４は、縮小面または基底面におけるブロックマッチング処理の後において、最小のＳＡＤ値を呈する参照ブロックの位置の近傍の複数個のＳＡＤ値を用いて、高精度縮小面動きベクトルおよび高精度基底面動きベクトルを算出するための補間処理を行う必要がある。
【０１８１】
そこで、この実施の形態では、動きベクトル算出部１６４は、補間処理を行うための構成も備える。すなわち、ＳＡＤ値保持部１６４３と、Ｘ方向（水平方向）近傍値抽出部１６４４と、Ｙ方向（垂直方向）近傍値抽出部１６４５と、二次曲線近似補間処理部１６４６とは、補間処理のための構成部分である。
【０１８２】
この例の動きベクトル算出部１６４では、検出した最小のＳＡＤ値ＳminまたはＳＳminの近傍の複数個、この例では、近傍４個のＳＡＤ値およびそれぞれのＳＡＤ値を呈する参照ブロックの位置情報（参照ベクトル）をＳＡＤテーブルＴＢＬから読み出して、ＳＡＤ値保持部１６４３に保持するように構成している。
【０１８３】
次に、Ｘ方向（水平方向）近傍値抽出部１６４４は、ＳＡＤ値保持部１６４３に保持された、前記検出した最小のＳＡＤ値とそのＸ方向（水平方向）の近傍値とを、それぞれの参照ブロックの位置情報（参照ブロック）と共に読み出し、二次曲線近似補間処理部１６４６に送る。二次曲線近似補間処理部１６４６は、二次曲線による補間処理を、Ｘ方向（水平方向）について、前述したようにして実行する。
【０１８４】
次に、Ｙ方向（垂直方向）近傍値抽出部１６４５は、ＳＡＤ値保持部１６４３に保持された、前記検出した最小のＳＡＤ値とそのＹ方向（垂直方向）の近傍値とを、それぞれの参照ブロックの位置情報（参照ブロック）と共に読み出し、二次曲線近似補間処理部１６４６に送る。二次曲線近似補間処理部１６４６は、二次曲線による補間処理を、Ｙ方向（垂直方向）について、前述したようにして実行する。
【０１８５】
こうして、二次曲線近似補間処理部１６４６は、二次曲線による補間処理を、Ｘ方向およびＹ方向の２回行い、縮小面においては、ピクセル精度の高精度縮小面動きベクトルを算出し、基底面においては、サブピクセル精度の高精度基底面動きベクトルを算出する。
【０１８６】
二次曲線近似補間処理部１６４６は、コントロール部１６５の制御により、縮小面マッチング＋補間処理モードと、階層化マッチングモード２と、階層化マッチング＋補間処理モード１および階層化マッチング＋補間処理モード２、のときに動作するようにされる。そして、二次曲線近似補間処理部１６４６は、算出した縮小面動きベクトルまたは基底面動きベクトルは、コントロール部１６５に供給する。
【０１８７】
コントロール部１６５は、縮小面マッチング＋補間処理モードにおいては、動きベクトル算出部１６４から受け取った高精度縮小面動きベクトルは、動き補償ブロックを、参照ブロックバッファ部１６２から読み出すために用いるようにする。
【０１８８】
また、コントロール部１６５は、階層化マッチング処理モード２においては、動きベクトル算出部１６４から受け取った高精度縮小面動きベクトルは、基底面におけるブロックマッチングの際のサーチ範囲を設定するために用いるようにする。
【０１８９】
また、コントロール部１６５は、階層化マッチング処理モード２においては、動きベクトル算出部１６４から受け取った高精度基底面動きベクトルは、動き補償ブロックを、参照ブロックバッファ部１６２から読み出すために用いるようにする。
【０１９０】
また、コントロール部１６５は、階層化マッチング＋補間処理モード１においては、動きベクトル算出部１６４から受け取った高精度基底面動きベクトルは、動き補償ブロックを、参照ブロックバッファ部１６２から読み出すために用いるようにする。
【０１９１】
また、コントロール部１６５は、階層化マッチング＋補間処理モード２においては、動きベクトル算出部１６４から受け取った高精度縮小面動きベクトルは、基底面におけるブロックマッチングの際のサーチ範囲を設定するために用いるようにする。
【０１９２】
また、コントロール部１６５は、階層化マッチング＋補間処理モード２においては、動きベクトル算出部１６４から受け取った高精度基底面動きベクトルは、動き補償ブロックを、参照ブロックバッファ部１６２から読み出すために用いるようにする。
【０１９３】
この第１の例における縮小面または基底面でのブロックマッチング処理時の流れの例を図２４のフローチャートに示す。この第１の例のフローチャートの各ステップは、コントロール部１６５の制御の基に、マッチング処理部１６３および動きベクトル算出部１６４においてなされるものである。
【０１９４】
先ず、マッチング処理部１６３は、縮小面または基底面における参照ベクトル（Ｖｘ，Ｖｙ）を設定して、ＳＡＤ値を計算する縮小面または基底面参照ブロック位置を設定し（ステップＳ１）、設定した縮小面または基底面参照ブロックの画素データを、参照ブロックバッファ部１６２から読み込む（ステップＳ２）。次に、ターゲットブロックバッファ部１６１の縮小面または基底面ターゲットブロックの画素データを読み込んで、縮小面または基底面ターゲットブロックおよび縮小面または基底面参照ブロックの各画素データの差分の絶対値の総和、つまり、ＳＡＤ値を求め（ステップＳ３）、求めたＳＡＤ値を動きベクトル算出部１６４に送出する。動きベクトル算出部１６４では、ＳＡＤ値書き込み部１６４１が、受け取ったＳＡＤ値を、対応する縮小面または基底面参照ブロックの位置、つまり、縮小面または基底面参照ベクトルに対応する位置に格納する（ステップＳ４）。
【０１９５】
次に、マッチング処理部１６３は、サーチ範囲の全ての縮小面または基底面参照ブロックの位置（縮小面または基底面参照ベクトル）でマッチング処理を終了したか否か判別し（ステップＳ５）、未だ、サーチ範囲においては、未処理の縮小面または基底面参照ブロックがあると判別したときには、ステップＳ１に戻り、前述したステップＳ１以降の処理を繰り返す。
【０１９６】
また、マッチング処理部１６３は、ステップＳ５で、サーチ範囲の全ての縮小面参照ブロックの位置（参照ベクトル）でマッチング処理を終了したと判別したときには、その旨を動きベクトル算出部１６４に伝える。
【０１９７】
動きベクトル算出部１６４では、コントロール部１６５からの情報により、補間処理を行うモードか否か判別し（ステップＳ６）、補間を行わないモードであると判別したときには、ＳＡＤ値比較部１６４２が、ＳＡＤテーブルＴＢＬの各ＳＡＤ値を比較して、ＳＡＤテーブルＴＢＬにおいて最小となるＳＡＤ値ＳminまたはＳＳminを検出し、検出したＳＡＤ値の最小値ＳminまたはＳＳminに対応する縮小面または基底面参照ブロックの位置の情報（縮小面または基底面動きベクトルの情報）を、コントロール部１６５に送出する（ステップＳ７）。以上で、補間処理を行わないモードである場合の第１の例におけるブロックマッチング処理は終了となる。
【０１９８】
また、ステップＳ６で、補間処理を行うモードであると判別したときには、これに応じて、ＳＡＤ値比較部１６４２が、ＳＡＤテーブルＴＢＬの各ＳＡＤ値を比較して、ＳＡＤテーブルＴＢＬにおいて最小となるＳＡＤ値ＳminまたはＳＳminを検出し、検出したＳＡＤ値の最小値ＳminまたはＳＳminを、これらに対応する縮小面または基底面参照ブロックの位置の情報と共にＳＡＤ値保持部１６４３の最小値格納部に保持する。そして、ＳＡＤ値保持部１６４３は、検出された最小のＳＡＤ値ＳminまたはＳＳminの位置の近傍位置の縮小面近傍ＳＡＤ値Ｓx1、Ｓx2、Ｓy1、Ｓy2または基底面近傍ＳＡＤ値ＳＳx1、ＳＳx2、ＳＳy1、ＳＳy2を、ＳＡＤテーブルＴＢＬから取得して、それぞれの格納部に保持する（ステップＳ８）。
【０１９９】
次に、Ｘ方向（水平方向）近傍値抽出部１６４４およびＹ方向（垂直方向）近傍値抽出部１６４５が、ＳＡＤ値保持部１６４３に保持された、前記検出した最小のＳＡＤ値ＳminまたはＳＳminとその近傍ＳＡＤ値Ｓx1、Ｓx2、Ｓy1、Ｓy2または基底面近傍ＳＡＤ値ＳＳx1、ＳＳx2、ＳＳy1、ＳＳy2、およびそれらの位置情報を読み出し、二次曲線近似補間処理部１６４６に送る。これを受けた二次曲線近似補間処理部１６４６は、二次曲線による補間を、Ｘ方向およびＹ方向の２回行い、前述したようにして、高精度の縮小面動きベクトルまたは基底面動きベクトルを算出する（ステップＳ９）。以上で、第１の例におけるブロックマッチング処理は終了となる。
【０２００】
以上説明した第１の例は、算出したＳＡＤ値を全て記憶するＳＡＤテーブルＴＢＬを生成し、当該生成したＳＡＤテーブルＴＢＬから二次曲線近似補間用の最小のＳＡＤ値と、その近傍の４個のＳＡＤ値を抽出するようにするので、ＳＡＤテーブルＴＢＬの分だけ、大規模なメモリを必要とする。
【０２０１】
以下に説明する他の例では、算出したＳＡＤ値を全て記憶するＳＡＤテーブルＴＢＬを生成しないことにより、より回路規模を削減するとともに、処理時間も削減することができるようにする。
【０２０２】
＜動きベクトル算出部１６４のハードウエア構成例の第２の例＞
上述したように、ブロックマッチング処理は、参照ベクトルの示す位置を参照ブロックの位置とし、各参照ブロックの各画素とターゲットブロックの各画素のＳＡＤ値を計算し、その計算処理を、サーチ範囲内のすべての参照ベクトルの示す位置の参照ブロックについて行う。
【０２０３】
ここで、サーチ範囲内において参照ブロックの位置を変えて、動き補償ブロックをサーチする場合に、サーチを画面（フレーム）の端から順番に行う、画面（フレーム）の中心から外側に向かって行う、などいろいろな方法が考えられるが、この実施の形態では、サーチ方向は、図２５（Ａ）で矢印１２０に示すように設定され、サーチ範囲の左上端から水平方向にサーチを開始し、１ライン分のサーチが終わった後、垂直方向に１ライン下のラインを、左端から水平方向にサーチする、という手順を繰り返すサーチ方法を採用する。
【０２０４】
すなわち、図２５（Ｂ）に示すように、サーチ範囲１０６において、当該サーチ範囲１０６の左上から水平方向に参照ブロック１０８を順次に設定してサーチして、各参照ブロック１０８についてのＳＡＤ値の計算を行う。すると、図２５（Ｃ）に示すように、対応するＳＡＤテーブルも左上から水平方向に埋まっていく。このとき、実際にマッチング処理に使用される画素データの範囲は、参照ブロック１０８の大きさに応じたマッチング処理範囲１１０となるのは、前述した通りである。
【０２０５】
図１１および図１８に示したように、この実施形態においてピクセル精度またはサブピクセル精度の二次曲線近似補間処理を行うためには、ＳＡＤ値の最小値ＳminまたはＳＳmin、および縮小面近傍のＳＡＤ値Ｓx1、Ｓx2、Ｓy1、Ｓy2または基底面近傍ＳＡＤ値ＳＳx1、ＳＳx2、ＳＳy1、ＳＳy2が求まれば良い。
【０２０６】
各参照ブロックについてのＳＡＤ値を算出した際に、その算出したＳＡＤ値と、その時点までのＳＡＤ値の最小値とを比較して、算出したＳＡＤ値がその時までのＳＡＤ値の最小値よりも小さければ、算出したＳＡＤ値を最小値として保持すると共に、そのＳＡＤ値とそのときの参照ベクトルを保持することにより、ＳＡＤ値の最小値および当該最小値を取る参照ブロックの位置情報（参照ベクトルの情報）とを、ＳＡＤテーブルを生成することなく、求めることができる。
【０２０７】
そして、検出したＳＡＤ値の最小値を保持すると共に、その最小ＳＡＤ値となる参照ブロック位置の近傍の参照ブロックのＳＡＤ値を、近傍ＳＡＤ値として保持するようにすれば、近傍ＳＡＤ値をも、ＳＡＤテーブルを生成することなく、保持することができる。
【０２０８】
このとき、この例では、図２６（Ａ）に示すように、上述の図２５（Ａ）に示したようなサーチ方法を採用しているので、従来のＳＡＤテーブルＴＢＬにおいて水平方向の１ライン分のＳＡＤ値を記憶する容量のメモリ（以下、ラインメモリという）を設ければ、新たに参照ブロックのＳＡＤ値が算出されたときには、ＳＡＤテーブルＴＢＬ上では、図２６（Ｂ）で斜線を付して示すように、当該新たに算出されたＳＡＤ値１２１に対して、それより前に算出されたＳＡＤテーブルＴＢＬの１ライン分の複数個の参照ブロックのＳＡＤ値が、格納データ１２２として前記ラインメモリに格納されていることになる。
【０２０９】
そこで、新たに算出された参照ブロックのＳＡＤ値が、最小のＳＡＤ値として検出されたときには、ＳＡＤテーブルＴＢＬ上において、前記最小ＳＡＤ値１２１を呈する参照ブロックの位置の１ライン上の位置の参照ブロックのＳＡＤ値１２３（近傍ＳＡＤ値（Ｓy1またはＳＳy1））と、前記最小ＳＡＤ値１２１を呈する参照ブロックの位置の左横の位置の参照ブロックのＳＡＤ値１２４（近傍ＳＡＤ値（Ｓx1またはＳＳx1））は、前記ラインメモリから取得することができる。
【０２１０】
そして、ＳＡＤテーブルＴＢＬ上において、最小ＳＡＤ値の参照ブロックの位置の右横の位置の参照ブロックのＳＡＤ値である近傍ＳＡＤ値（Ｓx2またはＳＳx2）（図２６（Ｃ）の符号１２５参照）は、後で、その参照ブロック位置で算出されたＳＡＤ値を保持すればよい。同様に、ＳＡＤテーブルＴＢＬ上において、新たに算出された最小ＳＡＤ値の参照ブロックの位置の１ライン下の位置の参照ブロックのＳＡＤ値である近傍ＳＡＤ値（Ｓy2またはＳＳy2）（図２０（Ｃ）の符号１２６参照）も、後で、その参照ブロック位置で算出されたＳＡＤ値を保持すればよい。
【０２１１】
以上のことを考慮して、この動きベクトル算出部１６４の第２の例は、図２７に示すようなハードウエア構成とする。
【０２１２】
すなわち、この動きベクトル算出部１６４の第２の例においては、図２３に示した第１の例の場合のように、算出された全てのＳＡＤ値を保持するＳＡＤテーブルＴＢＬは備えず、ＳＡＤ値書き込み部１６４１と、ＳＡＤ値比較部１６４２と、ＳＡＤ値保持部１６４３と、Ｘ方向（水平方向）近傍値抽出部１６４４およびＹ方向（垂直方向）近傍値抽出部１６４５と、二次曲線近似補間処理部１６４６と、ＳＡＤテーブルＴＢＬの１ライン分のメモリ（ラインメモリという）１６４７とを備えてなる。
【０２１３】
そして、Ｘ方向（水平方向）近傍値抽出部１６４４およびＹ方向（垂直方向）近傍値抽出部１６４５と、二次曲線近似補間処理部１６４６とは、前述した第１の例と同様の動作を行うが、ＳＡＤ値書き込み部１６４１、ＳＡＤ値比較部１６４２、ＳＡＤ値保持部１６４３およびラインメモリ１６４７の部分は、前述の第１の例とは、異なる動作を行う。
【０２１４】
ＳＡＤ値保持部１６４３は、図２３の第１の例と同様に、最小ＳＡＤ値ＳminまたはＳＳminおよび縮小面近傍ＳＡＤ値Ｓx1、Ｓx2、Ｓy1、Ｓy2または基底面近傍ＳＡＤ値ＳＳx1、ＳＳx2、ＳＳy1、ＳＳy2の保持部（メモリ）を備える。そして、この第２の例においては、ＳＡＤ値保持部１６４３は、その最小ＳＡＤ値保持部からの最小ＳＡＤ値ＳminまたはＳＳminをＳＡＤ値比較部１６４２に供給する共に、保持している近傍ＳＡＤ値のうち、最小ＳＡＤ値ＳminまたはＳＳminの右側の近傍ＳＡＤ値Ｓx2またはＳＳx2の参照ブロックの位置情報（参照ベクトル）と、最小ＳＡＤ値ＳminまたはＳＳminの下側の近傍ＳＡＤ値Ｓy2またはＳＳy2の参照ブロックの位置情報（参照ベクトル）とを、ＳＡＤ値書き込み部１６４１に供給する。
【０２１５】
ＳＡＤ値比較部１６４２は、この第２の例においては、マッチング処理部１６３からの参照ブロックの位置情報（参照ベクトル）と、当該参照ブロックのＳＡＤ値Ｓinとを受けると共に、ＳＡＤ値保持部１６４３の最小ＳＡＤ値保持部からの最小ＳＡＤ値ＳminまたはＳＳminとを受ける。
【０２１６】
そして、ＳＡＤ値比較部１６４２は、マッチング処理部１６３からの当該時点で算出されたＳＡＤ値Ｓinと、ＳＡＤ値保持部１６４３の最小ＳＡＤ値保持部からの最小ＳＡＤ値ＳminまたはＳＳminとの両者を比較し、マッチング処理部１６３からの当該時点で算出されたＳＡＤ値Ｓinの方が小さいときには、当該時点で、そのＳＡＤ値を最小ＳＡＤ値であるとして検出し、また、ＳＡＤ値Ｓinの方が小さいときには、当該時点では、ＳＡＤ値保持部１６４３の最小ＳＡＤ値保持部からの最小ＳＡＤ値ＳminまたはＳＳminが未だ最小値であると検出する。そして、ＳＡＤ値比較部１６４２は、その検出結果の情報ＤＥＴをＳＡＤ値書き込み部１６４１およびＳＡＤ値保持部１６４３に供給する。
【０２１７】
ＳＡＤ値書き込み部１６４１は、マッチング処理部１６３からの算出されたＳＡＤ値Ｓinおよびその位置情報（参照ベクトル）を一時保持するための１画素分のバッファメモリを備え、この第２の例においては、マッチング処理部１６３からの参照ブロックの位置情報（参照ベクトル）と、当該参照ブロックのＳＡＤ値Ｓinとを、ラインメモリ１６４７に書き込む。この場合、ラインメモリ１６４７は、シフトレジスタと同様の動作を行い、空きスペースが無いときには、新規の位置情報およびＳＡＤ値が記憶されると、ラインメモリ１６４７において最も古い前記位置情報およびＳＡＤ値が廃棄される。
【０２１８】
また、ＳＡＤ値書き込み部１６４１は、算出されたＳＡＤ値Ｓinおよびその位置情報をラインメモリ１６４７に書き込む前に、この第１の例においては、次のような処理を行う。
【０２１９】
すなわち、ＳＡＤ値書き込み部１６４１は、ＳＡＤ値比較部１６４２からの比較検出結果の情報ＤＥＴが、ＳＡＤ値Ｓinが最小値であることを示しているときには、マッチング処理部１６３からの参照ブロックの位置情報（参照ベクトル）と、当該参照ブロックのＳＡＤ値Ｓinとを、ＳＡＤ値保持部１６４３に送る。
【０２２０】
ＳＡＤ値保持部１６４３は、ＳＡＤ値比較部１６４２からの比較検出結果の情報ＤＥＴにより、ＳＡＤ値Ｓinが最小値であることを検知し、ＳＡＤ値書き込み部１６４１から送られてくる参照ブロックの位置情報（参照ベクトル）と、当該参照ブロックのＳＡＤ値Ｓinとを、最小ＳＡＤ値保持部に格納する。
【０２２１】
また、ＳＡＤ値書き込み部１６４１は、この第２の例においては、マッチング処理部１６３からの参照ブロックの位置情報（参照ベクトル）が、ＳＡＤ値保持部１６４３から受け取った近傍ＳＡＤ値Ｓx2（あるいはＳＳx2）または近傍ＳＡＤ値Ｓy2（あるいはＳＳy2）の位置情報と一致したときにも、マッチング処理部１６３からの参照ブロックの位置情報（参照ベクトル）と、当該参照ブロックのＳＡＤ値Ｓinとを、ＳＡＤ値保持部１６４３に送る。
【０２２２】
ＳＡＤ値保持部１６４３は、受け取った参照ブロックの位置情報（参照ベクトル）から、いずれの近傍ＳＡＤ値に関する情報かを認識して、対応する近傍ＳＡＤ値保持部に格納する。
【０２２３】
以上の処理をサーチ範囲における全ての参照ブロックについて終了すると、ＳＡＤ値保持部１６４３には、前述したように、最小ＳＡＤ値およびその位置情報ならびに４個の近傍ＳＡＤ値およびその位置情報が保持される。
【０２２４】
そこで、前述した第１の例と同様にして、Ｘ方向（水平方向）近傍値抽出部１６４４およびＹ方向（垂直方向）近傍値抽出部１６４５が、ＳＡＤ値保持部１６４３に保持された、前記検出した最小のＳＡＤ値Ｓmin（あるいはＳＳmin）とその近傍ＳＡＤ値Ｓx1、Ｓx2、Ｓy1、Ｓy2（あるいはＳＳx1、ＳＳx2、ＳＳy1、ＳＳy2）およびそれらの位置情報を読み出し、二次曲線近似補間処理部１６４６に送る。これを受けた二次曲線近似補間処理部１６４６は、二次曲線による補間を、Ｘ方向およびＹ方向の２回行い、前述したようにして、サブピクセル精度の高精度の動きベクトルを算出する。
【０２２５】
以上のようにして、第２の例においては、ＳＡＤテーブルＴＢＬの代わりに、ＳＡＤテーブルＴＢＬの１ライン分のラインメモリを用いることにより、サブピクセル精度の動きベクトルの検出ができる。
【０２２６】
この第２の例における縮小面でのブロックマッチング処理時の流れの例を図２８およびその続きである図２９のフローチャートに示す。これらの第２の例のフローチャートの各ステップも、コントロール部１６５の制御に従ってマッチング処理部１６３および動きベクトル算出部１６４においてなされるものである。
【０２２７】
はじめに、動きベクトル算出部１６４のＳＡＤ値保持部１６４３の最小ＳＡＤ値ＳminまたはＳＳminの初期値を設定する（ステップＳ１１）。この最小ＳＡＤ値ＳminまたはＳＳminの初期値としては、例えば、画素の差分の最大値が設定される。
【０２２８】
次に、マッチング処理部１６３では、縮小面または基底面の参照ベクトル（Ｖｘ，Ｖｙ）を設定して、ＳＡＤ値を計算する縮小面または基底面参照ブロック位置を設定し（ステップＳ１２）、設定した縮小面または基底面参照ブロックの画素データを、参照ブロックバッファ部１６２から読み込む（ステップＳ１３）。
【０２２９】
そして、ターゲットブロックバッファ部１６１から縮小面または基底面ターゲットブロックの画素データを読み込んで、縮小面または基底面ターゲットブロックおよび縮小面または基底面参照ブロックの各画素データの差分の絶対値の総和、つまり、ＳＡＤ値を求め、求めたＳＡＤ値を動きベクトル算出部１６４に送出する（ステップＳ１４）。
【０２３０】
動きベクトル算出部１６４では、ＳＡＤ値書き込み部１６４１により、そのＳＡＤ値をラインメモリ１６４７に書き込む（ステップＳ１５）。
【０２３１】
次に、動きベクトル算出部１６４では、コントロール部１６５からの情報により、補間処理を行うモードか否か判別し（ステップＳ１６）、補間を行わないモードであると判別したときには、ＳＡＤ値比較部１６４２が、マッチング処理部１６３で算出されたＳＡＤ値Ｓinと、ＳＡＤ値保持部１６４３に保持されている最小ＳＡＤ値ＳminまたはＳＳminとを比較して、算出されたＳＡＤ値Ｓinが、それまで保持されている最小ＳＡＤ値ＳminまたはＳＳminよりも小さいか否か判別する（ステップＳ１７）。
【０２３２】
このステップＳ１７で、算出されたＳＡＤ値Ｓinが最小ＳＡＤ値ＳminまたはＳＳminより小さいと判別したときには、ステップＳ１８に進み、ＳＡＤ値保持部１６４３に保持される最小ＳＡＤ値ＳminまたはＳＳminの情報およびその位置情報（縮小面または基底面参照ベクトル）の更新がなされる。
【０２３３】
また、ステップＳ１７で、算出されたＳＡＤ値Ｓinが最小ＳＡＤ値ＳminまたはＳＳminより大きいと判別したときには、ステップＳ１８の保持情報の更新処理は行わずにステップＳ１９に進み、マッチング処理部１６３は、サーチ範囲の全ての縮小面または基底面参照ブロックの位置（縮小面または基底面参照ベクトル）でマッチング処理を終了したか否か判別し、未だ、サーチ範囲においては、未処理の参照ブロックがあると判別したときには、ステップＳ１２に戻り、前述したステップＳ１２以降の処理を繰り返す。
【０２３４】
また、マッチング処理部１６３は、ステップＳ１９で、サーチ範囲の全ての縮小面または基底面参照ブロックの位置（縮小面または基底面参照ベクトル）でマッチング処理を終了したと判別したときには、その旨を動きベクトル算出部１６４に伝える。動きベクトル算出部１６４では、これを受けて、ＳＡＤ値保持部１６４３に保持される最小ＳＡＤ値ＳminまたはＳＳminの位置情報（縮小面または基底面動きベクトル）を、コントロール部１６５に出力する（ステップＳ２０）。
【０２３５】
以上で、この第２の例における補間処理を行わないモードにおけるブロックマッチング処理を終了する。
【０２３６】
次に、ステップＳ１６で、補間処理を行うモードであると判別したときには、動きベクトル算出部１６４では、ＳＡＤ値比較部１６４２が、マッチング処理部１６３で算出されたＳＡＤ値Ｓinと、ＳＡＤ値保持部１６４３に保持されている最小ＳＡＤ値ＳminまたはＳＳminとを比較して、算出されたＳＡＤ値Ｓinが、それまで保持されている最小ＳＡＤ値ＳminまたはＳＳminよりも小さいか否か判別する（ステップＳ２１）。
【０２３７】
このステップＳ２１で、算出されたＳＡＤ値Ｓinが最小ＳＡＤ値ＳminまたはＳＳminより小さいと判別したときには、ステップＳ２２に進み、ＳＡＤ値保持部１６４３に保持される最小ＳＡＤ値ＳminまたはＳＳminの情報および当該最小ＳＡＤ値ＳminまたはＳＳminを呈する参照ブロック位置の１ピクセル上および１ピクセル左の位置の参照ブロックのＳＡＤ値およびその位置情報（縮小面または基底面参照ベクトル）の更新がなされる。
【０２３８】
すなわち、ＳＡＤ値比較部１６４２は、算出されたＳＡＤ値Ｓinが最小ＳＡＤ値ＳminまたはＳＳminより小さい旨の比較結果の情報ＤＥＴをＳＡＤ値書き込み部１６４１に送る。すると、ＳＡＤ値書き込み部１６４１は、当該算出されたＳＡＤ値Ｓinおよびその位置情報（基底面参照ベクトル）を、新たな最小ＳＡＤ値ＳminまたはＳＳminの情報としてＳＡＤ値保持部１６４３に送ると共に、図２６（Ｂ）から分かるように、ラインメモリ１６４７の最も古いＳＡＤ値およびその位置情報（縮小面または基底面参照ベクトル）と、最も新しいＳＡＤ値およびその位置情報（縮小面または基底面参照ベクトル）とを、最小ＳＡＤ値の位置の１ピクセル上の位置の基底面参照ブロックのＳＡＤ値Ｓy1またはＳＳy1の情報および１ピクセル左の位置の基底面参照ブロックのＳＡＤ値Ｓx1またはＳＳx1の情報として、ＳＡＤ値保持部１６４３に送る。ＳＡＤ値保持部１６４３は、受け取った新たな最小ＳＡＤ値ＳminまたはＳＳminの情報および１ピクセル上の位置の基底面参照ブロックのＳＡＤ値Ｓy1またはＳＳy1の情報および１ピクセル左の位置の基底面参照ブロックのＳＡＤ値Ｓx1またはＳＳx1の情報により、それぞれ対応する保持情報を更新する。
【０２３９】
そして、ステップ２２の次には、ステップＳ２３に進む。また、ステップＳ２１で、算出されたＳＡＤ値Ｓinが最小ＳＡＤ値ＳminまたはＳＳminより大きいと判別したときには、ステップＳ２２の保持情報の更新処理は行わずにステップＳ２３に進む。
【０２４０】
ステップＳ２３では、ＳＡＤ値書き込み部１６４１は、算出されたＳＡＤ値Ｓinについての位置情報（参照ベクトル）の指す位置が、最小ＳＡＤ値ＳminまたはＳＳminとして保持されている縮小面または基底面参照ブロックの位置の１ピクセル下の縮小面または基底面参照ブロックの位置であるか否か判別し、１ピクセル下の縮小面または基底面参照ブロックの位置であると判別したときには、算出されたＳＡＤ値Ｓinおよびその位置情報（参照ベクトル）をＳＡＤ値保持部１６４３に送る。ＳＡＤ値保持部１６４３は、受け取ったＳＡＤ値およびその位置情報により、前記１ピクセル下の位置の縮小面または基底面参照ブロックについての近傍ＳＡＤ値Ｓy2またはＳＳy2の保持情報を更新する（ステップＳ２４）。
【０２４１】
ステップＳ２３で、算出されたＳＡＤ値Ｓinについての位置情報（基底面参照ベクトル）の指す位置が、最小ＳＡＤ値ＳminまたはＳＳminとして保持されている縮小面または基底面参照ブロックの位置の１ピクセル下の縮小面または基底面参照ブロックの位置でないと判別したときには、ＳＡＤ値書き込み部１６４１は、算出されたＳＡＤ値Ｓinについての位置情報（縮小面または基底面参照ベクトル）の指す位置が、最小ＳＡＤ値ＳminまたはＳＳminとして保持されている縮小面または基底面参照ブロックの位置の１ピクセル下の縮小面または基底面参照ブロックの位置であるか否か判別する（ステップＳ２５）。
【０２４２】
このステップＳ２５で、算出されたＳＡＤ値Ｓinについての位置情報（縮小面または基底面参照ベクトル）の指す位置が、最小ＳＡＤ値ＳminまたはＳＳminとして保持されている縮小面または基底面参照ブロックの位置の１ピクセル右の縮小面または基底面参照ブロックの位置であると判別したときには、ＳＡＤ値書き込み部１６４１は、算出されたＳＡＤ値Ｓinおよびその位置情報（縮小面または基底面参照ベクトル）をＳＡＤ値保持部１６４３に送る。ＳＡＤ値保持部１６４３は、受け取ったＳＡＤ値およびその位置情報により、前記１ピクセル右の位置の縮小面または基底面参照ブロックについての近傍ＳＡＤ値Ｓx2またはＳＳx2の保持情報を更新する（ステップＳ２６）。
【０２４３】
ステップＳ２５で、算出されたＳＡＤ値Ｓinについての位置情報（縮小面または基底面参照ベクトル）の指す位置が、最小ＳＡＤ値ＳminまたはＳＳminとして保持されている縮小面または基底面参照ブロックの位置の１ピクセル右の縮小面または基底面参照ブロックの位置でないと判別したときには、ＳＡＤ値書き込み部１６４１は、算出されたＳＡＤ値Ｓinおよびその位置情報（縮小面または基底面参照ベクトル）は、ラインメモリ１６４７にのみ書き込み（前述のステップＳ２７）、ＳＡＤ値保持部１６４３に送らない。
【０２４４】
そして、マッチング処理部１６３は、サーチ範囲の全ての縮小面または基底面参照ブロックの位置（参照ベクトル）でマッチング処理を終了したか否か判別し（ステップＳ２７）、未だ、サーチ範囲においては、未処理の基底面参照ブロックがあると判別したときには、図２８のステップＳ１２に戻り、前述したステップＳ１２以降の処理を繰り返す。
【０２４５】
また、マッチング処理部１６３は、ステップＳ２７で、サーチ範囲の全ての縮小面または基底面参照ブロックの位置（縮小面または基底面参照ベクトル）でマッチング処理を終了したと判別したときには、その旨を動きベクトル算出部１６４に伝える。
【０２４６】
動きベクトル算出部１６４では、これを受けて、Ｘ方向（水平方向）近傍値抽出部１６４４およびＹ方向（垂直方向）近傍値抽出部１６４５が、ＳＡＤ値保持部１６４３に保持された、前記検出した最小のＳＡＤ値ＳminまたはＳＳminとその近傍ＳＡＤ値Ｓx1、Ｓx2、Ｓy1、Ｓy2またはＳＳx1、ＳＳx2、ＳＳy1、ＳＳy2およびそれらの位置情報を読み出し、二次曲線近似補間処理部１６４６に送る。これを受けた二次曲線近似補間処理部１６４６は、二次曲線による補間を、Ｘ方向およびＹ方向の２回行い、前述したようにして、高精度の縮小面または基底面動きベクトルを算出する（ステップＳ２８）。以上で、補間処理が行われるモードにおける第２の例のブロックマッチング処理を終了する。
【０２４７】
以上のように、この第２の例においては、算出された全てのＳＡＤ値を保持するＳＡＤテーブルを保持することなく、ＳＡＤテーブルの１ライン分を設けると共に、ＳＡＤ値書き込み部１６４１に１画素分のＳＡＤ値を保持しておくだけで、補間処理による高精度の動きベクトル検出を行うことができる。
【０２４８】
この第２の例の方法は、前述の第１の例のＳＡＤテーブルを保持する手法と比べて、ブロックマッチング回数は同じであるため、処理時間は変わらず、ハードウエア規模を削減できるという効果を奏する。
【０２４９】
なお、上述した第２の例の説明においては、ＳＡＤ値比較部１６４２は、マッチング処理部１６３からの算出されたＳＡＤ値Ｓinと、ＳＡＤ値保持部１６３に保持されている最小ＳＡＤ値ＳminまたはＳＳminとを比較するようにしたが、ＳＡＤ値比較部１６４２が最小ＳＡＤ値の保持部を備え、その保持した最小ＳＡＤ値と、算出されたＳＡＤ値Ｓinとを比較し、算出されたＳinの方が小さいときには、保持した最小ＳＡＤ値を更新すると共に、その位置情報と共に、ＳＡＤ値書き込み部１６４１を通じてＳＡＤ値保持部１６４３に送って、ＳＡＤ値保持部１６４３の最小ＳＡＤ値保持部に保持させるようにしても良い。
【０２５０】
＜動きベクトル算出部１６４のハードウエア構成例の第３の例＞
この動きベクトル算出部１６４のハードウエア構成例の第３の例においては、前記第２の例の場合のラインメモリ１６４７も省略して、より、ハードウエア規模の削減を図るようにした例である。
【０２５１】
この第３の例においては、サーチ範囲における参照ブロックのＳＡＤ値の最小値（ＳminまたはＳＳmin）およびその位置情報（参照ベクトル）の検出および保持は、上述した第２の例と全く同様に行う。しかし、近傍ＳＡＤ値およびその位置情報の取得および保持に関しては、第２の例のように、ＳＡＤ値ＳminまたはＳＳminの検出時と同時には行わず、検出された最小ＳＡＤ値ＳminまたはＳＳminの位置情報を、マッチング処理部１６３に返して、マッチング処理部１６３で、最小ＳＡＤ値ＳminまたはＳＳminの近傍４点位置の参照ブロックについてのＳＡＤ値を再度、算出して、動きベクトル算出部１６４に供給するようにする。
【０２５２】
動きベクトル算出部１６４では、当該マッチング処理部１６３からの再度のブロックマッチング処理により算出された前記近傍４点位置のＳＡＤ値およびその位置情報（参照ベクトル）を受け取って、ＳＡＤ値保持部１６４３のそれぞれの保持部に格納するようにする。
【０２５３】
この動きベクトル算出部１６４の第３の例のハードウエア構成例を、図３０に示す。すなわち、この動きベクトル算出部１６４の第３の例においては、第１の例のＳＡＤテーブルＴＢＬや第２の例のラインメモリ１６４７は備えずに、図３０に示すように、ＳＡＤ値書き込み部１６４１と、ＳＡＤ値比較部１６４２と、ＳＡＤ値保持部１６４３と、Ｘ方向（水平方向）近傍値抽出部１６４４およびＹ方向（垂直方向）近傍値抽出部１６４５と、二次曲線近似補間処理部１６４６とを備えてなる。
【０２５４】
この第３の例においても、Ｘ方向（水平方向）近傍値抽出部１６４４およびＹ方向（垂直方向）近傍値抽出部１６４５と、二次曲線近似補間処理部１６４６とは、前述した第１の例および第２の例と同様の動作を行うが、ＳＡＤ値書き込み部１６４１、ＳＡＤ値比較部１６４２、ＳＡＤ値保持部１６４３の部分は、前述の第１の例および第２の例とは、異なる動作を行う。
【０２５５】
ＳＡＤ値保持部１６４３は、第２の例と同様に、最小ＳＡＤ値ＳminまたはＳＳminおよび近傍ＳＡＤ値Ｓx1、Ｓx2、Ｓy1、Ｓy2またはＳＳx1、ＳＳx2、ＳＳy1、ＳＳy2の保持部（メモリ）を備える。そして、この第３の例においても、ＳＡＤ値保持部１６４３は、その最小ＳＡＤ値保持部からの最小ＳＡＤ値ＳminまたはＳＳminをＳＡＤ値比較部１６４２に供給する。しかし、この第３の例においては、ＳＡＤ値保持部１６４３は、第２の例とは異なり、近傍ＳＡＤ値の位置情報を、ＳＡＤ値書き込み部１６４１に供給することしない。
【０２５６】
ＳＡＤ値比較部１６４２は、この第３の例においても、マッチング処理部１６３からの当該時点で算出されたＳＡＤ値Ｓinと、ＳＡＤ値保持部１６４３の最小ＳＡＤ値保持部からの最小ＳＡＤ値ＳminまたはＳＳminとの両者を比較し、マッチング処理部１６３からの当該時点で算出されたＳＡＤ値Ｓinの方が小さいときには、当該時点で、そのＳＡＤ値を最小ＳＡＤ値であるとして検出し、また、ＳＡＤ値Ｓinの方が小さいときには、当該時点では、ＳＡＤ値保持部１６４３の最小ＳＡＤ値保持部からの最小ＳＡＤ値ＳminまたはＳＳminが未だ最小値であると検出する。そして、ＳＡＤ値比較部１６４２は、その検出結果の情報ＤＥＴをＳＡＤ値書き込み部１６４１およびＳＡＤ値保持部１６４３に供給する。
【０２５７】
ＳＡＤ値書き込み部１６４１は、前述例と同様に、マッチング処理部１６３からの算出されたＳＡＤ値Ｓinおよびその位置情報（参照ベクトル）を一時保持するための１画素分のバッファメモリを備える。そして、この第３の例においては、ＳＡＤ値書き込み部１６４１は、ＳＡＤ値比較部１６４２からの比較検出結果の情報ＤＥＴが、ＳＡＤ値Ｓinが最小値であることを示しているときには、マッチング処理部１６３からの参照ブロックの位置情報（参照ベクトル）と、当該参照ブロックのＳＡＤ値Ｓinとを、ＳＡＤ値保持部１６４３に送る。
【０２５８】
ＳＡＤ値保持部１６４３は、ＳＡＤ値比較部１６４２からの比較検出結果の情報ＤＥＴにより、ＳＡＤ値Ｓinが最小値であることを知り、ＳＡＤ値書き込み部１６４１から送られてくる参照ブロックの位置情報（参照ベクトル）と、当該参照ブロックのＳＡＤ値Ｓinとを、最小ＳＡＤ値保持部に格納する。
【０２５９】
以上の処理を、サーチ範囲内の全ての参照ブロックについてマッチング処理部１６３で算出されたＳＡＤ値について、行う。そして、この第３の例においては、サーチ範囲内の全ての参照ブロックについてのＳＡＤ値の算出が終了したときに、ＳＡＤ値保持部１６４３は、保持している最小ＳＡＤ値ＳminまたはＳＳminの位置情報（参照ベクトル）Ｖminを、マッチング処理部１６３に供給して、当該位置情報の近傍の４点の参照ブロックについてのＳＡＤ値の再算出を依頼する。
【０２６０】
マッチング処理部１６３では、ＳＡＤ値保持部１６４３から最小ＳＡＤ値ＳminまたはＳＳminの位置情報（参照ベクトル）Ｖminを含む近傍参照ブロックについてのＳＡＤ値の再算出の依頼を受け取ると、前記最小ＳＡＤ値ＳminまたはＳＳminの位置情報（参照ベクトル）Ｖminから、その近傍４点の近傍参照ブロックの位置を検出し、検出した位置の参照ブロックについて、ＳＡＤ値の算出を行う。そして、算出したＳＡＤ値を、その位置情報（参照ベクトル）と共に、ＳＡＤ値書き込み部１６４１に順次に供給する。
【０２６１】
この場合、マッチング処理部１６３は、サーチ方向の順にブロックマッチング処理を行うので、近傍ＳＡＤ値は、ＳＡＤ値Ｓy1、Ｓx1、Ｓx2、Ｓy2またはＳＳx1、ＳＳx2、ＳＳy1、ＳＳy2の順に算出される。ＳＡＤ値書き込み部１６４１は、受け取った再算出されたＳＡＤ値およびその位置情報（参照ベクトル）を、順次にＳＡＤ値保持部１６４３に供給する。
【０２６２】
ＳＡＤ値保持部１６４３は、この再算出されたＳＡＤ値およびその位置情報（参照ベクトル）を、順次に、対応する格納部に書き込んで保持する。
【０２６３】
こうして、近傍参照ブロックについてのＳＡＤ値の再算出が終了すると、前述の第２の例と同様にして、Ｘ方向（水平方向）近傍値抽出部１６４４およびＹ方向（垂直方向）近傍値抽出部１６４５が、ＳＡＤ値保持部１６４３に保持された、前記検出した最小のＳＡＤ値ＳminまたはＳＳminとその近傍ＳＡＤ値Ｓx1、Ｓx2、Ｓy1、Ｓy2またはＳＳx1、ＳＳx2、ＳＳy1、ＳＳy2およびそれらの位置情報を読み出し、二次曲線近似補間処理部１６４６に送る。これを受けた二次曲線近似補間処理部１６４６は、二次曲線による補間を、Ｘ方向およびＹ方向の２回行い、前述したようにして、サブピクセル精度の高精度の動きベクトルを算出する。
【０２６４】
以上のようにして、第３の例においては、ＳＡＤテーブルＴＢＬやラインメモリを用いずに、高精度の縮小面または基底面動きベクトルの検出ができる。
【０２６５】
この第３の例におけるブロックマッチング処理時の流れの例を、図３１およびその続きである図３２のフローチャートを参照しながら説明する。
【０２６６】
はじめに、動きベクトル算出部１６４のＳＡＤ値保持部１６４３の最小ＳＡＤ値ＳminまたはＳＳminの初期値を設定する（ステップＳ３１）。この最小ＳＡＤ値ＳminまたはＳＳminの初期値としては、例えば、画素の差分の最大値が設定される。
【０２６７】
次に、マッチング処理部１６３では、縮小面または基底面での参照ベクトル（Ｖｘ，Ｖｙ）を設定して、ＳＡＤ値を計算する縮小面または基底面参照ブロック位置を設定し（ステップＳ３２）、設定した縮小面または基底面参照ブロックの画素データを、参照ブロックバッファ部１６２から読み込む（ステップＳ３３）と共に、ターゲットブロックバッファ部１６１から縮小面または基底面ターゲットブロックの画素データを読み込んで、縮小面または基底面において、ターゲットブロックおよび参照ブロックの各画素データの差分の絶対値の総和、つまり、ＳＡＤ値を求め、求めたＳＡＤ値を動きベクトル算出部１６４に送出する（ステップＳ３４）。
【０２６８】
動きベクトル算出部１６４では、ＳＡＤ値比較部１６４２が、マッチング処理部１６３で算出されたＳＡＤ値Ｓinと、ＳＡＤ値保持部１６４３に保持されている最小ＳＡＤ値ＳminまたはＳＳminとを比較して、算出されたＳＡＤ値Ｓinが、それまで保持されている最小ＳＡＤ値ＳminまたはＳＳminよりも小さいか否か判別する（ステップＳ３５）。
【０２６９】
このステップＳ３５で、算出されたＳＡＤ値Ｓinが最小ＳＡＤ値ＳminまたはＳＳminより小さいと判別したときには、ステップＳ３６に進み、ＳＡＤ値保持部１６４３に保持される最小ＳＡＤ値ＳminまたはＳＳmin、およびその位置情報の更新がなされる。
【０２７０】
すなわち、ＳＡＤ値比較部１６４２は、算出されたＳＡＤ値Ｓinが最小ＳＡＤ値ＳminまたはＳＳminより小さい旨の比較結果の情報ＤＥＴをＳＡＤ値書き込み部１６４１に送る。すると、ＳＡＤ値書き込み部１６４１は、当該算出されたＳＡＤ値Ｓinおよびその位置情報（基底面参照ベクトル）を、新たな最小ＳＡＤ値ＳminまたはＳＳminの情報としてＳＡＤ値保持部１６４３に送る。ＳＡＤ値保持部１６４３は、保持すべき最小ＳＡＤ値ＳminまたはＳＳmin、およびその位置情報を、受け取った新たなＳＡＤ値Ｓinおよびその位置情報に更新する。
【０２７１】
ステップＳ３６の後には、ステップＳ３７に進む。また、ステップＳ３５で、算出されたＳＡＤ値Ｓinが最小ＳＡＤ値ＳminまたはＳＳminより大きいと判別したときには、ステップＳ３６の保持情報の更新処理は行わずにステップＳ３７に進む。
【０２７２】
ステップＳ３７では、マッチング処理部１６３は、サーチ範囲の全ての縮小面または基底面参照ブロックの位置（縮小面または基底面参照ベクトル）でマッチング処理を終了したか否か判別し、未だ、サーチ範囲においては、未処理の縮小面または基底面参照ブロックがあると判別したときには、ステップＳ３２に戻り、前述したステップＳ３２以降の処理を繰り返す。
【０２７３】
また、マッチング処理部１６３は、ステップＳ３７で、サーチ範囲の全ての縮小面または基底面参照ブロックの位置（参照ベクトル）でマッチング処理を終了したと判別したときには、動きベクトル算出部１６４では、コントロール部１６５からの情報により、補間処理を行うモードか否か判別する（図３２のステップＳ４１）。
【０２７４】
ステップＳ４１で、補間を行わないモードであると判別したときには、動きベクトル算出部１６４では、ＳＡＤ値保持部１６４３に保持される最小ＳＡＤ値ＳminまたはＳＳminの位置情報（縮小面または基底面動きベクトル）を、コントロール部１６５に出力する（ステップＳ４２）。
【０２７５】
以上で、この第３の例において補間処理を行わないモードにおけるブロックマッチング処理を終了する。
【０２７６】
次に、ステップＳ４１で、補間処理を行うモードであると判別したときには、動きベクトル算出部１６４では、ＳＡＤ値保持部１６４３からの最小ＳＡＤ値ＳminまたはＳＳminの位置情報を受け取り、その近傍４点の位置の縮小面または基底面参照ブロックについてのＳＡＤ値の再算出を行い、再算出した近傍ＳＡＤ値をＳＡＤ値書き込み部１６４１を通じてＳＡＤ値保持部１６４３に供給し、保持させるようにする（ステップＳ４３）。
【０２７７】
次に、動きベクトル算出部１６４では、Ｘ方向（水平方向）近傍値抽出部１６４４およびＹ方向（垂直方向）近傍値抽出部１６４５が、ＳＡＤ値保持部１６４３に保持された、前記検出した最小のＳＡＤ値ＳminまたはＳＳminとその近傍ＳＡＤ値Ｓx1、Ｓx2、Ｓy1、Ｓy2またはＳＳx1、ＳＳx2、ＳＳy1、ＳＳy2、およびそれらの位置情報を読み出し、二次曲線近似補間処理部１６４６に送る。これを受けた二次曲線近似補間処理部１６４６は、二次曲線による補間を、Ｘ方向およびＹ方向の２回行い、前述したようにして、高精度の縮小面または基底面動きベクトルを算出し、コントロール部１６５入出力する（ステップＳ４４）。以上で、第３の例において補間処理を行うモードにおけるブロックマッチング処理を終了する。
【０２７８】
この第３の例においては、上述した第２の例に比較して、ＳＡＤ値を再算出する分だけ、処理時間が増加するが、ラインメモリをも必要としないので、回路規模を、第２の例よりも削減することができる。しかも、ＳＡＤ値の再算出は、近傍ＳＡＤ値のみであるので、上述の例では、高々４回であるので、処理時間の増加は少ない。
【０２７９】
なお、上述した第３の例の説明では、最小ＳＡＤ値は、検出しながらＳＡＤ値保持部１６４３に保持するようにしたが、ＳＡＤ値比較部１６４２において、最小ＳＡＤ値を呈する参照ブロックの位置情報（参照ベクトル）を検出して保持するように構成し、１回目のブロックマッチングが終了したら、ＳＡＤ値比較部１６４２から、当該最小ＳＡＤ値の位置情報をマッチング処理部１６３に供給するようにしてもよい。
【０２８０】
その場合には、マッチング処理部１６３でのＳＡＤ値の再算出においては、近傍４点のＳＡＤ値に加えて、最小ＳＡＤ値をも再算出するようにする。この場合には、ＳＡＤ値の再算出回数が５回となり、１回増加するが、１回目のブロックマッチングでは、ＳＡＤ値比較部１６４２のみが動作すればよく、ＳＡＤ値書き込み部１６４１およびＳＡＤ値保持部１６４３は、再算出されたＳＡＤ値を保持するように動作すればよいので、処理動作が簡略化されるというメリットがある。
【０２８１】
また、動き検出および動き補償部１６での処理は、ターゲットフレームにおいて設定された複数個のターゲットブロックについて、並列および並行して、実行することができる。その場合には、以上説明した動き検出および動き補償部１６のハードウエアの系を、当該並列・並行処理するターゲットブロック数に応じた数だけ、設ける必要がある。
【０２８２】
第１の例のように、ＳＡＤテーブルを生成する方法の場合には、当該ターゲットブロック数分だけのＳＡＤテーブルを生成する必要があり、非常に大きなメモリが必要となってしまう。しかし、第２の例では、１ターゲットブロック当たりについて、ＳＡＤテーブルの１ライン分でよく、メモリ容量を非常に少なくすることができる。さらに、第３の例の場合には、ラインメモリをも必要としないので、メモリ容量の大幅な削減をすることができる。
【０２８３】
［動き検出・動き補償部１６での複数種の動作モードのための機能ブロック図］
上述したように、この実施形態では、上述したようなハードウエア構成を備える動き検出・動き補償部１６において、上述したようなブロックマッチング処理の複数種の動作モードの全てを実行することができる。この実施形態における動き検出・動き補償部１６での当該複数種の動作モードを現出する機能ブロック構成図を、図３３に示す。
【０２８４】
図３３に示すように、動き検出・動き補償部１６は、機能的には、縮小面マッチング処理手段２０１と、縮小面近傍ＳＡＤ値取得手段２０２と、縮小面ＳＡＤ値補間手段２０３と、基底面マッチング処理手段２０４と、基底面近傍ＳＡＤ値取得手段２０５と、基底面ＳＡＤ値補間手段２０６とを備える。
【０２８５】
縮小面マッチング処理手段２０１は、縮小面ターゲットブロック１３３と、縮小面マッチング処理範囲１４３内の全ての縮小面参照ブロック１３９との間で縮小面ＳＡＤ値を計算し、縮小面最小ＳＡＤ値Ｓminを求め、求めた縮小面最小ＳＡＤ値Ｓminから縮小面動きベクトルを検出し、コントロール部１６５に出力する。
【０２８６】
コントロール部１６５により、縮小面マッチング処理モードにおいては、当該縮小面処理手段２０１のみが動作するように制御されることになる。
【０２８７】
縮小面近傍ＳＡＤ値取得手段２０２は、前述したように、縮小面マッチング処理手段２１で求められた縮小面最小ＳＡＤ値Ｓminの近傍の４点の縮小面近傍ＳＡＤ値Ｓx1、Ｓx2、Ｓy1、Ｓy2を取得する。
【０２８８】
縮小面ＳＡＤ値補間手段２０３は、縮小面最小ＳＡＤ値Ｓminと、縮小面近傍ＳＡＤ値Ｓx1、Ｓx2、Ｓy1、Ｓy2とを用いて、前述したピクセル精度の二次曲線近似補間処理を行い、高精度縮小面最小ＳＡＤ値を求める。そして、縮小面ＳＡＤ値補間手段２０３は、求めた高精度縮小面最小ＳＡＤ値から高精度縮小面動きベクトルを検出し、コントロール部１６５に出力する。
【０２８９】
コントロール部１６５により、縮小面マッチング＋補間処理モードにおいては、縮小面マッチング処理手段２０１と、縮小面近傍ＳＡＤ値取得手段２０２と、縮小面ＳＡＤ値補間手段２０３とが動作するように制御されることになる。
【０２９０】
基底面マッチング処理手段２０４は、基底面ターゲットブロック１３１と、基底面マッチング処理範囲１４４内の全ての基底面参照ブロック１４２との間で基底面ＳＡＤ値を計算し、基底面最小ＳＡＤ値Ｓminを求め、求めた基底面最小ＳＡＤ値Ｓminから基底面動きベクトルを検出し、コントロール部１６５に出力する。
【０２９１】
コントロール部１６５により、階層化マッチング処理モード１においては、縮小面マッチング処理手段２０１と、基底面マッチング処理手段２０４とが動作するように制御される。このとき、基底面マッチング処理手段２０４は、縮小面マッチング処理手段２０１で求められた縮小面動きベクトルに基づいて、基底面サーチ範囲および基底面マッチング処理範囲を定める。
【０２９２】
また、コントロール部１６５により、階層化マッチング処理モード２においては、縮小面マッチング処理手段２０１と、縮小面ＳＡＤ値補間手段２０２と、縮小面ＳＡＤ値補間手段２０３と、基底面マッチング処理手段２０４とが動作するように制御される。このとき、基底面マッチング処理手段２０４は、縮小面ＳＡＤ値補間手段２０３で求められた高精度縮小面動きベクトルに基づいて、基底面サーチ範囲および基底面マッチング処理範囲を定める。
【０２９３】
図３３に示すように、階層化マッチング処理モード１と、階層化マッチング処理モード２とは、コントロール部１６５により、機能手段としての切り替え手段２０７が切り替えられることにより、選択切り替え制御される。
【０２９４】
基底面近傍ＳＡＤ値取得手段２０５は、前述したように、基底面マッチング処理手段２１で求められた基底面最小ＳＡＤ値ＳＳminの近傍の４点の基底面近傍ＳＡＤ値ＳＳx1、ＳＳx2、ＳＳy1、ＳＳ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の初期値を設定する（図４６のステップＳ１０１）。この基底面最小ＳＡＤ値ＳＳminの初期値としては、例えば、画素の差分の最大値が設定される。
【０３６８】
次に、マッチング処理部１６３では、ステップＳ９９で設定した基底面縮小サーチ範囲において、基底面参照ベクトル（Ｖｘ，Ｖｙ）を設定して、ＳＡＤ値を計算する基底面参照ブロック位置を設定する（ステップＳ１０２）。そして、設定した基底面参照ブロックの画素データを、参照ブロックバッファ部１６２から読み込み（ステップＳ１０３）、基底面ターゲットブロックおよび基底面参照ブロックの各画素データの差分の絶対値の総和、つまり、基底面ＳＡＤ値を求め、求めた基底面ＳＡＤ値を動きベクトル算出部１６４に送出する（ステップＳ１０４）。
【０３６９】
動きベクトル算出部１６４では、ＳＡＤ値比較部１６４２が、マッチング処理部１６３で算出された基底面ＳＡＤ値Ｓinと、ＳＡＤ値保持部１６４３に保持されている基底面最小ＳＡＤ値ＳＳminとを比較して、算出された基底面ＳＡＤ値Ｓinが、それまで保持されている基底面最小ＳＡＤＳ値Ｓminよりも小さいか否か判別する（ステップＳ１０５）。
【０３７０】
このステップＳ１０５で、算出された基底面ＳＡＤ値Ｓinが基底面最小ＳＡＤ値ＳＳminより小さいと判別したときには、ステップＳ１０６に進み、ＳＡＤ値保持部１６４３に保持される基底面最小ＳＡＤ値ＳＳminおよびその位置情報の更新がなされる。
【０３７１】
すなわち、ＳＡＤ値比較部１６４２は、算出された基底面ＳＡＤ値Ｓinが基底面最小ＳＡＤ値ＳＳminより小さい旨の比較結果の情報ＤＥＴをＳＡＤ値書き込み部１６４１に送る。すると、ＳＡＤ値書き込み部１６４１は、当該算出された基底面ＳＡＤ値Ｓinおよびその位置情報（参照ベクトル）を、新たな基底面最小ＳＡＤ値ＳＳminの情報としてＳＡＤ値保持部１６４３に送る。ＳＡＤ値保持部１６４３は、保持すべき基底面最小ＳＡＤ値ＳＳminおよびその位置情報を、受け取った新たな基底面ＳＡＤ値Ｓinおよびその位置情報に更新する。
【０３７２】
ステップＳ１０６の後には、ステップＳ１０７に進む。また、ステップＳ１０５で、算出された基底面ＳＡＤ値Ｓinが基底面最小ＳＡＤ値ＳＳminより大きいと判別したときには、ステップＳ１０６の保持情報の更新処理は行わずにステップＳ１０７に進む。
【０３７３】
ステップＳ１０７では、マッチング処理部１６３は、基底面サーチ範囲の全ての基底面参照ブロックの位置（基底面参照ベクトル）でマッチング処理を終了したか否か判別し、未だ、基底面サーチ範囲においては、未処理の基底面参照ブロックがあると判別したときには、ステップＳ１０２に戻り、前述したステップＳ１０２以降の処理を繰り返す。
【０３７４】
また、マッチング処理部１６３は、ステップＳ１０７で、基底面サーチ範囲の全ての基底面参照ブロックの位置（基底面参照ベクトル）でマッチング処理を終了したと判別したときには、ＳＡＤ値保持部１６４３からの基底面最小ＳＡＤ値ＳＳminの位置情報（基底面動きベクトル）を受け取り、その近傍４点の位置の基底面参照ブロックについての基底面ＳＡＤ値の再算出を行い、再算出した近傍基底面ＳＡＤ値ＳＳx1、ＳＳx2、ＳＳy1、ＳＳy2をＳＡＤ値書き込み部１６４１を通じてＳＡＤ値保持部１６４３に供給し、保持させるようにする（ステップＳ１０８）。
【０３７５】
次に、動きベクトル算出部１６４では、Ｘ方向（水平方向）近傍値抽出部１６４４およびＹ方向（垂直方向）近傍値抽出部１６４５が、ＳＡＤ値保持部１６４３に保持されている、前記検出した最小の基底面ＳＡＤ値Ｓminとその近傍基底面ＳＡＤ値ＳＳx1、ＳＳx2、ＳＳy1、ＳＳy2およびそれらの位置情報を読み出し、二次曲線近似補間処理部１６４６に送る。これを受けた二次曲線近似補間処理部１６４６は、二次曲線による補間を、Ｘ方向およびＹ方向の２回行い、前述したようにして、サブピクセル精度の高精度の基底面動きベクトルを算出する（ステップＳ１０９）。以上で、１枚の参照フレームについてのこの階層化マッチング＋補間処理モード１の例のブロックマッチング処理を終了する。
【０３７６】
なお、階層化マッチング処理モード１の場合には、ステップＳ１０７で、基底面サーチ範囲の全ての基底面参照ブロックの位置（基底面参照ベクトル）でマッチング処理を終了したと判別したときには、ステップＳ１０８およびステップＳ１０９は行わず、その代わりに、ＳＡＤ値保持部１６４３からの基底面最小ＳＡＤ値ＳＳminの位置情報から基底面動きベクトルを検出し、それをコントロール部１６５に出力するようにする。
【０３７７】
次に、階層化マッチング＋補間処理モード２の動作例のフローチャートを、図４７および図４８に示す。この例も、動き検出・動き補償部１６のハードウエア構成例として、第３の例を用いた場合である。
【０３７８】
図４７のステップＳ１１１〜ステップＳ１１７までの処理動作は、前述した図４５のステップＳ９１〜ステップＳ９７までの処理動作と全く同じである。そして、この図４７の例においては、ステップＳ１１８で、縮小面サーチ範囲内の全ての縮小面参照ベクトルでマッチングを行っていないと判別したときには、ステップＳ１１３に戻って、このステップＳ１１３以降の処理を繰り返す。
【０３７９】
また、ステップＳ１１８で、縮小面サーチ範囲内の全ての縮小面参照ベクトルでマッチングを行ったと判別したときには、ＳＡＤ値保持部１６４３からの縮小面最小ＳＡＤ値Ｓminの位置情報（縮小面動きベクトル）を受け取り、その近傍４点の位置の縮小面参照ブロックについての縮小面ＳＡＤ値の再算出を行い、再算出した近傍縮小面ＳＡＤ値Ｓx1、Ｓx2、Ｓy1、Ｓy2をＳＡＤ値書き込み部１６４１を通じてＳＡＤ値保持部１６４３に供給し、保持させるようにする（ステップＳ１１９）。
【０３８０】
次に、動きベクトル算出部１６４では、Ｘ方向（水平方向）近傍値抽出部１６４４およびＹ方向（垂直方向）近傍値抽出部１６４５が、ＳＡＤ値保持部１６４３に保持されている、前記検出した最小の縮小面ＳＡＤ値Ｓminとその近傍縮小面ＳＡＤ値Ｓx1、Ｓx2、Ｓy1、Ｓy2およびそれらの位置情報を読み出し、二次曲線近似補間処理部１６４６に送る。これを受けた二次曲線近似補間処理部１６４６は、二次曲線による補間を、Ｘ方向およびＹ方向の２回行い、前述したようにして、ピクセル精度の高精度の縮小面動きベクトルを算出する（ステップＳ１２０）。
【０３８１】
次に、ステップＳ１２０で算出した高精度縮小面動きベクトル、縮小倍率の逆数倍、すなわち、ｎ倍したベクトルが、基底面ターゲットフレームにおいて指し示す位置座標を中心とした位置に基底面ターゲットブロックを設定するとともに、前記ｎ倍したベクトルが指し示す位置座標を中心とした比較的狭い範囲として、基底面サーチ範囲および基底面マッチング処理範囲を、基底面ターゲットフレームに設定し（図４８のステップＳ１２１）、ターゲットブロックバッファ部１６１から、基底面ターゲットブロックの画素データを読み込む（ステップＳ１２２）。
【０３８２】
そして、次に、動きベクトル算出部１６４のＳＡＤ値保持部１６４３の最小ＳＡＤ値の初期値として、基底面最小ＳＡＤ値ＳＳminの初期値を設定する（ステップＳ１２３）。このステップＳ１２３からステップＳ１３１までの処理は、前述した図４６のステップＳ１０１からステップＳ１０９までの処理と全く同様とされる。
【０３８３】
なお、階層化マッチング処理モード２の場合には、ステップＳ１２９で、基底面サーチ範囲の全ての基底面参照ブロックの位置（基底面参照ベクトル）でマッチング処理を終了したと判別したときには、ステップＳ１３０およびステップＳ１３１は行わず、その代わりに、ＳＡＤ値保持部１６４３からの基底面最小ＳＡＤ値ＳＳminの位置情報から基底面動きベクトルを検出し、それをコントロール部１６５に出力するようにする。
【０３８４】
次に、この実施の形態における階層化ブロックマッチング手法を用いた画像処理方法の効果を、具体例を挙げて説明する。
【０３８５】
図４９に、上述の実施の形態の説明で用いた基底面、縮小面での、参照ブロック、サーチ範囲、マッチング処理範囲の具体例を示す。図４９の例は、水平方向および垂直方向の縮小倍率１／ｎは、ｎ＝４に設定した場合である。
【０３８６】
比較例として、図４９（Ａ）および（Ｂ）に示すように、例えば、縮小画像を用いない参照ブロック１０８は、横（水平）×縦（垂直）＝３２×３２ピクセルとし、また、サーチ範囲１０６は、横（水平）×縦（垂直）＝１４４×６４ピクセル、マッチング処理範囲１１０は、横（水平）×縦（垂直）＝１７６×９６ピクセルとする。
【０３８７】
すると、上述した実施の形態において、水平方向および垂直方向に、１／ｎ＝１／４に縮小された縮小面では、図４９（Ｃ）および（Ｄ）に示すように、縮小面参照ブロック１３９は、横（水平）×縦（垂直）＝８×８ピクセル、縮小面サーチ範囲１３７は、横（水平）×縦（垂直）＝３６×１６ピクセル、縮小面マッチング処理範囲１４３は、横（水平）×縦（垂直）＝４４×２４ピクセルとなる。
【０３８８】
水平方向および垂直方向に、１／４に縮小された縮小面で、ブロックマッチングを行った場合、縮小面動きベクトルは、４ピクセル精度の動きベクトルであり、単純に４倍しただけでは、１ピクセル精度の動きベクトルに対して誤差が生じる。すなわち、図９に示したように、基底面での画素を丸印で示すようなものとした場合、基底面でのマッチング処理点１４８は、当該基底面の全ての画素が対象となるが、１／４に縮小された縮小面で、ブロックマッチングを行う場合のマッチング処理点は、図９において、黒丸で示す４ピクセル単位のマッチング処理点１４７となっているからである。
【０３８９】
しかし、少なくとも、１ピクセル精度の動きベクトルは、縮小面動きベクトルが指し示す縮小面でのマッチング処理点の周囲、４ピクセル範囲以内に存在するであろうことは予測できる。
【０３９０】
そこで、この実施の形態では、算出された縮小面動きベクトルを元に基底面サーチ範囲を定める基底面マッチングでは、縮小面動きベクトルを縮小倍率の逆数である４倍した参照ベクトルが指し示すピクセル位置を中心に、基底面ターゲットブロックを設定するとともに、４ピクセル分のサーチ範囲（基底面サーチ範囲１４０）を決定して、基底面ブロックマッチングを行い、再度動きベクトルを算出するようにしている。
【０３９１】
したがって、図４９（Ｅ）および（Ｆ）に示すように、基底面参照ブロック１４２は、横（水平）×縦（垂直）＝３２×３２ピクセル、基底面サーチ範囲１４０は、横（水平）×縦（垂直）＝４×４ピクセル、基底面マッチング処理範囲１４４は、横（水平）×縦（垂直）＝４０×４０ピクセルとなる。
【０３９２】
図５０に、この実施の形態のように、縮小面マッチングと、基底面マッチングの２階層マッチングを行う場合において、ＳＡＤテーブルを使用すると仮定した場合における、基底面、縮小面での、ＳＡＤテーブルのサイズを示す。なお、図５０の例は、図４９に示した具体例に対応したものである。
【０３９３】
縮小する前の１４４×６４のサーチ範囲（図４９（Ｂ）参照）の場合におけるＳＡＤテーブルＴＢＬは、図５０（Ａ）に示すように、１４５×６５点である。
【０３９４】
これに対して、３６×１６の縮小面サーチ範囲（図４９（Ｄ）参照）の場合における縮小面ＳＡＤテーブルは、図５０（Ｂ）に示すように、３７点×１７点となる。
【０３９５】
また、４×４の基底面サーチ範囲（図４９（Ｆ）参照）の場合における基底面ＳＡＤテーブルは５点×５点となる。
【０３９６】
したがって、階層マッチングを施さない場合のマッチング処理回数は１４５×６５＝９４２５回であるのに対し、階層マッチングを適用した場合のマッチング回数は３７×１７＋５×５＝６５４回となり、処理時間を大幅に短縮できることが分かる。
【０３９７】
そして、前述した動きベクトル検出方法の第２の例の場合におけるラインメモリは、縮小面ＳＡＤテーブルの１ライン分でよいので、３７個のＳＡＤ値およびその位置情報を格納できるものでよく、ＳＡＤテーブルＴＢＬの場合の、９４２５個のＳＡＤ値およびその位置情報を格納するメモリに対して非常に小さいメモリでよくなる。
【０３９８】
また、前述した動きベクトル算出部１６４の構成例の第３の例の場合には、３７個のＳＡＤ値およびその位置情報を格納する縮小面ＳＡＤテーブルさえも不要となるので、さらに回路規模を小さくすることができる。
【０３９９】
以上のようにして、上記の実施の形態によれば、階層化したマッチング処理を行った後、基底面において補間処理をすることにより、広いサーチ範囲で、サブピクセル精度の動きベクトル検出を行うことが可能になる。
【０４００】
［他の実施形態または変形例］
なお、上述の実施形態では、ブロックマッチングの動作モードとしては、上述の例のような６種類の動作モードを用いる場合を説明したが、このほかに、縮小面でのブロックマッチング処理を伴わない、基底面マッチング処理モードおよび基底面マッチング＋補間処理モードを設けるようにしても良い。
【０４０１】
また、上述の実施の形態において、動き検出・動き補償部１６の動きベクトル算出部１６４の第２の例においては、サーチ範囲におけるサーチ方向を水平ライン方向に取り、例えばサーチ範囲の左上から順に参照ブロックを移動させるようにしてサーチを行うようにすると共に、ＳＡＤテーブルの１ライン分のメモリを設けるようにしたが、サーチ範囲におけるサーチ方向を垂直方向に取り、例えばサーチ範囲の左上端から垂直方向にサーチを開始し、垂直方向の１列分のサーチが終わった後、水平方向に、参照ブロックの位置を１つ分、例えば１画素分右の垂直方向の列に移動し、その列の上端から垂直方向にサーチする、という手順を繰り返すサーチ方法を採用するようにしても良い。このようにサーチ範囲の左上端から順に、垂直方向に参照ブロックを移動させるようにしてサーチを行うようにする場合には、ＳＡＤテーブルの垂直方向の一列分のメモリを設けるようにすれば良い。
【０４０２】
ここで、水平方向にサーチ方向を取るか、垂直方向にサーチ方向を取るかは、マッチング処理部、動きベクトル算出部の回路規模を考慮して、より回路規模が小さくなる方を採用するのが好ましい。
【０４０３】
なお、前述もしたように、参照ブロックの移動は、１画素毎、また、１ライン毎ではなく、複数画素毎、また、複数ライン毎でもよい。したがって、前者の場合の水平方向の１ライン分メモリは、水平方向における参照ブロックの移動位置分だけでよく、また、後者の場合の垂直方向の一列分のメモリは、垂直方向における参照ブロックの移動位置分だけでよい。つまり、参照ブロックの移動を１画素毎、また、１ライン毎に行う場合には、１ライン分メモリは、１ラインの画素数分の容量のメモリが必要であり、また、垂直方向の一列分メモリは、ライン数分の容量のメモリが必要である。しかし、複数画素毎、また、複数ライン毎に、参照ブロックを移動させる場合には、１画素毎、また、１ライン毎に参照ブロックを移動させる場合よりも、１ライン分メモリおよび１列分メモリの容量は少なくなる。
【０４０４】
また、補間処理の方法は、上述した二次曲線近似補間処理に限られるものではなく、前述もしたように、３次曲線や、より高次の曲線を用いた補間処理を行っても良い。
【０４０５】
また、上述の実施の形態は、この発明による画像処理装置を撮像装置に適用した場合であるが、この発明は、撮像装置に限られるわけではなく、画像フレーム間の動きを検出する場合の全てに適用可能である。
【０４０６】
また、上述の実施の形態は、画像の重ね合わせによるノイズ低減処理のために、ブロック単位に動きベクトルを検出する場合に、この発明を適用した場合であるが、これに限られるものではなく、例えば撮像時の手ぶれによる動きベクトルを検出するためにも用いることができることは言うまでもない。手ぶれによる動きベクトルは、例えば、複数のブロック動きベクトルの平均値として求めることができる。
【図面の簡単な説明】
【０４０７】
【図１】この発明による画像処理装置の一実施の形態である撮像装置の構成例を示すブロック図である。
【図２】実施の形態の図１の撮像装置における撮像画像のノイズ低減処理を説明するための図である。
【図３】実施の形態の図１の撮像装置におけるブロックマッチング処理の説明のために用いる図である。
【図４】実施の形態の図１の撮像装置における撮像画像のノイズ低減処理を説明するための図である。
【図５】実施の形態の図１の撮像装置における撮像画像のノイズ低減処理を説明するための図である。
【図６】この発明の実施の形態の画像処理方法を説明するために用いる図である。
【図７】この発明の実施の形態の画像処理方法を説明するために用いる図である。
【図８】この発明の実施の形態の画像処理方法を説明するために用いる図である。
【図９】この発明の実施の形態の画像処理方法を説明するために用いる図である。
【図１０】この発明の実施の形態の画像処理方法を説明するために用いる図である
【図１１】この発明の実施の形態の画像処理方法を説明するために用いる図である
【図１２】この発明の実施の形態の画像処理方法を説明するために用いる図である
【図１３】この発明の実施の形態の画像処理方法を説明するために用いる図である
【図１４】この発明の実施の形態の画像処理方法を説明するために用いる図である
【図１５】この発明の実施の形態の画像処理方法を説明するために用いる図である
【図１６】この発明の実施の形態の画像処理方法を説明するために用いる図である
【図１７】実施の形態の図１の撮像装置における動き検出・動き補償部における動作を説明するために用いる図である。
【図１８】実施の形態の図１の撮像装置における動き検出・動き補償部における動作を説明するために用いる図である。
【図１９】実施の形態の図１の撮像装置における動き検出・動き補償部の構成例を示すブロック図である。
【図２０】図１９の動き検出・動き補償部の一部の詳細構成例のブロック図である。
【０４０８】
実施形態における画像重ね合わせ処理を説明するための図である。
【図２１】図１９の動き検出・動き補償部の一部の詳細構成例のブロック図である。
【図２２】実施の形態の図１の撮像装置における画像重ね合わせ部の構成例を示すブロック図である。
【図２３】実施の形態の撮像装置における動き検出・動き補償部の動きベクトル算出部の第１の例を説明するために用いる図である。
【図２４】図２３の動きベクトル算出部の処理動作例を説明するためのフローチャートを示す図である。
【図２５】実施の形態の撮像装置における動き検出・動き補償部の動きベクトル算出部の第２の例を説明するために用いる図である。
【図２６】実施の形態の撮像装置における動き検出・動き補償部の動きベクトル算出部の第２の例を説明するために用いる図である。
【図２７】実施の形態の撮像装置における動き検出・動き補償部の動きベクトル算出部の第１の例の構成を示すブロック図である。
【図２８】図２７の動きベクトル算出部の処理動作例を説明するためのフローチャートの一部を示す図である。
【図２９】図２７の動きベクトル算出部の処理動作例を説明するためのフローチャートの一部を示す図である。
【図３０】実施の形態の撮像装置における動き検出・動き補償部の動きベクトル算出部の第３の例の構成を示すブロック図である。
【図３１】図３０の動きベクトル算出部の処理動作例を説明するためのフローチャートの一部を示す図である。
【図３２】図３０の動きベクトル算出部の処理動作例を説明するためのフローチャートの一部を示す図である。
【図３３】この発明の実施の形態の画像処理装置における要部の機能ブロック構成を示す図である。
【図３４】この発明の実施の形態の画像処理方法における複数種類のブロックマッチング動作モードの選択例を説明するために用いる図である。
【図３５】この発明の実施の形態の画像処理方法における複数種類のブロックマッチング動作モードの選択例を説明するために用いる図である。
【図３６】この発明による画像処理方法の実施の形態における静止画ＮＲ処理の例を説明するためのフローチャートの一部を示す図である。
【図３７】この発明による画像処理方法の実施の形態における静止画ＮＲ処理の例を説明するためのフローチャートの一部を示す図である。
【図３８】この発明による画像処理方法の実施の形態における動画ＮＲ処理の例を説明するためのフローチャートを示す図である。
【図３９】この発明による画像処理方法の実施の形態における静止画ＮＲ処理時の画像データの流れを示す図である。
【図４０】この発明による画像処理方法の実施の形態における静止画ＮＲ処理時の画像データの流れを示す図である。
【図４１】この発明による画像処理方法の実施の形態における静止画ＮＲ処理時の画像データの流れを示す図である。
【図４２】この発明による画像処理方法の実施の形態における静止画ＮＲ処理時の画像データの流れを示す図である。
【図４３】この発明による画像処理方法の実施の形態における動画ＮＲ処理時の画像データの流れを示す図である。
【図４４】この発明による画像処理方法の実施の形態における動画ＮＲ処理時の画像データの流れを示す図である。
【図４５】この発明による画像処理方法の実施の形態で使用する階層化ブロックマッチング処理モードの一例を説明するためのフローチャートの一部を示す図である。
【図４６】この発明による画像処理方法の実施の形態で使用する階層化ブロックマッチング処理モードの一例を説明するためのフローチャートの一部を示す図である。
【図４７】この発明による画像処理方法の実施の形態で使用する階層化ブロックマッチング処理モードの一例を説明するためのフローチャートの一部を示す図である。
【図４８】この発明による画像処理方法の実施の形態で使用する階層化ブロックマッチング処理モードの一例を説明するためのフローチャートの一部を示す図である。
【図４９】この発明による画像処理方法の実施の形態で使用する階層化ブロックマッチング処理の効果を説明するための図である。
【図５０】この発明による画像処理方法の実施の形態で使用する階層化ブロックマッチング処理の効果を説明するための図である。
【図５１】ブロックマッチング処理を説明するために用いる図である。
【図５２】ブロックマッチング処理を説明するために用いる図である。
【図５３】ブロックマッチング処理を説明するために用いる図である。
【図５４】ブロックマッチング処理を説明するために用いる図である。
【図５５】ブロックマッチング処理を説明するために用いる図である。
【図５６】ブロックマッチング処理を説明するために用いる図である。
【符号の説明】
【０４０９】
４…画像メモリ部、１６…動き検出・動き補償部、１７…画像重ね合わせ部、１８…静止画コーデック部、１００…ターゲット画像（ターゲットフレーム）、１０１…参照画像（参照フレーム）、１０２…ターゲットブロック、１０４…動きベクトル１０６…サーチ範囲、１０７…参照ベクトル、１０８…参照ブロック、１６３…マッチング処理部、１６４…動きベクトル算出部、１６５…コントロール部
【図１】
0004882956.tif 000002
【図２】
0004882956.tif 000003
【図３】
0004882956.tif 000004
【図４】
0004882956.tif 000005
【図５】
0004882956.tif 000006
【図６】
0004882956.tif 000007
【図７】
0004882956.tif 000008
【図８】
0004882956.tif 000009
【図９】
0004882956.tif 000010
【図１０】
0004882956.tif 000011
【図１１】
0004882956.tif 000012
【図１２】
0004882956.tif 000013
【図１３】
0004882956.tif 000014
【図１４】
0004882956.tif 000015
【図１５】
0004882956.tif 000016
【図１６】
0004882956.tif 000017
【図１７】
0004882956.tif 000018
【図１８】
0004882956.tif 000019
【図１９】
0004882956.tif 000020
【図２０】
0004882956.tif 000021
【図２１】
0004882956.tif 000022
【図２２】
0004882956.tif 000023
【図２３】
0004882956.tif 000024
【図２４】
0004882956.tif 000025
【図２５】
0004882956.tif 000026
【図２６】
0004882956.tif 000027
【図２７】
0004882956.tif 000028
【図２８】
0004882956.tif 000029
【図２９】
0004882956.tif 000030
【図３０】
0004882956.tif 000031
【図３１】
0004882956.tif 000032
【図３２】
0004882956.tif 000033
【図３３】
0004882956.tif 000034
【図３４】
0004882956.tif 000035
【図３５】
0004882956.tif 000036
【図３６】
0004882956.tif 000037
【図３７】
0004882956.tif 000038
【図３８】
0004882956.tif 000039
【図３９】
0004882956.tif 000040
【図４０】
0004882956.tif 000041
【図４１】
0004882956.tif 000042
【図４２】
0004882956.tif 000043
【図４３】
0004882956.tif 000044
【図４４】
0004882956.tif 000045
【図４５】
0004882956.tif 000046
【図４６】
0004882956.tif 000047
【図４７】
0004882956.tif 000048
【図４８】
0004882956.tif 000049
【図４９】
0004882956.tif 000050
【図５０】
0004882956.tif 000051
【図５１】
0004882956.tif 000052
【図５２】
0004882956.tif 000053
【図５３】
0004882956.tif 000054
【図５４】
0004882956.tif 000055
【図５５】
0004882956.tif 000056
【図５６】
0004882956.tif 000057