仿射变换(affine transformation)

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

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

线性变换:

对于变换 f f f 是一个线性变换,则对于任意向量 w ⃗ \vec{w} w v ⃗ \vec{v} v 满足:

  1. f ( w ⃗ + v ⃗ ) = f ( w ⃗ ) + f ( v ⃗ ) f(\vec{w}+\vec{v})=f(\vec{w})+f(\vec{v}) f(w +v )=f(w )+f(v )
  2. f ( k v ⃗ ) = k f ( v ⃗ ) f(k\vec{v})=kf(\vec{v}) f(kv )=kf(v )

其中 k k k 为标量。

例如, f ( v ⃗ ) = < 3 v 1 − 2 v 2 , 4 v 2 > f(\vec{v})=<3v_1-2v_2, 4v_2> f(v )=<3v12v2,4v2> 是一个线性变换,而 f ( v ⃗ ) = < 3 v 1 − 2 v 2 , 4 v 1 v 2 > f(\vec{v})=<3v_1-2v_2, 4v_1v_2> f(v )=<3v12v2,4v1v2> 则不是线性变换。

线性变换还可以写成一个矩阵乘以输入向量的形式。例如: f ( v ⃗ ) = < 3 v 1 − 2 v 2 , 4 v 2 > f(\vec{v})=<3v_1-2v_2, 4v_2> f(v )=<3v12v2,4v2> 可以写成:
f ( v ⃗ ) = ( 3 − 2 0 4 ) ( v 1 v 2 ) f(\vec{v})= ( \begin{matrix} 3 & -2 \\ 0 & 4 \end{matrix} ) (\begin{matrix} v_1 \\ v_2 \end{matrix} ) f(v )=(3024)(v1v2)

仿射变换:

非正式地,一个仿射变换就是一个线性变换加一个常量。

正式地,一个仿射变换 f f f 可以表示为: f ( v ⃗ ) = M v ⃗ + c ⃗ f(\vec{v})=M\vec{v}+\vec{c} f(v )=Mv +c 。其中, M M M 是一个线性变换的矩阵, c ⃗ \vec{c} c 是一个常量向量。

例如,下面这是一个仿射变换:
f ( v ⃗ ) = ( 3 − 2 0 4 ) ( v 1 v 2 ) + ( 1 2 ) f(\vec{v})= ( \begin{matrix} 3 & -2 \\ 0 & 4 \end{matrix} ) (\begin{matrix} v_1 \\ v_2 \end{matrix} ) + (\begin{matrix} 1 \\ 2 \end{matrix} ) f(v )=(3024)(v1v2)+(12)

可见,线性变换肯定是一个仿射变换,而仿射变换只在其常量向量阵为零时才为线性变换。文章来源地址https://www.toymoban.com/news/detail-401069.html

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

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

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

相关文章

  • 【计算几何】凸多面体重叠判断算法:GJK 算法详解 & C++代码实现二维情形的凸多边形重叠判断

    GJK 算法是由 Gilbert,Johnson,Keerthi 三位前辈发明的, 用来计算两个凸多面体之间的碰撞检测 ,以及最近距离。 GJK 算法可以在 O ( M + N ) O(M+N) O ( M + N ) 的时间复杂度内,检测出碰撞,算法在每次迭代的过程中,都会优先选择靠近原点的方向,因此收敛速度会很快。算法的证明

    2024年02月08日
    浏览(61)
  • 【opencv】几何变换——仿射变换(4 计算仿射矩阵getAffineTransform(src, ds)

    对于空间变换的仿射矩阵有两种计算方式: 仿射变换矩阵有六个未知数,需要三组对应位置坐标,构造出由六个方程组成的方程组即可解六个未知数; 函数getAffineTransform();通过方程法计算参数src到dst的对应仿射变换矩阵; 头文件:#includeopencv2/imgproc.hpp 函数getAffineTransform()输

    2024年02月12日
    浏览(44)
  • 仿射变换和变换矩阵

    一、2D图像的仿射变换 仿射变换 包括 平移、旋转、错切、放缩(各向同性和各向异性) 欧式变换(刚体变换)包括 平移和旋转 相似变换包括平移、旋转、放缩(各向同性) 相似变换矩阵 有4个自由度 s,θ,tx,ty: 仿射变换矩阵 有6个自由度: 所有变换矩阵只需关注一点: 坐

    2024年02月14日
    浏览(37)
  • Halcon区域几何变换和仿射变换

    算子参数: move_region(Region : RegionMoved : Row, Column : ) 1.Region(输入要移动的区域) 2.RegionMoved(输出移动后区域) 3.Row(输入要移动区域的向量的行距离 point.y ) 4.Column(输入要移动区域的向量的列距离 point.x) 实例: 效果图:

    2023年04月08日
    浏览(57)
  • opencv实现仿射变换和透射变换

    OpenCV中的仿射变换和透视变换是常用的图像几何变换方法,可以用于实现图像的旋转、缩放、平移、扭曲等操作。这两种变换方式在计算机视觉、图像处理以及计算机图形学等领域广泛应用。 仿射变换 仿射变换是一种保持直线平行性质的线性变换,它可以对图像进行平移、

    2024年02月07日
    浏览(44)
  • 【OpenCV • c++】图像几何变换 | 图像仿射变换

    🚀 个人简介:CSDN「 博客新星 」TOP 10 , C/C++ 领域新星创作者 💟 作    者: 锡兰_CC ❣️ 📝 专    栏: 【OpenCV • c++】计算机视觉 🌈 若有帮助,还请 关注➕点赞➕收藏 ,不行的话我再努努力💪💪💪

    2024年02月16日
    浏览(47)
  • 仿射变换中的旋转缩放变换矩阵推导

    仿射变换可以将矩阵形状转换为平行四边形。可以挤压形状,但是必须保持两边平行。常见的是旋转、缩放、平移变换。缩放和平移比较简单,本文重点推导旋转缩放变换矩阵。 任意一点 ( x 0 , y 0 ) (x_0,y_0) ( x 0 ​ , y 0 ​ ) 可以看成 ( x 0 , 0 ) (x_0, 0) ( x 0 ​ , 0 ) 向量和 ( 0 ,

    2024年04月24日
    浏览(85)
  • opencv仿射变换

    #include opencv2/opencv.hpp /* 功能:对一系列坐标点进行平移仿射变换 参数: srcPoints:输入点坐标 dstPoints:变换后的点坐标 x:x方向平移的距离 y:y方向平移的距离 */ void tranlatePoints(std::vectorcv::Point2f srcPoints, std::vectorcv::Point2f dstPoints,double x,double y) {     cv::Mat affineMatrix = (cv::Mat_double

    2024年01月16日
    浏览(38)
  • 仿射变换代码opencv

    顺时针为正,左上角为默认坐标原点 CV_INSTRUMENT_REGION() 是一个OpenCV宏,用于在代码中进行性能分析和测量。它可以用于标记代码的某个区域,以便在运行时获取该区域的性能指标。(不太明白,先放一下)  

    2024年01月17日
    浏览(92)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包