Насколько я понимаю, нужно:
1. Найти точки излома линии
2. Подавить шумы
3. Получить компактное и точное представление линии.
Не вполне ясно, что дано в задаче. Предположим, что задана последовательность точек

, где

– номер точки в последовательности.
Для обнаружения точек излома линии нужно для каждой точки построить «касательные» «до» и «после» текущей точки. Если угол между касательными больше заданного порога, то имеет место точка излома. Технически можно использовать довольно значительные окрестности «до» и «после» текущей точки, касательные находить методом наименьших квадратов. Вычисление в каждой точке даст функцию угла между касательными «до» и «после» в зависимости от номера точки. Экстремумы и будут точками излома (конец одной плавной линии и начало другой).
Для подавления шума можно воспользоваться аппроксимацией в окрестности данной точки

полиномом 3-ей степени. Т.е. получаем полином в окрестности, находим незашумленные значение в данной точке. Такой метод удаляет шумы практически идеально, форма линии не искажается.
Для аппроксимации между точками излома можно воспользоваться ломанной. Небольшая модернизация данной схемы даст возможность аппроксимации сплайном (см. также выше аппроксимации в окрестности для получения производных). Нужно придумать критерий, которым должна отвечать ломанная. Например, он может включать в себя:
1. предел расстояния среднего точек (данных) до аппроксимирующего отрезка
2. предел среднеквадратическое отклонение точек до отрезка
3. предел угла между касательными в точках и прямой отрезка ломанной.
Имея критерий, можно постепенно увеличивать количество точек в ломанной, пока не будут выполнены условия критерия для всех отрезков ломанной.
Схема без гарантии правильности, так сказать FYI. Есть над чем подумать на краях линии и в окрестностях точек излома, и т.д. Как кажется на первый взгляд, при правильной организации вычислений, затыка по производительности и памяти быть не должно.