Trying to render dicom monochrome2 onto HTML5 canvas
what is the correct pixel mapping from grayscale to canvas rgb ?
Currently using incorrect mapping of
const ctx = canvas.getContext( '2d' ) const imageData = ctx.createImageData( 512, 512 ) const pixelData = getPixelData( dataSet ) let rgbaIdx = 0 let rgbIdx = 0 let pixelCount = 512 * 512 for ( let idx = 0; idx < pixelCount; idx++ ) { imageData.data[ rgbaIdx ] = pixelData[ rgbIdx ] imageData.data[ rgbaIdx + 1 ] = pixelData[ rgbIdx + 1 ] imageData.data[ rgbaIdx + 2 ] = 0 imageData.data[ rgbaIdx + 3 ] = 255 rgbaIdx += 4 rgbIdx += 2 } ctx.putImageData( imageData, 0, 0 )
Reading through open source libraries, not very clear how, could you please suggest a clear introduction of how to render?
Fig 1. incorrect mapping
Fig 2. correct mapping, dicom displayed in IrfanView


Turned out 4 main things needed to be done (reading through fo-dicom source code to find these things out)
Prepare Monochrome2 LUT
Interpret pixel data as unsigned short
}
Get Minimum and Maximum Pixel Value and then compute WindowWidth to eventually map each pixel to Monochrome2 color map
Finally draw