图像GIST特征和LMGIST包的python实现(有github)
1什么是Gist特征
(1) 一种宏观意义的场景特征描述
(2) 只识别“大街上有一些行人”这个场景,无需知道图像中在那些位置有多少人,或者有其他什么对象。
(3) Gist特征向量可以一定程度表征这种宏观场景特征
GIST定义下列五种对空间包络的描述方法
空间包络名 | 阐释 |
---|---|
自然度(Degree of Naturalness) | 场景如果包含高度的水平和垂直线,这表明该场景有明显的人工痕迹,通常自然景象具有纹理区域和起伏的轮廓。所以,边缘具有高度垂直于水平倾向的自然度低,反之自然度高。 |
开放度(Degree of Openness) | 空间包络是否是封闭(或围绕)的。封闭的,例如:森林、山、城市中心。或者是广阔的,开放的,例如:海岸、高速公路。 |
粗糙度(Degree of Roughness) | 主要指主要构成成分的颗粒大小。这取决于每个空间中元素的尺寸,他们构建更加复杂的元素的可能性,以及构建的元素之间的结构关系等等。粗糙度与场景的分形维度有关,所以可以叫复杂度。 |
膨胀度(Degree of Expansion) | 平行线收敛,给出了空间梯度的深度特点。例如平面视图中的建筑物,具有低膨胀度。相反,非常长的街道则具有高膨胀度。 |
险峻度(Degree of Ruggedness) | 即相对于水平线的偏移。(例如,平坦的水平地面上的山地景观与陡峭的地面)。险峻的环境下在图片中生产倾斜的轮廓,并隐藏了地平线线。大多数的人造环境建立了平坦地面。因此,险峻的环境大多是自然的。 |
2 Gist的实现--LMgist
LMgist的Matlab代码 LMgist Matlab代码
LMgist Matlab代码的使用
% 读取图片
img = imread('demo2.jpg');
% 设置GIST参数
clear param
param.orientationsPerScale = [8 8 8 8]; % number of orientations per scale (from HF to LF)
param.numberBlocks = 4;
param.fc_prefilt = 4;
% 计算GIST
[gist, param] = LMgist(img, '', param);
3 LMgist原理
3.1 LMgist算法主流程
- G1:对输入图片进行预处理 (RGB或RGBA转128x128灰度图)
- G2:对输入图片进行Prefilt处理
- G3:计算图片的Gist向量
3.2 G2 对输入图片进行Prefilt处理
3.2.1 Pad images to reduce boundary artifacts (扩边+去伪影)
\]
\]
图1 sympading操作
3.2.2 Filter (构造滤波器)
\]
3.2.3 Whitening (白化)
\]
3.2.4 Local contrast normalization (局部对比度归一化)
\]
\]
3.2.5 Local contrast normalization (局部对比度归一化)
\]
3.3 计算图片的Gist向量
3.3.1 Pading
\]
3.3.2 FFT
\]
3.3.3 遍历每个Gabor核函数
图2 全局Gist特征的提取
4 LMgist的Python实现
GitHub代码 https://github.com/Kalafinaian/python-img_gist_feature
4.1 提取Gist特征
import cv2
from img_gist_feature.utils_gist import *
s_img_url = "./test/A.jpg"
gist_helper = GistUtils()
np_img = cv2.imread(s_img_url, -1)
print("default: rgb")
np_gist = gist_helper.get_gist_vec(np_img)
print("shape ", np_gist.shape)
print("noly show 10dim", np_gist[0,:10], "...")
print()
print("convert rgb image")
np_gist = gist_helper.get_gist_vec(np_img, mode="rgb")
print("shape ", np_gist.shape)
print("noly show 10dim", np_gist[0,:10], "...")
print()
print("convert gray image")
np_gist = gist_helper.get_gist_vec(np_img, mode="gray")
print("shape ", np_gist.shape)
print("noly show 10dim", np_gist[0,:10], "...")
print()
运行得到的gist特征为
default: rgb
shape (1, 1536)
noly show 10dim [0.02520592 0.05272802 0.05941689 0.05476999 0.13110509 0.13333975
0.29072759 0.16522023 0.25032277 0.36850457] ...
convert rgb image
shape (1, 1536)
noly show 10dim [0.02520592 0.05272802 0.05941689 0.05476999 0.13110509 0.13333975
0.29072759 0.16522023 0.25032277 0.36850457] ...
convert gray image
shape (1, 512)
noly show 10dim [0.10004389 0.20628179 0.17682694 0.16277722 0.10557428 0.14448622
0.29214159 0.11260066 0.16488087 0.28381876] ...
4.2 Gist特征余弦相似距离
下载好github中的代码项目,运行python _test_get_cossim.py
5 LMgist的效果
参考资料
图像GIST特征和LMGIST包的python实现(有github)的更多相关文章
- GIST特征描述符使用
来源:http://www.cnblogs.com/justany/archive/2012/12/06/2804211.html 一种场景特征描述 场景特征描述? 通常的特征描述符都是对图片的局部特 ...
- GIST特征描述符使用(转)
GIST特征描述符使用 一种场景特征描述 场景特征描述? 通常的特征描述符都是对图片的局部特征进行描述的,以这种思路进行场景描述是不可行的. 比如:对于“大街上有一些行人”这个场景,我们必须通过局部特 ...
- 图像的特征工程:HOG特征描述子的介绍
介绍 在机器学习算法的世界里,特征工程是非常重要的.实际上,作为一名数据科学家,这是我最喜欢的方面之一!从现有特征中设计新特征并改进模型的性能,这就是我们进行最多实验的地方. 世界上一些顶级数据科学家 ...
- Kaggle "Microsoft Malware Classification Challenge"——就是沙箱恶意文件识别,有 Opcode n-gram特征 ASM文件图像纹理特征 还有基于图聚类方法
使用图聚类方法:Malware Classification using Graph Clustering 见 https://github.com/rahulp0491/Malware-Classi ...
- opencv批处理提取图像的特征
____________________________________________________________________________________________________ ...
- jmeter数据库,charles抓包,Python循环语句
jmeter数据库,charles抓包,Python循环语句 一.Jemeter数据库 添加jar包数据库 jemeter=>浏览 添加JDBC Connection Configuration ...
- 【图像基础】图像不变性特征HU矩和Zernike矩
参考 1. 图像不变性特征: 2. matlab实现: 3. HU矩和Zernike矩: 完
- ROS学习手记 - 2.1: Create and Build ROS Package 生成包(Python)
ROS学习手记 - 2.1: Create and Build ROS Package 生成包(Python) 时隔1年,再回来总结这个问题,因为它是ros+python开发中,太常用的一个操作,需要 ...
- go依赖包下载加速方法及github加速
go依赖包下载加速方法及github加速 对于https://github.com/kubernetes/kubernetes整个仓库大小为近900M,下载起来那个伤心: 方法一:使用码云 这是码云上 ...
随机推荐
- Python学习3月5号【python编程 从入门到实践】---》笔记(2)
1.操作列表 一.遍历整个列表,并且想对每一个元素执行相同的操作.##这里就不得不提起我们一直用的For函数了. 二.深入地研究循环 (1)for i in superheroes:##首先读取其 ...
- 我的面试标准:1.能干活;2.Java基础好;3.熟悉分布式框架
本文授权转载自:https://www.cnblogs.com/JavaArchitect/p/10011253.html . awesome-java:https://github.com/Snai ...
- 001JZ2440开发板熟悉与使用
- 关于有向图走“无限次”后求概率/期望的口胡/【题解】HNCPC2019H 有向图
关于有向图走"无限次"后求概率/期望的口胡/[题解]HNCPC2019H 有向图 全是口胡 假了不管 讨论的都是图\(G=(V,E),|V|=n,|E|=m\)上的情况 " ...
- 【题解】CF986E Prince's Problem(树上差分+数论性质)
[题解]CF986E Prince's Problem(树上差分+数论性质) 题目大意: 给定你一棵树,有点权\(val_i\le 10^7\).现在有\(m\)组询问给定参数\(x,y,w\)问你对 ...
- A记录都不懂,怎么做开发Leader?
开发 Leader 和一线开发的区别在于:普通一线开发很多时候都只接触业务编码,不需要关注除开发之外的其他事情.但是作为一个开发 Leader,不仅仅需要懂开发层面的东西,还需要懂得运维层面的东西. ...
- Django 多表、跨表、聚合、分组查询
前期准备: 创建表 class Book(models.Model): title = models.CharField(max_length=32) price = models.DecimalFi ...
- jenkins +git+ssh 构建 .net项目
jenkins +git+ssh 构建 .net项目 安装jenkins jdk 和插件就不一一介绍了. Multiple SCMs 插件介绍:可以获取多个项目(如果你的项目中有依赖其他项目的) So ...
- C# WPF 嵌入网页版WebGL油田三维可视化监控
0x00 楔子 最近做的一个项目,是一个油田三维可视化监控的场景编辑和监控的系统,和三维组态有些类似,不过主要用于油田上. 效果如下图所示: 首先当然是上模型,设计人员跟进. 有了相关的模型,使用我们 ...
- TensorFlow——学习率衰减的使用方法
在TensorFlow的优化器中, 都要设置学习率.学习率是在精度和速度之间找到一个平衡: 学习率太大,训练的速度会有提升,但是结果的精度不够,而且还可能导致不能收敛出现震荡的情况. 学习率太小,精度 ...