博客
关于我
以图搜图系统概述及工程实践(上)
阅读量: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/

你可能感兴趣的文章
Node.js官网无法正常访问时安装NodeJS的方法
查看>>
node.js模块、包
查看>>
node.js的express框架用法(一)
查看>>
Node.js的交互式解释器(REPL)
查看>>
Node.js的循环与异步问题
查看>>
Node.js高级编程:用Javascript构建可伸缩应用(1)1.1 介绍和安装-安装Node
查看>>
nodejs + socket.io 同时使用http 和 https
查看>>
NodeJS @kubernetes/client-node连接到kubernetes集群的方法
查看>>
NodeJS API简介
查看>>
Nodejs express 获取url参数,post参数的三种方式
查看>>
nodejs http小爬虫
查看>>
nodejs libararies
查看>>
nodejs npm常用命令
查看>>
nodejs npm常用命令
查看>>
Nodejs process.nextTick() 使用详解
查看>>
NodeJS yarn 或 npm如何切换淘宝或国外镜像源
查看>>
nodejs 中间件理解
查看>>
nodejs 创建HTTP服务器详解
查看>>
nodejs 发起 GET 请求示例和 POST 请求示例
查看>>
NodeJS 导入导出模块的方法( 代码演示 )
查看>>