从知乎上找了一张图,原贴地址是 https://www.zhihu.com/question/21427158:
这一部分大家中学应该就学过了,简要总结一下:
物体距离凸透镜<2倍焦距,成放大虚像,比如放大镜;
物体距离凸透镜=2倍焦距,成等大倒立实像,成像在2倍焦距处;
物体距离凸透镜>2倍焦距,成缩小倒立实像,成像在1倍焦距和2倍焦距之间;
重点就在于物体距离凸透镜>2倍焦距,成缩小倒立实像,成像在1倍焦距和2倍焦距之间;
对于相机来说,透镜的焦距也就是三四十毫米,手机摄像头焦距更短,只有几毫米,所以被拍摄的物体基本上都是在2倍焦距以外的,也就说会成缩小倒立实像,成像面在1倍焦距与2倍焦距之间,问题是,具体在哪里?
对焦需要解决的就是在哪个位置成像最清晰的问题,很明显,物体距离凸透镜距离不同其成像最清晰的位置也不同,不需要对焦的镜头必然有一个默认取景距离,比如电脑摄像头,手机前置镜头,他们的默认取景距离大概是40cm,因此只要事先调整好就行,它们不是不用对焦,而是已经对好焦了。
中学物理课堂上有一个实验,就是透镜成像实验,其中有一个问题是蜡烛的成像在哪里最清晰?大家应该都还记得一个公式:
1/u+1/v=1/f (相距v,物距u,焦距f)
相距v,物距u分别是成像到透镜和物体到透镜的距离,f是焦距,物体和成像之间是满足这样一个关系的,因此要想得到蜡烛最清晰的像只需要直到蜡烛到透镜的距离和透镜的焦距即可,轻松愉快。
其实这正是主动式对焦的原理,只要有精确的测距工具,对焦是很简单的。
如果没有办法知道这个距离呢?
在上述物理实验中,在讲解公式之前是有一个探索实验的,实验采用的方法就是在1倍焦距和2倍焦距之间移动光屏,观察到最清晰的像之后就停止移动,这就是穷举法的一个应用,既然像距在固定的范围之内,那么通过这种方法是一定可以找到这个位置,实现对焦。
好了,现在原理都清楚了,剩下的就是怎么办了。
有公式在手,只要给相机安个测距仪就好了,测距仪的精度越高对焦就越准,成像就越清晰,在这种想法的驱动下,主动式对焦就应运而生了,在大部分不计代价的领域,主动式对焦是很受欢迎的方法。
但是在很多地方,尤其是民用市场,想要给相机按上一个高精度测距仪,代价无疑是很高的,有没有其他办法实现对焦?很明显,就是刚才提到的物理实验所采用的的探索法,让改变镜头与CMOS之间的距离,总能找到成像的最佳位置。
在这种想法的作用下,被动式对焦就应运而生了,主要是以额外硬件为代价的相位法和基于软件的对比度法。
相位法是直接通过硬件计算出当前成像的位置是在真正相平面哪一侧的方法,如图所示:
这个图里面最让人困惑的就是这个波峰图是怎么产生的,很多说法是说光线到达检测器的时间不同,然后可以通过光的相位判断是往前移动成像面还是往后移动成像面(等效做法是移动镜头),但是检测光的相位这么NB的功能单反不大可能有,因此我认为这个波峰其实是物体上特定点的反光或者发光经过透镜之后位于光轴上半部的光线汇聚到下部的线传感器(Line sensor),位于光轴下方的光线则汇聚到上部的线性传感器,而具体设计中可能会有分光机构,这个图只是原理图,但是足够说明问题。现在,重点来了,为什么最后面这个传感器叫线传感器(Line sensor),这个不能翻译成线性传感器(Linear sensor),这个名字应该是指的传感器的形状:
最终的光线应该是宽度很有限的“光线束”,在接收到光线之后,线传感器的各个pixel会产生不同的电信号,光线束的中心产生最强的电信号,越远离中心光线强度越弱,对应的电信号越弱,就会有类似下面的结果:
电信号的值从中间到两边衰减,于是就形成了一条钟形曲线:
由于两个传感器接收到分别是光轴上方和光轴下方的光线,曲线的波峰在最中间说明对焦成功,CMOS的位置没有偏前也没有偏后;
否则,也可以很容易知道成像面在当前CMOS的前方还是后方:
波峰往中间偏,说明CMOS在成像面后方;
波峰往两边偏,说明CMOS在成像面前方;
根据偏的距离,也能计算出CMOS或者镜头需要移动的距离;
个人觉得这个方法唯一跟“相位”这个词沾边的可能就是线传感器输出的信号形状了:
而且实际上,只需要一个线传感器就能知道如何移动CMOS或者镜头了。
至于后来又产生了很多变形的专利,主要是把线传感器放在CMOS上以降低系统复杂度,原理仍然不变,只不过多了遮光机构,模拟光轴上部和光轴下部:
当然万变不离其宗,最终的计算方法都是一样的。
这种方法很多地方都叫做反差法,但是通过研究其原理,我认为还是叫对比度法比较准确。原理可以通过下面的动图描述:
这张动图最关键的地方就是上面的注释,可惜注释是匈牙利文,这个语种我想绝大多数人是看不懂的,因此我不辞辛苦给全翻译了一遍,配上注释就容易理解多了:
a képérzékelő felülete=图像传感器表面
AF=Auto Focus
terület=区域
vizsgált pixelek=测试像素
világosság=光线,亮度
kontraszat=对比度
lencsék poziciőja=镜片位置
kihuzat nagysága=投影大小
a kontraszt mérése=对比度测量
nővekvő kontraszt=对比增强
csőkkenő kontraszt=对比模糊
lencse-mozgatás megállitva=镜头移动停止
maximum megállapitása=设定最大值
maximális kontraszt megállapitva=设置最大对比度
lencsék vissza=镜头反向
a rendszer élesre állt=系统停止
这下应该不用多解释了,如果还是不明白,那我就简单说明一下:
它实际上是选的一行像素,统计各像素亮度,并计算最亮和最暗的差值作为对比度保存;
尝试往一个方向移动镜片(或者CMOS),如果差值变小则说明方向错误,需要反向移动;
反之继续移动,直到差值经过某个值之后开始变小,说明该值即对比度最大值;
镜片(或者CMOS)反向移动到对比对最大的位置,结束;
是不是很简单?之所以在研究这个问题的时候越看越迷糊,我觉得最大的问题就是很多文章作者可能也没搞明白具体的原理,就是人云亦云,单纯的复制粘贴,结果怎么看都是一头雾水,希望我这篇文章能给大家解惑。
手机所采用的方式实际上基本都是被动式,除了运动机构不同(手机多数是把摄像头锁进音圈马达内,音圈马达实际上是一种磁性运动机构,通过给线圈加电流使摄像头在一定范围内运动,其行程只有几个毫米,可能不超过3毫米,在摄像头自动对焦时如果你贴近镜头仔细听能听到镜头运动的细微声音),以及镜头焦距不变之外原理都一样,以前比较多的是对比度差值法,现在也有把相位法元件直接放在CMOS上的方案了。
变焦镜头跟对焦是两个概念,对焦是在某个焦距下使图像清晰的操作流程,变焦镜头是指透镜本身焦距改变,由于透镜做好之后焦距就固定了,因此要实现镜头的变焦,用一块透镜是不行的,需要用到透镜组,通过调节各透镜之间的距离改变镜头的焦距,从而实现变焦。
PS:前一节说手机摄像头镜头焦距不变,现在似乎也有利用透镜组实现光学变焦的手机镜头了。
[1] https://www.zhihu.com/question/21427158
[2] https://blog.csdn.net/weixin_30593443/article/details/97913292
[3]https://www.cnblogs.com/wxl845235800/p/9725250.html
[4]http://www.360doc.com/content/18/0421/23/11079421_747658595.shtml
[5]https://www.baidu.com/link?url=eEPqB5kbkevKqtEBD7_ChPGEBe2fZtDZF8EW4_TqqwZVYb6dDYB4flWOowbmUGDK1Tm39agk3VHDo9A4ogPlJzFl987ZBlppEVHu6ODPR8K&wd=&eqid=abff446c0006fc68000000035e201809