仿射变换

发布时间 2023-12-21 21:45:28作者: YC_Muck
1.平移 2.旋转 3.缩放 4.倾斜 5.翻转

仿射变换流程

1:获取特征点坐标、角度
2:计算仿射变换矩阵
3:对图像、区域、轮廓进行仿射变换
注:获取特征点坐标角度,除匹配和blob还有其它方法
只要能稳定的求出特征点即可

1.平移

hom_mat2d_identity (HomMat2DIdentity)
解释:定义一个对角为1的单位矩阵,它和任何矩阵相乘等于原矩阵本身
hom_mat2d_translate (HomMat2D, Tx, Ty, HomMat2DTranslate)·
功能:把平移添加到防射变换矩阵
HomMat2D(输入参数): 仿射变换矩阵-- HomMat2DIdentity
Tx(输入参数): 沿x轴方向平移的距离
Ty(输入参数): 沿y轴方向平移的距离
HomMat2DTranslate(输出参数): 输出变换矩阵

2.旋转

hom_mat2d_rotate( :: HomMat2D, Phi, Px, Py : HomMat2DRotate)
功能:把旋转角度添加到仿射变换矩阵
HomMat2D(输入参数): 仿射变换矩阵
Phi(输入参数):旋转角度(单位弧度
Px(输入参数): 变换的固定点行坐标。
固定点是指以该点为支撑进行仿射变换(这里是指围绕这点进行旋转)
Py:(输入参数): 变换的固定点列坐标
HomMat2DRotate(输出参数): 输出变换矩

3.缩放

hom_mat2d_scale( ::HomMat2D,Sx,Sy, Px, Py : HomMat2DScale)
功能:把缩放添加到仿射变换矩阵
HomMat2D(输入参数):仿射变换矩阵
Sx(输入参数):x轴方向的缩放因子
Sy(输入参数): y轴方向的缩放因子
Px(输入参数): 变换的固定点行坐标
Py(输入参数):变换的固定点列坐标
HomMat2DScale(输出参数): 输出变换矩阵
affine_trans_region (Region : RegionAffineTrans : HomMat2D, Interpolate :)
功能:对区域进行二维仿射变换(支持缩放、旋转、平移)
参数: Region (in):输入区域
RegionAffineTrans (out) : 仿射变换得到的区域
HomMat2D (in):仿射变换矩阵
nterpolate(in):插值算法 (constant,nearest_ neighbor) 默认值: nearest_neighbor
使用:
根据生成的变换矩阵执行仿射变换,执行仿射变换的算子通常有
affine_trans_image
affine_trans_region
affine_trans_contour_xld
affine_trans_point 2d
即不管对于图像、区域、XLD都可以执行仿射变换
 

4.移动旋转

vector_angle to_rigid(::Row1,Column1,Angle1,Row2,Column2,Angle2:HomMat2D
功能:根据点和角度计算刚性仿射变换矩阵,支持旋转和平移
Row1(输入参数):原始点行坐标
Column1(输入参数):原始点列坐标
Angle1(输入参数): 原始点角度
Row2(输入参数):变换的目的点行坐标
Column2(输入参数): 变换的目的点列坐标
Angle2(输入参数):变换的目的点角度
HomMat2D(输出参数): 输出仿射变换矩阵
 
基于原始点到目标点计算仿射变换矩阵