The Beautiful Future
B-spline 본문
인터폴레이션 정리 잘 된 싸이트
http://paulbourke.net/miscellaneous/interpolation/
책
Hughes/Computer Graphics
예전부터 B-spline을 이해하려 했지만 명쾌하게 정리해 놓은 곳을 못 찾았다.
내가 말하는 명쾌함이란 수학적 정리와 더불어 직관적인 이해가 설명되는 것이다.
그나마 가장 잘 정리되는 곳이 Wolfram MathWorld인 것 같다.
http://mathworld.wolfram.com/B-Spline.html
B-spline을 공부하면서 가장 이해하기 어려웠던 부분은 knot에 대한 개념이었다.
내가 이해한 knot은 곡선의 시작과 끝을 0부터 1까지라고 볼때, 곡선을 나누눈 지점이다.
고로 knot은 0부터 1사이의 값을 가진다.
knot 이 지점들은 control point의 영향력(가중치)을 계산 할때 쓰인다.
곡선의 어느 한 지점 t에서 좌표 값을 계산하려면 n개의 control point의 가중치합으로 계산하는데
이 가중치를 계산하는 function을 basis function이라하여 Basis spline 또는 B-spline이라 한다.
basis function의 인자로는 물론 우선 t 가 들어가고 현재 control point에 대한 i가 들어가며 몇개의 인접한
knot을 사용 할지에 대한 j가 인자로 들어간다.
가장 먼저 B-spline을 개념적으로 설명하자면 control point를
이용하여 곡선을 만들어 내는 것이다.
만들어진 곡선은 control point를 적확하게 지나가지 않는다.
곡선은 시작과 끝을 가지고 있고 시작을 0으로 볼수 있고 끝을 1로 생각할 수 있다.
그 곡선을 아래와 같이 매개변수가 t 인 C함수로 정의 할 수 있다.
곡선 위의 한 점 t에서 의 값을 결정하면 되는 것이다.
t 에서 값을 결정하려면 모든 control point의 영향력을 계산해하하는데
이 영향력을 결정하는 함수를 커널 function: 이라고 한다.
i 번째 컨트롤 포인트에 더해질 가중치를 결정하는 함수
j의 의미는 i로부터 j번째 떨어져있는 값까지 고려하겠다는 의미이다.
당연히 i로 부터 멀어질 수록 영향력이 떨어진다.
B-spline은 Basis spline의 줄임 말이다.
그리고 Bézier curve의 일반화된 버전이다.
knot, 낫이라고 발음, 라는 정의가 나오는데 이게 뭔고? 이해하기 어려웠다.
그리고 곡선을 조절하 수 있는 control point가 있다.
우선 control point가 n개있다고하자
그리고 knot이 m개 있고 0에서 1사이 값을 가진다고 하면
그리고 m > n 이다.
실제로 사용되는 knot은 p = m - n -1 개이다.
n차 spline은 변수 x에 대한 n-1차 piecewise polynomial 함수이다.
다항식 polynomial 의 일부분 piece는 knot으로 알려져있다.
knots: ...., t0, t1, t2,.....
'알고리즘' 카테고리의 다른 글
Triangulation (0) | 2022.02.10 |
---|---|
Simulating Pencils Drawing on Paper (0) | 2018.09.07 |
CRF (0) | 2017.09.07 |
Thine Plate Spline (0) | 2017.04.05 |
Bicubic Spline interpolation (0) | 2016.07.18 |