(57)【特許請求の範囲】
【請求項１】
方法であって、
表示装置に画像を表示させ、
前記画像に描かれるコンテンツの１以上の識別要素を取得し、
前記画像に描かれるコンテンツの現在の方向を決定し、前記現在の方向は、コンテンツの前記１以上の識別要素に基づいて決定され、
前記コンテンツを現在の方向よりも基準方向により近い算出された回転位置に向ける、画像の回転量を決定し、
前記表示装置に表示された画像編集プログラムのグラフィカルインタ−フェイスへのユーザからの入力を受領し、前記入力は、前記算出された回転位置とは異なる手動の回転位置へ、画像の回転を指示するものであり、
前記手動の回転位置が前記算出された回転位置の特定の範囲内にあることを決定し、
前記入力に応答して、さらに、前記手動の回転位置が前記算出された回転位置の特定の範囲内にあることを決定したことに応答して、前記決定された回転量だけ前記画像を回転させ、及び
前記手動の回転位置が前記算出された回転位置の特定の範囲内にあることを決定したことに応答して、前記回転された画像の更新された画像を表示させ、その表示は、前記算出された回転位置で前記画像を表示することを含む、
ことを含む前記方法。
【請求項２】
請求項１の方法であって、前記基準方向は、現在の方向での画像の１以上の境界線またはエッジに基づいて、水平軸に合わされる、前記方法。
【請求項３】
請求項１の方法であって、現在の方向を決定することには、前記画像に描かれたコンテンツの現在の方向を決定するために、１以上の分析技術を選択し、そして適用することを含み、前記1以上の分析技術は、前記画像に描かれたコンテンツの１以上の識別要素に基づいて複数の技術から選択される、前記方法。
【請求項４】
請求項３の方法であって、１以上の分析技術を選択し、そして適用することには、
コンテンツで識別された１以上の顔の方向を決定するために、１以上の顔の方向判定技術を選択し、そして適用し、１以上の顔の少なくとも一つの顔の両目の間の軸に基づき顔の方向を決定し、
コンテンツで識別された１以上の顔でない特徴の方向を決定するために、１以上の顔でない特徴の方向判定技術を選択し、そして適用し、１以上の顔でない特徴について使用したエッジ検出プロセスに基づき、顔でない特徴の方向を決定し、及び
顔の方向軸及び顔でない特徴の方向軸に基づき最終的に得られる軸を決定し、前記コンテンツの現在の方向は、最終的に得られる軸に基づき決定される、
ことを含む前記方法。
【請求項５】
請求項１の方法であって、現在の方向を決定することには、画像内の少なくとも一つの有力なエッジを求めるためにエッジ検出技術を用いることを含み、及び回転量を決定することには、前記基準方向からの、少なくとも一つの有力なエッジのずれの量を決定することを含む、前記方法。
【請求項６】
請求項４の方法であって、前記顔の方向軸及び顔でない特徴の方向軸は、最終的に得られる軸の決定において、異なる加重値が与えられる、
前記方法。
【請求項７】
請求項４の方法であって、エッジ検出プロセスに関連付けられる種類のコンテンツには、風景または屋外環境の描写を含む、前記方法。
【請求項８】
請求項４の方法であって、最終的に得られる軸の決定には、顔の方向軸及び顔でない特徴の方向軸の平均の軸(average axis)及び線形数列軸（linear progression axis）のうちの一つを決定することを含む、前記方法。
【請求項９】
請求項４の方法であって、コンテンツで識別された１以上の顔でない特徴の方向を決定するために、１以上の顔でない特徴の方向判定技術を選択し、適用することには、
ある種類の１以上の顔でない特徴に基づき、複数の利用可能なエッジ検出技術から少なくとも一つのエッジ検出技術を選択することを含み、前記少なくとも一つの選択されたエッジ検出技術は、１以上の、顔でない特徴の種類と所定の関連を持つ、
前記方法。
【請求項１０】
請求項４の方法であって、１以上の顔は複数の顔であって、顔の方向軸を決定することには
画像に描かれる複数の各顔の両目の間の軸を決定すること、及び顔の方向軸を、複数の顔の決定された軸に合致する、得られる軸として決定することを含む、
前記方法。
【請求項１１】
請求項４の方法であって、
前記コンテンツの現在の方向を決定することには、複数の異なる技術のそれぞれについて前記コンテンツの現在の方向を決定することを含み、
前記回転量を決定することは、前記現在の方向よりも前記基準方向により近い、対応する複数の異なる算出された回転位置に、前記コンテンツを向けるように、複数の異なる回転量を決定することを含み、
異なる算出された回転位置のそれぞれは、前記複数の異なる技術における異なる技術に基づいており、
前記手動の回転位置は、前記複数の異なる算出された回転位置とは異なっており、
前記手動の回転位置が前記算出された回転位置の特定の範囲内にあることを決定することは、前記手動の回転位置が前記複数の異なる算出された回転位置における選択された算出された回転位置の特定の範囲内にあることを決定することを含み、
前記画像を回転させることは、前記複数の異なる回転量における選択された回転量だけ画像を回転させることを含み、前記選択された回転量は、前記選択された算出された回転位置に対応し、
前記算出された回転位置で前記画像を表示することは、前記選択された算出された回転位置で前記画像を表示することを含む、前記方法。
【請求項１２】
請求項１１の方法であって、
前記選択された算出された回転位置は、前記ユーザからの前記入力によって示された回転方向における前記複数の異なる算出された回転位置の中で前記画像の表示に最も近い、異なって回転された方向の一つである、前記方法。
【請求項１３】
請求項１の方法であって、現在の画像の方向を決定することには、
画像の現在の方向を決定するために、機械学習を用いる複数の識別器に画像を入力することを含み、各識別器は、前記画像と異なる学習画像を用いて、入力画像の異なる回転位置を認識するように事前に学習されている、
前記方法。
【請求項１４】
システムであって、
記憶装置と、
前記記憶装置にアクセスして、操作を実行可能にする少なくとも一つのプロセッサを含み、
前記操作は、
表示装置に画像を表示させ、
前記画像に描かれたコンテンツの1以上の識別要素を取得し、
前記画像の前記コンテンツの現在の方向を決定し、前記現在の方向は、コンテンツの１以上の識別要素に基づいて決定され、
前記コンテンツを現在の方向よりも基準方向により近い算出された回転位置に向けるように前記画像の回転量を決定し、
前記表示装置に表示された画像編集プログラムのグラフィカルインタ−フェイスへのユーザからの入力を受領し、前記入力は、前記算出された回転位置とは異なる手動の回転位置へ、画像の回転を指示するものであり、
前記手動の回転位置が前記算出された回転位置の特定の範囲内にあることを決定し、
前記入力に応答して、さらに、前記手動の回転位置が前記算出された回転位置の特定の範囲内にあることを決定したことに応答して、前記決定された回転量だけ前記画像を回転させ、及び
前記手動の回転位置が前記算出された回転位置の特定の範囲内にあることを決定したことに応答して、前記回転された画像の更新された画像を表示させ、その表示は、前記算出された回転位置で前記画像を表示する
ことを含む前記システム。
【請求項１５】
請求項１４のシステムであって、
前記コンテンツの現在の方向を決定することには、複数の異なる技術のそれぞれについて前記コンテンツの現在の方向を決定することを含み、
前記回転量を決定することは、前記現在の方向よりも前記基準方向により近い、対応する複数の異なる算出された回転位置に、前記コンテンツを向けるように、複数の異なる回転量を決定することを含み、
異なる算出された回転位置のそれぞれは、前記複数の異なる技術における異なる技術に基づいており、
前記手動の回転位置は、前記複数の異なる算出された回転位置とは異なっており、
前記手動の回転位置が前記算出された回転位置の特定の範囲内にあることを決定することは、前記手動の回転位置が前記複数の異なる算出された回転位置における選択された算出された回転位置の特定の範囲内にあることを決定することを含み、
前記画像を回転させることは、前記複数の異なる回転量における選択された回転量だけ画像を回転させることを含み、前記選択された回転量は、前記選択された算出された回転位置に対応し、
前記算出された回転位置で前記画像を表示することは、前記選択された算出された回転位置で前記画像を表示することを含む、前記システム。
【請求項１６】
請求項１の方法であって、さらに、画像編集プログラムの回転モードを作動させるユーザの追加の入力を受領し、前記回転モードはユーザに手動により画像を回転することを可能にする、前記方法。
【請求項１７】
請求項３の方法であって、
前記回転量を決定することは、コンテンツを前記基準方向により近い異なる算出された回転位置にそれぞれ向ける複数の異なる回転量を決定することを含み、前記異なる回転量は、現在の方向を決定するために適用される一以上技術の各異なる技術と関連し、
前記手動の回転位置が前記算出された回転位置の特定の範囲内にあることを決定することは、前記手動の回転位置が前記異なる算出された回転位置の一つの特定の範囲内にあることを決定することを含み、
前記画像を回転させることには、選択された算出された回転位置に対応するように複数の異なる回転量のうちの一つの選択された量だけ前記画像を回転させ、
前記算出された回転位置で前記画像を表示することは、前記選択された算出された回転位置で前記画像を表示することを含む、、前記方法。
【請求項１８】
請求項１７の方法であって、前記選択された回転量は、前記画像を、ユーザ入力により指示された回転方向に、前記画像の表示に最も近い、回転方向に回転させる、前記方法。
【請求項１９】
請求項３の方法であって、さらに、
追加のユーザ入力に基づき、回転された画像の更新された表示が受け入れられるかを決定することを含み、及び
回転された画像の更新された表示が受け入れられないと決定されたことに応答して、
回転させる前の画像に基づき、複数の技術の１以上の異なる分析技術を用いて、画像の新しい現在の方向を決定し、前記１以上の異なる分析技術は、１以上の分析技術の少なくとも一つと異なるものであり、
画像の新たな回転量を決定し、
新たな回転量により画像を回転させ、及び
前記回転された画像の新たな更新された画像を表示し、その表示は、新たな回転量に基づき、表示された回転方向において画像を表示する、
ことを含む、前記方法。
【発明の詳細な説明】
【背景技術】
【０００１】
本出願は、2012年11月16日に出願された米国特許出願第13/678,850の優先権を主張するものであり、同出願は、その全体が参照により本明細書に組み入れられる。
【０００２】
広く行き渡ったインターネット通信の利用のみならず、デジタルカメラの人気及び利便性が写真などのユーザーにより生成された画像を広く普及させている。
例えば、電子メール、掲示板、フォーラム、ソーシャルネットワーキングサービスなどのインターネットプラットフォーム及びサービスのユーザーは、自分自身と他人が見るために画像を投稿する。しかし、多くの撮影された画像は、撮影時に想定した方向から、カメラまたは他の撮像装置が意図することなく回転しているため、回転によるねじれ（skew）を有する。いくつかのケースでは、ユーザーは、様々なソフトウェアプログラムを使用して、その後手動でこの回転を修正することができる。
【発明の概要】
【０００３】
本出願の発明は画像の内容の分析に基づく画像の回転に関するものである。
いくつかの実施態様では、ある方法は、画像に示されるコンテンツの1以上の識別要素を取得し、画像に示されたコンテンツの現在の方向を決定することを含む。現在の方向は、コンテンツの１以上の識別要素に基づいて決定される。
画像の回転量は、識別されたコンテンツを現在の方向よりもある所定の基準方向により近く方向付けるように決定される。画像は決定された量だけ回転される。
【０００４】
上記の方法の様々な実施態様および例が記述される。所定の基準方向は、現在の方向での画像の１以上の境界線またはエッジに基づいて、ほぼ水平軸に合わせすることができる。現在の方向は、複数の技術から利用可能な1以上の分析技術を選択し、そして適用することに基づいて決定することができ、その技術の選択は、コンテンツの1以上の識別要素に基づいて決定される。現在の方向を決定することには、画像内の1以上の特徴を決定するための１以上の線形軸に基づく画像の方向軸(orientation axis) を決定することを含むことができる。
いくつかの実施態様では、エッジ検出技術は、画像内の少なくとも一つの有力なエッジを見つけるために用いることができ、この方法は、所定の基準方向からの有力なエッジのずれの量を決定することができる。エッジ検出プロセスは、画像が、風景または屋外環境の描写のような、エッジ検出プロセスを使用することに関連付けられているある種類のコンテンツを描いていると判断したことに応答して、使用することができる。
【０００５】
いくつかの実施態様では、現在の画像の方向を決定することには、画像に描かれていると識別された各顔の両目の間の軸を決定することを含む顔の方向判定技術を用いることを含むことができる。顔の方向判定技術は、画像が1以上の顔を描いていると判断したことに応答して用いることができる。得られる軸は、一以上の顔の決定された軸に当て嵌めることができ、この方法は、所定の基準方向からの、得られる軸のずれの量を決定することができる。いくつかの例では、得られる軸は、複数の顔の軸の平均の軸（average axis）として、複数の顔の軸のモード軸（mode axis)として、1以上の顔の軸の平均軸（mean axis）として決定することができる。他の例では、現在の方向を決定することには、画像の現在の方向を決定するために、機械学習を用いる複数の識別器に画像を入力することを含むことができる。上記の方法のいくつかの実施態様では、ユーザーからの入力は、画像の回転の指示であるとして受領することができ、そして回転された画像が対応して表示され、それは現在の方向の画像の表示から、表示された回転された方向に急変化（snapping）させることを含む。表示された回転方向は決定された回転の量に対応する。
【０００６】
いくつかの実施態様では、ある方法は、画像コンテンツを含む画像を取得し、そして画像に示されるコンテンツを識別することを含むことができる。識別されたコンテンツは、画像中の画像コンテンツの少なくとも一部であっても良い。
この方法は、画像に描かれたコンテンツの現在の方向を決定するために、1以上の技術を選択しそして適用し、この1以上の技術は複数の利用可能な技術から選択される。この技術の選択は、画像に描かれ識別されたコンテンツに基づく。
この方法は、描かれたコンテンツを現在の方向よりも所定の基準方向に近い方向に向けるように画像の回転量を決定し、そして決定された回転量だけ画像を回転させる。
【０００７】
いくつかの実施態様では、システムは、記憶装置と、記憶装置にアクセスして、操作を実行可能にする少なくとも一つのプロセッサを含む。操作は、画像に描かれたコンテンツの1以上の識別要素を取得し、画像に描かれたコンテンツの、現在の方向を決定することを含む。現在の方向は、コンテンツの1以上の識別要素に基づいて決定される。画像の回転量は、識別されたコンテンツを現在の方向よりもある所定の基準方向により近い方向に向けるように決定される。操作は、画像をある決定された量だけ回転することを含む。
【０００８】
上記システムの様々な実施態様及び例では、所定の基準方向は現在の方向における画像の、1以上の境界線又はエッジに基づいて、ほぼ水平の軸に位置合わせされる。現在の方向を決定する操作には、画像の現在の方向を決定するために1以上の技術を選択し、そして適用することを含むことができ、前記技術は、1以上の識別要素に基づいて複数の技術から選択される。現在の方向を決定する操作は、画像内の1以上の特徴について決定された１以上の線形軸に基づき、画像に対する方向軸を決定することを含むことができる。現在の方向を決定することには、画像中の少なくとも一つの有力なエッジを見つけるために、少なくとも一つのエッジ検出技術及び画像に描かれていると識別された各顔の両目の間の軸を決定することを含む顔の方向判定技術を使用することを含むことができる。入力は、画像の回転を指示するユーザーから受領することができ、回転された画像が表示されるが、それには画像の表示を現在の方向から表示された回転された方向に急変化させることを含み、表示された回転された方向は決定された回転量に対応する。
【図面の簡単な説明】
【０００９】
図1は、本明細書に記載の1以上の実施態様に使用され得る例示的なネットワーク環境のブロック図である。
【００１０】
図2A-2Fは、いくつかの実施態様における、その方向を修正するために顔のコンテンツを有する画像を回転させる例の説明図である。
【００１１】
図3A-3Fは、いくつかの実施態様における、その方向を修正するために風景コンテンツを有する画像を回転させる例の説明図である。
【００１２】
図4は、いくつかの実施態様における、画像コンテンツに基づいて、画像の方向を修正するために回転を用いる方法の例を示すフロー図である。
【００１３】
図5は、いくつかの実施態様における、図4の方法の実施例を示すフロー図である。
【００１４】
図6は、図5の方法において使用する画像コンテンツの現在の方向を決定するための実施態様を示すフロー図である。
【００１５】
図7は、図５の方法において使用する画像コンテンツの現在の方向を決定する第2の実施態様を示すフロー図である。
【００１６】
図8は、本明細書に記載の1以上の実施態様において使用され得る装置の例のブロック図である。
【発明の詳細な説明】
【００１７】
本明細書に記載された一以上の実施態様は、画像の方向を修正するために画像コンテンツに基づく画像の回転に関する。種々の実施態様において、あるシステムは、画像に描かれたコンテンツの識別要素を取得する。前記システムは、識別されたコンテンツに基づいて、画像コンテンツの現在の方向及びそのコンテンツが、その方向を修正するために回転を必要とするかどうかを決定することができる。そしてシステムは、正しい方向に画像を回転させることができる。これらおよびその他の記載された特徴は、自動的に決定され、及び適切な画像の回転をユーザーにもたらすことができる。
【００１８】
前記システムは、画像に描かれ識別されたコンテンツの識別要素を取得することができる。例えば、顔認識または物体認識は、画像コンテンツの記述子（descriptor）のような識別要素を提供することができる。システムはコンテンツの識別要素に基づいて、画像コンテンツの現在の方向を決定することができる。例えば、いくつかの実施態様では、一以上の分析技術が、識別されたコンテンツに基づいて選択され、選択された技術がコンテンツの現在の方向を決定するために画像に適用される。このような分析技術は、人の顔や風景や屋外環境のような、ある種のコンテンツに対してより適用が可能なまたは効果的な技術を含むことがある。いくつかの実施態様では、現在の方向を決定するために機械学習技術を使用することができる。
様々な実施態様において、画像に描かれた複数の現象および/または複数の種類のコンテンツを考慮した結果に基づいて、得られる方向を見出だすことができる。あるシステムでは、描かれたコンテンツを水平方向のようなある基準方向により近い方向に向ける画像の回転量を決定し、そして画像の方向を修正するために決定された量だけ画像を回転させることができる。
【００１９】
そのような特徴は、画像コンテンツに基づいて、画像の自動化された回転修正を可能にし、画像中の歪みの適切な修正を行う。例えば、識別された画像コンテンツに基づいて決定された回転は、画像の、より正確で、一貫性のある、良好な方向の修正を可能にすることができる。いくつかの実施態様では、画像の方向を修正するために、ユーザーが画像を手動で操作することを必要とせず、いくつかの実施態様では、ユーザーが画像の方向を、より簡単かつ迅速に手動操作することを可能にするガイドとして修正される方向を決定することができる。
【００２０】
図1は、本明細書に記載のいくつかの実施態様で使用することができる、例示的なネットワーク環境100のブロック図を示す。いくつかの実施態様では、ネットワーク環境100は、図1に示す例のサーバシステム102のような、1以上のサーバシステムを含む。サーバシステム102は、例えば、ネットワーク130と通信することができる。サーバシステム102は、サーバ装置104とソーシャルネットワークデータベース106または他の記憶装置を含むことができる。ネットワーク環境100は、また、ネットワーク130及びサーバシステム102を介して互いに通信することができる、クライアントデバイス120、122、124、および126などの1以上のクライアントデバイスを含むことができる。ネットワーク130は、1以上のインターネット、ローカルエリアネットワーク（LAN）、無線ネットワーク、スイッチまたはハブ接続などを含む、任意の種類の通信ネットワークとすることができる。
【００２１】
図を簡単にするために、図1は、サーバシステム102、サーバ装置104、及びソーシャルネットワークデータベース106を１ブロックに示しており、クライアント・デバイス120、122、124、及び126を4ブロックに示している。
サーバブロック102,  104、及び106は、複数のシステム、サーバ装置、およびネットワークデータベースを表しても良く、そして各ブロックは、示されているものと異なる構成で提供することができる。例えば、サーバシステム102は、ネットワーク130を介して他のサーバシステムと通信可能な複数のサーバ・システムを表すことができる。他の例では、ソーシャルネットワークデータベース106および/または他の記憶装置は、サーバ装置104から分離され、ネットワーク130を介して、サーバ装置104及び他のサーバシステムと通信可能な１または複数のサーバシステムブロックとして提供することができる。
また、任意の数のクライアント・デバイスが存在してもよい。各クライアント デバイスは、コンピュータシステム、携帯機器、携帯電話、スマートフォン、タブレットコンピュータ、テレビ、テレビセットトップボックス、または娯楽デバイス、パーソナルデジタルアシスタント（PDA）、メディアプレーヤ、ゲーム装置などの任意の種類の電子機器とすることができる。他の実施態様では、ネットワーク環境100は、示されたコンポーネントのすべてを持っていないこともあり、および/または、または本明細書に記載したものに代えて、又はそれに加えて他の種類の要素を含む他の要素を含んでもよい。
【００２２】
種々の実施態様において、ユーザーU1、U2、U3、及びU4は、互いに、それぞれのクライアントデバイス120、122、124及び126を用いて通信することができ、そしていくつかの実施態様では、各ユーザーは、ネットワークシステム100によって実施されるソーシャルネットワークサービスを介してメッセージおよび通知を受領することができる。ある例では、ユーザーU1、U2、U3およびU4は、ソーシャルネットワークサービスを介して互いに相互交流（interact）することができ、その場合、各々のクライアントデバイス120、122、124、及び126は、システム102のような1以上のサーバシステムに通信およびデータを送信し、そして、サーバシステム102は、クライアントデバイスに適切なデータを提供するので、各クライアントデバイスは、サーバシステム102を介してソーシャルネットワークサービスにアップロードされた共有コンテンツを受領することができる。
【００２３】
ソーシャルネットワークサービスは、ユーザーに種々の通信を実行し、リンクや関連（associations）を形成し、共有コンテンツをアップロードし及び投稿する、及び/又は、その他の社会的に関連する機能を実行させる任意のシステムを含むことができる。例えば、ソーシャルネットワークサービスは、ユーザーに以下のこと可能にする：
ユーザーが特定のまたは複数の他のユーザーにメッセージを送信し、ソーシャルネットワークシステム内の他のユーザーとの間で関連の形でリンクを形成し、ユーザーリスト、友人リスト、またはその他のグループの内の他のユーザーをグループ化する、テキスト、画像（例えば、写真などの）、ビデオシーケンス、オーディオシーケンス又は録音、またはソーシャルネットワークサービスの指定された組のユーザーによりアクセスされる他の種類のコンテンツを送信する。
ソーシャルネットワークサービスの他のユーザーにマルチメディア情報及び他の情報を送信する、サービスの他のユーザーとのライブビデオ、オーディオ、および/またはテキストチャットに参加すること等である。
ユーザーは、画像や他の種類のコンテンツを含む投稿されたコンテンツの1以上のアルバムを編成することができる。
ユーザーは、指定されたユーザーグループ内のユーザーが、ソーシャルネットワーキングサービス上のユーザーに関連付けられたコンテンツおよび他の情報にアクセスまたはそれらを受領できるようにするために、1以上のユーザーグループを指定することができる。本明細書で使用される「ソーシャルネットワーキングサービス」の用語は、ユーザー間の相互交流を容易にするソフトウェアおよび/またはハードウェアシステムを含むことができ、ネットワークシステム上で実施されるサービスを含むことができる。いくつかの実施態様では、「ユーザー」は、1以上のプログラムまたは仮想エンティティ（virtual entities）、ならびにシステムまたはネットワークとインターフェイス接続する人々を含むことができる。
【００２４】
コンテンツと通信の表示、プライバシー設定、通知、および本明細書に記載の他の特徴を含み、ソーシャルネットワーキングインターフェイスは、サーバシステムと通信するアプリケーションソフトウェアまたはクライアントソフトウェアのようなクライアントデバイス上のソフトウェアを使用して表示することができる。インターフェイスは、表示画面のようなクライアントデバイスの出力装置上に表示することができる。例えば、いくつかの実施態様では、インターフェイスは、ハイパーテキストマークアップ言語（HTML）、JavaTM、JavaScript、拡張マークアップ言語（XML）、拡張スタイルシート言語変換（XSLT）、および/またはその他の形式で提供されるウェブページのような、ウェブブラウザまたは他のアプリケーションにおけるような、特定の標準化されたフォーマットを用いて表示することができる。
【００２５】
他の実施態様では、前述のソーシャルネットワーキングシステムやサービスに代えて他の形のデバイス、システム、サービスを使用することができる。例えば、任意の種類のコンピュータネットワークにアクセスするユーザーは、本明細書に記載の特徴を利用することができる。いくつかの実施態様では、コンピュータネットワークから切断され、および/または断続的に接続される1以上のコンピュータシステムまた電子デバイスのようなシステムにおいて、本明細書に記載の特徴を実施することができる。
【００２６】
図2Aは、本明細書に記載のいくつかの実施態様に応じて、方向の修正をするために回転させることができる画像を表示する簡略化されたグラフィカルインターフェイス（GUI）200の例の概略図である。GUI200は、例えば、図１のクライアントデバイス120、122、124、および/または126、またはいくつかの実施態様におけるサーバシステム102の表示装置上に表示することができる。ある例では、ユーザーは、ソーシャルネットワーキングサービス、またはソーシャルネットワーキングサービスで作動するアプリケーションのための
インターフェイス200上で画像を見ることができる。他の実施態様では、アプリケーションプログラム、オペレーティングシステム、またはスタンドアロンのコンピュータシステム、携帯装置、又は他の電子機器のような他のサービスやシステムを用いて画像を表示することができる。
【００２７】
現在の例では、前記システムは、インターフェイス200の表示領域206内に画像204を表示する。画像204は、サーバデータベース106、クライアントデバイスのローカルストレージなどの様なインターフェイスおよび/またはソーシャルネットワークサービスにアクセス可能な1以上の記憶装置に記憶させることができる。ある例では、ユーザーは、ソーシャルネットワーキングサービスに画像204をアップロードしていてもよい。図2Aの例では、画像204は、カメラで撮影され、ユーザーDan V.のアルバムに、保存されたデジタル写真のような、デジタル画像である。アルバムなどのコレクション内の、または他のコレクションと記憶装置の間に広がる種々の画像は、全て本明細書に記載の１以上の特徴によって処理することができる。
【００２８】
図2Bでは、画像204は、本明細書に記載の特徴を使用して、前記システム（種々な実施態様において、ソーシャルネットワーキングサービス、１以上のサーバシステム、および/または1以上のクライアント・デバイスであっても良い）によって分析された。このような特徴は、画像に描かれた識別されたコンテンツを決定するために画像204を調査することを含むことができる。本明細書で言う「識別されたコンテンツ」は、物体、人物、風景の特徴、ランドマーク、または他のコンテンツのような、認識された描かれた特徴を含む。様々な技術が、顔認識、物体認識、などのようなその様なコンテンツを識別するために用いることができる。図2Bの例では人物の顔が認識されていた。
【００２９】
画像に描かれたコンテンツの識別により、回転を修正してより良い結果を得るために、システムに対して、識別されたコンテンツの種類に関連した技術の適用を可能にする。例えば、顔が画像204において認識されており、システムは人の顔に基づいて画像の方向を決定するための技術を使用することができる。ある例では、システムは、画像204内の各認識された顔または認識された顔のサブセットの両目の間にベクトル（図2Ｂの破線として表される）を描くことができる。例えば、ライン208、210、212、及び214を、画像204内のそれぞれの顔の目の間に引くことができる。
【００３０】
図2Cに示すように、個々のフェイスライン208、210、212及び214に基づいて得られる軸220を決定することができる。得られる軸は、様々な技術のいずれかを用いて決定することができ、その内のいくつかについて、以下でより詳細に説明する。いくつかの例では、得られる軸は、平均（average）、中央値(median)、平均値(mean)、モード(mode)、線形回帰、または画像中のフェイスラインを分析した他の結果のような、個々のフェイスラインを解析した結果であり得る。図2Cの例では、得られる軸220は、様々なフェイスライン208、210、212、及び214の中央値として決定されている。例えば、フェイスライン210および214は、画像204の最上部エッジおよび底部（水平）エッジ222に基づいて決定される水平軸の様な基準軸に対して反時計方向に回転させる。フェイスライン210は、最も反時計回りに回転させる。フェイスライン208および212は、基準軸に対して時計方向に回転させ、そしてはフェイスライン212が最も時計回りに回転している。中央値は、分布の中央のラインであり、この例ではライン208または線214のいずれかである。他の考慮事項や画像の特性は、得られる軸の選択に影響を与え得る。例えば、もし中央値が２つ存在する場合、それらは、得られる軸を求めるために平均化することができる。
この図2Cの例では、フェイスライン208は2つの中央値の一つであり、ライン208は基準軸に近いラインなので、得られる軸220として選択される。得られる軸220は、画像204に描かれた画像コンテンツの現在の方向を示すために用いられる。
【００３１】
図2Dにおいて、このシステムにより、画像のコンテンツを基準軸と一致する、又はそれに近い所望の方向に向ける画像204の回転量を決定した。この例では、所望の方向は得られる軸220が水平方向に向けられるものである。
所望の方向付けを達成するために、画像204は、図２Dに示す、量Xだけ回転される必要があり、それは、得られる軸220と、像204の水平エッジ222に平行な水平基準軸224との間の角度である。
【００３２】
図2Eでは、画像204は、図２Dにおいて決定された量だけ回転されるので、得られる軸220は水平とされ、したがって、例えば、得られる軸220は、図２Dの基準軸224と同一の回転位置に位置するようになる。この回転により、水平方向に、より近づく画像コンテンツ（例えば、画像204において認識された顔のような）を提示する回転が修正された画像204を得る。回転した後、いくつかの実施態様では、画像のエッジがその新しい方向において水平及び垂直方向になるように、画像204をトリミングすることができる。トリミング後の画像204の一例を図2Fに示す。 
【００３３】
図3Aは、本明細書に記載のいくつかの実施態様に応じて、方向を修正するために回転することができる、異なる画像を表示する単純化されたグラフィカルインターフェイス（GUI）300の他の例の概略図である。いくつかの実施態様では、図示のように、GUI300は、上述の図2A〜2F で示すGUI200と同様なものとすることができる。
【００３４】
この例では、システムは、インターフェイス300の表示領域306内に画像304を表示する。例えば、画像は、上述と同様にシステムに保存されたデジタル画像であってもよい。図3Bでは、画像304は、本明細書に記載の特徴を用いて分析された。上述したように、このような特徴は、画像に描かれた識別されたコンテンツを決定するために、画像304を調査することを含むことができる。図3Bの例では、風景の特徴が認識されている。例えば、いくつかの実施態様では、画像認識技術は、様々な特異性の程度で識別されたコンテンツを記述する識別要素を提供することができる。ある例では、識別要素は、画像に描かれているような小径や道路や草を記述する。
【００３５】
画像中のコンテンツの識別要素に応答して、一以上の技術を、より正確に画像の方向を決定するために選択することができる。
例えば、もし描かれた画像コンテンツが風景、屋外環境、および/または関連する特徴として識別された場合、特定の技術を用いることができる。この例では、システムは、1以上の有力なライン又はエッジを決定するために、画像304の画素を調査するための技術を用いた。以下に記述するように、画像中にその様な有力なライン又はエッジを見つけるために、1以上の周知の技術を用いるとができる。図3Bの例では、システムは、画像304内に複数の有力ライン308を見だした。これらは、長さおよび/または視認性などの、最も顕著である画像304中の、ラインまたはエッジである。他の実施態様では、1つの最も有力なラインを決定することができる。
【００３６】
図3Cに示すように、得られる軸312が、図3Ｂに示すように決定された有力ライン308に基づいて決定された。いくつかの実施態様では、得られる軸312は、有力ライン308を組み合わせることによって決定することができ、例えば、有力ライン308の、または以下で説明する他の例での、平均化技術、線形進行、中央値、モードを使用することができる。図3Cの例では、得られる軸312は有力ライン308の平均として決定することができる。他の実施態様では、もし単一の有力ライン308を見つけることができた場合は、そのラインは得られる軸として使用することができる。得られる軸312は、画像304に描かれた画像コンテンツの現在の方向を示すものとして使用される。
【００３７】
図3Dにおいては、このシステムは、画像304を所望の方向に向け、又は所望の方向に近い方向に向けるであろう、画像304の回転量を決定することができる。この例では、所望の方向は得られる軸３１２を水平軸に一致させるようにする。
所望の方向に向けるために、画像304は、図3Dに示すように量Xだけ回転される必要がある。 この量は、得られる軸312と、画像304の水平（最上部および底部）エッジ310に平行な水平基準軸314の間の角度である。
【００３８】
図3Eでは、画像304は、図3Dにおいて決定された量だけ回転されるので、得られる軸312は水平とされる。したがって、例えば、得られる軸312は、図3Dの基準軸314同一の回転位置に位置する。この回転の結果、画像304は、画像304において風景水平方向に近いようになるよう回転が修正されたものとなる。回転された後、いくつかの実施態様では、画像304をトリミングされたものとすることができ、その結果画像のエッジが、その新しい方向において水平及び垂直方向となる。トリミング後の画像304の一例を図３Fに示す。
【００３９】
図4は、画像コンテンツに基づいて画像の方向を修正するために回転を用いる方法400の一例を示すフロー図である。方法400は、いくつかの実施態様では、例えば、図１に示すシステムの様な1以上のクライアントデバイス及び/又はサーバシステムの様なコンピュータシステム上で実施することができる。記述される実施例では、このシステムは、1以上のプロセッサまたは処理回路、及びデータベース106の様な1以上の記憶装置、および/または他の記憶装置を含む。いくつかの実施態様では、装置の異なるコンポーネント又は異なる装置は、方法400の異なるブロックまたは方法400の他の部分を実行することができる。方法400は、プログラム命令又はコードにより実行することができ、プログラム命令又はコードはマイクロプロセッサまたは他の処理回路のような1以上のプロセッサによって実行することができ、それらは、コンピュータ読み取り可能な媒体に記憶させることができるが、コンピュータ読み取り可能な媒体としては、半導体または固体メモリ、磁気テープ、取り外し可能なコンピュータディスケット、ランダムアクセスメモリ（RAM）、読み出し専用メモリ（ROM）、フラッシュメモリ、リジッド磁気ディスク、光ディスク、ソリッドステートメモリドライブなどを含む磁気、光学、電磁、または半導体記憶媒体がある。代替的にこれらの方法は、ハードウェア（論理ゲート等）またはハードウェアとソフトウェアの組合せで実施することができる。この方法400は、クライアントデバイス上で実行されるアプリケーションの一部または構成要素として、または他のアプリケーションまたはオペレーティングシステムと共同して実行される別のアプリケーションまたはソフトウェアとして実行することができる。
【００４０】
方法400のブロック402においては、被写体画像中のコンテンツの1以上の識別要素が前記方法によって得られる。本明細書で用いられたコンテンツの「識別要素」、または「識別されたコンテンツ」は、画像に描かれたコンテンツから識別された（例えば、認識された）画像中に描かれた物体、人、風景の特徴、ランドマーク、または他の要素の様な特徴を含むことができる。
種々の技術が、そのようなコンテンツを特定するために使用することができ、例えば、人の顔が描かれていることを識別するため、および/またはある特定の個人であること識別するための顔認識などである。例えば、ソーシャルネットワーキングサービスでは、認識された顔はサービスを利用するユーザーの顔と比較され、画像に描かれた何れの人が、またサービスの利用者であるかを特定することができる。物体と顔認識技術は、顔、風景、または他の種類のコンテンツのような、コンテンツの種類を識別するために使用することができる。例えば、認識技術は、描かれた物体の分類、タイプおよび/またはモデルを提供することができる。いくつかの画像は、画像に描かれたコンテンツを記述するタグのような識別要素または識別標識に関連付けることができ、そしてこれらのタグは、描かれたコンテンツの識別要素として得ることができる。種々の実施態様において、識別要素は、方法400によって決定され得るか、または異なるプロセスまたはシステムによって決定される1以上のコンテンツ識別要素を受領することによって得ることができる。
【００４１】
ブロック404において、この方法は、画像コンテンツの識別要素に基づいて、画像内のコンテンツの現在の方向を決定する。いくつかの実施態様では、ブロック402において識別されたコンテンツの現在の方向を決定することができ、このコンテンツの方向はすべての画像コンテンツ（識別され及び識別されていない）に適用することができる。いくつかの実施態様では、識別されたコンテンツは、認識技術から認識されたコンテンツであり、および/または識別されたコンテンツは、さまざまな異なるタイプのものであっても良い。コンテンツの識別要素は、画像の方向がどのように決定されるかに影響する。
例えば、異なる技術は、識別されたコンテンツのある特別の識別要素に基づいて使用することができ、および/または異なる技術により得られる結果は、識別されたコンテンツに基づいて加重値を与えることができる。種々の実施態様において、画像に描かれたコンテンツの、複数回の発生および/またはコンテンツの種類を考慮した、画像について得られる方向軸を求めることができる。ブロック404の別の実施態様については、図５を参照して以下に説明する。
【００４２】
ブロック406において、この方法は、ブロック404で決定された現在の方向を修正する画像の回転量を決定する。例えば、その回転の量は、画像コンテンツを、現在の方向よりも所定の基準方向により近い方向となるよう一致させ又は位置合せさせるように画像を方向付けることができる。いくつかの実施態様では、回転量は、所定の基準方向からの現在の画像の方向のずれの量であっても良い。所定の基準方向は、例えば、現在の方向での画像のエッジまたは境界線によって示されるような、水平および/または垂直軸に基づくものであっても良い。いくつかの実施態様では、基準方向は図2または3に示すように、インターフェイス200または300のような画像が表示される視認エリアの１以上の軸に基づくことができる。 
【００４３】
ブロック408においては、画像はブロック406において決定される量だけ回転される。例えば、画像データは回転され、そして画像は新しい回転位置で保存される。いくつかの実施態様では、回転された方向で画像をトリミングすることができる。画像が表示される場合、その後画像は回転された方向で表示させることができる。
【００４４】
図5は、画像コンテンツに基づいて画像の方向を修正するために、回転を用いる方法400の実施態様を示す例示的な方法500のフロー図である。方法500は、図4の方法400について上で述べたと同様な、1以上のシステム上で実行することができる。
【００４５】
いくつかの実施態様では、この方法500は、ユーザーが開始することができ、例えば、ユーザーは1以上の画像を提供する又は１以上の画像にアクセスする。ユーザーは、例えば、ソーシャルネットワーキングインターフェイスまたは他のグラフィカルインターフェイスの様なインターフェイスから方法500の開始を選択してもよい。いくつかの実施態様では、方法500はシステムによって自動的に開始することができ、その場合、前記方法は、特定の記憶されたコレクションの中の画像を定期的に走査することにより、新たにアップロードされたまたはシステムによりアクセス可能な１以上の画像のような特別な事象に基づいて、または、１以上のユーザーの顧客の好みによる条件に基づいて実行される。
【００４６】
ブロック502において、この方法は、その画像の現在の方向を調べる為に画像を取得し、もし適切な場合には、その回転を修正する。得られる画像は、例えば、複数の画素からなるデジタル画像と、そして、実行するシステムの１以上の記憶装置、または前記方法にアクセス可能な他の方法で記憶させることができる。いくつかの実施態様では、画像は、図2Ａまたは図3Aの例のように、ソーシャルネットワーキングシステムのユーザーのアカウントに設けられたアルバムのように、システムの特定のユーザーに関連付けられたアルバムまたは他のコレクションに含めることができる。
【００４７】
ブロック504において、この方法は、必要に応じて画像の方向を修正する指示を取得する。いくつかの実施態様では、画像は表示装置上でユーザーに表示され、ユーザーは、コマンドまたは他の指示を入力して、ユーザーが望んでいる画像の修正方向を示すことができる。いくつかの実施態様では、インターフェイスにおいて、ユーザーが手動で画像を回転させることができる「回転モード」に入力を可能にする様に、ユーザーにコマンドの入力を可能にする。この手動の回転は、本明細書に記載の方向の修正の特徴を用いて支援され得る。他の実施態様では、この方法は、そのように明示的な指示を得ることなく、画像の方向を修正する。
【００４８】
ブロック506において、この方法は、画像に描かれたコンテンツの1以上の識別標識を得る。方法400のブロック402に関して上述したように、識別標識は、そのような認識された特徴、物、または人のような、識別されたコンテンツのあるタイプおよび/または他の記述を示している。いくつかの実施態様の例では、識別標識は、描かれたコンテンツを示す記述子であることができる。例えば、いくつかの記述子は、「人」「風景」又は「山」のような、一般的なまたは広範囲なものを含むものであっても良く、一方、他の記述子は「Bob G.」、「エッフェル塔」、および「Tahoe湖」などのより特異的なものでもよい。
いくつかの記述子は、画像で認識される特定のブランド、または製品またはサービスのモデルに関する特異的なものであってもよい。物体を認識する場合のいくつかの実施態様では、複数の記述子を、各特徴または物体について提供することができ、その様な各記述子は、認識と信頼性と相関する異なる特異性を有する。例えば、認識された特徴の一つの記述子は、高い信頼性を有する「構築物」であり得るが、一方、同じ特徴を示す、別のより特異的な記述子は「エンパイア・ステート・ビルディング」であり得るが、これは信頼性が低い。
【００４９】
様々な技術がコンテンツの識別標識を取得するために使用することができる。いくつかの実施態様では、コンテンツを識別するために1以上の物体認識技術を使用することができる。例えば、顔認識技術は、画像内の顔を認識するために使用することができる。いくつかの実施態様では、顔が描かれていることを識別することができ、かつそれらの顔の人物の名前や身元を特定する必要はない。追加的または代替的に、いくつかの実施態様では、描かれた人物を、標準名、ソーシャルネットワーキングシステム上のユーザー名、および/または他の識別要素などによって特定することができる。いくつかの実施態様では、商品、アイテム、車両などの物体を識別するために物体認識技術を用いることができる。いくつかの実施態様では、山、樹木、草、湖、川などの地形の特徴を識別するために認識技術を用いることができる。いくつかの実施態様では、その様な顔及び物体認識技術は、描かれた特徴がいかに認識されるかに影響を与える、ユーザーの事前の選択および判断を使用することができる。これは、顔及び物品認識技術の精度を向上させることができるという技術的効果を有する。
いくつかの実施態様では、描かれたコンテンツの識別標識を、認識を実行する1以上の他のプロセスから、方法500に提供することができ、および/または方法500は、ブロック506において、全体的にまたは部分的に特徴認識を行うことができる。
【００５０】
ブロック508において、ブロック506で得られた1以上の識別標識に基づいて、この方法は、画像に対して1以上の分析技術を用いて、画像に描かれたコンテンツの現在の方向を決定する。コンテンツを記述する識別標識は、方法500が、コンテンツの現在の方向を決定するための画像を分析する方法に影響を与えることができる。いくつかの実施態様では、識別標識は、画像コンテンツの方向を分析するために使用可能な複数の利用可能な分析技術のどれを使用するかに影響を与えることができる。いくつかの実施態様では、画像コンテンツの方向を決定する異なる分析技術の結果をいかに比較考量するかを決定するための識別標識を使用することができる。ブロック508のいくつかの実施態様については、図６に関し以下でより詳細に説明する。
【００５１】
ブロック510において、この方法は、所望の基準（またはよりそれに近い）方向に画像コンテンツを向けるために画像の回転量を決定する。所望の基準方向は、1以上の所定の軸と一致させることができる。所定の軸は、水平、垂直、または他の定義された方向であっても良い。例えば、もし画像が平行なエッジを持つ標準的な長方形の画像である場合、水平の基準軸は、画像の現在及び元の方向において、画像の最上部および底部エッジに略平行な軸として定義することができる。いくつかの実施態様では、画像は、画像のエッジ内に表示される境界線を有していてもよく、基準軸は、画像の元の方向での、そのような1以上の境界線と一致させることができる。他の実施態様において他の基準軸を定義することができる。例えば、基準方向は、ユーザーが画像を見る表示装置の表示領域での水平または垂直軸に基づいて定義することができる。
ある例では、基準軸は、図2および3の例において上述したように、インターフェイス200または300のようなユーザーインターフェイスで定義された水平軸とすることができる。 
【００５２】
画像回転量は、現在の方向と所望の基準方向の回転位置の差を調べることによって決定することができる。いくつかの実施態様では、得られる軸は画像の元の方向を示すブロック508で決定することができる。回転量は、得られる軸と基準軸との角度差であっても良い。そのような実施態様の例は、図2Cと3Cを参照して上に記述されている。 
【００５３】
ブロック512では、この方法はユーザーが画像を編集しているかどうかをチェックする。いくつかの実施態様または例では、ユーザーが、修正された方向または他の所望の回転位置に、手動で画像を回転したい場合がある。例えば、ユーザーは、グラフィカルインターフェイスで画像編集プログラムに表示された画像を見てもよく、または、プログラムの編集モードに入っている可能性もある。
他の実施態様または例では、ユーザーは、画像を編集しないこともある。例えば、このシステムは、記憶装置に記憶された画像の集合から画像を選択していてもよいし、画像を表示せずに、及びユーザーが画像を編集したいと望むことなく、方法500を使用して画像の方向を補正することができる。
【００５４】
もしユーザーが画像を編集していない場合は、この方法は、ブロック514においてブロック510で決定された量で画像を回転させる。この方法はその回転した方向で画像データを保存することができる。いくつかの実施態様では、この方法は、古い画像上に、回転した方向で画像を記憶させ、または他の実施態様では、回転された画像は、元の画像を保存する別のコピーとして保存される。
いくつかの実施態様では、画像のエッジが回転した方向においてほぼ水平と垂直となるように回転した画像をトリミングすることもできる。トリミングされた画像の例について、図を2Fと3Fを参照して上に記述している。画像が表示されている実施態様では、画像表示は新たな回転位置が決定された後に回転した方向に変更することができる。他の実施態様または例では、画像データは回転されて、保存され、そして表示は更新されない。
【００５５】
ユーザーが、ブロック512において画像を編集している場合は、この方法はユーザーに望ましい、可能性のある回転位置及びそれらの位置に必要な回転量を決定するブロック516へ移動する。いくつかの実施態様では、これは、所望の方向及びブロック510で決定された回転量を、ユーザーが画像を回転させることを望むであろう回転位置の一つとして用いることを含むことができる。いくつかの実施態様では、追加の可能性のある回転位置は、ブロック510および/またはブロック512において決定することができる。いくつかの例では、方法500は、適用された異なる技術から、多くの異なる可能性のある結果を生成することがあり、これらの結果のそれぞれは、表示画面に可能性のある回転位置を提供することができる。例えば、一つの所望の回転位置は、顔の方向判定技術を用いて決定される画像中の人物の顔の水平方向の位置であってもよく、他の所望の回転位置は、有力なライン技術（図6を参照して説明した）を用いて決定された同じ画像中の水平線のような風景の特徴の水平位置であっても良い。
これらの所望の回転位置の各々は、ユーザーのために画像の有望な回転位置として決定することができる。他の例において、ブロック508は、1以上の異なる技術および/またはこれらの技術で使用される1以上の異なるパラメータまたは条件に基づいて、画像内の異なる、得られる軸を見つけるために繰り返すことができる。この第2の得られる軸は、他の可能性のある回転位置を決定するために使用することができる。いくつかの実施態様では、ブロック512の多くの可能性のある回転位置が、機械学習の実施で用いられる識別器（classifier）から決定することができ、その例は、図７に関してより詳細に説明する。
【００５６】
この方法は、ブロック518において、ユーザーがディスプレイ上で画像を回転させることを望んでいることを示すユーザー入力が受領されたか否かについてチェックする。もしそうでない場合（ただし、システムの他の機能とプロセスは実行され続ける）、この方法はブロック518でユーザー入力をチェックし続ける。画像を回転させるためのユーザー入力が受領された場合、この方法は、ブロック520へ進み、回転位置として決定された可能性が最も高いものが、ユーザー入力に適しているとして選択される。たとえば、ユーザー入力が画像を時計回りに回転させることを示している場合には、その回転方向において、最も近いと決定された回転位置が選択される。
【００５７】
ブロック522において、この方法は、回転位置に画像データを回転させることを含み、選択された回転位置に関連した量で画像を回転させる。次のブロック524においては、この方法は、ユーザーのための表示画面上の画像の表示を選択された回転位置に回転させる。
いくつかの実施態様では、現在位置から選択された位置への画像の表示は、選択した位置への「スナップ」（snap）として表示することができ、例えば、画像の手動回転が、所定の位置の所定の範囲内に入ると、画像は所定の位置に素早く動く（snap）。いくつかの実施態様では、画像の周囲にブロック516で決定された可能性が高いすべての位置の指標を表示することができ、そしてユーザー入力に応じて回転位置へ画像の表示をスナップすることができる。
【００５８】
方法500のいくつかの実施態様では、画像が回転された（例えば、ブロック514またはブロック522-524において）後に、この方法は、回転方向がユーザーに受け入れられるかどうかについてユーザー入力を確認することができる。もしユーザー入力が、それが受け入れられないことを示している場合、方法500は新たに反復することができ、画像を現在の回転方向から回転させることができる。あるいは、この方法は、元の非回転画像を取得して、この方法の１以上の前の反復と異なる回転を決定するために、他の分析技術を使用することができる。
【００５９】
図6は、図5のブロック508の例示的な実施態様を提供する方法600を示すフロー図である。図5は、1以上の分析技術が画像に適用され、そして現在の方向が、描かれたコンテンツの1以上の取得された識別標識に基づいて、画像に描かれたコンテンツに対して決定される。
【００６０】
ブロック602において、この方法は、画像に描かれた識別されたコンテンツがいくつかの顔を含んでいるかをチェックする。例えば、画像は、顔認識技術によって調査することができ、画像内の顔の特徴を探すことによって描かれた顔があるかを決定する。いくつかの実施態様では、画像に示されているいずれかの人物の同一性は決定される必要はない。もしコンテンツが1以上の顔を含む場合、この方法は、適用する1以上の顔の方向判定技術を選択するためにブロック604に進む。いくつかの実施態様では、複数の異なる分析技術が、画像の方向を分析するために利用可能であり、この方法は、画像に描かれた１以上の顔に使用することが意図される、１以上のこれらの技術を選択する。いくつかの実施態様では、技術の選択は、画像中の顔のコンテンツに基づいて行われる。例えば、ある顔の方向判定技術は、単一の顔が描かれたものに対してよりも複数の顔を含む画像コンテンツの方向について決定するのにより適している、または画像において部分的にしか顔の特徴が見えないように回転された顔の方向を見つけることにより適している。いくつかの実施態様では、多数の技術を適用することができ、後述のようにそれらの技術で得られた結果は、異なる加重値を与えることができる。顔の方向判定技術は、画像で見出される顔の数、顔の大きさ、または他の特徴などの画像中のコンテンツの識別要素に基づいて選択することができる。
【００６１】
ブロック605において、選択された顔の方向判定技術は画像に描かれた顔の方向を決定するために適用される。これらの技術は様々な方法を使用することができる。例えば、図2Ｂの例に示すように、いくつかの実施態様では、ある技術は、画像に描かれた各顔の両目の間にベクトルを引くことができる。
ベクトルは、関連する顔の方向を示している。ある一つの顔における両目は、顔認識技術を用いて容易に検出可能であり、ベクトルは、それぞれの目の中心を通って引くことができる。画像内の複数の顔は同様に検出することができ、各顔の両目の間の顔方向ベクトルは、それぞれの顔の方向を決定する（例えば、水平軸の様な所定の軸に関して）。
【００６２】
ブロック606において、この方法は、描かれた顔の決定された方向に基づいて、各適用された顔の方向判定技術による画像の得られる方向軸を見つける。得られる軸は、画像の描かれたコンテンツの現在の方向を示している。
それぞれ適用される技術は、決定される得られる方向軸を提供することができる。例えば、いくつかの実施態様では、目の結合ベクトルを含む、上記の顔の方向判定技術を用いる場合、ブロック604の選択された技術により、画像内の一つの顔のみが使用される（例えば、画像中に使用に適した1つの顔がある）場合、得られる軸は、その顔の目の結合ベクトルに対応する。もし画像中の複数の顔にこの技術が用いられる場合、得られる軸は、複数の顔について決定される複数のベクトルに基づいて決定することができる。いくつかの実施態様では、描かれた顔から得られる目の結合ベクトルは、得られる軸を決定するための1以上の方法で組み合わせることができる。ある例では、目の結合ベクトルは、得られる軸を決定するために平均化することができる。いくつかの例では、目の結合ベクトルの中央値またはモードは、得られる軸として使用することができ、その中央値はそのベクトル分布の中央のベクトルであり、モードはベクトルの分布において最も一般的に生ずるベクトルである。他の例において、線形回帰は、すべての顔の方向ベクトルを用いて実行され、得られたベクトルは、得られる方向軸である。他の技術はまた、ブロック604で決定される顔の方向ベクトルを考慮に入れた、得られる軸を見つけるために用いることができる。画像について得られる軸が決定された後に、この方法は以下に詳述するブロック608に進む。
【００６３】
ブロック602において、コンテンツが顔を描いていないと判明した場合、または得られる方向軸がブロック606で見いだされた後に、この方法はブロック608において、画像に描かれた識別されたコンテンツが顔のものでない特徴を含むかをチェックする。いくつかの実施態様では、このような顔の特徴でないものは、平らな水平線、山、湖、草、丘、空、雲、および/または他の特徴を含む、自然環境や風景シーンの特徴を含むことができる。いくつかの実施態様では、道路、建物、看板、橋、フェンス、または他の特徴などの、都市、町、または人工構造物または物体の様な顔の特徴でないものを含んでも良い。
他の物体もまた、顔の特徴でないものとして含まれ得る。描かれたコンテンツが、その様な１以上の顔の特徴でないタイプの特徴を含む場合、この方法はブロック610に進む。
【００６４】
ブロック610において、この方法は、画像に描かれたコンテンツの識別要素に基づいて使用する1以上のエッジ検出技術を選択する。いくつかの実施態様では、選択された特定のエッジ技術は、特定の技術を特定のタイプの描かれたコンテンツと所定の関連付けをしたことに基づくものであっても良い。
例えば、もしコンテンツが、山や湖などの自然や自然環境のものである場合、あるいくつかの技術は、有力なエッジの検出に優れていることが知られていることもあり、一方、他の技術は、建物、道路、壁、フェンス、または他の人工構造物や物体（ソーダ缶、家具等）のようなより真っ直ぐなまたは人工的なエッジを含むコンテンツの有力なエッジを検出するに優れていることが知られていることもある。いくつかの実施態様では、あるエッジ検出技術は、画像内のエッジを検出するために使用されるハフ変換法であることもあり、他のエッジ検出技術は、フーリエ解析及び変換技術であることもある。ここでハフ変換法は、例えば、自然の特徴よりも建物を描いたコンテンツのエッジをより良く検出することができる。ある例では、建物のタイプのコンテンツが画像に描かれている場合、フーリエ解析技術が選択され、ハフ変換法は選択されないであろう。いくつかの実施態様では、複数またはすべての利用可能なエッジ検出技術を選択することができ、そして以下に説明するように、それらの結果は、描かれたコンテンツに基づいて得られる方向の決定において、異なる加重値が与えられる。他のエッジ検出技術も使用することもできる。
【００６５】
ブロック612において、この方法は、それぞれ適用される技術において、画像中の１以上の有力なエッジを見つけるために、各選択されたエッジ検出技術を適用する。上記したように、このようなハフ変換法、フーリエ変換法、および/または他の種類の技術の様なエッジ検出技術は、有力なエッジを見つけるために使用することができる。他の例では、勾配または勾配の大きさのヒストグラムを用いる技術は、画像中の有力なエッジを検出するために用いることができる。いくつかの例では、有力なエッジは、画像内の最長の長さおよび/または可視性を持つ描写された特徴に対するエッジである。いくつかの実施態様では、エッジ検出技術は、例えば、画像の最上部および底部エッジによって規定された、水平方向の所定範囲内のエッジのような、ほぼ水平の有力なエッジを見つけるように指示することができる。他の実施態様では、有力なエッジを他の方向（例えば、垂直）または任意の方向で見つけることができる。
【００６６】
ブロック614では、この方法は、見つかった有力なエッジに基づいて、ブロック612で適用されたエッジ検出技術について得られる方向軸を見つける。
いくつかの実施態様では、例えば、特定の技術は、複数の有力なエッジを見つけることができる。複数の有力なエッジから唯一の得られる軸を決定することができる。画像の得られる軸を見つけるために、例えば、複数の有力なエッジを平均化し、または中央値、モード、または線形数列（linear progresssion）を決定することができる。得られる軸は、ブロック612で適用された各エッジ検出技術に求められる。
【００６７】
エッジ検出技術が614で適用される後、またはブロック608において決定されるように、顔の特徴でないものが画像に描かれていない場合、ブロック616が実行される。ブロック616では、この方法は、画像に描かれたコンテンツの識別内容（そのような識別標識または記述子などの様な）に基づいて、各適用される技術によって決定された、得られる各方向軸について加重値を決定することができる。適用されたすべての顔の方向判定技術ならびに適用されたエッジ検出技術を含み、適用された技術はすべて、このブロックにおいて考慮される。
例えば、いくつかの技術は、特定のタイプのコンテンツための所望のエッジを見つけるのに優れていることが知られていることがある。描かれたコンテンツがそれらのタイプと一致する場合、そのような技術から得られる結果は加重値を増すことができ、一方、描写されたタイプのコンテンツに対して同様程度には良く作動しないと知られている技術から得られる結果については加重値を低減させることができる。上記のようないくつかの例では、複数のエッジ検出技術を画像に適用することができ、それぞれの技術は得られる方向軸を提供し、いくつかの技術は自然の特徴よりも人工的特徴を分析するのにより適していることがある。他の実施態様の例では、顔の方向判定結果はエッジ検出技術の結果よりも大きい加重値を与えても良いし、またその逆もある。ある例では、ある画像は、顔や風景の特徴、ならびに他の特徴を含み、複数のタイプのコンテンツを描写することができ、そして、エッジ検出と顔の方向判定技術の両方の技術が適用されてもよい。これらの技術による結果は、上記のように、画像に描かれた識別されたコンテンツに基づいて加重値を与えることができる。
【００６８】
ブロック618において、本方法は、ブロック616において決定された（そのような加重値の結果が決定された場合）加重値の結果を組み合わせて画像コンテンツの現在の方向を求める。いくつかの実施態様では、例えば、それぞれ適用された技術の結果により得られる方向軸は、画像の方向を示す最終的に得られる軸の決定に含めることができる。例えば、平均、線形数列、または他の方法は、異なる適用された技術の複数の得られる方向軸から最終的な方向を決定するために用いることができる。各得られる軸の加重値はその決定に含まれる。例えば、エッジ検出結果が、顔の方向判定結果よりもはるかに低い加重値を与えられる場合、得られる顔の軸は、エッジ検出軸よりも最終的な方向決定により近いものとなる。図５を参照して上述したように、最終的に得られる方向軸は、画像の回転修正量を決定するために使用される。
【００６９】
図7は、図５のブロック508の他の例示的な実施態様を提供する方法700を示すフロー図であり、そこでは１以上の分析技術が画像で使用され、そして描かれたコンテンツの1以上の得られた識別要素に基づいて、現在の方向が画像に描かれた識別されたコンテンツについて決定される。方法700は、画像を評価し、特定の画像の方向を決定するために、機械学習、管理された（supervised）学習技術を使用する。
【００７０】
方法700は、被写体像が方法400または方法500において、その方向が修正される前に、実施することができる前処理ブロック702を含んでも良い。
ブロック702は、方法400又は500を実行するシステムとは異なるシステム上でまたは同じシステム上で実行することができる。ブロック702において、異なる識別器は、各々画像の異なる関連する回転位置について学習している。いくつかの実施態様では、各識別器は、画像の特定の回転位置について学習されているプロセスであるので、その識別器は、識別器に入力される新しい画像が、その様に学習された回転位置を有するコンテンツを持つ場合を認識することができる。識別器は、例えば、既知の正しい方向から特定の量の回転角度の様に、特定の回転位置まで回転されていることが知られている画像で、学習することができる。各受領された、学習された画像について、識別器は学習された画像中のコンテンツの得られる軸及び方向を決定するために、図６に関して上述したと同様のコンテンツの識別および分析技術を使用することができる。例えば、1以上のエッジ検出と顔検出技術を適用することができる。いくつかのこのような学習された画像は、もし、ある画像がその識別器の関連する回転位置にコンテンツを持っている場合、識別器が予想する結果の一般的なプロファイルを提供するために、識別器に供給することができる。例えば、いくつかの実施態様では、識別器を学習させるために数百または数千の学習画像を使用することができる。
【００７１】
いくつかのこのような識別器は、画像の可能な位置での範囲において異なる回転位置について学習することができる。例えば、いくつかの実施態様例において、識別器は、画像の回転の360度の全範囲の各角度、0.5度、または1/4の角度について学習することができる。したがって、ある例では、ある識別器は、既知の正しい方向から5度回転された画像で学習することができ、他の識別器は4度回転された画像で学習することができる。そして、一組の識別器は異なる回転位置を検出するように学習させる。
【００７２】
いくつかの実施態様では、図５のブロック508に示すと同様に、ブロック704から708は、得られた画像がその方向を決定するために処理されている間の実行時間に実行することができる。ブロック704において、画像は、各識別器に提供される。例えば、識別器が、360度の全範囲において、回転位置の各角度に設けられている場合、その画像は、360の識別器に入力することができる。ブロック706において、この方法は、画像コンテンツが、その識別器によって検出された回転位置を有する可能性について、各々の識別器の指標出力を受け取る。いくつかの実施態様では、この指標は、負または正の指標であり得る。
ある例では、水平基準位置から5度の時計回りの回転を有する画像が、一組の識別器に入力される。時計回りにそれぞれ3および4度の回転を検出した識別器は、画像コンテンツが3または4度回転されていないことを示す負の出力を示す。5度の回転を検出した識別器は、コンテンツ中の特徴及び画像の回転と一致する得られる軸は、学習させたものであることを見い出し、画像コンテンツは5度回転している可能性が高いことを明確に示すことができる。いくつかの実施態様では、各識別器は、画像が関連する回転位置まで回転されている可能性を示すために、連続した範囲内で信頼水準または信頼値を提供することができる。
【００７３】
ブロック708において、この方法は、識別器の出力に基づいて画像の現在の方向を決定する。いくつかの実施態様では、これは肯定的な結果を提供する単一の識別器を選択し、関連した回転位置を画像の現在の方向として指定することを含むことができる。
いくつかの実施態様では、複数の識別器は確実な結果を提供し、または1以上の識別器は、その画像が、確実であると考えられる程度の回転位置、例えば、所定の閾値を超えている可能性がある、にある可能性が十分に高いことを示すこともあったと思われる。いくつかの実施態様では、この方法は、複数の確実な結果から、現在の方向を決定するために更なる処理を行うことができる。ある例では、例えば、関連する識別器が互いに閾値の回転位置の範囲内である場合、複数の確かな結果を平均化することができる。他の例では、この方法は、画像を独自の分析を行うことによって、識別器の結果の1つ（またはサブセット）を選択することが、画像の現在の方向を決定することを導きだすものとすることができる。次に、決定された現在の方向は、図５に示すように回転修正方法の残りのブロックにおいて使用される。
【００７４】
いくつかの実施態様では、画像が、決定された回転位置にスナップすることが可能であり、および/または決定された回転位置が、ユーザーに対して表示することができる図５のブロック524において、スナップされまたは表示されるための回転位置は、上述の識別器から得ることができる。例えば、複数の識別器が、確かな結果またはそれに関連する回転位置である高い可能性を示す場合、画像は、ユーザーの回転入力に応じて、これらの識別器の関連する回転位置のそれぞれにスナップすることができる。
【００７５】
なお、図4-7の方法に記載のブロックは、適切な場合は、示された順序と異なる順序でおよび/または他のブロックと同時に（部分的または完全に）行うことができる。いくつかの実施態様では、これらブロックは、この方法において、複数回、異なる順序で及び/または異なる時間に起きる可能性がある。
いくつかの実施態様では、これらの方法のうちの1以上が、図１に示すように、例えば、サーバシステム102の様なサーバ上で実施することができる。いくつかの実施態様では1以上のクライアントデバイスは、それらのブロックを実行するサーバシステムに代わり、又はそれに加えて、1以上のブロックを実行することができる。
【００７６】
図8は、本明細書に記載のいくつかの実施態様を実施するために使用され得る例示的な装置800のブロック図である。ある例では、装置800は、図１のサーバ装置104を実施するために使用することができ、本明細書に記載の適切な方法を実行することができる。サーバ装置800は、任意の適切なコンピュータシステム、サーバ、または他の電子またはハードウェア装置とすることができる。例えば、サーバ装置800は、メインフレームコンピュータ、デスクトップコンピュータ、ワークステーション、ポータブルコンピュータ、又は電子機器（携帯機器、携帯電話、スマートフォン、タブレットコンピュータ、テレビ、ＴＶセットトップボックス、パーソナルデジタルアシスタント（PDA） 、メディアプレーヤ、ゲーム機など）とすることができる。いくつかの実施態様では、サーバ装置800は、プロセッサ802、メモリ804、および入力/出力（I/ O）インターフェイス806を含む。
【００７７】
プロセッサ802は、プログラムコードを実行し及び装置８００の基本的な動作を制御するための1以上のプロセッサ又は処理回路であってもよい。「プロセッサ」は、データ、信号または他の情報を処理する任意の好適なハードウェアおよび/またはソフトウェアシステム、機構または構成要素を含む。プロセッサは、汎用中央処理装置（CPU）、複数の処理ユニット、機能を実現するための専用回路、または他のシステムを持つシステムを含むことができる。処理は、特定の地理的位置に限定されず、または時間的に制限される必要がない。例えば、プロセッサは、その機能を「リアルタイム」、「オフライン」「バッチモード」等で実行することができる。処理のある部は、異なる時間及び異なる位置で、異なる（または同じ）処理システムにより実行することができる。コンピュータはメモリと通信する任意のプロセッサとすることができる。
【００７８】
メモリ804は、典型的には、プロセッサ802によるアクセスのために装置800内に設けられており、ランダムアクセスメモリ（RAM）、読み出し専用メモリ（ROM）、電気的消去可能読み取り専用メモリ（EEPROM）、フラッシュメモリなどの、任意の好適なプロセッサ読取り可能記憶媒体であって、プロセッサによって実行される命令を記憶するのに適し、かつ、プロセッサ802とは別の位置にありおよび/またはそれと一体化されているものであってもよい。
メモリ804は、オペレーティングシステム808と、いくつかの実施態様では、ソーシャルネットワーキングエンジン810（および/または他のアプリケーション）を含む、プロセッサ802によって、サーバデバイス800上で動作するソフトウェアを格納することができる。いくつかの実施態様では、ソーシャルネットワーキングエンジン810または他のアプリケーションエンジンは、本明細書に記載の機能、例えば、図4-7のいくつか又はすべての方法をプロセッサ802に実行させるための命令を含むことができる。メモリ804内の任意のソフトウェアは、代替的に、任意の他の好適な記憶場所またはコンピュータ読取可能な媒体に記憶することができる。加えて、メモリ804（および/または他の接続された１以上の記憶装置）は、画像、コンテンツ、および本明細書に記載された特徴で使用される他のデータを格納することができる。メモリ804及び他の任意のタイプの記憶媒体（磁気ディスク、光ディスク、磁気テープ、または他の有形の媒体）は、「記憶装置」と考えることができる。
【００７９】
I / Oインターフェイス806は、他のシステムや装置とサーバ装置800とのインターフェイスを可能にする機能を提供することができる。例えば、ネットワーク通信装置、メモリおよび/またはデータベース106の様な記憶装置及び入力/出力装置は、インターフェイス806を介して通信することができる。いくつかの実施態様では、I/Oインターフェイスは、入力装置（キーボード、ポインティングデバイス、タッチスクリーン、マイク、カメラ、スキャナ、等）及び出力装置（表示装置、スピーカ装置、プリンタ、モーター等）の様なインターフェイス装置に接続することができる。
【００８０】
図を簡単にするために、図8は、プロセッサ802、メモリ804、I/Oインターフェイス806、およびソフトウェア・ブロック808および810の各々に対して1つのブロックを示す。これらのブロックは、1以上のプロセッサまたは処理回路、オペレーティングシステム、メモリ、I / Oインターフェイス、アプリケーションおよび/またはソフトウェアモジュールを表すことができる。
他の実施態様では、サーバ装置800は、示されたコンポーネントのすべてを持っているものとは限らず、および/または本明細書に示されたものに代わりに、またはそれに加えて、他のタイプの要素を含む他の要素を持ってもよい。
システムは、本明細書のいくつかの実施態様で説明したブロックを実行するものとして記載されているが、任意の好適なコンポーネント、またはシステムのコンポーネントの組み合わせ、またはそのようなシステムに関連する任意の好適な１以上のプロセッサは記載されたブロックを実施することができる。
【００８１】
クライアントデバイスも用いることができ、および/または、図1に示すクライアントデバイス120-126として、明細書に記載の特徴について用いることができる。いくつかのクライアントデバイスの例について、図１を参照して説明した。 これらのクライアントデバイスは、プロセッサ802、メモリ804、およびI/Oインターフェイス806の様な装置800と同様の構成要素を含むことができる。オペレーティングシステム、クライアントデバイスに適したソフトウェアおよびアプリケーションはメモリに設けて、そしてクライアントグループ通信アプリケーションソフトウェアの様に、プロセッサによって使用することができる。クライアントデバイスのためのI/Oインターフェイスは、ネットワーク通信デバイス、及び音を取り込むためのマイク、画像またはビデオを捕捉するためのカメラ、音声を出力するためのオーディオスピーカ装置、画像またはビデオを出力するための表示装置、又は他の出力装置の様な入出力装置に接続することができる。表示装置は、例えば、本明細書に記載の設定、通知、及び許可を表示するために使用することができる。そのような装置は、任意の好適な表示装置を含むことができ、例えば、LCD、 LED、又はプラズマディスプレイスクリーン、CRT、テレビ、モニタ、タッチスクリーン、3-Dディスプレイスクリーン、または他の視覚表示装置である。いくつかの実施態様は、広告のテキスト又は設定、通知、および許可を話す音声出力や合成語などの様なオーディオ出力装置を提供することができる。
【００８２】
本明細書の記載は、特定の実施態様に関連して説明してきたが、これらの特定の実施態様は、単に例示であり限定的なものではない。実施例に例示する概念は、他の例および実施態様に適用することができる。
【００８３】
本開示に記載される機能ブロック、特徴、方法、装置、およびシステムは、統合されても良く、または当業者に知られているように、システム、装置、および機能ブロックの異なる組み合わせに分割することができることに留意すべきである。任意の好適なプログラミング言語およびプログラミング技術は、特定の実施態様のルーチンを実施するために使用することができる。異なるプログラミング技術は、手続きにおいてまたはオブジェクト指向として用いることができる。ルーチンは、単一の処理装置または複数のプロセッサ上で実行することができる。ステップ、動作、または計算は特定の順序で提示されてもよいが、順序が異なる特定の実施態様において変更してもよい。いくつかの実施態様では、本明細書中でシーケンシャル（sequential）として示す複数のステップまたはブロックは同時に実施してもよい。
【図１】
0006012060.tif 000002
【図２Ａ】
0006012060.tif 000003
【図２Ｂ】
0006012060.tif 000004
【図２Ｃ】
0006012060.tif 000005
【図２Ｄ】
0006012060.tif 000006
【図２Ｅ】
0006012060.tif 000007
【図２Ｆ】
0006012060.tif 000008
【図３Ａ】
0006012060.tif 000009
【図３Ｂ】
0006012060.tif 000010
【図３Ｃ】
0006012060.tif 000011
【図３Ｄ】
0006012060.tif 000012
【図３Ｅ】
0006012060.tif 000013
【図３Ｆ】
0006012060.tif 000014
【図４】
0006012060.tif 000015
【図５】
0006012060.tif 000016
【図６】
0006012060.tif 000017
【図７】
0006012060.tif 000018
【図８】
0006012060.tif 000019