识别matlab中的相邻像素

时间:2015-07-20 13:33:52

标签: matlab image-processing superpixels

让我们假设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将不是一种有效的方法。

1 个答案:

答案 0 :(得分:6)

您可以使用2D卷积构建蒙版,根据该蒙版选择值,然后将它们缩小为唯一值:

a

在示例中,这会产生

b

请注意,结果包含% // 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 的像素具有该值的相邻像素。