仿射变换也称仿射投影,是指几何中,对一个向量空间进行线性变换并接上一个平移,变换为另一个向量空间。所以,仿射变换其实也就是将两个向量空间的进行变换。
仿射变换主要包括:平移,旋转,缩放,倾斜。
设有一个向量空间k k=(x,y),还有一个向量 j j=(x’,y'),如果想从向量k转换到j 则:j=k*w+b
上式可以拆分为: x’=x*w00+y*w01+b0
Y’=x*w10+y*w11+b1
转换成矩阵示意图
要进行仿射变换,必须先获取变换矩阵。要获取变换矩阵,必须先获取特征点坐标、角度等信息,几何匹配和blob是获取特征点的高效方法,除此之外还有其它方法,只要能稳定的求出特延点即可。
仿射变换流程
(1)获取特征点坐标、角度
(2)计算仿射变换矩阵
(3)对图像、区域、轮廓进行仿射变换
根据特征点、角度计算仿射变换矩阵
hom_mat2d_identity(:HomMat2Dldentity)
功能:产生仿射变换单位矩阵
hom_mat2d translate(::HomMat2D.Tx,Ty:HomMat2DTranslate)
功能:把平移添加到防射变换矩阵
HomMat2D:(输入参数)仿射变换矩阵
TX(输入参数):沿x轴方向平移的距离
Ty:输入参数):沿y轴方向平移的距离
HomMat2 DTranslate(输出参数):输出变换矩阵
hom_mat2d_rotate(::HomMat2D,Phi,Px.Py:HomMat2DRotate)
功能:把旋转角度添加到仿射变换矩阵
HomMat2D:(输入参数)仿射变换矩阵
Phi(输入参数):旋转角度(单位弧度)
Px(输入参数):变换的固定点行坐标。固定点是指以该点为支撑进行仿射变换(这里是指围绕这点进行旋转)
Py:(输入参数)变换的固定点列坐标
HomMat2 DRotate:(输出参数)输出变换矩阵
hom_mat2d_scale(::HomMat2D,Sx,Sy,Px,Py:HomMat2DScale)
功能:把缩放添加到仿射变换矩阵
HomMat2D(输入参数):仿射变换矩阵
Sx(输入参数):x轴方向的缩放因子
Sy(输入参数):y轴方向的缩放因子
PX(输入参数):变换的固定点行坐标
Py(输入参数):变换的固定点列坐标
HomMat2 DScale(输出参数):输出变换矩阵
hom mat2d slant(::HomMat2D,Theta,Axis,Px,Py:HomMat2DSlant)
功能:把斜切添加到防射变换矩阵
HomMat2D(输入参数:仿射变换矩阵
Theta(输入参数):斜切角度(单位:弧度)
Axs(输入参数):斜切的坐标轴。取值列表:X,Y
Px(输入参数):变换的固定点x坐标
Py(输入参数):变换的固定点y坐标
HomMat2 DSlant(输出参数):输出仿射变换矩阵
以上就是halcon中常用的仿射变换算子及其解释