Java-图像识别
image-processing
java
7
0

我大约有5000张带有水印的图像,以及5000张没有水印的相同图像。每组图像的文件名都不以任何方式相互关联。我正在寻找Java中最好的API,可以用来将每个带有水印的图像与其非带水印的图像配对。

参考资料:
Stack Overflow
收藏
评论
共 2 个回答
高赞 时间 活跃

您可以使用OpenCV库。可以在Java中使用。请遵循http://docs.opencv.org/doc/tutorials/introduction/desktop_java/java_dev_intro.html

关于图像比较,您可以在此处看到另一个有用的答案: 检查图像与OpenCV的相似性

收藏
评论

我认为这更多是关于性能,然后是图像比较本身,答案是以这种方式编写的,因此如果您需要比较本身的帮助,请给我评论...

  1. 为每个图像创建简化的直方图

    假设每个通道8个值,每个强度级别限制为4位。这将导致每个图像3*8*4=3*32

  2. 排序图像

    取上述直方图并将其视为一个数字,然后按升序或降序排序A组的图像

  3. 匹配AB分组图像

    现在相应的图像应具有相似的直方图,因此从未排序的B组(带水印)中获取图像,对A组中所有最接近的匹配项(原始)进行bin搜索 ,然后将更多更鲁棒的方法与选定的图像(而不是5000 )进行比较。

  4. 如果来自A组的图像已经匹配,则添加标志

    因此您可以忽略第3号项目符号中已经匹配的图像,以提高速度

[笔记]

还有其他改进方法,例如使用感知哈希算法

收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号