Features
Gwyddion is a modular multiplatform software for SPM data analysis. The
main idea behind Gwyddion development 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.
Data visualization and processing
Gwyddion main menu
The current version Gwyddion provides at least the following visualization
and processing functions (this list is updated occasionally):
- visualization: false colour representation with different types of mapping
-
shaded,
logarithmical,
gradient,
edge-detected,
and local contrast representation,
local rank transformation,
Canny lines,
zero crossing
- OpenGL 3D data display: false colour or material representation
- user-editable false colour gradients and OpenGL materials
- basic operations:
rotation,
flipping,
inversion,
data arithmetic,
cropping,
resampling,
binning,
thresholding,
wraping,
extending
- 2D levelling:
plane,
three-point,
facet,
polynomial background removal,
plane
- scan line corrections:
mean,
median,
trimmed mean,
median difference,
matching of flat segments,
polynomial,
levelling along user-defined lines
- value reading:
local value reading with slope and curvature measurement,
distance and angle measurement
- profile extraction with possible averaging in the orthogonal direction:
along scanning axes and
along arbitrary lines
- extraction of angularly averaged profiles with automated centring,
profiles from multiple images simultaneously,
good mean profile from repeated scanning of the same feature
- filtering:
mean,
median,
trimmed mean,
conservative denoise,
Kuwahara,
minimum,
maximum,
Gaussian,
simple sharpening,
k-th rank,
checker pattern removal
- alternative sequential filters:
opening,
closing
- statistical characteristics:
basic quantities Sa, Sq, mean, median, range, skew and kurtosis,
projected and surface area,
quick correlation length estimation,
entropy
- statistical distributions and histograms:
height and angle distributions,
2D slope distribution,
2D angle distribution,
Minkowski functionals,
area scale graph,
local range
- correlation functions and spectral densities:
1D autocorrelation,
2D autocorrelation,
1D height-height correlation (structure function),
1D power spectral density,
radial spectral density,
2D spectral density
- facet orientation
analysis and measurement
- statistical characterisation of areas
under arbitrary masks
- row/column statistical quantities
- ISO roughness parameter evaluation
- grain marking:
threshold-based,
Otsu's threshold,
watershed,
segmentation,
logistic regression,
based on edge detection
- grain measurement:
boundary, surface, volume, equivalent ellipses, inscribed and circumscribed circles, Martin diameter and more,
individual grain measurement
- grain property statistics:
summarisation,
statistics,
distributions,
parameter correlations
- grain filtering:
touching edges,
by arbitrary properties
- mask editing:
adding, removing and intersecting with rectangles and ellipses,
growing and shrinking,
filling holes,
extraction,
inversion
- mask combination
using logical operations
- basic morphological operations with masks:
erosion,
dilation,
opening,
closing,
thinning
- alternative sequential filters of masks:
opening,
closing
- Euclidean distance transform with masks
- integral transforms:
2D fast Fourier transform (FFT),
log-φ FFT representation,
2D continuous wavelet transform (CWT),
2D discrete wavelet transform (DWT)
- corrections based on integral transforms:
DWT denoising,
1D FFT filtering,
2D FFT filtering,
2D frequency splitting,
XY denoising
- fractal dimension analysis
- local data correction by interpolation of
bad spots,
individual masked regions
- marking of
global outliers and
local outliers
- Laplace and
fractal interpolation
- marking of
scars (strokes) and
inverted lines
- mutual cropping of non-intersecting parts of images
- automatic XY plane rotation correction
- affine distortion correction
- arbitrary polynomial deformation in XY plane
- deformation using a general displacement-field
- fast scan axis drift correction
- extraction of data along a spline path
- measurement of
lattice parameters,
step height in amphitheare/terrace structures,
global curvature
- general convolution filter with user-defined kernel
- image
convolution and
deconvolution
- merging,
immersion,
and stitching of images
- tip
modelling,
blind estimation,
dilation and erosion,
certainty map
- magnetic force microscopy (MFM) data
recalculation/conversion,
simulation,
field shifting
- transfer function
estimation and
fitting
- measurement simulation: PID loop, lateral force
- data processing using neural networks
- simple SEM image simulation
- artificial data generation using:
Fourier (frequency space) synthesis,
object placement,
fibre placement,
dynamic spherical particle simulation,
dynamic elongated particle simulation,
pileup of 3D shapes,
predefined patterns (ridges, holes, steps, amphitheatre),
columnar film growth simulation,
classic ballistic deposition,
wave interference,
randomized Voronoi/Delaunay lattices,
non-equilibrium Ising model,
diffusion-limited aggregation,
solution of coupled non-linear PDEs,
annealing of multi-component mixture,
fractional brownian motion,
approximation of phase separated structures,
tiling with avoidance
- addition of artificial
point and
line noise
- data modification to enforce given statistical distribution
- finding relation between two images
- graph curve
function fitting,
critical dimension determination
- manual measurementson graph curves
- graph curve
cutting,
alignment,
levelling,
logscale transformation,
- location of peaks in graph curves
- force-distance curve fitting
- statistical
quantities and
distributions for graph curves
- single point spectroscopy support
- volume data support, summarization and extraction of lower-dimensional data
- volume force-distance curve fitting
- XYZ data as native data
- regularisation of XYZ data to images and some rudimentary XYZ data processing
- curve maps, representing a set of curves in each pixel
- axis scale calibration
Features
3D data display with basic controls
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 dialogues remember 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 colour
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.
Many functions support OpenMP parallelisation and can utilise multithreaded
processing. This is the default in the program and can be enabled when
utilising Gwyddion libraries.
Image export example
Gwyddion supports about 140 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.
Modularity
Gwyddion module browser
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
development, do not hesitate to ask us.