王樹才 白 宇 趙世達 楊華建
(1.華中農業大學工學院, 武漢 430070; 2.農業農村部長江中下游農業裝備重點實驗室, 武漢 430070;3.青島建華食品機械制造有限公司, 膠州 266300)
我國是羊肉生產大國,2020年我國羊肉產量為492萬t,同比增長1.0%,已連續多年保持增長趨勢[1]。目前我國的羊肉產品以屠宰初級加工的胴體肉為主,在羊肉加工過程中,羊胴體分割作為羊屠宰加工減損降耗、提質增效的關鍵環節,與羊肉產品增值存在直接關系。但是由于缺乏自動化的分割工藝,現階段大多數企業仍以傳統的倒掛式手工屠宰加工為主[2-4],特別是羊胴體分割區域的識別普遍依賴于操作員的經驗,存在分割效率低、分割精度差等問題,嚴重制約加工水平的提升。因此,實現羊胴體分割區域的自動識別,不僅是研發羊胴體分割機器人視覺系統的基礎,更是實現自動化屠宰的關鍵。
三維視覺作為一項多融合多交叉技術,相比于二維圖像,三維點云具有可以反映場景豐富且完整幾何信息的優勢,可呈現關于對象清晰且完備的結構特征[5],已被應用于作物表型研究[6-10]、家畜體尺測量[11-12]等農業相關領域。此外,國內外研究者結合三維視覺,以不同畜禽的胴體三維點云模型為研究對象,在智能屠宰領域也展開了一定探索,但大部分研究集中在豬腹剖切環節或者面向劈半羊胴體的分割環節[13-15],針對倒掛狀態下羊胴體點云分割的研究較少,且多數研究的方法在分割方案等方面并不完全適用于我國的羊肉分割需求。
本文以巴美肉羊胴體為研究對象,利用激光傳感器獲取羊胴體點云,以羊胴體表面的凹凸性作為分割依據,實現羊胴體點云分割。在此基礎上,選取差異性樣本進行試驗,用以驗證本文方法的適用性和可行性。最后引入歐氏聚類、區域生長兩種點云分割方法進行對比試驗,進一步驗證本文方法的綜合分割能力。
試驗以經過剝皮、去內臟處理后的巴美肉羊胴體作為研究對象,羊胴體點云數據采集于內蒙古巴彥淖爾美洋洋食品股份有限公司的羊胴體分割生產線。使用FreeScan X7型手持式三維激光掃描儀獲取羊胴體點云數據,該激光掃描儀的光學分辨率為0.05 mm,精度可達0.03 mm。
為獲取完整清晰的點云,同時還原羊胴體分割生產線的實際場景,采用將羊胴體倒掛于掛架上,手持掃描儀環繞羊胴體的采集方式。采集時無特定光源與背景,不限定采集時間,將羊胴體表面隨機粘附激光感光片進行三維定位掃描,掃描儀與羊胴體之間的距離控制在200 mm之內,整個點云采集過程如圖1所示。由于同批次的羊胴體存在體型、質量、年齡相近的情況,為增大樣本之間的差異性,針對5批次羊胴體隨機采集了100個樣本。

圖1 羊胴體點云采集示意圖Fig.1 Schematic of point cloud collection of sheep carcass1.掛架 2.掛鉤 3.三維掃描儀 4.羊胴體 5.激光感光片
1.2.1點云去噪
采集點云時,會不可避免地產生一定數量的噪聲點[16],點云噪聲主要分為小振幅噪聲和離群點噪聲[17],噪聲點的存在會影響表面精度[18]。為獲取高質量的羊胴體點云,避免噪聲點對后續分割的影響,在軟件Cloud Compare中手動去除背景中的離群點噪聲,去噪前、后點云數據如圖2所示。

圖2 去噪前后點云數據Fig.2 Point cloud data before and after denoising
1.2.2點云濾波
由三維激光掃描儀采集到的單只羊胴體點云數量多為十萬級,部分樣本點數可達百萬,如此龐大的數據量直接作為算法的輸入會影響運算速度。對于冗余數據進行合理的精簡,可以提高后期的處理速度[19],故需要對采集到的羊胴體點云進行濾波處理。目前常用的點云濾波方法有:直通濾波、半徑濾波、統計離群消除濾波、體素網格濾波[20]等,考慮到后續的分割需求,即在下采樣的同時不破壞點云本身的幾何結構,故采用體素濾波作為羊胴體點云的下采樣方法[21]。根據不同樣本點數,創建不同柵格葉大小的體素濾波器可將單只羊胴體點云數量精簡至2×104~6×104個,該數量的點云在保留羊胴體幾何特征的同時,也能高效完成分割任務。濾波前、后的羊胴體點云如圖3所示。

圖3 濾波前后點云數據Fig.3 Point cloud data before and after filtering
根據文獻[22],將羊胴體分割為后腿腱、帶臀去腱腿、鞍肉、頸肉、肩肉、前腿腱等6分體,分割示意圖如圖4所示。

圖4 羊肉分割技術規范示意圖Fig.4 Schematic of mutton segmentation specifications1.后腿腱 2.帶臀去腱腿 3.鞍肉 4.頸肉 5.肩肉 6.前腿腱
以上各分體的交界處,羊胴體表面往往具有較為明顯的局部凹凸性突變。在流水線分割場景中,操作員便以此幾何特征的變化作為實際分割依據。基于上述思路,本文使用了一種基于表面凹凸性的羊胴體點云分割方法[23],該方法的具體實現步驟如下:
(1)由于凹凸性是定義在超體素鄰接圖中的公共邊上,故參照文獻[24]中的方法將羊胴體點云超體素化,根據文獻[25]中的方法對超體素公共邊進行凹凸性判斷,判斷方法為
C=n1d-n2d
(1)
其中
(2)
式中n1、n2——兩相鄰超體素的法向量
x1、x2——兩相鄰超體素的質心位置向量
若C≥0,則該邊為凸;若C<0,則該邊為凹。
(2)將兩個相鄰超體素的公共邊抽象成一個包含方向、凹凸性等幾何特征的歐幾里得邊緣云。每個歐幾里得邊緣云的坐標為其連接的兩超體素的平均值(x1,x2),方向的計算方法與式(2)相同。2個超體素法向量之間夾角的計算式為
|α|=arccos(n2n1)
(3)
若α>0,代表該歐幾里得邊緣云為凹;若α<0,代表該歐幾里得邊緣云為凸。
(3)由于分割往往發生在凹度更顯著的位置,故將凹凸性不同的歐幾里得邊緣云賦予不同的權重,計算式為
ω(α)=H(α-βthresh)
(4)
其中,H代表單位階躍函數,凹度公差角βthresh設為10°,以忽略弱凹度和來自噪聲點云的凹度。該步驟將所有凹點權重設為1,將所有凸點權重設為0。
(4)為實現對點云的受約束分區和局部分割,設置得分評估函數
(5)
其中

sm——模型表面法向量

(5)根據步驟(4)計算得出的結果,利用隨機采樣一致算法[26]確定切割平面,提取出此平面上的所有點云,以此作為最終的分割平面,完成羊胴體點云分割。
引入精確度、召回率、F1值和總體準確率對單只羊胴體點云的分割精度進行評估[27],按照《羊肉分割技術規范》在軟件Cloud Compare中手動分割羊胴體點云,以此作為分割的真實值。
基于表面凹凸性的羊胴體點云分割主要包含4個步驟:采集羊胴體點云,經過預處理后作為待分割樣本;基于羊胴體表面凹凸變化等幾何特征,完成羊胴體點云分割;通過處理差異性點云樣本,驗證本文方法的適用性;與常用點云分割方法進行對比試驗,進一步驗證本文方法的綜合分割能力。流程如圖5所示。

圖5 羊胴體點云分割試驗流程圖Fig.5 Flow chart of segmentation test of sheep carcass point cloud
本文算法基于Visual Studio 2017,PCL1.9.1點云庫運行,試驗的硬件環境為Intel Core i7-9750處理器,NVIDIA GeForce GTX 1660Ti顯卡;計算機操作系統為Windows 10專業版。
本文方法首先將羊胴體點云超體素化,獲得超體素鄰接圖。影響超體素化的參數主要有:體素分辨率Rvoxel、種子分辨率Rseed,影響分割精度的參數為最小分割得分Smin,其余參數設在合理范圍內即可。試驗發現,Rvoxel過小,無法形成超體素;Rvoxel過大導致分辨率降低,丟失局部凹凸性特征。Rseed影響超體素劃分,Rseed過小,會導致算法效率偏低;Rseed過大,鄰接超體素間特征差異變小。影響最終分割精度的主要參數為Smin,若Smin設置過小會造成過分割,設置過大會造成分割精度不足,無法滿足實際分割要求。在確定最佳分割參數時,采用窮舉策略,通過多次分割試驗,比較不同參數下的分割結果,基于試驗結果確定該樣本參數的最優值。通過多次試驗發現,針對正常體型的羊胴體點云樣本,取Smin=0.15可達到較好的分割效果。針對特殊體型的羊胴體點云樣本,由于其自身形態結構較復雜,為避免過分割現象,應適當增大該參數的值,取Smin=0.3可達到較好的分割結果。
針對羊胴體點云樣本進行分割試驗,并對結果進行評價。獲取羊胴體點云的分割結果,分別計算6分體的分割精確度與召回率。同時,為判斷本方法是否具有良好的實時性,記錄處理單只羊胴體點云的時長,并求平均值。部分樣本的分割結果如圖6所示。

圖6 部分羊胴體點云分割結果Fig.6 Results of partial sheep carcass point cloud segmentation
由圖6可知,羊胴體點云被分割為6分體,相鄰兩分體以不同的顏色標明區分,過分割與欠分割現象并不明顯,符合行業分割規范。特別是前腿腱部分,由于該部分點云較密集,各處幾何特征較復雜,且與肩肉、鞍肉較為接近,本文方法均可準確識別分割。同時,分體之間界線清晰且平整,后續可作為羊體分割機器人的分割軌跡。最終,后腿腱、帶臀去腱腿、鞍肉、肩肉、頸肉、前腿腱的平均分割精確度分別為92.7%、90.7%、92.6%、93.2%、92.5%、92.2%,平均召回率分別為86.0%、93.2%、92.8%、91.6%、90.9%、93.4%,處理單只羊胴體點云的時長為18.82 s,結果表明該方法適用于針對智能屠宰領域的羊胴體點云分割,同時具有一定的實時性。
羊胴體點云相鄰分體之間往往存在明顯的凹凸性變化,突變處即為待分割處,但部分樣本的部分分體之間并無顯著的凹凸性變化。為驗證本文方法針對上述分體的分割效果,隨機選取若干羊胴體點云樣本,在軟件Cloud Compare中手動提取有明顯凹凸性突變的多分體以及無明顯凹凸性突變的多分體,以此作為待分割樣本,展開分割試驗。分割結果如圖7所示,圖中自上而下分別為:帶臀去腱腿與鞍肉的點云組合,頸肉、肩肉與前腿腱的點云組合。

圖7 多分體組合點云分割結果Fig.7 Results of multi-split combined point cloud segmentation
由圖7可知,帶臀去腱腿與鞍肉之間的過渡相對平滑,分界處并無較明顯的凹凸性變化,而頸肉、肩肉與前腿腱三分體之間特征差異較大,其相鄰兩分體的分界處有較明顯的凹凸性變化。針對上述兩種點云組合,本文方法均取得較好的分割結果,過分割與欠分割現象并不顯著,說明本文方法能適應凹凸性突變存在差異的點云樣本組合。
為進一步驗證本文方法的適用性和可行性,根據體型的不同選取3類器官完整、結構清晰的羊胴體點云,模擬生產線處理各類羊胴體的實際情況進行試驗。其中樣本1代表結構最復雜的一類羊胴體,該樣本經濾波后包含56 010個點;樣本2代表體型正常的一類羊胴體,該樣本經濾波后包含43 185個點;樣本3代表體型最小的一類羊胴體,該樣本經濾波后包含22 296個點。比較多次試驗結果并結合文獻[28-29],選取各樣本的最佳分割結果,其參數設置如下:樣本1,Rvoxel=0.3,Rseed=0.75,Smin=0.3;樣本2,Rvoxel=0.35,Rseed=0.8,Smin=0.15;樣本3,Rvoxel=0.005,Rseed=0.2,Smin=0.3。3個樣本的分割結果如圖8所示,評價各分體分割精度的指標如表1所示。

表1 多體型樣本分割結果評價Tab.1 Evaluation of segmentation results of multi-body samples %

圖8 多體型羊胴體點云分割結果Fig.8 Results of multi-body sheep carcass point cloud segmentation
從圖8中可以看到,在面對體型有明顯差異的羊胴體點云樣本,本文方法仍能較好地完成分割任務,正確將羊胴體點云分割為6分體,各分體的分割效果沒有明顯變化,同時分體之間的界線清晰準確。特別是樣本1,該點云樣本對應的羊胴體質量較大,
導致各分體幾何特征較復雜。對比其他樣本可知,樣本1帶臀去腱腿和肩肉處體積較大,上述兩分體在橫向有一定延展,部分與頸肉、前腿腱在豎直方向上處于同一平面,可能導致在確定分割平面時出現誤分割。最終,本文方法對該樣本也較好完成分割,誤分割現象并不明顯。以上結果說明樣本體型差異對本文方法的分割效果影響并不顯著,該分割方法能適應羊胴體分割生產線的實際情況,能滿足處理各種體型及質量羊胴體樣本的需求。
由表1可知,樣本3后腿腱的分割召回率和帶臀去腱腿的分割精確度低于其余樣本的同分體,具體原因為:3號羊胴體體型較小、質量較輕,其后腿處表面幾何特征并不明顯;同時由于羊胴體倒掛于掛架上,在自身重力的影響下后腿處丟失部分凹凸性特征,進而導致本屬于后腿的點云被誤分割為帶臀去腱腿。
目前可用于點云分割的算法較多,但面對不同場景和對象,不同算法的分割效果有較大差異。為進一步驗證本文方法的綜合分割能力,繼續以大、中、小3個不同體型的羊胴體點云樣本為例,引入點云分割任務中常用的區域生長[30]、歐氏聚類[31]兩種算法進行對比試驗。其中,影響區域生長算法分割效果的參數為平滑閾值,影響歐氏聚類算法分割效果的參數為歐氏距離。使用上述兩種算法對羊胴體點云進行分割對比試驗時,采用逼近原則確定算法參數最優取值,即從過大和過小兩極端值開始,逐步向中間值逼近,最終得到最優參數,并以該參數下的分割結果作為最終結果參與評估。各算法分割結果如圖9所示。

圖9 不同算法分割結果對比Fig.9 Comparison of segmentation results of different algorithms
從圖9中可以看到,區域生長與歐氏聚類兩種算法只能近似分割得到頸肉、前腿腱、后腿腱3部分,對帶臀去腱腿、鞍肉以及肩肉的分割效果較差;針對近似分割出的區域,還存在一定程度過分割與欠分割現象。同時,各分體之間界線不規則且較模糊,無法作為后續機器人的分割軌跡;上述算法均未能很好地完成分割任務,其原因在于未利用羊胴體點云在局部區域具有的凹凸性等深層次幾何特征,僅依靠平滑閾值、距離閾值等參數作為分割依據,故無法將羊胴體點云精確分割為多分體;相比于本文方法,區域生長與歐氏聚類均未能獲得清晰平直分割邊界的原因在于:本文確定分割平面時引入了隨機采樣一致算法,在局部對點云進行約束加權以獲得清晰平整的分割邊界。
表2列出了評價上述算法分割效果的量化指標,由于區域生長與歐氏聚類只近似分割出3個分體,故計算整只羊胴體分割精確度、召回率、F1值和總體準確率時,分割得到的分體數量m為3。

表2 不同分割算法結果對比Tab.2 Comparison of results of different segmentation algorithms
從表2可以看出,本文方法的平均精確度、平均召回率、平均F1值和平均總體準確率均高于其余方法,4個指標分別高于區域生長27.1%、11.5%、19.2%、8.9%,高于歐氏聚類10.8%、21.7%、16.3%、16.6%。在分割實時性方面,本文方法、區域生長、歐氏聚類分割單只羊胴體點云的平均耗時分別為18.82、15.37、14.62 s,本文使用的方法略高于其他方法,其原因可能是本文方法對鄰接圖進行凹凸性判斷和計算函數得分均需要遍歷每個點云,運算量較大。考慮到其余算法均未能有效完成分割任務,且本文方法平均耗時僅比區域生長高3.45 s,比歐氏聚類高4.2 s,說明本文方法在保證分割精度的同時,也可以兼顧一定的實時性,滿足羊胴體分割生產線的實際需求。
本文分別計算了評價3種方法對各分體分割精度的指標,其結果如圖10、11所示。由于區域生長和歐氏聚類無法對帶臀去腱腿、鞍肉、肩肉完成有效分割,故僅討論剩余可完成分割的分體。
由圖10、11可知,本文方法對后腿腱、頸肉、前腿腱的分割精確度略優于區域生長與歐氏聚類,分割召回率均優于其余兩種方法。最終,本文方法對上述3分體的分割精確度為92.7%、92.5%、92.2%,分別高于歐氏聚類18.4、6.9、2.3個百分點,高于區域生長23.6、17.9、18.2個百分點;本文方法對上述3分體的分割召回率為86.0%、90.9%、93.4%,分別高于歐氏聚類1.2、36.0、8個百分點,高于區域生長2.6、10.7、11.4個百分點。結果表明本文方法能滿足實際生產線對羊胴體各分體分割的精度要求。

圖10 各分體分割精確度Fig.10 Segmentation accuracy of each split

圖11 各分體分割召回率Fig.11 Recall rate of each split segmentation
(1)基于羊胴體表面凹凸性等幾何特征,實現了對羊胴體點云的自動分割。分割平均精確度、平均召回率、平均F1值和平均總體準確率分別為92.3%、91.3%、91.8%、92.1%,處理單只羊胴體點云的平均時長為18.82 s,說明本文方法在分割精度上能夠滿足實際生產線的需求,同時兼顧一定的實時性。
(2)設計了多分體組合點云、多體型羊胴體點云分割試驗,試驗結果表明針對樣本差異性,本文方法仍能保持較高的分割精度,具有良好的適用性。
(3)與區域生長、歐氏聚類2種點云分割方法相比較,本文方法處理單只羊胴體點云的平均耗時高于歐氏聚類4.2 s,高于區域生長3.45 s,但平均精確度、平均召回率、平均F1值和平均總體準確率分別優于區域生長27.1%、11.5%、19.2%、8.9%,優于歐氏聚類10.8%、21.7%、16.3%、16.6%,綜合分割能力較好。