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