Halcon例程学习笔记(2)—— Particle

其为分析液体中的成分,得出区域中的平均灰度和面积;

  1. 在液体二值图像中有几个亮斑,需要提前去除;

  2. 液体成分中灰度变化不明显,直接采用全局阈值处理效果不佳;

  3. 读取鼠标按键数值,并选择区域。

image.png

threshold (Image, Large, 110, 255)
* Dilate regions with a circular structuring element
dilation_circle (Large, LargeDilation, 7.5)

在初始化之后,采用全局阈值处理,选择较亮的区域。在选择了亮区域后进行了膨胀操作,扩大了其范围,更好的进一步去除了亮色区域。

image.png

complement (LargeDilation, NotLarge)
reduce_domain (Image, NotLarge, ParticlesRed)

通过取补集从整张图像中裁剪出没有亮色区域的部分。


从这里思考为什么不采用crop_domain, 从上一篇我们采用的 crop_part 为裁剪区域想起。

reduce_domain为获取特定区域Region位置的图像。但新获取的图像大小并没有发生变化,与原图像相同。

而crop_domain输出最小外接正矩形的图像,即指图像中有值的部分以外接正矩形的方式输出。

crop_part(Image : ImagePart : Row, Column, Width, Height : )是输出指定位置的矩形区域的图像。

mean_image (ParticlesRed, Mean, 31, 31)
* Segment the image using a local threshold
dyn_threshold (ParticlesRed, Mean, SmallRaw, 3, 'light')
opening_circle (SmallRaw, Small, 2.5)
connection (Small, SmallConnection)

动态阈值分割之前采用图像平滑操作,之后的图片存在一些噪声点,使用开操作去除较小的噪声点,

image.png

image.png


在获取成分图像后,首先定义按键值为1,设置一个while循环,当按键值不是1的时候跳出循环。使用get_mbutton (WindowID, Row, Column, Button)获取当前的鼠标左键点击的位置,选择我们所选的位置的区域select_region_point (SmallConnection, SmallSingle, Row, Column),并使用count_obj (SmallSingle, NumSingle)确保我们选中的为一个区域(当然在本例程中都是单个区域,即使将if(NumSingle == 1 )注释掉依旧能够正常运行)。


--------------------- 

作者:Lucas-zhang 

来源:CSDN 

原文:https://blog.csdn.net/qq_29600745/article/details/88717795 

版权声明:本文为博主原创文章,转载请附上博文链接!

本文出自勇哥的网站《少有人走的路》wwww.skcircle.com,转载请注明出处!讨论可扫码加群:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

会员中心
搜索
«    2024年4月    »
1234567
891011121314
15161718192021
22232425262728
2930
网站分类
标签列表
最新留言
    热门文章 | 热评文章 | 随机文章
文章归档
友情链接
  • 订阅本站的 RSS 2.0 新闻聚合
  • 扫描加本站机器视觉QQ群,验证答案为:halcon勇哥的机器视觉
  • 点击查阅微信群二维码
  • 扫描加勇哥的非标自动化群,验证答案:C#/C++/VB勇哥的非标自动化群
  • 扫描加站长微信:站长微信:abc496103864
  • 扫描加站长QQ:
  • 扫描赞赏本站:
  • 留言板:

Powered By Z-BlogPHP 1.7.2

Copyright Your skcircle.com Rights Reserved.

鄂ICP备18008319号


站长QQ:496103864 微信:abc496103864