Я пытаюсь реализовать метод Pietaksinen Sauvola & Pietaksinen для выполнения бинаризации изображения через локальное пороговое значение.Ошибка при реализации локального порогового значения в октаве
Метод определяет порог каждого пикселя (x, y) как T (x, y) = средний (x, y) * [1 + k (std (x, y)/R-1)], как в арктической «бинаризации адаптивного документооборота». Среднее и стандартное отклонение вычисляются в окрестности (x, y). k и R считаются равными 0,5 и 128 соответственно.
Это то, что мой код выглядит следующим образом:
filtered = colfilt(image, [n n], "sliding", @(x) (mean(x).*(1+0.5*(std(x)/128 - 1))));
image(image < filtered) = 0;
image(image >= filtered) = 255;
Однако для всех изображений, которые я испытал, то результат будет совершенно пустым образом, который, очевидно, неверно. Я думаю, что я должен злоупотреблять каким-либо элементом в функции colfilt, но я слишком новичок в Octave и не мог найти его до сих пор.
Может кто-нибудь, пожалуйста, дайте мне руку?
Заранее спасибо.
Вы пытались масштабировать изображение ('imshow (изображения, [])')? Я согласен с @ Энди. Вы не должны перезаписывать имена функций (например, изображение). – kkuilla