Обработка изображений - уменьшение толщины объекта без удаления - PullRequest
1 голос
/ 31 января 2012

У меня есть изображение, как показано ниже.

То, что я хочу, - это монохромное изображение, при котором белые части остаются белыми, а остальные - черными.Однако сложность заключается в том, что я также хочу уменьшить белые части до толщины в один пиксель.

Это вторая часть, с которой я застрял.
Моей первой мыслью было сделать простуюпорог, затем используйте своего рода итеративный процесс типа «Игра жизни», в котором белый пиксель был удален, если у него были соседи с одной стороны, а не с другой (т. е. это ребро), однако у меня есть ощущение, что это уменьшит концы линий доничего со временем, поэтому я получу пустое изображение.

Какой алгоритм я могу использовать, чтобы получить желаемое изображение, учитывая исходное изображение?

(Мой языквыбор C #, но все в порядке)


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

Original Image

Ответы [ 2 ]

2 голосов
/ 31 января 2012

После обнаружения морфологических расширенных максимумов данной высоты:

enter image description here

и затем прореживание дает:

enter image description here

Youтакже можно манипулировать параметром высоты или обрезать прореженное изображение.

Код в Mathematica:

img = ColorConvert[Import["http://i.stack.imgur.com/zPtl6.png"],  "Grayscale"];
max = MaxDetect[img, .55]
Thinning[max]

РЕДАКТИРОВАТЬ Я последовал собственному совету и высоту .4дает сегменты, которые более точно локализованы:

enter image description here

0 голосов
/ 31 января 2012

Я предлагаю вам взглянуть на двоичные морфологические преобразования, такие как эрозия и дилатация. Графические библиотеки, такие как OpenCV () http://opencv.willowgarage.com/wiki/ и этот статистический / матричный инструмент Gnu Octave http://octave.sourceforge.net/image/function/bwmorph.html поддерживают эти операции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...