【python】由一组对应特征点确定一种变换矩阵

2025-11-19 06:42:53

1、先给出两组点作为对应的特征点,每一组各有五个点。

point1=np.uint8(np.random.random((5,2))*10)

point2=np.uint8(np.random.random((5,2))*10)

【python】由一组对应特征点确定一种变换矩阵

2、计算每一组特征点的重心坐标:

c1=np.mean(point1,axis=0)

c2=np.mean(point2,axis=0)

【python】由一组对应特征点确定一种变换矩阵

3、计算每组特征点坐标的标准差:

s1 = np.std(point1)

s2 = np.std(point2)

【python】由一组对应特征点确定一种变换矩阵

4、把每组特征点的重心放到原点位置上,并且坐标值除以标准差。

p1=(point1-c1)/s1

p2=(point2-c2)/s2

【python】由一组对应特征点确定一种变换矩阵

5、把p1转置,并和p2进行矩阵乘法:

A=np.matrix(p1.T)*np.matrix(p2)

【python】由一组对应特征点确定一种变换矩阵

6、对矩阵A进行奇异值分解:

u,v,w=np.linalg.svd(A)

【python】由一组对应特征点确定一种变换矩阵

7、构造变换矩阵:

R = (u*w).T

M=np.vstack([np.hstack(((s2 / s1) * R,

                      c2.T - (s2 / s1) * R * c1.T)),

                        np.matrix([0., 0., 1.])])

【python】由一组对应特征点确定一种变换矩阵

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
相关推荐
  • 阅读量:113
  • 阅读量:114
  • 阅读量:110
  • 阅读量:23
  • 阅读量:31
  • 猜你喜欢