使用图像进行java相似图像搜索
我正在做一个项目,在这个项目中,两张图片将被检查相似性,比如“谷歌图片搜索”
我在谷歌上搜索,也在包括stackoverflow在内的多个网站上搜索,了解了各种技术,如直方图、sift、傅立叶变换、像素抓取等。
作为这一领域的初学者,事情太复杂了,我无法理解
我的问题是:
我可以从哪里开始??是否有任何书籍或网站提供学习如何实际使用这些技术的教程
是否有新的技术可以用于此目的
我想开始通过颜色搜索图像,如果可能的话,以后再搜索其他属性
首选Java语言
在这个话题上也有类似的线索,但它是多年前写的
# 1 楼答案
这取决于你的用例。这些图片是通用的,还是在相似的照明条件和视角下拍摄的
这些方法可以根据模型的复杂性进行分类。本质上,我们可以区分直接方法和基于特征的方法
直接(或基于强度的)方法试图(迭代地)通过最小化基于重叠区域的强度差的误差函数来估计相似性。每个图像必须以相同的比例、视角等完全代表相同的场景,以便重叠。相似性度量可以通过计算和平方差(SSD)或ZSSD、相关系数(CC)、互信息(MI)和相关比(RC)来实现
直接方法可能很有用,例如检查新的视频压缩算法的工作情况。请看下面的文章:
http://docs.opencv.org/trunk/doc/tutorials/highgui/video-input-psnr-ssim/video-input-psnr-ssim.html
另一方面,我们可以讨论基于特征的方法。他们试图在点、线或其他几何实体之间建立对应关系,以估计摄像机参数。当图像的结构单元(像素)不包含有关其内容的足够信息时,它们可能很有用。因此,基于特征的方法试图用数学特征(n维向量)来表示图像内容,然后使用分类器来比较这些特征,以获得关于它们相似性的度量
# 2 楼答案
我只是参考了@Alex代码,并添加了一些其他方法,从位置获取所有特定文件,并逐个处理图像
希望这能有所帮助
# 3 楼答案
为此,我制作了一个名为图像相似性搜索器的tool,作为http://sourceforge.net/projects/imgndxr/上可用的自由软件
它使用两个库: