如何创建具有逻辑变量的数组并在for循环中迭代这些变量?

问题描述 投票:0回答:1

我有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
matlab matlab-figure
1个回答
0
投票

您的措辞令人困惑,我不知道这是否是您想要的。尝试以矩阵形式分配变量(请记住,我从未使用过图像处理,因此我的索引编制可能非常错误):

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)之类的东西,您不必每次都更改它。

© www.soinside.com 2019 - 2024. All rights reserved.