2014-11-02 3 views
0

Я реализовал морфологическую скелетонизацию, чтобы получить скелет цифр из изображений. Существует 8 структурных элементов, которые можно сравнить с окрестностью пикселя. Если какое-либо условие равно true, пиксель переднего плана удаляется. Это повторяется до тех пор, пока пиксели не будут удалены, выход будет скелетом ввода.Морфологический скелет выглядит странно

Выходные данные из моих реализаций выглядят нормально, но не выглядят так же хорошо, как вывод функции Matlab bwmorph. На моем выходе есть несколько строк, которые я хотел бы удалить. Посмотрите на две фотографии, которые я связал с этим сообщением. Версия Matlab выглядит «яснее» для меня, чем моя версия.

Я слышал об «обрезке», чтобы избавиться от этих маленьких линий. Но эти алгоритмы выглядят довольно сложными. Есть ли простой способ избавиться от этих строк? Или есть встроенная функция Matlab для удаления этих строк?

Фото:

Моя собственная реализация: http://oi58.tinypic.com/104ktwz.jpg

Matlab: http://oi61.tinypic.com/2mjmf9.jpg

+0

Почему вы не используете 'bwmorph'? – Shai

+0

мы должны реализовать наши собственные версии (чтобы получить более глубокое понимание) для курса обработки изображений – Harry

ответ

0

Да, конечно, MatLab использует обрезку после вычисления скелета. Но алгоритм обрезки (по крайней мере, большинство из них) работает точно так же, как алгоритм скелета: простая маска для применения.

+2

Я решил проблему простым алгоритмом «обрезки». Как вы уже упоминали, он работает так же, как алгоритм скелета. Разница в том, что вы должны указать, сколько итераций должно быть выполнено. Если вы не ограничиваете эти итерации, все исчезает, и вы просто получаете черное изображение ;-) Но в моем случае 3 итерации сделали работу очень хорошо. Обрезка: http://homepages.inf.ed.ac.uk/rbf/HIPR2/thin.htm – Harry

+0

Я предполагаю, что MatLab делает небольшое статистическое исследование длины ветвей и соответственно соответственно исчисляет количество итераций. – FiReTiTi

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