我正在构建一个程序,它接受 2 个数组并返回一些值来显示它们的相似程度。例如,差异较小的图像得分较高,而差异较大的图像得分较差。
到目前为止,我遇到的解决此问题的仅有的两种算法是平方差之和和归一化相关性。
这两个实现起来都相当简单,但是我想知道是否还有其他我无法找到可以使用的算法?
此外,前面提到的哪种方法最好?很高兴知道它们的准确性和效率。
谢谢,
最佳答案
比较图像通常取决于您正在处理的应用程序。通常使用的距离函数取决于图像描述符。
看看距离函数
- 欧氏距离
- 平方欧氏距离
- 余弦距离或相似性[这应该可以正常工作]
- 绝对差之和
- 差平方和
- 相关距离
- 海灵格距离
网格距离
- 曼哈顿距离
- 切比雪夫距离
统计距离函数
- Wasserstein 公制
- 马氏距离
- 布雷柯蒂斯距离
- 堪培拉距离
二进制距离函数
- L0 范数
- 杰卡德相似度
- 汉明距离
当您直接比较图像时,采用余弦相似度应该适合您。
关于c++ - 比较数组相似性的最佳比较算法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41083006/