机器视觉——(一)halcon创建模板并用模板进行定位

本文介绍了如何利用Halcon库通过二值化、形态学操作提取感兴趣区域,创建模板,并应用于模板匹配定位。步骤包括图像读取、二值化处理、ROI区域选择、模板创建与保存,以及模板在新图像中的查找和仿射变换应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

halcon利用图片来创建模板可分为如下步骤。可以进行人工选取(不推荐),也可以使用二值化来提取感兴趣的区域(推荐)。

  1. 二值化图片。常用算子:threshold。
  2. 形态学操作,优化阈值二值化后的结果,便于计算连通区域。 常用算子:closing_circle、opening_circle、erosion类算子、dilation类算子。
  3. 提取感兴趣的区域。常用算子:connection、select_obj等选择区域的算子。
  4. 根据提取到的感兴趣的区域,剪裁原图像,生成模板图像。常用算子:reduce_domain。
  5. 标定模板参数。包括计算模板中心坐标、规定模板起始角度。常用算子:area_center
  6. 创建模板。常用算子:create_shape_model。
  7. 保存模板为msh格式。常用算子:write_shape_model。
**********************1.创建模板并保存*************************************
*读取图像
read_image (Image, 'images/1.bmp')
mean_image(Image,ImageMean,9,9)
*二值化
threshold (ImageMean, Region, 85, 255)
*开、闭运算、区域选择提取ROI区域
closing_circle(Region,Region_closing,3)
opening_circle(Region,Region_opening,7)
connection(Region_opening,Region_connection)
count_obj(Region_connection, num)
select_obj(Region_connection, Region_selected, 1)
closing_circle(Region_selected,ROI_region,7)
*提取出区域的图像,作为模板图像
reduce_domain (Image, ROI_region, Image_ROI_region)
write_image (Image_ROI_region, 'tiff',0,'Region.tiff')
*计算模板区域中心坐标
area_center (ROI_region, Area_model, Row_model, Column_model)
*规定模板ROI_region的可变角度范围0-360,旋转角度变化为0
create_shape_model(Image_ROI_region,'auto',rad(0), rad(360),rad(0),['none','no_pregeneration'],'ignore_global_polarity','auto','auto',ModleID)
*将创建的模板存成指定路径的文件
write_shape_model (ModleID, 'modle.shm')
stop()

 左图为样本图片,右图为提取到的模板区域。

创建好模板后,可以用模板匹配其他的图片并进行定位。定位步骤如下:

  1. 在图像中查找模板。常用算子:find_shape_model。
  2. 进行仿射变换。常用算子:vector_angle_to_rigid。
  3. 根据仿射变换的结果计算图像中匹配到的区域。常用算子:affine_trans_region。
  4. 根据匹配到的区域,剪裁图像,生成匹配结果。常用算子:reduce_domain。
    find_shape_model (Image_sample, WindowHandle_result, rad(0), rad(360), 0.8, 1, 0.5, 'least_squares', 0, 0.9, Row, Column, Angle, Score)
    Image_Row:=[Image_Row,Row]
    Image_Column:=[Image_Column,Column]
    Image_Angle:=[Image_Angle,Angle]
    Image_Score:=[Image_Score,Score]
    *对匹配到的中心与模板的中心求取映射关系:仿射变换 
    vector_angle_to_rigid(Row_model,Column_model,rad(0),Row,Column,Angle,HomMat2D)
    *根据映射关系求出模板对应的图像范围
    affine_trans_region(ROI_region,RegionAffineTrans,HomMat2D,'nearest_neighbor')
    *将检测到的区域(RegionAffineTrans)保存为图片
    reduce_domain(Image_sample,RegionAffineTrans,ResultReduced) 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值