我正处于一个项目的可行性阶段,我想知道使用Machine Vision
是否可以完成以下工作
如果我想知道两个文件是否为完全相同的,我将在文件上使用散列函数(例如sha1
或md5
),并将结果存储在数据库中。
然而,如果我有两个图像,其中image 1
是90%的质量和image 2
是100%的质量,那么这将不会工作,因为他们将有不同的哈希。
使用机器视觉,是否可以“查看”一个图像并从中创建一个签名,以便当遇到另一个图像时,我们可以说“我们已经在系统中获得了这个图像”,如果是,忽略新的图像,如果不是,保存该图像?
我知道您能够对两幅已知的图像进行机器视觉比较,例如:
https://www.pyimagesearch.com/2014/09/15/python-compare-two-images/
(很不幸,这里有很多代码,所以我不能简单地粘贴在这里供参考。)
但是,通过图像比较,一幅图像会非常昂贵。
谢谢
发布于 2019-01-30 10:44:12
python提供了名为:Image散列的模块:
图像哈希-编码的图像,这是值得赞扬的下面。
from PIL import Image
import imagehash
hash = imagehash.average_hash(Image.open('./image_1.png'))
print(hash)
# d879f8f89b1bbf
otherhash = imagehash.average_hash(Image.open('./image_2.png'))
print(otherhash)
# ffff3720200ffff
print(hash == otherhash)
# False
print(hash)
上面是python代码,如果图像相同,它将打印"true“,如果图像不相同,则打印"false”。谢谢。
发布于 2020-04-08 23:41:14
我不是你所说的90%和100%的意思。它们的图像压缩质量是否使用JPEG?尽管如此,您可以使用许多方法来匹配图像,例如只使用图像处理方法,如SIFT
、SURF
、BRISK
、ORB
、FREAK
或机器学习方法(如Siamese networks
)。然而,对于简单的计算机来说,它们是很重的(在我的计算机上由内核-i7 2670 if供电,从100到2000毫秒之间的2兆像素匹配),特别是如果你运行它们没有并行(编程没有GPU,AVX,.),特别是最后一个。
对于散列,您也可以使用perceptual hash functions
。它们被广泛应用于在线版权侵权案件的查找,以及在digital forensics
中,因为散列之间具有相关性,所以可以找到类似的数据(例如,具有不同的水印) [1]。此外,你也可以search copy move forgery
和阅读文件围绕它,看看如何可以找到相似的图像。
https://stackoverflow.com/questions/52916797
复制相似问题