2010-08-23 15 views
15

J'ai une matrice 3D im qui représente une image RVB. Je peux faireComment afficher le canal rouge d'une image dans Matlab?

imshow(im) 

pour afficher l'image.

Je souhaite afficher un seul canal RVB à la fois: Je veux afficher le canal rouge et je veux qu'il apparaisse en rouge.

J'ai essayé

imshow(im(:,:,1)) 

mais il affiche l'image en niveaux de gris (qui est pas ce que je veux).

Comment afficher le canal rouge et le faire apparaître en rouge?

+0

La chose importante ici est si vous voulez afficher une image colorée, assurez-vous que son 3 dimensions. Si vous faites im (:,:, 1), il ne vous reste plus qu'une seule dimension. – saurabheights

Répondre

19

J'ai trois propositions pour vous.

1. Utilisez la fonction imagesc et choisissez une palette de couleur rouge.

2. Effacer les autres canaux de couleur: im(:,:,2:3) = 0; imshow(im);

3. Utilisez la fonction ind2rgb avec une carte de couleur que vous construisez en conséquence.

+0

Merci. Choisissez l'option 2 – snakile

2

Vous voulez uniquement extraire la couleur rouge? En utilisant im (:,:, 1), séparez le canal rouge de l'image 3D et convertissez-le en une image 2D. Essayez ce code simple:

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

Essayez ceci:

% 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

Essayez cette

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

Pour une meilleure vue, vous pouvez calculer et afficher la couleur pure . La formule R p = R c/(R c + G c + B c). Et un exemple de code pour la couleur rouge:

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

Cela rendra l'affichage de la couleur plus claire, puisque les autres couleurs ont été filtrés.

Je vais essayer de l'illustrer par un exemple:

Image originale:

enter image description here

canal rouge de l'image (im(:,:,1)):

enter image description here

rouge pur:

enter image description here

Questions connexes