▲ Triangle
Triangle is a tool to create image arts using the delaunay triangulation technique. It takes an image as input and it converts to abstract image composed of tiles of triangles.
The technique
- First the image is blured out to smothen the sharp pixel edges. The more blured an image is the more diffused the generated output will be.
- Second the resulted image is converted to grayscale mode.
- Then a sobel filter operator is applied on the grayscaled image to obtain the image edges. An optional threshold value is applied to filter out the representative pixels of the resulting image.
- Lastly we apply the delaunay algorithm on the pixels obtained from the previous step.
blur = tri.Stackblur(img, uint32(width), uint32(height), uint32(*blurRadius))
gray = tri.Grayscale(blur)
sobel = tri.SobelFilter(gray, float64(*sobelThreshold))
points = tri.GetEdgePoints(sobel, *pointsThreshold, *maxPoints)
triangles = delaunay.Init(width, height).Insert(points).GetTriangles()
Installation and usage
$ go get github.com/esimov/triangle/cmd/triangle
$ go install
Supported commands
$ triangle --help
The following flags are supported:
Flag | Default | Description |
---|---|---|
in |
n/a | Input file |
out |
n/a | Output file |
blur |
4 | Blur radius |
max |
2500 | Maximum number of points |
points |
20 | Points threshold |
sobel |
10 | Sobel filter threshold |
solid |
false | Solid line color |
wireframe |
0 | Wireframe mode (without,with,both) |
width |
1 | Wireframe line width |
Setting a lower points value, the resulted image will be more like a cubic painting.
Here are some examples you can experiment with:
$ triangle -in samples/clown_4.jpg -out output.png -wireframe=0 -max=3500 -width=2 -blur=2
$ triangle -in samples/clown_4.jpg -out output.png -wireframe=2 -max=5500 -width=1 -blur=10
Below are some of the generated images:
License
This project is under the MIT License. See the LICENSE file for the full license text.