图片一直是人类体验的重要组成部分。从最初的洞穴素描到素描和绘画,再到现代摄影,我们已经掌握了记录所见事物的艺术。
相机及其内部的镜头似乎有些神秘。在这篇博客文章中,我不仅要解释它们的工作原理,而且要解释如何调整一些可调参数可以产生完全不同的结果:
在本文的整个过程中,我们将基于基本原理构建一个简单的相机。我们的第一步将非常适度–我们将尽一切努力拍照。为此,我们需要有一个能够检测和测量照射到其上的光的传感器。
在数字时代来临之前,照片是在覆盖有卤化银晶体的胶片上拍摄的。这些化合物对光敏感,当暴露于光线下时,它们会形成金属银斑点,随后可通过进一步的化学过程进行显影。
不管是好是坏,我不再讨论模拟设备-如今,大多数相机都是数码相机。在继续进行有关光的讨论之前,我们将使用关闭照明的经典技巧。不过请放心,我们不会在黑暗中停留太久。
数码相机的图像传感器由光电探测器网格组成。光电探测器将光子转换为可以测量的电流-击中探测器的光子越多,信号越高。
在下面的演示中,您可以观察到光子如何落在以小方块表示的检测器排列上。经过一些处理后,每个检测器读取的值将转换为结果图像像素的亮度,您可以在右侧看到该图像像素。我还象征性地用短亮显示了被击中的那张照片。下面的滑块控制时间流:
收集光子的时间越长,光子撞击检测器的次数就越多,并且图像中生成的像素越亮。当我们收集不到足够的光子时,图像曝光不足,但是如果我们允许光子采集运行太长时间,则图像将曝光过度。
尽管光子具有其波长的“颜色”,但光电探测器看不到这种色调-它们仅测量总强度,从而产生黑白图像。为了记录颜色信息,我们需要将入射光子分成不同的组。我们可以在检测器的顶部放置微小的滤色器,以便它们或多或少地只接受红色,绿色或蓝色的光:
该滤色器阵列可以以许多不同的形式布置。最简单的一种是Bayer滤镜,它使用以2x2网格排列的一个红色,一个蓝色和两个绿色滤镜:
拜耳滤光片使用两个绿色滤光片,因为光谱的绿色部分中的光与感知的亮度密切相关。现在,如果我们在整个传感器上都重复这种图案,则可以收集颜色信息。对于下一个演示,我们还将分辨率提高一倍,达到以32x32网格排列的惊人的1公里像素:
请注意,各个传感器本身仍然只能看到强度,而不能看到颜色,但是知道滤镜的布置后,我们可以重新创建每个传感器的有色强度,如仿真右侧所示。
获得正常图像的最后一步称为去马赛克。在去马赛克过程中,我们希望通过填充捕获的RGB值中的间隙来重建全色信息。最简单的方法之一是在现有邻居之间线性插值。我将不着重于其他许多可用的去马赛克算法的细节,而仅介绍该过程创建的结果图像:
再次注意,图像的整体亮度取决于我们让光子通过的时间长度。该持续时间称为快门速度或曝光时间。在本演示的大部分内容中,我将忽略时间分量,而仅假设快门速度设置正确,以使图像曝光良好。
到目前为止,我们讨论的示例非常方便-我们被完全黑暗包围,光子整齐地撞击像素以形成连贯的图像。不幸的是,我们不能指望光子路径在实际环境中具有同样的优势,因此让我们看看传感器在更现实的情况下的性能如何。
在本文的整个过程中,我们将为这个简单的场景拍照。这个网站几乎是白色的背景也是风景的一部分–它代表着阴暗的天空。您可以在演示中拖动以从其他方向查看它:
让我们尝试看看放置在没有任何外壳的物体附近的传感器会拍什么样的照片。我还将显着提高传感器的分辨率,以使最终图像的像素与显示器的像素对齐。在下面的演示中,左侧代表存在小绿色传感器的场景视图,而右侧则显示所拍摄的照片:
这不是一个错误。如您所见,所获得的图像实际上与任何东西都不相似。要了解为什么会发生这种情况,我们首先来看一下从场景辐射的光线。
如果您有机会探索曲面如何反射光,您可能会记得,大多数无光泽曲面会将入射的光散射到各个方向。虽然我仅显示一些示例,但该场景每个表面上的每个点都反映了它从自身周围发白的背景光源接收到的光子:
红色球体最终发出红光,绿色球体发出绿光,灰色棋盘地板反射强度较小的白光。但是,最重要的是,从背景发出的光也对传感器可见。
我们目前的拍照方法存在的问题是传感器的每个像素都暴露在整个环境中。从场景和白色背景的每个点发出的光照射到传感器的每个点。在下面的模拟中,您可以看到来自不同方向的光如何撞击传感器表面上的一个点:
显然,为了获得可分辨的图像,我们必须限制影响传感器上给定像素的方向范围。考虑到这一点,让我们将传感器放在一个有小孔的盒子里。第一个滑块控制孔的直径,而第二个滑块控制孔与传感器之间的距离:
虽然此处未显示,但墙壁的内侧均为黑色,因此没有光在盒子内部反射。我还将传感器放在后壁上,以使来自孔的光线照在它的后面。我们刚刚建立了一个针孔相机,让我们看看它的性能。使用第一个滑块调整孔的直径时,观察拍摄的图像会发生什么,或者使用第二个滑块来更改开口与传感器之间的距离:
这里发生了很多有趣的事情!最明显的效果是图像反转了。要了解为什么会发生这种情况,我们来看看场景的示意图,该示意图显示了从物体发出的光线,穿过孔并撞击传感器的光线:
如您所见,光线在孔中交叉,形成的图像是实际场景的水平和垂直反射。这两个翻转最终形成180°旋转。由于旋转后的图像不便于查看,因此所有相机都会自动旋转图像以进行演示,在本文的其余部分中,我也会这样做。
当我们改变孔与传感器之间的距离时,视角会急剧变化。如果我们追踪落在传感器角点像素上的光线,我们可以看到它们定义了场景可见部分的范围:
从该形状外部发出的光线仍会穿过针孔,但会降落在传感器外部,因此不会被记录。当孔远离传感器移动时,角度以及传感器可见的视场会变小。我们可以在相机的俯视图中看到这一点:
巧合的是,此图还帮助我们解释了另外两个效果。首先,在照片中,红色球体看起来几乎与绿色球体一样大,即使场景视图显示红色球体要大得多。但是,两个球最终在传感器上占据大致相同的跨度,并且它们在图片中的大小相似。还要注意的是,当视野变窄时,球体似乎会增大,因为它们的光会覆盖传感器的较大部分。
其次,请注意,传感器的不同像素与孔的距离和相对方向不同。传感器中心的像素看到的针孔一直笔直,但是与主轴成一定角度的像素看到的针孔畸变了,而针孔却越来越远。下图右下角的椭圆显示了位于蓝点的像素如何看到针孔:
孔的可见区域的这种变化会导致我们在照片的角落看到变暗。我用黄色标记的角度的余弦值非常重要,因为它以四种不同的方式有助于减少可见光:
距孔的距离增加有两个余弦因子,本质上是平方反比定律
从一个角度看到的圆孔侧面挤压的余弦因数
在已知的余弦四次幂定律(也称为自然渐晕)中,这四个因素共同影响以照明度降低cos 4(α)的因数。
既然我们知道了相机和开口的相对几何形状,我们就可以通过简单地除以衰减因子来校正这种影响,从这一点开始,我将确保图像不会出现暗角。
我们可以观察到的最终效果是,当孔变小时,图像变得更清晰。让我们看一下根据针孔的直径,从场景两点辐射的光最终如何通过相机:
我们已经可以看到,更大的孔尺寸最终会在传感器上产生更大的扩散。让我们在检测细胞的简单网格上近距离观察这种情况。请注意,随着孔直径的变化,最后一个击中传感器的圆的大小会发生什么:
当孔很小时,来自光源的光线仅会碰到传感器上的一个像素。但是,在较大的半径下,光会传播到其他像素,并且场景中的微小点不再由单个像素表示,从而导致图像不再清晰。
值得指出的是,清晰度最终是任意的-它取决于最终图像的显示尺寸,观看条件和观察者的视敏度。当在大显示器上观看时,同一张在邮票上看起来清晰的照片实际上可能非常模糊。
通过减小光锥的大小,我们可以确保源光影响有限数量的像素。但是,这里存在问题。到目前为止,我们一直在使用的传感器是理想化的检测器,能够完美地调整其对光照条件的敏感度。相反,如果我们要修复传感器灵敏度调整,则捕获的图像将看起来像这样:
随着传感器像素可见的孔的相对尺寸变小(由于直径减小或距离增加),更少的光子撞击表面,图像变暗。
为了增加我们捕获的光子数量,我们可以延长收集时间,但是增加曝光时间会带来一些问题,如果被摄物体移动或相机不稳定,我们可能会引入运动模糊的风险。
或者,我们可以增加使用ISO等级描述的传感器的灵敏度。但是,提高ISO可能会引入更高级别的噪音。即使解决了这些问题,由越来越小的孔获得的实际图像也会由于光的衍射效应而再次开始变得模糊。
如果您回想起漫反射表面如何反射光,您可能还会意识到针孔相机的效率极低。物体表面上的单个点将光辐射到其周围的半球中,但是,针孔仅捕获了该光的一小部分。
但是,更重要的是,针孔相机使我们对图片的哪些部分模糊不清,几乎没有艺术上的控制。在下面的演示中,您可以看到更改焦点对准的对象如何严重影响照片的主要关注对象:
让我们尝试构建一种可以解决这两个问题的光学设备:我们想找到一种方法来利用物体辐射出的大部分能量,并控制模糊的程度和模糊程度。对于场景中那些应该很锐利的对象,我们希望收集它们的大部分光线并使它们会聚到尽可能小的点。本质上,我们正在寻找一种可以完成以下任务的工具:
然后,我们可以将传感器放在焦点上并获得清晰的图像。自然,我们将尝试创建的装置必须是透明的,以便光可以穿过它并到达传感器,因此,我们先看一块玻璃来开始研究。
在下面的演示中,我在玻璃窗格后面放了一个红色的棍子。您可以使用下面的灰色滑块调整此窗格的厚度:
当您直接从厚玻璃的表面看棍子时,一切看起来都很正常。但是,随着观察方向的变化,透过玻璃杯看到的棒子似乎不合适。玻璃越厚,视角越陡,偏移量越大。
让我们集中注意棒表面上的一个点,看看从棒表面辐射的光线如何通过玻璃的子区域传播。红色滑块控制光源的位置,灰色滑块控制厚度。您可以拖动演示以从不同的角度查看它:
由于某些原因,以一定角度穿过玻璃的光线会偏离其路径。每当射线进入或离开玻璃时,方向就会发生变化。
要了解光为何会改变方向,我们必须在经典电磁学的掩护下进行窥视,并更多地讨论波。
在不涉及时间分量的情况下谈论波的传播是不可能的,因此本节中的模拟是动画的–您可以通过点击左下角的按钮来播放和暂停它们。
默认情况下,所有动画都处于启用状态,但是如果您发现它们分散了注意力,或者想要节省电量,则可以全局暂停以下所有演示。禁用,但是如果您希望在阅读时让事物移动,则可以全局取消暂停它们,并观察所有波动。
这样的波浪可以由两个分量来表征。波长λ是波的形状重复的距离。周期T定义了一个完整周期需要多少时间。
频率f只是周期的倒数,更常用-它定义了每秒通过某固定点的波数。波长和频率定义了相速度v p,该速度描述了波上某个点(例如波)的速度。高峰,移动: