我想在MATLAB中创建一个图像数组(2D 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
答案 0 :(得分:2)
这将是工作。
Img = image(k,:,:);
imshow(Img);
编辑
作为这样的3D阵列,你只有灰度图像,但是如果你有一个包含颜色通道的4D阵列,它就是一样的。
Img = image(k,:,:,:);
imshow(Img);
<强> EDIT2 强>
在图片之前,您的图片为1xHeightxWidth
,因此您只需要
Img = reshape(Img,[Height Width]);
答案 1 :(得分:1)
您可能意味着要为这些图像预分配内存,因为imshow
只显示它们,而image(k,i,j) = uint8( k+i+j )
只是将一个数字写入到响应循环的3D数组的每个像素中(并不是有道理)
只需使用
image=zeros(N,M,L,'uint8');
其中N,M,L是三维维度,用于创建零的3D数组。然后image(:,:,n)=...
将第n个图像分配到数组中。
答案 2 :(得分:1)
这可能有所帮助:
img = cell(m, n);
img{i, j} = Image;