MTF 调制传递函数

评价一个成像系统目前主流的办法主要有三种TV line检测,MTF检测,和SFR检测。

MTF是Modulation Transfer Function的英文简称,中文为调制传递函数。

是指调制度随空间频率变化的函数称为调制度传递函数。最开始是为了说明镜头的能力。

在各个摄像头镜头中经常采用MTF描述镜头的MTF曲线,表明镜头的能力。这些曲线是通过理想的测试环境下尽量减少其它系统对镜头的解析力的衰减的情况下测试得出的。

MTF是描述不同空间频率下的调制函数。

那么什么是空间频率呢?通常,描述频率的单位是赫兹(Hz),比如50Hz、100MHz之类的。

但空间频率的表述习惯用“每毫米线对”。(LP/mm),就是每毫米的宽度内有多少线对。每两条线条之间的距离,以及线条本身的宽度之比是个定值,

目前我国分辨率的标板规定,这个定为公因子是20√10≈1.122等比级数。一般MTF的计算离不开线对

实际拍摄得到的图像,就如下图一样频率越高(越细)的线对就越模糊。但是越好的成像系统得到的线对就越清晰。

MTF是通过找线对中最大亮度点和最小亮度点的对比度来计算的。计算公式为

  MTF=(最大亮度-最小亮度)/(最大亮度+最小亮度)

  调制度介于0和1之间。调制度越大,意味着反差越大,越好。

  所以MTF的计算不会出现大于1的情况。像下面的图表示的这样,当我们测试了很多不同频率下的MTF值。通过将这些值和空间频率进行一一的对照。

  通过这条曲线我们就能知道现在的成像系统在什么样的空间频率下的对比度如何。也就知道了在什么频率的纹理下的解析能力。


SFR 空间频率响应

光学性能测试中,SFR(Spatial Frequency Response)是空间频率响应。MTF常用于光学系统,而SFR指成像系统,成像系统包含一个光学系统。   

SFR是测模组对不同空间频率的响应情况,类似于MTF算法,但测试结果同时受镜头和感光器件以及处理程序的影响,因此称这种算法叫空间频率响应SFR。   

主要是用于测量随着空间频率的线条增加对单一影像所造成的影响。简言之SFR就是MTF的精简版。

因为测量MTF需取得昂贵的正弦样版,并且需换算大量的数据。因此,PIMA开发了这款较低成本的SFR作为替代品。

基本上SFR只需一个双色调的黑白斜线即可换算出约略相等于MTF的值的解像力评鉴图。

SFR是怎么测试和计算的呢。首先SFR不需要拍摄不同的空间频率下的线对。

它只需要一个黑白的斜边(刃边)即可换算出约略相等于所有空间频率

刃边法:

SFR计算中最主要的几步:求导+傅里叶

(1)SFR是通过这条斜边的图进行超采样的到一条更加细腻的黑白变换的直线(ESF)。

(2)然后通过这条直线求导得到直线的变化率(LSF)。

(3)然后对将这个变化率进行FFT(DFT)变换就能得到各个频率下的MTF的值。

PSF、LSF、ESF

点扩展函数PSF(Point Spread Function)、线扩展函数LSF(LineSpread Function)和边缘扩展函数ESF(Edge Spread Function)

(1)点扩展函数PSF是点光源成像后的亮度分布函数,如下图所示,用PSF(X,Y)表示。

点扩展函数是中心圆对称的,通常以沿x轴的亮度分布PSF(X,Y)作为成像系统的点扩展函数。

(2)ESF其实是一条由白变黑(黑变白)的线。

之所以SFR的测试图是一张斜边,是希望通过斜边中的多条线进行超采样,得到一条灰度变换更加平滑的线。

这样减少在后面进行频域转换之后值上的误差。 ESF放大后如下图。

LSF就是一条线上(ESF) 的变化的过程。

对于任意一条线由黑变白的过程是 由不同频率黑白线对 组成。因此可以反过来通过分析一条线得到这些频率下的(FFT)。

当获取点光源像的亮度分布函数PSF(X,Y)后,对其进行二维傅里叶变换即可得MTF (u,v)。

因此,从理论上讲,从PSF也是获取MTF的一个方法。

但是,在实际的应用中,由于地面点光源强度很弱,此方法一般较少采用。

相对于PSF来说,LSF的能量得到了一定程度的加。因此用LSF更好。

【参考文献】

解析力评测MTF和SFR  http://www.52rd.com/S_TXT/2016_3/TXT81761.htm

MTF的倾斜边缘计算方法 - CSDN博客 https://blog.csdn.net/yangpan011/article/details/52947451

【举例】

《电子射野影像系统(EPIDs)图像质量控制方法的探索》论文中

刃边法计算MTF(ESF、LSF、PSF)的更多相关文章

  1. 查表法计算CRC16校验值

    CRC16是单片机程序中常用的一种校验算法.依据所采用多项式的不同,得到的结果也不相同.常用的多项式有CRC-16/IBM和CRC-16/CCITT等.本文代码采用的多项式为CRC-16/IBM: X ...

  2. 【九天教您南方cass 9.1】 13 等高线法计算土方量

    同学们大家好,欢迎收看由老王测量上班记出品的cass9.1视频课程 我是本节课主讲老师九天. 我们讲课的教程附件也是共享的,请注意索取 在测量空间中. [点击索取cass教程]5元立得 (给客服说暗号 ...

  3. 用递归法计算从n个人中选选k个人组成一个委员会的不同组合数

    用递归法计算从n个人中选选k个人组成一个委员会的不同组合数. 分析 由n个人里选k个人的组合数= 由n-1个人里选k个人的组合数+由n-1个人里选k-1个人的组合数: 当n = k或k = 0时,组合 ...

  4. javascript:逆波兰式表示法计算表达式结果

    逆波兰式表示法,是由栈做基础的表达式,举个例子: 5 1 2 + 4 * + 3 -  等价于   5 + ((1 + 2) * 4) - 3 原理:依次将5 1 2 压入栈中, 这时遇到了运算符 + ...

  5. Eratosthenes筛选法计算质数

    <C和指针>第6章第4道编程题: 质数就是只能被1和本身整除的数.Eratosthenes筛选法是一种计算质数的有效方法.这个算法的第一步就是写下所有从2至某个上限之间的所有整数.在算法的 ...

  6. python-蒙特·卡罗法计算圆周率

    [题目描述]蒙特·卡罗方法是一种通过概率来得到问题近似解的方法,在很多领域都有重要的应用,其中就包括圆周率近似值的计问题.假设有一块边长为2的正方形木板,上面画一个单位圆,然后随意往木板上扔飞镖,落点 ...

  7. c#部分---网吧充值系统;简易的闹钟;出租车计费;简单计算器;对战游戏;等额本金法计算贷款还款利息等;随机生成10个不重复的50以内的整数;推箱子;

    网吧充值系统namespace ConsoleApplication1 { class Program { struct huiyuan { public string name; public st ...

  8. python模拟蒙特·卡罗法计算圆周率

    蒙特·卡罗方法是一种通过概率来得到问题近似解的方法,在很多领域都有重要的应用,其中就包括圆周率近似值的计问题. 假设有一块边长为2的正方形木板,上面画一个单位圆,然后随意往木板上扔飞镖,落点坐标(x, ...

  9. 用随机投掷飞镖法计算Pi值(Randomness Throwing dart Pi Python)

    画一个边长为r的正方形和半径为r的四分之一的圆(如下图所示),向上面随机投掷飞镖,通过计算落在星星区域和整体区域的飞镖比例,即可求出π值. 公式推导如下: 假设正方形的边长r为1,那么飞镖落在星星区域 ...

随机推荐

  1. java复习(1)

    这几天开学,很多知识点还很生疏,这两天先把java基础复习一下,有段时间没有写博客了,今天就先谈谈进制转换吧. 1.二进制数的原码,补码和反码 1):对于正数的原码,补码和反码均是相同的,这里不讨论了 ...

  2. SQL注入的一些技巧分享

    先上一道简单的ctf注入题: 一道利用order by进行注入的ctf题 很不错的一道利用order by的注入题,之前不知道order by除了爆字段还有这种操作. 原题地址:http://chal ...

  3. Vue2 & ElementUI实现管理后台之input获得焦点

    Vue.directive('focus', function (el, option) { var defClass = 'el-input', defTag = 'input'; var valu ...

  4. SpringBoot测试类启动错误 java.lang.IllegalStateException: Unable to find a @SpringBootConfiguration, you need to use @ContextConfiguration or @SpringBootTest(classes=...) with your test

    报错 java.lang.IllegalStateException: Unable to find a @SpringBootConfiguration, you need to use @Cont ...

  5. FileUtils.writeByteArrayToFile方法

    FileUtil类是Apache Commons IO库里面的一个类,是与文件相关的一个辅助类,我写了一个可运行的java文件 import java.io.*; import org.apache. ...

  6. issue - 登录前的信息和标识文件

    DESCRIPTION (描述) /etc/issue 是一个文本文件,它包含了在登录提示符出现之前显示的信息或者系统标识.如果 getty(1) 支持的话,它可能包括多个 @char 和 \char ...

  7. 云主机使用ansible出现秘钥认证问题

    使用ansible的时候,出现如下秘钥失效的问题: root@jumpserver ftp]# ansible web -m ping The authenticity of host 'web-00 ...

  8. [易学易懂系列|rustlang语言|零基础|快速入门|(8)|Operators操作符]

    [易学易懂系列|rustlang语言|零基础|快速入门|(8)] 有意思的基础知识 Operators 我们今天再来看看操作符. 算术运算 操作符: + - * / % 代码如下 : let a = ...

  9. DeepFaceLab更新至2019.12.19

    简而言之就是:人脸转换更加稳定和精确,切脸上下边界对齐,增加侧脸和嘴巴的识别面积,所以在这个版本之前的模型需要额外的训练.好消息是,如果你目前素材的嘴巴和侧脸识别有问题,可以重新提取脸部. 之前和之后 ...

  10. 一个web应用的诞生(7)

    现在所有的Py代码均写在default.py文件中,很明显这种方法下,一旦程序变的负责,那么无论对于开发和维护来说,都会带来很多问题. Flask框架并不强制要求项目使用特定的组织结构,所以这里使用的 ...