alienworkshop
@alienworkshop

Как сравнить произвольные фигуры?

Выполняю задание, которое состоит в следующем:
есть эталонный круг определённого радиуса;
3 пользователя рисуют круг от руки, а программа должна определить, какой круг больше соответствует эталонному.

У каждого выйдет кругообразная произвольная фигура.
Как эти фигуры сравнить алгоритмически или математически?
  • Вопрос задан
  • 368 просмотров
Пригласить эксперта
Ответы на вопрос 3
evgenyspace
@evgenyspace
Исследователь
Вычислить среднее значение радиуса от 0 до 2 PI, среднеквадратичные отклонения от этого среднего. Можно еще и частоту отклонений включить в анализ, т. е. сколько раз нарисованный круг пересечет эталонный, средний (чем меньше, тем лучше).
Ответ написан
Комментировать
@Sumor
Прежде чем сравнивать нарисованные круги с эталонным, нужно определиться с мерой по которой вы будете сравнивать. Возможные варианты мер:
1. Радиус.
2. Площадь.
3. Расположение центра
Про расположение центра вам уже написали.
Площадь можно посчитать в точках, расположенных внутри нарисованной фигуры (Цикл по x и y - проверяете принадлежность точки нарисованной фигуре).
Для подсчёта радиуса нужно выбрать количество разбиений круга - 360, 100, 50 и подсчитать отклонение (линейное, квадратичное или любое подходящее) радиуса по указанным направлениям. В простейшем случае можно просто подсчитать максимальный и минимальный радиус нарисованного круга и сравнивать их.
Ответ написан
Комментировать
BigObfuscator
@BigObfuscator
Используйте контурный анализ.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы