如何从MATLAB中的彩色图像中单独生成红色,绿色和蓝色通道?

时间:2013-10-27 20:44:41

标签: matlab

我分别得到灰度图像而不是红色,绿色和蓝色图像。请帮助您获得正确的输出。假设我使用图像名称为'2.jpg'。

这是我的代码:

i=imread('2.jpg');
[x y z]=size(i);
for x1=1:x;
    for y1=1:y;
        red(x1,y1)=i(x1,y1,1);
        green(x1,y1)=i(x1,y1,2);
        blue(x1,y1)=i(x1,y1,3);
    end;
end;
figure;imshow(red);
figure;imshow(green);
figure;imshow(blue)

1 个答案:

答案 0 :(得分:3)

您的“红色”矩阵是一个nxm矩阵,根据定义,它是一个灰度图像。如果你想让“红色”成为只有红色的彩色图像,你必须用零填充其他通道并制作一个nxmx3矩阵。

img=imread('2.jpg');
%Preallocate variables with zeros
red=zeros(size(img));
green=red;
blue=red;
%fill one channel with data
red(:,:,1)=img(:,:,1)
green(:,:,2)=img(:,:,2)
blue(:,:,3)=img(:,:,3)