在图像中添加三个通道以获得彩色图像MATLAB

时间:2014-01-06 21:16:04

标签: image matlab image-processing colors

我在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);

但它不起作用,它只显示一个非常高亮的图像,没有彩色图像。

任何人都知道如何恢复彩色图像?谢谢你的帮助^^

1 个答案:

答案 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');

Green and red channels swap

现在,如果我按字面意思取得你的标题,让我们说想要添加三个图层并用彩色图显示结果,你可以这样做:

A=a(:,:,1)+a(:,:,2)+a(:,:,3)
imagesc(A); axis image; 
colorbar;

结果:

Sum of the 3 rub layers