(58)【調査した分野】(Int.Cl.,DB名)
前記決定ステップは、前記カメラに関連付けられた動きセンサからサンプルを受信するステップを含み、前記サンプルは、前記エンコードされたビットストリームにおいて提供される、請求項1記載の方法。
前記イメージは、複数のイメージプレーンを含み、前記複数のイメージプレーンはそれぞれ、それぞれの複数のピクセル値と、前記イメージプレーンの第1ピクセルの位置を示すそれぞれのポインタと、前記イメージプレーンの幅を示すそれぞれの幅値と、によって表され、前記複数のイメージプレーンは、前記ストライド値を調整することなく、前記それぞれのポインタ及び前記それぞれの幅値を調整することによって、ともにシフトされる、請求項1記載の方法。
【発明の概要】
【発明が解決しようとする課題】
【0004】
上述したように、動きベクトルに基づいて、イメージの安定化を実行するためには、膨大な処理リソースが必要となり得る。ビデオ信号がリアルタイムで安定化されるべき場合において、すなわち、ビデオ信号がカメラによりキャプチャされると同時に、ビデオ信号の安定化されたバージョンが使用されるべき場合(例えば、テレビ電話において伝送される、又はデバイスから出力される場合)において、これは問題となり得る。
【課題を解決するための手段】
【0005】
上述した開示は、符号化及び伝送の前にビデオ信号を安定化することについて説明している。
【0006】
発明者らは、通信システムの受信側でビデオの安定化を達成することにより、重要な利点を得ることができることを認識した。
【0007】
本発明の第1の観点に従うと、カメラによって生成され、エンコードされたビットストリームとして伝送されるビデオ信号を安定化する方法が提供される。本方法は、
前記エンコードされたビットストリームを受信するステップと、
前記エンコードされたビットストリームから、前記ビデオ信号の複数のフレームをデコードするステップと、
前記エンコードされたビットストリームから、前記カメラの動きのインジケーションを決定するステップと、
前記動きのインジケーションを使用して、前記カメラによりキャプチャされた連続するフレーム間における前記カメラの変位を決定するステップと、
前記決定された変位を使用して、前記連続するフレーム間のデコードされたビデオ信号における、前記カメラの前記動きにより生じる動きを補償することにより、前記デコードされたビデオ信号を安定化する安定化ステップと、
を含む。
【0008】
本発明の第2の観点により、ビデオ信号を安定化する装置が提供される。本装置は、
エンコードされたビットストリームを受信するよう構成されたインタフェースと、
前記エンコードされたビットストリームから、前記ビデオ信号の複数のフレームをデコードするよう構成されたデコーダと、
前記エンコードされたビットストリームにおいて受信された動きのインジケーションを使用して、カメラによりキャプチャされた連続するフレーム間における前記カメラの変位を決定するよう構成された変位決定部と、
前記決定された変位を使用して、前記連続するフレーム間のデコードされたビデオ信号における、前記カメラの動きにより生じる動きを補償するよう構成され、前記デコードされたビデオ信号を安定化する動き補償部と、
を備える。
【0009】
動きのインジケーションは、動きベクトルに基づいてデコードすることができる。本発明のこのような実施形態は、ビデオ信号を伝送するエンコードされたビットストリームは受信側でフレームを生成することを可能にする動きベクトルを含む、という事実を利用する。効率化のために、こうした動きベクトルを使用してビデオ信号をエンコードし、ビデオ信号のありとあらゆるフレームをエンコードする必要性を回避する。当技術分野で知られているように、ビデオ信号は、基準フレーム及び動きベクトルとともにエンコードされる。これにより、基準フレーム及び動きベクトルから、中間フレームを生成することが可能になる。
【0010】
受信側でビデオ信号を安定化することにより、動きベクトルの複雑さを使用することを、本質的に排除することができる。デコーダの安定化は、演算的な複雑さをほとんど伴わない。というのは、ビットストリームにおける既知の動きベクトルを再使用する場合において、最もコストの高いステップ(動き推定)が除去されるからである。ビデオ信号をキャプチャするカメラは小さなモバイルデバイスであることが意図されているが、ビデオ信号が例えばネットブック、ラップトップ、又はパーソナルコンピュータという形態のより大きな処理能力を有するユーザ端末に伝送される場合において、これは有用であり得る。
【0011】
一般に、フレームは、複数のブロックを表すマクロブロックを含むブロックに分割される。動きベクトルは、基準フレームにおけるマクロブロックの位置と比較した、中間フレームにおけるマクロブロックの位置を定義する。
【0012】
別の重要な利点は、本発明の実施形態が既存のエンコードされたビデオ信号とともに動作することである。本発明の実施形態は、ビデオ信号をエンコードするために従来から使用されている動きベクトルを使用することができるので、送信側は、受信側で実行される安定化を認識する必要がない。したがって、本発明の実施形態は、カメラソフトウェア及び他のビデオ信号生成クライアントの既存のバージョンとともに動作することができる。
【0013】
本方法は、前記カメラに関連付けられた動きセンサを使用して、前記カメラの前記動きを表す複数のサンプルを生成するステップと、前記サンプルを使用して、前記ビデオ信号の第1フレームと前記ビデオ信号の第2フレームとの間の前記カメラの変位を決定するステップであって、前記決定された変位は、ピクセル変位を決定するために使用される、決定するステップと、をさらに含んでもよい。
【0014】
すなわち、動きのインジケーションは、カメラに関連付けられた、カメラの動きを表す複数のサンプルを生成する動きセンサから提供されるサンプルから決定することができる。動きセンサは、ジャイロスコープ型の動きセンサであってよい。装置は、モバイルデバイスであってよい。
【0015】
動きセンサを用いて生成されるサンプルのサンプリングレートは、ビデオ信号のフレームレートよりも高くてよい。さらに、カメラ及び動きセンサは、モバイルデバイスの内部に存在してもよい。
【0016】
前記安定化ステップは、前記ビデオ信号における、第1フレームと第2フレームとの間の、前記カメラの前記決定された変位によって生じる動きを表すピクセル変位を決定するステップと、前記ピクセル変位をフィルタするフィルタステップと、前記フィルタされたピクセル変位にしたがって、前記第1フレーム及び前記第2フレームの少なくとも1つのイメージをシフトすることにより、前記ビデオ信号を安定化するステップと、を含んでもよい。前記フィルタステップは、前記第2フレームに関する前記決定されたピクセル変位に基づいて、蓄積ピクセル変位(accumulated pixel displacement)を決定するステップと、前記第2フレームに関する前記決定された蓄積ピクセル変位と、前記第1フレームに関するフィルタされた蓄積ピクセル変位との重み付けした和に基づいて、前記第2フレームに関するフィルタされた蓄積ピクセル変位を決定するステップと、を含んでもよい。
【0017】
受信されるフレームは、第1フレームに続いてもよい。しかしながら、受信側で安定化を実行することのさらなる利点は、受信側のジッタバッファにおいて適用することができる遅延の機会を利用することができること、すなわち、第2フレームが、第1フレームに続く次のフレームではなく、受信側で先に受信され遅延されるフレームとなり得るよう、意図的に導入される遅延の機会を利用することができることである。
【0018】
本方法は、キャプチャされた複数のフレームのタイミングが、生成された複数のサンプルのタイミングに一致するように、(i)前記キャプチャされた複数のフレーム、及び、(ii)前記生成された複数のサンプルのうちの少なくとも1つに、タイムオフセットを付加するステップをさらに含んでもよい。
【0019】
本方法は、前記ピクセル変位に従って、前記連続するフレームの少なくとも1つのイメージをシフトすることにより、前記ビデオ信号を安定化するステップであって、前記イメージは、前記イメージのメモリスペースを示すストライド値と、複数のピクセル値と、前記イメージの第1ピクセルの位置を示すポインタと、前記イメージの幅を示す幅値とを含み、前記イメージを前記シフトすることは、前記ストライド値を調整することなく、前記ポインタ及び前記幅値を調整することを含む、安定化するステップを含んでもよい。
【0020】
このようにして、ストライド値を一定にしたままポインタ及び幅値を単に変更することによって、イメージをシフトしリサイズすることができる。このように、メモリにおけるデータのコピーは必要ない。すなわち、(複雑なプロセスとなり得る)クロップ領域(crop area)を新たなメモリ領域にコピーすることをしないで、独立した幅値とストライド値とを許容するイメージの表現が使用される。このようにして、ストライドに手を付けることがないままポインタ及び幅値を変更することによって、新たなイメージを生成することができる(これは、クロップ領域を新たなメモリ領域にコピーすることよりも単純なプロセスである)。
【0021】
前記イメージは、個別の複数のピクセル値と、イメージプレーン(image plane)の第1ピクセルの位置を示す個別のポインタと、前記イメージプレーンの幅を示す個別の幅値とによってそれぞれ表される複数のイメージプレーンを含んでもよく、前記複数のイメージプレーンは、ストライド値を調整することなく、前記個別のポインタ及び前記幅値を調整することによって、ともにシフトされてもよい。
【0022】
本方法は、前記決定されたピクセル変位を整数ピクセル変位(integer-pixel displacement)に丸めるステップをさらに含んでもよい。
【0023】
本発明の第3の観点に従うと、ビデオ信号を安定化するコンピュータプログラム製品が提供される。本コンピュータプログラム製品は、非トランジトリなコンピュータ読み取り可能な媒体に具現化され、デバイスのプロセッサにおいて実行された場合、本明細書で説明する方法のいずれかの動作を実行するよう構成される。
【発明を実施するための形態】
【0025】
本発明をより良く理解し、本発明をいかにして実行することができかを示すために、例として、図面が参照される。
【0026】
例示のみを目的として、好適な実施形態について説明する。
【0027】
図1は、ビデオ信号を生成するデバイス100を示している。デバイス100は、移動電話又は他のハンドヘルドデバイスなどの、例えば、モバイルデバイスとすることができる。デバイス100は、カメラ102、動きセンサ104、CPU106、及びメモリ108を備える。カメラ102は、イメージをキャプチャするよう構成されている。キャプチャされたイメージを使用して、ビデオ信号を形成することができる。それによって、各イメージは、ビデオ信号のフレームとして使用され、イメージは、ビデオ信号のフレームレートでキャプチャされる。フレームレートは、例えば、25フレーム/秒とすることができるが、カメラは、異なるフレームレートで動作してもよい。動きのあるイメージを認知する最低限のフレームレートは、約15フレーム/秒であるが、これは、ビデオ信号を見ている人と、ビデオ信号に含まれるコンテンツ(すなわち、ビデオ信号の対象物における動きの量)とに依存し得る。CPU106は、当技術分野で知られているように、デバイス100において演算プロセスを実行するよう構成されている。メモリ108は、当技術分野で知られているように、デバイス100においてデータを記憶するために使用される。ブロック102、ブロック104、ブロック106、及びブロック108は、当技術分野で知られているように、デバイス100のバス(
図1には示されていない)を介してデータを送信することによって、互いに通信することができる。詳細には、CPU106は、ビデオフレームを、カメラからインタフェース107を介して伝送するための適切なビットストリーム109にエンコードする役割を果たす。インタフェース107は、有線であってもよいし、又は無線であってもよい。いくつかの実施形態では、ビットストリーム109は、パケットベースのネットワークを介してビデオ信号を受信して見る受信側デバイスに供給されるパケットの形態で伝送するために、準備することができる。受信側デバイスについては、以下でより詳細に説明する。
【0028】
カメラ102は、ビデオ信号のフレームとして使用されることになるイメージをキャプチャする。例えば、カメラ102は、光センサのアレイを有してもよい。光センサは、ビデオ信号のフレームに割り当てられた時間の間、センサに入射する光のレベルを記録する。各フレームの間、カメラ102のシャッタが、ある時間の間開いている状態であり、且つ別の時間の間閉じられた状態であるように、カメラ102のシャッタが、時間単位でフレームを区切るために使用される。キャプチャされたビデオ信号のフレームは、(例えば、CPU106により処理部に実装された)プリプロセッサに供給される。プリプロセッサは、当技術分野で知られているように、ビデオ符号化技術を用いて、ビデオ信号のフレームをエンコードするように動作する。そのようなビデオ符号化技術では、基準フレーム及び動きベクトルを含むエンコードされたビットストリームが生成される。動きベクトルは、ビデオイメージの基準フレームと中間フレームとの間の、ブロック又はマクロブロックの変位を表す。中間フレームは、前のフレームであってもよいし、又は、後のフレームであってもよい。また、中間フレームは、隣接していてもよいし、又は、隣接していなくてもよい。符号化の効率化のため、本来、ビデオイメージの全てのフレームが、伝送のために準備されているわけではない。そうではなく、基準フレームが、動きベクトルとともに伝送され、これにより、基準フレーム及び動きベクトルから、中間フレームを生成することが可能となる。動きベクトルは、フレーム間のピクセル変位を表す情報を含む。フレームは、1以上の動きベクトルを用いて表すことができる。フレームがブロック又はマクロブロックに分割される場合、各ブロック又は各マクロブロックは、動きベクトルに関連付けることができる。
【0029】
図2は、受信側デバイスの概略的なブロック図である。受信側デバイスは、エンコードされたビットストリーム109を受信するためのインタフェース207、ビットストリームを処理するプロセッサ206、及び、デコードされたビットストリームを受信して表示するディスプレイ211を備える。インタフェース107と同様、インタフェース207は、パケットベースであり得る任意の有線ネットワーク又は無線ネットワークとインタフェースをとることができる。これは、CPU206による処理のために準備された、ビデオビットストリームにおける連続するフレームを受信するためのバッファリングを含むことができる。
【0030】
図2Aは、ビデオイメージの安定化に関するデコードプロセスにおけるステップを示す概略的な機能ブロック図である。当技術分野で知られているように、ビデオストリームのデコードプロセスにおいて、他のステップも存在し得ることが容易に理解されよう。
【0031】
ビットストリーム109は、デコード機能201に供給される。デコード機能201は、ビットストリーム109における基準フレーム及び動きベクトルを受信して、中間フレームを生成するために動きベクトルを用い、カメラによるキャプチャ時点で生成されたフレームを表す一連のフレームであるデコードされたイメージを提供する。このデコードされたイメージをディスプレイで見ることもできるが、本発明の実施形態では、このデコードされたイメージが、まず、安定化の対象となる。デコードされたイメージは、動きベクトルとともに、ピクセル変位機能(pixel displacement function)203に供給される。ピクセル変位機能203は、動きベクトルから、カメラの動きを表すピクセル変位を導出する。このピクセル変位は、例えば、フレーム内の全ての動きベクトルのメディアンとして、直接的に導出することができることが理解されよう。しかしながら、他のフレーム情報を用いることで、グローバルな動き推定を向上させることが可能である。例えば、動き情報が不確かな領域(例えば、通常はきわめてランダムな動きベクトルフィールドを生成する何らかのノイズを含む平坦領域)を判定することである。
【0032】
ブロック203により決定されるピクセル変位は、ビデオ信号のフレームのイメージにおける、カメラ102の動きの結果生じる動きを表すものである。(この動きは、イメージの対象物における動きではない。)
【0033】
フィルタブロック205において、ピクセル変位がフィルタされる。このフィルタリングは、スムーズなカメラの動きを維持するとともに、高周波の動き(シェイキング(shaking))を取り除く。このようにして、動きが平滑化される。次いで、イメージは、この平滑化されたバージョンにアラインされる。イメージ安定化プロセスにおいてビデオ信号に適用される変化は平滑化されない。というのは、そのような変化は、大まかにシェイキングを表しているからである(逆方向ではあるが)。ピクセル変位をフィルタするために使用されるフィルタは、例えば、カメラ102によりキャプチャされたイメージの解像度、ビデオ信号に適用され得る許容遅延(acceptable delay)、及び、元のビデオ信号のイメージに適用することができるクロッピング(cropping)の許容量に応じて、様々な形で設計することができる。例えば、高解像度のビデオフレームは、イメージ安定化プロセスにおいて適用されるピクセル変位に対する高周波の変化の大きなフィルタ減衰から利益を得ることができる。一方、クロッピングの量は、ハード限界(hard limit)を最大のフィルタ減衰に設定する。
【0034】
次式に従ってピクセル変位をフィルタする指数関数的フィルタが使用されてもよい。
【0035】
【数1】
ここで、nは、ビデオ信号のフレームの数を表し、xは、ブロック203において決定されたピクセル変位に従う、蓄積変位(又は「位置」)を表し、x_filtは、フィルタされた蓄積変位を表す。フィルタされた蓄積変位は、以下でさらに詳細に説明されるように、入力イメージを安定化するために、引き続き使用されて、入力イメージをいかにしてアラインさせるかが決定される。このようにして、このフィルタは、指数関数的フィルタとして動作する。動きが止まった場合、x_filt−xは、イメージがシフトされないことを暗示するゼロに収束する。このフィルタは、フィルタされるピクセル変位をブロック203において現在のフレームに関して決定されたピクセル変位とともに以前のフレームに関する対応するフィルタされたピクセル変位に基づくものにすることによって、時間とともに、決定されたピクセル変位に変化を平滑化する。以前のフレームに関するフィルタされたピクセル変位に適応される重みが(1−w)であるのに対し、現在のフレームに関して決定されたピクセル変位に適応される重みはwである。したがって、重みパラメータwを調整することによって、ピクセル変位(x)における変化に対して、フィルタがいかに反応が早いかが調整される。出力x_filtが範囲[x−crop,x+crop]にクリップされる場合においては、クリップされた値がフィルタループにフィードバックされ、且つその後の出力x_filtをクリップされにくくするので、再帰的な(無限インパルス応答(IIR))フィルタは、有限インパルス応答(FIR)フィルタよりも適している。
【0036】
重みパラメータwは、ヘルツの単位で測定される一定の物理的なカットオフ周波数を得るために、ビデオ信号の解像度と即時のフレームレートとに適合される。フィルタが理想的なフィルタであるならば、物理的なカットオフ周波数は、x_filtに組み込まれることになるxに対する変化における最高の周波数要素を定義することになるであろう。カットオフ周波数よりも高い周波数を有するxに対する変化は、理想的なフィルタによって減衰されることになり、x_filtにおいて存在しなくなる。しかしながら、フィルタは理想的なフィルタではなく、その結果、カットオフ周波数は、フィルタによって適用される減衰が3dB以下である最高の周波数を定義する。そのため、理想的ではないフィルタに関して、カットオフ周波数以下においては何らかの減衰が存在し、カットオフ周波数以上においては完全な減衰は存在しない。フィルタ出力はクリップされるので、x_filtとxとの差は、フレームのクロッピングサイズより大きくはない。物理的なカットオフ周波数が一定である、例えば、0.5Hzであるように、wは適合される。フィルタ伝達関数から、物理的なカットオフ周波数fcをwにマップする関数w(fc,fs)を導出することができる。サンプリング周波数(フレームレート)fsが変化する場合、fcが一定であっても、wも変化する。上記のフィルタ式に従うフィルタは、他のフィルタと比較して、カットオフ周波数の即時の変化(wの変化)に対してよく適している。
【0037】
動き補償ブロック207では、第2フレーム(フレーム2)のイメージが、ブロック205からのフィルタされたピクセル変位を用いてシフトされる。このようにして、(第1フレームと比較して、)カメラ102の動きに起因する第2フレームのイメージにおける動きが減衰される。すなわち、フィルタされたピクセル変位を使用して、第1フレーム及び第2フレーム間の、カメラの動きによって生じるビデオ信号における動きを補償することにより、ビデオ信号を安定化する。
【0038】
フィルタされたピクセル変位は、フルピクセル変位(full-pixel displacement)(すなわち、整数ピクセル変位)に丸められる。これにより、第2フレームのイメージをシフトするために、単純な方法を使用することが可能となる。イメージは、イメージのメモリスペースを示すストライド値、複数のピクセル値、イメージの第1ピクセルの位置を示すポインタ、及び、イメージの幅を示す幅値を用いて表される。イメージをシフトすることには、ストライド値を調整することなく、ポインタ及び幅値を調整することが含まれる。幅値はストライド値とは独立しており、それにより、イメージのストライドに影響を与えることなく、イメージの幅を変更することが可能となることが確認できよう。したがって、イメージがシフトされた場合(且つ/又はイメージがリサイズされた場合)において、(例えば、メモリ208における)デコードされたイメージのメモリスペースは、変更される必要がない。このことは、この手法によれば、メモリ208においてデータのコピーが必要ないことを意味する。これは、イメージのクロップ領域が新たなメモリ領域にコピーされる従来のイメージをクロッピングする方法とは対照的である。クロップ領域をコピーすることは、計算的に複雑であり得る。特に、この方法が、CPU206に利用可能な処理リソースが制限され得るモバイルデバイスにおいて実施される場合、これは問題となり得る。本明細書で説明する方法によれば、幅値はストライド値とは独立しているので、ストライドに手を付けることがないままポインタ及び幅を変更することによって、新たなシフトされたイメージを生成することができる。
【0039】
安定化が送信側で行われる場合、安定化及びクロッピングは、符号化の前に適用されることに留意されたい。
【0040】
安定化が受信側で行われる場合、クロッピングも受信側で行われなければならない。したがって、クロップされるピクセルは、エンコードされたストリームに含まれる。
【0041】
イメージは、複数のイメージプレーンによって表され得る。例えば、イメージは、1つの輝度プレーン(Y)と、2つの色差プレーン(U及びV)とによって表されてもよい。入力イメージのイメージプレーンは、輝度プレーン及び色差プレーンに対するポインタを単に変更することによって、シフトしリサイズすることができる。これによって、ストライドに手を付けることのないまま、イメージプレーンの幅を変更することができる。シフトされたイメージプレーンをともに使用してシフトされたイメージを表すことを確実にするために、イメージプレーンは、同じ量だけシフトされる。
【0042】
このイメージシフトプロセスを実施するために、イメージプレーンは、それぞれのポインタを必要とする。すなわち、全てのイメージプレーンは、同じ単一のポインタによって表すことができない。さらに、上述したように、イメージは、独立した幅値とストライド値とを有することが必要である。
【0043】
図3は、シフト及びクロッピングプロセス前後のイメージを表している。元のイメージは、302で表され、シフトされクロップされたイメージは、304で表されている。イメージのストライド値は変更されていないままであるのに対し、イメージの幅は低減されていることが確認できよう。さらに、元のポインタは、元のイメージの左上のピクセルを指しているのに対し、調整されたポインタは、シフトされクロップされたイメージの左上のピクセル(元のイメージの左上のピクセルとは位置が異なる)を指している。このようにして、イメージは、単に幅値及びポインタを変更することにより、シフトされクロップされる。
【0044】
例えば、
図2Aを参照しながら上述した方法を要約すると、受信されるビットストリームからデコードした後にビデオ信号のフレームのイメージを安定化するために、次の段階が受信側において実施される:
1.各フレームのイメージのピクセル変位が、ビットストリームにおいて受信された動きベクトルから導出される;
2.フィルタを一連のピクセル変位(又は、上述したように、蓄積ピクセル変位)に適用することにより、フレームのイメージにおける意図しない動きが取り除かれる;
3.フィルタによって算出された位置に、イメージをシフトすることによって、フレームの安定化されたイメージが生成される。フレームの安定化されたイメージのフレームディメンジョン(frame dimension)は、そのフレームの元のイメージの対応するディメンジョンと等しいか、又は小さい。すなわち、ビデオ信号の安定化されたイメージは、カメラ102によりキャプチャされたビデオ信号の元のイメージ内にある動きのある境界(moving border)を除外することにより、構成される。
【0045】
上述した実施形態では、フレームのピクセル変位が、エンコードされたビットストリームにおいて受信された動きベクトルから決定される。例えば、各フレームを次のフレームと比較することにより、デコードされたイメージのフレームから直接ピクセル変位を導出することによって、本発明の実施形態を実行することも可能である。
【0046】
さらなる実施形態では、エンコードされたビットストリームにおけるサイド情報によって、カメラの動きのインジケーションを供給することができる。例えば、サイド情報は、動きセンサ(例えば、
図1の動きセンサ104)からの情報を含み得る。動きセンサは、カメラ102を含むデバイス100の動きを表すサンプルを生成するよう構成される。
【0047】
例えば、動きセンサ104は、ジャイロスコープなどの回転型の動きセンサとしてもよい。ジャイロスコープ104は、デバイス100の角速度を測定し、特定の間隔で角速度を表すサンプルを出力する。間隔は、一定の間隔としてもよいし、又は、一定の間隔にしなくてもよい。必ずではないが、好ましくは、ジャイロスコープ104から出力されるサンプルの平均のサンプリングレートは、ビデオ信号のフレームレートよりも高い。例えば、ジャイロスコープ104から出力されるサンプリングレートは、60サンプル/秒とすることができる。これは、デバイス100の最大通常シェイキング周波数(maximum usual shaking frequency)の2倍であることを示しており、その時点でフレームレートとは独立している。ジャイロスコープ104によって生成されるサンプルは、ビットストリーム109において、ビデオ信号とともに伝送される。
【0048】
ビデオ信号の2つのフレーム(フレーム1及びフレーム2)間におけるカメラ102の角変位は、受信側で決定することができる。この決定は、CPU206の処理部により実行されてもよい。発明者らは、ジャイロスコープ104からのデータを用いて2つのフレーム間の角変位を効率的に決定するために、カメラ102によってキャプチャされたフレームの露出時間の中間点間における時間にわたって角速度を積分することが有用であることを確認した。発明者らはまた、特に次のような場合において、ジャイロスコープ104のサンプリングレートとカメラ102のフレームレートを同期することができないことがあるので、これが、特に問題となり得ることも確認した:
−(多くのカメラがそうであるように、)カメラ102が、利用可能な光に応じて露出時間を調整するよう構成されている;
−カメラ102によって提供されるビデオ信号のフレームのタイムスタンプが、シャッタが閉じる時間(すなわち、フレームの露出時間の中間点ではなく、フレームの終了時間)と関連している;
−ジャイロスコープのデータが、フレームの露出時間の中間点において利用できない。
【0049】
ピクセル変位機能203は、デコードされたビデオフレームを受信し、ジャイロスコープのサンプルも受信する。ジャイロスコープ104からのサンプルは、カメラ102によってキャプチャされたビデオ信号のフレームレートと少なくとも同等のレートで提供される。ジャイロスコープ104においてより高いサンプリングレートを用いると、より正確な角度推定が提供されるが、CPUの使用の観点から言うと、よりコストが高いものとなり得る。
【0050】
カメラ102によりビデオ信号の第1フレーム(フレーム1)に対して提供されたタイムスタンプt
1は、そのフレームの終了時間を示している。すなわち、タイムスタンプt
1は、フレーム1を終了するためにカメラ102のシャッタが閉じられる時間を示している。同様に、カメラ102によりビデオ信号の第2フレーム(フレーム2)に対して提供されたタイムスタンプt
2は、そのフレームの終了時間を示している。すなわち、タイムスタンプt
2は、フレーム2を終了するためにカメラ102のシャッタが閉じられる時間を示している。第1フレーム及び第2フレーム間のデバイス100の角変位(Δθ)を決定するために、フレームの時間を表すフレームの前記タイムスタンプを用いるのではなく、フレーム1及びフレーム2の露出時間の中間点を用いるのがより正確である。第1フレーム及び第2フレームの露出時間は、e
1及びe
2によって表される。角変位は、(ジャイロスコープ104から出力されるサンプルによって表される)デバイス100の角速度を、時間t
1−0.5e
1と時間t
2−0.5e
2との間で積分することによって、決定される。したがって、フレーム1及びフレーム2間の角変位は、次式によって与えられる。
【0051】
【数2】
タイムスタンプは、ビットストリーム109において、エンコードされたフレームとともに伝送される。
【0052】
図4は、時間経過に伴うカメラ102のシャッタ位置を例示的なグラフに表している。カメラ102のシャッタは、フレーム1の終了時に、時間t
1において閉じる。カメラ102のシャッタは、再度開いて、フレーム2をキャプチャし、その後、フレーム2の終了時に、時間t
2において閉じる。
図4において、フレーム1の露出時間は、e
1として示され、フレーム2の露出時間は、e
2として示されている。
図4において、角速度が積分される時間は、T
12で表されている。
図4を見ると、時間T
12にわたって積分することは、第1フレームの露出時間の中間点(時間t
1−0.5e
1)と、第2フレームの露出時間の中間点(時間t
2−0.5e
2)との間で積分することに相当する。
図4は、シャッタが開いている時間と、シャッタが閉じている時間とが等しいことを示しているが、これは一例に過ぎない。(短い露出時間を実施する)いくつかの実施形態では、シャッタが開いている時間は、シャッタが閉じている時間よりも短い。反対に、(長い露出時間を実施する)他の実施形態では、シャッタが開いている時間は、シャッタが閉じている時間よりも長い。
【0053】
ジャイロスコープ104のサンプルは、カメラ102によってキャプチャされたビデオ信号のフレームのタイミングとは同期していないので、ジャイロスコープ104が、フレーム(フレーム1及びフレーム2)の中間点でサンプルを生成しない場合もあり得る。そのような場合、フレームの中間点におけるデバイス100の角速度は、ジャイロスコープ104により生成されるサンプルによって表される角速度を補間することによって、決定することができる。角速度は、どの時点でも、補間により算出され、フレームの露出時間の中間点は、上記の式に従って角変位を算出する際に使用される積分区間を定義する。
【0054】
図5は、時間経過に伴うカメラ102の角速度を例示的なグラフに表している。ジャイロスコープ104によって生成されたデバイス100の角速度を表すサンプルは、サンプル502、サンプル504、サンプル506、サンプル508、及びサンプル510として、
図5で示されている。
図5で示された例においては、ジャイロスコープ104のサンプルのタイミングは定期的ではないことが理解できよう。例えば、サンプル504及びサンプル506間の時間は、サンプル506及びサンプル508間の時間よりも短い。
図5のサンプルを結ぶ点線は、ジャイロスコープ104により生成されたサンプルによって表される角速度を補間することで、時間の関数として決定することができる角速度の値を示している。(点線により示される)補間された角速度は、第1フレーム及び第2フレーム間におけるカメラ102の角変位を決定するために、時間(t
1−0.5e
1)と時間(t
2−0.5e
2)との間で積分することができる。
図5は、ジャイロスコープ104からのサンプル間における単純な線形補間を示している。他の実施形態では、より高度な補間が使用されてもよい。
【0055】
カメラ102で使用されるハードウェアの動作のタイミングと、ジャイロスコープ104で使用されるハードウェアの動作のタイミングとは、一致しない場合がある。これは、カメラ102及びジャイロスコープ104が、独立したハードウェアチップを用いて実装されていることに起因し得る。したがって、ジャイロスコープ104により生成されるサンプル及びビデオ信号のフレームのいずれか(又は両方)のタイムスタンプにオフセットを付加することが有用であり得る。このようにして、ジャイロスコープ104からのサンプルのタイミングを、ビデオ信号のフレームのタイミングに正確に一致させることができる。ハードウェアチップの特定の組合せに対して、オフセットは一定としてもよい。したがって、遅延をオフラインで算出し、本明細書で説明した方法に関して処理ペナルティを負うことなく、遅延をデバイス100において用いることができる。
【0056】
一般に、カメラ102の回転は、イメージ内のオブジェクトへの距離とは無関係に、ビデオ信号のフレームのイメージにわたって、概ね一定のピクセル変位を生じさせる結果となる。これは、ピクセル変位が、オブジェクトへの距離の関数である直線的なカメラの動きとは対照的である。デバイス100の回転をピクセル変位にマップする関数(又はアルゴリズム)は、(例えば、カメラ102の焦点距離及びレンズの幅といった)カメラ102のパラメータと、カメラ102によってキャプチャされたイメージの解像度とに依存する。
【0057】
いくつかの実施形態では、動きボケ(motion blur)がビデオ信号において存在する場合、イメージの安定化が低減されることがある。高レベルの動きがカメラ102によって認められる場合、ビデオにおいて動きボケが存在することになる。したがって、本明細書で説明したイメージの安定化が、ビデオ信号のフレームに適用される場合、結果として生じるビデオ信号は、動きボケを含むことになるが、動きを含まない。ユーザは、これを、不自然に、又は奇妙に見えるものとして認識するかもしれない。
【0058】
一実施形態において、カメラのシャッタが開いている時間(すなわち、ビデオ信号のフレームの露出時間)の間、例えば、時間[t
1−e
1,t
1]の間、カメラ102の動きの補償が行われない。露出時間が非常に短い場合(すなわち、シャッタが開いている時間が、シャッタが閉じている時間よりも非常に短い場合)、これは、大きな差を生み出さない。しかしながら、露出時間が非常に長い場合(すなわち、シャッタが開いている時間が、シャッタが閉じている時間よりも非常に長い場合)、イメージの安定化が、ビデオ信号に対してほとんど適用されない。このようにして、動きボケが、常にビデオ信号における対応する動きを有することが保証される。これにより、ビデオ信号の視聴者にとって、より自然に見えるものとして認識される。
【0059】
ジャイロスコープ104により生成されるサンプルからカメラの動きを決定すること、及び、シャッタスピードを決定することは、特に有用である。というのは、別の計算上の複雑さを伴うことなく、ビデオ信号が経験し得る動きボケの観点から、この情報を使用して、イメージの安定化を適用するかどうかを決定するからである。
【0060】
上述した実施形態において、動きセンサ104は、デバイス100の回転の動きを表すサンプルを生成するジャイロスコープ104である。他の実施形態では、動きセンサ104は、並進の動きなどの他の種類の動きをセンシングし、デバイス100の並進の動きを表すサンプルを生成してもよい。このようなサンプルを、回転の動きに関して上述したように同様に使用して、ビデオ信号を安定化することができる。しかしながら、上述したように、並進の動きでは、ピクセル変位は、イメージ内のオブジェクトへの距離に依存する。そのため、ピクセル変位を決定するに際し、このことが考慮されなければならない。例えば、複数の加速度計は、回転の動きを評価することができるが、この場合、さらなる修正なしに、加速度計を使用することができる。より一般的な並進の安定化では、本明細書で説明した方法を実施することはより難しいものとなり得る。というのは、イメージ内の様々な領域が、異なるピクセルの量だけ動くからである。しかしながら、オブジェクトへの距離が一定である場合(かつ、既知である場合)、並進の動きに対して本方法を実施するのは単純なものとなり得る。オブジェクトへの距離が一定でない(しかし、既知ではある)場合であっても、並進の動きに対して本方法を実施することは可能ではあるが、カメラ102の並進の動きによって生じるピクセル変位を決定するに際し、別の複雑さが付加される。
【0061】
図2Aに示した機能ブロックは、デバイス200において、ソフトウェア又はハードウェアにより、実装することができる。例えば、CPU206が、そうした機能を実装するために、処理部を実行してもよい。例えば、ビデオ信号を安定化するコンピュータプログラム製品が提供されてもよい。これは、メモリ208に記憶させて、CPU206により実行することができる。コンピュータプログラム製品は、CPU206において実行される場合において、ブロック203、ブロック205、及びブロック207の機能を実施する方法のステップを実行するよう構成することができる。あるいは、デバイス200において、ハードウェアブロックが実装されてもよい。
【0062】
さらに、好適な実施形態を参照しながら本発明が詳細に示され説明されたが、添付の特許請求の範囲により規定される本発明の範囲から逸脱することなく、形態及び細部に様々な変更を加えることができることが、当業者には理解されよう。