粘贴裁剪后的图像而不改变颜色

时间:2015-04-29 05:04:44

标签: image matlab image-processing

我试图通过合并将裁剪后的图像添加到图像中来添加更多元素。我的代码工作正常但合并后的裁剪图像不能保留颜色。

B = A(y1:y2,x1:x2);
subplot(2, 2, 3);
imshow(B);
axis on;
[rows2, columns2] = size(B);
promptMessage = sprintf('Click on the upper left point where you want to paste it,\nor click Cancel to quit.');
titleBarCaption = 'Continue?';
[x, y] = ginput(1);
r1 = int32(y);
c1 = int32(x);
r2 = r1 + rows2 - 1;
r2 = min([r2 rows]);
c2 = c1 + columns2 - 1;
c2 = min([c2, columns]);
plot([c1 c2 c2 c1 c1], [r1 r1 r2 r2 r1], 'r-');
A(r1:r2, c1:c2) = B(1:(r2-r1+1), 1:(c2-c1+1));
subplot(2, 2, 4);
imshow(A);

最终图像已裁剪图像,但裁剪图像的颜色会发生变化。请让我知道如何保留裁剪图像的颜色。

感谢。

1 个答案:

答案 0 :(得分:3)

它不会保留颜色,因为您只是提取出图像的第一个通道。我假设您的图像是 RGB 图像,因此您还需要在相同的空间坐标处提取所有通道。因此,您还需要切入第三维:

B = A(y1:y2,x1:x2,:); %// Change
subplot(2, 2, 3);
imshow(B);  % Imange B is a cropped image with same color

plot([c1 c2 c2 c1 c1], [r1 r1 r2 r2 r1], 'r-');
A(r1:r2, c1:c2,:) = B(1:(r2-r1+1), 1:(c2-c1+1),:); %// Change
subplot(2, 2, 4);
imshow(A);