2011-11-02 2 views
19

커브를 만드는 점 목록이 있는데, 점의 수를 줄이고 싶지만 커브의 전체 모양은 그대로 유지하고 싶습니다.전체 모양을 유지하면서 곡선의 점 수를 줄이는 방법은 무엇입니까?

기본적으로,이로 가고 싶어 :

enter image description here

이 사람 :

enter image description here

그래서 알고리즘은 중복 지점을 제거하지만, 정말 정의하는 사람들을 보존 할 모양 (곡선의 맨 아래에있는 점처럼). 거기에 알려진 알고리즘이 있나요? 나는 거기에 있지만 Google에서 무엇을 검색해야할지 모르겠습니다. 어떤 도움을 주시면 감사하겠습니다.

+5

고려하지만, 우리는 일반적으로'정점 decimation'으로이 과정을 참조하십시오. 아마 당신의 인터넷 검색에 도움이 될 것입니다. –

답변

23

내가 당신을 위해 어떤 알고리즘이없는 Douglas–Peucker_algorithm

enter image description here

+0

고마워, 나는 큰 작품 더글러스 - Peucker 알고리즘을 사용하여 끝났다. –

+1

@ this.lau_이 알고리즘에 대한 구현을 공유해 주실 수 있습니까? – EmptyData

13

여기에는 몇 가지 알고리즘이 있습니다.

가장 간단한 방법은 인접한 점 사이의 각도가 180도에 가까운 점, 임계 값까지 또는 원하는 점 수에 도달 할 때까지 포인트를 제거하는 것입니다.

그림과 같이 커브가 부드러 우면 예를 들어 베 지어 곡선을 사용하면 더 좋은 근사값을 얻을 수 있습니다.

+0

고맙지 만 내 데이터가 예제처럼 깨끗하지 않기 때문에 첫 번째 제안이 저에게 효과적이지 않을 것이라고 생각합니다. 서로 매우 가까운 지점의 작은 클러 터가있을 수 있으며 각도에 관계없이 하나의 단일 지점으로 축소되어야합니다. 베 지어 곡선을 사용하면 단순화하는 대신 문제가 더 복잡해지고 렌더링 속도가 느려집니다. –

관련 문제