在matlab中处理一堆图像

时间:2014-07-02 15:23:18

标签: matlab

我目前正在处理一个图像处理任务,需要我在Matlab中同时处理一堆.png图像(我的matlab知识非常有限)。我看过各种网站试图弄清楚如何做到这一点。我最近的尝试是基于此链接中的答案:http://www.mathworks.com/matlabcentral/answers/7665-images-to-stacks,但我一直收到错误:     “赋值比非单例下标有更多非单例rhs维度” 我的.png是按顺序编号的(Heart 001.png,Heart 002.png,...),我的确切代码如下:

I = zeros(240,320,253,'uint8');
for ii = 1:253
    I(:,:,ii) = imread(sprintf('Heart %s.png'),num2str(ii,'%03i')));
end

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:1)

您的图像阅读代码看起来很好,但构造文件名的方式是错误的。您将num2str的结果作为图片格式参数传递给imread,但您打算将其传递给sprintf。你试试imread(sprintf('Heart %03d.png', ii));怎么样?

答案 1 :(得分:0)

我发现解决方案是从http://www.mathworks.com/matlabcentral/fileexchange/41334-imshow3d--3d-imshow-下载imshow3D.m, 然后实现以下代码:

clear;
clc;

I = zeros(240,320,253,'uint8');
for k = 1:253
    PNGFileName = strcat('Heart ',32, num2str(k), '.png');
    imageData = imread(sprintf(PNGFileName));
    Heart = imageData(:,:,1);
    I(:,:,k) = Heart;

end
imshow3D(I)