Mercurial > hg > orthanc
diff OrthancServer/ParsedDicomFile.cpp @ 1941:d7b176f7dd1b
test dicom patterns
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Fri, 25 Mar 2016 11:27:38 +0100 |
parents | e251606c1433 |
children | 76ff6eecf07f |
line wrap: on
line diff
--- a/OrthancServer/ParsedDicomFile.cpp Fri Mar 25 11:08:07 2016 +0100 +++ b/OrthancServer/ParsedDicomFile.cpp Fri Mar 25 11:27:38 2016 +0100 @@ -933,6 +933,7 @@ { if (accessor.GetFormat() != PixelFormat_Grayscale8 && accessor.GetFormat() != PixelFormat_Grayscale16 && + accessor.GetFormat() != PixelFormat_SignedGrayscale16 && accessor.GetFormat() != PixelFormat_RGB24 && accessor.GetFormat() != PixelFormat_RGBA32) { @@ -951,28 +952,42 @@ Replace(DICOM_TAG_ROWS, boost::lexical_cast<std::string>(accessor.GetHeight())); Replace(DICOM_TAG_SAMPLES_PER_PIXEL, "1"); Replace(DICOM_TAG_NUMBER_OF_FRAMES, "1"); - Replace(DICOM_TAG_PIXEL_REPRESENTATION, "0"); // Unsigned pixels + + if (accessor.GetFormat() == PixelFormat_SignedGrayscale16) + { + Replace(DICOM_TAG_PIXEL_REPRESENTATION, "1"); + } + else + { + Replace(DICOM_TAG_PIXEL_REPRESENTATION, "0"); // Unsigned pixels + } + Replace(DICOM_TAG_PLANAR_CONFIGURATION, "0"); // Color channels are interleaved Replace(DICOM_TAG_PHOTOMETRIC_INTERPRETATION, "MONOCHROME2"); - Replace(DICOM_TAG_BITS_ALLOCATED, "8"); - Replace(DICOM_TAG_BITS_STORED, "8"); - Replace(DICOM_TAG_HIGH_BIT, "7"); - unsigned int bytesPerPixel = 1; + unsigned int bytesPerPixel = 0; switch (accessor.GetFormat()) { + case PixelFormat_Grayscale8: + Replace(DICOM_TAG_BITS_ALLOCATED, "8"); + Replace(DICOM_TAG_BITS_STORED, "8"); + Replace(DICOM_TAG_HIGH_BIT, "7"); + bytesPerPixel = 1; + break; + case PixelFormat_RGB24: case PixelFormat_RGBA32: Replace(DICOM_TAG_PHOTOMETRIC_INTERPRETATION, "RGB"); Replace(DICOM_TAG_SAMPLES_PER_PIXEL, "3"); + Replace(DICOM_TAG_BITS_ALLOCATED, "8"); + Replace(DICOM_TAG_BITS_STORED, "8"); + Replace(DICOM_TAG_HIGH_BIT, "7"); bytesPerPixel = 3; break; - case PixelFormat_Grayscale8: - break; - case PixelFormat_Grayscale16: + case PixelFormat_SignedGrayscale16: Replace(DICOM_TAG_BITS_ALLOCATED, "16"); Replace(DICOM_TAG_BITS_STORED, "16"); Replace(DICOM_TAG_HIGH_BIT, "15"); @@ -983,6 +998,8 @@ throw OrthancException(ErrorCode_NotImplemented); } + assert(bytesPerPixel != 0); + DcmTag key(DICOM_TAG_PIXEL_DATA.GetGroup(), DICOM_TAG_PIXEL_DATA.GetElement());