仿射变换,又称仿射映射,是指在几何中,一个向量空间(vector space)进行一次线性变换(linear transformation)并拼上一个平移(Translation )。所以,本质上仿射变换针对的是某一向量空间(当然该空间中的任一向量)。

其矩阵表达形式(matrix formal)为:

y⃗ m×1=Am×nx⃗ n×1+b⃗ m×1

\vec{y}_{m\times 1}=A_{m\times n}\vec{x}_{n\times 1}+\vec{b}_{m\times 1}
表示为一个对向量 x⃗ \vec{x}平移 b⃗ \vec{b},与旋转缩放 AA的仿射映射。
也即这里的AA控制旋转与缩放, bb控制平移;
也即仿射变换实现了 Rn\mathbb{R}^n ( x⃗ ∈Rn\vec x\in \mathbb{R}^n)空间向 Rm\mathbb{R}^m( y⃗ ∈Rm\vec y\in \mathbb{R}^m) 空间的映射。

上式在齐次坐标(homogeneous coordinates)上,等价于:

[y⃗ 1](m+1)×1=[A0,…,0b⃗ 1](m+1)×(n+1)+[x⃗ 1](m+1)×1

\begin{bmatrix} \vec{y}\\ 1 \end{bmatrix}_{(m+1)\times 1}= \begin{bmatrix} A&\vec{b}\\ 0,\ldots,0&1 \end{bmatrix}_{(m+1)\times{(n+1)}}+ \begin{bmatrix} \vec{x}\\ 1 \end{bmatrix}_{(m+1)\times 1}

我们使用python语言对之进行演示:

import numpy as np
x = np.array((1, 2, 3))
b = np.ones(2)
A = np.random.rand(2, 3)
y1 = np.dot(A, x) + b#  array([ 4.17327185,  4.0755495 ])A_aug = np.hstack((A, b.reshape((-1, 1))))
A_aug = np.vstack((A_aug, np.hstack(np.zeros(3), 1).reshape((1, -1))))
y2 = np.dot(A_aug, np.hstack((x, 1)).reshape((-1, 1)))# array([[ 4.17327185],# [ 4.0755495 ],# [ 1.        ]])# 上述构造的方式仍稍显繁琐,这里再提供一种方式
A_aug = np.zeros((A.shape[0]+1, A.shape[1]+1))
A_aug[-1, -1] = 1
A_aug[:-1, :-1] = A
A_aug[:-1, -1] = b
np.dot(A_aug, np.hstack((x, 1)).reshape((-1, 1)))

仿射变换(Affine transformation)与python实践相关推荐

  1. 仿射变换 Affine transformation

    这个太重要了,我得再研究研究.并争取搞个code出来.这篇先来理论. 本文属转载. 变换模型是指根据待匹配图像与背景图像之间几何畸变的情况,所选择的能最佳拟合两幅图像之间变化的几何变换模型.可采用的变 ...

  2. opencv中很有趣的仿射变换(Affine Transformation)

    在仿射变换中,原图中所有平行的行在变换后的图像中仍然平行.为了构建仿射矩阵,我们需要原图中的三个点和它们在变换后的图像中的对应位置.函数 cv.getAffineTransform 创建一个2*3的矩 ...

  3. 仿射变换(affine transformation)

    仿射变换(affine transformation) 多面体编译(polyhedral compilation)会使用到仿射变换(affine transformation)的知识,这里介绍下仿射变 ...

  4. 图像仿射变换之图像旋转 python

    一. 实验代码 实验目标:实现输入图像绕中心点逆时针旋转30度 import cv2 import numpy as np# affine transformation -> rotation ...

  5. 自学python推荐书籍同时找哪些来实践-机器学习:Python实践 PDF 原书完整版

    给大家带来的一篇关于人工智能相关的电子书资源,介绍了关于机器学习.Python实践方面的内容,本书是由电子工业出版社出版,格式为PDF,资源大小124.7 MB,魏贞原编写,目前豆瓣.亚马逊.当当.京 ...

  6. python数据挖掘例题_数据挖掘与python实践试题及答案

    数据挖掘与python实践试题及答案 更多相关问题 [填空题] 进厂检验之所以重要,因为它是涂料入厂()工序 [多选] 裂纹可能是由于下列哪些原因造成的:() [多选] 涂装车间常用的消防器材共有几种 ...

  7. 机器学习算法与Python实践之(六)二分k均值聚类

    机器学习算法与Python实践这个系列主要是参考<机器学习实战>这本书.因为自己想学习Python,然后也想对一些机器学习算法加深下了解,所以就想通过Python来实现几个比较常用的机器学 ...

  8. 机器学习算法与Python实践之(五)k均值聚类(k-means)

    机器学习算法与Python实践这个系列主要是参考<机器学习实战>这本书.因为自己想学习Python,然后也想对一些机器学习算法加深下了解,所以就想通过Python来实现几个比较常用的机器学 ...

  9. 机器学习算法与Python实践之(三)支持向量机(SVM)进阶

    机器学习算法与Python实践这个系列主要是参考<机器学习实战>这本书.因为自己想学习Python,然后也想对一些机器学习算法加深下了解,所以就想通过Python来实现几个比较常用的机器学 ...

  10. 机器学习算法与Python实践之(二)支持向量机(SVM)初

    机器学习算法与Python实践这个系列主要是参考<机器学习实战>这本书.因为自己想学习Python,然后也想对一些机器学习算法加深下了解,所以就想通过Python来实现几个比较常用的机器学 ...

最新文章

  1. IOS错误总结:Unknown type name 'CGRect';did you mean 'Rect'
  2. 【JVM调优】JVM内存管理调优浅谈
  3. Touch Diamond Remote —— 世界就在指尖
  4. thinkphp路由配置 php7.0,thinkphp3.2 路由设置方法
  5. 目录爆破工具 -- dirsearch
  6. ubuntu php.ini 配置,ubuntu下配置PHP+JSON模块(apache) | 学步园
  7. delstr函数python_Python Day26:多态、封装、内置函数:__str__、__del__、反射(反省)、动态导入模块...
  8. 视频转图片序列、图像序列转视频等处理(mmcv vs. opencv)
  9. 武汉大学 RSIDEA 团队开源LoveDA:可同时推进语义分割和迁移学习
  10. VMware中的三种网络模式-----NAT模式
  11. 软件测试——Junit的使用
  12. 对于Python函数与方法,你可能存在些误解
  13. python代码雨_pygame实现烟雨蒙蒙下彩虹雨
  14. asp毕业设计——基于asp+access的WEB网上留言板设计与实现(毕业论文+程序源码)——网上留言板
  15. Unity--初识Live2D Cubism以及通过代码来实现Live2D模型的基本功能(一)
  16. 讯飞 AIUI 集成
  17. 中国与印度软件工程师的比较
  18. python six 用途_python之six用法
  19. 立方体三维之立方体平行投影
  20. php获取网站截图,异步获取评论者网站截图

热门文章

  1. jquery 操作 input显示或者隐藏
  2. epic打开一直闪_教你用意派Epub360做酷炫的快闪H5!(附快闪H5模板)
  3. C语言爬虫程序,simspider
  4. 自学python如何就业_python学习:想要自学Python达到就业的水平,应该怎么去学习...
  5. 第八届蓝桥杯第五题取数位
  6. OpenCV像素二位数组数据(矩阵)生成图片
  7. Qt多线程之QMutex
  8. 负载均衡的原理和架构
  9. php程序员需要精通js的程度_PHP程序员基本要求和必备技能
  10. nohup执行的jar 怎么kill_使用Shell脚本如何启动/停止Java的jar程序