【图像处理】Gabor滤波器

article/2025/9/15 18:37:43

Gabor的核函数参考的wiki


使用实数Real的公式计算核函数代码:

Mat getGaborFilter(float lambda, float theta, float sigma2,float gamma, float psi = 0.0f){if(abs(lambda-0.0f)<1e-6){lambda = 1.0f;} float sigma_x = sigma2;float sigma_y = sigma2/(gamma*gamma);int nstds = 3;float sqrt_sigma_x = sqrt(sigma_x);float sqrt_sigma_y = sqrt(sigma_y);int xmax = max(abs(nstds*sqrt_sigma_x*cos(theta)),abs(nstds*sqrt_sigma_y*sin(theta)));int ymax = max(abs(nstds*sqrt_sigma_x*sin(theta)),abs(nstds*sqrt_sigma_y*cos(theta)));int half_filter_size = xmax>ymax ? xmax:ymax;int filter_size = 2*half_filter_size+1;Mat gaber = Mat::zeros(filter_size,filter_size,CV_32F);for(int i=0;i<filter_size;i++){float* f = gaber.ptr<float>(i);for(int j=0;j<filter_size;j++){int x = j-half_filter_size;int y = i-half_filter_size;float x_theta=x*cos(theta)+y*sin(theta);float y_theta=-x*sin(theta)+y*cos(theta);f[x] = exp(-.5*(x_theta*x_theta/sigma_x+y_theta*y_theta/sigma_y));f[x] = f[x]*cos(2*PI*x_theta/lambda+psi);};}return gaber;
}

使用得到的Gabor核对一副图像进行卷积的函数:

Mat gaborFilter(Mat& img, Mat& filter){int half_filter_size = (max(filter.rows,filter.cols)-1)/2;Mat filtered_img(img.rows,img.cols,CV_32F);for(int i=0;i<img.rows;i++){uchar* img_p = img.ptr<uchar>(i);float* img_f = filtered_img.ptr<float>(i);for(int j=0;j<img.cols;j++){float filter_value = 0.0f;for(int fi=0;fi<filter.rows;fi++){float* f = filter.ptr<float>(fi);int img_i = i+fi-half_filter_size;img_i = img_i < 0 ? 0 : img_i;img_i = img_i >= img.rows ? (img.rows-1) : img_i;uchar* p = img.ptr<uchar>(img_i);for(int fj=0;fj<filter.cols;fj++){int img_j = j+fj-half_filter_size;img_j = img_j < 0 ? 0 : img_j;img_j = (img_j >= img.cols) ? (img.cols-1) : img_j;float tmp = (float)p[img_j]*f[fj];filter_value += tmp;}}img_f[j] = filter_value;}}return filtered_img;
}

对一幅图使用如下核卷积:

Mat gaber = getGaborFilter(0.3,0,4,2);
效果如下:


Gabor算子卷积之后得到很多负值(不知道有没有问题),后面的图是归一化之后显示出来的。

Mat normalizeFilterShow(Mat gaber){Mat gaber_show = Mat::zeros(gaber.rows,gaber.cols,CV_8UC1);float gaber_max = FLT_MIN;float gaber_min = FLT_MAX;for(int i=0;i<gaber.rows;i++){float* f = gaber.ptr<float>(i);for(int j=0;j<gaber.cols;j++){if(f[j]>gaber_max){gaber_max = f[j];}if(f[j]<gaber_min){gaber_min = f[j];}}}float gaber_max_min = gaber_max-gaber_min;for(int i=0;i<gaber_show.rows;i++){uchar* p = gaber_show.ptr<uchar>(i);float* f = gaber.ptr<float>(i);for(int j=0;j<gaber_show.cols;j++){if(gaber_max_min!=0.0f){float tmp = (f[j]-gaber_min)*255.0f/gaber_max_min;p[j] = (uchar)tmp;}else{p[j] = 255;}}}return gaber_show;
}

(转载请注明作者和出处:http://blog.csdn.net/xiaowei_cqu 未经允许请勿用于商业用途)




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

相关文章

生物特征识别中的Gabor滤波器

Daugman&#xff08;1980&#xff09;提出的2D Gabor滤波器&#xff08;以下简称Gabor滤波器&#xff09;&#xff0c;在纹理分类、纹理分割、生物特征识别中取得了广泛的应用。本文首先简要介绍Gabor滤波器&#xff0c;然后列举它在生物特征识别方面的代表性应用。 2D Gabor滤…

matlab的gabor类解读

为什么要进行解析&#xff0c;因为自带的gabor函数有个小坑&#xff0c; 转opencv的时候&#xff0c;因为没有完全理解自带的gabor源码被小小的坑了一下&#xff0c; 所以做一下记录&#xff0c; 以方便后人。‘ 版本是2016B 文章目录 Matlab gabor函数解析1 gabor基本公式2 m…

Gabor滤波 + 多尺度问题

Gabor函数 Gabor变换属于加窗傅立叶变换&#xff0c;Gabor函数可以在频域不同尺度、不同方向上提取相关的特征。另外Gabor函数与人眼的生物作用相仿&#xff0c;所以经常用作纹理识别上&#xff0c;并取得了较好的效果。二维Gabor函数可以表示为&#xff1a; 其中&#xff1a;…

Gabor算法

在数字图像处理领域&#xff0c;Gabor滤波器是以Dennis Gabor命名的&#xff0c;Gabor滤波器是用作边缘检测的线性滤波器。Gabor滤波器的频率和方向的表达与人类的视觉系统很相似。研究发现&#xff0c;Gabor滤波器非常适合纹理表达和分离。在空间域中&#xff0c;一个二维Gabo…

Log-Gabor滤波器

Log-Gabor滤波器 G ( f ) e l n 2 ( ω / ω 0 ) 2 l n 2 ( k / ω 0 ) G(f)e^{\frac {ln^2({\omega /\omega_0})}{2{ln}^2(k/\omega_0)}} G(f)e2ln2(k/ω0​)ln2(ω/ω0​)​ 式中&#xff1a; ω 0 \omega_0 ω0​为滤波器中心频率&#xff0c;通常将 k / ω 0 k/\omega_0 k…

Gabor滤波器原理

一、什么是Gabor函数&#xff08;以下内容含部分翻译自维基百科&#xff09; 在图像处理中&#xff0c;Gabor函数是一个用于边缘提取的线性滤波器。Gabor滤波器的频率和方向表达同人类视觉系统类似。研究发现&#xff0c;Gabor滤波器十分适合纹理表达和分离。在空间域中&#x…

Gabor的OpenCV代码

唯一持续维护地址&#xff1a;http://52coding.com/opencv-gabor 最近弄人脸识别&#xff0c;用到Gabor卷积核&#xff0c;但网上的代码似乎没有和我心意的&#xff0c;于是参考了自己写了下&#xff01;参考了Zhou Mian以及matlab的Gabor实现代码的代码。虽然OpenCV的imporc下…

2021-08-07 Gabor滤波器简介以及简单应用

Gabor滤波器&#xff08;Gabor Filter&#xff09; 文章目录 Gabor滤波器&#xff08;Gabor Filter&#xff09;简介Gabor滤波器的不同参数Gabor滤波器的简单应用&#xff08;python&#xff09; 简介 Gabor滤波器是一种线性滤波器&#xff0c;用于边缘检测、纹理分析、特征提…

Gabor Filters

Gabor Filters: Manjunath, B. S., & Ma, W. Y. (1996). Texture features for browsing and retrieval of image data. IEEE Transactions on Pattern Analysis and Machine Intelligence, 18(8), 837-842. Gabor滤波器是一种基于Gabor函数的特定频率和方向选择性滤波器。…

基于Gabor滤波器的人脸特征提取

Gabor小波变换的核函数&#xff0c;其最大的特点是其与人脑的皮层神经细胞的二维反射区具有相似的特征。基于Gabor小波变换的特征信息能够有效提取各种细节结构信息&#xff0c;因此Gabor小波变换在图像识别领域有着较为广泛的应用。根据Gabor小波变换的特点&#xff0c;基于Ga…

Gabor特征提取

Gabor小波与人类视觉系统中简单细胞的视觉刺激响应非常相似。它在提取目标的局部空间和频率域信息方面具有良好的特性。虽然Gabor小波本身并不能构成正交基&#xff0c;但在特定参数下可构成紧框架。Gabor小波对于图像的边缘敏感&#xff0c;能够提供良好的方向选择和尺度选择特…

Gabor 卷积神经网络

与不涉及学习过程的 hand-crafted 滤波器不同&#xff0c;DCNNs-based feature extraction 是一种 data-driven 技术&#xff0c;可以直接从数据中学习具有鲁棒性的特征表示。然而&#xff0c;它有非常大的训练成本和复杂的模型参数。 DCNNs 有限的几何变换建模能力主要来自于…

如何理解Gabor滤波器

转载自如何理解Gabor滤波器 介绍 我们已经知道&#xff0c;傅里叶变换是一种信号处理中的有力工具&#xff0c;可以帮助我们将图像从空域转换到频域&#xff0c;并提取到空域上不易提取的特征。但是经过傅里叶变换后&#xff0c;图像在不同位置的频度特征往往混合在一起&…

基于python的图像Gabor变换及特征提取

基于python的图像Gabor变换及特征提取 1.前言2. “Gabor帮主”简介3.“Gabor帮主”大招之图像变换3.“Gabor帮主”大招之图像特征提取 深圳中兴网信科技有限公司&#xff1a;廖海斌 1.前言 在深度学习出来之前&#xff0c;图像识别领域北有“Gabor帮主”&#xff0c;南有“SIF…

Gabor滤波器详解

转载自如何理解Gabor滤波器 介绍 我们已经知道&#xff0c;傅里叶变换是一种信号处理中的有力工具&#xff0c;可以帮助我们将图像从空域转换到频域&#xff0c;并提取到空域上不易提取的特征。但是经过傅里叶变换后&#xff0c;图像在不同位置的频度特征往往混合在一起&…

Gabor 变换

http://blog.sina.com.cn/s/blog_48a242d601000a3j.html Gabor变换属于加窗傅立叶变换&#xff0c;Gabor函数可以在频域不同尺度、不同方向上提取相关的特征。另外Gabor函数与人眼的生物作用相仿&#xff0c;所以经常用作纹理识别上&#xff0c;并取得了较好的效果。 Gabor变换…

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

在图像处理中&#xff0c;以Dennis Gabor命名的Gabor滤波器是一种用于纹理分析的线性滤波器&#xff0c;本质上是指在分析点或分析区域周围的局部区域内&#xff0c;分析图像中是否存在特定方向的特定频率内容。Gabor滤波器的频率和方向表示被许多当代视觉科学家认为与人类视觉…

Gabor滤波器学习

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

Gabor变换

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

Gabor滤波器

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