How to make a histogram plot show as many lines (bars) instead of one long line showing the high points?

5 visualizzazioni (ultimi 30 giorni)
I'm working on a function that takes in a grayscale image, turns it into a matrix, then takes that info and turns it into a histogram plot. I finally got it working but my histogram plot looks like the first image (blue), and it's supposed to look like the second (black). Anyone know what I should change to fix it? My code is below
% plotting the image data into a histogram %
function p = histogram(image)
histogram = histogram_matlab(image);
plot((0:1:255),histogram);
xlabel('intensity value');
xlim([0,255]);
ylim([0 max(histogram)]);
ylabel('PMF');
end
%computing the grayscale image %
function h = histogram_matlab(imageSource)
openImage = imread(imageSource);
[m,n] = size(openImage);
h = zeros(256);
for i = 1:m
for j = 1:n
p = double(openImage(i,j))+1;
h(p) = h(p)+1;
end
end
total_pixel = m*n;
h = h./total_pixel;
end

Risposta accettata

YT
YT il 22 Ott 2018
Modificato: YT il 22 Ott 2018
Without looking at the code, I've already seen that you used `plot` instead of `histogram` or `bar` function. You see, when you use `plot` this way, it gives you a line through all the points. I think you're looking for something like
bar((0:1:255),histogram,'k'); %'k' is black
It will look something like this (tested with a random image)
  • More info on `bar` here
  • More info on build-in `histogram` function here
  • If you have the 'Image Processing Toolbox', check imhist

Più risposte (0)

Tag

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by