python - 使用图像相似性度量的图像搜索
问题描述
我正在开发一个图像搜索引擎项目。其背后的逻辑是数据库中存储了一些图像,用户将输入一个新图像,它将与存储在数据库中的图像进行匹配。结果将是查询图像与数据库中存储图像的最接近匹配列表。
图像是邮票。现在的问题是有新邮票和二手邮票。新只是一个邮票图像,而二手是有一部分被黑色取消标记遮住,所以它不能完美匹配。
以下是两者的几个示例(新的和二手的):
我使用了各种度量,例如 compare_mse、compare_ssim 和 compare_nrmse。但它们都倾向于不同。我也使用了https://github.com/EdjoLabs/image-match算法,但它也同样给出了低相似度分数。
你们认为我需要使用一些预处理或其他东西吗?我还从图像中删除了黑色边框,但结果有点好,但并不令人满意。我已经将它们转换成灰度并匹配,仍然没有令人满意的结果。任何有关如何获得高相似度分数的建议和建议将不胜感激!这是我的代码:
img1 = cv2.imread('C:\\Users\\Quin\\Desktop\\1frclean2.jpg', cv2.IMREAD_GRAYSCALE)
img2 = cv2.imread('C:\\Users\\Quin\\Desktop\\1fr.jpg', cv2.IMREAD_GRAYSCALE)
compare_mse(cv2.resize(img1, (355, 500)), cv2.resize(img2, (355, 500)))
compare_ssim(cv2.resize(img1, (355, 500)), cv2.resize(img2, (355, 500)))
MSE 返回 4797.232123943662,SSIM 返回 0.2321816144043102。
解决方案
推荐阅读
- jenkins - JENKINS.SF(访问被拒绝)
- java - 通过 excel vba 执行时,Jar 文件将永远运行
- python-2.7 - subprocess.Popen 模块将输出作为第一行
- google-cloud-platform - 使用 Google ML Engine 的预测时出现 ExpirationError
- java - 当 Marionette 通过 Selenium 3.12.0 变为 false 时,无法找到与 Firefox 匹配的一组功能
- session - Azure 服务总线 - 会话将消息复制到多个实例
- python - 使用 Pandas 和 SQLAlchemy 时出错
- angular - Angular 6 - HttpInterceptors - HttpResponse 正文没有被修改
- vue.js - 如何确认我使用的是 Vue 的“完整版本”?
- microsoft-graph-api - 使用 Microsoft Graph 登录的用户的图像 URL