opencv,如何匹配样品?
大家好 :
想学习一下opencv,正好身边有一个类似的项目需求。主要是工厂的一些零部件,类似小螺丝一样的,拍照,然后测量样品的一些长度和高度。比如测量螺丝的高度。如果放的不是螺丝要提示样品错误,请问如何做到?
我的一些想法:
1. 首先是模式匹配的功能,然后到样品轮廓的提取,然后运用几何学,求样品的高度。
关于匹配:
1)cv::matchShapes(mat, mat, method); 先采集样品的轮廓,跟样品的模块的轮廓比较,因为样品随意放,所以要能旋转不变,templatematch方法应该不行。但是matchshapes测试的效果,好像不是很稳定? 用一些简单的二位集合图像去测试,发现误差有点大,不能作为匹配的完全凭据。请问matchshapes本身的问题的?
2)feature2D也了解了一点,参考了http://docs.opencv.org/2.4/doc/t ... #feature-homography,好吧,缺少理论基础,表示不懂匹配度量,比如说,什么样的条件下,近似匹配了,什么样的条件下不匹配。求指导?
3)以前看过模式识别的书,类似识别可能跟模式识别,机器学习,有点交叉,(1)先提取样品的特种,比如,周长,面积,宽长比。(2)对特征向量归一化。(3)采用监督学习方式,测量一些正例和负例,结果表的形式;(3)用一种机器学习算法,学习,把系数解出来,(我记得好像有一种学习算法,结果就是一个多项式系数);(4)用这个系统方程,来预测新的产品,来判断是非是有效的产品。
请问关于匹配,我应该走那条路,还是我的路都是错的啊? 好进一步提倡产品的识别成功率。