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