图像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,下载起来那个伤心: 方法一:使用码云 这是码云上 ...
随机推荐
- tomcat启动慢问题
sed -i 's/securerandom\.source\=file\:\/dev\/random/securerandom\.source\=file\:\/dev\/urandom/g' $J ...
- rapidxml遍历子节点例子
<?xml version="1.0" encoding="utf-8"?> <luaword> <btn> <inf ...
- $CH$ $0x50$ & $0x51$ 做题记录
[X]$Mr.Young's\ Picture\ Permutations$ 前面这儿写了挺多道辣,,,懒得写辣$QAQ$ (后面所有同上都是同这个$QwQ$ [X]$LCIS$ 做过了,看这儿 $u ...
- SpringBoot原理分析与配置
1.1 起步依赖原理分析 1.1.1 分析spring-boot-starter-parent 按住Ctrl点击pom.xml中的spring-boot-starter-parent,跳转到了spri ...
- Scala:用于Java的轻量级函数式编程
Scala为Java开发提供了轻量级的代码选项,但是学习过程可能会很艰难.了解有关Scala的知识以及是否值得采用. 基于Java的语言通常涉及冗长的语法和特定于领域的语言,用于测试,解析和数值计算过 ...
- RAID阵列
• 廉价冗余磁盘阵列– Redundant Arrays of Inexpensive Disks– 通过硬件/软件技术,将多个较小/低速的磁盘整合成一个大磁盘– 阵列的价值:提升I/O效率.硬件级别 ...
- 常用加密算法-Delphi XE 10.3.3
主要用到 DELPHI XE 10.2新增HASH函数 class function TUtils.GetStringMD5(const AInPut: string): string; begin ...
- hadoop搭建
一.前期准备 1.1 静态ip,请查看虚拟机安装不放呢 1.2 hostname 以及 hosts文件修改 cat /etc/hostname 不同的机器设置不同的名字 cat /etc/hosts ...
- qiniuLive 连麦流程介绍
本文出自APICloud官方论坛 qiniuLive 封装了七牛直播云服务平台的移动端开放 SDK.该模块包括视频流采集和视频流播放两部分 iOS连麦流程图: Android连麦流程图: 以下部分代码 ...
- window 10 安装Oracle odac 64位
下载地址:https://www.oracle.com/cn/database/technologies/windows/downloads.html 可以下载XCopy版,也可以继续往下看下载安装文 ...