图像相似度比较
image-processing
image-recognition
16
0

我最初在cstheory.stackexchange.com上问了这个问题,但建议将其移至stats.stackexchange.com

是否有一种现有的算法可以向我返回两个位图图像之间的相似性度量?所谓“相似”,是指人类会说这两个图像是从同一张照片中更改而来的。例如,该算法应说以下3张图像是相同的(原始图像,位置偏移图像,缩小图像)。

相同

在此处输入图片说明在此处输入图片说明在此处输入图片说明

我不需要检测扭曲或翻转的图像。我也不需要检测不同方向上的对象是否相同。

不同

在此处输入图片说明在此处输入图片说明

我想使用此算法来防止网站上的垃圾邮件。我注意到垃圾邮件发送者过于懒惰,无法更改其垃圾邮件图像。不仅限于面孔。我已经知道那里已经有很多很棒的面部识别算法。垃圾邮件图片可以是从URL到足球场再到裸身的任何内容。

参考资料:
Stack Overflow
收藏
评论
共 6 个回答
高赞 时间 活跃

使用https://github.com/Netflix/vmaf比较两组图像。

首先使用ffmpeg将图像转换为yuv422p,然后运行测试。注意分数差异。这可以用来判断图像是相似还是不同。对于这个样本,它们看起来都非常相似。

ffmpeg -i .\different-pose-1.jpg  -s 1920x1080 -pix_fmt yuv422p different-pose-1.yuv
ffmpeg -i .\different-pose-2.jpg  -s 1920x1080 -pix_fmt yuv422p different-pose-2.yuv
.\vmafossexec.exe yuv422p 1920 1080 different-pose-1.yuv different-pose-2.yuv vmaf_v0.6.1.pkl --ssim --ms-ssim --log-fmt json --log different.json
Start calculating VMAF score...
Exec FPS: 0.772885
VMAF score = 2.124272
SSIM score = 0.424488
MS-SSIM score = 0.415149

ffmpeg.exe -i .\same-pose-1.jpg  -s 1920x1080 -pix_fmt yuv422p same-pose-1.yuv
ffmpeg.exe -i .\same-pose-2.jpg  -s 1920x1080 -pix_fmt yuv422p same-pose-2.yuv
.\vmafossexec.exe yuv422p 1920 1080 same-pose-1.yuv same-pose-2.yuv vmaf_v0.6.1.pkl --ssim --ms-ssim --log-fmt json --log same.json
Start calculating VMAF score...
Exec FPS: 0.773098
VMAF score = 5.421821
SSIM score = 0.285583
MS-SSIM score = 0.400130

参考如何在Ubuntu上从JPEG或其他图像创建YUV422帧

收藏
评论

如果您只想图像相似,那是一回事,而面部相似又是另一回事。两个完全不同的人可能会出现在相同的背景中,对图像相似性的分析表明他们是相同的,而同一个人可能在两种不同的环境中拍摄,相似性分析表明它们是不同的。

如果需要进行面部分析,则应搜索特定于此的算法。通常在这种分析中计算相对的眼睛,鼻子和嘴巴的大小和位置。

收藏
评论

关于堆栈溢出时的图像相似性算法的讨论。由于不需要检测扭曲或翻转的图像,因此只要图像裁剪不太严重,直方图方法就足够了。

收藏
评论

您可以使用现有的深度学习体系结构(例如VGG)从图像生成特征,然后使用相似度度量(例如余弦相似度)来查看两个图像是否基本相同。

整个管道非常容易设置,您无需了解神经网络架构(您可以将其视为黑匣子)。而且,这些功能非常通用,可用于查找各种对象之间的相似性,而不仅仅是面部。

以下是几个博客,可指导您完成整个过程。 http://blog.ethanrosenthal.com/2016/12/05/recasketch-keras/ https://erikbern.com/2015/09/24/nearest-neighbor-methods-vector-models-part-1.html

收藏
评论

强大的哈希函数可以做到这一点。但是在那个领域仍然有很多研究正在进行。我不确定是否已经有可用的原型。

希望能有所帮助。

收藏
评论

亚马逊有一个称为Rekognition的新API,该API可让您比较两个图像的面部相似度。该api返回每个面孔彼此之间的相似性百分比以及每个面孔的边界框。

Rekognition还包括用于面部分析(返回性别,大致年龄和其他相关面部细节)和对象场景检测(返回图像中对象的标签)的API。

收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题