The Beautiful Future

B-spline 본문

알고리즘

B-spline

Small Octopus 2018. 9. 5. 18:52

인터폴레이션 정리 잘 된 싸이트

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
Comments