(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-05-23
(45)【発行日】2024-05-31
(54)【発明の名称】画像処理装置、画像処理方法及びプログラム
(51)【国際特許分類】
G06T 3/14 20240101AFI20240524BHJP
H04N 23/60 20230101ALI20240524BHJP
H04N 23/698 20230101ALI20240524BHJP
【FI】
G06T3/14
H04N23/60 500
H04N23/698
(21)【出願番号】P 2018187089
(22)【出願日】2018-10-02
【審査請求日】2021-09-17
【審判番号】
【審判請求日】2023-06-09
(73)【特許権者】
【識別番号】000001443
【氏名又は名称】カシオ計算機株式会社
(72)【発明者】
【氏名】八幡 尚
【合議体】
【審判長】高橋 宣博
【審判官】千葉 輝久
【審判官】樫本 剛
(56)【参考文献】
【文献】特開2016-27744(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06T1/00-5/50
H04N5/232
(57)【特許請求の範囲】
【請求項1】
第1の画像と、前記第1の画像と互いに端部が共通する第2の画像と、をそれぞれフレーム単位で取得する画像取得手段と、
前記画像取得手段が取得した前記第1の画像と前記第2の画像とで共通する領域である共通領域を特定する共通領域特定手段と、
前記共通領域特定手段により特定された前記共通領域において、前記第1の画像と前記第2の画像とで対応する特徴点のペアを特定する特徴点特定手段と、
前記特徴点特定手段により特定された特徴点のペアに基づき、前記第1の画像中の第1の特徴点を始点とし、前記第1の特徴点に対応する前記第2の画像中の第2の特徴点を終点とする、移動ベクトルを複数算出する移動ベクトル算出手段と、
前記移動ベクトル算出手段により算出された複数の前記移動ベクトルから選定された選定移動ベクトルに基づいて変換行列を算出し、前記選定移動ベクトルの選定を変更することによって複数の変換行列を算出する変換行列算出手段と、
前記変換行列算出手段により算出された変換行列を用いて、前記第1の画像中の第1の特徴点の位置を変換した位置である移動後特徴点の位置を算出する変換手段と、
前記第2の特徴点の位置と前記変換手段により算出された前記移動後特徴点の位置との間の誤差を算出する誤差算出手段と、
所定のフレームにおいて、前記変換行列算出手段により算出された前記複数の変換行列の中から、前記誤差算出手段により算出された誤差が所定の条件を満たす変換行列を選出する変換行列選出手段と、
前記変換行列選出手段が選出した変換行列を用いて前記第1の画像と前記第2の画像とをつなぎ合わせた画像を生成する画像生成手段と、
を備え、
前記変換手段は、前記所定のフレームの前のフレームにおいて選出された変換行列と、前記所定のフレームにおいて前記変換行列
算出手段
で算出された変換行列の、それぞれを用いて前記第1の画像中の第1の特徴点の位置を変換して移動後特徴点の位置を算出し、
前記誤差算出手段は、前記変換手段が算出した移動後特徴点の位置に基づき、前記所定のフレームの前のフレームにおいて選出された変換行列に基づく誤差である前フレーム誤差と、前記所定のフレーム
において前記変換行列算出手段で算出された変換行列に基づく誤差である現フレーム誤差と、を算出し、
前記変換行列選出手段は、前記所定のフレームの前のフレームにおいて選出された変換行列と、前記所定のフレームにおいて前記変換行列算出手段で算出された複数の変換行列と、を用いて前記前フレーム誤差及び前記現フレーム誤差が前記所定の条件を満たす変換行列を選出する、
画像処理装置。
【請求項2】
さらに状況を判定する状況判定手段を備え、
前記変換行列選出手段は、前記状況判定手段が状況に変化はないと判定したら、前記所定のフレームの前のフレームにおいて選出された変換行列を前記所定のフレームにおける変換行列として選出する、
請求項1に記載の画像処理装置。
【請求項3】
前記変換行列選出手段は、前記前フレーム誤差が所定の閾値より小さい場合には、前記所定のフレームの前のフレームにおいて選出された変換行列を前記所定のフレームにおける変換行列として選出する、
請求項1又は2に記載の画像処理装置。
【請求項4】
前記第1の画像と前記第2の画像は半天球画像であって、それを合成することで全天球画像を生成する、
請求項1から3のいずれか1項に記載の画像処理装置。
【請求項5】
第1の画像と、前記第1の画像と互いに端部が共通する第2の画像と、をそれぞれフレーム単位で取得する画像取得ステップと、
前記画像取得ステップにて取得した前記第1の画像と前記第2の画像とで共通する領域である共通領域を特定する共通領域特定ステップと、
前記共通領域特定ステップにて特定された前記共通領域において、前記第1の画像と前記第2の画像とで対応する特徴点のペアを特定する特徴点特定ステップと、
前記特徴点特定ステップにて特定された特徴点のペアに基づき、前記第1の画像中の第1の特徴点を始点とし、前記第1の特徴点に対応する前記第2の画像中の第2の特徴点を終点とする、移動ベクトルを複数算出する移動ベクトル算出ステップと、
前記移動ベクトル算出ステップにて算出された複数の前記移動ベクトルから選定された選定移動ベクトルに基づいて変換行列を算出し、前記選定移動ベクトルの選定を変更することによって複数の変換行列を算出する変換行列算出ステップと、
前記変換行列算出ステップにおいて算出された変換行列を用いて、前記第1の画像中の第1の特徴点の位置を変換した位置である移動後特徴点の位置を算出する変換ステップと、
前記第2の特徴点の位置と前記変換ステップにて算出された前記移動後特徴点の位置との間の誤差を算出する誤差算出ステップと、
所定のフレームにおいて、前記算出された複数の変換行列の中から、前記算出された誤差が所定の条件を満たす変換行列を選出する変換行列選出ステップと、
前記変換行列選出ステップにて選出した変換行列を用いて前記第1の画像と前記第2の画像とをつなぎ合わせた画像を生成する画像生成ステップと、
を有する画像処理方法であって、
前記変換ステップは、前記所定のフレームの前のフレームにおいて選出された変換行列と、前記所定のフレームにおいて前記変換行列
算出ステップ
で算出された変換行列の、それぞれを用いて前記第1の画像中の第1の特徴点の位置を変換して移動後特徴点の位置を算出し、
前記誤差算出ステップは、前記変換ステップが算出した移動後特徴点の位置に基づき、前記所定のフレームの前のフレームにおいて選出された変換行列に基づく誤差である前フレーム誤差と、前記所定のフレーム
において前記変換行列算出ステップで算出された変換行列に基づく誤差である現フレーム誤差と、を算出し、
前記変換行列選出ステップは、前記所定のフレームの前のフレームにおいて選出された変換行列と、前記所定のフレームにおいて前記変換行列算出ステップで算出された複数の変換行列と、を用いて前記前フレーム誤差及び前記現フレーム誤差が前記所定の条件を満たす変換行列を選出する、
画像処理方法。
【請求項6】
画像処理装置のコンピュータを、
第1の画像と、前記第1の画像と互いに端部が共通する第2の画像と、をそれぞれフレーム単位で取得する画像取得手段、
前記画像取得手段が取得した前記第1の画像と前記第2の画像とで共通する領域である共通領域を特定する共通領域特定手段、
前記共通領域特定手段により特定された前記共通領域において、前記第1の画像と前記第2の画像とで対応する特徴点のペアを特定する特徴点特定手段、
前記特徴点特定手段により特定された特徴点のペアに基づき、前記第1の画像中の第1の特徴点を始点とし、前記第1の特徴点に対応する前記第2の画像中の第2の特徴点を終点とする、移動ベクトルを複数算出する移動ベクトル算出手段、
前記移動ベクトル算出手段により算出された複数の前記移動ベクトルから選定された選定移動ベクトルに基づいて変換行列を算出し、前記選定移動ベクトルの選定を変更することによって複数の変換行列を算出する変換行列算出手段、
前記変換行列算出手段により算出された変換行列を用いて、前記第1の画像中の第1の特徴点の位置を変換した位置である移動後特徴点の位置を算出する変換手段、
前記第2の特徴点の位置と前記変換手段により算出された前記移動後特徴点の位置との間の誤差を算出する誤差算出手段、
所定のフレームにおいて、前記変換行列算出手段により算出された前記複数の変換行列の中から、前記誤差算出手段により算出された誤差が所定の条件を満たす変換行列を選出する変換行列選出手段、
前記変換行列選出手段が選出した変換行列を用いて前記第1の画像と前記第2の画像とをつなぎ合わせた画像を生成する画像生成手段、
として機能させ、
前記変換手段は、前記所定のフレームの前のフレームにおいて選出された変換行列と、前記所定のフレームにおいて前記変換行列
算出手段
で算出された変換行列の、それぞれを用いて前記第1の画像中の第1の特徴点の位置を変換して移動後特徴点の位置を算出し、
前記誤差算出手段は、前記変換手段が算出した移動後特徴点の位置に基づき、前記所定のフレームの前のフレームにおいて選出された変換行列に基づく誤差である前フレーム誤差と、前記所定のフレーム
において前記変換行列算出手段で算出された変換行列に基づく誤差である現フレーム誤差と、を算出し、
前記変換行列選出手段は、前記所定のフレームの前のフレームにおいて選出された変換行列と、前記所定のフレームにおいて前記変換行列算出手段で算出された複数の変換行列と、を用いて前記前フレーム誤差及び前記現フレーム誤差が前記所定の条件を満たす変換行列を選出する、
プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像処理装置、画像処理方法及びプログラムに関する。
【背景技術】
【0002】
複数の画像をつなぎ合わせて大きな画像を生成する技術が知られている。例えば、特許文献1には、魚眼レンズで撮影されたような比較的歪み量の大きな画像であっても、歪み補正パラメータを使い分けることによって高精度につなぎ合わせることを可能にした画像処理技術が開示されている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
特許文献1に開示されている画像処理技術においては、つなぎ合わせる画像は静止画であることを前提としており、動画像をつなぎ合わせることは想定されていない。もっとも、動画像もフレーム単位で見れば静止画なので、動画像をフレーム単位で扱うことによって、特許文献1に開示されている画像処理技術を用いて、動画像をフレーム単位でつなぎ合わせることは可能である。しかし、そのような処理を行うと、処理はフレーム毎に完結し、フレーム間の関係を考慮することができないため、不自然な動画像が得られてしまう場合がある。例えば、フレーム単位では自然なつなぎ合わせが行われていても、フレーム間では画像が微妙にずれてしまう場合があり、この場合、動画像としてはブレが生じる不自然な動画像になってしまう。
【0005】
本発明は、上記実情に鑑みてなされたものであり、複数の動画像について、各動画像のフレーム同士をその端部でつなぎ合わせる場合であっても、自然な動画像を得ることができる画像処理装置、画像処理方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【0006】
上記目的を達成するため、本発明の画像処理装置は、
第1の画像と、前記第1の画像と互いに端部が共通する第2の画像と、をそれぞれフレーム単位で取得する画像取得手段と、
前記画像取得手段が取得した前記第1の画像と前記第2の画像とで共通する領域である共通領域を特定する共通領域特定手段と、
前記共通領域特定手段により特定された前記共通領域において、前記第1の画像と前記第2の画像とで対応する特徴点のペアを特定する特徴点特定手段と、
前記特徴点特定手段により特定された特徴点のペアに基づき、前記第1の画像中の第1の特徴点を始点とし、前記第1の特徴点に対応する前記第2の画像中の第2の特徴点を終点とする、移動ベクトルを複数算出する移動ベクトル算出手段と、
前記移動ベクトル算出手段により算出された複数の前記移動ベクトルから選定された選定移動ベクトルに基づいて変換行列を算出し、前記選定移動ベクトルの選定を変更することによって複数の変換行列を算出する変換行列算出手段と、
前記変換行列算出手段により算出された変換行列を用いて、前記第1の画像中の第1の特徴点の位置を変換した位置である移動後特徴点の位置を算出する変換手段と、
前記第2の特徴点の位置と前記変換手段により算出された前記移動後特徴点の位置との間の誤差を算出する誤差算出手段と、
所定のフレームにおいて、前記変換行列算出手段により算出された前記複数の変換行列の中から、前記誤差算出手段により算出された誤差が所定の条件を満たす変換行列を選出する変換行列選出手段と、
前記変換行列選出手段が選出した変換行列を用いて前記第1の画像と前記第2の画像とをつなぎ合わせた画像を生成する画像生成手段と、
を備え、
前記変換手段は、前記所定のフレームの前のフレームにおいて選出された変換行列と、前記所定のフレームにおいて前記変換行列算出手段で算出された変換行列の、それぞれを用いて前記第1の画像中の第1の特徴点の位置を変換して移動後特徴点の位置を算出し、
前記誤差算出手段は、前記変換手段が算出した移動後特徴点の位置に基づき、前記所定のフレームの前のフレームにおいて選出された変換行列に基づく誤差である前フレーム誤差と、前記所定のフレームにおいて前記変換行列算出手段で算出された変換行列に基づく誤差である現フレーム誤差と、を算出し、
前記変換行列選出手段は、前記所定のフレームの前のフレームにおいて選出された変換行列と、前記所定のフレームにおいて前記変換行列算出手段で算出された複数の変換行列と、を用いて前記前フレーム誤差及び前記現フレーム誤差が前記所定の条件を満たす変換行列を選出する。
【発明の効果】
【0007】
本発明によれば、複数の動画像について、各動画像のフレーム同士をその端部でつなぎ合わせる場合であっても、自然な動画像を得ることができる。
【図面の簡単な説明】
【0008】
【
図1】実施形態1に係る画像処理装置の機能構成を示す図である。
【
図2】実施形態1に係る画像処理のフローチャートである。
【
図3】真上方向の半天球画像と真下方向の半天球画像における共通領域を説明する図である。
【
図4】真上方向の半天球画像中の共通領域を極座標展開した図である。
【
図5】真下方向の半天球画像中の共通領域を極座標展開した図である。
【
図6】真上方向の半天球画像と真下方向から5度ずれた状態の半天球画像における共通領域を説明する図である。
【
図7】真上方向の半天球画像中の共通領域を極座標展開した図である。
【
図8】真下方向から5度ずれた状態の半天球画像中の共通領域を極座標展開した図である。
【
図10】移動ベクトルと変換後ベクトルとを重ねて表示した図である。
【
図11】第1の画像と第2の画像がつなぎ合わされる例を説明する図である。
【
図12】第1の画像と第2の画像をそのままつなぎ合わせた例を説明する図である。
【
図13】第1の画像を変換してから第2の画像とつなぎ合わせた例を説明する図である。
【
図14】あるフレームにおいて第1の画像と第2の画像をつなぎ合わせて生成した画像の一例である。
【
図15】次のフレームにおいて前フレームでの変換行列を考慮せずに第1の画像と第2の画像をつなぎ合わせて生成した画像の一例である。
【
図16】不自然な動画が生成される例を説明する図である。
【
図17】変形例4に係る画像処理のフローチャートである。
【
図18】変形例5に係る画像処理のフローチャートである。
【
図19】変形例6に係る画像処理のフローチャートである。
【発明を実施するための形態】
【0009】
以下、本発明の実施形態に係る画像処理装置について、図表を参照して説明する。なお、図中同一又は相当部分には同一符号を付す。
【0010】
(実施形態1)
本発明の実施形態1に係る画像処理装置は、複数の動画像について、各動画像のフレーム同士をその端部でつなぎ合わせることにより、全天球画像やパノラマ画像のような広範囲画像の自然な動画像を生成する装置である。
【0011】
図1に示すように、本発明の実施形態1に係る画像処理装置100は、制御部10、記憶部20、第1撮像部31、第2撮像部32、を備える。
【0012】
制御部10は、CPU(Central Processing Unit)等で構成され、記憶部20に記憶されたプログラムを実行することにより、後述する各部(画像取得部11、共通領域特定部12、特徴点特定部13、移動ベクトル算出部14、変換行列算出部15、変換部16、誤差算出部17、変換行列選出部18、画像生成部19)の機能を実現する。
【0013】
記憶部20は、ROM(Read Only Memory)、RAM(Random Access Memory)等で構成される。ROMには制御部10のCPUが実行するプログラム及びプログラムを実行する上で予め必要なデータが記憶されている。RAMには、プログラム実行中に作成されたり変更されたりするデータが記憶される。
【0014】
第1撮像部31及び第2撮像部32は、それぞれ単眼の撮像装置(カメラ)を備える。第1撮像部31は、例えば30fps(frames per second)で第1の画像(フレーム単位で撮影される動画像)を撮影する。第2撮像部32も、例えば30fpsで第2の画像(フレーム単位で撮影される動画像)を撮影する。第1撮像部31が撮影した第1の画像と第2撮像部32が撮影した第2の画像とは、それぞれの端部の少なくとも一部が共通するように、第1撮像部31及び第2撮像部32の撮影方向が設定される。
【0015】
例えば、第1撮像部31も第2撮像部32も画角200度の半天球画像を撮影する魚眼レンズを搭載した撮像装置で、第1撮像部31と第2撮像部32とはお互いに真逆方向(例えば第1撮像部31は真上方向、第2撮像部32は真下方向)を撮影するように設置される。
【0016】
次に、画像処理装置100の制御部10の機能的構成について説明する。制御部10は、画像取得部11、共通領域特定部12、特徴点特定部13、移動ベクトル算出部14、変換行列算出部15、変換部16、誤差算出部17、変換行列選出部18、画像生成部19、の機能を実現する。
【0017】
画像取得部11は、第1撮像部31が撮影した画像を第1の画像としてフレーム単位で取得し、第2撮像部32が撮影した画像を第2の画像としてフレーム単位で取得する。なお、画像取得部11は、第1撮像部31が撮影した画像や第2撮像部32が撮影した画像をリアルタイムで取得してもよいし、リアルタイムで取得しなくてもよい。リアルタイムに取得しない場合は、例えば、第1撮像部31が撮影した画像や第2撮像部32が撮影した画像は記憶部20に保存されるようになっており、撮影が終了してから、画像取得部11が、記憶部20から第1撮像部31が撮影した画像や第2撮像部32が撮影した画像を取得するようにしてもよい。画像取得部11は、画像取得手段として機能する。
【0018】
共通領域特定部12は、画像取得部11が取得した(第1撮像部31が撮影した)第1の画像と(第2撮像部32が撮影した)第2の画像とで共通する撮影領域(共通領域)を特定する。上述したように、第1の画像と第2の画像とは、それぞれの端部の少なくとも一部が共通しているが、この共通している端部が共通領域である。共通領域特定部12は、この共通領域を特定する。共通領域特定部12は共通領域特定手段として機能する。例えば、第1撮像部と第2撮像部に地磁気センサや加速度センサを設けておいて、共通領域特定部12は、撮影時の第1撮像部31と第2撮像部32の向きに関する情報をこれらのセンサから取得する。そして、共通領域特定部12は、予め記憶しておいた第1撮像部31と第2撮像部32との画角の範囲情報と、第1撮像部31と第2撮像部32の向きに関する情報とに基づいて共通領域を特定するようにしてもよい。
【0019】
特徴点特定部13は、共通領域特定部12が特定した共通領域において、第1の画像中の特徴点と、第2の画像中の特徴点と、の対応付けを行い、対応する特徴点のペアを特定する。特徴点とは、画像中のエッジ、角、模様等の特徴的な部分のことを言う。特徴点特定部13は、例えば、第1の画像から抽出した特徴点の特徴量に基づいて、該特徴点と特徴量が類似する特徴点を第2の画像から探索することによって、第1の画像中の特徴点と第2の画像中の特徴点との対応付けを行う。特徴点特定部13は特徴点特定手段として機能する。
【0020】
移動ベクトル算出部14は、特徴点特定部13により特定された特徴点のペアに基づき、第1の画像中の第1の特徴点を始点とし、第1の特徴点に対応する第2の画像中の第2の特徴点を終点とする、移動ベクトルを算出する。この移動ベクトルは、特徴点特定部13により特定された特徴点のペアの数だけ存在するので、移動ベクトル算出部14は、第1移動ベクトルを複数(特定された特徴点のペアの数)算出する。移動ベクトル算出部14は、移動ベクトル算出手段として機能する。
【0021】
変換行列算出部15は、移動ベクトル算出部14により算出された複数の移動ベクトルの中から規定数(2次元空間上での変換行列を算出するなら4、3次元空間上での変換行列を算出するなら5)のベクトル(選定移動ベクトル)を選定し、この選定した選定移動ベクトルに基づいて、変換行列(射影変換行列)を算出する。選定移動ベクトルの選定を変更することによって、変換行列算出部15は、複数の変換行列を算出することができる。変換行列算出部15は変換行列算出手段として機能する。
【0022】
変換部16は、変換行列算出部15により算出された変換行列を用いて、第1の画像中の第1の特徴点の位置を変換した位置である移動後特徴点の位置を算出する。変換部16は変換手段として機能する。
【0023】
誤差算出部17は、第1の特徴点に対応する第2の画像中の第2の特徴点の位置と変換部16により算出された移動後特徴点の位置との間の誤差を算出する。第2の特徴点は第1の特徴点のそれぞれに対応する形で複数存在し、変換部16により算出された移動後特徴点も第1の特徴点のそれぞれに対応する形で複数存在するので、各特徴点について誤差が得られる。誤差算出部17は、これらの誤差を評価する値として、後述する種々の評価値を算出する。誤差算出部17は、誤差算出手段として機能する。
【0024】
変換行列選出部18は、変換行列算出部15により算出された複数の変換行列の中から、誤差算出部17により算出された誤差が所定の条件を満たす変換行列を選出する。変換行列選出部18は、変換行列選出手段として機能する。
【0025】
画像生成部19は、変換行列選出部18が選出した変換行列を用いて第1の画像と第2の画像とをつなぎ合わせた画像を生成する。画像生成部19は、画像生成手段として機能する。
【0026】
以上、画像処理装置100の機能構成について説明した。次に、画像処理装置100による画像処理について
図2を参照して説明する。この画像処理は、ユーザの指示によって開始される。
【0027】
まず、画像取得部11は、第1撮像部31が撮影した動画像の最初のフレーム(後述するステップS113から戻ってきた時は、次のフレーム)を第1の画像として取得し、第2撮像部32が撮影した動画像の最初のフレーム(後述するステップS113から戻ってきた時は、次のフレーム)を第2の画像として取得する(ステップS101)。
【0028】
例えば
図3に示すように、第1撮像部31は真上方向の半天球画像51を画角200度で撮影する魚眼レンズを搭載した撮像装置で、第2撮像部32は真下方向の半天球画像52を画角200度で撮影する魚眼レンズを搭載した撮像装置であるとする。この場合、画像取得部11は、第1の画像として第1撮像部31が撮影した半天球画像51を取得し、第2の画像として第2撮像部32が撮影した半天球画像52を取得する。ただし、上述したように、この画像取得はリアルタイムに行う必要はなく、予め第1撮像部31及び第2撮像部32が撮影した画像を記憶部20に保存しておく場合は、画像取得部11は、記憶部20からこれらの画像を取得する。
【0029】
図2に戻り、次に、共通領域特定部12は、第1の画像と第2の画像とで共通する領域である共通領域を特定する(ステップS102)。例えば、
図3で、各撮像部のレンズ中心からの角度が80度から100度の範囲(撮影された画像の端部)は、お互いに共通の被写体が撮影された領域(共通領域)である。したがって、共通領域特定部12は、レンズ中心からの角度が80度から100度の範囲に入っている領域を共通領域として特定する。(
図3ではレンズ中心からの角度が100度の円周の線を実線53で示し、レンズ中心からの角度が80度の円周の線を点線54で示している。また、地平線を点線55で示している。
図3では、地平線はレンズ中心からの角度が90度の円周の線と一致する。)
【0030】
このような共通領域には、共通の被写体(同じ物体等)が撮影されているので、共通領域においてそれぞれの画像から特徴点(被写体のエッジ、角、模様等の特徴的な部分)を抽出すると、第1の画像からも第2の画像からも、被写体の同じ部分を示す特徴点が抽出できる。これを対応する特徴点と言う。つまり、被写体上の特徴的な部分を介して、第1の画像中の該部分を表す第1の特徴点と、第2の画像中の該部分を表す第2の特徴点が存在することになる。この時、この第1の特徴点と第2の特徴点とは対応しており、第1の特徴点と第2の特徴点とは対応する特徴点のペアとなる。なお、実際にはまず第1の画像から特徴点を抽出し、その特徴点に類似する特徴点を第2の画像から探すことによって、特徴点のペアを見つける。
【0031】
例えば、
図3の半天球画像51の共通領域を極座標展開すると、
図4に示すように、レンズ中心からの角度θと、その角度θでの円周の所定の位置(例えば
図3の半天球画像の左端)を0度とした時の角度φと、による長方形の領域として表すことができる。同様に、
図3の半天球画像52の共通領域を極座標展開すると
図5に示すように、レンズ中心からの角度θと、その角度θでの円周の所定の位置(例えば
図3の半天球画像の左端)を0度とした時の角度φと、による長方形の領域として表すことができる。
【0032】
第1撮像部31が正確に真上方向の半天球画像51を撮影し、第2撮像部32が正確に真下方向の半天球画像52を撮影しているならば、地平線を示す点線55はθ=90度の円周の線に一致し、
図4に示す長方形の領域と
図5に示す長方形の領域とには同じ被写体が撮影されることになる。したがって、この場合は撮影された両画像の特徴点の位置は一致し、これらの特徴点の位置が一致するように重ね合わせて両画像をつなぎ合わせれば、自然な全天球画像が生成できることになる。
【0033】
しかし、実際には第1撮像部31と第2撮像部32とが正確に真逆の方向に設置できることはほとんどないし、両撮像部のカメラの諸特性は微妙に異なっていることが多い。したがって、通常は、共通領域をそのまま重ね合わせて両画像をつなぎ合わせることはできない。例えば、
図6に示す例では、第1撮像部31は正確に真上方向の半天球画像51を撮影しているが、第2撮像部32は真下方向から5度ずれた状態で半天球画像52を撮影している場合を示している。すると、半天球画像52において地平線を示す点線55は、レンズ中心からの角度が90度の円周を示す点線56とずれることになる。
【0034】
この場合、
図6の半天球画像51の共通領域を極座標展開すると、
図4と同様に、
図7に示す長方形の領域として表すことができる。しかし、
図6の半天球画像52の共通領域を極座標展開すると、
図8に示すように、地平線を示す点線55が、θ=90度の円周を示す点線56と波状に交わることになる。つまり、
図7に示す長方形の領域と
図8に示す長方形の領域とは、共通領域ではあるが、そのまま重ね合わせることはできない。
【0035】
通常の環境ではこのような状況になる。この場合、まず一方の長方形の領域から特徴点を抽出し、その特徴点に類似する特徴点を他方の長方形の領域から探すことによって特徴点のペア(対応する特徴点)を見つけ、この対応する特徴点同士(特徴点のペア)の位置を一致させるような射影変換行列を算出し、この行列を用いて一方の画像を変形し、他方の画像と共通領域を重ね合わせて、つなぎ合わせれば、全天球画像を生成することができる。射影変換行列の算出の際には精度を高めるために、RANSAC(Random Sample Consensus)アルゴリズムを用いることができる。また、動画像を対象とする場合、このような2つの画像のつなぎ合わせをフレーム毎に行う。
【0036】
このような処理について、
図2に戻って順に説明する。ステップS102で共通領域特定部12により共通領域が特定されているが、共通領域が2次元画像で表される場合は、共通領域に対応する第1の画像及び第2の画像をそれぞれ所定の数(例えば8×8)のマスに区切る。そして、特徴点特定部13は、各マスにおいて、第1の画像と第2の画像との間で対応する特徴点のペアを特定する(ステップS103)。例えば、第1の画像中のあるマス(a,b)内の特徴点A(マス内の座標が(c,d)であるとする)に対応する第2の画像中の特徴点Bを探す場合、まず、第2の画像中のマス(a,b)内の座標(c、d)を中心にして、その近傍から周辺に向かって特徴量が特徴点Aの特徴量と類似する点を検索する。この検索は例えば、類似度が所定の閾値以上である点を見つけたら、該点を特徴点Aと対応する第2の画像中の特徴点Bとしてもよいし、第2の画像中のマス(a,b)内の全ての点について特徴点Aとの類似度を計算して、最も類似する点を特徴点Aと対応する第2の画像中の特徴点Bとしてもよい。特徴点特定部13は例えばこのようにして対応する特徴点のペア(特徴点Aと特徴点B)を特定する。
【0037】
そして、移動ベクトル算出部14は、特徴点特定部13が特定した特徴点のペア(第1の画像中の特徴点及び第2の画像中の特徴点)について、このペアを構成する2つの特徴点の位置のずれをベクトル(移動ベクトル)として算出する(ステップS104)。移動ベクトル算出部14が算出したこの移動ベクトルは、
図9に示すように、各マスにおいて、第1の画像中の特徴点の位置を始点として、その特徴点に対応する第2の画像中の特徴点がどこに移動しているか(終点)を示すベクトルとなる。
図9の例では、マスの数は8×8=64なので、移動ベクトルも64本算出される。
【0038】
図2に戻り、次に、変換行列選出部18は、最適な変換行列を格納するための変数である「選出変換行列」を初期化する(ステップS105)。そして、変換行列算出部15は、移動ベクトル算出部14が算出した複数の移動ベクトルに基づき、第1の画像中の特徴点の位置を、対応する第2の画像中の特徴点に移動させる変換行列を算出する(ステップS106)。この変換行列は例えば射影変換行列である。第1の画像及び第2の画像が2次元画像の場合、射影変換行列は4本の移動ベクトルから算出できる。
【0039】
したがって、変換行列算出部15は、64本の移動ベクトルの中からこの4本の移動ベクトルをランダムに選定し、選定した移動ベクトル(選定移動ベクトル)を用いて射影変換行列を算出する。例えば、
図9において、丸61で囲った移動ベクトル4本がランダムに選定された選定移動ベクトルであるとすると、変換行列算出部15はこの4つの移動ベクトルの値から連立方程式を解くことによって変換行列を算出する。
【0040】
なお、第1の画像及び第2の画像から抽出した移動ベクトルが3次元の場合に射影変換行列を算出するには、5本の移動ベクトルが必要である。本実施形態1では、第1の画像及び第2の画像はどちらも半天球画像なので、特徴点特定部13が第1の画像中の第1の特徴点と第2の画像中の第2の特徴点を特定した後、移動ベクトル算出部14は、第1の特徴点とそれに対応する第2の特徴点とをそれぞれ半径1の球面に投影し、投影して得られた各特徴点の3次元座標を用いて3次元の移動ベクトルを算出する。そして、変換行列算出部15は、この3次元の移動ベクトルを5つ用いて連立方程式を解くことによって変換行列を算出する。
【0041】
図2に戻り、次に、変換部16は、変換行列算出部15が算出した変換行列を用いて、第1の画像中の特徴点の位置を変換し、変換後の位置を移動後特徴点の位置として算出する(ステップS107)。例えば、
図10は、第1の画像中の特徴点の位置を始点として、その特徴点の位置を変換部16が変換した移動後特徴点の位置を終点とするベクトル(変換後ベクトル)を、
図9に示す移動ベクトル(ただし選定移動ベクトルを除く)と重ねて表示した図である。理想的には、移動ベクトルと変換後ベクトルとは一致する(少なくとも選定移動ベクトルを選択したマスにおいては、一致する)が、実際には
図10に示すようにずれが生じる。
【0042】
図2に戻り、誤差算出部17は、このずれを誤差として算出する(ステップS108)。この評価対象となる移動ベクトル(及び変換後ベクトル)は複数(
図10に示す例では64本の移動ベクトルから4本の選定移動ベクトルを除いた60本)あるが、ここでは、誤差を評価する値として、3種類の評価値を算出する。ここに挙げる評価値はいずれも、値が大きいほど誤差が小さい(つまりより良い変換行列である)ことを意味する。
【0043】
第1の評価値は量子化代表クラスであり、これを評価値1とする。評価値1を求めるには、誤差算出部17は、まず各ベクトルの差(移動ベクトルと変換後ベクトルの差)の絶対値の2乗を求め、SD(Squared Difference)値とする。
図10に示す例では60個のSD値が求められる。そして、誤差算出部17は、この複数(ここでは60個)のSD値を所定のクラス数(例えば20)の段階(クラス)に量子化(分類)する。
【0044】
量子化の方法は任意だが、例えば、あるサポート範囲閾値Aを規定し、SD値がAより大きければクラス0に分類、A以下かつA/2より大きければクラス1に分類、A/2以下かつA/22より大きければクラス2に分類、・・・、A/217以下かつA/218より大きければクラス18に分類、A/218以下ならクラス19に分類、とすることで20段階に量子化することができる。
【0045】
そして、誤差算出部17は、複数(ここでは60個)のSD値の中の中央値が含まれるクラスを代表クラスとする。例えば、SD値の中央値がA/22なら、代表クラスはクラス3となる。そして、誤差算出部17は、この代表クラスの番号(例えばSD値の中央値がA/22なら、3)を評価値1とする。
【0046】
第2の評価値は、サポート範囲内のSD値の個数であり、これを評価値2とする。これも、まず各ベクトルの差(移動ベクトルと変換後ベクトルの差)の絶対値の2乗を求め、SD値とする。そして、あるサポート範囲閾値Aを規定し、複数(ここでは60個)のSD値のうち、A以下となるSD値の個数を評価値2とする。
【0047】
第3の評価値は、1つ前のフレームで選出された変換行列を用いて算出される評価値のうち、サポート範囲内のSD値の個数で表す評価値であり、これを評価値3とする。例えば、まず、今回のフレームの第1の画像中の特徴点の位置を始点として、その特徴点の位置を1つ前のフレームで選出された変換行列によって変換した位置(前フレーム移動後特徴点の位置)を終点とするベクトル(前フレーム変換後ベクトル)を求める。そして、このベクトル(前フレーム変換後ベクトル)と今回のフレームの移動ベクトルとの差の絶対値の2乗を求め、SD値とする。そして、あるサポート範囲閾値Aを規定し、複数(ここでは60個)のSD値のうち、A以下となるSD値の個数を評価値3とする。
【0048】
以上の3つの評価値のうち、評価値1及び評価値2は、今回のフレーム(現フレーム)での誤差を評価する値なので、現フレーム誤差とも呼ぶ。また、評価値3は前フレームでの誤差を評価する値なので、前フレーム誤差とも呼ぶ。
【0049】
そして、変換行列選出部18は、誤差算出部17が算出した誤差が所定の条件を満たすか否かを判定する(ステップS109)。この判定は、上述した3つの評価値により行う。まず、評価値1が同一ループ(ステップS106からステップS111までのループ)中でのそれまでの評価値1より大きければ「誤差が所定の条件を満たす」とする。そして、評価値1がそれまでの評価値1より小さければ「誤差が所定の条件を満たさない」とする。そして、評価値1がそれまでの評価値1と等しいなら、評価値2+評価値3の値がそれまでの評価値2+評価値3の値より大きければ「誤差が所定の条件を満たす」とし、評価値2+評価値3の値がそれまでの評価値2+評価値3の値以下なら「誤差が所定の条件を満たさない」とする。
【0050】
誤差が所定の条件を満たすなら(ステップS109;Yes)、変換行列選出部18は、今回のループで(ステップS106で)算出された変換行列で変数「選出変換行列」を更新し(ステップS110)、ステップS106に戻る。
【0051】
誤差が所定の条件を満たさないなら(ステップS109;No)、変換行列選出部18は、変数「選出変換行列」の更新無しで(ステップS110に行かずに)規定回数(例えば50回)ステップS106での変換行列算出を繰り返したか否かを判定する(ステップS111)。
【0052】
規定回数繰り返していなければ(ステップS111;No)、ステップS106に戻る。規定回数繰り返したなら(ステップS111;Yes)、画像生成部19は、変数「選出変換行列」に格納されている変換行列(変換行列選出部18が選出した変換行列)で第1の画像を変換し、共通領域を第2の画像と重ね合わせることにより、第1の画像と第2の画像とをつなぎ合わせた画像を生成する(ステップS112)。
【0053】
そして、制御部10は、動画像の全てのフレームについて処理を終了したか否かを判定する(ステップS113)。まだ全ては終了していないなら(ステップS113;No)、ステップS101に戻って、次のフレームの画像を取得して、これまでの処理を繰り返す。全てのフレームについて処理を終了したなら(ステップS113;Yes)、画像処理を終了する。
【0054】
以上、画像処理の処理内容について説明した。次に、上述の画像処理によって、第1の画像と第2の画像がつなぎ合わされる例を
図11に示す画像を例にして説明する。
【0055】
図11では、第1の画像の右端及び第2の画像の左端がそれぞれ共通領域71及び共通領域72になっている。そして、第1の画像と第2の画像とは、縦方向の位置が少しずれているため、そのまま共通領域71及び共通領域72を重ね合わせて2つの画像をつなぎ合わせると、
図12に示すように、つなぎ目の領域73で段差が生じる不自然な画像が生成されてしまう。(ここでは、共通領域71に共通領域72を上書きして2つの画像をつなぎ合わせた場合を想定している。)
【0056】
上述した画像処理を行うと、このような段差が生じないように画像を変換する変換行列を変換行列算出部15が算出し、画像生成部19がその変換行列で第1の画像を変換してから第2の画像とつなぎ合わせた画像を生成する。すると、
図13に示すように、つなぎ目の領域74で第1の画像と第2の画像とがぴったり重なり、自然な画像が生成される。
【0057】
動画像の中のある1フレームだけに着目した場合には、
図13に示すような自然な画像が生成されるので、特に問題は無いように見える。しかし、フレーム間での変換行列の違いを全く考慮しない場合は、例えば画像生成部19は、あるフレームでは
図14に示すような画像を生成し、次のフレームでは
図15に示すような画像を生成することが考えられる。この場合、それぞれのフレームでは自然な画像が生成されているが、
図14に示す画像と
図15に示す画像とは上下方向にずれがある。わかりやすくするため、
図14に示す画像と
図15に示す画像とを重ね合わせた画像を
図16に示す。したがって、これを動画像として再生した場合には、上下方向にブレが生じる不自然な動画像になってしまう。
【0058】
そこで、上述した画像処理では、誤差算出部17が1つ前のフレームで算出された変換行列も用いて評価値3を算出し、変換行列選出部18が評価値3も用いて最適な変換行列を選出するようにしているので、フレーム間で不自然さが生じるような変換行列が選出されてしまう可能性を少なくすることができる。
【0059】
このように、画像処理装置100では、最適な変換行列を選出する際に、1つ前のフレームで選出された変換行列による評価も加味することにより、1つ前のフレームで選出された変換行列と類似した変換行列が選出されやすくなる。そうすることにより、複数の動画像について、各動画像のフレーム同士をその端部でつなぎ合わせた広範囲画像からなる動画像を生成する際にも、動画像の時間的な不連続性によって引き起こされる不自然な動画像が生成される可能性を低くすることができる。
【0060】
(変形例1)
実施形態1では、画像処理(
図2)のステップS109で、変換行列選出部18は、誤差算出部17が算出した評価値1がそれまでの評価値1と等しいなら、評価値2+評価値3の値がそれまでの評価値2+評価値3の値より大きければ「誤差が所定の条件を満たす」とし、評価値2+評価値3の値がそれまでの評価値2+評価値3の値以下なら「誤差が所定の条件を満たさない」とした。しかしこれに限られない。評価値2は今回のフレームにおけるサポート範囲内のSD値の個数で、評価値3は1つ前のフレームで選出された変換行列を用いて算出されるSD値のうちサポート範囲内のSD値の個数であるが、例えば、変形例1として、これらに係数を掛けて重み付けをしてから加算した値を比較してもよい。
【0061】
この変形例1では、評価値2に掛ける係数をW2、評価値3に掛ける係数をW3とする。すると、画像処理(
図2)のステップS109では、変換行列選出部18は、誤差算出部17が算出した評価値1がそれまでの評価値1と等しいなら、W2×評価値2+W3×評価値3の値がそれまでのW2×評価値2+W3×評価値3の値より大きければ「誤差が所定の条件を満たす」とし、W2×評価値2+W3×評価値3の値がそれまでのW2×評価値2+W3×評価値3の値以下なら「誤差が所定の条件を満たさない」とする。
【0062】
変形例1では、評価値2及び評価値3にそれぞれ係数を掛けることにより、1つ前のフレームで選出された変換行列の影響度合いを調整することができる。
【0063】
(変形例2)
また、実施形態1では、画像処理(
図2)のステップS108で、誤差算出部17は、上述の3種類の評価値を算出したが、これに限られない。例えば、変形例2として、誤差算出部17は、4つ目の評価値として、1つ前のフレームで選出された変換行列を用いて算出される評価値のうち、量子化代表クラスで表す評価値を算出してもよい。この評価値を評価値4とする。
【0064】
誤差算出部17は、評価値3を算出した時と同様、まず、今回のフレームの第1の画像中の特徴点の位置を始点として、その特徴点の位置を1つ前のフレームで選出された変換行列によって変換した位置(前フレーム移動後特徴点の位置)を終点とするベクトル(前フレーム変換後ベクトル)を求める。そして、誤差算出部17は、このベクトル(前フレーム変換後ベクトル)と今回のフレームの移動ベクトルとの差の絶対値の2乗を求め、SD値とする。このSD値は評価値1を算出した時と同様、複数(
図10に示す例では60個)求められる。
【0065】
そして、誤差算出部17は、この複数(ここでは60個)のSD値を所定のクラス数(例えば20)の段階(クラス)に量子化(分類)する。ここでの量子化の方法も任意であり、例えば上述の(評価値1を求める際の)量子化の方法を用いることができる。そして、誤差算出部17は、複数(ここでは60個)のSD値の中の中央値が含まれるクラスを代表クラスとする。そして、誤差算出部17は、この代表クラスの番号を評価値4とする。
【0066】
そして、画像処理(
図2)のステップS109では、変換行列選出部18は、所定の閾値を基準クラス閾値として定めておき、評価値4-評価値1≦基準クラス閾値なら、「誤差が所定の条件を満たさない」(ステップS109;No)として、ステップS111に進む。これにより、今回のループ(ステップS106からステップS111のループ)で変換行列を算出する際に選定された選定移動ベクトルと、1つ前のフレームでの選出された変換行列を算出する際に選定された選定移動ベクトルとの違いが大きい場合には、すぐに次のループに進むことができる。選定移動ベクトルが大きく異なる場合には、1つ前のフレームで算出された変換行列と今回のフレームで算出される変換行列とが大きく異なると想定されるため、今回のループで算出される変換行列を棄却しているのである。
【0067】
変形例2では、このようにすることにより、1つ前のフレームで選出された変換行列と大きく異なる変換行列が算出される可能性が高い場合には、その変換行列を棄却することにより、より適切な変換行列が選出される可能性を高めている。
【0068】
(変形例3)
また、実施形態1では、画像処理(
図2)のステップS108で、誤差算出部17は、上述の3種類の評価値を算出したが、これに限られない。例えば、変形例3として、誤差算出部17は、これら3種類の評価値の代わりに、次の2つの評価値(ここでは評価値5及び評価値6とする)を算出することにしてもよい。
【0069】
変形例3では、誤差算出部17は、各ベクトルの差(移動ベクトルと変換後ベクトルの差)の絶対値の2乗を求め、SD(Squared Difference)値とし、さらに、SD値の総和であるSSD(Sum of Squared Difference)を求め、これを評価値5とする。
【0070】
また、評価値6を求める場合には、誤差算出部17は、まず、今回のフレームの第1の画像中の特徴点の位置を始点として、その特徴点の位置を1つ前のフレームで選出された変換行列によって変換した位置(前フレーム移動後特徴点の位置)を終点とするベクトル(前フレーム変換後ベクトル)を求める。そして、このベクトル(前フレーム変換後ベクトル)と今回のフレームの移動ベクトルとの差の絶対値の2乗を求め、SD値とし、さらにSD値の総和であるSSDを求め、これを評価値6とする。なお、評価値5及び評価値6は、上述の評価値と異なり、値が小さいほど誤差が小さい(つまりより良い変換行列である)ことを意味する。
【0071】
そして、変換行列選出部18は、画像処理(
図2)のステップS109で、評価値5+評価値6がそれまでの評価値5+評価値6より小さければ「誤差が所定の条件を満たす」とする。そして、評価値5+評価値6がそれまでの評価値5+評価値6より大きければ「誤差が所定の条件を満たさない」とする。なお、上述の変形例1と同様に、各評価値に係数を掛ける(例えば、評価値5にW5を掛け、評価値6にW6を掛ける)ことによって、1つ前のフレームで選出された変換行列の影響度合いを調整してもよい。
【0072】
変形例3では、誤差の評価値としてSSDを用いることにより、SD値を複数のクラスに量子化したり、サポート範囲内のSD値の個数を求めたりする必要がなくなり、より簡単に評価値を求めることができる。
【0073】
(変形例3の変形例1)
さらに、変形例3の変形例1として、画像処理(
図2)のステップS108で、誤差算出部17が評価値5及び評価値6を求めた上で、所定の閾値として基準SSD閾値を定めておいて、ステップS109では、変換行列選出部18は、評価値6が基準SSD閾値以上なら、「誤差が所定の条件を満たさない」(ステップS109;No)として、ステップS111に進むようにしてもよい。
【0074】
このようにすることにより、今回のループ(ステップS106からステップS111のループ)で変換行列を算出する際に選定された選定移動ベクトルと、1つ前のフレームでの選出された変換行列を算出する際に選定された選定移動ベクトルとの違いが大きい場合には、今回のループで算出された変換行列を棄却して、すぐに次のループに進むことができる。
【0075】
変形例3の変形例1では、このようにすることにより、1つ前のフレームで選出された変換行列と大きく異なる変換行列が算出される可能性が高い場合には、その変換行列を棄却することにより、より適切な変換行列が選出される可能性を高めている。
【0076】
(変形例3の変形例2)
上述の変形例3の変形例1においては、画像処理(
図2)のステップS109で、変換行列選出部18は、評価値6が基準SSD閾値以上なら、「誤差が所定の条件を満たさない」と判定することとしたが、これに限られない。例えば、変形例3の変形例2として、所定の割合として基準SSD割合(n%)を定めておいて、ステップS109で、変換行列選出部18は、評価値6が評価値5の基準SSD割合以上なら、「誤差が所定の条件を満たさない」(ステップS109;No)として、ステップS111に進むようにしてもよい。
【0077】
このようにすることにより、今回のループ(ステップS106からステップS111のループ)で変換行列を算出する際に選定された選定移動ベクトルと、1つ前のフレームでの選出された変換行列を算出する際に選定された選定移動ベクトルとの違いが大きい場合には、今回のループで算出された変換行列を棄却して、すぐに次のループに進むことができる。
【0078】
変形例3の変形例2では、このようにすることにより、1つ前のフレームで選出された変換行列と大きく異なる変換行列が算出される可能性が高い場合には、その変換行列を棄却することにより、より適切な変換行列が選出される可能性を高めている。
【0079】
(変形例4)
実施形態1では、画像処理(
図2)のステップS105で(つまり変換行列を変化させて最適な変換行列を選出するループに入る直前で)選出変換行列を初期化していたが、この処理をしなくてもよい。例えば、変形例4として、
図17に示すように、ステップS105の処理の代わりに、前回の選出変換行列を初期化せずに、前回の選出変換行列を用いて誤差算出部17が誤差(各評価値)を算出しておく(ステップS121)ことにしてもよい。このようにすると、その後の(ステップS106からステップS111の)ループでは、前回の選出変換行列が初期値として扱われることになる。
【0080】
すると、ステップS106で前回の選出変換行列とあまりにかけ離れた変換行列が算出されたとしてもそれはすぐに棄却されることになるので、より適切な変換行列が選出される可能性が高くなる。
【0081】
(変形例5)
さらに、変形例5として、
図18に示すように、ステップS121で算出した誤差(各評価値)が所定の条件を満たすか否かを判定(ステップS122)してもよい。具体的には、所定の基準閾値を設定して、各評価値がその基準閾値より高ければ、変換行列選出部18は「前回のフレームでの選出変換行列は、今回のフレームでも問題無く利用できる」と判断して、選出変換行列を更新しない(前回のフレームでの値のままにする)。
【0082】
つまり、変形例5では、ステップ122で、変換行列選出部18が、誤差が所定の条件を満たすと判定したら(ステップS122;Yes)、ステップS112に行き、画像生成部19は、前回のフレームでの選出変換行列を用いて画像生成する。誤差が所定の条件を満たさないと判定したら(ステップS122;No)、ステップS106に行き、今回のフレームでの変換行列を選出するループに入る。誤差が所定の条件を満たすとは、例えば、誤差が所定の閾値より小さい場合である。
【0083】
変形例5では、前回のフレームでの選出変換行列を利用可能な場合には、今回のフレームで変換行列を算出する処理を省略することができるので、処理負荷を軽くすることができる。
【0084】
(変形例6)
また、実施形態1では、画像処理(
図2)のステップS101でそのフレームの画像を取得したら、毎回変換行列を算出する処理を行っていたが、状況によってはこの処理をしなくてもよい。例えば、変形例6として、
図19に示すように、ステップS101の後で、制御部10は状況を取得し(ステップS131)、状況に変化があるかを判定する(ステップS132)ようにしてもよい。
【0085】
ここで、状況とは、周囲の環境や撮像部の動きである。例えば、撮像部に加速度センサを付け、制御部10が加速度センサから得られる値を確認することにより、撮像部が動いたか否かを判定することができる。また、加速度センサを用いなくても、撮影した画像を前フレームで撮影した画像と比較することにより、状況の変化を判定できる。これは、具体的には、制御部10が、前回のフレームと今回のフレームとで画像自体の差を算出(例えば、ピクセル単位で画素値の差の絶対値を出し、その絶対値の全ピクセルでの総和を算出)し、算出した値が所定の閾値よりも小さければ、状況に変化はないと判定し、算出した値が該閾値以上なら状況に変化ありと判定する。
【0086】
制御部10は、状況に変化がないと判定したら(ステップS132;No)、ステップS112に行き、画像生成部19は、前回のフレームでの選出変換行列を用いて画像生成する。状況に変化ありと判定したら(ステップS132;Yes)、ステップS102に行き、今回のフレームで、新たに変換行列を選出する処理に入る。なお、上述のステップS131及びステップS132において、制御部10は、状況判定手段として機能する。
【0087】
変形例6では、状況が変化した時だけ変換行列の算出を行うので、処理負荷を軽くすることができる。
【0088】
(変形例7)
上述の実施形態及び変形例では、変換行列選出部18は、今回のフレームで算出された変換行列での評価値と1つ前のフレームで算出された変換行列での評価値とを用いて最適な変換行列の選出を行っているが、これに限られない。例えば、変形例7として、1つ前のフレームだけで無く、2つ前のフレームで算出された変換行列での評価値も用いて最適な変換行列の選出を行ってもよい。さらには、3つ前やそれ以上前のフレームで算出された変換行列での評価値も用いて最適な変換行列の選出を行ってもよい。
【0089】
変形例7では、過去のフレームでの評価値を複数用いることで、より適切な変換行列が選出される可能性を高めることができる。
【0090】
なお、上述の実施形態及び変形例では、画像処理装置100は、撮像部を2つ(第1撮像部31及び第2撮像部32)備えていた。しかし、例えば、他の装置から動画像を取得したり、記憶部20に記憶された動画像を取得したりして、画像取得部11が複数の動画像を取得できる場合には、画像処理装置は撮像部を備えなくてもよい。
【0091】
また、上述の実施形態及び変形例では、画像処理装置100は、第1の画像と第2の画像をつなぎ合わせていたが、つなぎ合わせる画像の数は2つに限られない。画像処理装置は、3以上の画像をそれぞれ隣り合う画像との共通領域に基づいてつなぎ合わせた画像を生成してもよい。
【0092】
なお、上述の実施形態1及び各変形例は適宜組み合わせることができる。例えば、変形例4(
図17)に変形例6(
図19)を組み合わせると、状況に変化がなければ前回の選出変換行列が今回の選出変換行列になり、状況に変化があれば前回の選出変換行列が今回の変換行列の初期値として扱われるので、処理負荷を軽減しつつ、より適切な変換行列が選出される可能性を高めることができる。
【0093】
また、変形例5(
図18)に変形例6(
図19)を組み合わせると、状況に変化がなければ前回の選出変換行列が今回の選出変換行列になり、状況に変化があっても前回の選出変換行列での誤差が小さければ前回の選出変換行列が今回の選出変換行列になり、それ以外の場合に前回の選出変換行列が今回の変換行列の初期値として扱われるので、さらに処理負荷を軽減しつつ、より適切な変換行列が選出される可能性を高めることができる。
【0094】
なお、画像処理装置100の各機能は、通常のPC(Personal Computer)等のコンピュータによっても実施することができる。具体的には、上記実施形態では、画像処理装置100が行う画像処理等のプログラムが、記憶部20のROMに予め記憶されているものとして説明した。しかし、プログラムを、フレキシブルディスク、CD-ROM(Compact Disc Read Only Memory)、DVD(Digital Versatile Disc)、MO(Magneto-Optical Disc)、メモリカード、USB(Universal Serial Bus)メモリ等のコンピュータ読み取り可能な記録媒体に格納して配布し、そのプログラムをコンピュータに読み込んでインストールすることにより、上述の各機能を実現することができるコンピュータを構成してもよい。
【0095】
以上、本発明の好ましい実施形態について説明したが、本発明は係る特定の実施形態に限定されるものではなく、本発明には、特許請求の範囲に記載された発明とその均等の範囲が含まれる。以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
【0096】
(付記1)
第1の画像と、前記第1の画像と互いに端部が共通する第2の画像と、をそれぞれフレーム単位で取得する画像取得手段と、
前記画像取得手段が取得した前記第1の画像と前記第2の画像とで共通する領域である共通領域を特定する共通領域特定手段と、
前記共通領域特定手段により特定された前記共通領域において、前記第1の画像と前記第2の画像とで対応する特徴点のペアを特定する特徴点特定手段と、
前記特徴点特定手段により特定された特徴点のペアに基づき、前記第1の画像中の第1の特徴点を始点とし、前記第1の特徴点に対応する前記第2の画像中の第2の特徴点を終点とする、移動ベクトルを複数算出する移動ベクトル算出手段と、
前記移動ベクトル算出手段により算出された複数の移動ベクトルから選定された選定移動ベクトルに基づいて変換行列を算出する変換行列算出手段と、
前記変換行列算出手段により算出された変換行列を用いて、前記第1の画像中の第1の特徴点の位置を変換した位置である移動後特徴点の位置を算出する変換手段と、
前記第2の特徴点の位置と前記変換手段により算出された前記移動後特徴点の位置との間の誤差を算出する誤差算出手段と、
所定のフレームにおいて、前記変換行列算出手段により算出された複数の変換行列の中から、前記誤差算出手段により算出された誤差が所定の条件を満たす変換行列を選出する変換行列選出手段と、
前記変換行列選出手段が選出した変換行列を用いて前記第1の画像と前記第2の画像とをつなぎ合わせた画像を生成する画像生成手段と、
を備え、
前記変換行列選出手段は、前記所定のフレームの前のフレームにおいて選出された変換行列と前記所定のフレームにおいて前記変換行列算出手段で算出された複数の変換行列の中から、所定の条件を満たす変換行列を選出する、
画像処理装置。
【0097】
(付記2)
さらに状況を判定する状況判定手段を備え、
前記変換行列選出手段は、前記状況判定手段が状況に変化はないと判定したら、前記所定のフレームの前のフレームにおいて選出された変換行列を前記所定のフレームにおける変換行列として選出する、
付記1に記載の画像処理装置。
【0098】
(付記3)
前記変換手段は、前記所定のフレームの前のフレームにおいて選出された変換行列と、前記所定のフレームにおいて前記変換行列選出手段が選出した変換行列の、それぞれを用いて前記第1の画像中の第1の特徴点の位置を変換して移動後特徴点の位置を算出し、
前記誤差算出手段は、前記変換手段が算出した移動後特徴点の位置に基づき、前記所定のフレームの前のフレームにおいて選出された変換行列に基づく誤差である前フレーム誤差と、前記所定のフレームで選出された変換行列に基づく誤差である現フレーム誤差と、を算出し、
前記変換行列選出手段は、前記所定のフレームの前のフレームにおいて選出された変換行列と前記所定のフレームにおいて前記変換行列算出手段で算出された複数の変換行列の中から、前記前フレーム誤差及び前記現フレーム誤差が所定の条件を満たす変換行列を選出する、
付記1又は2に記載の画像処理装置。
【0099】
(付記4)
前記変換行列選出手段は、前記前フレーム誤差が所定の閾値より小さい場合には、前記所定のフレームの前のフレームにおいて選出された変換行列を前記所定のフレームにおける変換行列として選出する、
付記3に記載の画像処理装置。
【0100】
(付記5)
前記第1の画像と前記第2の画像は半天球画像であって、それを合成することで全天球画像を生成する、
付記1から4のいずれか1つに記載の画像処理装置。
【0101】
(付記6)
第1の画像と、前記第1の画像と互いに端部が共通する第2の画像と、をそれぞれフレーム単位で取得し、
前記取得した前記第1の画像と前記第2の画像とで共通する領域である共通領域を特定し、
前記特定された前記共通領域において、前記第1の画像と前記第2の画像とで対応する特徴点のペアを特定し、
前記特定された特徴点のペアに基づき、前記第1の画像中の第1の特徴点を始点とし、前記第1の特徴点に対応する前記第2の画像中の第2の特徴点を終点とする、移動ベクトルを複数算出し、
前記算出された複数の移動ベクトルから選定された選定移動ベクトルに基づいて変換行列を算出し、
前記算出された変換行列を用いて、前記第1の画像中の第1の特徴点の位置を変換した位置である移動後特徴点の位置を算出し、
前記第2の特徴点の位置と前記算出された前記移動後特徴点の位置との間の誤差を算出し、
所定のフレームにおいて、前記算出された複数の変換行列の中から、前記算出された誤差が所定の条件を満たす変換行列を選出し、
前記選出した変換行列を用いて前記第1の画像と前記第2の画像とをつなぎ合わせた画像を生成する、
画像処理方法であって、
前記変換行列の選出において、前記所定のフレームの前のフレームにおいて選出された変換行列と前記所定のフレームにおいて算出された複数の変換行列の中から、所定の条件を満たす変換行列を選出する、
画像処理方法。
【0102】
(付記7)
コンピュータに、
第1の画像と、前記第1の画像と互いに端部が共通する第2の画像と、をそれぞれフレーム単位で取得し、
前記取得した前記第1の画像と前記第2の画像とで共通する領域である共通領域を特定し、
前記特定された前記共通領域において、前記第1の画像と前記第2の画像とで対応する特徴点のペアを特定し、
前記特定された特徴点のペアに基づき、前記第1の画像中の第1の特徴点を始点とし、前記第1の特徴点に対応する前記第2の画像中の第2の特徴点を終点とする、移動ベクトルを複数算出し、
前記算出された複数の移動ベクトルから選定された選定移動ベクトルに基づいて変換行列を算出し、
前記算出された変換行列を用いて、前記第1の画像中の第1の特徴点の位置を変換した位置である移動後特徴点の位置を算出し、
前記第2の特徴点の位置と前記算出された前記移動後特徴点の位置との間の誤差を算出し、
所定のフレームにおいて、前記算出された複数の変換行列の中から、前記算出された誤差が所定の条件を満たす変換行列を選出し、
前記選出した変換行列を用いて前記第1の画像と前記第2の画像とをつなぎ合わせた画像を生成する、
処理を実行させるためのプログラムであって、
前記変換行列の選出において、前記所定のフレームの前のフレームにおいて選出された変換行列と前記所定のフレームにおいて算出された複数の変換行列の中から、所定の条件を満たす変換行列を選出する、
プログラム。
【符号の説明】
【0103】
10…制御部、11…画像取得部、12…共通領域特定部、13…特徴点特定部、14…移動ベクトル算出部、15…変換行列算出部、16…変換部、17…誤差算出部、18…変換行列選出部、19…画像生成部、20…記憶部、31…第1撮像部、32…第2撮像部、51,52…半天球画像、53…実線、54,55,56…点線、61…丸、71,72…共通領域、73,74…領域、100…画像処理装置