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.