Halcon区域几何变换和仿射变换

  • Post author:
  • Post category:其他




一.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)
*根据256256这个坐标进行倒置
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”



版权声明:本文为qq_41234432原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。