目录

求解仿射变换矩阵

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

python 复制代码
from affine import Affine
import numpy as np

参考文献
矩阵最小二乘法求解仿射变换矩阵

python 复制代码
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对象
python 复制代码
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)
本文是转载文章,点击查看原文
如有侵权,请联系 xyy@jishuzhan.net 删除
相关推荐
rigidwill66610 小时前
LeetCode hot 100—搜索二维矩阵
数据结构·c++·算法·leetcode·矩阵
b_qixin11 小时前
图像处理有哪些核心技术?技术发展现状如何?
图像处理
北京青翼科技14 小时前
【PCIE736-0】基于 PCIE X16 总线架构的 4 路 QSFP28 100G 光纤通道处理平台
图像处理·人工智能·fpga开发·信号处理
zhuyixiangyyds15 小时前
day28图像处理OpenCV
图像处理·笔记·学习
lixy57915 小时前
深度学习之线性代数基础
人工智能·深度学习·线性代数
_x_w1 天前
【10】数据结构的矩阵与广义表篇章
开发语言·数据结构·笔记·python·线性代数·链表·矩阵
ljd2103231241 天前
numpy练习
numpy
徐行tag1 天前
组合数学——二项式系数
线性代数·概率论
三唐队队长2 天前
智能车摄像头开源—9 动态权、模糊PID、速度决策、路径优化
图像处理·人工智能·嵌入式硬件·算法·开源·边缘计算
闰土_RUNTU2 天前
机器学习中的数学(PartⅡ)——线性代数:2.2矩阵
线性代数·机器学习·矩阵