Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 | 175x 7x 7x 7x 7x 7x 7x | import { _cloneDeep } from 'lodash.clonedeep'; import { getEnabledElementByIds, volumeLoader, VolumeViewport, utilities as csUtils, } from '@cornerstonejs/core'; import type { Types } from '@cornerstonejs/core'; /** * Create a new 3D segmentation volume from the default imageData presented in * the first actor of the viewport. It looks at the metadata of the imageData * to determine the volume dimensions and spacing if particular options are not provided. * * @param viewportId - The Id of the viewport from which to derive the volume from. * @param renderingEngineId - The Id of the rendering engine the viewport belongs to. * @param [segmentationId] - The Id to name the generated segmentation. Autogenerated if not given. * @param [options] - LabelmapOptions * @returns A promise that resolves to the Id of the new labelmap volume. */ export default Easync function createLabelmapVolumeForViewport(input: { viewportId: string; renderingEngineId: string; segmentationId?: string; options?: { volumeId?: string; scalarData?: Float32Array | Uint8Array; targetBuffer?: { type: 'Float32Array' | 'Uint8Array'; }; metadata?: any; dimensions?: Types.Point3; spacing?: Types.Point3; origin?: Types.Point3; direction?: Float32Array; }; }): Promise<string> { const { viewportId, renderingEngineId, options } = input; let { segmentationId } = input; const enabledElement = getEnabledElementByIds(viewportId, renderingEngineId); if (!enabledElement) { throw new Error('element disabled'); } const { viewport } = enabledElement; if (!(viewport instanceof VolumeViewport)) { throw new Error('Segmentation only supports VolumeViewport'); } const { uid } = viewport.getDefaultActor(); Eif (segmentationId === undefined) { // Name the segmentation volume with the viewport Id segmentationId = `${uid}-based-segmentation-${ options?.volumeId ?? csUtils.uuidv4().slice(0, 8) }`; } if (options) { // create a new labelmap with its own properties // This allows creation of a higher resolution labelmap vs reference volume const properties = _cloneDeep(options); await volumeLoader.createLocalVolume(properties, segmentationId); } else { // create a labelmap from a reference volume const { uid: volumeId } = viewport.getDefaultActor(); await volumeLoader.createAndCacheDerivedVolume(volumeId, { volumeId: segmentationId, }); } return segmentationId; } |