主要内容

使用Gabor过滤器进行纹理分割

这个例子展示了如何使用纹理分割来识别基于纹理的区域。我们的目标是将狗从浴室地板上分离出来。由于浴室地板有规律的、周期性的图案和狗毛有规律的、光滑的纹理之间的纹理差异,分割在视觉上是明显的。

实验结果表明,Gabor滤光片是哺乳动物视觉系统中简单细胞的合理模型。正因为如此,Gabor滤波器被认为是人类如何区分纹理的一个很好的模型,因此在设计识别纹理的算法时是一个有用的模型。这个例子使用(A. K. Jain和F. Farrokhnia,“使用Gabor过滤器的无监督纹理分割”,1991)中描述的基本方法来执行纹理分割。

读取和显示输入图像

读取并显示输入图像。这个示例缩小了映像以使示例运行得更快。

一个= imread (“kobi.png”);= imresize (0.25);银色= rgb2gray(一个);图imshow(一个)

图中包含一个axes对象。坐标轴对象包含一个image类型的对象。

Gabor滤波器阵列的设计

设计一组可调谐到不同频率和方向的Gabor滤波器。频率和方向的集合被设计用来定位输入图像中不同的、大致正交的频率和方向信息子集。在[0,150]度之间以30度的步进定期采样方向。从4/√(2)到输入图像的斜边长度递增的2次幂的采样波长。这些频率和方向的组合来自[Jain,1991]在介绍中引用。

图象尺寸=大小(A);numRows =图象尺寸(1);numCols =图象尺寸(2);wavelengthMin = 4 /√(2);wavelengthMax =函数(numRows numCols);n =地板(log2 (wavelengthMax / wavelengthMin));波长= 2.^(0:(n-2)) *波长min;deltaTheta = 45;取向= 0:deltaTheta: (180 - deltaTheta);g =伽柏(波长、取向);

从源图像中提取Gabor幅度特征。在使用Gabor滤波器时,通常要处理每个滤波器的幅值响应。Gabor量级反应有时也被称为“Gabor能量”。每个MxN Gabor星等输出图像gabormag(:,:,印第安纳州)对应的Gabor滤波器的输出是多少g(印第安纳州)

gabormag = imgaborfilt(银色、g);

将Gabor星等图像后处理为Gabor特征。

为了使用Gabor量级响应作为分类中使用的特征,需要进行一些后处理。这种后处理包括高斯平滑,添加额外的空间信息到特征集,重塑我们的特征集到期望的形式主成分分析而且kmeans函数,并将特征信息归一化为一个共同的方差和平均值。

每个Gabor星等图像都包含一些局部变化,即使是在固定纹理的分割良好的区域。这些局部变化会影响分割。我们可以用简单的高斯低通滤波来补偿这些变化,以平滑Gabor幅度信息。我们选择与提取每个特征的Gabor滤波器相匹配的sigma。我们引入平滑项K,它控制对Gabor量级响应进行多少平滑。

i = 1:长度(g) sigma = 0.5*g(i).波长;K = 3;gabormag(:,:我)= imgaussfilt (gabormag(:,:我),K *σ);结束

在构建Gabor特征集进行分类时,在X和y中添加空间位置信息的映射是很有用的。这些额外的信息使分类器能够选择空间上接近的分组。

X = 1: numCols;Y = 1: numRows;(X, Y) = meshgrid (X, Y);featureSet =猫(3 gabormag X);featureSet =猫(3 featureSet Y);

将数据重塑为矩阵X所期望的形式kmeans函数。图像网格中的每个像素都是一个单独的数据点,每个平面都是一个变量featureSet是一个单独的功能。在本例中,Gabor滤波器组中的每个滤波器都有一个单独的特征,加上来自上一步中添加的空间信息的两个附加特征。输入图像的每个像素共有24个Gabor特征和2个空间特征。

numPoints = numRows * numCols;X =重塑(featureSet numRows * numCols, []);

将特征归一化为零均值,单位方差。

X = bsxfun(@minus, X, mean(X));X = bsxfun (@rdivide X,性病(X));

可视化功能集。为了了解Gabor幅度特征是什么样子,可以使用主成分分析从输入图像中每个像素的26维表示移动到每个像素的1维强度值。

多项式系数= pca (X);feature2DImage =重塑(X *多项式系数(:1),numRows, numCols);图imshow (feature2DImage, [])

图中包含一个axes对象。坐标轴对象包含一个image类型的对象。

很明显,在这个可视化中,Gabor特征信息中有足够的方差来获得对该图像的良好分割。与地板相比,狗的颜色非常深,因为狗和地板之间的纹理差异。

用kmeans对Gabor纹理特征进行分类

在搜索最小化目标函数的均值时,重复k-均值聚类5次,以避免局部极小。本例中假设的唯一先验信息是在被分割的图像中存在多少不同的纹理区域。在这种情况下有两个不同的区域。这部分示例需要统计和机器学习工具箱™。

L = kmeans (X 2“复制”5);

可视化分割使用label2rgb

L = L (L,[numRows numCols]);图imshow (label2rgb (L))

图中包含一个axes对象。坐标轴对象包含一个image类型的对象。

可视化分割图像使用imshowpair。检查由与标签矩阵L相关的掩码BW产生的前景和背景图像。

Aseg1 = 0(大小(A),“喜欢”,);Aseg2 = 0(大小(A),“喜欢”,);Bw = l == 2;BW = repmat(BW,[1 1 3]);Aseg1 (BW) = (BW);Aseg2 (~ BW) = (~ BW);图imshowpair (Aseg1 Aseg2,“蒙太奇”);

图中包含一个axes对象。坐标轴对象包含一个image类型的对象。

参考文献

[1]贾恩,阿尼尔·K,法尔希德·法罗克尼亚。使用Gabor过滤器的无监督纹理分割。模式识别24日,没有。12(1991年1月):1167-86。https://doi.org/10.1016/0031 - 3203 (91) 90143 - s。

另请参阅

|

Baidu
map