Gwyddion – Free SPM (AFM, SNOM/NSOM, STM, MFM, …) data analysis software

User Influence Study Remarks – Monoatomic Silicon Step

This page summarises some thoughts on what works well and what might not work well in the analysis of similar scans. It is not a definitive guide, nor a standard procedure – please ask your nearest metrology institute or ISO committee if you need that.

The task (recapitulation)

Image to analyse

Sample data 1: Monoatomic silicon step

Description: Measurement on monoatomic silicon steps, with considerable interference effects, scanner bow and various local defects. The reported value should be the step height, determined by any Gwyddion function you consider suitable.

Note that the scanner was not calibrated (intentionally), so the correct value is not necessarily the silicon lattice spacing.

Reported value: Step height (single value, in nanometres).


The submitted values are displayed in the following random beehive plot (i.e. vertical positions of the dots help visualising the point density, they do not represent any quantity). Note that a few order-of-magnitude wrong outliers were excluded and attributed to misunderstanding, wrong units, etc.

Submitted values

In this case we do not know the correct value precisely. We had essentially two ways of obtaining a ‘correct’ value.

Either by assuming that the step height is exactly what the literature says and using the instrument calibration (known to us) to calculate the step height that should be read from the image. Or measuring the step ourselves from the image as well as we can.

The first method gives 0.317 nm. It is denoted by the grey bar in the graph.

The second method gives 0.32 nm.

The relative error can be up to 10 % in this case.


First a few remarks on the theoretical estimation of what value we should obtain from the image.

The silicon step sample, manufactured by Physikalisch Technische Bundesanstalt, Germany, was measured Icon microscope (Bruker). A default calibration of the instrument was used only, which leads to correction factor of 0.984 in the z-axis with the uncertainty of 1.2 %. If a lower uncertainty would be needed, a comparative measurement with a step height standard would be performed, or interferometer based device would be used which was not done in this case.

A reference value for the step height 0.312 ± 0.012 nm can be found in Dixon et al., Silicon single atom steps as AFM height standards, Proc. SPIE 4344, Metrology, Inspection, and Process Control for Microlithography XV, 157 (2001). By dividing it with the correction factor (i.e. performing the opposite of correcting the data) we arrive at the value 0.317 nm listed above.

Oldschool evaluation

The classic evaluation consists in taking profiles. So this was also done for reference.


Dimensions and Units

was used to recalibrate the data by multipkying them by the factor of 0.984. Note this is something you could not do (nor was expected to). So the result of this method needs to be compared to the reference step height.

Then Mask of Outliers and Remove Data Under Mask were used to remove the few bright spots on the sample and the mask was removed.

For row levelling

Align Rows

was used with the Median method.

Five profiles of length 2.5 µm and thickness of 20 px were taken using

Profile tool

across the step, preferably in the fast scanning axis direction, trying to avoid too much distortion by the image background.

Image with profiles taken

Graphs of all profiles taken

The graph function

Critical Dimension

was used to fit the step on every profile.

The resulting average value of all the profiles was 0.31. Uncertainty, obtained from fitting error and from average of the profiles was 0.09.

If the recalibration of the data had not been performed during the procedure (as you could not do this step not knowing the coefficient), the resulting value would have been only slightly different: 0.32 ± 0.09.

Screenshot of one profile fitting

Note that if a full uncertainty budget would be calculated, it would contain also some other systematic errors of the instrument and uncertainty of this particular measurement would be bigger.

Elegant evaluation

The task is certainly challenging, essentially it is a more difficult variant of the smooth artificial step image. Even though the step is much sharper, there are more artifiacts such as the high-frequency hum and slowly changing background, and the edge is curved. We would like to use the same approach, i.e. calculating column averages or medians and fit them. However, this requires the edge to be vertical.

First we need to see the edge. The default colour mapping makes it diffucult to see so we use

Colour Range tool

and set it to Automatic colour range with tail cut off which prevents the dots on the surface from influencing the mapping:

Image with automatic colour range

The next step is correction of row misalignment (or bow in the slow axis). The standard function is

Align Rows

and for a rough alignment several of the available methods are equally good. Using Median we obtain

Image after row alignment

Now we can finally extract the edge and make it vertical. And there is a function for that:

Straighten Path.

If you start complaining now that there was no such function in Gwyddion when you participated in the survey you are absolutely right. In fact, the function first appears in version 2.45 which has not even been released yet at the time of writing this. So consider this an advertisement. An alternative method that we used originally is described below.

We choose a suitable path along the edge:

Straighten Path dialogue screenshot

and obtain the following image

Image after straightening

Calculating column medians from the selected rectangle produces the following graph

Row/Column Statistics tool screenshot

which we fit using

Fit Function

choosing the Smooth bent step function, and obtain the following results:

Function Fit dialogue screenshot

Exclusive evaluation

Beside questions as whether the plateau around the step are sufficiently wide for correct step evaluation (which participants in the survey had no means to influence), the procedure in the preceding section has two other problems:

Hence after row alignment we deviate from the above procedure. First we get rid of the dots on the surface. This can be done using:

Mask of Disconnected

with suitable settings

Mask of Disconnected dialogue screenshot

Then we use the the

Mask Editor

and Grow the mask by a couple of pixels, ensuring the dots are well covered. Finally we interpolate the masked areas using

Remove Data Under Mask

and remove the mask, obtaining

Image after removal of dots

Now we have to mark the edge somehow. One option is using one of the edge detection functions but the high-frequency noise makes it difficult. The noise can be suppressed using 1D FFT Filtering, a denoising filter Gaussian filter in the Filters tool or other means. But that starts to sound complicated. Instead, we just use the mask editor tool again and draw a line along the edge:

Image after with mask on the edge

The mask does not have to be very precise because the step evaluation method copes well with wobbly edges. Now we extract the mask to a new data channel using

Extract Mask

and apply

Compensate Drift

to the extracted mask image. This is a trick.

Selecting search range of a single row makes the function follow the line closely. Of course, correcting the mask image is pointless, we need to correct the original data. This can be done by enabling the option Distribute which applies the same correction to all compatible channels.

The drift correction only shifts data in individual rows to the left and right. It never mixes data from different rows, which is why we chose it. It does not work well when the ‘drift’ is extremely large so the first attempt straightens nicely the lower part of the edge but keeps the upper part slanted:

Compensate Drift dialogue screenshot

This can be improved somewhat by repeating the correction. However, the step is too close to edge of usable data in the upper part anyway. Therefore we just select a reasonable area around the edge

Image after drift correction

and fit the column medians as before:

Function Fit dialogue screenshot

We obtained a similar value as before, though not same. Both procedures require significant user input. And although they are relatively robust and when a manual selection is made it can be quite apprioximate, it is possible to obtain values varying between approximately 0.31 and 0.33. This more or less corresponds to the estimated precision with which the step height can be obtained.

1.24 (yeti, 2016-03-23 22:07:46)
© David Nečas and Petr Klapetek

Home Download News Features Screenshots Documentation Communicate Participate Resources Applications Site Map

Valid XHTML 1.0 Valid CSS