我记得有一天在Flickr上看到了上面的照片,我不知所措,试图找出问题所在。关键是,当照相机中的运动传感器“读取读数”时,即在照相机曝光期间,螺旋桨正在旋转。这真的值得考虑,让我们一起考虑一下。
如今,许多数码相机都将CMOS传感器用作其“传感”设备,也称为有源像素传感器。,通过在光线照射时累积电子电荷而起作用。经过一定时间(曝光时间)后,电荷会逐行转移回相机以进行进一步处理。然后,照相机扫描图像,逐行保持像素行。如果拍摄过程中有任何移动,图像将失真。为了举例说明,想象一下拍摄旋转的螺旋桨。在下面的动画中,红线对应于当前读取位置,并且螺旋桨在读取时继续旋转。红线下方的部分是生成的图像。
第一个螺旋桨在曝光期间旋转了1/10:
订阅频道:
@Ontol-有史以来和各民族最有趣的文本/视频,影响着世界的图片
@META LEARNING-我在这里分享有关教育以及IT /游戏在教育中的作用的最有意义的发现(以及安东对此主题的看法)马卡连科,西摩·帕尔特,保罗·格雷厄姆,约瑟夫·李克利德,艾伦·凯)
图像略有变形,但没有严重问题。螺旋桨现在将以快10倍的速度运动,并在曝光期间旋转一整圈:
这已经看起来像我们一开始看到的一样。每次曝光五次:
这已经有点太多了,所以您可以取消转盘。让我们玩得开心,检查一下每次曝光不同物体在不同转速下的外观。
完全相同的螺旋桨:
大型螺旋桨叶片:
车轮:
我们可以将卷帘快门效果看作是真实物体的坐标从变形物体的“物体空间”到“图像空间”的某种转换。下面的动画显示了随着转数增加,直角坐标系会发生什么。在低速下,变形微不足道-数量增加到一,坐标系的每一侧依次移到图像的右侧。这是要掌握的相当复杂的转换,但易于理解。
假设图像为I(r,θ),则真实(旋转)对象为f(r,θ),其中(r,θ)为2D极坐标。由于对象的旋转运动,我们为此任务选择了极坐标。
物体以角频率ω旋转,并且快门沿图像垂直移动,速度为v。在图片的位置(r,θ),自曝光开始以来快门移动的距离为y =rsinθ,此刻起经过的时间为(rsinθ)/ v。在此期间,对象旋转(ω/ v)rsinθ)弧度。因此,我们得到
I(r,θ)= f(r,θ+(ω/ v)rsinθ),
这是必需的变换。 ω/ v比与每次曝光的转数成比例,并参数化转换。
为了更深入地了解明显的螺旋桨形状,我们可以考虑一个由P个螺旋桨组成的物体,其中f仅在
θ=2π/ P,4π/ P…2π=2pπ/ P且1 <p <P 时才为非零值。
对于θ+(ω/ v)rsinθ=2pπ/ P,图像I为非零值,或者
在笛卡尔坐标系中它成为
并帮助我们解释了螺旋桨呈S形的原因-它只是图像空间中反正切的函数。凉。在下面,我用一组五个初始偏移略有不同的螺旋桨叶片绘制了此功能,您可以在播放中看到这一点。它们与以上动画中的形状非常相似。
由于我们了解了更多有关该过程的信息,是否可以修复损坏的照片?使用上面的图像之一,我可以在其中画一条线,向后旋转,然后将这些像素插入新图像。在下面的动画中,我扫描左侧的图像,并用红线标记,然后沿该线旋转像素以获取新图像。这样,即使突然间令人讨厌的滚动快门破坏了您的照片,我们也可以重新创建真实对象的图像。
嗯,如果我在Photoshop方面比较擅长,我会从Flickr上原始照片中提取螺旋桨,进行编辑并将其放回照片中。我想我知道将来会做什么。
如果您想知道帖子开头的照片中的实际刀片数量和旋转速度,可以阅读Daniel Walsh撰写的这篇出色的Tumblr帖子,其中提供了数学解释。
他认为我们可以通过从“顶部”刀片中减去“底部”刀片来计算刀片的数量,因此在该图中可以得到三个刀片。我们也知道螺旋桨在曝光期间旋转大约两次,因此,如果我们尝试以几种不同的速度“撤消”旋转,我们将得到如下信息:
我必须弄清楚螺旋桨中心在哪里,所以画了一个圆圈。显然,中心应该在附近。不幸的是,缺少一个刀片,但是有足够的信息可以显示它。
我找到了所有东西相交最多的地方,因此以这种旋转速度(每次曝光2.39转),这就是原始图像和刀片的样子:
不幸的是,图片并不完美,但至少它与现实非常接近。
作者简介:Jason Cole是伦敦的一名研究生,他对数学,物理和数据可视化充满热情。这是他的网站。文章发表在这里。
黑客新闻讨论
加。视频
订阅频道:
@Ontol-有史以来和各民族最有趣的文本/视频,影响着世界图像
@META TRAINING,我在其中分享我对教育以及IT /游戏在教育中的作用的最有益的发现(以及安东对此主题的看法)马卡连科,西摩·佩尔特,保罗·格雷厄姆,约瑟夫·李克利德,艾伦·凯)
通过参加SkillFactory的付费在线课程,了解如何从头开始或获得技能和薪资水平提高的详细信息:
- 机器学习课程(12周)
- 从头开始培训数据科学专业(12个月)
- 具备任何入门水平的分析专业(9个月)
- 用于Web开发的Python(9个月)