代码之家  ›  专栏  ›  技术社区  ›  snakile

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

  •  16
  • snakile  · 技术社区  · 14 年前

    我有一个三维矩阵 im 它表示一个RGB图像。我能做到

    imshow(im)
    

    显示图像。

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

    我试过了

    imshow(im(:,:,1))
    

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

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

    5 回复  |  直到 9 年前
        1
  •  19
  •   ypnos    14 年前

    我有三个建议给你。

    1。 使用 imagesc 功能和选择一个红色调色板。

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

    三。 使用 ind2rgb 与相应构建的颜色映射一起使用。

        2
  •  4
  •   harja    13 年前

    试试这个:

    % 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);
    
        3
  •  3
  •   Chadwick    13 年前

    试试这个

    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;
    
        4
  •  2
  •   snakile    13 年前

    你是说你只想提取红色? 使用im(:,:,1)只将红色通道与3D图像分离,并将其转换为二维图像。 尝试以下简单代码:

    im=imread('example.jpg');
    im_red=im(:,:,1);
    im_gray=rgb2gray(im);
    im_diff=imsubtract(im_red,im_gray);
    imshow(im_diff);
    
        5
  •  0
  •   Joren    11 年前

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

    imagesc(im(:,:,1)./(im(:,:,1)+im(:,:,2)+im(:,:,3)))
    < /代码> 
    
    

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

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

    原始图像:

    图像的红色通道(im(:,:,1)):。

    纯红色:

    公式R= RC/(R)C+GC+BC)红色的代码示例:

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

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

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

    原始图像:

    enter image description here

    图像的红色通道(im(:,:,1)):

    enter image description here

    纯红色:

    enter image description here