2010-08-23 97 views
15

Tengo una matriz 3D im que representa una imagen RGB. Puedo hacer¿Cómo visualizo el canal rojo de una imagen en Matlab?

imshow(im) 

para mostrar la imagen.

Quiero mostrar solo uno de los canales RGB a la vez: Quiero mostrar el canal rojo y quiero que aparezca en rojo.

He intentado

imshow(im(:,:,1)) 

pero muestra la imagen en escala de grises (que no es lo que quiero).

¿Cómo visualizo el canal rojo y lo hago aparecer en rojo?

+0

Lo importante aquí es si desea mostrar una imagen en color, asegúrese de que sea de 3 dimensiones. Si haces im (:,:, 1), te queda solo una dimensión. – saurabheights

Respuesta

19

Tengo tres propuestas para usted.

1. utilizar la función imagesc y elija una paleta de color rojo.

2. Borrar los otros canales de color: im(:,:,2:3) = 0; imshow(im);

3. Use la función ind2rgb con un mapa de colores se construye en consecuencia.

+0

Gracias. Elija la opción 2 – snakile

2

¿Quiere decir que quiere extraer solo el color rojo? usando im (:,:, 1) solo separe el canal rojo de la imagen 3D y conviértalo en una imagen 2D. Prueba este código simple:

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

Prueba esto:

% 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

probar este

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; 
0

Para una mejor vista, se podría calcular y mostrar el color puro. La fórmula R p = R c/(R c + G c + B c). Y un ejemplo de código para el color rojo:

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

Esto hará que la pantalla de color más claro, ya que los otros colores han sido filtrados.

voy a tratar de ilustrarlo con un ejemplo:

imagen original:

enter image description here

canal rojo de la imagen (im(:,:,1)):

enter image description here

puro rojo:

enter image description here

Cuestiones relacionadas