SFR算法详解(二)——斜棱法
免责声明:仅供研究讨论,未经确认,相关内容严禁商用,若有错误,欢迎指正。
一、基于初版修正后产生的斜棱法(e-SFR)
(1) 选取斜棱所在的ROI区域进行初步分析。
在ISO12233中,这里对选取的ROI提出了几点要求,在经过逆OECF调整以后,选取的图像区域需要满足以下两点:
①选取的区域在后续计算中,顶部和底部区域的斜边分界点距离左右边沿不得少于2个像素,即不能太靠边,如下图我们选取的图像长宽为50*50,其顶部斜边分界距离左右边沿分别为20和30,底部分界距离左右边沿分别为30和20,均符合大于2的标准。
②我们选取的测试区域其边沿亮度调制比Modulation不得低于20%,什么意思呢,如下表:
根据Mitre SFR 1.4开源代码示例中使用的做法,我们按2*2区域进行计算,有:
Avg_左上亮度均值 = (5+6+5+5)/4.0 = 5.25
Avg_右上亮度均值 = (255+255+255+255)/4.0 = 255.0
Avg_左下亮度均值 = (5+5+5+5)/4.0 = 5.0
Avg_右下亮度均值 = (255+255+180+255)/4.0 = 236.25
Modulation_顶部差异调制比 = (Avg_右上亮度均值- Avg_左上亮度均值)/( Avg_左上亮度均值+ Avg_右上亮度均值) = (255.0-5.25)/ (255.0+5.25)=95.97% >20%
Modulation_底部差异调制比 = (Avg_右下亮度均值- Avg_左下亮度均值)/( Avg_左下亮度均值+ Avg_右下亮度均值) = (236.25-5.0)/ (236.25+5.0)=95.85% >20%
由于以上列举的例子是一个垂直斜棱,因此我们只需考虑顶部和底部调制比即可,从上面的计算,我们得出,该区域符合相关标准。
(2) 通过逆光电转换函数(OECF)/逆Gamma校正对非线性的图像编码值(若为8位图像,即灰度值0-255)进行逆向线性化处理,将其还原为一个类CCD原始光电采样信号的序列。OECF可按ISO 14524规定的标准进行测量。
为了迎合OECF计算,新版SFR分辨率测试Chart特意在中间区域引入了16个灰阶测试块【ISO14524中使用的是20个】,以便于OECF计算。此外,各视场依次分布有斜方块,以便SFR进行后续计算。
这里提一下OECF/Gamma校正,读者也可参阅我的资源链中分享的一篇网上下载的文章https://download.csdn.net/download/tanjiaqi2554/10049457
这里我将图像模型抽象简化为以下几个角度进行说明:
①人眼模型:相当于下图中的1/2.2 Gamma校正模型,人眼对暗处敏感,对亮处不敏感,即光信号经过人眼和大脑处理,暗处相对变亮,亮处相对变暗。
②摄像头光电传感器Sensor模型【未经后续Gamma校正ISP电路处理前】:即相当于下图中的黑色虚线部分,与光信号强度【光子数量】正相关,也就是说,亮即是亮,暗即是暗。
③摄像头ISP处理部分的Gamma校正模型:类似于人眼模型,将线性的光电信号,通过1/2.2Gamma校正为与人眼感知类似的灰度值输出。
④显示器模型:相当于下图中的2.2 Gamma校正模型,显示器为了迎合人眼特征,会让屏幕暗的时候,增长趋缓,亮的时候,增长趋陡,即让人眼反应屏幕亮暗变化时,不会觉得屏幕暗时,一下子被调亮了很多,又或者屏幕亮时,调了半天还感觉没反应。
下图引自博文https://learnopengl-cn.github.io/05%20Advanced%20Lighting/02%20Gamma%20Correction/
也许,上面我一下提供了太多的模型,不够直观,下面我又将各模型之间的相互嵌套关系绘制了一张总图,以便理解:
人脑接收的信号 = ((光信号^(1/2.2))^2.2)^(1/2.2) = 光信号^(1/2.2)
这里由于一般不会提供0-255级灰度值对应的每个光电信号值【实测灰阶值不是整数,也不够255个】,因此,我们一般要对测出的OECF数据,在0-255级整数灰度范围上进行线性补偿插值。
http://www.360doc.com/content/16/1020/14/496343_599870460.shtml
https://www.cambridgeincolour.com/tutorials/gamma-correction.htm
设原始经过逆OECF处理后的某ROI数据二维分布如下图,其亮度数据假设如下表所示【这里应当是逆OECF后的光电信号值,为方便,我以灰度为例,实际引入计算时的不一定转换为灰度】:
接下来,通过逐行计算水平列序号与该处微分值的卷积和,再除以该行积分累积总和,算得质心即各行斜棱交界处所在水平位置。如上表中第一行即:
[2.816,3.816,4.816,5.816,6.816,7.816,8.816]
(4) 对CentroID 进行线性回归拟合,得出斜棱分界线处的拟合回归方程y=mx+b。[其中因变量y为CentroID 值,自变量x为行号]
这里我以宽度8,高度8的一副图像来简化模型,根据各个像素位置到该行拟合Centroid的水平距离,我们可绘制如下表:
接着,我们以[-0.125,0.125]区间为0档位向正负方向延伸,其中[-0.375,-0.125]为-1档,[0.125,0.375]为+1档,依此类推,我们将上面各个位置的像素进行区间归档如下:
对归属于同一档的像素值进行累加平均有:【-15挡】= 0/1 = 0,【-14挡】= (0+2+0+1)/4 = 0.75等等,依此类推。
Ok,上述内容,你发现问题了,我们的各档位取样分配不均,并且你产生了疑问,会不会发生跳档现象,因此,ISO给我们附加了几条约束条件:
③计算数据高度应调整为(unsigned short)((long)(h*slope)*(1.0 / slope))整数。
以上分析了这么多,简言之,该步操作就是通过以到斜边水平方向距离为基准,对多行数据进行分类归并,最终得到一行4倍于Sensor空间采样频率的序列,接下来,看一下ISO给出的公式,理解起来应该不难了:
,其中m为斜率slope,R为图像高度,φ(p,r)为p列r行的像素值,
S(r)为拟合边缘质心方程,j取{0,0.25,0.5,0.75,1...图像宽度w},α(p,r,j)即是否纳入归档的因子,在区间范围内,值取1表示纳入该区间加权平均计算,值取0表示不纳入。
结语:本文主要参考ISO标准,主要对超采样做了一些说明,但尚有许多方面未进行深入探讨,例如以下:
1.为什么对ESF微分就得到了LSF,而对LSF进行傅里叶变换就能得到SFR曲线,ISO在制定标准时,为什么会选择这样的一条SFR曲线来作为衡量标准,理论依据是什么。
2.以上得到的SFR曲线与MTF曲线为什么存在联系,我们最后以怎样的方式来进行傅里叶变换,原因是什么。
SFR算法详解(二)——斜棱法相关推荐
- 【图像处理】SFR算法详解2
这个是<[图像处理]SFR算法详解1>的后续,本篇主要讲解SFR算法过程.这里主要参考ISO 12233标准所描述的SFR算法过程,详见<ISO 12233-2000 Camera ...
- SFR算法详解(一)——基础理论
免责声明:仅供研究讨论,未经确认,相关内容严禁商用,若有错误,欢迎指正. SFR是空间频率响应(Spatial frequency response)的英文缩写,是指一个系统相对于输入的空间频率所输出 ...
- 【图像处理】SFR算法详解1
原文地址:http://blog.csdn.net/jaych/article/details/50889664 这几篇文章写的是SFR算法,主要根据相关的概念及其对应的标准和源码,来看看SFR究竟是 ...
- 十大经典排序算法详解(三)-堆排序,计数排序,桶排序,基数排序
养成习惯,先赞后看!!! 你的点赞与关注真的对我非常有帮助.如果可以的话,动动手指,一键三连吧!!! 十大经典排序算法-堆排序,计数排序,桶排序,基数排序 前言 这是十大经典排序算法详解的最后一篇了. ...
- Unicode双向算法详解(bidi算法)(二)
作者:黄邦勇帅(原名:黄勇)2019-10-17 Unicode双向算法详解(bidi算法)(二) 本文为原创文章,转载请注明出处,或注明转载自"黄邦勇帅(原名:黄勇) 本文是对<C+ ...
- DPC密度峰值聚类算法原理详解二
DPC密度峰值聚类算法原理详解二 1.计算数据点两两之间的距离 1.使用 Numpy 模块查找两点之间的欧几里得距离: 2.使用 distance.euclidean() 函数查找两点之间的欧式距离: ...
- 二叉树遍历算法详解(递归法+非递归法)
二叉树遍历算法详解 在上一篇C语言实现二叉树中有提到对于二叉树的遍历,包括前序,中序和后续遍历,以及层次遍历 大家已经熟悉了二叉树的前中后序遍历过程,大部分都采用了递归的思想来实现 在leetcode ...
- 目标检测 RCNN算法详解
原文:http://blog.csdn.net/shenxiaolu1984/article/details/51066975 [目标检测]RCNN算法详解 Girshick, Ross, et al ...
- 操作系统之银行家算法—详解流程及案例数据
操作系统之进程调度--优先权法和轮转法(附上样例讲解) 操作系统之银行家算法-详解流程及案例数据 操作系统之多线程编程-读者优先/写者优先详解 操作系统之存储管理--FIFO算法和LRU算法 操作系统 ...
- 数据结构--图(Graph)详解(二)
数据结构–图(Graph)详解(二) 文章目录 数据结构--图(Graph)详解(二) 一.图的存储结构 1.图的顺序存储法 2.图的邻接表存储法 3.图的十字链表存储法 4.图的邻接多重表存储法 二 ...
最新文章
- 重装系统后ORACLE数据库恢复
- 多给明年留些钱 明年必将要火的好手机
- Go语言之标志符可见性
- 字符串字符和数字分割
- Codewars-The wheat/rice and chessboard problem(棋盘放谷粒)
- 这些年无处安放的博客
- 心形图案爱心代码编程c语言
- 使用360优化修复系统后导致无法上网 维护笔记
- 【原生JS小实例】加减乘除取余计算器
- 股市股票基金市场研报合集(2022年,共195份)
- 视频号视频如何下载?
- 【今日】【20180511】物理学家——理查德·费曼 诞辰100周年
- app做好后如何上线_自己做的app从做好到上架需要什么手续或过程?
- Gettimeofday的用法
- C语言的stdio.h文件
- ViewPager简单介绍(三) ViewPager+Fragment+TabLayout
- 学python如何不加班 杀手框架Pandas
- 【无人机学习】Mission Planner(pc端)和QGroundControl(android端)
- java.awt包_java.awt包 简介
- SQL查询语句练习(二)