@cornerstonejs/core 4.12.3 → 4.12.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/RenderingEngine/StackViewport.js +5 -2
- package/dist/esm/utilities/getPixelSpacingInformation.d.ts +5 -8
- package/dist/esm/utilities/getPixelSpacingInformation.js +45 -53
- package/dist/esm/utilities/index.d.ts +2 -2
- package/dist/esm/utilities/index.js +2 -2
- package/dist/esm/version.d.ts +1 -1
- package/dist/esm/version.js +1 -1
- package/package.json +2 -2
|
@@ -632,8 +632,11 @@ class StackViewport extends Viewport {
|
|
|
632
632
|
calibrateIfNecessary(imageId, imagePlaneModule) {
|
|
633
633
|
const calibration = metaData.get('calibratedPixelSpacing', imageId);
|
|
634
634
|
const isUpdated = this.calibration !== calibration;
|
|
635
|
-
const
|
|
636
|
-
this.hasPixelSpacing =
|
|
635
|
+
const scale = calibration?.scale;
|
|
636
|
+
this.hasPixelSpacing =
|
|
637
|
+
scale > 0 ||
|
|
638
|
+
(!imagePlaneModule.usingDefaultValues &&
|
|
639
|
+
imagePlaneModule.rowPixelSpacing > 0);
|
|
637
640
|
imagePlaneModule.calibration = calibration;
|
|
638
641
|
if (!isUpdated) {
|
|
639
642
|
return imagePlaneModule;
|
|
@@ -1,16 +1,13 @@
|
|
|
1
1
|
import { CalibrationTypes } from '../enums';
|
|
2
|
-
export
|
|
2
|
+
export declare function getERMF(instance: any): any;
|
|
3
|
+
export declare function calculateRadiographicPixelSpacing(instance: any): {
|
|
3
4
|
PixelSpacing: any;
|
|
4
5
|
type: CalibrationTypes;
|
|
5
6
|
isProjection: boolean;
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
} | {
|
|
7
|
+
};
|
|
8
|
+
export declare function getPixelSpacingInformation(instance: any): {
|
|
9
9
|
PixelSpacing: any;
|
|
10
10
|
type: CalibrationTypes;
|
|
11
11
|
isProjection: boolean;
|
|
12
|
-
PixelSpacingCalibrationType: any;
|
|
13
|
-
PixelSpacingCalibrationDescription: any;
|
|
14
|
-
} | {
|
|
15
|
-
PixelSpacing: number[];
|
|
16
12
|
};
|
|
13
|
+
export default getPixelSpacingInformation;
|
|
@@ -14,50 +14,62 @@ const projectionRadiographSOPClassUIDs = new Set([
|
|
|
14
14
|
'1.2.840.10008.5.1.4.1.1.12.2.1',
|
|
15
15
|
'1.2.840.10008.5.1.4.1.1.12.3',
|
|
16
16
|
]);
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
if (!ImagerPixelSpacing) {
|
|
22
|
-
return {
|
|
23
|
-
PixelSpacing,
|
|
24
|
-
type: CalibrationTypes.UNKNOWN,
|
|
25
|
-
isProjection,
|
|
26
|
-
};
|
|
17
|
+
export function getERMF(instance) {
|
|
18
|
+
const { PixelSpacing, ImagerPixelSpacing, EstimatedRadiographicMagnificationFactor: ermf, DistanceSourceToDetector: sid, DistanceSourceToPatient: sod, } = instance;
|
|
19
|
+
if (ermf) {
|
|
20
|
+
return ermf;
|
|
27
21
|
}
|
|
28
|
-
if (
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
22
|
+
if (sod < sid) {
|
|
23
|
+
return sid / sod;
|
|
24
|
+
}
|
|
25
|
+
if (ImagerPixelSpacing?.[0] > PixelSpacing?.[0]) {
|
|
26
|
+
return true;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
export function calculateRadiographicPixelSpacing(instance) {
|
|
30
|
+
const { PixelSpacing, ImagerPixelSpacing, PixelSpacingCalibrationType } = instance;
|
|
31
|
+
const isProjection = true;
|
|
32
|
+
if (PixelSpacing && PixelSpacingCalibrationType === 'GEOMETRY') {
|
|
33
|
+
if (isEqual(PixelSpacing, ImagerPixelSpacing)) {
|
|
34
|
+
console.warn('Calibration type is geometry, but pixel spacing and imager pixel spacing identical', PixelSpacing, ImagerPixelSpacing);
|
|
39
35
|
}
|
|
40
|
-
const correctedPixelSpacing = ImagerPixelSpacing.map((pixelSpacing) => pixelSpacing / EstimatedRadiographicMagnificationFactor);
|
|
41
36
|
return {
|
|
42
|
-
PixelSpacing
|
|
37
|
+
PixelSpacing,
|
|
43
38
|
type: CalibrationTypes.ERMF,
|
|
44
39
|
isProjection,
|
|
45
40
|
};
|
|
46
41
|
}
|
|
47
|
-
if (
|
|
42
|
+
if (PixelSpacing && PixelSpacingCalibrationType === 'FIDUCIAL') {
|
|
48
43
|
return {
|
|
49
44
|
PixelSpacing,
|
|
50
|
-
type: CalibrationTypes.
|
|
45
|
+
type: CalibrationTypes.CALIBRATED,
|
|
51
46
|
isProjection,
|
|
52
47
|
};
|
|
53
48
|
}
|
|
54
|
-
if (
|
|
49
|
+
if (ImagerPixelSpacing) {
|
|
50
|
+
const ermf = getERMF(instance);
|
|
51
|
+
if (ermf > 1) {
|
|
52
|
+
const correctedPixelSpacing = ImagerPixelSpacing.map((pixelSpacing) => pixelSpacing / ermf);
|
|
53
|
+
return {
|
|
54
|
+
PixelSpacing: correctedPixelSpacing,
|
|
55
|
+
type: CalibrationTypes.ERMF,
|
|
56
|
+
isProjection,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
if (ermf === true) {
|
|
60
|
+
return {
|
|
61
|
+
PixelSpacing,
|
|
62
|
+
type: CalibrationTypes.ERMF,
|
|
63
|
+
isProjection,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
if (ermf) {
|
|
67
|
+
console.error('Illegal ERMF value:', ermf);
|
|
68
|
+
}
|
|
55
69
|
return {
|
|
56
|
-
PixelSpacing,
|
|
57
|
-
type: CalibrationTypes.
|
|
70
|
+
PixelSpacing: PixelSpacing || ImagerPixelSpacing,
|
|
71
|
+
type: CalibrationTypes.PROJECTION,
|
|
58
72
|
isProjection,
|
|
59
|
-
PixelSpacingCalibrationType,
|
|
60
|
-
PixelSpacingCalibrationDescription,
|
|
61
73
|
};
|
|
62
74
|
}
|
|
63
75
|
return {
|
|
@@ -66,29 +78,8 @@ function calculateRadiographicPixelSpacing(instance) {
|
|
|
66
78
|
isProjection,
|
|
67
79
|
};
|
|
68
80
|
}
|
|
69
|
-
function
|
|
70
|
-
const {
|
|
71
|
-
const isArrayOfSequences = Array.isArray(SequenceOfUltrasoundRegions);
|
|
72
|
-
if (isArrayOfSequences && SequenceOfUltrasoundRegions.length > 1) {
|
|
73
|
-
console.warn('Sequence of Ultrasound Regions > one entry. This is not yet implemented, all measurements will be shown in pixels.');
|
|
74
|
-
return;
|
|
75
|
-
}
|
|
76
|
-
const { PhysicalDeltaX, PhysicalDeltaY } = isArrayOfSequences
|
|
77
|
-
? SequenceOfUltrasoundRegions[0]
|
|
78
|
-
: SequenceOfUltrasoundRegions;
|
|
79
|
-
const USPixelSpacing = [
|
|
80
|
-
Math.abs(PhysicalDeltaX) * 10,
|
|
81
|
-
Math.abs(PhysicalDeltaY) * 10,
|
|
82
|
-
];
|
|
83
|
-
return {
|
|
84
|
-
PixelSpacing: USPixelSpacing,
|
|
85
|
-
};
|
|
86
|
-
}
|
|
87
|
-
export default function getPixelSpacingInformation(instance) {
|
|
88
|
-
const { PixelSpacing, SOPClassUID, SequenceOfUltrasoundRegions } = instance;
|
|
89
|
-
if (SequenceOfUltrasoundRegions) {
|
|
90
|
-
return calculateUSPixelSpacing(instance);
|
|
91
|
-
}
|
|
81
|
+
export function getPixelSpacingInformation(instance) {
|
|
82
|
+
const { PixelSpacing, SOPClassUID } = instance;
|
|
92
83
|
const isProjection = projectionRadiographSOPClassUIDs.has(SOPClassUID);
|
|
93
84
|
if (isProjection) {
|
|
94
85
|
return calculateRadiographicPixelSpacing(instance);
|
|
@@ -99,3 +90,4 @@ export default function getPixelSpacingInformation(instance) {
|
|
|
99
90
|
isProjection: false,
|
|
100
91
|
};
|
|
101
92
|
}
|
|
93
|
+
export default getPixelSpacingInformation;
|
|
@@ -92,9 +92,9 @@ import getVolumeDirectionVectors from './getVolumeDirectionVectors';
|
|
|
92
92
|
import calculateSpacingBetweenImageIds from './calculateSpacingBetweenImageIds';
|
|
93
93
|
export * as logger from './logger';
|
|
94
94
|
import { calculateNeighborhoodStats } from './calculateNeighborhoodStats';
|
|
95
|
-
|
|
95
|
+
export * from './getPixelSpacingInformation';
|
|
96
96
|
import { asArray } from './asArray';
|
|
97
97
|
export { updatePlaneRestriction } from './updatePlaneRestriction';
|
|
98
98
|
declare const getViewportModality: (viewport: IViewport, volumeId?: string) => string;
|
|
99
99
|
export * from './isEqual';
|
|
100
|
-
export { FrameRange, eventListener, csUtils as invertRgbTransferFunction, createSigmoidRGBTransferFunction, getVoiFromSigmoidRGBTransferFunction, createLinearRGBTransferFunction, scaleRgbTransferFunction, triggerEvent, imageIdToURI, fnv1aHash, calibratedPixelSpacingMetadataProvider, clamp, uuidv4, getMinMax, getRuntimeId, isOpposite, getViewportModality, windowLevel, convertToGrayscale, getClosestImageId, getSpacingInNormalDirection, getTargetVolumeAndSpacingInNormalDir, getVolumeActorCorners, indexWithinDimensions, getVolumeViewportsContainingSameVolumes, getViewportsWithVolumeId, transformWorldToIndex, transformIndexToWorld, loadImageToCanvas, renderToCanvasCPU, renderToCanvasGPU, worldToImageCoords, imageToWorldCoords, getVolumeSliceRangeInfo, getVolumeViewportScrollInfo, getSliceRange, snapFocalPointToSlice, getImageSliceDataForVolumeViewport, isImageActor, isPTPrescaledWithSUV, actorIsA, getViewportsWithImageURI, getClosestStackImageIndexForPoint, getCurrentVolumeViewportSlice, calculateViewportsSpatialRegistration, spatialRegistrationMetadataProvider, getViewportImageCornersInWorld, hasNaNValues, applyPreset, deepMerge, PointsManager, getScalingParameters, colormap, getImageLegacy, ProgressiveIterator, decimate, imageRetrieveMetadataProvider, transferFunctionUtils, updateVTKImageDataWithCornerstoneImage, sortImageIdsAndGetSpacing, makeVolumeMetadata, isValidVolume, genericMetadataProvider, isVideoTransferSyntax, HistoryMemo, generateVolumePropsFromImageIds, getBufferConfiguration, VoxelManager, RLEVoxelMap, convertStackToVolumeViewport, convertVolumeToStackViewport, roundNumber, roundToPrecision, getViewportImageIds, getRandomSampleFromArray, getVolumeId, color, hasFloatScalingParameters, getDynamicVolumeInfo, autoLoad, scaleArray, deepClone, splitImageIdsBy4DTags, pointInShapeCallback, deepEqual, jumpToSlice, scroll, clip, transformWorldToIndexContinuous, createSubVolume, getVolumeDirectionVectors, calculateSpacingBetweenImageIds, getImageDataMetadata, buildMetadata, calculateNeighborhoodStats,
|
|
100
|
+
export { FrameRange, eventListener, csUtils as invertRgbTransferFunction, createSigmoidRGBTransferFunction, getVoiFromSigmoidRGBTransferFunction, createLinearRGBTransferFunction, scaleRgbTransferFunction, triggerEvent, imageIdToURI, fnv1aHash, calibratedPixelSpacingMetadataProvider, clamp, uuidv4, getMinMax, getRuntimeId, isOpposite, getViewportModality, windowLevel, convertToGrayscale, getClosestImageId, getSpacingInNormalDirection, getTargetVolumeAndSpacingInNormalDir, getVolumeActorCorners, indexWithinDimensions, getVolumeViewportsContainingSameVolumes, getViewportsWithVolumeId, transformWorldToIndex, transformIndexToWorld, loadImageToCanvas, renderToCanvasCPU, renderToCanvasGPU, worldToImageCoords, imageToWorldCoords, getVolumeSliceRangeInfo, getVolumeViewportScrollInfo, getSliceRange, snapFocalPointToSlice, getImageSliceDataForVolumeViewport, isImageActor, isPTPrescaledWithSUV, actorIsA, getViewportsWithImageURI, getClosestStackImageIndexForPoint, getCurrentVolumeViewportSlice, calculateViewportsSpatialRegistration, spatialRegistrationMetadataProvider, getViewportImageCornersInWorld, hasNaNValues, applyPreset, deepMerge, PointsManager, getScalingParameters, colormap, getImageLegacy, ProgressiveIterator, decimate, imageRetrieveMetadataProvider, transferFunctionUtils, updateVTKImageDataWithCornerstoneImage, sortImageIdsAndGetSpacing, makeVolumeMetadata, isValidVolume, genericMetadataProvider, isVideoTransferSyntax, HistoryMemo, generateVolumePropsFromImageIds, getBufferConfiguration, VoxelManager, RLEVoxelMap, convertStackToVolumeViewport, convertVolumeToStackViewport, roundNumber, roundToPrecision, getViewportImageIds, getRandomSampleFromArray, getVolumeId, color, hasFloatScalingParameters, getDynamicVolumeInfo, autoLoad, scaleArray, deepClone, splitImageIdsBy4DTags, pointInShapeCallback, deepEqual, jumpToSlice, scroll, clip, transformWorldToIndexContinuous, createSubVolume, getVolumeDirectionVectors, calculateSpacingBetweenImageIds, getImageDataMetadata, buildMetadata, calculateNeighborhoodStats, asArray, };
|
|
@@ -93,9 +93,9 @@ import getVolumeDirectionVectors from './getVolumeDirectionVectors';
|
|
|
93
93
|
import calculateSpacingBetweenImageIds from './calculateSpacingBetweenImageIds';
|
|
94
94
|
export * as logger from './logger';
|
|
95
95
|
import { calculateNeighborhoodStats } from './calculateNeighborhoodStats';
|
|
96
|
-
|
|
96
|
+
export * from './getPixelSpacingInformation';
|
|
97
97
|
import { asArray } from './asArray';
|
|
98
98
|
export { updatePlaneRestriction } from './updatePlaneRestriction';
|
|
99
99
|
const getViewportModality = (viewport, volumeId) => _getViewportModality(viewport, volumeId, cache.getVolume);
|
|
100
100
|
export * from './isEqual';
|
|
101
|
-
export { FrameRange, eventListener, csUtils as invertRgbTransferFunction, createSigmoidRGBTransferFunction, getVoiFromSigmoidRGBTransferFunction, createLinearRGBTransferFunction, scaleRgbTransferFunction, triggerEvent, imageIdToURI, fnv1aHash, calibratedPixelSpacingMetadataProvider, clamp, uuidv4, getMinMax, getRuntimeId, isOpposite, getViewportModality, windowLevel, convertToGrayscale, getClosestImageId, getSpacingInNormalDirection, getTargetVolumeAndSpacingInNormalDir, getVolumeActorCorners, indexWithinDimensions, getVolumeViewportsContainingSameVolumes, getViewportsWithVolumeId, transformWorldToIndex, transformIndexToWorld, loadImageToCanvas, renderToCanvasCPU, renderToCanvasGPU, worldToImageCoords, imageToWorldCoords, getVolumeSliceRangeInfo, getVolumeViewportScrollInfo, getSliceRange, snapFocalPointToSlice, getImageSliceDataForVolumeViewport, isImageActor, isPTPrescaledWithSUV, actorIsA, getViewportsWithImageURI, getClosestStackImageIndexForPoint, getCurrentVolumeViewportSlice, calculateViewportsSpatialRegistration, spatialRegistrationMetadataProvider, getViewportImageCornersInWorld, hasNaNValues, applyPreset, deepMerge, PointsManager, getScalingParameters, colormap, getImageLegacy, ProgressiveIterator, decimate, imageRetrieveMetadataProvider, transferFunctionUtils, updateVTKImageDataWithCornerstoneImage, sortImageIdsAndGetSpacing, makeVolumeMetadata, isValidVolume, genericMetadataProvider, isVideoTransferSyntax, HistoryMemo, generateVolumePropsFromImageIds, getBufferConfiguration, VoxelManager, RLEVoxelMap, convertStackToVolumeViewport, convertVolumeToStackViewport, roundNumber, roundToPrecision, getViewportImageIds, getRandomSampleFromArray, getVolumeId, color, hasFloatScalingParameters, getDynamicVolumeInfo, autoLoad, scaleArray, deepClone, splitImageIdsBy4DTags, pointInShapeCallback, deepEqual, jumpToSlice, scroll, clip, transformWorldToIndexContinuous, createSubVolume, getVolumeDirectionVectors, calculateSpacingBetweenImageIds, getImageDataMetadata, buildMetadata, calculateNeighborhoodStats,
|
|
101
|
+
export { FrameRange, eventListener, csUtils as invertRgbTransferFunction, createSigmoidRGBTransferFunction, getVoiFromSigmoidRGBTransferFunction, createLinearRGBTransferFunction, scaleRgbTransferFunction, triggerEvent, imageIdToURI, fnv1aHash, calibratedPixelSpacingMetadataProvider, clamp, uuidv4, getMinMax, getRuntimeId, isOpposite, getViewportModality, windowLevel, convertToGrayscale, getClosestImageId, getSpacingInNormalDirection, getTargetVolumeAndSpacingInNormalDir, getVolumeActorCorners, indexWithinDimensions, getVolumeViewportsContainingSameVolumes, getViewportsWithVolumeId, transformWorldToIndex, transformIndexToWorld, loadImageToCanvas, renderToCanvasCPU, renderToCanvasGPU, worldToImageCoords, imageToWorldCoords, getVolumeSliceRangeInfo, getVolumeViewportScrollInfo, getSliceRange, snapFocalPointToSlice, getImageSliceDataForVolumeViewport, isImageActor, isPTPrescaledWithSUV, actorIsA, getViewportsWithImageURI, getClosestStackImageIndexForPoint, getCurrentVolumeViewportSlice, calculateViewportsSpatialRegistration, spatialRegistrationMetadataProvider, getViewportImageCornersInWorld, hasNaNValues, applyPreset, deepMerge, PointsManager, getScalingParameters, colormap, getImageLegacy, ProgressiveIterator, decimate, imageRetrieveMetadataProvider, transferFunctionUtils, updateVTKImageDataWithCornerstoneImage, sortImageIdsAndGetSpacing, makeVolumeMetadata, isValidVolume, genericMetadataProvider, isVideoTransferSyntax, HistoryMemo, generateVolumePropsFromImageIds, getBufferConfiguration, VoxelManager, RLEVoxelMap, convertStackToVolumeViewport, convertVolumeToStackViewport, roundNumber, roundToPrecision, getViewportImageIds, getRandomSampleFromArray, getVolumeId, color, hasFloatScalingParameters, getDynamicVolumeInfo, autoLoad, scaleArray, deepClone, splitImageIdsBy4DTags, pointInShapeCallback, deepEqual, jumpToSlice, scroll, clip, transformWorldToIndexContinuous, createSubVolume, getVolumeDirectionVectors, calculateSpacingBetweenImageIds, getImageDataMetadata, buildMetadata, calculateNeighborhoodStats, asArray, };
|
package/dist/esm/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const version = "4.12.
|
|
1
|
+
export declare const version = "4.12.5";
|
package/dist/esm/version.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const version = '4.12.
|
|
1
|
+
export const version = '4.12.5';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cornerstonejs/core",
|
|
3
|
-
"version": "4.12.
|
|
3
|
+
"version": "4.12.5",
|
|
4
4
|
"description": "Cornerstone3D Core",
|
|
5
5
|
"module": "./dist/esm/index.js",
|
|
6
6
|
"types": "./dist/esm/index.d.ts",
|
|
@@ -97,5 +97,5 @@
|
|
|
97
97
|
"type": "individual",
|
|
98
98
|
"url": "https://ohif.org/donate"
|
|
99
99
|
},
|
|
100
|
-
"gitHead": "
|
|
100
|
+
"gitHead": "97cc5eed916981c859c091556e6c4e36a139b281"
|
|
101
101
|
}
|