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

时间:2013-06-13 14:25:49

标签: image matlab image-processing analysis

我对图像处理很陌生,想要生成一个存储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

1 个答案:

答案 0 :(得分:0)

在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}等访问第二张图片


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

nova = zeros(1,nfile);

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