pHash - 开源感知哈希库
pHash 是一个用于计算图像、视频、音频和文本的感知哈希的 C++ 库。与密码哈希(仅仅一个位的变化就会完全改变)不同,感知哈希随着输入的变化而逐渐变化 — — 两个看起来或听起来与人类相同的文件,在汉明距离上产生的哈希值彼此接近,即使在经过了损失性重编码、调整大小、轻微噪声或其他保留内容的变换之后也是如此。
| 函数 | 哈希内容 | 输出 | 稳健性 |
|---|---|---|---|
ph_dct_imagehash |
图像 (DCT) | 64 位 ulong64 |
缩放、压缩、轻微的亮度/对比度 |
ph_image_digest / ph_compare_images |
图像 (拉森变换 + DCT, "Radish") | 40 字节摘要 + 交叉相关性 | 旋转、缩放 |
ph_mh_imagehash |
图像 (Marr-Hildreth 波形) | 72 字节 (576 位) | 缩放、轻微裁剪、JPEG 杂点 |
ph_dct_videohash |
视频 (关键帧 DCT 哈希 + LCS) | 64 位哈希数组 | 重编码、帧速率变化 |
ph_audiohash |
音频 (Bark-级频谱, Haitsma-Kalker 风格) | 32 位帧数组 | 重编码、轻微的音频增益 |
ph_texthash |
文本 (k-gram 筛选) | (哈希,偏移) 数组 |
插入、删除、编辑 |
距离的计算使用了辅助函数: ph_hamming_distance,ph_hammingdistance2,ph_crosscorr,ph_dct_videohash_dist 和 ph_audio_distance_ber 用于相应的哈希家族。有关完整的 API,请参阅 src/pHash.h 和 src/audiophash.h。
暂无开放 Issues,或尚未同步最近议题。