基于opencv的摄像头解像力量化SFR算法实现

开篇步入正题:搜到此文章的研发人员且认为你对MTF有一点点了解,下面直接讲解SFR算法

先来上一张算法结果图片

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

(备注:当然你也可以对sharpen,gamma之后的图像进行desharpen,degamma操作之后使用也可。

    desharpen对图像overshoot逆操作,degamma对图像线性化操作。)

       

SFR算法计算的韧边
只允许有一个韧边,且矩心距离边缘不能小于4个,democode里面设置成了必须大于6

        2.第1步中已经选出了包含韧边的ROI。接下来就是定位黑白交界(矩形矩心),数学公式在democode中已经描述的相当明白,不再赘述。

(备注:很多同行问我,为何要定位矩心,因为定位出矩心才能对这些像素点进行线性拟合,线性拟合后才能确定黑白交界边缘准确位置)

标定位roi之后,以shifts为横坐标,以temp为纵坐标题

        3.对定位出来的矩形矩心进行线性拟合,计算出斜率b, 截距a.

(注意:代码中对第2步中的图像数据进行了旋转90度操作再计算b,a。这样做的目的是为了用行数(同时方向为正)做横坐标,列数做纵坐标)

实际求出的斜率曲线(橙色)

         4.超采样获取ESF。

          前面线性拟合后对每个像素点到边缘的距离重新计算获得一个double类型的位置坐  标。存放在edgex[]中。

         通过对edgex[]每个数据乘以4操作,向下取整,获得对应坐标,并将此位置对应的信号值保存在signal[]。

        因为是逐行对double类型位置x4操作取整,所以每行会积累相等整型的位置坐标,这样对这些相同位置的坐标处的信号累加取平均就会得到四倍超采样处的信号值。
 

           

超采样获取的ESF数据

        5.差分求导得LSF

ESF数据差分求导得到LSF

       6.LSF傅里叶变换求得SFR

LSF傅里叶变换求得SFR

20200808年的代码于2021-05-21做了提高精确性和鲁棒性的化。不要和我直接,直接,直接伸手要代码。

  • 9
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Camera Man

知识无价,但打赏不要超过早饭钱

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值