机器视觉-散列图像

时间:2018-10-21 15:15:33

标签: computer-vision

我正处于项目的可行性研究阶段,想知道是否可以使用Machine Vision执行以下操作:

如果我想查看两个文件是否相同,则可以在文件上使用各种哈希函数(例如sha1md5)并存储结果在数据库中。

但是,如果我有两张图像,其中image 1的质量为90%,image 2的质量为100%,则这将不起作用,因为它们具有不同的哈希值。

使用机器视觉,是否可以“查看”图像并从中创建签名,以便在遇到另一个图像时,我们可以说“系统中已经有该图像”,如果是, ,不理会新图片,如果不保存,保存图片吗?

我知道您可以在两个已知图像之间执行机器视觉比较,例如:

https://www.pyimagesearch.com/2014/09/15/python-compare-two-images/

(不幸的是,里面有很多代码,所以我不能简单地粘贴在这里作为参考)

但是通过图像比较的图像将非常昂贵。

谢谢

2 个答案:

答案 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压缩图像质量?无论如何,您可以使用多种方法来匹配图像,例如仅使用图像处理方法,例如SIFTSURFBRISKORBFREAK或机器学习方法,例如Siamese networks。但是,它们对于简单的计算机运行(在我的由core-i7 2670QM驱动的计算机上,对于2兆像素的匹配,从100到2000 ms)运行很繁重,尤其是如果您在没有并行性的情况下运行它们(没有GPU,AVX,.. ),特别是最后一个。

对于散列,您也可以使用perceptual hash functions。它们被广泛用于查找在线版权侵权案件以及digital forensics中,因为它们具有散列之间具有相关性的功能,因此可以找到相似的数据(例如,具有不同的水印)[1]。另外,您可以search copy move forgery并阅读其周围的论文,并查看如何找到相似的图像。