图像处理算法
MFNR多帧降噪
前言
提示:mfnr算法是用于ISP的算法,参考多帧的信息对图像进行降噪,核心是参考图像时域,空域梯度的信息对图像做blending,得到一组较理想效果的图像
一、MFNR是什么?
MFNR(Multiple Frame Noise Reduce)是用于ISP算法端的图像处理算法。 属于ISP算法中较为复杂的算法,其中的算法原理及实现参考 https://zhuanlan.zhihu.com/p/495897164 的代码实现。
二、MFNR算法原理
1.整体框架
MFNR算法是将参考帧和其前后帧的图像做比较,先对图像划分为(img_width/patch_w) * (img_height/patch)个patch块,每个patch大小为patch_w * patch_h. 算法整体有三个主体算法:
1. 参考帧梯度计算:在对参考帧的完成patch的划分,在patch块上对参考帧做水平和垂直梯度的计算,将两个方向的梯度均值(水平梯度和垂直梯度所占的权重相同)作为参考帧的梯度结果
2. 帧间SAD计算:帧间SAD是时域上的变化。对上一帧和参考帧的灰度图做patch的abs操作,操作的单位是patch块。对patch的每个像素,选取上一帧当前点的MxN邻域与参考帧的当前点做abs,记录最小的abs_diff的位置,x_off和y_off;将上一帧 x_off和y_off的位置数据和参考帧当前点的abs做delta判断,计算的值记为dist,dist_avg = dist/(patch_wpatch_hM*N)的结果为了最后数据权重的参考。
下一帧和参考帧的计算相同
3. 权重计算:权重是参考空域上计算出的梯度和时域上计算出的diff,将其作为每一帧数据的权重系数,用于得到最终的降噪图像。
w0 = math.exp