假设我有这样的形状:
在我想画豆子的所有笑话都用完了之后,我想找到形状边框上的点。我知道可能有很多,因此可以接受它们之间的公平距离。
有这种需求的算法吗?还是软件?我想出的所有解决方案都涉及大量的手工工作,特别是如果我想绘制一个稍微不同的形状。
Stackoverflow的智慧,请帮助。
假设我有这样的形状:
在我想画豆子的所有笑话都用完了之后,我想找到形状边框上的点。我知道可能有很多,因此可以接受它们之间的公平距离。
有这种需求的算法吗?还是软件?我想出的所有解决方案都涉及大量的手工工作,特别是如果我想绘制一个稍微不同的形状。
Stackoverflow的智慧,请帮助。
您可以简单地水平和垂直扫描像素以查找颜色边界,或者,如果您想要更复杂和通用的解决方案,您可以例如使用gradient method
来检测边缘:
编辑
回答您的评论,图像只是一个包含像素值的二维数组。您可以测试每个像素并选择具有特定颜色的像素。像这样:
结果是您的边缘像素:
{{35, 107}, {35, 108}, {35, 109}, {35, 110}, {35, 111},
{35, 112}, {35, 113}, {35, 114}, {35, 115}, {35, 116},
{35, 117}, {35, 118}, {35, 119}, {35, 120}, {35, 121},
{36, 103}, {36, 104}, {36, 105}, {36, 106}, {36, 107}, etc....
听起来您正在寻找“矢量化”,或更准确地说是“位图矢量化”。如果您对位图进行矢量化,您将获得形状的矢量版本,这将为您提供所有边界坐标。
如果是这样,有许多可用的解决方案,包括 AutoTrace: http ://autotrace.sourceforge.net/