做機器視覺哪個軟體好?

本人視覺新生一枚,現在在做去年robocon的羽球雙雄項目(羽毛球機器人),做視覺這一塊,需要捕捉羽毛球位置和速度等信息。目前知道halcon,matlab,opevCV和c++這些軟體可以用於視覺,但不知道選擇什麼軟體,考慮到是新手,所以軟體的難易度和學習資料的多少等均需要考慮在內,希望有懂的人指導一二,究竟用什麼軟體適合。


我當年大二做視覺的時候也是一臉懵逼,所以來答一下吧,希望能有幫助。

雖然被邀請了,但由於沒有做過這個項目,所以也算是強答吧?如果有答得不對的地方,也歡迎大家指出。

首先,這個比賽應該是要求利用視覺系統識別羽毛球位置,並估計出羽毛球速度、預測擊球點。

好了,提取幾個可能會用到的關鍵技術點:①立體視覺(標定);②目標檢測(圖像處理);③機器人控制(實時性);④kalman濾波/粒子濾波。

①立體視覺(標定)

要想得到羽毛球的位置,就需要使用立體視覺技術,根據使用的設備不同,標定難易也不同:

1)如果是打算自己用兩個相機組成雙目視覺系統

那麼需要進行兩個相機之間的標定+相機系統與世界坐標系(球場)的標定。

2)如果是購買現成的立體視覺感測器(內參已經標定好),如kinect或其他雙目相機

那麼就只需要標定相機系統與場地坐標系之間的相對位姿。

由於標定只需要進行一次,所以對計算效率等要求並不高。但是,編程難度而言,對於視覺入門者來說,還是比較難的。

所以,這部分要求容易實現(有源代碼或者能直接使用的標定庫),對實時性無要求。那麼,Matlab(Camera Calibration Toolbox for Matlab)和OpenCV(Camera calibration With OpenCV)都是可以的。語言的話,用Matlab就是採用它自己的語言,用OpenCV的話,建議C++。

②目標檢測(圖像處理)

這個應該是這個項目的主要內容。就是如何根據採集到的圖像得到羽毛球位置。

還是根據感測器分為兩種做法:

1)雙目相機:

如果是採用雙目相機,那方法就是通過分別檢測羽毛球在兩幅圖像中的位置,通過前面標定數據,利用簡單的幾何關係計算出羽毛球的3D坐標(如下圖)。

要從每幅圖像中處理得到羽毛球位置,可能會用到的圖像處理技術有閾值分割、二值化、膨脹腐蝕等形態學處理、連通域處理、關鍵點提取等。

那麼,這些工作Matlab(Image Processing Toolbox)和OpenCV(imgproc, feature2d)也都可以做。

區別是Matlab比較好調試、對於初學者也比較友好。OpenCV處理比較快。

2)kinect等

如果是能直接拿到點雲數據(就是一堆xyz坐標點,大概如下圖)

那麼,就可以採用簡單的點雲分割、歐氏聚類等演算法可以實現(具體效果不清楚)。如果是要處理點雲,那麼自然是建議採用PCL(Point Cloud Library (PCL))了,編程語言是C++。據說新版本Matlab(3-D Point Cloud Processing)裡面也有點雲處理的功能,但似乎處理速度極慢(存疑?)。

③機器人控制(實時性)

由於比賽過程中,需要實時檢測羽毛球位置,對演算法的實時性要求較高。因此,Matlab只能放棄了,要連機器人的話還是C++比較實用。

④kalman濾波/粒子濾波

這一步其實很重要,前面三步只是計算當前圖片/點雲中的羽毛球位置,而打羽毛球時,我們需要得到羽毛球的速度、並估算出羽毛球下一時刻的位置和擊球點。

當然,粒子濾波在目標跟蹤領域很常用,但是由於羽毛球可以建立動力學模型,所以我比較推薦kalman濾波。

這些演算法都很容易實現,網上也一大堆博客教程。MATLAB還是C++都可以。

DL

好吧,如果不想從傳統視覺的方法做,想利用深度學習的話,那麼前面的當我沒說,直接根據你使用的深度學習庫選擇語言與平台即可。

綜上,如下:

最後,不論是OpenCV,PCL還是MATLAB,確定之後,就直接去看他們的教程吧OpenCV,PCL,Matlab。都很容易就能掌握的。

圖像處理的基礎知識,可以看岡薩雷斯的《數字圖像處理》,有中文版:

Rafael Gonzalez, C., and E. Richard Woods. "Digital image processing."Pearson Education (2002).


常用的機器視覺軟體主要有:

1.軟體平台:

1)C++:最通用,功能最強大,主流選擇平台。

2)C#:比較容易上手,界面等功能比MFC難度低,QT的界面編寫也容易,目前很多廠商SDK都使用C#。

3)Labview:調用NI的Vision圖像工具包,開發周期短,維護較容易。

4)其他:VB、delphi、java等語言很少用。

2.工具包:

1)OpenCV:跨平台計算機視覺庫,可運行在Linux、Windows、Android和Mac
OS操作系統上。OpenCV主要介面是C++語言,實現了圖像處理和計算機視覺方面的很多通用演算法。

2)halcon:德國MVTech,底層功能演算法多,運算性能快,開發需要一定軟體功底和圖像處理理論。

3)VisionPro:美國康耐視的圖像處理工具包,多數演算法性能都很好,開發上手比halcon容易。

4)NI Vision:軟體圖形化編程,上手快,開發周期短,缺點是不是每個模塊都很好。售價便宜,但速度和精度性能沒有前兩種軟體好。

5)MIL:加拿大maxtrox,是Matrox Imaging Library 的簡寫。主要用戶是早期的做激光設備,用於定位的較多。

6)CK Vision。創科公司,價格便宜優勢明顯,基本功能也都有,所以在國內需要保護版權的企業,用量很大。

7)邁斯肯:主要是條碼閱讀一類。

8)其他:一些廠家的圖像工具包,市場影響力不大。

個人看法,針對不同應用場景,需要你選擇軟體工具


Halcon,我愛你,嫁給我吧。

什麼,你爹要彩禮(licence),而且價格不低,可是你家對門的opencv 不要啊。就是技術差點。

掛斷電話後出去轉悠,忽然看到紅色髮廊裡面有個妖嬈的美女(labview vision)對我打招呼,帥哥,過來玩啊。我感覺腳不聽話的往裡面走,女子先自我介紹,帥哥,我可是東莞女子技術學院畢業的。這裡什麼保健都有,先來個毒龍吧。

正在享受時,只聽到美女來了句,你這真小。頓時沒了興趣,結賬時,哇靠,夠的上半個彩禮錢了。

不覺想到halcon最開始熱戀的30天,什麼姿勢動作都肯玩,可是到了第31天凌晨就不停催我去下彩禮,而且把衣服扣的死死的解都解不開,不像opencv,一開始連69,毒龍都不懂,慢慢調教的懂了一點,可是有次調過頭害得我連續一周腿發軟,想去大保健,人家費用也不低,這可咋辦

先想到這麼多,以後再寫,我也只是視覺的入門者,大家多多指正


opencv是開源的後續推廣的成本低,halcon是非常成熟的商業化的圖像處理軟體,類似的軟體還有康耐視公司的visionpro,目前應用上halcon,visionpro比較多,資料的話halcon和opencv都比較多。但是如果要自主研發演算法的話,推薦opencv,要求快速出結果的話,用halcon和visionpro。matlab高校裡面數據分析時會用,其他的用得不多。語言上由於圖像處理對於實時性要求高,首推C++,目前C#,http://VB.NET也有再用,也有用NI的labview.


看到opencv和c++放在一起不知如何吐槽。。


CkVision 的視覺軟體不錯,功能齊全,帶有3D功能。國內用的人很多


Matlab

python

還有不推薦但是工程都在用的c++


語言:想做演算法matlab和python就行,實時性高的肯定是c++

視覺庫想學的肯定就 opencv pcl (halcon)咯

綜上,用opencv 的c++介面


新手的話如果c語言水平可以推薦opencv如果就是編程小白推薦labview


Halcon不是輸入數據就可以GMM嗎?還是Halcon快


機器視覺軟體作為機器視覺系統的重要組成部分,視覺軟體主要通過對圖像的分析、處理和識別,實現對特定目標特徵的檢測。由於機器視覺系統在現代工業領域的廣泛應用,使應用於機器視覺系統的圖像處理軟體技術得到了告訴發展。


目前,機器視覺軟體的競爭,已從過去單純追求軟體多功能的競爭,轉向對視覺演算法的準確性、高效性的競爭。常規的機器視覺軟體均可提供匹配工具、特徵分析工具等多種視覺功能,但由於演算法設計的不同,其性能存在較大的差異。優秀的機器視覺軟體可對圖像中的目標特徵進行快速而準確地處理和分析,並最大限度地減少對硬體系統的依賴性。

根據機器視覺軟體不同使用層次,可進行如下分類

軟體類型
用戶類型
特點描述
使用要求 應用軟體
最終用戶、設備商、系統集成商
即機器視覺系統應用軟體,針對特定應用,對軟體進行功能和參數配置即可運行。但無法進行功能擴展或調整。
對應用有較好理解,需對軟體進行功能和參數配置,無需編程和圖像基礎。 專用開發包
設備商、系統集成商
即針對特定應用開發的專用開發包,視覺技術和應用理解的整合,開發和集成便捷。
對應用有較好的理解,需進行編程開發,無需圖像基礎。 平台軟體
設備商、系統集成商
即機器視覺平台軟體,集成圖像處理和分析工具、專業視覺工具和機器視覺系統常用軟體功能。具有最大的開發靈活性。
對應用有深入理解,需進行編程開發,需要圖像基礎。


推薦閱讀:

世界機器人大會是自娛自樂嗎?
無人機研發包含哪些方面?
為什麼日本這個國家會對人偶和機器人如此執著?
科學家為什麼不能根據人的大腦神經網路的工作方式,研究出類似的演算法,從而做出可以想人類一樣思考的機器人?
如何評價 Rethink Robotics 公司的 Baxter 機器人?

TAG:機器人 | 圖像處理 | 機器視覺 | 圖像處理軟體 |