16 Stimmen

Wie kann ich den roten Kanal eines Bildes in Matlab anzeigen?

Ich habe eine 3D-Matrix im das ein RGB-Bild darstellt. Ich kann

imshow(im)

um das Bild anzuzeigen.

Ich möchte jeweils nur einen der RGB-Kanäle anzeigen: Ich möchte den roten Kanal anzeigen und er soll rot erscheinen.

Ich habe versucht

imshow(im(:,:,1))

aber es wird das Graustufenbild angezeigt (was ich nicht will).

Wie kann ich den roten Kanal anzeigen und ihn rot erscheinen lassen?

19voto

ypnos Punkte 47895

Ich habe drei Vorschläge für Sie.

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

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

3. Verwenden Sie die ind2rgb Funktion mit einer Farbkarte, die Sie entsprechend erstellen.

5voto

harja Punkte 51

Versuchen Sie dies:

% 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);

3voto

Landrover Punkte 31

Versuchen Sie dies

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;

2voto

Aatish Ali Khan Punkte 21

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

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

0voto

Joren Punkte 2864

Zur besseren Übersicht können Sie die reine Farbe . 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)))

Dadurch wird die Farbdarstellung deutlicher, da die anderen Farben herausgefiltert wurden.

Ich werde versuchen, dies anhand eines Beispiels zu erläutern:

Originalbild:

enter image description here

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

enter image description here

Reines Rot:

enter image description here

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X