北方工業大學 侯昊 王廣碩 李永杰 杜春來
實時的運動檢測和跟蹤技術是一項融入圖像處理、計算機視覺、網絡傳輸等多學科的技術,在生物醫學、工業自動化生產、智能機器人等多個領域都有著非常廣泛的應用。所謂實時的運動檢測與跟蹤技術就是將實時采集的圖像信息進行檢測,提取有用信息,識別目標參數特征,過濾噪聲并鎖定目標[1],而實現運動物體的檢測和跟蹤依賴于對物體的識別,所以利用機器視覺技術對目標進行快速自動地識別別成為了關鍵。但現在大多數運動檢測系統基于PC 機等大型且計算能力較強的設備,基于卷積神經網絡(CNN)的機器學習算法已經在很多領域中進行了探索和應用[2]。而某些識別中,進行目標的識別檢測并不需要準確的識別出是目標種類,只是要求快速識別且靈活部署在某些小型嵌入式系統中[3]。
因此本文設計并實現了一種基于HALCON 的輕量級物體識別方法,尋求在較為干凈的深度圖像下,克服復雜光線變化對實驗結果的影響。在完成識別以后,搭配Realsense D 相機的測距功能可實現對運動的待測目標實時檢測和跟蹤。在本文實驗中的攝像頭是標定的。
HALCON 是德國MVtec 公司開發的一套完善的標準的機器視覺算法包,擁有應用廣泛的機器視覺集成開發環境,其靈活的架構便于機器視覺,醫學圖像和圖像分析應用的快速開發。在歐洲以及日本的工業界已經是公認具有最佳效能的Machine Vision 軟件。
RealSense 深度相機是使用立體視覺來計算深度,立體視覺實現包括左成像儀、右成像儀和可選的紅外投影儀。紅外投影儀投影不可見靜態紅外圖像,以提高低紋理場景的深度精度。左右影像捕捉現場,將原始圖像數據發送到視覺處理器,它計算圖像中每個像素的深度值關聯點左邊圖像正確的圖像,并通過轉變之間的點左邊的圖像和圖像,處理深度像素值以生成深度幀,隨后的深度幀創建深度視頻流。
本節重點闡述基于HALCON 的輕量級物體識別算法及所使用的重要HALCON 算子。
因為運動的待識別目標的顏色會隨著距離Realsense相機的遠近發生變化,所以具有明顯的顏色特征。同時待識別目標運動到最高點時及過最高點后,因其大小與周圍物體差別較大,有明顯的輪廓信息,所以可以借此提取目標。首先選擇閾值分割來做初步識別,然后結合待識別目標輪廓信息,通過篩選面積大小來對運動的待識別目標進行識別,最后結合視覺測距對運動的待測目標實現實時跟蹤。識別算法的整體框架如算法1所示。
算法1 整體識別算法
輸入:實時圖像采集幀
輸出:標記運動物體輪廓
1:function RecogniseImages(Image)
2:read_image() //圖像采集
3:gen_rectangle1() //創建ROI
4:rgb1_to_gray()
5:threshold() //對圖像進行處理
6:connection() //分割不相連區域
7:select_shape() //篩選大小獲得待識別目標
8:if AREA > 0 then
9:disp_rectangle2() //標記物體
10:else
11:find_scaled_shape_model //模板匹配算法
12:end if
13:return result
14:end function
本文主要應用的HALCON 算子,其主要的識別算子分述如表1 所示。

表1 主要算子Tab.1 Main operators
首先獲取初始圖像,對圖像獲取初步信息并顯示出來,通過取ROI 來縮小圖像處理的范圍,從而加快圖像處理的速度。再對ROI 進行圖像預處理從而獲取大概的目標區域。預處理以后的ROI 如圖1 中灰色線條圈出部分所示。

圖1 預處理以后的ROI 部分Fig.1 ROI section after preprocessing
如算法2 所示:
算法2 預處理算法
輸入:實時圖像采集幀
1:function PRETREATMENT(Image)
2:gen_rectanglel() //創建矩形平行于坐標軸
3:rgb1_to-gray() //創建ROI
4:threshold() //對圖像進行處理
5:end function
在圖像識別過程中并不是所有的輪廓都是由待識別目標產生,有些是由噪聲產生的輪廓或是待識別目標的子輪廓。所以必須對輪廓進行篩選,從而淘汰掉非目標輪廓。在通過預處理以后圖像明顯看到待識別目標與周圍分割開來。此時通過篩選面積的大小提取識別到的目標如圖2 所示,圖像中間所形成的封閉輪廓就是待識別目標。

圖2 篩選面積后得到的待識別目標Fig.2 Target to be identified after filtering the area
如算法3 所示:
算法3 篩選算法
輸入:被分割的不相連區域
輸出:篩選大小獲得的待識別目標
1:function SCREEN(ConnrctedRegions)
2:connection() //分割不相連區域
3:select_shape() //篩選大小獲得待識別目標
4:if AREA > 0 then
5:disp_rectangle2() //標記物體
6:else
7:find_scaled_shape_model //模板匹配算法
8:end if
9:return result
10:end function
為了提高識別算法的魯棒性,增添了模板匹配算法,這種算法是基于邊緣方向梯度的匹配。如果通過以上的處理不能提取目標的時候,采取模板匹配算法。然后通過干凈的模板來匹配處理好的ROI 中的目標,匹配的結果如圖3 所示。

圖3 在ROI 中進行模板匹配Fig.3 Template matching in ROI
如算法4 所示:
算法4 匹配算法
輸入:特定區域ROI
輸出:標記運動物體的輪廓
1:function MAtcH(ImageReduced)
2:set_system() //模板匹配設置
3:read_image() //讀入模板圖像
4:gen_circle()
5:reducedomain() //獲得特定區域ROI
6:create_scaled_shapemodel() //創建模板
7:get_shape_model_contour() //獲取模板輪廓
8:find_scaled_shape_model() //匹配模板
//進行放射變換
9:for MatchingObjIdx := 0 to ModelScore 1 by 1 do
10:hommat2d_identity()
11:hom_mat2d_scale()
12:hom_mat2d_rotate()
13:hom_mat2d_translate()
14:affine_trans_contour_rld()
15:end for
16:end function
進行模板匹配以后可以得到較為清晰的識別目標,如圖4 所示,可知此時待識別目標的輪廓已經匹配成功并且提取到了。

圖4 模板匹配匹配到的待識別目標Fig.4 The target to be identified matched by the template
本文實驗的數據來自Realsense D 相機拍攝。相機置于離地10cm 高度,斜45°角擺放。實驗中使用機械臂拋擲橄欖球來模擬待識別的運動物體。
本識別算法基于HALCON 軟件進行分析識別,對輸入幀進行處理和模板匹配學習后,通過修改篩選面積的大小和模板匹配的參照物可以對一部分飛行中的物體進行識別。研究過程對2 組飛行物體進行學習,8 份數據進行測試,測試結果都獲得成功。
通過與基于OpenCV 編寫的幀差法識別運動物體的結果對比,可以發現兩種方法都能識別出運動中的物體。但在實際應用中搭配Realsense D 相機使用的本文提出的算法可以在識別目標后同時獲取目標距離相機的距離。而基于OpenCV 編寫的識別算法則不能得出此距離,僅能夠跟蹤目標。本文針對兩種識別方式的結果,進行比較后整理如表2 所示。

表2 兩種識別方式結果Tab.2 Results of two recognition modes
利用HALCON 的圖像分析技術可以較為快速地識別出運動的物體,此功能可以運用到某些需要快速識別到運動物體的工作中,配合后續的跟蹤檢測工作。
本文提出了一個基于Realsense D 相機和HALCON 的圖像處理分析的輕量級物體識別方法。針對基于OpenCV的幀差法進行了對比試驗,以及進行了多組實驗,驗證了該算法的可行性、可靠性,并且增加了模板匹配算法以增強魯棒性。充分利用HALCON 的便捷性和Realsense D相機的深度圖像功能,滿足了小型化、靈活化的需求。
綜上所述,利用HALCON 的圖像分析對運動中的物體進行識別,技術上可以實行,并且減少對計算機CPU的使用,從而使得識別算法可搭配其他更復雜的跟蹤算法。下一步將開展更多的研究與實驗以提高算法的泛化性和準確性。