Releases: TomographicImaging/CILViewer
Releases · TomographicImaging/CILViewer
v24.1.0
Enhancements:
- Add option to edit help text #441
- Update corner annotation with axis label #433
- Add title to ViewerCoordsDockWidget #422
- Adds methods to CILviewer and CILviewer2D #425
Bugfix:
- Fix error when visualising 2D images #439
- Hides the slider when one image dimension is 1 #432
- Differentiate 3D and 2D images in the converter
numpy2vtkImage
#437 - Edit slider min value #420
- Fix extent error when user clicks in the viewer to create a box by clicking outside of the image #425
- Fix extent error when user enlarges the box outside the image #425
- Deprecates
GetImageWorldExtent
#425
Version 24.0.1
Version 24.0.0
New functionality:
- Added preview to 'RawImportDialog' #410
- Add method to edit axes label text and tests, hide one label on 2D viewer #389 #408
- Add slider widget #365 and option to not install it #386. Link slider events #413
Bugfixes:
- Fix failing unit test #394
- Bugfix on resample reader. Standalone viewer app defaults to downsample in all dimensions. #362
- Fix bug with 'setInputAsNumpy' using deprecated 'numpy2vtkImporter' in 'CILViewer2D' - now uses 'numpy2vtkImage' #346
CI:
- Update eqt requirements to >=1.0.0 and update yml recipe #385
- Remove VTK 8 variants from conda recipe #375
- Change Python variants: removed 3.6 and 3.7, added 3.11 #375 (not Python 3.12 for incompatibility with EQT #399)
- Removed the 'paskino' channel from the install command as eqt is on 'conda-forge' #368
- Edit conda build and publish #371
- Fix dependencies in recipe #369
Documentation
Version 23.1.0
- Adds a
cilviewer
entrypoint:- This launches a standalone viewer application with a 2D and 3D viewer and allows users to load any image file types we support using the File menu.
- This launches a
StandaloneViewer
instance (standalone_viewer.py
)
- Updates README with how to run standalone viewer app and web viewer, and more image examples
- Raise error if try to add multiple widgets with the same name to CILViewer or CILViewer2D.
- Adds the following base classes to
ui.main_windows.py
:- Add
ViewerMainWindow
andViewerMainWindowWithSessionManagement
- base classes for windows which would house viewers, with methods needed for creating settings dialogs, creating a coordinate settings dockwidget, and loading images. - Add
TwoViewersMainWindow
andTwoViewersMainWindowWithSessionManagement
- baseclasses which create a main window with 2 linked viewers in dockwidgets. TwoViewersMainWindowMixin
- a mixin which provides methods to bothTwoViewersMainWindowWithSessionManagement
andTwoViewersMainWindow
. These methods are for adding viewers to the window, setting them up, linking them and adding a dockwidget for coordinate settings.
- Add
- Adds the following dialogs to
ui.dialogs.py
:ViewerSettingsDialog
- allows user to set downsample size settings and whether to use GPU for volume render.RawInputDialog
- for setting info for loading a raw file including, size of dimensions, data type etc.HDF5InputDialog
- for setting info for loading a HDF5 file, including the dataset name- Unit tests for creating each dialog.
Adds the following widgets toui.qt_widgets.py
: ViewerCoordsDockWidget
- for showing original and downsampled image size and allowing user to select which coord system to show on viewer.
- Adds methods to
CILViewerBase
: setVisualisationDownsampling
(moved out of CILViewer2D)getVisualisationDownsampling
(moved out of CILViewer2D)- Adds methods to
CILViewer
:setVolumeMapper
getVolumeMapper
- Modifies
ImageReader
:- Previously could read only from a file, now can read from memory instead by setting
vtk_image
parameter instead offile_name
parameter. - Add
SetVTKImage
method - Added unit tests to cover providing a VTK image instead of file name
- Previously could read only from a file, now can read from memory instead by setting
- Add methods to
cilviewerHDF5Reader
:- GetOriginalImageAttrs
- GetLoadedImageAttrs
- These methods are the same as those in
ImageReader
to be consistent.
Version 23.0.0
- add
deleteWidget
method to CILViewerBase - Add environment file for development of the viewer
- ImageWriter writes out with file extension set in FileFormat variable - previously didn't necessarily
do this for some hdf5 formats. - Fix bug with returning HDF5 attributes from HDF5Reader
- Move code for resetting camera out of TrameViewer3D and into CILViewer
- Adds the following methods to CILViewer (and corresponding unit tests):
- getGradientOpacityPercentiles
- getScalarOpacityPercentiles
- getVolumeColorPercentiles
- Adds to CILViewerBase (and corresponding unit tests):
- getSliceColorPercentiles
- setup.py:
- Always normalise the version from git describe to pep440
Version 22.4.0
- Add command line tool for resampling a dataset, with entrypoint: resample (and unit tests)
- Add
ImageReader
:- Generic reader for reading to vtkImageData
- Reads: HDF5, MetaImage, Numpy, Raw, TIFF stacks
- Supports resampling OR cropping the dataset whilst reading.
- Add
ImageWriter
:- Writer for writing out a modified i.e. resampled or cropped dataset.
- Supports writing to HDF5 and metaimage.
- Add
ImageWriterInterface
:- Interface for writers, with methods for setting and getting information about modified
(i.e. resampled or cropped) image data to write to a file.
- Interface for writers, with methods for setting and getting information about modified
- Add
cilviewerHDF5Writer
:- This is a writer which expects to be writing an original dataset or attributes of the original dataset,
plus one or more 'child' versions of the dataset which have been resampled and/or cropped. - Stores the information needed to reload a resampled or cropped dataset on the viewer.
- This is a writer which expects to be writing an original dataset or attributes of the original dataset,
- Add
cilviewerHDF5Reader
:- for reading datasets generated by the cilviewerHDF5Writer.
- Add new requirements:
schema
pyyaml
- Examples:
examples/image_reader_and_writer.py
is an example of using theImageReader
andImageWriter
examples/opacity_in_viewer.py
updated to use head dataset fromutils/example_data.py
- Unit tests for all of the new readers and writers.
- Removed obsolete TIFF code from conversion.py. The following have been removed:
vtkTiffStack2numpy
tiffStack2numpy
tiffStack2numpyEnforceBounds
_tiffStack2numpy
normalize
highest_tuple_element
- Fixed cilTIFFResampler so that if original TIFF file has a set spacing and origin, this is taken into account when resampling.
- Fixed bug in
iviewer
with display of volume render. - iviewer now shows gradient opacity volume render of head dataset from
utils/example_data.py
by default. - Fix bug in CILViewer if volume render method is adjusted before volume render turned on.
Version 22.3.0
- Add a dictionary of widgets to the CILViewerBaseClass, and ability to add and retrieve widgets to/from the dict with methods
.addWidgetReference
and.getWidget
- Add a new file
widgets/box_widgets.py
which contains classescilviewerBoxWidget
andcilviewerLineWidget
for creating Box and Line widgets on the viewer. - Add example:
BoxWidgetAroundSlice.py
- which demonstrates using the above classes. - Use the
cilviewerBoxWidget
class for creating and positioning the ROIWidget on the CILViewer2D, which involved removing theCILViewer2D._truncateBox
method.
Version 22.2.0
- Qt examples use example_data
- Updates in all classes to take into account the backward incompatible methods name changes (see below)
- cilPlaneClipper:
- change signature of creator, and defaults to empty list of items to be clipped on init
- renamed Get/SetInteractor->Get/SetInteractorStyle
- Renamed all classes bearing name baseReader to ReaderInterface as they provide the interface not a abstract reader class.
- Added TIFF resample and cropped readers with unit tests.
- Add Set/GetOrientationType methods to TIFF resample and cropped readers, with default value 1: ORIENTATION_TOPLEFT (row 0 top, col 0 lhs)
- web_viewer:
- added web viewer using trame for viewer3D and viewer2D
- add entry point for running the web viewers
- added docker container to be deployed
- GitHub Action: autoyapf added
- Added example_data module to load the head data from the CIL-Data repository
- CILViewer2D:
- add ChangeOrientation, AutoWindowLevel, getSliceWindowLevelFromRange
- Backward incompatible rename of a few methods:
- Get/SetActiveSlice -> get/setActiveSlice,
- GetSliceOrientation -> getSliceOrientation,
- setColourWindowLevel -> setSliceColorWindowLevel,
- getColourLevel -> getSliceColourLevel,
- getColourWindow -> getSliceColorWindow,
- setColourWindowLevel -> setSliceColorWindowLevel
- fix definition of window range to be = max - min
- use CILViewerBase as base class
- CILViewer3D:
- added methods in interactor style to enable interaction with web app, rather than just key event binding
- add volume render opacity scalar and gradient
- add slice histogram
- fix method to change window and level for slice actor, by range or percentiles
- fix definition of window range to be = max - min
- use CILViewerBase as base class
- colormaps: added get_color_transfer_function
- added examples of running the 2D and 3D viewers without Qt
- Added CILViewer base class
- Conda recipe:
- Fix windows build recipe
- Add build variants for VTK to prevent need for multiple viewer release numbers for different VTK versions
Version 22.1.2
Same changes as in v22.0.2 but requires vtk 9.0.3 or greater
Version 22.0.2
- requires vtk 8.1.2
- When a new image is loaded on the 3D viewer, reset camera position, slice and volume orientation and visibility, and clipping planes.
- Fix downsampling of resample readers when working with datatypes other than uint8. Previously resulting size of image was multiple times greater than requested target size as uint8 type was always assumed.