关于Halcon的离心机试管槽定位

上图就是将相机定位后,辅以打光在离心机正上方取像而成的。由图可知,离心机内部分为四块区域,四块区域内部又分为半径大小不一的试管槽若干个,本篇文章主要就是讨论如何从相机取得的这些图像中,通过一系列算法将试管槽是否存在试管进行判断。一、建模建模的目的就是为了方便离心机内部旋转各种不同角度后,所取得的图像进行信息判断。 为了增强模型的参照度,我们一般选取的图片必须具备原始性。如下图所示:为了方便进行图像
摘要由CSDN通过智能技术生成

这里写图片描述

上图就是将相机定位后,辅以打光在离心机正上方取像而成的。由图可知,离心机内部分为四块区域,四块区域内部又分为半径大小不一的试管槽若干个,本篇文章主要就是讨论如何从相机取得的这些图像中,通过一系列算法将试管槽是否存在试管进行判断。

一、建模

建模的目的就是为了方便离心机内部旋转各种不同角度后,所取得的图像进行信息判断。
为了增强模型的参照度,我们一般选取的图片必须具备原始性。如下图所示:

这里写图片描述

为了方便进行图像处理,我们需要先把图像分离出三基色,利用单色调图像进行处理。

decompose3 (Image, R, G, B)

分离效果如下图所示:

这里写图片描述

  1. 小试管槽区域的手动定位建模
draw_circle (WindowHandle, Row, Column, Radius)  //手动画小试管槽轮廓
gen_circle_contour_xld (ContCircle, Row, Column, Radius, 0, 6.28318, 'positive', 1)  //显示所画圆形轮廓,并建立XLD模型ContCircle
gen_circle (Circle, Row, Column, Radius+10)  //自动显示一个比所画圆形“轮廓”半径大10个像素的圆形“区域”
reduce_domain (R, Circle, ImageReduced)  //将圆形区域隐藏
create_shape_model_xld (ContCircle, 'auto', 0, 0, 'auto', 'auto', 'ignore_local_polarity', 5, ModelID)  //根据之前建立的XLD模型ContCircle创建小试管槽的模板
find_shape_model (ImageReduced, ModelID, 0, 0, 0.5, 1, 0.5, 'least_squares', 0, 0, Row1, Column1, Angle, Score)  //在大圆区域内查找1个小试管槽模板
find_shape_model (R, ModelID, 0, 0, 0.5, 18, 0.5, 'least_squares', 0, 0, Row2, Column2, Angle1, Score1)  //在图片R内查找18个小试管槽模板
dev_display_shape_matching_results (ModelID, 'red', Row2, Column2, Angle1, 1, 1, 0)  //显示查找到的小试管槽模板

小试管槽建模效果如下图所示:

这里写图片描述

  1. 大试管槽区域的手动定位建模(与小试管槽同理)
draw_circle (WindowHandle, Row3, Column3, Radius1)
gen_circle_contour
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值