contour_fourier_complex — SHAPE2D 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"))

사용법

> 이 연산자의 설명은 아직 번역이 없습니다. 원문을 그대로 싣습니다.

閉輪郭を複素フーリエ級数の係数にする —— `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) の実配列(matrix)。行は [k, Re c_k, Im c_k]` で

`k は 0, 1, -1, 2, -2, …`(低い周波数から)。

★媒介変数の取り方を既定で黙って決めないのがこの op の肝。不均一に標本化された

輪郭を `"index"` で読むと、点が密なところに余分な時間が割り当てられ、

絵は似ているのに係数が別物になる(実測で `k=3` の係数が 47 倍ちがった)。

既定は `"index"`(FFT の素の意味)だが、形の記述として使うなら

`"arclength"` を選ぶこと。

★★`"arclength"` を選ぶと op の内部で輪郭を打ち直すので、返る係数は

渡した配列ではなく打ち直した輪郭を記述する。だから

:func:contour_fourier_truncation_energy の予言は「打ち直した輪郭に対して」

厳密で、呼び手が手元の配列で誤差を測ると合わない(実測: 512 点で 1.15 ずれた)。

手元の配列に対して厳密な予言が欲しいときは、先に弧長で打ち直してから

`"index"` で呼ぶこと。

★弧長の打ち直しは冪等ではない: 標本を弦で結ぶので、すでに等弧長の輪郭に

もう 1 度かけると点が最大 3.73 px 動き(平均 0.84 px)、長さがさらに 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 · contour_epicycle_chain


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

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