我在matlab中修改图像,我遇到了问题。
我需要分开3个颜色通道并单独修改它们。
我用它来获得三个频道:
a = imread('./images/penguins.png');
colorlist = {'R','G','B'};
subplot(2,2,1);
imshow(a);
for k=1:3
subplot(2,2,k+1);
imshow( a(:,:,k));
title(colorlist{k});
end
a(:,:,k)是三者中的一种颜色。问题是我在一个中添加三个矢量,以获得彩色图像。我这样做:
A=a(:,:,1)+a(:,:,2)+a(:,:,3)
figure; imshow(A);
但它不起作用,它只显示一个非常高亮的图像,没有彩色图像。
任何人都知道如何恢复彩色图像?谢谢你的帮助^^
答案 0 :(得分:3)
您正在添加三个图层的值,而不是将它们连接在一个3D数组中。
试试这个:
A= cat(3, a(:,:,1), a(:,:,2), a(:,:,3));
我还应该注意,您可以通过索引编辑图层,比如说要切换红色和绿色组件:
I1 = imread('http://i.stack.imgur.com/1KyJA.jpg');
I2=I1;
I2(:,:,1)=I1(:,:,2);
I2(:,:,2)=I1(:,:,1);
imshowpair(I1,I2, 'montage');
现在,如果我按字面意思取得你的标题,让我们说想要添加三个图层并用彩色图显示结果,你可以这样做:
A=a(:,:,1)+a(:,:,2)+a(:,:,3)
imagesc(A); axis image;
colorbar;
结果: