【问题标题】:How to load and store a stack of images in MATLAB如何在 MATLAB 中加载和存储一堆图像
【发布时间】:2011-12-10 02:48:09
【问题描述】:

我正在尝试在 MATLAB 中完成我的第一个项目,到目前为止,我尝试从目录加载一系列图像将它们存储在一个对象中。 p>

图片很小,很少

我最好将它们存储在 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 维数组

【问题讨论】:

    标签: arrays image matlab multidimensional-array


    【解决方案1】:

    假设它们的大小都相同,将它们存储在堆栈中很简单:

    ...
    imageStack(i,:,:) = image;
    ...
    imagesc( squeeze(imageStack(i,:,:)) );
    

    如果它们的大小不同,只需使用cell array

    ...
    imageStack{i} = image;
    ...
    imagesc( imageStack{i} );
    

    我的单元格数组的语法可能不正确,测试一下并使用它。以后上班时我会尽量记住仔细检查。

    【讨论】:

    • 谢谢。它们的大小相同。
    • @Apoc - 没有挤压,matlab 将变量视为具有维度 1xNxM 的 3-D 矩阵。通过挤压,它是一个大小为NxM 的二维矩阵。许多 matlab 函数需要一个二维矩阵,当从一堆图像中提取切片时,挤压通常会派上用场。
    • 您可能希望避免使用image 作为变量名,因为它是一个内置的 MATLAB 函数。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-17
    相关资源
    最近更新 更多