如何在Matlab中显示图像的红色通道?

时间:2010-08-23 11:21:18

标签: image matlab rgb graphics

我有一个代表RGB图像的3D矩阵im。我能做到

imshow(im)

显示图像。

我想一次只显示一个RGB通道:我想显示红色通道,我希望它显示为红色。

我试过

imshow(im(:,:,1))

但它会显示灰度图像(这不是我想要的)。

如何显示红色通道并使其显示为红色?

5 个答案:

答案 0 :(得分:19)

我有三个提案。

<强> 1 使用imagesc功能并选择红色调色板。

<强> 2 清除其他颜色通道:im(:,:,2:3) = 0; imshow(im);

3。使用ind2rgb函数和您构建的颜色贴图。

答案 1 :(得分:4)

试试这个:

% display one channel only
clear all;

im=imread('images/DSC1228L_512.jpg');
im_red = im;
im_green = im;
im_blue = im;

% Red channel only
im_red(:,:,2) = 0; 
im_red(:,:,3) = 0; 
figure, imshow(im_red);

% Green channel only
im_green(:,:,1) = 0; 
im_green(:,:,3) = 0; 
figure, imshow(im_green);

% Blue channel only
im_blue(:,:,1) = 0; 
im_blue(:,:,2) = 0; 
figure, imshow(im_blue);

答案 2 :(得分:3)

试试这个

I = imread('exemple.jpg');

%Red component
R = I(:,:,1);
image(R), colormap([[0:1/255:1]', zeros(256,1), zeros(256,1)]), colorbar;

%Green Component
G = I(:,:,2);
figure;
image(G), colormap([zeros(256,1),[0:1/255:1]', zeros(256,1)]), colorbar;

%Blue component
B = I(:,:,3);
figure;
image(B), colormap([zeros(256,1), zeros(256,1), [0:1/255:1]']), colorbar;

答案 3 :(得分:2)

你的意思是你只想提取红色? 使用im(:,:,1)仅将红色通道与3D图像分离并将其转换为2D图像。 试试这个简单的代码:

im=imread('example.jpg');
im_red=im(:,:,1);
im_gray=rgb2gray(im);
im_diff=imsubtract(im_red,im_gray);
imshow(im_diff);

答案 4 :(得分:0)

为了获得更好的视图,您可以计算并显示纯色。公式R p = R c /(R c + G c + B c )。以及红色的代码示例:

imagesc(im(:,:,1) ./ (im(:,:,1) + im(:,:,2) + im(:,:,3)))

这将使颜色显示更清晰,因为其他颜色已被过滤掉。

我将尝试用一个例子来说明它:

原始图片:

enter image description here

红色图像频道(im(:,:,1)):

enter image description here

纯红色:

enter image description here