我需要在matlab中将像素分配给它们的局部最大值。我可以使用imregional max或其他衍生物(例如extrema2)在matlab中轻松找到局部最大值。但是,我还想根据这些局部最大值对像素进行聚类。
例如,如果我有一个峰值,那么我也想知道这个峰值周围的像素是否连接到最大值。我无法想到任何有效的方法,我们将非常感谢任何帮助或建议。
谢谢
答案 0 :(得分:3)
基本上你可以将问题限制为"像素属于先前的局部最大值还是下一个?"然后看看像素的衍生物(渐变):如果是负数,它属于前一个,如果是正数则属于下一个:)
以下图片
包含最大值Max1=[17,59]
和Max2=[83,59]
和我提到的维度X的想法:
Pixel=[randi(100),randi(100)];
[XG,YG]=imgradientxy(Image);
Maxima=[Max1;Max2];
ii=1;
while Pixel(1)>Maxima(ii,1);
ii=ii+1;
end
if XG(Pixel)>0
LocalMax=Maxima(ii,:);
else
LocalMax=Maxima(ii-1,:);
end
imshow(Image);hold on
plot(Pixel(1),Pixel(2),'r.');
plot(LocalMax(1),LocalMax(2),'gx');
会(有时)给你这样的结果:
它只是我的想法的草图,不是任何人都很健壮,可能还有几个错误,所以不要复制粘贴它。您仍然需要为二维场景实现这一功能;)