导航:首页 > 源码编译 > 不同视觉算法优缺点

不同视觉算法优缺点

发布时间:2024-06-23 16:38:07

① 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)的情况,也类似,在地上随便放一个棋盘格(与机器人基座固连),然后让机械臂带着相机走几个位姿,然后也可以形成一个 的坐标环

  1. 平面物体检测

这是目前工业流水线上最常见的场景。目前来看,这一领域对视觉的要求是:快速、精确、稳定。所以,一般是采用最简单的边缘提取+边缘匹配/形状匹配的方法;而且,为了提高稳定性、一般会通过主要打光源、采用反差大的背景等手段,减少系统变量。

目前,很多智能相机(如 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. 与任务/运动规划结合

这部分也是比较有意思的研究内容,由于机器视觉的目的是给机器人操作物体提供信息,所以,并不限于相机中的物体识别与定位,往往需要跟机器人的其他模块相结合。

我们让机器人从冰箱中拿一瓶‘雪碧’,但是这个 ‘雪碧’ 被‘美年达’挡住了。我们人类的做法是这样的:先把 ‘美年达’ 移开,再去取 ‘雪碧’ 。所以,对于机器人来说,它需要先通过视觉确定雪碧在‘美年达’后面,同时,还需要确定‘美年达’这个东西是可以移开的,而不是冰箱门之类固定不可拿开的物体。 当然,将视觉跟机器人结合后,会引出其他很多好玩的新东西。由于不是我自己的研究方向,所以也就不再班门弄斧了。

机器人家上有关于这个很详细的图文讲解,你可以看下,希望对你有用

阅读全文

与不同视觉算法优缺点相关的资料

热点内容
linux下编译android 浏览:309
电影重建文件夹 浏览:981
第五人格香香解压 浏览:626
我的世界手机版推荐什么服务器 浏览:706
安卓怎么下载空战 浏览:586
程序员卖房入市 浏览:117
android视频播放窗口 浏览:288
17元特效的app名字叫什么 浏览:838
小米手机什么时候配置安卓 浏览:262
三种命令方块 浏览:565
hp服务器怎么重新做系统 浏览:480
电脑与单片机无线 浏览:611
云服务器钱怎么提现 浏览:878
华为运动app怎么退出登录 浏览:796
程序员那么可爱陆漓金句 浏览:879
java如何将自己电脑设置成服务器 浏览:858
域名怎么制定服务器8080端口 浏览:665
服务器的主机如何使用 浏览:814
广讯通服务器地址怎么填 浏览:665
山东交管服务器繁忙云空间 浏览:53