Я бы, вероятно, применил алгоритм "наименьших квадратов", чтобы получить линию наилучшего соответствия. Затем вы можете пройти через свои точки и отфильтровать последовательные точки, лежащие рядом с линией. Вам нужно только построить выбросы и точки, которые возвращают кривую к линии наилучшего соответствия.
Редактировать: Возможно, вам не нужно использовать «наименьших квадратов»; если ожидается, что ваш ввод будет колебаться вокруг "y = ax + b", как вы говорите, то это уже ваша линия наилучшего соответствия, и вы можете просто использовать ее. :)