隨著科學技術和工業生產的高速發展,用于存放各類物品的倉庫數量也不斷增加,但由于目前中小型企業及工廠對倉庫的監控普遍缺乏信息化管理,導致不斷有倉庫盜竊和起火爆炸的事故產生[1]。據統計,人為因素和環境因素是當前倉庫事故的最主要原因,因此,加強對進出倉庫人員及現場環境參數的監控和管理是解決問題的最有效途徑[2]。
于是本文根據以上情況,設計了一種基于以太網和OpenCV的倉庫監控系統。該系統可以實時獲取倉庫的多種環境參數,并能夠查看倉庫的現場視頻。當檢測到環境參數超出閾值或監控視頻出現異常時,系統會做出預警并進行記錄,因此本系統具有高度的研究意義和應用價值。
本文設計的倉庫監控系統主要分為參數采集系統、視頻監控系統、數據交互系統三個部分。系統可以對倉庫現場進行環境參數采集和實時視頻監控,當檢測到出現環境參數異常、有人員進出、有火焰產生等異?,F象時會自動預警。倉庫的環境參數和異常記錄均保存在本地數據庫中,用戶可以通過瀏覽器訪問本地服務器,查看這些信息。
本系統中,參數采集系統通過溫濕度傳感器、一氧化碳傳感器等多種傳感器來采集和上傳倉庫現場的各類環境參數。
視頻監控系統通過USB攝像頭采集監控視頻,并結合采集到的監控視頻及環境參數對倉庫現場進行異?,F象檢測同時進行記錄。
數據交互系統主要采用B/S(瀏覽器/服務器)模式,通過以太網進行網絡通信。用戶在局域網內,通過任何帶有瀏覽器的PC機即可訪問本系統的服務器,查看倉庫現場的環境參數、監控圖片及異常記錄。該模式需要在本地服務器端移植嵌入式Web服務器,并結合HTML技術設計網頁界面實現人機交互。
本系統通過以太網實現網絡通信,從而完成環境參數及監控視頻流等數據的傳輸。
本文設計的倉庫監控系統硬件部分主要包括環境參數模塊,視頻圖像模塊以及負責通信的以太網模塊。其總體設計框圖,如圖1所示。
環境參數模塊掛載了多種傳感器,主要負責采集所在區域內的溫度、濕度、二氧化碳、一氧化碳、臭氧和粉塵這六種環境參數。由于傳感器的輸出方式不同,主芯片需要豐富的USART接口以及定時器,所以環境參數模塊主芯片采用基于Cortex-M4處理器的STM32F407ZGT6芯片[3]。其模塊整體構成如圖2所示。
視頻圖像模塊上通過USB接口掛載了攝像頭模塊,可實時采集倉庫現場的監控視頻。本模塊采用的攝像頭為羅技C525網絡攝像頭,其分辨率高達720P,自帶光線矯正和自動對焦的功能,可根據不同照明條件和人物移動進行微調,且具有折疊式便攜的特點,利于嵌入式使用[4]。由于本模塊對圖形加速和視頻編碼具有較高要求,主控芯片采用了三星公司出產的基于Cortex-A8處理器的S5PV210芯片,相比同公司出產的S3C6410及S5PC110等產品,其運行速度、緩存大小、圖形引擎都具有更大的優勢[5]。此外本模塊還帶有蜂鳴器,通過PWM進行控制,用來對視頻檢測到的異常情況及時預警。其模塊整體構成如圖3所示。
為滿足數據傳輸的傳輸速率快、傳輸穩定性高以及傳輸量大等需求,本系統采用以太網模塊將環境參數模塊、視頻圖像模塊和PC端連入同一局域網。其中,連接環境參數模塊的以太網模塊采用W5500芯片,連接視頻圖像模塊的以太網模塊采用友善之臂配套的DM9000AEP芯片,其網口均選用標準的RJ45網口。以太網傳輸具有傳輸速率高、傳輸距離遠且擴展性強的優點,在同一局域網內,可實現數據的穩定傳輸,符合本系統的要求。
本文設計的倉庫監控系統軟件部分分為參數采集系統、視頻監控系統和數據交互系統,其中,參數采集系統是運行在環境參數模塊上的,而視頻監控系統和數據交互系統運行在視頻圖像模塊上。
綜合系統的穩定性和實時性,本系統在環境參數模塊上移植了μC/OS-II嵌入式實時操作系統,在視頻圖像模塊上移植了Linux操作系統。
其中,μC/OS-II是一種基于優先級的可搶占式的內核,具有可開源、可移植、可裁剪、可固化、多任務、搶占式等特點的嵌入式操作系統,被廣泛應用于各類單片機、微控制器以及數字信號處理器等產品的開發[6]。其移植主要工作包括:下載相關源代碼、修改os_cpu.h和os_cpu_c.c等與處理器相關文件、編寫用戶程序并燒入芯片。
Linux是一個從Unix演變而來的多用戶多任務操作系統,具有免費開源的特點,是一款多用戶、多任務、支持多線程和多CPU的操作系統。它以網絡為核心,支持32位和64位的底層硬件,非常適合嵌入式中軟硬件可裁剪的特點,具有低價的成本和高度的可定制性[7]。其移植主要工作包括:搭建交叉開發環境、選擇和移植Bootloader、配置并編譯系統內核、移植根文件系統。
由于參數采集系統需要完成多種類型傳感器的數據實時采集和傳輸,實現多任務的并發執行,因此建立了數據采集任務和數據上傳任務。本系統為每一路傳感器均設置了單獨的任務,包括有溫濕度采集任務、二氧化碳采集任務、一氧化碳采集任務、臭氧采集任務和粉塵采集任務,這里統稱為數據采集任務。而數據上傳任務主要負責實現通信,通過以太網將數據進行上傳。
數據采集系統的工作流程,如圖4所示。
視頻監控系統的主程序采用多線程的方式實現,主要由三個部分組成。第一部分負責與環境參數模塊建立連接,循環獲取其采集的環境參數;第二部分負責視頻的采集和處理,通過視頻來顯示監控環境及環境參數,并根據視頻分析倉庫中人員進出情況和火焰產生情況;第三部分負責與PC端建立連接,將處理過的視頻以流的形式進行發送。其系統流程如圖5所示。
與環境參數模塊建立連接的部分,采用Socket接口結合TCP/IP協議實現通信連接,然后循環獲取并解析環境參數。在本系統中還移植了Sqlite數據庫用來記錄解析的參數,記錄的數據按照記錄時間進行排序。
負責視頻采集和處理的部分,利用OpenCV庫中的函數調用底層的V4L2實現視頻的采集,接著通過對視頻的動態分析判斷人員進出和火焰產生情況,同時將獲取到的實時環境參數寫入圖像之中。若檢測到有環境參數超過閾值、有人員進出、有火焰產生中的任何一種情況,系統都會判定檢測到異?,F象并將檢測結果計入數據庫中,此外,當前的這一幀視頻圖像也會以jpg的格式保存在本地服務器中。
負責與PC端建立連接的部分,同樣采用了Socket接口結合 TCP/IP 協議建立通信這一方式。系統啟動后會監聽客戶端的連接請求,每當有一個不同IP地址的客戶端請求連接后,系統都會創建一個新的子線程與客戶端進行連接并將處理過的實時視頻以流的形式發送至該客戶端,當連接終止后再關閉這個子線程。
在本系統中移植的OpenCV庫是一個開源的跨平臺計算機視覺軟件庫,具有高效和輕量級的優點,可以運行在Linux、Windows和Android等多種操作系統上[8]。V4L2則是Linux中關于音頻和視頻設備開發的內核驅動,使程序具有發現設備和操作設備的能力[9]。在本系統中,可以直接通過OpenCV中的VideoCapture類來調用V4L2,從而完成攝像頭設備的初始化、啟用等操作。
本系統對視頻進行動態分析采用了幀差法、RGB算法和HIS算法相結合的方式,可以檢測是否有火焰或運動物體出現。其中,幀差法主要針對運動目標的提取,利用了背景像素在一段時間內穩定而運動目標像素會發生變化這一原理,將相鄰兩幀圖像進行差分運算,取像素差的絕對值,之后通過閾值化處理得到二值化圖像,從而提取出運動的目標區域[10]。而RGB算法和HIS算法主要針對火焰的識別,RGB算法是將圖像分成R、G、B三個通道,即紅色分量、綠色分量和藍色分量,然后設定火焰模型對應的分量閾值范圍,如果目標圖像滿足則判定為火焰目標。然而火焰圖像還包括許多其他圖像特征,為了更準確地判定火焰目標,本文同時采用了HIS算法,HIS算法是通過色度、飽和度、亮度三要素進行圖像識別的,當兩種算法均判定檢測到的動態目標為火焰時才最終判定檢測到火焰目標[11]。
在本系統中,利用了OpenCV強大的圖像處理功能,首先對獲取到的圖像信息進行預處理;再根據幀差法將圖像進行背景相減,得到目標前景圖;然后利用閾值分割方法,設定適當的閾值,刪除一些過高或過低的像素點;接著對圖像進行濾波去噪處理以便分割出較清晰明確的動態輪廓;最后結合RGB算法和HIS算法分析該動態輪廓是否為火焰,若不為火焰則判定為一般運動物體。其視頻分析流程如圖6所示。
數據交互系統主要采用B/S模式實現。B/S是一種由服務器和網絡瀏覽器構成的計算機系統架構,通過Web服務器實現其交互功能,于是本系統移植了Boa服務器。Boa服務器是一個支持運行在Linux系統下的小巧高效的嵌入式Web服務器,因此可以移植在視頻圖像模塊上[12]。但作為一種單任務Web服務器,Boa服務器只能按照順序完成用戶的請求,而不會創建出新的進程來處理并發連接請求。因此本系統還需要結合CGI編程技術,CGI編程能夠擴展服務器功能,創建出新的進程來處理用戶請求,可以將數據庫中的環境參數、異?,F象記錄以及保存在服務器本地的監控圖片實時反饋給瀏覽器[13]。
此外用戶還可以通過客戶端接收實時監控視頻,該方式通過C/S(客戶端/服務器)模式實現,需要設計客戶端界面,當用戶通過客戶端與服務端建立連接后即可查看倉庫現場的實時監控視頻。該模式中由視頻監控系統作為服務端,PC機作為客戶端,通信方式采用Socket接口結合TCP/IP 通信協議建立通信[14]。為了設計簡潔美觀的客戶端界面,本文使用OpenCV結合常用的圖形界面應用程序開發框架QT進行設計,實現了對實時監控視頻的播放、暫停等基本功能[15]。
對設計完成后的系統進行整體測試,在網絡環境中,用戶可以利用PC端連接本系統所在的局域網,通過在瀏覽器輸入IP地址來訪問該系統。經過用戶名和密碼登錄之后將進入系統界面首頁,點擊“監測圖片”功能,可查看當檢測到火焰或人員出入時所拍攝的照片,如圖7所示,其監測圖片中火焰和運動人物的輪廓已被彩色線條框出。
點擊“監測數據”功能,可以查看當前監測到的環境參數,其數據會實時更新,刷新間隔為十秒,如表1所示。
表1 倉庫監測數據 導出到EXCEL
時間 | 溫度(℃) | 濕度 (%) | CO2濃度 (ppm) | CO濃度 (ppm) | 臭氧濃度 (ppb) | 粉塵濃度(μg/m3) |
Wed Nov 25 15∶56∶26 2020 |
17.3 | 54.7 | 10 | 939 | 17 | 35.9 |
Wed Nov 25 15∶56∶16 2020 |
17.1 | 54.7 | 11 | 867 | 17 | 37.8 |
Wed Nov 25 15∶56∶06 2020 |
16.9 | 55.9 | 12 | 922 | 17 | 36.4 |
Wed Nov 25 15∶55∶56 2020 |
16.9 | 55.5 | 11 | 917 | 18 | 29.4 |
Wed Nov 25 15∶55∶46 2020 |
16.7 | 55.9 | 12 | 935 | 17 | 34.4 |
Wed Nov 25 15∶55∶36 2020 |
17.4 | 54.7 | 10 | 852 | 17 | 35.6 |
點擊“異常記錄”功能,可查看出現異常情況的具體事件和對應時間,這里的異常情況包括人員進出、發現火焰以及環境參數超過閾值范圍這三種情況,顯示“1”表示當前時刻此事件發生,“0”表示當前時刻此事件未發生,若出現環境參數異常情況,會記錄當前出現異常的參數,如表2所示。
表2 倉庫異常記錄 導出到EXCEL
時間 |
人員進出 | 發現火焰 | 參數異常 |
Thu Nov 26 17∶04∶45 2020 |
0 | 1 | 0 |
Thu Nov 26 17∶04∶29 2020 |
0 | 0 | PM2.5 |
Thu Nov 26 17∶03∶50 2020 |
1 | 0 | 0 |
Thu Nov 26 17∶02∶59 2020 |
0 | 0 | H |
Thu Nov 26 17∶01∶47 2020 |
0 | 0 | T |
Thu Nov 26 17∶01∶03 2020 |
1 | 0 | 0 |
當系統檢測到新的異?,F象時,會跳出彈框進行預警,提示“發現異?,F象,請注意查驗!”,如圖8所示,同時倉庫異常記錄也會隨之更新。如果檢測到的異?,F象為火焰,系統還會啟動蜂鳴器報警,持續時間為十秒鐘。
此外,用戶可以通過登錄客戶端連接本系統以獲取當前環境的實時監控視頻,經測試,視頻流暢、文字清晰,滿足系統要求,如圖9所示。
為滿足當前對倉庫監控技術自動化、智能化的需求,本文設計了一種基于以太網和OpenCV的倉庫監控系統,實現了現場視頻及多種環境參數的實時監控,經過測試,本系統能正常穩定地工作,準確地獲取實時監測數據與監控視頻,同時準確識別和記錄參數超標、人員進出、產生火焰等環境的異常情況,符合設計要求,具有較高的應用價值。
標簽:
上一篇: 數據倉庫與企業關鍵指標分析方法初探
下一篇: 小型倉庫管理系統分析與設計