人工智能和计算机视觉(6)-二维几何变换

news/2024/7/21 5:26:34 标签: 计算机视觉, 人工智能, 图像处理

图像转换

图像转换无处不在。例如,模板匹配,形状匹配,图像搜索。图像转换是为了执行图像旋转,调整图像的位置或移动图像。

图像平移(translation)是用来将图像移动到一个新的位置。

旋转(Rotation)用于将图像按某一方向旋转,如顺时针或逆时针某种程度的旋转。

缩放(Scaling)或聚焦(zooming)是用来放大或缩小图像,需要指定要放大或缩小的图像的数量。

剪切(Shearing)是用来将图像扭曲成一个不同的形状或方向,围绕X或Y轴。

平移

图像的位置沿x轴(Tx)或y轴(Ty)移动。

当原坐标被指定为(x,y),而新的坐标是(x’,y’),其公式如下:
x ′ = x + T x y ′ = y + T y x^{'}=x+T_x \\ y^{'}=y+T_y x=x+Txy=y+Ty
如果我们用一个矩阵来表示平移 P’=P+T,那么我们就有:
$$
P^{‘}=\left[
\matrix{
x^{’}\
y^{'}
}
\right]
\quad

P=\left[
\matrix{
x\
y
}
\right]
\quad

T=\left[
\matrix{
T_x\
T_y
}
\right]
$$

旋转

以(0,0)为原点,(x, y)可以用距离r和角度 ϕ \phi ϕ来表示。

1

同理,新位置(x’,y’)也可以可以用距离r和角度 ϕ \phi ϕ来表示。

2

3

在原点以外的任何一点旋转图像都需要3个步骤。

1.将旋转点(xp, yp)移动到(0, 0),并且移动(x,y)到一个新的点(x’,y’)。

2.围绕原点进行旋转。

3.通过添加xp和yp移动到同一点。

围绕任何不是原点的支点进行旋转。
x ′ = [ ( x − x p ) c o s θ − ( y − y p ) s i n θ ] + x p y ′ = [ ( y − y p ) s i n θ + ( x − x p ) c o s θ ] + y p x^{'}=[(x-xp)cos\theta -(y-yp)sin\theta]+xp \\ y^{'}=[(y-yp)sin\theta +(x-xp)cos\theta]+yp x=[(xxp)cosθ(yyp)sinθ]+xpy=[(yyp)sinθ+(xxp)cosθ]+yp

缩放

缩放和放大图像可以通过以下方式进行使用缩放系数,包括Sx和Sy。用于放大和缩小图像分别用于沿x轴和y轴放大和缩小图像。

4

当固定点不在原点时,缩小和放大图像。

1.移动位置到原点。

2.围绕原点缩小或扩大。

3.移动到相同的固定点,具体如下:
x ′ = ( x − x f ) ⋅ S x + x f y ′ = ( y − y f ) ⋅ S y + y f x^{'}=(x-x_f)\cdot S_x + x_f \\ y^{'}=(y-y_f)\cdot S_y + y_f x=(xxf)Sx+xfy=(yyf)Sy+yf
缩放使用以下矩阵:

5

剪切

要调整图像扭曲的方向,包括x轴和y轴。

参考有两个位置:X和Y。这被称为笛卡尔坐标。它的缺点是,当转换多个时,图像转换矩阵的结果转换矩阵的结果将是加法的形式和乘法的矩阵。

齐次坐标系

6

参考链接:

Apply 2-D spatial transformation to image - MATLAB imtransform - MathWorks United Kingdom


http://www.niftyadmin.cn/n/1399208.html

相关文章

TensorLayer出现数据形状转换错误

参考链接: TensorLayer/tutorial_cifar10_cnn_static.py at master tensorlayer/TensorLayer (github.com) 1.错误部分 使用TensorLayer来进行CIFAR-10 数据集上的图像分类,直接运行源文件的时候出现了如下错误: InvalidArgumentError: In…

mozjpeg进行压缩时失败

参考链接: npm安装包时报错npm ERR! Failed at the gifsicle4.0.1 postinstall script - 半亩方塘 (bluepost.cn) (1条消息) mozjpeg 安装失败/Failed at the mozjpeg_imHere的博客-CSDN博客_mozjpeg npm install error 7.1.1 Issue #67 imagemin/mozjpeg-bin (gi…

尝试改善科研V2

参考链接: https://fulequn.github.io/2022/09/26/Article202209261/ https://www.xljsci.com/ https://apps.ankiweb.net/ https://www.explainpaper.com/ 1 从动机上促成科研 将科研这件事情分成准备工作、活动本身、活动的结果。 1.1 准备工作 准备工作十分简…

机制设计原理与应用课程总结

机制设计原理与应用课程 所有内容的目录如下: 1 机制设计的基础 ​ 1.1 简个 ​ 1.2 机制设计与博弈及优化的关系 ​ 1.3 机制设计的定义 ​ 1.4 机制设计的基础知识 ​ 1.5 拍卖机制的类别 ​ 1.6 设计目标 ​ 1.7 希望的属性限制条件 ​ 1.8 反向拍卖 …

【C++基础语法入门】1 C++初识

【C基础语法入门】1 C初识1.1 hello_world程序1.2注释1.3 变量1.4 常量1.5关键字1.6 标识符命名规则黑马程序员匠心之作|C教程从0到1入门编程 学习笔记 目标:对C有初步了解,能够有基础编程能力 案例:通讯录管理系统 1.1 hello_world程序 1.…

【C++基础语法入门】2 数据类型

【C基础语法入门】2 数据类型2.1 整型2.2 sizeof 关键字2.3 实型(浮点型)2.4 字符型2.5 转义字符2.6 字符串型2.7 布尔类型bool2.8 数据的输入黑马程序员匠心之作|C教程从0到1入门编程 学习笔记 目标:对C有初步了解,能够有基础编程…

【C++基础语法入门】3 运算符

【C基础语法入门】3 运算符3.1 算数运算符3.1.1 四则运算3.1.2 取模(取余)运算3.1.3 递增递减运算3.2 赋值运算符3.3 比较运算符3.3 逻辑运算符黑马程序员匠心之作|C教程从0到1入门编程学习笔记目标:对C有初步了解,能够有基础编程…

【C++基础语法入门】4 程序流程结构

【C基础语法入门】4 程序流程结构4.1 选择结构4.1.1 if语句4.1.2 三目运算符4.1.3 switch语句4.2 循环结构4.2.1 while循环语句4.2.2 do...while循环语句4.2.3 for循环语句4.2.4 嵌套循环4.3 跳转语句4.3.1 break语句4.3.2 continue语句4.3.3 goto语句黑马程序员匠心之作|C教程…