Scope of Project
using purely web standards. The library employs WebGL for GPU accelerated rendering
Cornerstone3DTools is a peer library to
contains a number manipulation and annotations tools that are used to interact with
Cornerstone3D scope DOES NOT encompass dealing with image/volume loading
and metadata parsing. The
Cornerstone3D scope DOES include image rendering and caching.
Proper image loaders should be registered TO the cornerstone3D using
volumeLoader.registerVolumeLoader. Examples of such image loaders are
cornerstoneWADOImageLoader for DICOM P10 instances over
the DICOM P10 instances over HTTP. With
Cornerstone3D, we are releasing our first
streaming-image-volume-loader, that will be able to stream images of a volume one by one.
Cornerstone3D has a metadata registration mechanism that allows
metadata parsers to be registered TO the
cornerstoneWADOImageLoader, its image loaders and metadata providers self-register
Cornerstone3D. You can always checkout the example helpers to see how an
end-to-end example from metadata parsing to image loading and image rendering can be achieved.
Cornerstone3DTools are written in Typescript, they provide
a type-safe API. This means that you can use the library in a TypeScript environment
and using type information, you can be assured that the parameters being passed to any method
match what is expected.
Cornerstone3D uses the HTML5 canvas element and WebGL 2.0 GPU rendering to render images which is supported by all modern browsers.
Advanced features such as volume streaming which uses SharedArrayBuffer to create a shared memory is not supported in all browsers. The following browsers are supported:
- Chrome > 68
- Firefox > 79
- Edge > 79
If you are using an older browser, or don't have any graphics cards, your device might not be able to
render volumetric images with
Cornerstone3D. However, you can still render stack images using the
CPU fallback that we have implemented in
Cornerstone3D for such scenarios.
SharedArrayBuffer requires cross-origin-isolation in the browsers. This means that you cannot use
it in a browser that is not cross-origin isolated.
Cornerstone3D is a monorepo that contains the following packages:
/packages/core: The core library responsible for rendering images and caching.
/packages/tools: The tool library for manipulation, annotation and segmentation rendering and tools.
/packages/streaming-image-volume-loader: For streaming the volumes into the viewport and progressively loading them.
/packages/docs: Documentation for all the packages including guides, examples, and API reference.
There are other
Cornerstone affiliated packages (such as
cornerstone-wado-image-loader) that are not included in this monorepo. In long term we are working to add them to this monorepo to have a single location for all packages.
Having a monorepo helps us to:
- Share validation and linting rules
- Keep dependencies synced across all packages
- Easier linking between packages which is often required for bug fixing and testing