陳志江,劉 暉,肖 澤
(中國(guó)酒泉衛(wèi)星發(fā)射中心,甘肅酒泉 732750)
基于幀頻信號(hào)的圖像存儲(chǔ)時(shí)序控制方法
陳志江,劉 暉,肖 澤
(中國(guó)酒泉衛(wèi)星發(fā)射中心,甘肅酒泉 732750)
針對(duì)長(zhǎng)時(shí)間服役光學(xué)設(shè)備圖像存儲(chǔ)系統(tǒng)性能退化和可靠性降低的問題,設(shè)計(jì)了新的圖像存儲(chǔ)系統(tǒng)結(jié)構(gòu);提出了一種基于幀頻信號(hào)的時(shí)序控制方法,以幀頻信號(hào)為基準(zhǔn)驅(qū)動(dòng)系統(tǒng)軟硬件工作,結(jié)合秒信號(hào)、幀頻信號(hào)與串口時(shí)間生成絕對(duì)時(shí)間,實(shí)現(xiàn)了四路獨(dú)立數(shù)據(jù)流的同步采集,通過兩級(jí)緩存機(jī)制保證數(shù)據(jù)采集-打包-存儲(chǔ)之間的速率冗余匹配,對(duì)圖像轉(zhuǎn)移時(shí)間誤差進(jìn)行了修正;檢測(cè)結(jié)果表明,系統(tǒng)時(shí)序得到了有效控制,長(zhǎng)時(shí)間采集存儲(chǔ)數(shù)據(jù)穩(wěn)定可靠不丟幀,時(shí)間同步精度優(yōu)于1 ms。
圖像存儲(chǔ);時(shí)序控制;時(shí)間同步精度
光學(xué)設(shè)備具有數(shù)據(jù)直觀、測(cè)量精度高等優(yōu)點(diǎn),在天文觀察、航天測(cè)控等領(lǐng)域有著廣泛應(yīng)用。隨著設(shè)備的數(shù)字化,圖像分辨率與拍攝頻率的提高,每秒需實(shí)時(shí)處理的數(shù)據(jù)量很大,對(duì)圖像存儲(chǔ)系統(tǒng)的性能要求很高[1-3]。正在服役的光學(xué)設(shè)備,受研制時(shí)技術(shù)條件與硬件性能的限制,圖像存儲(chǔ)系統(tǒng)采用分塊并行存儲(chǔ)的方法,即將一幀圖像分成多個(gè)數(shù)據(jù)塊同時(shí)存儲(chǔ)至獨(dú)立介質(zhì),事后導(dǎo)出時(shí)再將數(shù)據(jù)塊重新組合成完整的一幀,系統(tǒng)采用硬件實(shí)現(xiàn),達(dá)到了不低于400 MB/s的存儲(chǔ)性能指標(biāo)。隨著服役時(shí)間增加,圖像存儲(chǔ)系統(tǒng)性能下降、可靠性降低,容易出現(xiàn)圖像丟幀、錯(cuò)幀、附加信息錯(cuò)亂等問題,嚴(yán)重影響了設(shè)備的正常使用。
基于上述情況,在當(dāng)前技術(shù)背景下,使用可編程圖像采集卡與PCI-E固態(tài)硬盤,重新設(shè)計(jì)了圖像存儲(chǔ)系統(tǒng)結(jié)構(gòu)。為解決系統(tǒng)中圖像采集與存儲(chǔ)過程的時(shí)序控制問題,提出一種基于幀頻信號(hào)的方法,實(shí)現(xiàn)了各數(shù)據(jù)流之間的同步采集與存儲(chǔ),保證了時(shí)間同步精度。
圖像存儲(chǔ)系統(tǒng)結(jié)構(gòu)如圖1所示,以一臺(tái)工控機(jī)為硬件主體,通過軟件實(shí)現(xiàn)圖像的實(shí)時(shí)采集與存儲(chǔ)功能。光耦觸發(fā)卡接收外部時(shí)統(tǒng)終端的幀頻信號(hào)與秒信號(hào),并將兩個(gè)信號(hào)傳送至圖像采集卡,秒信號(hào)作為圖像采集卡的工作基準(zhǔn),幀頻信號(hào)通過Camera Link接口傳送到相機(jī)[4-5],作為相機(jī)的拍攝驅(qū)動(dòng)信號(hào),同時(shí)也作為圖像采集卡的采集驅(qū)動(dòng)信號(hào),保證了相機(jī)拍攝與圖像采集之間的時(shí)序同步,此外秒信號(hào)與幀頻信號(hào)可以通過API接口函數(shù)訪問,作為軟件工作線程的驅(qū)動(dòng)信號(hào)。串口卡實(shí)時(shí)采集頻率為400 Hz的三路串口數(shù)據(jù),其中串口A與串口E的數(shù)據(jù)分別為光學(xué)設(shè)備跟蹤架的方位與俯仰值,串口T的數(shù)據(jù)包括時(shí)間、方位俯仰修正值、曝光時(shí)間、焦距等,三路串口的數(shù)據(jù)共同組成相機(jī)拍攝時(shí)刻對(duì)應(yīng)的圖像附加信息。軟件需要實(shí)現(xiàn)的功能,就是通過采集卡獲取圖像原始數(shù)據(jù),與對(duì)應(yīng)時(shí)刻的串口數(shù)據(jù)組合,形成一幀完整的測(cè)量圖像存儲(chǔ)至固態(tài)硬盤中,獲取的數(shù)據(jù)使用過雙頭顯卡實(shí)時(shí)顯示。
系統(tǒng)的主要數(shù)據(jù)流包括:圖像采集卡通過Camera Link獲取的原始圖像數(shù)據(jù),以及通過3個(gè)串口獲取的附加信息數(shù)據(jù)。四路數(shù)據(jù)的物理鏈路獨(dú)立,需要保證獲取數(shù)據(jù)流的連續(xù)穩(wěn)定不缺失,同時(shí)還要確保高精度的時(shí)刻匹配,這是整個(gè)系統(tǒng)正確性與可靠性的關(guān)鍵,歸根結(jié)底是時(shí)序的高精度控制問題。
2.1 絕對(duì)時(shí)間生成算法
通過實(shí)際測(cè)算,串口T存在恒定的數(shù)據(jù)傳輸延遲(恒小于1 s),因此其數(shù)據(jù)中的時(shí)間信息是不準(zhǔn)確的。系統(tǒng)沒有直接通過時(shí)統(tǒng)終端獲取絕對(duì)時(shí)間,因此當(dāng)前系統(tǒng)最大的問題是缺乏絕對(duì)時(shí)間的有效源。解決該問題的辦法,一是增加時(shí)統(tǒng)終端和相關(guān)處理模塊,但會(huì)造成系統(tǒng)成本與復(fù)雜度的增加;二是基于系統(tǒng)現(xiàn)有的信號(hào)條件生成絕對(duì)時(shí)間,該方法既不增加成本也不改變系統(tǒng)結(jié)構(gòu),使用軟件方式即能夠方便靈活地完成。
圖1 圖像存儲(chǔ)系統(tǒng)結(jié)構(gòu)圖
觀察發(fā)現(xiàn),每次系統(tǒng)啟動(dòng)后串口T獲取的時(shí)間延遲值都不一樣,但單次啟動(dòng)后延遲值恒定小于1 s且后續(xù)數(shù)據(jù)流穩(wěn)定。圖像采集卡為光耦觸發(fā)卡轉(zhuǎn)發(fā)的秒信號(hào)與頻率信號(hào)接供了API函數(shù)接口,這意味著每次秒信號(hào)到來(lái)時(shí)獲取的串口T時(shí)間值在秒量級(jí)上恒定差1 s,此時(shí)毫秒位為0,在秒與秒信號(hào)之間的毫秒位可以通過幀頻信號(hào)步進(jìn)生成。因此,設(shè)計(jì)基于串口T時(shí)間信息、秒信號(hào)和幀頻信號(hào)的絕對(duì)時(shí)間生成算法,如圖2所示。
圖2 絕對(duì)時(shí)間生成算法流程圖
每次秒信號(hào)到來(lái)時(shí),將毫秒計(jì)數(shù)器ms_cnt置為0,將秒計(jì)數(shù)器s_cnt加1,判斷當(dāng)前秒計(jì)數(shù)器若小于N(N為數(shù)據(jù)流穩(wěn)定性的判斷周期,根據(jù)實(shí)情況選?。?,則采集串口時(shí)間信息并與上一次時(shí)間比較,若時(shí)間差為1秒則將設(shè)置當(dāng)前的秒時(shí)間,若時(shí)間差不為1秒則表示當(dāng)前數(shù)據(jù)流不穩(wěn)定,將s_cnt置為0。通過N個(gè)周期的數(shù)據(jù)流穩(wěn)定性判斷后,便獲取了準(zhǔn)確的秒時(shí)間,后續(xù)秒信號(hào)到來(lái)時(shí)只需將秒時(shí)間步進(jìn)加1即可。而在每一個(gè)幀頻信號(hào)到來(lái)時(shí),將幀頻計(jì)數(shù)器步進(jìn)加1。通過秒時(shí)間、幀頻與毫秒計(jì)數(shù)器的計(jì)算,即可得到當(dāng)前幀頻時(shí)刻的絕對(duì)時(shí)間,計(jì)算公式如下所示:
式中,abs_time為絕對(duì)時(shí)間 (ms),s_time為秒時(shí)間值 (ms),ms_cnt為當(dāng)前時(shí)刻的頻率計(jì)數(shù)值,frequency 為系統(tǒng)當(dāng)前使用的頻率值。
通過以上算法實(shí)現(xiàn)了絕對(duì)時(shí)間生成,但存在的風(fēng)險(xiǎn)性是:當(dāng)秒信號(hào)到來(lái)的同時(shí)有一個(gè)幀頻信號(hào)需要響應(yīng),從宏觀的理想狀況看這兩個(gè)信號(hào)是同時(shí)到來(lái)的,但從微觀的實(shí)際軟硬件處理機(jī)制上分析,系統(tǒng)對(duì)這兩個(gè)信號(hào)的處理存在不確定的先后順序,這導(dǎo)致一個(gè)秒信號(hào)周期內(nèi)處理的幀頻信號(hào)總數(shù)可能是frequency±1個(gè),這種不確定性稱之為競(jìng)爭(zhēng)冒險(xiǎn),會(huì)嚴(yán)重影響系統(tǒng)時(shí)序同步控制。
為消除秒信號(hào)與幀頻信號(hào)的競(jìng)爭(zhēng)冒險(xiǎn)帶來(lái)的不確定性因素,對(duì)幀頻信號(hào)進(jìn)行取反。如圖3所示,幀頻信號(hào)的脈寬為ΔT,信號(hào)觸發(fā)以上升沿為準(zhǔn),進(jìn)行取反操作后,相當(dāng)于將上升沿延遲了ΔT,這樣確保了在每個(gè)秒信號(hào)到來(lái)時(shí),同時(shí)到來(lái)的幀頻信號(hào)永遠(yuǎn)滯后ΔT時(shí)間觸發(fā),從而不再存在競(jìng)爭(zhēng)冒險(xiǎn)問題。ΔT的取值為微秒級(jí),對(duì)于系統(tǒng)而言這樣極微小的延遲不會(huì)影響后序處理的時(shí)序控制。
圖3 消除競(jìng)爭(zhēng)冒險(xiǎn)時(shí)序圖
2.2 數(shù)據(jù)同步采集方法
系統(tǒng)的數(shù)據(jù)主要由兩部分組成:(1)圖像原始數(shù)據(jù),由相機(jī)通過Camera Link接口傳送至圖像采集卡,采集卡將數(shù)據(jù)映射至內(nèi)存中,通過API接口函數(shù)可獲取原始圖像數(shù)據(jù),數(shù)據(jù)頻率與幀頻一致;(2)附加信息數(shù)據(jù),通過串口卡同時(shí)采集A、E和T三個(gè)獨(dú)立串口傳輸?shù)臄?shù)據(jù)流,數(shù)據(jù)頻率為固定400 Hz。最終的數(shù)據(jù)經(jīng)由4個(gè)獨(dú)立接口提供,需要通過時(shí)序控制保證數(shù)據(jù)采集同步進(jìn)行。
絕對(duì)時(shí)間由秒信號(hào)與幀頻信號(hào)共同生成,而幀頻信號(hào)同時(shí)也是相機(jī)的工作時(shí)序,盡管串口數(shù)據(jù)頻率固定為400 Hz,但系統(tǒng)的工作幀頻一定可以整除400,因此以幀頻信號(hào)作為數(shù)據(jù)同步采集的基準(zhǔn)時(shí)序。如圖4所示,每一個(gè)幀頻驅(qū)動(dòng)信號(hào)到來(lái)時(shí),采集的是上一幀周期內(nèi)完成傳輸?shù)膱D像以及3個(gè)串口的數(shù)據(jù)幀,這樣就保證了4個(gè)獨(dú)立通道的數(shù)據(jù)采集的同步。當(dāng)幀頻為frequency時(shí),從串口中每次采集的數(shù)據(jù)幀數(shù)為400/frequency個(gè),要使數(shù)據(jù)的同步精度最高,則以最新一幀數(shù)據(jù)為準(zhǔn),舍棄其他數(shù)據(jù),并以幀頻信號(hào)時(shí)刻生成的絕對(duì)時(shí)間作為附加信息的時(shí)間值。
圖4 數(shù)據(jù)同步采集時(shí)序圖
圖像采集卡與串口卡中都存在數(shù)據(jù)緩存處理機(jī)制,數(shù)據(jù)采集時(shí)采用先入先出的方法優(yōu)先采集緩存數(shù)據(jù),初始的數(shù)據(jù)緩存將極大地影響數(shù)據(jù)之間的同步精度。因此,在系統(tǒng)完成初始化正式進(jìn)行數(shù)據(jù)同步采集之前,首先進(jìn)行M個(gè)周期大批量的數(shù)據(jù)采集,清空緩存數(shù)據(jù),使后續(xù)數(shù)據(jù)的傳輸與采集達(dá)到實(shí)時(shí)同步。M根據(jù)實(shí)際情況選取,以達(dá)到完全清空緩存數(shù)據(jù)為準(zhǔn)。
2.3 數(shù)據(jù)同步存儲(chǔ)方法
絕對(duì)時(shí)間的生成與數(shù)據(jù)的同步采集,都是軟硬件相配合完成的時(shí)序控制過程,實(shí)現(xiàn)了數(shù)據(jù)流從硬件接口到計(jì)算機(jī)內(nèi)存的轉(zhuǎn)移,而數(shù)據(jù)存儲(chǔ)通過純軟件方式完成,為實(shí)現(xiàn)這一過程中的時(shí)序控制,在軟件中使用了兩級(jí)緩存機(jī)制[6],如圖5所示。
圖5 數(shù)據(jù)存儲(chǔ)的兩級(jí)緩存機(jī)制
串口數(shù)據(jù)采集線程與圖像數(shù)據(jù)采集線程在幀頻信號(hào)的驅(qū)動(dòng)下按時(shí)序進(jìn)行工作,保證了數(shù)據(jù)采集的同步與正確。緩存數(shù)據(jù)結(jié)構(gòu)均使用先入先出隊(duì)列實(shí)現(xiàn),一級(jí)緩存有兩個(gè):一個(gè)存放完整附加信息幀,由3個(gè)串口獲取的數(shù)據(jù)和絕對(duì)時(shí)間重新組合而成;另一個(gè)存放原始圖像數(shù)據(jù)數(shù)據(jù)幀。軟件在接收到存儲(chǔ)指令后,從下一個(gè)幀頻信號(hào)開始,首先清空一級(jí)緩存拋棄無(wú)用過時(shí)的數(shù)據(jù),后續(xù)的過程中一旦兩個(gè)一級(jí)緩存中均有超過L幀的數(shù)據(jù),便各提取一幀打包為最終需要的存儲(chǔ)格式,放入二級(jí)緩存中;文件寫入線程在檢測(cè)到二級(jí)緩存中的數(shù)據(jù)超過L幀時(shí),則將其寫入到硬件中保存為數(shù)據(jù)文件。緩存中預(yù)留的L幀數(shù)據(jù)進(jìn)行彈性處理,方便進(jìn)行彈性誤差修正,同時(shí)也能減少其他工程實(shí)現(xiàn)上問題的產(chǎn)生[7]。
根據(jù)相機(jī)的工作原理[8],相機(jī)的工作時(shí)序如圖6所示。圖像完成曝光后,需要經(jīng)過一個(gè)轉(zhuǎn)移時(shí)間t_out才能完成圖像數(shù)據(jù)的送出,即圖像數(shù)據(jù)的獲取總是滯后于曝光完成時(shí)刻,在數(shù)據(jù)存儲(chǔ)時(shí)需要進(jìn)行修正。在軟件中,附加信息的時(shí)間通過秒信號(hào)與幀頻信號(hào)生成,對(duì)應(yīng)這一時(shí)刻的絕對(duì)時(shí)間,與圖像曝光完成時(shí)的時(shí)刻存在不一致。相機(jī)完成圖像數(shù)據(jù)轉(zhuǎn)移所需的幀周期n=t_out\t_frequency+1,“\”為整除運(yùn)算,t_out為圖像轉(zhuǎn)移時(shí)間,t_frequency 為幀頻周期時(shí)間。相機(jī)手冊(cè)給出的圖像轉(zhuǎn)移時(shí)間t_out為8 ms左右,當(dāng)系統(tǒng)以400 Hz頻率工作時(shí),附加信息應(yīng)該修正2幀;當(dāng)系統(tǒng)以低于400 Hz頻率工作時(shí),附加信息應(yīng)該修正1幀。由于在緩存中預(yù)留了L幀的彈性處理空間,在軟件上能夠非常方便地實(shí)現(xiàn)修正。
圖6 相機(jī)圖像曝光與轉(zhuǎn)移時(shí)序
在高速數(shù)據(jù)存儲(chǔ)方面,通過使用兩級(jí)緩存機(jī)制,第一級(jí)緩存給數(shù)據(jù)采集線程與數(shù)據(jù)打包線程間增加了彈性量,第二級(jí)緩存在數(shù)據(jù)打包線程與文件寫入線程中增加了彈性量,解決了使用軟件方法實(shí)現(xiàn)可能存在的采集-打包-存儲(chǔ)三級(jí)線程執(zhí)行的速率不匹配問題,同時(shí)通過緩存中預(yù)留的彈性處理空間,能夠很好地解決相機(jī)圖像數(shù)據(jù)幀轉(zhuǎn)移時(shí)間帶來(lái)的滯后誤差修正問題。
基于前文介紹的系統(tǒng)結(jié)構(gòu)與時(shí)序控制方法,在工控機(jī)上實(shí)現(xiàn)了該圖像存儲(chǔ)系統(tǒng),工控機(jī)配置上Intel Core i5四核3.4 GHz,內(nèi)存8 G,搭載480 G的PICE接口固態(tài)硬盤。
對(duì)實(shí)現(xiàn)的圖像存儲(chǔ)系統(tǒng)進(jìn)行系統(tǒng)檢測(cè),檢測(cè)方法為:對(duì)相機(jī)常用的5個(gè)工作頻率,單次記錄5萬(wàn)幀以上圖像,記錄20次,分別檢測(cè)所存儲(chǔ)圖像數(shù)據(jù)的性能指標(biāo)。指標(biāo)總有3個(gè):1)圖像丟幀數(shù),即存儲(chǔ)過程中是否有未存儲(chǔ)的圖像幀數(shù),通過開啟相機(jī)的幀記數(shù)器功能輔助檢測(cè);2)附加信息丟幀率,即是否存在附加信息丟失未記錄的情況,通過附加信息時(shí)間的連續(xù)性進(jìn)行檢測(cè);3)時(shí)間同步精度,即圖像曝光時(shí)刻與附加信息的絕對(duì)時(shí)間的差值,使用自研的時(shí)間同步精度檢測(cè)儀[9]進(jìn)行檢測(cè),該儀器的最小測(cè)量精度為1 ms,對(duì)每次記錄的圖像抽檢100幀進(jìn)行計(jì)算。
測(cè)試結(jié)果如表1所示,可以發(fā)現(xiàn),在5個(gè)工作頻率下分別進(jìn)行20次超過5萬(wàn)幀的連續(xù)記錄,系統(tǒng)均未出現(xiàn)圖像和附加信息丟幀的情況,且時(shí)間同步精度均優(yōu)于1 ms。
表1 系統(tǒng)檢測(cè)結(jié)果表
本文介紹了一種軟硬件結(jié)合的圖像存儲(chǔ)系統(tǒng)結(jié)構(gòu),提出了基于幀頻信號(hào)的方法,實(shí)現(xiàn)了高速數(shù)據(jù)采集與存儲(chǔ)的時(shí)序同步控制。檢測(cè)結(jié)果表明,該系統(tǒng)結(jié)構(gòu)與實(shí)現(xiàn)方法有效保證了存儲(chǔ)功能的穩(wěn)定性和可靠性。該系統(tǒng)的結(jié)構(gòu)具有較強(qiáng)可移植性,實(shí)現(xiàn)的圖像采集存儲(chǔ)軟件功能可靈活擴(kuò)展,能夠推廣應(yīng)用到其他相關(guān)設(shè)備與領(lǐng)域。
[1]蔣偉林,胡躍明,陳 安.基于FPGA實(shí)時(shí)圖像采集系統(tǒng)[J].計(jì)算機(jī)測(cè)量與控制,2011,19(5):1215-1216.
[2]崔麗杰,張彥軍,劉文怡.基于FPGA和DSP的圖像壓縮系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)測(cè)量與控制,2014,22(10):3423-3425.
[3]李 勇,劉文怡.一種高速圖像數(shù)據(jù)采集存儲(chǔ)系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)測(cè)量與控制,2013,21(2):535-539.
[4]劉 偉.基于Camera Link接口的車載便攜式圖像實(shí)時(shí)采集與顯示系統(tǒng)的設(shè)計(jì)[D].西安:長(zhǎng)安大學(xué),2013.
[5]沈崟洵,鄭力新.基于Camera Link的圖像采集系統(tǒng)[J].微型機(jī)與應(yīng)用,2011,30(19):60-62.
[6]戴 鵬,王衛(wèi)東,任盛偉,等.高速車載數(shù)字圖像采集關(guān)鍵技術(shù)研究[J].計(jì)算機(jī)測(cè)量與控制,2014,22(1):267-269.
[7]張 冬.大話存儲(chǔ)[J].北京:清華大學(xué)出版設(shè),2015.
[8]劉 彪.基于FPGA高分辨率高幀CMOS相機(jī)設(shè)計(jì)[D].長(zhǎng)春:中國(guó)科學(xué)院大學(xué),2014.
[9]李英環(huán).高速圖像數(shù)字記錄同步精度檢測(cè)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[D].哈爾濱:哈爾濱工業(yè)大學(xué),2013.
Image Storage Sequential Control Method Based on Frequency Signal
Chen Zhijiang,Liu Hui,Xiao Ze
(Jiuquan Satellite Launch Center,Jiuquan 732750,China)
The image storage system of optical devices,which have been serving for a long time,have problems of performance degradation and reliability reduction,a new image storage system structure is designed aim at this situation.A sequential control method base on frequency signal is proposed,driving the hardware and software of the image storage system with the frequency signal,generating absolute time by combining second signal,frequency signal and time information from serial port,implements the four independent synchronous data acquisition,two levels of cache mechanism is raised up to ensure the redundant matching of data rate between collection,packaging,and storing,the image transfer time error is corrected.Test results show that,the image storage system sequence has been effectively controlled,the data collection and storage is stable and reliable for a long time without losing a frame of image,the accuracy of time synchronization is better than 1 ms.
image storage;sequential control;the accuracy of time synchronization
1671-4598(2016)08-0304-03
10.16526/j.cnki.11-4762/tp.2016.08.083
:TP273
:A
2016-03-23;
:2016-04-28。
陳志江(1987-),男,湖南瀏陽(yáng)人,碩士研究生,主要從事光學(xué)測(cè)量及圖像處理方向的研究。