Algorithm 图像哈希用于什么?
我有时会听到这个术语,我想知道它的用途是什么?通常,散列是一种有用的方法,可以将大量数据减少到一个短(ish)数,用于识别该图像 有时,它们只是为了提供一种简便的方法来识别文件,而无需人工干预,尤其是在几个并行作者在场的情况下,这些作者无法在不重叠的情况下增加某些主计数器(JPG001 JPG002)Algorithm 图像哈希用于什么?,algorithm,image,hash,Algorithm,Image,Hash,我有时会听到这个术语,我想知道它的用途是什么?通常,散列是一种有用的方法,可以将大量数据减少到一个短(ish)数,用于识别该图像 有时,它们只是为了提供一种简便的方法来识别文件,而无需人工干预,尤其是在几个并行作者在场的情况下,这些作者无法在不重叠的情况下增加某些主计数器(JPG001 JPG002) 有时散列被认为是不可伪造的,所以我可以说——如果你生成的图像散列与我发送图像时生成的图像散列相同,那么你可以确定它来自我(而不是由作恶者调整)。然而,并不是所有的散列都能保证这一点,每隔几年,一种
有时散列被认为是不可伪造的,所以我可以说——如果你生成的图像散列与我发送图像时生成的图像散列相同,那么你可以确定它来自我(而不是由作恶者调整)。然而,并不是所有的散列都能保证这一点,每隔几年,一种流行的“加密”散列就会出现致命的缺陷。嗯。。。。要在不比较整个文件的情况下快速比较图像(广义的图像或任何其他二进制文件) 实际上,图像哈希是一种流行的方法,用于在一系列帧或视频中查找相似的图像,或者像许多电影制片厂现在所做的那样,用各种图像嵌入水印(从一种令人毛骨悚然的意义上说,几乎可以回过头来听搏击俱乐部!)。而通常对文件进行哈希时,会对文件中的各个数据位进行哈希,图像哈希在更高的级别上工作。不同之处在于,使用图像散列时,如果两张图片看起来几乎相同,但格式或分辨率不同(或者可能由于压缩而出现轻微损坏),则它们应该散列到相同的数字。尽管它们的数据的实际位完全不同,但如果它们看起来与人类完全相同,它们会散列到相同的东西 这种方法的一个应用是搜索。TinEye.com允许您上传图像,并在互联网上查找图像的许多内容。和谷歌一样,它也有一个网络爬虫,可以在网页中爬行并查找图像。然后对这些图像进行散列,并将散列和url存储在数据库中。上载图像时,它只计算散列并检索数据库中链接到该散列的所有URL。TinEye的示例使用包括查找更高分辨率版本的图片,或从某人的图片中查找其公共facebook/myspace/等个人资料(假设这些个人资料使用相同的照片) 图像散列还可以与缓存或本地存储一起使用,以分别防止照片的重新传输或副本的存储 还有很多其他可能性,包括图像认证和在视频中查找类似帧(如其他人所述)。是一个应用于任意数据并生成固定大小(主要是非常小的大小)数据的函数。有许多不同类型的散列,但如果我们谈论图像散列,它用于:
- 快速查找重复项。几乎任何哈希函数都可以工作。您将查找图像的哈希,而不是搜索整个图像
- 找到类似的图像,我将在后面解释
如果只比较原始字节,与我们看起来相同的图像可能会有很大不同。这可能是由于:
- 调整大小
- 轮换
- 颜色稍有不同的伽马
- 不同格式
- 一些轻微的噪音、水印和瑕疵
- .Average hashing是最简单的算法,它只使用很少的变换。缩放图像,转换为灰度,计算平均值,然后根据平均值对灰度进行二值化。现在将二值图像转换为整数。该算法非常简单,可以在一小时内实现
- 感知哈希使用类似的方法,但不是平均依赖于(信号处理中流行的转换)
- .Difference hash使用与a-hash相同的方法,但它不使用关于平均值的信息,而是使用梯度(相邻像素之间的差异)
- 。非常类似于p-hash,但它使用的不是DCT
顺便说一句,如果你使用python,所有这些散列都已经在中实现了。好吧,只要你清楚两个图像可能看起来基本相同,或者完全相同,甚至只是元数据不同,那么是的……元数据不同,但根据这个“比较”仍然不匹配,那么是的。如果你不想,你会使用它吗o为图像指定一个唯一的难以猜测的名称?不,这并不难猜测,它可以直接从图像本身派生出来(你不想猜对的人可能可以访问该名称)。您可以先对图像进行变换或水印,这将更改图像,使散列不再工作,但我不确定您是否刚刚破坏了散列的值。在这里,我从几个方面改进了d-hash: