2016-10-08 2 views
1

Dotted imageДетектирование центра и площади фигур в изображении

Я работаю с библиотекой GD, и я ищу способ, чтобы обнаружить ближайший пиксель среднего центра форм, а также общую площадь используемого каждой формой в монохромном черно-белом изображении.

У меня с трудом возникает эффективный алгоритм для этого. Если вы сделали что-то подобное в прошлом, я был бы благодарен за любое решение, которое поможет.

ответ

1

Заканчивать двоичную библиотеку изображений

По существу, порог Оцу, чтобы отделить передний план от фона, а затем маркировать компоненты связности. Это изображение выглядит очень чистым, но вам может потребоваться преобразовать ops, чтобы немного почистить его и избавиться от небольших отверстий и других артефактов.

Тогда у вас есть область тривиально (количество пикселей в компоненте) или почти как тривиально (используйте функцию взвешенной области, которая наказывает краевые пиксели). Центр - это просто средство.

http://malcolmmclean.github.io/binaryimagelibrary/

1

@MalcolmMcLean правильно, но есть остальные трудности (если вы после максимальной точности).

Если у вас порог с Otsu, есть несколько пар точек «поцелуев», которые образуют единый blob, используя компонентный анализ компонентов.

Кроме того, Otsu threshoding будет отбрасывать некоторые частично заполненные пиксели края, чтобы средневзвешенные значения были неточными. Лечением могло бы стать увеличение порога (возможно до 254), но это ухудшает проблему поцелуев.

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

Возможна также раскачка Боба с помощью преобразования водораздела, но для обработки общих пикселей требуется больше внимания. Я сомневаюсь, что решение префекта возможно.


Альтернативой является использование обнаружения подпиксель края и наименьших квадратов окружности фитинга (после обнаружения двоичных объектов с очень низким порогом для разделения точек). Избегая краевых пикселей, общих для двух кругов, вы, вероятно, можете добиться отличных результатов.

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