Как показать гистограмму изображения RGB в Matlab?
Я прочитал изображение в Matlab, используя
input = imread ('sample.jpeg');
Тогда я делаю
imhist(input);
Он дает эту ошибку:
??? 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{:});
После запуска size(input)
я вижу, что мое входное изображение имеет размер 300x200x3
. Я знаю, что третье измерение относится к цветному каналу, но есть ли способ показать гистограмму этого? Благодарю.
Ответы
Ответ 1
imhist
отображает гистограмму полутоновых или двоичных изображений. Используйте rgb2gray
на изображении или используйте imhist(input(:,:,1))
для просмотра одного из каналов за раз (красный в этом примере).
В качестве альтернативы вы можете сделать это:
hist(reshape(input,[],3),1:max(input(:)));
colormap([1 0 0; 0 1 0; 0 0 1]);
чтобы одновременно показывать 3 канала...
Ответ 2
Я собираюсь построить гистограмму для красного, зеленого и синего на одном графике:
%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
График гистограмм будет иметь количество пикселей для уровней интенсивности.
Ваш образ rgb. Поэтому вам сначала нужно преобразовать его в изображение интенсивности.
Код здесь будет:
input = imread ('sample.jpeg');
input=rgb2gray(input);
imhist(input);
imshow(input);
Вы сможете получить гистограмму изображения.
Ответ 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');
Не забудьте включить mat2gray();
потому что он преобразует матрицу А в изображение интенсивности grayImg. Возвращенная матрица grayImg содержит значения в диапазоне 0,0 (черный) до 1,0 (полная интенсивность или белый).
Ответ 5
Гистограмма полезна для анализа распределения пикселей в изображении. Гистограмма отображает число пикселей в изображении относительно значения интенсивности.
img1=imread('image.jpg');
hist(img1);