第二篇 CogBlobTool 斑点工具
文章目录
- [第二篇 CogBlobTool 斑点工具](#第二篇 CogBlobTool 斑点工具)
功能
- 检测图像中指定像素范围内由灰度值组成的斑点,并获取这些斑点的多种属性,如面积、周长、数量和坐标等。可以通过灰度形态学操作、条件筛选获得需要的斑点。
原理
- 图像分割:根据用户设置的阈值(灰度分界点),将图像的像素分割为斑点像素(像素权值为0)和背景像素亦称孔(像素权值为1)。
- 斑点分析:计算斑点的面积、周长、质心等特征参数,以及根据斑点的形状大小等特征进行过滤和分类
参数
阈值模式
硬阈值(固定)
- 定义一个像素值 (0~255)作为图像分割点,大于此值的为物体(斑点)像素,小于为背景像素。
-如下图,当设置为阈值设置为150时,大于150的是物体,小于150的是背景。
硬阈值(相对)
- 使用两组参数指定相对阈值,根据图像中希望工具作为尾像素处理的像素百分比来确定阈值。
硬阈值(动态)
- 根据输入图像的直方图来自动计算合适的阈值。
软阈值(固定)
- 在信号处理或图像处理中,采用一个固定的阈值来对信号或图像进行软阈值处理。
软阈值(相对)
- 通过指定要排除的尾像素和高尾像素的百分比以及柔软步骤的数量来计算低阈值和高阈值。
映射
- 某些类型的场景不能使用二值阈值技术进行分割(只有当斑点所有部分比背景区域对比更明显的时候二值阈值才有效)。像素映射精确指定哪些像素范围将被分配为斑点,那些像素范围被分配为背景像素,哪些像素范围被分配为边缘像素。
最小面积
- 设置一个像素值,默认为10,会过滤掉图像中小于这个值的区域
灰度形态学操作(对白色区域操作)
- 应用算子对像素的邻域进行操作,并改变区域形状的过程。通常在图像分割后对图像进一步处理,增强需要斑点的特征,减少干扰项的特征。
侵蚀(腐蚀)与扩大(膨胀)
- 8邻域算法实现腐蚀操作和膨胀操作,判断一个像素点跟周围几个像素点是否相同来判断腐蚀还是膨胀
- 侵蚀:减少或消除物体的特征,增加物体内部孔的厚度
- 扩大:减少或消除物体内部的孔洞,增加物体形状特征的厚度
打开与关闭
- 开运算
- 先侵蚀再扩大
- 消除细小毛刺/物体的小特征,保留物体内部的孔洞
- 闭运算
- 先扩大再侵蚀
- 消除物体内部的孔洞
垂直面 水平面 正方形
- 垂直面即对纵向进行操作
- 水平面即对横向进行操作
- 正方形即对整个进行操作
测得尺寸
-
过滤
- 包含
- 选中符合条件的斑点
- 排除
- 去除符合条件的斑点
- 包含
-
排序
- 根据选择的特征对斑点进行排序,默认降序
图像
名称 | 功能 |
---|---|
Current.InputImage | 为 Blob工具提供输入图像,此为InputImage |
LastRun.InputImage | 显示工具最后一次分析的图像 |
Current.Histogram | 显示关注区域中当前InputImage的直方图(如果有),斑点工具在创建检测记录时生成的 |
LastRun.Histogram | 显示工具所运行最后一个图像的关注区域中的直方图 |
LastRun.BlobImageUnfiltered | 显示由所提取的斑点数据生成的图像 |
LastRun.BlobImage | 显示由所提供的斑点数据生成的图像,不包括已过滤掉的斑点 |
- 一般调试时,选择LastRun.BlobImage图像并打开电子模式,可以实时反馈调整参数后的图像
使用步骤
- 添加斑点工具
- 传入图像
- 选择输出图像,设置为电子模式,便于实时展示调整参数后的图像
- 根据案例不同调整阈值分割区域,默认是整张图图像- 根据要筛选的图像部分,调整参数
- 根据需要进行过滤、排序,添加其他的斑点信息
常用结果集
- GetBlobs()
- Results.GetBlobs().Count : 匹配到的斑点的数量
- Results.GetBlobs().Item[i].CenterOfMassX,Results.GetBlobs().Item[i].CenterOfMassY: 斑点的质心坐标
- Results.GetBlobs().Item[i].Perimeter:斑点的周长
- Results.GetBlobs().Item[0].Area :斑点的面积
注意事项
什么时候使用斑点工具
- 二维物体图像
- 图像具有较高的对比度,低对比度的图像可能会导致边缘不清晰
- *要求尺度不变性和旋转不变性
- 旋转不变性:只要对特征定义了方向,然后在同一个方向上进行特征描述就可以实现旋转不变性。
- 尺度不变性:为了实现尺度不变性,需要给特征加上尺度因子。 在进行特征描述的时候,将尺度统一就可以实现尺度不变性了。