仿射变换的简单说明:
对于2D范围内,仿射变换即为2D范围内的平移和旋转变换的结合。
对于2D范围内的仿射变换,使用的是一个3*3的齐次矩阵。
有两种常见的仿射变换方法,两种仿射变换的对比如下:
一种是对轮廓进行仿射变换(方法一)
一种是对具体的2D坐标进行仿射变换(方法二)
分别如下:
两种仿射变换的方法:
仿射变换 - 方法一
//从点和角度计算刚性仿射变换
vector_angle_to_rigid
Row1:原始点的行坐标
Column1:原始点的列坐标
Angle1:原始点的角度
Row2:变换后点的行坐标
Column2:变换后点的列坐标
Angle2:变换后点的角度
HomMat2D:输出变换矩阵
//对XLD轮廓进行2D的任意仿射变换
affine_trans_contour_xld
Contours:输入XLD轮廓
ContoursAffinTrans:变换后的XLD轮廓
HomMat2D:输入变换矩阵
仿射变换 - 方法2
//生成2D变换的齐次变换矩阵(单位矩阵)
hom_mat2d_identity
HomMat2DIdentity:输出单位矩阵
//添加旋转变量到变换矩阵
hom_mat2d_rotate
HomMatD:2D齐次矩阵
Phi:旋转角度
Px:X坐标
Py:Y坐标
HomMat2DRotate:输出加上旋转变换后的矩阵
//添加平移变量到变换矩阵
hom_mat2d_translate
HomMatD:2D齐次矩阵
Phi:旋转角度
Px:X坐标
Py:Y坐标
HomMat2DTranslate:输出加上平移变换后的矩阵
//对点进行2D的仿射变换。
affine_trans_point_2d
HomMat2D:变换矩阵
Px:输入点的行坐标
Py:输入点的列坐标
Qx:输出点的行坐标
Qy:输出点的列坐标
更多halcon和六轴机械臂算法干货公众号: