刚性变换、仿射变换、透视变换和非线形变换 |
您所在的位置:网站首页 › 仿射变换包含哪些 › 刚性变换、仿射变换、透视变换和非线形变换 |
1. 几个变换的区别: 2) 齐次坐标 齐次坐标就是用N+1维来代表N维坐标 我们可以在一个2D笛卡尔坐标末尾加上一个额外的变量w来形成2D齐次坐标,因此,一个点(X,Y)在齐次坐标里面变成了(x,y,w),并且有 X = x/w Y = y/w 我们把齐次坐标转化为笛卡尔坐标的方法是前面n-1个坐标分量分别除以最后一个分量即可. 变换矩阵H: 平移变换是一种“刚体变换”,rigid-body transformation,就是不会产生形变的理想物体 b) 缩放 将每一点的横坐标放大(缩小)至sx倍,纵坐标放大(缩小)至sy倍,变换矩阵H为: c) 旋转 绕原点的二维旋转
缩放变换: x' = x * cos(theta) - y * sin(theta) y' = x * sin(theta) + y * cos(theta) 写成矩阵形式: [x'; y' ;1] = H * [x; y; 1] = [cos(theta), -sin(theta), 0; sin(theta), cos(theta), 0; 0, 0, 1] * [x; y; 1]平移, 缩放, 旋转组合: 旋转变换,目标图形以(x, y)为轴心顺时针旋转theta弧度,变换矩阵为: ![]() opencv实现的投射变换函数 cv2.getRotationMatrix2D(center, angle, scale) 变换矩阵为2x3的矩阵.![]() https://blog.csdn.net/weixin_40522801/article/details/106454622 2. cv2.findHomography() 变换矩阵为3x3的矩阵, 最后一个元素为1, 所以需要解8个未知数, 即需要4对点. 两者联系: 都用于计算单应矩阵,即解一个线性方程组。由于单应矩阵有8个未知数(3*3,其中第9个数为1),所以至少需要4个点(每个点-x,y,提供2个约束方程)。 两者区别: 1.计算方法不同:通过跟踪源码,发现getPerspectiveTransform用的是SVD分解,findHomography看不出是用什么方法, 但两者计算结果是一样的。 2.输入参数不同:getPerspectiveTransform只会拿前4个点去计算,findHomography则会拿一堆点(>=4)去计算(其是不断从一堆点中重复拿出4个点去计算出一个结果,再采用一些优化算法RANSAC/LMEDS去筛选出最优解)。所以, 结果可能存在随机性. |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |