观前提示,作者不是光学相关的专业人士,也不是以严谨闻名的数学家,因此内容中可能会存在些许(大量)不够严谨的地方,请忽略,但是,出现错误的地方还请指出,作者一定会进行改正,谢谢。
几何光学解释不了的东西
我们上初中的时候,有一个经典的关于凸透镜成像的问题,就是如果我们遮挡住了一步分的凸透镜,会不会影响成像。老师说的很简单(要不简单就得讲到高考了),图像会变暗,但是不会影响凸透镜成像。图像变暗很简单,入射的光像变少了,所以焦点的能量变小了(准确说是功率),所以图像当然变暗了。但是就没有其他影响了吗?从几何光学的角度来看的话,好像啥也看不出来。它就是遮住了光,其他光还是能正常成像。

但是当我们深入天文望远镜的时候,总是会有一种说法,叫折射镜锐度高,反射式望远镜和折返式望远镜的锐度会差一些,而且是遮挡比越大,图像越糊,这是什么情况。
而且这也不能解释为什么在用鱼骨板对焦的时候会出现3条光线的问题——我只是遮住了一部分光线而已,为什么会对星点产生这种影响。
信息光学是什么
在深入研究这个问题之前,我们需要补一点小小的知识点。
一些前置的小(啸)知识
首先我们来看看一个完美的透镜会遇到的问题,衍射。衍射基本上决定了一个望远镜的分辨力极限,比如我们在查望远镜参数的时候经常会看到的多少角秒,就是对应的这个口径的分辨力极限。例如一个RC8,它的口径取203mm,那么根据经典的不能再经典的艾里斑角半径,有:
\(sin\theta =1.22\frac{\lambda}{d} \)我们把RC8的参数带入进去,并且假设我们观测的波长是550nm,就能算出系统角分辨力大约是0.68角秒。
显然我们没有考虑到RC8相对巨大的遮挡比。
其实几何光学没能解决的问题,基本上都是遇到了类似衍射这种波动光学的问题,一想到波动光学的问题,就会有一大堆的波与波之间的叠加之类的种种复杂的公式和各种光程差之类的东西,看到就让人头大,我们先把它们放在一边,先来看看一个看似完全不相关的东西,一个随着时间变换的电压(或者别的什么)信号U(t),假设它是一个方波

假设横轴是时间,纵轴是信号的幅度,可以看到方波就是一会是-1, 一会是1的一个函数
我们可以发现这个方波背景上还有一些其他的波,是不是非常像三角函数呢,尤其是蓝色,它不就是一个三角函数吗。其实这张图片是一张经典的科普傅里叶分解的图片,我们在使用一组三角函数,并且将他们一个一个加起来,就会形成蓝色(一个正弦波),黄色(蓝色和一个频率更高,幅度更低的正弦波相加),绿色(不解释了)等等,最终就会变成黑色的方波。
在研究傅里叶分解之前,我们必须明确一个问题,傅里叶分解,是将一个(周期)函数分解成一堆的正弦波的方法,但是我们还需要考虑一个问题,就是正弦波的相位问题。实际上的傅里叶分解,我们更多称为傅里叶变换,它将一个复信号变换为一组有含义的复数, 我们利用复数的性质,将相位也包含在了傅里叶变换中,要是想要深入研究它,可以参考关于复变函数与积分变换相关的教材。
二维傅里叶变换
我们之前说的信号是一个关于时间的信号,但是其实傅里叶分解没有说一定是要对时间进行分解,实际上傅里叶分解是一种数学方法,只要你是一个函数,符合傅里叶分解的条件,那么我们就可以对它进行分解。
对于光学来说,我们关注的物体的成像,用比较专业的术语来说就是物平面与像平面之间的关系,既然是平面,显然要用二维的函数来研究它,假设我们成像的波长只有一个,那么成像就变成了一种从物平面到像平面的一种变换,而从物平面到成像元件时的光束长什么样子就决定了最终能够成的像长什么样子,我们既然在研究望远镜,那就直接假设传过来的光是平行光,并且平行光轴入射。那么被遮挡的部分与不被遮挡的部分就构成了一个二值化的函数:
\(u(x,y)=\begin{cases}1, &光能透过去的部分\\ 0, &光透不过去的部分\end{cases}\)我们来在Python里面利用numpy和matplotlib来绘制一个圆形的二值化函数

它表示了一个无遮挡的望远镜的平行入射光线,我们把它叫做望远镜的孔径函数,那么它对平行光的成像长什么样子呢?其实我们只需要对它进行二维傅里叶变换就可以知道了。
为什么傅里叶变换会展示出像空间,这里就不再深入研究了,感兴趣的话可以去参考一些信息光学的教材或者百科。

好怪呀,正常望远镜的成像不应该是一个艾里斑吗。我们来仔细看看这幅图像的含义,我们假设在图像中点建立一个xy坐标系,那么我们对照之前的傅里叶变换,这幅图里面应该包含孔径函数的各各频率分量的幅度,在这幅图上也就是亮度(与天文摄影时的图像类似,这张图我也进行了非线性拉伸,不然一片黑)。那么问题就在与这幅图上每个点的坐标有什么含义了。
从这幅图来看,中心点是最亮的,然后向周围慢慢的衰减,跟艾里斑一样,但是其中还有相当多的像摩尔纹一样的东西,那我们来改变一下图片来做做实验,就可以搞清楚每个点坐标的含义了。
现在我们向原来空白的部分添加上一些竖直的条纹。

然后再做傅里叶变换,这个时候就出现了一些有意思的东西。

我们可以发现右图的傅里叶变换出现了一条非常明显的横线,而对于左图来说,有一个竖直向下的空间频率(就像是空间中的方波),也就是说横着的空间频率对应着横线,竖着的空间频率对应着竖线,如果你手头有鱼骨板的话,看看你的鱼骨板长啥样:

那我们对它做二维傅里叶变换会变成什么样子呢?

这看起来是不是有点像对上焦点的时候,用鱼骨板出现的3条亮线了吧。
解释到这里,我们可以看到我们并没有去考虑波动光学中每一条光线与其他光线的作用,而是通过傅里叶变换的方法对光线进行分析,粗略的解释了鱼骨板合焦时的图像,实际上,信息光学就是以二维傅里叶变换为基础的研究成像的一门科学,二维傅里叶变换几乎是信息光学的核心。但是,我们仍然留下了很多的问题,比如为什么这几张使用Python的仿真会留下很多奇怪的“残影”,副镜遮挡是怎么影响我们进行拍摄时的分辨力的等等,这需要我们对傅里叶变换有着更深的理解,并且会引入一个信息学中很重要的定理,也就是奈奎斯特采样定理。
奈奎斯特采样定理
准确解释奈奎斯特采样定理是一件艰巨的任务,但是我们还是可以通过一些简单的图像来粗略理解一下这个定理,首先我们就要搞清楚采样是什么意思。
采样
我们在电脑上处理的天文图像,或者是传感器在镜筒上采集到的温度信息都是被量化的,或者叫数字的,一般会按照某种数据格式被计算机或者说数字电路存储和处理,比如各种计算机语言中有各种int8, float32, float64这样的数据类型。但是实际上真实的世界中存在的数据几乎总是连续的,你的传感器测量出了现在镜筒的温度是10摄氏度,但是可能实际上是10.0235253242345…度,从真实世界上采集数据的过程我们就叫做采样,而采样是通过一个叫做模拟数字转换器(ADC, analog to digital converter)来实现的,它在采样的过程中,将一个电压(我们几乎总是将各个物理量转化成电压)转化成计算机所理解的二进制数,它转化出的二进制数按照某种协议被计算机处理成我们能理解的单位,比如10摄氏度,我们在查看天文相机的时候往往会看到ADC位数,比如常见的IMX715会转化成12bit, IMX571是16bit, 这个位数就是CMOS中内置的ADC将采集到的电压转化为数字时的位数。
比如一个ADC能对0V到1V的电压转化为12bit二进制数,那么它就能将1V这个范围的电压分划出4096个值,而对于16bit的ADC就是65536个,所以一般来说位数越高,采样下来的图像越不容易出现色阶断层之类的问题。
但是除了采样精度,ADC在采样的时候还有一个关键的问题,那就是ADC在将模拟量(即真实世界中的量)转化为数字量的时候,会消耗一定的时间,比如对一个正弦波:

我们可能只能采集到一些离散的点,这里我们的红色的点就是我们的采样点。
实际上我们能看到的就只剩下这些点了,图中的蓝色函数是真实世界中的,但是在数字系统中并不存在,那我们拿着一堆点这么能确定我们采样得到的函数原来长什么样子呢?如果我们采样的够密,那就无所谓了,但是,这样会消耗很多的资源,尤其对于ADC来说,采样间隔的缩短会让ADC的价格翻一翻,所以我们采集的不一定够密,如果不够密集会出现什么事情呢?

假设红色是我们采集的真实信号,黑色是我们采集的点,那么实际上我们很有可能从中重建出蓝色的正弦波,但是实际上它压根不存在啊!因此必定对于某一个频率的信号,我们最少要采集多少点(或者说采样率要多少)才能重建它呢?
采样率与采样定理
从直观上来看,如果信号变化的速度很慢,那么相应的我们的采样间隔就可以很大,如果用数学一点的语言来看的话,信号变化的速度就对应到信号的频率,采样间隔我们也可以等效成采样频率,采样频率有:
\(f_{采样}=\frac{1}{t_{采样间隔}}\)那么信号的频率是什么呢,傅里叶变换!傅里叶变换将信号中存在的各个频率分量拆分了出来,假如一段信号中含有0到500Hz的频率,那么我们需要的采样频率是多少呢,奈奎斯特指出了需要的最低采样频率是信号中含有的最高频率的两倍,也就是1000Hz, 这就是奈奎斯特采样定理。至于这个定理的证明过程,需要涉及一些复杂的数学知识,所以我们就又又又从略了。
混叠现象
奈奎斯特采样定理告诉了我们采样频率的下限,那如果我非要违背这个定理会发生什么事情呢?

当然就是重建错误了,又是这张图,我们会将高频信号和低频信号弄混,这就是混叠现象。
下面我们来在真实世界中看看混叠长什么样子吧。


黄色是我们输入的信号,白色的图形就是黄色信号对应的频谱图,我们可以看到输入的信号就是方波,方波是由1次、3次、5次等等奇数次的谐波构成的,我们可以看到白色的峰从图左边代表低频向高频移动过去,注意观察在右边的“墙”的位置, 白色的峰就像撞上了“墙”,被反射了回来,这就是信号的混叠现象。
铺垫到这里,我们研究的是不是又回到了时间域上,那么空间域上的二维傅里叶变换是不是也一样呢,现在我们来再看看鱼骨板的二维傅里叶变换图:

仔细观察一下黄色箭头指向的位置,是不是有非常多的线“撞”到了图像的边缘,然后被反射回去了,这就是二维图像的混叠在频谱图上的表现了。
时间上的采样率是采样间隔,那空间上的采样率当然是传感器的像素密度了,这幅鱼骨板图像是计算机生成的,并不够细腻,所以出现了这种混叠的现象,在正常使用中,鱼骨板的图像是不会出现这种情况的,因为傅里叶变换是在自然的情况下,从鱼骨板对望远镜的遮挡到CMOS的成像面的过程自然完成了傅里叶变换,所以我们在对焦的时候几乎不会发生这种情况。
仿真的问题
解决了混叠的问题,我们还有一些其他的问题,比如对一个圆形的孔径函数,为什么进行傅里叶变换后不是一个艾里斑呢?
这个问题本质上与鱼骨板问题一样,都是计算机对真实世界不完美的近似,在圆形的孔径函数那幅图中,我们生成的圆形并不是圆形,它总归是像素的拟合,如果我们用更加精细的图像,应该会取得更好的效果。

是不是比之前要精细多了呢。(这个图片原图有TM 150多MB的大小,现在是被压缩后只剩下几百Kb的大小了)
未完待续…
科普信息光学是一个大工程,写这篇文章的本意是想解释一下跟鱼骨板想关的问题,但是实际上信息光学跟我们的天文摄影处处相关,所以不出意外的写的超长了,所以先写到这里吧,我们来列一下还没有解决的问题
- 鱼骨板没合焦时候为什么要长那个样子
- 遮挡是怎么影响分辨力的
这两个问题背后又会是这样一篇超长的文章了看来。
坑还是不能随便挖的呀。
0 条评论