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 族使用指南

參考(範例資料、文獻)

• 範例資料目錄(下載 URL / 授權) —— 2-D 用 skimage.data(BSD/公有領域)加合成圖,3-D 給出真實資料源(Stanford/PDS 等)的下載 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 運算子登記表。本條目由 tools/opdocs.py md 自動產生(請勿手動編輯)。*

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