【图像处理】gabor提取织物表面特征值进行织物瑕疵识别和处理

一、原理简介

D.Gabor 1946年提出

窗口Fourier变换,为了由信号的Fourier变换提取局部信息,引入了时间局部化的窗函数。

由于窗口Fourier变换只依赖于部分时间的信号,所以,现在窗口Fourier变换又称为短时Fourier变换,这个变换又称为Gabor变换。

1) Gabor优点

Gabor小波与人类视觉系统中简单细胞的视觉刺激响应非常相似。它在提取目标的局部空间和频率域信息方面具有良好的特性。虽然Gabor小波本身并不能构成正交基,但在特定参数下可构成紧框架。Gabor小波对于图像的边缘敏感,能够提供良好的方向选择和尺度选择特性,而且对于光照变化不敏感,能够提供对光照变化良好的适应性。上述特点使Gabor小波被广泛应用于视觉信息理解。

Gabor滤波器和脊椎动物视觉皮层感受野响应的比较:第一行代表脊椎动物的视觉皮层感受野,第二行是Gabor滤波器,第三行是两者的残差。可见两者相差极小。Gabor滤波器的这一性质,使得其在视觉领域中经常被用来作图像的预处理。

【图像处理】gabor提取织物表面特征值进行织物瑕疵识别和处理

2) Gabor定义

① 具体窗函数――Gaussaion的 Gabor变换定义式

Gabor变换的基本思想:把信号划分成许多小的时间间隔,用傅里叶变换分析每一个时间间隔,以便确定信号在该时间间隔存在的频率。其处理方法是对f(t)加一个滑动窗,再作傅里叶变换。

② 窗口的宽高关系

经理论推导可以得出:高斯窗函数条件下的窗口宽度与高度,且积为一固定值。

3) 离散Gabor变换的一般求法

① 首先选取核函数

可根据实际需要选取适当的核函数。如,如高斯窗函数;

② 离散Gabor变换的表达式

4) Gabor变换的解析理论

对偶函数可以使计算更为简洁方便。

5) 适用条件

① 临界采样Gabor展开要求条件:TΩ=2π;

② 过采样展开要求条件:TΩ≤2π;

当TΩ>2π时,欠采样Gabor展开,已证明会导致数值上的不稳定。

6) 应用

① 暂态信号检测

如果对信号波形有一定的先验知识且可以据此选取合适的基函数,可以用Gabor变换对信号作精确的检测统计计量。

② 图象分析与压缩

二维Gabor变换可以应用到图象分析与压缩中。

3. 二维Gabor滤波器

用Gabor 函数形成的二维Gabor 滤波器具有在空间域和频率域同时取得最优局部化的特性,因此能够很好地描述对应于空间频率(尺度)、空间位置及方向选择性的局部结构信息。

Gabor滤波器的频率和方向表示接近人类视觉系统对于频率和方向的表示,并且它们常备用于纹理表示和描述。

在图像处理领域,Gabor滤波器是一个用于边缘检测的线性滤波器。

在空域,一个2维的Gabor滤波器是一个正弦平面波和高斯核函数的乘积。

Gabor滤波器是自相似的,也就是说,所有Gabor滤波器都可以从一个母小波经过膨胀和旋转产生。

实际应用中,Gabor滤波器可以在频域的不同尺度,不同方向上提取相关特征。

 【图像处理】gabor提取织物表面特征值进行织物瑕疵识别和处理

【图像处理】gabor提取织物表面特征值进行织物瑕疵识别和处理

Gabor滤波器的傅里叶变换:峰值响应在复正弦的空域频率(u0,v0):

【图像处理】gabor提取织物表面特征值进行织物瑕疵识别和处理

Gabor滤波器示意图,3种角度5种方向:

【图像处理】gabor提取织物表面特征值进行织物瑕疵识别和处理

 

二、代码

clc;       RGB = imread('normalpic.jpg');L=rgb2gray(RGB);% figure,imshow(L)[G,gabout1] = gaborfilter2(L,11,11,0.25,1*pi/3);%对图像进行gabor滤波 % figure,imshow(uint8(gabout1))h = fspecial('gaussian',[3,3],11)I2=imfilter(gabout1,h);  %figure,imshow(uint8(I2))f_max=(3/4)*max(I2(:));f_min=(1/8)*min(I2(:));M = imread('hole.jpg');R=rgb2gray(M);subplot(2,3,1)imshow(R);title('待检图像')[G,gabout] = gaborfilter2(R,11,11,0.25,1*pi/3);%对图像进行gabor滤波subplot(2,3,3)imshow(uint8(gabout));title('Gabor滤波图像');g = fspecial('gaussian',[3,3],11)I3=uint8(imfilter(gabout,g));subplot(2,3,5)imshow(I3);title('高斯平滑图像');[a,b] = size(I3);for i = 1:a;    for j = 1:b;        if I3(i,j)<f_max & I3(i,j)>f_min            I3(i,j) = 0;        else            I3(i,j) = 255;        end    endendB=[0 1 0;1 1 1;0 1 1];I4=imdilate(I3,B);C=[0 1 0;1 1 1;0 1 1];I5=imdilate(I4,C);  se = strel('ball',7,5);I6 = imerode(I5,se);subplot(2,3,6)imshow(I6);title('最终结果');subplot(2,3,2)imhist(R);title('原图直方图');subplot(2,3,4)imhist(uint8(gabout));title('Gabor滤波直方图');%subplot(2,2,3)%imhist(I3);title('高斯平滑直方图');%subplot(2,2,4)%imhist(I5);title('结果直方图');

三、结果展示

【图像处理】gabor提取织物表面特征值进行织物瑕疵识别和处理

 

上一篇:AxesSubplot‘ object is not callable


下一篇:【语音编辑】基于matlab语音编辑【含Matlab源码 539期】