1 概述
在机器视觉中,自动曝光(Auto Exposure)是很多成像设备的必备功能。所谓自动曝光,就是根据环境或拍摄物体照明强度自动调节图像传感器的曝光时间,使输出图像的平均灰度(亮度)保持在一个合理范围,不产生过曝或欠曝现象。
有一些CMOS图像传感器带有自动曝光功能,可直接使用。对于没有自动曝光功能的CMOS传感器,就需要在接收端设计开发相应的自动曝光算法,来动态控制CMOS的曝光时间。目前,很多CMOS传感器使用FPGA芯片作为图像接收端。
本文介绍一种在FPGA中实现的自动曝光算法,具有原理简单、实时性高、响应快、收敛快的特点。
2 自动曝光算法
2.1 自动曝光原理
自动曝光的算法有很多种,为了便于FPGA实现,从资源消耗和实时性的角度,可以选用2种原理相对简单的方法:灰度均值法和加权灰度均值法。
首先,2种方法都需要设置一个图像的目标灰度均值Yt。
灰度均值法是计算整幅图像的灰度(亮度)均值Y,即
Y = 整幅图像的像素灰度累加和÷像素数
加权灰度均值法是将图像等分为N个区域,每个区域单独计算灰度均值Yi,并为每个区域的灰度均值赋予不同的权重系数Fi,最后加权得到整幅图像的灰度均值Y。其中
显然,加权灰度均值法考虑了场景亮度的不均匀性,当较亮的像素点集中位于图像某些区域时,该种方法更具有优势。
然后,将Y与Yt相比较,得出Yt-Y=∆Y ,然后计算出下一帧图像的曝光时间。
2.2 曝光时间调节步长
自动曝光的曝光时间调节需要具备2个基本要求:快读响应和快速收敛。
快速响应是指,曝光时间的调节使图像亮度的变化速度能尽可能跟上光照变化的速度。也就是图像亮度达到稳定的延迟时间短。
快速收敛是指,当自动曝光接近结束时,图像亮度趋于稳定或在很小范围内波动时,曝光时间调节应迅速收敛,最终维持在1个稳定值。
为了满足上述2个条件,设置一个最小灰度均值差∆Ymin,当|∆Y|≤∆Ymin 时,表示自动曝光收敛,无需进行曝光时间调节。
默认CMOS输出图像的亮度与光照近似为线性关系。当|∆Y|>∆Ymin 时,已知当前帧图像的曝光时间为T,则曝光时间调节步长∆T采用了如下公式计算:
当满足
当满足
下一帧图像的曝光时间即为Tn=T+∆T 。
3 FPGA实现
经过比较,最终选择了加权灰度均值法在FPGA中予以实现,将图像等分为16个子块分别计算均值。为了降低资源消耗,将求灰度均值Y过程中的除法转换为乘法运算,求∆T 改为查找表方式实现。
根据上述原理,所设计的FPGA模块支持自动曝光时间范围为1μs~1s,图像分辨率可调,并且可支持单时钟周期多像素点输入。
针对4096*4096,8bit图像的自动曝光模块资源消耗如下:
文章来源:https://www.toymoban.com/news/detail-656371.html
需要源码请私信。文章来源地址https://www.toymoban.com/news/detail-656371.html
到了这里,关于基于FPGA的自动曝光算法实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!