Я пытаюсь реализовать метод Sauvola & Pietaksinen для выполнения бинаризации изображения с помощью локального порогового значения.
Метод определяет порог каждого пикселя (x,y) как T(x,y) = mean(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(image,[])
)? Я согласен с @Andy. Вы не должны перезаписывать имена функций (например, изображения). - person kkuilla   schedule 20.10.2014