求解仿射变换矩阵

这篇具有很好参考价值的文章主要介绍了求解仿射变换矩阵。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

仿射变换是图形学中经常用到的方法,通常但是仿射变换的系数是未知的,需要找到变换前后的三对对应点进行求解。

from affine import Affine
import numpy as np

参考文献
矩阵最小二乘法求解仿射变换矩阵文章来源地址https://www.toymoban.com/news/detail-720255.html

def solve_affine(init_points, goal_points) -> Affine:
    # 分别整理成上面分析的6x6和6x1的矩阵
    # 先定义变量保留6个坐标的值
    (ax, ay), (bx, by), (cx, cy) = init_points
    (ax1, ay1), (bx1, by1), (cx1, cy1) = goal_points

    A = np.array([
        [ax, ay, 1, 0, 0, 0],
        [0, 0, 0, ax, ay, 1],
        [bx, by, 1, 0, 0, 0],
        [0, 0, 0, bx, by, 1],
        [cx, cy, 1, 0, 0, 0],
        [0, 0, 0, cx, cy, 1]
    ])

    B = np.array([ax1, ay1, bx1, by1, cx1, cy1]).reshape(6, 1)  # 比手写6X1矩阵要省事
    M = np.linalg.inv(A.T @ A) @ A.T @ B  # 套公式
    
    M=M.flatten().tolist()
    return Affine(*M) #转换成Affine对象

A = [[0,0], [50, 0], [50, 50]]
B = [[30, 30], [130, 30], [130, 130]]

transform=solve_affine(A,B)

for a,b in zip(A,B):
    print(a,b,transform*a)

到了这里,关于求解仿射变换矩阵的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 矩阵理论复习部分——线性代数(3)初等变换、逆矩阵

    一、初等变换3种方式 对调矩阵的两行(两列); 以 k ≠ 0 k not = 0 k  = 0 乘某一行(列)所有元素; 某一行(列)元素 k k k 倍加到另一行(列); 二、初等矩阵 初等矩阵是指由单位矩阵经过一次初等变换得到的矩阵。 左乘初等矩阵 = 行变换 右乘初等矩阵 = 列变换 初等矩

    2024年02月04日
    浏览(47)
  • 线性代数-初等行变换与初等行矩阵

    初等行变换 :在矩阵的行上进行 倍加 、 倍乘 、 对换 变换 初等行矩阵 :在单位矩阵上应用初等行变换得到的矩阵 初等行矩阵 乘上矩阵 ,就相当于在矩阵 上实施了对应的初等行变换。 ** ** 倍加 :将第二行乘2加在第三行上,r3’ = 2 * r2 + r3. 所用的初等行矩阵 为: ,即单

    2024年02月11日
    浏览(33)
  • MIT线性代数笔记-第31讲-线性变换及对应矩阵

    线性变换相当于是矩阵的抽象表示,每个线性变换都对应着一个矩阵 例: 考虑一个变换 T T T ,使得平面上的一个向量投影为平面上的另一个向量,即 T : R 2 → R 2 T:R^2 to R^2 T : R 2 → R 2 ,如图: ​   图中有两个任意向量 v ⃗ , w ⃗ vec{v} , vec{w} v , w 和一条直线,作 v ⃗

    2024年02月03日
    浏览(41)
  • 线性代数的学习和整理14: 线性方程组求解的3种方法,重点讲矩阵函数求解

    目录 0 写在前面的一些内容 0.1 学习心得: 0.2 参考其他书籍总结的知识点,对照学习 1 线性方程组求解 1.1 常见的线性方程组如下 1.2 记住常见的 矩阵函数的维数的关系 1.3  需要求解的方程组和矩阵的对应关系,需要先厘清 1.3.1 如果只需要求解x,是类 Ax=b的形式 1.3.2   如

    2024年02月05日
    浏览(46)
  • 线性代数|推导:线性变换与在基下的矩阵一一对应

    前置定义 1 设 T T T 是线性空间 V n V_n V n ​ 中的线性变换,在 V n V_n V n ​ 中取定一个基 α 1 , α 2 , ⋯   , α n boldsymbol{alpha}_1,boldsymbol{alpha}_2,cdots,boldsymbol{alpha}_n α 1 ​ , α 2 ​ , ⋯ , α n ​ ,如果这个基在变换 T T T 下的像(用这个基线性表示)为 { T ( α 1 ) = a 11 α 1 +

    2024年02月04日
    浏览(42)
  • 高等代数(八)-线性变换07:矩阵的有理标准形

    § 7 矩阵的有理标准形 前一节中证明了复数域上任一矩阵 A boldsymbol{A} A 可相似于一个若尔当形矩阵, 这一节将对任意数域 P P P 来讨论类似的问题. 我们证明 P P P 上任一矩阵必相似于一个有理标准形矩阵. 定义 8 对数域 P P P 上的一个多项式 d ˙ ( λ ˙ ) = λ n ˙ + a 1 λ n − 1 + ⋯

    2024年02月19日
    浏览(37)
  • 高等代数(八)-线性变换02:λ-矩阵在初等变换下的标准形

    § 2 λ § 2 lambda §2 λ -矩阵在初等变换下的标准形 λ lambda λ -矩阵也可以有初等变换. 定义 3 下面的三种变换叫做 λ lambda λ -矩阵的初等变换: 矩阵的两行 (列) 互换位置; 矩阵的某一行 (列) 乘非零常数 c c c ; 矩阵的某一行 (列) 加另一行 (列) 的 φ ( λ ) varphi(lambda) φ ( λ ) 倍

    2024年02月19日
    浏览(35)
  • 线性代数中涉及到的matlab命令-第三章:矩阵的初等变换及线性方程组

    目录 1,矩阵的初等变换 1.1,初等变换 1.2,增广矩阵  ​1.3,定义和性质 1.4,行阶梯型矩阵、行最简型矩阵 1.5,标准形矩阵  1.6,矩阵初等变换的性质  2,矩阵的秩  3,线性方程组的解  初等变换包括三种:交换行或列、某行或列乘以一个非零系数、某行或列加上零一行

    2024年02月04日
    浏览(42)
  • MIT线性代数笔记-第27讲-复数矩阵,快速傅里叶变换

    对于实矩阵而言,特征值为复数时,特征向量一定为复向量,由此引入对复向量的学习 求模长及内积 假定一个复向量 z ⃗ = [ z 1 z 2 ⋮ z n ] vec{z} = begin{bmatrix} z_1 \\\\ z_2 \\\\ vdots\\\\ z_n end{bmatrix} z = ​ z 1 ​ z 2 ​ ⋮ z n ​ ​ ​ ,其中 z 1 , z 2 , ⋯   , z n z_1 , z_2 , cdots , z_n z 1 ​

    2024年02月05日
    浏览(37)
  • MIT_线性代数笔记:第 26 讲 复矩阵;快速傅里叶变换

    实矩阵也可能有复特征值,因此无法避免在矩阵运算中碰到复数,本讲学习处理复数矩阵和复向量。 最重要的复矩阵是傅里叶矩阵,它用于傅里叶变换。而对于大数据处理快速傅里叶变换(FFT)显得更为重要,它将傅立叶变换的矩阵乘法中运算的次数从 n 2 n^2 n 2 次降至 n l

    2024年01月17日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包