(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-10-07
(45)【発行日】2024-10-16
(54)【発明の名称】静的な映像認識
(51)【国際特許分類】
H04N 23/60 20230101AFI20241008BHJP
G06T 7/269 20170101ALI20241008BHJP
【FI】
H04N23/60
G06T7/269
【外国語出願】
(21)【出願番号】P 2021150160
(22)【出願日】2021-09-15
(62)【分割の表示】P 2020531438の分割
【原出願日】2019-03-08
【審査請求日】2021-11-02
(32)【優先日】2018-03-11
(33)【優先権主張国・地域又は機関】US
【前置審査】
(73)【特許権者】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】ホン,ウェイ
(72)【発明者】
【氏名】リン,ションイー
【審査官】▲高▼橋 真之
(56)【参考文献】
【文献】特開2004-120576(JP,A)
【文献】米国特許出願公開第2015/0364158(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H04N 23/60 -23/698
H04N 5/222- 5/257
G06T 7/269
(57)【特許請求の範囲】
【請求項1】
コンピュータで実行される方法であって、
複数フレームを含む入力映像をユーザから受信することと、
前記入力映像の前記複数フレームを前処理することと、
前記入力映像の前記複数フレームの一部における局所的な動きを推定することと、
前記入力映像の前記複数フレームのうちの少なくともいくつかで起こる全体的な動きを補償することと、
全体的な動きの補償によって調整された前記局所的な動きの推定のエントロピーに基づいて、被写体動きスコアを計算することと、
前記被写体動きスコアを正規化することと、
前記被写体動きスコアによって示される静的なシーンまたは被写体を含む前記入力映像に基づいて、前記入力映像が静的な映像であるか否かを判定することと、
前記入力映像が前記静的な映像であることに応答して、前記入力映像ではなく前記複数フレームのうちの一部のフレームを前記ユーザに提供することととを備え
、
前記入力映像が静的な映像であるか否かを判定することは、
閾値と比較して低い正規化された被写体動きスコアを有するフレームの数をカウントすることと、
全フレーム数に対する静的なフレームの比率を識別することと、
前記フレームの比率が静的なフレーム比率閾値を超えることに応答して、前記入力映像は静的な映像であると判定することとを含み、
前記静的なフレームは、前記閾値と比較して低く、正規化された被写体動きスコアを有するフレームである、方法。
【請求項2】
前記入力映像が前記静的な映像ではないことに応答して、前記フレームおよび前記入力映像を前記ユーザに提供することをさらに備える、請求項1に記載の方法。
【請求項3】
全体的な動きの補償によって調整された前記局所的な動きの推定のエントロピーに基づいて前記被写体動きスコアを計算することは、
局所的な動きの推定を表わすローカル動きベクトルから全体的な動きの推定を表わすグローバル動きベクトルを減算することによって、被写体動きベクトルを計算することと、
前記被写体動きベクトルをスコアマップに変換することと、
前記スコアマップのエントロピースコアを計算することと、
前記エントロピースコアを前記被写体動きスコアにマッピングすることとを含む、請求項1または2に記載の方法。
【請求項4】
前記入力映像は、シャッタ押下指示を受信する直前に取得された映像および前記シャッタ押下指示を受信した直後に取得された映像を含む、請求項1~
3のいずれかに記載の方法。
【請求項5】
システムであって、
1つまたは複数のプロセッサと、
命令を記憶したメモリとを備え、前記命令は前記1つまたは複数のプロセッサによって実行されると、前記1つまたは複数のプロセッサに動作を実行させ、前記動作は、
複数フレームを含む入力映像をユーザから受信することと、
前記入力映像の前記複数フレームを前処理することと、
前記入力映像の前記複数フレームのうちの少なくともいくつかで起こる局所的な動きを推定することと、
前記入力映像の前記複数フレームのうちの一部で起こる全体的な動きを補償することと、
全体的な動きの補償によって調整された前記局所的な動きの推定のエントロピーに基づいて、被写体動きスコアを計算することと、
前記被写体動きスコアを正規化することと、
前記被写体動きスコアによって示される静的なシーンまたは被写体を含む前記入力映像に基づいて、前記入力映像が静的な映像であるか否かを判定することと、
前記入力映像が静的な映像であることに応答して、前記入力映像ではなく前記複数フレームのうちの一部のフレームを前記ユーザに提供することとを含
み、
前記入力映像が静的な映像であるか否かを判定することは、
閾値と比較して低い正規化された被写体動きスコアを有するフレームの数をカウントすることと、
全フレーム数に対する静的なフレームの比率を識別することと、
前記フレームの比率が静的なフレーム比率閾値を超えることに応答して、前記入力映像は静的な映像であると判定することとを含み、
前記静的なフレームは、前記閾値と比較して低く、正規化された被写体動きスコアを有するフレームである、システム。
【請求項6】
前記動作は、前記入力映像が静的な映像ではないことに応答して、前記フレームおよび前記入力映像を前記ユーザに提供することをさらに含む、請求項
5に記載のシステム。
【請求項7】
全体的な動きの補償によって調整された前記局所的な動きの推定のエントロピーに基づいて前記被写体動きスコアを計算することは、
局所的な動きの推定を表わすローカル動きベクトルから全体的な動きの推定を表わすグローバル動きベクトルを減算することによって、被写体動きベクトルを計算することと、
前記被写体動きベクトルをスコアマップに変換することと、
前記スコアマップのエントロピースコアを計算することと、
前記エントロピースコアを前記被写体動きスコアにマッピングすることとを含む、請求項
5または
6に記載のシステム。
【請求項8】
前記入力映像は、シャッタ押下指示を受信する直前に取得された映像および前記シャッタ押下指示を受信した直後に取得された映像を含む、請求項
5~
7のいずれかに記載のシステム。
【請求項9】
請求項1~
4のいずれかに記載の方法を1つまたは複数のコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【背景技術】
【0001】
あるモバイルデバイスは、映像および静止画像をキャプチャする機能を含み得る。場合によっては、静止画を取り込むためのシャッタ押下を検出する直前および直後に発生する画像を記録する映像を取り込むことができる。そのような映像は、面白く、単一の静止画像が含まないかもしれない主題の画像をキャプチャするために有用であり得る。しかしながら、建物または風景などの静的なまたは一般に静的なシーンの映像は、ユーザに有益ではない可能性があり、オンデバイスメモリまたは外部ストレージに格納するのに価値がない可能性がある。静止映像と動きのある映像とを区別するための技術的困難が存在する。例えば、モバイルデバイスを使用して画像がキャプチャされる場合、ユーザの手は、映像があたかも動きを含むかのように見えるように十分に震えるかもしれない。動きのある映像に関し、米国特許出願公開第2016/0267325号公報は、映像ストリームの動きのあるフレームの検出の技術を開示している。したがって、映像が静的であることを認識すること(例えば、比較的静的なシーンまたは被写体の記録)は有用であり得る。
【0002】
本明細書において提供される背景技術の説明は、本開示の文脈を概して提示することを目的としている。現時点で明記された発明者らの研究は、この背景技術のセクションで説明される限り、ならびに出願時に従来技術としてそうでなければ適格でないかもしれない説明の態様は、本開示に対する従来技術として明示的にも暗黙的にも認めるものではない。
【発明の概要】
【発明が解決しようとする課題】
【0003】
概要
ある実施形態は、一般に、モバイルデバイスの画像キャプチャに関し、特に、静的映像を認識するための方法およびシステムに関する。
【課題を解決するための手段】
【0004】
ある実施形態は、コンピュータで実行される方法を含み得る。本方法は、入力映像の1つまたは複数の映像フレームの中から入力映像フレームを取得することを含むことができ、映像フレームは、シャッタ押圧指示の受信前に、およびシャッタ押圧指示の受信後に取得されている。本方法は、入力映像フレームをダウンサンプリングしてダウンサンプリングされた映像フレームを生成することをさらに含む。本方法は、ダウンサンプリングされた映像フレームを平滑化して平滑化映像フレームを生成することをさらに含む。本方法は、平滑化映像フレームの時間勾配および空間勾配を計算することをさらに含む。本方法は、平滑化映像フレーム内の1つまたは複数の候補画素パッチの中からそれぞれの候補画素パッチに対応するローカル動きベクトルを計算することによって、局所的な動きを推定することをさらに含み、ローカル動きベクトルは、空間勾配および時間勾配に基づく。本方法は、平滑化映像フレームに対応するグローバル動きベクトルを計算することによって全体的な動きを推定することをさらに含む。本方法は、対応するローカル動きベクトルおよびグローバル動きベクトルに基づいて1つまたは複数の被写体動きベクトルを計算することをさらに含む。本方法は、1つまたは複数の被写体動きベクトルをスコアマップに変換することをさらに含む。本方法は、スコアマップに基づいてエントロピースコアを計算することをさらに含む。本方法は、エントロピースコアを平滑化映像フレームに対応する被写体動きスコアにマッピングすることをさらに含む。本方法はさらに、被写体動きスコアに基づいて、静的なフレームの数を識別することを含む。本方法は、入力映像における映像フレームの数に対する静的なフレームの数の比率が静的なフレーム閾値を満たす場合に、入力映像が静的な映像であると判定すること、および、比率が静的なフレーム閾値を満たさない場合に、入力映像が動き映像であると判定することをさらに含む。本方法は、入
力映像が静的映像であると認識された場合に第1の動作を実行することをさらに含む。本方法は、入力映像が動き映像であると認識された場合に第2の動作を実行することをさらに含む。
【0005】
本方法はまた、平滑化の前にダウンサンプリングされた映像フレームをカラーからグレースケールに変換することを含み得る。ある実施形態では、平滑化映像フレームに対する空間勾配および時間勾配を計算することは、平滑化映像フレーム内の露出不足画素および平滑化映像フレーム内の露出過多画素を無効としてマークすることを含み、平滑化映像フレーム内の有効な画素について、時間勾配を計算することと、x方向の空間勾配を計算することと、y方向の空間勾配を計算することとを含む。ある実施形態では、1つまたは複数の候補画素パッチは、1つまたは複数の格子点を、動き推定のための平滑化映像フレーム内の基準点として選択することと、1つまたは複数の格子点の各々に対応する画素パッチについて画素パッチ幅および画素パッチ高さを選択することと、各画素パッチの統計を計算することと、画素パッチが閾値テクスチャ値を満たすテクスチャを有するかどうかを判定することと、画素パッチが閾値テクスチャ値を満たすテクスチャを有する場合、画素パッチを動き推定のための候補画素パッチとして識別することと、によって判定される。ある実施形態では、ローカル動きベクトルを計算することは、候補画素パッチ内の画素に対する空間勾配および時間勾配に基づいて、局所的なx動き値を計算することと局所的なy動き値を計算することとを含む。ある実施形態では、グローバル動きベクトルを計算することは、有効なローカル動きベクトルの平均に基づいてグローバル動きベクトルを計算することを含む。ある実施形態では、1つまたは複数の被写体動きベクトルを計算することは、それぞれのローカル動きベクトルからグローバル動きベクトルを減算することを含む。ある実施形態では、1つまたは複数の被写体動きベクトルをスコアマップに変換することは、平滑化映像フレーム内の画素についてそれぞれの被写体動きベクトルの大きさを正規化することを含む。ある実施形態では、スコアマップ上でエントロピースコアに反相関する被写体動きスコアを計算することは、動きがローカライズされる場合により高いスコアを平滑化映像フレームに割り当てることと、動きが平滑化映像フレーム内でグローバルである場合により低いスコアを平滑化映像フレームに割り当てることとを含む。ある実施形態では、第1の動作は、入力映像を静的なものとしてマーキングすることと、入力映像に対応するシャッタ画像をストレージ内に保持することと、入力映像をストレージから削除することとを含む。ある実施形態では、第2の動作は、入力映像に対応するシャッタ画像および入力映像をストレージに保持することを含む。
【0006】
ある実施形態は、システムを含み得る。システムは、1つまたは複数のプロセッサと、命令を記憶したメモリとを備えてもよく、命令が1つまたは複数のプロセッサによって実行されると、1つまたは複数のプロセッサに複数の動作を実行させ、複数の動作は、入力映像の1つまたは複数の映像フレームの中から入力映像フレームを取得することを含み、映像フレームは、シャッタ押下指示の受信前に、およびシャッタ押下指示の受信後に、取得されており、当該複数の動作はさらに、入力映像フレームをダウンサンプリングしてダウンサンプリングされた映像フレームを生成することと、ダウンサンプリングされた映像フレームを平滑化して平滑化映像フレームを生成することと、平滑化映像フレームの時間勾配および空間勾配を計算することと、平滑化映像フレーム内の1つまたは複数の候補画素パッチの中からそれぞれの候補画素パッチに対応するローカル動きベクトルを計算することによって、局所的な動きを推定することとを含み、ローカル動きベクトルは、空間勾配および時間勾配に基づいており、当該複数の動作はさらに、平滑化映像フレームに対応するグローバル動きベクトルを計算することによって全体的な動きを推定することと、対応するローカル動きベクトルおよびグローバル動きベクトルに基づいて1つまたは複数の被写体動きベクトルを計算することと、1つまたは複数の被写体動きベクトルをスコアマップに変換することと、スコアマップに基づいてエントロピースコアを計算することと、エントロピースコアを平滑化映像フレームに対応する被写体動きスコアにマッピングする
ことと、被写体動きスコアに基づいて静的フレームの数を識別することと、入力映像における映像フレームの数に対する静的なフレームの数の比率が静的なフレーム閾値を満たす場合に、入力映像が静的な映像であると判定すること、および、比率が静的なフレーム閾値を満たさない場合に、入力映像が動き映像であると判定することと、入力映像が静的な映像であると認識された場合に第1の動作を実行することと、入力映像が動き映像であると認識された場合に第2の動作を実行することとを含む。
【0007】
ある実施形態では、命令は、平滑化の前にダウンサンプリングされた映像フレームをカラーからグレースケールに変換することを含む複数の動作を1つまたは複数のプロセッサにさらに実行させる。ある実施形態では、平滑化映像フレームに対する空間勾配および時間勾配を計算することは、平滑化映像フレーム内の露出不足画素および平滑化映像フレーム内の露出過多画素を無効としてマークすることと、平滑化映像フレーム内の有効な画素について、時間勾配を計算することと、x方向の空間勾配を計算することと、y方向の空間勾配を計算することとを含む。ある実施形態では、1つまたは複数の候補画素パッチは、1つまたは複数の格子点を、動き推定のための平滑化映像フレーム内の基準点として選択することと、1つまたは複数の格子点の各々に対応する画素パッチについて画素パッチ幅および画素パッチ高さを選択することと、各画素パッチの統計を計算することと、画素パッチが閾値テクスチャ値を満たすテクスチャを有するかどうかを判定することと、画素パッチが閾値テクスチャ値を満たすテクスチャを有する場合に、画素パッチを動き推定のための候補画素パッチとして識別することとを含む。
【0008】
ある実施形態は、命令を有する非一時的なコンピュータ可読媒体を含むことができ、命令は1つまたは複数のコンピュータによって実行されると、当該1つまたは複数のコンピュータに複数の動作を実行させ、複数の動作は、入力映像の1つまたは複数の映像フレームの中から入力映像フレームを取得することを含み、映像フレームは、シャッタ押下指示の受信前に、およびシャッタ押下指示の受信後に、取得されており、当該複数の動作はさらに、入力映像フレームをダウンサンプリングしてダウンサンプリングされた映像フレームを生成することと、ダウンサンプリングされた映像フレームを平滑化して平滑化映像フレームを生成することと、平滑化映像フレームの時間勾配および空間勾配を計算することと、平滑化映像フレーム内の1つまたは複数の候補画素パッチの中からそれぞれの候補画素パッチに対応するローカル動きベクトルを計算することによって、局所的な動きを推定することとを含み、ローカル動きベクトルは空間勾配および時間勾配に基づいており、当該複数の動作はさらに、平滑化映像フレームに対応するグローバル動きベクトルを計算することによって全体的な動きを推定することと、対応するローカル動きベクトルおよびグローバル動きベクトルに基づいて1つまたは複数の被写体動きベクトルを計算することと、1つまたは複数の被写体動きベクトルをスコアマップに変換することと、スコアマップに基づいてエントロピースコアを計算することと、エントロピースコアを平滑化映像フレームに対応する被写体動きスコアにマッピングすることと、被写体動きスコアに基づいて静的フレームの数を識別することと、入力映像における映像フレームの数に対する静的なフレームの数の比率が静的なフレーム閾値を満たす場合に、入力映像が静的な映像であると判定すること、および、比率が静的なフレーム閾値を満たさない場合に、入力映像が動き映像であると判定することと、入力映像が静的な映像であると認識された場合に第1の動作を実行することと、入力映像が動き映像であると認識された場合に第2の動作を実行することとを含む。
【0009】
ある実施形態では、複数の動作は、平滑化の前にダウンサンプリングされた映像フレームをカラーからグレースケールに変換することをさらに含む。ある実施形態では、平滑化映像フレームに対する空間勾配および時間勾配を計算することは、平滑化映像フレーム内の露出不足画素および平滑化映像フレーム内の露出過多画素を無効としてマークすることと、平滑化映像フレーム内の有効な画素について、時間勾配を計算することと、x方向の
空間勾配を計算することと、y方向の空間勾配を計算することとを含む。ある実施形態では、1つまたは複数の候補画素パッチは、1つまたは複数の格子点を、動き推定のための平滑化映像フレーム内の基準点として選択することと、1つまたは複数の格子点の各々に対応する画素パッチに対する画素パッチ幅および画素パッチ高さを選択することと、各画素パッチの統計を計算することと、画素パッチが閾値テクスチャ値を満たすテクスチャを有するかどうかを判定することと、画素パッチが閾値テクスチャ値を満たすテクスチャを有する場合に、画素パッチを動き推定のための候補画素パッチとして識別することとを含む。ある実施形態では、ローカル動きベクトルを計算することは、候補画素パッチ内の画素に対する空間勾配および時間勾配に基づいて、局所的なx動き値を計算することと局所的なy動き値を計算することとを含む。
【図面の簡単な説明】
【0010】
【
図1】本明細書で説明する1つまたは複数の実施形態のために使用され得る例示的なシステムおよびネットワーク環境のブロック図である。
【
図2】ある実施形態に従って静的映像を認識する例示的な方法を示すフロー図である。
【
図3】ある実施形態に従う例示的な映像およびシャッタ押下タイムラインの図である。
【
図4】ある実施形態に従う静的映像を認識する例示的な方法を示すフロー図である。
【
図5】本明細書で説明する1つまたは複数の実施形態のために使用され得る例示的なデバイスのブロック図である。
【発明を実施するための形態】
【0011】
本明細書で提供されるシステムおよび方法は、いくつかの従来の画像化システムおよび方法の1つまたは複数の欠点を克服し得る。例えば、画像化デバイス(例えば、スマートフォンなど)は、ユーザが、単一のシャッタ押下イベントで映像および静止画像をキャプチャすることを可能にする。本明細書で提供されるシステムおよび方法のある実施形態は、静的な映像(例えば、静的なシーンまたは静的な被写体の映像)を認識することができ、メモリ使用、通信帯域幅使用、および/またはプロセッササイクル使用の低減を助けることができる静的な映像の認識に基づいてアクション(例えば、ストレージから静的な映像を削除するまたは取り除く)を取ることができる。特に、ある実施形態は、画像取得におけるグローバル動き(例えば、画像取得中のスマートフォンまたは他のデバイスにおける手振れ)を補償するのに役立ち、局在化された被写体動き(例えば、遊んでいる子供)を強調するためにエントロピー計算ベースのスコアリングシステムを使用することによって、動きがフレームにわたって広範に及ぶときに動きの検出を低減するのに役立ち、広範な一般的な動き(例えば、風で動いている木の葉)を弱めるのに役立つことができる。いくつかの従来の撮像システムは、静的な映像を認識する効率的かつ効果的な方法を提供しないことがあり、静的な映像を効率的にかつ効果的に認識することは、ユーザに有用であり得る。
【0012】
図1は、本明細書で説明するある実施形態で使用され得る例示的なネットワーク環境100のブロック図を示す。ある実施形態では、ネットワーク環境100は、1つまたは複数のサーバシステム、たとえば、
図1の例示におけるサーバシステム102を含む。サーバシステム102は、例えば、ネットワーク130と通信することができる。サーバシステム102は、サーバデバイス104およびデータベース106または他のストレージデバイスを含むことができる。ネットワーク環境100はまた、ネットワーク130を介して互いにおよび/またはサーバシステム102と通信することができる1つまたは複数のクライアントデバイス、たとえば、クライアントデバイス120,122,124,および126を含むことができる。ネットワーク130は、インターネット、ローカルエリア
ネットワーク(LAN)、ワイヤレスネットワーク、スイッチまたはハブ接続などのうちの1つまたは複数を含む、任意のタイプの通信ネットワークであり得る。ある実施形態では、ネットワーク130は、たとえば、ピアツーピアワイヤレスプロトコルを使用して、デバイス間のピアツーピア通信132を含み得る。
【0013】
説明を容易にするために、
図1は、サーバシステム102、サーバデバイス104、およびデータベース106に対する1つのブロックを示し、クライアントデバイス120,122,124,および126に対する4つのブロックを示す。サーバシステム102,104,および106を表すブロックは、複数のシステム、サーバデバイス、およびネットワークデータベースを表してもよく、ブロックは、示されるものとは異なる構成で提供されてもよい。例えば、サーバシステム102は、ネットワーク130を介して他のサーバシステムと通信することができる複数のサーバシステムを表すことができる。いくつかの例では、データベース106および/または他の記憶デバイスは、サーバデバイス104とは別個のサーバシステムブロック内に提供され、ネットワーク130を介してサーバデバイス104および他のサーバシステムと通信することができる。また、任意の数のクライアントデバイスが存在してもよい。
【0014】
各クライアントデバイスは、任意のタイプの電子デバイス、例えば、デスクトップコンピュータ、ラップトップコンピュータ、携帯またはモバイルデバイス、カメラ、携帯電話、スマートフォン、タブレットコンピュータ、テレビ、テレビセットトップボックスまたはエンターテインメントデバイス、ウェアラブルデバイス(例えば、ディスプレイ眼鏡またはゴーグル、ヘッドマウントディスプレイ(HMD)、腕時計、ヘッドセット、アームバンド、ジュエリーなど。)、仮想現実(VR)および/または拡張現実(AR)対応デバイス、携帯情報端末(PDA)、メディアプレーヤ、ゲーム装置等とすることができる。あるクライアントデバイスはまた、データベース106または他のストレージと同様のローカルデータベースを有し得る。他の実施形態では、ネットワーク環境100は、示される構成要素の全てを有しなくてもよく、および/または本明細書で説明される構成要素の代わりに、またはそれに加えて、他のタイプの構成要素を含む他の構成要素を有してもよい。
【0015】
様々な実施形態では、エンドユーザU1、U2、U3、およびU4は、会話における1人または複数の参加者を含んでも良く、それぞれのクライアントデバイス120,122,124,および126を使用して、サーバシステム102と、および/または互いに通信することができる。いくつかの例では、ユーザU1、U2、U3、およびU4は、それぞれのクライアントデバイスおよび/またはサーバシステム102上で実行するアプリケーションを介して、および/または、サーバシステム102上で実現されるネットワークサービス、たとえば画像共有サービス、メッセージングサービス、ソーシャルネットワークサービス、または他のタイプのネットワークサービスを介して、互いに対話することができる。たとえば、それぞれのクライアントデバイス120,122,124,および126は、1つまたは複数のサーバシステム(たとえば、サーバシステム102)との間でデータを通信することができる。
【0016】
ある実施形態では、サーバシステム102は、各クライアントデバイスがサーバシステム102および/またはネットワークサービスにアップロードされた通信コンテンツまたは共有コンテンツを受信することができるように、適切なデータをクライアントデバイスに提供することができる。いくつかの例では、ユーザは、オーディオもしくは映像会議、オーディオ、映像、もしくはテキストチャット、または他の通信方式もしくはアプリケーションを介して対話することができる。いくつかの例では、ネットワークサービスは、ユーザが様々な通信を実行し、リンクおよび関連付けを形成し、画像、画像組成物(例えば、1つまたは複数の画像、画像コラージュ、映像等を含むアルバム)、音声データ、およ
び他のタイプのコンテンツなどの共有コンテンツをアップロードおよびポストし、様々な形態のデータを受信し、および/または社会的に関連した機能を実行することを可能にする任意のシステムを含むことができる。例えば、ネットワークサービスは、ユーザが、特定のまたは複数の他のユーザにメッセージを送信すること、ネットワークサービス内の他のユーザへの関連付けの形態でソーシャルリンクを形成すること、他のユーザをユーザリスト、友達リスト、または他のユーザグループにグループ化すること、テキスト、画像、画像組成物、オーディオシーケンス、または録画を含むコンテンツ、または、ネットワークサービスのユーザの指定されたセットによるアクセスのための他のタイプのコンテンツをポストまたは送信すること、ライブ映像、オーディオ、および/またはテキスト映像会議に参加すること、またはサービスの他のユーザとチャットすることを可能にする。ある実施形態では、「ユーザ」は、システムまたはネットワークとインターフェイスする人と同様に、1つまたは複数のプログラムまたは仮想エンティティを含み得る。
【0017】
ユーザインターフェイスは、画像、画像組成物、データ、および他のコンテンツ、ならびに通信、プライバシー設定、通知、および他のデータをクライアントデバイス120,122,124,および126上で(または代替的にサーバシステム102上で)表示することを可能にすることができる。そのようなインターフェイスは、クライアントデバイス上のソフトウェア、サーバデバイス上のソフトウェア、および/またはサーバデバイス104上で実行するクライアントソフトウェアとサーバソフトウェアの組み合わせ、例えば、サーバシステム102と通信するアプリケーションソフトウェアまたはクライアントソフトウェアを使用して表示することができる。ユーザインターフェイスは、クライアントデバイスまたはサーバデバイスのディスプレイデバイス、例えば、ディスプレイスクリーン、プロジェクタなどによって表示され得る。ある実施形態では、サーバシステム上で実行されるアプリケーションプログラムは、クライアントデバイスにおいてユーザ入力を受信し、クライアントデバイスにおいて視覚データ、音声データなどのデータを出力するために、クライアントデバイスと通信することができる。
【0018】
本明細書で説明する特徴の様々な実施形態は、任意のタイプのシステムおよび/またはサービスを使用することができる。例えば、ソーシャルネットワーキングサービス、画像収集および共有サービス、支援メッセージングサービス、または(例えば、インターネットに接続された)他のネットワークサービスは、クライアントデバイスおよびサーバデバイスによってアクセスされる1つまたは複数の記載された特徴を含むことができる。任意の種類の電子デバイスは、本明細書に記載の特徴を利用することができる。ある実施形態は、本明細書で説明される1つまたは複数の特徴を、コンピュータネットワークから切断されるか、または断続的に接続されるクライアントデバイスまたはサーバデバイス上に提供することができる。いくつかの例では、ディスプレイデバイスを含むか、またはディスプレイデバイスに接続されたクライアントデバイスは、クライアントデバイスのローカルな(例えば、通信ネットワークを介して接続されない)ストレージデバイスに格納された画像を検査および表示することができ、本明細書に記載するように、ユーザに見ることができる特徴および結果を提供することができる。
【0019】
図2は、ある実施形態による、静的映像を認識するための例示的な方法200(たとえば、コンピュータで実行される方法)を示すフロー図である。静的な映像は、映像の所与のパーセンテージのフレームが本明細書で説明するように静的なものであると判定される映像を含むことができる。静的な映像はまた、映像の特定の時間部分の間静的であり、(例えば、映像は、被写体が動くとき、または画像を撮影している装置が下降または動かされるときなど、映像の先頭から最後付近まで静止している)他の時間部分で動きが発生し得る映像を含み得る。代替的に、動きが映像の特定の部分(例えば、開始、中間、または終了)において発生する映像は、特定の実施に応じて、動き映像または静的な映像として認識され得る。一般に、静的な映像を認識するためのパラメータは、本明細書で開示され
る主題の企図される適用例または実施に基づいて、追加、調整、構成、または除去され得る。そのようなパラメータは、局所的な動き推定のための閾値、被写体動きスコアのための閾値、閾値を満たす被写体動きスコアを有するフレームの、映像の他のフレームに対する比率のための閾値などを含み得る。閾値については、
図4を参照して以下でより詳細に説明する。
【0020】
ある実施形態では、方法200(および方法400)は、たとえば、
図1に示されるように、サーバシステム102上で実施され得る。他の実施形態では、方法200の一部または全部は、
図1に示されるように、1つまたは複数のクライアントデバイス120,122,124,または126上で、1つまたは複数のサーバデバイス上で、および/または、サーバデバイスとクライアントデバイスの両方上で実施され得る。説明される例では、実施システムは、1つまたは複数のデジタルハードウェアプロセッサまたは処理回路(「プロセッサ」)と、1つまたは複数の記憶デバイス(例えば、データベース106または他の記憶装置)とを含む。ある実施形態では、1つまたは複数のサーバおよび/またはクライアントの異なる構成要素は、方法200の異なるブロックまたは他の部分を実行することができる。
【0021】
ある実施形態は、ユーザ入力および/または(ユーザの許可とともに取得される)デバイスコンテキストに基づいて方法200を開始することができる。ユーザは、例えば、表示されたユーザインターフェイスから方法200の開始を選択してもよい。ある実施形態では、方法200またはその部分は、ユーザ入力を介したユーザによるガイダンスを用いて実行され得る。たとえば、ある実施形態は、静的映像認識を有効化または無効化するためのオプションをユーザに提示することを含み得る。システムは、ユーザからの明示的な許可なしに、映像および画像情報などのようなユーザ情報を使用、処理、または記憶しなくてもよい。
【0022】
ある実施形態では、方法200は、自動的に呼び出され得る(またはユーザ許可とともに自動的に呼び出され得る)。例えば、静的映像の認識は、ユーザが写真を撮影しているときに自動的に実行されてもよく、写真に関連する映像をユーザに提示するかどうかを判定するために使用されてもよい(例えば、映像が静的であると認識される場合、映像は、提示されるなくても記憶されるなくてもよく、映像が動き映像であると判定される場合、例えば、ユーザが映像が関連付けられている写真を見るとき、映像は、記憶され、ユーザに提示されることができる)。
【0023】
ある実施形態では、方法200または方法の一部は、デバイスによって自動的に開始され得る。例えば、方法(またはその部分)は、周期的に実行され得るか、または、1つまたは複数の特定の事象または条件の発生に基づいて、実行され得る。例えば、そのような事象または条件は、ユーザが取得し、デバイス(例えば、ユーザデバイス)によって受信され、アップロードされ、またはそうでなければアクセス可能な所与の数の写真、方法200の最後の実行から経過した所定の時間、および/または方法200を実施するデバイスの設定において指定することができる1つまたは複数の他のイベントまたは条件の発生を含み得る。ある実施形態では、そのような条件は、ユーザの(ユーザの同意を伴うデバイスまたは方法によってアクセス可能な)格納されたカスタム選好においてユーザによって前もって指定され得る。いくつかの例では、デバイス(サーバまたはクライアント)は、(ユーザの同意が受信された場合)電子会話メッセージを受信する1つまたは複数のアプリケーションへのアクセスで方法200を実行することができる。別の例では、カメラ、携帯電話、タブレットコンピュータ、ウェアラブルデバイス、または他のクライアントデバイスは、映像および静止画を取得することができ、方法200を実行することができる。加えて、または代替的に、クライアントデバイスは、ネットワークを介してサーバに1つまたは複数の映像を送信することができ、サーバは、方法200を使用して映像を処
理することができる。方法200に関する上記説明は、方法400にも当てはまる。
【0024】
202において、フレームを含む入力映像が受信される。たとえば、映像は、ユーザに関連付けられたモバイルデバイスなどのクライアントデバイスによってキャプチャされ得る。映像は、フレームをキャプチャするためにカメラまたは他の撮像装置のシャッタ押下に応答してキャプチャされ得る。例えば、ユーザは、スマートフォンまたは他のモバイルデバイス上でカメラアプリケーションを開くことができる。カメラアプリケーションは、シャッタ押下指示が受信される前に映像画像の取得を開始し、シャッタ押下指示が受信された後に映像をキャプチャし続けることができる。したがって、映像は、スマートフォン上で実行されるカメラアプリケーション内でシャッタ押下の直前および直後の瞬間を取り込む。処理は204へ進む。
【0025】
例えば、
図3に示されるように、映像302は、シャッタ押下表示310の前にキャプチャされたフレーム(304、306)と、シャッタ押下表示310の後にキャプチャされたフレーム(308)とを含むことができる。映像はまた、カメラまたは他の画像取得デバイス内で同様の方法でキャプチャされ得る。前処理は、ダウンサンプリング、グレースケールへの変換、および/または平滑化を含むことができる。
【0026】
204では、入力映像のフレームが前処理される。例示的な前処理の詳細は、
図4の404~408に関連して以下で説明する。処理は206へ進む。
【0027】
206において、局所的な動きが推定される。局所的な動きは、ひらひらしている葉に関連する動きなど、映像のフレームのサブセットの一部である動きを含む。たとえば、映像フレームの1つまたは複数の画素パッチ(すなわち、画素のセクションまたはグループ)内の局所的な動きの推定を表すローカル動きベクトルを計算することができる。例示的な局所的な動き推定の詳細は、
図4の410~424において以下で説明される。処理は208へ進む。
【0028】
208において、全体的な動きが補償される。全体的な動きは、映像のフレームの全部または大部分において発生する動きを含み得る。全体的な動きは、手の動きから生じ得る。例えば、スマートフォンで写真を撮影しているユーザは、手振れ、スマートフォンの偶発的な落下などに起因して画像をキャプチャする前、間、および/または後に何らかの手の動きを有することがある。ユーザの手の動きは、シャッタ押下前からシャッタ押下後までの期間をカバーする映像内で全体的な動きとして現れることがある。グローバル動き補償は、全体的な動きの影響を低減または排除し、グローバル動きアーチファクトが補償されない場合よりも、システムが静的映像をより正確に認識することを可能にする。例示的なグローバル動き補償の詳細は、
図4の426~428で以下で説明する。処理は210へ進む。
【0029】
ブロック210において、被写体動きスコアは、グローバル動き補償によって調整されたローカル動き推定値のエントロピーに基づいて計算される。エントロピーベースの被写体動きスコア計算の詳細は、
図4の430-432で以下で説明する。処理は212へ進
む。
【0030】
212では、被写体動きスコアが正規化される。処理は214へ進む。
ステップ214では、入力映像が静的な映像であるか否かを判定する。判定は、静的なシーンまたは被写体の映像を認識し、静的なシーンまたは被写体の映像の(または、静的映像認識がない場合の動き映像の)表示を提供するために、本明細書で説明されるシステムまたは方法を使用することを含み得る。処理は、判定に基づいて216または218に進む。
【0031】
入力映像が静的映像でない場合、216において、入力映像およびフレームの両方がユーザに提供される。ある実施形態では、入力映像およびフレームの両方がストレージに含まれる。入力映像が静的映像である場合、218において、入力映像ではなくフレームがユーザに提供される。幾つかの実施形態では、入力映像ではなくフレームはストレージに保たれる。
【0032】
図2および
図4では、様々なブロック(例えば、ブロック202~218および402~440それぞれ)が、順次実行されるものとして示されている。しかしながら、これらのブロックのうちの1つまたは複数は、特定の実施に適合させるために都合よく再配列されてもよく、これらのブロックまたはその一部は、いくつかの実施において同時に実行され得ることを理解されたい。いくつかの例では、様々なブロックが排除され、追加のブロックに分割され、および/または他のブロックと組み合わされ得ることも理解されよう。次いで、テーブルを使用して、テーブル内の値に基づいて閾値を決定することができる。
【0033】
図4は、ある実施形態にしたがって、静的映像を認識する例示的な方法を示すフロー図である。
図4において、402および412は、データまたはデータストレージであり、方法を例示することを補助するために破線で示されている。
【0034】
動作中、映像フレーム402が得られる。入力映像フレームは、映像の1つまたは複数の映像フレームの中から取得され得、映像フレームは、シャッタ押下指示の受信前に、およびシャッタ押下指示の受信後に取得された。例えば、映像フレームは、シャッタ押下表示の前後2秒のように、シャッタ押下表示の前後の所定の時間量、キャプチャされ得る。
【0035】
404では、映像フレームがダウンサンプリングされる。ダウンサンプリングは、処理時間を改善し、メモリ使用量を低減するために、映像フレームのサイズ(ファイルサイズ、フレームサイズ、映像解像度など)を低減することなどを含み得る。処理は406へ進む。
【0036】
406において、映像フレームはグレースケールに変換される。カラーは、静的な映像を認識するのに必要ではない可能性があるため、グレースケールに変換することは、処理時間を高速化し、メモリ使用量を低減するのに役立ち得る。処理は408へ進む。
【0037】
408において、ダウンサンプリングされたグレースケール画像は、以下に記載するように平滑化される。
【0038】
404~408は、前処理を含むことができる。たとえば、入力映像フレーム402は、高解像度、たとえば、4032×3024であり得る。計算を低減するために、入力映像フレーム402は、まずはるかに小さいフレームI、例えば64×48にダウンサンプリングされる。入力映像フレームは、場合によっては、バイエル赤色緑色青色(RGB)フォーマットまたはYUVフォーマットであり得る。グレースケールフレームは、動きがあるかどうかを検出するために使用され得るので、カラー映像フレームは、グレースケールフレームに変換され得る。例えば、64×48バイエルフレームが取得され、ダウンサンプリングされる。バイエルフレームは、R、Gr、Gb、Bチャネルを平均化することによってグレースケール画像に変換することができる。12/14/16ビットバイエルデータを8ビットに迅速に変換し、ダイナミックレンジを保持するために、バイエルフレームの平均値が計算され、所望の平均値/平均値によって画素がスケーリングされ、ここで、所望の平均値は、手動で選択された値、例えば、所望の平均値=128である。
【0039】
画像ノイズに対する技術のロバスト性を改善するために、入力フレームIをガウスフィ
ルタによって平滑化することができ、得られたフレームをI_smoothedと表す。ガウス平滑化された前のフレームは、I_smoothed_previousと表される。
【0040】
前処理の後、例えば、ブロック410~424において、局所的な動きが推定される。処理は410へ進む。
【0041】
410において、時間勾配は、フレームバッファ412からの前のフレームおよび現在の映像フレーム402を使用して計算される。414において、現在の映像フレームを使用して空間勾配が計算される。
【0042】
ある実施形態では、局所的な動き推定を加速するために、入力フレームの空間勾配および時間勾配を事前計算することができる。例えば、空間勾配および時間勾配は、以下のように計算することができる。
【0043】
全ての露光過多画素(例えば閾値を超える強度を有する画素を、例えば、over_expose_threshold)および露光不足画素(例えば、閾値未満の強度を有する画素を、例えばunder_expose_threshold)を無効画素としてマークする。
【0044】
under_expose_threshold≦I_smoothed(x,y)≦over_expose_thresholdであり、
under_expose_threshold<I_smooothed_previous(x,y)<over_expose_thresholdで
あり、
under_expose_threshold<I_smoothed(x+1,y)<over_expose_thresholdであり、
under_expose_threshold<I_smoothed(x-1,y)<over_expose_thresholdであり、
under_expose_threshold<I_smoothed(x,y+1)<over_expose_thresholdであり、
under_expose_threshold<I_smoothed(x,y-1)<over_exposed_thresholdであるな
らば、Valid(x,y)=1である。
【0045】
他の場合では、Valid(x,y)=0である。
Valid(x,y)=1を有する有効な画素について、3つの勾配I_t(x,y),I_x(
x,y),I_y(x,y)を以下のように計算する。
【0046】
時間勾配、すなわち、I_smoothedとI_smoothed_previousとの間の画素差は、I_t(x,y)=I_smoothed(x,y)-I_smoothed_previous(x,y)として表される。
【0047】
x方向に沿ったI_smooothedの空間勾配は、I_x(x,y)=(I_smoothed(x+1,y
)-I_smoothed(x-1,y))/2と表される。
【0048】
y方向に沿ったI_smoothedの空間勾配は、I_y(x,y)=(I_smoothed(x,y+1
)-I_smoothed(x,y-1))/2として表される。
【0049】
Valid(x,y)=0の無効画素について、集合I_t(x,y)=I_x(x,y)=I_y(x,y)=0と設定する。
【0050】
処理は416に進む。
416において、点のグリッドが生成され、418において、各グリッドの点について画素のパッチが決定される。
【0051】
例えば、フレーム内のiが1とgridWidthの間であり、jが1とgridHeightの間である
点p(ij)のグリッドが、局所的な動き推定を行うために計算される。グリッドを計算する際、各辺におけるある割合のマージン、例えば6.25%を除外することができる。
格子点は、等間隔に、例えばx方向に沿って4画素離間し、y方向に沿って4画素離間することができる。例えば、フレームサイズが64×48である場合、4辺の64×6.2
5%=4画素を除外し、gridHeight=11によってgridWidth=15のグリッドを残す。
【0052】
処理は420へ進む。
420では、統計が画素の各パッチについて計算される。例えば、
グリッド内の各点p(i,j)について、I_smoothedからpatchWidth×patchHeight(
例えば、patchWidth=patchHeight=7)を得る。
【0053】
まず、このパッチの統計のセットを収集する。
Ixxは、パッチ内の全ての画素に対するI_x(x,y)×I_x(x,y)の平均である。
【0054】
Iyyは、パッチ内の全ての画素に対するI_y(x,y)×I_y(x,y)の平均である。
【0055】
Ixyは、パッチ内の全ての画素に対するI_x(x,y)×I_y(x,y)の平均である。
【0056】
Ixtは、パッチ内の全ての画素に対するI_x(x,y)×I_t(x,y)の平均である。
【0057】
Iytは、パッチ内の全ての画素に対するI_y(x,y)×I_t(x,y)の平均である。
【0058】
統計の計算は積分画像を使用することによって最適化することができる。
処理は422へ進む。
【0059】
422において、各パッチがテクスチャ閾値を満たすテクスチャを有するかどうかが判定される。テクスチャレスパッチを使用して動きを検出することは有用ではないので、パッチのテクスチャを確認することは有用であり得る。また、エッジ上のパッチは、動きがエッジ検出に沿って任意であり得るため、使用するのに役立たない可能性がある。結果として、テクスチャがテクスチャ閾値を満たさない場合、ある実施形態では、方法400は、テクスチャがテクスチャ閾値を満たすまでステップ402から開始する。適切なテクスチャのチェックは、以下を含むことができる。
【0060】
上記のパッチのヘッセ行列は、2×2行列である。
{Ixx Ixy
Ixy Iyy}
この行列の決定基はdetと表される。この行列は、2つの固有値を有する。大きい方をmax_eigenvalueとし、小さい方をmin_eigenvalueとする。
【0061】
パッチは、十分なテクスチャを有するとみなされるべき以下の条件を満たさなければならない。
det>0、かつ、
min_eigenvalue>EigenvalueThreshold×frameWidth×frameHeight、かつ、
max_eigenvalue<EigenvalueRatioThreshold×min_eigenvalue
EigenvalueThresholdは手動で調整することができ、典型的な値は0.0025である。
【0062】
EigenvalueRatioThresholdも手動で調整することができ、典型的な値は5である。
パッチが上記条件チェックに失敗すると、そのパッチの動きベクトルは利用不能に設定され、このパッチは以下のステップで除外される。
motion_x=利用不能である。
motion_y=利用不能である。
【0063】
テクスチャ閾値を満たすテクスチャを有するパッチに対して、処理は424に進む。
424において、対応するパッチの局所的な動きを推定するためにローカル動きベクトルが計算される。ローカル動きベクトルは、平滑化映像フレーム内の1つまたは複数の候補画素パッチの中からそれぞれの候補画素パッチに対応することができ、ローカル動きベクトルは、空間勾配および時間勾配に基づく。例えば、
motion_x=(-Ixt×Iyy-Iyt×Ixy)/det
motion_y=(Ixt×Ixy-Iyt×Ixx)/det
処理は426へ進む。
【0064】
426において、グローバル動きベクトルが、全体的な動きを推定するために計算される。ある実施形態では、グローバル動きベクトルは平滑化映像フレームに対応する。ユーザがモバイルデバイス上で写真または映像をキャプチャするとき、多くの場合、小さな手の動きがあるので、現在のフレームと前のフレームとの間の全体的なカメラの動きの推定は、全体的な動きを補償するのに有用である。カメラの動きは、並進ベクトル[global_motion_x,global_motion_y]としてモデル化され、前のステップからの有効な動きベクトルを平均化することによって推定され得る。代替的には、より多くの計算が利用可能である場合、アフィンモデルまたはホモグラフィモデルをランダムサンプルコンセンサス(RAN SAC)と共に使用して、全体的な動きをより正確に推定することができる。処理は428へ進む。
【0065】
428において、被写体動きベクトルは、ローカル動きベクトルからグローバル動きベクトルを減算することによって計算される。例えば、
動きベクトルから全体的な動きを減算して、被写体動きベクトルを得る。
[subject_motion_x,subject_motion_y]=[motion_x-global_motion_x,motion_y-global_motion_y]を得る。
【0066】
処理は430へ進む。
430において、各パッチのスコアが計算され、スコアマップに入れられる。例えば、
各パッチについて動きベクトルの大きさを0から1の間のスコアに変換し、以下のようにスコアマップを作成する。
score(ij)=1-exp(-(subject_motion_x(i,j)×subject_motion_x(i,j)+subject_motion_y(i,j)×subject_motion_y(i,j))/motion_param)
motion_paramは、手動で決定することができ、ある実施形態では、典型的な値は3である。
【0067】
処理は432へ進む。
432において、エントロピーベースの被写体動きスコアが映像フレームについて計算される。被写体動きスコアは、対応するローカル動きベクトルおよびグローバル動きベクトルに基づくことができる。例えば、
まず、スコアマップのエントロピースコアを以下のように計算する。
【0068】
全てのkおよびlについて、total_score=sum(score(k,l)+Epsilon)。
p(k,l)=(score(k,l)+Epsilon)/total_score。
entropy=-sum(Log[p(k,l)]×p(k,l))
Epsilonは、0によって引き起こされる問題を避けるため少数とすることができる。
【0069】
次いで、エントロピーを、非線形マッピング関数を使用して、subject_motion_scoreが0と1との間である平滑化映像フレームに対応するsubject_motion_scoreににマッピングする。
【0070】
subject_motion_score=1-exp(entropy×subject_mootion_param1)×subject_motion_param2
subject_motion_param1およびsubject_motion_param2は、手動で調整される2つのパラメータである。
【0071】
この被写体動きスコア(subject_motion_score)は、シーン内に大きな被写体動きがある場合に大きくなる。シーンが静止しているとき、それは0に非常に近い。
【0072】
処理は434へ進む。
434において、1つまたは複数のフレームに対する被写体動きスコアが正規化される。例えば、
各映像について、静的映像認識のために処理された(フレーム番号iを有する)全てのフレームが、被写体動きスコア(i)を受け取った。被写体動きスコアの最大値は、以下のように表される。
【0073】
全てのiについて、subject_motion_score_max=max(subject_motion_score(i))
subjct_motion_score_iが小さすぎない場合、subject_motion_score_maxによりsubject_motion_score_iを正規化する。例えば、
subject_motion_score_i>subject_motion_min_thresholdであるとき、normalized_subject_motion_score_i=subject_motion_score_i/subject_motion_score_max
そうでないとき、normalized_subject_motion_score_i=subject_motion_score_i
処理は436へ進む。
【0074】
436において、正規化された被写体動きスコアが閾値化される。例えば、
低い正規化された被写体動きスコアを有するフレームの数をカウントする。
【0075】
number_of_static_frames=count(normalized_subject_motion_score_i<normalized_subject_motion_score_threshold)
処理は438へ進む。
【0076】
438において、静的なものとして識別された映像フレームの、映像内の全てのフレームに対する比率が、静的なフレーム比率閾値と比較される。例えば、
number_of_static_frames/number_of_all_frames>static_frame_ratio_thresholdで
ある場合、映像を静的な映像としてマークし、そうでなければ映像を静的な映像としてマークしない。
【0077】
処理は440へ進む。
440では、映像が静的な映像として認識されたか否かに基づいてアクションが取られる。例えば、映像が静的であると認識された場合には、1つの動作が行われ、映像が静的でないと認識された場合には、別の動作が行われる。いくつかの例では、映像が静的であると認識されるとき、映像は、静的であるとマークされ得、映像に対応するシャッタ画像(または静止画像)はストレージ内に保持され得、映像はストレージから削除され得る。映像が静的でないと認識されるとき、シャッタ画像(または静止画像)および映像の両方は、ストレージ(たとえば、メモリ)内に保持され得、いくつかの例では、映像は、ユーザに提示され得、たとえば、ユーザデバイスまたは他のデバイスのディスプレイデバイス
上に連続フレームとして表示され得る。
【0078】
図5は、本明細書で説明する1つまたは複数の特徴を実施するために使用され得る例示的なデバイス500のブロック図である。一例では、デバイス500は、コンピュータデバイス、たとえば、サーバデバイス(例えば、
図1のサーバデバイス104)を実現し、本明細書で説明する適切な方法の実施を行なうために使用され得る。デバイス500は、任意の適切なコンピュータシステム、サーバ、または他の電子もしくはハードウェアデバイスとすることができる。例えば、デバイス500は、メインフレームコンピュータ、デスクトップコンピュータ、ワークステーション、ポータブルコンピュータ、または電子デバイス(携帯デバイス、モバイルデバイス、携帯電話、スマートフォン、タブレットコンピュータ、テレビ、テレビセットトップボックス、携帯情報端末(PDA)、メディアプレーヤ、ゲーム装置、ウェアラブルデバイスなど。)とすることができる。ある実施形態では、デバイス500は、プロセッサ502と、メモリ504と、I/Oインターフェイス506とを含む。
【0079】
プロセッサ502は、プログラムコードを実行し、デバイス500の基本動作を制御する1つまたは複数のプロセッサおよび/または処理回路であり得る。「プロセッサ」は、データ、信号または他の情報を処理する任意の適切なハードウェアおよび/またはソフトウェアシステム、メカニズムまたはコンポーネントを含む。プロセッサは、汎用中央処理ユニット(CPU)、複数の処理ユニット、機能を達成するための専用回路、または他のシステムを有するシステムを含み得る。処理は、特定の地理的位置に限定される必要はなく、または時間的制限を有する必要はない。例えば、プロセッサは、「リアルタイム」、「オフライン」、「バッチモード」等でその機能を実行することができる。処理の部分は、異なる(または同じ)処理システムによって、異なる時間および異なる場所で実行されてもよい。コンピュータは、メモリと通信する任意のプロセッサであり得る。
【0080】
メモリ504は、典型的には、プロセッサ502によるアクセスのためにデバイス500内に提供され、プロセッサによる実行のための命令を記憶するのに適した任意の適切なプロセッサ可読記憶媒体、例えば、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、電気的消去可能読み取り専用メモリ(EEPROM)、フラッシュメモリなどであり得、また、プロセッサ502から分離して、および/またはプロセッサ502と一体化して配置され得る。メモリ504は、オペレーティングシステム508、1つまたは複数のアプリケーション510、たとえば、静的映像認識アプリケーション512、他のアプリケーション514、およびアプリケーションデータ520を含む、プロセッサ502によってサーバデバイス500上で動作するソフトウェアを記憶することができる。ある実施形態では、アプリケーション510は、プロセッサ502が本明細書で説明された機能、たとえば、
図2および/または
図4の方法の一部または全てを実行することを可能にする命令を含み得る。
【0081】
他のアプリケーション514(またはエンジン)も、または代替として、アプリケーション510、たとえば、カメラアプリケーション、電子メールアプリケーション、SMSおよび他の電話通信アプリケーション、ウェブブラウザアプリケーション、メディアディスプレイアプリケーション、通信アプリケーション、ウェブホスティングエンジンまたはアプリケーション、ソーシャルネットワーキングエンジンまたはアプリケーションなどに含まれ得る。あるいは、メモリ504内の任意のソフトウェアは、任意の他の適切な記憶場所またはコンピュータ可読媒体に記憶することができる。さらに、メモリ504(および/または他の接続された記憶装置)は、電子会話メッセージ、電子会話メッセージのグループ、会話フレーミング要素、ユーザデータおよび選好、ならびに本明細書で説明する特徴で使用される他の命令およびデータなどのアプリケーションデータを記憶することができる。メモリ504および任意の他のタイプのストレージ(磁気ディスク、光ディスク
、磁気テープ、または他の有形媒体)は、「ストレージ」または「ストレージデバイス」と見なすことができる。例えば、アプリケーションデータ520は、画像522および映像524を含むことができる。
【0082】
I/Oインターフェイス506は、デバイス500を他のシステムおよびデバイスとインターフェイスすることを可能にする機能を提供することができる。例えば、ネットワーク通信デバイス、ストレージデバイス(例えば、メモリおよび/またはデータベース106)、および入出力デバイスは、I/Oインターフェイス506を介して通信することができる。ある実施形態では、I/Oインターフェイスは、入力デバイス(キーボード、ポインティングデバイス、タッチスクリーン、マイクロフォン、カメラ、スキャナなど。)および/または出力デバイス(ディスプレイデバイス、スピーカデバイス、プリンタ、モータ、触覚出力デバイスなど。)を含むインターフェイスデバイスに接続することができる。オーディオ入力/出力デバイス530は、本明細書で説明するように、オーディオ入力を受信し、オーディオ出力(たとえば、ボイスインターフェイス出力)を提供するために使用され得る入力および出力デバイスの例である。音声入力/出力デバイス530は、ローカル接続(例えば、ワイヤードバス、ワイヤレスインターフェイス)を介して、および/またはネットワーク接続を介してデバイス500に接続することができ、かつ任意の適切なデバイスであり、そのいくつかの例は以下にされる。
【0083】
説明を容易にするために、
図5は、プロセッサ502、メモリ504、I/Oインターフェイス506、ならびにソフトウェアブロック508および510の各々について1つのブロックを示す。これらのブロックは、1つまたは複数のプロセッサまたは処理回路、オペレーティングシステム、メモリ、I/Oインターフェイス、アプリケーション、および/または、ソフトウェアモジュールを表し得る。他の実施形態では、デバイス500は、示される構成要素の全てを有する必要はなく、および/または、本明細書に示される構成要素の代わりに、またはそれに加えて、他のタイプの構成要素を含む他の構成要素を有してもよい。サーバシステム102は、本明細書のいくつかの実施形態において説明される動作を実行するものとして説明されるが、サーバシステム102または同様のシステムの任意の好適なコンポーネントまたはコンポーネントの組み合わせ、または、そのようなシステムに関連する任意の好適なプロセッサまたは複数のプロセッサは、説明される動作を実行することができる。
【0084】
クライアントデバイスはまた、本明細書で説明される特徴、たとえば、
図1に示されるクライアントデバイス120~126を実現し、および/またはそれらとともに使用することができる。例示的なクライアントデバイスは、デバイス500として、いくつかの同様の構成要素、たとえば、プロセッサ502、メモリ504、およびI/Oインターフェイス506を含むコンピュータデバイスであり得る。クライアントデバイスに適したオペレーティングシステム、ソフトウェア、および、アプリケーション、例えば、画像管理ソフトウェア、クライアントグループ通信アプリケーションソフトウェアなどは、メモリにおいて提供され、プロセッサによって使用され得る。クライアントデバイスのためのI/Oインターフェイスは、入力デバイスおよび出力デバイス、例えば、画像または映像をキャプチャするためのカメラ、音を出力するためのオーディオスピーカデバイス、画像または映像を出力するためのディスプレイデバイス、または他の出力デバイスと同様に、ネットワーク通信デバイスに接続され得る。
【0085】
本明細書で説明する1つまたは複数の方法(たとえば、方法200および400)は、コンピュータ上で実行され得るコンピュータプログラム命令またはコードによって実現され得る。たとえば、コードは、1つまたは複数のデジタルプロセッサ(たとえば、マイクロプロセッサまたは他の処理回路)によって実施することができ、非一時的コンピュータ可読媒体(たとえば、記憶媒体)を含むコンピュータプログラム製品、たとえば、磁気、
光学、電磁、または半導体または固体メモリを含む半導体記憶媒体、磁気テープ、取り外し可能なコンピュータディスケット、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、フラッシュメモリ、リジッド磁気ディスク、光ディスク、ソリッドステートメモリドライブなどに格納することができる。プログラム命令はまた、例えばサーバ(例えば、分散システムおよび/またはクラウドコンピューティングシステム)から配信されるサービス(SaaS)としてのソフトウェアの形態で、電子信号に含まれ、かつ、電子信号として提供されることもできる。代替的には、1つまたは複数の方法は、ハードウェア(論理ゲートなど)で、またはハードウェアとソフトウェアとの組み合わせで実現され得る。ハードウェアの例は、プログラム可能なプロセッサ(例えば、フィールドプログラマブルゲートアレイ(FPGA)、複合プログラマブルロジックデバイス)、汎用プロセッサ、グラフィックプロセッサ、特定用途向け集積回路(ASICs)などであり得る。1つまたは複数の方法は、システム上で実行するアプリケーションの一部または構成要素として、または他のアプリケーションおよびオペレーティングシステムとともに実行するアプリケーションまたはソフトウェアとして実行することができる。
【0086】
本明細書で説明する1つまたは複数の方法は、任意のタイプのコンピューティングデバイス上で実行することができる独立型プログラム、ウェブブラウザ上で実行されるプログラム、モバイルコンピューティングデバイス(例えば、携帯電話、スマートフォン、タブレットコンピュータ、ウェアラブルデバイス(ウォッチ、アームバンド、ジュエリー、ヘッドウェア、ゴーグル、眼鏡など)、ラップトップコンピュータなど)上で実行されるモバイルアプリケーション(「app」)で実行することができる。一例では、クライアント/サーバアーキテクチャを使用することができ、例えば、(クライアントデバイスとして)モバイルコンピューティングデバイスは、ユーザ入力データをサーバデバイスに送信し、(例えば、表示のために)出力のための最終出力データをサーバから受信する。別の例では、全ての計算は、モバイルコンピューティングデバイス上のモバイルアプリ(および/または他のアプリ)内で実行することができる。別の例では、モバイルコンピューティングデバイスと1つまたは複数のサーバデバイスとの間で計算を分割することができる。
【0087】
あるいは、メモリ内の任意のソフトウェアは、任意の他の適切な記憶場所またはコンピュータ可読媒体に記憶することができる。さらに、メモリ(および/または他の接続された記憶装置)は、1つまたは複数のメッセージ、1つまたは複数の分類、電子エンサイクロペディア、辞書、類語辞典、知識ベース、メッセージデータ、文法、ユーザ選好、および/または本明細書に記載の特徴で使用される他の命令およびデータを記憶することができる。メモリおよび任意の他のタイプのストレージ(磁気ディスク、光ディスク、磁気テープ、または他の有形媒体)は、「ストレージ」または「ストレージデバイス」とみなすことができる。
【0088】
I/Oインターフェイスは、サーバデバイスを他のシステムおよびデバイスとインターフェイスすることを可能にする機能を提供することができる。インターフェイスされたデバイスは、デバイスの一部として含めることができ、または別個であり、デバイスと通信することができる。例えば、ネットワーク通信デバイス、ストレージデバイス(例えば、メモリおよび/またはデータベース106)、および入出力デバイスは、I/Oインターフェイスを介して通信することができる。ある実施形態では、I/Oインターフェイスは、入力デバイス(キーボード、ポインティングデバイス、タッチスクリーン、マイクロフォン、カメラ、スキャナ、センサなど。)および/または出力デバイス(ディスプレイデバイス、スピーカデバイス、プリンタ、モータなど。)などのインターフェイスデバイスに接続することができる。
【0089】
I/Oインターフェイスに接続できるインターフェイスされたデバイスのいくつかの例
は、コンテンツ、たとえば、画像、映像、および/または本明細書で説明する出力アプリケーションのユーザインターフェイスを表示するために使用することができる1つまたは複数のディスプレイデバイスを含むことができる。ディスプレイデバイスは、ローカル接続(例えば、ディスプレイバス)を介して、および/またはネットワーク接続を介してデバイスに接続することができ、任意の適切なディスプレイデバイスとすることができる。ディスプレイデバイスは、LCD、LED、またはプラズマディスプレイスクリーンのような任意の適切なディスプレイデバイス、CRT、テレビ、モニタ、タッチスクリーン、3Dディスプレイスクリーン、または他の視覚ディスプレイデバイスを含み得る。例えば、ディスプレイデバイスは、モバイルデバイス上に設けられる平坦なディスプレイ画面、ゴーグルもしくはヘッドセットデバイス内に設けられる複数のディスプレイ画面、またはコンピュータデバイスのためのモニタ画面とすることができる。
【0090】
I/Oインターフェイスは、他の入力および出力デバイスとインターフェイスすることができる。いくつかの例は、画像をキャプチャすることができる1つまたは複数のカメラまたは他の撮像装置を含む。ある実施形態は、(例えば、キャプチャされた画像、音声コマンドなどの一部として)音をキャプチャするためのマイクロフォン、音を出力するためのオーディオスピーカデバイス、または他の入力デバイスおよび出力デバイスを提供することができる。
【0091】
説明は、その特定の実施形態に関して説明されてきたが、これらの特定の実施形態は、例示にすぎず、限定的ではない。実施形態において示される概念は、他の例および実施形態に適用され得る。
【0092】
本明細書で説明するある実施形態が、ユーザに関する個人情報(例えば、ユーザデータ、ユーザのソーシャルネットワークに関する情報、その場所におけるユーザの場所および時間、ユーザのバイオメトリック情報、ユーザの活動および人口統計情報)を収集または使用し得る状況では、ユーザは、情報が収集されるかどうか、個人情報が記憶されるかどうか、個人情報が使用されるかどうか、および情報がどのようにユーザに関して収集され、記憶され、使用されるかを制御する1つまたは複数の機会を提供される。すなわち、本明細書で説明されるシステムおよび方法は、特に、関連するユーザからそのようにするための明示的な許可を受けて、ユーザ個人情報を収集し、記憶し、および/または使用する。例えば、ユーザは、プログラムまたは特徴が、その特定のユーザまたはそのプログラムまたは特徴に関連する他のユーザに関するユーザ情報を収集するかどうかに関する制御を提供される。個人情報が収集されるべき各ユーザには、そのユーザに関連する情報収集の制御を可能にし、情報が収集されるかどうか、および情報のどの部分が収集されるべきかに関する許可または認可を提供するための1つまたは複数のオプションが提示される。例えば、ユーザは、通信ネットワークを介して1つまたは複数のそのような制御オプションを提供され得る。さらに、特定のデータは、個人的に識別可能な情報が取り除かれるように、保存または使用される前に、1つまたは複数の方法で処理されてもよい。一例として、ユーザのアイデンティティは、個人的に識別可能な情報を判定できないように取り扱われ得る。別の例として、ユーザの特定の位置を判定することができないように、ユーザの地理的位置は、より大きな領域に一般化され得る。
【0093】
本開示で説明する機能ブロック、動作、特徴、方法、デバイス、およびシステムは、当業者に知られているように、システム、デバイス、および機能ブロックの異なる組み合わせに統合または分割され得ることに留意されたい。任意の適切なプログラミング言語およびプログラミング技術を使用して、特定の実施形態のルーチンを実現することができる。異なるプログラミング技法、例えば手続き的またはオブジェクト指向の技法を採用することができる。ルーチンは、単一の処理装置または複数のプロセッサ上で実行することができる。ステップ、動作、または計算は、特定の順序で提示され得るが、順序は、異なる特
定の実施形態で変更され得る。ある実施形態では、本明細書で順次に示される複数のステップまたは動作は、同時に実行され得る。