4

Flickr、Facebook、Instagram、iPhoto に保存されているサービスにまたがって、ほぼ 6 年間の写真を保管しています。

これらの各サービスから欠落している写真をプログラムで特定する最善の方法は何でしょうか?

私が持っていたいくつかのアイデア:

  • 画像サムネイルの MD5 を使用していますか?
  • 日付/時刻のタイムスタンプを比較していますか?

あるサービスには存在するが別のサービスには存在しない URL/ファイル名のリストを生成する方法を探しています。

私は、ソリューションに使用される言語、つまり OS X で実行されるものについてはうるさいわけではありません。

4

3 に答える 3

4

画像サムネイルの MD5 を使用すると、サービスによって画像のトリミングが異なるため、必ずしも機能するとは限りません。また、画像の圧縮方法が異なるため、より大きなサンプルの md5 を実行することはできません。

残念ながら、Facebook などのサービスもすべての EXIF データを取り除きます..

考えられる解決策の 1 つを次に示します。

画像を 2x2 に分割して、各グリッド セルの平均色を取得できるはずです。画像ごとに 4 つのスコアがあります。類似性を判断するには、画像間の差の二乗和を計算するだけです。

これは基本的に、画像の RGB 平均を 4 回取得するだけです。これを 4 回行うと、回転を考慮するのに役立ちます。

よりシンプルで高速で堅牢な分析を行うには、TinEye API もお勧めします。

類似度計算アルゴリズムを自分で書きたい場合は、ここでアイデアを探してください。

多くの画像の類似性を比較するための画像フィンガープリント

于 2012-10-07T10:57:35.950 に答える
1

各サービスからさまざまな API を介して写真を取得する方法を既に知っていること、および問題の難しい部分は写真を比較することだと仮定します。その方法については、SOに関する次の回答を確認してください。

また、それを実行する Web サービスに料金を支払うことを厭わない場合は、Tineye の Match Engine を試すことができます。

于 2012-10-04T12:34:47.083 に答える
1

あなたの写真のローカル集中データベースを維持することは、あなたの仕事の出発点であるべきだと思います. そのため、そのようなデータベースをまだ持っていない (または最新でない) 場合は、続行して、すべてのアカウントからすべての情報をダウンロードする必要があります。

このタスクはそれほど難しくないはずです。これらのソーシャル ネットワークからアカウント全体をダウンロードするための公式/非公式の方法とツールがいくつかあります。

  1. Facebook は、すべての画像、ウォール投稿などを含む便利な zip ファイルを直接提供します。データaccount settingsを選択するだけです。download a copy
  2. Flickr には、すべての写真をダウンロードできるBulkrという便利なツールがあります。
  3. Instagram は、このタスクを完了するための公式ツールを提供していないようですが、たとえばInstagram DownloaderInstaportから選択できます。
  4. iPhoto はすでに同期されているはずです。

すべての写真が PC に保存されたので、どれが同一か、類似しているかなどを判断する必要があります。この質問は、この問題の解決策を提供するはずだと思います。

個人的には、 pHashが でコンパイルできることを期待して、この方法に投票します。pHash がコンパイルされて動作する場合は、 の最初のパスを実行するか、正確に一致するものを特定するために何でも実行できます。そのような一致がない場合は、pHashを実行して、2 つの画像がどれだけ近いかを確認できます。OS XMD5SHA1

(十分な時間があれば) bashLinux ですべてをスクリプト化することができました。これは の下Mac OS Xでも機能すると思いますが、Cocoa ではさらに少ないコーディングで同じ結果が得られる可能性があります。

特定のサービスから欠落している写真を見つけたら、最終的にそれらをそのサービスにプッシュできます。しかし、ここで別の質問が始まると思います:)

于 2012-10-08T19:50:47.403 に答える