程祖橋,鄧 輝,王 鋒,,梁 波,季凱帆,王傳軍,許 駿
(1.昆明理工大學(xué)云南省計算機技術(shù)應(yīng)用重點實驗室室,云南 昆明 650051;2.中國科學(xué)院云南天文臺,云南 昆明 650011)
天文圖像采集與處理是天文技術(shù)與方法研究中的一個重要組成部分。近年來,隨著CCD(電荷耦合元件)技術(shù)的發(fā)展,具備高速度、高分辨率、高可靠性的新一代CCD探測器不斷涌現(xiàn),在極大推動天文技術(shù)發(fā)展的同時,也對CCD采集中的總線技術(shù)與軟件技術(shù)提出了更高的要求。
總線是數(shù)據(jù)傳輸?shù)妮d體,其可用性直接影響著整個圖像采集的速度與可靠性。視頻圖像實時傳輸常用的總線主要有千兆以太網(wǎng)(GigaEthernet)、IEEE 1394(Firewire-火線)、Camera Link總線以及USB總線。4種總線定位特點明顯,優(yōu)勢各異。根據(jù)新一代天文高速、全頻段觀測的要求,在現(xiàn)階段對Camera link總線進行分析、對比,給出基于Camera link總線的高速CCD圖像采集方法,具有明顯的實用價值。
Camera Link總線是一個工業(yè)高速串口數(shù)據(jù)和連接標(biāo)準(zhǔn),它是由Basler、Cognex、Coreco、DALSA、Data Translation、Datacube、Matrox、National Instruments、PULNiX America等13家數(shù)碼相機供應(yīng)商和圖像采集公司在2000年10月聯(lián)合推出的[1],旨在為數(shù)碼相機和個人計算機間的高速、高精度數(shù)字傳輸提供一種標(biāo)準(zhǔn)。標(biāo)準(zhǔn)的基礎(chǔ)是美國National Semiconductor公司的驅(qū)動平板顯示器的Channel Link技術(shù)[2]。
根據(jù)應(yīng)用要求的不同,Camera Link標(biāo)準(zhǔn)提供了基本架構(gòu)(Base Configuration)、中階架構(gòu)(Medium Configuration)和完整架構(gòu)(Full Configuration)3種訊號接腳規(guī)范[2]。目的在于解決數(shù)據(jù)傳輸速率問題。目前在Base Configuration和Full Configuration接腳規(guī)范中,最高傳輸速率可達(dá)2.38 Gb/s和7.14 Gb/s[1]。根據(jù)CCD采集的速度和分辨率的要求,可以選擇不同的接腳規(guī)范,以滿足不同的要求。
千兆以太網(wǎng)(GigaEthernet)、IEEE 1394(Firewire-火線)、Camera Link總線以及USB總線中是目前最為常見的技術(shù),有不同的廠商分別在這4種技術(shù)上實現(xiàn)了高速CCD的信號采集與控制。表1列出了4種總線的對比。
表1 4種主流總線技術(shù)對比Table 1 The comparison of four mainstream bus technologies
表1可以看出,與另外3種總線技術(shù)相比,Camera link總線兼有高速、高分辨率、通用、可靠、標(biāo)準(zhǔn)、熱插拔等優(yōu)點,比起IEEE 1394總線,具有更強的通用性和靈活性。Camera Link總線具有占用CPU較少,傳輸速率高,I/O同步能力強的優(yōu)點。Camera Link接口可以方便地利用直接存儲器存儲(Direct Memory Access-DMA)技術(shù),大大提高了CPU使用效率,PCI-E總線接入確保了Camera Link的高性能處理效率。這幾年采用千兆以太網(wǎng)的CCD產(chǎn)品也較多,千兆以太網(wǎng)技術(shù)在Optimized模式下占用CPU也較少,但是比起Camera Link來,較低的傳輸速率制約了其在CCD圖像采集領(lǐng)域的廣泛應(yīng)用[3]。
但Camera Link也存在一些問題,主要表現(xiàn)在:存在支持設(shè)備少(每卡一個設(shè)備),使得購置成本相對偏高,傳輸距離較短。此外,Camera Link接口本身的機械尺寸較大(1.55英寸×0.51英寸),決定了采用該接口的CCD攝像機尺寸不能做的太小。
使用德國PCO公司(http://www.pco.de)的高性能CCD產(chǎn)品,CCD相機型號PCO.4000,內(nèi)存1 GB,全分辨率4008×2672。相機圖像采集工作流程如圖1。在CCD相機中,CCD由獨立制冷電路(具有測溫和反饋控制功能)制冷,CCD采集到的圖像模擬信號經(jīng)模數(shù)轉(zhuǎn)換器(ADC)(圖1,A/D)轉(zhuǎn)換成數(shù)字?jǐn)?shù)據(jù)存入相機內(nèi)存(camRAM),通過Camera Link接口轉(zhuǎn)入計算機內(nèi)存,再進行后續(xù)處理(如存入硬盤等)。在相機內(nèi)存camRAM中,存在兩種圖像存儲模式,即記錄模式(recorder mode)和FIFO緩沖模式(FIFO buffer mode),由相機控制總單元控制。在FIFO緩沖模式下,圖像數(shù)據(jù)從camRAM按順序?qū)崟r傳給所連接的計算機內(nèi)存。本文所采用的模式是記錄模式(recorder mode)下的實時觀測(live view)模式,記錄子模式(recorder submode)為環(huán)形緩存(ring buffer)。相機最多可以配置2個ADC,雙ADC配置能提供更高的A/D轉(zhuǎn)換效率。通過直接存儲器存取(DMA)技術(shù),與相機相連的計算機從Camera Link采集卡高速獲取圖像數(shù)據(jù)。
表2列出了PCO相機軟件開發(fā)包[4](SDK)中的主要功能函數(shù),其他品牌所提供的SDK也基本具備這些功能。
在高速CCD圖像采集實現(xiàn)過程中,充分考慮到相機的高速采集特性以及Camera Link總線所帶來的高速傳輸,采用DMA技術(shù)從相機內(nèi)存獲取圖像數(shù)據(jù),獲得與相機所提供的采集速度相匹配的圖像處理速度。為了避免在圖像采集過程中,由于等待圖像傳輸而導(dǎo)致無謂的CPU負(fù)載增大,整個設(shè)計采用了多線程技術(shù),在進入圖像采集狀態(tài)時,創(chuàng)建一個獨立的圖像采集線程,用來檢測各類狀態(tài)信號和保存圖像。圖像采集整體流程如圖2。
圖1 CCD圖像采集示意圖Fig.1 Schematic diagram of CCD image acquisition
表2 主要函數(shù)功能表Table 2 The table of main functions
圖2 圖像采集流程圖Fig.2 Flowchart of image acquisition
配置相機參數(shù)過程中,調(diào)用SDK中的PCO_SetPixelRate、PCO_SetBitAlignment、PCO_SetADCOperation、PCO_SetBining、PCO_SetRoi、PCO_SetDelayExposureTime函數(shù),完成圖像模擬信號從傳感器的讀出速率、原始圖像數(shù)據(jù)的Bit順序、模擬轉(zhuǎn)換器ADC的個數(shù)、面元、ROI以及延遲/曝光時間參數(shù)配置。調(diào)用PCO_AllocateBuffer成功申請緩存空間后,系統(tǒng)創(chuàng)建圖像采集線程,由圖像采集線程完成從相機內(nèi)存camRAM中讀出圖像數(shù)據(jù),通過Camera Link傳輸?shù)接嬎銠C內(nèi)存,然后進行相應(yīng)的后續(xù)處理。
圖像采集中,根據(jù)申請緩存的數(shù)量和緩存隊列使用情況,可以選擇單緩存采集或者多緩存采集設(shè)計。在圖3所示申請DMA緩存空間過程中,單緩存需要向計算機申請一塊緩存空間,雙緩存則需要申請兩塊緩存空間,理論上也可以構(gòu)建更多的緩存用來進行圖像采集,但根據(jù)在實際系統(tǒng)設(shè)計中的實驗數(shù)據(jù),多緩存情況下與雙緩存相比不會有更大的性能提高,因此本文著重討論單緩存與雙緩存模式下的圖像采集技術(shù)。下面以把所采集到的圖像數(shù)據(jù)存儲到硬盤為例,說明單緩存處理和雙緩存處理的實現(xiàn)細(xì)節(jié)。
圖3 單緩存模式流程圖Fig.3 Flowchart of the single-buffer mode
圖4 雙緩存模式流程圖Fig.4 Flowchart of the dual-buffer mode
在單緩存數(shù)據(jù)存儲線程中,調(diào)用PCO_AddBuffer把緩存空間加入到相機驅(qū)動隊列,調(diào)用WINAPI的WaitForSingleObject[5],等待從Camera Link接收圖像數(shù)據(jù)。系統(tǒng)捕獲到來自相機控制單元產(chǎn)生的接收圖像數(shù)據(jù)完畢消息,把內(nèi)存中的數(shù)據(jù)寫入到硬盤。寫入完畢,把緩存加入到相機驅(qū)動隊列,等待下一張圖像數(shù)據(jù)接收。
雙緩存數(shù)據(jù)存儲線程的不同之處在于,兩次調(diào)用PCO_AddBuffer把0號和1號緩存空間加入到相機驅(qū)動隊列,0號緩存先接收數(shù)據(jù)。調(diào)用WINAPI的WaitForMultipleObjects,捕獲到0號接收到一張完整圖像數(shù)據(jù)的消息,1號緩存開始接收數(shù)據(jù),同時把0號緩存中的數(shù)據(jù)寫入硬盤,寫入完畢,把0號緩存加入到相機驅(qū)動隊列等待接收下一張圖像數(shù)據(jù)。1號緩存接收到一張完整的圖像數(shù)據(jù),發(fā)送消息,0號緩存開始接收數(shù)據(jù),同時把1號緩存的數(shù)據(jù)寫入硬盤,寫入完畢,把1號緩存加入到相機驅(qū)動隊列等待接收下一張圖像數(shù)據(jù)。如此循環(huán)往復(fù)直到采集結(jié)束。
在多緩存數(shù)據(jù)處理過程中,首先觸發(fā)的一定是0號緩存接收數(shù)據(jù)完畢的消息。因為在增加緩存空間時,多個緩存空間以隊列形式加入到相機驅(qū)動上。先增加的緩存先接收圖像數(shù)據(jù),只有當(dāng)前面緩存完整接收一張圖像數(shù)據(jù)后,驅(qū)動隊列上排在后面的緩存才開始接受數(shù)據(jù)。
在單緩存實現(xiàn)機制中,只有前一張圖像數(shù)據(jù)被處理完成后,才開始后一張圖片數(shù)據(jù)的接收。很顯然,圖像數(shù)據(jù)處理過程中所消耗的時間越長,則圖像接收的等待時間越長,整體圖像采集處理速度就會越慢。
在雙緩存實現(xiàn)機制中,圖像接收和圖像處理同時進行,回避了接收和處理的相互等待,使得數(shù)據(jù)的接收過程與處理過程可以重疊交叉,從而提高了數(shù)據(jù)采集的整體速度和性能。
根據(jù)廠家資料描述,在實際應(yīng)用過程中,模數(shù)轉(zhuǎn)換器(ADC)的數(shù)量和圖像模擬信號讀出速率(PixelRate)這兩個參數(shù)的不同設(shè)置對圖像采集速度和質(zhì)量有很大的影響。其中ADC個數(shù)是影響圖像存儲速率的重要因素。由于圖像數(shù)據(jù)是模數(shù)轉(zhuǎn)換器(ADC)把圖像模擬信號轉(zhuǎn)換而成的,故ADC個數(shù)越多,圖像數(shù)據(jù)轉(zhuǎn)換的時間就越短。調(diào)PCO_SetADCOperation可以對ADC的個數(shù)進行配置,ADC的數(shù)目只能是1個或者2個。當(dāng)ADC數(shù)目為2時,必須對ROI值進行相應(yīng)的調(diào)整,要求水平坐標(biāo)上的像素必須對稱,這雖然限制了ROI的設(shè)置,但好處是模數(shù)轉(zhuǎn)換的時間會減少接近一半。
PixelRate是指圖象模擬信號從相機傳感器讀出的速率,Pixelrate值越大,則獲得圖像幀的速率就越大,但會導(dǎo)致圖像噪聲增大,圖像質(zhì)量差。調(diào)用PCO_SetPixelrate函數(shù)可以對圖像模擬信號讀出速率進行設(shè)置,不同的CCD相機讀出速率可選擇的范圍不同。
為進一步驗證在高速圖像采集中這些參數(shù)的具體影響,結(jié)合前面討論過的不同的緩沖區(qū)數(shù)目會帶來圖像采集處理整體速度上的不同,針對單緩存數(shù)據(jù)采集存儲和雙緩存數(shù)據(jù)采集存儲,在不同的ADC個數(shù)和PixelRate參數(shù)組合下進行速度測試。采集卡采用Matrox公司的CameraLink采集卡,使用了Camera Link標(biāo)準(zhǔn)中的基本架構(gòu)(Base Configuration)訊號接腳規(guī)范。工作站采用Intel酷睿i7920 CPU,內(nèi)存4 GB。采集分辨率為相機的全分辨率4008 pix×2672 pix。編程語言為Delphi 2010版本。實驗中考慮了兩組比對,分別是ADC數(shù)為1和2以及PixelRate都為32 MHz時的情況(為確保獲得最高采集存儲速度,PixelRate采用最大值),測試結(jié)果見表3。
表3 不同參數(shù)組合下單、雙緩存采集存儲速度對比Table 3 Comparison of acquisition speeds of single-and dual-buffer modes under various parameter sittings
表中的每組存儲速度結(jié)果是通過4次相同測試所得的平均值,會存在一定的誤差。實驗證明,ADC個數(shù)對高速采集至關(guān)重要,ADC個數(shù)都為1,Pixelrate都為32 MHz時,單、雙緩存采集存儲速度基本上是相等的。但ADC個數(shù)為2時,采集速度顯著上升,雙緩存技術(shù)下可以達(dá)到290幀。此外,無論是單緩存,還是雙緩存技術(shù),最高速度分別可達(dá)每分鐘270、290幀,這已經(jīng)接近了廠商指標(biāo)中在全分辨率情況下的最高采樣速率5幀/秒,充分表明本文實現(xiàn)的單、雙緩存技術(shù)是可行的。
從實驗結(jié)果來看,在同等情況下,雙緩存和單緩存采集的存儲速率相差并不大。這是由于實驗中只對圖像進行高速寫入陣列盤操作,沒有對圖像進行比較復(fù)雜的處理,詳見分析2.4節(jié)單雙緩存采集圖像采集,故雙緩存的速度只比單緩存高出10%左右。在系統(tǒng)開發(fā)時,如果在中間處理過程增加高低位轉(zhuǎn)換以滿足FITS格式存儲要求等處理時,雙緩存的速度可以保持在當(dāng)前的采集速率,而單緩存采集速度就會明顯下降,雙緩存或者多緩存的優(yōu)勢會更加明顯。
本文對基于Camera Link總線的CCD高速采集技術(shù)進行了系統(tǒng)的調(diào)研,分析對比了Camera Link總線技術(shù)及其優(yōu)缺點,在此基礎(chǔ)上,對基于Camera link接口的高速CCD采集技術(shù)進行了深入的研究,著重討論了基于單緩存與雙緩存的高速采集技術(shù)和相應(yīng)的技術(shù)實現(xiàn)。經(jīng)實際測試,文中所實現(xiàn)的技術(shù)穩(wěn)定、可靠,CPU負(fù)載低,采集速度基本達(dá)到了CCD相機廠商給出理論上的最高采集速率,取得了良好的實現(xiàn)效果。
[1]Camera Link Interface Standard Specification [M/OL].http://www.cekli.com/articles/pdf/camera-link-interface-standard-specification.
[2]Basler Vision Technologies.Camera Link Technology Brief[M/OL].http://www.baslerweb.com/beitraege/unterbeitrag_en_26198.html.
[3]National Instruments Corporation.Choosing the Right Camera Bus [EB/OL].http://zone.ni.com/devzone/cda/tut/p/id/5386.
[4]PCO AG.Pco.Camera Software Development Kit(SDK)for WindowsXP [CP/CD].http://www.cookecorp.com/software/pco4000/.
[5]John Ayres.The Tomes of DelphiTMWin32 Core API Windows 2000 Edition [M].United States of America:Wordware Publishing,Inc,2001.