跳到主要内容
Sandbox Physics
第一卷 · 运动、力与能量

第一卷 · 第 2 章

相机怎样测出运动?

相机只记下每一帧的像素。先标定成位置,再用差分或局部拟合估计速度,看清噪声和平滑各带来多少误差。

先修:第 1 章。平均值和重复数据的分散程度在本章讲解。

读完本章,你能:把像素换算成位置,从逐帧记录估计速度,并判断误差来自运动、相机还是分析方法。

像素不能直接告诉我们速度。相机只记下每一帧里物体落在哪一列像素;要得到速度,先用标定把像素换成位置,再用相邻几帧的位置变化估计斜率。这样得到的速度同时带着运动本身、相机和分析方法的影响,需要分开检查。

上一章的位置曲线是给定的。现在换一个问题:一台固定相机对着直轨拍摄,每秒 30 帧。一个小球沿轨道来回振荡,同时缓慢向右漂移。我们手里只有每一帧的像素列号,能从这些数字读出小球每一刻的速度吗?

本章的数字都来自运动测量与数值微分 Lab。Lab 里的运动由一个已知公式给出,所以可以把估计结果与真值比较。真实实验没有这样的真值,只能依靠本章介绍的检查方法。

2.1 相机记录了什么

相机以固定帧率 fsf_s 拍摄,相邻两帧相隔 Δt=1/fs\Delta t=1/f_s。从零开始数,第 nn 帧的时刻是 tn=n Δtt_n=n\,\Delta t。帧率为 30 Hz30\,\mathrm{Hz} 时,帧间隔约为 0.033 s0.033\,\mathrm s。

每一帧里,跟踪程序找出小球中心所在的像素列 unu_n。一份记录就是一列成对的数字 (tn,un)(t_n,u_n)。记录里没有位置,更没有速度:位置要经过标定换算,速度要经过计算估计。

这个区分贯穿全章。直接记下的量叫观测值,由观测值算出的量叫估计值。估计值的误差,一部分来自观测值本身,一部分来自我们选择的算法。

Lab 的默认记录长 4 s4\,\mathrm s,共 121 帧。传感器宽 2048 列,第 1024 列对准轨道原点。小球的真实运动是

x(t)=xb+bt+12ct2+Asin⁡(ωt+ϕ),ω=2πf.x(t)=x_b+bt+\tfrac12ct^2+A\sin(\omega t+\phi), \qquad \omega=2\pi f.

默认取 xb=0x_b=0、b=0.15 m s−1b=0.15\,\mathrm{m\,s^{-1}}、c=0c=0、A=1.5 mA=1.5\,\mathrm m、f=0.5 Hzf=0.5\,\mathrm{Hz}、ϕ=0\phi=0。频率 ff 是每秒振荡的周数,ω\omega 叫角频率,单位是弧度每秒;正弦函数的自变量按弧度计算。这样的小球每两秒来回一次,同时以 0.15 m s−10.15\,\mathrm{m\,s^{-1}} 向右漂移。

2.2 正弦运动的速度

要比较估计值和真值,先要知道这个运动的速度。前一章只求过多项式的斜率,这里用对称的平均速度求正弦函数的斜率。

取 tt 前后各 hh 的两个时刻。由三角恒等式 sin⁡(α+β)−sin⁡(α−β)=2cos⁡αsin⁡β\sin(\alpha+\beta)-\sin(\alpha-\beta)=2\cos\alpha\sin\beta,

sin⁡(ω(t+h))−sin⁡(ω(t−h))2h=ωcos⁡(ωt) sin⁡(ωh)ωh.\frac{\sin\bigl(\omega(t+h)\bigr)-\sin\bigl(\omega(t-h)\bigr)}{2h} =\omega\cos(\omega t)\,\frac{\sin(\omega h)}{\omega h}.

当 hh 趋于零,sin⁡(ωh)/(ωh)\sin(\omega h)/(\omega h) 趋于 1。这是小角度下正弦值与弧度近似相等的结果,例如 sin⁡(0.01)=0.0099998\sin(0.01)=0.0099998。于是

ddtsin⁡(ωt)=ωcos⁡(ωt),v(t)=b+ct+Aωcos⁡(ωt+ϕ).\frac{\mathrm d}{\mathrm dt}\sin(\omega t)=\omega\cos(\omega t), \qquad v(t)=b+ct+A\omega\cos(\omega t+\phi).

默认运动的最大速率约为 Aω=1.5π m s−1≈4.71 m s−1A\omega=1.5\pi\,\mathrm{m\,s^{-1}}\approx4.71\,\mathrm{m\,s^{-1}}。上式中的比值 sin⁡(ωh)/(ωh)\sin(\omega h)/(\omega h) 在 2.5 节还会出现,它决定差分会把速度低估多少。

2.3 标定:把像素换成位置

若相机比例为每米 ss 个像素,原点所在的列为 u0u_0,那么

xn=un−u0s.x_n=\frac{u_n-u_0}{s}.

Lab 中 s=120 px m−1s=120\,\mathrm{px\,m^{-1}},u0=1024u_0=1024,一个像素约对应 8.3 mm8.3\,\mathrm{mm}。真实实验通常拍下一把已知长度的尺,数出它占多少像素,再据此确定 ss。

标定会出两类错,影响很不一样。

比例假定错了,每个位置都按同一倍数缩放。若假定的比例比真实值大 10%,所有位置、位移和速度都被除以 1.1。误差和被测量的大小成正比:走得越远,位置误差越大。

原点假定错了,每个位置都平移同一段距离。原点偏 12 个像素,每个位置都偏 12/120 m=0.1 m12/120\,\mathrm m=0.1\,\mathrm m。两帧位置相减时这段平移抵消,所以速度不受影响。

Lab 的“匀速运动”预设让小球以 0.5 m s−10.5\,\mathrm{m\,s^{-1}} 匀速移动,且不加噪声。比例误差设为 10% 时,速度的误差恰好是 0.5×(1−1/1.1) m s−1=0.0455 m s−10.5\times(1-1/1.1)\,\mathrm{m\,s^{-1}}=0.0455\,\mathrm{m\,s^{-1}};原点误差设为 12 像素时,位置误差是 0.1 m0.1\,\mathrm m,速度误差为零。两条结论都可以不依赖 Lab,用上面的公式直接算出。

2.4 怎样概括一列误差

一份记录有上百个估计值,每个都有误差 eke_k。要比较两种方法,需要把一列误差概括成少数几个数。

平均值说明误差是否整体偏向一边,标准差说明误差围绕平均值散开多宽,均方根同时包括这两部分:

eˉ=1N∑k=1Nek,σ=1N∑k=1N(ek−eˉ)2,RMS=1N∑k=1Nek2.\bar e=\frac1N\sum_{k=1}^N e_k, \qquad \sigma=\sqrt{\frac1N\sum_{k=1}^N(e_k-\bar e)^2}, \qquad \mathrm{RMS}=\sqrt{\frac1N\sum_{k=1}^N e_k^2}.

把 eke_k 写成 (ek−eˉ)+eˉ(e_k-\bar e)+\bar e 再平方求和,交叉项的和为零,因为各个 ek−eˉe_k-\bar e 加起来正好抵消。于是

RMS2=eˉ2+σ2.\mathrm{RMS}^2=\bar e^2+\sigma^2.

原点偏 12 像素时,位置误差的平均值是 0.1 m0.1\,\mathrm m,标准差为零,均方根也是 0.1 m0.1\,\mathrm m。Lab 报告的各项“均方根误差”都是估计值与已知真值之差的均方根,只有在模拟中才能直接算出。

同样的推理说明另一件事。两个互不相关的误差相加,交叉项平均为零,标准差不直接相加,而是平方后相加。本章多次用到这条规则。

Lab 在每一帧加入一个落在 ±0.5\pm0.5 像素之间的扰动,再把结果取成整像素。这个扰动由确定的公式产生,不是真正的随机噪声,但在很多帧上大致均匀地铺满这个区间。均匀分布在 ±a\pm a 之间的量,标准差是 a/3a/\sqrt3。这里直接使用这个结果,它的推导需要计算 x2x^2 的积分。

扰动的标准差是 0.5/3≈0.290.5/\sqrt3\approx0.29 像素;取整误差落在 ±0.5\pm0.5 像素之间,标准差也约为 0.29 像素。两者平方相加再开方,约为 0.41 像素,即 0.0034 m0.0034\,\mathrm m。Lab 默认记录的原始位置均方根误差是 0.00336 m0.00336\,\mathrm m,与估算一致。

2.5 差分:用相邻帧估计速度

最直接的估计是相邻两帧的平均速度。为了让估计值对应一帧的时刻,通常取前后两帧,称为三点中心差分:

v^n=xn+1−xn−12Δt.\hat v_n=\frac{x_{n+1}-x_{n-1}}{2\Delta t}.

这里的帽子记号表示估计值。它有两种误差,来源不同,随帧率的变化方向也相反。

第一种叫截断误差,来自用一段有限时间代替瞬时。对匀加速运动,这个公式完全准确:把 x=p+qt+rt2x=p+qt+rt^2 代入,前后两项中的 rt2rt^2 部分相减后只剩 q+2rtq+2rt,正是瞬时速度。对正弦运动,2.2 节已经算出,差分得到的是真实速度乘以 sin⁡(ωΔt)/(ωΔt)\sin(\omega\Delta t)/(\omega\Delta t)。

帧率为 30 Hz30\,\mathrm{Hz} 时,ωΔt=π/30≈0.105\omega\Delta t=\pi/30\approx0.105,这个比值为 0.99817。速度被低估约 0.18%,误差振幅约为 0.0086 m s−10.0086\,\mathrm{m\,s^{-1}},均方根约为 0.0061 m s−10.0061\,\mathrm{m\,s^{-1}}。把 Lab 的噪声和取整都关掉,三点差分的速度均方根误差是 0.00606 m s−10.00606\,\mathrm{m\,s^{-1}}。

第二种误差来自位置噪声。两帧位置各有标准差为 σx\sigma_x 的误差,相减后标准差是 2 σx\sqrt2\,\sigma_x,再除以 2Δt2\Delta t:

σv=σx2 Δt.\sigma_v=\frac{\sigma_x}{\sqrt2\,\Delta t}.

代入 σx=0.0034 m\sigma_x=0.0034\,\mathrm m、Δt=1/30 s\Delta t=1/30\,\mathrm s,得到约 0.072 m s−10.072\,\mathrm{m\,s^{-1}}。Lab 默认记录用三点差分时,速度均方根误差为 0.068 m s−10.068\,\mathrm{m\,s^{-1}}。它比截断误差大十倍以上,可见这里的主要问题是噪声。

用像素直接看更清楚。三点差分可以写成 (un+1−un−1)/(2Δt s)(u_{n+1}-u_{n-1})/(2\Delta t\,s),在默认设置下分母是 8 像素秒每米。前后两帧只要差一个像素,速度估计就变化 0.125 m s−10.125\,\mathrm{m\,s^{-1}}。

提高帧率能减小截断误差,却会放大噪声。帧率改为 120 Hz120\,\mathrm{Hz} 时,原始位置误差约为 0.0031 m0.0031\,\mathrm m,上式预计约 0.27 m s−10.27\,\mathrm{m\,s^{-1}};Lab 给出 0.264 m s−10.264\,\mathrm{m\,s^{-1}},是 30 Hz30\,\mathrm{Hz} 时的四倍左右。拍得更密,三点差分反而更差。

加速度要再做一次差分,噪声被放大得更厉害。三点公式 (xn+1−2xn+xn−1)/Δt2(x_{n+1}-2x_n+x_{n-1})/\Delta t^2 在默认记录上的加速度均方根误差约为 8.0 m s−28.0\,\mathrm{m\,s^{-2}},与真实加速度的振幅 Aω2≈14.8 m s−2A\omega^2\approx14.8\,\mathrm{m\,s^{-2}} 相当。

2.6 局部拟合:多用几帧换取平滑

只用两帧,噪声无处平均。改进的办法是取以第 nn 帧为中心的 2m+12m+1 帧,用一条二次曲线贴近这些点,再取曲线在中心的斜率。

“贴近”的标准是让各点到曲线的竖直距离的平方和最小,这叫最小二乘拟合,第 3 章会详细讨论。用局部多项式拟合来平滑和求导,Savitzky 与 Golay 在 1964 年给出了一套简便算法。

用帧序号 k=−m,…,mk=-m,\dots,m 表示窗口里的偏移。窗口左右对称,kk 与 k3k^3 的总和都是零,所以常数项和二次项不影响斜率,中心斜率等于直线拟合的斜率:

v^n=∑k=−mmk xn+kΔt∑k=−mmk2.\hat v_n=\frac{\sum_{k=-m}^{m}k\,x_{n+k}}{\Delta t\sum_{k=-m}^{m}k^2}.

取 m=1m=1,这个公式正好回到三点差分。窗口越宽,分母中的 ∑k2\sum k^2 增长得越快,噪声被平均掉的部分越多:

σv=σxΔt∑k2.\sigma_v=\frac{\sigma_x}{\Delta t\sqrt{\sum k^2}}.

九帧窗口中 ∑k2=60\sum k^2=60,噪声只剩约 0.013 m s−10.013\,\mathrm{m\,s^{-1}}。代价是平滑:九帧覆盖 0.27 s0.27\,\mathrm s,在这段时间里速度已经变了不少,拟合斜率把速度的峰谷削低。表 2.1 列出不同窗口在默认记录上的结果。

表 2.1 默认记录(30 Hz30\,\mathrm{Hz},像素噪声上界 0.5 像素并取整)上不同求导方法的误差。
方法有效估计数速度均方根误差(米每秒)加速度均方根误差(米每二次方秒)
三点差分1190.0688.00
五帧拟合1170.0371.59
九帧拟合(Lab 默认)1130.0690.357
十五帧拟合1070.1900.467
三十一帧拟合910.7931.83

速度误差先降后升,在五帧附近最小。九帧拟合的误差主要来自平滑:关掉噪声和取整后,它的速度误差仍是 0.069 m s−10.069\,\mathrm{m\,s^{-1}},与有噪声时几乎相同。加速度需要更宽的窗口才能压住噪声,所以两列的最佳窗口不同。

  • 参考速度
  • 三点差分
  • 五帧拟合
  • 三十一帧拟合
同一段相机记录的三种速度估计四秒内速度在约每秒正五米和负四点五米之间摆动。三点差分围绕参考值跳动,三十一帧拟合平滑但削低峰值,五帧拟合介于两者之间。

图 2.1 同一份默认记录上的三种速度估计。灰色曲线是 Lab 公式给出的参考速度;圆点是三点差分,细线是五帧拟合,粗线是三十一帧拟合。

三点差分围绕参考曲线跳动,三十一帧拟合很平滑,却明显削低了峰值。五帧拟合在两者之间。三种估计只用了记录的像素和标定。

窗口该多宽,取决于窗口持续的时间与运动变化快慢之比,而不只是帧数。帧率为 120 Hz120\,\mathrm{Hz} 时,三十一帧窗口只覆盖 0.25 s0.25\,\mathrm s,速度均方根误差为 0.052 m s−10.052\,\mathrm{m\,s^{-1}},比 30 Hz30\,\mathrm{Hz} 时的九帧窗口还好。

2.7 采样太稀:混叠

前面的方法都假设相邻帧之间运动变化不大。若振荡比帧率还快,记录本身就会误导人。

Shannon 在 1949 年证明,若信号不含高于 fmax⁡f_{\max} 的频率,每隔 1/(2fmax⁡)1/(2f_{\max}) 取一个样本就能完全确定它。反过来,帧率为 fsf_s 时,比 fs/2f_s/2 更快的振荡会在记录里冒充成较慢的振荡,这叫混叠。

Lab 的“混叠运动”预设让小球以 3 Hz3\,\mathrm{Hz} 振荡,相机每秒只拍 4 帧。第 nn 帧的正弦值是

sin⁡(2π⋅3⋅n4)=sin⁡(2πn−2π⋅n4)=−sin⁡(2π⋅1⋅n4).\sin\Bigl(2\pi\cdot3\cdot\frac n4\Bigr) =\sin\Bigl(2\pi n-2\pi\cdot\frac n4\Bigr) =-\sin\Bigl(2\pi\cdot1\cdot\frac n4\Bigr).

记录与一个反相的 1 Hz1\,\mathrm{Hz} 振荡完全相同。从这些帧估计速度,误差的均方根达到 15.6 m s−115.6\,\mathrm{m\,s^{-1}},而真实速度的振幅是 18.8 m s−118.8\,\mathrm{m\,s^{-1}}。

“频闪静止”预设更极端:4 Hz4\,\mathrm{Hz} 的振荡,每秒拍 2 帧。每一帧都落在 sin⁡(4πn)=0\sin(4\pi n)=0,小球看起来一动不动。实际上每次拍摄时小球都以 8π m s−1≈25.1 m s−18\pi\,\mathrm{m\,s^{-1}}\approx25.1\,\mathrm{m\,s^{-1}} 穿过原点,这正是 Lab 报告的速度误差。

换什么求导方法都救不回来,因为需要的信息根本没有进入记录。唯一的检查是提高帧率,看记录是否随之改变。

2.8 速度积分回位置

第 1 章说过,位置等于初位置加上速度对时间的积分。手里只有一帧一个的速度估计时,可以把相邻两帧的速度平均,乘以帧间隔,逐段累加,这就是梯形法。

这样积分时,随机误差有正有负,会部分抵消;一个固定的速度偏差却会一直累积。“速度偏差漂移”预设在每个速度估计上加 0.2 m s−10.2\,\mathrm{m\,s^{-1}}。积分从第一个有效估计开始,到最后一个结束,共 3.733 s3.733\,\mathrm s,积分位置比原始位置多出

0.2 m s−1×3.733 s≈0.747 m.0.2\,\mathrm{m\,s^{-1}}\times3.733\,\mathrm s\approx0.747\,\mathrm m.

这正是 Lab 读数“末段积分减原始位置”的值。默认九帧拟合没有加偏差,这个读数只有 0.026 m0.026\,\mathrm m。

另一种问题是记录有缺口。“离开传感器”预设中,小球在快结束时跑出画面,121 帧里只有 114 帧有像素。九帧窗口里只要缺一帧就不给估计,所以只剩 106 个速度估计。可靠的估计方法让这些帧空着。

2.9 例题:从五帧像素估计速度

下面是 Lab 默认记录中第 13 到 17 帧的像素列号,时刻从 0.433 s0.433\,\mathrm s 到 0.567 s0.567\,\mathrm s。已知 s=120 px m−1s=120\,\mathrm{px\,m^{-1}},u0=1024u_0=1024,Δt=1/30 s\Delta t=1/30\,\mathrm s。求第 15 帧的三点差分速度和五帧拟合速度,并判断两者的差别是否异常。

表 2.2 默认记录中的五帧像素,以及换算出的位置。
帧号像素列位置(米)
1312081.5333
1412111.5583
1512131.5750
1612131.5750
1712101.5500

先换算位置,例如第 13 帧是 (1208−1024)/120 m=1.5333 m(1208-1024)/120\,\mathrm m=1.5333\,\mathrm m。小球在这几帧附近到达最右端,接着往回走。

三点差分只用第 14 和第 16 帧:

v^15=1.5750 m−1.5583 m2/30 s=0.25 m s−1.\hat v_{15}=\frac{1.5750\,\mathrm m-1.5583\,\mathrm m}{2/30\,\mathrm s}=0.25\,\mathrm{m\,s^{-1}}.

用像素看,两帧相差 2 像素,除以 8 像素秒每米,也是 0.25 m s−10.25\,\mathrm{m\,s^{-1}}。

五帧拟合取 k=−2,…,2k=-2,\dots,2,∑k2=10\sum k^2=10:

∑k x15+k=−2(1.5333)−1.5583+1.5750+2(1.5500) m=0.0500 m,v^15=0.0500 m(1/30 s)×10=0.15 m s−1.\begin{aligned} \sum k\,x_{15+k} &=-2(1.5333)-1.5583+1.5750+2(1.5500)\ \mathrm m\\ &=0.0500\,\mathrm m,\\ \hat v_{15} &=\frac{0.0500\,\mathrm m}{(1/30\,\mathrm s)\times10}=0.15\,\mathrm{m\,s^{-1}}. \end{aligned}

两个估计相差 0.10 m s−10.10\,\mathrm{m\,s^{-1}}。按 2.5 节,三点差分的噪声标准差约为 0.072 m s−10.072\,\mathrm{m\,s^{-1}},五帧拟合约为 0.032 m s−10.032\,\mathrm{m\,s^{-1}},所以这个差别在噪声允许的范围内,不说明哪一步算错。

最后与真值比较。按 2.2 节的公式,0.5 s0.5\,\mathrm s 时余弦项为零,真实速度正好是漂移速度 0.15 m s−10.15\,\mathrm{m\,s^{-1}}。五帧拟合这次恰好命中,三点差分多出不到一个像素的量。真实实验没有这个真值,只能依靠上一段那种噪声估计判断结果是否合理。

2.10 在运动测量 Lab 中检验

打开运动测量与数值微分 Lab。进入页面时已经采集好一份记录,读数区直接给出整段记录的误差。“导出原始像素”保存的是相机记录,不含真值。

比较求导方法。 选择“带噪振荡”。先预测:把“导数:0 三点;1 二次拟合”设为 0,速度均方根误差会比默认的九帧拟合大还是小?再改回 1,把“二次拟合窗口帧数”依次设为 5、15、31。记录速度和加速度的均方根误差,与表 2.1 比较。然后把“取整前像素噪声上界”设为 0、“整像素取整”设为 0,看哪种窗口的误差几乎不变,并说明原因。

改变帧率。 仍用三点差分,把“帧率”从 30 提高到 120。操作前,用 2.5 节的公式预测速度误差会变成多少。

检查标定。 选择“匀速运动”,把“假定比例误差”设为 10%,记录原始位置和速度的均方根误差。点“重置”后再选“匀速运动”,改把“假定原点像素误差”设为 12。解释为什么一种误差影响速度,另一种不影响。

检查采样。 选择“混叠运动”和“频闪静止”。先根据 2.7 节预测相机看到的运动,再逐步提高帧率,找出记录开始跟上真实运动的帧率,并与 2f2f 比较。

表 2.3 汇总这些设置的结果。Lab 的扰动和取整都是确定的,同样的设置总给出同样的数字。改变“确定性噪声样本”会换一组扰动:我们试过 8 个样本,三点差分的速度均方根误差在 0.059 到 0.072 m s−10.072\,\mathrm{m\,s^{-1}} 之间。

表 2.3 运动测量 Lab 几种设置的代表性结果。
设置已追踪帧数原始位置均方根误差(米)速度均方根误差(米每秒)
带噪振荡,三点差分,帧率 1204810.00310.264
带噪振荡,九帧拟合,帧率 1204810.00310.042
匀速运动,假定比例误差 10%1210.1050.0455
匀速运动,假定原点像素误差 121210.1000
混叠运动17015.6
频闪静止9025.1
离开传感器11400.069

2.11 习题

  1. 相机记录给出的是哪些量?位置和速度为什么都算估计值?
  2. 一台相机的比例为每米 200 像素,原点在第 1024 列。小球在第 1124 列和第 1174 列各出现一次,两次拍摄相隔 0.1 s0.1\,\mathrm s。求这段时间的平均速度。若原点其实在第 1030 列,结果变不变?若比例其实是每米 190 像素呢?
  3. 某组误差的平均值是 0.03 m0.03\,\mathrm m,均方根是 0.05 m0.05\,\mathrm m。标准差是多少?这组误差主要是整体偏移还是分散?
  4. 位置噪声的标准差是 2 mm2\,\mathrm{mm},帧率 60 Hz60\,\mathrm{Hz}。三点差分的速度噪声约为多少?改用七帧拟合呢?
  5. 用 2.2 节的结果说明:小球做匀加速运动时,三点差分没有截断误差;做正弦振荡时,帧率越低,速度被低估得越多。帧率为 10 Hz10\,\mathrm{Hz} 时,默认运动的速度会被低估百分之几?
  6. 一位同学说:“帧率越高,测出的速度越准。”用本章的结果说明这句话在什么条件下对,在什么条件下错。
  7. 一个风扇每秒转 25 圈,在每秒 24 帧的视频里看起来慢慢倒转还是正转?每秒转多少圈?
  8. 迁移题。你用手机以每秒 240 帧拍摄一辆沿桌面滑行的小车,比例约为每米 1000 像素,跟踪误差约 1 像素。小车速度约 0.5 m s−10.5\,\mathrm{m\,s^{-1}},在 0.2 s0.2\,\mathrm s 内变化不大。你打算怎样选择求导方法和窗口?写出估计的速度噪声,并说明你会怎样检查选择是否合适。

2.12 答案与解释

第 1 题

相机记录的是每帧的时刻和像素列号。位置要经过比例和原点的标定才能得到,依赖标定假设;速度要由多帧位置计算,依赖求导方法和窗口。它们都是估计值,误差来源也比原始记录多。

第 2 题

两次位置分别是 0.5 m0.5\,\mathrm m 和 0.75 m0.75\,\mathrm m,平均速度为 0.25 m/0.1 s=2.5 m s−10.25\,\mathrm m/0.1\,\mathrm s=2.5\,\mathrm{m\,s^{-1}}。

原点错了,两次位置一起平移,差值不变,速度仍是 2.5 m s−12.5\,\mathrm{m\,s^{-1}}。比例错了,位移按比例改变:真实比例为每米 190 像素时,50 像素对应约 0.263 m0.263\,\mathrm m,速度约为 2.63 m s−12.63\,\mathrm{m\,s^{-1}},原来的结果偏低约 5%。

第 3 题

由 RMS2=eˉ2+σ2\mathrm{RMS}^2=\bar e^2+\sigma^2,标准差为 0.052−0.032 m=0.04 m\sqrt{0.05^2-0.03^2}\,\mathrm m=0.04\,\mathrm m。分散部分比整体偏移略大,两者都不可忽略。

第 4 题

三点差分:σv=0.002 m/(2×160 s)≈0.085 m s−1\sigma_v=0.002\,\mathrm m/(\sqrt2\times\tfrac1{60}\,\mathrm s)\approx0.085\,\mathrm{m\,s^{-1}}。

七帧拟合取 m=3m=3,∑k2=2(1+4+9)=28\sum k^2=2(1+4+9)=28,σv=0.002×60/28 m s−1≈0.023 m s−1\sigma_v=0.002\times60/\sqrt{28}\,\mathrm{m\,s^{-1}}\approx0.023\,\mathrm{m\,s^{-1}}。这只是噪声部分;七帧覆盖 0.1 s0.1\,\mathrm s,若速度在这段时间里明显变化,还要加上平滑带来的偏差。

第 5 题

把 x=p+qt+rt2x=p+qt+rt^2 代入三点差分,得到 q+2rtq+2rt,与瞬时速度完全相同,所以没有截断误差。

对正弦运动,差分结果是真实速度乘以 sin⁡(ωΔt)/(ωΔt)\sin(\omega\Delta t)/(\omega\Delta t)。这个比值小于 1,且 ωΔt\omega\Delta t 越大越小,帧率越低低估越多。默认 ω=π s−1\omega=\pi\,\mathrm{s^{-1}},10 Hz10\,\mathrm{Hz} 时 ωΔt=0.314\omega\Delta t=0.314,比值约为 0.984,速度被低估约 1.6%。

第 6 题

帧率越高,帧间隔越短,截断误差和混叠都会减小,在这个意义上更好。但三点差分的噪声与 1/Δt1/\Delta t 成正比,帧率提高四倍,噪声也大约四倍,Lab 中速度误差从 0.0680.068 升到 0.264 m s−10.264\,\mathrm{m\,s^{-1}}。

只有同时按帧数加宽窗口、让它覆盖的时间大致不变,更多的帧才会变成更小的误差。这句话只在位置噪声很小、或者配合合适的拟合窗口时才对。

第 7 题

每帧之间风扇转过 25/2425/24 圈,也就是一圈再多 1/241/24 圈。整圈看不出来,视频里每帧只前进 1/241/24 圈,看起来按原方向慢慢转,每秒 1 圈。这是 25 Hz25\,\mathrm{Hz} 的转动混叠成了 1 Hz1\,\mathrm{Hz}。若风扇有几片相同的叶片,每片转到下一片的位置也算一次重复,看到的速度还会不同。

第 8 题

位置噪声约为 1 mm1\,\mathrm{mm}。三点差分的速度噪声约为 0.001×240/2 m s−1≈0.17 m s−10.001\times240/\sqrt2\,\mathrm{m\,s^{-1}}\approx0.17\,\mathrm{m\,s^{-1}},是速度本身的三分之一,太大。

速度在 0.2 s0.2\,\mathrm s 内变化不大,所以可以用持续约 0.1 s0.1\,\mathrm s 的窗口,即 25 帧左右(m=12m=12)。这时 ∑k2=1300\sum k^2=1300,噪声约为 0.001×240/1300 m s−1≈0.007 m s−10.001\times240/\sqrt{1300}\,\mathrm{m\,s^{-1}}\approx0.007\,\mathrm{m\,s^{-1}}。

检查的办法有几种:把窗口减半再加倍,看速度曲线的形状是否稳定;拍一段已知匀速的运动,看速度是否平直;再拍一把尺,重新确定比例。可以接受的答案不必选同样的窗口,但要说明窗口时长与运动变化时间的关系,并给出噪声估计。

接下来:用模型检验一次下落

本章只从记录估计速度,没有假设运动遵循什么规律。下一章换一个思路:先假设加速度恒定,推出位置随时间的公式,再用整份记录检验这个假设,并测出重力加速度。

图表与数据说明

  • 正弦函数的导数与三点差分的误差按本章推导独立计算;平均速度与瞬时速度的定义见 OpenStax《University Physics》第一卷第 3.2 节。
  • 表 2.1、表 2.2、表 2.3 和图 2.1 由运动测量 Lab 的模型代码按 Lab 默认参数计算:时长 4 s4\,\mathrm s、帧率 30 Hz30\,\mathrm{Hz}、比例 120 px m−1120\,\mathrm{px\,m^{-1}}、像素噪声上界 0.5 像素并取整、确定性噪声样本 17;表中另列的设置只改动所写的参数。参考速度来自 Lab 的运动公式,只用于比较。
  • 文中的噪声估计把 Lab 的确定性扰动近似为均匀分布,用来检查数量级。它不是 Lab 噪声的精确描述。

到 Lab 里检验

每次只改一个设置,再把看到的结果和本章的表格、答案对照。

运动测量与数值微分 →用模拟相机记录运动物体的像素位置,再用有限差分或局部拟合估计速度和加速度,看看噪声、混叠、标定偏差和积分漂移怎样影响结果。

来源与核读范围

  1. OpenStax, University Physics Volume 1, §3.2 Instantaneous Velocity and Speed

    对照瞬时速度作为平均速度极限和位置导数的定义,以及速率是速度大小的定义。

  2. A. Savitzky and M. J. E. Golay, Smoothing and Differentiation of Data by Simplified Least Squares Procedures, Analytical Chemistry 36(8), 1627–1639 (1964)

    核对了出版记录。作为“滑动局部多项式拟合求导”的标准文献引用;第二章的窗口公式在正文中独立推导。

  3. C. E. Shannon, Communication in the Presence of Noise, Proceedings of the IRE 37(1), 10–21 (1949)

    核对了出版记录。作为采样定理的出处引用;第二章只用正文直接算出的特例:采样频率不超过正弦频率两倍时,记录可能像一段更慢的运动。

反馈这个页面有错误、看不明白,或者缺了什么?告诉我们
反馈类型

提交时会附带本页地址、Lab ID、网站语言和设备类型。请不要填写个人信息。反馈最多保存 12 个月。隐私政策