其为分析液体中的成分,得出区域中的平均灰度和面积;
在液体二值图像中有几个亮斑,需要提前去除;
液体成分中灰度变化不明显,直接采用全局阈值处理效果不佳;
读取鼠标按键数值,并选择区域。
threshold (Image, Large, 110, 255) * Dilate regions with a circular structuring element dilation_circle (Large, LargeDilation, 7.5)
在初始化之后,采用全局阈值处理,选择较亮的区域。在选择了亮区域后进行了膨胀操作,扩大了其范围,更好的进一步去除了亮色区域。
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)
动态阈值分割之前采用图像平滑操作,之后的图片存在一些噪声点,使用开操作去除较小的噪声点,
在获取成分图像后,首先定义按键值为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
版权声明:本文为博主原创文章,转载请附上博文链接!

