吾爱光设

 找回密码
 注册
会员须知
会员须知
实用帮助
实用帮助
查看: 283|回复: 4

求将PSF转换成MTF图的matlab代码

[复制链接]
  • TA的每日心情
    开心
    2025-4-11 10:56
  • 签到天数: 269 天

    [LV.8]以坛为家I

    22

    主题

    33

    回帖

    3

    积分

    小白

    积分
    3
    发表于 2025-4-6 22:45 | 显示全部楼层 |阅读模式
    我在codev中对PSF进行了编码,导出PSF后,在matlab中对PSF进行解码,我想看解码后PSF对应的MTF图,有前辈做过类似的工作嘛,求PSF转换成MTF图的matlab代码,非常感谢!
    发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2025-4-17 08:09
  • 签到天数: 432 天

    [LV.9]以坛为家II

    5

    主题

    4

    回帖

    1

    积分

    小白

    积分
    1
    发表于 2025-4-7 08:21 | 显示全部楼层
    本帖最后由 lucyliu 于 2025-4-7 08:22 编辑
    1. %% 光学系统成像仿真
    2. %初始条件,MATLAB中长度单位为米
    3. L=0.01;
    4. M=1024;
    5. du=L/M;
    6. u=-L/2:du:L/2-du;v=u;
    7. lambda=0.65*10^-6;
    8. k=2*pi/lambda;
    9. wxp=0.01;
    10. zxp=0.6;
    11. f0=wxp/(lambda*zxp);
    12. fu=-1/(2*du):1/L:1/(2*du)-(1/L);fv=fu;
    13. [Fu,Fv]=meshgrid(fu,fv);
    14. fnum=zxp/(2*wxp);                                            %f数
    15. % lz=lambda*zxp;
    16. twof0=1/(lambda*fnum);                                       %截止频率
    17. u0=0;v0=0;                                                   %感兴趣的归一化图像位置的输入行
    18. wd=0*lambda;                                                  %像差系数,透镜3
    19. w040=1.1821*lambda;
    20. w131=-2.1507*lambda;
    21. w222=0.8333*lambda;
    22. w220=0.3978*lambda;
    23. w311=-0.0213*lambda;
    24. %成像系统光学特性描述
    25. W=seidel_5(u0,v0,-Fu/f0,-Fv/f0,wd,w040,w131,w222,w220,w311);  %赛德尔像差函数
    26. H=circ(sqrt(Fu.^2+Fv.^2)/f0).*exp(-j*k*W);                    %光瞳函数,CTF
    27. OTF=ifft2(abs(fft2(fftshift(H))).^2);
    28. OTF=OTF/OTF(1,1);                                             %非相干传递函数,OTF
    29. hl=abs(fftshift(fft2(fftshift(H)))).^2;                       %非相干脉冲响应函数,PSF
    30. MTF=fft2(fftshift(hl));                                       %MTF分析
    31. MTF=abs(MTF/MTF(1,1));                                        %MTF在直流频率值上归一化为1
    32. MTF=ifftshift(MTF);
    33. figure(4)                                                     % MTF profiles
    34. plot(fu,MTF(M/2+1,:),fu,MTF(:,M/2+1),':',fu,MTF_an,'--');     %uv的重合
    35. axis([0 150000 0 1]);
    36. legend('u MTF','vMTF','diff limit');
    37. xlabel('f(cyc/m)');ylabel('Modulation');
    复制代码
    发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2025-4-18 14:55
  • 签到天数: 27 天

    [LV.4]偶尔看看III

    4

    主题

    28

    回帖

    0

    积分

    小白

    积分
    0
    发表于 2025-4-7 09:02 | 显示全部楼层

    seidel_5无法识别
    发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
    回复

    使用道具 举报

  • TA的每日心情

    2025-4-18 08:38
  • 签到天数: 268 天

    [LV.8]以坛为家I

    5

    主题

    25

    回帖

    2

    积分

    小白

    积分
    2
    发表于 2025-4-7 17:33 | 显示全部楼层

    他那个是自己外设的函数

    W=
    W040​ρ4+
    W131​hρ3cosθ+
    W222​h2ρ2cos2θ+
    W220​h2ρ2+
    W311​h3ρcosθ

    可以根据自己的需求自己设置参数编写

    发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2025-4-11 10:56
  • 签到天数: 269 天

    [LV.8]以坛为家I

    22

    主题

    33

    回帖

    3

    积分

    小白

    积分
    3
     楼主| 发表于 2025-4-7 20:47 | 显示全部楼层

    谢谢您的回复,代码前半部分我没有太看懂是什么原理,如果我有PSF的话,应该怎么做呢,是要从30行开始写起嘛,对PSF中心化、傅里叶变换后取模,得MTF;附件里是我的代码,运行后的MTF图与CODEV的MTF图有不小差异,您看我的代码哪里有问题嘛?(代码中是45度方向,我也试过垂直和水平方向,也与CODEV差异很大)

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?注册

    ×
    发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    联系我们|本论坛只支持PC端注册|手机版|小黑屋|吾爱光设 ( 粤ICP备15067533号 )

    GMT+8, 2025-4-18 15:26 , Processed in 0.093750 second(s), 23 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表