杨逸峰,井丽红,杨世坤,姜丽辉,左 乐
(上海航天控制技术研究所·上海·201109)
近些年,我国的空间探测能力发展得较快。作为一种空间探测的重要手段,可见光相机可利用空间目标的太阳反射光进行成像,其受光照条件的影响较大。但是,由于可见光相机具有成像分辨率高、探测距离远、测量精度高等优点,被广泛地应用于空间目标监视成像领域。由于可见光相机面阵大、面元多、分辨率高、数据量大,在算法处理上,本文选用了快速、有效、相对简单的方法处理数据,还原了三基色图像,平衡了色差,使图像的视频效果更加清晰。
颜色插值算法是相机根据采集到的原始数据恢复出全彩色数据的核心算法[1-3],虽然相关算法已被提出了很多年,并在国内外得到了广泛的应用,但是追求高性能、高速度的时代,对算法的性能和复杂度有了更高的要求,而目前已提出的一些算法无法很好地平衡算法对高性能、低复杂度的要求。就现状而言,如何在保证算法插值质量的前提下,降低算法的复杂性,已成为现实的核心问题。本文将颜色插值法和白平衡法[4-5]两种功能算法进行了结合,对可保持高性能同时又可保持较低复杂度的插值算法和白平衡方法进行了研究,提高了算法的实用性。
可见光图像的成像过程为:光束经光学系统聚焦到探测器后,互补金属氧化物半导体(Complementary Metal Oxide Semi-Conductor,CMOS)探测器对可见光积分进行光电转换[6],接着将电信号传至信息处理电路做成像处理,信息处理电路采用的是由信号处理器(Digital Signal Processing,DSP)和现场可编程门阵列(Field-Programmable Gate Array,FPGA)这两个主要器件构成的硬件平台架构。经信息处理电路处理后的图像数据通过低电压差分信号(Low-Voltage Differential Signaling,LVDS)高速输出,用于显示图像[7],相机的结构如图1所示。成像过程的数据流为FPGA控制模数转换器(Analog to Digital Converter,A/D)采集探测器输出的原始数据,随后通过外部存储器接口(External Memory Interface,EMIF)将采集的数据输送到DSP进行算法处理,处理后再将图像数据通过EMIF传送给FPGA,最后由LVDS输出图像。
图1 相机的结构Fig.1 The makeup part of camera
作为空间目标的监视设备,由于外太空的电磁环境复杂,可见光相机应选用可靠性高、稳定性好及实时性高的成像算法来实现对图像信息的处理。在探测器采集到原始数据后,由FPGA对数据做出自动曝光控制和去噪等预处理,接着由DSP对数据做出成像处理,算法主要包括颜色插值、白平衡、图像格式压缩等。本文重点介绍还原目标的三基色和平衡色调的方法。
相机选用cmv4000探测器,图像面阵大小为2048×2048,探测器采集的原始信号为10位有效数据。由FPGA完成自动曝光控制、去噪和数据有效位提取等预处理,再由DSP完成颜色插值、白平衡、jpeg压缩等算法处理,整个算法的流程图如图2所示。经FPGA处理后传送至DSP的是8位Bayer格式的灰度数据。随后,由DSP进行插值处理,将Bayer格式数据还原为真彩色RGB数据,最后用白平衡方法来调节因光线明暗不同而导致的目标图像的变化。
图2 整个算法的流程图Fig.2 The flow chart of algorithm
探测器采集的数据为Bayer格式的数据,该数据的特征为每2×2的像素矩阵由2个绿色分量、1个红色分量、1个蓝色分量的像素单元构成[8],其结构如图3所示。由于探测器表面覆盖颜色滤波阵列,可见光三原色分量经过滤镜后,探测器上的每个像素点仅得到一种颜色分量值。为了获得全彩色图像,首先需要对Bayer格式数据进行颜色插值恢复。目前,颜色插值算法较多,可分为双线性插值算法、邻域插值法、色比恒定法、基于梯度的方法及自适应插值法等多种方法[9-10]。本文先后对双线性插值算法、邻域插值法及基于梯度的插值方法进行了算法实现及测试,最后以插值效果和实时性为准则,选取有效的方法在可见光相机的硬件平台上对Bayer数据进行了处理。
图3 Bayer数据格式Fig.3 The datasheet on Bayer
上述提及的颜色插值方法均是利用邻域像素值来计算当前像素缺少的颜色分量。双线性插值算法是还原RGB三基色较为经典的方法[11-12],是所有RGB插值方法的基础。其实现方式为针对某个像素的某一个色彩通道,采用周边像素通道的平均值作为当前颜色的分量值。邻域插值方法采用相邻像素的颜色分量值来填补当前的颜色分量。从图4的数据格式来看,与蓝色、红色颜色分量相比,绿色分量占的比重较大,反映了更多的细节信息。梯度插值算法根据绿色分量的梯度信息进行色彩分量的插值处理。图3所示为一块6×6的Bayer数据结构单元。R、G、B分别代表当前像素分量颜色为红色、绿色和蓝色。对于某一像素而言,缺少的另外两种颜色分量需用插值算法估计像素值。
邻域插值算法的实现过程为:以R23位置处的像素为例,其B23、G23分量的插值公式如下
G23=G13或G22或G24或G33
B23=B12或B14或B32或B34
(1)
以G22位置处的像素为例,其R22、B22分量的插值公式如下
R22=R21或R23
B22=B12或B32
(2)
以B32位置处的像素为例,其G32、R32分量的插值公式如下
G32=G22或G31或G33或G42
R32=R21或R23或R41或R43
(3)
梯度插值算法更符合人的视觉系统对边界信息及色彩变化的敏感性。一般情况下,在Bayer转RGB的算法中,邻域插值算法因计算简单、运算量小且满足一般的彩色变化需求而在工程项目中被广泛应用。一些特定的目标(如栅格图像),由于边界信息较多,采用梯度法能得到满意的效果。梯度插值算法是沿着边界方向进行插值的,绿色分量占据了总像素的一半,细节信息较多。在插值时,应优先考虑对G分量的恢复。首先,计算梯度来检测边界的方向。设水平方向的梯度为ΔH,垂直方向的梯度为ΔV。以B34位置处的像素为例,用一阶微分来确定边界方向,梯度插值算法的实现为
ΔH=|G35-G33|
ΔV=|G24-G44|
(4)
(5)
以G22位置处的像素为例,其B22、R22分量插值的公式如下
(6)
插值后的图像常常会有偏色及明暗变化,可选用白平衡方法来调节。白平衡的算法较多,由于太空目标色彩较少,宜选用基于灰度世界法的白平衡算法[13-15]。白平衡的主旨是使整帧图像亮度适中,解决因插值及光线变化导致的图像偏色及明暗变化的问题。其方法步骤如下
(1)计算R、G、B 三种颜色分量的平均值,设为Ra、Ga、Ba;
(2)计算R、G、B 三个通道的增益系数,设为Kr、Kg、Kb;
(3)对R、G、B 三个颜色分量进行校正,R′、G′、B′为校正后的值;
R′=R·Kr,G′=G·Kg,B′=B·Kb
用C语言编写代码实现上述论述的方法,将程序下载到可见光相机上验证该方法的实际效果。为了证明颜色插值算法的有效性,用可见光相机对彩色板进行拍图,通过拍出的实际图像效果来 判断相应的插值方法的效果是否可行。图5所示为未经颜色插值算法处理的灰度图像。图6(a)、图6(b)、图6(c)所示为用双线性插值法、邻域插值法及梯度插值法所得的彩色图像。图6(d)、图6(e)、图6(f)为用灰度世界法对图6(a)、图6(b)、图6(c)进行的色彩校正。从图6可以看出邻域插值法、双线性插值法、梯度插值法均可有效地对Bayer数据进行插值处理,生成彩色图像。同时,对3种插值方式进行了理论研究分析。对于一般目标而言,目标的棱角等边角信息较多,邻域插值、双线性插值对于边角信息的颜色的恢复效果不理想,而梯度法对于边界信息颜色的插值处理更符合实际。最典型的目标是栅格图像,图8所示为使用梯度法插值恢复RGB数据,随后用灰度世界法对彩色图像数据进行了白平衡处理。
图5 彩色板的灰度图像Fig.5 The gray image of color ban
(a)邻域插值法原图
(b)双线性插值法原图
(c)梯度插值法原图
(d)邻域插值法校正图
(e)双线性插值法校正图
(f)梯度法插值校正图
经过验证可知,梯度插值法不但能还原目标真实的色彩信息,且对于边界信息的处理更符合工程需求。选用梯度法及灰度世界法应用于该监视相机的算法软件上,随后用该监视相机对外景和模拟太空环境下的目标进行拍图,拍出的结果如图7所示。
(a)外景图像
(b)模拟太空环境目标图图7 相机拍摄的图像Fig.7 Image taken by camera
图8所示为可见光相机对室内黑白栅格图像进行的测试。从输出图的视觉效果可以看出,栅格图像边界规则,真实地还原了黑白条形图。
图8 黑白栅格图像Fig.8 Black and white grid image
本文研究了基于Bayer格式的彩色图像数据恢复方法,通过双线性插值、邻域插值等多种方法进行了对比分析,选用基于梯度的插值方法对有棱角信息的原始数据进行色彩数据插值处理的效果较好。随后,用灰度世界法修正了偏色现象,还原了空间目标的色彩信息。试验图像表明,产品用该种结合方法对多组场景目标进行成像,图像清晰,像素分辨率高,拍摄的场景图像视觉效果好。结果表明该方法有效,可用于拍摄空间飞行器的交会对接过程。