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

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

OpenCV 例程200篇 总目录-202205更新


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


6.5 Gabor 滤波器

Gabor 变换是一种加窗短时傅里叶变换,以高斯函数作为短时傅里叶变换的窗函数,因此可以在频域不同尺度、不同方向上提取特征。

Gabor 函数对频率和方向表达与人类视觉响应非常类似,且对图像的亮度变化、对比度变化、姿态变化都具有较强鲁棒性。Gabor 滤波器常用于边缘提取,对纹理识别和分离的效果很好;可以用于表达图像局部特征, 在视觉领域中经常被用来作图像的预处理 。

在空间域将正弦函数与高斯函数进行卷积,就得到 Gabor 滤波器,其数学表达形式为:

g ( x , y ) = e x p [ − x ′ 2 + γ y ′ 2 2 σ 2 ] ⋅ e x p [ i ( 2 π x ′ λ + ψ ) ] g(x,y) = exp[- \frac{x'^2+\gamma y'^2}{2 \sigma ^2}] \cdot exp[i(2 \pi \frac{x'}{\lambda}+\psi)] g(x,y)=exp[2σ2x2+γy2]exp[i(2πλx+ψ)]

实数部分:
g ( x , y ) = e x p [ − x ′ 2 + γ y ′ 2 2 σ 2 ] ⋅ c o s [ ( 2 π x ′ λ + ψ ) ] g(x,y) = exp[- \frac{x'^2+\gamma y'^2}{2 \sigma ^2}] \cdot cos[(2 \pi \frac{x'}{\lambda}+\psi)] g(x,y)=exp[2σ2x2+γy2]cos[(2πλx+ψ)]

虚数部分:
g ( x , y ) = e x p [ − x ′ 2 + γ y ′ 2 2 σ 2 ] ⋅ s i n [ ( 2 π x ′ λ + ψ ) ] g(x,y) = exp[- \frac{x'^2+\gamma y'^2}{2 \sigma ^2}] \cdot sin[(2 \pi \frac{x'}{\lambda}+\psi)] g(x,y)=exp[2σ2x2+γy2]sin[(2πλx+ψ)]

式中各参数的含义为:
x ′ = x c o s θ + y s i n θ y ′ = − x s i n θ + y c o s θ x' = x cos \theta + y sin \theta\\y' = - x sin \theta + y cos \theta\\ x=xcosθ+ysinθy=xsinθ+ycosθ

λ \lambda λ,滤波器核函数中正弦函数的波长,像素数,大于2,小于图像尺寸的 1/5。
ψ \psi ψ,滤波器核函数中正弦函数的相位偏移,角度,-180~180度。0度时白条为中心,180度时黑条为中心。
θ \theta θ,滤波器核函数中平行条带的倾斜角度,0~360度。
γ \gamma γ,空间纵横比,核函数形状的椭圆率, γ = 1 \gamma=1 γ=1 时为圆形, γ < 1 \gamma<1 γ<1 时在条纹的平行方向伸长,通常取 0.5。
σ \sigma σ,滤波器核函数中高斯函数的标准差。
b b b,滤波器的半响应空间频率带宽,通常取 1.0,此时 σ / λ = 0.56 \sigma / \lambda = 0.56 σ/λ=0.56。带宽越小,标准差越大,平行条纹数量越多。

Gabor 滤波器的冲激响应是高斯函数与复指数函的乘积,达到时频测不准关系的下界,因此是兼顾信号在时频域的最优分辨率。

Gabor 滤波的基本思想是,不同纹理具有不同的中心频率及带宽,Gabor 滤波器是带通滤波器,只允许特定频率的纹理通过,因而可以分析和提取纹理特征。

Gabor 滤波器可以提取不同方向和不同尺度的特征,通常选择若干尺度和方向进行组,建立 Gabor 滤波器组。

基于 Gabor 滤波器的特征提取的实现步骤:
(1)将输入图像按空间位置分为 3×3(9块)和 4×4(16块)的图像块;
(2)选择若干尺度和方向,如 5尺度4方向,建立 Gabor 滤波器组;
(3)Gabor 滤波器组与每个图像块在空域卷积,每个图像块得到 20 个滤波器输出;
(4)将每个图像块的 24个Gabor 滤波输出,“浓缩” 为一个 24×1 的列向量作为该图像块的纹理特征。

OpenCV 中提供的 cv.getGaborKernel() 函数可以生成 Gabor 滤波器核。


1.95: Gabor 带通滤波器

    # 1.95: 基于 Gabor 带通滤波器的特征提取# 构造 Gabor 滤波器组GaborFilters = []size = [5, 7, 9, 11, 15]  # Gabor 滤波器尺寸lamda = np.pi / 2.0  # 正弦函数波长for i in range(4):theta = i * np.pi/4  # 平行条带倾斜角度,0°,45°,90°,135°for k in range(5):ksize = (size[k], size[k])  # Gabor 滤波器尺寸kernel = cv2.getGaborKernel(ksize, 1.0, theta, lamda, 0.5, 0, ktype=cv2.CV_32F)kernel /= kernel.sum()GaborFilters.append(kernel)# 读取图像img = cv2.imread("../images/Fractal02.png", flags=1)# Gabor 滤波plt.figure(figsize=(10, 7))res = []  # 滤波结果for i in range(len(GaborFilters)):accum = np.zeros_like(img)for kern in GaborFilters[i]:fimg = cv2.filter2D(img, cv2.CV_8UC1, kern)accum = np.maximum(accum, fimg, accum)res.append(np.asarray(accum))plt.subplot(4, 5, i + 1), plt.axis('off')plt.imshow(cv2.cvtColor(accum, cv2.COLOR_BGR2RGB))plt.tight_layout()plt.show()

在这里插入图片描述



(本节完)


版权声明:

OpenCV 例程200篇 总目录-202205更新
youcans@xupt 原创作品,转载必须标注原文链接:(https://blog.csdn.net/youcans/article/details/124970610)

Copyright 2022 youcans, XUPT
Crated:2022-5-25


欢迎关注 『youcans 的 OpenCV 例程 200 篇』 系列,持续更新中
欢迎关注 『youcans 的 OpenCV学习课』 系列,持续更新中

【youcans 的 OpenCV 例程200篇】185.图像金字塔之高斯金字塔
【youcans 的 OpenCV 例程200篇】186.图像金字塔之拉普拉斯金字塔
【youcans 的 OpenCV 例程200篇】187.由拉普拉斯金字塔还原图像
【youcans 的 OpenCV 例程200篇】188.基于拉普拉斯金字塔的图像融合
【youcans 的 OpenCV 例程200篇】189.基于掩模的拉普拉斯金字塔图像融合
【youcans 的 OpenCV 例程200篇】190.基于图像分割的图像融合
【youcans 的 OpenCV 例程200篇】191.基于图像分割的金字塔图像融合
【youcans 的 OpenCV 例程200篇】192.Gabor 滤波器组的形状
【youcans 的 OpenCV 例程200篇】193.基于Gabor 滤波器的特征提取
更多内容,请见:
【OpenCV 例程200篇 总目录-202206更新】


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

相关文章

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

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

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

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

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

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

gabor滤波器简要介绍

在经过一天的浏览csdn&#xff0c;博客园后&#xff0c;总算是对gabor滤波器有了一个大概的了解&#xff0c;所以趁还热着&#xff0c;赶紧记录一下。 写的话&#xff0c;先给自己梳理下要写什么吧&#xff1a; 1. 什么是gabor滤波器&#xff0c;公式定义 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核函数定义&#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…