自动曝光算法(第一讲)

序言

失业在家无事,想到以后换方向不做自动曝光了,但是自动曝光的工作经验也不能浪费了,准备写一个自动曝光的教学,留给想做自动曝光的小伙伴参考。笔者当时开发自动曝光没有按摄影的av+tv=ev=bv+sv公式弄,而是按正确的增益=目标亮度/当前亮度*当前增益的公式去开发。

介绍

自动曝光算法的目的:已知当前raw图亮度、当前曝光时间、当前增益和目标亮度,当环境光发生变化的时候,是通过控制增益、曝光时间和光圈使raw图的亮度,保持在目标亮度附近。

下面开始对上面的话进行解释:

**raw图:**r gr gb b格式的图,借鉴rgb图,raw图在数据上可以看成一个mxnx4的图片

**raw图的亮度:**将全图的r gr gb b的像素值分别累加后除以每个通道像素点的个数求平均后按yuv计算公式算。

r_avg=r_sum/r_num

gr_avg=gr_sum/gr_num

gb_avg=gb_sum/gb_num

b_avg=b_sum/b_num

y=(0.299 * r_avg+ 0.2935 * (gr_avg+ gb_avg) + 0.114 * b_avg)

**曝光时间和增益:**曝光时间和增益可以看成一个乘法系数,该乘法系数不可以为0,因为硬件存在最小曝光时间(1行)和最小增益(1x),这个系数是作用在整个raw图上的,如果该系数发生变化,raw图的每个值发生同样倍数的变化。

举个例子说明曝光时间和增益变动的影响

假设当前亮度下获取到一张raw图,该图的每个点的像素如下,已知当前的曝光时间和增益分别是10ms和1.5x,下面我们要给sensor下发一个新的曝光参数,新的曝光参数为曝光时间10ms和增益3x。对比前后2组曝光参数,可以发现,增益从1.5x变成了3x,扩大了2倍。因此如果当前raw图的像素值没有饱和,每个点的像素也扩大了2倍。

10ms 1.5x

10ms 3x(如果是20ms 1.5x 每个像素也是变成2倍)

**目标亮度:**预设一个值或者一组值,raw图的亮度要在这个值附近,一般是±5%范围内。

当环境光发生变化的时候,是通过控制增益、曝光时间和光圈使raw图的亮度,保持在目标亮度附近。

假设当前环境光亮度为c,曝光时间和增益提供的系数为w,当前的raw图的亮度为cur_y,目标亮度为tar_y。

假如tar_y/cur_y在0.95到1.05范围内,则认为当前曝光没问题。

假如tar_y/cur_y不在0.95到1.05范围内,且tar_y/cur_y=w2;则需要将曝光时间和增益提供的系数为w变成w*w2,当曝光值(曝光时间、增益和光圈(虽然我们这里没用到光圈)的积叫做曝光值)从w变成w*w2,画面亮度也要*w2,cur_y->cur_y*w2。tar_y/(cur_y*w2)=w2/w2=1,1在0.95到1.05范围内,亮度达到预期。

仿真代码

待续......

相关推荐
OkeyProxy3 天前
怎麼解除IP阻止和封禁?
ip·ip地址·isp·代理服务器·海外ip代理
cv君15 天前
深度学习在ISP中的的研究与进展
图像处理·人工智能·深度学习·isp
sz66cm4 个月前
图像处理 -- ISP调优(tuning)的步骤整理
图像处理·isp
MAR-Sky4 个月前
CH552G使用IAP下载
c语言·开发语言·iap·isp
岁月蹉跎的一杯酒5 个月前
富瀚微FH8322 ISP图像调试—BLC校正
isp
daisy.skye5 个月前
isp效果库相关参数——镜像翻转
计算机视觉·camera·isp
深圳信迈科技DSP+ARM+FPGA5 个月前
基于ARM|DSP+FPGA+NVIDIA AI平台的摄像头ISP图像画质调试定制服务
isp
深海27807 个月前
camera_ISO
图像处理·数码相机·计算机视觉·camera·isp
深海27807 个月前
带你认识sensor黑电平
图像处理·camera·isp
深海27807 个月前
Lens Shading
图像处理·数码相机·计算机视觉·camera·isp