感知哈希是一种用于图像搜索的技术,通过生成内容紧凑、可比较的表示形式来识别视觉上相似的图像。与加密哈希不同,加密哈希即使输入发生微小更改也会产生完全不同的输出,而感知哈希旨在为外观与人眼相似的图像创建相似的哈希值。这使得它可用于检测重复图像、查找文件的修改版本(例如,调整大小或添加水印)或识别侵犯版权等任务。例如,社交媒体平台可能会使用感知哈希来标记与已知违禁内容非常匹配的上传图像,即使这些图像已被略微修改。
该过程通常涉及分析图像的关键视觉特征(例如,边缘、颜色分布或纹理模式),并将它们转换为固定长度的哈希值。一种常见的方法是将图像调整为小的、统一的大小(例如,32x32 像素),将其转换为灰度以减少与颜色相关的噪声,然后计算离散余弦变换 (DCT) 以捕获低频空间信息。通过将像素值与阈值进行比较,将生成的数据简化为二进制哈希值。例如,开源算法 pHash 遵循这种方法,生成一个 64 位哈希值,其中每个位代表特定频率分量是否高于或低于中值。这种设计确保了像轻微的颜色调整或压缩伪影这样的细微变化不会大幅改变哈希值。
实施感知哈希的开发人员应考虑准确性和计算效率之间的权衡。虽然感知哈希是轻量级的且可以快速比较(使用汉明距离),但它们可能难以处理具有显着结构差异但整体内容相似的图像,反之亦然。例如,如果删除了关键特征,则图像的裁剪版本可能具有非常不同的哈希值,而两个具有相似调色板的不相关图像可能会产生巧合地相似的哈希值。为了解决这个问题,一些系统将感知哈希与元数据分析或机器学习模型相结合。适用于 Python 的 ImageHash 等开源库提供了预构建的工具来试验这些技术,允许开发人员测试其特定用例的阈值和哈希长度。