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 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 | import { getWebWorkerManager, eventTarget, Enums, triggerEvent, } from '@cornerstonejs/core'; import { segmentation, Enums as csToolsEnums, utilities, } from '@cornerstonejs/tools'; import { registerInterpolationWorker } from '../registerWorker'; type MorphologicalContourInterpolationOptions = { label?: number; axis?: number; noHeuristicAlignment?: boolean; noUseDistanceTransform?: boolean; useCustomSlicePositions?: boolean; }; const { triggerSegmentationEvents } = segmentation; const { getOrCreateSegmentationVolume } = utilities.segmentation; const { triggerSegmentationDataModified } = triggerSegmentationEvents; const { WorkerTypes } = csToolsEnums; const workerManager = getWebWorkerManager(); const triggerWorkerProgress = (eventTarget, progress) => { triggerEvent(eventTarget, Enums.Events.WEB_WORKER_PROGRESS, { progress, type: WorkerTypes.INTERPOLATE_LABELMAP, }); }; async function interpolateLabelmap({ segmentationId, segmentIndex, configuration = { preview: false }, }: { segmentationId: string; segmentIndex: number; configuration?: MorphologicalContourInterpolationOptions & { preview: boolean; }; }) { registerInterpolationWorker(); triggerWorkerProgress(eventTarget, 0); const segVolume = getOrCreateSegmentationVolume(segmentationId); const { voxelManager: segmentationVoxelManager, imageData: segmentationImageData, } = segVolume; const segmentationInfo = { scalarData: segmentationVoxelManager.getCompleteScalarDataArray(), dimensions: segmentationImageData.getDimensions(), spacing: segmentationImageData.getSpacing(), origin: segmentationImageData.getOrigin(), direction: segmentationImageData.getDirection(), }; try { const { data: outputScalarData } = await workerManager.executeTask( 'interpolation', 'interpolateLabelmap', { segmentationInfo, configuration: { ...configuration, label: segmentIndex, }, } ); // Update the segmentation with the modified data segmentationVoxelManager.setCompleteScalarDataArray(outputScalarData); triggerSegmentationDataModified( segmentationId, segmentationVoxelManager.getArrayOfModifiedSlices(), segmentIndex ); triggerWorkerProgress(eventTarget, 100); } catch (error) { console.warn( 'Warning: Failed to perform morphological contour interpolation', error ); triggerWorkerProgress(eventTarget, 100); } } export default interpolateLabelmap; |