Open helghast79 opened 3 years ago
Thanks for this, makes sense to me!
Only things I would suggest is changing the name from generateSegmentationWithDataset
to generateSegmentationFromDatasets
. "From" implies input rather than an output which "with" suggests, and making datasets plural also demonstrates that it expects and array of datasets.
Also could you expose the call through here in the same way as the current two functions?
You don't need to write an implementation for cornerstoneTools 3, but it'd be good to throw an error if they try to call a v3 method that doesn't exist.
P.S. for readers who stumble upon this thread a year from now:
cornerstone.metaData.get('instance', imageId)
is a feature within OHIF using its metadata provider, and just returns the entire naturalized DICOM jason for that imageId. Its not a "standard" feature of any cornerstone image loader.
totally agree. Done. Also @pieper & @JamesAPetts, do you think it's better to generate _meta property automatically inside this function if not defined or leave it as it is now? Impact on performance is probably negligible but would facilitate the use of the function since the lack of _meta property will not trigger an error but will produce a segmentation file without metadata.
It's been a while since I looked, but maybe the _meta
would be added by SegmentationDerivation
or a superclass?
Well, yes and I thinks that's the problem if the datasets have no _meta property already defined. Segmentation class extends from DerivedPixels class which in turn extends from DerivedDataset. So, the Segmentation constructor call it's superclass parent constructors where _meta property is added by assigning the input datasets _meta property to it.
Hello! Any update on merging this PR? I am currently trying to use dmcjs to save cornerstone-tools segmentations into a DICOM-SEG file, and am running into the same error that this PR fixes.
I haven't looked at this in a while - @swederik will you be using this for cs3D segs? Maybe @sedghi should have a look make sure it works with the new code.
In some cases cornerstone image loaders deprive _image object from data property, like reported here #144. The added function uses underlying dcmjs functionality but allow users to generate this dataset array themselves and use it to create the segmentation blob.
Dataset array can be filled with
cornerstone.metaData.get('instance', imageId)
for each image int the series.Important: each element in dataset needs a _meta property with empty array (
_meta=[]
) otherwise segmentation will be saved without any metadata