halcon算子笔记,proj_match_points_distortion_ransac

proj_match_points_distortion_ransac(Image1, Image2 : : Rows1, Cols1, Rows2, Cols2, GrayMatchMethod, MaskSize, RowMove, ColMove, RowTolerance, ColTolerance, Rotation, MatchThreshold, EstimationMethod, DistanceThreshold, RandSeed : HomMat2D, Kappa, Error, Points1, Points2)通过自动查找点之间的对应关系,计算出两幅图像之间的投影变换矩阵和径向畸变系数。

匹配步骤:

  1. 确定第一张和第二张图像输入点周围的掩模窗口的灰度值相关性,利用两张图像中窗口的相似度生成掩模窗口之间的初始匹配;
  2. 应用RANSAC算法,求出在上述约束条件下使对应数最大化的投影变换矩阵和径向畸变系数。

RANSAC算法:RANSAC为Random Sample Consensus的缩写,随机抽样一致算法

算法简介:RANSAC算法的基本假设是样本中包含正确数据(inliers,可以被模型描述的数据),也包含异常数据(outliers,偏离正常范围很远、无法适应数学模型的数据),即数据集中含有噪声。这些异常数据可能是由于错误的测量、错误的假设、错误的计算等产生的。同时RANSAC也假设,给定一组正确的数据,存在可以计算出符合这些数据的模型参数的方法。

基本思想描述:

①考虑一个最小抽样集的势为n的模型(n为初始化模型参数所需的最小样本数)和一个样本集P,集合P的样本数#(P)>n,从P中随机抽取包含n个样本的P的子集S初始化模型M;

②余集SC=P\S中与模型M的误差小于某一设定阈值t的样本集以及S构成S*。S*认为是内点集,它们构成S的一致集(Consensus Set);

③若#(S*)≥N,认为得到正确的模型参数,并利用集S*(内点inliers)采用最小二乘等方法重新计算新的模型M*;重新随机抽取新的S,重复以上过程。

④在完成一定的抽样次数后,若未找到一致集则算法失败,否则选取抽样后得到的最大一致集判断内外点,算法结束。

补充说明:

普通最小二乘是保守派:在现有数据下,如何实现最优。是从一个整体误差最小的角度去考虑,尽量谁也不得罪。

RANSAC是改革派:首先假设数据具有某种特性(目的),为了达到目的,适当割舍一些现有的数据。

给出最小二乘拟合(红线)、RANSAC(绿线)对于一阶直线、二阶曲线的拟合对比:

GrayMatchMethod := ssd使用灰度差的平方和‘sad’表示绝对差和,‘ncc’表示归一化交叉相关。

Rotation如果第一幅图像相对于第二幅图像旋转,则参数旋转可以包含旋转角度的估计或以弧度表示的角度间隔。例如:Rotation := [rad(-30),rad(30)],表示图像偏移或旋转了-30°或30 °。应该指定一个角度间隔,旋转是一个有两个元素的数组。

DistanceThreshold,对于要接受的点,以像素为单位到其相应转换点的距离不能超过阈值DistanceThreshold。

EstimationMethod = 'gold_standard',采用数学上最优但速度较慢的优化方法,使几何重投影误差最小化。

Error,值误差表示估计过程的整体质量,是点与相应变换点之间的平均对称欧氏距离(以像素为单位)。所谓欧氏距离变换,是指对于一张二值图像(在此我们假定白色为前景色,黑色为背景色),将前景中的像素的值转化为该点到达最近的背景点的距离。

set_origin_pose是Halcon中用来设置相机姿态的算子之一。在机器视觉领域,相机姿态是指相机在三维世界中的位置和方向,是进行立体视觉及三维重建等操作的基石之一。相机姿态的描述主要有两种方法:欧拉角和四元数。 在Halcon中,set_origin_pose算子所设置的相机姿态采用的是欧拉角的方式进行描述。其参数有六个,分别为x、y、z方向上的旋转角度和相机的平移向量(tx、ty、tz),这六个参数可以通过平移向量和旋转角度来描述相机在三维世界坐标系中的位置和方向。set_origin_pose算子可用于将相机从一个位置移到另一个位置,以及旋转相机的方向。 使用set_origin_pose算子需要先获取当前相机姿态,然后设置新的姿态。一般情况下,获取当前相机姿态使用的是get_cam_param算子,该算子返回相机的内外参数,包括焦距、畸变系数、旋转角度及平移向量等。根据当前姿态和设置的姿态,可以确定相机需要旋转的角度和平移的距离,最终将相机移动到新的位置和方向。 set_origin_pose算子主要用于相机标定、三维重建、机器人导航等方面。通过调整相机的姿态,可以使图像对应于不同位置和方向的三维场景,实现更精确的视觉测量和准确定位。在实际应用中,需要结合其他算子,如gen_cam_proj_matrix2算子、hom_mat3d_to_pose算子等,才能完成更复杂的相机姿态设置和获取任务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小菠萝0908

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值