設定されたディレクトリ内の画像から、pHash および dHash アルゴリズムを用いて類似した画像を検索・提示する高性能な Windows アプリケーション。
[!IMPORTANT] GUI フレームワークの選択: ユーザーインターフェースには Qt 6 を採用します。これにより、Windows だけでなく Linux でも動作するマルチプラットフォーム対応 が可能になります。
[!TIP] 複数ディレクトリ対応: 単一のディレクトリだけでなく、複数のルートディレクトリを登録し、それらを横断して類似画像を検索できるように設計します。
[!WARNING] 依存関係: このプロジェクトには OpenCV (画像処理用) と SQLite (ハッシュ保存用) が必要です。プロジェクト管理には CMake を使用します。
高速なハッシュ生成エンジンを実装します。
ImageHasher.hpp / .cppcalculateDHash(cv::Mat image) の実装: 9x8にリサイズ、グレースケール化、隣接画素の差分を計算。calculatePHash(cv::Mat image) の実装: 32x32にリサイズ、グレースケール化、離散コサイン変換(DCT)、低周波成分(8x8)の抽出。cv::parallel_for_ または C++ スレッドを使用して、複数の画像を同時に処理します。SimilaritySearch.hpp / .cpp__popcnt64 を使用。__builtin_popcountll を使用。std::popcount を使用してクロスプラットフォーム化。数十万件のハッシュを効率的に保存・取得します。
DatabaseManager.hpp / .cppimages (id INTEGER PRIMARY KEY, path TEXT, dhash BLOB, phash BLOB, timestamp INTEGER)。モダンでレスポシブな UI を構築します。
MainWindow.ui / .cppcalculateDHash と calculatePHash のユニットテスト。