估计两组二维点之间的比例、旋转和平移,例如多点触控手势或校准

nudged的Python项目详细描述


python库,用于估计两组二维点之间的比例、旋转和平移。例如,当一个人想要用多个手指移动物体,或者需要基于几个校准点校正来自眼睛跟踪器设备的大量点时,适用。通常,您可以在任何希望基于几个采样点移动多个点的情况下应用微移。

Example transformation

从数学上讲,微位移是affine transformation matrices的最优最小二乘估计量,具有均匀的标度、旋转和平移,并且没有反射或剪切。该估计具有O(^ {EM1}$nEEE>)的时间复杂度,其由^ {EM1} $ 6n+1 22 eEM>乘法和^ {EM1} $11n+19 eEE>加法组成,其中^ {EM1}$nEEE>是点集的基数(大小)。换言之,nudged在线性时间内解决了仿射二维到二维点集的配准问题。

也提供in JavaScript

安装

$ pip install nudged

用法

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

dom = [[0,0], [2,0], [ 1,2]]
ran  = [[1,1], [1,3], [-1,2]]

根据以下各点计算最佳变换:

trans = nudged.estimate(dom, ran);

将转换应用于其他点:

trans.transform([2,2])
# [-1,3]

要探索估计的转换,您可以:

trans.get_matrix()
# [[0,-1, 1],
#  [1, 0, 1],
#  [0, 0, 1]]

trans.get_rotation()
# 1.5707... = π / 2   (radians)

trans.get_scale()
# 1.0

trans.get_translation()
# [1, 1]

API

轻推估算(域,范围)

参数

  • domain:点的列表
  • range:点列表

domainrange的长度应该相等。允许不同的长度,但会忽略较长列表中的其他点。

return一个新的nudged.transform(…)实例。

估计误差(变换、域、范围)

计算给定变换后域的点对与范围之间的均方距离。如果使用给定的域和范围估计变换,则结果是估计的均方误差(mse)。

参数

  • transform:anudged.transform实例
  • domain:点的列表
  • range:点列表

return浮点,范围与转换域点对之间的均方距离。

用法示例

dom = [[0, 0], [1, 1], [2, 2]]
ran = [[0,-1], [1, 2], [2,-1]]
t = nudged.estimate(dom, ran)
mse = nudged.estimate_error(t, dom, ran)
# mse == 2.0

轻推版本

包含与setup.py中的版本相同的模块版本字符串。

轻推变换(s,r,tx,ty)

nudged.estimate(…)返回的实例。

除了下面的方法之外,它还有定义augmented transformation matrix

的属性srtxty
|s  -r  tx|
|r   s  ty|
|0   0   1|

微移.变换变换(点)

return如果只给定一个点,则为转换点或单点的列表。例如:

trans.transform([1,1])           # [2,2]
trans.transform([[1,1]])         # [[2,2]]
trans.transform([[1,1], [2,3]])  # [[2,2], [3,4]]

轻推.transform获取矩阵()

return以下列表格式的3x3扩展转换矩阵:

[[s,-r, tx],
 [r, s, ty],
 [0, 0,  1]]

轻推.transform获取旋转(

return以弧度表示的旋转。

轻推.transform获取缩放(

return缩放倍增,例如0.333用于三倍收缩。

轻推.transform\get\u translation()

^ {STR 1 } $返回<强> ^ tT3}$,其中{tT4}$和^ {tT5}$表示相应于x轴和y轴的移动。

对于开发人员

按照说明安装pyenv <;http://sqa.stackexchange.com/a/15257/14918>;``然后运行快速测试:

^{公关九}$

或者在tox.ini

中对多个python版本进行全面测试
$ eval "$(pyenv init -)"
$ pyenv rehash
$ tox

许可证

MIT License

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

推荐PyPI第三方库


热门话题
java如何使用Ibatis在插入时返回ID(使用返回关键字)   java(org.hibernate.TransactionException)org。冬眠TransactionException:事务未成功启动   java小程序jwindow始终位于JNLP顶部   在Java中重新解析JSON对象?   java单击后将ListView数据移动到新屏幕   Mule ESB中的java WSA寻址特性   Java,对象编程:获取返回0值的方法   hibernate的Java通用问题,如何处理T get(K id)   java在使用超级CSV读取CSV时忽略引用   ssh使用Java远程运行命令   java如何向具体用户发送websocket消息?   在JAVA中,我可以在不指定的情况下使用条件运算符吗?