(57)【要約】  コンテンツファイルを拡張するためのシステムおよび方法が開示される。システムは、ヒストグラムモジュールと、コントラスト伸張モジュールと、輝度モジュールとを備える。ヒストグラムモジュールは、コンテンツファイル内に含まれた1つまたは複数のチャネルに関する1つまたは複数の画素強度を記述するデータを含むヒストグラムを生成する。コントラスト伸張モジュールは、ヒストグラムに少なくとも一部基づいて、コンテンツファイル内に含まれた1つまたは複数のチャネルに関する1つまたは複数の画素強度を調整する。輝度モジュールは、コンテンツファイルに関する輝度レベルが1つまたは複数の容認できる輝度レベルを記述する範囲内であるかどうかを判断するために、コントラスト伸張モジュールに通信可能に結合される。輝度モジュールは、コンテンツファイルに関する輝度レベルが範囲外であるという判断に応答して、コンテンツファイルに関する輝度レベルを調整する。
2014526745.tif 000002
【特許請求の範囲】
【請求項１】
1つまたは複数のコンピューティングデバイス上で実行する、コンテンツファイルを拡張するためのコンピュータ実施方法であって、
前記1つまたは複数のコンピューティングデバイスを使用して、前記コンテンツファイル内に含まれた1つまたは複数のチャネルに関する1つまたは複数の画素強度を記述するデータを含むヒストグラムを生成するステップと、
前記1つまたは複数のコンピューティングデバイスを使用して、前記ヒストグラムに少なくとも一部基づいて、前記コンテンツファイル内に含まれた前記1つまたは複数のチャネルに関する前記1つまたは複数の画素強度を調整するステップと、
前記1つまたは複数のコンピューティングデバイスを使用して、前記コンテンツファイルに関する輝度レベルが1つまたは複数の容認できる輝度レベルを記述する範囲内であるかどうかを判断するステップと、
前記1つまたは複数のコンピューティングデバイスを使用して、前記コンテンツファイルに関する前記輝度レベルが前記範囲外であるという判断に応答して、前記コンテンツファイルに関する前記輝度レベルを調整するステップと
を含む方法。
【請求項２】
前記ヒストグラムを前記生成するステップが、前記1つまたは複数のコンピューティングデバイスを使用して、前記1つまたは複数の画素強度が前記コンテンツファイルからサンプリングされる解析間隔を判断するステップをさらに含む、請求項1に記載の方法。
【請求項３】
前記ヒストグラムを前記生成するステップが、
前記1つまたは複数のコンピューティングデバイスを使用して、前記コンテンツファイルによって記述されたフレームの1つまたは複数のエッジの固定割合量を記述する余白除外値を判断するステップと、
前記1つまたは複数のコンピューティングデバイスを使用して、前記余白除外値に少なくとも一部基づいて、前記コンテンツファイルによって記述された前記フレームの1つまたは複数の部分を判断するステップと、
前記1つまたは複数のコンピューティングデバイスを使用して、前記コンテンツファイルによって記述された前記フレームから前記1つまたは複数の部分を除外するステップと
をさらに含む、請求項1に記載の方法。
【請求項４】
前記1つまたは複数の画素強度を前記調整するステップが、
前記1つまたは複数のコンピューティングデバイスを使用して、前記ヒストグラムに少なくとも一部基づいてコントラスト乗数を判断するステップと、
前記1つまたは複数のコンピューティングデバイスを使用して、前記1つまたは複数の画素強度を前記コントラスト乗数で乗算して、前記1つまたは複数の画素強度を調整するステップと
をさらに含む、請求項1に記載の方法。
【請求項５】
前記コントラスト乗数を前記判断するステップが、
前記1つまたは複数のコンピューティングデバイスを使用して、レベルしきい値を判断するステップと、
前記1つまたは複数のコンピューティングデバイスを使用して、前記レベルしきい値に少なくとも一部基づいて、前記ヒストグラム内の最高画素強度および最低画素強度の一定のパーセンタイルを判断するステップと、
前記1つまたは複数のコンピューティングデバイスを使用して、前記最高画素強度および前記最低画素強度の前記一定のパーセンタイルを前記ヒストグラムから除外するステップとをさらに含む、請求項4に記載の方法。
【請求項６】
前記コントラスト乗数を前記判断するステップが、前記1つまたは複数のコンピューティングデバイスを使用して、前記コンテンツファイルの赤チャネル、緑チャネル、および青チャネルのバランスが少なくとも実質的に保たれるように、限度に少なくとも一部基づいて前記コントラスト乗数を調整するステップをさらに含む、請求項4に記載の方法。
【請求項７】
前記コンテンツファイルに関する前記輝度レベルを前記調整するステップが、前記1つまたは複数のコンピューティングデバイスを使用して、前記コンテンツファイルに追加されるか、または前記コンテンツファイルから削減される輝度の量を制限するステップをさらに含む、請求項1に記載の方法。
【請求項８】
コンテンツファイルを拡張するためのシステムであって、
前記コンテンツファイル内に含まれた1つまたは複数のチャネルに関する1つまたは複数の画素強度を記述するデータを含むヒストグラムを生成するためのヒストグラムモジュールと、
前記ヒストグラムに少なくとも一部基づいて、前記コンテンツファイル内に含まれた前記1つまたは複数のチャネルに関する前記1つまたは複数の画素強度を調整するために、前記ヒストグラムモジュールに通信可能に結合されたコントラスト伸張モジュールと、
前記コンテンツファイルに関する輝度レベルが1つまたは複数の容認できる輝度レベルを記述する範囲内であるかどうかを判断するために、前記コントラスト伸張モジュールに通信可能に結合された輝度モジュールであって、前記コンテンツファイルに関する前記輝度レベルが前記範囲外であるという判断に応答して、前記コンテンツファイルに関する前記輝度レベルを調整するようにさらに構成された輝度モジュールと
を備えるシステム。
【請求項９】
前記ヒストグラムを生成することが、前記1つまたは複数の画素強度が前記コンテンツファイルからサンプリングされる解析間隔を判断することをさらに含む、請求項8に記載のシステム。
【請求項１０】
前記コンテンツファイルによって記述されたフレームの1つまたは複数のエッジの固定割合量を記述する余白除外値を判断するために、前記ヒストグラムモジュールに通信可能に結合された余白除外モジュールであって、前記余白除外値に少なくとも一部基づいて、前記コンテンツファイルによって記述された前記フレームの1つまたは複数の部分を判断することと、前記コンテンツファイルによって記述された前記フレームから前記1つまたは複数の部分を除外することと行うようにさらに構成された余白除外モジュールをさらに備える、請求項8に記載のシステム。
【請求項１１】
前記1つまたは複数の画素強度を前記調整することが、
前記ヒストグラムに少なくとも一部基づいてコントラスト乗数を判断することと、
前記1つまたは複数の画素強度を前記コントラスト乗数で乗算して、前記1つまたは複数の画素強度を調整することと
をさらに含む、請求項8に記載のシステム。
【請求項１２】
前記コントラスト乗数を前記判断することが、
レベルしきい値を判断することと、
前記レベルしきい値に少なくとも一部基づいて、前記ヒストグラム内の最高画素強度および最低画素強度の一定のパーセンタイルを判断することと、
前記最高画素強度および前記最低画素強度の前記一定のパーセンタイルを前記ヒストグラムから除外することと
をさらに含む、請求項11に記載のシステム。
【請求項１３】
前記コントラスト乗数を前記判断することが、前記コンテンツファイルの赤チャネル、緑チャネル、および青チャネルのバランスが少なくとも実質的に保たれるように、限度に少なくとも一部基づいて前記コントラスト乗数を調整することをさらに含む、請求項11に記載のシステム。
【請求項１４】
前記コンテンツファイルに関する前記輝度レベルを前記調整することが、前記コンテンツファイルに追加されるか、または前記コンテンツファイルから削減される輝度の量を制限することをさらに含む、請求項8に記載のシステム。
【請求項１５】
コンピュータ可読プログラムを含むコンピュータ使用可能記録媒体であって、前記コンピュータ可読プログラムが、コンピュータ上で実行されたとき、前記コンピュータに、
コンテンツファイル内に含まれた1つまたは複数のチャネルに関する1つまたは複数の画素強度を記述するデータを含むヒストグラムを生成するステップと、
前記ヒストグラムに少なくとも一部基づいて、前記コンテンツファイル内に含まれた前記1つまたは複数のチャネルに関する前記1つまたは複数の画素強度を調整するステップと、
前記コンテンツファイルに関する輝度レベルが1つまたは複数の容認できる輝度レベルを記述する範囲内であるかどうかを判断するステップと、
前記コンテンツファイルに関する前記輝度レベルが前記範囲外であるという判断に応答して、前記コンテンツファイルに関する前記輝度レベルを調整するステップと
を含むステップを実行させるコンピュータ使用可能記録媒体。
【請求項１６】
前記ヒストグラムを前記生成するステップが、前記1つまたは複数の画素強度が前記コンテンツファイルからサンプリングされる解析間隔を判断するステップをさらに含む、請求項15に記載のコンピュータ使用可能記録媒体。
【請求項１７】
前記ヒストグラムを前記生成するステップが、
前記コンテンツファイルによって記述されたフレームの1つまたは複数のエッジの固定割合量を記述する余白除外値を判断するステップと、
前記余白除外値に少なくとも一部基づいて、前記コンテンツファイルによって記述された前記フレームの1つまたは複数の部分を判断するステップと、
前記コンテンツファイルによって記述された前記フレームから前記1つまたは複数の部分を除外するステップと
をさらに含む、請求項15に記載のコンピュータ使用可能記録媒体。
【請求項１８】
前記1つまたは複数の画素強度を前記調整するステップが、
前記ヒストグラムに少なくとも一部基づいてコントラスト乗数を判断するステップと、
前記1つまたは複数の画素強度を前記コントラスト乗数で乗算して、前記1つまたは複数の画素強度を調整するステップと
をさらに含む、請求項15に記載のコンピュータ使用可能記録媒体。
【請求項１９】
前記コントラスト乗数を前記判断するステップが、
レベルしきい値を判断するステップと、
前記レベルしきい値に少なくとも一部基づいて、前記ヒストグラム内の最高画素強度および最低画素強度の一定のパーセンタイルを判断するステップと、
前記最高画素強度および前記最低画素強度の前記一定のパーセンタイルを前記ヒストグラムから除外するステップと
をさらに含む、請求項18に記載のコンピュータ使用可能記録媒体。
【請求項２０】
前記コントラスト乗数を前記判断するステップが、前記コンテンツファイルの赤チャネル、緑チャネル、および青チャネルのバランスが少なくとも実質的に保たれるように、限度に少なくとも基づいて前記コントラスト乗数を調整するステップをさらに含む、請求項18に記載のコンピュータ使用可能記録媒体。
【請求項２１】
前記コンテンツファイルに関する前記輝度レベルを前記調整するステップが、前記コンテンツファイルに追加されるか、または前記コンテンツファイルから削減される輝度の量を制限するステップをさらに含む、請求項15に記載のコンピュータ使用可能記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、参照によりその全体が本明細書に組み込まれている、2011年9月12日に出願した、「System for Enhancing Content」という表題の米国出願第61/533,758号の、米国特許法第119条に基づく優先権を主張するものである。
【０００２】
本明細書はデータ管理システムに関する。詳細には、本明細書は、コンテンツを拡張するためのシステムに関する。
【背景技術】
【０００３】
ますます多くのユーザが、1つまたは複数のビデオホスティングサイトを使用して、ビデオデータなどのコンテンツをオンラインで閲覧している。加えて、多くのビデオホスティングサイトは、ユーザがビデオコンテンツをビデオホスティングサイトにアップロードすることを可能にする。多くの場合、コンテンツを閲覧しているユーザは、コンテンツの画像品質を修正することを要望する。しかし、画像品質を修正する既存の方法は実施が困難である。多くのユーザは、コンテンツの画像品質を修正するために必要とされる技術的専門知識を有さない。既存の方法は、やはり、あまりにも多くの時間を費やし、その結果、大部分のユーザはコンテンツの修正を試みない。
【発明の概要】
【課題を解決するための手段】
【０００４】
ある実施形態によれば、ビデオホスティングサイトを含む、コンテンツファイルの画像を拡張するためのシステムが説明される。コンテンツホスティングサイトは、クライアントによってアクセスされるビデオなどのコンテンツを管理する。発行者(publisher)はビデオコンテンツをビデオホスティングサイトにアップロードする。コンテンツホスティングサイトは発行者によってアップロードされたビデオをクライアントにプッシュする。一実施形態では、クライアントがビデオコンテンツをアップロードする。
【０００５】
一実施形態では、コンテンツホスティングサイトは、クライアントによってアクセスされる画像を管理する。発行者は画像コンテンツをビデオホスティングサイトにアップロードする。コンテンツホスティングサイトは、発行者によってアップロードされた画像をクライアントにプッシュする。一実施形態では、クライアントは画像コンテンツをアップロードする。
【０００６】
詳細には、本明細書で開示される実施形態は、コンテンツファイルを拡張するためのシステムおよび方法を提供する。このシステムは、ヒストグラムモジュールと、コントラスト伸張モジュール(contrast stretching module)と、輝度モジュール(brightness module)とを備える。ヒストグラムモジュールは、コンテンツファイル内に含まれた1つまたは複数のチャネルに関する1つまたは複数の画素強度を記述するデータを含むヒストグラムを生成する。コントラスト伸張モジュールは、ヒストグラムに少なくとも一部基づいて、コンテンツファイル内に含まれた1つまたは複数のチャネルに関する1つまたは複数の画素強度を調整する。輝度モジュールは、コンテンツファイルに関する輝度レベルが1つまたは複数の容認できる輝度レベルを記述する範囲内であるかどうかを判断する。輝度モジュールは、コンテンツファイルに関する輝度レベルがその範囲外であるという判断に応答して、コンテンツファイルに関する輝度レベルを調整する。
【０００７】
一実施形態では、このシステムは、ユーザが画像を拡張することを望むことを示すデータを含むユーザ入力に応答して、コンテンツファイルの画像を拡張する。別の実施形態では、このシステムは、コンテンツファイルがコンテンツホスティングサイトにアップロードされるときに画像を拡張する。例えば、ユーザはコンテンツファイルをアップロードして、コンテンツホスティングサイトは、ユーザがその画像を拡張することを望むかどうかをユーザに尋ねるメッセージをユーザに送信する。別の例では、ユーザはコンテンツファイルをアップロードし、コンテンツホスティングサイトは、ユーザからの入力を要求せずに、その画像を拡張する。
【０００８】
本明細書で説明される特徴および利点は包括的ではなく、多くの追加の特徴および利点は、図面および説明に鑑みて当業者に明らかになるであろう。さらに、本明細書で使用される言語は、本明細書で開示される主題の範囲を限定することではなく、主に、可読性および教育目的で選択されていることに留意されたい。
【０００９】
実施形態は、類似の要素を参照するために類似の参照番号が使用される添付の図面の図において、限定ではなく、例として示される。
【図面の簡単な説明】
【００１０】
【図１】ある実施形態による、コンテンツを拡張するためのシステムのハイレベルブロック図である。
【図２】ある実施形態による、あるコンテンツエンハンサ(content enhancer)のブロック図である。
【図３】ある実施形態による、コンテンツを拡張するためのある方法の流れ図である。
【図４】ある実施形態による、コンテンツを拡張するためのある方法の流れ図である。
【図５】ある実施形態による、境界を含む画像のグラフィック表現である。
【図６】ある実施形態による、字幕を含む画像のグラフィック表現である。
【図７】ある実施形態による、クライアントデバイス上に表示されたユーザインターフェースのグラフィック表現である。
【図８】別の実施形態による、クライアントデバイス上に表示されたユーザインターフェースのグラフィック表現である。
【発明を実施するための形態】
【００１１】
コンテンツを拡張するためのシステムおよび方法が下で説明される。実施形態の以下の説明では、説明のために、様々な実施形態の十分な理解をもたらすために、多数の特定の詳細が記載される。しかし、様々な実施形態はこれらの特定の詳細なしに実現可能であることを当業者は理解されよう。他の例では、ある種の詳細を不明瞭にするのを避けるために、構造およびデバイスはブロック図の形で示される。例えば、ある実施形態は、ユーザインターフェースおよび特定のハードウェアを参照して下で説明される。しかし、他の実施形態は、データおよびコマンドを受信することができる何らかのタイプのコンピューティングデバイスと、サービスを提供する何らかの周辺デバイスとを参照して説明される場合がある。
【００１２】
「一実施形態」または「ある実施形態」の参照は、その実施形態に関して説明される特定の特徴、構造、または特性が少なくとも1つの実施形態の中に含まれていることを意味する。本明細書の様々な箇所での「一実施形態では」という表現の出現は、すべて同じ実施形態を指すとは限らない。
【００１３】
以下の説明のうちの一部は、コンピュータメモリ内のデータビットに関する動作のアルゴリズムおよび記号表現に関して提示される。これらのアルゴリズム的記述および表現は、その作業の内容を他の当業者に最も効果的に伝えるためにデータ処理技術分野の当業者によって使用される方法である。アルゴリズムは、ここで、一般的には、所望される結果をもたらす、自己矛盾のない一続きのステップと考えられる。これらのステップは、物理量の物理的操作を必要とするステップである。そうであるとは限らないが、通常、これらの量は、記憶されること、転送されること、組み合わされること、比較されること、またはそうでない場合、操作されることが可能な、電気信号、または磁気信号の形をとる。主に共通使用の理由で、これらの信号を時にはビット、値、要素、記号、文字、項、数などと呼ぶことが好都合であることがわかっている。
【００１４】
しかし、これらの用語および類似の用語のすべては適切な物理量に関連付けられるべきであり、これらの数量に適用された好都合なラベルに過ぎないことに留意すべきである。別段の規定がない限り、以下の説明から明らかなように、本説明を通して「処理する」、「演算する」、「計算する」、「判断する」、「表示する」などの用語は、コンピュータシステムのレジスタ内およびメモリ内の物理(電子)量として表されたデータを操作して、コンピュータシステムのメモリ内もしくはレジスタ内、またはその他のそのような情報記憶デバイス内、情報伝送デバイス内、あるいは情報表示デバイス内の物理量として同じように表される他のデータに変換するプロセッサベースのコンピュータシステム、または類似の電子コンピューティングデバイスの動作およびプロセスを指すことを理解されよう。
【００１５】
これらの実施形態は、やはり本明細書の動作を実行するための装置に関する。この装置は、必要とされる目的のために特別に構築可能であり、またはこの装置は、コンピュータ内に記憶されたコンピュータプログラムによって選択的に活性化または再構成可能な汎用コンピュータであってよい。開示される実施形態は、完全にハードウェア実施形態、完全にソフトウェア実施形態、またはハードウェア要素およびソフトウェア要素の両方を含む実施形態の形をとることが可能である。一実施形態は、プロセッサによって実行するための命令を記憶するためのファームウェア、常駐ソフトウェア、マイクロコード、または別の方法を含むが、これらに限定されない、コンピュータ可読記録媒体上に記憶された命令もしくはデータを備えたソフトウェア内で実施される。
【００１６】
さらに、これらの実施形態は、コンピュータもしくは何らかの命令実行システムによって使用するためのプログラムコード、またはコンピュータもしくは何らかの命令実行システムに関するプログラムコードを提供するコンピュータ使用可能媒体あるいはコンピュータ可読記録媒体からアクセス可能なコンピュータプログラム製品の形をとることが可能である。本明細書では、コンピュータ使用可能媒体またはコンピュータ可読記録媒体は、命令実行システム、命令実行装置、もしくは命令実行デバイスによって使用するためのプログラム、あるいは命令実行システム、命令実行装置、もしくは命令実行デバイスに関するプログラムを含むこと、記憶すること、または移送することが可能な何らかの装置である。コンピュータ可読記録媒体は、電子的、磁気的、光学的、電磁的、赤外線、または半導体のシステム(または、装置もしくはデバイス)あるいは伝搬媒体であってよい。有形コンピュータ可読記録媒体の例は、半導体メモリまたは固体メモリ、磁気テープ、取外し可能コンピュータディスケット、ランダムアクセスメモリ(RAM)、読出し専用メモリ(ROM)、剛性磁気ディスク、光ディスク、EPROM、EEPROM、磁気カードまたは光カードを含む。光ディスクの例は、コンパクトディスク-読出し専用メモリ(CD-ROM)、コンパクトディスク-読取り書込み(CD-R/W)ディスクおよびデジタルビデオディスク(DVD)を含む。
【００１７】
メモリ要素は、プログラムコードの実際の実行の間に用いられるローカルメモリと、大容量記憶装置と、実行の間に大容量記憶装置からコードを取り出さなければならない回数を減らすために、少なくともいくつかのプログラムコードの一時的な記憶を提供するキャッシュメモリとを含むことが可能である。いくつかの実施形態では、(キーボード、ディスプレイ、ポインティングデバイス、またはデータを受信するように、もしくはデータを提示するように構成されたその他のデバイスなど)入出力(I/O)デバイスは直接的にあるいは介在I/Oコントローラを介してシステムに結合される。
【００１８】
介在プライベートネットワークもしくは介在パブリックネットワークを介して他のデータ処理システムまたは遠隔のプリンタもしくは記憶デバイスに結合するのを可能にするために、ネットワークアダプタをデータ処理システムに結合することも可能である。モデム、ケーブルモデム、およびイーサネット（登録商標）カードは、現在利用可能なタイプのネットワークアダプタの単なる例である。
【００１９】
最後に、本明細書で提示されるアルゴリズムおよびディスプレイは、本質的に、何らかの特定のコンピュータまたはその他の装置に関係しない。本明細書の開示に従って、様々な汎用システムをプログラムと共に使用することが可能であるか、または必要とされる方法ステップを実行するために、より特化された装置を構築することが好都合であることがわかるであろう。様々なこれらのシステムの必要とされる構造は、下の説明から明らかになるであろう。本明細書で説明されるような実施形態の開示を実施するために、様々なプログラミング言語を使用することが可能であることを理解されよう。
【００２０】
システム概要
図1は、コンテンツを拡張するためのシステム130のある実施形態を例示するハイレベルブロック図である。本明細書で使用される場合、コンテンツは、コンテンツホスティングサイト100によってホストされるビデオおよび画像を含む。システム130の例示される実施形態は、(集合的に、または個々に、ユーザ125と呼ばれる)ユーザ125a、125nによってアクセスされる(集合的に、または個々に、クライアントデバイス115と呼ばれる)クライアントデバイス115a、115nと、コンテンツプロバイダ118と、コンテンツホスティングサイト100とを含む。コンテンツホスティングサイト100は、下で説明される他の要素の中でも、コンテンツエンハンサ191を含む。
【００２１】
1つのコンテンツプロバイダ118、2つのクライアントデバイス115、および1つのコンテンツホスティングサイト100だけが図1に例示されているが、任意の数のコンテンツプロバイダ118、クライアントデバイス115、およびコンテンツホスティングサイト100をネットワーク105に通信可能に結合することが可能であることを当業者は理解されよう。さらに、1つだけのネットワーク105がクライアントデバイス115、コンテンツプロバイダ118、およびコンテンツホスティングサイト100に結合されているが、任意の数のネットワーク105をクライアントデバイス115、コンテンツプロバイダ118、およびコンテンツホスティングサイト100に接続することが可能であることを当業者は理解されよう。
【００２２】
ネットワーク105は、有線または無線の従来のタイプのネットワークであり、星形構成、トークンリング構成、または当業者に知られているその他の構成など、任意の数の構成を有することが可能である。一実施形態では、ネットワーク105は、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)(例えば、インターネット)、および/またはそれを介して複数のデバイスが通信する、何らかのその他の相互接続データ経路のうちの1つまたは複数を含む。別の実施形態では、ネットワーク105は、ピアツーピアネットワークである。ネットワーク105は、様々な異なる通信プロトコル内でデータを送信するために、通信ネットワークの一部に結合されるか、または当該通信ネットワークの一部を含む。例えば、ネットワーク105は、3Gネットワークまたは4Gネットワークである。さらに別の実施形態では、ネットワーク105は、ショートメッセージングサービス(SMS)、マルチメディアメッセージングサービス(MMS)、ハイパーテキスト転送プロトコル(HTTP)、直接データ接続、ワイヤレスアプリケーションプロトコル(WAP)、電子メールを経由するなどしてデータを送受信するための、Bluetooth（登録商標）通信ネットワークまたはセルラ通信ネットワークを含む。さらに別の実施形態では、ネットワーク105内のリンクのすべてまたはいくつかは、セキュアソケットレイヤ(SSL)、セキュアHTTP、および/または仮想プライベートネットワーク(VPN)など、従来の暗号技術を使用して暗号化される。
【００２３】
例示される実施形態では、コンテンツホスティングサイト100は、信号線113を経由してネットワーク105に通信可能に結合される。コンテンツプロバイダ118は、信号線181を経由してネットワーク105に通信可能に結合される。クライアントデバイス115aは、信号線183を経由してネットワーク105に通信可能に結合される。ユーザ125aは、信号線197によって表されるように、クライアントデバイス115aと対話する。クライアントデバイス115nおよびユーザ125nは、類似の様式で結合されて、互いと対話する。
【００２４】
コンテンツホスティングサイト100は、ユーザが検索インターフェースおよび/またはブラウジングインターフェースを経由して、知的所有権コンテンツにアクセスするのを可能にする何らかのシステムである。「ウェブサイト」という用語は、何らかのインターネットワーキングプロトコルを使用してコンテンツにサービス提供するように適合された何らかのコンピュータシステムを表し、インターネットプロトコルもしくはHTTPプロトコルを経由して、アップロードまたはダウンロードされたコンテンツに限定されることが意図されないことを理解されよう。
【００２５】
一実施形態では、コンテンツホスティングサイト100は、ビデオまたは画像など、何らかのコンテンツのすべてもしくは一部を受信および共有するように構成される。コンテンツをいかなる媒体タイプおよび/またはいかなるファイルタイプで表すことも可能であることを当業者はやはり認識されよう。例えば、コンテンツホスティングサイト100は、(JPEGファイルまたはGIFファイルなど)ビデオファイルおよび画像ファイルのうちの1つもしくは複数などのコンテンツを共有する。
【００２６】
一実施形態では、コンテンツホスティングサイト100によって提供されるコンテンツのソースは、クライアントデバイス115を動作させているユーザ125によるコンテンツのアップロード、その他のウェブサイトもしくはコンテンツのデータベースの検索またはクロール(crawls)など、あるいはそれらの何らかの組合せからである。例えば、一実施形態では、コンテンツホスティングサイト100は、ユーザ125によるコンテンツのアップロードを可能にするように構成される。別の実施形態では、コンテンツホスティングサイト100は、そのようなソースをクロールすること、またはそのようなソースをリアルタイムで検索することによって、他のソースからコンテンツを取得することだけを行うように構成される。
【００２７】
コンテンツホスティングサイト100は、ネットワーク105に通信可能に結合される。例示される実施形態では、コンテンツホスティングサイト100は、フロントエンドインターフェース102と、コンテンツサービス提供モジュール104と、コンテンツ検索モジュール106と、アップロードサーバ108と、プレゼンテーションモジュール110と、サムネイル生成器112と、ユーザデータベース114と、コンテンツデータベース116と、コンテンツエンハンサ191とを含む。一実施形態では、コンテンツホスティングサイト100の構成要素は、互いと通信可能に結合される。例えば、これらの構成要素は、バス(図示せず)を経由して互いと通信可能に結合される。システムの特徴を不明瞭にしないように、ファイアウォール、負荷分散装置、認証サーバ、アプリケーションサーバ、フェイルオーバサーバ、サイト管理ツールなど、他の従来の特徴は示されない。
【００２８】
一実施形態では、コンテンツホスティングサイト100の例示される構成要素は、単一のソフトウェアもしくはハードウェアまたは複数のソフトウェアもしくはハードウェアとして実施される。一般に、ある実施形態で1つの構成要素によって実行されるとして説明される機能を、他の実施形態では、別の構成要素によって、または構成要素の組合せによって実行することも可能である。さらに、ある実施形態でコンテンツホスティングサイト100の構成要素によって実行されるとして説明される機能は、別の実施形態では、適切な場合、1つまたは複数のクライアントデバイス115によって実行される。一実施形態では、特定の構成要素に帰する機能性は、一緒に動作する、異なる構成要素または複数の構成要素によって実行される。
【００２９】
一実施形態では、様々なモジュールのそれぞれは、1つもしくは複数の中央処理装置(「CPU」、または、複数の場合、「CPUs」)と、メモリと、ネットワークインターフェースと、周辺インターフェースと、その他のよく知られている構成要素とを備えたサーバクラスコンピュータ上で実行するサーバプログラムとして実施される。コンピュータ自体は、好ましくは、LINUX（登録商標）など、オープンソースオペレーティングシステムを実行し、一般に、高性能CPUsと、1ギガバイト以上のメモリと、100ギガバイト以上のディスク記憶装置とを有する。一実施形態では、他のタイプのコンピュータが使用され、将来、より強力なコンピュータが開発されるにつれて、これらのコンピュータは本明細書で開示される教示に従って構成されることが予測される。別の実施形態では、これらの要素のうちのいずれかによって実施される機能性は、(例えば、ランダムアクセスメモリ(「RAM」)、フラッシュ、ハードディスク、光媒体/磁気媒体、または固体ドライブ(「SSD」)など)有形コンピュータアクセス可能記録媒体内に記憶されたコンピュータプログラム製品から提供される。
【００３０】
フロントエンドインターフェース102は、ネットワーク105を経由してコンテンツプロバイダ118およびクライアントデバイス115のうちの1つもしくは複数との通信を処理するインターフェースである。例えば、フロントエンドインターフェース102は、コンテンツプロバイダ118からアップロードされたコンテンツファイルを受信して、そのコンテンツをアップロードサーバ108に配信する。一実施形態では、フロントエンドインターフェース102はクライアントデバイス115のユーザ125から要求を受信して、その要求をコンテンツホスティングサイト100の他の構成要素(例えば、コンテンツ検索モジュール106またはコンテンツサービス提供モジュール104)に配信する。例えば、コンテンツはビデオであり、フロントエンドインターフェース102はビデオ検索クエリをユーザから受信して、そのビデオ検索クエリをコンテンツ検索モジュール106に送信する。
【００３１】
アップロードサーバ108は、フロントエンドインターフェース102を経由してコンテンツプロバイダ118から1つまたは複数のコンテンツファイルを受信する。例えば、アップロードサーバ108は、コンテンツプロバイダ118から、JPEGまたはGIFなど、ビデオファイルおよび画像ファイルのうちの1つもしくは複数を受信する。一実施形態では、アップロードサーバ108は、1つまたは複数のコンテンツを処理して、処理されたコンテンツをコンテンツデータベース116内に記憶する。アップロードサーバ108は、コンテンツ識別(「コンテンツID」)を記憶されたコンテンツファイルに割り当てる。コンテンツIDは、ビデオに関する識別子(「ビデオID」)および画像に関する識別子(「画像ID」)を含む。例えば、アップロードサーバ108はビデオIDをビデオに割り当てて、そのビデオをビデオIDと一緒にコンテンツデータベース116内に記憶する。他の実施形態では、アップロードサーバ108は、コンテンツをフォーマットすること、コンテンツを圧縮すること、メタデータがコンテンツをタグ付けすること、コンテンツ解析などのうちの1つまたは複数を実行する。
【００３２】
コンテンツデータベース116は、コンテンツホスティングサイト100によってユーザ125と共有されるコンテンツを記憶する記憶システムである。一実施形態では、コンテンツデータベース116は、アップロードサーバ108によって処理されるコンテンツファイルを記憶する。別の実施形態では、コンテンツデータベース116は、コンテンツファイルに関連するメタデータをやはり記憶する。メタデータは、タイトル、記述、タグ情報、時間の長さなどのうちの1つまたは複数を含む。一実施形態では、コンテンツファイルのメタデータのうちのいくつかまたはすべては、コンテンツプロバイダ118によって提供される。例えば、コンテンツプロバイダ118のユーザは、コンテンツをコンテンツホスティングサイト100にアップロードするとき、コンテンツのタイトルおよび記述を提供する。
【００３３】
コンテンツ検索モジュール106は、プロセッサ(図示せず)によって実行されたとき、ユーザ125からフロントエンドインターフェース102によって受信された何らかの検索クエリを処理するコードおよびルーチンを含む。ユーザ125からフロントエンドインターフェース102によって受信された検索クエリは、ユーザが関心のあるコンテンツを識別するキーワードなど、検索基準を含む。コンテンツ検索モジュール106は検索基準を使用して、コンテンツデータベース116内に記憶されたコンテンツファイルのメタデータに問い合わせる。クエリに関する検索結果は、ユーザ125に提示するためにフロントエンドインターフェース102に戻される。例えば、ユーザ125がフロントエンドインターフェース102にキーワード検索クエリを提供する場合、コンテンツ検索モジュール106は、そのキーワードに関してコンテンツデータベース116内に記憶されたコンテンツファイルを識別して、検索結果(例えば、識別されたコンテンツファイルのタイトル、記述、サムネイルなど、コンテンツIDおよび/またはメタデータ)をフロントエンドインターフェース102に戻す。
【００３４】
コンテンツサービス提供モジュール104は、プロセッサ(図示せず)によって実行されたとき、コンテンツ(例えば、ビデオ、書籍、画像、音楽ファイルなど)に関する要求を処理して、コンテンツをユーザに提供するコードおよびルーチンを含む。例えば、コンテンツサービス提供モジュール104は、フロントエンドインターフェース102を経由してユーザからクエリを受信して、そのクエリに少なくとも一部基づいて、コンテンツデータベース116からビデオのセットを取り出して、フロントエンドインターフェース102を経由してそのビデオのセットをユーザに提示する。
【００３５】
一実施形態では、コンテンツサービス提供モジュール104は、ユーザがコンテンツに対するリンク上でクリックしたとき、ユーザからコンテンツにアクセスするための要求を受信する。ユーザから受信された要求は、ユーザがアクセスすることを望むコンテンツのコンテンツIDを含む。一実施形態では、コンテンツIDは、ユーザがコンテンツに関するリンク上でクリックすると、自動的に要求内に含まれる。コンテンツサービス提供モジュール104はコンテンツIDを使用して、コンテンツデータベース116内でそのコンテンツを検索して、位置特定する。要求されたコンテンツの位置が特定されると、コンテンツサービス提供モジュール104は、フロントエンドインターフェース102を経由してそのコンテンツをユーザに送信する。コンテンツはウェブページ上でユーザに提示される。コンテンツのタイトルおよび記述など、コンテンツに関連するメタデータもコンテンツと一緒に提示される。一実施形態では、コンテンツサービス提供モジュール104は、ユーザのコンテンツ履歴がユーザデータベース114内に記憶されるように、コンテンツをユーザに送信した後で、コンテンツのコンテンツIDをユーザデータベース114内に記憶する。
【００３６】
ユーザデータベース114は、ユーザに関連するデータおよび/または情報を記憶する記憶システムである。例えば、ユーザデータベース114は、ユーザによってコンテンツホスティングサイト100にアップロードされたコンテンツファイルのコンテンツIDと、ユーザがコンテンツデータベース116からアクセスしたコンテンツファイルのコンテンツIDとを記憶する。一実施形態では、ユーザは、ログイン名およびパスワードを使用することによって、ならびに/またはユーザのインターネットプロトコルアドレスを使用することによって識別される。
【００３７】
サムネイル生成器112は、コンテンツに関するサムネイルを生成するコードおよびルーチンを含む。サムネイルは、コンテンツホスティングサイト100内のコンテンツを表す画像である。例えば、コンテンツはビデオであると仮定する。サムネイル生成器112は、ビデオを解析して、そのビデオのフレームをサムネイルとして選択する。一実施形態では、サムネイル生成器112は、ビデオに関する1つまたは複数の画像を提供し、そのビデオをコンテンツホスティングサイト100にアップロードするユーザは1つの画像をサムネイルとして選択する。
【００３８】
プレゼンテーションモジュール110は、プロセッサ(図示せず)によって実行されたとき、ユーザ向けの何らかの情報を、クライアントデバイス115など、対応するクライアントデバイスに提示するコードおよびルーチンを含む。例えば、プレゼンテーションモジュール110は、コンテンツデータベース116内に記憶されたコンテンツに関連するグラフィックまたは所有者データベース128内に記憶された所有者情報を生成して、フロントエンドインターフェース102とネットワーク105とを経由してそのグラフィックをクライアントデバイス115内にインストールされたウェブブラウザ(図示せず)に送信する。
【００３９】
コンテンツエンハンサ191は、図2〜図8を参照して下で説明される機能性を提供するように構成されたコードおよびルーチンを含む。
【００４０】
コンテンツプロバイダ118は、コンテンツをコンテンツホスティングサイト100に提供する何らかのデバイスである。例えば、コンテンツプロバイダ118は、コンテンツをコンテンツホスティングサイト100にアップロードするコンピューティングデバイスである。コンテンツプロバイダ118は、ネットワーク105に通信可能に結合される。一実施形態では、コンテンツプロバイダ118はクライアントデバイス115でもある。一実施形態では、コンテンツプロバイダ118は、コンテンツホスティングサイト100を動作させる同じエンティティである。
【００４１】
一実施形態では、コンテンツプロバイダ118は、様々なコンテンツプロバイダ機能を実行するためにクライアントデバイスを動作させるように構成される。コンテンツプロバイダ機能の例は、コンテンツをコンテンツホスティングサイト100にアップロードすること、コンテンツホスティングサイト100によって記憶されたコンテンツを編集すること、コンテンツをコンテンツホスティングサイト100から除去すること、コンテンツに関連するコンテンツプロバイダ選好を編集することを含むが、これらに限定されない。
【００４２】
クライアントデバイス115は、何らかのプロセッサベースのコンピューティングデバイスである。クライアントデバイス115は、ウェブブラウザまたは内蔵式クライアントアプリケーションなど、クライアントソフトウェアを実行して、ネットワーク105を経由してコンテンツホスティングサイト100に接続する。一実施形態では、クライアントデバイス115は様々な異なるコンピューティングデバイスを含む。クライアントデバイス115の例は、パーソナルコンピュータ、携帯情報端末、テレビジョンセットアップボックス、タブレットコンピュータ、スマートフォン、およびラップトップコンピュータを含むが、これらに限定されない。クライアントデバイス115は、プロセッサ(図示せず)と、メモリ(図示せず)と、コンピューティングデバイスにとって従来のその他の構成要素とを備える。一実施形態では、クライアントデバイス115は、ネットワーク105に通信可能に結合される。
【００４３】
一実施形態では、クライアントデバイス115は、コンテンツをコンテンツホスティングサイト100に提供するためのコンテンツプロバイダ118として構成される。一実施形態では、クライアントデバイス115は、コンテンツホスティングサイト100によって記憶されたコンテンツを取り出すように構成される。例えば、クライアントデバイス115は、ユーザが埋め込み式ビデオプレイヤを使用してコンテンツホスティングサイト100からビデオを閲覧することができるように、コンテンツホスティングサイト100内で使用されるビデオコンテンツフォーマット用に適合された埋め込み式ビデオプレイヤ(例えば、Adobe System, Inc.からのFlash(商標)プレイヤ)を含む。
【００４４】
コンテンツエンハンサ191
次に、図2を参照すると、コンテンツエンハンサ191がより詳細に示される。図2は、コンテンツホスティングサイト100のある実施形態を示すブロック図である。図2に示されるのは、コンテンツエンハンサ191、プロセッサ235、メモリ237、プレゼンテーションモジュール110、およびエンハンサ記憶装置199である。一実施形態では、図2に示されないコンテンツホスティングサイト100の構成要素(例えば、コンテンツサービス提供モジュール104、コンテンツ検索モジュール106、アップロードサーバ108、サムネイル生成器112など)はメモリ237内に記憶される。
【００４５】
一実施形態では、プロセッサ235は、コンテンツホスティングサイト100のコンピュータプロセッサであり、コンテンツサービス提供モジュール104、コンテンツ検索モジュール106、アップロードサーバ108、サムネイル生成器112、およびコンテンツエンハンサ191のうちの1つまたは複数を含むコードならびにルーチンを実行するために使用可能である。プロセッサ235は、演算を実行して、コンテンツサービス提供モジュール104、コンテンツ検索モジュール106、アップロードサーバ108、サムネイル生成器112、およびコンテンツエンハンサ191を実行するための論理演算装置、マイクロプロセッサ、汎用コントローラまたはいくつかのその他のプロセッサアレイを含む。プロセッサ235は、コンテンツホスティングサイト100の他の構成要素と通信するためにバス220に結合される。
【００４６】
プロセッサ235は、データ信号を処理して、複合命令セットコンピュータ(CISC)アーキテクチャ、縮小命令セットコンピュータ(RISC)アーキテクチャ、または命令セットの組合せを実行するアーキテクチャを含めて、様々なコンピューティングアーキテクチャを備えることが可能である。単一のプロセッサだけが図2に示されているが、複数のプロセッサを含めることが可能である。処理機能は、画像のディスプレイ、ならびに画像の捕捉および送信をサポートすることに限定される場合がある。処理機能は、様々なタイプの特徴の抽出およびサンプリングを含めて、より複雑なタスクを実行するのに十分な場合がある。その他のプロセッサ、オペレーティングシステム、センサ、ディスプレイ、および物理構成が可能であることは当業者に明らかであろう。プロセッサ235は、信号線236を経由してバス220に通信可能に結合される。
【００４７】
メモリ237は、非一時的な記録媒体である。メモリ237は、プロセッサ235によって実行可能な命令および/またはデータを記憶する。例えば、メモリ237は、図1を参照して上で説明されたコンテンツホスティングサイト100のモジュールのうちの1つまたは複数を記憶する。メモリ237は、コンテンツホスティングサイト100のその他の構成要素と通信するためにバス220に通信可能に結合される。一実施形態では、メモリ237上に記憶された命令および/またはデータは、本明細書で説明される技法のうちのいずれか、および/またはすべてを実行するためのコードを備える。メモリ237は、動的ランダムアクセスメモリ(DRAM)デバイス、静的ランダムアクセスメモリ(SRAM)デバイス、フラッシュメモリ、または当技術分野で知られているその他のメモリデバイスである。一実施形態では、メモリ237は、ハードディスクドライブ、フロッピー（登録商標）ディスクドライブ、CD-ROMデバイス、DVD-ROMデバイス、DVD-RAMデバイス、DVD-RWデバイス、フラッシュメモリデバイス、または当技術分野で知られている、いくつかのその他の不揮発性記憶デバイスなど、不揮発性メモリまたは類似の永久記憶デバイスならびに永久記録媒体をやはり含む。メモリ237は、信号線238を経由してバス220に通信可能に結合される。一実施形態では、メモリ237は、コンテンツエンハンサ191とコンテンツエンハンサ191内に含まれたサブモジュール202、204、206、208、210とを記憶する。
【００４８】
プレゼンテーションモジュール110は、信号線240を経由してバス220に通信可能に結合される。エンハンサ記憶装置199は、信号線242を経由してバス220に通信可能に結合される。
【００４９】
一実施形態では、コンテンツエンハンサ191は、通信モジュール202と、余白除外モジュール(margin exclusion module)204、ヒストグラムモジュール206と、コントラスト伸張モジュール208と、輝度モジュール210とを備える。
【００５０】
通信モジュール202は、プロセッサ235によって実行されたとき、コンテンツエンハンサ191およびコンテンツホスティングサイト100の要素同士の間の通信を管理するコードならびにルーチンを含む。通信モジュール202は、信号線222を経由してバス220に通信可能に結合される。
【００５１】
一実施形態では、通信モジュール202は、コンテンツファイルの拡張を要求するための入力をユーザ125から受信する。例えば、ユーザ125がコンテンツファイル(例えば、ビデオファイル)を拡張することを要望することを示す、クライアントデバイス115上に表示されたユーザインターフェース上のグラフィカルボタンをユーザ125がクリックすることに応答して、通信モジュール202は、ネットワーク105とフロントエンドインターフェース102とを経由してコンテンツファイルを拡張するための要求をクライアントデバイス115から受信する。一実施形態では、通信モジュール202は、コンテンツファイルの拡張を要求するための入力を余白除外モジュール204および/またはヒストグラムモジュール206に配信する。別の実施形態では、通信モジュール202は、拡張されたコンテンツファイルをコントラスト伸張モジュール208および/または輝度モジュール210から受信して、拡張されたコンテンツファイルを表示するためのユーザインターフェースを生成するプレゼンテーションモジュール110にその拡張されたコンテンツファイルを配信する。
【００５２】
余白除外モジュール204は、プロセッサ235によって実行されたとき、ビデオの一部がコンテンツエンハンサ191の他のモジュール206、208、210によって考慮されないように、余白除外値をコンテンツファイルに適用するコードおよびルーチンを含む。例えば、フレームは境界または字幕を含むと仮定する。境界を含む第1のフレーム、および字幕を含む第2のフレームの例が、図5〜図6を参照して下でさらに詳細に説明される。
【００５３】
一実施形態では、余白除外値は、コンテンツエンハンサ191の他の要素による解析から除外されることになるフレーム(または、画像)のエッジの固定割合量を指定する。したがって、(図5に示される)第1のフレームの場合、フレームのエッジは解析されないため、フレームの両側の黒い余白はコンテンツエンハンサ191の他の要素によって考慮されない。同様に、(図6に示される)第2のフレームの場合、フレームのエッジは解析されないため、字幕用のテキストを含むフレームの底部はコンテンツエンハンサ191の他の要素によって考慮されない。
【００５４】
一実施形態では、余白除外値は、コンテンツホスティングサイト100のアドミニストレータから受信された入力に少なくとも一部基づく。例えば、余白除外値は、余白のそれぞれに沿ってフレームの25%がコンテンツエンハンサ191によって提供される解析から除外されるように構成される。すなわち、フレームの高さの50%が解析から除外され、フレームの幅の50%が解析から除外される。このようにして、コンテンツエンハンサ191はフレームの中心だけを解析する。
【００５５】
余白除外データ292はエンハンサ記憶装置199上に記憶されたデータである。余白除外データ292は余白除外値を含む。一実施形態では、余白除外データ292は、コンテンツエンハンサ191がその機能性を提供するために必要な何らかのその他のデータを含む。
【００５６】
余白除外モジュール204は、ビデオ内のフレームの一部(または、画像の一部)がヒストグラムモジュール206と、コントラスト伸張モジュール208と輝度モジュール210とによる処理から除外されるように、余白除外値に少なくとも一部基づいて、ビデオファイル(または、画像ファイル)を処理する。余白除外モジュール204は信号線224を経由してバス220に通信可能に結合される。
【００５７】
ヒストグラムモジュール206は、プロセッサ235によって実行されたとき、コンテンツファイルと解析間隔290とに基づいて1つまたは複数のヒストグラムを判断するコードおよびルーチンを含む。コンテンツファイルは、ビデオまたは画像など、コンテンツのグラフィカル表現を生成するためのデータを含む。グラフィカル表現は、多数の画素によって形成される。これらの画素は、赤、緑、および青の色のうちの1つまたは複数によって形成される。赤、緑、および青の色は下でチャネルとして記述される。例えば、所与の画像の場合、画像は赤チャネルと、緑チャネルと、青チャネルとを有する。一実施形態では、これらのチャネルは、赤、緑、および青に加えて、異なる色および/または追加の色を含む。ヒストグラムは、ある期間にわたってビデオからサンプリングされた1つもしくは複数のチャネル(すなわち、赤、緑、または青)に関する画素値を記述する。一実施形態では、ヒストグラムは、例えば、アドミニストレータによって定義された期間にわたるチャネルの加重平均を記述する。解析間隔290は、その期間を記述するデータを含む。一実施形態では、ヒストグラムモジュール206は、赤チャネルに関する第1のヒストグラムと、緑チャネルに関する第2のヒストグラムと、青チャネルに関する第3のヒストグラムとを生成する。したがって、一実施形態では、ヒストグラムモジュール206は、ビデオ内の画像に関して2つ以上のヒストグラムを生成する。ヒストグラムモジュール206は、信号線226を経由してバス220と通信可能に結合される。
【００５８】
一実施形態では、ヒストグラムモジュール206は解析間隔290を判断する。別の実施形態では、ヒストグラムモジュール206は、解析間隔290を示す入力をコンテンツホスティングサイト100のアドミニストレータから受信する。ヒストグラムモジュール206は、解析間隔290と余白除外値を記述する余白除外データ292とに少なくとも一部基づいて、コンテンツファイルに関する1つまたは複数のヒストグラムを生成する。例えば、ヒストグラムモジュール206は、解析間隔内のコンテンツファイル(例えば、ビデオファイル)のフレームからサンプリングされた画素値(例えば、チャネル赤、緑、または青に関する画素強度)のヒストグラムを生成する。解析間隔の中心はビデオファイルの現在の入力フレームに置かれる。一実施形態では、解析間隔内のそれぞれのフレーム内の画素値はそれらの画素値が現在のフレームにどれくらい近接しているかによって、ガウス分布によって重み付けされる。このように、ビデオフレームが解析間隔に入るにつれてビデオフレームの寄与は徐々に高まり、その結果、何らかの突然のシフトは回避される。一実施形態では、解析間隔はデフォルトでは10秒である。例えば、解析間隔は、デフォルトで、現在のフレームの両側で5秒に設定される。
【００５９】
コントラスト伸張モジュール208は、プロセッサ235によって実行されたとき、ヒストグラムモジュール206によって生成された1つまたは複数のヒストグラムに少なくとも一部基づいて、チャネルのうちの1つまたは複数の強度を調整するためのコントラスト乗数を判断するコードおよびルーチンを含む。一実施形態では、コントラスト伸張モジュール208は、赤チャネルに関する第1のコントラスト乗数と、緑チャネルに関する第2のコントラスト乗数と、青チャネルに関する第3のコントラスト乗数とを判断する。例えば、コントラスト伸張モジュール208は、1つまたは複数のヒストグラムに基づいて、1つまたは複数のコントラスト乗数を生成する。一実施形態では、コントラスト乗数は、1つまたは複数の画素に関する強度を調整するために、フレーム内の1つまたは複数の画素に関する1つまたは複数の画素強度が乗算される係数である。
【００６０】
一実施形態では、コントラスト伸張モジュール208は、赤チャネル、緑チャネル、および青チャネルのそれぞれに関するコントラスト乗数を判断して、画像強度をそれぞれのチャネルに関するコントラスト乗数で乗算することによって、ビデオの赤チャネル、緑チャネル、および青チャネルに関するコントラストを別個に伸張する。そうすることは、とりわけ、同じレベルのカラーバランスを実現する。
【００６１】
一実施形態では、コントラスト伸張モジュール208はレベルしきい値を判断する。例えば、レベルしきい値はデフォルトでは0.005である。一実施形態では、コントラスト伸張モジュール208は、レベルしきい値をヒストグラムに適用することによってコントラスト乗数を判断する。例えば、コントラスト伸張モジュール208は、レベルしきい値によって特定された一定のパーセンタイルを判断する。レベルしきい値は0.005であると仮定する。コントラスト伸張モジュール208は、一定のパーセンタイルを第0.5パーセンタイルと判断する。コントラスト伸張モジュール208は、次いで、チャネルのヒストグラム内の第0.5パーセンタイルおよび第100〜0.5パーセンタイル(例えば、第99.5パーセンタイル)を見出すことによって、コントラスト乗数を判断する。コントラスト伸張モジュール208は、外れ値(outliers)を認めるために、最高画素および最低画素の一定のパーセンタイル(例えば、第0.5パーセンタイル)を除外する。これを行うことの利点は、例えば、単一の白画素または黒画素を画像(または、フレーム)内のいずれの場所からも除外して、何のコントラスト伸張も発生させないことを含むが、これに限定されない。コントラスト伸張モジュール208は、次いで、除外が適用された後で、最高点と最低点との間の範囲が色強度の範囲内の全画素値範囲、例えば、0〜255、0〜1を占有することになるように、または色強度の範囲に関する何らかの他の方式で画素値を乗算する。
【００６２】
一実施形態では、コントラスト伸張モジュール208は、下で説明されるようにコントラスト限度を適用する。コントラスト限度は、例えば、ビデオ内または画像内の1つもしくは複数のフレームがほぼ完全に黒い画像を含む場合に有利である。例えば、コントラスト乗数を主に黒色の画像に適用して、そのコントラストを0〜255の範囲に伸張した後で、過度の伸張から1つまたは複数のアーティファクトが生み出されると仮定する。コントラスト限度は、コントラスト伸張モジュール208によってどの程度のコントラスト伸張が実行されるかの最大量を定義する。例えば、コントラスト限度はデフォルトでは5の値である。一実施形態では、コントラスト限度は、コントラスト伸張に関する上限および下限を確定する。
【００６３】
一実施形態では、1つまたは複数のコントラスト限度が存在する。例えば、それぞれのチャネルは別個のコントラスト限度を有する。一実施形態では、コントラスト限度は、コンテンツホスティングサイト100のアドミニストレータから受信された入力によって指定された値である。別の実施形態では、3つの異なるチャネル(すなわち、チャネル赤、緑、または青)に関して1つのコントラスト限度が存在する。
【００６４】
一実施形態では、コントラスト伸張モジュール208は、下で説明されるように、カラーシフト(color shifting)限度を適用する。例えば、フレームの画像は日没を示すと仮定する。フレームの画像は、他の色に対して減少した1つまたは複数の色(すなわち、チャネル赤、緑、または青)の量を含む。この場合、例えば、日没時に存在する色により、日没の画像は増大した赤の色量を含む。コントラスト伸張モジュール208は、画像を解析して、その画像が、他の色に対して減少した1つまたは複数の色量を含む(例えば、この場合、画像は赤の色量に対して、減少した青および緑の色量を含む)ことを判断する。
【００６５】
一実施形態では、コントラスト伸張モジュール208は、カラーシフト限度を指定する、コンテンツホスティングサイト100のアドミニストレータからの入力に少なくとも一部基づいて、カラーシフト限度を判断する。カラーシフト限度は、赤チャネル、緑チャネル、および青チャネルのうちの1つまたは複数に関するコントラスト乗数の間の最大デルタ量を指定する値である。例えば、カラーシフト限度はデフォルトでは1.0である。カラーシフト限度は、赤チャネル、緑チャネル、および青チャネルに対するコントラスト調整のバランスが保たれることを確実にする。このようにして、異なるチャネルの間に一定の色彩比を有する画像は、コントラスト伸張モジュール208によって調整が施された後で、そのバランス(または、ほぼ同様のバランス)を維持することになる。
【００６６】
一実施形態では、コントラスト伸張モジュール208は、3つのチャネルに関する3つのコントラスト乗数の平均値を計算する。コントラスト伸張モジュール208は、次いで、3つのコントラスト乗数の値を平均値およびカラーシフト限度によって指定された範囲に調整する。例えば、この範囲の中心は、カラーシフト限度によって指定された上限および下限を有する平均値に置かれる。一実施形態では、カラーシフト限度に達した場合、コントラスト伸張モジュール208は、カラーシフト限度を超えないようにコントラスト乗数を調整する。日没の画像に関する上記の例では、カラーシフト限度は、コントラスト伸張モジュール208によって、赤チャネルに関する画素強度が減少して、赤チャネル、緑チャネル、および青チャネルの間にさらなるバランスを生み出すように構成される。一実施形態では、コントラスト伸張モジュール208は、赤チャネル、緑チャネル、および青チャネルのバランスが少なくとも実質的に保たれるように、カラーシフト限度に基づいてコントラスト乗数を調整する。例えば、上で説明されたように、コントラスト乗数を適用した後、赤チャネル、緑チャネル、および青チャネルの間のバランスは同じか、またはほぼ同じままとなる。
【００６７】
カラーシフト限度に関する一実施形態では、赤チャネル、緑チャネル、および青チャネルが完全にバランスを保つことは必要とされない。むしろ、カラーシフト限度の目的は、より高いバランスが達成されるように、赤チャネル、緑チャネル、および青チャネルの間の画素強度のデルタを減少することである。
【００６８】
コントラスト伸張モジュール208は、信号線228を経由してバス220に通信可能に結合される。
【００６９】
輝度モジュール210は、プロセッサ235によって実行されたとき、1つまたは複数の画素に関する輝度を調整するコードおよびルーチンを含む。一実施形態では、輝度モジュール210は、画像またはビデオが容認できる輝度のターゲットウィンドウ内にあるかどうかを判断して、輝度がターゲットウィンドウ内にあるように、画像またはビデオの輝度を調整する。例えば、輝度は0から100の尺度で測定され、容認できる輝度のターゲットウィンドウはデフォルトで50から70の範囲であると仮定する。
【００７０】
一実施形態では、コンテンツホスティングサイト100のアドミニストレータは、エンハンサ記憶装置199などのメモリ内に記憶される輝度入力をコンテンツホスティングサイト100に提供する。輝度入力は、容認できる輝度レベルのターゲットウィンドウを定義する。輝度は1から100の尺度で測定されると仮定する。輝度入力はターゲットウィンドウ50から70を定義するとさらに仮定する。55の輝度(例えば、55の平均輝度)を有するビデオは輝度を調整することを必要としないが、これは、55はターゲットウィンドウ内であるためである。対照的に、76の輝度を有するビデオは、ビデオがより暗く(すなわち、70以下に)なるように輝度調整を必要とする。輝度モジュール210は、ビデオを解析して、輝度が76であると判断して、ビデオをより暗くするための措置を講じる。同様に、32の輝度を有するビデオは、ビデオがより明るく(すなわち、50以上に)なるように輝度調整を必要とする。輝度モジュール210は、ビデオを解析して、輝度が32であると判断し、次いで、ビデオをより明るくする措置を講じる。
【００７１】
一実施形態では、ターゲット範囲を指定する代わりに、アドミニストレータは、すべてのビデオが整合しなければならないか、または輝度モジュール210によって調整されるべき目標値(例えば、65)を指定することを当業者は認識されよう。
【００７２】
一実施形態では、輝度モジュール210は、画像またはビデオのフレームに追加される輝度の総量を制限する。例えば、追加される輝度の総量は、3つのチャネル(例えば、赤チャネル、緑チャネル、および青チャネル)の間で等分されることによって計算される。輝度モジュール210は、追加される輝度の総量を、暗すぎる画像またはビデオのフレームを明るくするための輝度追加限度に制限する。例えば、輝度は0から100の尺度で測定され、輝度追加限度のデフォルトは15であると仮定する。別の実施形態では、輝度モジュール210は、輝度モジュール210が画像またはビデオのフレームから削減される輝度の量を輝度削減限度に制限する。例えば、輝度は0から100の尺度で測定されると仮定する。輝度削減限度のデフォルトは5である。
【００７３】
輝度モジュール210は、信号線230を経由してバス220に通信可能に結合される。
【００７４】
一実施形態では、コンテンツエンハンサ191は、クライアントデバイス115の非一時的メモリ内に記憶される。一実施形態では、コンテンツエンハンサは、クライアントデバイス115の非一時的メモリ内に記憶されたブラウザアプリケーション(例えば、Google Chrome)またはメディアプレイヤアプリケーション(例えば、Java（登録商標）メディアプレイヤ)の構成要素である。
【００７５】
一実施形態では、コンテンツエンハンサ191は、ユーザ125が画像の拡張を望むことを示すデータを含むユーザ入力に応答して、コンテンツファイルの画像を拡張する。別の実施形態では、コンテンツエンハンサ191は、コンテンツファイルがコンテンツホスティングサイト100にアップロードされるときに画像を拡張する。例えば、ユーザ125はコンテンツファイルをアップロードして、コンテンツホスティングサイト100は、ユーザが画像の拡張を望むかどうかをユーザに尋ねるメッセージをユーザ125に送信する。別の例では、ユーザ125はコンテンツファイルをアップロードして、コンテンツエンハンサ191は、ユーザ125からの入力を要求せずに画像を拡張する。
【００７６】
方法
図3〜図4は、図1〜図2を参照して上で説明されたシステムによって実行される様々な方法300および400を示す。
【００７７】
図3は、コンテンツを拡張するための方法300の一実施形態を示す流れ図である。一実施形態では、コンテンツエンハンサ191は、クライアントデバイス115のユーザ125が、ユーザ125がコンテンツファイルを拡張することを要望することを示すために、グラフィカルボタンをクリックしたことを示す入力を受信することに応答して方法300を開始する。ステップ302で、コンテンツエンハンサ191はヒストグラムを生成する。ステップ304で、コンテンツエンハンサ191は、コンテンツファイル(例えば、ビデオまたは画像)のすべてあるいは一部に関するチャネルのうちの1つもしくは複数に関してコントラストを調整する。例えば、コンテンツエンハンサ191は、コンテンツファイル内の1つもしくは複数の画素に関する1つもしくは複数のチャネル(例えば、赤、緑、または青)に関してコントラストを調整する。ステップ306で、コンテンツエンハンサ191は、コンテンツファイルのすべてまたは一部に関して輝度を調整する。例えば、コンテンツエンハンサ191は、コンテンツファイル内の1つもしくは複数の画素に関する1つもしくは複数のチャネル(例えば、赤、緑、または青)に関して輝度を調整する。
【００７８】
図4は、コンテンツファイルの画像を拡張するために、コンテンツエンハンサ191によって実施される方法400の一実施形態を示す流れ図である。ステップ402で、コンテンツホスティングサイト100は、コンテンツファイルに関する画像の拡張を要求するユーザ入力を受信する。ステップ404で、ヒストグラムモジュール206は、1つまたは複数のヒストグラムを生成するための解析間隔290を判断する。ステップ406で、余白除外モジュール204は余白除外値を判断する。例えば、余白除外モジュール204は、余白除外データ292に基づいて余白除外値を判断する。ステップ408で、ヒストグラムモジュール206は、解析間隔290と余白除外データ292とに少なくとも一部基づいて、コンテンツファイルに関する1つまたは複数のヒストグラムを生成する。例えば、ヒストグラムモジュール206は、3つのチャネル(赤、緑、または青)のそれぞれに関して1つのヒストグラムを生成する。ステップ410で、コントラスト伸張モジュール208は、ヒストグラムモジュール206によって生成された1つまたは複数のヒストグラムに少なくとも一部基づいて、コンテンツファイル内に含まれた1つまたは複数のチャネルの1つまたは複数の画素強度を調整する。例えば、コントラスト伸張モジュール208は、1つまたは複数のヒストグラムに少なくとも一部基づいてコントラスト乗数を判断し、次いで、コントラスト乗数に少なくとも一部基づいて、コンテンツファイル内に含まれた1つまたは複数のチャネルに関する画素のうちの1つまたは複数の強度を調整する。
【００７９】
一実施形態では、赤チャネル、青チャネル、および緑チャネルに関して異なるヒストグラムが存在し、異なるチャネルに関して異なるコントラスト乗数がやはり存在する。赤コントラスト乗数は、赤ヒストグラムに少なくとも一部基づいて、画像の赤チャネルに関してコントラスト伸張モジュール208によって判断される。青コントラスト乗数は、青ヒストグラムに少なくとも一部基づいて、画像の青チャネルに関してコントラスト伸張モジュール208によって判断される。緑コントラスト乗数は、緑ヒストグラムに少なくとも一部基づいて、画像の緑チャネルに関してコントラスト伸張モジュール208によって判断される。コントラスト伸張モジュール208は、異なる対応するコントラスト乗数に少なくとも一部基づいて、画像の異なるチャネルに関する画素強度を調整する(例えば、画像の赤チャネルの画素強度は赤コントラスト乗数に基づいて調整される)。
【００８０】
ステップ414で、輝度モジュール210は、1つまたは複数のコントラスト乗数を適用した後で生成された画像を解析して、輝度補正が必要とされるかどうかを判断する。輝度モジュール210によって、輝度補正は必要とされないと判断された場合、方法400はステップ416に進み、拡張された画像がクライアントデバイス115に送信される。輝度モジュール210によって、画像拡張が必要であると判断された場合、方法400はステップ418に進む。ステップ418で、輝度モジュール210は、ステップ414で輝度補正が必要であると判断された画像の輝度を調整する。ステップ420で、拡張された画像がクライアントデバイス115に送信される。
【００８１】
一実施形態では、コンテンツエンハンサ191はクライアントデバイス115の非一時的メモリ内に記憶される。この実施形態では、上で示された方法300、400は、クライアントデバイス115上でコンテンツエンハンサ191によって実施される。一実施形態では、コンテンツエンハンサは、ブラウザアプリケーション(例えば、Google Chrome)またはメディアプレイヤアプリケーション(例えば、Java（登録商標）メディアプレイヤ)の構成要素である。
【００８２】
画像の例
図5は、境界を含む第1のフレーム500のある例を示す。要素502a、502bは、フレームを拡張するときに考慮されない、第1のフレームの両側の黒い余白を示す。要素504は、境界502a、502bを除外した、第1のフレームの中央部分を示す。例えば、第1のフレーム500の拡張を行うとき、フレームの中央部分504が解析される。
【００８３】
図6は、字幕を含む第2のフレーム600のある例を示す。要素602は、第2のフレーム600を拡張するときに考慮されない字幕に関するテキストを示す。
【００８４】
グラフィカルユーザインターフェース(「GUI」)の例
図7は、クライアントデバイス115上で実行されるメディアプレイヤに関する第1のGUI 700のある例を示す。要素702は、メディアプレイヤ上で再生可能なビデオに関する画像拡張を要求するためにユーザ125によってクリック可能なグラフィカルボタンである。例えば、ユーザ125は、ボタン702をクリックして、コンテンツエンハンサ191に上で説明された方法300、400のうちの1つまたは複数の実施を開始させる。この例では、ボタン702は、テキスト「I'm Feeling Lucky」とラベル付けされている。
【００８５】
要素704は、コンテンツ拡張に先立つ第1の画像(「元の」画像)のある例を示す。要素706は、本明細書で説明される、コンテンツエンハンサ191による画像拡張の後の第1の画像のプレビューを示す。例えば、コンテンツエンハンサ191は、上で説明された方法300、400のうちの1つまたは複数を実施して、要素706内に示された画像を出力する。
【００８６】
要素708は、ビデオが一時停止していることを示すグラフィックである。要素710は、ビデオに関する時間カウントを示すグラフィックである。この例では、時間カウントは、ビデオの長さが18秒であることを示す。時間カウントは、2秒のビデオ再生が発生したことをやはり示す。
【００８７】
図8は、クライアントデバイス115上で実行されたメディアプレイヤに関する第2のGUI 800のある例を示す。要素802は、メディアプレイヤ上で再生可能なビデオに関する画像拡張要求するためにユーザ125によってクリック可能なグラフィカルボタンである。この例では、ボタン802は、テキスト「I'm Feeling Lucky」によってラベル付けされている。
【００８８】
要素804は、コンテンツ拡張に先立つ第1の画像(「元の」画像)のある例を示す。要素806は、本明細書に説明された、コンテンツエンハンサ191による画像拡張後の第1の画像のプレビューを示す。例えば、コンテンツエンハンサ191は、上で説明された方法300、400のうちの1つまたは複数を実施して、要素806に示された画像を出力する。
【００８９】
要素808が、ビデオが再生していることを示すグラフィックである。一実施形態では、コンテンツエンハンサ191は、ビデオが再生している間に画像拡張を実現する。このある例が図8に示される。別の実施形態では、コンテンツエンハンサ191は、ビデオが一時停止されるときにコンテンツ拡張を実現する。このある例は図7に示される。
【００９０】
要素810は、ビデオに関する時間カウントを示すグラフィックである。この例では、時間カウントは、ビデオの長さが13秒であることを示す。この時間カウントは、13秒のビデオ再生が発生したことをやはり示す。
【００９１】
本明細書の実施形態の前述の説明は、例示および説明のために提示されている。この説明は、包括的であること、または本明細書を開示されたまさにその形式に限定することが意図されない。上述の教示に照らして、多くの修正および改変が可能である。本開示の範囲はこの詳細な説明に限定されず、本出願の請求項によって限定されることが意図される。当業者が理解するように、本明細書は、その趣旨または本質的な特性から逸脱せずに、他の特定の形式で実施可能である。同様に、これらのモジュール、ルーチン、特徴、属性、方法、およびその他の態様の特定の命名および分割は必須または重要ではなく、本明細書またはその特徴を実施する機構は、異なる名称、分割、および/または形式を有する場合がある。さらに、当業者に明らかなように、本開示のモジュール、ルーチン、特徴、属性、方法、およびその他の態様は、ソフトウェア、ハードウェア、ファームウェア、またはそれら3つの何らかの組合せとして実施可能である。また、その例がモジュールである、本明細書の構成要素がソフトウェアで実施されるときはいつでも、その構成要素は、独立型プログラムとして、より大きなプログラムの一部として、複数の別個のプログラムとして、静的もしくは動的に連結されたライブラリとして、カーネルローダブルモジュール(kernel loadable module)として、デバイスドライバとして、および/または、コンピュータプログラミングの当業者に現在もしくは将来知られるすべてのいかなる他の様式でも実施可能である。加えて、本開示は、決して、何らかの特定のプログラミング言語、または何らかの特定のオペレーティングシステムもしくは環境での実施に限定されない。したがって、本開示は、本明細書の範囲を限定するのではなく、例示することが意図される。
【符号の説明】
【００９２】
100  コンテンツホスティングサイト
102  フロントエンドインターフェース
104  コンテンツサービス提供モジュール
105  ネットワーク
106  コンテンツ検索モジュール
108  アップロードサーバ
110  プレゼンテーションモジュール
112  サムネイル生成器
113  信号線
114  ユーザデータベース
115  クライアントデバイス
115a  クライアントデバイス
115n  クライアントデバイス
116  コンテンツデータベース
118  コンテンツプロバイダ
125  ユーザ
125a  ユーザ
125n  ユーザ
128  所有者データベース
130  システム
181  信号線
183  信号線
191  コンテンツエンハンサ
197  信号線
199  エンハンサ記憶装置
【図１】
2014526745.tif 000003
【図２】
2014526745.tif 000004
【図３】
2014526745.tif 000005
【図４】
2014526745.tif 000006
【図７】
2014526745.tif 000007
【図８】
2014526745.tif 000008
【図５】
2014526745.tif 000009
【図６】
2014526745.tif 000010
【国際調査報告】
2014526745.tif 000011