基于opencv更加准确和鲁棒的SFR算法

1.直接讲解SFR算法。

     先来上一张算法结果图片:

全视场sfr
部分视场chart

        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

2.SFR算法(我用的基于opencv347以上版本,vs2015开发环境)

非公益项目,合作请私信联系我。

算法保证没有问题,都是基于标准isosfr算法做了优化,算法更加准确和健壮。


合作方式有两种。

第一种:只售源码不提供chart设计方案,增距镜选型方案,以及定规方案等各种MTF相关知识。

第二种:源码+提供各种技术支持。

评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值