Я пытаюсь сделать своего рода гистограмму hsv, преобразовывая значения rgb изображения (80 * 120). Это код:Подозреваемый за пределами октавы
function Image_histogram = hsvHistogram(path, count_bins)
Image = double(imread(path));
Image_histogram = zeros(3 * count_bins);
[n m] = size(Image);
H_vect = zeros(n, m);
S_vect = zeros(n, m);
V_vect = zeros(n, m);
hue_vect = zeros(1, count_bins);
saturation_vect = zeros(1, count_bins);
value_vect = zeros(1, count_bins);
for line = 1 : n
for row = 1 : m
%[H_vect(line, row), S_vect(line, row), V_vect(line, row)] = rgb2hsv(Image(line, row, 1), Image(line, row, 2), Image(line, row, 3));
endfor
endfor
number = 100/count_bins;
for count = 0 : count_bins - 1
left = (number * count);
right = (number * count + number);
hue_vect(1, count + 1) = (sum(sum(H_vect(:,:) >= left & H_vect(:,:) < right)));
saturation_vect(1, count + 1) = (sum(sum(S_vect(:,:) >= left & S_vect(:,:) < right)));
value_vect(1, count + 1) = (sum(sum(V_vect(:,:) >= left & V_vect(:,:) < right)));
endfor
Image_histogram = horzcat(hue_vect, saturation_vect, value_vect);
endfunction
Когда я пытаюсь получить матрицу HSV я всегда получаю ошибку: hsvHistogram: A(I,J,...): index to dimension 2 out of bounds; value 121 out of bound 120
rgb2hsv является пиксель конвертером пикселей. Он преобразует R G B в H S V. Это не встроенная функция rgb2hsv. Прокомментированная строка, похоже, имеет проблемы.
Если прокомментированная строка - это строка, которая выдает ошибку, учитывая, что такая строка содержит ваш 'rgb2hsv()', вы должны также прикрепить код для таких функций. В противном случае мы не сможем. Видимо, внутри этой функции что-то не так. – Alessiox
Функция rgb2hsv описана здесь http://www.rapidtables.com/convert/color/rgb-to-hsv.htm. Единственное различие заключается в том, что у меня есть H S V в интервале [0,100]. H = (H/360) * 100, S = (дельта/Cmax) * 100, V = Cmax * 100 – RobertD