Mercurial > hg > orthanc
diff UnitTestsSources/ImageProcessingTests.cpp @ 3258:6f652c7bfc85
ImageProcessing::FillPolygon
author | Alain Mazy <alain@mazy.be> |
---|---|
date | Mon, 18 Feb 2019 18:43:40 +0100 |
parents | 4e43e67f8ecf |
children | 345f86fd1ac3 |
line wrap: on
line diff
--- a/UnitTestsSources/ImageProcessingTests.cpp Mon Feb 18 12:18:15 2019 +0100 +++ b/UnitTestsSources/ImageProcessingTests.cpp Mon Feb 18 18:43:40 2019 +0100 @@ -180,7 +180,7 @@ memset(image.GetBuffer(), 128, image.GetHeight() * image.GetWidth()); - unsigned int c = 0; + float c = 0.0f; for (unsigned int y = 0; y < image.GetHeight(); y++) { for (unsigned int x = 0; x < image.GetWidth(); x++, c++) @@ -189,7 +189,6 @@ } } - c = 0; for (unsigned int y = 0; y < image.GetHeight(); y++) { for (unsigned int x = 0; x < image.GetWidth(); x++, c++) @@ -198,3 +197,28 @@ } } } + +TYPED_TEST(TestIntegerImageTraits, FillPolygon) +{ + ImageAccessor& image = this->GetImage(); + + ImageProcessing::Set(image, 128); + + // draw a triangle + std::vector<ImageProcessing::ImagePoint> points; + points.push_back(ImageProcessing::ImagePoint(1,1)); + points.push_back(ImageProcessing::ImagePoint(1,5)); + points.push_back(ImageProcessing::ImagePoint(5,5)); + + Orthanc::ImageProcessing::FillPolygon(image, points, 255); + + // outside polygon + ASSERT_FLOAT_EQ(128, TestFixture::ImageTraits::GetFloatPixel(image, 0, 0)); + ASSERT_FLOAT_EQ(128, TestFixture::ImageTraits::GetFloatPixel(image, 0, 6)); + ASSERT_FLOAT_EQ(128, TestFixture::ImageTraits::GetFloatPixel(image, 6, 6)); + ASSERT_FLOAT_EQ(128, TestFixture::ImageTraits::GetFloatPixel(image, 6, 0)); + + // inside polygon (note: we don't test too close from the edges since the current algo is taking some margin from the edges and might be improved in that sense) + ASSERT_FLOAT_EQ(255, TestFixture::ImageTraits::GetFloatPixel(image, 1, 2)); + ASSERT_FLOAT_EQ(255, TestFixture::ImageTraits::GetFloatPixel(image, 2, 4)); +}