temporal filtering(时域滤波):基于对运动的评估,分别对运动区域和静止区域做不同的处理。
对于不同的模式TF有不同的anr blend mode,其主要分为单帧NR mode和多帧NR mode。
1.多帧NR mode
输入多帧(如8帧)图像在TF中做blend,然后TF输出合成后的一帧图像。在做blend之前,TF会根据当前帧和当前帧连续的前后帧之间相同的区域做对比,区分出运动区域和静止区域。如果连续的两帧图像中相同区域中的内容发生变化,则判定该区域为运动区域。运动区域一般不进行叠加融合,否则会产生ghost。
TF中对图像的处理遵循以下规则:
Final=a1*prev+(1-a1)* cur_spatial
cur_spatial=a2*anr+(1-a2)*cur
如果为运动区域,则a1=0,a2达到最大,blend图像使用更多的anr降噪。
如果为静止区域,则a1达到最大值,a2达到最小值,blend图像使用更少的anr降噪。
在多帧 mode下,a1由SW控制,不可tuning。
高通平台在进行多帧混合的时候,会挑选出最清晰的一帧做为基础帧。
参数constant_blending_factor_y/c作用于基础帧,其作用是控制基础帧和基础帧的anr output的blend。(值越大,降噪效果越弱)
参数a2_max_y/c控制其他帧的降噪强度。其中不同帧的降噪强度不同,越到后面的帧降噪越弱。
a2_max=a2_max * (1-((current frame -1)/(total frame -1))),a2_max最小值为0.
如果运动区域比静止区域噪声大,可以通过调整a2_max,在blend时加入更多的anr降噪去平衡噪声和清晰度。a2_max主要针对运动区域的降噪。
对于filter strength模块,indication:0~8,FS:0~64,FS每隔8代表一个新的indication。其低pass的结果会被用于高pass。假如DC4的FS=0,full pass中的threshold计算会乘以DC4中FS=0时对应indication中的值。同理,当DC4的FS=63时,full pass中的threshold计算会乘以DC4中FS=63时对应indication中的值。(所以对于运动区域的判定,要从低pass开始到高pass)
2.单帧NR mode
主要是单帧sanpshot和post stage的TF,这种scenario的TF不需要进行校准,因为不用进行运动区域和静止区域的评估。
anr_blend_mode被设置为1(仅在full pass有效),表示当前帧和当前帧的anr output进行blend。
参数anr_final_blender_luma/chroma_min_strength_high_freq用于控制blend anr的强度。
3.MCTF(motion compensation temporal filtering):运动补偿时域滤波,基于对图像的运动评估和运动补偿,对图像中不同的区域使用不同的降噪处理。
处理方法:输入cur_image,anr_image,prev_image三帧图像在TF中进行blending,其中cur_image和prev_image主要用来做运动物体的检测,判定图像中的运动区域和静止区域,以及做帧间的对齐。
TF对运动区域和静止区域的判定准确性可以通过在TF内置的仿真模块中仿真查看FS的结果验证。
a2_max主要针对运动区域的降噪,其控制cur_image和anr_image的blending的强度。
a2_slope主要针对静止区域的降噪,值越小,其混合的anr越多,降噪就会越强,如果静止区域和运动区域交接处的边缘有问题,则需要通过a2_slope优化。
a1用于控制图像的时域降噪的强度。
a1和a2的横坐标都代表的是FS,FS为0代表运动区域,使用更多的空域降噪,并且不使用时域降噪,运动区域使用时域降噪容易产生ghost。FS为63代表静止区域,使用更多的时域降噪和少量的空域降噪。