(58)【調査した分野】(Int.Cl.,DB名)
前記分割手段は、予め定められた種類のゆれに関する情報である前記ゆれ情報と、前記動き情報と、に基づいて、前記映像を、前記複数の領域である前記撮像装置が設置されているオブジェクトが撮影されている領域とその他の領域とに分割する請求項1乃至3何れか1項記載の情報処理装置。
前記補正手段は、前記分割手段により前記映像が分割された前記複数の領域に含まれる指定された領域に対して、前記領域に対応する前記動き情報に基づいて、ゆれを補正する処理を行う請求項1乃至4何れか1項記載の情報処理装置。
前記分割手段は、前記映像と前記映像よりも過去に前記撮像装置を介して撮影された複数の映像とに基づいて取得された複数の前記動き情報に基づいて、前記映像を前記複数の領域に分割する請求項1乃至5何れか1項記載の情報処理装置。
【発明を実施するための形態】
【0008】
以下に、本発明の好ましい実施の形態を、図面に基づいて詳細に説明する。
【0009】
<実施形態1>
図1(a)は、本実施形態の撮像装置100のハードウェア構成の一例を示す図である。撮像装置100は、広角レンズを有する撮影部を含み、撮影部を介した撮影を制御する撮像装置である。撮像装置100は、情報処理装置の一例である。
撮像装置100は、制御部101、メモリ102、記録媒体103、撮影部104、入力I/F105、センサ部106を含む。各要素は、システムバス107を介して、相互に通信可能に接続されている。
制御部101は、撮像装置100を制御するCentral Processing Unit(CPU)、マイクロコンピュータ等の演算装置である。メモリ102は、各種プログラム、各種設定情報等を記憶するRead Only Memory(ROM)等の記憶装置を含む記憶装置である。また、メモリ102は、制御部101のワークエリアやデータの一時的な記憶場所として機能するRandom Access Memory(RAM)等の記憶装置を含む。以下では、メモリ102中で、映像信号を一時的に記憶する部分をフレームメモリとする。
【0010】
記録媒体103は、各種プログラム、各種設定情報、撮像装置100が撮影した映像データ等を記憶する記録媒体である。記録媒体103は、SDメモリカード等のフラッシュメモリ、ハードディスクドライブ(HDD)、ソリッドステートドライブ(SSD)等である。また、本実施形態では、制御部101は、ATA、SDCARD I/F等の公知のインターフェイス(IF)を介して、記録媒体103に対して、データや各種のコマンドを通信する。また、記録媒体103は、記録媒体装着、排出機構により、撮像装置100に対して装着、排出することができるような構成であってもよいし、撮像装置100に内蔵される構成であってもよい。
また、制御部101は、記録媒体103に対してデータ(ファイル)の書き込み、読み込みを行う場合、記録媒体103から、ファイルシステムデータを再生してメモリ102に記憶する。このファイルシステムデータは、記録媒体103に記録されたデータのファイル名やファイルのサイズ、データの記録アドレス等を示すデータであり、ファイルを管理するための管理情報である。そして、制御部101は、読み出したファイルシステムデータに従ってファイルの書き込み、読み読みを制御する。制御部101は、記録媒体103へのファイルの書き込みに応じて、メモリ102に記憶されたファイルシステムデータを更新する。そして、制御部101は、更新したファイルシステムデータを、記録媒体103に記録する。
【0011】
撮影部104は、レンズ、撮像素子等を含み、周囲の環境を撮影する撮影部である。撮影部104は、撮像素子を介して、レンズから入った光を変換することで映像信号を取得する。本実施形態では、撮影部104は、マイクロフォンを含み、マイクロフォンを介して、周囲の音声信号も取得する。入力I/F105は、電源のオン・オフや映像の記録・再生等を指示するためのハードスイッチ、ハードボタン、タッチパネルの操作部等の入力部との接続に利用されるインターフェースである。本実施形態では、入力部は、撮像装置100に内蔵されていることとするが、外部の装置であることとしてもよい。ユーザは、入力I/F105を介して接続されている入力部を操作することで、撮像装置100の静止画像、動画像の記録及び再生の開始、停止、記録画像の一覧表示等を、撮像装置100に指示することができる。制御部101は、入力I/F105を介して、ユーザによる入力部の操作に基づく入力を受付ける。センサ部106は、ジャイロセンサ、加速度センサ等のセンサを含むセンサ部である。制御部101は、センサ部106により検知された情報に基づいて、撮像装置100の振動を検出する。
制御部101が、メモリ102、記録媒体103等に記憶されたプログラムにしたがって処理を実行することで、
図1(b)で後述する撮像装置100の機能、
図4で後述するフローチャートの処理等が実現される。
【0012】
図1(b)は、撮像装置100の機能構成の一例を示す図である。
撮像装置100は、符号化部110、記録媒体制御部111、ゆれ検出部112、領域判定部113、ゆれ補正部114を含む。
符号化部110は、映像及び音声の符号化・復号化を行う。符号化部110は、映像の記録の際には、撮影部104を介して取得された映像信号や音声信号を、動画像であればH.264、静止画像であればJPEG等の符号化形式に従って符号化して、そのデータ量を軽減させる。
記録媒体制御部111は、記録媒体103に対し、映像信号、音声信号等の各種の情報の書き込み、読み込みを行う。記録媒体制御部111は、映像の記録の際には、メモリ102のフレームメモリに蓄積された映像データや音声データを記録媒体103に記録する。また、記録媒体制御部111は、映像の再生の際には、記録媒体103から映像データや音声データを読み込み、メモリ102に記憶する。また、記録媒体制御部111は、記録媒体103に記録する映像データ、音声データ、各種の情報を、FAT(File Allocation Table)等のファイルシステムに従い、ファイルとして管理する。
【0013】
ゆれ検出部112は、センサ部106を介して、撮像装置100のゆれを検出する。ゆれ検出部112は、センサ部106に含まれるセンサの種類に応じて、撮像装置100のゆれを検出することができ、また、ゆれの方向だけでなく、ゆれの大きさも検出できる。
領域判定部113は、メモリ102のフレームメモリに一時的に記憶された複数の映像から動きベクトルを検出し、検出した動きベクトルと、ゆれ検出部112により検出されたゆれ情報と、に基づいて、映像内の領域を分割する。映像から検出された動きベクトルは、映像内の動きを示す動き情報の一例である。
ゆれ補正部114は、領域判定部113により求められた動きベクトルと、ゆれ検出部112により検出されたゆれ情報と、に基づいて映像のゆれを補正する。記録媒体制御部111は、ゆれ補正部114によりゆれ補正された映像信号を、再びメモリ102に記憶する。
ゆれ検出部112、領域判定部113、ゆれ補正部114は、撮像装置100が映像を記録している際には常に動作しており、撮影部104により取得されメモリ102へ記憶された映像をもとに動作する。符号化部110は、ゆれ補正部114によりゆれ補正されメモリ102に記憶された映像を、符号化する。そして、記録媒体制御部111は、符号化された映像を、記録媒体103に記録する。
【0014】
図2は、ゆれ補正処理の一例を説明する図である。
図2(a)の映像200〜202は、撮影部104を介して撮影された映像を示す。映像200〜202は、予め定められた間隔で、時系列上で連続して植木鉢が撮影された映像である。制御部101は、撮影部104を介して、実際に表示部に表示したり記録したりする映像よりも、大きなサイズの映像を撮影できる。以下では、実際に表示部に表示されたり記録されたりする映像よりも、大きなサイズの映像を、未加工映像とする。また、以下では、実際に表示部に表示されたり記録されたりする映像を、加工映像とする。
映像200〜202中の外側の枠(実線)は、撮影部104を介して撮影された未加工映像の範囲を示す。映像200〜202には、映像中で、植木鉢が上下にゆれている様子が示されている。この映像200〜202を、動画として連続して再生すると植木鉢が上下にゆれて、非常に見にくい映像となってしまう。
【0015】
図2(b)の映像210〜212は、それぞれ、映像200〜202から一部が切り出された加工映像である。映像200〜202の点線の枠線は、切り出し位置を示す。
映像200〜202の点線の枠線の位置を見ると、切り出し位置が、植木鉢のゆれ合せて、ゆれを打ち消すように位置を変えている様子が分かる。
制御部101は、このようにゆれを打ち消すように、未加工映像から映像を切り出すことで、映像210〜212に示されるように、ゆれのない映像を生成できる。
以上が、ゆれ補正処理の一例の概要である。
【0016】
図3は、撮像装置100の設置状況等の一例を示す図である。
図3(a)は、自動車のダッシュボードの中央に撮像装置100が設置された状況を示す。
図3(a)の例では、ダッシュボードの向こう側のガラス越しに車外の風景が広がっている。本実施形態では、撮像装置100は、自動車に設置されることとする。以下では、撮像装置100が設置された自動車を、設置自動車とする。
図3(b)は、
図3(a)の状況で撮像装置100が撮影する映像の一例である。撮像装置100は、撮影部104に広角レンズを含み、撮像装置100が設置されたダッシュボードが映り込んだ映像を撮影することとなる。
【0017】
以下では、
図4を用いて、本実施形態の撮像装置100の処理について説明する。
図4は、ゆれ補正処理の一例を示すフローチャートである。
撮像装置100の電源がオンになると、
図4の処理が開始される。
S401において、制御部101は、撮影部104、符号化部110を介して、映像を撮影し、撮影した映像のデータである未加工映像の映像データを取得し、取得した映像データをフレームメモリに記憶する。また、制御部101は、加工映像のサイズの映像(例えば、全ピクセルのピクセル値が0の映像)を生成する。制御部101は、この生成した映像内のピクセル値を変更することで、加工映像を生成する。以下では、この生成された映像を、原映像とする。また、制御部101は、予め定められた間隔Δtで周期的に映像データを撮影し、撮影した未加工映像の映像データをフレームメモリに記憶し続けている。S401でフレームメモリに記憶された映像データは、時刻tにおける映像のデータである映像データ(t)であるとする。
【0018】
S402において、制御部101は、S401でメモリ102に記憶された映像のデータに基づいて、動きベクトルを検出する。
図5(a)は、S402での制御部101による動きベクトル検出処理の一例を説明する図である。また、映像データ(t)よりもnフレーム前の映像(時刻(t−nΔt)における映像データ)を、映像データ(t−nΔt)とする。
図5(a)に示すように、制御部101は、映像データ(t)と、フレームメモリに記録された時刻(t−Δt)の映像データ(時刻tの映像データの1フレーム前の映像データ)と、を比較することで、動きベクトルを検出する。制御部101は、例えば、映像を予め定められた複数のブロックに分割し、分割したブロックごとにマッチングをとって、各ブロックが動いた方向と大きさを求める方法等の公知の技術を用いて、動きベクトルを検出する。制御部101は、例えば、映像データ(t)と、映像データ(t−Δt)と、における各ブロックのマッチングをとることで、動きベクトルを検出する。
図6(a)に、S402で検出された動きベクトルの一例を示す。
図6(a)中の矢印それぞれが、動きベクトルである。矢印の向きと大きさは、それぞれは、ゆれの向きと大きさを示す。
【0019】
S403において、制御部101は、センサ部106、ゆれ検出部112を介して、設置自動車に対する撮像装置100のゆれを検出する。本実施形態では、制御部101は、撮像装置100の設置自動車の底面に対して垂直方向のゆれを検出する。制御部101は、検出したゆれの情報をゆれ情報としてメモリ102に記憶する。
図7(a)に、S403で検出されたゆれを示すグラフを示す。
図7(a)のグラフの縦軸は、ゆれの大きさを示し、横軸は、時間を示す。
S404において、制御部101は、S402で検出した動きベクトルと、S403で検出した設置自動車に対する撮像装置のゆれを示すゆれ情報と、に基づいて、領域判定部113を介して、映像内の領域を複数の領域に分割する。
S402で検出された動きベクトルは、
図6(a)に示される動きベクトルであるとする。S404で検出されたゆれを示すゆれ情報は、
図7(a)のグラフが示すゆれの情報であるとする。本実施形態では、制御部101は、S403で設置自動車の底面に対して垂直方向のゆれのみを検出することとしたが、設置自動車の底面に対して水平方向等、他の方向のゆれを検出することとしてもよい。
【0020】
S402では、動きベクトルの検出に、
図5(a)で示したように時刻t−Δtと時刻tとにおける映像データが用いられる。そのため、制御部101は、S403で検出されたゆれのうち、時刻t−Δtと時刻tとにおけるゆれと、映像データ(t)と映像データ(t−Δt)とから求められた動きベクトルと、を比較することとなる。制御部101は、
図7(a)のグラフにおける時刻t−Δt〜tまでの期間内におけるゆれの変化から設置自動車の底面に対して垂直方向のゆれの向きと大きさとを検出する。
また、撮像装置100は、設置自動車に設置されている。そのため、撮像装置100が撮影した映像上における設置自動車の部分における動きベクトルの大きさ及び向きは、設置自動車に対する撮像装置100のゆれの大きさ及び向きと対応関係にあると仮定できる。即ち、撮像装置100がある方向にゆれると、撮像装置100が撮影する映像内での設置自動車の領域は、その逆方向にゆれる。また、撮像装置100がある距離だけゆれると、撮像装置100が撮影する映像内での設置自動車の領域は、その距離に応じた距離ゆれることとなる。
そこで、本実施形態では、制御部101は、映像中で、撮像装置100と対応するゆれが生じている部分を、設置自動車が撮影されている部分として決定し、その他の部分を、車外の風景が撮影されている部分として決定する。
【0021】
制御部101は、例えば、撮像装置100により撮影された映像を、予め定められた複数のブロックに分割して、分割したブロックごとに、そのブロック内の動きベクトルが、撮像装置100のゆれと、対応するか否かを判定する。
この複数のブロックそれぞれの形状、サイズは任意の形状、サイズでよいが、領域を分割するのに十分なサイズであることが望ましい。この複数のブロックとしては、例えば、映像の全領域を、n×n(n:任意の自然数)の矩形領域に分割した各ブロック等がある。
制御部101は、例えば、ブロックごとに、領域判定部113を介して、以下のような処理を行う。即ち、制御部101は、ブロック内の動きベクトルの向きと、撮像装置100のゆれの向きと、が反対であるか否かを判定し、反対でないと判定した場合、ブロック内の動きベクトルと、撮像装置100のゆれと、が対応しないと判定する。
【0022】
また、制御部101は、ブロック内の動きベクトルの向きと、撮像装置100のゆれの向きと、が反対であると判定した場合、以下の処理を行う。即ち、制御部101は、ブロック内の動きベクトルの大きさと、設置自動車に対する撮像装置100のゆれの大きさに予め定められた値を乗じた値と、の差分が予め定められた閾値以下であるか否かを判定する処理を行う。この予め定められた値は、実際の設置自動車に対する撮像装置100の単位距離のゆれに対する、撮像装置100により撮影された映像内でのゆれの距離の割合を示す値である。制御部101は、この差分が予め定められた閾値より大きいと判定した場合、ブロック内の動きベクトルと、設置自動車に対する撮像装置100のゆれと、が対応しないと判定する。また、制御部101は、この差分が予め定められた閾値以下であると判定した場合、ブロック内の動きベクトルと、設置自動車に対する撮像装置100のゆれと、が対応すると判定する。
そして、制御部101は、ブロック内の動きベクトルと、設置自動車に対する撮像装置100のゆれと、が対応すると判定したブロックそれぞれが示す領域を、設置自動車が撮影された領域である領域Bとして決定する。また、制御部101は、ブロック内の動きベクトルと、設置自動車に対する撮像装置100のゆれと、が対応しないと判定したブロックそれぞれが示す領域を、車外の風景が撮影された領域である領域Aとして決定する。
S404の処理により、制御部101は、撮像装置100により撮影された映像内の領域を、領域Aと領域Bとに分割する。
図6(b)に、映像が領域Aと領域Bとに分割された様子の一例を示す。
【0023】
S405において、制御部101は、ゆれ補正部114を介して、領域Aに対するゆれの補正処理を行う。本実施形態では、未加工映像である映像データ内の領域には、予め加工映像とするための部分(
図2(a)の映像200における点線の矩形領域)が定められているとする。制御部101は、例えば、以下のような処理を行うことで、領域Aに対するゆれの補正処理を行う。即ち、制御部101は、S401でフレームメモリに記憶した未加工映像である映像データ(t)内の領域Aにおいて、加工映像となる領域として予め定められた領域に含まれる領域を特定する。制御部101は、映像データ(t)内の特定した領域を、映像データ(t)内で、S402で領域Aについて検出した動きベクトルが示す方向にその動きベクトルが示す距離だけ移動させた領域を、ゆれが補正された加工映像内の領域Aとなる領域として特定する。そして、制御部101は、S401で生成した原映像中の領域Aに対応する領域について、各ピクセルのピクセル値を、特定した領域の画像と同様の値とする。
S406において、制御部101は、ゆれ補正部114を介して、領域Bに対するゆれの補正処理を行う。制御部101は、例えば、以下のような処理を行うことで、領域Bに対するゆれの補正処理を行う。即ち、制御部101は、S401でフレームメモリに記憶した未加工映像である映像データ(t)内の領域Bにおいて、加工映像となる領域として予め定められた領域に含まれる領域を特定する。制御部101は、映像データ(t)内の特定した領域を映像データ(t)内で、S402で領域Bについて検出した動きベクトルが示す方向にその動きベクトルが示す距離だけ移動させた領域を、ゆれが補正された加工映像内の領域Bとなる領域として特定する。そして、制御部101は、S401で生成した原映像中の領域Bに対応する領域について、角ピクセル値を、特定した領域の画像と同様の値とする。
【0024】
S405〜S406の処理により、S401で生成された原映像は、ゆれが補正された加工映像となっている。制御部101は、このゆれが補正された加工映像を、メモリ102、記録媒体103に記憶する。
本実施形態では、制御部101は、S405の処理の後に、S406の処理を実行した。しかし、制御部101は、S406の処理の後に、S405の処理を実行してもよいし、S405の処理とS406の処理とを並行して実行することとしてもよい。
また、制御部101は、領域Aと領域Bとのうち、指定された方のみに対して、ゆれを補正する処理を行うこととしてもよい。例えば、制御部101は、領域Bのゆれ補正の量を0とする(ゆれ補正を行わないことと等価)ことで、撮像装置100により撮影された設置自動車の部分(ダッシュボード部分)がゆれており、車外の風景がゆれていない映像を生成できる。これにより、撮像装置100は、臨場感のある映像を生成できるといった効果を奏することができる。
S407において、制御部101は、撮像装置100の電源がOFFにされたか否かを判定する。制御部101は、撮像装置100の電源がOFFにされたと判定した場合、
図4の処理を終了し、撮像装置100の電源がOFFにされていないと判定した場合、S401の処理に進む。
【0025】
以上、本実施形態では、撮像装置100は、撮像装置100により撮影された映像から動きベクトルを検出し、センサ部106を介して撮像装置100の設置自動車に対するゆれ情報を検出した。撮像装置100は、検出した動きベクトルとゆれ情報とに基づいて、撮像装置100により撮影された映像内の各ブロックの領域を領域A、Bの何れであるかを判定した。そして、撮像装置100は、領域A、Bそれぞれに対して、その領域に対応する補正処理を行った。これにより、撮像装置100は、映像内の複数の領域でそれぞれ異なるゆれが生じる場合、映像を適切に補正することができる。
【0026】
<実施形態2>
実施形態1では、撮像装置100は、撮像装置100の設置自動車に対するゆれを検出した。本実施形態では、撮像装置100は、センサ部106、ゆれ検出部112を介して、撮像装置100の設置自動車に対するゆれと、設置自動車のゆれと、を検出する。
本実施形態の撮像装置100のハードウェア構成と機能構成とは、実施形態1と同様である。また、撮像装置100の処理は、
図4に示す処理と同様であるが、S403〜S404の処理が実施形態1と異なる。
【0027】
本実施形態では、撮像装置100は、S403で、撮像装置100の設置自動車に対するゆれと、このゆれよりもより低周波なゆれである設置自動車自体のゆれを検出する。設置自動車自体のゆれは、撮像装置100により撮影された映像内では、ガラス越しの車外の風景部分のゆれとして見えることとなる。
本実施形態では、このように撮像装置100が複数のゆれを検出した場合の処理について実施形態1と異なる点について説明する。
制御部101は、S403で、センサ部106、ゆれ検出部112を介して、設置自動車に対する撮像装置100のゆれ、設置自動車自体のゆれを検出する。本実施形態では、制御部101は、設置自動車の底面に対して垂直方向の撮像装置100のゆれ、設置自動車の底面に対して垂直方向の設置自動車のゆれを検出する。制御部101は、検出した撮像装置100、設置自動車のゆれの情報をゆれ情報としてメモリ102に記憶する。
図7(b)に、本実施形態のS403で検出されたゆれの一例を示すグラフを示す。
図7(b)のグラフの縦軸は、ゆれの大きさを示し、横軸は、時間を示す。
図7(b)には、比較的低周波のゆれと、比較的高周波のゆれと、が重畳された波形が示されている。ここで、比較的低周波のゆれは、設置自動車自体のゆれであり、比較的高周波のゆれは、撮像装置100の設置自動車に対するゆれであると仮定する。
【0028】
制御部101は、例えば、検出したゆれの波形データを、フーリエ変換することで、周波数領域のデータに変換する。そして、制御部101は、変換したデータのうち、予め定められた閾値以上の周波数のデータを、フーリエ逆変換することで、設置自動車に対する撮像装置100のゆれを示すゆれのデータを取得する。また、制御部101は、変換したデータのうち、予め定められた閾値未満の周波数のデータを、フーリエ逆変換することで、設置自動車自体のゆれを示すゆれのデータを取得する。これにより、制御部101は、
図7(b)のゆれのデータを、設置自動車に対する撮像装置100のゆれのデータと、設置自動車自体のゆれのデータと、に分離できる。
図7(c)に、分離された設置自動車に対する撮像装置100のゆれの一例を示すグラフを示す。
図7(c)のゆれは、
図7(a)と同様のゆれである。また、
図7(d)に、分離された設置自動車自体のゆれの一例を示すグラフを示す。
図7(d)のゆれは、
図6の領域Aのゆれに対応するゆれと仮定できる。
【0029】
また、本実施形態では、制御部101は、S404で、S402で検出した動きベクトルと、S403で検出したゆれを示すゆれ情報と、に基づいて、領域判定部113を介して、映像内の領域を複数の領域に分割する。
より具体的には、制御部101は、例えば、撮像装置100により撮影された映像を、予め定められた複数のブロックに分割する。そして、制御部101は、分割したブロックごとに、そのブロック内の動きベクトルが、設置自動車に対する撮像装置100のゆれ又は設置自動車自体のゆれと、対応するか否かを判定する。
制御部101は、例えば、ブロックごとに、領域判定部113を介して、以下のような処理を行う。即ち、制御部101は、ブロック内の動きベクトルの向きと、設置自動車に対する撮像装置100のゆれの向きと、が反対であるか否かを判定する。そして、制御部101は、反対でないと判定した場合、ブロック内の動きベクトルと、設置自動車に対する撮像装置100のゆれと、が対応しないと判定する。
また、制御部101は、ブロック内の動きベクトルの向きと、設置自動車に対する撮像装置100のゆれの向きと、が反対であると判定した場合、以下の処理を行う。即ち、制御部101は、ブロック内の動きベクトルの大きさと、設置自動車に対する撮像装置100のゆれの大きさに予め定められた値を乗じた値と、の差分が予め定められた閾値以下であるか否かを判定する処理を行う。制御部101は、この差分が予め定められた閾値より大きいと判定した場合、ブロック内の動きベクトルと、設置自動車に対する撮像装置100のゆれと、が対応しないと判定する。また、制御部101は、この差分が予め定められた閾値以下であると判定した場合、ブロック内の動きベクトルと、設置自動車に対する撮像装置100のゆれと、が対応すると判定する。
【0030】
また、制御部101は、例えば、ブロックごとに、領域判定部113を介して、以下のような処理を行う。即ち、制御部101は、ブロック内の動きベクトルの向きと、設置自動車自体のゆれの向きと、が反対であるか否かを判定し、反対でないと判定した場合、ブロック内の動きベクトルと、設置自動車自体のゆれと、が対応しないと判定する。
また、制御部101は、ブロック内の動きベクトルの向きと、設置自動車自体のゆれの向きと、が反対であると判定した場合、以下の処理を行う。即ち、制御部101は、ブロック内の動きベクトルの大きさと、設置自動車自体のゆれの大きさに予め定められた値を乗じた値と、の差分が予め定められた閾値以下であるか否かを判定する処理を行う。制御部101は、この差分が予め定められた閾値より大きいと判定した場合、ブロック内の動きベクトルと、設置自動車自体のゆれと、が対応しないと判定する。また、制御部101は、この差分が予め定められた閾値以下であると判定した場合、ブロック内の動きベクトルと、設置自動車自体のゆれと、が対応すると判定する。
そして、制御部101は、ブロック内の動きベクトルと、設置自動車に対する撮像装置100のゆれと、が対応すると判定したブロックそれぞれが示す領域を、設置自動車が撮影された領域である領域Bとして決定する。また、制御部101は、ブロック内の動きベクトルと、設置自動車自体のゆれと、が対応すると判定したブロックそれぞれが示す領域を、車外の風景が撮影された領域である領域Aとして決定する。
【0031】
以上、本実施形態の処理により、撮像装置100は、撮像装置100により撮影された映像内の領域を、より適切に、分割できる。これにより、撮像装置100は、より適切にゆれの補正を行うことができる。
【0032】
<実施形態3>
本実施形態では、撮像装置100が時系列上で予め定められた間隔(Δt)で撮影された3以上の複数の映像の比較により検出される複数の動きベクトルに基づいて、撮影された映像の領域を分割し、分割した領域ごとにゆれを補正する処理について説明する。
本実施形態の撮像装置100のハードウェア構成と機能構成とは、実施形態1と同様である。また、撮像装置100の処理は、
図4に示す処理と同様であるが、S402、S404の処理が実施形態1と異なる。
【0033】
図8(a)には、設置自動車内に乗車している人が動いて、手等が映像に映り込んだ状況が示されている。例えば、
図8(a)で手が上に動いたときに検出される動きベクトルは、
図8(b)に示されるようになる。
図8(b)の矢印801は、設置自動車に乗車している人の手の動きによって検出された上向きの動きベクトルである。矢印801の動きベクトルは、映像中で設置自動車が撮影されている領域における他の動きベクトルとは向きが異なっていることが分かる。この際、実施形態1と同様にS404の領域判定処理が行われると、矢印801の動きベクトルに対応する領域は、ゆれ情報と動きベクトルが異なるため、領域Bと見なされなくなり、領域Aと判定されてしまう。
この状態でゆれの補正処理が行われると、矢印801の動きベクトルに対応する領域は、領域Aとしてゆれが補正されてしまうため、正しく補正されず、違和感のある映像となってしまう。また、矢印801の動きベクトルに対応する領域は、設置自動車内にいる人の領域であり、ダッシュボード等の車内の一部が映り込んでいるものと同等の領域として、領域Bと判別してゆれ補正する方が望ましい。
矢印801の動きベクトルが他の領域Bにおける動きベクトルと一致しない期間は、手が動いている期間という一時的な期間となる。一方、手が動いていないときはダッシュボードと同様に他の領域Bと同じようなゆれが発生する。そのため、その際の領域Bに対応する動きベクトルは、
図6(a)に示すように全て同じ動きベクトルとなる。
そこで、本実施形態では、撮像装置100は、一時的に動きベクトルが変動した領域があった際に、その領域を、変動前の動きベクトルに対応する領域として判定する処理を行う。
【0034】
図5(b)は、本実施形態におけるS402での制御部101による動きベクトル検出処理の一例を説明する図である。
S401の処理において映像データ(t)が取得されたとする。また、S402の処理の時点でフレームメモリ内に、映像データ(t)、映像データ(t―Δt)、・・・、〜、映像データ(t―(n−1)Δt)、映像データ(t―nΔt)のn+1個の映像データが記憶されているとする。nは、予め定められた2以上の整数であるとする
制御部101は、S402で、フレームメモリに記憶されている映像データ(t−kΔt)と映像データ(t−(k+1)Δt)と(0<=k<=n−1 k∈Z)から、映像データ(t−kΔt)における動きベクトルを検出する。以下では、映像データ(t−kΔt)と映像データ(t−(k+1)Δt)とから検出された動きベクトルを、動きベクトル(t−kΔt)とする。制御部101は、この処理を、kの値が{0、1、2、・・・、n−2、n−1}のそれぞれである場合について、行うことで、n個の動きベクトル(動きベクトル(t)〜動きベクトル(t−(n−1)Δt)を検出する。これにより、制御部101は、時刻tにおける動きベクトルだけでなく、過去n−1個の動きベクトルを取得したこととなる。即ち、制御部101は、時刻t以前のn個の動きベクトルを取得したこととなる。
【0035】
制御部101は、S404で映像内に予め設定された複数のブロックそれぞれについて、S402で取得された複数の動きベクトルに基づいて、そのブロックの領域を判定する。
制御部101は、例えば、ある時点におけるあるブロックに対応する動きベクトルが、予め定められた期間の間、同じ方向を向き、予め定められた閾値以下の大きさの変動しか起こしていない場合、以下の処理を行う。即ち、制御部101は、その動きベクトルを、その時点に置けるそのブロックに対応する最終的な動きベクトルとして決定する。また、制御部101は、その動きベクトルが、予め定められた期間の間、同じ方向を向き、予め定められた閾値以下の大きさの変動しか起こしていないわけではない場合、その動きベクトルを、最終的な動きベクトルとして決定しない。
この予め定められた期間を、th1とする。本実施形態では、th1を、3Δtとする。この場合、制御部101は、あるブロックに対応する動きベクトル(t)、動きベクトル(t−Δt)、動きベクトル(t−2Δt)、動きベクトル(t−3Δt)をフレームメから取得する。動きベクトル(t−Δt)、動きベクトル(t−2Δt)、動きベクトル(t−3Δt)は、それぞれ、向き、大きさが同じ動きベクトルであるとする。そして、制御部101は、動きベクトル(t)と、動きベクトル(t−Δt)〜(t−3Δt)と、の向きが一致するか否かを判定する。
【0036】
制御部101は、動きベクトル(t)と、動きベクトル(t−Δt)〜(t−3Δt)と、の向きが一致しないと判定した場合、動きベクトル(t)を最終的な動きベクトルとして決定せずに、以下の処理を行う。即ち、制御部101は、例えば、動きベクトル(t−Δt)〜(t−3Δt)の平均の動きベクトルを取得し、取得した動きベクトルを、時刻tにおけるそのブロックの最終的な動きベクトルとして決定する。
制御部101は、動きベクトル(t)と、動きベクトル(t−Δt)〜(t−3Δt)と、の向きが一致すると判定した場合、以下の処理を行う。即ち、制御部101は、動きベクトル(t)の大きさと、動きベクトル(t−Δt)〜(t−3Δt)の大きさの平均値と、の差分が、予め定められた閾値以下であるか否かを判定する。制御部101は、この差分が、予め定められた閾値以下であると判定した場合、動きベクトル(t)を、時刻tにおけるそのブロックの最終的な動きベクトルとして決定する。制御部101は、この差分が、予め定められた閾値よりも大きいと判定した場合、動きベクトル(t)を最終的な動きベクトルとして決定せずに、以下の処理を行う。即ち、制御部101は、例えば、動きベクトル(t−Δt)〜(t−3Δt)の平均の動きベクトルを取得し、取得した動きベクトルを、時刻tにおけるそのブロックの最終的な動きベクトルとして決定する。
【0037】
図9は、本実施形態のS404の処理の一例を説明する図である。上段には、あるブロックに対応するS402で検出された動きベクトルの時系列上の遷移が示される。
図9の上段には、時刻tで、動きベクトルの向きが、それまでの時刻における動きベクトルの向きから変動した様子が示される。
図9の矢印901は、時刻tにおける動きベクトルを示す。例えば、
図8で説明したように、人物の手の動き等が起こったと仮定できる。
図9の下段には、本実施形態のS404の処理により、矢印901が示す動きベクトルの代わりに、例えば、動きベクトル(t−Δt)〜(t−3Δt)の平均の動きベクトルが、最終的な動きベクトルとして決定された様子が示される。
【0038】
また、制御部101は、例えば、複数のブロックそれぞれについて、S402で取得されたn個の動きベクトルの平均を、最終的なそのブロックにおける動きベクトルとして決定してもよい。
また、制御部101は、例えば、複数のブロックそれぞれについて、S402で取得されたn個の動きベクトルの中間値を、最終的なそのブロックにおける動きベクトルとして決定してもよい。
また、制御部101は、例えば、複数のブロックそれぞれについて、S402で取得されたn個の動きベクトルそれぞれの向きを特定し、最も多くの動きベクトルの向きとなった方向を特定する。そして、制御部101は、S402で取得されたn個の動きベクトルのうち、特定した向きを向いている動きベクトルを特定し、特定した動きベクトルの平均の動きベクトルを、最終的なそのブロックにおける動きベクトルとして決定してもよい。
そして、制御部101は、決定した最終的な動きベクトルに基づいて、実施形態1と同様の処理で、各ブロックの領域の判定を行う。
【0039】
以上、本実施形態の処理により、撮像装置100は、映像内に一時的なゆれが発生した場合でも、より安定して映像内のゆれを補正することができる。
【0040】
<実施形態4>
本実施形態では、撮像装置100が、バイク、自転車等に設置された場合の撮像装置100の処理について説明する。
本実施形態の撮像装置100のハードウェア構成と機能構成とは、実施形態1と同様である。また、撮像装置100の処理は、
図4に示す処理と同様であるが、S403の処理が実施形態1〜3と異なる。
バイク、自転車等の特徴として、カーブを曲がる際に、車体が傾くことがあげられる。
図10(a)はバイク、自転車等のタイヤの側面に撮像装置100が設置された場合に、撮像装置100により撮影された撮影映像の一例を示す図である。
図10(a)の例では、タイヤ1000の一部を含んで背景が撮影される。この場合、実施形態1と同様のS404の処理が行われると、タイヤの部分が領域Bと判定され、それ以外の部分が領域Aと判定されることとなる。本実施形態では、制御部101は、S403で、バイク、自転車等の底面に対して垂直方向のバイク、自転車等に対する撮像装置100のゆれを検出する。また、制御部101は、S403で、バイク、自転車等の底面に対して垂直方向のバイク、自転車等自体のゆれも検出してもよい。
【0041】
図10(b)は、バイク、自転車等がカーブを曲がる際に、車体が傾いた場合に撮像装置100により撮影された映像の一例を示す図である。撮像装置100は、車両に設置されているため、映像内でのタイヤ1000の位置は変わらない。また、車両と併せて撮像装置100も傾くため、背景部分の映像は傾いた映像となる。この場合にS402の処理で、撮像装置100により撮影された映像から検出される動きベクトルは、
図10(c)のようになる。一方、センサ部106に含まれるセンサの種類によっては、S403で取得されるゆれ情報には、回転方向のゆれ情報が含まれる場合がある。その場合、撮像装置100と撮像装置100が設置されているバイクや自転車の車両とは固定されているため、回転方向のゆれ情報は領域Bを判定する上では不要な情報である。また、この不要な情報を用いて、領域Bを判定すると誤った判定を行う原因となる可能性がある。
そこで、制御部101は、S403で、回転方向を除く方向その他の方向という予め定められた種類のゆれ情報は検出し、検出したゆれ情報に基づいて、撮像装置100により撮影された映像内の各ブロックの領域を判定することとする。
【0042】
以上、本実施形態では、撮像装置100は、回転方向を除く方向のように、予め定められた種類のゆれのみを検出し、検出したゆれ情報を撮像装置100により撮影された映像内の領域の分割に利用することとした。これにより、撮像装置100は、領域を、誤って判定する可能性を低減できる。
【0043】
<その他の実施形態>
実施形態1〜4では、撮像装置100は、自動車やバイクに設置されることとした。しかし、撮像装置100は、電車、船、ドローン、エレベータ、ビル、人、動物等の他のオブジェクトに設置されることとしてもよい。
実施形態1〜4では、撮像装置100が、撮像装置100により撮影された映像内のゆれを補正する処理を実行することとした。しかし、撮像装置100により撮影された映像を取得した撮像装置100と異なる情報処理装置が、撮像装置100により撮影された映像内のゆれを補正する処理を実行することとしてもよい。例えば、撮像装置100と接続する情報処理装置(例えば、パーソナルコンピュータ、自動車搭載型のコンピュータ、サーバ装置等)が、撮像装置100により撮影された映像内のゆれを補正する処理を実行することとしてもよい。その場合、その情報処理装置は、撮像装置100から撮像装置100により撮影された映像を取得し、取得した映像に基づいて、
図4の処理を実行することとなる。即ち、その情報処理装置の制御部が、その情報処理装置の記録媒体に記憶されたプログラムにしたがって処理を実行することで、
図1(b)の機能、
図4の処理等が実現されることとなる。
【0044】
実施形態1〜4では、撮像装置100は、センサ部106、ゆれ検出部112を介して検出されたゆれに基づいて、撮像装置100により撮影された映像内の領域を複数の領域に分割した。しかし、制御部101は、例えば、センサ部106、ゆれ検出部112を介して検出されたゆれを用いずに、以下のようにして、撮像装置100により撮影された映像内の領域を複数の領域に分割してもよい。即ち、制御部101は、例えば、S402で、予め定められた複数のブロックごとに検出された複数の動きベクトルを、ベクトルの向きと大きさとに基づいて、k−means法、最短距離法、最長距離法、ウォード法等の手法を用いて、クラスタリングする。そして、制御部101は、同一のクラスタに属する動きベクトルに対応するブロックが示す領域を、同一のゆれが生じている領域として特定することで、撮像装置100により撮影された映像内の領域を複数の領域に分割してもよい。その場合、制御部101は、S405〜406で、各領域に対応する動きベクトルに基づいて、ゆれを補正する処理を実行する。
この場合、制御部101は、この複数の動きベクトルを、3以上の複数のクラスタにクラスタリングしてもよい。それにより、制御部101は、撮像装置100により撮影された映像内の領域を3以上の領域に分割することができる。これにより、撮像装置100により撮影された映像内に3以上の異なるゆれが生じる場合であっても、撮像装置100は、適切にゆれを補正することができる。
【0045】
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読み出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
例えば、上述した撮像装置100の機能構成の一部又は全てをハードウェアとして撮像装置100に実装してもよい。
以上、本発明の好ましい実施形態について詳述したが、本発明は係る特定の実施形態に限定されるものではない。上述した各実施形態を任意に組み合わせてもよい。