Atom is a node-based image processing application. It provides a user-friendly front-end for creating nodes, dragging connections between them, and viewing previews of the image operation at each node. The front-end is written in C#/Gtk and the back-end is written in C++ using Magick++ for some operations and SWIG for the C# wrapper.

Atom also allows you to define image processing networks with an external markup file. This could be used, for example, to generate image processing networks from external code. Atom could then be called to run on images in batch using the generated network. Here is a one-page overview of the markup.

Evaluation of the node network happens in dependency order, and sets of nodes on the same dependency level are processed on individual threads. The UI stays fairly responsive, and multi-core processors should benefit as well.


Doing forward and inverse hough transforms on a pattern. One node blurs the transform before it's inverted, just for kicks.


Example of multi-image support between nodes.