0

Я работаю над разработкой системы CBIR, где я использую гистограмму HSV в качестве одной из моих функций. Для каждого изображения я хочу вычислить гистограмму, которая говорит n1 бункеров для оттенка, n2 для насыщения и n3 для значения. Я хочу вектор, который будет иметь размерность n1xn2xn3, имеющую все возможные комбинации этих бункеров. например: если я беру кортежи (8, 12, 3) для оттенков, насыщенности и значения соответственно, тогда я хочу вычислить вектор размером 8x12x3 = 288. В openCV у нас есть функция calcHist(), но я не смог найти аналогичную функцию в matlab. вот что я сделал3D гистограмма изображения HSV в Matlab, с разным номером. бункеров для каждого канала?

%roi1 is my region of interest, y1 is the vector 
y1=[imhist(roi1(:,:,1),8)' imhist(roi1(:,:,2),12)' imhist(roi1(:,:,3),3)']; 

но y1 будет 23 мерным, а не желаемые 288 одномерными. Пожалуйста, помогите мне в этом, если есть функция, похожая на calcHist() openCV, тогда предложите мне это.

+0

Почему бы не использовать 2D или 3D [гистограмму HSV] (http://stackoverflow.com/a/29286584/2521214) напрямую? – Spektre

ответ

0

То, что вы вычислили, представляет собой серию одномерных гистограмм, а не многомерную гистограмму. Например, imhist (roi1 (:,:, 1), 8) '- это подсчет только значений оттенков, игнорируя соответствующее насыщение или значение пикселя. На сайте Mathworks есть код для вычисления n-мерной гистограммы, которая должна предоставить то, что вы хотите: http://www.mathworks.com/matlabcentral/fileexchange/23897-n-dimensional-histogram

+0

спасибо, я пройду через него и посмотрю, работает ли он – user164013