0

我想在 MATLAB 中创建一个图像数组(二维uint8数组形式的图像)。我想用它们来编写 .jpg 文件,或者imshow(基本上从 3D 整数数组访问每个 2D)。我无法将它们用于任何目的。请帮忙。这是一个示例代码:

for k =1:no_images
    for i=1:Height
        for j=1:Width
            image(k,i,j) = uint8( k+i+j ) ;
        end
    end
    imshow( image(k) );
end
4

3 回答 3

2

这将工作。

Img = image(k,:,:);
imshow(Img);

编辑

作为像这样的 3D 阵列,您只有灰度图像,但如果您有一个包含颜色通道的 4D 阵列,它是相同的。

Img = image(k,:,:,:);
imshow(Img);

编辑2

在你的形象是形象之前1xHeightxWidth,所以你只需要做

Img = reshape(Img,[Height Width]); 
于 2013-11-12T19:04:56.703 回答
1

您可能的意思是您想为这些图像预分配内存,因为imshow只显示它们,并且 image(k,i,j) = uint8( k+i+j ) 只是根据循环将一个数字写入 3D 数组的每个像素(没有意义)

只需使用

 image=zeros(N,M,L,'uint8');

其中 N,M,L 是 3-D 维度,用于创建 3D 零数组。然后image(:,:,n)=...将第 n 个图像分配到数组中。

于 2013-11-12T19:06:00.600 回答
1

这可能会有所帮助:

img = cell(m, n);
img{i, j} = Image;
于 2013-11-12T19:43:12.783 回答