web-dev-qa-db-fra.com

Comment afficher l'histogramme d'une image RVB dans Matlab?

Je lis une image dans matlab en utilisant

input = imread ('sample.jpeg');

Alors je fais

imhist(input);

Il donne cette erreur:

??? Error using ==> iptcheckinput
Function IMHIST expected its first input, I or X, to be two-dimensional.

Error in ==> imhist>parse_inputs at 275
iptcheckinput(a, {'double','uint8','logical','uint16','int16','single'}, ...

Error in ==> imhist at 57
[a, n, isScaled, top, map] = parse_inputs(varargin{:});

Après avoir exécuté size(input), je vois que mon image d'entrée est de la taille 300x200x3. Je sais que la troisième dimension est pour le canal de couleur, mais existe-t-il un moyen de montrer l'histogramme de cela? Merci.

17
E_learner

imhist affiche un histogramme d'images niveaux de gris ou binaires. Utilisez rgb2gray Sur l'image, ou utilisez imhist(input(:,:,1)) pour voir une des chaînes à la fois (rouge dans cet exemple).

Vous pouvez également le faire:

hist(reshape(input,[],3),1:max(input(:))); 
colormap([1 0 0; 0 1 0; 0 0 1]);

pour afficher les 3 canaux simultanément ...

28
bla

Je pefere pour tracer l'histogramme pour le rouge, le vert et le bleu dans un tracé:

%Split into RGB Channels
Red = image(:,:,1);
Green = image(:,:,2);
Blue = image(:,:,3);

%Get histValues for each channel
[yRed, x] = imhist(Red);
[yGreen, x] = imhist(Green);
[yBlue, x] = imhist(Blue);

%Plot them together in one plot
plot(x, yRed, 'Red', x, yGreen, 'Green', x, yBlue, 'Blue');
13
Philipp Hofmann

Un tracé histogarm aura un nombre de pixels pour les niveaux d'intensité. La vôtre est une image RVB. Vous devez donc d'abord le convertir en une image d'intensité.

Le code ici sera:

input = imread ('sample.jpeg');

input=rgb2gray(input);

imhist(input);

imshow(input);

Vous pourrez obtenir l'histogramme de l'image.

5
angel
img1=imread('image.jpg');
img1=rgb2gray(img1);
subplot(2,2,1);
imshow(img1);
title('original image');
grayImg=mat2gray(img1);
subplot(2,2,2);
imhist(grayImg);
title('original histogram');

N'oubliez pas d'inclure mat2gray (); car il convertit la matrice A en l'image d'intensité grayImg. La matrice renvoyée grayImg contient des valeurs comprises entre 0,0 (noir) et 1,0 (pleine intensité ou blanc).

3
Varun Parikh

L'histogramme est utile pour analyser la distribution des pixels dans une image. L'histogramme trace le nombre de pixels dans une image par rapport à la valeur d'intensité.

img1=imread('image.jpg');
hist(img1);
0
vignesh Gk