相机镜头光学中的一些疑难问题的解释

1、变焦和对焦有什么区别?

变焦就是改变镜头的焦距(准确说是像距),以改变拍摄的视角,也就是通常所说的把被摄体拉近或推远。例如18-55mm和70-200mm镜头就是典型的变焦镜头。焦距越长,视角越窄

对焦通常指调整镜片组和底片(传感器平面)之间的距离,从而使被摄物在CCD/CMOS上成的像清晰。

我们通常说的“调焦”一般指“对焦”。有些人认为定焦镜头不能调焦的说法是错误的。

2、为什么镜头的最大光圈处通常成像不佳,或者说“成像比较肉”?

追求成像的锐利应该是所以镜头的追求。镜头的光圈值一般从F1.2 - F32不等,例如F1.8 - F16,对于普通的单反镜头来说,通常成像最锐利的光圈值是F5.6或者F8,为什么呢?这涉及到2个概念,一个是球差、一个是衍射。

衍射:超小光圈处影响锐利度的因素。

衍射(diffraction)是指波遇到障碍物时偏离原来直线传播的物理现象。在经典物理学中,波在穿过狭缝、小孔或圆盘之类的障碍物后会发生不同程度的弯散传播。

与之相关的概念有爱里斑、瑞利判据,感兴趣的可以自行搜索,在此不再展开。

球差:大光圈处影响锐利度的因素。

我们通常看到的透镜成像的简化图中,平行光通过透镜以后汇聚于一点,这点叫做焦点,其实真实的情况并非如此。如下图所示:

光线既然不能完美汇聚,也就不可能产生锐利的成像。当光圈大(光圈F值小)的时候,透镜接收光的圆面很大,于是光线的汇聚处会非常分散,造成成像不锐利。当光圈缩小的时候,透镜接收光的圆面很小,这时候光线经过透镜以后,汇聚处相对来说更集中一些,这样成像也就更加锐利了。

当然一般来说对焦不会非常准确,光圈小的时候景深更深,也会显得更锐利,但这是后话了。

当然,对于实际的镜头来说,镜头内部的镜片是很复杂的,可能有几片甚至十几片镜片,有些镜片的材质还较为昂贵,例如萤石,它们的主要作用其实就是改善镜头的光学素质,校正各种球差、彗差、色散、畸变等等。

例如EF 200mm f/2L IS USM镜头:

3、为什么有些微距镜头不能在远处对上焦?

这就要从成像的最基本公式讲起了。

u是物距,v是像距,F是焦距。

(图中 U = u,V = v,OF = F)

大家都有手机吧,用手机拍照的都知道,手机能对无穷远处(很远处)对上焦,例如你可以对半米远的茶杯对焦,也可以对50米外的高楼对上焦。

但是有些定焦微距镜头却不可以,例如它只能对10厘米处的物体对焦,在其他距离上都不能对上焦。这是为什么呢?

我们看上面的公式:当物距(u)很大的时候,1/u接近于0,此时焦距约等于像距。也就是说此时焦点和像面(底片)重合。

焦距的定义是:指平行光入射时从透镜光心到光聚集之焦点的距离。

我们通常认为定焦镜头的焦距不变,这种说法当然没有什么问题,但值得注意的是:焦距是在平行光入射的情况下定义的。另外一种准确的说法是:定焦镜头像距不变、视角不变。

普通定焦镜头可以认为焦距不变。例如50mm  F1.8, 它的最近对焦距离是450mm,物距比450mm小一点点。根据上面的公式,此时1/u就非常小了,可忽略,此时v≈F,即焦点落在像面上。可认为焦距基本不变。

但是对于佳能“百微”和尼康“105微”这样的微距镜头来说,最大放大比例是1倍,此时对焦距离就很近了,此时相对于焦距来说,1/u就不可以忽略了,这时算出来的实际的透镜焦点到光心的距离就不等于之前的焦距了。

对于“百微”和“105微”这样的镜头来说,由于其极特殊的光学结构,既可以在无穷远处合焦,也可以在很近的“不同”位置合焦。这是靠移动镜头内部的多组镜片组实现的。

说了这么多,还是没有解释为什么有些微距镜头只能在确定的位置对焦啊。为了简化问题且易于理解,我以单反加装近摄接圈为例,很多玩单反的微距爱好者由于囊中羞涩应该都买过近摄接圈进行微距创作,如果是50mm定焦镜头加近摄接圈,那么镜头的合焦距离就是一个确定的距离。如果是18-55mm变焦镜头加近摄接圈,那么镜头的合焦活动范围就是很小的一段距离。为什么呢?

插一句,接圈是什么?接圈就是一截接口处有螺纹或者卡口的钢管。好比你想够到高处的东西,所以你踩在一个凳子上面,脚底到地面的距离强行拉大了。接圈就相当于凳子。

说到接圈这又涉及到一个概念——法兰距。法兰距就是镜头卡口到相机底片的距离。那么你接了一个接圈就相当于强行拉长了法兰距。

还是看之前的公式:

由于你强行拉长了法兰距,像距v必然变大很多。而焦点到光心的距离F基本变化不大,所以像距u会大大较小。假设加了接圈以后,像距v = 2F ,那么此时u = 2F ,也就是只有物距等于2F的时候才能完美合焦。这就解释了为什么有些微距镜头不能在无穷远处对焦。也解释了,为什么变焦镜头加了接圈以后合焦活动范围有很小的一段距离,而不是固定的距离。(因为变焦镜头的焦距变化范围大一些)

4、什么是有限共轭镜头,什么是无穷共轭镜头?

我们在数学里学过共轭复数,共轭根,由此可知共轭指的是某种互相对应的2个点或者两个元素。像点和物点就是一组共轭点。又涉及到两个乱七八糟的概念叫做入瞳和出瞳,在此不展开。

无穷共轭镜头的意思是:像点对应的物点在无穷远处(可以理解为很远处)。

例如这种:

有限共轭镜头:像点对应的物点只能在有限的距离内。如下所示:

很明显,手机摄像头、普通镜头都是无穷共轭镜头,而工业微距镜头大多是有限共轭镜头,像“百微”、“105微”这样的奇葩,既可以是无穷共轭镜头,又可以使有限共轭镜头。

5、工业中,红光和蓝光使用上有什么区别?

这需要分两个方面来讲。

解像力方面:蓝光由于波长更短,衍射效应更弱,因此刻画细节的能力更强,拍摄微小的物体,蓝光是首选。而红光呢,黑白CCD对红光更敏感,但其实这优势并不大,或许在需要尽量减轻环境光干扰的时候,有一点作用。(后面可以知道,红光源的优势是价格比蓝光源便宜一些)

拍摄彩色物体方面:很多人认为区分彩色物体一定需要彩色相机,其实不然。

对于一幅RGB彩色图,转为有明暗变化的灰度图时,遵循的公式通常是这样的:

结果亮度灰阶值 = 30%红色 + 59%绿色 + 11%蓝色

也就是说,不同颜色的物体转为灰色时,亮度是不一样的。更神奇的是,当你给物体打某种颜色的光的时候,再用黑白相机拍,得到的灰度图片又不一样。如下图所示:

有人说,你费这么大劲干嘛,用彩色相机拍不就得了?首先不同相机价格差异因素是一方面,更重要的是,黑白图片的数据量只有彩色图片的1/3,这种差异就会体现在图像处理的速度上。生产速度对于工业生产来说是极为重要的。

规律大致可以总结如下:用红色光给彩色物体打光,然后用黑白相机拍摄,物体红色的部分变成亮白色,物体白色部分变成浅灰色,跟红色差异大的颜色则变成暗黑色,黑色还是黑色。(具体转换公式不详)

还有一点需要注意的是,红色光源通常要比蓝色光源便宜。红色LED光源制作简单,早就发明了出来,而蓝色LED的研制则晚了许多,2014年的诺贝尔物理学奖授予了3位曾经在蓝光LED研制方面做出卓越成就的科学家,由此可见一斑。

6、为什么工业领域绝口不提ISO这个参数?

做工业机器视觉的工程师一般都知道光圈、快门(曝光时间),但你要问他什么是ISO,他多半不知道。工业机器视觉领域有没有ISO这个参数呢?有的,只不过换了个名字,叫做gain(增益),这个参数一般没人调它,一般也不用调。

光圈、快门时间、ISO是取得合适曝光的三驾马车,三者互相合作也互相制约。ISO通常取值为100-3200。

通常ISO越高,相机感应光的能力越强,相应的噪点也越多,画质也越差。对于每一个摄影师来说,绝大多数情况下,他都希望把ISO固定在100,因为这可以获得最纯净的画面,但这几乎是不可能的。因为在暗光环境下,ISO太低,只能强行调大光圈,但是光圈是有限的,因此只能增加快门时间,但是快门时间一长,手持拍摄必然糊片。

但是在工业领域不存在这个问题,一是因为工业相机一般不动,曝光时间很长也不会糊片,另外,工业视觉设备光源自带,几乎不存在暗光环境。

7、为什么是光源的亮度越高越好?

高亮度光源至少有这些好处:光源亮度高,快门时间就能降下来,有可能可以提高采图速度;其次光源亮度高,可以大大减轻环境杂光的影响;另外,光源亮度高,可以将光圈缩小,而通常缩小光圈可以得到更锐利的画面和更大的景深,这些对于机器视觉系统来说是极为重要的。所以选择光源的时候,光源亮度越高越好。

8、什么是单颗像素质量?

单颗像素指的是传感器上的一颗像素,单颗像素质量通常直接和像素颗粒的大小有关。例如有的相机的像素颗粒是5um × 5um,而很多手机的像素颗粒大小是1.12um × 1.12um,或者1.3um × 1.3um,这个数值越大,表明单颗像素质量越好。

主要原因是,像素之间存在电讯干扰,像素颗粒越小,那么相当于相邻像素的间距越小,那么越容易产生相互干扰,带来的结果是画质纯净度的下降。

好比一个小广场有1000个大妈在跳广场舞,每个人只分到1㎡的空间,这么挤大妈们很可能要干架,但是如果只有10个大妈在跳广场舞,那么就宽敞舒服多了,说不定跳完广场舞还可以摆3张桌子打打斗地主,当然剩下一个可以等轮换。

时间: 2024-11-07 00:31:13

相机镜头光学中的一些疑难问题的解释的相关文章

Java语言中反射动态代理接口的解释与演示

Java语言中反射动态代理接口的解释与演示 Java在JDK1.3的时候引入了动态代理机制.可以运用在框架编程与平台编程时候捕获事件.审核数据.日志等功能实现,首先看一下设计模式的UML图解: 当你调用一个接口API时候,实际实现类继承该接口,调用时候经过proxy实现. 在Java中动态代理实现的两个关键接口类与class类分别如下: java.lang.reflect.Proxy java.lang.reflect.InvocationHandler 我们下面就通过InvocationHan

JS中setTimeout()的使用方法具体解释

1. SetTimeOut()              1.1 SetTimeOut()语法样例              1.2 用SetTimeOut()运行Function              1.3 SetTimeOut()语法样例              1.4 设定条件使SetTimeOut()停止              1.5 计分及秒的counter    2. ClearTimeout()    3.  Set Flag   10.1 setTimeout( )

SSM:spring+springmvc+mybatis框架中的XML配置文件功能详细解释

SSM:spring+springmvc+mybatis框架中的XML配置文件功能详细解释 2016-04-14 23:40 13030人阅读 评论(2) 收藏 举报 分类: SSM(7) 这几天一直在整合SSM框架,虽然网上有很多已经整合好的,但是对于里面的配置文件并没有进行过多的说明,很多人知其然不知其所以然,经过几天的搜索和整理,今天总算对其中的XML配置文件有了一定的了解,所以拿出来一起分享一下,希望有不足的地方大家批评指正~~~ 首先   这篇文章暂时只对框架中所要用到的配置文件进行解

Android开发中的设计模式—单例模式的详细解释

Android开发中的设计模式-单例模式的详细解释: 1. 单例模式的特点: (1).保证一个类只有一个实例 (2).提供一个能访问到他的全局访问点. (3).构造函数声明为私有的,从而阻止了在类外创建对象 2. 种类: (1).饿汉式单例模式 (2).懒汉式单例模式 3. 代码分析: (1).饿汉式单例模式: //类加载的时候对象就实例化了. private static Single mSingle = new Single(); public static Single getInstan

Android中ViewHolder模式开发的详细解释

Android开发中ViewHolder模式开发的详细解释: 1.ViewHolder的解释: (1).只是一个静态类,不是Android的API方法. (2).它的作用就在于减少不必要的调用findViewById,然后把对底下的控件引用存在ViewHolder里面,再在View.setTag(holder)把它放在view里,下次就可以直接取了. 2.convertView中的TAG: (1).Tag不像ID是用标示view的.Tag从本质上来讲是就是相关联的view的额外的信息.它们经常用

转OSGchina中,array老大的名词解释

转OSGchina中,array老大的名词解释 转自:http://ydwcowboy.blog.163.com/blog/static/25849015200983518395/ osg:: ClearNode:颜色清除节点:用于设置清除颜色缓存的相关选项,它的子节点将在场景中首先渲染,以确保正确执行颜色缓存的设置:osghangglide osg:: ClipNode:剪切平面节点:定义场景中的剪切平面并剪切所有可剪切的子节点.注意,ClipNode能够剪切的节点不一定是它的子节点,详见第七

[js]js的惰性声明, js中声明过的变量(预解释),后在不会重新声明了

js的惰性声明, js中声明过的变量(预解释),后在不会重新声明了 fn(); // 声明+定义 js中声明过一次的变量,之后在不会重新声明了 function fn() { console.log("ok") } fn(); //ok fn = 22; //赋值是允许的 fn(); // Uncaught TypeError: fn is not a function function fn() { console.log("ok !!!");} fn(); //

Mark下js最大精确整数范围,业务中出现的疑难bug

今天在跟后端联调中,偶然发现几个数据的id居然一样,我就询问了下后端这是什么情况,然而后端告诉我说并没有相同的id,于是开始一起排查问题.   排查中发现,从后端拿来的数据在浏览器控制台NetWork - Response中是正常的,然而在Preview中几个数据的id变成了相同的,着实令人费解. 然后感觉应该是这个id过长的原因,超出js可以处理的最大整数.为了证明这个猜想,在浏览器中做了以下实验. 首先,js可以处理的最大整数为 ?9007199254740992 and 900719925

转!!Java中关于Null的9个解释(Java Null详解)

对于Java程序员来说,null是令人头痛的东西.时常会受到空指针异常(NPE)的骚扰.连Java的发明者都承认这是他的一项巨大失误.Java为什么要保留null呢?null出现有一段时间了,并且我认为Java发明者知道null与它解决的问题相比带来了更多的麻烦,但是null仍然陪伴着Java. 我越发感到惊奇,因为java的设计原理是为了简化事情,那就是为什么没有浪费时间在指针.操作符重载.多继承实现的原因,null却与此正好相反.好吧,我真的不知道这个问题的答案,我知道的是不管null被Ja