聶海麗 上海鐵路局科研所
基于Camera Link的雙相機高速同步采集系統的研制
聶海麗 上海鐵路局科研所
提出一個基于Camera Link的雙相機高速采集系統,介紹該系統的特點和主要硬件組成。通過重點講述雙相機的外觸發同步采集方式和海量存儲技術、闡述主要的軟件架構和圖像采集、顯示的軟件實現,從而達到利用這些技術為鐵路的現場檢測帶來新的解決途徑的目的。
Camera Link;同步采集;海量存儲
近年來,隨著電荷耦合元件(CCD)技術的發展,圖像的采集與處理技術逐漸成為鐵路檢測領域的一個重要組成部分。在檢測的過程中,往往采用高頻率、大分辨率的多個CCD相機共同工作來獲取高質量的寬幅圖像數據。相機常常被安裝在檢測車上,在檢測車高速前進的過程中,相機持續地、實時地將運動路徑上的圖像拍攝下來,以便事后進行分析和處理。高速的采集會產生高達每秒上百兆的圖像數據流,而多個相機的協作又會引出相機的同步問題,這些都對系統的硬件和軟件結構設計提出了較高的要求。為了解決這些難題,本文設計并開發了基于Camera Link的雙相機高速同步采集系統。
采集系統的總體設計方案如圖1所示。系統主要由兩臺高頻率線陣列相機、帶有雙Camera Link接口的采集卡、編碼器、工控機和磁盤陣列存儲器組成。

圖1 系統總體設計
線陣列相機逐行掃描沿途經過的寬幅被測物體,并將采集到的線圖像數據通過Camera Link總線接口傳送給圖像采集卡。在采集卡中,完成由線到圖的拼接,并將整幅圖像發送給工控機。工控機對圖像進行實時處理,并最終存儲到磁盤陣列存儲器中。系統需要編碼器來同步兩個相機的拍攝,編碼器將外觸發信號通過External Signal接口發送給采集卡,由采集卡對信號進行整合后發送給兩個相機,使兩個相機在同一信號觸發下完成每次拍攝。
該系統的主要特點:
(1)非接觸、可遠距離測量:被測物體距相機的距離可在3~9 m之間,而且是非接觸,特別適合鐵路領域的現場檢測。
(2)無縫拼接:因為相機是線陣列相機,所以沿相機行進方向拍攝下來的圖像可以無扭曲、無變形的無縫拼接,可拼接圖像長度亦不受限制。
(3)海量存儲:高頻率高分辨率的圖像采集意味著會在短時內產生大量的圖像數據,該系統采用了先進的存儲技術,滿足了鐵路領域長時間進行不間斷檢測的需求。
兩臺相機采用相同型號的線陣列相機,相機分辨率2 k,雙通道模式下最高線掃描頻率36 kHz。程序通過Camera Link串行通訊接口控制相機。編程參數有增益、偏移、曝光時間、線掃描頻率、觸發模式和輸出測試模式等。
本系統所使用的采集卡連接兩個獨立的線掃描相機,采樣時鐘頻率達到125 MHz。采集卡采用Camera Link接口,能夠保證圖像實時智能傳輸到內存而不需要CPU干預。采集卡的其中一個核心部件是ACUPlus,它不間斷地從線陣列相機那里采集圖像數據,而作為另一核心部件的DTE,則保證了圖像數據在板卡和主機之間的快速、完整傳輸。
Camera Link是一個工業高速串口數據的連接協議,旨在簡化CCD和采集卡之間的連接。
比起IEEE 1394總線,Camera link總線具有更強的通用性和靈活性。Camera Link總線具有占用CPU較少,傳輸速率高,I/O同步能力強的優點。Camera Link接口可以方便地利用直接存儲器存儲技術,大大提高了CPU使用效率。這幾年采用千兆以太網的CCD相機也較多,千兆以太網技術在Optimized模式下占用CPU也較少,但是比起Camera Link來,較低的傳輸速率制約了其在CCD圖像采集領域的廣泛應用。因此對于高分辨率的圖像采集來說,Camera Link接口無疑是最佳的選擇。
兩臺相機在內觸發工作模式下,只能按照設定的線掃描頻率或者曝光時間各自獨立工作,無法實現同步,所以本系統采用外觸發模式來進行相機的采集控制。在外觸發模式下圖像采集卡利用如圖2所示的相機接口信號來實現對相機的控制及圖像數據的采集操作。

其中EXSYNC為外觸發讀出信號,是必備信號。當EXSYNC固定接低電平時,相機以最大線速率輸出圖像數據;當 EXSYNC正負交替時,它的下降沿觸發圖像讀出。本系統中,由編碼器產生的外觸發信號接到由采集卡的J4接口上,該信號通過J4接口傳入采集卡,然后由采集卡產生EXSYNC信號對兩個相機進行同步控制并且改變曝光時間,確保兩臺相機同步采集被測物體的圖像數據,從而實現對寬幅物體的不同部分的協同拍攝。
在現場拍攝時,編碼器和相機安裝在同一檢測車上。編碼器與車軸同步旋轉,觸發的頻率由車速決定,車速越快,編碼器的觸發頻率越高,線掃描時間就越短。因為車輛在行進時難以保持始終勻速運行,因此不能將曝光時間設置成最大曝光模式(曝光時間與線掃描時間相同的模式),因為這樣拍出的圖像必定會有明暗變化,不能達到期望的效果,因此,綜合考慮,選擇如圖3所示的曝光模式。在這種模式下,相機的線掃描速度由外觸發信號的頻率決定,曝光時間與外觸發信號的脈寬相同。EXSYNC信號的上升沿決定曝光時間的開始而下降沿決定讀取數據的開始。

在鐵路現場檢測的過程中,往往要將相機安裝在高速行進的車輛上來拍攝沿線的情況。為了能夠使拍攝的圖像達到一定的精度,相機會使用較高的掃描頻率,對于線陣列相機來說,在行車速度達到100 km/h時,如果想要保證1 mm/線的拍攝精度,需要相機的線掃描頻率為27 kHz。如果每個相機橫向的分辨率為2 048,像素灰度值為8位,則兩臺相機每秒產生的數據量就高達105 MB,如果僅僅按照傳統的方式存到硬盤上,則在容量上和存儲速度上都很難滿足需求。為此,必須通過一定的技術手段來解決海量數據的存儲問題。
(1)使用 SCSI總線
SCSI總線傳輸速度快,目前并行SCSI接口的最高傳輸速率可以達到320 MB/s,作為一種智能化的系統級接口,該接口具有獨立于物理設備具體特性的高級命令結構,允許多個FO任務并行操作,具有獨立的I/0處理能力。
(2)使用磁盤陣列
磁盤陣列通過在多個磁盤上同時存儲和讀取數據來大幅提高存儲系統的數據吞吐量。在磁盤陣列中,可以讓很多磁盤驅動器同時傳輸數據,而這些磁盤驅動器在邏輯上又是一個磁盤驅動器,所以使用磁盤陣列可以達到單個磁盤驅動器幾倍、幾十倍甚至上百倍的速率。同時因為磁盤陣列的存儲速度更加接近內存的存取速度,亦與高速度的CPU相匹配,從而使整體的工作速度大為提高。
本項目采用Visual C++作為應用程序的開發工具,使用Sepera++作為圖像采集和處理的主要類庫來進行開發。類庫主要分為基礎類和圖形用戶接口類。基礎類是Sepera++的核心類,包括管理類、通用硬件控制類,專用采集卡類。圖形用戶接口類是一組以MFC對話框類為基礎的類,它們實現了Sepera LT應用程序通常要實現的一些基礎功能,為編程提供了一些基礎工作。
為了控制相機采集圖像,程序中為每個相機建立了一組Sepera類。這些類相互協作,共同完成采集任務。主要包括:SapAcqusition類、SapBuffer類、SapTransfer類。SapAcqusition類負責控制采集卡的圖像采集。SapBuffer類用來存儲采集的圖像數據。一個SapBuffer其實是一個Buffer數組,用來存儲多幀圖像。SapTransfer類負責采集圖像的傳輸,將SapAcqusition類采集的圖像傳遞到SapBuffer類的內存空間中儲存。
程序中使用SapView類來控制圖像的顯示,SapView類負責將SapBuffer中的內容顯示在Window中。它可以顯示SapBuffer緩存數組的當前幀,也可以顯示指定幀和下一幀。一個內部線程負責優化緩存圖像的實時顯示。SapView類與SapTransfer類的工作一直保持同步,所以緩存中的圖像會實時流暢的顯示出來。
基于Camera Link的雙相機同步采集系統的實現為鐵路領域的現場檢測帶來了新的途徑。高頻率、高分辨率的圖像采集不僅提供了最直觀的現場資料,而且為后期的圖像智能分析與處理提供了基礎。隨著機器視覺技術的發展,這一技術必將在鐵路的檢測領域得到更廣泛的應用。
責任編輯:許耀元 朱挺
來稿日期:2013-05-10