提到我之前的问题Check if a curve is closed
我想知道如何将曲线的厚度减小到单个像素。
例如,想象一下,如果我有曲线的这一部分,则每个像素都是一个绿色正方形:
Before - thickness of many pixels
我希望能够像这样转换它:
After - 1 pixel
(甚至是变体,只要延伸是连续的,就这样)
我的输入将是在黑色背景上的白色曲线的BufferedImage。
最佳答案
您正在寻找的算法家族称为骨架化或同位异化。
同质变薄是有条件的腐蚀,如果去除像素会破坏形貌,则不会去除像素。
骨骼化可以使用同位异化来实现,也可以采用其他方式。骨架化的结果是一条穿过对象中心的1像素粗线。
这些并不是简单的算法。我不会解释它是如何工作的。您需要开始使用具有图像处理功能的库。不要重新发明轮子。
关于java - 减少线的粗细,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51594294/