•
Linux CLI 圖像相似度比對工具推薦與 zsh 腳本實作
4 分鐘閱讀 •
我後來在 jim60105/image-dataset-prep-tools 專案中使用了
czkawka_cli
工具。
推薦的 CLI 圖像相似度比對工具
1. findimagedupes
https://github.com/jhnc/findimagedupes
findimagedupes
是 Linux 平台上最常用的命令列圖像相似度檢測工具1。它專門設計用於尋找視覺上相似的圖片,而不僅僅是完全相同的檔案。
# 安裝 (Ubuntu/Debian)
sudo apt-get install findimagedupes
# 基本用法 - 在指定資料夾中尋找相似圖片
findimagedupes /path/to/your/images/
# 設定相似度閾值 (0.0-1.0,0.95 表示 95% 相似度)
findimagedupes -t 0.95 /path/to/your/images/
2. ImageMagick compare
https://imagemagick.org/script/compare.php
ImageMagick 的 compare
工具提供強大的圖像比較功能23。雖然主要用於兩張圖片的比較,但可以結合 shell 腳本進行批次處理。
# 安裝 ImageMagick
sudo yum install ImageMagick # RHEL/CentOS
# 比較兩張圖片的相似度
compare -metric SSIM image1.jpg image2.jpg null:
# 在 zsh 腳本中批次比較
for img1 in *.jpg; do
for img2 in *.jpg; do
if [[ "$img1" != "$img2" ]]; then
similarity=$(compare -metric SSIM "$img1" "$img2" null: 2>&1)
# 處理相似度結果
fi
done
done
3. Czkawka (CLI 版本)
https://github.com/qarmin/czkawka
Czkawka 是一個現代化的重複檔案查找工具,支援圖像相似度檢測4。它提供純文字版本,非常適合在 CLI 環境中使用。
# 下載並安裝 Czkawka CLI 版本
wget https://github.com/qarmin/czkawka/releases/latest/download/linux_czkawka_cli.tar.xz
tar -xf linux_czkawka_cli.tar.xz
# 尋找相似圖片
./czkawka_cli similar -d /path/to/images/ -s High
4. rmlint
https://github.com/sahib/rmlint
rmlint
是一個高效的重複檔案查找工具,也支援圖像相似度檢測5。它以速度快著稱,適合處理大量圖片。
# 安裝 rmlint
sudo yum install rmlint # RHEL
# 尋找相似圖片
rmlint --types="duplicates" --algorithm=paranoid /path/to/images/
針對 95% 相似度的 zsh 腳本範例
以下是一個使用 findimagedupes
的 zsh 腳本範例:
#!/bin/zsh
# 設定目標資料夾
IMAGE_DIR="/path/to/your/images"
SIMILARITY_THRESHOLD=0.95
OUTPUT_FILE="similar_images_95percent.txt"
# 檢查 findimagedupes 是否已安裝
if ! command -v findimagedupes &> /dev/null; then
echo "錯誤:findimagedupes 未安裝"
echo "請執行:sudo yum install findimagedupes"
exit 1
fi
# 執行相似度檢測
echo "正在搜尋相似度 ${SIMILARITY_THRESHOLD} 以上的圖片..."
findimagedupes -t ${SIMILARITY_THRESHOLD} -R "${IMAGE_DIR}" > "${OUTPUT_FILE}"
# 顯示結果
if [[ -s "${OUTPUT_FILE}" ]]; then
echo "找到相似圖片,結果已儲存至:${OUTPUT_FILE}"
echo "相似圖片組數:$(grep -c '^$' "${OUTPUT_FILE}")"
else
echo "未找到相似度 ${SIMILARITY_THRESHOLD} 以上的圖片"
fi
效能考量與建議
根據您的 Linux RHEL 環境,建議:
- 對於大量圖片:使用
rmlint
或Czkawka
,它們在處理大型資料集時效能較佳5 - 精確度要求高:使用
findimagedupes
,它專門針對圖像相似度設計1 - 需要自訂演算法:使用 ImageMagick,可以選擇不同的比較指標(SSIM、PSNR 等)6
這些工具都能有效地在您的 zsh 腳本中找出 95% 以上相似度的圖片,您可以根據具體需求和效能要求選擇最適合的工具。