博客
关于我
以图搜图系统概述及工程实践(上)
阅读量:460 次
发布时间:2019-03-06

本文共 1295 字,大约阅读时间需要 4 分钟。

以图搜图系统概述

以图搜图(Content-Based Image Retrieval, CBIR)是一种根据图像内容进行搜索的技术,旨在从图像数据库中快速找到与给定图像相似的图片。该技术的核心任务包括图像特征提取和特征检索。

在构建以图搜图系统时,两个关键问题需要重点解决:图像特征的提取以及特征数据的检索引擎设计。特征提取的目标是将图像的视觉信息转化为可以量化描述的特征向量,而检索引擎则需要基于这些特征向量快速匹配相似图片。

图像特征表示

图像特征表示是以图搜图系统的基础,主要包括以下三种方法:

图像哈希(Image Hashing)

图像哈希是一种将图像转化为固定长度的二进制字符串的方法,通过对图像进行一系列变换处理后生成哈希值。常用的算法包括Average Hash、PHash等。其中,Average Hash算法通过以下步骤生成图像哈希值:

1. **图像缩减(Reduce size)**:将原图像压缩至固定大小(如8x8,共64个像素),忽略细节信息。

2. **图像灰度化(Reduce color)**:将彩色图像转换为64级灰度图像。

3. **图像均值化(Average the colors)**:对灰度图像进行均值计算,生成一维特征向量。

4. **二值化(Compute the bits)**:将均值向量转化为二进制形式,确定每个像素是否高于均值值,并生成64位二进制字符串。

5. **哈希值构建(Construct the hash)**:将二进制字符串转化为整数,得到图像的均值哈希值。

图像哈希具有简单高效的特点,可对抗一定程度的图像处理干扰(如压缩、噪声等),但其局限性在于对整体图像的破坏会导致哈希值发生较大变化。

传统特征

在计算机视觉领域,传统特征提取方法通过手工设计算法提取图像的局部特征。典型代表是SIFT算法,它通过特征点检测和描述生成一系列多维向量。这些特征点需要进行融合编码(如BOW、Fisher vector、VLAD等方法),将局部特征向量转化为全局特征向量,以表示图像的整体特性。

深度学习特征(CNN特征)

随着人工智能技术的发展,基于卷积神经网络(CNN)的特征提取逐渐成为主流。CNN通过多层非线性变换自动学习图像特征,能够捕捉图像中复杂的视觉信息。例如,CNN提出的VGG网络能够有效提取图像的空间特征,为图像分类和相似度计算提供强有力的支持。

搜索引擎

在以图搜图系统中,特征向量的检索是核心任务。推荐使用开源工具如Milvus进行高效的向量检索,支持快速的相似性搜索。其优势在于:

1. **快速检索**:基于向量索引结构,实现子向量匹配和ANN(Approximate Nearest Neighbor)搜索,提升检索效率。

2. **灵活扩展**:支持多种向量索引算法(如Annoy、LSH等),适用于不同规模的图像数据。

推荐阅读

如果需要深入了解以图搜图系统的实现细节,可以参考以下内容:

1. 《图像处理与内容基于的检索》

2. 《深度学习在图像检索中的应用》

3. 《Milvus开源项目文档》

转载地址:http://drrfz.baihongyu.com/

你可能感兴趣的文章
npm install CERT_HAS_EXPIRED解决方法
查看>>
npm install digital envelope routines::unsupported解决方法
查看>>
npm install 卡着不动的解决方法
查看>>
npm install 报错 EEXIST File exists 的解决方法
查看>>
npm install 报错 ERR_SOCKET_TIMEOUT 的解决方法
查看>>
npm install 报错 Failed to connect to github.com port 443 的解决方法
查看>>
npm install 报错 fatal: unable to connect to github.com 的解决方法
查看>>
npm install 报错 no such file or directory 的解决方法
查看>>
npm install 权限问题
查看>>
npm install报错,证书验证失败unable to get local issuer certificate
查看>>
npm install无法生成node_modules的解决方法
查看>>
npm install的--save和--save-dev使用说明
查看>>
npm node pm2相关问题
查看>>
npm run build 失败Compiler server unexpectedly exited with code: null and signal: SIGBUS
查看>>
npm run build报Cannot find module错误的解决方法
查看>>
npm run build部署到云服务器中的Nginx(图文配置)
查看>>
npm run dev 和npm dev、npm run start和npm start、npm run serve和npm serve等的区别
查看>>
npm run dev 报错PS ‘vite‘ 不是内部或外部命令,也不是可运行的程序或批处理文件。
查看>>
npm scripts 使用指南
查看>>
npm should be run outside of the node repl, in your normal shell
查看>>