胡笑天,王克儉*,唐 浩,王 超,剪文灝
(1.河北農(nóng)業(yè)大學 信息科學與技術學院,河北 保定 071000;2.河北省城市森林健康技術創(chuàng)新中心,河北 保定 071000;3.河北省木蘭圍場國有林場管理局,河北 承德 067000)
木材材積計算是木材生產(chǎn)貿(mào)易產(chǎn)業(yè)中的一個重要組成部分,目前無論是生產(chǎn)還是貿(mào)易過程,采用的都是人工檢尺方法,存在效率低、精度不高且容易受到員工主觀意識的影響等問題[1-4]。隨著計算機技術尤其是圖像處理技術的發(fā)展,各種以人工檢測為主要手段的工作正在被圖像處理技術替代,而發(fā)展基于圖像的計算機自動檢尺系統(tǒng),能夠在木材管理中節(jié)省大量的人力物力,提高檢查工作的效率[5-6]。
在傳統(tǒng)圖像識別領域,原木檢尺方面進行研究主要集中在對原木端面進行輪廓提取以及對成堆原木端面識別。龍德帆等[7]根據(jù)原木端面類圓形的特點,利用Hough變換結合數(shù)學形態(tài)學中骨架提取算法提取原木端面區(qū)域,從而實現(xiàn)了原木端面區(qū)域與背景的初步分割。辛穎等[8]先通過灰度變換、中值濾波、圖像邊緣增強技術、二值化方法和輪廓跟蹤技術實現(xiàn)原木端面的自動檢測和面積計算。官俊等[9]提出一種基于聚類分析的原木端面區(qū)域識別方法的研究與實現(xiàn),基于圓形約束的改進CV-LIF模型。K.ZHANGetal[10]提出局部圖像擬合模型,針對原木端面的形狀為類圓形的特點,通過圓形輪廓約束,綜合CV模型和LIF模型的優(yōu)點,實現(xiàn)單個原木端面的分割。鐘新秀等[11]在Lab顏色空間下,使用K-Means聚類算法對原木圖像進行分割,然后使用Hough變換的方法對原木端面進行識別;林耀海等[12]利用原木端面的輪廓具有圓弧的特征,對原木輪廓進行識別;劉國華等[13]結合距離變換與梯度重構對標記點進行限定,使用分水嶺變換完成棒材識別;黃永華等[14]采用粒度測定法實現(xiàn)棒材端面圖像中等效半徑的估計,基于距離變換的標記分水嶺算法實現(xiàn)棒材識別。程麗等[15]使用YCbCr顏色空間來分割圖像并用Hough變換圓檢測來識別原木圖像。R.Decelleetal[16]使用蟻群優(yōu)化算法來檢測原木端面的木髓位置。F.Martíetal[17]使用物聯(lián)網(wǎng)的方法用激光雷達和PCL算法對原木進行計數(shù)。C.Herbonetal[18]通過迭代分類和不同分類器的組合來檢測原木端面。E.Gutzeitetal[19]使用3種不同分類器對原木進行檢測,檢測中去除了較小原木和重疊原木。上述方法主要利用原木端面的類圓特征、邊緣曲線以及顏色特征等進行識別,而當原木輪廓不標準,或者在拍攝取材過程中,由于遮擋等原因造成的輪廓不完全,采用上述檢測方法檢測效率和精度會受到一定的影響。
本研究提出一種基于逐級開運算的原木端面識別方法。首先設計了PSO改進K-Means的方法對采集原木圖像進行聚類灰度化,得到了較好初始聚類中心提升分割效果;使用中值濾波對聚類后的圖像進行去噪,再通過OTSU將灰度圖像轉(zhuǎn)化為二值圖像;之后調(diào)用逐級開運算對原木端面進行識別,以原木端面直徑作為結構元素,通過結構元素在下限到上限區(qū)間內(nèi)的變化(結構元素變化的上限和下限由圖像中原木端面的像素總數(shù)來求得),對圖像逐級進行開運算,將圖像中小于該結構元素的目標全部腐蝕,得到直徑與結構元素相似的原木的個數(shù),從而實現(xiàn)原木堆的計數(shù)。
選取的原木圖像為自然環(huán)境下堆放的成堆原木,其中10%為互聯(lián)網(wǎng)搜索,90%在河北省某林場的驗收現(xiàn)場或木材廠拍攝,使用手機和尼康D7500雙設備拍攝。
對原木楞堆劃分為清楞原木和混楞原木(圖1),清楞與混楞的差別是清楞原木的原木端面大小差異不大,而混楞原木的原木端面差異較大。
圖1 自然環(huán)境下的成堆原木
原木端面圖像處理流程獲取的圖像首先進行預處理,預處理的過程包括圖像分割、利用濾波器去除噪聲、灰度化以及二值化等操作,預處理完成后對預處理的結果使用逐級開運算進行端面識別。
原木圖像呈彩色,但是彩色圖像包含信息量太大,處理會特別復雜,所以一般在要對圖像進行灰度轉(zhuǎn)換?;叶然姆椒ê芏?,比如最大值法、平均值法、加權平均法和K-Means等,不同的方法得到效果也不同。
鐘新秀等[11]、劉哲等[20]、唐浩等[21]、王濤等[22]研究表明,對灰度圖像使用K-Means聚類分割可以達到更好的前景與背景的分離效果。為了進一步提高效果,本研究使用粒子群算法優(yōu)化的K-Means聚類實現(xiàn)原木圖像的分割。
粒子群優(yōu)化算法(particle swarm optimization,PSO)屬于群智能算法,源于對鳥群捕食的行為研究,PSO優(yōu)化算法的基本思想是通過群體中個體之間的協(xié)作和信息共享來尋找最優(yōu)解。本研究使用粒子群算法優(yōu)化K-Means算法(PSO-KMeans),算法中的PSO和K-Means是串行的關系,適應度函數(shù)用每個粒子到K個聚類中心的距離來定義,見公式(1)。
算法的步驟如下。
1)以RGB顏色空間下圖像的R與G、G與B、B與R的色差值作為樣本輸入數(shù)據(jù),初始化解空間,并在解空間中隨機初始化粒子的速度和位置。
2)計算每個粒子的適應度值,并根據(jù)適應度值更新聚類中心。
3)按照公式(2)更新權重系數(shù)w,按照公式(3)和公式(4)更新粒子速度和位置信息。
4)重復執(zhí)行式(2)-(3),直到適應度不再變化為止,得到K-Means的初始聚類中心。
5)計算原木圖像的每個像素點到初始聚類中心的距離。
6)更新每個像素的類別和聚類中心。
7)重復執(zhí)行式(5)-(6),直到聚類中心不再變化,得到原木圖像的分割結果。
對圖3A中原木圖像使用本算法處理的結果見圖3B。
(1)
(2)
式中:d(xi,xj)表示2個粒子間的距離;k表示第k個維度,一共n個維度;xi表示第i個粒子的位置;xj表示第j個粒子的位置;w為權重系數(shù),t為當前迭代次數(shù),T最大迭代次數(shù)。
(3)
(4)
圖像采集和處理的過程中,噪聲是不可避免的干擾[23],會給結果造成一定的影響,因此通常在處理圖像時要去除噪聲,圖像降噪最具代表性的濾波方法有均值濾波、中值濾波和高斯濾波等[24],本研究選取中值濾波對圖像進行處理,中值濾波公式見式(5)。
f(x,y)=medfilt[Ori(x,y)],x,y∈W
(5)
式中:f(x,y)為中值濾波處理后原木圖像的灰度值,Ori(x,y)表示未經(jīng)處理的原木圖像的灰度值,medfilt()表示求原木圖像中灰度值的中值;W是使用中值濾波的區(qū)域。
原木圖像像素矩陣過大,此處選取原木圖像像素矩陣中的一部分使用5×5中值濾波模板計算,圖2中5×5的矩陣中心值由78變成矩陣的中值85;對圖3B使用中值濾波處理結果見圖3C。
圖2 中值濾波
二值化是圖像處理的一個基本步驟,簡單來說就是把圖像變成黑白圖像,二值化可以把灰度圖像轉(zhuǎn)換成二值圖像,把一個圖像中大于某個閾值的像素設為極大值,小于閾值的像素設置為極小值,從而實現(xiàn)二值化。本研究采用OTSU最大類間方差法實現(xiàn)二值化。
OTSU算法原理是將圖像分成前景和背景2類,計算能夠使2類像素分開的最佳閾值,這個閾值即為最大類間方差,方差是灰度分布均勻性的一種度量,方差越大說明前景和背景的區(qū)別越大。對圖3C使用OTSU的處理結果見圖3D。
圖3 圖像預處理
逐級開運算屬于數(shù)學形態(tài)學運算[25],是以幾何學為基礎,用在圖像分析領域的一個有力工具,主要思想為利用一個“探針”探測被檢測圖像中物體的形狀[26-27],這個“探針”就是結構元素。利用結構元素可以對圖像進行不同的操作,其中包括的基本運算有膨脹、腐蝕、開運算和閉運算,其中開運算和閉運算就是對腐蝕和膨脹的不同組合。
傳統(tǒng)的開運算中,算法處理圖像時使用的結構元素一般都是固定的大小和形狀,在平滑邊界、去除噪音等方面得到了應用,也達到較好的效果。然而對于原木圖像來說,由于原木的生長環(huán)境等因素是無法人為干涉的,而且在砍伐采集時,也無法將其端面制成統(tǒng)一的規(guī)格,一般呈不規(guī)則形狀的類圓形,因此待處理的目標圖像往往不具備完全一致的形狀和大小。傳統(tǒng)的形態(tài)學開運算在對原木圖像進行檢測時具有一定的局限性,具體表現(xiàn)在使用固定形狀和大小的結構元素對原木圖像進行開運算時,如果選擇的結構元素比較大,那么較小的原木端面由于比結構元素還要小,會被直接當噪音經(jīng)腐蝕運算去除掉,對試驗結果造成一定的影響。
本研究針對這個問題,采用一種自適應的形態(tài)學開運算——逐級開運算,算法采用可變大小的結構元素進行腐蝕和膨脹運算,利用不同大小的結構元素把圖中不同大小的原木端面識別出來。結構元素設置的取值區(qū)間根據(jù)圖像中最大和最小的原木端面半徑?jīng)Q定。
在一幅圖像中,像素點個數(shù)一定,同一幅數(shù)字圖像中不同物體面積之比與像素點個數(shù)之比是相等的,若用Si表示第i個原木端面的實際面積,ni代表第i個原木所占像素個數(shù),公式(6)成立。因此可以用原木面積設定結構元素的大小。
(6)
由上式可進一步推得式(7),其中ri和rj表示半徑。
(7)
所以可以直接使用第S個原木端面所占像素點的個數(shù)ns代表其面積,用求出的rs作為結構元素的半徑對圖像進行開運算,假設此時結構元素對應的面積大小為S,像素點個數(shù)為ns,由于開運算是先腐蝕后膨脹,根據(jù)腐蝕運算的性質(zhì),圖像中面積小于S的(即像素點個數(shù)小于ns的區(qū)域)都會被去除掉,剩下的其余都是比S大的、像素點多余ns的。隨后利用膨脹運算把腐蝕掉的部分填充,還能得到一個完整的類圓形連通區(qū)域。利用這個原理,進行多次結構元素大小不同的開運算,就識別出了不同的原木端面。
對于成堆原木圖像,預處理完成后得到二值圖像T,利用逐級開運算識別原木端面的流程如下。
1)對初步分割后的二值圖像去除其中連通區(qū)域較小的對象。
2)使用濾波器對處理的結果進行去除孔洞、消除噪聲。
3)獲得所有連通區(qū)域的像素點個數(shù)的集合N,利用面積公式計算每個連通區(qū)域的結構元素半徑ri,i=1,2……N,并將其降序排列。
4)取第一個結構元素半徑r1初始化濾波器。
5)對圖像T使用結構元素ri進行開運算,結果圖像保存到Ii。
6)對Ii進行使用分水嶺算法去除粘連,Ii中的連通區(qū)域就是半徑為ri對應的原木端面。
7)T=T-Ii得到新圖像,新圖像T中每個連通區(qū)域都小于Ii的連通區(qū)域。
8)按照集合N的數(shù)值更新ri,重復步驟5)~7),直至N集合為空。
進一步將所有Ii,i=1,2,…N對應的連通區(qū)域個數(shù)相加,即為圖像中原木的根數(shù)。
對圖3D使用逐級開運算的處理效果見圖4。
A表示結構元素為22時所得到的原木端面圖像,B表示結構元素為20時得到的原木端面圖像,C表示結構元素為20時得到的圖像與A相加得到的結果,D為最終處理結果。
綜上所述,原木端面識別的整體流程為首先對采集的原木圖像以RGB色差值為參數(shù),使用PSO-KMeans進行聚類灰度化分割,實現(xiàn)背景與目標的初步分離,然后對分割的圖像使用中值濾波進行噪音的去除,使用OTSU將灰度圖像轉(zhuǎn)成二值圖像,最后調(diào)用逐級開運算對二值化原木圖像進行根數(shù)的統(tǒng)計(圖5)。
圖5 原木端面識別流程
為綜合評價算法的有效性,本研究不僅使用識別率來評價算法,還考慮到原木是自然堆放,背景比較復雜,分割時的過分割或者欠分割現(xiàn)象會導致背景容易被當作目標,且一個目標有被檢測成2個目標的可能,因此還使用正檢率、錯檢率與漏檢率等指標來綜合評價算法。
其中正檢率T表示算法正確檢測個數(shù)(St)與實際個數(shù)(Sa)的比值
(8)
錯檢率W表示算法檢測錯誤的個數(shù)與實際個數(shù)的比值
(9)
漏檢率M表示算法未檢測到的原木個數(shù)與實際個數(shù)的比值
(10)
式中:St、Sw、Sm、Sa分別表示原木端面正確識別個數(shù)、錯誤識別個數(shù)、漏檢個數(shù)和實際總個數(shù)。
為驗證算法的有效性,首先對原木圖像應用本研究中1.1所述的圖像流程進行預處理試驗。對圖1中自然環(huán)境下的原木使用PSO-KMeans聚類分割后,使用逐級開運算進行原木端面識別。
將統(tǒng)計結果標注在圖像上效果見圖6。將采集到數(shù)據(jù)劃分為清楞原木和混楞原木2個數(shù)據(jù)集,分別分成7組,每組圖片數(shù)量不同,但原木總數(shù)控制在150個左右。試驗分別在清楞原木數(shù)據(jù)集和混楞原木數(shù)據(jù)集上進行,結果見表1和表2。
圖6 檢測結果
從表1和表2來看,對于清楞原木,即半徑差別不大的原木,平均識別正檢率達到97.26%,對于混楞原木的檢測結果平均正檢率達到93.32%,至于混楞原木中有個別的差距較大,是因為該圖像存在背景過于復雜和擺放參差不齊導致原木端面遮擋,在使用PSO-KMeans聚類分割灰度化時,目標和背景難以區(qū)分。
將本研究的逐級開運算識別算法與現(xiàn)有研究中常用的Hough變換圓檢測算法進行對比試驗,采用表1和表2中的數(shù)據(jù)集進行對比,取平均正檢率、錯檢率和漏檢率進行對比。
表1 清楞原木檢測結果
表2 混楞原木檢測結果
清楞原木和混楞原木的檢測結果分別見表3和表4,論文算法比霍夫變換圓檢測的檢測效果好,由于霍夫變換圓檢測對檢測目標是否為圓的依賴性較大,所以當圖像中的原木不是規(guī)則的圓形時,檢測效果受到了較大的影響,而本研究的逐級開運算則不受目標形狀的限制,根據(jù)目標的不同大小,逐級將目標統(tǒng)計出來。
表3 清楞數(shù)據(jù)對比結果
表4 混楞數(shù)據(jù)對比結果
針對木材產(chǎn)業(yè)的生產(chǎn)和運輸過程中的原木材積自動計算問題,采用了逐級開運算的方法對自然環(huán)境下的成堆原木進行分割和端面識別。第一是對原木圖像進行預處理,使用聚類算法提取原木端面區(qū)域為后續(xù)分割端面識別打下基礎;第二是對基本分割后的圖像進行端面識別。試驗表明,自然環(huán)境下堆放的原木楞堆背景復雜,本研究改進的基于粒子群算法的K-Means能夠?qū)⑵浔尘皡^(qū)域與目標區(qū)域進行良好的分離,并且逐級開運算能夠?qū)Ψ指詈蟮膱D像進行較好的識別,提高原木端面識別效率。
逐級開運算對原木圖像的識別準確與否,關鍵在于前期分割的效果,本研究對K-Means聚類分割進行優(yōu)化,提高了分割效果,但對于背景與目標顏色相似如木材廠的原木楞堆、原木端面存在年輪和污漬、擺放情況過于參差不齊等情況還是存在過分割、欠分割的現(xiàn)象,導致背景和目標不能有效的分離。可通過嘗試繼續(xù)改進算法,對原木端面的特征進行更精確的提取,提高正檢率,降低漏檢率和錯檢率,下一步研究原木端面存在年輪和污漬、擺放參差不齊導致陰影和遮擋以及背景復雜的原木端面檢測系統(tǒng),再進一步研究端面面積的自動計算方法,以最終實現(xiàn)材積的自動計算。
西北林學院學報2022,37(5):210-217Journal of Northwest Forestry University