我正在尝试在MATLAB中完成我的第一个项目,到目前为止,我尝试从一个目录中加载一系列图像,然后将它们存储在一个对象中。
图像很小并且它们很少< 100,所以记忆不是问题。
我会将它们最佳地存储在 3维数组中,但我不知道该怎么做。
您能告诉我如何加载图像并将它们存储在堆栈中吗?
到目前为止,这是我写的代码:
function image = load_image_array(dir, start, finish)
for i = start:finish
filename = [ dir '/' sprintf('%08d', i) '.jpg' ];
image = importdata( filename, 'jpg' );
figure( i );
imagesc( image );
end
end
您认为提前预先分配数组是个好主意吗?另外,3维数组是个好主意吗?我想要RGB图像,我需要有3个堆栈还是4维数组呢?
答案 0 :(得分:3)
假设它们的大小相同,将它们存储在堆栈中就像这样简单:
...
imageStack(i,:,:) = image;
...
imagesc( squeeze(imageStack(i,:,:)) );
如果尺寸不同,请使用cell array:
...
imageStack{i} = image;
...
imagesc( imageStack{i} );
我的语法可能是关闭单元格数组,测试它并使用它。我会在以后上班时记得再次检查它。
答案 1 :(得分:0)
http://blogs.mathworks.com/steve/2006/06/06/batch-processing/