【其他算法】曲线平滑
一、需求
将一段曲线进行平滑,使得曲线光滑并保持原来的基本形状。
二、方法及原理
对X/Y两个纬度分别进行平滑,再堆叠成新的点串。
平滑用Savitzky-Golay滤波,是一种数字滤波器,可以在不改变信号趋势的情况下提高数字的精度。核心思想是,对一定长度窗口内的数据点进行K阶多项式拟合。可以理解为一种移动窗口的加权平均算法,但加权系数不是常数,而是用高阶多项式的最小二乘拟合得出。
三、代码实现
from scipy.signal import savgol_filter as savgol_filter def smooth(pts): window_size, polyorder = 7, 3 line_x = savgol_filter(pts[:, 0], window_size, polyorder, mode='nearest') line_y = savgol_filter(pts[:, 1], window_size, polyorder, mode='nearest') line = np.stack([line_x, line_y], axis=1) return line
博文转载请注明出处。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?