高明
(中船重工七五〇試驗場,云南昆明 650106)
一種低成本水下準高速攝像系統
高明
(中船重工七五〇試驗場,云南昆明 650106)
本文主要講述了一種低成本的水下準高速攝像系統。在錄像時,系統首先將視頻數據緩存在主機上,然后再將數據復制到硬盤當中。這種攝像系統的幀率大于普通的水下電視,畫面質量也非常高,同時成本又遠小于通常意義上的水下高速攝像系統,可以作為常規的水下電視和水下高速測量之間的過度設備,也填補了水下高速攝像與常速攝像之間的空白。
水下攝像 準高速攝像 低成本
通常情況下,我們需要對水下的目標進行視覺上的觀測,這種觀測經常采用水下電視的方法。這種普通的水下電視的幀率通常是25~30幀。但是,有的時候水下目標的運動速度比較大,通過普通的水下電視觀測并不能取得非常良好的觀測效果;如果采用高速攝像的方式測量的話,觀測成本又增加很多。所以,在待觀測目標的運行速度大于普通水下電視可以良好觀測的速度而又沒有達到必須采用高速攝像的方式去觀測的速度時,我們設計了一種低成本的準高速水下目標觀測系統。
我們知道,一般的高速攝像機在錄像時是將視頻數據保存在自身的內部緩存中。這種緩存是易失性存儲介質,存儲速率非常高,大小一般在幾個G至十幾個G之間不等,這樣可以保證將幾秒至幾十秒的視頻數據不丟失的保存下來。然后再通過上位機將數據從高速攝像機中讀取出來,并保存在硬盤當中。我們所設計的準高速攝像系統也采用了這種類似的設計方法。由于機芯本身并不帶有緩存介質,所以我們只能將視頻數據保存在顯控主機上。機芯傳遞給顯控主機的視頻數據的速率是每秒752×480×60Bit,這樣的數據如果直接保存在硬盤中,會由于硬盤的讀寫速度慢而造成數據大量丟失。于是我們便先將數據保存在顯控主機的內存中,等到用戶點擊停止保存鍵或者最長錄像時間到,再將視頻數據從內存中讀取出來,并保存在硬盤中。采用這種方法就不會丟失視頻數據。這樣做實際上就是把顯控主機的內存當成了準高速攝像機的內部緩存,顯控主機的內存大小就決定了可以記錄的時間的長短。因為高速或者準高速攝像的觀測錄像時間都不會太長,一般為幾秒至幾十秒而已,所以這種方法可以滿足要求。在XP系統上我們錄像的時間可以達到33秒,而在Win7系統上,至少可以增加一倍。系統工業原理圖如圖1所示。

圖1 系統工作原理
本系統的硬件有三部分組成:水下準高速攝像機、顯控主機和連接纜。如圖2所示。
水下準高速攝像機采用國產的MVC360-60GE機芯,這種準高速攝像機的幀率是每秒60幀,分辨率是752×480。這種攝像機本身不帶有鏡頭,在工作時我們為其配備4.5-10mm變焦鏡頭,在空氣中進行手動調焦。這樣做的好處是可以通過調節,來改變水下可觀測的距離。由于這種機芯的幀率是每秒60幀,分辨率是752×480,所以在進行數據傳輸時必須通過超五類的以太網線和水面顯控主機相連,供電方式是通過水面24V供電。水面顯控主機配有千兆網口,用來接收攝像機傳來的視頻數據,并且實時顯示攝像畫面。為了可靠工作,這種顯控主機采用工控機。我們目前完成的系統是單攝像機系統,如果要多個攝像機同步工作,只需要加裝配備統一觸發的觸發設備即可完成同步觀測和保存。
一般的水下高速攝像系統與本系統在硬件構成上主要差別在高速攝像機的機芯與高速攝像系統水面顯控主機的監控軟件上。本系統的機芯只是準高速機芯,較國外進口的高速攝像機機芯要便宜得多。另外,若使用國外進口的高速攝像機機芯就必須配套使用相關的軟件,而本系統的軟件完全由自己設計開發,可以自由設計功能與界面,從而進一步降低了產品的成本。

圖2 系統硬件構成
系統每采集到一幀圖像,就會調用一次回調函數MStreamProc()。于是在錄像時,在MStreamProc()中添加將視頻數據保存到內存的代碼。在保存視頻數據以前,需要先申請一段內存空間。為了能夠最大程度上獲得大的內存空間,從而獲得更長的錄像時間,本系統在保存時申請了兩段內存并初始化了一個空的AVI文件:


內存申請完以后,將要保存的視頻數據一幀一幀的連續保存在申請到的內存中。

當點擊停止保存或者是保存的最大時間到了以后,系統會停止向內存中寫入數據,同時從內存中將數據讀取到硬盤,寫入通過MV_AVIFileInit()初始化了的空AVI文件中。



程序從內存中讀取視頻數據,是最為關鍵的時期,在此期間,程序不能響應其他動作,只能完成這一項工作。所以將IDC_SAVEAVI文本內容寫為“等待”,并且禁用。當程序讀取數據完畢時,才改為可用。
保存在內存中的視頻數據實際上是黑白數據,但是,這種準高速攝像我們通常希望是能得到彩色圖像, 于是通過MVC_PixelConverter2()將黑白圖像轉化為彩色圖像,并保存到AVI文件中。在高速或者是準高速攝像時,回放研究視頻數據經常是逐幀回放、研究,所以在保存視頻數據時,是不需要壓縮的。
這種低成本的水下準高速觀測攝像系統實際上是填補了普通的水下常速攝像和較昂貴的高速攝像之間的空白,既增加了目標的可觀測速度,又不至于使成本增加很多。
這種水下準高速攝像系統在實際當中已經有過使用,并且取得了良好的效果。
[1]孫鑫.VC++深入詳解[M].電子工業出版社,2012.