Skip to content

About

No description, website, or topics provided.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Latest commit

 

History

33 Commits

Folders and files

Repository files navigation

ascii_image_manip


Overview


An image->ascii CPU renderer. The implementation uses image processing techniques in order to find edges and their angles. The AsciiFilter performs a Difference of Gaussians (DoG) and a Sobel filter in order to create edges, overlayed on a luminance to ascii map of the image. Since the only necessary transformation is the Sobel filter for its ability to find gradients, the NaiveAsciiFilter does not go through the DoG step and produces a similar result for certain images (usually portraits look good for both, anything else exponentially deteriorates naive results). See results in 'filter flicks' folder. There are limitations to each filter, and modifying parameters can help create a more aesthetic look.

Done from scratch in GoLang as a learning experience. With more optimization it could be used in real time at 40-60fps (theoretically, based on rudimentary benchmarks in benchmark.go excluding encoding and decoding time). Heavy inspiration from Acerola's GPU implementation.

Features:

  • Multiple individual filters in /transforms/ (difference of gaussians, sobel filter, xDoG, 1D separable and 2D gaussian blurs)
  • Dynamic image scaling
  • Colored and non-colored output
  • Concurrency/parallelization in sobel filter
  • Supports jpeg/jpg/png

Examples

Original Portrait from ascii_image_manip

w/ color: asciicolor

w/o color: No Color Image

About

No description, website, or topics provided.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages