, ,,
(中國酒泉衛(wèi)星發(fā)射中心,甘肅 酒泉 732750)
高速圖像數(shù)據(jù)采集是光學(xué)測量技術(shù)與方法研究中的一個(gè)重要組成部分。近年來,隨著 CMOS、CCD等傳感器技術(shù)的飛速發(fā)展,具備高幀頻、高分辨率、高穩(wěn)定性的新一代探測器不斷涌現(xiàn),在極大地推動了光學(xué)測量技術(shù)飛速發(fā)展的同時(shí),也對高速圖像采集技術(shù)提出了更高的要求。
高速圖像數(shù)據(jù)的采集,一般以總線技術(shù)為載體,其可用性直接影響著整個(gè)圖像采集系統(tǒng)的速度與可靠性。圖像實(shí)時(shí)傳輸目前常用的總線主要有GigE Vision、IEEE 1394、 USB總線以及Camera Link總線。針對光學(xué)測量設(shè)備高速、實(shí)時(shí)采集存儲的需求,對現(xiàn)階段常用的總線技術(shù)進(jìn)行對比分析發(fā)現(xiàn),Camera Link總線兼有高速傳輸、抗干擾性強(qiáng)、低噪聲、通用性強(qiáng)、可靠性高等優(yōu)點(diǎn)。本文對基于Camera Link的高速圖像采集技術(shù)開展研究,主要研究內(nèi)容包括幀頻驅(qū)動采集與實(shí)時(shí)檢測采集融合的控制方法、改進(jìn)型雙緩存數(shù)據(jù)采集方法。
為滿足高速圖像的高精實(shí)時(shí)數(shù)據(jù)處理要求,基于Camera Link采集的高速圖像應(yīng)具備:
1)有效性,采集的每幀圖像數(shù)據(jù)均完好無損壞;
2)有序性,圖像采集順序與相機(jī)實(shí)際拍攝順序一致;
3)連續(xù)性,采集的圖像數(shù)據(jù)流無丟幀。
因此,使用兩種算法對采集過程進(jìn)行控制,一是幀頻驅(qū)動采集控制,二是實(shí)時(shí)檢測采集控制。
幀頻驅(qū)動采集控制,其原理是幀頻信號與圖像數(shù)據(jù)是一一對應(yīng)的,幀頻信號與附加信息數(shù)據(jù)是成整數(shù)倍對應(yīng)的。因此,以幀頻信號為基準(zhǔn)時(shí)序,驅(qū)動圖像數(shù)據(jù)和附加信息數(shù)據(jù)的采集,能夠保證采集過程連續(xù)穩(wěn)定。幀頻驅(qū)動采集控制算法流程如圖1所示。
圖1 幀頻驅(qū)動采集控制算法流程圖
通過等待幀頻信號,驅(qū)動后續(xù)工作過程,在幀頻信號到來時(shí)同時(shí)進(jìn)行圖像數(shù)據(jù)和附加信息數(shù)據(jù)的采集,分別放入對應(yīng)的緩存中。在外部觸發(fā)結(jié)束采集信號后,停止幀頻驅(qū)動,結(jié)束整個(gè)采集過程。
該算法采集的圖像數(shù)據(jù)存在丟幀問題,具體表現(xiàn)為采集啟動時(shí)圖像丟幀數(shù)量多,后續(xù)丟幀數(shù)量穩(wěn)定為1幀,原因是相機(jī)在上電初始化后存在一定的數(shù)據(jù)堆積,而以幀頻驅(qū)動采集時(shí)每次僅采集1幀圖像,造成其他數(shù)據(jù)的丟失,也就產(chǎn)生了采集啟動時(shí)丟幀數(shù)量多的問題。后續(xù)采集狀態(tài)受初始化和圖像傳輸不穩(wěn)定性的影響,無法保證在每一個(gè)幀頻信號上升沿觸發(fā)時(shí)都能獲取圖像,兩個(gè)幀頻信號上升沿之間有時(shí)沒有圖像,有時(shí)存在2幅圖像卻只采集到1幅圖像,從而導(dǎo)致圖像采集存在持續(xù)丟幀的問題。
實(shí)時(shí)檢測采集控制,以圖像數(shù)據(jù)來驅(qū)動采集過程,當(dāng)檢測緩存中有最新圖像時(shí)即進(jìn)行圖像數(shù)據(jù)和附加信息數(shù)據(jù)的采集。該算法可以保證按順序?qū)D像全部獲取,從而避免了圖像采集過程中丟幀。實(shí)時(shí)檢測采集控制算法過程如圖2所示。
圖2 實(shí)時(shí)檢測采集控制算法流程圖
當(dāng)檢測到緩存中有圖像數(shù)據(jù)時(shí),即驅(qū)動圖像數(shù)據(jù)和附加信息數(shù)據(jù)的采集。因此,在緩存足夠大不產(chǎn)生溢出的情況下,該算法能夠保證采集到所有圖像數(shù)據(jù),實(shí)現(xiàn)不丟幀采集。
實(shí)時(shí)檢測采集控制能夠有效保證圖像數(shù)據(jù)采集的不丟幀,但是僅以圖像數(shù)據(jù)驅(qū)動采集,忽略了附加信息數(shù)據(jù)與圖像數(shù)據(jù)之間的匹配性,導(dǎo)致時(shí)間信息不連續(xù),且同步精度誤差較大。
當(dāng)相機(jī)采用外觸發(fā)模式工作時(shí),其拍攝時(shí)刻完全由時(shí)統(tǒng)終端外送頻率決定,確保了相機(jī)時(shí)序準(zhǔn)確,因此相機(jī)的原始圖像數(shù)據(jù)不存在丟幀問題。造成兩種算法單獨(dú)使用存在缺陷的原因有兩點(diǎn):一是上電初始化時(shí)圖像的傳輸穩(wěn)定性最差,堆積了圖像數(shù)據(jù)緩存,如果不對數(shù)據(jù)緩存進(jìn)行初始清空,會造成后續(xù)圖像與附加信息匹配的時(shí)間同步精度誤差增大;二是兩個(gè)幀頻信號之間存在不均勻性,當(dāng)兩個(gè)圖像數(shù)據(jù)幀集中在一個(gè)幀頻信號內(nèi)傳輸時(shí),則會造成丟幀。時(shí)序特性分析如圖3所示。
圖3 圖像數(shù)據(jù)采集時(shí)序圖
融合采集控制算法能夠同時(shí)解決兩種算法單獨(dú)使用存在的缺陷,其流程如圖4所示。
圖4 融合采集控制算法流程圖
由幀頻信號事件驅(qū)動圖像采集,保證了采集時(shí)刻穩(wěn)定,利于圖像與附加信息匹配且時(shí)間同步精度較高;在每個(gè)幀頻周期內(nèi)使用實(shí)時(shí)檢測采集的方式,將該周期內(nèi)所有圖像數(shù)據(jù)順序采集,保證了圖像采集不丟幀。此外,在圖像采集的初始階段,進(jìn)行N個(gè)幀頻周期的數(shù)據(jù)消抖,消除緩存的初始不穩(wěn)定數(shù)據(jù)流使其不會擴(kuò)散,根據(jù)實(shí)際使用情況,N取10便可達(dá)到良好效果。附加信息與高速圖像采集后,分別放入各自的緩沖區(qū),再建立獨(dú)立的存儲線程從緩沖區(qū)中讀取數(shù)據(jù)并組合存儲。采用3個(gè)獨(dú)立線程保證了采集和存儲工作的并行連續(xù)執(zhí)行,而雙緩沖的機(jī)制使得各線程之間的速率冗余匹配。該算法能夠有效控制高幀頻狀態(tài)下的圖像數(shù)據(jù)和附加信息數(shù)據(jù)同步采集,確保兩個(gè)數(shù)據(jù)流穩(wěn)定采集不丟幀,時(shí)間同步精度得到有效控制。
雙緩存數(shù)據(jù)采集的優(yōu)點(diǎn)是:可以使用較小容量的內(nèi)存,不斷的緩沖近乎無限量的數(shù)據(jù)(輸入與輸出端協(xié)同工作),在保持整個(gè)系統(tǒng)的可靠性、實(shí)時(shí)性、連續(xù)性等方面的優(yōu)勢更大。
雙緩存數(shù)據(jù)采集流程如圖5所示,同時(shí)開通0號和1號兩個(gè)緩存空間加入到相機(jī)驅(qū)動隊(duì)列。0號緩存首先接收數(shù)據(jù),捕獲到一幀完整圖像數(shù)據(jù)后,1號緩存開始接收數(shù)據(jù),同時(shí)用戶程序可以根據(jù)自身需要把0號緩存中的數(shù)據(jù)取出做特定的處理(如寫入內(nèi)存DMA通道中),處理完畢后,再把0號緩存加入到相機(jī)驅(qū)動隊(duì)列等待接收下一幀圖像數(shù)據(jù)。1號緩存接收到一幀完整的圖像數(shù)據(jù),發(fā)送消息,0號緩存開始接收數(shù)據(jù),同時(shí)把1號緩存的數(shù)據(jù)寫入內(nèi)存DMA通道中,寫入完畢,把1號緩存加入到相機(jī)驅(qū)動隊(duì)列等待接收下一幀圖像數(shù)據(jù)。以覆蓋舊數(shù)據(jù)的方式,將數(shù)據(jù)寫入兩個(gè)緩存區(qū),整個(gè)采集過程可以如此不斷的循環(huán)下去,直到采集結(jié)束。相比于單緩存采集模式,在雙緩存實(shí)現(xiàn)機(jī)制中,圖像接收和圖像處理同時(shí)進(jìn)行,回避了接收和處理的相互等待,使得數(shù)據(jù)的接收過程與處理過程可以重疊交叉,從而提高了數(shù)據(jù)采集的整體速度和性能。
圖5 雙緩存數(shù)據(jù)采集流程圖
單緩存、雙緩存和多緩存3種采集機(jī)制性能實(shí)測對比試驗(yàn)結(jié)果如表1所示。
表1 幾種緩存機(jī)制性能實(shí)測對比試驗(yàn)結(jié)果
通過上述實(shí)測對比試驗(yàn)發(fā)現(xiàn),雙緩存采集機(jī)制的存儲速度和性能明顯優(yōu)于單緩存采集機(jī)制,不僅采集速度提升明顯,且不易發(fā)生緩存溢出,可靠性和穩(wěn)定性都極大提高。而多緩存采集機(jī)制的效率和性能雖要優(yōu)于雙緩存采集機(jī)制,但效果不突出,并且緩存數(shù)量過多時(shí)還會給系統(tǒng)帶來較大負(fù)擔(dān),反而影響系統(tǒng)整體性能。
基于以上分析研究,充分考慮到高速相機(jī)的采集特性以及Camera Link總線所帶來的高速傳輸效率,在高速圖像采集過程中,采用雙緩存采集機(jī)制,利用DMA技術(shù)從相機(jī)獲取圖像數(shù)據(jù),可獲得與相機(jī)所提供的采集速度相匹配的圖像處理速度。為了避免在圖像采集過程中,由于等待圖像傳輸而導(dǎo)致無謂的CPU負(fù)載增大,對雙緩存讀取使用策略進(jìn)行了優(yōu)化和重新設(shè)計(jì),采用多線程技術(shù),在進(jìn)入圖像采集狀態(tài)時(shí),創(chuàng)建一個(gè)獨(dú)立的圖像采集線程,用來檢測各類狀態(tài)信號和保存圖像。圖像采集整體流程如圖6所示。
圖6 高速圖像采集流程圖
對雙緩存機(jī)制的優(yōu)化主要體現(xiàn)在兩個(gè)方面:
1)相機(jī)參數(shù)配置完畢后采用雙緩存機(jī)制,其中0號緩存用于高速圖像采集,1號緩存用于實(shí)時(shí)圖像顯示,保證了高速圖像采集與實(shí)時(shí)圖像顯示的獨(dú)立運(yùn)行,避免系統(tǒng)大量的等待時(shí)間;
2)考慮到絕對時(shí)間的生成與數(shù)據(jù)的同步采集,都是軟硬件配合完成的時(shí)序控制過程,實(shí)現(xiàn)了數(shù)據(jù)流從硬件接口到計(jì)算機(jī)內(nèi)存的轉(zhuǎn)移,而數(shù)據(jù)采集通過軟件方式完成,為實(shí)現(xiàn)這一過程中時(shí)序控制,在高速圖像采集線程中使用了雙緩存機(jī)制。
串口數(shù)據(jù)采集線程與圖像數(shù)據(jù)采集線程在幀頻信號的驅(qū)動下按時(shí)序進(jìn)行工作,保證了數(shù)據(jù)采集的同步與正確。緩存數(shù)據(jù)結(jié)構(gòu)均使用先入先出隊(duì)列實(shí)現(xiàn),一級緩存有兩個(gè):一個(gè)存放完整附加信息幀,由3個(gè)串口獲取的數(shù)據(jù)和絕對時(shí)間重新組合而成;另一個(gè)存放原始圖像數(shù)據(jù)數(shù)據(jù)幀。軟件在接收到存儲指令后,從下一個(gè)幀頻信號開始,首先清空一級緩存無用過時(shí)的數(shù)據(jù),后續(xù)的過程中一旦兩個(gè)一級緩存中均有超過L幀(緩存空間中的保留幀數(shù))的數(shù)據(jù),便各提取一幀打包為最終需要的文件格式,放入二級緩存中;文件寫入線程在檢測到二級緩存中的數(shù)據(jù)超過L幀時(shí),則將其寫入到硬件中保存為數(shù)據(jù)文件。緩存中預(yù)留的L幀數(shù)據(jù)進(jìn)行彈性處理,方便進(jìn)行彈性誤差修正。
通過使用優(yōu)化的雙緩存機(jī)制,一方面降低了處理等待時(shí)間,降低了CPU負(fù)擔(dān);另一方面,“雙緩存采集線程”中的第一級緩存給數(shù)據(jù)采集線程與數(shù)據(jù)打包線程間增加了彈性量,第二級緩存在數(shù)據(jù)打包線程與文件寫入線程中增加了彈性量,解決了使用軟件方法實(shí)現(xiàn)存在的采集-打包-存儲三級線程執(zhí)行的速率不匹配問題,同時(shí)通過緩存中預(yù)留的彈性處理空間,能夠很好地解決相機(jī)圖像數(shù)據(jù)幀轉(zhuǎn)移時(shí)間帶來的滯后誤差修正問題。
上述方法參與了4個(gè)工作線程及3個(gè)緩存中以實(shí)現(xiàn)所需的功能,各部分之間的關(guān)系如圖7所示。
圖7 軟件結(jié)構(gòu)圖
工作線程是軟件的核心部分,在軟件啟動初始化完成后線程便開始不間斷進(jìn)行工作,確保所需處理任務(wù)的及時(shí)完成,使用線程函數(shù)進(jìn)行實(shí)現(xiàn)。
3.1.1 DMA1圖像采集線程
圖像采集卡同時(shí)提供兩路圖像的采集,DMA1通道對應(yīng)的是原始圖像數(shù)據(jù),該線程通過調(diào)用采集卡的SDK函數(shù),連續(xù)不間斷地獲取DMA1通道中的最新的圖像數(shù)據(jù)。
3.3.2 DMA2圖像采集線程
與DMA1圖像采集線程類似,該線程的作用是持續(xù)不斷從DMA2通道獲取圖像數(shù)據(jù),并將圖像數(shù)據(jù)發(fā)送至擴(kuò)展圖像顯示模塊。
3.3.3 附加信息采集線程
該線程的作用是持續(xù)不斷獲取T、A、E數(shù)據(jù),進(jìn)行解析、計(jì)算,并重新拼合成所需要的圖像附加信息包,在開始記錄圖像后放入附加信息緩存中。
3.3.4 數(shù)據(jù)打包線程
該線程的功能是,實(shí)現(xiàn)圖像與附加信息的打包,形成一幀完整的測量數(shù)據(jù),將其放入測量數(shù)據(jù)緩存中。
緩存是各線程與功能模塊之間進(jìn)行大批量數(shù)據(jù)交互的公共數(shù)據(jù)區(qū)域,同時(shí)提供大容量的數(shù)據(jù)緩存空間,作為線程工作速率的同步緩存域。在軟件上,使用雙端隊(duì)列能夠?qū)崿F(xiàn)無隊(duì)列長度約束的首尾元素插入刪除。軟件包含3個(gè)數(shù)據(jù)緩存,下面分別進(jìn)行分析。
3.2.1 附加信息緩存
該緩存用于存儲附加信息。緩存的附加信息格式符合標(biāo)準(zhǔn)規(guī)范,由附加信息采集線程將T、A、E獲取并拼合而成,附加信息每次由采集線程插入緩存隊(duì)尾,由打包存儲線程從隊(duì)首提取數(shù)據(jù)。
3.2.2 原始圖像緩存
該緩存用于存儲原始圖像數(shù)據(jù),由DMA1圖像采集線程將原始圖像數(shù)據(jù)插入緩存隊(duì)尾,由打包存儲線程從隊(duì)首提取數(shù)據(jù)。
3.2.3 測量數(shù)據(jù)緩存
測量數(shù)據(jù)是圖像與附加信息在絕對時(shí)間上進(jìn)行緩存,解決數(shù)據(jù)打包和數(shù)據(jù)存儲速率之間的不匹配性。
經(jīng)測試,結(jié)果表明圖像質(zhì)量良好,附加信息正確,錯(cuò)圖率為0,丟幀率為0,可靠性高,易于拓展,記錄幀頻滿足400 Hz、200 Hz、100 Hz、50 Hz等不同需求,解決了原始圖像序列與幀頻時(shí)序不匹配問題,實(shí)現(xiàn)了高速圖像不丟幀采集,見表2。
表2 400 Hz幀頻測試結(jié)果
本文研究了基于Camera Link的高速圖像采集技術(shù),提出了幀頻驅(qū)動采集與實(shí)時(shí)檢測采集融合的控制方法以及改進(jìn)型雙緩存數(shù)據(jù)采集方法,解決了高速圖像存儲中出現(xiàn)的丟幀率高、可靠性低等問題,并將該技術(shù)應(yīng)用在了光學(xué)高速圖像采集存儲系統(tǒng),取得了較好的應(yīng)用效果。實(shí)踐證明該技術(shù)通用性強(qiáng),具備較大推廣價(jià)值。
參考文獻(xiàn):
[1] 陳志江, 劉 暉, 肖 澤. 基于幀頻信號的圖像存儲時(shí)序控制方法[J]. 計(jì)算機(jī)測量與控制, 2016,24(8): 304-306.
[2] 李 勇, 劉文怡. 一種高速圖像數(shù)據(jù)采集存儲系統(tǒng)設(shè)計(jì)[J]. 計(jì)算機(jī)測量與控制, 2013,21(2): 288-295.
[3] 沈崟洵, 鄭力新. 基于Camera Link的圖像采集系統(tǒng)[J]. 微型機(jī)與應(yīng)用, 2011,30(19): 60-62.
[4] 張 冬. 大話存儲[M]. 北京: 清華大學(xué)出版社, 2015.
[5] 劉 偉. 基于Camera Link接口的車載便攜式圖像實(shí)時(shí)采集與顯示系統(tǒng)的設(shè)計(jì)[D].西安:長安大學(xué), 2013.
[6] 戴 鵬, 王衛(wèi)東, 任盛偉. 高速車載數(shù)字圖像采集關(guān)鍵技術(shù)研究[J]. 計(jì)算機(jī)測量與控制, 2014,22(1): 267-269.
[7] 安海磊. 高速數(shù)據(jù)采集存儲系統(tǒng)設(shè)計(jì)[D].西安:西安電子科技大學(xué),2012.
[8] 張彥梅,柴芳嬌. 基于FPGA的高速圖像采集系統(tǒng)[J].北京理工大學(xué)學(xué)報(bào),2010,30(9):1117-1120.