我正在寻找几种方法来比较两个图像,看看它们有多相似.目前我计划将百分比作为"相似性指数"的最终结果.我的计划大纲是这样的:
我最近做了很多阅读,我读过的一些东西似乎非常复杂和先进,而不是像我这样只有大约一年的Java经验的人.到目前为止,我读过:
傅立叶变换 - 我发现这在Java中实现相当混乱,但显然Java Advanced Imaging API有一个类.虽然我不确定如何将输出转换为实际结果
SIFT算法 - 看起来非常复杂
直方图 - 可能是迄今为止最简单的直方图
像素抓取 - 似乎可行,但如果两个图像之间有相当大的变化,它看起来不会产生任何类型的准确结果.我可能错了?
我还想先使用Sobel滤波器预处理图像,然后进行比较.问题是实际的比较部分.
所以,是的,我想看看是否有人有想法比较Java中的图像.希望此前有人做过类似的项目.我只想获得一些关于可行的比较技术的输入,这些技术在Java中实现起来并不困难.
提前致谢
所以我正在研究一个简单的Java应用程序,它允许用户将图像作为查询输入,并让应用程序将它与图像数据库(基本上只是不同图像的目录)进行比较.我基本上正在研究几种图像相似性测量技术,以找出适合比较汽车图片的技术.
我一直在做一些阅读,除了FFT/SSIM之外,我读过SIFT算法可以产生非常好的结果.但是,作为一个只有一年左右的基本Java经验的人,我真的不确定我是否是一个足够好的程序员才能实现它.天啊,由于它的明显复杂性,我仍然无法理解算法的核心概念.
所以我想问那些经验比我多的人.首先为此目的实施SIFT是否实用?我可以单独使用JDK(没有其他插件,如果可能的话)吗?我该怎么做呢?
提前致谢
我正在学习浮点加法,我在一个部分比较困惑.我正在使用的例子是这样的:
(假设8位机器,指数超过-3)
x = 6.75 = 01011011
y = -10 = 11100100
Run Code Online (Sandbox Code Playgroud)
反规范并使用相同的指数给出:
x = 1.1011 x 2^2 = 0.1101 x 2^3
y = -1.0100 x 2^3
Run Code Online (Sandbox Code Playgroud)
添加/减去尾数给出:
01101 + -10100 = -00111
Run Code Online (Sandbox Code Playgroud)
我不太懂01101 + -10100 = -00111.有人可以向我解释一下吗?