君正ISP记录三:AE与AWB衍生功能“软光敏“

一、软光敏介绍

消费类摄像机,一般都存在全彩模式和黑白模式,即环境照度较高画面全彩,环境照度较低 画面黑白、开红外补光灯。这时候涉及一个切换问题,如何判断当前的环境照度。

最开始使用的都是硬光敏,即光敏电阻,后需便开发完善了软光敏,主要目的就是代替硬光敏实现判断功能。

二、软光敏逻辑

两大点:①如何判断环境亮度 ②黑白模式下,如何分辨当前场景这光亮是环境光还是机器自己的红外灯反光。实现这两点软光敏基本就OK了

1、基本实现原理

使用AE模块的EV值(增益和曝光行合起来的一个参数)来判断画面亮度,AWB模块的RGB分量来判断红外灯反光场景。

白天只判断亮度,超过阈值后切黑白、开红外灯;夜视下通过EV值来判断亮度,RGB分量判断红外占比,到达一定亮度,且红外灯占比很小时切全彩、关灯板

2、实现流程
①获取画面所需信息

cpp 复制代码
/*获取AE曝光值*/
iRet = IMP_ISP_Tuning_GetAeExprInfo(0,&ExpAttr);
if (iRet != 0) {
	UTIL_ERR();
	return -1;
}
ev = ExpAttr.ExposureValue;

/*拿到AWB 统计信息*/
iRet = IMP_ISP_Tuning_GetAwbStatistics(0,&awb_zone);
if (iRet != 0) {
	UTIL_ERR("", iRet);
	return -1;
}
memcpy(zone_r,awb_zone.awb_r.statis,225 * 4);
memcpy(zone_g,awb_zone.awb_g.statis,225 * 4);
memcpy(zone_b,awb_zone.awb_b.statis,225 * 4);

②处理获取到的awb信息

cpp 复制代码
	/*计算画面总的RBG分量*/
	for(i = 0;i < 15; i++) {
	    for(j = 0;j < 15; j++) {
	    	r_sum += zone_r[i][j];
	    	g_sum += zone_g[i][j];
	    	b_sum += zone_b[i][j];
	    }
	}
	if(g_sum > 0) {
		rg = (r_sum*100)/g_sum; //计算rg的100倍
		bg = (b_sum*100)/g_sum; //计算bg的100倍
		
		rgdiff = abs(rg - 100); //r跟g分量的差值
		bgdiff = abs(bg - 100); //b跟g分量的差值
		diff = (rgdiff + bgdiff)/2;
	}

③软光敏具体功能实现

cpp 复制代码
	if(1 == Day_Night) {
		/*当前白天,判断是否切换夜视*/
		if((int)ev > to_night_ev) { 
		/*to_night_ev 根据不同sensor设的切换阈值*/
		/*ev值很大,说明当前场景很黑,所以切换夜视模式*/
			night_count++;
			if (night_count > 3) {
				night_count = 0;
				/*这里放切黑白夜视的需要的各种函数,灯板、ISP模式、IRCUT等*/
				}
			}
		}
		else {
			night_count = 0;
		}
	}
	else if(0 == IR_Mode_Is_Day_Night) {   
		/*当前夜视,判断是否切换白天*/
        if (ev < to_day_ev && diff > 8 ) {
        /*to_day_ev 根据不同sensor设的切换阈值*/
        /*diff 处理的awb信息,实测基本上所有sensor都适配这个数,有特殊的可以单独拎重设*/
            day_count ++;
        }
		if (day_count > 6) {
				/*这里放切黑白夜视的需要的各种函数,灯板、ISP模式、IRCUT等*/
				day_count = 0;
			}
        }
    }

这样基本功能就实现了

3、延伸

①一些主控没通过类似方法判断红外灯反光,还坚持要上软光敏的话,可以退而求其次,使用模式锁逻辑。

具体原理:软光敏在一定时间内反复切,比如 一分钟内来回切换了五次,就判断为红外灯反光场景,直接固定黑白模式一定时间,不走软光敏。该原理也可用于白光灯补光但需要上软光敏的项目

②有时候白切黑\黑切白阈值 设置的太近了,也会出发频切

③有些场景有些杂光混合,不好判断,也不想上模式锁的话,可在软光敏新增一个预切机制

具体原理:黑切白前,记住当前场景的参数,即上文代码里的diff,先关灯板切到白天,如果EV值达到白切黑的阈值,那便切到晚上,在之前记住的参数的一定范围内,不做模式切换。

原文链接:https://blog.csdn.net/sashimi69/article/details/140639210

相关推荐
kyle~2 天前
ISP---RAW数据解析:从PixelFormat、Packed_Buffer到Bayer解码
数码相机·接口隔离原则
FLJwu2 天前
镜头模组与画质量产实战 03:运动相机 ISP 图像调校、杂光鬼影抑制与来料验收标准|20 年源头工厂量产经验
经验分享·数码相机·产品运营·接口隔离原则·相机
kyle~3 天前
ISP---RAW 成像的物理基础
计算机视觉·接口隔离原则·相机
kyle~3 天前
ISP--- RAW 图像 从传感器噪声模型到快门时序与频闪效应
人工智能·计算机视觉·接口隔离原则
PHP实战开发录4 天前
PHP接口参数没变为什么总是验签失败
php·开发·接口隔离原则
啊阿狸不会拉杆5 天前
《计算机网络-自顶向下方法》5.4 ISP之间的路由选择:BGP 读书笔记
网络·计算机网络·接口隔离原则
运维行者_7 天前
ISP 企业级带宽计费怎么做?网络流量计费的 6 大核心能力
运维·服务器·网络·数据库·支持向量机·接口隔离原则
AomanHao15 天前
【ISP】sensor高亮灰度溢出及anti-bloomimg功能
接口隔离原则·isp·sensor
磐时信息技术17 天前
磐时助力中科创达 ISP Tuning 项目通过 ASPICE L2 评估
接口隔离原则
PHP实战开发录21 天前
微信小程序多环境配置混用排查记录
微信小程序·php·开发·接口隔离原则