基于GL847的扫描图像校正*
2011-08-13刘小东张朋昌曹伯燕
刘小东,张朋昌,曹伯燕
(西安电子科技大学 计算机学院,陕西 西安 710071)
在扫描仪成像的整个过程中,存在许多给扫描图像带来误差的因素,如光照的不均匀性、由CCD生产工艺所引起的各个像素单元感光响应的不一致性、信号的采样和模数转换及后续各种处理电路内部所存在的噪声等。扫描图像校正的目的在于最大程度地消除这些因素所带来的成像误差,提高并保证扫描图像的质量。台湾创惟 (Genesys Logic)公司GL84X系列扫描控制器基于USB2.0数据传输接口,内嵌CCD/CIS控制、AFE控制、步进电机控制、扫描过程控制、分辨率控制等图像扫描相关控制功能模块,可实现整个图像数据采集流水线的所有功能,并具有高速高精度的特点。为提高扫描图像质量并减轻软件负担,GL847内部融合了增益/偏移调整等校正模块,为高质量图像扫描提供了强有力的保证。尽管如此,G2847的采集数据中仍存在误差和扭曲。本文在对GL847图像数据采集信号管道误差的引入进行分析的基础上,详细讨论了GL847内部硬件所提供的扫描图像校正机制与方法,给出了一种有效而可行的校正参数获取算法。
1 超大幅面CCD图像数据采集系统
本文所设计的超大幅面CCD图像数据采集系统结构如图1所示。在扫描仪控制器的统一控制下,CCD对扫描稿件进行感光并将感光信号输出;模拟前端对CCD的输出信号进行采样和模数转换,并将转换结果传递给扫描仪控制器;电机驱动器和步进电机在零位传感器的配合下完成图像扫描过程中的定位与位置移动。
图1 数据采集子系统结构
经过A/D转换后的CCD信号在进入扫描仪控制器之后,进行一系列后续处理,包括分辨率控制、图像校正、数据打包等,最终将图像数据存储到SDRAM中。同时,扫描仪控制器所需要的各种参数也被存放在SDRAM中。
扫描仪控制器接收来自工控板的控制命令和参数,并将最终图像数据递交给工控板。本系统中,扫描仪控制器选用创惟公司的GL847芯片;CCD采用东芝的TCD2964BFG芯片,TCD2964BFG具有 4 800 dpi光学分辨率;模拟前端采用Wolfson公司的WM8196芯片;步进电机采用百格拉368,驱动器为D921;SDRAM为Hynix公司的HY57V281620,存储容量为 128 MB/s。
2 扫描图像校正
2.1 静态偏移与增益校正
CCD像素信号在累积、转移以及输出过程中不可避免地会引入噪声干扰,使其输出信号中始终存在一定的直流分量。因而在无光照的情况下,CCD的输出电平不为0,而存在一定的偏移误差。为了消除这种误差,有必要进行相应的偏移校正。A/D转换器件只有对处于其电平输入范围内的模拟信号才能进行有效转换,因此,CCD的输出信号幅值必须满足A/D转换器的电压输入范围,才能获得正确的像素信号转换值。
本文在模拟前端中,在相关双采样CDS(Correlated Double Sampling)模块之后,设计了一个 Offset DAC模块(即静态偏移电路),能够用以初步消除采样得到的CCD信号中存在的静态偏移;而在Offset DAC之后,设计了一个可编程的增益放大器(PGA),用以对经过了静态偏移处理的模拟信号进行适当的放大,以匹配A/D转换器的输入范围。
基于对CCD噪声产生的原因以及模拟前端(AFE)中信号处理流程的分析,通过以下步骤来获取AFE中应该设置的静态偏移值和静态增益值。
(1)初始化PGA
将模拟前端中三个通道的PGA增益均设置为1,从而得到CCD信号在经过CDS相关双采样之后的原始电平范围。如果这个范围小于A/D的输入范围,则需要通过大于1的增益将其放大;相反,如果这个范围超过了A/D的输入范围,则就必须通过一个小于1的增益系数来缩小其范围。
在WM8196芯片中,为了使某个通道PGA的增益为1,必须向其相应的寄存器中写入值0x4B,记为PGA_CODE=0x4B;相应的增益值则记为PRE_GAIN,则[1]:
PRE_GAIN=208/(283-PGA_CODE)
(2)初始化DAC
为了使AFE电路内部的Offset DAC不会落在A/D转换器的输入范围之外,需要对AFE中的Offset DAC设置合适的值。先给DAC赋一个预先设定值,记为PRE_DAC=0x00,使得静态偏移值达到最大。
(3)获得平均黑电平信号
扫描数行黑色区域,并且计算出其平均值,记为AVE_BLACK。
(4)获得平均白电平信号
扫描一块目标白区域,计算出平均值。如果所得到的像素值存在严重不均匀问题,则其中必存在有一个最大值。取最大值附近某一邻域中的像素值进行平均操作,结果记为AVE_WHITE。
(5)计算需要的PGA增益值
通常,ADC的输入信号范围需略小于ADC的全幅输入范围。将期望的目标范围记为TARGET_WHITE和TARGET_BLACK,则需要的放大系数为:
从而,需要向AFE中PGA所对应的寄存器写入的值为:
PGA_CODE=int(283-208/GAIN)。 (其 中 ,函 数 int()表示对括号中的计算结果取整)。然后,将PGA_CODE写入到AFE的寄存器中,所获得的实际增益为:ACTUAL_GAIN=208/(283-PGA_GAIN)。
(6)黑电平调整
如果将第(5)步得到的实际增益值写入到PGA的寄存器中,在实际采样时,黑电平(即在无感光状态下,由CCD暗电流所引起的电平)信号也得到相应倍率的放大,这不是所希望的。因此,必须对Offset DAC进行重新调整。
采用与第(3)步相同的方法,重新计算平均黑电平值,记为AVE_BLACK。令ERROR=TARGET_BLACKAVE_BLACK(从 ADC输出),假设其所对应的 ADC的输入端电压差为△V3(△V3是由PGA放大ACTUAL_GAIN倍而得来),则它对应Offset DAC的一个偏移值ADJ_DAC;另一方面,WM8196芯片中的ADC的电压输入范围为 3V(记为 Vrange)。 因为该 ADC是 16 bit,故其输出码个数为ADC_CODES=65 536。则有:
△V3对应Offset DAC的输出端电压差△V2,其满足的关系为:
△V2=△V3/ACTUAL-GAIN
WM8196芯片中的Offset DAC具有一个±260 mV的校正范围,因此分辨率为8 bit的Offset DAC的每一个DAC输出码对应着一个0.52 V/256的电压变化。则△V2所对应的Offset DAC的正确调整值可由下式得到:
对式(1)进行整理并简化,得到:
又因为CCD的输出为下降沿,所以AFE中的控制位 INVOP=1,故 DAC的值为:
DAC_CODE=PRE_DAC-ADJ_DAC
至此,AFE端的静态偏移和增益校正完成。
2.2 Shading校正算法
扫描图像校正最终要达到的理想目标是:当扫描一幅纯黑色的图像时,得到的每一个像素的值均为0;而当扫描一幅纯白色图像时,得到的每一个像素的值都是目标值[2](如252)。在静态校正之后,需要进一步针对每个像素进行校正,以消除像素间的非一致性,提高图像质量。
在实际应用中,并不希望扫描纯黑色图像时得到的各个像素值为0,而应该是一个大于0的值,记为 Pixel_offset;扫描纯白色图像时某个像素的扫描值为Pixel_in。这样,经过偏移校正后该像素的值为Pixel_out=Pixel_in-Pixel_offset。如果目标值为Pixel_target,则需要一个放大倍数coefficient,即:
GL847的内部电路实现了该像素级的校正处理过程(称为Shading校正算法)。软件需要完成的是获得每个CCD像素所对应的Pixel_offset和 coefficient。为此,设计了以下像素级校正参数的获取过程:
(1)确定每个CCD像素所对应的偏差(offset)
关闭照明,将曝光时间设为0,扫描数行黑色区域,求出每个像素的平均值,该值即为对应CCD感光单元的偏差值。
(2)扫描白色区域
扫描参考白色区域,求出每个像素的平均值。
(3)计算每个像素对应的增益系数(coefficient)
在GL847中,提供了两个具有不同精度的像素级增益计算方法,可以通过设置寄存器0x06的控制位GAIN4来进行选择。
当GAIN4为0时,某个像素对应的增益系数为[3]:
当 GAIN4为 1时,增益系数为[4]:
其中,Wn表示像素的白平均值,Dn表示像素的黑平均值,H表示2 000、4 000均为 16进制数。
3 试验结果与分析
对未经扫描仪校正的分别扫描参考白色稿件和参考黑色稿件,得到未校正下CCD感光特性曲线如图2所示。图2(a)中,红色通道像素亮度最大值为28 547,平均值为21 466;绿色通道像素亮度最大值为39 023,平均值为29 925;蓝色通道像素亮度最大值为40 665,平均值为31 267。在图2(b)中,红色通道的偏移值为 1 384;绿色通道偏移值为 1 295;蓝色通道偏移值为1 089。
可以看出,未经校正的扫描图像三个通道的颜色亮度值动态范围均较差,且通道间存在较大差异,从而无法有效反映扫描原稿图像信息。
给定目标CCD亮度范围和偏移,利用本算法求出AFE中各个通道所对应的静态增益和静态偏移,从而得到如图3所示的CCD感光特性曲线。在图3(a)中,红色通道像素亮度最大值为63 930,平均值为47 298;绿色通道最大值为64 107,平均值为48 758;蓝色通道最大值为64 038,平均值为49 083。在图3(b)中,红色通道像素平均偏移值为 1 015,绿色通道为 969,蓝色通道为 9 22。从而,达到了静态校正预期目标。
图3中的感光曲线对应着CCD感光单元像素级校正增益参数和偏移参数计算所需要的数据,利用本Shading校正算法完成扫描系统像素级校正,消除了CCD感光单元间的非均匀性。CCD感光单元输出与对应像素级增益和偏移校正参数如图4所示。
利用本文介绍的算法对扫描仪进行校正前后对测试稿件的扫描结果如图5所示。
图4 CCD感光单元输出与对应校正参数
本文针对GL84X系列扫描仪控制器的算法,可通过获取CCD感光单元输出特性,有效获得图像数据采集系统的误差特征,将整体校正与像素级校正相结合,对扫描误差进行补偿和调整,大幅提高了扫描图像的质量。
图5 扫描图像校正算法实验结果
[1]Wolfson Microelectronics.WM8196(8+8)bit Output16 bit CIS/CCD AFE/digitiser.July 2008.
[2]李龙海.大幅面CIS扫描仪底层驱动软件的设计和实现[D].西安:西安电子科技大学,2002.
[3]Genesys Logic Inc.GL846 high speed USB2.0 2-in-1 scanner controller with fast ADF 1.05,January 2008.
[4]Genesys Logic Inc.GL848 high speed USB2.0 2-in-1 scanner controller with fast ADF&bus power,December 2007.