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. django Paginator 让分页变得完美

    参考大佬地址:https://www.zmrenwu.com/courses/django-blog-tutorial/materials/21/ 类视图 from django.contrib.au ...

  2. thinkphp5服务器部署遇到的问题

    candir() has been disabled for security reasons 解决办法: 进入到php的配置目录,编辑php.ini cd /usr/local/php/etcvi ...

  3. python图形图像处理--验证码的制作

    from PIL import Image,ImageDraw,ImageFontimport randomfrom io import BytesIO class code(): def __ini ...

  4. java 并发编程lock使用详解

    浅谈Synchronized: synchronized是Java的一个关键字,也就是Java语言内置的特性,如果一个代码块被synchronized修饰了,当一个线程获取了对应的锁,执行代码块时,其 ...

  5. python2 'ascii'编码问题

    UnicodeDecodeError: 'ascii' codec can't decode byte 0xe4 in position 223: ordinal not in range(128) ...

  6. iOS消息通知Notification的用法

    1.发送消息 NSNotification *notification = [NSNotification notificationWithName:@"selectPosition&quo ...

  7. python接口自动化二(发送post请求)

    前言 一个http请求包括三个部分,为别为请求行,请求报头,消息主体,类似以下这样: 请求行 请求报头 消息主体 HTTP协议规定post提交的数据必须放在消息主体中,但是协议并没有规定必须使用什么编 ...

  8. python中的时间模块

    废话不多说,看代码 import datetime,time import calendar #时间戳 t1 = time.time() print('当前时间戳是{}'.format(t1)) #格 ...

  9. Memcached在Asp.net下的应用

    Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度.Memcached ...

  10. K8S in Action

    1,容器的概念 镜像 镜像仓库 容器 镜像层:Docker镜像由多层构成.好处:网络分发效率,减少镜像的存储空间 1.2 k8s 主节点 ,它承载着 Kubernetes 控制和管理整个集群系统的控制 ...