HDR核查项
双目虚化核查项
超级夜景核查项
HDR--核查项:
1.核查进入HDR的scope阈值;
2.核查HDR的合成类型;
3.优化HDR的合成效果;
1、核查进入HDR的scope阈值目前AP端无论自动HDR还是手动HDR,都是走的自动HDR流程,算法通过判断当前场景的动态来决定是否进入HDR合成。其中,hdr_scope代表当前场景的动态,是通过VD的场景检测算法得出,明暗区占比越多,此值越大;vd_hdr_th代表设置的进入HDR合成算法的scope阈值,可以对不同的sensor进行适配。在实际的调试过程中,可以通过将hdr_scope打印到屏幕上进行相应场景的阈值适配,具体的代码路径如下。注:代码路径:Y:MT6785_Qvendormediatekproprietaryhardwaremtkcam3ocamocam_archocam_core_hwiocam_asdocam_asd.cpp
2、核查HDR的合成类型目前虹软的YUV HDR合成分为2种类型,一种为普通HDR合成,即3帧合成HDR,一种为LLHDR,即5帧合成HDR。 2个阈值将iso分为3个区间,分别走HDR、LLHDR和normal,其中iso阈值可以根据不同sensor进行适配,具体的代码路径如下。注:代码路径:Y:MT6785_Qvendormediatekproprietaryhardwaremtkcam33rdpartycustomerocam_multi_yuvocam_multi_yuv.cpp;Y:MT6785_Qvendormediatekproprietaryhardwaremtkcam3ocamocam_archocam_commonocam_common.h
3、优化HDR的合成效果在HDR效果调试的过程中,可以把送进算法的yuv图dump出来,通过txt文件查看HDR合成的每帧EV值,EV值可以根据不同的sensor、不同的场景进行参数适配,最终通过计算成曝光时间跟gain下发到3A,具体的代码路径如备注所示。另外虹软的HDR合成后的效果,目前开放了3个参数的调试接口,分别为ToneLength、Brightness和Saturation。注:代码路径:Y:MT6785_Qvendormediatekproprietaryhardwaremtkcam3ocamocam_archocam_core_hwiocam_hdr_huaqinocam_hdr.h
总结:
a)目前虹软的HDR合成算法包括3帧合成和5帧合成两种类型,5帧合成有4帧相同EV的进行去噪,在调试过程中,可以根据合成后噪点的表现来适配HDR和LLHDR的iso阈值;
b)其次,如果有部分高亮区压不下来的情况,可以先dump出合成前的yuv图,判断是否是因为EV值设置过大,导致合成前的图就没有将高亮区压下来;
c)如果合成后的效果不太理想,也可以将素材dump出来后,提供给虹软进行算法类的优化;
双目虚化--核查项:
1.帧同步核查;
2.Ae sync核查;
3.Size核查;
4.Crop size核查;
5.图像方向及人脸坐标的核查
1、帧同步核查帧同步核查,需要dump出主副摄的YUV图,通过模特手持电子秒表或者拍手机中的秒表APP也可以,要求拍摄包括室内外至少20个场景,每个场景连拍3张,时间精度至少到秒以后小数点3位,最终通过对比主副摄照片中的时间差异来确定帧同步是否OK
2、ae sync的核查,raw跟YUV都需要确认,首先也是需要拍摄室内外多个场景,把主副摄的raw跟yuv图dump出来后,然后raw图的亮度可以通过计算G通道的平均值来代替,YUV图直接计算Y值的平均值即可,要求亮度差异不高于5%,关于ae sync的调试可以参考MTK的相关调试资料。
3、size的核查在双目虚化中,影响虚化效果的size主要有下面2个:
a、标定的size:要求主副摄用来标定的size尽量用full size,如果标定不是用的full size,后期的所有坐标都需要根据标定的size来进行适配,为了不必要的麻烦,这里尽量都采取full size来进行标定;
b、送进做depth的主副摄size:首先要求尺寸满足4:3,且如果送进做虚化的图有做裁剪,这个裁剪的尺寸也需要一并送进算法,用来计算对应的depth,这个裁剪尺寸的确认会在后面中讲到;其次,副摄的视场角必须大于主摄的视场角。
4、crop size的核查a、首先需要用固定三脚架进行拍照,且选择延时拍照来排除手机晃动的影响;b、进入工厂模式,进入虹软双摄标定,点击标定后(不论是否成功与失败),标定的主副摄图会在手机的sdcard/DCIM/Camera/dual_calibration文件夹中;c、打开人像模式的dump,进入人像模式拍照后会dump出送进做depth的主副摄yuv图;d、一般情况下,主摄不会做crop,所以仅需要确认副摄的crop size是否正确即可,需要用crop size计算出基于中心裁剪后在标定图中的坐标,然后把标定的副摄图用对应的坐标裁剪出来(这里可以借用外部工具进行裁剪),对比2张图的视场角差异即可,如果能够完全一致,则说明crop size正确。
5、图像方向及人脸坐标的核查关于图像方向及人脸坐标的确认,最快的办法就是把人脸坐标通过画框的办法显示在屏幕上,比较直观,只要人脸坐标显示正常,则说明图像方向和人脸坐标匹配。
总结:
a)首先需要确定帧同步和ae同步,要求raw及yuv图各场景亮度差异均不大于5%;
b)其次,不论是对于人像预览还是拍照,都是先通过主副摄的图来计算出depth后,再将depth和主摄图送进算法做虚化,所以我们可以通过对不同阶段dump出来的图来进行判断问题出在哪个阶段;
c)通过画框的办法可以快速确认人脸坐标的正确性;d)对于概率性不虚化的情况,一般确认好上面四项之后,就不会出现不虚化的情况,对于误虚、漏虚及虚化强度等问题,可以参考照顺总结的人像虚化调试总结,或者将素材dump出来后给到虹软进行算法端的优化。
超级夜景--核查项:
1.超级夜景的阈值设置;
2.算法内部的sensor适配;
3.EV值核查;
4.人脸坐标及方向核查;
5.前后置夜景合成模式的核查;
1、超级夜景的阈值设置,在场景判断为夜景或者iso满足以上条件的时候才会进入到超级夜景(手持)模式,这里也可以采取通过读取当前场景的lux来进行判断,具体的iso设置或者lux的设置可以根据不同的sensor进行适配,具体的代码路径如下。注:代码路径:Y:MT6785_Qvendormediatekproprietaryhardwaremtkcam33rdpartycustomerocam_asyncocam_async.cpp
2、算法内部的sensor适配在项目初期,我司会将不同sensor的参数发给虹软进行算法内部参数的适配,如sensor的bit depth、bayer pattern、size及前后置类型等,虹软会在算法内部针对不同的sensor进行适配,后才会释放正式的算法库。在核查过程中,需要确认sensor在虹软已经进行了参数的适配,且要通过log确认算法init成功,及检查合成后的raw out,确认raw图是否有正常合成。
3、EV值的核查不论是前置还是后置超级夜景,都是通过多帧来进行合成,其中有6帧进行去噪,另外的2帧来提升动态,所以我们需要确认其中6帧的亮度一致性及另外两帧EV-的亮度,此处可以通过之前我分享的realme_supernight_simulation_tool来进行仿真确认。如果EV值没有生效,则需要确定EV值下发的流程是否正常,目前nemo项目中,EV值是通过转换成ae_exposure_compensation,以metadata的方式下发到3A,最终在AE生效,具体的代码路径如下。注:代码路径:Y:MT6785_Qvendormediatekproprietaryhardwaremtkcam33rdpartycustomersupernightevdecisionCustomSuperNightEvDecision.cpp
4、人脸方向及坐标的确认可以通过超级夜景dump出来的txt文件来确认,在txt文件中包含照片方向和人脸坐标,可以在dump出来raw图的基础上,基于txt中的方向和人脸坐标进行crop后,就可以确认人脸方向和坐标的正确性
5、前后置夜景合成模式的核查虹软的超级夜景合成算法分为前后置两种类型,且算法逻辑是不一样的,其中后置大多采用6+1+1的模式,且前6帧为EV0,后两帧为EV-;前置大多采用1+6+1的模式,其中第一帧为EV0,中间6帧和最后一帧为EV-,而且前置的图片方向跟后置不一样,需要采用上一步的方法重点确认
总结:
a)虹软的超级夜景算法也属于多帧合成,其中6张相同EV亮度的raw主要用来去噪,另外两帧用来保动态,同时虹软针对前后置的算法类型也不一样,需要找虹软确认好;
b)夜景合成算法的去噪类型也分为带AI降噪和不带AI降噪,其中带AI降噪的算法大多通过深度学习来做的,会针对照片的不同区域来进行不同强度的去噪,去噪效果较好,且可以保留细节;不带AI降噪的算法大多通过滤波器来进行整体降噪,去噪效果较差,且会影响整体清晰度;
c)后续如果合成效果需要优化的,可以把dump出的有效素材(确保raw图跟txt文件正确)发给虹软,让虹软进行算法类的优化;



