田亞平,王 鑫 ,孫長城
(1.江蘇師范大學(xué)科文學(xué)院 工學(xué)院,江蘇 徐州 221132;2.江蘇師范大學(xué) 物理與電子工程學(xué)院,江蘇 徐州 221116)
近年來,非接觸式目標(biāo)物尺寸的檢測在許多領(lǐng)域發(fā)揮著越來越重要的作用,如服裝行業(yè)、智能駕駛、體育等領(lǐng)域[1]。在安檢監(jiān)控領(lǐng)域也有著廣泛的應(yīng)用,在機場、高鐵等重要安檢口處,可以測量出監(jiān)控畫面內(nèi)的人體身高或物體長度,及時獲得所需信息,做出相應(yīng)對策[2]。在具體應(yīng)用實踐的解決方案里,最為常見的是基于機器視覺非接觸式目標(biāo)物尺寸測量,如Kawasue等[3]設(shè)計了一種非接觸式機器視覺檢測微型機器人,實現(xiàn)了在復(fù)雜管道內(nèi)部環(huán)境下尺寸測量;馮鍇等[4]根據(jù)機器視覺原理,通過目標(biāo)物的圖像的像素邊緣特征提取分析,實現(xiàn)高精度、自動化、非接觸式的金屬材質(zhì)手機殼體尺寸測量。但是隨著工業(yè)網(wǎng)絡(luò)技術(shù)的發(fā)展,機器視覺檢測網(wǎng)絡(luò)化的實際應(yīng)用推廣也迫在眉睫,上述機器視覺檢測方案缺乏網(wǎng)絡(luò)化的技術(shù)手段,但是比如攝像頭這類的低成本的機器視覺電子設(shè)備也有了計入互聯(lián)網(wǎng)的需求,考慮到以太網(wǎng)有著易與網(wǎng)絡(luò)連接、通信速率高且成本低等特性優(yōu)點[5],因此利用以太網(wǎng)把2個攝像節(jié)點接入千兆以太網(wǎng)交換機,再連接終端上位機,這樣在視頻監(jiān)控這種常見場景中直接實現(xiàn)快速、低成本地測量出所需目標(biāo)物的尺寸。
測量系統(tǒng)主要由攝像節(jié)點、網(wǎng)絡(luò)交換機、終端節(jié)點三部分組成,相互之間通過以太網(wǎng)進(jìn)行網(wǎng)絡(luò)互聯(lián)進(jìn)行數(shù)據(jù)傳輸,總體結(jié)構(gòu)如圖1所示。由攝像節(jié)點拍攝記錄目標(biāo)物的運動軌跡,兩個攝像節(jié)點成直角放置,分別記錄目標(biāo)物運動軌跡的X軸畫面與Y軸畫面,并通過與OV7725攝像頭[7]相連接的STM32F103開發(fā)板結(jié)合透傳模塊將目標(biāo)物信息與實時圖像傳輸?shù)骄W(wǎng)絡(luò)交換機上。網(wǎng)絡(luò)交換機再將所接收到的數(shù)據(jù)發(fā)送給終端節(jié)點,在終端節(jié)點上顯示目標(biāo)物畫面,并通過終端節(jié)點上搭載的算法對接收到的實時軌跡數(shù)據(jù)進(jìn)行分析處理,最后將結(jié)果顯示在LCD屏幕上,從而實現(xiàn)目標(biāo)物的實時監(jiān)控與高度的采集。
圖1 系統(tǒng)總體結(jié)構(gòu)
基于互聯(lián)網(wǎng)攝像測量系統(tǒng)由攝像模塊、以太網(wǎng)傳輸模塊、終端處理模塊組成。圖2為系統(tǒng)工作流程圖,由攝像模塊采集目標(biāo)物圖像信息,并通過以太網(wǎng)傳輸模塊將兩個攝像節(jié)點的數(shù)據(jù)傳輸至終端處理模塊,終端的STM32F103整合分析接收到的數(shù)據(jù)[8],將攝像模塊拍攝到的圖像信息顯示在LCD上,并分析計算得出目標(biāo)物高度數(shù)據(jù),圖3為系統(tǒng)實物圖。
圖2 系統(tǒng)工作流程圖
本系統(tǒng)在攝像頭的選擇上對比了OV7670和OV7725兩種型號的圖像傳感器。OV7670具有體積小、工作電壓低等優(yōu)點,但是視場角只有23°,為了實現(xiàn)測量需要把攝像頭抬高,這樣影響模型的穩(wěn)定,同時較小的視場角將會使得系統(tǒng)整體最大測量值受到影響。此外,OV7670不能進(jìn)行硬件二值化處理攝像頭采集的圖像。相比于OV7670型攝像頭,OV7725擁有78°的視場角,同時能夠硬件二值化處理采集的圖像,其傳輸速率達(dá)到了60 fps,能夠很好地實時更新顯示圖像信息。綜合考慮,OV7725性價比高,且完全能夠滿足本系統(tǒng)對于圖像信息獲取、處理、傳輸?shù)男枨?,因此,選用OV7725作為本系統(tǒng)的攝像頭。STM32開發(fā)板帶有OLED/攝像頭接口,OV7725能夠通過該接口與開發(fā)板相連(見圖4)進(jìn)行相應(yīng)的數(shù)據(jù)傳輸和處理。
圖4 OV7725與終端連接圖
圖5為開發(fā)板所搭載的OLED/攝像頭接口的原理圖。P4是接口可以用來連接ALIENTEK OLED模塊或者ALIENTEK攝像頭模塊。攝像頭模塊,需要用到全部引腳。其中,OV_SCL,OV_SDA,F(xiàn)IFO_WRST,F(xiàn)IFO_RRST,F(xiàn)IFO_OE 這5個端口分別連接在MCU 的PD3,PG13,PD6,PG14,PG15上面,OV_D0~OV_D7 則連接在PC0~7上面(放在連續(xù)的IO上,可以提高讀寫效率),F(xiàn)IFO_RCLK,F(xiàn)IFO_WEN,OV_VSYNC這3個端口是分別連接在MCU的 PB4/PB3/PA8上面。其中PB3和PB4又是JTAG的JTRST/JTDO信號,在使用OV7725的時候,無須使用JTAG仿真,要選擇SWD模式。
圖5 OLED/攝像頭模塊接口
本系統(tǒng)選用ATK-ENC28J60模塊作為透傳模塊[8],輔助實現(xiàn)兩個攝像節(jié)點和終端之間的以太網(wǎng)通信。該模塊帶有10/100 Mbps自適應(yīng)以太網(wǎng)接口,串口波特率可設(shè)置2400~921 600 bps,它支持 TCP/UDP協(xié)議,聯(lián)網(wǎng)狀態(tài)可以支持云服務(wù)器(如:原子云)、支持 TCP/UDP 數(shù)據(jù)透傳,支持上位機/AT 指令配置參數(shù),可以廣泛用于電力行業(yè)、工業(yè)控制、水利行業(yè)、環(huán)保行業(yè)、農(nóng)業(yè)應(yīng)用、集抄系統(tǒng)和智能家居等諸多領(lǐng)域,并且與系統(tǒng)選擇的正點原子開發(fā)板的ATK MODULE接口相適應(yīng),能夠滿足系統(tǒng)網(wǎng)絡(luò)互聯(lián)的需求。其與開發(fā)板連接如圖6所示。
圖6 以太網(wǎng)傳輸模塊
本系統(tǒng)在核心單片機上選用是正點原子精英STM32F103開發(fā)板。板子尺寸11.5 cm×11.7 cm,接口豐富,布局緊湊,板子提供數(shù)十種標(biāo)準(zhǔn)接口,可以方便地進(jìn)行各種外設(shè)的實驗和開發(fā)。此外該單片機帶有配套的LCD顯示屏串口服務(wù)器,能夠滿足系統(tǒng)以太網(wǎng)網(wǎng)絡(luò)互聯(lián)的需求[9]。在終端處理模塊上,開發(fā)板只需外接一個LCD顯示屏和ATK-ENC28J60模塊,通過一根百兆網(wǎng)線與網(wǎng)絡(luò)交換機相連接,網(wǎng)絡(luò)交換機將接收到的兩個攝像節(jié)點傳來的圖像信號經(jīng)過網(wǎng)線以及透傳模塊傳輸至開發(fā)板,開發(fā)板接收到信號后通過編寫的算法程序進(jìn)行分析處理,將兩攝像節(jié)點拍攝到的圖像數(shù)據(jù)實時顯示在LCD屏幕上,并同時顯示所測得高度數(shù)據(jù)。
攝像節(jié)點(見圖7)主要涉及的程序設(shè)計為OV7725攝像模塊的顯示設(shè)置以及捕捉框選目標(biāo)物。為使顯示視頻符合LCD屏的大小、圖像清晰度高,通過反復(fù)實驗選用了符合的OV7725顯示窗口大小、分辨率、對比度等。并在主程序根據(jù)合理的算力對圖像進(jìn)行更新,使視頻能夠?qū)崟r顯示[10]。同時,通過捕捉特征,在STM32F103單片機中處理采集到的圖像信息,并通過LCD_DrawRectangle函數(shù)在LCD液晶屏中框選目標(biāo)物[11],總體程序流程圖如圖8所示。
圖7 攝像節(jié)點實物圖
圖8 攝像模塊程序流程圖
在此模塊中,首先利用OV7725_Init函數(shù)來檢測OV7725是否成功與單片機相連,判斷其工作狀態(tài)的穩(wěn)定性。當(dāng)OV7725處于正常工作狀態(tài)時,再調(diào)用OV7725_Window_Set函數(shù)對其輸出圖像的高度與寬度進(jìn)行設(shè)置,且選擇模式輸出為QVGA模式,這樣便可獲得較廣的視野范圍。調(diào)用Light_Mode,Color_Saturation,Brightness等函數(shù)對其白平衡、色度、亮度等基礎(chǔ)參數(shù)進(jìn)行設(shè)置。若OV7725與單片機未成功相連,則單片機將發(fā)出警報,提示操作人員進(jìn)行檢查。當(dāng)系統(tǒng)工作時,攝像節(jié)點將時刻檢測終端設(shè)備發(fā)來的指令,利用usart3_getRxData函數(shù)來接受終端設(shè)備的字符串指令存于數(shù)組g_usart3_rx_buf中,調(diào)用sscanf(g_usart3_rx_buf,“%d”,&measure)函數(shù)使字符串指令轉(zhuǎn)化為整型并賦值于標(biāo)志量measure,利用標(biāo)志量measure的值來判斷是否執(zhí)行測量功能。當(dāng)測量完成后,利用Send_data函數(shù)將測量結(jié)果發(fā)送給終端設(shè)備,為了區(qū)別節(jié)點A與B發(fā)來的不同數(shù)據(jù),發(fā)送測量結(jié)果時在數(shù)據(jù)的前端與尾端將加上節(jié)點A與B對應(yīng)的數(shù)據(jù)標(biāo)志頭與標(biāo)志尾。
雖然在以太網(wǎng)傳輸協(xié)議中有多種模式可供選擇,重點對比分析了兩種較為常見的協(xié)議類型,即TCP協(xié)議、UDP協(xié)議。TCP (Transmission Control Protocol)和UDP(User Datagram Protocol)協(xié)議屬于傳輸層協(xié)議[12]。
TCP協(xié)議:TCP 協(xié)議的執(zhí)行過程分為連接創(chuàng)建(Connection Establishment)、數(shù)據(jù)傳送(Data Transfer)和連接終止(Connection Termination)3個階段,其中連接創(chuàng)建與連接終止分別是耳熟能詳?shù)腡CP 協(xié)議三次握手(TCP Three-way Handshake)與四次揮手(TCP Four-way Handshake),也是TCP 服務(wù)器與客戶端通信過程的兩個核心階段。TCP提供IP環(huán)境下的數(shù)據(jù)可靠傳輸,它提供的服務(wù)包括數(shù)據(jù)流傳送、可靠性、有效流控、全雙工操作和多路復(fù)用。通過面向連接、端到端和可靠的數(shù)據(jù)包發(fā)送。
UDP協(xié)議:UDP不為IP提供可靠性、流控或差錯恢復(fù)功能,是OSI(Open System Interconnection,開放式系統(tǒng)互聯(lián))參考模型中一種無連接的傳輸層協(xié)議,提供面向事務(wù)的簡單不可靠信息傳送服務(wù)。
一般來說,TCP對應(yīng)的是可靠性要求較高的應(yīng)用,而UDP對應(yīng)的則是可靠性要求低、傳輸經(jīng)濟的應(yīng)用。因此,經(jīng)綜合考慮本設(shè)計的以太網(wǎng)絡(luò)信號基于TCP協(xié)議進(jìn)行傳輸。
在以太網(wǎng)傳輸模塊中,需對攝像節(jié)點A和B與終端設(shè)備進(jìn)行匹配設(shè)置。對于攝像節(jié)點A和B調(diào)用u2e_config_init(U2E_TCP_CLIENT)函數(shù),設(shè)置攝像節(jié)點A和B的以太網(wǎng)工作模式為TCP_CLIENT(TCP客戶端)。在攝像節(jié)點A的static const _u2e_atcmd_st u2e_tcp_client_info[]中編寫“AT+REMOTEIP=”192.168.66.98” ”與“AT+STATICIP=”192.168.66.100” ”,設(shè)置其遠(yuǎn)程ip為192.168.66.98,靜態(tài)ip為192.168.66.100;在攝像節(jié)點B的static const _u2e_atcmd_st u2e_tcp_client_info[]中編寫“AT+REMOTEIP=”192.168.66.98” ”與“AT+STATICIP=”192.168.66.101” ”,設(shè)置其遠(yuǎn)程ip為192.168.66.98,靜態(tài)ip為192.168.66.101。在終端設(shè)備的static const _u2e_atcmd_st u2e_tcp_server_info[]中編寫“AT+STATICIP=”192.168.66.98” ”,設(shè)置其靜態(tài)ip為192.168.66.98。這樣終端設(shè)備的靜態(tài)ip就和攝像節(jié)點A和B的遠(yuǎn)程ip相對應(yīng),便完成了數(shù)據(jù)互傳的基礎(chǔ)條件。
在終端模塊主要進(jìn)行畫面顯示以及接收數(shù)據(jù)的處理,總體程序流程如圖9所示。通過兩個節(jié)點傳輸來的數(shù)據(jù),可以分析得到目標(biāo)物在整個空間內(nèi)的位置,從而分析得到距攝像節(jié)點的距離,并進(jìn)一步通過對比目標(biāo)物周圍高度已知的參照物可以計算得出目標(biāo)物的實際高度,為減小誤差,將對移動的目標(biāo)物在不同位置的情況進(jìn)行測量分析,計算出所檢測到的高度的均值。最后的結(jié)果可以與畫面數(shù)據(jù)一起通過LCD顯示函數(shù)顯示在LCD屏幕上,具體測量工作流程見圖9,圖10為終端節(jié)點實物。
圖9 終端處理模塊程序流程圖
圖10 終端節(jié)點實物圖
本系統(tǒng)通過測量物體高度(以固定不動的長棍、行走的人為例)來測試本系統(tǒng)非接觸測量目標(biāo)物的性能指標(biāo),測試結(jié)果分別如表1和表2所示,本文的方案在僅靠攝像頭等低成本機器視覺設(shè)備的前提下,檢測誤差在0.44~2.13 cm。
表1 攝像測量系統(tǒng)測量固定不動的長棍高度的測量結(jié)果 cm
表2 攝像測量系統(tǒng)測量行人身高的測量結(jié)果 cm
通過測試結(jié)果可以看出,本系統(tǒng)利用機器視覺中較為廉價的設(shè)備-普通攝像頭并網(wǎng)絡(luò)傳輸技術(shù),很好地實現(xiàn)了攝像畫面中人及物的實時監(jiān)控和非接觸式高度測量。該系統(tǒng)可以應(yīng)用于安檢、銀行等對往來人員檢測有一定需求的場景,具有造價成本低易推廣的特點,且實驗結(jié)果表明本方案具有檢測精度較高、視頻畫面清晰流暢,滿足了實時監(jiān)測以及快速采集目標(biāo)物高度的需求,具有向多領(lǐng)域推廣發(fā)展的可能性。