5

让我们假设 A 是,

     1 1 1 1 1 1
     1 2 2 3 3 3
     4 4 2 2 3 3
     4 4 2 2 2 3
     4 4 4 4 3 3
     5 5 5 5 5 5

我需要识别与特定强度值相邻的所有数字。例如,强度 1、3 和 4 与强度值 2 相邻。在 Matlab 中有效的方法是什么?

我可以使用以下内容,

   glcm = graycomatrix(A)

但是如果 A 有大量的强度值,例如 10000 graycomatrix,则不是一种有效的方法。

4

1 回答 1

6

您可以使用 2D 卷积构建掩码,根据该掩码选择值,然后将它们减少为唯一值:

% // Data:
A = [ 1 1 1 1 1 1
      1 2 2 3 3 3
      4 4 2 2 3 3
      4 4 2 2 2 3
      4 4 4 4 3 3
      5 5 5 5 5 5 ];
value = 2;
adj = [0 1 0; 1 0 1; 0 1 0]; %// define adjacency. [1 1 1;1 0 1;1 1 1] to include diagonals

%// Let's go
mask = conv2(double(A==value), adj, 'same')>0; %// pixels adjacent to those equal to `value`
result = unique(A(mask));

在示例中,这会产生

result =
     1
     2
     3
     4

请注意,结果包括2因为某些具有值2的像素具有具有该值的相邻像素。

于 2015-07-20T13:45:50.180 回答