OpenCV图像匹配 (image retrieval)理论篇

图像检索(ImageRetrieval) 本项目是基于DINOv2和CLIP模型的图像检索系统,支持以图搜图和以文搜图两种检索方式。用户可以上传图片或输入文本描述,从预定义的图像数据库中检索相似的图像。 阅读详情

前段时间,非常不幸的在wap面试中没有做出第二题,题目太简单了,我都不好意思在这里说,只是当时太紧张了,脑子有点短路,时间太短,直接滚蛋了。

不过这段时间我还同时在做多媒体应用的作业:image retrieval

这个作业的要求是,用VS2013和opencv来编写一个程序,完成对输入图片的CBIR(Content Based Image Rerivieval),作业有四个要求,给了七个输入样例,分别是dinosaur,bus,man,horse,beach,flower,building. 

四个basic要求分别是:1. best matches  就是每一张样例的最匹配图片要正确,换言之,输入马,你的最匹配图片也要是马就对了,以此类推

                                          2. retrieved images 就是每一次能匹配到的正确图片数量有提高就可以达到这个要求

                                          3. precision 要求是每次匹配的正确数量占输出图片的百分比到达60以上,就是匹配出100张,里面要有60张以上正确的

                                          4. recall 要求是匹配出的正确图片占应该匹配出的正确图片的百分比,最低到40个percent就能拿分,意思是数据库里有100张,你要至少找到40张

前面两个要求写了几行代码就解决了,好了,接下来,来说说后面两个的实现之路。

第一次,我看了TA师兄在tutorial上精彩的讲解,自己回来用所谓的HSV颜色直方图实践了一把,效果还不如pixel by pixel的比较,所以打算换方法,因为生平第一次涉足图像处理这个领域,所以打算先问问行家的意见,再动手,于是得到了一个

方案一:用canny算子求得轮廓,然后根据轮廓对图片进行分割区域,再对分开的区域分别做颜色直方图比较

在此,先介绍一下HSV颜色空间和RGB颜色空间的区别,相对于前者,RGB空间对于大众来说应该听说的多一点,更加容易理解一点,RGB顾名思义,就是用红、绿、蓝三种基准色构建出来的一个颜色空间,每个通道的颜色强度值从0~255,那么合在一起一共有256^3种颜色可以呈现,如下图,所以每个像素的颜色值,由三个8bit数字来存储。

以下一段话摘自百度上我觉得比较有道理的回答,说明RGB颜色空间不利于我们的image retrieval:

RGB虽然表示直接,但是R、G、B数值和色彩的三属性没有直接的联系,不能揭示色彩之间的关系。所以在进行配色设计时,RGB模型就不是那么合适了。在所有美术软件中,都可以直接设置RGB的数值。有些软件还提供了直观的"RGB三维色彩模型"来设置RGB色彩值。
HSV是指Hue(色相)、Saturation(饱和度)和Value(值)。RGB和CMY颜色模型都是面向硬件的,而HSV颜色模型是面向用户的。 
以下来介绍一下HSV颜色空间:
HSV(Hue, Saturation, Value)是根据颜色的直观特性由A. R. Smith在1978年创建的一种颜色空间, 也称六角锥体模型(Hexcone Model)。
这个模型中颜色的参数分别是:色调(H),饱和度(S),亮度(V)。
具体细节想了解可以百度之。

        之前的颜色直方图匹配结果完全doesn't make sense,所以一定是有问题,因为原来opencv提供的分通道技术,会把每一种颜色都分出一个分量来记录,就算在人眼中几乎无差别的颜色,只要数据有不同,就是两种,因为不同颜色占有的波长范围会不一样,比如某一种颜色会有很多波长在人眼中是这个颜色,而另一种颜色则很很少,这就是电脑死板的地方,所以直方图的比较结果,都会差很多。到不了我们人类觉得的similarity,电脑都觉得不对。所以,要让电脑的感觉和人眼感觉一样,那么,就要手动的去分颜色了,所以我们来到了一个非常关键的point,如何分这个颜色,分多少合适。在这里首先鸣谢一下我们CITYU的CS PHD--Colin,是他指点了我一下并且让我看了一篇相关论文,在这个地方突破了天际。

        肯定是有人在研究这个领域的,所以有比较合理的理论可以用,根据三个通道,把颜色分成了37个类,是人眼可以分别的37种,这样子,每一幅图等于都只有37种颜色了,这是一个非常大的优化,试想一下,如果你输入的图是马,图片如下

中间是一坨东西,颜色较深,周围都是绿色的草,这就是这幅图的颜色构成,而不是什么深深浅浅的草绿和树叶绿,渐变的毛色~!@#$%^

这样子,输出的图片将会都是类似的--草地上的马,那么就会达到我们想要的效果了,因为,世界上没有两匹一样的马,也没有两片一样的草地。

但是,如果只统计颜色的数量,显然显得有点无力,因为,颜色的分布位置会成为致命的弱点,比如原来的图中间一团黑,周围都是白,那么中间一团白周围一团黑的图片也会成为匹配到的图片,显然又不对了。

于是,又一种非常牛逼的方法来了,CAH(Color/Angle Histogram)来了,意思就是,把图片从中心出发,像切蛋糕一样切成八块,然后比较两张图片同一个角里面的颜色分布,比如:区域1的蓝色个数,区域2的红色个数,用特定的数学方法作比较,再把结果汇总,这样子,之前那种情况就会被杀的干干净净(没有这么夸张)。

但是,事实证明,只用这一个办法,结果还是不尽如人意,所以,之前的canny又被用上,当做一个因子,来计算总的similarity,效果终于达到了60个percent的recall。

理论总结到此结束,下一篇讲实现。


计算机视觉十大经典算法:从图像处理到实战应用全解析 计算机视觉(CV)是人工智能的核心领域之一,旨在使计算机能够从图像或视频中获取信息、理解内容并做出决策。其基本原理涉及从像素数据中提取特征、识别模式并进行语义理解。在工程实践中,掌握经典算法并理解其组合应用是构建高效CV系统的关键。例如,高斯滤波和Canny边缘检测等图像处理算法是预处理的基础,用于去噪和特征增强;而SIFT特征提取和YOLO目标检测等算法则分别解决了图像匹配和物体定位的核心问题。这些算法的技术价值在于它们构成了从底层处理到高层理解的完整技术栈,能够广泛应用于自动驾驶、医疗影像分析、工业质检 阅读详情

相关推荐

CIPER:基于Transformer的跨视角图像检索与3-DoF位姿估计统一框架

跨视角图像检索与位姿估计是视觉定位的核心基础能力,其本质是建模图像间几何-语义联合关系。传统方法依赖CNN特征与独立任务模块,面临视角鸿沟、特征割裂与误差累积等瓶颈。以Transformer为统一主干的CIPER框架,通过全局注意力建模长程空间一致性,结合几何感知对比学习与双头解耦表征,实现检索与3-DoF(yaw/pitch/depth)位姿的端到端协同优化。该设计兼顾轻量性与鲁棒性,天然适配移动端AR导航、实景三维重建及无人系统粗定位等真实场景。文中深入解析ViT结构适配、环形角度回归、log-dept

weixin_33895516的博客 433

图像检索Image Retrieval相关算法汇总

乘积量化PQ(Product Quantization): PQ算法将D维空间切分为M个D/M维的子空间:假设现得到每张图片特征向量维度为128维,共256张图片。为了加速距离运算,现将128维向量切分成8段,如下图所示。 分别在每一段所表示的子空间中进行K-means聚类,之后在每一段中用距离该段内距离最近的聚类中心的编号来作为索引值,即每一个128维向量被压缩为8个索引值表示的向量。...

Puremelo 9850

图像检索(Image Retrieval)是通过搜索引擎、计算机视觉等计算机技术对海量图片进行快速检索,找到最相关的图像或者按照某种相似性度量度进行排序的一类计算机技术

作者:禅与计算机程序设计艺术 1.简介 图像检索(Image Retrieval)是通过搜索引擎、计算机视觉等计算机技术对海量图片进行快速检索,找到最相关的图像或者按照某种相似性度量度进行排序的一类计算机技术。其目的是为了提高图片检索的效率及用户体验,从而节省时间、提升效率。 随着移动互联

AI天才研究院 2443

CV之IR:计算机视觉之图像检索(Image Retrieval)方向的简介、使用方法、案例应用之详细攻略

CV之IR:计算机视觉之图像检索(Image Retrieval)方向的简介、使用方法、案例应用之详细攻略 目录 图像检索(Image Retrieval)方向的简介 图像检索(Image Retrieval)方向的使用方法 图像检索(Image Retrieval)方向的案例应用 图像检索(Image Retrieval)方向的简介 后期更新…… ...

头部AI社区如有邀博主AI主题演讲请私信—心比天高,仗剑走天涯,保持热爱,奔赴向梦想!低调,专注,谦虚,自律,反思,成长,还算比较正能量的博主,公益免费传播…内心特别想在AI界做出一些可以推进历史进程影响力的技术(兴趣使然,有点小情怀,也有点使命感呀 1万+

【胡学长 带你学 Global Mapper 】如何将影像地图转换为国家2000坐标系

多部门联合开展工作坐标数据不匹配怎么办?Hi,我是胡学长!今天教大家如何利用Global Mapper将谷歌影像数据转换为国家2000坐标系影像数据 。

一起来交流学习吧 1万+

STM32 WinUSB免驱实现:从DFU模式到高速通信的实战指南

本文详细介绍了STM32 WinUSB免驱实现方案,从DFU模式到高速通信的完整实战指南。通过修改设备描述符、添加BOS描述符和实现WCID描述符集,开发者可以轻松实现即插即用的USB设备,无需额外安装驱动。文章还提供了性能优化技巧和实际应用案例,帮助开发者快速部署高效稳定的USB通信方案。

weixin_29171087的博客 422

图像检索Image Retrieval

图像检索(Image Retrieval)是指根据给定的查询图像,从图像数据库中检索出与查询图像相似的图像的任务。它通常用于在大规模图像数据库中快速有效地搜索和定位图像。图像检索可以应用于多种场景,包括图像搜索引擎、社交媒体内容管理、医学图像检索等。图像检索系统的性能通常通过检索准确率、检索速度等指标来评估。

vivi_cin的博客 1391

Vercel静态站被墙别慌!手把手教你用Cloudflare免费CDN+域名解析搞定DNS污染

本文详细介绍了如何利用Cloudflare免费CDN和域名解析解决Vercel静态网站遭遇DNS污染的问题。通过诊断DNS污染、设计Cloudflare解决方案架构、实战配置步骤以及高级调优技巧,帮助用户快速恢复站点访问并提升防护能力。

weixin_27442001的博客 677

opencv4 图像特征匹配_图像匹配综述(IJCV2020)| 特征提取、描述、匹配;点集配准;图像配准;立体匹配;图匹配;...

去年磨了一年的综述终于接收了Image Matching from Handcrafted to Deep Features: A Survey:https://link.springer.com/article/10.1007/s11263-020-01359-2内容包含整个与图像匹配相关的方法介绍~写得比较广所以总感觉没有深度~实验没有耐心去做,大家勿喷:)。文中表述有不当之处,还望大家多批评...

weixin_39934869的博客 187

直流电动机的建模仿真(1)他励,串励和并励电动机建模仿真

本文根据不同励磁方式的直流电动机的接线原理图,建立了相应的数学模型,然后根据与数学模型对应的等效电路以及模拟机械运动方程的等效电路,用Matlab/simulink中的SpecializedPower system库中的电路元件,建立了他励,并励和串励直流电动机的全等效电路仿真模型,经过与Matlab自带的直流电动机仿真模型比较以及仿真实例验证,所建立的仿真模型时完全正确的。

weixin_45670943的博客 7516

Win10下Altera USB-Blaster驱动安装详解:禁用数字签名与排查指南

在嵌入式开发和FPGA调试过程中,驱动安装是工程师绕不开的环节,尤其是当操作系统对驱动签名有严格限制时,硬件往往无法被正常识别。数字签名是系统验证驱动程序来源和完整性的重要机制,Win10出于安全考虑,默认拒绝加载未经签名的驱动,这正是Altera USB-Blaster下载器在设备管理器中显示未知设备或黄色感叹号的根本原因。通过理解设备管理器的排查逻辑,掌握临时禁用驱动强制签名或开启测试模式的方法,配合正确的驱动文件路径选择与手动安装操作,即可解决Quartus无法检测到下载器的问题。这一流程同样适用于许

weixin_29164497的博客 245

从GAN到CLIP:生成式AI核心原理与PyTorch实战指南

生成式人工智能通过学习数据内在分布,创造全新的图像、文本等内容,已成为AIGC(AI Generated Content)的核心驱动力。其核心原理在于构建能够‘创造’而非仅‘识别’的模型。以生成对抗网络(GANs)为例,它通过生成器与判别器的动态博弈实现数据生成,奠定了‘无中生有’的技术基础。这项技术的价值在于为内容创作、数据增强等领域提供了自动化解决方案。随着应用场景对生成内容可控性要求的提升,CLIP模型通过对比学习构建了文本与图像的联合语义空间,实现了跨模态的精准理解与控制,从而将生成式AI从‘能生成

weixin_30411819的博客 497

Java 大视界 -- Java+Spark MLlib 构建智能推荐系统:协同过滤算法实战与优化(441)

Java+Spark MLlib构建智能推荐系统实战 本文详细介绍了基于Java和Spark MLlib构建协同过滤推荐系统的全流程实践方案。主要内容包括: 架构设计:采用离线批处理为主、近实时更新为辅的架构,包含数据采集层、处理层、模型层、推荐生成层、存储层和应用层六大模块,可支撑千万级用户推荐需求。 技术实现: 使用Spark MLlib的ALS算法进行协同过滤模型训练 提供数据清洗、模型训练、推荐生成等核心代码实现 采用MySQL存储推荐结果,支持批量插入和事务保障 生产级优化: 版本化模型存储规避覆

【青云交】华为云云享专家 | 阿里云开发者社区专家博主 技术圈个人影响力前 9 | 博客之星 TOP12 优快云 首位四榜(原力榜 / 作者周榜 / 领军人物 / 综合热榜)榜首,破平台纪录! 苏州地区全榜霸榜,感恩全网十多万粉丝同行! 2525

模拟专家工作流的甲骨文辅助释读系统原型设计

图像识别技术在处理现代文字资料时表现优异,但面对甲骨文这类字形复杂、异写繁多、依赖上下文考据的古老文献时,传统端到端识别往往失效。其根本原因在于,释读甲骨文并非简单的“看图识字”,而是一个围绕字形部件、辞例语境、历史演化与出土信息层层递进的多维证据链构建过程。将专家脑中的考据动作抽象为观察、拆解、检索、假设、验证、定案等标准阶段,并用工作流状态机管理每一步的输入输出,可以让系统按证据链逻辑逐级推进,每一个候选结论都附带结构化证据与操作留痕。这种模块化流水线架构不仅能提高释读效率,还能支撑专家复核与知识沉淀,

weixin_34008805的博客 418

R语言pls包实战:手把手教你用偏最小二乘(PLS)搞定高维数据回归(附完整代码与数据标准化避坑指南)

本文详细介绍了如何使用R语言的pls包进行偏最小二乘(PLS)回归分析,特别针对高维数据回归问题。通过完整的代码示例和数据标准化避坑指南,帮助读者掌握从数据预处理到模型优化的全流程,解决实际应用中的常见问题。

weixin_42662605的博客 350

【C++】【STL算法】数据窄化及代码安全性

本文系统探讨了C++工程中数据窄化(narrowing conversion)的隐患与解决方案。数据窄化指将高精度/大范围类型转换为低精度/小范围类型,虽语法合法但会导致静默精度损失。其危险性体现在:错误隐蔽、STL会放大问题、数值错误具有传播性。现代C++要求窄化必须显式声明,文中提出四种工程解决方案:显式转换、边界统一转换、范围检查转换和使用GSL工具。建议在系统边界集中处理窄化,保持计算链路类型一致性,并通过分层策略(建模用double,控制用float)确保数值稳定性。核心思想是让窄化成为清晰可控的

Double Galaxy 79

图像检索(Image Retrieval)入门

图像检索是一项重要的计算机视觉任务,它旨在根据用户的输入(如图像或关键词),从图像数据库中检索出最相关的图像。图像检索技术在许多领域中有着广泛的应用,如图像搜索引擎、图像版权认证、医学影像分析等。这篇博客将带您入门图像检索的基本概念、方法和常用的技术。图像检索是一项重要的计算机视觉任务,具有广泛的应用。特征提取和相似度度量是图像检索的核心技术。在实际应用中,我们可以根据任务需求选择合适的特征提取方法和相似度度量方法。同时,还可以结合其他图像处理技术和机器学习方法来进一步提升图像检索的性能。

牛肉胡辣汤 4933

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

图像检索(image retrieval)

SSSSxisketchxiimgyi∣yi∈YS{(xisketch​xiimg​yi​∣yi​∈Y,将数据划分成训练集和测试集Strxisketchxiimg∣yi∈YtrainStr​{(xisketch​xiimg​∣yi​∈Ytrain​Stexisketchxii。

明前大奏的博客 1422

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

【亲测免费】 探秘开源图像检索项目:Image-Retrieval

探秘开源图像检索项目:Image-Retrieval 在今天的数据驱动世界中,图像检索是一项至关重要的技术,它使我们能够通过关键词或相似度搜索庞大图像库。 是一个由 Yaoli Studio 开源的高效图像检索系统,旨在帮助开发者和研究者构建自己的大规模图像数据库,并实现快速、准确的图像搜索。 项目简介 Image-Retrieval 提供了一个简单易用的 API,允许用户上传图片并进行检索。该项...

gitblog_00061的博客 1106

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

第十讲_图像检索 Image Retrieval

第十讲_图像检索 Image Retrieval 刚要 主要是图像预处理和特征提取+相似度计算 相似颜色检索 算法结构 颜色特征提取:统计图片的颜色成分 颜色特征相似度计算 色差距离 发展:欧式距离->CIEDE1994->CIEDE2000 EMD距离 相似纹理检索 纹理 算法结构 Gabor滤波器组 相似形状检索 PHOG形状特征提取 相似度计算 ...

weixin_34284188的博客 1118

探秘LiYaodev的Image-Retrieval:基于深度学习的图像检索系统

探秘LiYaodev的Image-Retrieval:基于深度学习的图像检索系统 在今天的信息时代,图像检索成为一个至关重要的工具,它能够帮助我们快速找到所需的图片。项目正是这样一款基于深度学习的解决方案,旨在提供高效、精准的图像搜索功能。本文将深入探讨该项目的技术细节,应用场景及其独特之处。 项目简介 Image-Retrieval项目是一个利用卷积神经网络(CNN)实现的图像检索系统。它采用预...

gitblog_00075的博客 989

image retrieval(sift+bow)

利用SIFT提取特征 利用BOW进行聚类 [ ] # coding: utf-8 # In[156]: import cv2 import numpy as np import os from PIL import Image from sklearn.cluster import KMeans from matplotlib import pyplot as plt #get_i...

jingjingliang1995的博客 894

【计算机视觉 5】、图像检索

90年代以后,出现了对图像的内容语义,如图像的颜色、纹理、布局等进行分析和检索的图像检索技术,即 基于内容的图像检索 (Content-based Image Retrieval,简称 CBIR)技术。

Lixiaoyyyu的博客 1000

开源项目 `image-retrieval` 使用教程

开源项目 image-retrieval 使用教程 项目介绍 image-retrieval 是一个基于深度学习的图像检索系统,旨在通过图像内容(如颜色、纹理、形状等)进行高效的图像检索。该项目利用了最新的深度学习技术,如卷积神经网络(CNN),以实现高精度的图像匹配和检索。 项目快速启动 以下是快速启动 image-retrieval 项目的步骤,包括必要的代码示例。 安装依赖 首先,确保你已经...

gitblog_00589的博客 430

Image Retrieval

Papers Learning High-level Image Representation for Image Retrieval via Multi-Task DNN using Clickthrough Data arxiv: http://arxiv.org/abs/1312.4740paper: http://legacy.openreview.net/document

hpb21的专栏 7288

图像模板匹配 opencv c++实现

用T表示模板图像,I表示待匹配图像,切模板图像的宽为w高为h,用R表示匹配结果,匹配过程如下图所示:1、平方差匹配算法method=TM_SQDIFF这类方法利用平法差来进行匹配,最好匹配为0,而若匹配越差,匹配值则越大2、归一化平方差匹配法method=TM_SQDIFF_NORMED3、相关匹配法method=TM_CCORR这类方法采用模板和图像之间的惩罚操作,所以较大的数表示匹配程度较高,0标识最坏的匹配效果;4、归一化相关匹配法method=TM_CCORR_NORMED。

weixin_43340536的博客 2101
上一篇: 两道用到二分法的math题:Sqrt(x) && Pow(x, n)
下一篇: 最长回文子串 leetcode 05 DP解法
MR_LUXY
博客等级 码龄16年 20粉丝 43原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值