• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于FPGA和ARM的紅外圖像實時顯示和采集方法

    2013-10-25 05:26:08隋修寶顧國華
    激光與紅外 2013年11期
    關(guān)鍵詞:線程校驗圖像處理

    毛 偉,隋修寶,陳 錢,顧國華

    (南京理工大學電光學院404系,江蘇南京210094)

    1 引言

    紅外圖像在軍事和民用領(lǐng)域都有廣泛的應用[1],隨著科技的進步發(fā)展,紅外圖像的應用和處理要求越來越高,很多時候需要在不同平臺上對紅外圖像進行傳輸、處理和顯示。

    FPGA(Field-Programmable Gate Array),即現(xiàn)場可編程門陣列,具有靈活性強,能夠完成編程、修改和再編程操作的優(yōu)點,同時它的開發(fā)周期短、風險小,因此被廣泛的應用于數(shù)據(jù)處理和傳輸中。以ARM為核心的嵌入式系統(tǒng)具有設計方便靈活、功耗低、可裁剪和性價比高的優(yōu)點,它長于事物管理,常被用來做界面及相關(guān)應用程序,因其在控制方面的優(yōu)勢,ARM被廣泛地應用于各種終端設備的開發(fā)[2],但是由于主頻低等因素的限制,在面對大量數(shù)據(jù)處理例如實時圖像處理的時候,ARM總是顯得難以完全達到要求,例如文獻[3]所處理的紅外視頻處理就無法完全實時顯示,同時還存在300ms的延時[3],文獻[4]中使用重繪函數(shù) Paint-Event()[4]函數(shù)實現(xiàn)圖像顯示的方法效率也不高等。這些缺點嚴重限制了它們在紅外圖像處理上的應用。

    為克服上述缺點,本文以FriendlyArm公司的Tiny210ARM開發(fā)板為基礎,采用所設計的方法實現(xiàn)了將大小為320×240的紅外圖像從FPGA傳輸?shù)紸RM開發(fā)板上,并實現(xiàn)了紅外圖像的實時處理(插值、偽彩色等)、顯示和采集,提升了ARM在處理紅外圖像上的效率。本文主要分為三部分,第一部分介紹了圖像數(shù)據(jù)從FPGA到ARM的傳輸,而全文重點在于第二、三部分介紹的圖像接收、處理和顯示,以及整個實驗驗證的結(jié)果。

    2 網(wǎng)絡圖像數(shù)據(jù)傳輸

    2.1 所用以太網(wǎng)協(xié)議及幀格式簡介

    開放系統(tǒng)互聯(lián)(OSI)模型將網(wǎng)絡通信工作分為了物理層、數(shù)據(jù)鏈路層、網(wǎng)絡層、傳輸層、會話層、表示層和應用層。本設計中主要涉及是前四層,物理層PHY使用的是Marvell公司的88E1111網(wǎng)絡傳輸芯片;數(shù)據(jù)鏈路層使用的是Ethernet II幀封裝包;網(wǎng)絡層采用的是IP協(xié)議;傳輸層則是使用的是UDP(User Datagram Protocol)用戶數(shù)據(jù)報協(xié)議。數(shù)據(jù)鏈路層的作用是完成圖像數(shù)據(jù)的打包發(fā)送,是本設計的關(guān)鍵部分之一。

    圖1為Ethernet II幀格式,按順序依次為前導碼(Preamble),幀起始界定符(SFD),接收端的MAC地址DA,發(fā)送端的MAC地址SA,類型Type,發(fā)送的數(shù)據(jù) Data,幀校驗序列(FCS)[5]。

    圖1 Ethernet II幀格式Fig.1 Ethernet II frame format

    2.2 數(shù)據(jù)封裝的實現(xiàn)

    數(shù)據(jù)鏈路層由兩部分組成:上層的邏輯鏈路控制層(LLC)和下層的介質(zhì)訪問控制層(MAC)。MAC主要負責控制與連接物理層(PHY)的物理介質(zhì),將要發(fā)送的數(shù)據(jù)發(fā)送到PHY。由于當前大部分的ARM開發(fā)板所帶的網(wǎng)卡都只能支持100Mbps,而我們所傳輸?shù)氖?20×240面陣的紅外圖像,百兆網(wǎng)絡的速度已經(jīng)足夠,故本論文僅討論百兆網(wǎng)的網(wǎng)絡傳輸,設計采用易于實現(xiàn)的RGM II接口,對應工作頻率為25 MHz。

    FPGA實現(xiàn)的MAC邏輯功能結(jié)構(gòu)如圖2所示,采集的圖像數(shù)據(jù)經(jīng)過量化處理后,首先進入SRAM,通過乒乓存儲的方式緩存起來,然后再將圖像數(shù)據(jù)讀出來進行幀封裝,為便于接收端更好的恢復圖像數(shù)據(jù),本設計在每一行數(shù)據(jù)之前加上了行號。圖像數(shù)據(jù)加上了事先寫在ROM里面的UDP包頭、IP包頭和Ethernet II幀頭數(shù)據(jù)后被送入了循環(huán)冗余校驗碼(CRC)計算模塊,CRC模塊計算出每一幀的FCS值后再送入發(fā)送模塊,與前面的幀頭數(shù)據(jù)和圖像數(shù)據(jù)連接在一起,送入PHY層發(fā)送出去。

    圖2 MAC邏輯功能結(jié)構(gòu)Fig.2 The MAC logic functions structure

    2.3 校驗和的計算

    在整個Ethernet II幀的頭部和尾部,有三個校驗和必須正確填充,否則就無法正確的傳輸。

    IP包頭的校驗和是只計算IP首部的校驗和,其計算方法是:首先把校驗字段置為0,然后對首部中每個16位進行二進制反碼求和,然后把結(jié)果存放檢驗的字段中。接收方在收到一個IP數(shù)據(jù)報后,同樣對首部中每個16位進行二進制反碼的求和,如果傳輸過程沒有出錯,計算結(jié)果應為全1,否則認為出錯,將該數(shù)據(jù)報丟棄。

    UDP的校驗和是將首部和數(shù)據(jù)部分一起都檢驗,計算的時候需要引入偽首部,過程較為繁瑣,但是這部分不是必須的,如果不用,只需將UDP的校驗和字段的16位全部填入0即可。

    FCS是在 CRC計算的基礎上得到的,IEEE802.3規(guī)定參與FCS計算的數(shù)據(jù)是除了Ethernet II幀的前導碼和幀起始界定符的其他數(shù)據(jù)。在本設計中,用的CRC_32生成多項式為:G(x)=X32+X26+X23+X22+X16+X12+X11+X10+X8+X7+X5+X4+X2+X+1,串行CRC編碼器原理如圖3所示[6]。

    由于以太網(wǎng)數(shù)據(jù)是低比特先傳,而CRC核心電路是高比特先進,故在進行CRC計算之前,還要先對輸入數(shù)據(jù)進行倒序,然后再傳入CRC計算模塊。對于CRC模塊的輸出數(shù)據(jù),還要進行取反和與之前相同的位序變化操作后,才能得出最終的正確的 FCS[7]。

    圖3 CRC串行編碼器Fig.3 CRC serial encoder

    最終,通過Signal Tap II可以得到的數(shù)據(jù)報發(fā)送波形圖,如圖4、圖5所示。圖5是圖4的局部放大圖,其中,TX_EN為發(fā)送使能信號,直接送給PHY的TX_EN端口,fifoout[3:0]為發(fā)送數(shù)據(jù),送給PHY的TXD[3:0]端口,25MOUT為發(fā)送時鐘,送給PHY的GTX_CLK端口。

    圖5 數(shù)據(jù)發(fā)送波形圖2Fig.5 Data transmission waveform 2

    3 圖像數(shù)據(jù)接收、處理和顯示

    3.1 接收平臺和軟件簡介

    本設計所使用的開發(fā)軟件是Qt Creator,它是一款用于Qt開發(fā)的輕量級跨平臺集成開發(fā)環(huán)境。它既可以開發(fā)GUI(Graphical User Interface)程式,也可用于開發(fā)非GUI程式,比如控制臺工具和服務器。Qt可以開發(fā)基于Linux上的圖形應用程序,這些圖形應用程序可以順利地移植到其他的操作系統(tǒng)上,也可以移植到嵌入式操作系統(tǒng)。

    Tiny210是FriendlyArm公司研制和發(fā)售的一款高性能Cortex A8核心板,配備有一個分辨率為800×480的7寸LCD屏,它采用三星公司的S5PV210為主處理器,運行主頻可達1GHZ,該處理器出色的性能使得Tiny210非常適合廣告多媒體終端、智能家居、高端監(jiān)控系統(tǒng)等設備。

    3.2 UDP圖像數(shù)據(jù)的接收、顯示和采集

    當ARM系統(tǒng)收到了網(wǎng)絡圖像數(shù)據(jù)的時候,數(shù)據(jù)的接收處理速度極大地影響了圖像的顯示效果,在早期的ARM系統(tǒng)上,由于ARM芯片的主頻不夠,處理速度較慢,在面對大量的數(shù)據(jù)處理的時候,總顯得力不從心。隨著ARM芯片性能的提升,其運行速度越來越快,功能也越來越健全,使得紅外圖像的處理能夠在ARM上得以實施。但是,即使如此,要想在ARM上做實時圖像顯示仍然不是那么容易。很多時候,并不是ARM的處理速度不夠,而是利用效率太低,當我們要處理的圖像稍大的時候,ARM就不能做到實時。

    FrameBuffer是一種驅(qū)動程序接口。這個設備的主要作用是供用戶態(tài)進程實現(xiàn)直接寫屏操作。該接口的工作機制是模仿顯卡的功能,它將顯卡硬件結(jié)構(gòu)抽象掉,同時能夠通過Framebuffer接口的讀寫直接對顯存進行操作。我們可以將Framebuffer看成是顯示內(nèi)存的一個映像,將它映射到進程的地址空間之后,就可以直接進行讀寫操作,而寫操作可以立即反應在屏幕上,我們將圖像數(shù)據(jù)寫進映射的內(nèi)存中就能立即在屏幕上顯示對應的圖像。

    多線程程序作為一種多任務、并發(fā)的工作方式,能夠提高應用程序響應速度。這對圖形界面的程序的意義尤其重要,當程序在進行一個操作耗時很長的任務時,整個系統(tǒng)在等待這個操作而無法響應鼠標、鍵盤、菜單等的操作,而我們使用多線程技術(shù),將耗時長的操作置于一個新的線程,就可以避免這種情況,提高程序的效率。

    因此,本文根據(jù)ARM在圖像處理上的這些缺點,結(jié)合FrameBuffer和多線程的特點提出了一種新的圖像接收處理和顯示方式,其主要思想就是:通過增開GUI主線程以外的子線程來專門負責就收和處理圖像數(shù)據(jù),再通過FrameBuffer接口直接實現(xiàn)對液晶屏的寫屏,將處理后的圖像數(shù)據(jù)直接顯示出來,這樣在圖像實時顯示的問題上不用通過費時的Qt圖像處理類來實現(xiàn),使圖像的顯示和處理分開,大大的提高了顯示的效率,能夠很好的實現(xiàn)圖像的實時顯示。另一方面,GUI主線程則可以通過外接的中斷按鍵很好的實現(xiàn)對圖像顯示的控制,例如圖像保存、回放、凍結(jié)、參數(shù)修改和對前端的FPGA圖像處理設備的控制等。具體實施過程如下。

    在整個系統(tǒng)的前端,紅外探測器所采集的紅外圖像數(shù)據(jù)每一個像素的灰度級都是被量化為14位的,為方便傳輸,在打包傳輸?shù)臅r候在高位加零擴展為16位,每兩行一個數(shù)據(jù)包,并且在數(shù)據(jù)包開頭加上了每個包中第一行數(shù)據(jù)的行號,所以由FPGA發(fā)送過來的每一個UDP數(shù)據(jù)報的數(shù)據(jù)長度都是1282((320×2+1)×2)字節(jié)。用Qt進行UDP數(shù)據(jù)報的收發(fā)需要用到 QUdpSocket類,它繼承自 QAbstractSocket[8]。這里的 Socket就是所謂的“套接字”,它是不同主機之間進行通信的端點,通過它就能實現(xiàn)網(wǎng)絡上兩臺主機之間的雙向通信。

    Qt開辟子線程需要在所建的工程(ProcessImage.pro)中添加一個新的C++類,它的名字可隨意(實驗中命名為“UdpThread”),但是其基類必須是“QThread”且繼承于“QObject”,然后再進入udpthread.h和udpthread.cpp進行編程操作,重新實現(xiàn)UdpThread::run()函數(shù),再在主線程中添加“UdpThread”類的對象“thread”,調(diào)用 thread.start()函數(shù)來啟動子線程,run()函數(shù)其部分代碼如下:

    子線程的工作流程圖如圖6所示,子線程來的主要任務就是監(jiān)聽接收網(wǎng)絡端口的數(shù)據(jù),按照主線程所給的指令對圖像數(shù)據(jù)進行處理和顯示。

    圖6 圖像數(shù)據(jù)接收顯示流程圖Fig.6 Receiving and display flowchart of image data

    主線程的主要工作是通過參數(shù)的修改和按鍵的作用對子線程工作進行控制,包括圖像的處理、顯示和保存。在我們需要看到目標的灰度圖像或者偽彩色圖像時,我們可以通過按鍵控制子線程改變圖像處理方式,顯示我們想看到的效果,而當我們想保存某一幀圖像時,我們可以凍結(jié)圖像的實時顯示,并將當前緩存的圖像以jpeg或者bmp格式存儲至SD卡指定的文件夾,以供其他的應用。具體的實施方式如下:

    在GUI主線程的構(gòu)造函數(shù)中的部分代碼如下:

    本設計使用的ARM系統(tǒng)板有八個按鍵:K1-K8,打開“dev/buttons”就能獲取每個按鍵的狀態(tài),即每次從它獲取八個按鍵對應的八個字節(jié),每個字節(jié)的最低位為1時,表示按鍵被按下,這樣根據(jù)不同的按鍵被按下,程序可以做出不同的動作。ProcessImage::buttonclicked()函數(shù)部分代碼如下:

    memset(buffer,0,sizeof buffer);//初始化按鍵當前狀態(tài)緩存

    所以,我們想知道第i個按鍵是否被按下時,只需要判斷isOn[i]是不是為1即可,編程時我們設定某個按鍵被按下后就改變響應的參數(shù)或發(fā)出指令,控制整個系統(tǒng)做出對應的動作。

    在我們需要保存圖像時,直接調(diào)用保存函數(shù)ProcessImage::Savepic()來完成圖像的存儲,其部分代碼如下:

    這樣就能夠?qū)⑽覀冃枰杉膱D像存儲到SD卡中,同時不會影響系統(tǒng)對紅外圖像的實時顯示。主線程和子線程各司其職,相互配合的完成了紅外圖像的實時顯示功能和圖像采集功能,大大的提升了ARM的應用效率。

    4 實驗結(jié)果驗證

    圖7所示是用抓包軟件Wireshark所檢測到的前端FPGA板所發(fā)送的紅外圖像UDP數(shù)據(jù)包速度。根據(jù)設計,所傳圖像的大小為320×240,幀頻為25FPS,每兩行一個數(shù)據(jù)包,故理論傳輸速率應為120×25=3000 Packets/s,故與圖中顯示的速率符合。整個系統(tǒng)的效果圖如圖8所示,由圖可以看出,這個系統(tǒng)的總體相對較小,在結(jié)合合適的結(jié)構(gòu)固定之后能夠很方便的移動。圖9所示為采用文獻[4]所使用的圖像重繪函數(shù)PaintEvent()實現(xiàn)圖像的顯示后的效果,該圖大小為640×480,由于該函數(shù)在處理圖像時效率不高,每幀圖像處理不及時,在目標晃動時可以明顯看出圖像出現(xiàn)變形,同時有延時和丟幀現(xiàn)象的存在。而在同樣的ARM系統(tǒng)上使用本設計的方法得到的紅外圖像如圖10、11所示,這些圖像同樣是640×480,但是由這些實驗結(jié)果圖像可以看出,本設計完全可以實現(xiàn)紅外圖像的實時顯示和圖像保存且效果良好,沒有出現(xiàn)變形、失真和丟幀的現(xiàn)象,這充分的說明了本設計技術(shù)的優(yōu)異性,同時整個設計外形小巧,移動方便,能耗低,在結(jié)合蓄電池等設備的輔助下,可在很多復雜的環(huán)境下使用。

    圖7 數(shù)據(jù)包發(fā)送速率Fig.7 Packet transmission rate

    圖8 系統(tǒng)結(jié)構(gòu)圖Fig.8 System structure

    圖9 失真圖像Fig.9 Distorted image

    圖10 本設計顯示的灰度圖像Fig.10 The gray image displayed in this design

    圖11 本設計顯示的彩色圖像Fig.11 The color image displayed in this design

    5 結(jié)論

    現(xiàn)今,紅外圖像的處理和應用范圍越來越廣,要求也越來越多,本設計通過采用結(jié)合Qt多線程編程和FrmageBuffer直接寫屏的方式,在FPGA和ARM系統(tǒng)上高效的實現(xiàn)了紅外圖像的實時傳輸、顯示、處理和采集,效果良好,且方法簡便,技術(shù)完全可行,還能夠在此基礎上對紅外圖像進行進一步的開發(fā)和應用,同時整個系統(tǒng)體積較小,移動方便靈活,體現(xiàn)出了ARM和FPGA的結(jié)合在紅外圖像應用開發(fā)上的能力和優(yōu)勢,拓寬了紅外圖像的應用范圍,具有一定的應用前景。

    [1] Liu Hui,Zhao Wenjie,Wu wei.The military application of infrared imaging technology[J].Modern Science and Technology,2010,9(2):80 -82.(in Chinese)劉輝,趙文杰,吳畏.紅外成像技術(shù)的軍事應用[J].現(xiàn)代科技,2010,9(2):80 -82.

    [2] Wu Hua,Xie Liying,Xu Zeyu.Design and implementation of thermal infrared camera based on ARM9[J].Computer Engineering,2010,36(16):234 -236.(in Chinese)吳華,謝禮瑩,徐澤宇.基于ARM9的紅外熱像儀設計與實現(xiàn)[J].計算機工程,2010,36(16):234 -236.

    [3] Li Ling,Pei Hailong.Design of infrared video processing system based on ARM[J].Video Engineering,2011,23(35):157 -160.(in Chinese)李玲,裴海龍.基于ARM的紅外視頻處理系統(tǒng)設計[J].電視技術(shù),2011,23(35):157 -160.

    [4] Shi Feng.Research of infrared image processing technology based on linux[D].Beijing:North China University of Technology,2009.(in Chinese)史峰.基于Linux的紅外圖像處理技術(shù)研究[D].北京:北方工業(yè)大學,2009.

    [5] Chen Zhe,Gu Guohua.Data transmission of IR thermal imager based on gigabit ethernet[J].Laser & Infrared,2012,1(42):41 -44.(in Chinese)陳喆,顧國華.基于千兆以太網(wǎng)的紅外熱像儀數(shù)據(jù)傳輸[J].激光與紅外,2012,1(42):41 -44.

    [6] Liu Zhao,Su Li,Jin Depeng,et al.The parallel CRC codec design in the 10G ethernet system[J].Application of Electronic Technique,2004,30(4):47 - 50.(in Chinese)劉昭,蘇厲,金德鵬,等.10G以太網(wǎng)系統(tǒng)中的并行CRC編解碼器的設計[J].電子技術(shù)應用,2004,30(4):47-50.

    [7] Tan Hua,Wei Lin,Tian Yijun.An achievement on FPGA of CRC -16 encoder with 32 bits parallel data[J].Journal of Hechi University,2008,2(28):74 - 79.(in Chinese)譚華,韋林,田宜君.32位并行數(shù)據(jù)的CRC-16編碼器的 FPGA 實現(xiàn)[J].河池學院學報,2008,2(28):74-79.

    [8] Huo Yafei.Qt creator quick start[M].Beijing:Beihang University Press,2012.(in Chinese)霍亞飛.Qt Creator快速入門[M].北京:北京航空航天大學出版社,2012.

    猜你喜歡
    線程校驗圖像處理
    機器學習在圖像處理中的應用
    電子制作(2018年18期)2018-11-14 01:48:20
    爐溫均勻性校驗在鑄鍛企業(yè)的應用
    模糊圖像處理,刑事偵查利器
    圖像處理技術(shù)的實戰(zhàn)應用
    淺談linux多線程協(xié)作
    大型電動機高阻抗差動保護穩(wěn)定校驗研究
    電測與儀表(2015年1期)2015-04-09 12:03:02
    基于加窗插值FFT的PMU校驗方法
    鍋爐安全閥在線校驗不確定度評定
    Photo Shop通道在圖像處理中的應用
    河南科技(2014年1期)2014-02-27 14:04:06
    Linux線程實現(xiàn)技術(shù)研究
    商南县| 蓬安县| 故城县| 南乐县| 梓潼县| 略阳县| 博湖县| 延安市| 丰宁| 恭城| 麦盖提县| 曲沃县| 东山县| 深州市| 顺平县| 巴林右旗| 深水埗区| 黄龙县| 德安县| 顺昌县| 霍林郭勒市| 东宁县| 怀柔区| 三都| 修文县| 东明县| 正镶白旗| 华阴市| 云龙县| 方城县| 敦化市| 乐至县| 肇东市| 大关县| 金寨县| 靖远县| 阜宁县| 天水市| 邢台县| 孝感市| 克拉玛依市|