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

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

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

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

0

Решение

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

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

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

2

Другие решения

Других решений пока нет …