2010-08-23 4 views
15

Ich habe eine 3D-Matrix im, die ein RGB-Bild darstellt. Ich kann tunWie zeige ich den roten Kanal eines Bildes in Matlab an?

imshow(im) 

, um das Bild anzuzeigen.

Ich möchte nur einen der RGB-Kanäle gleichzeitig anzeigen: Ich möchte den roten Kanal anzeigen und ich möchte, dass er rot angezeigt wird.

Ich habe

versucht
imshow(im(:,:,1)) 

aber es zeigt das Graustufenbild (das nicht das, was ich will).

Wie zeige ich den roten Kanal an und lasse ihn rot erscheinen?

+0

Die wichtige Sache hier ist, wenn Sie ein Farbbild anzeigen möchten, stellen Sie sicher, dass es 3 dimensional ist. Wenn Sie im (:,:, 1) tun, bleibt nur eine einzige Dimension übrig. – saurabheights

Antwort

19

Ich habe drei Vorschläge für Sie.

1. Verwenden Sie die imagesc Funktion und wählen Sie eine rote Farbpalette.

2. löschen die anderen Farbkanäle: im(:,:,2:3) = 0; imshow(im);

3. Verwenden Sie die ind2rgb Funktion mit einer Farbkarte Sie entsprechend bauen.

+0

Danke. Wählen Sie Option 2 – snakile

2

Sie meinen, Sie möchten nur rote Farbe extrahieren? Mit im (:,:, 1) trennen Sie nur den roten Kanal vom 3D-Bild und wandeln es in ein 2D-Bild um. diesen einfachen Code Versuchen:

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

Try this:

% 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

dieses Versuchen

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

Für eine bessere Sicht, könnten Sie die reine Farbe berechnen und anzuzeigen. Die Formel R p = R c /(R c + G c + B c). Und ein Codebeispiel für die Farbe Rot:

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

Dies wird die Farbanzeige deutlicher machen, da die anderen Farben herausgefiltert wurden.

Ich werde versuchen, es mit einem Beispiel zu illustrieren:

Originalbild:

enter image description here

roten Kanal des Bildes (im(:,:,1)):

enter image description here

Pure red:

enter image description here

Verwandte Themen