用六个自由参数计算仿射变换参数。

affine6p-cstest的Python项目详细描述


python库,用于估计两组二维点之间的仿射变换参数。

| x' |   | a  b  p | | x |
| y' | = | c  d  q | | y |
| 1  |   | 0  0  1 | | 1 |
Example transformation

当集大于三点时,用最小二乘法估计lib参数。

在制作这个库的时候,我用了很多的想法。参考号:https://github.com/axelpale/nudged-py

安装

使用pip:

pip install affine6p

用法

您有转换函数的originalconverted要估计的点列表:

import affine6p
origin = [[0,0], [1,0], [0,1], [1,1]]
convert = [[0,0], [1,0], [0,1], [1,1.1]]
trans = affine6p.estimate(origin, convert)
trans.get_matrix()
# [[1.0, 0.0, 0.0],
# [0.050000000000000044, 1.05, -0.02499999999999991],
# [0, 0, 1]]
affine6p.estimate_error(trans, origin, convert)
# 0.025000000000000022

当原点数为1时,假设如下关系:

a = d = 1 and b = c = 0

当原点数为2时,假设如下关系如estimate_helmert中所述:

a = d and b = -c

您可以访问transform类成员

trans.a() # params[0]
trans.b() # params[1]
trans.c() # params[2]
trans.d() # params[3]
trans.p() # params[4]
trans.q() # params[5]
trans.get_matrix() # [[a, b, p], [c, d, q], [0, 0, 1]]
trans.get_rotation_x() # math.atan2(-b, a)
trans.get_rotation_y() # math.atan2(c, d)
trans.get_scale_x() # sqrt(a*a + b*b)
trans.get_scale_y() # sqrt(c*c + d*d)
trans.get_scale() # sqrt((scale_x*scale_x+scale_y*scale_y)*0.5)
trans.get_translation() # [p, q]
trans.params # [a, b, c, d, p, q]

可以将transformrotate应用于一个或多个二维点。旋转意味着p=q=0

trans.transform([0, 0])
trans.transform([[0, 0], [1, 1]])
point = [0, 0]
trans.transform_inv(point)
trans.rotate(point)
trans.rotate_inv(point)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
无法在Netbeans 8.2 JDK8u231中创建java Maven项目(Web应用程序)   java如何以设定的时间间隔生成随机数?   java从socket和inputStream的慢速读取   spring SCORM:Java中基于Web的SCORM播放器   Java将函数传递给方法   java绑定通用服务及其实现和子类型   java如何在运行时从选择列表框中动态选择选项?爪哇硒   java Selenium WebDriver什么是“Selenium客户端和WebDriver语言绑定”   elasticsearch需要elasticsearch高级Java客户端更新ByQueryRequest API帮助   JAVA哈希表查找最大值   WSDL操作中的java soapAction属性为空   java访问封闭类或父类方法的一般方法   eclipse在java中运行带有SeleneTestCase的ANT。lang.NoClassDefFoundError   java Hazelcast不会在节点启动时填充ReplicatedMap   如何在Java中从excel中读取特定行?   html JAVA将本地时间(GMT+8)转换为UTC时间   java将自定义端点添加到Spring数据REST存储库中,并以大摇大摆的方式显示   java计算未来位置