matlab - 每个超像素上的 Gabor 滤波器
问题描述
我正在研究超像素以进行特征提取。我已经成功地将超像素功能应用于图像。
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))
解决方案
尝试这个。我希望这将解决您提取每个像素的问题。我希望有人能解释一下 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)
推荐阅读
- reactjs - 我们可以为 Node(后端)和 React(前端)使用单个 Package.json 文件并且可以通过单个脚本命令运行吗
- c++ - 递增 int 值时出现左值错误
- java - glGetTexImage 返回 0
- jquery - jquery 序列化忽略 type="number" 字段
- mysql - MySQL多重PK
- php - PHP MySQLi - 按案例排序不正常工作
- html - 如何在 HTML 文件中显示 Three.js 智能感知
- c++ - 将 TCHAR 与 char 数组连接起来?
- java - Java中的渲染函数
- ruby-on-rails - Rails - 仅使用更新方法?