eval_bspline_surface — 3D freeform op

• 데이터 종류: bspline_surface × image2d × image2d → image2d

• 호출: import fullseye as fs; fs.ledger.eval_bspline_surface(tck, x, y, grid=False)(구현을 직접 호출하려면 import bspline_surf; bspline_surf.eval_bspline_surface(tck, x, y, grid=False), 원장에서 가져오려면 ops3d.get("eval_bspline_surface"))

사용법

적합된 곡면 tck 를 평가(bisplev). 산포점(기본) 또는 격자의 두 모드.

Parameters

tck : list

fit_bspline_surface가 반환한 [tx, ty, c, kx, ky].

x, y : array_like

grid=False(기본값): 같은 shape의 산포/대응점. 각 (x[i], y[i])에서 평가하여

입력과 같은 shape의 z를 반환한다(계측=각 샘플 위치에서의 곡면 높이).

grid=True: x, y를 오름차순의 1차원 축으로 다루고, 텐서 격자

(len(x), len(y)) 위에서 평가(조밀한 시각화·재샘플링용).

grid : bool

평가 모드. 곡면 잔차 등 점 대응 비교에는 False.

Returns

z : numpy.ndarray

grid=False면 x와 같은 shape, grid=True면 (len(x), len(y)).

Raises

ValueError

tck가 곡면 모델([tx,ty,c,kx,ky])이 아닌 경우(곡선 tck / 다항식 dict 포함),

또는 x, y의 shape 불일치·빈 입력.

보충:

• grid=True에서는 x, y를 내부에서 오름차순으로 정렬해 bisplev를 호출하고, 결과를 입력의 순서로 되돌려 반환한다. 따라서 out[i, j]는 항상 (x[i], y[j])의 값이며, 축을 내림차순으로 넘겨도 깨지지 않는다.

• grid=False는 점마다 bisplev를 호출하는 Python 루프이므로 점 수에 비례해 느리다. 대량의 점 평가는 가능하면 grid=True로 돌린다.

• 절점 범위(피팅에 사용한 x, y의 범위) 바깥은 외삽이 되며, 그 값은 보장하지 않는다.

• 반환값은 float64. grid=False면 x와 같은 shape(스칼라를 넘기면 0차원 배열).

• 전형: fit_bspline_surface → 이 op(재샘플링·시각화). 잔차 평가는 surface_residual이 내부에서 이것을 호출한다.

참고(샘플 데이터·문헌)

• 샘플 데이터 카탈로그(DL URL / 라이선스) —— 2-D 는 skimage.data(BSD/public)+ 합성, 3-D 는 실데이터 소스(Stanford/PDS 등)의 DL URL.

• 연산자의 내력·참고문헌 —— 이 연산자 족의 바탕이 된 연구/기법의 출처.

실행 가능한 예제(이 연산자를 실제로 호출하는 검증된 샘플)

• bspline_freeform — py -3.11 examples_3d/bspline_freeform.py

타입이 이어지는 다음 연산자(image2d 를 입력으로 받는 것)

fuse_to_voxel · fit_poly_surface · eval_poly_surface · surface_form_error · background_flatten · polar_unwrap · fit_zernike · matcap_shade

같은 카테고리(freeform)

fit_bspline_surface · surface_residual · fit_bspline_curve · eval_bspline_curve


*Provenance: bspline_surf.py — 3D 연산자 레지스트리. 이 op 노트는 tools/opdocs.py md 가 자동 생성합니다(직접 편집하지 마세요).*

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.