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 | 1x 1x | import { Enums, Types, cache, eventTarget, getWebWorkerManager, triggerEvent, } from '@cornerstonejs/core'; import { SurfaceSegmentationData } from '../../../../types/SurfaceTypes'; import { WorkerTypes } from '../../../../enums'; const workerManager = getWebWorkerManager(); const triggerWorkerProgress = (eventTarget, progress) => { triggerEvent(eventTarget, Enums.Events.WEB_WORKER_PROGRESS, { progress, type: WorkerTypes.POLYSEG_SURFACE_TO_LABELMAP, }); }; export async function convertSurfaceToVolumeLabelmap( surfaceRepresentationData: SurfaceSegmentationData, segmentationVolume: Types.IImageVolume ) { const { geometryIds } = surfaceRepresentationData; if (!geometryIds?.size) { throw new Error('No geometry IDs found for surface representation'); } const segmentsInfo = new Map() as Map< number, { points: number[]; polys: number[]; } >; geometryIds.forEach((geometryId, segmentIndex) => { const geometry = cache.getGeometry(geometryId); const geometryData = geometry.data as Types.ISurface; const points = geometryData.getPoints(); const polys = geometryData.getPolys(); segmentsInfo.set(segmentIndex, { points, polys, }); }); const { dimensions, direction, origin, spacing } = segmentationVolume; triggerWorkerProgress(eventTarget, 0); const newScalarData = await workerManager.executeTask( 'polySeg', 'convertSurfacesToVolumeLabelmap', { segmentsInfo, dimensions, spacing, direction, origin, }, { callbacks: [ (progress) => { triggerWorkerProgress(eventTarget, progress); }, ], } ); triggerWorkerProgress(eventTarget, 1); segmentationVolume.imageData .getPointData() .getScalars() .setData(newScalarData); segmentationVolume.imageData.modified(); // update the scalarData in the volume as well segmentationVolume.modified(); return { volumeId: segmentationVolume.volumeId, }; } export async function convertSurfaceToStackLabelmap() { // TODO } |