Zernike相称显微镜的原理与matlab仿真
目录
1. Zernike相称显微镜的由来
1.1 对透明样本成像困难
1.2 相位成像
2. Zernike相称显微镜的原理
2.1 对透明样本成像困难的物理解释
2.2 Zernike相称的物理解释
2.3 正相称
2.4 负相称
2.5 中心暗场法
2.6 思考
3. Zernike相称显微镜的仿真
3.1 代码
3.2 结果
1. Zernike相称显微镜的由来
1.1 对透明样本成像困难
人类生活在自然界,对世界充满好奇心,不断的探索使得人类能够逐渐掌握自然界的规律,并认识到生命的美丽。得以于16世纪显微镜的发明,人类也认识到生命起源于微小的生物大分子和细胞。然而,想要欣赏到微观世界的美丽并不容易,大部分的细胞和组织都是透明的,对光的吸收很弱,成像的对比度(最大灰度与最小灰度值之差)很低,这一难题困扰了生物学家和材料学家诸多年。虽然依靠化学试剂染色和荧光蛋白标记可以提高成像对比度,并且能够观察到彩色效果,但是,细胞也会面临被杀手的风险。
1.2 相位成像
人眼或者说相机能够获取包含样本信息的图像,是因为样本在被光照射之后,对光有所吸收且吸收有差异,使得到达人眼视网膜的光振幅不同。如果吸收没有差异,那么人眼看到的要么是一片白,要么一片灰,要么一片黑。
当光照射透明样本时,振幅的变化却相当小,人眼很难观察到样本信息。这时,能够利用的只有光波的相位,但是,无论是人眼还是现有的光电传感器,都很难直接观察到光波几百Thz频率的相位信息。这时,通过将光波的相位信息变为振幅信息的相位成像方法成为了救世之主。而Zernike相称就是一种非常优秀的相位成像方法,1953年的诺贝尔奖足以说明它的影响力。
2. Zernike相称显微镜的原理
2.1 对透明样本成像困难的物理解释
假定利用显微镜观察一个透明样本,照明光波为平面光波,样本的复振幅透过率为
(1)
其中,是样本的相位,
是样本平面的二维空间坐标,
是单位虚数。因为透明样本吸收几乎没有,故振幅透过率为1(即e指数前系数为1),与此同时,因为透明样本在显微镜下观察时,通常被放置在与其折射率相匹配的培养液或者做成微米级别的切片,其相位一般很小,故可以对
作泰勒展开,得到
(2)
使用普通显微镜直接观察时,为简单起见,假定方法倍数为1,不存在衍射和像差,那么像的强度分布为
(3)
其中,时像平面的二维空间坐标。由此可见,拍摄到的图像对比度为0,要么是一片白,要么一片灰。
2.2 Zernike相称的物理解释
1935年,Zernike提出了观察位相物体的相衬法。Zernike认为,之所以观察不到相位引起的光强变化,是因为直接透过样本的强背景光(在公式(2)中实数1)和相位的弱衍射光之间存在
的相位差,所以没办法干涉成像,那么如果他们能够同相位,就能观察到相位引起的光强变化。
但是,因为透过样本的背景光和衍射光几乎是耦合在一起,必须先想办法把它们分开。办法也很简单,加透镜即可,如图1所示,光源S发出光经过透镜L1准直之后照射到物平面P1上,直接透过的光会经过L2汇聚到焦点附近(零频背景光),而衍射光在焦平面的分布分散(低中高频衍射光),这时就非常适合在焦平面P2放置一个相位板,以改变零频和其他频率成分之间的相位关系。相位板的分布函数为
(4)
![](/assets/blank.gif)
2.3 正相称
考虑焦平面,光场分布为投射光波的频谱,即对式(2)作傅里叶变换,得到
(5)
乘上相位板的分布函数,即对第一项附加的相位延迟,得到
(6)
再作一次傅里叶变换,就能够得到像面上的光强分布为
(7)
可以看到,此时像的强度与物体的相位成正比,称为正相称。
2.4 负相称
同样的,如果附加的相位是,那么滤波后的频谱就变成了
(8)
再作一次傅里叶变换,就能够得到像面上的光强分布为
(9)
此时,此时像的强度与物体的相位成反比,称为负相称。
2.5 中心暗场法
正相称和负相称都使得相位信息可视化,但是,强度变化都是叠加在一个均匀背景‘1’上,此时的对比度为
(10)
可以发现,对比度仍然不高,想要提高对比度,就必须压缩零频。为解决这个问题,相位板除了对零频添加相位延迟之外,还添加了吸收项,像的频谱就变为
(11)
再作一次傅里叶变换,就能够得到像面上的光强分布为
(12)
此时的对比度为 ,所以,想要提高对比度,只需要减小
,当
接近于0时,像的强度为
(13)
此时,称为中心暗场法,这也是Zernike相称显微镜所采用的方法。
2.6 思考
如果添加的相位是从0到逐渐变化,对比度会如何变化?不妨推导和仿真一下,很有趣的。
3. Zernike相称显微镜的仿真
3.1 代码
clc;
clear all;
close all;
%% (a) 初始化物体
jpg_iamge = imread('Rem.jpeg'); %读取相位图像,可以随便换,雷姆,狂三啥的
gray_iamge = double(imresize(im2gray(jpg_iamge),[250,250]));
gray_iamge = flipud(gray_iamge); %imagesc()函数的通病,需要反转一下,用imshow()就没事
gray_iamge = gray_iamge./max(max(gray_iamge));
[M,N]=size(gray_iamge); %get image sample size
phase=sqrt(gray_iamge)*pi/100;
ug=exp(1i*phase);
L=0.3e-3; %image plane side length (m)
dx=L/M; %sample interval (m)
x=-L/2:dx:L/2-dx;
y=x;
%% (b) 普通成像
figure(1) %check ideal image
imagesc(x,y,abs(ug).^2);
colormap('gray'); colorbar;
xlabel('x (m)'); ylabel('y (m)');title('普通成像');
axis square
axis xy
figure(2) %horizontal image slice
vvalue=0; %select row (y value)
vindex=round(vvalue/dx+(M/2+1)); %convert row index
Ig2 = abs(ug).^2;
plot(x,Ig2(vindex,:)','r:');
xlabel('x (m)'); ylabel('Irradiance');
title('普通成像;(y=0m)');%% (c) 正相称
Ug = fftshift(fft2(fftshift(ug)));
beta = pi/2;
Phase_modulation = exp(1i*beta);
Ug2 = Ug;
Ug2(M/2+1,M/2+1) = Ug2(M/2+1,M/2+1)*Phase_modulation;
uo = fftshift(ifft2(fftshift(Ug2)));
Io = abs(uo).^2;
figure(3)
imagesc(x,y,Io);
colormap('gray'); colorbar;
xlabel('x (m)'); ylabel('y (m)');title('正相称;\beta = \pi/2');
axis square
axis xy
vvalue=0; %select row (y value)
vindex=round(vvalue/dx+(M/2+1)); %convert row index
figure;
plot(x,Io(vindex,:)','r:');
xlabel('x (m)'); ylabel('Irradiance');
title('正相称剖线;\beta = \pi/2;y=0m');
%% (d) 负相称
beta = 3*pi/2;
Phase_modulation = exp(1i*beta);
Ug2 = Ug;
Ug2(M/2+1,M/2+1) = Ug2(M/2+1,M/2+1)*Phase_modulation;
uo = ifftshift(ifft2(Ug2));
Io = abs(uo).^2;
figure;
imagesc(x,y,Io);
colormap('gray'); colorbar;
xlabel('x (m)'); ylabel('y (m)');title('负相称;\beta = 3\pi/2');
axis square
axis xy
figure;
plot(x,Io(vindex,:)','r:');
xlabel('x (m)'); ylabel('Irradiance');
title('负相称剖线;\beta = 3\pi/2;y=0m');
%% (e) 中心暗场法
beta = pi/2;
Phase_modulation = 0.01*exp(1i*beta);
% Phase_modulation = 0*exp(1i*beta);
Ug2 = Ug;
Ug2(M/2+1,M/2+1) = Ug2(M/2+1,M/2+1)*Phase_modulation;
uo = ifftshift(ifft2(Ug2));
Io = abs(uo).^2;
figure
imagesc(x,y,Io);
colormap('gray'); colorbar;
xlabel('x (m)'); ylabel('y (m)');title('中心暗场法;\beta = 0.01exp(\pi/2)');
axis square
axis xy
figure;
plot(x,Io(vindex,:)','r:');
xlabel('x (m)'); ylabel('Irradiance');
title('中心暗场法;\beta = \beta = 0.01exp(\pi/2);y=0m');
3.2 结果
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
Zernike相称显微镜的原理与matlab仿真相关推荐
- 光栅原理及其c语言仿真,光栅原理及MATLAB仿真
<光栅原理及MATLAB仿真>由会员分享,可在线阅读,更多相关<光栅原理及MATLAB仿真(8页珍藏版)>请在人人文库网上搜索. 1.取样光纤光栅的原理及基于MATLAB的反射 ...
- matlab 光栅 傅里叶,光栅原理及MATLAB仿真汇编.doc
光栅原理及MATLAB仿真汇编 取样光纤光栅的原理及基于MATLAB的反射谱仿真 取样光纤光栅其实与相称光纤光栅基本上一致,不同的地方在于,相移光栅是在均匀布拉格光栅的某一点处引入相移,导致在反射谱中 ...
- matlab 脉冲压缩算法,线性调频脉冲压缩原理及其MATLAB仿真+程序
摘 要:脉冲压缩技术在现代雷达系统和超带宽通信系统等领域具有越来越重要的应用.本文首先阐述了线性调频脉冲压缩的基本原理,并提出了增大信号等效带宽可以提高雷达距离分辨率,然后分析了匹配滤波器的特性,给出 ...
- 光栅原理及其c语言仿真,取样光栅原理及MATLAB仿真.doc
取样光纤光栅的原理及基于MATLAB的反射谱仿真 张睿 摘要 文章主要运用了基于耦合模理论的传输矩阵法来分析取样光栅的原理,并利用MATLAB模拟和分析了取样光栅长度.调制折射率强度.取样光栅节点的长 ...
- 数字PID控制算法原理及Matlab仿真
引言 最近碰到一个项目需要用到PID控制算法,于是在网上找了一些资料学习了一下,发现网上对于PID算法的Matlab仿真方面的内容比较少,所以我就把我自己所学习到的内容分享给大家.本次博文主要介绍了位 ...
- 基于FMCW的测距原理及matlab仿真
FMCW是什么 FMCW(Frequency Modulated Continuous Wave),即调频连续. FMCW实现测距 利用发射信号与接收信号进行混频,得到包含目标距离和速度信息的中频信号 ...
- (DUC/DDC)数字上混频/正交下混频原理及matlab仿真
数字上混频.下混频matlab仿真,读者有兴趣的话后面更新FPGA实现代码. 代码中lowpass低通滤波器用matlab内部APP Filter Designer生成,具体配置如下: 仿真运行结果: ...
- DBSCAN原理及matlab仿真代码
本文原理转自 https://www.cnblogs.com/pinard/p/6208966.html DBSCAN(Density-Based Spatial Clustering of Ap ...
- MIMO大规模天线阵列原理与matlab仿真(含GUI)
一 设计实现流程 1.MIMO系统原理 传统的无线通信系统是采用一个发送天线和一个接收天线的通信系统,即单输入单输出(SISO)天线系统.但由于单天线系统的信道容量较低,不能满足4G.5G数据传输需求 ...
最新文章
- python安装成功的图标_ubuntu下:安装anaconda、环境配置、软件图标的创建、成功启动anaconda图形界面...
- 基于深度学习和传统算法的人体姿态估计,技术细节都讲清楚了
- git ssh配置完后拉取代码_Git中SSH key配置秘钥生成和如何拉取代码
- mysql 轨迹数据存储_python爬虫26 | 把数据爬取下来之后就存储到你的MySQL数据库...
- A-Frame 简介03
- VS VC 读取 INI文件
- 小试MemSQL (The World's Fastest Database?)
- Sigar 编译笔记
- 软件项目管理实用教程(人民邮电出版)第一章课后习题
- 希望自己活成什么样的人
- windows设置定时自动关闭应用
- c语言定义数组uint,c - 将uint8_t数组转换为C中的uint16_t值 - 堆栈内存溢出
- MySQL分库分表总结及面试案例
- 数据仓库技术(Data Warehouse Technologien) 第三章节 多维数据模型(3)
- Learn OpenCV之Convex Hull
- power app 与 flow 咋实现前后端互动嘞
- mysql pt kill脚本_使用pt-kill为MySQL保驾护航
- 这里也有计算机房英语,这里也有风景_800字
- 高校逐梦元宇宙,是风口还是噱头?
- ESP8266/32 (Arduino)驱动SHT30获取温湿度