OpenCV函数estimateRigidTransform 使用心得

本文详细探讨了OpenCV中的estimateRigidTransform函数,区分了全仿射变换与部分仿射变换的区别,重点解析了fullAffine和partialAffine的变换原理、矩阵约束以及在不同点数情况下的最小方差计算方法。对于estimateRigidTransform的使用提供了直观理解与实践指导。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近发现网上关于 estimateRigidTransform 的详细说明很少,因此这里做一个详细的解释。希望对大家有用。

一、函数定义如下:

Mat estimateRigidTransform(InputArraysrc,InputArraydst,boolfullAffine)
前两个参数,可以是 :src=srcImage (变换之前的图片Mat)  dst=transImage(变换之后的图片Mat
        也可以: src=array(变换之前的关键点Array) dst=array(变换之后的关键点Array

第三个参数:  1(全仿射变换,包括:rotation, translation, scaling,shearing,reflection

          0(带有约束的仿射变换) 

          默认参数1:全仿射变换。

fullAffine partialAaffine 主要区别是:变换矩阵中后者可以刚体变换。(不是必须,体会可以的含义)
也就可以后者没有尺度缩放。

二、直观感受:

paritcalAffine 的变换矩阵必须是如下类型:

旋转矩阵对角线元素的 绝对值 肯定相等。  

假设我们的矩阵|a11|=|a22| 同时|a21|=|a22|.真是基本条件。

fullAffine 的rotate矩阵可以是:

旋转矩阵可以没有任何数值上的约束。aii之间无数值上的约束。

三、fullAffine原理及变换公式        

如果我们有一个点变换之前是[x,y,1],变换后是[x',y',1] 则fullAffine表示如下:

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值