Stradview version history
7.321, 20th September 2024
Bug fixes:
- The 'grab window' menu options on some graphics cards resulted in blank or incorrect images due to issues with their OpenGL drivers. A workaround has now been implemented for this.
- The shadowing when displaying surfaces could in some cases and on some graphics cards show a random coloured pattern. This has been fixed.
7.32, 17th September 2024
This version builds further on the major changes in v7.3
New features:
- The light sources used in 3D display no longer have to all be white: the new colour is set via a warmth value for each light. These are stored in new resources RES_AMBIENT_LIGHT_WARMTH, RES_FRONT_LIGHT_WARMTH and RES_SIDE_LIGHT_WARMTH.
- Stradview can now directly read Nikon C-Tek microCT files to import TIFF stacks with the correct voxel sizes and locations.
Changes to existing features:
- It is now possible to volume-render larger data sets at full resolution by using up to four 3D textures (hence a limit of 2048 x 2048 x 8192 if the maximum 3D texture width is 2048).
- Volume rendering is now up to 25% faster.
- The controls for graphics and lighting have been re-arranged to make space for the new light warmth settings.
- It is now possible to export 16-bit data as an 8-bit data set when saving in NIfTI or NRRD formats.
- There is a new 'auto' option for the graphics font which re-sizes automatically according to the screen DPI.
Bug fixes:
- The 3D window was occasionally updating twice on releasing a mouse button, now fixed.
- Screen scaling for high DPI monitors now works correctly in Linux.
- The trackball and grids for the ortho and reslice visual pages now update correctly when moving between differently scaled monitors.
Internal changes:
- Updated the wxWidgets library for Linux to version 3.2.4 (the same as the Windows version) and now compiling on Ubuntu 24.04 LTS.
7.31, 20th August 2024
This version builds on the major changes in v7.3
New features:
- Object names can now be displayed along with centres-of-gravity when displaying surfaces and intersections in all windows.
- There is now a new tool in the toolbar for visualising overlaid information like object names, scale bars and orientation indicators. This does the same as pressing the space bar did (and continues to do).
Changes to existing features:
- Improved handling of transitional data values at surfaces in volume rendering, which allows for the correct colouring of data without the need for a 2D transfer function. This improves both the colour and (sub-voxel) location accuracy for surfaces, and adds a new "min gradient distance" slider to the volume visualisation page.
- Point deletion when fitting a model to data is much more efficient and hence works better for large point sets.
- NIfTI and Analyze files which are stored as 4D but have unity size in the 4th dimension will now load successfully.
- It is now possible to import multiple surfaces (ply or wrl) to multiple objects at once using the "import from data files" button.
Bug fixes:
- Introduced a half-pixel offset correction for a difference in definitions between formats. Stradview uses the corner of each pixel as the reference, but DICOM, NRRD and NIfTI all explicitly define the reference at the centre of the first image pixel. The default is to automatically correct files stored using a previous Stradview version on loading. See Stradwin Coordinate Systems for more information on this.
- The Ortho visualisation page now has the correct background colour.
- Files in Analyze 7.5 "hdr" format were not loading incorrectly since v7.2. This has been fixed.
7.3, 24th June 2024
This version includes a new configurable undo/redo feature which can apply to most items saved in data files.
New features:
- There is now an Undo/Redo feature which can be used to undo or repeat single or multiple operations on most parameters which are saved with a data file, including contours, landmarks, curves, materials and the volume colour map. This is configurable in that different groups of operations can be included or excluded. Only image data or associated positions can never be un-done. It is implemented in a memory- and speed-efficient manner, but it can be completely disabled if there is a noticable (and unwanted) impact on performance.
Changes to existing features:
- The menu layout has been re-designed to accommodate these new features in an 'edit' menu and to make the labels a bit more standard. The 'GUI' menu is now called 'view' and contains some view settings which were previously mixed in with mouse and cursor settings. These latter settings have been moved to the 'edit' menu. Graphics and lighting can now be accessed from the 'configure' menu.
- Surface compounding (displaying data on a surface) can now also be turned off by setting the compounding to 'None' rather than having to change the compounding depth slider to zero.
- Loading or resetting settings via the 'file' menu now registers a change to any loaded data. This means you will be warned if you subsequently close the data set without saving, but it also means that the undo/redo features work for changing settings.
- More reliable placing of landmarks used to indicate contour issues (e.g. self-intersections) and surface interpolation can now fix more of these automatically.
Bug fixes:
- It was possible to create multiple landmarks with the same name when updating a surface from incorrect contours, which caused the landmark selection box to work incorrectly - this has been fixed.
- Landmarks used for cropping a volume and for point lighting are now updated correctly in their respective selection lists.
- Fixed a Stradview crash seen in a particular instance of re-assigning a cut patch to another surface.
7.29, 29th May 2024
New features:
- A simple model of ambient light propagation and scattering from directional light has now been included. This allows modelling of colour bleeding (reflection of coloured light onto other objects), ambient occlusion (varying ambient light according to accessibility) and some degree of sub-surface scattering. It also allows a much higher level of ambient light to be sensibly set, without reducing visualisation contrast, which significantly improves realism in some scenarios. There is a new RES_AMBIENT_SCATTER resource which enables this, and the default ambient light level has been increased to 0.3.
- The material colour and type in volume rendering can now be set by the location of each object as well as from the usual transfer function. If a surface (or surfaces) created from an object are selected for clipping the volume rendering, then choosing 'use surface material settings' will cause any voxels within that object to follow the object material definition.
- Clicking either the draw or erase tool after they have already been selected now toggles between only editing (or erasing) the current contour, and the normal mode of being able to edit or erase any contour. This can help when there are a large number of defined objects.
Changes to existing features:
- The transfer function in volume rendering is now interpolated with a smooth function (instead of linear) which keeps the material value constant for longer close to each defined point.
- The light transport calculation in volume rendering has been improved so light stays the same colour more consistently after passing through coloured translucent material.
- The speed has been improved for point light volume rendering.
Bug fixes:
- Stradview already marked contours which did not correctly define an object (usually due to self-intersections) using landmarks. Such contours could still be used for creating surfaces, but the fix to allow this to happen contained a bug which could generate obviously incorrect surfaces on some occasions and, in the worst case, cause Stradview to crash. This has now been fixed, such that reasonable surfaces can always be produced, though it is still best practice to correct any contour which has been highlighted with a landmark.
7.28, 21st April 2024
New features:
- Point lighting has now been enabled across all 3D visualisations. This is backed up by two new resources RES_LIGHTING_NEAR_FAR and RES_LIGHTING_LANDMARK. There are two modes of operation:
- A fixed point light can be placed at any existing data landmark (and the light will then move with that landmark). In this case, setting the 'light distance' to near or far will affect how far this light penetrates into the rest of the volume.
- If no fixed point light has been selected, an existing directional light can be brought closer to the data by changing the 'light distance' from far to near. In this case the lighting remains fixed to the viewpoint rather than the data, but becomes positional rather than directional (at infinity).
Changes to existing features:
- Better precision / more appropriate units in the display of volume calculations.
- The resource RES_VOLUME_LANDMARK now saves the landmark used for cropping a volume rendering.
Bug fixes:
- Low-precision on the locations for regular exported data based on reslices could cause it not to be detected as a regular data set when loading. The exported precision has been increased, and the check on loading improved to fix this issue.
7.27, 22nd March 2024
New features:
- The volume rendering can now also be cropped to a sphere of any radius centred on a landmark. There are two new resources for this: RES_VOLUME_LANDMARK_RADIUS and RES_VOLUME_LANDMARK_INVERT.
Changes to existing features:
- Surface creation has been substantially improved for very thin surface regions or very small gaps between surfaces, such that single-pixel-width features visible in the contours carry through correctly to the interpolated surfaces.
- Ridge and valley following has been further improved so more features outside the defined threshold can still be segmented.
- Surface normals have been improved slightly when not performing any smoothing of the surface.
- There is a new warning if you try to create a surface at a resolution which is too low given the spacing of the cross-sections. This is disabled if expert mode has been selected.
- Concavity removal if the surface intersects the first or last images has been slightly improved.
- Smoothing of shadows has been improved during surface display, reducing inappropriate blur across disconnected surfaces.
- There is a new material 'Various Ivory'.
Bug fixes:
- Surface smoothing could generate extrapolated vertex locations for very small features with strange normals, now fixed.
- When exporting frames with no associated positions, the exported data set could end up with a non-zero RES_ZSCALE value, causing it to behave as if it had positions in some circumstances, now fixed.
- The visualisation associated with the optional pressure task now displays correctly.
- When masking the data using a region, the dynamic display now shows exactly the same pixels as are eventually masked.
7.26, 20th February 2024
New features:
- It is now possible to over-ride the positions embedded in an imported 3D data set so they can be manually edited, which is helpful if the positions were not recorded correctly. They can also be reverted back to the embedded positions after editing.
Changes to existing features:
- After running Cortical Thickness Mapping over a surface, the visualisation page now displays the average results over the entire surface. This switches back to individual results if a manual measurement is performed by clicking with the measure tool.
- There have been various improvements to automatic segmentation using ridges and valleys.
- When loading NRRD or NIfTI data, if the data units are not defined, they are presumed to be in Hounsfield Units (HU) if each corner of the image has the same values, and they are in an appropriate range.
Bug fixes:
- Volume rendering now shows outlines and landmarks in the correct colour (not black) when radiant shadowing is disabled.
- Corrected an error in the bottom right image window where landmarks were incorrectly displaying at the edge of the window when their location should have been outside the window due to the data being zoomed.
- Fixed a half-pixel offset only affecting display of the data value in the bottom notification bar when clicking on the top-right image window.
7.25, 16th January 2024
Changes to existing features:
- The side light (for both surface and volume rendering) can now have any direction at all, including shining forward from behind the data, or orthogonal to the viewing direction. This is particularly useful for highlighting thinner features in volume rendering, or for raking light.
- This is implemented by extending the range of the left-right lighting slider to 360 degrees and the up-down slider to 180 degrees. Both these ranges where previously only 120 degrees.
- The lighting controls have now been grouped together to the right of the graphics dialog, and the brightness compensation slider has been moved here from the volume visualisation task.
- There is a new 'overall wetness' control on the volume visualisation task which controls specular lighting just in front of strong gradients to simulate a thin layer of water.
- Some of the default values for lighting resources have also been adjusted and there is a new RES_VOLUME_WETNESS resource.
- Some minor improvements to other aspects of volume rendering, including to volume clarity (renamed to 'front face translucency' which describes this feature more accurately).
Bug fixes:
- The binary (thresholded) display was incorrectly disabled if attempting to switch to label data on a dataset which was not appropriate for this.
Internal changes:
- Updated the wxWidgets library for Windows from version 3.2.2.1 to version 3.2.4. wxWidgets in Linux is still version 3.0.5.
7.24, 1st December 2023
New features:
- The existing 'import from DICOM files' button which could import contours to different objects has now been extended to allow imports of objects from NIfTI (or Analyze) label data, and has been renamed 'Import from data files'. Such data is represented as a binary volume but is converted to appropriate contours on loading. It is also now possible to select multiple files, in which case all contours will be imported, to sequential objects starting from the current object.
- A threshold-based segmentation can now be automatically split into multiple objects, with the maximum number set by a slider (and new RES_SEGMENT_OBJECTS resource). The first object is always the one which was clicked on, with the others in decreasing order of size.
- The 'erase' tool in the 3D window now works on multiple surfaces in much the same was as for multiple object contours. Surfaces can be selected, and either deleted, re-assigned to a different surface, or reverted back to object contours, all in the 3D window.
- The 'Delete' button for the current object now also allows you to re-assign this object to another one.
- There is a new 'Pack' function on the draw task page which removes and resets any missing objects from the list, and packs objects to the top of the list, preserving properties if the object is named differently to the default.
- Volume renderings can now be cropped to the current reslice plane (new RES_VOLUME_CROP_RESLICE resource) as well as to x, y and z planes.
- It is now possible to specify the units for loaded data (new RES_DICOM_UNITS resource), if not already specified in the file. In particular, this allows you to specify 'HU' (Hounsfield Units) for NIfTI or other files which actually contain CT data.
Changes to existing features:
- There have been various improvements in volume rendering efficiency and accuracy, leading to a roughly 50 percent reduction in time to render, and better combination with opaque surfaces, including more correct shadows when volume rendering a cropped section.
- The 'DICOM display' dialog and menu option has now been changed to 'Image display' since it applied to non-DICOM files as well. This dialog has also been re-arranged, and the previous 'air' and 'water' buttons, used to convert from raw data to units, replaced with direct control over the multiplier and scale used in conversion.
- It is now possible to open non-stradview files as well as stradview files by dragging them over the executable (or double-clicking if the file type is associated with Stradview).
- Scripts can now use IMPORT_SURFACE with a specific named file (including the full path), and also show an error if no surfaces were found to import at all.
- Concavity detection in threshold-based segmentation has been improved, and now assesses potential concavities containing deeper concavities.
- Ridge and valley following when segmenting are now always presumed to be in 3D (and the RES_SEGMENT_RIDGES_3D resource has been removed).
- Changed surface resolution default from 'Medium' to 'High', which ensures most surface details are usually seen.
Bug fixes:
- DICOM files which contained signed and compressed data were displaying incorrectly after loading. This has now been fixed.
- Removed a warning about saving the data file on close if the software was initially run from a script.
- The software update check now does not run if auto-running a script - this was causing a fatal error since the Stradview window was already closed at that point.
- Corrected occasional bright pixels caused by a zero data gradient during use of gradient clarity in volume rendering.
- Corrected possible low alpha bit-depth on display which could cause incorrect (heavily posterised) transparency on exported images of the 3D window.
- Fixed occasional minor corruption of display when showing transparent surfaces, due to the use of discard in some shaders without always writing a fragment depth.
7.23, 20th September 2023
This version provides minor changes to v7.2
Changes to existing features:
- The 'flip' and 'rotate 180' buttons in the reslice window have been replaced by buttons to rotate by 90 degrees about the three reslice axes. These are more flexible, and can mimic the previous buttons by pressing twice.
Bug fixes:
- Images grabbed from the outline window which were transparent had their alpha values corrupted in some cases when mixing volume and surface rendering. Now fixed.
- Version 7.22 had been compiled on Linux for Ubuntu 23.04, which was not a long term support version. Now reverting to 22.04, which is.
7.22, 7th August 2023
This version provides further improvements and fixes to v7.2
Changes to existing features:
- Improved shadows in volume rendering - less blurred (blurring now controlled by ambient occlusion slider) and more accurate when cast over opaque surfaces.
Bug fixes:
- DICOM frames which contained compressed data, but where the size of the data was larger than if it had not been compressed, were not loading correctly: this has been fixed.
- When loading by selecting an individual DICOM file, Stradview can now find sequences of numbers in the file name even for numbers with many digits.
7.21, 26th July 2023
This version provides some improvements and adds licensing details to v7.2
Changes to existing features:
- Increased resolution and speed in the volume rendering and improved volume quality options.
- The edges of the cropped data in volume rendering are displayed with appropriate shading given the face normal, not the data gradient.
- Cropping location in volume rendering is now always relative to the extent of the original data.
- Using the 2D window 'invert' tool now also flips the orthogonal reslices consistently.
Bug fixes:
- There was a critical bug introduced in v7.2 which caused some manually-defined surfaces to be interpolated in the wrong direction, leading to surfaces which were distorted at the first and last frames. This has now been corrected.
- Cropped data edges were being displayed incorrectly in volume rendering when in front of a surface or frame.
- Occasional segmentation features due to detection of tiny, but false, concavities have now been avoided.
7.2, 12th June 2023
This version includes import and export of NIfTI and NRRD image data, input of DICOM RTSTRUCT and SEG objects, display of categorical data as labels, and automatic conversion between label data and contours and surfaces.
New features:
- There is a new option to 'export image data' (presuming the frames are regularly spaced) in compressed or raw NIfTI and NRRD formats. This means that Stradview can be used to convert data to these from all loadable formats. 'Export specific frames' can also be used to convert each frame to a sequence of images, and 'export resliced data' to convert to a regularly spaced data set.
- NIfTI-1 and NIfTI-2 data files (both .nii and .nii.gz) can now be loaded.
- There is a new button in the draw task so that DICOM radiotherapy planning (RTSTRUCT) contours can now be imported to Stradview objects. This also allows DICOM segmentation (SEG) files to be imported and converted to Stradview object contours.
- If the data is categorical (i.e. represents labels) it can now be displayed as such using the 'Show labels' button on the draw task page. When displayed as labels, clicking on that label with the draw tool will create contours from the label and store the result in the current object.
- A new button in the draw task automatically converts all the labels in a categorical data set to Stradview object contours, with one object per label.
- Saving surfaces to a mask (categorical data set) can now be performed in NRRD format as well as in NIfTI format.
- When comparing the current to the alternate surface in the thickness task, setting the map direction to 'nearest' searches for the closest point, rather than measuring the direction along the surface normal.
Changes to existing features:
- The segmentation thresholds now use a magenta tint so the original data can still be seen.
- Stradview now prompts for specific file types on load to make it more obvious what formats it recognises.
- Clicking on the volume rendering histogram now adjusts the windowing if it is beyond the range of the data.
- The 'param' command in a script can now be used to set resources which do not start with "RES_".
- 'Export voxels' changed to 'export resliced data' since that better describes what it does. This now always saves the data in Stradwin format, along with any resliced surfaces and landmarks.
- Invalid DICOM data values are now written as a display value of zero rather than one. This might mean that old DICOM files which contain the invalid value within as well as outside images may appear partially transparent in some instances.
- Removed 'smoothing type' option from the draw task page, since 'Before v4.7' was not actually useful.
Bug fixes:
- When automatically segmenting an object with 'connected regions only' and 'valleys in 3D', clicking on several (non-segmented) start points could result in the same regions being segmented twice. This has now been fixed.
- Automatic landmarks created when there were issues with the surface interpolation could have the same name as each other. This name now includes the object as well as the frame number to make this less likely.
- When reading DICOM files containing multiple frames, frame positions and orientations are now from the correct per-frame or shared sequences.
- Fixed an error with the alignment of the data when using 'export resliced data' which was apparent since version 7.17.
7.19, 17th May 2023
New features:
- 16-bit data (for instance, most DICOM and TIFF data) can now be filtered over frames as well as within each image. This allows full 3D filtering, which can improve both segmentation and cortical thickness mapping results on more noisy data.
- There are new volume rendering colour maps for lungs and fabric in CT, as well as improved default CT maps.
Changes to existing features:
- It is now possible to load more types of MHD (ITK Metaimage) data, including 8-bit data, and there are more rigorous checks when loading NRRD data.
- The IMPORT_SURFACE function in scripts now allows explicit specification of the extension for the surface file, rather than adding either "*.ply" or "*.wrl" to the given file name.
- The resolution of shadows when visualising surfaces has been improved slightly.
- Progress dialogs now appear sooner if an operation is predicted to take more than a second to complete.
Bug fixes:
- Fixed a slight loss of precision when saving reslice orientations to settings files.
- There was a fatal error when importing a surface from a script file which took more than 0.25 secs to process. This was the result of a change introduced in version 7.17, but has now been fixed.
7.18, 10th March 2023
New features:
- The direction of the side light in the 3D window can now be changed for both surface and volume renderings, and there are two new lighting resources which control the left-right and up-down angles.
- Added the ability to create cortical thickness mapping data which is just a fixed thickness over all vertices. This allows the creation of fixed offset surfaces by using 'create surface in alternate'.
- There is a new 'Set 3D window size' option in the GUI menu. This also means that images grabbed from this window can be set, for instance, to the standard HD 1920 x 1080 for later creation of movies.
- The 3D window can now be scrolled to a particular point (viewpoint moved) with the 's' key and a new SCROLL_3D function within a script.
Changes to existing features:
- The 'Grab 3D window' option can now create images with alpha (transparency), so long as the format supports it (PNG and TIFF) and the background is uniform rather than shaded. This allows a saved 3D image to be blended over the top of another image.
- NRRD files can now be loaded (with a warning) even if they do not contain an orientation or offset.
Bug fixes:
- From version 7.17, there was occasional viewpoint matrix corruption in the 3D window, which was caused by saving view vectors with insufficient precision. This could lead to click-points not matching the mouse location or warped 3D views. Correct viewpoint is now enforced.
- Corrected triangle sense (winding number) on some interpolated microstructure surfaces.
- Corrected wrong positioning of graphics window on some platforms when enabling or disabling scroll bars.
- Fixed a bug which occasionally caused some draw task controls not to update immediately.
Internal changes:
- Updated the wxWidgets library for Windows from version 3.2.0 to version 3.2.2.1. wxWidgets in Linux is still version 3.0.5.
- Now presuming at least OpenGL 2.0, which should always be the case. Shaders and all graphics options available for OpenGL 3.0 or above.
7.172, 6th February 2023
Bug fixes:
- Version 7.17 and following contained a bug which meant that using 'Find' for either surfaces or landmarks caused the orthographic reslice windows to be oriented incorrectly. This has been fixed.
7.171, 30th January 2023
New features:
- The material selector now also includes changing the anisotropy of the material.
Bug fixes:
- Version 7.17 contained a bug which meant that changing the windowing in the review window did not cause the other reslice windows to update correctly. This has been fixed.
- The Cook Torrance shader now matches the Phong shader better for different metallic and roughness values.
7.17, 24th January 2023
New features:
- Added the ability to save and load sets of parameters (by group) on top of a loaded data file, which allows saving and recording multiple sets of analysis or visualisation settings. These parameters can also be reset to default values. They are re-set when a file is closed, as for configuration parameters.
- Added reslice locations and outline view to these parameters, so that the view can be saved as a settings file.
- There is a new lens focus simulation, based on the depth in the 3D window, primarily for opaque surfaces and volume renderings.
- Object colours, metallic and roughness values in the draw task and volume visualisation pages are now set via a material selector. This contains pre-set material types and the ability to store new ones, and has a much improved visualisation of material type.
- As a result of this, there is a new 'materials' sub-directory in the application and user data folders for storing pre-defined and user-defined materials.
Changes to existing features:
- Alternative improved concavity feature for object creation based on fitting a plane to edge voxels and looking at the average distance from this plane.
- Stradview now prompts the user to add manual locations when a 2D data set is loaded with no pre-defined locations.
- Many resources are now saved in the data file which weren't before.
- Many resources are now saved in the configuration file which weren't before.
Bug fixes:
- Fix to the internal 3x3 eigen decomposition for a possible (but never actually exhibited) NaN value as a result of taking acos of (just) > 1.0.
- The specular lighting in the Cook Torrence shader now correctly responds to light direction settings, as diffuse lighting already did.
- Fixed a bug in the save functions for the 3D and reslice windows which was incorrectly changing the internal graphics state.
- The volume rendering colour map selector now switches to the current selection when a new colour map is saved.
- Anti-aliased cropping in volume rendering was not working correctly with capped surfaces, now fixed.
7.16, 19th December 2022
Bug fixes:
- In previous versions, the internal function which creates contours from surfaces could very occasionally mark a contour as being open when it should be closed, which resulted in missing data from cropped, anti-aliased, volume renderings.
- The new code for detecting concavities in 3D segmented objects now treats concavities close to the boundaries of the data correctly.
7.15, 7th December 2022
New features:
- The 'ridge' and 'valley' following during segmentation using thresholds has been significantly improved. This now works in 3D, based on principal components of the 3D Hessian second derivative matrix. This improves the ability to find large thin laminar pieces which are below the threshold, or to remove laminar gaps which are above the threshold. It also makes it possible to detect such structures even when they are entirely aligned with the plane of the image data. The new 'in 3D' checkbox enables this.
- The checks for concave regions which already happened after a 3D threshold-based segmentation have now been extended to cover concavities at multiple dimensions, with a new 'concavity strength' slider to control the threshold at which a concavity is detected and removed.
- Using surfaces to crop parts of a volume rendering has been improved so that sub-voxel resolution is now possible by antialiasing the surface (partially cropping according to what percentage of the voxel is included within the surface). It is also now possible to use a separate alpha channel for cropping rather than changing the data value at each voxel, which takes more graphics memory but preserves colour mapping better.
- A scale bar is now displayed in all image windows if working on landmarks or measurements. This is also enabled or disabled by the space bar or 'g' key.
Changes to existing features:
- There is a new 'very high, cubic' resolution option for volume rendering.
- If the edge of the data is visible in a volume rendering (possibly due to simple cropping) it is now being rendered without using the (incorrect) data gradients over that face.
- The 2D ridge and valley following when segmenting using a threshold (without the new 'in 3D' option) has also been improved to use principal components of the 2D Hessian second derivative matrix, which is more robust.
- The 'automate using zoom' option in the draw task page has been removed since it no longer really made sense with the new controls.
- Measuring distances between surfaces in the thickness task is now a bit more efficient in memory and a little faster.
- Thick reslicing is now always affected by the DICOM windowing centre.
- The space bar can now be used as well as the 'g' key to toggle display of zoom regions, patient coordinates and scale bars.
Bug fixes:
- Volume rendering data was being set up incorrectly when the in-plane resolution was lowered and no filtering was being used. This has been fixed.
7.14, 19th October 2022
New features:
- When creating a contour via thresholding, it is now possible to follow valleys (narrow gaps between objects which are within the threshold) as well as ridges (edges of an object which are outside the threshold).
Changes to existing features:
- There is a new warning about missing frames if the data is clearly a stack of images but they are not all regularly spaced.
- Volume rendering now handles limits on texture memory and texture sizes better, and can reduce in-plane and out-of-plane resolution independently, leading to better visualisation for very large data sets.
- Intersections between planes and surfaces, for instance the dashed lines in the reslice windows, are now generated faster.
- Several improvements to creating a surface from contours including slightly better surface location and faster and more reliable operation when the data is a regular stack of images.
Bug fixes:
- Better handling of missing volume rendering configuration files.
- Corrected buffer over-run when reading padding values from particular DICOM files.
- Improved occasional missing key events from graphics windows.
- Sub-structure file directory now set up more reliably when referenced by loaded shape model.
7.13, 9th September 2022
For those updating from v6.22 or earlier, v7.0 was a significant update to the graphics and surface rendering, and v7.1 introduced new high quality and flexible volume rendering of data.
Changes to existing features:
- The volume rendering now includes an option to highlight gradient edges, which makes internal features clearer, a bit like the 'clear phong' shader for surfaces.
- The front light in volume rendering now also reacts to the ambient occlusion control, creating slight shadows around nearer features to improve visibility.
- The labels for Cortical Bone Mapping have been made more generic so they apply to non-bone layers: 'outer' (instead of 'joint space') is used for anything outside the cortex and 'inner' (instead of 'trabecular') for inside.
- When creating a new surface from CBM data, it is now possible to select from four different measured surfaces: both cortical edges and the nearest inner and outer surfaces as well. This selection is via two specific controls and is no longer implied by the data currently visualised on the surface.
- The 'cap surface' option for CBM now also creates caps for patches (i.e. partial surfaces), so an enclosed surface is formed between two layers.
- The CBM 'auto-threshold' option has been improved, making it particularly appropriate for creating surfaces to mask data in a volume rendering.
- Text antialiasing has now been enabled in the 3D window (it was already enabled in the other windows).
Bug fixes:
- Volume rendering is slightly more consistent between dynamic rendering (e.g. as the view is rotated) and the final result.
- It is now not possible to use a derived CBM surface to create another derived CBM surface: doing so was causing stradview to crash.
7.12, 8th August 2022
This version provides some further improvements and fixes to v7.1
Changes to existing features:
- The volume rendering now does phong shading and hence it is possible to set separate metallic and roughness properties corresponding to each of the rendering colours.
- Colour and material sets for volume rendering are now loaded from the Stradview executable folder, and user-defined sets can also be saved in the configuration folder.
- It is now possible to load DICOM radiotherapy dose simulation (RTDOSE) files, in which case units are shown in Gray (GY).
- The Stradview configuration file is now in the (more typical) AppData folder on Windows. Existing configuration files will be moved to that location if found.
- Some default resource values have been changed: this only affects those running Stradview for the first time.
Bug fixes:
- DICOM files with multiple frames in a single file could in some cases be interpreted with the frame sequence in the wrong z-direction, such that the frame locations were not correct. This has been fixed.
- Using 'open directory' now works more consistently, particularly for multi-frame files, multiple DICOM sequences in the same folder, and copies of DICOM sequences in different folders but with the same series UID.
- There is now some additional trimming of trailing spaces when constructing file names during script processing.
7.11, 20th July 2022
This version provides some minor improvements mainly on the volume rendering in v7.1
Changes to existing features:
- Volume rendering now sets the depth to the point where rendering first becomes opaque, which means that landmarks can be placed on it.
- Improved use of gradients to make data transparent in volume rendering. Transparency is now reduced for gradients not aligned with the view direction, which avoids creating a visible empty region around high gradient objects.
- Improved shadow resolution when displaying surfaces.
Bug fixes:
- Shading and orientation of volume rendering is now correct for either reslice-based (non-orthogonal) or data-based (orthogonal) versions, and for data sets with frame spacing in either direction.
- Stradview is no longer incorrectly using DICOM slice thickness for image spacing in some processing tasks.
- Corrected sub-pixel location of text in graphics windows so it always displays with correct antialiasing.
- Improved the warning and the performance if the graphics device can't handle transfers between live and off-screen depth-maps during display of translucent surfaces or volume rendering.
- Corrected surface cropping selection behaviour in the ortho / reslice / volume tasks so a surface does not get de-selected just because the opacity / name / etc gets changed.
- Adjusted shading of opaque surfaces in volume rendering so it is more correct (though still lights are not fully independent).
Internal changes:
- The Windows version has been updated to wxWidgets 3.2.0 and MSVS 2022 using build tools v143, and will no longer run on Windows XP or Vista.
- Stradview now checks each data set after loading and internally sets zscale to non-zero if the data is a regular stack of images, with the sign of zscale indicating direction. This allows greater efficiency of some operations.
7.1, 23rd May 2022
This version adds the ability to perform realistic volume rendering of data.
Volume rendering
- Stradview can now display volume renderings of data (as long as at least OpenGL 3.0 is supported) and there is a new visualisation page which controls the various associated settings.
- The volume rendering includes realistic lighting from two sources, shadowing and translucency.
- The overall design is a compromise between speed and memory: only the windowed data (one byte per voxel) is transferred to the graphics card, which means Stradview can cope with large micro-CT data sets with most graphics cards.
- The colour and opacity transfer function mapping is via ten colour sliders, but these can also be set via dragging points overlayed on a histogram of the data.
- There are also several default mappings, particularly for CT and micro-CT data sets.
- Overall control of data quality determines the best volume rendering, but this is automatically lowered during dynamic update (for instance rotating the view).
- An overall translucency allows fast adjustment of what is being displayed.
- An overall gradient threshold allows a much greater contrast to be achieved between materials (similar to a 2D transfer function, but easier to control).
- The volume rendering can be cropped with any surface which has been created from the data, no matter how complex, so it is possible to exclude un-wanted data of any geometry.
- Volume rendering can also be combined with the display of any completely opaque surfaces or objects.
Other new features:
- The background in the 3D window can now be shaded so that it is consistent with the various lighting effects.
- An additional model fit has been added for cochlear implants.
Changes to existing features:
- It is now possible to load NRRD data sets stored as unsigned 8-bit or 16-bit and signed 16-bit data, and also data sets with separate header and data files.
- The animation of slab-rendering for reslices has been changed so that dragging with the mouse now changes the reslice orientation rather than displaying pre-stored thick reslices.
- The data resolution in reslices is now much higher and will use the underlying 16-bit data if available, which greatly improves the accuracy of average thick reslices.
- The range of the reslice thickness slider is now adjusted appropriately for each data set.
- When accessing the dicom filtering slider, the display is now only updated when the filtering actually changes.
Bug fixes:
- Corrected issue which had been preventing loading of some old (and non-conforming, i.e. group 2 not using explicit VR) DICOM data sets.
- Corrected setting of internal slice thickness for some NRRD data sets, and old data sets using manually set frame positions.
- Correction to shadow direction when displaying surfaces with side lighting.
- Fixed shadowing occasionally flickering off when moving translucent surfaces.
- Fixed issue preventing data load via 'open directory' when it contained only one loadable series, but other non-loadable files.
7.03, 12th January 2022
This is another addition to the major changes introduced in v7.0.
Improvements to existing features:
- Improved display of surface curve intersections with image windows using transparency rather than additional dashed lines.
- When using surface curves to cut patches from a surface, can now move the original surface to a new object even if it contains end caps.
- Slightly improved thresholding when both the 'Grey' and 'to' sliders are non-zero.
Bug fixes:
- Correction to zooming so that the window position remains at the mouse location when zooming into the bottom corner, and so that the data stays centred when using 'zoom lock' to adjust other windows.
- Minor adjustment to 'Clear phong' shader to make the effect in orthographic and perspective views consistent.
- Fixed incorrect drawing of a thickness line direction with some specific data sets in the 3D window.
- Fixed an error due to un-initialised rotation matrix when rotating a shape model.
- Fixed a crash caused by moving a non-surface-based landmark in the 3D window to a surface location.
7.02, 23rd December 2021
This is another addition to the major changes introduced in v7.0.
Improvements to existing features:
- Updated all the font rendering functions so that more font sizes are available within the graphics windows and they are drawn more clearly. This should enable use of sensible font sizes for scaled displays on high resolution screens, but you may need to change your default 'graphics font' setting.
- Added an 'auto centre and size' button to the main reslice visualisation.
- When comparing a surface to itself in the 'thickness' task page, average density inside the surface can be measured along the line, even if it is not long enough to intersect with the opposing surface.
- Radiant shadows are now more precise, particularly when viewing small isolated surfaces which are part of a large data set.
Bug fixes:
- Fixed an interpolation error ony present with specifically aligned frames when using 'display pixels' and displaying thresholded data.
- Fixed a bug in the HRTC version of CBM, which could cause stradview to crash.
7.01, 6th December 2021
This builds upon the major changes introduced in v7.0.
Improvements to existing features:
- Fitted shape models can now be mapped back to a draw object in addition to just mapping new contours to an object.
- Most of the 'graphics' resources are now saved with individual data files as well as in the configuration file.
- The sub-pixel contour position for ridge following in automated contour creation has been improved.
Bug fixes:
- An artificial limit on memory capacity which caused a crash when creating very high resolution complex surfaces in large data sets has been removed.
- A mistake in sub-pixel placement of the top-left contour point in each contour has been corrected.
- The user is now warned, before closing a data file, if a resource saved in both data and configuration files has been changed.
7.0, 26th November 2021
New features:
- New OpenGL shaders for improved surface visualisation using Phong / Cook Torrance / Clear Phong models, with a new RES_SHADER resource to support this. These are available on systems which support at least OpenGL 3.0.
- New 'graphics' GUI dialog including new features related to shaders and some of the ones from the 'mouse shortcuts' GUI (now called 'mouse and keys').
- New 'metallic' and 'roughness' object properties for each of the objects. These are also now written to the stradwin file format.
- 'Metallic', 'Roughness' and 'Opacity' ('M', 'R' and 'O') controls are all now on sliders for each object, so there is an immediate effect in the 3D window.
- Correct translucency for surfaces and reslices in the 3D window, even for complex surfaces, using depth peeling.
- Control over ambient light levels and balance of front and side lighting.
- Ambient occlusion modelling for more realistic light levels in corners and between surfaces.
- Radiant shadow modelling for casting shadows from directional lights, including through translucent objects.
- New buttons on the draw task page: 'Revert' for going back to the object contours, 'Reset properties' for the default object properties, and now 'delete' on both all objects and just the current object. It is also possible to change object properties for all objects simultaneously.
- New 'delete all landmarks' button on the landmarks task page.
Improvements to existing features:
- Display of surfaces and contours is much faster in many cases.
- Contour erasing in the 3D window is very much faster, so can now be used on high resolution complex data.
- Surface intersections with reslices are also faster, improving interaction with complex surfaces on high resolution data.
- The mouse sensitivity setting is now used in more cases (e.g. clicking on surface curves).
- Exporting to voxels from DICOM data now sets the MASKED_DATA resource, which means that invalid data (for instance outside the reconstruction area) is still indicated as such in the exported data.
- Draw task page presentation has been tidied up, and the delete buttons now check what things might appropriately be deleted before offering choices.
- Slightly better sizing of controls on the Linux version.
- The graphics font size is also linked to contour line width, and line width stippling (dot/dash drawing) is a bit clearer.
Bug fixes:
- The script feature now correctly closes the current data file before running the 'open' loop.
- Fixed bugs causing a (very rare) crash on assigning contours from an object to the same object, and on erasing contours in 3D.
- Fixed a memory leak in the Fit model task.
- The thickness colour key in the lower window now always responds to colourmap changes.
Internal changes not affecting functionality:
- At least OpenGL 1.1 is now assumed, VBOs and VAOs are used if the version is at least 2.0, and shaders are used for 3.0 or more recent versions.
- Most of the old fixed-function OpenGL pipeline has been removed, though line smoothing and fixed function code for small display features (e.g. landmarks / zoom display / orientation display ) remain.
- A lot of redundant code and many functions have been removed.
6.22, 23rd September 2021
Bug fixes:
- Fixed a major bug introduced in 6.2 which caused stradview to crash when loading CBM data back on to the surface from which it was created.
6.21, 17th September 2021
Bug fixes:
- When opening DICOM or image files using 'open directory', if only one sequence was found and there were other, non-openable, files in that directory, Stradview was mistakenly stating that there was not enough memory to load all the files. This has now been fixed: but the advice remains not to have additional files in a directory if opening files this way.
6.2, 10th September 2021
Bug fixes:
- The surface opacity now returns to normal after dragging a curve point in 3D.
- When exporting frames from a data set which has had manual positions added, the new file now contains the correct z-scale information in the 'image location' dialog. Further changes to positions are not allowed, since they would not then agree with the original data set. In addition, when loading files with manual positions, the z-scale is now correctly displayed rather than set to zero.
- As a result, the POS_MANUAL_SPAN resource is now of type double rather than long.
New features:
- There is a new 'reverse line direction' in the CBM task page, which switches the direction (from the initial defined point) in which CBM is performed along the current line. This is also indicated in the associated .dat files if they are saved.
- The cortical and trabecular density are now displayed with the other textual measurements on the 'thickness' visual page.
- The location of the initial defined point in CBM is now displayed in the bottom window, as well as intersections with any other surfaces if this point was defined from a surface.
- If thickness has been calculated from the surface (by comparing it with itself in the 'thickness' task page), subsequent CBM measurements are checked against these measurements and may be invalidated if they are not consistent. This is particularly helpful for measuring across the whole skeleton including thin bones.
- Thickness-from-surface calculations can also be saved if they have been measured.
6.16, 15th June 2021
New features:
- When importing a surface, the 'Every frame' slider in the draw task page is now used to determine whether to create cross-sections in all frames, or to generate a less dense set of contours which skips some frames.
6.15, 22nd April 2021
New features:
- It is now possible to include additional sub-structure models within the loaded shape model. These can be registered to the current data via an RBF based on the shape model fit.
- Surface landmarks and curves, which were already stored in .ply files, are now also loaded in when importing objects.
6.14, 12th February 2021
Bug fixes:
- Surfaces and landmarks in the 3D display were incorrectly coloured with some Linux display drivers. This has now been fixed.
New features:
- Added a new experimental option 'Continuous inner/outer densities' in CBM. Disabling this may estimate trabecular density more accurately.
- Added a new How-To on fitting shape-models to thresholded data.
6.13, 19th November 2020
Bug fixes:
- Compressed DICOM images loaded directly from DICOM files had been displaying as black, from version 6.07: this has now been fixed.
6.12, 12th November 2020
New features:
- Shape models now include initial positioning by using two landmarks and a manual rotation.
- The information when writing textual or CSV files from objects now also includes the minima and maxima within each object or contour, as well as the average data values.
- For 16-bit data, for instance from CT, the threshold sliders in the draw task page now also show the threshold value in the data units, as well as in the 8-bit display values.
- Stradview can now load special TIFF files created with wxDicom, with Refined Metal Artifact Reduction (RMAR) applied. These files are created by wxDicom when the original DICOM data is in a compressed format, and include 3D location and windowing settings.
Bug fixes:
- A bug which allowed the scrollwheel to zoom to negative values has now been fixed.
- More fixes related to the loss of paint events when drawing with GTK3 on Linux.
6.11, 6th October 2020
New features:
- Stradview can now load a partial data set if there is not sufficient memory to load the entire data set.
- A dialog is now shown if the DICOM windowing or filtering is taking a long time, for instance if changing parameters when a reslice image is showing.
- Now recognises the QRM 6-insert Bone Density HA phantom.
- Some NRRD data in compressed format can now be imported.
Bug fixes:
- A bug which caused some DICOM data not to load correctly has now been fixed.
6.1, 10th September 2020
New features:
- Added extensive How-Tos in documentation which give advice on typical Stradview tasks and how best to go about them.
- Added this version history to the main Stradview documentation. This automatically displays the first few times Stradview is run after downloading.
- Added new 'check for updates' and 'online pages' options to the 'help' menu.
- Stradview no longer expires after one year, but will instead prompt you to download a new version.
- Included a new shape model for the talus bone in the foot.
- When saving the surface of a segmented object, the file name now defaults to the name of the object.
Bug fixes:
- Corrected an error in the small icon for image flipping which prevented it from displaying.
- Fixed incorrect task and visual page selection on GTK Linux when clicking on notebook arrows.
6.08, 31st July 2020
Bug fixes:
- Frame slider re-sizes correctly on loading data.
- Fixed error in image scales when exporting data originally loaded in HDR or NRRD formats.
- x64 Windows release can now correctly load very large data sets.
- GTK Linux release now updated to GTK version 3.0.
- Can now load DICOM files with incorrect internal use of 'undefined length'.
- Open directory now also considers image scale when comparing files.
- Fixed crash when measuring thickness by comparing surfaces.
6.07, 18th May 2020
New features:
- Now able to save the surface as a NIFTI file when using SAVE_CURRENT_SURFACE in a script.
- Both middle and right mouse buttons pan the data when using the normal (drag) tool.
Bug fixes:
- Can now load 16-bit DICOM data in compressed, signed format with correct DICOM offset values.
6.06, 28th April 2020
Bug fixes:
- Work-around implemented for issues with graphics drivers displaying the image in the wrong place when using scroll bars. Stradview should now always work using scroll bars, though the new option implemented in 6.04 gives more screen space to the images.
6.05, 22nd April 2020
Bug fixes:
- Loading of DICOM files is now more reliable
6.04, 17th February 2020
New features:
- Resliced image data can now be cropped to the outside, as well as the inside, of created surfaces
- A new GUI config option allows scroll bars to be disabled in image and 3D windows. Panning is then achieved using the right mouse button. This should fix occasional issues with faulty graphics drivers, as well as giving more screen space to the zoomed images
Bug fixes:
- 'g' key now controls visualisation of centres of mass and scrolling in image windows (as well as 3D window), as per documentation
6.03, 29th November 2019
New features:
- Much improved initialisation of inner and outer edges in CBM which results in more consistent assessment of bone cortices which are closer together
- Documentation from 6.01 onwards now up to date.
Bug fixes:
- Check for a non-existant outer edge in CBM was not always removing un-necessary edges, now fixed
6.02, 22nd November 2019
New features:
- Experimental feature which changes normal direction before doing CBM
- Outlier rejection in CBM is now part of the data smoothing (rather than surface smoothing) and can be visualised in real time on the surface
- Now possible to visual the CBM surface offset from the original surface, which makes outliers more obvious
- Thickness measurements by comparing surfaces now faster by more than 50x
Bug fixes:
- Fixed bug in CBM v2 (or when using 'post-correct density for blur') which affected measurements in the case of a denser outlying bone, eg. on the femur close to the acetabulum
- Removed apparent pause when running CBM on a very detailed surface with lots of points
- Now reports smoothed CBM values with an offset correctly when clicking on a 3D surface
6.01, 22nd October 2019
New features:
- This contains the data for an additional Image Analysis Solid HA QCT phantom
Bug fixes:
- Scripts can now find and load stradwin files correctly
- An error with mouse interaction with the windows when dynamically changing the mouse tool has been fixed
6.0, 13th September 2019
This was the original released version of Stradview, created from Stradwin version 6.0.