Interface: ImageView
Pixel-interpretation + geometry metadata (§4.2 / §4.3 / §4.4 / §4.5) - the "wrong pixels look fine" and "looks fine, measures wrong" classes. v1 does not decode pixels; this view surfaces exactly what a renderer needs so it does not have to guess.
Safety-critical omissions are intentional: rescaleSlope is absent (not
1) when the tag is absent; signed is absent (not a guess) unless
(0028,0103) was present; photometricInterpretation is absent (not
MONOCHROME2) when absent; the three pixel-spacing fields are distinct.
When modalityLutSequence / voiLutSequence are present they are
authoritative over the linear rescale* / window* pairs.
Example
import { parseDicom } from "@cosyte/dicom";
const img = parseDicom(buf).image;
img.rescaleSlope; // undefined ⇒ caller MUST NOT assume 1
img.signed; // undefined ⇒ signedness unknown, never guess
img.pixelSpacing; // patient-plane mm - distinct from imagerPixelSpacing
Properties
bitsAllocated?
readonlyoptionalbitsAllocated?:number
bitsStored?
readonlyoptionalbitsStored?:number
columns?
readonlyoptionalcolumns?:number
frameOfReferenceUid?
readonlyoptionalframeOfReferenceUid?:string
highBit?
readonlyoptionalhighBit?:number
imageOrientationPatient?
readonlyoptionalimageOrientationPatient?: readonly (number|null)[]
imagePositionPatient?
readonlyoptionalimagePositionPatient?: readonly (number|null)[]
imagerPixelSpacing?
readonlyoptionalimagerPixelSpacing?: readonly (number|null)[]
isEnhancedMultiFrame
readonlyisEnhancedMultiFrame:boolean
true when this object carries Per-Frame/Shared Functional Groups.
modalityLutSequence?
readonlyoptionalmodalityLutSequence?: readonlyItem[]
nominalScannedPixelSpacing?
readonlyoptionalnominalScannedPixelSpacing?: readonly (number|null)[]
numberOfFrames?
readonlyoptionalnumberOfFrames?:number
photometricInterpretation?
readonlyoptionalphotometricInterpretation?:string
pixelRepresentation?
readonlyoptionalpixelRepresentation?:number
Raw (0028,0103) value: 0 = unsigned, 1 = signed. Absent ⇒ unknown.
pixelSpacing?
readonlyoptionalpixelSpacing?: readonly (number|null)[]
planarConfiguration?
readonlyoptionalplanarConfiguration?:number
realWorldValueMaps?
readonlyoptionalrealWorldValueMaps?: readonlyRealWorldValueMap[]
rescaleIntercept?
readonlyoptionalrescaleIntercept?:number
rescaleSlope?
readonlyoptionalrescaleSlope?:number
rescaleType?
readonlyoptionalrescaleType?:string
rows?
readonlyoptionalrows?:number
samplesPerPixel?
readonlyoptionalsamplesPerPixel?:number
signed?
readonlyoptionalsigned?:boolean
true/false only when (0028,0103) was 1/0; absent ⇒ never guessed.
sliceThickness?
readonlyoptionalsliceThickness?:number
sopInstanceUid?
readonlyoptionalsopInstanceUid?:string
spacingBetweenSlices?
readonlyoptionalspacingBetweenSlices?:number
units?
readonlyoptionalunits?:string
voiLutSequence?
readonlyoptionalvoiLutSequence?: readonlyItem[]
windowCenter?
readonlyoptionalwindowCenter?: readonly (number|null)[]
windowWidth?
readonlyoptionalwindowWidth?: readonly (number|null)[]
Methods
frame()
frame(
index):FrameFunctionalGroups
Resolve the functional-group macros for frame index Per-Frame-else-Shared.
Throws DicomValueError FRAME_INDEX_OUT_OF_RANGE for an index
outside [0, numberOfFrames) and MISSING_REQUIRED_FUNCTIONAL_GROUP
when an enhanced object lacks a required geometry macro in both groups.
Parameters
index
number