图像GIST特征和LMGIST包的python实现(有github)

  • 时间:
  • 浏览:0
  • 来源:极速快3_快3平台代理_极速快3平台代理

       (1) 这一生活宏观意义的场景底部形态描述

       (2) 只识别“大街上有许多行人”你这一 场景,不必知道图像中在有有哪些位置有哪十几个 人,不可能 有许多有哪些对象。

       (3) Gist底部形态向量还可否 一定程度表征你这一 宏观场景底部形态

GIST定义下列这一生活对空间包络的描述法律法律依据

自然度(Degree of Naturalness) 场景不可能 带有层厚的水平和垂直线,这表明该场景有明显的人工痕迹,通常自然景象具有纹理区域和起伏的轮廓。就说,边缘具有层厚垂直于水平倾向的自然度低,反之自然度高。
开放度(Degree of Openness) 空间包络不是封闭(或围绕)的。封闭的,类式:森林、山、城市中心。不可能 是广阔的,开放的,类式:海岸、高速公路。
粗糙度(Degree of Roughness) 主要指主要构成成分的颗粒大小。这取决于每个空间中元素的尺寸,亲戚亲戚朋友构建更加繁杂的元素的不可能 性,以及构建的元素之间的底部形态关系等等。粗糙度与场景的分形维度有关,就说还可否 叫繁杂度。
膨胀度(Degree of Expansion) 平行线收敛,给出了空间梯度的层厚特点。类式平面视图中的建筑物,具有低膨胀度。相反,非常长的街道则具有高膨胀度。
险峻度(Degree of Ruggedness) 即相对于水平线的偏移。(类式,平坦的水平地面上的山地景观与陡峭的地面)。险峻的环境下在图片中生产倾斜的轮廓,并隐藏了地平线线。大多数的人造环境建立了平坦地面。否则,险峻的环境大多是自然的。
  • 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.1 LMgist算法主流程

  • G1:对输入图片进行预解决 (RGB或RGBA转128x128灰度图)
  • G2:对输入图片进行Prefilt解决
  • G3:计算图片的Gist向量

3.2 G2 对输入图片进行Prefilt解决

3.2.1 Pad images to reduce boundary artifacts (扩边+去伪影)

\[{\bf{matlog}} = \log \left( {{\bf{mat}} + 1} \right)\]

\[{\bf{matPad}} = {\mathop{\rm sympading}\nolimits} \left( {{\bf{matlog}},\left[ {5,5,5,5} \right]} \right)\]



图1 sympading操作

3.2.2 Filter (构造滤波器)





\[{\bf{matGf}} = {\mathop{\rm FFTSHITF}\nolimits} \left( {\exp \left( { - \frac{{{\bf{matF}}{{\bf{x}}^2} + {\bf{matF}}{{\bf{y}}^2}}}{{{{\left( {\frac{{fc}}{{\sqrt {\log \left( 2 \right)} }}} \right)}^2}}}} \right)} \right)\]

3.2.3 Whitening (白化)

\[{\bf{matRes}} = {\bf{matPad}} - {\mathop{\rm Real}\nolimits} \left( {{\mathop{\rm IFFT}\nolimits} \left( {{\mathop{\rm FFT}\nolimits} \left( {{\bf{matPad}}} \right){\bf{matGf}}} \right)} \right)\]

3.2.4 Local contrast normalization (局部对比度归一化)

\[{\bf{matLocal}} = \sqrt {\left| {{\mathop{\rm IFFT}\nolimits} \left( {{\mathop{\rm FFT}\nolimits} \left( {{\bf{matRes}} \cdot {\bf{matRes}}} \right) \cdot {\bf{matGf}}} \right)} \right|} \]

\[ {\bf{matRes}} = \frac{{{\bf{matRes}}}}{{0.2 + {\bf{matLocal}}}} \]

3.2.5 Local contrast normalization (局部对比度归一化)

\[{\bf{matPrefilt = matRes}}\left[ {5:64 + 5,5:64 + 5} \right]\]

3.3 计算图片的Gist向量

3.3.1 Pading

\[{\bf{matPad}} = {\mathop{\rm sympading}\nolimits} \left( {{\bf{matPrefilt}},\left[ {32,32,32,32} \right]} \right)\]

3.3.2 FFT

\[{\bf{matLocal}} = {\mathop{\rm FFT}\nolimits} \left( {{\bf{matPad}}} \right)\]

3.3.3 遍历每个Gabor核函数





图2 全局Gist底部形态的提取

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.05272302 0.05941689 0.05476999 0.13110309 0.13333975

0.29072759 0.16522023 0.23032277 0.36830457] ...

convert rgb image

shape (1, 1536)

noly show 10dim [0.02520592 0.05272302 0.05941689 0.05476999 0.13110309 0.13333975

0.29072759 0.16522023 0.23032277 0.36830457] ...

convert gray image

shape (1, 512)

noly show 10dim [0.304389 0.20628179 0.17682694 0.16277722 0.10557428 0.14448622

0.29214159 0.11230066 0.16483087 0.28381876] ...

4.2 Gist底部形态余弦类式距离

下载好github中的代码项目,运行python _test_get_cossim.py





参考资料

  1. GIST底部形态描述符使用
  2. GIST 空间包络底部形态 推荐论文 简介