基于OpenCV和嵌入式的工業(yè)圖像檢測系統(tǒng)
引 言
當(dāng)下,用機(jī)器代替人工,用科技代替勞動力已成為勢不可擋的潮流。為提高工業(yè)自動化檢測系統(tǒng)的檢測效果,降低工廠雇傭工件檢測員的開銷,本文開展了基于 OpenCV 的嵌入式工業(yè)檢測系統(tǒng)的研究。本文提出了一種基于 OpenCV,利用嵌入式微處理器進(jìn)行圖像采集與傳輸實(shí)現(xiàn)工件劃痕檢測的方案。該方案使用最新的 OpenCV 開源庫, 開發(fā)出基于OpenCV 的圖像處理軟件,并利用網(wǎng)口向圖像處理軟件傳輸數(shù)據(jù)。符合系統(tǒng)構(gòu)建簡單、工作穩(wěn)定、可擴(kuò)展性強(qiáng)、檢測精度高等工業(yè)自動化檢測目標(biāo)。
1 系統(tǒng)整體概述
該系統(tǒng)由圖像采集嵌入式設(shè)備、網(wǎng)絡(luò)傳輸設(shè)備和處理圖像的計(jì)算機(jī)設(shè)備組成。嵌入式設(shè)備具有生產(chǎn)成本低、處理效率高、耗電低等優(yōu)點(diǎn),符合工業(yè)生產(chǎn)需求 ;圖像傳輸主要采用以太網(wǎng)并輔以 RS232串口通信的方式,實(shí)現(xiàn)了實(shí)時高效、可靠性高的圖像傳輸功能;圖像處理軟件采用最新的 OpenCV 計(jì)算機(jī)視覺開源庫,將 Qt 開源庫與其巧妙融合,提高了圖像處理的速度和精度。最后將處理結(jié)果傳送到云服務(wù)器,完成系統(tǒng)架構(gòu)。系統(tǒng)組成框圖如圖 1所示。
圖1 系統(tǒng)組成框圖
2 圖像采集傳輸系統(tǒng)設(shè)計(jì)
本設(shè)計(jì)主要使用當(dāng)前較為前沿的嵌入式 ARM Cortex-M4 系列芯片,使用 STM32F407ZGT6 的DCMI 接口連接 OV5640 攝像頭模塊,從工業(yè)對零件劃痕檢測的實(shí)際需求出發(fā),構(gòu)建較為完整的工業(yè)圖像采集傳輸系統(tǒng)。此圖像采集傳輸系統(tǒng)包含攝像頭采集模塊和以太網(wǎng)傳輸模塊。圖像采集傳輸系統(tǒng)基于嵌入式 STM32F407ZGT6 的自制高度電磁兼容和信號完整性,使用OV5640 攝像頭模塊在合適的環(huán)境下采集 JPEG 格式的圖像。圖像傳輸系統(tǒng)將圖像采集模塊采集到的圖片傳輸至基于 OpenCV 圖像邊緣檢測的上位機(jī)。以以太網(wǎng)通信為主, 串口通信為輔,方便快捷地進(jìn)行圖像傳輸。
2.1 攝像頭采集模塊
本系統(tǒng)中,該攝像頭模塊采用 8 位數(shù)據(jù)輸出接口,其自帶 24MHz有源晶振, 無需外部提供時鐘, 整個模塊只需3.3 V供電即可正常使用,且該模塊支持自動對焦和閃光燈功能。電壓攝像頭模塊通過 SCCB總線實(shí)現(xiàn)圖像輸出分辨率的額配置、閃光燈的開關(guān)、自動對焦、調(diào)節(jié)色彩飽和度、亮度設(shè)置、設(shè)置自動銳度、啟動持續(xù)對焦等功能。直接輸出壓縮后的JPEG圖片數(shù)據(jù)。輸出 JPEG格式的圖片源源不斷地傳入 DMA 中,可利用 JPEG 格式提取提取圖片??刹扇∪缦聝煞N方式 :
(1) 嵌入式端提取好單張圖片并發(fā)給上位機(jī) ;
(2) 嵌入式端不斷發(fā)送圖片數(shù)據(jù)流給上位機(jī),讓上位機(jī)提取。
實(shí)際上,方式(1)在嵌入式端提取了圖片,再按單張發(fā)給上位機(jī),且為了圖片的數(shù)據(jù)安全有效,上位機(jī)需再次提取, 導(dǎo)致嵌入式端的提取多此一舉。因此,本設(shè)計(jì)采用第二種方案。
2.2 以太網(wǎng)的實(shí)現(xiàn)
本系統(tǒng)除了使用 IEEE 802.3-2002 標(biāo)準(zhǔn)發(fā)送和接收數(shù)據(jù)的以太網(wǎng)外設(shè),還采用 μC/OS-III 配合 LWIP 的設(shè)計(jì),便于各類任務(wù)高效有序運(yùn)行。其中,LWIP 是一種輕量級TCP/IP 協(xié)議棧,可不依賴操作系統(tǒng)運(yùn)行,特別是能夠在保持 TCP 協(xié)議主要功能的基礎(chǔ)上減少對 RAM 的使用,節(jié)約了資源,尤其適用于嵌入式終端。μC/OS-III 是一個可裁剪、可固化、可剝奪的多任務(wù)系統(tǒng),無任務(wù)數(shù)目限制,是在 μC/OS-II上改進(jìn)的μC/OS 第三代內(nèi)核,其中斷時間極短,不僅解決了同時等待多個內(nèi)核對象的同步問題,且加入了時間戳控制,大大提升了ARM 處理器的運(yùn)算速度。為提升網(wǎng)絡(luò)傳輸速度與時延,更好地滿足實(shí)時性的要求,本設(shè)計(jì)最終選樣在 μC/OS-III上運(yùn)行 LWIP 協(xié)議棧的設(shè)計(jì)方案。本設(shè)計(jì)中系統(tǒng) μC/OS 任務(wù)包括網(wǎng)絡(luò)傳輸任務(wù)、LWIP 連接任務(wù)、按鍵檢測任務(wù)、LCD 顯示任務(wù)、LED 閃爍任務(wù)和開始任務(wù)等,使用操作系統(tǒng)節(jié)省了系統(tǒng)資源,降低了功耗,更有利于嵌入式設(shè)備的持久運(yùn)行。緩沖區(qū)圖像數(shù)據(jù)傳輸?shù)牧鞒倘鐖D 2 所示。
圖 2 緩沖區(qū)圖像數(shù)據(jù)傳輸?shù)牧鞒?
3 圖像輪廓檢測處理系統(tǒng)設(shè)計(jì)
本次上位機(jī)采用QT5.7(MinGW5.3版)設(shè)計(jì),并利用OpenCV計(jì)算機(jī)視覺庫作為圖像處理方案。通過在 Qt軟件框架下調(diào)用OpenCV函數(shù)庫,實(shí)現(xiàn) PC端圖像邊緣檢測。本系統(tǒng)通過使用OpenCV3“內(nèi)核”與“插件”相結(jié)合的架構(gòu)形式, 大大提高了軟件系統(tǒng)的穩(wěn)定性。文中設(shè)計(jì)的圖像檢測算法涉及邊緣檢測、尋找輪廓和圖像的矩等內(nèi)容。Canny邊緣檢測算子是一種最優(yōu)的邊緣檢測算法,在實(shí)際編程中直接調(diào)用 Canny 函數(shù)即可。本系統(tǒng)采用變分法,滿足了低錯誤率、高定位性、最小響應(yīng)三大標(biāo)準(zhǔn),并使用OpenCV庫提供的findContours 函數(shù)在二值圖像中尋找輪廓。最終界面設(shè)計(jì)如圖 3所示。
4 結(jié) 語
本系統(tǒng)實(shí)現(xiàn)了機(jī)器代替人工檢測工件劃痕的功能,可作為工業(yè)生產(chǎn)物聯(lián)網(wǎng)的一個節(jié)點(diǎn),結(jié)合現(xiàn)代工業(yè)自動化的實(shí)際需求,將圖像檢測技術(shù)和物聯(lián)網(wǎng)通信技術(shù)巧妙結(jié)合,大大降低工業(yè)生產(chǎn)的檢測環(huán)節(jié)人力使用成本,并提出了一種全新的工業(yè)生產(chǎn)自動化產(chǎn)品檢測環(huán)節(jié)的解決方案,提高了產(chǎn)品檢測的精度與速度。在未來的工業(yè)生產(chǎn)自動化過程中,可采用選擇路由器網(wǎng)線傳輸或 WiFi 傳輸?shù)确绞?,搭建物?lián)網(wǎng)多節(jié)點(diǎn)檢測系統(tǒng), 利用主機(jī)總控機(jī)制,建立一個大型的基于工業(yè)物聯(lián)網(wǎng)和圖像檢測技術(shù)的工件檢測系統(tǒng),實(shí)現(xiàn)真正的工業(yè)生產(chǎn)自動化。
圖 3 最終界面設(shè)計(jì)