任务描述:
图为HALCON中附带的例图“particle”。图中为某种液体,里面悬浮了微小颗粒,请分析出液体中的颗粒。
案例分析:
图中存在两种类型的对象:大的明亮物体和亮度较低的小物体(颗粒)。图像整体上亮度分布不均匀,难以确定分割需要的全局阈值。先将大明亮物体等不需要检测的部分去除掉,再对图像做灰度动态阈值分割得到想要的内容。
Haclon代码:
read_image (Image, 'particle')
*对图像进行全局阈值分割
threshold (Image, Large, 110, 255)
*圆角膨胀
dilation_circle (Large, LargeDilation, 7.5)
*返回补充图像,即获得去除大斑点后的图像NotLarge
complement (LargeDilation, NotLarge)
*减去除了NotLarge图像,即去除大斑点后的图像,减少运算
reduce_domain (Image, NotLarge, ParticlesRed)
*平滑处理图像
mean_image (ParticlesRed, Mean, 31, 31)
*动态灰度阈值,其中Mean是参考图像,通过与ParticlesRed为原图,通过
*对比找到邻域确定阈值。
dyn_threshold (ParticlesRed, Mean, SmallRaw, 3, 'light')
*消除小区域(小于圆形结构元素)和光滑的边界地区
opening_circle (SmallRaw, Small, 2.5)
*显示联通区域
connection (Small, SmallConnection)