java sift 图片相似度,简单快速的图像相似性比较方法

article/2025/9/30 22:04:08

我最近也面临同样的问题,为了解决这个问题(简单快速的算法比较两个图像),我贡献了

img_hash module

要打开“控制”,您可以从

this link

.

img_哈希模块提供六种图像哈希算法,非常容易使用。

代码示例

e8Hvu.png

起源Lena

KVGLM.png

模糊莉娜

bCvaw.png

调整Lena的大小

GeYPT.png

移动Lena

#include

#include

#include

#include

#include

#include

void compute(cv::Ptr<:img_hash::imghashbase> algo)

{

auto input = cv::imread("lena.png");

cv::Mat similar_img;

//detect similiar image after blur attack

cv::GaussianBlur(input, similar_img, {7,7}, 2, 2);

cv::imwrite("lena_blur.png", similar_img);

cv::Mat hash_input, hash_similar;

algo->compute(input, hash_input);

algo->compute(similar_img, hash_similar);

std::cout<

algo->compare(hash_input, hash_similar)<<:endl>

//detect similar image after shift attack

similar_img.setTo(0);

input(cv::Rect(0,10, input.cols,input.rows-10)).

copyTo(similar_img(cv::Rect(0,0,input.cols,input.rows-10)));

cv::imwrite("lena_shift.png", similar_img);

algo->compute(similar_img, hash_similar);

std::cout<

algo->compare(hash_input, hash_similar)<<:endl>

//detect similar image after resize

cv::resize(input, similar_img, {120, 40});

cv::imwrite("lena_resize.png", similar_img);

algo->compute(similar_img, hash_similar);

std::cout<

algo->compare(hash_input, hash_similar)<<:endl>

}

int main()

{

using namespace cv::img_hash;

//disable opencl acceleration may(or may not) boost up speed of img_hash

cv::ocl::setUseOpenCL(false);

//if the value after compare <= 8, that means the images

//very similar to each other

compute(ColorMomentHash::create());

//there are other algorithms you can try out

//every algorithms have their pros and cons

compute(AverageHash::create());

compute(PHash::create());

compute(MarrHildrethHash::create());

compute(RadialVarianceHash::create());

//BlockMeanHash support mode 0 and mode 1, they associate to

//mode 1 and mode 2 of PHash library

compute(BlockMeanHash::create(0));

compute(BlockMeanHash::create(1));

}

在这种情况下,colormomenthash给我们最好的结果

高斯模糊攻击:0.567521

轮班攻击:0.229728

调整攻击大小:0.229358

每种算法的优缺点

m2Sd9.jpg

img_哈希的性能也很好

与Phash库的速度比较(UKbench的100张图像)

W8uJS.jpg

Pbmbd.jpg


http://chatgpt.dhexx.cn/article/FkLfCM5u.shtml

相关文章

图像特征提取(二)——SIFT算法详解

转载自:http://blog.csdn.net/zddblog/article/details/7521424尺度不变特征变换匹配算法详解 Scale Invariant Feature Transform(SIFT)Just For Fun zdd zddmailgmail.com or (zddhubgmail.com) 对于初学者&#xff0c;从David G.Lowe的论文到实现&#xff0c;有许多鸿沟…

Matlab实现sift特征检测+图像拼接

Matlab实现sift特征检测图像拼接共有12个m文件&#xff0c;其中main为主程序&#xff0c;点击运行即可。 一、部分代码示例 close all; clear; clc;im1imread(test3.png); im2imread(test4.png);gray1img2gray(im1); gray2img2gray(im2);[des1,loc1]sift(gray1); [des2,loc2]…

sfm算法之三角化(三角测量)

sfm算法流程一般是特征点提取、特征点匹配、计算本质矩阵/基础矩阵&#xff0c;最后三角化。但是利用机械臂去观察周围&#xff0c;前后帧姿态变化参数是具有的&#xff0c;所以不需要通过基础矩阵获取。 即利用机械臂的信息直接进行深度估计。已知&#xff1a;手眼标定、相机外…

简述人脸识别技术

简介 人脸识别技术是一种生物识别技术&#xff0c;可以用来确认用户身份。人脸识别技术相比于传统的身份识别技术有很大的优势&#xff0c;主要体现在方便性上。传统的身份认证方式诸如&#xff1a;密码、PIN码、射频卡片、口令、指纹等&#xff0c;需要用户记住复杂密码或者携…

Python机器视觉--OpenCV进阶(核心)-边缘检测之SIFT关键点检测

SIFT关键点检测 SIFT&#xff0c;即尺度不变特征变换&#xff08;Scale-invariant feature transform&#xff0c;SIFT&#xff09;&#xff0c;是用于图像处理领域的一种描述。这种描述具有尺度不变性&#xff0c;可在图像中检测出关键点&#xff0c;是一种局部特征描述子。 …

图像特征与描述子(直方图, 聚类, 边缘检测, 兴趣点/关键点, Harris角点, 斑点(Blob), SIFI, 纹理特征)...

1.直方图 用于计算图片特征&#xff0c;表达&#xff0c; 使得数据具有总结性&#xff0c; 颜色直方图对数据空间进行量化&#xff0c;好比10个bin 2. 聚类 类内对象的相关性高 类间对象的相关性差 常用算法&#xff1a;kmeans&#xff0c; EM算法&#xff0c; meanshift&#…

SIFI尺度不变特征变换算法

SIFT 尺度不变特征变换算法 David Lowe关于Sfit算法&#xff0c;2004年发表在Int. Journal of Computer Vision的经典论文中&#xff0c;对尺度空间&#xff08;scal space)是这样定义的 &#xff1a; It has been shown by Koenderink (1984) and Lindeberg (1994) that un…

Opencv图像识别从零到精通(34)---SIFI

一、理论知识 Scale Invariant Feature Transform&#xff0c;尺度不变特征变换匹配算法&#xff0c;对于算法的理论介绍&#xff0c;可以参考这篇文章http://blog.csdn.net/qq_20823641/article/details/51692415&#xff0c;里面很详细&#xff0c;可以更好的学习。这里就不多…

32-SIFI特征点提取(EmguCV学习)

文章目录 RecordCode效果 Record 1、特征点检测与匹配常用的算法&#xff1a;FAST&#xff08;FastFeatureDetector&#xff09;、STAR&#xff08;StarFeatureDetector&#xff09;、SIFT、SURF、ORB、MSER、GFTT&#xff08;GoodFeaturesToTrackDetector&#xff09;、HARRI…

SIFI特征点提取

尺度不变特征变换匹配算法详解 Scale Invariant Feature Transform(SIFT) Just For Fun zdd zddmailgmail.com 对于初学者&#xff0c;从David G.Lowe的论文到实现&#xff0c;有许多鸿沟&#xff0c;本文帮你跨越。 1、SIFT综述 尺度不变特征转换(Scale-invariant feature tr…

图像SIFI笔记

Image/userl representation > down screen tasks 端到端的 文本领域 字典 visual word本质是 local feature handcraft feature 希望这个具有足够的泛华性 generalize 为了有交集 泛化性 clustering 聚类 Quantization 量化 每张图像 有特征点 local feature sift(128d维…

特征点匹配(SIFI)

1.SIFI https://blog.csdn.net/weixin_38404120/article/details/73740612&#xff08;参考了这个作者的内容&#xff09; 结合书上加博客的内容进行理解&#xff1b; 求取SIFI特征的步骤&#xff1a; 首先要对图像归一化&#xff0c;然后将图像扩大为原来的两倍&#xff0…

SIFI和ORB在尺度缩放、旋转、仿射上的特征点不变实验代码,并比较SIFI和ORB提取特征点的速度

SIFI和ORB在尺度缩放、旋转、仿射上的特征点不变 一、SIFI算法1.验证旋转不变性2.验证尺度不变性3.验证仿射不变性 对原图进行仿射变换并输出 二、ORB算法1.验证旋转不变性2.验证尺度不变性3.验证仿射不变性 对原图进行仿射变换并输出 三、比较SIFT和ORB的尺度旋转&#xff0c;…

向量范数简述

向量范数&#xff1a;表征在向量空间中向量的大小 一般表示&#xff1a;,其中X是n维向量&#xff0c;一般如果省略下面的p且无特别说明的话&#xff0c;指的就是2范数&#xff0c;也叫欧几里得范数。对向量来说&#xff0c;就是指向量的模。 常用的向量范数&#xff1a; 0范…

欧几里得范数/欧几里得距离(L2范数)

首先m维空间的概念: Rm的距离结构: 2维平面空间: m维空间: 范形空间距离 n维矢量空间中的元素X的Lp范数: 其中X是一连串的向量 最常用的是L2范数: 本质是一个距离概念 参考:《数学分析》

概念理解_L2范数(欧几里得范数)

L2范数 L2范数、欧几里得范数一些概念。 首先&#xff0c;明确一点&#xff0c;常用到的几个概念&#xff0c;含义相同。 欧几里得范数&#xff08;Euclidean norm&#xff09; 欧式长度 L2 范数 L2距离 Euclidean norm Euclidean length L2 norm L2 distance norm 对于一…

0范数,1范数,欧几里得范数等范数总结

以下分别列举常用的向量范数和矩阵范数的定义。 向量范数 1-范数&#xff1a; 即向量元素绝对值之和&#xff0c;matlab调用函数norm(x, 1) 。 2-范数&#xff1a; Euclid范数&#xff08;欧几里得范数&#xff0c;常用计算向量长度&#xff09;&#xff0c;即向量元素绝对值…

范数、正则化、归一化、标准化

在总结正则化&#xff08;Regularization&#xff09;之前&#xff0c;我们先谈一谈正则化是什么&#xff0c;为什么要正则化。 个人认为正则化这个字眼有点太过抽象和宽泛&#xff0c;其实正则化的本质很简单&#xff0c;就是对某一问题加以先验的限制或约束以达到某种特定目的…

常见向量范数和矩阵范数

1、向量范数 1-范数&#xff1a;&#xff0c;即向量元素绝对值之和&#xff0c;matlab调用函数norm(x, 1) 。 2-范数&#xff1a;&#xff0c;Euclid范数&#xff08;欧几里得范数&#xff0c;常用计算向量长度&#xff09;&#xff0c;即向量元素绝对值的平方和再开方&#xf…

欧氏距离,l2范数,l2-loss,l2正则化

欧式距离,l2范数,l2-loss,l2正则化 1.欧氏距离2.L2范数范数计算公式L1范数L2范数在机器学习方面的区别为什么L2范数可以防止过拟合? 3.L2-Loss4.L2正则化正则化L2正则化 参考文献 1.欧氏距离 距离度量&#xff08;Distance&#xff09;用于衡量个体在空间上存在的距离&#x…