[转载]仿射变换(Affine Transformation)

【图像处理】 仿射变换(Affine Transformation)和透视变换(Perspective Transformation) 1.齐次坐标系;2.仿射变换(Affine Transformation)的原理;3.OpenCV中的仿射变换与应用;4.透视变换(Perspective Transformation)的原理;5.OpenCV中的透视变换与应用 阅读详情

仿射变换(Affine Transformation)

Affine Transformation是一种二维坐标到二维坐标之间的线性变换,保持二维图形的“平直性”(译注:straightness,即变换后直线还是直线不会打弯,圆弧还是圆弧)和“平行性”(译注:parallelness,其实是指保二维图形间的相对位置关系不变,平行线还是平行线,相交直线的交角不变。)。仿射变换可以通过一系列的原子变换的复合来实现,包括:平移(Translation)、缩放(Scale)、翻转(Flip)、旋转(Rotation)和剪切(Shear)。


此类变换可以用一个3×3的矩阵来表示,其最后一行为(0, 0, 1)。该变换矩阵将原坐标(x, y)变换为新坐标(x', y'),这里原坐标和新坐标皆视为最末一行为(1)的三维列向量,原列向量左乘变换矩阵得到新的列向量:

[x']= [m00 m01 m02] [x] = [m00*x+m01*y+m02]

[y'] = [m10 m11 m12] [y] = [m10*x+m11*y+m12]

[1 ]   [ 0   0   1 ] [1]   [ 1 ]


用代数式表示如下:

x’= m00*x+m01*y+m02;

y’= m10*x+m11*y+m12;


如果将它写成按旋转、缩放、平移三个分量的复合形式,则其代数式如下:

X= (x-x0)cosθ+(y-y0)sinθ+x0
Y=-(x-x0)sinθ+(y-y0)cosθ+y0


其示意图如下:

几种典型的仿射变换:

public static AffineTransform getTranslateInstance(double tx, double ty)

平移变换:将每一点移动到(x+tx, y+ty),变换矩阵为:
[ 1 0 tx ]
[ 0 1 ty ]
[ 0 0 1  ]
(译注:平移变换是一种“刚体变换”,rigid-body transformation,中学学过的物理,都知道啥叫“刚体”吧,就是不会产生形变的理想物体,平移当然不会改变二维图形的形状。同理,下面的“旋转变换”也是刚体变换,而“缩放”、“错切”都是会改变图形形状的。)


public static AffineTransform getScaleInstance(double sx, double sy)

缩放变换:将每一点的横坐标放大(缩小)至sx倍,纵坐标放大(缩小)至sy倍,变换矩阵为:
[ sx 0 0 ]
[ 0 sy 0 ]
[ 0 0 1  ]

public static AffineTransform getShearInstance(double shx, double shy)

剪切变换,变换矩阵为:
[ 1 shx 0 ]
[ shy 1 0 ]
[ 0 0 1 ]
相当于一个横向剪切与一个纵向剪切的复合
[ 1 0 0 ][ 1 shx 0 ]
[ shy 1 0 ][ 0 1 0 ]
[ 0 0 1 ][ 0 0 1 ]
(译注:“剪切变换”又称“错切变换”,指的是类似于四边形不稳定性那种性质,街边小商店那种铁拉门都见过吧?想象一下上面铁条构成的菱形拉动的过程,那就是“错切”的过程。)


public static AffineTransform getRotateInstance(double theta)

旋转变换:目标图形围绕原点顺时针旋转theta弧度,变换矩阵为:
[ cos(theta) -sin(theta) 0 ]
[ sin(theta) cos(theta) 0 ]
[ 0 0 1 ]


public static AffineTransform getRotateInstance(double theta, double x, double y)

旋转变换:目标图形以(x, y)为轴心顺时针旋转theta弧度,变换矩阵为:
[ cos(theta) -sin(theta) x-x*cos+y*sin]
[ sin(theta) cos(theta) y-x*sin-y*cos]
[ 0 0 1 ]
相当于两次平移变换与一次原点旋转变换的复合:
[1 0 -x][cos(theta) -sin(theta) 0][1 0 x]
[0 1 -y][sin(theta) cos(theta) 0][0 1 y]
[0 0 1 ][ 0 0 1][0 0 1]


转载自:http://hi.baidu.com/zhdhjhzzqzbcemq/item/2e992604268c3913acdc70c0

告别数据丢失焦虑:用Python手把手实现Reed-Solomon码(附完整代码) 本文详细介绍了如何使用Python实现Reed-Solomon纠错码(RS码),帮助开发者有效防止数据丢失。通过基础编解码实战、文件保护方案和高级性能优化技巧,读者可以轻松掌握这一前向纠错技术,应用于物联网、文件存储和网络传输等场景,提升数据可靠性。 阅读详情

相关推荐

技术解析:PETR如何通过3D位置编码革新多视角3D目标检测

本文深入解析了PETR模型如何通过创新的3D位置编码技术革新多视角3D目标检测。它摒弃了DETR3D复杂的投影采样机制,通过3D坐标生成器和编码器,将3D几何信息直接注入2D图像特征,构建出3D感知特征。该方法简化了流程,提升了模型对空间关系的理解能力与训练稳定性,为自动驾驶等领域的精准感知提供了新思路。

weixin_29079743的博客 212

仿射变换(Affine Transformation)原理及应用(1)

仿射变换(Affine Transformation)原理及应用 文章目录1 什么是仿射变换2 仿射变换数学表达3 仿射变换理解3.1 平移变换3.2 反射变换3.3 旋转变换3.4 opencv中的仿射矩阵 1 什么是仿射变换 仿射变换(Affine Transformation)其实是另外两种简单变换的叠加:一个是线性变换,一个是平移变换 仿射变换变化包括缩放(Scale、平移(tra...

Mingx9527 12万+

AI编码的“黑箱危机”终结者:OpenSpec如何让你的代码从“猜谜”变“契约”?

OpenSpec的真正价值,在于它将AI编码从"经验驱动"推向"契约驱动"——当人类与AI对"目标是什么"达成显式共识,编码就从"猜谜游戏"变成了"工程实现"。这种转变不仅提升效率,更重塑了开发者与AI的关系:AI从"替代者"回归"协作者",而人类则聚焦于"定义正确的事"而非"正确地做事"。对于开发者,OpenSpec提供了驾驭AI的缰绳;对于团队,它构建了协作的基石;对于行业,它预示着AI编码工业化的开端。

haolove527的专栏 1347

何为仿射变换(Affine Transformation)

仿射变换(Affine Transformation) Affine Transformation是一种二维坐标到二维坐标之间的线性变换,保持二维图形的“平直性”(译注:straightness,即变换后直线还是直线不会打弯,圆弧还是圆弧)和“平行性”(译注:parallelness,其实是指保二维图形间的相对位置关系不变,平行线还是平行线,相交直线的交角不变。)。仿射变换可以通过一系列的原子变

FuDesign2008的专栏 4638

Kettle下载与安装教程【保姆版】

Kettle简介 Kettle最早是一个开源的ETL工具,全称为KDE Extraction, Transportation, Transformation and Loading Environment。后来Kettle重命名为Pentaho Data Integration 。 它由Java开发,支持跨平台运行,其特性包括:支持100%无编码、拖拽方式开发ETL数据管道;可对接包括传统数据库、文件、大数据平台、接口、流数据等数据源;支持ETL数据管道加入机器学习算法。 主要功能 Pentaho D

weixin_43407520的博客 12万+

镜像电流源与比例电流源:原理、应用与性能优化

本文深入解析了镜像电流源与比例电流源的工作原理、核心应用与性能优化方法。镜像电流源利用匹配晶体管实现电流复制,是集成电路的基础;比例电流源通过发射极电阻实现电流缩放,应用更灵活。文章重点探讨了其作为有源负载提升放大器增益的关键应用,并分析了静态误差、输出阻抗和最小工作电压三大性能指标,最后介绍了威尔逊电流镜等进阶优化技术及实战设计要点。

dd012的博客 567

一文搞懂仿射变换

导读 在图像处理中,我们经常需要对图像进行各种操作如平移、缩放、旋转、翻转等,有时候我们还需要将图像投影到另一个平面来对图像做一些矫正,然而这些操作都与仿射变换和透视变换有着莫大的联系。通过本篇文章,你能够知道它们的实现原理以及如何应用它们,并且知道它们的适用场景。 仿射变换 仿射变换也称仿射投影,是指几何中,对一个向量空间进行线性变化并接上一个平移,变化为另一个向量空间。所以,仿射变换其实也就是...

修炼之路 2万+

PCIe链路均衡实战:从Preset调节到系数优化的完整指南(附Synopsy IP案例)

本文深入解析PCIe链路均衡技术,从Preset调节到系数优化的全流程实战指南,特别针对PCIe 3.0/4.0中的Recovery.Equalization状态进行详细说明。通过Synopsy IP案例,展示如何应对高速信号完整性挑战,优化前向反馈均衡(FFE)机制,提升系统性能。

peace的博客 1054

仿射变换(AffineTransform)与仿射矩阵

前言 仿射变换(Affine transformation),又称仿射映射,是指在几何中,对一个向量空间进行一次线性变换并接上一个平移,变换为另一个向量空间。 它是一种二维坐标到二维坐标间的线性变换,保持了二维图形的“平直性”(直线经过变换之后依然是直线)和“平行性”(二维图形之间的相对位置关系保持不变,平行线依然是平行线,且直线上点的位置顺序不变)。 任意的仿射变换都能表示成“乘以一个矩阵(线性变换),再加上一个向量 (平移) 的形式”。 仿射变换 仿射矩阵 逆仿射变换与其矩阵 参考资料 [1] 仿射变

TracelessLe的专栏 3万+

ADS与Cadence中Verilog-A文件的编译与调用实战指南

本文详细介绍了在ADS与Cadence平台中Verilog-A文件的编译与调用实战指南,涵盖开发环境配置、模型创建与编译、仿真设置技巧以及跨平台协作与调试等内容。通过具体案例和优化策略,帮助工程师高效完成混合信号仿真设计,提升电路建模与验证效率。

weixin_29196315的博客 495

Yolov8损失函数改进:MPDIoU新型边界框相似度度量,效果秒杀GIoU 、 DIoU 、CIoU 、 EIoU等 | ELSEVIER 2023

ELSEVIER 2023 MPDIoU新型边界框相似度度量助力yolov8,适用提升小目标、遮挡物性能提升

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 7772

仿射变换 Affine transformation

这个太重要了,我得再研究研究。并争取搞个code出来。这篇先来理论。 本文属转载。 变换模型是指根据待匹配图像与背景图像之间几何畸变的情况,所选择的能最佳拟合两幅图像之间变化的几何变换模型。可采用的变换模型有如下几种:刚性变换、仿射变换、透视变换和非线形变换等,如下图: 其中第三个的仿射变换就是我们这节要讨论的。 仿射变换(Affine Transformation) Affine ...

Arcobaleno 1992

128、点云配准与ICP:经典配准算法与深度学习配准

上周调试一台双臂协作机器人,左手持结构光相机扫描桌面上的随机堆叠工件,右手准备执行抓取。问题出在“对齐”这一步——相机扫描得到的点云和CAD模型点云之间差了大约15度的旋转,导致抓取姿态计算出来直接怼到桌面上。我第一反应是“ICP跑一下不就行了”,结果跑了三分钟,误差纹丝不动,甚至越迭代越发散。后来查了日志才发现,初始位姿给得太离谱,ICP直接掉进了局部最优。这个场景太典型了——很多人以为点云配准就是调个ICP库函数,实际工程里坑比想象中多得多。今天这篇笔记,咱们把点云配准这件事从头捋一遍。

sundong_81的博客 42

仿射变换(Affine Transformation)

转自:https://www.cnblogs.com/bnuvincent/p/6691189.html http://www.cnblogs.com/ghj1976/p/5199086.html 变换模型是指根据待匹配图像与背景图像之间几何畸变的情况,所选择的能最佳拟合两幅图像之间变化的几何变换模型。可采用的变换模型有如下几种:刚性变换、仿射变换、透视变换和非线形变换等...

weixin_30651273的博客 303

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

仿射变换(Affine transformation)

转载: 一个集合 XX 的仿射变换为: f(x)=Ax+b,x∈X它的几何意义是对一个图形进行: 缩放(Scale)、平移(transform)、旋转(rotate)、反射(reflection, 对图形照镜子)、错切(shear mapping,感觉像是一个图形的倒影) 或者它们的任意组合 维基百科中的一个图很好诠释了各种仿射变换: 仿射变换中集合中的一些性质保持不变: (1)凸性 (...

weixin_30825199的博客 753

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

从手写字符匹配开始,简要解释局部仿射变换(local affine transformation)

从手写字符匹配开始,简要解释局部仿射变换(local affine transformation) FesianXu 2020/09/07 at UESTC 前言 最近笔者看论文[1]的时候发现有个术语local affine transformation,也就是所谓的局部仿射变换,仿射变换笔者之前有过研究[2],还算是比较清楚,但是谈到什么是“局部”仿射变换,就没有头绪了。后面笔者查找资料[3]后,终于有所了解,因此简要笔记与此,希望对大家有所帮助。如有谬误,请联系指出,转载请联系...

机器学习杂货铺1号店 1909

affine transformation matrix 仿射变换矩阵 与 OpenGL

变换模型是指根据待匹配图像与背景图像之间几何畸变的情况,所选择的能最佳拟合两幅图像之间变化的几何变换模型。可采用的变换模型有如下几种:刚性变换、仿射变换、透视变换和非线形变换等,如下图: 参考: http://wenku.baidu.com/view/826a796027d3240c8447ef20.html   其中第三个的仿射变换就是我们这节要讨论的。 仿射变换(Affine Tra

Richad的博客 2634

汽车坐标系与全局坐标系的变换_从手写字符匹配开始简要解释局部仿射变换(local affine transformation)...

从手写字符匹配开始,简要解释局部仿射变换(local affine transformation) FesianXu 2020/09/07 at UESTC 前言最近笔者看论文[1]的时候发现有个术语local affine transformation,也就是所谓的局部仿射变换,仿射变换笔者之前有过研究[2],还算是比较清楚,但是谈到什么是“局部”仿射变换,就没有头绪了。后面...

weixin_39683163的博客 523

图像几何变换(geometric transformation)

1. imwarp B = imwarp(A,tform) demo I = imread('cameraman.tif'); tform = affine2d([1 0 0; .5 1 0; 0 0 1]); % x ⇒ x+0.5*y % y ⇒ y J = imwarp(I,tform); 转载于:https...

weixin_30814223的博客 258

什么是仿射变换

仿射变换(Affine Transformation)是一种几何变换,它是一组保持平直性和比例性的线性变换和平移的组合。简单来说,仿射变换会将直线映射为直线,保持线段之间的比例关系,但可能会改变图形的角度和大小。仿射变换广泛应用于计算机视觉、图像处理、深度学习等领域。例如,在图像旋转、缩放、平移、剪切等操作中,仿射变换是核心工具。

彬彬侠的博客 6464

仿射变换是什么

仿射变换(Affine Transformation)是一种二维几何变换,可以将平面上的一个图形通过线性变换和位移变换到另一个位置。仿射变换包括以下基本操作:平移、缩放、旋转、剪切和镜像。仿射变换保持了图形的“仿射性质”,即保持直线、平行线和比例关系。

m0_57236802的博客 1666

仿射变换介绍

仿射变换,又称仿射映射,是指在几何中,一个向量空间进行一次线性变换并接上一个平移,变换为另一个向量空间。

L_30629685的博客 1924

【CV & Unity】仿射变换原理

仿射原理的概念及在Unity以和机器学习CV方向的应用

zhangdroid的博客 1997

Java图像变换类 - AffineTransform

AffineTransform是J2SE中非常重要的专门处理2D图像仿射变换的类,尤其在游戏工具编写中经常会用到。 AffineTransform.getRotateInstance(double theta) 返回表示旋转变换的变换。以(0,0)为中心,旋转theta(角度制)顺时针方向 AffineTransform.getRotateInstance(double theta, doub

Michael_Hu 3819
上一篇: [转]计算机视觉、机器学习相关领域论文和源代码大集合--持续更新
下一篇: 每日学习单词9
Savitch
博客等级 码龄16年 84粉丝 130原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值