我想找到一种可以在位图中找到断线或形状的算法。考虑一种情况,我有一个只有两种颜色的位图,背面和白色(涂色书中使用的图像),有一些曲线和线条应该相互连接,但由于一些扫描错误,白色位代替黑色的。我应该如何检测它们?(完成这项工作后,我想将位图转换为矢量文件。我想使用 potrace 算法)。
如果您有任何想法,请告诉我。
我想找到一种可以在位图中找到断线或形状的算法。考虑一种情况,我有一个只有两种颜色的位图,背面和白色(涂色书中使用的图像),有一些曲线和线条应该相互连接,但由于一些扫描错误,白色位代替黑色的。我应该如何检测它们?(完成这项工作后,我想将位图转换为矢量文件。我想使用 potrace 算法)。
如果您有任何想法,请告诉我。
这是一个简单的算法来修复小差距:
首先,使用一个过滤器,当它的八个相邻像素中的任何一个为黑色时,它会创建一个黑色像素。这将扩大您的总体轮廓。
接下来,使用细化过滤器去除多余的轮廓,但只留下填充的间隙。
有关一些过滤器和参数,请参阅本文:C# 中的图像处理实验室
最简单的方法是使用一种称为关闭的形态学技术。仅当线条中的间隙相对于不同线条彼此之间的接近程度而言非常小时,这才有效。
你如何选择结构元素来执行关闭也可以使性能更好或更差。
Wikipedia 文章非常理论化(或数学化),因此您可能想求助于 Google 或任何有关图像处理的书籍,以更好地解释它是如何完成的。
也许霍夫变换可以帮助你。奖励:您可以获得矢量文件的线条参数。