2017-02-18 5 views
3

노이즈가있는 2 차원 데이터에 알려진 끝점 (p0 및 p3)이있는 베 지어 곡선에 맞추고 싶습니다. 이것은 전통적인 4 포인트 베 지어 커브 피팅보다 쉬운 문제인 것처럼 보이지만 나도 알아 내기가 너무 어렵습니다.알려진 끝점을 사용한 베 지어 커브 피팅

누군가 제어 포인트 p1과 p2에 대한 최상의 값을 찾기 위해 기존 코드 나 알고리즘을 가리킬 수 있습니까?

Bezier curve fitting

편집 : 나는 베 지어 곡선에 맞게 노력하고있어 포인트 (페인트에서 브러시로 뭔가를 그리기 상상이있을 수 있습니다 마우스로 그린 곡선에서 유래 기록 된 지점의 수백 하나의 긴 스트로크). 앵커 포인트 p0 및 p3은 미리 생성되지만 마우스로 스케치 된 곡선의 모양에 베 지어가 맞도록 제어점 p1 및 p2를 계산해야합니다.

답변

2

내가 찾고있는 정확한 것을 계산하는 알고리즘을 설명하는 "M.Khan"에 의해 "Approximation of data using cubic Bezier curve least square fitting"이라는 종이가 나타났다.

자바 스크립트로 구현하기가 쉽습니다. 그것은 꽤 잘 작동하고 빠르지 만 결과 베 지어 곡선은 완벽하지 않습니다. 내 코드의 버그 일 수 있지만 더 나은 곡선은 데이터 bezier curve creation에 더 잘 맞도록 베 지어 곡선에서 일치하는 점을 반복적으로 조정하여 얻을 수 있다고 생각됩니다.

편집 : newton-raphson을 사용하여 베 지어 곡선의 개별 t 값을 최적화 할 수 있습니다. 이렇게하면 커브가 잘 맞지 않고, 교차하지 않는 점이 몇 개 밖에없는 커브에 대해 최소한의 테스트를 거쳐야합니다. Newton step optimization of bezier t-values

+0

대신 catmull-rom 스플라인을 사용하지 않는 이유는 무엇입니까? 여전히 큐빅 폴리 베 지어 (qube polybezier)가 있지만, "그 (것)들의 주위에"의 대신에 * through * 점,. –

+0

아이디어는 베 지어 곡선에 의존하는 벡터 드로잉 소프트웨어에서이를 사용하여이 경우 스플라인이 작동하지 않게하는 것이 었습니다. 이 경우를 제외하고 – filip

+0

: Catmull rome spines는 cubic poly-Bezier와 같습니다 (각 CR 섹션은 베 지어를 수학으로 표현할 수있는 것과 유사하게 CR 스플라인 또는 큐빅 베 지어 곡선으로 표현 될 수있는 허 마이트 스플라인입니다. 함수, 또는 보간 순서와 같은 것, 똑같은 것, 다른 것, 동등한 것, 표현식), 일단 CR 스플라인을 가지면 좌표를 명시적인 3 차 베 지어의 시퀀스로 변환합니다 (http : //pomax.github .io/bezierinfo/# catmullconv) (변환 규칙에 대한 섹션 끝으로 스크롤) –