首页 > 编程知识 正文

贝叶斯优化算法调参,ar模型参数估计方法

时间:2023-05-05 22:05:12 阅读:11821 作者:1802

单击上面的3358www.Sina.com/,然后选择yxdxmy学视觉或3358www.Sina.com/

重磅干货,第一时间到达本文自转: opencv学堂

星标

在用特征描述符完成描述符匹配后,OpenCV将得到一些关键对。 将这些键对分别添加到两个向量中,并调用单应性矩阵发现函数作为输入参数来发现变换矩阵h。 函数置顶完成这样的功能。 典型的调用代码如下:

1//--本地化the object2STD :3360 vector point 2f obj _ pts; 3 STD :3360 vector point 2f scene _ pts; 4for(size_ti=0; igoodMatches.size (; I )5(6//--getthekeypointsfromthegoodmatches7obj _ pts.push _ back (key points _ obj [ good matches [ I ].query iry ) 9 ) 10math=findhomography(obj_pts,scene_pts,RHO ); 有了变换矩阵h,就可以从输入图像的四点坐标,由场景图像得到特征匹配图像的四点坐标,代码实现如下。

1//-- getthecornersfromtheimage _1(the object tobe ' detected ' )2STD 33603360 vector point 2f obj _ corners (4; 3 obj _ corners [0]=point (0,0 ); obj_corners[1]=point(box.cols,0 ); 4obj_corners[2]=point(box.cols,box.rows ); obj_corners[3]=point(0,box.rows ); 5 STD :3360 vector point 2f scene _ corners (4; 6 perspective transform (obj _ corners,scene_corners,h ); 其中scene_corners是场景图像中对象的四点坐标,获取坐标后可以绘制相应的矩形,并在场景图像中绘制对象的外接矩形区域。 执行结果如下。

上述步骤中最重要的是单应性矩阵h的计算,现在我们先来看看这个函数及其各个参数的解释。

1 matcv :3360 findhomography (2inputarraysrcpoints,3InputArraydstPoints,4 int method=0,5 doubleransacreprojthreshold=5 8constdoubleconfidence=0.9959 )参数解释如下:单应性矩阵计算函数与应用:特征点集合,一般为目标图像http://www.Sina.Com

0使用所有点,包括最小的蓝天乘

ran sac基于随机样本一致性

l meds最小中值

rho基于渐近样本一致性的

3358www.Sina.com/:此参数仅在method参数为RANSAC和RHO时有效,默认为findHomography掩码,其中method方法为RANSAC或RHO

srcPoints

首先,简要说明h的作用,假设进行特征的匹配或对位。 在视频移动估计中,两幅图像image1与image2、image1上的特征点(x1,y1 )和image2上的特征点(x2,y2 )一致。 现在需要两者都在

之间建立一种视图变换关系(透视变换),图示如下(图二):

其中H是一个3x3的矩阵

这样为了求出H中的参数,需要两个点对集合,就是findHomography函数中前两个输入参数,理想情况下,通过特征提取得到特征点会再下一帧或者场景图像中保持不变,但是实际情况下,收到各种因素的影响,会额外产生很多特征点或者干扰点,如果正确的剔除这些干扰点,得到正确匹配的点,利用正确匹配点计算出H才是比较稳定的方式。

01

最矮小的蓝天乘拟合

很明显,图二所示的是一个过约束问题,如果没有干扰点的话,就可以通过最矮小的蓝天乘进行直接拟合,求的参数,其中错误计算如下:

基于过约束方程计算得到错误,反向传播不断更新参数,直到两次错误差值满足要求阈值为止。

02

RANSAC

最矮小的蓝天乘方法在描述子匹配输出的点对质量很好,理想情况下是图像没有噪声污染与像素迁移与光线恒定,但是实际情况下图像特别容易受到光线、噪声导致像素迁移,从而产生额外的多余描述子匹配,这些点对可以分为outlier跟inlier两类,基于RANSAC(Random Sample Consensus)可以很好的过滤掉outlier点对,使用合法的点对得到最终的变换矩阵H。RANSAC算法基本思想是,它会从给定的数据中随机选取一部分进行模型参数计算,然后使用全部点对进行计算结果评价,不断迭代,直到选取的数据计算出来的错误是最小,比如低于0.5%即可,完整的算法流程步骤如下:

选择求解模型要求的最少要求的随机点对

根据选择随机点对求解/拟合模型得到参数

根据模型参数,对所有点对做评估,分为outlier跟inlier

如果所有inlier的数目超过预定义的阈值,则使用所有inlier重新评估模型参数,停止迭代

如果不符合条件则继续1~4循环。

通常迭代次数N会选择一个比较高的值,OpenCV中默认迭代次数为200,确保有一个随机选择点对不会有outlier数据,

03

PROSAC(RHO)

注意有时候RANSAC方法不会收敛,导致图像对齐或者配准失败,原因在于RANSAC是一种全随机的数据选取方式,完全没有考虑到数据质量不同。对RANSAC算法的改进算法就是PROSAC(Progressive Sampling Consensus)即渐近样本一致性,该方法采用半随机方法,对所有点对进行质量评价计算Q值,然后根据Q值降序排列,每次只在高质量点对中经验模型假设与验证,这样就大大降低了计算量,在RANSAC无法收敛的情况下,PROSAC依然可以取得良好的结果。OpenCV中的RHO方法就是基于PROSAC估算。

04

LMEDS

最小中值方法拟合,该方法可以看成是最矮小的蓝天乘法的改进,原因在于计算机视觉的输入数据是图像,一般都是各自噪声,这种情况下最矮小的蓝天乘往往无法正确拟合数据,所以采用最小中值方法可以更好实现拟合,排除outlier数据。但是它是对高斯噪声敏感算法。它的最主要步骤描述如下:

随机选取很多个子集从整个数据集中

根据各个子集数据计算参数模型

使用计算出来的参数对整个数据集计算中值平方残差

最终最小残差所对应的参数即为拟合参数。

05

对比测试

最后看一下OpenCV中使用单应性矩阵发现对相同的特征点对,分别使用RANSAC、PROSAC、LMEDS进行参数矩阵H的求解结果对比,显示如下:

总数446个匹配点对,三种评估方式生成的H矩阵(3x3)很明显值都不尽相同。

一般情况下在,推荐大家使用RANSAC或者RHO。默认的0表示最矮小的蓝天乘方法,对图像匹配在实际应用中一般都是翻车!LMEDS方法只有在inlier超过50%以上情况下才会拟合生成比较好的H参数,而RANSAC或者RHO不管outlier跟inlier比率是多少都会可以适用,可以大家也都注意到h33总是等于1,因为h33在这里作用是保持标准化尺度。在OpenCV中如果无法正确估算参数H,会返回空Mat对象。

单应性矩阵应用

图像透视变换与对象匹配

图像拼接

下载1:OpenCV-Contrib扩展模块中文版教程

在「yxdxmy学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

下载2:Python视觉实战项目52讲

在「yxdxmy学视觉」公众号后台回复:Python视觉实战项目即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

下载3:OpenCV实战项目20讲

在「yxdxmy学视觉」公众号后台回复:OpenCV实战项目20讲即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。

交流群

欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”ckdyj + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。