摘要红外成像系统获取的灰度图像动态范围大、对比度低难以直接被人眼有效感知。伪彩色处理将单通道灰度信息映射为彩色空间显著增强目标辨识度和场景理解能力。本报告系统调研了灰度-彩色映射典型红外伪彩算法。在此基础上探讨了基于FPGA的实时伪彩处理实现途径研究表明“自适应直方图均衡颜色查找表映射”的结构在资源消耗、实时性和增强效果之间取得了最佳平衡。引言红外焦平面阵列输出的是与场景辐射强度成正比的灰度图像通常为14 bit甚至16 bit。人眼对灰度的分辨能力仅有几十级而对色彩的分辨力可达上千级。伪彩色Pseudo-color编码通过建立灰度-色彩映射函数将单通道红外数据转换为三维RGB或YCbCr彩色图像。FPGA凭借其大规模并行与流水线处理能力成为伪彩算法硬件加速的理想平台。本文将从算法和硬件实现两个维度展开调研。伪彩色介绍彩色图像一般由三维向量表示并且最常用的是使用8位表示每个成分的光强范围从0无光到255最强光形成一个24位的色彩图像。伪彩色图像处理伪彩色图像处理指按照特定规则对不明显或者不可见的图像重建为彩色效果的图像。伪彩色图像处理应用在两个方面一个是把多光谱图像的不可见成分映射到可见光谱区域另一个就是把灰度图像映射为彩色图像。多波段融合伪彩的方法是当系统同时获取中波、长波红外或红外与微光图像时可将不同波段的灰度图像映射到不同的色彩通道。例如中波红外→R长波红外→G微光→B直接产生物理意义的彩色融合图像。把灰度图像映射为彩色图像处理的方法一般有三种灰度分层密度分层、灰度级彩色变换和频域变换。灰度分层法是最简单的伪色彩处理方法将不同的灰度级赋予不同的颜色实现图像的伪色彩处理。几何解释就是根据截面分配两种颜色。令[0L-1]表示灰度级l0表示黑色lL-1表示白色依据灰度值l1,l2,l3…lp构造P个平面将灰度值分为P1个区间为每个区间赋一种颜色。图 2缺点是色彩生硬且灰度级分层较多时算法非常繁琐。灰度级色彩变换最常见的伪色彩处理方法建立图像的灰度级与颜色的一种映射关系将灰度图变为具有多种颜色渐变的连续色彩图。伪彩色编码就是将一组数据从灰度级到RGB三通道颜色的函数映射。色标色阶设计就是在RGB颜色立方体中确定一条颜色路径再从该路径中选取指定数目的色彩组成彩色序列。典型的色标是彩虹码灰度由低到高依次对应蓝、青、绿、黄、红红色表示低温蓝色表示高温。相当于RGB三个分量的编码由5段线性函数表示o 黑-蓝段( R0, G0 ) B 0→1o 蓝-青段( R0, G1 ) G 0→1o 青-绿段( R0, G1 ) B 1→0o 绿-黄段( G1, B0 ) R 1→0o 黄-红段( R1, B0 ) G 1→0彩虹码存在热目标醒目但人眼感知亮度不均匀、蓝色区域细节缺失等问题。热金属码模拟加热金属的颜色变化灰度由低到高依次黑→红→黄→白。分段为低温物体黑-红段、中温物体红-黄段、高温物体黄-白段。热金属码温暖区域视觉突出适合人物体温检测。以上固定函数映射的编码方式优势在于固定映射消耗零计算量缺陷是对场景自适应性差当红外灰度分布集中时伪彩层次不丰富。为解决固定映射适应性差的问题在灰度-彩色变换前引入自动增益控制或直方图调整。 基于直方图均衡化的伪彩编码先对输入红外图像的灰度直方图进行均衡化将均衡化后的灰度 送入固定的颜色查找表。因为经过均衡各个彩色区间得到更均匀的像素占用伪彩图像的色彩层次与信息量显著提升。进一步可采用平台直方图均衡化Plateau HE通过设定平台阈值抑制背景过度增强克服经典HE噪声过增强的缺点。 自适应线性拉伸伪彩映射实时统计图像的最大/最小灰度或均值和标准差按一定比例裁剪后线性映射到8 bit再进行颜色映射。此方式保持帧间色彩的相对一致性适合显示随时间变化的温度分布。 基于空间频率的伪彩增强利用边缘信息或局部方差调制色彩饱和度、色调。例如将红外图像作为亮度通道 ( L )梯度强度调制饱和度 ( S )色调 ( H ) 按灰度确定再转换回RGB。该方法可突出边缘但计算复杂度较高多用于后处理软件。基于FPGA的实现途径FPGA实现需满足实时像素时钟下的连续数据流处理延迟通常控制在一帧以内。输入为16位灰度数据输出为24位RGB视频流。LUT模块是伪彩转换的运算核心。根据灰度位宽和资源权衡有两种实现方式3.1全索引LUT输入16位灰度直接索引RGB值地址深度为21665536数据位宽为24bit(R/G/B各8bit)。将 65536×24 bit192KB的映射表预先存入Block RAM。以Xilinx 7系列为例每个36Kb BRAM只能存65536×1bit需消耗24个36Kb BRAM总资源864Kb占芯片BRAM资源开销较大。采用简单只读ROM或双端口RAM一端口用于像素查询另一端口通过AXI总线动态输出。一个时钟周期输出结果零计算延迟任意映射曲线均可支持。3.2直方图均衡 RGB LUT先用直方图均衡将16位灰度映射为8位再用8位地址查彩色LUT。65536深度、8位宽需要 8个36Kb BRAM将16bit灰度图映射为8bit灰度图。再将8位灰度图索引RGB值256深度、24位宽可以用1个36Kb BRAM配置或者用分布式RAMLUTRAM实现几乎不占额外BRAM。同样可以采用简单只读ROM或双端口RAM一端口用于像素查询另一端口通过AXI总线动态输出。该算法实现的核心模块包括灰度值统计模块、颜色查找表模块。