识别matlab中的相邻像素
identify the adjacent pixels in matlab
假设 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 将不是一种有效的方法。
您可以使用 2D 卷积构建蒙版,select 根据该蒙版的值,然后将它们缩减为唯一值:
% // 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
的像素具有具有该值的相邻像素。
假设 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 将不是一种有效的方法。
您可以使用 2D 卷积构建蒙版,select 根据该蒙版的值,然后将它们缩减为唯一值:
% // 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
的像素具有具有该值的相邻像素。