張志芬 孫繼磊
(濱州學(xué)院信息工程學(xué)院 山東濱州 256603)
在汽車輪轂生產(chǎn)過程中,各種輪轂混合生產(chǎn),不同型號的輪轂經(jīng)過某些相同的工序,混合出現(xiàn)在傳送帶上。此時,需要對這些輪轂按照型號進行分類,再分揀到不同的地方?,F(xiàn)有的輪轂生產(chǎn)廠家,對于輪轂分揀大部分還停留在人工操作階段,由人眼識別輪轂型號,并人力推動或者搬運到不同的類別堆。目前的分揀方式,純?nèi)斯し謷绞饺肆Τ杀竞芨?,增加了企業(yè)生產(chǎn)成本,降低了利潤。
針對上述情況,本文提出一種低成本全自動輪轂分類系統(tǒng)。該系統(tǒng)利用計算機視覺進行識別和分類,利用推動桿和傳送帶進行輪轂分揀,全程不需要人工參與。該輪轂自動分類系統(tǒng)能夠提高生產(chǎn)效率,很好地滿足輪轂生產(chǎn)企業(yè)實際需求。
為了滿足工廠實際需求,通過對汽車輪轂企業(yè)進行需求調(diào)研,確定本系統(tǒng)除了識別和分類的核心功能外,還需要配套一些輔助功能。整個輪轂分揀系統(tǒng)包括以下功能:
(1)模板管理:添加、刪除、修改、瀏覽、查找輪轂?zāi)0?,輪轂?zāi)0逯兄饕ㄝ嗇灥男吞?、名稱、圖片、說明信息。
(2)圖像抓拍:輪轂到達生產(chǎn)線傳送帶指定位置時自動啟動攝像頭對當前位置的輪轂進行拍照。
(3)啟動識別:啟動系統(tǒng)識別程序根據(jù)拍攝到的當前位置輪轂照片,與模板進行比對識別出當前圖片所對應(yīng)的輪轂型號,實現(xiàn)輪轂的類型自動識別。
圖1 物理結(jié)構(gòu)示意圖
圖2 軟件架構(gòu)圖
圖3 系統(tǒng)主界面
圖4 輪轂識別界面
圖5 模板管理界面
(4)分揀功能:對于識別分類后的輪轂,啟用相應(yīng)的推動桿,分別推送到不同的分支傳送帶上,實現(xiàn)輪轂的自動分揀。
(5)數(shù)據(jù)保存:將經(jīng)過識別的所有輪轂的數(shù)量、型號、時間等信息保存到數(shù)據(jù)庫。
(6)生產(chǎn)數(shù)據(jù)統(tǒng)計:能夠根據(jù)日期、型號等信息統(tǒng)計輪轂產(chǎn)量信息。
(7)用戶管理:查看、添加、刪除、修改用戶。
(8)用戶登錄:用戶需登錄才能使用該系統(tǒng),然后進行操作。
圖6 產(chǎn)量統(tǒng)計界面
(9)修改密碼:用戶可以修改登錄密碼,修改時先輸入舊密碼,再輸入兩次新密碼。密碼要符合一定強度要求,至少要包含大小寫字母數(shù)字和標點符號。
汽車輪轂分揀系統(tǒng)物理結(jié)構(gòu)如圖1所示。輪轂從生產(chǎn)線上傳送過來(圖中從左往右)到達攝像頭下方時,觸發(fā)傳感器,傳感器將信號發(fā)送給計算機,調(diào)用攝像頭進行拍照,然后對所拍攝的照片進行識別[1],再根據(jù)識別的類型,啟動相應(yīng)類型的推動桿,將輪轂根據(jù)類型分別推送到不同的傳送帶上[2],從而實現(xiàn)輪轂的自動分揀。
汽車輪轂分揀系統(tǒng)軟件架構(gòu)分為表示層、服務(wù)層、數(shù)據(jù)庫層三個層次。表示層主要負責與用戶進行交互,接收用戶輸入、顯示數(shù)據(jù)和圖像;服務(wù)層主要進行數(shù)據(jù)訪問服務(wù)和圖像識別服務(wù);數(shù)據(jù)庫層主要用于數(shù)據(jù)的存儲。系統(tǒng)軟件架構(gòu)如圖2所示。
(1)編程語言及框架:系統(tǒng)中用戶界面部分要界面簡單美觀、用戶交互效果好,使用C#語言和WPF框架。圖像處理和識別部分要性能好、圖像處理功能要強大,使用C++,調(diào)用OpenCV。通過將C++封裝成dll,通過C#調(diào)用,可以實現(xiàn)用戶界面與圖像處理識別功能的接口。數(shù)據(jù)訪問結(jié)構(gòu)使用LINQ + Entity Framework。
(2)開發(fā)環(huán)境:Visual Studio 2017。
(3)數(shù)據(jù)庫:MS SQL Server 2014。
(4)系統(tǒng)運行環(huán)境:Windows7以上,.NET Framework 4.6以上。
系統(tǒng)主要包括輪轂識別分類、模板維護、參數(shù)設(shè)計、統(tǒng)計報表、數(shù)據(jù)備份、用戶管理、修改密碼等功能。系統(tǒng)主界面如圖3所示?,F(xiàn)就部分功能進行介紹。
在取得待識別的輪轂圖片后,首先對其進行預(yù)處理,然后逐個與模塊進行比對,確定輪轂類別。具體來說包括以下3個步驟[3]。
(1)圖像預(yù)處理。
為了提高輪轂圖像識別性能,需要先對攝像頭所拍攝的原始圖像進行預(yù)處理。主要進行灰度化、去噪、邊緣提取這3個預(yù)處理操作[4]。
(2)特征提取。
為了識別輪轂,需要提取其主要特征,本系統(tǒng)中主要提取輪轂外圓半徑、輪轂輻數(shù)及輪輻形狀這3個典型特征[3],實現(xiàn)方法如下。
①外圓半徑:系統(tǒng)中通過Canny算法得到圖像的邊緣信息后,采用霍夫梯度算法檢測出輪轂圖像的外輪廓圓,進而得到圓心坐標和外圓半徑長度[4]。
②輪轂輻數(shù):系統(tǒng)利用濾波法在輪轂的圖像中遍歷圓周得到的黑白像素點跳變次數(shù)來判斷輻軸個數(shù)。濾波后,沿圓周方向依次檢測像素亮暗,連續(xù)亮暗跳變處即為輪輻[5]。
③輪輻形狀:通過以s為步長,以r為半徑(r值介于0.2到0.9倍輪轂半徑)沿圓周進行掃描,根據(jù)連續(xù)區(qū)域的寬度來得到輪輻形狀[6]。
(3)模板匹配。
系統(tǒng)對待識別圖像進行預(yù)處理后,提取出其特征,然后將提取出的特征與各個輪轂?zāi)0鍒D像特征進行比對,得出圖片相似度,判定輪轂所屬類別[7]。若滿足以下兩個條件之一,則認為該輪轂屬于相應(yīng)的模板型號。
(1)待識別圖像與模板的匹配相似度超過一個較高的閾值,該值一般可以取0.9左右。
(2)待識別圖像與某一模板的匹配相似度在所有模板中最高,且超過某一閾值,該值一般可以取0.75左右。
輪轂識別分類的運行界面如圖4所示。
輪轂?zāi)0寮礊檩嗇炐吞?,生產(chǎn)線上所拍攝得到的輪轂圖片通過與模板進行對比,從而確定輪轂型號[8]。為了滿足不同的企業(yè)實際生產(chǎn)需要,為了能夠靈活的添加、刪除、修改模板,為此設(shè)計實現(xiàn)了模板管理功能模塊。每個模板包括輪轂的代碼、名稱、圖片、備注等信息。模板管理模塊運行界面如圖5所示。
在生產(chǎn)統(tǒng)計模塊,用于查詢指定日期范圍各生產(chǎn)線生產(chǎn)的各種輪轂的數(shù)量,常量統(tǒng)計界面圖6所示。在該功能中選擇要查詢的日期范圍,然后單擊“查詢”按鈕即可查詢出該日期范圍內(nèi)各生產(chǎn)線的輪轂數(shù)據(jù),單擊“打印”按鈕可以打印該統(tǒng)計信息[9]。
針對汽車輪轂生產(chǎn)企業(yè)的輪轂分類問題,以計算機視覺為核心技術(shù),綜合運用W PF、OpenCV、EntityFramework等技術(shù),設(shè)計開發(fā)了輪轂分類管理系統(tǒng)。該系統(tǒng)全自動運行,無需人工參與,具有較好的實際應(yīng)用價值。