Как я могу преобразовать набор точек, которые (мы можем предположить) создать линию из сегментов (Верхнее изображение) к векторной линии (Нижнее изображение)?
Есть ли какой-нибудь алгоритм для этого? Предпочтительно C ++, но даже псевдокод будет в порядке.
Вот как я бы подошел к этому:
Создать контур / контур растрового изображения
Используйте эти точки как векторный контур / контур
Разделите точки пополам, чтобы у вас была линия, описывающая верхний край, и линия, описывающая нижний край исходного контура.
Возьмите нижнюю линию (или верхнюю линию) и используйте алгоритм упрощения линий (например, Reumann-Witkam или Douglas-Peucker), чтобы получить упрощенную векторную линию
Определите, на сколько нужно сместить линию, чтобы она была примерно по центру между двумя исходными половинами контура.
Это должно дать вам разумные результаты без особых вычислительных сложностей.
Других решений пока нет …