我正处于项目的可行性研究阶段,想知道是否可以使用Machine Vision
执行以下操作:
如果我想查看两个文件是否相同,则可以在文件上使用各种哈希函数(例如sha1
或md5
)并存储结果在数据库中。
但是,如果我有两张图像,其中image 1
的质量为90%,image 2
的质量为100%,则这将不起作用,因为它们具有不同的哈希值。
使用机器视觉,是否可以“查看”图像并从中创建签名,以便在遇到另一个图像时,我们可以说“系统中已经有该图像”,如果是, ,不理会新图片,如果不保存,保存图片吗?
我知道您可以在两个已知图像之间执行机器视觉比较,例如:
https://www.pyimagesearch.com/2014/09/15/python-compare-two-images/
(不幸的是,里面有很多代码,所以我不能简单地粘贴在这里作为参考)
但是通过图像比较的图像将非常昂贵。
谢谢
答案 0 :(得分:0)
python提供了名为:imagehash的模块:
imagehash-对以下图像进行编码。
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”。 谢谢。
答案 1 :(得分:0)
我不是90%和100%的意思。它们是否使用JPEG压缩图像质量?无论如何,您可以使用多种方法来匹配图像,例如仅使用图像处理方法,例如SIFT
,SURF
,BRISK
,ORB
,FREAK
或机器学习方法,例如Siamese networks
。但是,它们对于简单的计算机运行(在我的由core-i7 2670QM驱动的计算机上,对于2兆像素的匹配,从100到2000 ms)运行很繁重,尤其是如果您在没有并行性的情况下运行它们(没有GPU,AVX,.. ),特别是最后一个。
对于散列,您也可以使用perceptual hash functions
。它们被广泛用于查找在线版权侵权案件以及digital forensics
中,因为它们具有散列之间具有相关性的功能,因此可以找到相似的数据(例如,具有不同的水印)[1]。另外,您可以search copy move forgery
并阅读其周围的论文,并查看如何找到相似的图像。