From 2724e0267fbaaf265c12a4fd3eb2594148b9c4ae Mon Sep 17 00:00:00 2001 From: wangxiaoshuang <825034831@qq.com> Date: Fri, 27 Mar 2026 15:46:40 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=89=E7=BB=B4=E8=B0=83=E7=AA=97=E3=80=81?= =?UTF-8?q?=E5=88=86=E5=89=B2=E4=BF=9D=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dicoms3D/components/MPRViewport.vue | 53 +++++++- .../dicoms3D/components/PetCtViewport.vue | 58 +++++++-- .../reading/dicoms3D/components/ReadPage.vue | 22 +++- .../dicoms3D/components/Segmentations.vue | 120 ++++++++++-------- .../dicoms3D/components/VolumeViewport.vue | 67 +++++++++- 5 files changed, 238 insertions(+), 82 deletions(-) diff --git a/src/views/trials/trials-panel/reading/dicoms3D/components/MPRViewport.vue b/src/views/trials/trials-panel/reading/dicoms3D/components/MPRViewport.vue index 5dd181d3..a44c3006 100644 --- a/src/views/trials/trials-panel/reading/dicoms3D/components/MPRViewport.vue +++ b/src/views/trials/trials-panel/reading/dicoms3D/components/MPRViewport.vue @@ -40,10 +40,10 @@
Location: {{ `${Number(imageInfo.location).toFixed(digitPlaces)} mm` - }}
+ }}
Slice Thickness: {{ `${Number(imageInfo.sliceThickness).toFixed(digitPlaces)} mm` - }}
+ }}
WW/WL: {{ imageInfo.wwwc }}
@@ -493,7 +493,10 @@ export default { console.log("渲染成功") DicomEvent.$emit("isloaded", {}) } - }]).then(res => { + }]).then(r => { + let volume = cache.getVolume(this.volumeId) + const voi = metaData.get('voiLutModule', volume._imageIds[Math.ceil((volume._imageIds.length - 1) / 2)]) + this.$emit('setWwwc', { ww: voi.windowWidth[0], wc: voi.windowCenter[0], id: this.viewportId }) if (data.isLocation) { setTimeout(() => { csUtils.jumpToSlice(viewport.element, { imageIndex: data.SliceIndex }); }) } @@ -509,13 +512,51 @@ export default { const worldPoint = currentPoints.world const renderingEngine = getRenderingEngine(this.renderingEngineId) const viewport = renderingEngine.getViewport(this.viewportId) - const imageData = viewport.getImageData() - if (!imageData) return - const index = imageData.imageData.worldToIndex(worldPoint) + let referencedImageId = viewport.getCurrentImageId() + const data = viewport.getImageData() + if (!data) return + const { dimensions, imageData, metadata, voxelManager } = data + const index = imageData.worldToIndex(worldPoint) index[0] = Math.floor(index[0]) index[1] = Math.floor(index[1]) index[2] = Math.floor(index[2]) this.mousePosition.index = index + const modality = metadata.Modality + let ijk = csUtils.transformWorldToIndex(imageData, worldPoint) + ijk = vec3.round(ijk, ijk); + if (csUtils.indexWithinDimensions(ijk, dimensions)) { + this.isHandleOutsideImage = false + let value = voxelManager.getAtIJKPoint(ijk) + ijk[2] = viewport.getCurrentImageIdIndex() + let modalityUnit + if (modality === 'US') { + const calibratedResults = cornerstoneTools.utilities.getCalibratedProbeUnitsAndValue(image, [ijk]) + const hasEnhancedRegionValues = calibratedResults.values.every( + (value) => value !== null + ) + value = (hasEnhancedRegionValues ? calibratedResults.values : value) + modalityUnit = hasEnhancedRegionValues + ? calibratedResults.units + : 'raw'; + } else { + const scalingModule = referencedImageId && metaData.get('scalingModule', referencedImageId) + const isSuvScaled = typeof scalingModule?.suvbw === 'number' + if (scalingModule && scalingModule.suvbw) { + const pixelUnitsOptions = { + isPreScaled: cornerstoneTools.utilities.viewport.isViewportPreScaled(viewport, referencedImageId), + isSuvScaled: isSuvScaled, + } + modalityUnit = cornerstoneTools.utilities.getPixelValueUnits( + modality, + referencedImageId, + pixelUnitsOptions + ); + } + + } + this.mousePosition.value = value + this.mousePosition.modalityUnit = modalityUnit + } }, toggleTask(evt, visitTaskNum, i) { this.$emit('activeViewport', this.viewportIndex) diff --git a/src/views/trials/trials-panel/reading/dicoms3D/components/PetCtViewport.vue b/src/views/trials/trials-panel/reading/dicoms3D/components/PetCtViewport.vue index a2262c30..402dd219 100644 --- a/src/views/trials/trials-panel/reading/dicoms3D/components/PetCtViewport.vue +++ b/src/views/trials/trials-panel/reading/dicoms3D/components/PetCtViewport.vue @@ -1,7 +1,8 @@