У меня возникли проблемы с созданием гистограммы значений интенсивности из изображения в оттенках серого. Ниже приведен код, который я использую для создания ящиков для сюжета, который я хочу создать. Код работает отлично для каждого бина, за исключением последних двух. По какой-то причине, если интенсивность составляет 254 или 255, она помещает оба значения в ячейку 254, и никакие значения не накапливаются в бункере 255.Странное поведение с массивом Matlab
bins= zeros(1,256);
[x,y]=size(grayImg);
for i = 1:x
for j = 1:y
current = grayImg(i,j);
bins(current+1) = bins(current+1) + 1;
end
end
plot(bins);
Я не понимаю, почему такое поведение происходит. Я распечатал подсчет 254 интенсивностей и 255 интенсивностей, и они оба правильны. Однако при использовании вышеуказанного кода для накопления значений интенсивности он работает неправильно.
Edit: Добавлено изображение я использую, неправильный график (один я получаю с выше кодом) и правильный
Спасибо за ответ, я пробовал использовать бит = нули (1,256), но это не помогло. Однако я знаю и о функциях гистограммы, но я пытаюсь создать график, не используя встроенные функции. – EricF
Какой формат 'grayImg'? если это uint8, попробуйте преобразовать его в double, с функцией 'double'. – Adiel
Да, это блок 8. Благодаря вашему ответу я действительно понял это. Я должен был преобразовать в int16, потому что 8-битное число не может иметь значение 256, которое я пытаюсь сделать. – EricF