仿射变化


算子

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')
区域


浙公网安备 33010602011771号