王宗苗

摘 要:本文提出了一種應用于以太網工業相機的無損壓縮技術,其通過對工業相機的以太網GVSP報文的圖像數據進行數據預測,減少數據之間的相關性;通過減小數據位寬來減小冗余數據量,從而減少網絡傳輸所需要的帶寬。最后,結合FPGA的硬件驗證,給出了該無損壓縮算法的性能比較結果。結果表明,該無損壓縮算法壓縮率可以達到45%~13%。
關鍵詞:無損壓縮;數據預測;工業相機
中圖分類號:TP751 文獻標識碼:A 文章編號:1003-5168(2018)22-0023-02
Data Lossless Compress Technique Based on Industry Camera
WANG Zongmiao
(Zhejiang HuaRay Technology Co., Ltd., Hangzhou Zhejiang 310053)
Abstract: This paper presented a lossless compression technique for Ethernet industrial cameras, which reduced the correlation between data by predicting the image data of Ethernet GVSP messages of industrial cameras, and reduced the amount of redundant data by compressing the data to determine the bit data width, thus reducing the bandwidth needed for network transmission. Finally, the performance comparison results of the lossless compression algorithm were given based on the hardware verification of FPGA. The results showed that the compression rate of the lossless compression algorithm could reach 45% to 13%.
Keywords: lossless compress;data prediction;industry camera
隨著工業技術的發展,千兆網工業相機因具有價格合理、布線方便、技術成熟等優勢,在工業現場應用較為廣泛。但是,隨著工業相機向高分辨率、高幀率等方向發展,千兆網的傳輸帶寬成為瓶頸。為了充分利用網絡的傳輸帶寬,實現圖像數據的低成本,快速無損壓縮變得至關重要。
目前,流行的無損壓縮算法LZ77和RLE等[1-3],需要對數據進行反復掃描,數據壓縮過程的延時較長,不能滿足工業領域的低延時需求。在預測算法中,大多是基于邊緣的相關性進行預測,例如,JPEG-LS和CALIC算法等[2,3],這類算法是基于整幅圖像進行預測。
為了提高傳輸效率,以太網工業相機的數據在傳輸圖像數據的過程中,通常會采用巨幀(Jumbo Packet)。數據的概率統計接近整幅圖像的概率統計信息。對封裝后的有效載荷進行無損壓縮處理,可以不影響或者盡可能減少對現有以太網工業相機的影響。在此基礎上,本文提出基于信息預測的單邊預測算法,并在FPGA上設計實現,測試數據壓縮性能。
1 無損壓縮算法原理分析
相機在拍攝過程中,鏡頭的低通濾波特性決定了圖像的邊緣存在一定的過渡。根據這種過渡特性,當前像素的數值可以利用相鄰像素的關系進行預測。
本文算法的核心思想為:首先根據相鄰像素的梯度變化預測當前的像素值,并與當前真實的像素值進行比較,從而獲得當前像素的最小殘差。每8×n個(n=1,2,3…)殘差數據統計一次殘差的最大比特數,并以該比特數作為每個像素的有效比特數,重新組合成8比特的數據,從而減少冗余的比特數,達到無損壓縮的目的。
1.1 像素預測算法原理分析
本文采用4像素預測法。GVSP圖像數據的前4個像素保持不變,從第5個像素開始,每個像素都要用當前像素之前的4個像素預測,預測算法為:假設當前像素X,之前的像素順序為A、B、C、D、X。預測過程為:首先計算當前像素之前的4個像素A、B、C、D之間的梯度變化情況,S_ba表示像素B相對像素A的數值增量,“+”表示像素B的亮度值高于像素A;“-”表示像素B的亮度值低于像素A。S_cb表示像素C相對像素B的數值增量;S_dc表示像素D相對像素C的數值增量。
當前數據,可以根據S_ba、S_cb和S_dc的值進行預測。如果S_ba、S_cb和S_dc梯度變化方向一致,當前像素值可以用[X'=(3D-B)/2]預測;如果S_ba與S_cb、S_dc梯度變化方向不一致,但S_cb和S_dc變化一致時,那么當前像素值可用[X'=2D-C]表示;其他情況下,可以用[X'=(A+B+C+D)/4]預測。
1.2 數據編碼
將預測得到的[X']與原始像素X相減,獲得預測圖像的殘差[?X=X-X']。
在編碼過程中,前4個像素直接作為編碼后的數據。從第四個數據[?X]開始,每8×n個數據作為一組進行編碼,其中n取值范圍為[1,16]。編碼過程中,首先掃描一組數據的最大位寬m,用3比特表示;每個像素分別取對應位寬的數據,拼接成8比特數據,作為編碼后的數據。編碼后的數據格式為:第一個字節的高3比特表示當前這一組數據的數據位寬,低5比特表示當前這一組數據的數據個數,后續的[m×n]個字節表示壓縮后的數據。
數據編碼后,每組數據增加8比特的開銷,但數據[?X]位寬大幅減少,數據每減少1個比特,那么編碼后的數據總量可以減少n個字節。
2 硬件驗證
2.1 FPGA硬件設計
考慮到硬件的資源消耗、工作頻率等問題,FPGA的實現如圖1所示。步驟如下:①接收GVSP報文,提取圖像數據;②提取到的圖像數據緩存4個數據,從第5個數據開始,計算當前的預測數據;③預測后的數據按照數據編碼算法進行編碼,為了保證在壓縮效率較低的數據報文區間不會丟失數據,數據位寬增加到16比特;④對編碼后的數據進行GVSP報文的重新打包,并發送到以太網絡上。
在工業相機的實現過程中,圖像數據被壓縮后,導致以太網報文的數據長度發生變化,為了使以太網的接收側能正常接收數據包,需要對以太網報文進行重新打包。用壓縮之后的數據長度替換原來報文的長度,并把原來的報文長度等信息作為部分有效數據填入數據包中,然后重新計算FCS。
2.2 性能比較
數據壓縮過程不涉及數據的緩存,以流水的形式進行,硬件的時序延時在幾百納秒左右。同樣的,在系統的接收解碼側,只需要緩存一個完整的報文,完成解碼即完成了數據的傳輸和接收過程;整個壓縮、解壓的數據處理過程僅增加一個數據報文解碼的延時。同時,由于數據壓縮后數據報文的長度變小,因此,數據傳輸時間的延時減小。整體上,基于以太網報文的數據壓縮技術對系統的延時影響較小。
經過測試,本文無損壓縮算法的壓縮效率在較大程度上取決于拍攝的圖片。圖像細節較豐富的圖片的壓縮率在45%左右;正常的機器視覺場景在視野清晰、亮度適中的情況下,最好的壓縮效率可以達到13%左右,完全達到了降低網絡帶寬的目的。
3 結語
本文提出的基于單邊預測的無損壓縮算法,在FPGA等硬件平臺上實現方便,資源消耗少,延時低。同時,數據預測算法的應用保證了數據的壓縮率處于一個合理水平,有效提供了網絡傳輸的帶寬利用率。
參考文獻:
[1]王孔華,李若仲,丁浩,等.LZW算法的優化及其在FPGA上的實現[J].空軍工程大學學報(自然科學版),2015(3):41-44.
[2]Lu H H,Chen J,Chen T S. Lossless Compression Method of High Dynamic Range and Resolution Image Based on CALIC for 2-Dimensional Gel Electrophoresis[C]// Information and Management Sciences——Processings of the Ninth International Conference on Information and Management Sciences.2010.
[3]Wu X, Memon N. Context-based, Adaptive, Lossless Image Coding[J]. IEEE Trans Commun,1997(4):437-444.