0

我正在尝试使用以下代码将图像的某些部分转移到另一个矩阵:

p1 = zeros(512,512,3);
p1(1:128, 1:128, 1:3) = image(1:128, 129:256, 1:3);

当这段代码不起作用时,我尝试使用 3 for 循环,之后我尝试分别传输RGB图层:

p1(1:128, 1:128, 1) = image(1:128, 129:256, 1);

但是这些代码都不起作用。谁能告诉我该怎么做?

4

1 回答 1

1

Matlab中,您始终可以将一个矩阵分配给另一个具有相同大小的矩阵。例如:

A = ones (4,2,3,4,5);
B = zeros(4,2,3,4,5);
A = B

将运行没有错误。

您使用的图像类型可能是uint88 位无符号整数),同时zeros创建一个精度矩阵。如果您不正确地转换(更改类型)矩阵,这将导致操作或内置函数的不当行为。用于whos检查图像的类型:

whos image

尝试将其zeros转换为uint8

p1 = uint8(zeros(512,512,3));
...

这是一个例子:

image = imread('peppers.png');
partail_im = uint8(zeros(size(image)));
partail_im(1:128,1:128,:) = image(1:128,129:256,:);
imshow(partail_im);

注意:最好不要使用 image 作为任何变量的名称,因为它是内置函数的名称image

于 2013-06-13T14:04:49.373 回答