# HG changeset patch # User Sebastien Jodogne # Date 1402051575 -7200 # Node ID 6d89d5a4a72397d43f093e7e14b108a999dad710 # Parent ff530685e46a711c71dd45720c3b4659c930bb79 tests diff -r ff530685e46a -r 6d89d5a4a723 Core/DicomFormat/DicomImageInformation.cpp --- a/Core/DicomFormat/DicomImageInformation.cpp Fri Jun 06 12:35:08 2014 +0200 +++ b/Core/DicomFormat/DicomImageInformation.cpp Fri Jun 06 12:46:15 2014 +0200 @@ -176,13 +176,13 @@ return true; } - if (GetBitsStored() >= 9 && GetBitsStored() <= 16 && GetChannelCount() == 1 && !IsSigned()) + if (GetBitsAllocated() == 16 && GetChannelCount() == 1 && !IsSigned()) { format = PixelFormat_Grayscale16; return true; } - if (GetBitsStored() >= 9 && GetBitsStored() <= 16 && GetChannelCount() == 1 && IsSigned()) + if (GetBitsAllocated() == 16 && GetChannelCount() == 1 && IsSigned()) { format = PixelFormat_SignedGrayscale16; return true; diff -r ff530685e46a -r 6d89d5a4a723 UnitTestsSources/ImageProcessingTests.cpp --- a/UnitTestsSources/ImageProcessingTests.cpp Fri Jun 06 12:35:08 2014 +0200 +++ b/UnitTestsSources/ImageProcessingTests.cpp Fri Jun 06 12:46:15 2014 +0200 @@ -33,12 +33,46 @@ #include "PrecompiledHeadersUnitTests.h" #include "gtest/gtest.h" +#include "../Core/DicomFormat/DicomImageInformation.h" #include "../Core/ImageFormats/ImageBuffer.h" #include "../Core/ImageFormats/ImageProcessing.h" using namespace Orthanc; -TEST(ImageProcessing, Copy) +TEST(DicomImageInformation, ExtractPixelFormat1) { + // Cardiac/MR* + DicomMap m; + m.SetValue(DICOM_TAG_ROWS, "24"); + m.SetValue(DICOM_TAG_COLUMNS, "16"); + m.SetValue(DICOM_TAG_BITS_ALLOCATED, "16"); + m.SetValue(DICOM_TAG_SAMPLES_PER_PIXEL, "1"); + m.SetValue(DICOM_TAG_BITS_STORED, "12"); + m.SetValue(DICOM_TAG_HIGH_BIT, "11"); + m.SetValue(DICOM_TAG_PIXEL_REPRESENTATION, "0"); + + DicomImageInformation info(m); + PixelFormat format; + ASSERT_TRUE(info.ExtractPixelFormat(format)); + ASSERT_EQ(PixelFormat_Grayscale16, format); } + + +TEST(DicomImageInformation, ExtractPixelFormat2) +{ + // Delphine CT + DicomMap m; + m.SetValue(DICOM_TAG_ROWS, "24"); + m.SetValue(DICOM_TAG_COLUMNS, "16"); + m.SetValue(DICOM_TAG_BITS_ALLOCATED, "16"); + m.SetValue(DICOM_TAG_SAMPLES_PER_PIXEL, "1"); + m.SetValue(DICOM_TAG_BITS_STORED, "16"); + m.SetValue(DICOM_TAG_HIGH_BIT, "15"); + m.SetValue(DICOM_TAG_PIXEL_REPRESENTATION, "1"); + + DicomImageInformation info(m); + PixelFormat format; + ASSERT_TRUE(info.ExtractPixelFormat(format)); + ASSERT_EQ(PixelFormat_SignedGrayscale16, format); +}