分享好友 最新动态首页 最新动态分类 切换频道
OpenCV实现图像搜索引擎(Image Search Engine)
2024-12-29 05:57

欢迎参观我的博客:HuHaoyu’s Blog。

OpenCV实现图像搜索引擎(Image Search Engine)

简单介绍一下OpenCV。

OpenCV was designed for computational efficiency and with a strong focus on real-time applications. Written in optimized C/C++, the library can take advantage of multi-core processing. Enabled with OpenCL, it can take advantage of the hardware acceleration of the underlying heterogeneous compute platform. Adopted all around the world, OpenCV has more than 47 thousand people of user community and estimated number of downloads exceeding 9 million. Usage ranges from interactive art, to mines inspection, stitching maps on the web or through advanced robotics.

OpenCV(Open Source Computer Vision Library)的计算效率很高且能够完成实时任务。OpenCV库由优化的C/C++代码编写而成,能够充分发挥多核处理和硬件加速的优势。OpenCV有大量技术社区和超过900万的下载量,它的使用范围极为广泛,如人机互动、资源检查、拼接地图等。

之前看到谷歌和百度出了图像搜索引擎,查阅了相关资料深入了解了图像搜索引擎的算法原理。一部分参考了用Python和OpenCV创建一个图片搜索引擎的完整指南。决定自己实现一个简单的图像搜索引擎,也可以让自己更快地查找mac中的图片。为什么使用OpenCV+Python实现图像搜索引擎呢?

  • 首先,OpenCV是一个开源的计算机视觉处理库,在计算机视觉图像处理模式识别中有广泛的应用。接口安全易用,而且跨平台做的相当不错,是一个不可多得的计算机图像及视觉处理库。

  • 其次,Python的语法更加易用,贴近自然语言,极为灵活。虽然计算效率并不高,但快速开发上它远胜于C++或其他语言,引入pysco能够优化python代码中的循环,一定程度上缩小与C/C++在计算上的差距。而且图像处理中需要大量的矩阵计算,引入numpy做矩阵运算能够降低编程的冗杂度,更多地把精力放在匹配的逻辑上,而非计算的细枝末节。

图像搜索算法基本可以分为如下步骤:

  • 提取图像特征。如采用SIFT、指纹算法函数、哈希函数、bundling features算法等。当然如知乎中所言,也可以针对特定的图像集群采用特定的模式设计算法,从而提高匹配的精度。如已知所有图像的中间部分在颜色空间或构图上有显著的区别,就可以加强对中间部分的分析,从而更加高效地提取图像特征。

  • 图像特征的存储。一般将图像特征量化为数据存放于索引表中,并存储在外部存储介质中,搜索图片时仅搜索索引表中的图像特征,按匹配程度从高到低查找类似图像。对于图像尺寸分辩率不同的情况可以采用降低采样或归一化方法

  • 相似度匹配。如存储的是特征向量,则比较特征向量之间的加权后的平方距离。如存储的是散列码,则比较Hamming距离。初筛后,还可以进一步筛选最佳图像集。

基本步骤

  • 采用颜色空间特征提取器和构图空间特征提取器提取图像特征
  • 图像索引表构建驱动程序生成待搜索图像库的图像特征索引表
  • 图像搜索引擎驱动程序执行搜索命令,生成原图图像特征并传入图片搜索匹配器。
  • 图片搜索匹配内核执行搜索匹配任务。返回前个最佳匹配图像。

所需模块

  • numpy。科学计算和矩阵运算利器。
  • cv2。OpenCV的python模块接入。
  • re。正则化模块。解析csv中的图像构图特征和色彩特征集。
  • csv。高效地读入csv文件。
  • glob。正则获取文件夹中文件路径。
  • argparse。设置命令行参数。

封装类及驱动程序

  • 颜色空间特征提取器ColorDescriptor。

    1. 类成员。记录HSV色彩空间生成的色相、饱和度及明度分布直方图的最佳bins分配。bins分配过多则可能导致程序效率低下,匹配难度和匹配要求过分苛严;bins分配过少则会导致匹配精度不足,不能表证图像特征。
    2. 成员函数。生成图像的色彩特征分布直方图。为待处理图像,为图像处理区域的掩模,判断是否为图像中心,从而有效地对色彩特征向量做加权处理。权重取。采用OpenCV的方法获得直方图,方法归一化。
    3. 成员函数。将图像从BGR色彩空间转为HSV色彩空间(此处应注意OpenCV读入图像的色彩空间为BGR而非RGB)。生成左上、右上、左下、右下、中心部分的掩模。中心部分掩模的形状为椭圆形。这样能够有效区分中心部分和边缘部分,从而在方法中对不同部位的色彩特征做加权处理
  • 构图空间特征提取器StructureDescriptor。

    1. 类成员。将所有图片归一化(降低采样)为所规定的尺寸。由此才能够用于统一的匹配和构图空间特征的生成。
    2. 成员函数。将图像从BGR色彩空间转为HSV色彩空间(此处应注意OpenCV读入图像的色彩空间为BGR而非RGB)。返回HSV色彩空间的矩阵,等待在搜索引擎核心中的下一步处理。
最新文章
Windows优化大师7.99.12.301绿色去广告版 单文件版
软件说明:优化大师是一款功能强大的系统工具软件,它提供了全面有效且简便安全的系统检测、系统优化、系统清理、系统维护四大功能模块及数个附加的工具软件。优化大师能够有效地帮助用户了解自己的计算机软硬件信息;简化操作系统设置步骤
手把手教你,学会排名
点击台江教育来源:Excel之家ExcelHome
游戏提示emp.dll丢失怎么解决?多种可靠的解决方法分享
在尝试启动并运行游戏的过程中,系统突然弹出一条错误提示信息,明确指出无法找到名为“emp.dll”的关键文件。这个dll文件对于游戏的正常运行至关重要,它的缺失可能会导致游戏无法启动或者在运行中出现各种故障。当玩家
百度SEO优化涉及的3个方面
有些人永远不知道 seo 的实际工作原理,而大多数人在听了别人的神话之后仍然不完全理解这些基本原则是如何产生的。下面将与大家分享百度seo优化的几个方面:1、全球观察在开始做外贸网站优化排名和SEO之前百度优化,先回去了解一下SEO的整
如何把小红书、美团、大众点评用户引流至门店,让每一分营销预算都产生价值。
所有门店商家都面临着一个现实问题:如何有效地吸引顾客并促使他们再次光临。在餐饮行业,我们常见两种截然不同的店铺:即使在竞争激烈的商圈,也能保持稳定的客流量,拥有大量回头客,一桌难求。即使装修和位置更好,也难以吸引顾客。表面
消费全返商城模式小程序开发搭建
  随着科技的发展和互联网的普及,电子商务已经成为了我们生活中bukehuoque的一部分。在这个竞争激烈的市场环境中,如何在众多的电商平台中脱颖而出,成为了每一个电商企业都在思考的问题。而“消费全返”商城模式,就是这样一种创新的商
《剑网三》在配置有什么要求?,剑网三配置和lol相比
题中游戏现在对台式电脑基本画质要求是酷睿I3以上处理器、4G以上内存、GT610以上独立显卡,高效画质要求是酷睿I5或锐龙R5以上处理器、8G以上内存、GTX1050/1050TI以上独立显卡(可见下图),电影画质要求在高效画质的基础上显卡换RTX2060。
网站SEO优化 站内优化和站外优化的具体内容和区别
随着互联网的发展,越来越多的企业开始意识到网络营销的重要性。对于想要在互联网上获得更多曝光和流量的企业来说,搜索引擎优化已经成为一种非常有效的方式。在SEO中,站内优化和站外优化是两个非常重要的方面。站内优
贵阳爱采购代运营的选择
爱采购店铺运营技巧:重复商品是指商家发布的新品,与之前发布的产品信息中,主图、详情、参数属性等内容完全相同,划重点:如何避免重复商品呢?一、上新产品主图避免相同,二、产品属性差数避免相同,三、产品详情页内容避免相同四、上新
王曼昱:巴黎奥运“黑马”制霸之路,细数日乒高手对她的赞誉
在刚刚结束的WTT福冈总决赛,王曼昱不负众望,成功斩获女单冠军,证明了其在巴黎奥运周期国乒女队中的绝对实力。作为一颗崛起的新星,王曼昱的比赛风格与成绩引发了国内外乒乓球界的广泛关注,尤其是日乒女队的高度评价更是凸显了她的国际
相关文章
推荐文章
发表评论
0评