java - 感知哈希 (pHash) 图像颜色与灰度与阈值哪个是最佳输入源

标签 java image-processing hash phash imagehash

我查了很多资料,但没有找到明确的答案。 pHash 输入最常使用哪种图像颜色来生成哈希/指纹。

例如,我有一个正在源图像中查找的目标图像,但目标可以有多种颜色和阴影,但形状始终相同(例如:郁金香)。我按原样对图像进行了实验,将其变成灰度和阈值(纯黑和白)。我知道大多数 pHash 库都会在进行哈希之前先对输入进行灰度化。

但是在我继续之前,预处理图像颜色值得吗? (忽略大小和旋转,并假设源和目标相同)

最佳答案

因此,经过测试和更多研究后,最好使用原始彩色图像。无论如何,大多数 pHash 都会对图像进行灰度缩放,因此先执行同性恋缩放,然后再执行内部灰度缩放实际上会产生较差的结果。阈值(纯黑和白)也是如此。发生了更多的碰撞和更多的误报。

我使用了 64 位 pHash,效果非常好。我还尝试过使用 Wavelet Hash,它有利于颜色变化,但不利于整体匹配。

对我有用的是输入到二叉树中的大型数据集。这样,查找速度很快,并且有很多示例可供比较。对于 Java,我使用:https://github.com/KilianB/JImageHash

关于java - 感知哈希 (pHash) 图像颜色与灰度与阈值哪个是最佳输入源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62371689/

相关文章:

java - RecyclerView 拖放式 - 文件和文件夹

java - 根据记录集验证文件

opencv - 如何计算下图的边缘线距离?

ruby-on-rails - 如何在嵌套数组/哈希上使用 ruby​​ uniq

c++ - 在 double 组上使用 unordered_map

java - Maven 配置文件 JxBrowser 中其他依赖项内的依赖项

java - 在java中为数组分配随机数(不重复)

java - 任何人都可以建议启发式方法来获取网页并识别所使用的主色吗?

c++ - 从图像中删除不需要的线条

arrays - Ruby:通过将数组映射到数组来构建哈希