图像处理gabor提取织物表面特征值进行织物瑕疵识别和处理
Posted 博主QQ2449341593
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图像处理gabor提取织物表面特征值进行织物瑕疵识别和处理相关的知识,希望对你有一定的参考价值。
一、原理简介
D.Gabor 1946年提出
窗口Fourier变换,为了由信号的Fourier变换提取局部信息,引入了时间局部化的窗函数。
由于窗口Fourier变换只依赖于部分时间的信号,所以,现在窗口Fourier变换又称为短时Fourier变换,这个变换又称为Gabor变换。
1) 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滤波器的傅里叶变换:峰值响应在复正弦的空域频率(u0,v0):
Gabor滤波器示意图,3种角度5种方向:
二、代码
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
end
end
B=[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提取织物表面特征值进行织物瑕疵识别和处理的主要内容,如果未能解决你的问题,请参考以下文章
图像处理基于遗传算法优化Gabor滤波器提取织物表面特征值进行织物瑕疵识别和处理matlab源码