7

假设我有这样的形状:

在此处输入图像描述

在我想画豆子的所有笑话都用完了之后,我想找到形状边框上的点。我知道可能有很多,因此可以接受它们之间的公平距离。

有这种需求的算法吗?还是软件?我想出的所有解决方案都涉及大量的手工工作,特别是如果我想绘制一个稍微不同的形状。

Stackoverflow的智慧,请帮助。

4

2 回答 2

8

您可以简单地水平和垂直扫描像素以查找颜色边界,或者,如果您想要更复杂和通用的解决方案,您可以例如使用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....
于 2011-02-07T21:10:36.193 回答
2

听起来您正在寻找“矢量化”,或更准确地说是“位图矢量化”。如果您对位图进行矢量化,您将获得形状的矢量版本,这将为您提供所有边界坐标。

如果是这样,有许多可用的解决方案,包括 AutoTrace: http ://autotrace.sourceforge.net/

于 2011-02-07T21:11:17.257 回答