开发者

Finding coordinates of points on the border of a shape

Let's say I have a shape like this:

Finding coordinates of points on the border of a shape

After all the jokes of me wanting to draw beans are exhausted, I want to find the points on the border of the shape. I know there can be many, so a fair distance between them is accepted.

Is there an algorithm for such a n开发者_StackOverflow社区eed? Or a software? All the solutions I came up with involve a lot of manual work, especially if I want to draw a slightly different shape.

Stackoverflow wisdom, please help.


You may simply scan the pixels horizontally and vertically to find color frontiers, or, if you want a more sophisticated and general solution, you may for example use the gradient method to detect edges:

Finding coordinates of points on the border of a shape

Edit

Answering your comment, the image is just a bi-dimensional array, containing pixel values. You can test each pixel and select those having a specific color. Like this:

Finding coordinates of points on the border of a shape

And the result are your edge pixels:

{{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....


It sounds like you're looking for "vectorization", or more precisely "bitmap vectorization". If you vectorize your bitmap, you'll get vector version of your shape, which will give you all the boundary coordinates.

If so, there are a number of solutions available, including AutoTrace: http://autotrace.sourceforge.net/

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜