我有一个代表RGB图像的3D矩阵im
。我能做到
imshow(im)
显示图像。
我想一次只显示一个RGB通道:我想显示红色通道,我希望它显示为红色。
我试过
imshow(im(:,:,1))
但它会显示灰度图像(这不是我想要的)。
如何显示红色通道并使其显示为红色?
答案 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)))
这将使颜色显示更清晰,因为其他颜色已被过滤掉。
我将尝试用一个例子来说明它:
原始图片:
红色图像频道(im(:,:,1)
):
纯红色: