reconstruct — SHAPE2D descriptor op

• 데이터 종류: efdmodel → pairs

• 호출: import fullseye as fs; fs.ledger.reconstruct(model, n_points=300, n_harmonics=None)(구현을 직접 호출하려면 import fourierdesc; fourierdesc.reconstruct(model, n_points=300, n_harmonics=None), 원장에서 가져오려면 opsshape2d.get("reconstruct"))

사용법

EFD 계수로부터 윤곽을 재구성한다((M,2)).

n_harmonics 를 계수 수보다 작게 하면 고조파를 잘라 평활화된다(저차만 남길수록 둥글어진다).

식: t = linspace(0, 1, n_points, endpoint=False) 에 대해 x(t) = a0 + Σ a_n cos(2πnt) + b_n sin(2πnt), y(t) = c0 + Σ c_n cos(2πnt) + d_n sin(2πnt)(n = 1..N).

• model: elliptic_fourier 의 반환값(coeffs (N, 4), a0, c0). normalize 를 거친 계수를 넘기면 정준 자세(제 1 고조파로 정렬)의 윤곽이나온다. dict 의 검증은 하지 않는다(키 누락은 KeyError).

• n_points: 출력 점 수 M(int 로 자른다). 등매개변수 간격이며, 호 길이등간격이 아니다. endpoint=False 이므로 끝 점은 첫 점과 일치하지 않는다 (닫힌 다각형으로 하려면 첫 점을 끝에 더한다). 0 이면 빈 (0, 2).

• n_harmonics: 쓰는 고조파 수. None 이면 전부, N 보다 큰 값은 N 으로잘라 내고, 0 이하면 DC 만(전 점이 중심 (a0, c0)).

• 반환값: (M, 2) float64. 좌표의 나열((x, y) 인지 (row, col) 인지)은 elliptic_fourier 에 넘긴 나열을 그대로 이어받는다. t = 0 은 원래 윤곽의시작점에 대응한다.

윤곽을 계수화하지 않고 매끄럽게만 하려면 fourier_smooth. 계수끼리의비교는 invariants / descriptor_distance.

자세한 사용 가이드

• shape_description_2d 패밀리 가이드

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

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

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

• 알고리즘의 정전(저자·연도)과 용도는 위의 패밀리 사용 가이드에 적혀 있습니다.

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

• contour_fourier — py -3.11 examples/contour_fourier.py

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

elliptic_fourier · fourier_smooth · contour_fourier_complex · add_frame_corners · warp_tps_image · warp_piecewise_affine · morph · morph_sequence

같은 카테고리(descriptor)

elliptic_fourier · invariants · normalize · descriptor_distance · fourier_smooth · from_xld · contour_fourier_complex · contour_epicycle_chain


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

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