(57)【要約】【課題】制約ベースの回転平滑化を介するデジタルビデオ安定化のためのシステムおよび方法を提供すること。【解決手段】関連付けられたタイムスタンプを有する画像フレームのセットと、関連付けられたタイムスタンプを有する、カメラの向きに関するカメラ配向データのセットとを含むデジタルビデオデータを提供する。連続する画像フレーム間の回転速度を最小化することによって、平滑化されたカメラ配向データのセットを生成しつつ、平滑化されたカメラ配向データのセットに基づき再配向された結果として得られた平滑化画像フレームのセットにおける空き領域の量を最小化する。【選択図】  図１
2020005326.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータにより実施される方法であって、
コンピュータシステムが、ビデオに関連する入力画像フレームを受信するステップと、
前記コンピュータシステムが、ジャイロスコープからのカメラ配向データを受信するス
テップと、
前記コンピュータシステムが、少なくとも前記入力画像フレームおよびジャイロスコー
プからの前記カメラ配向データに基づいて安定化された画像フレームを生成するステップ
と、
前記カメラ配向データを平滑化して一組の平滑化されたカメラ配向データを生成するス
テップであって、前記カメラ配向データを平滑化することは、前記一組の平滑化されたカ
メラ配向データに基づいて再配向された入力画像フレームの空き領域の量を最小化しつつ
、連続的な入力画像フレーム間の回転速度を最小化することを含む、前記一組の平滑化さ
れたカメラ配向データを生成するステップと
を含むコンピュータにより実施される方法。
【請求項２】
前記ビデオの画像フレームは、前記入力画像フレームを含む、請求項１に記載の方法。
【請求項３】
前記入力画像フレームの数は、前記ビデオの画像フレームの数に等しい、請求項１に記載
の方法。
【請求項４】
前記安定化された画像フレームを生成するステップは、前記一組の平滑化されたカメラ配
向データにさらに基づく、請求項１に記載の方法。
【請求項５】
前記空き領域の量は、閾値を満たすように最小化される、請求項１に記載の方法。
【請求項６】
前記カメラ配向データを平滑化することは、カメラモーションと空き領域の制約に基づい
てズームを選択することをさらに含む、請求項５に記載の方法。
【請求項７】
前記安定化された画像フレームを生成するステップは、前記一組の平滑化されたカメラ配
向データのセットに基づいて前記入力画像フレームをゆがめることをさらに含む、請求項
１に記載の方法。
【請求項８】
前記コンピュータシステムは、前記ジャイロスコープを含むモバイルデバイスである、請
求項１に記載の方法。
【請求項９】
システムであって、
少なくとも1つのプロセッサと、
前記少なくとも1つのプロセッサに
ビデオに関連する入力画像フレームを受信すること、
ジャイロスコープからのカメラ配向データを受信すること、
少なくとも前記入力画像フレームおよびジャイロスコープからの前記カメラ配向データ
に基づいて安定化された画像フレームを生成すること、
前記カメラ配向データを平滑化して一組の平滑化されたカメラ配向データを生成するこ
とであって、前記カメラ配向データを平滑化することは、前記一組の平滑化されたカメラ
配向データに基づいて再配向された入力画像フレームの空き領域の量を最小化しつつ、連
続的な入力画像フレーム間の回転速度を最小化することを含む、前記一組の平滑化された
カメラ配向データを生成すること
を実行するように指示するように構成された命令を記憶するメモリと
を備えるシステム。
【請求項１０】
前記ビデオの画像フレームは、前記入力画像フレームを含む、請求項９に記載のシステム
。
【請求項１１】
前記入力画像フレームの数は、前記ビデオの画像フレームの数に等しい、請求項９に記載
のシステム。
【請求項１２】
前記安定化された画像フレームを生成することは、前記一組の平滑化されたカメラ配向デ
ータにさらに基づく、請求項９に記載のシステム。
【請求項１３】
コンピュータ実行可能な命令を格納する非一時的コンピュータ記憶媒体であって、前記コ
ンピュータ実行可能な命令は、実行時にコンピュータシステムにコンピュータにより実行
される方法を実行させ、前記方法は、
ビデオに関連する入力画像フレームを受信するステップと、
前記コンピュータシステムが、ジャイロスコープからのカメラ配向データを受信するス
テップと、
少なくとも前記入力画像フレームおよびジャイロスコープからの前記カメラ配向データ
に基づいて安定化された画像フレームを生成するステップと、
前記カメラ配向データを平滑化して一組の平滑化されたカメラ配向データを生成するス
テップであって、前記カメラ配向データを平滑化することは、前記一組の平滑化されたカ
メラ配向データに基づいて再配向された入力画像フレームの空き領域の量を最小化しつつ
、連続的な入力画像フレーム間の回転速度を最小化することを含む、前記一組の平滑化さ
れたカメラ配向データを生成するステップと
を含む、非一時的コンピュータ記憶媒体。
【請求項１４】
前記ビデオの画像フレームは、前記入力画像フレームを含む、請求項１３に記載の非一時
的コンピュータ記憶媒体。
【請求項１５】
前記入力画像フレームの数は、前記ビデオの画像フレームの数に等しい、請求項１３に記
載の非一時的コンピュータ記憶媒体。
【請求項１６】
前記安定化された画像フレームを生成するステップは、前記一組の平滑化されたカメラ配
向データにさらに基づく、請求項１３に記載の非一時的コンピュータ記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示の主題は、信号処理に関する。具体的には、本開示は、画像およびビデオ処理の
ためのシステムおよび方法に関する。
【背景技術】
【０００２】
近年、ビデオのキャプチャが可能なデジタルスチルカメラが普及している。これらの消
費者デバイスの解像度や画像品質がいくつかの設定においてデジタル一眼レフカメラ（Ｄ
ＳＬＲ）に匹敵するに至るまで改善される一方で、そのビデオ画質は依然としてフィルム
カメラのものよりかなり悪いものであり得る。品質におけるこのギャップの理由は、２つ
の要因からなり得る。第１に、フィルムカメラと比べて、携帯電話はかなり軽量のもので
あり得る。その結果、そのようなデバイス上での携帯式のビデオキャプチャは、多量のカ
メラブレを呈し得る。第２に、携帯電話カメラは、ローリングシャッタ（ＲＳ）を利用す
るセンサを有し得る。ＲＳカメラでは、各画像の行は、わずかに異なる時間に露光され得
、それが不減衰カメラモーションと組み合わされて、出力ビデオにおける「揺れ」をもた
らし得る。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
ビデオ安定化は、ビデオのカメラブレによって生成される高周波のフレーム間のジッタ
の低減に使用される技法のファミリである。専門のカメラでは、機械的な画像安定化（Ｍ
ＩＳ）システムが一般に使用される。例えば、ＭＩＳシステムでは、オペレータは、オペ
レータのボディモーションからカメラモーションを切り離すハーネスを着用し得る。他の
ＭＩＳシステムは、カメラボディ自体よりむしろ、カメラの光学素子の方を安定させる。
これらのシステムは、レンズまたはセンサを移動して、小さなピッチおよびヨーモーショ
ンを補償することができる。これらの技法は、リアルタイムで機能し、カメラ上での演算
を必要としない。しかし、これらの技法は、その価格やサイズを理由に、モバイルデバイ
スや安価なカメラには適さない。デジタルビデオ安定化システムは、キャプチャ後のビデ
オを安定させるために特徴トラッカを使用し得る。しかし、これらのシステムは、雑音に
対する感度が高いものであり得るため（例えば、高速移動する前景被写体）、追跡するた
めの独特の機能を必要とし得る。その結果、特徴追跡に基づくデジタル安定化は、特に不
利な照明条件や過度の前景モーションでは、損なわれる場合が多い。それに加えて、フレ
ームにわたる視覚的キューの抽出や一致は、演算上高価なものであり得る。その上、ビデ
オの解像度が高いほど、費用が高くなる。いくつかの例では、これにはコストがかかりす
ぎてリアルタイムでのビデオ安定化を実行することができない。結果的に、そのような手
法は、現在のデジタルカメラではめったに使用されない。代わりに、製造業者は、高性能
のＤＳＬＲに対して、よりロバストな（および高価な）機械的な安定化対策の方を選ぶこ
とができる。
【課題を解決するための手段】
【０００４】
本発明による一実施形態は、具体的には、方法、記憶媒体、およびシステムを対象とす
る添付の特許請求の範囲で開示され、１つのクレームカテゴリで言及される特徴（例えば
、方法）は、別のクレームカテゴリ（例えば、システム）でも特許請求することができる
。
【０００５】
デジタルビデオを安定させるため、コンピュータ実装方法、システム、およびコンピュ
ータ可読媒体は、一実施形態では、関連付けられたタイムスタンプを有する画像フレーム
のセットと、関連付けられたタイムスタンプを有する、カメラの向きに関するカメラ配向
データのセットとを含むデジタルビデオデータを提供することができる。連続する画像フ
レーム間の回転速度を最小化することによって、平滑化されたカメラ配向データのセット
を生成しつつ、平滑化されたカメラ配向データのセットに基づいて再配向された結果とし
て得られた平滑化画像フレームのセットにおける空き領域の量を最小化する。
【０００６】
一実施形態では、結果として得られた平滑化画像フレームのセットにおける空き領域の
量は、ゼロに最小化することができる。
一実施形態では、結果として得られた平滑化画像フレームのセットにおける空き領域の
量は、閾値未満に最小化することができる。
【０００７】
一実施形態では、画像フレームのセットおよび平滑化されたカメラ配向データのセット
における関連付けられたタイムスタンプに基づいて画像フレームのセットをゆがめること
により、補正された画像フレームのセットを形成することができる。
【０００８】
一実施形態では、画像フレームのセットおよび平滑化されたカメラ配向データのセット
における関連付けられたタイムスタンプに基づいて画像フレームのセットをゆがめること
により、補正された画像フレームのセットを形成することは、個々の画像フレームを複数
のサブセクションに分割することを含み得る。各サブセクションは、関連付けられたタイ
ムスタンプおよびカメラ配向を有し得る。画像フレームのセットおよび平滑化されたカメ
ラ配向データのセットにおける関連付けられたタイムスタンプに基づいて画像フレームの
セットをゆがめることにより、補正された画像フレームのセットを形成することは、関連
付けられたタイムスタンプおよびカメラ配向に基づいて各サブセクションを再編成するこ
とにより、補正された個々の画像フレームを形成することを含み得る。
【０００９】
一実施形態では、補正された画像フレームのセットは、ビデオとして表示することがで
きる。
一実施形態では、結果として得られた平滑化画像フレームのセットにおける空き領域の
量は、閾値未満に最小化することができる。
【００１０】
一実施形態では、閾値未満の空き領域の量は、修復することができる。
一実施形態では、関連付けられたタイムスタンプを有するカメラ配向データのセットは
、ハンドヘルド式デバイスのジャイロスコープから提供することができる。
【００１１】
一実施形態では、画像フレームのセットは、ハンドヘルド式デバイスのカメラから提供
することができる。
一実施形態では、関連付けられたタイムスタンプを有するカメラ配向データのセットは
、携帯電話およびデジタルカメラを含むハンドヘルド式デバイスのジャイロスコープから
提供することができる。画像フレームのセットは、デジタルカメラから提供することがで
きる。
【００１２】
一実施形態では、平滑化されたカメラ配向データのセットを生成することは、勾配降下
に基づいて反復最適化することを含む。
一実施形態では、平滑化されたカメラ配向データのセットを生成することは、ガウシア
ンフィルタに基づいてフィルタリングすることを含み得る。
【００１３】
一実施形態では、平滑化されたカメラ配向データのセットを生成することは、時間導関
数に基づいてフィルタリングすることを含み得る。
一実施形態では、カメラ配向データのセットは、無変換の回転を含み得る。
【００１４】
一実施形態では、カメラ配向データのセットは、回転と変換の両方を有するベクトルを
含み得る。
一実施形態では、平滑化されたカメラ配向データのセットを生成することは、ソーシャ
ルネットワーキングシステムによって実行される。
【００１５】
一実施形態では、関連付けられたタイムスタンプを有する画像フレームのセットおよび
関連付けられたタイムスタンプを有するカメラ配向データのセットは、ソーシャルネット
ワーキングシステムのユーザによってソーシャルネットワーキングシステムにアップロー
ドすることができる。
【００１６】
本発明のさらなる実施形態では、１つまたは複数の非一時的コンピュータ可読記憶媒体
は、実行されると、本発明による方法または上記した実施形態のいずれかを実行するよう
に動作可能なソフトウェアを具現化する。
【００１７】
本発明のさらなる実施形態では、システムは、１つまたは複数のプロセッサと、プロセ
ッサに結合され、プロセッサによって実行可能な命令を含むメモリとを備え、プロセッサ
は、命令を実行する際、本発明による方法または上記した実施形態のいずれかを実行する
ように動作可能である。
【００１８】
本発明の他の多くの特徴や実施形態は、添付の図面および以下の詳細な説明から明らか
となる。
【図面の簡単な説明】
【００１９】
【図１】一実施形態による、ピンホールカメラモデルの例を示す。
【図２】一実施形態による、カメラの向きおよびそれに対応する画像平面の２つの例の描写を示す。
【図３】一実施形態による、ＲＳカメラによってキャプチャされたゆがんだ画像および画像を補正するための変換の例の描写を示す。
【図４】一実施形態による、デジタルビデオ安定化モジュールの例を示す。
【図５】一実施形態による、入力データおよび平滑化後に結果として得られたデータの例のグラフを示す。
【図６】一実施形態による、制約ベースの平滑化のための方法の例を示す。
【図７】一実施形態による、ソーシャルネットワーキングシステム内で安定したデジタルビデオを生成するためにデジタルビデオからの画像フレームのセットを修正するためのシステムのネットワーク図の例を示す。
【図８】一実施形態による、本明細書で説明される実施形態のうちの１つまたは複数の実装に使用することができるコンピュータシステムの例を示す。
【発明を実施するための形態】
【００２０】
図は、単なる例示を目的として本発明の様々な実施形態を描写し、図は、同様の参照番
号を使用して同様の要素を特定する。当業者であれば、以下の説明から、本明細書で説明
される本発明の原理から逸脱することなく、図に示される構造および方法の代替の実施形
態を使用できることが容易に理解し得る。
【００２１】
［ジャイロスコープを使用するデジタルビデオ安定化およびローリングシャッタ補正］
ローリングシャッタ補正は、フレーム内のカメラモーションによって生成された画像の
ゆがみを取り除くための技法である。高性能のカメラは、グローバルシャッタ（ＧＳ）を
有する電荷結合素子（ＣＣＤ）センサを使用する。ＧＳカメラでは、多くのＤＳＬＲを含
めて、ＣＣＤセンサ上のすべての画素の読み取りおよびリセットが同時に行われる。した
がって、すべての画素が同じ時間間隔の間に光を収集する。結果的に、露光の間のカメラ
モーションは、これらの素子上である程度の画像ブラーをもたらす。対照的に、低性能の
カメラは、通常、相補型金属酸化膜半導体（ＣＭＯＳ）センサを利用する。具体的には、
これらのセンサは、ローリングシャッタを使用し、画像行の読み取りおよびリセットが連
続的に行われる。この手法は、ＣＣＤセンサと比べて、より少ない回路を必要とし得、Ｃ
ＭＯＳセンサの製造をより安くすることができる。その理由のため、ＣＭＯＳセンサは、
携帯電話、音楽プレーヤおよびいくつかの低性能のカムコーダで頻繁に使用される。しか
し、連続的な読み取りは、わずかに異なる時間ウインドウの間に各行が露光されることを
意味する。その結果、行の読み取りの間のカメラモーションは、ゆがんだ画像を生成する
ことになる。高速の移動被写体もまたひずんで見える。
【００２２】
ＲＳカメラでの画像読み取りは、通常、ミリ秒範囲である。したがって、ＲＳひずみは
、主に、高周波のカメラモーションによって引き起こされる。したがって、カメラを安定
させるためにＭＩＳシステムを使用することができる。この手法は、ローリングシャッタ
によるゆがみを取り除くが、実際には、ＭＩＳシステムの価格帯やサイズにより、ＲＳカ
メラには適さないものになる。いくつかのデジタルローリングシャッタ調整技法は、単一
の画像におけるＲＳアーチファクトを補正することができるが、ユーザ入力を必要とする
。対照的に、本開示のいくつかの実施形態は、ユーザ入力を必要とすることなく、単一の
画像に対するＲＳアーチファクトを補正することができる。
【００２３】
ビデオの場合、ビデオからのカメラモーションを推定するために特徴追跡を使用する一
連のフレームにおけるＲＳの調整は、問題を提示し得る。ＲＳ露光の間のカメラモーショ
ンが分かった時点で、カメラモーションを使用してフレームを調整することができる。こ
の手法は特徴トラッカに依存するため、ビデオ安定化の事例で以前に論じられたものと同
じ欠点を有する。
【００２４】
デジタルビデオ安定化技法は、入力ビデオフレームのクロッピングまたはズーミングを
含み得る。これにより、手ブレによってもたらされる望ましくない変形を妨害するための
個々のフレームの変換、回転またはゆがみが可能になり得る。クロッピングの量は、これ
らの変形を取り除くためにどれほどの余裕（または「余地」）があるかを判断することが
できる。例えば、フレームを変換し過ぎた場合、空き領域（例えば、画素データを有さな
い領域）が目に見える可能性がある。本開示のいくつかの実施形態は、手ブレを妨害する
ことによってカメラモーションを平滑にするだけでなく、空き領域が現れないようにしな
がらカメラモーションを平滑にすることもできる。クロッピングまたはズーミング以外の
、安定化に対する余裕を提供するための他の方法も実装できることを理解すべきである。
例えば、修復技法は、安定化によってもたらされた空き領域を充填するために実装するこ
とができる。修復は、クロッピングまたはズーミングの代わりにまたはそれに加えて使用
することができる。例えば、一実施形態では、所定の変形が、すべての画素が満足のいく
ように設定されたフレームをもたらすか否か（修復、ズーミング、クロッピングなどによ
ってかどうかにかかわらず）を判断するための機能を実装することができる。
【００２５】
空き領域防止制約を満たす平滑なカメラ回転を演算することによって、ビデオをデジタ
ル処理で安定させるためのシステムおよび方法が提供される。これにより、所定のクロッ
プまたはズームファクタに対する平滑なカメラ回転を生み出すことが最大限に可能になり
得る。
【００２６】
デジタルビデオ安定化プロセスは、例えば、カメラまたはカメラを含むデバイス（携帯
電話、タブレット、腕時計、着用可能な道具など）によってビデオをキャプチャすること
から始まり得る。ビデオは、キャプチャされた多くの連続画像フレームを含み得る。ビデ
オは、デバイスのサイズや重量に起因して、ブレのあるものであり得る。カメラのセンサ
によって使用されるローリングシャッタは、出力画像フレームにおけるゆがみを生成し得
る。ジャイロスコープは、ビデオキャプチャの間のカメラモーション（例えば、回転）を
測定するために使用することができる。測定されたカメラモーションは、ビデオを安定さ
せるため、および、ローリングシャッタを調整して、画像が補正された出力フレームを有
する安定したビデオをもたらすために使用することができる。
【００２７】
本開示の技法は、ＲＳカメラのビデオ画質を向上することができる。一実施形態では、
微小電気機械システム（ＭＥＭＳ）ジャイロスコープは、カメラの回転を測定するために
実装される。また、他のジャイロスコープやモーション検知デバイスも実装することがで
きる。ジャイロスコープによる測定は、ビデオ安定化（例えば、フレーム間のモーション
補償）やローリングシャッタ補正（例えば、フレーム内のモーション補償）を実行するた
めに使用することができる。この手法は、演算上安価かつロバストであり得、それにより
、例えば、モバイルプラットホーム上でのリアルタイムの実装形態に特に適したものにな
り得る。
【００２８】
回転カメラとローリングシャッタとの統合モデルに基づくシステムおよび方法は、ロー
リングシャッタ補正とビデオ安定化を同時に実行する、ゆがみを演算するためにモデルを
利用することができる。ジャイロスコープおよびカメラを自動的に較正する最適化技法を
提供することができる。これにより、単一のビデオおよびジャイロスコープキャプチャか
らの未知のパラメータ（ジャイロスコープドリフトおよび遅延など）ならびにカメラの焦
点距離およびローリングシャッタ速度の回復が許可され得る。その結果、ジャイロスコー
プとカメラハードウェアのいかなる組合せも、専門的な実験セットアップを必要とするこ
となく、較正することができる。カメラを含むデバイスは、ジャイロスコープなどのモー
ション検知デバイスも含み得る。例えば、多くのスマートフォンは、ジャイロスコープや
加速度計などのカメラやモーション検知デバイスを有する。このように、リアルタイムビ
デオ安定化およびローリングシャッタ補正は、特徴トラッカまたはＭＩＳシステムの使用
を必要とすることなく、提供することができる。その上、安価なＭＥＭＳジャイロスコー
プは、カメラモーションを直接測定するために実装することができる。画像のブラーリン
グを除去するためおよびＫＬＴ特徴トラッカを支援するため、慣性計測装置（ＩＭＵ）を
使用することができる。
【００２９】
ジャイロスコープなどのモーション検知デバイスを使用してカメラモーションを測定す
ることにより、高演算効率でのデジタルビデオ安定化およびＲＳ調整の実行が許可される
。ビデオのコンテンツはモーションの推定に使用されないため、この手法は、不十分な照
明または実質的な前景モーションの下でさえ、ロバストであり得る。その上、上に述べら
れているように、多くのカメラが使用可能な携帯電話は、既に、ジャイロスコープまたは
他のモーション検知デバイスを装備している。ＭＩＳシステムと比べて、ＭＥＭＳジャイ
ロスコープは、かなり安価で、より多目的な、それほどかさばらないものであり得る。
【００３０】
一実施形態では、ビデオ安定化は、３つの段階、すなわち、カメラモーション推定段階
、モーション平滑化段階および画像をゆがめる段階で進めることができる。ローリングシ
ャッタ調整は、平滑化モーションよりむしろ、実際のカメラモーションをゆがみ演算に使
用できることを除いて、同様に進めることができる。本明細書でさらに詳細に論じられる
ように、ビデオ安定化とローリングシャッタ補正の両方とも、統合フレームワークの下で
１回のゆがみ演算において実行することができる。
【００３１】
一実施形態では、カメラモーションは、回転のみの観点からモデル化することができる
。他の実施形態では、変換は、回転に加えてまたはその代わりに測定できることを理解す
べきである。いくつかの例では、例えばＩＭＵを使用する変換の正確な測定は難しいもの
であり得る。その上、加速度計データは、変換を得るために２回積分することを必要とし
得る。対照的に、ジャイロスコープは、回転速度を測定する。したがって、ジャイロスコ
ープデータは、カメラの向き（カメラ配向）を得るために１回の積分しか必要とされない
。その結果、いくつかの例では、変換測定は、向きの測定よりかなり不正確であり得る。
その上、変換測定は、異なる量で移動する異なる深度の被写体によって複雑化され得る。
一実施形態では、深度情報を得るため、運動に基づく立体または特徴ベース構造復元（Ｓ
ｆＭ：stereo or feature-based structure from motion）アルゴリズムを実装すること
ができる。いくつかの実施形態では、変換を取り除くためにフレームをゆがめるステップ
を実行することができるが、パララックスおよびオクルージョンによって複雑化され得る
。
【００３２】
システムにおけるカメラ変換のモデル化は、問題を提示し得る。例えば、オプティマイ
ザは、特徴トラッカから変換を再構築することを試みる一方で、極小値になり得る。アル
ゴリズムは、カメラが純粋に平面状の場面（例えば、一定の深度）を画像化していると仮
定することができる。したがって、変換再構築は、ビデオにおいてモデル化されないパラ
ラックスが原因で複雑化され得る。
【００３３】
回転のみの観点からまたは主に回転の観点からカメラ回転をモデル化する実施形態は、
変換で遭遇する問題を最小化することができる。変換は、深度の増加と共に急速に減衰し
、被写体は、通常、変換カメラジッタが画像における顕著なモーションを生み出さないほ
ど十分にレンズから遠く離れているため、カメラブレやローリングシャッタのゆがみは主
に回転から起こる。
【００３４】
［カメラモデルの例］
一実施形態では、ピンホールカメラモデルに基づく回転ローリングシャッタカメラモデ
ルが提供される。図１は、一実施形態による、ピンホールカメラモデル１０１の例を示す
。場面におけるカメラの中心ｃからポイントｘまでの光線は、ポイントｘで画像平面と交
差する。したがって、画像平面上への空間の投影は、カメラの中心ｃ、焦点距離ｆおよび
画像平面におけるカメラの軸の位置（ｏｘ，ｏｙ）に依存する。ピンホールカメラでは、
同次座標における画像ポイントｘと３Ｄ空間座標における対応するポイントＸとの関係は
、方程式の例（１）によって指定することができる。
【００３５】
ｘ＝ＫＸ、およびＸ＝λＫ−１ｘ      （１）
ここで、λは、未知のスケーリング係数であり、Ｋは、内部カメラである。Ｋ−１は、
方程式の例（２）によって指定することができる。
【００３６】
【数１】
2020005326.tif 000003
（ｏｘ，ｏｙ）は、画像平面におけるカメラ軸の原点であり、ｆは、焦点距離である。
カメラの焦点距離は、回復することができる未知数である。カメラは正方画素を有し、上
方斜めのエントリは１に設定されると仮定することができる。しかし、他の実施形態は、
このモデルを拡張して、非正方画素または他の光学的ひずみを考慮に入れることができる
。
【００３７】
ゆがみは、高周波カメラ回転から起こり得る。例えば、上から下にシャッタを切る間の
高周波カメラ回転により、出力画像がゆがんでいるように見える場合がある。このゆがん
だ画像は、数学的にモデル化することができる。
【００３８】
空間の原点は、カメラの原点に設定することができる。次いで、カメラモーションは、
時間ｔにおけるその向きＲ（ｔ）の観点から説明することができる。したがって、いかな
る場面ポイントＸに対しても、時間ｔにおける対応する画像ポイントｘは、方程式の例（
３）によって得ることができる。
【００３９】
ｘ＝ＫＲ（ｔ）Ｘ      （３）
回転行列Ｒ（ｔ）∈ＳＯ（３）は、カメラ角度Δθ（ｔ）の変化を複合することによっ
て演算することができる。四元数の球面線形補間（ＳＬＥＲＰ：spherical linear inter
polation）は、カメラの向き（カメラ配向）を平滑に補間し、ジンバルロックを回避する
ために使用することができる。ジャイロスコープのサンプル間の角度の変化は、そのオイ
ラー角が回転四元数と同じ働きをするほど十分に小さいものであり得る。Δθ（ｔ）は、
以下の方程式の例（４）によって指定されるように、ジャイロスコープが測定した回転速
度ω（ｔ）から直接得ることができる。
【００４０】
Δθ（ｔ）＝（ω（ｔ＋ｔｄ）＋ωｄ）＊Δｔ      （４）
ωｄは、ジャイロスコープドリフトであり、ｔｄは、ジャイロスコープとフレームサン
プルタイムスタンプとの間の遅延である。これらのパラメータは、これも同様に回復する
ことができるそのモデルにおける追加の未知数である。
【００４１】
また、ローリングシャッタは、カメラモデルに導入することもできる。ＲＳカメラでは
、各画像行は、わずかに異なる時間に露光される。したがって、この露光の間のカメラ回
転は、画像のゆがみを決定することができる。被写体は、通常、レンズから遠く離れてい
るため、ローリングシャッタ露光の間の変換カメラジッタは、画像のゆがみに大きな影響
は及ぼさない。例えば、シャッタを切る間にカメラが左右に揺れると、図３に示されるよ
うに、出力画像はゆがむ。フレームｉにおいてポイントｘが画像化された時間は、フレー
ムがどのくらいの深さまであるかに依存する。方程式の例（５）によって指定されるよう
に、ｘは時間ｔ（ｉ，ｙ）に画像化されたと決定することができる。
【００４２】
ｔ（ｉ，ｙ）＝ｔｉ＋ｔｓ＊ｙ／ｈ、式中、ｘ＝（ｘ，ｙ，１）Ｔ      （５）
ｙは、ポイントｘに対応する画像行である。ｈは、フレームにおける行の総数である。
ｔｉは、ｉ番目のフレームのタイムスタンプである。ｔｓ項は、フレームの下方に行くほ
ど、ローリングシャッタがその行に到達するのに要する時間が長くなることを示す。した
がって、ｔｓは、行ごとに上から下まで全フレームを読み取るのに要する時間である。負
のｔｓ値は、下から上に向かうローリングシャッタを示すことになる。符号やｔｓ値の自
動回復については、本明細書でさらに詳細に説明する。
【００４３】
２つの異なるカメラの向きに対する１対のフレームにおける画像ポイント間の関係を導
出することができる。図２は、実施形態による、２つのカメラの向きおよびそれらの対応
する画像平面のグラフ表現を示す。グラフ表現２０１は、２つのカメラの向き２０２およ
び２０３を含む。カメラの向き２０２は、画像平面ｉを含む。カメラの向き２０３は、画
像平面ｊを含む。場面ポイントＸの画像は、２つのフレームに現れ、光線２１１は、画像
平面ｉおよびｊと交差する。場面ポイントＸに対して、２つのフレームｉおよびｊの画像
平面における投影ポイントｘｉおよびｘｊはそれぞれ、以下の方程式の例（６）によって
指定することができる。
【００４４】
ｘｉ＝ＫＲ（ｔ（ｉ，ｙｉ））Ｘ、およびｘｊ＝ＫＲ（ｔ（ｊ，ｙｊ））Ｘ      （６
）
これらの方程式が再構成され、Ｘが代入された場合、方程式の例（７）によって指定さ
れるように、フレームｊにおけるすべてのポイントへのフレームｉにおけるすべてのポイ
ントの写像が得られる。
【００４５】
ｘｊ＝ＫＲ（ｔ（ｊ，ｙｊ））ＲＴ（ｔ（ｉ，ｙｉ））Ｋ−１ｘｉ      （７）
２つのフレーム間の関係について同じビデオと関連して説明してきたが、他の実施形態
では、フレームは、Ｒ（ｔ）に応じて回転するあるカメラからＲ’（ｔ）に応じて回転す
る別のカメラに写像することができる。一実施形態では、両方のカメラの中心は、原点に
あると仮定することができる。あるカメラから別のカメラにポイントを写像するゆがみ行
列Ｗは、以下の方程式の例（８）に従って指定することができる。
【００４６】
Ｗ（ｔ１，ｔ２）＝ＫＲ’（ｔ１）ＲＴ（ｔ２）Ｋ−１      （８）
ここで、以下の方程式の例（９）に従って、方程式７をよりコンパクトに指定すること
ができる。
【００４７】
ｘｊ＝Ｗ（ｔ（ｊ，ｙｊ），ｔ（ｉ，ｙｉ））ｘｉ、式中、Ｒ’＝Ｒ      （９）
Ｗは、画像ポイントｘｉおよびｘｊのそれぞれの画像行ｙｉおよびｙｊの両方に依存す
る。このゆがみ行列は、両方のフレームにおいてローリングシャッタの効果を考慮に入れ
ながら、フレームｉのポイントとフレームｊの対応するポイントとを一致させるために使
用することができる。
【００４８】
ゆがみ行列のこの公式化は、ローリングシャッタ補正およびビデオ安定化を実現する。
平滑なモーションおよびグローバルシャッタを有する合成カメラを製作することができる
。このカメラモーションは、例えば、入力カメラモーションにガウシアンローパスフィル
タを適用することによって演算することができ、これは、新しい回転セットＲ’をもたら
す。合成カメラのローリングシャッタ持続時間ｔｓは、グローバルシャッタのように０に
設定することができる。次いで、現在のフレームｉの各画像行ｙｉでＷ（ｔｉ，ｔ（ｉ，
ｙｉ））を演算することができ、その行にゆがみを適用することができる。Ｗの第１の項
は、ここでは、フレーム時間ｔｉのみに依存し得る。この演算は、すべての入力フレーム
を合成カメラに写像し、その結果、ローリングシャッタのゆがみとビデオブレを同時に取
り除くことができる。
【００４９】
ある実施形態では、Ｗ（ｔｉ，ｔ（ｉ，ｙｉ））は、各画像行ｙｉに対しては演算され
ない。代わりに、入力画像を細分割し、各垂直細分割部でゆがみを演算することができる
。図３は、実施形態による、ゆがみを補正するための変換の例を示す。ゆがんだ入力画像
フレーム３０１は、ＲＳカメラによってキャプチャされた再分割されたゆがんだ画像を示
す。ゆがみは、画像フレーム３１１に示されるように、各垂直細分割部で演算される。画
像フレーム３１１は、非線形ゆがみの区分的線形近似を示す。結果として得られた画像フ
レーム３１６によって示されるように、様々な数の細分割部が、アーチファクトを排除す
るには十分であり得る。例えば、一実施形態では、１０の細分割部が、視覚的アーチファ
クトを排除するには十分であり得る。非線形ゆがみの区分的線形近似である、入力画像か
らのゆがんだメッシュが作成された。１０の細分割部が、目に見えるいかなるＲＳアーチ
ファクトも取り除くには十分であるが、他の実施形態は、異なる数の細分割部を含み得る
。サンプリング手法は、逆補間とも呼ぶことができる。逆補間は、バーテックスシェーダ
を使用するグラフィックス描画処理装置（ＧＰＵ）上での実装が容易であり得る。ＧＰＵ
のフラグメントシェーダは、双線形補間を使用して、メッシュがゆがんだ画像のリサンプ
リングを処理することができる。実際のビデオのＲＳゆがみは、双線形逆補間により、エ
イリアシングアーチファクトを生成するほど強くはない場合がある。その結果、実際には
、逆補間がうまく機能する。グローバルな画像ゆがみを使用するローリングシャッタ補正
は、ローリングシャッタ露光の間、カメラ回転がおおむね一定であると仮定することがで
きる。線形近似は、図３の画像フレーム３０６によって示されるように、ローリングシャ
ッタを調整できない場合がある。
【００５０】
［カメラおよびジャイロスコープの較正］
本明細書で説明される未知のカメラおよびジャイロスコープパラメータを回復するため
の較正技法が提供される。較正により、ジャイロスコープデータからのＷの直接演算が可
能になり得る。本明細書で説明されるモデルにおける未知のパラメータは、カメラの焦点
距離ｆ、ローリングシャッタの持続時間ｔｓ、ジャイロスコープとフレームサンプルタイ
ムスタンプとの間の遅延ｔｄおよびジャイロスコープドリフトｗｄを含み得る。
【００５１】
いくつかの例では、カメラの焦点距離ｆなどのこれらのパラメータのうちの１つまたは
複数は、製造業者が指定することができる。いくつかの例では、これらのパラメータは、
実験的に測定することができる。例えば、素早く点滅するディスプレイを使用して、ロー
リングシャッタの持続時間ｔｓを測定することができる。しかし、これらの技法は、不正
確でエラーを起こしやすい傾向があり得る。また、これらの技法は、退屈であり得る。ロ
ーリングシャッタの持続時間ｔは、通常、ミリ秒範囲であり得る。その結果、ｔｄまたは
ｔｓにおける小さな不整合が、ローリングシャッタ調整の失敗をもたらす場合がある。
【００５２】
一実施形態では、これらのパラメータは、単一のビデオおよびジャイロスコープキャプ
チャから推定することができる。例えば、ユーザは、建物などの静止被写体の方向に向け
たまま、静止したまま立っている状態で、カメラを揺すりながら、ビデオやジャイロスコ
ープトレースを記録することができる。クリップの持続時間は、異なる実施形態で異なり
得る。一実施形態では、短いクリップ（例えば、１０秒以下の持続時間）が、すべての未
知のパラメータを推定するには十分であり得る。この較正ステップは、各カメラおよびジ
ャイロスコープ構成に対して１回だけ行う必要があり得る。
【００５３】
一実施形態では、一致ポイントは、連続ビデオフレームで特定される。一致ポイントは
、例えば、スケール不変特徴量変換（ＳＩＦＴ：scale invariant feature transform）
を使用して特定され得る。外れ値は、例えば、ランダムサンプルコンセンサス（ＲＡＮＳ
ＡＣ：random sample consensus）を使用して破棄することができる。その結果は、キャ
プチャされたビデオのすべての近隣のフレームに対するポイント対応ｘｉおよびｘｊのセ
ットであり得る。このグランドトゥルース（ground truth）を前提として、較正は、すべ
てのポイント対応の平均二乗再投影誤差を最小化することができる最適化問題として公式
化することができる。これは、以下の方程式の例（１０）で指定される。
【００５４】
【数２】
2020005326.tif 000004
目的関数を最小化するため、多くの非線形オプティマイザを使用することができる。直
接目的関数評価による座標降下法は、急速に収束し得、一実施形態で実装される。毎回、
目的関数Ｊが減少しないところでステップを取る。ステップ方向を逆にし、対応するパラ
メータのステップサイズを減少する。アルゴリズムは、すべてのパラメータのステップサ
イズが所望の閾値未満に降下する（目標精度が達成されるなど）と終了する。収束は、い
くつかの例では、急速に起こり得る。例えば、一実施形態では、収束は、約１０秒の持続
時間の較正ビデオに対して、２秒以内に起こり得る。
【００５５】
一実施形態では、最適化は、カメラが４５°の視野を有するように焦点距離を設定する
ことによって初期化することができる。他のすべてのパラメータは、０に設定することが
できる。これらの初期条件を用いることで、オプティマイザは、データセットに対する正
しい解に収束することができる。より一般に、極小値になることは（例えば、ジャイロス
コープとフレームタイムスタンプとの間の遅延が大きい際）、様々な妥当なパラメータに
対して座標降下アルゴリズムを再開して、最適な解を選択することによって、回避するこ
とができる。正しく回復されたパラメータに対する平均再投影誤差は、例えば、１画素ほ
どであり得る。
【００５６】
モデルにおける追加の未知数は、カメラに対するジャイロスコープの相対的な向きであ
り得る。例えば、ジャイロのｙ軸周りの回転は、カメラのｘ軸周りの回転に相当し得る。
ジャイロスコープの向きを発見するため、３本の回転軸を置換することができ、各置換
に対してオプティマイザを実行することができる。目的を最適に最小化する置換は、カメ
ラの軸の順序付けに相当し得る。再投影誤差は、誤った置換に対してはかなり大きいもの
であり得る。したがって、実際には、この方法がうまく機能する。
【００５７】
カメラは垂直ローリングシャッタを有すると仮定してきたが、ＲＳモデルは、画像行の
代わりに画像列に対して機能するように容易に変更することができる。両方の事例に対す
る最小再投影誤差を見出すことは、カメラが水平ローリングシャッタを有するかまたは垂
直ローリングシャッタを有するかを示し得る。
【００５８】
最終的に、較正によって達成された結果は、較正の前後にビデオおよびジャイロスコー
プ信号を分析することによって実証することができる。連続フレーム間の回転が小さいと
仮定すると、画像における変換は、以下の方程式の例（１１）で指定されるように、回転
からほぼ演算することができる。
【００５９】
【数３】
2020005326.tif 000005
方程式（１１）は、ローリングシャッタによる効果がなく（例えば、ｔｓ＝０）、ｚ軸
周りの回転（例えば、ωｚ）を無視することができると仮定する。
【００６０】
【数４】
2020005326.tif 000006
は、連続フレームにおけるすべてのポイント対応に対するｘおよびｙに沿った平均変換率
である。オプティマイザが正しい焦点距離ｆおよびジャイロスコープ遅延ｔｄに収束した
場合、２つの信号は整合するはずである。較正前は、ｆの初期の推定が低過ぎるため、信
号ｘおよびｆ＊ωｙ（ｔ＋ｔｄ）の振幅は一致しない。信号は、ｔｄが０に初期化される
際、シフトすることができる。較正後は、正確な焦点距離およびジャイロスコープ遅延が
回復されているため、信号はうまく整合し得る。ＭＥＭＳジャイロスコープなどの精密な
ジャイロスコープは、ジャイロスコープデータが画像モーションと一致するようにするこ
とができ、ビデオ安定化およびローリングシャッタ補正を改善する。
【００６１】
［制約ベースの回転平滑化］
本開示のいくつかの態様では、空き領域が目に見えないかまたは最小閾値未満であると
いう制約の下、最適に平滑化されたカメラモーションを演算するためのシステムおよび方
法を提供することができる。図４は、実施形態による、デジタルビデオ安定化モジュール
の例を示す。デジタルビデオ安定化モジュール４００は、入力モジュール４０１、平滑化
モジュール４０２およびゆがみモジュール４０３を含めて示される。
【００６２】
入力モジュール４０１は、平滑化モジュール４０２およびゆがみモジュール４０５への
安定させるべき入力を提供することができる。入力モジュール４０１は、安定させるべき
ビデオと関連付けられた入力を受信することができる。例えば、入力は、ＮのフレームＦ
ｉのセット、ＮのフレームＦｉに対応する時間ｔｉおよびカメラの向き（カメラ配向）θ
ｉ（ｉ＝｛１…Ｎ｝）を含み得る。
【００６３】
平滑化モジュール４０２は、制約関数ｆ（φ，ｔ）が満たされるように、新しい平滑化
されたカメラの向き（カメラ配向）のセットφｉを演算する。平滑化モジュール４０２は
、回転速度モジュール４０３および制約決定モジュール４０４を含み得る。
【００６４】
回転速度モジュール４０３は、平滑なカメラ配向の生成に対して十分小さな回転速度が
維持されることを保証するため、回転速度を演算する。制約決定モジュール４０４は、時
間ｔｉにおける目標の向きφｉに対して制約が満たされているかどうかを決定する。例え
ば、一実施形態では、制約関数ｆ（φ，ｔ）は、時間ｔｉにおける目標の向きφｉを前提
として、空き領域が目に見えるか否かのそれぞれに応じて１または０を返すことができる
。
【００６５】
例えば、制約決定モジュール４０４は、空き領域の最小量（例えば、閾値量未満）が連
続画像フレームで生成されているかどうかを決定することができる。空き領域の量が閾値
量未満に降下すれば、制約が満たされ（例えば、空き領域の量が閾値量を超えない）、目
標の向きφおよびその対応する時間ｔを使用して、閾値を上回る量の空き領域を生成しな
い十分小さな回転速度を有する平滑な向きを生み出すことができる。制約が満たされなけ
れば（例えば、空き領域の量が閾値量を超える）、制約を満たしながら十分小さな回転速
度を維持するため、対応する目標の向きφを調整することができる。一実施形態では、空
き領域の閾値量は、ゼロである。他の実施形態では、空き領域の閾値量は、ほぼゼロであ
るか、または、人間の目では検出不可能と判断される無視できる値である。さらに別の実
施形態では、空き領域の閾値量は、すべての空き領域またはほぼすべての空き領域を排除
するなど、効果的に使用するためにクロッピング、ズーミングまたは修復を防ぐ値である
。他の実施形態では、空き領域の閾値量は、アプリケーションおよび許容レベルに基づい
て要望通り設定することができる。
【００６６】
ゆがみモジュール４０５は、平滑化モジュール４０２によって演算された新しい平滑化
されたカメラ配向のセットφｉに基づいてゆがんだフレームを生成する。例えば、ゆがみ
モジュール４０５は、フレームＦ、平滑化された向きφおよびその対応する時間ｔを入力
として取り入れて、ゆがんだフレームＦ’を生成する、ゆがみ関数ｇ（Ｆ，φ，ｔ）を実
装することができる。平滑化モジュール４０２によって出力されるような、ｔｉの経過に
伴って平滑に変化するφｉや、適切な関数ｆおよびｇの選択を前提として、結果として得
られたゆがんだフレームＦ’ｉは、安定した出力ビデオを作成する。関数ｆは、ゆがみ関
数ｇの選択に依存し得、単に、ゆがみ関数ｇを適用した後、フレームにおいて空き領域が
目に見えるか否かを示し得る。
【００６７】
実装される特定のゆがみ関数は、異なる実施形態で異なり得る。様々なカメラまたは所
望の近似に対して、異なるゆがみ関数が適切であり得る。例えば、実装されるゆがみ関数
は、カメラがローリングシャッタおよび小さなレンズ収差を有するかどうか、または、グ
ローバルシャッタを有するかどうかに基づき得る。例えば、一実施形態では、グローバル
シャッタを有するカメラに対して、ホモグラフィゆがみ関数を実装することができる。ア
フィン変換またはフレームの画像空間における回転に変換を加えたものなどの他の近似を
実装することもできる。
【００６８】
一実施形態では、θｉ入力は、ＳＯ（３）グループにおける回転である。回転行列およ
び四元数によってなど、回転を表す様々な方法がある。ＳＯ（３）にある表現は、オイラ
ー角よりむしろ四元数など、平滑な補間を促進する表現に変換することができる。θｉ回
転は、例えば、画像ベースの特徴トラッカから、または、ジャイロスコープの読取値を直
接測定して積分することによって、演算することができる。他の実施形態では、カメラの
向きの正確な推定を生み出す他のいかなる方法も実装することができる。
【００６９】
カメラ回転の観点からθについて説明してきたが、他の実施形態では、θは、３Ｄ空間
におけるカメラの回転と変換の両方を保持するベクトルを含み得る。例えば、回転と変換
の両方を含むベクトルは、モーションアルゴリズムからの構造によって生成することがで
きる。一実施形態では、θは、フレームの画像空間における変換もしくは回転、または、
他のあまり正確ではないが潜在的に演算上安価な近似を含み得る。θを平滑に補間でき、
結果として得られたφを対応するｆおよびｇ関数に入力できる限り、デジタルビデオ安定
化を実現することができる。
【００７０】
本明細書では、「平滑なカメラモーション」との記載は、回転速度における小さな変化
を指すために使用することができる。これは、近隣のフレームの回転における小さな変化
とは区別される。回転速度における小さな変化は、時間の経過に伴って課された制約をイ
ーズインおよびイーズアウトする向きを生み出し得る。近隣のフレームの回転における小
さな変化は、制約が実施される時間における向きに関する導関数の不連続性を生み出す一
方で、制約におよび制約から補間する。
【００７１】
制約ベースの回転平滑化は、回転速度および制約に基づいてエネルギー関数を最小化す
ることを含む最適化を含み得る。
一実施形態では、最小化するエネルギー関数Ｊは、以下の方程式の例（１２）によって
指定することができる。
【００７２】
【数５】
2020005326.tif 000007
回転φは、単位四元数（ベクトルとしても知られている）として表現することができる
。その上、以下の方程式の例（１３）で指定されるように、ハード制約をソフト制約と置
き換えることができる。
【００７３】
【数６】
2020005326.tif 000008
λは、ｆ制約がどれほど強く実施されるかを決定することができる。例えば、λを無限
に設定することは、空き領域が目に見えないことを保証することができ、制約を満たすこ
とができると仮定することができる。
【００７４】
方程式の例（１２）または（１３）に示される形式でエネルギー関数Ｊを最小化するた
め、様々な最適化アルゴリズムを使用することができる。一実施形態では、方程式の例（
１２）の勾配降下に基づく反復アルゴリズムが実装され、制約は、各反復で実施される。
一実施形態では、１秒あたり特定の数のフレームを記録するカメラなど、フレームは、時
間的に等間隔であり得る。等間隔のフレームを用いることで、分母は一定であると仮定す
ることができ、次いで、和から取り出すことができる。次いで、以下の方程式の例（１４
）によって導関数を指定することができる。
【００７５】
【数７】
2020005326.tif 000009
Ｃは、勾配の大きさを制御する定数であり得る。いくつかの実施形態では、Ｃは、モー
メンタムベースの方法などの勾配降下の何らかの形式によって自動的に選ばれる場合があ
る。他の実施形態では、Ｃは、簡素な勾配降下における降下率を制御するため、要望通り
設定することができる。値の例は、例えば、Ｃ＝２／（Δｔ）２であり得る。方程式（１
４）は、以下の例の方程式（１５）によってよりコンパクトに指定することができる。
【００７６】
【数８】
2020005326.tif 000010
カーネルＫは、ラプラシアン・ガウシアン（ＬｏＧ：Laplacian of Gaussian）フィル
タであり得る。ＬｏＧフィルタは、ガウシアン差分（ＤｏＧ：Difference of Gaussian）
またはボックス差分（ＤｏＢ：Difference of Box）フィルタで近似することができる。
また、カーネルＫは、ＬｏＧフィルタをガウシアンフィルタで畳み込むことによって調整
することもできる。これは、どれほど徐々に回転速度が変化すべきか（または制約をイー
ズインおよびイーズアウトする量）を制御することができる。ＬｏＧ／ＤｏＧ／ＤｏＢお
よび／またはガウシアンフィルタの選択は、カーネルＫの係数およびサイズに影響を及ぼ
し得るが、カーネルが時間導関数の形式を演算する限り、最適化された向きは、制約をイ
ーズインおよびイーズアウトする何らかの形式を呈し得る。
【００７７】
一実施形態では、四元数へのカーネルの適用は、４Ｄベクトルの線形重み付けをするこ
とである。理論上、球面線形補間（ｓｌｅｒｐ）を使用して四元数を補間することは、正
確な方法であり得る。角度の小さな変化に対して、線形補間に各反復で結果として得られ
た四元数（ｌｅｒｐ）の正規化を加えたものが、かなり正確な結果を生み出すには十分で
ある。そのような結果は、θが小さいとｓｉｎ（θ）≒θであるため、達成することがで
きる。手ブレによって生じた角度の変化（例えば、調整すべき変化）は、通常、大きいも
のではない。その上、合理的なレベルのクロッピング、ズーミングまたは修復ファクタは
、大した余裕を残さない可能性がある。小さな角度のみが空き領域を生成しない。したが
って、連続した向きの四元数間における手ブレによって生じた角度は、実際には、大きく
ない可能性があり、近似は、正確かつ演算上効率的なものであり得る。その上、急速なカ
メラの回転の場合（例えば、ユーザが素早く左にパンする）、制約関数ｆは、結果として
得られた向きを支配し得る。したがって、ｌｅｒｐからのいかなる不正確性も目立たない
可能性がある。
【００７８】
一実施形態では、制約ベースの回転平滑化は、以下のアルゴリズムの例（１）の観点か
ら指定することができる。
【００７９】
【数９】
2020005326.tif 000011
Φｉは、内側のループで変化しないように、外側のループで事前に演算することができ
る。反復数「numiter」は、平滑な回転をもたらすようほど十分高く設定することができ
る。次いで、結果として得られたφｉは、ｇに代入して、安定した出力ビデオを生成する
ことができる。
【００８０】
ｎ（φ）は、ｌｅｒｐにおける正規化ステップであり、ｎ（φ）＝φ／｜｜φ｜｜と定
義することができる。アルゴリズム１における添え字ｉは、Φｉが有効であるように選択
され、したがって、カーネルＫのサイズに依存し得る。この例では、境界での回転は、固
定して保持することができる。他の実施形態では、補外を介して境界を拡大し、最適化の
間に向きの全セットを反復できるようにすることができる。向きの全セットは、以下のセ
ットとして指定することができる。
【００８１】
【数１０】
2020005326.tif 000012
図５は、実施形態による、入力データおよび平滑化後に結果として得られたデータの例
のグラフを示す。上のグラフは、時間の経過に伴って描かれた入力データ５０２を含み、
制約５０３は円で示される。下のグラフは、制約５０３を含む、本明細書で説明される制
約ベースの回転平滑化技法に従って平滑化された入力データ５０２の結果として得られた
データ５０４を含む。例えば、結果として得られたデータ５０４は、制約（例えば、連続
画像フレームにおいて空き領域の閾値量が生成されない）が満たされることを保証する一
方で、回転速度（または微分係数）が小さく（または閾値未満に）なるように実施するこ
とによって、平滑化することができる。回転速度における小さな変化は、時間の経過に伴
って課された制約をイーズインおよびイーズアウトする向きを生み出し得る。結果として
得られたデータ５０４は、制約５０３をイーズインおよびイーズアウトする。他方では、
中間のグラフは、制約５０３を含む、近隣のフレームの向きの変化が小さくなるように実
施することによって入力データ５０２の平滑化を試みた結果として得られたデータ５０６
を含む。近隣のフレームの回転における小さな変化は、制約が実施される時間における向
きに関する導関数の不連続性を生み出す一方で、制約におよび制約から補間する。示され
るように、結果として得られたデータ５０６は、制約５０３における導関数の不連続性を
含む。
【００８２】
図６は、実施形態による、制約ベースの平滑化のための方法の例を示す。方法６００の
ブロック６０１では、ビデオデータが受信される。ビデオデータは、関連付けられたタイ
ムスタンプを有する画像フレームのセットを含み得る。一実施形態では、ブロック６０１
は、図４の入力モジュール７０１によって実行することができる。
【００８３】
ブロック６０３では、関連付けられたタイムスタンプを有する、カメラの向きに関する
カメラ配向データが受信される。例えば、カメラを含むデバイスは、ビデオのキャプチャ
の間にカメラの向きを追跡するカメラ配向データを生成する、ジャイロスコープ、加速度
計などの向きセンサも含み得る。カメラ配向データは、カメラ配向データをビデオデータ
の画像セットにリンクするかまたはそうでなければ関連付けるため、関連付けられたタイ
ムスタンプを含み得る。いくつかの例では、カメラ配向データは、ビデオデータと同時に
（ビデオデータと一緒になど）受信することができる。一実施形態では、ブロック６０２
は、図４の入力モジュール７０１によって実行することができる。
【００８４】
一実施形態では、ブロック６０１および６０３は、ビデオのキャプチャに使用されるカ
メラを有するデバイス（例えば、スマートフォンまたは他のハンドヘルド式のデバイス）
によって実行することができる。例えば、ビデオデータおよびカメラ配向データは、ビデ
オのキャプチャと同時に受信することができる。別の実施形態では、ブロック６０１およ
び６０３は、カメラを含むデバイス（例えば、スマートフォン）によってキャプチャされ
たビデオデータを後に受信する別々のデバイス（例えば、コンピュータ）によって実行す
ることができる。例えば、ビデオデータおよびカメラ配向データは、カメラおよび向きセ
ンサを含むデバイス（カメラを備えるスマートフォンなど）から別々のデバイスに伝送ま
たはアップロードすることができる。
【００８５】
ブロック６０５では、連続する画像フレーム間の回転速度を最小化することによって、
平滑化されたカメラ配向データのセットを生成しつつ、結果として得られる平滑化画像フ
レームのセットにおける空き領域の量を最小化する（または制限する）。結果として得ら
れる平滑化画像フレームのセットは、平滑化されたカメラ配向データのセットに基づいて
再配向されたものである。
【００８６】
一実施形態では、平滑化されたカメラ配向データのセットは、本明細書で説明される方
程式（１２）または（１３）を最小化することによって生成される。一実施形態では、方
程式の例（１２）の勾配降下に基づく反復アルゴリズムが実装され、制約は、各反復で実
施することができる。
【００８７】
ブロック６０７では、補正された画像フレームのセットを形成するため、画像フレーム
のセットがゆがめられる。画像フレームのセットは、画像フレームのセットおよび平滑化
されたカメラ配向データのセットに対する関連付けられたタイムスタンプに基づいてゆが
めることができる。一実施形態では、個々の画像フレームは、複数のサブセクションに分
割することができ、各サブセクションは、関連付けられたタイムスタンプおよびカメラの
向き（カメラ配向）を有し得る。各サブセクションは、補正された個々の画像フレームを
形成するため、関連付けられたタイムスタンプおよびカメラの向きに基づいて再編成する
ことができる。
【００８８】
［モーションブラー・アーチファクトの可視性の低減］
低光量で撮られたビデオのデジタルビデオ安定化は、奇妙なモーションブラー・アーチ
ファクトを生成する場合が多い。このモーションブラー・アーチファクトは、モーション
ブラーを引き起こしたモーション（例えば、手ブレ）が取り除かれた際にモーションブラ
ーが奇妙に見えるため発生し得る。いくつかの例では、モーション跡について説明するた
めに必要な手ブレだけ、安定させたビデオに残すことが必要であり得る。明確な水平モー
ション跡がフレームにある場合は、跡が意味をなすようにするため、その跡に従って向き
を水平に変化させる必要があり得る。水平モーションがない場合は、その跡は、安定させ
たビデオに理由もなく収まったり飛び出たりするように見え、それにより、目に見えるモ
ーションブラー・アーチファクトを生じ得る。
【００８９】
一実施形態では、カメラのシャッタが開いている間に起こった向きの変化Δθｉは、以
下の例の方程式（１６）に従って演算される。
【００９０】
【数１１】
2020005326.tif 000013
ｔｉｓは、フレームＦｉに対してシャッタが開かれている時間を表すことができる。ｅ
ｉは、フレームの露光持続時間である。θ（ｔ）は、時間ｔにおけるカメラの向きであり
、以下の表現上で補間することによって演算することができる。
【００９１】
【数１２】
2020005326.tif 000014
ジャイロスコープを使用するデジタルビデオの安定化およびローリングシャッタ補正の
ための上記で説明される例では、Δθｉは、シャッタが開かれている時間のみにわたって
積分することによって、ジャイロスコープの読取値から直接演算することもできる。方程
式（１）または方程式（２）内の和は、以下の方程式の例（１７）で指定されるように修
正することができる。
【００９２】
【数１３】
2020005326.tif 000015
方程式（１７）は、
【００９３】
【数１４】
2020005326.tif 000016
および
【００９４】
【数１５】
2020005326.tif 000017
であると仮定する。シャッタは、フレームのタイムスタンプの前には開かず、次のフレー
ムの開始前に閉じる。別の実施形態では、入力タイムスタンプは、異なる形で計算するこ
とができ（例えば、ｔｉは、シャッタを閉じた時間である）、要件を満たすようにタイム
スタンプを調整するため、前処理ステップを追加することができる。
【００９５】
上記で説明される実施形態では、フレームにモーション跡を残した向きの変化が保存さ
れる。別の実施形態では、近似は、以下の方程式の例（１８）で指定されるように実装す
ることができる。
【００９６】
【数１６】
2020005326.tif 000018
方程式（１８）における近似は、向きの変化Δθｉがモーション跡に沿って収まるよう
に、φｉの最適化を試みることができる。γスケーリング係数は、平滑性とどれほど近く
モーション跡をたどるべきかとの間のトレードオフを制御することができる。
【００９７】
［適切なズームファクタの選択］
例えば、許容できるズームファクタ（またはクロップファクタ、修復ファクタ、もしく
はデジタルビデオ安定化に余裕を提供するために使用されるアルゴリズムに適用可能な他
の任意の対策）は１〜１．２５である。所定のビデオに対して、平滑なカメラモーション
を生み出せるほど十分な余裕を提供する最も小さなズームファクタを決定することが望ま
しい場合がある。一実施形態では、結果として得られたカメラモーションの平滑性は、以
下の方程式の例（１９）によって測定することができる。
【００９８】
【数１７】
2020005326.tif 000019
方程式（１９）では、ｑは、どれほど頻繁に空き領域制約が実施されるかを測定する。
例えば、ｑ＝０．１の値は、空き領域が外面に現れないようにするため、平均して、１０
フレームごとにｆが実施されることを意味し得る。例えば、制約をイーズインおよびイー
ズアウトするために２０フレームの間隔が望ましい場合は、適切な値はｑ＝０．０５であ
り得る。
【００９９】
所望のｑ’値を提供するズームファクタｚ’を見出すため、アルゴリズム１は、様々な
ズームファクタ（例えば、ｚ∈［１，１．０５，１．１，１．１５，１．２，１．２５］
）に対する解を求めることができる。ズームファクタｚおよびアルゴリズム１を実行する
ことによって結果として得られたφｉを前提として、方程式（１９）から結果として得ら
れたｑを演算することができる。次いで、ｑ’に最も近いｑを提供したズームファクタを
選択することができる。別の実施形態では、ｑ’において結果として得られたデータセッ
ト（ｑ，ｚ）を線形補間することによって、ズームファクタｚ’を見出すことができる。
また、典型的なハンドヘルド式での記録に対する（ｑ，ｚ）ルックアップテーブルを事前
に演算することもでき、ｑ’は、中央または平均回転速度から推定される。この手法は、
特定のビデオに対してはあまり正確ではないものであり得るが、最適化アルゴリズムを複
数回実行する必要がないため、高速であり得る。
【０１００】
［演算効率の向上］
勾配降下以外のオプティマイザなどを使用する、近似の導入など、アルゴリズム（１）
の効率を向上するための多くの方法がある。一実施形態では、方程式（１５）におけるＫ
のカーネルのサイズを低減することができ、以下の方程式の例（２０）で指定されるよう
に、勾配を更新することができる。
【０１０１】
【数１８】
2020005326.tif 000020
カーネルのサイズを低減する（およびそれを再利用する）ことにより、勾配の演算を効
果的に加速させることができる。方程式（２０）におけるカーネルの別の特性は、ｓｌｅ
ｒｐを使用してより正確にＫΦｉの値を演算できることである。このことは、以下の方程
式の例（２１）で指定されるように、不均一な間隔のフレーム上で行うことができる。
【０１０２】
【数１９】
2020005326.tif 000021
さらにいっそう正確には、φｉおよびｓｌｅｒｐによって形成される球面に対する接線
を決定して、方程式（２０）で使用することができる。φｉおよびｓｌｅｒｐによって形
成される球面に対する接線は、以下の表現の例で指定することができる。
【０１０３】
【数２０】
2020005326.tif 000022
別の実施形態では、本明細書で説明されるアルゴリズム１の収束率を向上することによ
って、効率を向上することができる。このことは、粗から密までのモードでそれを実行す
ることによって実現することができる。例えば、アルゴリズム１は、１６の向きφｉごと
に供給して解を求めることによって初期化することができる。次いで、線形または三次補
間（例えば、ｓｌｅｒｐまたはｓｑｕａｄ）を使用して、その中間のφｉを演算すること
ができる。つまり、８の向きごとの値が得られる。アルゴリズム１は再度実行することが
できるが、ここでは、平滑性および制約のために８の向きごとに最適化する。このことは
、アルゴリズム１があらゆる向きにわたって実行されるまで繰り返すことができる。
【０１０４】
粗から密まで実行することにより、各ステップにおけるかなり少ない反復に対してアル
ゴリズム１を実行することが許可され得る。全体的なカメラモーションを平滑にすること
ができ、次いで、依然として平滑な状態を維持したまま、ますます小さくなるフレーム間
隔で制約を満たすため、向きを改良することができる。別の実施形態では、不均一なサン
プリングを使用することができる。例えば、１６のフレームごとに選ぶ代わりに、以前に
選ばれたフレームから向きがどれほど遠く外れているかに基づいてフレームを選ぶことが
できる。次いで、平滑化された向きがすべてのフレームに対して演算されるまで、セグメ
ントを細分割することができる。
【０１０５】
より粗いまたは不均一なサンプリングは、向きにおけるより大きな連続的な変化をもた
らし得るため、方程式（２１）で提示されるｓｌｅｒｐ修正を使用することで、より正確
な結果を生み出すことができる。
【０１０６】
［リアルタイムの安定化への応用例］
以下は、リアルタイムの設定にアルゴリズムを採用する実施形態の例として提供される
。Ｎのフレームをメモリに保存して、スライドウィンドウ形式でアルゴリズムが実行され
る。添え字ｉは、スライドウィンドウの開始を示し得、ｉ＋Ｎは、スライドウィンドウの
終了を示し得る。スライドウィンドウ内部の向きは、アルゴリズムを実行することによっ
て更新することができるという点で、適応性があるものであり得る。これらの向きは、以
下のセット（２）によって指定することができる。
【０１０７】
【数２１】
2020005326.tif 000023
スライドウィンドウに先行する向き（例えば、φｉ−１）は、固定することができる。
開始向きはφｉ−１であり得、回転速度（例えば、ジャイロスコープによって測定される
かまたは特徴トラッカから演算されるような）を積分して、向き｛θｉ，θｉ＋１，…，
θｉ＋Ｎ｝を得ることができる。これは、最適化アルゴリズムに対する入力として使用し
て、｛φｉ，φｉ＋１，…，φｉ＋Ｎ−２｝を演算することができる。向き｛φｉ−２，
φｉ−１｝および｛φｉ＋Ｎ−１＝θｉ＋Ｎ−１，θｉ＋Ｎ＝θｉ＋Ｎ｝は、固定して保
持することができ、モーションがスライドウィンドウへの出入りで平滑であることを保証
する境界条件として機能し得る。
【０１０８】
アルゴリズムが実行された時点で、向きφｉを得ることができ、その向きφｉは、フレ
ームＦｉをゆがめるのに使用することができる。フレームをゆがめた時点で、ゆがんだフ
レームは、エンコーダに渡し、Ｎのフレームのバッファから取り除くことができる。次い
で、カメラから新しいフレームを受信することができ、１つのフレームだけスライドウィ
ンドウを進めることができる。
【０１０９】
手順は、記録が止まり、すべてのフレームが処理されるまで、繰り返すことができる。
まさに最初のフレームｉ＝１に対しては、｛φ−１，φ０｝は定義されていない場合があ
る。φ−１およびφ０は、恒等四元数に設定することができる。最後のフレームが受信さ
れた時点で、バッファは、それぞれのフレームをゆがめるために最終的なスライドウィン
ドウ内部で演算された向きを使用することによってフラッシュすることができる。
【０１１０】
いくつかの例では、小さなバッファサイズ（例えば、Ｎ＝５）は、制約のイーズインお
よびイーズアウトができない場合がある。そのような事例では、ハード制約まで強化され
るソフト制約になるように制約関数ｆを変更する必要があり得る。これは、関数ｆ’（φ
，ｔ）として言及することができる。０または１を返す代わりに、ｆ’は、新しい向きφ
’を返し、新しい向きφ’は、フレームボーダから押しのけることができる。向きφが空
き領域を示すようになる状態に近づくほど、ｆ’はますます結果として得られたφ’を空
き領域から押しのけることができる。次いで、以下のアルゴリズムの例（２）で指定され
るように、アルゴリズム１を再公式化することができる。
【０１１１】
【数２２】
2020005326.tif 000024
向きｎ（φｉ−ＣＫΦｉ）が空き領域をもたらす際にｆ’が単にφｉを返す場合、アル
ゴリズム１とアルゴリズム２は同等であり得ることに留意されたい。アルゴリズム１の最
適化率は、関数ｆ’（φｉをｎ（φｉ−ＣＫΦｉ）に向けてｓｌｅｒｐするが、まさに空
き領域が現れようとしているポイントでちょうど停止する）を用いて、アルゴリズム２を
使用することによって向上することができる。
【０１１２】
［ソーシャルネットワーキングシステム−実装例］
図７は、本発明の実施形態による、ウェブサイトまたはアプリケーション上のユーザの
関心を推定するためのシステム７００の例のネットワーク図を示す。システム７００は、
１つまたは複数のユーザデバイス７１０、１つまたは複数の外部システム７２０、ソーシ
ャルネットワーキングシステム７３０およびネットワーク７５０を含む。一実施形態では
、上記で説明される実施形態に関連して論じられるソーシャルネットワーキングシステム
は、ソーシャルネットワーキングシステム７３０として実装することができる。例示を目
的として、図７によって示されるシステム７００の実施形態は、単一の外部システム７２
０および単一のユーザデバイス７１０を含む。しかし、他の実施形態では、システム７０
０は、より多くのユーザデバイス７１０および／またはより多くの外部システム７２０を
含み得る。ある実施形態では、ソーシャルネットワーキングシステム７３０は、ソーシャ
ルネットワークプロバイダによって動作され、外部システム７２０は、異なる実体によっ
て動作され得るという点で、ソーシャルネットワーキングシステム７３０から分離される
。しかし、様々な実施形態では、ソーシャルネットワーキングシステム７３０のユーザ（
またはメンバー）にソーシャルネットワーキングサービスを提供するため、ソーシャルネ
ットワーキングシステム７３０および外部システム７２０は連動する。この意味で、ソー
シャルネットワーキングシステム７３０は、プラットホームまたはバックボーンを提供し
、他のシステム（外部システム７２０など）は、プラットホームまたはバックボーンを使
用して、インターネット上でソーシャルネットワーキングサービスおよび機能性をユーザ
に提供することができる。
【０１１３】
ユーザデバイス７１０は、１つまたは複数のコンピューティングデバイスを備え、１つ
または複数のコンピューティングデバイスは、ユーザから入力を受信し、ネットワーク７
５０を介してデータを伝送および受信することができる。一実施形態では、ユーザデバイ
ス７１０は、例えば、マイクロソフトウィンドウズ（登録商標）対応オペレーティングシ
ステム（ＯＳ）、アップル（登録商標）ＯＳＸおよび／またはリナックス（登録商標）デ
ィストリビューションを実行する従来のコンピュータシステムである。別の実施形態では
、ユーザデバイス７１０は、スマートフォン、タブレット、携帯情報端末（ＰＤＡ）、携
帯電話など、コンピュータの機能性を有するデバイスであり得る。ユーザデバイス７１０
は、ネットワーク７５０を介して通信するように構成される。ユーザデバイス７１０は、
例えば、ユーザデバイス７１０のユーザがソーシャルネットワーキングシステム７３０と
相互作用できるようにするブラウザアプリケーションなどのアプリケーションを実行する
ことができる。別の実施形態では、ユーザデバイス７１０は、ｉＯＳ（登録商標）やアン
ドロイド（登録商標）などのユーザデバイス７１０のネイティブのオペレーティングシス
テムで提供されるアプリケーションプログラミングインタフェース（ＡＰＩ）を通じてソ
ーシャルネットワーキングシステム７３０と相互作用する。ユーザデバイス７１０は、ネ
ットワーク７５０を介して外部システム７２０およびソーシャルネットワーキングシステ
ム７３０と通信するように構成され、ネットワーク７５０は、有線および／または無線通
信システムを使用する、ローカルエリアおよび／または広域ネットワークのいかなる組合
せも含み得る。
【０１１４】
一実施形態では、ネットワーク７５０は、標準通信技術およびプロトコルを使用する。
したがって、ネットワーク７５０は、イーサネット（登録商標）、８０２．１１、ＷｉＭ
ＡＸ（登録商標）、３Ｇ、４Ｇ、ＣＤＭＡ、ＧＳＭ（登録商標）、ＬＴＥ、デジタル加入
者回線（ＤＳＬ）などの技術を使用するリンクを含み得る。同様に、ネットワーク７５０
上で使用されるネットワークプロトコルは、マルチプロトコルラベルスイッチング（ＭＰ
ＬＳ）、伝送制御プロトコル／インターネットプロトコル（ＴＣＰ／ＩＰ）、ユーザデー
タグラムプロトコル（ＵＤＰ）、ハイパーテキストトランスポートプロトコル（ＨＴＴＰ
）、簡易メール転送プロトコル（ＳＭＴＰ）、ファイル転送プロトコル（ＦＴＰ）および
同様のものを含み得る。ネットワーク７５０上で交換されるデータは、ハイパーテキスト
マークアップ言語（ＨＴＭＬ）および拡張マークアップ言語（ＸＭＬ）を含む技術および
／またはフォーマットを使用して表すことができる。それに加えて、すべてのまたはいく
つかのリンクは、セキュアソケット層（ＳＳＬ）、トランスポート層セキュリティ（ＴＬ
Ｓ）およびインターネットプロトコルセキュリティ（ＩＰｓｅｃ）などの従来の暗号化技
術を使用して暗号化することができる。
【０１１５】
一実施形態では、ユーザデバイス７１０は、ブラウザアプリケーション７１２を使用し
て、外部システム７２０からおよびソーシャルネットワーキングシステム７３０から受信
されたマークアップ言語文書７１４を処理することによって、外部システム７２０からお
よび／またはソーシャルネットワーキングシステム７３０からのコンテンツを表示するこ
とができる。マークアップ言語文書７１４は、コンテンツや、コンテンツのフォーマット
またはプレゼンテーションについて説明する１つまたは複数の命令を特定する。マークア
ップ言語文書７１４に含まれる命令を実行することによって、ブラウザアプリケーション
７１２は、マークアップ言語文書７１４によって説明されたフォーマットまたはプレゼン
テーションを使用して、特定されたコンテンツを表示する。例えば、マークアップ言語文
書７１４は、外部システム７２０およびソーシャルネットワーキングシステム７３０から
回収されたテキストおよび／または画像データを含む複数のフレームを有するウェブペー
ジを生成および表示するための命令を含む。様々な実施形態では、マークアップ言語文書
７１４は、拡張マークアップ言語（ＸＭＬ）データ、拡張ハイパーテキストマークアップ
言語（ＸＨＴＭＬ）データまたは他のマークアップ言語データを含むデータファイルを含
む。それに加えて、マークアップ言語文書７１４は、外部システム７２０とユーザデバイ
ス７１０との間のデータ交換を容易にするためのジャバスクリプト（ＪａｖａＳｃｒｉｐ
ｔ）（登録商標）オブジェクトノーテーション（ＪＳＯＮ）データ、ジェイソンウィズパ
ディング（ＪＳＯＮＰ）およびジャバスクリプトデータを含み得る。ユーザデバイス７１
０上のブラウザアプリケーション７１２は、ジャバスクリプトコンパイラを使用して、マ
ークアップ言語文書７１４を復号することができる。
【０１１６】
また、マークアップ言語文書７１４は、フラッシュ（ＦＬＡＳＨ）（登録商標）または
ユニティ（Ｕｎｉｔｙ）（登録商標）アプリケーション、シルバーライト（Ｓｉｌｖｅｒ
Ｌｉｇｈｔ）（登録商標）アプリケーションフレームワークなどのアプリケーションまた
はアプリケーションフレームワークを含むことも、アプリケーションまたはアプリケーシ
ョンフレームワークにリンクすることもできる。
【０１１７】
一実施形態は、ユーザデバイス７１０は、ユーザデバイス７１０のユーザが、ソーシャ
ルネットワーキングシステム７３０にログインしているかどうかを示すデータを含む１つ
または複数のクッキー７１６も含み、それにより、ソーシャルネットワーキングシステム
７３０からユーザデバイス７１０に伝達されるデータの変更が可能になり得る。
【０１１８】
外部システム７２０は、ネットワーク７５０を使用してユーザデバイス７１０に伝達さ
れる１つまたは複数のウェブページ７２２ａ、７２２ｂを含む１つまたは複数のウェブサ
ーバを含む。外部システム７２０は、ソーシャルネットワーキングシステム７３０から分
離される。例えば、外部システム７２０は、第１のドメインと関連付けられ、ソーシャル
ネットワーキングシステム７３０は、別々のソーシャルネットワーキングドメインと関連
付けられる。外部システム７２０に含まれるウェブページ７２２ａ、７２２ｂは、マーク
アップ言語文書７１４を含み、マークアップ言語文書７１４は、コンテンツを特定し、特
定されたコンテンツのフォーマットまたはプレゼンテーションを指定する命令を含む。
【０１１９】
ソーシャルネットワーキングシステム７３０は、ソーシャルネットワーク用の１つまた
は複数のコンピューティングデバイスを含み、ソーシャルネットワークは、複数のユーザ
を含み、ソーシャルネットワークの他のユーザとの通信および相互作用を行う能力をソー
シャルネットワークのユーザに提供する。いくつかの例では、ソーシャルネットワークは
、グラフ（すなわち、エッジおよびノードを含むデータ構造）で表すことができる。また
、他のデータ構造も、ソーシャルネットワークを表すために使用することができ、これら
に限定されないが、データベース、オブジェクト、クラス、メタ要素、ファイルまたは他
の任意のデータ構造を含む。ソーシャルネットワーキングシステム７３０は、オペレータ
が管理、運用または制御することができる。ソーシャルネットワーキングシステム７３０
のオペレータは、ソーシャルネットワーキングシステム７３０内でコンテンツの管理、ポ
リシの規制および使用率メトリクスの収集を行うための人間、自動化アプリケーションま
たは一連のアプリケーションであり得る。いかなるタイプのオペレータも使用することが
できる。
【０１２０】
ユーザは、ソーシャルネットワーキングシステム７３０に参加し、次いで、接続を希望
するソーシャルネットワーキングシステム７３０の何人もの他のユーザへの接続を追加す
ることができる。本明細書で使用されるように、「友達」という用語は、ユーザがソーシ
ャルネットワーキングシステム７３０を介して接続、関連性または関係を形成したソーシ
ャルネットワーキングシステム７３０の他のいかなるユーザも指す。例えば、一実施形態
では、ソーシャルネットワーキングシステム７３０のユーザがソーシャルグラフのノード
として表される場合は、「友達」という用語は、２人のユーザ間で形成されたエッジおよ
び２人のユーザを直接接続するエッジを指し得る。
【０１２１】
接続は、ユーザが明示的に追加することも、ユーザの共通の特性（例えば、同じ教育機
関の同窓生であるユーザ）に基づいてソーシャルネットワーキングシステム７３０が自動
的に作り出すこともできる。例えば、第１のユーザは、友達とする他の特定のユーザを明
確に選択する。ソーシャルネットワーキングシステム７３０における接続は、通常、両方
向のものであるが、必須ではないため、「ユーザ」および「友達」という用語は、基準フ
レームに依存する。ソーシャルネットワーキングシステム７３０のユーザ間の接続は、通
常、双方向の（「二方向の」）または「相互の」ものであるが、接続は、単方向のまたは
「一方向の」ものでもあり得る。例えば、ボブ（Ｂｏｂ）とジョー（Ｊｏｅ）が両者とも
、ソーシャルネットワーキングシステム７３０のユーザであり、互いに接続されている場
合は、ボブとジョーは、互いの接続者である。他方では、ボブは、ジョーによってソーシ
ャルネットワーキングシステム７３０に伝達されたデータを閲覧するためにジョーとの接
続を希望しているが、ジョーは、相互接続の形成を希望していない場合は、単方向の接続
を確立することができる。ユーザ間の接続は、直接接続であり得る。しかし、ソーシャル
ネットワーキングシステム７３０のいくつかの実施形態は、１つまたは複数の接続レベル
または隔たりを介して接続を間接的なものにすることができる。
【０１２２】
ユーザ間の接続を確立して維持し、ユーザ間の相互作用を可能にすることに加えて、ソ
ーシャルネットワーキングシステム７３０は、ソーシャルネットワーキングシステム７３
０によってサポートされる様々なタイプのアイテムに対する動作を取る能力をユーザに提
供する。これらのアイテムは、ソーシャルネットワーキングシステム７３０のユーザが属
し得るグループまたはネットワーク（すなわち、人々、実体および概念のソーシャルネッ
トワーク）、ユーザが興味を持ちそうなイベントまたはカレンダエントリ、ソーシャルネ
ットワーキングシステム７３０を介してユーザが使用できるコンピュータベースのアプリ
ケーション、ソーシャルネットワーキングシステム７３０によってまたはソーシャルネッ
トワーキングシステム７３０を通じて提供されるサービスを介してユーザがアイテムを購
入または販売できるトランザクション、および、ソーシャルネットワーキングシステム７
３０内外でユーザが実行できる広告との相互作用を含み得る。これらは、ソーシャルネッ
トワーキングシステム７３０上でユーザが作用できるアイテムのほんの数例であり、他の
多くのものも可能である。ユーザは、ソーシャルネットワーキングシステム７３０もしく
は外部システム７２０で表すことができるか、ソーシャルネットワーキングシステム７３
０から分離することができるか、または、ネットワーク７５０を介してソーシャルネット
ワーキングシステム７３０と結合することができればどんなものとでも相互作用すること
ができる。
【０１２３】
また、ソーシャルネットワーキングシステム７３０は、様々な実体をリンクすることも
できる。例えば、ソーシャルネットワーキングシステム７３０は、ユーザが、ＡＰＩ、ウ
ェブサービスまたは他の通信チャネルを通じて、互いに、および、外部システム７２０ま
たは他の実体と相互作用できるようにする。ソーシャルネットワーキングシステム７３０
は、複数のエッジによって相互接続された複数のノードを含む「ソーシャルグラフ」を生
成して維持する。ソーシャルグラフの各ノードは、別のノードに作用し得るおよび／また
は別のノードによって作用され得る実体を表し得る。ソーシャルグラフは、様々なタイプ
のノードを含み得る。ノードのタイプの例は、ユーザ、人間ではない実体、コンテンツア
イテム、ウェブページ、グループ、活動、メッセージ、概念、および、ソーシャルネット
ワーキングシステム７３０でオブジェクトによって表すことができる他の任意のものを含
む。ソーシャルグラフの２つのノード間のエッジは、ノード関係からまたはノードのうち
の１つによって他のノードに対して実行された動作から生じ得る、２つのノード間の特定
の種類の接続または関連性を表し得る。いくつかの事例では、ノード間のエッジは、重み
付けすることができる。エッジの重みは、ノード間の接続または関連性の強度など、エッ
ジと関連付けられた属性を表し得る。異なるタイプのエッジは、異なる重みで提供するこ
とができる。例えば、あるユーザが別のユーザを「好む」際に作成されたエッジにはある
重みを与える一方で、ユーザが別のユーザと友達になった際に作成されたエッジには異な
る重みを与えることができる。
【０１２４】
例として、第１のユーザが第２のユーザを友達と見なすと、第１のユーザを表すノード
と第２のユーザを表す第２のノードとを接続するソーシャルグラフのエッジが生成される
。様々なノードが互いに関連するかまたは相互作用するため、ソーシャルネットワーキン
グシステム７３０は、関係および相互作用を反映するため、様々なノードを接続するエッ
ジを変更する。
【０１２５】
また、ソーシャルネットワーキングシステム７３０は、ソーシャルネットワーキングシ
ステム７３０とのユーザの相互作用を強化するユーザが生成したコンテンツも含む。ユー
ザが生成したコンテンツは、ユーザがソーシャルネットワーキングシステム７３０に追加
、アップロード、送信または「掲示」できるものであればどんなものも含み得る。例えば
、ユーザは、ユーザデバイス７１０からソーシャルネットワーキングシステム７３０にポ
ストを伝達する。ポストは、ステータス更新もしくは他のテキストデータ、位置情報、写
真などの画像、ビデオ、リンク、音楽、または、他の同様のデータおよび／もしくはメデ
ィアなどのデータを含み得る。また、コンテンツは、第三者がソーシャルネットワーキン
グシステム７３０に追加することもできる。コンテンツ「アイテム」は、ソーシャルネッ
トワーキングシステム７３０でオブジェクトとして表される。このように、ソーシャルネ
ットワーキングシステム７３０のユーザは、様々な通信チャネルを通じて、様々なタイプ
のメディアのテキストおよびコンテンツアイテムを掲示することによって、互いに通信す
ることが推奨される。そのような通信は、ユーザの互いの相互作用を増大し、ユーザがソ
ーシャルネットワーキングシステム７３０と相互作用する頻度を増大する。
【０１２６】
ソーシャルネットワーキングシステム７３０は、ウェブサーバ７３２、ＡＰＩ要求サー
バ７３４、ユーザプロファイルストア７３６、接続ストア７３８、行動ロガー７４０、活
動記録７４２、認証サーバ７４４およびデジタルビデオ安定化モジュール７４６を含む。
本発明の実施形態では、ソーシャルネットワーキングシステム７３０は、様々なアプリケ
ーションに対する追加の、より少ないまたは異なるコンポーネントを含み得る。システム
の細部を曖昧にしないように、ネットワークインタフェース、セキュリティメカニズム、
負荷分散装置、フェイルオーバサーバ、管理およびネットワーク運用コンソール、ならび
に、同様のものなどの他のコンポーネントは示されていない。
【０１２７】
ユーザプロファイルストア７３６は、職歴、学歴、趣味または好み、位置、および、ユ
ーザによって宣言されているかまたはソーシャルネットワーキングシステム７３０によっ
て推測されている同様のものなど、伝記的な、人口学的なおよび他のタイプの記述的情報
を含む、ユーザアカウントについての情報を維持する。この情報は、各ユーザが一意に識
別されるように、ユーザプロファイルストア７３６に格納される。また、ソーシャルネッ
トワーキングシステム７３０は、異なるユーザ間の１つまたは複数の接続について説明す
るデータを接続ストア７３８に格納する。接続情報は、同様のまたは共通の職歴、グルー
プメンバーシップ、趣味または学歴を有するユーザを示し得る。それに加えて、ソーシャ
ルネットワーキングシステム７３０は、異なるユーザ間のユーザが定義した接続を含み、
ユーザが他のユーザとの関係を指定できるようにする。例えば、ユーザが定義した接続は
、友達、同僚、パートナなど、ユーザの現実の関係に類似した他のユーザとの関係をユー
ザが作り出せるようにする。ユーザは、事前に定義された接続タイプから選択することも
、必要に応じてユーザ自身の接続タイプを定義することもできる。また、人間ではない実
体、バケット、クラスタセンタ、画像、興味、ページ、外部システム、概念および同様の
ものなどのソーシャルネットワーキングシステム７３０の他のノードとの接続も、接続ス
トア７３８に格納される。
【０１２８】
ソーシャルネットワーキングシステム７３０は、ユーザが相互作用できるオブジェクト
についてのデータを維持する。このデータを維持するため、ユーザプロファイルストア７
３６および接続ストア７３８は、ソーシャルネットワーキングシステム７３０によって維
持される対応するオブジェクトタイプのインスタンスを格納する。各オブジェクトタイプ
は、オブジェクトのタイプに適切な情報の格納に適した情報フィールドを有する。例えば
、ユーザプロファイルストア７３６は、ユーザのアカウントおよびユーザのアカウントに
関連する情報に関する説明に適したフィールドを有するデータ構造を含む。特定のタイプ
の新しいオブジェクトが作成されると、ソーシャルネットワーキングシステム７３０は、
対応するタイプの新しいデータ構造を初期化し、一意のオブジェクト識別子をそれに割り
当て、必要に応じてオブジェクトへのデータの追加を開始する。このことは、例えば、ユ
ーザがソーシャルネットワーキングシステム７３０のユーザになると起こり得、ソーシャ
ルネットワーキングシステム７３０は、ユーザプロファイルの新しいインスタンスをユー
ザプロファイルストア７３６に生成し、一意識別子をユーザアカウントに割り当て、ユー
ザアカウントのフィールドへのユーザが提供する情報の投入を開始する。
【０１２９】
接続ストア７３８は、ユーザと他のユーザとの接続、外部システム７２０との接続また
は他の実体との接続に関する説明に適したデータ構造を含む。また、接続ストア７３８は
、接続タイプをユーザの接続と関連付けることもでき、その関連性をユーザのプライバシ
設定と併せて使用して、ユーザについての情報へのアクセスを規制することができる。本
発明の実施形態では、ユーザプロファイルストア７３６および接続ストア７３８は、連合
データベースとして実装することができる。
【０１３０】
接続ストア７３８、ユーザプロファイルストア７３６および活動記録７４２に格納され
たデータは、ソーシャルネットワーキングシステム７３０がソーシャルグラフを生成でき
るようにし、ソーシャルグラフは、ノードを使用して、ノードを接続する様々なオブジェ
クトおよびエッジを特定し、異なるオブジェクト間の関係を特定する。例えば、第１のユ
ーザがソーシャルネットワーキングシステム７３０の第２のユーザとの接続を確立する場
合、ユーザプロファイルストア７３６からの第１のユーザおよび第２のユーザのユーザア
カウントは、ソーシャルグラフのノードとして機能し得る。接続ストア７３８によって格
納された第１のユーザと第２のユーザとの間の接続は、第１のユーザおよび第２のユーザ
と関連付けられたノード間のエッジである。この例を続けると、第２のユーザは、ソーシ
ャルネットワーキングシステム７３０内で第１のユーザにメッセージを送信することがで
きる。格納することができる、メッセージを送信する動作は、第１のユーザおよび第２の
ユーザを表すソーシャルグラフの２つのノード間の別のエッジである。それに加えて、メ
ッセージ自体を、第１のユーザおよび第２のユーザを表すノードに接続された別のノード
として特定し、ソーシャルグラフに含めることができる。
【０１３１】
別の例では、第１のユーザは、ソーシャルネットワーキングシステム７３０によって維
持される画像に（またはその代替として、ソーシャルネットワーキングシステム７３０の
外側の別のシステムによって維持される画像に）第２のユーザをタグ付けすることができ
る。画像はそれ自体、ソーシャルネットワーキングシステム７３０のノードとして表すこ
とができる。このタグ付け動作は、第１のユーザと第２のユーザとの間のエッジを作成す
ることや、ユーザの各々と画像（これもソーシャルグラフのノードである）との間のエッ
ジを作成することができる。さらに別の例では、ユーザがイベントへの出席を確認する場
合、ユーザおよびイベントは、ユーザプロファイルストア７３６から得られたノードであ
り、イベントへの出席は、活動記録７４２から回収することができるノード間のエッジで
ある。ソーシャルグラフを生成して維持することにより、ソーシャルネットワーキングシ
ステム７３０は、異なるタイプのオブジェクト、ならびに、それらのオブジェクト間の相
互作用および接続について説明するデータを含み、社会的に関連する情報の豊富な供給源
を提供する。
【０１３２】
ウェブサーバ７３２は、ネットワーク７５０を介して、ソーシャルネットワーキングシ
ステム７３０を１つもしくは複数のユーザデバイス７１０および／または１つもしくは複
数の外部システム７２０にリンクする。ウェブサーバ７３２は、ウェブページや、ジャバ
（Ｊａｖａ）（登録商標）、ジャバスクリプト（ＪａｖａＳｃｒｉｐｔ）（登録商標）、
フラッシュ（Ｆｌａｓｈ）（登録商標）、ＸＭＬなどの他のウェブ関連のコンテンツをサ
ービス提供する。ウェブサーバ７３２は、メールサーバ、または、ソーシャルネットワー
キングシステム７３０と１つまたは複数のユーザデバイス７１０との間でメッセージを受
信およびルーティングするための他のメッセージング機能性を含み得る。メッセージは、
インスタントメッセージ、キューに入れられたメッセージ（例えば、Ｅメール）、テキス
トおよびＳＭＳメッセージまたは他の任意の適したメッセージングフォーマットであり得
る。
【０１３３】
ＡＰＩ要求サーバ７３４は、１つまたは複数の外部システム７２０およびユーザデバイ
ス７１０が、１つまたは複数のＡＰＩ関数を呼び出すことによって、ソーシャルネットワ
ーキングシステム７３０からアクセス情報を呼び出せるようにする。また、ＡＰＩ要求サ
ーバ７３４は、外部システム７２０が、ＡＰＩを呼び出すことによって、ソーシャルネッ
トワーキングシステム７３０に情報を送信できるようにもする。一実施形態では、外部シ
ステム７２０は、ネットワーク７５０を介してソーシャルネットワーキングシステム７３
０にＡＰＩ要求を送信し、ＡＰＩ要求サーバ７３４は、ＡＰＩ要求を受信する。ＡＰＩ要
求サーバ７３４は、ＡＰＩ要求と関連付けられたＡＰＩを呼び出すことによって要求を処
理して適切な応答を生成し、ＡＰＩ要求サーバ７３４は、ネットワーク７５０を介して外
部システム７２０に適切な応答を伝達する。例えば、ＡＰＩ要求に応答して、ＡＰＩ要求
サーバ７３４は、外部システム７２０にログインしたユーザの接続者などのユーザと関連
付けられたデータを収集し、収集したデータを外部システム７２０に伝達する。別の実施
形態では、ユーザデバイス７１０は、外部システム７２０と同じ方法で、ＡＰＩを介して
ソーシャルネットワーキングシステム７３０と通信する。
【０１３４】
行動ロガー７４０は、ソーシャルネットワーキングシステム７３０内および／またはソ
ーシャルネットワーキングシステム７３０外のユーザの動作についてウェブサーバ７３２
から通信を受信することができる。行動ロガー７４０は、ユーザの動作についての情報を
活動記録７４２に投入し、ソーシャルネットワーキングシステム７３０が、ソーシャルネ
ットワーキングシステム７３０内およびソーシャルネットワーキングシステム７３０外で
そのユーザによって取られた様々な動作を発見できるようにする。ソーシャルネットワー
キングシステム７３０上で別のノードに関して特定のユーザが取るいかなる動作も、活動
記録７４２でまたは同様のデータベースもしくは他のデータリポジトリで維持される情報
を通じて、各ユーザアカウントと関連付けることができる。特定されて格納されるソーシ
ャルネットワーキングシステム７３０内でユーザが取る動作の例は、例えば、別のユーザ
への接続を追加すること、別のユーザにメッセージを送信すること、別のユーザからメッ
セージを読むこと、別のユーザと関連付けられたコンテンツを閲覧すること、別のユーザ
によって掲示されたイベントに出席すること、画像を掲示すること、画像の掲示を試みる
こと、または、別のユーザもしくは別のオブジェクトと相互作用する他の動作を含み得る
。ソーシャルネットワーキングシステム７３０内でユーザが動作を取ると、その動作は活
動記録７４２に記録される。一実施形態では、ソーシャルネットワーキングシステム７３
０は、エントリに関するデータベースとして活動記録７４２を維持する。ソーシャルネッ
トワーキングシステム７３０内で動作を取ると、動作に対するエントリが活動記録７４２
に追加される。活動記録７４２は、動作記録と呼ぶことができる。
【０１３５】
それに加えて、ユーザ動作は、ソーシャルネットワーキングシステム７３０から分離さ
れた外部システム７２０などのソーシャルネットワーキングシステム７３０の外側の実体
内で起こる概念および動作と関連付けることができる。例えば、行動ロガー７４０は、ウ
ェブサーバ７３２から外部システム７２０とのユーザの相互作用について説明するデータ
を受信することができる。この例では、外部システム７２０は、ソーシャルグラフで構造
化された動作およびオブジェクトに従って、ユーザの相互作用を報告する。
【０１３６】
ユーザが外部システム７２０と相互作用する動作の他の例は、ユーザが外部システム７
２０もしくは別の実体への興味を示すこと、外部システム７２０もしくは外部システム７
２０内のウェブページ７２２ａについて論じているソーシャルネットワーキングシステム
７３０にユーザがコメントを掲示すること、ソーシャルネットワーキングシステム７３０
にユーザが外部システム７２０と関連付けられたユニフォームリソースロケータ（ＵＲＬ
）もしくは他の識別子を掲示すること、外部システム７２０と関連付けられたイベントに
ユーザが出席すること、または、外部システム７２０に関連するユーザによる他の任意の
動作を含む。したがって、活動記録７４２は、ソーシャルネットワーキングシステム７３
０のユーザと、ソーシャルネットワーキングシステム７３０から分離された外部システム
７２０との相互作用について説明する動作を含み得る。
【０１３７】
認証サーバ７４４は、ソーシャルネットワーキングシステム７３０のユーザの１つまた
は複数のプライバシ設定を実施する。ユーザのプライバシ設定は、ユーザと関連付けられ
た特定の情報をどのように共有できるかを決定する。プライバシ設定は、ユーザと関連付
けられた特定の情報の仕様、および、情報を共有できる１つまたは複数の実体の仕様を含
む。情報を共有できる実体の例は、他のユーザ、アプリケーション、外部システム７２０
、または、潜在的に情報にアクセスできる任意の実体を含み得る。ユーザが共有できる情
報は、ユーザアカウント情報（プロファイル写真など）、ユーザと関連付けられた電話番
号、ユーザの接続者、ユーザが取った動作（接続の追加など）、ユーザプロファイル情報
の変更および同様のものを含む。
【０１３８】
プライバシ設定仕様は、異なる粒度レベルで提供することができる。例えば、プライバ
シ設定は、他のユーザと共有すべき特定の情報を特定することができる。プライバシ設定
は、職場の電話番号または特定の一連の関連情報（プロファイル写真、自宅の電話番号お
よびステータスを含む個人情報など）を特定する。あるいは、プライバシ設定は、ユーザ
と関連付けられたすべての情報に適用することができる。また、特定の情報にアクセスで
きる一連の実体の仕様も、様々な粒度レベルで指定することができる。情報を共有できる
様々な一連の実体は、例えば、ユーザのすべての友達、友達のすべての友達、すべてのア
プリケーションまたはすべての外部システム７２０を含み得る。一実施形態は、一連の実
体の仕様が実体の列挙を含むことを可能にする。例えば、ユーザは、ある情報へのアクセ
スが認められている外部システム７２０のリストを提供することができる。別の実施形態
は、仕様が、情報へのアクセスが認められていない例外と共に一連の実体を含むことを可
能にする。例えば、ユーザは、すべての外部システム７２０がユーザの職場情報にアクセ
スできるようにするが、職場情報へのアクセスが認められていない外部システム７２０の
リストを指定することができる。ある実施形態は、「ブロックリスト」という、ある情報
へのアクセスが認められていない例外のリストを呼び出す。ユーザによって指定されたブ
ロックリストに属する外部システム７２０は、プライバシ設定で指定された情報へのアク
セスが阻止される。情報の仕様の粒度および情報が共有される実体の仕様の粒度の様々な
組合せが可能である。例えば、すべての個人情報は、友達と共有することができるが、す
べての職場情報は、友達の友達と共有することができる。
【０１３９】
認証サーバ７４４は、ユーザの友達、外部システム７２０ならびに／または他のアプリ
ケーションおよび実体による、ユーザと関連付けられたある情報へのアクセスが可能かど
うかを判断するための論理を含む。外部システム７２０は、ユーザのより個人的で機密な
情報（ユーザの職場の電話番号など）にアクセスするための認証サーバ７４４からの認証
が必要であり得る。ユーザのプライバシ設定に基づいて、認証サーバ７４４は、別のユー
ザ、外部システム７２０、アプリケーションまたは別の実体に対して、ユーザと関連付け
られた情報（ユーザが取った動作についての情報を含む）へのアクセスが認められている
かどうかを判断する。
【０１４０】
ソーシャルネットワーキングシステム７３０は、デジタルビデオ安定化モジュール７４
６を含み得る。デジタルビデオ安定化モジュール７４６は、空き領域が目に見えないかま
たは最小閾値未満であるという制約の下、平滑なカメラ配向のセットを演算することがで
きる。次いで、デジタルビデオ安定化モジュール７４６は、新しい平滑化されたカメラ配
向のセットに基づいて、ゆがんだフレームを生成することができる。一実施形態では、デ
ジタルビデオ安定化モジュール７４６は、図４のデジタルビデオ安定化４００として実装
することができる。
ハードウェアの実装
前述のプロセスおよび特徴は、多種多様なマシンおよびコンピュータシステムアーキテ
クチャによって、ならびに、多種多様なネットワークおよびコンピューティング環境で実
装することができる。図８は、本発明の実施形態による、本明細書で説明される実施形態
のうちの１つまたは複数の実装に使用することができるコンピュータシステム８００の例
を示す。コンピュータシステム８００は、本明細書で論じられるプロセスおよび特徴をコ
ンピュータシステム８００に実行させる命令セットを含む。コンピュータシステム８００
は、他のマシンに接続（例えば、ネットワーク接続）することができる。ネットワーク接
続された配置では、コンピュータシステム８００は、クライアントサーバネットワーク環
境におけるサーバマシンもしくはクライアントマシンの資格で、または、ピアツーピア（
または分散型）ネットワーク環境におけるピアマシンとして動作することができる。本発
明の実施形態では、コンピュータシステム８００は、本明細書で説明されるソーシャルネ
ットワーキングシステムのコンポーネントであり得る。本発明の実施形態では、コンピュ
ータシステム８００は、ソーシャルネットワーキングシステム８３０のすべてまたは一部
を構成する多くのサーバのうちの１つのサーバであり得る。
【０１４１】
コンピュータシステム８００は、本明細書で説明されるプロセスおよび特徴を対象とす
る、プロセッサ８０２、キャッシュ８０４、ならびに、コンピュータ可読媒体上に格納さ
れた１つまたは複数の実行可能なモジュールおよびドライバを含む。それに加えて、コン
ピュータシステム８００は、高性能入力／出力（Ｉ／Ｏ）バス８０６および標準Ｉ／Ｏバ
ス８０８を含む。ホストブリッジ８１０は、プロセッサ８０２と高性能Ｉ／Ｏバス８０６
とを結合し、Ｉ／Ｏバスブリッジ８１２は、２つのバス８０６および８０８を互いに結合
する。システムメモリ８１４および１つまたは複数のネットワークインタフェース８１６
は、高性能Ｉ／Ｏバス８０６と結合される。コンピュータシステム８００は、ビデオメモ
リおよびビデオメモリと結合された表示デバイス（図示せず）をさらに含み得る。大容量
記憶装置８１８およびＩ／Ｏポート８２０は、標準Ｉ／Ｏバス８０８と結合される。コン
ピュータシステム８００は、任意選択により、標準Ｉ／Ｏバス８０８と結合される、キー
ボードおよびポインティングデバイス、表示デバイスまたは他の入力／出力デバイス（図
示せず）を含み得る。集合的に、これらの要素は、コンピュータハードウェアシステムの
広義のカテゴリを表すことが意図され、これらに限定されないが、カリフォルニア州サン
タクララ市のインテル社によって製造されたｘ８６互換プロセッサ、およびカリフォルニ
ア州サニーベール市のアドバンストマイクロデバイセズ社によって製造されたｘ８６互換
プロセッサ、ならびに他の任意の適したプロセッサに基づくコンピュータシステムを含む
。
【０１４２】
オペレーティングシステムは、ソフトウェアアプリケーション（図示せず）へのおよび
ソフトウェアアプリケーションからのデータの入力および出力を含む、コンピュータシス
テム８００の動作を管理および制御する。オペレーティングシステムは、システム上で実
行されているソフトウェアアプリケーションとシステムのハードウェアコンポーネントと
の間のインタフェースを提供する。リナックス（ＬＩＮＵＸ）（登録商標）オペレーティ
ングシステム、カリフォルニア州クパチーノ市のアップルコンピュータ社から入手可能な
アップルマッキントッシュ（登録商標）オペレーティングシステム、ＵＮＩＸ（登録商標
）オペレーティングシステム、マイクロソフト（Ｍｉｃｒｏｓｏｆｔ）（登録商標）ウィ
ンドウズ（Ｗｉｎｄｏｗｓ）（登録商標）オペレーティングシステム、ＢＳＤオペレーテ
ィングシステムおよび同様のものなどの適したいかなるオペレーティングシステムも使用
することができる。他の実装形態も可能である。
【０１４３】
コンピュータシステム８００の要素については、以下でさらに詳細に説明される。具体
的には、ネットワークインタフェース８１６は、コンピュータシステム８００と、イーサ
ネット（Ｅｔｈｅｒｎｅｔ）（登録商標）（例えば、ＩＥＥＥ８０２．３）ネットワーク
、バックプレーンなどの広範なネットワークとの間の通信を提供する。大容量記憶装置８
１８は、上記で特定されたそれぞれのコンピューティングシステムによって実装される上
記で説明されるプロセスおよび特徴を実行するためのデータおよびプログラミング命令の
永久記憶を提供し、システムメモリ８１４（例えば、ＤＲＡＭ）は、プロセッサ８０２に
よって実行されると、データおよびプログラミング命令の一時記憶を提供する。Ｉ／Ｏポ
ート８２０は、コンピュータシステム８００と結合することができる追加の周辺デバイス
間の通信を提供する１つまたは複数のシリアルおよび／またはパラレル通信ポートであり
得る。
【０１４４】
コンピュータシステム８００は、様々なシステムアーキテクチャを含み得、コンピュー
タシステム８００の様々なコンポーネントは、再構成することができる。例えば、キャッ
シュ８０４は、プロセッサ８０２内蔵であり得る。あるいは、キャッシュ８０４とプロセ
ッサ８０２は、「プロセッサモジュール」として一緒にパックすることができ、プロセッ
サ８０２は、「プロセッサコア」と呼ばれる。その上、本発明のある実施形態は、上記の
コンポーネントのすべてを必要とすることも、含むこともない場合がある。例えば、標準
Ｉ／Ｏバス８０８と結合された周辺デバイスは、高性能Ｉ／Ｏバス８０６と結合すること
ができる。それに加えて、いくつかの実施形態では、単一のバスしか存在しない場合があ
り、コンピュータシステム８００のコンポーネントは、単一のバスに結合される。その上
、コンピュータシステム８００は、追加のプロセッサ、記憶装置またはメモリなどの追加
のコンポーネントを含み得る。
【０１４５】
一般に、本明細書で説明されるプロセスおよび特徴は、オペレーティングシステムもし
くは特定のアプリケーション、コンポーネント、プログラム、オブジェクト、モジュール
または「プログラム」と呼ばれる一連の命令の一部として実装することができる。例えば
、１つまたは複数のプログラムは、本明細書で説明される特定のプロセスを実行するため
に使用することができる。プログラムは、通常、１つまたは複数のプロセッサによって読
み取られて実行されると、本明細書で説明されるプロセスおよび特徴を実行するための動
作をコンピュータシステム８００に実行させる、コンピュータシステム８００の様々なメ
モリおよび記憶装置に１つまたは複数の命令を含む。本明細書で説明されるプロセスおよ
び特徴は、ソフトウェア、ファームウェア、ハードウェア（例えば、特定用途向け集積回
路）またはそれらの任意の組合せで実装することができる。
【０１４６】
一実装形態では、本明細書で説明されるプロセスおよび特徴は、分散型コンピューティ
ング環境で個別にまたはまとめて、コンピュータシステム８００によって実行される一連
の実行可能なモジュールとして実装される。前述のモジュールは、ハードウェア、コンピ
ュータ可読媒体（または機械可読媒体）上に格納された実行可能なモジュールまたは両方
の組合せによって実現することができる。例えば、モジュールは、プロセッサ８０２など
のハードウェアシステムのプロセッサによって実行される複数のまたは一連の命令を含み
得る。最初は、一連の命令は、大容量記憶装置８１８などの記憶装置上に格納することが
できる。しかし、一連の命令は、適したいかなるコンピュータ可読記憶媒体上にも格納す
ることができる。その上、一連の命令は、ローカルで格納する必要はなく、ネットワーク
インタフェース８１６を介してリモート記憶装置（ネットワーク上のサーバなど）から受
信することができる。命令は、大容量記憶装置８１８などの記憶装置からシステムメモリ
８１４にコピーされ、次いで、プロセッサ８０２によってアクセスされて実行される。様
々な実装形態では、１つまたは複数のモジュールは、並列処理環境における複数のサーバ
などの１つまたは複数の場所で、１つのプロセッサまたは複数のプロセッサが実行するこ
とができる。
【０１４７】
コンピュータ可読媒体の例は、これらに限定されないが、揮発性および不揮発性メモリ
デバイス、ソリッドステートメモリ、フロッピー（登録商標）ディスクおよび他の取り外
し可能型ディスク、ハードディスクドライブ、磁気媒体、光ディスク（例えば、コンパク
トディスク読み取り専用メモリ（ＣＤＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）、他
の同様の非一時的な（または一時的な）有形の（または非有形の）記憶媒体、または、本
明細書で説明されるプロセスおよび特徴のいずれか１つまたは複数を実行するためにコン
ピュータシステム８００によって実行するための一連の命令の格納、符号化もしくは運搬
に適した任意のタイプの媒体などの記録可能なタイプの媒体を含む。
【０１４８】
説明を目的として、多くの特定の詳細は、説明の徹底的な理解を提供するために記載さ
れる。しかし、当業者であれば、これらの特定の詳細なしで本開示の実施形態を実践でき
ることが明らかである。いくつかの例では、モジュール、構造、プロセス、特徴、および
デバイスは、説明を曖昧にすることを避けるため、ブロック図の形態で示される。他の例
では、データおよび論理フローを表すため、機能的なブロック図およびフロー図が示され
る。ブロック図およびフロー図のコンポーネント（例えば、モジュール、ブロック、構造
、デバイス、特徴など）は、本明細書で明確に説明されるものや示されるもの以外の方式
で、様々に組み合わせる、分離する、取り除く、並べ替える、および置き換えることがで
きる。
【０１４９】
この明細書における「一実施形態」、「他の実施形態」、「一連の実施形態のうちの１
つ」、「いくつかの実施形態」、「様々な実施形態」、または同様のものに対する言及は
、実施形態に関連して説明される特定の特徴、設計、構造、または特性が本開示の少なく
とも１つの実施形態に含まれることを意味する。例えば、本明細書の様々な場所での「一
実施形態では」という記載は、必ずしもすべてが同じ実施形態を指すとは限らず、他の実
施形態と相互に排他的な別々の実施形態または代替の実施形態ということでもない。その
上、「一実施形態」または同様のものへの明確な言及の有無にかかわらず、様々な特徴が
説明され、様々な特徴は、いくつかの実施形態では、様々に組み合わせたり、含めたりす
ることができるが、他の実施形態では、様々に省略することもできる。同様に、いくつか
の実施形態に対する優先または要件であり得るが、他の実施形態ではそうではない、様々
な特徴が説明される。
【０１５０】
本明細書で使用される言語は、主に、読み易さと教示の目的のために選択されており、
発明の主題を叙述するまたは限定するためには選択されていない。したがって、本発明の
範囲は、この詳細な説明によってではなくむしろ、これに基づく出願において開示される
任意の請求項によって限定されることを意図する。それに従って、本発明の実施形態の開
示は、以下の特許請求の範囲に記載される本発明の範囲を例示することを意図するが、限
定することは意図しない。
【図１】
2020005326.tif 000025
【図２】
2020005326.tif 000026
【図３】
2020005326.tif 000027
【図４】
2020005326.tif 000028
【図５】
2020005326.tif 000029
【図６】
2020005326.tif 000030
【図７】
2020005326.tif 000031
【図８】
2020005326.tif 000032
【手続補正書】
【提出日】令和1年11月15日(2019.11.15)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピュータにより実施される方法であって、
コンピュータシステムが、関連付けられたタイムスタンプを有する画像フレームのセットを含むビデオデータを取得することと、
前記コンピュータシステムが、関連付けられたタイムスタンプを有するカメラ配向データのセットを取得することと、ここで前記ビデオデータはカメラによって取得され、前記カメラ配向データのセットは前記カメラの向きに基づく、
前記コンピュータシステムが、前記カメラ配向データのセットに基づいて、平滑化されたカメラ配向データのセットを生成することと、ここで当該生成することは、空き領域の閾値を満たしつつ、前記画像フレームのセットのサブセットにおいてカメラ配向回転速度を最小化することを含む、
前記コンピュータシステムが、前記平滑化されたカメラ配向データのセットに基づいて、前記画像フレームのセットの前記サブセットにおける各特定の画像フレームを再配向することと、を含む、方法。
【請求項２】
各特定の画像フレームがそれぞれのタイムスタンプを有し、各特定の画像フレームに関する前記カメラ配向データの関連付けられたサブセットが、それぞれのタイムスタンプを有する、請求項１に記載のコンピュータにより実施される方法。
【請求項３】
各特定の画像フレームに関する前記カメラ配向データの前記関連付けられたサブセットを介して表される望ましくないブレを妨害するために、各特定の画像フレームが、各特定の画像フレームを回転させることに基づいて再配向される、請求項２に記載のコンピュータにより実施される方法。
【請求項４】
前記カメラ配向データの前記関連付けられたサブセットを介して表される前記望ましくないブレが、各特定の画像フレームに変形をもたらし、各特定の画像フレームが前記変形を妨害するように回転される、請求項３に記載のコンピュータにより実施される方法。
【請求項５】
前記カメラ配向データのセットに基づいて、平滑化されたカメラ配向データのセットを生成することが、空き領域の閾値を満たしつつ、前記画像フレームのセットの少なくとも前記サブセットにおける各特定の画像フレームと別の画像フレームの間の回転速度を最小化することを含む、請求項１に記載のコンピュータにより実施される方法。
【請求項６】
前記平滑化されたカメラ配向データのセットに基づいて、前記画像フレームのセットの前記サブセットにおける各特定の画像フレームを再配向することがさらに、前記画像フレームのセットの少なくとも前記サブセットにおける各特定の画像フレームに対するクロップ操作またはズーム操作の少なくとも１つを実行することを含む、請求項５に記載のコンピュータにより実施される方法。
【請求項７】
各特定の画像フレームと前記別の画像フレームが、連続する画像フレームに相当する、請求項５に記載のコンピュータにより実施される方法。
【請求項８】
前記カメラ配向データのセットが、前記カメラの向きの表示を提供する、請求項１に記載のコンピュータにより実施される方法。
【請求項９】
前記カメラ配向データのセットが一又は複数の向きセンサによって取得され、前記一又は複数の向きセンサは前記コンピュータシステムに含まれ、前記コンピュータシステムは、前記カメラを含むコンピューティングデバイス、又は前記カメラから離れたサーバの少なくとも１つに相当する、請求項１に記載のコンピュータにより実施される方法。
【請求項１０】
前記一又は複数の向きセンサが、ジャイロスコープ又は加速度計の少なくとも１つを含む、請求項９に記載のコンピュータにより実施される方法。
【請求項１１】
システムであって、
少なくとも１つのプロセッサと、
前記少なくとも１つのプロセッサに、
関連付けられたタイムスタンプを有する画像フレームのセットを含むビデオデータを取得することと、
関連付けられたタイムスタンプを有するカメラ配向データのセットを取得することと、ここで前記ビデオデータはカメラによって取得され、前記カメラ配向データのセットは前記カメラの向きに基づく、
前記カメラ配向データのセットに基づいて、平滑化されたカメラ配向データのセットを生成することと、ここで当該生成することは、空き領域の閾値を満たしつつ、前記画像フレームのセットのサブセットにおいてカメラ配向回転速度を最小化することを含む、
前記平滑化されたカメラ配向データのセットに基づいて、前記画像フレームのセットの前記サブセットにおける各特定の画像フレームを再配向することと、を実行するように指示するように構成された命令を記憶するメモリと、を備えるシステム。
【請求項１２】
各特定の画像フレームがそれぞれのタイムスタンプを有し、各特定の画像フレームに関する前記カメラ配向データの関連付けられたサブセットが、それぞれのタイムスタンプを有する、請求項１１に記載のシステム。
【請求項１３】
各特定の画像フレームに関する前記カメラ配向データの前記関連付けられたサブセットを介して表される望ましくないブレを妨害するために、各特定の画像フレームが、各特定の画像フレームを回転させることに基づいて再配向される、請求項１２に記載のシステム。
【請求項１４】
前記カメラ配向データの前記関連付けられたサブセットを介して表される前記望ましくないブレが、各特定の画像フレームに変形をもたらし、各特定の画像フレームが前記変形を妨害するように回転される、請求項１３に記載のシステム。
【請求項１５】
前記カメラ配向データのセットに基づいて、平滑化されたカメラ配向データのセットを生成することが、空き領域の閾値を満たしつつ、前記画像フレームのセットの少なくとも前記サブセットにおける各特定の画像フレームと別の画像フレームの間の回転速度を最小化することを含む、請求項１１に記載のシステム。
【請求項１６】
命令を格納する非一時的コンピュータ記憶媒体であって、前記命令は、コンピュータシステムの少なくとも１つのプロセッサによって実行されたとき、前記コンピュータシステムに、
関連付けられたタイムスタンプを有する画像フレームのセットを含むビデオデータを取得することと、
関連付けられたタイムスタンプを有するカメラ配向データのセットを取得することと、ここで前記ビデオデータはカメラによって取得され、前記カメラ配向データのセットは前記カメラの向きに基づく、
前記カメラ配向データのセットに基づいて、平滑化されたカメラ配向データのセットを生成することと、ここで当該生成することは、空き領域の閾値を満たしつつ、前記画像フレームのセットのサブセットにおいてカメラ配向回転速度を最小化することを含む、
前記平滑化されたカメラ配向データのセットに基づいて、前記画像フレームのセットの前記サブセットにおける各特定の画像フレームを再配向することと、を実行させる、非一時的コンピュータ記憶媒体。
【請求項１７】
各特定の画像フレームがそれぞれのタイムスタンプを有し、各特定の画像フレームに関する前記カメラ配向データの関連付けられたサブセットが、それぞれのタイムスタンプを有する、請求項１６に記載の非一時的コンピュータ記憶媒体。
【請求項１８】
各特定の画像フレームに関する前記カメラ配向データの前記関連付けられたサブセットを介して表される望ましくないブレを妨害するために、各特定の画像フレームが、各特定の画像フレームを回転させることに基づいて再配向される、請求項１７に記載の非一時的コンピュータ記憶媒体。
【請求項１９】
前記カメラ配向データの前記関連付けられたサブセットを介して表される前記望ましくないブレが、各特定の画像フレームに変形をもたらし、各特定の画像フレームが前記変形を妨害するように回転される、請求項１８に記載の非一時的コンピュータ記憶媒体。
【請求項２０】
前記カメラ配向データのセットに基づいて、平滑化されたカメラ配向データのセットを生成することが、空き領域の閾値を満たしつつ、前記画像フレームのセットの少なくとも前記サブセットにおける各特定の画像フレームと別の画像フレームの間の回転速度を最小化することを含む、請求項１６に記載の非一時的コンピュータ記憶媒体。