(57)【要約】【課題】  異なる条件の撮像画像それぞれに対して良質なオプティカルフローを得ることができなかった。【解決手段】  画像処理装置は、複数の入力画像の間の、少なくとも一部の画素の動きベクトルの集合であるオプティカルフローを導出する画像処理装置であって、前記入力画像のコントラスト値を取得する取得手段と、前記取得手段により取得されたコントラスト値と、前記複数の入力画像の間の相関を示すデータ項と、前記複数の入力画像の間の動きベクトルの平滑化の度合いを示す平滑化項とからなるエネルギー関数に基づいて、前記オプティカルフローを導出する導出手段と、を有することを特徴とする。【選択図】  図４
2019204193.tif 000002
【特許請求の範囲】
【請求項１】
複数の入力画像の間の、少なくとも一部の画素の動きベクトルの集合であるオプティカルフローを導出する画像処理装置であって、
前記入力画像のコントラスト値を取得する取得手段と、
前記取得手段により取得されたコントラスト値と、前記複数の入力画像の間の相関を示すデータ項と、前記複数の入力画像の間の動きベクトルの平滑化の度合いを示す平滑化項とからなるエネルギー関数に基づいて、前記オプティカルフローを導出する導出手段と、
を有することを特徴とする画像処理装置。
【請求項２】
前記エネルギー関数は、前記データ項と前記平滑化項との加重平均からなり、
前記加重平均の係数は、前記取得手段により取得されたコントラスト値により決定されることを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記取得手段は、入力画像のヒストグラムを解析してコントラスト値を取得することを特徴とする請求項１又は２に記載の画像処理装置。
【請求項４】
前記取得手段は、データ項を生成する領域を含む領域内の画素値の差からコントラスト値を取得することを特徴とする請求項１又は２に記載の画像処理装置。
【請求項５】
前記取得手段は、前記領域内の最大の画素値と最小の画素値との差をコントラスト値とすることを特徴とする請求項４に記載の画像処理装置。
【請求項６】
前記取得手段は、前記入力画像の画素値の微分値からコントラスト値を取得することを特徴とする請求項１又は２に記載の画像処理装置。
【請求項７】
前記エネルギー関数の次数をＮ、前記コントラスト値をＣ、感度を示す値をｒ（ｒは０．５から２の範囲の実数）としたとき、前記係数は少なくともＣのＮｒ乗で計算される項を含むことを特徴とする請求項２に記載の画像処理装置。
【請求項８】
前記導出手段は、テンプレートマッチングによる動き探索によりオプティカルフローを導出することを特徴とする請求項１乃至７の何れか一項に記載の画像処理装置。
【請求項９】
前記導出手段は、勾配法によりオプティカルフローを導出することを特徴とする請求項１乃至７の何れか一項に記載の画像処理装置。
【請求項１０】
複数の入力画像の間の、少なくとも一部の画素の動きベクトルの集合であるオプティカルフローを導出する画像処理方法であって、
前記入力画像のコントラスト値を取得する取得し、
前記取得されたコントラスト値と、前記複数の入力画像の間の相関を示すデータ項と、前記複数の入力画像の間の動きベクトルの平滑化の度合いを示す平滑化項とからなるエネルギー関数に基づいて、前記オプティカルフローを導出する
ことを特徴とする画像処理方法。
【請求項１１】
コンピュータを請求項１乃至９の何れか一項に記載の画像処理装置として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、入力画像の良質なオプティカルフローを導出する画像処理装置、画像処理方法及びプログラムに関する。
【背景技術】
【０００２】
近年、画像間の各画素の対応付けを行う技術の重要性が高まっている。対応とは、着目画像の画素と同一であるとみなす参照画像の画素の関係であり、二点の座標で表現できる。ステレオや多視点画像を入力した場合は、画素の対応関係から被写体の奥行きを算出できるため、３次元画像処理に応用することも可能である。また、連続して撮像された画像（動画）を入力し、その対応関係を相対座標として表現すれば、それは動きベクトルとなる。複数の入力画像の間の、少なくとも一部の画素の動きベクトルの集合（以下「オプティカルフロー」と呼ぶ）を利用することによって、動体追跡、動画の防振、フレーム補間などが可能となる。
【０００３】
オプティカルフローを導出する代表的な手法としては勾配法とテンプレートマッチング法がある。
【０００４】
勾配法は、画素の時空間の輝度変化の方向と大きさから、オプティカルフローを算出する。基本的な勾配法の考え方は、着目画素の周辺の画素は同じ動きであると仮定し、着目画素を中心とするパッチ内の画素の平均的な時空間の輝度変化からオプティカルフローを算出する。代表的な方法には、Ｌｕｃａｓ  Ｋａｎａｄｅ法（以下、ＬＫ法，非特許文献１）がある。ＬＫ法は、移動前後のパッチの画像相関をＳＳＤ（Ｓｕｍ  ｏｆ  Ｓｑｕａｒｅｄ  Ｄｉｆｆｅｒｅｃｅ）で表現し、ＳＳＤをテイラー展開してＳＳＤが最小となるようにする。つまり相関が最も高い移動量を導出する方程式を解く。この移動量が着目画素の動きである。このとき、画像の相関を示す計算式をデータ項と呼ぶ。データ項だけで動きを導出する際、画像に歪が存在する場合に正しい相関が得られない。更に、相関が高い移動量が複数あり解が一意に定まらないなどのケースがある。そのため、データ項にオプティカルフローの平滑化（連続性、滑らかさ）の度合いを示す平滑化項を加重平均（重み付き加算）し、この和をエネルギー関数として、エネルギー関数が最も小さくなる移動量を算出する手法が使われる。平滑化項を利用した方式には、非特許文献１がある。
【０００５】
また、勾配法では導出できる動きが小さいため、複数の縮小画像から構成されるピラミッド画像を用いることがある。縮小画像で導出したオプティカルフローを一段大きい画像の初期値として利用することによって、縮小画像では大きな動きを検出し、より大きな画像では、縮小画像で検出した動きの差分、つまり、より高精度の動きベクトルを導出する。代表的な手法には、非特許文献２がある。
【０００６】
テンプレートマッチングは、着目画素を中心とするパッチ（以下、着目領域）に対し、参照画像上の様々な位置にパッチ（以下、参照領域）を設定する。そして着目領域の参照領域のエネルギー関数を算出し、エネルギー関数が最小となる参照領域の相対位置に基づいて動きベクトルを導出する。着目画素を走査しながら、動きベクトルを導出することによって、オプティカルフローを導出することになる。一般的なテンプレートマッチングでは、エネルギーはＳＳＤやＳＡＤ（Ｓｕｍ  ｏｆ  Ａｂｓｏｌｕｔｅ  Ｄｉｆｆｅｒｅｎｃｅ）を用いるが、より高度な手法として勾配法と同様に平滑化項を重み付き加算した値をエネルギー関数として用いることもできる。
【先行技術文献】
【非特許文献】
【０００７】
【非特許文献１】Ｂ．  Ｄ．  Ｌｕｃａｓ  ａｎｄ  Ｔ．  Ｋａｎａｄｅ  （１９８１），  Ａｎ  ｉｔｅｒａｔｉｖｅ  ｉｍａｇｅ  ｒｅｇｉｓｔｒａｔｉｏｎ  ｔｅｃｈｎｉｑｕｅ  ｗｉｔｈ  ａｎ  ａｐｐｌｉｃａｔｉｏｎ  ｔｏ  ｓｔｅｒｅｏ  ｖｉｓｉｏｎ  Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  Ｉｍａｇｉｎｇ  Ｕｎｄｅｒｓｔａｎｄｉｎｇ  Ｗｏｒｋｓｈｏｐ，  ｐａｇｅｓ  １２１−１３０
【非特許文献２】Ｐｙｒａｍｉｄａｌ  Ｉｍｐｌｅｍｅｎｔａｔｉｏｎ  ｏｆ  ｔｈｅ  Ｌｕｃａｓ  Ｋａｎａｄｅ  Ｆｅａｔｕｒｅ  Ｔｒａｃｋｅｒ  Ｄｅｓｃｒｉｐｔｉｏｎ  ｏｆ  ｔｈｅ  ａｌｇｏｒｉｔｈｍ  Ｊｅａｎ−Ｙｖｅｓ  Ｂｏｕｇｕｅｔ  Ｈｔｔｐ：／／ｒｏｂｏｔｓ．ｓｔａｎｆｏｒｄ．ｅｄｕ／ｃｓ２２３ｂ０４／ａｌｇｏ＿ｔｒａｃｋｉｎｇ．ｐｄｆ
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、非特許文献１のように単純な動きの平均による平滑化項を利用する方式では、画像に対し平滑化項の係数を試行錯誤的に決定していた。そのため、異なる条件それぞれにおいて最良の結果を得ることができなった。
【課題を解決するための手段】
【０００９】
上記の課題を解決するために本発明の画像処理装置は、複数の入力画像の間の、少なくとも一部の画素の動きベクトルの集合であるオプティカルフローを導出する画像処理装置であって、前記入力画像のコントラスト値を取得する取得手段と、前記取得手段により取得されたコントラスト値と、前記複数の入力画像の間の相関を示すデータ項と、前記複数の入力画像の間の動きベクトルの平滑化の度合いを示す平滑化項とからなるエネルギー関数に基づいて、前記オプティカルフローを導出する導出手段と、を有することを特徴とする。
【発明の効果】
【００１０】
本発明によれば、撮像条件が異なる画像それぞれに対して、より良質なオプティカルフローを得ることができる。
【図面の簡単な説明】
【００１１】
【図１】画像処理装置の構成を示すブロック図
【図２】オプティカルフローの概念図
【図３】ＯＦ計算部１１０の内部構成を示すブロック図
【図４】実施例１のオプティカルフロー算出方法を示すフローチャート
【図５】着目画素とその周辺の画素の拡大例を示す図
【図６】実施例１における平滑化ベクトル算出方法を説明するフローチャート
【図７】勾配法における動きベクトル算出方法を示すフローチャート
【図８】実施例２における平滑化ベクトル算出方法を説明するフローチャート
【図９】動き探索における動きベクトル算出方法を示すフローチャート
【図１０】実施例３における平滑化ベクトル算出方法を説明するフローチャート
【発明を実施するための形態】
【００１２】
［実施例１］
本実施例では、階層処理を利用したオプティカルフローを導出する方法について説明する。
【００１３】
以下、本実施例の構成を述べる。図１は、本実施例の画像処理装置１００の構成を示す図である。
【００１４】
画像処理装置１００は、ＣＰＵ１０１と、ＲＡＭ１０２と、ＲＯＭ１０３と、記憶部１０４と、入力インターフェース１０５と、出力インターフェース１０６と、システムバス１０７とから構成される。外部メモリ１０８は入力インターフェース１０５と接続されている。表示装置１０９は出力インターフェース１０６に接続されている。またＣＰＵ１０１の中の一部は他のモジュールと協働してＯＦ計算部１１０として機能する。なお本実施例において、オプティカルフローを「ＯＦ」と呼ぶ。
【００１５】
ＣＰＵ１０１は、画像処理装置１００の各構成を統括的に制御するプロセッサである。ＯＦ計算部１１０は、他のモジュール（例：ＲＡＭ１０２）と協働してＣＰＵ１０１の一機能として後述するオプティカルフローを導出する。ＲＡＭ１０２は、ＣＰＵ１０１の主メモリ、及びワークエリアとして機能するメモリである。そして、ＲＯＭ１０３は画像処理装置１００内の処理に用いられるプログラム等を格納するメモリである。ＣＰＵ１０１（ＯＦ計算部１１０）は、ＲＡＭ１０２をワークエリアとしてＲＯＭ１０３に格納されたプログラムを実行することで、後述する様々な処理を実行する。記憶部１０４は、画像処理装置１００での処理に用いる画像データや、処理のためのパラメータなどを記憶する記憶デバイスである。記憶部１０４としてはＨＤＤや光ディスクドライブ、フラッシュメモリなどを用いることができる。
【００１６】
入力インターフェース１０５は、例えばＵＳＢやＩＥＥＥ１３９４、ＳＡＴＡなどのシリアルバスインターフェースである。画像処理装置１００は、この入力インターフェース１０５を介して、外部メモリ１０８（例えば、ハードディスク、メモリカード、ＣＦカード、ＳＤカード、ＵＳＢメモリ）から処理対象の画像データ等を取得することができる。外部メモリ１０８としてカメラなどの画像撮像装置であっても良い。出力インターフェース１０６は、例えばＤＶＩやＨＤＭＩ（登録商標）などの映像出力端子である。画像処理装置１００は、この出力インターフェース１０６を介して、表示装置１０９（液晶ディスプレイなどの画像表示デバイス）に、画像処理装置１００で処理した画像データを出力することができる。入力インターフェース１０５及び出力インターフェース１０６と外部装置との情報のやりとりは有線・無線を問わない。なお、画像処理装置１００の構成要素は上記のもの以外にも存在するが、本発明の主眼ではないため、説明を省略する。
【００１７】
本実施例における用語と記法について説明する。画像の各画素に対応する動きベクトルをマップ化したものをオプティカルフロー（ＯＦ）と表現する。つまり、オプティカルフローは入力画像と同じ解像度を持ち、各画素に対応する要素が浮動小数点の二次元ベクトルとして表現されるデータである。なお、オプティカルフローの解像度は入力画像と同じであることは必須ではなく、少なくとも一部の画素の動きベクトルの集合であっても良い。
【００１８】
画像データをＩとし、画素位置を表す座標を（ｘ，ｙ）としたとき、Ｉ（ｘ，ｙ）として画像の画素値を取得するものとする。画素は、黒を０、白を１とする浮動小数点のモノクロデータであるものとして説明するが、これに限定されず、例えば８ビットの整数データ等であってもよい。オプティカルフローに対しても同様に、座標（ｘ，ｙ）に対し、ベクトル（ｕ（ｘ，ｙ），ｖ（ｘ，ｙ））を取得するものとする。前述の表記法において座標値を実数で渡した場合には、補間によって算出された画素値、あるいは、ベクトルを得るものとする。補間としては、例えばバイリニアやバイキュービック補間を用いることができるが、これらの方法に限定はない。オプティカルフローの概念図を図２に示す。図２は、人物２０３が歩いているシーンを動いているカメラで撮影していることを想定しており、画像２０１、２０２において被写体として人物２０３、家２０４が写っている。実際には、人物の身体の各部の動きベクトルは異なるが、ここでは単純化して、人物２０３はベクトル２０５の方向に、家２０４はベクトル２０６の方向に一様に動いているものとする。ここでは、人物２０３の動きベクトルを（１０，５）、家２０４動きベクトルを（−５，０）とする。背景の動きベクトルは（０，０）とする。この場合、画像２０１を基準としたオプティカルフローは、画素の座標（ｘ，ｙ）が人物２０３に含まれる場合、（ｕ（ｘ，ｙ），ｖ（ｘ，ｙ））＝（１０，５）となる。また、家２０４に含まれる場合、（ｕ（ｘ，ｙ），ｖ（ｘ，ｙ））＝（−５，０）、背景に含まれる場合は、（ｕ（ｘ，ｙ），ｖ（ｘ，ｙ））＝（０，０）となる。本実施例では、単一のカメラで撮像された異なる時刻の画像である画像１、画像２を入力してオプティカルフローを算出するものとして説明する。なお、異なるカメラで撮影された同一もしくは異なる時刻の画像を入力してもよい。異なるカメラで同一時刻に撮影された画像の場合は、オプティカルフローから被写体の奥行きを算出することも可能である。
【００１９】
本実施例では、画像の解像度を段階的に増加させる階層処理を用いるが、Ｉ［１］は、第一の階層の画像というように、変数に［］を付加して階層を表すものとする。フローの説明において処理ステップは、特別な記述がない限り、図中の矢印で示される順序で実行されるものとする。なお、処理ステップに依存関係がない場合には、処理ステップを入れ替えてもよい。各ステップの処理は、フレーム単位で行われ、各ステップ内で着目画素を走査することによって、全ての画素に処理が実施される画像単位の処理として説明するが、これに限定されない。画素単位、あるいは複数画素単位で実施することも可能である。
【００２０】
以下、本実施例の画像処理装置１００における処理を、図４に示すフローチャートを用いて説明する。本実施例では、ＣＰＵ１０１（またはＯＦ計算部１１０）がＲＯＭ１０３に格納された図４で説明するフローチャートに関するプログラムを、ＣＰＵ１０１が実行するものとして説明する。また、特別な記述がない場合、入出力データはＲＡＭ１０２から入力しＲＡＭ１０２へ出力されるものとする。
【００２１】
Ｓ４０１０では、着目画像データと参照画像データを取得する。本実施例では、２枚の画像データのみを取得する場合について説明するが、複数枚の画像や動画データを取得しても構わない。画像が３枚以上ある場合や、動画の場合は、対象となる２枚の画像、もしくはフレームを選択して連続的に図４で示される本フローを処理することになる。
【００２２】
Ｓ４０２０では、最大階層数（ｍａｘ＿ｌｖ）を取得し、ｌｖ＝０〜ｍａｘ＿ｌｖまでの縮小画像を生成する。ｍａｘ＿ｌｖはあらかじめ設定しておくものとし、本実施例では、ｍａｘ＿ｌｖを５として説明する。ｌｖは、階層をあらわすインデックスであり等倍画像を０とし、最小画像階層のｌｖが５となる。つまり階層数は６となる。なお、本実施例ではｍａｘｌ＿ｌｖは、最小画像の幅を等倍画像の５％以下にするものして設定した。数式１を使ってｍａｘ＿ｌｖの計算方法を説明する。
【００２３】
【数１】
2019204193.tif 000003
【００２４】
数式１の結果を切り上げた値である５がｍａｘ＿ｌｖとなる。もし、最小画像の幅を等倍画像の１０％以下とするなら、ｍａｘ＿ｌｖは４でよい。最小画像の幅は、画像間の動き検出対象の動きが大きいほど小さく設定すべきであるが、処理時間など様々な要素によって応じて最適な設定をすることが望ましい。なお、本実施例では、画像の各階層間の縮小倍率を表すｓｃａｌｅ＿ｆａｃｔｏｒ（以下ｓｆ）を０．５であるものして説明する。階層＝ｌｖの縮小率ｓは以下の数式で算出される。
【００２５】
【数２】
2019204193.tif 000004
【００２６】
Ｉ１［ｌｖ］、Ｉ２［ｌｖ］は着目画像と参照画像をそれぞれ、数式２で与えられる縮小率ｓ倍に縮小した画像である。しかし、ｓｆは０．５に限定されず、０．７や０．９といった値をとってもよい。本実施例では、縮小はバイキュービック法を用いるものとする。縮小法はこれに限定されず、例えばＬａｎｃｚｏｓ  ３−ｌｏｂｅｄ法などを用いてもよい。なお、ｌｖ＝０の場合は、ｓ＝１となるために縮小は不要であり、Ｓ４０１０で取得した着目画像と参照画像データをそれぞれ、Ｉ１［０］，Ｉ２［０］として表現するものとする。
【００２７】
Ｓ４０３０では、ｌｖに最大階層ｍａｘ＿ｌｖを設定する。
【００２８】
Ｓ４０４０では、着目画像のｌｖ階層データのコントラスト値を算出する。本実施例では、画像ヒストグラムから標準偏差Ｓを算出し、これをコントラスト値とする。なお、コントラスト値は標準偏差に限定されず、画像ヒストグラムの四分位偏差などを用いてもよい。またコントラスト値は着目画像のコントラスト値ではなく、参照画像のコントラスト値、或いは着目画像と参照画像のコントラスト値の平均などであってもよい。
【００２９】
Ｓ４０５０では、ｌｖ＝ｍａｘ＿ｌｖであるか否かを判定して処理を遷移する。判定結果が真の場合はＳ４０５５へ遷移し、偽の場合はＳ４０６０へ遷移する。
【００３０】
Ｓ４０５５では、ＯＦ初期化部が全画素の動きベクトルを全て０にしたオプティカルフロー（平準化オプティカルフロー）を生成し、Ｓ４０９０へ遷移する。
【００３１】
Ｓ４０６０では、ｌｖ＋１階層のオプティカルフローを拡大し、拡大オプティカルフローを生成する。具体的には、ｌｖ＋１階層で算出したオプティカルフローを１／ｓｆ倍に拡大し、ベクトルの要素も１／ｓｆ倍して（ｕ’（ｘ，ｙ），ｖ’（ｘ，ｙ））を生成する。拡大は、ＲＧＢ画像の拡大において、Ｒ、Ｇ，Ｂそれぞれの成分を独立して処理するのと同様に、動きベクトルのＸ成分、Ｙ成分を独立して処理する。本実施例では、バイリニア補間によって拡大するものとするが補間方法はバイキュービック法など別な補間を用いてもよい。本実施例では、ｓｆが０．５であるため、１／０．５、つまり２倍にオプティカルフローを拡大する。以下の数式で算出することができる。
【００３２】
【数３】
2019204193.tif 000005
【００３３】
これらの処理を全画素分実行し、一画像分の拡大オプティカルフローを得る。以後、Ｉ１＝Ｉ１［ｌｖ］とＩ２＝Ｉ２［ｌｖ］として説明する。
【００３４】
Ｓ４０７０では、Ｉ２の各画素をオプティカルフローに従って移動させ、ワーピング画像Ｉ２ｗを生成する。ワーピングした画像は以下の数式で算出することができる。
【００３５】
【数４】
2019204193.tif 000006
【００３６】
これらの処理を全画素分実行する。
【００３７】
Ｓ４０８０では、標準偏差、着目画像のｌｖ階層データ、拡大オプティカルフローから、平滑化オプティカルフローを生成する。なお、ｌｖ＝０の場合には、ワーピング画像は生成していないため参照画像をワーピング画像とみなして処理することになる。また、平滑化オプティカルフローも生成していないため、Ｓ４０８０で生成したオプティカルフローを平滑化オプティカルフローとみなして処理をする。処理の詳細は後述する。
【００３８】
Ｓ４１００では、ｌｖ＝０であるか否かを判定し、ｌｖ＝０の場合は本フローにおける処理を終了する。ｌｖ≠０の場合はＳ４１２０へ遷移する。
【００３９】
Ｓ４１２０では、ｌｖ＝ｌｖ−１とする。
【００４０】
Ｓ４０４０からＳ４１２０の処理で一階層分のオプティカルフローを生成する。このオプティカルフローは、ｌｖ≠０では、次の階層処理の入力となり、ｌｖ＝０の場合は、最終的なオプティカルフローの出力となる。
【００４１】
以下、Ｓ４０８０に関わる平滑化ベクトルの算出方法について説明する。平滑化ベクトルは、以下の数式によって算出できる。
【００４２】
【数５】
2019204193.tif 000007
【００４３】
【数６】
2019204193.tif 000008
【００４４】
ｌｕｍａ＿ｔｈは、被写体の輝度差を区別する閾値ある。ＳはＳ４０４０で算出したコントラスト値に相当する値である。ｋｓはＳを閾値に変換する係数であり、本実施例では０．５とする。本実施例では、コントラスト値に基づいて、ｌｕｍａ＿ｔｈを設定するものとして説明したが固定値であってもよい。そのときは、０．０５から０．３の値で値を設定することが適当である。Ωは着目画素（ｘ，ｙ）を中心とする７ｘ７の周辺領域を示すものとする。また、（ｘｉ，ｙｉ）は７×７領域に含まれる各画素の相対座標である。なお、本実施例では７×７として説明しているがこれに限定さない。Ｘｅｘ＝｛Ａｅｘ｜Ｂｅｘ｝は、集合Ａｅｘについて、Ｂｅｘという条件を満足する要素を抽出して、集合Ｘｅｘを生成する表記とする。Ｘは動きベクトル、つまり、二次元ベクトルの集合である。つまり、数６は着目画素の画素値に近い周辺画素を抽出しその画素に対応する動きを抽出する。この抽出について図５を使って説明する。図５は着目画素とその周辺の画素の拡大例を示す図である。中央の画素が着目画素である。網掛けは画素値を表し、網掛け部分の画素は図中（１）の動きを、網掛けのない画素は（２）の動きであるものとする。また、網掛けの画素を着目画素に近い画素とし、それに対応する動きベクトルを抽出した場合、網掛けの画素は２２個であるため、集合Ｘとして２２本の動きベクトルの集合が得られることになる。抽出した動きベクトルを利用して以下の計算を行う。
【００４５】
【数７】
2019204193.tif 000009
【００４６】
Ｘｕ，Ｘｖは、二次元ベクトルの集合であるＸに対し、動きべクトルの垂直成分、水平成分のそれぞれの集合とする。ｍｅｄｉａｎ（Ｚ）は、数値の集合Ｚに対し、その中央値を返す関数である。数７は、集合Ｘに対し、水平、垂直成分の中央値を平滑化ベクトルとして計算することを示している。中央値をとる意味について図５を使って補足する。動きベクトルの集合を取得しても、全てが小数画素精度で全て同一とは限らない。中には外れ値が存在する可能性もある。そのため、中央値をとることによって外れ値を除外し、集合Ｘに対する代表値を算出している。なお、７×７＝４９の周辺画素に対応する動きベクトルで中央値を計算する場合、領域の支配的な成分は（２）の動きであるため、（２）の動きが誤って選択されてしまうため、数６を使って集合Ｘを生成することは重要である。
【００４７】
以下、数６と７で表現した平滑化ベクトルの算出方法について図６を使って説明する。図６は実施例１における平滑化ベクトル算出方法を説明するフローチャートである。
【００４８】
Ｓ６０１０では、着目画素周辺の画素群を取得する。本実施例では、着目画素を中心とする７×７の領域の画素を取得するものとする。
【００４９】
Ｓ６０２０では、着目画素周辺の画素に対応する複数の動きベクトル群を取得する。
【００５０】
Ｓ６０３０では、着目画素に対し、画素の絶対値差がｌｕｍａ＿ｔｈ未満の画素を抽出し、それに対応する動きベクトルの集合をＸとする。
【００５１】
Ｓ６０４０では、集合Ｘに含まれ動きベクトルの水平成分の中央値を算出しｕｓｍｏｏｔｈとする。中央値の算出は、集合に含まれる数値、つまり、集合Ｘに含まれる動きベクトルの水平成分を抽出してソートし、その中央値を返す。ソート方法はクイックソートとするが、方法に限定はなく、バブルソートなど他の方法をとっても同様の効果を得られる。
【００５２】
Ｓ６０５０では、集合Ｘに含まれ動きベクトルの垂直成分の中央値を算出しｖｓｍｏｏｔｈとする。詳細はＳ６０４０と同様である。
【００５３】
本処理を全画素分実行して、平滑化動きベクトルの全画面分の集合である平滑化オプティカルフローを得る。
【００５４】
本実施例では、画素値が着目画素に近い周辺画素を抽出し、それら画素に対応する動きベクトルの平滑化の度合いを示す平滑化項を作るための母集団とした。よって、輝度が類似した周辺画素は同一被写体に含まれる可能性が高い。そのため、同一被写体に含まれる画素の動きを使って平滑化することになり、結果として境界部分で動き混じることがなく、高精度な動きを検出できる。
【００５５】
以下、Ｓ４１００の処理に関わる処理について説明する。Ｓ４１００は、着目画素（ｘ，ｙ）に対し、エネルギー関数を最小化する動きベクトル（ｕｏｕｔ（ｘ，ｙ），ｖｏｕｔ（ｘ，ｙ））を勾配法を用いて推定する処理である。ここで、エネルギー関数について説明する。エネルギー関数の基本は複数の画像間の相関を示すデータ項と呼ばれる項であり、データ項は以下の数式で定義される。
【００５６】
【数８】
2019204193.tif 000010
【００５７】
【数９】
2019204193.tif 000011
【００５８】
Ｉ２ｗは数４に従ってＩ２をワーピングした画像である。ｆはＩ１とＩ２ｗの違いをエネルギーとして表す関数であり、絶対値や差分２乗を用いることができる。Ｂは着目画素（ｘ，ｙ）を中心としたパッチ領域を表しており、例えば７×７のパッチを考えた場合、数９は、ω、ηは−３から３までの整数値をとってρ（ｘ＋ω、ｙ＋η）に対する積算処理を表す。しかし、画像に歪みがある、テクスチャが存在しない場合など、数９が最適なエネルギー関数を表すとは限らない。そこで、この問題を解決するために、拘束条件として、オプティカルフローを滑らかにするための平滑化項を追加する。このエネルギー関数Ｅ（ｘ，ｙ）は、入力画像のコントラスト値とデータ項と平滑化項とに基づいて決定される。以下が平滑化項を追加した数式である。
【００５９】
【数１０】
2019204193.tif 000012
【００６０】
φは（ｕ’（ｘ，ｙ），ｖ’（ｘ，ｙ））と（ｕｓｍｏｏｔｈ（ｘ，ｙ），ｖｓｍｏｏｔｈ（ｘ，ｙ））の違いを表す関数であり、絶対値や差分２乗を用いることができる。（ｕ’（ｘ，ｙ），ｖ’（ｘ，ｙ））は、Ｓ４０６０で拡大したオプティカルフローである。ｕｓｍｏｏｔｈ（ｘ，ｙ）、ｖｓｍｏｏｔｈ（ｘ，ｙ）は平滑化ベクトルで、Ｓ４０８０で算出したオプティカルフローの一要素である。（ｄｕ，ｄｖ）は、本来求めるべき動きベクトル（ｕｏｕｔ（ｘ，ｙ），ｖｏｕｔ（ｘ，ｙ））に対し、（ｕ’（ｘ，ｙ），ｖ’（ｘ，ｙ））の差である。θは平滑化項φの寄与度を決定する係数であり、計算方法は後述する。数式１０においては、エネルギー関数はデータ項と平滑化項との加重平均からなる。本実施例では、ρとφは
【００６１】
【数１１】
2019204193.tif 000013
【００６２】
【数１２】
2019204193.tif 000014
【００６３】
と定義する。
【００６４】
（ｕｏｕｔ（ｘ，ｙ），ｖｏｕｔ（ｘ，ｙ））を算出するために、（ｄｕ，ｄｖ）を算出が必要であるため、（ｄｕ，ｄｖ）を導出する数式を定義する。このとき、ｄｕ，ｄｖが十分に小さいとして、ρをテイラー展開すると、
【００６５】
【数１３】
2019204193.tif 000015
【００６６】
となる。
【００６７】
Ｉ２ｘｗ、Ｉ２ｙｗは、Ｉ２ｗの１次偏微分であり、以下の数式で求めることができる。
【００６８】
【数１４】
2019204193.tif 000016
【００６９】
ただし、１次偏微分は、水平、垂直のＳｏｂｅｌフィルタなどを作用させて求めてもよい。Ｓｏｂｅｌを適用した場合にはノイズ耐性が増す。また、以下の数式を使って、Ｉ２の１次偏微分を算出する。
【００７０】
【数１５】
2019204193.tif 000017
【００７１】
Ｉ２ｘ、Ｉ２ｙを数式４で説明したものと同様にワーピングさせて、Ｉ２ｘｗ、Ｉ２ｙｗを算出してもよい。数式１３はｄｕ、ｄｖの２次関数なので、数式１０を最小にする解析解を求めることが可能である。解析解ｄｕ、ｄｖは以下の連立方程式を満たす。
【００７２】
【数１６】
2019204193.tif 000018
【００７３】
ここで、
【００７４】
【数１７】
2019204193.tif 000019
【００７５】
【数１８】
2019204193.tif 000020
【００７６】
【数１９】
2019204193.tif 000021
【００７７】
と定義される。
【００７８】
θは、下記の数式で計算するものとする。
【００７９】
【数２０】
2019204193.tif 000022
【００８０】
Ｓはコントトラスト値に対応する値であり、本実施例は前述したとおり、画面全体の輝度の標準偏差とする。Ｎはエネルギー関数の次数である。本実施例では、数式１１、数式１２で示したとおり各項の次数が２であるため、Ｎ＝２とする。ｋとｒは、コントトラスト値に応じた係数の変化の強さを決める感度を表現する調整項である。ｒは０．５から４の値をとり、ｋは０．１から０．０００００１の値を取るものとする。本実施例ではｒ＝１．５、ｋ＝０．０１とする。このように本実施例の係数は、エネルギー関数の次数をＮ、コントラスト値をＣ、感度を示す値をｒとしたとき、少なくともＣのＮｒ乗で計算されるものとなる。本実施例ではＢは７ｘ７のパッチとしたが、パッチサイズを変更する場合には、バッチサイズの増減に伴いｋも増減させる必要がある。
【００８１】
数式１５の両辺にＡの逆行列をかけることで、ｄｕ、ｄｖを求めることができる。つまり、最終的な動きは下記の数式で計算できる。
【００８２】
【数２１】
2019204193.tif 000023
【００８３】
【数２２】
2019204193.tif 000024
【００８４】
本処理を全画素分実行することにより、ｌｖ階層のオプティカルフローを得る。
【００８５】
以下、上記の数式の計算を実施するフローについて図７を使って説明する。図７は、勾配法における動きベクトル算出方法を示すフローチャートである。パッチについて着目画素を中心とする７×７の領域であるものとして説明する。なお、説明中で使われる変数ａ，ｃ，ｄ，（ｕ’，ｖ’），θ，（ｕｓｍｏｏｔｈ（ｘ，ｙ），ｖｓｍｏｏｔｈ（ｘ，ｙ），（ｕ’（ｘ，ｙ），ｖ’（ｘ，ｙ））、（ｄｕ，ｄｖ）の変数は、数式１９から数式２４で使われる変数に対応する。ただし、（ｘ，ｙ）といった座標を示す記号は省略する。
【００８６】
Ｓ７０１０では、ワーピング画像のパッチ内の水平一次微分値の二乗和（ａ）を算出する。
【００８７】
一次偏微分値は数式１４で説明した方法であることができる。本実施例では、パッチは７×７であるため、４９個の微分値の総和となる。
【００８８】
Ｓ７０２０では、ワーピング画像のパッチ内の垂直一次偏微分値の二乗和（ｄ）を算出する。
【００８９】
Ｓ７０３０では、ワーピング画像のパッチ内の水平一次偏微分値、垂直一次偏微分値の積の総和（ｃ）を算出する。
【００９０】
Ｓ７０４０では、ワーピング画像のパッチ内の水平一次偏微分と輝度差の積の総和（ｕｔ）を算出する。数式２２の第一行で表現される計算になる。
【００９１】
Ｓ７０５０では、ワーピング画像のパッチ内の垂直一次偏微分と輝度差の積の総和（ｖｔ）を算出する。数式２２の第二行で表現される計算になる。
【００９２】
Ｓ７０６０では、パッチのコントラスト値Ｃを取得し、Ｃからθを算出する。
【００９３】
Ｓ７０７０では、初期ベクトル（ｕ’（ｘ，ｙ），ｖ’（ｘ，ｙ））を取得する。これは、縮小階層で得られたオプティカルフローを拡大して得たオプティカルフローの座標（ｘ，ｙ）に対応する動きベクトルである。
【００９４】
Ｓ７０８０では、平滑化ベクトル（ｕｓｍｏｏｔｈ（ｘ，ｙ），ｖｓｍｏｏｔｈ（ｘ，ｙ））を取得する。前述の通り、図６を使って説明したフローにより得る。
【００９５】
Ｓ７０９０では、ａ，ｃ，ｄ，（ｕ’，ｖ’），θ，（ｕｓｍｏｏｔｈ（ｘ，ｙ），ｖｓｍｏｏｔｈ（ｘ，ｙ），（ｕ’（ｘ，ｙ），ｖ’（ｘ，ｙ））から、（ｄｕ，ｄｖ）を算出する。数式１９から数式２４の式の計算に対応する。
【００９６】
Ｓ７１００では、（ｕ’（ｘ，ｙ），ｖ’（ｘ，ｙ））と（ｄｕ，ｄｖ）から（ｕｏｕｔ（ｘ，ｙ），ｖｏｕｔ（ｘ，ｙ））算出する。数式２２の計算式に対応する。
【００９７】
以上説明した制御で、画像ごとに最適な平滑化項の寄与度（係数）を算出することができる。従来、単純な動きの平均による平滑化項を利用する場合、特に暗いシーン（露出が十分でないシーン）においてはオプティカルフローが正しく導出されないという不具合があった。本実施例により、コントラストに基づいてかかる係数を決定するという特徴から、たとえば暗いシーン（コントラストが抑えられたシーン）においても適切な係数を導出することが可能となった。すなわち撮像条件が異なる画像それぞれに対して、より良質なオプティカルフローを得ることができる。
【００９８】
なお、方程式を解いて（ｕｏｕｔ（ｘ，ｙ），ｖｏｕｔ（ｘ，ｙ））を解析的に算出方法を説明したが、それに限定されない。ＳＯＲ法（Ｓｕｃｃｅｓｓｉｖｅ  Ｏｖｅｒ−Ｒｅｌａｘａｔｉｏｎ、逐次加速緩和法）を用いても、図６を使って説明した平滑化ベクトルを使った平滑化項を用いてエネルギー計算を行い、（ｕｏｕｔ（ｘ，ｙ），ｖｏｕｔ（ｘ，ｙ））を算出できる。本実施例では、基本的な演算をＣＰＵ１０１が行うものとして説明したが、これに限定されず、各ステップの処理を行う専用のハードウェアが演算を行う構成をとってもよい。
【００９９】
［実施例２］
実施例１では、オプティカルフロー検出のために、画面全体のコントラストから平滑化項の寄与度であるθを算出する例を示した。本実施例では、着目画素毎にθを算出する例を示す。
【０１００】
実施例１では図７を使って説明した着目画素の動きベクトルを算出するフローを、本実施例では図８に置き換えている。図８は実施例２における平滑化ベクトル算出方法を説明するフローチャートである。図８は、実施例１で説明した図７に対し、Ｓ８０５１からＳ８０５３が追加され、Ｓ７０６０がＳ８０６０に置き換わっている。図７以外の処理については、実施例１と同じである。
【０１０１】
Ｓ８０５１では、パッチ内の画素値の最大値Ｐｍａｘを取得する。
【０１０２】
Ｓ８０５２では、パッチ内の画素値の最小値Ｐｍｉｎを取得する。
【０１０３】
Ｓ８０５３では、パッチのコントラスト値Ｃを算出する。本実施例におけるコントラスト値Ｃは、パッチ内の画素値の最大値Ｐｍａｘと最小値Ｐｍｉｎとしたとき
【０１０４】
【数２３】
2019204193.tif 000025
【０１０５】
で得るものとする。実施例１で説明したとおりパッチサイズは７×７であるため、４９の要素の最大と最小値を得ることになる。なお、本実施例では、最大値と最小値の差としたが、これに限定されず、四分位数を用い、第１四分位数と第３四分位数の差をとる構成であってもよい。
【０１０６】
Ｓ８０６０は、パッチのコントラスト値Ｃからθを計算する。計算は下記の数式で行われるものとする。
【０１０７】
【数２４】
2019204193.tif 000026
【０１０８】
【数２５】
2019204193.tif 000027
【０１０９】
【数２６】
2019204193.tif 000028
【０１１０】
ｃｌｉｐ（ｖ，ｍｉｎ，ｍａｘ）は、ａがｍａｘ値以上であればｍａｘ値で飽和させて、ｖがｍｉｎ以下であれば、ｍｉｎ値で飽和させる関数である。Ｓは、前述の通り画面の輝度の標準偏差である。Ｋｍｉｎは、最小値を決める係数であり本実施例では０．２とするがこれに限定されない。Ｋｍａｘは、最大値を決める係数であり本実施例では、１．２とするがこれに限定されない。ｃｌｉｐ処理は、パッチ内に画像ノイズが存在する場合、Ｃ値が異常に大きくなる、パッチの領域が平坦でＣ値が小さくなりすぎる場合に、θの取りうる範囲を制限するものである。よって、Ｋｍｉｎ、Ｋｍａｘ想定されるノイズ量に応じて設定されるべきである。Ｋ，ｒ，Ｎは、実施例１の説明と同様である。本実施例では、ｃｌｉｐ関数に与える上限と下限を画面輝度の標準偏差としたがこれに限定されない。例えば、Ｔｍａｘ＝０．３，Ｔｍｉｎ＝０．１のように固定値を設定してもよい。
【０１１１】
以上の処理により、着目画素を中心とするパッチのコントラストを利用することにより、領域適応的にθを算出することができる。そのため例えば、画面内にコントラストが異なる日向領域と日陰領域が存在する場合であっても、それぞれの領域内の動きの算出において、最適なθを決定することができる。
【０１１２】
なお、本実施例では、コントラスト値Ｃを算出するパッチのサイズを、勾配法を適用するパッチのサイズと同じものとしたがこれに限定されない。パッチの中心が勾配法を適用するパッチサイズと同一であればよく、勾配法を適用するパッチサイズよりも大きい、あるいは、小さいパッチを用いてもよい。本実施例では、勾配法を適用するパッチサイズは７×７と比較的小さいため、コントラスト値Ｃ算出を例えば１５×１５のパッチサイズから算出するようにすればより最適なθを算出することができる。しかし、これは、演算量の増加にもつながるので、演算量と性能のバランスをとって設定することになる。
【０１１３】
［実施例３］
実施例１では、勾配法を用いてオプティカルフローを算出する方法を示した。本実施例では、動き探索によってオプティカルフローを算出する方法について説明する。
【０１１４】
実施例１では図７を使って説明した着目画素の動きベクトルを算出するフローを、本実施例では図９に置き換える、つまり、数式２１を置き換えるものになる。本実施例では、数式２１の代わりに以下の数式を用いて（ｄｕ，ｄｖ）を算出する。
【０１１５】
【数２７】
2019204193.tif 000029
【０１１６】
また、数式１０で定義されるエネルギー関数のρとφは以下のように定義するものとする。
【０１１７】
【数２８】
2019204193.tif 000030
【０１１８】
【数２９】
2019204193.tif 000031
【０１１９】
Ｗは探索範囲を示す領域である。例えば、着目画素を中心とする７×７領域とする。本実施例では、（ｄｕ，ｄｖ）をそれぞれ−３から３まで整数単位で変更しながら、７×７＝４９回、数式２７の計算を行い、結果が最も小さくなる（ｄｕ，ｄｖ）を探す全探索処理となる。この結果を数式２２に適用することにより、着目画素の動きベクトルが得られる。
【０１２０】
以下、図９について説明する。図９は、動き探索における動きベクトル算出方法を示すフローチャートである。
【０１２１】
このとき、θは数式２０により得るが、本実施では、数式２８、数式２９に示される通りエネルギー関数の項の次数が１であるため、Ｎ＝１として計算する。
【０１２２】
Ｓ９０１０では、着目画像データ、参照画像データを取得する。
【０１２３】
Ｓ９０２０では、平滑化オプティカルフローデータを取得する。
【０１２４】
Ｓ９０３０では、ｉｎｄｅｘ＝０，ｂｅｓｔ＿ｅ＝ＭＡＸとする。
【０１２５】
Ｓ９０４０では、初期ベクトルを取得とする。図７を使って説明したフローと同様（ｕ’（ｘ，ｙ），ｖ’（ｘ，ｙ））にあたる。
【０１２６】
Ｓ９０５０では、ｉｎｄｅｘに対応する相対座標を取得する。本実施例では、水平、垂直、それぞれ、−３から３まで変化させて組み合わせに０から始まるインデックス値を与えたものを相対座標とする。相対座標の数は４９組になる。
【０１２７】
Ｓ９０６０では、画像データ、平滑化オプティカルフローデータ、相対座標、初期ベクトルからエネルギーを算出しｅとする。
【０１２８】
Ｓ９０７０では、ｅ＜ｂｅｓｔを判定し、判定結果が真の場合にはＳ９０８０へ遷移し、偽の場合にはＳ９０８０へ遷移する。
【０１２９】
Ｓ９０８０では、ｂｅｓｔ＿ｅ＝ｅ，ｂｅｓｔ＿ｉｎｄｅｘ＝ｉｎｄｅｘとする。つまり、Ｓ９０７０でエネルギー関数が小さいと判定された場合に、ｂｅｓｔ＿ｅとｂｅｓｔ＿ｉｎｄｅｘを更新している。
【０１３０】
Ｓ９０９０では、ｉｎｄｅｘ＝ｉｎｄｅｘ＋１とする。
【０１３１】
Ｓ９１００では、全ての相対座標を試したか否かを判定する。本実施例では、４９組の相対座標を使ってエネルギーを算出した否かを判定することになる。判定結果が真の倍にはＳ９１００へ遷移し、偽の場合にはＳ９０５０へ遷移する。
【０１３２】
Ｓ９１１０では、ｂｅｓｔ＿ｉｎｄｅｘに対応する相対座標と初期ベクトルを加算して返す。つまり、ｂｅｓｔ＿ｉｎｄｅｘに対応する相対座標は（ｄｖ，ｄｖ）であり、初期ベクトルは（ｕ’，ｖ’）であるため、本ステップ数式２２に相当する計算を行っている。
【０１３３】
本処理を全画素分実行することにより、着目階層ｌｖのオプティカルフローを得る。
【０１３４】
以上説明した処理制御を行うことで、実施例１同様の効果を得ることができる。
【０１３５】
つまり、実施例１ではエネルギー関数を変形した導出した数式を用いて勾配法を実施しが、実施例２では同じエネルギー関数をテンプレートマッチングに適用し、平滑化項の寄与度の計算も同様に適用できることを示している。なお、本実施例では探索範囲の全ての整数座標に対し、Ｅ（ｘ＋ｕ’（ｘ，ｙ）＋ｄｕ，ｙ＋ｖ’（ｘ，ｙ）＋ｄｖ）を計算する全探索処理として説明したが、これに限定されず、ステップサーチなどで探索する処理を用いてもよい。
【０１３６】
［実施例４］
実施例１では、オプティカルフロー算出処理をＣＰＵが行うものとして説明したが、本本実施例では、ＣＰＵ１０１がＯＦ計算部１１０を制御して実行する例を説明する。なお、特別な記載がないかぎり、基本的な計算は実施例１で説明したものと同様である。
【０１３７】
図３は、ＯＦ計算部１１０の内部構成を示すブロック図である。
【０１３８】
以下、実施例４におけるＯＦ計算部１１０の内部構成と動作について図３（ａ）を使って説明する。ＯＦ計算部１１０は、画像データ取得部３０１と、画像縮小部３０２と、ＯＦ初期化部３０３と，ＯＦ平滑化部３０４と、画像変形部３０５と、ＯＦ算出部３０６と、ＯＦ拡大部３０７とコントラスト算出部３１３から構成される。なお、データ入出力は各処理部をつなぐデータ線経由に加えて、各処理部が自由に図１のＲＡＭ１０２にアクセスできるものとする。またＣＰＵ１０１が各モジュールを制御できるものとして説明する。次にこれらの動作について説明する。画像データ取得部３０１はＲＡＭ１０２に格納された着目画像データと参照画像データを取得する。画像縮小部３０２は最大階層数（ｍａｘ＿ｌｖ）を取得し、ｌｖ＝０〜ｍａｘ＿ｌｖまでの縮小画像を生成する。コントラスト算出部３１３は、縮小画像のヒストグラムの標準偏差をコントラスト値として算出しＣＰＵ１０１へ出力する。ＣＰＵ１０１は、数式２０に基づいて平滑化項の寄与度θを算出し、ＯＦ算出部３０６へ出力する。また、ＣＰＵ１０１は制御している変数ｌｖをｍａｘ＿ｌｖに設定する。ＯＦ初期化部３０３はＯＦ初期化部が全画素の動きベクトルを全て０にしたオプティカルフローを生成する。ＯＦ算出部３０６は、ＯＦ初期化部３０３が生成したオプティカルフローと、着目画像のｌｖ階層画像データデータ、ワーピング画像と、平滑化オプティカルフロー、平滑化項の寄与度θから、エネルギー関数を最小にするようなオプティカルフローを算出する。基本的な計算は、数式２２およびそれを導出するために用いた数式により計算される。
【０１３９】
なお、ＯＦ算出部３０６の二回目以降の動作は以下のようになる。画像変形部３０５が生成したワーピング画像、ワーピング画像と、平滑化オプティカルフローから、オプティカルフローを算出する。ＯＦ拡大部３０７は、ｌｖ＋１階層のオプティカルフローを拡大し、拡大オプティカルフローを生成する。画像変形部３０５はＩ２の各画素をオプティカルフローに従って移動させ、ワーピング画像を生成する。ＯＦ平滑化部３０４は、標準偏差、着目画像のｌｖ階層画像、拡大オプティカルフローから、平滑化オプティカルフローを生成する。処理の詳細は後述する。３０４，３０５，３０６、３０７の処理にて、一階層分のオプティカルフローを生成する。ＣＰＵ１０１は、外部から階層処理制御し、ｌｖ＝０の場合はＯＦ算出部３０６の結果をＲＡＭ１０２へ出力させ、ｌｖ≠０の場合は結果をＯＦ算出部拡大部へ出力させる。また、一回の階層処理において、制御変数ｌｖにｌｖ−１を代入する形で、制御変数を管理する。
【０１４０】
次に、ＯＦ平滑化部３０４の内部ブロック構成とその動作の詳細について図３（ｂ）を使って説明する。ＯＦ平滑化部３０４は、画像データ取得部３０８と、ＯＦ取得部３０９と，ＯＦ取得抽出部３１０と、水平ＯＦ平滑化値算出部３１１と、垂直ＯＦ平滑化値算出部３１２とからなる。ＯＦ取得部３０９は、着目画素周辺の画素に対応する複数の動きベクトルを取得する。ＯＦ取得抽出部３１０は、着目画素に対し、画素の絶対値差がｌｕｍａ＿ｔｈ未満の画素を抽出し、それに対応する動きベクトルの集合をＸとする。水平中央値抽出部は、集合Ｘに含まれ動きベクトルの水平成分の中央値を算出しｕｓｍｏｏｔｈとする。垂直中央値抽出部は、集合Ｘに含まれ動きベクトルの垂直成分の中央値を算出しｖｓｍｏｏｔｈとする。詳細は図６のＳ６０４０の処理と同様である。
【０１４１】
以上の構成をとることにより、実施例１で説明した効果と同様の効果を得ることができる。なお、図３で示したブロックがすべて必要でなく、各ブロックの処理をＣＰＵ１０１が実施する構成をとってもよい。また、本実施例では、実施例１で説明した方法を装置に適用した例を示したが、これに限定されず、実施例２，実施例３の方法も装置として適用することができる。
【０１４２】
［実施例５］
実施例２では、画素値の差からθを算出する方法を示した。本実施例では、画像の微分情報から平滑化項の寄与度であるθの算出例を示す。
【０１４３】
実施例２において図８を使って説明した着目画素の動きベクトルを算出するフローを、本実施例では図１０に置き換えている。図８以外の処理については、実施例２と同じである。図１０は、実施例５における平滑化ベクトル算出方法を説明するフローチャートである。以下、図１０の動作について説明する。図１０は、図８に対し、Ｓ１００５１が追加され、Ｓ８０６０がＳ１００６０に置き換わっている。それ以外のステップの動作は図８と同じである。
【０１４４】
Ｓ１００５１では、ａとｄからパッチのコントラスト値Ｃを算出する。Ｃは下記計算により得るものとする。
【０１４５】
【数３０】
2019204193.tif 000032
【０１４６】
Ｓ１００６０は、パッチのコントラスト値Ｃからθを計算する。具体的に数式２４、数式２６、数式２６により計算される。本実施例でも、式の結果をコントラスト値として、実施例２と同様の効果を得ることができる。なお、Ｎ＝２，ｒ＝１と式を展開すれば、数式３０のルート演算を省略可能であるため、式を展開して計算してもよい。
【０１４７】
以上、説明した処理制御を行うことで実施例２と同様に効果を得ることができる。
【０１４８】
画像のコントラストが高ければ一次微分の結果も大きくなるため、本実施例では、逆に水平方向と垂直方向の一次微分結果を統合した値をコントラスト値としている。なお、コントラスト値の算出は、数式３０に限定されず下記式を用いても良い。
【０１４９】
【数３１】
2019204193.tif 000033
【０１５０】
本実施例では、勾配法の計算で必要な微分値を利用して、コントラストを算出するため、計算効率が高い。
【０１５１】
［他の実施形態］
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である
【符号の説明】
【０１５２】
１０１  ＣＰＵ
１０２  ＲＡＭ
１０３  ＲＯＭ
１０４  記憶部
１０５  入力インターフェース
１０６  出力インターフェース
１０７  システムバス
３０１  画像データ取得部
３０２  画像縮小部
３０３  ＯＦ初期化部
３０４  ＯＦ拡大部
３０５  画像変形部
３０６  ＯＦ算出部
３０７  ＯＦ拡大部
３０８  画像データ取得部
３０９  ＯＦ取得部
３１０  ＯＦ抽出部
３１１  水平ＯＦ値算出部
３１２  垂直ＯＦ値算出部
３１３  コントラスト値算出部
【図１】
2019204193.tif 000034
【図２】
2019204193.tif 000035
【図３】
2019204193.tif 000036
【図４】
2019204193.tif 000037
【図５】
2019204193.tif 000038
【図６】
2019204193.tif 000039
【図７】
2019204193.tif 000040
【図８】
2019204193.tif 000041
【図９】
2019204193.tif 000042
【図１０】
2019204193.tif 000043