王 玲 徐 偉 杜開煒 盧 偉 朱家豪 張 俊
(1.南京農(nóng)業(yè)大學(xué)工學(xué)院, 南京 210031; 2.江蘇省現(xiàn)代設(shè)施農(nóng)業(yè)技術(shù)與裝備工程實(shí)驗(yàn)室, 南京 210031)
褐蘑菇是一種名貴的高蛋白、低脂肪、無膽固醇、色味俱全、藥食兼優(yōu)的美味食用菌[1],價(jià)格昂貴,市場(chǎng)缺口很大。根據(jù)菇形大小,褐蘑菇可分為大褐菇(Portabella)與小褐菇(Crimini),其價(jià)格與蘑菇的直徑大小有關(guān),因此,褐蘑菇種植企業(yè)需要選擇性采摘特定尺寸的蘑菇。目前國(guó)內(nèi)外均采用人工方式采摘褐蘑菇,費(fèi)工費(fèi)時(shí)、成本高、勞動(dòng)強(qiáng)度大,急需研究一種能夠替代人工進(jìn)行蘑菇原位在線測(cè)量、采摘的智能蘑菇采摘機(jī)器人設(shè)備。
現(xiàn)有的蘑菇圖像分割、識(shí)別及定位研究都是基于二維彩色相機(jī)的。陳紅等[2-4]針對(duì)流水線上藍(lán)色背景的蘑菇,利用形狀、紋理特征和模式識(shí)別算法實(shí)現(xiàn)了蘑菇的在線檢測(cè)。周云山等[5]和俞高紅等[6]利用苗床、蘑菇邊界、蘑菇中心的灰度值逐漸增加的特點(diǎn),考慮到蘑菇的中心不重疊,用一個(gè)較高的閾值搜索蘑菇的中心區(qū)域,然后由中心向某一方向搜索蘑菇的邊界點(diǎn),再沿著邊界的切線方向搜索其余邊界點(diǎn),提取蘑菇的邊界、周長(zhǎng)、面積和中心坐標(biāo)??梢?,現(xiàn)有蘑菇圖像的背景分割借助了苗床與蘑菇灰度的顯著差異或人工背景,并且尚未進(jìn)一步分割粘連的蘑菇,基于二維圖像坐標(biāo)系下定位的蘑菇并未轉(zhuǎn)換到三維世界坐標(biāo)系下。
近年來,由于果實(shí)的分割與檢測(cè)對(duì)顏色空間高度敏感,針對(duì)光照條件不穩(wěn)定并且果實(shí)與背景的顏色區(qū)分不顯著的情形,基于有源測(cè)距獲得的深度圖像在高通量植物表型檢測(cè)方面已逐漸顯露出優(yōu)勢(shì)[7],基于農(nóng)業(yè)場(chǎng)景深度信息采集玉米、草莓冠層、果樹等植物表面的三維點(diǎn)云,實(shí)現(xiàn)了植物表面的三維重建[8-15],通過測(cè)量棉株、玉米、油菜花、甜椒的直徑、高度、3D曲面特征等株型參數(shù)來評(píng)價(jià)其生長(zhǎng)狀態(tài)和產(chǎn)量[16-20]??梢姡c灰度圖像相比,深度圖像不受光照陰影及物體光滑表面紋理干擾,可以得到更可靠的果實(shí)幾何信息,為實(shí)現(xiàn)田間果實(shí)圖像的背景分割、識(shí)別及定位積累了豐富的經(jīng)驗(yàn)。
本文針對(duì)褐蘑菇工廠化種植環(huán)境光照不均勻,菇床土壤中含有大量菌絲,菌絲不斷地出茬、生長(zhǎng),蘑菇的灰度與土壤背景沒有顯著差異的情況,采用基于深度圖像的背景分割方法,對(duì)蘑菇圖像背景進(jìn)行分割,進(jìn)一步分割粘連的蘑菇,并測(cè)量蘑菇在世界坐標(biāo)系下的位置、直徑、傾斜角等。
以揚(yáng)州奧吉特生物科技有限公司的褐蘑菇生產(chǎn)菇房為實(shí)驗(yàn)地,現(xiàn)場(chǎng)采集不同光源環(huán)境下的菇床深度視頻流,總計(jì)185幅深度圖像;其中,頂層光源下采集的51幅圖像光照均勻、亮度較高,側(cè)光源下采集的60幅圖像光照不均勻,菇房中央采集的74幅圖像光照較均勻、亮度較低??梢姡S光照條件不穩(wěn)定。視頻采集現(xiàn)場(chǎng)如圖1所示。
圖1 視頻采集現(xiàn)場(chǎng)Fig.1 Video capture scenes
每一間菇房里有2個(gè)蘑菇架,每一個(gè)菇架有6層,每一層有18個(gè)菇床,每一個(gè)菇床上方空間長(zhǎng)1 340 mm、寬1 400 mm、高400 mm,菇床里的營(yíng)養(yǎng)土含有大量菌絲,土面高出邊框至多50 mm;根據(jù)市場(chǎng)需求將褐蘑菇分為香啡、貴啡、牛排、大褐4種,對(duì)應(yīng)菌蓋直徑為40~50 mm、60~70 mm、80~90 mm、100 mm,對(duì)應(yīng)菌柄高度為20、30、30、55 mm,主產(chǎn)牛排菇。擬研制的蘑菇采摘機(jī)器人沿著菇架自動(dòng)滑行、停靠、升降于菇床旁邊,機(jī)械臂伸入菇床自動(dòng)完成采摘任務(wù)。采摘過程中,機(jī)械臂呈S型遍歷菇床,安裝在機(jī)械臂末端的3D相機(jī)沿途采集菇床深度視頻流并實(shí)時(shí)送入工控機(jī),由工控機(jī)計(jì)算每個(gè)蘑菇在世界坐標(biāo)系下的位置以及直徑和傾斜度,供機(jī)械手選擇性采摘直徑為80~90 mm的牛排菇。
依據(jù)菇床上方空間400 mm的高度限制,本實(shí)驗(yàn)選用尺寸為110 mm×12.6 mm×4.1 mm的消費(fèi)級(jí)Intel RealSense Camera SR300型嵌入式結(jié)構(gòu)光3D相機(jī),其為RGB+Depth型彩色、紅外雙目相機(jī)。相機(jī)工作時(shí),紅外激光發(fā)射器向被測(cè)物體表面發(fā)射結(jié)構(gòu)光斑,紅外攝像頭捕獲紅外光斑的相位偏移后獲取深度圖像,可避免彩色圖像受限于光照條件的影響。其工作參數(shù)為:深度量程200~1 500 mm,測(cè)量誤差不超過1%,在實(shí)際應(yīng)用中可增加到2%;紅外激光發(fā)射器波長(zhǎng)860 nm,發(fā)射角72.5°×60°;紅外攝像頭視角71.5°×55°,視頻采集速率60 f/s。
選用研龍HS201-6C型工控機(jī),載有Intel酷睿 I5 CPU,支持USB3.0、RS485、RS232通信接口,安裝64位Windows 10系統(tǒng)、C/C++語言編譯器Visual Studio 2015、計(jì)算機(jī)視覺函數(shù)庫OpenCV-3.1和相機(jī)驅(qū)動(dòng)程序Intel RealSense SDK,以采集菇床深度視頻流。
3D相機(jī)所采集的菇床深度圖像為分辨率為640像素×480像素的灰度圖像,其灰度值代表相機(jī)平面至菇床表面點(diǎn)云的距離(單位:mm),因而蘑菇表面呈深灰色,土壤表面呈淺灰色(圖2a)。觀察發(fā)現(xiàn),相機(jī)的成像特性使得結(jié)構(gòu)光投射到凹凸表面易發(fā)生測(cè)不到現(xiàn)象,產(chǎn)生了177 054個(gè)灰度為零的噪聲點(diǎn),因而蘑菇邊緣區(qū)域、土壤凹凸不平區(qū)域以及圖像邊緣存在部分零噪聲點(diǎn)(圖2b),剔除這些噪聲點(diǎn),統(tǒng)計(jì)深度圖像的直方圖(圖2c)可知,菇床表面點(diǎn)云的灰度在200~400之間。
由于土壤表面不一定平整,圖像二值化時(shí)須確立一個(gè)動(dòng)態(tài)閾值來適應(yīng)相機(jī)的移動(dòng)。計(jì)算灰度圖像中130 140個(gè)非零像素灰度的均值為321,大于該均值的非零像素的灰度眾數(shù)能夠表示土壤表面點(diǎn)云,其眾數(shù)為346,蘑菇高度至少20 mm,考慮5 mm的高度裕度,設(shè)定動(dòng)態(tài)灰度閾值為331,對(duì)灰度圖像進(jìn)行二值化,確保提取出特定直徑的蘑菇區(qū)域(圖2d)。相機(jī)的成像特性使得二值圖中蘑菇邊界失去了其本身的光滑輪廓,有必要對(duì)二值圖進(jìn)行形態(tài)學(xué)開運(yùn)算、高斯濾波等邊緣平滑處理(圖2e),使零噪聲也落在蘑菇邊界輪廓上(圖2f)。
圖2 深度圖像背景分割Fig.2 Background segmentation of depth image
由于菇床上出茬的蘑菇不同程度地傾斜、粘連,其二值圖通常呈現(xiàn)類圓形,這與圓形Hough變換檢測(cè)的標(biāo)準(zhǔn)圓有一定的偏差,為了獲取蘑菇的原始邊界輪廓,可考慮先借助圓形Hough變換初步檢測(cè)圓心和半徑,再結(jié)合蘑菇本身的邊界輪廓來分割相互粘連的蘑菇,獲取單體蘑菇邊界輪廓的二維坐標(biāo)。
傳統(tǒng)圓形Hough變換的基本思想是將圖像的空間域變換到參數(shù)空間,用大多數(shù)邊界點(diǎn)滿足的某種參數(shù)形式來描述圖像中的邊緣曲線,通過累加投票求得峰值對(duì)應(yīng)點(diǎn)。具體方法為,將X-Y平面上的圓轉(zhuǎn)換到X-Y-R參數(shù)空間,則圖像空間中過任意一點(diǎn)的圓對(duì)應(yīng)于參數(shù)空間中的一個(gè)三維錐面,圖像空間中同一圓上的點(diǎn)對(duì)應(yīng)于參數(shù)空間中所有三維錐面相交的一點(diǎn),通過累積投票可求得這一點(diǎn)的圓參數(shù)。傳統(tǒng)圓形Hough變換對(duì)噪聲不敏感,能夠檢測(cè)變形或缺失的圓,但由于采用一到多的參數(shù)映射,計(jì)算開銷大,占用內(nèi)存空間大,難于確定參數(shù)量化間隔標(biāo)準(zhǔn)。針對(duì)以上不足,研究者們提出了多種改進(jìn)算法,較為常用的2-1圓形Hough變換[16]將傳統(tǒng)圓形Hough變換的三維Hough空間降到二維,具體步驟為:
圖3 圓檢測(cè)Fig.3 Cyclo detection
(1)檢測(cè)圓心:標(biāo)記二值圖中的連通域并通過Canny算子檢測(cè)其邊緣點(diǎn),繪出所有邊緣點(diǎn)的法線,經(jīng)反復(fù)試驗(yàn)設(shè)定閾值為30,法線交匯點(diǎn)處的累加法線數(shù)量大于該閾值的點(diǎn)即為圓心(x0,y0),分別為1號(hào)(154, 142)、2號(hào)(529, 309)、3號(hào)(266, 109)、4號(hào)(408, 62)、5號(hào)(229, 354)、6號(hào)(431, 217)、7號(hào)(301, 436)(圖3a)。
(2)推導(dǎo)半徑:計(jì)算某一圓心到所有邊緣點(diǎn)的距離,并設(shè)定最小半徑閾值為25像素、最大半徑閾值為300像素、最小圓心距為45像素,在所限定的25~300像素范圍內(nèi)對(duì)檢測(cè)圓進(jìn)行半徑排序并依次計(jì)數(shù),經(jīng)反復(fù)試驗(yàn)設(shè)定計(jì)數(shù)閾值為30,投票數(shù)大于該閾值的半徑46、50、59、50、64、47、41為檢測(cè)出的圓半徑r0。
由圖3a可知,圓形Hough變換檢測(cè)的圓并不能準(zhǔn)確擬合蘑菇的邊界點(diǎn),可考慮以其結(jié)果為初始圓心和初始半徑,找出二值圖(圖2e)中每一個(gè)初始圓心所在的連通域,用八鄰域跟蹤法順序遍歷其邊界輪廓(圖3b),分割粘連的蘑菇,獲取單體蘑菇邊界輪廓的二維坐標(biāo)。
圖4 5號(hào)蘑菇邊界擬合Fig.4 Boundaries fitting of mushroom 5
針對(duì)粘連的蘑菇,以5號(hào)蘑菇為例,順序提取其圓心周圍1.3倍半徑范圍內(nèi)的邊界點(diǎn)直角坐標(biāo)(圖4a),并轉(zhuǎn)換為極坐標(biāo)系下的半徑ρ和角度θ,將角度θ升序排列(圖4b),依次計(jì)算相鄰兩角角度差記為Δθ(圖4c),當(dāng)k=289時(shí),Δθ=10.9767°,對(duì)應(yīng)角度序號(hào)j為236和314(圖4d),試驗(yàn)證明,蘑菇邊緣粘連處的Δθ通常在5°~355°之間,據(jù)此判斷粘連處在紅圈與綠圈之間(圖4e),去除紅、綠點(diǎn)之間的邊界噪聲(圖4f),計(jì)算初始圓心到紅、綠點(diǎn)的半徑,在極坐標(biāo)系下的紅、綠點(diǎn)之間插補(bǔ)一系列角間距為1°的圓弧點(diǎn)(圖4g,表1),由此獲取單體蘑菇邊界輪廓的二維坐標(biāo)。
表1 5號(hào)蘑菇插補(bǔ)的圓弧點(diǎn)Tab.1 Points interpolation in arc of mushroom 5
假設(shè)SR300相機(jī)的世界坐標(biāo)系XYZ是以紅外攝像頭光心為原點(diǎn)的右手螺旋型,Z為光心到物體表面的距離,由于圖像坐標(biāo)系xy通常以圖像左上角為原點(diǎn)且灰度圖像的灰度z等于Z,則由深度相機(jī)的視場(chǎng)角和圖像分辨率可推導(dǎo)出圖像中某像素點(diǎn)(x,y)對(duì)應(yīng)的世界坐標(biāo)系坐標(biāo)(X,Y,Z)。
為了獲取相機(jī)世界坐標(biāo)系下單體蘑菇的圓心位置、直徑、偏向角和傾斜角等參數(shù),首先,校準(zhǔn)相機(jī)的世界坐標(biāo)系;然后,驗(yàn)證相機(jī)世界坐標(biāo)系下原位測(cè)量陶瓷圓板的圓心位置、直徑、偏向角和傾斜角的精度。
相機(jī)固定在鋁支架上,置于可移動(dòng)桌面上方,采集并顯示桌面的深度視頻流,調(diào)用視頻窗口的回調(diào)函數(shù)獲取鼠標(biāo)指向位置的深度值,將鼠標(biāo)依次指向桌面的4個(gè)角,微調(diào)相機(jī)的擺放角度,直至4個(gè)角均顯示圖像灰度近似290,表明相機(jī)擺放基本平整。
桌面上擺放一張刻度為10 mm的方格坐標(biāo)紙,為了在坐標(biāo)紙上尋找相機(jī)的X軸,將一個(gè)平整的黑色盒子邊緣與網(wǎng)格線重合,采集桌面的深度視頻流,并顯示其二值圖(圖5a),調(diào)用視頻窗口的回調(diào)函數(shù)獲取鼠標(biāo)指向位置的Y坐標(biāo)值,將鼠標(biāo)指向黑盒子的底邊,輕微移動(dòng)桌子,直至黑盒子底邊上各點(diǎn)Y坐標(biāo)值近似207(圖5b),表明相機(jī)X軸與網(wǎng)格線平行。
為了在坐標(biāo)紙上尋找相機(jī)的坐標(biāo)原點(diǎn),將一個(gè)圓柱體置于坐標(biāo)紙中間的某十字線上,采集并顯示桌面的深度視頻流(圖5c),調(diào)用視頻窗口的回調(diào)函數(shù)獲取鼠標(biāo)指向位置的X、Y坐標(biāo)值,將鼠標(biāo)指向圓柱體的中心,微調(diào)圓柱體的位置,直至圓柱體的中心點(diǎn)坐標(biāo)顯示(320,240)(圖5d)。
圖5 相機(jī)坐標(biāo)系校準(zhǔn)Fig.5 Coordinate system’s calibration of camera
為了模擬褐蘑菇,取一塊直徑為100 mm的標(biāo)準(zhǔn)陶瓷圓板以X軸向下傾斜15°(偏向角為-90°,傾斜角為15°)立于世界坐標(biāo)系原點(diǎn)附近(圖6a),采集桌面的深度圖像(圖6b、6c),經(jīng)上述圖像分割算法獲取陶瓷圓板的邊界點(diǎn)的二維坐標(biāo),基于此,驗(yàn)證圓板的圓心位置、直徑、偏向角和傾斜角的測(cè)量精度,步驟為:
(1)圓心位置:計(jì)算陶瓷圓板邊界點(diǎn)的二維坐標(biāo)的均值,獲取陶瓷圓板的圓心(x0,y0)及其灰度z0,由相機(jī)的視場(chǎng)角和圖像分辨率推導(dǎo)出世界坐標(biāo)系下陶瓷圓板的圓心坐標(biāo)為(-7.014 9 mm,-0.54 mm,256 mm),基本在世界坐標(biāo)系原點(diǎn)附近。
由于二值化后的邊緣平滑處理,陶瓷圓板邊界點(diǎn)的灰度存在零噪聲(圖6e、6f),可由噪聲邊界點(diǎn)(x1,y1)與圓心(x0,y0)建立兩點(diǎn)式直線方程(y-y0)/(y1-y0)=(x-x0)/(x1-x0),獲取圓心至邊界半徑線上所有點(diǎn)的灰度(圖6g),并沿著半徑方向取零噪聲點(diǎn)附近的灰度替代零噪聲(圖6h),進(jìn)一步對(duì)圓板邊界灰度進(jìn)行滑動(dòng)平均以便更好地?cái)M合蘑菇邊緣深度(圖6i)。
(3)偏向角和傾斜角:求取圓邊界上全部515個(gè)點(diǎn)的灰度標(biāo)準(zhǔn)差為9.748 8,經(jīng)試驗(yàn)統(tǒng)計(jì),標(biāo)準(zhǔn)差大于7可判斷為傾斜。求取13條直徑端點(diǎn)的最低點(diǎn)(-58.530 5,2.296 9,272.235 3)和最高點(diǎn) (39.350 7,-1.036 3,245.641),計(jì)算兩點(diǎn)連線在X-Y平面上的投影與Y軸的偏向角為-88.094 3°,誤差為1.905 7°,與X-Y平面向下的傾斜角為15.199 6°(圖6j),誤差為0.199 6°。
圖6 原位測(cè)量精度驗(yàn)證Fig.6 Verification of measurement accuracy in site
對(duì)蘑菇房現(xiàn)場(chǎng)采集的185幅深度圖像進(jìn)行上述蘑菇圖像分割、粘連蘑菇識(shí)別及蘑菇原位測(cè)量算法試驗(yàn),以驗(yàn)證本文算法的性能和精度。
對(duì)185 幅深度圖像進(jìn)行蘑菇圖像分割試驗(yàn),自適應(yīng)設(shè)定動(dòng)態(tài)閾值,對(duì)深度圖像進(jìn)行二值化,以較少的噪聲提取蘑菇區(qū)域?yàn)榉指钚Ч脑u(píng)價(jià)標(biāo)準(zhǔn),結(jié)果表明,準(zhǔn)確分割177幅圖像,蘑菇圖像分割正確率為95.68%。部分圖像分割不準(zhǔn)確的原因是,手持相機(jī)采集圖像時(shí),難以確保相機(jī)平面的水平性。
統(tǒng)計(jì)185幅圖像中含粘連蘑菇的圖像共146幅,粘連蘑菇大多兩兩粘連、少數(shù)閉環(huán)粘連(圖7),對(duì)其進(jìn)行粘連蘑菇識(shí)別試驗(yàn),結(jié)果表明,正確識(shí)別粘連蘑菇圖像146幅,粘連蘑菇識(shí)別正確率為100%。
圖7 粘連蘑菇識(shí)別結(jié)果Fig.7 Effect of image recognition of adhesive mushrooms
選取不同光源下不同菇床區(qū)域的14個(gè)蘑菇,用游標(biāo)卡尺人工測(cè)量其直徑,目測(cè)其傾斜角(表2),再以這14個(gè)蘑菇為中心采集菇床深度圖像,對(duì)其進(jìn)行基于陶瓷圓板的原位測(cè)量算法試驗(yàn),測(cè)量單體蘑菇的圓心位置、直徑、偏向角和傾斜角,結(jié)果表明,機(jī)器測(cè)量的直徑均在香啡、貴啡、牛排的菌蓋直徑范圍內(nèi),直徑誤差最大為5.57 mm、傾斜角誤差最大為6.3°(表2),測(cè)量結(jié)果符合實(shí)際,測(cè)量算法實(shí)際有效。
由于視頻流保存的圖像視野范圍連續(xù)漸變,故選取不同菇床位置的17幅深度圖像,記錄其運(yùn)行時(shí)間,并統(tǒng)計(jì)每一幅圖像的蘑菇數(shù)量(圖8),結(jié)果表明,隨著圖像中蘑菇數(shù)量的增加,運(yùn)行時(shí)間也隨之增加,每幅圖像的平均運(yùn)行時(shí)間為206 ms;單體蘑菇的平均運(yùn)行時(shí)間為44 ms,粘連蘑菇的運(yùn)行時(shí)間略長(zhǎng)。
表2 蘑菇原位測(cè)量精度試驗(yàn)結(jié)果Tab.2 Results of measurement accuracy in site of mushroom
圖8 每幅圖像運(yùn)行時(shí)間Fig.8 Run speed of each image
(1)針對(duì)褐蘑菇的菌絲大,干擾背景,在深度圖像中利用蘑菇菌柄高度至少20 mm,結(jié)合土壤表面深度的眾數(shù),自適應(yīng)選擇動(dòng)態(tài)閾值,從菇床背景中快速、準(zhǔn)確地提取了蘑菇菌蓋二值圖。
(2)針對(duì)菇床上傾斜、粘連的類圓形蘑菇,基于2-1圓形Hough變換初步檢測(cè)了圓心、半徑,以此為種子對(duì)蘑菇的邊界輪廓進(jìn)行跟蹤、去噪、插補(bǔ),分割粘連的蘑菇,準(zhǔn)確擬合蘑菇的邊界點(diǎn),獲取了單體蘑菇邊界點(diǎn)的二維坐標(biāo)。
(3)校準(zhǔn)了相機(jī)坐標(biāo)系,針對(duì)標(biāo)準(zhǔn)陶瓷圓板深度圖像,利用原位測(cè)量方法得出圓板直徑誤差為0.87 mm,傾斜角誤差為0.199 6°。
(4)現(xiàn)場(chǎng)試驗(yàn)表明,深度圖像對(duì)光源不敏感,圖像分割效果良好,蘑菇直徑的誤差最大為5.57 mm,傾斜角的最大誤差為6.3°;視頻幀的平均運(yùn)行時(shí)間為206 ms,單體蘑菇的平均運(yùn)行時(shí)間為44 ms。