Halcon 作业六 找出圆

作业描述

找出圆和被遮挡的圆

1. 代码如下:

* 此处是由halcon设置配置读取文件夹自动生成插入的代码
* Image Acquisition 01: Code generated by Image Acquisition 01
list_files('D:/MC_ws/第6次作业图像', ['files','follow_links'], ImageFiles)
tuple_regexp_select(ImageFiles, ['\\.(tif|tiff|gif|bmp|jpg|jpeg|jp2|png|pcx|pgm|ppm|pbm|xwd|ima|hobj)$','ignore_case'], ImageFiles)
for Index := 0 to |ImageFiles| - 1 by 1
    read_image (Image, ImageFiles[Index])
    * Image Acquisition 01: Do something
endfor
get_image_size(Image, Width, Height)
read_image(Image, ImageFiles[2])
*高斯滤波 

gauss_filter(Image, ImageGauss, 3) 
*二值化,可用灰度直方图进行可视化
threshold(ImageGauss, Region, 180, 255)
*对外边缘进行平滑处理,闭运算,此处开闭运算有疑惑,用过开运算感觉效果不好
closing_circle(Region,Regionclosing, 3.5)
*将不相连的区域都分割成单独的区域
connection(Regionclosing, ConnectedRegions)
*根据面积进行特征选择
select_shape(ConnectedRegions, SelectedRegions, 'area', 'and', 1000, 1000000)
*根据圆度进行选择
select_shape(SelectedRegions, SelectedRegions1, 'circularity', 'and', 0.2, 1)
*补全所有的圆
gen_contour_region_xld(SelectedRegions1, Contours, 'border')
shape_trans(SelectedRegions1, RegionTrans, 'outer_circle')
*找到圆心位置和面积

area_center(RegionTrans, Area, Row, Column)
*计算半径
d := 2*sqrt(Area/3.1415926)
dev_display(Image)
dev_display(SelectedRegions1)

2. 一些函数的用法

  • select_shape(Regions : SelectedRegions : Features, Operation, Min, Max : )1000, 1000000)
    根据特征值选择区域,其中
    第三个参数表示所需要筛选的具体特征。
    具体有:‘area’----面积;‘circularity’----圆度
    第四个参数:‘and’ ‘or’ 似乎是用来表示筛选的特征种类个数,只筛选一个可直接用’and’.
    第五个和第六个参数则分别是上限下限。
    参考资料:
    halcon 中 select_shape 算子 相关特征参数
    Halcon 算子 select_shape

  • gen_contour_region_xld(Regions : Contours : Mode : )
    如果区域是从分割操作中获得的,那么这个算子是有用的,但是要在它们的边界上执行更高层次的算子,例如多边形近似和平行线的提取。对于输入区域的每个连通分量,生成边界的闭合轮廓。
    参数Mode 可以取以下值:
    center边界像素的中心用作轮廓点
    border边界像素的外边界作为轮廓点
    border_holes除了输入区域的外边界,还可以得到所有孔的轮廓。
    通过以下区域外表,可以看出“border”和“center”两种模式的区别:
    在这里插入图片描述

上图单个框表示单个像素。
然后用“border”和“center”计算轮廓,分别得到如下两条轮廓:

在这里插入图片描述halcon gen_contour_region_xld函数介绍

  • shape_trans(Region : RegionTrans : Type : )
    函数作用:
    变换区域的形状
    参数Type的可选项解释如下:
    convex:凸包性
    ellipse:与输入区域有相同的矩和区域的椭圆
    outer_circle:最小外接圆
    inner_circle:最大内接圆
    rectangle1:平行于坐标轴的最小外接矩形
    rectangle2:最小外接矩形
    inner_rectangle1:平行于坐标轴的最大内接矩形
    inner_rectangle2:输入区域的骨架点拥有同输入区域的重心点最小的距离
    shape_trans(Region : RegionTrans : Type : )

相关知识

1.xld,Region、XLD、Polygon之间的互相转换(HALCON)
2.halcon学习笔记——Image,region,xld初步

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值