У меня есть простое приложение, которое я хочу представить пользователю обводку (произвольный, но, вероятно, довольно простой двухмерный изогнутый контур) на экране и попросить пользователя повторить его, снова одним штрихом. Я хотел бы измерить точность, с которой пользователь воспроизводит удар.
Моя первая попытка воспроизвести эту функцию с помощью cv :: matchShapes для сравнения вектора точек исходной кривой с вектором нарисованной кривой правильно оценивает сходство формы, но на самом деле она слишком устойчива. Я хочу, чтобы пользователи копировали обводку на месте, а не рисовали ее в произвольной позиции / масштабе на экране.
Чтобы быть понятным,
Я понимаю, что это противоположность большинству компьютерного зрения, когда вы пытаетесь точно сопоставить произвольный ввод. В этом случае я хочу оценить правильность ввода для очень точной цели. Кто-нибудь может предложить лучший подход? Я новичок в компьютерном зрении, хотя и опыт работы с графикой в целом, поэтому прошу прощения, если это тривиально.
Хороший выбор Соответствие фаски. Это достаточно надежный, но не инвариантный к преобразованиям, как вам требуется. Входные данные представляют собой набор точек, поэтому не имеет значения, является ли это замкнутой кривой или нет, и направление хода также не имеет значения.
Хотя это очень стандартный метод, я не нашел статью в Википедии; этот это лучший источник, который я нашел, хотя на самом деле обсуждается расширенный метод.
Это должно быть в OpenCV, но опять же я не нашел никакой документации, только этот образец. Но в любом случае, если у вас есть реализация преобразование расстояния, это просто написать самому.
Вот это оригинальная публикация, для справки.
Других решений пока нет …