本文的目的是了解相机设备的工作原理,并利用它结合人脸检测算法计算给定一幅图片中人脸的距离。
针孔相机
“光是由上帝第一次创造,也是大自然给人类最重要的礼物之一...”
定义
作为一个开始,我们首先给出一个光的定义:光是一种可以由正常人类眼睛感知到的物质。
也许这不是一个深刻的定义,但它让我们开始探索光,测试光的存在。我们能看到一个物体,那是因为光进入了眼睛。如果一个物体发出光,那么我们说它是光源。自身可以发出光的物体称为发光源。其他物体被称为照明源,只有当发光源的光照在它们身上时才会发出光(就像月亮一样)。
相机暗箱,类似于没有携带镜头和胶片的现代相机;该设备将倒置的图像投射到墙上或画布上。它是最简单的光学设备,允许在屏幕上获得物体的图像,也被称为针孔相机。
历史
中国人最早在公元前5世纪发现,如果一个人在一个昏暗的房间的墙上做了一个小孔,就会通过针孔投影到小孔对面的墙上形成一个倒置的图像。无论对面的墙有多远,图像都会投影到墙上。缩短或延长距离会改变投影图像的大小。
阿拉伯学者Abu Ali al-Hassan ibn al-Haytham(公元10世纪),在他的著作(光学书籍)中描述了相机暗箱,强调了孔径大小与图像清晰度之间关系的重要性。
第一个用于创作艺术绘画的光学设备是由生活在1452-1519年的大师达芬奇创造的。它的描述可以在“绘画论著”中看到,作者在其中谈到了光学器件的工作原理。
大约1519年,达芬奇(1452-1519)写道:“当被照亮的物体的图像...透过一个小洞进入一个非常黑暗的房间...你会看到[在对面的墙上]这些物体的适当形式和颜色,尺寸缩小...由于光线的交叉在一个相反的位置”。
原理
示例1:针孔相机
现在,我们的目标是找到焦距(f)与物体高度(HI=KJ)、图像大小(LM=EF)和物体与摄像机(d)的距离之间的关系。此外,如果我们能找到它(至少我们可以尝试),就可以估计物体与针孔(相机)的距离,知道图像的大小(ML=EF),物体的大小(HI=KJ=18cm;人脸的平均高度约为18cm),焦距未知。
焦距
为了计算焦距,可以在相机前放一张30厘米的纸,这样它就完全适合屏幕,并测量相机和纸间的距离(这里以19cm为例),然后通过应用下面的类比来找出相机图像的高度与其焦距的比率:
得到这个比率需要了解一些基本的数学知识,知道三角形ABC和三角形CDE相似,可以得到:
它们是相似的,因为三个角度都是相等的。由此公式可以得出:
所以
根据这个公式
可以看出如果CG增加一个确定的因子N,那么AB(图像高度)将减少N倍,因为f和DE(物体高度:一张纸或脸等)是常数。
此外,这在逻辑上是正确的,因为如果物体远离相机,那么屏幕上的图像就会很小。
现在我们需要找出当物体在相机前面移动时物体高度和图像高度之间的比率,就像下面的情况一样:
物体从HI移动到KJ,图像高度将从CD下降到EF。我们知道LM=EF,所以我们可以简化图像如下:
这两个角度GLM和GJK是相同的,所以将会得出:
所以
根据方程(1)可以得到
所以,最后我们可以得出
证明
这个方程在逻辑上似乎是正确的,因为如果远离相机,图像在图片中会很小。
示例2:单镜头相机:
我们知道两个三角形DFE和FBA是相似的,所以我们可以推断:
FG = f distance from camera lens (f is the focal distance)
DE = height of the image on screen
AB = height of the piece of paper = 30 cm
FF = di –f
所以
证明:
如果f=0将获得相同的公式对于针孔相机:
di与针孔相机中额焦距相同,对(2)进行简化后,我们可以推断:
相机的标准焦距在35毫米到70毫米之间,我们取50毫米。(5厘米=189像素)
由上图可知,将物体从(A)移动到(B)会使图像大小从[C]减小到(D)。使用与前面讨论相同的类比(Distance = d)
代码
程序源码:https://github.com/Harmouch101/Face-Detection
写出前两个关于带有镜头的针孔和照相机的方程,我们可以像下面这样在给定的图片中找到某个人的距离。
在这里我们可以看到摄影师离这位女演员大约1.5米远。
我认为1.5米不是真正有效的,因为摄影师可以放大图片,他也可以在编辑时裁剪图像,这是我们没有考虑的因素。
结论
针孔相机是现代相机设备的基石,无论它多么简单,它都可以被认为是人类历史上最重要的发现之一。