Matlab查询:图像处理,编辑脚本



我对图像处理很陌生,想要生成一个存储10张图像的数组。之后,我想通过一些代码运行一个for循环来识别图像的一些属性,特别是生物标本的表面积,然后吐出一个包含10个区域的数组。

下面是我到目前为止设法分解的内容,这是随后的错误消息:

??? Index exceeds matrix dimensions.
Error in ==> Testing1 at 14
    nova(i).img = imread([myDir B(i).name]);

下面是我到目前为止一直在做的代码:

my_Dir = 'AC04/';
ext_img='*.jpg';
B = dir([my_Dir ext_img]);
nfile = max(size(B));
nova = zeros(1,nfile);
for i = 1:nfile
    nova(i).img = imread([myDir B(i).name]);
end
areaarray = zeros(1,nfile);
for k = 1:nfile
[nova(k), threshold] = edge(nova(k), 'sobel');
.
.
.
.%code in this area is irrelevant to the problem I think%
.
.
.
areaarray(k) = bwarea(BWfinal);
end
areaarray

在Matlab中有几种方法可以将图像存储在数组结构中。你可以用struct的数组。在这种情况下,你可以这样做:

nova(i).img = imread([myDir B(i).name]);

使用nova(1).img访问第一个图像,使用nova(2).img访问第二个图像,等等


另一种方法是使用单元格数组(类似于数组,但在成员可以是不同类型的意义上更灵活):

nova{i} = imread([myDir B(i).name]);

您使用nova{1}访问第一个图像,使用nova{2}等访问第二个图像。


[IMPORTANT]在这两种情况下,你都应该从代码中删除这一行:

nova = zeros(1,nfile);

我想你已经尝试过为图像预分配内存,因为你是初学者,我建议你不要关心它。如果您遇到一些性能问题,这是一个需要解决的优化问题-如果您没有遇到它们,请利用Matlab的自动内存(重新)分配。

最新更新