【文献】
平井敬吾, 外1名,画像に付属するテキストのクラスタリングを用いた画像の類似性抽出とその評価,電子情報通信学会技術研究報告,日本,社団法人電子情報通信学会,2003年 7月11日,Vol.103, No.206,p.29-34
(58)【調査した分野】(Int.Cl.,DB名)
前記二つ以上の写真が日時に関連付けられており、且つ、前記二つ以上の写真の前記日時の差が閾値未満の場合に、前記二つ以上の写真は、より大きな写真集合体から選択される、請求項1から請求項4のいずれか1項に記載の方法。
前記少なくとも一つのぼかし係数と、前記写真に関連づけられた日時、シャッタースピード及び焦点距離の少なくとも一つから得られた重み係数とを乗算するステップを、更に含む、請求項7に記載の方法。
前記rO及び前記rUのうちの少なくとも一方を判定するステップは、前記比率と、前記写真に関連付けられた日時から得られた重み係数とを乗算するステップを、更に含む、請求項9に記載の方法。
【発明を実施するための形態】
【0007】
以下、本技術の様々な例の理解を助けるため、具体的に詳細を説明する。当業者であれば、このように多くの詳細がなくても、本技術を実施できることを理解するであろう。本技術の例の説明を不必要に不明瞭にすることを避けるために、詳細に又は全く、構造及び機能を示していなかったり、説明していない例示もある。以下に示す説明で使用する用語は、本技術の特定の例の詳細説明と組み合わせて用いている場合であっても、最も広く合理的な方法で解釈されることを意図している。以下において、特定の語が強調されるとしても、用語が制限的に解釈されることを意図する場合は、「詳細な説明(発明を実施するための形態)」中で定義されるように、明白かつ明確に定義される。
【0008】
明細書及び特許請求の範囲中の「含む」及び「含んでいる」等の語は、文脈で明らかに求められていない限り、排他的又は余地のない意味とは逆に、包括的な意味で、すなわち、「含んでいるがこれらに限定されない」という意味で解釈されるべきである。ここで用いられるように、「接続された」、「結合された」又はそれの変形語は、二つ以上の要素間の直接的又は間接的な連結又は結合を意味する。要素間の接続部の結合は、物理的、論理的、又はそれらの組合せであってもよい。また、「ここで」、「上で」、「下で」及び類似の趣旨の語が、本出願で用いられた場合、本出願の特定部分ではなく、全体を参照するものとする。文脈が許す場合は、複数形で使う語が単数形も含むことができ、また、単数形で使う語が複数形を含むこともできる。2つ以上の要素に関する「又は」の語は、以下の語の解釈、すなわち、要素のいずれか、要素の全て、及び一以上の要素の任意の組合せ、の全てを含む。
【0009】
特定の複数の要素が、別々の図において、大文字の同じ文字列で表されているが、番号は異なっている。ここで、番号が付されない大文字の文字列が参照される場合、どの文字列も概して同じものであり、大文字の同じ文字列のいずれかの要素に言及していると理解されるべきである。ただし、それら要素が別々の実施形態で現れる場合、これらの文字列は、潜在的に、コンピュータ装置に基づいた差異を有する。
【0010】
図1は、本件で示す実施形態に係るコンピュータ装置の例を示すネットワーク及び装置の図である。
図1において、クライアント装置1100は、インターネットのようなネットワーク150に接続されている。ネットワーク150は、コンピュータ、コンピュータ間のネットワーク接続部、及びネットワーク接続部を介してコンピュータ間での通信を可能にするソフトウェアルーチンを含む。
【0011】
また、
図1に示されているモバイルクライアント装置1300は、ネットワーク150及びクライアント装置1100に接続されている。ここで、クライアント装置1100及びモバイルクライアント装置1330は、どちらも、番号のない「クライアント装置」と言及される。また、ここででは、これら二つの装置は、
図1において個別の装置として示されているが、どちらも、同等のコンピュータ装置を表す可能性があると理解されるべきである。
図1は、ユーザが、「フォトグラフ」1205のような写真を撮るために、モバイルクライアント装置1330を使えること、及び、そのユーザが、クライアント装置1100及びモバイルクライアント装置1300との間の直接接続により、及び/又は、ネットワーク150を介して、「フォトグラフ」1205をクライアント装置1100へ送信できることを示すための図である。モバイルクライアント装置1300(及びクライアント装置1100)は、「フォトグラフ」1205を、GSサーバ900及び/又は外部サーバ140(後述する)へも送信することができる。
【0012】
図1は、ネットワーク150に接続中のGSサーバ900を示している。
図9及び
図10は、データ格納部1000を含むGSサーバ900を示している。同様に、
図11は、データ格納部1200を含むクライアント装置を示している。ここでは、構成要素を、一方では、GSサーバ900又はクライアント装置に接続するものとして、他方では、データ格納部1000又はデータ格納部1200に接続するものとして、述べる。二つの構成要素又は二つの構成要素の一方を介して、このような接続が行われる可能性があると理解されるべきである(例えば、コンピュータ装置がGSサーバ900に接続する又はデータを送るという記述は、そのコンピュータ装置がGSサーバ900及び/又はデータ格納部1000に接続する又はデータを送ることをいうと、理解されるべきである)。ここでは、「データベース」と言う場合は、「データ格納部」と同等であると理解されるべきである。また、
図9及び
図11では、一つの物理的ユニットに統合された構成要素を示しているが、サーバ及びデータベースは、共通の(又は個別の)物理的ハードウェア、及び共通の(又は個別の)論理的プロセッサ及びメモリ要素によって提供されていてもよい。GSサーバ900及びデータベース1000は、図示されているような個別の装置ではなく、クライアント装置又はクライアント装置内部の構成要素にしてもよい。
【0013】
ここでは、GSサーバ900及びクライアント装置が、同等のコンピュータ装置であることも理解されるべきである。GSサーバ900はクライアント装置と分離した装置として示されているが、これは、ここで述べるシステム及び方法が、クライアント・サーバ・アーキテクチャで実行できることを示している。クライアント・サーバ・アーキテクチャでは、クライアント装置又は外部サーバ140が、「フォトグラフ」をGSサーバ900へ送信し、GSサーバは、グループを作成し、その「フォトグループ」1010となる「フォトグラフ」を選択する。その後、「フォトグループ」は、クライアント装置又は外部サーバ140へ送信され、及び/又は、クライアント装置又は外部サーバ140により(例えば、「フォトグループ」1210として)表示される。
【0014】
図1は、ネットワーク150に接続された外部サーバ140も示す。外部サーバ140は、例えば、オンラインサービスであり、グーグル社のPICASA(登録商標)、フェースブック社のFACEBOOK(登録商標)などのように、写真を格納して整理するサービスや、顔の分析を行って、その分析結果を顔データ1055として、例えばGSサーバ900へ送信するサービス等である。ここでは、このようなサービスを、「オンラインサービス」という。「フォトグラフ」1005は、クライアント装置及び/又は外部サーバ140により、GSサーバ900へ送信することができる。GSサーバ900への「フォトグラフ」1005の送信は、GSサーバ900が外部サーバ140に接続し、GSサーバ900の真正証明及び承認用の資格情報を示した後、「フォトグラフ」1005をダウンロードし、続いて、外部サーバ140又はクライアント装置が、GSサーバ900に「フォトグラフ」が利用可能であることを知らせる、という手順を踏んでもよい。クライアント装置によるGSサーバ900への「フォトグラフ」の送信は、後述する。「フォトグラフ」、「フォトグループ」、及び「フォトメタデータ」は、GSサーバ900及びクライアント装置間で送信されるものとして述べる。外部サーバ140はクライアント装置と同等の役割をすること、及び、GSサーバ900は、クライアント装置との通信の代わりに又はクライアント装置との通信に加えて外部サーバ140と通信してもよいことが、理解されるべきである。
【0015】
図1のコンピュータ装置は、
図9及び
図11(並びに
図10及び
図12)において、フォトアプリケーション1140及びグルーパーセレクタ200のような、ルーチンやアプリケーションのデータ群を含むものとして示されている。ウェブサーバやウェブブラウザのようなルーチンの追加的なデータ群も、これらの装置に格納され実行されてもよい。
図1のコンピュータ装置は、
図9及び
図11(並びに
図10及び
図12)において、「フォトグラフ」(1005及び1205)、「フォトグループ」(1010及び1210)、及び「フォトメタデータ」(1015及び1300)(これらは、全ての要素を網羅的に列挙したものではない)のような、ルーチンにより使用されるデータ群を含むものとして示されている。ルーチンにより使用されるデータ群は、列内のセルや、デジタル文書又はファイルにおいて定義された構造中の他の値から分離された値により表すことができる。ここで、個々のレコード又はエントリと称されていても、そのレコードは、一以上のデータベースエントリを含んでもよい。データベースエントリは、復元、エンコード番号、数値演算子、バイナリ値、論理値、文字、文字列演算子、結合、条件付き論理、テスト等であってもよい。ブラウザルーチンは、例えば、ウェブサーバルーチンを介して(ウェブサーバルーチンは、ウェブページ形式で、データ及び情報を供給することができる)、GSサーバ900と通信するためのインターフェースを提供することができる。ブラウザ及びウェブサーバは、ユーザインターフェース示し、一般的にユーザインターフェースがルーチンを実行できることを示すように作られている。ブラウザ及びウェブサーバは、クライアント装置のユーザインターフェースへ情報を供給又は表示する同等のルーチンで置き換えられてもよい。ログイン資格情報及びユーザプロフィールのローカルインスタンスは、クライアント装置、GSサーバ900及び外部サーバ140に格納されてもよいし、それら装置及びサーバからアクセスしやすいようしてもよい。
【0016】
他の実施例においては、いずれかのコンピュータが、データ群の一部を有していなくてもよい。例えば、モバイルクライアント装置1300が、(より一般的な汎用コンピュータ装置の代わりに)比較的限定された用途のデジタルカメラである場合、モバイルクライアント装置1300は、例えば、「フォトグループ」のようなデータ群を有していなくてもよい。さらに/あるいは、モバイルクライアント装置1300のフォトアプリケーションは、(モバイルではない)クライアント装置1100に実装されているフォトアプリケーションの全ての機能を持っていなくてもよい。
【0017】
グルーパーセレクタ(200)は、類似性によって「フォトグラフ」を「フォトグループ」にグループ化し、「フォトグループ」の中で最良の写真を識別するための基準に合う「フォトグラフ」を選択するソフトウェアルーチンである。なお、グルーパーセレクタは、
図2及び
図3(並びにこれらの図の詳細を示す後続の図)と関連して、更に述べる。
【0018】
フォトアプリケーションは、「フォトグラフ」のような写真をインポート、保存及び整理するためのアプリケーションであってもよい。フォトアプリケーションの例としては、アップル社のIPHOTO(登録商標)及びグーグル社のPICASA(登録商標)が挙げられる。
【0019】
「フォトグラフ」は、デジタル処理で符号化された写真であり、例えば、「raw」画像ファイル、TIFF、JPEG、GIF、BMP、PNG、RGBE、IFF-RGFX、CGM、Gerber Format、SVG、及び他のデジタル画像形式といった、デジタル形式で符号化された写真を含むデータベースエントリを含んでもよい。「フォトグラフ」は、データベースにおいて「フォトグループ」と関連づけられていてもよいし、メタデータを含んでいたり、メタデータと関連付けられていてもよい。
【0020】
メタデータは、カメラ設定、日時(ここでは、
図10及び
図12において時刻1025及び1400として表されている「タイムスタンプ」のことをいう)、シャッタースピード(シャッタースピード0及び1230)、露光(例えばfストップなど)、画像サイズ(画素数、距離単位又はデータ量)、画像方向(例えば縦方向又は横方向など)、倍率、焦点距離(焦点距離1020及び1220)、圧縮、カメラ名、カメラタイプ、写真に関連付けられた見出し又は他の文字列、及び場所(緯度及び経度並びにジオタギング手順で使用される他の情報など)を含むデータベースエントリを含んでもよい。メタデータは、例えば、国際新聞電気通信評議会(「IPTC」)情報交換モデル、XMPのためIPTICコアスキーマ、XMLを利用した拡張可能なメタデータプラットフォーム(「XMP」)、交換可能な画像ファイルフォーマット(「Exif」)ダブリンコアメタデータイニシアチブ、又は、ピクチャーライセンシングユニバーサルシステムなどの基準に従って形成されてもよい。例えば時間やシャッタースピードのような特定のメタデータエントリは、
図10及び
図12ではメタデータとは別に示されているが、メタデータの一部であってもよいし、メタデータ内にあってもよい。
【0021】
図10及び
図12で示す「フォトグループ」は、グルーパーセレクタにより指定された「フォトグラフ」のグループを表すデータベースエントリである。「フォトグループ」のデータベースエントリは、「フォトグループ」内にどの「フォトグラフ」があるか、「フォトグループ」内における「フォトグラフ」の順序、「フォトグループ」に付与された名前(「フォトグループ」内の「フォトグラフ」の一つ以上の主調色、タイムスタンプ又は「フォトグラフ」に関連付けられたタイムスタンプの範囲などが考えられる)、及び、グルーパーセレクタにより判定されるように、「フォトグループ」内の「フォトグラフ」が選択基準に合っているかどうか、を記録していてもよい。「フォトグループ」は、例えばフォトアプリケーションにより、更に整理され、「アルバム」又は「フォルダ」として示されたり表示されたりしてもよい。
【0022】
ソフトウェアルーチン及びそのソフトウェアルーチンで使用されるデータ群は、例えば、アプリケーションの仮想化によって、いずれかのコンピュータに格納され、及び/又は遠隔で実行されてもよい。
【0023】
図1に示すコンピュータは、
図9,10,11及び12に関連して更に述べる。
【0024】
図2は、プログラムにより、類似性によって「フォトグラフ」をグループ化し、各グループの中で、最良の写真を識別するための基準に合う「フォトグラフ」を識別するプロセスの概要を示している。
【0025】
ステップ205では、グルーパーセレクタルーチンを開始するか、実行を継続する。ステップ210では、グルーパーセレクタが、「フォトグラフ」1005のような「フォトグラフ」を受信する。ステップ300では、グルーパーセレクタが、類似性及び主調色によって、グループ内の「フォトグラフ」を、「フォトグループ」のようなグループにグループ化する。この処理を行うプロセスの一例を、
図3及び
図3で参照される後続の図に更に示す。
【0026】
ステップ400では、グルーパーセレクタは、選択基準に従って、「フォトグループ」内で最良の「フォトグラフ」を識別する。この処理を行うプロセスの一例を、
図4及び
図4で参照される後続の図に更に示す。ステップ230では、グルーパーセレクタは、各「フォトグループ」内で基準に合わない「フォトグラフ」を隠す。
【0027】
ステップ235において、「フォトグループ」を出力する。「フォトグループ」の出力は、「フォトグループ」をクライアント装置及び/又は外部サーバへ送信することを含む。これら受信装置側では、例えばフォトアプリケーションを用いて、「フォトグループ」を表示することができる。「フォトグループ」の出力は、「フォトグループ」及び/又はメタデータのようなデータレコードとともに、「フォトグラフ」を受信装置へ送信するものであってもよい。上記データレコードは、「フォトグループ」に属している「フォトグラフ」を識別し、更に/又は、(「フォトグループ」内、あるいはフォトアプリケーションで用いられるフォルダ又はアルバム内において)どの「フォトグラフ」が隠されるべきかを識別するものである。受信装置がすでに「フォトグラフ」を持っている場合、GSサーバ900は、上述したデータレコードだけを受信装置へ送信してもよい。
【0028】
図3は、
図2の類似グループを判定するプロセスの詳細を示すフローチャートである。ステップ305から365は、各「フォトグラフ」に対して実行されるプロセスである。ステップ310では、「フォトグラフ」が、例えばデータベース1000(又は1200)に、すでにある「フォトグラフ」の完全な複製であるか否か判定する。「フォトグラフ」が既存の「フォトグラフ」の完全な複製であるか否かの判定は、例えば、「フォトグラフ」の又は「フォトグラフ」中におけるハッシュ又は署名又はデータ群が、既存の「フォトグラフ」そのもの又は「フォトグラフ」中のハッシュ又は署名又はデータ群と同一か否かに基づいて行う。完全な複製の消去は、ユーザに消去を確認する問合せの実行を含んでいてもよい。
【0029】
ステップ600では、事前のEarth Mover’s Distance(「EMD」)処理又は事前の距離関数処理を、各「フォトグラフ」に対して実行してもよい。この処理の例は、
図6において更に示す。一般に、EMD又は他の距離関数(後で述べる)は、各「フォトグラフ」間の距離を判定するために、二つ以上の「フォトグラフ」の比較を含む。EMD関数又は他の距離関数は、第1の「フォトグラフ」の態様に対して、比較対象の他の「フォトグラフ」とは別個に、演算実行されてもよい。ステップ600では、この事前のEMD関数(又は事前の他の距離関数)のプロセスを行う。この事前のEMDのプロセスの結果は、後に再演算しなくてもよいように、記憶されてもよい。
【0030】
事前EMD処理の例として
図6を参照する。ステップ610では、グルーパーセレクタが、「フォトグラフ」の一部分(例えば正方形。「フォトグラフ」の中心の正方形であってもよい)を取得する(「フォトグラフ」の上記一部分は、正方形である必要はなく、また、このような正方形や他の形状の部分は、「フォトグラフ」の中心に位置している必要もない)。
図8に一部分の例を示す。長方形の「フォトグラフ」801は、正方形805を含む。この一部分は、更に、小部分に分割されてもよい。
図8に示すように、正方形805は、4分の1の小正方形810,815,820,825に分割される(この小部分は、正方形である必要はなく、また、分割する全体部分よりも小さい部分から成ればよい)。小正方形830のような追加の副部分も含まれる(
図8では、正方形805の中心に配置され、他の四つの小正方形と同じ大きさになっている)。ステップ615では、これらの部分の色のヒストグラムを判定する。
図8では一例を示しているが、
図8に示す部分の数や面積が必須でないことは認識されるであろう。全体として必要とされるのは、いくつか又は全ての「フォトグラフ」において上記部分が一致しているという条件で、それらの「フォトグラフ」のヒストグラムが作成されることである。上記部分が一致しているかどうかの識別は、図示されるように、「フォトグラフ」の絶対的な幾何学的条件に対して行われてもよい。あるいは、特定の顔(「フォトグラフ」から「フォトグラフ」へ移動する可能性がある)等の、「フォトグラフ」内の関心領域の部分に対して行われてもよい。
【0031】
ステップ320では、EMD関数又は他の距離関数が、時間範囲X(時間範囲Xは、例えば、5分から15分にしてもよい)内の他のそれぞれの「フォトグラフ」に対して実行される。時間範囲Xが各「フォトグラフ」に関連付けられていてもよいし、あるいは、「フォトグラフ」をタイムスタンプで集合化し、EMD関数又は他の距離関数を、各集団内の全「フォトグラフ」にわたって実行してもよい。時間範囲Xに関連付ける代わりに、EMD関数又は他の距離関数は、例えば、フォトアプリケーションにおける一つのフォルダやアルバム内の「フォトグラフ」のような、他の方法でグループ化された「フォトグラフ」に対して実行されてもよい。
【0032】
EMD関数又は距離関数は、ステップ600で作成されたヒストグラム、又は、他の事前EMDプロセスの結果に対して実行される。EMD関数は、ある領域上の二つの確率分布間の「距離」を測定する距離関数の一例である。EMD関数は、ワッサースタイン計量の一種である。言い換えると、EMD関数又は他の距離関数は、第1項目を第2項目に変換するための最小限の「コスト」を判定する。ステップ600で作成されたヒストグラムは、画素と周波数のグラフとして「フォトグラフ」を表す(モノクロヒストグラムのような、画素と強度を表す他のヒストグラムを用いてもよい)。それゆえ、二つの「フォトグラフ」のヒストグラムを比較して、二つのヒストグラム間の距離が大きいか小さいかを判定することができる。距離が小さい場合は、多少の違いがあったとしても、それら「フォトグラフ」は、同じ被写体のものである可能性が非常に高い。同じ被写体の二つのフォグラフ間の差異は、例えば、異なる解像度、ディザリング、ぼかし、局所的な変形、又は対象に対するフレームのずれに由来することがある。
図6(及び
図8)に示す例では、ステップ600において、各「フォトグラフ」の五つの異なる正方形の五つの色ヒストグラムが作成された。ステップ320のEMD関数又は他の距離関数は、二つの「フォトグラフ」から作成された上記五つの色ヒストグラムのそれぞれに対して実行する。そして、(二つの「フォトグラフ」の)上記五つのそれぞれの色ヒストグラムに対するEDM関数の結果が、例えば平均される。時間範囲X内の他のそれぞれの「フォトグラフ」に関するEMD関数又は他の距離関数の値は、例えばEMD値(5及び1235)として、保存してもよい。
【0033】
ステップ325では、EMD関数又は他の距離関数の値が閾値Tよりも大きいか小さいかを判定する。この閾値は、例えば、用いた距離関数の種類、用いたヒストグラムの種類、用いたユニット、(「フォトグラフ」間で類似性を検出する際の)誤検出率の許容値等に依存する。ここに示した例では、「50」とした閾値が有効であることが見出されている。また、例えば、「フォトグラフ」のグループに対しては、「フォトグラフ」が一致しているかどうか、ほぼ完全な複製かどうか、及びテーマ(例えば、冬の雪景色、草原の上の青空等)が類似しているかどうかによって「フォトグラフ」を分類するために、複数の閾値を用いてもよい。
【0034】
ステップ325において、ある「フォトグラフ」と時間範囲X内の他の「フォトグラフ」群との間のEMD関数又は他の距離関数の値が、閾値Tよりも小さい(「フォトグラフ」が類似することを意味する)と判定した場合は、次に、ステップ330において、他の類似する「フォトグラフ」群が、同一の類似グループに属するか、異なる二以上の類似グループに属するかについて判定する。ステップ330における判定が肯定である場合は、ステップ335において、「フォトグループ」1010のような特定されたグループに、「フォトグラフ」を追加する。ステップ330における判定が否定である場合は、ステップ340において、「フォトグループ」1010のような新しいグループを、その「フォトグラフ」のために作成する。また、ステップ325において、その「フォトグラフ」と他の「フォトグラフ」との間のEMD関数又は他の距離関数の値が、閾値Tよりも大きい(「フォトグラフ」が類似しないことを意味する)と判定した場合は、次に、ステップ345において、「フォトグループ」1010のような新しいグループを、その「フォトグラフ」のために作成する。このような類似グループを保存した後、EMD値113を破棄してもよいし、後に利用するために保存してもよい。
【0035】
ステップ700において、各「フォトグラフ」における主調色を判定する。
図7は、「フォトグラフ」における主調色を判定するプロセスの一例を示す。
図7に移って、ステップ705では、各「フォトグラフ」の色ヒストグラムを取得する。これら色ヒストグラムは、「フォトグラフ」の一部分のヒストグラムであってもよいし、全体のヒストグラムであってもよい。また、例えば、ステップ600で作成された色ヒストグラムでもよい。ステップ710では、色の最大総数が取得され得る。色の最大総数は、静的変数でもよいし、グルーパーセレクタのような機能を実行するソフトウェアルーチンに固定の数でもよい。この例では、色の最大総数を10としてもよい。ステップ715では、その「フォトグラフ」に対して、RGB色の立方形に関するロイドアルゴリズムを実行し、ボロノイ図を生成する。ボロノイ図は、ある空間を多数の領域に分割する方法である。この例のロイドアルゴリズムは、ステップ705の色ヒストグラム及びステップ710の色の最大総数を、入力値として用いている。この例のロイドアルゴリズムは、ステップ705の色ヒストグラムから導かれる画素周波数である入力点を、ステップ710の色の最大総数であるk個の初期セットに分割する。そして、このアルゴリズムは、例えばユークリッド空間における平均次元によって、各セットの平均点又は重心を算出する。この場合、各重心の初期位置は、ランダムな位置から開始する。このアルゴリズムは、例えばユークリッド距離関数を用いたりして、各点を最も近い重心に関連付けて、新しい領域を構築する。その後、重心は新しい集団に対して再計算される。このアルゴリズムは、各点が集団を移動しなくなるまで、又は、重心が変化しなくなるまで、所定数の反復処理が実行され収束するまでは繰り返し実行される。このステップの結果は、順序付け、重み付け、リスト化がなされる。各重みは、各集団に関する画素数により決定される。
【0036】
ステップ720では、ステップ715の結果から、主調色、例えば、最上位の一色、又は最上位から三色を選択する。ステップ725では、ステップ720で選択された上位の色を、色名に関連付けることができる。
図3に戻って、ステップ360では、ステップ700の結果(例えば、ステップ725の結果)を、例えば主調色1040として保存する。
【0037】
ステップ370では、ステップ360で保存された主調色を、全ての「フォトグラフ」について取得する。ステップ375では、「フォトグラフ」を、主調色によりグループ化することができる。主調色によるグループ化は、類似性によるグループ化とは別個に実行してもよい。ステップ380では、色のグループは、例えば「フォトグループ」1010の一部として(又は別のグループ化で)、保存する。
【0038】
上述したように、
図4は、
図2に示すプロセスの詳細を示すフローチャートであり、このプロセスでは、各グループの中で最良の写真が選択されるとともに、選択されなかった写真が隠される。
図4に示すプロセスは、例えばグルーパーセレクタルーチンにより実行されてもよい。
図4において、ステップ405から455までは、個々の「フォトグラフ」に対して実行される。
【0039】
ステップ410では、ぼかし信頼度「BC」、及び/又は、ぼかし量「BE」を、例えば「フォトグラフ」の白黒版で判定してもよい。一般的に、BCは、「フォトグラフ」が全体的にぼやけているかどうかを評価する割合である。一方、BEは、「フォトグラフ」がぼやけているとしたら、どのくらいぼやけているかを評価する割合である(BEは、「フォトグラフ」のエッジ点を見て、くっきりしたエッジに対するぼやけたエッジの割合を判定する)。BC及びBEを導き出す方法は数多くある。例えば、これらの論文に関連する情報開示陳述書に投稿された「Blur Detection for Digital Images Using Wavelet Transform」に示されている。この例の概要は以下のようである。例えば、「フォトグラフ」の白黒版のような画像から算出した画素の明るさのスカラー量について、ハールウェーブレット変換を三回繰り返して実行し、三つの異なる基準で高エネルギの画素を検索して、それらに値を割り当てる。割り当てられた値を使って、画素をエッジ点又は非エッジ点に分類する。次に、テストの2番目のセットで、エッジ点を、ぼやけたエッジ部分又はくっきりしたエッジ部分に分類する。様々な分類の比率より、結果値が決定される。BC値及び/又はBE値は、例えば、データ格納部1000にBC−BE1045として格納される。
【0040】
ステップ415では、例えば、焦点距離、時刻及びシャッタースピードのような調整係数値を、例えば「フォトメタデータ」(図では、焦点距離、シャッタースピード、及び時刻として示されている)から取得する。調整係数は、「フォトグラフ」のぼかしに影響する可能性があるとともに、「フォトグラフ」のぼかしに対する人間の許容値に影響又は関連する可能性がある。ステップ420では、調整係数を用いて、BC値及び/又はBE値に重み付けしてもよい。例えば、近焦点距離で撮られた「フォトグラフ」は、花のマクロ写真の場合、「フォトグラフ」の大部分はぼやけているかもしれないが、小さな部分、例えば花の雄しべの部分には焦点が合っているかもしれない。この「フォトグラフ」は、審美的には大変満足のいくものかもしれない。近距離焦点は、例えば、1より小さい値、つまり、近距離焦点とBC値及び/又はBE値を乗算すると数値が減少するような値に変換されてもよい(あるいは、焦点距離に応じてぼかしの許容値を大きく補正するように、調整係数を設定してもよい)。同様に、夜に撮影された「フォトグラフ」は、絞りが広い及び/又はシャッタースピードが遅いために、比較的ぼやけている可能性がある。そして、夜に撮影された「フォトグラフ」は、比較的ぼやけているにもかかわらず、興味深い又は価値ある情報を含んでいる可能性があるため、夜の時間の「フォトグラフ」のぼかしの許容値は比較的大きくなる。その結果、日没後及び日の出前の時刻については、例えば、1より小さい値、つまり、時刻とBC値及び又はBE値を乗算すると数値が減少するような値に変換されてもよい(あるいは、「フォトグラフ」が撮影された時刻に応じて、ぼかしの許容値を大きく補正するように、調整係数を設定してもよい)。時刻の調整係数は、「フォトグラフ」が撮影された場所の日の長さを考慮にいれてもよい。
【0041】
ステップ425では、調整されたBC値及び/又はBE値が、閾値よりも大きいか又は小さいかについて判定される。BC値及び又はBE値が閾値よりも大きい場合は、次にステップ430において、「フォトグラフ」が隠される。「フォトメタデータ」又は「フォトグループ」に、所定の値をセットして、「フォトグラフ」を隠してもよい。この値は、例えば、フォトアプリケーションによって認識される値であり、この値がフォトアプリケーションにより認識されることで、ユーザインターフェース内のアルバム又はフォルダに「フォトグラフ」が示されなくなったり、「フォトグループ」が表示された場合に「フォトグループ」の一部として「フォトグラフ」が示されなくなる。「フォトグラフ」が隠された場合も、例えば、全「フォトグラフ」一覧のような他の「フォトグラフ」一覧においては、その「フォトグラフ」を可視的に表示してもよい。ステップ425において、BC値及び又はBE値が閾値よりも大きくない場合は、「フォトグラフ」は隠されない。
【0042】
ステップ500では、rO及びrUが判定される。一般的に、rOは、「フォトグラフ」が露出過度か否かを表す係数であり、rUは、「フォトグラフ」が露出不足か否かを表す係数である。rO及びrUを判定するプロセスの一例を
図5に示す。次に
図5のステップ510において、「フォトグラフ」における画素の総数を取得する。ステップ515において、閾値T2よりも大きな輝度値を持つ白黒画素数を取得する。T2としては、画素の最大輝度値近傍の値が選択される。ステップ520において、ステップ515で取得した数を、ステップ510で取得した数で割ってrOを生成する。ステップ525では、閾値T3よりも小さい輝度値を持つ白黒画素数を取得する。T3としては、画素の最小輝度値近傍の値が選択される。ステップ530では、ステップ535で取得した数をステッ510で取得した数で割ってrUを生成する。
【0043】
図4に戻って、ステップ440では、時刻115のような、「フォトグラフ」が撮影された時刻が取得される。「フォトグラフ」が撮影された時刻は、rO及びrUに関して使われる調整係数であってもよい。BE及びBCに関して用いた調整係数と同様に、人間は、夜に撮影された「フォトグラフ」の露出不足、及び昼間に撮影された「フォトグラフ」の露出過度に対しては、比較的許容できるかもしれない。ステップ445で、時刻−(「フォトグラフ」が撮影された場所がわかっているなら)その場所の緯度での日射量で補正されているだろう−は、rO値及び又はrU値と乗算すると、rO値及び/又はrU値が増加又は減少するような値に変換されてもよい。ステップ445では、rO値及び/又はrU値を、例えばすぐ上で述べたような調整係数により、調整してもよい。
【0044】
ステップ450では、「フォトグラフ」について、顔の分析が実行される。顔の分析により、「フォトグラフ」上で顔が検知されたか否か、開いた又は閉じた目が検知されたか否か、顔がカメラの方を向いているか否か、「フォトグラフ」上で眼鏡、顔ひげ、及び笑顔が検知されたか否かを示す値を返してもよい。顔の分析結果は、例えば、データ格納部1000に、顔データ1055として格納してもよい。
【0045】
ステップ460からステップ490は、分離された類似グループ、例えば「フォトグループ」(「フォトグループ」内の「フォトグラフ」は、グルーパーセレクタにより、類似対象の「フォトグラフ」と判定されている)内の全「フォトグラフ」に対して、グルーパーセレクタによって、実行される。ステップ465において、グルーパーセレクタは、最良のBE値及び/又はBC値を持つ「フォトグラフ」(この例では、最も低いBE値及び/又はBC値を持つ「フォトグラフ」)を選択する。ステップ470では、グルーパーセレクタは、最良のrO値及び/又はrU値を持つ「フォトグラフ」を選択する。
【0046】
ステップ475では、顔データ1055に基づいて、判定中の「フォトグループ」内の「フォトグラフ」中に顔があるかないかについて判定する。判定中の「フォトグループ」内の「フォトグラフ」中に顔がある場合には、次にステップ480において、グルーパーセレクタは、開いた目、笑顔及び/又は比較的まっすぐにカメラに顔を向けている被写体の「フォトグラフ」を選択してもよい(一以上の「フォトグラフ」を選択してもよい)。
【0047】
ステップ485では、グルーパーセレクタは、選択しなかった「フォトグラフ」を隠す。ステップ430と同様に、「フォトメタデータ」又は「フォトグループ」に、所定の値をセットすることで、「フォトグラフ」を隠してもよい。この値は、例えば、フォトアプリケーションによって認識される値であり、この値がフォトアプリケーションにより認識されることで、ユーザインターフェース内のアルバム又はフォルダに「フォトグラフ」が示されなくなったり、「フォトグループ」が表示された場合に「フォトグループ」の一部として「フォトグラフ」が示されなくなったりする。「フォトグラフ」が隠された場合も、例えば、全「フォトグラフ」一覧のような他の「フォトグラフ」一覧において、その「フォトグラフ」を可視的に表示してもよい。
【0048】
図9は、例示的なサーバコンピュータ装置(GSサーバ)、並びに、データ構造及び/又はその構成要素を示す機能ブロック図である。コンピュータ装置900が、
図9に示すよりも多くの構成要素を含む実施形態であってもよい。しかしながら、これら一般に公知の構成要素の全てが、一例の実施形態を開示するために必要なわけではない。
図9に示すように、コンピュータ装置900は、ネットワーク150に接続するためのネットワークインターフェース905を含んでいる。
【0049】
コンピュータ装置900は、少なくとも一つの処理ユニット945、記憶装置925、及び任意の表示装置910も含んでいる。これらは、バス920を経由してネットワークインターフェース905に相互に接続される。記憶装置925は、一般的に、random access memory(「RAM」)、read only memory(「ROM」)、ディスクドライブやSDRAM(synchronous dynamic random-access memory)のような永久大容量記憶装置を含む。記憶装置925は、例えば、グルーパーセレクタルーチン200、ウェブサーバ、ブラウザ、並びに、emailサーバ、クライアントアプリケーション、及びデータベースアプリケーションのようなソフトウェアルーチンのプログラムコードを格納している。加えて、記憶装置925は、オペレーティングシステム930も格納している。これらのソフトウェアの構成要素は、非一時的なコンピュータ読み取り可能記憶媒体940に関連するドライブ装置(図示なし)を用いて、非一時的なコンピュータ読み取り可能記憶媒体940からコンピュータ装置900の記憶装置925へ読み込まれる。この非一時的なコンピュータ読み取り可能記憶媒体940は、フロッピーディスク、テープ、DVD/CD−ROMドライブ、メモリカード、又は他の記憶媒体等である。ソフトウェアの構成要素が、ドライブ装置及びコンピュータ読み取り可能記憶媒体940以外の装置(例えば、コンピュータインターフェース905を介して)によって、あるいは、それら装置の代わりに読み込まれてよい。
【0050】
コンピュータ装置900は、任意の入力方法を支援するハードウェアである、任意の入力装置915(例えば、タッチスクリーン、キーボード、マウス、トラックボール、スタイラス・ペン、マイク及びカメラ等)も含んでいてもよい。
【0051】
コンピュータ装置900は、
図10に示すデータ格納部1000も含んでいる。あるいは、バス920を経由してデータ格納部1000と通信する。バス920が、storage area network(「SAN」)、高速シリアルバス、及び/又は他の適した通信技術の使用を含む実施形態も考えられる。コンピュータ装置900が、ネットワークインターフェース905を経由してデータ格納部900と通信する実施形態も考えられる。
【0052】
図10は、
図9のコンピュータ装置のデータ格納部を示す機能ブロック図である。この図は、上述した、ルーチンで使われるデータグループを示している。
【0053】
図11は、例示的なクライアントコンピュータ装置(クライアント装置)、並びに、データ構造及び/又はその構成要素を示す機能ブロック図である。
図11の構成要素は、概ね、
図9において類似する名前が付けられた構成要素と同じものである(上記における9を11に入れ替える)。加えて、
図11に示すクライアント装置は、フォトアプリケーション1140(この「フォトアプリケーション」ルーチンは、上述している)を含む。
【0054】
図12は、
図11及び
図13のコンピュータ装置のデータ格納部を示す機能ブロック図である。この図は、上述した、ルーチンで使われるデータグループを示している。
【0055】
図13は、例示的なモバイルクライアント装置、並びに、データ構造及び/又はその構成要素を示す機能ブロック図である。
図13の構成要素は、
図9及び
図11において類似する名前が付けられた構成要素と同じものである(上記における9及び11を、13に入れ替える)。加えて、
図13に示すモバイルクライアント装置は、カメラ1350を含む。GSサーバは、任意の入力装置915備えており、任意の入力装置915にカメラが含まれていてもよい。これに対して、モバイルクライアント装置1300は、カメラ1350を備えており、これに加えて入力装置1315を備えている。
【0056】
上記実施形態の詳細な説明は、制限的であることを意図せず、又は上記形態の開示だけに限定することを意図するものではない。特定の実施形態及び実施例は、例示の目的で述べられており、当業者は、本システムの範囲で様々な同等の変形が可能であることを認識するであろう。例えば、プロセス又はブロックは一定の順番で表されているが、異なる順番でルーチンの命令を実行したり、異なる順番のブロックを有するシステムを採用してもよい。また、プロセス又はブロックのいくつかは、消去、移動、追加、再分割、結合、及び/又は修正されてもよい。プロセス又はブロックは、折にふれて、続けて実行するように示されているが、これらのプロセス又はブロックを並行的に実行してもよいし、あるいは異なるタイミングで実行してもよい。さらに、ここで述べた特定の数値は、単なる例示であり、他の実施では、異なる値や範囲を使用してもよい。