我正在使用超像素进行特征提取。我已成功将超像素功能应用于图像。
A = imread('kobi.png');
[L,N] = superpixels(A,5);
figure
BW = boundarymask(L);
figure;imshow(imoverlay(A,BW,'cyan'),'InitialMagnification',67)
现在我想从每个片段(即Gabor特征)中提取纹理特征。 有人请帮我解释如何在每个超像素上应用Gabor功能?
更新
idx=label2idx(L);
meanColor = zeros(N,3);
[m,n] = size(L);
for i = 1:N
meanColor(i,1) = mean(A(idx{i}));
meanColor(i,2) = mean(A(idx{i}+m*n));
meanColor(i,3) = mean(A(idx{i}+2*m*n));
end
numColors = 6;
[pidx,cmap] = kmeans(meanColor,numColors,'replicates',2);
cmap = lab2rgb(cmap);
Lout = zeros(size(A,1),size(A,2));
for i = 1:N
Lout(idx{i}) = pidx(i);
end
imshow(label2rgb(Lout))
分别设置变量
答案 0 :(得分:1)
试试这个。我希望这将解决你提取每个像素的问题。 我希望有人能解释一下Gabor的功能。
for i=1:size(Lout,1)
for j=1:size(Lout,2)
if (Lout (i,j) == 4)
Patch(i,j)=A(i,j);
end
end
end
mask = Patch > 0;
mask = bwareafilt(mask, 1);
% Invert mask and get bounding box.
props = regionprops(mask, 'BoundingBox');
% Crop image.
croppedImage = imcrop(Patch, props.BoundingBox);
figure;imshow(croppedImage)
答案 1 :(得分:1)
在MATLAB tutorial about Gabor features之后,我可以将一个Gabor过滤器库应用于' kobi'图像:
wavelengthMin = 4/sqrt(2);
wavelength = 2.^(0:4) * wavelengthMin;
deltaTheta = 45;
orientation = 0:deltaTheta:(180-deltaTheta);
g = gabor(wavelength,orientation);
A = imread('kobi.png');
Agray = rgb2gray(A);
gabormag = imgaborfilt(Agray,g);
在这种情况下, g
包含20个过滤内核(请参阅documentation to gabor
)。 imgaborfilt
将每个内核(通过卷积)应用于图像Agray
,这是' kobi'的灰度值版本。图片。 gabormag
现在是一个3D图像,有20个平面,每个平面都是其中一个Gabor滤波器输出的大小。
Gabor滤波器响应有时被视为每个像素的特征。在MATLAB教程中,他们应用局部平均,这意味着对于每个像素,Gabor特征是小邻域内滤波器响应的平均值。为了与超像素一起使用,在每个超像素内平均滤波器响应是有意义的。让我们重复你的代码,先得到超像素:
[L,N] = superpixels(A,500);
L
是标记图像:每个像素具有与超像素的ID对应的值。这些标签从1开始并且是连续的。
使用regionprops
我们可以计算每个标记区域内的平均强度:
K = size(gabormag,3);
gaborfeatures = zeros(N,K);
for ii=1:K
res = regionprops(L,gabormag(:,:,ii),'MeanIntensity');
gaborfeatures(:,ii) = [res.MeanIntensity]';
end
(您也可以使用label2idx
并像编辑问题一样迭代其输出数组。)
gaborfeatures
现在每个超像素包含一行,每个Gabor功能包含一列。例如,gaborfeatures(294,:)
是超像素L==294
的Gabor功能,它位于狗的鼻子上:
>> gaborfeatures(294,:)
ans =
1.0e+04 *
Columns 1 through 9
0.0008 0.0040 0.0171 0.0848 1.0617 0.0009 0.0040 0.0193 0.1304
Columns 10 through 18
0.7753 0.0008 0.0040 0.0165 0.0872 1.0672 0.0010 0.0046 0.0208
Columns 19 through 20
0.0842 0.6736