滚动式快门现象背后的数学

2020-06-26 23:23:40

我记得有一次在Flickr上看过上面的照片,在试图找出哪里出了问题的过程中,我的大脑稍微融化了。

问题是,当相机探测器“读出”时,螺旋桨在旋转,也就是说,在相机曝光期间有一些运动。这是一件很有趣的事情,让我们来看看。许多现代数码相机使用CMOS探测器(也被称为有源像素传感器)作为它们的“传感”设备,它的工作原理是在光线落到它上面时积累电子电荷。在给定的时间,即曝光时间之后,电荷逐行移回相机进行进一步处理。然后,相机会在有限的时间内向下扫描图像,一次保存几行像素。如果在此时间范围内有任何运动,图像将会失真。

为了说明这一点,可以考虑拍摄旋转的螺旋桨。在动画中,下面的红线对应于当前的读数位置,随着读数的进行,螺旋桨继续旋转。红线下的部分将保存为捕获的图像。

有点扭曲,但不是很疯狂。现在,螺旋桨的移动速度加快了10倍,在曝光过程中完成了完整的旋转:

这开始看起来像开始时的Flickr图像。每次曝光5次:

这有点太过分了,事情显然已经变得精神错乱了。只是为了好玩,让我们看看一些不同的物体在不同的旋转速度下是什么样子,每次曝光从0转到1转。

我们可以认为滚动快门效果是从真实世界对象的“对象空间”到扭曲图像的“图像空间”的某种坐标变换。下面的动画显示了随着旋转次数的增加笛卡尔坐标栅格的变化。对于较小的旋转,变形很小,因为数字增加到1时,栅格的每一侧都会向图像的右侧连续移动。这是一个相当复杂的转换,看起来很复杂,但理解起来很简单。

设图像用$LaTeX i(r,\θ)$表示,真实物体(旋转的)用$LaTeX f(r,\θ)$表示,其中$LaTeX(r,\θ)$是2D极坐标。由于物体的旋转运动,极坐标是解决这一问题的自然选择。

对象以角频率$latex\omega$旋转,快门在垂直方向上以$latex v$的速度穿过图像。在图像中的位置$LaTeX(r,\θ)$,自曝光开始以来快门移动的距离是$LaTeX y=r\sin\θ$,因此经过的时间是$LaTeX(r\sin\θ)/v$。此时,对象已旋转了许多弧度$LaTeX(\omega/v)r\sin\theta)$。把这些放在一起,

这是所需的转换。因子$LaTeX\omega/v$与曝光期间的旋转次数成正比,并将变换参数化。

为了深入了解螺旋桨的外观形状,我们可以考虑一个由$LaTeX P$螺旋桨组成的对象,其中$LaTeX f$仅对于$LaTeX\theta=2\pi/P,4\pi/P\dots 2\pi=2p\pi/P$是非零值,对于$LaTeX 1<;p<;P$。那么,对于笛卡尔坐标中的$LaTeX\theta+(\omega/v)r\sin\theta=2p\pi/P$或$latex r=\frac{v}{\omega}\frac{2p\pi-\theta}{\sin\theta}$,图像$LaTeX i$是非零的。这将变成$LaTeX\text{atan}\Left(\frac{y}{x}\right)+\。凉爽的。我已经在下面为一组5个螺旋桨叶片绘制了这个函数,它们的初始偏移量略有不同,就像在视频录制期间可能会观察到的那样。它们看起来很像上面动画中的形状。

现在我们对这一过程有了更多的了解,我们能对这些被毁的照片做些什么吗?取上面一张扭曲的图像,我可以画一条线穿过它,向后旋转适当的量,然后把这些像素粘贴到一张新的图像上。在下面的动画中,我扫描了左边用红线标记的图像,然后沿着那条线将像素旋转到一张新图像上。这样,即使麻烦的滚动快门破坏了我们的原始图像,我们也可以构建真实对象的照片。

现在,如果我的Photoshop技能再好一点,我就可以从原始的Flickr图像中提取螺旋桨,将它们解曲,然后再把它们贴回照片上。听起来像是对未来的计划。

要想计算出帖子顶部的照片中刀片的真实数量和旋转速度,我们可以看看丹尼尔·沃尔什的Tumblr博客上的这篇出色的帖子,他在数学解释方面绝对有优势。

他计算出,我们可以通过从“上”叶片中减去“下”叶片来计算叶片的数量,所以在这张图片中,我们知道应该有3个。我们还知道在曝光过程中螺旋桨大约旋转了2次,所以如果我们尝试用几个不同的速度来“取消”旋转,我们得到的结果是这样的:

我不得不猜测螺旋桨的中心在哪里,我画了一个圆圈来引导眼睛。看着这一点,中心应该不会太远了。不幸的是,有一把刀片不见了,但仍然有足够的信息来制作图像。

有一个最佳位置,其中所有内容重叠最多,因此选取这个旋转速度(每次曝光2.39次旋转),原始图像和刀片看起来如下所示:

不幸的是,它仍然有点乱,但至少看起来有点像真实的物体。

关于作者:杰森·科尔(Jason Cole)是一名来自伦敦的博士生,对数学、物理和数据可视化充满热情。在这里访问他的网站。这篇文章最初出现在这里。