機器人視覺應用程序可以帶來一系列復雜的需求,但開源庫可以為幾乎所有需求提供解決方案。開發人員可以找到從基本的圖像處理和對象識別再到運動規劃和避免碰撞的開源軟件包 。另外,還有有一些關鍵的開源圖像處理軟件包,可以幫助開發人員實現復雜的機器人系統。
在可用的開源軟件包中,OpenCV可能是使用最廣泛、功能最豐富的。OpenCV分發版實現了超過2500種算法,通過一系列模塊處理圖像處理需求,其中包括以下內容:
core,定義所有其他模塊使用的基本數據結構和函數;
imgproc,提供圖像處理功能,包括線性和非線性圖像濾波、幾何圖像變換、顏色空間轉換、直方圖等;
video,支持運動估計,背景減法和對象跟蹤算法;
calib3d,提供基本幾何算法,攝像機校準,物體姿態估計等;
features2d,提供特征檢測器,描述符和描述符匹配;
objdetect,提供對象和預定義類實例的檢測;
OpenCV使用c++編寫,支持c++、Python、Java和Matlab接口,支持Windows、Linux、Android和Mac OS。OpenCV除了支持單指令、多數據(SIMD)指令集外,還通過GPU模塊為許多功能提供基于cuda的GPU加速,通過ocl模塊提供OpenCL加速。最近發布的OpenCV 4.0帶來了許多性能改進和功能,包括流行的Kinect融合算法的實現。
就其功能而言,OpenCV可能需要一個學習過程,這超出了希望使用機器人視覺快速移動的開發人員的耐心。對于這些開發人員,基于python的SimpleCV也可能是個不錯的選擇。SimpleCV構建于OpenCV之上,它提供了高級機器人視覺開發人員所需的功能,但也提供了一個可訪問的框架,幫助經驗較少的開發人員使用簡單的Python函數調用來探索基本的機器視覺功能。例如,開發人員可以使用SimpleCV image類中的一個簡單內置方法(下面清單中的img. binalize())快速實現常用的函數,比如圖像閾值化,最后顯示如圖1所示的結果。
fromSimpleCVimportImage,Color,Display #Makeafunctionthatdoesahalfandhalfimage. defhalfsies(left,right): result=left #croptherightimagetobejusttherightside. crop=right.crop(right.width/2.0,0,right.width/2.0,right.height) #nowpastethecropontheleftimage. result=result.blit(crop,(left.width/2,0)) #returntheresults. returnresult#Loadanimagefromimgur.img=Image('http://i.imgur.com/lfAeZ4n.png') #binarizetheimageusingathresholdof90#andinverttheresults.output=img.binarize(90).invert()#createthesidebysideimage.result=halfsies(img,output)#showtheresultingimage.result.show()#savetheresultstoafile.result.save('juniperbinary.png')
圖1.上面列出的Python代碼的結果(來源:SimpleCV)
除了基本的圖像處理功能外,OpenCV和SimpleCV還實現了許多高級圖像處理算法,機器人系統需要處理對象或在物理環境中安全運行。在許多這些計算中使用的基本數據結構之一是點云 – 表示對象的多維數據點的集合(圖2)。從相機獲取,對象的點云用于基本的機器人操作,例如對象識別,對齊和擬合。對于使用點云,點云庫(PCL)[源代碼]實現了過濾,擬合,關鍵點提取,分割等算法。
圖2.基本環面的點云數據集。
-
機器人
+關注
關注
210文章
28194瀏覽量
206507 -
開源軟件
+關注
關注
0文章
209瀏覽量
15886
原文標題:如何利用開源軟件開發機器人視覺系統?
文章出處:【微信號:vision263com,微信公眾號:新機器視覺】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論