35.2、仿射变换---计算仿射变换矩阵
在图像坐标空间进行仿射变换,经常使用第一(点、角度)和第二(两个以上的点)种方法,第三种方法(根据三个以上的坐标点)不但适用于图像坐标空间的仿射变换,还适用于畸变很小或者经过畸变矫正后的图像坐标空间和物理坐标空间的仿射变换(比如激光行业、装配行业等,可以适用这种方法来实现像素标定、坐标系标定)。这种方法侧重于实际应用,主要用在第二种场合,即像素坐标空间和物理坐标空间之间的仿射变换,在后续中再进行介绍。
一、根据特征点、角度计算仿射变换矩阵
1、hom_mat2d_identity( : : : HomMat2DIdentity)
功能:产生(定义)仿射变换矩阵
2、hom_mat2d_rotate( : : HomMat2D, Phi, Px, Py : HomMat2DRotate)
功能:把角度添加到仿射变换矩阵中
HomMat2D:输入由1中定义的的矩阵(因为是输入参数,所以要先定义)
Phi:输入角度
Px, Py:输入变换的固定点坐标,固定点是指以改点为支撑进行仿射变换(这里是指围绕这个点进行旋转)
HomMat2DRotate:输出带角度信息的仿射变换矩阵
3、hom_mat2d_scale( : : HomMat2D, Sx, Sy, Px, Py : HomMat2DScale)
功能:把缩放添加到仿射变换矩阵。
HomMat2D:输入仿射变换矩阵。
Sx, Sy:分别输入x、y方向的缩放因子(默认值为2即放大一倍)
HomMat2DScale:输出带缩放信息的仿射变换矩阵。
4、hom_mat2d_translate( : : HomMat2D, Tx, Ty : HomMat2DTranslate)
功能:把平移加到仿射变换矩阵
HomMat2D:输入仿射变换矩阵。
5、hom_mat2d_slant( : : HomMat2D, Theta, Axis, Px, Py : HomMat2DSlant)
功能:把斜切添加到仿射变换矩阵
HomMat2D:输入仿射变换矩阵
Theta:输入斜切角度(单位:弧度)
Axis:斜切的坐标轴。(取值列表:'x', 'y')
HomMat2DSlant:输出带斜切信息的仿射变换矩阵
6、vector_angle_to_rigid( : : Row1, Column1, Angle1, Row2, Column2, Angle2 : HomMat2D)
功能:根据点和角度计算刚性(不支持缩放)仿射变换矩阵,支持旋转和平移
Row1, Column1, Angle1:输入原始点坐标和角度
Row2, Column2, Angle2:输入变换目的的坐标和角度
HomMat2D:输出仿射变换矩阵
二、根据两个以上特征点计算仿射变换矩阵
1、vector_to_rigid( : : Px, Py, Qx, Qy : HomMat2D)
功能:根据两个以上点对计算刚性(不支持缩放)仿射变换矩阵,支持旋转和平移
HomMat2D:输出仿射变换矩阵
2、vector_to_similarity( : : Px, Py, Qx, Qy : HomMat2D)
功能:根据两个以上的点对计算相似仿射变换矩阵,支持平移、旋转、缩放
HomMat2D:输出仿射变换矩阵
三、根据三个以上特征点计算仿射变换矩阵
1、vector_to_hom_mat2d( : : Px, Py, Qx, Qy : HomMat2D)
功能:根据三个以上点对计算仿射变换矩阵,支持旋转、平移、缩放、斜切
HomMat2D:输出仿射变换矩阵
四、计算仿射变换参数
1、hom_mat2d_to_affine_par( : : HomMat2D : Sx, Sy, Phi, Theta, Tx, Ty)
功能:根据仿射变换矩阵(齐次二维变换矩阵)计算仿射变换参数
HomMat2D:输入仿射变换矩阵
Sx:输出x方向的缩放因子(如果从图像空间变换到物理空间,就是x方向的像素单位量)
Sy:输出y方向的缩放因子(如果从图像空间变换到物理空间,就是y方向的像素单位量)
Phi:输出旋转角度
Theta:输出斜切角度
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)