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.
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 ...
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');
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.
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).
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);