仿射变化

 

 

 算子

 

 

Halcon中几何变化

    图像

平移

dev_close_window ()
read_image (Image, 'printer_chip/printer_chip_01')
get_image_size (Image, Width, Height)
dev_open_window (0, 0, Width/3, Height/3, 'black', WindowHandle)
dev_display (Image)

**标准的矩阵
hom_mat2d_identity (HomMat2DIdentity)

**1  平移以左上角为原点 x y 都移动64个像素点,与角度没有关系

hom_mat2d_translate (HomMat2DIdentity, 64, 64, HomMat2DTranslate)
**第三个参数是最后一个矩阵结果
** 'false' 是否裁减多余的图片,左侧不会裁减,只会裁减右边的
affine_trans_image (Image, ImageAffineTrans, HomMat2DTranslate, 'constant', 'false')

**2  旋转** rad(90) 90度, 逆时针旋转,

***不会自适应界面
***不会改变图片大小
***Height/2 x 以图片的中心选择 如果是0 是以原点为旋转
***Width/2 y 以图片的中心选择 如果是0 是以原点为旋转
hom_mat2d_rotate (HomMat2DIdentity, rad(90), Height/2, Width/2, HomMat2DRotate)

** 第二种旋转 这种旋转好,会自适应界面
****以图像中心为旋转点
*****会改变图片大小,因为它要自适应界面
rotate_image (Image, ImageRotate, 90, 'constant')

** 第三种旋转 以x 对折一样
mirror_image (Image, ImageMirror, 'row')

**第三个参数是最后一个矩阵结果
** 'false' 是否裁减多余的图片,左侧不会裁减,只会裁减右边的

affine_trans_image (Image, ImageAffineTrans, HomMat2DRotate, 'constant', 'false')

3  缩放

***0.5 x 缩放比例
***0.5 y 缩放比例
***Height/2 x 以图片的中心选择 如果是0 是以原点为缩放,
***Width/2 y 以图片的中心选择 如果是0 是以原点为缩放,
hom_mat2d_scale (HomMat2DIdentity, 0.5, 0.5,Height/2, Width/2, HomMat2DScale)

**第三个参数是最后一个矩阵结果
** 'false' 是否裁减多余的图片,左侧不会裁减,只会裁减右边的

affine_trans_image (Image, ImageAffineTrans, HomMat2DScale, 'constant', 'false')

** 第二种缩放
zoom_image_factor (Image, ImageZoomed, 0.5, 0.5, 'constant')

 

4 斜切

**斜切 rad(45) 45度
*** x 以x为斜切点
***Height/2 x 以图片的中心选择 如果是0 是以原点为缩放,
***Width/2 y 以图片的中心选择 如果是0 是以原点为缩放,

hom_mat2d_slant (HomMat2DIdentity, rad(45), 'x', Height/2, Width/2, HomMat2DSlant)

**第三个参数是最后一个矩阵结果
** 'false' 是否裁减多余的图片,左侧不会裁减,只会裁减右边的

affine_trans_image (Image, ImageAffineTrans, HomMat2DSlant, 'constant', 'false')

5 综合运用

*** 综合运用 先缩放在旋转
hom_mat2d_scale (HomMat2DIdentity, 0.5, 0.5,Height/2, Width/2, HomMat2DScale)
** 第一个参数是上一个矩阵结果
hom_mat2d_rotate (HomMat2DScale, rad(45), Height/2, Width/2, HomMat2DRotate)
**第三个参数是最后一个矩阵结果
** 'false' 是否裁减多余的图片,左侧不会裁减,只会裁减右边的
affine_trans_image (Image, ImageAffineTrans, HomMat2DRotate, 'constant', 'false')

**第三个参数是最后一个矩阵结果
** 'false' 是否裁减多余的图片,左侧不会裁减,只会裁减右边的

affine_trans_image (Image, ImageAffineTrans, HomMat2DRotate, 'constant', 'false')

 

6 刚性变化  vector_angle_to_rigid   可以平移+旋转

***刚性变化
*** row col
**以原图中心为起始点--先平移 x 平移200 y平移200
**然后在新的中心旋转 45度
vector_angle_to_rigid (Height/2, Width/2, 0, Height/2+200, Width/2+200, rad(45), HomMat2D)
affine_trans_image (Image, ImageAffineTrans222, HomMat2D, 'constant', 'false')

 

 

区域

 

 

posted @ 2024-06-15 20:56  陌念  阅读(44)  评论(0)    收藏  举报