最小二乘法求仿射变换参数,并剔除误差较大的点
来源:互联网 发布:java实验fan 编辑:程序博客网 时间:2024/06/04 18:12
struct sort_value
{
Point2f pt;
double value;
};
//降序排列
bool greaterCompare(const sort_lp& str1, const sort_lp& str2)
{
return str1.value > str2.value;
}
// 排序,仿射变换去除误差大的点
vector L_Affine;
for (int i = 0; i < q; i++)
{
Mat_ pp = Mat(2,1,CV_32FC1,Scalar(0));
Point2f PP1;
Mat_ temp = Mat(3,1, CV_32FC1, cv::Scalar(0));
temp(0, 0) = L_P_2[i].x;
temp(1, 0) = L_P_2[i].y;
temp(2, 0) = 1;
pp = F1 * temp;
PP1.x = pp.at(0, 0);
PP1.y = pp.at(1, 0);
L_Affine.push_back(PP1);
}
double aa = 0;
vector final;
for (int j = 0; j < q; j++)
{
sort_lp sort1;
double d = (L_Affine[j].x - R_P_2[j].x)(L_Affine[j].x - R_P_2[j].x) + (L_Affine[j].y - R_P_2[j].y)(L_Affine[j].y - R_P_2[j].y);
sort1.i = j; sort1.value = d;
final.push_back(sort1);
aa = aa + d;
}
sort(final.begin(), final.end(), greaterCompare); //降序排列
double c = sqrt(aa/q);
while (c > 10)
{
final.erase(final.begin());
c = 0;
for (vector::iterator iter = final.begin(); iter != final.end(); iter++)
{
c = c + (L_Affine[(iter).i].x - R_P_2[(*iter).i].x)(L_Affine[(iter).i].x - R_P_2[(*iter).i].x) + (L_Affine[(*iter).i].y - R_P_2[(*iter).i].y)(L_Affine[(*iter).i].y - R_P_2[(*iter).i].y);
}
c = sqrt(c/ final.size());
}
vector L_Aff;
vector R_Aff;
for (vector::iterator itera2 = final.begin(); itera2 != final.end(); itera2++)
{
L_Aff.push_back(L_P_2[(*itera2).i]);
R_Aff.push_back(R_P_2[(*itera2).i]);
}
当初始点内存在大量误匹配时,求出的仿射变换参数会有错误
-edit
- 最小二乘法求仿射变换参数,并剔除误差较大的点
- 利用最小二乘法估算仿射变换参数
- 在图像变换中用最小二乘法求解仿射变换参数
- ESL作业笔记2.5:最小二乘法预测输出的误差期望
- 系统参数的最小二乘法估计
- 【CS】尺度不变特征变换匹配算法SIFT(3):RANSAC剔除错误匹配点
- 点的变换
- 最小二乘法 与 均方误差的区别 哈哈哈 相信很多人都没注意到
- 比较两个数的大小并输出较大值
- NYOJ 298 点的变换
- nyoj 298 点的变换
- 最小二乘法拟合散点组成的椭圆曲线
- 基于最小二乘法估计点云的曲面法向量
- 最小二乘法和梯度下降法的相同点和异同点
- 几个误差参数说明
- 回归分析的几个简单误差计算与评估参数
- Matlab拟合工具箱的几个误差参数说明
- Matlab拟合工具箱的几个误差参数说明
- liux环境下修改mysql编码
- controller跳转另外一个controller
- makefile 详解
- 报表并发访问量大的配置
- kafa
- 最小二乘法求仿射变换参数,并剔除误差较大的点
- 反射snippet
- 正则表达式中的字符集等概念
- VS 2010 C#程序总结
- MyBatis 实战小项目 自动回复机器人
- BLE 4.0 概述
- hadoop安装和维护02--创建用户和组
- JVM内存管理及垃圾回收【转】
- 数据结构-顺序队列