自动聚焦介绍

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_24548569/article/details/85229704

聚焦

初中的时候,我们学过小孔成像的物理现象,在比较暗的环境下,蜡烛燃烧发出的光经过一个小孔,在小孔后面的白板上呈现蜡烛的倒像。根据这一原理,人们发明了相机。

现在的相机一般是使用凸透镜把远方景物的光线聚集成一点,在这个点上放上成像元件,在电视电影里面看到的老式相机的成像元件是胶片,现在的数码相机是更先进的传感器,比如CCD,直接把光信号转成数字信号。聚焦的示意图如下所以。
成像模型

远出物体发射的光经过凸透镜汇聚于焦平面处,当成像元件放置在焦深范围内,成像图片清晰,否则成像图片模糊。成像元件放在焦点平面时成像图片最清晰。

中间的直线叫做光轴,成像元件的位置一般在焦点平面附近移动,如下图红色区域所示
在这里插入图片描述

因为成像元件移动的距离是有最小的长度的,所以成像元件在光轴上移动的位置是离散的,如下图的红色点
成像模型

这些红色的点就是聚焦位置,或者说聚焦点,中间的O点在焦点平面上,成像元件位于O点时成像图片最清晰,聚焦程度最高,所以称O点为最佳聚焦位置,或最佳聚焦点。如果考虑整个3维空间,那么上述的每个聚焦点代表一个聚焦平面(与光轴垂直),也有人称焦点平面或焦平面(翻译问题)。所以O点也称为最佳焦平面。

我们在照相时的聚焦/对焦过程,就是使得成像元件位于焦平面,但是实际上移动的是凸透镜,在相机中就是镜头。

可能有人会问,我们都知道成像原理,又有上面的示意图,直接通过数学公式来计算最佳聚焦点的位置,为什么还需要研究自动聚焦算法。首先,我们要知道一点,即使知道了原理,但是不知道具体的参数,比如拍摄物体与镜头的距离,凸透镜的焦距等,我们就不能通过公式计算出最佳聚焦点的位置。因此,我们需要在缺失一些参数的情况下能够自动聚焦的算法。

自动聚焦

通过上述描述,我们知道了聚焦的一些相关概念,现在说一说自动聚焦是怎么实现的。

上面已经说了聚焦过程就是移动镜头使得成像元件移动到最佳聚焦位置处。移动镜头的功能很好解决,直接使用步进机/电动机移动镜头。但是机器不知道最佳焦平面在哪里。人可以通过观察成像图片的清晰程度知道成像元件是否处于最佳焦平面处。而机器却不懂得图片是否清晰,因此需要让机器知道当前聚焦位置的成像图片的清晰度。图片的清晰度对人来说是一种直观感受,需要把图片的清晰度转换成具体的数值,即需要图片的清晰度指标,清晰度指标值越大,图片的清晰度越高,最佳聚焦位置的成像图片清晰度指标值最大。机器通过比较不同聚焦位置的成像清晰度指标值的大小,就可以知道哪些图片清晰,哪些图片不清晰。图片的清晰度指标值是使用某种特殊的数学函数计算出来的,这种数学函数称为聚焦函数(focus function),函数的输入是图片,输出是图像清晰度指标值。聚焦函数还可以计算图像聚焦程度指标值,因为图像的聚焦程度和清晰度呈正相关,图像的聚焦程度和清晰度一般都可以画上等号。

好了,有了图像清晰度指标,机器可以“判断”图片的清晰度了,而且知道清晰度指标值最大的图片是最清晰的图片,那么机器如何得到这最清晰的图片呢,或者说机器如何找到最佳聚焦位置呢。

前面已经说过,聚焦位置是离散的,所以总聚焦位置个数是有限的,所以最简单最笨的方法就是遍历所有的聚焦位置,得到所有聚焦位置的成像图片,能够最大化聚焦函数的图片即是清晰度最高的图片。下图是平方梯度聚焦函数(一种聚焦函数)曲线图
平方梯度聚焦函数

横坐标表示聚焦位置的序号,纵坐标表示清晰度指标值。注意函数曲线应该由离散的点组成,但是为了好看,我把离散的点都连起来了。图中的峰值点就是最佳的聚焦点。

遍历所有的聚焦位置这种自动聚焦算法通常要耗费很长时间,所以这种算法不会用于实践。因此,出现了各种各样的搜索最佳焦平面的算法,由上面的聚焦函数曲线可知,这些搜索算法本质上一维极值的最优化问题。

自然图像的聚焦函数曲线会有几个峰值点,不像上图那样只有一个峰值点,其实上图是显微镜图像的聚焦函数曲线。自然图像因为其景深很长,景深内不同深度的景物处于对焦状态,对应不同的峰值点。而显微镜成像物体的景深都很小,因而其聚焦函数曲线通常只有一个峰值点。

一般通用的自动聚焦算法都要考虑聚焦函数和最佳焦平面算法。也有一些自动聚焦方法,通过添加一些额外的装置,能够计算出最佳焦平面的位置,从而实现快速自动聚焦。

猜你喜欢

转载自blog.csdn.net/qq_24548569/article/details/85229704