Задать вопрос
@Plant

Алгоритм поиска точки, максимально удалённой от границ фигуры на изображении?

Дано бинарное изображение.
На картинке нарисована произвольная фигура.
Нужно найти точку принадлежащую этой фигуре, максимально удалённую от границ фигуры или границ изображения.

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

Примером фигуры может быть круг на картинке, центр круга и будет нужной мне точкой.

Как лучше решить эту задачу и какой алгоритм применить?
  • Вопрос задан
  • 2497 просмотров
Подписаться 2 Оценить Комментировать
Ответ пользователя Alexander Movchan К ответам на вопрос (4)
@Alexander1705
Если фигура выпуклая, можно взять произвольную точку внутри, которую будем считать центром вписанной окружности, принять радиус равным нулю и применить следующий алгоритм:

1. Увеличить радиус на 1 условную единицу (пиксель).
2. Если окружность не пересекает фигуру, перейти к шагу 1.
3. Если возможно сдвинуть центр окружности на 1 условную единицу так, что окружность не будет пересекать фигуру, сдвинуть центр и перейти к шагу 1.

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

Алгоритм будет работать довольно медленно, но других вариантов я не знаю.

P.S. По сути, это всё равно, что надувать воздушный шарик внутри коробки. Сначала мы можем разместить его где угодно, но потом, надуваясь, он сам займёт верное положение.

P.P.S. Как альтернативный вариант, можно создать матрицу, в элемент M[i][j] которой записать расстояние от точки с координатами (i, j) до ближайшей точки фигуры. Потом просто найти максимальное в матрице.
Ответ написан
Комментировать