600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > Halcon实现图像的仿射变换(平移 旋转 缩放 镜像 斜切)

Halcon实现图像的仿射变换(平移 旋转 缩放 镜像 斜切)

时间:2020-04-13 13:46:03

相关推荐

Halcon实现图像的仿射变换(平移 旋转 缩放 镜像 斜切)

用Halcon实现图像的仿射变换 - 平移、旋转、缩放、镜像、斜切

仿射变换仿射变换的主要流程: 数学推导原理仿射变换常用的算子 hom_mat(homogeneous Matrix 齐次矩阵)hom_mat2d_identityhom_mat2d_translate(平移)hom_mat2d_rotate(旋转)hom_mat2d_scale(缩放)hom_mat2d_slant(斜切)vector_angle_to_rigid(刚性仿射变换矩阵,支持旋转和平移)

初学图像处理,如有写的不正确的地方请多纠正

仿射变换

仿射变换有:仿射变换主要包括平移变换旋转变换缩放变换(也叫尺度变换)、倾斜变换(也叫错切变换、剪切变换、偏移变换)、翻转变换。有六个自由度。

要进行仿射变换,必须先获取变换矩阵。要获取变换矩阵,必须先获取特征点坐标、角度等信息,几何匹配和bolb是获取特征点的高效方法,除此之外还有其它方法,只要能稳定的求出特征点即可。

仿射变换的主要流程:

1:获取特征点坐标、角度。

2:计算仿射变换矩阵。

3:对图像、区域、轮廓进行仿射变换

数学推导原理

/weixin_41045657/article/details/113522054?spm=1001..3001.5501。

仿射变换常用的算子 hom_mat(homogeneous Matrix 齐次矩阵)

hom_mat2d_identity

hom_mat2d_identity (HomMat2DIdentity)

解释:定义一个对角为 1 的 单位矩阵,它和任何矩阵相乘等于原矩阵本身。

hom_mat2d_translate(平移)

hom_mat2d_translate (HomMat2DIdentity, Tx, Ty, HomMat2DTranslate)

功能:把平移添加到防射变换矩阵

HomMat2D(输入参数):仿射变换矩阵

Tx(输入参数):沿x轴方向平移的距离

Ty(输入参数):沿y轴方向平移的距离

HomMat2DTranslate(输出参数):输出变换矩阵

read_image (Image, 'C:/Users/Daniel大妞/Desktop/5.png')hom_mat2d_identity (HomMat2DIdentity)hom_mat2d_translate (HomMat2DIdentity, 300, 300, HomMat2DTranslate)affine_trans_image (Image, ImageAffineTrans, HomMat2DTranslate, 'constant', 'false')

效果

hom_mat2d_rotate(旋转)

hom_mat2d_rotate( : : HomMat2D, Phi, Px, Py : HomMat2DRotate)

功能:把旋转角度添加到仿射变换矩阵

HomMat2D(输入参数):仿射变换矩阵

Phi(输入参数):旋转角度(单位弧度)

Px(输入参数):变换的固定点行坐标。固定点是指以该点为支撑进行仿射变换 (这里是指围绕这点进行旋转)

Py:(输入参数):变换的固定点列坐标

HomMat2DRotate(输出参数):输出变换矩阵

read_image (Image, 'C:/Users/Daniel大妞/Desktop/5.png')hom_mat2d_identity (HomMat2DIdentity)* hom_mat2d_translate (HomMat2DIdentity, 300, 300, HomMat2DTranslate)hom_mat2d_rotate (HomMat2DIdentity, 0.78, 300, 300, HomMat2DRotate)affine_trans_image (Image, ImageAffineTrans, HomMat2DRotate, 'constant', 'false')

效果1(旋转坐标(0,0))

效果1(旋转坐标(300,300))

hom_mat2d_scale(缩放)

hom_mat2d_scale( : : HomMat2D, Sx, Sy, Px, Py : HomMat2DScale)

功能:把缩放添加到仿射变换矩阵

HomMat2D(输入参数):仿射变换矩阵

Sx(输入参数):x轴方向的缩放因子

Sy(输入参数):y轴方向的缩放因子

Px(输入参数):变换的固定点行坐标

Py(输入参数):变换的固定点列坐标

HomMat2DScale(输出参数):输出变换矩阵

read_image (Image, 'C:/Users/Daniel大妞/Desktop/5.png')hom_mat2d_identity (HomMat2DIdentity)* hom_mat2d_translate (HomMat2DIdentity, 300, 300, HomMat2DTranslate)* hom_mat2d_rotate (HomMat2DIdentity, 0.78, 300, 300, HomMat2DRotate)hom_mat2d_scale (HomMat2DIdentity, 0.5, 0.5, 0, 0, HomMat2DScale)affine_trans_image (Image, ImageAffineTrans, HomMat2DScale, 'constant', 'false')

效果

hom_mat2d_slant(斜切)

hom_mat2d_slant(::HomMat2D,Theta,Axis,Px,Py:HomMat2DSlant)

功能:把斜切添加到防射变换矩阵

HomMat2D(输入参数):仿射变换矩阵

Theta(输入参数):斜切角度(单位:弧度)

Axis(输入参数):斜切的坐标轴。取值列表:x,y

Px(输入参数):变换的固定点x坐标

Py(输入参数):变换的固定点y坐标

HomMat2DSlant(输出参数):输出仿射变换矩阵

read_image (Image, 'C:/Users/Daniel大妞/Desktop/5.png')hom_mat2d_identity (HomMat2DIdentity)* hom_mat2d_translate (HomMat2DIdentity, 300, 300, HomMat2DTranslate)* hom_mat2d_rotate (HomMat2DIdentity, 0.78, 300, 300, HomMat2DRotate)* hom_mat2d_scale (HomMat2DIdentity, 0.5, 0.5, 0, 0, HomMat2DScale)hom_mat2d_slant (HomMat2DIdentity, 0.52, 'y', 0, 0, HomMat2DSlant)affine_trans_image (Image, ImageAffineTrans, HomMat2DSlant, 'constant', 'false')

vector_angle_to_rigid(刚性仿射变换矩阵,支持旋转和平移)

vector_angle_to_rigid(::Row1,Column1,Angle1,Row2,Column2,Angle2:HomMat2D)

功能:根据点和角度计算刚性仿射变换矩阵,支持旋转和平移

Row1(输入参数):原始点行坐标

Column1(输入参数):原始点列坐标

Angle1(输入参数):原始点角度

Row2(输入参数):变换的目的点行坐标

Column2(输入参数):变换的目的点列坐标

Angle2(输入参数):变换的目的点角度

HomMat2D(输出参数):输出仿射变换矩阵

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。