如何在不同目录的多个图像中读取和运行算法?

时间:2015-04-24 19:54:58

标签: algorithm matlab loops computer-vision

我一直致力于分段算法(均值漂移)。最大的问题与图像有关。它们很庞大,有数百个物体。 该算法功能强大,但同时计算密集。 所有这一切都说每张图片需要至少1小时才能分段,我有150张图片。

我整天都在工作,并希望在白天运行此算法,而不用担心为每个单独的图像运行算法。同时将结果保存在同一个文件夹中。

我将图像放在目录中,如下所示:

C: Folder1/Folder2/Folder3/0001/0001.png
C: Folder1/Folder2/Folder3/0002/0002.png
C: Folder1/Folder2/Folder3/0003/0003.png
...

我读了这样的图像: I=imread('C: Folder1/Folder2/Folder3/0001/0001.png')

1 个答案:

答案 0 :(得分:1)

首先创建索引图像的矢量1-150。

a = 1:150;

主要解决方案

现在这里有1个班轮,应该为你做。

A = arrayfun( @(x) sprintf( '%04d', x ), a, 'UniformOutput', false );
I = cellfun( @(b) imread( ['C: Folder1/Folder2/Folder3/' b '/' b '.png'] ), A, 'UniformOutput', false );

arrayfun行将用零填充向量a并将其转换为字符串单元格。 cellfun行将执行imread操作并将其存储到矩阵I中。

然后,您可以使用I{i}访问每个图片。

备用循环解决方案

为图像创建一个单元格。

I = cell(1,length(a));

然后创建一个预备索引的循环。然后调用imread

for i = a
    b = sprintf( '%04d', i );
    I{i} = imread( ['C: Folder1/Folder2/Folder3/' b '/' b '.png'] );
end

然后,您可以使用I{1}访问每个图像作为第一个元素。作为参考,这是运行循环时每个b的值。

b =
0001
b =
0002
b =
0003
...