成像,我在讲傅里叶光学的知乎文章中简单谈了一下。
https://zhuanlan.zhihu.com/p/217503316zhuanlan.zhihu.com成像本身是在对待测样品的分布进行观测,也就是看它长什么样,以人眼为例,人眼作为成像系统,不论看什么东西,首先视网膜作为接收端接收了一幅图像,尽管我们觉得我们看到的图像是连续的,但是事实上视网膜一定有一个个像元,我们看到的图像是一个矩阵,矩阵中的每个元素代表相应位置像元接收光的强度,它本身是一个强度的响应,或者说一个神经刺激,然后这些神经刺激经过大脑的整理,最终呈现出看到的图像,然后再通过对图像的分析,知道一些列信息,比如看到了谁,看到他在干什么,通过左右眼不同的图像,又能分析出来看到东西有多远等等的结果。
计算成像大体也就是如此,一个采集记录系统,记录的数据通过处理得到其分布能够与样品对应的像,用以进行后续对于具体问题的分析。
我个人比较习惯从另一个角度讨论这个问题。样品有一个分布,它的分布客观存在,它可以用一个图像表示出来,这个是成像的前提,样品分布作为成像过程待求解的结果,我们不妨称之为x,注意这个x不是数字,可以是矩阵(有时候可能还是复数矩阵),或者说图像。我们有一个固定的采集系统,当我们的样品不同,采集的图像就不一样,这是废话,但是非常重要,后面我可能单独解释一下。采集的图像和样品分布x,不见得是相同的,但是一定有关,成立一个映射,不妨称之为f(),所以我直接采集的图像,就叫y吧,那就构成了一个关系,y=f(x),那么在已知y并且已知f()的情况下,求解x,这就是成像过程。
如果y=1,f(x)=2x,那求解x就很简单的,但事实上,通常x比较简单且确定,就是一个矩阵或者向量(列采集)甚至点(点采集),而f()可以任意复杂,它可以包含很多的变换(传播、傅里叶变换),甚至它可以只是一个约束条件,而并不能构成一个确定的等式,那么在这种情况下,或者说实际上就是这样,通常求解不出正确的x,真正求解出来的是x的近似,或者说它的解的集合。
我引用信息的说法来解释这个问题,信息论认为,可以用信息熵的大小来衡量信息的多少,最经典的例子,预测足球赛,假设所有队伍实力均等,比赛开始前,预测的难度最大,因为可能的赛程结果有很多种,它的解的空间最大,且解空间中各个具体的解的概率不相上下,信息量的限制让我只能够排除掉没有参赛的球队夺冠的可能。那么随着比赛的进行,有球队不断淘汰,实际上冠军的可能就会落在越来越少的球队身上,解的空间缩小了,而如果我们知道球队的一些其他信息,比如实力对比,那么虽然解的空间没有缩小,但是解的概率出现了不同,存在一些解有更高的概率成为正确解,同样可以帮助到我们的预测。
现实中的光场,我们不考虑什么量子力学,通常认为现实中的光场都是连续的,相当于一个可以用于表示样品分布的矩阵,像元尺寸无穷小,像元个数无穷多,这样才能把这个光场表示的清楚。但是现实是,采集器只能是离散的,采集器上每一个像元采集的都不是无穷小的范围,而是一个尽可能小的范围上的光场的强度的和或者说积分。我们采集并重建得到的有限像元数的图像,实际上都可以看做一个理想精确的解的解集合,算法上来说可以把它变成一个像元尺寸任意小,像素数任意多的图像,相当于对于精确解的估计值,是存在于当前信息量下的解集中的一个解。
存在一类计算成像方法,它们可以实现所谓光场的成像,比如全息,其本质就是既能对样品或者说目标场的振幅分布进行成像,也可以对目标场的相位进行成像,并且还有一个附加功能,即可以预测目标场传播到任意位置的分布的成像,这一类方法我后面会列举很多种进行比较具体的介绍。但是需要知道,这类方法都面临一个共同的问题,不论图像采集器如何先进,对于一个复数振幅的光场,采集器都只能采集强度,它的相位必须通过一种实验或者计算的方法来得到。
前面的东西都是铺垫,我希望借着这些内容,通过分享一些具体的成像案例,来介绍我所认为的计算成像。
直接成像
我这里说的直接成像,并不是一个严格的概念,我只是想泛指一类成像,就是直接采集的图像就已经是或者是接近最终的成像结果,不需要经历某种变换或者过多的矫正,典型的就是我们平时的拍照。我想很多人现在应该都知道,平时用的数码相机上不是只有图像采集器,它是一定要有透镜或者透镜组的,通常的直接成像实验中,用不带镜头的图像采集器,成像系统也要添加相应的透镜之类的元件。它们想要建立的映射就是f(x)=x,而采集图像实际上并不是样品长什么样,确切的说应该是人眼接收面放在图像接收面上透过透镜组看样品的方向所看到的样子,以我讲过的4f系统为例,后透镜的后焦面是样品的一个清晰成像面,也就意味着,再该平面上采集的分布会接近或者近似等于样品平面上的分布。
数字全息成像
通常来说,全息都属于相干成像,也就是说光源要使用相干光源,以确保能在接收平面产生有效的光的干涉,干涉其实指的就是所谓的相干叠加。现实的光场是复振幅分布,采样器接收的就是这个复振幅分布的模的平方
畸变样品信号相同,在载波信号不同的情况下采集的强度和也不相同。对于相干成像,
全息的方法可以得到样品的复振幅分布,以透射为例也就是透过率和相位分布,实际上求解出的相位分布取决于到达图像采集器平面时两束光之间的光程差,也就是说全息方法求解的相位,实际上反映了样品的某些会影响光程差的特点,如透射型样品的厚度,折射率,反射样品的摆放位置等。
叠层成像
这种成像方法很新,是近几年才提出的成像方法,和全息一样属于对光场复振幅分布的成像。
叠层方法的实验系统相对来说比较简单,除了照明光源和图像采集,它通常不需要借助透镜,只需要待测样品和用于限制光束尺寸的方式(如小孔、透镜等)。
它的大致思想是这样,光源的光通过小孔后照在样品的某一个位置上,最后成像在记录平面上,得到一个强度分布,不妨称之为
即便单纯的从解方程的方向考虑,对于每个区域的光场,都是振幅相位两个相互独立的数值需要求解,那么相应的也都需要至少两个有效的已知关系,因此必须要求带求解的有效区域位于小孔位置的重叠区域。
有方程组了,接下来就是具体的求解,或者说重建过程。通常的重建算法,先假设待测的分布是一个常数图像或者随机图像,也就是和待测样品暂时还毫无关系的猜测结果,这样一个
整个重建过程,可以看成是一个在众多约束条件下的求解(或解空间),而基于这个想法,可以预测一个结论,也就是越多个小孔重叠对应的区域复振幅求解结果可能也会越准确,因为用于求解它的参数(信息)会更多一些。
除了叠层成像之外,还有一种有些类似的技术,叫做傅里叶叠层,类比的来说,傅里叶叠层就是对目标光场的频谱分布进行叠层成像。样品本身存在唯一解,那它所对应的频谱分布也就是唯一解。它的实验设置就通过一个照明光的阵列(LED阵列,非相干),每个光源分别照明样品采集图像,相当于从不同的方向进行照明,照明光的方向不同,也就是说光的幅角有所不同,也就相当于不同照明光所对应的光场分布之间具有固定的相移,学过傅里叶光学的话,可能会知道一个结论,两个函数或者分布之间的空域有位移/相移,那么它们对应的频谱之间应当有相应的相移/位移,也就是说,在不同照明光下采集的数据,实际上它们的频谱对应的是目标频谱上的不同区域,相当于在频谱上放一个叠层的小孔进行采集,而这个孔径就对应系统的截止频率。傅里叶叠层的重建方法也就是对目标频谱进行叠层重建的过程,它直接得到的是待测样品的频谱复振幅分布,进行逆傅里叶变换即可得到相应的光场复振幅分布。
像素超分辨
一般认为光学系统(不考虑采样)都有一个成像分辨率的极限,一般沿用瑞利极限,超分辨一般指用某种手段来进行能够超过瑞利极限分辨率的成像,不过这里我要介绍的像素超分辨。像素超分辨所要打破的是采集器的像素数和像元尺寸的限制。对于一个图像而言,它可以仅用一个像素来表示,那也就是图像各像素点值的平均,那么在这个单像素的图像上,也就很难看到图像分布,也无法判断图像对应的样品到底是什么,当我像素数增多(视场大小不变),相应的图像有效信息也就增多了,像素数越多,越具备展现细节的能力,但是要求每个像素的点值都是准确的,而不能是估测值。
假设系统用一个像素个数确定的图像采集器对样品直接成像,假设就是3*3的图像,那么必然存在一种9*9的分布可以用于表示这个样品,问题是,当我采集了3*3的图像,如何估计9*9的图像?假设3*3图像上一个像素的值为x,那么它所对应的区域在9*9图像上则表示为九个像素值,
因此通常的像素超分辨方法,会先上采样待处理的图像,先达到目标的尺度,但是此时的图像的分布还并不准确,需要更多的已知条件,或者说约束条件来进行填充。典型的方法如亚像素位移,对样品多次采集,每次采集位置之间相差很小的距离,这个距离已知,其在亚像素级别,拍m张低分辨率的图像,x的数量增多了,且各自具有已知的差异,就可以联立方程组,在这种情况下,符合约束条件的y的分布数量也就减小,也就可以得到更为精确的高分辨率结果。具体的实施方法通常在此就不再过多介绍,感兴趣的同学可以了解例如POCS,MAP等等算法。
OCT
OCT(optical coherent tomography,光学相干层析),跟前面的成像方式有一种本质性的不同,在OCT系统中,实际上探测器直接采集的是样品的变换域的强度分布,它虽然叫相干层析,实际上使用的是低相干的光源,并且要利用这种低相干的特征。OCT系统通常对反射样品进行成像。
与全息类似的,OCT的系统需要两路光,分别为照明样品的物光与用于干涉的参考光,光源低相干,也就是说照明光中的波长并不单一,表现在光谱上有展宽,同样由于低相干,物光和参考光只在它们之间光程小到一定范围的情况下发生干涉,在发生干涉的范围内,光程差越接近于0,干涉的条纹频率越低。参考光的光程确定,假设样品为部分反射平面镜(可能没这么个东西,为了方便理解),与参考光的光程差确定且已知,那么此时这个平面上反射的光越多,相应的频率的干涉就越明显,也就是说形成的干涉条纹对应的正弦分布的振幅就越大,有了这两个条件,也就能够确定如何用OCT系统采集到的干涉图进行成像,不同位置反射光与参考光干涉形成了不同频率,不同振幅的干涉条纹,频率与光程差相关,也就是与拍摄点的轴向位置相关,而振幅与相应的反射率相关,这些干涉条纹加在一起,如何分离?同样在讲傅里叶光学的时候,说到了傅里叶变换的一个重要功能,加在一起的各频率成分,其傅里叶变换域上会相互分离,也就是说,对采集的OCT干涉图进行傅里叶变换,那么它的各空间频率实际上对应了各分布所在的轴向位置,而各频率分布的振幅高低,表示了这个位置上的反射势的大小,因此也就计算出来样品的反射势分布。
OCT按照具体做法分为很多种,但是其基本原理都是如此,实际上有很多成熟的医学造影技术,其基本原理都是一样,如MRI(核磁共振),CT,B超等等,只是使用的信号载体有所不同以及相应使用的设备有所不同,应用场景有所不同,其成像原理并没有差异。
总结一下,说了很多种成像方法,都没有介绍的太详细,我只是想通过这些谈一谈我个人对于计算成像的看法,也就是把成像过程看成是在解方程,在我看来这是成像方法的一个基础框架,而套用这个框架,在分析成像系统时,首先可以判断是否可解(像素超分辨如果只有单帧,即一个方程多个未知数,应当无法得到很精确的解),其次可以根据这套逻辑,搞清楚已知的和待求解的是什么(既可以通过已知图像和系统推测样品,也可以通过已知样品和成像推测系统,甚至可以已知样品和系统预测成像),总之,仅借此文,传达个人的一点想法。
最后,标志性的例行重申,我希望我的科普文章面向的人群是一些非专业感兴趣的人,或者本科生即将接触这些内容,或者学完没学懂,甚至刚读研相关专业但是甚至对这些核心课程都缺乏入门级认识的人,可以定性的先了解一下,再在此基础上填充血肉去深度了解或者进入科研工作,当然也欢迎专业的大佬来批评指正,因此这次写的内容包括很多个人的主观认识,所以其实非常需要有大佬来批评指正。同样如果反响好或者说如果有反响的话,我还会以这个标准再写更多光学方面各个课程科普入门级别的文章。今后应该还会更新一些其他的成像方法,如果内容中有哪些部分我理解的不准确,还请各位大佬批评指正。