(57)【要約】【課題】撮像された画像をより自然に、かつ、鮮明に処理する。【解決手段】動きベクトル計算部１２は、複数の入力画像のそれぞれより各画素単位で動きベクトルを抽出し、オクルージョン処理部１４は、抽出された動きベクトルに基づいて、複数の入力画像のそれぞれの画素の処理対象画像上の画素に対しての直接動きベクトルを生成し、画像合成部１５は、複数の入力画像のそれぞれの画素の画素値を、直接動きベクトルに基づいて、前記複数の入力画像を合成する。本発明は、ビデオカメラに適用することができる。【選択図】図１
2008042659.tif 000002
【特許請求の範囲】
【請求項１】
複数の入力画像のそれぞれより各画素単位で動きベクトルを抽出する動きベクトル抽出手段と、
前記動きベクトル抽出手段により抽出された動きベクトルに基づいて、前記複数の入力画像のそれぞれの画素の処理対象画像上の画素に対しての直接動きベクトルを生成する直接動きベクトル生成手段と、
前記複数の入力画像のそれぞれの画素の画素値を、前記直接動きベクトル生成手段により生成された直接動きベクトルに基づいて、前記複数の入力画像を合成する合成手段と
を含む画像処理装置。
【請求項２】
前記合成手段は、前記複数の入力画像のそれぞれの画素の画素値を、前記直接動きベクトル生成手段により生成された直接動きベクトルに基づいて、前記処理対象の画像の各画素の画素値に重畳することにより前記複数の入力画像を合成する
請求項１に記載の画像処理装置。
【請求項３】
前記動きベクトル生成手段は、
前記動きベクトル抽出手段により抽出された動きベクトルに基づいて、前記複数の入力画像における遮蔽領域を検出する遮蔽領域検出手段と、
前記動きベクトル抽出手段により抽出された動きベクトルに基づいて、前記複数の入力画像における露出領域を検出する露出部検出手段と、
前記遮蔽領域検出手段により検出された遮蔽領域の情報と、前記露出領域検出手段により検出された露出領域の情報とに基づいて、前記動きベクトル抽出手段により抽出された動きベクトルを用いて、前記露出領域を考慮した遮蔽領域外の前記直接動きベクトル、および、遮蔽領域の前記直接動きベクトルを計算する計算手段とを含む
請求項１に記載の画像処理装置。
【請求項４】
前記露出領域検出手段は、前記動きベクトル抽出手段により抽出された動きベクトルに基づいて、前記現在の画像における画素のうち、動きベクトルの終点が、過去の画像上に存在しない画素を前記露出領域として検出する
請求項３の画像処理装置。
【請求項５】
前記露出領域検出手段は、
前記画像毎に、前記露出領域として検出された画素について、前記画像のフレーム番号を代入したプロットマップを生成するプロットマップ生成手段と、
前記プロットマップを、過去の画像より順次合成し、前記現在の画像における画素ごとに、露出が発生したフレーム番号が代入されている露出部オクルージョン距離マップを生成する露出部オクルージョン距離マップ生成手段とを含む
第４の画像処理装置。
【請求項６】
前記遮蔽領域検出手段は、
前記現在の画像の画素の反時間方向の動きベクトルが指す、過去の画像の画素の中で、過去の画像の動きベクトルの内、少なくとも2個以上の動きベクトルの終点として設定されている画素を遮蔽領域として検出する
請求項３に記載の画像処理装置。
【請求項７】
前記遮蔽領域検出手段は、
前記遮蔽領域として検出した画素をプロットした遮蔽マップを生成する遮蔽マップ生成手段をさらに含む
請求項６に記載の画像処理装置。
【請求項８】
複数の入力画像のそれぞれより各画素単位で動きベクトルを抽出する動きベクトル抽出ステップと、
前記動きベクトル抽出ステップの処理により抽出された動きベクトルに基づいて、前記複数の入力画像のそれぞれの画素の処理対象画像上の画素に対しての直接動きベクトルを生成する直接動きベクトル生成ステップと、
前記複数の入力画像のそれぞれの画素の画素値を、前記直接動きベクトル生成ステップの処理により生成された直接動きベクトルに基づいて、前記複数の入力画像を合成する合成ステップと
を含む画像処理方法。
【請求項９】
複数の入力画像のそれぞれより各画素単位で動きベクトルを抽出する動きベクトル抽出ステップと、
前記動きベクトル抽出ステップの処理により抽出された動きベクトルに基づいて、前記複数の入力画像のそれぞれの画素の処理対象画像上の画素に対しての直接動きベクトルを生成する直接動きベクトル生成ステップと、
前記複数の入力画像のそれぞれの画素の画素値を、前記直接動きベクトル生成ステップの処理により生成された直接動きベクトルに基づいて、前記複数の入力画像を合成する合成ステップと
を含む処理をコンピュータに実行させるプログラム。
【請求項１０】
請求項９に記載のプログラムが格納されたプログラム格納媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置および方法、プログラム、並びにプログラム格納媒体に関し、特に、撮像された画像をより自然に、かつ、鮮明に処理できるようにした画像処理装置および方法、プログラム、並びにプログラム格納媒体に関する。
【背景技術】
【０００２】
デジタルスチルカメラ、デジタルビデオカメラに用いられる撮像素子は、入射光が少なくなるとS/N（Signal to Noise ratio）が悪くなる。ノイズはランダムノイズと固定パターンノイズ(FPN)に分けられるが、ランダムノイズは位置に依存しないため、複数枚の画像を加算することで相殺し、削減することが可能である。
【０００３】
しかしながら、複数枚の画像を加算すると、手ブレや被写体ブレにより加算結果画像がぼけてしまうという問題がある。そこで、画像の動きベクトルを求めて、その動きに合わせて加算することで、手ブレや被写体ブレを伴わずノイズを軽減する方法が考えられる。
【０００４】
その場合に問題となるのが、画像内の遮蔽と露出である。画像における遮蔽領域とは、例えば、前景が背景を覆うような動きをする領域で、露出領域とは、背景が前景から出てくる領域である。
【０００５】
画像全体が同じ動きをしていれば遮蔽領域と露出領域は発生しないが、局所的に動きが異なるシーンの場合、遮蔽領域と露出領域が発生する。遮蔽領域と露出領域のいずれの場合も、動きベクトルに従って加算すると、画像内に矛盾が生じ、不自然な画像となってしまう。
【０００６】
遮蔽領域と露出領域を検出する方法の一例として、局所領域の輝度の標準偏差を各フレームで求め、動きベクトルをトレースしながら標準偏差の値の変化を探し、フレームごとの変化の有無で遮蔽領域や露出領域を検出するものがBen-Ezraらによって提案されている。
【０００７】
また、前後のフレームを使うことで、遮蔽領域、無遮蔽領域、出現領域の3つの領域に分類し、遮蔽領域は1フレーム過去のフレームから、出現領域は1フレーム未来のフレームから補間する方法が開示されている（特許文献１参照）。
【０００８】
【特許文献１】特表２００５−５１７２５１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、Ben-Ezraらによる遮蔽領域や露出領域の検出方法では、標準偏差が変化している部分を検出しているが、どの程度の変化があれば遮蔽領域や露出領域であると判定できるのかの基準が示されていないので、必ずしも適切に遮蔽領域や露出領域を検出できないことがあった。
【００１０】
また、特許文献１に開示の方法では、前後フレームの領域を分類することで、補間する時間的方向を変える手段を提示しているだけであり、複数枚のフレームを加算する際の遮蔽領域や出現領域について言及はしていなかった。
【００１１】
本発明はこのような状況に鑑みてなされたものであり、特に、撮像された画像をより自然に、かつ、鮮明に処理できるようにするものである。
【課題を解決するための手段】
【００１２】
本発明の一側面の画像処理装置は、複数の入力画像のそれぞれより各画素単位で動きベクトルを抽出する動きベクトル抽出手段と、前記動きベクトル抽出手段により抽出された動きベクトルに基づいて、前記複数の入力画像のそれぞれの画素の処理対象画像上の画素に対しての直接動きベクトルを生成する直接動きベクトル生成手段と、前記複数の入力画像のそれぞれの画素の画素値を、前記直接動きベクトル生成手段により生成された直接動きベクトルに基づいて、前記複数の入力画像を合成する合成手段とを含む。
【００１３】
前記合成手段には、前記複数の入力画像のそれぞれの画素の画素値を、前記直接動きベクトル生成手段により生成された直接動きベクトルに基づいて、前記処理対象の画像の各画素の画素値に重畳することにより前記複数の入力画像を合成させるようにすることができる。
【００１４】
前記動きベクトル生成手段には、前記動きベクトル抽出手段により抽出された動きベクトルに基づいて、前記複数の入力画像における遮蔽領域を検出する遮蔽領域検出手段と、前記動きベクトル抽出手段により抽出された動きベクトルに基づいて、前記複数の入力画像における露出領域を検出する露出部検出手段と、前記遮蔽領域検出手段により検出された遮蔽領域の情報と、前記露出領域検出手段により検出された露出領域の情報とに基づいて、前記動きベクトル抽出手段により抽出された動きベクトルを用いて、前記露出領域を考慮した遮蔽領域外の前記直接動きベクトル、および、遮蔽領域の前記直接動きベクトルを計算する計算手段とを含ませるようにすることができる。
【００１５】
前記露出領域検出手段には、前記動きベクトル抽出手段により抽出された動きベクトルに基づいて、前記現在の画像における画素のうち、動きベクトルの終点が、過去の画像上に存在しない画素を前記露出領域として検出させるようにすることができる。
【００１６】
前記露出領域検出手段には、前記画像毎に、前記露出領域として検出された画素について、前記画像のフレーム番号を代入したプロットマップを生成するプロットマップ生成手段と、前記プロットマップを、過去の画像より順次合成し、前記現在の画像における画素ごとに、露出が発生したフレーム番号が代入されている露出部オクルージョン距離マップを生成する露出部オクルージョン距離マップ生成手段とを含ませるようにすることができる。
【００１７】
前記遮蔽領域検出手段には、前記現在の画像の画素の反時間方向の動きベクトルが指す、過去の画像の画素の中で、過去の画像の動きベクトルの内、少なくとも2個以上の動きベクトルの終点として設定されている画素を遮蔽領域として検出させるようにすることができる。
【００１８】
前記遮蔽領域検出手段には、前記遮蔽領域として検出した画素をプロットした遮蔽マップを生成する遮蔽マップ生成手段をさらに含ませるようにすることができる。
【００１９】
本発明の一側面の画像処理方法は、複数の入力画像のそれぞれより各画素単位で動きベクトルを抽出する動きベクトル抽出ステップと、前記動きベクトル抽出ステップの処理により抽出された動きベクトルに基づいて、前記複数の入力画像のそれぞれの画素の処理対象画像上の画素に対しての直接動きベクトルを生成する直接動きベクトル生成ステップと、前記複数の入力画像のそれぞれの画素の画素値を、前記直接動きベクトル生成ステップの処理により生成された直接動きベクトルに基づいて、前記複数の入力画像を合成する合成ステップとを含む。
【００２０】
本発明の一側面のプログラムは、複数の入力画像のそれぞれより各画素単位で動きベクトルを抽出する動きベクトル抽出ステップと、前記動きベクトル抽出ステップの処理により抽出された動きベクトルに基づいて、前記複数の入力画像のそれぞれの画素の処理対象画像上の画素に対しての直接動きベクトルを生成する直接動きベクトル生成ステップと、前記複数の入力画像のそれぞれの画素の画素値を、前記直接動きベクトル生成ステップの処理により生成された直接動きベクトルに基づいて、前記複数の入力画像を合成する合成ステップとを含む処理をコンピュータに実行させる。
【００２１】
本発明の一側面のプログラム格納媒体のプログラムは、請求項９に記載のプログラムである。
【００２２】
本発明の一側面の画像処理装置および方法、並びにプログラムにおいては、複数の入力画像のそれぞれより各画素単位で動きベクトルが抽出され、抽出された動きベクトルに基づいて、前記複数の入力画像のそれぞれの画素の処理対象画像上の画素に対しての直接動きベクトルが生成され、前記複数の入力画像のそれぞれの画素の画素値を、直接動きベクトルに基づいて、前記複数の入力画像が合成される。
【００２３】
本発明の画像処理装置は、独立した装置であっても良いし、画像処理を行うブロックであっても良い。
【発明の効果】
【００２４】
本発明の一側面によれば、撮像された画像をより自然に、かつ、鮮明に処理することが可能となる。
【発明を実施するための最良の形態】
【００２５】
以下に本発明の実施の形態を説明するが、本明細書に記載の発明と、発明の実施の形態との対応関係を例示すると、次のようになる。この記載は、本明細書に記載されている発明をサポートする実施の形態が本明細書に記載されていることを確認するためのものである。従って、発明の実施の形態中には記載されているが、発明に対応するものとして、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その発明に対応するものではないことを意味するものではない。逆に、実施の形態が発明に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その発明以外の発明には対応しないものであることを意味するものでもない。
【００２６】
さらに、この記載は、本明細書に記載されている発明の全てを意味するものではない。換言すれば、この記載は、本明細書に記載されている発明であって、この出願では請求されていない発明の存在、すなわち、将来、分割出願されたり、補正により出現、追加される発明の存在を否定するものではない。
【００２７】
即ち、本発明の一側面の画像処理装置は、複数の入力画像のそれぞれより各画素単位で動きベクトルを抽出する動きベクトル抽出手段（例えば、図１の動きベクトル計算部１２）と、前記動きベクトル抽出手段により抽出された動きベクトルに基づいて、前記複数の入力画像のそれぞれの画素の処理対象画像上の画素に対しての直接動きベクトルを生成する直接動きベクトル生成手段（例えば、図１のオクルージョン処理部１４）と、前記複数の入力画像のそれぞれの画素の画素値を、前記直接動きベクトル生成手段により生成された直接動きベクトルに基づいて、前記複数の入力画像を合成する合成手段（例えば、図１の画像合成部１５）とを含む。
【００２８】
前記合成手段（例えば、図１の画像合成部１５）には、前記複数の入力画像のそれぞれの画素の画素値を、前記直接動きベクトル生成手段により生成された直接動きベクトルに基づいて、前記処理対象の画像の各画素の画素値に重畳することにより前記複数の入力画像を合成させるようにすることができる。
【００２９】
前記動きベクトル生成手段（例えば、図１のオクルージョン処理部１４）には、前記動きベクトル抽出手段により抽出された動きベクトルに基づいて、前記複数の入力画像における遮蔽領域を検出する遮蔽領域検出手段（例えば、図２の遮蔽検出部３１）と、前記動きベクトル抽出手段により抽出された動きベクトルに基づいて、前記複数の入力画像における露出領域を検出する露出部検出手段（例えば、図２の露出検出部３２）と、前記遮蔽領域検出手段により検出された遮蔽領域の情報と、前記露出領域検出手段により検出された露出領域の情報とに基づいて、前記動きベクトル抽出手段により抽出された動きベクトルを用いて、前記露出領域を考慮した遮蔽領域外の前記直接動きベクトル、および、遮蔽領域の前記直接動きベクトルを計算する計算手段（例えば、図２のオクルージョン処理部１４）とを含ませるようにすることができる。
【００３０】
前記露出領域検出手段（例えば、図２の露出検出部３２）には、前記動きベクトル抽出手段により抽出された動きベクトルに基づいて、前記現在の画像における画素のうち、動きベクトルの終点が、過去の画像上に存在しない画素を前記露出領域として検出させるようにすることができる。
【００３１】
前記露出領域検出手段（例えば、図２の露出検出部３２）には、前記画像毎に、前記露出領域として検出された画素について、前記画像のフレーム番号を代入したプロットマップを生成するプロットマップ生成手段（例えば、図１２のプロットマップ生成部９１）と、前記プロットマップを、過去の画像より順次合成し、前記現在の画像における画素ごとに、露出が発生したフレーム番号が代入されている露出部オクルージョン距離マップを生成する露出部オクルージョン距離マップ生成手段（例えば、図１２のオクルージョン距離マップ生成部９５）とを含ませるようにすることができる。
【００３２】
前記遮蔽領域検出手段（例えば、図２の遮蔽検出部３１）には、前記現在の画像の画素の反時間方向の動きベクトルが指す、過去の画像の画素の中で、過去の画像の動きベクトルの内、少なくとも2個以上の動きベクトルの終点として設定されている画素を遮蔽領域として検出させるようにすることができる。
【００３３】
前記遮蔽領域検出手段（例えば、図２の遮蔽検出部３１）には、前記遮蔽領域として検出した画素をプロットした遮蔽マップを生成する遮蔽マップ生成手段（例えば、図１１の遮蔽マップ管理部６２）をさらに含ませるようにすることができる。
【００３４】
本発明の一側面の画像処理方法およびプログラムは、複数の入力画像のそれぞれより各画素単位で動きベクトルを抽出する動きベクトル抽出ステップ（例えば、図１４のステップＳ３）と、前記動きベクトル抽出ステップの処理により抽出された動きベクトルに基づいて、前記複数の入力画像のそれぞれの画素の処理対象画像上の画素に対しての直接動きベクトルを生成する直接動きベクトル生成ステップ（例えば、図１４のステップＳ５）と、前記複数の入力画像のそれぞれの画素の画素値を、前記直接動きベクトル生成ステップの処理により生成された直接動きベクトルに基づいて、前記複数の入力画像を合成する合成ステップ（例えば、図１４のステップＳ６）とを含む。
【００３５】
図１を参照して、本発明を適用した画像処理システムの構成について説明する。
【００３６】
図１は、複数の入力画像を合成することにより、ノイズリダクションを実現する（画像のノイズを除去する）画像処理システムの構成例を示すブロック図である。
【００３７】
画像処理システムは、撮像部１、ノイズ除去装置２、および画像表示部３より構成されている。ノイズ除去装置２は、撮像部１により撮像された複数の画像を合成することにより、画像よりノイズを除去して、画像表示部３に出力して表示させる。
【００３８】
画像バッファ１１は、CCD（Charge Coupled Devices）またはCMOS（Complementary Metal Oxide Semiconductor）などの撮像素子からなる撮像部１により撮像された画像を画像列として一時的に蓄え、動きベクトル計算部１２および画像合成部１５に画像を供給する。
【００３９】
動きベクトル計算部１２は、画像バッファ１１に蓄積されている画像について、ブロックマッチングや勾配法などにより画素単位で動きベクトルを求め、動きベクトルバッファ１３に格納する。
【００４０】
オクルージョン処理部１４は、動きベクトルバッファ１３に格納された動きベクトルに基づいて、オクルージョンが発生している動きベクトルのうち、遮蔽領域または露出領域に属する画素の動きベクトルを考慮して、処理対象となる画像の各画素と、ノイズ除去の用いる複数の各画像の画素との直接の対応関係を示す直接動きベクトルを生成し、画像合成部１５に供給する。
【００４１】
画像合成部１５は、遮蔽判定部１５ａ、合成部１５ｂ、およびバッファ１５ｃを含んでおり、オクルージョン処理部１４より供給されてくる直接動きベクトル（遮蔽部直接動きベクトルを含む）と、画像バッファ１１に蓄積されている複数の画像を用いて、合成画像を生成し、CRT（Cathode Ray Tube）やLCD（Liquid Crystal Display）などからなる画像表示部３に出力して表示させる。
【００４２】
次に、図２を参照して、オクルージョン処理部１４の構成例について説明する。オクルージョン処理部１４は、遮蔽検出部３１、露出検出部３２と直接動きベクトル計算部３３より構成されている。
【００４３】
遮蔽検出部３１は、動きベクトルバッファ１３に格納されている動きベクトルに基づいて、画像バッファ１１に蓄積されている各画像における画素単位で遮蔽領域が発生した画素をプロットし、遮蔽マップを生成する。
【００４４】
露出検出部３２は、動きベクトルバッファ１３に格納されている動きベクトルに基づいて、露出領域が発生した画像のフレーム番号と、その画素位置とを示すオクルージョン距離マップを生成する。
【００４５】
直接動きベクトル計算部３３は、動きベクトルバッファ１３に格納されている動きベクトル、遮蔽マップ、およびオクルージョン距離マップに基づいて、過去の画像よりフレーム単位で利用可能な動きベクトルを示す、直接動きベクトルを計算し、画像合成部１５に出力する。
【００４６】
ここで、遮蔽領域および露出領域の概念について説明する。まず、図３を参照して、遮蔽領域の概念について説明する。
【００４７】
遮蔽検出部３１は、現在の画像（ノイズ除去を実行する際の基準となる画像）上の画素のうち、過去の画像の複数の画素から指される画素の領域を遮蔽領域として検出する（抽出する）。すなわち、遮蔽領域とは、画像内の特定の画素の動きが、その他の領域の画素の動きと異なり、その特定の領域の画素が別の領域の画素に対して重なるような動きを示す場合に発生する。換言すれば、遮蔽領域の画素は、前景の画素と背景の画素とのいずれからも時間方向の動きベクトルにおける終点となる画素の領域である。つまり、図３においては、白地部Ｚ１の前景が右方向に移動することにより、背景を遮蔽する斜線部Ｚ１’が遮蔽領域である。
【００４８】
より詳細には、図４で示されるように、前景が背景の動きとは異なる動きをするような場合、遮蔽領域は発生する。図４においては、図中の白地部で示される背景Ｂが左方向に移動し、円状の画像からなる前景Ｆ１が前景Ｆ２で示されるように右上方向に移動しており、背景Ｂを構成する画素と、前景Ｆ２を構成する画素とが、いずれも、一点鎖線で囲まれている三日月領域Ｆ２’の同一の画素に移動するような動きを示す。結果として、三日月領域は、複数の動きベクトルの終点として指される画素の集合領域であると言える。この複数の画素における動きベクトルの終点となる画素を抽出することで遮蔽領域を検出することができる。
【００４９】
このようにして検出された遮蔽マップは、例えば、図５で示されるように可視化して表現することができる。図５における遮蔽マップにおいては、過去の画像において、見えていたが、現在の画像（0フレーム目の画像）で見えない領域（遮蔽領域）が白色で示され、過去から現在に至るいずれの画像においても見えなかったままの領域、または見えている状態のままの領域が黒色で示されている。図５においては、後述する図７のオクルージョン距離マップを可視化した画像における場合と同様に、図中の左側で星型の前景画像Ｚ１１が矢印Ａで示される左方向に移動し、図中の右側で方形状の前景画像Ｂが矢印Ｂで示される反時計回りに回転している場合に生じる遮蔽領域を示している。
【００５０】
次に、図６を参照して、露出領域の概念を説明する。図６における斜線部Ｚ１’は、白地部Ｚ１の円が右方向に移動することによって発生した露出領域である。露出検出部３２は、各画像における露出領域を検出してプロットマップを生成すると共に、過去の画像におけるそれぞれのプロットマップを利用して、過去の画像のうち、どのフレーム番号に対応する画像で最初に露出を検出したかを示すオクルージョン距離マップを生成している。
【００５１】
オクルージョン距離マップは、例えば、図７で示されるように可視化して表現することができる。この例では、星型と正方形の領域が、矢印方向に回転しながら移動している。露出部オクルージョン距離マップは、露出領域を示した濃淡画像で、輝度値によって、露出されたフレーム番号が分かる。図７では、図５と同様に、図中の左側に星型の前景画像Ｚ１１が矢印Ａで示されるように左方向に移動し、図中の右側で方形状の前景画像Ｚ１２が矢印Ｂで示されるように反時計回りに回転している場合に生じる露出領域を、露出が始まるフレーム単位で輝度値を変えて表現している。すなわち、領域によって輝度値が変化していることから、形状の近くに来るほど、露出を開始したタイミング（露出を開始したフレーム番号の画像）が近いことが示されている。
【００５２】
より詳細には、プロットマップは、各画像の画素単位の動きベクトルの終点の画素をプロットしたマップである。このプロットマップは、過去から順に作成されてくることになるが、露出領域が発生すると、過去の画像の画素における動きベクトルの終点の画素として指定されない画素が発生する領域が出てくる。すなわち、図８で示されるように、背景Ｂが図中の左方向に動き、前景Ｆ１が右斜め上に動く場合、背景Ｂの大半の領域の画素は、過去の画像（前のフレーム）の画素の動きベクトルの終点として設定される。しかしながら、図中の一点鎖線で示される三日月状の領域Ｆ１’は、過去の画像の画素における動きベクトルの終点として設定されない画素からなる領域である。すなわち、この一点鎖線で示される三日月状の領域Ｆ１’が、過去フレームから過去の画像の画素における動きベクトルの終点として設定されない画素からなる露出領域である。
【００５３】
露出領域は、画像毎に（フレーム毎に）異なるので、今現在の画像中の画素において、過去の画像からみて、露出が開始されるフレーム番号を画素値とした画像を生成すれば、何フレーム目にその領域が露出されるかを特定できる。
【００５４】
そこで、画像毎に露出領域として検出された画素に、その画像のフレーム番号をプロットしたものを、プロットマップと称するものとする。ただし、このプロットマップは、画素単位で動きベクトルの終点として設定されているか否かを単純に比較するのみの処理であることから離散的に領域が求められることになるため、計算時にサンプリングノイズが発生する恐れがある。そこで、プロットマップの生成に際しては、画素単位で、孤立領域除去処理が掛けられ、計算により発生するノイズ除去が行われる。この孤立領域除去処理としては、例えば、メディアンなどが施される。
【００５５】
オクルージョン距離マップは、複数の画像におけるプロットマップから生成される。すなわち、プロットマップが、画像毎のにおける露出領域を示す情報であるのに対して、オクルージョン距離マップは、現在の画像における画素単位の領域が、過去における画像のうち、どのフレーム番号の画像で露出を開始したかを示すものである。
【００５６】
例えば、図９で示されるように、円状の前景画像が、状態Ｃ１乃至Ｃ３に画像単位（フレーム単位）で、左下から右上に移動するものとすると、図のように露出領域が移動していく。したがって、隣接する画像間（隣接フレーム間）の露出領域は、新たな画像における新しい露出領域で上書されていくことになる。そして、領域ごとに露出を開始したフレーム番号に対応して輝度が設定されることにより、図１０で示されるようなオクルージョン距離マップが生成されることになる。すなわち、図１０においては、状態Ｃ１からＣ２に変化する際に発生した露出領域Ｃ１１が三日月状に表示され、状態Ｃ２からＣ３に変化する際に発生した露出領域Ｃ１２が、やはり三日月状に表示される。
【００５７】
次に、図１１を参照して、遮蔽検出部３１の詳細な構成例について説明する。
【００５８】
終点計算部５１は、処理対象となる画像（今現在の画像）における各画素の動きベクトルにおける終点となる画素を計算し、計算結果を遮蔽判定部５２に供給する。遮蔽判定部５２は、各画素における動きベクトルの終点位置の情報を、中間フラグマップバッファ５４の情報と比較して、いずれか別の画素から終点位置として指定されているか否かを判定し、判定結果と共に処理対象の画素の情報（画素情報）を中間フラグマップ管理部５３、中間位置マップ管理部５５、中間ベクトル読出部５７、および直前フレームベクトル読出部５９に供給する。中間フラグマップ管理部５３は、遮蔽判定部５２の判定結果および画素情報に基づいて、いずれかの画素の動きベクトルの終点位置として設定されている状態であるか否かを示すフラグを蓄積する中間フラグマップバッファ５４を管理する。
【００５９】
中間位置マップ管理部５５は、遮蔽判定部５２の判定結果および画素情報、または、比較部６１の比較結果に基づいて、動きベクトルの終点位置として設定している画素を蓄積する中間位置マップを蓄積する中間位置マップバッファ５６を管理する。
【００６０】
中間ベクトル読出部５７は、遮蔽判定部５２の判定結果、および画素情報に基づいて、中間位置マップバッファ５６の中間位置マップの情報を中間ベクトルとして読み出し差分計算部５８に供給する。差分計算部５８は、動きベクトルバッファ１３に格納されている今現在の動きベクトルと中間ベクトルとの差分を計算し、計算結果を比較部６１に供給する。
【００６１】
直前フレームベクトル読出部５９は、遮蔽判定部５２の判定結果、および画素情報に基づいて、直前のフレームの画像における、同一画素位置の動きベクトルの情報を動きベクトルバッファ１３より読み出し差分計算部６０に供給する。差分計算部６０は、動きベクトルバッファ１３に格納されている今現在の動きベクトルと直前のフレームの画像における、同一画素位置の動きベクトルとの差分を計算し、計算結果を比較部６１に供給する。
【００６２】
比較部６１は、差分計算部５８，６０の差分結果を比較し、比較結果と共に、処理対象となっている画素の動きベクトルの終点画素の情報を遮蔽マップ管理部６２および中間位置マップ管理部５５に供給する。
【００６３】
遮蔽マップ管理部６２は、比較部６１の比較結果および処理対象となっている画素の動きベクトルの終点画素の情報に基づいて、遮蔽マップバッファ６３に格納されている遮蔽マップを管理する。出力部６４は、遮蔽マップバッファ６３に格納されている遮蔽マップを読み出して直接動きベクトル計算部３３に出力する。
【００６４】
次に、図１２を参照して、露出検出部３２の詳細な構成について説明する。
【００６５】
プロットマップ生成部９１は、終点計算部１０１、範囲判定部１０２、および露出フレーム番号付与部１０３から構成されており、プロットマップを生成し、プロットマップバッファ９２に格納する。
【００６６】
終点計算部１０１は、処理対象となる画像の画素ごとの動きベクトルの終点位置を計算し、範囲判定部１０２に供給する。このとき、終点計算部１０１は、動きベクトルを抽出したフレーム番号の情報も含めて範囲判定部１０２に供給する。
【００６７】
範囲判定部１０２は、供給されてきた動きベクトルの終点位置が画像に対して範囲内であるか否かを判定し、範囲内であるときのみ、その位置情報とフレーム番号の情報を露出フレーム番号付与部１０３に供給する。
【００６８】
露出フレーム番号付与部１０３は、供給されてきた動きベクトルの終点位置の位置情報にフレーム番号の情報を付与し、プロットマップとして、プロットマップバッファ９２に格納させる。
【００６９】
メディアン処理部９３は、プロットマップバッファ９２に格納されたプロットマップの情報における孤立点除去のため、メディアン処理を施し、処理結果となるプロットマップをプロットマップバッファ９４に格納させる。
【００７０】
オクルージョン距離マップ生成部９５は、フレーム番号比較部１１１およびフレーム番号変更部１１２から構成されており、プロットマップバッファ９４に格納されている、画像毎のプロットマップの情報に基づいてオクルージョン距離マップを生成し、オクルージョン距離マップバッファ９６に格納させる。フレーム番号比較部１１１は、処理対象となる画像における各画素について、画像毎のプロットマップに格納されているフレーム番号を比較し、比較結果と共に、画素位置およびフレーム番号の情報をフレーム番号変更部１１２に供給する。フレーム番号変更部１１２は、フレーム番号比較部１１１より供給される比較結果に応じて、各画素位置に対応付けてフレーム番号の情報を更新するなどして、オクルージョン距離マップを生成して、オクルージョン距離マップバッファ９６に格納する。
【００７１】
出力部９７は、オアクルージョン距離マップバッファ９６に格納されたオクルージョン距離マップを読み出して、直接動きベクトル計算部３３に供給する。
【００７２】
次に、図１３を参照して、直接動きベクトル計算部３３の詳細な構成について説明する。
【００７３】
終点計算部１４１は、処理対象となる画像の各画素における動きベクトルの終点位置の情報を計算し、計算結果をオクルージョン距離判定部１４２、直接動きベクトル生成部１４４、および遮蔽部直接動きベクトル生成部１４８に供給する。
【００７４】
オクルージョン距離判定部１４２は、オクルージョン距離マップバッファ１４３に格納されているオクルージョン距離マップに基づいて、終点位置の画素におけるフレーム番号が今現在のフレーム番号より小さいか否かを判定し、判定結果を直接動きベクトル生成部１４４および遮蔽部直接動きベクトル生成部１４８に供給する。
【００７５】
オクルージョン距離マップバッファ１４３は、露出検出部３２より供給されてくるオクルージョン距離マップを格納する。
【００７６】
直接動きベクトル生成部１４４は、オクルージョン距離判定部１４２より供給されてくる判定結果に基づいて、露出領域を考慮した直接動きベクトルを生成し、直接動きベクトルバッファ１４５に格納する。
【００７７】
遮蔽マップバッファ１４７は、遮蔽検出部３１より供給されてくる遮蔽マップを格納する。
【００７８】
遮蔽部直接動きベクトル生成部１４８は、オクルージョン距離判定部１４２より供給されてくる判定結果に基づいて、遮蔽領域を考慮した遮蔽部直接動きベクトルを生成し、遮蔽部直接動きベクトルバッファ１４９に格納する。
【００７９】
出力部１４６は、直接動きベクトルバッファ１４５に格納されている直接動きベクトル、遮蔽部直接動きベクトルバッファ１４９に格納されている遮蔽部直接動きベクトル、および遮蔽マップバッファ１４７に格納されている遮蔽マップを、それぞれ対応付けて画像合成部１５に出力する。
【００８０】
次に、図１４のフローチャートを参照して、図１の画像処理システムによるノイズ除去処理について説明する。
【００８１】
ステップＳ１において、撮像部１は、画像を撮像し、撮像した画像を順次画像バッファ１１に供給する。
【００８２】
ステップＳ２において、画像バッファ１１は、撮像部１より供給されてきた画像を、連続する一連の画像列として記憶する（バッファリングする）。
【００８３】
ステップＳ３において、動きベクトル計算部１２は、画像バッファ１１に画像列からブロックマッチングや勾配法などにより、画素単位で動きベクトルを求め、動きベクトルバッファ１３に供給する。このとき、動きベクトル計算部１２は、動きベクトル毎に、計算の根拠となった画像を識別するフレーム番号および動きベクトルの始点となる画素位置の座標の情報をそれぞれに付して、動きベクトルバッファ１３に供給する。
【００８４】
ステップＳ４において、動きベクトルバッファ１３は、動きベクトル計算部１２より順次画像毎に、画素単位で供給されてくる動きベクトルを、その計算の根拠となった画像を識別するフレーム番号および動きベクトルの始点となる画素位置の座標の情報と共に対応付けて記憶する（バッファリングする）。
【００８５】
ステップＳ５において、オクルージョン処理部１４は、動きベクトルバッファ１３に記憶されている各画像の画素単位で求められている動きベクトルを用いて、オクルージョン処理を実行して、直接動きベクトルおよび遮蔽部直接動きベクトルを求めて、画像合成部１５に供給する。
【００８６】
ここで、図１５のフローチャートを参照して、オクルージョン処理について説明する。
【００８７】
ステップＳ２１において、露出検出部３２は、露出検出処理を実行し、動きベクトルバッファ１３に記憶されている動きベクトルに基づいて、露出領域を検出する共に、露出領域に対応する、オクルージョン距離マップを生成し、直接動きベクトル計算部３３に供給する。尚、露出検出処理については、図１６のフローチャートを参照して、詳細を後述する。
【００８８】
ステップＳ２２において、遮蔽検出部３１は、遮蔽検出処理を実行し、動きベクトルバッファ１３に記憶されている動きベクトルに基づいて、遮蔽領域を検出すると共に、遮蔽領域に対応する、遮蔽マップを生成し、直接動きベクトル計算部３３に供給する。尚、遮蔽検出処理については、図２０のフローチャートを参照して、詳細を後述する。
【００８９】
ステップＳ２３において、直接動きベクトル計算部３３は、直接動きベクトル計算処理を実行し、露出検出部３２より供給されてきたオクルージョン距離マップ、遮蔽検出部３１より供給されてきた遮蔽マップ、および動きベクトルバッファ１３に記憶されている動きベクトルに基づいて、直接動きベクトル計算処理を実行し、露出領域に対応した直接動きベクトルと、遮蔽領域に対応した遮蔽部直接動きベクトルとを求め、それらをまとめて直接動きベクトルとして画像合成部１５に供給する。
【００９０】
以上のようにオクルージョン処理により、露出領域に対応した直接動きベクトルと、遮蔽領域に対応した遮蔽部直接動きベクトルとが求められ、それらがまとめられて直接動きベクトルとして画像合成部１５に供給される。
【００９１】
次に、図１６のフローチャートを参照して、露出検出部３２による露出検出処理について説明する。
【００９２】
ステップＳ４１において、プロットマップ生成部９１の終点計算部１０１は、プロットマップバッファ９２，９４のプロットマップMuの各要素を０に初期化する。
【００９３】
ステップＳ４２において、終点計算部１０１は、図示せぬフレーム番号のカウンタｋを重畳するフレームの先頭フレームであるＮに初期化する。フレーム番号は、今現在の画像のフレーム番号を０とし、順次、直前のフレームの番号が−１，−２・・・−ｋと付されるものとする。すなわち、処理対象となる画像がフレーム番号０であるものとすれば、ノイズ除去装置２は、フレーム番号０の画像から直前のＮ枚の画像を重畳することによりノイズを除去するため、フレーム番号（−Ｎ）乃至０の画像について、露出検出処理が施されることになる。そこで、最初の処理で、フレーム番号を示すカウンタｋがＮに初期化される。
【００９４】
ステップＳ４３において、プロットマップ作成処理が実行されて、プロットマップが生成される。
【００９５】
ここで、図１７のフローチャートを参照してプロットマップ作成処理について説明する。
【００９６】
ステップＳ６１において、終点計算部１０１は、フレーム番号(-k)の画像のプロットマップの各要素Ｐを０に初期化する。
【００９７】
ステップＳ６２において、終点計算部１０１は、処理対象となるフレーム番号(-k)の画像の画素のｙ方向の値を示す図示せぬカウンタｙを０に初期化する。
【００９８】
ステップＳ６３において、終点計算部１０１は、処理対象となるフレーム番号(-k)の画像の画素のｘ方向の値を示す図示せぬカウンタｘを０に初期化する。
【００９９】
ステップＳ６４において、終点計算部１０１は、図１８で示されるように、処理対象となるフレーム番号(-k)の画像の画素（x，y）の画素における動きベクトルM[-k](x，y)＝（Mh[-k](x，y)，Mv[-k](x，y)）の終点位置（x’，y’）＝（x+Mh[-k](x，y)，Mv[-k](x，y)）を求め、範囲判定部１０２に供給する。尚、図１８における白丸は画素中心を示す。
【０１００】
ステップＳ６５において、範囲判定部１０２は、画素（x，y）の画素における動きベクトル（Mh[-k](x，y)，Mv[-k](x，y)）の終点位置（x’，y’）が、処理対象となるフレーム番号(-k)の画像の範囲外であるか否かを判定する。すなわち、画像サイズがxSize×ySizeであるとすれば、終点位置（x’，y’）が、０＜x’＜xSizeではないか、または、０＜y’＜ySizeではないか否かが判定される。
【０１０１】
ステップＳ６５において、例えば、範囲外ではない、すなわち、処理対象となるフレーム番号(-k)の画像に含まれる画素であると判定された場合、ステップＳ６６，Ｓ６７において、範囲判定部１０２は、終点位置（x’，y’）の情報を露出フレーム番号付与部１０３に供給する。露出フレーム番号付与部１０３は、終点位置の実数x’，y’を越えない最大の整数（INT(x’)，INT(y’)）を終点位置近傍画素位置（x’’，y’’）として求める。
【０１０２】
ステップＳ６８乃至Ｓ７１において、露出フレーム番号付与部１０３は、終点位置近傍画素の情報に基づいて、それぞれのステップの処理により、順次プロットマップＰ（x’’，y’’），Ｐ（x’’＋１，y’’），Ｐ（x’’，y’’＋１），Ｐ（x’’＋１，y’’＋１）をｋに設定してプロットマップバッファ９２に記憶させる。すなわち、動きベクトルの終点位置の近傍に存在する画素において、動きベクトルの終点位置の分布が、そのフレーム番号(-k)により登録される。
【０１０３】
ステップＳ７２において、終点計算部１０１は、カウンタxを１インクリメントする。
【０１０４】
ステップＳ７３において、終点計算部１０１は、カウンタxが、画像のサイズの水平方向のサイズであるxSizeよりも小さいか否かを判定し、小さいと判定された場合、処理は、ステップＳ６４に戻る。すなわち、垂直方向のｙにおける全ての画素についてプロットマップが求められるまで、ステップＳ６４乃至Ｓ７３の処理が繰り返される。そして、ステップＳ７３において、カウンタxがxSizeよりも小さくないと判定された場合、すなわち、水平方向に一列分の処理が終了したと判定された場合、処理は、ステップＳ７４に進む。
【０１０５】
ステップＳ７４において、終点計算部１０１は、カウンタyを１インクリメントする。
【０１０６】
ステップＳ７５において、終点計算部１０１は、カウンタyが、画像のサイズの垂直方向のサイズであるySizeよりも小さいか否かを判定し、小さいと判定された場合、処理は、ステップＳ６３に戻る。すなわち、垂直方向のｙにおける全ての画素についてプロットマップが求められるまで、ステップＳ６３乃至Ｓ７５の処理が繰り返される。そして、ステップＳ７５において、カウンタyがySizeよりも小さくないと判定された場合、すなわち、水平方向にも垂直方向にも全ての画素について処理が終了したと判定された場合、処理は、終了する。
【０１０７】
一方、ステップＳ６５において、範囲外であると判定された場合、処理は、ステップＳ７２に進む。すなわち、終点位置が存在しないので、ステップＳ６６乃至Ｓ７１のプロットマップを登録する処理がスキップされる。
【０１０８】
以上の処理により、プロットマップが作成されて、プロットマップバッファ９２に記憶される。
【０１０９】
ここで、図１６のフローチャートの説明に戻る。
【０１１０】
ステップＳ４３において、プロットマップ作成処理によりプロットマップが作成されて、プロットマップバッファ９２に記憶されると。ステップＳ４４において、メディアン処理部９３は、プロットマップバッファ９２に記憶されている、各画素位置のプロットマップＰの情報を用いて、周辺画素とのプロットマップの情報を読み出し、中央値となる値に置き換えて、孤立点を除去してプロットマップバッファ９４に記憶させる。
【０１１１】
ステップＳ４５において、オクルージョン距離マップ生成部９５は、オクルージョン距離マップ作成処理を実行してオクルージョン距離マップを生成してオクルージョン距離マップバッファ９６に記憶させる。
【０１１２】
ここで、図１９のフローチャートを参照して、オクルージョン距離マップ作成処理について説明する。
【０１１３】
ステップＳ９１において、フレーム番号比較部１１１は、処理対象となるフレーム番号(-k)の画像の画素のｙ方向の値を示す図示せぬカウンタｙを０に初期化する。
【０１１４】
ステップＳ９２において、フレーム番号比較部１１１は、処理対象となるフレーム番号(-k)の画像の画素のｘ方向の値を示す図示せぬカウンタｘを０に初期化する。
【０１１５】
ステップＳ９３において、フレーム番号比較部１１１は、プロットマップバッファ９４よりプロットマップP（x，y）を、オクルージョン距離マップバッファ９６よりオクルージョン距離マップMu（x，y）のフレーム番号をそれぞれ読み出し、プロットマップP（x，y）が０よりも大きく、かつ、オクルージョン距離マップMu（x，y）よりも小さいか否かを判定し、処理結果をフレーム番号変更部１１２に供給する。
【０１１６】
ステップＳ９３において、例えば、プロットマップP（x，y）が０よりも大きく、かつ、オクルージョン距離マップMu（x，y）よりも小さいと判定された場合、ステップＳ９４において、フレーム番号変更部１１２は、オクルージョン距離マップMu（x，y）をプロットマップP（x，y）に置換する。
【０１１７】
一方、ステップＳ９３において、例えば、プロットマップP（x，y）が０よりも大きくないか、または、オクルージョン距離マップMu（x，y）よりも小さいと判定された場合、ステップＳ９４の処理がスキップされる。
【０１１８】
ステップＳ９５において、フレーム番号比較部１１１は、カウンタxを１インクリメントする。
【０１１９】
ステップＳ９６において、フレーム番号比較部１１１、カウンタxが、画像のサイズの水平方向のサイズであるxSizeよりも小さいか否かを判定し、小さいと判定された場合、処理は、ステップＳ９３に戻る。すなわち、垂直方向のｙにおける全ての画素についてプロットマップが求められるまで、ステップＳ９３乃至Ｓ９６の処理が繰り返される。そして、ステップＳ９６において、カウンタxがxSizeよりも小さくないと判定された場合、すなわち、水平方向に一列分の処理が終了したと判定された場合、処理は、ステップＳ９７に進む。
【０１２０】
ステップＳ９７において、フレーム番号比較部１１１は、カウンタyを１インクリメントする。
【０１２１】
ステップＳ９８において、フレーム番号比較部１１１は、カウンタyが、画像のサイズの垂直方向のサイズであるySizeよりも小さいか否かを判定し、小さいと判定された場合、処理は、ステップＳ９２に戻る。すなわち、垂直方向のｙにおける全ての画素についてプロットマップが求められるまで、ステップＳ９２乃至Ｓ９８の処理が繰り返される。そして、ステップＳ９８において、カウンタyがySizeよりも小さくないと判定された場合、すなわち、水平方向にも垂直方向にも全ての画素について処理が終了したと判定された場合、処理は、終了する。
【０１２２】
以上の処理によりオクルージョン距離マップMu（x，y）は、プロットマップP（x，y）の値が、より直近のフレーム番号を示す場合、置換されることにより、最も直近で露出したフレーム番号に順次更新される処理が繰り返されて、オクルージョン距離マップとしてオクルージョン距離マップバッファ９６に蓄積されていく。
【０１２３】
ここで、図１６のフローチャートの説明に戻る。
【０１２４】
ステップＳ４５において、オクルージョン距離マップが作成されると、ステップＳ４６において、終点計算部１０１は、カウンタｋを１デクリメントする。さらに、ステップＳ４７において、終点計算部１０１は、カウンタｋが負の値となっているか、すなわち、処理がフレーム番号０までの全ての画像についてプロットマップが生成されて、さらにオクルージョン距離マップが生成されたか否かを判定する。ステップＳ４７において、カウンタｋが負の値ではないと判定された場合、処理は、ステップＳ４３に戻り、カウンタｋが負の値であると判定されるまで、ステップＳ４３乃至Ｓ４７の処理が繰り返される。
【０１２５】
そして、ステップＳ４７において、カウンタｋの値が負の値である、すなわち、フレーム番号が−Ｎ乃至０までの全ての画像について処理が終了したと判定された場合、ステップＳ４８において、出力部９７は、オクルージョン距離マップバッファ９６に記憶されているオクルージョン距離バッファを直接動きベクトル計算部３３に出力し、露出検出処理は終了する。
【０１２６】
以上の処理により各画像における露出領域が、プロットマップとして検出され、さらに、処理対象となる画像のノイズ除去に使用される複数の画像の画素単位での露出の有無を示すプロットマップPに基づいて、処理対象となる画像における各画素における、直近で露出が開始したフレーム番号を示す情報としてオクルージョン距離マップMuが作成される。
【０１２７】
次に、図２０のフローチャートを参照して、遮蔽検出処理について説明する。
【０１２８】
ステップＳ１２１において、遮蔽判定部５２は、中間フラグマップバッファ５４に格納されている中間フラグマップCの各要素をNOTFILLED（要素なしを意味する）に初期化すると共に、遮蔽マップ管理部６２は、遮蔽マップMoの各要素をNOTILLEGAL（無効ではないを意味する）に初期化する。
【０１２９】
ステップＳ１２２において、終点計算部５１は、図示せぬフレーム番号のカウンタｋを重畳するフレームの先頭フレームである１に初期化する。
【０１３０】
ステップＳ１２３において、終点計算部５１は、処理対象となるフレーム番号(-k)の画像の画素のｙ方向の値を示す図示せぬカウンタｙを０に初期化する。
【０１３１】
ステップＳ１２４において、終点計算部５１は、処理対象となるフレーム番号(-k)の画像の画素のｘ方向の値を示す図示せぬカウンタｘを０に初期化する。
【０１３２】
ステップＳ１２５において、終点計算部５１は、図２１で示されるように、処理対象となるフレーム番号(-k)の画像の画素（x，y）の画素における動きベクトルM[-k](x，y)＝（Mh[-k](x，y)，Mv[-k](x，y)）の終点位置（x’，y’）＝（x+Mh[-k](x，y)，Mv[-k](x，y)）を求め、遮蔽判定部５２に供給する。尚、図２１における白丸は画素中心を示す。
【０１３３】
ステップＳ１２６において、遮蔽判定部５２は、中間フラグマップバッファ５４にアクセスし、終点位置における中間フラグマップC（x’，y’）がFILLED（要素ありを意味する）であるか、すなわち、初期値のままNOTFILLEDでは無い状態であるか否かを判定し、判定結果と終点位置情報とを中間フラグマップ管理部５３、中間位置マップ管理部５５、中間ベクトル読出部５７、および直前フレームベクトル読出部５９に供給する。
【０１３４】
ステップＳ１２６において、例えば、中間フラグマップC（x’，y’）が初期値のままNOTFILLEDであって、FILLEDではない場合、ステップＳ１２７において、中間フラグマップ管理部５３は、中間フラグマップC（x’，y’）をNOTFILLEDからFILLEDに更新すると共に、中間位置マップ管理部５５は、中間位置マップバッファ５６に格納されている中間位置マップ（Cx（x’，y’），Cy（x’，y’））を（x，y）に置換する。すなわち、中間フラグマップC（x’，y’）は、画素位置ごとに動きベクトルの終点としてしていされるとFILLEDと登録され、同一のタイミングで、中間位置マップ（Cx（x’，y’），Cy（x’，y’））には、その終点を示す動きベクトルの始点となる画素位置が登録されることになる。
【０１３５】
ステップＳ１２６において、例えば、中間フラグマップC（x’，y’）がFILLEDであると判定された場合、ステップＳ１３２において、直前フレームベクトル読出部５９は、動きベクトルバッファ１３の終点位置（x’，y’）の動きベクトルmk1＝（mk1h，mk1v）＝（Mh[-k+1]（x’，y’），Mv[-k+1]（x’，y’））を読み出し、差分計算部６０に供給する。
【０１３６】
ステップＳ１３３において、差分計算部５８，６０は、それぞれ動きベクトルバッファ１３より処理対象となっている画素（x，y）における動きベクトルM[-k](x，y)＝（mk0h，mk0v）＝（Mh[-k](x，y)，Mv[-k](x，y)）を読み出す。
【０１３７】
ステップＳ１３４において、差分計算部６０は、差分d1（＝DIFF（mk1h，mk1v，mk0h，mk0v）を求めて比較部６１に出力する。ここで、DIFF（mk1h，mk1v，mk0h，mk0v）は、ベクトル（mk1h，mk1v）およびベクトル（mk0h，mk0v）の長さの差分であり、差分d1＝｜√（mk1h2＋mk1v2）−√（mk0h2＋mk0v2）｜である。
【０１３８】
ステップＳ１３５において、差分計算部５８は、中間位置マップバッファ５６より（x’，y’）を終点位置として、これまでの処理で設定されている画素C（x’，y’）における動きベクトルM[-k]（Cx（x’，y’），Cy（x’，y’））を読み出し、（mch，mcv）＝M[-k]（Cx（x’，y’），Cy（x’，y’））＝（Mh[-k](Cx(x’，y’)，Cy(x’，y’))，Mv[-k](Cx(x’，y’)，Cy(x’，y’))）に変換する。
【０１３９】
ステップＳ１３６において、差分計算部５８は、差分d2（＝DIFF（mk1h，mk1v，mch，mcv）を求めて比較部６１に出力する。ここで、DIFF（mk1h，mk1v，mch，mcv）は、ベクトル（mk1h，mk1v）およびベクトル（mch，mcv）の長さの差分であり、差分d2＝｜√（mk1h2＋mk1v2）−√（mch2＋mcv2）｜である。
【０１４０】
ステップＳ１３７において、比較部６１は、差分d2が差分d1よりも小さいか否かを判定し、比較結果を遮蔽マップ管理部６２および中間位置マップ管理部５５に出力する。
【０１４１】
ステップＳ１３７において、差分d2が差分d1よりも小さい場合、すなわち、図２１で示されるように、動きベクトルの終点位置(x’，y’)とフレーム番号(-k)の画像上の画素位置(x，y)との距離である差分d2が、動きベクトルの終点位置(x’，y’)とフレーム番号(-ｋ+1)上の（Cx（x’，y’），Cy（x’，y’））との距離である差分d1よりも小さいことになるので、フレーム番号(-k)の画像上の(x，y)の方が、フレーム番号(-k+1)上の（Cx（x’，y’），Cy（x’，y’））よりも終点位置(x’，y’)に近いことになるため、ステップＳ１３８において、遮蔽マップ管理部６２は、遮蔽マップバッファ６３に格納されている遮蔽マップMo(x，y)をILLEGALに、すなわち、遮蔽される位置であるとして、画素として無効を登録する。
【０１４２】
一方、ステップＳ１３７において、差分d2が差分d1よりも小さくない場合、すなわち、図２１で示されるように、動きベクトルの終点位置(x’，y’)とフレーム番号(-k)の画像上の画素位置(x，y)との距離である差分d2が、動きベクトルの終点位置(x’，y’)とフレーム番号（-ｋ+1）上の（Cx（x’，y’），Cy（x’，y’））との距離である差分d1よりも小さくないことになるので、フレーム番号（-k）の画像上の(x，y)の方が、フレーム番号（-ｋ+1）上の（Cx（x’，y’），Cy（x’，y’））よりも終点位置(x’，y’)に遠いことになるため、ステップＳ１３９において、遮蔽マップ管理部６２は、遮蔽マップバッファ６３に格納されている遮蔽マップMo（Cx（x’，y’），Cy（x’，y’））をILLEGALに、すなわち、遮蔽される位置として無効であるものとして登録する。
【０１４３】
さらに、ステップＳ１４０において、中間位置マップ管理部５５は、中間位置マップバッファ５６に格納されている中間位置マップ（Cx（x’，y’），Cy（x’，y’））を（x，y）に置換する。
【０１４４】
ステップＳ１２８において、終点計算部５１は、カウンタxを１インクリメントする。
【０１４５】
ステップＳ１２９において、終点計算部５１は、カウンタxが、画像のサイズの水平方向のサイズであるxSizeよりも小さいか否かを判定し、小さいと判定された場合、処理は、ステップＳ１２５に戻る。すなわち、垂直方向のｙにおける全ての画素について遮蔽マップが求められるまで、ステップＳ１２５乃至１２７およびＳ１３２乃至Ｓ１４０の処理が繰り返される。そして、ステップＳ１２９において、カウンタxがxSizeよりも小さくないと判定された場合、すなわち、水平方向に一列分の処理が終了したと判定された場合、処理は、ステップＳ１３０に進む。
【０１４６】
ステップＳ１３０において、終点計算部５１は、カウンタyを１インクリメントする。
【０１４７】
ステップＳ１３１において、終点計算部５１は、カウンタyが、画像のサイズの垂直方向のサイズであるySizeよりも小さいか否かを判定し、小さいと判定された場合、処理は、ステップＳ１２４に戻る。すなわち、垂直方向のｙにおける全ての画素について遮蔽マップが求められるまで、ステップＳ１２４乃至Ｓ１４０の処理が繰り返される。そして、ステップＳ１３１において、カウンタyがySizeよりも小さくないと判定された場合、すなわち、水平方向にも垂直方向にも全ての画素について処理が終了したと判定された場合、ステップＳ１４１において、終点計算部５１は、カウンタｋを１インクリメントする。
【０１４８】
ステップＳ１４２において、終点計算部５１は、カウンタｋが、処理対象となる画像に重畳しようとする画像数であるN以下であるか否かを判定し、カウンタｋがN以下であると判定された場合、処理は、ステップＳ１２３に戻る。すなわち、重畳すべき全ての画像について遮蔽マップが求められるまで、ステップＳ１２３乃至Ｓ１４２の処理が繰り返される。そして、ステップＳ１４２において、カウンタｋがN以下であると判定された場合、すなわち、重畳すべき全ての画像について遮蔽マップが求められたと判定された場合、ステップＳ１４３において、出力部６４は、遮蔽マップバッファ６３に格納されている遮蔽マップを読み出して直接動きベクトル計算部３３に出力し、処理は、終了する。
【０１４９】
以上の処理により、複数の画像における各画素の動きベクトルのうち、同一の終点位置を示すものの内、最も遠い位置のものを除いた、画素の位置が遮蔽領域として検出され、遮蔽マップMo（x，y）として登録される。
【０１５０】
次に、図１５を参照して、直接動きベクトル計算処理の概要について説明する。
【０１５１】
直接動きベクトル計算処理とは、各過去フレームの画素から、処理対象となる画像であるフレーム番号（0）の画像の画素への直接の動きベクトルを計算する処理である。ところで、フレーム番号(-k)の画像上の画素からフレーム番号(0)の画像上の画素への直接動きベクトルは、フレーム番号（-k+1）上の画素からフレーム番号(0)の画像上の画素への直接動きベクトルと、フレーム番号（-k）の画像上の画素からフレーム番号（-k+1）の画像上の画素への動きベクトルとの和である。したがって、フレーム番号（-k+1）上の画素からフレーム番号(0)の画像上の画素への直接動きベクトルと、フレーム番号（-k）の画像上の画素からフレーム番号（-k+1）の画像上の画素への動きベクトルとが求められれば、各過去フレームの画像の画素から、フレーム番号(0)の画像の画素への直接の動きベクトルを求めることが可能となるはずである。
【０１５２】
すなわち、フレーム番号（-1）上の画素からフレーム番号（０）上の画素への動きベクトルは求まっている。また、フレーム番号（-2）上の画素からフレーム番号（-1）上の画素への動きベクトルも求まっているので、図２２の左部の実線の矢印で示されるように、フレーム番号（-2）の各画素の動きベクトルの指している先の動きベクトルを求め、図２２の中部の実線の矢印で示されるように、フレーム番号（-2）の動きベクトルと合成することで、図２２の右部の点線の矢印で示されるように、フレーム番号（-2）からフレーム番号（0）の動きベクトルを求めることができる。よって、帰納的にフレーム番号（-n）からフレーム番号（-1）までのそれぞれの画像上の画素について、フレーム番号（0）の画像上の画素への直接動きベクトルを求めることができる。
【０１５３】
次に、図２３のフローチャートを参照して、直接動きベクトル計算処理について説明する。
【０１５４】
ステップＳ１６１において、フレーム番号（-1）（k=1）の画像上の画素における直接動きベクトル計算処理が実行されて、フレーム番号（-1）の画像上の画素の直接動きベクトルが計算される。すなわち、この処理により、処理対象となっているフレーム番号（0）の画像の直前のフレームであるフレーム番号（-1）上の各画素に対して、フレーム番号（0）の画像上に重畳すべき画素位置を示す動きベクトルが求められる。尚、フレーム番号（-1）の画像上の画素における直接動きベクトル計算処理については、図２４のフローチャートを参照して、詳細を後述する。
【０１５５】
ステップＳ１６２において、フレーム番号（-k）（k＞1）の画像上の画素における直接動きベクトル計算処理が実行されて、フレーム番号（-k）（k＞1）の画像上の画素の露出領域が考慮された直接動きベクトルが計算される。尚、フレーム番号（-k）（k＞1）の画像上の画素における直接動きベクトル計算処理については、図２５のフローチャートを参照して、詳細を後述する。
【０１５６】
ステップＳ１６３において、フレーム番号（-k）（k＞1）の画像上の画素における露出領域および遮蔽領域が考慮された遮蔽部直接動きベクトル計算処理が実行されて、フレーム番号（-k）（k＞1）の画像上の画素の遮蔽部直接動きベクトルが計算される。尚、フレーム番号（-k）（k＞1）の画像上の画素における遮蔽部直接動きベクトル計算処理については、図２６のフローチャートを参照して、詳細を後述する。
【０１５７】
ステップＳ１６４において、出力部１４６は、直接動きベクトルバッファ１４５に記憶されている直接動きベクトル、遮蔽部直接動きベクトルバッファ１４９の記憶されている遮蔽部直接動きベクトル、および遮蔽マップバッファ１４７に記憶されている遮蔽マップを読み出し、画像合成部１５に供給する。
【０１５８】
以上の処理により露出領域が考慮された直接動きベクトルと、遮蔽部直接動きベクトルとが求められ、遮蔽マップと共に画像合成部１５に供給される。
【０１５９】
次に、図２４のフローチャートを参照して、フレーム番号（-1）の画像上の画素における直接動きベクトル計算処理について説明する。
【０１６０】
ステップＳ１８１において、終点計算部１４１は、処理対象となるフレーム番号(-k)の画像の画素のｙ方向の値を示す図示せぬカウンタｙを０に初期化する。
【０１６１】
ステップＳ１８２において、終点計算部１４１は、処理対象となるフレーム番号(-k)の画像の画素のｘ方向の値を示す図示せぬカウンタｘを０に初期化する。
【０１６２】
ステップＳ１８３において、直接動きベクトル生成部１４４は、動きベクトルバッファ１３よりフレーム番号（-1）の動きベクトルM[-1]（x，y）＝（Mh[-1]（x，y），Mv[-1]（x，y））を読み出し、これをフレーム番号（-1）の直接動きベクトルMD[-1]（x，y）＝M[-1]（x，y）＝（MDh[-1]（x，y），MDv[-1]（x，y））＝（Mh[-1]（x，y），Mv[-1]（x，y））に設定し、直接動きベクトルバッファ１４５に登録する。
【０１６３】
ステップＳ１８４において、遮蔽部直接動きベクトル生成部１４８は、動きベクトルバッファ１３よりフレーム番号（-1）の動きベクトルM[-1]（x，y）＝（Mh[-1]（x，y），Mv[-1]（x，y））を読み出し、これをフレーム番号（-1）の遮蔽部直接動きベクトルMDI[-1]（x，y）＝M[-1]（x，y）＝（MhDI[-1]（x，y），MvDI[-1]（x，y））＝（Mh[-1]（x，y），Mv[-1]（x，y））に設定し、遮蔽部直接動きベクトルバッファ１４９に登録する。
【０１６４】
ステップＳ１８５において、終点計算部１４１は、カウンタxを１インクリメントする。
【０１６５】
ステップＳ１８６において、終点計算部１４１は、カウンタxが、画像のサイズの水平方向のサイズであるxSizeよりも小さいか否かを判定し、小さいと判定された場合、処理は、ステップＳ１８３に戻る。すなわち、垂直方向のｙにおける全ての画素について直接動きベクトルが求められるまで、ステップＳ１８３乃至Ｓ１８６の処理が繰り返される。そして、ステップＳ１８６において、カウンタxがxSizeよりも小さくないと判定された場合、すなわち、水平方向に一列分の処理が終了したと判定された場合、処理は、ステップＳ１８７に進む。
【０１６６】
ステップＳ１８７において、終点計算部１４１は、カウンタyを１インクリメントする。
【０１６７】
ステップＳ１８８において、終点計算部１４１は、カウンタyが、画像のサイズの垂直方向のサイズであるySizeよりも小さいか否かを判定し、小さいと判定された場合、処理は、ステップＳ１８３に戻る。すなわち、垂直方向のｙにおける全ての画素について直接動きベクトルが求められるまで、ステップＳ１８３乃至Ｓ１８８の処理が繰り返される。そして、ステップＳ１８８において、カウンタyがySizeよりも小さくないと判定された場合、すなわち、水平方向にも垂直方向にも全ての画素について処理が終了したと判定された場合、処理は、終了する。
【０１６８】
以上の処理により処理対象となっているフレーム番号(0)の画像の直前の画像の各画素における動きベクトルそのものが、直接動きベクトル、および、遮蔽部直接動きベクトルとして設定される。
【０１６９】
次に、図２５のフローチャートを参照して、フレーム番号（-k）（k＞1）の画像上の画素における直接動きベクトル計算処理について説明する。
【０１７０】
ステップＳ２０１において、終点計算部１４１は、フレーム番号を示す図示せぬカウンタｋを２に初期化する。カウンタｋ＝１の処理は、図２４を参照して説明した処理により終了しているので、ここでは、カウンタｋは、２に初期化される。
【０１７１】
ステップＳ２０２において、終点計算部１４１は、処理対象となるフレーム番号(-k)の画像の画素のｙ方向の値を示す図示せぬカウンタｙを０に初期化する。
【０１７２】
ステップＳ２０３において、終点計算部１４１は、処理対象となるフレーム番号(-k)の画像の画素のｘ方向の値を示す図示せぬカウンタｘを０に初期化する。
【０１７３】
ステップＳ２０４において、終点計算部１４１は、処理対象となるフレーム番号(-k)の画像の画素（x，y）の画素における動きベクトルM[-k](x，y)＝（Mh[-k](x，y)，Mv[-k](x，y)）の終点位置（x’，y’）＝（x+Mh[-k](x，y)，Mv[-k](x，y)）を求め、オクルージョン距離判定部１４２に供給する。
【０１７４】
ステップＳ２０５において、オクルージョン距離判定部１４２は、露出検出部３２より供給されてきたオクルージョン距離マップが格納されたオクルージョン距離マップバッファ１４３にアクセスし、オクルージョン距離マップMu（x’，y’）が、カウンタｋよりも大きいか否か、すなわち、直近で露出したフレーム番号よりも大きいか否かを判定し、判定結果を遮蔽部直接動きベクトル生成部１４８に供給する。
【０１７５】
ステップＳ２０５において、例えば、カウンタｋよりも大きい、すなわち、直近で露出したフレーム番号よりも大きいと判定された場合、まだ、露出していない画素であるものとみなして、ステップＳ２０６において、直接動きベクトル生成部１４４は、直接動きベクトルMD[-k](x，y)＝（MhD[-k](x，y)，MvD[-k](x，y)）＝（ILLEGAL，ILLEGAL）として、直接動きベクトルバッファ１４５に無効登録する。
【０１７６】
一方、ステップＳ２０５において、例えば、カウンタｋよりも大きくない、すなわち、直近で露出したフレーム番号よりも大きくないと判定された場合、すでに、露出している画素であるものとみなして、ステップＳ２１１において、直接動きベクトル生成部１４４は、直接動きベクトルMD[-k](x，y)＝（Mh[-k](x，y)+MhD[-k+1](x’，y’)，Mv[-k](x，y)+MvD[-k+1](x’，y’)）として直接動きベクトルバッファ１４５に登録する。すなわち、直前のフレーム番号（-k+1）で求められている、終点位置を(x，y)とする直接動きベクトルと、今現在のフレーム番号（-k）の動きベクトルとのベクトル和を求めて、新たな直接動きベクトルを生成する。
【０１７７】
ステップＳ２０７において、終点計算部１４１は、カウンタxを１インクリメントする。
【０１７８】
ステップＳ２０８において、終点計算部１４１は、カウンタxが、画像のサイズの水平方向のサイズであるxSizeよりも小さいか否かを判定し、小さいと判定された場合、処理は、ステップＳ２０４に戻る。すなわち、垂直方向のｙにおける全ての画素について直接動きベクトルが求められるまで、ステップＳ２０４乃至Ｓ２０８，Ｓ２１１の処理が繰り返される。そして、ステップＳ２０８において、カウンタxがxSizeよりも小さくないと判定された場合、すなわち、水平方向に一列分の処理が終了したと判定された場合、処理は、ステップＳ２０９に進む。
【０１７９】
ステップＳ２０９において、終点計算部１４１は、カウンタyを１インクリメントする。
【０１８０】
ステップＳ２１０において、終点計算部１４１は、カウンタyが、画像のサイズの垂直方向のサイズであるySizeよりも小さいか否かを判定し、小さいと判定された場合、処理は、ステップＳ２０３に戻る。すなわち、垂直方向のｙにおける全ての画素について直接動きベクトルが求められるまで、ステップＳ２０３乃至Ｓ２１１の処理が繰り返される。そして、ステップＳ２１０において、カウンタyがySizeよりも小さくないと判定された場合、すなわち、水平方向にも垂直方向にも全ての画素について処理が終了したと判定された場合、処理は、ステップＳ２１２に進む。
【０１８１】
ステップＳ２１２において、終点計算部１４１は、カウンタｋを１インクリメントする。
【０１８２】
ステップＳ２１３において、終点計算部１４１は、カウンタｋが、重畳しようとする画像数であるＮ以下であるか否かを判定し、カウンタｋがＮ以下である場合、処理は、ステップＳ２０２に戻る。すなわち、ノイズ除去のために重畳すべき画像について処理がなされるまで、ステップＳ２０２乃至Ｓ２１３の処理が繰り返される。
【０１８３】
そして、ステップＳ２１３において、カウンタｋがＮ以下ではないと判定された場合、すなわち、重畳しようとする全ての画像の各画素について、全て直接動きベクトルが求められたと判定された場合、処理は、終了する。
【０１８４】
以上の処理により処理対象となっているフレーム番号(0)の２画像以上前の画像の各画素における直接動きベクトルが設定される。この際、オクルージョン距離マップMuが示す値以上に過去のフレーム間距離を持つ領域については、無効登録することにより使用不可とされるので、露出領域について、露出されるフレーム番号を考慮して直接動きベクトルを設定させることが可能となる。
【０１８５】
尚、オクルージョン距離マップを使うことで、露出を起こしたフレーム番号が画素毎に分かるので、補間できなかったフレームの数だけ、未来フレームから補間するようにしてもよく、このようにすることで、露出領域であってもノイズ削減効果を保つことが可能となる。
【０１８６】
次に、図２６のフローチャートを参照して、フレーム番号（-k）（k＞1）の画像上の画素における遮蔽部直接動きベクトル計算処理について説明する。
【０１８７】
ステップＳ２４１において、終点計算部１４１は、フレーム番号を示す図示せぬカウンタｋを２に初期化する。カウンタｋ＝１の処理は、図２４を参照して説明した処理により終了しているので、ここでは、カウンタｋは、２に初期化される。
【０１８８】
ステップＳ２４２において、終点計算部１４１は、処理対象となるフレーム番号(-k)の画像の画素のｙ方向の値を示す図示せぬカウンタｙを０に初期化する。
【０１８９】
ステップＳ２４３において、終点計算部１４１は、処理対象となるフレーム番号(-k)の画像の画素のｘ方向の値を示す図示せぬカウンタｘを０に初期化する。
【０１９０】
ステップＳ２４４において、終点計算部１４１は、処理対象となるフレーム番号(-k)の画像の画素（x，y）の画素における動きベクトルM[-k](x，y)＝（Mh[-k](x，y)，Mv[-k](x，y)）の終点位置（x’，y’）＝（x+Mh[-k](x，y)，Mv[-k](x，y)）を求め、オクルージョン距離判定部１４２に供給する。
【０１９１】
ステップＳ２４５において、オクルージョン距離判定部１４２は、露出検出部３２より供給されてきたオクルージョン距離マップが格納されたオクルージョン距離マップバッファ１４３にアクセスし、オクルージョン距離マップMu（x’，y’）が、カウンタｋよりも大きいか否か、すなわち、直近で露出したフレーム番号よりも大きいか否かを判定し、判定結果を遮蔽部直接動きベクトル生成部１４８に供給する。
【０１９２】
ステップＳ２４５において、例えば、カウンタｋよりも大きい、すなわち、直近で露出したフレーム番号よりも大きいと判定した場合、まだ、露出していない画素であるものとみなして、ステップＳ２４６において、遮蔽部直接動きベクトル生成部１４８は、直接動きベクトルMD[-k](x，y)＝（MhDI[-k](x，y)，MvDI[-k](x，y)）＝（ILLEGAL，ILLEGAL）として、遮蔽部直接動きベクトルバッファ１４９に無効登録する。
【０１９３】
一方、ステップＳ２４５において、例えば、カウンタｋよりも大きくない、すなわち、直近で露出したフレーム番号よりも大きくないと判定した場合、すでに、露出している画素であるものとみなして、ステップＳ２５１において、比較部１４８ａは、直前のフレームであるフレーム番号（-k+1）における(x’，y’)を終点位置とする動きベクトルをmk1＝（mk1h，mk1v）を、（mk1h，mk1v）＝（Mh[-k+1](x’，y’)，Mv[-k+1](x’，y’)）に変換すると共に、(x，y)の動きベクトルをmk0＝（mk0h，mk0v）を、（mk0h，mk0v）＝（Mh[-k](x，y)，Mv[-k](x，y)）に変換する。
【０１９４】
ステップＳ２５２において、比較部１８４ａは、動きベクトルmk0，mk1のベクトルの長さの差分が所定の閾値THよりも大きいか否かを判定する。より詳細には、比較部１８４ａは、差分（＝DIFF（mk1h，mk1v，mk0h，mk0v）を求めて、閾値THと比較する。ここで、DIFF（mk1h，mk1v，mk0h，mk0v）は、差分＝｜√（mk1h2＋mk1v2）−√（mk0h2＋mk0v2）｜である。
【０１９５】
ステップＳ２５２において、例えば、動きベクトルmk0，mk1のベクトルの長さの差分が所定の閾値THよりも大きくないと判定された場合、遮蔽されていないものとみなして、ステップＳ２５３において、遮蔽部直接動きベクトル生成部１４８は、遮蔽部直接動きベクトルMDI[-k](x，y)＝（Mh[-k](x，y)+MhDI[-k+1](x’，y’)，Mv[-k](x，y)+MvDI[-k+1](x’，y’)）として遮蔽部直接動きベクトルバッファ１４９に登録する。すなわち、直前のフレーム番号（-k+1）で求められている、終点位置を(x，y)とする遮蔽部直接動きベクトルと、今現在のフレーム番号（-k）の動きベクトルとのベクトル和を求めて、新たな遮蔽部直接動きベクトルを生成する。
【０１９６】
一方、ステップＳ２５２において、例えば、動きベクトルmk0，mk1のベクトルの長さの差分が所定の閾値THよりも大きいと判定された場合、遮蔽された背景部であるものとみなし、処理は、ステップＳ２４６に進み、無効登録される。
【０１９７】
ステップＳ２４７において、終点計算部１４１は、カウンタxを１インクリメントする。
【０１９８】
ステップＳ２４８において、終点計算部１４１は、カウンタxが、画像のサイズの水平方向のサイズであるxSizeよりも小さいか否かを判定し、小さいと判定された場合、処理は、ステップＳ２４４に戻る。すなわち、垂直方向のｙにおける全ての画素について遮蔽部直接動きベクトルが求められるまで、ステップＳ２４４乃至Ｓ２４８，Ｓ２５１乃至Ｓ２５３の処理が繰り返される。そして、ステップＳ２４８において、カウンタxがxSizeよりも小さくないと判定された場合、すなわち、水平方向に一列分の処理が終了したと判定された場合、処理は、ステップＳ２４９に進む。
【０１９９】
ステップＳ２４９において、終点計算部１４１は、カウンタyを１インクリメントする。
【０２００】
ステップＳ２５０において、終点計算部１４１は、カウンタyが、画像のサイズの垂直方向のサイズであるySizeよりも小さいか否かを判定し、小さいと判定された場合、処理は、ステップＳ２４３に戻る。すなわち、垂直方向のｙにおける全ての画素について直接動きベクトルが求められるまで、ステップＳ２４３乃至Ｓ２５３の処理が繰り返される。そして、ステップＳ２５０において、カウンタyがySizeよりも小さくないと判定された場合、すなわち、水平方向にも垂直方向にも全ての画素について処理が終了したと判定された場合、処理は、ステップＳ２５４に進む。
【０２０１】
ステップＳ２５４において、終点計算部１４１は、カウンタｋを１インクリメントする。
【０２０２】
ステップＳ２５５において、終点計算部１４１は、カウンタｋが、重畳しようとする画像数であるＮ以下であるか否かを判定し、カウンタｋがＮ以下である場合、処理は、ステップＳ２４２に戻る。すなわち、ノイズ除去のために重畳すべき画像について処理がなされるまで、ステップＳ２４２乃至Ｓ２５５の処理が繰り返される。
【０２０３】
そして、ステップＳ２５５において、カウンタｋがＮ以下ではないと判定された場合、すなわち、重畳しようとする全ての画像の各画素について、全て直接動きベクトルが求められたと判定された場合、処理は、終了する。
【０２０４】
以上の処理により処理対象となっているフレーム番号０の２画像以上前の画像の各画素における遮蔽部直接動きベクトルが設定される。この際、オクルージョン距離マップが示す値以上に過去のフレーム間距離を持つ領域については、無効登録することにより使用不可とされるので、露出領域について、露出されるフレーム番号を考慮した遮蔽部直接動きベクトルを設定させることが可能となる。
【０２０５】
また、遮蔽領域では、フレーム番号（-k）からフレーム番号（-k+1）の動きベクトルと、フレーム番号（-k+1）からフレーム番号（-k+2）への動きベクトルとを比較し、差が一定以上大きければ、遮蔽された背景部であると考えて、その動きベクトルが排除される。
【０２０６】
ここで、図１４のフローチャートの説明に戻る。
【０２０７】
ステップＳ５の処理により、オクルージョン処理により露出領域が考慮された直接動きベクトル、遮蔽部直接動きベクトル、および、遮蔽マップが画像合成部１５に供給されてくると、ステップＳ６において、画像合成部１５は、画像合成処理を実行して直接動きベクトル、遮蔽部直接動きベクトル、および、遮蔽マップに基づいて、複数の画像を重畳してノイズを除去した画像を生成する。
【０２０８】
ここで、図２７のフローチャートを参照して、画像合成処理について説明する。
【０２０９】
ステップＳ２８１において、遮蔽判定部１５ａは、フレーム番号を示す図示せぬカウンタｋを１に初期化すると共に、各画素の画素値E(x，y)を処理対象とする画像、すなわち、フレーム番号(0)の画素値E[0](x，y)に初期化して、バッファ１５ｃに記憶させる。
【０２１０】
ステップＳ２８２において、遮蔽判定部１５ａは、処理対象となるフレーム番号(-k)の画像の画素のｙ方向の値を示す図示せぬカウンタｙを０に初期化する。
【０２１１】
ステップＳ２８３において、遮蔽判定部１５ａは、処理対象となるフレーム番号(-k)の画像の画素のｘ方向の値を示す図示せぬカウンタｘを０に初期化する。
【０２１２】
ステップＳ２８４において、遮蔽判定部１５ａは、処理対象となる画像の画素（x，y）の画素における遮蔽マップMo(x，y)がILLEGALとして無効登録されているか否か、すなわち、遮蔽領域の画素であるか否かを判定する。
【０２１３】
ステップＳ２８４において、例えば、遮蔽マップMo(x，y)がILLEGALではない、すなわち、遮蔽領域の画素ではないと判定された場合、ステップＳ２８５において、合成部１５ｂは、画素値E(x，y)に直接動きベクトルにて指定されるフレーム番号（-k）上の処理対象となる画素を動きベクトルの終点とする画素の画素値E（MhD[-k](x，y)，MvD[-k](x，y)）を重畳する（E(x，y)＝E(x，y)+E（MhD[-k](x，y)，MvD[-k](x，y)））ことにより、更新しバッファ１５ｃに格納する。
【０２１４】
一方、ステップＳ２８４において、例えば、遮蔽マップMo(x，y)がILLEGALである、すなわち、遮蔽領域の画素であると判定された場合、ステップＳ２８６において、合成部１５ｂは、画素値E(x，y)に遮蔽部直接動きベクトルにて指定されるフレーム番号（-k）上の処理対象となる画素を動きベクトルの終点とする画素の画素値E（MhDI[-k](x，y)，MvDI[-k](x，y)）を重畳する（E(x，y)＝E(x，y)+E（MhDI[-k](x，y)，MvDI[-k](x，y)））ことにより、更新しバッファ１５ｃに格納する。
【０２１５】
すなわち、遮蔽マップMo(x，y)に基づいて、遮蔽領域の画素については、遮蔽部直接動きベクトルに基づいて画素値が重畳され、遮蔽領域ではない画素については、直接動きベクトルに基づいて画素値が重畳される。
【０２１６】
ステップＳ２８７において、遮蔽判定部１５ａは、カウンタxを１インクリメントする。
【０２１７】
ステップＳ２８８において、遮蔽判定部１５ａは、カウンタxが、画像のサイズの水平方向のサイズであるxSizeよりも小さいか否かを判定し、小さいと判定された場合、処理は、ステップＳ２８４に戻る。すなわち、垂直方向のｙにおける全ての画素について直接動きベクトルが求められるまで、ステップＳ２８４乃至Ｓ２８８の処理が繰り返される。そして、ステップＳ２８８において、カウンタxがxSizeよりも小さくないと判定された場合、すなわち、水平方向に一列分の処理が終了したと判定された場合、処理は、ステップＳ２８９に進む。
【０２１８】
ステップＳ２８９において、遮蔽判定部１５ａは、カウンタyを１インクリメントする。
【０２１９】
ステップＳ２９０において、遮蔽判定部１５ａは、カウンタyが、画像のサイズの垂直方向のサイズであるySizeよりも小さいか否かを判定し、小さいと判定された場合、処理は、ステップＳ２８３に戻る。すなわち、垂直方向のｙにおける全ての画素について直接動きベクトルが求められるまで、ステップＳ２８３乃至Ｓ２９０の処理が繰り返される。そして、ステップＳ２９０において、カウンタyがySizeよりも小さくないと判定された場合、すなわち、水平方向にも垂直方向にも全ての画素について処理が終了したと判定された場合、処理は、ステップＳ２９１に進む。
【０２２０】
ステップＳ２９１において、遮蔽判定部１５ａは、カウンタｋを１インクリメントする。
【０２２１】
ステップＳ２９２において、遮蔽判定部１５ａは、カウンタｋが、重畳しようとする画像数であるＮ以下であるか否かを判定し、カウンタｋがＮ以下である場合、処理は、ステップＳ２８２に戻る。すなわち、ノイズ除去のために重畳すべき画像について処理がなされるまで、ステップＳ２８２乃至Ｓ２９２の処理が繰り返される。
【０２２２】
そして、ステップＳ２９２において、カウンタｋがＮ以下ではないと判定された場合、すなわち、重畳しようとする全ての画像の各画素について、全て直接動きベクトルが求められたと判定された場合、ステップＳ２９３において、合成部１５ｂは、バッファ１５ｃに格納されている各画素の画素値E(x，y)を重畳した画像数Nで除する（E(x，y)＝E(x，y)／N）ことにより画素値を正規化する。
【０２２３】
ステップＳ２９４において、画像合成部１５は、バッファ１５ｃに蓄積されている画像を画像表示部３に出力する。
【０２２４】
ここで、図１４のフローチャートの説明に戻る。
【０２２５】
ステップＳ６の処理により画像合成部１５より複数の画像が合成されることによりノイズが除去された画像が出力されると、ステップＳ７において、画像表示部３は、供給された画像を表示する。
【０２２６】
以上の処理により、遮蔽領域では、フレーム番号（-k）からフレーム番号（-k+1）の動きベクトルと、フレーム番号（-k+1）からフレーム番号（-k+2）への動きベクトルとを比較し、差が一定以上大きければ、遮蔽された背景部であると考えて、その動きベクトルが排除されていたが、この処理が全ての画素に施されると、遮蔽されていない領域でも排除が行なわれてしまう恐れがあった。特に動きベクトルの精度が低い場合に、誤差によって動きベクトルの急激な変化が起こる画素では、誤認識される恐れがある。そこで、以上の処理により、遮蔽マップMoの情報に基づいて、遮蔽マップ以外の部分には、この処理が施されないようにすることで、ロバストな処理を実現することが可能となる。
【０２２７】
尚、以上においては、撮像部１により撮像された画像を、ノイズ除去して画像表示部３に表示する例について説明してきたが、画像は撮像された画像以外の画像であっても良いし、ノイズ除去した画像は表示する以外の用途に用いるようにしても良く、例えば、記録されている画像、または、配信されてくる画像をノイズ除去するようにしてもよいし、ノイズ除去した画像を表示するのではなく、例えば、記録したり、または配信するようにしても良いことは言うまでもない。
【０２２８】
ところで、上述した一連の画像処理は、ハードウェアにより実行させることもできるが、ソフトウェアにより実行させることもできる。一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、記録媒体からインストールされる。
【０２２９】
図２８は、汎用のパーソナルコンピュータの構成例を示している。このパーソナルコンピュータは、CPU(Central Processing Unit)１００１を内蔵している。CPU１００１にはバス１００４を介して、入出力インタフェース１００５が接続されている。バス１００４には、ROM(Read Only Memory)１００２およびRAM(Random Access Memory)１００３が接続されている。
【０２３０】
入出力インタフェース１００５には、ユーザが操作コマンドを入力するキーボード、マウスなどの入力デバイスよりなる入力部１００６、処理操作画面や処理結果の画像を表示デバイスに出力する出力部１００７、プログラムや各種データを格納するハードディスクドライブなどよりなる記憶部１００８、LAN（Local Area Network）アダプタなどよりなり、インターネットに代表されるネットワークを介した通信処理を実行する通信部１００９が接続されている。また、磁気ディスク（フレキシブルディスクを含む）、光ディスク（CD-ROM(Compact Disc-Read Only Memory)、DVD(Digital Versatile Disc)を含む）、光磁気ディスク（ＭＤ(Mini Disc)を含む）、もしくは半導体メモリなどのリムーバブルメディア１０１１に対してデータを読み書きするドライブ１０１０が接続されている。
【０２３１】
CPU１００１は、ROM１００２に記憶されているプログラム、または磁気ディスク、光ディスク、光磁気ディスク、もしくは半導体メモリ等のリムーバブルメディア１０１１から読み出されて記憶部１００８にインストールされ、記憶部１００８からRAM１００３にロードされたプログラムに従って各種の処理を実行する。RAM１００３にはまた、CPU１００１が各種の処理を実行する上において必要なデータなども適宜記憶される。
【０２３２】
尚、本明細書において、記録媒体に記録されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理は、もちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理を含むものである。
【０２３３】
また、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
【図面の簡単な説明】
【０２３４】
【図１】本発明を適用した画像処理システムの一実施の形態の構成例を示すブロック図である。
【図２】図１のオクルージョン処理部の構成例を説明するブロック図である。
【図３】遮蔽領域を説明する図である。
【図４】遮蔽領域を説明する図である。
【図５】遮蔽マップを説明する図である。
【図６】露出領域を説明する図である。
【図７】オクルージョン距離マップの例を説明する図である。
【図８】露出領域を説明する図である。
【図９】プロットマップを説明する図である。
【図１０】オクルージョン距離マップを説明する図である。
【図１１】図２の遮蔽検出部の構成例を説明するブロック図である。
【図１２】図２の露出検出部の構成例を説明するブロック図である。
【図１３】図２の直接動きベクトル計算部の構成例を説明するブロック図である。
【図１４】ノイズ除去処理を説明するフローチャートである。
【図１５】オクルージョン処理を説明するフローチャートである。
【図１６】露出検出処理を説明するフローチャートである。
【図１７】プロットマップ作成処理を説明するフローチャートである。
【図１８】プロットマップ作成処理を説明する図である。
【図１９】オクルージョン距離マップ作成処理を説明するフローチャートである。
【図２０】遮蔽検出処理を説明するフローチャートである。
【図２１】遮蔽検出処理を説明する図である。
【図２２】直接動きベクトル計算処理を説明する図である。
【図２３】直接動きベクトル計算処理を説明するフローチャートである。
【図２４】ｋ＝１の直接動きベクトル計算処理を説明するフローチャートである。
【図２５】ｋ＞１の直接動きベクトル計算処理を説明するフローチャートである。
【図２６】ｋ＞１の遮蔽部直接動きベクトル計算処理を説明するフローチャートである。
【図２７】画像合成処理を説明するフローチャートである。
【図２８】パーソナルコンピュータの構成例を説明する図である。
【符号の説明】
【０２３５】
２  ノイズ除去装置，  １１  画像バッファ部，  １２  動きベクトル計算部，  １３  動きベクトルバッファ，  １４  オクルージョン処理部，  １５  画像合成部，  ３１  遮蔽検出部，  ３２  露出検出部，  ３３  直接動きベクトル計算部
【図１】
2008042659.tif 000003
【図２】
2008042659.tif 000004
【図３】
2008042659.tif 000005
【図４】
2008042659.tif 000006
【図５】
2008042659.tif 000007
【図６】
2008042659.tif 000008
【図７】
2008042659.tif 000009
【図８】
2008042659.tif 000010
【図９】
2008042659.tif 000011
【図１０】
2008042659.tif 000012
【図１１】
2008042659.tif 000013
【図１２】
2008042659.tif 000014
【図１３】
2008042659.tif 000015
【図１４】
2008042659.tif 000016
【図１５】
2008042659.tif 000017
【図１６】
2008042659.tif 000018
【図１７】
2008042659.tif 000019
【図１８】
2008042659.tif 000020
【図１９】
2008042659.tif 000021
【図２０】
2008042659.tif 000022
【図２１】
2008042659.tif 000023
【図２２】
2008042659.tif 000024
【図２３】
2008042659.tif 000025
【図２４】
2008042659.tif 000026
【図２５】
2008042659.tif 000027
【図２６】
2008042659.tif 000028
【図２７】
2008042659.tif 000029
【図２８】
2008042659.tif 000030