gabor滤波器简要介绍

article/2025/10/23 0:22:42

在经过一天的浏览csdn,博客园后,总算是对gabor滤波器有了一个大概的了解,所以趁还热着,赶紧记录一下。

写的话,先给自己梳理下要写什么吧:

1. 什么是gabor滤波器,公式定义

2. gabor滤波器的代码实现

3. 实验结果图

4. 借鉴的资料

 

1. gabor滤波器简介(主要copy吧)

  

在图像处理中,Gabor函数是一个用于边缘提取的线性滤波器。Gabor滤波器的频率和方向表达同人类视觉系统类似。研究发现,Gabor滤波器十分适合纹理表达和分离。在空间域中,一个二维Gabor滤波器是一个由正弦平面波调制的高斯核函数。

  还有,生物学实验发现,Gabor滤波器可以很好地近似单细胞的感受野函数(光强刺激下的传递函数),什么视皮层内的超柱,bla...bla,总之是这方面仿生的数学模型。

  另外,网上有一种说法,gabor分为实部和虚部,用实部进行滤波后图像会平滑;虚部滤波后用来检测边缘。【来自百度知道某个大神的回答】,我查了文献,发现的确有人用Gabor的奇函数部分做边缘提取(《基于Gabor滤波器的边缘检测算法》 无线电工程 2000年第3卷第30期)。另外,从我的实验结果也有类似的发现。暂且认为这个对的吧。

  Gabor滤波器的脉冲响应,可以定义为一个正弦波(对于二维Gabor滤波器是正弦平面波)乘以高斯函数。由于乘法卷积性质,Gabor滤波器的脉冲响应的傅立叶变换是其调和函数的傅立叶变换和高斯函数傅立叶变换的卷积。该滤波器由实部和虚部组成,二者相互正交。一组不同频率不同方向的Gabor函数数组对于图像特征提取非常有用。

下面给出二维Gabor函数的数学表达:

复数表达:

实数部分:

虚数部分:

   

其中:

 

以上的讲解用我自己的理解的话,其实上面都是在讲如何实现一个滤波器,就像实现图像处理里面的一个均值平滑滤波器一样,只不过平滑滤波器太简单了,就一个3*3或5*5的方格里求均值在放到原处。这里呢,也是在实现一个滤波器,但是gabor的稍微复杂(一看就知道,参数多如麻啊!)。

波长(λ):它的值以像素为单位指定,通常大于等于2.但不能大于输入图像尺寸的五分之一。通常用的是它的倒数频率f大于等于0.2。

方向(θ):这个参数指定了Gabor函数并行条纹的方向,它的取值为0到360度

相位偏移(φ):它的取值范围为-180度到180度。其中,0he180度分别对应中心对称的center-on函数和center-off函数,而-90度和90度对应反对称函数。

长宽比(γ):空间纵横比,决定了Gabor函数形状(support,我翻译为形状)的椭圆率(ellipticity)。当γ= 1时,形状是圆的。当γ< 1时,形状随着平行条纹方向而拉长。

还有一个σ,它的话,在代码实现里常常是滤波器大小的一半。

在实际使用gabor的话,我们一般用的是它的实数部分,也是就说,我们就是根据第三个公式求gabor滤波器的。

2. 代码实现

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
%gamma 长宽比,一般设为1
%lambda为波长
%psi为相位移动,一般为0<br>%theta为滤波器的角度
function gb=Gabor(sigma,theta,lambda, psi , gamma
    
sigma_x = sigma; 
sigma_y = sigma/ gamma
    
% Bounding box 
nstds = 4; 
xmax = max ( abs (nstds*sigma_x* cos (theta)), abs (nstds*sigma_y* sin (theta))); 
xmax = ceil ( max (1,xmax)); 
ymax = max ( abs (nstds*sigma_x* sin (theta)), abs (nstds*sigma_y* cos (theta))); 
ymax = ceil ( max (1,ymax)); 
xmin = -xmax; ymin = -ymax; 
[x,y] = meshgrid (xmin:xmax,ymin:ymax); 
    
% Rotation  
x_theta=x* cos (theta)+y* sin (theta); 
y_theta=-x* sin (theta)+y* cos (theta); 
    
gb= exp (-.5*(x_theta.^2/sigma_x^2+y_theta.^2/sigma_y^2)).* cos (2* pi /lambda*x_theta+ psi );

3. 实验结果图

?
1
filter =Gabor(6, pi /4,8,0,1);imshow( filter /2+0.5)

  

?
1
2
3
img= imread ( 'lena.png' );
img=rgb2gray(img);
f= filter2 ( filter ,img, 'valid' );f= abs (f);imshow(f/ max (f(:)))

  

额,,,好像有点水,让大家失望了

4. 借鉴的资料

http://blog.csdn.net/watkinsong/article/details/7874032

http://blog.csdn.net/jinshengtao/article/details/17797641

http://blog.csdn.net/tender8888/article/details/7470985


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

相关文章

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核函数定义&#xff1a; 式中&#xff1a;依次作为主轴方向上的高斯尺度、主轴方向正交的高斯尺度&#xff0c; 是滤波器的中心频率&#xff1b;是调制平面波以及高斯主轴旋转的角度&#xff0c;它沿着逆时针方向&#xff0c;和是常数。Gabor滤波器…

版本管理工具git常用命令

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

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

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

代码版本管理工具Git

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

Git分布式版本管理工具

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

Node版本管理工具

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

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

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

版本管理工具介绍—Git篇

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

版本管理的使用

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

2. 版本管理

文章目录 2.1 一句话总结Git2.2 可以完成哪些功能&#xff1f;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端产品内部版本号管理说明 为了规范产品管理&#xff0c;提高产品质量&#xff0c;特制定产品版本规则。产品从版本上分为主版本和分支版本&#xff0c;从稳定程度上分为每日构建、内部测试版(alpha测试)、Beta测试版、稳定版。 所有的版本命名均遵循以下规则&a…

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

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

Git—版本管理工具

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

常见的版本控制工具

常见的版本控制工具 我们学习的东西&#xff0c;一定是当下最流行的&#xff01; 主流的版本控制器有如下这些&#xff1a; Git SVN&#xff08;Subversion&#xff09; CVS&#xff08;Concurrent Versions System&#xff09; VSS&#xff08;Micorosoft Visual SourceS…

git版本管理工具

文章目录 1&#xff1a;安装1&#xff1a;设置信息 2&#xff1a;初始化本地项目仓库2.1&#xff1a;本地仓库目录解释 3&#xff1a;git基本原理1&#xff1a;本地流程原理图2&#xff1a;分支合并&#xff1a;merge和rebase3&#xff1a;命令解释 4&#xff1a;git-gui界面操…

项目管理中,如何对各种文件进行统一版本管理?

不知道你在工作中是否也遇到过这样的问题&#xff1a; 1、文件先存一个位置&#xff0c;等晚点再整理&#xff0c;结果过了一段时间&#xff0c;就变成了这样&#xff1a; 2、想从电脑中找一份重要材料&#xff0c;要花费很长时间&#xff0c;有时查找一通&#xff0c;却一无所…

【Linux】版本管理工具 Git

目录 一、什么是 Git 二、如何使用 Git 1、创建远程仓库 2、将远端仓库克隆到本地 3、将本地文件添加到仓库 3.1、三板斧第一招&#xff1a;文件添加 3.2、三板斧第二招&#xff1a;提交本地 3.3、三板斧第三招&#xff1a;提交远端 4、删除文件 5、删除仓库 一、什么是 Gi…

版本管理工具(一)

Git 是一个分布式版本控制工具&#xff0c;它的作者 Linus Torvalds 是这样给我们介绍 Git —— The stupid content tracker&#xff08;傻瓜式的内容跟踪器&#xff09; 1、 Git 背景 Git 最初由Linus Torvalds编写&#xff0c;用于 Linux 内核开发的版本控制工具。 Git 与常…