① sobel邊緣檢測優缺點與canny運算元的優缺點
一、sobel邊緣檢測:
1、sobel邊緣檢測優點:輸出圖像(數組)的元素通常具有更大的絕對數值。
2、sobel邊緣檢測缺點:由於邊緣是位置的標志,對灰度的變化不敏感。
二、canny運算元:
1、canny運算元優點:法能夠盡可能多地標識出圖像中的實際邊緣;標識出的邊緣要與實際圖像中的實際邊緣盡可能接近。
2、canny運算元缺點:圖像中的邊緣只能標識一次,並且可能存在的圖像雜訊不應標識為邊緣。
(1)不同視覺演算法優缺點擴展閱讀:
Sobel邊緣檢測的核心在於像素矩陣的卷積,卷積對於數字圖像處理非常重要,很多圖像處理演算法都是做卷積來實現的。
卷積運算的本質就是對制定的圖像區域的像素值進行加權求和的過程,其計算過程為圖像區域中的每個像素值分別與卷積模板的每個元素對應相乘,將卷積的結果作求和運算,運算到的和就是卷積運算的結果。
② 瑙嗚夎拷韙鐨勫垎綾
錛1錛夊崟鎽勫儚澶翠笌澶氭憚鍍忓ご
鍦ㄨ嗛戣窡韙鐨勮繃紼嬩腑錛屾牴鎹浣跨敤鐨勬憚鍍忓ご鐨勬暟鐩錛屽彲灝嗙洰鏍囪窡韙鏂規硶鍒嗕負鍗曟憚鍍忓ご璺熻釜鏂規硶錛圡onocularcamera錛変笌澶氭憚鍍忓ご璺熻釜鏂規硶錛圡ultiplecameras錛夈傜敱浜庡崟鎽勫儚澶磋嗛噹鏈夐檺錛屽ぇ鑼冨洿鍦烘櫙涓嬬殑鐩鏍囪窡韙闇瑕佷嬌鐢ㄥ氭憚鍍忓ご緋葷粺銆傚熀浜庡氫釜鎽勫儚澶寸殑璺熻釜鏂規硶鏈夊埄浜庤В鍐抽伄鎸¢棶棰橈紝鍦烘櫙娣蜂貢銆佺幆澧冨厜鐓х獊鍙樻儏鍐典笅鐨勭洰鏍囪窡韙闂棰樸
錛2錛夋憚鍍忓ご闈欐涓庢憚鍍忓ご榪愬姩
鍦ㄥ疄闄呯殑鐩鏍囪窡韙緋葷粺涓錛屾憚鍍忓ご鍙浠ユ槸鍥哄畾鍦ㄦ煇涓浣嶇疆錛屼笉鍙戠敓鍙樺寲錛屼篃鍙浠ユ槸榪愬姩錛屼笉鍥哄畾鐨勩備緥濡傦紝瀵逛簬澶у氭暟鐨勮嗛戠洃瑙嗙郴緇熻岃█錛岄兘鏄鍦ㄦ憚鍍忔満闈欐㈢姸鎬佷笅錛屽圭壒瀹氬叧娉ㄥ尯鍩熻繘鐩鏍囩殑璇嗗埆璺熻釜錛涜屽湪瑙嗚夊艱埅絳夌殑搴旂敤緋葷粺涓錛屾憚鍍忓ご寰寰闅忕潃鏃犱漢奼借濺銆佹棤浜烘満絳夎澆浣撹繘琛岃繍鍔ㄣ
錛3錛夊崟鐩鏍囪窡韙涓庡氱洰鏍囪窡韙
鏍規嵁璺熻釜鐩鏍囩殑鏁伴噺鍙浠ュ皢璺熻釜綆楁硶鍒嗕負鍗曠洰鏍囪窡韙涓庡氱洰鏍囪窡韙銆傜浉姣斿崟鐩鏍囪窡韙鑰岃█錛屽氱洰鏍囪窡韙闂棰樻洿鍔犲嶆潅鍜屽洶闅俱傚氱洰鏍囪窡韙闂棰橀渶瑕佽冭檻瑙嗛戝簭鍒椾腑澶氫釜鐙絝嬬洰鏍囩殑浣嶇疆銆佸ぇ灝忕瓑鏁版嵁錛屽氫釜鐩鏍囧悇鑷澶栬傜殑鍙樺寲銆佷笉鍚岀殑榪愬姩鏂瑰紡銆佸姩鎬佸厜鐓х殑褰卞搷浠ュ強澶氫釜鐩鏍囦箣闂寸浉浜掗伄鎸°佸悎騫朵笌鍒嗙葷瓑鎯呭喌鍧囨槸澶氱洰鏍囪窡韙闂棰樹腑鐨勯毦鐐廣
錛4錛夊垰浣撹窡韙涓庨潪鍒氫綋璺熻釜
鏍規嵁琚璺熻釜鐩鏍囩殑緇撴瀯灞炴э紝鍙灝嗚窡韙鐩鏍囧垎涓哄垰浣撲笌闈炲垰浣撱傛墍璋撳垰浣擄紝鏄鎸囧叿澶囧垰鎬х粨鏋勩佷笉鏄撳艦鍙樼殑鐗╀綋錛屼緥濡傝濺杈嗙瓑鐩鏍囷紱闈炲垰浣撻氬父鎸囧栧艦瀹規槗鍙樺艦鐨勭墿浣擄紝渚嬪傚竷鏂欒〃闈銆佽。鏈嶈〃闈㈢瓑銆傞拡瀵瑰垰浣撶洰鏍囩殑璺熻釜涓鐩村緱鍒板箍娉涙繁鍏ョ殑鐮旂┒錛岃岄潪鍒氫綋鐩鏍囩殑璺熻釜錛岀敱浜庣洰鏍囧彂鐢熷彉褰浠ュ強鍑虹幇鑷韜閬鎸$瓑鐜拌薄錛屼笉鑳界洿鎺ュ簲鐢ㄥ熀浜庡垰浣撶洰鏍囩殑璺熻釜綆楁硶閽堝歸潪鍒氫綋鐩鏍囩殑璺熻釜涓鐩存槸闈炲父鍥伴毦騫朵笖鍏鋒湁鎸戞垬鎬х殑璇鵑樸
錛5錛夊彲瑙佸厜涓庣孩澶栧浘鍍忕殑鐩鏍囪窡韙
鏍規嵁浼犳劅鍣ㄦ垚鍍忕殑綾誨瀷涓嶅悓錛岀洰鏍囪窡韙榪樺彲浠ュ垎涓哄熀浜庡彲瑙佸厜鍥懼儚鐨勮窡韙鍜屽熀浜庣孩澶栧浘鍍忕殑璺熻釜銆傜洰鏍囩殑綰㈠栧浘鍍忓拰鐩鏍囩殑鍙瑙佸厜鍥懼儚涓嶅悓錛屽畠涓嶆槸浜虹溂鎵鑳界湅鍒扮殑鍙瑙佸厜鍥懼儚錛岃屾槸鐩鏍囪〃闈㈡俯搴﹀垎甯冪殑鍥懼儚銆傜孩澶栧浘鍍忓睘浜庤鍔ㄥ紡鎴愬儚錛屾棤闇鍚勭嶅厜婧愮収鏄庯紝鍏ㄥぉ鍊欏伐浣滐紝瀹夊叏闅愭暆錛屼嬌鐢ㄦ柟渚匡紱綰㈠栧厜杈冧箣鍙瑙佸厜鐨勬嘗闀塊暱寰楀氾紝閫忕儫闆炬ц兘杈冨ソ錛屽彲鍦ㄥ滈棿宸ヤ綔銆傚彲瑙佸厜鍥懼儚鍏鋒湁鍏夎氨淇℃伅涓板瘜銆佸垎杈ㄧ巼楂樸佸姩鎬佽寖鍥村ぇ絳変紭鐐癸紝浣嗗湪澶滈棿鍜屼綆鑳借佸害絳夋潯浠朵笅錛屾垚鍍忔晥鏋滃樊銆
姣旇緝甯哥敤鐨勭洰鏍囪窡韙綆楁硶鏈変互涓嬪嚑縐嶏細鍩轟簬鐩鏍囪繍鍔ㄧ壒寰佺殑璺熻釜綆楁硶錛屽傦細甯у樊鍒嗘硶銆佸熀浜庡厜嫻佺殑璺熻釜鏂規硶絳夛紱鍩轟簬瑙嗛戝簭鍒楀墠鍚庣浉鍏蟲х殑鐩鏍囪窡韙綆楁硶錛屽傦細鍩轟簬妯℃澘鐨勭浉鍏寵窡韙綆楁硶銆佸熀浜庣壒寰佺偣鐨勭浉鍏寵窡韙綆楁硶絳夛紱鍩轟簬鐩鏍囩壒寰佸弬鏁扮殑璺熻釜綆楁硶錛屽傚熀浜庤疆寤撶殑璺熻釜綆楁硶銆佸熀浜庣壒寰佺偣鐨勮窡韙綆楁硶絳夈傚彟澶栵紝寰堝氱爺絀惰呭皢灝忔嘗銆佷漢宸ユ櫤鑳姐佺炵粡緗戠粶絳夌浉鍏崇煡璇嗗簲鐢ㄤ簬鐩鏍囪窡韙棰嗗煙錛屽苟鍙栧緱浜嗗緢濂界殑鏁堟灉銆備互涓婅繖浜涚畻娉曞悇鏈夊叾浼樼己鐐癸紝搴旇ユ牴鎹搴旂敤鍦哄悎榪涜岄夋嫨銆
③ 數據挖掘的十大經典演算法,總算是講清楚了,想提升自己的趕快收藏
一個優秀的數據分析師,除了要掌握基本的統計學、數據分析思維、數據分析工具之外,還需要掌握基本的數據挖掘思想,幫助我們挖掘出有價值的數據,這也是數據分析專家和一般數據分析師的差距所在。
國際權威的學術組織the IEEE International Conference on Data Mining (ICDM) 評選出了數據挖掘領域的十大經典演算法:C4.5, k-Means, SVM, Apriori, EM, PageRank, AdaBoost, kNN, Naive Bayes, and CART.
不僅僅是選中的十大演算法,其實參加評選的18種演算法,實際上隨便拿出一種來都可以稱得上是經典演算法,它們在數據挖掘領域都產生了極為深遠的影響。今天主要分享其中10種經典演算法,內容較干,建議收藏備用學習。
1. C4.5
C4.5演算法是機器學習演算法中的一種分類決策樹演算法,其核心演算法是ID3演算法. C4.5演算法繼承了ID3演算法的優點,並在以下幾方面對ID3演算法進行了改進:
1) 用信息增益率來選擇屬性,克服了用信息增益選擇屬性時偏向選擇取值多的屬性的不足;
2) 在樹構造過程中進行剪枝;
3) 能夠完成對連續屬性的離散化處理;
4) 能夠對不完整數據進行處理。
C4.5演算法有如下優點:產生的分類規則易於理解,准確率較高。其缺點是:在構造樹的過程中,需要對數據集進行多次的順序掃描和排序,因而導致演算法的低效(相對的CART演算法只需要掃描兩次數據集,以下僅為決策樹優缺點)。
2. The k-means algorithm 即K-Means演算法
k-means algorithm演算法是一個聚類演算法,把n的對象根據他們的屬性分為k個分割,k < n。它與處理混合正態分布的最大期望演算法很相似,因為他們都試圖找到數據中自然聚類的中心。它假設對象屬性來自於空間向量,並且目標是使各個群組內部的均 方誤差總和最小。
3. Support vector machines
支持向量機,英文為Support Vector Machine,簡稱SV機(論文中一般簡稱SVM)。它是一種監督式學習的方法,它廣泛的應用於統計分類以及回歸分析中。支持向量機將向量映射到一個更 高維的空間里,在這個空間里建立有一個最大間隔超平面。在分開數據的超平面的兩邊建有兩個互相平行的超平面。分隔超平面使兩個平行超平面的距離最大化。假定平行超平面間的距離或差距越大,分類器的總誤差越小。一個極好的指南是C.J.C Burges的《模式識別支持向量機指南》。van der Walt 和 Barnard 將支持向量機和其他分類器進行了比較。
4. The Apriori algorithm
Apriori演算法是一種最有影響的挖掘布爾關聯規則頻繁項集的演算法。其核心是基於兩階段頻集思想的遞推演算法。該關聯規則在分類上屬於單維、單層、布爾關聯規則。在這里,所有支持度大於最小支持度的項集稱為頻繁項集,簡稱頻集。
5. 最大期望(EM)演算法
在統計計算中,最大期望(EM,Expectation–Maximization)演算法是在概率(probabilistic)模型中尋找參數最大似然 估計的演算法,其中概率模型依賴於無法觀測的隱藏變數(Latent Variabl)。最大期望經常用在機器學習和計算機視覺的數據集聚(Data Clustering)領域。
6. PageRank
PageRank是Google演算法的重要內容。2001年9月被授予美國專利,專利人是Google創始人之一拉里·佩奇(Larry Page)。因此,PageRank里的page不是指網頁,而是指佩奇,即這個等級方法是以佩奇來命名的。
PageRank根據網站的外部鏈接和內部鏈接的數量和質量倆衡量網站的價值。PageRank背後的概念是,每個到頁面的鏈接都是對該頁面的一次投票, 被鏈接的越多,就意味著被其他網站投票越多。這個就是所謂的「鏈接流行度」——衡量多少人願意將他們的網站和你的網站掛鉤。PageRank這個概念引自 學術中一篇論文的被引述的頻度——即被別人引述的次數越多,一般判斷這篇論文的權威性就越高。
7. AdaBoost
Adaboost是一種迭代演算法,其核心思想是針對同一個訓練集訓練不同的分類器(弱分類器),然後把這些弱分類器集合起來,構成一個更強的最終分類器 (強分類器)。其演算法本身是通過改變數據分布來實現的,它根據每次訓練集之中每個樣本的分類是否正確,以及上次的總體分類的准確率,來確定每個樣本的權 值。將修改過權值的新數據集送給下層分類器進行訓練,最後將每次訓練得到的分類器最後融合起來,作為最後的決策分類器。
8. kNN: k-nearest neighbor classification
K最近鄰(k-Nearest Neighbor,KNN)分類演算法,是一個理論上比較成熟的方法,也是最簡單的機器學習演算法之一。該方法的思路是:如果一個樣本在特徵空間中的k個最相似(即特徵空間中最鄰近)的樣本中的大多數屬於某一個類別,則該樣本也屬於這個類別。
9. Naive Bayes
在眾多的分類模型中,應用最為廣泛的兩種分類模型是決策樹模型(Decision Tree Model)和樸素貝葉斯模型(Naive Bayesian Model,NBC)。 樸素貝葉斯模型發源於古典數學理論,有著堅實的數學基礎,以及穩定的分類效率。
同時,NBC模型所需估計的參數很少,對缺失數據不太敏感,演算法也比較簡單。理論上,NBC模型與其他分類方法相比具有最小的誤差率。 但是實際上並非總是如此,這是因為NBC模型假設屬性之間相互獨立,這個假設在實際應用中往往是不成立的,這給NBC模型的正確分類帶來了一定影響。在屬 性個數比較多或者屬性之間相關性較大時,NBC模型的分類效率比不上決策樹模型。而在屬性相關性較小時,NBC模型的性能最為良好。
10. CART: 分類與回歸樹
CART, Classification and Regression Trees。 在分類樹下面有兩個關鍵的思想。第一個是關於遞歸地劃分自變數空間的想法(二元切分法);第二個想法是用驗證數據進行剪枝(預剪枝、後剪枝)。在回歸樹的基礎上的模型樹構建難度可能增加了,但同時其分類效果也有提升。
參考書籍:《機器學習實戰》
④ 鏈哄櫒瑙嗚夋嫻嬬郴緇熷拰浜哄伐鐩瑙嗘嫻嬬殑浼樼己鐐規瘮
1銆佹晥鐜囨洿楂
浜鴻兘澶熸寔緇鏈夋晥宸ヤ綔鐨勬椂闂存槸鏈夐檺鐨勶紝鑰屼笖鍦ㄥ弽澶嶆満姊板寲鐨勬嫻嬭繃紼嬩腑瀹規槗鐤插姵錛岀簿鍔涗笉瓚籌紝鍥犳ゆ嫻嬫晥鐜囨瘮杈冧綆涓嬨
鏈哄櫒瑙嗚夋嫻嬮熷害瑕佸揩寰楀氾紝姣忓垎閽熻兘澶熷規暟鐧句釜鐢氳嚦鏁板崈涓鍏冧歡榪涜屾嫻嬨傚挨鍏舵槸褰撴嫻嬮珮閫熻繍鍔ㄧ墿浣撴椂錛屾満鍣ㄨ嗚夋嫻嬪彲浠ユ彁楂樻嫻嬫晥鐜囥傛ゅ栵紝鏈哄櫒鑳藉24灝忔椂涓嶉棿鏂鎸佺畫宸ヤ綔銆
2銆佸噯紜鎬ф洿楂
浜虹溂鏈夌墿鐞嗘潯浠剁殑闄愬埗錛屽嵆浣誇緷闈犳斁澶ч暅鎴栨樉寰闀滄潵媯嫻嬩駭鍝侊紝涔熶細鍙楀埌涓昏傛с佽韓浣撶簿鍔涚瓑鍥犵礌鐨勫獎鍝嶏紝涓嶈兘淇濊瘉鍑嗙『鎬с傝屼笖涓嶅悓媯嫻嬪憳鐨勬爣鍑嗕篃浼氭湁宸寮傘
鏈哄櫒涓嶅彈涓昏傛帶鍒訛紝鍙瑕佸弬鏁拌劇疆娌℃湁宸寮傦紝鍏鋒湁鐩稿悓閰嶇疆鐨勫氬彴鏈哄櫒灝卞彲浠ヤ繚璇佺浉鍚岀殑綺懼害銆
3銆佹諱綋鎴愭湰鏇翠綆
浜哄伐媯嫻嬫槸闀挎湡銆佹寔緇鐨勬垚鏈鎶曞叆錛屼紶緇熶駭鍝佹嫻嬪睘浜庡姵鍔ㄥ瘑闆嗛嗗煙銆傝屼笖濡備粖浜哄伐鍜岀$悊鎴愭湰閮藉湪涓嶆柇涓婃定銆
鏈哄櫒瑙嗚夋嫻嬬殑鎶曞叆涓昏佹槸鏃╂湡錛屼竴嬈℃ф姇鍏ョ『淇濋暱鏈熶駭鍑恆傝屼笖鏈哄櫒姣斾漢宸ユ嫻嬫洿鏈夋晥錛屼粠闀胯繙鏉ヨ達紝鏈哄櫒瑙嗚夋嫻嬬殑鎴愭湰鏇翠綆銆
4銆佷俊鎮闆嗘垚
涓涓浜轟竴嬈″彧鑳芥嫻嬩竴欏瑰唴瀹癸紝褰撲漢宸ユ嫻嬮潰涓翠笉鍚岀殑媯嫻嬪唴瀹規椂錛屽彧鑳介氳繃澶氬伐浣嶇殑鍗忚皟涓庨厤鍚堟墠鑳藉畬鎴愩
鏈哄櫒瑙嗚夋嫻嬪彲浠ラ氳繃澶氱珯嫻嬮噺鏂規硶涓嬈℃祴閲忓氫釜鎶鏈鍙傛暟錛屼緥濡傝佹嫻嬬殑浜у搧鐨勮疆寤擄紝灝哄革紝澶栬傜己闄峰拰浜у搧楂樺害銆
5銆佹暟瀛楀寲緇熻$$悊
鏈哄櫒瑙嗚夊伐浣滄湡闂寸敓鎴愮殑鎵鏈夋祴閲忔暟鎹閮藉彲浠ョ嫭絝嬪嶅埗鎴栭氳繃緗戠粶榪炴帴澶嶅埗鍑烘潵錛屼究浜庣敓浜ц繃紼嬬粺璁″拰鍒嗘瀽銆傚悓鏃訛紝宸ヤ綔浜哄憳鍙浠ュ煎嚭鎸囧畾鐨勬祴閲忔暟鎹騫跺湪嫻嬮噺鍚庣敓鎴愭姤鍛婏紝鑰屾棤闇涓涓涓鍦版墜鍔ㄦ坊鍔犮
6銆佸彲闀挎椂闂撮噸澶嶈繛緇宸ヤ綔
鏈哄櫒鍙浠24灝忔椂鎸佺畫瀹屾垚媯嫻嬪伐浣滐紝涓嶄細鎰熷埌鐤插姵銆備漢浣撶簿鍔涙湁闄愶紝闀挎椂闂撮噸澶嶆嫻嬪伐浣滃繀鐒朵細鎰熻夌柌緔錛屾ゆ椂灝卞規槗鍑虹幇婕忔銆佽媯銆侀敊媯絳夐敊璇錛岄犳垚閲嶅ぇ鎹熷け銆
7銆佸彲閫傜敤浜庡嵄闄╃殑媯嫻嬬幆澧
鏈哄櫒鍙浠ュ湪鎮跺姡銆佸嵄闄╃殑鐜澧冧腑錛屼互鍙婂湪浜虹被瑙嗚夐毦浠ユ弧瓚抽渶奼傜殑鍦哄悎寰堝ソ鍦板畬鎴愭嫻嬪伐浣溿
8銆佷笉浼氶犳垚鎺ヨЕ鎹熶激
鏈哄櫒瑙嗚夊湪媯嫻嬪伐浠剁殑榪囩▼涓錛屼笉闇瑕佹帴瑙﹀伐浠訛紝涓嶄細瀵瑰伐浠墮犳垚鎺ヨЕ鎹熶激銆備漢宸ユ嫻嬪繀欏誨瑰伐浠惰繘琛屾帴瑙︽嫻嬶紝瀹規槗浜х敓鎺ヨЕ鎹熶激銆
9銆佹洿瀹㈣傜ǔ瀹
浜哄伐媯嫻嬭繃紼嬩腑錛屾嫻嬬粨鏋滀細鍙楀埌涓浜烘爣鍑嗐佹儏緇銆佺簿鍔涚瓑鍥犵礌鐨勫獎鍝嶃傝屾満鍣ㄤ弗鏍奸伒寰鎵璁懼畾鐨勬爣鍑嗭紝媯嫻嬬粨鏋滄洿鍔犲㈣傘佸彲闈犮佺ǔ瀹氥
10銆侀伩鍏嶄漢涓烘薄鏌
鏈夌殑鐗規畩鐢熶駭綰匡紝姣斿傚尰鑽鐢熶駭棰嗗煙錛屽圭敓浜ф嫻嬭繃紼嬬殑鍗鐢熻佹眰鏋侀珮銆傛満鍣ㄨ嗚夋嫻嬭兘澶熼伩鍏嶄漢涓烘薄鏌撻棶棰橈紝紜淇濈敓浜ф嫻嬬殑媧佸噣鍜岃川閲忋
⑤ 請問,機器人視覺抓取關鍵技術有哪些,各有哪些實現方法,有何優缺點
首先,我們要了解,機器人領域的視覺(Machine Vision)跟計算機領域(Computer Vision)的視覺有一些不同:機器視覺的目的是給機器人提供操作物體的信息。所以,機器視覺的研究大概有這幾塊:
物體識別(Object Recognition):在圖像中檢測到物體類型等,這跟 CV 的研究有很大一部分交叉;
位姿估計(Pose Estimation):計算出物體在攝像機坐標系下的位置和姿態,對於機器人而言,需要抓取東西,不僅要知道這是什麼,也需要知道它具體在哪裡;
相機標定(Camera Calibration):因為上面做的只是計算了物體在相機坐標系下的坐標,我們還需要確定相機跟機器人的相對位置和姿態,這樣才可以將物體位姿轉換到機器人位姿。
當然,我這里主要是在物體抓取領域的機器視覺;SLAM 等其他領域的就先不講了。
由於視覺是機器人感知的一塊很重要內容,所以研究也非常多了,我就我了解的一些,按照由簡入繁的順序介紹吧:
0. 相機標定
這其實屬於比較成熟的領域。由於我們所有物體識別都只是計算物體在相機坐標系下的位姿,但是,機器人操作物體需要知道物體在機器人坐標系下的位姿。所以,我們先需要對相機的位姿進行標定。內參標定就不說了,參照張正友的論文,或者各種標定工具箱;外參標定的話,根據相機安裝位置,有兩種方式:
Eye to Hand:相機與機器人極坐標系固連,不隨機械臂運動而運動
Eye in Hand:相機固連在機械臂上,隨機械臂運動而運動 兩種方式的求解思路都類似,首先是眼在手外(Eye to Hand)
只需在機械臂末端固定一個棋盤格,在相機視野內運動幾個姿態。由於相機可以計算出棋盤格相對於相機坐標系的位姿 、機器人運動學正解可以計算出機器人底座到末端抓手之間的位姿變化 、而末端爪手與棋盤格的位姿相對固定不變。這樣,我們就可以得到一個坐標系環
而對於眼在手上(Eye in Hand)的情況,也類似,在地上隨便放一個棋盤格(與機器人基座固連),然後讓機械臂帶著相機走幾個位姿,然後也可以形成一個 的坐標環
平面物體檢測
這是目前工業流水線上最常見的場景。目前來看,這一領域對視覺的要求是:快速、精確、穩定。所以,一般是採用最簡單的邊緣提取+邊緣匹配/形狀匹配的方法;而且,為了提高穩定性、一般會通過主要打光源、採用反差大的背景等手段,減少系統變數。
目前,很多智能相機(如 cognex)都直接內嵌了這些功能;而且,物體一般都是放置在一個平面上,相機只需計算物體的 三自由度位姿即可。另外,這種應用場景一般都是用於處理一種特定工件,相當於只有位姿估計,而沒有物體識別。 當然,工業上追求穩定性無可厚非,但是隨著生產自動化的要求越來越高,以及服務類機器人的興起。對更復雜物體的完整位姿 估計也就成了機器視覺的研究熱點。
2. 有紋理的物體
機器人視覺領域是最早開始研究有紋理的物體的,如飲料瓶、零食盒等表面帶有豐富紋理的都屬於這一類。當然,這些物體也還是可以用類似邊緣提取+模板匹配的方法。但是,實際機器人操作過程中,環境會更加復雜:光照條件不確定(光照)、物體距離相機距離不確定(尺度)、相機看物體的角度不確定(旋轉、仿射)、甚至是被其他物體遮擋(遮擋)。
幸好有一位叫做 Lowe 的大神,提出了一個叫做 SIFT (Scale-invariant feature transform)的超強局部特徵點:Lowe, David G. "Distinctive image features from scale-invariant keypoints."International journal of computer vision 60.2 (2004): 91-110.具體原理可以看上面這篇被引用 4萬+ 的論文或各種博客,簡單地說,這個方法提取的特徵點只跟物體表面的某部分紋理有關,與光照變化、尺度變化、仿射變換、整個物體無關。因此,利用 SIFT 特徵點,可以直接在相機圖像中尋找到與資料庫中相同的特徵點,這樣,就可以確定相機中的物體是什麼東西(物體識別)。
對於不會變形的物體,特徵點在物體坐標系下的位置是固定的。所以,我們在獲取若干點對之後,就可以直接求解出相機中物體與資料庫中物體之間的單應性矩陣。如果我們用深度相機(如Kinect)或者雙目視覺方法,確定出每個特徵點的 3D 位置。那麼,直接求解這個 PnP 問題,就可以計算出物體在當前相機坐標系下的位姿。
↑ 這里就放一個實驗室之前畢業師兄的成果當然,實際操作過程中還是有很多細節工作才可以讓它真正可用的,如:先利用點雲分割和歐氏距離去除背景的影響、選用特徵比較穩定的物體(有時候 SIFT 也會變化)、利用貝葉斯方法加速匹配等。而且,除了 SIFT 之外,後來又出了一大堆類似的特徵點,如 SURF、ORB 等。
3. 無紋理的物體
好了,有問題的物體容易解決,那麼生活中或者工業里還有很多物體是沒有紋理的:
我們最容易想到的就是:是否有一種特徵點,可以描述物體形狀,同時具有跟 SIFT 相似的不變性?不幸的是,據我了解,目前沒有這種特徵點。所以,之前一大類方法還是採用基於模板匹配的辦法,但是,對匹配的特徵進行了專門選擇(不只是邊緣等簡單特徵)。
這里,我介紹一個我們實驗室之前使用和重現過的演算法 LineMod:Hinterstoisser, Stefan, et al. "Multimodal templates for real-time detection of texture-less objects in heavily cluttered scenes." Computer Vision (ICCV), 2011 IEEE International Conference on. IEEE, 2011.
簡單而言,這篇論文同時利用了彩色圖像的圖像梯度和深度圖像的表面法向作為特徵,與資料庫中的模板進行匹配。由於資料庫中的模板是從一個物體的多個視角拍攝後生成的,所以這樣匹配得到的物體位姿只能算是初步估計,並不精確。但是,只要有了這個初步估計的物體位姿,我們就可以直接採用 ICP 演算法(Iterative closest point)匹配物體模型與 3D 點雲,從而得到物體在相機坐標系下的精確位姿。
當然,這個演算法在具體實施過程中還是有很多細節的:如何建立模板、顏色梯度的表示等。另外,這種方法無法應對物體被遮擋的情況。(當然,通過降低匹配閾值,可以應對部分遮擋,但是會造成誤識別)。針對部分遮擋的情況,我們實驗室的張博士去年對 LineMod 進行了改進,但由於論文尚未發表,所以就先不過多涉及了。
4. 深度學習
由於深度學習在計算機視覺領域得到了非常好的效果,我們做機器人的自然也會嘗試把 DL 用到機器人的物體識別中。
首先,對於物體識別,這個就可以照搬 DL 的研究成果了,各種 CNN 拿過來用就好了。有沒有將深度學習融入機器人領域的嘗試?有哪些難點? - 知乎 這個回答中,我提到 2016 年的『亞馬遜抓取大賽』中,很多隊伍都採用了 DL 作為物體識別演算法。 然而, 在這個比賽中,雖然很多人採用 DL 進行物體識別,但在物體位姿估計方面都還是使用比較簡單、或者傳統的演算法。似乎並未廣泛採用 DL。 如@周博磊所說,一般是採用 semantic segmentation network 在彩色圖像上進行物體分割,之後,將分割出的部分點雲與物體 3D 模型進行 ICP 匹配。
當然,直接用神經網路做位姿估計的工作也是有的,如這篇:Doumanoglou, Andreas, et al. "Recovering 6d object pose and predicting next-best-view in the crowd." Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2016.
它的方法大概是這樣:對於一個物體,取很多小塊 RGB-D 數據(只關心一個patch,用局部特徵可以應對遮擋);每小塊有一個坐標(相對於物體坐標系);然後,首先用一個自編碼器對數據進行降維;之後,用將降維後的特徵用於訓練Hough Forest。
5. 與任務/運動規劃結合
這部分也是比較有意思的研究內容,由於機器視覺的目的是給機器人操作物體提供信息,所以,並不限於相機中的物體識別與定位,往往需要跟機器人的其他模塊相結合。
我們讓機器人從冰箱中拿一瓶『雪碧』,但是這個 『雪碧』 被『美年達』擋住了。我們人類的做法是這樣的:先把 『美年達』 移開,再去取 『雪碧』 。所以,對於機器人來說,它需要先通過視覺確定雪碧在『美年達』後面,同時,還需要確定『美年達』這個東西是可以移開的,而不是冰箱門之類固定不可拿開的物體。 當然,將視覺跟機器人結合後,會引出其他很多好玩的新東西。由於不是我自己的研究方向,所以也就不再班門弄斧了。
機器人家上有關於這個很詳細的圖文講解,你可以看下,希望對你有用