JP6605640B2 - 制約ベースの回転平滑化を介してデジタルビデオを安定化するためのシステムおよび方法 - Google Patents

制約ベースの回転平滑化を介してデジタルビデオを安定化するためのシステムおよび方法 Download PDF

Info

Publication number
JP6605640B2
JP6605640B2 JP2018020047A JP2018020047A JP6605640B2 JP 6605640 B2 JP6605640 B2 JP 6605640B2 JP 2018020047 A JP2018020047 A JP 2018020047A JP 2018020047 A JP2018020047 A JP 2018020047A JP 6605640 B2 JP6605640 B2 JP 6605640B2
Authority
JP
Japan
Prior art keywords
orientation data
camera
camera orientation
user
video
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2018020047A
Other languages
English (en)
Other versions
JP2018085775A (ja
Inventor
カルペンコ、アレクサンドル
Original Assignee
フェイスブック,インク.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by フェイスブック,インク. filed Critical フェイスブック,インク.
Publication of JP2018085775A publication Critical patent/JP2018085775A/ja
Priority to JP2019189053A priority Critical patent/JP6937809B2/ja
Application granted granted Critical
Publication of JP6605640B2 publication Critical patent/JP6605640B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • H04N23/60Control of cameras or camera modules
    • H04N23/68Control of cameras or camera modules for stable pick-up of the scene, e.g. compensating for camera body vibrations
    • H04N23/682Vibration or motion blur correction
    • H04N23/683Vibration or motion blur correction performed by a processor, e.g. controlling the readout of an image memory
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B27/00Editing; Indexing; Addressing; Timing or synchronising; Monitoring; Measuring tape travel
    • G11B27/10Indexing; Addressing; Timing or synchronising; Measuring tape travel
    • G11B27/11Indexing; Addressing; Timing or synchronising; Measuring tape travel by using information not detectable on the record carrier
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • H04N23/60Control of cameras or camera modules
    • H04N23/68Control of cameras or camera modules for stable pick-up of the scene, e.g. compensating for camera body vibrations
    • H04N23/681Motion detection
    • H04N23/6812Motion detection based on additional sensors, e.g. acceleration sensors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • H04N23/60Control of cameras or camera modules
    • H04N23/68Control of cameras or camera modules for stable pick-up of the scene, e.g. compensating for camera body vibrations
    • H04N23/689Motion occurring during a rolling shutter mode
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/76Television signal recording
    • H04N5/765Interface circuits between an apparatus for recording and another apparatus
    • H04N5/77Interface circuits between an apparatus for recording and another apparatus between a recording apparatus and a television camera
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/76Television signal recording
    • H04N5/91Television signal processing therefor

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Studio Devices (AREA)

Description

本開示の主題は、信号処理に関する。具体的には、本開示は、画像およびビデオ処理のためのシステムおよび方法に関する。
近年、ビデオのキャプチャが可能なデジタルスチルカメラが普及している。これらの消費者デバイスの解像度や画像品質がいくつかの設定においてデジタル一眼レフカメラ(DSLR)に匹敵するに至るまで改善される一方で、そのビデオ画質は依然としてフィルムカメラのものよりかなり悪いものであり得る。品質におけるこのギャップの理由は、2つの要因からなり得る。第1に、フィルムカメラと比べて、携帯電話はかなり軽量のものであり得る。その結果、そのようなデバイス上での携帯式のビデオキャプチャは、多量のカメラブレを呈し得る。第2に、携帯電話カメラは、ローリングシャッタ(RS)を利用するセンサを有し得る。RSカメラでは、各画像の行は、わずかに異なる時間に露光され得、それが不減衰カメラモーションと組み合わされて、出力ビデオにおける「揺れ」をもたらし得る。
ビデオ安定化は、ビデオのカメラブレによって生成される高周波のフレーム間のジッタの低減に使用される技法のファミリである。専門のカメラでは、機械的な画像安定化(MIS)システムが一般に使用される。例えば、MISシステムでは、オペレータは、オペレータのボディモーションからカメラモーションを切り離すハーネスを着用し得る。他のMISシステムは、カメラボディ自体よりむしろ、カメラの光学素子の方を安定させる。これらのシステムは、レンズまたはセンサを移動して、小さなピッチおよびヨーモーションを補償することができる。これらの技法は、リアルタイムで機能し、カメラ上での演算を必要としない。しかし、これらの技法は、その価格やサイズを理由に、モバイルデバイスや安価なカメラには適さない。デジタルビデオ安定化システムは、キャプチャ後のビデオを安定させるために特徴トラッカを使用し得る。しかし、これらのシステムは、雑音に対する感度が高いものであり得るため(例えば、高速移動する前景被写体)、追跡するための独特の機能を必要とし得る。その結果、特徴追跡に基づくデジタル安定化は、特に不利な照明条件や過度の前景モーションでは、損なわれる場合が多い。それに加えて、フレームにわたる視覚的キューの抽出や一致は、演算上高価なものであり得る。その上、ビデオの解像度が高いほど、費用が高くなる。いくつかの例では、これにはコストがかかりすぎてリアルタイムでのビデオ安定化を実行することができない。結果的に、そのような手法は、現在のデジタルカメラではめったに使用されない。代わりに、製造業者は、高性能のDSLRに対して、よりロバストな(および高価な)機械的な安定化対策の方を選ぶことができる。
本発明による一実施形態は、具体的には、方法、記憶媒体、およびシステムを対象とする添付の特許請求の範囲で開示され、1つのクレームカテゴリで言及される特徴(例えば、方法)は、別のクレームカテゴリ(例えば、システム)でも特許請求することができる。
デジタルビデオを安定させるため、コンピュータ実装方法、システム、およびコンピュータ可読媒体は、一実施形態では、関連付けられたタイムスタンプを有する画像フレームのセットと、関連付けられたタイムスタンプを有する、カメラの向きに関するカメラ配向データのセットとを含むデジタルビデオデータを提供することができる。連続する画像フレーム間の回転速度を最小化することによって、平滑化されたカメラ配向データのセットを生成しつつ、平滑化されたカメラ配向データのセットに基づいて再配向された結果として得られた平滑化画像フレームのセットにおける空き領域の量を最小化する。
一実施形態では、結果として得られた平滑化画像フレームのセットにおける空き領域の量は、ゼロに最小化することができる。
一実施形態では、結果として得られた平滑化画像フレームのセットにおける空き領域の量は、閾値未満に最小化することができる。
一実施形態では、画像フレームのセットおよび平滑化されたカメラ配向データのセットにおける関連付けられたタイムスタンプに基づいて画像フレームのセットをゆがめることにより、補正された画像フレームのセットを形成することができる。
一実施形態では、画像フレームのセットおよび平滑化されたカメラ配向データのセットにおける関連付けられたタイムスタンプに基づいて画像フレームのセットをゆがめることにより、補正された画像フレームのセットを形成することは、個々の画像フレームを複数のサブセクションに分割することを含み得る。各サブセクションは、関連付けられたタイムスタンプおよびカメラ配向を有し得る。画像フレームのセットおよび平滑化されたカメラ配向データのセットにおける関連付けられたタイムスタンプに基づいて画像フレームのセットをゆがめることにより、補正された画像フレームのセットを形成することは、関連付けられたタイムスタンプおよびカメラ配向に基づいて各サブセクションを再編成することにより、補正された個々の画像フレームを形成することを含み得る。
一実施形態では、補正された画像フレームのセットは、ビデオとして表示することができる。
一実施形態では、結果として得られた平滑化画像フレームのセットにおける空き領域の量は、閾値未満に最小化することができる。
一実施形態では、閾値未満の空き領域の量は、修復することができる。
一実施形態では、関連付けられたタイムスタンプを有するカメラ配向データのセットは、ハンドヘルド式デバイスのジャイロスコープから提供することができる。
一実施形態では、画像フレームのセットは、ハンドヘルド式デバイスのカメラから提供することができる。
一実施形態では、関連付けられたタイムスタンプを有するカメラ配向データのセットは、携帯電話およびデジタルカメラを含むハンドヘルド式デバイスのジャイロスコープから提供することができる。画像フレームのセットは、デジタルカメラから提供することができる。
一実施形態では、平滑化されたカメラ配向データのセットを生成することは、勾配降下に基づいて反復最適化することを含む。
一実施形態では、平滑化されたカメラ配向データのセットを生成することは、ガウシアンフィルタに基づいてフィルタリングすることを含み得る。
一実施形態では、平滑化されたカメラ配向データのセットを生成することは、時間導関数に基づいてフィルタリングすることを含み得る。
一実施形態では、カメラ配向データのセットは、無変換の回転を含み得る。
一実施形態では、カメラ配向データのセットは、回転と変換の両方を有するベクトルを含み得る。
一実施形態では、平滑化されたカメラ配向データのセットを生成することは、ソーシャルネットワーキングシステムによって実行される。
一実施形態では、関連付けられたタイムスタンプを有する画像フレームのセットおよび関連付けられたタイムスタンプを有するカメラ配向データのセットは、ソーシャルネットワーキングシステムのユーザによってソーシャルネットワーキングシステムにアップロードすることができる。
本発明のさらなる実施形態では、1つまたは複数の非一時的コンピュータ可読記憶媒体は、実行されると、本発明による方法または上記した実施形態のいずれかを実行するように動作可能なソフトウェアを具現化する。
本発明のさらなる実施形態では、システムは、1つまたは複数のプロセッサと、プロセッサに結合され、プロセッサによって実行可能な命令を含むメモリとを備え、プロセッサは、命令を実行する際、本発明による方法または上記した実施形態のいずれかを実行するように動作可能である。
本発明の他の多くの特徴や実施形態は、添付の図面および以下の詳細な説明から明らかとなる。
一実施形態による、ピンホールカメラモデルの例を示す。 一実施形態による、カメラの向きおよびそれに対応する画像平面の2つの例の描写を示す。 一実施形態による、RSカメラによってキャプチャされたゆがんだ画像および画像を補正するための変換の例の描写を示す。 一実施形態による、デジタルビデオ安定化モジュールの例を示す。 一実施形態による、入力データおよび平滑化後に結果として得られたデータの例のグラフを示す。 一実施形態による、制約ベースの平滑化のための方法の例を示す。 一実施形態による、ソーシャルネットワーキングシステム内で安定したデジタルビデオを生成するためにデジタルビデオからの画像フレームのセットを修正するためのシステムのネットワーク図の例を示す。 一実施形態による、本明細書で説明される実施形態のうちの1つまたは複数の実装に使用することができるコンピュータシステムの例を示す。
図は、単なる例示を目的として本発明の様々な実施形態を描写し、図は、同様の参照番号を使用して同様の要素を特定する。当業者であれば、以下の説明から、本明細書で説明される本発明の原理から逸脱することなく、図に示される構造および方法の代替の実施形態を使用できることが容易に理解し得る。
[ジャイロスコープを使用するデジタルビデオ安定化およびローリングシャッタ補正]
ローリングシャッタ補正は、フレーム内のカメラモーションによって生成された画像のゆがみを取り除くための技法である。高性能のカメラは、グローバルシャッタ(GS)を有する電荷結合素子(CCD)センサを使用する。GSカメラでは、多くのDSLRを含めて、CCDセンサ上のすべての画素の読み取りおよびリセットが同時に行われる。したがって、すべての画素が同じ時間間隔の間に光を収集する。結果的に、露光の間のカメラモーションは、これらの素子上である程度の画像ブラーをもたらす。対照的に、低性能のカメラは、通常、相補型金属酸化膜半導体(CMOS)センサを利用する。具体的には、これらのセンサは、ローリングシャッタを使用し、画像行の読み取りおよびリセットが連続的に行われる。この手法は、CCDセンサと比べて、より少ない回路を必要とし得、CMOSセンサの製造をより安くすることができる。その理由のため、CMOSセンサは、携帯電話、音楽プレーヤおよびいくつかの低性能のカムコーダで頻繁に使用される。しかし、連続的な読み取りは、わずかに異なる時間ウインドウの間に各行が露光されることを意味する。その結果、行の読み取りの間のカメラモーションは、ゆがんだ画像を生成することになる。高速の移動被写体もまたひずんで見える。
RSカメラでの画像読み取りは、通常、ミリ秒範囲である。したがって、RSひずみは、主に、高周波のカメラモーションによって引き起こされる。したがって、カメラを安定させるためにMISシステムを使用することができる。この手法は、ローリングシャッタによるゆがみを取り除くが、実際には、MISシステムの価格帯やサイズにより、RSカメラには適さないものになる。いくつかのデジタルローリングシャッタ調整技法は、単一の画像におけるRSアーチファクトを補正することができるが、ユーザ入力を必要とする。対照的に、本開示のいくつかの実施形態は、ユーザ入力を必要とすることなく、単一の画像に対するRSアーチファクトを補正することができる。
ビデオの場合、ビデオからのカメラモーションを推定するために特徴追跡を使用する一連のフレームにおけるRSの調整は、問題を提示し得る。RS露光の間のカメラモーションが分かった時点で、カメラモーションを使用してフレームを調整することができる。この手法は特徴トラッカに依存するため、ビデオ安定化の事例で以前に論じられたものと同じ欠点を有する。
デジタルビデオ安定化技法は、入力ビデオフレームのクロッピングまたはズーミングを含み得る。これにより、手ブレによってもたらされる望ましくない変形を妨害するための個々のフレームの変換、回転またはゆがみが可能になり得る。クロッピングの量は、これらの変形を取り除くためにどれほどの余裕(または「余地」)があるかを判断することができる。例えば、フレームを変換し過ぎた場合、空き領域(例えば、画素データを有さない領域)が目に見える可能性がある。本開示のいくつかの実施形態は、手ブレを妨害することによってカメラモーションを平滑にするだけでなく、空き領域が現れないようにしながらカメラモーションを平滑にすることもできる。クロッピングまたはズーミング以外の、安定化に対する余裕を提供するための他の方法も実装できることを理解すべきである。例えば、修復技法は、安定化によってもたらされた空き領域を充填するために実装することができる。修復は、クロッピングまたはズーミングの代わりにまたはそれに加えて使用することができる。例えば、一実施形態では、所定の変形が、すべての画素が満足のいくように設定されたフレームをもたらすか否か(修復、ズーミング、クロッピングなどによってかどうかにかかわらず)を判断するための機能を実装することができる。
空き領域防止制約を満たす平滑なカメラ回転を演算することによって、ビデオをデジタル処理で安定させるためのシステムおよび方法が提供される。これにより、所定のクロップまたはズームファクタに対する平滑なカメラ回転を生み出すことが最大限に可能になり得る。
デジタルビデオ安定化プロセスは、例えば、カメラまたはカメラを含むデバイス(携帯電話、タブレット、腕時計、着用可能な道具など)によってビデオをキャプチャすることから始まり得る。ビデオは、キャプチャされた多くの連続画像フレームを含み得る。ビデオは、デバイスのサイズや重量に起因して、ブレのあるものであり得る。カメラのセンサによって使用されるローリングシャッタは、出力画像フレームにおけるゆがみを生成し得る。ジャイロスコープは、ビデオキャプチャの間のカメラモーション(例えば、回転)を測定するために使用することができる。測定されたカメラモーションは、ビデオを安定させるため、および、ローリングシャッタを調整して、画像が補正された出力フレームを有する安定したビデオをもたらすために使用することができる。
本開示の技法は、RSカメラのビデオ画質を向上することができる。一実施形態では、微小電気機械システム(MEMS)ジャイロスコープは、カメラの回転を測定するために実装される。また、他のジャイロスコープやモーション検知デバイスも実装することができる。ジャイロスコープによる測定は、ビデオ安定化(例えば、フレーム間のモーション補償)やローリングシャッタ補正(例えば、フレーム内のモーション補償)を実行するために使用することができる。この手法は、演算上安価かつロバストであり得、それにより、例えば、モバイルプラットホーム上でのリアルタイムの実装形態に特に適したものになり得る。
回転カメラとローリングシャッタとの統合モデルに基づくシステムおよび方法は、ローリングシャッタ補正とビデオ安定化を同時に実行する、ゆがみを演算するためにモデルを利用することができる。ジャイロスコープおよびカメラを自動的に較正する最適化技法を提供することができる。これにより、単一のビデオおよびジャイロスコープキャプチャからの未知のパラメータ(ジャイロスコープドリフトおよび遅延など)ならびにカメラの焦点距離およびローリングシャッタ速度の回復が許可され得る。その結果、ジャイロスコープとカメラハードウェアのいかなる組合せも、専門的な実験セットアップを必要とすることなく、較正することができる。カメラを含むデバイスは、ジャイロスコープなどのモーション検知デバイスも含み得る。例えば、多くのスマートフォンは、ジャイロスコープや加速度計などのカメラやモーション検知デバイスを有する。このように、リアルタイムビデオ安定化およびローリングシャッタ補正は、特徴トラッカまたはMISシステムの使用を必要とすることなく、提供することができる。その上、安価なMEMSジャイロスコープは、カメラモーションを直接測定するために実装することができる。画像のブラーリングを除去するためおよびKLT特徴トラッカを支援するため、慣性計測装置(IMU)を使用することができる。
ジャイロスコープなどのモーション検知デバイスを使用してカメラモーションを測定することにより、高演算効率でのデジタルビデオ安定化およびRS調整の実行が許可される。ビデオのコンテンツはモーションの推定に使用されないため、この手法は、不十分な照明または実質的な前景モーションの下でさえ、ロバストであり得る。その上、上に述べられているように、多くのカメラが使用可能な携帯電話は、既に、ジャイロスコープまたは他のモーション検知デバイスを装備している。MISシステムと比べて、MEMSジャイロスコープは、かなり安価で、より多目的な、それほどかさばらないものであり得る。
一実施形態では、ビデオ安定化は、3つの段階、すなわち、カメラモーション推定段階、モーション平滑化段階および画像をゆがめる段階で進めることができる。ローリングシャッタ調整は、平滑化モーションよりむしろ、実際のカメラモーションをゆがみ演算に使用できることを除いて、同様に進めることができる。本明細書でさらに詳細に論じられるように、ビデオ安定化とローリングシャッタ補正の両方とも、統合フレームワークの下で1回のゆがみ演算において実行することができる。
一実施形態では、カメラモーションは、回転のみの観点からモデル化することができる。他の実施形態では、変換は、回転に加えてまたはその代わりに測定できることを理解すべきである。いくつかの例では、例えばIMUを使用する変換の正確な測定は難しいものであり得る。その上、加速度計データは、変換を得るために2回積分することを必要とし得る。対照的に、ジャイロスコープは、回転速度を測定する。したがって、ジャイロスコープデータは、カメラの向き(カメラ配向)を得るために1回の積分しか必要とされない。その結果、いくつかの例では、変換測定は、向きの測定よりかなり不正確であり得る。その上、変換測定は、異なる量で移動する異なる深度の被写体によって複雑化され得る。一実施形態では、深度情報を得るため、運動に基づく立体または特徴ベース構造復元(SfM:stereo or feature-based structure from motion)アルゴリズムを実装することができる。いくつかの実施形態では、変換を取り除くためにフレームをゆがめるステップを実行することができるが、パララックスおよびオクルージョンによって複雑化され得る。
システムにおけるカメラ変換のモデル化は、問題を提示し得る。例えば、オプティマイザは、特徴トラッカから変換を再構築することを試みる一方で、極小値になり得る。アルゴリズムは、カメラが純粋に平面状の場面(例えば、一定の深度)を画像化していると仮定することができる。したがって、変換再構築は、ビデオにおいてモデル化されないパララックスが原因で複雑化され得る。
回転のみの観点からまたは主に回転の観点からカメラ回転をモデル化する実施形態は、変換で遭遇する問題を最小化することができる。変換は、深度の増加と共に急速に減衰し、被写体は、通常、変換カメラジッタが画像における顕著なモーションを生み出さないほど十分にレンズから遠く離れているため、カメラブレやローリングシャッタのゆがみは主に回転から起こる。
[カメラモデルの例]
一実施形態では、ピンホールカメラモデルに基づく回転ローリングシャッタカメラモデルが提供される。図1は、一実施形態による、ピンホールカメラモデル101の例を示す。場面におけるカメラの中心cからポイントxまでの光線は、ポイントxで画像平面と交差する。したがって、画像平面上への空間の投影は、カメラの中心c、焦点距離fおよび画像平面におけるカメラの軸の位置(o,o)に依存する。ピンホールカメラでは、同次座標における画像ポイントxと3D空間座標における対応するポイントXとの関係は、方程式の例(1)によって指定することができる。
x=KX、およびX=λK−1x (1)
ここで、λは、未知のスケーリング係数であり、Kは、内部カメラである。K−1は、方程式の例(2)によって指定することができる。
(o,o)は、画像平面におけるカメラ軸の原点であり、fは、焦点距離である。カメラの焦点距離は、回復することができる未知数である。カメラは正方画素を有し、上方斜めのエントリは1に設定されると仮定することができる。しかし、他の実施形態は、このモデルを拡張して、非正方画素または他の光学的ひずみを考慮に入れることができる。
ゆがみは、高周波カメラ回転から起こり得る。例えば、上から下にシャッタを切る間の高周波カメラ回転により、出力画像がゆがんでいるように見える場合がある。このゆがんだ画像は、数学的にモデル化することができる。
空間の原点は、カメラの原点に設定することができる。次いで、カメラモーションは、時間tにおけるその向きR(t)の観点から説明することができる。したがって、いかなる場面ポイントXに対しても、時間tにおける対応する画像ポイントxは、方程式の例(3)によって得ることができる。
x=KR(t)X (3)
回転行列R(t)∈SO(3)は、カメラ角度Δθ(t)の変化を複合することによって演算することができる。四元数の球面線形補間(SLERP:spherical linear interpolation)は、カメラの向き(カメラ配向)を平滑に補間し、ジンバルロックを回避するために使用することができる。ジャイロスコープのサンプル間の角度の変化は、そのオイラー角が回転四元数と同じ働きをするほど十分に小さいものであり得る。Δθ(t)は、以下の方程式の例(4)によって指定されるように、ジャイロスコープが測定した回転速度ω(t)から直接得ることができる。
Δθ(t)=(ω(t+t)+ω)*Δt (4)
ωは、ジャイロスコープドリフトであり、tは、ジャイロスコープとフレームサンプルタイムスタンプとの間の遅延である。これらのパラメータは、これも同様に回復することができるそのモデルにおける追加の未知数である。
また、ローリングシャッタは、カメラモデルに導入することもできる。RSカメラでは、各画像行は、わずかに異なる時間に露光される。したがって、この露光の間のカメラ回転は、画像のゆがみを決定することができる。被写体は、通常、レンズから遠く離れているため、ローリングシャッタ露光の間の変換カメラジッタは、画像のゆがみに大きな影響は及ぼさない。例えば、シャッタを切る間にカメラが左右に揺れると、図3に示されるように、出力画像はゆがむ。フレームiにおいてポイントxが画像化された時間は、フレームがどのくらいの深さまであるかに依存する。方程式の例(5)によって指定されるように、xは時間t(i,y)に画像化されたと決定することができる。
t(i,y)=t+t*y/h、式中、x=(x,y,1) (5)
yは、ポイントxに対応する画像行である。hは、フレームにおける行の総数である。tは、i番目のフレームのタイムスタンプである。t項は、フレームの下方に行くほど、ローリングシャッタがその行に到達するのに要する時間が長くなることを示す。したがって、tは、行ごとに上から下まで全フレームを読み取るのに要する時間である。負のt値は、下から上に向かうローリングシャッタを示すことになる。符号やt値の自動回復については、本明細書でさらに詳細に説明する。
2つの異なるカメラの向きに対する1対のフレームにおける画像ポイント間の関係を導出することができる。図2は、実施形態による、2つのカメラの向きおよびそれらの対応する画像平面のグラフ表現を示す。グラフ表現201は、2つのカメラの向き202および203を含む。カメラの向き202は、画像平面iを含む。カメラの向き203は、画像平面jを含む。場面ポイントXの画像は、2つのフレームに現れ、光線211は、画像平面iおよびjと交差する。場面ポイントXに対して、2つのフレームiおよびjの画像平面における投影ポイントxおよびxはそれぞれ、以下の方程式の例(6)によって指定することができる。
=KR(t(i,y))X、およびx=KR(t(j,y))X (6)
これらの方程式が再構成され、Xが代入された場合、方程式の例(7)によって指定されるように、フレームjにおけるすべてのポイントへのフレームiにおけるすべてのポイントの写像が得られる。
=KR(t(j,y))R(t(i,y))K−1 (7)
2つのフレーム間の関係について同じビデオと関連して説明してきたが、他の実施形態では、フレームは、R(t)に応じて回転するあるカメラからR’(t)に応じて回転する別のカメラに写像することができる。一実施形態では、両方のカメラの中心は、原点にあると仮定することができる。あるカメラから別のカメラにポイントを写像するゆがみ行列Wは、以下の方程式の例(8)に従って指定することができる。
W(t,t)=KR’(t)R(t)K−1 (8)
ここで、以下の方程式の例(9)に従って、方程式7をよりコンパクトに指定することができる。
=W(t(j,y),t(i,y))x、式中、R’=R (9)
Wは、画像ポイントxおよびxのそれぞれの画像行yおよびyの両方に依存する。このゆがみ行列は、両方のフレームにおいてローリングシャッタの効果を考慮に入れながら、フレームiのポイントとフレームjの対応するポイントとを一致させるために使用することができる。
ゆがみ行列のこの公式化は、ローリングシャッタ補正およびビデオ安定化を実現する。平滑なモーションおよびグローバルシャッタを有する合成カメラを製作することができる。このカメラモーションは、例えば、入力カメラモーションにガウシアンローパスフィルタを適用することによって演算することができ、これは、新しい回転セットR’をもたらす。合成カメラのローリングシャッタ持続時間tは、グローバルシャッタのように0に設定することができる。次いで、現在のフレームiの各画像行yでW(t,t(i,y))を演算することができ、その行にゆがみを適用することができる。Wの第1の項は、ここでは、フレーム時間tのみに依存し得る。この演算は、すべての入力フレームを合成カメラに写像し、その結果、ローリングシャッタのゆがみとビデオブレを同時に取り除くことができる。
ある実施形態では、W(t,t(i,y))は、各画像行yに対しては演算されない。代わりに、入力画像を細分割し、各垂直細分割部でゆがみを演算することができる。図3は、実施形態による、ゆがみを補正するための変換の例を示す。ゆがんだ入力画像フレーム301は、RSカメラによってキャプチャされた再分割されたゆがんだ画像を示す。ゆがみは、画像フレーム311に示されるように、各垂直細分割部で演算される。画像フレーム311は、非線形ゆがみの区分的線形近似を示す。結果として得られた画像フレーム316によって示されるように、様々な数の細分割部が、アーチファクトを排除するには十分であり得る。例えば、一実施形態では、10の細分割部が、視覚的アーチファクトを排除するには十分であり得る。非線形ゆがみの区分的線形近似である、入力画像からのゆがんだメッシュが作成された。10の細分割部が、目に見えるいかなるRSアーチファクトも取り除くには十分であるが、他の実施形態は、異なる数の細分割部を含み得る。サンプリング手法は、逆補間とも呼ぶことができる。逆補間は、バーテックスシェーダを使用するグラフィックス描画処理装置(GPU)上での実装が容易であり得る。GPUのフラグメントシェーダは、双線形補間を使用して、メッシュがゆがんだ画像のリサンプリングを処理することができる。実際のビデオのRSゆがみは、双線形逆補間により、エイリアシングアーチファクトを生成するほど強くはない場合がある。その結果、実際には、逆補間がうまく機能する。グローバルな画像ゆがみを使用するローリングシャッタ補正は、ローリングシャッタ露光の間、カメラ回転がおおむね一定であると仮定することができる。線形近似は、図3の画像フレーム306によって示されるように、ローリングシャッタを調整できない場合がある。
[カメラおよびジャイロスコープの較正]
本明細書で説明される未知のカメラおよびジャイロスコープパラメータを回復するための較正技法が提供される。較正により、ジャイロスコープデータからのWの直接演算が可能になり得る。本明細書で説明されるモデルにおける未知のパラメータは、カメラの焦点距離f、ローリングシャッタの持続時間t、ジャイロスコープとフレームサンプルタイムスタンプとの間の遅延tおよびジャイロスコープドリフトwを含み得る。
いくつかの例では、カメラの焦点距離fなどのこれらのパラメータのうちの1つまたは複数は、製造業者が指定することができる。いくつかの例では、これらのパラメータは、実験的に測定することができる。例えば、素早く点滅するディスプレイを使用して、ローリングシャッタの持続時間tを測定することができる。しかし、これらの技法は、不正確でエラーを起こしやすい傾向があり得る。また、これらの技法は、退屈であり得る。ローリングシャッタの持続時間tは、通常、ミリ秒範囲であり得る。その結果、tまたはtにおける小さな不整合が、ローリングシャッタ調整の失敗をもたらす場合がある。
一実施形態では、これらのパラメータは、単一のビデオおよびジャイロスコープキャプチャから推定することができる。例えば、ユーザは、建物などの静止被写体の方向に向けたまま、静止したまま立っている状態で、カメラを揺すりながら、ビデオやジャイロスコープトレースを記録することができる。クリップの持続時間は、異なる実施形態で異なり得る。一実施形態では、短いクリップ(例えば、10秒以下の持続時間)が、すべての未知のパラメータを推定するには十分であり得る。この較正ステップは、各カメラおよびジャイロスコープ構成に対して1回だけ行う必要があり得る。
一実施形態では、一致ポイントは、連続ビデオフレームで特定される。一致ポイントは、例えば、スケール不変特徴量変換(SIFT:scale invariant feature transform)
を使用して特定され得る。外れ値は、例えば、ランダムサンプルコンセンサス(RANSAC:random sample consensus)を使用して破棄することができる。その結果は、キャプチャされたビデオのすべての近隣のフレームに対するポイント対応xおよびxのセットであり得る。このグランドトゥルース(ground truth)を前提として、較正は、すべてのポイント対応の平均二乗再投影誤差を最小化することができる最適化問題として公式化することができる。これは、以下の方程式の例(10)で指定される。
目的関数を最小化するため、多くの非線形オプティマイザを使用することができる。直接目的関数評価による座標降下法は、急速に収束し得、一実施形態で実装される。毎回、目的関数Jが減少しないところでステップを取る。ステップ方向を逆にし、対応するパラメータのステップサイズを減少する。アルゴリズムは、すべてのパラメータのステップサイズが所望の閾値未満に降下する(目標精度が達成されるなど)と終了する。収束は、いくつかの例では、急速に起こり得る。例えば、一実施形態では、収束は、約10秒の持続時間の較正ビデオに対して、2秒以内に起こり得る。
一実施形態では、最適化は、カメラが45°の視野を有するように焦点距離を設定することによって初期化することができる。他のすべてのパラメータは、0に設定することができる。これらの初期条件を用いることで、オプティマイザは、データセットに対する正しい解に収束することができる。より一般に、極小値になることは(例えば、ジャイロスコープとフレームタイムスタンプとの間の遅延が大きい際)、様々な妥当なパラメータに対して座標降下アルゴリズムを再開して、最適な解を選択することによって、回避することができる。正しく回復されたパラメータに対する平均再投影誤差は、例えば、1画素ほどであり得る。
モデルにおける追加の未知数は、カメラに対するジャイロスコープの相対的な向きであり得る。例えば、ジャイロのy軸周りの回転は、カメラのx軸周りの回転に相当し得る。
ジャイロスコープの向きを発見するため、3本の回転軸を置換することができ、各置換に対してオプティマイザを実行することができる。目的を最適に最小化する置換は、カメラの軸の順序付けに相当し得る。再投影誤差は、誤った置換に対してはかなり大きいものであり得る。したがって、実際には、この方法がうまく機能する。
カメラは垂直ローリングシャッタを有すると仮定してきたが、RSモデルは、画像行の代わりに画像列に対して機能するように容易に変更することができる。両方の事例に対する最小再投影誤差を見出すことは、カメラが水平ローリングシャッタを有するかまたは垂直ローリングシャッタを有するかを示し得る。
最終的に、較正によって達成された結果は、較正の前後にビデオおよびジャイロスコープ信号を分析することによって実証することができる。連続フレーム間の回転が小さいと仮定すると、画像における変換は、以下の方程式の例(11)で指定されるように、回転からほぼ演算することができる。
方程式(11)は、ローリングシャッタによる効果がなく(例えば、t=0)、z軸周りの回転(例えば、ω)を無視することができると仮定する。
は、連続フレームにおけるすべてのポイント対応に対するxおよびyに沿った平均変換率である。オプティマイザが正しい焦点距離fおよびジャイロスコープ遅延tに収束した場合、2つの信号は整合するはずである。較正前は、fの初期の推定が低過ぎるため、信号xおよびfωy(t+t)の振幅は一致しない。信号は、tが0に初期化される際、シフトすることができる。較正後は、正確な焦点距離およびジャイロスコープ遅延が回復されているため、信号はうまく整合し得る。MEMSジャイロスコープなどの精密なジャイロスコープは、ジャイロスコープデータが画像モーションと一致するようにすることができ、ビデオ安定化およびローリングシャッタ補正を改善する。
[制約ベースの回転平滑化]
本開示のいくつかの態様では、空き領域が目に見えないかまたは最小閾値未満であるという制約の下、最適に平滑化されたカメラモーションを演算するためのシステムおよび方法を提供することができる。図4は、実施形態による、デジタルビデオ安定化モジュールの例を示す。デジタルビデオ安定化モジュール400は、入力モジュール401、平滑化モジュール402およびゆがみモジュール403を含めて示される。
入力モジュール401は、平滑化モジュール402およびゆがみモジュール405への安定させるべき入力を提供することができる。入力モジュール401は、安定させるべきビデオと関連付けられた入力を受信することができる。例えば、入力は、NのフレームFのセット、NのフレームFに対応する時間tおよびカメラの向き(カメラ配向)θ(i={1…N})を含み得る。
平滑化モジュール402は、制約関数f(φ,t)が満たされるように、新しい平滑化されたカメラの向き(カメラ配向)のセットφを演算する。平滑化モジュール402は、回転速度モジュール403および制約決定モジュール404を含み得る。
回転速度モジュール403は、平滑なカメラ配向の生成に対して十分小さな回転速度が維持されることを保証するため、回転速度を演算する。制約決定モジュール404は、時間tにおける目標の向きφに対して制約が満たされているかどうかを決定する。例えば、一実施形態では、制約関数f(φ,t)は、時間tにおける目標の向きφを前提として、空き領域が目に見えるか否かのそれぞれに応じて1または0を返すことができる。
例えば、制約決定モジュール404は、空き領域の最小量(例えば、閾値量未満)が連続画像フレームで生成されているかどうかを決定することができる。空き領域の量が閾値量未満に降下すれば、制約が満たされ(例えば、空き領域の量が閾値量を超えない)、目標の向きφおよびその対応する時間tを使用して、閾値を上回る量の空き領域を生成しない十分小さな回転速度を有する平滑な向きを生み出すことができる。制約が満たされなければ(例えば、空き領域の量が閾値量を超える)、制約を満たしながら十分小さな回転速度を維持するため、対応する目標の向きφを調整することができる。一実施形態では、空き領域の閾値量は、ゼロである。他の実施形態では、空き領域の閾値量は、ほぼゼロであるか、または、人間の目では検出不可能と判断される無視できる値である。さらに別の実施形態では、空き領域の閾値量は、すべての空き領域またはほぼすべての空き領域を排除するなど、効果的に使用するためにクロッピング、ズーミングまたは修復を防ぐ値である。他の実施形態では、空き領域の閾値量は、アプリケーションおよび許容レベルに基づいて要望通り設定することができる。
ゆがみモジュール405は、平滑化モジュール402によって演算された新しい平滑化されたカメラ配向のセットφに基づいてゆがんだフレームを生成する。例えば、ゆがみモジュール405は、フレームF、平滑化された向きφおよびその対応する時間tを入力として取り入れて、ゆがんだフレームF’を生成する、ゆがみ関数g(F,φ,t)を実装することができる。平滑化モジュール402によって出力されるような、tの経過に伴って平滑に変化するφや、適切な関数fおよびgの選択を前提として、結果として得られたゆがんだフレームF’は、安定した出力ビデオを作成する。関数fは、ゆがみ関数gの選択に依存し得、単に、ゆがみ関数gを適用した後、フレームにおいて空き領域が目に見えるか否かを示し得る。
実装される特定のゆがみ関数は、異なる実施形態で異なり得る。様々なカメラまたは所望の近似に対して、異なるゆがみ関数が適切であり得る。例えば、実装されるゆがみ関数は、カメラがローリングシャッタおよび小さなレンズ収差を有するかどうか、または、グローバルシャッタを有するかどうかに基づき得る。例えば、一実施形態では、グローバルシャッタを有するカメラに対して、ホモグラフィゆがみ関数を実装することができる。アフィン変換またはフレームの画像空間における回転に変換を加えたものなどの他の近似を実装することもできる。
一実施形態では、θ入力は、SO(3)グループにおける回転である。回転行列および四元数によってなど、回転を表す様々な方法がある。SO(3)にある表現は、オイラー角よりむしろ四元数など、平滑な補間を促進する表現に変換することができる。θ回転は、例えば、画像ベースの特徴トラッカから、または、ジャイロスコープの読取値を直接測定して積分することによって、演算することができる。他の実施形態では、カメラの向きの正確な推定を生み出す他のいかなる方法も実装することができる。
カメラ回転の観点からθについて説明してきたが、他の実施形態では、θは、3D空間におけるカメラの回転と変換の両方を保持するベクトルを含み得る。例えば、回転と変換の両方を含むベクトルは、モーションアルゴリズムからの構造によって生成することができる。一実施形態では、θは、フレームの画像空間における変換もしくは回転、または、他のあまり正確ではないが潜在的に演算上安価な近似を含み得る。θを平滑に補間でき、結果として得られたφを対応するfおよびg関数に入力できる限り、デジタルビデオ安定化を実現することができる。
本明細書では、「平滑なカメラモーション」との記載は、回転速度における小さな変化を指すために使用することができる。これは、近隣のフレームの回転における小さな変化とは区別される。回転速度における小さな変化は、時間の経過に伴って課された制約をイーズインおよびイーズアウトする向きを生み出し得る。近隣のフレームの回転における小さな変化は、制約が実施される時間における向きに関する導関数の不連続性を生み出す一方で、制約におよび制約から補間する。
制約ベースの回転平滑化は、回転速度および制約に基づいてエネルギー関数を最小化することを含む最適化を含み得る。
一実施形態では、最小化するエネルギー関数Jは、以下の方程式の例(12)によって指定することができる。
回転φは、単位四元数(ベクトルとしても知られている)として表現することができる。その上、以下の方程式の例(13)で指定されるように、ハード制約をソフト制約と置き換えることができる。
λは、f制約がどれほど強く実施されるかを決定することができる。例えば、λを無限に設定することは、空き領域が目に見えないことを保証することができ、制約を満たすことができると仮定することができる。
方程式の例(12)または(13)に示される形式でエネルギー関数Jを最小化するため、様々な最適化アルゴリズムを使用することができる。一実施形態では、方程式の例(12)の勾配降下に基づく反復アルゴリズムが実装され、制約は、各反復で実施される。一実施形態では、1秒あたり特定の数のフレームを記録するカメラなど、フレームは、時間的に等間隔であり得る。等間隔のフレームを用いることで、分母は一定であると仮定することができ、次いで、和から取り出すことができる。次いで、以下の方程式の例(14)によって導関数を指定することができる。
Cは、勾配の大きさを制御する定数であり得る。いくつかの実施形態では、Cは、モーメンタムベースの方法などの勾配降下の何らかの形式によって自動的に選ばれる場合がある。他の実施形態では、Cは、簡素な勾配降下における降下率を制御するため、要望通り設定することができる。値の例は、例えば、C=2/(Δt)であり得る。方程式(14)は、以下の例の方程式(15)によってよりコンパクトに指定することができる。
カーネルKは、ラプラシアン・ガウシアン(LoG:Laplacian of Gaussian)フィルタであり得る。LoGフィルタは、ガウシアン差分(DoG:Difference of Gaussian)またはボックス差分(DoB:Difference of Box)フィルタで近似することができる。また、カーネルKは、LoGフィルタをガウシアンフィルタで畳み込むことによって調整することもできる。これは、どれほど徐々に回転速度が変化すべきか(または制約をイーズインおよびイーズアウトする量)を制御することができる。LoG/DoG/DoBおよび/またはガウシアンフィルタの選択は、カーネルKの係数およびサイズに影響を及ぼし得るが、カーネルが時間導関数の形式を演算する限り、最適化された向きは、制約をイーズインおよびイーズアウトする何らかの形式を呈し得る。
一実施形態では、四元数へのカーネルの適用は、4Dベクトルの線形重み付けをすることである。理論上、球面線形補間(slerp)を使用して四元数を補間することは、正確な方法であり得る。角度の小さな変化に対して、線形補間に各反復で結果として得られた四元数(lerp)の正規化を加えたものが、かなり正確な結果を生み出すには十分である。そのような結果は、θが小さいとsin(θ)≒θであるため、達成することができる。手ブレによって生じた角度の変化(例えば、調整すべき変化)は、通常、大きいものではない。その上、合理的なレベルのクロッピング、ズーミングまたは修復ファクタは、大した余裕を残さない可能性がある。小さな角度のみが空き領域を生成しない。したがって、連続した向きの四元数間における手ブレによって生じた角度は、実際には、大きくない可能性があり、近似は、正確かつ演算上効率的なものであり得る。その上、急速なカメラの回転の場合(例えば、ユーザが素早く左にパンする)、制約関数fは、結果として得られた向きを支配し得る。したがって、lerpからのいかなる不正確性も目立たない可能性がある。
一実施形態では、制約ベースの回転平滑化は、以下のアルゴリズムの例(1)の観点から指定することができる。
Φは、内側のループで変化しないように、外側のループで事前に演算することができる。反復数「numiter」は、平滑な回転をもたらすようほど十分高く設定することができる。次いで、結果として得られたφは、gに代入して、安定した出力ビデオを生成することができる。
n(φ)は、lerpにおける正規化ステップであり、n(φ)=φ/||φ||と定義することができる。アルゴリズム1における添え字iは、Φが有効であるように選択され、したがって、カーネルKのサイズに依存し得る。この例では、境界での回転は、固定して保持することができる。他の実施形態では、補外を介して境界を拡大し、最適化の間に向きの全セットを反復できるようにすることができる。向きの全セットは、以下のセットとして指定することができる。
図5は、実施形態による、入力データおよび平滑化後に結果として得られたデータの例のグラフを示す。上のグラフは、時間の経過に伴って描かれた入力データ502を含み、制約503は円で示される。下のグラフは、制約503を含む、本明細書で説明される制約ベースの回転平滑化技法に従って平滑化された入力データ502の結果として得られたデータ504を含む。例えば、結果として得られたデータ504は、制約(例えば、連続画像フレームにおいて空き領域の閾値量が生成されない)が満たされることを保証する一方で、回転速度(または微分係数)が小さく(または閾値未満に)なるように実施することによって、平滑化することができる。回転速度における小さな変化は、時間の経過に伴って課された制約をイーズインおよびイーズアウトする向きを生み出し得る。結果として得られたデータ504は、制約503をイーズインおよびイーズアウトする。他方では、中間のグラフは、制約503を含む、近隣のフレームの向きの変化が小さくなるように実施することによって入力データ502の平滑化を試みた結果として得られたデータ506を含む。近隣のフレームの回転における小さな変化は、制約が実施される時間における向きに関する導関数の不連続性を生み出す一方で、制約におよび制約から補間する。示されるように、結果として得られたデータ506は、制約503における導関数の不連続性を含む。
図6は、実施形態による、制約ベースの平滑化のための方法の例を示す。方法600のブロック601では、ビデオデータが受信される。ビデオデータは、関連付けられたタイムスタンプを有する画像フレームのセットを含み得る。一実施形態では、ブロック601は、図4の入力モジュール701によって実行することができる。
ブロック603では、関連付けられたタイムスタンプを有する、カメラの向きに関するカメラ配向データが受信される。例えば、カメラを含むデバイスは、ビデオのキャプチャの間にカメラの向きを追跡するカメラ配向データを生成する、ジャイロスコープ、加速度計などの向きセンサも含み得る。カメラ配向データは、カメラ配向データをビデオデータの画像セットにリンクするかまたはそうでなければ関連付けるため、関連付けられたタイムスタンプを含み得る。いくつかの例では、カメラ配向データは、ビデオデータと同時に(ビデオデータと一緒になど)受信することができる。一実施形態では、ブロック602は、図4の入力モジュール701によって実行することができる。
一実施形態では、ブロック601および603は、ビデオのキャプチャに使用されるカメラを有するデバイス(例えば、スマートフォンまたは他のハンドヘルド式のデバイス)によって実行することができる。例えば、ビデオデータおよびカメラ配向データは、ビデオのキャプチャと同時に受信することができる。別の実施形態では、ブロック601および603は、カメラを含むデバイス(例えば、スマートフォン)によってキャプチャされたビデオデータを後に受信する別々のデバイス(例えば、コンピュータ)によって実行することができる。例えば、ビデオデータおよびカメラ配向データは、カメラおよび向きセンサを含むデバイス(カメラを備えるスマートフォンなど)から別々のデバイスに伝送またはアップロードすることができる。
ブロック605では、連続する画像フレーム間の回転速度を最小化することによって、平滑化されたカメラ配向データのセットを生成しつつ、結果として得られる平滑化画像フレームのセットにおける空き領域の量を最小化する(または制限する)。結果として得られる平滑化画像フレームのセットは、平滑化されたカメラ配向データのセットに基づいて再配向されたものである。
一実施形態では、平滑化されたカメラ配向データのセットは、本明細書で説明される方程式(12)または(13)を最小化することによって生成される。一実施形態では、方程式の例(12)の勾配降下に基づく反復アルゴリズムが実装され、制約は、各反復で実施することができる。
ブロック607では、補正された画像フレームのセットを形成するため、画像フレームのセットがゆがめられる。画像フレームのセットは、画像フレームのセットおよび平滑化されたカメラ配向データのセットに対する関連付けられたタイムスタンプに基づいてゆがめることができる。一実施形態では、個々の画像フレームは、複数のサブセクションに分割することができ、各サブセクションは、関連付けられたタイムスタンプおよびカメラの向き(カメラ配向)を有し得る。各サブセクションは、補正された個々の画像フレームを形成するため、関連付けられたタイムスタンプおよびカメラの向きに基づいて再編成することができる。
[モーションブラー・アーチファクトの可視性の低減]
低光量で撮られたビデオのデジタルビデオ安定化は、奇妙なモーションブラー・アーチファクトを生成する場合が多い。このモーションブラー・アーチファクトは、モーションブラーを引き起こしたモーション(例えば、手ブレ)が取り除かれた際にモーションブラーが奇妙に見えるため発生し得る。いくつかの例では、モーション跡について説明するために必要な手ブレだけ、安定させたビデオに残すことが必要であり得る。明確な水平モーション跡がフレームにある場合は、跡が意味をなすようにするため、その跡に従って向きを水平に変化させる必要があり得る。水平モーションがない場合は、その跡は、安定させたビデオに理由もなく収まったり飛び出たりするように見え、それにより、目に見えるモーションブラー・アーチファクトを生じ得る。
一実施形態では、カメラのシャッタが開いている間に起こった向きの変化Δθは、以下の例の方程式(16)に従って演算される。
は、フレームFに対してシャッタが開かれている時間を表すことができる。eは、フレームの露光持続時間である。θ(t)は、時間tにおけるカメラの向きであり、以下の表現上で補間することによって演算することができる。
ジャイロスコープを使用するデジタルビデオの安定化およびローリングシャッタ補正のための上記で説明される例では、Δθは、シャッタが開かれている時間のみにわたって積分することによって、ジャイロスコープの読取値から直接演算することもできる。方程式(1)または方程式(2)内の和は、以下の方程式の例(17)で指定されるように修正することができる。
方程式(17)は、
および
であると仮定する。シャッタは、フレームのタイムスタンプの前には開かず、次のフレームの開始前に閉じる。別の実施形態では、入力タイムスタンプは、異なる形で計算することができ(例えば、tは、シャッタを閉じた時間である)、要件を満たすようにタイムスタンプを調整するため、前処理ステップを追加することができる。
上記で説明される実施形態では、フレームにモーション跡を残した向きの変化が保存される。別の実施形態では、近似は、以下の方程式の例(18)で指定されるように実装することができる。
方程式(18)における近似は、向きの変化Δθがモーション跡に沿って収まるように、φの最適化を試みることができる。γスケーリング係数は、平滑性とどれほど近くモーション跡をたどるべきかとの間のトレードオフを制御することができる。
[適切なズームファクタの選択]
例えば、許容できるズームファクタ(またはクロップファクタ、修復ファクタ、もしくはデジタルビデオ安定化に余裕を提供するために使用されるアルゴリズムに適用可能な他の任意の対策)は1〜1.25である。所定のビデオに対して、平滑なカメラモーションを生み出せるほど十分な余裕を提供する最も小さなズームファクタを決定することが望ましい場合がある。一実施形態では、結果として得られたカメラモーションの平滑性は、以下の方程式の例(19)によって測定することができる。
方程式(19)では、qは、どれほど頻繁に空き領域制約が実施されるかを測定する。例えば、q=0.1の値は、空き領域が外面に現れないようにするため、平均して、10フレームごとにfが実施されることを意味し得る。例えば、制約をイーズインおよびイーズアウトするために20フレームの間隔が望ましい場合は、適切な値はq=0.05であり得る。
所望のq’値を提供するズームファクタz’を見出すため、アルゴリズム1は、様々なズームファクタ(例えば、z∈[1,1.05,1.1,1.15,1.2,1.25])に対する解を求めることができる。ズームファクタzおよびアルゴリズム1を実行することによって結果として得られたφを前提として、方程式(19)から結果として得られたqを演算することができる。次いで、q’に最も近いqを提供したズームファクタを選択することができる。別の実施形態では、q’において結果として得られたデータセット(q,z)を線形補間することによって、ズームファクタz’を見出すことができる。また、典型的なハンドヘルド式での記録に対する(q,z)ルックアップテーブルを事前に演算することもでき、q’は、中央または平均回転速度から推定される。この手法は、特定のビデオに対してはあまり正確ではないものであり得るが、最適化アルゴリズムを複数回実行する必要がないため、高速であり得る。
[演算効率の向上]
勾配降下以外のオプティマイザなどを使用する、近似の導入など、アルゴリズム(1)の効率を向上するための多くの方法がある。一実施形態では、方程式(15)におけるKのカーネルのサイズを低減することができ、以下の方程式の例(20)で指定されるように、勾配を更新することができる。
カーネルのサイズを低減する(およびそれを再利用する)ことにより、勾配の演算を効果的に加速させることができる。方程式(20)におけるカーネルの別の特性は、slerpを使用してより正確にKΦの値を演算できることである。このことは、以下の方程式の例(21)で指定されるように、不均一な間隔のフレーム上で行うことができる。
さらにいっそう正確には、φおよびslerpによって形成される球面に対する接線を決定して、方程式(20)で使用することができる。φおよびslerpによって形成される球面に対する接線は、以下の表現の例で指定することができる。
別の実施形態では、本明細書で説明されるアルゴリズム1の収束率を向上することによって、効率を向上することができる。このことは、粗から密までのモードでそれを実行することによって実現することができる。例えば、アルゴリズム1は、16の向きφごとに供給して解を求めることによって初期化することができる。次いで、線形または三次補間(例えば、slerpまたはsquad)を使用して、その中間のφを演算することができる。つまり、8の向きごとの値が得られる。アルゴリズム1は再度実行することができるが、ここでは、平滑性および制約のために8の向きごとに最適化する。このことは、アルゴリズム1があらゆる向きにわたって実行されるまで繰り返すことができる。
粗から密まで実行することにより、各ステップにおけるかなり少ない反復に対してアルゴリズム1を実行することが許可され得る。全体的なカメラモーションを平滑にすることができ、次いで、依然として平滑な状態を維持したまま、ますます小さくなるフレーム間隔で制約を満たすため、向きを改良することができる。別の実施形態では、不均一なサンプリングを使用することができる。例えば、16のフレームごとに選ぶ代わりに、以前に選ばれたフレームから向きがどれほど遠く外れているかに基づいてフレームを選ぶことができる。次いで、平滑化された向きがすべてのフレームに対して演算されるまで、セグメントを細分割することができる。
より粗いまたは不均一なサンプリングは、向きにおけるより大きな連続的な変化をもたらし得るため、方程式(21)で提示されるslerp修正を使用することで、より正確な結果を生み出すことができる。
[リアルタイムの安定化への応用例]
以下は、リアルタイムの設定にアルゴリズムを採用する実施形態の例として提供される。Nのフレームをメモリに保存して、スライドウィンドウ形式でアルゴリズムが実行される。添え字iは、スライドウィンドウの開始を示し得、i+Nは、スライドウィンドウの終了を示し得る。スライドウィンドウ内部の向きは、アルゴリズムを実行することによって更新することができるという点で、適応性があるものであり得る。これらの向きは、以下のセット(2)によって指定することができる。
スライドウィンドウに先行する向き(例えば、φi−1)は、固定することができる。開始向きはφi−1であり得、回転速度(例えば、ジャイロスコープによって測定されるかまたは特徴トラッカから演算されるような)を積分して、向き{θ,θi+1,…,θi+N}を得ることができる。これは、最適化アルゴリズムに対する入力として使用して、{φ,φi+1,…,φi+N−2}を演算することができる。向き{φi−2,φi−1}および{φi+N−1=θi+N−1,θi+N=θi+N}は、固定して保持することができ、モーションがスライドウィンドウへの出入りで平滑であることを保証する境界条件として機能し得る。
アルゴリズムが実行された時点で、向きφを得ることができ、その向きφは、フレームFをゆがめるのに使用することができる。フレームをゆがめた時点で、ゆがんだフレームは、エンコーダに渡し、Nのフレームのバッファから取り除くことができる。次いで、カメラから新しいフレームを受信することができ、1つのフレームだけスライドウィンドウを進めることができる。
手順は、記録が止まり、すべてのフレームが処理されるまで、繰り返すことができる。まさに最初のフレームi=1に対しては、{φ−1,φ}は定義されていない場合がある。φ−1およびφは、恒等四元数に設定することができる。最後のフレームが受信された時点で、バッファは、それぞれのフレームをゆがめるために最終的なスライドウィンドウ内部で演算された向きを使用することによってフラッシュすることができる。
いくつかの例では、小さなバッファサイズ(例えば、N=5)は、制約のイーズインおよびイーズアウトができない場合がある。そのような事例では、ハード制約まで強化されるソフト制約になるように制約関数fを変更する必要があり得る。これは、関数f’(φ,t)として言及することができる。0または1を返す代わりに、f’は、新しい向きφ’を返し、新しい向きφ’は、フレームボーダから押しのけることができる。向きφが空き領域を示すようになる状態に近づくほど、f’はますます結果として得られたφ’を空き領域から押しのけることができる。次いで、以下のアルゴリズムの例(2)で指定されるように、アルゴリズム1を再公式化することができる。
向きn(φ−CKΦ)が空き領域をもたらす際にf’が単にφを返す場合、アルゴリズム1とアルゴリズム2は同等であり得ることに留意されたい。アルゴリズム1の最適化率は、関数f’(φiをn(φ−CKΦ)に向けてslerpするが、まさに空き領域が現れようとしているポイントでちょうど停止する)を用いて、アルゴリズム2を使用することによって向上することができる。
[ソーシャルネットワーキングシステム−実装例]
図7は、本発明の実施形態による、ウェブサイトまたはアプリケーション上のユーザの関心を推定するためのシステム700の例のネットワーク図を示す。システム700は、1つまたは複数のユーザデバイス710、1つまたは複数の外部システム720、ソーシャルネットワーキングシステム730およびネットワーク750を含む。一実施形態では、上記で説明される実施形態に関連して論じられるソーシャルネットワーキングシステムは、ソーシャルネットワーキングシステム730として実装することができる。例示を目的として、図7によって示されるシステム700の実施形態は、単一の外部システム720および単一のユーザデバイス710を含む。しかし、他の実施形態では、システム700は、より多くのユーザデバイス710および/またはより多くの外部システム720を含み得る。ある実施形態では、ソーシャルネットワーキングシステム730は、ソーシャルネットワークプロバイダによって動作され、外部システム720は、異なる実体によって動作され得るという点で、ソーシャルネットワーキングシステム730から分離される。しかし、様々な実施形態では、ソーシャルネットワーキングシステム730のユーザ(またはメンバー)にソーシャルネットワーキングサービスを提供するため、ソーシャルネットワーキングシステム730および外部システム720は連動する。この意味で、ソーシャルネットワーキングシステム730は、プラットホームまたはバックボーンを提供し、他のシステム(外部システム720など)は、プラットホームまたはバックボーンを使用して、インターネット上でソーシャルネットワーキングサービスおよび機能性をユーザに提供することができる。
ユーザデバイス710は、1つまたは複数のコンピューティングデバイスを備え、1つまたは複数のコンピューティングデバイスは、ユーザから入力を受信し、ネットワーク750を介してデータを伝送および受信することができる。一実施形態では、ユーザデバイス710は、例えば、マイクロソフトウィンドウズ(登録商標)対応オペレーティングシステム(OS)、アップル(登録商標)OSXおよび/またはリナックス(登録商標)ディストリビューションを実行する従来のコンピュータシステムである。別の実施形態では、ユーザデバイス710は、スマートフォン、タブレット、携帯情報端末(PDA)、携帯電話など、コンピュータの機能性を有するデバイスであり得る。ユーザデバイス710は、ネットワーク750を介して通信するように構成される。ユーザデバイス710は、例えば、ユーザデバイス710のユーザがソーシャルネットワーキングシステム730と相互作用できるようにするブラウザアプリケーションなどのアプリケーションを実行することができる。別の実施形態では、ユーザデバイス710は、iOS(登録商標)やアンドロイド(登録商標)などのユーザデバイス710のネイティブのオペレーティングシステムで提供されるアプリケーションプログラミングインタフェース(API)を通じてソーシャルネットワーキングシステム730と相互作用する。ユーザデバイス710は、ネットワーク750を介して外部システム720およびソーシャルネットワーキングシステム730と通信するように構成され、ネットワーク750は、有線および/または無線通信システムを使用する、ローカルエリアおよび/または広域ネットワークのいかなる組合せも含み得る。
一実施形態では、ネットワーク750は、標準通信技術およびプロトコルを使用する。したがって、ネットワーク750は、イーサネット(登録商標)、802.11、WiMAX(登録商標)、3G、4G、CDMA、GSM(登録商標)、LTE、デジタル加入者回線(DSL)などの技術を使用するリンクを含み得る。同様に、ネットワーク750上で使用されるネットワークプロトコルは、マルチプロトコルラベルスイッチング(MPLS)、伝送制御プロトコル/インターネットプロトコル(TCP/IP)、ユーザデータグラムプロトコル(UDP)、ハイパーテキストトランスポートプロトコル(HTTP)、簡易メール転送プロトコル(SMTP)、ファイル転送プロトコル(FTP)および同様のものを含み得る。ネットワーク750上で交換されるデータは、ハイパーテキストマークアップ言語(HTML)および拡張マークアップ言語(XML)を含む技術および/またはフォーマットを使用して表すことができる。それに加えて、すべてのまたはいくつかのリンクは、セキュアソケット層(SSL)、トランスポート層セキュリティ(TLS)およびインターネットプロトコルセキュリティ(IPsec)などの従来の暗号化技術を使用して暗号化することができる。
一実施形態では、ユーザデバイス710は、ブラウザアプリケーション712を使用して、外部システム720からおよびソーシャルネットワーキングシステム730から受信されたマークアップ言語文書714を処理することによって、外部システム720からおよび/またはソーシャルネットワーキングシステム730からのコンテンツを表示することができる。マークアップ言語文書714は、コンテンツや、コンテンツのフォーマットまたはプレゼンテーションについて説明する1つまたは複数の命令を特定する。マークアップ言語文書714に含まれる命令を実行することによって、ブラウザアプリケーション712は、マークアップ言語文書714によって説明されたフォーマットまたはプレゼンテーションを使用して、特定されたコンテンツを表示する。例えば、マークアップ言語文書714は、外部システム720およびソーシャルネットワーキングシステム730から回収されたテキストおよび/または画像データを含む複数のフレームを有するウェブページを生成および表示するための命令を含む。様々な実施形態では、マークアップ言語文書714は、拡張マークアップ言語(XML)データ、拡張ハイパーテキストマークアップ言語(XHTML)データまたは他のマークアップ言語データを含むデータファイルを含む。それに加えて、マークアップ言語文書714は、外部システム720とユーザデバイス710との間のデータ交換を容易にするためのジャバスクリプト(JavaScript)(登録商標)オブジェクトノーテーション(JSON)データ、ジェイソンウィズパディング(JSONP)およびジャバスクリプトデータを含み得る。ユーザデバイス710上のブラウザアプリケーション712は、ジャバスクリプトコンパイラを使用して、マークアップ言語文書714を復号することができる。
また、マークアップ言語文書714は、フラッシュ(FLASH)(登録商標)またはユニティ(Unity)(登録商標)アプリケーション、シルバーライト(SilverLight)(登録商標)アプリケーションフレームワークなどのアプリケーションまたはアプリケーションフレームワークを含むことも、アプリケーションまたはアプリケーションフレームワークにリンクすることもできる。
一実施形態は、ユーザデバイス710は、ユーザデバイス710のユーザが、ソーシャルネットワーキングシステム730にログインしているかどうかを示すデータを含む1つまたは複数のクッキー716も含み、それにより、ソーシャルネットワーキングシステム730からユーザデバイス710に伝達されるデータの変更が可能になり得る。
外部システム720は、ネットワーク750を使用してユーザデバイス710に伝達される1つまたは複数のウェブページ722a、722bを含む1つまたは複数のウェブサーバを含む。外部システム720は、ソーシャルネットワーキングシステム730から分離される。例えば、外部システム720は、第1のドメインと関連付けられ、ソーシャルネットワーキングシステム730は、別々のソーシャルネットワーキングドメインと関連付けられる。外部システム720に含まれるウェブページ722a、722bは、マークアップ言語文書714を含み、マークアップ言語文書714は、コンテンツを特定し、特定されたコンテンツのフォーマットまたはプレゼンテーションを指定する命令を含む。
ソーシャルネットワーキングシステム730は、ソーシャルネットワーク用の1つまたは複数のコンピューティングデバイスを含み、ソーシャルネットワークは、複数のユーザを含み、ソーシャルネットワークの他のユーザとの通信および相互作用を行う能力をソーシャルネットワークのユーザに提供する。いくつかの例では、ソーシャルネットワークは、グラフ(すなわち、エッジおよびノードを含むデータ構造)で表すことができる。また、他のデータ構造も、ソーシャルネットワークを表すために使用することができ、これらに限定されないが、データベース、オブジェクト、クラス、メタ要素、ファイルまたは他の任意のデータ構造を含む。ソーシャルネットワーキングシステム730は、オペレータが管理、運用または制御することができる。ソーシャルネットワーキングシステム730のオペレータは、ソーシャルネットワーキングシステム730内でコンテンツの管理、ポリシの規制および使用率メトリクスの収集を行うための人間、自動化アプリケーションまたは一連のアプリケーションであり得る。いかなるタイプのオペレータも使用することができる。
ユーザは、ソーシャルネットワーキングシステム730に参加し、次いで、接続を希望するソーシャルネットワーキングシステム730の何人もの他のユーザへの接続を追加することができる。本明細書で使用されるように、「友達」という用語は、ユーザがソーシャルネットワーキングシステム730を介して接続、関連性または関係を形成したソーシャルネットワーキングシステム730の他のいかなるユーザも指す。例えば、一実施形態では、ソーシャルネットワーキングシステム730のユーザがソーシャルグラフのノードとして表される場合は、「友達」という用語は、2人のユーザ間で形成されたエッジおよび2人のユーザを直接接続するエッジを指し得る。
接続は、ユーザが明示的に追加することも、ユーザの共通の特性(例えば、同じ教育機関の同窓生であるユーザ)に基づいてソーシャルネットワーキングシステム730が自動的に作り出すこともできる。例えば、第1のユーザは、友達とする他の特定のユーザを明確に選択する。ソーシャルネットワーキングシステム730における接続は、通常、両方向のものであるが、必須ではないため、「ユーザ」および「友達」という用語は、基準フレームに依存する。ソーシャルネットワーキングシステム730のユーザ間の接続は、通常、双方向の(「二方向の」)または「相互の」ものであるが、接続は、単方向のまたは「一方向の」ものでもあり得る。例えば、ボブ(Bob)とジョー(Joe)が両者とも、ソーシャルネットワーキングシステム730のユーザであり、互いに接続されている場合は、ボブとジョーは、互いの接続者である。他方では、ボブは、ジョーによってソーシャルネットワーキングシステム730に伝達されたデータを閲覧するためにジョーとの接続を希望しているが、ジョーは、相互接続の形成を希望していない場合は、単方向の接続を確立することができる。ユーザ間の接続は、直接接続であり得る。しかし、ソーシャルネットワーキングシステム730のいくつかの実施形態は、1つまたは複数の接続レベルまたは隔たりを介して接続を間接的なものにすることができる。
ユーザ間の接続を確立して維持し、ユーザ間の相互作用を可能にすることに加えて、ソーシャルネットワーキングシステム730は、ソーシャルネットワーキングシステム730によってサポートされる様々なタイプのアイテムに対する動作を取る能力をユーザに提供する。これらのアイテムは、ソーシャルネットワーキングシステム730のユーザが属し得るグループまたはネットワーク(すなわち、人々、実体および概念のソーシャルネットワーク)、ユーザが興味を持ちそうなイベントまたはカレンダエントリ、ソーシャルネットワーキングシステム730を介してユーザが使用できるコンピュータベースのアプリケーション、ソーシャルネットワーキングシステム730によってまたはソーシャルネットワーキングシステム730を通じて提供されるサービスを介してユーザがアイテムを購入または販売できるトランザクション、および、ソーシャルネットワーキングシステム730内外でユーザが実行できる広告との相互作用を含み得る。これらは、ソーシャルネットワーキングシステム730上でユーザが作用できるアイテムのほんの数例であり、他の多くのものも可能である。ユーザは、ソーシャルネットワーキングシステム730もしくは外部システム720で表すことができるか、ソーシャルネットワーキングシステム730から分離することができるか、または、ネットワーク750を介してソーシャルネットワーキングシステム730と結合することができればどんなものとでも相互作用することができる。
また、ソーシャルネットワーキングシステム730は、様々な実体をリンクすることもできる。例えば、ソーシャルネットワーキングシステム730は、ユーザが、API、ウェブサービスまたは他の通信チャネルを通じて、互いに、および、外部システム720または他の実体と相互作用できるようにする。ソーシャルネットワーキングシステム730は、複数のエッジによって相互接続された複数のノードを含む「ソーシャルグラフ」を生成して維持する。ソーシャルグラフの各ノードは、別のノードに作用し得るおよび/または別のノードによって作用され得る実体を表し得る。ソーシャルグラフは、様々なタイプのノードを含み得る。ノードのタイプの例は、ユーザ、人間ではない実体、コンテンツアイテム、ウェブページ、グループ、活動、メッセージ、概念、および、ソーシャルネットワーキングシステム730でオブジェクトによって表すことができる他の任意のものを含む。ソーシャルグラフの2つのノード間のエッジは、ノード関係からまたはノードのうちの1つによって他のノードに対して実行された動作から生じ得る、2つのノード間の特定の種類の接続または関連性を表し得る。いくつかの事例では、ノード間のエッジは、重み付けすることができる。エッジの重みは、ノード間の接続または関連性の強度など、エッジと関連付けられた属性を表し得る。異なるタイプのエッジは、異なる重みで提供することができる。例えば、あるユーザが別のユーザを「好む」際に作成されたエッジにはある重みを与える一方で、ユーザが別のユーザと友達になった際に作成されたエッジには異なる重みを与えることができる。
例として、第1のユーザが第2のユーザを友達と見なすと、第1のユーザを表すノードと第2のユーザを表す第2のノードとを接続するソーシャルグラフのエッジが生成される。様々なノードが互いに関連するかまたは相互作用するため、ソーシャルネットワーキングシステム730は、関係および相互作用を反映するため、様々なノードを接続するエッジを変更する。
また、ソーシャルネットワーキングシステム730は、ソーシャルネットワーキングシステム730とのユーザの相互作用を強化するユーザが生成したコンテンツも含む。ユーザが生成したコンテンツは、ユーザがソーシャルネットワーキングシステム730に追加、アップロード、送信または「掲示」できるものであればどんなものも含み得る。例えば、ユーザは、ユーザデバイス710からソーシャルネットワーキングシステム730にポストを伝達する。ポストは、ステータス更新もしくは他のテキストデータ、位置情報、写真などの画像、ビデオ、リンク、音楽、または、他の同様のデータおよび/もしくはメディアなどのデータを含み得る。また、コンテンツは、第三者がソーシャルネットワーキングシステム730に追加することもできる。コンテンツ「アイテム」は、ソーシャルネットワーキングシステム730でオブジェクトとして表される。このように、ソーシャルネットワーキングシステム730のユーザは、様々な通信チャネルを通じて、様々なタイプのメディアのテキストおよびコンテンツアイテムを掲示することによって、互いに通信することが推奨される。そのような通信は、ユーザの互いの相互作用を増大し、ユーザがソーシャルネットワーキングシステム730と相互作用する頻度を増大する。
ソーシャルネットワーキングシステム730は、ウェブサーバ732、API要求サーバ734、ユーザプロファイルストア736、接続ストア738、行動ロガー740、活動記録742、認証サーバ744およびデジタルビデオ安定化モジュール746を含む。本発明の実施形態では、ソーシャルネットワーキングシステム730は、様々なアプリケーションに対する追加の、より少ないまたは異なるコンポーネントを含み得る。システムの細部を曖昧にしないように、ネットワークインタフェース、セキュリティメカニズム、負荷分散装置、フェイルオーバサーバ、管理およびネットワーク運用コンソール、ならびに、同様のものなどの他のコンポーネントは示されていない。
ユーザプロファイルストア736は、職歴、学歴、趣味または好み、位置、および、ユーザによって宣言されているかまたはソーシャルネットワーキングシステム730によって推測されている同様のものなど、伝記的な、人口学的なおよび他のタイプの記述的情報を含む、ユーザアカウントについての情報を維持する。この情報は、各ユーザが一意に識別されるように、ユーザプロファイルストア736に格納される。また、ソーシャルネットワーキングシステム730は、異なるユーザ間の1つまたは複数の接続について説明するデータを接続ストア738に格納する。接続情報は、同様のまたは共通の職歴、グループメンバーシップ、趣味または学歴を有するユーザを示し得る。それに加えて、ソーシャルネットワーキングシステム730は、異なるユーザ間のユーザが定義した接続を含み、ユーザが他のユーザとの関係を指定できるようにする。例えば、ユーザが定義した接続は、友達、同僚、パートナなど、ユーザの現実の関係に類似した他のユーザとの関係をユーザが作り出せるようにする。ユーザは、事前に定義された接続タイプから選択することも、必要に応じてユーザ自身の接続タイプを定義することもできる。また、人間ではない実体、バケット、クラスタセンタ、画像、興味、ページ、外部システム、概念および同様のものなどのソーシャルネットワーキングシステム730の他のノードとの接続も、接続ストア738に格納される。
ソーシャルネットワーキングシステム730は、ユーザが相互作用できるオブジェクトについてのデータを維持する。このデータを維持するため、ユーザプロファイルストア736および接続ストア738は、ソーシャルネットワーキングシステム730によって維持される対応するオブジェクトタイプのインスタンスを格納する。各オブジェクトタイプは、オブジェクトのタイプに適切な情報の格納に適した情報フィールドを有する。例えば、ユーザプロファイルストア736は、ユーザのアカウントおよびユーザのアカウントに関連する情報に関する説明に適したフィールドを有するデータ構造を含む。特定のタイプの新しいオブジェクトが作成されると、ソーシャルネットワーキングシステム730は、対応するタイプの新しいデータ構造を初期化し、一意のオブジェクト識別子をそれに割り当て、必要に応じてオブジェクトへのデータの追加を開始する。このことは、例えば、ユーザがソーシャルネットワーキングシステム730のユーザになると起こり得、ソーシャルネットワーキングシステム730は、ユーザプロファイルの新しいインスタンスをユーザプロファイルストア736に生成し、一意識別子をユーザアカウントに割り当て、ユーザアカウントのフィールドへのユーザが提供する情報の投入を開始する。
接続ストア738は、ユーザと他のユーザとの接続、外部システム720との接続または他の実体との接続に関する説明に適したデータ構造を含む。また、接続ストア738は、接続タイプをユーザの接続と関連付けることもでき、その関連性をユーザのプライバシ設定と併せて使用して、ユーザについての情報へのアクセスを規制することができる。本発明の実施形態では、ユーザプロファイルストア736および接続ストア738は、連合データベースとして実装することができる。
接続ストア738、ユーザプロファイルストア736および活動記録742に格納されたデータは、ソーシャルネットワーキングシステム730がソーシャルグラフを生成できるようにし、ソーシャルグラフは、ノードを使用して、ノードを接続する様々なオブジェクトおよびエッジを特定し、異なるオブジェクト間の関係を特定する。例えば、第1のユーザがソーシャルネットワーキングシステム730の第2のユーザとの接続を確立する場合、ユーザプロファイルストア736からの第1のユーザおよび第2のユーザのユーザアカウントは、ソーシャルグラフのノードとして機能し得る。接続ストア738によって格納された第1のユーザと第2のユーザとの間の接続は、第1のユーザおよび第2のユーザと関連付けられたノード間のエッジである。この例を続けると、第2のユーザは、ソーシャルネットワーキングシステム730内で第1のユーザにメッセージを送信することができる。格納することができる、メッセージを送信する動作は、第1のユーザおよび第2のユーザを表すソーシャルグラフの2つのノード間の別のエッジである。それに加えて、メッセージ自体を、第1のユーザおよび第2のユーザを表すノードに接続された別のノードとして特定し、ソーシャルグラフに含めることができる。
別の例では、第1のユーザは、ソーシャルネットワーキングシステム730によって維持される画像に(またはその代替として、ソーシャルネットワーキングシステム730の外側の別のシステムによって維持される画像に)第2のユーザをタグ付けすることができる。画像はそれ自体、ソーシャルネットワーキングシステム730のノードとして表すことができる。このタグ付け動作は、第1のユーザと第2のユーザとの間のエッジを作成することや、ユーザの各々と画像(これもソーシャルグラフのノードである)との間のエッジを作成することができる。さらに別の例では、ユーザがイベントへの出席を確認する場合、ユーザおよびイベントは、ユーザプロファイルストア736から得られたノードであり、イベントへの出席は、活動記録742から回収することができるノード間のエッジである。ソーシャルグラフを生成して維持することにより、ソーシャルネットワーキングシステム730は、異なるタイプのオブジェクト、ならびに、それらのオブジェクト間の相互作用および接続について説明するデータを含み、社会的に関連する情報の豊富な供給源を提供する。
ウェブサーバ732は、ネットワーク750を介して、ソーシャルネットワーキングシステム730を1つもしくは複数のユーザデバイス710および/または1つもしくは複数の外部システム720にリンクする。ウェブサーバ732は、ウェブページや、ジャバ(Java)(登録商標)、ジャバスクリプト(JavaScript)(登録商標)、フラッシュ(Flash)(登録商標)、XMLなどの他のウェブ関連のコンテンツをサービス提供する。ウェブサーバ732は、メールサーバ、または、ソーシャルネットワーキングシステム730と1つまたは複数のユーザデバイス710との間でメッセージを受信およびルーティングするための他のメッセージング機能性を含み得る。メッセージは、インスタントメッセージ、キューに入れられたメッセージ(例えば、Eメール)、テキストおよびSMSメッセージまたは他の任意の適したメッセージングフォーマットであり得る。
API要求サーバ734は、1つまたは複数の外部システム720およびユーザデバイス710が、1つまたは複数のAPI関数を呼び出すことによって、ソーシャルネットワーキングシステム730からアクセス情報を呼び出せるようにする。また、API要求サーバ734は、外部システム720が、APIを呼び出すことによって、ソーシャルネットワーキングシステム730に情報を送信できるようにもする。一実施形態では、外部システム720は、ネットワーク750を介してソーシャルネットワーキングシステム730にAPI要求を送信し、API要求サーバ734は、API要求を受信する。API要求サーバ734は、API要求と関連付けられたAPIを呼び出すことによって要求を処理して適切な応答を生成し、API要求サーバ734は、ネットワーク750を介して外部システム720に適切な応答を伝達する。例えば、API要求に応答して、API要求サーバ734は、外部システム720にログインしたユーザの接続者などのユーザと関連付けられたデータを収集し、収集したデータを外部システム720に伝達する。別の実施形態では、ユーザデバイス710は、外部システム720と同じ方法で、APIを介してソーシャルネットワーキングシステム730と通信する。
行動ロガー740は、ソーシャルネットワーキングシステム730内および/またはソーシャルネットワーキングシステム730外のユーザの動作についてウェブサーバ732から通信を受信することができる。行動ロガー740は、ユーザの動作についての情報を活動記録742に投入し、ソーシャルネットワーキングシステム730が、ソーシャルネットワーキングシステム730内およびソーシャルネットワーキングシステム730外でそのユーザによって取られた様々な動作を発見できるようにする。ソーシャルネットワーキングシステム730上で別のノードに関して特定のユーザが取るいかなる動作も、活動記録742でまたは同様のデータベースもしくは他のデータリポジトリで維持される情報を通じて、各ユーザアカウントと関連付けることができる。特定されて格納されるソーシャルネットワーキングシステム730内でユーザが取る動作の例は、例えば、別のユーザへの接続を追加すること、別のユーザにメッセージを送信すること、別のユーザからメッセージを読むこと、別のユーザと関連付けられたコンテンツを閲覧すること、別のユーザによって掲示されたイベントに出席すること、画像を掲示すること、画像の掲示を試みること、または、別のユーザもしくは別のオブジェクトと相互作用する他の動作を含み得る。ソーシャルネットワーキングシステム730内でユーザが動作を取ると、その動作は活動記録742に記録される。一実施形態では、ソーシャルネットワーキングシステム730は、エントリに関するデータベースとして活動記録742を維持する。ソーシャルネットワーキングシステム730内で動作を取ると、動作に対するエントリが活動記録742に追加される。活動記録742は、動作記録と呼ぶことができる。
それに加えて、ユーザ動作は、ソーシャルネットワーキングシステム730から分離された外部システム720などのソーシャルネットワーキングシステム730の外側の実体内で起こる概念および動作と関連付けることができる。例えば、行動ロガー740は、ウェブサーバ732から外部システム720とのユーザの相互作用について説明するデータを受信することができる。この例では、外部システム720は、ソーシャルグラフで構造化された動作およびオブジェクトに従って、ユーザの相互作用を報告する。
ユーザが外部システム720と相互作用する動作の他の例は、ユーザが外部システム720もしくは別の実体への興味を示すこと、外部システム720もしくは外部システム720内のウェブページ722aについて論じているソーシャルネットワーキングシステム730にユーザがコメントを掲示すること、ソーシャルネットワーキングシステム730にユーザが外部システム720と関連付けられたユニフォームリソースロケータ(URL)もしくは他の識別子を掲示すること、外部システム720と関連付けられたイベントにユーザが出席すること、または、外部システム720に関連するユーザによる他の任意の動作を含む。したがって、活動記録742は、ソーシャルネットワーキングシステム730のユーザと、ソーシャルネットワーキングシステム730から分離された外部システム720との相互作用について説明する動作を含み得る。
認証サーバ744は、ソーシャルネットワーキングシステム730のユーザの1つまたは複数のプライバシ設定を実施する。ユーザのプライバシ設定は、ユーザと関連付けられた特定の情報をどのように共有できるかを決定する。プライバシ設定は、ユーザと関連付けられた特定の情報の仕様、および、情報を共有できる1つまたは複数の実体の仕様を含む。情報を共有できる実体の例は、他のユーザ、アプリケーション、外部システム720、または、潜在的に情報にアクセスできる任意の実体を含み得る。ユーザが共有できる情報は、ユーザアカウント情報(プロファイル写真など)、ユーザと関連付けられた電話番号、ユーザの接続者、ユーザが取った動作(接続の追加など)、ユーザプロファイル情報の変更および同様のものを含む。
プライバシ設定仕様は、異なる粒度レベルで提供することができる。例えば、プライバシ設定は、他のユーザと共有すべき特定の情報を特定することができる。プライバシ設定は、職場の電話番号または特定の一連の関連情報(プロファイル写真、自宅の電話番号およびステータスを含む個人情報など)を特定する。あるいは、プライバシ設定は、ユーザと関連付けられたすべての情報に適用することができる。また、特定の情報にアクセスできる一連の実体の仕様も、様々な粒度レベルで指定することができる。情報を共有できる様々な一連の実体は、例えば、ユーザのすべての友達、友達のすべての友達、すべてのアプリケーションまたはすべての外部システム720を含み得る。一実施形態は、一連の実体の仕様が実体の列挙を含むことを可能にする。例えば、ユーザは、ある情報へのアクセスが認められている外部システム720のリストを提供することができる。別の実施形態は、仕様が、情報へのアクセスが認められていない例外と共に一連の実体を含むことを可能にする。例えば、ユーザは、すべての外部システム720がユーザの職場情報にアクセスできるようにするが、職場情報へのアクセスが認められていない外部システム720のリストを指定することができる。ある実施形態は、「ブロックリスト」という、ある情報へのアクセスが認められていない例外のリストを呼び出す。ユーザによって指定されたブロックリストに属する外部システム720は、プライバシ設定で指定された情報へのアクセスが阻止される。情報の仕様の粒度および情報が共有される実体の仕様の粒度の様々な組合せが可能である。例えば、すべての個人情報は、友達と共有することができるが、すべての職場情報は、友達の友達と共有することができる。
認証サーバ744は、ユーザの友達、外部システム720ならびに/または他のアプリケーションおよび実体による、ユーザと関連付けられたある情報へのアクセスが可能かどうかを判断するための論理を含む。外部システム720は、ユーザのより個人的で機密な情報(ユーザの職場の電話番号など)にアクセスするための認証サーバ744からの認証が必要であり得る。ユーザのプライバシ設定に基づいて、認証サーバ744は、別のユーザ、外部システム720、アプリケーションまたは別の実体に対して、ユーザと関連付けられた情報(ユーザが取った動作についての情報を含む)へのアクセスが認められているかどうかを判断する。
ソーシャルネットワーキングシステム730は、デジタルビデオ安定化モジュール746を含み得る。デジタルビデオ安定化モジュール746は、空き領域が目に見えないかまたは最小閾値未満であるという制約の下、平滑なカメラ配向のセットを演算することができる。次いで、デジタルビデオ安定化モジュール746は、新しい平滑化されたカメラ配向のセットに基づいて、ゆがんだフレームを生成することができる。一実施形態では、デジタルビデオ安定化モジュール746は、図4のデジタルビデオ安定化400として実装することができる。
ハードウェアの実装
前述のプロセスおよび特徴は、多種多様なマシンおよびコンピュータシステムアーキテクチャによって、ならびに、多種多様なネットワークおよびコンピューティング環境で実装することができる。図8は、本発明の実施形態による、本明細書で説明される実施形態のうちの1つまたは複数の実装に使用することができるコンピュータシステム800の例を示す。コンピュータシステム800は、本明細書で論じられるプロセスおよび特徴をコンピュータシステム800に実行させる命令セットを含む。コンピュータシステム800は、他のマシンに接続(例えば、ネットワーク接続)することができる。ネットワーク接続された配置では、コンピュータシステム800は、クライアントサーバネットワーク環境におけるサーバマシンもしくはクライアントマシンの資格で、または、ピアツーピア(または分散型)ネットワーク環境におけるピアマシンとして動作することができる。本発明の実施形態では、コンピュータシステム800は、本明細書で説明されるソーシャルネットワーキングシステムのコンポーネントであり得る。本発明の実施形態では、コンピュータシステム800は、ソーシャルネットワーキングシステム830のすべてまたは一部を構成する多くのサーバのうちの1つのサーバであり得る。
コンピュータシステム800は、本明細書で説明されるプロセスおよび特徴を対象とする、プロセッサ802、キャッシュ804、ならびに、コンピュータ可読媒体上に格納された1つまたは複数の実行可能なモジュールおよびドライバを含む。それに加えて、コンピュータシステム800は、高性能入力/出力(I/O)バス806および標準I/Oバス808を含む。ホストブリッジ810は、プロセッサ802と高性能I/Oバス806とを結合し、I/Oバスブリッジ812は、2つのバス806および808を互いに結合する。システムメモリ814および1つまたは複数のネットワークインタフェース816は、高性能I/Oバス806と結合される。コンピュータシステム800は、ビデオメモリおよびビデオメモリと結合された表示デバイス(図示せず)をさらに含み得る。大容量記憶装置818およびI/Oポート820は、標準I/Oバス808と結合される。コンピュータシステム800は、任意選択により、標準I/Oバス808と結合される、キーボードおよびポインティングデバイス、表示デバイスまたは他の入力/出力デバイス(図示せず)を含み得る。集合的に、これらの要素は、コンピュータハードウェアシステムの広義のカテゴリを表すことが意図され、これらに限定されないが、カリフォルニア州サンタクララ市のインテル社によって製造されたx86互換プロセッサ、およびカリフォルニア州サニーベール市のアドバンストマイクロデバイセズ社によって製造されたx86互換プロセッサ、ならびに他の任意の適したプロセッサに基づくコンピュータシステムを含む。
オペレーティングシステムは、ソフトウェアアプリケーション(図示せず)へのおよびソフトウェアアプリケーションからのデータの入力および出力を含む、コンピュータシステム800の動作を管理および制御する。オペレーティングシステムは、システム上で実行されているソフトウェアアプリケーションとシステムのハードウェアコンポーネントとの間のインタフェースを提供する。リナックス(LINUX)(登録商標)オペレーティングシステム、カリフォルニア州クパチーノ市のアップルコンピュータ社から入手可能なアップルマッキントッシュ(登録商標)オペレーティングシステム、UNIX(登録商標)オペレーティングシステム、マイクロソフト(Microsoft)(登録商標)ウィンドウズ(Windows)(登録商標)オペレーティングシステム、BSDオペレーティングシステムおよび同様のものなどの適したいかなるオペレーティングシステムも使用することができる。他の実装形態も可能である。
コンピュータシステム800の要素については、以下でさらに詳細に説明される。具体的には、ネットワークインタフェース816は、コンピュータシステム800と、イーサネット(Ethernet)(登録商標)(例えば、IEEE802.3)ネットワーク、バックプレーンなどの広範なネットワークとの間の通信を提供する。大容量記憶装置818は、上記で特定されたそれぞれのコンピューティングシステムによって実装される上記で説明されるプロセスおよび特徴を実行するためのデータおよびプログラミング命令の永久記憶を提供し、システムメモリ814(例えば、DRAM)は、プロセッサ802によって実行されると、データおよびプログラミング命令の一時記憶を提供する。I/Oポート820は、コンピュータシステム800と結合することができる追加の周辺デバイス間の通信を提供する1つまたは複数のシリアルおよび/またはパラレル通信ポートであり得る。
コンピュータシステム800は、様々なシステムアーキテクチャを含み得、コンピュータシステム800の様々なコンポーネントは、再構成することができる。例えば、キャッシュ804は、プロセッサ802内蔵であり得る。あるいは、キャッシュ804とプロセッサ802は、「プロセッサモジュール」として一緒にパックすることができ、プロセッサ802は、「プロセッサコア」と呼ばれる。その上、本発明のある実施形態は、上記のコンポーネントのすべてを必要とすることも、含むこともない場合がある。例えば、標準I/Oバス808と結合された周辺デバイスは、高性能I/Oバス806と結合することができる。それに加えて、いくつかの実施形態では、単一のバスしか存在しない場合があり、コンピュータシステム800のコンポーネントは、単一のバスに結合される。その上、コンピュータシステム800は、追加のプロセッサ、記憶装置またはメモリなどの追加のコンポーネントを含み得る。
一般に、本明細書で説明されるプロセスおよび特徴は、オペレーティングシステムもしくは特定のアプリケーション、コンポーネント、プログラム、オブジェクト、モジュールまたは「プログラム」と呼ばれる一連の命令の一部として実装することができる。例えば、1つまたは複数のプログラムは、本明細書で説明される特定のプロセスを実行するために使用することができる。プログラムは、通常、1つまたは複数のプロセッサによって読み取られて実行されると、本明細書で説明されるプロセスおよび特徴を実行するための動作をコンピュータシステム800に実行させる、コンピュータシステム800の様々なメモリおよび記憶装置に1つまたは複数の命令を含む。本明細書で説明されるプロセスおよび特徴は、ソフトウェア、ファームウェア、ハードウェア(例えば、特定用途向け集積回路)またはそれらの任意の組合せで実装することができる。
一実装形態では、本明細書で説明されるプロセスおよび特徴は、分散型コンピューティング環境で個別にまたはまとめて、コンピュータシステム800によって実行される一連の実行可能なモジュールとして実装される。前述のモジュールは、ハードウェア、コンピュータ可読媒体(または機械可読媒体)上に格納された実行可能なモジュールまたは両方の組合せによって実現することができる。例えば、モジュールは、プロセッサ802などのハードウェアシステムのプロセッサによって実行される複数のまたは一連の命令を含み得る。最初は、一連の命令は、大容量記憶装置818などの記憶装置上に格納することができる。しかし、一連の命令は、適したいかなるコンピュータ可読記憶媒体上にも格納することができる。その上、一連の命令は、ローカルで格納する必要はなく、ネットワークインタフェース816を介してリモート記憶装置(ネットワーク上のサーバなど)から受信することができる。命令は、大容量記憶装置818などの記憶装置からシステムメモリ814にコピーされ、次いで、プロセッサ802によってアクセスされて実行される。様々な実装形態では、1つまたは複数のモジュールは、並列処理環境における複数のサーバなどの1つまたは複数の場所で、1つのプロセッサまたは複数のプロセッサが実行することができる。
コンピュータ可読媒体の例は、これらに限定されないが、揮発性および不揮発性メモリデバイス、ソリッドステートメモリ、フロッピー(登録商標)ディスクおよび他の取り外し可能型ディスク、ハードディスクドライブ、磁気媒体、光ディスク(例えば、コンパクトディスク読み取り専用メモリ(CDROM)、デジタル多用途ディスク(DVD)、他の同様の非一時的な(または一時的な)有形の(または非有形の)記憶媒体、または、本明細書で説明されるプロセスおよび特徴のいずれか1つまたは複数を実行するためにコンピュータシステム800によって実行するための一連の命令の格納、符号化もしくは運搬に適した任意のタイプの媒体などの記録可能なタイプの媒体を含む。
説明を目的として、多くの特定の詳細は、説明の徹底的な理解を提供するために記載される。しかし、当業者であれば、これらの特定の詳細なしで本開示の実施形態を実践できることが明らかである。いくつかの例では、モジュール、構造、プロセス、特徴、およびデバイスは、説明を曖昧にすることを避けるため、ブロック図の形態で示される。他の例では、データおよび論理フローを表すため、機能的なブロック図およびフロー図が示される。ブロック図およびフロー図のコンポーネント(例えば、モジュール、ブロック、構造、デバイス、特徴など)は、本明細書で明確に説明されるものや示されるもの以外の方式で、様々に組み合わせる、分離する、取り除く、並べ替える、および置き換えることができる。
この明細書における「一実施形態」、「他の実施形態」、「一連の実施形態のうちの1つ」、「いくつかの実施形態」、「様々な実施形態」、または同様のものに対する言及は、実施形態に関連して説明される特定の特徴、設計、構造、または特性が本開示の少なくとも1つの実施形態に含まれることを意味する。例えば、本明細書の様々な場所での「一実施形態では」という記載は、必ずしもすべてが同じ実施形態を指すとは限らず、他の実施形態と相互に排他的な別々の実施形態または代替の実施形態ということでもない。その上、「一実施形態」または同様のものへの明確な言及の有無にかかわらず、様々な特徴が説明され、様々な特徴は、いくつかの実施形態では、様々に組み合わせたり、含めたりすることができるが、他の実施形態では、様々に省略することもできる。同様に、いくつかの実施形態に対する優先または要件であり得るが、他の実施形態ではそうではない、様々な特徴が説明される。
本明細書で使用される言語は、主に、読み易さと教示の目的のために選択されており、発明の主題を叙述するまたは限定するためには選択されていない。したがって、本発明の範囲は、この詳細な説明によってではなくむしろ、これに基づく出願において開示される任意の請求項によって限定されることを意図する。それに従って、本発明の実施形態の開示は、以下の特許請求の範囲に記載される本発明の範囲を例示することを意図するが、限定することは意図しない。

Claims (13)

  1. コンピュータにより実施される方法であって、
    コンピュータシステムが、ビデオに関連する入力画像フレームを受信するステップと、
    前記コンピュータシステムが、ジャイロスコープからのカメラ配向データを受信するステップと、
    前記コンピュータシステムが、前記カメラ配向データを平滑化して一組の平滑化されたカメラ配向データを生成するステップであって、前記カメラ配向データを平滑化することは、1つまたは複数の制約を課しつつ、エネルギー関数を最小化することを含む、前記一組の平滑化されたカメラ配向データを生成するステップと、
    前記コンピュータシステムが、少なくとも前記入力画像フレームおよび前一組の平滑化されたカメラ配向データに基づいて安定化された画像フレームを生成するステップを含むコンピュータにより実施される方法。
  2. 前記ビデオの画像フレームは、前記入力画像フレームを含む、請求項1に記載の方法。
  3. 前記入力画像フレームの数は、前記ビデオの画像フレームの数に等しい、請求項1に記載の方法。
  4. 前記カメラ配向データを平滑化することは、前記一組の平滑化されたカメラ配向データに基づいて再配向された入力画像フレームの空き領域の量を最小化しつつ、連続的な入力画像フレーム間の回転速度を最小化することを含み、前記空き領域の量は、閾値を満たすように最小化される、請求項1に記載の方法。
  5. 前記カメラ配向データを平滑化することは、カメラモーションと空き領域の制約に基づいてズームを選択することをさらに含む、請求項に記載の方法。
  6. 前記安定化された画像フレームを生成するステップは、前記一組の平滑化されたカメラ配向データのセットに基づいて前記入力画像フレームをゆがめることをさらに含む、請求項1に記載の方法。
  7. 前記コンピュータシステムは、前記ジャイロスコープを含むモバイルデバイスである、請求項1に記載の方法。
  8. システムであって、
    少なくとも1つのプロセッサと、
    前記少なくとも1つのプロセッサに
    ビデオに関連する入力画像フレームを受信すること、
    ジャイロスコープからのカメラ配向データを受信すること、
    前記カメラ配向データを平滑化して一組の平滑化されたカメラ配向データを生成することであって、前記カメラ配向データを平滑化することは、1つまたは複数の制約を課しつつ、エネルギー関数を最小化することを含む、前記一組の平滑化されたカメラ配向データを生成すること、
    少なくとも前記入力画像フレームおよび前一組の平滑化されたカメラ配向データに基づいて安定化された画像フレームを生成するこを実行するように指示するように構成された命令を記憶するメモリとを備えるシステム。
  9. 前記ビデオの画像フレームは、前記入力画像フレームを含む、請求項に記載のシステム。
  10. 前記入力画像フレームの数は、前記ビデオの画像フレームの数に等しい、請求項に記載のシステム。
  11. コンピュータ実行可能な命令を格納する非一時的コンピュータ記憶媒体であって、前記コンピュータ実行可能な命令は、実行時にコンピュータシステムにコンピュータにより実行される方法を実行させ、前記方法は、
    ビデオに関連する入力画像フレームを受信するステップと、
    前記コンピュータシステムが、ジャイロスコープからのカメラ配向データを受信するステップと、
    前記カメラ配向データを平滑化して一組の平滑化されたカメラ配向データを生成するステップであって、前記カメラ配向データを平滑化することは、1つまたは複数の制約を課しつつ、エネルギー関数を最小化することを含む、前記一組の平滑化されたカメラ配向データを生成するステップと、
    少なくとも前記入力画像フレームおよび前一組の平滑化されたカメラ配向データに基づいて安定化された画像フレームを生成するステップを含む、非一時的コンピュータ記憶媒体。
  12. 前記ビデオの画像フレームは、前記入力画像フレームを含む、請求項11に記載の非一時的コンピュータ記憶媒体。
  13. 前記入力画像フレームの数は、前記ビデオの画像フレームの数に等しい、請求項11に記載の非一時的コンピュータ記憶媒体。
JP2018020047A 2012-12-11 2018-02-07 制約ベースの回転平滑化を介してデジタルビデオを安定化するためのシステムおよび方法 Expired - Fee Related JP6605640B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2019189053A JP6937809B2 (ja) 2012-12-11 2019-10-16 制約ベースの回転平滑化を介してデジタルビデオを安定化するためのシステムおよび方法

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US201261735976P 2012-12-11 2012-12-11
US61/735,976 2012-12-11
US14/101,252 2013-12-09
US14/101,252 US9071756B2 (en) 2012-12-11 2013-12-09 Systems and methods for digital video stabilization via constraint-based rotation smoothing
EP13196486.8A EP2744192B1 (en) 2012-12-11 2013-12-10 Systems and methods for digital video stabilization via constraint-based rotation smoothing
EP13196486.8 2013-12-10

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2015547507A Division JP6608700B2 (ja) 2012-12-11 2013-12-11 制約ベースの回転平滑化を介してデジタルビデオを安定化するためのシステムおよび方法

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2019189053A Division JP6937809B2 (ja) 2012-12-11 2019-10-16 制約ベースの回転平滑化を介してデジタルビデオを安定化するためのシステムおよび方法

Publications (2)

Publication Number Publication Date
JP2018085775A JP2018085775A (ja) 2018-05-31
JP6605640B2 true JP6605640B2 (ja) 2019-11-13

Family

ID=49726634

Family Applications (3)

Application Number Title Priority Date Filing Date
JP2015547507A Active JP6608700B2 (ja) 2012-12-11 2013-12-11 制約ベースの回転平滑化を介してデジタルビデオを安定化するためのシステムおよび方法
JP2018020047A Expired - Fee Related JP6605640B2 (ja) 2012-12-11 2018-02-07 制約ベースの回転平滑化を介してデジタルビデオを安定化するためのシステムおよび方法
JP2019189053A Active JP6937809B2 (ja) 2012-12-11 2019-10-16 制約ベースの回転平滑化を介してデジタルビデオを安定化するためのシステムおよび方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2015547507A Active JP6608700B2 (ja) 2012-12-11 2013-12-11 制約ベースの回転平滑化を介してデジタルビデオを安定化するためのシステムおよび方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2019189053A Active JP6937809B2 (ja) 2012-12-11 2019-10-16 制約ベースの回転平滑化を介してデジタルビデオを安定化するためのシステムおよび方法

Country Status (11)

Country Link
US (4) US9071756B2 (ja)
EP (1) EP2744192B1 (ja)
JP (3) JP6608700B2 (ja)
KR (1) KR102003012B1 (ja)
CN (1) CN104982027B (ja)
AU (3) AU2013359372B2 (ja)
BR (1) BR112015013565A2 (ja)
CA (1) CA2893802C (ja)
IL (1) IL239249B (ja)
MX (1) MX345710B (ja)
WO (1) WO2014093517A1 (ja)

Families Citing this family (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140184615A1 (en) * 2012-12-28 2014-07-03 Nokia Corporation Sequential Rendering For Field-Sequential Color Displays
US9554048B2 (en) * 2013-09-26 2017-01-24 Apple Inc. In-stream rolling shutter compensation
CN104954631B (zh) * 2014-03-25 2018-02-27 腾讯科技(深圳)有限公司 一种视频处理方法、装置和系统
US9413963B2 (en) 2014-05-30 2016-08-09 Apple Inc. Video image stabilization
US9674438B2 (en) 2014-07-06 2017-06-06 Apple Inc. Low light video image stabilization strength modulation
CN105306804B (zh) * 2014-07-31 2018-08-21 北京展讯高科通信技术有限公司 智能终端及其视频稳像方法及装置
US9596411B2 (en) 2014-08-25 2017-03-14 Apple Inc. Combined optical and electronic image stabilization
US9398217B2 (en) 2014-10-15 2016-07-19 Microsoft Technology Licensing, Llc Video stabilization using padded margin pixels
US9392174B2 (en) * 2014-12-11 2016-07-12 Facebook, Inc. Systems and methods for time-lapse selection subsequent to capturing media content
US9948920B2 (en) 2015-02-27 2018-04-17 Qualcomm Incorporated Systems and methods for error correction in structured light
US10068338B2 (en) 2015-03-12 2018-09-04 Qualcomm Incorporated Active sensing spatial resolution improvement through multiple receivers and code reuse
US9530215B2 (en) 2015-03-20 2016-12-27 Qualcomm Incorporated Systems and methods for enhanced depth map retrieval for moving objects using active sensing technology
US9635339B2 (en) 2015-08-14 2017-04-25 Qualcomm Incorporated Memory-efficient coded light error correction
US9846943B2 (en) 2015-08-31 2017-12-19 Qualcomm Incorporated Code domain power control for structured light
US10084962B2 (en) 2015-11-16 2018-09-25 Google Llc Spherical video stabilization based on accelerometer data
CN105282400B (zh) * 2015-11-20 2018-07-13 北京理工大学 一种基于几何插值的高效视频稳定方法
EP3391642B1 (en) * 2015-12-16 2020-02-05 GoPro, Inc. Dynamic synchronization of frame rate to a detected cadence in a time lapse image sequence
WO2017107075A1 (en) * 2015-12-22 2017-06-29 SZ DJI Technology Co., Ltd. System, method, and mobile platform for supporting bracketing imaging
US11477382B2 (en) * 2016-02-19 2022-10-18 Fotonation Limited Method of stabilizing a sequence of images
EP3417606B1 (en) * 2016-02-19 2020-08-12 FotoNation Limited A method of stabilizing a sequence of images
US9787902B1 (en) 2016-06-10 2017-10-10 Apple Inc. Video image stabilization with enforced stabilization constraints
US11057566B2 (en) 2016-10-20 2021-07-06 Spookfish Innovations Pty Ltd Image synthesis system
US10547784B2 (en) * 2017-06-19 2020-01-28 SighTour Technologies, Inc. Image stabilization
US10477064B2 (en) 2017-08-21 2019-11-12 Gopro, Inc. Image stitching with electronic rolling shutter correction
US11245887B2 (en) 2017-09-14 2022-02-08 Samsung Electronics Co., Ltd. Electronic device and operation method therefor
US10462370B2 (en) 2017-10-03 2019-10-29 Google Llc Video stabilization
US10796185B2 (en) * 2017-11-03 2020-10-06 Facebook, Inc. Dynamic graceful degradation of augmented-reality effects
US10171738B1 (en) 2018-05-04 2019-01-01 Google Llc Stabilizing video to reduce camera and face movement
WO2019222544A1 (en) * 2018-05-16 2019-11-21 Iooi System and method for navigating content from multiple users on a digital device
WO2019222059A1 (en) * 2018-05-16 2019-11-21 Gopro, Inc. Systems and methods for providing rotational motion correction
US10587807B2 (en) * 2018-05-18 2020-03-10 Gopro, Inc. Systems and methods for stabilizing videos
JP2020031264A (ja) * 2018-08-20 2020-02-27 ソニーセミコンダクタソリューションズ株式会社 信号処理装置、撮像装置、信号処理方法
US10432864B1 (en) 2018-09-19 2019-10-01 Gopro, Inc. Systems and methods for stabilizing videos
KR102573302B1 (ko) 2018-10-10 2023-08-31 삼성전자 주식회사 영상의 안정화를 위한 카메라 모듈, 그것을 포함하는 전자 장치 및 전자 장치의 영상 안정화 방법
JP7206797B2 (ja) * 2018-10-22 2023-01-18 株式会社リコー 撮像装置、情報処理装置、補正値計算方法およびプログラム
US10911680B2 (en) * 2018-12-28 2021-02-02 Intel Corporation Method and system of geolocation and attitude correction for mobile rolling shutter cameras
CN109379536B (zh) * 2018-12-29 2020-07-31 深圳看到科技有限公司 画面生成方法、装置、终端及对应的存储介质
CN110235431B (zh) * 2019-04-30 2021-08-24 深圳市大疆创新科技有限公司 电子增稳方法、图像采集设备、可移动平台
US11470254B1 (en) 2019-06-21 2022-10-11 Gopro, Inc. Systems and methods for assessing stabilization of videos
EP3987763A4 (en) * 2019-06-21 2023-07-12 GoPro, Inc. VIDEO STABILIZATION SYSTEMS AND METHODS
KR102176273B1 (ko) * 2019-07-04 2020-11-09 재단법인대구경북과학기술원 동영상 수평 조정 시스템, 방법 및 컴퓨터 프로그램
CN110519507B (zh) * 2019-07-23 2021-03-19 影石创新科技股份有限公司 一种相机镜头平滑处理方法、装置及便携式终端
US11138804B2 (en) 2019-08-02 2021-10-05 Fmr Llc Intelligent smoothing of 3D alternative reality applications for secondary 2D viewing
US11948242B2 (en) 2019-08-02 2024-04-02 Fmr Llc Intelligent smoothing of 3D alternative reality applications for secondary 2D viewing
CN110430365B (zh) * 2019-08-26 2021-10-01 Oppo广东移动通信有限公司 防抖方法、装置、计算机设备和存储介质
US11694311B2 (en) * 2020-03-04 2023-07-04 Nec Corporation Joint rolling shutter image stitching and rectification
US11190689B1 (en) 2020-07-29 2021-11-30 Google Llc Multi-camera video stabilization
CN112561839B (zh) * 2020-12-02 2022-08-19 北京有竹居网络技术有限公司 视频裁剪方法、装置、存储介质及电子设备
US11405557B1 (en) * 2021-07-20 2022-08-02 Locus Robotics Corp. Rolling shutter compensation for moving digital optical camera sensors
US11863791B1 (en) 2021-11-17 2024-01-02 Google Llc Methods and systems for non-destructive stabilization-based encoder optimization

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AUPO793897A0 (en) 1997-07-15 1997-08-07 Silverbrook Research Pty Ltd Image processing method and apparatus (ART25)
US6552744B2 (en) 1997-09-26 2003-04-22 Roxio, Inc. Virtual reality camera
US7015954B1 (en) 1999-08-09 2006-03-21 Fuji Xerox Co., Ltd. Automatic video system using multiple cameras
US7119837B2 (en) * 2002-06-28 2006-10-10 Microsoft Corporation Video processing system and method for automatic enhancement of digital video
US7495694B2 (en) 2004-07-28 2009-02-24 Microsoft Corp. Omni-directional camera with calibration and up look angle improvements
US8207964B1 (en) 2008-02-22 2012-06-26 Meadow William D Methods and apparatus for generating three-dimensional image data models
US7542034B2 (en) * 2004-09-23 2009-06-02 Conversion Works, Inc. System and method for processing video images
JP4793120B2 (ja) 2006-06-21 2011-10-12 ソニー株式会社 手振れ補正方法、手振れ補正方法のプログラム、手振れ補正方法のプログラムを記録した記録媒体及び手振れ補正装置
US20080165280A1 (en) 2007-01-05 2008-07-10 Deever Aaron T Digital video stabilization with manual control
US7817187B2 (en) * 2007-06-27 2010-10-19 Aptina Imaging Corporation Image blur correction using a secondary camera
JP5251410B2 (ja) * 2008-10-03 2013-07-31 株式会社ニコン カメラワーク算出プログラム、撮像装置及びカメラワーク算出方法
US8363128B2 (en) * 2009-08-10 2013-01-29 Samsung Electronics Co., Ltd. Image processing apparatus and image processing method
US20110085728A1 (en) * 2009-10-08 2011-04-14 Yuli Gao Detecting near duplicate images
JP2011114649A (ja) * 2009-11-27 2011-06-09 Sanyo Electric Co Ltd 撮像装置
CN101917602B (zh) * 2010-08-26 2012-07-04 四川大学 基于高分辨率摄像头的数字视频智能监控设备及数据处理方法
US8488010B2 (en) * 2010-09-21 2013-07-16 Hewlett-Packard Development Company, L.P. Generating a stabilized video sequence based on motion sensor data
US8531535B2 (en) 2010-10-28 2013-09-10 Google Inc. Methods and systems for processing a video for stabilization and retargeting
US8964041B2 (en) * 2011-04-07 2015-02-24 Fr Vision Ab System and method for video stabilization of rolling shutter cameras
JP5734082B2 (ja) 2011-05-11 2015-06-10 キヤノン株式会社 撮像装置及びその制御方法、並びにプログラム
US8823813B2 (en) * 2011-06-06 2014-09-02 Apple Inc. Correcting rolling shutter using image stabilization
US20130107066A1 (en) * 2011-10-27 2013-05-02 Qualcomm Incorporated Sensor aided video stabilization
US20130121559A1 (en) * 2011-11-16 2013-05-16 Sharp Laboratories Of America, Inc. Mobile device with three dimensional augmented reality
US9041819B2 (en) 2011-11-17 2015-05-26 Apple Inc. Method for stabilizing a digital video
US20130162518A1 (en) * 2011-12-23 2013-06-27 Meghan Jennifer Athavale Interactive Video System

Also Published As

Publication number Publication date
AU2018201829A1 (en) 2018-04-12
EP2744192B1 (en) 2021-05-19
JP2016501497A (ja) 2016-01-18
CA2893802C (en) 2019-08-13
KR102003012B1 (ko) 2019-07-24
AU2013359372A1 (en) 2015-07-02
JP2018085775A (ja) 2018-05-31
US20150222818A1 (en) 2015-08-06
EP2744192A3 (en) 2016-09-14
AU2018201829B2 (en) 2019-06-13
JP6937809B2 (ja) 2021-09-22
JP6608700B2 (ja) 2019-11-20
US9674440B2 (en) 2017-06-06
BR112015013565A2 (pt) 2019-12-17
IL239249B (en) 2019-08-29
AU2013359372B2 (en) 2016-10-13
KR20150095782A (ko) 2015-08-21
AU2017200248B2 (en) 2017-12-14
WO2014093517A1 (en) 2014-06-19
MX345710B (es) 2017-02-13
MX2015007499A (es) 2015-12-15
CN104982027A (zh) 2015-10-14
US20140160309A1 (en) 2014-06-12
EP2744192A2 (en) 2014-06-18
US10511773B2 (en) 2019-12-17
IL239249A0 (en) 2015-07-30
US9554045B2 (en) 2017-01-24
CN104982027B (zh) 2018-07-27
JP2020005326A (ja) 2020-01-09
US20150002686A1 (en) 2015-01-01
US9071756B2 (en) 2015-06-30
AU2017200248A1 (en) 2017-02-02
CA2893802A1 (en) 2014-06-19
US20170180647A1 (en) 2017-06-22

Similar Documents

Publication Publication Date Title
JP6605640B2 (ja) 制約ベースの回転平滑化を介してデジタルビデオを安定化するためのシステムおよび方法
JP6412129B2 (ja) 画像を変換するためのシステム及び方法
US20190244367A1 (en) Systems and methods for determining optical flow
US9774784B2 (en) Systems and methods for combining multiple frames to produce media content with simulated exposure effects
CN109040525B (zh) 图像处理方法、装置、计算机可读介质及电子设备
US20160148648A1 (en) Systems and methods for improving stabilization in time-lapse media content
US10725637B2 (en) Systems and methods for providing image perspective adjustment and automatic fitting
US10721419B2 (en) Ortho-selfie distortion correction using multiple image sensors to synthesize a virtual image

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180207

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190322

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190402

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20190520

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190628

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190917

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20191016

R150 Certificate of patent or registration of utility model

Ref document number: 6605640

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees