Как уменьшить количество точек на кривой при сохранении ее общей формы?

У меня есть список точек, которые образуют кривую, и я хотел бы уменьшить количество точек, но при этом сохранить общую форму кривой.

В принципе, я хочу перейти от этого:

К этому:

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