《机器视觉算法与应用》第3章 机器视觉算法之模板匹配——学习笔记
文章目录3.11模板匹配3.11.1基于灰度值的模板匹配3.11.2使用图形金字塔进行匹配3.11.3基于灰度值的亚像素精度匹配3.11.4带旋转与缩放的模板匹配3.11.5可靠的模板匹配算法3.11模板匹配前面的章节中我们讨论了各种各样的技术,将这些技术合理组合就可以实现在一幅图像中搜索目标物体的算法。虽然从理论上讲使用这些技术可以用来搜索所有类型的物体,但对某种特殊类型的物体来说,实现一个可靠的识别算法是非常复杂的。
使用模板匹配可以应用在下面几种场合。首先,它可以用来实现完整性检测。完整性检测的目的是为了检测某个物体存在与否。另外模板匹配还可以用来做物体识别,也就是区分不同类型的物体。
3.11.1基于灰度值的模板匹配在这节中我们将分析最简单的一类模板匹配算法,这类算法基于模板与图像中最原始的灰度值进行匹配。我们上面巳经提到,模板匹配是通过计算模板与图像之间的相似度实现。
3.11.2使用图形金字塔进行匹配使用上述讨论的停止标准的情况下,在整个图像中计算相似度量也是一个非常耗时的工作。如果不使用停止标准,那么算法的复杂度为O(whn)其中ω和h是图像的宽和高,n是模板中点的数量。使用停止标准一般情况下可以提速的比例为一个常数,但是并不能改变算法复杂度。因此为了能够在图像中实时找到模板,有必要提出能够进一步提高搜索速度的方法。
3.11.3基于灰度值的亚像素精度匹配目前为止,我们通过匹配得到的模板位置为像素精度。这个位置是通过提取相似度量的局部最大值(SAD,SSD)或局部最小值(NCC)得到。为了使得到的模板位姿的准确度更高,可以提取亚像素精度的局部最小值或最大值。
我们只需要将在局部最小值或最大值附近3×3的邻域内的相似度量拟合为一个。然后求解得到该多项式的局部最大值或最小值。另外一种方法是在模板和图像灰度值之间使用最小二乘匹配。由于灰度值之间的最小二乘匹配会受光照变化的影响,因此必须为光照变化建立明确的模型,并且它们的参数必须在最小二乘法拟合中确定,从而使算法不受光照变化影响。
3.11.4带旋转与缩放的模板匹配前为止,我们将模板匹配限定为模板与图像中的目标物体方向与尺寸一致的情况,也就是说可能位姿的空间被限定为平移的空间。上面我们讨论到的相似度量方法只能够容忍图像中的目标物有很小的旋转和缩放。因此,如果图像中目标物体的方向或大小与模板中不同,那么该目标物体将不能被找到。如果我们希望处理更多类型的变换,例如刚性变换或相似变换,就必须更新匹配方法。为了简单起见,我们将只讨论存在旋转的情况,但这个方法也可以扩展到存在缩放的情况,甚至类似的广义变换。
3.11.5可靠的模板匹配算法很多年来,机器视觉应用中都选用上面讨论的模板匹配算法。然而,最近越来越多的应用中要求就算在目标物体由于遮挡或其他方式的干扰导致只有部分出现在图像中时也能找到模板的位置另外,甚至在目标物体本身存在大的干扰的情况下也能够找到目标物体的位置。这些干扰通常称为混乱。另外在图像中存在严重的非线性光照变化时,也应该能够找到目标物体。目前为止我们讨论的基于灰度值的模板匹配算法不能够处理这些类型的干扰。因此,这章节中剩余的部分我们将讨论几种其他的方法,使用这些方法可以在存在遮挡、棍乱和非线性光照变化的情况下找到目标物体。
边缘匹配算法中的一大类是基于模板边缘与图像边缘之间的距离。这些算法一般使用原始边缘点进行匹配。
机器视觉中Blob分析
一.概念在计算机视觉中的Blob(Binarylargeobject)是指图像中的具有相似颜色、纹理等特征所组成的一块连通区域,一般来说,该区域就是图像中的前景。
举例来说,假如现在有一块刚生产出来的玻璃,表面非常光滑,平整。如果这块玻璃上面没有瑕疵,那么,我们是检测不到“灰度突变”的;相反,如果在玻璃生产线上,由于种种原因,造成了玻璃上面有一个凸起的小泡、有一块黑斑、有一点裂缝。blob分析应用案例:纺织品的瑕疵检测,玻璃的瑕疵检测,机械零件表面缺陷检测,可乐瓶缺陷检测,药品胶囊缺陷检测等场合。
因此,Blob分析其实就是将图像二值化,分割得到前景和背景,然后进行连通区域检测以及面积、周长重心等特征的分析,从而得到Blob的过程。Blob分析就是对这一块连通区域进行几何分析得到一些重要的几何特征,例如:区域的面积、中心点坐标、质心坐标、最小外接矩形、主轴等。可以从背景中分离出目标,并可以计算出目标的数量、位置、形状、方向和大小,还可以提供相关斑点间的拓扑结构。
二.步骤
1.图像分割
将图像分离为目标像素和背景像素,初始分割之后一般需要进行形态学处理才能满足使用要求。常用分割方法:直接输入;硬阈值分割;软阈值分割。常用形态学处理:连通、膨胀、腐蚀、开操作、闭操作、顶帽变换、击中与不击中变换、交集、差异、骨架、边界等。
阈值分割又包括:
1)简单阈值分割threshold
适用范围:目标与背景之间存在灰度差(如果环境稳定,阈值可以在离线状态下一次确定)
2)动态阈值分割dyn_threshold
适用范围:背景不均一无法确定全局阈值、目标经常表现为比背景局部亮一些或者暗一些。这时候需要通过其领域来找到一个合适的阈值进行分割。确定其领域的方法是:通过一些平滑滤波算子来确定领域,例如mean_image或者binomial_filter
3)自动全局阈值方法bin_threshold
4)watersheds_threshold
2.Blob分析技术
去噪:图像的形态学处理,常见有:膨胀(dilate),腐蚀(erose),开操作(open),闭操作(close)。通性分析:将目标从像素级转换到连通分量级。特征值计算:对每个目标进行特征量计算,包括面积、周长、质心坐标等特征。场景描述:对场景中目标之间的拓扑关系进行描述。
如下图所示:左边是一副原始图片,右边彩线包围区域是是获取的Blob区域,每个区域中十字的位置是Blob分析所得的重心位置。