OpenCV中 变换模型求解的函数补充: 刚体变换(Rigid Transform)和仿射变换(Affine Transform)

OpenCV中提供了丰富的图像几何变换模型求解和进行几何变换的函数接口。

库中已经提供的两种图像变换模型(仿射变换getAffineTransform和透视变换getPerspectiveTransform)的求解方法,以及仿射求逆变换的求解等, 并通过warpAfine ,warpPerspective等函数实现了图像的重采样。

但这两种变换在很多应用中略显不足,这是因为:

1)这两个变换都是在理想情况下的的求解,即仿射变换使用3个点对求解6个参数,透视变换使用4个点对求解8个参数,因此使用上述无法求解最小二乘解。

2)实际中经常使用到的刚体变换模型并没有提供方法。


下面做两点补充:

1)给出仿射变换和透视变换模型估计的最小二乘解

1.1仿射变换模型最小二乘估计

struct TAffineTrans2D
{
	double a1, b1, c1;
	double a2, b2, c2;
};

void estimateAffine2D(cv::Point2f* srcPoints, cv::Point2f* dstPoints, int pointsNum, TAffineTrans2D& transform)
{
	double* vecL = new double[pointsNum * 2];
	double* matA = new double[pointsNum * 6 * 2];

	double* Li = vecL;
	double* Ai = matA;

	for (int i = 0; i < pointsNum; ++ i)
	{
		Ai[0] = srcPoints[i].x;
		Ai[1] = src
  • 4
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值