图像处理:Gabor滤波器简介以及python实现

article/2025/9/16 16:25:09

在图像处理中,以Dennis Gabor命名的Gabor滤波器是一种用于纹理分析的线性滤波器,本质上是指在分析点或分析区域周围的局部区域内,分析图像中是否存在特定方向的特定频率内容。Gabor滤波器的频率和方向表示被许多当代视觉科学家认为与人类视觉系统的频率和方向表示相似。它们被发现特别适合于纹理表征和辨别。
在空间域,二维Gabor滤波器是由正弦平面波调制的高斯核函数(见Gabor变换)。
一些作者声称,哺乳动物大脑视觉皮层中的简单细胞可以用Gabor函数来模拟。因此,用Gabor滤波器进行图像分析被一些人认为类似于人类视觉系统中的感知。

  1. 定义
    它的脉冲响应由正弦波(二维Gabor滤波器的平面波)乘以高斯函数定义。
    由于Gabor滤波器脉冲响应的乘法卷积性质(卷积定理),其傅里叶变换等于谐波函数(正弦函数)的傅里叶变换与高斯函数的傅里叶变换的卷积。滤波器有一个实分量和一个虚分量表示正交方向。这两个分量可以组成一个复数,也可以单独使用。
    请添加图片描述
    在这个公式中,在这里插入图片描述
    这五个参数分别表示正弦因子的波长,Gabor函数的法线到平行条纹的方向,为相位偏移,高斯的sigma标准差,空间长宽比,Gabor函数支持的椭圆度。

  2. 小波空间
    Gabor滤波器与Gabor小波直接相关,因为它们可以被设计为许多膨胀和旋转。然而,一般情况下,对Gabor小波不进行展开,因为展开需要计算双正交小波,这可能非常耗时。因此,通常会创建一个由各种尺度和旋转的Gabor滤波器组成的滤波器组。滤波器与信号卷积,形成所谓的Gabor空间。
    在这里插入图片描述
    上图Gabor滤波器在中文OCR中的应用演示。4个方向显示在右边0°,45°,90°和135°。原始的图片和所有四个方向的叠加显示在左边。

  3. 图像特征提取
    一组不同频率和方向的Gabor滤波器可能有助于从图像中提取有用的特征。在离散域中,二维Gabor滤波器由:
    在这里插入图片描述
    其中B和C是待确定的归一化因子。
    二维Gabor滤波器在图像处理中有着丰富的应用,特别是在纹理分析和分割的特征提取方面。f定义了在纹理中寻找的频率。通过改变theta,我们可以寻找面向特定方向的纹理。通过改变sigma,我们改变了支持或被分析图像区域的大小。

  4. 2-D Gabor滤波器在图像处理的应用
    在图像处理中,Gabor特征是识别的理想选择。在文档图像处理中,Gabor特征是识别多语言文档中单词的脚本的理想选择由于文本具有丰富的高频成分,而图片本质上相对平滑,不同频率和不同方向的Gabor滤波器已被用于从复杂文档图像(包括灰色和彩色)中定位和提取纯文本区域。它还被应用于面部表情识别。Gabor滤波器在模式分析中也得到了广泛的应用。例如,它已被用于研究脊柱多孔海绵状小梁内的指向性分布。Gabor空间在光学字符识别、虹膜识别和指纹识别等图像处理应用中非常有用。特定空间位置的激活之间的关系在图像中的物体之间非常不同。此外,重要的激活可以从Gabor空间中提取,以创建一个稀疏的对象表示。

  5. 上例子
    这个代码有以下步骤(1)读图片(2)构造gabor不同方向的卷积核(3)进行gabor滤波

import cv2,os
import numpy as np
import matplotlib.pyplot as pltdef get_img(input_Path):img_paths = []for (path, dirs, files) in os.walk(input_Path):for filename in files:if filename.endswith(('.jpg','.png')):img_paths.append(path+'/'+filename)return img_paths#构建Gabor滤波器
def build_filters():filters = []ksize = [7,9,11,13,15,17] # gabor尺度,6个lamda = np.pi/2.0         # 波长for theta in np.arange(0, np.pi, np.pi / 4): #gabor方向,0°,45°,90°,135°,共四个for K in range(6):kern = cv2.getGaborKernel((ksize[K], ksize[K]), 1.0, theta, lamda, 0.5, 0, ktype=cv2.CV_32F)kern /= 1.5*kern.sum() # 这里不是很理解filters.append(kern)plt.figure(1)#用于绘制滤波器for temp in range(len(filters)):plt.subplot(4, 6, temp + 1)plt.imshow(filters[temp])plt.show()return filters#Gabor特征提取
def getGabor(img, filters):res = [] #滤波结果for i in range(len(filters)):# res1 = process(img, filters[i])accum = np.zeros_like(img)for kern in filters[i]:fimg = cv2.filter2D(img, cv2.CV_8UC1, kern)accum = np.maximum(accum, fimg, accum)res.append(np.asarray(accum))#用于绘制滤波效果plt.figure(2)for temp in range(len(res)):plt.subplot(4, 6, temp+1)plt.imshow(res[temp], cmap='gray' )plt.show()return res  #返回滤波结果,结果为24幅图,按照gabor角度排列if __name__ == '__main__':#    input_Path = './content'filters = build_filters()#    img_paths = get_img(input_Path)#    for img in img_paths:img = cv2.imread('/Users/guoyuhang/Documents/GitHub/process_result/land_image/2018Su_44471_clip.tif')getGabor(img, filters)

待gabor滤波的原图:
在这里插入图片描述
gabor不同方向不同尺寸的核:
请添加图片描述
经过gabor滤波的结果图:
请添加图片描述


http://chatgpt.dhexx.cn/article/0v420xZw.shtml

相关文章

Gabor滤波器学习

本文的目的是用C实现生成Gabor模版,并对图像卷积。并简单提一下,Gabor滤波器在纹理特征提取上的应用。 一、什么是Gabor函数(以下内容含部分翻译自维基百科) 在图像处理中,Gabor函数是一个用于边缘提取的线性滤波器。…

Gabor变换

2009-12-13 00:51:08| 分类: 图像处理|字号 订阅 转自 http://blog.sina.com.cn/s/blog_48a242d601000a3j.html~typev5_one&labelrela_prevarticle Gabor变换属于加窗傅立叶变换,Gabor函数可以在频域不同尺度、不同方向上提取相关的特征。另外Gabo…

Gabor滤波器

Gabor是一个用于边缘提取的线性滤波器,其频率和方向表达与人类视觉系统类似,能够提供良好的方向选择和尺度选择特性,而且对光照变换不敏感,因此十分适合纹理分析。 一、Gabor滤波器 在图像处理中,Gabor函数是一个用于…

Gabor 特征

一.Gabor 特征的简介 Gabor 特征是一种可以用来描述图像纹理信息的特征,Gabor 滤波器的频率和方向与人类的视觉系统类似,特别适合于纹理表示与判别。Gabor 特征主要依靠 Gabor 核在频率域上对信号进行加窗,从而能描述信号的局部频率信息。 …

Gabor滤波器特征提取原理讲解及c++实现

文章目录 Gabor滤波器复正弦载波高斯滤波 参数解释gabor滤波核实现效果: Gabor滤波器 1946年,Dennis Gabor于在“Theory of communication”一文中提出了著名的“窗口”傅里叶变换(也叫短时Fourier变换,STFT),即Gabor…

FCN学习

简介 FCN(Fully Convolutional Networks for Semantic Segmentation)是首个端对端的针对像素级别预测的全卷积网络,发表在2015CVPR。全卷积的意思是全连接层全部替换成了卷积层。 上面这句话的重点是全卷积,但是端到端end to end这个词也同样重要。end…

卷积神经网络CNN(3)—— FCN(Fully Convolutional Networks)要点解释

前言 参考FCN论文:Fully Convolutional Networks for Semantic Segmentation FCN作为图像语义分割的先河,实现像素级别的分类(即end to end,pixel-wise),为后续使用CNN作为基础的图像语义分割模型提供重要…

语义分割——FCN模型pytorch实现

FCN网络简介 全卷积网络(Fully Convolutional Networks,FCN)是Jonathan Long等人于2015年在Fully Convolutional Networks for Semantic Segmentation一文中提出的用于图像语义分割的一种框架,是首个端对端的针对像素级预测的全卷…

全卷积网络 FCN 详解

原文链接:全卷积网络 FCN 详解 FCN是深度学习应用在图像分割的代表作, 是一种端到端(end to end)的图像分割方法, 让网络做像素级别的预测直接得出label map, 下面我们来看看FCN是如何做到像素级别的分类的 论文 : Fully Convolutional Networks for Semantic Segme…

图像分割-FCN全卷积神经网络(完整代码详解)

目录 FCN全卷积神经网络 实现过程 全卷积 反卷积 FCN的三点创新 code FCN全卷积神经网络 FCN为深度学习在语义分割领域的开山之作,提出使用卷积层代替CNN中的全连接操作,生成热力图heat map而不是类别。 实现过程 图1 FCN网络结构 包括全卷积过程…

FCN网络学习笔记

目录 前言1. 网络结构2. 损失计算:Cross Entropy Loss参考 前言 FCN网络是首个端对端的针对像素级预测的全卷积网络。 其中,全卷积的含义是将分类网络的全连接层全部替换成了卷积层。使用了分类网络作为backbone,将会复用分类网路在ImageNet…

深度学习-全卷积神经网络(FCN)

1. 简介 全卷积神经网络(Fully Convolutional Networks,FCN)是Jonathan Long等人于2015年在Fully Convolutional Networks for Semantic Segmentation一文中提出的用于图像语义分割的一种框架,是深度学习用于语义分割领域的开山之…

FCN全卷积网络理解及代码实现(来自pytorch官方实现)

视频链接:https://www.bilibili.com/video/BV1J3411C7zd?vd_sourcea0d4f7000e77468aec70dc618794d26f 代码:https://github.com/WZMIAOMIAO/deep-learning-for-image-processing FCN是2015年提出的首个端对端的针对像素级预测的全卷积网络。 如今的pyt…

FCN网络结构解析

daily:作为深度学习图片分割第一个学习的网络结构 Q1: 为什么要用FCN? A1:应为和以前网络R-CNN,SDS相比提升比较大 Q2:与CNN什么区别? A2:使用全卷积层代替全连接层 Q3:为什么要进行…

FCN网络详解

参考视频:FCN网络结构详解(语义分割)_哔哩哔哩_bilibili FCN是首个端对端的针对像素级预测的全卷积网络 这是作者提出的网络中的输出对比图,可以看到当FCN-8s效果接近真实分割图。 普通卷积分类网络与FCN对比 在这个模型提出之前,我们来看一下…

FCN全卷积神经网络

目录 前言 一、FCN的意义 二、先验知识 1.FCN-32S,FCN-16S,FCN-8S 2.上采样,下采样 3.大体网络结构 4.与传统网络(带全连接层的网络)区别 5.传统网络VGG网络结构 三、FCN网络结构解析 1.FCN-32S 2.FCN-16S 3.FCN-8S !!!重要&…

FCN算法详解

基于全卷积网络的语义分割 1. 摘要 卷积网络是一种强大的视觉模型,可产生特征的层次结构。卷积网络在语义分割方面的应用已超过了最先进的水平。本文关键是建立“全卷积”网络,它接受任意大小的输入,并通过有效的前向传播产生相应大小的输出。本文定义并详细描述了全卷积网…

FCN网络(Fully Convolutional Networks)

首个端到端的针对像素级预测的全卷积网络 原理:将图片进行多次卷积下采样得到chanel为21的特征层,再经过上采样得到和原图一样大的图片,最后经过softmax得到类别概率值 将全连接层全部变成卷积层:通常的图像分类网络最后几层是全…

FCN网络(Fully Convolutional Networks for Semantic Segmentation)

一.概述 FCN是深度学习应用在图像分割的代表作, 是一种端到端(end to end)的图像分割方法, 让网络做像素级别的预测直接得出label map。因为FCN网络中所有的层都是卷积层,故称为全卷积网络。 全卷积神经网络主要使用了三种技术: 卷积化(Con…

FCN的代码解读

目录 模型初始化 VGG初始化 FCN初始化 图片的预处理 图片处理 图片编码 计算相关参数 模型训练 一个小问题 完整代码 参考 最近浅研究了一下关于图像领域的图像分割的相关知识,发现水还是挺深的,因为FCN差不多也是领域的开山鼻祖,所以就先从…