Как найти сглаженную кривую, соединяющую множество точек (в открытом резюме)?

0

Я хочу удалить шум на кривой. То, что у меня есть как набор точек (std::vector<Point>). Это представляет собой кривую, но это шумно. Поэтому я хочу удалить шум и получить плавную кривую.

Я пробовал несколько вариантов, таких как полиномиальная кривая и cv::approxPolyDP. Но они не дают того, чего я хочу.

Теперь я хочу сгладить его, используя фильтрацию. Но в opencv функции предназначены для изображений (2D-сигналов). Итак, как я могу это сделать для 1D-сигнала?

  • 0
    Итак, вы используете структуру cv :: Point для 1D сигнала?
  • 0
    Фильтр Калмана?
Показать ещё 8 комментариев
Теги:
opencv
filtering
smoothing
convolution

1 ответ

2

Похоже, что вы хотите, как сглаживающий сплайн.

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

К сожалению, я не думаю, что это уже реализовано в OpenCV. Тем не менее, немного быстрого Googling оказалось, что Научная библиотека GNU включает поддержку базовых сглаживающих сплайнов, которые, похоже, будут делать то, что вы хотите.

  • 0
    Спасибо за предложение. Но я хочу сделать это только с помощью opencv.
  • 1
    @Optimus Есть ли какая-то конкретная причина ограничить себя OpenCV? Звучит так, как будто вас втягивает мышление «У меня есть молоток, так что все выглядит как гвоздь». Я бы посоветовал вам найти / использовать правильный инструмент для работы.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню