(57)【要約】  クライアントデバイスは、表示のために中間デバイスからビデオ入力ストリームを入手する。クライアントデバイスは、ビデオ入力ストリームが画面部分に対応するテンプレートと一致すると決定するために、ビデオ入力ストリームを分析する。テンプレートと一致したビデオ入力ストリームに基づいて、ビデオ出力ストリームが、生成され、ディスプレイ上に提示されるようにされる。いくつかの例示的な実施形態においては、分析は、クライアントデバイスが、中間デバイスを介してコンテンツソースから受信されたビデオコンテンツを置換している間、実行される。例えば、全国コンテンツプロバイダからセットトップボックスを介してスマートＴＶに送信されたコマーシャルは、ターゲットコマーシャルに置換することができる。置換の間、セットトップボックスによって生成されたメニューを検出することができ、置換ビデオは、メニューを含むように、スマートＴＶによって変更することができる。
2018537925.tif 000002
【特許請求の範囲】
【請求項１】
ディスプレイと、
命令および複数のテンプレートを記憶するメモリと、
１つまたは複数のプロセッサであって、
コンテンツプロバイダおよび中間デバイスから、コンテンツを含むビデオ入力ストリームを入手する動作と、
前記複数のテンプレートのうちのテンプレートを識別する動作であって、前記識別されたテンプレートは、前記中間デバイスおよび第１の画面部分と関連付けられる、動作と、
前記識別されたテンプレートを入手する動作と、
前記ビデオ入力ストリームのフレームが前記識別されたテンプレートに対応すると決定するために、前記ビデオ入力ストリームを前記識別されたテンプレートと比較する動作と、
前記比較の結果に基づいて、前記第１の画面部分内では前記識別されたテンプレートに対応し、少なくとも第２の画面部分内では前記ビデオ入力ストリームと異なる、ビデオ出力ストリームを生成する動作と、
前記ビデオ出力ストリームが前記ディスプレイ上に提示されるようにする動作と
を含む動作を実行するように前記命令によって構成された、１つまたは複数のプロセッサと
を備えるシステム。
【請求項２】
前記動作が、
前記ビデオ入力ストリームのフィンガプリントを生成する動作と、
前記フィンガプリントに基づいて、前記コンテンツプロバイダによって提供されたビデオコンテンツを識別する動作と、
前記コンテンツプロバイダによって提供された前記ビデオコンテンツの前記識別に基づいて、置換ビデオコンテンツを識別する動作と
をさらに含み、
前記生成されたビデオ出力ストリームが、前記識別された置換ビデオコンテンツの少なくとも部分を含む、
請求項１に記載のシステム。
【請求項３】
前記コンテンツプロバイダが、ケーブルテレビ局である、請求項１に記載のシステム。
【請求項４】
前記中間デバイスが、セットトップボックスである、請求項１に記載のシステム。
【請求項５】
前記システムが、スマートＴＶである、
請求項１に記載のシステム。
【請求項６】
前記ビデオ入力ストリームを前記テンプレートと比較する前記動作が、
前記ビデオ入力ストリームの前記フレームをダウンサンプリングする動作と、
前記ダウンサンプリングされたフレームと前記テンプレートとの間の相互相関を決定する動作と、
前記相互相関を閾値と比較する動作と
を含む、請求項１に記載のシステム。
【請求項７】
前記ビデオ出力ストリームの前記生成が、
前記ビデオ入力ストリームの部分を代用ビデオコンテンツに置換する動作
を含む、請求項１に記載のシステム。
【請求項８】
前記ディスプレイが、サイズを有し、
前記ビデオ入力ストリームの前記置換される部分が、前記ディスプレイの前記サイズよりも小さい長方形領域である、
請求項７に記載のシステム。
【請求項９】
前記ビデオ入力ストリームの前記置換される部分が、前記ディスプレイの縁と少なくとも１つの縁を共有する、
請求項７に記載のシステム。
【請求項１０】
前記ビデオ入力ストリームの前記置換される部分が、前記ディスプレイと共通の縁を有さない、
請求項７に記載のシステム。
【請求項１１】
前記ビデオ入力ストリームの前記置換される部分のロケーションおよびサイズが、前記テンプレートに基づいて決定される、
請求項７に記載のシステム。
【請求項１２】
前記動作が、
前記中間デバイスの識別子を入手する動作と、
前記中間デバイスの前記識別子に基づいて、前記複数のテンプレートのサブセットを選択する動作と
をさらに含み、
前記ビデオ入力ストリームのフレームが前記識別されたテンプレートに対応すると決定するために前記ビデオストリームを前記識別されたテンプレートと比較する動作は、前記複数のテンプレートの前記サブセットのうちの各テンプレートを比較して、前記ビデオ入力ストリームの前記フレームが前記テンプレートに対応するかどうかを決定するサブステップである、
請求項１に記載のシステム。
【請求項１３】
表示デバイスにおいて、コンテンツプロバイダおよび中間デバイスから、コンテンツを含むビデオ入力ストリームを入手するステップと、
前記表示デバイスのメモリ内に記憶された複数のテンプレートのうちのテンプレートを識別するステップであって、前記識別されたテンプレートは、前記中間デバイスおよび第１の画面部分と関連付けられる、ステップと、
前記識別されたテンプレートを入手するステップと、
前記ビデオ入力ストリームのフレームが前記識別されたテンプレートに対応すると決定するために、前記表示デバイスのプロセッサを使用して、前記ビデオ入力ストリームを前記識別されたテンプレートと比較するステップと、
前記比較の結果に基づいて、前記第１の画面部分内では前記識別されたテンプレートに対応し、少なくとも第２の画面部分内では前記ビデオ入力ストリームと異なる、ビデオ出力ストリームを生成するステップと、
前記ビデオ出力ストリームが前記表示デバイスのディスプレイ上に提示されるようにするステップと
を含む方法。
【請求項１４】
前記ビデオ入力ストリームのフィンガプリントを生成するステップと、
前記フィンガプリントに基づいて、前記コンテンツプロバイダによって提供されたビデオコンテンツを識別するステップと、
前記コンテンツプロバイダによって提供された前記ビデオコンテンツの前記識別に基づいて、置換ビデオコンテンツを識別するステップと
をさらに含み、
前記生成されたビデオ出力ストリームが、前記識別された置換ビデオコンテンツの少なくとも部分を含む、
請求項１３に記載の方法。
【請求項１５】
前記コンテンツプロバイダが、ケーブルテレビ局である、請求項１３に記載の方法。
【請求項１６】
前記中間デバイスが、セットトップボックスである、請求項１３に記載の方法。
【請求項１７】
前記表示デバイスが、スマートＴＶである、
請求項１３に記載の方法。
【請求項１８】
前記ビデオ入力ストリームを前記識別されたテンプレートと比較する前記ステップが、
前記ビデオ入力ストリームの前記フレームをダウンサンプリングするステップと、
前記ダウンサンプリングされたフレームと前記テンプレートとの間の相互相関を決定するステップと、
前記相互相関を閾値と比較するステップと
を含む、請求項１３に記載の方法。
【請求項１９】
前記ビデオ出力ストリームの前記生成が、前記ビデオ入力ストリームの前記第２の画面部分を代用ビデオコンテンツに置換するステップを含む、
請求項１３に記載の方法。
【請求項２０】
マシンの１つまたは複数のプロセッサによって実行されたときに、
コンテンツプロバイダおよび中間デバイスから、コンテンツを含むビデオ入力ストリームを入手する動作と、
メモリ内に記憶された複数のテンプレートのうちのテンプレートを識別する動作であって、前記識別されたテンプレートは、前記中間デバイスおよび第１の画面部分と関連付けられる、動作と、
前記識別されたテンプレートを入手する動作と、
前記ビデオ入力ストリームのフレームが前記識別されたテンプレートに対応すると決定するために、前記ビデオ入力ストリームを前記識別されたテンプレートと比較する動作と、
前記比較の結果に基づいて、前記第１の画面部分内では前記識別されたテンプレートに対応し、少なくとも第２の画面部分内では前記ビデオ入力ストリームと異なる、ビデオ出力ストリームを生成する動作と、
前記ビデオ出力ストリームがディスプレイ上に提示されるようにする動作と
を含む動作を前記マシンに実行させる命令を記憶する非一時的なマシン可読媒体。
【請求項２１】
その上で実施される命令を有するメモリと、
１つまたは複数のプロセッサであって、
第１のコンテンツと、オーバレイゾーン内の前記第１のコンテンツ上に少なくとも部分的にオーバレイされた半透明のオーバレイとを含む、ビデオ入力ストリームを入手する動作と、
前記ビデオ入力ストリーム内における前記オーバレイゾーンの表示を含む、テンプレートを入手する動作と、
置換コンテンツ上にオーバレイされた変更された半透明のオーバレイを含む、ビデオ出力ストリームを生成する動作と、
前記置換コンテンツを含む前記ビデオ出力ストリームがディスプレイ上に提示されるようにする動作と
を含む動作を実行するように前記命令によって構成された、１つまたは複数のプロセッサと
を備えるシステム。
【請求項２２】
前記動作が、
前記オーバレイゾーン内の各ピクセルについて、前記第１のコンテンツと前記ビデオ入力ストリームとの間の差を計算する動作と、
前記差および閾値に基づいて、前記オーバレイゾーン内の各ピクセルを置換する動作と
を含む動作を使用して、前記オーバレイゾーン内に提示される前記第１のコンテンツを打ち消すように前記半透明のオーバレイを変更する動作
をさらに含む、請求項２１に記載のシステム。
【請求項２３】
前記動作が、
前記第１のコンテンツのフィンガプリントを生成する動作と、
前記フィンガプリントに基づいて、前記第１のコンテンツを識別する動作と
をさらに含む、請求項２２に記載のシステム。
【請求項２４】
前記テンプレートが、透明の程度を示し、
前記オーバレイゾーン内の各ピクセルを置換する前記動作が、透明の前記程度にさらに基づく、
請求項２２に記載のシステム。
【請求項２５】
前記オーバレイゾーン内の各ピクセルを置換する前記動作が、前記第１のコンテンツの対応するピクセルにさらに基づく、
請求項２４に記載のシステム。
【請求項２６】
前記ビデオ入力ストリーム内における前記オーバレイゾーンの前記表示が、前記オーバレイゾーンの境界の座標を含む、
請求項２１に記載のシステム。
【請求項２７】
前記ビデオ入力ストリーム内における前記オーバレイゾーンの前記表示が、ビットマップを含む、
請求項２１に記載のシステム。
【請求項２８】
前記動作が、
前記ビデオ入力ストリーム内における前記オーバレイゾーンの背景の平均色を識別する動作と、
前記半透明のオーバレイを欠いた前記第１のコンテンツのフレームの各ピクセルの色を、前記背景の前記平均色と比較する動作と、
前記背景の前記平均色の事前決定された範囲内の色を有する前記ピクセルの各々について、前記ピクセルの前記色を、前記背景の前記平均色に変更する動作と
を含む動作を使用して、前記オーバレイゾーン内に提示される前記第１のコンテンツを打ち消すように前記半透明のオーバレイを変更する動作
をさらに含む、請求項２１に記載のシステム。
【請求項２９】
前記動作が、
前記半透明のオーバレイのテキスト部分を識別する動作と、
前記半透明のオーバレイの前記テキスト部分を変更せずに維持しながら、前記第１のコンテンツを打ち消すように前記半透明のオーバレイを変更する動作と
をさらに含む、請求項２１に記載のシステム。
【請求項３０】
前記半透明のオーバレイの前記テキスト部分を識別する前記動作が、
前記テンプレートに基づいて、テキストを含むことができる領域を識別する動作と、
前記領域内のピクセルの色値および閾値に基づいて、前記領域内のどのピクセルが前記半透明のオーバレイの前記テキスト部分内に含まれるかを決定する動作と
を含む、請求項２９に記載のシステム。
【請求項３１】
前記テンプレートが色を示し、
前記置換コンテンツ上にオーバレイされた前記変更された半透明のオーバレイを含む前記ビデオ出力ストリームを生成する前記動作が、前記オーバレイゾーンの少なくとも部分に前記色を半透明で適用する動作を含む、
請求項２１に記載のシステム。
【請求項３２】
前記テンプレートが、提示されるテキストの情報タイプを示し、
前記置換コンテンツ上にオーバレイされた前記変更された半透明のオーバレイを含む前記ビデオ出力ストリームを生成する前記動作が、前記オーバレイゾーンの少なくとも部分にテキストを追加する動作であって、前記追加されるテキストは、前記テンプレート内において示される前記情報タイプに基づく、動作をさらに含む、
請求項３１に記載のシステム。
【請求項３３】
第１のコンテンツと、オーバレイゾーン内の前記第１のコンテンツ上に少なくとも部分的にオーバレイされた半透明のオーバレイとを含む、ビデオ入力ストリームを入手するステップと、
複数のテンプレートを記憶するデータベースから、前記ビデオ入力ストリーム内における前記オーバレイゾーンの表示を含む、テンプレートを入手するステップと、
１つまたは複数のプロセッサによって、置換コンテンツ上にオーバレイされた変更された半透明のオーバレイを含む、ビデオ出力ストリームを生成するステップと、
前記１つまたは複数のプロセッサによって、前記置換コンテンツを含む前記ビデオ出力ストリームがディスプレイ上に提示されるようにするステップと
を含む方法。
【請求項３４】
前記オーバレイゾーン内の各ピクセルについて、前記第１のコンテンツと前記ビデオ入力ストリームとの間の差を計算する動作と、
前記差および閾値に基づいて、前記オーバレイゾーン内の各ピクセルを置換する動作と
を含む動作を使用して、前記オーバレイゾーン内に提示される前記第１のコンテンツを打ち消すように前記半透明のオーバレイを変更するステップ
をさらに含む、請求項３３に記載の方法。
【請求項３５】
前記第１のコンテンツのフィンガプリントを生成するステップと、
前記フィンガプリントに基づいて、前記第１のコンテンツを識別するステップと
をさらに含む、請求項３４に記載の方法。
【請求項３６】
前記テンプレートが、透明の程度を示し、
前記オーバレイゾーン内の各ピクセルを置換する前記動作が、透明の前記程度にさらに基づく、
請求項３４に記載の方法。
【請求項３７】
前記オーバレイゾーン内の各ピクセルを置換する前記動作が、前記第１のコンテンツの対応するピクセルにさらに基づく、
請求項３６に記載の方法。
【請求項３８】
前記ビデオ入力ストリーム内における前記オーバレイゾーンの背景の平均色を識別する動作と、
前記半透明のオーバレイを欠いた前記第１のコンテンツのフレームの各ピクセルの色を、前記背景の前記平均色と比較する動作と、
前記背景の前記平均色の事前決定された範囲内の色を有する前記ピクセルの各々について、前記ピクセルの前記色を、前記背景の前記平均色に変更する動作と
を含む動作を使用して、前記オーバレイゾーン内に提示される前記第１のコンテンツを打ち消すように前記半透明のオーバレイを変更するステップ
をさらに含む、請求項３３に記載の方法。
【請求項３９】
前記半透明のオーバレイのテキスト部分を識別するステップと、
前記半透明のオーバレイの前記テキスト部分を変更せずに維持しながら、前記第１のコンテンツを打ち消すように前記半透明のオーバレイを変更するステップと
をさらに含む、請求項３３に記載の方法。
【請求項４０】
マシンの１つまたは複数のプロセッサによって実行されたときに、
第１のコンテンツと、オーバレイゾーン内の前記第１のコンテンツ上に少なくとも部分的にオーバレイされた半透明のオーバレイとを含む、ビデオ入力ストリームを入手する動作と、
前記ビデオ入力ストリーム内における前記オーバレイゾーンの表示を含む、テンプレートを入手する動作と、
置換コンテンツ上にオーバレイされた変更された半透明のオーバレイを含む、ビデオ出力ストリームを生成する動作と、
前記置換コンテンツを含む前記ビデオ出力ストリームがディスプレイ上に提示されるようにする動作と
を含む動作を前記マシンに実行させる命令を記憶する非一時的なマシン可読媒体。
【請求項４１】
ビデオ出力ストリームがディスプレイ上に提示されるようにするステップと、
コンテンツプロバイダおよび中間デバイスから、コンテンツを含むビデオ入力ストリームを入手するステップと、
複数のテンプレートを記憶するデータベースから、前記中間デバイスによって生成された画面部分に対応するテンプレートを入手するステップと、
前記ビデオ入力ストリームのフレームのコンテンツの少なくとも部分が前記テンプレートと一致すると決定するために、１つまたは複数のプロセッサによって、前記ビデオ入力ストリームを分析するステップと、
前記テンプレートと一致した前記ビデオ入力ストリームの前記フレームのコンテンツの前記少なくとも部分に基づいて、前記中間デバイスによって生成された前記画面部分を含むように前記ビデオ出力ストリームを変更するステップと、
前記１つまたは複数のプロセッサによって、前記変更されたビデオ出力ストリームが前記ディスプレイ上に提示されるようにするステップと
を含む方法。
【請求項４２】
前記中間デバイスによって生成された第２の画面部分に対応する第２のテンプレートを入手するステップと、
前記ビデオ入力ストリームの第２のフレームのコンテンツの少なくとも部分が前記第２のテンプレートと一致すると決定するために、前記ビデオ入力ストリームを分析するステップと、
前記第２のテンプレートと一致した前記ビデオ入力ストリームの前記第２のフレームのコンテンツの前記少なくとも部分に基づいて、前記ビデオ出力ストリームの変更を停止するステップと
をさらに含む、請求項４１に記載の方法。
【請求項４３】
前記中間デバイスによって生成された前記画面部分を含むように前記ビデオ出力ストリームを変更する前記ステップが、
前記中間デバイスによって生成された前記画面部分を、前記ビデオ入力ストリームから前記ビデオ出力ストリームに、ピクセルごとにコピーするステップ
を含む、請求項４１に記載の方法。
【請求項４４】
前記中間デバイスによって生成された前記画面部分を含むように前記ビデオ出力ストリームを変更する前記ステップが、
前記中間デバイスによって生成された前記画面部分内に含まれる情報を識別するステップと、
前記識別された情報を含むように前記ビデオ出力ストリームを変更するステップと
を含む、請求項４１に記載の方法。
【請求項４５】
前記コンテンツプロバイダからの前記ビデオ入力ストリームのコンテンツを識別するステップと、
前記コンテンツプロバイダからの前記識別されたコンテンツに基づいて、置換コンテンツを識別するステップと
をさらに含み、
前記ビデオ出力ストリームが前記ディスプレイ上に提示されるようにする前記ステップが、前記置換コンテンツが前記ディスプレイ上に提示されるようにするステップを含む、
請求項４１に記載の方法。
【請求項４６】
前記ビデオ入力ストリームの前記フレームのコンテンツの少なくとも部分が前記テンプレートと一致すると決定するために前記ビデオ入力ストリームを分析する前記ステップが、前記ビデオ入力ストリームの前記フレームのコンテンツの前記少なくとも部分が前記中間デバイスによって追加されたアイコンを含むと決定するステップを含む、請求項４１に記載の方法。
【請求項４７】
前記ビデオ入力ストリームの前記フレームのコンテンツの少なくとも部分が前記テンプレートと一致すると決定するために前記ビデオ入力ストリームを分析する前記ステップが、前記ビデオ入力ストリームの前記フレームのコンテンツの少なくとも部分が前記中間デバイスによって追加された事前決定されたテキストを含むと決定するステップを含む、請求項４１に記載の方法。
【請求項４８】
命令を記憶するメモリと、
１つまたは複数のプロセッサであって、
ビデオ出力ストリームがディスプレイ上に提示されるようにする動作と、
コンテンツプロバイダおよび中間デバイスから、コンテンツを含むビデオ入力ストリームを入手する動作と、
データベースから、前記中間デバイスによって生成された画面部分に対応するテンプレートを入手する動作と、
前記ビデオ入力ストリームのフレームのコンテンツの少なくとも部分が前記テンプレートと一致すると決定するために、前記ビデオ入力ストリームを分析する動作と、
前記テンプレートと一致した前記ビデオ入力ストリームの前記フレームのコンテンツの前記少なくとも部分に基づいて、前記中間デバイスによって生成された前記画面部分を含むように前記ビデオ出力ストリームを変更する動作と、
前記変更されたビデオ出力ストリームが前記ディスプレイ上に提示されるようにする動作と
を含む動作を実行するように前記命令によって構成された、１つまたは複数のプロセッサと
を備えるシステム。
【請求項４９】
前記動作が、
前記中間デバイスによって生成された第２の画面部分に対応する第２のテンプレートを入手する動作と、
前記ビデオ入力ストリームの第２のフレームのコンテンツの少なくとも部分が前記第２のテンプレートと一致すると決定するために、前記ビデオ入力ストリームを分析する動作と、
前記第２のテンプレートと一致した前記ビデオ入力ストリームの前記第２のフレームのコンテンツの前記少なくとも部分に基づいて、前記ビデオ出力ストリームの変更を停止する動作と
をさらに含む、請求項４８に記載のシステム。
【請求項５０】
前記中間デバイスによって生成された前記画面部分を含むように前記ビデオ出力ストリームを変更する前記動作が、
前記中間デバイスによって生成された前記画面部分を、前記ビデオ入力ストリームから前記ビデオ出力ストリームに、ピクセルごとにコピーする動作
を含む、請求項４８に記載のシステム。
【請求項５１】
前記中間デバイスによって生成された前記画面部分を含むように前記ビデオ出力ストリームを変更する前記動作が、
前記中間デバイスによって生成された前記画面部分内に含まれる情報を識別する動作と、
前記識別された情報を含むように前記ビデオ出力ストリームを変更する動作と
を含む、請求項４８に記載のシステム。
【請求項５２】
前記動作が、
前記コンテンツプロバイダからの前記ビデオ入力ストリームのコンテンツを識別する動作と、
前記コンテンツプロバイダからの前記識別されたコンテンツに基づいて、置換コンテンツを識別する動作と
をさらに含み、
前記ビデオ出力ストリームが前記ディスプレイ上に提示されるようにする前記動作が、前記置換コンテンツが前記ディスプレイ上に提示されるようにする動作を含む、
請求項４８に記載のシステム。
【請求項５３】
前記ビデオ入力ストリームの前記フレームのコンテンツの少なくとも部分が前記テンプレートと一致すると決定するために前記ビデオ入力ストリームを分析する前記動作が、前記ビデオ入力ストリームの前記フレームのコンテンツの前記少なくとも部分が前記中間デバイスによって追加されたアイコンを含むと決定する動作を含む、請求項４８に記載のシステム。
【請求項５４】
前記ビデオ入力ストリームの前記フレームのコンテンツの少なくとも部分が前記テンプレートと一致すると決定するために前記ビデオ入力ストリームを分析する前記動作が、前記ビデオ入力ストリームの前記フレームのコンテンツの少なくとも部分が前記中間デバイスによって追加された事前決定されたテキストを含むと決定する動作を含む、請求項４８に記載のシステム。
【請求項５５】
１つまたは複数のプロセッサによって実行されたときに、
ビデオ出力ストリームがディスプレイ上に提示されるようにする動作と、
コンテンツプロバイダおよび中間デバイスから、コンテンツを含むビデオ入力ストリームを入手する動作と、
前記中間デバイスによって生成された画面部分に対応するテンプレートを入手する動作と、
前記ビデオ入力ストリームのフレームのコンテンツの少なくとも部分が前記テンプレートと一致すると決定するために、前記ビデオ入力ストリームを分析する動作と、
前記テンプレートと一致した前記ビデオ入力ストリームの前記フレームのコンテンツの前記少なくとも部分に基づいて、前記中間デバイスによって生成された前記画面部分を含むように前記ビデオ出力ストリームを変更する動作と、
前記変更されたビデオ出力ストリームが前記ディスプレイ上に提示されるようにする動作と
を含む動作を前記１つまたは複数のプロセッサに実行させる命令を記憶する非一時的なマシン可読媒体。
【請求項５６】
前記動作が、
前記中間デバイスによって生成された第２の画面部分に対応する第２のテンプレートを入手する動作と、
前記ビデオ入力ストリームの第２のフレームのコンテンツの少なくとも部分が前記第２のテンプレートと一致すると決定するために、前記ビデオ入力ストリームを分析する動作と、
前記第２のテンプレートと一致した前記ビデオ入力ストリームの前記第２のフレームのコンテンツの前記少なくとも部分に基づいて、前記ビデオ出力ストリームの変更を停止する動作と
をさらに含む、請求項５５に記載の非一時的なマシン可読媒体。
【請求項５７】
前記中間デバイスによって生成された前記画面部分を含むように前記ビデオ出力ストリームを変更する前記動作が、
前記中間デバイスによって生成された前記画面部分を、前記ビデオ入力ストリームから前記ビデオ出力ストリームに、ピクセルごとにコピーする動作
を含む、請求項５５に記載の非一時的なマシン可読媒体。
【請求項５８】
前記中間デバイスによって生成された前記画面部分を含むように前記ビデオ出力ストリームを変更する前記動作が、
前記中間デバイスによって生成された前記画面部分内に含まれる情報を識別する動作と、
前記識別された情報を含むように前記ビデオ出力ストリームを変更する動作と
を含む、請求項５５に記載の非一時的なマシン可読媒体。
【請求項５９】
前記動作が、
前記コンテンツプロバイダからの前記ビデオ入力ストリームのコンテンツを識別する動作と、
前記コンテンツプロバイダからの前記識別されたコンテンツに基づいて、置換コンテンツを識別する動作と
をさらに含み、
前記ビデオ出力ストリームが前記ディスプレイ上に提示されるようにする前記動作が、前記置換コンテンツが前記ディスプレイ上に提示されるようにする動作を含む、
請求項５５に記載の非一時的なマシン可読媒体。
【請求項６０】
前記ビデオ入力ストリームの前記フレームのコンテンツの少なくとも部分が前記テンプレートと一致すると決定するために前記ビデオ入力ストリームを分析する前記動作が、前記ビデオ入力ストリームの前記フレームのコンテンツの前記少なくとも部分が前記中間デバイスによって追加されたアイコンを含むと決定する動作を含む、請求項５５に記載の非一時的なマシン可読媒体。
【請求項６１】
ビデオ出力ストリームがディスプレイ上に提示されるようにするステップと、
コンテンツプロバイダおよび中間デバイスから、コンテンツを含むビデオ入力ストリームを入手するステップと、
データベースから、前記中間デバイスによって生成された画面部分に対応するテンプレートを入手するステップと、
前記ビデオ入力ストリームのフレームのコンテンツの少なくとも部分が前記テンプレートと一致すると決定するために、プロセッサによって、前記ビデオ入力ストリームを分析するステップと、
前記テンプレートと一致した前記ビデオ入力ストリームの前記フレームのコンテンツの前記少なくとも部分に基づいた、
前記プロセッサによって、前記ビデオ入力ストリームの再生のスピードがデフォルトのスピードから変更されたと決定するステップと、
前記プロセッサによって、前記ビデオ出力ストリームの再生のスピードを変更することによって、前記ビデオ出力ストリームを変更するステップと、
前記プロセッサによって、前記変更されたビデオ出力ストリームが前記ディスプレイ上に提示されるようにするステップと
を含む方法。
【請求項６２】
前記テンプレートと一致した前記ビデオ入力ストリームのコンテンツフレームの前記少なくとも部分に基づいて、前記中間デバイスによって生成された前記画面部分を含むように前記ビデオ出力ストリームを変更するステップ
をさらに含む、請求項６１に記載の方法。
【請求項６３】
前記ビデオ入力ストリームの再生のスピードを決定するために、前記ビデオ入力ストリームを分析するステップ
をさらに含み、
前記ビデオ出力ストリームの再生の前記スピードを変更する前記ステップが、前記ビデオ出力ストリームの再生の前記スピードを前記ビデオ入力ストリームの再生の前記スピードになるように設定するステップを含む、
請求項６１に記載の方法。
【請求項６４】
前記ビデオ入力ストリームの複数のフレームについてのフィンガプリントを生成するステップ
をさらに含み、
前記ビデオ入力ストリームの再生の前記スピードを決定するために前記ビデオ入力ストリームを分析する前記ステップが、前記ビデオ入力ストリームの前記複数のフレームについての前記フィンガプリントに基づく、
請求項６３に記載の方法。
【請求項６５】
前記ビデオ入力ストリームの置換可能セグメントを識別するステップと、
前記ビデオ入力ストリームが前記識別された置換可能セグメントを提供する間、前記ビデオ出力ストリームが前記ビデオ入力ストリームから代替ビデオセグメントに切り換わるようにするステップと
をさらに含み、
前記ビデオ入力ストリームの前記フレームのコンテンツの少なくとも前記部分が前記テンプレートと一致すると決定するために前記ビデオ入力ストリームを分析する前記ステップが、前記ビデオ出力ストリームが前記代替ビデオセグメントを提供する間、実行される、
請求項６１に記載の方法。
【請求項６６】
前記テンプレートと一致した前記ビデオ入力ストリームのコンテンツフレームの前記少なくとも部分に基づいて、前記代替ビデオセグメントおよび前記ビデオ入力ストリームの両方に基づいた、前記ビデオ出力ストリームの変更されたフレームを生成するステップ
をさらに含む、請求項６５に記載の方法。
【請求項６７】
前記テンプレートが、フレームの領域を定義し、
前記ビデオ出力ストリームの前記変更されたフレームを生成する前記ステップが、前記テンプレートによって定義される前記領域に対応する前記ビデオ出力ストリームの前記変更されたフレームの領域を、前記ビデオ入力ストリームに基づかせるステップと、前記ビデオ出力ストリームの前記変更されたフレームの残りの領域を、前記代替ビデオセグメントに基づかせるステップとを含む、
請求項６６に記載の方法。
【請求項６８】
命令を記憶するメモリと、
１つまたは複数のプロセッサであって、
ビデオ出力ストリームがディスプレイ上に提示されるようにする動作と、
コンテンツプロバイダおよび中間デバイスから、コンテンツを含むビデオ入力ストリームを入手する動作と、
前記中間デバイスによって生成された画面部分に対応するテンプレートを入手する動作と、
前記ビデオ入力ストリームのフレームのコンテンツの少なくとも部分が前記テンプレートと一致すると決定するために、前記ビデオ入力ストリームを分析する動作と、
前記テンプレートと一致した前記ビデオ入力ストリームの前記フレームのコンテンツの前記少なくとも部分に基づいた、
前記ビデオ入力ストリームの再生のスピードがデフォルトのスピードから変更されたと決定する動作と、
前記ビデオ出力ストリームの再生のスピードを変更することによって、前記ビデオ出力ストリームを変更する動作と、
前記変更されたビデオ出力ストリームが前記ディスプレイ上に提示されるようにする動作と
を含む動作を実行するように前記命令によって構成された、１つまたは複数のプロセッサと
を備えるシステム。
【請求項６９】
前記動作が、
前記テンプレートと一致した前記ビデオ入力ストリームの前記フレームのコンテンツの前記少なくとも部分に基づいて、前記中間デバイスによって生成された前記画面部分を含むように前記ビデオ出力ストリームを変更する動作
をさらに含む、請求項６８に記載のシステム。
【請求項７０】
前記動作が、
前記ビデオ入力ストリームの再生のスピードを決定するために前記ビデオ入力ストリームを分析する動作
をさらに含み、
前記ビデオ出力ストリームの再生の前記スピードを変更する前記動作が、前記ビデオ出力ストリームの再生の前記スピードを前記ビデオ入力ストリームの再生の前記スピードになるように設定する動作を含む、
請求項６８に記載のシステム。
【請求項７１】
前記動作が、
前記ビデオ入力ストリームの複数のフレームについてのフィンガプリントを生成する動作
をさらに含み、
前記ビデオ入力ストリームの再生の前記スピードを決定するために前記ビデオ入力ストリームを分析する前記動作が、前記ビデオ入力ストリームの前記複数のフレームについての前記フィンガプリントに基づく、
請求項７０に記載のシステム。
【請求項７２】
前記動作が、
前記ビデオ入力ストリームの置換可能セグメントを識別する動作と、
前記ビデオ入力ストリームが前記識別された置換可能セグメントを提供する間、前記ビデオ出力ストリームが前記ビデオ入力ストリームから代替ビデオセグメントに切り換わるようにする動作と
をさらに含み、
前記ビデオ入力ストリームの前記フレームのコンテンツの少なくとも前記部分が前記テンプレートと一致すると決定するために前記ビデオ入力ストリームを分析する前記動作が、前記ビデオ出力ストリームが前記代替ビデオセグメントを提供する間、実行される、
請求項６８に記載のシステム。
【請求項７３】
前記動作が、
前記テンプレートと一致した前記ビデオ入力ストリームの前記フレームのコンテンツの前記少なくとも部分に基づいて、前記代替ビデオセグメントおよび前記ビデオ入力ストリームの両方に基づいた、前記ビデオ出力ストリームの変更されたフレームを生成する動作
をさらに含む、請求項７２に記載のシステム。
【請求項７４】
前記テンプレートがフレームの領域を定義し、
前記ビデオ出力ストリームの前記変更されたフレームを生成する前記ステップが、前記テンプレートによって定義される前記領域に対応する前記ビデオ出力ストリームの前記変更されたフレームの領域を、前記ビデオ入力ストリームに基づかせる動作と、前記ビデオ出力ストリームの前記変更されたフレームの残りの領域を、前記代替ビデオセグメントに基づかせる動作とを含む、
請求項７３に記載のシステム。
【請求項７５】
１つまたは複数のプロセッサによって実行されたときに、
ビデオ出力ストリームがディスプレイ上に提示されるようにする動作と、
コンテンツプロバイダおよび中間デバイスから、コンテンツを含むビデオ入力ストリームを入手する動作と、
前記中間デバイスによって生成された画面部分に対応するテンプレートを入手する動作と、
前記ビデオ入力ストリームのフレームのコンテンツの少なくとも部分が前記テンプレートと一致すると決定するために、前記ビデオ入力ストリームを分析する動作と、
前記テンプレートと一致した前記ビデオ入力ストリームの前記フレームのコンテンツの前記少なくとも部分に基づいた、
前記ビデオ入力ストリームの再生のスピードがデフォルトのスピードから変更されたと決定する動作と、
前記ビデオ出力ストリームの再生のスピードを変更することによって、前記ビデオ出力ストリームを変更する動作と、
前記変更されたビデオ出力ストリームが前記ディスプレイ上に提示されるようにする動作と
を含む動作を前記１つまたは複数のプロセッサに実行させる命令を記憶する非一時的なマシン可読媒体。
【請求項７６】
前記動作が、
前記テンプレートと一致した前記ビデオ入力ストリームの前記フレームのコンテンツの前記少なくとも部分に基づいて、前記中間デバイスによって生成された前記画面部分を含むように前記ビデオ出力ストリームを変更する動作
をさらに含む、請求項７５に記載の非一時的なマシン可読媒体。
【請求項７７】
前記動作が、
前記ビデオ入力ストリームの再生のスピードを決定するために前記ビデオ入力ストリームを分析する動作
をさらに含み、
前記ビデオ出力ストリームの再生の前記スピードを変更する前記動作が、前記ビデオ出力ストリームの再生の前記スピードを前記ビデオ入力ストリームの再生の前記スピードになるように設定する動作を含む、
請求項７５に記載の非一時的なマシン可読媒体。
【請求項７８】
前記動作が、
前記ビデオ入力ストリームの複数のフレームについてのフィンガプリントを生成する動作
をさらに含み、
前記ビデオ入力ストリームの再生の前記スピードを決定するために前記ビデオ入力ストリームを分析する前記動作が、前記ビデオ入力ストリームの前記複数のフレームについての前記フィンガプリントに基づく、
請求項７７に記載の非一時的なマシン可読媒体。
【請求項７９】
前記動作が、
前記ビデオ入力ストリームの置換可能セグメントを識別する動作と、
前記ビデオ入力ストリームが前記識別された置換可能セグメントを提供する間、前記ビデオ出力ストリームが前記ビデオ入力ストリームから代替ビデオセグメントに切り換わるようにする動作と
をさらに含み、
前記ビデオ入力ストリームの前記フレームのコンテンツの少なくとも前記部分が前記テンプレートと一致すると決定するために前記ビデオ入力ストリームを分析する前記動作が、前記ビデオ出力ストリームが前記代替ビデオセグメントを提供する間、実行される、
請求項７５に記載の非一時的なマシン可読媒体。
【請求項８０】
前記動作が、
前記テンプレートと一致した前記ビデオ入力ストリームの前記フレームのコンテンツの前記少なくとも部分に基づいて、前記代替ビデオセグメントおよび前記ビデオ入力ストリームの両方に基づいた、前記ビデオ出力ストリームの変更されたフレームを生成する動作
をさらに含む、請求項７９に記載の非一時的なマシン可読媒体。
【請求項８１】
１つまたは複数のプロセッサによって、第１のコンテンツプロバイダから、コンテンツを含むビデオ入力ストリームを入手するステップと、
前記ビデオ入力ストリームのコンテンツに基づいて、前記ビデオ入力ストリームとは異なるビデオ出力ストリームを選択するステップと、
前記ビデオ出力ストリームがディスプレイ上に提示されるようにするステップと、
前記１つまたは複数のプロセッサによって、前記ビデオ入力ストリームの変化が、前記ビデオ入力ストリームの前記コンテンツプロバイダの変化を示すと決定するステップと、
前記ビデオ入力ストリームの前記コンテンツプロバイダが変化したとの前記決定に応答して、前記ビデオ入力ストリームが前記ディスプレイ上に提示されるようにするステップと、
データベースから、中間デバイスによって生成された画面部分に対応するテンプレートを入手するステップと、
前記ビデオ入力ストリームのフレームのコンテンツの少なくとも部分が前記テンプレートと一致すると決定するために、前記１つまたは複数のプロセッサによって、前記ビデオ入力ストリームを分析するステップと、
前記テンプレートと一致した前記ビデオ入力ストリームの前記フレームの前記コンテンツの前記少なくとも部分に基づいて、前記ビデオ入力ストリームの第２の変化が、前記ビデオ入力ストリームの前記第１のコンテンツプロバイダへの復帰を示すと決定するステップと、
前記ビデオ入力ストリームの前記第１のコンテンツプロバイダに復帰したとの前記決定に応答して、前記ディスプレイ上における前記ビデオ出力ストリームの前記提示が復帰するようにするステップと
を含む方法。
【請求項８２】
前記ビデオ出力ストリームを選択する前記ステップが、置換メディアコンテンツを求める要求を送信するステップを含み、
前記ビデオ出力ストリームが前記ディスプレイ上に提示されるようにする前記ステップが、前記置換メディアコンテンツの表示を生じさせるステップを含む、
請求項８１に記載の方法。
【請求項８３】
置換メディアコンテンツを求める前記要求を送信する前記ステップが、
１つまたは複数のプロセッサによって、前記ビデオ入力ストリームのフィンガプリントを生成するステップと、
前記ビデオ入力ストリームの前記フィンガプリントを、置換されるコンテンツのフィンガプリントと比較するステップと
を含む、請求項８２に記載の方法。
【請求項８４】
前記ビデオ入力ストリームの前記変化が前記ビデオ入力ストリームの前記コンテンツプロバイダの前記変化を示すと決定する前記ステップが、
前記ビデオ入力ストリームからフィンガプリントの系列を生成するステップと、
フィンガプリントの前記系列のうちの連続するフィンガプリントを、置換されるコンテンツの連続するフィンガプリントと比較するステップと
を含む、請求項８１に記載の方法。
【請求項８５】
前記ビデオ入力ストリームが、第１の通信ネットワークを介して受信され、前記置換メディアコンテンツが、第２の通信ネットワークを介して受信される、請求項８２に記載の方法。
【請求項８６】
前記テンプレートと一致した前記ビデオ入力ストリームの前記フレームの前記コンテンツの前記少なくとも部分に基づいて、前記中間デバイスによって生成された前記画面部分を含むように前記ビデオ出力ストリームを変更するステップ
をさらに含む、請求項８１に記載の方法。
【請求項８７】
前記第１のコンテンツプロバイダが、ケーブルテレビ局である、請求項８１に記載の方法。
【請求項８８】
前記ビデオ入力ストリームの前記フレームの前記コンテンツの少なくとも前記部分が前記テンプレートと一致すると決定するために前記ビデオ入力ストリームを分析する前記ステップが、
前記ビデオ入力ストリームの前記フレームをダウンサンプリングするステップと、
前記ダウンサンプリングされたフレームと前記テンプレートとの間の相互相関を決定するステップと、
前記相互相関を閾値と比較するステップと
を含む、請求項８１に記載の方法。
【請求項８９】
命令を記憶するメモリと、
１つまたは複数のプロセッサであって、
第１のコンテンツプロバイダから、コンテンツを含むビデオ入力ストリームを入手する動作と、
前記ビデオ入力ストリームのコンテンツに基づいて、前記ビデオ入力ストリームとは異なるビデオ出力ストリームを選択する動作と、
前記ビデオ出力ストリームがディスプレイ上に提示されるようにする動作と、
前記ビデオ入力ストリームの変化が、前記ビデオ入力ストリームの前記コンテンツプロバイダの変化を示すと決定する動作と、
前記ビデオ入力ストリームの前記コンテンツプロバイダが変化したとの前記決定に応答して、前記ビデオ入力ストリームが前記ディスプレイ上に提示されるようにする動作と、
データベースから、中間デバイスによって生成された画面部分に対応するテンプレートを入手する動作と、
前記ビデオ入力ストリームのフレームのコンテンツの少なくとも部分が前記テンプレートと一致すると決定するために、前記ビデオ入力ストリームを分析する動作と、
前記テンプレートと一致した前記ビデオ入力ストリームの前記フレームの前記コンテンツの前記少なくとも部分に基づいて、前記ビデオ入力ストリームの第２の変化が、前記ビデオ入力ストリームの前記第１のコンテンツプロバイダへの復帰を示すと決定する動作と、
前記ビデオ入力ストリームの前記第１のコンテンツプロバイダに復帰したとの前記決定に応答して、前記ディスプレイ上における前記ビデオ出力ストリームの前記提示が復帰するようにする動作と
を含む動作を実行するように前記命令によって構成された、１つまたは複数のプロセッサと
を備えるシステム。
【請求項９０】
前記ビデオ出力ストリームを選択する前記動作が、置換メディアコンテンツを求める要求を送信する動作を含み、
前記ビデオ出力ストリームが前記ディスプレイ上に提示されるようにする前記動作が、前記置換メディアコンテンツの表示を生じさせる動作を含む、
請求項８９に記載のシステム。
【請求項９１】
置換メディアコンテンツを求める前記要求を送信する前記動作が、
前記ビデオ入力ストリームのフィンガプリントを生成する動作と、
前記ビデオ入力ストリームの前記フィンガプリントを、置換されるコンテンツのフィンガプリントと比較する動作と
を含む、請求項９０に記載のシステム。
【請求項９２】
前記ビデオ入力ストリームの前記変化が前記ビデオ入力ストリームの前記コンテンツプロバイダの前記変化を示すと決定する前記動作が、
前記ビデオ入力ストリームからフィンガプリントの系列を生成する動作と、
フィンガプリントの前記系列のうちの連続するフィンガプリントを、置換されるコンテンツの連続するフィンガプリントと比較する動作と
を含む、請求項８９に記載のシステム。
【請求項９３】
前記ビデオ入力ストリームが、第１の通信ネットワークを介して受信され、前記置換メディアコンテンツが、第２の通信ネットワークを介して受信される、請求項９０に記載のシステム。
【請求項９４】
前記動作が、
前記テンプレートと一致した前記ビデオ入力ストリームの前記フレームの前記コンテンツの前記少なくとも部分に基づいて、前記中間デバイスによって生成された前記画面部分を含むように前記ビデオ出力ストリームを変更する動作
をさらに含む、請求項８９に記載のシステム。
【請求項９５】
前記第１のコンテンツプロバイダが、ケーブルテレビ局である、請求項８９に記載のシステム。
【請求項９６】
前記ビデオ入力ストリームの前記フレームの前記コンテンツの少なくとも前記部分が前記テンプレートと一致すると決定するために前記ビデオ入力ストリームを分析する前記動作が、
前記ビデオ入力ストリームの前記フレームをダウンサンプリングする動作と、
前記ダウンサンプリングされたフレームと前記テンプレートとの間の相互相関を決定する動作と、
前記相互相関を閾値と比較する動作と
を含む、請求項８９に記載のシステム。
【請求項９７】
１つまたは複数のプロセッサによって実行されたときに、
第１のコンテンツプロバイダから、コンテンツを含むビデオ入力ストリームを入手する動作と、
前記ビデオ入力ストリームのコンテンツに基づいて、前記ビデオ入力ストリームとは異なるビデオ出力ストリームを選択する動作と、
前記ビデオ出力ストリームがディスプレイ上に提示されるようにする動作と、
前記ビデオ入力ストリームの変化が、前記ビデオ入力ストリームの前記コンテンツプロバイダの変化を示すと決定する動作と、
前記ビデオ入力ストリームの前記コンテンツプロバイダが変化したとの前記決定に応答して、前記ビデオ入力ストリームが前記ディスプレイ上に提示されるようにする動作と、
データベースから、中間デバイスによって生成された画面部分に対応するテンプレートを入手する動作と、
前記ビデオ入力ストリームのフレームのコンテンツの少なくとも部分が前記テンプレートと一致すると決定するために、前記ビデオ入力ストリームを分析する動作と、
前記テンプレートと一致した前記ビデオ入力ストリームの前記フレームの前記コンテンツの前記少なくとも部分に基づいて、前記ビデオ入力ストリームの第２の変化が、前記ビデオ入力ストリームの前記第１のコンテンツプロバイダへの復帰を示すと決定する動作と、
前記ビデオ入力ストリームの前記第１のコンテンツプロバイダに復帰したとの前記決定に応答して、前記ディスプレイ上における前記ビデオ出力ストリームの前記提示が復帰するようにする動作と
を含む動作を前記１つまたは複数のプロセッサに実行させる命令を記憶する非一時的なマシン可読媒体。
【請求項９８】
前記ビデオ出力ストリームを選択する前記動作が、置換メディアコンテンツを求める要求を送信する動作を含み、
前記ビデオ出力ストリームが前記ディスプレイ上に提示されるようにする前記動作が、前記置換メディアコンテンツの表示を生じさせる動作を含む、
請求項９７に記載の非一時的なマシン可読媒体。
【請求項９９】
置換メディアコンテンツを求める前記要求を送信する前記動作が、
前記ビデオ入力ストリームのフィンガプリントを生成する動作と、
前記ビデオ入力ストリームの前記フィンガプリントを、置換されるコンテンツのフィンガプリントと比較する動作と
を含む、請求項９８に記載の非一時的なマシン可読媒体。
【請求項１００】
前記ビデオ入力ストリームの前記変化が前記ビデオ入力ストリームの前記コンテンツプロバイダの前記変化を示すと決定する前記動作が、
前記ビデオ入力ストリームからフィンガプリントの系列を生成する動作と、
フィンガプリントの前記系列のうちの連続するフィンガプリントを、置換されるコンテンツの連続するフィンガプリントと比較する動作と
を含む、請求項９７に記載の非一時的なマシン可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
優先権の主張
本出願は、その全体が参照によって本明細書に組み込まれる、２０１５年１２月１６日に出願された、「Ｄｙｎａｍｉｃ  Ｖｉｄｅｏ  Ｏｖｅｒｌａｙｓ」と題する、米国仮特許出願第６２／２６８４１０号に基づく優先権を主張する。
【０００２】
本明細書において開示される主題は、一般に、ビデオストリームの処理に関する。詳細には、本開示は、オーバレイされたビデオの提示を生じさせるためのシステムおよび方法に取り組む。
【背景技術】
【０００３】
一般に、人々は、コンテンツソースからの送信を受信するデバイスを介して、テレビ番組、広告、映画、およびビデオクリップなどのビデオコンテンツを視聴する。例えば、放送局（例えば、ＨＢＯ（登録商標）もしくはＣＮＮ（登録商標））、ウェブサーバ（例えば、ＹｏｕＴｕｂｅ（登録商標））、ピアツーピアソース（例えば、別のデバイス）、または別のコンテンツソースは、テレビジョンおよび関連するセットトップボックス、コンピューティングおよび／またはモバイルデバイス、ならびに関連するメディアプレーヤまたはブラウザなどの、ビデオコンテンツを提示することが可能な様々なデバイスに、ビデオコンテンツをストリーム配信し、または他の方法で送信する。
【発明の概要】
【０００４】
いくつかの実施形態は、例として説明され、添付の図面の図に限定されない。
【図面の簡単な説明】
【０００５】
【図１】ビデオを動的にオーバレイするための、例示的な実施形態における、ネットワーク環境を示すブロック図である。
【図２】いくつかの例示的な実施形態による、ビデオ識別システムおよびクエリフィンガプリント生成器のコンポーネントを図説するブロック図である。
【図３】いくつかの例示的な実施形態による、クライアントデバイスおよび置換コンテンツサーバのコンポーネントを図説するブロック図である。
【図４】動的ビデオオーバレイを図説する、例示的な実施形態における、ディスプレイ図である。
【図５】動的ビデオオーバレイを図説する、例示的な実施形態における、ディスプレイ図である。
【図６】動的ビデオオーバレイを図説する、例示的な実施形態における、ディスプレイ図である。
【図７】動的ビデオオーバレイを図説する、例示的な実施形態における、ディスプレイ図である。
【図８】ビデオオーバレイを動的に提供するための、いくつかの例示的な実施形態における、方法を図説するフローチャートである。
【図９】ビデオオーバレイを動的に提供するための、いくつかの例示的な実施形態における、方法を図説するフローチャートである。
【図１０】ビデオオーバレイを動的に提供するための、いくつかの例示的な実施形態における、方法を図説するフローチャートである。
【図１１】ビデオオーバレイを動的に提供するための、いくつかの例示的な実施形態における、方法を図説するフローチャートである。
【図１２】ビデオオーバレイを動的に提供するための、いくつかの例示的な実施形態における、方法を図説するフローチャートである。
【図１３】ビデオオーバレイを動的に提供するための、いくつかの例示的な実施形態における、方法を図説するフローチャートである。
【図１４】ビデオオーバレイを動的に提供するための、いくつかの例示的な実施形態における、方法を図説するフローチャートである。
【図１５】ビデオオーバレイを動的に提供するための、いくつかの例示的な実施形態における、方法を図説するフローチャートである。
【図１６】ビデオオーバレイを動的に提供するための、例示的な実施形態における、データ構造を図説するブロック図である。
【図１７】マシン可読媒体から命令を読み取り、本明細書において説明される方法のうちのいずれか１つまたは複数を実行することができる、いくつかの例示的な実施形態による、マシンのコンポーネントを図説するブロック図である。
【発明を実施するための形態】
【０００６】
ビデオオーバレイを動的に提供するための例示的な方法およびシステムが、説明される。いくつかの例示的な実施形態においては、クライアントデバイス（例えば、スマートテレビジョン（ＴＶ））は、ビデオストリーム上にオーバレイされる情報を提示する、セットトップボックスを識別する。識別されたセットトップボックス、およびセットトップボックスから受信されたビデオデータに基づいて、提示された情報に対応するテンプレートが、選択される。テンプレートに基づいて、置換ビデオストリームが、情報とともに提示され、元のビデオストリームがセットトップボックスによって提示される方法を模倣する。いくつかの例示的な実施形態においては、置換ビデオストリームは、元のビデオストリームに基づいて、選択される。例えば、クライアントデバイスは、元のビデオコンテンツのフレームのクエリフィンガプリントを生成することができる。クライアントデバイスは、生成されたクエリフィンガプリントを使用して、既知の参照フィンガプリントについてデータベースに問い合わせ、ビデオコンテンツのフレームのクエリフィンガプリントが既知の参照フィンガプリントに一致すると決定し、フィンガプリントの一致に基づいて、ビデオコンテンツを識別する。識別されたビデオコンテンツに基づいて、置換ビデオストリームが、選択される。例えば、特定の地方コマーシャルを示す置換ビデオストリームが、選択されて、特定の全国コマーシャルを示す元のビデオコンテンツを置換することができる。
【０００７】
フィンガプリントは、シングルフレームフィンガプリント、またはマルチフレームフィンガプリントとすることができる。マルチフレームフィンガプリントは、フレームの相対的タイミングを伴った、シングルフレームフィンガプリントの集まりである。「フィンガプリント」という用語は、シングルフレームおよびマルチフレームフィンガプリントの両方を指すために使用される。「成分」という用語は、そうしないと混乱が生じることがあるときに、マルチフレームフィンガプリント内のシングルフレームフィンガプリントを指すために使用される。
【０００８】
いくつかの例示的な実施形態においては、クライアントデバイスは、識別されたテンプレートに基づいて、特定の位置に、特定のサイズで、置換ビデオストリームを提示する。例えば、セットトップボックスは、縮小されたサイズのピクチャインピクチャとして、元のビデオストリームを提示していることができる。したがって、セットトップボックスの挙動を模倣するために、置換ビデオストリームが、元のビデオストリームと同じサイズで、同じロケーションに提示される。
【０００９】
さらなる例示的な実施形態においては、クライアントデバイスは、識別されたテンプレートに基づいて、置換ビデオストリームの特定の部分を提示する。例えば、セットトップボックスは、フルスクリーン画像として、元のビデオストリームを提示していることができるが、ストリームの下部を情報バーで覆っていることができる。したがって、セットトップボックスの挙動を模倣するために、置換ビデオストリームの上部だけが、提示される。
【００１０】
さらなる例示的な実施形態においては、クライアントデバイスは、識別されたテンプレートに基づいて、置換ビデオストリームの特定の部分のアルファ（透明）ブレンドを実行する。例えば、セットトップボックスは、元のビデオストリーム上に重ね合わされたメニューを提示していることができる。クライアントデバイスは、合成画像からメニューを抽出し、テンプレート内で定義されたアルファ値を使用して、置換ビデオストリーム上にメニューを重ね合わせることができる。
【００１１】
いくつかの例示的な実施形態においては、クライアントデバイスは、識別されたテンプレートに基づいて、特定のスピードで、置換ビデオストリームを提示する。例えば、セットトップボックスは、早送りモードで、元のビデオストリームを提示していることができる。したがって、セットトップボックスの挙動を模倣するために、置換ビデオストリームが、早送りモードで、提示される。
【００１２】
以下の説明においては、説明の目的で、数々の具体的な詳細が、例示的な実施形態の完全な理解を提供するために説明される。しかしながら、これらの具体的な詳細を伴わずとも、本主題を実施することができることは、当業者には明らかであろう。
【００１３】
図１は、いくつかの例示的な実施形態による、動的ビデオオーバレイに適したネットワーク環境１００を図説するネットワーク図である。ネットワーク環境１００は、放送局、ウェブサーバ、およびケーブルＴＶ局などの、コンテンツソース１１０から、ビデオおよび他のマルチメディアコンテンツを受信する、視聴ステーション１２０を含むことができる。例えば、コンテンツソース１１０は、とりわけ、メディアをＴＶチャンネル上で視聴ステーション１２０にストリーム配信もしくは送信する、ＴＶ局もしくはＴＶネットワークなどの放送局、および／またはメディアをネットワーク１７０上で視聴ステーション１２０にストリーム配信もしくは送信する、ウェブサイトなどのウェブサービスとすることができる。視聴ステーション１２０は、コンテンツソース１１０から受信されたビデオコンテンツの参照フィンガプリントを生成する、参照フィンガプリント生成器１３０を含む。
【００１４】
１つまたは複数のセットトップボックス１４０も、放送チャンネルを介して、および／またはネットワーク１７０上などで、ビデオおよび他のマルチメディアコンテンツを、コンテンツソース１１０から受信することができる。セットトップボックス１４０は、コンテンツをクライアントデバイス１５０に送信する前に、受信されたコンテンツを変更することができる。クライアントデバイス１５０は、ビデオおよび／または他のマルチメディアコンテンツのストリームを受信し、提示することが可能な、任意のデバイス（例えば、ＴＶ、第２のセットトップボックス、ラップトップもしくは他のパーソナルコンピュータ（ＰＣ）、タブレットもしくは他のモバイルデバイス、デジタルビデオレコーダ（ＤＶＲ）、またはゲーム用デバイス）である。
【００１５】
いくつかの例示的な実施形態においては、セットトップボックス１４０は、ビデオコンテンツの入力ストリームを受信し、入力ストリームを処理することによって、ビデオコンテンツの出力ストリームを生成するように構成された、チューナを含む。セットトップボックス１４０は、多チャンネルビデオ番組配信局によって利用される、地上放送、ケーブル、および／または衛星放送ネットワークなどの、ビデオコンテンツ配信ネットワークを通して、ビデオコンテンツを入手する（ａｃｃｅｓｓ）ための、チューナおよびデコーダなどを備える、デバイスとすることができる。加えて、または代替として、セットトップボックス１４０は、インターネットビデオストリーミングサービスにアクセスするために、デバイスによって利用される、ワイドエリアネットワーク（例えば、インターネット）を通して、ビデオコンテンツを入手するための、ネットワークアダプタおよびデコーダなどを備える、デバイスとすることができる。ビデオコンテンツの出力ストリームは、複数の成分から構成されることができる。例えば、ビデオコンテンツの出力ストリームは、入力ストリームに対応する、出力ストリームの第１の領域内に、第１の成分を、またセットトップボックス１４０によって生成されたビデオデータに対応する、出力ストリームの第２の領域内に、第２の成分を含むことができる。第２の成分は、セットトップボックス１４０用のメニュー、セットトップボックス１４０からの情報メッセージ、または他のデバイス（例えば、電話もしくはセキュリティアラーム）によって生成され、提示のためにセットトップボックス１４０に送信された情報メッセージを含むことができる。セットトップボックス１４０は、出力ビデオコンテンツをクライアントデバイス１５０と関連付けられたユーザに提示するための、クライアントデバイス１５０のディスプレイによって使用可能な信号（例えば、デジタルまたはアナログ信号）を出力する。クライアントデバイス１５０の観点からは、セットトップボックス１４０によって出力される信号は、ビデオ入力ストリームである。
【００１６】
クライアントデバイス１５０も、ビデオコンテンツの処理されたストリームを表示するように構成された、ディスプレイまたは他のユーザインターフェースを含むことができる。ディスプレイは、フラットパネルスクリーン、プラズマスクリーン、発光ダイオード（ＬＥＤ）スクリーン、ブラウン管（ＣＲＴ）、液晶ディスプレイ（ＬＣＤ）、およびプロジェクタなどとすることができる。いくつかの例示的な実施形態においては、セットトップボックス１４０およびクライアントデバイス１５０は、単一のデバイスになるように統合される。
【００１７】
ネットワーク１７０は、有線ネットワーク、および無線ネットワーク（例えば、モバイルネットワーク）など、デバイス間の通信を可能にする任意のネットワークとすることができる。ネットワーク１７０は、私設ネットワーク（例えば、ケーブルＴＶネットワーク、または衛星ＴＶネットワーク）、および公衆ネットワーク（例えば、無線放送チャンネル、またはインターネット）などを構成する１つまたは複数の部分を含むことができる。
【００１８】
いくつかの例示的な実施形態においては、ビデオ識別システム１９０は、ネットワーク１７０上で、視聴ステーション１２０およびクライアントデバイス１５０と通信する。ビデオ識別システム１９０は、クエリフィンガプリントを１つまたは複数の参照フィンガプリントと照合することによって、ビデオコンテンツを識別するために、ビデオコンテンツ内のフレームまたはフレームのブロックのフィンガプリントなど、クライアントデバイス１５０のクエリフィンガプリント生成器１６０によって生成されたクエリフィンガプリントを受信し、視聴ステーション１２０の参照フィンガプリント生成器１３０によって生成された既知の参照フィンガプリントのインデックスを問い合わせることができる。
【００１９】
ビデオコンテンツを識別すると、ビデオ識別システム１９０は、ビデオコンテンツと関連付けられた置換コンテンツ（例えば、代替番組および代替コマーシャルなど）についての識別子を、クライアントデバイス１５０に返すことができる。置換コンテンツは、置換コンテンツサーバ１８０内に記憶することができる。識別子を使用して、クライアントデバイス１５０は、置換コンテンツサーバ１８０から置換コンテンツを入手し、置換コンテンツを、セットトップボックス１４０から受信されたビデオコンテンツとオーバレイすることができる。例えば、クライアントデバイス１５０は、放送チャンネル用の置換コマーシャルなどの置換コンテンツを、置換コンテンツサーバ１８０から入手し、提示することができる。
【００２０】
図１に示されるマシン、データベース、またはデバイスのいずれも、そのマシンについての本明細書において説明される機能を実行するための専用コンピュータになるように、ソフトウェアによって変更された（例えば、構成またはプログラムされた）、汎用コンピュータで実施することができる。例えば、本明細書において説明される方法のうちのいずれか１つまたは複数を実施することができるコンピュータシステムが、図１６に関して、以下で説明される。本明細書において使用される場合、「データベース」は、データ記憶リソースであり、テキストファイル、テーブル、スプレッドシート、リレーショナルデータベース、ドキュメントストア、キー値ストア、トリプルストア、またはそれらの任意の適切な組み合わせとして構造化された、データを記憶することができる。さらに、図１において図説されるマシンのうちの任意の２つ以上は、単一のマシンになるように組み合わせることができ、単一のマシンについての本明細書において説明される機能は、複数のマシンの間で細分化することができる。
【００２１】
さらに、モジュール、システム、および／または生成器のうちのいずれも、図１に示されるマシン、データベース、またはデバイスのいずれかに配置することができる。例えば、構成の中でも特に、ビデオ識別システム１９０は、クエリフィンガプリント生成器１６０、およびクライアントデバイス１５０からのビデオコンテンツのフレームを含むことができ、含まれるクエリフィンガプリント生成器１６０を使用して、クエリフィンガプリントを生成することができる。
【００２２】
図２は、いくつかの例示的な実施形態による、クエリフィンガプリント生成器１６０、参照フィンガプリント生成器１３０、およびビデオ識別システム１９０のコンポーネントを図説するブロック図２００である。
【００２３】
クライアントデバイス１５０のクエリフィンガプリント生成器１６０は、（例えば、バス、共用メモリ、またはスイッチを介して）互いに通信するように構成された、小区画(patch)選択モジュール２１０と、値算出モジュール２２０とを含む。ビデオ識別システム１９０は、インデックスモジュール２３０と、フィンガプリント照合モジュール２４０と、識別モジュール２５０とを含み、すべては、（例えば、バス、共用メモリ、またはスイッチを介して）互いに通信するように構成される。視聴ステーション１２０の参照フィンガプリント生成器１３０は、（例えば、バス、共用メモリ、またはスイッチを介して）互いに通信するように構成された、小区画選択モジュール２６０と、値算出モジュール２７０とを含む。本明細書において説明されるモジュールのうちの１つまたは複数は、ハードウェア（例えば、マシンのプロセッサ、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、もしくは特定用途向け集積回路（ＡＳＩＣ））、またはハードウェアおよびソフトウェアの組み合わせ（例えば、ソフトウェアによって構成されるプロセッサ）を使用して、実施することができる。さらに、これらのモジュールのうちの任意の２つ以上は、単一のモジュールになるように組み合わせることができ、単一のモジュールについての本明細書において説明される機能は、複数のモジュールの間で細分化することができる。
【００２４】
いくつかの例示的な実施形態においては、クエリフィンガプリント生成器１６０は、クライアントデバイス１５０においてキャプチャされたビデオコンテンツの１つまたは複数のフレームのクエリフィンガプリントを生成するように構成され、および／またはプログラムされる。例えば、クエリフィンガプリント生成器１６０は、ビデオコンテンツ内の１つまたは複数のフレームのハールライク（Ｈａａｒ−ｌｉｋｅ）特徴、領域、部分、および／または態様などの、小区画の値を算出することができる。例えば、小区画は、様々な異なる幾何学的形状、およびハールライク特徴などを有する、フレームの部分とすることができる。いくつかの例示的な実施形態においては、いくつかまたはすべてのキャプチャされた小区画は、各々、異なるスケールを有し、フレーム内の異なるロケーションに存在することができる。受信されたビデオコンテンツの小区画についてのフィンガプリントを報告することによって、クエリフィンガプリント生成器１６０は、各小区画のコンテンツを決定することができる。したがって、受信されたビデオが、異なるソースからの複数の成分（例えば、放送局からの入力ビデオストリーム、およびセットトップボックス１４０によって生成されたオーバレイビデオストリーム）を含む場合、複数の成分に対応する領域を識別することができる。
【００２５】
クエリフィンガプリント生成器１６０（および参照フィンガプリント生成器１３０）は、コンテンツ内のフレームから、ビデオコンテンツを識別するためのフィンガプリントを生成および／または作成する。一般に、クライアントデバイス１５０によって受信されたビデオコンテンツは、異なるフォーマットおよびサンプルレートにあり、クエリフィンガプリント生成器１６０は、ビデオコンテンツのフレームのうちのいくつかまたはすべてのために、スケール独立であり、異なる圧縮アーチファクトに対してロバストな、各フレームについてのクエリフィンガプリントを生成する。いくつかの例示的な実施形態においては、クエリフィンガプリント生成器１６０は、フレームの各々のクエリフィンガプリントを組み合わせて、ビデオコンテンツのフレーム（例えば、複数のフレーム）からなるブロックのクエリフィンガプリントを生成することができる。ビデオ識別システム１９０は、数百万のクエリフィンガプリント生成器１６０からのビデオ識別要求に応答することができる。
【００２６】
クエリフィンガプリント生成器１６０は、ビデオコンテンツ内の１つまたは複数のフレームの表示される領域と関連付けられた小区画など、ビデオコンテンツの複数の小区画を選択するように構成され、および／またはプログラムされた、小区画選択モジュール２１０を含むことができる。同様に、参照フィンガプリント生成器１３０は、ビデオコンテンツ内の１つまたは複数のフレームの表示される領域と関連付けられた小区画など、ビデオコンテンツの複数の小区画を選択するように構成され、および／またはプログラムされた、小区画選択モジュール２６０を含むことができる。
【００２７】
小区画は、フレームをグリッド（例えば、２×２グリッド、４×３グリッド、または４×４グリッド）に分割することによって、作成することができる。小区画は、オーバラップすることができる。例えば、２０個の小区画を使用することができ、４個の大きい小区画は、フレームの四半分に対応し、１６個の小さい小区画は、フレームを４×４グリッドに分割することからもたらされる。別の例として、５個の小区画を使用することができ、４個の大きい小区画は、フレームの四半分に対応し、等しいサイズの第５の小区画は、フレームの中央に配置される。いくつかの例においては、小区画は、フレームの外側境界を含まないフレームの中央部分など、フレームの部分をグリッドに分割することによって、作成することができる。したがって、小区画は、フレームの全体よりも小さく累積的に広がることができる。
【００２８】
クエリフィンガプリント生成器１６０は、領域の長方形エリア内の値の総和を生成する、エリア総和テーブルまたは他のデータ構造を使用して、値を算出する技法など、積分画像技法を使用して、選択された複数の小区画の各々についての値を算出するように構成され、またはプログラムされた、値算出モジュール２２０も含むことができる。同様に、参照フィンガプリント生成器１３０は、領域の長方形エリア内の値の総和を生成する、エリア総和テーブルまたは他のデータ構造を使用して、値を算出する技法など、積分画像技法を使用して、選択された複数の小区画の各々についての値を算出するように構成され、またはプログラムされた、値算出モジュール２７０を含むことができる。
【００２９】
例えば、小区画選択モジュール２１０、２６０は、１つまたは複数のフレームの領域の、オブジェクト検出において一般に使用されるハールライク特徴などの、小区画を選択することができる。値算出モジュール２２０、２７０は、ハールライク特徴を利用して、オブジェクトの相対的サイズにかかわらず、フレームの可視画像内のオブジェクトなどの、フレーム内のオブジェクトについて、同じ値を生成し、または算出することができる。例えば、値算出モジュール２２０、２７０は、ガウシアンフィルタ、およびボックスフィルタを使用するそれらの派生物を近似することによって、値（例えば、フレームの領域の平均）を生成することができ、ガウシアンフィルタの派生物は、ボックスフィルタ内において差を見つけることによって、作成される。
【００３０】
クエリフィンガプリント生成器１６０は、値計算モジュール２２０を介して、異なるスケールで、ビデオコンテンツのフレームの表示される領域の異なるロケーションにおいて、ハールライク特徴または小区画の値を算出することによって、クエリフィンガプリントを生成することができる。参照フィンガプリント生成器１３０は、値算出モジュール２７０を介して、異なるスケールで、ビデオコンテンツのフレームの表示される領域の異なるロケーションにおいて、ハールライク特徴または小区画の値を算出することによって、参照フィンガプリントを生成することができる。
【００３１】
いくつかの例においては、小区画選択モジュール２１０、２６０は、１つまたは複数のフレームの領域を分割したグリッドに属する小区画を含む、小区画を選択することができる。値計算モジュール２２０、２７０は、その後、各小区画内のピクセル値の総和値、中央値などの小区画の各々についての特徴値を算出することができる。さらに、値算出モジュール２２０、２７０は、それらの特徴値の間の差、および／またはそれらの特徴値の線形結合を計算することができる。いくつかのケースにおいては、結果の差、および／または線形結合は、その後、閾値との比較などによって、２進値（例えば、０または１）を決定するために使用することができる。したがって、フィンガプリント生成器１６０、１３０は、値算出モジュール２２０、２６０を介して、ビデオコンテンツの１つもしくは複数のフレームの複数の小区画の特徴値の差、および／または線形結合に基づいた２進値を算出することによって、フィンガプリントを生成することができる。
【００３２】
ビデオ識別システム１９０は、モジュールの中でも特に、インデックスモジュール２３０と、フィンガプリント照合モジュール２４０と、識別モジュール２５０とを含み、それらは、クエリフィンガプリントを既知の参照フィンガプリントと照合するように構成され、プログラムされる。
【００３３】
いくつかの例示的な実施形態においては、インデックスモジュール２３０は、視聴ステーション１２０などの参照デバイスにおいてキャプチャされたビデオコンテンツの既知の参照フィンガプリントのデータベースに問い合わせるように構成され、プログラムされる。例えば、インデックスモジュール２３０は、視聴ステーション１２０のデータベース内に記憶されているインデックス、およびビデオ識別システム１９０内に記憶されているインデックスなどを問い合わせることができる。
【００３４】
例えば、インデックスモジュール２３０は、既知の参照フィンガプリントの量子化された小区画値のインデックスを問い合わせるように構成することができる。インデックスモジュール２３０は、参照フィンガプリントの単一のフレームと関連付けられた、１、８、１６、および／または２４ビット数のインデックスを問い合わせることができる。インデックスモジュール２３０は、参照フィンガプリントの１つまたは複数の小区画値を量子化することによって、その数を導出することができる。例えば、インデックスモジュール２３０は、フィンガプリント値を、それらの絶対和、および対数正規化などによって、正規化することができる。
【００３５】
インデックスモジュール２３０は、フレームの大きい領域の相関性が最良のまたはより良い値を使用して、参照フィンガプリントのいくつかまたはすべてのフレームをインデックス付けすることができる。相関性が最良の値と関連付けられた特徴は、とりわけ、フレームの残りの小区画を表すことができるので、インデックスモジュール２３０は、全フレームの小区画の相関性が高い値を使用して、インデックスを作成することができる。相関性が高い値は、サンプルデータセットを使用して、事前決定しておくことができる。
【００３６】
例えば、フレームの３つの領域が、最も良い相関性のある値であるとき、インデックスモジュール２３０は、３つの値の各々を、最大限度および最小限度を有する均等間隔のヒストグラム内にそれらを配置することなどによって、８ビットに量子化し、それによって、２４ビット数を作成する。インデックスモジュール２３０は、その後、２４ビット数の参照フィンガプリントインデックスを利用して、フレームを迅速に検索し、および／または識別することができる。いくつかの例示的な実施形態においては、あいまい探索が、実行される。あいまい探索は、不正確な一致を見つけることができる。例えば、３つの８ビット値についてのあいまい一致は、照合値が正確に一致するとき、または対応する値の１つ以内であるときに、見出すことができる。この例においては、フィンガプリントを３つのバイトの各々について３つの照合値と照合しようと試みるとき、インデックス当たり２７個の解析すべき順列が、存在する。同様に、同程度の（すなわち、値当たりの最大距離が１の）あいまい一致とともに、４つの８ビット値が使用されるとき、インデックス当たり８１個の順列が、存在する。より大きい程度、および／またはより多くの値は、可能な順列の数を増加させる。
【００３７】
別の例として、インデックスモジュール２３０は、３つの値の各々を、各値を閾値と比較することなどによって、１ビットに量子化し、それによって、３ビット数を生成することができる。フィンガプリントを照合しようと試みるとき、インデックス当たり８個の比較すべき値が存在するだけなので、インデックスモジュール２３０は、その後、３ビット数の参照フィンガプリントインデックスを利用して、迅速にフレームを検索し、および／または識別することができる。
【００３８】
別の例示的な実施形態においては、３２個の領域が、使用され、各領域は、単一ビットによって表される。３２ビット値は、ハッシュされて、鍵を生成することができる。例えば、２５６個のハッシュ値が、使用される場合、３２ビット値の上位８ビットは、ハッシュとして使用することができる。フィンガプリントを検索するために、同じハッシュ値を有する潜在的に一致するフィンガプリントは、繰り返され、比較される。
【００３９】
いくつかの例示的な実施形態においては、フィンガプリント照合モジュール２４０は、クエリフィンガプリントが、少なくとも１つの既知の参照フィンガプリントと一致したことを決定するように構成され、および／またはプログラムされる。例えば、フィンガプリント照合モジュール２４０は、クエリフィンガプリントと既知の参照フィンガプリントのうちの少なくとも１つとの間の類似性が、谷本距離測定、マンハッタン距離測定、および／または照合する画像もしくは他の視覚ベースのコンテンツと関連付けられた他の距離測定と関連付けられた、事前決定されている閾値を満たすと決定することによって、クエリフィンガプリントが、少なくとも１つの既知の参照フィンガプリントと一致したと決定することができる。
【００４０】
例えば、フィンガプリント照合モジュール２４０は、谷本またはマンハッタン距離測定を使用して、クエリフィンガプリントを１つまたは複数の参照フィンガプリントと比較し、距離測定が事前決定されている閾値を満たすこと（例えば、ある距離閾値以内であること）を比較が示すとき、フィンガプリントが一致したと決定することができる。もちろん、フィンガプリント照合モジュール２４０は、クエリフィンガプリントが参照フィンガプリントと一致するかどうかを決定するために、他の距離測定技法の中でも特に、ユークリッド、コサイン、ＫＬダイバージェンス、および／または板倉距離測定技法などの、他の照合技法を利用することができる。
【００４１】
いくつかの例示的な実施形態においては、ビデオ識別システム１９０は、クエリフィンガプリントを参照フィンガプリントと照合するとき、フィンガプリントの様々な異なるブロックサイズ（例えば、フレームの数、またはフレームレート）を利用することができる。例えば、参照フィンガプリントは、５ｆｐｓに設定し、フィンガプリントについて８ビット値（３２バイト／フレーム）を仮定すると、近似的にランタイムの５６０ＫＢ／ｈを占有することができ、オフセット誤差を含むことができるクエリフィンガプリントは、１５ｆｐｓ以上に設定することができる。この例においては、インデックスの問い合わせは、参照フィンガプリントインデックスの複数の参照フレーム（例えば、参照フィンガプリントに対して３つのフレーム）を問い合わせることを含むことができる。別の例として、参照フィンガプリントは、１５ｆｐｓに設定することができ、一方、クエリフィンガプリントは、５ｆｐｓに設定される。この例においては、クエリフィンガプリントを参照フィンガプリントと比較することは、クエリフィンガプリントフレームの各々を参照フィンガプリントインデックスの複数の参照フレームと比較することを含むことができる。
【００４２】
したがって、いくつかの例示的な実施形態においては、ビデオ識別システム１９０は、フィンガプリントのブロックサイズを変更することによって、クエリフィンガプリントを参照フィンガプリントと照合するための照合レートを最適化することができる。例えば、フィンガプリント照合モジュール２４０は、クエリフィンガプリントを、１秒の参照ビデオコンテンツ、０．５秒の参照ビデオコンテンツ、および１分の参照ビデオコンテンツなどと照合することができる。いくつかのケースにおいては、照合の正確な時間は、決定することができないことがある。例えば、ビデオが、静止画像を含む場合、静止画像を示すビデオのいずれの部分も、静止画像セグメントの全長と一致する。
【００４３】
上で説明されたように、いくつかの小区画は、他の小区画と異なるスケールを有することができる。大きいスケールの小区画は、小さいスケールの小区画よりも、一致を識別するときに重要なことがある。例えば、１ビット値を使用するとき、一致は、閾値を下回る不一致ビットの数に基づいて、識別することができ、すべてのビットは、平等に扱われる。別の例として、一致は、第１の閾値を下回る不一致の小さいスケールのビットの数、および第２の閾値を下回る不一致の大きいスケールのビットの数に基づいて、識別することができる。第２の閾値は、ゼロとすることができる。
【００４４】
いくつかの例示的な実施形態においては、識別モジュール２５０は、クエリフィンガプリントが少なくとも１つの参照フィンガプリントと一致したとの決定に基づいて、クライアントデバイス１５０においてキャプチャされたビデオコンテンツを識別するように構成され、および／またはプログラムされる。例えば、識別モジュール２５０は、ビデオコンテンツの名前またはタイトル、クライアントデバイス１５０によって現在提示されている、ビデオコンテンツ内のロケーション、およびビデオコンテンツを提供するチャンネルまたは放送局などを識別することができる。
【００４５】
図３は、いくつかの例示的な実施形態による、クライアントデバイス１５０および置換コンテンツサーバ１８０のコンポーネントを図説するブロック図３００である。クライアントデバイス１５０は、セットトップボックス識別子モジュール３１０と、ビデオソース識別子モジュール３２０と、ビデオオーバレイモジュール３３０とを含み、すべては、互いに通信するように構成される。置換コンテンツサーバ１８０は、ビデオ提供モジュール３４０と、テンプレート提供モジュール３５０とを含む。
【００４６】
セットトップボックス識別子モジュール３１０は、クライアントデバイス１５０に接続されたセットトップボックス１４０を識別する。例えば、セットトップボックス１４０とクライアントデバイス１５０が、高精細マルチメディアインターフェース（ＨＤＭＩ(登録商標)）ケーブルによって接続されるとき、セットトップボックス１４０の拡張ディスプレイ識別データ（ＥＤＩＤ）は、セットトップボックス１４０を識別するのに役立てることができる。
【００４７】
別の例として、セットトップボックス識別子モジュール３１０は、ユーザがそれを通してセットトップボックス１４０を識別することができるユーザインターフェースを、クライアントデバイス１５０上に提示することができる。これには、ドロップダウンリストから製造および型番号を選択すること、またはテキストフィールドに情報を入力することによって、ユーザに手動でセットトップボックス１４０を識別させることが、伴うことができる。ユーザ対話識別には、セットトップボックス１４０の特定のメニューオプションを起動するようにユーザに命令することも、伴うことができる。クライアントデバイス１５０は、異なるセットトップボックスから既知のメニューのデータベースを入手し、それらを、ユーザがセットトップボックス１４０についてのメニューを起動した後に受信されたビデオデータと比較する。一致が見出されたとき、セットトップボックス１４０は、識別される。いくつかの例示的な実施形態においては、セットトップボックス１４０を一意的に識別するために、セットトップボックス１４０上における複数のユーザアクションが、必要とされる。例えば、第１のメニューは、可能な一致を８０％カットするのに役立てることができ、第２のメニューは、可能な一致をさらに８０％（すなわち、可能な一致の元のセットの４％まで）カットするのに役立てることができ、セットトップボックス１４０を一意的に識別するためには、第３のメニューが、必要とされることができる。
【００４８】
ビデオソース識別子モジュール３２０は、クライアントデバイス１５０に提供されるビデオのソースを識別する。いくつかの例示的な実施形態においては、ビデオソース識別子モジュール３２０は、クエリフィンガプリント生成器１６０によって実施される。
【００４９】
ビデオオーバレイモジュール３３０は、セットトップボックス識別子モジュール３１０によって識別された特定のセットトップボックスに基づいて、置換コンテンツサーバ１８０から受信されたビデオデータを、セットトップボックス１４０から受信されたビデオデータと合成することができる。例えば、地方コマーシャルは、ビデオソース識別子モジュール３２０による地方ビデオソースの識別に基づいて、ビデオ提供モジュール３４０によって提供することができる。地方コマーシャルは、セットトップボックス１４０から受信されたビデオデータの一部をオーバレイするピクチャインピクチャとして、表示することができる。オーバレイされる部分は、セットトップボックス識別子モジュール３１０によるセットトップボックス１４０の識別に基づいて、決定することができる。
【００５０】
置換コンテンツサーバ１８０のビデオ提供モジュール３４０は、識別されたビデオソースに基づいて、置換（または代用）ビデオコンテンツを、クライアントデバイス１５０に提供する。例えば、ビデオ提供モジュール３４０は、数々の地方用の地方コマーシャルを全国にわたる特定の放送局用の全国コマーシャルにマッピングする、データベースにアクセスすることができる。このようにして、全国放送局の特定の全国コマーシャルは、セットトップボックス１４０に信号を提供している地方放送局に応じて、異なる地方コマーシャルによって置換することができる。
【００５１】
置換コンテンツサーバ１８０のテンプレート提供モジュール３５０は、識別されたセットトップボックスに基づいて、テンプレートをクライアントデバイス１５０に提供する。例えば、１つの製造業者によるセットトップボックスは、別の製造業者によるセットトップボックスとは異なる、メニューテンプレートのセットを有することができる。同様に、同じ製造業者からの異なるモデルは、メニューテンプレートの異なるセットを有することができる。さらに、同じモデル用の異なるファームウェアリビジョンは、メニューテンプレートの異なるセットを有することができる。したがって、セットトップボックス識別子をテンプレートのセットにマッピングするデータベースが、置換コンテンツサーバ１８０上において維持され、要求時には、全部または一部が、クライアントデバイス１５０に送信される。
【００５２】
テンプレートは、手動で、またはプログラム的に、生成することができる。手動生成の場合、人が、クライアントデバイスおよびセットトップボックスに働きかけ、セットトップボックスの操作によって、セットトップボックスによって生成することができる異なるメニューの各々の提示を生じさせる。クライアントデバイスの画面上におけるメニューの提示の分析を通して、人は、異なるメニューフォーマットの各々のためのテンプレートを生成する。テンプレートは、後でアクセスするために、置換コンテンツサーバ１８０のデータベース内に記憶される。
【００５３】
テンプレートのプログラム生成の場合、１つまたは複数のクライアントデバイス（例えば、クライアントデバイス１５０）、および対応するセットトップボックス（例えば、セットトップボックス１４０）は、使用中（例えば、クライアントデバイスによる置換コンテンツサーバ１８０へのステータスの報告を通して）、監視される。いくつかの例示的な実施形態においては、クライアントデバイス、または置換コンテンツサーバ１８０は、領域（例えば、画面エリアの四半分または１６分の１）のフィンガプリンティングを使用して、セットトップボックスから受信されたビデオが、既知のビデオデータ（例えば、認識されているケーブル番組）の部分、および未知のビデオデータの部分を、いつ含むかを決定する。未知のビデオデータは、セットトップボックスによって供給された追加のビデオコンテンツであると仮定される。したがって、受信されたビデオデータのピクセルレベルの分析が、置換コンテンツサーバ１８０によって実行されて、既知のビデオデータによって占有される領域、未知のビデオデータによって占有される領域、および（例えば、アルファブレンディングを通した）既知のビデオデータと未知のビデオデータの混合によって占有される領域を決定する。領域から、テンプレートが、生成され、データベース内にまだ記憶されていない場合、後でアクセスするために、置換コンテンツサーバ１８０のデータベース内に記憶される。
【００５４】
いくつかの例示的な実施形態においては、テンプレートのプログラム生成は、クライアントデバイスによってセットトップボックスから受信されたビデオデータの複数のフレームを監視することを含む。ビデオデータの順次フレームを比較することによって、素早く変化しているビデオデータの領域を、静止している、または相対的に僅かな変化しか被っていない領域から区別することができる。この分析から、素早く変化している領域は、ビデオ番組を表示しており、静止している領域は、セットトップボックスによって提供された情報を表示していると推測することができる。同様に、素早く変化しているが、ビデオデータの残りのそれとは実質的に異なる平均色を有する領域は、動的ビデオの静的オーバレイとの混合が生じていることを示すことができる。したがって、混合領域も、複数のフレームの分析を通して、識別することができる。領域から、テンプレートが、生成され、データベース内にまだ記憶されていない場合、後でアクセスするために、置換コンテンツサーバ１８０のデータベース内に記憶される。
【００５５】
図４は、クライアントデバイス１５０の表示エリアの領域４１０および領域４２０を含む、動的ビデオオーバレイを図説する、例示的な実施形態における、ディスプレイ図４００である。セットトップボックス１４０から受信されたビデオは、領域４１０における表示のためにパススルーされる。置換ビデオデータは、領域４２０内に提示される。図４の例において見ることができるように、領域４２０は、クライアントデバイス１５０の表示エリアよりも小さい、長方形領域である。領域４２０は、また、表示エリアと共通の縁を有さない。他の例示的な実施形態においては、領域４２０は、他の形状、サイズ、および位置を有する。いくつかの例示的な実施形態においては、セットトップボックス用のメニューが、領域４１０を占有し、コンテンツソース１１０から受信された元のビデオデータは、スケーリング（例えば、縮小）され、セットトップボックス１４０によって再配置され、セットトップボックス１４０から領域４２０内のクライアントデバイス１５０に送信される。したがって、置換ビデオデータが、領域４２０内に提示されるとき、コンテンツソース１１０から受信されたビデオデータは、置換され、一方、領域４１０内に示されたメニューは、ユーザに見え続ける。
【００５６】
図５は、クライアントデバイス１５０の表示エリアの領域５１０および領域５２０を含む、動的ビデオオーバレイを図説する、例示的な実施形態における、ディスプレイ図５００である。セットトップボックス１４０から受信されたビデオは、領域５１０における表示のためにパススルーされる。置換コンテンツサーバ１８０から受信された置換ビデオデータは、領域５２０に合わせて切り取られ、領域５２０内に提示される。いくつかの例示的な実施形態においては、セットトップボックス１４０用のメニューが、領域５１０を占有し、コンテンツソース１１０から受信された元のビデオデータの一部が、領域５２０に合わせて、セットトップボックス１４０によって切り取られ、セットトップボックス１４０から領域５２０内のクライアントデバイス１５０に送信される。したがって、置換ビデオデータの一部が、領域５２０内に提示されるとき、コンテンツソース１１０から受信されたビデオデータは、置換され、一方、領域５１０内に示されたメニューは、ユーザに見え続ける。図５において見ることができるように、領域５２０の上縁は、表示エリアの上縁と同じであり、領域５２０の左縁および右縁は、表示エリアの左縁および右縁と共有されるが、領域５２０は、ディスプレイの全高を占有しない。
【００５７】
図６は、クライアントデバイス１５０の表示エリアの領域６１０および領域６２０を含む、動的ビデオオーバレイを図説する、例示的な実施形態における、ディスプレイ図６００である。セットトップボックス１４０から受信されたビデオは、領域６１０における表示のためにパススルーされる。領域６１０に対応する部分を差し引いた、置換コンテンツサーバ１８０から受信された置換ビデオデータが、領域６２０内に提示される。いくつかの例示的な実施形態においては、セットトップボックス用のメニューが、領域６１０を占有し、領域６２０に対応する、コンテンツソース１１０から受信された元のビデオデータの一部は、セットトップボックス１４０から領域６２０内のクライアントデバイス１５０に送信される。したがって、置換ビデオデータの一部が、領域６２０内に提示されるとき、コンテンツソース１１０から受信されたビデオデータは、置換され、一方、領域６１０内に示されたメニューは、ユーザに見え続ける。
【００５８】
図７は、クライアントデバイス１５０の表示エリアの領域７１０、領域７２０、および領域７３０を含む、動的ビデオオーバレイを図説する、例示的な実施形態における、ディスプレイ図７００である。セットトップボックス１４０から受信されたビデオは、領域７１０における表示のためにパススルーされる。領域７１０に対応する部分を差し引いた、置換コンテンツサーバ１８０から受信された置換ビデオデータが、領域７２０内に提示される。セットトップボックス１４０から受信されたビデオは、置換ビデオデータと混合され、領域７３０内に提示される。例えば、領域７１０と接する領域７３０の部分は、セットトップボックス１４０から受信されたビデオから全面的に（またはほぼ全面的に）作成され、領域７２０と接する領域７３０の部分は、置換ビデオから全面的に（またはほぼ全面的に）作成されるように、勾配を適用することができる。
【００５９】
いくつかの例示的な実施形態においては、さらなる画像処理が、領域７３０において適用され、セットトップボックス１４０による画像処理の適用を逆にする。例えば、セットトップボックス１４０は、入力ビデオストリームと混合されたセットトップボックス１４０によって提供される情報を有することができる。したがって、この混合された情報は、セットトップボックス１４０への入力ビデオに対応する第１のビデオ成分、およびセットトップボックス１４０によって提供されるオーバレイ情報に対応する第２のビデオ成分と異なる、第３のビデオ成分であると見なすことができる。ビデオオーバレイモジュール３３０の出力から入力ビデオストリームを完全に除去するために、さらなるフィルタリングが、第３のビデオ成分の領域（例えば、領域７３０）に対して適用される。
【００６０】
いくつかの例示的な実施形態においては、適用されるフィルタリングは、明るさに依存する。事前決定された明るさ値を超える領域７３０の部分は、前景にあり、ユーザに伝えられるべき情報を含むと決定される。事前決定された明るさ値を下回る領域７３０の部分は、背景にあると決定され、したがって、含まれるいずれの情報も、除去されるべきである。他の例示的な実施形態においては、背景情報を除去するために、各背景ピクセルの色は、すべての背景ピクセルの平均色になるように変更される。例えば、フットボールの試合のビデオの上に重ね合わされたライトブルーの背景は、ひとたび平均化されると、ライトブルーの色合いを維持し、フットボールの試合についてのいかなる情報も伝えない。他の例示的な実施形態においては、背景色は、テンプレート内に記憶される。したがって、前景ピクセルの色は、維持され、残りのピクセルは、背景色で置換される。
【００６１】
さらなる例示的な実施形態においては、画像処理は、入力ビデオストリームを使用してセットトップボックス１４０によって実行された画像処理を逆にする。例えば、（例えば、フィンガプリンティングを通して）入力ビデオストリームを識別することによって、（例えば、ビデオ識別システム１９０から）元の入力ビデオストリームを入手することができる。セットトップボックス１４０によって適用された変更の逆を適用することによって、セットトップボックス１４０によってオーバレイされた情報が、回復される。例えば、セットトップボックス１４０が、８０％の重みのオーバレイ情報を２０％の重みの入力ビデオ情報と混合することによって、出力ビデオを生成した場合、クライアントデバイス１５０は、２０％の重みの入力ビデオを減算し、残りに１．２５を乗算することによって、プロセスを逆にすることができる。回復されたオーバレイは、その後、セットトップボックス１４０によって以前適用されたのと同じ混合を適用することによって、置換ビデオコンテンツに適用することができる。この例においては、それは、８０％の重みのオーバレイを２０％の重みの置換ビデオコンテンツとともに用いることによって、表示用のピクセルを生成することを意味する。
【００６２】
図８は、ビデオオーバレイを動的に提供するための、いくつかの例示的な実施形態における、方法８００を図説するフローチャートである。方法８００は、動作８１０、８２０、８３０、８４０、および８５０を含む。例として、限定することなく、動作８１０〜８５０は、図１のコンポーネント１１０〜１９０、図２のモジュール２１０〜２５０、および図３のモジュール３１０〜３５０によって実行されるものとして説明される。
【００６３】
動作８１０において、セットトップボックス識別子モジュール３１０が、ビデオデータをクライアントデバイス（例えば、クライアントデバイス１５０）に提供する、セットトップボックス（例えば、セットトップボックス１４０）を識別する。例えば、セットトップボックス１４０とクライアントデバイス１５０が、ＨＤＭＩ(登録商標)ケーブルによって接続されているとき、セットトップボックス１４０のＥＤＩＤは、セットトップボックス１４０を識別するのに役立てることができる。別の例として、セットトップボックス識別子モジュール３１０は、ユーザがそれを通して（例えば、選択肢のリストから選択することによって）セットトップボックス１４０を識別することができるユーザインターフェースを、クライアントデバイス１５０上に提示することができる。第３の例として、セットトップボックス識別子モジュール３１０は、それのインターネットプロトコル（ＩＰ）アドレスを、検索のために、置換コンテンツサーバ１８０（または別のサーバ）に送信することができる。この例においては、受信サーバは、ＩＰアドレスをケーブル会社サービスエリアにマッピングし、ケーブル会社をそれらの好ましいセットトップボックスにマッピングする、データベースを維持する。したがって、クライアントデバイス１５０のＩＰアドレスは、セットトップボックス１４０である可能性が最も高いデバイスのタイプを識別するために使用することができる。
【００６４】
セットトップボックス１４０が、ひとたびセットトップボックス識別子モジュール３１０によって識別されると、セットトップボックス１４０についての識別子が、後でアクセスするために、クライアントデバイス１５０内に記憶される。例えば、ユーザは、クライアントデバイス１５０を最初に使用するときに、セットトップボックス１４０を識別するように促されることがあり、将来使用するときは、ストレージから情報を入手することができるので、促されなくてよい。
【００６５】
ビデオソース識別子モジュール３２０は、受信されたビデオデータの部分を識別する（動作８２０）。例えば、受信されたビデオデータは、セットトップボックス１４０によって生成されたメニューを用いてオーバレイされた、放送ＴＶ信号を含むことができる。小区画選択モジュール２１０および値算出モジュール２２０を使用して、受信されたビデオデータについての１つまたは複数のフィンガプリントを生成し、クライアントデバイス１５０は、フィンガプリントをビデオ識別システム１９０に送信する。応答して、クライアントデバイス１５０は、放送ＴＶ信号を含む受信されたビデオデータの部分を識別するのに役立つ、放送ＴＶ信号に対応する識別子を受信する。
【００６６】
代替として、動作８２０は、フィンガプリンティングを用いず、特定のパターンを求めてビデオデータを分析することによって、実行することができる。例えば、セットトップボックス１４０またはクライアントデバイス１５０によって提供される特定のビデオオーバレイは、画面上の特定のロケーションにブランド名を含むことができる。したがって、特定のビデオオーバレイが存在するときを決定するために、画面のその部分を、ブランド名のキャプチャされた画像と比較することができる。別の例として、特定のビデオオーバレイは、画面上の特定のロケーションにアイコンを、または通知を含むことができる。説明のために、着信電話呼に関する通知においては、電話アイコンを示すことができる。したがって、通知が存在するときを決定するために、画面の様々な部分が、電話アイコンの記憶された画像と比較される。以下の疑似コードは、いくつかの例示的な実施形態を表している。
【００６７】
templateID templateMatch(videoInStream, deviceID) {
// 入力ストリームについて一致が見出だされるまで、
// 中間デバイスについての利用可能なテンプレートにわたって繰り返す。
// 一致したストリームのtemplateIDを返し、存在しない場合は0を返す。
matchFound = 0;
do {
currentTemplate = getNextTemplate(deviceID);
if (singleTemplateMatch(videoInStream, currentTemplate))
matchFound = currentTemplate;
} until (matchFound != 0)
return matchFound;
}
Boolean singleTemplateMatch(videoInStream, template) {
// テンプレートを入力ストリームと比較する。
// テンプレートが一致した場合はTRUEを返し、それ以外の場合はFALSEを返す。
region = template.region;
count = 0;
for (x = region.x; x < region.width; x++)
for (y = region.y; y < region.height; y++)
if ((videoInStream.currentFrame(x,y) - template(x,y)) ** 2) <= PIXEL_MATCH_DIFFERENCE)
count++;
// 正確なピクセル一致の場合は、PIXEL_MATCH_DIFFERENCE = 0
maxCount = x*y;
threshold = PERCENT_THRESHOLD * maxCount;
if (count >= threshold)
return TRUE;
else
return FALSE;
}
【００６８】
上記のｓｉｎｇｌｅＴｅｍｐｌａｔｅＭａｔｃｈ（）の例示的な実施形態は、距離尺度として、対応するピクセル間の差の平方を使用する。他の例示的な実施形態は、差の絶対値、差の正規化された平方、相関係数、正規化された相関係数、相互相関、正規化された相互相関、またはそれらの任意の適切な組み合わせを使用する。
動作８３０において、クライアントデバイス１５０または置換コンテンツサーバ１８０は、識別されたビデオデータ、および／またはクライアントデバイス１５０と関連付けられたプロファイル情報に基づいて、置換ビデオを決定する。例えば、特定のＲ指定コンテンツの識別に基づいて、Ｒ指定コンテンツのＰＧ指定代用バージョンを選択することができる。別の例として、特定の全国コマーシャルを置換するために、地方コマーシャルを選択することができる。
【００６９】
ビデオオーバレイモジュール３３０は、動作８４０において、識別されたセットトップボックス、およびビデオデータに基づいて、オーバレイマスクを決定する。いくつかの例示的な実施形態においては、特定のメニューまたは他の情報要素がセットトップボックス１４０によって表示されているかどうかを決定するために、ビデオデータが、既知のビデオフレームのセットと比較される。例えば、セットトップボックス１４０によって、画面の上部に、あるピクセルが黒であり、あるエリアが、赤緑青（ＲＧＢ）カラータプルで表現して、（１１０，１１０，１１０）〜（１６０，１６０，１６０）の範囲内の平均ピクセル色を有する、情報バーを提示することができる。したがって、受信されたビデオデータの１つのフレーム、または順次フレームのセットが、情報バーの特徴を有するとき、ビデオオーバレイモジュール３３０は、パススルー部分が、バーによって占有されるエリアに対応し、置換部分が、セットトップボックス１４０によって受信された元のビデオコンテンツによって占有されるエリアに対応する、対応するオーバレイマスクを識別する。
【００７０】
図４〜図７において提示された例に対応するもののようなテンプレートは、いくつかの異なる方法で、オーバレイの領域またはゾーンを示すことができる。例えば、オーバレイゾーンの境界の座標を、テンプレートによって提供することができる。代替として、ディスプレイ全体のビットマップが、オーバレイゾーンを示すことができる（例えば、値１は、対応するピクセルがオーバレイの部分であることを示し、値０は、対応するピクセルがオーバレイの部分でないことを示す）。
【００７１】
上記の例においては、マスクは、セットトップボックスによって生成されたオーバレイ情報および置換ビデオコンテンツの両方をユーザが見ることを可能にするように、選択される。いくつかの例示的な実施形態においては、マスクは、セットトップボックスによって生成されたオーバレイ情報を抑制するように、選択される。例えば、オーバレイ情報上において、そこに含まれる任意のテキストを識別するために、光学文字認識（ＯＣＲ）を実行することができる。オーバレイがパススルーされるべきか、それとも抑制されるべきかを決定するために、テキストに基づいて、データベース検索を実行することができる。オーバレイが、抑制されるべきとき、オーバレイの領域に置換ビデオコンテンツを提示するマスクが、選択される。２つの手法を混合して、いくつかのオーバレイコンテンツは、ユーザに提示され、他のオーバレイコンテンツは、抑制されることを可能にすることができる。例えば、オーバレイが、表示されている製品の説明など、入力ビデオコンテンツと関連付けられたテキスト情報を提示している場合、テキスト情報が、置換ビデオコンテンツに関連している可能性は高くない。したがって、テキスト情報を抑制することは、置換ビデオコンテンツを視聴する際のユーザのエクスペリエンスを改善する。
【００７２】
動作８５０において、ビデオオーバレイモジュール３３０は、マスクを使用して、ビデオデータの部分および置換ビデオの部分の表示を生じさせる。上記の例を続けると、マスクのパススルー部分に対応する情報バーを含むビデオデータが、マスクの置換部分に対応する置換ビデオの部分とともに表示される。いくつかの例示的な実施形態においては、置換ビデオの部分の表示は、置換ビデオを再配置すること、またはサイズ変更することを含む。例えば、図４のマスクが、使用される場合、置換ビデオは、サイズが縮小され、領域４２０を占有するように再配置される。
【００７３】
いくつかの例示的な実施形態においては、マスクは、時間につれて変化する。例えば、セットトップボックス１４０によって提示されるオーバレイされた情報は、時間につれて動かされ、位置を変えることができる。したがって、受信されたビデオデータおよび置換ビデオデータが提示される領域のロケーションは、時間につれて変化することができる。いくつかの例においては、マスク、および／または置換ビデオのサイズ／ロケーションを時間につれて変化させることは、動作８４０、８５０を繰り返すことによって、実施することができる。例えば、動作８４０、８５０は、（例えば、着信ビデオが、対応するマスクを有するテンプレートともはや一致しないときに）ビデオオーバレイモジュール３３０が、オーバレイマスクを使用すべきであるともはや決定しなくなるまで、反復的方法で繰り返すことができる。いくつかの例においては、マスク、および／または置換ビデオのサイズ／ロケーションを時間につれて変化させることは、特定のマスクおよび／またはテンプレートと関連付けられた事前決定された指定時刻に作動するルーチン（例えば、マスクの態様が時間につれて予測可能な方法で変化するアニメーションルーチン）に基づいて、実施することができる。
【００７４】
方法８００は、クライアントデバイス１５０によって提供されるビデオ要素を補償するために、僅かな変更を施して、実行することもできる。クライアントデバイス１５０によって提供されたビデオ要素は、セットトップボックス１４０によって提供されたそれらと同じ方法で、ビデオデータの分析によって検出することができる。代替として、クライアントデバイス１５０は、ビデオオーバレイモジュール３３０にユーザ対話を報告することができる。例えば、クライアントデバイス１５０が、メニューを表示するためのユーザコマンドを受信したとき、その情報は、ビデオオーバレイモジュール３３０に提供することができる。表示される特定のメニューに基づいて、ビデオオーバレイモジュール３３０は、適用するマスクを識別する。
【００７５】
図９は、ビデオオーバレイを動的に提供するための、いくつかの例示的な実施形態における、方法９００を図説するフローチャートである。方法９００は、動作８１０〜８５０、および動作９１０〜９５０を含む。動作８１０〜８５０は、図８に関して、上で説明されている。例として、限定することなく、動作９１０〜９５０は、図１のコンポーネント１１０〜１９０、図２のモジュール２１０〜２５０、および図３のモジュール３１０〜３５０によって実行されるものとして説明される。
【００７６】
動作９１０において、クライアントデバイス１５０は、セットトップボックス１４０によって供給されるビデオデータの第２のビデオデータへの変化を検出する。例えば、セットトップボックス１４０のユーザが、表示されているチャンネルを変更したかもしれない。
【００７７】
変化の検出に応答して、ビデオオーバレイモジュール３３０は、マスクの適用を停止し、セットトップボックス１４０から受信されたビデオの全体が表示されることを可能にする（動作９２０）。したがって、セットトップボックス１４０のユーザは、変更されたチャンネルの結果を見る。
【００７８】
動作９３０、９４０において、クライアントデバイス１５０は、セットトップボックス１４０によって供給されるビデオデータの第２の変化を検出する。第２の変化は、受信されるビデオデータを以前の状態に戻す。例えば、セットトップボックス１４０のユーザは、表示されている元のビデオチャンネルに戻したかもしれない。検出は、予想されるフィンガプリントのセットをビデオ識別システム１９０から受信し、予想されるフィンガプリントをクエリフィンガプリント生成器１６０によって生成されたフィンガプリントと比較することによって、達成することができる。したがって、ユーザが、識別されたコンテンツから離れるようにチャンネルを変更したとき、フィンガプリントは、一致を止め、ユーザが、識別されたコンテンツに戻るようにチャンネルを変更したとき、フィンガプリントは、一致を再開する。
【００７９】
動作９５０において、第２の変化は第１のビデオデータへの復帰であるとの決定に応答して、ビデオオーバレイモジュール３３０は、第１のビデオデータの部分および置換ビデオの部分の表示を生じさせるために、マスクの使用を再開する。したがって、クライアントデバイス１５０のユーザは、動作８５０において提示された置換ビデオへの復帰に気づく。
【００８０】
図１０は、ビデオオーバレイを動的に提供するための、いくつかの例示的な実施形態における、方法１０００を図説するフローチャートである。方法１０００は、動作８１０、８２０、８３０、８４０、１０１０、および１０２０を含む。動作８１０〜８４０は、図８に関して、上で説明されている。例として、限定することなく、動作１０１０、１０２０は、図１のコンポーネント１１０〜１９０、図２のモジュール２１０〜２５０、および図３のモジュール３１０〜３５０によって実行されるものとして説明される。
【００８１】
動作１０１０において、ビデオソース識別子モジュール３２０は、識別されたビデオデータの再生のレートを決定する。例えば、ビデオ識別システム１９０は、受信されたビデオデータについて生成されるフィンガプリントと比較される、ビデオデータについての予想されるフィンガプリントのセットを提供することができる。したがって、受信されたビデオデータの連続するフレームについてのフィンガプリントが、非順次的な予想されるフィンガプリント（例えば、１つまたは３つおきのフィンガプリント）と一致したとき、受信されたビデオは、ビデオ識別システム１９０によって使用される参照ビデオとは異なるレート（例えば、２倍速または４倍速）で再生されていると決定される。
【００８２】
動作１０２０において、ビデオオーバレイモジュール３３０は、マスクおよび再生のレートに基づいて、セットトップボックス１４０から受信されたビデオデータの部分、および置換ビデオの部分の表示を生じさせる。例えば、動作８５０におけるように、セットトップボックス１４０から受信されたビデオのどの部分がパススルーされ、どの部分が置換ビデオによって置換されるかを決定するために、マスクが、使用される。加えて、置換ビデオの再生のレートを制御するために、再生のレートが、使用される。このように、クライアントデバイス１５０およびセットトップボックス１４０のユーザは、早送り、巻き戻し、および一時停止などの再生制御が、それらが最初に表示されたビデオに対して作用するのと同じ方法で、置換ビデオに対して作用することに気づく。
【００８３】
図１１は、ビデオオーバレイを動的に提供するための、いくつかの例示的な実施形態における、方法を図説するフローチャートである。方法１１００は、動作１１１０〜１１５０を含む。例として、限定することなく、動作１１１０〜１１５０は、図１のコンポーネント１１０〜１９０、図２のモジュール２１０〜２５０、および図３のモジュール３１０〜３５０によって実行されるものとして説明される。
【００８４】
動作１１１０において、クライアントデバイス１５０のセットトップボックス識別子モジュール３１０は、コンテンツプロバイダ（例えば、コンテンツソース１１０）、および中間デバイス（例えば、セットトップボックス１４０）から、コンテンツを含むビデオ入力ストリームを入手する。例えば、セットトップボックス１４０は、ビデオストリームを、ケーブル接続を介してコンテンツソース１１０から受信し、ビデオストリームを変更し、変更されたビデオストリームを、ＨＤＭＩ(登録商標)接続を介してクライアントデバイス１５０に送信したものとすることができる。ビデオ入力ストリームは、それが受信されたときに、またはデータストレージから（例えば、クライアントデバイス１５０に統合されたソリッドステートドライブから）、クライアントデバイス１５０によって入手することができる。
【００８５】
セットトップボックス識別子モジュール３１０は、動作１１２０において、中間デバイスによって生成された画面部分に対応するテンプレートを入手する。例えば、クライアントデバイス１５０は、中間デバイスによって実行されたある画像操作を知ることができる。画像操作は、画面の特定の部分に対応することができる。説明のために、セットトップボックス１４０は、画面の上部または下部にメニューを配置することによって、コンテンツソース１１０から受信されたビデオ入力ストリームを変更することができる。セットトップボックス識別子モジュール３１０によって入手されるテンプレートは、中間デバイスによって生成されたビデオを含む画面部分に対応する。
【００８６】
動作１１３０において、セットトップボックス識別子モジュール３１０は、ビデオ入力ストリームのフレームがテンプレートと一致したと決定するために、ビデオ入力ストリームを分析する。例えば、テンプレートは、ビデオ入力ストリームがセットトップボックス１４０によって生成されたメニューを含むとき、特定の色である、あるピクセルを示すことができる。ビデオの各着信フレームは、画面部分がメニューを含む可能性が高いかどうかを決定するために、テンプレートと比較することができる。ビデオのいくつかのフレームは、分析されなくてよい。例えば、１つおきまたは４つおきのフレームをテンプレートと比較し、それによって、比較に費やされるプロセッサ時間の量を減らすことができる。いくつかの例示的な実施形態においては、動作１１３０は、置換コンテンツが提示されている間だけ実行され、それによって、誤検出が生成される機会を減らす。
【００８７】
テンプレートマッチングは、ビデオ入力ストリームのフレームのダウンサンプリングされたバージョンの、テンプレートのダウンサンプリングされたバージョンとの、ピクセルごとの比較を使用して、実行することができる。（ダウンサンプリングされた）フレームとテンプレートとの間のピクセル距離を、算出することができる。例えば、一致しないピクセルの数を、ピクセル差として使用することができる。代替として、（例えば、ＲＧＢ、輝度および色差（ＹＵＶ）、色相、彩度、輝度（ＨＳＬ）、または色相、彩度、明度（ＨＳＶ）色空間における）各ピクセルについての色距離を算出することができ、色距離の絶対値の総和が、ピクセル距離として用いられる。決定されたピクセル距離は、閾値と比較され、テンプレートがビデオ入力ストリームと一致するかどうかを決定する。いくつかの例示的な実施形態においては、テンプレートとビデオ入力ストリームは、相互相関している。相互相関は、１つの系列が他のものに後れを取るとき、フレーム系列の類似性の尺度を決定することによって、マルチフレームテンプレートの扱いを可能にする。
【００８８】
いくつかの例示的な実施形態においては、複数のテンプレートが、ビデオ入力ストリームと比較される。例えば、図１６のテーブル１６４０は、複数のセットトップボックスの各々についてのテンプレートを記憶することができる。テーブル１６４０における各テンプレートは、ビデオ入力ストリームのどのピクセルが、テンプレートの画像のピクセルと比較されるべきであるかを示す、ビットマップを含む。セットトップボックス１４０が、すでに識別されているときでさえも、複数のタイプの複数のテンプレートが、ビデオ入力ストリームと比較するために利用可能である。いくつかの例示的な実施形態においては、あまり計算コストが高くないテンプレートが最初にテストされるように、テンプレートは、計算の複雑さによってソートされる。第１のマッチングテンプレートが、使用されて、比較プロセスを停止させることができる。代替として、すべてのテンプレートが、比較されてよく、最良の一致（例えば、ビデオ入力ストリームフレームからのピクセル距離が最小のテンプレート）が、使用されることができる。
【００８９】
ビデオオーバレイモジュール３３０は、動作１１４０において、ビデオ入力ストリームのフレームがテンプレートと一致したとの決定に基づいて、ビデオ出力ストリームを生成する。例えば、コンテンツソース１１０からのコンテンツが、クライアントデバイス１５０によって置換コンテンツに置換されており、セットトップボックス１４０が、メニューなどの補足コンテンツを提供しているとの決定が行われた場合、メニューが検出されたときは、メニューがビデオ出力ストリーム内に現れることを可能にするために、適切なオーバレイマスクを適用することなどによって、ビデオ出力ストリームは、メニューを含むように変更することができる。
【００９０】
動作１１５０において、ビデオオーバレイモジュール３３０は、ビデオ出力ストリームが、ディスプレイ（例えば、クライアントデバイス１５０のディスプレイ）上に提示されるようにする。いくつかのクライアントデバイス１５０は、ビデオオーバレイモジュール３３０が、ビデオ入力ストリームを提示するディスプレイの部分、および置換ビデオコンテンツを提示するディスプレイの別の部分を指定することを可能にする、アプリケーションプログラミングインターフェース（ＡＰＩ）を提供する。例えば、部分は、ビデオ入力ストリームピクセルを使用すべきか、それとも置換ピクセルを使用すべきかをピクセルごとに示す、１ビット透明マスクを使用することによって、またはビデオ入力ストリームピクセルと置換ピクセルとの間の混合の程度をピクセルごとに示す、アルファマスクを使用することによって、長方形領域の角隅座標を使用して、指定することができる。それらのクライアントデバイス１５０については、ＡＰＩを使用することができる。それ以外の場合は、任意の部分的な混合または置換が、ビデオオーバレイモジュール３３０によって実行される。
【００９１】
図１２は、ビデオオーバレイを動的に提供するための、いくつかの例示的な実施形態における、方法１２００を図説するフローチャートである。方法１２００は、動作１２１０〜１２４０を含む。例として、限定することなく、動作１２１０〜１２４０は、図２のモジュール２１０〜２５０、および図３のモジュール３１０〜３５０によって実行されるものとして説明される。
【００９２】
動作１２１０において、クライアントデバイス１５０のセットトップボックス識別子モジュール３１０は、第１のコンテンツと、オーバレイゾーン内において第１のコンテンツ上に少なくとも部分的にオーバレイされた半透明オーバレイとを含む、ビデオ入力ストリームを入手する。例えば、第１のコンテンツは、コンテンツプロバイダ（例えば、コンテンツソース１１０）からのコンテンツとすることができ、半透明オーバレイは、中間デバイス（例えば、セットトップボックス１４０）によって提供することができる。例えば、セットトップボックス１４０は、ビデオストリームを、ケーブル接続を介してコンテンツソース１１０から受信し、ビデオストリームを変更し、変更されたビデオストリームを、ＨＤＭＩ(登録商標)接続を介してクライアントデバイス１５０に送信していることができる。ビデオストリームは、それが受信されたときに、またはデータストレージから（例えば、クライアントデバイス１５０に統合されたソリッドステートドライブから）、クライアントデバイス１５０によって入手することができる。
【００９３】
セットトップボックス識別子モジュール３１０は、動作１２２０において、ビデオ入力ストリーム内のオーバレイゾーンの表示を含むテンプレートを入手する。例えば、クライアントデバイス１５０は、中間デバイスによって実行されたある画像操作を知ることができる。画像操作は、画面の特定の部分に対応することができる。説明のために、セットトップボックス１４０は、画面の上部または下部に半透明メニューを配置することによって、コンテンツソース１１０から受信されたビデオ入力ストリームを変更することができる。セットトップボックス識別子モジュール３１０によって入手されるテンプレートは、中間デバイス（例えば、セットトップボックス１４０）によって生成された半透明オーバレイを含む、画面部分に対応する。
【００９４】
ビデオソース識別子モジュール３２０は、フィンガプリンティングを使用して、コンテンツを識別することができる。例えば、受信されたビデオデータは、セットトップボックス１４０によって生成された半透明メニューを用いてオーバレイされる放送ＴＶ信号を含むことができる。受信されたビデオデータについての１つまたは複数のフィンガプリントを生成するために、小区画選択モジュール２１０および値算出モジュール２２０を使用して、クライアントデバイス１５０は、フィンガプリントをビデオ識別システム１９０に送信する。応答して、クライアントデバイス１５０は、放送ＴＶ信号に対応する識別子を受信し、それは、放送ＴＶ信号を含む、受信されたビデオデータの部分を識別するのに役立つ。
【００９５】
ビデオオーバレイモジュール３３０は、動作１２３０において、置換コンテンツ上にオーバレイされた変更された半透明オーバレイを含む、ビデオ出力ストリームを生成する。例えば、コンテンツソース１１０からのコンテンツが、クライアントデバイス１５０によって、置換コンテンツに置換されており、セットトップボックス１４０が、半透明オーバレイをコンテンツソース１１０からのコンテンツに追加したとの決定が行われた場合、ビデオ出力ストリームは、置換コンテンツと、半透明オーバレイの変更されたバージョンとを含む。動作１２４０において、ビデオオーバレイモジュール３３０は、ビデオ出力ストリームが、ディスプレイ（例えば、クライアントデバイス１５０のディスプレイ）上に提示されるようにする。
【００９６】
以下の疑似コードは、いくつかの代替的な実施形態を表している。
semitransparentOverlayTransfer(inputVideoStream, identifiedVideoContent, overlayRegion){
// inputVideoStreamは、受信されたビデオストリームである。
// identifiedVideoContentは、中間デバイスによって実行された変更のない、
// コンテンツプロバイダから送信されたコンテンツである。
// overlayRegionは、検出されたテンプレートによって定義される領域を識別する。
// この方法の起動の前、outputVideoStreamは、半透明オーバレイのない、
// 置換コンテンツを含む。
for (each pixel in overlayRegion) {
// 中間デバイスによって実行される変更を置換コンテンツに伝える。
delta = inputVideoStream(pixel) - identifiedVideoContent(pixel);
outputVideoStream(pixel) += delta;
}
}
semitransparentOverlayTransfer(inputVideoStream, identifiedVideoContent, overlayRegion) {
// inputVideoStreamは、受信されたビデオストリームである。
// identifiedVideoContentは、中間デバイスによって実行された変更のない、
// コンテンツプロバイダから送信されたコンテンツである。
// overlayRegionは、検出されたテンプレートによって定義される領域を識別する。
// この方法の起動の前、outputVideoStreamは、半透明オーバレイのない、
// 置換コンテンツを含む。
for (each pixel in overlayRegion) {
// ピクセルが中間デバイスによって実質的に変更された場合、
// 置換コンテンツの対応するピクセルの代わりに、
// 変更されたピクセルを使用する。
delta = inputVideoStream(pixel) - identifiedVideoContent(pixel);
if (delta > PIXEL_OVERLAY_THRESHOLD)
outputVideoStream(pixel) = inputVideoStream(pixel);
}
}
semitransparentOverlayTransfer(inputVideoStream, identifiedVideoContent, overlayRegion, transparency) {
// inputVideoStreamは、受信されたビデオストリームである。
// identifiedVideoContentは、中間デバイスによって実行された変更のない、
// コンテンツプロバイダから送信されたコンテンツである。
// overlayRegionは、検出されたテンプレートによって定義される領域を識別する。
// transparencyは、中間デバイスによって使用される半透明オーバレイの透明度の
// 程度を示す0から1までの間の値である(0は、完全な不透明を示し、
// 1は、完全な透明を示す)。
// この方法の起動の前、outputVideoStreamは、半透明オーバレイのない、
// 置換コンテンツを含む。
for (each pixel in overlayRegion) {
// 中間デバイスからの結果は、contentVideoStream*(transparency)
// +overlayPixel*(1-transparency)である。
// overlayPixelについて解くと、以下のようになる。:
overlayPixel = (inputVideoStream(pixel) - identifiedVideoContent(pixel) * transparency) / (1 - transparency);
// ここで、元のオーバレイを出力に適用する。
outputVideoStream(pixel) *= transparency;
outputVideoStream(pixel) += overlayPixel * (1 - transparency);
}
}
semitransparentOverlayTransfer(inputVideoStream, overlayRegion, transparency) {
// inputVideoStreamは、受信されたビデオストリームである。
// overlayRegionは、検出されたテンプレートによって定義される領域を識別する。
// transparencyは、出力において使用するための半透明オーバレイの透明度の
// 程度を示す0から1までの間の値である(0は、完全な不透明を示し、
// 1は、完全な透明を示す)。transparencyは、中間デバイスによって使用されるものと
// 同じであってよいが、同じである必要はない。
// この方法の起動の前、outputVideoStreamは、半透明オーバレイのない、
// 置換コンテンツを含む。
// 半透明オーバレイの色をオーバレイ領域の平均色として識別する(例えば、
// ランダムな変更されていないピクセルは、平均すると、RGB(128,128,128)などの
// 中間グレーになるべきであり、半透明オーバレイによって変更されたピクセルは、
// 平均すると、オーバレイの色になるべきである)。
// 代替として、inputVideoStreamから算出される代わりに、overlayColorが、
// テンプレートのためのデータとして含まれてよい。
overlayColor = average(pixels in overlay region);
// オーバレイ領域内のピクセルは、背景ピクセルまたは前景ピクセルである。
// 背景ピクセルは、オーバレイ色の事前決定された範囲内の色値を有するピクセル
// であり、前景ピクセルは事前決定された範囲外のピクセルである。
for (each pixel in overlayRegion) {
// デルタの算出は、単純な減算として表されるが、色空間内のユークリッド距離
// として実施することができる。
delta = inputVideoStream(pixel) - overlayColor;
// 前景ピクセルは、変更せずにコピーするが、背景ピクセルには、
// 透明を適用する。
if (delta > PIXEL_OVERLAY_THRESHOLD)
outputVideoStream(pixel) = inputVideoStream(pixel);
else {
outputVideoStream(pixel) *= transparency;
outputVideoStream(pixel) += overlayColor * (1 - transparency);
}
}
}
semitransparentOverlayTransfer(inputVideoStream, overlayRegion, transparency, textColor) {
// inputVideoStreamは、受信されたビデオストリームである。
// overlayRegionは、検出されたテンプレートによって定義される領域を識別する。
// transparencyは、出力において使用するための半透明オーバレイの透明度の
// 程度を示す0から1までの間の値である(0は、完全な不透明を示し、
// 1は、完全な透明を示す)。transparencyは、中間デバイスによって使用されるものと
// 同じであってよいが、同じである必要はない。
// この方法の起動の前、outputVideoStreamは、半透明オーバレイのない、
// 置換コンテンツを含む。
// 半透明オーバレイの色をオーバレイ領域の平均色として識別する(例えば、
// ランダムな変更されていないピクセルは、平均すると、RGB(128,128,128)などの
// 中間グレーになるべきであり、半透明オーバレイによって変更されたピクセルは、
// 平均すると、オーバレイの色になるべきである)。
// 代替として、inputVideoStreamから算出される代わりに、overlayColorが、
// テンプレートのためのデータとして含まれてよい。
// textColorは、色値であり、色値は、中間デバイスによってテキスト用に
// 使用される。
overlayColor = average(pixels in overlay region);
for (each pixel in overlayRegion) {
// テキストは、変更せずにコピーするが、背景ピクセルには、透明を適用する。
// 入力テキストを含むピクセルは、集約すると、inputVideoStreamの
// テキスト部分である。
if (inputVideoStream(pixel) == textColor)
outputVideoStream(pixel) = inputVideoStream(pixel);
else {
outputVideoStream(pixel) *= transparency;
outputVideoStream(pixel) += overlayColor * (1 - transparency);
}
}
}
semitransparentOverlayTransfer(inputVideoStream, overlayRegion, transparency, messageType) {
// inputVideoStreamは、受信されたビデオストリームである。
// overlayRegionは、検出されたテンプレートによって定義される領域を識別する。
/// transparencyは、出力において使用するための半透明オーバレイの透明度の
// 程度を示す0から1までの間の値である(0は、完全な不透明を示し、
// 1は、完全な透明を示す)。transparencyは、中間デバイスによって使用されるものと
// 同じであってよいが、同じである必要はない。
// この方法の起動の前、outputVideoStreamは、半透明オーバレイのない、
// 置換コンテンツを含む。
// 半透明オーバレイの色をオーバレイ領域の平均色として識別する(例えば、
// ランダムな変更されていないピクセルは、平均すると、RGB(128,128,128)などの
// 中間グレーになるべきであり、半透明オーバレイによって変更されたピクセルは、
// 平均すると、オーバレイの色になるべきである)。
// 代替として、inputVideoStreamから算出される代わりに、overlayColorが、
// テンプレートのためのデータとして含まれてよい。
// メッセージタイプは、表示されるテキストの情報タイプを示す。例えば、
// MESSAGE_TIME=現在の時刻、
// MESSAGE_CHANNEL=現在のチャンネル。
overlayColor = average(pixels in overlay region);
for (each pixel in the overlay region) {
// オーバレイ色を領域に適用する。
outputVideoStream(pixel) *= transparency;
outputVideoStream(pixel) += overlayColor * (1 - transparency);
}
// 適切な情報を含むストリングになるようにmessageを設定する。
message = getMessage(messageType); 
// ユーザによる視聴のために、messageのテキストを画面に追加する。
printMessage(message, overlayRegion);
}
【００９７】
図１３は、ビデオオーバレイを動的に提供するための、いくつかの例示的な実施形態における、方法１３００を図説するフローチャートである。方法１３００は、動作１３１０〜１３６０を含む。例として、限定することなく、動作１３１０〜１３６０は、図２のモジュール２１０〜２５０、および図３のモジュール３１０〜３５０によって実行されるものとして説明される。
【００９８】
動作１３１０において、クライアントデバイス１５０は、ビデオ出力ストリームが、ディスプレイ上に提示されるようにする。例えば、クエリフィンガプリント生成器１６０は、セットトップボックス１４０から受信されたビデオ入力ストリームから、クエリフィンガプリントを生成していることができる。生成されたクエリフィンガプリントに基づいて、置換ビデオコンテンツが、置換コンテンツサーバ１８０から受信され、ビデオ出力ストリームとしてクライアントデバイス１５０のディスプレイ上に提示されていることができる。
【００９９】
クライアントデバイス１５０は、動作１３２０において、コンテンツプロバイダおよび中間デバイスから、コンテンツを含むビデオ入力ストリームを入手する。例えば、ビデオ入力ストリームは、セットトップボックス１４０からの追加コンテンツを含むように変更された、コンテンツソース１１０からのコンテンツを含むことができる。
【０１００】
動作１３３０において、クライアントデバイス１５０は、中間デバイスによって生成された画面部分に対応するテンプレートを入手する。例えば、ビデオオーバレイモジュール３３０は、セットトップボックス１４０のデバイス識別子についてのデータを含む、図１６のデータベーススキーマ内のレコードを入手することができる。
【０１０１】
ビデオオーバレイモジュール３３０は、動作１３４０において、ビデオ入力ストリームのフレームのコンテンツの少なくとも部分がテンプレートと一致すると決定するために、ビデオ入力ストリームを分析する。いくつかの例示的な実施形態においては、中間デバイスについてのテンプレートのいずれかが、中間デバイスから受信されたビデオ入力ストリームのフレームのコンテンツに対応するかどうかを決定するために、複数のそのようなテンプレートにわたって繰り返す。テンプレートは、中間デバイスによってビデオ入力ストリームに追加されたアイコン（例えば、電話アイコン、もしくはメールアイコン）、中間デバイスによってビデオ入力ストリームに追加された事前決定されたテキスト（例えば、「電話」、もしくは「メール」）、中間デバイスによってビデオ入力ストリームに追加された特定のロケーションにあるウィンドウ、またはそれらの任意の適切な組み合わせに対応することができる。
【０１０２】
以下の疑似コードは、いくつかの例示的な実施形態を表している。
findMatchingTemplate(inputVideoStream, deviceId){
// inputVideoStreamは、受信されたビデオストリームである。
// deviceIdは、中間デバイスの識別子である。
matchingTemplate = NULL;
// matchingTemplateは、識別された一致を記憶し、存在しない場合は、NULLを
// 記憶する。
while (matchingTemplate == NULL && template=getNextTemplate(deviceId)) {
// テンプレートすべてを調べるまで、または一致を見出すまで、中間デバイスに
// ついてのテンプレートのすべてにわたって繰り返す。
// inputVideoStreamの現在のフレームとテンプレートのビットマップとの
// ビットごとのAND演算を行う。これは、このテンプレートが一致するかどうかを
// 決定する際に使用されないフレームの部分をゼロにする。
frame = inputVideoStream.currentFrame() & template.bitmap;
// フレームとテンプレートとの間の差を決定する。
// これは、各比較されるピクセルについてのRGB空間内における距離の絶対値の
// 総和とすることができる。
delta = compareImage(frame, image);
// テンプレートがフレームと一致する場合、これは、一致テンプレートである。
if (delta < TEMPLATE_MATCH_THRESHOLD)
matchingTemplate = template;
}
}
【０１０３】
ビデオオーバレイモジュール３３０は、動作１３５０において、テンプレートとビデオ入力ストリームのフレームのコンテンツの少なくとも部分との間の一致に基づいて、中間デバイスによって生成された画面部分を含むように、ビデオ出力ストリームを変更する。例えば、セットトップボックス１４０が、コンテンツソース１１０から受信されたコンテンツに、通知メッセージを追加している場合、ビデオ入力ストリームの１つまたは複数のフレームは、通知についてのテンプレートと一致する。ビデオオーバレイモジュール３３０は、通知を含むビデオ入力ストリームのフレームの部分を識別し、通知をビデオ出力ストリームにコピーする。いくつかの例示的な実施形態においては、通知をコピーすることは、テンプレートによって識別された、通知エリア内のビデオ入力ストリームの各ピクセルを、ビデオ出力ストリームの対応するピクセルにコピーすることを含む。他の例示的な実施形態においては、通知をコピーすることは、（例えば、ＯＣＲまたは画像認識を通して）通知の内容を決定し、ビデオ出力ストリーム内においてコンテンツを再生成することを含む。このようにして、置換コンテンツサーバ１８０からの置換コンテンツが、表示されている間に、セットトップボックス１４０からの通知が、クライアントデバイス１５０の視聴者に提示される。動作１３６０において、ビデオオーバレイモジュール３３０は、変更されたビデオ出力ストリームが、ディスプレイ（例えば、クライアントデバイス１５０のディスプレイ）上に提示されるようにする。
【０１０４】
いくつかの例示的な実施形態においては、ビデオ出力ストリームの変更は、ビデオ入力ストリームがもはやテンプレートと一致しないときに、停止する。他の例示的な実施形態においては、ビデオ出力ストリームの変更は、ビデオ入力ストリームが、変更の終了と関連付けられた第２のテンプレートと一致したときに、停止する。例えば、セットトップボックス１４０からの通知は、通知の終りのアニメーション内に、第２のテンプレートによって照合することができる署名フレームを有することができる。したがって、第２のテンプレートと一致するときは、ビデオ出力ストリームは、通知を含むようにもはや変更されない。
【０１０５】
図１４は、ビデオオーバレイを動的に提供するための、いくつかの例示的な実施形態における、方法を図説するフローチャートである。方法１４００は、動作１３１０〜１３４０、１３６０、および動作１４５０〜１４６０を含む。動作１３１０〜１３４０、１３６０は、図１３に関して、上で説明されている。例として、限定することなく、動作１４５０〜１４６０は、図２のモジュール２１０〜２５０、および図３のモジュール３１０〜３５０によって実行されるものとして説明される。
動作１４５０において、ビデオオーバレイモジュール３３０は、一致に基づいて、ビデオ入力ストリームの再生のスピードがデフォルトのスピードから変更されたと決定する。例えば、テンプレートは、ビデオ入力ストリームの特定の部分において、右向きの２重三角形を示すことができる。（ビデオ入力ストリームとテンプレートとの間の一致によって決定された）提示されているこの２重三角形に基づいて、ビデオオーバレイモジュール３３０は、再生スピードが増加させられたと決定する。同様に、テンプレートは、左向きの２重三角形または停止シンボルを示すことができ、ビデオオーバレイモジュール３３０は、ビデオ入力ストリームの再生スピードが逆転または停止させられたと決定することができる。
【０１０６】
いくつかの例示的な実施形態においては、テンプレートは、再生のレートも示す。例えば、再生スピードが２倍または４倍であることを示す、「×２」または「×４」を提示することができる。別の例として、２つの三角形は、２倍速を示すことができ、３つの三角形は、４倍速を示すことができ、以下も同様である。特定のテンプレートについての特定の意味は、セットトップボックス識別子モジュール３１０によって識別されたセットトップボックス１４０に依存することができる。
【０１０７】
他の例示的な実施形態においては、テンプレートは、再生のレートを示さない。再生のレートは、ビデオ入力ストリームの連続するフレームのフィンガプリントを参照ストリームの連続するフレームのフィンガプリントと比較することによって、決定することができる。ビデオ入力ストリームの連続するフレームのフィンガプリントが、参照ストリームの１つおきのフィンガプリントと一致する場合、再生は、２倍速で行われている。フィンガプリントが、逆順である場合、再生は、逆転して行われている。ビデオ入力ストリームの連続するフレームのフィンガプリントが、２倍である場合、再生は、半分のスピードで行われている。
【０１０８】
ビデオオーバレイモジュール３３０は、動作１４６０において、ビデオ出力ストリームの再生のスピードを変更する。いくつかの例示的な実施形態においては、ビデオ出力ストリームの再生のスピードは、ビデオ入力ストリームの再生のスピードと一致するように変更される。したがって、ビデオ入力ストリームのスピードが、デフォルトのスピードに対して２倍にされる場合、ビデオ出力ストリームのスピードも、２倍にされる。
【０１０９】
本明細書において開示された様々な方法は、組み合わせることができる。例えば、方法１３００を方法１４００と組み合わせると、ビデオ入力ストリームが変更されたストリームを有するとき、変更されたスピードを有するビデオ出力ストリームをもたらし、ビデオ出力ストリームも、中間デバイスによって生成された画面部分（例えば、早送りインジケータ）を含む。
【０１１０】
図１５は、ビデオオーバレイを動的に提供するための、いくつかの例示的な実施形態における、方法を図説するフローチャートである。方法１５００は、動作１５１０〜１５９０を含む。例として、限定することなく、動作１５１０〜１５９０は、図２のモジュール２１０〜２５０、および図３のモジュール３１０〜３５０によって実行されるものとして説明される。
【０１１１】
動作１５１０において、クライアントデバイス１５０は、コンテンツプロバイダから、コンテンツを含むビデオ入力ストリームを入手する。例えば、クライアントデバイス１５０の（図１７に示される）ビデオ入力デバイス１７１４は、セットトップボックス１４０のビデオ出力に接続することができる。ビデオ入力ストリームは、セットトップボックス１４０からクライアントデバイス１５０に送信することができる。ビデオ入力ストリームは、コンテンツソース１１０からのコンテンツと、セットトップボックス１４０によって生成されたコンテンツとを含むことができる。例えば、セットトップボックス１４０は、コンテンツソース１１０から受信されたビデオストリームの部分上に重ね合わされる情報オーバレイを提供することができる。
【０１１２】
動作１５２０において、クライアントデバイス１５０は、ビデオ入力ストリームのコンテンツに基づいて、ビデオ出力ストリームを選択する。例えば、クエリフィンガプリント生成器１６０は、ビデオ入力ストリームの１つまたは複数のフレームの少なくとも部分に基づいて、クエリフィンガプリントを生成することができる。フィンガプリントに基づいて、置換ビデオコンテンツが、ビデオ出力ストリームとして使用するために、（例えば、データベース検索を通して、置換コンテンツサーバ１８０との通信を通して、または両方を通して）選択される。
【０１１３】
動作１５３０において、クライアントデバイス１５０は、選択されたビデオ出力ストリームが、ディスプレイ上に提示されるようにする。例えば、ビデオ出力ストリームは、クライアントデバイス１５０のディスプレイ上に提示することができる。代替として、ビデオ出力ストリームは、クライアントデバイス１５０のビデオ出力によって、別個の表示デバイスに送信することができる。
ビデオソース識別子モジュール３２０は、動作１５４０において、ビデオ入力ストリームの変化が、ビデオ入力ストリームのコンテンツプロバイダの変化を示すと決定する。例えば、クエリフィンガプリント生成器１６０は、ビデオ入力ストリームの元のコンテンツと一致する一連のフィンガプリントにアクセスすることができる。クエリフィンガプリント生成器１６０によって生成されたフィンガプリントが、元のコンテンツについての一連のフィンガプリントと一致しなくなったとき、ビデオ入力ストリームのコンテンツが変化したとの決定を行うことができ、それは、ビデオ入力ストリームのコンテンツプロバイダも変化したことを示すことができる。例えば、中間デバイスのユーザが、チャンネルを変更したかもしれず、または（例えば、ケーブルＴＶソースから放送ＴＶソースに）入力を変更したかもしれない。どちらのケースにおいても、コンテンツプロバイダは、変化している。
【０１１４】
ビデオ入力ストリームのコンテンツプロバイダが変化したとの決定に応答して、クライアントデバイス１５０は、ビデオ入力ストリームが、ディスプレイ上に提示されるようにする（動作１５５０）。したがって、置換ビデオ出力ストリームは、動作１５４０において検出された変更されたビデオ入力ストリームに対する置換ではなく、動作１５１０において入手された元のビデオ入力ストリームに対する置換として提示される。
【０１１５】
動作１５６０において、クライアントデバイス１５０は、中間デバイスによって生成された画面部分に対応するテンプレートを入手する。例えば、ビデオオーバレイモジュール３３０は、セットトップボックス１４０のデバイス識別子についてのデータを含む、図１６のデータベーススキーマ内のレコードを入手することができる。
【０１１６】
ビデオオーバレイモジュール３３０は、動作１５７０において、ビデオ入力ストリームのフレームのコンテンツの少なくとも部分がテンプレートと一致すると決定するために、ビデオ入力ストリームを分析する。いくつかの例示的な実施形態においては、中間デバイスについてのテンプレートのいずれかが、中間デバイスから受信されたビデオ入力ストリームのフレームのコンテンツに対応するかどうかを決定するために、複数のそのようなテンプレートにわたって繰り返す。テンプレートは、中間デバイスによってビデオ入力ストリームに追加されたアイコン（例えば、ケーブルアイコン、もしくはＴＶアイコン）、中間デバイスによってビデオ入力ストリームに追加された事前決定されたテキスト（例えば、チャンネルを示す数字もしくは英数字系列）、中間デバイスによってビデオ入力ストリームに追加された特定のロケーションにあるウィンドウ、またはそれらの任意の適切な組み合わせに対応することができる。
【０１１７】
動作１５８０、１５９０において、一致に基づいて、クライアントデバイス１５０は、ビデオ入力ストリームにおける第２の変化が、第１のコンテンツプロバイダへの復帰を示すと決定し、決定に応答して、ビデオ出力ストリームの提示を再開させる。例えば、元のビデオ入力ストリームが、置換される一致コンテンツとして識別された、チャンネル１５からのコンテンツを含む場合、置換ビデオコンテンツが、動作１５３０において、提示される。チャンネルの変化の後、置換ビデオコンテンツの提示は、動作１５５０において、停止する。（例えば、現在のチャンネルが１５であることを示す、中間デバイスによって提供されたオーバレイについてのテンプレートと一致することによる）元のチャンネルへの復帰の検出の後、ビデオ出力ストリームにおける置換ビデオコンテンツの提示が、再開する（動作１５９０）。したがって、方法１５００の使用によって、１つのコンテンツプロバイダについての置換コンテンツを、ユーザが他のプロバイダについてのコンテンツを視聴することを可能にしながら、提供することができ、それは、置換されるコンテンツプロバイダから離れる切り換え、およびそれに復帰する切り換えによって中断されることがない。
【０１１８】
いくつかの例示的な実施形態においては、ビデオ出力ストリームは、テンプレートと一致するビデオ入力ストリームの部分を含むように変更される。例えば、図６のトポロジ形態のテンプレートと一致し、領域６１０が、セットトップボックス１４０によって生成されたチャンネル情報を含む場合、領域６１０は、ビデオ入力ストリームからビデオ出力ストリームにコピーすることができ、ビデオ出力ストリームが提示されている間、中間デバイスによって生成された情報が、提示されることを可能にする。
【０１１９】
図１６は、ビデオオーバレイを動的に提供するための、例示的な実施形態における、データ構造を図説するブロック図１６００である。図１６は、ピクチャインピクチャテーブル１６１０と、メニューオーバレイテーブル１６２０と、メニュー混合テーブル１６３０と、テンプレートテーブル１６４０とを示している。
【０１２０】
ピクチャインピクチャテーブル１６１０は、デバイス識別子（デバイスＩＤ）、テンプレート識別子（テンプレートＩＤ）、およびウィンドウ座標（ウィンドウ座標）のためのフィールドを含む。いくつかの例示的な実施形態においては、ピクチャインピクチャテーブル１６１０は、各セットトップボックスの各ピクチャインピクチャテンプレートごとに、１つの行を含む。したがって、ひとたび、特定のセットトップボックスがそれのデバイスＩＤによって識別され、特定のテンプレートがそれのテンプレートＩＤによって識別されると、置換コンテンツのピクチャインピクチャ表示の位置およびサイズについての座標を、取得することができる。ピクチャインピクチャテーブル１６１０は、図４のテンプレートにトポロジ的に類似するテンプレートをサポートするために、使用することができる。
【０１２１】
メニューオーバレイテーブル１６２０は、デバイス識別子、テンプレート識別子、およびメニュー座標（メニュー座標）のためのフィールドを含む。いくつかの例示的な実施形態においては、メニューオーバレイテーブル１６２０は、各セットトップボックスの各メニューオーバレイテンプレートごとに、１つの行を含む。したがって、ひとたび、特定のセットトップボックスがそれのデバイスＩＤによって識別され、特定のテンプレートがそれのテンプレートＩＤによって識別されると、メニューオーバレイによって占有されるビデオの部分の位置およびサイズについての座標を、メニュー座標から決定することができる。メニューオーバレイテーブル１６２０は、図５および図６のテンプレートにトポロジ的に類似するテンプレートをサポートするために、使用することができる。
【０１２２】
メニュー混合テーブル１６３０は、デバイス識別子、テンプレート識別子、メニュー座標、および混合座標（混合座標）のためのフィールドを含む。いくつかの例示的な実施形態においては、メニュー混合テーブル１６３０は、各セットトップボックスの各メニュー混合テンプレートごとに、１つの行を含む。したがって、ひとたび、特定のセットトップボックスがそれのデバイスＩＤによって識別され、特定のテンプレートがそれのテンプレートＩＤによって識別されると、メニューオーバレイによって占有されるビデオの部分の位置およびサイズについての座標を、メニュー座標から決定することができ、置換ビデオをセットトップボックスからのビデオと混合することによって生成される画面の部分の位置およびサイズについての座標を、混合座標から決定することができる。メニュー混合テーブル１６３０は、図７のテンプレートにトポロジ的に類似するテンプレートをサポートするために、使用することができる。いくつかの例示的な実施形態においては、混合座標がゼロ面積の領域を定義するとき、メニュー混合テーブル１６３０は、図５および図６のテンプレートにトポロジ的に類似するテンプレートをサポートするために、使用することができるので、メニューオーバレイテーブル１６２０は、メニュー混合テーブル１６３０内に包含される。
【０１２３】
テンプレートテーブル１６４０は、デバイス識別子、テンプレート識別子、タイプ、ビットマップ、および画像のためのフィールドを含む。ビットマップは、画像、およびビデオ入力ストリームのフレームと同じサイズである。ビットマップ内の各値は、テンプレートがビデオ入力ストリームと一致するかどうかを決定するために、画像およびビデオ入力ストリーム内の対応するピクセルが使用されるかどうかを示す。ビットマップの値「１」に対応する画像の部分は、ビデオ入力ストリームと比較されるべきであり、ビットマップの値「０」に対応する画像の部分は、黒である。タイプは、一致がひとたび見出されたときに使用するための、テンプレートのタイプを示す。例えば、タイプＰＩＣＴＵＲＥＩＮＰＩＣＴＵＲＥは、テンプレートがピクチャインピクチャ表示用であること、および埋め込まれたピクチャのウィンドウ座標をピクチャインピクチャテーブル１６１０から取得することができることを示す。
【０１２４】
様々な例示的な実施形態によれば、本明細書において説明される方法のうちの１つまたは複数は、動的ビデオオーバレイを容易にすることができる。さらに、本明細書において説明される方法のうちの１つまたは複数は、動的ビデオオーバレイを提供する方法を実行するクライアントデバイス上における計算時間、クライアントデバイスとサーバとの間の伝送時間、動的ビデオオーバレイの方法を実行するサーバ上におけるメモリストレージ要件、および動的ビデオオーバレイの方法を実行するサーバ上における計算時間を減らすことができる。
【０１２５】
これらの効果が、総体で考慮されるとき、本明細書において説明される方法のうちの１つまたは複数は、他の方法では動的ビデオオーバレイに伴う、ある労力またはリソースの必要性を除去することができる。動的ビデオオーバレイにおいてユーザによって費やされる労力は、本明細書において説明される方法のうちの１つまたは複数によって減らすことができる。（例えば、ネットワーク環境１００内の）１つまたは複数のマシン、データベース、またはデバイスによって使用されるコンピューティングリソースも、同様に減らすことができる。そのようなコンピューティングリソースの例は、プロセッササイクル、ネットワークトラフィック、メモリ使用、データ記憶容量、電力消費、および冷却容量を含む。
【０１２６】
図１７は、マシン可読媒体（例えば、マシン可読記憶媒体、コンピュータ可読記憶媒体、またはそれらの任意の適切な組み合わせ）から命令を読み取り、本明細書において説明される方法のうちのいずれか１つまたは複数を全体的または部分的に実行することができる、いくつかの例示的な実施形態による、マシン１７００のコンポーネントを図説するブロック図である。具体的には、図１７は、例示的な形態のコンピュータシステムにおけるマシン１７００の図表現を示しており、その中で、本明細書において説明される方法のうちのいずれか１つまたは複数をマシン１７００に実行させるための命令１７２４（例えば、ソフトウェア、プログラム、アプリケーション、アプレット、ａｐｐ、または他の実行可能コード）を、全体的または部分的に実行することができる。代替的な実施形態においては、マシン１７００は、スタンドアロンデバイスとして動作し、または他のマシンに接続（例えば、ネットワーク接続）することができる。ネットワーク接続された展開においては、マシン１７００は、サーバ−クライアントネットワーク環境におけるサーバマシンもしくはクライアントマシンという立場で、または分散（例えば、ピアツーピア）ネットワーク環境におけるピアマシンとして動作することができる。マシン１７００は、サーバコンピュータ、クライアントコンピュータ、ＰＣ、タブレットコンピュータ、ラップトップコンピュータ、ネットブック、セットトップボックス、スマートＴＶ、パーソナルデジタルアシスタント（ＰＤＡ）、セルラ電話、スマートフォン、ウェブアプライアンス、ネットワークルータ、ネットワークスイッチ、ネットワークブリッジ、またはそのマシンによって取られるアクションを指定する命令１７２４を順次的もしくは他の方法で実行することが可能な任意のマシンとすることができる。さらに、単一のマシンだけが示されているが、「マシン」という用語は、本明細書において説明される方法のうちのいずれか１つまたは複数のすべてまたは一部を実行するために、命令１７２４を個別または一緒に実行するマシンの集まりも含むと解釈されるものとする。
【０１２７】
マシン１７００は、プロセッサ１７０２（例えば、中央処理ユニット（ＣＰＵ）、グラフィックス処理ユニット（ＧＰＵ）、デジタル信号プロセッサ（ＤＳＰ）、ＡＳＩＣ、無線周波数集積回路（ＲＦＩＣ）、またはそれらの任意の適切な組み合わせ）と、メインメモリ１７０４と、スタティックメモリ１７０６とを含み、それらは、バス１７０８を介して、互いに通信するように構成される。マシン１７００は、グラフィックスディスプレイ１７１０（例えば、プラズマディスプレイパネル（ＰＤＰ）、ＬＥＤディスプレイ、ＬＣＤ、プロジェクタ、またはＣＲＴ）をさらに含むことができる。マシン１７００は、また、英数字入力デバイス１７１２（例えば、キーボード）と、ビデオ入力デバイス１７１４（例えば、成分ビデオ入力、合成ビデオ入力、または高精細マルチメディアインターフェース（ＨＤＭＩ(登録商標)））と、ストレージユニット１７１６と、信号生成デバイス１７１８（例えば、スピーカ）と、ネットワークインターフェースデバイス１７２０とを含むことができる。
【０１２８】
ストレージユニット１７１６は、本明細書において説明される方法または機能のうちのいずれか１つまたは複数を実施する命令１７２４がその上に記憶されるマシン可読媒体１７２２を含む。命令１７２４は、マシン１７００によるそれの実行中、メインメモリ１７０４内に、プロセッサ１７０２内に（例えば、プロセッサのキャッシュメモリ内に）、または両方の中に、完全にまたは少なくとも部分的に、存在することもできる。したがって、メインメモリ１７０４およびプロセッサ１７０２は、マシン可読媒体と見なすことができる。命令１７２４は、ネットワークインターフェースデバイス１７２０を介して、ネットワーク１７２６（例えば、図１のネットワーク１７０）上において、送信または受信することができる。
【０１２９】
本明細書において使用される場合、「メモリ」という用語は、データを一時的または永続的に記憶することができる、マシン可読媒体を指し、限定されることなく、ランダムアクセスメモリ（ＲＡＭ）、リードオンリメモリ（ＲＯＭ）、バッファメモリ、フラッシュメモリ、およびキャッシュメモリを含むと解釈することができる。例示的な実施形態においては、マシン可読媒体１７２２は、単一の媒体として示されているが、「マシン可読媒体」という用語は、命令を記憶することができる単一の媒体または複数の媒体（例えば、集中もしくは分散データベース、または関連するキャッシュおよびサーバ）を含むと解釈されるべきである。「マシン可読媒体」という用語は、マシン（例えば、マシン１７００）による実行のために命令を記憶して、命令が、マシンの１つまたは複数のプロセッサ（例えば、プロセッサ１７０２）によって実行されたときに、本明細書において説明される方法のうちのいずれか１つまたは複数をマシンに実行させるようにすることが可能な、任意の媒体、または複数の媒体の組み合わせも含むと解釈されるものとする。したがって、「マシン可読媒体」は、単一の記憶装置またはデバイスばかりでなく、複数の記憶装置またはデバイスを含む「クラウドベースの」記憶システムまたは記憶ネットワークも指す。したがって、「マシン可読媒体」という用語は、限定されることなく、ソリッドステートメモリ、光媒体、磁気媒体、またはそれらの任意の適切な組み合わせの形態を取る１つまたは複数のデータリポジトリを含むと解釈されるものとする。「非一時的なマシン可読媒体」は、一時的な信号を除く、すべてのマシン可読媒体を指す。
【０１３０】
本明細書を通して、複数の事例は、単数の事例として説明されたコンポーネント、動作、または構造を実施することができる。１つまたは複数の方法の個々の動作は、別々の動作として図説および説明されるが、個々の動作のうちの１つまたは複数は、同時に実行することができ、何も、動作が示された順序で実行されることを要求しない。例示的な構成において別々のコンポーネントとして提示される構造および機能性は、組み合わされた構造またはコンポーネントとして実施することができる。同様に、単一のコンポーネントとして提示された構造および機能性は、別々のコンポーネントとして実施することができる。これらおよび他の変形、変更、追加、および改良は、本明細書における主題の範囲内に包含される。
【０１３１】
ある実施形態は、ロジック、または数々のコンポーネント、モジュール、もしくはメカニズムを含むものとして、本明細書において説明される。モジュールは、ハードウェアモジュールを構成することができる。「ハードウェアモジュール」は、ある動作を実行することが可能な有形なユニットであり、ある物理的な方法で構成し、または配置することができる。様々な例示的な実施形態においては、１つもしくは複数のコンピュータシステム（例えば、スタンドアロンコンピュータシステム、クライアントコンピュータシステム、もしくはサーバコンピュータシステム）、またはコンピュータシステムの１つもしくは複数のハードウェアモジュール（例えば、プロセッサ、もしくはプロセッサのグループ）は、本明細書において説明されるある動作を実行するように動作するハードウェアモジュールとして、ソフトウェア（例えば、アプリケーション、またはアプリケーションの部分）によって構成することができる。
【０１３２】
いくつかの実施形態においては、ハードウェアモジュールは、機械的に、電子的に、またはそれらの任意の適切な組み合わせで実施することができる。例えば、ハードウェアモジュールは、ある動作を実行するように永続的に構成された、専用回路またはロジックを含むことができる。例えば、ハードウェアモジュールは、ＦＰＧＡまたはＡＳＩＣなどの専用プロセッサとすることができる。ハードウェアモジュールは、ある動作を実行するようにソフトウェアによって一時的に構成された、プログラム可能ロジックまたは回路も含むことができる。例えば、ハードウェアモジュールは、汎用プロセッサまたは他のプログラム可能プロセッサ内に包含される、ソフトウェアを含むことができる。ハードウェアモジュールを、専用の永続的に構成された回路で、または一時的に構成された（例えば、ソフトウェアによって構成された）回路で、機械的に実施するかの決定は、コストおよび時間の検討によってなされることができる。
【０１３３】
したがって、「ハードウェアモジュール」という語句は、ある方法で動作するように、または本明細書において説明されたある動作を実行するように、物理的に構築され、永続的に構成され（例えば、配線接続され）、または一時的に構成された（例えば、プログラムされた）エンティティである、有形なエンティティを包含すると理解されるべきである。本明細書において使用される場合、「ハードウェア実施されるモジュール」は、ハードウェアモジュールを指す。ハードウェアモジュールが一時的に構成される（例えば、プログラムされる）実施形態を考えると、ハードウェアモジュールの各々は、どの一時点においても構成またはインスタンス化されている必要があるわけではない。例えば、ハードウェアモジュールが、専用プロセッサになるようにソフトウェアによって構成される、汎用プロセッサを含む場合、汎用プロセッサは、異なる時刻においては、（例えば、異なるハードウェアモジュールを構成する）それぞれ異なる専用プロセッサとして構成することができる。したがって、ソフトウェアは、例えば、一時点においては、特定のハードウェアモジュールを構成し、異なる時点においては、異なるハードウェアモジュールを構成するように、プロセッサを構成することができる。
【０１３４】
ハードウェアモジュールは、他のハードウェアモジュールに情報を提供し、他のハードウェアモジュールから情報を受け取ることができる。したがって、説明されたハードウェアモジュールは、通信可能に結合されたものと見なすことができる。複数のハードウェアモジュールが、同時に存在する場合、通信は、２つのハードウェアモジュール間の、または３つ以上のハードウェアモジュール間の（例えば、適切な回路またはバス上における）信号伝送を通して、達成することができる。複数のハードウェアモジュールが、異なる時刻において構成またはインスタンス化される実施形態においては、そのようなハードウェアモジュール間の通信は、例えば、複数のハードウェアモジュールがアクセスするメモリ構造内における情報の記憶および取り出しを通して、達成することができる。例えば、１つのハードウェアモジュールは、動作を実行し、その動作の出力を、それが通信可能に結合されたメモリデバイス内に記憶することができる。その場合、さらなるハードウェアモジュールが、後の時刻において、メモリデバイスにアクセスして、記憶された出力を取り出し、処理することができる。ハードウェアモジュールは、入力または出力デバイスとの通信を開始することもでき、リソース（例えば、情報の集まり）に作用することができる。
【０１３５】
本明細書において説明される例示的な方法の様々な動作は、関連する動作を実行するように（例えば、ソフトウェアによって）一時的に構成された、または永続的に構成された１つまたは複数のプロセッサによって、少なくとも部分的に、実行することができる。一時的に構成されるか、それとも永続的に構成されるかにかかわらず、そのようなプロセッサは、本明細書において説明される１つまたは複数の動作または機能を実行するように動作する、プロセッサ実施されるモジュールを構成することができる。本明細書において使用される場合、「プロセッサ実施されるモジュール」は、１つまたは複数のプロセッサを使用して実施される、ハードウェアモジュールを指す。
【０１３６】
同様に、本明細書において説明される方法は、少なくとも部分的に、プロセッサ実施することができ、プロセッサは、ハードウェアの例である。例えば、方法の動作の少なくともいくつかは、１つまたは複数のプロセッサまたはプロセッサ実施されるモジュールによって実行することができる。さらに、１つまたは複数のプロセッサは、「クラウドコンピューティング」環境において、または「ソフトウェアアズアサービス」（ＳａａＳ）として、関連する動作の実行もサポートするように動作することができる。例えば、動作の少なくともいくつかは、（プロセッサを含むマシンの例としての）コンピュータのグループによって実行することができ、これらの動作は、ネットワーク（例えば、インターネット）を介して、および１つまたは複数の適切なインターフェース（例えば、ＡＰＩ）を介して、アクセス可能である。
【０１３７】
動作のあるものの実行は、単一のマシン内に存在するばかりでなく、数々のマシンにわたっても配備された、１つまたは複数のプロセッサ間に分散させることができる。いくつかの例示的な実施形態においては、１つまたは複数のプロセッサまたはプロセッサ実施されるモジュールは、単一の地理的ロケーションに（例えば、家庭環境、オフィス環境、またはサーバファーム内に）配置することができる。他の例示的な実施形態においては、１つまたは複数のプロセッサまたはプロセッサ実施されるモジュールは、数々の地理的ロケーションにわたって分散させることができる。
【０１３８】
本明細書において説明される主題のいくつかの部分は、マシンメモリ（例えば、コンピュータメモリ）内のビットまたは２進デジタル信号として記憶されたデータに対する操作のアルゴリズムまたはシンボル表現の観点から提示することができる。そのようなアルゴリズムまたはシンボル表現は、自分の仕事の内容を他の当業者に伝えるために、データ処理技術の当業者によって使用される技法の例である。本明細書において使用される場合、「アルゴリズム」は、所望の結果をもたらす自己矛盾のない動作または類似の処理の系列である。この文脈において、アルゴリズムおよび動作は、物理的な量の物理的な操作を含む。必ずではないが、一般に、そのような量は、マシンによって記憶され、アクセスされ、転送され、合成され、比較され、または他の方法で操作されることが可能な、電気的、磁気的、または光学的信号の形態を取ることができる。主として、一般的に使用されているからという理由で、そのような信号を、「データ」、「コンテンツ」、「ビット」、「値」、「要素」、「シンボル」、「文字」、「項」、「数」、または「数字」などの語を使用して、指すのが時には便利である。しかしながら、これらの語は、便利なラベルであるに過ぎず、適切な物理的な量と関連付けられるべきである。
【０１３９】
特に他の言及がなされない限り、「処理する」、「計算する」、「算出する」、「決定する」、「提示する」、または「表示する」などの語を使用する本明細書における説明は、１つまたは複数のメモリ（例えば、揮発性メモリ、不揮発性メモリ、もしくはそれらの任意の適切な組み合わせ）、レジスタ、または情報を受信し、記憶し、送信し、もしくは表示する他のマシンコンポーネント内の、物理的な（例えば、電子的、磁気的、または光学的な）量として表されるデータを操作または変換する、マシン（例えば、コンピュータ）のアクションまたはプロセスを指すことができる。さらに、特に他の言及がなされない限り、本明細書における、「ａ」または「ａｎ」という語は、特許文書において一般的なように使用され、１つまたは２つ以上の事例を含む。最後に、本明細書において使用される場合、接続詞「または」は、特に他の言及がなされない限り、非排他的な「または」を指す。
【図１】
2018537925.tif 000003
【図２】
2018537925.tif 000004
【図３】
2018537925.tif 000005
【図４】
2018537925.tif 000006
【図５】
2018537925.tif 000007
【図６】
2018537925.tif 000008
【図７】
2018537925.tif 000009
【図８】
2018537925.tif 000010
【図９】
2018537925.tif 000011
【図１０】
2018537925.tif 000012
【図１１】
2018537925.tif 000013
【図１２】
2018537925.tif 000014
【図１３】
2018537925.tif 000015
【図１４】
2018537925.tif 000016
【図１５】
2018537925.tif 000017
【図１６】
2018537925.tif 000018
【図１７】
2018537925.tif 000019
【国際調査報告】
2018537925.tif 000020
2018537925.tif 000021
2018537925.tif 000022
2018537925.tif 000023