以下、本発明の実施形態に係る画像処理装置、撮像装置、及び画像処理方法を、図面を参照しながら詳細に説明する。尚、図中同一又は同等の部分には同じ符号を付す。
撮像装置1は、図1に示すように、撮像部10と、データ処理部20と、ユーザインタフェース部30と、を備える。
撮像部10は、光学レンズ11とイメージセンサ12とを含む。撮像部10は、後述する操作部32が受け付けたユーザの操作に従って被写体を撮像することにより、手ぶれ補正対象の動画を生成する。生成された動画は、時間的に連続して撮像された(連続する複数のフレームにわたって撮像された)複数の画像を含んでいる。
光学レンズ11は、被写体から射出された光を集光するレンズと、焦点、露出、ホワイトバランス等の撮像設定パラメータを調整するための周辺回路と、を備える。
イメージセンサ12は、例えば、CCD(Charge Coupled Device)やCMOS(Complementary Metal Oxide Semiconductor)等を備える。イメージセンサ12は、光学レンズ11が光を集光することによって結像した被写体の光学像を取得して、取得した光学像の電圧情報をアナログ/デジタル変換器(図示せず)によりデジタル画像データに変換する。そして、得られたデジタル画像データを後述する外部記憶部23に保存する。
データ処理部20は、主記憶部21と、出力部22と、外部記憶部23と、CPU(Central Processing Unit)24と、画像処理装置100と、を含む。
主記憶部21は、例えばRAM(Random Access Memory)等を備える。主記憶部21は、CPU24のワークメモリとして機能し、画像データやプログラムを一時的に記憶する。
出力部22は、主記憶部21や外部記憶部23に記憶された画像データを読み出し、この画像データに対応するRGB(R(Red、赤)、G(Green、緑)、B(Blue、青))信号を生成して、後述する表示部31に出力する。また、出力部22は、生成したRGB信号をCPU24や画像処理装置100へ供給する。
外部記憶部23は、不揮発性メモリ(例えば、フラッシュメモリやハードディスク)を備え、撮像装置1全体の制御に必要な制御プログラムを含む種々のプログラム、種々の固定データ等を固定的に記憶する。外部記憶部23は、記憶しているプログラムやデータをCPU24や後述する画像処理装置100へ供給し、撮像部10が生成した動画を含む種々のデータを固定的に記憶する。
CPU24は、外部記憶部23に記憶された制御プログラムを実行することにより撮像装置1全体を制御するとともに、外部記憶部23に記憶された種々のプログラムを実行する。
画像処理装置100は、動画に対してエピポーラ転送方式の手ぶれ補正を施す。画像処理装置100は、図2に示すように、機能的に、指定部101、選別部102、基礎行列取得部103、仮想特徴点生成部104、仮想特徴点軌道構築部105、平滑化部106、及び補正部107を備える。これら各部は、CPU24の機能によって実現される。
尚、画像処理装置100は、通常の画像処理装置と同様に、トリミング機能や画像拡大・縮小機能等を有するが、以下では、本実施形態に特徴的な、エピポーラ転送方式の手ぶれ補正を動画に施す機能を中心に説明する。
指定部101は、手ぶれ補正対象の動画を構成する複数の画像の中から1つを指定する。選別部102は、手ぶれ補正対象の動画を構成する複数の画像のうちの指定部101によって指定された画像以外の所定数(本実施形態では、10フレーム分)の画像の中から、基礎行列の取得対象となる画像を選別する。
選別部102は、指定部101によって指定された画像以外の10フレーム分の画像のうちの各画像について、これら10フレーム分の画像のうち該各画像とは異なる画像との間における、複数の特徴点piの移動量を取得する。選別部102は、取得した複数の特徴点piの移動量を積算した積算値と閾値との大小関係に基づいて、10フレーム分の画像の中から、基礎行列の取得対象となる画像を選別する。
具体的には、選別部102は、指定部101により指定された画像と指定された画像より以前の10フレームの画像それぞれとから互いに対応する特徴点piを抽出することにより、指定部101により指定された画像と指定された画像より以前の10フレームの画像それぞれとの間の、特徴点piの移動ベクトルを取得する。そして、取得した特徴点piの移動ベクトルの大きさ(特徴点piの移動量)を積算した積算値が閾値以上であるか否かに基づいて、指定された画像より以前の10フレームの画像の中から、指定された画像との間のエピポーラ関係を表す基礎行列の取得対象となる画像を選別する。
選別部102は、図2に示すように、オプティカルフロー取得部102aと、オプティカルフロー選別部102bと、を備える。
オプティカルフロー取得部102aは、オプティカルフロー取得処理を実行することにより、画像間の特徴点piの移動ベクトルによって形成される画像間のオプティカルフローと、特徴点piの複数のフレームに亘る移動の軌跡である特徴点軌道pと、を取得する。
具体的には、オプティカルフロー取得部102aは、手ぶれ補正対象の動画が含む連続する複数のフレームの画像それぞれから互いに対応する特徴点piを抽出する(特徴点piの座標(例えば、同次座標)を取得する)。
以下、特徴点をpi kと表記する。iは特徴点を識別するためのインデックスであり、kは特徴点が含まれている画像がどのフレームの画像かを示すインデックスである。なお、どのフレームの画像であるか特定する必要がない場合は、インデックスkを省略してpiと表記する。
三次元空間内の(被写体上の)単一の点が、第Eフレームの画像では特徴点pi Eに投影され、第Fフレームの画像では特徴点pi Fに投影されている場合、2つの特徴点pi E、pi Fは「互いに対応している」と表現する。
異なる1対のフレームの画像がそれぞれ含む互いに対応する1対の特徴点piの一方を始点として、他方を終点として有するベクトルを、これらの画像間の特徴点piの移動ベクトルという。特徴点piの移動ベクトルは、一方の画像における特徴点piが他方の画像においてどこへ移動しているかを示す。異なるフレームの画像間のオプティカルフローは、少なくとも1つ以上の特徴点piの、これらの画像間における移動ベクトルによって形成され、特徴点piの移動ベクトルの画像内における分布を示す。
オプティカルフロー取得部102aは、手ぶれ補正対象の動画に含まれる各フレーム中の互いに対応する特徴点pi、すなわち特徴点piの移動ベクトルの始点または終点、の座標を取得することにより、特徴点piの移動ベクトルと、これらの特徴点piの移動ベクトルが形成するオプティカルフローと、を取得する。
特徴点軌道pは、特徴点piの複数のフレームに亘る軌跡を示す。オプティカルフロー取得部102aは、オプティカルフロー取得処理を実行することにより、手ぶれ補正対象の動画が含む各フレームの画像から互いに対応する特徴点piを抽出し、抽出した特徴点piを追跡することにより特徴点軌道pを取得する。
なお、オプティカルフロー取得部102aは、任意の公知技術を用いて複数のフレームの画像から互いに対応する特徴点piを抽出する。例えば、KLT法(KLTトラッキング)を用いることができる。KLT法を用いて特徴点piを抽出する技術は、非特許文献1に開示されているとおり、当該技術分野において周知であるため詳細な説明は省略する。
オプティカルフロー取得部102aが実行するオプティカルフロー取得処理については、後に図9のフローチャートを参照しながら詳細に説明する。
オプティカルフロー選別部102bは、オプティカルフロー選別処理を実行することにより、オプティカルフロー取得部102aによって取得されたオプティカルフローを形成する特徴点piの移動ベクトルのうち所定数(本実施形態では、100個)の特徴点piの移動ベクトルの大きさ(特徴点piの移動量)の積算値を求める。そして、この積算値が閾値以上であるか否かに基づいて、指定部101により指定された画像より以前の10フレームの画像の中から、基礎行列取得部103による基礎行列取得処理の対象となる画像を選別する。
後述するように、仮想特徴点生成部104は仮想特徴点生成処理を実行し、基礎行列取得部103が取得した基礎行列Fに基づくエピポーラ転送により仮想特徴点viを生成する。具体的には、仮想特徴点生成部104は、指定部101により指定された画像に、この画像の直前の10フレームの画像に含まれる仮想特徴点viが投影するエピポーラ線を基礎行列Fに基づいて求め、求めたエピポーラ線の交点をこの画像における仮想特徴点viとして取得する。なお、仮想特徴点viについては後に詳細に説明する。
ここで、異なる2フレームの画像が互いに類似している場合、これら2つの画像中の仮想特徴点viの座標はほぼ同じである。そのため、これら2つの画像中の仮想特徴点viがそれぞれ投影する2本のエピポーラ線はほぼ平行であり、これらのエピポーラ線が与える交点(エピポーラ交点)は信頼性に欠ける。
そこで、オプティカルフロー選別部102bは、画像間の類似度を、画像間のオプティカルフローを形成する特徴点piの移動ベクトルの大きさ(特徴点piの移動量)に基づいて評価する。そして、類似度が高い複数の画像を発見した場合、そのうち何れか1つの画像のみを基礎行列取得部103によって実行される基礎行列取得処理の対象として選別する。これにより、類似度が高い複数の画像が含む仮想特徴点viからそれぞれエピポーラ線が投影され、信頼性に欠けるエピポーラ交点が生成されることを防止することができる。
具体的には、オプティカルフロー選別部102bは、手ぶれ補正対象の動画を構成する各画像について、オプティカルフロー取得部102aによって取得された、各画像と他の画像との間のオプティカルフローを形成する特徴点piの移動ベクトルのうちランダムに抽出された所定数(本実施形態では、100個)の特徴点piの移動ベクトルの大きさ(特徴点piの移動量)をそれぞれ取得する。そして、取得した特徴点piの移動ベクトルの大きさ(特徴点piの移動量)を積算した積算値が閾値以上であるか否かを判別する。各画像は、他の画像との間のオプティカルフローを形成する特徴点piの移動ベクトルのうち100個の特徴点piの移動ベクトルの大きさ(特徴点piの移動量)の積算値が閾値以上である場合のみ、基礎行列取得処理部103による基礎行列取得処理の対象として選別される。
2つの画像が互いに類似している場合、これら2つの画像がそれぞれ含む互いに対応する特徴点piは、2つの画像においてほぼ同じ位置に存在する。このため、2つの画像間のオプティカルフローを形成する特徴点piの移動ベクトルの大きさ、すなわち2つの画像がそれぞれ含む互いに対応する特徴点pi間の移動ベクトルの大きさは、2つの画像が類似していない場合に比べて、小さい。従って、画像間のオプティカルフローを形成する所定数の特徴点piの移動ベクトルの大きさの積算値が閾値以上であるか否かに基づいて、画像間の類似度を評価することができる。オプティカルフロー選別部102bは、他の画像との間のオプティカルフローを形成する特徴点piの移動ベクトルのうち100個の特徴点piの移動ベクトルの大きさの積算値が閾値以上である画像のみを選別することにより、類似度が高い複数の画像のうち何れか1つの画像のみを基礎行列取得処理の対象として選別している。
本実施形態において、オプティカルフロー選別部102bは、特徴点piの移動ベクトルそれぞれのL2ノルムを各特徴点piの移動ベクトルの大きさとして取得する。
また、類似度判別の基準となる閾値は、任意の方法により設定すればよい。例えば、画像間の類似度と、画像間の特徴点piの移動ベクトルの大きさの積算値と、の間の相関を実験等により求めることにより、予め閾値を設定しておくことができる。
オプティカルフロー選別部102bが実行するオプティカルフロー選別処理については、後に図11のフローチャートを参照しながら詳細に説明する。
基礎行列取得部103は、選別部102によって選別された画像のそれぞれについて、指定部101によって指定された画像との関係を表す基礎行列Fを取得する。
基礎行列Fは、手ぶれ補正前の2つの画像間の幾何的関係(エピポーラ関係)を表す3行3列の行列である。
図3を参照して、エピポーラ幾何の概念を説明する。異なる時刻に撮像された第Qフレームの画像と第Rフレームの画像は、それぞれ、互いに異なる点C1と点C2とに配置された撮像装置1によって撮像された画像と見なすことができる。すなわち、第Qフレームの画像と第Rフレームの画像は、それぞれ、点C1と点C2とを投影中心とする投影面を表す画像と見なすことができる。点C1と点C2との位置の相違は、手ぶれ等の影響により撮像装置1の位置が変動したことに由来する。三次元空間内の単一の点Pは、第Qフレームの画像中では点m1に投射される一方、第Rフレームの画像中では点m2に投影される。すなわち、点m1と点m2は互いに対応する点である。
三次元空間内の点Pと点C1とを結ぶ直線は、第Qフレームの画像上では点m1に投影される一方、第Rフレームの画像上では、点P、点C1、及び点C2を通る平面(エピポーラ面)と第Rフレームの画像との交線である線L1として投影される。線L1は、第Qフレームの画像中の点m1が第Rフレームの画像に投影するエピポーラ線である。同様に、線L2は、第Rフレームの画像中の点m2が第Qフレームの画像に投影するエピポーラ線である。
第Qフレームの画像中の任意の点qが第Rフレームの画像に投影するエピポーラ線L
Q、Rは、次の式(1)により表される。ここで、F
Q,Rは、第Qフレームの画像と第Rフレームの画像との間のエピポーラ関係を表す基礎行列である。F
Q,Rは、第Qフレームの画像中の任意の点m1と、点m1に対応する第Rフレームの画像中の点m2と、を用いて次の式(2)で表される。
式(2)から明らかなように、基礎行列Fは、f11からf32までの8個の未知数を有するため、少なくとも8組の対応する点m1、m2に基づいて求めることができる。すなわち、8箇所の対応点が与えられれば基礎行列Fを算出することができる。
基礎行列取得部103は、指定部101によって指定された画像と選別部102によって選別された各画像とからそれぞれオプティカルフロー取得部102aが抽出した8組の互いに対応する特徴点piの座標に基づき、標準的な8ポイントアルゴリズムと誤差を最小化するためのRANSAC法とを用いて基礎行列Fを取得する。8ポイントアルゴリズムとRANSAC法を用いて基礎行列Fを取得する方法は、非特許文献1に開示されているとおり、当該技術分野において周知であるため詳細な説明は省略する。
基礎行列取得部103が実行する基礎行列取得処理については、後に図13のフローチャートを参照しながら詳細に説明する。
仮想特徴点生成部104は、仮想特徴点生成処理を実行し、基礎行列取得部103によって取得された基礎行列Fに基づいて、選別部102によって選別された画像内の互いに対応する特徴点pi又は仮想特徴点viを指定部101により指定された画像にエピポーラ投影することにより、指定された画像内における仮想特徴点viを生成する。
具体的には、仮想特徴点生成部104は、画像間のエピポーラ関係を表す基礎行列Fに基づいて、対応点を生成するエピポーラ転送という方法により仮想特徴点viを生成する。
図4を参照して、エピポーラ転送の概念を説明する。第Xフレームの画像と第Yフレームの画像とにおける互いに対応する点m3、m4がそれぞれ第Zフレームの画像に投影するエピポーラ線L3、L4は、第Zフレームの画像中の、点m3及び点m4に対応する点m5で交わる。エピポーラ線L3、L4及びその交点である点m5は、画像間のエピポーラ関係を表す基礎行列FX、Z、FY、Zに基づいて算出できる。すなわち、第Zフレーム中の対応点である点m5を、画像間のエピポーラ関係を表す基礎行列Fに基づいて生成できる。
仮想特徴点生成部104は、このエピポーラ転送を用いて、指定された画像内における仮想特徴点viを生成する。
図4に示すように、少なくとも2本のエピポーラ線があればその交点として仮想特徴点viを取得できるものの、実際にはノイズやトラッキングエラー、モデリングエラー等の影響により交点の信頼性は損なわれている。そこで、仮想特徴点生成部104は、最大10本のエピポーラ線のうち組み合わせ可能な異なる2本のエピポーラ線の交点(最大で10C2=45個の交点)を求め、求めた交点の座標の平均を求めることにより、より正確な特徴点viを取得する。
具体的には、図5に示すように、仮想特徴点生成部104は、第tフレームの画像に、この画像の直前に撮像された連続する10フレーム分の画像(第(t−10)フレームから第(t−1)フレームまでの過去10フレーム)に含まれる仮想特徴点vi t−1〜vi t−10がそれぞれ投影する10本のエピポーラ線を、基礎行列取得部103によって取得された基礎行列Ft、t−1〜Ft、t−10に基づいて求める。そして、求めた10本のエピポーラ線の交点の平均を、第tフレームの画像中の仮想特徴点vi tとして取得する。
仮想特徴点生成部104が実行する仮想特徴点生成処理については、後に図14のフローチャートを参照しながら詳細に説明する。
仮想特徴点軌道構築部105は、手ぶれ補正対象の動画を構成する複数の画像の中から指定部101が指定する画像を変えて、指定部101、選別部102、基礎行列取得部103、及び仮想特徴点生成部104の処理を繰り返すことにより、仮想特徴点軌道vを構築する。
仮想特徴点軌道vは、仮想特徴点viの複数のフレームに亘る軌跡である。仮想特徴点軌道構築部105は、仮想特徴点生成部104に、手ぶれ補正対象の動画を構成する各フレームの画像において仮想特徴点viを生成させることにより仮想特徴点viを時間的に追跡し(複数のフレームに亘って追跡し)、仮想特徴点軌道vを構築する。
仮想特徴点軌道vは、図6に示すように、手ぶれ補正前の(手ぶれの影響を受けた)撮像装置1の動きを表している。
特徴点軌道pが画像からKLT法を用いて抽出された特徴点piによって構成されるのに対し、仮想特徴点軌道vはエピポーラ転送により生成された仮想特徴点viによって構成される。
三次元空間内の被写体の一部分が、あるフレームの画像において物体の影に隠れてしまったり、撮像装置1の視野から外れてしまったりした場合、この部分に含まれる点の、当該フレームの画像における投影点である特徴点piをKLT法により抽出することはできない。しかし、このフレームの画像内の仮想特徴点viは、過去のフレームの画像内の対応する仮想特徴点viをエピポーラ転送することにより生成できる。また、KLT法ではトラッキングエラーとなり特徴点piが抽出できない場合でも、エピポーラ転送によれば仮想特徴点viを生成することができる。
このため、仮想特徴点軌道vは、特徴点軌道pよりも長く(多くのフレームにわたって)連続している。
仮想特徴点軌道構築部105が実行する仮想特徴点軌道vの構築処理については、後に図8のフローチャートを参照しながら詳細に説明する。
平滑化部106は、仮想特徴点軌道構築部105によって構築された仮想特徴点軌道vを時間方向に平滑化することにより、平滑化された仮想特徴点軌道〜vを取得する。
具体的には、平滑化部106は、下記の式(3)を用い、仮想特徴点軌道vを構成する仮想特徴点v
iそれぞれの座標とガウシアンカーネルとの畳み込みを作ることにより、平滑化された仮想特徴点軌道〜vを構成する手ぶれ補正後の仮想特徴点〜v
i tの座標を取得する。ここで、gは下記の式(4)で表されるガウシアンカーネルである。
本実施形態では、σ=50のガウシアンカーネルを用いて仮想特徴点軌道vを平滑化する。
仮想特徴点軌道vが手ぶれ補正前の(手ぶれの影響を受けた)撮像装置1の動きを表していたのに対し、平滑化された仮想特徴点軌道〜vは、手ぶれ補正後の(手ぶれの影響を除去した)撮像装置1の動きを表す。
具体的には図6に示すように、手ぶれ補正後の動画を構成する各フレームの画像は、平滑化された仮想特徴点軌道〜vによって定義される。すなわち、手ぶれ補正前の動画を構成する各フレームの画像と手ぶれ補正後の動画を構成する各フレームの画像との間の関係は、仮想特徴点軌道vと平滑化された仮想特徴点軌道〜vとの間の関係によって定義される。
補正部107は、仮想特徴点軌道構築部105によって構築された仮想特徴点軌道vと、平滑化部106によって平滑化された仮想特徴点軌道〜vと、の間の関係に基づいて、手ぶれ補正対象の動画を構成する複数の画像それぞれを補正する。
具体的には、補正部107は、手ぶれ補正前の動画が含む各フレームの画像に対し、手ぶれ補正前の画像における特徴点piを手ぶれ補正後の画像における手ぶれ補正後の特徴点〜piへ移すような射影変換を施すことにより、手ぶれ補正を実行する。
例えば、補正部107は、手ぶれ補正前の動画を構成する各フレームの画像に対し、各フレームの画像における任意の点(x、y)を次の式(5)を満たす点(x’、y’)へ移す射影変換を施すことにより、手ぶれ補正後の画像を取得する。ここで、式(5)中の射影変換パラメータa〜hは、下記の式(6)を用いて求めることができる。
式(6)から明らかなように、射影変換パラメータa〜hは、少なくとも4組の対応点(x1,y1)と(x1’、y1’)〜(x4,y4)と(x4’とy4’)が与えられれば求めることができる。補正部107は、手ぶれ補正前の各フレームの画像に含まれる特徴点piと、これに対応する手ぶれ補正後のフレームの画像に含まれる手ぶれ補正後の特徴点〜piと、を式(6)に代入することにより、射影変換パラメータa〜hを取得し、射影変換を行う。
手ぶれ補正後の画像が手ぶれ補正後の撮像装置1の動きを表す平滑化された仮想特徴点軌道〜vによって定義されるため、手ぶれ補正後の特徴点〜piは、仮想特徴点軌道vと平滑化された仮想特徴点軌道〜vとの間の関係に基づいて取得することができる。
具体的には、図6に示すように、手ぶれ補正前の画像と手ぶれ補正後の画像との間のエピポーラ関係を表す基礎行列〜Fが、仮想特徴点軌道vと平滑化された仮想特徴点軌道〜vとの間の関係に基づいて取得される。そして、図7に示すように、手ぶれ補正後の各フレームの画像に、前後5フレーム分の手ぶれ補正前の画像に含まれる特徴点piを、取得された基礎行列〜Fに基づいてエピポーラ転送することにより、手ぶれ補正後の特徴点〜piが生成される。
このように、補正部107は、仮想特徴点軌道vと平滑化された仮想特徴点軌道〜vとの間の関係に基づいて求めた射影変換パラメータを用いて射影変換を行うことにより、手ぶれ補正対象の動画を構成する各フレームの画像に手ぶれ補正を施す。上述したとおり、エピポーラ転送を用いて構築される仮想特徴点軌道vは長く(多くのフレームにわたって)連続しているため、大規模なフィルタを適用し(σ=50の大きなガウシアンカーネルを用いて時間方向に平滑化し)、手ぶれ補正後の画像を定義することができる。
図1に戻って、ユーザインタフェース部30は、表示部31と、操作部32と、外部インタフェース33と、を含む。
表示部31は、例えばLCD(Liquid Crystal Displey)やCRT(Cathode Ray Tube)、有機EL(Electro Luminescence)ディスプレイ等を備え、出力部22から供給されたRGB信号に基づいて、撮像部10により生成され、外部記憶部23により記憶されている手ぶれ補正対象の動画、画像処理装置100が手ぶれ補正対象の動画に手ぶれ補正処理を施すことにより生成した動画等を含む種々の動画像を表示する。
操作部32は、ユーザからの操作指示を受け付ける。操作部32は、撮像装置1の電源スイッチ、シャッタボタン、撮像装置1の種々の機能を選択するためのボタン等、各種の操作ボタンを備える。操作部32は、ユーザから操作指示を受け付けると、受け付けた指示情報を撮像部10やデータ処理部20のCPU24等に供給する。
なお、表示部31と操作部32とは、互いに重畳して配置されたいわゆるタッチパネルによって構成されるものであってもよい。
外部インタフェース33は、撮像装置1の外部の機器とデータをやり取りするためのインタフェースである。例えば、外部インタフェース33は、画像処理装置100が手ぶれ補正対象の動画に手ぶれ補正処理を施すことによって生成した動画を、USB(Universal Serial Bus)規格のデータに変換して、USBケーブルを介して外部の機器との間でデータを送受信する。
以下、上述の物理的・機能的構成を有する撮像装置1及び画像処理装置100が動画に手ぶれ補正を施す動作を、図8〜図15を参照しながら詳細に説明する。
撮像装置1が備える撮像部10は、予め、被写体を撮像することにより、手ぶれ補正対象の動画を生成している。当該動画は、時間的に連続して撮像された複数フレームの画像を含んでいる。生成された動画は、外部記憶部23によって記憶される。
ユーザは、動画の手ぶれを補正することを所望する場合、操作部32を操作することにより、手ぶれ補正対象の動画のデータを主記憶部21に展開する。そして、撮像装置1が備える複数の動作モードの1つである「手ぶれ補正モード」を選択する。
操作部32が、ユーザによる「手ぶれ補正モード」を選択する操作を受け付けると、CPU24は、特徴点抽出プログラムや画像処理プログラムを含む、図8のフローチャートに示す手ぶれ補正処理を実行するためのプログラムを外部記憶部23から読み出し、主記憶部21に展開する。
このような状態において、ユーザが、操作部32を操作して手ぶれ補正の開始を指示すると、画像処理装置100が、図8のフローチャートに示す手ぶれ補正処理を開始する。
手ぶれ補正処理を開始すると、まず、指定部101が、手ぶれ補正開始フレームを指定する(ステップS1)。手ぶれ補正開始フレームは、手ぶれ補正対象の動画に含まれる複数のフレームのうち最初の(撮像時刻が最も古い)フレームである。以下、指定部101により指定されたフレームを、第tフレームと表記する。
オプティカルフロー取得部102aは、オプティカルフロー取得処理を実行する(ステップS2)。これにより、オプティカルフロー取得部102aは、第tフレームより以前の10フレーム(第(t−1)フレーム〜第(t−10)フレーム)分の画像それぞれから互いに対応する特徴点piを抽出する。そして、画像間の特徴点piの移動ベクトルによって形成される画像間のオプティカルフローを取得すると共に、特徴点軌道pを取得する。
以下、ステップS2のオプティカルフロー取得処理の詳細を、図9のフローチャートを参照しながら説明する。
ステップS2のオプティカルフロー取得処理を開始すると、オプティカルフロー取得部102aは、まず、図8のフローチャートのステップS1において指定部101により指定されたフレーム(第tフレーム)を第Aフレームとして設定し(ステップS201)、第(t−10)フレーム(第tフレームの10フレーム前のフレーム)を第Bフレームとして設定する(ステップS202)。
次に、オプティカルフロー取得部102aは、第Aフレームの画像と第Bフレームの画像との間のオプティカルフローが、以前に実行されたオプティカルフロー取得処理によって取得済みであるか否かを判別する(ステップS203)。
取得済みであると判別すると(ステップS203;YES)、処理はステップS208へ移る。これにより、既に取得したオプティカルフローを重複して取得することを防止できる。
オプティカルフローが未取得であると判別すると(ステップS203;NO)、オプティカルフロー取得部102aは、第Aフレームの画像から、KLT法を用いて特徴点piを抽出する(ステップS204)。
そして、オプティカルフロー取得部102aは、第Bフレームの画像から、ステップS204で第Aフレームの画像から抽出した各特徴点piに対応する特徴点piを、KLT法を用いて抽出する(ステップS205)。
ステップS204及びステップS205で互いに対応する特徴点piを抽出すると、オプティカルフロー取得部102aは、抽出した特徴点pi間のベクトル(特徴点piの移動ベクトル)を取得することにより、これらの移動ベクトルによって形成される、第Aフレームの画像と第Bフレームの画像との間のオプティカルフローを取得する(ステップS206)。また、オプティカルフロー取得部102aは、ステップS204及びステップS205で抽出した特徴点piを、それぞれ、特徴点軌道pを成す点として取得することにより、特徴点軌道pを取得する(ステップS207)。
オプティカルフローと特徴点軌道pとを取得した後、オプティカルフロー取得部102aは、値Bを1だけインクリメントする(ステップS208)。すなわち、オプティカルフロー取得部102aは、ステップS203〜ステップS207の処理対象となる第Bフレームを、次の(次に撮像時刻が新しい)フレームに移す。例えば、直前に実行したステップS203〜ステップS207の処理において、第(t−10)フレームが第Bフレームとして設定されていた場合、ステップS208において、第(t−10)フレームの次のフレームである第(t−9)フレームが、新たに第Bフレームとして設定される。
値Bをインクリメントした後、オプティカルフロー取得部102aは、インクリメントされた後の値Bが値Aに一致するか否か(第Bフレームと第Aフレームとが同一であるか否か)を判別する(ステップS209)。
インクリメント後の値Bが値Aに一致しない(第Bフレームと第Aフレームとが同一ではない)と判別すると(ステップS209;NO)、処理はステップS203へ戻る。
すなわち、オプティカルフロー取得部102aは、値Bを1ずつインクリメントしながら、インクリメント後の値Bが値Aに一致する(第Bフレームと第Aフレームとが同一である)と判別するまで(ステップS209においてYESと判別するまで)ステップS203〜S208の処理を繰り返す。これにより、特徴点軌道pを取得すると共に、図10に示すように、第Aフレームの画像と、第tフレーム直前の10フレームのうち第Aフレームより以前のフレームの画像と、の間のオプティカルフローを取得する。
最終的に、インクリメント後の値Bが値Aに一致する(第Bフレームと第Aフレームとが同一である)と判別すると(ステップS209;YES)、オプティカルフロー取得部102aは、値Aを1だけディクリメントする(ステップS210)。すなわち、ステップS202〜ステップS209の処理対象となる第Aフレームを、直前の(次に撮像時刻が古い)フレームに移す。例えば、直前に実行したステップS202〜ステップS209の処理において、第tフレームが第Aフレームとして設定されていた場合、ステップS210において、第tフレームの直前のフレームである第(t−1)フレームが、新たに第Aフレームとして設定される。
ステップS210で値Aを1だけディクリメントした後、オプティカルフロー取得部102aは、ディクリメント後の値Aが値(t−10)に一致するか否かを判別する(ステップS211)。
ディクリメント後の値Aが値(t−10)に一致しないと判別すると(ステップS211;NO)、処理はステップS202へ戻る。
すなわち、オプティカルフロー取得部102aは、値Aを1ずつディクリメントしながら、ディクリメント後の値Aが値(t−10)に一致すると判別するまで(ステップS211においてYESと判別するまで)、ステップS202〜S210の処理を繰り返す。これにより、特徴点軌道pを取得すると共に、図10に示すように、第tフレーム及び第tフレームの直前の10フレームそれぞれについて、各フレームの画像と、各フレームより以前のフレームの画像と、の間のオプティカルフローを取得する。
ディクリメント後の値Aが値(t−10)に一致すると判別すると(ステップS211;YES)、オプティカルフロー取得部102aは、オプティカルフロー取得処理を終了する。
図8のフローチャートに戻って、ステップS2のオプティカルフロー取得処理終了後、オプティカルフロー選別部102bは、オプティカルフロー選別処理を実行する(ステップS3)。これにより、ステップS1において指定部101により指定されたフレーム(第tフレーム)より以前の10フレームの画像の中から、ステップS4の基礎行列取得処理の対象となる画像を選別する。
以下、ステップS3のオプティカルフロー選別処理の詳細を、図11のフローチャートを参照しながら説明する。
ステップS3のオプティカルフロー選別処理を開始すると、オプティカルフロー選別部102bは、まず、図8のフローチャートのステップS1において指定部101が指定したフレーム(第tフレーム)の直前のフレーム(第(t−1)フレーム)を第Cフレームとして設定する(ステップS301)。
そして、オプティカルフロー選別部102bは、第Cフレームが、以前に実行されたオプティカルフロー選別処理においてスキップ対象(基礎行列取得処理の対象から除外されるフレーム)と非スキップ対象(基礎行列取得処理の対象として選別されるフレーム)との何れであるかを既に評価されているか否か判別する(ステップS302)。
これにより、既に評価済みのフレームを重複して評価することを防止できる。
第Cフレームが評価済みであると判別された場合(ステップS302;YES)、処理はステップS310へ移る。
第Cフレームが未評価であった場合(ステップS302;NO)、オプティカルフロー選別部102bは、第(t−10)フレーム(第tフレームより10フレーム前のフレーム)を第Dフレームに設定する(ステップS303)。
第Dフレームを設定した後、オプティカルフロー選別部102bは、ステップS2におけるオプティカルフロー取得処理で取得された、第Cフレームの画像と第Dフレームの画像との間のオプティカルフローを取得する(ステップS304)。
第Cフレームの画像と第Dフレームの画像との間のオプティカルフローを取得すると、オプティカルフロー選別部102bは、取得したオプティカルフローを形成する特徴点pi移動ベクトルのうち100個をランダムに抽出する。そして、抽出した特徴点piの移動ベクトルそれぞれのL2ノルムを各特徴点piの移動ベクトルの大きさ(特徴点piの移動量)として算出し、算出した全てのL2ノルムを合計することにより積算値を取得する(ステップS305)。
そして、オプティカルフロー選別部102bは、取得した積算値が所定の閾値以上であるか否かを判別する(ステップS306)。
これにより、第Cフレームの画像と第Dフレームの画像とが類似しているか否かを判別する。
具体的には、積算値が閾値より小さいと判別された場合(ステップS306;NO)、この判別結果は、第Cフレームの画像と第Dフレームの画像とが類似していることを意味する。この場合、オプティカルフロー選別部102bは、第Cフレームをスキップ対象と評価し(ステップS312)、ステップS2のオプティカルフロー取得処理において取得した、第tフレームの画像と第Cフレームの画像との間のオプティカルフローを、基礎行列取得処理の対象から消去する。その後、処理はステップS310へ移る。
一方、積算値が閾値以上であると判別された場合(ステップS306;YES)、この判別結果は、第Cフレームの画像と第Dフレームの画像との間の類似度が低いことを意味する。この場合、オプティカルフロー選別部102bは、値Dを1だけインクリメントし(ステップS307)、インクリメント後の値Dが値Cに一致するか否かを判別する(ステップS308)。一致しないと判別した場合(ステップS308;NO)、処理はステップS304へ戻る。
すなわち、オプティカルフロー選別部102bは、値Dを1ずつインクリメントしながら、インクリメント後の値Dが値Cに一致すると判別されるまで(ステップS308においてYESと判別されるまで)ステップS304〜ステップS307の処理を繰り返す。これにより、図12に示すように、第Cフレームの画像と、第tフレームより以前の10フレームのうち第Cフレームより以前に撮像された各フレームの画像と、が類似しているか否かを順次判別していく。そして、第Cフレームの画像が、第tフレームより以前の10フレームのうちこのフレームより以前に撮像された各フレームの画像の何れにも類似していなければ、このフレームを、基礎行列取得処理の対象として選別する。
第Cフレームの画像が、第tフレームの画像より以前の10フレームのうち第Cフレームより以前に撮像された各フレームの画像の何れかに類似していれば、インクリメント後の値Dが値Cに一致すると判別される(ステップS308においてYESと判別される)よりも前に、ステップS306においてNOと判別され、第Cフレームはスキップ対象と評価されて(ステップS312)、処理はステップS310へ移る。
第Cフレームの画像が、第tフレームの画像より以前の10フレームのうち第Cフレームより以前に撮像された各フレームの画像の何れにも類似していなければ、オプティカルフロー選別部102bは、一度もステップS306においてNOと判別することの無いまま、インクリメント後の値Dが値Cに一致すると判別する(ステップS308においてYESと判別される)まで、ステップS304〜ステップS307の処理を繰り返す。そして、インクリメント後の値Dが値Cに一致すると判別すると(ステップS308;YES)、オプティカルフロー選別部102bは、第Cフレームを非スキップ対象と評価し(ステップS309)、ステップS2のオプティカルフロー取得処理において取得した、第tフレームの画像と第Cフレームの画像との間のオプティカルフローを基礎行列取得処理の対象として保存する。その後、処理はステップS310へ移る。
ステップS310において、オプティカルフロー選別部102bは、値Cを1だけディクリメントし、ディクリメント後の値Cが値(t−10)に一致するか否かを判別する(ステップS311)。一致しないと判別された場合(ステップS311;NO)、処理はステップS302へ戻る。
すなわち、オプティカルフロー選別部102bは、値Cを1ずつインクリメントしながら、ディクリメント後の値Cが値(t−10)に一致すると判別されるまで(ステップS311においてYESと判別されるまで)ステップS302〜ステップS310の処理を繰り返す。これにより、図12に示すように、第tフレームの直前の10フレーム分それぞれの画像について、第tフレームより以前の10フレームのうち当該フレームより以前に撮像された各フレームの画像の何れかに類似しているか否かを順次判別していく。そして、第tフレームより以前の10フレームのうち、当該フレームより以前に撮像された各フレームの画像の何れにも類似していないフレームを、ステップS4の基礎行列取得処理の対象として選別する。
ディクリメント後の値Cが値(t−10)に一致すると判別すると(ステップS311;YES)、オプティカルフロー選別部102bは、オプティカルフロー選別処理を終了する。
図8のフローチャートに戻って、ステップS3のオプティカルフロー選別処理が終了した後、基礎行列取得部103は、基礎行列取得処理を実行する(ステップS4)。これにより、ステップS3のオプティカルフロー選別処理により選別されたフレームの画像のそれぞれについて、ステップS1において指定部101により指定された画像との間の関係(エピポーラ関係)を表す基礎行列Fを取得する。
以下、ステップS4の基礎行列取得処理の詳細を、図13のフローチャートを参照しながら説明する。
ステップS4の基礎行列取得処理を開始すると、基礎行列取得部103は、まず、第(t−10)フレーム(第tフレームより10フレーム前のフレーム)を第Gフレームとして設定する(ステップS401)。
次に、基礎行列取得部103は、第Gフレームが、ステップS3におけるオプティカルフロー選別処理により、非スキップ対象と評価されているか否かを判別する(ステップS402)。
第Gフレームの画像が、第tフレームより前の10フレーム分の画像のうち第Gフレームより前のフレームの画像の何れかに類似している場合、第Gフレームは、オプティカルフロー選別処理により、スキップ対象と評価されている。この場合、第Gフレームは非スキップ対象と評価されていなかったと判別され(ステップS402;NO)、処理はステップS405へ移る。
第Gフレームの画像が、第tフレームより前の10フレーム分の画像のうち第Gフレームより前のフレームの画像の何れにも類似していなかった場合、第Gフレームは、オプティカルフロー選別処理により、非スキップ対象と評価されている。この場合、第Gフレームは非スキップ対象と評価されていたと判別され(ステップS402;YES)、オプティカルフロー取得処理により取得された、第tフレームの画像と第Gフレームの画像との間のオプティカルフローを取得する(ステップS403)。
そして、基礎行列取得部103は、取得したオプティカルフローに基づいて、第tフレームの画像と第Gフレームの画像との間のエピポーラ関係を表す基礎行列Ft,Gを取得する(ステップS404)。
具体的には、基礎行列取得部103は、第tフレームの画像と第Gフレームの画像との間のオプティカルフローを形成する特徴点piの移動ベクトルのうち、複数の特徴点piの移動ベクトルの始点と終点の座標(例えば、同次座標)を対応点として用い、8ポイントアルゴリズムとRANSAC法により上述の式(2)で表される基礎行列Fの各パラメータを求める。
ステップS404において基礎行列Ft,Gを取得した後、基礎行列取得部103は、値Gを1だけインクリメントし(ステップS405)、インクリメント後の値Gが値tに一致するか否かを判別する(ステップS406)。一致しないと判別された場合(ステップS406;NO)、処理はステップS402へ戻る。
すなわち、基礎行列取得部103は、値Gを1ずつインクリメントしながら、インクリメント後の値Gが値tに一致すると判別されるまで(ステップS406においてYESと判別されるまで)、ステップS402〜ステップS405の処理を繰り返す。これにより、指定部101によって指定されたフレーム(第tフレーム)の画像と、オプティカルフロー選別処理によって選別されたフレームの画像と、の間の基礎行列を取得する。
インクリメント後の値Gが値tに一致すると判別した場合(ステップS406;YES)、基礎行列取得部103は、基礎行列取得処理を終了する。
図8のフローチャートに戻って、ステップS4の基礎行列取得処理が終了した後、仮想特徴点生成部104は、仮想特徴点軌道構築処理を実行する(ステップS5)。これにより、基礎行列取得処理によって取得された基礎行列Fに基づいて、ステップS1で指定部101によって指定されたフレーム(第tフレーム)より前の10フレーム分の画像内の互いに対応する仮想特徴点viを第tフレームの画像にエピポーラ転送することにより、第tフレームの画像内における仮想特徴点viを生成する。
以下、ステップS5の仮想特徴点生成処理の詳細について、図14のフローチャートを参照しながら説明する。
仮想特徴点生成処理においては、第tフレームより前の10フレーム分の画像が含む仮想特徴点viが第tフレームへ投影するエピポーラ線を求める必要がある。
しかし、手ぶれ補正処理の初期段階においては、エピポーラ線の投影元となるべき過去のフレームの画像に含まれる仮想特徴点viが未だ生成されていないことがある。
そこで、仮想特徴点生成処理を開始すると、仮想特徴点生成部104は、まず、仮想特徴点軌道準備処理を実行する(ステップS501)。
以下、ステップS501の仮想特徴点軌道準備処理の詳細について、図15のフローチャートを参照しながら説明する。
仮想特徴点軌道準備処理を開始すると、仮想特徴点生成部104は、まず、第tフレームより前のフレームにおいて構築された仮想特徴点軌道vのうち何れか1つを選択する(ステップS501a)。
そして、仮想特徴点生成部104は、選択した仮想特徴点軌道vが第(t−1)フレームまで伸びているか否か(第(t−1)フレームから連続しているか否か)を判別する(ステップS501b)。
仮想特徴点軌道vが第(t−1)フレームまで伸びている(第(t−1)フレームから連続している)と判別した場合(ステップS501b;YES)、仮想特徴点生成部104は、選択した仮想特徴点軌道vを仮想特徴点生成のための初期軌道として用いることができるので、処理はステップS501dへ移る。
一方、仮想特徴点軌道vが第(t−1)フレームまで伸びていない(第(t−1)フレームから連続していない)と判別された場合(ステップS501b;NO)、第tフレームの直前に撮像された5フレーム分の画像から取得された特徴点軌道pを仮想特徴点軌道vにコピーする(第(t−1)〜第(t−5)フレームの画像から抽出済みの特徴点piを、これらの画像中の仮想特徴点viと見なす)ことにより仮想特徴点生成のための初期軌道を取得し(ステップS501c)、処理はステップS501dへ移る。
本実施形態では、100本の仮想特徴点軌道vにより、手ぶれ補正前の撮像装置1の動きを定義する(手ぶれ補正前の各フレームの画像を定義する)。そこで、ステップS501dにおいて、仮想特徴点生成部104は、100個の仮想特徴点軌道vに対してステップS501b〜S501cの処理を施したか否か判別する(ステップS501d)。100個の仮想特徴点軌道vに処理を施していないと判別すると(ステップS501d;NO)、処理はステップS501aへ戻り、仮想特徴点生成部104は、別の仮想特徴点軌道vを選択してステップS501b〜S501cの処理を実行する。
最終的に、100個の仮想特徴点軌道vに処理を施したと判別すると(ステップS501d;YES)、仮想特徴点生成部104は、仮想特徴点軌道準備処理を終了する。
図14のフローチャートに戻って、ステップS501の仮想特徴点軌道準備処理を終了した後、仮想特徴点生成部104は、仮想特徴点軌道準備処理を施された100本の仮想特徴点軌道vのうち何れか1つを選択する(ステップS502)。
次に、仮想特徴点生成部104は、第(t−10)フレーム(第tフレームより10フレーム前のフレーム)を第Hフレームとして設定し(ステップS503)、第Hフレームが、ステップS3におけるオプティカルフロー選別処理において、非スキップ対象と評価されたか否かを判別する(ステップS504)。
第Hフレームの画像が、第tフレームより前の10フレーム分の画像のうち第Hフレームより前のフレームの画像の何れかに類似している場合、第Hフレームは、オプティカルフロー選別処理により、スキップ対象と評価されている。この場合、仮想特徴点生成部104は、非スキップ対象と評価されていないと判別し(ステップS504;NO)、処理はステップS506へ移る。
第Hフレームの画像が、第tフレームより前の10フレーム分の画像のうち第Hフレームより前のフレームの画像の何れにも類似していなかった場合、第Hフレームは、オプティカルフロー選別処理により、非スキップ対象と評価されている。この場合、仮想特徴点生成部104は、非スキップ対象と評価されていると判別する(ステップ504;YES)。そして、仮想特徴点生成部104は、第Hフレームの画像が含む仮想特徴点vi Hが第tフレームの画像に投影するエピポーラ線を、ステップS4における基礎行列取得処理によって取得された、第tフレームの画像と第Hフレームの画像との間のエピポーラ関係を表す基礎行列Ft、Hに基づいて、取得する(ステップS505)。
エピポーラ線を取得した後、仮想特徴点生成部104は、値Hを1だけインクリメントし(ステップS506)、インクリメント後の値Hが値tに一致するか否かを判別する(ステップS507)。一致しないと判別すると(ステップS507;NO)、処理はステップS504へ戻る。
すなわち、仮想特徴点生成部104は、値Hを1ずつインクリメントしながら、インクリメント後の値Hが値tに一致すると判別されるまで(ステップS507においてYESと判別されるまで)、ステップS504〜ステップS506の処理を繰り返す。これにより、第tフレームより前の10フレームのうち非スキップ対象と判別されたフレームの画像に含まれる仮想特徴点viが第tフレームの画像に投影するエピポーラ線を取得する。
最終的に、インクリメント後の値Hが値tに一致すると判別した場合(ステップS507;YES)、仮想特徴点生成部104は、取得された複数のエピポーラ線から任意の1組を選択し(ステップS508)。そして、これら1組のエピポーラ線が互いに成す角が1.5°以上であるか否かを判別する(ステップS509)。
1組のエピポーラ線が平行に近いほど、これらのエピポーラ線が与える交点の信頼度は低い。そこで、仮想特徴点生成部104は、一定以上に大きな角を成すエピポーラ線の組が与える交点の座標のみを取得することにより、信頼性の低い交点を排除する。
具体的には、成す角が1.5°を下回ると判別すると(ステップS509;NO)、処理はステップS511へ移る。一方、成す角が1.5°以上であると判別すると(ステップS509;YES)、仮想特徴点生成部104は、これらのエピポーラ線の交点の座標を取得し(ステップS510)、処理はステップS511へ移る。
ステップS511において、仮想特徴点生成部104は、取得された複数のエピポーラ線から選択可能な全ての組み合わせを選択したか否かを判別する(ステップS511)。選択されていない組み合わせがあると判別すると(ステップS511;NO)、処理はステップS508へ戻り、仮想特徴点生成部104は、未だ選択されていない組み合わせを選択して、同様の処理を実行する。
可能な全ての組み合わせが選択されたと判別すると(ステップS511;YES)、仮想特徴点生成部104は、取得された全ての交点座標の平均値を求め、この平均値と、取得された全ての交点座標の中央値と、の間の距離が5画素より小さいか否か判別する(ステップS512)。
具体的には、平均値と中央値との間の距離が5画素より小さいと判別すると(ステップS512;YES)、仮想特徴点生成部104は、平均値を第tフレーム中の仮想特徴点viの座標として取得し(ステップS513)、処理はステップS514へ移る。
平均値が中央値から5画素以上離れていると判別すると(ステップS512;NO)、処理はステップS514へ移る。すなわち、交点座標の平均値が中央値から5画素以上離れている場合、トラッキングエラーである可能性が高い。そこで、中央値から5画素以上離れている平均値の取得をスキップすることにより、信頼性に欠ける交点を排除する。
ステップS514において、仮想特徴点生成部104は、ステップS501の仮想特徴点軌道準備処理により処理された100本の仮想特徴点軌道v全てが選択されたか否かを判別する(ステップS514)。未だ選択されていない仮想特徴点軌道vがあると判別すると(ステップS514;NO)、処理はステップS502へ戻り、仮想特徴点生成部104は、未選択の仮想特徴点軌道vのうち何れか1本を選択して、同様の仮想特徴点生成処理を実行する。
最終的に、全ての仮想特徴点軌道vが選択済みであると判別すると(ステップS514;YES)、仮想特徴点生成部104は、仮想特徴点生成処理を終了する。
図8のフローチャートに戻り、ステップS5の仮想特徴点生成処理が終了した後、仮想特徴点軌道構築部105は、仮想特徴点生成処理によって生成された仮想特徴点viを、仮想特徴点軌道vを構成する点として取得することにより、仮想特徴点軌道vを延長する(ステップS6)。
そして、仮想特徴点軌道構築部105は、指定部101が指定したフレーム(第tフレーム)が手ぶれ補正終了フレームであるか否かを判別する(ステップS7)。手ぶれ補正終了フレームは、手ぶれ補正対象の動画が含む複数のフレームのうち最後の(撮像時刻が最も新しい)フレームである。
第tフレームが手ぶれ補正終了フレームではないと判別すると(ステップS7;NO)、仮想特徴点軌道構築部105は、指定部101に、直前に実行されたステップS2〜ステップS6の処理において第tフレームとして設定されていたフレームの次の(次に撮像時刻が新しい)フレームを、新たな第tフレームとして設定させ(ステップS13)、処理はステップS2へ戻る。
すなわち、仮想特徴点軌道構築部105は、手ぶれ補正対象の動画が含む複数フレームの画像の中から指定部101が指定する画像を変えて、ステップS2〜ステップS6の処理を繰り返す。これにより、仮想特徴点軌道構築部105は、仮想特徴点軌道vを構築する。
第tフレームが手ぶれ補正対象フレームであると判別されると(ステップS7;YES)、平滑化部106が、構築された仮想特徴点軌道vをσ=50のガウシアンカーネルにより時間方向に平滑化し、平滑化された仮想特徴点軌道〜vを取得する(ステップS8)。
そして、補正部107は、仮想特徴点軌道vと平滑化された仮想特徴点軌道〜vとの間の関係に基づいて、手ぶれ補正前の各フレームの画像と手ぶれ補正後の各フレームの画像との間のエピポーラ関係を表す基礎行列〜Fを取得する(ステップS9)。
具体的には、補正部107は、仮想特徴点軌道vを形成する仮想特徴点viと、平滑化された仮想特徴点軌道〜vを形成する手ぶれ補正後の仮想特徴点〜viと、を対応点として用い、8ポイントアルゴリズムとRANSAC法により基礎行列〜Fを求める。
そして、補正部107は、ステップS9で取得した基礎行列〜Fに基づいてエピポーラ転送を行うことにより、手ぶれ補正後の特徴点軌道〜pを取得する(ステップS10)。
具体的には、補正部107は、図6に示すように、手ぶれ補正後の各フレームの画像に、手ぶれ補正前の前後5フレームの画像に含まれる特徴点piが投影するエピポーラ線を、基礎行列〜Fに基づいて取得する。そして、図7に示すように、エピポーラ線の交点により定まる点を、手ぶれ補正後の各フレームの画像が含む手ぶれ補正後の特徴点piとして取得する。手ぶれ補正後の特徴点軌道〜pは、手ぶれ補正後の特徴点piによって構成される軌道として取得される。
補正部107は、取得された手ぶれ補正後の特徴点軌道〜pをσ=6のガウシアンカーネルを用いて時間方向に平滑化することにより、高周波ジッタを除去する(ステップS11)。
補正部107は、手ぶれ補正対象の動画が含む各フレームの画像に対し、特徴点軌道pと手ぶれ補正後の特徴点軌道〜pとの間の関係に基づいて射影変換を実行することにより手ぶれを補正する(ステップS12)。以上により、図8のフローチャートに示した手ぶれ補正処理を終了する。
具体的には、補正部107は、特徴点軌道pを構成する特徴点piの座標と、手ぶれ補正後の特徴点軌道〜pを構成する手ぶれ補正後の特徴点〜piの座標と、を対応点として式(6)に代入することにより射影変換パラメータを求める。そして、手ぶれ補正対象の動画を構成する複数の画像それぞれを射影変換し、射影変換された複数の画像によって構成される動画を、手ぶれを補正した動画として生成する。
以上説明したように、本実施形態に係る撮像装置1及び画像処理装置100は、エピポーラ幾何を利用することにより、視差の影響を考慮した手ぶれ補正を動画に対して施すことができる。
さらに、本実施形態に係る撮像装置1及び画像処理装置100は、手ぶれ補正対象の動画が含む複数の画像間の類似度を、画像間のオプティカルフローを形成する特徴点piの移動ベクトルの大きさ(特徴点piの移動量)に基づいて評価し、評価結果に基づいて基礎行列取得処理の対象となる画像を選別している。これにより、信頼性に欠けるエピポーラ交点の取得、該エピポーラ交点を与えるエピポーラ線の取得、及び該エピポーラ線を与える基礎行列の取得といった不必要な演算処理の実行を防止し、演算負荷を軽減することができる。
以上に本発明の実施形態について説明したが、これらの実施形態は一例であり、本発明の適用範囲はこれに限られない。すなわち、本発明の実施形態は種々の応用が可能であり、あらゆる実施の形態が本発明の範囲に含まれる。
上記実施形態において、画像処理装置100は、撮像装置1の内部に具備されていた。しかし、本発明に係る画像処理装置は、撮像装置から独立した装置であってもよい。例えば、コンピュータ等の情報処理装置が、本発明に係る画像処理装置として機能することができる。この場合、画像処理装置は、外部の撮像装置が撮像した動画を手ぶれ補正対象の動画として取得し、上述の手ぶれ補正を施せばよい。
上記実施形態において、画像処理装置100は、撮像部10が被写体を撮像することにより生成し外部記憶部23に記憶されていた動画を、外部記憶部23から手ぶれ補正の対象として取得した。撮像装置1は、外部記憶部23からではなく、外部の画像入力装置(例えば、デジタルカメラやメモリカード、ネットワーク)から手ぶれ補正対象の動画を予め取得し、記憶しておいてもよい。
上記実施形態では、KLT法を用いて各フレームの画像から互いに対応する特徴点piを抽出した。しかし、本発明では、KLT法以外の方法を用いて特徴点piを抽出してもよい。例えば、Harrisオペレータ、SUSANオペレータ、Foerstnerオペレータ、Sojakオペレータ、SIFT等を用いることができる。
上記実施形態では、画像間のオプティカルフローを形成する特徴点piの移動ベクトルをランダムに100個抽出し、抽出した特徴点piの移動ベクトルの大きさと所定の閾値との大小関係を判別することにより、画像間の類似度を評価した。
しかし、本発明では、特徴点piの移動ベクトルは、ランダムにではなく、一定の規則に従って抽出することもできる。
例えば、画像が含む、互いに異なる複数の画像領域(画像ブロック)それぞれから一定数ずつ移動ベクトルを抽出することができる。この方法によれば、画像全体から偏りなく抽出した特徴点piの移動ベクトルに基づいて、画像間の類似度をより正確に評価することができる。なお、ある画像領域から特徴点piの移動ベクトルを抽出するとは、始点と終点の少なくとも何れか一方がこの画像領域に含まれている特徴点piの移動ベクトルを取得することを指す。
あるいは、撮像装置1又は画像処理装置100に、被写体人物の体の一部(例えば、顔や目、耳、鼻)を表す画像領域である人物領域を画像から検出する手段(人物検出部)を設け、特徴点piの移動ベクトルのうち所定の割合を、検出された人物領域から抽出することもできる。この方法によれば、画像間の類似度を、ユーザが強い関心を抱いている可能性の高い被写体である人物を表す画像領域の類似度に基づいて評価し、より的確に評価することができる。人物の体の一部を表す画像領域を画像から検出する技術は当該技術分野において周知であるため、詳細な説明は省略する。なお、人物領域から特徴点piの移動ベクトルを抽出するとは、始点と終点の少なくとも何れか一方が人物領域に含まれている特徴点piの移動ベクトルを取得することを指す。
なお、特徴点piの移動ベクトルの大きさの積算値を取得する際に、人物領域から取得された特徴点piの移動ベクトルの大きさの重みが、それ以外の画像領域から取得された特徴点piの移動ベクトルの大きさの重みよりも大きくなるような重み付けを施した上で各特徴点piの移動ベクトルの大きさを合計し、この重み付き合計値を積算値として取得してもよい。この方法によれば、画像間の類似度を評価するにあたって、ユーザが強い関心を抱いている可能性の高い被写体である人物を表す画像領域の類似度を参酌する度合いを高め、画像間の類似度をより的確に評価することができる。
あるいは、撮像装置1又は画像処理装置100に、移動している物体を表す画像領域である移動領域を画像から検出する手段(移動検出部)を設け、特徴点piの移動ベクトルのうち所定の割合を、検出された移動領域から抽出することもできる。この方法によれば、移動している物体を表す画像領域から特徴点piの移動ベクトルが抽出されることが保証されるため、移動していない物体を表す画像領域から抽出された特徴点piの移動ベクトルのみに基づいて画像間の類似度が評価されることを防止し、画像間の類似度を正確に評価することができる。移動している物体を表す画像領域を画像から検出する技術は当該技術分野において周知であるため、詳細な説明は省略する。なお、移動領域から特徴点piの移動ベクトルを抽出するとは、始点と終点の少なくとも何れか一方が移動領域に含まれている特徴点piの移動ベクトルを取得することを指す。
なお、特徴点piの移動ベクトルの大きさの積算値を取得する際に、移動領域から取得された特徴点piの移動ベクトルの大きさの重みが、それ以外の画像領域から取得された特徴点piの移動ベクトルの大きさの重みよりも大きくなるような重み付けを施した上で各移動ベクトルの大きさを合計し、この重み付き合計値を積算値として取得してもよい。この方法によれば、画像間の類似度を評価するにあたって、手ぶれの影響を受けている可能性が高い、移動している物体を表す画像領域の類似度を参酌する度合いを高め、画像間の類似度をより的確に評価することができる。
あるいは、撮像装置1又は画像処理装置100に、背景を表す画像領域である背景領域を画像から検出する手段(背景検出部)を設け、特徴点piの移動ベクトルのうち所定の割合を、画像中の、検出された背景領域以外の画像領域から抽出することもできる。この方法によれば、手ぶれの影響を受けている可能性が低い、背景領域から抽出された特徴点piの移動ベクトルのみに基づいて画像間の類似度が評価されることを防止し、画像間の類似度を正確に評価することができる。背景を表す画像領域を画像から検出する技術は当該技術分野において周知であるため、詳細な説明は省略する。なお、背景領域から特徴点piの移動ベクトルを抽出するとは、始点と終点の少なくとも何れか一方が背景領域に含まれている特徴点piの移動ベクトルを取得することを指す。
あるいは、逆に、特徴点piの移動ベクトルのうち所定の割合を、画像中の、検出された背景領域から抽出することもできる。この方法によれば、被写体からは手ぶれの影響を検出できない(手ぶれの成分を検出できない)ものの背景からは比較的容易に手ぶれの影響を検出できる場合(被写体が非常に画像全体に占める割合が非常に小さい場合や、被写体が激しく動いている場合等)にも、背景領域から抽出された特徴点piの移動ベクトルに基づいて画像間の類似度が評価することにより、画像間の類似度を正確に評価することができる。
なお、特徴点piの移動ベクトルの大きさの積算値を取得する際に、背景領域から取得された特徴点piの移動ベクトルの大きさの重みが、それ以外の画像領域から取得された特徴点piの移動ベクトルの大きさの重みよりも小さくなるような重み付けを施した上で各移動ベクトルの大きさを合計し、この重み付き合計値を積算値として取得してもよい。この方法によれば、画像間の類似度を評価するにあたって、手ぶれの影響を大きく受けている可能性が低い背景を表す画像領域よりも、それ以外の画像領域の類似度を参酌する度合いを高め、画像間の類似度をより的確に評価することができる。
なお、特徴点piの移動ベクトルの大きさの積算値を取得する際に、画像の中心により近い位置から取得された特徴点piの移動ベクトルほどその大きさの重みが大きくなるような重み付けを施した上で各移動ベクトルの大きさを合計し、この重み付き合計値を積算値として取得してもよい。この方法によれば、画像間の類似度を評価するにあたって、画像の中心に近く、ユーザが関心を抱いている被写体を表している可能性の高い画像領域の類似度を参酌する度合いを高め、画像間の類似度をより的確に評価することができる。
上記実施形態では、特徴点piの移動ベクトルのL2ノルムを、特徴点piの移動ベクトルの大きさとして取得した。しかし、本発明では、L2ノルム以外の任意の量(例えば、L1ノルム)を特徴点piの移動ベクトルの大きさとして取得することができる。
抽出される特徴点piの移動ベクトルの数は、任意の方法により予め設定しておくことができる。例えば、特徴点piの移動ベクトルの大きさの統計的分布を解析することにより抽出する数を設定してもよい。
あるいは、抽出される特徴点piの移動ベクトルの数は、画像を解析して得られる情報に基づいて設定することもできる。例えば、上述の検出手段によって人物領域又は移動領域が検出された場合に、検出されなかった場合に比べて抽出される特徴点piの移動ベクトルの数を増やこととしてもよい。この方法によれば、ユーザが注目する被写体である可能性が高い人物や手ぶれの影響を受けている可能性が高い移動物体が画像に含まれている場合、含まれていない場合よりも多くの特徴点piの移動ベクトルに基づいて、より慎重に画像間の類似度を比較し、画像間の類似度を正確に評価することができる。
上記実施形態では、類似度の判別基準となる閾値は事前に設定されていた。しかし、本発明では、閾値は、画像を解析して得られる情報に基づいて設定してもよい。例えば、抽出される特徴点piの移動ベクトルの数に応じて閾値を設定してもよい。特徴点piの移動ベクトルの数が多ければ、これに応じて閾値も高く設定する必要がある。
上記実施形態では、仮想特徴点軌道vをガウシアンカーネルで平滑化することにより、平滑化された仮想特徴点軌道〜vを取得した。しかし、本発明では、平滑化は、ガウシアンカーネル以外の関数(例えば、ラプラシアンフィルタ)を用いて行ってもよい。
上記実施形態では、手ぶれ補正対象の画像全体に対して一括して射影変換を施すことにより手ぶれ補正を実行した。しかし、本発明では、画像が含む複数の画像領域それぞれに射影変換を施し、射影変換後の画像領域を再結合することにより手ぶれ補正を施すこともできる。
上記実施形態では、本発明に係る画像処理装置、撮像装置及び画像処理方法を、撮像装置1及び画像処理装置100を例に用いて説明した。本発明に係る画像処理装置、撮像装置、及び画像処理方法は、コンピュータ、携帯電話機、デジタルカメラ、PDA(Personal Digital Assistance)等の任意の電子機器によって実現することができる。
具体的には、コンピュータ、携帯電話機、デジタルカメラ、PDA等を本発明に係る撮像装置及び画像処理装置として動作させるためのプログラムを、これらの電子機器が読み取り可能な記録媒体(例えば、メモリカードやCD−ROM(Compact Disc Read−Only Memory)、DVD−ROM(Digital Versatile Disc Read−Only Memory)等)に格納して配布し、インストールすることにより本発明に係る撮像装置及び画像処理装置を実現することができる。
あるいは、上記プログラムを、インターネット等の通信ネットワーク上のサーバ装置が有する記憶装置(例えば、ディスク装置等)に格納しておき、コンピュータ、携帯電話機、デジタルカメラ、PDA等がこのプログラムをダウンロードすることによって本発明に係る撮像装置及び画像処理装置を実現してもよい。
また、本発明に係る撮像装置及び画像処理装置の機能を、オペレーティングシステム(OS)とアプリケーションプログラムとの協働又は分担により実現する場合には、アプリケーションプログラム部分のみを記録媒体や記憶装置に格納してもよい。
また、アプリケーションプログラムを搬送波に重畳し、通信ネットワークを介して配信してもよい。例えば、通信ネットワーク上の掲示板(BBS:Bulletin Board System)にアプリケーションプログラムを掲示し、ネットワークを介してアプリケーションプログラムを配信してもよい。そして、このアプリケーションプログラムをコンピュータにインストールして起動し、OSの制御下で、他のアプリケーションプログラムと同様に実行することにより、本発明に係る撮像装置及び画像処理装置を実現してもよい。
以上、本発明の好ましい実施形態について説明したが、本発明は係る特定の実施形態に限定されるものではなく、本発明には、特許請求の範囲に記載された発明とその均等の範囲が含まれる。以下に、本願出願当初の特許請求の範囲に記載された発明を付記する。
(付記1)
動画を構成する複数の画像の中から1つを指定する指定部と、
前記複数の画像のうちの前記指定部によって指定された画像以外の所定数の画像の中から、基礎行列の取得対象となる画像を選別する選別部と、
前記選別部によって選別された画像のそれぞれについて、前記指定部によって指定された画像との関係を表す基礎行列を取得する基礎行列取得部と、
前記基礎行列取得部によって取得された基礎行列に基づいて、前記選別部によって選別された画像内の互いに対応する特徴点又は仮想特徴点を前記指定された画像にエピポーラ投影することにより、前記指定された画像内における仮想特徴点を生成する仮想特徴点生成部と、
前記複数の画像の中から前記指定部が指定する画像を変えて、前記指定部、前記選別部、前記基礎行列取得部、及び前記仮想特徴点生成部の処理を繰り返すことにより、仮想特徴点軌道を構築する仮想特徴点軌道構築部と、
前記仮想特徴点軌道構築部によって構築された仮想特徴点軌道を時間方向に平滑化する平滑化部と、
前記仮想特徴点軌道構築部によって構築された仮想特徴点軌道と、前記平滑化部によって平滑化された仮想特徴点軌道と、の間の関係に基づいて、前記複数の画像のそれぞれを補正する補正部と、
を備えることを特徴とする画像処理装置。
(付記2)
前記選別部は、
前記所定数の画像のうちの各画像について、前記所定数の画像のうち該各画像とは異なる画像との間における特徴点の移動量を取得し、
取得した移動量に基づいて、前記所定数の画像の中から、基礎行列の取得対象となる画像を選別する、
ことを特徴とする付記1に記載の画像処理装置。
(付記3)
前記選別部は、
前記所定数の画像のうちの各画像について、前記所定数の画像のうち該各画像とは異なる画像との間における、複数の特徴点の移動量を取得し、
取得した複数の特徴点の移動量を積算した積算値に基づいて、前記所定数の画像の中から、基礎行列の取得対象となる画像を選別する、
ことを特徴とする付記1または2に記載の画像処理装置。
(付記4)
前記選別部は、
特徴点の移動量の積算値と閾値との大小関係に基づいて、前記所定数の画像の中から、基礎行列の取得対象となる画像を選別する、
ことを特徴とする付記3に記載の画像処理装置。
(付記5)
前記閾値は、移動量を取得する特徴点の数に応じて設定される、
ことを特徴とする付記4に記載の画像処理装置。
(付記6)
付記1乃至5の何れか1つに記載の画像処理装置と、
被写体を撮像することにより、前記動画を構成する画像を生成する撮像部と、
を備えることを特徴とする撮像装置。
(付記7)
動画を構成する複数の画像の中から1つを指定する指定処理と、
前記複数の画像のうちの前記指定処理によって指定された画像以外の所定数の画像の中から、基礎行列の取得対象となる画像を選別する選別処理と、
前記選別処理によって選別された画像のそれぞれについて、前記指定処理によって指定された画像との関係を表す基礎行列を取得する基礎行列取得処理と、
前記基礎行列取得処理によって取得された基礎行列に基づいて、前記選別処理によって選別された画像内の互いに対応する特徴点又は仮想特徴点を前記指定された画像にエピポーラ投影することにより、前記指定された画像内における仮想特徴点を生成する仮想特徴点生成処理と、
前記複数の画像の中から前記指定処理によって指定する画像を変えて、前記指定処理、前記選別処理、前記基礎行列取得処理、及び前記仮想特徴点生成処理を繰り返すことにより、仮想特徴点軌道を構築する仮想特徴点軌道構築処理と、
前記仮想特徴点軌道構築処理によって構築された仮想特徴点軌道を時間方向に平滑化する平滑化処理と、
前記仮想特徴点軌道構築処理によって構築された仮想特徴点軌道と、前記平滑化処理によって平滑化された仮想特徴点軌道と、の間の関係に基づいて、前記複数の画像のそれぞれを補正する補正処理と、
を含むことを特徴とする画像処理方法。
(付記8)
コンピュータを、
動画を構成する複数の画像の中から1つを指定する指定部、
前記複数の画像のうちの前記指定部によって指定された画像以外の所定数の画像の中から、基礎行列の取得対象となる画像を選別する選別部、
前記選別部によって選別された画像のそれぞれについて、前記指定部によって指定された画像との関係を表す基礎行列を取得する基礎行列取得部、
前記基礎行列取得部によって取得された基礎行列に基づいて、前記選別部によって選別された画像内の互いに対応する特徴点又は仮想特徴点を前記指定された画像にエピポーラ投影することにより、前記指定された画像内における仮想特徴点を生成する仮想特徴点生成部、
前記複数の画像の中から前記指定部が指定する画像を変えて、前記指定部、前記選別部、前記基礎行列取得部、及び前記仮想特徴点生成部の処理を繰り返すことにより、仮想特徴点軌道を構築する仮想特徴点軌道構築部、
前記仮想特徴点軌道構築部によって構築された仮想特徴点軌道を時間方向に平滑化する平滑化部、
前記仮想特徴点軌道構築部によって構築された仮想特徴点軌道と、前記平滑化部によって平滑化された仮想特徴点軌道と、の間の関係に基づいて、前記複数の画像のそれぞれを補正する補正部、
として機能させることを特徴とするプログラム。