袋裝糧數(shù)量智能識(shí)別算法研究
目前,基于視頻的國(guó)家儲(chǔ)備糧自動(dòng)監(jiān)管與稽核系統(tǒng)的技術(shù)核心是通過計(jì)算機(jī)系統(tǒng)對(duì)糧庫(kù)場(chǎng)景圖像的自動(dòng)分析與識(shí)別,精確得到糧庫(kù)的糧食總數(shù)量,以彌補(bǔ)現(xiàn)行人工監(jiān)管方式的缺陷,杜絕虛庫(kù)、虛報(bào)貼息等現(xiàn)象,以滿足管理部門對(duì)儲(chǔ)備糧自動(dòng)監(jiān)管與稽核的管理需求[1]。
儲(chǔ)備糧庫(kù)中的糧袋是從底層向頂層逐層地累加立體式堆放,形成一個(gè)大立方體式結(jié)構(gòu),如圖1(a)所示。在攝像器材所捕捉到的圖像中,這個(gè)大立方體有三個(gè)面:頂面和兩個(gè)側(cè)面。由于光照和堆放方式的影響,在視頻圖像中,糧袋表面不同地方的灰度值會(huì)有很大差別,糧袋的中心區(qū)域會(huì)比較亮,而周邊區(qū)域會(huì)比較灰暗,因此在視覺上,人們看到的糧袋邊界呈現(xiàn)出一個(gè)近似的橢圓形。而每一個(gè)糧袋在視頻圖像中均能看見三個(gè)不同的面,所以會(huì)形成三類不同的橢圓。如果能精確地識(shí)別大立方體三個(gè)面上有多少個(gè)橢圓,那么就能識(shí)別出糧袋的數(shù)量,而每袋糧食的重量是固定且已知的,由此可以得到整個(gè)立方體糧堆的數(shù)量,因此,袋裝糧數(shù)量識(shí)別就是對(duì)圖像中橢圓數(shù)量的識(shí)別。所以對(duì)袋裝糧的儲(chǔ)備糧倉(cāng)的糧食數(shù)量識(shí)別的關(guān)鍵就是找到一種快速、準(zhǔn)確、有效的橢圓形狀的提取與描述方法,以確保能夠?qū)γ恳淮Z食進(jìn)行精確的識(shí)別。
橢圓邊界處理與描述主要包括邊界定位和描述兩個(gè)方面,本文采用一種改進(jìn)的Laplace算子和邊界方向鏈碼來(lái)對(duì)袋裝糧圖像進(jìn)行邊緣檢測(cè)和描述,針對(duì)所檢測(cè)出的橢圓邊界有少量不完全閉合的問題,采取數(shù)學(xué)形態(tài)學(xué)的閉合操作來(lái)修補(bǔ)連接邊界的缺口。試驗(yàn)證明,改進(jìn)的Laplace算子和邊界方向鏈碼對(duì)袋裝糧邊界分割和描述具有較高魯棒性,能取得較好的效果。
1 糧袋邊緣提取
邊緣是指圖像中周圍像素灰度差有強(qiáng)烈反差的那些像素的集合,它廣泛存在于目標(biāo)與目標(biāo)之間、目標(biāo)與背景之間[2]。圖像邊緣是圖像最重要的特征之一,是圖像分割、紋理特征和形狀特征等圖像分析的重要依據(jù)。具體到袋裝糧圖像,邊緣描述了糧袋的形狀信息,而形狀信息正是識(shí)別和分析糧袋橢圓邊緣的依據(jù),所以對(duì)袋裝糧圖像進(jìn)行處理的首要工作就是糧袋邊緣檢測(cè)。
在數(shù)字圖像中,邊緣點(diǎn)和噪聲點(diǎn)均屬于圖像中灰度突變點(diǎn),因此在邊緣檢測(cè)中,邊緣定位能力和噪聲抑制能力是相互矛盾的,有的算法邊緣定位能力比較好,有的算法抗噪聲能力比較強(qiáng),每種算法都有各自的優(yōu)缺點(diǎn)。參考文獻(xiàn)[3]針對(duì)袋裝糧圖像的特點(diǎn),對(duì)現(xiàn)有的Laplace邊緣檢測(cè)算子的模板進(jìn)行了適當(dāng)?shù)母倪M(jìn),通過設(shè)置更加合理的Laplace模板權(quán)值參數(shù),提高了袋裝糧圖像邊緣檢測(cè)的精度,所檢測(cè)到的邊緣信息更加豐富和清晰,檢測(cè)效果如圖1(b)所示。
在對(duì)袋裝糧圖像邊緣檢測(cè)過程中,所選擇的邊緣檢測(cè)算法既要精確定位邊緣,又要使所檢測(cè)的邊緣盡量是封閉的曲線,以便于邊界描述和特征的提取。實(shí)驗(yàn)結(jié)果顯示,盡管改進(jìn)的Laplace算子具有較好的檢測(cè)效果,但是所得到的邊緣依然不是完全閉合的,且存在大量虛假邊緣,這使得邊界描述將無(wú)法進(jìn)行。其原因:(1)該幅圖像的對(duì)比度較低;(2)該幅圖像比較復(fù)雜,目標(biāo)體較多。因此,單純的依靠邊緣檢測(cè)算子是很難得到閉合的邊緣曲線。
自1964年Matheron提出了數(shù)學(xué)形態(tài)學(xué)以來(lái),在經(jīng)過以Meyer、Serra、Sternberg為代表的眾多學(xué)者的努力下,形態(tài)學(xué)方法已經(jīng)成為非線性圖像處理中的一種重要手段[4]。數(shù)學(xué)形態(tài)學(xué)通過選取合適的結(jié)構(gòu)元素(探針)實(shí)現(xiàn)目標(biāo)特征提取,其基本運(yùn)算有:膨脹、腐蝕、開啟和閉合。其中開啟和閉合運(yùn)算是由基本運(yùn)算(膨脹和腐蝕)組合而成的復(fù)合運(yùn)算。閉合運(yùn)算可以去除區(qū)域中的小孔,填平狹窄的斷裂、細(xì)長(zhǎng)的溝壑以及輪廓的缺口等,這正好適用于去除糧袋邊緣的缺口,使得檢測(cè)到的邊緣是閉合邊界。由于數(shù)學(xué)形態(tài)學(xué)是基于二值圖像進(jìn)行操作的,所以在圖像預(yù)處理中需要加入二值化操作步驟。針對(duì)糧袋形狀的特點(diǎn),本文選取橢圓形的結(jié)構(gòu)元素對(duì)圖1(a)二值化后的結(jié)果進(jìn)行數(shù)學(xué)形態(tài)學(xué)的閉合運(yùn)算,再進(jìn)行邊緣檢測(cè),得到最終糧袋邊緣輪廓,如圖2所示。
2 糧袋邊界描述
對(duì)所需要識(shí)別的物體進(jìn)行描述時(shí),希望能使用一些比單個(gè)參數(shù)提供更豐富的細(xì)節(jié)信息,而又比用圖像本身更緊湊的方法來(lái)描述物體。圖像表示可以基于其內(nèi)部特征,也可以基于其外部特征,由此可將圖像的描述分成邊界描述(如鏈碼、邊界分段等)和區(qū)域描述(如四叉樹、骨架等)兩大類。通常,邊界描述較為關(guān)心的是圖像中區(qū)域的形狀特征,而區(qū)域描述則傾向于反映區(qū)域的灰度、顏色、紋理等特征。在袋裝糧自動(dòng)識(shí)別中,關(guān)注的是糧袋的形狀,因此,本文選擇邊界描述法來(lái)描述糧袋邊緣。
在對(duì)糧袋進(jìn)行識(shí)別的過程中,要求嚴(yán)格按照糧袋實(shí)際形狀進(jìn)行各項(xiàng)特征參數(shù)的統(tǒng)計(jì)計(jì)數(shù),因此,準(zhǔn)確地描述邊緣輪廓很重要。國(guó)內(nèi)外學(xué)者已經(jīng)對(duì)二維輪廓曲線的描述問題從不同角度展開了研究,并提出了下面多種邊界曲線描述方法。
(1)多邊形近似逼近輪廓法。參考文獻(xiàn)[5]中提出用輪廓線的近似多邊形來(lái)表示邊界,常用的多邊形表達(dá)方法有:基于收縮的最小周長(zhǎng)多邊形法、基于聚合的最小均方誤差線段逼近法、基于分裂的最小均方誤差線段逼近法。在數(shù)字圖像中,邊界曲線是由一個(gè)個(gè)像素點(diǎn)組成的,如果每相鄰的2個(gè)像素點(diǎn)組成一條直線,則就可以用若干條直線來(lái)精確表達(dá)邊界,但這種方法計(jì)算量大,實(shí)時(shí)性較差。如果按照一定的算法來(lái)離散化邊界像素點(diǎn),雖然可以減少計(jì)算量,但是邊界描述的精度大大降低,因此,此種方法不適用于糧袋邊緣的描述。
(2)基于B樣條的邊界曲線表示法。參考文獻(xiàn)[6]中提出了一種基于B樣條的邊界曲線表示法,這種方法的優(yōu)點(diǎn)是在一定程度上考慮到了輪廓線的幾何特征,但是對(duì)輪廓曲線進(jìn)行采樣、擬合是一個(gè)相當(dāng)繁瑣的過程,不適于糧袋的邊界描述。
(3)邊界鏈碼法。1977年,F(xiàn)reeman首先提出了4向鏈碼和8向鏈碼,因此鏈碼又稱為Freeman碼[7]。鏈碼法是用邊界曲線起始點(diǎn)的坐標(biāo)和邊界點(diǎn)方向代碼來(lái)描述邊界曲線的方法,常被用來(lái)在圖像處理、計(jì)算機(jī)圖形學(xué)、模式識(shí)別等領(lǐng)域中表示曲線和邊界區(qū)域[8]。該方法主要是利用一系列具有特定長(zhǎng)度和方向相連的直線段來(lái)表示目標(biāo)的邊界。由于每個(gè)線段的長(zhǎng)度固定而且方向數(shù)目有限,因此,只有邊界的起點(diǎn)需要采用絕對(duì)坐標(biāo)表示,其余點(diǎn)都可只用連續(xù)方向來(lái)代表偏移量,而且對(duì)于每一個(gè)點(diǎn)只需要一個(gè)方向數(shù)就可以代替兩個(gè)坐標(biāo)值。由此可見,表示一個(gè)方向數(shù)比表示一個(gè)坐標(biāo)值所需的比特?cái)?shù)要少。因此,采用鏈碼表示可大大減少邊界表示所需要的數(shù)據(jù)量。此外,鏈碼具有簡(jiǎn)單、節(jié)省存儲(chǔ)空間、便于計(jì)算以及平移不變性等特點(diǎn),使得對(duì)于封閉區(qū)域特征參數(shù)的統(tǒng)計(jì)變得簡(jiǎn)單易行。
袋裝糧圖像中存在多個(gè)橢圓,需要對(duì)每一個(gè)橢圓進(jìn)行描述和識(shí)別,因此需要采用一種計(jì)算簡(jiǎn)單、存儲(chǔ)量小、實(shí)時(shí)性高的算法,而且糧袋邊界是一條封閉的曲線。因此,本文采用邊界鏈碼法來(lái)對(duì)糧袋邊緣進(jìn)行描述。
數(shù)字圖像是按照固定間距的網(wǎng)格進(jìn)行采樣的,因此最簡(jiǎn)單的鏈碼是跟蹤邊界并賦給每?jī)蓚€(gè)相鄰像素的連線一個(gè)方向值。常用的有4方向和8方向鏈碼[9],如圖3所示。在數(shù)字圖像中,任意一個(gè)像素點(diǎn)周圍均有8個(gè)鄰接點(diǎn),而8方向鏈碼正好與像素點(diǎn)的實(shí)際情況相符,因此能夠準(zhǔn)確地描述中心像素點(diǎn)與其鄰接點(diǎn)的信息。在8方向鏈碼中,鏈碼沿著數(shù)字曲線或者邊界像素以八鄰接的方式移動(dòng)和編碼,相鄰兩個(gè)像素的偏移量用數(shù)字0~7表示,碼值加1,其所指的方向則按逆時(shí)針旋轉(zhuǎn)45°。
一條邊界曲線可以由曲線的起始點(diǎn)和該曲線的鏈碼唯一確定。假設(shè)曲線S如圖4所示,其鏈碼由數(shù)組Lianma[]表示。
采用8方向鏈碼描述曲線S得到的數(shù)組Lianma[]={0,6,0,7,0,6,5,4,4,3,2,2,2}。從圖中可以看出,只要知道邊界任意一點(diǎn)的坐標(biāo)和其他點(diǎn)的鏈碼值,就能準(zhǔn)確地描述出區(qū)域的邊界。為了得到一個(gè)完整的邊界鏈碼,便于后續(xù)處理(如鏈碼的存儲(chǔ)、特征的提取、重構(gòu)等),可將曲線起始點(diǎn)坐標(biāo)、曲線鏈碼和鏈碼長(zhǎng)度一起存放在一個(gè)鏈碼表中[10],鏈碼表格式如圖5所示。
針對(duì)已經(jīng)進(jìn)行邊緣提取并進(jìn)行二值化后的袋裝糧圖像,用行掃描法得到糧袋邊緣的最左上角的邊界點(diǎn)作為跟蹤的起始點(diǎn),采用8方向鏈碼搜索邊緣,邊界鏈碼跟蹤袋裝糧圖像邊界輪廓算法步驟如圖6所示。
對(duì)圖像邊緣進(jìn)行邊界跟蹤的目的是為了提取圖像中目標(biāo)體的特征點(diǎn)(如邊界曲線的端點(diǎn)、交叉點(diǎn)、拐角點(diǎn)、閉合曲線的形心等),以便識(shí)別對(duì)象體。在對(duì)袋裝糧圖像中糧袋橢圓邊緣曲線進(jìn)行提取之后,根據(jù)數(shù)學(xué)知識(shí)可做如下判斷:(1)設(shè)置橢圓方差閾值,判斷邊界曲線是否是接近橢圓形狀;(2)如果邊界曲線是一個(gè)近似的橢圓,則可以用一系列橢圓的數(shù)學(xué)特征的線性組合作為對(duì)袋裝糧圖像識(shí)別的隸屬度函數(shù)。橢圓的數(shù)學(xué)特性有周長(zhǎng)、形心、面積、離心率等,而這些參數(shù)很容易通過邊界鏈碼計(jì)算得到[10],可以采用特征量的線性組合作為隸屬度函數(shù)對(duì)袋裝糧圖像的橢圓邊界進(jìn)行識(shí)別,以區(qū)分不同面上的糧袋,從而達(dá)到智能識(shí)別的目的。
針對(duì)所提取出來(lái)的邊緣不是完全閉合的問題,采用數(shù)學(xué)形態(tài)學(xué)的閉合運(yùn)算對(duì)二值圖像進(jìn)行預(yù)處理后再進(jìn)行邊緣檢測(cè),最終得到了完全閉合的邊界。鏈碼法與其他方法相比,算法簡(jiǎn)單、可大幅度減少數(shù)據(jù)、可以提高圖像處理速度和匹配效率,以及具有平移不變性等特點(diǎn),使得對(duì)于封閉曲線區(qū)域特征參數(shù)的統(tǒng)計(jì)變得簡(jiǎn)單易行。糧袋邊緣精確的檢測(cè)和描述是糧食數(shù)量智能識(shí)別的前提,試驗(yàn)證明,本文采用改進(jìn)的Laplace算子對(duì)袋裝糧圖像進(jìn)行邊緣檢測(cè),所提取的邊界更為平滑、連續(xù)、清晰。
評(píng)論