-
[B-Spline] gsl라이브러리/knot vector/clamped spline 스플라인 삽질Computer Vision & AI/Computer Vision 2022. 8. 10. 22:43
🔗사용한 라이브러리는 GSL
Basis Splines — GSL 2.7 documentation (gnu.org)
🎉사용방법
workspace만들기
workspace *gsl_bspline_alloc(k, nbreak) //computing을 위해 작업공간 할당
gsl_bspline_knots(*breakpts, *workspace) //주어진 중단점과 관련, 매듭벡터 구성
gsl_bspline_uniform(a,b,*workspace) //균일한 간격의 중단점을 가짐, nbreak만큼 매듭 벡터 구성
gsl_bspline_eval(x, *B, *w)
위 사이트 예제가 잘 나와있으니 참고바랍니다.,
💚B-Spline이란?
Basis spline
Curve Fitting의 방법중 하나
일반 spline은 모든 데이터를 통과함. 그러나 B-spline은 통과하지 않는다
시작점, 끝점만 통과하는 B-spline을 Clamped B-spline이라고 한다.
📌각종 파라미터, 용어
⏩제어점(control point) : 곡선의 모습을 제어, Cp - Cp 사이 = Segment
⏩Spline : 구간별 다항식 (Piecewise Polynomials)
→종류
Interpolating Spline : 제어점 통과
Approximation Spline : 통과 x / 경우에 따라 첫 점, 마지막 점은 통과
⏩연속성(Continuity) : Smoothness 정도
불연속 / C0 / C1 / G1 / C2 (가장 부드러움)
B-Spline은 C2연속성 보장
⏩Knot(매듭) : t = i 일 때의 "곡선 상"의 점
⏩Knot Vector : 연속된 knot 값의 집합, 제어점에 추가로 곡선에 대한 제어를 강화
- periodic knot : 시작, 종료점 지나지x
- non periodic knot : 시작, 종료점 지남 (=clamped b-spline)
⏩breakpoints : endpoints of each interval
ㄴ------(converted)----------->knots
🔗js example, clamped b-spline
(정말 좋은 예시...내가 원하던 것이었는데 하필 자바스크립트 코드였다.ㅎc++는 없나요?)
thibauts/b-spline: B-spline interpolation (github.com)
🔗참고자료
(Spline, Bezier, B-Spline) (utexas.edu)
Non-uniform rational B-spline - Wikipedia
➕설명이 잘 나와있는 링크 추가
'Computer Vision & AI > Computer Vision' 카테고리의 다른 글
clamped B spline 참고 문서 정리 2 (0) 2022.11.22 [MediaInfo] 비디오 파일(영상 파일)의 GOP 확인하기 (+팟플레이어) (0) 2022.10.27 ffmpeg으로 동영상 이어붙이기, 사이즈 바꾸기, 프레임 추출, 프레임으로 영상만들기, 코덱 변경, 영상에 프레임넘버 출력하기 (계속 추가중) (0) 2022.05.24 LUT (Look up table) 정리 + 예시코드 모음 (0) 2022.05.17 OpenCV imread, pixel 접근 기초 정리 (0) 2022.05.16