How to show histogram of RGB image in Matlab?

匿名 (未验证) 提交于 2019-12-03 01:52:01

问题:

I read an image in matlab using

input = imread ('sample.jpeg');

Then I do

imhist(input);

It gives this error:

??? 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{:});

After running size(input), I see my input image is of size 300x200x3. I know the third dimension is for color channel, but is there any way to show histogram of this? Thanks.

回答1:

imhist displays a histogram of a grayscale or binary images. Use rgb2gray on the image, or use imhist(input(:,:,1)) to see one of the channel at a time (red in this example).

Alternatively you can do this:

hist(reshape(input,[],3),1:max(input(:)));  colormap([1 0 0; 0 1 0; 0 0 1]);

to show the 3 channels simultaneously...



回答2:

I pefere to plot the histogram for Red, Green and Blue in one plot:

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


回答3:

An histogarm plot will have number of pixels for the intensity levels. Yours is an rgb image. So you first need to convert it to an intensity image.

The code here will be:

input = imread ('sample.jpeg');  input=rgb2gray(input);  imhist(input);  imshow(input);

You will be able to get the histogram of the image.



回答4:

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

Remember to include mat2gray(); because it converts the matrix A to the intensity image grayImg. The returned matrix grayImg contains values in the range 0.0 (black) to 1.0 (full intensity or white).



回答5:

Histogram is useful to analyze pixel distribution in an image. Histogram plots number of pixel in an image with respect to intensity value.

img1=imread('image.jpg'); hist(img1);


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