Matlab矩阵图像,大小问题

时间:2012-06-06 14:53:26

标签: matlab matrix

我有一个m.n图像矩阵,如下所示:

images = zeros( m, n, height, width );

这意味着我有m.n张图片的宽度和高度。然后,在for循环中;我填写这些图像:

for i=1:m
    for j=1:n
       images(i,j,:,:) = imread('imagePath');
    end
end

然后,假设我想使用图像(1,1)

image1 = images(1,1,:,:);

我希望此image1size = (h,w)。但是,当我说:

size(image1)

我得到了结果:

(1,1,h,w)

的问题:

1

为什么我没有以下结果?

(h,w)

2

如何重构我的代码以获得预期的结果?

2 个答案:

答案 0 :(得分:1)

您可以使用squeeze功能执行此操作:)

image1 = squeeze(image1);
size(image1)

应该给出

(h,w)

答案 1 :(得分:1)

它与matlab如何编制索引有关。当你说

image1 = images(1,1,:,:);

你告诉matlab你想要一个4维数组,第一维和第二维的大小为1。

如果您曾说过:

junk = images(:,:,1,1);
size(junk)
> [m,n]

Matlab将大小为[m,n]的矩阵视为大小为[m,n,1]或[m,n,1,1]的矩阵。不能在前面做到这一点,因此需要squeeze作为@Junuxx指出。另一种方法是做如下事情:

images = zeros( height, width, m, n );
for i=1:m
    for j=1:n
       images(:,:,m,n) = imread('imagePath');
    end
end
image1 = images(:,:,1,1);