difference of image histograms

hello, in Matlab is equal to do the histogram of difference of two grayscale images and the difference of the two histograms of the images? How to perform the difference of two histograms and plot the negative values of this difference?
thank you for the help,
Giuseppe

Answers (1)

KALYAN ACHARJYA
KALYAN ACHARJYA on 29 May 2020
Edited: KALYAN ACHARJYA on 29 May 2020
im1=rgb2gray(imread('image1_name'));
im2=rgb2gray(imread('image2_name'));
diff_hist=imhist(im1)-imhist(im2);
plot(diff_hist)
Ensure that both have same data type images to get the same range of bins

10 Comments

giuseppe catarinella Comment moved here
ok thanks. The code works although it doesn't plot a histogram but a line without bar. is it right? a question: is the result obtained with this code the same if I had: im3=imsubtract(im1,im2); histogram(im3) or imhist(im3)? What is the difference between imhist() and histogram()? another question: in a histogram is it possibile to exclude a value of bin like, for example, the value 0 because its column is higher than the others? sorry for the numerous questions. Thank you so much for the support.
im1=rgb2gray(imread('image1_name'));
im2=rgb2gray(imread('image2_name'));
diff_hist=imhist(im1)-imhist(im2);
bar(diff_hist)
giuseppe catarinella Comment moved here
Ok, thank you. Is there any function to find histogram's peaks? After that, how to set thresholds to classify the different ranges of values in the histogram? Thanks a lot for the support.
hostgram_peak=max(diff_hist)
Ses the lobes in the histogram, are there any distinct difference to classify different objects.
Please write your comment, in the comment section (Just below), not in answer section.
Sorry. The function max doesn't work. I'm using histogram() not imhist(). How to solve this problem? I would classify some histograms based on the number of peaks and their position. Is it possible to achieve this task? If yes, how can I do this? Thank you.
Try findpeaks() in the Signal Processing Toolbox. Or fit to multiple Gaussians. See attached demos.
Thank you. I'm using histogram() to plot image histograms. This function returns an histogram object. Can I use findpeaks() to find the number of peaks and their position on histogram? Thank you so much for the support.
Yes, if you want. It can be tricky to get findpeaks() to get just the peaks you want and not all of the peaks you don't want, but you can play around with the tons of input parameteters until it gets just the ones you want.
Ok, thank you so much. This advise was very useful. I'd like to ask other questions about this argument. First, using the function findpeaks(), how can I show also the x coordinates of the peaks. I remind you that I have a histogram of an image and I would to show the bin values of the peaks in addition to the values of counts that the function already returnss. Second, is it possible to use findpeaks() function for a vector of objects of type histogram and consequently use histogram() function for a vector of images? If yes, how can I do this? Thank you very much for the support.

Sign in to comment.

Products

Release

R2020a

Community Treasure Hunt

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

Start Hunting!