郭建軍,楊 霖,張恩威,劉雙印,李俊勇,姚趙忠,謝彩健
(1.仲愷農(nóng)業(yè)工程學(xué)院信息科學(xué)與技術(shù)學(xué)院,廣東 廣州 510225;2.廣州東文環(huán)境技術(shù)有限公司,廣東 廣州 510620;3.廣州順生生物科技有限公司,廣東 廣州 511316)
雞蛋是人類最好的營養(yǎng)來源之一[1],與人們的日常生活密不可分,既在食用領(lǐng)域中發(fā)揮作用,又在如疫苗研發(fā)之類的醫(yī)藥領(lǐng)域中扮演重要的角色。隨著經(jīng)濟(jì)的增長和人民生活水平的提高,人們對(duì)雞蛋的需求量越來越大,對(duì)雞蛋品質(zhì)的要求也越來越高。我國是世界上最大的雞蛋生產(chǎn)國和消費(fèi)國,近年的雞蛋產(chǎn)量為2 600 萬t 左右[2]。居民受傳統(tǒng)飲食習(xí)慣的影響,日常生活中主要以鮮雞蛋為主[3],雞蛋在包裝、運(yùn)輸、加工過程中,由于各種因素影響,容易受到磕碰而造成不可逆的損壞,具體表現(xiàn)為不同程度的裂紋,影響存儲(chǔ)和運(yùn)輸。此外,微生物如沙門氏菌可通過雞蛋表面裂紋進(jìn)入雞蛋內(nèi)部導(dǎo)致雞蛋變質(zhì)或品質(zhì)下降,破損蛋還會(huì)對(duì)其他雞蛋造成感染,對(duì)企業(yè)的經(jīng)濟(jì)效益和消費(fèi)者的健康產(chǎn)生不利影響[4-5]。因而分揀完好蛋與裂紋蛋的環(huán)節(jié)至關(guān)重要。我國在雞蛋分揀方面,大多仍采用傳統(tǒng)的人工作業(yè)[6],此工作模式耗時(shí)耗力且勞動(dòng)力成本高,并且工人分揀的效率會(huì)隨著時(shí)間的增長而降低[7],難以達(dá)到企業(yè)的預(yù)期。自動(dòng)分揀技術(shù)可以高效、穩(wěn)定地監(jiān)測(cè)并剔除劣質(zhì)雞蛋,同時(shí)進(jìn)行分類傳輸,有效節(jié)約時(shí)間、空間和勞動(dòng)力成本。因此研究雞蛋自動(dòng)分揀技術(shù)具有重要的理論意義和廣泛的實(shí)用價(jià)值,實(shí)施后可以提高蛋類企業(yè)生產(chǎn)自動(dòng)化水平,從而提升企業(yè)市場(chǎng)競爭力和經(jīng)濟(jì)效益[8]。
本研究應(yīng)用機(jī)器視覺技術(shù)反饋雞蛋裂紋信息,結(jié)合編程控制機(jī)器自動(dòng)分揀設(shè)計(jì)的雞蛋分揀系統(tǒng),能夠代替?zhèn)鹘y(tǒng)人工分揀,實(shí)現(xiàn)低成本、高精度、自動(dòng)化的生產(chǎn)。
基于機(jī)器視覺的裂紋雞蛋分揀系統(tǒng)主要由機(jī)器視覺檢測(cè)模塊、分揀模塊及用戶端通訊模塊3 部分組成。具體操作過程為:搭建好傳送帶、分揀裝置及攝像設(shè)備,攝像設(shè)備對(duì)雞蛋拍照,對(duì)照片利用機(jī)器視覺方法進(jìn)行特征提取,再用分類識(shí)別算法進(jìn)行對(duì)比并得出該蛋是否完好,最后通過機(jī)器進(jìn)行分揀,同時(shí)將分揀數(shù)據(jù)呈現(xiàn)到用戶端上。以下為各模塊對(duì)應(yīng)的功能及硬件選型。
機(jī)器視覺檢測(cè)模塊主要由相機(jī)、照明設(shè)備、采集暗箱和計(jì)算機(jī)組成。該模塊的功能是完成雞蛋外殼的圖像信息采集,利用機(jī)器視覺的技術(shù)實(shí)現(xiàn)對(duì)裂紋特征的提取,運(yùn)用分類識(shí)別算法判斷出該雞蛋是完好蛋或是裂紋蛋。常用于圖像識(shí)別的相機(jī)主要有CCD 和CMOS,二者性能指標(biāo)對(duì)比評(píng)價(jià)如表1 所示。在圖像效果上,CMOS 色彩效果較高,對(duì)圖形的捕獲及處理速度更快;拍攝出的照片更加清晰。在圖像特征上,CCD 對(duì)于圖像的抗擾亂能力更強(qiáng)、還原度更高并且適合在夜間工作。由于本項(xiàng)目分揀過程是在暗環(huán)境中拍攝,且對(duì)圖像要求較高,故采用CCD 相機(jī)。
表1 CCD 和CMOS性能指標(biāo)對(duì)比評(píng)價(jià)
利用機(jī)器視覺技術(shù)對(duì)雞蛋進(jìn)行檢測(cè)時(shí),合適的光源和良好的照明方式更能清晰地展現(xiàn)雞蛋外殼的裂紋信息。表2 對(duì)市面上各種如白熾燈、LED、熒光燈的照明設(shè)備進(jìn)行了對(duì)比。通過對(duì)比可以得出,LED的綜合照明能力較高。雖然初期成本較高,但由于性能好且使用壽命較長,長期的成本對(duì)比更優(yōu)。因此,本檢測(cè)系統(tǒng)采用LED 燈進(jìn)行視覺檢測(cè)照明。
表2 常用照明設(shè)備性能指標(biāo)對(duì)比評(píng)價(jià)
在確定了系統(tǒng)所用的CCD 相機(jī)及LED 照明設(shè)備后,在傳送帶上搭建1 個(gè)簡易的暗箱,配備1 臺(tái)普通的計(jì)算機(jī),即可完成機(jī)器視覺檢測(cè)設(shè)備的搭建。
分揀模塊是本系統(tǒng)最終需要實(shí)現(xiàn)的功能模塊。其根據(jù)視覺檢測(cè)模塊對(duì)被檢測(cè)雞蛋的破損與否進(jìn)行分類,目的是將完整蛋運(yùn)送至下一環(huán)節(jié),將裂紋蛋或破損蛋淘汰[9]。對(duì)于分揀模塊的硬件選型,生產(chǎn)上常見的分揀設(shè)備主要有機(jī)械手設(shè)備、撥片、氣動(dòng)吸盤等。表3 中,從成本、靈敏程度、所需配套設(shè)施數(shù)量、安裝難度以及自身缺點(diǎn)幾個(gè)主要技術(shù)指標(biāo)進(jìn)行對(duì)比評(píng)價(jià)可知:氣動(dòng)吸盤的缺陷較多;機(jī)械手分揀效率高,但是成本高,撥片反之。本系統(tǒng)設(shè)計(jì)要求低成本,且撥片的分揀能力可滿足生產(chǎn)需要,故選擇撥片作為本系統(tǒng)的分揀模塊設(shè)備。
表3 分揀設(shè)備主要技術(shù)指標(biāo)對(duì)比評(píng)價(jià)
本系統(tǒng)的用戶端通信模塊主要由STM32 單片機(jī)、ESP8266WIFI 模塊構(gòu)成。機(jī)器視覺檢測(cè)模塊在計(jì)算機(jī)端將雞蛋是否破損的檢測(cè)結(jié)果傳輸給STM32 單片機(jī)端;單片機(jī)根據(jù)檢測(cè)結(jié)果,供高電平給直流無刷伺服電機(jī),電機(jī)驅(qū)動(dòng)撥片進(jìn)行相應(yīng)分揀;在獲得檢測(cè)結(jié)果的同時(shí),單片機(jī)端利用WIFI 模塊,通過MQTT 協(xié)議,將檢測(cè)結(jié)果傳送至用戶端。
本環(huán)節(jié)實(shí)現(xiàn)圖像信息采集及圖像預(yù)處理,該過程為遞進(jìn)關(guān)系,通過合適的方式進(jìn)行采集后,再對(duì)圖像進(jìn)行預(yù)處理,可實(shí)現(xiàn)精準(zhǔn)的裂紋雞蛋檢測(cè)。
對(duì)于雞蛋圖像信息的采集,本文采用前文所述的硬件設(shè)備,將傳送帶的一段裝入機(jī)器視覺檢測(cè)設(shè)備。先在輥軸的下方安裝一排LED 燈照明設(shè)備,光源可使得雞蛋圖像采集更加清晰;利用輥軸帶動(dòng)雞蛋旋轉(zhuǎn)。雞蛋轉(zhuǎn)過每個(gè)120°的位置正上方安裝相機(jī),共安裝3 個(gè)相機(jī),使得雞蛋360°全方位能被相機(jī)拍到。圖1 為采集圖像的設(shè)備安裝及布局情況,將雞蛋分為A、B、C 3 個(gè)120°曲面,圖2 為相機(jī)采集雞蛋不同面的圖像。
圖1 采集圖像的設(shè)備安裝及布局情況
圖2 相機(jī)采集雞蛋A、B、C 面的過程
圖像預(yù)處理的目的是提取出雞蛋外殼的裂紋特征,以便后期對(duì)該雞蛋進(jìn)行識(shí)別分類。
采集完雞蛋照片后,相機(jī)將圖像傳送給計(jì)算機(jī),進(jìn)行圖像的預(yù)處理。由于完好雞蛋與破損雞蛋的區(qū)別是裂紋的存在與否,故預(yù)處理的目的是保留并增強(qiáng)裂紋區(qū)域圖像特征。選用處理方案需實(shí)現(xiàn)去除背景、噪聲干擾等;保留雞蛋外殼裂紋信息?;诖?,本文列出雞蛋圖像預(yù)處理流程如圖3 所示,針對(duì)預(yù)處理過程擬采用的處理方法如表4 所示。
圖3 雞蛋圖像預(yù)處理的流程
表4 雞蛋預(yù)處理流程及擬采用處理方法
2.2.1 灰度化
相機(jī)采集的雞蛋圖像為彩色圖像,其本質(zhì)是一個(gè)降維過程,這個(gè)過程中信息的丟失無法避免,因此必須對(duì)雞蛋圖像進(jìn)行灰度化處理[10],這樣可以提高黑白(二值化)圖像的清晰度,更能凸現(xiàn)目標(biāo)特征,結(jié)合Pyhton 腳本和YOLOv5 目標(biāo)檢測(cè)算法,調(diào)用Opencv 庫中的cv2.cvtColor 函數(shù),可以將采集的原始圖像進(jìn)行灰度化,效果如圖4 所示。
圖4 拍攝的雞蛋原圖像及灰度化效果
2.2.2 背景去除
灰度化處理后,再對(duì)雞蛋圖像進(jìn)行背景去除,以避免非雞蛋本體對(duì)于裂紋特征提取的干擾。本文采用閾值分割方法,即提取統(tǒng)計(jì)經(jīng)過灰度化以后的灰度值,將統(tǒng)計(jì)到的數(shù)值繪制成直方圖[11]。該直方圖的波峰主要有2 個(gè),1 個(gè)為雞蛋的主體圖像,1 個(gè)為背景的圖像;由于透光照明方式,雞蛋本身的灰度值會(huì)大于背景的灰度值。將2 個(gè)波峰之間的波谷設(shè)置為閾值,可以將雞蛋圖像與背景圖像分離,再將灰度值峰值小的部分區(qū)域舍去,保留峰值大的區(qū)域,即可實(shí)現(xiàn)背景去除。具體流程如圖5 所示。
圖5 灰度化及背景去除流程
雞蛋圖像灰度直方圖如圖6 所示,該圖像的波形橫坐標(biāo)為灰度值,縱坐標(biāo)為相同灰度值對(duì)應(yīng)的像素點(diǎn)數(shù)量。由該直方圖可知,該圖像主要有2 個(gè)波峰,根據(jù)前文所述,灰度值小的為背景,大的為雞蛋本體,設(shè)定波谷的灰度值為閾值,保留灰度值50~150 的部分,將灰度值50 以下的波峰灰度值設(shè)置為0,從而可以得到背景去除效果,如圖7、圖8所示。
圖7 完好蛋灰度化效果圖及背景去除效果
圖8 裂紋蛋灰度化效果圖及背景去除效果
2.2.3 濾波降噪
完成雞蛋圖像的灰度化和背景去除后,仍需對(duì)雞蛋圖像進(jìn)行濾波降噪,其目的是去除圖像中的噪音區(qū)域。較常用的濾波算法有雙邊濾波、高斯濾波及中值濾波,本研究采用這3 種濾波算法并結(jié)合OpenCV,分別對(duì)完整雞蛋和裂紋雞蛋的圖像進(jìn)行濾波處理,再對(duì)比其效果,得出較適合雞蛋圖像濾波降噪的濾波算法。
雙邊濾波是非線性的濾波方法,結(jié)合圖像的空間鄰近度和像素值相似度的一種折中處理,同時(shí)考慮空域信息和灰度相似性,達(dá)到保邊去噪的目的。其能夠做到在平滑去噪的同時(shí)還可以很好的保存邊緣。結(jié)合OpenCV,采用cv2.bilateralFilter 函數(shù),可以實(shí)現(xiàn)對(duì)雞蛋圖像的雙邊濾波,效果如圖9 所示。
圖9 雙邊濾波后的完整蛋及裂紋蛋效果
高斯濾波是對(duì)整幅圖像進(jìn)行加權(quán)平均的過程,每一個(gè)像素點(diǎn)的值都由其本身和鄰域內(nèi)的其他像素值經(jīng)過加權(quán)平均后所得[12],其具體操作是:用1 個(gè)模板(或稱卷積、掩模)掃描圖像中的每一個(gè)像素,用模板確定的鄰域內(nèi)像素的加權(quán)平均灰度值去替代模板中心像素點(diǎn)的值。結(jié)合OpenCV,采用cv2.GaussianBlur 函數(shù),可以實(shí)現(xiàn)對(duì)雞蛋圖像的高斯濾波,效果如圖10 所示。
圖10 高斯濾波后的完整蛋及裂紋蛋效果
中值濾波法是在1 個(gè)周期內(nèi)連續(xù)采集多個(gè)數(shù)據(jù),將數(shù)據(jù)按大小排列,取中間值為有效值。該法能夠有效去除偶然的脈沖干擾,對(duì)溫度、液位的變化具有良好的濾波效果,但不適用于流量、速度等信號(hào)變化較快的場(chǎng)景[13]。結(jié)合OpenCV,采用cv2.medianBlur 函數(shù),可以實(shí)現(xiàn)對(duì)雞蛋圖像的中位濾波,效果如圖11 所示。
圖11 中值濾波后的完整蛋及裂紋蛋效果
通過對(duì)比可知,中值濾波算法相較于其他2 種,還原度更高,對(duì)于過高或過低的噪點(diǎn)消除更靈敏,且圖像更加清晰。在本系統(tǒng)設(shè)計(jì)過程中,圖像預(yù)處理側(cè)重于如何突出裂紋特征,而中值濾波正好符合該需求。故本系統(tǒng)采用中值濾波算法進(jìn)行濾波降噪,再進(jìn)行后續(xù)操作。
2.2.4 特征提取
在前面的步驟執(zhí)行后,便可對(duì)雞蛋圖像進(jìn)行裂紋特征提取。圖像的邊緣檢測(cè)用于提取圖像特征,在圖像分割、圖像識(shí)別、人臉識(shí)別等技術(shù)中提供了基礎(chǔ)處理[14]。
常用的邊緣檢測(cè)算法有Sobel 算子、Canny 算子、Roberts 算子以及Laplacian 算子。Sobel 算子是1 組用于邊緣檢測(cè)的簡單、高效方向算子,在處理灰度漸變或噪聲較多等方面效果好;且其更注重邊緣檢測(cè)效率,邊緣檢測(cè)效果更好[15]。Canny 算子是1 個(gè)多級(jí)邊緣檢測(cè)算子,其在一定程度上保證圖像邊緣特征,顯著減少圖像數(shù)據(jù)規(guī)模[16]。Roberts 算子是1 種簡單而高效的算子,它采用2×2 模板,利用圖像中對(duì)角線方向相鄰像素差值近似梯度幅值來檢測(cè)目標(biāo)邊緣[17]。拉普拉斯算法又稱拉普拉斯梯度函數(shù)[18],對(duì)圖像進(jìn)行拉普拉斯變換可以增強(qiáng)圖像邊緣,利于提取目標(biāo)的邊緣,對(duì)圖像進(jìn)行分割、目標(biāo)區(qū)域識(shí)別、區(qū)域形狀提取等。使用拉普拉斯檢測(cè)特征,可以強(qiáng)調(diào)語義內(nèi)容特征,誤差傳播后,可以更好地維持原圖的語義內(nèi)容[19]。這4 種邊緣檢測(cè)算法的對(duì)比及評(píng)價(jià)如表5 所示。
表5 4種邊緣檢測(cè)算法的對(duì)比及評(píng)價(jià)
結(jié)合OpenCV,采用cv2.Canny、cv2.Sobel、cv2.Laplacian、cv2.Roberts 這4 個(gè)函數(shù)可分別對(duì)雞蛋圖像(包括完整蛋和裂紋蛋)進(jìn)行相應(yīng)的邊緣檢測(cè)算法?;谶@4 種算法的完整及裂紋蛋圖像分別如圖12、圖13、圖14、圖15 所示。通過對(duì)比可知,采用Canny 算子的邊緣檢測(cè)方法相對(duì)于其他算子更加能夠反映雞蛋的裂紋特征;Sobel 算子雖也能較好地反映,但其更強(qiáng)調(diào)雞蛋外殼輪廓,在后續(xù)過程的形態(tài)學(xué)運(yùn)算中會(huì)起到適得其反的效果。
圖12 采用Canny 算子的完整蛋及裂紋蛋圖像
圖13 采用Sobel 算子的完整蛋及裂紋蛋圖像
圖14 采用Laplacian 算子的完整蛋及裂紋蛋圖像
圖15 采用Roberts 算子的完整蛋及裂紋蛋圖像
綜上所述,本系統(tǒng)設(shè)計(jì)的邊緣檢測(cè)選定Canny算子作為后續(xù)形態(tài)學(xué)運(yùn)算方法的基礎(chǔ)。
2.2.5 裂紋特征增強(qiáng)
裂紋特征增強(qiáng)的主流方法是數(shù)學(xué)形態(tài)學(xué)運(yùn)算方法,該方法是一種以嚴(yán)格數(shù)學(xué)理論為基礎(chǔ)的用于非線性圖像處理和分析的理論[20]。它在形狀識(shí)別、邊緣檢測(cè)、紋理分析、圖像恢復(fù)和增強(qiáng)等領(lǐng)域得到了廣泛應(yīng)用[21]。數(shù)學(xué)形態(tài)學(xué)最基本的運(yùn)算[22]主要包括膨脹運(yùn)算和腐蝕運(yùn)算[23]。以上過程將采用Canny 算子的邊緣檢測(cè)得出裂紋蛋圖像作為本過程的基礎(chǔ),結(jié)合數(shù)學(xué)形態(tài)學(xué)中的膨脹和腐蝕2 種運(yùn)算方法對(duì)雞蛋進(jìn)行“減運(yùn)算”,即將雞蛋圖像通過一系列操作除去無關(guān)裂紋的部分如蛋殼輪廓、亮斑等,并凸顯出雞蛋裂紋的特征,得出的雞蛋圖像裂紋處相比于蛋殼輪廓及亮斑更明顯。具體流程如圖16所示。
圖16 雞蛋圖像數(shù)學(xué)形態(tài)學(xué)處理流程
腐蝕操作時(shí)取每一個(gè)位置的矩形鄰域內(nèi)值的最小值作為該位置的輸出灰度值。這里的鄰域可以是矩形結(jié)構(gòu)、橢圓形結(jié)構(gòu)、十字交叉形結(jié)構(gòu)等。其目的是將雞蛋整體“淡化”,消去外殼輪廓及亮斑,同時(shí)也會(huì)一定程度上淡化裂紋。利用OpenCV 中的cv2.erode 函數(shù)可以實(shí)現(xiàn)對(duì)圖像進(jìn)行腐蝕運(yùn)算。
膨脹相當(dāng)于腐蝕反向操作,圖像中較亮的物體尺寸會(huì)變大,較暗的物體尺寸會(huì)減小。在腐蝕的基礎(chǔ)上,圖像只剩裂紋部分。利用膨脹可以使裂紋特征相對(duì)背景有一定程度擴(kuò)張,從而使裂紋更加明顯。利用OpenCV 中的cv2.dilate 函數(shù)可以實(shí)現(xiàn)對(duì)圖像進(jìn)行膨脹運(yùn)算。
具體代碼如下:
經(jīng)過試驗(yàn),可以得到最終的雞蛋裂紋特征圖像。程序?qū)崿F(xiàn)腐蝕膨脹,經(jīng)處理的裂紋特征圖像最終效果如圖17 所示。裂紋特征圖像經(jīng)YOLOv5[24](一種單階段目標(biāo)檢測(cè)算法)預(yù)先載入的裂紋圖像訓(xùn)練集進(jìn)行判斷,可得出該雞蛋為裂紋蛋或完整蛋的不同結(jié)果,并反饋至單片機(jī)。
圖17 經(jīng)處理的雞蛋裂紋特征
雞蛋分揀實(shí)現(xiàn)是回收破損的雞蛋,留下完整蛋繼續(xù)傳輸,進(jìn)行下一生產(chǎn)環(huán)節(jié),如包裝、加工等。雞蛋經(jīng)視覺處理及分類后,所得完整或裂紋的結(jié)果會(huì)反饋給單片機(jī);單片機(jī)控制撥片對(duì)雞蛋進(jìn)行分揀:若為完整蛋,則單片機(jī)保持舵機(jī)不翻轉(zhuǎn);若為裂紋蛋,則使其翻轉(zhuǎn)45°,同時(shí)單片機(jī)將雞蛋檢測(cè)時(shí)間、檢測(cè)總數(shù)、破損數(shù)量、破損率等數(shù)據(jù),用JSON 格式傳輸給小程序,用戶可在小程序?qū)崟r(shí)收到該數(shù)據(jù)集,總體實(shí)現(xiàn)流程如圖18 所示,分揀流程模型如圖19 所示。
圖18 雞蛋分揀總體實(shí)現(xiàn)流程
圖19 雞蛋分揀流程模型
依據(jù)小程序,用戶可更好地掌握雞蛋的裂紋情況,及時(shí)對(duì)雞蛋進(jìn)行調(diào)整。視覺模塊通過無線通信模式,將雞蛋檢測(cè)數(shù)據(jù)反饋至小程序,呈現(xiàn)效果如圖20 所示。
圖20 雞蛋分揀情況小程序界面
基于機(jī)器視覺的裂紋雞蛋分揀系統(tǒng)通過圖像采集、處理,實(shí)現(xiàn)分類及分揀裂紋雞蛋的功能,應(yīng)用了單片機(jī)系統(tǒng)對(duì)撥片進(jìn)行控制,單片機(jī)屬嵌入式系統(tǒng),集軟硬件一體、價(jià)格低,能夠在復(fù)雜環(huán)境中工作,相比傳統(tǒng)的PLC 系統(tǒng)成本低、工作適應(yīng)能力強(qiáng)、效率高[25],更適合于裂紋雞蛋分揀。該系統(tǒng)目前仍存在一定問題,如視覺攝像設(shè)備對(duì)于圖像的采集精度較有限,對(duì)特征圖像的分類模型仍需加強(qiáng)訓(xùn)練等,期待在未來進(jìn)行改進(jìn)。
此外,該系統(tǒng)針對(duì)雞蛋表面是否存在裂紋實(shí)現(xiàn)識(shí)別揀出,可部分解決雞蛋生產(chǎn)的自動(dòng)分揀任務(wù)。在實(shí)際的雞蛋生產(chǎn)鏈中,存在著雞蛋胚體死胚[26]、污染胚等胚體缺陷問題[27],也屬于不符合生產(chǎn)及銷售范疇。下一步研究將結(jié)合機(jī)器視覺、圖形分析等手段,對(duì)于上述復(fù)雜特征實(shí)現(xiàn)檢測(cè)的功能,并結(jié)合更高效的分揀機(jī)構(gòu),實(shí)現(xiàn)全面自動(dòng)化篩選。