Arrays Matlab:多维图像阵列

Arrays Matlab:多维图像阵列,arrays,image,matlab,image-processing,multidimensional-array,Arrays,Image,Matlab,Image Processing,Multidimensional Array,我不熟悉多维数组的概念,我正试图将其应用到我拥有的以下图像中: 我想做的是创建一个5D数组,如下所示[行中的框数,列中的框数,x中每个框的大小,y中每个框的大小,RGB],在这个示例中,它将是[8,8,200,200,3] 我编写了以下代码来获取左上角框(红色框)的像素(只是为了测试它): 当我运行代码时,我只得到一条黄线。 有人能指出我做错了什么以及为什么我现在得到的结果吗?将你的img初始化为uint8,例如img=uint8(零(8,8,200,200,3)),我只能通过将图片的文件名更

我不熟悉多维数组的概念,我正试图将其应用到我拥有的以下图像中:

我想做的是创建一个5D数组,如下所示[行中的框数,列中的框数,x中每个框的大小,y中每个框的大小,RGB],在这个示例中,它将是[8,8,200,200,3]

我编写了以下代码来获取左上角框(红色框)的像素(只是为了测试它):

当我运行代码时,我只得到一条黄线。
有人能指出我做错了什么以及为什么我现在得到的结果吗?

将你的
img
初始化为
uint8
,例如
img=uint8(零(8,8,200,200,3))
,我只能通过将图片的文件名更改为
QZiuc.jpg
并查看
img(1,1,:,:,:,:)
中的数据来运行您的示例。它只包含图片左上角的红色框。这意味着,代码的第1-3行似乎没有问题。另外,“问题”是您正在将
imshow
double
图像一起使用。这是一个简明的解释。我不想复制它。@HansHirse是对的,我认为使用
uint8(你的图片)
是最好的解决方案。但是
imshow
也支持范围[0 1]内的值。因此,
imshow(挤压(img(1,1,:,:,:))/255)
也可以工作。将图像初始化为uint8并除以255解决了这个问题。感谢您将您的
img
初始化为
uint8
,例如
img=uint8(零(8,8,200,200,3))
,它应该可以工作。我只能通过将图片的文件名更改为
QZiuc.jpg
并查看
img(1,1,:,:,:,:,:)中的数据来运行您的示例
它只包含图片左上角的红色框。这意味着,代码的第1-3行似乎没有问题。另外,“问题”是您正在将
imshow
double
图像一起使用。这是一个简明的解释。我不想复制它。@HansHirse是对的,我认为使用
uint8(你的图片)
是最好的解决方案。但是
imshow
也支持范围[0 1]内的值。因此,
imshow(挤压(img(1,1,:,:,:))/255)
也可以工作。将图像初始化为uint8并除以255解决了这个问题。非常感谢。
Image = imread('Grid.jpg');
img = zeros(8, 8, 200, 200, 3)
img(1, 1, 1:200, 1:200, :) = Image(1:200, 1:200, :);
imshow(squeeze(img(1,1,:,:,:)))