SimilaritySearch.hpp 833 B

123456789101112131415161718192021
  1. #pragma once
  2. #include "DatabaseManager.hpp"
  3. #include <vector>
  4. #include <map>
  5. // 重複画像と判定された画像のグループをまとめる構造体
  6. struct DuplicateGroup {
  7. std::vector<ImageData> images;
  8. };
  9. // 類似画像(重複)検索を処理するクラス
  10. class SimilaritySearch {
  11. public:
  12. // 指定された画像リストから重複画像のグループを抽出する
  13. // threshold: ハミング距離の許容閾値(これ以下なら類似とみなす)
  14. // strict: trueならdHashとpHashの両方、falseなら片方が閾値以下であれば類似と判定
  15. static std::vector<DuplicateGroup> findDuplicates(const std::vector<ImageData>& images, int threshold = 5, bool strict = false);
  16. private:
  17. // 内部で使用されるシンプルなクラスタリングアルゴリズム
  18. };