付長斐,葉 賓,2,李會軍,2
(1.中國礦業(yè)大學 信息與控制工程學院,江蘇 徐州 221116;2.徐州市人工智能與大數(shù)據(jù)重點實驗室,江蘇 徐州 221116)
運動目標跟蹤一直是機器視覺領域的研究熱點之一,其在軍事偵察、精確制導、火力打擊以及安防監(jiān)控等領域有著廣泛的應用前景[1]。感興趣區(qū)域(region of interest,ROI)檢測將人類的視覺注意機制引入到圖像分析過程中,對于提高現(xiàn)有圖像分析系統(tǒng)的工作效率有著積極的作用。雷琳等在目標跟蹤算法中利用ROI 圖像匹配來克服目標狀態(tài)匹配誤差的影響[2]。選取適當?shù)腞OI可以保證在足夠的特征識別信息前提下,盡量減少數(shù)據(jù)量,降低外界噪聲的影響,有效地提高識別系統(tǒng)的準確性和有效性[3]。這種技術(shù)被廣泛應用于各種圖像處理相關的算法中,李琦等在手背靜脈識別中提出一種消除了平移和旋轉(zhuǎn)影響的ROI 提取算法[4],陳高攀等在前方車輛檢測算法中包含了ROI 提取的部分[5],Park 等設計的壓力評測算法中以臉部圖像為ROI 來評估壓力值[6],古新展等將ROI 提取應用于CT 圖像處理中用來分析器官和組織[7]。
本文提出一種基于HSV(hue saturation value)顏色空間、把灰度圖像閾值分割和HSV 顏色判別相結(jié)合的ROI 提取方法。使用C++開發(fā)的程序已被成功應用于2018 年RoboMaster 全國大學生機器人大賽中,實現(xiàn)了對裝甲燈柱的實時準確提取以及對移動機器人的實時跟蹤。應用結(jié)果表明,該ROI 提取方法具有速度快、準確性高、抗干擾能力強等優(yōu)點。
ROI 檢測也是許多機器人比賽中進行動態(tài)視覺目標檢測與識別的基本環(huán)節(jié)。快速而準確地識別出敵我雙方目標,對于實施精準打擊、快速救援等具有重要意義。在RoboMaster 全國大學生機器人大賽中,常見的檢測目標是安裝在移動機器人四周的4 個裝甲,以紅色或藍色燈柱區(qū)分,如圖1 所示。
圖1 RoboMaster 機器人大賽裝甲示意圖Fig.1 Schematic diagrams of the armors in the RoboMaster robot competition
針對圖1 所示紅、藍裝甲的彩色燈柱,裝甲圖案識別之前需要獲得燈柱的位置信息來提取裝甲ROI。常用的ROI 提取工具有邊緣檢測算法[8]、閾值分割算法[5,9-11]、幾何描述及形狀描述[12],這幾種方法分別根據(jù)邊緣信息、亮度信息以及圖像區(qū)域的形狀、面積、長寬比等信息來提取ROI。邊緣檢測算法在很多領域得到應用,是一種成熟的圖像分割算法,同時還衍生出了應用于不同領域的算法,如基于自適應Canny 算子邊緣檢測的電流互感器裂縫檢測算法[8]。然而,一幅像素為640×480 的圖像在I7-7700HQ 平臺下應用Canny 算子僅僅處理邊緣檢測部分,且速度較慢,通常都在50 幀/s以下;同時邊緣信息還需要結(jié)合幾何形狀描述算法才能達到檢測目的,有時這些條件并不具備。此外,灰度閾值分割對于環(huán)境光的變化比較敏感,主要依賴于之后的幾何描述算法來濾除偽ROI,因此難以實現(xiàn)較好的提取效果,且過于依賴灰度閾值分割,容易因環(huán)境光的變化導致系統(tǒng)失效。
上面所述的方法都沒有將目標物體的顏色信息加以合理的利用??紤]到人眼對顏色信息十分敏感,比如人眼可以輕易地識別出機器人比賽中的燈柱,同理,可以讓計算機去模仿人眼對顏色的辨別,將顏色特征用于ROI 的提取算法中。
本文所述的機器人裝甲檢測程序在多種復雜比賽環(huán)境中,不需要調(diào)參即可獲得穩(wěn)定效果。在比賽過程中,利用工業(yè)相機每秒鐘采集150 張640×480 的圖像并送入到I7-7700HQ 嵌入式處理器中,結(jié)合燈柱匹配以及SVM 分類算法,每秒能夠輸出約100 幀的檢測結(jié)果。當操作員發(fā)出跟蹤指令時,云臺能立即擺動并對準相機前方的敵方機器人裝甲。在整個比賽過程中,算法表現(xiàn)穩(wěn)定出色。
HSV 是由Alvy Ray Smith 在1978 年根據(jù)顏色的直觀特性創(chuàng)建的一種顏色空間。這種顏色空間在各種圖像分析任務中多有應用,例如可以用來做膚色區(qū)域分割[13]。HSV 顏色空間通過色度H(hue)、飽和度S(saturation)和明度V(value)3 個分量對色彩進行描述[14]。如圖2,色度H用角度度量,繞V軸旋轉(zhuǎn)360°構(gòu)成一個圓;飽和度S是一個比例值,取值從0 到1,當S為0 時表現(xiàn)為無色[10];明度V表示像素的明亮程度,范圍從0 到1。在OPENCV 算法實現(xiàn)時,H被量化為0~180,V和S均被量化為0~255。這種顏色表示方式和孟塞爾表色模型非常接近,與人眼視覺對顏色信息的感受方式相同。鑒于人眼能夠輕易地分辨出彩色燈柱,故選用這種顏色模型是有一定優(yōu)越性的。HSV 顏色空間的3 個分量具有相對獨立性,而H和S分量受光照及陰影遮擋的影響很小,這也是選取HSV 顏色空間對目標進行識別的原因之一[15]。
圖2 HSV 顏色空間模型Fig.2 HSV color space model
將計算機常用的RGB 模型轉(zhuǎn)換為HSV 模型有一定的計算量,因此對整幅圖像進行轉(zhuǎn)換不能滿足系統(tǒng)設計的實時性要求;但是用來處理閾值分割和形狀描述之后得到的偽ROI,效果很好。在由RGB 顏色空間向HSV顏色空間的轉(zhuǎn)換中,r,g,b分別是RGB 顏色模型中一種顏色的色品坐標,色品坐標值是0 到1 之間的實數(shù)。式(1)和式(2)給出了從RGB 模型的r/g/b3 個值到HSV 顏色空間中H/S/V3 個值的轉(zhuǎn)換方法[16],取
則
式中:H∈[0°, 360°];S∈[0,1];V∈[0,1]。
色品坐標r,g,b可由式(3)計算得到[17]:
式中:R,G,B分別表示一個像素在紅色、綠色和藍色3 個通道的數(shù)值,取值范圍一般為0~255。
RGB 這3 個通道的數(shù)值及對應的顏色在圖3 中有直觀體現(xiàn)[18]。式(2)中的HSV 參數(shù)在OPENCV 計算機視覺庫中被歸一化后,根據(jù)選用數(shù)據(jù)結(jié)構(gòu)的精度進行量化。
圖3 RGB 顏色模型Fig.3 RGB color model
基于HSV顏色空間的圖像ROI提取算法如圖4所示。首先,將RGB 空間的原圖(圖5)轉(zhuǎn)化為灰度圖像,經(jīng)過閾值分割可以把圖像中較暗的區(qū)域濾除。此過程中閾值之所以被設置得較低,是因為在復雜環(huán)境中燈柱亮度反映在圖像中是在一定范圍內(nèi)變化的。通過矩形度和形狀描述,篩選出符合矩形條狀的輪廓;用這些輪廓的外接矩形作為掩模,可得圖6 所示的偽ROI圖像,這時基本上保證偽ROI 中的圖像都為較亮的矩形條狀或者具有類似的特征。
圖4 ROI 提取算法框圖Fig.4 Flowchart of the ROI extraction algorithm
圖5 帶藍色裝甲的移動機器人原圖Fig.5 Original image of a moving robot with blue armors
圖6 矩形擬合所得偽ROI 圖像Fig.6 Pseudo ROI image after rectangle fitting
偽ROI 已經(jīng)大大減少了數(shù)據(jù)量,此時將ROI 轉(zhuǎn)換至HSV 空間,提升了整套算法的速度;再結(jié)合HSV 濾波的精度,實現(xiàn)了準確度和速度俱佳的ROI 提取算法。整個算法流程如下所示。
輸入:一張彩色圖片
輸出:彩色燈柱ROI
當該幀不為空時:
(1) 對灰度圖閾值分割,設置閾值為185,得到二值圖并尋找輪廓;
(2)在二值圖中提取輪廓,找出所有輪廓的最小包圍矩形,計算輪廓面積和最小包圍矩形面積;
(3)在面積大于200 且小于5 000 的輪廓中,保留輪廓面積與最小包圍矩形面積比值(矩形度)大于0.5 且旋轉(zhuǎn)矩形長寬比大于1.67 的輪廓;
(4) 在面積小于200 的輪廓中,保留面積大于30(確認不是噪點)、旋轉(zhuǎn)矩形長寬比符合要求的輪廓,與第(3)步不同的是,這里對長寬比要求更高,閾值為3 以上;
(5)根據(jù)第(3)步和第(4)步所得輪廓,繪制垂直包圍矩形并擴大,使其包含大部分光暈,根據(jù)垂直矩形獲取原圖子圖,并轉(zhuǎn)換為HSV 空間;
(6)統(tǒng)計每個子圖中HSV 及RGB 參數(shù)符合條件的像素數(shù)量,若該矩形中符合條件的像素占整個區(qū)域的比例達到30%,則判定為藍色燈柱目標。
當該幀為空時:繼續(xù)采集下一幀圖像。
返回彩色燈柱ROI
整個系統(tǒng)中,燈柱檢測和左右燈柱匹配為主要耗時部分。在實際應用中,為使單片機穩(wěn)定地輸出電機控制信號,需要視覺識別算法的處理速度達到50 FPS(frames per second)以上。采用該方法檢測燈柱的幀率可以達到110 FPS 以上。在ROI 框定之后,用于模式識別的數(shù)據(jù)量已經(jīng)很小,且采用SVM 分類耗時不長,視覺處理系統(tǒng)能夠為單片機提供較高幀率,從而保證電機控制的連續(xù)性和穩(wěn)定性。
3.2.1 偽ROI 獲取
把二值圖輪廓分為面積在[30, 200]和[200, 5 000]兩種,對輪廓畫出最小包圍矩形。對于較大面積輪廓,計算輪廓面積為S1,最小包圍矩形的面積為S2,那么輪廓矩形度被定義為R=S1/S2。如果R>0.5,并且長寬比大于1.67,則認為形狀符合要求。對于較小面積(640×480圖像中面積小于200)的輪廓,要求最小包圍矩形長寬比在[1/3,3]范圍內(nèi)。因為當目標距離較遠時,形狀特性已經(jīng)不明顯,只需要輪廓為條狀即可。將獲得的輪廓保存在輪廓數(shù)據(jù)結(jié)構(gòu)中,用OPENCV 中的工具畫出boundningRect,將矩形框按輪廓比例稍微擴大,使矩形框充分包括光暈,得到圖6 中所示區(qū)域。
3.2.2 HSV 濾波
根據(jù)式(2),將圖6 中偽ROI 轉(zhuǎn)換為HSV 顏色空間圖像,如圖7 所示。區(qū)域內(nèi)同時滿足以下條件的像素點可判斷為藍色:
(1)RGB 空間中,R(x,y)<150;
(2)H(x,y)∈[100,124];
(3)S(x,y)∈[150,255];
(4)V(x,y)∈[100,255]。
圖7 偽ROI 轉(zhuǎn)換為HSV 顏色空間Fig.7 Pseudo ROI transformed to HSV color space
將矩形框和滿足條件的像素點畫出,得到如圖8 所示的判別結(jié)果。篩選像素所用的HSV 顏色模型參數(shù)可以由表1 及多次試驗獲得,表中紅色占兩列,這表明紅色像素的色度值占據(jù)兩個區(qū)間。由圖8 可以看出這種顏色判別方法的效果:4 個屬于藍色燈柱的矩形框中有很多藍色像素被判別正確,而非藍色燈光輪廓的包圍矩形中幾乎沒有被判定為藍色的像素點。
圖8 顏色像素值判別結(jié)果Fig.8 Result of the color pixel value judgement
表1 HSV 顏色空間顏色參數(shù)列表Tab.1 List of the parameters in HSV color space
為驗證本文所提算法的有效性和可行性,選擇實驗平臺Intel I7-6700HQ 和操作系統(tǒng)Ubuntu 16.04,采用C++和OPENCV 實現(xiàn)算法。選取該平臺對640×480像素的1 000 張RoboMaster 機器人大賽圖片進行處理,平均運行速度為102.33 幀/s,燈柱平均識別率為97.4%(識別到燈柱數(shù)占組圖中總燈柱數(shù)的比例)。圖9示出其中一幅圖片的檢測效果,藍色燈柱都被檢測到,并用紅色框示出。圖中每個框的角度、長寬及中心點位置都被儲存在用C++語言定義的旋轉(zhuǎn)矩形類當中。黃色框線框出的是高亮度條狀物體,即前面所說的偽ROI;在黃色框線區(qū)域內(nèi)部如果有紅色框線,表明此ROI 為符合算法要求的ROI。任意輸入一幅符合格式要求的圖像,該算法會自動畫出黃框和紅框,即能得到符合要求的燈柱位置及形狀信息。測試結(jié)果表明,本文所提算法能夠為STM32 單片機實時提供大量目標的角度及坐標信息,結(jié)合云臺控制算法,可實時跟蹤打擊移動機器人。
圖9 檢測效果Fig.9 Result of the detection
本文提出了一種基于視覺目標亮度特征、輪廓形狀特征和顏色特征的ROI 提取算法,用于識別圖像中的彩色燈柱,以此作為機器人裝甲識別的基礎;結(jié)合閾值分割和形狀描述得到偽ROI,減少了數(shù)據(jù)量;利用HSV 顏色空間快速而準確地判定顏色,解決了燈柱本身表現(xiàn)為亮白色而只有周圍的光暈表現(xiàn)為彩色所帶來的檢測困難。實驗和實際應用結(jié)果表明,本文所提算法魯棒性強、準確性高、速度快,依此很好地完成了機器人比賽中實時跟蹤裝甲目標的任務。
該方法在比賽應用中能成功的原因,一方面在于其從多個角度準確地描述了目標的特征;另一方面是其將算法中計算量大的部分(例如從RGB 顏色空間到HSV 顏色空間的轉(zhuǎn)換等)放在算法靠后的部分,這時只需處理圖像中少量的感興趣區(qū)域,從而提高了算法的效率。這種結(jié)合亮度、形狀和顏色的描述對于非目標圖像要求很嚴苛,而對于機器人在移動過程中產(chǎn)生的不同目標子圖的要求卻很寬松。本方法利用HSV 顏色空間去除亮度與顏色之間相關性的優(yōu)點,對于顏色和形狀特征結(jié)合后與背景有明顯差別的特征提取具有很好的參考價值。在后續(xù)的研究中,將進一步提高算法運行速度,同時克服背景干擾及噪聲對算法產(chǎn)生的影響。