Cortical Thickness Mapping

Stradwin can estimate the thickness of the cortex of a bone surface and display this as a colour wash mapped to the surface in 3D, using the technique described in the publications list. This is only possible with CT data which has been loaded from a DICOM or image file.

This measurement can either be performed interactively at user-controlled locations in the CT data set, or automatically on a previously defined 3D surface within the CT data. It relies on an estimate of what the expected CT value of the cortex would be if the CT imaging process had not blurred the data at all. This estimate can either be manually entered (for instance by looking at CT values for very thick cortices), or automatically estimated from the data.

Each cortical thickness estimate is calculated by looking at CT values along a line through the CT data. The first slider on this task page controls the length of this line: it should be approximately three times the thickness of the thickest cortex you wish to measure. After this there are '+inner' and '+outer' checkboxes: tick these if you want to allow for an additional bone surface either just outside or just inside the cortex you wish to measure. These also enable the measurement of joint space (between the outer cortical surface and a nearby outer bone surface) or large pore space (between the inner cortical surface and a nearby inner bone surface).

Following this there is a checkbox which allows Stradwin to use separate blurring values for the endocortical and periosteal surfaces: this will make the algorithm run much slower, however it allows some estimation of the effect of porosity local to each of these surfaces.

The following boxes can be used to fix the cortical CT value and the width of the CT blur. If you enter a number in either of these boxes and press the return key, the boxes will become white and this number will be fixed. If you delete the contents of either box and press the return key, the boxes will become grey and the value will be calculated dynamically by the cortical thickness algorithm. For cortical thickness estimation as outlined in the reference above, the cortical density (HU) should be defined, and the Gauss FWHM blur left blank. If both boxes are blank, cortical thickness estimation will be performed using the Full-Width Half-Maximum (FWHM) method.

If you leave the Gauss FWHM blur box blank, Stradwin will report the FWHM blur at each surface (periosteal and endocortical). These will only be independent if you have also selected the 'separate blur' checkbox. If you set the Gauss FWHM blur to a specific value, Stradwin will attempt to re-interpret each blur as an equivalent pore width (in mm) at each surface.

Alternatively, if there is currently a threshold selected in the Draw task page, so that some data regions are displayed in magenta, cortical thickness will be measured on the basis of this threshold, not using the algorithm described above.

During thickness estimation, the thickness visualisation page displays the results of the estimation procedure at each location.

Interactive thickness estimation

If the thickness task page is visible, the measure tool can be used to define the location for which a cortical thickness estimate is desired. Zoom the image in the top-left window to an appropriate level, then click at the outer bone surface and drag the mouse away from the bone so that the line passes through the cortex orthogonal to the outer bone surface. Cortical thickness estimates will be displayed dynamically as the line is moved, and will also update if any of the model or line parameters are changed.

This provides an easy method for performing a spot-check thickness measurement. See the thickness visualisation page for details of what is displayed for each thickness estimate.

Thickness mapping over a surface

To map cortical thickness over a surface or to automatically calculate an appropriate cortical CT value, the bone surface must first be defined. This can be done using the draw task page. Define each bone you wish to map the cortex over as an individual object in this task page, give them appropriate names, and ensure you have created the surface using the 'Update all' button on this task page. The surface resolution will control how many cortical thickness estimates are made: there is one estimate for every vertex in the constructed surface. A good way to start the definition of the surface is to make use of the 'every frame' slider in the 'threshold' section, which will allow automatic thresholding of the entire data set. However, it is likely the result of this will need manual editing.

Alternatively, you can use the 'Import surface' button on the draw task page to directly import a surface you have generated in some other application. Note, however, that if the distribution of mesh vertices is not homogeneous, you will not get evenly sampled thickness estimates, and any smoothing applied to the estimates will not be correct (the smoothing works by averaging over vertex neighbourhoods, so the kernel will be reasonably constant and isotropic only if the vertex distribution is homogeneous). In contrast, meshes created within Stradwin are suitably homogeneous.

Once a surface has been created or imported, return to the thickness task page, and the 'estimate cortical density' and 'current surface' buttons should now be enabled.

First press the 'estimate cortical density' button. This will look at all the bone surfaces which have been defined and use these to provide an estimate of cortical density. At the end of this process, some graphical results can be shown to allow you to validate whether this estimate seems realistic. Having done this, the estimated value is automatically entered in the 'cortical density' box. If the 'current surface' box is set to 'none', a single cortical density estimate will be generated for all the available surfaces. If you want separate estimates for each surface, then set the 'current surface' to the surface you want before pressing the 'estimate cortical density' button.

To start cortical thickness mapping, first select one of the defined bone surfaces in the 'current surface' box, then press 'map thickness over surface'. Having completed the estimation process, cortical thickness will be shown as a colour wash over the surface in the 3D window. A key for this colour wash is shown below this window. If the process was cancelled at some point, cortical thicknesses will still be shown for the parts of the surface which had already been processed.

Cortical thickness estimates, density estimates, joint space and pore width estimates, and measurement error at each location can all be saved to external files, by using the 'save thickness values and surface' button. This will save VRML2 files defining the cortical surface, and binary files with one measurement per surface vertex, each listed in the same order as the vertices appear in the main VRML file. The binary files are all stored using double-precision floating point. The 'error' files contain the estimated standard deviation of the error at each measurement. If any measurement is not valid, it is set to zero, with the associated error set to the special value of 1e10.

If you use the root filename "this_femur", then the full list of files that might be written are:

Not all of these files will be written in all circumstances. The endocortical blur file will only be written if the 'separate blur' checkbox has been ticked, or a value has been specified for the Gauss FWHM blur. The cortical surfaces and outer surface files will only be written if the '+outer' checkbox has been ticked, and the estimation was not done by the FWHM technique.

Files can also be loaded so long as they exactly match the number of vertices in the current selected surface.