王宗苗
摘 要:本文提出了一種應(yīng)用于以太網(wǎng)工業(yè)相機(jī)的無損壓縮技術(shù),其通過對工業(yè)相機(jī)的以太網(wǎng)GVSP報文的圖像數(shù)據(jù)進(jìn)行數(shù)據(jù)預(yù)測,減少數(shù)據(jù)之間的相關(guān)性;通過減小數(shù)據(jù)位寬來減小冗余數(shù)據(jù)量,從而減少網(wǎng)絡(luò)傳輸所需要的帶寬。最后,結(jié)合FPGA的硬件驗證,給出了該無損壓縮算法的性能比較結(jié)果。結(jié)果表明,該無損壓縮算法壓縮率可以達(dá)到45%~13%。
關(guān)鍵詞:無損壓縮;數(shù)據(jù)預(yù)測;工業(yè)相機(jī)
中圖分類號:TP751 文獻(xiàn)標(biāo)識碼: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
隨著工業(yè)技術(shù)的發(fā)展,千兆網(wǎng)工業(yè)相機(jī)因具有價格合理、布線方便、技術(shù)成熟等優(yōu)勢,在工業(yè)現(xiàn)場應(yīng)用較為廣泛。但是,隨著工業(yè)相機(jī)向高分辨率、高幀率等方向發(fā)展,千兆網(wǎng)的傳輸帶寬成為瓶頸。為了充分利用網(wǎng)絡(luò)的傳輸帶寬,實現(xiàn)圖像數(shù)據(jù)的低成本,快速無損壓縮變得至關(guān)重要。
目前,流行的無損壓縮算法LZ77和RLE等[1-3],需要對數(shù)據(jù)進(jìn)行反復(fù)掃描,數(shù)據(jù)壓縮過程的延時較長,不能滿足工業(yè)領(lǐng)域的低延時需求。在預(yù)測算法中,大多是基于邊緣的相關(guān)性進(jìn)行預(yù)測,例如,JPEG-LS和CALIC算法等[2,3],這類算法是基于整幅圖像進(jìn)行預(yù)測。
為了提高傳輸效率,以太網(wǎng)工業(yè)相機(jī)的數(shù)據(jù)在傳輸圖像數(shù)據(jù)的過程中,通常會采用巨幀(Jumbo Packet)。數(shù)據(jù)的概率統(tǒng)計接近整幅圖像的概率統(tǒng)計信息。對封裝后的有效載荷進(jìn)行無損壓縮處理,可以不影響或者盡可能減少對現(xiàn)有以太網(wǎng)工業(yè)相機(jī)的影響。在此基礎(chǔ)上,本文提出基于信息預(yù)測的單邊預(yù)測算法,并在FPGA上設(shè)計實現(xiàn),測試數(shù)據(jù)壓縮性能。
1 無損壓縮算法原理分析
相機(jī)在拍攝過程中,鏡頭的低通濾波特性決定了圖像的邊緣存在一定的過渡。根據(jù)這種過渡特性,當(dāng)前像素的數(shù)值可以利用相鄰像素的關(guān)系進(jìn)行預(yù)測。
本文算法的核心思想為:首先根據(jù)相鄰像素的梯度變化預(yù)測當(dāng)前的像素值,并與當(dāng)前真實的像素值進(jìn)行比較,從而獲得當(dāng)前像素的最小殘差。每8×n個(n=1,2,3…)殘差數(shù)據(jù)統(tǒng)計一次殘差的最大比特數(shù),并以該比特數(shù)作為每個像素的有效比特數(shù),重新組合成8比特的數(shù)據(jù),從而減少冗余的比特數(shù),達(dá)到無損壓縮的目的。
1.1 像素預(yù)測算法原理分析
本文采用4像素預(yù)測法。GVSP圖像數(shù)據(jù)的前4個像素保持不變,從第5個像素開始,每個像素都要用當(dāng)前像素之前的4個像素預(yù)測,預(yù)測算法為:假設(shè)當(dāng)前像素X,之前的像素順序為A、B、C、D、X。預(yù)測過程為:首先計算當(dāng)前像素之前的4個像素A、B、C、D之間的梯度變化情況,S_ba表示像素B相對像素A的數(shù)值增量,“+”表示像素B的亮度值高于像素A;“-”表示像素B的亮度值低于像素A。S_cb表示像素C相對像素B的數(shù)值增量;S_dc表示像素D相對像素C的數(shù)值增量。
當(dāng)前數(shù)據(jù),可以根據(jù)S_ba、S_cb和S_dc的值進(jìn)行預(yù)測。如果S_ba、S_cb和S_dc梯度變化方向一致,當(dāng)前像素值可以用[X'=(3D-B)/2]預(yù)測;如果S_ba與S_cb、S_dc梯度變化方向不一致,但S_cb和S_dc變化一致時,那么當(dāng)前像素值可用[X'=2D-C]表示;其他情況下,可以用[X'=(A+B+C+D)/4]預(yù)測。
1.2 數(shù)據(jù)編碼
將預(yù)測得到的[X']與原始像素X相減,獲得預(yù)測圖像的殘差[?X=X-X']。
在編碼過程中,前4個像素直接作為編碼后的數(shù)據(jù)。從第四個數(shù)據(jù)[?X]開始,每8×n個數(shù)據(jù)作為一組進(jìn)行編碼,其中n取值范圍為[1,16]。編碼過程中,首先掃描一組數(shù)據(jù)的最大位寬m,用3比特表示;每個像素分別取對應(yīng)位寬的數(shù)據(jù),拼接成8比特數(shù)據(jù),作為編碼后的數(shù)據(jù)。編碼后的數(shù)據(jù)格式為:第一個字節(jié)的高3比特表示當(dāng)前這一組數(shù)據(jù)的數(shù)據(jù)位寬,低5比特表示當(dāng)前這一組數(shù)據(jù)的數(shù)據(jù)個數(shù),后續(xù)的[m×n]個字節(jié)表示壓縮后的數(shù)據(jù)。
數(shù)據(jù)編碼后,每組數(shù)據(jù)增加8比特的開銷,但數(shù)據(jù)[?X]位寬大幅減少,數(shù)據(jù)每減少1個比特,那么編碼后的數(shù)據(jù)總量可以減少n個字節(jié)。
2 硬件驗證
2.1 FPGA硬件設(shè)計
考慮到硬件的資源消耗、工作頻率等問題,F(xiàn)PGA的實現(xiàn)如圖1所示。步驟如下:①接收GVSP報文,提取圖像數(shù)據(jù);②提取到的圖像數(shù)據(jù)緩存4個數(shù)據(jù),從第5個數(shù)據(jù)開始,計算當(dāng)前的預(yù)測數(shù)據(jù);③預(yù)測后的數(shù)據(jù)按照數(shù)據(jù)編碼算法進(jìn)行編碼,為了保證在壓縮效率較低的數(shù)據(jù)報文區(qū)間不會丟失數(shù)據(jù),數(shù)據(jù)位寬增加到16比特;④對編碼后的數(shù)據(jù)進(jìn)行GVSP報文的重新打包,并發(fā)送到以太網(wǎng)絡(luò)上。
在工業(yè)相機(jī)的實現(xiàn)過程中,圖像數(shù)據(jù)被壓縮后,導(dǎo)致以太網(wǎng)報文的數(shù)據(jù)長度發(fā)生變化,為了使以太網(wǎng)的接收側(cè)能正常接收數(shù)據(jù)包,需要對以太網(wǎng)報文進(jìn)行重新打包。用壓縮之后的數(shù)據(jù)長度替換原來報文的長度,并把原來的報文長度等信息作為部分有效數(shù)據(jù)填入數(shù)據(jù)包中,然后重新計算FCS。
2.2 性能比較
數(shù)據(jù)壓縮過程不涉及數(shù)據(jù)的緩存,以流水的形式進(jìn)行,硬件的時序延時在幾百納秒左右。同樣的,在系統(tǒng)的接收解碼側(cè),只需要緩存一個完整的報文,完成解碼即完成了數(shù)據(jù)的傳輸和接收過程;整個壓縮、解壓的數(shù)據(jù)處理過程僅增加一個數(shù)據(jù)報文解碼的延時。同時,由于數(shù)據(jù)壓縮后數(shù)據(jù)報文的長度變小,因此,數(shù)據(jù)傳輸時間的延時減小。整體上,基于以太網(wǎng)報文的數(shù)據(jù)壓縮技術(shù)對系統(tǒng)的延時影響較小。
經(jīng)過測試,本文無損壓縮算法的壓縮效率在較大程度上取決于拍攝的圖片。圖像細(xì)節(jié)較豐富的圖片的壓縮率在45%左右;正常的機(jī)器視覺場景在視野清晰、亮度適中的情況下,最好的壓縮效率可以達(dá)到13%左右,完全達(dá)到了降低網(wǎng)絡(luò)帶寬的目的。
3 結(jié)語
本文提出的基于單邊預(yù)測的無損壓縮算法,在FPGA等硬件平臺上實現(xiàn)方便,資源消耗少,延時低。同時,數(shù)據(jù)預(yù)測算法的應(yīng)用保證了數(shù)據(jù)的壓縮率處于一個合理水平,有效提供了網(wǎng)絡(luò)傳輸?shù)膸捓寐省?/p>
參考文獻(xiàn):
[1]王孔華,李若仲,丁浩,等.LZW算法的優(yōu)化及其在FPGA上的實現(xiàn)[J].空軍工程大學(xué)學(xué)報(自然科學(xué)版),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.