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

5 vues (au cours des 30 derniers jours)
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

Réponse acceptée

YT
YT le 22 Oct 2018
Modifié(e) : YT le 22 Oct 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

Plus de réponses (0)

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by