【图像处理:平移,缩放,旋转等】仿射变换过程与仿射变换矩阵 | 您所在的位置:网站首页 › 镜像翻转功能是什么原理 › 【图像处理:平移,缩放,旋转等】仿射变换过程与仿射变换矩阵 |
遇到了一些情况需要将图片旋转一定角度使其相对来说是符合人类认知的形式【就是歪图转正】于是接触了处理图片的经典方式——仿射变换 定义:仿射变换的功能是从二维坐标到二维坐标之间的线性变换,且保持二维图形的“平直性”和“平行性”。仿射变换可以通过一系列的原子变换的复合来实现,包括平移,缩放,翻转,旋转和剪切。 1)图像的几何变换 对图像进行放大、缩小、旋转等操作,会改变原图中各区域的空间关系,这类操作就是图像的几何变换。 2)仿射变换 对原来的x和y坐标分别进行线性的几何变换,得到新的x和y,这种变换就是放射变换。 3)投影变换 4)极坐标变换 5)齐次坐标 在原坐标的基础上,引入第三个数值为1的坐标,这种表示方法就是齐次坐标。 6)仿射变换矩阵 仿射变换矩阵的最后一行均为(0,0,1)此形式,最后一个值为1。 平移(translation)和旋转(rotation) 顾名思义,两者的组合称之为 欧式变换(Euclidean transformation) 或 刚体变换(rigid transformation); 放缩(scaling) 可进一步分为 uniform scaling和non-uniform scaling,前者每个坐标轴放缩系数相同(各向同性),后者不同;如果放缩系数为负,则会叠加上反射(reflection)——可以看成是特殊的scaling; 刚体变换+uniform scaling 称之为,相似变换(similarity transformation),即平移+旋转+各向同性的放缩; 剪切变换(shear mapping) 将所有点沿某一指定方向成比例地平移 上图 简单来说,图像的本质可以看做一个三维矩阵,第一维为长度,第二维是宽度,第三维是通道数(RGB),如果一张图在python中是一个变量image,那么其长宽即width, height = image.shape[:2],即前两维度的表示方法。 对于图像矩阵中的每一个像素坐标(x,y),我们可以令其乘上一个矩阵,使所有像素坐标平移,旋转,缩放,翻转到处理后的图像新坐标上 对于每种操作的矩阵构造如下: 以(0,0)为中心进行放大和缩小 这里的放大和缩小不是指在物理空间中某一物体的放大和缩小。 二维空间坐标(x, y)以(0,0)为中心,在水平上缩放Sx倍,指的是变换后的坐标位置(x’,y’)离(0,0)的水平距离变为原坐标(x,y)离位置中心点的水平距离的Sx倍;在垂直方向上缩放Sy倍,指的是变换后的坐标位置(x’,y’)离(0,0)的垂直距离为原坐标(x,y)离位置中心的垂直距离的Sy倍。 用数学公式表示,(x’, 'y) = (Sx * x, Sy * y) 如果Sx>1,则表示在水平方向上放大;如果0 |
CopyRight 2018-2019 实验室设备网 版权所有 |