基于Python实现图像匹配

毕业设计的系统地址也用 flask,gunicorn,supervior 和 nginx 反向代理部署在服务器了,地址点击这个链接 图像搜索引擎

本文包含相关资料包-----> 点击直达获取<-------

毕业设计的系统地址也用 flask、gunicorn、supervior 和 nginx 反向代理部署在服务器了,地址点击这个链接 图像搜索引擎

第 1 章 图像处理与特征检索

在构建图像相似度引擎之前,需要先对图像经行处理,以及提取每个图像的特征,其中图像处理也称为定义图像描述符,即通过图像描述符(也称为描述符)提取每个图像的特征。 图像描述符是用于描述图像的算法。 例如,R,G和B颜色通道的平均值和标准偏差,图像特征形状的统计矩以及形状和纹理的梯度和方位。

1.1 图像处理

对于图像初始化过程,有图像的RGB和HSV描述。 关于定义图像描述符选择,将使用HSV来使图像描述更加健壮和强大。

1.1.1 RGB 与 HSV 色彩空间简述

为了使更强大和更准确,这里将使用HSV色彩空间, HSV颜色空间的3D颜色直方图(色调,饱和度,亮度)作为图像描述符。 通常,图像由RGB的元组表示。 将RGB色彩空间作为一个立方体,如图3-1所示。

图 1-1 RGB 立方体

但是,尽管 RGB 值易于理解,但 RGB 颜色空间无法被人眼所接受。 相反,使用 HSV 颜色空间将像素映射到圆形框(如图 3-2)。

图 1-2 HSV 圆 bin 体

1.1.2 RGB 转换 HSV 算法研究

对于RGB到HSL或HSV转换,令(r,g,b)分别为颜色的红,绿,蓝坐标,其中(r,g,b)的值为0到1之间的实数。令max作为r中的最大值 ,g和b。 让min等于这些值中的最小值。计算公式如3-1所示为:

3-1

H的值通常规范化到0到360°之间。而h=0用于max=min的(就是灰色)时候而不是留下h未定义。HSL与HSV有同样的色相定义,但是其他分量不同。HSV的颜色s和v的值定义如公式3-2所示。

3-2

1.1.3 效果检测

RGB转换HSV效果如图3-3所示

图 1-3 RGB 转换 HSV

1.2 图像特征提取

图像处理过后,接着就是根据图像描述符来提取这些图像的特征,将其存储在本地数据库中,这里将采用Opencv的calcHist()函数,能够方便提取图像的像素值。

1.2.1 HSV 直方图计算研究

Opencv库有内置函数cv2.calcHist()可以统计一副图像的直方图,其使用的一般形式如下:

cv2.calcHist(images,channels,mask,histSize,ranges[,hist[,accumulate]])

u images: 原图像(图像格式为 uint8 或 oat32)。当传入函数时应该 用中括号[]括起来,例如:[img]。

u channels: 同样需要用中括号括起来,它会告诉函数我们要统计那幅图像的直方图。如果输入图像是灰度图,它的值就是 [0];如果是彩色图像 的话,传入的参数可以是 [0],[1],[2] 它们分别对应着通道 B,G,R。

u mask: 掩模图像。要统计整幅图像的直方图就把它设为 None。但是如 果你想统计图像某一部分的直方图的话,你就需要制作一个掩模图像,并 使用它。(后边有例子)

u histSize:BIN 的数目。也应该用中括号括起来,例如:[256]。 5. ranges: 像素值范围,通常为 [0,256]

1.2.2 效果检测

HSV直方图计算结果检测(如图3-4所示):

图 1-4 HSV 直方图计算

最后程序运行后在本地得到一个csv格式的文件,用于存储每个图像的hsv特征(如图3-5 所示)。

图 1-5 提取到的各个图像的 hsv 特征值(部分图)

1.3 图像特征检索

数据集中的每个图像特征提取之后,接下来需要一个方法来比较这些特征,获取相似度,其中在机器学习中,存在若干种常用的相似度计算方法。

1.3.1 相似度算法研究

卡方检验

定义:卡方检验是广泛使用的计数数据的假设检验方法。 它属于非参数检验类别,主要分析两个或更多采样率(组成比)和两个分类变量之间的相关性。 基本思想是比较理论频率和实际频率之间的吻合程度或拟合度。

公式:如公式 3-9 所示。

3-9

1.3.2 相似图像算法实现

由于数据集中的每个图像的直方图是用于与待匹配图像的直方图经行比较的,并且根据概率统计分布,选择卡方检测用来比较相似度是最好的。可知两幅图像卡方值越小,图像之间的差异性就越小,相反的,两幅图像卡方值越大,图像之间的差异性就越大(如图3-6所示)

图 1-6 卡方检验算法实现

1.3.3 效果检测

根据上述算法,经过程序运行后,传入一张体育馆侧面图片(如图3-7所示),经过相似度匹配,从图片数据集中返回了一张体育馆正面图片(如图3-8所示)。相似度匹配效果良好。

图 1-7 待匹配图片

图 1-8 匹配结果

1.4 本章小结

本章介绍到了我们构建图像相利用颜色直方图作为图像描述符,从图像的颜色分布中提取特征是有益的。正因为如此,可以为图像搜索引擎做一个重要的假设,假设如果图像包含相似的颜色分布,则这两个图像被认为是相似的。即使图像的内容是非常不同的,它将被认为是相似的,根据颜色分布。用于图像特征检索,介绍了欧几里得距离、哈曼顿距离等相似度算法,综合考虑选择了卡方检测,经过程序运行后,得到匹配的结果,检索效果良好。

第 2 章 系统设计与实现

2.1 系统需求分析

建立图像数据集,研究图像机器学习中的表示方法,研究图像相似度算法,利用Python语言建立图像相似度引擎系统。提交系统功能完善,界面人机交互好,操作简单的使用Python机器学习建立图像相似度引擎系统。基本要求如下:

(1) 能够简单提交待匹配图片。

(2) 能够自主选择匹配图片数量。

(3) 返回匹配的图片在界面上完整显示。

(4) 返回的每一张图片均有卡方值作为依据。

(5) 界面人机交互友好,功能完善。

2.2 系统功能模块设计

2.2.1 图像数据集模块设计

这里自己拍摄了很多武汉轻工大学的风景照片作为图像相似度引擎的数据集,这个数据集包含武汉轻工大学每个地方的风景照,包括基础楼、体育馆、大学生活动中心、图书馆、孔子像等等。(如图4-1所示)。

图 2-1 图像数据集

2.2.2 待匹配图片传入模块设计

采用了HTML5与JS的图片即传即显技术,能够在传入图片到服务器的同时,还能及时在界面上显示。如图4-2所示。

图 2-2 图片传入模块流程图

2.2.3 图像处理与图像特征提取模块设计

支持图像批处理,并将图像特征能够存入本地数据库,用于图像相似度匹配的计算。如图4-3所示。

图 2-3 图像处理与特性特征提取模块流程图

2.2.4 图像相似度匹配模块设计

用于带传入图像与本地数据库的相似度匹配,并且根据输入的匹配数量,以卡方值的大小来排序,并返回对应数量的图像URL链接。

系统模块总设计如图 4-4 所示

图 2-4 图像相似度引擎系统结构

2.3 系统界面设计

系统UI界面初步采用HTML5、CSS、JS设计,基于web的系统界面(如图4-5所示),在交互上操作简单,只需点击传入图片,输入匹配图片数量,执行操作。

图 2-5 系统 UI 界面设计

2.4 系统实现

依据上一节系统模块设计以及系统界面设计,基本实现了应有的功能,界面已完成制作(如图4-6所示)。

图 2-6 图像相似度引擎界面

2.5 功能检验

功能经测试,相对来说匹配度良好,但是准确率有所不足(如图4-7,图4-8,图4-9所示)。

图 2-7 匹配结果

2.6 本章小结

本章根据系统需求分析,设计了系统的功能模块,根据界面UI设计,设计了基于web的系统界面,界面测试初步良好,但仍有不足之处。

第 3 章 系统测试与分析

3.1 系统测试中存在的问题

系统匹配准确率不够,会匹配到与待匹配图片不相关的图片,并且匹配速度偏慢。

3.1.1 图像匹配度准确率低

系统匹配准确率不够,会匹配到与待匹配图片不相关的图片。如图5-1与图5-2所示

3.1.2 图像匹配速度偏慢

在匹配图片的过程中,匹配速度很慢,有时需要等待十几秒时间,这种弊端在未来实际运作中是无法满足用户需求的,并且如果数据集极为庞大的时候,这种问题将尤为明显。

3.2 系统优化设计

针对上述系统测试所带来的问题,将会在图像预处理以及图像特征提取密度上做优化。

3.2.1 图像区域构建掩模

为了解决上述问题,将使用基于区域的直方图,而不是全局的直方图,使用基于区域直方图代替全局直方图的优点是它可以基本模拟每个区域的颜色分布,使得匹配结果容错率更高。例如图5-1。

图 3-3 图像区域划分

图像分为五个不间断区域:1,左上角; 2,右上角; 3,右下角; 4,左下角; 使用这些区域,可以大致模拟不同的区域。 在这里,需要构造一个椭圆来表示图像的中心区域。定义长度和宽度为75%的图像长度和宽度的椭圆。然后初始化空白图像(0填充图像以表示黑色背景)。图像具有与要描述的图像相同的大小。最后,使用CV2椭圆函数绘制实际椭圆。如果这个过程用动态图表示,它应该如图5-4所示。

图 3-4 为图像中每个需要提取特征的区域构建掩模

如图5-4所示,由于每个区域都是独立检测的,在迭代提取图像特征期间,每个椭圆与图像之间的重叠被删除。这样可以指定Opencv要提取的颜色直方图的区域。 目标是分别描述图像的每个区域。 表示不同区域的最有效方法是使用掩模。 对于图像中的点(x,y),只有在遮罩中的点为白色(255)时,才使用该像素计算直方图。 如果像素在掩模中的位置是黑色(0),则它将被忽略。

3.2.2 HSV 直方图合理的 Bin 数量

经过上述选定了颜色空间之后,接下来需要选定合理的直方图bin数量,直方图bin用于表示图像中每种强度像素的密度。实际上,直方图估计底层函数的概率密度, 对于选择直方图合理的bin数量需要不断的考虑以及实验测试。 如果选择的直方图bin数量太小(如图5-5所示),直方图中包含的数据量不足以以至于难以区分某些具有不同颜色的图像。相反的,如果直方图选择的bin数量过大(如图5-6所示),则直方图中的分量数量过大,也会导致内容非常相似的图像被判断为不相似。

图 3-5 Bin 数量过少

图 3-6 Bin 数量过多

综合考虑,迭代地和实验地调整bin的数量。迭代方法通常基于数据集的大小。数据集越小,使用的bin就越少。如果数据集非常大,将使用更多的bin,这使得直方图更大,并且与图像更可区分。通常,颜色直方图描述符的bin数取决于数据集的大小和数据集之间的颜色分布的差异。对于图像相似性引擎,将在HSV颜色空间中使用3D颜色直方图,并且颜色通道将使用8个颜色块。对于饱和通道将使用12个色块,对于亮度通道将使用3个色块。 总特征向量是8×12×3 = 288。表示数据集中的每个图像,无论其像素数是36×36还是3000×2500像素,最后都将被抽象和量化成为288个像素向量。

3.3 效果检测

在上述系统优化作用下,再次经行系统测试后,上述问题能够得到基本解决。测试效果如图5-7,5-8所示。

图 3-7 优化结果

3.4 本章小结

本章依据系统初步测试,分析系统存在的问题,针对问题设计了优化措施,再次经行测试后,问题能够得到初步解决。

参考文献

  • 移动平台上基于内容的图像检索系统的研究与实现(安徽大学·余黎青)
  • 基于深度学习的商品图片检测算法(河北经贸大学·赵子露)
  • 基于移动平台的图片制作系统设计与实现(上海交通大学·项亮)
  • 双向记忆神经网络在多因素智能搭配系统中的研究与应用(长江大学·程玉洁)
  • 基于SSH架构的个人空间交友网站的设计与实现(北京邮电大学·隋昕航)
  • 基于深度哈希和可旋转M树索引技术的快速图像检索(大连海事大学·Somaya Ashour)
  • 基于内容的服装检索系统的设计与实现(天津大学·刘楠楠)
  • 基于知识图谱的目标实体对齐技术(哈尔滨工程大学·贾丽)
  • 基于图神经网络的特征交互推荐算法研究(烟台大学·马昕欣)
  • 分布式环境下的多子图匹配技术研究(湖南大学·田桢)
  • 适用于web需求的图片处理系统的设计与实现(北京工业大学·刘艳伟)
  • 双向记忆神经网络在多因素智能搭配系统中的研究与应用(长江大学·程玉洁)
  • 基于搜狗图片库的图片搜索引擎系统实现(西南交通大学·薛宝光)
  • 基于SSH架构的个人空间交友网站的设计与实现(北京邮电大学·隋昕航)
  • 基于图神经网络的特征交互推荐算法研究(烟台大学·马昕欣)

本文内容包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主题。发布者:源码港湾 ,原文地址:https://m.bishedaima.com/yuanma/35828.html

相关推荐

发表回复

登录后才能评论