在做图像检索时,需要提取图像的特征向量。传统的局部特征描述子如SIFT、SURF等,如果不做别的处理,往往会得到大量的特征向量,虽然特征向量的数目越多,对图像的描述越精确,检索的准确率较高,但是这也会增加硬件成本同时也会耗费大量的计算时间。

从博主的试验结果来看,单张图384×256大小,提取出的SIFT平均有200个,如果直接和库中的数据进行相似度计算,大概要1分钟的时间。对于时间要求很高的产业,这是不能接受的。所以,在不进行压缩图像损失信息的前提下,大大减少SIFT的数目是很有必要,也是很有价值的。

在查阅了大量的资料后,博主发现在做keypoint的compute之前,用MSER 检测出的keypoint代替SIFT检测出的keypoint,可以大大减少SIFT 的数目。对MSER 有疑问的,可以在找几篇相关的博客看一看,不是很复杂。

简单的说一下MSER(最大稳定值检测),基于分水岭的概念,对图像进行二值化,阈值范围[0,255],然后不断变化阈值,变化量可以自己设置,二值图像就会经历一个从全黑0到全白255的过程,就像水位不断上升时陆地和海平面的俯瞰图。在这个过程中,有些连通区域面积随着阈值的变化量很小或基本不变,这些区域就叫MSER 。关于MSER的算法细节和具体实现就不在这说了,有兴趣的可以自己研究一下。

当用MSER检测出keypoint之后,就可以利用SIFT的方式计算这些keypoint的描述子了。

import cv2
import numpy as np
import skimage.io as io
import matplotlib.pyplot as plt
filename="/home/mysj/文档/testpicture"
str=filename+"/*.jpg"
mat=io.ImageCollection(str)
img=mat[0]
##创建一个MSER检测器,并检测图像的MSER区域
##kpkp保存检测到的keypoint
mser=cv2.MSER_create()
regions,boxes=mser.detectRegions(img)
kpkp=mser.detect(img)
print len(mser.detect(img))
##用红框框出检测到的MSER区域,boxes保存这些区域的左上角的坐标和区域的宽和高
for i in range(len(boxes)):x,y,w,h=boxes[i]cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
#创建一个SIFT特征提取器
siftt=cv2.xfeatures2d.SIFT_create()print len(regions)
print len(boxes)
kp=siftt.detect(img,None)
##计算kpkp的局部描述子
des=siftt.compute(img,kpkp)
print len(des[0])
##在图像上画出这些keypoint
cv2.drawKeypoints(img,kpkp,mat[0])
plt.imshow(mat[0])

SIFT-SIFT方式提取的特征点有243个,MSER-SIFT提取的特征点有57个,虽然精度会有些下降,但是带来的时间上的提升是很客观的。时间缩短为原来的1/4,相当于原来跑一张的时间现在可以跑4张图。红框是MSER区域。

MSER+SIFT 图像的特征向量提取相关推荐

  1. 计算机视觉3.3 :迁移学习之图像特征向量提取与运用

    迁移学习之图像特征向量提取与运用 ​ 本篇文章将要讨论的是关于计算机视觉中迁移学习的概念,一种能够利用预先训练好的模型,从它之前训练的数据集之外的数据集进行学习的能力. ​ 举个例子来说: ​ 现有A ...

  2. python如何提取图片特征向量_在python中计算图像的特征向量

    我正在尝试将二维高斯拟合到图像中.噪声很低,所以我试图旋转图像,使两个主轴不同时变化,算出最大值,然后计算两个维度的标准偏差.选择的武器是Python. . 然而,我一直在寻找图像的特征向量--num ...

  3. HOG和SIFT图像特征提取简述

    前言 随着深度学习方法的流行,很多人对传统方法一无所知.然而传统方法仍然非常重要,这里介绍两个提取特征的传统方法--HOG和SIFT方法. 本文转载自咪付,仅用于学术分享(编辑:CV 技术指南) 如今 ...

  4. Opencv图像特征点提取(

    目录 特征点分类 1 ORB ①特征点检测 ②计算特征描述 2 SIFT 1 SIFT特征检测的步骤 ①.在DOG尺度空间中获取极值点,即关键点. ②.特征点方向估计 ③生成特征描述 ④.代码实现 3 ...

  5. 图像处理之图像特征及提取

    图像处理之图像特征及提取 图像处理过程中常用的特征提取方法 图像特征: 几何特征(位置与方向.周长.面积.长轴与短轴.距离(欧式距离.曼哈顿距离.切比雪夫距离.余弦距离)): 形状特征(几何形态分析( ...

  6. 关于图像特征的提取【转】

    特征提取时计算机视觉和图像处理中的一个概念.它指的是计算机提取图像信息,决定每个图像的点是否属于一个图像特征.特征提取的结果是把图像上的点分为不同的子集,这些自己往往属于孤立的点,连续的曲线或者连续的 ...

  7. halcon边缘提取颜色相近_初学者福利!三种用Python从图像数据中提取特征的技术...

    全文共4073字,预计学习时长8分钟 你之前是否使用过图像数据?也许你想建立自己的物体检测模型,或者仅仅是想统计走进某栋建筑物的人数,使用计算机视觉技术处理图像拥有无穷无尽的可能性. 但数据科学家最近 ...

  8. 一起自学SLAM算法:3.4 图像特征点提取

    连载文章,长期更新,欢迎关注: 写在前面 第1章-ROS入门必备知识 第2章-C++编程范式 第3章-OpenCV图像处理 3.1 认识图像数据 3.2 图像滤波 3.3 图像变换 3.4 图像特征点 ...

  9. 基于灰度共生矩阵(GLCM)的图像纹理分析与提取

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 灰度共生矩阵 灰度共生矩阵(Gray Level CO-Occur ...

最新文章

  1. 循环结构作业c语言,C语言循环结构练习题带答案(最新整理)
  2. 屏蔽非法路由,好好上网!
  3. NET EF 连接Oracle 的配置方法记录
  4. 怎么判断自己是不是备胎 ?
  5. 男朋友就是要这个样子的
  6. SkeyeARS 全景AR增强监视系统解决方案
  7. RCP中设置view和editor的tilte字体
  8. Kali linux 2016.2(Rolling)里Metasploit连接(包括默认和自定义)的PostgreSQL数据库之后的切换到指定的工作空间...
  9. C# 使用MemeryStream进行序列化
  10. 正则匹配中文英文字符及标点
  11. zz很有用的生活小窍门
  12. 介绍GBase 8C核心技术
  13. 计算机域名的解释,通俗易懂:域名与IP的关系讲解
  14. Java实现 洛谷 P1159 排行榜
  15. js内置对象——String对象
  16. GREENPLUM 5.17 centos 6.10 详细安装步骤
  17. matlab潮汐图,使用MATLAB拟合工具箱进行潮汐调和分析
  18. 使用批处理__更改ip
  19. 摩尔定律要失效了吗?
  20. H5仿微信界面教程(一)

热门文章

  1. bat no moudle named xxx
  2. torch.nn.Linear
  3. asyncio.Protocol socket 断线重连
  4. Layout of the output array img is incompatible with cv::Mat (step[ndims-1] !
  5. python Sigmoid和Tanh 可视化
  6. keras-vis可视化特征
  7. 计算机算法的发展动态,计算机算法动态规划讲解.ppt
  8. 内网java发送邮件_基于JavaMail的Java邮件发送:简单邮件发送
  9. java8异步_Java8新特性之:CompletableFuture
  10. 彻底理解Python生成器和迭代器