descriptor op• 데이터 종류: pairs → matrix
• 호출: import fullseye as fs; fs.ledger.contour_fourier_complex(points, n_harmonics=None, parametrisation='index')(구현을 직접 호출하려면 import fourierdesc; fourierdesc.contour_fourier_complex(points, n_harmonics=None, parametrisation='index'), 원장에서 가져오려면 opsshape2d.get("contour_fourier_complex"))
• GPU: 없음(CPU 참조 구현만)
닫힌 윤곽을 복소 푸리에 급수의 계수로 만든다 —— z(t) = Σ c_k exp(2πi k t).
인수:
points: (N,2)의 폐쇄 윤곽 정점. (row, col) 순서(fourierdesc 와 동일).
n_harmonics: 남겨두는 차수 K(|k| <= K). None이라면 표현할 수있는 상한까지.
parametrisation :"index" = 점의 첨자를 등 간격 매개 변수로 만듭니다 /
"arclength" = 호 길이로 등간격으로 다시 시작한 다음 변환합니다.
반환값: 통상 (2K+1, 3), 짝수점으로 Nyquist 차수까지 남길 때는 (2K, 3)의 실제 배열(matrix). 줄은[k, Re c_k, Im c_k] ''입니다. k는 0, 1, -1, 2, -2, …(낮은 주파수에서).
★매개 변수의 취하는 방법을 디폴트로 묵묵히 결정하지 않는다가 이 op의 간. 불균일하게 표본화된윤곽을index ''로 읽으면 점이 조밀한 곳에 여분의 시간이 할당됩니다. 그림은 비슷하지만 계수가 별개가 된다(실측으로 k=3''의 계수가 47배 틀렸다). 기본값은 "index"(FFT의 의미)이지만 형식 설명으로 사용하는 경우
"arclength"를 선택하십시오.
★★''arclength'' 건네받은 배열이 아니고 타기한 윤곽을 기술한다. 그러니까 contour_fourier_truncation_energy 의 예언은 "재시도된 윤곽에 대하여" 엄밀하고, 호출자가 수중의 배열에서 오차를 측정하면 맞지 않는다(실측: 512 점에서 1.15 어긋났다). 수중의 배열에 대해서 엄밀한 예언을 원할 때는, 처음에 호 길이로 다시 치고 나서 "index"로 부르는 것.
★ 호 길이의 재설정은 명등이 아니다: 표본을 현으로 연결하므로 이미 등호 길이의 윤곽에다시 한 번 걸면 점이 최대 3.73px 움직임(평균 0.84px), 길이가 더 3.25% 수축한다. 두 번 걸지 말 것.
• shape_description_2d 패밀리 가이드
• 샘플 데이터 카탈로그(DL URL / 라이선스) —— 2-D 는 skimage.data(BSD/public)+ 합성, 3-D 는 실데이터 소스(Stanford/PDS 등)의 DL URL.
• 연산자의 내력·참고문헌 —— 이 연산자 족의 바탕이 된 연구/기법의 출처.
• 알고리즘의 정전(저자·연도)과 용도는 위의 패밀리 사용 가이드에 적혀 있습니다.
• poc_one_stroke_epicycles — py -3.11 examples/poc_one_stroke_epicycles.py
matrix 를 입력으로 받는 것)contour_epicycle_chain · contour_fourier_truncation_energy
descriptor)elliptic_fourier · reconstruct · invariants · normalize · descriptor_distance · fourier_smooth · from_xld · fit_circle_xld
*Provenance: fourierdesc.py — SHAPE2D 연산자 레지스트리. 이 op 노트는 tools/opdocs.py md 가 자동 생성합니다(직접 편집하지 마세요).*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.