Gabor滤波器 pytorch实现

article/2025/10/23 0:18:15

Gabor函数与人眼的生物作用相仿,尤其对于图片的方向和尺度特征可以很好的捕捉。所以,经常用于纹理、物体识别。对于Gabor的原理、公式不再赘述。
下面对Gabor滤波器用pytorch实现,并进行可视化:

import math
import torch
import numpy as np
from matplotlib import pyplot as pltdef getGaborFilterBank(nScale, M, h, w):#nscale表示波长,M表示方向,h表示图片的长,w表示图片的宽Kmax = math.pi / 2f = math.sqrt(2)sigma = math.pisqsigma = sigma ** 2postmean = math.exp(-sqsigma / 2)if h != 1:gfilter_real = torch.zeros(M, h, w)for i in range(M):theta = i / M * math.pik = Kmax / f ** (nScale - 1)xymax = -1e309xymin = 1e309for y in range(h):for x in range(w):y1 = y + 1 - ((h + 1) / 2)x1 = x + 1 - ((w + 1) / 2)tmp1 = math.exp(-(k * k * (x1 * x1 + y1 * y1) / (2 * sqsigma)))#tmp2 = math.cos(k * math.cos(theta) * x1 + k * math.sin(theta) * y1) - postmean # For real parttmp2 = math.sin(k * math.cos(theta) * x1 + k * math.sin(theta) * y1) # For imaginary partgfilter_real[i][y][x] = k * k * tmp1 * tmp2 / sqsigma			xymax = max(xymax, gfilter_real[i][y][x])xymin = min(xymin, gfilter_real[i][y][x])gfilter_real[i] = (gfilter_real[i] - xymin) / (xymax - xymin)else:gfilter_real = torch.ones(M, h, w)return gfilter_real#可视化
def plots(ims, interp=False, titles=None):ims=np.array(ims)mn,mx=ims.min(),ims.max()f = plt.figure(figsize=(12,24))for i in range(len(ims)):sp=f.add_subplot(1, len(ims), i+1)if not titles is None: sp.set_title(titles[i], fontsize=18)plt.imshow(ims[i], interpolation=None if interp else 'none', vmin=mn,vmax=mx)G=getGaborFilterBank(4,4,32,32)
plots(G)

结果如图所示:

在这里插入图片描述


http://chatgpt.dhexx.cn/article/yTHCWxGT.shtml

相关文章

【youcans 的 OpenCV 例程200篇】193.基于Gabor 滤波器的特征提取

OpenCV 例程200篇 总目录-202205更新 【youcans 的 OpenCV 例程200篇】193.基于Gabor 滤波器的特征提取 6.5 Gabor 滤波器 Gabor 变换是一种加窗短时傅里叶变换,以高斯函数作为短时傅里叶变换的窗函数,因此可以在频域不同尺度、不同方向上提取特征。 G…

Python OpenCV实现Log Gabor滤波器(由LGHD描述符扩展)

引言 笔者在研究红外图像与可见光图像配准时接触到了很多描述符,其中关于LGHD描述符的Log Gabor滤波器很有意思,与大家分享 LGHD(Log-Gabor Histogram Descriptor) 描述符的思想是基于高频分量分布的描述符对于不同的非线性强度…

python实现Gabor滤波器-skimage(一)

什么是Gabor滤波器? Gabor滤波器是一种由正弦波调制的高斯核线性滤波器。Gabor滤波器的频率和方向表示与人类视觉系统相似。Gabor滤波器组通常用于计算机视觉和图像处理。特别适用于边缘检测和纹理分类。一个二维Gabor滤波器是一个由正弦平面波调制的高斯核函数。好…

二维gabor滤波器matlab,在matlab中使用可分离的Gabor滤波器

如果过滤器g可以表示为两个向量grow和gcol的乘法,则称为可分离过滤器。使用一维滤波器将二维滤波器的计算复杂度从O(M^2 N^2)降低到O(2M N^2),其中M和N分别是滤波器掩码和图像的宽度(和高度)。 在this stackoverflow link中,我在空间域中编写…

gabor滤波器简要介绍

在经过一天的浏览csdn,博客园后,总算是对gabor滤波器有了一个大概的了解,所以趁还热着,赶紧记录一下。 写的话,先给自己梳理下要写什么吧: 1. 什么是gabor滤波器,公式定义 2. gabor滤波器的代码…

MATLAB---一维Gabor滤波器、gabor滤波器的实部与虚部图像、Gabor滤波器

%% 一维Gabor滤波器 clc,clear,close all % 清理命令区、清理工作区、关闭显示图形 warning off % 消除警告 feature jit off % 加速代码运行 x-4:0.01:4; t1; y1*exp(-(x.^2)./(sqrt(2*pi)*t^2)); plot(x,y,b,linewidth,2); hold on x1-4:0.01:4; y11*sin(9*x1pi…

有关Gabor滤波器

有关Gabor Gabor特征是一种可以用来描述图像纹理信息的特征。此外,Gabor小波对于图像的边缘敏感,\能够提供良好的方向选择和尺度选择特性,可以在频域不同尺度、不同方向上提取相关的特征。Gabor滤波器可以提取不同方向上的纹理信息。Gabor滤波器对于光照变化不敏感,能够提供…

基于Gabor滤波器的图像边缘检测实验

1 Gabor滤波算法原理 Gabor核函数定义: 式中:依次作为主轴方向上的高斯尺度、主轴方向正交的高斯尺度, 是滤波器的中心频率;是调制平面波以及高斯主轴旋转的角度,它沿着逆时针方向,和是常数。Gabor滤波器…

版本管理工具git常用命令

一、git是什么,⽤来做什么 git是分布式版本控制系统,⽤来进⾏版本管理 ⼆、git有什么特点 git VS svn git是分布式,svn是集中式。分布式版本系统的最⼤好处之⼀是在本地⼯作完全不需要考 虑远程库的存在,也就是有没有联⽹都可以…

Git 代码版本管理工具详解 进厂必备

目录 前言Git 概述什么是版本控制?为什么需要版本控制?版本控制工具集中式分布式 Git 工作机制Git安装Git 常用命令(部分)初始化本地库设置用户签名初始化本地库查看本地库状态***工作区代码编写***添加暂存区撤销工作区的修改***提交本地库***工作区修改…

代码版本管理工具Git

Git 的发展历史 在做一个项目工程的时候,代码总是不断地更新,于是你就可能一边写代码,一边就为你的代码创建了很多的版本文件夹,分别叫“项目 0.1”、“项目 0.2”、“项目 0.3”、“项目 1.0”之类的名字,让你可以区…

Git分布式版本管理工具

Git_1_概述 1.特性 能够记录历史版本,回退历史版本团队开发,方便代码合并 2.介绍(摘自维基百科) git是一个分布式版本控制软件,最初由林纳斯托瓦兹创作,于2005年以GPL许可协议发布。最初目的是为了更好地管理Linux内核开发而设计。应注意的是&#xf…

Node版本管理工具

前些天在公司的时候,由于业务需求需要降低node的版本,但是网上找了一大堆教程,windows电脑都无法使用,没办法自己研究了一下,成功在自己电脑上安装了多个版本的node,几个命令就能切换,那么就让我…

软件测试——版本管理工具:SVN和Git

软件测试——版本管理工具:SVN和Git SVNSVN的安装和介绍SVN的安装操作冲突 GitGit的安装和配置git的命令行用法git 代码冲突 持续集成和持续交付定义目的持续集成和持续交付实施模型分析 SVN SVN是开放源代码的版本控制系统集中式的含义是指:所有的文件…

版本管理工具介绍—Git篇

一.版本管理工具作用 主要讲解了git在各平台的安装和基本使用,Git能够帮助我们解决文件的提交、检出、回溯历史、冲突解决、多人协作模式等问题,并且大大提升我们的工作效率。 版本管理工具是干什么的? 1.备份文件 2.历史记录 3.回到过去…

版本管理的使用

gitlab的使用 gitlab是一个代码仓库,类似于github,只不过gitlab是私有的,一般部署在公司内部的服务器上 网站设置为中文页面 点击右上角的头像,点击弹出框的Preferences菜单,如下图: 打开页面后&#xff0…

2. 版本管理

文章目录 2.1 一句话总结Git2.2 可以完成哪些功能?2.3 主流版本控制工具/软件2.4 版本控制分类2.4.1 本地版本控制2.4.2 集中版本控制2.4.3 分布式版本控制 2.5 Git VS SVN2.5.1 SVN2.5.2 Git 2.1 一句话总结Git 在开发的过程中用于管理对文件、目录或工程等内容的…

软件版本管理

修订说明 1.PC端产品内部版本号管理说明 为了规范产品管理,提高产品质量,特制定产品版本规则。产品从版本上分为主版本和分支版本,从稳定程度上分为每日构建、内部测试版(alpha测试)、Beta测试版、稳定版。 所有的版本命名均遵循以下规则&a…

Git版本管理工具使用详细介绍

一、引言 跟你们吐槽一下,最近小编的工作制度也改成996,怎么说? 是好是坏呢? 网上很多小伙伴也在吐槽,刚开始小编也是挺反感的,毕竟之前周末一些坚持的习惯,因此都需要改变。 既然公司选择了996…

Git—版本管理工具

作用:分布式版本控制 一句话:在开发的过程中用于管理对文件、目录或工程等内容的修改历史,方便查看历史记录,备份以便恢复以前的版本的软件工程技术 官网下载安装:https://git-scm.com/ 命令大全:https://g…