吾爱光设

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

关于线扩散函数求得MTF曲线的问题

[复制链接]
  • TA的每日心情
    奋斗
    2024-11-23 16:47
  • 签到天数: 171 天

    [LV.7]常住居民III

    21

    主题

    40

    回帖

    3

    积分

    小白

    积分
    3
    发表于 2024-5-13 21:59 | 显示全部楼层 |阅读模式

    得到的MTF曲线不正确,想问问大家是哪里出了问题
    正常的MTF曲线


    我得到的MTF曲线如下图




    首先我们知道线扩散函数进行傅里叶变换可以求得MTF




    我的思路是取线扩散函数某一行的灰度值然后对他进行傅里叶变换从而得到MTF曲线

    下面是我的代码
    %读取图像其中一行灰度值
    xiafeng3=imread('xiafeng3.png');
    grayImage = rgb2gray(xiafeng3);%将图像转为灰度值
    I = grayImage(50,;%取第50行的灰度值
    res= double(I); % 将数据转换为double类型I
    [rows,cols] = size(res);% 丈量数据矩阵尺寸

    %创建横坐标
    step = 1000 / 2457.6;%像元尺寸为2.4um,进行坐标转换为lp/mm,即1/(cols*2.4um)
    halfpoints = cols/2;%创建一个图像一半长度的数列
    end_value = (halfpoints - 1) * step; % 因为从 0 开始,所以数组长度减去 1
    array = 0:step:end_value;

    %傅里叶变换得到MTF曲线
    MTF = abs((fft(I)));
    MTF = MTF / max(MTF);% 标准化 MTF
    MTF = MTF(1:numel(MTF)/2);%取MTF的前一半曲线
    figure;
    plot( I, 'b.');  % 绘制数据点

    % 对频谱数据进行插值
    x_interp = linspace(min(array), max(array), 1000); % 生成插值用的更密集的 x 值
    MTF_interp = interp1(array, MTF, x_interp, 'spline'); % 使用样条插值

    % 绘制插值曲线
    figure;
    plot(array, MTF, 'b.'); % 绘制原始数据点
    hold on;
    plot(x_interp, MTF_interp, 'r-', 'LineWidth', 2); % 绘制插值曲线
    legend('原始数据', '插值曲线');
    xlabel('频率');
    ylabel('幅度');
    title('傅里叶频谱插值');





    得到的线扩散函数如下图



    对数据进行傅里叶变换后取频域的前半部分是MTF曲线吗
    就是说是否我将下面的图像取前一半就是MTF曲线







    本帖子中包含更多资源

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

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

    使用道具 举报

  • TA的每日心情
    无聊
    2024-11-22 08:14
  • 签到天数: 396 天

    [LV.9]以坛为家II

    12

    主题

    137

    回帖

    8

    积分

    小白

    积分
    8
    发表于 2024-5-14 09:04 | 显示全部楼层
    MTF计算,会是对一个黑白边缘先求矩心,再获取ESF,不是单对一条单横线上的灰阶数据做处理,您可以再试试
    发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2024-11-23 16:47
  • 签到天数: 171 天

    [LV.7]常住居民III

    21

    主题

    40

    回帖

    3

    积分

    小白

    积分
    3
     楼主| 发表于 2024-5-14 10:36 | 显示全部楼层
    丁丁的 发表于 2024-5-14 09:04
    MTF计算,会是对一个黑白边缘先求矩心,再获取ESF,不是单对一条单横线上的灰阶数据做处理,您可以再试试
    ...

    那种是根据边缘扩散函数ESF求导获得线扩散函数LSF,我现在是直接利用狭缝获得LSF然后得到MTF
    发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    2024-11-22 08:14
  • 签到天数: 396 天

    [LV.9]以坛为家II

    12

    主题

    137

    回帖

    8

    积分

    小白

    积分
    8
    发表于 2024-5-14 17:14 | 显示全部楼层
    moneymaker 发表于 2024-5-14 10:36
    那种是根据边缘扩散函数ESF求导获得线扩散函数LSF,我现在是直接利用狭缝获得LSF然后得到MTF
    ...

    使用狭缝获得LSF合理吗?项目中从来没见过唉
    发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2024-11-23 16:47
  • 签到天数: 171 天

    [LV.7]常住居民III

    21

    主题

    40

    回帖

    3

    积分

    小白

    积分
    3
     楼主| 发表于 2024-5-14 22:27 | 显示全部楼层
    丁丁的 发表于 2024-5-14 17:14
    使用狭缝获得LSF合理吗?项目中从来没见过唉

    点扩散函数进行傅里叶变换可以得到MTF对吧,即MTF = abs(fftshift(fft2(PSF)));那么狭缝可以看做是无限个点扩散函数累加为一条线,即一维的点扩散函数,理论上也是可以获得MTF的
    发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    2024-11-22 08:14
  • 签到天数: 396 天

    [LV.9]以坛为家II

    12

    主题

    137

    回帖

    8

    积分

    小白

    积分
    8
    发表于 2024-5-15 08:22 | 显示全部楼层
    moneymaker 发表于 2024-5-14 22:27
    点扩散函数进行傅里叶变换可以得到MTF对吧,即MTF = abs(fftshift(fft2(PSF)));那么狭缝可以看做是无限个 ...

    纯计算过程当然没有问题,这是您的问题不是和“标准答案”correlation差嘛,工程上实际测试MTF时一般会用crosshairs或是square block绘制pattern,计算SFR不会只用一行的数据而是有带宽的,所以或许您可以试试用更多的数据参与计算去对比与“标准答案”的差异
    发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2024-11-23 16:47
  • 签到天数: 171 天

    [LV.7]常住居民III

    21

    主题

    40

    回帖

    3

    积分

    小白

    积分
    3
     楼主| 发表于 2024-5-15 14:03 | 显示全部楼层
    丁丁的 发表于 2024-5-15 08:22
    纯计算过程当然没有问题,这是您的问题不是和“标准答案”correlation差嘛,工程上实际测试MTF时一般会用 ...

    十分感谢您的回答。“计算SFR不会只用一行的数据而是有带宽的”请问这个有带宽是什么意思,另外我想问一下通过ESF求得MTF也是根据ESF求导获得一个LSF数据
    求导得到

    那为什么我直接根据狭缝通过成像系统得到LSF后的结果不对呢,是不可以通过图像灰度值来计算吗
    用更多的数据参与计算”是说我将狭缝像所有的灰度数据(而不是只取一行)进行FFT吗

    本帖子中包含更多资源

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

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

    使用道具 举报

  • TA的每日心情
    无聊
    2024-11-22 08:14
  • 签到天数: 396 天

    [LV.9]以坛为家II

    12

    主题

    137

    回帖

    8

    积分

    小白

    积分
    8
    发表于 2024-5-16 09:35 | 显示全部楼层
    moneymaker 发表于 2024-5-15 14:03
    十分感谢您的回答。“计算SFR不会只用一行的数据而是有带宽的”请问这个有带宽是什么意思,另外我想问一 ...

    像您之前所述的,我这里通常计算SFR用的做法是有一个黑底白块或者黑底白十字叉丝,先获取整个黑白边缘的矩心(一列是edge的行数,一列是每行的矩心),线性回归重新定位ROI,超采样对同一档的像素值进行累加平均,获取ESF,后续就都一样啦,我这里现在不方便上传任何资料,或许您可以找些文献资料查下获取ESF这一步之前的具体做法~
    发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    2024-11-22 08:14
  • 签到天数: 396 天

    [LV.9]以坛为家II

    12

    主题

    137

    回帖

    8

    积分

    小白

    积分
    8
    发表于 2024-5-16 09:39 | 显示全部楼层
    moneymaker 发表于 2024-5-15 14:03
    十分感谢您的回答。“计算SFR不会只用一行的数据而是有带宽的”请问这个有带宽是什么意思,另外我想问一 ...

    是对图像灰度值进行处理啦,如果只是狭缝数据计算SFR,就相当于把一个x,y,GL三维数据减少为y,GL的二维数据了,或许鲁棒性会不好,甚至存在较大误差,个人意见供您参考~
    发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
    回复

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-11-23 21:51 , Processed in 0.078125 second(s), 23 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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