(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0010】
ユーザによって作成された何百万もの映像が毎日インターネット上で共有される。これらの映像の多くは、スマートフォンやデジタルカメラなどの携帯デバイス上で録画されている。加えて、これらのデバイスの多くは、ジャイロスコープや加速度計などの、デバイスの方向と位置とを取得する1つまたは複数のセンサを有する機器である。
【0011】
携帯デバイスは、ユーザに、彼ら自身の映像を撮影し、共有するための利便性と柔軟性とを提供する一方、映像を録画している時、携帯デバイスを不注意に動かしまたは回転させることが非常に簡単である。結果として、映像のうちの1つまたは複数の部分を間違った方向から撮影することがある。加えて、映像のうちの1つまたは複数の部分が、意図しない揺れおよび/または動きを含んでいることもある。しかしながら、ユーザは、通常、後で、たとえば、コンピュータのモニタなどの固定ディスプレイ上で映像を再生するまで意図しない結果に気付かない。
【0012】
一例では、ユーザは、映像を、スマートフォンを使用して撮影することができる。ユーザは、次いで、映像を、映像共有ウェブサイトまたはソーシャルネットワーキングウェブサイトにアップロードすることができる。その後、ユーザは、アップロードした映像を、たとえば、公開でまたは個人的に、それを共有する前にプレビューすることができる。プレビュー中、ユーザは、映像のうちの複数の部分が1つまたは複数の間違った方向から撮影されたことを発見することがある。たとえば、映像のうちのいろいろな部分は、横向き、逆さま、および/またはある角度で表示され得る。映像を修正するために、ユーザは、映像コンテンツを、映像編集ソフトウェアを有するシステムに転送し、映像のうちの1つまたは複数の部分を手作業で調整するであろう。その後、ユーザは、手作業で修正した映像をウェブサイトにアップロードするであろう。したがって、ユーザが撮影した映像コンテンツ内の方向の変化の検出および修正は、ユーザにとって不便でもあり面倒でもある。
【0013】
本開示の実施形態は、映像コンテンツを調整して、1つまたは複数の間違った方向から撮影された、映像のうちの部分を修正することによって、上記の欠点に対処する。間違った方向の映像コンテンツの検出と修正とを自動的に実行することができ、ユーザが、映像編集ソフトウェアツールを使用して手作業による修正を行う必要がないようにする。
【0014】
たとえば、ユーザは、映像を、携帯デバイスから、映像コンテンツの自動調整を提供する映像共有ウェブサイトにアップロードすることができる。ウェブサイトは、映像からの画像フレームに関連する位置データおよび/または方向データを分析して、1つまたは複数の方向変化、揺れ、および/または過度の動きが映像内で発生したことを検出することができる。ウェブサイトは、その状態についてユーザに通知することができ、ユーザが映像をプレビューすることを可能にし、ユーザが、映像を修正するために使用される基準方向および/または基本アラインメントを選択することを可能にすることができる。その後、ウェブサイトは映像を修正し、各映像フレームの方向が、ユーザによって選択された基準方向および/または基本アラインメントに一致するようにする。その後、ユーザは、映像編集ツールを使用してビデオ画像フレームを手作業で調整することなしに、修正された映像を見て、共有することができる。したがって、映像調整システムは、映像全体を通して、1つまたは複数のいろいろな方向で、様々な時間において録画された映像コンテンツを、自動的に検出し、修正することができる。映像調整システムは、また、映像を通して、様々な時間において検出される揺れと動きとを検出し、修正することができる。さらに、調整を1つまたは複数のビデオ画像フレームに適用して、たとえば、常に、1つの固定された基準方向および/または位置で表示される、調整映像を作成することができる。
【0015】
図1は、本開示の様々な実施形態による、例示的システムアーキテクチャを示している。システムアーキテクチャ100は、ネットワーク104に接続された、サーバマシン110と、データストア140と、クライアントマシン102A〜クライアントマシン102Nとを含む。ネットワーク104は、パブリックネットワーク(たとえば、インターネット)、プライベートネットワーク(たとえば、ローカルエリアネットワーク(LAN)または広域ネットワーク(WAN))、またはそれらの組み合わせであることができる。
【0016】
データストア140は、映像コンテンツおよび画像コンテンツなどの様々な種類のデータを記憶することができる永続記憶装置である。いくつかの実施形態では、データストア140はネットワークに取り付けされたファイルサーバであることができ、一方、他の実施形態では、データストア140は、オブジェクト指向型データベース、リレーショナルデータベースなどの、他の種類の永続記憶装置であることができる。データストア140は、クライアントマシン102A〜クライアントマシン102Nによってアップロードされる、ユーザが作成したコンテンツ(映像コンテンツおよび/または画像コンテンツ)を含むことができる。データは、1つまたは複数の他の関係者によって提供されるコンテンツをさらに、または代替的に含むことができる。画像コンテンツと映像コンテンツとをデータストア140に、個別のファイル(たとえば、motion picture experts group(MPEG)ファイル、ウィンドウズ(登録商標)メディアビデオ(WMV)ファイル、joint photographic experts group(JPEG)ファイル、画像交換フォーマット(GIF)ファイル、portable network graphics(PNG)ファイルなど)として、または1つの圧縮ファイル(たとえば、zipファイル)の構成要素として追加することができる。
【0017】
一実施形態では、データストア140は、位置メタデータおよび/または方向メタデータを備える映像コンテンツと画像コンテンツとを記憶するために使用される。別の実施形態では、データストア140は、映像コンテンツと画像コンテンツとのうちの1つまたは複数と、映像コンテンツと画像コンテンツとに関連またはリンクする位置メタデータおよび/または方向メタデータとを記憶する。
【0018】
クライアントマシン102A〜クライアントマシン102Nは、パーソナルコンピュータ(PC)、ラップトップ、携帯電話、タブレットコンピュータ、カメラ、または任意の他のコンピューティングデバイスであることができる。クライアントマシン102A〜クライアントマシン102Nは、クライアントマシン102A〜クライアントマシン102Nのハードウェアとソフトウェアとを管理するオペレーティングシステム(OS)を動かすことができる。(図示しない)ブラウザは、クライアントマシン上(たとえば、クライアントマシンのOS上)で動くことができる。ブラウザは、ウェブサーバによって提供されるコンテンツにアクセスすることができるウェブブラウザであることができる。ブラウザは、ウェブサーバによって提供される映像コンテンツと他のビジュアルメディアとを表示することができ、映像と他のビジュアルメディアとの編集を可能にすることができる。
【0019】
サーバマシン110は、ラックマウント式サーバ、ルータコンピュータ、パーソナルコンピュータ、携帯情報端末、携帯電話、ラップトップコンピュータ、タブレットコンピュータ、カメラ、ビデオカメラ、ネットブック、デスクトップコンピュータ、メディアセンタ、または上記の任意の組み合わせであることができる。サーバマシン110は、ウェブサーバ120と映像調整システム130とを含むことができる。代替的な実施形態では、ウェブサーバ120および映像調整システム130は、1つまたは複数の異なるマシン上で動くことができる。
【0020】
ウェブサーバ120は、映像コンテンツを、データストア140からクライアント102A〜クライアント102Nに提供することができる。クライアント102A〜クライアント102Nは、ウェブサーバ120からの映像コンテンツを、ウェブブラウザを使用して、見つけ、アクセスし、見ることができる。ウェブサーバ120は、また、データストア140の中に保存と配信とを含む目的のために保存される、クライアント102A〜クライアント102Nからの映像コンテンツを受信することができる。
【0021】
ウェブサーバ120は、映像コンテンツに対するクエリを受信し、映像コンテンツの検索をデータストア140を使用して実行して、検索クエリを満たす映像データを見つけることができる。次いで、ウェブサーバ120は、クライアント102A〜クライアント102Nに検索クエリに一致する映像データ結果を送信することができる。一実施形態では、ウェブサーバ120は、クライアント102A〜クライアント102Nが映像コンテンツをアップロードし、プレビューし、編集し、表示し、公開することを可能にするように構成されたアプリケーションを提供する。たとえば、ウェブサーバ120は、そのような機能を提供する1つまたは複数のアプリケーションを含むことができ、またはそれらにアクセスすることができる。一例では、ウェブサーバ120は、1つまたは複数のサーバマシン110上のウェブサーバ120と共に、またはそれとは別にホストされ得る、1つまたは複数のアプリケーションサーバと通信する。そのような機能は、また、たとえば、1つまたは複数の異なるウェブアプリケーションと、独立型のアプリケーションと、システムと、プラグインと、ウェブブラウザ拡張機能と、アプリケーションプログラミングインターフェース(API)とによって提供され得る。
【0022】
映像は、動きのある場面を表す、順次的な画像フレームのセットである。たとえば、順次的画像のシリーズを、継続的に撮影することができ、または後で再構築してアニメーションを作成することができる。映像コンテンツを、アナログ映像とデジタル映像と2次元映像と3次元映像とを含むがこれらに限定されない、様々な形式で提示することができる。さらに、映像コンテンツは、ムービー、ビデオクリップ、または順番に表示されるアニメ画像の任意のセットを含むことができる。
【0023】
映像調整システム130は、映像コンテンツを分析して、1つまたは複数の方向の変化が映像コンテンツの中に存在するかどうかを決定することができる。たとえば、映像調整システム130は、1つまたは複数のビデオ画像フレームに関連する方向情報を分析することができる。方向情報は、たとえば、ビデオ画像フレームが撮影される時/された時の、その瞬間における録画デバイスの具体的な位置および/または方向を含むことができる。たとえば、映像録画デバイスは、デバイスの方向および/または位置を測定するジャイロスコープセンサおよび/または加速度計などの、1つまたは複数のセンサを含むことができる。映像録画デバイスは、そのような測定結果を1つまたは複数のセンサから、対応するビデオ画像フレーム内のメタデータとして受信し、記憶することができる。別の例では、1つまたは複数のビデオ画像フレームに関連する位置データおよび/または方向データなどの測定結果を、ビデオ画像フレームとは別に記憶することができ、後で関連付け/参照することができる。
【0024】
一実施形態では、映像調整システム130は、クライアント102A〜クライアント102Nによってアップロードされた映像に関連するビデオ画像フレームのシリーズが、複数の方向から録画されたかどうかを決定することができる。映像調整システム130は、また、映像コンテンツの自動調整を実行して、映像を通して発生する、ビデオ画像フレーム方向の1つまたは複数の変化を修正することができる。
【0025】
一実施形態では、ウェブサーバ120は、1つまたは複数のサーバマシン110上に存在し得るウェブアプリケーションを、クライアント102A〜クライアント102Nに提供する。ウェブアプリケーションは、ユーザが映像コンテンツをアップロードし、表示し、管理することを可能にするように構成された、グラフィカルユーザインターフェースを含むことができる。ウェブアプリケーションは、また、映像調整システム130を含みまたは活用することができる。一実施形態では、映像調整システム130は、システム設定、ユーザ選択、ユーザ要求、またはデフォルトのうちの1つまたは複数に基づいて、映像コンテンツを、アップロード処理中に自動的に分析することができる。映像コンテンツ分析を、また、映像調整システム130によって、たとえば、映像コンテンツがデータストア140にアップロードされた後に受信したユーザ要求に基づいて実行することができる。ユーザは、たとえば、1つまたは複数のコマンド(たとえば、音声、テキスト、動き)を使用して、または1つまたは複数の動作/グラフィカルユーザインターフェースとの相互作用(たとえば、ボタンのクリック、キーボードでのショートカット)を実行することによって、要求を開始することができる。
【0026】
一実施形態では、映像調整システム130は、映像コンテンツが複数の方向で録画されたと決定し、対応する表示をユーザ(たとえば、コンテンツの所有者、コンテンツの管理者、コンテンツの視聴者)に提供する。ウェブアプリケーションは、ユーザに、状況についてグラフィカルユーザインターフェースを使用して通知することができる。たとえば、ウェブアプリケーションは、メッセージまたはアラートを表示し、ラベルを更新し、インターフェースをリダイレクトまたはリフレッシュし、および/または1つまたは複数の追加的な選択可能な制御装置(たとえば、映像方向修正プレビューボタン、映像方向修正実行ボタン)を提供することができる。
【0027】
一実施形態では、グラフィカルユーザインターフェースは、ユーザが映像方向修正を開始し、修正案を用いて調整した映像コンテンツのフルバージョンまたはサンプルバージョンをプレビューし、調整映像コンテンツを保存し、既存映像コンテンツを調整映像コンテンツで置き換えることを可能にするように構成されている。グラフィカルユーザインターフェースを、ユーザが、調整/修正映像コンテンツ(たとえば、サンプルクリップ、フルバージョン)を、対応する元の映像コンテンツと共にプレビューすることを可能にするようにさらに構成することもできる。たとえば、調整映像コンテンツを元の映像コンテンツと同時に、並べて再生して、対照比較を可能にすることができる。一実施形態では、修正方向案を有する調整映像コンテンツのフルバージョンまたはサンプルバージョンを自動的に生成し、ユーザ要求によりプレビューに使用可能にする。
【0028】
図2は、本開示の実施形態による、映像調整システム130のブロック図である。映像調整システム130は、映像受信モジュール202と、映像分析モジュール204と、映像方向決定モジュール206と、映像調整モジュール208と、映像配信モジュール210とを含む。他の実施形態では、映像受信モジュール202と映像分析モジュール204と映像方向決定モジュール206と映像調整モジュール208と映像配信モジュール210とのうちの1つまたは複数に関連する機能を、組み合わせ、分割し、様々な配置に編成することができる。
【0029】
一実施形態では、映像調整システム130を、データストア140と作業データストア240とに連結する。データストア140は、映像データ220と画像データ230とを含む。作業データストア240は、一時映像データ250と一時画像データ260とを含む。
【0030】
映像データ220は、一般に、任意の種類の動画を指し、映画フィルムと、映像と、デジタル映像と、アニメ描画またはアニメ表示の他の形態とを含むがそれらに限定されない。たとえば、映像データ220は、画像データ230として記憶することができる静止画フレームのシーケンスを有する、デジタル映像を含むことができる。したがって、各画像フレームは、時間間隔に従って撮影された、場面のスナップショットを表すことができる。
【0031】
映像データ220は、2次元図形と3次元図形とを含む、コンピュータアニメーションを含むことができる。映像データ220は、また、動きの錯覚を生むグラフィック図を含む、画像のシーケンスを含むことができる。
【0032】
画像データ230は、一般に、現実空間のレンズを通したカメラセンサへの投射を指す。画像データ230は、任意の種類の2次元画像、3次元画像、映像コンテンツおよび/または描画を含むが、これらに限定されない。
【0033】
一実施形態では、映像調整システム130は、作業データストア240を一時的な記憶スペースとして活用して、映像データ220と画像データ230との調整を実行する。作業データストア240は、たとえば、任意の種類または組み合わせの揮発性記憶装置と非揮発性記憶装置と(たとえば、ディスク、メモリ)を含むことができる。
【0034】
一実施形態では、作業データストア240は、一時映像データ250と一時画像データ260とを含む。たとえば、一時映像データ250は、元のバージョンおよび変更/調整されたバージョンなどの、映像データ220の1つまたは複数のコピーを含むことができる。さらに、一時画像データ260は、元のビデオ画像フレームおよび変更/調整ビデオ画像フレームなどの、画像データ230の1つまたは複数のコピーを含むことができる。
【0035】
作業データストア240は、また、映像調整システム130によって生成される、一時データと結果とを含むことができる。たとえば、作業データストア240は、元の映像コンテンツと、元のビデオ画像フレームと、修正ビデオ画像フレームと、調整映像コンテンツとを含むことができる。
【0036】
さらに、映像調整システム130は作業データストア240を使用して、たとえば、調整計算を実行し、中間処理結果を保持し、修正した映像方向を有する調整映像コンテンツをユーザに提供することができる。
【0037】
映像受信モジュール202は、映像コンテンツを1つまたは複数のソースから受信する。たとえば、映像受信モジュールは、サーバマシン110またはカメラやスマートフォンなどのクライアントデバイス102A〜クライアントデバイス102N上の複数のビデオ画像フレームを含む、映像コンテンツを受信することができる。一例では、映像受信モジュール202は、同じコンピューティングデバイス上で録画され、直接記憶された映像コンテンツを受信する。別の例では、映像受信モジュール202は、映像コンテンツを、外部の映像録画デバイス、別のクライアント102A〜クライアント102N、またはサーバマシン110などの他のソースから受信する。
【0038】
一実施形態では、映像分析モジュール204は、映像データ220および/または画像データ230を分析して、映像コンテンツに関連するビデオ画像フレームのシリーズが、1つまたは複数の方向から、いつ録画されたかを決定する。たとえば、映像分析モジュール204は、1つまたは複数のビデオ画像フレームに関連する、位置ベースおよび/または方向ベースのメタデータを読み出し、比較することができる。映像分析モジュール204は、たとえば、位置メタデータおよび/または方向メタデータを、複数のビデオ画像フレームの間で、および/または複数のビデオ画像フレームにわたって比較して、方向変化、揺れ、および/または動きが映像コンテンツ内で発生するかどうかを決定することができる。
【0039】
一実施形態では、映像分析モジュール204は、映像方向の変化を閾値に基づいて検出する。たとえば、方向の変化と見なされる、2つ以上のビデオ画像フレーム間の回転度を特定するように、閾値を定義することができる。閾値を、たとえば、ユーザの好み、システム設定、またはデフォルト値として提供することができる。
【0040】
映像方向決定モジュール206は、映像コンテンツについて基準方向を決定する。一実施形態では、映像の最初の方向を基準方向として決定することができる。映像の基準方向を、また、映像を通して検出された最も頻度の高い方向、ユーザの好み、ユーザ選択、または映像が表示される表示デバイス/ビデオプレーヤの方向および/または大きさに基づいて決定することができる。
【0041】
映像調整モジュール208は、映像内の1つまたは複数のビデオ画像フレームの調整とリサイズとを実行する。たとえば、映像調整モジュール208は、ビデオ画像フレームを非基準方向から、映像について決定された基準方向に調整するために必要な回転度を計算することができる。回転度を、たとえば、ビデオ画像フレームの方向と基準方向との間の差に基づいて計算することができる。映像調整モジュール208は、その後、ビデオ画像フレームを基準方向に、計算した回転度に基づいて調整することができる。加えて、映像調整モジュール208は、また、ビデオ画像フレームをリサイズすることができる。たとえば、映像調整モジュールは、ビデオ画像フレームの解像度を拡張し、および/またはビデオ画像フレームをクロップして、調整映像を通して同一なビデオ画像表示サイズを提供することができる。
【0042】
映像配信モジュール210は、基準方向に調整した映像を生成する。一実施形態では、映像配信モジュール210は、基準方向に調整した映像を、映像調整モジュール208から受信した調整映像フレームのセットを使用して生成する。映像配信モジュール210は、その後、基準方向に調整した映像をユーザに表示のために提供することができる。
【0043】
図3は、一実施形態による、映像方向の自動調整を示すフロー図である。方法300を、ハードウェア(回路、専用論理、など)、(汎用コンピュータシステムまたは専用マシン上で動かされるものなどの)ソフトウェア、または両方の組み合わせを備え得る処理論理によって実行する。一実施形態では、方法300を、
図1のサーバマシン110によって実行する。方法300を、サーバマシン110または1つまたは複数の他のコンピューティングデバイス上で動いている映像調整システム130によって実行することができる。
【0044】
方法300は、映像コンテンツが受信される段階302において開始する。一実施形態では、映像受信モジュール202が、複数のビデオ画像フレームを含む映像コンテンツを受信する。たとえば、映像受信モジュール202は、同じコンピューティングデバイス上で録画され、記憶された映像コンテンツを受信することができる。別の実施形態では、映像受信モジュール202は、別のコンピュータシステムなどの他のソースから映像コンテンツを受信することができる。
【0045】
段階304で、映像コンテンツ内で発生する方向変化を検出する。一実施形態では、映像分析モジュール204が、段階302で受信した映像コンテンツからのビデオ画像フレームを分析する。たとえば、映像分析モジュールは、ビデオ画像フレーム内に記憶されている位置メタデータおよび/または方向メタデータを分析して、いつ方向変化が映像内で発生したかを決定することができる。
【0046】
たとえば、映像録画デバイスは、1つまたは複数のジャイロスコープなどのデバイスセンサを含み、映像コンテンツが録画されるにつれてデバイスセンサを継続的に監視することができる。映像録画デバイスは、その後、センサのうちの1つまたは複数から受信した位置情報および/または方向情報を、ビデオ画像フレーム内にメタデータとして記憶することができる。一実施形態では、位置データおよび/または方向データを、映像録画デバイスによって継続的に取得し、各それぞれのビデオ画像フレームの中にメタデータとして記憶することができる。別の実施形態では、位置データおよび/または方向データの変化のみをビデオ画像フレーム内でメタデータとして、映像記録中に変化が起こった時に取得する。
【0047】
一実施形態では、1つまたは複数の画像フレームの中に記憶された方向データを比較して、方向変化が映像内で起こったかどうかを決定することができる。たとえば、方向変化を、2つ以上のビデオ画像フレーム間の方向の単一差または累積差が1つまたは複数の定義された閾値を超えた時に検出することができる。
【0048】
別の実施形態では、1つまたは複数のビデオ画像フレームに関連する方向データおよび/または位置データを比較して、録画映像内に発生する揺れおよび/または他の意図しない動きまたは混乱させる動きを検出し、修正することができる。一例では、1つまたは複数のビデオ画像フレームに関連する方向データおよび/または位置データを使用して、基本アラインメント(たとえば、基準方向または別の基準位置)を確立する。確立した基本アラインメントから逸れているビデオ画像フレームを、決定した基本アラインメントに調整して、ビデオ画像フレームにわたって発生する揺れおよび/または他の意図しない動きまたは混乱させる動きを修正することができる。
【0049】
段階306で、映像コンテンツを表示するための基準方向を決定する。一実施形態では、基準方向は、映像コンテンツを表示するために使用される1つの固定方向である。たとえば、基準方向を、映像の最初の方向、映像を通して検出された最も頻度の高い方向、ユーザが好む再生方向、ユーザが選択した方向、映像コンテンツが表示されるデバイスまたはビデオプレーヤの方向、および/または映像コンテンツを表示するビデオプレーヤの1つまたは複数の属性(たとえば、ビデオプレーヤの高さ、幅、画面位置、方向、固定されている、変更可能である、など)に基づいて決定することができる。
【0050】
段階308で、映像コンテンツを基準方向に調整する。一実施形態では、映像調整モジュール208が、映像内の1つまたは複数のビデオ画像フレームの調整とリサイズとを実行する。たとえば、映像調整モジュール208は、ビデオ画像フレームをその最初の方向から基準方向に調整するために必要な回転度を計算することができる。映像調整モジュール208は、また、映像コンテンツを基本表示解像度にリサイズすることができる。
【0051】
一実施形態では、映像調整モジュール208は、ビデオ画像フレームを基準方向に調整するために必要な回転度を決定する。一例では、映像調整モジュール208は、録画された映像フレームの方向と映像について決定された基準方向との間の差を計算する。映像調整モジュール208は、その後、映像フレームを、変化を修正するという決定に基づいて調整することができる。
【0052】
加えて、映像調整モジュール208は、また、ビデオ画像フレームをリサイズすることができる。たとえば、映像調整モジュール208は、ビデオ画像フレームをクロップして、調整映像について基本表示サイズを提供し、および/またはビデオ画像の一部を別の方向または再生画面に合わせることができる。
【0053】
一実施形態では、映像調整モジュール208は、映像について基本表示サイズを、すべてのビデオ画像フレームの最も短い辺に基づいて計算する。たとえば、3000x2000の横方向解像度と2000x3000の縦方向解像度とを有する映像は、2000x2000の基本表示サイズを有することになる。したがって、2000x3000縦方向ビデオ画像フレームと3000x2000横方向ビデオ画像フレームの両方の中央の2000x2000正方形領域を、標準方向に調整し、2000x2000の共通表示サイズで一緒に表示することができる。
【0054】
一例では、各2000x3000縦方向ビデオ画像フレームをクロップして、中央の2000x2000領域を保つようにする。クロップされた縦方向ビデオ画像フレームを、その後、回転させ、中央揃えし、3000x2000横長映像フレームと共に調整映像内で表示することができる。
【0055】
別の例では、3000x2000横方向ビデオ画像フレームの中央の2000x2000の正方形を、回転させ、中央揃えし、2000x3000縦方向ビデオフレームと共に調整映像内で表示することができる。
【0056】
別の実施形態では、最初の3000x2000横方向解像度を有する映像を、2000x3000縦方向解像度に回転させることができる。さらに、その後、映像内の2000x3000縦方向ビデオ画像フレームを回転させて、調整した横長画像フレームの方向に一致させ、1500x2000エリアにリサイズして縦横比を保つことができる。
【0057】
図4は、一実施形態による、映像コンテンツの自動調整の追加的な態様を示すフロー図である。方法400を、ハードウェア(回路、専用論理、など)、(汎用コンピュータシステムまたは専用マシン上で動くものなどの)ソフトウェア、または両方の組み合わせを備え得る処理論理によって実行する。
【0058】
段階402では、映像コンテンツを受信する。一実施形態によると、映像コンテンツを1つまたは複数のソースから受信または集めることができる。たとえば、映像コンテンツは、順次的な画像フレームのセットを有する1つの映像ファイルとして到着することができる。加えて、映像ファイルを、順次的な順序または関係を有する2つ以上の画像から集めおよび/または作成することができる。段階402を、たとえば、映像受信モジュール202によって実行することができる。
【0059】
段階404では、方向変化および/またはアラインメント変化(すなわち、揺れまたはビデオ画像の動き)を映像コンテンツ内で検出する。一実施形態では、2つ以上のビデオ画像フレームからの方向データおよび/または位置データを分析し、比較して、いつ方向変化および/またはアラインメント変化が映像内で発生したかを決定する。一例では、方向変化および/またはアラインメント変化を、映像内で、2つ以上のビデオ画像フレーム間の方向データおよび/または位置データの変化が閾値を超えた時に検出することができる。段階404を、たとえば、映像分析モジュール204によって実行することができる。
【0060】
段階406では、ユーザは、映像コンテンツ内で検出された方向変化および/またはアラインメント変化について通知される。一実施形態では、ユーザは、検出された方向変化および/またはアラインメント変化についての通知を、映像コンテンツが録画されたデバイス上で受信することができる。別の実施形態では、ユーザは、通知を、ユーザが映像コンテンツをアップロードした映像共有ウェブサイトまたはソーシャルネットワークウェブサイトから受信することができる。ユーザに与えられる通知は、カメラの回転が映像内で検出されたことを示すことができる。加えて、ユーザは、映像をプレビューするオプションと、1つまたは複数の検出された方向またはアラインメントの変化をプレビューするオプションと、映像中の1つまたは複数の検出した方向変化またはアラインメント変化を自動的に修正するオプションとのうちの1つまたは複数を提供され得る。さらに、ユーザを、映像を表示するための基準方向および/または基本アラインメントを選択するように促すことができる。段階406を、たとえば、映像方向決定モジュール206によって実行することができる。
【0061】
段階408では、映像コンテンツを表示するために使用する基準方向および/または基本アラインメントを、ユーザのフィードバックに基づいて決定する。一例では、基準方向および/または基本アラインメントを、受信したユーザ入力に基づいて受信する。たとえば、ユーザは、基準方向および/または基本アラインメントを、映像コンテンツ内で検出された方向および/またはアラインメントの変化について通知された後に選択することができる。ユーザは、また、基準方向および/または基本アラインメントを、映像コンテンツの検出された変化および/または他の部分のプレビューを見た後に選択することができる。
【0062】
別の実施形態では、基準方向を、映像の最初の方向および/またはアラインメント、映像を通して検出された最も頻度の高い方向またはアラインメント、ユーザが好む再生方向、ユーザが選択した方向/アラインメント、または映像コンテンツが表示されるデバイスまたはビデオプレーヤの方向に基づいて決定することができる。一実施形態では、映像コンテンツの調整を、映像調整システム130によって、ユーザから受信した入力に基づいて、またはシステムとユーザ入力の両方の組み合わせに基づいて、自動的に開始することができる。段階408を、たとえば、映像方向決定モジュール208によって実行することができる。
【0063】
段階410では、映像コンテンツを基準方向および/または基本アラインメントに、ビデオ画像フレームのうちの1つまたは複数を修正することによって調整する。一実施形態では、画像フレームのうちの1つまたは複数を、画像フレームを非基準方向から段階408で決定した基準方向に回転させることによって調整することができる。さらに、画像フレームのうちの1つまたは複数を、調整映像について決定した基準映像表示サイズに基づいてリサイズすることもできる。
【0064】
一実施形態では、ビデオ画像フレームを、ビデオ画像フレームの解像度を映像の最も長い辺の正方形に拡張することによってリサイズする。たとえば、3000x2000の横長解像度と2000x3000の縦長解像度とを有する映像を、3000x3000に拡張することができる。したがって、ビデオ画像フレームを基準方向に回転させて、調整した映像の中で一緒に、コンテンツを失わずに表示することができる。段階410を、たとえば、映像調整モジュール208によって実行することができる。
【0065】
段階412では、基準方向および/または基本アラインメントに調整した映像をユーザに提供する。調整映像を、基準方向および/または基本アラインメントに調整された画像フレームに基づいて生成することができる。その後、調整映像コンテンツを、ユーザに、プレビューまたは完全な表示のために提示することができる。
【0066】
代替的な実施形態では、ビデオプレーヤまたは映像再生ウェブサイトは、ビデオ画像フレームをリサイズしないことがある。代わりに、ビデオ画像フレームを基準方向に回転させて、最初の大きさで表示することができる。たとえば、600x400の横長ビデオ画像フレームを、それらの最初の大きさで、基準方向で表示することができる。その後、400x600の縦長画像フレームを、ビデオプレーヤ領域をリサイズすることによって、それらの最初の大きさで、基準方向で表示することができる(その逆もまた可能である)。一例では、ビデオプレーヤ/映像再生領域を取り囲んでいるテキストなどのコンテンツを、ビデオプレーヤ領域を自動的にリサイズした時に、1回または複数回自動的に再配置することができる。段階412を、たとえば、映像配信モジュール210によって実行することができる。
【0067】
図5は、マシンに本明細書で説明する方法論のうちの任意の1つまたは複数を実行させるための命令のセットを内部で実行することができる、コンピュータシステム500という例示的な形態でのマシンの図を示している。代替的な実施形態では、マシンを、LAN、イントラネット、エクストラネット、またはインターネット上の他のマシンに接続する(たとえば、ネットワークで結ぶ)ことができる。マシンを、クライアント-サーバネットワーク環境におけるサーバまたはクライアントの能力内で、またはピアツーピア(または分散)ネットワーク環境におけるピアマシンとして、動かすことができる。マシンは、パーソナルコンピュータ(PC)、タブレットPC、セットトップボックス(STB)、携帯情報端末(PDA)、携帯電話、ウェブアプライアンス、サーバ、ネットワークルータ、スイッチまたはブリッジ、またはそのマシンによって行われる動作を特定する、(順次的であろうとなかろうと)命令のセットを実行することができる任意のマシンであることができる。さらに、1つのマシンのみを示したが、「マシン」という言葉を、命令のセット(または複数のセット)を単独または合同で実行して本明細書で説明した方法論のうちの任意の1つまたは複数を実行する、任意のマシンの集合を含むように解釈すべきである。
【0068】
例示的なコンピュータシステム500は、バス530を介してお互いに通信する、処理デバイス(プロセッサ)502と、メインメモリ504(たとえば、リードオンリメモリ(ROM)、フラッシュメモリ、シンクロナスDRAM(SDRAM)などのダイナミックランダムアクセスメモリ(DRAM)、ダブルデータレート(DDR SDRAM)、またはDRAM(RDRAM)、など)と、スタティックメモリ506(たとえば、フラッシュメモリ、スタティックランダムアクセスメモリ(SRAM)、など)と、データ記憶デバイス518とを含む。
【0069】
プロセッサ502は、マイクロプロセッサ、中央処理装置などの、1つまたは複数の汎用処理デバイスを表している。より具体的には、プロセッサ502は、複雑命令セットコンピューティング(CISC)マイクロプロセッサ、縮小命令セットコンピューティング(RISC)マイクロプロセッサ、超長命令語(VLIW)マイクロプロセッサ、または他の命令セットを実行するプロセッサまたは命令セットの組み合わせを実行するプロセッサであることができる。プロセッサ502は、また、1つまたは複数の、特定用途向け集積回路(ASIC)などの特殊用途処理デバイス、フィールドプログラマブルゲートアレイ(FPGA)、デジタル信号プロセッサ(DSP)、ネットワークプロセッサなどであることができる。プロセッサ502は、本明細書で説明する動作とステップとを実行するための命令522を実行するように構成されている。
【0070】
コンピュータシステム500は、ネットワークインターフェースデバイス508をさらに含むことができる。コンピュータシステム500は、また、映像表示部510(たとえば、液晶ディスプレイ(LCD)またはブラウン管(CRT))と、英数字入力デバイス512(たとえば、キーボード)と、カーソル制御デバイス514(たとえば、マウス)と、信号生成デバイス516(たとえば、スピーカ)とを含むことができる。
【0071】
データ記憶デバイス518は、本明細書で説明する方法論または機能のうちの1つまたは複数を具現化する命令522(たとえば、ソフトウェア)の1つまたは複数のセットを記憶した、コンピュータ可読記憶媒体528を含むことができる。命令522は、また、コンピュータシステム500による命令522の実行中、メインメモリ504内および/またはプロセッサ502内に完全にまたは少なくとも部分的に存在することができ、メインメモリ504およびプロセッサ502もコンピュータ可読記憶媒体を構成している。命令522を、さらに、ネットワーク520を介して、ネットワークインターフェースデバイス508を介して送信または受信することができる。
【0072】
一実施形態では、命令522は、映像調整モジュール(たとえば、
図1の映像調整システム130)のための命令、および/または映像調整モジュールを呼び出す方法を含むソフトウェアライブラリを含む。コンピュータ可読記憶媒体528(機械可読記憶媒体)を例示的な実施形態では単一媒体であると示したが、「コンピュータ可読記憶媒体」という言葉は、命令の1つまたは複数のセットを記憶する、単一媒体または複数媒体(たとえば、集中型または分散型データベース、および/または関連キャッシュおよびサーバ)を含むように解釈されるべきである。「コンピュータ可読記憶媒体」という言葉は、また、マシンによる実行のための命令のセットを記憶、符号化、または実行することができ、マシンに本開示の方法論のうちの任意の1つまたは複数を実行させる任意の媒体を含むように解釈されるべきである。したがって、「コンピュータ可読記憶媒体」という言葉は、半導体メモリと光媒体と磁気媒体とを含むがこれらに限定されない、と解釈されるものである。
【0073】
前述の説明では、多数の詳細を明記した。しかしながら、本開示の利益を有する当業者には、本開示をこれらの特定の詳細なしに実践することができるということが明白である。いくつかの例では、良く知られた構造とデバイスとを、本開示を曖昧にすることを避けるために、詳細としてよりも、ブロック図の形態で示した。
【0074】
詳細な説明のいくつかの部分を、コンピュータメモリ内のデータビットに対する動作のアルゴリズムと象徴との観点から表した。アルゴリズムは、ここでは、一般に、所望の結果につながる、ステップの首尾一貫したシーケンスであると考えられる。ステップは、物理的量の物理的操作を必要とするものである。通常、必ずしもそうとは限らないが、これらの量は、記憶され、伝送され、結合され、比較され、そうでなければ操作され得る、電気信号または磁気信号の形態を取る。一般的な慣習から、これらの信号をビット、値、要素、記号、文字、期間、数字などと呼ぶことが時には都合が良いことが分かっている。
【0075】
しかしながら、これらの用語と類似の用語とのすべてが、適切な物理的量と関連付けられ、これらの量に与えられた単に便利な名前であるということに留意すべきである。以下の説明から明白なものとは反対であると特に述べない限り、本明細書を通して、「計算」、「比較」、「適用」、「作成」、「順位付け」、「分類」などの言葉を活用した説明が、コンピュータシステムのレジスタとメモリとの中の物理的(たとえば、電子)量として表されるデータを、コンピュータシステムのメモリまたはレジスタ、または他のそのような情報の記憶デバイス、伝送デバイス、または表示デバイスの中の物理的量として同様に表される他のデータに操作し、変換する、コンピュータシステムまたは類似の電子コンピューティングデバイスの動作と処理とを指すということが理解される。
【0076】
本開示の特定の実施形態は、また、本明細書の動作を実行するための装置にも関する。本装置を意図する目的のために構築することができ、または、それは、コンピュータ内に記憶されたコンピュータプログラムによって選択的に始動または再構成される、汎用コンピュータを備えることができる。そのようなコンピュータプログラムを、フロッピー(登録商標)ディスク、光ディスク、CD-ROM、光磁気ディスク、リードオンリメモリ(ROM)、ランダムアクセスメモリ(RAM)、EPROM、EEPROM、磁気または光カード、または電子情報を記憶するのに適切な任意の種類の媒体などであるがこれらに限定されない、コンピュータ可読記憶媒体の中に記憶することができる。
【0077】
上記の説明が、限定でなく説明を意図しているということが理解される。多くの他の実施形態が、上記の説明を読み、理解することで当業者に明白になる。したがって、本開示の範囲は、添付の特許請求の範囲を参照し、その特許請求の範囲が権利を有する同等物の全範囲と共に決定されるべきである。