我的图像数组:C_filled = 256x256x3270
我想要做的是计算每个图像的质心,并将每个“切片”/图像对应的每个质心存储到一个数组中。但是,当我尝试更新数组时,就像常规数组一样,我收到此错误:
"Undefined operator '+' for input arguments of type 'struct'."
我有以下代码:
for i=1:3270;
cen(i) = regionprops(C_filled(:,:,i),'centroid');
centroids = cat(1, cen.Centroid);% convert the cen struct into a regular array.
cen(i+1) = cen(i) + 1; <- this is the problem line
end
如何更新数组以存储每个新的质心?
提前致谢。
答案 0 :(得分:0)
这是因为regionprops
(即cen(i)
)的输出是一个结构,您尝试将值1添加到该结构中。但是,因为您尝试将值添加到结构中它没有一个领域,它失败了。
假设每个图像可以包含多个对象(因此也就是质心),最好(我认为)将它们的坐标存储到一个单元格数组中,其中每个单元格的大小可以不同,与数字数组相反。如果每个图像中的对象数量完全相同,则可以使用数字数组。
如果我们看一下&#34;单元阵列&#34;选项代码:
%// Initialize cell array to store centroid coordinates (1st row) and their number (2nd row)
centroids_cell = cell(2,3270);
for i=1:3270;
%// No need to index cen...saves memory
cen = regionprops(C_filled(:,:,i),'centroid');
centroids_cell{1,i} = cat(1,cen.Centroid);
centroids_cell{2,i} = numel(cen.Centroid);
end
就是这样。您可以使用以下表示法访问任何图像的质心坐标:centroids_cell{some index}
。