如何创建一个包含逻辑变量的数组并在 for 循环中遍历这些变量?
How to create an array with logical variables and iterate through those variables in a for loop?
我有16张逻辑类型的二进制图像,我想把这些图像(变量名)放入一个数组中,并在for循环中遍历它们进行图像处理。
下面是我的二进制图像名称的示例,以及我当前的 for 循环(不起作用)。
bin_RD1 = imbinarize(rightDam1, T_RD1); %these are my binary images
bin_RD2 = imbinarize(rightDam2, T_RD2);
bin_RD3 = imbinarize(rightDam3, T_RD3);
bin_RD4 = imbinarize(rightDam4, T_RD4);
i = who('bin*'); %says of type 16x1 cell
for j = 1:length(i) %j is listed as just a number
k = i{j}; %char type: 'bin_RD1'
% logical k; did not work
roi = bwareaopen(k, 25);
graindata = regionprops('table',roi,'Area','EquivDiameter','MajorAxisLength','MinorAxisLength','Centroid','Orientation');
end
你的措辞令人困惑,我不知道这是否是你要找的。尝试以矩阵形式分配你的变量(请记住我从来没有处理过图像,所以我的索引可能是非常错误的):
for i=1:16
bin_RD(:,:,i) = imbinarize(rightDam(:,:,i),T_RD(i));
end
您也可以使用这样的操作来处理您的 bin_RD 变量。您甚至不必离开循环。
for i=1:16
bin_RD(:,:,i) = imbinarize(rightDam(:,:,i),T_RD(i));
roi(:,:,i) = bwareaopen(bin_RD(:,:,i), 25);
graindata = regionprops('table',roi(:,:,i),'Area','EquivDiameter','MajorAxisLength','MinorAxisLength','Centroid','Orientation');
end
最后一条建议:我使用了 i=1:16,但是如果您想在可能有 5、22、100 等图像的情况下再次使用此代码,请使用 i=1 :length(T_RD) 或类似的东西,你不必每次都改变它。
我有16张逻辑类型的二进制图像,我想把这些图像(变量名)放入一个数组中,并在for循环中遍历它们进行图像处理。
下面是我的二进制图像名称的示例,以及我当前的 for 循环(不起作用)。
bin_RD1 = imbinarize(rightDam1, T_RD1); %these are my binary images
bin_RD2 = imbinarize(rightDam2, T_RD2);
bin_RD3 = imbinarize(rightDam3, T_RD3);
bin_RD4 = imbinarize(rightDam4, T_RD4);
i = who('bin*'); %says of type 16x1 cell
for j = 1:length(i) %j is listed as just a number
k = i{j}; %char type: 'bin_RD1'
% logical k; did not work
roi = bwareaopen(k, 25);
graindata = regionprops('table',roi,'Area','EquivDiameter','MajorAxisLength','MinorAxisLength','Centroid','Orientation');
end
你的措辞令人困惑,我不知道这是否是你要找的。尝试以矩阵形式分配你的变量(请记住我从来没有处理过图像,所以我的索引可能是非常错误的):
for i=1:16
bin_RD(:,:,i) = imbinarize(rightDam(:,:,i),T_RD(i));
end
您也可以使用这样的操作来处理您的 bin_RD 变量。您甚至不必离开循环。
for i=1:16
bin_RD(:,:,i) = imbinarize(rightDam(:,:,i),T_RD(i));
roi(:,:,i) = bwareaopen(bin_RD(:,:,i), 25);
graindata = regionprops('table',roi(:,:,i),'Area','EquivDiameter','MajorAxisLength','MinorAxisLength','Centroid','Orientation');
end
最后一条建议:我使用了 i=1:16,但是如果您想在可能有 5、22、100 等图像的情况下再次使用此代码,请使用 i=1 :length(T_RD) 或类似的东西,你不必每次都改变它。