任志敏,宋 源,張 良
(1.常州紡織服裝職業(yè)技術(shù)學(xué)院機(jī)電學(xué)院,江蘇 常州 213164; 2,蘇州大學(xué),江蘇 蘇州 215006)
隨著勞動(dòng)力成本的不斷提高,農(nóng)業(yè)果實(shí)采摘也面臨著逐步實(shí)現(xiàn)機(jī)械化和自動(dòng)化[1]。其中首要解決的是視覺難題。果實(shí)成熟時(shí),表皮顏色一般會(huì)發(fā)生變化。比如,即將成熟的蘋果果皮會(huì)變紅,柚子果皮會(huì)變黃……。一般情況下,人們基于傳統(tǒng)經(jīng)驗(yàn)判斷水果的成熟期和掛果情況進(jìn)行人工采摘,效率相對(duì)低下。因此,如何通過信息化技術(shù)手段,方便、快捷、準(zhǔn)確地判斷水果的成熟期及掛果數(shù)量是本文研究的重點(diǎn),為實(shí)現(xiàn)機(jī)械化采摘提供成熟果實(shí)的精確的定位提供支持。通過對(duì)現(xiàn)有技術(shù)的研究,借助攝像頭對(duì)果樹進(jìn)行拍照,對(duì)生成的視頻或圖片進(jìn)行分析和處理,一方面,得益于近年來計(jì)算機(jī)視覺研究的飛速發(fā)展,使得建立一個(gè)成本可承受,速度識(shí)別快、判斷精度高的視覺系統(tǒng)成為可能。另一方面,使用攝像頭進(jìn)行拍照與人眼觀察非常貼合,可以快速、準(zhǔn)確找到成熟果實(shí)的位置,為機(jī)械手采摘提供精確坐標(biāo)[2]。
視覺系統(tǒng)的核心是實(shí)現(xiàn)顏色的學(xué)習(xí)和跟蹤,由硬件和軟件兩部分組成。顏色學(xué)習(xí)和跟蹤系統(tǒng)硬件部分主要由微控制器和圖像感光元件組成。硬件設(shè)計(jì)框架如圖1所示。
圖1 硬件設(shè)計(jì)框圖
硬件電路由主要基于Cortex-M4微處理器STM32F429IGT6和CMOS圖像感光元件OV7725組成。STM32F429IGT6最高主頻為180MHz,集成Camera接口。OV7725是美國Omni Vision公司生產(chǎn)的高靈敏、低功耗圖像傳感元件。其支持自動(dòng)曝光控制,自動(dòng)增益控制,自動(dòng)白平衡;支持逐行掃描raw RGB數(shù)據(jù)輸出;最大像素輸出為640x480,支持設(shè)置不同像素窗口,通過標(biāo)準(zhǔn)串行攝像頭控制總線SCCB配置其寄存器。
STM32F429IGT6從OV7725采集一幀圖像,圖像數(shù)據(jù)通過Camera接口、DMA通道、FMC接口送入SDRAM存儲(chǔ)器。數(shù)據(jù)經(jīng)過STM32F429IGT6端程序處理后的結(jié)果通過串口發(fā)送給機(jī)器人控制板。
為了獲取成熟果實(shí)的精確位置,即為機(jī)械手提供成熟果實(shí)位于圖片中的坐標(biāo)。本文設(shè)計(jì)了如圖2所示的總體流程[3]。
圖2 顏色學(xué)習(xí)和跟蹤總體流程
首先采集OV7725圖像感光單元輸出的一幀RGB Bayer格式的源數(shù)據(jù)[4],獲取待跟蹤顏色的RGB值,如圖3所示的黑框部分內(nèi)某一點(diǎn)的像素RGB值為237,80,99,獲取三個(gè)分量的上下限閾值為Rmin,Rmax,Gmin,Gmax,Bmin,Bmax,在顏色跟蹤過程中,只要遍歷的像素點(diǎn)落入以上六個(gè)閾值組成的區(qū)域內(nèi)[5],即可認(rèn)為是一致顏色。
圖3 顏色學(xué)習(xí)區(qū)域
由于受到光線等諸多因素影響,在RGB空間通過手工輸入的方式獲得的紅色蘋果的閾值并不準(zhǔn)確。HSV是另一種顏色表示空間,HSV最主要的優(yōu)勢(shì)是它與人類描述顏色的方式類似。與RGB顏色空間不同的是,HSV非常適合用于顏色分割,能夠非常直觀地表達(dá)色彩的明暗,色調(diào),以及鮮艷程度,方便進(jìn)行顏色之間的對(duì)比。因此,本文把RGB值轉(zhuǎn)換成HSV值[6]。RGB三分量的取值范圍為0~255,經(jīng)轉(zhuǎn)換后,S的取值范圍為0~1,V的取值范圍為0~255,H的取值范圍為0~360。為了便于后續(xù)數(shù)據(jù)處理,本文把HSV三分量的取值范圍均規(guī)范化為0~255[7]。因此本文修改后的轉(zhuǎn)換公式為:
(1)
(2)
V=max.
(3)
其中max取某個(gè)像素點(diǎn)R、G、B值的最大值,min取某個(gè)像素點(diǎn)R、G、B值的最小值。
本文先研究表達(dá)式比較法實(shí)現(xiàn)顏色跟蹤,這種方法相對(duì)比較簡單,在此基礎(chǔ)上,進(jìn)一步研究并實(shí)現(xiàn)了快速高效的數(shù)組查表法實(shí)現(xiàn)顏色跟蹤。
2.3.1 條件表達(dá)式比較法
本文首先研究一種簡單的場景,跟蹤一種顏色,即一幀圖像中只有一個(gè)區(qū)域與樣本顏色一致,這一過程實(shí)現(xiàn)比較容易,程序流程如圖4所示。
圖4 跟蹤單個(gè)樣本區(qū)域流程圖
遍歷順序?yàn)橐粠瑘D像數(shù)據(jù)從左上到右下的順序,pix表示從坐標(biāo)(0,0)到(639,399)每個(gè)像素點(diǎn)的分量值。pix插值并轉(zhuǎn)化為HSV后,H值與樣本的Hmax,Hmin比較,S值與樣本的Smax,Smin比較,V值與樣本的Vmax,Vmin比較[8],如果if( (H>=Hmin)AND(H<=Hmax)AND (S>=Smin)AND (S<=Smax)AND (V>=Vmin)AND (V<=Vmax))這個(gè)表達(dá)式為真,表明三個(gè)值都落入樣本值范圍內(nèi),該像素點(diǎn)才標(biāo)記為與樣本相匹配,并更新count_pixels值加1,x0,y0,x1,y1與該像素點(diǎn)的坐標(biāo)x,y相比較,更新x0為匹配區(qū)域最左位置橫坐標(biāo),y0為最上位置縱坐標(biāo),x1為最右位置橫坐標(biāo),y1位最下位置縱坐標(biāo),centroid_x值不斷累加匹配像素點(diǎn)的橫坐標(biāo)x,centroid_y值不斷累加匹配像素點(diǎn)的縱坐標(biāo)。等到一幀圖像所有像素點(diǎn)都遍歷完,通過x1-x0差值獲得匹配區(qū)域?qū)挾?,y1-y0差值獲得匹配區(qū)域高度,centroid_x/count_pixels商值獲得匹配區(qū)域中心橫坐標(biāo),centroid_y/count_pixels商值獲得匹配區(qū)域中心縱坐標(biāo)。這就是條件表達(dá)式比較法。
需要說明的是不管是跟蹤單一區(qū)域還是多區(qū)域,在識(shí)別顏色時(shí)都需要進(jìn)行6個(gè)表達(dá)式的比較和判斷,而且至少在跟蹤一種顏色的前提下,如果要跟蹤兩種顏色的話,至少需要2×6=12個(gè)表達(dá)式比較。隨著跟蹤顏色的增加,比較的表達(dá)式數(shù)量也會(huì)隨之增加。
2.3.2 數(shù)組查表法
通過條件表達(dá)式可以判斷遍歷像素值與樣本顏色是否匹配,但是這種方法會(huì)占用大量微控制器CPU資源,特別是對(duì)于Cortex-M這類支持多級(jí)流水的CPU,會(huì)影響實(shí)時(shí)顏色跟蹤的效率。在研究過程中,本文設(shè)計(jì)了空間換時(shí)間的數(shù)組查表法進(jìn)行顏色匹配[9]。算法描述如下:
建立樣本顏色表。若通過顏色學(xué)習(xí)獲得某顏色區(qū)域a的閾值Hmin=67,Hmax=79,Smin=123,Smax=140,Vmin=98,Vmax=112。前文所述本文HSV三個(gè)值的范圍是0~255,因此分別為HSV建立大小為256個(gè)元素的三個(gè)分量數(shù)組,Hclassa[256],Sclassa[256],Vclassa[256],并對(duì)數(shù)組元素進(jìn)行賦值,每個(gè)分量離散成256級(jí),在閾值上下限內(nèi)的值對(duì)應(yīng)的離散級(jí)賦值為1,其他的賦值為0,即二值化賦值,如圖5所示。
圖5 樣本顏色二值化數(shù)組表
每個(gè)數(shù)組都是256個(gè)元素,以樣本閾值上下限范圍內(nèi)數(shù)為索引的元素值賦值為1,其余均賦值為0。通過研究發(fā)現(xiàn),基于樣本顏色二值化數(shù)組表,對(duì)遍歷的像素點(diǎn)是否與樣本匹配可以通過計(jì)算公式(4)獲得結(jié)果。
IsPixelInClass = Hclass[H] AND
Sclsss[S] AND Vclass[V]
(4)
AND表示布爾位與(AND)運(yùn)算,H,S,V表示當(dāng)前遍歷的像素點(diǎn)值,把H,S,V作為數(shù)組索引,查詢?nèi)鐖D5所示的樣本顏色二值化表,獲得數(shù)組元素值Hclass[H],Sclass[S],Vclass[V]表示,三值進(jìn)行位與運(yùn)算,IsPixelInClass表示位與運(yùn)算的結(jié)果,結(jié)果為1,表示遍歷像素點(diǎn)與樣本匹配,反之表示不匹配。比如檢查像素點(diǎn)值HSV(69,130,100)是否與樣本匹配,只需要計(jì)算Hclass[69] AND Sclass[130] AND Vclass[100],其結(jié)果是1,表示匹配;用同樣的方法檢查像素點(diǎn)值HSV(69,130,120),計(jì)算結(jié)果為0,則不匹配。
顯然數(shù)組查表法用空間換時(shí)間的方法比起6個(gè)條件表達(dá)式判斷來說速率快得多。特別是在同時(shí)跟蹤紅色、黃色等多種顏色的果實(shí)時(shí),采用條件表達(dá)式比較法一共需要進(jìn)行多次運(yùn)算,而數(shù)組查表法只要利用公式(4)一次運(yùn)算即可。數(shù)組查表法節(jié)省了時(shí)間,提高了效率。