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 | 428x 428x 428x | import type { Types } from '@cornerstonejs/core'; import { Enums, cache, eventTarget, getWebWorkerManager, triggerEvent, } from '@cornerstonejs/core'; import * as cornerstoneTools from '@cornerstonejs/tools'; import type { Types as ToolsTypes } from '@cornerstonejs/tools'; const { WorkerTypes } = cornerstoneTools.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: ToolsTypes.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.points; const polys = geometryData.polys; segmentsInfo.set(segmentIndex, { points, polys, }); }); const { dimensions, direction, origin, spacing, voxelManager } = segmentationVolume; triggerWorkerProgress(eventTarget, 0); const newScalarData = await workerManager.executeTask( 'polySeg', 'convertSurfacesToVolumeLabelmap', { segmentsInfo, dimensions, spacing, direction, origin, }, { callbacks: [ (progress) => { triggerWorkerProgress(eventTarget, progress); }, ], } ); triggerWorkerProgress(eventTarget, 100); voxelManager.setCompleteScalarDataArray(newScalarData); // update the scalarData in the volume as well segmentationVolume.modified(); return { volumeId: segmentationVolume.volumeId, }; } export async function convertSurfaceToStackLabelmap() { // TODO } |