How to concatenate 3 histograms on the same graph in Matlab

故事扮演 提交于 2019-12-11 19:29:38

问题


I have calculated 3 histograms for an rgb image using imhist function in Matlab, one for each channel. I want to plot these histograms on the same graph, where for instance, the histogram for the first (red) channel stretches on the x axis from 0 to 255, the histogram for the second channel stretches from 256 to 511, and finally the histogram for the third channel stretches from 512 to 767. How can I do this?


回答1:


Assuming uint8 precision, each call to imhist will give you a 256 x 1 vector, and so you can concatenate these together into a single 768 x 1 vector. After, call bar with the histc flag. Assuming you have your image stored in im, do this:

red = imhist(im(:,:,1));
green = imhist(im(:,:,2));
blue = imhist(im(:,:,3));
h = [red; green; blue];
bar(h, 'histc');

As an example, using the onion.png image that's part of the image processing toolbox:

im = imread('onion.png');

This is what the image looks like:

Using the above code to plot the concatenated histogram produces this graph:



来源:https://stackoverflow.com/questions/30951480/how-to-concatenate-3-histograms-on-the-same-graph-in-matlab

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!