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