isp关于3D的基本逻辑
##几个isppipeline的3D去噪模块的简单逻辑
去噪,总是isp的核心,如何保留细节去去除噪点无不让调试安防低噪摄像机的攻城狮们和爱马仕一样头部日益发凉。。。
好吧,对于入门的ispturninger来说,3D,很不友好,这参数干啥的呀,哦原来调这个会怎么怎么样,那想过没其中逻辑是如何呢?比如像hisi 3D模块,是不是调到怀疑人生,对的,我一度怀疑人生,很发展的filter组合,而君正3D,开放的参数相对比较少,单单从参数想窥探3D的基本原理就别想了,所以不好调,调的也不痛快。sigmastar,还算友好,需要多模块配合能有出其不意的效果。最近有机会接触了联咏,看了下3Ddenoise的文档,最原理说明很清晰,记录下,让浆糊般的脑子凝固一些。好吧,我都觉得自己废话好多,开始吧。
现在的3D去噪基本上都是空域和时域的结合,及2D和3D的结合。
说到这里,先说说空域,即空间域,也就是2D,对没错,就是你想的一帧图像,话说名字取得这么数字信号处理…针对一帧图像,噪点是不是多余的像素点?对吧,之前对于异常点处理DPC,直接中值滤波,完美,所以加强加大DPC,就能用来2D处理,常用高斯滤波(很无情,很伤细节),现在基本都用双边滤波,就是中值滤波器考虑了灰度关系,这样就不会这么无情,再加上各家牛逼(并牛逼不到哪去,虽然我不知道算法的具体实现)的查找噪点的算法,基本就能满足中等安防车载等使用,空间滤波牛逼的去噪是频域去噪,对没错,就是信号处理,为什么牛逼,因为有钱。增加性能,去做小波变换等我不知道的变化,把噪点分离出来,直接干掉,再逆变换回来,噪点没了,听起来确实牛逼,但是没钱,不关注。
好了废话了好久,终于开始了3D,即时域,对没错,就是时间域,就是前后帧之间对比,找到静态区,过渡区,动态区,静态区“防抖处理”(哈哈,就是像素黏住不动),过度区减弱黏度,上些2D,动态区基本不用黏,直接上2D,搞定。感觉就说完了,我去,很偏题呀,再记录点。
3D,对,就是如图。
图中的毛线团是动静判断模块。是都当前第k帧和第k-1帧(牛逼的可能会用很多帧去计算,我们这里就不考虑了,毕竟自己不牛逼)的判断结果。
首先我们要计算图像中的噪点扰动情况,通过和上一帧的比较算出一个SAD_AVE,再计算出噪声分布的标准差,SAD_STD.再来两个系数M1,M2.得到
THR1=SAD_AVE+M1*+SAD_STD;
THR2=SAD_AVE+M2*+SAD_STD;
M1和M2即我们调试时会使用到的判断系数值。
则,我们可以得出
blockSAd<THR1,静止区 ,即途中的LV=0
THR1<blockSAd<THR2,过渡区 ,LV=1
THR2<blockSAd,运动区,LV=2
得到了LV(lv,怎么这么熟悉…对贵…这个得出lv的算法也是每家方案商的精华)
有了lv之后,Tout = (1-(2-lv))T2D + (2-lv)T3D即完成3D。算算呗,lv=2,运动区,T3D系数为0,T2D系数为1,全用2D,对吧。再画个2D图。
b是SAD_AVE,k为斜率,更直观得系数。
那么lv = b + kx,当细节越多时,噪点扰动情况也会越严重,所以,图中红线以上为动态区,红线黑线之间为过渡区,黑线黄线之间为静止区。
好了,就这样吧,我也是刚入门,啥也不懂,有错误欢迎指出。多谢了!