2-仿射变化与几何定位

1-halcon仿射变化主要使用两个函数

1、affine_trans_image:图像仿射变化
2、affine_trans_region:区域仿射变化

2-仿射变换矩阵

在halcon中求取仿射变换矩阵的方法包含两种:
一、对单位矩阵进行旋转、偏移和缩放

hom_mat2d_identity (HomMat2DIdentity)    生成单位矩阵
hom_mat2d_rotate (HomMat2DIdentity, -0.3, 256, 256, HomMat2DRotate)  对单位矩阵旋转
hom_mat2d_scale (HomMat2DRotate, 1.5, 1.5, 256, 256, HomMat2DScale)  对单位矩阵缩放
affine_trans_region (Region, RegionAffineTrans, HomMat2DScale, 'nearest_neighbor')

旋转、缩放和平移顺序无关、也可以多次使用
二、已知角度和旋转中心(不能进行缩放)

  orientation_region (zqb, Phi)
     area_center (RegionFillUp1, Area, Row, Column) 
     vector_angle_to_rigid (Row, Column, Phi, Row, Column, 0, HomMat2D)

通过vector_angle_to_rigid生成

3-旋转角度正负定义

在这里插入图片描述

逆时针为﹢,顺时针为-。

3-几何定位与放射示例

* Image Acquisition 02: Code generated by Image Acquisition 02
open_framegrabber ('DirectShow', 1, 1, 0, 0, 0, 0, 'default', 8, 'rgb', -1, 'false', 'default', '[0] FHD Camera', 0, -1, AcqHandle)
grab_image_start (AcqHandle, -1)
while (true)
    grab_image_async (Image, AcqHandle, -1)
    rgb1_to_gray (Image, GrayImage)
    
    threshold (GrayImage, Regions, 177, 255)
    opening_rectangle1 (Regions, RegionOpening, 10, 10)
    fill_up (RegionOpening, RegionFillUp1)
    shape_trans (RegionFillUp1, RegionTrans,'ellipse')
    shape_trans (RegionTrans,zqb,'rectangle2')
    orientation_region (zqb, Phi)
     area_center (RegionFillUp1, Area, Row, Column) 
     vector_angle_to_rigid (Row, Column, Phi, Row, Column, 0, HomMat2D)
     affine_trans_image (GrayImage, ImageAffineTrans, HomMat2D, 'constant', 'false')
     affine_trans_region (zqb, RegionAffineTrans, HomMat2D, 'nearest_neighbor')
     reduce_domain (ImageAffineTrans, RegionAffineTrans, ImageReduced)
     
*     orientation_region (RegionTrans, Phi)
*     area_center (RegionTrans, Area, Row, Column)
*     vector_angle_to_rigid (Row, Column, Phi, Row, Column, 0, HomMat2D)
*     affine_trans_region (RegionTrans, RegionAffineTrans, HomMat2D, 'nearest_neighbor')
*    affine_trans_image (GrayImage, ImageAffineTrans, HomMat2D, 'constant', 'false')
   
*     threshold (ImageAffineTrans, Regions1, 196, 254)
*     opening_rectangle1 (Regions1, RegionOpening1, 10, 10)
*     fill_up (RegionOpening1, RegionFillUp2)
*     shape_trans (RegionFillUp2, RegionTrans2,'rectangle1')
*     reduce_domain (ImageAffineTrans, RegionTrans2, ImageReduced)
    
*     fill_up (Regions, RegionFillUp)
*     orientation_region (RegionFillUp, Phi)
*     area_center (RegionFillUp, Area, Row, Column)
*     vector_angle_to_rigid (Row, Column, Phi, Row, Column, 0, HomMat2D)
    
    * affine_trans_region (RegionFillUp, RegionAffineTrans, HomMat2D, 'nearest_neighbor')
*       affine_trans_image (GrayImage, ImageAffineTrans, HomMat2D, 'constant', 'false')
    
endwhile
close_framegrabber (AcqHandle)

4-结果

1、初始照片
在这里插入图片描述
2、二值化
在这里插入图片描述
3、图形变化(求角度)
在这里插入图片描述
4、结果
在这里插入图片描述

5-总结

在halcon中,图像、区域和xld变量是有本质区别的,图像带有像素,可以进行图像和区域等所有操作;区域仅仅是图像上符合相关条件的坐标点集合,可以进行几何操作,但是不能进行图像操作。如何需要提取图像上的相关信息,最终还是要进行图像操作,区域操作可以获取相关的几何信息,比如旋转角度、目标图像的位置等。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值