假设我有这样的形状:
在我想要画豆子的所有笑话都用尽之后,我想找到形状边缘上的点。我知道可以有很多,所以它们之间的距离是可以接受的。
是否存在针对此类需求的算法?还是一个软件?我提出的所有解决方案都涉及大量的手工工作,特别是如果我想绘制略有不同的形状。
Stackoverflow智慧,请帮助。
答案 0 :(得分:6)
您可以直接水平和垂直扫描像素以查找颜色边界,或者,如果您想要更复杂和通用的解决方案,您可以使用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....
答案 1 :(得分:2)
听起来你正在寻找“矢量化”,或者更确切地说是“位图矢量化”。如果您对位图进行矢量化,您将获得形状的矢量版本,它将为您提供所有边界坐标。
如果有,可以使用多种解决方案,包括AutoTrace:http://autotrace.sourceforge.net/