Гистограмма 3D HSV изображения в Matlab, с другой нет. бинов для каждого канала?
Я работаю над разработкой системы CBIR, в которой я использую гистограмму HSV в качестве одной из своих функций. Для каждого изображения я хочу вычислить гистограмму, которая имеет n1 бин для оттенка, n2 для насыщенности и n3 для значения. Я хочу вектор, который будет n1xn2xn3, имеющий все возможные комбинации этих бинов. Например: если я беру кортежи (8, 12, 3) для оттенка, насыщенности и значения соответственно, то я хочу вычислить вектор размером 8x12x3=288. В openCV у нас есть calcHist()
функция, чтобы сделать это, но мне не удалось найти аналогичную функцию в 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 тогда предложите мне так.
1 ответ
То, что вы вычислили, является серией одномерных гистограмм, а не многомерной гистограммой. Например, imhist(roi1(:,:,1),8)'- это счетчик только значений оттенка, игнорируя соответствующую насыщенность или значение пикселя. На сайте Mathworks есть код для вычисления n-мерной гистограммы, который должен предоставить то, что вам нужно: http://www.mathworks.com/matlabcentral/fileexchange/23897-n-dimensional-histogram