Halcon区域几何变换和仿射变换
一.Halcon区域几何变换
1.move_region 平移
算子参数:
move_region(Region : RegionMoved : Row, Column : )
1.Region(输入要移动的区域)
2.RegionMoved(输出移动后区域)
3.Row(输入要移动区域的向量的行距离 point.y )
4.Column(输入要移动区域的向量的列距离 point.x)
实例:
dev_close_window ()
dev_open_window (0, 0, 512, 512, 'white', WindowID)
dev_set_color ('black')
dev_set_draw ('margin')
dev_clear_window ()
* Draw with the mouse an arbitrary region into the window
draw_region (Region, WindowID)
area_center (Region, Area, Row1, Column1)
Button := 1
while (Button == 1)
* 获取鼠标点击的坐标
get_mbutton (WindowID, Row, Column, Button)
*两个坐标相减得出要平移的距离
move_region (Region, RegionMoved, Row - Row1, Column - Column1)
endwhile
效果图:
2.zoom_region 缩放
算子参数:
zoom_region(Region : RegionZoom : ScaleWidth, ScaleHeight : )
1.Region(输入要缩放的区域)
2.RegionZoom(输出缩放后区域)
3.ScaleWidth(输入x 方向的要缩放的比例)
4.ScaleHeight(输入y 方向的要缩放的比例)
实例:
dev_close_window ()
dev_open_window (0, 0, 512, 512, 'white', WindowID)
dev_set_color ('black')
*画一个区域
draw_region (Region, WindowID)
*对图像进行放大两倍
zoom_region (Region, RegionZoom, 3, 3)
dev_clear_window ()
dev_set_draw ('margin')
dev_set_color ('red')
dev_display (Region)
dev_set_color ('green')
dev_display (RegionZoom)
效果图:
3.mirror_region 镜像
算子参数:
mirror_region(Region : RegionMirror : Mode, WidthHeight : )
1.Region(输入要镜像的区域)
2.RegionMirror(输出镜像后区域)
3.Mode(输入对称轴, ‘column‘ 或者 ‘row’)
4.WidthHeight(输入对称轴坐标的两倍,也就是窗口的宽或者高)
实例:
dev_close_window ()
dev_open_window (0, 0, 512, 512, 'white', WindowID)
dev_set_color ('black')
* Draw with the mouse an arbitrary region into the window
draw_region (Region, WindowID)
mirror_region (Region, RegionMirror1, 'row', 512)
mirror_region (Region, RegionMirror2, 'column', 512)
mirror_region (RegionMirror2, RegionMirror3, 'row', 512)
dev_clear_window ()
dev_set_draw ('margin')
dev_set_color ('red')
dev_display (Region)
dev_set_color ('green')
dev_display (RegionMirror1)
dev_set_color ('blue')
dev_display (RegionMirror2)
dev_set_color ('magenta')
dev_display (RegionMirror3)
效果图:
4.transpose_region 倒置
算子参数:
transpose_region(Region : Transposed : Row, Column : )
1.Region(输入要倒置的区域)
2.Transposed(输出倒置后区域)
3.Row(输入参考点的行坐标 point.y )
4.Column(输入参考点的列坐标 point.x )
实例:
dev_close_window ()
dev_open_window (0, 0, 512, 512, 'white', WindowID)
dev_set_color ('black')
* 自定义画一个区域
draw_region (Region, WindowID)
*根据256,256这个坐标进行倒置
transpose_region (Region, Transposed, 256, 256)
dev_clear_window ()
dev_set_draw ('margin')
dev_set_color ('red')
dev_display (Region)
dev_set_color ('green')
dev_display (Transposed)
效果图:
二.Halcon仿射变换
1.affine_trans_region(区域的任意变换)
算子说明:
affine_trans_region
对给出的区域应用任意仿射二维变换,即缩放、旋转、平移和倾斜(倾斜),并返回变换后的区域。
算子参数:
affine_trans_region(Region : RegionAffineTrans : HomMat2D, Interpolate : )
1.Region(输入要变换的区域)
2.RegionAffineTrans(输出转换后的区域)
3.HomMat2D(输入输入变换矩阵)
4.Interpolate(输入是否使用插值进行转换) 列表:‘constant’、‘nearest_neighbor’
2.hom_mat2d_identity(创建二位变换矩阵)
算子说明:
hom_mat2d_identity
生成当前描述相同二维变换 的齐次变换矩阵
算子参数:
hom_mat2d_identity( : : : HomMat2DIdentity)
1 .HomMat2DIdentity(输出变换矩阵)
3.hom_mat2d_translate(平移)
算子参数:
hom_mat2d_translate( : : HomMat2D, Tx, Ty : HomMat2DTranslate)
1.HomMat2D(输入变换矩阵)
2.Tx(输入沿 x 轴平移多少)
3.Ty(输入沿 y 轴平移多少)
4.HomMat2DTranslate(输出变换后矩阵)
4.hom_mat2d_scale(缩放)
算子参数:
hom_mat2d_scale( : : HomMat2D, Sx, Sy, Px, Py : HomMat2DScale)
1.HomMat2D(输入变换矩阵)
2.Sx(输入沿 x 轴的缩放比例)
3.Sy(输入沿 y轴的缩放比例)
4.Px(输入变换的固定点(x 坐标))
5.Py(输入变换的固定点(y 坐标))
6.HomMat2DScale(输出变换矩阵)
5.hom_mat2d_rotate(旋转 )
算子参数:
hom_mat2d_rotate( : : HomMat2D, Phi, Px, Py : HomMat2DRotate)
1.HomMat2D(输入输入变换矩阵)
2.Phi(输入旋转角度)
3.Px(输入变换的固定点(x 坐标))
4.Py(输入变换的固定点(y 坐标))
5.HomMat2DRotate(输出变换矩阵)
综合实例:
dev_close_window ()
dev_open_window (0, 0, 512, 512, 'white', WindowID)
dev_set_color ('black')
* Draw with the mouse an arbitrary region into the window
draw_region (Region, WindowID)
*根据当前区域创建矩阵
hom_mat2d_identity (HomMat2DIdentity)
*旋转
hom_mat2d_rotate (HomMat2DIdentity, -0.3, 256, 256, HomMat2DRotate)
*缩放
hom_mat2d_scale (HomMat2DRotate, 1.5, 1.5, 256, 256, HomMat2DScale)
*平移
hom_mat2d_translate (HomMat2DScale, 64, 64, HomMat2DTranslate)
affine_trans_region (Region, RegionAffineTrans, HomMat2DTranslate, 'nearest_neighbor')
dev_clear_window ()
dev_set_draw ('margin')
dev_set_color ('red')
dev_display (Region)
dev_set_color ('green')
dev_display (RegionAffineTrans)
图像效果:
6.vector_angle_to_rigid(刚性放射变换)
算子说明:
vector_angle_to_rigid
从点对应和两个对应角度计算刚性仿射变换,即由旋转和平移组成的变换,并将其作为齐次变换矩阵返回。
算子参数:
vector_angle_to_rigid( : : Row1, Column1, Angle1, Row2, Column2, Angle2 : HomMat2D)
1.Row1(输入原点的行坐标) point.y
2.Column1(输入原点的列坐标) point.x
3.Angle1(输入原点的角度)
4.Row2(输入变换点的行坐标) point.y
5.Column2(输入变换点的列坐标) point.x
6.Angle2(输入变换点的角度)
7.HomMat2D(输出输出变换矩阵)
7.affine_trans_image(扩展图像变换)
算子说明:
affine_trans_image
对给出的图像应用任意仿射二维变换,即缩放、旋转、平移和倾斜(倾斜),并返回变换后的图像
算子参数:
affine_trans_image(Image : ImageAffineTrans : HomMat2D, Interpolation, AdaptImageSize : )
1.Image(输入要变换的图像)
2.ImageAffineTrans(输出变换后图像)
3.HomMat2D(输入变换矩阵)
4.Interpolation(输入插值类型)值列表:‘bicubic’、‘bilinear’、‘constant’、‘nearest_neighbor’、‘weighted’
5.AdaptImageSize(输入是否调整结果图像的大小)值列表:“false”、“true”