(58)【調査した分野】(Int.Cl.,DB名)
コンピューティング・デバイスが、カメラの1つまたは複数の動きを決定する工程であって、前記動きはマルチメディア・クリップの記録中におけるカメラの運動に対応する、工程と、
前記コンピューティング・デバイスが、前記記録中に存在する1つまたは複数の光量を決定する工程と、
前記コンピューティング・デバイスが、決定された前記動きおよび決定された前記光量から、前記マルチメディア・クリップについての動きぶれ計量値を決定する工程であって、前記動きぶれ計量値は、前記マルチメディア・クリップの複数のフレームについての露光時間とカメラの向きの変化との積を含む、工程と、
前記コンピューティング・デバイスが、前記動きぶれ計量値に基づいて、前記マルチメディア・クリップに対してビデオ安定化ルーチンを適用するか否かを決定する工程と、を備え、
前記ビデオ安定化ルーチンを適用するか否かを決定する工程は、
前記コンピューティング・デバイスが、前記動きぶれ計量値が所定の閾値未満であるか否かを決定する工程と、
前記動きぶれ計量値が所定の閾値未満である場合、前記コンピューティング・デバイスが、前記マルチメディア・クリップに前記ビデオ安定化ルーチンを適用する工程と、を含む、方法。
前記記録中に存在する前記光量のうちの1つまたは複数を決定する工程は、前記コンピューティング・デバイスが、前記マルチメディア・クリップの1つまたは複数の画像フレームについての露光時間を決定する工程を含む、請求項1に記載の方法。
前記マルチメディア・クリップについての前記動きぶれ計量値を決定する工程は、前記コンピューティング・デバイスが、前記複数のフレームについての前記露光時間と前記カメラの向きの変化との前記積の平均値を決定する工程をさらに含む、請求項1に記載の方法。
前記ビデオ安定化ルーチンを適用するか否かを決定する工程は、前記コンピューティング・デバイスが、前記マルチメディア・クリップに対して前記ビデオ安定化ルーチンを適用した後、前記マルチメディア・クリップの約95%以上が動きぶれアーチファクトを実質的に含まないか否かを決定する工程を含む、請求項1に記載の方法。
前記ビデオ安定化ルーチンを適用するか否かを決定する工程は、前記コンピューティング・デバイスが、前記マルチメディア・クリップに対して前記ビデオ安定化ルーチンを適用した後、前記マルチメディア・クリップの約5%未満が動きぶれアーチファクトを含むか否かを決定する工程を備える、請求項1に記載の方法。
前記ソフトウェアは、実行されるとき、前記マルチメディア・クリップの1つまたは複数の画像フレームについての露光時間を決定する工程を行うようにさらに動作可能である、請求項9に記載の媒体。
前記ソフトウェアは、実行されるとき、前記複数のフレームについての前記露光時間と前記カメラの向きの変化との前記積の平均値を決定する工程を行うようにさらに動作可能である、請求項9に記載の媒体。
前記ソフトウェアは、実行されるとき、前記マルチメディア・クリップに対して前記ビデオ安定化ルーチンを適用した後、前記マルチメディア・クリップの約95%以上が動きぶれアーチファクトを実質的に含まないか否かを決定する工程を行うようにさらに動作可能である、請求項9に記載の媒体。
前記ソフトウェアは、実行されるとき、前記マルチメディア・クリップに対して前記ビデオ安定化ルーチンを適用した後、前記マルチメディア・クリップの約5%未満が動きぶれアーチファクトを含むか否かを決定する工程を行うようにさらに動作可能である、請求項9に記載の媒体。
前記プロセッサは、前記命令を実行するとき、前記マルチメディア・クリップの1つまたは複数の画像フレームについての露光時間を決定する工程を行うようにさらに動作可能である、請求項17に記載のシステム。
前記プロセッサは、前記命令を実行するとき、前記複数のフレームについての前記露光時間と前記カメラの向きの変化との前記積の平均値を決定する工程を行うようにさらに動作可能である、請求項17に記載のシステム。
前記プロセッサは、前記命令を実行するとき、前記マルチメディア・クリップに対して前記ビデオ安定化ルーチンを適用した後、前記マルチメディア・クリップの約95%以上が動きぶれアーチファクトを実質的に含まないか否かを決定する工程を行うようにさらに動作可能である、請求項17に記載のシステム。
前記プロセッサは、前記命令を実行するとき、前記マルチメディア・クリップに対して前記ビデオ安定化ルーチンを適用した後、前記マルチメディア・クリップの約5%未満が動きぶれアーチファクトを含むか否かを決定する工程を行うようにさらに動作可能である、請求項17に記載のシステム。
【発明を実施するための形態】
【0004】
デジタル・カメラを含むモバイル・コンピューティング・デバイスは、例えば、デジタル・ビデオ・クリップなどのマルチメディア・クリップを記録するために使用され得る。記録中に、カメラの意図しない運動、またはカメラぶれは、手ぶれによって引き起こされたものであろうと、他の振動源によって引き起こされたものであろうと、ビデオにおける望ましくない影響、例えば、ビデオの不安定な動きまたはぎこちない動きなどをもたらすことがある。特定の実施形態において、ビデオが視聴または再生される場合に、ビデオ安定化ルーチンは、マルチメディア・クリップまたはビデオの特定の長さ部分に対して適用されて、カメラぶれの影響を低減させ得る。カメラぶれの影響を低減するためにデジタル・ビデオに対して適用され得る多数のビデオ安定化(または、画像安定化)技法が存在する。本開示は、任意の適切なビデオ安定化技法を想定する。特定の実施形態において、ビデオ安定化技法は、ビデオにおける望ましくない動きぶれ(または、動きぶれアーチファクト)をもたらし得る。ここで、動きぶれとは、記録中にカメラの動きによって引き起こ
される、ビデオ画像の不鮮明化、ぼやけ、またはブリード・アウトを指す。動きぶれは、カメラがビデオの特定の画像フレームのために光を収集する際に発生することがあり、カメラが光を収集する際に、カメラぶれに部分的に起因して、カメラが動いてしまうことがある。こうしたカメラの動きは、画像中にモーション・トレイルを生成することがあり、画像安定化を適用することは、記録中におけるカメラぶれによって引き起こされるビデオの不安定な動きまたはぎこちない動きを低減し得る一方で、画像安定化は、一般に、画像のピクセルを修正しない。つまり、いくつかのピクセルは、依然としてモーション・トレイルを含むかもしれず、これは、動きぶれアーチファクトを生み出すことがあり、そのため、マルチメディア・クリップに対して画像安定化ルーチンが適用された後に、動きぶれアーチファクトがビデオ中に残存することがある。
【0005】
動きぶれは、一般には望ましくないが、不安定なビデオ中ではあまり明らかになったり、または問題になったりしないことがある。なぜならば、不安定なビデオと動きぶれとは、一般に、同期された状態で共に発生するためである。特定の実施形態において、いったんビデオ安定化技法が適用されると、動きぶれアーチファクトは、視聴者にとって奇妙または不快に見えることがあり、非常に目立つことがある。なぜならば、動きぶれを生み出したカメラぶれは、ビデオから低減または除去されており、動きぶれアーチファクトだけが、関連付けられた動きなしに残るためである。特定の実施形態において、コンピューティング・デバイスは、不必要な動きぶれアーチファクトを導入することなく、カメラぶれの影響を低減するために、特定のマルチメディア・クリップに対してビデオ安定化を適用するか否かを決定し得る。特定の実施形態において、マルチメディア・クリップが、ビデオ安定化を適用した後に、過度の動きぶれアーチファクトを含み得ると決定される場合には、コンピューティング・デバイスは、そのマルチメディア・クリップに対してビデオ安定化を適用しないと決定し得る。
【0006】
特定の実施形態において、ビデオ安定化を適用すべきか否かの決定において使用され得る1つの要素は、記録中におけるカメラ運動の量である。なぜならば、過度なカメラ運動は、動きぶれをもたらすことがあるためである。特定の実施形態において、ビデオ安定化を適用すべきか否かを決定するために使用され得る別の要素は、ビデオを記録している間に存在する光量である。低光条件が存在する場合、露光時間が充分に長くなることがあり、カメラは、動きぶれが問題になるほど充分に動くことがある。特定の実施形態において、低光条件においては、カメラの比較的長いシャッタ時間が動きぶれをもたらすことがあり、そのような低光条件下で記録された特定のマルチメディア・クリップについては、画像安定化が無効化されるべきであると決定され得る。特定の実施形態において、安定化されたビデオにおいて動きぶれアーチファクトが不快な影響を生成し得ることが理由で、特定のマルチメディア・クリップを安定化しないことが決定され得る。特定の実施形態において、安定化されたマルチメディア・クリップが、著しい量の動きぶれを含まないと決定される場合には、特定のマルチメディア・クリップは、ビデオ安定化を有効化させ得る。特定の実施形態において、コンピューティング・デバイスは、マルチメディア・クリップから動きぶれアーチファクトを除去しようとせず、コンピューティング・デバイスは、画像安定化を有効化すべきか否かの決定を行い得る。特定の実施形態において、ビデオ安定化を適用すべきか否かの決定は、クリップごとに行われてもよく、または、ビデオ安定化は、ビデオ全体に対して、もしくは、マルチメディア・クリップの任意の適切なサブセットに対して適用されてもよい。
【0007】
上記に開示された実施形態は、例に過ぎず、本開示の範囲は、上記に開示された実施形態に限定されない。特定の実施形態は、上記に開示された実施形態の構成要素、要素、特徴、機能、動作、または工程のうちの全部を含んでも、一部を含んでも、または、これらを全く含まなくてもよい。
【0008】
図1は、例示的な物理的な運動を受ける例示的なモバイル・コンピューティング・デバイス100を例示する。特定の実施形態において、モバイル・コンピューティング・デバイス100は、シングルボード・コンピュータ(SBC:single−board computer)(例えば、コンピュータ・オン・モジュール(COM:computer−on−module)もしくはシステム・オン・モジュール(SOM:system−on−module)など)、ラップトップ・コンピュータもしくはノートブック・コンピュータ、携帯電話、スマートフォン、デジタル・カメラ、携帯情報端末(PDA:personal digital assistant)、タブレット・コンピュータ・システム、または、これらの2つ以上の組み合わせであり得る。モバイル・コンピューティング・デバイス100は、1つもしくは複数の一体化されたカメラ、または1つもしくは複数の外部カメラへのインターフェースを含み得る。特定の実施形態において、モバイル・コンピューティング・デバイス100は、1つまたは複数のデジタル・カメラを含み得る。ここで、デジタル・カメラとは、画像またはビデオをデジタル・フォーマットで記録または記憶するデバイスを指し得る。本明細書において、「カメラ」という用語は、デジタル・カメラを指し、「マルチメディア・クリップ」という用語は、デジタル・ビデオ、またはデジタル・フォーマットで記録もしくは記憶されたビデオを指し得る。特定の実施形態において、マルチメディア・クリップという用語は、ビデオ記録の個別のセクションまたは特定の長さ部分を指し得る。特定の実施形態において、マルチメディア・クリップは、マルチメディア・ビデオ・クリップ、マルチメディア画像、デジタル・ビデオ・クリップ、ビデオ・クリップ、またはビデオと称され得る。特定の実施形態において、デジタル・カメラは、画像センサ、例えば、電荷結合素子(CCD:charge−coupled device)画像センサ、または相補型金属酸化膜半導体(CMOS:complementary metal−oxide−semiconductor)アクティブ・ピクセル・センサなどを含み得る。本開示は、任意の適切な物理的形態を取り、かつ、任意の適切なカメラを含む、任意の適切なモバイル・コンピューティング・デバイス100を想定する。
【0009】
図1に例示されるような、モバイル・コンピューティング・デバイス100の物理的運動(または、運動)は、回転的もしくは並進的な変位、速度、もしくは加速、または、これらの任意の適切な組み合わせを含み得る。本開示は、回転的もしくは並進的な変位、速度、または加速を含む、モバイル・コンピューティング・デバイス100の特定の運動を説明または例示するが、本開示は、任意の適切な運動、または適切な運動の組み合わせも想定する。特定の実施形態において、モバイル・コンピューティング・デバイス100は、モバイル・コンピューティング・デバイス100の位置、向き、並進的運動、または回転運動を検出するための1つまたは複数のタイプのセンサを含み得る。このような動きセンサは、加速度計、ジャイロスコープ、もしくは磁力計、または、これらの任意の適切な組み合わせを含み得る。モバイル・コンピューティング・デバイス100は、位置または運動を検出するための1つまたは複数の外部センサへのインターフェースも含み得る。本開示は、モバイル・コンピューティング・デバイス100の位置、向き、または運動を検出するための特定のセンサを説明するが、本開示は、位置、向き、または運動を検出するための任意の適切なセンサも想定する。
【0010】
特定の実施形態において、1つまたは複数のセンサからのデータ、情報、または値は、マルチメディア・クリップの記録と同時に記録または分析されてもよく、センサ値は、マルチメディア・クリップに対してビデオ安定化を適用すべきかの決定において使用され得る。特定の実施形態において、マルチメディア・クリップという用語は、ビデオ記録の個別のセクションまたは特定の長さ部分を指し得る。特定の実施形態において、マルチメディア・クリップは、例えば、単一の記録の開始(例えば、「記録」ボタンを押すこと)に続いて、しばらく後に、単一の記録の終了(例えば、「停止」ボタンを押すこと)があるなどの単一の記録イベントにおいて発生する、任意の適切な長さの記録済みビデオを指し
得る。特定の実施形態において、マルチメディア・クリップは、2つ以上のビデオ記録イベントの任意の適切な組み合わせ、または、一連の2つ以上のビデオ記録イベントを指し得る。特定の実施形態において、マルチメディア・クリップは、1秒間の持続期間、10秒間の持続期間、15秒間の持続期間、1分間の持続期間、20分間の持続期間、1時間間の持続期間、または任意の適切な持続期間を有し得る。特定の実施形態において、画像フレームとは、マルチメディア・クリップの単一の静止画像を指し、マルチメディア・クリップは、ビデオ記録を形成するために共に組み合わされた1つまたは複数の画像フレームを含み得る。特定の実施形態において、マルチメディア・クリップは、1秒当たり24フレーム(FPS:frames per second)のフレーム・レート、25FPS、30FPS、または任意の適切なフレーム・レートを有し得る。ここで、フレーム・レートとは、ビデオの記録または再生されている間の1秒当たりの静止画像またはビデオ・フレームの数を指し得る。本開示は、特定の持続期間およびフレーム・レートを有し、かつ、1つまたは複数の記録イベントを含む特定のマルチメディア・クリップを説明および例示するが、本開示は、任意の適切な数の記録イベントを含み、かつ、任意の適切な持続期間およびフレーム・レートを有する任意の適切なマルチメディア・クリップも想定する。
【0011】
特定の実施形態において、モバイル・コンピューティング・デバイス100の運動は、モバイル・コンピューティング・デバイス100と一体化された1つまたは複数の動きセンサ(例えば、ジャイロスコープ、磁力計、加速度計)から受け取られる情報または値によって決定され得る。特定の実施形態において、モバイル・コンピューティング・デバイス100は、カメラとジャイロスコープ・センサとを含むスマートフォンであってもよい。特定の実施形態において、モバイル・コンピューティング・デバイス100と一体化された動きセンサは、微小電気機械システム(MEMS:micro−electro−mechanical systems)技術を用いて製造された振動構造ジャイロスコープを含み得る。特定の実施形態において、ジャイロスコープは、モバイル・コンピューティング・デバイス100の、時間に対する回転の向きまたは回転運動を決定するために使用され得る。特定の実施形態において、ジャイロスコープは、回転(または角)速度を決定するレート・ジャイロスコープであってもよい。限定ではなく例として、レート・ジャイロスコープは、角速度に対応するデータ、情報、または値を、ラジアン/秒または度/秒の単位で提供し得る。特定の実施形態において、モバイル・コンピューティング・デバイス100の回転(または角度)の向きは、時間に対するジャイロスコープ・センサ・データの積分によって決定され得る。特定の実施形態において、角度の向きθ(t)は、時間に対する、および、特定の二次元座標系または三次元座標系の1つまたは複数の軸に関連するカメラの角度を表し得る。特定の実施形態において、角度の向きまたは動きは、様々な回転軸、例えば、ピッチ軸、ロール軸、またはヨー軸などを参照して決定され得る。特定の実施形態において、センサ・データの積分は、特定の時間間隔にわたるセンサ・データの加算または平均化によって実行され得る。限定ではなく例として、時間t
1における最初の角度の向きθ(t
1)と、レート・ジャイロスコープによって決定されるような角速度ω(t)とが与えられると、後の時間t
2における角度の向きは、式θ(t
2)=θ(t
1)+ω(t)×(t
2−t
1)から決定され得る。特定の実施形態において、式ω(t)は、t
1≦t≦t
2となるような、ある時間tにおいて求められ得る。特定の実施形態において、式ω(t)は、t
1からt
2までの時間間隔にわたって求められたω(t)の平均値を表し得る。
【0012】
特定の実施形態において、磁力計(例えば、磁場センサ)は、モバイル・コンピューティング・デバイス100の向きまたは回転運動を測定するために使用され得る。磁力計は、地球の磁場または任意の他の適切な実質的に静的な磁場を感知して、モバイル・コンピューティング・デバイス100の角度の向きを決定し得る。特定の実施形態において、加速度計は、モバイル・コンピューティング・デバイス100の並進運動または回転運動を
決定するために使用され得る。特定の実施形態において、加速度計センサ・データは、モバイル・コンピューティング・デバイス100の直線加速度を決定するために使用され得る。さらに、特定の時間間隔にわたって加速度計データを積分することは、モバイル・コンピューティング・デバイス100の速度を決定するために使用され得、第2の積分演算を実行することは、時間を関数とした、モバイル・コンピューティング・デバイス100の位置の決定を可能にし得る。特定の実施形態において、モバイル・コンピューティング・デバイス100の回転運動または並進運動は、マルチメディア・クリップを構成する画像を分析することによって決定され得る。限定ではなく例として、特徴ベースの分析は、マルチメディア・クリップの画像における1つまたは複数の特徴(例えば、個別の動かない物体またはエッジ)を追跡し、画像間での特徴の位置変化からカメラの動きを決定するために使用され得る。
【0013】
図1の例は、カメラぶれに対して少なくとも部分的に関連付けられ得る一連の例示的な運動を受けるモバイル・コンピューティング・デバイス100を例示する。特定の実施形態において、モバイル・コンピューティング・デバイス100の運動は、カメラぶれと意図された運動(例えば、カメラのパニング)との組み合わせから生じ得る。特定の実施形態において、カメラぶれとは、マルチメディア・クリップの記録中における、カメラの意図しないまたは不必要な運動、ぶれ、または振動を指し得る。限定ではなく例として、カメラぶれは、カメラを保持している間の1つもしくは複数の手の運動から、カメラを保持している間(例えば、人物が歩き、走り、もしくはジャンプしている間)の人物の身体の運動から、またはカメラが設置されている物体の運動(例えば、ビデオが記録されているヘルメット、自転車、飛行機、列車、もしくは自動車の動き)から、少なくとも部分的に生じ得る。本開示は、任意の適切な1つまたは複数の源から生じる任意の適切なカメラぶれを想定する。
【0014】
図1において、運動は、モバイル・コンピューティング・デバイス100の1つもしくは複数の回転、モバイル・コンピューティング・デバイス100の1つもしくは複数の並進、またはモバイル・コンピューティング・デバイス100の1つもしくは複数の回転もしくは並進の任意の適切な組み合わせを含み得る。
図1(および下側の
図2)に例示される運動は、明確さのために誇張され得る。特定の実施形態において、カメラぶれに対して関連付けられた回転は、約0.5度から10度のオーダーの大きさを有し、カメラぶれに対して関連付けられた並進は、約0.5ミリメートルから10ミリメートルのオーダーの大きさを有し得る。
図1において、モバイル・コンピューティング・デバイス100は、時間t
0において最初の向きを有し(
図1の左側)、時間t
1において別の向きへ動き(
図1の中央)、その後、時間t
2において別の向きへ動き得る(
図2の右側)。
図1において、モバイル・コンピューティング・デバイス100の運動は、回転、並進、または回転と並進との双方を含み得る。特定の実施形態において、コンピューティング・デバイスは、モバイル・コンピューティング・デバイス100の回転の動き、並進的な動き、または回転の動きと並進的な動きとの双方に基づいて、ビデオ安定化を有効化するか否かを決定し得る。特定の実施形態において、モバイル・コンピューティング・デバイス100は、回転の動きと並進的な動きとの双方を含み得る運動を受けることがあり、コンピューティング・デバイスは、モバイル・コンピューティング・デバイス100の回転の動きに基づいて、ビデオ安定化を有効化するか否かを決定し得る。本開示は、特定の大きさを有する、モバイル・コンピューティング・デバイス100の特定の運動を説明および例示するが、本開示は、任意の適切な大きさを有する、モバイル・コンピューティング・デバイス100の任意の適切な運動も想定する。
【0015】
図2は、例示的な回転を角度θ220だけ受ける例示的なモバイル・コンピューティング・デバイス100の上面図を例示する。
図2において、モバイル・コンピューティング・デバイス100は、カメラを含むことができ、モバイル・コンピューティング・デバイ
ス100の回転は、少なくとも部分的にはカメラぶれからもたらされ得る。
図2において、モバイル・コンピューティング・デバイス100は、時間t
0において最初の向きを有し、角度θ220だけ回転されて、時間t
1において最終的な向きとなり得る。直線200および直線210は、カメラまたはカメラ・レンズが設置されているモバイル・コンピューティング・デバイス100の面に対して実質的に直角であり得る。直線200および直線210は、それぞれモバイル・コンピューティング・デバイス100の最初の向きおよび最後の向きを示し得、直線200と直線210との間の角度θ220は、モバイル・コンピューティング・デバイス100の回転の量を表し得る。
図2において、ベクトル230は、最初の向きから最後の向きまでのモバイル・コンピューティング・デバイス100の回転に対して関連付けられた動きベクトルを表し得る。動きベクトル230は、直線200および直線210に対して直角な向きとされ、モバイル・コンピューティング・デバイス100が回転される回転軸に沿って向くとされ得る。
【0016】
図3および
図4は、モバイル・コンピューティング・デバイス100の例示的な動きに対して関連付けられた例示的な動きベクトルを例示する。特定の実施形態において、2つの向きの間でのモバイル・コンピューティング・デバイス100の回転の動きは、回転の軸に沿った向きとされ、かつ、回転の大きさに比例した大きさを有するベクトルによって表され得る。特定の実施形態においては、四元数、オイラー角、または回転行列が、モバイル・コンピューティング・デバイス100の向きまたは回転を表し、または決定するために使用され得る。本開示は、向きまたは回転の特定の表現を説明および例示するが、本開示は、向きまたは回転の任意の適切な表現も想定する。特定の実施形態において、回転の動きまたは向きは、動きベクトルを使用して例示されてもよい。ここで、動きベクトルは、ある位置から別の位置へのモバイル・コンピューティング・デバイス100の動きを表し得る。
図3の例において、動きベクトル300および動きベクトル310は、2つの向きの間でのモバイル・コンピューティング・デバイス100の特定の回転を各々表し得る。
図4の例において、動きベクトル400および動きベクトル410は、2つの向きの間でのモバイル・コンピューティング・デバイス100の特定の回転を各々表し得る。
図3および
図4において、角度320および角度420は、それらの関連付けられた動きベクトル間の差異を各々表し得る。
図3における角度320は、
図4における角度420と比較すると、相対的に大きい。
図3は、2つの回転の動きの回転の軸の間で比較的大きい差異を有する、モバイル・コンピューティング・デバイス100の2つの回転の動き(300および310)を表し得る。限定ではなく例として、
図3における動きベクトル300は、モバイル・コンピューティング・デバイス100の実質的なローリングの動きを表し、動きベクトル310は、実質的なピッチングの動きまたはヨーイングの動きを表し得る。
図4は、2つの回転の動きの回転の軸の間で比較的小さい差異を有する2つの回転の動き(400および410)を表し得る。限定ではなく例として、
図4における動きベクトル400は、モバイル・コンピューティング・デバイス100の実質的なローリングの動きを表し、動きベクトル410は、こちらも実質的なローリングの動きである別の動きを表し得る。
【0017】
特定の実施形態において、カメラぶれの量は、例えば、ジャイロスコープ・センサによって示されるような、マルチメディア・クリップ内のあるフレームから次のフレームへのカメラの動きまたは向きによって決定され得る。例として、マルチメディア・クリップが、あるフレームについて特定の方向における動きを有しており、後続のフレームにおける動きが、実質的に同じ方向に沿って継続する場合、カメラは滑らかに動いており、ぎこちなく振動したり、または動いたりしていなかったと決定され得る。特定の実施形態において、カメラの向きまたはカメラぶれが方向を頻繁に変化させる場合、安定化されたビデオにおいて動きぶれの問題が存在し得る。特定の実施形態において、
図3の例において例示されるような、動きベクトルの角度において比較的大きい変化を有する1つまたは複数の動きは、モバイル・コンピューティング・デバイス100が、少なくとも部分的にカメラ
ぶれによって引き起こされる1つまたは複数の運動を受けていることを示し得る。特定の実施形態において、
図4の例において例示されるような、動きベクトルの角度において比較的小さい変化を有する1つまたは複数の動きは、モバイル・コンピューティング・デバイス100が、カメラぶれに対して関連付けられない1つまたは複数の運動を受けている(例えば、モバイル・コンピューティング・デバイス100のカメラは、パニング中であり得る)ことを示し得る。特定の実施形態において、モバイル・コンピューティング・デバイス100が、マルチメディア・クリップの記録中にカメラぶれに対して関連付けられた1つまたは複数の運動を受けたかは、2つ以上の動きベクトルの角度間の変化から少なくとも部分的に決定され得る。特定の実施形態において、モバイル・コンピューティング・デバイス100がマルチメディア・クリップの記録中にカメラぶれに対して関連付けられた1つまたは複数の運動を受けたかを決定するためのルーチンは、全ての動きベクトルの角度またはいくつかの特定の動きベクトルの角度に対して関連付けられた情報を使用し得る。限定ではなく例として、そのようなルーチンは、動きベクトルの角度に対して関連付けられた情報、または、特定の向き、タイム・スタンプ、大きさ、もしくは大きさの範囲を有する、動きベクトルの角度変化に対して関連付けられた情報を使用し得る。
【0018】
特定の実施形態において、動きベクトルは、ビデオ・クリップの2つの画像フレームに対して関連付けられることができ、動きベクトルは、その2つの画像フレーム間で発生するカメラの向きにおける変化から決定され得る。特定の実施形態において、動きベクトルは、マルチメディア・クリップ内で互いに隣り合う2つの画像フレームであって、それらの間に他の画像フレームが存在しない2つの画像に対して関連付けられ得る。特定の実施形態において、動きベクトルは、1つまたは複数の他の画像フレームによって隔てられ得る、マルチメディア・クリップの2つの画像フレームに対して関連付けられ得る。特定の実施形態において、一連の動きベクトルが、ビデオ・クリップについて決定されてもよく、ビデオ・クリップの画像フレームの任意の適切な対は、関連付けられた動きベクトルを有し得る。特定の実施形態において、カメラぶれの量は、2つの動きベクトル間の角度(Δθ)を決定することによって定量化され得る。ここで、2つの動きベクトルは、それらの間にゼロ個、1個、または任意の適切な数の画像フレームまたは他の動きベクトルを有し得る。特定の実施形態において、任意の適切な画像フレームに対して関連付けられた任意の2つの適切な動きベクトル間のドット積が決定され得る。ここで、ドット積は、2つのベクトル間の角度の関数である値を返す。本開示は、2つの動きベクトル間の角度を決定するための任意の適切な技法を想定する。特定の実施形態において、動きベクトル間の角度(Δθ)は、動き変化、角度の向きの変化、カメラの向きの変化、または向きの変化と称され得る。
【0019】
特定の実施形態において、マルチメディア・クリップに対してビデオ安定化を適用すべきかは、マルチメディア・クリップに対して関連付けられた2つ以上の動きベクトル間の角度によって少なくとも部分的に決定され得る。特定の実施形態において、マルチメディア・クリップに対してビデオ安定化を適用すべきかは、マルチメディア・クリップに対して関連付けられた1つまたは複数の動きベクトルの大きさによって少なくとも部分的に決定され得る。限定ではなく、例として、比較的小さい大きさの動きベクトルは、カメラの比較的小さい大きさの運動を示し得る。カメラの比較的小さい大きさの運動は、比較的小さい量の動きぶれを示し得る。特定の実施形態において、著しい量のカメラぶれが存在する場合、動きベクトル間にも有意な角度が存在し得る。特定の実施形態において、角度が大きくなればなるほど、安定化されたマルチメディア・クリップにおいて動きぶれが問題となり得る。特定の実施形態において、低域通過フィルタが、カメラの向き情報に対して適用されて、カメラの安定化された向きもしくは動き(または、合成的もしくは仮想的なカメラの向きもしくは動き)が取得され得る。特定の実施形態において、動きベクトルは、カメラの安定化された向きまたは動きと比較されて、カメラぶれの量が決定され得る。本開示は、カメラぶれを決定および定量化するための特定の技法を説明および例示するが
、本開示は、カメラぶれを決定または定量化するための任意の適切な技法も想定する。
【0020】
特定の実施形態において、マルチメディア・クリップは、特定のフレーム・レートで記録されてもよく、センサは、そのフレーム・レートと同じであり得るレート、または、そのフレーム・レートとは異なり得るレートで、向き情報を提供し得る。限定ではなく例として、25FPSで記録されたマルチメディア・クリップは、連続するフレームの開始点間に約40msの時間を有し得る。限定ではなく例として、ジャイロスコープ・センサは、更新情報間の約10msの期間に対応する約100Hzのレートで、向き情報または更新情報を提供し得る。特定の実施形態において、特定のフレームについてのカメラの向きの決定または記録は、その特定のフレームの画像が取り込まれ、または記録されるのと同期的に、または実質的に同時に発生し得る。特定の実施形態において、特定のフレームについてのカメラの向きの決定は、動きセンサまたは向きセンサによって提供される1つまたは複数の更新情報の平均化、加算、単一値の選択、または最小値もしくは最大値を取り込むことを含み得る。限定ではなく例として、連続するフレーム間に約40msを有するフレーム・レートおよび約10msの更新期間を持つ動きセンサの場合、特定のフレームについてのカメラの向きの決定は、1つから4つのセンサ測定値を含み得る。特定の実施形態において、マルチメディア・クリップは、一連の画像フレームを備え得る。ここで、各画像フレームは、画像がキャプチャされたとき、マルチメディア・クリップ内の時間を示す関連付けられたタイム・スタンプを有する。特定の実施形態において、センサは、向き情報を定期的に提供し得る。ここで、カメラの向きは各々、関連付けられたタイム・スタンプを有する。特定の実施形態において、特定のフレームについてのカメラの向きは、特定のフレームについてのタイム・スタンプの近くで発生するタイム・スタンプを有する2つ以上のカメラの向きを補間することによって見出され得る。本開示は、特定のフレーム・レートおよび特定の動きセンサ更新レートを説明するが、本開示は、任意の適切なフレーム・レートおよび任意の適切な動きセンサ更新レートも想定する。
【0021】
特定の実施形態において、ビデオ安定化を適用すべきか否かを決定することは、ビデオを記録している間に存在する光量に関連し得る。特定の実施形態において、存在する光量は、カメラの露光時間から決定され得る。露光時間(またはシャッタ・スピード)とは、特定の画像をキャプチャする際に、カメラのシャッタがどのくらいの時間開いているか、またはサンプリング時間がどのくらいの時間使用されるかを指し得る。特定の実施形態において、カメラの画像センサに到達する光量は、露光時間に比例し得る。特定の実施形態において、存在する光量を決定するための技法は、カメラと一体化された光センサを使用すること、または光レベルもしくは輝度の標識を得るためにフレームを分析することを含み得る。低光条件において、カメラは、比較的長い露光時間を有し得る。比較的長い露光時間は、マルチメディア・クリップを動きぶれに対してより敏感にし得る。限定ではなく例として、明るい光(例えば、日の当たる屋外)における典型的な露光時間は、約0.5msであり得る一方で、低光(例えば、室内または暗い空間)における典型的な露光時間は、約30msであり得る。明るい光において、動きぶれは、カメラの比較的短い露光時間が理由で、著しい問題を提示しないことがあり得る。特定の実施形態において、短い露光時間が与えられると、動きぶれは、カメラの動きの比較的大きい振幅または高周波から生じることがあり、著しい動きぶれは、カメラぶれに対して関連付けられた典型的なカメラの動きについては発生しないことがあり得る。低光条件下では、動きぶれが発生し得る。なぜなら、比較的長い露光時間のオーダーの時間、カメラを動かないように保持することによって画像を安定化させることは困難であり得るためである。
【0022】
図5は、例示的なモバイル・コンピューティング・デバイス100の運動に対して関連付けられた軌跡または時間依存値と、いくつかの例示的なマルチメディア・クリップ500についての例示的な露光時間とを例示する。
図5において、特定のマルチメディア・クリップ500について、軌跡510は、マルチメディア・クリップ500のフレームにつ
いての露光時間(ΔT)を表し、軌跡520は、フレーム間の向きの変化(Δθ)を表し得る。特定の実施形態において、向きの変化520の値は、マルチメディア・クリップ500に対して関連付けられた動きベクトルから決定され得る。
図5において、露光時間510および向きの変化520は、水平な時間軸530と、任意の単位で露光時間および向きの変化を表すおよび縦軸540とに沿ってプロットされる。特定の実施形態において、モバイル・コンピューティング・デバイス100の露光時間510または向きの変化520についての値は、特定のマルチメディア・クリップのフレームごとに決定され得る。特定の実施形態において、モバイル・コンピューティング・デバイス100の露光時間510または向きの変化520についての値は、特定のマルチメディア・クリップの特定のフレーム(例えば、1つおきのフレーム、または2つおきのフレーム)について決定され得る。
図5において、マルチメディア・クリップ500Aは、例えば、約20msなどの比較的長い露光時間510Aを有する。これは、比較的低光の条件において記録されたビデオを示し得る。
図5において、マルチメディア・クリップ500Aは、比較的小さい向きの変化520Aを有する。これは、記録中にカメラが比較的安定していたこと(例えば、比較的小さい量のカメラぶれ)を示し得る。
【0023】
図6は、
図5の例示的な運動520と例示的な露光時間510との積に対して関連付けられた例示的な軌跡または時間依存値を例示する。
図6において、軌跡600は、特定のマルチメディア・クリップ500についての動きぶれ計量値関数(MBMF:motion−blur metric function)を表し得る。
図6において軌跡600によって表される動きぶれ計量値関数600は、露光時間510と向きの変化520とを乗算することによって取得され得る。特定の実施形態において、動きぶれ計量値関数600は、式MBMF(t)=ΔT(t)×Δθ(t)から決定され得る。また、特定の時間t
iにおいて発生する特定のフレームについての動きぶれ計量値関数600の値は、MBMF(t
i)=ΔT(t
i)×Δθ(t
i)として表現され得る。特定の実施形態において、MBMF600は、ビデオ安定化がマルチメディア・クリップ500に対して適用された場合における、マルチメディア・クリップ500またはマルチメディア・クリップの特定のセクション内の動きぶれの標識を提供し得る。特定の実施形態において、特定の時間において発生する特定のフレームについての動きぶれ計量値関数600の値は、その特定のフレームについての動きぶれの標識を提供し得る。特定の実施形態において、MBMF600は、特定のマルチメディア・クリップ500についてビデオ安定化を適用または有効化すべきか否かを少なくとも部分的に決定するために使用され得る。
【0024】
上記で議論されたように、マルチメディア・クリップ500Aは、比較的長い露光時間510Aと、比較的小さい量の向きの変化520Aとを有し得る。
図6において、動きぶれ計量値関数600Aは、露光時間510Aと向きの変化520Aとの積を表し、クリップ500Aに対してビデオ安定化を適用すべきか否かの決定は、MBMF600Aに依存し得る。特定の実施形態において、
図6における直線610によって示されるように、動きぶれ計量値関数600のいずれかの部分が、特定の閾値610を超える場合、ビデオ安定化はマルチメディア・クリップ500に対して適用されるべきではないと決定され得る。特定の実施形態において、動きぶれ計量値関数600が、マルチメディア・クリップ500の持続期間の特定の一部分について特定の閾値610を超える場合、もたらされ得る安定化されたビデオにおける動きぶれの問題に起因して、ビデオ安定化はマルチメディア・クリップ500に対して適用されるべきではないと決定され得る。特定の実施形態において、動きぶれ計量値関数が、マルチメディア・クリップの持続期間の1%、2%、5%、10%、または任意の適切な割合以上、所定の閾値610を超える場合、ビデオ安定化を適用しないことが決定され得る。限定ではなく例として、動きぶれ計量値関数600が、マルチメディア・クリップの持続期間の5%以上、所定の閾値610を超える場合、ビデオ安定化を適用しないことが決定されてもよい。特定の実施形態において、動きぶれ計量値関数600が、マルチメディア・クリップ500の持続期間の特定の一部分について
特定の閾値610を超えない場合、ビデオ安定化がマルチメディア・クリップ500に対して適用され得ることが決定されてもよく、結果として得られる安定化されたマルチメディア・クリップは、動きぶれの著しい問題を示さないであろう。特定の実施形態において、動きぶれ計量値関数が、マルチメディア・クリップの持続期間の90%、95%、98%、99%、または任意の適切な割合以上、所定の閾値610を超えない場合、ビデオ安定化が適用され得ると決定され得る。限定ではなく例として、動きぶれ計量値関数600が、マルチメディア・クリップの持続期間の95%以上、所定の閾値610を超えない場合、ビデオ安定化が適用され得ると決定されてもよい。
【0025】
特定の実施形態において、マルチメディア・クリップ500についての動きぶれ計量値(MBM:motion−blur metric)は、動きぶれ計量値関数600から決定され得る。特定の実施形態において、動きぶれ計量値は、MBMF600の平均値、中央値、単一値、最小値、または最大値として決定され得る。特定の実施形態において、N個のフレームを含むマルチメディア・クリップ500について、動きぶれ計量値は、動きぶれ計量値関数600の平均値を表し得、式
【0027】
から決定され得る。特定の実施形態において、特定のマルチメディア・クリップについての動きぶれ計量値は、単一の数または単一値であり得る。特定の実施形態において、動きぶれ計量値は、安定化されたマルチメディア・クリップ内に存在し得る、カメラぶれに起因した動きぶれアーチファクトの相対的な量を示す測定値であり得る。特定の実施形態において、マルチメディア・クリップ500についての動きぶれ計量値が、所定の閾値610を超える場合、ビデオ安定化はマルチメディア・クリップ500に対して適用されるべきではないと決定され得る。特定の実施形態において、マルチメディア・クリップ500についての動きぶれ計量値が、所定の閾値610を超えない場合、ビデオ安定化はマルチメディア・クリップ500に対して適用され得ると決定され得る。特定の実施形態において、動きぶれ計量値閾値610についての所定の値は、安定化されたマルチメディア・クリップの約90%、95%、98%、99%、または任意の適切な割合が動きぶれアーチファクトを実質的に含まず、かつ、安定化されたマルチメディア・クリップのそれぞれ約10%、5%、2%、1%、または任意の適切な割合が動きぶれアーチファクトを含み得る値を表し得る。特定の実施形態において、MBMが所定の動きぶれ計量値閾値610より大きいマルチメディア・クリップ500の場合、安定化されたマルチメディア・クリップ500の5%超は、動きぶれアーチファクトを含み、安定化されたマルチメディア・クリップ500の95%未満は、動きぶれアーチファクトを実質的に含まないであろう。特定の実施形態において、MBMが所定の動きぶれ計量値閾値610未満であるマルチメディア・クリップ500の場合、安定化されたマルチメディア・クリップ500の5%未満は動きぶれアーチファクトを含み、安定化されたマルチメディア・クリップ500の95%超は動きぶれアーチファクトを実質的に含まないであろう。特定の実施形態において、ビデオ安定化ルーチンを適用するか否かを決定することは、マルチメディア・クリップに対してビデオ安定化ルーチンを適用した後に、そのマルチメディア・クリップの約95%以上が動きぶれアーチファクトを実質的に含まないか否かを決定することを含む。本開示は、動きぶれ計量値関数600から決定される特定の動きぶれ計量値を説明するが、本開示は、任意の適切な動きぶれ計量値関数600から任意の適切な様式で決定される任意の
適切な動きぶれ計量値も想定する。
【0028】
図6において、動きぶれ計量値関数600Aは、マルチメディア・クリップ500Aの記録中に発生した比較的小さい量の向きの変化520Aに部分的に起因して、比較的小さい。特定の実施形態においては、MBMF600Aが閾値610を下回るので、マルチメディア・クリップ500Aに対してビデオ安定化を適用すると決定されてもよい。特定の実施形態において、MBMF600Aから決定されるMBMについての値は、閾値610Aを下回ることがあり、MBMの値に基づいて、マルチメディア・クリップ500Aに対してビデオ安定化を適用すると決定されてもよい。
図6において、動きぶれ計量値関数600Bは、マルチメディア・クリップ500Bに対して関連付けられ、関連付けられた露光時間510Bおよび向きの変化520Bから決定され得る。露光時間510Bは、比較的短いことがあり得(例えば、マルチメディア・クリップ500Bは、明るい光の条件下で記録済みであり得る)、向きの変化520Bは、マルチメディア・クリップ500Bが記録された間の比較的大きい量のカメラぶれを示し得る。動きぶれ計量値関数600Bは、比較的短い露光時間510B(例えば、約0.5ms)に起因して、比較的小さいことがあり得る。特定の実施形態において、MBMF600Bについての比較的小さい値、または関連付けられた動きぶれ計量値についての小さい値に基づいて、マルチメディア・クリップ500Bに対してビデオ安定化を適用することが決定され得る。
図6において、マルチメディア・クリップ500Cに対して関連付けられた動きぶれ計量値関数600Cは、マルチメディア・クリップ500Cにおける小さい量または中程度の量の動きぶれを示し得る。限定ではなく例として、ビデオ安定化基準が、動きぶれ計量値関数600が閾値610を超えないことを要求する場合、マルチメディア・クリップ500Cに対してビデオ安定化を適用しないことが決定され得る。限定ではなく例として、MBMF600Cから決定される動きぶれ計量値が、閾値610C未満である場合、マルチメディア・クリップ500Cに対してビデオ安定化を適用することが決定され得る。
図6において、マルチメディア・クリップ500Dに対して関連付けられた動きぶれ計量値関数600Dは、記録中に発生した比較的大きい向きの変化520Dならびに比較的中程度(例えば、5〜10ms)の露光時間510Dに少なくとも部分的に起因して、比較的大きい。特定の実施形態においては、MBMF600D(または関連する動きぶれ計量値)と閾値610Dとの比較に基づいて、マルチメディア・クリップ500Dに対してビデオ安定化を適用しないことが決定され得る。本開示は、マルチメディア・クリップに対してビデオ安定化を適用するか否かを決定するための特定の基準を説明するが、本開示は、マルチメディア・クリップに対してビデオ安定化を適用するか否かを決定するための任意の適切な基準も想定する。
【0029】
特定の実施形態において、ビデオ安定化ルーチンを有効化または適用することとは、カメラぶれの影響がマルチメディア・クリップから低減または除去されるルーチンを通じてマルチメディア・クリップを送ることを指し得る。特定の実施形態において、ビデオ安定化ルーチンを有効化すべきかまたは無効化すべきかの決定は、モバイル・コンピューティング・デバイス100がビデオを記録している間に、モバイル・コンピューティング・デバイス100によってリアルタイムで実行され得る。特定の実施形態において、ビデオ安定化ルーチンを適用すべきか否かの決定は、マルチメディア・クリップおよび適切なセンサ情報または値が記録された後に実行され得る。特定の実施形態において、ビデオ安定化ルーチンを有効化すべきかまたは無効化すべきかの決定は、マルチメディア・クリップを記録したモバイル・コンピューティング・デバイス100によって実行され得る。特定の実施形態において、ビデオ安定化ルーチンを有効化すべきかまたは無効化すべきかの決定は、マルチメディア・クリップを記録したモバイル・コンピューティング・デバイス100とは異なる別のコンピューティング・デバイスによって実行され得る。限定ではなく例として、モバイル・コンピューティング・デバイス100は、マルチメディア・クリップをサーバへアップロードし、そのサーバ上またはそのサーバに接続されたコンピューティ
ング・デバイス上で動作するアプリケーションが、そのマルチメディア・クリップについてビデオ安定化を有効化すべきかまたは無効化するか否かを決定してもよい。本開示は、マルチメディア・クリップに対してビデオ安定化を適用すべきか否かの、任意の適切なコンピューティング・デバイスによって実行される任意の適切な決定を想定する。
【0030】
特定の実施形態において、ビデオ安定化ルーチンは、画像内の特徴がフレームごとに追跡されて、カメラの動きが回復され、その後、カメラの動きが補償される、特徴ベースの安定化を使用して実装され得る。特定の実施形態において、ビデオ安定化は、ビデオ記録デバイスに内蔵され、または取り付けられたセンサ信号(例えば、ジャイロスコープ、加速度計、または磁力計)に基づいて実装され得る。ここで、センサ情報は、ビデオが記録される時に記録される。特定の実施形態において、ジャイロスコープからの情報は、時間について積分されて、カメラの向きが再構築され得、カメラの向き情報は、マルチメディア・クリップを安定化させるためのルーチンにおいて使用され得る。特定の実施形態においては、低域通過フィルタが、カメラの向き情報に対して適用されて、安定化されたカメラの向きまたは合成的なカメラの向きが取得され得る。安定化されたカメラの向きまたは合成的なカメラの向きは、ビデオ安定化ルーチンにおいて使用され得る。本開示は、ビデオ安定化を実装するための特定の技法を説明および例示するが、本開示は、任意の適切なビデオ安定化技法も想定する。
【0031】
図7は、特定のマルチメディア・クリップに対してビデオ安定化を適用するか否かを決定するための例示的な方法700を例示する。本方法は、カメラの1つまたは複数の動きが決定され得る工程710において開始し得る。ここで、動きは、マルチメディア・クリップの記録中における、カメラの運動に対応し得る。特定の実施形態において、記録中におけるカメラの運動は、カメラぶれに少なくとも部分的に起因し得る。工程720において、記録中に存在する1つまたは複数の光量が決定され得る。工程730において、マルチメディア・クリップについての動きぶれ計量値が決定され得る。特定の実施形態において、動きぶれ計量値は、決定されたカメラの動きおよび決定された存在する光量から決定され得る。工程740において、動きぶれ計量値に基づいて、マルチメディア・クリップに対してビデオ安定化ルーチンを適用すべきかが決定され得る。この時点で、本方法は終了し得る。特定の実施形態において、動きぶれ計量値が、所定の値以下である場合、ビデオ安定化が、マルチメディア・クリップに対して適用され得る。特定の実施形態において、動きぶれ計量値が、所定の値よりも大きい場合、マルチメディア・クリップに対するビデオ安定化は有効化されなくてもよい。特定の実施形態は、適切な場合には、
図7の方法の1つまたは複数の工程を繰り返し得る。本開示は、
図7の方法の特定の工程を特定の順序で発生するものとして説明および例示するが、本開示は、任意の適切な順序で発生する、
図7の方法の任意の適切な工程も想定する。また、本開示は、
図7の方法の特定の工程を含む、特定のマルチメディア・クリップに対してビデオ安定化を適用するか否かを決定するための例示的な方法を説明および例示するが、本開示は、任意の適切な工程を含む、特定のマルチメディア・クリップに対してビデオ安定化を適用するか否かを決定するための任意の適切な方法も想定する。任意の適切な工程は、適当な場合には、
図7の方法の工程の全部を含んでも、一部を含んでも、または含まなくてもよい。さらに、本開示は、
図7の方法の特定の工程を実行する特定の構成要素、デバイス、またはシステムを説明および例示するが、本開示は、
図7の方法の任意の適切な工程を実行する任意の適切な構成要素、デバイス、またはシステムの任意の適切な組み合わせも想定する。
【0032】
図8は、例示的なコンピュータ・システム800を示す。特定の実施形態では、1または複数のコンピュータ・システム800は、本明細書に記載され、または示されている1または複数の方法の1または複数のステップを実施する。特定の実施形態では、1または複数のコンピュータ・システム800は、本明細書に記載され、または示されている機能を提供する。特定の実施形態では、1または複数のコンピュータ・システム800上で動
作するソフトウェアは、本明細書に記載され、または示されている1または複数の方法の1または複数のステップを実施し、または本明細書に記載され、または示されている機能を提供する。特定の実施形態は、1または複数のコンピュータ・システム800の1または複数の部分を含む。本明細書では、コンピュータ・システムに言及することは、適切な場合、コンピューティング・デバイスを包含してもよく、逆も同様である。さらに、コンピュータ・システムに言及することは、適切な場合、1または複数のコンピュータ・システムを包含してもよい。
【0033】
この開示は、任意の好適な数のコンピュータ・システム800を企図する。この開示は、任意の好適な物理形態をとるコンピュータ・システム800を企図する。限定するものとしてではなく一例として、コンピュータ・システム800は、組込みコンピュータ・システム、システム・オン・チップ(SOC)、シングルボード・コンピュータ・システム(SBC)(たとえば、コンピュータ・オン・モジュール(COM)またはシステム・オン・モジュール(SOM)など)、デスクトップ・コンピュータ・システム、ラップトップもしくはノートブック・コンピュータ・システム、対話キオスク、メインフレーム、コンピュータ・システムのメッシュ、移動体電話、携帯情報端末(PDA)、サーバ、タブレット・コンピュータ・システム、またはこれらの2以上の組合せであってよい。適切な場合、コンピュータ・システム800は、1または複数のコンピュータ・システム800を含んでもよく、一元的なものであっても分散型であってもよく、複数のロケーションに跨ってもよく、複数のマシンに跨ってもよく、複数のデータ・センタに跨ってもよく、クラウド内にあってもよく、クラウドは、1または複数のネットワーク内で1または複数のクラウド・コンポーネントを含んでもよい。適切な場合、1または複数のコンピュータ・システム800は、実質的な空間的または時間的制限なしに、本明細書に記載され、または示されている1または複数の方法の1または複数のステップを実施してもよい。限定するものとしてではなく一例として、1つまたは複数のコンピュータ・システム800は、リアルタイムで、またはバッチ・モードで、本明細書に記載され、または示されている1または複数の方法の1または複数のステップを実施してもよい。1または複数のコンピュータ・システム800は、適切な場合、異なる時に、または異なるロケーションで、本明細書に記載され、または示されている1または複数の方法の1または複数のステップを実施してもよい。
【0034】
特定の実施形態では、コンピュータ・システム800は、プロセッサ802、メモリ804、ストレージ806、入力/出力(I/O)インターフェース808、通信インターフェース810、およびバス812を含む。この開示は、特定の数の特定の構成要素を特定の構成で有する特定のコンピュータ・システムについて記載し示しているが、この開示は、任意の好適な数の任意の好適な構成要素を任意の好適な構成で有する任意の好適なコンピュータ・システムを企図する。
【0035】
特定の実施形態では、プロセッサ802は、コンピュータ・プログラムを構成するものなど命令を実行するためのハードウェアを含む。限定するものとしてではなく一例として、命令を実行するために、プロセッサ802は、内部レジスタ、内部キャッシュ、メモリ804、またはストレージ806から命令を取り出し(またはフェッチし)、それらを復号および実行し、次いで、1または複数の結果を内部レジスタ、内部キャッシュ、メモリ804、またはストレージ806に書き込む。特定の実施形態では、プロセッサ802は、データ、命令、またはアドレス用に1または複数の内部キャッシュを含んでもよい。この開示は、適切な場合、任意の好適な数の任意の好適な内部キャッシュを含むプロセッサ802を企図する。限定するものとしてではなく一例として、プロセッサ802は、1または複数の命令キャッシュ、1または複数のデータ・キャッシュ、および1または複数の変換索引バッファ(TLB)を含んでもよい。命令キャッシュ内の命令は、メモリ804またはストレージ806内の命令のコピーであってもよく、命令キャッシュは、プロセッ
サ802によるこれらの命令の取り出しを高速化する。データ・キャッシュ内のデータは、プロセッサ802にて実行される命令が操作するための、メモリ804またはストレージ806内のデータのコピー、プロセッサ802で実行される後続の命令によるアクセスための、またはメモリ804もしくはストレージ806に書き込むための、プロセッサ802で実行された以前の命令の結果、あるいは他の好適なデータであってもよい。データ・キャッシュは、プロセッサ802による読出しまたは書込み動作を高速化する。TLBは、プロセッサ802のために仮想アドレス変換を高速化する。特定の実施形態では、プロセッサ802は、データ、命令、またはアドレス用に1または複数の内部レジスタを含む。この開示は、適切な場合、任意の好適な数の任意の好適な内部レジスタを含むプロセッサ802を企図する。適切な場合、プロセッサ802は、1または複数の算術論理演算ユニット(ALU)を含むことができ、マルチコア・プロセッサであってもよく、1または複数のプロセッサ802を含んでもよい。この開示は、特定のプロセッサについて記載し示しているが、この開示は、任意の好適なプロセッサを企図する。
【0036】
特定の実施形態では、メモリ804は、プロセッサ802が実行するための命令、またはプロセッサ802が操作するためのデータを記憶するための主記憶装置を含む。限定するものとしてではなく一例として、コンピュータ・システム800は、ストレージ806または別のソース(たとえば、別のコンピュータ・システム800など)からメモリ804に命令をロードする。次いで、プロセッサ802は、メモリ804から内部レジスタまたは内部キャッシュに命令をロードする。命令を実行するために、プロセッサ802は、内部レジスタまたは内部キャッシュから命令を取り出し、それらを復号する。命令の実行中、または実行後、プロセッサ802は、1または複数の結果(中間結果であることも最終結果であることもある)を内部レジスタまたは内部キャッシュに書き込む。次いで、プロセッサ802は、それらの結果の1または複数をメモリ804に書き込む。特定の実施形態では、プロセッサ802は、1もしくは複数の内部レジスタもしくは内部キャッシュ内、または(ストレージ806もしくは他の場所ではなく)メモリ804内の命令だけを実行し、1もしくは複数の内部レジスタもしくは内部キャッシュ内、または(ストレージ806もしくは他の場所ではなく)メモリ804内のデータだけを操作する。1または複数のメモリ・バス(それぞれがアドレス・バスとデータ・バスを含むことがある)がプロセッサ802をメモリ804に結合してもよい。バス812は、下記に記載されているように、1または複数のメモリ・バスを含んでもよい。特定の実施形態では、1または複数のメモリ管理ユニット(MMU)が、プロセッサ802とメモリ804との間に存在し、プロセッサ802によって要求されるメモリ804へのアクセスを容易にする。特定の実施形態では、メモリ804は、ランダム・アクセス・メモリ(RAM)を含む。このRAMは、適切な場合、揮発性メモリであり得る。適切な場合、このRAMは、ダイナミックRAM(DRAM)またはスタティックRAM(SRAM)であってよい。さらに、適切な場合、このRAMは、シングルポート型またはマルチポート型RAMであってよい。この開示は、任意の好適なRAMを企図する。メモリ804は、適切な場合、1または複数のメモリ804を含んでもよい。この開示は、特定のメモリについて記載し示しているが、この開示は、任意の好適なメモリを企図する。
【0037】
特定の実施形態では、ストレージ806は、データまたは命令用のマス・ストレージを含む。限定するものとしてではなく一例として、ストレージ806は、ハード・ディスク・ドライブ(HDD)、フロッピー(登録商標)ディスク・ドライブ、フラッシュ・メモリ、光ディスク、光磁気ディスク、磁気テープ、もしくはユニバーサル・シリアル・バス(USB)ドライブ、またはこれらの2以上の組合せを含んでもよい。ストレージ806は、適切な場合、取外し式または非取外し式(または固定)媒体を含んでもよい。ストレージ806は、適切な場合、コンピュータ・システム800に対して内部であっても外部であってもよい。特定の実施形態では、ストレージ806は、不揮発性のソリッドステート・メモリである。特定の実施形態では、ストレージ806は、読出し専用メモリ(RO
M)を含む。適切な場合、このROMは、マスクプログラムドROM、プログラマブルROM(PROM)、消去可能PROM(EPROM)、電気的消去可能PROM(EEPROM)、電気的書き換え可能ROM(EAROM)、もしくはフラッシュ・メモリ、またはこれらの2以上の組合せであってよい。この開示は、任意の好適な物理形態をとるマス・ストレージ806を企図する。ストレージ806は、適切な場合、プロセッサ802とストレージ806の間の通信を容易にする1または複数のストレージ制御ユニットを含んでもよい。適切な場合、ストレージ806は、1または複数のストレージ806を含んでもよい。この開示は、特定のストレージについて記載し示しているが、この開示は、任意の好適なストレージを企図する。
【0038】
特定の実施形態では、I/Oインターフェース808は、コンピュータ・システム800と1または複数のI/Oデバイスとの間の通信のために1または複数のインターフェースを提供するハードウェア、ソフトウェア、またはその両方を含む。コンピュータ・システム800は、適切な場合、これらのI/Oデバイスの1または複数を含んでもよい。これらのI/Oデバイスの1または複数は、人とコンピュータ・システム800の間の通信を可能にする。限定するものとしてではなく一例として、I/Oデバイスは、キーボード、キーパッド、マイクロフォン、モニタ、マウス、プリンタ、スキャナ、スピーカ、スチル・カメラ、スタイラス、タブレット、タッチ・スクリーン、トラックボール、ビデオ・カメラ、別の好適なI/Oデバイス、またはこれらの2以上の組合せを含んでもよい。I/Oデバイスは、1または複数のセンサを含んでもよい。この開示は、任意の好適なI/Oデバイス、およびそれらのための任意の好適なI/Oインターフェース808を企図する。適切な場合、I/Oインターフェース808は、プロセッサ802がこれらのI/Oデバイスの1または複数を駆動することを可能にする1または複数のデバイスまたはソフトウェア・ドライバを含む。I/Oインターフェース808は、適切な場合、1または複数のI/Oインターフェース808を含んでもよい。この開示は、特定のI/Oインターフェースについて記載し示しているが、この開示は、任意の好適なI/Oインターフェースを企図する。
【0039】
特定の実施形態では、通信インターフェース810は、コンピュータ・システム800と1もしくは複数の他のコンピュータ・システム800または1もしくは複数のネットワークとの間の通信(たとえば、パケットベースの通信など)のために1または複数のインターフェースを提供するハードウェア、ソフトウェア、またはその両方を含む。限定するものとしてではなく一例として、通信インターフェース810は、ETHERNET(登録商標)もしくは他の有線ベースのネットワークとの通信のためのインターフェース・コントローラ(NIC)もしくはネットワーク・アダプタ、またはWI−FIネットワークなど無線ネットワークとの通信のための無線NIC(WNIC)もしくは無線アダプタを含んでもよい。この開示は、任意の好適なネットワーク、およびそのための任意の好適な通信インターフェース810を企図する。限定するものとしてではなく一例として、コンピュータ・システム800は、アドホック・ネットワーク、パーソナル・エリア・ネットワーク(PAN)、ローカル・エリア・ネットワーク(LAN)、ワイド・エリア・ネットワーク(WAN)、メトロポリタン・エリア・ネットワーク(MAN)、またはインターネットの1もしくは複数の部分、あるいはこれらの2以上の組合せと通信する。これらのネットワークの1または複数のうちの1または複数の部分は、有線であっても無線であってもよい。一例として、コンピュータ・システム800は、無線PAN(WPAN)(たとえば、BLUETOOTH(登録商標)WPANなど)、WI−FIネットワーク、WI−MAXネットワーク、携帯電話ネットワーク(たとえば、グローバル移動体通信システム(GSM(登録商標))ネットワークなど)、もしくは他の好適な無線ネットワーク、またはこれらの2以上の組合せと通信する。コンピュータ・システム800は、適切な場合、これらのネットワークのいずれかのための任意の好適な通信インターフェース810を含んでもよい。通信インターフェース810は、適切な場合、1または複数の通信
インターフェース810を含んでもよい。この開示は、特定の通信インターフェースについて記載し示しているが、この開示は、任意の好適な通信インターフェースを企図する。
【0040】
特定の実施形態では、バス812は、コンピュータ・システム800の構成要素を互いに結合するハードウェア、ソフトウェア、またはその両方を含む。限定するものとしてではなく一例として、バス812は、アクセラレィティッド・グラフィックス・ポート(AGP)もしくは他のグラフィックス・バス、EISA(Enhanced Industry Standard Architecture)バス、フロントサイド・バス(FSB)、HT(HYPERTRANSPORT)相互接続、ISA(Industry Standard Architecture)バス、インフィニバンド相互接続、LPC(low−pin−count)バス、メモリ・バス、MCA(Micro Channel Architecture)バス、PCI(Peripheral Component Interconnect)バス、PCIエクスプレス(PCIe)バス、SATA(serial advanced technology attachment)バス、VLB(Video Electronics Standards Association local)バス、もしくは別の好適なバス、またはこれらの2以上の組合せを含んでもよい。バス812は、適切な場合、1または複数のバス812を含んでもよい。この開示は、特定のバスについて記載し示しているが、この開示は、任意の好適なバスまたは相互接続を企図する。
【0041】
本明細書では、1または複数の非一時的コンピュータ可読記憶媒体は、適切な場合、1または複数の半導体ベースの、もしくは他の集積回路(IC)(たとえば、フィールド・プログラマブル・ゲート・アレイ(FPGA)または特定用途向けIC(ASIC))、ハード・ディスク・ドライブ(HDD)、ハイブリッド・ハード・ドライブ(HHD)、光ディスク、光ディスク・ドライブ(ODD)、光磁気ディスク、光磁気ドライブ、フロッピー(登録商標)・ディスケット、フロッピー(登録商標)・ディスク・ドライブ(FDD)、磁気テープ、ソリッドステート・ドライブ(SSD)、RAMドライブ、セキュア・デジタル・カードもしくはセキュア・デジタル・ドライブ、任意の他の好適な非一時的コンピュータ可読記憶媒体、またはこれらの2以上の組合せを含んでもよい。非一時的コンピュータ可読記憶媒体は、適切な場合、揮発性、不揮発性、または揮発性と不揮発性の組合せであってよい。
【0042】
本明細書では、「または(もしくは)」は、別段明確に示されていない限り、または別段文脈によって示されない限り、包括的(inclusive)であり、排他的なものではない。したがって、本明細書では、「AまたはB」は、別段明確に示されていない限り、または別段文脈によって示されない限り、「A、B、またはその両方」を意味する。さらに、「および」は、別段明確に示されていない限り、または別段文脈によって示されない限り、共同であり、個別的でもある。したがって、本明細書では、「AおよびB」は、別段明確に示されていない限り、または別段文脈によって示されない限り、「AおよびBを共同で、または個別的に」意味する。
【0043】
この開示の範囲は、当業者であれば理解するであろう、本明細書に記載され、または示されている例示的な実施形態に対する変更、置換、変形、代替、および修正すべてを包含する。この開示の範囲は、本明細書に記載され、または示されている例示的な実施形態に限定されない。さらに、この開示は、それぞれの実施形態について、本明細書では、特定の構成要素、要素、機能、動作、またはステップを含むものとして記載し示しているが、これらの実施形態のいずれも、当業者であれば理解するであろう、本明細書のどこかに記載され、または示されている構成要素、要素、機能、動作、またはステップのいずれかの任意の組合せまたは並べ替えを含んでもよい。さらに、添付の特許請求の範囲において、特定の機能を実施するように適合された、するように配置された、することが可能な、す
るように構成された、することが可能である、するように動作可能である、またはするように動作する装置もしくはシステム、または装置もしくはシステムの構成要素に言及することは、その装置、システム、または構成要素がそのように適合され、配置され、動作可能であり、構成され、可能であり、動作可能であり、動作する限り、それ、またはその特定の機能が作動される、オンにされる、またはロック解除されるか否かにかかわらず、その装置、システム、構成要素を包含する。