示例#1
0
  _decodeJ2K(frameIndex = 0) {
    let encodedPixelData = DicomParser.readEncapsulatedPixelData(this._dataSet, this._dataSet.elements.x7fe00010, frameIndex);
    // let pixelDataElement = this._dataSet.elements.x7fe00010;
    // let pixelData = new Uint8Array(this._dataSet.byteArray.buffer, pixelDataElement.dataOffset, pixelDataElement.length);
    let jpxImage = new Jpx();
    // https://github.com/OHIF/image-JPEG2000/issues/6
    // It currently returns either Int16 or Uint16 based on whether the codestream is signed or not.
    jpxImage.parse(encodedPixelData);

    // let j2kWidth = jpxImage.width;
    // let j2kHeight = jpxImage.height;

    let componentsCount = jpxImage.componentsCount;
    if (componentsCount !== 1) {
      throw 'JPEG2000 decoder returned a componentCount of ${componentsCount}, when 1 is expected';
    }
    let tileCount = jpxImage.tiles.length;
    if (tileCount !== 1) {
      throw 'JPEG2000 decoder returned a tileCount of ${tileCount}, when 1 is expected';
    }
    let tileComponents = jpxImage.tiles[0];
    let pixelData = tileComponents.items;

    // window.console.log(j2kWidth, j2kHeight);

    return pixelData;
  }
示例#2
0
 _decodeJPEGBaseline(frameIndex = 0) {
   let encodedPixelData = DicomParser.readEncapsulatedPixelData(this._dataSet, this._dataSet.elements.x7fe00010, frameIndex);
   let rows = this.rows(frameIndex);
   let columns = this.columns(frameIndex);
   let bitsAllocated = this.bitsAllocated(frameIndex);
   let jpegBaseline = new JpegBaseline();
   jpegBaseline.parse(encodedPixelData);
   if (bitsAllocated === 8) {
     return jpegBaseline.getData(columns, rows);
   } else if (bitsAllocated === 16) {
     return jpegBaseline.getData16(columns, rows);
   }
 }
示例#3
0
 // from cornerstone
  _decodeJPEGLossless(frameIndex = 0) {
    let encodedPixelData = DicomParser.readEncapsulatedPixelData(this._dataSet, this._dataSet.elements.x7fe00010, frameIndex);
    let pixelRepresentation = this.pixelRepresentation(frameIndex);
    let bitsAllocated = this.bitsAllocated(frameIndex);
    let byteOutput = bitsAllocated <= 8 ? 1 : 2;
    let decoder = new Jpeg.lossless.Decoder();
    let decompressedData = decoder.decode(encodedPixelData.buffer, encodedPixelData.byteOffset, encodedPixelData.length, byteOutput);
    if (pixelRepresentation === 0) {
      if (byteOutput === 2) {
        return new Uint16Array(decompressedData.buffer);
      } else {
        // untested!
        return new Uint8Array(decompressedData.buffer);
      }
    } else {
      return new Int16Array(decompressedData.buffer);
    }
  }