2014-10-20 1 views
0

Я пытаюсь реализовать метод 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 и не мог найти его до сих пор.

Может кто-нибудь, пожалуйста, дайте мне руку?

Заранее спасибо.

+0

Вы пытались масштабировать изображение ('imshow (изображения, [])')? Я согласен с @ Энди. Вы не должны перезаписывать имена функций (например, изображение). – kkuilla

ответ

2

Я не вижу проблемы. Вы действительно должны включить свой источник и, возможно, ваше входное изображение и параметр для n. Btw, вы не должны перезаписывать имена функций (например, изображение в вашем случае).

Входное изображение:

Lenna in

pkg load image 
img = imread ("lenna256.jpg"); 
k = 0.5; 
R = 128; 
n = 5; 
filtered = colfilt(img, [n n], "sliding", @(x) (mean(x).*(1+0.5*(std(x)/128 - 1)))); 
img(img < filtered) = 0; 
img(img >= filtered) = 255; 

image (img) 
imwrite (img, "lenna_out.png") 

, который создает

Lenna out

+0

Спасибо, что указали! В конце концов, я думаю, что это проблема с значениями параметров, особенно R. Я смог улучшить результаты, проигнорировав исходное предложение авторов и попробовав значения разными, поэтому это не проблема с кодом , Я отмечу это как исправленное. – gcolucci

Смежные вопросы