由于最近需要写一个Camera 自动调焦的程式,需要用到MTF(Modulation Transfer Function),其中MTF有很多实现算法,本人目前使用SFR(spatial frequency response)算法衡量影像的锐利度(Sharpness)。SFR数值越大,代表图像越锐利,此时图片也越清晰。
一般情况下测试图像的锐利度使用ISO12233 Chart,我们可以使用Chart图中的斜边进行锐利度的测试,如下图为ISO12233 Chart。
用于SFR计算的斜边分为两种,一种是水平斜边,一种是竖直斜边。如上图两个红色框,宽度比较大的称为水平斜边,高度比较大的称为竖直斜边,其中我们测试水平方向的锐利度时是使用竖直斜边,而测试竖直方向锐利度时使用的是水平斜边。
MTF50以及MTF50P:
MTF50是当MTF数值下降至最大值的50%时,对应的频率(Cycle Per Pixel),它是一个广泛应用的锐利度衡量标准。但是它用有一个重大的缺陷,就是当影像模组内部的软件对影像作锐利化时,将会对MTF数值有很大的影像,而其实大部分模组都会对影像作不同程度的锐利化,这就导致了MTF50已经不能够正确的反映锐利度的数值了。
由于前面所述原因,MTF50P被应用在锐利度的评价当中。MTF50P是使影像过度锐化以后再计算MTF数值,其MTF数值的最大值的50%对应的频率值。其中MTF50P一般会使用LW/PH作为单位,LP/PH= Cycle Per Pixel * Total Pixel * 2.
以下是MTF50P的算法:
此算法来源于ISO12233中标准的斜边,并使用了部分数学算法辅助完成。
1. 使用OECF Chart或者Gamma转换来改变由影像模组加上的Gamma(一般影像模组均采用0.5)。
2. 分别计算R,G,B,Y四个频道的每个扫描线的此点与前面点的差值,并找到数值差异最大的位置。
3. 分别对R,G,B,Y四个频道的差异最大的点组成的曲线作线性回归,但是由于Lens的Distortion的影响,我们需要作二次曲线拟合。
4. 通过了曲线拟合,我们产生了四条平均曲线,我们分别取这四条曲线的的小数部分按1/4向下取整。
5. 通过第4步,我们产生了重新采样的四条曲线,这四条曲线满足采样定理。
6. 计算这四条曲线的相邻点的差分并使用汉明窗函数使用这四条微分曲线的终点的微分数值置0。
7. 对这四条微分曲线做快速付立叶变换就可以得到MTF曲线了。
目前还有很多概念不清楚 ,以后会再写文章描述清楚,并提供MTF源码。