機(jī)器人視覺應(yīng)用程序可以帶來一系列復(fù)雜的需求,但開源庫可以為幾乎所有需求提供解決方案。開發(fā)人員可以找到從基本的圖像處理和對(duì)象識(shí)別再到運(yùn)動(dòng)規(guī)劃和避免碰撞的開源軟件包 。另外,還有有一些關(guān)鍵的開源圖像處理軟件包,可以幫助開發(fā)人員實(shí)現(xiàn)復(fù)雜的機(jī)器人系統(tǒng)。
在可用的開源軟件包中,OpenCV可能是使用最廣泛、功能最豐富的。OpenCV分發(fā)版實(shí)現(xiàn)了超過2500種算法,通過一系列模塊處理圖像處理需求,其中包括以下內(nèi)容:
core,定義所有其他模塊使用的基本數(shù)據(jù)結(jié)構(gòu)和函數(shù);
imgproc,提供圖像處理功能,包括線性和非線性圖像濾波、幾何圖像變換、顏色空間轉(zhuǎn)換、直方圖等;
video,支持運(yùn)動(dòng)估計(jì),背景減法和對(duì)象跟蹤算法;
calib3d,提供基本幾何算法,攝像機(jī)校準(zhǔn),物體姿態(tài)估計(jì)等;
features2d,提供特征檢測(cè)器,描述符和描述符匹配;
objdetect,提供對(duì)象和預(yù)定義類實(shí)例的檢測(cè);
OpenCV使用c++編寫,支持c++、Python、Java和Matlab接口,支持Windows、Linux、Android和Mac OS。OpenCV除了支持單指令、多數(shù)據(jù)(SIMD)指令集外,還通過GPU模塊為許多功能提供基于cuda的GPU加速,通過ocl模塊提供OpenCL加速。最近發(fā)布的OpenCV 4.0帶來了許多性能改進(jìn)和功能,包括流行的Kinect融合算法的實(shí)現(xiàn)。
就其功能而言,OpenCV可能需要一個(gè)學(xué)習(xí)過程,這超出了希望使用機(jī)器人視覺快速移動(dòng)的開發(fā)人員的耐心。對(duì)于這些開發(fā)人員,基于python的SimpleCV也可能是個(gè)不錯(cuò)的選擇。SimpleCV構(gòu)建于OpenCV之上,它提供了高級(jí)機(jī)器人視覺開發(fā)人員所需的功能,但也提供了一個(gè)可訪問的框架,幫助經(jīng)驗(yàn)較少的開發(fā)人員使用簡(jiǎn)單的Python函數(shù)調(diào)用來探索基本的機(jī)器視覺功能。例如,開發(fā)人員可以使用SimpleCV image類中的一個(gè)簡(jiǎn)單內(nèi)置方法(下面清單中的img. binalize())快速實(shí)現(xiàn)常用的函數(shù),比如圖像閾值化,最后顯示如圖1所示的結(jié)果。
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代碼的結(jié)果(來源:SimpleCV)
除了基本的圖像處理功能外,OpenCV和SimpleCV還實(shí)現(xiàn)了許多高級(jí)圖像處理算法,機(jī)器人系統(tǒng)需要處理對(duì)象或在物理環(huán)境中安全運(yùn)行。在許多這些計(jì)算中使用的基本數(shù)據(jù)結(jié)構(gòu)之一是點(diǎn)云 – 表示對(duì)象的多維數(shù)據(jù)點(diǎn)的集合(圖2)。從相機(jī)獲取,對(duì)象的點(diǎn)云用于基本的機(jī)器人操作,例如對(duì)象識(shí)別,對(duì)齊和擬合。對(duì)于使用點(diǎn)云,點(diǎn)云庫(PCL)[源代碼]實(shí)現(xiàn)了過濾,擬合,關(guān)鍵點(diǎn)提取,分割等算法。
圖2.基本環(huán)面的點(diǎn)云數(shù)據(jù)集。
-
機(jī)器人
+關(guān)注
關(guān)注
211文章
28501瀏覽量
207472 -
開源軟件
+關(guān)注
關(guān)注
0文章
210瀏覽量
15928
原文標(biāo)題:如何利用開源軟件開發(fā)機(jī)器人視覺系統(tǒng)?
文章出處:【微信號(hào):vision263com,微信公眾號(hào):新機(jī)器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論