求孔径的PSF

求孔径 的PSF函数。前文给过一个了,这里再给一份代码用于求PSF。

clc; clear all; close all
% 调用第一篇里的函数了。
Znm         = Zernike(1,128) * 1e-6; % 单位换算到 微米
% Znm(Znm~=0) = 1 * 1e-6; 
figure(10); 
imagesc(Znm);colormap(jet);colorbar

lambda      = 1.22 * 1e-6;
k           = 2*pi / lambda;
D           = 1.54;         % m
FoV         = 10;           % 视场大小,单位应该是 :秒
THld        = lambda/D * 206265; % 衍射极限,单位rad换算到 "
dth         = THld / 3;
Znm         = exp(1j * k * Znm); % 复数下的波前
figure(1); subplot(131);imshow(Znm,[]);colormap(jet);colorbar
FFTSize     = 1024;              % PSF图像的分辨率             
halo        = padarray(Znm,[FFTSize-size(Znm,1),FFTSize-size(Znm,1)],'post');
subplot(132);imshow(halo,[]);colormap(jet);colorbar % 只能用imshow画图
% 比较这两张图,认识到padarry的用法

xx          = 1 - size(Znm,1)/2; % Znm的中心坐标
yy          = FFTSize/2 - 1;     % PSF的中心坐标
% 可以单独运行 figure(11);imagesc(circshift(halo,[xx  xx])), 弄清楚其用法
halo        = circshift(fft2(circshift(halo,[xx  xx])),[yy   yy]);
sz          = zeros(1,2);
cen         = sz;
sz          = size(halo);
cen         = (sz+2-mod(sz,2))/2;
dk          = 2*pi./(FFTSize .* 0.01); % g.spacing_=0.01
kx          = ((1:sz(1))-cen(1))*dk;
ky          = ((1:sz(2))-cen(2))*dk;
dTH         = dk/k*206265;       % k 方向上的波矢?
thx_        = kx/k*206265;       % x 方向上的波矢?
thy_        = ky/k*206265;       % y 方向上的波矢?
SELx        = abs(thx_)<=(FoV+2*dTH); 
SELy        = abs(thy_)<=(FoV+2*dTH);
thx_        = thx_(SELx);
thy_        = thy_(SELy);
[THX_,THY_] = meshgrid(thx_,thy_);
Nth         = ceil(FoV/dth);
thx         = (-Nth:Nth)*dth;
thy         = thx;
[THX,THY]   = meshgrid(thx,thy);
halo        = halo(SELx,SELy);
HALO        = qinterp2(THX_,THY_,halo,THX,THY);
PSF         = abs(HALO).^2;
PSF(isnan(PSF)) = 0;
PSFmax      = max(PSF(:)); % figure(104); imagesc(PSF0)
PSF0        = PSF/PSFmax;  % make the brightest value =1.
figure(3); imagesc(thx,thy,log10(PSF0),[-4 0]);
daspect([1 1 1]);colormap(jet);axis xy;

运行后的结果如下

对于孔径为(这里没有给出这样孔径的代码):

 其PSF为:

 

 

 

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PSF (Point Spread Function,点扩散函数) 是指在光学系统中,当一个点光源经过系统成像后形成的光斑图案。PSF Generator(点扩散函数生成器)是一种用于产生特定类型的点扩散函数的工具或软件。 点扩散函数生成器在光学研究、成像系统设计和图像处理等领域具有重要意义。它可以通过模拟不同的光学系统、不同的物理参数和光源的变化来生成相应的点扩散函数。通过生成不同类型的PSF,可以评估和分析不同系统的成像性能,并帮助优化和改进光学系统的设计。 点扩散函数生成器通常使用数值计算方法来实现,其中包括基于衍射理论的数值模拟方法和基于光学系统参数的解析计算方法。通过在生成过程中考虑光学系统的参数如焦距、孔径等,可以生成不同形状和尺寸的点扩散函数。此外,生成器还可以产生不同波长或颜色的点扩散函数,以模拟多光谱或彩色成像系统。 在计算机图形学和数字图像处理中,点扩散函数生成器也经常用于模拟图像的模糊效果。通过将生成的点扩散函数应用于原始图像,可以模拟出不同的模糊效果,如径向模糊、散焦模糊等。这对于图像重建、图像恢复和图像修复等任务非常有用。 总之,点扩散函数生成器是一种重要的工具,它可以生成特定类型的点扩散函数,用于评估和优化光学系统的性能,并在计算机图形学和数字图像处理中模拟各种模糊效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值