Есть ли какой-то известный алгоритм, который превращает пользовательские чертежи в сглаженные фигуры?

Мои требования: Пользователь должен иметь возможность рисовать что-то вручную. Затем, когда он снимает перо (или палец), алгоритм сглаживает и преобразует его в некоторые основные формы.

enter image description here

Чтобы начать работу, я хочу преобразовать чертеж в прямоугольник, который как можно больше напоминает оригинал. (Естественно, это не сработает, если пользователь намеренно рисует что-то еще.) Сейчас я вычисляю среднюю позицию x и y, и я различаю горизонтальную и вертикальную линии. Но это еще не прямоугольник, а какие-то ортогональные линии.

Я задавался вопросом, есть ли для этого какой-то известный алгоритм, потому что я видел его несколько раз в некоторых приложениях с сенсорным экраном. У вас есть подсказка для чтения?

Обновление: Возможно, алгоритм распознавания образов поможет мне. Есть некоторые телефоны, которые просят пользователя нарисовать шаблон, чтобы разблокировать его.

P.S.: Я думаю, что этот вопрос не связан с конкретным языком программирования, но если вам интересно, я создам веб-приложение с RaphaelGWT.

Ответ 1

Алгоритм Douglas-Peucker используется в географии (например, для упрощения GPS-трека). Думаю, он также может быть использован здесь.

Ответ 2

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

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