Question: I have an accumulation of points representing a body as you can see in the image below. From this data I want to generate a list of points or a curve, which is the envelope.

![ListPlot of the data](https://i.stack.imgur.com/h2Ewf.png)

The first idea was a convex hull, but the shape of the body is not convex.

![ConvexHull of the datapoints](https://i.stack.imgur.com/F4CpT.png)

Is there a way to extract the points at the border?

[click here for the data](https://dl.dropboxusercontent.com/u/104965234/data.txt)

Answer: 
One very simple basic approach is the following (I assume you already loaded the variable `spiel`)

```
With[{m = Normal@SparseArray[spiel -> 1]}, 
 boundary = Position[m - Erosion[m, 1, Padding -> 0], 1];
 ListPlot[{Position[m, 1], boundary}, PlotStyle -> {Gray, Red}]]

```

> 
> ![Mathematica graphics](https://i.stack.imgur.com/G5dq8.png)
> 
> 
>
This is not really direct answer to the question because the **data points are given**. But, I think, still it's fun to share image processing alternative solution.

```
img = Import@"http://i.stack.imgur.com/h2Ewf.png";
ii = CommonestFilter[img, 3]

```

![enter image description here](https://i.stack.imgur.com/7GkTY.png)

```
iii = DeleteSmallComponents@ Closing[ColorNegate@ii, 6] // ImageAdjust
iiii = Thinning@EdgeDetect[ContourDetect[iii]]

```

![enter image description here](https://i.stack.imgur.com/7kApu.png)

```
corners = ImageCorners[iiii, MaxFeatures -> 1000];
HighlightImage[img, corners]

```

![enter image description here](https://i.stack.imgur.com/sDRqp.png)