Mercurial > hg > orthanc-stone
comparison UnitTestsSources/VolumeRenderingTests.cpp @ 1774:95ece40bb298
DicomVolumeImageReslicer and DicomVolumeImageMPRSlicer behave identically on axial
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Wed, 12 May 2021 17:43:51 +0200 |
parents | 6c246f862b00 |
children | fca942f4b4a7 |
comparison
equal
deleted
inserted
replaced
1773:34eb41352dff | 1774:95ece40bb298 |
---|---|
62 } | 62 } |
63 } | 63 } |
64 | 64 |
65 OrthancStone::CoordinateSystem3D viewpoint; | 65 OrthancStone::CoordinateSystem3D viewpoint; |
66 | 66 |
67 //OrthancStone::DicomVolumeImageReslicer slicer(volume); slicer.SetInterpolation(OrthancStone::ImageInterpolation_Nearest); | 67 for (unsigned int mode = 0; mode < 2; mode++) |
68 OrthancStone::DicomVolumeImageMPRSlicer slicer(volume); | 68 { |
69 std::unique_ptr<OrthancStone::IVolumeSlicer::IExtractedSlice> slice(slicer.ExtractSlice(viewpoint)); | 69 std::unique_ptr<OrthancStone::IVolumeSlicer> slicer; |
70 ASSERT_TRUE(slice->IsValid()); | |
71 | 70 |
72 OrthancStone::CopyStyleConfigurator configurator; | 71 if (mode == 1) |
73 std::unique_ptr<OrthancStone::ISceneLayer> layer(slice->CreateSceneLayer(&configurator, viewpoint)); | 72 { |
73 slicer.reset(new OrthancStone::DicomVolumeImageReslicer(volume)); | |
74 } | |
75 else | |
76 { | |
77 slicer.reset(new OrthancStone::DicomVolumeImageMPRSlicer(volume)); | |
78 } | |
79 | |
80 std::unique_ptr<OrthancStone::IVolumeSlicer::IExtractedSlice> slice(slicer->ExtractSlice(viewpoint)); | |
81 ASSERT_TRUE(slice->IsValid()); | |
74 | 82 |
75 { | 83 OrthancStone::CopyStyleConfigurator configurator; |
76 const Orthanc::ImageAccessor& a = dynamic_cast<OrthancStone::TextureBaseSceneLayer&>(*layer).GetTexture(); | 84 std::unique_ptr<OrthancStone::ISceneLayer> layer(slice->CreateSceneLayer(&configurator, viewpoint)); |
77 Orthanc::Image i(Orthanc::PixelFormat_Grayscale8, a.GetWidth(), a.GetHeight(), false); | |
78 Orthanc::ImageProcessing::Convert(i, a); | |
79 | 85 |
80 ASSERT_EQ(3u, i.GetWidth()); | 86 { |
81 ASSERT_EQ(3u, i.GetHeight()); | 87 const Orthanc::ImageAccessor& a = dynamic_cast<OrthancStone::TextureBaseSceneLayer&>(*layer).GetTexture(); |
88 Orthanc::Image i(Orthanc::PixelFormat_Grayscale8, a.GetWidth(), a.GetHeight(), false); | |
89 Orthanc::ImageProcessing::Convert(i, a); | |
82 | 90 |
83 ASSERT_FLOAT_EQ(0, Orthanc::ImageTraits<Orthanc::PixelFormat_Grayscale8>::GetFloatPixel(i, 0, 0)); | 91 ASSERT_EQ(3u, i.GetWidth()); |
84 ASSERT_FLOAT_EQ(25, Orthanc::ImageTraits<Orthanc::PixelFormat_Grayscale8>::GetFloatPixel(i, 1, 0)); | 92 ASSERT_EQ(3u, i.GetHeight()); |
85 ASSERT_FLOAT_EQ(50, Orthanc::ImageTraits<Orthanc::PixelFormat_Grayscale8>::GetFloatPixel(i, 2, 0)); | 93 |
86 ASSERT_FLOAT_EQ(75, Orthanc::ImageTraits<Orthanc::PixelFormat_Grayscale8>::GetFloatPixel(i, 0, 1)); | 94 ASSERT_FLOAT_EQ(0, Orthanc::ImageTraits<Orthanc::PixelFormat_Grayscale8>::GetFloatPixel(i, 0, 0)); |
87 ASSERT_FLOAT_EQ(100, Orthanc::ImageTraits<Orthanc::PixelFormat_Grayscale8>::GetFloatPixel(i, 1, 1)); | 95 ASSERT_FLOAT_EQ(25, Orthanc::ImageTraits<Orthanc::PixelFormat_Grayscale8>::GetFloatPixel(i, 1, 0)); |
88 ASSERT_FLOAT_EQ(125, Orthanc::ImageTraits<Orthanc::PixelFormat_Grayscale8>::GetFloatPixel(i, 2, 1)); | 96 ASSERT_FLOAT_EQ(50, Orthanc::ImageTraits<Orthanc::PixelFormat_Grayscale8>::GetFloatPixel(i, 2, 0)); |
89 ASSERT_FLOAT_EQ(150, Orthanc::ImageTraits<Orthanc::PixelFormat_Grayscale8>::GetFloatPixel(i, 0, 2)); | 97 ASSERT_FLOAT_EQ(75, Orthanc::ImageTraits<Orthanc::PixelFormat_Grayscale8>::GetFloatPixel(i, 0, 1)); |
90 ASSERT_FLOAT_EQ(175, Orthanc::ImageTraits<Orthanc::PixelFormat_Grayscale8>::GetFloatPixel(i, 1, 2)); | 98 ASSERT_FLOAT_EQ(100, Orthanc::ImageTraits<Orthanc::PixelFormat_Grayscale8>::GetFloatPixel(i, 1, 1)); |
91 ASSERT_FLOAT_EQ(200, Orthanc::ImageTraits<Orthanc::PixelFormat_Grayscale8>::GetFloatPixel(i, 2, 2)); | 99 ASSERT_FLOAT_EQ(125, Orthanc::ImageTraits<Orthanc::PixelFormat_Grayscale8>::GetFloatPixel(i, 2, 1)); |
100 ASSERT_FLOAT_EQ(150, Orthanc::ImageTraits<Orthanc::PixelFormat_Grayscale8>::GetFloatPixel(i, 0, 2)); | |
101 ASSERT_FLOAT_EQ(175, Orthanc::ImageTraits<Orthanc::PixelFormat_Grayscale8>::GetFloatPixel(i, 1, 2)); | |
102 ASSERT_FLOAT_EQ(200, Orthanc::ImageTraits<Orthanc::PixelFormat_Grayscale8>::GetFloatPixel(i, 2, 2)); | |
103 } | |
104 | |
105 OrthancStone::Scene2D scene; // Scene is initialized with the identity viewpoint | |
106 scene.SetLayer(0, layer.release()); | |
107 | |
108 OrthancStone::CairoCompositor compositor(5, 5); | |
109 compositor.Refresh(scene); | |
110 | |
111 Orthanc::ImageAccessor i; | |
112 compositor.GetCanvas().GetReadOnlyAccessor(i); | |
113 | |
114 Orthanc::Image j(Orthanc::PixelFormat_RGB24, i.GetWidth(), i.GetHeight(), false); | |
115 Orthanc::ImageProcessing::Convert(j, i); | |
116 | |
117 ASSERT_EQ(5u, j.GetWidth()); | |
118 ASSERT_EQ(5u, j.GetHeight()); | |
119 Orthanc::PixelTraits<Orthanc::PixelFormat_RGB24>::PixelType pixel; | |
120 Orthanc::ImageTraits<Orthanc::PixelFormat_RGB24>::GetPixel(pixel, j, 0, 0); ASSERT_EQ(0, pixel.red_); | |
121 Orthanc::ImageTraits<Orthanc::PixelFormat_RGB24>::GetPixel(pixel, j, 1, 0); ASSERT_EQ(0, pixel.red_); | |
122 Orthanc::ImageTraits<Orthanc::PixelFormat_RGB24>::GetPixel(pixel, j, 2, 0); ASSERT_EQ(0, pixel.red_); | |
123 Orthanc::ImageTraits<Orthanc::PixelFormat_RGB24>::GetPixel(pixel, j, 3, 0); ASSERT_EQ(0, pixel.red_); | |
124 Orthanc::ImageTraits<Orthanc::PixelFormat_RGB24>::GetPixel(pixel, j, 4, 0); ASSERT_EQ(0, pixel.red_); | |
125 Orthanc::ImageTraits<Orthanc::PixelFormat_RGB24>::GetPixel(pixel, j, 0, 1); ASSERT_EQ(0, pixel.red_); | |
126 Orthanc::ImageTraits<Orthanc::PixelFormat_RGB24>::GetPixel(pixel, j, 1, 1); ASSERT_EQ(0, pixel.red_); | |
127 Orthanc::ImageTraits<Orthanc::PixelFormat_RGB24>::GetPixel(pixel, j, 2, 1); ASSERT_EQ(0, pixel.red_); | |
128 Orthanc::ImageTraits<Orthanc::PixelFormat_RGB24>::GetPixel(pixel, j, 3, 1); ASSERT_EQ(0, pixel.red_); | |
129 Orthanc::ImageTraits<Orthanc::PixelFormat_RGB24>::GetPixel(pixel, j, 4, 1); ASSERT_EQ(0, pixel.red_); | |
130 Orthanc::ImageTraits<Orthanc::PixelFormat_RGB24>::GetPixel(pixel, j, 0, 2); ASSERT_EQ(0, pixel.red_); | |
131 Orthanc::ImageTraits<Orthanc::PixelFormat_RGB24>::GetPixel(pixel, j, 1, 2); ASSERT_EQ(0, pixel.red_); | |
132 Orthanc::ImageTraits<Orthanc::PixelFormat_RGB24>::GetPixel(pixel, j, 2, 2); ASSERT_EQ(0, pixel.red_); | |
133 Orthanc::ImageTraits<Orthanc::PixelFormat_RGB24>::GetPixel(pixel, j, 3, 2); ASSERT_EQ(25, pixel.red_); | |
134 Orthanc::ImageTraits<Orthanc::PixelFormat_RGB24>::GetPixel(pixel, j, 4, 2); ASSERT_EQ(50, pixel.red_); | |
135 Orthanc::ImageTraits<Orthanc::PixelFormat_RGB24>::GetPixel(pixel, j, 0, 3); ASSERT_EQ(0, pixel.red_); | |
136 Orthanc::ImageTraits<Orthanc::PixelFormat_RGB24>::GetPixel(pixel, j, 1, 3); ASSERT_EQ(0, pixel.red_); | |
137 Orthanc::ImageTraits<Orthanc::PixelFormat_RGB24>::GetPixel(pixel, j, 2, 3); ASSERT_EQ(75, pixel.red_); | |
138 Orthanc::ImageTraits<Orthanc::PixelFormat_RGB24>::GetPixel(pixel, j, 3, 3); ASSERT_EQ(100, pixel.red_); | |
139 Orthanc::ImageTraits<Orthanc::PixelFormat_RGB24>::GetPixel(pixel, j, 4, 3); ASSERT_EQ(125, pixel.red_); | |
140 Orthanc::ImageTraits<Orthanc::PixelFormat_RGB24>::GetPixel(pixel, j, 0, 4); ASSERT_EQ(0, pixel.red_); | |
141 Orthanc::ImageTraits<Orthanc::PixelFormat_RGB24>::GetPixel(pixel, j, 1, 4); ASSERT_EQ(0, pixel.red_); | |
142 Orthanc::ImageTraits<Orthanc::PixelFormat_RGB24>::GetPixel(pixel, j, 2, 4); ASSERT_EQ(150, pixel.red_); | |
143 Orthanc::ImageTraits<Orthanc::PixelFormat_RGB24>::GetPixel(pixel, j, 3, 4); ASSERT_EQ(175, pixel.red_); | |
144 Orthanc::ImageTraits<Orthanc::PixelFormat_RGB24>::GetPixel(pixel, j, 4, 4); ASSERT_EQ(200, pixel.red_); | |
92 } | 145 } |
93 | |
94 OrthancStone::Scene2D scene; // Scene is initialized with the identity viewpoint | |
95 scene.SetLayer(0, layer.release()); | |
96 | |
97 OrthancStone::CairoCompositor compositor(5, 5); | |
98 compositor.Refresh(scene); | |
99 | |
100 Orthanc::ImageAccessor i; | |
101 compositor.GetCanvas().GetReadOnlyAccessor(i); | |
102 | |
103 Orthanc::Image j(Orthanc::PixelFormat_RGB24, i.GetWidth(), i.GetHeight(), false); | |
104 Orthanc::ImageProcessing::Convert(j, i); | |
105 | |
106 ASSERT_EQ(5u, j.GetWidth()); | |
107 ASSERT_EQ(5u, j.GetHeight()); | |
108 Orthanc::PixelTraits<Orthanc::PixelFormat_RGB24>::PixelType pixel; | |
109 Orthanc::ImageTraits<Orthanc::PixelFormat_RGB24>::GetPixel(pixel, j, 0, 0); ASSERT_EQ(0, pixel.red_); | |
110 Orthanc::ImageTraits<Orthanc::PixelFormat_RGB24>::GetPixel(pixel, j, 1, 0); ASSERT_EQ(0, pixel.red_); | |
111 Orthanc::ImageTraits<Orthanc::PixelFormat_RGB24>::GetPixel(pixel, j, 2, 0); ASSERT_EQ(0, pixel.red_); | |
112 Orthanc::ImageTraits<Orthanc::PixelFormat_RGB24>::GetPixel(pixel, j, 3, 0); ASSERT_EQ(0, pixel.red_); | |
113 Orthanc::ImageTraits<Orthanc::PixelFormat_RGB24>::GetPixel(pixel, j, 4, 0); ASSERT_EQ(0, pixel.red_); | |
114 Orthanc::ImageTraits<Orthanc::PixelFormat_RGB24>::GetPixel(pixel, j, 0, 1); ASSERT_EQ(0, pixel.red_); | |
115 Orthanc::ImageTraits<Orthanc::PixelFormat_RGB24>::GetPixel(pixel, j, 1, 1); ASSERT_EQ(0, pixel.red_); | |
116 Orthanc::ImageTraits<Orthanc::PixelFormat_RGB24>::GetPixel(pixel, j, 2, 1); ASSERT_EQ(0, pixel.red_); | |
117 Orthanc::ImageTraits<Orthanc::PixelFormat_RGB24>::GetPixel(pixel, j, 3, 1); ASSERT_EQ(0, pixel.red_); | |
118 Orthanc::ImageTraits<Orthanc::PixelFormat_RGB24>::GetPixel(pixel, j, 4, 1); ASSERT_EQ(0, pixel.red_); | |
119 Orthanc::ImageTraits<Orthanc::PixelFormat_RGB24>::GetPixel(pixel, j, 0, 2); ASSERT_EQ(0, pixel.red_); | |
120 Orthanc::ImageTraits<Orthanc::PixelFormat_RGB24>::GetPixel(pixel, j, 1, 2); ASSERT_EQ(0, pixel.red_); | |
121 Orthanc::ImageTraits<Orthanc::PixelFormat_RGB24>::GetPixel(pixel, j, 2, 2); ASSERT_EQ(0, pixel.red_); | |
122 Orthanc::ImageTraits<Orthanc::PixelFormat_RGB24>::GetPixel(pixel, j, 3, 2); ASSERT_EQ(25, pixel.red_); | |
123 Orthanc::ImageTraits<Orthanc::PixelFormat_RGB24>::GetPixel(pixel, j, 4, 2); ASSERT_EQ(50, pixel.red_); | |
124 Orthanc::ImageTraits<Orthanc::PixelFormat_RGB24>::GetPixel(pixel, j, 0, 3); ASSERT_EQ(0, pixel.red_); | |
125 Orthanc::ImageTraits<Orthanc::PixelFormat_RGB24>::GetPixel(pixel, j, 1, 3); ASSERT_EQ(0, pixel.red_); | |
126 Orthanc::ImageTraits<Orthanc::PixelFormat_RGB24>::GetPixel(pixel, j, 2, 3); ASSERT_EQ(75, pixel.red_); | |
127 Orthanc::ImageTraits<Orthanc::PixelFormat_RGB24>::GetPixel(pixel, j, 3, 3); ASSERT_EQ(100, pixel.red_); | |
128 Orthanc::ImageTraits<Orthanc::PixelFormat_RGB24>::GetPixel(pixel, j, 4, 3); ASSERT_EQ(125, pixel.red_); | |
129 Orthanc::ImageTraits<Orthanc::PixelFormat_RGB24>::GetPixel(pixel, j, 0, 4); ASSERT_EQ(0, pixel.red_); | |
130 Orthanc::ImageTraits<Orthanc::PixelFormat_RGB24>::GetPixel(pixel, j, 1, 4); ASSERT_EQ(0, pixel.red_); | |
131 Orthanc::ImageTraits<Orthanc::PixelFormat_RGB24>::GetPixel(pixel, j, 2, 4); ASSERT_EQ(150, pixel.red_); | |
132 Orthanc::ImageTraits<Orthanc::PixelFormat_RGB24>::GetPixel(pixel, j, 3, 4); ASSERT_EQ(175, pixel.red_); | |
133 Orthanc::ImageTraits<Orthanc::PixelFormat_RGB24>::GetPixel(pixel, j, 4, 4); ASSERT_EQ(200, pixel.red_); | |
134 } | 146 } |
135 | 147 |