摘要:針對聲納系統圖像實(shí)時(shí)存儲過(guò)程中的大數據量問(wèn)題,本文提了一種聲納視頻壓縮存儲的工程實(shí)現方法。采用MPEG-4視頻編碼標準[1]及Xvid編碼器,基于VFW數字視頻軟件開(kāi)發(fā)包,在VS2010開(kāi)發(fā)環(huán)境下實(shí)現了對聲吶視頻的高壓縮率、高壓縮質(zhì)量的實(shí)時(shí)壓縮存儲。經(jīng)過(guò)實(shí)際測試,本文設計方案能夠滿(mǎn)足成像聲納系統在100m滿(mǎn)量程條件下,最高幀率15Hz的應用需求。 引言 聲納成像在海洋資源開(kāi)發(fā)和海洋防衛等方面有著(zhù)重要的意義,具有作用距離遠、直觀(guān)顯示觀(guān)測區域狀況和識別目標等特點(diǎn),被廣泛地應用于軍事、經(jīng)濟領(lǐng)域。在成像聲納系統的設計過(guò)程中,為了實(shí)現對目標更為細膩的刻畫(huà),系統的角度和距離分辨率指標往往都很高。本文設計的成像聲納的相關(guān)技術(shù)指標為:量程100m,視角90°×20°,波束數538,波束間距0.17°,量程分辨率:2.5cm,最高幀率:15Hz。在工程實(shí)踐中,我們需要對聲納的實(shí)時(shí)畫(huà)面進(jìn)行存儲,以便后期的查閱和分析,在15Hz的幀速率下,每小時(shí)產(chǎn)生的圖像需要占據的存儲空間為3600X[15X(100X40X538)]Byte=116.2085GB,對系統存儲能力的要求將會(huì )非?量,亟需引入圖像壓縮技術(shù)來(lái)解決這一問(wèn)題。 1 VFW軟件開(kāi)發(fā)包 VFW(Video for Windows)是微軟推出的關(guān)于數字視頻的一個(gè)軟件開(kāi)發(fā)包,它圍繞AVI文件標準,推出了一整套完整的視頻采集、壓縮解壓縮、回放和編輯API。它可以實(shí)現從傳統模擬視頻源得到視頻剪輯,還可以實(shí)現影像壓縮和影音播放。由于A(yíng)VI文件格式在數字視頻技術(shù)中被廣泛使用,因此VFW在將來(lái)一段時(shí)間內仍會(huì )有較高的實(shí)用價(jià)值。用戶(hù)不必專(zhuān)門(mén)安裝VFW,Windows系統本身就包含了VFW技術(shù)。安裝Windows的時(shí)候VFW所需的相關(guān)組件就會(huì )同時(shí)被安裝上。VS2010中提供了VFW的頭文件Vfw.h和庫文件Vfw32.lib。在VS2010開(kāi)發(fā)環(huán)境中調用VFW,只需要將Vfw32.lib加入工程,并在主對話(huà)框源文件HAICADlg.cpp中包含Vfw.h文件。 2 聲吶圖像壓縮存儲的實(shí)現 要進(jìn)行聲吶圖像壓縮存儲,在選擇了Xvid編碼器的基礎上,還要進(jìn)行一系列操作,主要包括:AVI文件的初始化、壓縮參數設置、壓縮前后位圖格式設置、判斷壓縮支持、圖像壓縮和存儲。軟件實(shí)現流程如圖 1所示。 2.1 壓縮前位圖格式的設置 本文成像聲吶系統無(wú)需進(jìn)行視頻采集,而是直接接收前端信號處理FPGA上傳的數據。濕端設備上傳的數據是波束形成后得到的,每個(gè)距離點(diǎn)處有538個(gè)波束,距離像上的點(diǎn)數由探測量程決定,距離分辨率為2.5cm。圖像數據是一個(gè)矩陣。 如果直接顯示圖像數據,那么在屏幕上為一個(gè)矩形,和實(shí)際探測區域為90°視角的扇形區域不一致。為了符合人們的觀(guān)察習慣,需要把圖像進(jìn)行坐標轉換,將矩形視圖轉換成扇形視圖,如圖 2所示。除此之外,波束形成產(chǎn)生的是灰度圖像,每個(gè)像素點(diǎn)由一個(gè)8bit的像素值表示,即0~255的灰度值。為了提高人眼對圖像的分辨能力,在顯示的時(shí)候需要將灰度圖像映射成彩色圖像,即每個(gè)像素點(diǎn)由三個(gè)8bit的值表示,分別為RGB強度值。這種彩色并非真正意義上的彩色圖像,故而稱(chēng)之為偽彩色。圖 3所示為偽彩色映射的bone、cool、copper、hot、jet五種映射方式。 壓縮前位圖格式與轉換后的扇形圖像有關(guān),它保存的是扇形圖的位圖信息,包括圖像的寬度、高度、大小、每個(gè)像素點(diǎn)的位數等。最終顯示的扇形圖的寬和高與圖像是否處于縮放狀態(tài)有關(guān)。在MFC工程的頭文件中定義了一個(gè)40字節的專(zhuān)有結構來(lái)保存壓縮前的位圖格式,根據圖像是否處于縮放狀態(tài)進(jìn)行賦值。 2.2 壓縮參數設置 該部分定義了一個(gè)COMPVARS結構的對象保存編碼器的壓縮參數。開(kāi)發(fā)者可以自己手動(dòng)設置該結構體中的各個(gè)成員變量,前提是你必須了解使用的編碼器的參數值;也可以彈出一個(gè)對話(huà)框讓用戶(hù)選擇編碼器,如圖 4所示,同時(shí)初始化COMPVARS結構。 本文中采用第二種方法來(lái)設置壓縮參數。ICCompressorChoose()函數中的uiFlags參數可供開(kāi)發(fā)人員進(jìn)行不同應用的開(kāi)發(fā),可以設置為如表 1所示的五種值。 本文選擇MPEG-4 Xvid編碼器。如果用戶(hù)成功選擇了一個(gè)編碼器,該函數返回TRUE,否則返回FALSE。通過(guò)一個(gè)指向COMPVARS結構的指針?lè )祷赜脩?hù)通過(guò)對話(huà)框選擇的編碼器的壓縮參數信息并使用該壓縮參數進(jìn)行圖像壓縮。 2.3 壓縮后位圖格式的設置 在壓縮前位圖格式和編碼器的壓縮參數都已知的情況下,可使用ICCompressGetFormat宏來(lái)設置壓縮器的輸出格式,根據輸入位圖格式和選擇的編碼器的壓縮參數,返回一種編碼器支持的輸出位圖格式。傳址調用要先定義一個(gè)結構的指針,作為函數的第三個(gè)參數。函數返回時(shí),指針指向的結構就包含了編碼器的輸出位圖格式。 在VS2010中調試程序時(shí),通過(guò)變量監視查看到輸出位圖的信息頭,如圖 5 編碼器輸出位圖格式所示。由此可見(jiàn)Xvid編碼器將24位RGB格式仍然壓縮成24位RGB格式。 2.4 判斷壓縮支持 在進(jìn)行圖像壓縮之前需要判斷是否支持該壓縮方式。ICCompressQuery宏用來(lái)判斷選定的編碼器是否支持輸入格式或者是否能夠將輸入格式壓縮成輸出格式,如果支持則返回ICERR_OK。使用時(shí)直接將設置好的壓縮器句柄、輸入位圖格式、輸出位圖格式當作實(shí)參傳遞給ICCompressQuery宏即可。 這里定義了FrameStart函數來(lái)完成幀序列壓縮的資源分配,為使用幀圖像壓縮函數做準備。它有兩個(gè)參數:一個(gè)為編碼器的壓縮參數,另一個(gè)為輸入數據的位圖格式。初始化成功返回TRUE。具體形式如下所示: BOOL ICSeqCompressFrameStart( PCOMPVARS pc, //壓縮參數 LPBITMAPINFO lpbiIn //輸入位圖格式 ); 2.5 圖像壓縮與存儲 這里定義了ICCompress函數來(lái)完成單幀圖像的壓縮,并定義了一系列輔助函數來(lái)完成資源分配、資源釋放和壓縮后數據的存儲地址返回。每壓縮完一幀數據,要先設置流的格式信息,然后就可以將壓縮后的視頻數據寫(xiě)入AVI數據流。壓縮后的AVI文件通過(guò)普通的視頻播放器解壓播放,顯示畫(huà)面如圖 6(b)所示,與干端顯控軟件實(shí)時(shí)顯示的壓縮前的聲吶圖像基本一致,如圖 6(a)所示,人眼幾乎看不出差別,壓縮率達到10倍以上。由此可見(jiàn),MPEG-4編碼標準圖像壓縮質(zhì)量高,同時(shí)壓縮率也高。 3 聲吶圖像壓縮效果評價(jià) 3.1 壓縮率 設計了兩種方法比較不同圖像數據的壓縮率,一種將標準正弦信號直接作為聲吶接收的回波信號,進(jìn)行信號處理以及波束形成后,干端實(shí)時(shí)接收顯示的圖像作為壓縮源,另一種將真實(shí)水域中聲吶接收到的回波信號,進(jìn)行信號處理以及波束形成后,干端實(shí)時(shí)接收顯示的圖像作為壓縮源。為了提高結果的可信度,在不同水域情況下壓縮比較,得到的聲吶圖像的壓縮率如表 2 所示。 從表中可以看出,圖像數據幀與幀之間、像素點(diǎn)與像素點(diǎn)之間冗余度越大,圖像的可壓縮程度越大,壓縮率越高?傮w來(lái)說(shuō),本文設計的成像聲納視頻壓縮存儲方法的標準壓縮率達到10倍以上,滿(mǎn)足系統的存儲需求。 3.2 壓縮質(zhì)量 目前視頻圖像壓縮質(zhì)量的檢測方法一般采用峰值信噪比(PSNR)作為圖像質(zhì)量客觀(guān)評價(jià)的指標。圖像質(zhì)量評價(jià)標準是針對單幀圖像而言的,因此可以將視頻圖像分解為多個(gè)靜止圖像,通過(guò)計算單幀圖像的峰值信噪比來(lái)得到視頻圖像的峰值信噪比。給定一幅大小為M×N的數字化圖像 在Matlab中根據公式(1)和(2)計算單幀圖像的峰值信噪比,得到結果PSNR=37.1646 。通常情況下,PSNR值高于28,則待測圖像和參考圖像差異不明顯,當高于35時(shí),則人眼很難看出兩幅圖像的差異。由此可見(jiàn),本文設計的成像聲納視頻壓縮存儲方法在保證一定的壓縮比例的同時(shí),得到的圖像壓縮質(zhì)量較高,可以基本無(wú)失真重現測試場(chǎng)景,以保證后期對數據的復查和分析。 參考文獻: [1]Vetro A, Wiegand T, Sullivan G J. Overview of the Stereo and Multiview Video Coding Extensions of the H.264/MPEG-4 AVC Standard[J]. Proceedings of the IEEE, 2011, 99(4):626 - 642 [2]謝志鵬,陳鍛生.基于VfW的實(shí)時(shí)視頻圖像采集處理程序設計[J]. 微機發(fā)展, 2004, (11) [3]陳文濤,劉登飛. 基于VC++和VFW的視頻圖像算法接口[J]. 電腦編程技巧與維護, 2012, (6):16-18 [4]朱永強,湯雄,江雪.基于MPEG標準的視頻壓縮技術(shù)分析與研究[J]. 計算機與現代化, 2012, (10) [5]鐘麟. 視頻圖像壓縮質(zhì)量檢測方法[J].計算機與網(wǎng)絡(luò ), 2006, (8):46-47 |