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