Examining Large Objects

Some objects are either too large to fit in an individual B-scan, or too awkwardly positioned to be able to scan in one sweep of the probe; in these cases multiple sweeps of the probe are required to examine the entire object. For example, this is frequently the case for a foetus beyond mid-term. The liver, too, is often too large for its cross-section to fit in a B-scan, and in any case its position means that it must be scanned through the gaps between the ribs. Two or three sweeps of the probe are required to examine it completely.

Here, we show a typical examination of a liver using three sweeps. All three sweeps are recorded at the same time, and the `Outline' window shows the B-scans in all of them, plus any between sweeps (when the probe was being moved from the end position of one sweep to the start position of the next).

B-Scan Outlines and Body

Note that each of the sweeps in this case is fan shaped, since the liver had to be examined through the gaps between the lower ribs.

Once the data has been recorded, Stradx must be told which B-scans come from which sweep. This is done by marking any B-scans in-between sweeps as `invalid'. The easiest way to do this is in the `Review' window. B-scans between sweeps are usually very obvious, since the probe will have left the skin surface at this point. They can be marked as such by using the `Backspace' or 'Delete' key, which will toggle the `invalid' state of the current B-scan. Here we show a B-scan in the `Review' window which has been marked in this way. The cyan cross-hatching makes it clear that this B-scan will not be used in any processing or viewing operations (though the cross-hatching will not be drawn if you have pressed the `Segmentation' button to disable the display of segmentation contours). Note also that there is no data in the B-scan itself, since the probe isn't making contact with the skin.

Invalid Review B-Scan

B-scans can also be marked as invalid in the `Outline' window, by using the `Backspace' or 'Delete' key in exactly the same way as in the `Review' window. In this window, invalid B-scans are shown in dark blue (except the current B-scan which is always displayed in red). B-scans from different sweeps are also displayed in slightly different shades of light grey.

Stradx only uses data from one sweep at any one point in space. In order to define where data from each sweep is used, space must be `chopped up', or `partitioned', then each partition of space can be associated with data from only one of the sweeps. This partitioning of space is achieved by defining some infinite dividing planes. For the example above with three sweeps, only two such planes are required, generating three partitions, one for each of the sweeps. The dividing planes are shown in the `Outline' window as dark cyan discs, with cyan edges, provided they have not been disabled by toggling the `Segmentation' button.

B-Scan Outlines and Dividing Planes

Both the number and position of the dividing planes are updated automatically every time the `Backspace' or 'Delete' key is used to toggle the invalid state of the current B-scan. Once this has been done, the organ can be segmented in the `Review' window. Segmentation can be performed as described elsewhere, save that contours might not always be closed, since the organ being segmented may extend beyond the edge of the B-scan.

Here is a typical B-scan from the three sweep examination of the liver:

Segmentation of Liver #1

Although this is a valid B-scan, any part of it which is not being used (because it extends into a partition of space covered by another sweep) is cross-hatched in cyan, just like the invalid B-scans. This makes it obvious what data is being used from this B-scan, and hence which part of the scan to segment.

Although the contour isn't closed, it must start and end in cross-hatched regions. In fact, this is the only situation for which Stradx allows the drawing of an open contour: if either the start or end is outside a cross-hatched region, Stradx will automatically close the contour for you. Note that the sections of the contour in the cross-hatched region are drawn dotted, since they will not be used in calculating the volume. This stipple convention applies also to the `Outline' window. If a dividing plane is moved after drawing contours, such that the end of the contour falls outside a cross-hatched region, the whole contour will be drawn dotted in both the `Review' and `Outline' windows, since it cannot now be used at all.

In some cases, there is more than one cross-hatched region in the B-scan. Consider, for instance, one of the B-scans from the middle sweep:

Segmentation of Liver #2

Since there is only one object, only one contour should be drawn - but this contour now has gaps in two places, both at the start and in the middle. A special procedure is required to define this contour. After the first section has been drawn, the control key is held down while the mouse button is still pressed. The position of the mouse can then be moved without drawing. Once the control key is released, drawing continues as normal. In effect, the control key acts like a `pen up' command for drawing several sections of the same contour.

The segmentation is also displayed in the `Outline' window, providing it has not been disabled by toggling the `Segmentation' button:

Outline Segmentation of Liver

Remember, only contours drawn unbroken are used to calculate the volume and surface: other sections are drawn dotted. For clarity, the B-scan outlines have been turned off in the above example.

The volume estimate in the `Outline' window is calculated using cubic planimetry, as described elsewhere: if a value is not displayed, it can be recalled with the `Update' button. Surfaces can also be calculated and displayed in the `Surface' window:

Surface of Liver

Misregistration of the data from each of the sweeps will cause gaps in the surface like the ones shown here. However, these gaps lie entirely in the dividing planes used to partition space, and the volume estimate from the surface will still be valid. If you wish, you can attempt to correct the inter-sweep misregistration using Stradx's sweep alignment facility.

In some situations, more than two planes may be required to separate data from each sweep, and these planes may overlap. In this instance, only the parts of the planes which separate data are rendered opaque in the `Outline' window: other parts are not rendered, except for the edge of the disc, which is then in dark blue.

Dividing Planes for Reslice

Note that, although the planes themselves are disjoint, they combine to generate two continuous surfaces, which still separate space into three partitions, one for each of the three sweeps.

Planar and non-planar reslices can be calculated through multiple sweep data, once the planes separating the sweeps have been defined. For instance, the following example of the `Outline' window shows a reslice plane and non-planar reslice surface which have been defined through the same data as in the previous example. You can see that both of these surfaces pass through data from all of the sweeps:

Liver Reslice and Manifold

The planar reslice itself shows a complete cross-section of the liver, including the vena cava and some of the hepatic ducts. That it comes from different sweeps is apparent from the data close to the probe at the top of the image:

Liver Reslice

The green contour defines a non-planar reslice surface which passes through the vena cava and some adjoining ducts:

Liver Manifold

Without the dividing planes, both reslice images would have been severely corrupted. This is because, where the sweeps overlap, misregistered data from different sweeps would contribute to the same parts of the reslice image. With the dividing planes, however, each B-scan is used only in its correct partition, eliminating the overlap regions.

Occasionally, the automatically calculated dividing planes will not partition space correctly. This can occur if the orientation of the sweeps is very complex, or if the data from each sweep does not overlap very much. For this reason, dividing planes can also be deleted, inserted and moved manually: this is done in the `Outline' window. To move or delete a plane, it first needs to be selected. This is done by clicking on it with the right mouse button. Dividing planes selected in this way appear in red in the `Outline' window, and their intersections with the current B-scan also appear in red in the `Review' window. If a dividing plane is already selected, clicking on it will de-select it, or alternatively clicking on another dividing plane will de-select the first and select the other.

Moving Dividing Planes in Outline

If a dividing plane has been selected in the `Outline' window, the left and middle mouse buttons will cause the plane to be moved, rather than the viewpoint: to move the viewpoint again, simply de-select the plane. The left button rotates, and the middle button translates the dividing plane. The validity of the contours (that is, which sections are drawn dotted), and the intersection with the current B-scan in the `Review' window, are updated automatically as the dividing plane is moved. A good way to position the plane is to have an appropriate B-scan open in the `Review' window and watch how the plane intersects with the data:

Moving Dividing Planes in Review

A selected dividing plane can be deleted using the `delete' key in the `Outline' window, and a new plane inserted using the `insert' key. Planes are always inserted such that they are orthogonal to the current viewpoint in the `Outline' window, and have vertical orientation (that is, they appear as a vertical line in the centre of the window). Inserted planes are automatically selected so that they can immediately be moved.

Both the number and position of dividing planes, and the invalid frames, are stored in the segmentation file along with the segmentation contours. Loading and saving of this file is described elsewhere.