基于Blackfin 561的数字图像的成像处理
1 概述
CCD摄像头对数字图像的处理分为图像前处理和图像后处理。图像前处理是指在通过对图像传感器输出的连续图像进行分析,获取足够的信息,并根据实际图像效果调整摄像头参数,以实现正确的自动曝光、自动聚焦和自动白平衡等。图像后处理,是指对图像进行恢复和增强处理,包括内插、白平衡更新、伽玛校正、边界增强等,以得到与原始图像接近并符合人眼视觉特性的照片。本文主要对图像前处理中的自动白平衡和自动曝光及图像后处理中的内插、颜色变换、伽玛校正和背光补偿的3A1B算法进行了简单介绍,并基于Blackfin 561(以下简称BF561)平台实现了上述算法。
2 数字图像的成像算法介绍
2.1 自动白平衡
不同光源和天气条件下的光谱特性互不相同,称之为色温。相同景物在不同的色温下会出现不同的显示效果。比如白纸在白炽灯下会偏红,在荧光灯下会偏绿,而在自然光下会偏蓝。白平衡就是对色温进行调节的过程。目的是使得三基色的比例和原景物的基色成分相似。故调节色温的过程就是调节三个通道增益的过程,表示如下式:
Ro=cr×Ri,Go=cg×Gi,Bo=cb×Bi (1)
其中,称cr,cg,cb为通道增益。
自动白平衡的主要操作可分为三步。首先是色温估计,即把色温量化计算出来;然后是增益计算,即通过查表或者迭代的方法计算出红色和蓝色增益;最后是色温校正,在红色和蓝色通道调整增益,以达到白平衡的效果。
色温估计是最重要的环节,色温估计的目的是计算出正确的色差,才能保证后续操作的正确性。很多学者通过对白色区域的约束条件研究进行色温估计。现在普遍采用的白色区域约束条件是建立在Nakano,Lee等人的工作基础上。增益计算是在图像色温估计的基础上,通过一定方法得到通道增益。在偏色过程中,常常发现绿通道的增益并不发生明显的变化,故只需调整红蓝两色增益即可。增益计算是一个反馈的过程,迭代的目标是白色的Cb, Cr值等于0或者是一个足够小的数值,都可认为是白平衡。
2.2 自动曝光
控制曝光就是控制总的光通量,也就是曝光过程中到达 CMOS表面的光子总和。在此次设计中,影响曝光的因素主要有两个:曝光时间和增益。曝光时间是采集一张图像时CCD或CMOS总的感光时间。增益是对图像信号的放大增益,由于在对图像信号进行放大时同时也会放大噪声信号,因此不宜将增益设得太大;另外,增益过大对于曝光时间调整也不利。自动曝光有三个基本步骤:依次为亮度检测,曝光估计和曝光校正。
一幅图像的亮度可以表示为Y=k×L×G×E。其中,Y表示图像平均亮度,可以由亮度检测得到;L是被拍摄物体的亮度,即环境亮度; G是增益;E是曝光时间;k为一常数。可见,在一定的环境光下,图像亮度与两个曝光参数的关系为:
Y=c×G×E (2)
其中,c为常数。显然,过大的增益除了使噪声放大之外,也使系统对曝光时间的灵敏度增加,从而对曝光控制策略的精度提出了更高的要求。因此,在设计曝光控制策略时,总是将增益控制在较小的数值,而在曝光时间超出其所允许的范围时才调整增益。
假设当前光照条件下,预期采集得到的图像平均亮度为Y0,对应所需要的曝光时间为E0,那么可以得到Y-Y0=k'×(E-E0),即ΔY=k'×ΔE。式中,E为当前曝光时间,Y为当前照度和曝光参数下的图像平均亮度。那么,可以看出,由ΔY有希望得到ΔE,但k' 与环境光L和增益G有关,无法计算得到。但是经过变换后可以得到:
(3)
由上式可知,在曝光时间一定时ΔE/E与ΔY为线性关系,虽然仍然不知道参数k'' ,但已经找到了一种自适应步长的计算方法,根据不同的ΔY,可以设定ΔE/E获得不同的ΔE,这个ΔE是与当前曝光时间E和ΔY相关的,实现了一定的自适应能力。
同时也可以设定预期亮度接受范围宽度Th,相应的应将量化曲线调整作相应调整,假设Th=8, Y0=128,那么ΔY>8,量化曲线调整为
(4)
这种自适应步长调整的方法在ΔY较大时,采用较大的步长,加快收敛速度,在ΔY较小时,采用较小的步长,保证精度,因此能满足一定的快速准确的自动曝光控制。
上面并未考虑到增益的调整。在一定范围内,可以保证增益取一个较小的值,但在环境亮度L很小的情况下,只能增加曝光时间E。因此,对曝光时间也需要进行控制,使其不致太大,影响帧率。但同时,应当保证曝光时间优先调整,减小增益过大所带来的负面影响,在增益扩大之后,如果光照环境再次改变而不需要这样大的增益,应当使增益恢复到原先的较小水平。
2.4 背光补偿
背光补偿的主要思想是在整体环境很亮的情况下,调整由于对光源造成的低亮度区域的亮度取值和变化程度,以达到增强背光区域的可见程度的目的。根据不同的原理,目前背光补偿主要有灰度拉伸和自动色阶调整两种方法。
灰度拉伸算法主要采用不同的变换函数对图像原始亮度进行非线性映射,以达到扩展低灰度区,平缓高灰度区的目的。实际应用的变换函数主要有分段线性函数,圆形曲线函数和对数函数三种。
自动色阶调整算法主要是基于当图像中存在强光源时,会使得图像亮度直方图中出现亮暗两个高峰。算法首先判断图像是否存在亮暗两个高峰,然后对低亮度部分进行扩展,对高亮度部分进行压缩。
3 基于BF561的数字成像处理系统
3.1 Blackfin处理器在数字成像处理系统中的优势
ADI公司的Blackfin系列处理器是一款专为满足当今嵌入式音频、视频和通信应用的计算要求及功耗约束条件而设计的新型嵌入式处理器。Blackfin处理器基于由ADI和Intel公司联合开发的微信号架构(MSA),它将一个32位 RISC型指令集和双16位乘法累加(MAC)信号处理功能与通用型微控制器所具有的易用性组合在一起。这种处理特征的组合使得Blackfin处理器能够在数字信号处理,特别是视频信号处理,和控制处理应用中均发挥上佳的作用——在许多场合中免除了增设微控制处理器的需要。所以Blackfin处理器极大地简化了硬件成本和软件设计的难度。
目前,Blackfin处理器在单内核产品中可提供高达600MHz的性能。而BF561处理器是对称多处理器,在相同的频率条件下实现了性能的翻番。同时Blackfin处理器系列还提供了低至0.8V的业界领先功耗性能。对于一些手持移动设备来说,这种高性能与低功耗的组合是必不可少的。Blackfin处理器应用于数字成像处理系统具有得天独厚的技术优势。
(1) 具有高性能处理器内核。该处理器架构基于一个 10级RISC MCU/DSP流水线和一个专为实现最佳代码密度而设计的混合16/32位指令集架构,该架构很适合于全信号处理能力。这种架构非常适合高密度,大运算量的数字成像处理系统。
(2) 高带宽的DMA。数字成像处理系统需要对大量的图像数据进行处理,这就涉及到内存数据存取。采用 Blackfin的2维DMA控制器可以实现自动数据传输,大幅度减少处理器的内核开销极少。
(3) 专用的视频指令集。数字成像处理中存在大量的视频像素处理,Blackfin处理器具有专门为 8位视频数据以及常用的视频像素处理算法设计的指令集,大大提高了处理速度。
(4) 分级的存储空间。Blackfin具有L1和L2两级Cache,对于一些不适合使用 DMA操作的数据,可以采用数据/代码缓冲的模式来加快处理速度。
(5) 丰富的外设功能。Blackfin具有高速的串/并行数据接口,可以无缝的连接其它高速器件,如ADC,DAC,外部存储器等。
3.2 数字成像处理系统的结构设计及优化
BF561具有2个高速的PPI接口,可以同时支持视频数据的输入和输出。成像处理系统使用 BF561的PPI 0接口将数据保存在SDRAM中,使用PPI 1接口将处理过的数据输出。2个DMA控制器分别连接到PPI 0和PPI 1上,保证了数据的高效传输。
该系统采集的是整帧图像,需要分割成小的子块再进行增强处理。不直接对整幅图像处理的目的是为了将图像处理算法应用到小图像块中,这样可以方便使用汇编语言程序来提高运行效率,并且分块图像存储在运行频率更高的L1存储器中,以减少数据存取的时间开销。数据的转移操作全部由DMA来完成,内核只有极少量的配置和中断处理开销,大大提高了处理效率。经过处理后的小图像块要先变为整幅图,然后再输出。系统框架如图1所示。
为了提高框架的运行速度,作者对系统框架进行了2维DMA传输和图像处理的并行优化。根据DMA传输和运算的实际消耗,当采用不同的输出模式时需要使用不同的并行处理结构。
当针对电视设备等输出时,由于算法实际处理图像为half D1大小,需要将half D1大小的图像重复输出两场中组成 NTSC模式的两场图像输出。这时YUV图DMA输出和 Bayer图的DMA输入就会成为主要的消耗,因此主要是需要并行这一部分,其并行结构如图2所示。
当不是针对电视设备输出,而是需要组成整帧图像进行后续类似编码或者VCA处理的话,只需输出half D1大小的图像。这时图像处理模块就成为主要的消耗,因此,只要将处理和DMA传输完全并行起来即可,其并行结构如图 3所示。
3.3 系统性能分析
现在进行处理的工作主要有图像内插运算,图像颜色变换、白平衡更新、伽玛校正、自动曝光估计、自动白平衡参数估计和背光补偿。这些算法使用了Blackfin的汇编指令和8位专用视频指令进行了优化,大大提高了算法的处理速度。被处理图像基于28*28的子块进行计算,实际有效区域为24*24。实际图像为D1大小的一半,每帧图像的有效像素为724*244,共有30*10=300个图像块。处理模块中除了自动曝光估计只是对中央14*4(共56)个图像块进行统计外,其余运算均是对全部300个图像块进行操作。
表 1 一帧图像的图像处理运算 MIPS 统计
模块名称 现有速度/cycles
内插运算 1.825M
颜色变换 1.766M
伽玛校正 2.450M
自动曝光参数估计 0.070M
白平衡系数更新 1.524M
白平衡参数估计 1.521M
背光补偿 1.340M
总计 10.496M
综上所述,系统现有图像处理模块每帧总的MIPS为10.496M,以每秒 25帧计算,总共需要262M。
4 实验结果
现阶段作者主要实现了自动曝光、自动白平衡、背光补偿、颜色校正、伽玛校正五个功能。总体效果如图4和5所示,开启背光补偿后的效果如图6所示。实际在显示外设中的显示结果要比使用Visual DSP的图片中明亮。
图4中的截图都是在日光灯开启环境下的夜间场景。图5中的截图是中午在室内拍摄的白天场景。由图5与图4对比的场景。可见,现有算法可以很好的适应不同的色温。
图6中的截图分别为关闭和开启背光补偿功能时在室内正对窗口拍摄的场景。从中可以看出,关闭背光补偿功能后,可以清楚地看到窗外的大楼但是室内的情况完全看不到;开启背光补偿功能后,在保持清晰显示窗外大楼的同时,在一定程度上补偿了室内区域的亮度。
5 结论
本系统完成了在BF561平台上实现摄像头前后端处理 3A1B的功能,只利用了BF561双核中的一个核完成3A1B的算法。另一个核则是完全闲置,为后续增加其他部分功能如图像编码和VCA智能处理提供了充足的处理空间。
本系统目前采用的算法均为3A1B各自方法中较简单的算法。通过进一步优化各图像处理模块,可以在减小处理的运算量方面得到一定的提升。因此,可以通过采用更复杂和优越的后处理算法,使得整体系统在处理快速性、稳定性和鲁棒性上得到较大的提升。
暂无评论