转移图像的某些部分

时间:2013-06-13 13:37:32

标签: image matlab

我正在尝试使用此代码将我的图像的某些部分传输到另一个矩阵:

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

当这段代码不起作用时,我尝试使用3 for循环 之后我尝试分别转移 R G B 图层:

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

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

1 个答案:

答案 0 :(得分:1)

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

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

将无错误地运行。

您使用的图片类型可能是 uint8 8位无符号整数),而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的名称。