1.直接讲解SFR算法。
先来上一张算法结果图片:


1.准备未经过sharpen&gamma处理的图像,因为gamma将数据进行了非线性处理,sharpen对边缘进行了overshoot处理。最好是原始bayer数据(democode中我使用的是bayer数据转成了bmp格式图片)。提取包含斜边的区域ROI,转化为YVU,我们只用Y通道数据就够了。
(备注:当然你也可以对sharpen,gamma之后的图像进行desharpen,degamma操作之后使用也可。desharpen对图像overshoot逆操作,degamma对图像线性化操作。)


2.第1步中已经选出了包含韧边的ROI。接下来就是定位黑白交界(矩形矩心),数学公式在democode中已经描述的相当明白,不再赘述。
(备注:很多同行问我,为何要定位矩心,因为定位出矩心才能对这些像素点进行线性拟合,线性拟合后才能确定黑白交界边缘准确位置)

3.对定位出来的矩形矩心进行线性拟合,计算出斜率b, 截距a.
(注意:代码中对第2步中的图像数据进行了旋转90度操作再计算b,a。这样做的目的是为了用行数(同时方向为正)做横坐标,列数做纵坐标)

4.超采样获取ESF。
前面线性拟合后对每个像素点到边缘的距离重新计算获得一个double类型的位置坐 标。存放在edgex[]中。
通过对edgex[]每个数据乘以4操作,向下取整,获得对应坐标,并将此位置对应的信号值保存在signal[]。
因为是逐行对double类型位置x4操作取整,所以每行会积累相等整型的位置坐标,这样对这些相同位置的坐标处的信号累加取平均就会得到四倍超采样处的信号值。

5.差分求导得LSF

6.LSF傅里叶变换求得SFR

2.SFR算法(我用的基于opencv347以上版本,vs2015开发环境)
非公益项目,合作请私信联系我。
算法保证没有问题,都是基于标准isosfr算法做了优化,算法更加准确和健壮。
合作方式有两种。
第一种:只售源码不提供chart设计方案,增距镜选型方案,以及定规方案等各种MTF相关知识。
第二种:源码+提供各种技术支持。