Matlab: гистограмма цветных пикселей объекта на основе значений оттенка - PullRequest
0 голосов
/ 03 февраля 2020

Я новичок в DIP, но мне нужно воспроизвести следующую гистограмму. enter image description here

Когда я использую простой код, приведенный ниже, он не может сгенерировать такую ​​же цифру!

img1 = imread('013.png');  
figure(1), imshow(img1)
img_hsv = rgb2hsv(img1);
imhist(img_hsv(:,:,1))

Вот исходное изображение

enter image description here

и сегментированное изображение желтого шара.

enter image description here

Редактировать после ОТВЕТ Равитеи Нарры:

Но когда я использую подобный код в Matlab, я получаю следующий рисунок

img1 = imread('img.png');  
img_hsv = rgb2hsv(img1);
hue_img = img_hsv(:,:,1)
array = hue_img(find(hue_img > 0.1))
hist(array, 20)

Мои значения оттенков находятся в диапазоне 0.11-0.17, и кажется, что ящики моей гистограммы являются зеркальными версиями сюжета Равитежи! В чем причина этого странного заговора?

enter image description here

1 Ответ

2 голосов
/ 03 февраля 2020

Проблема здесь заключается в том, что почти все пиксели на изображении имеют значение оттенка 0. Таким образом, гистограмма доминирует над этим. Таким образом, результат выглядит так, как будто он имеет большой всплеск в 0. Чтобы увидеть ожидаемую гистограмму, создайте новый массив, удалив 0 значений из исходного hue_img. Это покажет гауссово распределение. Вот код python для этого.

img = cv2.imread(r"\img.png") 
rgb_img = img 
hsv_img = rgb2hsv(rgb_img) 
hue_img = hsv_img[:, :, 0] 
array = hue_img[np.where(hue_img > 0.1)] 
plt.hist(array,bins=100)

Изображение будет выглядеть так. enter image description here

...