我有一个二进制图像,为简单起见,我们假设它是一条简单的直线:
00000000000000
00000000000000
00000000000000
11111111110000
00000000000000
00000000000000
00000000000000
我想将它扩展 2px。
为此,我通过两次迭代应用了膨胀,并且正如预期的那样:
00000000000000
11111111111100
11111111111100
11111111111100
11111111111100
11111111111100
00000000000000
然后,我的想法是简单地应用细化并将初始线延长两个像素。但相反,我得到了缩短的线条,可能是因为线条粗细:
00000000000000
10000000000000
10000000000000
11111111100000
10000000000000
10000000000000
00000000000000
然后我想用菱形结构足迹应用膨胀而不是 3x3 个(),但结果更糟 - 线被缩短了一个像素。
对于细化,我使用了 Zhang-Suen 算法和Guo-Hall 算法,我还尝试了 skimage 暴露的 Otsu 方法,得到了类似的结果。
有人可以告诉我细化算法的存在可以让我走向哪里,或者可能是不同的方法吗?
更新(以解决@marinus 评论):
如前所述,我喜欢将初始行延长 2px 并得到:
00000000000000
00000000000000
00000000000000
11111111111100
00000000000000
00000000000000
00000000000000
虽然我不能用我的细化方法,因为细化似乎是这样工作的:
因此,仅通过扩大初始线,我不可能通过细化来扩展它。