我相信这里有两种方法:1)重做导致您现在拥有这些图像的二值化步骤;2)根据图像大小考虑不同的可能性。让我们关注给定问题的第二种方法。
在您的最小图像中,只有两个数字连接,并且仅在考虑 8 连接时才会发生。如果您将图像处理为 4 连接,则无需执行任何操作,因为没有两个连接的组件应该分开。这如下所示。只有在考虑 8 连通性时,才可以通过找到与另一个点相连的点来简单地获得正确的图像。在这种情况下,只有两个这样的点,通过删除它们,我们断开了两个数字“1”。
在您的其他图像中,情况不再如此。而且我没有一种简单的方法可以应用于它,可以应用于较小的图像而不会使它变得更糟。但是,实际上,我们可以考虑将两个图像放大到某个共同的大小,使用最近邻插值,这样我们就不会从二进制表示中移动。通过调整两个图像的大小,使其宽度等于 200,并保持纵横比,我们可以将以下形态学方法应用于它们。首先做一个细化:
现在,可以看出,形态分支点是连接您的数字的点(在最左边的数字“六”处还有另一个,将被处理)。我们可以提取这些分支点并使用 2*height+1 的垂直线(高度来自您的图像)应用形态闭合,因此无论该点在哪里,它的闭合都会产生一条完整的垂直线。由于您的图像不再那么小,这条线不需要是 1 点宽,实际上我考虑了一条 6 点宽的线。由于某些分支点在水平方向上很接近,因此此关闭操作会将它们连接在同一条垂直线上。如果一个分支点不靠近另一个分支点,那么执行侵蚀将删除一条垂直线。并且,通过这样做,我们消除了与左侧数字六相关的分支点。应用这些步骤后,我们得到以下左图。从中减去原始图像,我们得到右侧的图像。
如果我们将这些相同的步骤应用于“8011”图像,我们将得到与开始时完全相同的图像。但这仍然是好的,因为应用删除仅在 8 连通性中连接的点的简单方法,我们可以像以前一样获得分离的组件。