單佳楠,鄭曉偉
(1 上海海洋大學(xué)工程學(xué)院,上海 201306;2 中國水產(chǎn)科學(xué)研究院漁業(yè)機(jī)械儀器研究所,上海 200092)
近年來,隨著金鯧魚(Trachinotusovatus)人工育苗與深水網(wǎng)箱養(yǎng)殖兩大關(guān)鍵技術(shù)的突破,推動了金鯧魚產(chǎn)業(yè)的蓬勃發(fā)展。早在2016年,金鯧魚就已成為國內(nèi)五大海水養(yǎng)殖魚類之一,2020年中國金鯧魚年總產(chǎn)量達(dá)18萬t[1]。金鯧魚主要的加工產(chǎn)品種類有凍品、冰鮮以及少量的活鮮魚,前處理加工需按照不同的質(zhì)量進(jìn)行分級。目前,金鯧魚分級主要依賴人工稱重分級,這種分級方法效率低,且分選受人工主觀因素影響易產(chǎn)生誤差,難以滿足快速生產(chǎn)的要求。隨著計(jì)算機(jī)技術(shù)的發(fā)展,機(jī)器視覺技術(shù)也越來越多地應(yīng)用到自動化行業(yè)當(dāng)中[2],如物流、金屬加工、食品加工等。機(jī)器視覺技術(shù)不僅可以提高生產(chǎn)效率,還能提升產(chǎn)品質(zhì)量[3],能夠無接觸、無干擾地獲取所需信息、并且在人眼無法達(dá)到的環(huán)境中應(yīng)用。機(jī)器視覺技術(shù)代替人眼是未來發(fā)展的必然趨勢,國內(nèi)外已有相關(guān)研究將機(jī)器視覺技術(shù)應(yīng)用到生產(chǎn)加工當(dāng)中,如多種淡水魚分類[4]、梭子蟹質(zhì)量估計(jì)[5]、魚新鮮度檢測[6]、大黃魚弧菌病監(jiān)測[7]等。
本研究利用機(jī)器視覺技術(shù)對金鯧魚圖像進(jìn)行采集、預(yù)處理后,對預(yù)處理后圖像的有效特征逐一計(jì)算分析,建立多個(gè)金鯧魚質(zhì)量預(yù)測模型,通過分析對比,選取預(yù)測誤差最小的預(yù)測模型,為后續(xù)金鯧魚自動化質(zhì)量分級加工提供理論依據(jù)。
本研究共購入產(chǎn)自海南昌江棋子灣深海海域的養(yǎng)殖冷凍金鯧魚100條,在解凍和去除表面水分后對其逐一稱重,測得其規(guī)格區(qū)間為302.3~507.8 g,并對每條金鯧進(jìn)行編號,其中80條將作為本次研究的建模樣本,其余20條作為預(yù)測模型的檢驗(yàn)樣本。
為獲取金鯧魚圖像的特征參數(shù),需構(gòu)建金鯧魚圖像采集系統(tǒng)。該系統(tǒng)由硬件和軟件兩個(gè)部分組成,硬件部分主要包含攝像頭固定支架、LED光源、遮光棚、純色背景布、視覺相機(jī)、樹莓派計(jì)算機(jī)等[8]。研究方法流程如圖1所示。
圖1 研究方法流程圖Fig.1 Research method flow chart
軟件部分主要包含Python 3.9與OpenCV庫,建模過程主要使用Excel與SPSS軟件。采集過程相機(jī)始終為固定高度,便于后期標(biāo)定。相機(jī)分辨率為1 920×1 080,230萬有效像素,采用USB3.0傳輸數(shù)據(jù)。樹莓派計(jì)算機(jī)采用Linux開源系統(tǒng),該系統(tǒng)簡潔易上手,非常適合開發(fā)。預(yù)試驗(yàn)中依據(jù)圖像直方圖對不同背景顏色的輪廓提取效果進(jìn)行對比,結(jié)果顯示綠色背景布對于金鯧魚輪廓識別效果更好。本試驗(yàn)主要使用Python語言進(jìn)行編程,程序主要包含圖像采集與預(yù)處理,圖像特征提取兩個(gè)模塊[9]。
由于金鯧魚體態(tài)扁平,且質(zhì)量主要分布在魚體中心部位,魚體厚度區(qū)分較小,因此采用投影圖像作為特征圖像,建立金鯧魚投影圖像特征和金鯧魚質(zhì)量之間的關(guān)系。研究共采集100條金鯧魚圖像,2個(gè)長條形LED燈固定在遮光棚頂部,使用相機(jī)在遮光棚下靜態(tài)拍攝金鯧魚,采集金鯧魚的鏡頭到平面的距離均為35 cm,相機(jī)通過USB3.0與樹莓派計(jì)算機(jī)連接,拍攝后編號保存。圖像采集裝置示意圖及實(shí)物圖如圖2所示。
圖2 圖像采集裝置示意圖及實(shí)物圖Fig.2 Schematic diagram and physical map of the image acquisition device
1.4.1 圖像去噪
為減少圖像噪聲,將原圖像進(jìn)行高斯濾波處理,高斯濾波去噪就是對整幅圖像像素值進(jìn)行加權(quán)平均,針對每一個(gè)像素點(diǎn)的值,都由其本身值和鄰域內(nèi)的其他像素值經(jīng)過加權(quán)平均后得到[10]。
本試驗(yàn)采用高斯濾波核為5×5,經(jīng)高斯消噪后的圖像如圖3所示。
圖3 高斯濾波后的金鯧魚圖像Fig.3 Image of golden pomfret after gaussian filtering
1.4.2 閾值處理
閾值處理是通過去除圖像中像素值超出某一閾值或低于某一閾值的像素點(diǎn)[11]。其函數(shù)表達(dá)式為:
(1)
依據(jù)獲取的圖像直方圖和多次閾值分割嘗試,確定閾值maxVal為5分割效果較好,得到二值圖像,實(shí)現(xiàn)背景和前景的有效分離[12]。由于后續(xù)圖像特征處理需要基于二值化圖像,因此對灰度化后的圖像二值化處理。去除背景后圖像直方圖與未去除前圖像對比如圖4所示。
圖4 圖像直方圖Fig.4 Image histogram
1.4.3 圖像灰度與二值化處理
在灰度圖像中像素的顏色值被稱為灰度,也指黑白圖像中像素點(diǎn)的顏色深淺程度,點(diǎn)值的范圍從 0到255取整數(shù),黑色為0,白色為255[13]。圖像灰度化是圖像預(yù)處理的重要步驟,可為后續(xù)圖像分割、識別與分析等操作服務(wù)。圖像灰度化處理有以下幾種方式:分量法、最大值法、平均值法、加權(quán)平均法[14]。
本次試驗(yàn)采用加權(quán)平均法,將3個(gè)分量以不同的權(quán)值進(jìn)行加權(quán)平均。由于人眼對綠色的敏感最高,對藍(lán)色敏感最低,對RGB三分量進(jìn)行加權(quán)平均能得到較合理的灰度圖像。研究采用常用的經(jīng)驗(yàn)公式也被稱為心理學(xué)灰度公式[15]。
Gray=0.114B+0.587G+0.299R
(2)
在二值圖像中添加一些位于黑色與白色之間的顏色深度,就構(gòu)成了灰度圖像。從最暗的黑色到最亮的白色可分為多個(gè)灰度級[16],當(dāng)灰度級最低時(shí)便是二值圖像。
圖5所示為其于灰度化處理后的金鯧魚圖像。
圖5 灰度化處理后的金鯧魚圖像Fig.5 Image after grayscale processing
二值圖像的本質(zhì)是只存在黑、白兩種顏色的圖像,而且像素僅有0、255兩種取值,其中0表示黑色,255表示白色。
圖6所示為基于不同maxVal值時(shí)的圖像。
圖6 不同閾值時(shí)的二值圖像Fig.6 Binary diagram of different thresholds
由圖6可得閾值為170時(shí),無法準(zhǔn)確分離前景與背景,當(dāng)閾值為200時(shí)能較好地區(qū)分前景與背景,且比閾值為230時(shí)顯示更多的輪廓細(xì)節(jié)。依據(jù)公式(2)和多次試驗(yàn),得出設(shè)置閾值maxVal為200圖像處理效果最好。二值化處理后得到的金鯧魚圖像如圖7所示。
圖7 二值化處理后的圖像Fig.7 Image after binarization
1.4.4 形態(tài)學(xué)去噪
從二值處理后的圖像中觀察到,在圖像輪廓周圍存在白色干擾點(diǎn)。因此對圖像進(jìn)行形態(tài)學(xué)操作來過濾圖像中存在的干擾點(diǎn)。形態(tài)學(xué)操作包含:腐蝕、膨脹、開運(yùn)算、閉運(yùn)算、梯度運(yùn)算、黑帽運(yùn)算、禮帽運(yùn)算等操作[17]。
腐蝕操作能把位于圖像邊緣的像素點(diǎn)去除,使圖像沿輪廓邊緣向內(nèi)收縮[18],也能消除小于特定大小的結(jié)構(gòu)。腐蝕操作能使二值圖像中的前景輪廓更加明朗,從而實(shí)現(xiàn)消除噪聲、要素分割等功能。在腐蝕操作中,一般使用單個(gè)結(jié)構(gòu)元(kernel)來逐一像素地遍歷將被腐蝕的圖像,并通過結(jié)構(gòu)元與被腐蝕圖像的關(guān)系來確定處理結(jié)果[19]。腐蝕與膨脹操作都是逐個(gè)像素地來決定像素值,每次判定的點(diǎn)均為和結(jié)構(gòu)元中心點(diǎn)對應(yīng)的點(diǎn)[20]。
開、閉運(yùn)算融合了前面兩種方法,在運(yùn)算順序上有些不同。開運(yùn)算操作是先將圖像腐蝕操作,再對腐蝕后的圖像進(jìn)行膨脹[19]。因此,開運(yùn)算可以實(shí)現(xiàn)去噪、計(jì)數(shù)等功能。閉運(yùn)算首先進(jìn)行的是膨脹運(yùn)算,再進(jìn)行腐蝕運(yùn)算[21]。結(jié)合本次金鯧魚灰度圖像的特點(diǎn)和需求,基于上述原理本研究對金鯧魚二值像進(jìn)行開運(yùn)算操作,經(jīng)過對比得出當(dāng)結(jié)構(gòu)元kernel=15時(shí),既能保留原始圖像的輪廓特點(diǎn),又能準(zhǔn)確去除圖像周邊噪點(diǎn)。
如圖8所示,當(dāng)開運(yùn)算的kernel較小時(shí),邊緣會產(chǎn)生影響結(jié)果的邊緣“氣泡”,當(dāng)kernel=15時(shí),輪廓細(xì)節(jié)得到了較好的保留,并且消除了“氣泡”,當(dāng)kernel=20時(shí),從圖像中看到圖像鋸齒狀更加明顯,且輪廓細(xì)節(jié)丟失較多。
圖8 kernel值不同時(shí)的邊緣輪廓圖Fig.8 Edge contour diagram with different kernel values
此外對于輪廓擬合曲線的選定不同kernel值也會有所影響,結(jié)果如圖9所示。綜上所述,因此形態(tài)學(xué)操作的kernel值選取為15。
圖9 kernel值不同時(shí)輪廓的擬合直線圖Fig.9 Fitting line graph of contour with different kernel values
特征提取包含圖像面積、周長、長短軸、去魚鰭后圖像面積等參數(shù),人工測量特征包括含魚鰭體寬與體長、不含魚鰭體寬與體長、魚眼直徑、頭鰭寬、魚尾部最窄處寬。
由于特征參數(shù)均由圖片信息獲取,所得的參數(shù)單位都以像素為單位,因此需要獲取實(shí)際物理尺寸和像素之間的換算關(guān)系,通過圖像標(biāo)定的方法,建立相機(jī)成像的幾何模型[22]。
對標(biāo)定圖像在相同條件下擺放位置不同的同一黑色正方形塊拍攝了3張圖像。
已知拍攝圖像為50 mm×50 mm的正方形,為減小誤差,對三張圖的計(jì)算結(jié)果取平均值,結(jié)果如表1所示,得到像素面積平均值為43 308.5,像素周長平均值為846.48,依據(jù)公式,可得比例系數(shù)ε1=846.48/200≈4.23,ε2=43 308.5/2 500=17.32。最終換算成實(shí)際尺寸數(shù)據(jù)部分如表2所示。
表1 圖像標(biāo)定面積和周長測量表Tab.1 Image calibration area and perimeter measurement scale
表2 樣本數(shù)據(jù)平均值Tab.2 Average value of sample data
為了減小由于魚體輪廓邊緣陰影,魚體擺放并未完全水平等因素造成的投影面積誤差,研究對同一魚體背面和正面圖像均做了特征提取,并將平均值作為建模數(shù)據(jù)樣本。
魚體參數(shù)與質(zhì)量相關(guān)系數(shù)如表3所示。
表3 魚體參數(shù)與質(zhì)量相關(guān)系數(shù)Tab.3 Correlation coefficient between body parameters and weight
決定系數(shù)R2計(jì)算方式如式(3)所示。
(3)
金鯧魚質(zhì)量預(yù)測模型如表4所示。
基于80組已記錄的數(shù)據(jù),利用SPSS軟件建立了如表5所示的質(zhì)量預(yù)測模型。
表5 金鯧魚質(zhì)量預(yù)測模型Tab.5 Weight prediction model of golden promfret
由于金鯧魚質(zhì)量和圖像面積之間存在較強(qiáng)的相關(guān)性,通過對模型分析,發(fā)現(xiàn)金鯧魚質(zhì)量和圖像面積之間的膨脹因子VIF值大于10,因子間存在嚴(yán)重共線性,因此采用主成分分析法進(jìn)行一元線性建模,其中主成分公式:
X=0.288S*+0.279L*+0.259D*+0.257d*
(4)
式中:上標(biāo)*表示Z標(biāo)準(zhǔn)化后的數(shù)據(jù)[26]。
主成分一元線性建模的決定系數(shù)R2為0.875,線性建模方法無法很好地?cái)M合質(zhì)量預(yù)測曲線,因此考慮主成分曲線回歸的方法建模。由表6可得,主成分曲線回歸中二次和三次模型R2較高,為0.877,其中二次曲線回歸具有最小的標(biāo)準(zhǔn)估計(jì)的誤差,但對于模型擬合效果提升程度不大。
表6 主成分曲線模型Tab.6 Principal component curve model
試驗(yàn)采集了樣本的魚鰭質(zhì)量、去除魚鰭后的金鯧魚魚體面積,并且計(jì)算了魚鰭質(zhì)量占比α1和去魚鰭后圖像投影面積占比α2。建立以α1、α2、S為因子的線性回歸模型,該模型絕對決定系數(shù)R2達(dá)到了0.919。該模型因子間不存在明顯共線性,因此該模型可用于質(zhì)量預(yù)測,得到質(zhì)量預(yù)測模型方程:
W=27.287α1×100+0.825α2×100+0.001456S-239.244
(5)
利用一組20條金鯧魚檢驗(yàn)樣本進(jìn)行模型驗(yàn)證,魚體質(zhì)量預(yù)測值部分大于實(shí)際值。驗(yàn)證結(jié)果如圖10所示。
預(yù)測結(jié)果平均相對誤差2.73%,優(yōu)化后平均相對誤差為2.43%。平均絕對誤差10.81 g,優(yōu)化后平均絕對誤差為9.62 g。均方根誤差RMSE為14.22 g,優(yōu)化后均方根誤差RMSE為12.78 g。優(yōu)化后的模型預(yù)測值和真實(shí)值線性回歸曲線,決定系數(shù)R2為0.944,高于優(yōu)化前模型的決定系數(shù)(0.930)。
2.3.1 魚鰭面積對模型的影響
去魚鰭前后投影圖像如圖11所示。有研究表明[28],由于魚體各部位密度不同,對魚體各部位投影面積進(jìn)行校正可提高模型預(yù)測精度。金鯧魚魚鰭成薄片狀,由圖11可知,魚鰭(含腹背鰭、尾鰭)占總面積比率較大,單位面積質(zhì)量小。
依據(jù)試驗(yàn)測量數(shù)據(jù)得:去魚鰭后面積占比最大值為85.41%,最小值為81.72%,平均值為83.3%??傮w上,魚鰭面積隨魚個(gè)體增大而增大,去魚鰭后面積占比呈現(xiàn)相對穩(wěn)定的趨勢。但去魚鰭后的圖像投影面積是采用后處理手段獲取的參數(shù),圖像實(shí)時(shí)處理無法直接獲取,因此將80組數(shù)據(jù)去魚鰭后圖像投影面積占比取平均值,式(5)中α2取平均值作為預(yù)測模型方程常數(shù)項(xiàng)。
2.3.2 魚鰭質(zhì)量對模型的影響
張志強(qiáng)等[29]的研究顯示魚體質(zhì)量與魚體各部位區(qū)域質(zhì)量具有較大關(guān)聯(lián),通過魚體各部位質(zhì)量比率對投影面積調(diào)整提升模型預(yù)測效果。華元渝[30]采用了多種方法建立魚體長、體周長、體高與魚質(zhì)量間關(guān)系。由于魚腹背鰭、魚尾鰭占魚體質(zhì)量較小,但在投影面積中占比較大。因此考慮計(jì)算金鯧魚魚鰭質(zhì)量占總質(zhì)量的比率因素對模型的影響。依據(jù)測量數(shù)據(jù)得:魚鰭質(zhì)量占總質(zhì)量最大值為1.40%,最小值為1.01%,平均值為1.21%。魚鰭質(zhì)量隨魚體質(zhì)量增大而增大,呈線性相關(guān)趨勢,魚鰭質(zhì)量占比變化趨于穩(wěn)定。因此式(5)中α1可選取平均數(shù)作為常數(shù)項(xiàng)。
2.3.3 試驗(yàn)誤差對模型的影響
由試驗(yàn)結(jié)果可知,預(yù)測模型能夠?qū)崿F(xiàn)對金鯧魚質(zhì)量的預(yù)測,但仍存在一定誤差,通過對試驗(yàn)環(huán)節(jié)進(jìn)行分析,可能存在以下問題:一是受試驗(yàn)客觀條件限制,獲取圖像的背景存在水漬或污染,影響圖像的分割及參數(shù)值;二是試驗(yàn)材料的影響,可能存在魚的批次不同,造成魚體個(gè)體形態(tài)有輕微差異,另外魚體實(shí)際質(zhì)量稱重時(shí)只去除了魚體表面水分,魚體內(nèi)水分含量存在個(gè)體差異,引起參數(shù)結(jié)果誤差;三是提出的預(yù)測模型數(shù)量有限,樣本數(shù)量有限,這些試驗(yàn)誤差會對模型預(yù)測精度產(chǎn)生影響。為了提高模型精度,可以在提高精度的情況下增加樣本數(shù)量或建立更為復(fù)雜的預(yù)測模型。
采用魚體投影圖像參數(shù)建立質(zhì)量預(yù)測模型研究較多,但研究都未指出魚體正反投影圖像處理結(jié)果存在計(jì)算誤差。本研究針對采集的金鯧魚圖像,將其正反投影圖像參數(shù)取平均值,作為建模所需的因子,以此減小正反投影圖像差異對模型的影響。金鯧魚魚鰭面積、魚鰭質(zhì)量與魚體質(zhì)量呈線性相關(guān),但魚鰭質(zhì)量占比α1、去魚鰭面積占比α2在較小范圍內(nèi)變化。因此本研究通過α1、α2對模型進(jìn)行校正。結(jié)果表明,基于圖像面積S、魚鰭質(zhì)量占比α1、去魚鰭面積占比α2的線性回歸模型具有較高的預(yù)測精度和較小的標(biāo)準(zhǔn)估計(jì)誤差,模型的決定系數(shù)為0.919,優(yōu)于主成分回歸方法與一元線性回歸法?;貧w模型預(yù)測值與真實(shí)值決定系數(shù)R2為0.944,平均相對誤差為2.43%,標(biāo)準(zhǔn)差為2.32%。由試驗(yàn)結(jié)果知,通過本研究建立的金鯧魚質(zhì)量預(yù)測模型能夠在無接觸的情況下預(yù)測出金鯧魚的質(zhì)量,為后續(xù)金鯧魚自動化質(zhì)量分級提供服務(wù)。