/triangle

Convert images to computer generated art using delaunay triangulation.

Primary LanguageGoMIT LicenseMIT

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

Sample image

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:

Sample_0 Sample_1 Sample_11 Sample_8

License

This project is under the MIT License. See the LICENSE file for the full license text.