-
Notifications
You must be signed in to change notification settings - Fork 12
Technical specifications
This is the main page of the technical specification for BoneJ2 - a collection of plugins for Fiji/ImageJ2. Most of the project's code reimplement functionality from BoneJ1. However the code has been heavily refactored to improve quality among other things. A lot of it has been moved away from the BoneJ packages to other components such as net.imagej.ops
and org.scijava
.
This is the list plugins in BoneJ2. The plugins in the menus visible to the user are just simple wrappers that call ops from elsewhere. The role of the wrappers is just to present the results of the ops in a familiar manner to skeletal biologists. We wanted to offload code in this way to make BoneJ2 lightweight, and to make the generally applicable algorithms available for all ImageJ users and developers.
Erode/Dilate
- Use Erode/Dilate commands from vanilla ImageJ2, no wrappers or implementation needed
Help
- Menu path: Help>About Plugins>BoneJ2
- Uses
PlatformService
to open HTML user documentation in the default browser (doesn't use Java window like in BoneJ1)
Kontron IMG
- The BoneJ1 plugin that offered support for the Kontron IMG files has been reimplemented as a part of SCIFIO
- Works in ImageJ "out-of-the-box" when SCIFIO is enabled
- Supports arbitrarily large images
- Can open images by dragging and dropping
- Location
io.scif.formats
Scanco ISQ
- The BoneJ1 plugin that offered support for the Scanco ISQ files has been reimplemented as a part of SCIFIO
- Works in ImageJ "out-of-the-box" when SCIFIO is enabled
- Supports arbitrarily large images
- Can open images by dragging and dropping
- Location
io.scif.formats
Stratec pQCT
- The BoneJ1 plugin that offered support for the Stratec pQCT files has been reimplemented as a part of SCIFIO
- Works in ImageJ "out-of-the-box" when SCIFIO is enabled
- Supports arbitrarily large images
- Can open images by dragging and dropping
- When using legacy UI, doesn't work with
ij-1.50e.jar
or older. Tested successfully withij-1.51g.jar
. - Location
io.scif.formats
Test Images
- Menu path: Plugins>BoneJ>Test Images
- A set of tools for creating test images for integration tests
- Forms its own Maven artefact, which won't be deployed in BoneJ2 user releases
- Based on the methods in the
TestDataMaker
class - Produce
ImgPlus<BitType>
images which are binary images - Option for adding calibration
- Option for deliberately creating bad calibration
- Can create "hyperstacks", i.e. images with channels and/or time frames
A list of utilities used by the wrappers and other classes in BoneJ2
- Duplicate plugins: some have more than one menu path. For example the Thickness plugin can be found under Plugins>BoneJ>Thickness and Analyze>Local Thickness. These paths point to the same plugin, but calls from the BoneJ submenu go through the wrappers of this project. Thus the user experience may differ.
- Plugins need to written either in the style of ImageJ1 or ImageJ2. You can’t really mix and match the best of both worlds, or write “transitive” versions of the plugins, where only part of the functionality is written in the new way. This is because backwards compatibility in ImageJ2 is very complicated.
- BoneJ2 and macros: ImageJ2 is moving away from the ImageJ macro language. Have to learn one of the scripting languages ImageJ2 supports, and figure out how macros are supposed to work with BoneJ2.
- Gathering usage data: Apparently ImageJ2 offers a
UsageService
class, but the community reacted negatively to it. Should BoneJ2 use a modified version of theUsageReporter
class from BoneJ1, or utilizeUsageService
once its issues have been solved? - Bug reporting mechanism
- Report a Bug plugin?
- Error logging with
LogService
- Should the run-time help for BoneJ2 inform how users should cite it or its plugins? (Should be coded as a mechanism in ImageJ2)
- Headless mode
- How to deal with inconsistencies between UIs?
- SciJava UI: populating ImagePlus @Paremeters, or resolving conversion issues between composite ImagePlus / Dataset
- ImageJ status messages with
StatusService
- Replacing calls to ResultsTable in ImageJ2?
- Interoperation with other tools in the ecosystem
- Display full SCIFIO image metadata to user
- E.g. from Scanco ISQ, Kontron, Stratec pCQT...
- Either follow up developments in ImageJ2 UI, or create a purpose built command
- Rename wrapperPlugins artefact / package to DPL (domain presentation layer)