实现gabor filter的滤波

图像纹理对于航空遥感图片、织物图案、复杂自然风景和动植物都适合。这里我采用遥感图片、织物图案和钢铁表面来做,并和canny图片进行一定的对比。

遥感图像

编织物

相比较canny算法(或者自适应canny)来说,gabor的确在全局的特征显示上面有所优势,特别是在明暗变化的地方显示较好。

下一步如何在图像识别拼接、图像分类处使用,需要继续研究学习。

附代码,根据开源代码做修改,欢迎指出问题和不足,来源于opencv-gabor-filter-master 。

//gaborFilterHelper 根据opencv-gabor-filter-master 修改

#include "stdafx.h"

#include <opencv2/core/core.hpp>

#include <opencv2/imgproc/imgproc.hpp>

#include <opencv2/highgui/highgui.hpp>

#include <math.h>

//定义初始系数

//创建gabor核

cv::Mat mkKernel( int ks, double sig, double th, double lm, double ps)

{

int hks = (ks-1)/2;

double theta = th*CV_PI/180;

double psi = ps*CV_PI/180;

double del = 2.0/(ks-1);

double lmbd = lm;

double sigma = sig/ks;

double x_theta;

double y_theta;

cv::Mat kernel(ks,ks, CV_32F);

for (int y=-hks; y<=hks; y++)

{

for (int x=-hks; x<=hks; x++)

{

x_theta = x*del*cos(theta)+y*del*sin(theta);

y_theta = -x*del*sin(theta)+y*del*cos(theta);

kernel.at< float >(hks+y,hks+x) = (float )exp(-0.5*(pow(x_theta,2)+pow(y_theta,2))/pow(sigma,2))* cos(2*CV_PI*x_theta/lmbd + psi);

}

}

return kernel;

}

//得到gabor图像,在我看来gabor算是一种纹理强化,类似于canny

Mat GetGabor(Mat src, double sig,double lm, double th, double ps,int kernel_size)

{

Mat dest;

Mat src_f;

if (!kernel_size%2)

{

kernel_size+=1;

}

src.convertTo(src_f, CV_32F, 1.0/255, 0);

//创建卷积核

cv::Mat kernel = mkKernel(kernel_size, sig, th, lm, ps);

//卷积

cv::filter2D(src_f, dest, CV_32F, kernel);

cv::Mat Lkernel(kernel_size*20, kernel_size*20, CV_32F);

cv::resize(Lkernel, Lkernel, Lkernel.size());

Lkernel /= 2.;

Lkernel += 0.5;

cv::Mat mag;

cv::pow(dest, 2.0, mag);

return mag;

}

//int main(int argc, char** argv)

//{

//    cv::Mat image = cv::imread("数据集/训练图片/1.jpg",1);

//    cv::imshow("Src", image);

//    cv::Mat src;

//    cv::cvtColor(image, src, CV_BGR2GRAY);

//    src.convertTo(src_f, CV_32F, 1.0/255, 0);

//    if (!kernel_size%2)

//    {

//        kernel_size+=1;

//    }

//    cv::namedWindow("Process window", 1);

//    cv::createTrackbar("Sigma", "Process window", &pos_sigma, kernel_size, Process);

//    cv::createTrackbar("Lambda", "Process window", &pos_lm, 100, Process);

//    cv::createTrackbar("Theta", "Process window", &pos_th, 180, Process);

//    cv::createTrackbar("Psi", "Process window", &pos_psi, 360, Process);

//    Process(0,0);

//    cv::waitKey(0);

//    return 0;

//}

来自为知笔记(Wiz)

时间: 2024-11-20 15:07:13

实现gabor filter的滤波的相关文章

[blog]实现gabor filter的滤波

实现gabor filter的滤波 图像纹理对于航空遥感图片.织物图案.复杂自然风景和动植物都适合.这里我采用遥感图片.织物图案和钢铁表面来做,并和canny图片进行一定的对比. 遥感图像 编织物 相比较canny算法(或者自适应canny)来说,gabor的确在全局的特征显示上面有所优势,特别是在明暗变化的地方显示较好. gabor最重要的是实现了图像的方向滤波,比如这个图,它的那个干扰线就被去掉了,非常nice 但是如何选择这样的方向,依然是问题. 来自为知笔记(Wiz)

机器视觉 之 Gabor Feature

在机器视觉中,gabor feature是一种比较常见的特征,因为其可以很好地模拟人类的视觉冲击响应而被广泛应用于图像处理, gabor feature 一般是通过对图像与gabor filter做卷积而得到,gabor filter定义为高斯函数与正弦函数的乘积,其表达式如下: g(x,y:λ,θ,ψ,σ,γ)=exp(?x′2+γ2y′22σ2)exp(i(2πx′λ+ψ)) 上面的式子可以通过三角函数展开: 实数部分: R(g(x,y:λ,θ,ψ,σ,γ))=exp(?x′2+γ2y′22

Gabor滤波器学习

转自:http://blog.csdn.net/jinshengtao/article/details/17797641 本文的目的是用C实现生成Gabor模版,并对图像卷积.并简单提一下,Gabor滤波器在纹理特征提取上的应用. 一.什么是Gabor函数(以下内容含部分翻译自维基百科) 在图像处理中,Gabor函数是一个用于边缘提取的线性滤波器.Gabor滤波器的频率和方向表达同人类视觉系统类似.研究发现,Gabor滤波器十分适合纹理表达和分离.在空间域中,一个二维Gabor滤波器是一个由正弦

Gabor滤波器与纹理特征检索

本文目录 1 Gabor函数的空频特性 2 Gabor滤波器组设计 3 纹理特征的表示 1 Gabor函数的空频特性 先介绍一下什么是Gabor函数,以非对称的Gabor函数为例: (公式1) 它的实部是这样的: (公式2) Gabor函数的实况可以看成是一个高斯函数乘一个余弦函数,可以把高斯函数看成调制信号,把余弦函数看成载波信号,这样就容易相信gabor函数的波形了,如下: 了解了gabor函数的构造,下面我们从傅里叶变换的性质出发,了解一下gabor函数的滤波特性. (1)频移特性 我们知

matlab实现gabor滤波器的几种方式

转自:http://blog.csdn.net/watkinsong/article/details/7882443 方式一: [csharp] view plaincopy function result = gaborKernel2d( lambda, theta, phi, gamma, bandwidth) % GABORKERNEL2D % Version: 2012/8/17 by watkins.song % Version: 1.0 %   Fills a (2N+1)*(2N+

81.视频图像去噪滤波算法的相关介绍

一.为什么要去噪 图像去噪是数字图像处理中的重要环节和步骤.去噪效果的好坏直接影响到后续的图像处理工作如图像分割.边缘检测等.图像信号在产生.传输过程中都可能会受到噪声的污染,一般数字图像系统中的常见噪声主要有:高斯噪声(主要由阻性元器件内部产生).椒盐噪声(主要是图像切割引起的黑图像上的白点噪声或光电转换过程中产生的泊松噪声)等:所以前端的滤波没做好的话,会给后端的图像处理带来很多的麻烦,其实它最终的反应是图像在显示器上给人的视觉效果,我们要针对不同的应用达到最大优化. 二.怎么去噪 纵观网上

【转】Gabor 入门

Computer Vision Tutorials Search Primary Menu Skip to content Tutorials Search for: Gabor Filters : A Practical Overview April 27, 2014 krishnamurthyj 5 Comments In this tutorial, we shall discuss Gabor filters, a classic technique, from a practical

图像处理与计算机视觉基础,经典以及最近发展

*************************************************************************************************************** 在这里,我特别声明:本文章的源作者是   杨晓冬  (个人邮箱:[email protected]).原文的链接是 http://www.iask.sina.com.cn/u/2252291285/ish.版权归 杨晓冬 朋友所有. 我非常感谢原作者辛勤地编写本文章,并愿意共

图像处理与计算机视觉基础,经典以及最近发展--转载

*************************************************************************************************************** 在这里,我特别声明:本文章的源作者是   杨晓冬  (个人邮箱:[email protected]).原文的链接是http://www.iask.sina.com.cn/u/2252291285/ish.版权归 杨晓冬 朋友所有. 我非常感谢原作者辛勤地编写本文章,并愿意共享