【C++ & Opencv】【第卅八天】仿射变换

仿射矩阵其实并不复杂,它只是一个两行三列的矩阵,用它乘上点坐标(x,y),就能实现对点的伸缩、旋转、平移操作。
复杂的是怎样求仿射矩阵。
下面这篇文章讲的是基本的仿射变换。
感谢原博主(似乎我和原博主是同届毕业哈):https://blog.csdn.net/windowsyun/article/details/78158747

什么是仿射变换?
仿射变换就是图像的线性变换加上平移,用一幅图表示,就是
在这里插入图片描述
由 image1 到 image2 的转换经过了三个操作

 1.旋转 (线性变换) 
 2.缩放操作(线性变换)
 3.平移 (向量加)

如果没有了第3个平移的操作,那它就是线性变换。前两个笔记已经整理了图像的旋转、缩放和平移的各个方法,接下来会介绍仿射变换的矩阵表示和使用方法。

放射变化的矩阵形式

图像的变换要对图像的每一个像素点进行操作,假设其中的一个像素点的坐标是(x,y),我们用矩阵形式表示:在这里插入图片描述
我们通常使用 2 x 3 矩阵来表示仿射变换。

在这里插入图片描述

矩阵 A、B 就是变换矩阵

经过仿射变换后的点的矩阵坐标是T,我们已经知道放射变换就是线性变换加上平移,用矩阵表示的话就是
在这里插入图片描述
也可以写成
在这里插入图片描述
计算可得
在这里插入图片描述
其中, [a00,a01;a10,a11]^T 这个矩阵,就是线性变换矩阵,即保持原点不变,对图像实现缩放、旋转操作,关于这一点可以看视频:https://www.bilibili.com/video/av6731067/?p=4 (看P4课)
而 [b00;b10] 实现的是对图像(x,y)方向的平移。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值