問題タブ [phash]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - Qt5 - リンク pHash ライブラリ「未定義の参照」
pHashという外部ライブラリを追加したいと思います。これを .pro ファイルに追加しました:
しかし、ライブラリの機能は 1 つも機能していません。使用しようとすると、ビルド エラー「pHashFunction への未定義の参照」が発生します。使用例があります:
次に、ビルドログがあります:
よろしくお願いします:)
python - nonetype オブジェクトが出現すると、phash が壊れる
「cv2.imread(os.path.join(folder, file))」は、次の割り当てで nonetype エラーが発生するため、何らかの理由で none として返されると思いますが、すべてのサブフォルダーが実行されている場合にのみ壊れます。エラーが発生したサブフォルダーのみで実行するように変更します。それはうまくいきます。このような小さな変更でリターンが異なることに最も困惑しています。
python - mongodbでハミング距離を計算していますか?
知覚ハッシュ (約 35,000) を含む大量のドキュメントがあるとします。(mongodb を使用して) 指定されたハッシュ X をデータベース内のすべてのハッシュと比較し、距離のあるものを見つける最速の方法は何ですか? N未満。
ちなみに、私はpythonを使用しています。これはmongoではネイティブに不可能であると想定していますが、これを何らかの形で最適化することは可能でしょうか?
python - クラスタリング アルゴリズムへの入力のために画像知覚ハッシュのペアワイズ ハミング距離を作成して保存する方法
ハッシュの束のペアごとのハミング距離を計算し、それらをクラスター化する方法について、誰かがガイダンスを提供できることを願っています。私は自分が何をしているのか、何をしたいのかを見ると、パフォーマンスほど気にしません。何をしても遅くなり、何度も何度も実行されるものではありません。
つまり...一言で言えば、ドライブから何千もの写真を誤って消去し、バックアップがありませんでした(私は知っています...悪い習慣です)。さまざまなツールを使用して、ドライブからそれらの非常に高い割合を回復することができましたが、数百枚の写真が残っていました. 一部の写真を復元するために使用された手法 (ファイル カービングなど) により、一部の画像はさまざまな程度に破損しており、他の画像は同一のコピーであり、他の画像は視覚的には本質的に同一であるものの、バイトごとに異なっていました。
状況を助けるために私がやっていることは次のとおりです。
- 各画像をチェックし、画像ファイルが構造的に破損しているかどうかを特定します (完了)
- 各画像の知覚ハッシュ (フィンガープリント) を生成して、画像の類似性を比較し、クラスター化できるようにします (フィンガープリントの部分は実行されます)。
- 指紋のペアワイズ距離を計算する
- ペアごとの距離をクラスター化して、同様の画像を一緒に表示して手動のクリーンアップを支援します
添付のスクリプトでは、ハッシュを計算するいくつかの場所に気付くでしょう。混乱を招かないように説明します...
- PIL でサポートされている画像の場合、3 つのハッシュを生成します。1 番目は元の画像用、2 番目は 90 度回転したもの、3 番目は 180 度回転したものです。これは、ペアワイズ計算が完了したときに、向きが異なるだけの画像を説明できるようにするためです。
- PIL でサポートされていない生の画像の場合は、代わりに、抽出された埋め込みプレビュー画像から生成されたハッシュを優先します。生の画像を使用する代わりにこれを行いました。これは、生の画像ファイルが破損している場合、サイズが小さいためにプレビュー画像が無傷である可能性が高く、画像がその他
- ハッシュが生成される他の場所は、破損した生の画像を特定するための最後の努力の最中です。抽出/変換された raw 画像のハッシュと、抽出された埋め込みプレビュー画像のハッシュを比較します。類似性が定義されたしきい値を満たさない場合は、raw ファイル全体が破損している可能性があると想定されます。
ガイダンスが必要なのは、次のことを達成する方法です。
- 各画像に対して私が持っている3つのハッシュを取り、ハミングペアワイズ距離を計算します
- 画像比較ごとに、最も類似しているハミング距離のみを保持します
- 同様の画像をグループ化できるように、結果を scipy 階層的クラスタリングにフィードします
私はちょうどPythonを学んでいるので、それは私の挑戦の一部です...私はGoogleから得たものから、最初にscipy.spatial.distance.pdistを使用してペアごとの距離を取得することでこれを行うことができ、次にこれを処理して画像比較ごとに最も類似した距離を取得し、これを scipy クラスタリング関数にフィードします。しかし、これを整理して適切な形式で提供する方法などを理解できません。これに関するガイダンスを提供できますか?
これは、何らかのハッシュの辞書またはディスク ストレージ上の何らかの種類を保存するために変更する必要があることに興味を持っている人がいる場合に備えて、現在のスクリプトを参照するためのものです。
編集 済み最終的に思いついたもので更新を提供したいだけで、意図した目的に対して非常にうまく機能しているようで、同様の状況で他のユーザーに役立つかもしれません. スクリプトはまだいくらかの研磨を使用できますが、それ以外はすべて肉がそこにあります. 私はPythonの使用に関して環境に優しいので、大幅に改善できるものを誰かが見つけたら教えてください.
スクリプトは次のことを行います。
- さまざまな方法を使用して、ファイル構造に関して画像の破損を検出しようとします。生の画像形式 (NEF、DNG、TIF) の場合、破損した画像でも問題なくロードできることが時々あるので、プレビュー画像と生の画像の抽出された .jpg の両方をハッシュし、ハッシュを比較して、それらが類似していないかどうかを調べることにしました。画像が何らかの形で破損していると思います。
- ロードできる各画像の知覚ハッシュを作成します。ベース ファイル用に 3 つ作成されます (オリジナル、90 度回転したオリジナル、180 度回転したオリジナル)。さらに、未加工の画像の場合、抽出されたプレビュー画像用に追加の 3 つのハッシュが作成されました。これは、未加工の画像が破損している場合でも完全な画像に基づくハッシュが残るようにするためです (プレビューが正常であると仮定します)。
- 破損していると識別された画像は、破損していることとその原因を示すサフィックスを付けて名前が変更されます。
- ペアごとのハミング距離は、すべてのファイル ペアに対してハッシュを比較することによって計算され、numpy 配列に格納されました。
- ペアごとの距離の平方形式は、クラスタリングのために fastcluster に供給されます
- fastcluster からの出力を使用してデンドログラムを生成し、類似した画像のクラスターを視覚化します
numpy 配列をディスクに保存して、遅い各ファイルのハッシュを再計算せずに fastcluster/dendrogram 部分を後で再実行できるようにします。これは、まだ許可するようにスクリプトを変更する必要があるものです....
mysql - mysqlでビットごとのxor + bit_countを実行する際の問題
ハッシュ値 (16 文字の 16 進文字列) を比較しようとしています。phash VARCHAR(16)
これらの値を列に格納する MYSQL テーブルがあります。これは私がやろうとしていることです:
しかし、bit_count + xor は正しく行われません。取得する必要があるのに結果としてphash='dda15873a3de013d'
取得する場合でも(2 つの 16 進数は同じであるため、xor はゼロのみを生成する必要があるため、bit_count は 0.33
0
なにが問題ですか?ありがとうございました
編集:ここに例=> http://sqlfiddle.com/#!9/d7f5c2/1/0