概述
目标: 只用一套算子,找出多张图片中不同位置不同大小的杂质。
原图:
效果如下:
分析:
1.观察每张图片杂质的特征,比如位置,大小的不同,跟周围区域颜色的对比等等。
2.根据位置特征,发现位置都是在大白圆里面,可以先缩小区域,避免外面黑色区域的干扰。
3.根据大小,可以用select_shape里面的面积来筛选。
4.根据颜色,灰度值区域可以进行分割。
代码实现:
*窗口更新准备
dev_update_off()
dev_update_on()
dev_close_window()
dev_open_window(0, 0, 800, 800, 'black', WindowHandle)
*循环图片,目录是放图片的文件夹
list_files('D:裂片异物检测-检测出异常杂质',['files','follow_links'],ImageFiles)
tuple_regexp_select(ImageFiles,'.*', ImageFiles)
for imgIndex:=0 to |ImageFiles| -1 by 1
read_image(Image,ImageFiles[imgIndex])
*设置颜色
dev_set_color('red')
*用线条的形式显示区域
dev_set_draw('margin')
*裁剪出内部大圆
threshold(Image, Region1, 128, 255)
fill_up(Region1, RegionFillUp)
reduce_domain(Image, RegionFillUp, ImageReduced)
*根据面积筛选区域
threshold(ImageReduced, Region2, 30,120)
opening_circle(Region2, RegionOpening1, 0.5)
connection(RegionOpening1, ConnectedRegions1)
select_shape(ConnectedRegions1, SelectedRegions, 'area', 'and', 22, 1269)
fill_up(SelectedRegions, RegionFillUp1)
dev_set_color('green')
dev_set_draw('fill')
dev_display(RegionFillUp1)
dev_set_line_width(1)
set_display_font(WindowHandle, 16, 'mono', 'true', 'false')
*提示信息
disp_message(WindowHandle, '绿色部分是杂质', 'window', 12, 12, 'black', 'true')
stop()
endfor
有疑问可以留言一起讨论噢,我也是学习阶段,有更好的方法也欢迎提出来呀~
最后
以上就是活力翅膀为你收集整理的机器视觉halcon学习——杂质检测的全部内容,希望文章能够帮你解决机器视觉halcon学习——杂质检测所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复