Python+Opencv识别两张相似图片python

那么从机器的角度来说也是这样的,先识别图像的特征,然后再相比。

很显然,在没有经过训练的计算机(即建立模型),那么计算机很难区分什么是海洋,什么是沙漠。但是计算机很容易识别到图像的像素值。

因此,在图像识别中,颜色特征是最为常用的。(其余常用的特征还有纹理特征、形状特征和空间关系特征等)

其中又分为

直方图计算法这里先用直方图进行简单讲述。

先借用一下恋花蝶的图片,

从肉眼来看,这两张图片大概也有八成是相似的了。在Python中利用opencv中的calcHist()方法获取其直方图数据,返回的结果是一个列表,使用matplotlib,画出了这两张图的直方图数据图如下:

是的,我们可以明显的发现,两张图片的直方图还是比较重合的。所以利用直方图判断两张图片的是否相似的方法就是,计算其直方图的重合程度即可。计算方法如下:

其中gi和si是分别指两条曲线的第i个点。

最后计算得出的结果就是就是其相似程度。

不过,这种方法有一个明显的弱点,就是他是按照颜色的全局分布来看的,无法描述颜色的局部分布和色彩所处的位置。

也就是假如一张图片以蓝色为主,内容是一片蓝天,而另外一张图片也是蓝色为主,但是内容却是妹子穿了蓝色裙子,那么这个算法也很可能认为这两张图片的相似的。

缓解这个弱点有一个方法就是利用Image的crop方法把图片等分,然后再分别计算其相似度,最后综合考虑。

图像指纹与汉明距离在介绍下面其他判别相似度的方法前,先补充一些概念。第一个就是图像指纹

图像指纹和人的指纹一样,是身份的象征,而图像指纹简单点来讲,就是将图像按照一定的哈希算法,经过运算后得出的一组二进制数字。

说到这里,就可以顺带引出汉明距离的概念了。

假如一组二进制数据为101,另外一组为111,那么显然把第一组的第二位数据0改成1就可以变成第二组数据111,所以两组数据的汉明距离就为1

简单点说,汉明距离就是一组二进制数据变成另一组数据所需的步骤数,显然,这个数值可以衡量两张图片的差异,汉明距离越小,则代表相似度越高。汉明距离为0,即代表两张图片完全一样。

如何计算得到汉明距离,请看下面三种哈希算法

平均哈希法(aHash)此算法是基于比较灰度图每个像素与平均值来实现的

一般步骤:

1.缩放图片,一般大小为8*8,64个像素值。2.转化为灰度图3.计算平均值:计算进行灰度处理后图片的所有像素点的平均值,直接用numpy中的mean()计算即可。4.比较像素灰度值:遍历灰度图片每一个像素,如果大于平均值记录为1,否则为0.5.得到信息指纹:组合64个bit位,顺序随意保持一致性。最后比对两张图片的指纹,获得汉明距离即可。

感知哈希算法(pHash)平均哈希算法过于严格,不够精确,更适合搜索缩略图,为了获得更精确的结果可以选择感知哈希算法,它采用的是DCT(离散余弦变换)来降低频率的方法

缩小图片:32*32是一个较好的大小,这样方便DCT计算转化为灰度图计算DCT:利用Opencv中提供的dct()方法,注意输入的图像必须是32位浮点型,所以先利用numpy中的float32进行转换缩小DCT:DCT计算后的矩阵是32*32,保留左上角的8*8,这些代表的图片的最低频率计算平均值:计算缩小DCT后的所有像素点的平均值。进一步减小DCT:大于平均值记录为1,反之记录为0.得到信息指纹:组合64个信息位,顺序随意保持一致性。最后比对两张图片的指纹,获得汉明距离即可。

dHash算法相比pHash,dHash的速度要快的多,相比aHash,dHash在效率几乎相同的情况下的效果要更好,它是基于渐变实现的。

步骤:

缩小图片:收缩到9*8的大小,以便它有72的像素点转化为灰度图计算差异值:dHash算法工作在相邻像素之间,这样每行9个像素之间产生了8个不同的差异,一共8行,则产生了64个差异值获得指纹:如果左边的像素比右边的更亮,则记录为1,否则为0.最后比对两张图片的指纹,获得汉明距离即可。

整个的代码实现如下:

以上就是本文的全部内容,希望对大家学习python程序设计有所帮助。

THE END
1.通过机器学习让图像识别更精准更快速机器视觉是一种利用计算机系统分析和理解数字图像内容的手段。这项技术结合了计算机科学、电气工程和认知科学等多个领域,以模仿人类视觉系统工作原理来解析图片中的对象特征,从而能够执行诸如物体检测、分类以及跟踪等任务。 三、传统方法与挑战 传统图像处理算法依赖于手工设计的人类智慧,这限制了它们适应新环境或新类型数https://www.wbhgwbnd.com/ji-qi-ren/861790.html
2.图像识别算法都有哪些方法图像识别算法都有哪些方法 图像识别算法是计算机视觉领域的核心任务之一,它涉及到从图像中提取特征并进行分类、识别和分析的过程。随着深度学习技术的不断发展,图像识别算法已经取得了显著的进展。本文将介绍图像识别算法的主要方法,包括传统方法和基于深度学习的方法。https://www.elecfans.com/d/4033152.html
3.图像图像识别经典算法图像识别算法特征提取:从图像中提取有助于分类的特征。 模型训练:使用特征和标签数据集训练模型。 预测与分类:利用训练好的模型对新图像进行分类。 二、经典图像识别算法 1. Haar-like Features + AdaBoost (Viola-Jones) Viola-Jones算法是人脸检测领域的里程碑,它结合了Haar-like特征和AdaBoost算法。Haar-like特征简单且计算https://blog.csdn.net/yuzhangfeng/article/details/140436315
4.图像识别算法起源图像识别主流算法卫斯理的技术博客在图片识别方面,人工神经网络是应用最广泛、最有效的技术。神经网络同时执行许多数学过程,神经网络是面部识别系统的基础。 算法执行三个主要功能:识别图像、视频或实时流中的人脸;创建人脸的数学模型;并将模型与训练集或数据库进行比较以确认一个人的身份。 https://blog.51cto.com/u_12207/10760565
5.图片文字识别的算法分类算法中的难例图片判断华为云帮助中心为你分享云计算行业信息,包含产品介绍、用户指南、开发指南、最佳实践和常见问题等文档,方便快速查找定位问题与能力成长,并提供相关资料和解决方案。本页面关键词:图片文字识别的算法。https://support.huaweicloud.com/topic/306993-1-T
6.基于深度卷积神经网络的物体识别算法以上物体检测的方法都只是利用RGB彩色信息,而没有利用深度信息。由于深度数据具有光照和颜色不变性,并且能提供彩色数据不能提供的几何信息,对深度数据提取额外的特征将大幅提升视觉算法的性能。华盛顿大学Lai等[9]创建了一个RGB-D物体数据库用于验证物体识别算法。这个数据库既包含彩色图片又包含对应的深度信息,分别约为https://html.rhhz.net/jsjyy/2016-12-3333.htm
7.图像识别算法有哪些图像识别十大经典算法图像识别是计算机视觉领域中的一个重要分支,它旨在让计算机能够理解和识别图像。下面将介绍一些常见的图像识别算法。 1.图像分类 图像分类是指将一张图像分类到不同的类别中。常用的图像分类算法包括卷积神经网络(CNN)、支持向量机(SVM)等。 2.目标检测 https://www.eefocus.com/e/518039.html
8.三年磨一剑——微信OCR轻松提取图片文字ocr算法文本行图6 长按图片分类标签体系 3. 通用OCR识别 (1)文本检测 常用的基于深度学习的文本检测方法一般可以分为基于回归的、基于分割的两大类,当然还有一些将两者进行结合的方法。 图7 常用文本检测算法 基于回归的方法分为 box回归和 像素值回归。 采用box回归的方法主要有CTPN、Textbox系列和EAST,这类算法对规则形状文https://dy.163.com/article/G5NTLL1U0518R7MO.html
9.秒懂算法基于主成分分析法随机森林算法和SVM算法的人脸识别本文的任务与手写数字识别非常相似,都是基于图片的多分类任务,也都是有监督的。 01、数据集介绍与分析 ORL 人脸数据集共包含 40 个不同人的 400 张图像,是在 1992 年 4 月至 1994 年 4 月期间由英国剑桥的 Olivetti 研究实验室创建。 此数据集下包含 40 个目录,每个目录下有 10 张图像,每个目录表示一个https://xie.infoq.cn/article/ca9d988d0f70305993976225a
10.给照片穿上“隐身衣”,最强人脸识别算法也失灵!业界推出最新AIFawkes ,已经让旷视、微软、亚马逊等公司的面部识别算法失灵。 来自芝加哥的调查团队称。Fawkes的正是为照片添加防识别“隐身衣”的AI软件,经检测,它已经在最先进的面部识别技术中取得了百分百的胜利。 我们先来看一组图片。 相信你很难看出两组照片有任何差别。事实上,后者已经过了Fawkes处理,并能够屏蔽任何人脸识别https://www.leiphone.com/category/industrynews/AZf9RS8Y63Uvxi2j.html
11.有哪些免费图片转word软件APP推荐有哪些免费图片转word软件下载豌豆荚有哪些免费图片转word软件榜单为您提供最新有哪些免费图片转word软件大全,这里不仅有有哪些免费图片转word软件安卓版本APP、历史版本应用下载资源,还有类似有哪些免费图片转word软件的应用推荐,欢迎大家前来豌豆荚下载。https://www.wandoujia.com/bangdan/395418/
12.基于改进残差网络的扬尘图像识别方法由于扬尘图像识别目前没有公开的数据集. 因此,通过在互联网上收集各类有关扬尘场景的图片, 整理形成训练集和测试集, 然后使用数据增强在训练集和测试集中生成更多的数据, 解决了该研究中没有数据集以及数据量不足的问题. 为了增强模型的泛化能力, 采用数据增强的操作扩充所需的数据样本, 让网络模型更好的适应各种应https://c-s-a.org.cn/html/2021/5/7909.html
13.深入解析机器学习核心概念分类特征有时称为离散特征。 与数值数据相对。 形心(centroid) 聚类的中心,由k-means或k-median算法决定。例如,如果 k 为 3,则 k-means 或 k-median 算法会找出 3 个形心。 检查点 (checkpoint) 一种数据,用于捕获模型变量在特定时间的状态。借助检查点,可以导出模型权重,跨多个会话执行训练,以及使训练在发生https://www.360doc.cn/article/7673502_976517820.html