王臣毅 王藝斌 張 滔 張志華 李昀欣
(1.南京理工大學 南京 210094)
(2.南京焦耳科技有限責任公司 南京 210018)
(3.常德市煙草專賣局 常德 415000)
(4.云南煙葉復烤有限責任公司 昆明 650032)
煙草是重要的經濟作物,在我國的國民經濟收入中占有重要的地位,煙葉分級的目的是對煙葉內在質量進行優劣等級劃分,以便充分發揮農業資源的作用,以質論價。而內在質量往往是看不見、摸不著的東西,因而只能通過煙葉所表現出來的外觀特征確定煙葉的等級。傳統的分級方式通常是人工的眼看和手摸去識別,同時對于從業人員有著一定經驗的要求,有著較強的主觀性的同時,其效率也較低[1]。隨著計算機視覺技術的發展,基于視覺的自動煙葉分級技術也在不斷的產生,目前大多數學者采用的方法為人工提取特征加單分類器方法設計分級系統,但仍然存在準確率較低的問題[2~3],并且沒有考慮到實際生產中會遇到多片煙葉重疊的問題。為此本文首先提出了一種聯合利用紋理、顏色和形狀特征提取,并使用集成學習分級的單片煙葉分級方法。進一步,針對重疊煙葉,提出了一種基于橢圓輪廓模型的煙葉分割算法,提升了重疊煙葉的分離準確性,并使用集成分級方法對分割后的單片煙葉逐片分級。多組真實煙葉數據集上的實驗證明,本文提出方法在單片煙葉方法優于現有方法,能有效地對重疊煙葉實施分級。
本文使用紋理、顏色和形狀特征結合機器學習方法進行分類,數據集單幅圖片大小為4096×8000,圖片樣例如下。
紋理指的是圖像像素的灰度或顏色的某種變化,其具有周期性和不依賴亮度和顏色本身這兩種特點,而紋理特征就是從圖像中計算出來的一個值,對區域內部灰度級變化的特征進行量化。
傳統的紋理特征有灰度共生矩陣[4~5]、Tamura[6]特征、LBP 特征等特征,在這里我們使用較為常用的LBP 特征(Local Binary Pattern,局部二值模式),它是一種用來描述圖像局部紋理特征的算子,具有旋轉不變性和灰度不變性等顯著的優點。
實驗中分別將圖片劃分為單區域、雙區域和四區域進行特征提取。
傳統的圖片顏色是用每個像素的RGB 值來代表一個像素的顏色,但RGB 這種表示方式容易受到光照的影響,魯棒性不強。故本文使用HSV 特征[7]。HSV 不受光照影響,具有魯棒性等優點。HSV 分別代表色調,飽和度,明度。HSV 對光照變化具有較好的魯棒性。
形狀特征也是能描述一個圖片的重要特征,常用的形狀特征有描述形狀區域的表示特征:面積、周長、分散度、伸長度等,和描述形狀邊界的表示特征:長度、直徑、傅里葉描述子等。其中傅里葉描述子是將輪廓點進行傅里葉變化,從任意輪廓點(x0,y0)出發,按逆時針方向在輪廓上搜索時會遇到(x0,y0),(x1,y1)…,(xK-1,yK-1) ,則對每個坐標對有可以表示為
傅里葉描述子進行歸一化后有很好的旋轉不變性和尺寸不變性。同時,對于一幅圖像,只需要少量的描述子即可描述大體邊界信息,只會丟失細節部分[8]。
本實驗選擇了周長、面積、分散度和前50 個傅里葉描述子作為特征,共53維特征。
集成學習是使用一系列學習器進行學習,并使用某種規則把各個學習結果進行整合從而獲得比單個學習器更好的學習效果的一種機器學習方法。在機器學習的有監督學習算法中,我們的目標是學習出一個穩定的且在各個方面表現都較好的模型,但實際情況往往不這么理想,有時我們只能得到多個有偏好的模型(弱監督模型,在某些方面表現的比較好)。集成學習就是組合這里的多個弱監督模型以期得到一個更好更全面的強監督模型,集成學習潛在的思想是即便某一個弱分類器得到了錯誤的預測,其他的弱分類器也可以將錯誤糾正回來。
常用的集成學習方法有Bagging、Boosting 和Voting。其中Voting 分為Hard Voting 與Soft Voting兩類,Hard Voting 是一種投票的方式,嚴格遵守一種少數服從多數的思想。而Soft Voting 則認為有時候少數服從多數并不合理,它將計算得出不同分類器的分類概率均值,選擇均值最高的作為預測的結果。本實驗中分別構造邏輯回歸、決策樹和SVM三種分類器,并用Hard Voting 方式對三種分類器集成得到一個新的強分類器。
由于在實際生產過程中煙葉并不是標準的單片分開的情況,而是多片混合疊加在一起的復雜情況。故要想將之前所做算法模型應用到實際生產中,必須先解決煙葉重疊的問題。本文先解決如何判斷是否為重疊煙葉,然后提出了基于顏色類間方差OTSU 和基于橢圓輪廓的兩種煙葉分割方法,對兩片煙葉重疊情況進行了分割最終得到單片煙葉后進行分級,整個過程的流程如下。
首先是預處理判斷工作,在進行分割前先對圖片進行判斷,若是圖片只屬于一片煙葉或者是兩片煙葉重合率太高,直接進行分類而不用先進行分割。
單片與重疊的判斷是一個典型的二分類問題,除直觀的面積和周長外,還選取了凹點比例和葉柄數,一共四個特征。
可以看到如圖5,兩個煙葉重疊時會形成凹點,凹點的個數越多則是兩片煙葉重疊的情況可能性越大。
凹點的尋找方法有很多[9~12],這里采用計算圓形模板面積的方法,先定義一個半徑為R 的圓形模板,模板內的總像素點個數為M,遍歷每個尋找的輪廓點,對每個輪廓點取該圓形模板,統計模板內里在煙葉輪廓內部的像素點個數設為N。設定閾值C,當時,即認為該點為凹點。再用凹點個數除以整個輪廓點個數得到凹點比K,該值在一定程度上反映了重疊的可能性。
同時可以注意到,就算煙葉是重疊的,但葉柄在很大概率上仍然是分開的,通過葉柄的個數也可以在一定程度上作為判斷的依據。
對原圖進行閾值化后再使用形態開運算,能夠消除葉柄部分,再用原圖減去開運算后的圖得到剩余葉柄部分,讓面積≥1000 的值作為一個連通區域,計算連通區域數量,即可得到葉柄的數量。
以面積、周長、凹點比和葉柄數為特征,選取了一批重疊和單片的煙葉進行分類能得到測試集準確率接近90%的結果,較好地完成了重疊煙葉分級的第一步。
當重疊的兩片煙葉之間的顏色差距較大時,整個圖片的顏色直方圖會有兩個較為明顯的波峰,能夠很容易想到通過一個閾值來將圖片劃分為兩個類別,顏色值高于閾值的為類別1,低于閾值的為類別2,這樣即可將重疊的煙葉分割成兩片單獨的煙葉。
為了使算法更具有普遍性和通用性,我們使用OTSU(最大類間方差)算法來尋找閾值TH。OTSU是一種常用的求分割閾值的算法,用來求出在目標與背景之間差別最大時候的閾值[13],假設圖像灰度值為0~255 之間,則用閾值k 將圖像分為0~k 與k~255 兩個類別C1和C2,用P1(k)和P2(k)分別表示被分到兩類的概率,則有:被分到C1和C2的像素的灰度值均值為
其中m1(k)表示分到C1類的灰度均值,m2(k)表示分到C2類的灰度均值。
用mG表示整個圖像的灰度均值,有:
相應地類間方差σ2B[14]為
在使用OTSU 求得閾值后,使用閾值化將低于閾值的像素部分置為黑色背景,用原圖與閾值化后的圖進行與運算就可得到高于閾值部分的煙葉圖片,再做差即可得到另外一個煙葉部分,對上述圖片的處理結果如下。
通過結果能夠發現,對于顏色差距較大的圖片,其分割結果較為理想。為了判斷能否運用顏色進行分割,使用OTSU 算法中的最大類間方差作為衡量標準,訓練一批圖片得到一個閾值K 用于判斷,對于最大類間方差>K 的使用顏色分割方法,否則使用后面介紹的橢圓輪廓分割方法。
基于顏色差距的分割方法雖然簡單方便,但適用性有限,因為并不是每個重疊煙葉都能用該方法獲得較好的結果。為此進一步提出一種更具有普遍性的橢圓輪廓方法來適應更一般的情形。方法的主要思想是尋找重疊煙葉圖片中的凹點,將圖片中兩個凹點之間的輪廓作為同一段輪廓,最后以找到的輪廓段進行組合擬合橢圓,找到最佳橢圓分割得到上層煙葉,再通過相減的方法得到下層煙葉。
首先使用3.1節中介紹的圓形模板面積法找到重疊煙葉圖中的凹點,使用k-means 算法將凹點分為四類(如圖8),同時用一個數組保存每個輪廓點的標簽,先將剛各凹點標上不同的標簽如-1、-2、-3、-4。將其余的各點都用0標記。
從任一點開始遍歷,每遇到標簽為0 的點就將其標簽改為上一個凹點標簽,即將兩個凹點之間的所有點都歸為了同一個輪廓點,用顏色將輪廓段標記出來如下。
可以使用4 個輪廓段的任意組合來進行橢圓的擬合,計算橢圓的面積Ea和煙葉輪廓面積C a,若0.4Ca<Ea<2Ca且橢圓在整個煙葉圖像內,則將該橢圓納入候選橢圓中。可以看到圖10(b)、(c)都是擬合較好的結果,理論上都可能是上層的煙葉,故除了擬合的橢圓還需進一步進行篩選。

圖1 數據集圖片

圖2 LBP區域劃分圖

圖3 煙葉分級流程圖

圖4 重疊煙葉圖

圖5 凹點示意圖

圖6 葉柄剩余圖

圖7 分割前后圖

圖8 凹點選取

圖9 輪廓示意

圖10 橢圓擬合圖

圖11 橢圓擬合分割結果

圖12 煙葉圖及對應標簽

圖13 分割結果圖
對于處于上層的煙葉,能夠觀察到其較為完整的主梗,而主梗近似為一條直線。故在這里使用Hough 直線檢測來進行主梗的檢測,首先對原圖進行Canny 邊緣檢測,消除大部分的額外信息,此時只留下了輪廓和一些梯度強度較大的點,而主梗因為顏色較深,往往會保留下來,再以邊緣點為圓心,將一定領域圓內的點都過濾,剩下的點中大部分為主梗邊緣點。
此時再進行Hough 直線檢測得到最佳擬合直線L,求得該直線段與水平方向的夾角Lα,圖像的高度為H,計算橢圓中心到直線的距離D,同時定義橢圓緊密度Eρ為擬合出的橢圓內部白色像素占橢圓總像素的比例。計算所有候選橢圓與水平方向的夾角Eβ,橢圓的緊密度Eρ,用如下公式去計算所有候選圓的指標數:
對所有候選圓的Score 數進行排序,選取得分最高的橢圓作為最上層煙葉的擬合橢圓。以該橢圓的掩模可以分割出最上層的煙葉,然后再和原圖相減,并通過面積濾波,就可得到最下層的煙葉圖像。
本次實驗選取了B2F、B3F、C2F、C3F、C4F共五個等級的煙葉圖片進行測試,其中共有4 批數據集,各數據集大小如下。

表1 單片煙葉數據集樣本劃分
在2.2 節中對于紋理特征的提取中我們做了3組不同的劃分區域方式,使用數據集1 對3 種不同劃分方式的結果進行測試,結果如表2。

表2 不同區域劃分方式結果
其中區域為2 時在測試集的準確率最高,故在后續實驗中均使用2區域LBP劃分方式。
然后對不同特征組合,固定使用邏輯回歸作為分類器,并在數據集1進行測試,結果如表3。可以看出在一開始的紋理特征基礎上添加顏色特征和形狀特征后,準確率有了不少提高。

表3 不同特征組合測試結果
然后分別使用邏輯回歸、SVM 以及Voting的集成學習方法對數據集進行分類,其結果如表4,從表中能夠看出使用了Voting 方法后準確率在四個數據集均有了提升。

表4 各數據集分級測試集準確率
相應地為了進行分級結果的對比,我們還提取了一些深度特征進行實驗,包括vgg16 最后池化層的輸出結果、細粒度特征、自動編碼器特征以及自監督學習框架SimCLR 提取的特征,在這里呈現出第一批數據集在上述特征下的結果,從表5 中看出上述特征的準確率均不如提出的方法準確率高,在其余三批數據集上的也表現出同樣的結果。

表5 深度網絡模型和使用不同深度特征的分級結果
同時還選用了一些文獻中的分級方法進行比較,這里我們選取了基于二進制粒子群(BPSO)和SVM 的分級方法、基于改進的聚類算法(ICA),遺傳算法(GA),隨機森林(RF)的分級方法以及基于PCA-GA-SVM 的分級方法,結果如表6。同樣能看出來,上述方法準確率均沒有特征提取方法高。

表6 不同分級方法結果

表7 橢圓輪廓分割后分級結果
選取3.4 節中的數據集1 中訓練集的831 張圖作為訓練集。測試集有重疊煙葉圖片200 張,用橢圓輪廓分割算法得到359 張分割后的煙葉圖像,剔除不是重疊的煙葉41張和98張面積極其小的分割后的煙葉圖像,最終用于分割實驗的數據集有220張。
相應地,我們將基于橢圓輪廓分割后的圖片同樣用顏色標記上相應的標簽。由于在合成時候已經獲得真實標簽,便可比較分割前后同樣位置的點標簽是否相同,以此定義分割結果指標
通過上面的橢圓輪廓分割方法分別獲得上層和下層煙葉后,再用第2 節中的特征提取結合機器學習方法分別對上層和下層煙葉分級,得到最終的結果如下,在第一批數據集訓練出的模型下,重疊煙葉的分級準確率達到了36.4%。
本文使用了紋理、顏色和形狀特征對單片煙葉進行分級處理,在四個樣本數據集的準確率有67.5%。同時提出了一種針對特殊情況的基于顏色的重疊煙葉分割方式以及一種普遍適用的橢圓輪廓重疊煙葉分割方式,并對其分割后的結果進行分級測試,最終的結果為36.4%。從實驗中看,深度學習目前并沒有比傳統方法好,下一步我們將分析原因,展開基于深度學習的煙葉分級研究。