(57)【要約】【課題】動きベクトルの検出処理に必要なリソースと処理速度を、適切に設定できるようにする。【解決手段】複数フレーム間の画像信号の動きベクトルを算出する第１の画像処理部１６を備える。そして、その第１の画像処理部での動きベクトル算出を制御する制御部として、第１の制御部１６５１，１６５２と第２の制御部１６５３，１６５４とを備える。第１の制御部は、第１の画像処理部１６をプログラマブルに制御して、動き検出を実行させる。第２の制御部は、第１の画像処理部１６を、予め決められた処理状態で制御して、動き検出を実行させる。このようにして、第１の画像処理部１６での動きベクトルの算出処理として、プログラマブルに制御される処理状態と、予め決められた処理状態とを適切に選択して、画像信号の状態に応じた適切な動きベクトル算出が行えるようにすることを可能にする。【選択図】図１３
2012142864.tif 000002
【特許請求の範囲】
【請求項１】
複数フレーム間の画像信号の動きベクトルを算出する第１の画像処理部と、
前記第１の画像処理部をプログラマブルに制御して、動き検出を実行させる第１の制御部と、
前記第１の画像処理部を、予め決められた処理状態で制御して、動き検出を実行させる第２の制御部とを備えた
画像処理装置。
【請求項２】
前記第２の制御部は、ハードウェア実装とした
請求項１記載の画像処理装置。
【請求項３】
前記第１の制御部は、静止画の画像信号を処理する際の制御部であり、
前記第２の制御部は、動画像の画像信号を処理する際の制御部である
請求項２記載の画像処理装置。
【請求項４】
複数フレーム間の画像信号の動きベクトルを算出する第１の画像処理と、
前記第１の画像処理の実行をプログラマブルに制御して、動き検出を実行させる第１の制御処理と、
前記第１の画像処理を、予め決められた処理状態で制御して、動き検出を実行させる第２の制御処理とを行う
画像処理方法。
【請求項５】
前記第２の制御処理は、ハードウェア実装とした
請求項４記載の画像処理方法。
【請求項６】
前記第１の制御処理は、静止画像の画像信号を処理する際の制御処理であり、
前記第２の制御処理は、動画像の画像信号を処理する際の制御処理である
請求項５記載の画像処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、複数フレームの画像信号の相関を検出して、その複数フレーム間の動きベクトルを検出する画像処理装置及び画像処理方法に関する。
【背景技術】
【０００２】
２つの画面間の動きベクトルを、画像情報自身から求めるブロックマッチング手法は、歴史の古い技術である。テレビジョンカメラのパン・チルト検出や被写体追尾、ＭＰＥＧ（Ｍｏｖｉｎｇ Ｐｉｃｔｕｒｅ Ｅｘｐｅｒｔｓ Ｇｒｏｕｐ）方式の動画符号化などを中心に開発が進んだ。また、９０年代に入ってからは、画像の重ね合わせによる、センサレス手ブレ補正や低照度撮影時のノイズ除去（Ｎｏｉｓｅ Ｒｅｄｕｃｔｉｏｎ：以降、ＮＲと表記する）など多岐に渡って応用が進められている。
【０００３】
ブロックマッチングは、注目画面である参照画面と、当該参照画面の動きの元となる元画面（ターゲット画面と称する）との間の２画面間の動きベクトルを算出する方法である。この２画面間の動きベクトルの算出時に、所定の大きさの矩形領域のブロックについて、参照画面と元画面との間での相関を算出することにより算出する。元画面が時間的に参照画面よりも前の画面とされる場合（例えば、ＭＰＥＧにおける動き検出の場合）と、参照画面が時間的に元画面よりも前の画面とされる場合（例えば、後述する画像フレームの重ね合わせによるノイズ低減の場合）の両方がある。
【０００４】
なお、この明細書で、画面とは、１フレームまたは１フィールドの画像データからなり、１枚分としてディスプレイに表示される画像を意味しているものとしている。但し、この明細書における以下の説明の便宜上、画面は１フレームからなるものとして、画面をフレームと称する場合もある。例えば、参照画面は参照フレーム、元画面は元フレームと称する場合もある。
【０００５】
ブロックマッチング手法は、ターゲットフレームを、複数個のターゲットブロックに分割し、各ターゲットブロックに対して、参照フレームに検索範囲を設定する。そして、画像メモリから、ターゲットフレームのターゲットブロックと参照フレームの検索範囲内の参照ブロックを読み出し、各画素のＳＡＤ値を計算し、検索範囲の広さ分のＳＡＤ値テーブルを形成する。ＳＡＤ（Ｓｕｍ ｏｆ Ａｂｓｏｌｕｔｅ Ｄｉｆｆｅｒｅｎｃｅ）値は、差分値絶対和である。そして、その最小値の座標値をターゲットブロックについての動きベクトルとしている。
特許文献１には、この動きベクトルを検出する処理例についての記載がある。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００９−８１５９６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ブロックマッチング処理は膨大なハードウェアリソースを消費する回路であり、以前からそのリソースを削減する方法がいろいろと提案されてきた。一方で、ブロックマッチング処理は時間のかかる処理であり、回路全体のスループットを決める部分でもある。そのため、リソースと処理時間は常にトレードオフの関係にあり、そのバランスは一意に決まるものではない。
【０００８】
たとえば、階層化してブロックマッチング処理を行う例に取ると、ＶＧＡ（６４０ｘ４８０）程度の画像であれば２階層、１２Ｍ（４０００×３０００）程度の画像であれば３階層のように、階層数のバリエーションが必要になる。
また、静止画の連写加算のように、手ブレによる画面全体のブレに対応する必要があるアプリケーションでは、一般的に、サーチ範囲が広い方が大きな手ブレにまで対応できるものである。
【０００９】
一方で、ブロックマッチング処理部を、ベクトル検出器として使用する場合、そのサーチ範囲や求められる処理速度は、想定するアプリケーションによって様々であり、一概にサーチ範囲が広く取れれば良い、と言うことはできない。
つまり、動き検出エンジンを有するシステムを構成する際、動き検出部のコントロール部は、サーチ範囲や階層数など階層ブロックマッチングの構成をプログラマブルに変更できることが望ましい。たとえば、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）ないしＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）のようなプログラムで動作するものが良い。
【００１０】
また、ＭＰＥＧなどのコーデック処理に関する分野では、古くからプロセッサペースの動き検出エンジンやＤＣＴ処理エンジンが提案されている。たとえば、ＳＡＤ演算器と複数のプロセッサを並列化してプログラマブルな動き検出処理を実現したものが既に提案されている。
しかしながら、ＭＰＥＧコーデックや動画フレームＮＲなど、リアルタイム性が求められる処理では、プログラマブルな構成を求めている一方で、高速に処理を行わなくてはいけないという要望もある。
たとえば、特許文献１では、階層化してブロックマッチング処理を行う場合における処理時間の問題について言及している。ここでは、縮小面の動きベクトル検出から基底面の動きベクトル検出へ遷移する際に、縮小面の動きベクトル検出の結果が分からないと基底面の動きベクトル検出の参照ブロックのアクセスが出来ない問題に対して、パイプラインを組むことによって解決している。
しかしながら、このような複雑なパイプラインをプログラムするためには、内部処理の様々な状態を見る必要があるため、ＣＰＵ構成が複雑になってしまっていた。
【課題を解決するための手段】
【００１１】
本発明は、複数フレーム間の画像信号の動きベクトルを算出する第１の画像処理部を備える。そして、その第１の画像処理部での動きベクトル算出を制御する制御部として、第１の制御部と第２の制御部とを備える。
第１の制御部は、第１の画像処理部をプログラマブルに制御して、動き検出を実行させる。第２の制御部は、第１の画像処理部を、予め決められた処理状態で制御して、動き検出を実行させる。
【００１２】
本発明によると、第１の画像処理部での動きベクトルの算出処理として、プログラマブルに制御される処理状態と、予め決められた処理状態とを適切に組み合わせ又は選択して、画像信号の状態に応じた適切な動きベクトル算出が行えるようにすることが可能になる。
【発明の効果】
【００１３】
本発明によると、適切な制御形態で動きベクトル算出が行えるようになる。例えば、ブロックマッチング処理を行う場合に、階層数、マッチング並列数およびサーチ範囲のバリエーションに対応したプログラマブルな制御部を持つことができる。また、リアルタイム処理については専用のモード毎などに用意された制御部を持ち、自動でブロックマッチング処理を行うことができるようになる。
【図面の簡単な説明】
【００１４】
【図１】本発明の一実施の形態による画像処理装置としての撮像装置の構成例を示すブロック図である。
【図２】本発明の一実施の形態の撮像装置における撮像画像のノイズ低減処理例を示す説明図である。
【図３】本発明の一実施の形態の撮像装置における撮像画像のノイズ低減処理例を示す説明図である。
【図４】基底面と縮小面の例を示す説明図である。
【図５】基底面と縮小面の例を示す説明図である。
【図６】基底面と縮小面での処理例を示す説明図である。
【図７】本発明の一実施の形態の撮像装置における動き検出・動き補償部における動作例を示す説明図である。
【図８】本発明の一実施の形態の撮像装置における動き検出・動き補償部の構成例を示すブロック図である。
【図９】本発明の一実施の形態の動き検出・動き補償部の一部の詳細構成例のブロック図である。
【図１０】本発明の一実施の形態の動き検出・動き補償部の一部の詳細構成例のブロック図である。
【図１１】本発明の一実施の形態の撮像装置における画像重ね合わせ部の構成例を示すブロック図である。
【図１２】本発明の一実施の形態の動き検出・動き補償部の制御構成例を示すブロック図である。
【図１３】本発明の一実施の形態の動き検出・動き補償部の制御構成例を示すブロック図である。
【図１４】本発明の一実施の形態によるリアルタイム動作例を汎用動作と比較して示す説明図である。
【図１５】本発明の一実施の形態によるリアルタイム動作例と矩形動作例を示す説明図である。
【図１６】本発明の一実施の形態によるリアルタイム動作の流れの例を示す説明図である。
【図１７】本発明の一実施の形態によるリアルタイム動作の処理手順の例を示す説明図である。
【図１８】本発明の一実施の形態によるリアルタイム動作による処理例を示す説明図である。
【図１９】本発明の一実施の形態による矩形動作による処理例を示す説明図である。
【図２０】本発明の一実施の形態による動作例を示す処理タイミング図である。
【図２１】本発明の一実施の形態の画像処理例を説明するためのフローチャートである。
【図２２】本発明の一実施の形態の画像処理例を説明するためのフローチャートである。
【図２３】本発明の一実施の形態の階層化マッチング処理例を説明するためのフローチャートである。
【図２４】本発明の一実施の形態の階層化マッチング処理例を説明するためのフローチャートである。
【図２５】本発明の一実施の形態の画像サイズによる階層数と縮小面の縮小倍率の例を示す説明図である。
【発明を実施するための形態】
【００１５】
以下、本発明の一実施の形態の例を、以下の順序で説明する。
１．撮像装置の構成（図１〜図３）
２．動き検出・動き補償部の処理構成（図４〜図１１）
３．動き検出・動き補償部の制御構成（図１２〜図２０、図２５）
４．撮像画像のノイズ低減処理の概要の流れ（図２１〜図２２）
５．階層化ブロックマッチング処理の流れの例（図２３〜図２４）
【００１６】
［１．撮像装置の構成］
この発明による画像処理装置の実施の形態として、撮像装置の場合を例にとって、図を参照しながら説明する。
ここでの撮像装置は、ブロックマッチングにより２画面間の動きベクトルを検出し、検出した動きベクトルを用いて動き補償画像を生成し、生成した動き補償画像とノイズ低減対象の画像を重ね合わせてノイズ低減を行う画像処理を行う画像処理部を備える。まず、この画像処理の概要について説明する。
【００１７】
ここでは、連続して撮影された複数枚の画像を、動き検出および動き補償を用いて位置合わせをした後、重ね合わせ（加算）することで、ノイズが低減された画像を得ることができるようにしている。すなわち、複数枚の画像のそれぞれにおけるノイズはランダムなものであるので、同一内容の画像を重ね合わせることで、画像に対してノイズが低減されるものである。
【００１８】
以下の説明において、動き検出および動き補償を用いて複数枚の画像を重ね合わせて、ノイズを低減することをＮＲ（Ｎｏｉｓｅ Ｒｅｄｕｃｔｉｏｎ）と呼び、ＮＲによりノイズ低減された画像をＮＲ画像と称することとする。
【００１９】
また、この明細書では、ノイズ低減を施したい画面（画像）をターゲット画面（ターゲットフレーム）、重ね合わせたい画面を参照画面（参照フレーム）と定義する。連続して撮影された画像は、撮影者の手ブレなどにより、画像の位置がずれており、両画像の重ね合わせを行うには、位置合わせが重要となる。ここで、考慮しなければならないのは、手ブレのような画面全体のブレと共に、画面内における被写体の動きも存在することである。
【００２０】
この例の撮像装置において、静止画撮影時は、図２に示すように、高速で複数枚の画像の撮影を行い、１枚目の撮影画像をターゲットフレーム１００とする。そして、２枚目以降、所定枚数の撮影画像を参照フレーム１０１とし、ターゲットフレーム１００と参照フレーム１０１との重ね合わせを行い、その重ね合わせたものを静止画撮影画像として記録するようにする。すなわち、撮影者が撮像装置のシャッターボタンを押下操作すると、高速で前記所定枚数の画像が撮影され、その１枚目に撮影した画像（フレーム）に対して、時間的に後で撮影された複数枚の画像（フレーム）が、重ね合わされることになる。
【００２１】
また、動画撮影時は、図３のように、撮像素子から出力されている現フレームの画像をターゲットフレーム１００の画像とし、その前フレームの過去の画像を参照フレーム１０１の画像とする。したがって、現フレームの画像のノイズ低減を行うために、現フレームの前フレームの画像を現フレームに重ね合わせるということになる。
【００２２】
このような動き検出及び動き補償を行う撮像装置の構成について、図１を参照して説明する。
図１に示す撮像装置は、システムバス２にＣＰＵ（Ｃｅｎｔｒａｌ Ｐｒｏｃｅｓｓｉｎｇ Ｕｎｉｔ）１が接続されると共に、システムバス２に、撮像信号処理系や、ユーザ操作入力部３、大容量メモリ４０、記録再生装置部５などが接続されて構成されている。なお、ＣＰＵ１は、図示は省略するが、種々のソフトウエア処理を行なうプログラムを記憶するＲＯＭ（Ｒｅａｄ Ｏｎｌｙ Ｍｅｍｏｒｙ）やワークエリア用ＲＡＭ（Ｒａｎｄｏｍ Ａｃｃｅｓｓ Ｍｅｍｏｒｙ）などを含むものとしている。本明細書で説明するＣＰＵ１以外のＣＰＵについても同様である。また、ＣＰＵ１は、後述する他のＣＰＵと区別するために、システムＣＰＵ１と称する場合もある。
大容量メモリ４０は、ＤＲＡＭなどの比較的大容量のメモリとそのコントローラとで構成され、１フレーム又は複数フレームの画像データを記憶する容量の画像メモリである。メモリのコントローラは、メモリ４０の外部に設けて、システムバス２などを介して書き込み及び読み出しが制御される構成でもよい。なお、以下の説明では、大容量メモリ４０は画像メモリ４０と称する。
【００２３】
ユーザ操作入力部３を通じた撮像記録開始操作を受けて、図１の撮像装置の撮像信号処理系は、後述するような撮像画像データの記録処理を行なう。また、ユーザ操作入力部３を通じた撮像記録画像の再生開始操作を受けて、図１の撮像装置の撮像信号処理系は、記録再生装置部５の記録媒体に記録された撮像画像データの再生処理を行なう。
【００２４】
図１に示すように、撮像信号処理系として、撮像レンズ１０Ｌを備えるカメラ光学系（図示は省略）を通じた被写体からの入射光は、撮像素子１１に照射されて撮像される。この例では、撮像素子１１は、ＣＣＤ（Ｃｈａｒｇｅ Ｃｏｕｐｌｅｄ Ｄｅｖｉｃｅ）イメージャで構成されている。なお、撮像素子１１は、ＣＭＯＳ（Ｃｏｍｐｌｅｍｅｎｔａｒｙ Ｍｅｔａｌ Ｏｘｉｄｅ Ｓｅｍｉｃｏｎｄｕｃｔｏｒ）イメージャなどの他のイメージャで構成してもよい。
【００２５】
この例の撮像装置においては、撮像記録開始操作がなされると、レンズ１０Ｌを通じて入力された映像が、撮像素子１１により撮像画像信号に変換される。この撮像画像信号は、タイミング信号発生部１２からのタイミング信号に同期した信号として、赤（Ｒ）、緑（Ｇ）、青（Ｂ）の３原色から構成されるベイヤー配列のＲＡＷ信号（生の信号）であるアナログ撮像信号として出力される。出力されたアナログ撮像信号は、前処理部１３に供給され、欠陥補正やγ補正等の前処理が施され、データ変換部１４に供給される。
【００２６】
データ変換部１４は、これに入力されたＲＡＷ信号であるアナログ撮像信号を、輝度信号成分Ｙと、色差信号成分Ｃｂ／Ｃｒとにより構成されるデジタル画像データ（ＹＣデータ）に変換し、そのデジタル画像データを、ターゲット画像として、動き検出・動き補償部１６に供給する。動き検出・動き補償部１６内では、バッファメモリ１６ａのターゲット画像用の領域に記憶させる。
【００２７】
また、動き検出・動き補償部１６では、既に画像メモリ４０に書き込まれた以前のフレームの画像信号を、参照画像として取得する。その取得した参照画像の画像データは、動き検出・動き補償部１６のバッファメモリ１６ａの参照画像用の領域に記憶させる。バッファメモリ１６ａの具体的な構成例については後述する。
【００２８】
動き検出・動き補償部１６では、ターゲットフレームの画像データと参照フレームの画像データを使用して、後述するブロックマッチング処理がなされて、ターゲットブロック単位での動きベクトルが検出される。動きベクトルを検出する際には、縮小面のサーチと、基底面のサーチとが行われる。動きベクトルを検出する際には、その動きベクトルの検出精度を示すヒット率βが算出されて出力される。
【００２９】
そして、動き検出・動き補償部１６内で、検出された動きベクトルに基づいて、ブロック単位で動き補償が行われた動き補償画像が生成される。生成された動き補償画像と、元のターゲット画像のデータは、画像重ね合わせ部１７を構成する加算率計算部１７１及び加算部１７２に供給する。
加算率計算部１７１では、ヒット率βに基づいて、ターゲット画像と動き補償画像との加算率αが算出され、算出された加算率αを加算部１７２に供給する。
【００３０】
加算部１７２では、加算率αで、ターゲット画像のデータと、動き補償画像のデータとの加算処理を行って、画像重ね合わせ処理を行い、ノイズ低減された加算画像を得る。なお、以下の説明では、ノイズ低減された加算画像をＮＲ画像と称する。
加算部１７２が出力する重ね合わせ結果としての、ノイズ低減された加算画像の画像データは画像メモリ４０に記憶させる。
【００３１】
画像メモリ４０は、ＮＲ画像のデータを、１フレーム分、画像メモリ４０内の１Ｖ前フレーム記憶部４１に記憶させ保持させる。画像メモリ４０は、１Ｖ前フレーム記憶部４１の他に、２Ｖ前フレーム記憶部４２を備え、１フレーム周期ごとに、１Ｖ前フレーム記憶部４１から２Ｖ前フレーム記憶部４２に記憶データが移される。この１Ｖ前フレーム記憶部４１から２Ｖ前フレーム記憶部４２への記憶データの移動に連動して、２Ｖ前フレーム記憶部４２に記憶されていたデータが、解像度変換部３７に読み出される。
なお、図１の構成では２フレームの画像データを記憶させる構成としたが、動き検出・補償部１６などでより多くの過去の画像データが必要な場合には、より多くのフレーム数の過去の画像データを記憶させて、参照フレームとして使用する構成としても良い。
【００３２】
解像度変換部３７では、表示用や出力用の解像度の画像データに変換され、変換された画像データを記録再生装置部５で記録する場合には、動画コーデック部１９で変換される。動画コーデック部１９で変換された画像データは、記録再生装置部５で記録媒体に記録され、必要な際に記録再生装置部５で記録媒体から読み出される。
【００３３】
そして、解像度変換部３７が出力する画像データ、または記録再生装置部５で再生された画像データは、ＮＴＳＣ（Ｎａｔｉｏｎａｌ Ｔｅｌｅｖｉｓｉｏｎ Ｓｙｓｔｅｍ Ｃｏｍｍｉｔｔｅｅ）エンコーダ２０に供給される。このＮＴＳＣエンコーダ２０でＮＴＳＣ方式の標準カラー映像信号に変換され、例えば液晶表示パネルからなるモニターディスプレイ６に供給される。このようにモニターディスプレイ６に供給されることで、モニター画像がモニターディスプレイ６の表示画面に表示される。なお、図１では、図示を省略したが、ＮＴＳＣエンコーダ２０からの出力映像信号は、映像出力端子を通じて外部に導出することが可能とされている。
【００３４】
［２．動き検出・動き補償部の説明］
動き検出・動き補償部１６では、絶対値差分和であるＳＡＤ値を用いてブロックマッチング処理を行うことで、動きベクトル検出を行う。
【００３５】
＜階層化ブロックマッチング処理の概要＞
一般的な従来のブロックマッチングにおける動きベクトル検出処理は、ピクセル（画素）単位（１ピクセル単位または複数ピクセル単位）で参照ブロックを移動させて、各移動位置における参照ブロックについてのＳＡＤ値を算出する。そして、その算出したＳＡＤ値の中から最小値を示すＳＡＤ値を検出し、当該最小ＳＡＤ値を呈する参照ブロック位置に基づいて動きベクトルを検出するようにする。
【００３６】
しかし、このような従来の動きベクトル検出処理では、サーチ範囲内をピクセル単位で参照ブロックを移動させるようにするので、検索するサーチ範囲に比例して、ＳＡＤ値を算出するマッチング処理回数が多くなって、マッチング処理時間が大きくなると共に、ＳＡＤテーブルの容量も大きくなるという問題があった。
【００３７】
そこで、ここでは、ターゲット画像（ターゲットフレーム）および参照画像（参照フレーム）に対して縮小画像を作成し、作成した縮小画像でブロックマッチングを行い、縮小画像での動き検出結果を基に、もとのターゲット画像でのブロックマッチングを行う。ここで、縮小画像のことを縮小面、縮小化をしていない元の画像のことを基底面と呼ぶことにする。したがって、この例では、縮小面でのブロックマッチングを行ったあと、そのマッチング結果を用いて基底面でのブロックマッチングを行う。
【００３８】
図４および図５に、ターゲットフレーム（画像）および参照フレーム（画像）の画像縮小化のイメージを示す。すなわち、この例においては、例えば図４に示すように、基底面ターゲットフレーム１３０は、水平方向および垂直方向のそれぞれを、１／ｎ（ｎは正の数）に縮小して、縮小面ターゲットフレーム１３２とする。したがって、基底面ターゲットフレーム１３０を複数個に分割して生成した基底面ターゲットブロック１３１は、縮小面ターゲットフレームでは、水平方向および垂直方向のそれぞれが１／ｎ×１／ｎに縮小された縮小面ターゲットブロック１３３となる。
【００３９】
そして、ターゲットフレームの画像縮小倍率１／ｎに合わせて、参照フレームを縮小する。すなわち、図５に示すように、基底面参照フレーム１３４は、水平方向および垂直方向のそれぞれを、１／ｎに縮小して、縮小面参照フレーム１３５とする。そして、基底面参照フレーム１３４上で検出された動き補償ブロック１０３についての動きベクトル１０４は、縮小面参照フレーム１３５では、１／ｎ×１／ｎに縮小された縮小面動きベクトル１３６として検出される。
【００４０】
なお、上記の例では、ターゲットフレームと参照フレームとの画像縮小倍率は同じとした。これに対して演算量削減のため、ターゲットフレーム（画像）と参照フレーム（画像）とで異なる画像縮小倍率を用い、画素補間等の処理で、両フレームの画素数を合わせて、マッチングを行うようにしてもよい。
【００４１】
また、水平方向および垂直方向のそれぞれの縮小倍率を同一としたが、水平方向と垂直方向とで、縮小倍率を異ならせるようにしても良い。例えば水平方向は１／ｎに縮小し、垂直方向は、１／ｍ（ｍは正の数で、ｎ≠ｍ）に縮小する場合には、縮小画面は、元の画面の１／ｎ×１／ｍの大きさになる。
【００４２】
図６に、縮小面参照ベクトルと基底面参照ベクトルの関係を示す。基底面参照フレーム１３４において、動き検出原点１０５と、サーチ範囲１０６が、図６（Ａ）に示すように決定されたとする。このとき、１／ｎ×１／ｎに画像縮小された縮小面参照フレーム１３５上では、図６（Ｂ）に示すように、サーチ範囲は、１／ｎ×１／ｎに縮小された縮小面サーチ範囲１３７とされる。
【００４３】
そして、この例では、縮小面サーチ範囲１３７内において、縮小面参照フレーム１３５での動き検出原点１０５からの位置ズレ量を表す縮小面参照ベクトル１３８を設定する。そして、それぞれの縮小面参照ベクトル１３８が指し示す位置にある縮小面参照ブロック１３９と、縮小面ターゲットブロック１３１（図６では図示は省略）との相関性を評価する。
【００４４】
この場合、縮小画像において、ブロックマッチングを行うので、縮小面参照フレーム１３５においてＳＡＤ値を算出すべき縮小面参照ブロック位置（縮小面参照ベクトル）の数を少なくすることができる。このようにＳＡＤ値の算出回数（マッチング処理回数）が少なくなる分だけ、処理を高速化することができると共に、ＳＡＤテーブルを小規模とすることができる。
【００４５】
図７に示すように、縮小面サーチ範囲１３７に応じて定まる縮小面マッチング処理範囲１４３内に設定される複数個の縮小面参照ブロック１３９と縮小面ターゲットブロック１３１とのブロックマッチングによる相関性評価が得られる。その相関性評価により、縮小面参照フレーム１３５における縮小面動きベクトル１３６が算出される。この縮小面動きベクトル１３６の精度は、画像が１／ｎ×１／ｎに縮小されているので、１ピクセルのｎ倍の低精度となっている。そこで、この算出された縮小面動きベクトル１３６をｎ倍しても、基底面参照フレーム１３４において、１ピクセル精度の動きベクトル１０４は得られない。
【００４６】
しかし、基底面参照フレーム１３４においては、縮小面動きベクトル１３６をｎ倍した動きベクトルの近傍に、１ピクセル精度の基底面動きベクトル１０４が存在することは明らかである。
【００４７】
そこで、この例では、図６（Ｃ）および図７に示すように、基底面参照フレーム１３４において、縮小面動きベクトル１３６をｎ倍した動きベクトル（基底面参照ベクトル１４１）が指し示す位置を中心として考える。この位置を中心として、基底面動きベクトル１０４が存在するであろうと考えられる狭い範囲に、基底面サーチ範囲１４０を設定し、設定された基底面サーチ範囲１４０に応じて基底面マッチング処理範囲１４４を設定する。
【００４８】
そして、図６（Ｃ）に示すように、この基底面サーチ範囲１４０内の位置を示すものとして、基底面参照フレーム１３４における基底面参照ベクトル１４１を設定し、各基底面参照ベクトル１４１が指し示す位置に基底面参照ブロック１４２を設定する。これらの設定で、基底面参照フレーム１３４におけるブロックマッチングを行うようにする。
【００４９】
ここで設定された基底面サーチ範囲１４０および基底面マッチング処理範囲１４４は、非常に狭い範囲でよい。すなわち、図７に示すように、縮小面サーチ範囲１３７および縮小面マッチング処理範囲１４３を縮小率の逆数倍であるｎ倍したサーチ範囲１３７´およびマッチング処理範囲１４３´に比較して非常に狭い範囲でよい。
【００５０】
したがって、階層化マッチングを行わずに、基底面においてのみブロックマッチング処理をした場合には、基底面においては、サーチ範囲１３７´およびマッチング処理範囲１４３´において、複数個の参照ブロックを設定して、ターゲットブロックとの相関値を求める演算をする必要がある。これに対して、階層化マッチング処理においては、図７のように、非常に狭い範囲においてのみマッチング処理を行えばよい。
【００５１】
このため、当該狭い範囲である、基底面サーチ範囲１４０および基底面マッチング処理範囲１４４に設定される基底面参照ブロックの数は非常に少なくなり、マッチング処理回数（相関値演算回数）および保持するＳＡＤ値を非常に小さくすることができる。このため、処理を高速化することができると共に、ＳＡＤテーブルを小規模化することができるという効果を得ることができる。
【００５２】
＜動き検出・動き補償部の構成例＞
図８に、動き検出・動き補償部１６の構成例のブロック図を示す。この例では、動き検出・動き補償部１６は、ターゲットブロック１０２の画素データを保持するターゲットブロックバッファ部１６１と、参照ブロック１０８の画素データを保持する参照ブロックバッファ部１６２を備える。これらのバッファ部１６１，１６２が、図１に示したバッファ１６ａに相当する。
【００５３】
さらに、動き検出・動き補償部１６は、ターゲットブロック１０２と参照ブロック１０８とで対応する画素についてのＳＡＤ値を計算するマッチング処理部１６３を備える。さらにまた、マッチング処理部１６３から出力されるＳＡＤ値情報から動きベクトルを算出する動きベクトル算出部１６４と、それぞれのブロックを制御するコントロール部１６５とを備える。
【００５４】
そして、画像メモリ４０に記憶された画像データは、動き検出・動き補償部１６内のターゲットブロックバッファ部１６１及び参照ブロックバッファ部１６２に供給される。
【００５５】
静止画撮像時においては、ターゲットブロックバッファ部１６１には、メモリコントローラ８による読み出し制御にしたがって、以下の画像が画像メモリ４０から読み出されて、書き込まれる。すなわち、画像メモリ４０に記憶されている縮小面ターゲット画像Ｐrtまたは基底面ターゲット画像Ｐbtの画像フレームからの縮小面ターゲットブロックまたは基底面ターゲットブロックが、画像メモリ４０から読み出されて、書き込まれる。
【００５６】
縮小面ターゲット画像Ｐrtまたは基底面ターゲット画像Ｐbtは、１枚目は、シャッターボタン押下後の最初の撮像フレームの画像が画像メモリ４０から読み出されて、ターゲットフレーム１０２として、ターゲットブロックバッファ部１６１に書き込まれる。参照画像とのブロックマッチングに基づき画像の重ね合わせがなされると、画像メモリ４０に当該画像の重ね合わせ後のＮＲ画像が書き込まれ、ターゲットブロックバッファ部１６１のターゲットフレーム１０２が、当該ＮＲ画像に書き換えられてゆく。
【００５７】
参照ブロックバッファ部１６２には、画像メモリ４０に記憶されている縮小面参照画像Ｐrrまたは基底面参照画像Ｐbrの画像フレームからの縮小面マッチング処理範囲または基底面マッチング処理範囲の画像データが、書き込まれる。縮小面参照画像Ｐrrまたは基底面参照画像Ｐbrは、最初の撮像フレームの後の撮像フレームが、参照フレーム１０８として画像メモリ４０に書き込まれる。
【００５８】
この場合、連続して撮影された複数枚の撮像画像を取り込みながら画像の重ね合わせ処理を行う場合には、基底面参照画像および縮小面参照画像としては、最初の撮像フレームの後の撮像フレームが、１枚ずつ順次に画像メモリ４０に取り込まれる。
【００５９】
連続して撮影された複数枚の撮像画像を画像メモリ４０に取り込んだ後、動き検出・動き補償部１６および画像重ね合わせ部１７で、動きベクトル検出を行い、画像の重ね合わせを実行するようにする場合には、複数枚の撮像フレームを保持する必要がある。この連続して撮影された複数枚の撮像画像を画像メモリ４０に取り込んだ後の処理を、撮影後加算と呼ぶ。すなわち、この撮影後加算時には、基底面参照画像および縮小面参照画像としては、最初の撮像フレームの後の複数枚の撮像フレームの全てを画像メモリ４０に格納保持しておく必要がある。
【００６０】
撮像装置としては、撮影中加算および撮影後加算のいずれも用いることができるが、この実施形態では、静止画ＮＲ処理は、多少処理時間がかかっても、ノイズが低減された綺麗な画像が要求されることを考慮して、撮影後加算の処理を採用している。
【００６１】
一方、動画撮影時においては、動き検出・動き補償部１６には、画像補正・解像度変換部１５からの撮像フレームがターゲットフレーム１０２として入力される。ターゲットブロックバッファ部１６１には、この画像補正・解像度変換部１５からの、ターゲットフレームから抽出されたターゲットブロックが書き込まれる。また、ターゲットフレームよりも１枚前の、画像メモリ４０に記憶されている撮像フレームが、参照フレーム１０８とされる。参照ブロックバッファ部１６２には、この参照フレーム（基底面参照画像Ｐbrまたは縮小面参照画像Ｐrr）からの基底面マッチング処理範囲または縮小面マッチング処理範囲が書き込まれる。
【００６２】
この動画撮影時には、画像メモリ４０には、画像補正・解像度変換部１６からのターゲットフレームとの間でブロックマッチングをすべき、少なくとも１枚前の撮像画像フレームを基底面参照画像Ｐbrおよび縮小面参照画像Ｐrrとして保持する。
【００６３】
マッチング処理部１６３では、縮小面でのマッチング処理および基底面でのマッチング処理を、ターゲットブロックバッファ部１６１に記憶されたターゲットブロックと、参照ブロックバッファ部１６２に記憶された参照ブロックとについて行う。
【００６４】
ここで、ターゲットブロックバッファ部１６１に記憶されたものが縮小面ターゲットブロックの画像データであり、参照ブロックバッファ１６２に記憶されたものが縮小面参照画面から抽出された縮小面マッチング処理範囲の画像データである場合を考える。この場合には、マッチング処理部１６３では、縮小面マッチング処理が実行される。また、ターゲットブロックバッファ部１６１に記憶されたものが基底面ターゲットブロックの画像データとなる。参照ブロックバッファ１６２に記憶されたものが基底面参照画面から抽出された基底面マッチング処理範囲の画像データである場合には、マッチング処理部１６３では、基底面マッチング処理が実行されることになる。
【００６５】
マッチング処理部１６３で、ブロックマッチングにおけるターゲットブロックと、参照ブロックとの相関の強さを検出するためには、画像データの輝度情報を用いてＳＡＤ値算出を行う。そして、その最小ＳＡＤ値を検出して、当該最小ＳＡＤ値を呈する参照ブロックを最強相関参照ブロックとして検出するようにする。
【００６６】
なお、本実施の形態の例の場合、ＳＡＤ値の算出は、輝度信号と色差信号のそれぞれについて行い、輝度信号のＳＡＤ値と色差信号のＳＡＤ値とを重み付け加算して、最終的なＳＡＤ値を得るようにしてある。この輝度信号と色差信号との処理の例については後述する。
【００６７】
動きベクトル算出部１６４は、マッチング処理部１６３のマッチング処理結果からターゲットブロックに対する参照ブロックの動きベクトルを検出する。この例では、動きベクトル算出部１６４は、ＳＡＤ値の最小値を検出保持する。
【００６８】
コントロール部１６５は、ＣＰＵ１による制御を受けながら、この動き検出・動き補償部１６における階層化ブロックマッチング処理の処理動作を制御するようにする。コントロール部１６５による制御動作の例については後述する。
【００６９】
＜ターゲットブロックバッファの構成例＞
ターゲットブロックバッファの構成例のブロック図を、図９に示す。この図９に示すように、ターゲットブロックバッファ１６１は、基底面バッファ部１６１１と、縮小面バッファ部１６１２と、縮小化処理部１６１３と、セレクタ１６１４，１６１５および１６１６とを備えている。セレクタ１６１４，１６１５および１６１６は、図９では、図示は省略したが、コントロール部１６５からの選択制御信号によりそれぞれ選択制御される。
【００７０】
基底面バッファ部１６１１は、基底面ターゲットブロックを一時格納するためのものである。この基底面バッファ部１６１１は、基底面ターゲットブロックを、画像重ね合わせ部１７に送ると共に、セレクタ１６１６に供給する。
【００７１】
縮小面バッファ部１６１２は、縮小面ターゲットブロックを一時格納するためのものである。縮小面バッファ部１６１２は、縮小面ターゲットブロックを、セレクタ１６１６に供給する。
【００７２】
縮小化処理部１６１３は、動画撮影時には上述したように、ターゲットブロックは、画像補正・解像度変換部１５から送られてくるので、この縮小化処理部１６１３で縮小面ターゲットブロックを生成するために設けられている。縮小化処理部１６１３からの縮小面ターゲットブロックは、セレクタ１６１５に供給される。
【００７３】
セレクタ１６１４は、動画撮影時にはデータ変換部１４からのターゲットブロック（基底面ターゲットブロック）を出力する。静止画撮影時には画像メモリ４０から読み出された基底面ターゲットブロックまたは縮小面ターゲットブロックを出力する。これらの出力は、コントロール部１６５からの選択制御信号により選択されて出力され、その出力を基底面バッファ部１６１１と、縮小化処理部１６１３と、セレクタ１６１５とに供給する。
【００７４】
セレクタ１６１５は、動画撮影時には縮小化処理部１５からの縮小面ターゲットブロックを、静止画撮影時には画像メモリ４０からの縮小面ターゲットブロックを、コントロール部１６５からの選択制御信号により選択して出力する。その出力を縮小面バッファ部１６１２に供給する。
【００７５】
セレクタ１６１６は、コントロール部１６１５からの選択制御信号に応じて、縮小面でのブロックマッチング時には、縮小面バッファ部１６１２からの縮小面ターゲットブロックを出力する。基底面でのブロックマッチング時には、基底面バッファ部１６１１からの基底面ターゲットブロックを出力する。出力した縮小面ターゲットブロックまたは基底面ターゲットブロックをマッチング処理部１６３に送る。
【００７６】
＜参照ブロックバッファの構成例＞
参照ブロックバッファ部１６２の構成例のブロック図を、図１０に示す。この図１０に示すように、参照ブロックバッファ部１６２は、基底面バッファ部１６２１と、縮小面バッファ部１６２２と、セレクタ１６２３とを備えている。セレクタ１６２３は、図１０では、図示は省略したが、コントロール部１６５からの選択制御信号により選択制御される。
【００７７】
基底面バッファ部１６２１は、画像メモリ４０からの基底面参照ブロックを一時格納し、その基底面参照ブロックを、セレクタ１６２３に供給すると共に、画像重ね合わせ部１７に、動き補償ブロックとして送る。
【００７８】
縮小面バッファ部１６２２は、画像メモリ４０からの縮小面参照ブロックを一時格納するためのものである。縮小面バッファ部１６２２は、縮小面参照ブロックを、セレクタ１６２３に供給する。
【００７９】
セレクタ１６２３は、コントロール部１６１５からの選択制御信号に応じて、縮小面でのブロックマッチング時には、縮小面バッファ部１６１２からの縮小面参照ブロックを出力する。基底面でのブロックマッチング時には、基底面バッファ部１６１１からの基底面参照ブロックを出力する。出力した縮小面参照ブロックまたは基底面参照ブロックを、マッチング処理部１６３に送る。
【００８０】
＜画像重ね合わせ部の構成例＞
画像重ね合わせ部１７の構成例のブロック図を、図１１に示す。この図１１に示すように、画像重ね合わせ部１７は、加算率計算部１７１と、加算部１７２と、基底面出力バッファ部１７３と、縮小面生成部１７４と、縮小面出力バッファ部１７５とを備えて構成されている。
【００８１】
そして、画像重ね合わせ部１７の出力画像データが、データ圧縮部３５で圧縮された後、画像メモリ４０に記憶される。
【００８２】
加算率計算部１７１は、動き検出・動き補償部１６からのターゲットブロックおよび動き補償ブロックを受けて、両者の加算率を、採用する加算方式が単純加算方式であるか、または平均加算方式であるかに応じて定める。定めた加算率を、ターゲットブロックおよび動き補償ブロックと共に加算部１７２に供給する。
【００８３】
加算部１７２での加算結果の基底面ＮＲ画像は、圧縮された後、画像メモリ４０に書き込まれる。また、加算部１７２での加算結果の基底面ＮＲ画像は、縮小面生成部１７４にて縮小面ＮＲ画像に変換され、縮小面生成部１７４からの縮小面ＮＲ画像が、画像メモリ４０に書き込まれる。
【００８４】
［３．動き検出・動き補償部の制御構成］
次に、動き検出・動き補償部１６内での動き検出動作及び動き補償動作の制御処理例について説明する。
図１２及び図１３は、動き検出・動き補償部１６のコントロール部１６５の構成を示したものである。
図１２は、本実施の形態の第１の構成であり、パイプライン化等による高速化が必要な動画ＮＲ処理のために専用のサブＣＰＵをもち、その他の処理についてはＣＰＵからすべてのスレーブにアクセスする構成である。図１３は第１の構成を発展させた第２の構成であり、ＣＰＵにスレーブ間とのインターフェースがなく、ブロック単位の処理からパイプラインまで処理の粒度に応じてサブＣＰＵが存在し、ＣＰＵの構成がシンプルになっている。
【００８５】
リアルタイム制御と矩形制御について説明すると、コントロール部を構成させる考え方として、高速性を生かした制御が行える構成と、汎用性を有した制御が行える構成という２つの観点がある。
ここでの汎用性とは、全てのブロックに対して命令を行うことができるもので、ハードウェアリソースを十分に使用することができる一方、ＣＰＵで複雑な処理を行う必要があり、ＣＰＵと各処理部とのインターフェースが複雑になる。汎用性が高ければ高いほど、ＣＰＵで制御できる内容は増え、インターフェースが複雑化する。
高速性とは、汎用性の反対と考えることができる。制御できることを限定することで、ある程度決まった処理をまとめて行うことができ、ＣＰＵの処理負担は軽くなる。一方で、インターフェースが少ないため、出来る処理内容は限られてくる。
本実施の形態のコントロール部１６５は、この汎用性と高速性のバランスを取るものである。このため、汎用性と高速性のバランスを取った構成を、コントロール部１６５として複数種類用意しておくものである。
具体的には、動き検出をプログラマブルに制御して動き検出を実現する（汎用的な）プログラマブルＣＰＵ１６５１と、動き検出処理部に対して予め決められた制御を実装した（高速性に特化した）リアルタイムコントロール部１６５２とを備えるものである。
【００８６】
図１２のリアルタイム制御を行うための構成について説明する。
コントロール部１６５は、第１の制御部であるプログラマブルＣＰＵ１６５１と、第２の制御部（サブＣＰＵ）であるリアルタイムコントロール部１６５２とを備える。
そして、プログラマブルＣＰＵ１６５１からの指令で、リアルタイムコントロール部１６５２から、動き検出・動き補償部１６内の各画像処理部での処理動作を制御する。リアルタイムコントロール部１６５２は、ハードウェア実装された制御部であり、指示の入力で、予め決められた処理状態で各部を制御して、動き検出を実行させる。即ち、リアルタイムコントロール部１６５２は、動作モードと、画像のサイズ（画素数）を設定することができ、プログラマブルＣＰＵ１６５１からの指示があると、その設定された動作モードと画像サイズで、１フレーム分の処理を自動で行う。このとき、リアルタイムコントロール部１６５２の内部では、ターゲットブロックバッファ部１６１と参照ブロックバッファ部１６２とマッチング処理部１６３と動きベクトル算出部１６４とへ開始命令を出し、終了通知を待っている。
【００８７】
プログラマブルＣＰＵ１６５１は、システムバス２を介して、プログラム用メモリに格納されたプログラムが読み出される。そのプログラマブルＣＰＵ１６５１に読み出されたプログラムに従った手順で制御処理が実行される。図１２では、第１プログラム１ａと、第２プログラム１ｂと、第３プログラム１ｃとが、選択的にプログラマブルＣＰＵ３１１に実装される構成としてある。どのプログラムが実装されるかは、例えば、撮像装置の動作モードにより、システムＣＰＵ１により制御される。リアルタイム制御時には、リアルタイム制御を行うプログラムが実装される。本実施の形態においては、このリアルタイム制御を、動画像の画像信号から動きベクトルを検出処理する際に実行する。即ち、撮像装置として、動画像の撮像を行う際の動きベクトル検出とその検出に基づいた処理を行うモードである場合に、プログラマブルＣＰＵ１６５１とリアルタイムコントロール部１６５２を使用した制御が行われる。一方、静止画像の画像信号から動きベクトルを検出処理する際には、後述する図１３に示した汎用命令セット部１６５３，１６５４を使用した汎用制御が行われる。
【００８８】
なお、プログラマブルＣＰＵ１６５１から、動き検出・動き補償部１６内の各画像処理部に対して直接、制御指示を送ることも可能である。実装されるプログラムによっては、プログラマブルＣＰＵ１６５１からの直接の指示で、動き検出動作及び動き補償動作を実行させることもできる。プログラマブルＣＰＵ１６５１からの直接の指示で、動き検出動作及び動き補償動作を実行させる場合を、ここでは汎用制御状態と称する。
【００８９】
図１３の構成について説明する。
図１３の構成では、図１２に示したプログラマブルＣＰＵ１６５１とリアルタイムコントロール部３１２の他に、さらに、汎用命令セット部１６５３，１６５４を備える。汎用命令セット部１６５３は、プログラマブルＣＰＵ１６５１からの指示で、１ブロックの処理を行うための命令を生成させるように構成された制御部である。汎用命令セット部１６５４は、プログラマブルＣＰＵ１６５１からの指示で、画像データの矩形処理を行うための命令を生成させるように構成された制御部である。プログラマブルＣＰＵ１６５１から各処理部１６１〜１６４へは、直接は命令を行わない構成であり、そのため、ＣＰＵの構成が非常に簡易になっている。
【００９０】
各汎用命令セット部１６５３，１６５４は、ターゲットブロックバッファ部１６１と参照ブロックバッファ部１６２とマッチング処理部１６３と動きベクトル算出部１６４とに制御指示を送り、動き検出動作及び動き補償動作を実行させる。
従って、矩形処理制御時には、プログラマブルＣＰＵ１６５１は、矩形処理部である汎用命令セット部１６５３，１６５４を介して各処理部にアクセスする。例えば、１フレームの画面を横方向に分割した矩形を指定し、命令すると、汎用命令セット部１６５３，１６５４は、このサイズの動きベクトルをブロック単位で検出する。
この矩形処理時は、動きベクトルを検出するブロックサイズ、及び階層数を可変にすることが容易であり、動きベクトル検出処理を並列化できないが、プログラムの自由度が高い。一方で、リアルタイム処理時は、動きベクトルを検出するブロックサイズ、及び階層数が固定である代わりに、縮小面での動きベクトル検出と、基底面での動きベクトル検出を並列化でき、高速動作が可能である。
【００９１】
図１４は、リアルタイム動作制御状態の概要を、汎用制御状態と比較して示す図である。ここでの汎用制御状態とは、プログラマブルＣＰＵ１６５１が直接制御する状態である。
図１４（Ａ）は、リアルタイム動作制御状態を示したものであり、図１４（Ｂ）は、汎用動作制御状態を示したものである。
リアルタイム動作制御状態の場合には、システムＣＰＵ１から動作を開始させる指示があると、プログラマブルＣＰＵ１６５１は、画像メモリ４０に保持された画像データを参照フレームとして動き検出及び動き補償を開始させる指令を行う。ここでのリアルタイム動作制御では、１フレームの画像サイズとして、１４４０画素×１０８０画素に固定させてあり、また縮小面として、１／４縮小面で処理するようにしてある。
指令を受けたリアルタイムコントロール部１６５２は、マッチング処理で必要な画像ブロックである６４画素×３２画素のブロックのデータごとに、参照ブロックバッファ部１６２に読み出す処理を、並列で実行させる。また、１／４縮小面のデータを読み出す処理も、リアルタイムコントロール部１６５２で実行させる。
【００９２】
これに対して図１４（Ｂ）に示した汎用動作時には、すべてプログラマブルＣＰＵ１６５１から順に各処理部に指令を送って、必要なブロック数分の処理が実行される。従って、汎用動作時には、プログラマブルＣＰＵ１６５１の負担が大きいと共に、処理の並列化が困難である。
【００９３】
図１５は、リアルタイム動作制御状態（図１５Ａ）の概要と、汎用制御を最適化した制御状態である、矩形処理状態（図１５Ｂ）の概要とを比較して示す図である。リアルタイム動作制御状態は図１４と同じである。
図１５（Ｂ）に示した矩形処理動作時には、プログラマブルＣＰＵ１６５１は、縮小面の処理を行うために１回指令を出力すると共に、基底面の処理を行うために１回指令を出力する。それぞれの指令を受けた矩形処理部である、汎用命令セット部１６５３，１６５４は、予め決められた手順で基底面と縮小面の処理をブロック数分行う。
矩形処理時には、画像サイズ及び階層数を指示することができる。例えば、画像サイズによって動き検出を行う階層数が変わるような場合に、対処が容易である。例えば、３階層時には、縮小面での動き検出処理→中間面での動き判別処理→基底面での動き判別処理とすればよい。
【００９４】
図１６は、リアルタイム動作制御での制御部からの指令の出力状態と、汎用制御状態での制御部からの指令の出力状態を示した図である。
図１６の右側がリアルタイム動作制御での制御部からの指令の出力状態を示したものである。このときには、プログラマブルＣＰＵ１６５１は、リアルタイム動作を開始させる１命令をリアルタイムコントロール部１６５２に出力する。その指令を受けたリアルタイムコントロール部１６５２は、８命令を各部に出力する。
【００９５】
８命令で行われる処理としては、以下の８つである。
・ターゲットブロックのターゲットブロックバッファ部への書き込み（ステップＳ２１１）
・マッチング処理範囲の参照ブロックバッファ部への書き込み（ステップＳ２１２）
・ターゲットブロックのマッチング処理部への転送（ステップＳ２１３）
・マッチング処理範囲のマッチング処理部への転送（ステップＳ２１４）
・マッチング処理（ＳＡＤ値の計算）の開始（ステップＳ２１５）
・最小ＳＡＤ値から動きベクトルの算出（ステップＳ２１６）
・ターゲットブロックの画像重ね合わせ部への転送（ステップＳ２１７）
・動き補償画の画像重ね合わせ部への転送（ステップＳ２１８）
【００９６】
これら８つのステップの処理が、それぞれの命令で適切なタイミングに実行される。
一方、図１６の左側に示した汎用制御状態の場合には、プログラマブルＣＰＵ１６５１が、これら８つのステップの処理を行う８つの命令を順に出力することになる。
【００９７】
図１７は、リアルタイムコントロール部１６５２からの８命令で、それぞれの処理が行われる流れを示した図である。
ステップＳ２１１のターゲットブロックのターゲットブロックバッファ部１６１への書き込みと、ステップＳ２１２のマッチング処理範囲の参照ブロックバッファ部１６２への書き込みとが並行して行われる。そして、ステップＳ２１３及びＳ２１４でのマッチング処理部１６３への各データの転送についても、並行して行われ、マッチング処理部１６３での計算の開始（ステップＳ２１５）が行われる。そして、ＳＡＤ値の計算が完了することで、動きベクトル算出部１６４で、動きベクトルの算出（ステップＳ２１６）が行われる。その動きベクトルの算出が完了することで、ターゲットブロックの画像重ね合わせ部への転送（ステップＳ２１７）と、動き補償画の画像重ね合わせ部への転送（ステップＳ２１８）とが行われる。
【００９８】
リアルタイムコントロール部１６５２からの命令で転送されるターゲットブロックと参照ブロックは、階層化して管理する必要がある。即ち、図１８に示すように、１フレームの画像データのブロック化と、ターゲットブロック座標が計算された後、縮小面と基底面を設定して、階層化の管理を行う必要がある。そして、縮小面と基底面のデータから、動き検出又は動き補償が行われる。動き検出だけを行う場合には、上述したステップＳ２１１〜Ｓ２１６の処理が行われる。動き補償画を得る場合には、上述したステップＳ２１１〜Ｓ２１８の処理が行われる。
その上で、各ブロックへの命令と、終了割り込みで、図１７に示した流れで処理が実行される。
【００９９】
＜矩形処理の例＞
図１９は、矩形処理による、階層化ブロックマッチングを説明するための図である。図１９の例においては、基底面ターゲットフレーム２０１および基底面参照フレーム３０１を、１／ａ・１／ｂ（１／ａ、１／ｂは、縮小倍率であって、ａ＞１、ｂ＞１である）に縮小して、縮小面ターゲットフレーム２１１および縮小面参照フレーム３１１を生成する。
【０１００】
また、基底面ターゲットフレーム２０１および基底面参照フレーム３０１を、１／ｂに縮小して、中間面ターゲットフレーム２２１および中間面参照フレーム３２１を生成しておく。
【０１０１】
縮小面や中間面の基底面に対する倍率は任意であるが、１／２〜１／８倍（画素数換算で１／４〜１／６４倍）の範囲が適当である。なお、図１９の例では、中間面に対する縮小面の縮小倍率は１／４（すなわち、ａ＝４）、また、基底面に対する中間面の縮小倍率は１／４（すなわち、ｂ＝４）の場合として示している。
【０１０２】
縮小面や中間面の作成にあたっても、その方法は任意である。しかし、単に、原画像の画素を、縮小倍率に応じて間引くだけで縮小面や中間面を作成する方法では、折り返し成分が発生し、１階層目（縮小面）で検出される動きベクトルが、正しいものから外れやすくなる。このため、通常、縮小倍率に応じたカットオフ周波数帯域を持つローパスフィルタを原画に対して施したのち、縮小倍率に応じたサブサンプリングを行う。
【０１０３】
この例では、倍率に応じたサブサンプリングにより消失する画素を含んだ、輝度平均値を生成し、それを縮小面画素や中間面画素としている。つまり、１／ａ縮小なら、ａ×ａ画素の正方領域の輝度平均値を算出し、これを縮小面画素や中間面画素の輝度値とする。この手法の場合、まず中間面を生成しておいてから、中間面から縮小面を生成しても、原画から直接縮小面を生成する場合と同じ結果が得られるため、より効率的である。
【０１０４】
なお、縮小画像を得るに当たっては、水平方向の縮小率と垂直方向の縮小率は、上記のように同じであってよいし、また、異ならせても良い。
【０１０５】
以上のようにして、縮小面および中間面を作成したら、先ず、縮小面ターゲットフレーム２１１に縮小面ターゲットブロック２１２を設定すると共に、縮小面参照フレーム３１１に縮小面サーチ範囲３１３を設定する。
【０１０６】
そして、当該縮小面サーチ範囲３１３内の複数個の縮小面参照ブロック３１２について、縮小面の動きベクトル検出装置４０１で、上述したブロックマッチング処理を行い、最小ＳＡＤ値を呈する縮小面参照ブロック位置を検出する。この縮小面参照ブロック位置の検出に基づき、縮小面動きベクトルＭＶｓを検出する。
【０１０７】
この例では、動きベクトル検出装置４０１は、縮小面ターゲットブロック２１２の大きさ（水平方向の画素数×垂直方向のライン数）のブロックをブロックマッチング処理単位として処理を実行する。
【０１０８】
縮小面動きベクトルＭＶｓの算出が終了したら、次に、縮小面ターゲットフレーム２１１をａ倍したものに等しい中間面ターゲットフレーム２２１において、中間面ターゲットブロック２２２を設定する。
【０１０９】
図１９の例では、中間面の動きベクトル検出装置４０２は、縮小面の動きベクトル検出装置４０１におけるブロックマッチング処理単位と同じ大きさのブロックを中間面ターゲットブロックとしてブロックマッチング処理を行うようにしている。ここで、同じ大きさのブロックとは、同じピクセル数であって、同じ水平方向の画素数×同じ垂直方向のライン数からなるものである。
【０１１０】
この例の場合、縮小面は中間面の１／ａであるので、縮小面ターゲットブロック２１２に対応する中間面ターゲットフレームにおける領域には、中間面ターゲットブロック２２２が、ａ個含まれることなる。したがって、その中間面ターゲットブロック２２２のａ個の全てが中間面の動きベクトル検出装置４０２におけるブロックマッチング処理対象として設定される。
【０１１１】
そして、縮小面参照フレーム３１１をａ倍したものに等しい中間面参照フレーム３２１において、縮小面動きベクトルＭＶｓを中心とした中間面サーチ範囲３２３を設定する。この中間面サーチ範囲３２３内の複数個の中間面参照ブロック３２２について、動きベクトル検出装置４０２でブロックマッチング処理を行い、最小ＳＡＤ値を呈する中間面参照ブロック位置を検出することにより、中間面動きベクトルＭＶｍを検出する。
【０１１２】
中間面の動きベクトル検出装置４０２では、ａ個の中間面ターゲットブロックのそれぞれについて、中間面サーチ範囲３２３内に設定したそれぞれの当該中間面ターゲットブロック用のサーチ範囲において、ブロックマッチング処理を実行する。これにより、それぞれの中間面ターゲットブロックについての動きベクトルの検出を行う。そして、それら複数個の動きベクトルのうち、最小のＳＡＤ値を呈する動きベクトルを、中間面における動きベクトル（中間面動きベクトル）ＭＶｍとして検出する。
【０１１３】
縮小面動きベクトルＭＶｓの算出が終了したら、次に、中間面ターゲットフレーム２２１をｂ倍したものに等しい基底面ターゲットフレーム２０１において、基底面ターゲットブロック２０２を設定する。
【０１１４】
図１９の例では、基底面の動きベクトル検出装置４０３も、動きベクトル検出装置４０１および４０２と同じ大きさのブロックを処理単位ブロックとしてブロックマッチング処理を行うようにしている。動きベクトル検出装置４０１および４０２と同じ大きさとは、［同じピクセル数＝同じ水平方向の画素数×同じ垂直方向のライン数］である。
【０１１５】
そして、前述したように、中間面動きベクトルＭＶｍは、処理単位ブロックの単位で得られる。従って、動きベクトル検出装置４０３で対象となる基底面ターゲットフレーム２０１における基底面ターゲットブロック２０２は、図１９に斜線で示すように、縮小面ターゲットブロックと同じ大きさのブロックのｂ倍の個数からなるものとして設定される。
【０１１６】
一方、中間面参照フレーム３２１をｂ倍したものに等しい基底面参照フレーム３０１において、縮小面動きベクトルＭＶｓと中間面動きベクトルＭＶｍとの合成ベクトルを中心とした基底面サーチ範囲３０３を設定する。当該基底面サーチ範囲３０３内の複数個の基底面参照ブロック３０２について、動きベクトル検出装置４０３で、上述したブロックマッチング処理を行い、最小ＳＡＤ値を呈する基底面参照ブロック位置を検出することにより、基底面動きベクトルＭＶｂを検出する。
【０１１７】
縮小面動きベクトルＭＶｓおよび中間面動きベクトルＭＶｍは、同じ大きさの処理単位ブロックの単位で得られる。このため、縮小面動きベクトルＭＶｓと中間面動きベクトルＭＶｍとの合成ベクトルを中心とした設定された基底面サーチ範囲３０３は、ｂ個の基底面ターゲットブロック２０２を含む領域よりも若干広い領域とされる。
【０１１８】
動きベクトル検出装置４０３では、ｂ個の基底面ターゲットブロック２０２について、基底面サーチ範囲３０３内に設定したそれぞれの基底面ターゲットブロックについてのサーチ範囲において、ブロックマッチング処理を実行する。これにより、それぞれの基底面ターゲットブロックについての動きベクトルの検出を行う。そして、それら複数個の動きベクトルのうち、最小のＳＡＤ値を呈する動きベクトルを、基底面における動きベクトル（基底面動きベクトル）ＭＶｂとして検出する。
【０１１９】
そして、求められた縮小面動きベクトルＭＶｓと、中間面動きベクトルＶＭｍと、基底面動きベクトルＶＭｂとの合成ベクトルとして、ローカル動きベクトルＬＭＶが検出される。このローカル動きベクトルＬＭＶは、基底面ターゲットフレーム２０１と基底面参照フレーム３０１との間における基底面ターゲットブロックについてのローカル動きベクトルである。
【０１２０】
以上のような階層化ブロックマッチング処理を、ターゲットブロックおよび参照ブロックを順次切り替えながら、ターゲットフレームおよび参照フレームの全領域において、順番に実行される。これにより、矩形処理で、ターゲットフレーム内に設定した複数個のターゲットブロック単位の複数個のローカル動きベクトルＬＭＶの全てが算出される。
【０１２１】
図２５は、本実施の形態の例で、矩形処理を実行する場合の、画像サイズに応じて、階層化ブロックマッチング処理を行う際の階層数と、縮小面の縮小倍率の設定の一例を示したものである。
例えば、１フレームが３２０画素×２４０画素までの画像データの場合には、１階層（つまり縮小面を使用しない）でブロックマッチング処理を行う。
１フレームが６４０画素×４８０画素の画像データの場合には、２階層でブロックマッチング処理を行い、縮小倍率として１／２を設定する。
１フレームが１．２Ｍピクセルまでの画素数の画像データの場合には、２階層でブロックマッチング処理を行い、縮小倍率として１／４を設定する。
１フレームが４．７Ｍピクセルまでの画素数の画像データの場合には、３階層でブロックマッチング処理を行い、縮小倍率として１／４と１／２を設定する。
１フレームが１９Ｍピクセルまでの画素数の画像データの場合には、３階層でブロックマッチング処理を行い、縮小倍率として１／４と１／４を設定する。
１フレームが７５Ｍピクセルまでの画素数の画像データの場合には、４階層でブロックマッチング処理を行い、縮小倍率として１／４と１／４と１／２を設定する。
さらに大きなサイズの画像データの場合には、４階層でブロックマッチング処理を行い、縮小倍率として１／４と１／４と１／４を設定する。
この図２５に示したような画像サイズに基づいた設定の変更が、矩形処理の場合には容易に行え、撮影する画像サイズに適した好適な動き検出及び動き補償が行える。なお、図２５に示した例は、一例であり、これらの例に限定されるものではない。
【０１２２】
＜リアルタイム処理の例＞
図２０は、リアルタイム処理が行われる状態を、時系列に示した図である。図２０において横軸は時間の経過である。この図２０に示したリアルタイム処理は、動画像の画像信号が１フレームずつ次々に供給される、動画像の画像信号の処理例である。
この例では、図２０に示すように、ターゲットブロックバッファ部１６１の基底面バッファ部におけるターゲットブロックを保持する４バンクのバッファＢＫＴＯ−Ａ〜ＢＫＴＯ−Ｄのうちの少なくとも３バンクを使用する。また、縮小面マッチング処理、基底面マッチング処理、動き補償ブロック転送、の３つの処理を時間方向に分割し、３個のマッチング処理時間（３ターゲットブロック分のマッチング処理時間）にわたってパイプライン化を行っている。
【０１２３】
この図２０に示す処理手法では、基底面バッファ部が備える４個のバンクバッファＢＫＴＯ−Ａ〜ＢＫＴＯ−Ｄのうちの、３個のバンクバッファＢＫＴＯ−Ａ〜ＢＫＴＯ−Ｃを用いるものとして説明する。
【０１２４】
この例においては、動画ＮＲ処理におけるブロックマッチング処理のパイプライン化においては、３個のマッチング処理時間ＭＡ，ＭＢ，ＭＣを設定する。これら３個のマッチング処理時間ＭＡ，ＭＢ，ＭＣのそれぞれは、１ターゲットブロックについて全てのマッチング処理内容を含み、３個のマッチング処理時間ＭＡ，ＭＢ，ＭＣは、３ターゲットブロック分のマッチング処理時間である。
【０１２５】
即ち、これらマッチング処理時間ＭＡ，ＭＢ，ＭＣのそれぞれ内における処理内容には、以下の処理の全てを含む。すなわち、画像メモリ４０からの縮小面ターゲットブロックおよび基底面ターゲットブロックの読み込み処理が行われる。また、画像メモリ４０からの縮小面マッチング処理範囲および基底面マッチング処理範囲の読み込みが行われる。また、縮小面マッチング処理、基底面マッチング処理、基底面ターゲットブロックおよび動き補償ブロックの画像重ね合わせ部１７への転送出力処理の各処理も行われる。信号処理内容としては、３個のマッチング処理時間ＭＡ，ＭＢ，ＭＣは全く同じものを備えている。
【０１２６】
この例では、３個のマッチング処理時間ＭＡ，ＭＢ，ＭＣのそれぞれ内における各処理による転送出力処理が、何番目のターゲットブロックについてのものであるかを、次のように制御する。
【０１２７】
即ち、この例においては、１つのターゲットブロックについての縮小面マッチング処理、基底面マッチング処理、動き補償ブロック転送処理、の３つの処理を、この３個のマッチング処理時間ＭＡ，ＭＢ，ＭＣに分散させて、順次に実行するようにする。そして、この３個のマッチング処理時間ＭＡ，ＭＢ，ＭＣを、ひとつの単位として繰り返し実行するようにする。
【０１２８】
例えば、ある一つのターゲットブロックＴＧＢについての縮小面マッチング処理は、マッチング処理時間ＭＡで行い、そのターゲットブロックＴＧＢについての基底面マッチング処理は、次のマッチング処理時間ＭＢで行う。そして、そのターゲットブロックＴＧＢについての動き補償ブロックの出力転送は、さらにその次のマッチング処理時間ＭＣで行う。
【０１２９】
そして、あるターゲットブロックについての縮小面マッチング処理を行っている間に、並行してひとつ前のターゲットブロックの基底面マッチング処理範囲の読み出しを行なう。また、あるターゲットブロックについての縮小面マッチング処理範囲の画像メモリ４０からの読み出しを行っている間に、ひとつ前のマッチング処理時間における基底面マッチング処理で求められた最終的な動きベクトルに基づいて生成された、２つ前のターゲットブロックについて動き補償ブロックの出力転送処理を行う。これにより、階層化ブロックマッチング処理のパイプライン処理化を実現している。図２０に斜線及び網掛けで示し矢印で接続して示した処理が、１フレームの画像データについての処理である。即ち、３つのマッチング処理時間を利用して、２つ前の処理時間ＭＡで書き込んだターゲットブロックについての動き補償ブロックと、基底面ターゲットブロックとが、重ね合わせ部に転送される。但し、図２０の例は、動きベクトルの算出としては、縮小面でのマッチング処理結果から動きベクトルを算出して、基底面でのマッチング処理で使用するケースと、基底面でのマッチング処理結果から動きベクトルを算出して、動き補償ブロックを使用するケースの２つの流れが示されている。
【０１３０】
［３．撮像画像のノイズ低減処理の流れ］
＜静止画撮影時＞
上述の構成の実施の形態の撮像装置において、静止画撮影時における画像の重ね合わせによるノイズ低減処理のフローチャートを、図２１および図２２に示す。この図２１および図２２のフローチャートの各ステップは、ＣＰＵ１およびこのＣＰＵ１により制御される動き検出・動き補償部１６のコントロール部１６５の制御の下に実行されると共に、画像重ね合わせ部１７により実行されるものである。
【０１３１】
まず、シャッターボタンが押下されると、この例の撮像装置においては、ＣＰＵ１による制御によって、高速で複数枚の画像の高速撮影が行われる。この例では、静止画撮影時に重ね合わすべきＭ枚（Ｍフレーム；Ｍは２以上の整数）の撮像画像データを高速で取り込み、画像メモリ４０に貼っておく（ステップＳ１）。
【０１３２】
次に、参照フレームは、画像メモリ４０に蓄積されているＭ枚の画像フレームのうちの時間的にＮ番目（Ｎは２以上の整数で、最大値はＭ）とするのであるが、コントロール部１６５は、その何番目とする値Ｎの初期値を、Ｎ＝２とする（ステップＳ２）。そして、次に、コントロール部１６５は、１枚目の画像フレームをターゲット画像（ターゲットフレーム）に設定し、Ｎ＝２枚目の画像を参照画像(参照フレーム)に設定する（ステップＳ３）。
【０１３３】
次に、コントロール部１６５は、ターゲットフレームにターゲットブロックを設定し（ステップＳ４）、動き検出・動き補償部１６において、画像メモリ部４から、ターゲットブロックバッファ部１６１へターゲットブロックを読み込み（ステップＳ５）、また、画像メモリ４０から、参照ブロックバッファ部１６２へマッチング処理範囲の画素データを読み込む（ステップＳ６）。
【０１３４】
次に、コントロール部１６５は、参照ブロックバッファ部１６２から、サーチ範囲内において参照ブロックを読み出し、マッチング処理部１６３で、階層化マッチング処理を行う。以上の処理をサーチ範囲内のすべての参照ベクトルで繰り返した後、高精度の基底面動きベクトルを出力する（ステップＳ７）。
【０１３５】
次に、コントロール部１６５は、以上のようにして検出された高精度の基底面動きベクトルにしたがって、参照ブロックバッファ部１６２から、検出した動きベクトル分の動きを補償した動き補償ブロックを読み出す（ステップＳ８）。そして、ターゲットブロックと同期して、後段の画像重ね合わせ部１７へ送る（ステップＳ９）。
【０１３６】
次に、ＣＰＵ１の制御に従って、画像重ね合わせ部１７は、ターゲットブロックと動き補償ブロックの重ね合わせを行い、重ね合わせたブロックのＮＲ画像データを画像メモリ部４に貼る。すなわち、画像重ね合わせ部１７は、重ね合わせたブロックのＮＲ画像データを画像メモリ４０に出力させて書き込ませる（ステップＳ１０）。
【０１３７】
次に、コントロール部１６５は、ターゲットフレーム内のすべてのターゲットブロックについてのブロックマッチングを終了したか否か判別する（ステップＳ１１）。この判別で、すべてのターゲットブロックについてブロックマッチングの処理が終了していないと判別したときには、ステップＳ４に戻って、ターゲットフレーム内の次のターゲットブロックを設定して、ステップＳ４〜ステップＳ１１までの処理を繰り返す。
【０１３８】
また、コントロール部１６５は、ステップＳ１１で、ターゲットフレーム内のすべてのターゲットブロックについてのブロックマッチングを終了したと判別したときには、ステップＳ１２に移る。ステップＳ１２では、重ね合わすべきすべての参照フレームについての処理が終了したか否か、つまり、Ｍ＝Ｎであるか否か判別する。
【０１３９】
ステップＳ１２で、Ｍ＝Ｎではないと判別したときには、Ｎ＝Ｎ＋１とする（ステップＳ１３）。次に、ステップＳ１０での重ね合わせにより生成されたＮＲ画像をターゲット画像（ターゲットフレーム）とし、また、Ｎ＝Ｎ＋１枚目の画像を参照画像（参照フレーム）とする（ステップＳ１４）。その後、ステップＳ４に戻って、このステップＳ４以降の処理を繰り返す。つまり、Ｍが３以上の場合は、全てのターゲットブロックにおいて重ね合わせを行った画像を次のターゲット画像とし、３枚目以降の画像を参照フレームとして、上記の処理を繰り返して行く。これをＭ枚目の重ね合わせが終わるまで繰り返す。そして、ステップＳ１２で、Ｍ＝Ｎであると判別したときには、この処理ルーチンを終了する。
【０１４０】
［５．階層化ブロックマッチング処理の流れの例］
次に、図１９および図２０に、動き検出・動き補償部１６での階層化ブロックマッチング処理の動作例のフローチャートを示す。
【０１４１】
なお、この図２３および図２４に示す処理の流れは、前述したマッチング処理部１６３、動き算出部１６４の処理例の流れとしての説明と、一部重複するものとなるが、この例の動作を、より理解し易くするために、説明するものである。
【０１４２】
はじめに、動き検出・動き補償部１６において、ターゲットブロックバッファ部１６１から、ターゲットブロックの縮小画、つまり、縮小面ターゲットブロックを読み込む（図２３のステップＳ７１）。次に、動きベクトル算出部１６４内で保持する、最小ＳＡＤ値Ｓminの初期値として、縮小面最小ＳＡＤ値の初期値を設定する（ステップＳ７２）。この縮小面最小ＳＡＤ値Ｓminの初期値としては、例えば、画素の差分の最大値が設定される。
【０１４３】
次に、マッチング処理部１６３では、縮小面サーチ範囲を設定する。設定した縮小サーチ範囲において、縮小面参照ベクトル（Ｖｘ／ｎ，Ｖｙ／ｎ：１／ｎは縮小倍率）を設定して、ＳＡＤ値を計算する縮小面参照ブロック位置を設定する（ステップＳ７３）。そして、設定した縮小面参照ブロックの画素データを、参照ブロックバッファ部１６２から読み込み（ステップＳ７４）、縮小面ターゲットブロックおよび縮小面参照ブロックの各画素データの差分の絶対値の総和、つまり、縮小面ＳＡＤ値を求める。求めた縮小面ＳＡＤ値を動きベクトル算出部１６４に送出する（ステップＳ７５）。
【０１４４】
動きベクトル算出部１６４では、マッチング処理部１６３で算出された縮小面ＳＡＤ値Ｓinと、保持されている縮小面最小ＳＡＤ値Ｓminとを比較する。そして、算出された縮小面ＳＡＤ値Ｓinが、それまで保持されている縮小面最小ＳＡＤ値Ｓminよりも小さいか否か判別する（ステップＳ７６）。
【０１４５】
このステップＳ７６で、算出された縮小面ＳＡＤ値Ｓinが縮小面最小ＳＡＤ値Ｓminより小さいと判別したときには、ステップＳ７７に進み、に保持される縮小面最小ＳＡＤ値Ｓminおよびその位置情報の更新がなされる。
【０１４６】
すなわち、ＳＡＤ値比較処理では、算出された縮小面ＳＡＤ値Ｓinが縮小面最小ＳＡＤ値Ｓminより小さい旨の比較結果の情報を出力する。すると、当該算出された縮小面ＳＡＤ値Ｓinおよびその位置情報（縮小面参照ベクトル）を、新たな縮小面最小ＳＡＤ値Ｓminの情報として、更新させる。
【０１４７】
ステップＳ７７の後には、ステップＳ７８に進む。また、ステップＳ７６で、算出された縮小面ＳＡＤ値Ｓinが縮小面最小ＳＡＤ値Ｓminより大きいと判別したときには、ステップＳ７７の保持情報の更新処理は行わずにステップＳ７８に進む。
【０１４８】
ステップＳ７８では、マッチング処理部１６３は、縮小面サーチ範囲の全ての縮小面参照ブロックの位置（縮小面参照ベクトル）でマッチング処理を終了したか否か判別する。その判別で、未だ、縮小面サーチ範囲においては、未処理の縮小面参照ブロックがあると判別したときには、ステップＳ７３に戻り、前述したステップＳ７３以降の処理を繰り返す。
【０１４９】
また、マッチング処理部１６３は、ステップＳ７８で、縮小面サーチ範囲の全ての縮小面参照ブロックの位置（縮小面参照ベクトル）でマッチング処理を終了したと判別したときには、次の処理が行われる。すなわち、縮小面最小ＳＡＤ値Ｓminの位置情報（縮小面動きベクトル）を受け取る。そして、受け取った縮小面動きベクトルを、縮小倍率の逆数倍、すなわち、ｎ倍したベクトルが、基底面ターゲットフレームにおいて指し示す位置座標を中心とした位置に基底面ターゲットブロックを設定する。さらに、ｎ倍したベクトルが指し示す位置座標を中心とした比較的狭い範囲として、基底面サーチ範囲を、基底面ターゲットフレームに設定する（ステップＳ７９）。そして、ターゲットブロックバッファ部１６１から、基底面ターゲットブロックの画素データを読み込む（ステップＳ８０）。
【０１５０】
そして、次に、動きベクトル算出部１６４に保持された最小ＳＡＤ値Ｓminの初期値として、基底面最小ＳＡＤ値の初期値を設定する（図２０のステップＳ８１）。この基底面最小ＳＡＤ値Ｓminの初期値としては、例えば、画素の差分の最大値が設定される。
【０１５１】
次に、マッチング処理部１６３では、ステップＳ７９で設定した基底面縮小サーチ範囲において、基底面参照ベクトル（Ｖｘ，Ｖｙ）を設定して、ＳＡＤ値を計算する基底面参照ブロック位置を設定する（ステップＳ８２）。そして、設定した基底面参照ブロックの画素データを、参照ブロックバッファ部１６２から読み込む（ステップＳ８３）。そして、基底面ターゲットブロックおよび基底面参照ブロックの各画素データの差分の絶対値の総和、つまり、基底面ＳＡＤ値を求め、求めた基底面ＳＡＤ値を動きベクトル算出部１６４に送出する（ステップＳ８４）。
【０１５２】
動きベクトル算出部１６４では、マッチング処理部１６３で算出された基底面ＳＡＤ値Ｓinと、保持されている基底面最小ＳＡＤ値Ｓminとを比較する。その比較で、算出された基底面ＳＡＤ値Ｓinが、それまで保持されている基底面最小ＳＡＤ値Ｓminよりも小さいか否か判別する（ステップＳ８５）。
【０１５３】
このステップＳ８５で、算出された基底面ＳＡＤ値Ｓinが基底面最小ＳＡＤ値Ｓminより小さいと判別したときには、ステップＳ８６に進み、保持される基底面最小ＳＡＤ値Ｓminおよびその位置情報の更新がなされる。
【０１５４】
すなわち、算出された基底面ＳＡＤ値Ｓinが基底面最小ＳＡＤ値Ｓminより小さい旨の比較結果の情報を出力する。すると、当該算出された基底面ＳＡＤ値Ｓinおよびその位置情報（参照ベクトル）を、新たな基底面最小ＳＡＤ値Ｓminの情報とし、新たな基底面ＳＡＤ値Ｓinおよびその位置情報に更新する。
【０１５５】
ステップＳ８６の後には、ステップＳ８７に進む。また、ステップＳ８５で、算出された基底面ＳＡＤ値Ｓinが基底面最小ＳＡＤ値Ｓminより大きいと判別したときには、ステップＳ８６の保持情報の更新処理は行わずにステップＳ８７に進む。
【０１５６】
ステップＳ８７では、マッチング処理部１６３は、基底面サーチ範囲の全ての基底面参照ブロックの位置（基底面参照ベクトル）でマッチング処理を終了したか否か判別する。その判別で、未だ、基底面サーチ範囲においては、未処理の基底面参照ブロックがあると判別したときには、ステップＳ８２に戻り、前述したステップＳ８２以降の処理を繰り返す。
【０１５７】
また、マッチング処理部１６３は、ステップＳ８７で、基底面サーチ範囲の全ての基底面参照ブロックの位置（基底面参照ベクトル）でマッチング処理を終了したと判別したときには、次の処理が行われる。すなわち、基底面最小ＳＡＤ値Ｓminの位置情報（基底面動きベクトル）を受け取り、基底面ＳＡＤ値を保持させるようにする（ステップＳ８８）。
以上で、１枚の参照フレームについてのこの例のブロックマッチング処理を終了する。
【０１５８】
なお、上述の実施の形態は、この発明による画像処理装置を撮像装置に適用した場合であるが、この発明は、撮像装置に限られるわけではなく、種々の画像処理装置に適用可能である。
【０１５９】
また、上述の実施の形態は、ブロックマッチング手法を用いて、画像の重ね合わせによるノイズ低減処理をする場合に、この発明を適用した場合であるが、これに限られるものではない。即ち。画像メモリに書き込まれた画像データを読み出して、動き検出などを行う画像処理装置の全てに適用可能である。
【符号の説明】
【０１６０】
１…ＣＰＵ（システムＣＰＵ）、１６…動き検出・動き補償部、１７…画像重ね合わせ部、３１…動き検出・動き補償部、１６ａ…内部メモリ（バッファ）、３７…解像度変換部、４０…画像メモリ（大容量メモリ）、４１…１Ｖ前フレーム記憶部、４２…２Ｖ前フレーム記憶部、１００…ターゲット画像（ターゲットフレーム）、１０１…参照画像（参照フレーム）、１０２…ターゲットブロック、１０４…動きベクトル１０６…サーチ範囲、１０７…参照ベクトル、１０８…参照ブロック、１６１…ターゲットブロックバッファ部、１６２…参照ブロックバッファ部、１６３…マッチング処理部、１６４…動きベクトル算出部、１６５…コントロール部、１７１…加算率計算部、１７２…加算部、１６５１…プログラマブルＣＰＵ、１６５２…リアルタイムコントロール部（サブＣＰＵ）、１６５３，１６５４…汎用命令セット部
【図１】
2012142864.tif 000003
【図２】
2012142864.tif 000004
【図３】
2012142864.tif 000005
【図４】
2012142864.tif 000006
【図５】
2012142864.tif 000007
【図６】
2012142864.tif 000008
【図７】
2012142864.tif 000009
【図８】
2012142864.tif 000010
【図９】
2012142864.tif 000011
【図１０】
2012142864.tif 000012
【図１１】
2012142864.tif 000013
【図１２】
2012142864.tif 000014
【図１３】
2012142864.tif 000015
【図１４】
2012142864.tif 000016
【図１５】
2012142864.tif 000017
【図１６】
2012142864.tif 000018
【図１７】
2012142864.tif 000019
【図１８】
2012142864.tif 000020
【図１９】
2012142864.tif 000021
【図２０】
2012142864.tif 000022
【図２１】
2012142864.tif 000023
【図２２】
2012142864.tif 000024
【図２３】
2012142864.tif 000025
【図２４】
2012142864.tif 000026
【図２５】
2012142864.tif 000027