(57)【特許請求の範囲】
【請求項１】
コンピュータによって実施される方法であって、
コンピュータシステムがモバイル装置を使って捕捉された画像を取得するステップと、
前記コンピュータシステムが、前記画像が捕捉された時点又は前記時点の近くの前記モバイル装置の運動センサデータを取得するステップと、
前記コンピュータシステムが、前記運動センサデータに基づいて回転角を算出するステップと、
前記コンピュータシステムが、前記回転角に基づいて前記画像を変換するステップと、
前記コンピュータシステムが、ユーザインタフェースの第１の制御要素を介して受け取った第１のユーザ入力に基づいて、変換画像を第１の粒度で回転させるステップと、
前記コンピュータシステムが、前記ユーザインタフェースの第２の制御要素を介して受け取った第２のユーザ入力に基づいて、前記変換画像を第２の粒度で回転させるステップと
を含み、
前記第２の粒度では、前記変換画像が前記第１の粒度とは異なる速度で回転され、
前記第１の制御要素および前記第２の制御要素は同時に表示される、方法。
【請求項２】
前記画像を変換する前記ステップが、前記回転角に基づいて前記画像を回転させることを含むか、
前記画像を変換する前記ステップが、前記モバイル装置のユーザインタフェースの表示フレームの寸法に基づいて前記画像を変倍することを含むか、または、
前記画像を変換する前記ステップが、前記回転角に基づいて前記画像を回転させること、および前記モバイル装置のユーザインタフェースの表示フレームの寸法に基づいて前記画像を変倍することを含む、請求項１に記載の方法。
【請求項３】
前記モバイル装置上で変換画像を表示するステップを更に含む、請求項１又は２に記載の方法。
【請求項４】
前記回転角を算出する前記ステップ及び前記画像を変換する前記ステップのうちの少なくとも一方が、前記モバイル装置によって行われる、請求項１乃至３の何れか一項に記載の方法。
【請求項５】
運動センサデータを取得する前記ステップが、前記モバイル装置上の少なくとも１つの運動センサからのデータをサンプリングすることを含み、前記運動センサは好ましくは前記モバイル装置の運動及び向きをモニタし、加速力と、回転力又は回転速度とのうちの少なくとも一方を測定することにより、対応する運動センサデータを出力する、請求項１乃至４の何れか一項に記載の方法。
【請求項６】
運動センサデータの取得が、ジャイロスコープからのデータをサンプリングすることを含み、好ましくはサンプリングしたデータを低域フィルタにかけて雑音が減らされるか、
運動センサデータの取得が、前記モバイル装置上の加速度計からのデータをサンプリングすることを含むか、または、
運動センサデータの取得が、ジャイロスコープからのデータをサンプリングすることを含み、好ましくはサンプリングしたデータを低域フィルタにかけて雑音が減らされるとともに、前記モバイル装置上の加速度計からのデータをサンプリングすることを含む、請求項５に記載の方法。
【請求項７】
前記画像の自動変換を利用者が選択することを可能にするユーザ入力要素を提供するステップと、
前記画像を自動変換する選択を受け取るステップであって、前記画像の前記変換は前記選択を受け取ることに応答的である、受け取るステップと
を更に含む、請求項１乃至６の何れか一項に記載の方法。
【請求項８】
前記画像を変換する前、前記モバイル装置のディスプレイ上に取得画像を表示するステップと、
前記画像の変換後、前記取得画像ではなく変換画像を前記ディスプレイ上に表示するステップと
を更に含む、請求項１乃至７の何れか一項に記載の方法。
【請求項９】
前記回転角を所定の閾値角度と比較するステップと、
前記回転角が前記所定の閾値角度を上回らない場合は変換画像を表示するステップと
を更に含む、請求項１乃至８の何れか一項に記載の方法。
【請求項１０】
前記第１の粒度での前記変換画像のユーザ制御回転を可能にする前記第１の制御要素を含む前記ユーザインタフェースを表示し、
前記第１の制御要素に適用される前記第１のユーザ入力を受け取ることにより、
前記第１のユーザ入力に基づいて前記変換画像が前記第１の粒度で回転され、
前記第２の粒度での前記変換画像のユーザ制御回転を可能にする前記第２の制御要素を含む前記ユーザインタフェースを表示し、
前記第２の制御要素に適用される前記第２のユーザ入力を受け取ることにより、
前記第２のユーザ入力に基づいて前記変換画像が前記第２の粒度で回転され、
好ましくは、前記第１の制御要素及び前記第２の制御要素を基準点から第１の方向に動かすことにより、前記画像が第１の回転方向に回転し、前記第１の制御要素及び前記第２の制御要素を前記基準点から第２の方向に動かすことにより、前記画像が第２の回転方向に回転する、請求項１乃至９の何れか一項に記載の方法。
【請求項１１】
コンピュータによって実施される方法であって、
コンピュータシステムがモバイル装置を使って捕捉された画像を取得するステップと、
前記コンピュータシステムが、前記画像が捕捉された時点又は前記時点の近くの前記モバイル装置の運動センサデータを取得するステップと、
前記コンピュータシステムが、前記運動センサデータに基づいて回転角を算出するステップと、
前記コンピュータシステムが、前記回転角に基づいて前記画像を変換するステップと、
前記コンピュータシステムが、利用者が回転点を定めてその回転点を中心に変換画像を回転させることを可能にするユーザインタフェースを表示するステップと、
前記コンピュータシステムが、前記ユーザインタフェースに適用される、回転点を定める第１のユーザ入力を受け取るステップと、
前記コンピュータシステムが、前記ユーザインタフェースに適用される、回転の方向及び粒度を定める第２のユーザ入力を受け取るステップと、
前記コンピュータシステムが、前記第１のユーザ入力及び前記第２のユーザ入力に基づく回転の前記方向及び前記粒度に従い、前記回転点を中心に前記変換画像を回転させるステップと
を含み、
前記回転の粒度は、粒度選択点と前記回転点との間の直線距離に基づいて定められる、方法。
【請求項１２】
前記モバイル装置が移動通信装置、好ましくは電子移動通信装置、特に携帯電話、特にスマートフォンや、無線通信用の携帯型移動通信装置であるか、
前記画像が前記モバイル装置に組み込まれるカメラによって捕捉されるか、または、
前記モバイル装置が移動通信装置、好ましくは電子移動通信装置、特に携帯電話、特にスマートフォンや、無線通信用の携帯型移動通信装置であり、前記画像が前記モバイル装置に組み込まれるカメラによって捕捉される、請求項１乃至１１の何れか一項に記載の方法。
【請求項１３】
前記画像を変換する前記ステップが、ソーシャルネットワーキングシステムによって行われる、請求項１乃至１２の何れか一項に記載の方法。
【請求項１４】
システムであって、
少なくとも１個のプロセッサと、
請求項１乃至１３の何れか一項に記載の方法を実行するために前記少なくとも１個のプロセッサに指示するように構成される命令を記憶するメモリと
を備えるシステム。
【請求項１５】
コンピュータ実行可能命令を記憶するコンピュータ記憶媒体であって、前記コンピュータ実行可能命令は、実行時にコンピュータシステムに請求項１乃至１３の何れか一項に記載のコンピュータによって実施される方法を実行させる、コンピュータ記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に画像処理分野におけるコンピュータによって実装される方法、システム、及びコンピュータ可読媒体に関する。
【背景技術】
【０００２】
今日、人は写真を撮るために使用可能な多くの選択肢を有する。フィルム又はデジタル形式で画像を捕捉することを専用とする従来のカメラに加え、スマートフォン等の多くのモバイル装置も写真を撮る機能を備えている。例えばモバイル装置は、モバイル装置上のカメラを使って利用者が写真を撮ることを可能にするカメラ及び画像捕捉ソフトウェアを含み得る。それらの画像はモバイル装置に記憶し、後で見ることができる。更に、一部のインターネットソーシャルネットワークは、オンラインで写真を共有する機能を利用者に提供する。それらの写真共有ソーシャルネットワークのメンバは、自分のモバイル装置を使って写真を撮り、その写真を他者が見ることができるように写真共有ソーシャルネットワークにアップロードすることができる。
【０００３】
画像は捕捉後に修正することができる。例えば、モバイル装置又はソーシャルネットワークをサポートするシステムは、画像を手作業で変えることを可能にするためのフィルタや他の種類の編集ツールを提供する場合がある。ときに画像の所有者は、審美的な改善をもたらすためにそれらの編集ツールを使って画像の修正を決める場合がある。他の事例では、編集ツールは、不所望と見なされる画像の他の側面を画像の所有者が修正することを可能にし得る。
【発明の概要】
【課題を解決するための手段】
【０００４】
本発明は、傾きに対処するために画像を変換するための技法をとりわけ提供する。本開示の様々な態様では、モバイル装置を使って捕捉される画像を取得するシステム、方法、及びコンピュータ可読媒体を提供する。画像は、好ましくはモバイル装置に組み込まれるカメラによって捕捉される。モバイル装置は、これだけに限定されないが、とりわけ移動通信装置、好ましくは電子移動通信装置、例えば携帯電話、特にスマートフォンや、無線通信用の他の任意の携帯型移動通信装置である。
【０００５】
画像が捕捉された時点又はかかる時点の近くのモバイル装置の運動センサデータも取得される。そのためにモバイル装置は、モバイル装置の運動及び向きをモニタし、対応する運動センサデータを出力する少なくとも１つの運動センサを含み得る。運動センサは、例えば加速力及び回転力のうちの一方、又は速度を測定し得る。一実施形態では、運動センサデータを取得することが、ジャイロスコープからのデータをサンプリングすることを含む。サンプリングしたデータを低域フィルタによってフィルタリングし、雑音を減らすようにしてもよい。一実施形態では、運動センサデータを取得することが、モバイル装置上の加速度計からのデータをサンプリングすることを含む。
【０００６】
運動センサデータに基づいて回転角を計算し、その回転角に基づいて画像を変換する。
一実施形態では、画像を変換することが、計算済みの回転角に基づいて画像を回転させることを含む。画像を変換することは、モバイル装置のユーザインタフェースの表示フレームの寸法に基づいて画像を変倍することを更に、又は代わりに含み得る。
【０００７】
一実施形態では、モバイル装置上で変換画像を表示する。
一実施形態では、回転角を算出することがモバイル装置によって行われる。
一実施形態では、画像を変換することがモバイル装置によって行われる。
【０００８】
一実施形態では、画像の自動変換を利用者が選択することを可能にするユーザ入力要素を提供し、画像を自動変換する選択を受け取る。画像の変換は、選択を受け取ることに応答したものである。
【０００９】
一実施形態では、画像を変換する前、モバイル装置のディスプレイ上に取得画像を表示する。画像の変換後、取得画像ではなく変換画像をディスプレイ上に表示する。
一実施形態では、回転角を所定の閾値角度と比較する。回転角が所定の閾値角度を上回らない場合は変換画像を表示する。
【００１０】
一実施形態では、第１の粒度での変換画像のユーザ制御回転を可能にする第１の制御要素を含むユーザインタフェースを表示する。第１の制御要素に適用される第１のユーザ入力を受け取り、第１のユーザ入力に基づいて変換画像が第１の粒度で回転する。
【００１１】
一実施形態では、第２の粒度での変換画像のユーザ制御回転を可能にする第２の制御要素をユーザインタフェース内に表示する。第２の制御要素に適用される第２のユーザ入力を受け取り、第２のユーザ入力に基づいて変換画像が第２の粒度で回転する。
【００１２】
一実施形態では、第１の制御要素及び第２の制御要素を基準点から第１の方向に動かすことにより画像が第１の回転方向に回転し、第１の制御要素及び第２の制御要素を基準点から第２の方向に動かすことにより画像が第２の回転方向に回転する。
【００１３】
一実施形態では、回転点を利用者が定めてその回転点を中心に変換画像を回転させることをユーザインタフェースが可能にする。回転点を定めるためにユーザインタフェースに適用される第１のユーザ入力を受け取る。回転の方向及び粒度を定めるためにユーザインタフェースに適用される第２のユーザ入力を受け取る。第１のユーザ入力及び第２のユーザ入力に基づく回転の方向及び粒度に従い、回転点を中心に変換画像が回転する。
【００１４】
一実施形態では、画像を変換することが、ソーシャルネットワーキングシステムによって行われる。
本発明の他の多くの特徴及び実施形態が添付図面及び以下の詳細な説明から明らかになる。
【００１５】
これらの図面は本発明の様々な実施形態を専ら例示目的で示し、図面では同様の要素を識別するために同様の参照番号を使用する。本明細書に記載の本発明の原理から逸脱することなしに、図面に示されている構造及び方法の代替的実施形態が使用され得ることを当業者なら以下の解説から容易に理解されよう。
【図面の簡単な説明】
【００１６】
【図１】本開示の一実施形態によるモバイル装置の一例を示す。
【図２】本開示の一実施形態による、図１に示されている画像変換モジュールの一例を示す。
【図３】本開示の一実施形態による、運動センサデータに基づいて画像を変換するためのプロセスの一例を示す。
【図４Ａ】本開示の一実施形態による、変換前の画像を表示するユーザインタフェースの一例を示す。
【図４Ｂ】本開示の一実施形態による、画像を回転させた後の図４Ａに示されているユーザインタフェースの一例を示す。
【図４Ｃ】本開示の一実施形態による、画像を変倍して回転させた後の図４Ａに示されているユーザインタフェースの一例を示す。
【図５Ａ】本開示の一実施形態による、画像の変換に関するユーザ制御を可能にするユーザインタフェースの一例を示す。
【図５Ｂ】本開示の一実施形態による、画像の変換後の図５Ａに示されているユーザインタフェースの一例を示す。
【図６Ａ】本開示の一実施形態による制御要素の一例を示す。
【図６Ｂ】本開示の一実施形態による制御要素の一例を示す。
【図７】本開示の一実施形態による、画像を変換するためのプロセスの一例を示す。
【図８】本開示の一実施形態による、利用者が定める回転点を中心に画像を変換するためのプロセスの一例を示す。
【図９Ａ】本開示の一実施形態による、図８のプロセスを行う前の画像を表示するユーザインタフェースの一例を示す。
【図９Ｂ】本開示の一実施形態による、図８のプロセスに従って変換された画像を表示する図９Ａのユーザインタフェースの一例を示す。
【図１０】本開示の一実施形態による、画像を変換するためのシステムの一例のネットワーク図である。
【図１１】本開示の一実施形態による、本明細書に記載の実施形態の１つ又は複数を実装するために使用され得るコンピュータシステムの一例を示す。
【発明を実施するための形態】
【００１７】
画像変換
モバイル装置に組み込まれるカメラを含め、カメラによって捕捉される画像は何らかの短所を有する場合がある。その短所は、画像捕捉過程におけるばらつきや他の要因を反映し得る。例えば、画像の捕捉時中にカメラが傾いている場合、その結果生じる捕捉画像はカメラの傾きを反映し得る。傾きは、カメラを操作している人がカメラを画像アラインメントの予期に準拠しない方法で位置付けるときに起こることがある。傾いた画像は審美的に望ましくなく、又は画像内に示されている内容の実態に忠実でない場合がある。
【００１８】
カメラはモバイル装置内に配置され得る。一実施形態では、モバイル装置の傾きは、基準軸からのモバイル装置の軸のずれに基づき得る。モバイル装置の縦軸（又は横軸）が垂直の基準軸又は水平の基準軸と揃っていない（即ち平行でない）場合、モバイル装置は傾いていると見なされ得る。画像の捕捉中に傾いているモバイル装置は、モバイル装置の表示フレーム内で表示するとき捕捉画像を傾けて表示させる場合がある。
【００１９】
本開示では、モバイル装置の傾きが垂直の基準軸からのモバイル装置の縦軸のずれに基づくものとして説明され得るが、モバイル装置の傾きは垂直の基準軸からのモバイル装置の横軸のずれに基づく場合もあることを理解すべきである。例えばモバイル装置の横軸（又は縦軸）が垂直の基準軸又は水平の基準軸と揃っていない（即ち平行でない）場合、モバイル装置は傾いていると見なされ得る。
【００２０】
上記の欠点に対処するために、本開示のシステム、方法、及びコンピュータ可読媒体の様々な実施形態は、傾いた画像の発生を直すためにモバイル装置の機能を利用することを含み得る。モバイル装置は、モバイル装置の運動及び向きをモニタする運動センサを含み得る。運動センサは、例えばｘ軸、ｙ軸、及びｚ軸に沿って加速力及び回転力を測定することができる。運動センサの例には、例えばジャイロスコープや加速度計が含まれ得る。基準軸に対するモバイル装置の傾き（又は傾斜角）を算出するために、１つ又は複数の運動センサから生成される運動センサデータが使用され得る。
【００２１】
モバイル装置を使って捕捉される画像、並びに画像が捕捉された時点又はかかる時点の近くのモバイル装置の位置を反映するモバイル装置の運動センサデータが取得され得る。次いで、傾いた画像を補正するのに必要な回転角が運動センサデータに基づいて計算されても良く、その回転角に基づいて画像が変換され得る。
【００２２】
例えばモバイル装置は、モバイル装置上のカメラを使って利用者が写真を撮ることを可能にするカメラ及び画像捕捉ソフトウェアを含み得る。利用者がモバイル装置を傾けて持ちながら写真を撮る場合、捕捉画像はモバイル装置上の表示フレーム内で表示されるときそれ相応に傾く。本開示の実施形態は、画像をまっすぐにするために、それ以外にはモバイル装置の傾き及びその結果生じる画像を補正するために、利用者が画像を変換する（例えば回転させる）ことを可能にする。このようにして、例えば捕捉画像をモバイル装置上に記憶する前に、又は利用者がオンラインで写真を記憶し共有することを可能にするソーシャルネットワーキングシステムのリモートサーバ等の遠隔装置にアップロードする前に、捕捉画像をまっすぐにすることができる。一実施形態では、画像捕捉ソフトウェアがソーシャルネットワーキングシステム用のモバイルアプリケーションの一部でも良く、かかるアプリケーションは、利用者が画像を捕捉し、その画像をオンラインでソーシャルネットワーキングシステムに投稿することを可能にするために、利用者によってモバイル装置にダウンロードされ得る。運動センサに基づく傾き補正は、例えばモバイルアプリケーションの一部として含まれても良く、利用者が捕捉画像の傾きを補正することを可能にする。一実施形態では、画像の取得後、利用者が確認することなしに傾き補正が自動で行われ得る。別の実施形態では、画像の変換前に傾き補正が利用者による開始又は確認を必要とし得る。
【００２３】
図１は、本開示の一実施形態によるモバイル装置の一例を示す。モバイル装置１００が、カメラ１０５、画像捕捉モジュール１１０、運動センサ１１５、画像変換モジュール１２０、ディスプレイ１２５、及び処理装置１３０を含んで示されている。図示の構成要素は限定的であることを意図せず、本開示の詳細を不明瞭にしないためにモバイル装置１００の他の構成要素、例えばオペレーティングシステム、スピーカ、マイクロフォン、入力制御要素（例えばタッチスクリーン、キーパッド、テンキー等）、通信ポート、トランシーバ、メモリ等を図示していないことを理解すべきである。図１１に関して論じるように、モバイル装置１００の例には、これだけに限定されないが、スマートフォン、タブレット、ラップトップ、携帯情報端末（ＰＤＡ）、携帯電話等が含まれ得る。
【００２４】
カメラ１０５がモバイル装置１００上に配置され、利用者がモバイル装置１０５を使って画像を捕捉することを可能にする。カメラ１０５は、例えばカメラ１０５によって撮られる画像（例えば写真）を表す画像データを生成するために使用されるレンズや画像センサを含み得る。例えば画像センサには、これだけに限定されないが、光を捕捉してそれを電気信号に変換する電荷結合素子（ＣＣＤ）画像センサや相補型金属酸化膜半導体（ＣＭＯＳ）センサが含まれ得る。画像センサからの電気信号を画像を表すデジタル信号に変換するための更なる電子回路が含まれても良い。
【００２５】
画像捕捉モジュール１１０は、カメラ１０５と連動して機能して画像を捕捉することを可能にする。例えば、画像捕捉モジュール１１０は、画像の捕捉中にカメラ１０５の動作を制御することができる。画像捕捉モジュール１１０は、例えばモバイル装置１００上のカメラ１０５を使って利用者が写真を撮ることを可能にするユーザインタフェース又はファインダを生成することもできる。
【００２６】
運動センサ１１５がモバイル装置１００上に配置され、モバイル装置１００の運動センサデータを提供する。「運動センサデータ」という用語は、本明細書では広い意味で使用し、運動、位置、向き、速度等に関するデータを概して指し得る。運動センサ１１５は、加速度計、ジャイロスコープ、又は運動センサデータをもたらすことができる他の任意の種類のツール若しくは資源を含み得る。例えば運動センサ１１５は、（例えば加速度計からの）加速力、（例えばジャイロスコープからの）３軸に沿った回転力、加速力と回転力との組合せ等に基づき得る。運動センサ１１５は単一の運動センサに限定することを意図しておらず、１つ以上の運動センサ（例えば加速度計とジャイロスコープ）を包含し得ることを理解すべきである。
【００２７】
画像変換モジュール１２０は、捕捉画像を回転させることによって、及び場合によっては画像を更に変倍することによって捕捉画像を変換する。一実施形態では、変換が運動センサ１１５から得られる運動センサデータに基づく。捕捉画像及びモバイル装置１００が画像を捕捉した時点又はかかる時点の近くのモバイル装置１００の運動センサデータを取得した後、画像捕捉時のモバイル装置１００の傾きを補正するために捕捉画像を回転させるために必要な回転角を画像変換モジュール１２０が算出する。例えば画像変換モジュール１２０は、モバイル装置１００のオペレーティングシステムが運動センサデータを受け取って処理するためのアプリケーションプログラミングインタフェース（ＡＰＩ）を使用することができる。例えばモバイル装置１００のオペレーティングシステムのフレームワークは、本開示の傾き補正の実施形態を実装するアプリケーション等のアプリケーションが、装置のハードウェアから運動センサデータを受け取り、そのデータを処理することを可能にし得る。
【００２８】
一実施形態では、画像変換モジュール１２０が基準系を指定することができ、運動センサ１１５によってモバイル装置の向き又は運動がその基準系と比較され得る。運動センサデータは、形式の点で様々な実施形態で異なる場合があり、例えばベクトル、未処理の加速度値、１つ又は複数の基準軸に対する角度値等が含まれる。モバイル装置１００の傾きは、運動センサデータに基づいて算出され、かつ傾いた画像を補正するのに必要な回転角を計算するために使用され得る。一実施形態では、画像変換モジュール１２０が基準系の一軸を指定することができ、その一軸に関する運動センサデータだけがモバイル装置１００の傾きを算出するために、及び傾いた画像を変換するために使用される。
【００２９】
一実施形態では、画像変換モジュール１２０が、画像の変換に関するユーザ制御を可能にするユーザインタフェース上の制御要素を提供する。制御要素経由で適用される受け取られたユーザ入力に基づき、画像をしかるべく回転させ、変倍する。別の実施形態では、画像変換モジュール１２０が、運動センサデータに基づいて画像を変換すると共に、変換に関するユーザ制御を可能にする制御要素を提供することができる。例えば画像変換モジュール１２０は、まず運動センサデータに基づいて画像を変換し、その後、ユーザインタフェース経由で適用されるユーザ入力に基づいて画像を変換することができ、その逆もあり得る。
【００３０】
ディスプレイ１２５は、液晶ディスプレイ（ＬＣＤ）、有機発光ダイオード（ＯＬＥＤ）、電子ペーパ等、多岐にわたる任意の技術に基づき得る。一実施形態では、ディスプレイ１２５が、ディスプレイを介してユーザ入力を受け取ることを可能にするタッチスクリーンディスプレイである。
【００３１】
処理装置１３０は、カメラ１０５、運動センサ１１５、及びディスプレイ１２５に動作可能に結合され、画像捕捉モジュール１１０及び画像変換モジュール１２０と連動して機能して本開示に記載の様々な技法を実行する。「処理装置」という用語は、本明細書では広い意味で使用し、１個又は複数個のプロセッサ、マイクロプロセッサ、マイクロコントローラ等を含み得る。処理装置の例に関する更なる詳細について図１１の中で説明する。
【００３２】
１つ又は複数の機能構成要素が単一の構成要素へと集約されても良いことを理解すべきである。例えば、画像捕捉モジュール１１０と画像変換モジュール１２０とを単一のモジュールに集約することができる。場合によっては、画像捕捉モジュール１１０と画像変換モジュール１２０とが、製造時にモバイル装置１００上のソフトウェア及びハードウェアのうちの少なくとも一方によって完全に若しくは部分的に包含され得る。一部の例では、例えば画像捕捉モジュール１１０及び画像変換モジュール１２０が、モバイル装置１００にダウンロード可能なソフトウェアプログラム（例えばモバイルアプリケーション）によって完全に又は部分的に包含され得る。更に一部の例では、画像捕捉モジュール１１０及び画像変換モジュール１２０が、オンラインで画像を共有することを可能にするソーシャルネットワーキングシステムと連動して機能することができ、又はその一部であり得る。
【００３３】
図２は、本開示の一実施形態による画像変換モジュールの一例を示す。画像変換モジュール１２０は、捕捉画像の傾きを補正するための回転角を求める傾き算出モジュール２０５を含む。モバイル装置１００上のカメラ１０５で捕捉される画像は、画像捕捉時の（例えば利用者が写真を撮るときの）モバイル装置１００の傾きを反映するので、モバイル装置１００の傾きを使用して傾いたモバイル装置１００を使って捕捉された画像の傾きを求めることができる。傾き算出モジュール２０５は、画像が捕捉された時点又はかかる時点の近くのモバイル装置１００の運動センサデータに基づき、モバイル装置１００の傾きを補正するのに必要な回転角を算出する。図示の実施形態では、傾き算出モジュール２０５が、サンプラ２１０、フィルタ２１５、運動センサデータリポジトリ２２０、タイミングモジュール２２５、及び角度算出モジュール２３０を含む。
【００３４】
サンプラ２１０は、運動センサ１１５（例えばジャイロスコープ）によって生成される運動センサデータをサンプリングするように構成される。例えばサンプラ２１０は、３０サンプル／秒等の所定のサンプリングレートで運動センサデータをサンプリングすることができる。他のサンプリングレートを実行しても良いことを理解すべきである。
【００３５】
フィルタ２１５は、サンプラ２１０によってサンプリングされた運動センサデータを受け取り、フィルタリングするように構成される。例えば一実施形態では、フィルタ２１５が、よりきれいな信号を生成するために高周波雑音を除去する低域フィルタであり得る。例えば一実施形態では、カルマンフィルタを実装することができる。平滑化してデータ信号をより安定させるために、例えば運動センサデータ内の雑音を減らす平均法や他の平滑化アルゴリズムを実装することができる。
【００３６】
運動センサデータリポジトリ２２０は、サンプラ２１０及びフィルタ２１５から運動センサデータを受け取って記憶するように構成される。運動センサデータリポジトリ２２０は、例えば後で取得するために運動センサデータを記憶することができる１つ又は複数の揮発性メモリ（例えばＲＡＭ、ＳＲＡＭ等）及び不揮発性メモリ（例えばＮＶＲＡＭ、フラッシュメモリ、ハードドライブ等）を含み得る。一部の例では、運動センサデータリポジトリ２２０が、データバッファ等のより一時的な形式のメモリ内に保持され得る。例えば、データバッファは決まった量の運動センサデータを保持するように構成されても良く、モバイル装置１００が画像捕捉モードに入るとサンプラ２１０が運動センサデータをサンプリングし始め、そのデータはフィルタ２１５によってフィルタリングされ、データバッファ２２０によって受け取られ得る。
【００３７】
角度算出モジュール２３０は、運動センサデータリポジトリ２２０から運動センサデータを受け取り、モバイル装置１００の傾きを算出するように構成され、この傾きはひいてはモバイル装置１００が傾いている間に捕捉される画像を補正するのに必要な回転角を決定し得る。例えば角度算出モジュール２３０は、運動センサデータリポジトリ２２０から運動センサデータを受け取り、運動センサデータに基づいて画像捕捉時のモバイル装置１００の傾きを計算し、傾いた画像を補正するための回転角を提供することができる。
【００３８】
タイミングモジュール２２５は、傾きの計算のベースとなる適切な運動センサデータを求めるために使用される。例えばタイミングモジュール２２５は、傾きを計算するのに使用される１組の運動センサデータを求めるために使用されても良い。一実施形態では、タイミングモジュール２２５は、モバイル装置１００が画像捕捉モードに入る（例えば利用者が写真を撮るための写真捕捉ユーザインタフェースを活性化する）とき、及び画像が捕捉される（例えば利用者が写真を撮る）ときを識別する。例えば、その場合、角度算出モジュール２３０が、画像捕捉モードに入った時点から画像捕捉時点までにサンプリングされ、かつフィルタリングされた運動センサデータの全セットについての角度の算出の拠点となる。一実施形態では、角度算出モジュール２３０が、他の期間又は他の事象の発生時における角度の算出の拠点となり得る。
【００３９】
一実施形態では、サンプラ２１０は、画像捕捉モードに入ったことをタイミングモジュール２２５が示すときに運動センサデータをサンプリングし始める。一実施形態では、サンプラ２１０が既に運動センサデータをサンプリングしていても良く、タイミングモジュール２２５は、画像捕捉モードに入る時点に対応するサンプルとして１組の運動センサデータの第１のサンプルを識別する。
【００４０】
一実施形態では、画像が捕捉されたことをタイミングモジュール２２５が示すとき、サンプラ２１０が運動センサデータのサンプリングを停止することができる。画像の捕捉後もサンプラ２１０がサンプリングを続ける実施形態では、タイミングモジュール２２５が、組のうちの最後のサンプル、例えば画像の捕捉時点に対応するサンプルを識別することができる。
【００４１】
別の実施形態では、画像の捕捉前の（即ち画像の捕捉と時間が近い）所定の期間又はサンプル数に基づき、タイミングモジュール２２５が角度の算出に使用するのに適切な運動センサデータを識別することができる。角度算出モジュール２３０は、所定の期間内の１組の対応する運動センサデータを使用して傾きを計算し、傾いた画像を補正するための回転角を算出する。例えば利用者が画像を捕捉する場合、捕捉時点からの最後の３０サンプルが角度を算出する際に使用され得る。同様に、例えば画像捕捉時点からの最後の２秒のサンプリング済み運動センサデータが角度を算出する際に使用され得る。この所定の時間及びサンプル数は例示的であり、限定的であることを意図していないことを理解すべきである。他の実施形態では、他の所定の時間及び所定のサンプリングを実施することができる。回転角を計算するために単一のサンプルを使用しても良いことも理解すべきであり、例えば単一のサンプルは画像の捕捉時点に対応する。更に、他の実施形態では他の方法を実施して回転角計算の１組の特定の運動センサデータを求めても良いことを理解すべきである。
【００４２】
回転モジュール２３５、変倍モジュール２４０、及びフレーミングモジュール２５０は、連動して機能し、捕捉画像及び変換画像を表示するユーザインタフェースの表示フレーム内の画像を回転させ、変倍する。回転モジュール２３５は、角度算出モジュール２３０によって求められた回転角に基づいて捕捉画像を回転させる。例えば回転モジュール２３５は、回転角を使用して、オペレーティングシステムが画像を使用してしかるべく回転させるための（例えば行列形式の）回転変換を行う。
【００４３】
変倍モジュール２４０は、捕捉画像の傾きを補正するために算出される回転角に基づいて画像を変倍することができる。変倍モジュール２４０は、フレーミングモジュール２４５によって表示される表示フレームの寸法に基づいて倍率を決定することができる。例えば、画像を回転させたとき表示フレーム内に空きスペースができるのを避けるために画像を変倍することができる。一実施形態では、変倍モジュール２４０は、表示フレーム内のスペースを除去するのに必要な最低量だけ回転画像を変倍する。一実施形態では、フレーミングモジュール２４５が回転角に基づいて表示フレームの大きさを修正することができる。例えば、表示フレーム内の空きスペースを除去するために画像を拡大することが画像を不明瞭にする場合（例えば画像の解像度が低い場合）、フレーミングモジュール２４５は表示フレームを縮小して、画像の回転時に作り出される空きスペースを除去することができる。
【００４４】
図示の実施形態では、画像変換モジュール１２０がユーザ制御回転モジュール２５０も含む。ユーザ制御回転モジュール２５０は、画像の回転に関するユーザ制御を可能にするユーザインタフェースを提供する。例えば、このようにして、利用者は傾いた画像を手作業でしかるべく回転させることによって補正することができる。
【００４５】
一実施形態では、ユーザ制御回転モジュール２５０は、利用者が画像の回転を１つ以上の粒度レベルに従って制御することを可能にするユーザインタフェースを提供する。例えばユーザインタフェースは、第１の粒度での画像のユーザ制御回転を可能にする第１の制御要素と、第２の粒度での画像のユーザ制御回転を可能にする第２の制御要素とを含み得る。第２の粒度は、例えば利用者がより正確に回転させることを可能にするために、第１の粒度よりも遅い速度で画像を回転させることができる。一実施形態では、時計回り又は反時計回りそれぞれに画像を回転させるために、基準位置に対して動かすことができるダイヤルとして第１の制御要素及び第２の制御要素を同時に表示する。第１の制御要素及び第２の制御要素について受け取られるユーザ入力に基づき、ユーザ制御回転モジュール２５０が、フレーミングモジュール２４５によって提供される表示フレーム内で第１の粒度及び第２の粒度のそれぞれに基づいて画像を回転させる。
【００４６】
図示の実施形態は傾き算出モジュール２０５及びユーザ制御回転モジュール２５０の両方を含むが、他の実施形態では傾き算出モジュール２０５又はユーザ制御回転モジュール２０の一方が他方なしに実装され得ることを理解すべきである。
【００４７】
図３は、本開示の一実施形態による、運動センサデータに基づいて画像を変換するためのプロセスの一例を示す。プロセス３００のブロック３０５で、モバイル装置によって捕捉される画像を取得する。例えば一実施形態では、モバイル装置上のカメラ及び画像捕捉プログラムを使用して画像を捕捉することができる。例えば、図２に示す画像捕捉モジュール１１０は、モバイル装置１００上のカメラ１０５を使って写真を撮るためのユーザインタフェースを利用者に示すことができる。
【００４８】
ブロック３１０で、捕捉時の又はかかる時点の近くのモバイル装置の運動センサデータを取得する。例えば一実施形態では、画像変換モジュール１２０が、画像の捕捉時中のモバイル装置１００の傾きに基づく運動センサデータを取得する。例えば利用者がモバイル装置１００上で画像捕捉モードに入ると、サンプラ２１０がモバイル装置１００上に実装されるジャイロスコープ又は他の運動センサからの運動センサデータをサンプリングし始める。次いで、例えばフィルタ２１５及び運動センサデータリポジトリ２２０により、サンプリング済みの運動センサデータがフィルタリングされて記憶される。一実施形態では、利用者が写真を撮るまで運動センサデータをサンプリングし、フィルタリングし、記憶する。サンプリングし、フィルタリングし、又は記憶する運動センサデータの量、並びに運動センサデータをサンプリングし、フィルタリングし、又は記憶する期間は様々な方法で決めることができる。
【００４９】
ブロック３１５で、運動センサデータに基づいて回転角を計算する。例えば一実施形態では、図２に示す角度算出モジュール２３０が画像の傾きを補正するための回転角を算出する。角度算出モジュール２３０が運動センサデータリポジトリ２２０から運動センサデータを受け取り、モバイル装置の傾きを算出する。この傾きは、画像捕捉時のモバイル装置１００の傾きを補正するために画像を回転させる回転角を決定し得る。
【００５０】
一実施形態では、画像を変換する前に回転角を所定の閾値と比較する。所定の閾値は、例えば画像の傾きが利用者によって意図された（例えば芸術的に傾けられ、それ以外には意図的に傾けられる）ものだと想定される閾値を表し得る。傾いた画像を補正するための回転角が所定の閾値を上回る場合、傾きを補正するために画像を回転させることはない。例えば閾値は、４５度又は他の任意の所定の閾値とすることができる。一部の例では、所定の閾値が画像を保持するソーシャルネットワーキングシステム、画像をアップロードし若しくは閲覧する利用者、又はその両方によって選択され得る。一部の例では、傾きを補正するのに必要な画像の回転が閾値を上回ることを示す情報を利用者に提供する。一部の例では、回転角が閾値を上回るかどうかに関係なく、画像の変換を行うべきかどうかを判定するために利用者による確認又は検証が必要である。
【００５１】
ブロック３２０で、計算した回転角に基づいて画像を変換する。例えば、図２の回転モジュール２３５が角度算出モジュール２３０によって計算される回転角の分だけ捕捉画像を回転させるための回転変換を生成する。一実施形態では、回転角に基づいて捕捉画像の変倍も行う。例えば図２の変倍モジュール２４０は、ユーザインタフェース上に表示される表示フレームを埋めるために捕捉画像を変倍するのに必要な倍率を決定する。
【００５２】
ブロック３２５で、変換画像を表示する。例えば、図２のフレーミングモジュールが回転モジュール、変倍モジュール、及び画像捕捉プログラムと連動して機能し、モバイル装置のディスプレイ上に示されるユーザインタフェースの表示フレーム内に変換画像をレンダリングすることができる。一部の例では、捕捉画像が表示フレーム内に表示され、その後変換画像によって置換される。
【００５３】
一実施形態では、利用者がモバイル装置１００のメモリ内に変換画像を保存するか、それ以外には記憶し、又はソーシャルネットワーキングシステム内に記憶するためにリモートサーバに変換画像を伝達することができる。一部の例では、捕捉画像をモバイル装置１００上に保存すること、および遠隔装置に伝達することのうちの少なくとも一方が行われる。一部の例では、運動センサデータ及び傾いた画像を補正するための最終的に計算された回転角のうちの少なくとも一方が、例えば画像データと共に含まれるメタデータとして捕捉画像と一緒に保存される。
【００５４】
例えば一実施形態では、画像を取得するのと同じモバイル装置１００（例えばカメラ１０５を使って画像を捕捉し、運動センサ１１５によって運動センサデータを提供する）上で画像の変換が行われる。例えば、モバイル装置１００の利用者はモバイル装置１００（例えばスマートフォン）を使って写真を撮ることができ、モバイル装置１００は、画像捕捉時のモバイル装置１００の運動センサデータに基づき、任意の傾きを補正するのに必要な回転角を計算することができる。
【００５５】
別の実施形態では、画像を捕捉したモバイル装置１００以外の装置が捕捉画像及び運動センサデータを取得し、傾き補正を行うことができる。例えば、デスクトップコンピュータ又は他の遠隔装置（例えばサーバ）がモバイル装置１００と有線通信又は無線通信し、画像を捕捉するモバイル装置１００から捕捉画像及び運動センサデータを受け取ることができる。次いで、デスクトップコンピュータ又は他の遠隔装置は、運動センサデータに基づいて回転角を計算して画像を変換することができる。一部の例では、デスクトップコンピュータ又は他の遠隔装置がインターネット経由で、又はフラッシュメモリやＣＤ−ＲＯＭ等のポータブルメモリデバイスから捕捉画像及び運動センサデータを受け取ることができる。一部の例では、運動センサデータが画像ファイル内の画像データと一緒に（例えばメタデータ内に）記憶され、装置（例えば画像を捕捉したモバイル装置１００や他の遠隔装置）上に記憶され得る。
【００５６】
図４Ａ及び図４Ｂは、本開示の一実施形態による、変換前及び変換後それぞれの画像を表示するユーザインタフェースの一例を示す。ユーザインタフェース４００が、モバイル装置のディスプレイ４０５上に表示されて示されている。ユーザインタフェース４００は、捕捉画像及び変換画像を表示するための表示フレーム４１０を含む。ユーザインタフェース４００は、本明細書に記載するように画像の変換を開始するか、その以外に有効化することに関するユーザ制御を可能にする制御要素４１５も含む。捕捉画像に対する１つ又は複数の変換を利用者が行うことを認め又は可能にするために、図示のように１つ又は複数の更なる制御要素４２０を表示しても良い。更なる制御要素４２０の例は、画像のトリミング、画像の鮮明化、画像のコントラストの変更等、様々な変換を行うことができる。他の実施形態では、多岐にわたる任意の追加の変換も実施することができる。
【００５７】
表示フレーム４１０内に家を含む捕捉画像４２５が表示されている。捕捉画像４２５はモバイル装置１００が傾いている間に撮られ、従って示されている家の画像も表示フレーム４１０内で傾いて示されている。モバイル装置１００の縦軸４４０を点線で示す。軸４３０は、画像捕捉時の垂直基準軸を表す。
【００５８】
捕捉画像４２５の縁４３５Ａが表示フレーム４１０と揃うように、表示フレーム４１０内に捕捉画像４２５が示されている。他の実施形態では、縁４３５Ａが表示フレーム４１０よりも大きくても小さくても良いことを理解すべきである。モバイル装置が傾きながら家の捕捉画像４２５が撮られたので、捕捉画像４２５は表示フレーム４１０内で傾いて表示されている。図示のように、角度Ａは、捕捉画像が傾いている角度、従って傾きを補正するのに必要な回転角（即ち反時計回りの角度Ａの回転）を表す。
【００５９】
図４Ｂは、中心点Ｃの周りを反時計回りに角度Ａ回転させた後の捕捉画像４２５を示す。縁４３５Ａは、角度Ａ回転させた後の捕捉画像４２５の縁を表す。捕捉画像４２５が回転されているので、捕捉画像の縁４３５Ａはもはや表示フレーム４１０と揃っておらず、表示フレーム４１０内に画像内容がないスペース４４５を作り出している。捕捉画像４２５が角度Ａ回転されているので、垂直基準軸４３０が今度はモバイル装置１００の縦軸４４０と揃い、表示フレーム４１０内の捕捉画像４２５の傾きが補正されている。
【００６０】
一実施形態では、捕捉画像４２５の変換が、捕捉画像４２５を回転させることに加えて捕捉画像４２５を変倍することを含む。このようにして、例えば縁のサイズを大きくしてスペース４４５を埋めるために、捕捉画像４２５を適切に変倍することができる。図４Ｃは、反時計回りに角度Ａ回転させ、捕捉画像４２５の回転によって作り出されたスペース４４５を埋めるために変倍した後の捕捉画像４２５を示す。縁４３５Ｃは、表示フレーム４１０内にスペース４４５が残らないように、縁の中に表示フレーム４１０全体を収めるために大きくした後の縁４３５Ａを表す。変倍は、捕捉画像の回転と同時に行うことができ、又は逐次的に行われ得る。
【００６１】
図５Ａ及び図５Ｂは、本開示の一実施形態による、捕捉画像の変換に関するユーザ制御を可能にするユーザインタフェースの一例を示す。図５Ａは、捕捉画像を表示する前のユーザインタフェースの一例を示し、図５Ｂは捕捉画像を変換した後のユーザインタフェースの一例を示す。
【００６２】
ユーザインタフェース５００が、モバイル装置のディスプレイ５０５上に表示されて示されている。ユーザインタフェース５００は、捕捉画像、変換画像、又はその両方を表示するための表示フレーム５１０を含む。ユーザインタフェース５００は、捕捉画像の変換に関するユーザ制御を可能にする変換制御要素５６０、５７５Ａ、５７５Ｂ、５８０Ａ、５８０Ｂ、及び５８０Ｃも含む。垂直及び水平の基準を利用者に提供するために、表示フレーム５１０内にグリッド５５０が表示されている。
【００６３】
図５Ａでは、捕捉画像５２５が表示フレーム５１０内に表示されている。利用者は変換制御要素５６０、５７５Ａ、５７５Ｂ、５８０Ａ、５８０Ｂ、及び５８０Ｃを利用して捕捉画像５２５の変換を制御することができる。例えば一実施形態では、接触によって活性化されるか、それ以外に接触によって制御される変換制御要素５６０、５７５Ａ、５７５Ｂ、５８０Ａ、５８０Ｂ、及び５８０Ｃを伴って、ユーザインタフェース５００がタッチスクリーンディスプレイ上に表示されても良い。
【００６４】
変換制御要素５６０は、捕捉画像５２５の変換に関するユーザ制御を可能にする。変換制御要素５６０は、第１の粒度で捕捉画像を回転させることに関するユーザ制御を可能にする第１の制御要素５６５と、第２の粒度で捕捉画像を回転させるユーザ制御を可能にする第２の制御要素５７０とを含む。例えば、より高い粒度を有する制御要素は、捕捉画像５２５の回転に関するよりきめ細かい制御を利用者に提供する。図示の実施形態では、捕捉画像が表示フレーム５１０の中心点Ｃの周りを回転する。更に一実施形態では、表示フレーム内の画像内容がないスペースを避けるために、捕捉画像を更に変倍する。
【００６５】
利用者がより細かい粒度で第１の制御要素をスライドさせ、又は他の方法で動かす距離又は角度は、より大きい粒度を有する第２の制御要素を同じ又は同様の距離動かすよりも小さい回転度に相関し得る。例えば図示の実施形態では、制御要素５６５及び５７０がダイヤルとして具体化されており、このダイヤルは、利用者が（例えばダイヤルに触って時計回り又は反時計回りにスライドさせることにより）既定の位置から弧に沿って時計回り又は反時計回りに動かすことができ、制御要素５７０は制御要素５６５よりも細かい粒度を有する。既定の位置はダイヤルが垂直になる弧の中心であり、捕捉画像が回転されていない初期位置に対応する。利用者が制御要素５６５又は５７０を時計回りの方向に動かすと、捕捉画像５２５がそれぞれの粒度で時計回りに回転される。同様に、利用者が制御要素５６５又は５７０を反時計回りの方向に動かすと、捕捉画像５２５がそれぞれの粒度で反時計回りに回転される。このようにして、対応する弧に沿って制御要素５７０を既定の位置から一定度数動かすことにより、対応する弧に沿って制御要素５６５を同様の度数動かすよりも捕捉画像の回転度が小さくなる。例えば、既定の位置から制御要素５６５を９０度動かすことは捕捉画像を４５度動かし得るのに対し、既定の位置から制御要素５７０を９０度動かすことは捕捉画像を１５度だけ回転させ得る。これらの値は例示的であり、限定的であると解釈すべきでないことを理解すべきである。更に別の実施形態では、制御要素５７０に比べて更に細かい粒度の制御を有するように制御要素５６５を設定することができる。
【００６６】
ユーザインタフェース５００は、ディスプレイ５０５上に表示されるユーザ制御ボタンとして具体化される変換制御要素５７５Ａ及び５７５Ｂも含む。利用者が制御要素５７５Ａ及び５７５Ｂをクリックするか、それ以外に活性化すると、捕捉画像が時計回り又は反時計回りにしかるべく回転させられる。例えば、制御要素５７５Ａをクリックすると捕捉画像を反時計回りに所定の度数回転させることができ、制御要素５７５Ｂをクリックするか、それ以外に活性化すると捕捉画像を時計回りに所定の度数回転させることができる。
【００６７】
ユーザインタフェース５００は、制御要素５６５の粒度に関する制御を利用者に提供する変換制御要素５８０Ａ、５８０Ｂ、及び５８０Ｃも含む。例えば利用者が５８０Ａを選択すると、ダイヤルの端まで制御要素５６５が完全に（例えば９０度）動いて、捕捉画像が４５度回転する。同様に、利用者が５８０Ｂを選択すると、ダイヤルの端まで制御要素５６５が完全に（例えば９０度）動いて、捕捉画像が３５度回転される。同様に、利用者が５８０Ｃを選択すると、ダイヤルの端まで制御要素５６５が完全に（例えば９０度）動いて、捕捉画像がそれぞれの方向に１５度回転される。一実施形態では、制御要素５６５の全般的な粒度に加え、制御要素５７０の全般的な粒度も制御要素５８０Ａ、５８０Ｂ、及び５８０Ｃを選択することによってそれぞれ変更される。例えば制御要素５６５が設けられた実施形態では、制御要素５８０Ａ、５８０Ｂ、及び５８０Ｃそれぞれに関する制御要素５７０の粒度が１５度、１０度、及び５度であり得る。これらの値は例示的であり、限定的であると解釈すべきでないことを理解すべきである。他の実施形態では他の値も実装され得る。
【００６８】
図５Ｂは、制御要素５６５及び５７０に適用されたユーザ入力に基づいて回転させ、変倍した後の捕捉画像５２５を示す。例えば利用者は、ほぼ水平な（例えば傾きのない）位置まで捕捉画像を回転させるためにまず制御要素５６５を使用し、その後、より高い精度で傾いた画像を水平にするためにより細かい粒度を有する制御要素５７０を使用する。この使用順序は例示的であり、場合によっては利用者がこの例で示すのと異なる順序で制御要素５６５及び５７０を使用し得る。更に、特定の例では、傾いた写真を水平にするために利用者は制御要素５６５及び５７０の一方しか使用することができない。
【００６９】
別の実施形態では、制御要素５６０が弧形の動きとは別に、利用者による別の種類の動き又は入力を含み得る。例えば一実施形態では、制御要素の動きが直線的であり得る。図６Ａは、一実施形態による直線的である制御要素の一例を示す。制御要素６６５Ａ及び６７０Ａが既定の位置に示されており、時計回り又は反時計回りの方向に捕捉画像を回転できるようにするために利用者によって左右に直線的に動かされ得る。制御要素６７０Ａは、例えば制御要素６６５Ａよりも細かい粒度で捕捉画像を回転させることができる。
【００７０】
更に別の実施形態では、制御要素が、制御要素に与えられる１回のクリックや他の入力等のユーザ制御パラメータに基づいて実装され得る。例えば図６Ｂは、利用者がクリックすることができるボタン形式の制御要素６６５Ｂ及び６７０Ｂの一例を示す。制御要素６６５Ｂ、６７０Ｂをクリックすると捕捉画像を一定量回転させることができる。制御要素６７０Ｂは、より小さい回転度に相関する、制御要素６６５Ｂよりも細かい粒度の制御を有し得る。例えば、制御要素６６５Ｂを１回クリックすることで５度の傾きを引き起こすことができ、制御要素６７０Ｂを１回クリックすることで２度の傾きを引き起こすことができる。特定の例では、利用者が捕捉画像を継続的に回転させるために制御要素を押したままにするようにしてもよい。その場合、細かい粒度の制御要素が、大きい粒度の制御要素よりも遅い速度（例えば回転度／秒）で捕捉画像を回転させる。
【００７１】
図７は、本開示の一実施形態による、画像を変換するためのプロセスの一例を示す。プロセス７００のブロック７０５で、モバイル装置のディスプレイ上に図５Ａ、図５Ｂ、図６Ａ、及び図６Ｂに関して説明したようなユーザインタフェースを表示する。ブロック７１０で、ユーザインタフェースの表示フレーム内に捕捉画像を表示する。ブロック７１５で、利用者が第１の粒度に従って捕捉画像を変換することを可能にする第１の制御要素に適用されるユーザ入力を受け取る。ブロック７２０で、第１の制御要素に関連するユーザ入力に基づいて捕捉画像を変換し、その結果、変換した通りに表示フレーム内に表示する。例えば図５Ａ及び図５Ｂに示す実施形態では、ユーザ入力に基づいて第１の粒度で回転させた通りに捕捉画像の回転を表示フレーム５１０内に表示することができる。
【００７２】
ブロック７２５で、第２の制御要素に適用されるユーザ入力を受け取る。第２の制御要素も第１の制御要素に加えてユーザインタフェース上に表示される。第２の制御要素は、第１の制御要素の粒度と異なる第２の粒度に従って利用者が捕捉画像を変換することを可能にする。ブロック７３０で、第２の制御要素について受け取ったユーザ入力に基づいて捕捉画像を変換し、その結果、変換した通りに表示フレーム内に表示する。例えば図５Ａ及び図５Ｂに示す実施形態では、ユーザ入力に基づいて第２の粒度で回転させた通りに捕捉画像の回転を表示フレーム５１０内に表示することができる。
【００７３】
ブロック７３５で、変換が完了する（例えば利用者が対応するボタンを押すことで変換の完了を示す）と、変換画像が最終決定される（例えば装置のメモリ内に保存されるか、それ以外に記憶され、又はソーシャルネットワーキングシステム内に記憶するためにインターネット経由でリモートサーバに伝達される）。一部の例では、捕捉画像が装置上に保存され、遠隔装置に伝達されても良い。
【００７４】
図３及び図７で説明したプロセスは組み合わせて実行し得ることを理解すべきである。例えば一実施形態では、ユーザインタフェース５００が提供され、図３のプロセス３００に従って捕捉画像を変換した後でプロセス７００が実行される。このようにして、利用者は傾きを補正するために自動画像変換を行うことを決めることができ、その後、更なる手動のユーザ制御変換を可能にするためにユーザインタフェース５００が提示される。一実施形態では、プロセス３００から生じる変換画像がユーザインタフェース５００と共にディスプレイ上に表示される場合、制御要素５６５及び５７０が既定の位置（例えば垂直方向）に置かれ得る。別の実施形態では、プロセス３００から生じる変換画像がユーザインタフェース５００と共にディスプレイ上に表示される場合、制御要素５６５及び５７０が捕捉画像の傾き角を反映するように置かれ得る。このようにして、利用者は制御要素５６５及び５７０を既定の位置に動かすことによって画像を変換前の状態に戻すことができる。
【００７５】
上記に示した実施形態では、捕捉画像が表示フレーム５１０の中心Ｃの周りを回転した。他の実施形態では、捕捉画像が表示フレームの中心ではない回転点の周りを回転しても良い。図８は、本開示の一実施形態による、利用者が選択した回転点を中心に捕捉画像を変換するためのプロセスの一例を示す。図９Ａは、本開示の一実施形態による、図８のプロセスを行う前の画像を表示するユーザインタフェースの一例を示す。図９Ｂは、本開示の一実施形態による、図８のプロセスに従って変換された画像を表示する図９Ａのユーザインタフェースの一例を示す。本明細書では図８、図９Ａ、及び図９Ｂを一緒に説明する。
【００７６】
プロセス８００のブロック８０５で、装置（例えばモバイル装置）のディスプレイ９０５上にユーザインタフェース９０２を表示し、ユーザインタフェース９０２の表示フレーム９１０内に捕捉画像を表示する。図９Ａに示す捕捉画像では、家９２０が表示フレーム９１０の中心Ｃから外れて示されている。
【００７７】
ブロック８１０で、利用者による回転点の選択に関するユーザ入力を受け取る。例えば図９Ａ及び図９Ｂの丸で囲んだ参照番号１で表わすように、利用者は表示フレーム９１０内の点Ｐを触って回転点を特定することができる。一実施形態では、回転点が例えば点や他の基準としてユーザインタフェース上で示され得る。
【００７８】
ブロック８１５で、回転の粒度を示すユーザ入力を受け取る。例えば一実施形態では、図９Ａ及び図９Ｂ内の丸で囲んだ参照番号２で表わすように、利用者が自分で定めた回転点Ｐから粒度選択点まで自分の指をスライドさせることによって回転の粒度が定められる。指が回転点からスライドされた距離に基づいて回転の粒度が計算される。例えば一実施形態では、回転点から離れた粒度選択点は、回転点に近い粒度選択点からもたらされる粒度よりも細かい粒度をもたらす。更に別の実施形態では、回転点からの長い距離は、回転点からの短い距離からもたらされる粒度よりも粗い粒度をもたらす。利用者が自分の指を回転点から遠ざけるようにスライドさせるとき、回転点から利用者の指の位置までの線９２５を実時間で表示することができる。
【００７９】
ブロック８２０で、回転の方向及び程度を示すユーザ入力を受け取る。例えば一実施形態では、図９Ｂの丸で囲んだ参照番号３で表わすように、利用者が自分の指を回転点に対して時計回り又は反時計回りにスライドさせることによって回転方向が定められる。この方向は、指をスライドさせる時計回り又は反時計回りの方向によって定められても良く、例えば時計回りは捕捉画像を時計回りに回転させ、反時計回りは捕捉画像を反時計回りに回転させる。更に、時計回り又は反時計回りの方向に指をどの程度スライドさせるのかによって回転度を定めることができる。
【００８０】
ブロック８２５で、示された回転の粒度及び方向に基づき回転点を中心に捕捉画像を回転させる。図９Ｂに示すように、描かれている向きに画像が回転されるまで、丸で囲んだ参照番号３で表わす点まで利用者の指が反時計回りにスライドされている。
【００８１】
一実施形態では、利用者の指がスライドされるときにディスプレイ上で捕捉画像を回転させる。図示の実施形態では、回転点から粒度選択点までの線９２５が表示されており、この線の長さは、利用者が自分の指を丸で囲んだ参照番号３まで反時計回りの方向にスライドさせるときに、描かれている位置まで回転される場合は一定のままである。
【００８２】
一実施形態では、回転点、粒度選択点、及び回転の方向及び程度を選択する間、利用者は自分の指をずっとディスプレイ上に保つ必要がある。例えば利用者が自分の指をディスプレイから離す場合、利用者はこの情報の選択を繰り返さなければならない。
【００８３】
本明細書でより詳細に解説するように、一実施形態では、回転画像と表示フレームとの間の如何なるスペースもなくすために捕捉画像を回転させながら変倍する。
ソーシャルネットワーキングシステム−実装形態例
図１０は、本開示の一実施形態による、画像を変換するためのシステム１０００の一例のネットワーク図である。システム１０００は、１つ又は複数のユーザ装置１０１０、１つ又は複数の外部システム１０２０、ソーシャルネットワーキングシステム１０３０、及びネットワーク１０５０を含む。一実施形態では、上記の実施形態に関して論じるソーシャルネットワーキングシステムがソーシャルネットワーキングシステム１０３０として実装され得る。例示目的で、図１０に示すシステム１０００の実施形態は単一の外部システム１０２０及び単一のユーザ装置１０１０を含む。しかし、他の実施形態ではシステム１０００が更に多くのユーザ装置１０１０及び更に多くの外部システム１０２０のうちの少なくとも一方を含み得る。特定の実施形態では、ソーシャルネットワーキングシステム１０３０がソーシャルネットワークプロバイダによって運営されるのに対し、外部システム１０２０は別のエンティティによって運営され得る点でソーシャルネットワーキングシステム１０３０から切り離されている。しかし、様々な実施形態において、ソーシャルネットワーキングシステム１０３０及び外部システム１０２０は連動して機能し、ソーシャルネットワーキングシステム１０３０の利用者（又はメンバ）にソーシャルネットワーキングサービスを提供する。この意味で、ソーシャルネットワーキングシステム１０３０は、ソーシャルネットワーキングサービス及びその機能をインターネット経由で利用者に提供するために外部システム１０２０等の他のシステムが使用できるプラットフォーム又はバックボーンを提供する。
【００８４】
ユーザ装置１０１０は、利用者から入力を受け取り、ネットワーク１０５０経由でデータを送受信可能な１つ又は複数の計算装置を含む。一実施形態では、ユーザ装置１０１０が、例えばマイクロソフトウィンドウズ（Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ(登録商標)）互換オペレーティングシステム（ＯＳ）、アップル（Ａｐｐｌｅ）ＯＳ  Ｘ、及びリナックス（Ｌｉｎｕｘ(登録商標)ディストリビューションのうちの少なくとも一つを実行する従来型コンピュータシステムである。別の実施形態では、ユーザ装置１０１０が、スマートフォン、タブレット、携帯情報端末（ＰＤＡ）、携帯電話等、コンピュータの機能性を有する装置であり得る。ユーザ装置１０１０は、ネットワーク１０５０経由で通信するように構成される。ユーザ装置１０１０は、ユーザ装置１０１０の利用者がソーシャルネットワーキングシステム１０３０と対話することを可能にするアプリケーション、例えばブラウザアプリケーションを実行することができる。別の実施形態では、アイオーエス（ｉＯＳ）やアンドロイド（ＡＮＤＲＯＩＤ）等のユーザ装置１０１０のネイティブオペレーティングシステムが提供するアプリケーションプログラミングインタフェース（ＡＰＩ）により、ユーザ装置１０１０がソーシャルネットワーキングシステム１０３０と対話する。ユーザ装置１０１０は、ネットワーク１０５０経由で外部システム１０２０及びソーシャルネットワーキングシステム１０３０と通信するように構成され、ネットワーク１０５０は有線通信システム及び無線通信システムのうちの少なくとも一方を使用するローカルエリアネットワーク及び広域ネットワークのうちの少なくとも一方の任意の組合せを含み得る。
【００８５】
一実施形態では、ネットワーク１０５０が標準の通信技術及びプロトコルを使用する。従ってネットワーク１０５０は、イーサネット、７０２．１１、ＷｉＭＡＸ（ｗｏｒｌｄｗｉｄｅ  ｉｎｔｅｒｏｐｅｒａｂｉｌｉｔｙ  ｆｏｒ  ｍｉｃｒｏｗａｖｅ  ａｃｃｅｓｓ）、３Ｇ、４Ｇ、ＣＤＭＡ、ＧＳＭ(登録商標)、ＬＴＥ、デジタル加入者回線（ＤＳＬ）等の技術を使用するリンクを含み得る。同様に、ネットワーク１０５０上で使用されるネットワーキングプロトコルは、マルチプロトコルラベルスイッチング（ＭＰＬＳ）、伝送制御プロトコル／インターネットプロトコル（ＴＣＰ／ＩＰ）、ユーザデータグラムプロトコル（ＵＤＰ）、ハイパテキスト転送プロトコル（ＨＴＴＰ）、簡易メール転送プロトコル（ＳＭＴＰ）、ファイル転送プロトコル（ＦＴＰ）等を含み得る。ネットワーク１０５０経由でやり取りされるデータは、ハイパテキストマーク付け言語（ＨＴＭＬ）及び拡張可能マーク付け言語（ＸＭＬ）を含む技術及び形式のうちの少なくとも一方を使用して表すことができる。更に、セキュアソケットレイヤ（ＳＳＬ）、トランスポートレイヤセキュリティ（ＴＬＳ）、インターネットプロトコルセキュリティ（ＩＰｓｅｃ）等の従来の暗号化技術を使用し、全ての又は一部のリンクを暗号化することができる。
【００８６】
一実施形態では、ユーザ装置１０１０がブラウザアプリケーション１０１２を使用し、外部システム１０２０及びソーシャルネットワーキングシステム１０３０から受け取られるマーク付け言語ドキュメント１０１４を処理することにより、外部システム１０２０及びソーシャルネットワーキングシステム１０３０のうちの少なくとも一方からのコンテンツを表示することができる。マーク付け言語ドキュメント１０１４は、コンテンツ及びコンテンツのフォーマッティング又は提示について記述する１つ又は複数の命令を識別する。マーク付け言語ドキュメント１０１４内に含まれる命令を実行することにより、ブラウザアプリケーション１０１２が、マーク付け言語ドキュメント１０１４によって記述されるフォーマット又は提示を使用し、識別されたコンテンツを表示する。例えばマーク付け言語ドキュメント１０１４は、外部システム１０２０及びソーシャルネットワーキングシステム１０３０から取得されるテキスト及び画像データのうちの少なくとも一方を含む複数のフレームを有するウェブページを生成して表示するための命令を含む。様々な実施形態において、マーク付け言語ドキュメント１０１４は拡張可能マーク付け言語（ＸＭＬ）データ、拡張可能ハイパテキストマーク付け言語（ＸＨＴＭＬ）データ、又は他のマーク付け言語データを含むデータファイルを含む。更に、マーク付け言語ドキュメント１０１４は、外部システム１０２０とユーザ装置１０１０との間のデータ交換を助けるためのＪＳＯＮ（Ｊａｖａ(登録商標)Ｓｃｒｉｐｔ  Ｏｂｊｅｃｔ  Ｎｏｔａｔｉｏｎ）データ、ＪＳＯＮＰ（ＪＳＯＮ  ｗｉｔｈ  ｐａｄｄｉｎｇ）、及びＪａｖａＳｃｒｉｐｔデータを含み得る。ユーザ装置１０１０上のブラウザアプリケーション１０１２は、ＪａｖａＳｃｒｉｐｔコンパイラを使用してマーク付け言語ドキュメント１０１４を復号することができる。
【００８７】
マーク付け言語ドキュメント１０１４は、ＦＬＡＳＨ（商標）やＵｎｉｔｙ（商標）アプリケーション、ＳｉｌｖｅｒＬｉｇｈｔ（商標）アプリケーションフレームワーク等のアプリケーション又はアプリケーションフレームワークを含み、又はそれらにリンクすることもできる。
【００８８】
一実施形態では、ユーザ装置１０１０は、ユーザ装置１０１０の利用者がソーシャルネットワーキングシステム１０３０にログインしているかどうかを示すデータを含む１つ又は複数のクッキー１０１６も含み、クッキー１０１６は、ソーシャルネットワーキングシステム１０３０からユーザ装置１０１０に伝えられるデータの修正を可能にし得る。
【００８９】
外部システム１０２０は、ネットワーク１０５０を使用してユーザ装置１０１０に伝えられる１つ又は複数のウェブページ１０２２ａ、１０２２ｂを含む１つ又は複数のウェブサーバを含む。外部システム１０２０は、ソーシャルネットワーキングシステム１０３０から切り離されている。例えば、外部システム１０２０は第１のドメインに関連するのに対し、ソーシャルネットワーキングシステム１０３０は別のソーシャルネットワーキングドメインに関連する。外部システム１０２０内に含まれるウェブページ１０２２ａ、１０２２ｂは、コンテンツを識別し、識別されたコンテンツのフォーマッティング又は提示を指定する命令を含むマーク付け言語ドキュメント１０１４を含む。
【００９０】
一実施形態では、モバイル装置１００がユーザ装置１０１０として実装され得る。例えば、ユーザ装置１０１０は、画像捕捉モジュール１０５４及び画像変換モジュール１０５２を含むモバイル装置であり得る。一実施形態では、画像捕捉モジュール１０５４及び画像変換モジュール１０５２が画像捕捉モジュール１１０及び画像変換モジュール１２０のそれぞれとして実装され得る。ユーザ装置１０１０は、運動センサ、カメラ、ディスプレイ、処理装置等の不図示の他の構成要素も含むことができる。ユーザ装置１０１０は、本明細書に記載の画像変換を行うことができる。
【００９１】
ソーシャルネットワーキングシステム１０３０は、複数の利用者を含むソーシャルネットワーク用であり、ソーシャルネットワークの他の利用者と通信し対話する能力をソーシャルネットワークの利用者に提供する１つ又は複数の計算装置を含む。一部の例では、ソーシャルネットワークがグラフ、即ちエッジ及びノードを含むデータ構造によって表わされ得る。これだけに限定されないが、データベース、オブジェクト、クラス、メタエレメント、ファイル、又は他の任意のデータ構造を含む他のデータ構造もソーシャルネットワークを表すために使用され得る。ソーシャルネットワーキングシステム１０３０は、運営者によって運営され、管理され、又は制御され得る。ソーシャルネットワーキングシステム１０３０の運営者は人間、自動化アプリケーション、又はコンテンツを管理し、ポリシを調整し、ソーシャルネットワーキングシステム１０３０内の使用測度を集めるための一連のアプリケーションであり得る。任意の種類の運営者が使用され得る。
【００９２】
利用者はソーシャルネットワーキングシステム１０３０に参加し、自分がつながりをもちたいソーシャルネットワーキングシステム１０３０の他の任意の数の利用者とのつながりを追加することができる。本明細書で使用するとき、「友人」という用語は、利用者がソーシャルネットワーキングシステム１０３０によってつながり、関連、又は関係を形成したソーシャルネットワーキングシステム１０３０の他の任意の利用者を指す。例えば一実施形態では、ソーシャルネットワーキングシステム１０３０内の利用者がソーシャルグラフ内のノードとして表される場合、「友人」という用語は２つのユーザノード間に形成され、それらのノードを直接接続するエッジを指し得る。
【００９３】
つながりは利用者によって明示的に追加されても良く、又は利用者の共通の特徴に基づいて（例えば同じ教育機関の卒業生である利用者）ソーシャルネットワーキングシステム１０３０によって自動で作成されても良い。例えば、第１の利用者が他の特定の利用者を友人にするために明確に選ぶ。ソーシャルネットワーキングシステム１０３０内のつながりは通常は双方向だが、そうでなくても良く、そのため「利用者」及び「友人」という用語は準拠枠に依存する。ソーシャルネットワーキングシステム１０３０の利用者間のつながりは通常は双方向（「二方向」）又は「相互的」だが、単方向又は「一方向」でも良い。例えばボブとジョーがどちらもソーシャルネットワーキングシステム１０３０の利用者であり、互いにつながっている場合、ボブとジョーは互いのつながりである。他方で、ソーシャルネットワーキングシステム１０３０にジョーが伝達するデータを見るためにボブがジョーとつながりをもちたいが、ジョーが相互的なつながりをもちたくない場合、単方向のつながりを確立することができる。利用者間のつながりは直接的なつながりとすることができるが、ソーシャルネットワーキングシステム１０３０の一部の実施形態は、１つ又は複数のつながりのレベル若しくは分離度によってつながりが間接的であることを可能にする。
【００９４】
利用者間のつながりを確立して保持し、利用者間の対話を可能にすることに加え、ソーシャルネットワーキングシステム１０３０は、ソーシャルネットワーキングシステム１０３０によってサポートされる様々な種類のアイテムに対して行動を起こす能力を利用者に提供する。それらのアイテムは、ソーシャルネットワーキングシステム１０３０の利用者が属することができるグループやネットワーク（即ち、人、エンティティ、及び概念のソーシャルネットワーク）、利用者が興味をもつ可能性があるイベント又はカレンダエントリ、利用者がソーシャルネットワーキングシステム１０３０によって使用できるコンピュータベースアプリケーション、ソーシャルネットワーキングシステム１０３０によって又はそれを介して提供されるサービスにより、利用者がアイテムを売買することを可能にする取引、及び利用者がソーシャルネットワーキングシステム１０３０の内外で行うことができる広告との対話を含み得る。これらは利用者がソーシャルネットワーキングシステム１０３０に対して作用できるアイテムのほんの数例であり、他の多くのアイテムがあり得る。利用者は、ソーシャルネットワーキングシステム１０３０内で表示可能な、又はソーシャルネットワーキングシステム１０３０から切り離され、若しくはネットワーク１０５０経由でソーシャルネットワーキングシステム１０３０に結合される外部システム１０２０内で表示可能な如何なるものとも対話することができる。
【００９５】
ソーシャルネットワーキングシステム１０３０は、様々なエンティティを結び付けることもできる。例えばソーシャルネットワーキングシステム１０３０は、利用者がＡＰＩ、ウェブサービス、又は他の通信チャネルによって互いに並びに外部システム１０２０又は他のエンティティと対話することを可能にする。ソーシャルネットワーキングシステム１０３０は、複数のエッジによって互いにつながれる複数のノードを含む「ソーシャルグラフ」を生成して保持する。ソーシャルグラフ内の各ノードは、別のノードに作用可能なエンティティ、及び別のノードによって作用され得るエンティティのうちの少なくとも一方を表し得る。ソーシャルグラフは様々な種類のノードを含み得る。ノードの種類の例には、利用者、非人間エンティティ、コンテンツアイテム、ウェブページ、グループ、活動、メッセージ、概念、及びソーシャルネットワーキングシステム１０３０内のオブジェクトによって表わすことができる他の任意のものが含まれる。ソーシャルグラフ内の２つのノード間のエッジは２つのノード間の特定の種類のつながり又は関連を表すことができ、このつながり又は関連は、ノードの関係又はノードの一方が他方のノードに対して行った行動に起因し得る。一部の事例では、ノード間のエッジに重み付けすることができる。エッジの重みは、ノード間のつながり又は関連の強さ等、エッジに関連する属性を表し得る。様々な種類のエッジに様々な重みを与えることができる。例えば、或る利用者が別の利用者を「好き」になるときに作られるエッジに或る重みを与えることができる一方、利用者が別の利用者と友人になるときに作られるエッジには異なる重みを与えることができる。
【００９６】
一例として、第１の利用者が第２の利用者を友人として識別する場合、第１の利用者を表すノードと第２の利用者を表す第２のノードとをつなぐソーシャルグラフ内のエッジが生成される。様々なノードが互いに関係し又は互いと対話するので、それらの関係及び対話を反映させるためにソーシャルネットワーキングシステム１０３０が様々なノードをつなぐエッジを修正する。
【００９７】
ソーシャルネットワーキングシステム１０３０は、ソーシャルネットワーキングシステム１０３０との利用者の対話を向上させるユーザ生成コンテンツも含む。ユーザ生成コンテンツは、利用者がソーシャルネットワーキングシステム１０３０に追加し、アップロードし、送信し、又は「投稿」することができる如何なるものも含み得る。例えば、利用者がユーザ装置１０１０からソーシャルネットワーキングシステム１０３０に投稿を伝達する。投稿は、状況更新や他のテキストデータ、位置情報、写真等の画像、映像、リンク、音楽、他の同様のデータ及び媒体のうちの少なくとも一つを含み得る。サードパーティによってコンテンツがソーシャルネットワーキングシステム１０３０に追加されても良い。コンテンツ「アイテム」は、ソーシャルネットワーキングシステム１０３０内のオブジェクトとして表わされる。このようにして、ソーシャルネットワーキングシステム１０３０の利用者は、様々な通信チャネルによってテキスト及び様々な種類の媒体のコンテンツアイテムを投稿することにより、互いにやり取りするよう促される。そのようなやり取りは、利用者の互いとの対話を増やし、利用者がソーシャルネットワーキングシステム１０３０と対話する頻度を高める。
【００９８】
ソーシャルネットワーキングシステム１０３０は、ウェブサーバ１０３２、ＡＰＩリクエストサーバ１０３４、ユーザプロファイルストア１０３６、つながりストア１０３８、アクションロガー１０４０、活動ログ１０４２、承認サーバ１０４４、及び画像インポートモジュール１０４６を含む。本発明の一実施形態では、ソーシャルネットワーキングシステム１０３０が様々な用途向けの追加の、更に少ない、又は異なる構成要素を含み得る。システムの詳細を不明瞭にしないために、ネットワークインタフェース、セキュリティメカニズム、ロードバランサ、フェイルオーバサーバ、管理及びネットワーク運用コンソール等の他の構成要素は図示していない。
【００９９】
ユーザプロファイルストア１０３６は、経歴情報、人口統計情報、及び利用者が申告し又はソーシャルネットワーキングシステム１０３０が推論した職歴、学歴、趣味や好み、位置等の他の種類の記述的情報を含むユーザアカウントに関する情報を保持する。各利用者が一意に識別されるように、この情報はユーザプロファイルストア１０３６内に記憶される。ソーシャルネットワーキングシステム１０３０は、様々な利用者間の１つ又は複数のつながりを記述するデータもつながりストア１０３８内に記憶する。つながり情報は、同様の又は共通の職歴、集団帰属関係、趣味、又は学歴を有する利用者を示すことができる。更にソーシャルネットワーキングシステム１０３０は、利用者によって定義される様々な利用者間のつながりを含み、他の利用者と自分との関係を利用者が規定することを可能にする。例えば利用者によって定義されるつながりは、友人、同僚、配偶者等、自身の現実生活の関係に対応した他の利用者との関係を利用者が生成することを可能にする。利用者は予め定められたつながりの種類から選択することができ、又は必要に応じて独自のつながりの種類を定めることができる。非人間エンティティ、バケット、クラスタセンタ、画像、関心事、ページ、外部システム、概念等のソーシャルネットワーキングシステム１０３０内の他のノードとのつながりもつながりストア１０３８内に記憶される。
【０１００】
ソーシャルネットワーキングシステム１０３０は、利用者が対話し得るオブジェクトに関するデータを保持する。このデータを保持するために、ユーザプロファイルストア１０３６及びつながりストア１０３８が、ソーシャルネットワーキングシステム１０３０によって保持される対応する種類のオブジェクトのインスタンスを記憶する。それぞれのオブジェクトタイプは、オブジェクトの種類にふさわしい情報を記憶するのに適した情報フィールドを有する。例えば、ユーザプロファイルストア１０３６は、ユーザアカウント及びユーザアカウントに関する情報を記述するのに適したフィールドを有するデータ構造を含む。特定の種類の新規オブジェクトが作成されると、ソーシャルネットワーキングシステム１０３０が対応する種類の新たなデータ構造を初期設定し、それに一意のオブジェクト識別情報を割り当て、必要に応じてオブジェクトにデータを追加し始める。これは、例えば利用者がソーシャルネットワーキングシステム１０３０の利用者になり、ソーシャルネットワーキングシステム１０３０がユーザプロファイルストア１０３６内にユーザプロファイルの新たなインスタンスを生成し、ユーザアカウントに一意の識別情報を割り当て、利用者が提供する情報を用いてユーザアカウントのフィールドにデータ投入し始めるときに起こり得る。
【０１０１】
つながりストア１０３８は、利用者の他の利用者とのつながり、外部システム１０２０とのつながり、又は他のエンティティとのつながりを記述するのに適したデータ構造を含む。つながりストア１０３８は、つながりの種類を利用者のつながりに関連付けることもでき、それを利用者のプライバシ設定と共に使用して利用者に関する情報へのアクセスを調整することができる。本発明の一実施形態では、ユーザプロファイルストア１０３６及びつながりストア１０３８が連合データベースとして実装され得る。
【０１０２】
つながりストア１０３８、ユーザプロファイルストア１０３６、及び活動ログ１０４２内に記憶されるデータは、ソーシャルネットワーキングシステム１０３０が、様々なオブジェクトを識別するノードと、様々なオブジェクト間の関係を明らかにするためにノードをつなぐエッジとを使用するソーシャルグラフを生成することを可能にする。例えば、第１の利用者がソーシャルネットワーキングシステム１０３０内で第２の利用者とつながりを確立する場合、ユーザプロファイルストア１０３６からの第１の利用者及び第２の利用者のユーザアカウントがソーシャルグラフ内のノードとして働き得る。つながりストア１０３８が記憶する第１の利用者と第２の利用者との間のつながりは、第１の利用者及び第２の利用者に関連するノード間のエッジである。この例を続けると、第２の利用者はソーシャルネットワーキングシステム１０３０内で第１の利用者にメッセージを送ることができる。記憶され得るこのメッセージ送信行動は、第１の利用者及び第２の利用者を表すソーシャルグラフ内の２つのノード間の別のエッジである。更に、メッセージ自体を識別し、第１の利用者及び第２の利用者を表すノードにつながる別のノードとしてソーシャルグラフ内に含めても良い。
【０１０３】
別の例では、ソーシャルネットワーキングシステム１０３０が保持する画像内（或いはソーシャルネットワーキングシステム１０３０の外部の別のシステムが保持する画像内）で第１の利用者が第２の利用者をタグ付けすることができる。画像自体がソーシャルネットワーキングシステム１０３０内のノードとして表されても良い。このタグ付け行動は、第１の利用者と第２の利用者との間のエッジを作ると共に、利用者それぞれと画像との間のエッジも作ることができ、画像もソーシャルグラフ内のノードである。更に別の例では、利用者がイベントに参加したことを確認する場合、その利用者及びイベントはユーザプロファイルストア１０３６から得られるノードであり、イベントの出席は活動ログ１０４２から取得され得るノード間のエッジである。ソーシャルグラフを生成して保持することにより、ソーシャルネットワーキングシステム１０３０は多くの異なる種類のオブジェクト、並びにそれらのオブジェクト間の対話及びつながりを記述するデータを含み、社会的に関係する情報の豊かな情報源を提供する。
【０１０４】
ウェブサーバ１０３２は、ネットワーク１０５０経由でソーシャルネットワーキングシステム１０３０を１つ若しくは複数のユーザ装置１０１０及び１つ若しくは複数の外部システム１０２０のうちの少なくとも一方にリンクする。ウェブサーバ１０３２は、ウェブページ並びにＪａｖａ、ＪａｖａＳｃｒｉｐｔ、Ｆｌａｓｈ、ＸＭＬ等の他のウェブ関連コンテンツを供給する。ウェブサーバ１０３２は、ソーシャルネットワーキングシステム１０３０と１つ又は複数のユーザ装置１０１０との間のメッセージの受信及びルーティング用のメールサーバ又は他のメッセージング機能を含み得る。メッセージは、インスタントメッセージ、待ち行列メッセージ（例えば電子メール）、テキストやＳＭＳメッセージ、又は他の任意の適切なメッセージング形式とすることができる。
【０１０５】
ＡＰＩリクエストサーバ１０３４は、１つ又は複数のＡＰＩ関数を呼び出すことにより、１つ又は複数の外部システム１０２０及びユーザ装置１０１０がソーシャルネットワーキングシステム１０３０からアクセス情報を呼び出すことを可能にする。ＡＰＩリクエストサーバ１０３４は、ＡＰＩを呼び出すことにより、外部システム１０２０がソーシャルネットワーキングシステム１０３０に情報を送ることも可能にし得る。一実施形態では、外部システム１０２０がネットワーク１０５０経由でソーシャルネットワーキングシステム１０３０にＡＰＩリクエストを送り、ＡＰＩリクエストサーバ１０３４がそのＡＰＩリクエストを受け取る。ＡＰＩリクエストサーバ１０３４は、ＡＰＩリクエストに関連するＡＰＩを呼び出すことでリクエストを処理して適切な応答を生成し、その応答は、ＡＰＩリクエストサーバ１０３４がネットワーク１０５０経由で外部システム１０２０に伝達する。例えばＡＰＩリクエストに応答し、ＡＰＩリクエストサーバ１０３４は、外部システム１０２０にログインしている利用者のつながり等、利用者に関連するデータを集め、集めたデータを外部システム１０２０に伝達する。別の実施形態では、ユーザ装置１０１０が、外部システム１０２０と同じ方法でＡＰＩによりソーシャルネットワーキングシステム１０３０と通信する。
【０１０６】
アクションロガー１０４０は、ソーシャルネットワーキングシステム１０３０内外の利用者の行動に関する通信をウェブサーバ１０３２から受け取ることができる。アクションロガー１０４０は、利用者の行動に関する情報で活動ログ１０４２にデータ投入し、ソーシャルネットワーキングシステム１０３０の内外で利用者が行った様々な行動をソーシャルネットワーキングシステム１０３０が知ることを可能にする。活動ログ１０４２又は同様のデータベース若しくは他のデータリポジトリ内に保持される情報により、特定の利用者がソーシャルネットワーキングシステム１０３０上の別のノードに対して行う如何なる行動も各ユーザアカウントに関連付けることができる。ソーシャルネットワーキングシステム１０３０内で利用者が行う、識別され、記憶される行動の例には、例えば別の利用者へのつながりを追加すること、別の利用者にメッセージを送ること、別の利用者からのメッセージを読むこと、別の利用者に関連するコンテンツを閲覧すること、別の利用者が投稿したイベントに参加すること、画像を投稿すること、画像の投稿を試みること、又は別の利用者若しくは別のオブジェクトと対話する他の行動が含まれ得る。ソーシャルネットワーキングシステム１０３０内で利用者が行動を起こすと、その行動が活動ログ１０４２内に記録される。一実施形態では、ソーシャルネットワーキングシステム１０３０がエントリのデータベースとして活動ログ１０４２を保持する。ソーシャルネットワーキングシステム１０３０内で行動が起こされると、その行動のエントリが活動ログ１０４２に追加される。活動ログ１０４２は行動ログと呼ぶこともできる。
【０１０７】
更に、利用者の行動は、ソーシャルネットワーキングシステム１０３０とは別の外部システム１０２０等、ソーシャルネットワーキングシステム１０３０の外部のエンティティの中で生じる概念及び行動に関連し得る。例えばアクションロガー１０４０は、外部システム１０２０との利用者の対話を記述するデータをウェブサーバ１０３２から受け取ることができる。この例では、外部システム１０２０がソーシャルグラフ内の構造化された行動及びオブジェクトに従って利用者の対話を報告する。
【０１０８】
利用者が外部システム１０２０と対話する他の行動例には、利用者が外部システム１０２０又は別のエンティティへの興味を示すこと、利用者が外部システム１０２０又は外部システム１０２０内のウェブページ１０２２ａについて論じるコメントをソーシャルネットワーキングシステム１０３０に投稿すること、利用者が外部システム１０２０に関連する統一資源ロケータ（ＵＲＬ）又は他の識別情報をソーシャルネットワーキングシステム１０３０に投稿すること、利用者が外部システム１０２０に関連するイベントに参加すること、又は外部システム１０２０に関係する利用者による他の任意の行動が含まれる。従って、活動ログ１０４２は、ソーシャルネットワーキングシステム１０３０の利用者とソーシャルネットワーキングシステム１０３０とは別の外部システム１０２０との間の対話を表す行動を含み得る。
【０１０９】
承認サーバ１０４４は、ソーシャルネットワーキングシステム１０３０の利用者の１つ又は複数のプライバシ設定を強化する。利用者のプライバシ設定は、利用者に関連する特定の情報がどのように共有され得るのかを決める。プライバシ設定は、利用者に関連する特定の情報を指定すること、及びその情報が共有され得るエンティティを指定することを含む。情報が共有され得るエンティティの例には、他の利用者、アプリケーション、外部システム１０２０、又は潜在的に情報にアクセス可能な任意のエンティティが含まれ得る。利用者が共有可能な情報には、プロフィール写真、利用者に関連する電話番号、利用者のつながり等のユーザアカウント情報、つながりを追加すること、ユーザプロファイル情報を変更すること等の利用者が行う行動が含まれる。
【０１１０】
プライバシ設定の指定は、様々な粒度レベルで行うことができる。例えばプライバシ設定は、他の利用者と共有する特定の情報を識別することができ、プライバシ設定は職場の電話番号や、プロフィール写真、自宅の電話番号、地位を含む個人情報等の１組の特定の関連情報を識別する。或いはプライバシ設定は、利用者に関連する全情報に適用されても良い。特定の情報にアクセス可能な１組のエンティティの指定も、様々な粒度レベルで規定することができる。情報が共有され得る様々なエンティティの組には、例えば利用者の全ての友人、友人の全ての友人、全てのアプリケーション、又は全ての外部システム１０２０が含まれ得る。或る実施形態は、エンティティの列挙を含めるように１組のエンティティを指定することを可能にする。例えば利用者は、特定の情報にアクセスすることを許可された外部システム１０２０の一覧を提供することができる。別の実施形態は指定が、情報にアクセスすることを許可されていない例外と共に１組のエンティティを含むことを可能にする。例えば利用者は、外部システム１０２０が利用者の仕事情報にアクセスすることを可能にし得るが、仕事情報にアクセスすることを許可されない外部システム１０２０の一覧を規定しても良い。或る実施形態では、特定の情報にアクセスすることを許可されていない例外の一覧を「ブロックリスト」と呼ぶ。利用者が指定するブロックリストに属する外部システム１０２０は、プライバシ設定内で規定される情報にアクセスするのを妨げられる。情報を指定する粒度、及び情報が共有されるエンティティを指定する粒度の様々な組合せがあり得る。例えば、全ての個人情報が友人と共有され得るのに対し、全ての仕事情報が友人の友人と共有され得る。
【０１１１】
承認サーバ１０４４は、利用者に関連する特定の情報が利用者の友人、外部システム１０２０、並びに／又は他のアプリケーション及びエンティティによってアクセスされ得るのかどうかを判定するためのロジックを含む。外部システム１０２０は、利用者の職場の電話番号等、より個人的且つ慎重に扱うべき利用者の情報にアクセスするために承認サーバ１０４４の承認を必要とし得る。利用者のプライバシ設定に基づき、承認サーバ１０４４は、利用者が起こした行動に関する情報を含む利用者に関連する情報に、別の利用者、外部システム１０２０、アプリケーション、又は別のエンティティがアクセスすることを許可されているかどうかを判定する。
【０１１２】
ソーシャルネットワーキングシステム１０３０は、画像モジュール１０４６を含むことができる。画像モジュール１０４６は、ユーザ装置１０１０と通信してユーザ装置からソーシャルネットワーキングシステム１０３０に１つ又は複数の画像をアップロードすることができる。例えば画像モジュール１０４６は、ユーザ装置１０１０が捕捉して変換した変換画像を受け取ることができる。更に、画像モジュール１０４６は、画像変換モジュール１０５２の機能を実装することができる。一実施形態では、画像モジュール１０４６及び画像変換モジュール１０５２の適切な組合せにより、本明細書に記載の画像変換技法が実行され得る。例えば、本明細書で論じたようにモバイル装置１００が提供する運動センサデータ及び他の情報に基づき、傾いた画像用の回転角の計算が画像モジュール１０４６、画像変換モジュール１０５２、又はその両方によって行われ得る。
【０１１３】
上記のプロセス及び機能は、多岐にわたるマシン及びコンピュータシステムアーキテクチャによって、及び様々なネットワーク及び計算環境内で実装され得る。図１１は、本発明の一実施形態による、本明細書に記載の実施形態の１つ又は複数を実装するために使用され得るコンピュータシステム１１００の一例を示す。例えば、コンピュータシステム１１００は、図１０に示すユーザ装置１０１０及びモバイル装置１００のうちの少なくとも一方を表し得る。
【０１１４】
コンピュータシステム１１００は、本明細書で論じたプロセス及び機能をコンピュータシステム１１００に実行させる命令集合を含む。コンピュータシステム１１００は、他のマシンに接続（例えばネットワーク接続）され得る。ネットワーク化された導入形態では、コンピュータシステム１１００が、クライアント−サーバネットワーク環境内のサーバマシン若しくはクライアントマシンとして、又はピアツーピア（若しくは分散）ネットワーク環境内のピアマシンとして機能し得る。本発明の一実施形態では、コンピュータシステム１１００がソーシャルネットワーキングシステム１０３０、ユーザ装置１０１０、及び外部システム１０２０、又はその構成要素であり得る。本発明の一実施形態では、コンピュータシステム１１００が、ソーシャルネットワーキングシステム１０３０の全て又は一部を構成する多くのサーバのうちの１つであり得る。
【０１１５】
コンピュータシステム１１００は、プロセッサ１１０２、キャッシュ１１０４、並びに本明細書に記載のプロセス及び機能を対象とするコンピュータ可読媒体上に記憶される１つ又は複数の実行可能モジュール及びドライバを含む。更にコンピュータシステム１１００は、高性能入出力（Ｉ／Ｏ）バス１１０６及び標準Ｉ／Ｏバス１１０８を含む。ホストブリッジ１１１０がプロセッサ１１０２を高性能Ｉ／Ｏバス１１０６に結合する一方、Ｉ／Ｏバスブリッジ１１１２が２つのバス１１０６及び１１０８を互いに結合する。システムメモリ１１１４及び１つ又は複数のネットワークインタフェース１１１６が高性能Ｉ／Ｏバス１１０６に結合する。コンピュータシステム１１００は、ビデオメモリ及びビデオメモリに結合される表示装置（不図示）を更に含み得る。大容量記憶域１１１８及びＩ／Ｏポート１１２０が標準Ｉ／Ｏバス１１０８に結合する。コンピュータシステム１１００は、標準Ｉ／Ｏバス１１０８に結合されるキーボード及びポインティングデバイス、表示装置、又は他の入出力装置（不図示）を任意選択的に含み得る。集合的に、これらの要素は、これだけに限定されないが、カリフォルニア州サンタクララ（Ｓａｎｔａ  Ｃｌａｒａ，Ｃａｌｉｆｏｒｎｉａ）のインテル株式会社（Ｉｎｔｅｌ  Ｃｏｒｐｏｒａｔｉｏｎ）が製造するｘ８６互換プロセッサ、カリフォルニア州サニーヴェール（Ｓｕｎｎｙｖａｌｅ，Ｃａｌｉｆｏｒｎｉａ）のアドバンストマイクロデバイセズ（ＡＭＤ）社（Ａｄｖａｎｃｅｄ  Ｍｉｃｒｏ  Ｄｅｖｉｃｅｓ（ＡＭＤ），Ｉｎｃ．）が製造するｘ８６互換プロセッサ、並びに他の任意の適切なプロセッサを含む広範なカテゴリのコンピュータハードウェアシステムを表すことを意図する。
【０１１６】
オペレーティングシステムは、ソフトウェアアプリケーション（不図示）との間のデータの入出力を含む、コンピュータシステム１１００の動作を管理し制御する。オペレーティングシステムは、システム上で実行されるソフトウェアアプリケーションとシステムのハードウェアコンポーネントとの間のインタフェースを提供する。リナックス（ＬＩＮＵＸ）オペレーティングシステム、カリフォルニア州クパチーノ（Ｃｕｐｅｒｔｉｎｏ，Ｃａｌｉｆ．）のアップルコンピュータインコーポレイテッド（Ａｐｐｌｅ  Ｃｏｍｐｕｔｅｒ  Ｉｎｃ．）から入手可能なアップルマッキントッシュ(登録商標)（Ａｐｐｌｅ  Ｍａｃｉｎｔｏｓｈ）オペレーティングシステム、ユニックス（ＵＮＩＸ(登録商標)）オペレーティングシステム、マイクロソフト（登録商標）ウィンドウズ（登録商標）オペレーティングシステム、ＢＳＤオペレーティングシステム等、任意の適切なオペレーティングシステムを使用することができる。他の実装形態もあり得る。
【０１１７】
コンピュータシステム１１００の要素について以下でより詳細に説明する。具体的には、ネットワークインタフェース１１１６は、コンピュータシステム１１００とイーサネット(登録商標)（Ｅｔｈｅｒｎｅｔ）（例えばＩＥＥＥ  ８０２．３）ネットワークやバックプレーン等の広範なネットワークの何れかとの間の通信を可能にする。大容量記憶域１１１８は、上記に示したそれぞれの計算システムによって実施される上述のプロセス及び機能を実行するためのデータ及びプログラム命令用の永久記憶域を提供するのに対し、システムメモリ１１１４（例えばＤＲＡＭ）はプロセッサ１１０２によって実行されるときのデータ及びプログラム命令用の一時記憶域を提供する。Ｉ／Ｏポート１１２０は、コンピュータシステム１１００に結合することができる追加の周辺装置との間の通信を可能にする１つ又は複数のシリアル通信ポート及び１つ又は複数のパラレル通信ポートのうちの少なくとも一方であり得る。
【０１１８】
コンピュータシステム１１００は様々なシステムアーキテクチャを含むことができ、コンピュータシステム１１００の様々な構成要素の位置を変えても良い。例えば、キャッシュ１１０４はプロセッサ１１０２と共にチップ上に実装しても良い。或いは、キャッシュ１１０４及びプロセッサ１１０２が「プロセッサモジュール」として一緒にパックされても良く、プロセッサ１１０２は「プロセッサコア」と呼ばれる。更に、本発明の特定の実施形態は上記の構成要素の全てを必要としなくても含まなくても良い。例えば、標準Ｉ／Ｏバス１１０８に結合される周辺装置が高性能Ｉ／Ｏバス１１０６に結合しても良い。更に一部の実施形態では、バスが１つしかなくても良く、コンピュータシステム１１００の構成要素が１つのバスに結合される。更に、コンピュータシステム１１００は、追加のプロセッサ、記憶装置、メモリ等の追加の構成要素を含み得る。
【０１１９】
概して、本明細書に記載したプロセス及び機能は、オペレーティングシステムの一部、特定のアプリケーション、構成要素、プログラム、オブジェクト、モジュール、又は「プログラム」と呼ばれる一連の命令として実装され得る。例えば、本明細書に記載した特定のプロセスを実行するために１つ又は複数のプログラムを使用することができる。プログラムは、コンピュータシステム１１００内の様々なメモリ及び記憶装置内の１つ又は複数の命令を概して含み、それらの命令は１個又は複数個のプロセッサによって読み取られ実行されるとき、本明細書に記載したプロセス及び機能を実行するための操作をコンピュータシステム１１００に行わせる。本明細書に記載したプロセス及び機能は、ソフトウェア、ファームウェア、ハードウェア（例えば特定用途向け集積回路）、又はその任意の組合せによって実装され得る。
【０１２０】
一実装形態では、本明細書に記載したプロセス及び機能が、分散コンピューティング環境内でコンピュータシステム１１００によって個々に又は集合的に実行される一連の実行可能モジュールとして実装される。上記のモジュールは、ハードウェア、コンピュータ可読媒体（又は機械可読媒体）上に記憶される実行可能モジュール、又はその両方の組合せによって実現され得る。例えばモジュールは、プロセッサ１１０２等、ハードウェアシステム内のプロセッサによって実行される複数の又は一連の命令を含み得る。最初、一連の命令は大容量記憶域１１１８等の記憶装置上に記憶され得る。但し、一連の命令は如何なる適切なコンピュータ可読記憶媒体上にも記憶することができる。更に、一連の命令はローカルに記憶する必要はなく、ネットワークインタフェース１１１６を介してネットワーク上のサーバ等の遠隔記憶装置から受け取られ得る。命令は大容量記憶域１１１８等の記憶装置からシステムメモリ１１１４内にコピーされ、その後プロセッサ１１０２によってアクセスされ実行される。
【０１２１】
コンピュータ可読媒体の例には、これだけに限定されないが、揮発性メモリデバイスや不揮発性メモリデバイス等の記録可能型媒体、ソリッドステートメモリ、フロッピや他のリムーバブルディスク、ハードディスクドライブ、磁気媒体、光学ディスク（例えばコンパクトディスク読取専用メモリ（ＣＤ  ＲＯＭ）やデジタル多用途ディスク（ＤＶＤ））、他の同様の非一時的（又は一時的）有形（又は無形）記憶媒体、又は本明細書に記載したプロセス及び機能のどれか１つ若しくは複数を実行するためにコンピュータシステム１１００が実行するための一連の命令を記憶し、符号化し、若しくは搬送するのに適した任意の種類の媒体が含まれる。
【０１２２】
説明の完全な理解を与えるために数多くの具体的詳細を説明目的で記載してきた。但し、それらの具体的詳細なしに本開示の実施形態を実施できることが当業者には明らかである。一部の例では、説明を不明瞭にするのを避けるためにモジュール、構造、プロセス、機能、及び装置をブロック図形式で示している。他の例では、データ及びロジックの流れを表すために機能ブロック図及び流れ図を示す。ブロック図及び流れ図の構成要素（例えばモジュール、ブロック、構造、装置、機能等）は、本明細書で明確に説明し図示したのと異なる方法で様々に組み合わせ、分離し、除去し、並べ直し、置換することができる。
【０１２３】
本明細書での「或る実施形態」、「一実施形態」、「他の実施形態」、「一連の実施形態」等への言及は、実施形態に関して説明した特定の機能、設計、構造、又は特性が本開示の少なくとも１つの実施形態に含まれることを意味する。本明細書の様々な箇所で出現する例えば「或る実施形態では」や「一実施形態では」という語句は、必ずしも全て同じ実施形態を指すものではなく、他の実施形態と相互排除的な別の実施形態又は代替的実施形態でもない。更に、「実施形態」等と明確に言及していようがいまいが様々な機能について説明しており、それらの機能は一部の実施形態では様々に組み合わせ、含めることができるが、他の実施形態では様々に省略されることもある。同様に、一部の実施形態では選択又は要件となり得るが他の実施形態では選択又は要件にならない様々な機能についても説明した。
【０１２４】
本明細書で使用した言語は読み易さ及び指導上の目的で主に選択しており、本発明の主題を線引きし又は制限するために選択されていない場合がある。従って、本発明の範囲はこの詳細な説明によってではなく、むしろ本明細書に基づく応用例について生じる任意の請求項によって限定されることを意図する。よって本発明の実施形態についての開示は、添付の特許請求の範囲の中で規定する本発明の範囲の限定ではなく例示であることを意図する。
【図１】
0006412129.tif 000002
【図２】
0006412129.tif 000003
【図３】
0006412129.tif 000004
【図４Ａ】
0006412129.tif 000005
【図４Ｂ】
0006412129.tif 000006
【図４Ｃ】
0006412129.tif 000007
【図５Ａ】
0006412129.tif 000008
【図５Ｂ】
0006412129.tif 000009
【図６Ａ】
0006412129.tif 000010
【図６Ｂ】
0006412129.tif 000011
【図７】
0006412129.tif 000012
【図８】
0006412129.tif 000013
【図９Ａ】
0006412129.tif 000014
【図９Ｂ】
0006412129.tif 000015
【図１０】
0006412129.tif 000016
【図１１】
0006412129.tif 000017