将像素分配给其本地最大matlab

时间:2014-08-13 11:17:57

标签: matlab cluster-analysis pixel

我需要在matlab中将像素分配给它们的局部最大值。我可以使用imregional max或其他衍生物(例如extrema2)在matlab中轻松找到局部最大值。但是,我还想根据这些局部最大值对像素进行聚类。

例如,如果我有一个峰值,那么我也想知道这个峰值周围的像素是否连接到最大值。我无法想到任何有效的方法,我们将非常感谢任何帮助或建议。

谢谢

1 个答案:

答案 0 :(得分:3)

基本上你可以将问题限制为"像素属于先前的局部最大值还是下一个?"然后看看像素的衍生物(渐变):如果是负数,它属于前一个,如果是正数则属于下一个:)

以下图片

enter image description here

包含最大值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');

会(有时)给你这样的结果:enter image description here

它只是我的想法的草图,不是任何人都很健壮,可能还有几个错误,所以不要复制粘贴它。您仍然需要为二维场景实现这一功能;)