Algorithm Matlab中矩阵相邻元素的转换
我正在研究Brushfire算法,我需要做一个循环,它将扫描矩阵,找到相邻的0和1,并将“1”转换为“2”。假设我有一个5乘5的矩阵:Algorithm Matlab中矩阵相邻元素的转换,algorithm,matlab,matrix,Algorithm,Matlab,Matrix,我正在研究Brushfire算法,我需要做一个循环,它将扫描矩阵,找到相邻的0和1,并将“1”转换为“2”。假设我有一个5乘5的矩阵: 0 0 0 0 0 0 1 1 1 1 0 0 1 1 1 0 0 1 1 1 0 0 1 1 1 我能不能做到: 0 0 0 0 0 0 2 2 2 2 0 0 2 1 1 0 0 2 1 1 0 0 2
0 0 0 0 0
0 1 1 1 1
0 0 1 1 1
0 0 1 1 1
0 0 1 1 1
我能不能做到:
0 0 0 0 0
0 2 2 2 2
0 0 2 1 1
0 0 2 1 1
0 0 2 1 1
谢谢使用图像处理工具箱,算法将是:
A = [0 0 0 0 0
0 1 1 1 1
0 0 1 1 1
0 0 1 1 1
0 0 1 1 1];
B = A;
%# set pixels at border between 0 and 1 to 2
B(imdilate(~A,true(3)) & A>0) = 2;
使用图像处理工具箱,算法将是:
A = [0 0 0 0 0
0 1 1 1 1
0 0 1 1 1
0 0 1 1 1
0 0 1 1 1];
B = A;
%# set pixels at border between 0 and 1 to 2
B(imdilate(~A,true(3)) & A>0) = 2;
使用图像处理工具箱,算法将是:
A = [0 0 0 0 0
0 1 1 1 1
0 0 1 1 1
0 0 1 1 1
0 0 1 1 1];
B = A;
%# set pixels at border between 0 and 1 to 2
B(imdilate(~A,true(3)) & A>0) = 2;
使用图像处理工具箱,算法将是:
A = [0 0 0 0 0
0 1 1 1 1
0 0 1 1 1
0 0 1 1 1
0 0 1 1 1];
B = A;
%# set pixels at border between 0 and 1 to 2
B(imdilate(~A,true(3)) & A>0) = 2;
您可以使用标准函数进行二维卷积。将矩阵表示为
X
mask = [0 1 0; 1 1 1; 0 1 0]; %// or [1 1 1; 1 1 1; 1 1 1] to include diagonal adjacency
X(conv2(double(~X), mask, 'same') & X) = 2;
您可以使用标准函数进行二维卷积。将矩阵表示为
X
mask = [0 1 0; 1 1 1; 0 1 0]; %// or [1 1 1; 1 1 1; 1 1 1] to include diagonal adjacency
X(conv2(double(~X), mask, 'same') & X) = 2;
您可以使用标准函数进行二维卷积。将矩阵表示为
X
mask = [0 1 0; 1 1 1; 0 1 0]; %// or [1 1 1; 1 1 1; 1 1 1] to include diagonal adjacency
X(conv2(double(~X), mask, 'same') & X) = 2;
您可以使用标准函数进行二维卷积。将矩阵表示为
X
mask = [0 1 0; 1 1 1; 0 1 0]; %// or [1 1 1; 1 1 1; 1 1 1] to include diagonal adjacency
X(conv2(double(~X), mask, 'same') & X) = 2;
非常感谢你,努奇·乔纳斯!非常感谢你,努奇·乔纳斯!非常感谢你,努奇·乔纳斯!非常感谢你,努奇·乔纳斯!