Я хочу удалить шум в кривой. Что я имею в качестве набора баллов ( std::vector<Point>
). Это представляет кривую, но это шумно. Поэтому я хочу убрать шум и получить плавную кривую.
Я пробовал несколько вариантов, таких как подгонка полиномиальной кривой а также cv::approxPolyDP
, Но они не дают то, что я хочу.
Теперь я хочу сгладить его с помощью фильтрации. Но в opencv функции предназначены для изображений (2D-сигналов). Так как я могу сделать это для 1D сигнала, как это?
Похоже, что вы хотите, это как сглаживающий сплайн.
Сглаживающий сплайн — это метод сглаживания (подгонка гладкой кривой к ряду наблюдений с шумом) с использованием функции сплайна.
К сожалению, я не думаю, что это уже реализовано в OpenCV. Тем не менее, немного быстрого поиска в Google оказалось, что Научная библиотека GNU включает в себя поддержку сглаживающие сплайны, кажется, он будет делать то, что вы хотите.
Других решений пока нет …