Gabor变化属于加窗傅里叶变换,Gabor函数可以在频域不同尺度、不同方向上提取相关的特征。Gabor函数与人眼的生物作用相仿,所以经常用于纹理识别上,并取得了较好的效果。

二维Gobor滤波函数:

其中:

xp = x*cos(theta)+y*sin(theta)

yp=y*cos(theta)-x*sin(theta)

function [ G,gabout ] = gaborfilter(I,Sx,Sy,f,theta)
% gaborfilter定义,I为输入图像,Sx、Sy是变量在x,y轴变化的范围,即选定的gabor小波窗口的大小
% f为正弦函数的频率,theta为gabor滤波器的方向。G为gabor滤波函数g(x,y),gabout为gabor滤波后的图像
if isa(I,'double')~=1
I = double(I);
end
for x = -fix(Sx):fix(Sx)
for y=-fix(Sy):fix(Sy)
xp = x * cos(theta) + y * sin(theta);
yp = y * cos(theta) - x*sin(theta);
G(fix(Sx)+x+1,fix(Sy)+y+1) = exp(-.5*((xp/Sx)^2+(yp/Sy)^2))*cos(2*pi*f*xp);
end
end
Imgabout = conv2(I,double(imag(G)),'same');
Regabout = conv2(I,double(real(G)),'same');
gabout = sqrt(Imgabout.*Imgabout+Regabout.*Regabout); %gabor小波变换后的图像gabout
end

close all;clear all;clc;
I = imread('wenli.jpg');
I=rgb2gray(I);
[G,gabout]=gaborfilter(I,2,4,16,pi/10); %调用garborfilter()函数对图像做小波变换
J = fft2(gabout); %对滤波后的图像做fft变换(快速傅里叶),变换到频域
A = double(J);
[m,n] = size(A);
B = A;
C = zeros(m,n);
for i=1:m-1
for j=1:n-1
B(i,j) = A(i+1,j+1);
C(i,j) = abs(round(A(i,j)-B(i,j)));
end
end
h = imhist(mat2gray(C))/(m*n);
mean = 0;con=0;ent=0;
for i=1:256 %图像的均值,对比度和熵
mean = mean+(i*h(i))/256;
con = con+i*i*h(i);
if(h(i)>0)
ent = ent-h(i)*log2(h(i));
end
end
figure;
subplot(121);imshow(I);
subplot(122);imshow(uint8(gabout));
mean,con,ent

​左图为原图,右图为gabor pi/10 方向上处理纹理图像
​左图为原图,右图为gabor pi/4 方向上处理纹理图像
  mean(平均值) Con(对比度) Ent(熵)
theta=pi/10 0.0043 1.6111 0.4046
theta=pi/4 0.0042 1.5869 0.3623

熵反映了图像的能量,当滤波器的方向和图像纹理方向越吻合,输出图像的能量越大。这证明了Gabor函数可以捕捉到相当多的纹理信息,具有极佳的空间特征。

利用Gabor变换法分析纹理图像 matlab代码实现的更多相关文章

  1. 熵权法原理及matlab代码实现

    参考原理博客地址https://blog.csdn.net/u013713294/article/details/53407087 一.基本原理 在信息论中,熵是对不确定性的一种度量.信息量越大,不确 ...

  2. 利用Python进行异常值分析实例代码

    利用Python进行异常值分析实例代码 异常值是指样本中的个别值,也称为离群点,其数值明显偏离其余的观测值.常用检测方法3σ原则和箱型图.其中,3σ原则只适用服从正态分布的数据.在3σ原则下,异常值被 ...

  3. dennis gabor 从傅里叶(Fourier)变换到伽柏(Gabor)变换再到小波(Wavelet)变换(转载)

    dennis gabor 题目:从傅里叶(Fourier)变换到伽柏(Gabor)变换再到小波(Wavelet)变换 本文是边学习边总结和摘抄各参考文献内容而成的,是一篇综述性入门文档,重点在于梳理傅 ...

  4. SVM实例及Matlab代码

    ******************************************************** ***数据集下载地址 :http://pan.baidu.com/s/1geb8CQf ...

  5. Gabor变换、Gabor滤波器

    D.Gabor 1946年提出 窗口Fourier变换,为了由信号的Fourier变换提取局部信息,引入了时间局部化的窗函数. 由于窗口Fourier变换只依赖于部分时间的信号,所以,现在窗口Four ...

  6. 【转载】让你的MATLAB代码飞起来

    原文地址:http://developer.51cto.com/art/201104/255128_all.htm MATLAB语言是一种被称为是"演算纸"式的语言,因此追求的是方 ...

  7. 如何加速MATLAB代码运行

    学习笔记 V1.0 2015/4/17 如何加速MATLAB代码运行 概述 本文源于LDPCC的MATLAB代码,即<CCSDS标准的LDPC编译码仿真>.由于代码的问题,在信息位长度很长 ...

  8. 手机自动化测试:Appium源码分析之跟踪代码分析九

    手机自动化测试:Appium源码分析之跟踪代码分析九   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家 ...

  9. 转:【Java并发编程】之十六:深入Java内存模型——happen-before规则及其对DCL的分析(含代码)

    转载请注明出处:http://blog.csdn.net/ns_code/article/details/17348313 happen-before规则介绍 Java语言中有一个"先行发生 ...

随机推荐

  1. 堆排序Heap_Sort

    堆排序就是借助二叉堆进行排序,不了解二叉堆的可以先看这里.本文以升序排序为例,首先将待排序数组放置在最小堆中,此时堆顶一定是数组中最小的元素,然后删除堆顶元素,此时调整后的最小堆顶会是第二小的元素,从 ...

  2. 更改ejs模板引擎的后缀为html

    安装 EJS 在项目目录右键->Open Command Prompt Here 输入 npm install ejs 打开app.js //app.set('view engine', 'ja ...

  3. Git 的核心概念

    本文不是Git使用教学篇,而是偏向理论方面,旨在更加深刻的理解Git,这样才能更好的使用它,让工具成为我们得力的助手. 版本控制系统 Git 是目前世界上最优秀的分布式版本控制系统.版本控制系统是能够 ...

  4. SIGAI深度学习第八集 卷积神经网络2

    讲授Lenet.Alexnet.VGGNet.GoogLeNet等经典的卷积神经网络.Inception模块.小尺度卷积核.1x1卷积核.使用反卷积实现卷积层可视化等. 大纲: LeNet网络 Ale ...

  5. 001_linux驱动之_驱动的加载和卸载

    (一)驱动的安装: 1. 可以将驱动程序静态编译进内内核中 2. 也可以将它作为模块在使用的时候再加载 注:在配置内核时候,如果某个配置被设置为m,就表示它将会被编译成模块   (二)加载和卸载驱动使 ...

  6. MVC、MVP、MVVM概念解析

    详细请看阮一峰网站 1.MVC Model(数据) - View(视图) - Controller(业务逻辑) 通信方式:单向 交互方式两种,如下 应用:(BackBone)不完全和设计模式一致 2. ...

  7. Chrome浏览器设置自动启用Flash插件

    Chrome浏览器设置自动启用Flash插件   1.打开Chrome浏览器,输入chrome://flags/#run-all-flash-in-allow-mode,打开,找到Enable Eph ...

  8. Oracle 三种连接方式 NESTED LOOP HASH JOIN SORT MERGE JOIN

    NESTED LOOP: 对于被连接的数据子集较小的情况,嵌套循环连接是个较好的选择.在嵌套循环中,内表被外表驱动,外表返回的每一行都要在内表中检索找到与它匹配的行,因此整个查询返回的结果集不能太大( ...

  9. leetcode解题报告(5):Longest Consecutive Sequence

    描述 Given an unsorted array of integers, find the length of the longest consecutive elements sequence ...

  10. Harmonious Graph

    D. Harmonious Graph 好后悔在写这个题之前浪费了几分钟时间,不然我就写出来了.... 因为他就是连通块之间的合并问题,所以就用并查集就好了 复杂度好像也只是线性的吧... 然后就A了 ...