Mercurial > hg > orthanc
diff OrthancFramework/UnitTestsSources/ImageProcessingTests.cpp @ 4974:fcdf399f9fc0
fix ImageProcessing::ShiftScale2() on floating-point images
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Fri, 08 Apr 2022 11:48:54 +0200 |
parents | 924b15d983c7 |
children | 0ea402b4d901 |
line wrap: on
line diff
--- a/OrthancFramework/UnitTestsSources/ImageProcessingTests.cpp Thu Apr 07 12:04:48 2022 +0200 +++ b/OrthancFramework/UnitTestsSources/ImageProcessingTests.cpp Fri Apr 08 11:48:54 2022 +0200 @@ -1058,6 +1058,29 @@ } +TEST(ImageProcessing, ShiftFloatBuggy) +{ + // This test failed in Orthanc 1.10.1 + + Image image(PixelFormat_Float32, 3, 1, false); + ImageTraits<PixelFormat_Float32>::SetFloatPixel(image, -1.0f, 0, 0); + ImageTraits<PixelFormat_Float32>::SetFloatPixel(image, 0.0f, 1, 0); + ImageTraits<PixelFormat_Float32>::SetFloatPixel(image, 1.0f, 2, 0); + + std::unique_ptr<Image> cloned(Image::Clone(image)); + + ImageProcessing::ShiftScale2(image, 0, 0.000539, true); + ASSERT_FLOAT_EQ(-0.000539f, ImageTraits<PixelFormat_Float32>::GetFloatPixel(image, 0, 0)); + ASSERT_FLOAT_EQ(0.0f, ImageTraits<PixelFormat_Float32>::GetFloatPixel(image, 1, 0)); + ASSERT_FLOAT_EQ(0.000539f, ImageTraits<PixelFormat_Float32>::GetFloatPixel(image, 2, 0)); + + ImageProcessing::ShiftScale2(*cloned, 0, 0.000539, false); + ASSERT_FLOAT_EQ(-0.000539f, ImageTraits<PixelFormat_Float32>::GetFloatPixel(*cloned, 0, 0)); + ASSERT_FLOAT_EQ(0.0f, ImageTraits<PixelFormat_Float32>::GetFloatPixel(*cloned, 1, 0)); + ASSERT_FLOAT_EQ(0.000539f, ImageTraits<PixelFormat_Float32>::GetFloatPixel(*cloned, 2, 0)); +} + + TEST(ImageProcessing, ShiftScale2) { std::vector<float> va;