基于图像相似性度量的图像搜索

2024-09-27 07:21:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在从事一个项目,这是图像搜索引擎。背后的逻辑是,数据库中将存储一些图像,用户将输入一个新图像,并将其与数据库中存储的图像匹配。结果将是查询图像与数据库中存储的图像最匹配的列表

这些图像是邮票的。现在的问题是有新的和用过的邮票。新的只是一张邮票图像,它的某些部分被一个黑色的取消标记遮住了,所以它不可能是完美的匹配

以下是两个(新的和使用过的)的几个示例:

New StampUsed StampNew StampUsed Stamp

我使用了各种度量,例如比较、比较ssim和比较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


Tags: 图像数据库相似性cv2users分数img1img2
1条回答
网友
1楼 · 发布于 2024-09-27 07:21:18

MSE和SSIM不适合解决这个问题,因为它们的目标是逐像素比较Here是NVIDIA的一篇文章,举例来说,它展示了SSIM如何在即使是简单的情况下也会显著失败

在您的情况下,我将尝试两种方法:

  1. 使用embeddings进行反向搜索

  2. 由于戳记通常包含文本,您可以使用somevision云服务来识别/OCR它,然后比较文本字符串的相似性

相关问题 更多 >

    热门问题