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)。
论据:
点:(N,2) 个闭合轮廓顶点。 (行,列)顺序(与fourierdesc相同)。
n_harmonics:剩余阶数K(|k| <= K)。 “无”直至可表示的最大值。
参数化:“index”=使点索引成为等距参数/
“arclength” = 弧长并在转换之前以相等的间隔重新输入。
返回值:通常为“(2K+1, 3)”,或“(2K, 3)”的实数数组(“矩阵”),以保留偶数点至奈奎斯特度。该行是“[k,Re c_k,Im c_k]” “k” 是“0, 1, -1, 2, -2, …”(从低频)。
★这个操作的关键不是默默地决定如何获取参数变量。采样不均匀使用“索引”读取轮廓会为点密集的区域分配额外的时间,图片相似,但系数不同(实际上,“k=3”的系数相差47倍)。默认是"index"(FFT的基本含义),但是如果你用它作为形状描述,选择“弧长”。
★★如果选择arclength'',轮廓将在op内部重新绘制,因此返回的系数将是写入重绘轮廓而不是传递的数组。因此 contour_fourier_truncation_energy 预测“重绘轮廓” 它是严格的,当调用者使用手头的数组测量误差时,它不匹配(实际测量:512点,偏差为1.15)。如果您想精确预测手头的数组,首先重新输入弧长用"index" 来称呼它。
★重置弧长不是幂等的:由于标本是用绳子绑在一起的,所以弧长的轮廓已经相等。再次将点移动到 3.73 px(平均 0.84 px),并将长度额外增加 3.25% 收缩。不要拨打两次。
• 示例数据目录(下载 URL / 许可证) —— 2-D 用 skimage.data(BSD/公有领域)加合成图,3-D 给出真实数据源(Stanford/PDS 等)的下载 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 算子登记表。本条目由 tools/opdocs.py md 自动生成(请勿手工编辑)。*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.