Stradview can load data from various DICOM and other image formats. However, it saves any additional data in the Stradwin file format, either as data or settings files, or in a configuration file.
Data files are used to store all sorts of parameters, as well as position, contour and landmark data, and can also be used to store image data. With most DICOM data and image sequences, the only file Stradview creates is a ".sw" file containing textual information: the original data is left un-altered but referenced within the Stradview file. For some older Stradwin formats, the binary data is stored in an additional ".sxi" file. In either case, when you load up a data set in Stradview, the ".sw" file is loaded first to establish the details of the data set, and the original DICOM or image file set (or ".sxi" file) is then loaded automatically. Since the ".sw" file contains unformatted text, it can be viewed and/or edited in any text editor.
Settings files, are text files, with extension ".ini", that can contain various sub-sets (according to the 'group') of parameters related to the data, analysis and visualisation settings. Settings files contain information that relates to the visualisation or processing of the data, but not to the data itself. Hence these files can be loaded when there is already an open data set, for instance to set up a particular analysis, or to retrieve a particular viewpoint, reslice orientation or colour settings for a particular visualisation.
The configuration file, "stradview.ini" is used to store configuration parameters. This is information which is not specific to any given data, but more to do with the overall performance and visualisation quality. This file is automatically updated whenever you change a control which is stored in this file, so that each time you start Stradview, such controls will be set to the values from the previous session. The configuration file also contains simple unformatted text, in the same format as the other text files.
Much of the information in settings and configuration files is also stored in each textual ".sw" data file, so that the data contains a historical record of all the Stradview parameters at the time it was recorded. When you load a data file, Stradview temporarily sets all the controls to whatever they were when you saved the data. These controls return to the previous settings as soon as the data file is closed unless you specifically change a control while the data is loaded, in which case it will then stay at the value you changed it to after closing the data file.
The data, settings and configuration files have the same format, where information is stored in single line parameter-value pairs, so for instance the line:
RES_BUF_FRAMES 100indicates that the RES_BUF_FRAME parameter has the value "100". A few parameters can occur multiple times, for instance once per frame of data, or once per drawn contour.
The exception is the ".sxi" data file, which is a binary file containing image data only. For scan-converted data, this contains a single 8-bit (unsigned char) value per display pixel, and is ordered such that the pixel at row r, column c and frame f is at location:
f*RES_BUF_WIDTH*RES_BUF_HEIGHT + r*RES_BUF_WIDTH + cHence the total size of a scan-converted ".sxi" data file is given by RES_BUF_FRAMES*RES_BUF_WIDTH*RES_BUF_HEIGHT bytes.
Note that Stradview can not load RF data: for this you need to use Stradwin.
Stradview always stores the position and orientation separately for each frame in a data set. When the orientations from each frame are represented as rotation matrices, they are always 'proper', i.e the determinant is one. If the data is a regular array, all these orientations will be the same, but the implied z-direction may or may not correspond to the direction in which the frame number increases. This is handled internally by using a negative value for the scaling parameter in the z-direction, whereas the x- and y-scales are always positive. Most DICOM data will end up needing such a negative z-scale.
Internally, the 3D locations for each frame are defined from the top-left corner (in x,y) of the first pixel, but at the centre (in z) of the slice. This is the case for the frame positions following the "IM" token and the 2D contour coordinates following the "CONT" token. So the centre of the first pixel in each case is at 0.5*(res_xscale, res_yscale). However, most medical image formats define the origin at the centre of the first pixel. Up to and including Stradview version 7.3 this was ignored, resulting in a potential half pixel offset between coordinate systems. Newer versions interpret this correctly, and automatically re-adjust for the half pixel offset when loading an older stradwin file. However, if you exported a surface or a resliced data set from an older Stradview version and then try to load that in again with the new version, you may notice a half-pixel offset between this and the data, since it is not possible to retrospectively correct previously exported surfaces or resliced data. Setting RES_CORRECT_HALF_PIXEL_OFFSET to false in the configuration file will prevent Stradview from correcting older files and hence allow correct correspondence with older surfaces generated from these files.
All rotations in Stradwin ".sw" data files are expressed in Euler angles. The particular convention used is Tait-Bryan angles, ZYX ordering, with azimuth = yaw = alpha, elevation = pitch = beta and roll = gamma. Internally, Stradview converts Euler angles to homogeneous transformation matrices before manipulation. The classes matrix16d and vertex3d for dealing with such matrices are contained in 'translate.h' and 'translate.cpp'. Using these classes, the following code snippet uses Stradwin parameters (as described below) to convert a pixel location in a single frame to the data coordinate system:
// Create matrices for // - position sensor calibration (cal), if required // - frame location in position sensor coordinates (frame) matrix16d cal(res_xtrans, res_ytrans, res_ztrans, res_azimuth, res_elevation, res_roll); matrix16d frame(im_x, im_y, im_z, im_azimuth, im_elevation, im_roll); // Calculate vertices for // - point location relative to the frame (pixels) // - point location relative to the position sensing device (pos), if required // - point location in position sensor base coordinates (world) vertex3d pixels, pos, world; pixels.x = 100; // pixels from top left in horizontal direction pixels.y = 50; // pixels from top left in vertical direction pos = cal * pixels.scale(res_xscale, res_yscale); world = frame * pos;
Note that, for most DICOM and image data, the "cal" matrix above is not used, and would be set to the identity matrix.
The following table lists all the single line parameters that are stored in the data file, and possibly also the settings and configuration files. For data files, the first nine parameters are always located before the RES_END_HEADER token: Stradview needs to load these first in order to correctly interpret the remaining parameters. Apart from this restriction, the parameters can appear in any order in the file. The table also shows how some of the parameters are collected together into "groups": these are used to warn the user of unsaved parameters when closing a file or quitting Stradview. Groups are also used to control what gets saved when creating a new settings file.
Token | Data file | Settings file | Config file | Type | Default | Group | Description |
# | text | - | - | Comment token - this can be followed by any textual comment. | |||
RES_BUF_FRAMES | long | 0 | DATA | The number of frames of recorded data. | |||
RES_BUF_WIDTH | long | 512 | IMAGE | The width of scan-converted data, in pixels. | |||
RES_BUF_HEIGHT | long | 512 | IMAGE | The height of scan-converted data, in pixels. | |||
RES_POS_REC | bool | true | POS | Whether we have locational data with each image. | |||
RES_BUF_RF | bool | false | IMAGE | Whether the recorded data is RF or scan-converted. Note that RF data can not be loaded by Stradview. | |||
RES_BUF_DICOM | bool | false | DICOM | Whether this header file refers to native DICOM data or image sequence files (true) or Stradwin ".sxi" files (false). | |||
RES_DICOM_FRAME_LIST | longs | - | DICOM | An ordered list of values indicating which DICOM or image files or frames are included in this Stradwin file. A value of zero indicates the first DICOM/image file found in this directory. | |||
RES_END_HEADER | - | - | - | A special token signifying the end of the header section. | |||
RES_VERSION | text | V | - | The Stradwin version which wrote this file. The default value V is the current version number. | |||
RES_INVERT_BSCAN | bool | false | IMAGE | Whether the probe surface is at the top (false) or bottom (true) of the displayed image. | |||
RES_BUF_DOPPLER | bool | false | IMAGE | Whether the data is grey-scale (B-scan) or colour (Doppler). | |||
RES_CORRECTED_PRESSURE | bool | false | IMAGE | Whether the image data has been corrected for probe pressure using an image-based algorithm. | |||
RES_CORRECTED_POS | bool | false | DATA | Whether the image data has been corrected for small positional errors using an image-based algorithm. | |||
RES_MASKED_DATA | long | 0 | IMAGE | 1 if the image data has been masked (non-data areas set to zero and ignored in visualisations), 0 otherwise. | |||
RES_XTRANS | double | 0 | POS | The x (lateral) translation (in cm) from the top left corner of the image to the position sensor coordinate system. | |||
RES_YTRANS | double | 0 | POS | The y (axial) translation (in cm) from the top left corner of the image to the position sensor coordinate system. | |||
RES_ZTRANS | double | 0 | POS | The z (elevational) translation (in cm) from the top left corner of the image to the position sensor coordinate system. | |||
RES_AZIMUTH | double | 0 | POS | The Euler azimuth (in degrees from -180 to 180) from the top left corner of the image to the position sensor coordinate system. | |||
RES_ELEVATION | double | 0 | POS | The Euler elevation (in degrees from -90 to 90) from the top left corner of the image to the position sensor coordinate system. | |||
RES_ROLL | double | 0 | POS | The Euler roll (in degrees from -90 to 90) from the top left corner of the image to the position sensor coordinate system. | |||
RES_XSCALE | double | 0.01 | POS | The lateral (x) scale of the scan-converted image, in cm per pixel. | |||
RES_YSCALE | double | 0.01 | POS | The axial (y) scale of the scan-converted image, in cm per pixel. | |||
RES_POS_MANUAL | bool | false | POS | Whether the positions have been manually entered. | |||
RES_POS_MANUAL_TRAN | long | 0 | POS | The axis (or 0 for no translation) for manually entered positions. | |||
RES_POS_MANUAL_SPAN | double | 0 | POS | The total translation distance in mm for manually entered positions. | |||
RES_POS_MANUAL_ROT | long | 0 | POS | The axis (or 0 for no rotation) for manually entered rotations. | |||
RES_POS_MANUAL_ANGLE | long | 0 | POS | The total rotation angle in degrees for manually entered rotations. | |||
RES_POS_MANUAL_RADIUS | long | 0 | POS | The offset radius in mm about which the rotations occurs for manually entered rotations. | |||
RES_DICOM_WIN_CENTRE | double | 1024 | DICOM / DISPLAY | The window centre for conversion of data to display brightness, usually in Hounsfield Units. The default value is whatever is stored in the corresponding DICOM files. | |||
RES_DICOM_WIN_WIDTH | double | 2048 | DICOM / DISPLAY | The window width for conversion of data to display brightness, usually in Hounsfield Units. The default value is whatever is stored in the corresponding DICOM files. | |||
RES_DICOM_FILTER | long | 0 | DICOM / DISPLAY | Applies a Gaussian filter of extent (2*RES_DICOM_FILTER+1) to each frame of the raw data before windowing, to remove noise. '0' turns this filter off. | |||
RES_DICOM_FILTER_Z | long | 0 | DICOM / DISPLAY | Applies a Gaussian filter of extent (2*RES_DICOM_FILTER_Z+1) across frames of the raw data before windowing, to remove noise. '0' turns this filter off. | |||
RES_DICOM_UNITS | text | ?? | DICOM | Notes the units of measurement after conversion using RES_DICOM_HUM and RES_DICOM_HUB. This can only be changed if it is not specified in the image data. '??' stands for 'un-known', and 'HU' and 'GY' are both specifically recognised, otherwise it can take any value. | |||
RES_DICOM_HUM | double | 1.0 | DICOM | Part of the conversion between raw data values and (usually) Hounsfield Units (HU), where HU = (raw * DICOM_HUM) + DICOM_HUB. | |||
RES_DICOM_HUB | double | 0.0 | DICOM | Part of the conversion between raw data values and (usually) Hounsfield Units (HU), where HU = (raw * DICOM_HUM) + DICOM_HUB. | |||
RES_DICOM_BMD_PHANTOM | text | No | DICOM | The phantom which was detected in CT data and used to convert Hounsfield Units to density, or 'No' if this has not been done. | |||
RES_DICOM_BMD_SCALE | double | 1.0 | DICOM | Part of the conversion between Hounsfield Units (HU) and density (mg/cm3), where density = (HU-BMD_OFFSET)/BMD_SCALE. | |||
RES_DICOM_BMD_OFFSET | double | 0.0 | DICOM | Part of the conversion between Hounsfield Units (HU) and density (mg/cm3), where density = (HU-BMD_OFFSET)/BMD_SCALE. | |||
RES_BUF_CURRENT_FRAME | long | 0 | DISPLAY | The frame of the data set which is currently being displayed. | |||
RES_DISPLAY_PIXELS | bool | false | DISPLAY | If set to true, turns off image interpolation in all windows, so that the actual data pixels are visible when the data is sufficiently zoomed. | |||
RES_DISPLAY_COG | bool | true | DISPLAY | If set to true, display centres-of-gravity of each surface in the 3D window, and in other windows when they are close enough. | |||
RES_SEE_OUTLINES | long | 1 | DISPLAY | Whether frame outlines are visible in the 3D windows, and intersections in the other windows. 0 - never visible, 1 - visible, just current frame, 2 - visible, all frames. | |||
RES_SEE_MARK_LOCKED | long | 0 | DISPLAY | Whether landmarks are permanently visible in all windows. 1 - always visible, 2 - never visible, 0 - automatic. | |||
RES_SEE_DRAW_LOCKED | long | 0 | DISPLAY | Whether contours and objects are permanently visible in all windows. 1 - always visible, 2 - never visible, 0 - automatic. | |||
RES_OUTLINE_VIEWX_X | double | 1.0 | DISPLAY | The x-component of the x-direction of the 3D visualisation viewpoint. | |||
RES_OUTLINE_VIEWX_Y | double | 0.0 | DISPLAY | The y-component of the x-direction of the 3D visualisation viewpoint. | |||
RES_OUTLINE_VIEWX_Z | double | 0.0 | DISPLAY | The z-component of the x-direction of the 3D visualisation viewpoint. | |||
RES_OUTLINE_VIEWZ_X | double | 0.0 | DISPLAY | The x-component of the z-direction of the 3D visualisation viewpoint. | |||
RES_OUTLINE_VIEWZ_Y | double | 0.0 | DISPLAY | The y-component of the z-direction of the 3D visualisation viewpoint. | |||
RES_OUTLINE_VIEWZ_Z | double | 1.0 | DISPLAY | The z-component of the z-direction of the 3D visualisation viewpoint. | |||
RES_OUTLINE_VIEW_ANGLE | long | 40 | DISPLAY | Whether to show the 3D visualisation as orthographic (0) or perspective (>0), in which case this gives the viewing angle in degrees. | |||
RES_CAMERA_DISTANCE | double | 1.0 | DISPLAY | How close the camera is to the current view centre, with 0 very close, and 1 (the default) outside the data set. | |||
RES_OUTLINE_ZOOM | double | 1.0 | DISPLAY | The magnification of the data in the 3D visualisation. | |||
RES_REVIEW_ZOOM | double | 1.0 | DISPLAY | The magnification of the data in the 2D review window. | |||
RES_CENTRE_ZOOM | double | 1.0 | DISPLAY | The magnification of the data in the reslice or left-hand orthographic visualisation. | |||
RES_CORNER_ZOOM | double | 1.0 | DISPLAY | The magnification of the data in the right-hand orthographic visualisation. | |||
RES_LOCK_ZOOM | double | false | DISPLAY | Whether to keep the magnification the same between all windows, and not change it when the windows re-size. | |||
RES_RESLICE_OPACITY | double | 0.5 | DISPLAY | The opacity with which the reslices and review data displayed in the 3D window. 1.0=opaque, 0.0=invisible. | |||
RES_BACKGROUND | text | #808080 | GRAPHICS | The colour used for background (non-data) in the data windows, as three hexadecimal RGB values. | |||
RES_BACKGROUND_CONST | bool | false | GRAPHICS | Whether the background (non-data) in the 3D window is constant or shaded. Only affects displays if your driver supports at least OpenGL 3.0. | |||
RES_SHADER | long | 2 | GRAPHICS | The shader used to draw surfaces in the 3D window, as an index into the 'graphics shader' selection box. Only affects displays if your driver supports at least OpenGL 3.0. | |||
RES_TRANSLUCENT_LAYERS | long | 6 | GRAPHICS | The number of overlapping translucent layers to display for surfaces in the 3D window. Setting this to zero defaults to a 'fake' translucency which was the default before version 7.0. Only affects displays if your driver supports at least OpenGL 3.0. | |||
RES_LIGHTING_AMBIENT | double | 0.30 | GRAPHICS | The amount of ambient light in the 3D window, in a range from 0.0 to 1.0. The radiant lighting is decreased proportionally as this value is increased. | |||
RES_LIGHTING_FRONT_SIDE | double | 0.75 | GRAPHICS | The relative importance of the side and the front light in the 3D window, in a range from 0.0 (front light only) to 1.0 (side light only). Since shadowing is only generated by the side light, this also controls the depth of the shadows. | |||
RES_LIGHTING_LEFT_RIGHT | double | 0.25 | GRAPHICS | The left-right rotation of the side light in the 3D window, in a range from -1.0 (from behind) to -0.5 (from the left) to 0.0 (from front) to 0.5 (from the right) to 1.0 (from behind, same as -1.0). Since shadowing is generated by the side light, this also controls the direction of the shadows. | |||
RES_LIGHTING_UP_DOWN | double | -0.5 | GRAPHICS | The up-down location of the side light in the 3D window, in a range from -1.0 (directly below) to 1.0 (directly above). Since shadowing is generated by the side light, this also controls the direction of the shadows. | |||
RES_LIGHTING_NEAR_FAR | double | 1.0 | GRAPHICS | The near-far location of the side light in the 3D window, in a range from -1.0 (close to the data) to 1.0 (infinitely distant). This is also used to control the penetration distance of the light when using point lights fixed at a landmark. | |||
RES_LIGHTING_LANDMARK | text | ?? | GRAPHICS | The name of the landmark at which to fix the location of the side light in the 3D window. This results in omnidirectional light over the 3D window. | |||
RES_AMBIENT_LIGHT_WARMTH | double | 0.0 | GRAPHICS | Sets the colour of the ambient light in the 3D window. Zero (the default) is white light, -1.0 is cold (blue-ish or night-time) and 1.0 is warm (yellow/red or candle). | RES_FRONT_LIGHT_WARMTH | double | 0.0 | GRAPHICS | Sets the colour of the front light in the 3D window. Zero (the default) is white light, -1.0 is cold (blue-ish or night-time) and 1.0 is warm (yellow/red or candle). | RES_SIDE_LIGHT_WARMTH | double | 0.0 | GRAPHICS | Sets the colour of the side (mobile) light in the 3D window. Zero (the default) is white light, -1.0 is cold (blue-ish or night-time) and 1.0 is warm (yellow/red or candle). |
RES_OCCLUSION_RANGE | long | 5 | GRAPHICS | The extent of ambient scatter or occlusion modelling in the 3D window. Only affects displays if your driver supports at least OpenGL 3.0. | |||
RES_RADIANT_SHADOWS | bool | true | GRAPHICS | Whether light propogation is included in the 3D window, which will create shadows from the side light. Only affects displays if your driver supports at least OpenGL 3.0. | |||
RES_AMBIENT_SCATTER | bool | true | GRAPHICS | Whether ambient scatter is modelled in the 3D window. For surfaces this affects ambient occlusion and for volumes it controls secondary scatter from ambient light. Only affects displays if your driver supports at least OpenGL 3.0. | |||
RES_FOCUS_RANGE | double | 0.0 | GRAPHICS | Range of focus in 3D visualisation. 0.0 implies no focus simulation (everything in focus), 1.0 is the minimum focal range. Only affects displays if your driver supports at least OpenGL 3.0. | |||
RES_FOCUS_DEPTH | double | 0.5 | GRAPHICS | Depth of focus in 3D visualisation. 0.0 focuses at the nearest point, 1.0 at the furthest, 1.0 is the minimum focal range. Only affects displays if your driver supports at least OpenGL 3.0. | |||
RES_VOLUME_QUALITY | long | 5 | VOLUME | The quality used for generating the volume rendering in the 3D window, from 0 (lowest) to 7 (highest), corresponding to the selection in the quality list. Only affects displays if your driver supports at least OpenGL 3.0. | |||
RES_VOLUME_TRANSLUCENCY | long | 50 | VOLUME | The overall translucenct for volume rendering in the 3D window, from 0 (lowest) to 100 (highest). Only affects displays if your driver supports at least OpenGL 3.0. | |||
RES_VOLUME_CLARITY | long | 0 | VOLUME | The amount (in percentage of the full range) to increase translucency of low gradients or gradients in the view direction during volume rendering in the 3D window. This allows hidden surfaces to be seen more clearly. Only affects displays if your driver supports at least OpenGL 3.0. | |||
RES_VOLUME_GRADIENT | long | 15 | VOLUME | The threshold above which gradients are shaded and transitory data values ignored during volume rendering in the 3D window, as a percentage of the full range of the windowed data. Only affects displays if your driver supports at least OpenGL 3.0. | |||
RES_VOLUME_FWHM | long | 25 | VOLUME | The distance over which the gradient is taken during volume rendering. This is in voxels * 25, so the default of 25 is one voxel. Also affects data correction for transition regions: setting to zero disables this correction. Only affects displays if your driver supports at least OpenGL 3.0. | |||
RES_VOLUME_WETNESS | long | 0 | VOLUME | How 'wet' objects will appear in volume rendering, from 0 (lowest) to 100 (highest), for any transitory data values with gradients above RES_VOLUME_GRADIENT. Only affects displays if your driver supports at least OpenGL 3.0. | |||
RES_VOLUME_BRIGHTNESS | long | 0 | VOLUME | The overall brightness compensation used when incorporating radiant shadowing into volume rendering in the 3D window, from 0 (lowest) to 100 (highest). Only affects displays if your driver supports at least OpenGL 3.0. | |||
RES_VOLUME_CROP_Z_HIGH | double | 100 | VOLUME | Whether to crop the upper edge of the volume in the z-direction. 100 implies no cropping, 0 crops everything. Only affects displays if your driver supports at least OpenGL 3.0. | |||
RES_VOLUME_CROP_Z_LOW | double | 0 | VOLUME | Whether to crop the lower edge of the volume in the z-direction. 0 implies no cropping, 100 crops everything. Only affects displays if your driver supports at least OpenGL 3.0. | |||
RES_VOLUME_CROP_Y_HIGH | double | 100 | VOLUME | Whether to crop the upper edge of the volume in the y-direction. 100 implies no cropping, 0 crops everything. Only affects displays if your driver supports at least OpenGL 3.0. | |||
RES_VOLUME_CROP_Y_LOW | double | 0 | VOLUME | Whether to crop the lower edge of the volume in the y-direction. 0 implies no cropping, 100 crops everything. Only affects displays if your driver supports at least OpenGL 3.0. | |||
RES_VOLUME_CROP_X_HIGH | double | 100 | VOLUME | Whether to crop the upper edge of the volume in the x-direction. 100 implies no cropping, 0 crops everything. Only affects displays if your driver supports at least OpenGL 3.0. | |||
RES_VOLUME_CROP_X_LOW | double | 0 | VOLUME | Whether to crop the lower edge of the volume in the x-direction. 0 implies no cropping, 100 crops everything. Only affects displays if your driver supports at least OpenGL 3.0. | |||
RES_VOLUME_CROP_RESLICE | bool | false | VOLUME | Whether to crop the volume to the current location of the reslice plane. Only affects displays if your driver supports at least OpenGL 3.0. | |||
RES_VOLUME_USE_ALPHA | bool | false | VOLUME | Whether to use an additional alpha volume when cropping a volume rendering to a surface. Only affects displays if your driver supports at least OpenGL 3.0. | |||
RES_VOLUME_LANDMARK | text | ?? | VOLUME | The name of a landmark at the centre of a sphere used to crop a volume rendering. Only affects displays if your driver supports at least OpenGL 3.0. | |||
RES_VOLUME_LANDMARK_RADIUS | double | 15 | VOLUME | The radius of a sphere centred on the chosen landmark, when cropping a volume rendering to a landmark. This is expressed in terms of the percentage of the width of the currently loaded image data. Only affects displays if your driver supports at least OpenGL 3.0. | |||
RES_VOLUME_LANDMARK_INVERT | bool | false | VOLUME | Whether to crop within the radius (false) or outside (true) when cropping a volume rendering to a sphere centred on a landmark. Only affects displays if your driver supports at least OpenGL 3.0. | |||
RES_VOLUME_SURFACE_ANTIALIAS | bool | false | VOLUME | Whether to use anti-aliasining when cropping a volume rendering to a surface. Only affects displays if your driver supports at least OpenGL 3.0. | |||
RES_VOLUME_SURFACE_INVERT | bool | false | VOLUME | Whether to crop to the inside (false) or outside (true) when cropping a volume rendering to a surface. Only affects displays if your driver supports at least OpenGL 3.0. | |||
RES_SURFACE_RESOLUTION | long | 5 | OBJECT PARAMS | What resolution to use (corresponding to the position in the GUI control) when creating a new surface from object contours. | |||
RES_SURFACE_SMOOTHING | long | 1 | OBJECT PARAMS | What smoothing to use (corresponding to the position in the GUI control) when creating a new surface from object contours. | |||
RES_SURFACE_COMPOUND_TYPE | long | -1 | OBJECT PARAMS | What type of compounding to use when creating a new surface from object contours (-1 = no compounding). | |||
RES_SURFACE_COMPOUND_THICK | long | 0 | OBJECT PARAMS | What distance to compound over when creating a new surface from object contours. | |||
RES_SURFACE_COVER | bool | true | OBJECT PARAMS | Whether to cover end contours within the data volume when creating a new surface from object contours. | |||
RES_SURFACE_CONNECT_OBJECTS | bool | false | OBJECT PARAMS | Whether to focus specifically on objects when creating a new surface from object contours. | |||
RES_SURFACE_CONNECT_HOLES | bool | false | OBJECT PARAMS | Whether to focus specifically on gaps between objects when creating a new surface from object contours. | |||
RES_CMAP_GREY_LO | long | 0 | OBJECT PARAMS | The low threshold value (in terms of display brightness 0 to 255) when creating object contours from a threshold. | |||
RES_CMAP_GREY_HI | long | 0 | OBJECT PARAMS | The high threshold value (in terms of display brightness 0 to 255) when creating object contours from a threshold. | |||
RES_CMAP_GREY_ANTI | long | 0 | OBJECT PARAMS | The non-threshold value (in terms of display brightness 0 to 255) when creating object contours from a threshold. | |||
RES_SEGMENT_TYPE | long | 2 | OBJECT PARAMS | The topology for automated thresholding: 0 segments all contours, 1 segments only holes within the object, 2 only segments the outer body of the object. | |||
RES_SEGMENT_CONNECTED | bool | true | OBJECT PARAMS | Whether to only segment objects which are connected with the initial click point (true, the default value) or segment every object which is currently thresholded. | |||
RES_SEGMENT_RIDGES | bool | true | OBJECT PARAMS | Whether to try to follow ridges which are within the threshold when automatically thresholding data. If this and RES_SEGMENT_VALLEYS is false, stradview will revert to the previous default of jumping over gaps in the thresholded data. | |||
RES_SEGMENT_VALLEYS | bool | true | OBJECT PARAMS | Whether to try to follow valleys which are outside the threshold when automatically thresholding data. If this and RES_SEGMENT_RIDGES is false, stradview will revert to the previous default of jumping over gaps in the thresholded data. | |||
RES_SEGMENT_FRAME | long | 1 | OBJECT PARAMS | Whether to segment only the current frame (0) or every nth frame, when using automated thresholding. | |||
RES_SEGMENT_RANGE | long | 0 | OBJECT PARAMS | Whether to restrict the segmentation to this distance (in mm) from the click point, when using automated thresholding. A value of 0 (the default) disables this feature. | |||
RES_CONCAVITY_STRENGTH | long | 50 | OBJECT PARAMS | The relative strength, in percent, of concavity filling after segmentation. Setting this to zero does not attempt to fill any concavities, higher levels start to consider more features to be concavities which are then filled in. | |||
RES_JUMP_THRESH | long | 25 | OBJECT PARAMS | The gap, in pixels, which may be included in an automated segmentation, despite not being within the threshold. If 'res_segment_ridges' is 'true', this controls the maximum size of a ridge (or valley), otherwise it is the distance (in any direction) of the gap. | |||
RES_SIMPLIFY_THRESH | long | 3 | OBJECT PARAMS | When contours are created after thresholding, they are accurate to much better than a pixel, and contain very short segments. This threshold allows the contours to be simplified slightly, which increases the segment length, making the contours easier to edit. The default is '3' which is 0.3 of a pixel. | |||
RES_SEGMENT_OBJECTS | long | 1 | OBJECT PARAMS | Controls whether to split the segmentation into multiple separate objects after automated thresholding. If set to one, all contours will stay in the same (current) object. Otherwise, up to this number of sequential objects will be used, starting with the current object which always contains the region which was initially clicked on. Following this are any regions which are distinct, in order of size, with all remaining regions placed in the last object. | |||
RES_THICKNESS_TYPE | long | 0 | THICKNESS | The type of thickness algorithm used. This corresponds to the index (starting from zero) in the 'technique' choice in the thickness task page. | |||
RES_THICKNESS_OUTER_LAYER | bool | true | THICKNESS | Wether to include an outer surface when saving thickness files or creating a new surface from cortical thickness measurements. | |||
RES_THICKNESS_INNER_LAYER | bool | true | THICKNESS | Wether to include an inner surface when saving thickness files or creating a new surface from cortical thickness measurements. | |||
RES_THICKNESS_CREATE_OUTER | long | 2 | THICKNESS | Which outer surface to include when saving thickness files or creating a new surface from cortical thickness measurements. The number corresponds to the 'outer layer' choice in the thickness task page. | |||
RES_THICKNESS_CREATE_INNER | long | 3 | THICKNESS | Which inner surface to include when saving thickness files or creating a new surface from cortical thickness measurements. The number corresponds to the 'inner layer' choice in the thickness task page. | |||
RES_THICKNESS_CREATE_CAPS | bool | false | THICKNESS | Whether to include the end cap (which closes the surface) when creating a new surface from cortical thickness measurements. | |||
RES_THICKNESS_LINE | double | 1.8 | THICKNESS | The line length in cm for cortical thickness estimation from CT DICOM data. | |||
RES_THICKNESS_WIDTH | double | 0.0 | THICKNESS | The line width (radius to average over) in pixels for cortical thickness estimation from CT DICOM data. | |||
RES_THICKNESS_REVERSE | bool | false | THICKNESS | Whether to reverse the direction in which the thickness estimate is performed over the surface. | |||
RES_THICKNESS_GAUSS | double | 1e10 | THICKNESS | The std for the Gaussian blur in cm for cortical thickness estimation from CT DICOM data. 1e10 indicates the value should be estimated from the data. | |||
RES_THICKNESS_RECT | double | 0.0 | THICKNESS | The size of rectangular blur in cm for cortical thickness estimation from CT DICOM data. 1e10 indicates the value should be estimated from the data. | |||
RES_THICKNESS_A_AVERAGE | double | 1e10 | THICKNESS | The average external CT value in HU for cortical thickness estimation from CT DICOM data. Only used when also modelling metal in CT data. 1e10 indicates the average has not been measured. | |||
RES_THICKNESS_C_AVERAGE | double | 1e10 | THICKNESS | The average inner CT value in HU for cortical thickness estimation from CT DICOM data. Only used when also modelling metal in CT data. 1e10 indicates the average has not been measured. | |||
RES_THICKNESS_A | double | 1e10 | THICKNESS | The external CT value in HU for cortical thickness estimation from CT DICOM data. 1e10 indicates the value should be estimated from the data. | |||
RES_THICKNESS_B | double | 1e10 | THICKNESS | The cortical CT value in HU for cortical thickness estimation from CT DICOM data. 1e10 indicates the value should be estimated from the data. | |||
RES_THICKNESS_C | double | 1e10 | THICKNESS | The inner CT value in HU for cortical thickness estimation from CT DICOM data. 1e10 indicates the value should be estimated from the data. | |||
RES_THICKNESS_DISP_COL | long | 3 | THICKNESS DISPLAY | An index (starting from zero) into the selection box for which colour map to use in thickness estimation. | |||
RES_THICKNESS_DISP_MAP | long | 0 | THICKNESS DISPLAY | An index (starting from zero) into the selection box for which property to map over the surface after thickness estimation. | |||
RES_THICKNESS_SCALE_HUMM | long | 8 | THICKNESS DISPLAY | The scale value range (in 1000 Hounsfield Unit x mm) for the surface colour map when displaying cortical mass estimation from CT DICOM data. | |||
RES_THICKNESS_SCALE_HU | long | 20 | THICKNESS DISPLAY | The scale value range (in 100 Hounsfield Units) for the surface colour map when displaying cortical density estimation from CT DICOM data. | |||
RES_THICKNESS_SCALE_MM | long | 40 | THICKNESS DISPLAY | The maximum scale value (in tenths of a mm) for the surface colour map when displaying cortical thickness estimation from CT DICOM data. | |||
RES_THICKNESS_ZERO_HU | long | 0 | THICKNESS DISPLAY | The minimum scale value (in 100 Hounsfield Units) for the surface colour map when displaying cortical density estimation from CT DICOM data. | |||
RES_THICKNESS_MAP_DIRECTION | long | 0 | THICKNESS DISPLAY | Corresponds to the 'Map direction' choice in the thickness task page, where 0 = 'Normal', i.e. do not change the measurement directions. | |||
RES_THICKNESS_SMOOTH_FILL | long | 100 | THICKNESS DISPLAY | What extent (as a percentage) to fill in gaps in the data when smoothing thickness values over a surface. | |||
RES_THICKNESS_SMOOTH | long | 0 | THICKNESS DISPLAY | How much to smooth the data when smoothing thickness values over a surface. | |||
RES_THICKNESS_DISTANCE_REJECT | long | 39 | THICKNESS DISPLAY | When creating a surface from cortical thickness measurements, whether to exclude measurements too far away from the original surface (in pixels, 40 disables). | |||
RES_THICKNESS_OUTLIER_REJECT | long | 75 | THICKNESS DISPLAY | When creating a surface from cortical thickness measurements, whether to exclude measurements which represent too high a curvature (less then given angle). | |||
RES_BIN_IM_FILENAME | text | - | DATA | The name of the binary ".sxi" file (including extension) to load with this ".sw" file. Alternatively, if RES_BUF_DICOM is true, the name of the first (lowest number) DICOM or image file to associate with this ".sw" file, or the directory containing these files. |
The following parameters can be written to either data or settings files, and are followed by multiple values on each line. There can also be multiple copies of each parameter. For instance, there is one line of the form
IM time x y z azimuth elevation rollfor each frame in the data file, where each line gives a timestamp and the location and orientation of the image.
Token | Data file | Settings file | Values | Group | Description |
IM | time x y z azimuth elevation roll | DATA | One line per frame of data. The time (in 100 ns intervals), location x,y,z (in cm) and Euler angles (in degrees) of the position sensor at the point this image was recorded. The probe calibration values are also needed for conversion to the image coordinate system. If no positional information was recorded (RES_POS_REC false), this line only contains the time. | ||
LANDMARK | {type} {o} x y z {nx ny nz} name | LANDMARKS | One line per landmark (specific locations recorded by clicking on stored data). The location x,y,z (in cm) of this landmark in the position sensor base (world) coordinate system. If {type} is '2D' then z is the frame number. If type is 'SURF' then o is the associated object, and the surface normal {nx,ny,nz} is also stored. | ||
FIDUCIAL | x y z name | LANDMARKS | One line per fiducial (specific locations recorded by using a tracked pointing device). The location x,y,z (in cm) of this fiducial in the position sensor base (world) coordinate system. | ||
CURVE | o c x0 y0 z0 nx0 ny0 nz0 .. xn yn zn nxn nyn nzn name | LANDMARKS | One line per surface-based curve (a contour recorded by clicking on surface data). o is the associated object and c whether the curve is closed (0 or 1). The locations xn,yn,zn (in cm) and surface normals nxn,nyn,nzn are stored in order, followed by the name. | ||
RESLICE | type {width height nx ny nz} x y z {ux uy uz} | DISPLAY | One line for each of the three available reslices, type 0 (general) and 1 or 2 (orthographic). For general reslices, the width and height are included along with the normal {nx,ny,nz} and up {ux,uy,uz} vectors. The centre coordinates of the reslice x,y,z are always included. | ||
VOLUME | value r g b alpha enabled {rough metal anisotropy} | VOLUME | One line per colour used in the transfer function for volume rendering the data. The windowed value at which to apply this colour, followed by the r g b colour and opacity alpha, and whether or not this colour is enabled in the transfer function. This may also be followed by the material roughness, metallic and anisotropy values. All are saved as chars from 0 to 255. | ||
OBJECT | n solid r g b alpha {rough metal anisotropy} name | OBJECT | One line per object. The number n of the object, whether it is solid (0 or 1), the color r,g,b, transparency alpha, roughness, metallic and anisotropy value, and the name. | ||
CONT | o f closed x0 y0 .. xn yn | OBJECT | One line per defined contour in the data. The number of the object o which contains this contour, the frame f in which it was defined, whether the contour is closed (0 or 1) and the x and y locations, in pixels from the top left corner of the frame, of the contour vertices. |
These parameters relate to the overall view or input or undo/redo settings and are hence not dependent on a particular data set.
Token | Config file | Type | Default | Description |
RES_UNDO_GROUPS | long | 0x0FCE | Enables or disables particular groups of operations within the undo/redo feature. This is a binary bit-field affected by the checkboxes in the undo settings controls. | |
RES_UNDO_MAX_MEMORY | long | 1024 | The maximum amount of memory, in MB, allowed for the list of undo operations. | |
RES_EXPERT_MODE | bool | false | If enabled, turns off various warnings and checks. | |
RES_EXPERT_MODE | bool | false | If enabled, turns off various warnings and checks. | |
RES_ICON_SIZE | long | -1 | Determines whether the icon size is set (>=0) or automated according to screen size and scale (-1). | |
RES_MOUSE_RIGHT_OVERRIDE | long | 1 | Controls which tool the right mouse button selects. | |
RES_MOUSE_MIDDLE_OVERRIDE | long | 0 | Controls which tool the middle mouse button selects. | |
RES_GLUT_FONT | long | -1 | The font used to draw text in the graphics windows and also the sizes of some other graphics elements. This is either explicitly set (>=0) or automated according to screen size and scale (-1). | |
RES_USE_SCROLLBARS | bool | false | Whether to use scroll bars in all the visualisation windows, or to control zooming and panning using the mouse buttons. | |
RES_SCROLL_ZOOM | long | 5 | The amount to increase or decrease the zoom by (in percent) for each individual scroll-wheel click in the 3D, review and reslice windows. | |
RES_CURSOR_MOVEMENT | long | 5 | The amount to move by (in image pixels) for each individual cursor press in the 3D and ortho windows, or on the tracker-grids. | |
RES_CURSOR_ROTATION | long | 5 | The angle to rotate by (in degrees) for each individual cursor press in the 3D and reslice windows, or on the tracker-ball. | |
RES_MOUSE_SENSITIVITY | long | 5 | The number of pixels deemed to be a non-drag of the mouse, and the distance limit for selection. | |
RES_SNAP_LANDMARKS | bool | true | Whether to constrain data-clicked landmarks to lie on one of the acquired frames. | |
RES_PRESSURE_TASK | bool | false | If set to true in the config file, will enable the additional pressure task and panorama visualisation. | |
RES_SPINE_TASK | bool | false | If set to true in the config file, will enable the additional spine task and visualisation. | |
RES_SPINE_DISP_LANDMARK_NAMES | bool | true | Whether to show landmark names in the additional spine task and visualisation. | |
RES_DAT_THICKNESS_FILES | bool | true | Whether to save thickness files in the new DAT format with corresponding PLY surfaces (true) or the pre v5.2 format (false). | |
RES_VRML2_SURFACES | bool | true | Whether to save surfaces in VRML2 format (true) or VRML1 format (false). | |
RES_CORRECT_HALF_PIXEL_OFFSET | bool | true | Whether to automatically correct older (up to and including version 7.3) stradwin files for a half pixel discrepency between the Stradview coordinates and the DICOM or other medical format coordinates. | |
RES_SETTINGS_MASK | long | 0xFFFF | A bit-field indicating which settings should be included when saving a new settings file. | |
RES_DISPLAY_FEATURES | long | - | Used to control whether to display the Stradview version history on startup. Default value is related to current version number. |