Gwyddion is a modular multiplatform software for SPM data analysis. The main idea behind Gwyddion developement is to provide modular program for height field and image data processing and analysis that can be easily extended by modules and plug-ins. Moreover, the status of free software enables to provide source codes to developers and users, which makes the further program improvement easier.

The current version Gwyddion provides at least the following visualization and processing functions (this list is updated occasionally):

- visualization: false color representation with different types of mapping
- shaded, logarithmical, gradient- and edge-detected, local contrast representation, local rank transformation, Canny lines
- OpenGL 3D data display: false color or material representation
- easily editable color maps and OpenGL materials
- basic operations: rotation, flipping, inversion, data arithmetic, crop, resampling, thresholding
- 2D leveling: plane, three-point, facet, polynomial background removal
- scan line levelling: mean, median, median difference, matching of flat segments, levelling along user-defined lines
- value reading, distance and angle measurement
- profile extraction, with possible averaging in orthogonal direction
- extraction of angluarly averaged profiles with automated centering
- global curvature radii evaluation
- filtering: mean, median, conservative denoise, Kuwahara, minimum, maximum, checker pattern removal
- morphological filtering: erosion, dilation, opening, closing, alternative sequential filters
- general convolution filter with user-defined kernel
- statistical characteristics: Sa, Sq, mean, median, range, skew, kurtosis, projected and surface area, entropy, inclination
- statistical distributions and histograms: 1D and 2D correlation functions, PSDF, 1D and 2D angular distributions, Minkowski functionals, local range, facet orientation analysis
- statistical characterisation of areas under arbitrary masks
- row/column statistical quantities plots
- ISO roughness parameter evaluation
- grains: threshold marking and unmarking, watershed marking, or based on edge-detection, Otsu's thresholding
- grain statistics: overall and distributions of size, height, area, volume, boundary length, bounding dimensions, slope, curvature, inscribed and excscribed circles
- intergral transforms: 2D FFT, 2D continuous wavelet transform (CWT), 2D discrete wavelet transform (DWT), wavelet anisotropy detection, radial FFT profile, log-phi PSDF
- fractal dimension analysis
- data correction: manual removal of bad spots, global and local outlier marking, scar marking, several line correction methods (median, modus)
- removal of data under arbitrary mask using Laplace or fractal interpolation
- mutual cropping of non-intersecting parts of images
- automatic
`xy`plane rotation correction - affine distortion correction
- extraction of data along a spline path
- arbitrary polynomial deformation on
`xy`plane - measurement of lattice parameters
- 1D and 2D FFT filtering
- fast scan axis drift correction
- mask editting: adding, removing or intersecting with rectangles and ellipses, inversion, extraction, expansion, shrinking
- mask combination using logical operations and morphological operations with masks
- simple graph function fitting, critical dimension determination
- manual measurements on graph curves
- graph curve cutting, alignment and levelling
- location of peaks in graph curves
- force-distance curve fitting
- volume data support, summarization and extraction of lower-dimensional data
- volume force-distance curve fitting
- XYZ data as native data
- regularisaton of XYZ data to images and some rudimentary XYZ data processing
- axis scale callibration
- merging and immersion of images
- tip modelling, blind estimation, dilation and erosion
- measurement simulation: PID loop, lateral force
- data processing using neural networks
- simple SEM image simulation
- artificial data generation using Fourier synthesis, object placement, noise and pattern generation, particle deposition, ballistic deposition, wave interference, randomized Voronoi/Delaunay lattices, non-equilibrium Ising model
- data modification to enforce given statistical distribution

Thanks to the Free Software/Open Source nature of Gwyddion, all formulas, methods and algorithms are public and open. Anyone wishing to study or compare the fine calculation details that are beyond the scope of the user guide can read the actual implementation.

All calculations are performed in double precision, and Gwyddion native data format (.gwy) stores data in double precision too. Under normal circumstances, no information is ever lost due to the limited precision or range of values. The Gwyddion data format can contain an arbitrary number of images, graphs, spectra or volume data.

Gwyddion uses a fairly general physical unit system, there are no built-in limitations on the types of physical quantities data (and lateral dimensions) can represent. Units of slopes, areas, volumes, and other derived quantities are correctly calculated. SI unit system is used whenever possible.

Tools and other dialogs remeber their parameters, not only between tool invocations within one session, but also across sessions. Gwyddion native file format (.gwy) supports saving all data specific settings: false color palette, masks, presentations, selections, associated 3D view parameters, graphs associated with that data and their settings, etc.

Most Gwyddion library functions are available in the Python interface pygwy. Gwyddion can be extended by file and processing modules written in Python.

Gwyddion is well integrated to free desktop environments such as GNOME, XFce or KDE, including e.g. menus, file type associations and automated SPM file thumbnailing. Certain integration to other desktop environments also exists, although not to such level.

Gwyddion supports about 100 microscopy and image formats, namely for reading. Several formats can be also written. An up to date complete list of supported file formats is present in the user guide.

We would like to support as many AFM, STM, …, profilometer and general height-field formats as possible, of course. If you want your own format to be supported, please read the file format situation description.

The data processing abilities depend on loaded modules abilities. There are already quite a few modules present in the package. However it is possible to add more data processing capabilities to your Gwyddion installation simply by installing new data processing modules, even from third parties.

In a similar way, you can write your own modules, test them on your Gwyddion installation and then send them to other Gwyddion users.

The same statements are valid also for plug-ins that represent other way how to improve Gwyddion. Writing plug-ins can be little bit easier (you can use any programming language, for example). However, you can not use existing Gwyddion data processing functions and widgets when writing plug-ins.

There is documentation on module and plug-in writing available as a part of libgwymodule documentation, sample plug-ins in C/C++, Perl, Python, Ruby, and Pascal are distributed directly with Gwyddion source code, and there is also a sample standalone module available.

An on-line version of module browser is available, in two forms: dynamic, with description pop-ups (needs a modern WWW browser) and a plain expanded table.

If you have any problems or questions concerning module or plug-in developement, do not hesitate to ask us.

1.69 (yeti, 2016-03-26 16:52:51)

© David Nečas and Petr Klapetek