劉小東,張朋昌,曹伯燕
(西安電子科技大學 計算機學院,陜西 西安 710071)
在掃描儀成像的整個過程中,存在許多給掃描圖像帶來誤差的因素,如光照的不均勻性、由CCD生產(chǎn)工藝所引起的各個像素單元感光響應(yīng)的不一致性、信號的采樣和模數(shù)轉(zhuǎn)換及后續(xù)各種處理電路內(nèi)部所存在的噪聲等。掃描圖像校正的目的在于最大程度地消除這些因素所帶來的成像誤差,提高并保證掃描圖像的質(zhì)量。臺灣創(chuàng)惟 (Genesys Logic)公司GL84X系列掃描控制器基于USB2.0數(shù)據(jù)傳輸接口,內(nèi)嵌CCD/CIS控制、AFE控制、步進電機控制、掃描過程控制、分辨率控制等圖像掃描相關(guān)控制功能模塊,可實現(xiàn)整個圖像數(shù)據(jù)采集流水線的所有功能,并具有高速高精度的特點。為提高掃描圖像質(zhì)量并減輕軟件負擔,GL847內(nèi)部融合了增益/偏移調(diào)整等校正模塊,為高質(zhì)量圖像掃描提供了強有力的保證。盡管如此,G2847的采集數(shù)據(jù)中仍存在誤差和扭曲。本文在對GL847圖像數(shù)據(jù)采集信號管道誤差的引入進行分析的基礎(chǔ)上,詳細討論了GL847內(nèi)部硬件所提供的掃描圖像校正機制與方法,給出了一種有效而可行的校正參數(shù)獲取算法。
本文所設(shè)計的超大幅面CCD圖像數(shù)據(jù)采集系統(tǒng)結(jié)構(gòu)如圖1所示。在掃描儀控制器的統(tǒng)一控制下,CCD對掃描稿件進行感光并將感光信號輸出;模擬前端對CCD的輸出信號進行采樣和模數(shù)轉(zhuǎn)換,并將轉(zhuǎn)換結(jié)果傳遞給掃描儀控制器;電機驅(qū)動器和步進電機在零位傳感器的配合下完成圖像掃描過程中的定位與位置移動。
圖1 數(shù)據(jù)采集子系統(tǒng)結(jié)構(gòu)
經(jīng)過A/D轉(zhuǎn)換后的CCD信號在進入掃描儀控制器之后,進行一系列后續(xù)處理,包括分辨率控制、圖像校正、數(shù)據(jù)打包等,最終將圖像數(shù)據(jù)存儲到SDRAM中。同時,掃描儀控制器所需要的各種參數(shù)也被存放在SDRAM中。
掃描儀控制器接收來自工控板的控制命令和參數(shù),并將最終圖像數(shù)據(jù)遞交給工控板。本系統(tǒng)中,掃描儀控制器選用創(chuàng)惟公司的GL847芯片;CCD采用東芝的TCD2964BFG芯片,TCD2964BFG具有 4 800 dpi光學分辨率;模擬前端采用Wolfson公司的WM8196芯片;步進電機采用百格拉368,驅(qū)動器為D921;SDRAM為Hynix公司的HY57V281620,存儲容量為 128 MB/s。
CCD像素信號在累積、轉(zhuǎn)移以及輸出過程中不可避免地會引入噪聲干擾,使其輸出信號中始終存在一定的直流分量。因而在無光照的情況下,CCD的輸出電平不為0,而存在一定的偏移誤差。為了消除這種誤差,有必要進行相應(yīng)的偏移校正。A/D轉(zhuǎn)換器件只有對處于其電平輸入范圍內(nèi)的模擬信號才能進行有效轉(zhuǎn)換,因此,CCD的輸出信號幅值必須滿足A/D轉(zhuǎn)換器的電壓輸入范圍,才能獲得正確的像素信號轉(zhuǎn)換值。
本文在模擬前端中,在相關(guān)雙采樣CDS(Correlated Double Sampling)模塊之后,設(shè)計了一個 Offset DAC模塊(即靜態(tài)偏移電路),能夠用以初步消除采樣得到的CCD信號中存在的靜態(tài)偏移;而在Offset DAC之后,設(shè)計了一個可編程的增益放大器(PGA),用以對經(jīng)過了靜態(tài)偏移處理的模擬信號進行適當?shù)姆糯?,以匹配A/D轉(zhuǎn)換器的輸入范圍。
基于對CCD噪聲產(chǎn)生的原因以及模擬前端(AFE)中信號處理流程的分析,通過以下步驟來獲取AFE中應(yīng)該設(shè)置的靜態(tài)偏移值和靜態(tài)增益值。
(1)初始化PGA
將模擬前端中三個通道的PGA增益均設(shè)置為1,從而得到CCD信號在經(jīng)過CDS相關(guān)雙采樣之后的原始電平范圍。如果這個范圍小于A/D的輸入范圍,則需要通過大于1的增益將其放大;相反,如果這個范圍超過了A/D的輸入范圍,則就必須通過一個小于1的增益系數(shù)來縮小其范圍。
在WM8196芯片中,為了使某個通道PGA的增益為1,必須向其相應(yīng)的寄存器中寫入值0x4B,記為PGA_CODE=0x4B;相應(yīng)的增益值則記為PRE_GAIN,則[1]:
PRE_GAIN=208/(283-PGA_CODE)
(2)初始化DAC
為了使AFE電路內(nèi)部的Offset DAC不會落在A/D轉(zhuǎn)換器的輸入范圍之外,需要對AFE中的Offset DAC設(shè)置合適的值。先給DAC賦一個預(yù)先設(shè)定值,記為PRE_DAC=0x00,使得靜態(tài)偏移值達到最大。
(3)獲得平均黑電平信號
掃描數(shù)行黑色區(qū)域,并且計算出其平均值,記為AVE_BLACK。
(4)獲得平均白電平信號
掃描一塊目標白區(qū)域,計算出平均值。如果所得到的像素值存在嚴重不均勻問題,則其中必存在有一個最大值。取最大值附近某一鄰域中的像素值進行平均操作,結(jié)果記為AVE_WHITE。
(5)計算需要的PGA增益值
通常,ADC的輸入信號范圍需略小于ADC的全幅輸入范圍。將期望的目標范圍記為TARGET_WHITE和TARGET_BLACK,則需要的放大系數(shù)為:
從而,需要向AFE中PGA所對應(yīng)的寄存器寫入的值為:
PGA_CODE=int(283-208/GAIN)。 (其 中 ,函 數(shù) int()表示對括號中的計算結(jié)果取整)。然后,將PGA_CODE寫入到AFE的寄存器中,所獲得的實際增益為:ACTUAL_GAIN=208/(283-PGA_GAIN)。
(6)黑電平調(diào)整
如果將第(5)步得到的實際增益值寫入到PGA的寄存器中,在實際采樣時,黑電平(即在無感光狀態(tài)下,由CCD暗電流所引起的電平)信號也得到相應(yīng)倍率的放大,這不是所希望的。因此,必須對Offset DAC進行重新調(diào)整。
采用與第(3)步相同的方法,重新計算平均黑電平值,記為AVE_BLACK。令ERROR=TARGET_BLACKAVE_BLACK(從 ADC輸出),假設(shè)其所對應(yīng)的 ADC的輸入端電壓差為△V3(△V3是由PGA放大ACTUAL_GAIN倍而得來),則它對應(yīng)Offset DAC的一個偏移值A(chǔ)DJ_DAC;另一方面,WM8196芯片中的ADC的電壓輸入范圍為 3V(記為 Vrange)。 因為該 ADC是 16 bit,故其輸出碼個數(shù)為ADC_CODES=65 536。則有:
△V3對應(yīng)Offset DAC的輸出端電壓差△V2,其滿足的關(guān)系為:
△V2=△V3/ACTUAL-GAIN
WM8196芯片中的Offset DAC具有一個±260 mV的校正范圍,因此分辨率為8 bit的Offset DAC的每一個DAC輸出碼對應(yīng)著一個0.52 V/256的電壓變化。則△V2所對應(yīng)的Offset DAC的正確調(diào)整值可由下式得到:
對式(1)進行整理并簡化,得到:
又因為CCD的輸出為下降沿,所以AFE中的控制位 INVOP=1,故 DAC的值為:
DAC_CODE=PRE_DAC-ADJ_DAC
至此,AFE端的靜態(tài)偏移和增益校正完成。
掃描圖像校正最終要達到的理想目標是:當掃描一幅純黑色的圖像時,得到的每一個像素的值均為0;而當掃描一幅純白色圖像時,得到的每一個像素的值都是目標值[2](如252)。在靜態(tài)校正之后,需要進一步針對每個像素進行校正,以消除像素間的非一致性,提高圖像質(zhì)量。
在實際應(yīng)用中,并不希望掃描純黑色圖像時得到的各個像素值為0,而應(yīng)該是一個大于0的值,記為 Pixel_offset;掃描純白色圖像時某個像素的掃描值為Pixel_in。這樣,經(jīng)過偏移校正后該像素的值為Pixel_out=Pixel_in-Pixel_offset。如果目標值為Pixel_target,則需要一個放大倍數(shù)coefficient,即:
GL847的內(nèi)部電路實現(xiàn)了該像素級的校正處理過程(稱為Shading校正算法)。軟件需要完成的是獲得每個CCD像素所對應(yīng)的Pixel_offset和 coefficient。為此,設(shè)計了以下像素級校正參數(shù)的獲取過程:
(1)確定每個CCD像素所對應(yīng)的偏差(offset)
關(guān)閉照明,將曝光時間設(shè)為0,掃描數(shù)行黑色區(qū)域,求出每個像素的平均值,該值即為對應(yīng)CCD感光單元的偏差值。
(2)掃描白色區(qū)域
掃描參考白色區(qū)域,求出每個像素的平均值。
(3)計算每個像素對應(yīng)的增益系數(shù)(coefficient)
在GL847中,提供了兩個具有不同精度的像素級增益計算方法,可以通過設(shè)置寄存器0x06的控制位GAIN4來進行選擇。
當GAIN4為0時,某個像素對應(yīng)的增益系數(shù)為[3]:
當 GAIN4為 1時,增益系數(shù)為[4]:
其中,Wn表示像素的白平均值,Dn表示像素的黑平均值,H表示2 000、4 000均為 16進制數(shù)。
對未經(jīng)掃描儀校正的分別掃描參考白色稿件和參考黑色稿件,得到未校正下CCD感光特性曲線如圖2所示。圖2(a)中,紅色通道像素亮度最大值為28 547,平均值為21 466;綠色通道像素亮度最大值為39 023,平均值為29 925;藍色通道像素亮度最大值為40 665,平均值為31 267。在圖2(b)中,紅色通道的偏移值為 1 384;綠色通道偏移值為 1 295;藍色通道偏移值為1 089。
可以看出,未經(jīng)校正的掃描圖像三個通道的顏色亮度值動態(tài)范圍均較差,且通道間存在較大差異,從而無法有效反映掃描原稿圖像信息。
給定目標CCD亮度范圍和偏移,利用本算法求出AFE中各個通道所對應(yīng)的靜態(tài)增益和靜態(tài)偏移,從而得到如圖3所示的CCD感光特性曲線。在圖3(a)中,紅色通道像素亮度最大值為63 930,平均值為47 298;綠色通道最大值為64 107,平均值為48 758;藍色通道最大值為64 038,平均值為49 083。在圖3(b)中,紅色通道像素平均偏移值為 1 015,綠色通道為 969,藍色通道為 9 22。從而,達到了靜態(tài)校正預(yù)期目標。
圖3中的感光曲線對應(yīng)著CCD感光單元像素級校正增益參數(shù)和偏移參數(shù)計算所需要的數(shù)據(jù),利用本Shading校正算法完成掃描系統(tǒng)像素級校正,消除了CCD感光單元間的非均勻性。CCD感光單元輸出與對應(yīng)像素級增益和偏移校正參數(shù)如圖4所示。
利用本文介紹的算法對掃描儀進行校正前后對測試稿件的掃描結(jié)果如圖5所示。
圖4 CCD感光單元輸出與對應(yīng)校正參數(shù)
本文針對GL84X系列掃描儀控制器的算法,可通過獲取CCD感光單元輸出特性,有效獲得圖像數(shù)據(jù)采集系統(tǒng)的誤差特征,將整體校正與像素級校正相結(jié)合,對掃描誤差進行補償和調(diào)整,大幅提高了掃描圖像的質(zhì)量。
圖5 掃描圖像校正算法實驗結(jié)果
[1]Wolfson Microelectronics.WM8196(8+8)bit Output16 bit CIS/CCD AFE/digitiser.July 2008.
[2]李龍海.大幅面CIS掃描儀底層驅(qū)動軟件的設(shè)計和實現(xiàn)[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.