Как показать гистограмму изображения RGB в Matlab?

image matlab histogram

67074 просмотра

5 ответа

Я читаю изображение в 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. Я знаю, что третье измерение предназначено для цветного канала, но есть ли способ показать гистограмму этого? Благодарю.

Автор: E_learner Источник Размещён: 12.11.2019 09:48

Ответы (5)


28 плюса

Решение

imhistотображает гистограмму градаций серого или двоичных изображений. Используйте rgb2grayна изображении или используйте, imhist(input(:,:,1))чтобы видеть один из каналов за один раз (красный в этом примере).

В качестве альтернативы вы можете сделать это:

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

показать 3 канала одновременно ...

Автор: bla Размещён: 04.02.2013 08:34

13 плюса

Я предпочитаю построить гистограмму для красного, зеленого и синего в одном графике:

%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');
Автор: Philipp Hofmann Размещён: 03.11.2014 06:21

5 плюса

График гистограммы будет иметь количество пикселей для уровней интенсивности. Ваше изображение RGB. Поэтому сначала вам нужно преобразовать его в изображение интенсивности.

Код здесь будет:

input = imread ('sample.jpeg');

input=rgb2gray(input);

imhist(input);

imshow(input);

Вы сможете получить гистограмму изображения.

Автор: angel Размещён: 24.05.2013 09:53

3 плюса

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 (); потому что он преобразует матрицу A в интенсивность изображения GrayImg. Возвращенная матрица grayImg содержит значения в диапазоне от 0,0 (черный) до 1,0 (полная интенсивность или белый).

Автор: Varun Parikh Размещён: 20.08.2013 01:10

0 плюса

Гистограмма полезна для анализа распределения пикселей в изображении. Гистограмма отображает количество пикселей в изображении относительно значения интенсивности.

img1=imread('image.jpg');
hist(img1);
Автор: vignesh Gk Размещён: 16.11.2013 10:44
Вопросы из категории :
32x32