(57)【要約】【課題】  少ない演算量で高精度にオプティカルフローを推定するための技術を提供すること。【解決手段】  第１の画像及び該第１の画像の複数の縮小画像を要素とする第１の集合、第２の画像及び該第２の画像の複数の縮小画像を要素とする第２の集合を取得する。第２の集合に属する画像をサイズが小さい順に選択する。今回選択した選択画像の各画素を、前回選択した画像に対応するオプティカルフローを該選択画像のサイズに応じて変換したオプティカルフローに従って移動させた選択画像を生成する。第１の集合のうち選択画像と同サイズの画像と移動済みの選択画像との差分、変換済みのオプティカルフローと平滑化処理済みの該変換済みのオプティカルフローとの差分、に基づく評価値を極小化するオプティカルフローを求める。第２の画像に対応するオプティカルフローを出力する。【選択図】  図１
2018084997.tif 000002
【特許請求の範囲】
【請求項１】
第１の画像及び該第１の画像を規定の縮小率で再帰的に縮小した複数の縮小画像を要素とする第１の集合と、第２の画像及び該第２の画像を前記規定の縮小率で再帰的に縮小した複数の縮小画像を要素とする第２の集合と、を取得する取得手段と、
前記第２の集合に属する画像を画像サイズが小さい順に選択する選択手段と、
前記選択手段が今回選択した選択画像の各画素を、前記選択手段が前回選択した画像に対応するオプティカルフローを該選択画像のサイズに応じて変換した変換済みオプティカルフローに従って移動させた移動済み選択画像を生成する生成手段と、
前記第１の集合に属する画像のうち前記選択画像と同サイズの画像と前記移動済み選択画像との差分である第１の差分と、前記変換済みオプティカルフローと該変換済みオプティカルフローに対して平滑化処理を施した処理済みオプティカルフローとの差分である第２の差分と、に基づく評価値を極小化するオプティカルフローを、前記選択画像に対応するオプティカルフローとして求める計算手段と、
前記計算手段が求めた、前記第２の画像に対応するオプティカルフローを出力する出力手段と
を備えることを特徴とする画像処理装置。
【請求項２】
前記選択手段が前回選択した画像に対応するオプティカルフローを該選択画像のサイズに応じて変換した変換済みオプティカルフローは、前記選択手段が前回選択した画像に対応するオプティカルフローの要素である動きベクトルの成分値、及び前記選択手段が前回選択した画像に対応するオプティカルフローのサイズ、を前記選択画像のサイズに応じて変換したオプティカルフローであることを特徴とする請求項１に記載の画像処理装置。
【請求項３】
第１の画像及び該第１の画像を規定の縮小率で再帰的に縮小した複数の縮小画像を要素とする第１の集合と、第２の画像及び該第２の画像を前記規定の縮小率で再帰的に縮小した複数の縮小画像を要素とする第２の集合と、を取得する取得手段と、
前記第２の集合に属する画像を画像サイズが小さい順に選択する選択手段と、
前記選択手段が今回選択した選択画像の各画素を、前記選択手段が前回選択した画像に対応するオプティカルフローを該選択画像のサイズに応じて変換した変換済みオプティカルフローに従って移動させた移動済み選択画像を生成する生成手段と、
前記第１の集合に属する画像のうち前記選択画像と同サイズの画像と前記移動済み選択画像との差分である第１の差分と、前記変換済みオプティカルフローと前記第１の画像に対するオプティカルフローを前記選択画像のサイズに応じて変換してから平滑化処理を施した処理済みオプティカルフローとの差分である第２の差分と、に基づく評価値を極小化するオプティカルフローを、前記選択画像に対応するオプティカルフローとして求める計算手段と、
前記計算手段が求めた、前記第２の画像に対応するオプティカルフローを出力する出力手段と
を備えることを特徴とする画像処理装置。
【請求項４】
前記平滑化処理には、平均フィルタ、ジョイントバイラテラルフィルタ、メディアンフィルタ、何れかが用いられていることを特徴とする請求項１乃至３の何れか１項に記載の画像処理装置。
【請求項５】
更に、
前記出力手段が出力したオプティカルフローを用いて画像中のグローバルモーションを求め、該求めたグローバルモーションに基づいて画像をシフトする防振手段を備えることを特徴とする請求項１乃至４の何れか１項に記載の画像処理装置。
【請求項６】
更に、
前記出力手段が出力したオプティカルフローから複数のオプティカルフローを生成し、画像を該複数のオプティカルフローを用いてシフトした複数のシフト画像を生成し、該画像及び複数のシフト画像を合成する手段を備えることを特徴とする請求項１乃至４の何れか１項に記載の画像処理装置。
【請求項７】
前記第１の画像及び前記第２の画像のそれぞれは、複数台の撮像装置において同時刻、若しくは互いに異なる時刻に撮像された画像であることを特徴とする請求項１乃至６の何れか１項に記載の画像処理装置。
【請求項８】
前記第１の画像及び前記第２の画像のそれぞれは、単一の撮像装置において互いに異なる時刻に撮像された画像であることを特徴とする請求項１乃至６の何れか１項に記載の画像処理装置。
【請求項９】
画像処理装置が行う画像処理方法であって、
前記画像処理装置の取得手段が、第１の画像及び該第１の画像を規定の縮小率で再帰的に縮小した複数の縮小画像を要素とする第１の集合と、第２の画像及び該第２の画像を前記規定の縮小率で再帰的に縮小した複数の縮小画像を要素とする第２の集合と、を取得する取得工程と、
前記画像処理装置の選択手段が、前記第２の集合に属する画像を画像サイズが小さい順に選択する選択工程と、
前記画像処理装置の生成手段が、前記選択工程で今回選択した選択画像の各画素を、前記選択工程で前回選択した画像に対応するオプティカルフローを該選択画像のサイズに応じて変換した変換済みオプティカルフローに従って移動させた移動済み選択画像を生成する生成工程と、
前記画像処理装置の計算手段が、前記第１の集合に属する画像のうち前記選択画像と同サイズの画像と前記移動済み選択画像との差分である第１の差分と、前記変換済みオプティカルフローと該変換済みオプティカルフローに対して平滑化処理を施した処理済みオプティカルフローとの差分である第２の差分と、に基づく評価値を極小化するオプティカルフローを、前記選択画像に対応するオプティカルフローとして求める計算工程と、
前記画像処理装置の出力手段が、前記計算工程で求めた、前記第２の画像に対応するオプティカルフローを出力する出力工程と
を備えることを特徴とする画像処理方法。
【請求項１０】
画像処理装置が行う画像処理方法であって、
前記画像処理装置の取得手段が、第１の画像及び該第１の画像を規定の縮小率で再帰的に縮小した複数の縮小画像を要素とする第１の集合と、第２の画像及び該第２の画像を前記規定の縮小率で再帰的に縮小した複数の縮小画像を要素とする第２の集合と、を取得する取得工程と、
前記画像処理装置の選択手段が、前記第２の集合に属する画像を画像サイズが小さい順に選択する選択工程と、
前記画像処理装置の生成手段が、前記選択工程で今回選択した選択画像の各画素を、前記選択工程で前回選択した画像に対応するオプティカルフローを該選択画像のサイズに応じて変換した変換済みオプティカルフローに従って移動させた移動済み選択画像を生成する生成工程と、
前記画像処理装置の計算手段が、前記第１の集合に属する画像のうち前記選択画像と同サイズの画像と前記移動済み選択画像との差分である第１の差分と、前記変換済みオプティカルフローと前記第１の画像に対するオプティカルフローを前記選択画像のサイズに応じて変換してから平滑化処理を施した処理済みオプティカルフローとの差分である第２の差分と、に基づく評価値を極小化するオプティカルフローを、前記選択画像に対応するオプティカルフローとして求める計算工程と、
前記画像処理装置の出力手段が、前記計算工程で求めた、前記第２の画像に対応するオプティカルフローを出力する出力工程と
を備えることを特徴とする画像処理方法。
【請求項１１】
コンピュータを、請求項１乃至８の何れか１項に記載の画像処理装置の各手段として機能させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像間のオプティカルフローを求めるための技術に関するものである。
【背景技術】
【０００２】
近年、画像間の各画素の対応付けを行う技術の重要性が高まっている。対応とは、基準画像の画素と同一であるとみなす参照画像の画素との関係であり、二点の座標で表現できる。ステレオ画像や多視点画像を入力した場合は、画素の対応関係から被写体の奥行きを算出できるため、３次元画像処理に応用することも可能である。また、連続して撮像された画像（動画）を入力し、その対応関係を相対座標として表現すれば、それは動きベクトルとなる。画素ごとの動きベクトル（以下オプティカルフローと称する）を利用することによって、動体追跡、動画の防振などが可能となる。
【０００３】
オプティカルフローを取得する代表的な手法としては勾配法がある。勾配法では、画素の時空間の輝度変化の方向と大きさから、オプティカルフローを算出する。勾配法は大きく２種類に分けることができる。一つ目の勾配法では、着目画素の周辺の画素は同じ動きであると仮定し、着目画素を中心とするパッチ内の画素の平均的な時空間の輝度変化からオプティカルフローを算出する（以下、パッチベースの手法と呼称する）。二つ目の勾配法では、画素ごとに画像間の輝度差と、オプティカルフローの滑らかさを表す平滑化項を重みづけして加算し、すべての画素で総和をとったものをエネルギーとして、エネルギーを最適化する（以下、エネルギー最適化法と呼称する）。
【０００４】
パッチベースの手法の代表的なものには、非特許文献１に記載のＬｕｃａｓ  Ｋａｎａｄｅ法（以下、ＬＫ法と呼称する）があり、特許文献１でも同様の考え方が用いられている。特許文献２では、エネルギー最適化法が用いられている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】国際公開第０６/０７５３９４
【特許文献２】特開平９−１７８７６４号公報
【非特許文献】
【０００６】
【非特許文献１】Ｐｙｒａｍｉｄａｌ  Ｉｍｐｌｅｍｅｎｔａｔｉｏｎ  ｏｆ  ｔｈｅ  Ｌｕｃａｓ  Ｋａｎａｄｅ  Ｆｅａｔｕｒｅ  Ｔｒａｃｋｅｒ  Ｄｅｓｃｒｉｐｔｉｏｎ  ｏｆ  ｔｈｅ  ａｌｇｏｒｉｔｈｍ  Ｊｅａｎ−Ｙｖｅｓ  Ｂｏｕｇｕｅｔ  [online] [retrieved on 2016-11-07] Retrieved from the Internet: ＜URL:ｈｔｔｐ：／／ｒｏｂｏｔｓ．ｓｔａｎｆｏｒｄ．ｅｄｕ／ｃｓ２２３ｂ０４／ａｌｇｏ＿ｔｒａｃｋｉｎｇ．ｐｄｆ＞
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献２に代表されるエネルギー最適化法では、エネルギー最適化のための反復計算が必要となり、演算量が増大するという課題がある。一方、非特許文献１に代表されるパッチベースの手法では、反復計算が不要なため、高速にオプティカルフローを推定できる。しかし、拘束条件が明確に考慮されていないため、正解値から外れたフローベクトルが推定される可能性が高くなり、推定が不安定になるという課題がある。
【０００８】
特許文献１の手法は、階層処理の中で、推定したオプティカルフローを平滑化するようパッチベースの手法を改良したものである。このことにより、正解から外れたフローベクトルの出現を抑制できるが、テクスチャが少ない領域では、推定値が不安定になるという課題がある。
【０００９】
本発明はこのような問題に鑑みてなされたものであり、少ない演算量で高精度にオプティカルフローを推定するための技術を提供する。
【課題を解決するための手段】
【００１０】
本発明の一様態は、第１の画像及び該第１の画像を規定の縮小率で再帰的に縮小した複数の縮小画像を要素とする第１の集合と、第２の画像及び該第２の画像を前記規定の縮小率で再帰的に縮小した複数の縮小画像を要素とする第２の集合と、を取得する取得手段と、前記第２の集合に属する画像を画像サイズが小さい順に選択する選択手段と、前記選択手段が今回選択した選択画像の各画素を、前記選択手段が前回選択した画像に対応するオプティカルフローを該選択画像のサイズに応じて変換した変換済みオプティカルフローに従って移動させた移動済み選択画像を生成する生成手段と、前記第１の集合に属する画像のうち前記選択画像と同サイズの画像と前記移動済み選択画像との差分である第１の差分と、前記変換済みオプティカルフローと該変換済みオプティカルフローに対して平滑化処理を施した処理済みオプティカルフローとの差分である第２の差分と、に基づく評価値を極小化するオプティカルフローを、前記選択画像に対応するオプティカルフローとして求める計算手段と、前記計算手段が求めた、前記第２の画像に対応するオプティカルフローを出力する出力手段とを備えることを特徴とする。
【発明の効果】
【００１１】
本発明の構成によれば、少ない演算量で高精度にオプティカルフローを推定することができる。
【図面の簡単な説明】
【００１２】
【図１】コンピュータ装置のハードウェア構成例を示すブロック図。
【図２】オプティカルフローを説明する図。
【図３】画像処理装置の機能構成例を示すブロック図。
【図４】オプティカルフローを生成するための処理のフローチャート。
【図５】画像処理装置の機能構成例を示すブロック図。
【図６】オプティカルフローを生成するための処理のフローチャート。
【図７】参考オプティカルフローを得るための処理について説明する図。
【図８】画像処理装置の機能構成例を示すブロック図。
【図９】画像処理装置の機能構成例を示すブロック図。
【発明を実施するための形態】
【００１３】
以下、添付図面を参照し、本発明の実施形態について説明する。なお、以下説明する実施形態は、本発明を具体的に実施した場合の一例を示すもので、特許請求の範囲に記載した構成の具体的な実施例の１つである。
【００１４】
［第１の実施形態］
本実施形態では、次のような構成を有する画像処理装置の一例について説明する。この画像処理装置は、第１の画像及び該第１の画像を規定の縮小率で再帰的に縮小した複数の縮小画像を要素とする第１の集合と、第２の画像及び該第２の画像を上記規定の縮小率で再帰的に縮小した複数の縮小画像を要素とする第２の集合と、を取得する。そして画像処理装置は、第２の集合に属する画像を画像サイズが小さい順に選択する。そして画像処理装置は、今回選択した選択画像の各画素を、前回選択した画像に対応するオプティカルフローを該選択画像のサイズに応じて変換した変換済みオプティカルフローに従って移動させた移動済み選択画像を生成する。そして画像処理装置は、第１の集合に属する画像のうち選択画像と同サイズの画像と移動済み選択画像との差分である第１の差分と、変換済みオプティカルフローと該変換済みオプティカルフローに対して平滑化処理を施した処理済みオプティカルフローとの差分である第２の差分と、に基づく評価値を極小化するオプティカルフローを、選択画像に対応するオプティカルフローとして求める（計算）。そして画像処理装置は、この計算により求めた、第２の画像に対応するオプティカルフローを出力する。
【００１５】
先ず、本実施形態を含む以下の各実施形態において用いる様々な定義について説明する。以下の説明における「オプティカルフロー」（以下、ＯＦと称する場合がある）とは、基準画像に対する対象画像の動きベクトルを画素毎に登録したマップ画像である。つまり、オプティカルフローは対象画像と同じ解像度（縦横の画素数）を有し、対象画像の各画素に対応するオプティカルフローの要素は二次元ベクトルとなっている。
【００１６】
以下では、対象画像をＩと表記した場合、該対象画像上の画素位置（ｘ、ｙ）における画素値はＩ（ｘ，ｙ）と表記する。オプティカルフローにおいて、対象画像Ｉ上の画素位置（ｘ、ｙ）に対応する要素は（ｕ（ｘ，ｙ），ｖ（ｘ，ｙ））と表記する。ｕ（ｘ，ｙ）は、対象画像Ｉの画素位置（ｘ、ｙ）に対応する動きベクトルの水平方向成分（Ｘ成分）を表し、ｖ（ｘ，ｙ）は、対象画像Ｉの画素位置（ｘ、ｙ）に対応する動きベクトルの垂直方向成分（Ｙ成分）を表している。
【００１７】
オプティカルフローについて図２を例にとり説明する。図２では、画像２０１に対する画像２０２のオプティカルフローについて説明する。画像２０１は、人物２０３が移動しているシーンを撮像装置を動かしながら撮像した動画像中のＮ（Ｎは１以上の整数）フレーム目の画像であり、画像２０２は該動画像における（Ｎ＋Ｎ’）（Ｎ’は１以上の整数）フレーム目の画像である。画像２０１及び画像２０２には被写体として人物２０３と家２０４とが含まれている。動きベクトル２０５は、画像２０１中の人物２０３から画像２０２中の人物２０３への動きベクトルを表しており、動きベクトル２０６は、画像２０１中の家２０４から画像２０２中の家２０４への動きベクトルを表している。一般的に、画像中の人物２０３（家２０４）の領域を構成するそれぞれの画素に対する動きベクトルは全く同じではないが、図２では説明を簡単にするために、オブジェクト内の各画素の動きベクトルは全て同じであるものとする。つまり図２では、画像２０２中の人物２０３の領域内の各画素の動きベクトルは全て動きベクトル２０５とし、画像２０２中の家２０４の領域内の各画素の動きベクトルは全てベクトル２０６としている。ここで、動きベクトル２０５の成分を（１０，５）、動きベクトル２０６の成分を（−５，０）とする。このとき、画像２０２上の画素位置（ｘ、ｙ）が人物２０３の領域に含まれている場合、画像２０２に対するオプティカルフローにおいて画素位置（ｘ、ｙ）に対応する要素（ｕ（ｘ，ｙ），ｖ（ｘ，ｙ））＝（１０，５）となる。また、画像２０２上の画素位置（ｘ、ｙ）が家２０４の領域に含まれている場合、画像２０２に対するオプティカルフローにおいて画素位置（ｘ、ｙ）に対応する要素（ｕ（ｘ，ｙ），ｖ（ｘ，ｙ））＝（−５，０）となる。なお、画像２０２上の画素位置（ｘ、ｙ）が背景領域（人物２０３及び家２０４以外の領域）に含まれている場合、画像２０２に対するオプティカルフローにおいて画素位置（ｘ、ｙ）に対応する要素（ｕ（ｘ，ｙ），ｖ（ｘ，ｙ））＝（０，０）とする。
【００１８】
本実施形態では、単一の撮像装置において互いに異なる時刻に撮像された第１の画像及び第２の画像（第１の画像の撮像時刻は第２の撮像時刻よりも早い）を取得し、該第１の画像に対する該第２の画像のオプティカルフローを生成する。なお、第１の画像及び第２の画像は単一の撮像装置において互いに異なる時刻に撮像された画像に限らず、複数台の撮像装置において同時刻に撮像された画像であっても良いし、複数台の撮像装置において互いに異なる時刻に撮像された画像であっても良い。
【００１９】
次に、本実施形態に係る画像処理装置の機能構成例及びその動作について、画像処理装置の機能構成例を示すブロック図である図３、画像処理装置がオプティカルフローを生成するために行う処理のフローチャートを示す図４、を用いて説明する。なお、図面においてＯＦはオプティカルフローを表す。また、図４に示したフローチャートに従った処理は、１枚の画像に対するオプティカルフローを求めるための処理である。然るに、例えば、複数枚の画像のそれぞれについてオプティカルフローを求める場合には、該複数の画像のそれぞれについて図４のフローチャートに従った処理を行えばよい。
【００２０】
ステップＳ４０１では、画像データ取得部３０１は、上記の第１の画像及び第２の画像を取得する。以下では、２枚の画像のみを取得する場合について説明するが、複数枚の画像や動画像を取得しても構わない。画像が３枚以上ある場合や動画像の場合は、対象となる２枚の画像、もしくはフレームを選択して以降の処理を進める。
【００２１】
ステップＳ４０２では、画像縮小部３０２は、第１の画像Ｉ１を縮小率ｓｃａｌｅ＿ｆａｃｔｏｒ（以下ｓｆと呼称する：０＜ｓｆ＜１）に従って再帰的に縮小して複数枚の縮小画像を生成する。更に画像縮小部３０２は、第２の画像Ｉ２を縮小率ｓｆに従って再帰的に縮小して複数枚の縮小画像を生成する。具体的には、画像縮小部３０２は先ず、Ｉ１及びＩ２から生成する縮小画像の枚数である最大階層数（ｍａｘ＿ｌｖ）を取得する。最大階層数ｍａｘ＿ｌｖは予め画像処理装置１００に設定されていたものであっても良いし、ユーザに入力させても良い。本実施形態では、Ｉ１（Ｉ２）を縮小率ｓｆに従ってｍａｘ＿ｌｖ回縮小した縮小画像のサイズ（縦及び／又は横サイズ）がＩ１（Ｉ２）のサイズ（縦及び／又は横サイズ）の５％以下となるまで縮小を行うものとした。然るにこの場合、以下の式１に示す如く、ｍａｘ＿ｌｖ＝５となる。
【００２２】
【数１】
2018084997.tif 000003
【００２３】
以下では、Ｉ１を縮小率ｓｆに従ってｌｖ（ｌｖは０〜ｍａｘ＿ｌｖを満たす整数）回縮小した縮小画像をＩ１［ｌｖ］と表記する。また、Ｉ２を縮小率ｓｆに従ってｌｖ回縮小した縮小画像をＩ２［ｌｖ］と表記する。つまり、Ｉ１＝Ｉ１［０］、Ｉ２＝Ｉ２［０］である。Ｉ１に対するＩ１［ｌｖ］の縮小率ｓ（Ｉ２に対するＩ２［ｌｖ］の縮小率ｓ）は以下の式２で表される。
【００２４】
【数２】
2018084997.tif 000004
【００２５】
つまり、Ｉ１を縮小率ｓに従って縮小することでＩ１［ｌｖ］が得られ、Ｉ２を縮小率ｓに従って縮小することでＩ２［ｌｖ］が得られる。以下では一例として、ｓｆ＝０．５であるものとするが、ｓｆの値は０より大きく１未満であれば如何なる値であっても良い。なお、Ｉ１［ｍａｘ＿ｌｖ］（Ｉ２［ｍａｘ＿ｌｖ］）のサイズは、画像間の動き検出対象の動きが大きいほど小さく設定すべきであるが、処理時間など様々な要素によって応じて最適な設定をすることが望ましい。また、画像の縮小処理の際には、バイキュービック法を用いても良いし、Ｌａｎｃｚｏｓ  ３−ｌｏｂｅｄ法などの方法を用いてもよい。
【００２６】
ステップＳ４０３では、制御部３９９は、変数ｌｖの値にｍａｘ＿ｌｖを設定する。以下では、Ｉ１［ｌｖ］及びＩ２［ｌｖ］を階層ｌｖにおける画像、Ｉ１［０］及びＩ２［０］は最小階層における画像、Ｉ１［ｍａｘ＿ｌｖ］及びＩ２［ｍａｘ＿ｌｖ］は最大階層における画像と称する場合がある。
【００２７】
ステップＳ４０４では、制御部３９９は、ｌｖ＜ｍａｘ＿ｌｖであるか否かを判断する。この判断の結果、ｌｖ＜ｍａｘ＿ｌｖであれば、処理はステップＳ４０５に進み、ｌｖ＝ｍａｘ＿ｌｖであれば、処理はステップＳ４０８に進む。
【００２８】
ステップＳ４０８では、ＯＦ初期化部３０３は、階層ｍａｘ＿ｌｖにおけるオプティカルフローの全ての要素の値を０に初期化する。以下では、階層ｌｖにおけるオプティカルフローをＯＦ［ｌｖ］と表記する。ＯＦ［ｌｖ］の解像度はＩ１［ｌｖ］、Ｉ２［ｌｖ］の階層度と同じである。そして処理はステップＳ４０９に進む。
【００２９】
一方、ステップＳ４０５でＯＦ拡大部３０７は、最近求めたオプティカルフロー（ＯＦ［ｌｖ＋１］）の各要素の値（動きベクトルの成分値）を１／ｓｆ倍してから、該オプティカルフローの縦横サイズを１／ｓｆ倍に拡大したＯＦ’［ｌｖ＋１］を生成する。拡大では、ＲＧＢ画像の拡大においてＲ、Ｇ，Ｂそれぞれの成分を独立して処理するのと同様に、動きベクトルのＸ成分、Ｙ成分を独立して処理する。この拡大には、バイリニア補間を用いても良いし、バイキュービック法等の他の方法を採用しても良い。ＯＦ［ｌｖ＋１］における要素ｕ（ｘ，ｙ）、ｖ（ｘ，ｙ）とＯＦ’［ｌｖ＋１］における要素ｕ’（ｘ，ｙ）、ｖ’（ｘ，ｙ）との関係を以下の式３に示す。
【００３０】
【数３】
2018084997.tif 000005
【００３１】
ステップＳ４０６では、画像変形部３０５は、Ｉ２［０］〜Ｉ２［ｍａｘ＿ｌｖ］のうちＩ２［ｌｖ］を選択し、該選択したＩ２［ｌｖ］内の各画素を、ＯＦ’［ｌｖ＋１］に従って移動（ワーピング）させた画像Ｉ２ｗ［ｌｖ］を生成する。つまり、以下の式４に示す如く、Ｉ２［ｌｖ］内の画素位置（ｘ、ｙ）における画素を、ＯＦ’［ｌｖ＋１］内のｕ’（ｘ，ｙ）、ｖ’（ｘ，ｙ）によって規定される動きベクトルの方向に、該動きベクトルの長さだけ移動させた画像Ｉ２ｗ［ｌｖ］を生成する。
【００３２】
【数４】
2018084997.tif 000006
【００３３】
ステップＳ４０７では、ＯＦ平滑化部３０４は、ステップＳ４０５で生成したオプティカルフローＯＦ’［ｌｖ＋１］に対して平滑化フィルタを適用して、平滑化処理済みのオプティカルフローＯＦ”［ｌｖ＋１］を生成する。平滑化フィルタとしては、例えば、平均フィルタや、ジョイントバイラテラルフィルタなどを用いることができる。ジョイントバイラテラルフィルタを用いる場合は、Ｉ１［ｌｖ］の画素値を参照することで、被写体境界の再現性を向上させることができる。また、メディアンフィルタなどの非線形フィルタを用いてもよい。つまり、オプティカルフローＯＦ’［ｌｖ＋１］を平滑化できる手法であれば、如何なる手法を用いても構わない。本実施形態では、フィルタサイズが７ｘ７の平均フィルタを用いてオプティカルフローＯＦ’［ｌｖ＋１］に対する平滑化処理を行うものとする。
【００３４】
ステップＳ４０９では、エネルギー関数生成部３０６は、Ｉ１［ｌｖ］とＩ２ｗ［ｌｖ］との差分である第１の差分と、ＯＦ’［ｌｖ＋１］とＯＦ”［ｌｖ＋１］との差分である第２の差分と、に基づく関数であるエネルギー関数を生成する。ステップＳ４０９における処理の詳細については後述する。
【００３５】
ステップＳ４１０では、ＯＦ算出部３０８は、ステップＳ４０９で生成したエネルギー関数を極小化するようなオプティカルフローＯＦ［ｌｖ］を生成する。ステップＳ４１０における処理の詳細については後述する。
【００３６】
ステップＳ４１１では、制御部３９９は、変数ｌｖの値が０であるか否かを判断する。この判断の結果、変数ｌｖの値が０であれば、ＯＦ算出部３０８は、ステップＳ４１０で生成したオプティカルフローＯＦ［０］を、画像Ｉ１を基準とする画像Ｉ２のオプティカルフローとして出力する。ＯＦ算出部３０８によるオプティカルフローＯＦ［０］の出力先については画像処理装置１００内のメモリや外部のメモリ、外部の装置など、特定の出力先に限るものではない。そして図４のフローチャートに従った処理は終了する。
【００３７】
一方、変数ｌｖの値が０ではない場合には、処理はステップＳ４１２に進む。ステップＳ４１２では、制御部３９９は、変数ｌｖの値を１つデクリメントし、その後、処理はステップＳ４０４に進む。
【００３８】
次に、上記のステップＳ４０９における処理の詳細について説明する。エネルギー関数を最小化するようにオプティカルフローを推定する方法は、一般的に勾配法と呼ばれる。基本となるのはデータタームと呼ばれる項であり、データタームは以下の式で定義される。
【００３９】
【数５】
2018084997.tif 000007
【００４０】
ｆは、Ｉ１とＩ２ｗとの差分を求める関数であり、Ｉ１とＩ２ｗとの差の絶対値を求める関数であっても良いし、Ｉ１とＩ２ｗとの差の二乗を求める関数であっても良い。勾配法のエネルギー関数は主に２種類に分類することができる。
【００４１】
一つ目は、データタームをあるパッチの範囲で総和をとったものをエネルギー関数と定義するタイプであり、以下の式６で定義される。以下、この手法をパッチベースの手法と呼称する。パッチベースの手法では、画素ごとに以下のエネルギー関数を最小にするオプティカルフローを算出する。
【００４２】
【数６】
2018084997.tif 000008
【００４３】
ここで、Ｂは画素位置（ｘ、ｙ）を中心としたパッチ領域を表しており、例えば７×７のパッチを考えた場合、ｐ、ｑはｘ−３からｘ＋３まで、ｑはｙ−３からｙ＋３までの整数値をとる。この手法の利点は、ρとして例えば差分２乗を採用した場合、最小となるオプティカルフローを解析的に求めることができる点である。一方で、推定されるオプティカルフローは正解から外れた値になることが多く、高精度に推定することが困難である。
【００４４】
二つ目は、上記の問題を解決するために、拘束条件として、オプティカルフローを滑らかにするための平滑化項を追加する。エネルギー関数は以下の式で定義されることが多い。
【００４５】
【数７】
2018084997.tif 000009
【００４６】
ここで、λは適当な重み係数であり、∇ｕ，∇ｖはオプティカルフローの勾配である。パッチベースの手法では、Σはパッチ領域内の和をとっていたが、ここでは全体画素の和をとる。ｇは平滑化項であり、ＴＶノルムや、Ｌ２ノルムを用いることが多い。勾配は、例えば以下の式で算出される。
【００４７】
【数８】
2018084997.tif 000010
【００４８】
平滑化項を用いた手法では、式７で表されるような画像全体のエネルギー関数を最小化するように全ての画素のオプティカルフローを最適化する。以下、この手法をエネルギー最適化法と呼称する。エネルギー最適化法は、精度のよいオプティカルフローを求めることができる一方で、最適化を行うために反復計算が必要となり、演算量が増大するという課題がある。
【００４９】
本実施形態では、パッチベースの手法、エネルギー最適化法のそれぞれの問題点に鑑み、パッチベースの手法に擬似的な平滑化項を追加してエネルギー最適化法の考え方を取り入れつつ、パッチベースの手法とほぼ同等の演算量でオプティカルフローを推定する。本実施形態に係るエネルギー関数を以下の式９に示す。
【００５０】
【数９】
2018084997.tif 000011
【００５１】
式９のエネルギー関数は、画素位置（ｘ、ｙ）に対するものである。なお、式９ではφ（）についてはパッチ内の総和を計算していないが、ρ（）と同様にパッチ内の総和を計算しても良い。式９におけるρ（）、φ（）を、以下の式１０に示す。
【００５２】
【数１０】
2018084997.tif 000012
【００５３】
式１０においてｐ、ｑは、画素位置（ｘ、ｙ）を中心とするパッチ領域内のｘ座標値、ｙ座標値を示す。ステップＳ４１０では、Ｅ（ｘ、ｙ）が極小（最小）となるｄｕ［ｌｖ］（ｘ、ｙ）、ｄｖ［ｌｖ］（ｘ、ｙ）を、画像Ｉ２［ｌｖ］に対応するオプティカルフローにおいて、画像Ｉ２［ｌｖ］中の画素位置（ｘ、ｙ）に対する動きベクトルのＸ成分及びＹ成分として求める。
【００５４】
ρ（ｐ、ｑ）は、画像Ｉ２ｗ［ｌｖ］中の画素位置（ｐ、ｑ）からｄｕ［ｌｖ］（ｘ、ｙ）、ｄｖ［ｌｖ］（ｘ、ｙ）によって規定される動きベクトルの分だけ移動させた画素位置の画素値と、画像Ｉ１［ｌｖ］中の画素位置（ｐ、ｑ）における画素値との差の二乗を表している。なお、ρ（）は、差の二乗に限らず、差の絶対値等、「画像Ｉ２ｗ［ｌｖ］中の画素位置（ｐ、ｑ）からｄｕ［ｌｖ］（ｘ、ｙ）、ｄｖ［ｌｖ］（ｘ、ｙ）によって規定される動きベクトルの分だけ移動させた画素位置の画素値と、画像Ｉ１［ｌｖ］中の画素位置（ｐ、ｑ）における画素値との差」を表す様々な式を適用しても構わない。
【００５５】
式１０においてφ（ｘ、ｙ）は、ＯＰ’［ｌｖ＋１］におけるＸ成分であるｕ’（ｘ、ｙ）にｄｕ［ｌｖ］（ｘ、ｙ）を加えたものと、ＯＰ”［ｌｖ＋１］におけるＸ成分であるｕａｖｅ（ｘ、ｙ）と、の差の二乗と、ＯＰ’［ｌｖ＋１］におけるＹ成分であるｖ’（ｘ、ｙ）にｄｖ［ｌｖ］（ｘ、ｙ）を加えたものと、ＯＰ”［ｌｖ＋１］におけるＹ成分であるｖａｖｅ（ｘ、ｙ）と、の差の二乗と、の和を表している。なお、φ（）は、差の二乗和に限らず、例えば、前者の差の絶対値と後者の差の絶対値との和であっても良い。
【００５６】
エネルギー関数にφ（）の項を加えることで、ｕａｖｅ（ｘ、ｙ）、ｖａｖｅ（ｘ、ｙ）はもともとのオプティカルフローに比べて滑らかで、外れ値が抑制された結果となるので、ｕ’とｕａｖｅの値が乖離しないように推定値が算出され、この項が平滑化項としての役割を果たす。これはｖについても同様である。
【００５７】
上記の式９においてλ＝０の場合は、階層型のＬｕｃａｓーＫａｎａｄｅ法に帰着する。ここで、上記のｄｕ、ｄｖが小さいとして、ρをテイラー展開すると、以下の式１１が得られる。
【００５８】
【数１１】
2018084997.tif 000013
【００５９】
ここで、Ｉ２ｘｗは、式４におけるＩ２の代わりに画像Ｉ２ｗのｘ方向の１次偏微分画像、式４におけるＩ２ｗの代わりにＩ２ｘｗを当てはめて計算されるものである。同様に、Ｉ２ｙｗは、式４におけるＩ２の代わりに画像Ｉ２ｗのｙ方向の１次偏微分画像、式４におけるＩ２ｗの代わりにＩ２ｙｗを当てはめて計算されるものである。画像Ｉの１次偏微分は、例えば以下の式１２で求めることが可能である。
【００６０】
【数１２】
2018084997.tif 000014
【００６１】
それ以外にも、水平、垂直のＳｏｂｅｌフィルタなどを作用させて求めてもよい。求めるべき解析解ｄｕ、ｄｖは以下の連立方程式を満たす。なお、式１４、１５は階層によらないため、階層表記は省いている。
【００６２】
【数１３】
2018084997.tif 000015
【００６３】
【数１４】
2018084997.tif 000016
【００６４】
【数１５】
2018084997.tif 000017
【００６５】
式１３の両辺にＡの逆行列をかけることで、ｄｕ、ｄｖを求めることができる。このように、本実施形態によれば、前の階層のオプティカルフローに対して平滑化した結果と、算出するオプティカルフローとの差分が小さくなるようにエネルギーを極小化することで、演算量を増加させることなく、精度を向上させることができる。
【００６６】
［第２の実施形態］
以下では、第１の実施形態との差分について重点的に説明し、以下で特に触れない限りは第１の実施形態と同様であるものとする。第１の実施形態では、エネルギー関数に使用するオプティカルフローは、現階層ｌｖよりも１つ上の階層（ｌｖ＋１）におけるオプティカルフローを使用した。これに対し、本実施形態では、現フレームよりも１つ前のフレームの画像について求めたオプティカルフローをエネルギー関数に使用する。以下では、現フレームの画像Ｉ２に対するオプティカルフローを、該フレームよりも１フレーム前の画像Ｉ１について求めたオプティカルフローを使用して求める例について説明する。
【００６７】
本実施形態に係る画像処理装置の機能構成例、画像Ｉ２に対するオプティカルフローを求めるために画像処理装置１００が行う処理について、図５のブロック図、図６のフローチャートを用いて説明する。なお、図５において、図３に示した機能部と同じ機能部には同じ参照番号を付しており、該機能部に係る説明は省略する。また、図６のフローチャートにおいて、図４に示した処理ステップと同じ処理ステップには同じステップ番号を付しており、該処理ステップに係る説明は省略する。なお、図６に示したフローチャートに従った処理は、１枚の画像に対するオプティカルフローを求めるための処理である。然るに、例えば、複数枚の画像のそれぞれについてオプティカルフローを求める場合には、該複数の画像のそれぞれについて図６のフローチャートに従った処理を行えばよい。
【００６８】
ステップＳ６０１では、ＯＦ変形部５０１は、画像Ｉ１について過去に求めたオプティカルフローを、画像Ｉ２のオプティカルフローを生成するためのエネルギー関数に使用する参考オプティカルフローに変換する。この変換方法には様々な方法が考えられる。
【００６９】
例えば、画像Ｉ１について求めたオプティカルフローは、画像Ｉ１よりも１フレーム前の画像Ｉ０に対する画像Ｉ１のオプティカルフローであり、該オプティカルフローの要素は、画像Ｉ０からの動きベクトルを表している。ここで、フレーム間の時間間隔が充分に短い場合、画像中のオブジェクトの動きは等速直線運動と見なせるため、画像Ｉ１について求めたオプティカルフローの各要素を、該オプティカルフローの要素が示す動きベクトルに従って移動させたものを、上記の参考オプティカルフローとして使用することができる。この移動により、参考オプティカルフローには、動きベクトルが格納されない要素が存在する可能性があるため、そのような要素はフィルタ処理などによって周囲の動きベクトルから穴埋めする。
【００７０】
なお、画像Ｉ１を基準とした画像Ｉ０のオプティカルフローが得られている場合には、このオプティカルフローの要素の符号を逆にしたものを上記の参考オプティカルフローとしても良い。
【００７１】
参考オプティカルフローを得るための処理について、図７を例にとり説明する。画像７０１〜７０３はそれぞれ画像Ｉ０〜Ｉ２であり、何れの画像にも人物２０３及び家２０４が含まれている。
【００７２】
画像Ｉ０を基準とした画像Ｉ１における人物２０３の動きベクトル７０３を該動きベクトル７０３の分だけ移動させた動きベクトルを、画像Ｉ１を基準とした画像Ｉ２における人物２０３の動きベクトル７０７として求める。もし、画像Ｉ１を基準とした画像Ｉ０における人物２０３の動きベクトル７０５が得られている場合には、これを反転させたものを動きベクトル７０７としても良い。画像Ｉ０を基準とした画像Ｉ１における家２０４の動きベクトル７０４を該動きベクトル７０４の分だけ移動させた動きベクトルを、画像Ｉ１を基準とした画像Ｉ２における家２０４の動きベクトル７０８として求める。もし、画像Ｉ１を基準とした画像Ｉ０における家２０４の動きベクトル７０６が得られている場合には、これを反転させたものを動きベクトル７０８としても良い。このようにして求めた動きベクトル７０７，７０８が上記の参考オプティカルフローとなる。
【００７３】
図６に戻って、次にステップＳ６０２では、ＯＦ平滑化部３０４は、ステップＳ６０１で生成した参考オプティカルフローに対して、第１の実施形態で説明したオプティカルフローに対する平滑化処理を行う。
【００７４】
ステップＳ６０３では、ＯＦ縮小部５０２は、ステップＳ６０２で平滑化処理を施した参考オプティカルフローの各要素の値をｓｆｌｖ倍してから、該参考オプティカルフローの縦横サイズをｓｆｌｖ倍に縮小したオプティカルフローを生成する。
【００７５】
そして以降は、ステップＳ６０３で生成したオプティカルフローのｕ（ｘ，ｙ）、ｖ（ｘ，ｙ）をｕａｖｅ（ｘ，ｙ）、ｖａｖｅ（ｘ，ｙ）として使用してエネルギー関数を構成する以外は第１の実施形態と同様である。なお、図６のフローチャートでは、全ての階層について、ステップＳ６０３で生成したオプティカルフローのｕ（ｘ，ｙ）、ｖ（ｘ，ｙ）をｕａｖｅ（ｘ，ｙ）、ｖａｖｅ（ｘ，ｙ）として使用してエネルギー関数を構成している。しかし、特定の階層、例えば、最終回層以外の階層については第１の実施形態と同様にしてエネルギー関数を構成し、最終階層については、ステップＳ６０３で生成したオプティカルフローのｕ（ｘ，ｙ）、ｖ（ｘ，ｙ）をｕａｖｅ（ｘ，ｙ）、ｖａｖｅ（ｘ，ｙ）として使用してエネルギー関数を構成しても良い。
【００７６】
なお、第１の実施形態と同様に、前の階層のオプティカルフローを平滑化した結果をエネルギー関数に追加してもよい。ステップＳ６０３で生成したオプティカルフローのｕ（ｘ，ｙ）、ｖ（ｘ，ｙ）のそれぞれをｕａｖｅ１（ｘ、ｙ）、ｖａｖｅ１（ｘ、ｙ）、ＯＰ”［ｌｖ＋１］におけるＸ成分、Ｙ成分のそれぞれをｕａｖｅ２（ｘ、ｙ）、ｖａｖｅ２（ｘ、ｙ）とすると、エネルギー関数は以下のようになる。
【００７７】
【数１６】
2018084997.tif 000018
【００７８】
【数１７】
2018084997.tif 000019
【００７９】
なお、式１６ではφ１（）、φ２（）についてはパッチ内の総和を計算していないが、ρ（）と同様にパッチ内の総和を計算しても良い。本実施形態によれば、オプティカルフローの時間的な連続性も考慮しつつ、演算量を抑えて高精度にオプティカルフローを算出することができる。なお、図４，６に示した全てのステップは上記の説明の通り上から順に実行されることに限らず、一部の処理ステップで順番を入れ替えても良いし、一部の処理ステップを並列に実行しても良い。
【００８０】
［第３の実施形態］
第１，２の実施形態で説明したオプティカルフローの生成処理によって生成されたオプティカルフローは様々な用途に装用できる。オプティカルフローを算出することで、動いている被写体の特定や、カメラが動いている方向を推定することができる。このことにより、被写体の追跡や動画の防振など様々な用途に適用することが可能である。また、撮影した画像や動画に対し、映像効果を付与することも可能である。例えば、撮影した画像に対して、オプティカルフローの方向にブラーを付けることで、動きのある被写体を強調した躍動感のある画像を生成することができる。以下では、動画の防振と、ある特定のフレームに対して動きに基づいたブラーを付与する場合について説明する。
【００８１】
動画の防振にオプティカルフローを用いる画像処理装置の機能構成例について、図８のブロック図を用いて説明する。図８の画像処理装置８００は、上記の画像処理装置１００内に納められた装置であっても良い。
【００８２】
ＯＰデータ取得部８０１は、上記の画像処理装置１００が生成して出力したオプティカルフローを取得する。ＯＰデータ取得部８０１によるオプティカルフローの取得方法については特定の取得方法に限らない。例えば、画像処理装置１００から無線若しくは有線のネットワーク、若しくは有線と無線の組み合わせによるネットワークを介してオプティカルフローを取得しても良いし、外部の記憶装置に格納されているオプティカルフローを取得しても良い。
【００８３】
算出部８０２は、ＯＰデータ取得部８０１が取得したオプティカルフローを用いてグローバルモーションを算出する。グローバルモーションとは、画像全体に対して最も支配的な動きの方向であり、一つのベクトルで表される。グローバルモーションは、例えばオプティカルフローのヒストグラムを生成して最頻値を取得することにより算出することが可能である。なお、画像全体の動きを算出することができれば、別の手法で算出しても構わない。
【００８４】
平滑部８０３は、グローバルモーションの時間方向の高周波成分を除去する。これは、時間方向に対する、動画の振動を除去するためである。例えば、時間方向にフーリエ変換して高周波を除去したり、時間方向に平滑化フィルタを作用させることで実現することができる。
【００８５】
防振部８０４は、各時刻のグローバルモーションに基づいて、画像データ取得部８０５が取得する各フレームの画像のうち対応する時刻の画像を電子的にシフトして位置合わせする。
【００８６】
次に、動きに基づいたブラーを付与する画像処理装置の機能構成例について、図９のブロック図を用いて説明する。図９の画像処理装置９００は、上記の画像処理装置１００内に納められた装置であっても良い。図９において図８と同じ機能部には同じ参照番号を付しており、該機能部に係る説明は省略する。なお、以下では処理対象の画像を画像１として説明する。
【００８７】
画像変形部９０１は、ｋ＝１〜ｎ−１としたとき、ＯＰデータ取得部８０１が取得したオプティカルフロー内の各要素（動きベクトルの成分）をｋ／ｎ倍した動きベクトルを用いて、式４に従って画像１をシフトしたシフト画像を生成する。例えば、ｎ＝１０とすると、ｋ＝１〜９に対して、ｎ−１枚分のシフトしたシフト画像を生成する。画像合成部９０２は、ｎ−１枚の変形画像と画像１とを画素毎に合成した合成画像を生成し、該合成画像の各画素の画素値をｎで除算することにより、ブラーが付与された画像を生成する。動きの大きな被写体ほどオプティカルフローベクトルが大きく、静止している被写体は、オプティカルフローベクトルが０になるため、動きが大きいほどブラーが発生した画像が生成される。本実施形態では、ｎとして固定値を用いたが、画像中のオプティカルフローの長さの最大値から決めてもよい。例えば、オプティカルフローの長さの最大値が５０ｐｉｘであれば、ｎ＝５０とする。また、ユーザーがブラーの強度を指定できる場合は、強度に応じてオプティカルフローをリスケールし、同様の処理を行ってもよい。例えば、ブラーの効果を強くする場合は、元のオプティカルフローを何倍かして処理を行えばよい。本実施形態によれば、オプティカルフローを用いることで、カメラ機能を高速化・高精度化したり、映像効果を付与することが可能になる。また、異なる撮像装置で同一時刻に撮影された画像の場合は、オプティカルフローから被写体の奥行きを算出することも可能である。
【００８８】
［第４の実施形態］
図３，５に示した画像処理装置１００を構成する各機能部は何れもハードウェアで実装しても良いが、ソフトウェア（コンピュータプログラム）で実装しても良い。後者の場合、このコンピュータプログラムを実行可能なプロセッサを有するコンピュータ装置は、上記の画像処理装置１００に適用することができる。画像処理装置１００に適用可能なコンピュータ装置のハードウェア構成例について、図１のブロック図を用いて説明する。
【００８９】
ＣＰＵ１０１は、ＲＡＭ１０２やＲＯＭ１０３に格納されているコンピュータプログラムやデータを用いて各種の処理を実行する。これによりＣＰＵ１０１は、コンピュータ装置全体の動作制御を行うと共に、画像処理装置１００が行うものとして上述した各処理を実行若しくは制御する。
【００９０】
ＲＡＭ１０２は、ＲＯＭ１０３や記憶部１０４からロードされたコンピュータプログラムやデータを格納するためのエリアを有する。更にＲＡＭ１０２は、ＣＰＵ１０１が各種の処理を実行する際に用いるワークエリアを有する。このようにＲＡＭ１０２は、各種のエリアを適宜提供することができる。ＲＯＭ１０３には、書き換え不要の設定データやブートプログラムなどが格納されている。
【００９１】
記憶部１０４は、ハードディスクドライブ装置に代表される大容量情報記憶装置である。記憶部１０４には、ＯＳ（オペレーティングシステム）や、画像処理装置１００が行うものとして上述した各処理をＣＰＵ１０１に実行させるためのコンピュータプログラムやデータが保存されている。記憶部１０４に保存されているコンピュータプログラムには、図３，５に示した各機能部の機能をＣＰＵ１０１に実行させるためのコンピュータプログラムが含まれている。また、記憶部１０４に保存されているデータには、上記の説明において既知の情報として説明したものや、処理対象となる画像や動画像のデータが含まれている。記憶部１０４に保存されているコンピュータプログラムやデータは、ＣＰＵ１０１による制御に従って適宜ＲＡＭ１０２にロードされ、ＣＰＵ１０１による処理対象となる。
【００９２】
なお、記憶部１０４としては、ハードディスクドライブ装置以外にも、ＣＤ−ＲＯＭやＤＶＤ−ＲＯＭ等の記憶媒体から情報を読み取る機器、フラッシュメモリ、ＵＳＢメモリなどのメモリ装置を適用することもできる。
【００９３】
出力インターフェース１０６には表示装置１０９が接続されている。表示装置１０９は、ＣＲＴや液晶画面、プロジェクタ装置などにより構成されており、ＣＰＵ１０１による処理結果を画像や文字などでもって表示もしくは投影することができる。
【００９４】
ＣＰＵ１０１、ＲＡＭ１０２、ＲＯＭ１０３、記憶部１０４、出力インターフェース１０６は何れもバス１０７に接続されている。なお、図１に示した構成は、画像処理装置１００に適用可能なコンピュータ装置の構成の一例に過ぎない。
【００９５】
また、図８，９に示した画像処理装置８００，９００の各機能部についても同様で、何れもハードウェアで実装しても良いが、ソフトウェア（コンピュータプログラム）で実装しても良い。後者の場合、このコンピュータプログラムを実行可能なプロセッサを有するコンピュータ装置は、上記の画像処理装置８００，９００として機能するので、このコンピュータ装置に図１に示した構成を適用可能であることはいうまでもない。また、画像処理装置８００や画像処理装置９００を画像処理装置１００内に納めた場合には、図１のコンピュータ装置は、画像処理装置８００や画像処理装置９００の機能をも実現することになる。
【００９６】
（その他の実施例）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００９７】
３０１：画像データ取得部  ３０２：画像縮小部  ３０３：ＯＦ初期化部  ３０４：ＯＦ平滑化部  ３０５：画像変形部  ３０６：エネルギー関数生成部  ３０７：ＯＦ拡大部  ３０８：ＯＦ算出部
【図１】
2018084997.tif 000020
【図２】
2018084997.tif 000021
【図３】
2018084997.tif 000022
【図４】
2018084997.tif 000023
【図５】
2018084997.tif 000024
【図６】
2018084997.tif 000025
【図７】
2018084997.tif 000026
【図８】
2018084997.tif 000027
【図９】
2018084997.tif 000028