导航:首页 > 源码编译 > 轮廓匹配算法

轮廓匹配算法

发布时间:2022-11-26 02:11:53

1. cvfitline用的什么算法

1、cvLoadImage:将图像文件加载至内存;
2、cvNamedWindow:在屏幕上创建一个窗口;
3、cvShowImage:在一个已创建好的窗口中显示图像;
4、cvWaitKey:使程序暂停,等待用户触发一个按键操作;
5、cvReleaseImage:释放图像文件所分配的内存;
6、cvDestroyWindow:销毁显示图像文件的窗口;
7、cvCreateFileCapture:通过参数设置确定要读入的AVI文件;
8、cvQueryFrame:用来将下一帧文件载入内存;
9、cvReleaseCapture:释放CvCapture结构开辟的内存空间;
10、cvCreateTrackbar:创建一个滚动条;
11、cvSetCaptureProperty:设置CvCapture对象的各种属性;
12、cvGetCaptureProperty:查询CvCapture对象的各种属性;
13、cvGetSize:当前图像结构的大小;
14、cvSmooth:对图像进行平滑处理;
15、cvPyrDown:图像金字塔,降采样,图像缩小为原来四分之一;
16、cvCanny:Canny边缘检测;
17、cvCreateCameraCapture:从摄像设备中读入数据;
18、cvCreateVideoWriter:创建一个写入设备以便逐帧将流写入文件;
19、cvWriteFrame:逐帧将流写入文件;
20、cvReleaseVideoWriter:释放CvVideoWriter结构开辟的内存空间;
21、CV_MAT_ELEM:从矩阵中得到一个元素;
22、cvAbs:计算数组中所有元素的绝对值;
23、cvAbsDiff:计算两个数组差值的绝对值;
24、cvAbsDiffS:计算数组和标量差值的绝对值;
25、cvAdd:两个数组的元素级的加运算;
26、cvAddS:一个数组和一个标量的元素级的相加运算;
27、cvAddWeighted:两个数组的元素级的加权相加运算(alpha运算);
28、cvAvg:计算数组中所有元素的平均值;
29、cvAvgSdv:计算数组中所有元素的绝对值和标准差;
30、cvCalcCovarMatrix:计算一组n维空间向量的协方差;
31、cvCmp:对两个数组中的所有元素运用设置的比较操作;
32、cvCmpS:对数组和标量运用设置的比较操作;
33、cvConvertScale:用可选的缩放值转换数组元素类型;
34、cvCopy:把数组中的值复制到另一个数组中;
35、cvCountNonZero:计算数组中非0值的个数;
36、cvCrossProct:计算两个三维向量的向量积(叉积);
37、cvCvtColor:将数组的通道从一个颜色空间转换另外一个颜色空间;
38、cvDet:计算方阵的行列式;
39、cvDiv:用另外一个数组对一个数组进行元素级的除法运算;
40、cvDotProct:计算两个向量的点积;
41、cvEigenVV:计算方阵的特征值和特征向量;
42、cvFlip:围绕选定轴翻转;
43、cvGEMM:矩阵乘法;
44、cvGetCol:从一个数组的列中复制元素;
45、cvGetCols:从数据的相邻的多列中复制元素;
46、cvGetDiag:复制数组中对角线上的所有元素;
47、cvGetDims:返回数组的维数;
48、cvGetDimSize:返回一个数组的所有维的大小;
49、cvGetRow:从一个数组的行中复制元素值;
50、cvGetRows:从一个数组的多个相邻的行中复制元素值;
51、cvGetSize:得到二维的数组的尺寸,以CvSize返回;
52、cvGetSubRect:从一个数组的子区域复制元素值;
53、cvInRange:检查一个数组的元素是否在另外两个数组中的值的范围内;
54、cvInRangeS:检查一个数组的元素的值是否在另外两个标量的范围内;
55、cvInvert:求矩阵的逆;
56、cvMahalonobis:计算两个向量间的马氏距离;
57、cvMax:在两个数组中进行元素级的取最大值操作;
58、cvMaxS:在一个数组和一个标量中进行元素级的取最大值操作;
59、cvMerge:把几个单通道图像合并为一个多通道图像;
60、cvMin:在两个数组中进行元素级的取最小值操作;
61、cvMinS:在一个数组和一个标量中进行元素级的取最小值操作;
62、cvMinMaxLoc:寻找数组中的最大最小值;
63、cvMul:计算两个数组的元素级的乘积(点乘);
64、cvNot:按位对数组中的每一个元素求反;
65、cvNormalize:将数组中元素进行归一化;
66、cvOr:对两个数组进行按位或操作;
67、cvOrs:在数组与标量之间进行按位或操作;
68、cvRece:通过给定的操作符将二维数组简为向量;
69、cvRepeat:以平铺的方式进行数组复制;
70、cvSet:用给定值初始化数组;
71、cvSetZero:将数组中所有元素初始化为0;
72、cvSetIdentity:将数组中对角线上的元素设为1,其他置0;
73、cvSolve:求出线性方程组的解;
74、cvSplit:将多通道数组分割成多个单通道数组;
75、cvSub:两个数组元素级的相减;
76、cvSubS:元素级的从数组中减去标量;
77、cvSubRS:元素级的从标量中减去数组;
78、cvSum:对数组中的所有元素求和;
79、cvSVD:二维矩阵的奇异值分解;
80、cvSVBkSb:奇异值回代计算;
81、cvTrace:计算矩阵迹;
82、cvTranspose:矩阵的转置运算;
83、cvXor:对两个数组进行按位异或操作;
84、cvXorS:在数组和标量之间进行按位异或操作;
85、cvZero:将所有数组中的元素置为0;
86、cvConvertScaleAbs:计算可选的缩放值的绝对值之后再转换数组元素的类型;
87、cvNorm:计算数组的绝对范数, 绝对差分范数或者相对差分范数;
88、cvAnd:对两个数组进行按位与操作;
89、cvAndS:在数组和标量之间进行按位与操作;
90、cvScale:是cvConvertScale的一个宏,可以用来重新调整数组的内容,并且可以将参数从一种数
据类型转换为另一种;
91、cvT:是函数cvTranspose的缩写;
92、cvLine:画直线;
93、cvRectangle:画矩形;
94、cvCircle:画圆;
95、cvEllipse:画椭圆;
96、cvEllipseBox:使用外接矩形描述椭圆;
97、cvFillPoly、cvFillConvexPoly、cvPolyLine:画多边形;
98、cvPutText:在图像上输出一些文本;
99、cvInitFont:采用一组参数配置一些用于屏幕输出的基本个特定字体;
100、cvSave:矩阵保存;
101、cvLoad:矩阵读取;
102、cvOpenFileStorage:为读/写打开存储文件;
103、cvReleaseFileStorage:释放存储的数据;
104、cvStartWriteStruct:开始写入新的数据结构;
105、cvEndWriteStruct:结束写入数据结构;
106、cvWriteInt:写入整数型;
107、cvWriteReal:写入浮点型;
108、cvWriteString:写入字符型;
109、cvWriteComment:写一个XML或YAML的注释字串;
110、cvWrite:写一个对象;
111、cvWriteRawData:写入多个数值;
112、cvWriteFileNode:将文件节点写入另一个文件存储器;
113、cvGetRootFileNode:获取存储器最顶层的节点;
114、cvGetFileNodeByName:在映图或存储器中找到相应节点;
115、cvGetHashedKey:为名称返回一个惟一的指针;
116、cvGetFileNode:在映图或文件存储器中找到节点;
117、cvGetFileNodeName:返回文件的节点名;
118、cvReadInt:读取一个无名称的整数型;
119、cvReadIntByName:读取一个有名称的整数型;
120、cvReadReal:读取一个无名称的浮点型;
121、cvReadRealByName:读取一个有名称的浮点型;
122、cvReadString:从文件节点中寻找字符串;
123、cvReadStringByName:找到一个有名称的文件节点并返回它;
124、cvRead:将对象解码并返回它的指针;
125、cvReadByName:找到对象并解码;
126、cvReadRawData:读取多个数值;
127、cvStartReadRawData:初始化文件节点序列的读取;
128、cvReadRawDataSlice:读取文件节点的内容;
129、cvGetMoleInfo:检查IPP库是否已经正常安装并且检验运行是否正常;
130、cvResizeWindow:用来调整窗口的大小;
131、cvSaveImage:保存图像;
132、cvMoveWindow:将窗口移动到其左上角为x,y的位置;
133、cvDestroyAllWindow:用来关闭所有窗口并释放窗口相关的内存空间;
134、cvGetTrackbarPos:读取滑动条的值;
135、cvSetTrackbarPos:设置滑动条的值;
136、cvGrabFrame:用于快速将帧读入内存;
137、cvRetrieveFrame:对读入帧做所有必须的处理;
138、cvConvertImage:用于在常用的不同图像格式之间转换;
139、cvErode:形态腐蚀;
140、cvDilate:形态学膨胀;
141、cvMorphologyEx:更通用的形态学函数;
142、cvFloodFill:漫水填充算法,用来进一步控制哪些区域将被填充颜色;
143、cvResize:放大或缩小图像;
144、cvPyrUp:图像金字塔,将现有的图像在每个维度上都放大两倍;
145、cvPyrSegmentation:利用金字塔实现图像分割;
146、cvThreshold:图像阈值化;
147、cvAcc:可以将8位整数类型图像累加为浮点图像;
148、cvAdaptiveThreshold:图像自适应阈值;
149、cvFilter2D:图像卷积;
150、cvCopyMakeBorder:将特定的图像轻微变大,然后以各种方式自动填充图像边界;
151、cvSobel:图像边缘检测,Sobel算子;
152、cvLaplace:拉普拉斯变换、图像边缘检测;
153、cvHoughLines2:霍夫直线变换;
154、cvHoughCircles:霍夫圆变换;
155、cvRemap:图像重映射,校正标定图像,图像插值;
156、cvWarpAffine:稠密仿射变换;
157、cvGetQuadrangleSubPix:仿射变换;
158、cvGetAffineTransform:仿射映射矩阵的计算;
159、cvCloneImage:将整个IplImage结构复制到新的IplImage中;
160、cv2DRotationMatrix:仿射映射矩阵的计算;
161、cvTransform:稀疏仿射变换;
162、cvWarpPerspective:密集透视变换(单应性);
163、cvGetPerspectiveTransform:计算透视映射矩阵;
164、cvPerspectiveTransform:稀疏透视变换;
165、cvCartToPolar:将数值从笛卡尔空间到极坐标(极性空间)进行映射;
166、cvPolarToCart:将数值从极性空间到笛卡尔空间进行映射;
167、cvLogPolar:对数极坐标变换;
168、cvDFT:离散傅里叶变换;
169、cvMulSpectrums:频谱乘法;
170、cvDCT:离散余弦变换;
171、cvIntegral:计算积分图像;
172、cvDistTransform:图像的距离变换;
173、cvEqualizeHist:直方图均衡化;
174、cvCreateHist:创建一新直方图;
175、cvMakeHistHeaderForArray:根据已给出的数据创建直方图;
176、cvNormalizeHist:归一化直方图;
177、cvThreshHist:直方图阈值函数;
178、cvCalcHist:从图像中自动计算直方图;
179、cvCompareHist:用于对比两个直方图的相似度;
180、cvCalcEMD2:陆地移动距离(EMD)算法;
181、cvCalcBackProject:反向投影;
182、cvCalcBackProjectPatch:图块的方向投影;
183、cvMatchTemplate:模板匹配;
184、cvCreateMemStorage:用于创建一个内存存储器;
185、cvCreateSeq:创建序列;
186、cvSeqInvert:将序列进行逆序操作;
187、cvCvtSeqToArray:复制序列的全部或部分到一个连续内存数组中;
188、cvFindContours:从二值图像中寻找轮廓;
189、cvDrawContours:绘制轮廓;
190、cvApproxPoly:使用多边形逼近一个轮廓;
191、cvContourPerimeter:轮廓长度;
192、cvContoursMoments:计算轮廓矩;
193、cvMoments:计算Hu不变矩;
194、cvMatchShapes:使用矩进行匹配;
195、cvInitLineIterator:对任意直线上的像素进行采样;
196、cvSampleLine:对直线采样;
197、cvAbsDiff:帧差;
198、cvWatershed:分水岭算法;
199、cvInpaint:修补图像;
200、cvGoodFeaturesToTrack:寻找角点;
201、cvFindCornerSubPix:用于发现亚像素精度的角点位置;
202、cvCalcOpticalFlowLK:实现非金字塔的Lucas-Kanade稠密光流算法;
203、cvMeanShift:mean-shift跟踪算法;
204、cvCamShift:camshift跟踪算法;
205、cvCreateKalman:创建Kalman滤波器;
206、cvCreateConDensation:创建condensation滤波器;
207、cvConvertPointsHomogenious:对齐次坐标进行转换;
208、cvFindChessboardCorners:定位棋盘角点;
209、cvFindHomography:计算单应性矩阵;
210、cvRodrigues2:罗德里格斯变换;
211、cvFitLine:直线拟合算法;
212、cvCalcCovarMatrix:计算协方差矩阵;
213、cvInvert:计算协方差矩阵的逆矩阵;
214、cvMahalanobis:计算Mahalanobis距离;
215、cvKMeans2:K均值;
216、cvCloneMat:根据一个已有的矩阵创建一个新矩阵;
217、cvPreCornerDetect:计算用于角点检测的特征图;
218、cvGetImage:CvMat图像数据格式转换成IplImage图像数据格式;
219、cvMatMul:两矩阵相乘;

2. 求C++中利用opencv计算轮廓图像傅里叶描述子的代码

一、特征点(角点)匹配
图像匹配能够应用的场合非常多,如目标跟踪,检测,识别,图像拼接等,而角点匹配最核心的技术就要属角点匹配了,所谓角点匹配是指寻找两幅图像之间的特征像素点的对应关系,从而确定两幅图像的位置关系。
角点匹配可以分为以下四个步骤:
1、提取检测子:在两张待匹配的图像中寻找那些最容易识别的像素点(角点),比如纹理丰富的物体边缘点等。
2、提取描述子:对于检测出的角点,用一些数学上的特征对其进行描述,如梯度直方图,局部随机二值特征等。检测子和描述子的常用提取方法有:sift,harris,surf,fast,agast,brisk,freak,brisk,brief/orb等。
3、匹配:通过各个角点的描述子来判断它们在两张图像中的对应关系,常用方法如 flann等。
4、消噪:去除错误匹配的外点,保留正确的匹配点。常用方法有KDTREE,BBF,Ransac,GTM等。
二、SIFT匹法的提出
为了排除因为图像遮挡和背景混乱而产生的无匹配关系的关键点,SIFT的作者Lowe提出了比较最近邻距离与次近邻距离的SIFT匹式:取一幅图像中的一个SIFT关键点,并找出其与另一幅图像中欧式距离最近的前两个关键点,在这两个关键点中,如果最近的距离除以次近的距离得到的比率ratio少于某个阈值T,则接受这一对匹配点。因为对于错误匹配,由于特征空间的高维性,相似的距离可能有大量其他的错误匹配,从而它的ratio值比较高。显然降低这个比例阈值T,SIFT匹配点数目会减少,但更加稳定,反之亦然。
Loweratio的阈值为0.8,但作者对大量任意存在尺度、旋转和亮度变化的两幅图片进行匹配,结果表明ratio取值在0. 4~0. 6 之间最佳,小于0. 4的很少有匹配点,大于0. 6的则存在大量错误匹配点,所以建议ratio的取值原则如下:
ratio=0. 4:对于准确度要求高的匹配;
ratio=0. 6:对于匹配点数目要求比较多的匹配;
ratio=0. 5:一般情况下。
三、常见的SIFT匹配代码
1、vlfeat中sift toolbox中的vl_ubcmatch.c使用的是普通的欧氏距离进行匹配(该SIFT代码贡献自Andrea
Vedaldi)。
2、Lowe的C++代码中使用的是欧氏距离,但是在matlab代码中为了加速计算,使用的是向量夹角来近似欧氏距离:先将128维SIFT特征向量归一化为单位向量(每个数除以平方和的平方根),然后点乘来得到向量夹角的余弦值,最后利用反余弦(acos函数)求取向量夹角。实验证明Lowe的办法正确率和耗时都很不错。
同样,也可以采用knnsearch函数求最近点和次近点:knnsearch采用euclidean距离时得到的结果与lowe采用的近似方法结果几乎一致,正好印证了模拟欧氏距离的效果。
3、Rob Hess的OpenSIFT采用了KDTREE来对匹配进行优化。
4、CSDN大神v_JULY_v实现了KDTREE+BBF对SIFT匹配的优化和消除错误匹配:从K近邻算法、距离度量谈到KD树、SIFT+BBF算法
- 结构之法 算法之道 - 博客频道 - CSDN.NET。
5、OpenCV中features2d实现的SIFT匹配有多种matcher:VectorDescriptorMatcher,BFMatcher(Brute-force descriptor matcher),FernDescriptorMatcher,OneWayDescriptorMatcher,FlannBasedMatcher 等等。目前只知道采用knnsearch,提供了多种距离度量方式,具体区别不懂。

3. EdgeBox&DPM

EdgeBox与DPM均是用于进行目标检测。

EdgeBox的算法原理大体如下图所示:

在这儿参考了一片博客 blog.sina.com.cn/s/blog_e1b9226a0102w5rt.html ,大体总结Edgebox进行目标检测的思路为:首先利用结构化的方法检测出边缘,并利用非极大值抑制对边缘进行筛选;然后基于某种策略将似乎在一条直线上的边缘点集合成若干个edge group,并计算edge group之间的相似度,越是在同一直线上的edge group,其相似度越高。再通过edge group来确定轮廓数,实现策略为给每个edge group计算一个权值,将权值为1的edge group归为proposal内轮廓上的一部分,将权值为 0 的edge group归为proposal外或proposal框重叠的一部分,由此便提取得到proposal,并对proposal进行评分,选取得分最高的proposal作为最后的检测输出。

但是该算法有一个明显的缺陷是当一幅图像中包含多个相同的检测目标时,其得分最高的proposal几乎包含整幅图像,而不是单独的目标。原因在于,其不是基于“学习”的算法,没有训练的过程,也就没有具体的针对目标的模型,故这使得其在进行单一类别多目标检测时效果不佳。

DPM(Deformable Parts Model):

由名字可以看出,该目标检测的模型是可变形的,即具有一定的弹性。参考了博文 blog.csdn.net/carson2005/article/details/22499565

其与HoG的大体思路一致,训练得到一个目标的梯度模型,然后再根据该梯度模型对待检测目标进行匹配操作。只是DPM在形成模型时做了更多的改进工作,相比于Hog的但模型结构,其得到的是多模型结构。

其大体流程为:

训练得到多个主模型(即不同视角下的物体表征),然后形成多个子模型结构,在进行检测时,根据主模型与子模型两者匹配结果的综合,来实现目标的最终检测结果。之所以会有子模型结构的提出,主要是为了解决非刚性物体的形变问题,利用子模型与主模型间的先验知识(如距离等)来判断出在产生形变后的物体是否仍为待检目标。其检测流程可见下图:

即首先利用主模型对图像进行匹配操作,然后利用子模型对图像进行匹配操作,最后将匹配后的结果进行某种运算,即基于子模型高相应中心是否在理论上该出现的位置,最后将结果进行综合得到最后的检测结果。

DPM模型的本质是 一种弹簧模型,即允许待检测物体产生一定程度上的形变,由主模型与子模型间的检测结果的综合来实现检测任务。

4. 双目视觉的匹配算法是不是有好几种具体是哪几种

与普通的图像模板匹配不同的是,立体匹配是通过在两幅或多幅存在视点差异、几何畸变、灰度畸变、噪声干扰的图像对之间进行的,不存在任何标准模板进行匹配。立体匹配方法一般包含以下三个问题:(1)基元的选择,即选择适当的图像特征如点、直线、相位等作为匹配基元;(2)匹配的准则,将关于物理世界的某些固有特征表示为匹配所必须遵循的若干规则,使匹配结果能真实反映景物的本来面目;(3)算法结构,通过利用适当的数学方法设计能正确匹配所选择基元的稳定算法。

根据匹配基元的不同,立体视觉匹配算法目前主要分为三大类,即区域匹配、相位匹配和特征匹配:

基于区域灰度的匹配算法是把一幅图像(基准图)中某一点的灰度邻域作为模板,在另一幅图像(待匹配图)中搜索具有相同(或相似)灰度值分布的对应点邻域,从而实现两幅图像的匹配。这类算法的性能取决于度量算法及搜索策略的选择。另外,也必须考虑匹配窗口大小、形式的选择,大窗口对于景物中存在的遮挡或图像不光滑的情况会更多的出现误匹配,小窗口则不具有足够的灰度变化信息,不同的窗口形式对匹配信息也会有不同的影响。因此应该合理选取匹配区域的大小和形式来达到较好的匹配结果。

相位匹配是近二十年发展起来的一种匹配算法,相位作为匹配基元,即认为图像对中的对应点局部相位是一致的。最常用的相位匹配算法有相位相关法和相位差——频率法,虽然该方法是一种性能稳定、具有较强的抗辐射抗透视畸变能力、简单高效、能得到稠密视差图的特征匹配方法。但是,当局部结构存在的假设不成立时,相位匹配算法因带通输出信号的幅度太低而失去有效性,也就是通常提到的相位奇点问题,在相位奇点附近,相位信息对位置和频率的变化极为敏感,因此用这些像素所确定的相位差异来衡量匹配误差将导致极不可靠的结果。此外,相位匹配算法的收敛范围与带通滤波器的波长有关,通常要考虑相位卷绕,在用相位差进行视差计算时,由于所采用的相位只是原信号某一带通条件下的相位,故视差估计只能限制在某一限定范围之内,随视差范围的增大,其精确性会有所下降。

基于特征的图像匹配方法是目前最常用的方法之一,由于它能够将对整个图像进行的各种分析转化为对图像特征(特征点、特征曲线等)的分析的优点,从而大大减小了图像处理过程的计算量,对灰度变化、图像变形、噪音污染以及景物遮挡等都有较好的适应能力。

基于特征的匹配方法是为使匹配过程满足一定的抗噪能力且减少歧义性问题而提出来的。与基于区域的匹配方法不同,基于特征的匹配方法是有选择地匹配能表示景物自身特性的特征,通过更多地强调空间景物的结构信息来解决匹配歧义性问题。这类方法将匹配的搜索范围限制在一系列稀疏的特征上。利用特征间的距离作为度量手段,具有最小距离的特征对就是最相近的特征对,也就是匹配对。特征间的距离度量有最大最小距离、欧氏距离等。

特征点匹配算法严格意义上可以分成特征提取、特征匹配和消除不良匹配点三步。特征匹配不直接依赖于灰度,具有较强的抗干扰性。该类方法首先从待匹配的图像中提取特征,用相似性度量和一些约束条件确定几何变换,最后将该变换作用于待匹配图像。匹配中常用的特征基元有角点、边缘、轮廓、直线、颜色、纹理等。同时,特征匹配算法也同样地存在着一些不足,主要表现为:

(l)特征在图像中的稀疏性决定了特征匹配只能得到稀疏的视差场,要获得密集的视差场必须通过使用插值的过程,插值过程通常较为复杂。

(2)特征的提取和定位的准确与否直接影响特征匹配结果的精确度。

(3)由于其应用场合的局限性,特征匹配往往适用于具有特征信息显着的环境中,在缺少显着主导特征环境中该方法有很大困难。

总之,特征匹配基元包含了算法编程上的灵活性以及令人满意的统计特性。算法的许多约束条件均能清楚地应用于数据结构,而数据结构的规则性使得特征匹配非常适用于硬件设计。例如,基于线段的特征匹配算法将场景模型描绘成相互联结的边缘线段,而不是区域匹配中的平面模型,因此能很好地处理一些几何畸变问题,对对比度和明显的光照变化等相对稳定。特征匹配由于不直接依赖于灰度,计算量小,比基于区域的匹配算法速度快的多。且由于边缘特征往往出现在视差不连续的区域,特征匹配较易处理立体视觉匹配中的视差不连续问题。

5. 工业机器人视觉是基于位置还是基于图像的

提取工件的边缘特征,经过对各种经典边缘检测算子的分析比较表明:Canny算子以其定位的准确性、响应的单一性而获得较好的边缘检测效果。 其次,针对工件识别,本文在传统图像匹配算法的基础上,提出了基于改进遗传算法和Hausdorff距离的工件识别算法。该算法采用工件的边缘为匹配特征,将修正的Hausdorff距离作为目标物体轮廓的相似性度量准则,并应用遗传算法进行最佳匹配的快速搜索,在距离变换空间内,成功实现了目标物体的匹配识别。实验结果表明:本文的方法能有效地检测出具有平移、旋转和小尺度变化以及有遮挡的目标物体。 第三,在对工件进行空间定位时,采用基于恒定旋转矩阵法的单目移动视觉获得工件的深度信息,并完成工件的三维定位。该方法通过保持机器人连杆三到机器人基坐标系的旋转矩阵恒定来直接获得世界坐标,简化复杂的手眼标定和相机标定。
广东粤为工业机器人学院解答

6. opencv 怎么匹配一幅图像多个轮廓

没有现成的。利用现有匹配算法得到匹配结果,然后设定区域间隔,阈值,是种方法。

7. 人脸识别系统的技术原理

人脸识别技术包含三个部分:
(1)人脸检测
面貌检测是指在动态的场景与复杂的背景中判断是否存在面像,并分离出这种面像。一般有下列几种方法:
①参考模板法
首先设计一个或数个标准人脸的模板,然后计算测试采集的样品与标准模板之间的匹配程度,并通过阈值来判断是否存在人脸;
②人脸规则法
由于人脸具有一定的结构分布特征,所谓人脸规则的方法即提取这些特征生成相应的规则以判断测试样品是否包含人脸;
③样品学习法
这种方法即采用模式识别中人工神经网络的方法,即通过对面像样品集和非面像样品集的学习产生分类器;
④肤色模型法
这种方法是依据面貌肤色在色彩空间中分布相对集中的规律来进行检测。
⑤特征子脸法
这种方法是将所有面像集合视为一个面像子空间,并基于检测样品与其在子孔间的投影之间的距离判断是否存在面像。
值得提出的是,上述5种方法在实际检测系统中也可综合采用。
(2)人脸跟踪
面貌跟踪是指对被检测到的面貌进行动态目标跟踪。具体采用基于模型的方法或基于运动与模型相结合的方法。此外,利用肤色模型跟踪也不失为一种简单而有效的手段。
(3)人脸比对
面貌比对是对被检测到的面貌像进行身份确认或在面像库中进行目标搜索。这实际上就是说,将采样到的面像与库存的面像依次进行比对,并找出最佳的匹配对象。所以,面像的描述决定了面像识别的具体方法与性能。目前主要采用特征向量与面纹模板两种描述方法:
①特征向量法
该方法是先确定眼虹膜、鼻翼、嘴角等面像五官轮廓的大小、位置、距离等属性,然后再计算出它们的几何特征量,而这些特征量形成一描述该面像的特征向量。
②面纹模板法
该方法是在库中存贮若干标准面像模板或面像器官模板,在进行比对时,将采样面像所有象素与库中所有模板采用归一化相关量度量进行匹配。此外,还有采用模式识别的自相关网络或特征与模板相结合的方法。
人脸识别技术的核心实际为“局部人体特征分析”和“图形/神经识别算法。”这种算法是利用人体面部各器官及特征部位的方法。如对应几何关系多数据形成识别参数与数据库中所有的原始参数进行比较、判断与确认。一般要求判断时间低于1秒。 一般分三步:
(1)首先建立人脸的面像档案。即用摄像机采集单位人员的人脸的面像文件或取他们的照片形成面像文件,并将这些面像文件生成面纹(Faceprint)编码贮存起来。
(2)获取当前的人体面像。即用摄像机捕捉的当前出入人员的面像,或取照片输入,并将当前的面像文件生成面纹编码。
(3)用当前的面纹编码与档案库存的比对。即将当前的面像的面纹编码与档案库存中的面纹编码进行检索比对。上述的“面纹编码”方式是根据人脸脸部的本质特征和开头来工作的。这种面纹编码可以抵抗光线、皮肤色调、面部毛发、发型、眼镜、表情和姿态的变化,具有强大的可靠性,从而使它可以从百万人中精确地辩认出某个人。人脸的识别过程,利用普通的图像处理设备就能自动、连续、实时地完成。

8. opencv的人脸识别基于什么特征

基于几何特征的人脸识别方法

基于特征的方法是一种自下而上的人脸检测方法,由于人眼可以将人脸在不此研究人员认为有一个潜在的假设:人脸或人脸的部件可能具有在各种条件下都不会改变的特征或属性,如形状、肤色、纹理、边缘信息等。基于特征的方法的目标就是寻找上述这些不变特征,并利用这些特征来定位入脸。这类方法在特定的环境下非常有效且检测速度较高,对人脸姿态、表情、旋转都不敏感。但是由于人脸部件的提取通常都借助于边缘算子,因此,这类方法对图像质量要求较高,对光照和背景等有较高的要求,因为光照、噪音、阴影都极有可能破坏人脸部件的边缘,从而影响算法的有效性。

模板匹配算法首先需要人TN作标准模板(固定模板)或将模板先行参数化(可变模板),然后在检测人脸时,计算输入图像与模板之间的相关值,这个相关值通常都是独立计算脸部轮廓、眼睛、鼻子和嘴各自的匹配程度后得出的综合描述,最后再根据相关值和预先设定的阈值来确定图像中是否存在人脸。基于可变模板的人脸检测算法比固定模板算法检测效果要好很多,但是它仍不能有效地处理人脸尺度、姿态和形状等方面的变化。

基于外观形状的方法并不对输入图像进行复杂的预处理,也不需要人工的对人脸特征进行分析或是抽取模板,而是通过使用特定的方法(如主成分分析方法(PCA)、支持向量机(SVM)、神经网络方法(ANN)等)对大量的人脸和非人脸样本组成的训练集(一般为了保证训练得到的检测器精度,非人脸样本集的容量要为人脸样本集的两倍以上)进行学习,再将学习而成的模板或者说分类器用于人脸检测。因此,这也是j种自下而上的方法。这种方法的优点是利用强大的机器学习算法快速稳定地实现了很好的检测结果,并且该方法在复杂背景下,多姿态的人脸图像中也能得到有效的检测结果。但是这种方法通常需要遍历整个图片才能得到检测结果,并且在训练过程中需要大量的人脸与非人脸样本,以及较长的训练时间。近几年来,针对该方法的人脸检测研究相对比较活跃。


基于代数特征的人脸识别方法

在基于代数特征的人脸识别中,每一幅人脸图像被看成是以像素点灰度为元素的矩阵,用反映某些性质的数据特征来表示人脸的特征。 设人脸图像 ) , ( y x I 为二维 N M × 灰度图像,同样可以看成是 N M n × = 维列向量,可视为 N M × 维空间中的一个点。但这样的一个空间中,并不是空间中的每一部分都包含有价值的信息,故一般情况下,需要通过某种变换,将如此巨大的空间中的这些点映射到一个维数较低的空间中去。然后利用对图像投影间的某种度量来确定图像间的相似度,最常见的就是各种距离度量。 在基于代数特征的人脸识别方法中,主成分分析法(PCA)和Fisher 线性判别分析(LDA)是研究最多的方法。本章简要介绍介绍了PCA。

完整的PCA(PrincipalComponentAnalysis)人脸识别的应用包括四个步骤:人脸图像预处理;读入人脸库,训练形成特征子空间;把训练图像和测试图像投影的上一步骤中得到的子空间上;选择一定的距离函数进行识别。详细描述如下:

4.1读入人脸库

一归一化人脸库后,将库中的每个人选择一定数量的图像构成训练集,设归一化后的图像是n×n,按列相连就构成n2维矢量,可视为n2维空间中的一个点,可以通过K-L变换用一个低维子空间描述这个图像。

4.2计算K.L变换的生成矩阵

训练样本集的总体散布矩阵为产生矩阵,即

或者写成:

式中xi为第i个训练样本的图像向量,|l为训练样本的均值向量,M为训练样本的总数。为了求n2×n2维矩阵∑的特征值和正交归一化的特征向量,要直接计算的话,计算量太大,由此引入奇异值分解定理来解决维数过高的问题。

4.3利用奇异值分解(AVD)定理计算图像的特征值和特征向量

设A是一个秩为r的行n×r维矩阵,则存在两个正交矩阵和对角阵:

其中凡则这两个正交矩阵和对角矩阵满足下式:

其中为矩阵的非零特征值,

4.4 把训练图像和测试图像投影到特征空间每一副人脸图像向特征脸子空间投影,得到一组坐标系数,就对应于子空间中的一个点。同样,子空间中的任一点也对应于~副图像。这组系数便可作为人脸识别的依据,也就是这张人脸图像的特征脸特征。也就是说任何一幅人脸图像都可以表示为这组特征脸的线性组合,各个加权系数就是K.L变换的展开系数,可以作为图像的识别特征,表明了该图像在子空间的位置,也就是向量

可用于人脸检测,如果它大于某个阈值,可以认为f是人脸图像,否则就认为不是。这样原来的人脸图象识别问题就转化为依据子空间的训练样本点进行分类的问题。


基于连接机制的人脸识别方法

基于连接机制的识别方法的代表性有神经网络和弹性匹配法。

神经网络(ANN)在人工智能领域近年来是一个研究热门,基于神经网络技术来进行人脸特征提取和特征识别是一个积极的研究方向。神经网络通过大量简单神经元互联来构成复杂系统,在人脸识别中取得了较好的效果,特别是正面人脸图像。常用的神经网络有:BP网络、卷积网络、径向基函数网络、自组织网络以及模糊神经网络等n¨。BP网络的运算量较小耗时也短,它的自适应功能使系统的鲁棒性增强。神经网络用于人脸识别,相比较其他方法,其可以获得识别规则的隐性表达,缺点是训练时间长、运算量大、收敛速度慢且容易陷入局部极小点等。Gutta等人结合RBF与树型分类器的混合分类器模型来进行人脸识别乜螂1。Lin等人采用虚拟样本进行强化和反强化学习,采用模块化的网络结构网络的学习加快,实现了基于概率决策的神经网络方法获得了较理想结果,。此种方法能较好的应用于人脸检测和识别的各步骤中。弹性匹配法采用属性拓扑图代表人脸,拓扑图的每个顶点包含一个特征向量,以此来记录人脸在该顶点位置周围的特征信息¨引。拓扑图的顶点是采用小波变换特征,对光线、角度和尺寸都具有一定的适应性,且能适应表情和视角的变化,其在理论上改进了特征脸算法的一些缺点。


基于三维数据的人脸识别方法

一个完整的人脸识别系统包括人脸面部数据的获取、数据分析处理和最终结果输出三个部分。图2-1 显示了三维人脸识别的基本步骤:1 、通过三维数据采集设备获得人脸面部的三维形状信息;2 、对获取的三维数据进行平滑去噪和提取面部区域等预处理;3 、从三维数据中提取人脸面部特征,通过与人脸库中的数据进行比对;4 、用分类器做分类判别,输出最后决策结果。

基于三维数据的方法的代表性是基于模型合成的方法和基于曲率的方法。

基于模型合成的方法,它的基本思想为:输入人脸图像的二维的,用某种技术恢复(或部分恢复)人脸的三维信息,再重新合成指定条件下的人脸图像。典型代表是3D可变形模型和基于形状恢复的3D增强人脸识别算法。3D可变形模型首先通过200个高精度的3D人脸模型构建一个可变形的3D人脸模型,用这个模型来对给定的人脸图像拟合,获得一组特定的参数,再合成任何姿态和光照的人脸图像n卜捌。基于形状恢复的3D增强人脸识别算法是利用通用的3D人脸模型合成新的人脸图像,合成过程改变了一定的姿态与光源情况。

曲率是最基本的表达曲面信息的局部特征,因而最早用来处理3D人脸识别问题的是人脸曲面的曲率。Lee禾lJ用平均曲率和高斯曲率值,将人脸深度图中凸的区域分割出来。



如果你是开发者的话,可以去Tel一下colorreco,更好地技术解答。

9. 数字图像处理处理中的数学怎么提高

(一)数学模型
包括各种具有实际背景及应用价值的有关图像恢复等图像处理问题的数学模型;
(二)数值方程
包括与图像处理有关的非线性偏微分方程、变分法的理论及各种数值方程;
(三)图像偏微分方程的数值解法,
包括轮廓线匹配算法、图像匹配算法、基于扩散方程的保边界降噪声算法和近年发展较快的水平集法及总变分方法.

10. 想问一下有没有比较方便的人脸识别算法,求推荐

主流的人脸识别技术基本上可以归结为三类,即:基于几何特征的方法、基于模板的方法和基于模型的方法。
1. 基于几何特征的方法是最早、最传统的方法,通常需要和其他算法结合才能有比较好的效果;
2. 基于模板的方法可以分为基于相关匹配的方法、特征脸方法、线性判别分析方法、奇异值分解方法、神经网络方法、动态连接匹配方法等。
3. 基于模型的方法则有基于隐马尔柯夫模型,主动形状模型和主动外观模型的方法等。
1. 基于几何特征的方法
人脸由眼睛、鼻子、嘴巴、下巴等部件构成,正因为这些部件的形状、大小和结构上的各种差异才使得世界上每个人脸千差万别,因此对这些部件的形状和结构关系的几何描述,可以做为人脸识别的重要特征。几何特征最早是用于人脸侧面轮廓的描述与识别,首先根据侧面轮廓曲线确定若干显着点,并由这些显着点导出一组用于识别的特征度量如距离、角度等。Jia 等由正面灰度图中线附近的积分投影模拟侧面轮廓图是一种很有新意的方法。
采用几何特征进行正面人脸识别一般是通过提取人眼、口、鼻等重要特征点的位置和眼睛等重要器官的几何形状作为分类特征,但Roder对几何特征提取的精确性进行了实验性的研究,结果不容乐观。
可变形模板法可以视为几何特征方法的一种改进,其基本思想是 :设计一个参数可调的器官模型 (即可变形模板),定义一个能量函数,通过调整模型参数使能量函数最小化,此时的模型参数即做为该器官的几何特征。
这种方法思想很好,但是存在两个问题,一是能量函数中各种代价的加权系数只能由经验确定,难以推广,二是能量函数优化过程十分耗时,难以实际应用。 基于参数的人脸表示可以实现对人脸显着特征的一个高效描述,但它需要大量的前处理和精细的参数选择。同时,采用一般几何特征只描述了部件的基本形状与结构关系,忽略了局部细微特征,造成部分信息的丢失,更适合于做粗分类,而且目前已有的特征点检测技术在精确率上还远不能满足要求,计算量也较大。
2. 局部特征分析方法(Local Face Analysis)
主元子空间的表示是紧凑的,特征维数大大降低,但它是非局部化的,其核函数的支集扩展在整个坐标空间中,同时它是非拓扑的,某个轴投影后临近的点与原图像空间中点的临近性没有任何关系,而局部性和拓扑性对模式分析和分割是理想的特性,似乎这更符合神经信息处理的机制,因此寻找具有这种特性的表达十分重要。基于这种考虑,Atick提出基于局部特征的人脸特征提取与识别方法。这种方法在实际应用取得了很好的效果,它构成了FaceIt人脸识别软件的基础。
3. 特征脸方法(Eigenface或PCA)
特征脸方法是90年代初期由Turk和Pentland提出的目前最流行的算法之一,具有简单有效的特点, 也称为基于主成分分析(principal component analysis,简称PCA)的人脸识别方法。
特征子脸技术的基本思想是:从统计的观点,寻找人脸图像分布的基本元素,即人脸图像样本集协方差矩阵的特征向量,以此近似地表征人脸图像。这些特征向量称为特征脸(Eigenface)。
实际上,特征脸反映了隐含在人脸样本集合内部的信息和人脸的结构关系。将眼睛、面颊、下颌的样本集协方差矩阵的特征向量称为特征眼、特征颌和特征唇,统称特征子脸。特征子脸在相应的图像空间中生成子空间,称为子脸空间。计算出测试图像窗口在子脸空间的投影距离,若窗口图像满足阈值比较条件,则判断其为人脸。
基于特征分析的方法,也就是将人脸基准点的相对比率和其它描述人脸脸部特征的形状参数或类别参数等一起构成识别特征向量,这种基于整体脸的识别不仅保留了人脸部件之间的拓扑关系,而且也保留了各部件本身的信息,而基于部件的识别则是通过提取出局部轮廓信息及灰度信息来设计具体识别算法。现在Eigenface(PCA)算法已经与经典的模板匹配算法一起成为测试人脸识别系统性能的基准算法;而自1991年特征脸技术诞生以来,研究者对其进行了各种各样的实验和理论分析,FERET'96测试结果也表明,改进的特征脸算法是主流的人脸识别技术,也是具有最好性能的识别方法之一。
该方法是先确定眼虹膜、鼻翼、嘴角等面像五官轮廓的大小、位置、距离等属性,然后再计算出它们的几何特征量,而这些特征量形成一描述该面像的特征向量。其技术的核心实际为“局部人体特征分析”和“图形/神经识别算法。”这种算法是利用人体面部各器官及特征部位的方法。如对应几何关系多数据形成识别参数与数据库中所有的原始参数进行比较、判断与确认。Turk和Pentland提出特征脸的方法,它根据一组人脸训练图像构造主元子空间,由于主元具有脸的形状,也称为特征脸 ,识别时将测试 图像投影到主元子空间上,得到一组投影系数,和各个已知人的人脸图像比较进行识别。Pentland等报告了相当好的结果,在 200个人的 3000幅图像中得到 95%的正确识别率,在FERET数据库上对 150幅正面人脸象只有一个误识别。但系统在进行特征脸方法之前需要作大量预处理工作如归一化等。
在传统特征脸的基础上,研究者注意到特征值大的特征向量 (即特征脸 )并不一定是分类性能好的方向,据此发展了多种特征 (子空间 )选择方法,如Peng的双子空间方法、Weng的线性歧义分析方法、Belhumeur的FisherFace方法等。事实上,特征脸方法是一种显式主元分析人脸建模,一些线性自联想、线性压缩型BP网则为隐式的主元分析方法,它们都是把人脸表示为一些向量的加权和,这些向量是训练集叉积阵的主特征向量,Valentin对此作了详细讨论。总之,特征脸方法是一种简单、快速、实用的基于变换系数特征的算法,但由于它在本质上依赖于训练集和测试集图像的灰度相关性,而且要求测试图像与训练集比较像,所以它有着很大的局限性。
基于KL 变换的特征人脸识别方法
基本原理:
KL变换是图象压缩中的一种最优正交变换,人们将它用于统计特征提取,从而形成了子空间法模式识别的基础,若将KL变换用于人脸识别,则需假设人脸处于低维线性空间,且不同人脸具有可分性,由于高维图象空间KL变换后可得到一组新的正交基,因此可通过保留部分正交基,以生成低维人脸空间,而低维空间的基则是通过分析人脸训练样本集的统计特性来获得,KL变换的生成矩阵可以是训练样本集的总体散布矩阵,也可以是训练样本集的类间散布矩阵,即可采用同一人的数张图象的平均来进行训练,这样可在一定程度上消除光线等的干扰,且计算量也得到减少,而识别率不会下降。
4. 基于弹性模型的方法
Lades等人针对畸变不变性的物体识别提出了动态链接模型 (DLA),将物体用稀疏图形来描述 (见下图),其顶点用局部能量谱的多尺度描述来标记,边则表示拓扑连接关系并用几何距离来标记,然后应用塑性图形匹配技术来寻找最近的已知图形。Wiscott等人在此基础上作了改进,用FERET图像库做实验,用 300幅人脸图像和另外 300幅图像作比较,准确率达到 97.3%。此方法的缺点是计算量非常巨大 。
Nastar将人脸图像 (Ⅰ ) (x,y)建模为可变形的 3D网格表面 (x,y,I(x,y) ) (如下图所示 ),从而将人脸匹配问题转化为可变形曲面的弹性匹配问题。利用有限元分析的方法进行曲面变形,并根据变形的情况判断两张图片是否为同一个人。这种方法的特点在于将空间 (x,y)和灰度I(x,y)放在了一个 3D空间中同时考虑,实验表明识别结果明显优于特征脸方法。
Lanitis等提出灵活表现模型方法,通过自动定位人脸的显着特征点将人脸编码为 83个模型参数,并利用辨别分析的方法进行基于形状信息的人脸识别。弹性图匹配技术是一种基于几何特征和对灰度分布信息进行小波纹理分析相结合的识别算法,由于该算法较好的利用了人脸的结构和灰度分布信息,而且还具有自动精确定位面部特征点的功能,因而具有良好的识别效果,适应性强识别率较高,该技术在FERET测试中若干指标名列前茅,其缺点是时间复杂度高,速度较慢,实现复杂。
5. 神经网络方法(Neural Networks)
人工神经网络是一种非线性动力学系统,具有良好的自组织、自适应能力。目前神经网络方法在人脸识别中的研究方兴未艾。Valentin提出一种方法,首先提取人脸的 50个主元,然后用自相关神经网络将它映射到 5维空间中,再用一个普通的多层感知器进行判别,对一些简单的测试图像效果较好;Intrator等提出了一种混合型神经网络来进行人脸识别,其中非监督神经网络用于特征提取,而监督神经网络用于分类。Lee等将人脸的特点用六条规则描述,然后根据这六条规则进行五官的定位,将五官之间的几何距离输入模糊神经网络进行识别,效果较一般的基于欧氏距离的方法有较大改善,Laurence等采用卷积神经网络方法进行人脸识别,由于卷积神经网络中集成了相邻像素之间的相关性知识,从而在一定程度上获得了对图像平移、旋转和局部变形的不变性,因此得到非常理想的识别结果,Lin等提出了基于概率决策的神经网络方法 (PDBNN),其主要思想是采用虚拟 (正反例 )样本进行强化和反强化学习,从而得到较为理想的概率估计结果,并采用模块化的网络结构 (OCON)加快网络的学习。这种方法在人脸检测、人脸定位和人脸识别的各个步骤上都得到了较好的应用,其它研究还有 :Dai等提出用Hopfield网络进行低分辨率人脸联想与识别,Gutta等提出将RBF与树型分类器结合起来进行人脸识别的混合分类器模型,Phillips等人将MatchingPursuit滤波器用于人脸识别,国内则采用统计学习理论中的支撑向量机进行人脸分类。
神经网络方法在人脸识别上的应用比起前述几类方法来有一定的优势,因为对人脸识别的许多规律或规则进行显性的描述是相当困难的,而神经网络方法则可以通过学习的过程获得对这些规律和规则的隐性表达,它的适应性更强,一般也比较容易实现。因此人工神经网络识别速度快,但识别率低 。而神经网络方法通常需要将人脸作为一个一维向量输入,因此输入节点庞大,其识别重要的一个目标就是降维处理。
PCA的算法描述:利用主元分析法 (即 Principle Component Analysis,简称 PCA)进行识别是由 Anderson和 Kohonen提出的。由于 PCA在将高维向量向低维向量转化时,使低维向量各分量的方差最大,且各分量互不相关,因此可以达到最优的特征抽取。

阅读全文

与轮廓匹配算法相关的资料

热点内容
app易语言post怎么学 浏览:963
地梁的箍筋加密区位置 浏览:300
二分法排序程序及编译结果 浏览:677
日语命令形和禁止型 浏览:283
安装软件用管理员解压 浏览:503
编译原理代码块 浏览:398
小孩可以用压缩面膜吗 浏览:12
锥形倒角怎么计算法 浏览:880
java合并链表 浏览:505
pic单片机编译器 浏览:803
丽水四轴加工中心编程 浏览:689
国产系统怎么解压 浏览:552
战双程序员 浏览:483
him触摸编程软件 浏览:931
植物大战僵尸存档怎么转移安卓 浏览:852
java栈的元素 浏览:737
程序员与篮球事件 浏览:676
app反编译不完整 浏览:788
电脑上的文件夹怎么调整 浏览:8
服务器无响应是什么原因呀 浏览:985