从零开始学习SFR-- 2.0

这篇具有很好参考价值的文章主要介绍了从零开始学习SFR-- 2.0。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言:因为课题涉及镜头质量检测,而现在镜头检测最普遍的方法便是MTF曲线作为检测镜头质量的标准。网上相关的学习资料并不多,也有一些大佬做了相关算法的研究,不过零零散散,难以成系统。为了学习并实现相关算法,参考各大佬的文章,对整个学习思路进行整理,特开此贴作为学习笔记。

1.SFR基础

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

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

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

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

SFR的测试标准以及算法经由国际标准化组织ISO(International Standardization Organization)拟定,文档ISO12233

根据该标准文件,摄像头的解析力和它的SFR由一系列因素决定,其中包含但不限于,镜头的性能,感光器件的可寻址像素数,电路设计(含图像压缩和Gamma校正功能等)。

该文件提出了两种测量SFR的方法:

  1. Edge-based spatial frequency response (e-SFR) 基于边缘的空间频率响应
  2. Sine-based spatial frequency response (s-SFR) measurement 基于正弦的空间频率响应(s-SFR)测量

目前的开源SFR算法都是基于第一种第一种方法,刃边法测量SFR

2.刃边法(e-SFR)

ISO12233对刃边法的概述:

The edge-based spatial frequency response (e-SFR) of an electronic still-picture camera is measured by analysing the camera data near a slanted low contrast neutral edge. The preferred test chart for measuring e-SFR is shown in Figure 4 and specified in Annex C.

通过分析倾斜的低对比度中性边缘附近的相机数据,测量了电子静态图像相机基于边缘的空间频率响应(e-SFR)。测量e-SFR的首选试验图卡如图4所示,并在附录C中规定。

sfr测试,学习,计算机视觉,人工智能
The e-SFR measurement includes the capture of a digital image of the test chart and analysis of the contents of the image file by a software program. This software can be accessed from www.iso.org/12233. The SFR algorithm is defined in Annex D. A diagram depicting the key steps of the SFR algorithm is shown in Figure 5.

e-SFR测量包括捕获测试图卡的数字图像和通过软件程序分析图像内容。此软件可从www.iso.org/12233访问. SFR算法见附录D。图5显示了SFR算法的关键步骤。

The algorithm can automatically compute the e-SFR, using image data from a user-defined rectangular region of the image which represents a near-vertically or near-horizontally oriented dark to light or light to dark edge. The algorithm will be described assuming a near-vertical edge. To measure nearhorizontally, the selected edge image data are rotated 90° before performing the calculation. Note that a near vertical edge is used to measure a horizontal e-SFR, since the e-SFR is a measure of the image transition across the edge, rather than along it. Likewise, a near horizontal edge is used to measure the vertical e-SFR.

该算法利用来自用户定义的矩形区域的图像数据自动计算e-SFR,该矩形区域表示近垂直或近水平方向的暗到亮或亮到暗边缘。该算法将在假设接近垂直边缘的情况下进行描述。若要在水平方向上进行近测量,在执行计算之前请将选定的边缘图像数据旋转90° 。注意,近垂直边缘用于测量水平e-SFR,因为e-SFR是跨边缘而不是沿边缘的图像过渡的测量。同样,近水平边缘用于测量垂直e-SFR。

2.1 SFR算法流程

ISO12233文档中e-SFR的算法流程如下:
sfr测试,学习,计算机视觉,人工智能
CSDN上流传比较广泛的汉化的流程:
sfr测试,学习,计算机视觉,人工智能
sfr测试,学习,计算机视觉,人工智能

2.2 PSF、LSF、ESF

点扩展函数PSF(Point SpreadFunction),线扩展函数LSF(LineSpread
Function)和边缘扩展函数ESF(EdgeSpreadFunction)是与MTF密切相关的几
个重要概念。常用的MTF测试方法正是基于这几个函数之间的关系进行计算。

以后会专门详细介绍OTF、MTF和PSF、LSF、ESF之间的关系。这里仅仅记录SFR算法流程中对LSF、ESF之间的关系

sfr测试,学习,计算机视觉,人工智能

  1. 点扩展函数PSF是点光源成像后的亮度分布函数,如下图所示,用PSF(X, Y)表示。
    sfr测试,学习,计算机视觉,人工智能
    点扩展函数是中心圆对称的,通常以沿x轴的亮度分布PSF(X,Y)作为成像系统的点扩展函数。

  2. ESF其实是一条由白变黑(黑变白)的线。
    之所以SFR的测试图是一张斜边,是希望通过斜边中的多条线进行超采样,得到一条灰度变换更加平滑的线。
    这样减少在后面进行频域转换之后值上的误差。 ESF放大后如下图。
    sfr测试,学习,计算机视觉,人工智能

  3. LSF就是一条线上(ESF) 的变化的过程。
    sfr测试,学习,计算机视觉,人工智能

  4. 经过LSF傅里叶变换得到SFR
    sfr测试,学习,计算机视觉,人工智能


总结

这篇介绍了ISO12233标准定义的SFR算法的流程和一些光学上的基本原理,后续会对算法流程的每一步进行具体的解读和理解,然后再对SFR开源代码进行注释学习。

参考:文章来源地址https://www.toymoban.com/news/detail-572885.html

  1. 链接: 相机光学(十八)——MTF与SFR
  2. 链接: 刃边法计算MTF(ESF、LSF、PSF、SFR)
  3. 链接: 图像分辨率测试ISO12233 - 2017中文翻译
  4. 链接: SFR解析算法 - SFR_Calculation (C语言)

到了这里,关于从零开始学习SFR-- 2.0的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C51编程中sfr,sbit的用法以及位地址和字节单元地址的区别

    特殊功能寄存器定义:以P0为例。 在c51的官方头文件中,P0口是这样定义的 可见sfr的定义方式为:sfr 变量名=字节单元地址; 这里的P0也可以换成其他变量名。 在后续的使用中,如:P0=0x00;就是把0x80为地址的字节单元的8位的数据赋值为0000 0000B 特殊功能位定义:以P0_0为例。

    2024年02月08日
    浏览(25)
  • Python-OpenCV教程丨从零开始学计算机视觉

    探索新大陆:PythonOpenCV,本文主要记录入门计算机视觉的一些简单程序。 安装opencv库: 这段代码使用OpenCV库创建了一个宽度为200,高度为100的空白图像,并将图像中所有像素点的值设为255(白色)。然后展示了该图像。 具体的执行过程如下: 导入cv2和numpy库。 import cv2 imp

    2024年01月18日
    浏览(31)
  • 从零开始学习软件测试-第47天笔记

    yaml yaml是一种所有编程语言都可用的友好的数据参数化标准。 yaml里只能使用字典或列表这两种数据类型。 使用缩进表示层级关系,但只允许使用空格缩进。 缩进时空格的数量不重要,只要在同一层级数据左侧对齐即可。 大小写敏感。 下载yaml模块 pip install PyYAML yaml的写法

    2024年02月07日
    浏览(40)
  • 从零开始学习软件测试-第39天笔记

    http消息结构 请求报文 请求行 请求方式  url  协议版本 请求头 空行 请求体 响应报文 响应行 协议版本  状态码  状态消息 响应头 空行 响应体 请求参数类型 path参数 写在路径中的 https://xxx.xxx.com/参数值 query参数 写在url问号后面,以键值对形式存在 https://xxx.xxx.com/xx?参数名

    2024年02月09日
    浏览(31)
  • 从零开始学习:如何使用Selenium和Python进行自动化测试?

    安装selenium 打开命令控制符输入:pip install -U selenium 火狐浏览器安装firebug:www.firebug.com,调试所有网站语言,调试功能 Selenium IDE 是嵌入到Firefox 浏览器中的一个插件,实现简单的浏览器操 作的录制与回放功能,IDE 录制的脚本可以可以转换成多种语言,从而帮助我们快速的开

    2024年04月23日
    浏览(52)
  • 如何高效的学习接口自动化测试?从零开始学习接口自动化测试:选择合适的学习资源和编程语言

    目录 引言: 一、学习前的准备 二、选择合适的学习资源 三、实践中学习 四、总结 在日常的软件开发过程中,接口自动化测试是一个非常重要的环节。接口自动化测试可以帮助我们快速准确地检测出软件中的缺陷,提高软件的质量和稳定性。但是,要学习接口自动化测试并

    2024年02月06日
    浏览(46)
  • 从零开始学习Web自动化测试:如何使用Selenium和Python提高效率?

    目录 引言: 一、了解Web自动化测试的基本概念 二、选择Web自动化测试工具 三、学习Web自动化测试的技能 四、实践Web自动化测试 五、总结 随着互联网的不断发展,Web自动化测试越来越受到关注。Web自动化测试可以帮助我们轻松地检查网站的功能和性能,提高软件开发的效率

    2024年02月01日
    浏览(41)
  • 如果让你重新开始学计算机,你的学习路线会怎么选择?

    计算机技术是现代社会中非常重要的一项技能,掌握计算机可以帮助人们更好地处理信息、管理数据和进行娱乐活动。计算机已经成为了一种获取知识的重要途径,人们可以通过计算机在网络上获取各种信息,从而更好地适应社会发展的需要。学习计算机还可以帮助人们更好

    2024年02月03日
    浏览(33)
  • 【Web项目实战】从零开始学习Web自动化测试:用Python和Selenium实现网站登录功能

    B站首推!2023最详细自动化测试合集,小白皆可掌握,让测试变得简单、快捷、可靠 https://www.bilibili.com/video/BV1ua4y1V7Db 目录 1.环境搭建

    2024年02月06日
    浏览(55)
  • 从零开始学习Python控制开源Selenium库自动化浏览器操作,实现爬虫,自动化测试等功能(一)

    介绍Selenium : Selenium是一个用于自动化浏览器操作的开源工具和库。它最初是为Web应用测试而创建的,但随着时间的推移,它被广泛用于Web数据抓取和网页自动化操作。Selenium 支持多种编程语言,包括Python,Java,C#等。 这里我们主要实现采用Python的方式 Selenium 的主要特点和

    2024年01月22日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包