Stradx Files

Data file format

Each set of data is contained in two files. The text part is in a .sx file and the binary part is in a.sxi file. The .sx file consists of a number of lines with resource value pairs, and some lines, beginning with the letters IM that give information about images. The description of the meaning of the resources is given in a section below. The IM lines have the following syntax:

IM time size pos-x pos-y pos-z pos-azimuth pos-elevation pos-roll

The image time is given in nanoseconds. The image size is in bytes. The position information may be omitted if positions have not been recorded. If the position information is present then pos-x, pos-y, and pos-z are distances in centimetres and pos-azimuth, pos-elevation, and pos-roll are angles in degrees.

The .sxi file contains the images referred to by the IM lines (in the same order). They are in binary, using one unsigned byte per pixel. If the recorded data is greyscale, then the bytes simply record the intensity in the range 0 to 255 (0 is black and 255 is white). If the recorded data is colour Doppler, then values in the range 0 to 127 indicate greyscale pixels (0 is black and 127 is white), values in the range 128 to 191 indicate blue pixels (128 is dark blue and 191 is bright cyan) and values in the range 192 to 255 indicate red pixels (192 is dark red and 255 is bright yellow).

Segmentation file format

This is a standard Geomview text file format, which means that Stradx segmentation files can be read by the Geomview 3D visualisation package. The segmentation file contains a list of closed 2D contours lying in the x-y plane. Stradx calculates their correct 3D positions internally, using the position and calibration information (if available). In the .sxg file, the z-coordinate of every contour vertex is arbitrarily set to the frame number, so the contours appear spread out when viewed in Geomview.

At the start of the file are lines describing any defined landmarks:

# LANDMARK n x y z name

`n' is the landmark number (in the range 0 to 73), `x', `y' and `z' are floating point coordinates of the landmark, and `name' is a string used to label the landmark.

The comment `# OBJECT n' within each list of vertices indicates that the following vertices belong to object `n', where `n' is from 0 to 9. Near the start of the file are lines defining information about each of these objects:

# OBJECT_INFO n red green blue alpha closed name

`n' is the object number, `red', `green' and `blue' are floating point numbers in the range 0.0 to 1.0 defining the colour, and `alpha' is a similar floating point number defining the transparency. `closed' is either `1' or `0' to indicate whether the object is a solid or not. `name' is a string used by Stradx to label the object.

The start of the segmentation file also contains information about invalid frames and dividing planes, used in the segmentation of large structures. Each invalid frame is marked with a comment, such as `# INVALID_FRAME 23', which is ignored by Geomview: the frame numbers must be in ascending order. Dividing planes are defined as a list of four-dimensional points, where each point defines one plane, and each dimension defines one of the plane's parameters.

Image registration file format

This file contains three types of registration information.

  1. In-plane registration: transformations between pairs of B-scan parallel to the plane of the B-scan, based on image matching to correct for errors in the recorded position information relative to the tissue position, together with non-rigid corrections for varying compression of tissue in the plane of the B-scans.
  2. Out-of-plane motion: information to calculate motion out of the plane of the B-scans based on regression of the image intensity information.
  3. Multi-sweep alignment: rigid transformations to improve alignment between blocks of B-scans in a multi-sweep data set.

1. In-plane registration

Rigid and non-rigid corrections calculated by image registration can either be used to update the data on which they are based, or alternatively saved to a separate .sxr file. In the former case, both the data files (.sx and .sxi) are updated. In the latter case, the .sx and .sxi files remain unchanged, and the .sxr file records the corrected positions and non-rigid transformations for each B-scan. If only a rigid registration was calculated and saved, the .sxr file contains lines such as:

CP pos-x pos-y pos-z pos-azimuth pos-elevation pos-roll

for each recorded B-scan. This is similar to the syntax described for the .sx file. If non-rigid registration was also calculated and saved, the .sxr file contains the additional lines:

PP pos-x pos-y pos-z pos-azimuth pos-elevation pos-roll

SQ shift-y[0] shift-y[1] ... shift-y[height]

for each recorded B-scan. These define the additional positions and depth shifts required for a non-rigid registration. Note that an .sxr file can be loaded and applied to the current data set only if the number of B-scans agree (for rigid registration) and the height of the B-scans agree (for non-rigid registration).

2. Out-of-plane motion

This data enables the calculation of the out-of-plane motion based on the regression between the intensity values of patches in the B-scan images. For a rectangular B-scan, or when the probe shape is not defined, the patches are arranged in a 3x3 grid. When the a curvilinear probe shape is defined, the three rows of patches are arranged from the top to the bottom of the image, centred on the probe image. In this case fewer than three patches may be used in each row as the B-scan becomes thinner toward the top.

It is necessary to describe the size and location of these patches. All the patches are the same size, which is given, in pixels by the following two entries.

WIDTH_ZSPOT width

HEIGHT_ZSPOT height

The location of each patch is described by a separate line, as follows.

ZSPOT tlx tly which-res-cell

The number of ZSPOT lines defines the number of patches being used. tlx is the horizontal offset, in pixels, of the top left-hand corner of the patch from the top left-hand corner of the B-scan. tly is the vertical downward offset, in pixels, of the top left-hand corner of the patch from the top left-hand corner of the B-scan. which-res-cell indicates which resolution cell width should be used to calculate out-of-plane offsets for this particular patch.

which-res-cell = 0 implies top resolution cell
which-res-cell = 1 implies middle resolution cell
which-res-cell = 2 implies bottom resolution cell

The resolution cell of the ultrasound beam is assumed to be Gaussian in shape in the elevational direction, and is specified for the top third, the middle third, and the bottom third of the image. (The top third of the image is nearest to the transducer.) The standard deviation of the width of this Gaussian profile at each height is specified in centimetres using the following lines.

RES_RESCELL_TOP top-cell-width RES_RESCELL_MID mid-cell-width RES_RESCELL_BOT bot-cell-width

With this background information established, the information to calculate the complete transformation between the individual B-scans can now be given. A line of the following form is provided for each B-scan.

ZI from-frames-back negative-z x-trans y-trans roll q[0] q[1] q[3] ... q[numpatches-1] press-y-trans

from-frames-back Distances calculated using q values given here are relative to a frame this number back in the sequence. This integer parameter equals 0 if no information is available about the offsets of the current frame.
negative-z Whether the motion is in the positive or negative z direction relative to the previous frame referred to in from-frames-back  . Zero implies positive z, 1 implies negative z.
x-trans Translation in the x (horizontal) direction, in centimetres.
y-trans Translation in the y (vertical down) direction in centimetres.
roll Roll about an axis perpendicular to the B-scan, in degrees.
q[ ] These values give the offsets of each of the patches in the elevational direction. The order corresponds to the order of the ZSPOT declarations. These distances are given in multiples of resolution cell (standard deviation) widths. Thus to get distances in centimetres you need to multiply the q values by the appropriate value from the RESOLUTION_CELL declaration. Note that the correct resolution cell to use for each spot is given at the end of its ZSPOT line. These q values come from linear regression of the patches of B-scan intensity values between frames.
press-y-trans Translation offset in the y (vertical down) direction from rigid to non-rigid registration positions, in centimetres.

This relative position information, if suffuciently complete, can be used to reconstruct the relative positions of all the slices in the data set. In multiple sweep data, the first frame of each sweep will have the from-frames-back value set to zero. Multiple sweep data, without any positions sensor information, is currently reconstructed by stradx with both sweeps starting at the origin.

3. Multi-sweep alignment

If the data set contains multiple sweeps, and an alignment has been calculated to better align the sweeps, then the .sxr file will start with entries of the form:

SW type first last x y z

This means that B-scans in the range first to last are to be shifted by (x,y,z) from their nominal positions. The type entry specifies which class of inter-B-scan registration the sweep alignment is valid for. type is a number in the range 1 to 5 as follows:

  1. No inter-B-scan registration
  2. Rigid inter-B-scan registration
  3. Rigid and non-rigid inter-B-scan registration
  4. Rigid inter-B-scan registration, including elevational offsets
  5. Rigid and non-rigid inter-B-scan registration, including elevational offsets

Fiducial registration file format

The .sxf file records the persistent landmarks 'a' to 'z' from the measurements window, and the landmarks and control settings of the fiducial registration window. This is all the information required to register ultrasound data to an alternative coordinate system. The file contains four types of lines:

LANDMARK c x y z name

which defines each landmark 'c' (a character from 'a' to 'z') in exactly the same way as for the segmentation file format,

IMAGE_POINT c x y

which defines the x and y location (floating point, relative to the image) of each of the points in the fiducial registration window,

IMAGE_DATA file

which records the 'file' containing the external image data, and

REGISTRATION_DETAILS x y angle scale origin plane

which records the settings of each of the controls in the fiducial registration window. 'x' and 'y' are the location of landmark 'A', 'origin' is set to '1' if the origin is at landmark 'A', and '0' otherwise, and 'plane' is set to '1' if landmark 'B' is out of the x-z plane, and '0' otherwise.

ECG phase file format

The .sxp file records the cardiac activity and phase of each B-scan. It contains lines such as:

PH activity phase

for each recorded B-scan. This is similar to the syntax described for the .sx file. activity is an integer indicating the level of cardiac activity detected for that B-scan (high for systole, low for asystole), phase is the estimated phase angle for that B-scan, in radians. Note that an .sxp file can be loaded and applied to the current data set only if the number of B-scans listed in the .sx and .sxp files agree.

RF calibration file format

The .sxe file records speckle decorrelation curves for RF data. .sxe files are loaded and saved via the RF calibration window. A .sxe file starts with a header, containing the following information.
VECTORS
The number of vectors in the RF data set
SAMPLES
The number of samples in the RF data set
WIDTH
The width of the B-scan in pixels
HEIGHT
The height of the B-scan in pixels
SEPARATION
The separation between the B-scans in millimetres
EL_SKIP
The elevational skip factor
AX_SKIP
The axial skip factor
GRID_X
The number of columns in the patch grid
GRID_Y
The number of rows in the patch grid
There then follows a number of blocks, one for each patch. Each block contains the following information
PATCH a b c d e f
Whether the patch is valid (a), the start and end vectors (b and c), the start and end samples (d and e) and the number of samples in the patch (f).
EL_CORR c0 c1 c2 c3 c4 c5 c6 c7 c8 c9
The correlation coefficient in the elevational direction at shifts of 0, EL_SKIP, 2xEL_SKIP ... 9xEL_SKIP B-scans
AX_CORR c0 c1 c2 c3 c4 c5 c6 c7 c8 c9
The correlation coefficient in the axial direction at shifts of 0, AX_SKIP, 2xAX_SKIP ... 9xAX_SKIP samples
LA_CORR c0 c1 c2 c3 c4 c5 c6 c7 c8 c9
The correlation coefficient in the lateral direction at shifts of 0 to 9 vectors
Note that all correlation coefficients are calculated for the RF echo envelope amplitude (not intensity).

Resources used in data (.sx) files

Not all the resources below will be saved in every .sx file. We just save those that are needed in each case.

RES_CALIB_FILE (saved only when the name of the calibration file is known)
This resource is a string that holds the name of the .sxc file containing the spatial calibration data. When an .sx file is saved, Stradx will normally write a fully resolved file name for RES_CALIB_FILE. The exception is when the calibration file is in the same directory as the .sx file: in this case, Stradx will write the file name only, without the directory prefix. This makes it easy to move the .sx, .sxi and .sxc files to another directory, without having to edit the RES_CALIB_FILE entry in the .sx file. When an .sx file is loaded, Stradx will attempt to load the spatial calibration (.sxc) file indicated by RES_CALIB_FILE. If RES_CALIB_FILE is not fully resolved, Stradx will search in three places for the .sxc file, in this order: (1) the same directory as the .sx file, (2) the directory indicated by RES_CONFIG_DIR and (3) the current directory.
RES_SEGMENT_FILE (saved only when the name of the segmentation file is known)
This resource is a string that holds the name of the .sxg file containing the segmentation contours. The rules for resolving the file name are the same as those for RES_CALIB_FILE, except that the RES_CONFIG_DIR directory is not searched.
RES_CORR_FILE (saved only when the name of the registration file is known)
This resource is a string that holds the name of the .sxr file containing the image registration data. The rules for resolving the file name are the same as those for RES_CALIB_FILE, except that the RES_CONFIG_DIR directory is not searched.
RES_PHASE_FILE (saved only when the name of the ECG phase file is known)
This resource is a string that holds the name of the .sxp file containing the ECG phase data. The rules for resolving the file name are the same as those for RES_CALIB_FILE, except that the RES_CONFIG_DIR directory is not searched.
RES_BUF_WIDTH (saved always)
This resource is an integer; the width of the images in pixels.
RES_BUF_HEIGHT (saved always)
This resource is an integer; the height of the images in pixels.
RES_VID_XPOS (saved always)
This resource is an integer; the x offset of the video grabbing area in pixels.
RES_VID_YPOS (saved always)
This resource is an integer; the y offset of the video grabbing area in pixels.
RES_VID_PORT (saved always)
This resource is an integer; which port to use on the video device.
RES_VID_RATE (saved always)
This resource is an integer; it determines the desired frame rate of the video board in frames per second. It can take any one of the following values: -1, 0, 5, 10, 15, 20, 25. If the frame rate is set to 0 then the video card will be configured to use the default frame rate for the type of images being acquired. This is usually either 25 or 30 frames per second. If the frame rate is set to -1 then the video acquisition is motion gated.
RES_POS_REC (saved always)
This resource is an integer; it indicates whether position information is available. 0 implies there is no position information recorded (just images), 1 implies that position information is available for every image.
RES_BUF_DOPPLER (saved always)
This resource is an integer; it indicates whether the image data has been colour encoded or not. 0 implies that the image data is simple greyscale, 1 implies that the image bytes encode colour Doppler information.
RES_BUF_RF (saved always)
This resource is an integer; if set to 0, the saved data is interpreted as B-scans, if set to 1, it is interpreted as raw RF data.
RES_RF_PROBE (saved only when RES_BUF_RF is set to 1)
This resource is an integer; it indicates which probe configuration file is associated with this data. 0 implies 'probeA.cfg', and 26 implies 'probeZ.cfg'.
RES_RF_SCALE (saved only when RES_BUF_RF is set to 1)
This resource is a double precision floating point; it indicates the scale (in cm/pixel) for the display of RF images.
RES_RF_SAMPLES (saved only when RES_BUF_RF is set to 1)
This resource is an integer; it indicates the number of samples recorded for each RF vector. RF data is saved as unsigned short integers, hence one frame occupies 2 * RES_RF_SAMPLES * RES_RF_VECTORS bytes.
RES_RF_VECTORS (saved only when RES_BUF_RF is set to 1)
This resource is an integer; it indicates the number of vectors (columns) of RF data that were recorded. RF data is saved as unsigned short integers, hence one frame occupies 2 * RES_RF_SAMPLES * RES_RF_VECTORS bytes.
RES_RF_SAMPLE_OFFSET (saved only when RES_BUF_RF is set to 1)
This resource is an integer; it indicates the offset (in samples) of the first saved sample in each RF vector, relative to the start of that vector.
RES_RF_VECTOR_OFFSET (saved only when RES_BUF_RF is set to 1)
This resource is an integer; it indicates the number (from 0) of the first saved RF vector, relative to the start of the actual ultrasound frame.
RES_RF_FREQ (saved only when RES_BUF_RF is set to 1)
This resource is an integer; 0 implies sampling at 50MHz, 1 at 100MHz and 2 implies an external clock.
RES_RF_FOCI (saved only when RES_BUF_RF is set to 1)
This resource is an integer; it indicates how many transmit foci were used in the RF acquisition.
RES_RF_FOCUS (saved only when RES_BUF_RF is set to 1)
This resource is an integer; it indicates which was the shallowest focus in the group of transmit foci.
RES_BODY_TRX (saved only when the body registration is valid)
This resource is a double precision floating point; it indicates the x-translation of the body regsitration (centimetres).
RES_BODY_TRY (saved only when the body registration is valid)
This resource is a double precision floating point; it indicates the y-translation of the body regsitration (centimetres).
RES_BODY_TRZ (saved only when the body registration is valid)
This resource is a double precision floating point; it indicates the z-translation of the body regsitration (centimetres).
RES_BODY_ALPHA (saved only when the body registration is valid)
This resource is a double precision floating point; it indicates the azimuth angle of the body regsitration (degrees).
RES_BODY_BETA (saved only when the body registration is valid)
This resource is a double precision floating point; it indicates the elevation angle of the body regsitration (degrees).
RES_BODY_GAMMA (saved only when the body registration is valid)
This resource is a double precision floating point; it indicates the roll angle of the body regsitration (degrees).
RES_BODY_SCALE (saved only when the body registration is valid)
This resource is a double precision floating point; it indicates the scale factor of the body regsitration.
RES_BODY_PARTS (saved only when the body registration is valid)
This resource is a string; it indicates which body parts should be displayed in the outline window.
RES_DECOMP_PARAM (saved only if it has been calculated or loaded)
The echo envelope intensity corresponding to a B-scan pixel can estimated by dividing the pixel value by this double precision number, and then working out e (2.7182) to the power of the result. This number is only used when RF data is not being used. For RF data, the RES_RF_LOG_MULT parameter is used instead. The echo envelope intensity is used in sensorless freehand 3D ultrasound using image based regression algorithms.

Resources used in setup (.sxs) files

The setup files consist simply of resource-value pairs. Most resources are signed long integers, although some (like file names) are strings. Resources can also be double precision floating point.

The best way to see the format for creating a setup file is to save one from Stradx and look at it in an editor. Remember that much less checking is done on resources from setup files than when you change them interactively. If you set inappropriate values you can break the program.

You can also set these resources in a .stradxrc in your home directory, which is automatically read whenever you start Stradx. The .stradxrc file has the same format as a setup file.

RES_REC_MEM
(integer) TRUE => record to memory, FALSE => record to disk.
RES_CONFIG_DIR
(string) Default directory to search for configuration (.sxs .sxc) files.
RES_DATA_DIR
(string) Default directory to search for data (.sx .sxi .sxg .sxr .sxp) files.
RES_CALIB_FILE
(string) Spatial calibration file name.
RES_SERIAL_PORT
(string) Name of serial port to use for position information.
RES_SERIAL_SPEED
(integer) Speed of serial port for position information.
RES_POS_REC
(integer) Record positions with video. This resource is set by the `positions required' switch in the `Edit setup' panel.
RES_TEMP_CALIB
(integer) Temporal calibration offset in milliseconds, subtracted to correct position timestamps. Accounts for latency difference between position sensor and video source.
RES_TEMP_CALIB_LABEL
(string) Identifies which video source and position sensor the temporal calibration relates to.
RES_VID_PORT
(integer) Which port to use on video device.
RES_VID_BUFFERS
(integer) Size of video ring buffer in frames.
RES_VID_XPOS
(integer) X offset of the video grabbing area in pixels.
RES_VID_YPOS
(integer) Y offset of the video grabbing area in pixels.
RES_BUF_WIDTH
(integer) Width of the video grabbing area in pixels.
RES_BUF_HEIGHT
(integer) Height of the video grabbing area in pixels.
RES_BUF_DOPPLER
(integer) Whether to record only the intensity or to encode colour information as well.
RES_BUF_RF (saved always)
This resource is an integer; if set to 0, the saved data is interpreted as B-scans, if set to 1, it is interpreted as raw RF data.
RES_RF_PROBE (saved only when RES_BUF_RF is set to 1)
This resource is an integer; it indicates which probe configuration file is associated with this data. 0 implies 'probeA.cfg', and 26 implies 'probeZ.cfg'.
RES_RF_SCALE (saved only when RES_BUF_RF is set to 1)
This resource is a double precision floating point; it indicates the scale (in cm/pixel) for the display of RF images.
RES_RF_FREQ (saved only when RES_BUF_RF is set to 1)
This resource is an integer; 0 implies sampling at 50MHz, 1 at 100MHz and 2 implies an external clock.
RES_RF_FOCII (saved only when RES_BUF_RF is set to 1)
This resource is an integer; it indicates how many transmit foci were used in the RF acquisition.
RES_RF_FOCUS (saved only when RES_BUF_RF is set to 1)
This resource is an integer; it indicates which was the shallowest focus in the group of transmit foci.
RES_RF_FILTER (saved only when RES_BUF_RF is set to 1)
This resource is an integer; it indicates which pair of matched filters (from the probe configuration file) was used for processing the RF data.
RES_RF_DISPLAY (saved only when RES_BUF_RF is set to 1)
This resource is an integer; it indicates the type of RF display, where 0 is 'Envelope', 1 is 'Phase' and 2 is 'Frequency'.
RES_RF_LOG_OFFSET (saved only when RES_BUF_RF is set to 1)
This resource is an integer; it indicates the offset used in calculating the envelope display of RF data.
RES_RF_LOG_MULT (saved only when RES_BUF_RF is set to 1)
This resource is an integer; it indicates the multiplier used in calculating the envelope display of RF data.
RES_VID_RATE
(integer) Video grabbing rate in frames/second. Possible values are: -1, 0, 5, 10, 15, 20, 25. If the frame rate is set to 0 then the video card will be configured to use the default frame rate for the type of images being acquired. This is usually either 25 or 30 frames per second. If the frame rate is set to -1 then the video acquisition is motion gated.
RES_VID_GROUP_DELAY
(integer) Time in milliseconds to keep video images before making them available for matching position information.
RES_VID_CHROMA_THRESH
(integer) How different the Cr and Cb video signals need to be for a pixel to be classified as coloured (for Doppler recording).
RES_VID_GREY_THRESH
(integer) How bright the Y video signal needs to be for a pixel to be classified as coloured (for Doppler recording).
RES_VID_MOVE_THRESH
(float) How far any corner of the B-scan needs to move (in cm) for the B-scan to be recorded (for motion gated acquisition).
RES_CAL_SIGMA
(float) This controls the smoothing applied to the image in advance of the edge detection process (for automatic calibration).
RES_CAL_STRIPES
(integer) This sets the number of vertical bands in the image that are used for the edge detection process (for automatic calibration).
RES_CAL_MINGRAD
(float) How strong the image gradient needs to be for an edge element to be detected (for automatic calibration).
RES_CAL_PIXTHRESH
(integer) This parameter determines the vertical tolerance (in pixels) that is used when determining collinearity (for automatic calibration).
RES_CAL_ACCEPT_RATIO
(float) The proportion of edge elements that must be collinear for the line to be accepted (for automatic calibration).
RES_CAL_INVERT
(integer) Whether the edge detector scans up (0) or down (1) the image (for automatic calibration).
RES_SEG_FIRE_JUMP
(integer) How far the grass fire will jump over unthresholded pixels to reach thresholded pixels on the other side (for segmentation by thresholding).
RES_CPU_GRAPHICS_POWER
(integer) An indication of how powerful your computer's CPU and graphics subsystem are. Influences how ambitious Stradx is when attempting real-time reslices and manifolds. Also controls how many triangles to display in the mannequin model (for body-centered visualisation).
RES_ETHERNET_SERVER
(string) The name of the ethernet video server (see the setup menu).
RES_POS_DETECT
(integer) The type of position sensor to search for on the serial port. Possible values are 0 (auto detect), 1 (Polhemus Fastrak), 2 (Ascension Flock of Birds), 3 (Ascension MiniBird), 4 (Ascension LaserBird) and 5 (Northern Digital Polaris).
RES_NO_GREET_PASSWORD
(string) The password to disable the Stradx's greeting panel.

Defunct resources accepted in setup (.sxs) and data (.sx) files

Some resources used in previous versions of Stradx are now defunct. These are:

RES_CALIB_DIR
(string) Intepreted as RES_CONFIG_DIR
RES_REGISTRATION_TTRIS
(integer) Intepreted as RES_CPU_GRAPHICS_POWER
RES_REGISTRATION_TRX
(float) Interpreted as RES_BODY_TRX
RES_REGISTRATION_TRY
(float) Interpreted as RES_BODY_TRY
RES_REGISTRATION_TRZ
(float) Interpreted as RES_BODY_TRZ
RES_REGISTRATION_ALPHA
(float) Interpreted as RES_BODY_ALPHA
RES_REGISTRATION_BETA
(float) Interpreted as RES_BODY_BETA
RES_REGISTRATION_GAMMA
(float) Interpreted as RES_BODY_GAMMA
RES_REGISTRATION_BODYP
(string) Interpreted as RES_BODY_PARTS
RES_SEGMENT_DIR
(string) Quietly ignored
RES_SETUP_DIR
(string) Quietly ignored
RES_VINO_BUFFERS
(integer) Intepreted as RES_VID_BUFFERS
RES_VINO_GROUP_DELAY
(integer) Intepreted as RES_VID_GROUP_DELAY
RES_VINO_PORT
(integer) Intepreted as RES_VID_PORT
RES_VINO_RATE
(integer) Intepreted as RES_VID_RATE
RES_VINO_XPOS
(integer) Intepreted as RES_VID_XPOS
RES_VINO_XSIZE
(integer) Intepreted as RES_BUF_WIDTH
RES_VINO_YPOS
(integer) Intepreted as RES_VID_YPOS
RES_VINO_YSIZE
(integer) Intepreted as RES_BUF_HEIGHT
RES_FASTRAK_OFFSET
(integer) Interpreted as RES_TEMP_CALIB
RES_BIRD_OFFSET
(integer) Interpreted as RES_TEMP_CALIB
RES_POLARIS_OFFSET
(integer) Interpreted as RES_TEMP_CALIB

Resources used in calibration (.sxc) files

Calibration files consist of resource-value pairs for the 8 spatial calibration parameters and 4 probe shape parameters listed below. They should all be double precision floating point numbers. The spatial calibration parameters define the transformation to move from the receiver of the position sensor to the scan plane of the ultrasound probe. Alternatively, you can think of them as the coordinate transformation to convert scan plane coordinates to the coordinate system of the position sensor receiver. The scan plane is defined to have the x axis running across the surface of the scan head and the y axis going into the subject being scanned.

The probe shape parameters define the location of the actual ultrasound data within the acquired video image.

All the descriptions of transformations below are with respect to a fixed right handed coordinate system associated with the cropped B-scan plane (ie. origin at the top left hand corner of the `Review' or `Preview' window). The transformations are applied in the following order; scale the x direction by RES_XSCALE, scale the y direction by RES_YSCALE, rotate RES_ROLL degrees about the x axis, rotate RES_ELEVATION degrees about the y axis, rotate RES_AZIMUTH degrees about the z axis, finally translate by the vector (RES_XTRANS, RES_YTRANS, RES_ZTRANS).

RES_XTRANS
Translation in the x direction (centimetres).
RES_YTRANS
Translation in the y direction (centimetres).
RES_ZTRANS
Translation in the z direction (centimetres).
RES_AZIMUTH
Rotation about the positive z axis (degrees).
RES_ELEVATION
Rotation about the positive y axis (degrees).
RES_ROLL
Rotation about the positive x axis (degrees).
RES_XSCALE
Scale across image in x direction (cm per pixel).
RES_YSCALE
Scale down image in y direction (cm per pixel).
RES_PROBE_X
The x location of the centre of curvature of a convex probe (or the top middle of a linear probe) relative to the origin of the (non-cropped) video input, in pixels.
RES_PROBE_Y
The y location of the centre of curvature of a convex probe (or the top middle of a linear probe) relative to the origin of the (non-cropped) video input, in pixels.
RES_PROBE_TOP
The vertical distance between the centre of curvature and the start of the ultrasound data, in pixels (zero for linear probes).
RES_PROBE_WIDTH
Half the horizontal distance between the top corners of the ultrasound data, in pixels.
RES_RESCELL_TOP
Standard deviation of width, in centimetres, of the (assumed) Gaussian shaped ultrasound resolution cell in the elevational direction, valid for the top third of the ultrasound image (nearest to the transducer).
RES_RESCELL_MID
Standard deviation of width, in centimetres, of the (assumed) Gaussian shaped ultrasound resolution cell in the elevational direction, valid for the middle third of the ultrasound image.
RES_RESCELL_BOT
Standard deviation of width, in centimetres, of the (assumed) Gaussian shaped ultrasound resolution cell in the elevational direction, valid for the bottom third of the ultrasound image (furthest from the transducer).

The current calibration values are always displayed in the `Calibration Controls' panel, which is accessible from the `Calibration' menu. The current probe shape can be displayed in the `Review' or `Preview' windows, by clicking on the 'Display probe shape' button in the `Calibration Controls' panel.