14 #include <itkImageRegionIterator.h> 34 #include <vtkImageActor.h> 35 #include <vtkImageData.h> 36 #include <vtkImageMapToColors.h> 37 #include <vtkImageMapper.h> 38 #include <vtkImageReslice.h> 39 #include <vtkInteractorStyleImage.h> 40 #include <vtkLookupTable.h> 41 #include <vtkPlaneSource.h> 42 #include <vtkPolyDataMapper.h> 43 #include <vtkRenderWindow.h> 44 #include <vtkRenderWindowInteractor.h> 45 #include <vtkRenderer.h> 46 #include <vtkSmartPointer.h> 47 #include <vtkTexture.h> 65 #define Testfailure_Deviation_Mean_128 0.853842 67 #define Testfailure_Deviation_Volume_128 0.145184 68 #define Testfailure_Deviation_Diameter_128 1.5625 70 #define Testfailure_Deviation_Mean_256 0.397693 72 #define Testfailure_Deviation_Volume_256 0.0141357 73 #define Testfailure_Deviation_Diameter_256 0.78125 75 #define Testfailure_Deviation_Mean_512 0.205277 77 #define Testfailure_Deviation_Volume_512 0.01993 78 #define Testfailure_Deviation_Diameter_512 0.390625 80 class mitkExtractSliceFilterTestClass
85 TestPlane = planeGeometry;
89 mitk::ScalarType center[3] = {centerCoordValue, centerCoordValue, centerCoordValue};
92 double radius = TestvolumeSize / 4.0;
93 if (TestPlane->Distance(centerIndex) >= radius)
99 slicer->SetInput(TestVolume);
100 slicer->SetWorldGeometry(TestPlane);
121 std::string areatestName = TestName.append(
" area");
122 std::string diametertestName = TestName.append(
" testing diameter");
125 MITK_TEST_CONDITION(std::abs(100 - testResults.percentageAreaCalcToPixel) < 1, areatestName);
126 MITK_TEST_CONDITION(std::abs(100 - testResults.percentageRadiusToPixel) < 1, diametertestName);
128 #ifdef EXTRACTOR_DEBUG 130 <<
"planeDistanceToSphereCenter: " << testResults.planeDistanceToSphereCenter;
131 MITK_INFO <<
"area in pixels: " << testResults.areaInPixel <<
" <-> area in mm: " << testResults.areaCalculated
132 <<
" = " << testResults.percentageAreaCalcToPixel <<
"%";
134 MITK_INFO <<
"calculated diameter: " << testResults.diameterCalculated
135 <<
" <-> diameter in mm: " << testResults.diameterInMM
136 <<
" <-> diameter in pixel: " << testResults.diameterInPixel <<
" = " 137 << testResults.percentageRadiusToPixel <<
"%";
144 template <
typename TPixel,
unsigned int VImageDimension>
145 static void TestSphereRadiusByItk(itk::Image<TPixel, VImageDimension> *inputImage)
150 typename InputImageType::IndexType currentIndexX;
151 currentIndexX[0] = (int)(TestvolumeSize / 2.0);
152 currentIndexX[1] = 0;
154 typename InputImageType::IndexType currentIndexY;
155 currentIndexY[0] = 0;
156 currentIndexY[1] = (int)(TestvolumeSize / 2.0);
159 double lastValueX = inputImage->GetPixel(currentIndexX);
160 double lastValueY = inputImage->GetPixel(currentIndexY);
163 std::vector<typename InputImageType::IndexType> indicesX;
164 std::vector<typename InputImageType::IndexType> indicesY;
167 while (currentIndexX[1] < TestvolumeSize && currentIndexX[0] < TestvolumeSize)
170 currentIndexX[1] += 1;
173 currentIndexY[0] += 1;
175 if (inputImage->GetPixel(currentIndexX) > lastValueX)
178 typename InputImageType::IndexType markIndex;
179 markIndex[0] = currentIndexX[0];
180 markIndex[1] = currentIndexX[1];
182 indicesX.push_back(markIndex);
184 else if (inputImage->GetPixel(currentIndexX) < lastValueX)
187 typename InputImageType::IndexType markIndex;
188 markIndex[0] = currentIndexX[0];
189 markIndex[1] = currentIndexX[1] - 1;
191 indicesX.push_back(markIndex);
194 if (inputImage->GetPixel(currentIndexY) > lastValueY)
197 typename InputImageType::IndexType markIndex;
198 markIndex[0] = currentIndexY[0];
199 markIndex[1] = currentIndexY[1];
201 indicesY.push_back(markIndex);
203 else if (inputImage->GetPixel(currentIndexY) < lastValueY)
206 typename InputImageType::IndexType markIndex;
207 markIndex[0] = currentIndexY[0];
208 markIndex[1] = currentIndexY[1] - 1;
210 indicesY.push_back(markIndex);
214 if (indicesX.size() == 2 && indicesY.size() == 2)
218 lastValueX = inputImage->GetPixel(currentIndexX);
219 lastValueY = inputImage->GetPixel(currentIndexY);
230 double distanceToCenterX = std::abs(indicesX[0][1] - indicesX[1][1]) / 2.0;
234 typename InputImageType::IndexType centerX;
237 centerX[0] = indicesX[0][0];
238 centerX[1] = indicesX[0][1] + distanceToCenterX;
245 typename InputImageType::IndexType currentIndex(centerX);
246 lastValueX = inputImage->GetPixel(currentIndex);
250 std::vector<typename InputImageType::IndexType> diameterIndices;
253 while (currentIndex[1] < TestvolumeSize)
255 currentIndex[1] += 1;
257 if (inputImage->GetPixel(currentIndex) != lastValueX)
259 typename InputImageType::IndexType markIndex;
260 markIndex[0] = currentIndex[0];
261 markIndex[1] = currentIndex[1] - 1;
263 diameterIndices.push_back(markIndex);
268 lastValueX = inputImage->GetPixel(currentIndex);
271 currentIndex[1] -= sumpixels;
272 lastValueX = inputImage->GetPixel(currentIndex);
275 while (currentIndex[1] >= 0)
277 currentIndex[1] -= 1;
279 if (inputImage->GetPixel(currentIndex) != lastValueX)
281 typename InputImageType::IndexType markIndex;
282 markIndex[0] = currentIndex[0];
283 markIndex[1] = currentIndex[1];
285 diameterIndices.push_back(markIndex);
290 lastValueX = inputImage->GetPixel(currentIndex);
298 volumeCenter[0] = volumeCenter[1] = volumeCenter[2] = TestvolumeSize / 2.0;
300 double planeDistanceToSphereCenter = TestPlane->Distance(volumeCenter);
302 double sphereRadius = TestvolumeSize / 4.0;
305 double diameter = 2.0 * std::sqrt(std::pow(sphereRadius, 2) - std::pow(planeDistanceToSphereCenter, 2));
307 double percentageRadiusToPixel = 100 / diameter * sumpixels;
315 diameterPointRight[2] = diameterPointLeft[2] = 0.0;
317 diameterPointLeft[0] = diameterIndices[0][0];
318 diameterPointLeft[1] = diameterIndices[0][1];
320 diameterPointRight[0] = diameterIndices[1][0];
321 diameterPointRight[1] = diameterIndices[1][1];
324 TestVolume->GetGeometry()->IndexToWorld(diameterPointLeft, diameterPointLeft);
325 TestVolume->GetGeometry()->IndexToWorld(diameterPointRight, diameterPointRight);
328 double diameterInMM = ((diameterPointLeft * -1.0) + diameterPointRight).GetNorm();
330 testResults.diameterInMM = diameterInMM;
331 testResults.diameterCalculated = diameter;
332 testResults.diameterInPixel = sumpixels;
333 testResults.percentageRadiusToPixel = percentageRadiusToPixel;
334 testResults.planeDistanceToSphereCenter = planeDistanceToSphereCenter;
338 template <
typename TPixel,
unsigned int VImageDimension>
339 static void TestSphereAreaByItk(itk::Image<TPixel, VImageDimension> *inputImage)
342 typedef itk::ImageRegionConstIterator<InputImageType> ImageIterator;
344 ImageIterator imageIterator(inputImage, inputImage->GetLargestPossibleRegion());
345 imageIterator.GoToBegin();
347 int sumPixelsInArea = 0;
349 while (!imageIterator.IsAtEnd())
351 if (inputImage->GetPixel(imageIterator.GetIndex()) == pixelValueSet)
357 volumeCenter[0] = volumeCenter[1] = volumeCenter[2] = TestvolumeSize / 2.0;
359 double planeDistanceToSphereCenter = TestPlane->Distance(volumeCenter);
361 double sphereRadius = TestvolumeSize / 4.0;
364 double radius = std::sqrt(std::pow(sphereRadius, 2) - std::pow(planeDistanceToSphereCenter, 2));
366 double areaInMM = 3.14159265358979 * std::pow(radius, 2);
368 testResults.areaCalculated = areaInMM;
369 testResults.areaInPixel = sumPixelsInArea;
370 testResults.percentageAreaCalcToPixel = 100 / areaInMM * sumPixelsInArea;
380 static void PixelvalueBasedTest()
383 typedef itk::Image<unsigned short, 3>
ImageType;
385 typedef itk::ImageRegionConstIterator<ImageType> ImageIterator;
387 ImageType::Pointer
image = ImageType::New();
389 ImageType::IndexType start;
390 start[0] = start[1] = start[2] = 0;
392 ImageType::SizeType size;
393 size[0] = size[1] = size[2] = 32;
395 ImageType::RegionType imgRegion;
396 imgRegion.SetSize(size);
397 imgRegion.SetIndex(start);
399 image->SetRegions(imgRegion);
400 image->SetSpacing(1.0);
403 ImageIterator imageIterator(image, image->GetLargestPossibleRegion());
404 imageIterator.GoToBegin();
406 unsigned short pixelValue = 0;
409 while (!imageIterator.IsAtEnd())
411 image->SetPixel(imageIterator.GetIndex(), pixelValue);
433 typedef itk::Image<unsigned short, 3>
ImageType;
436 srand((
unsigned)time(
nullptr));
440 bool isFrontside =
true;
441 bool isRotated =
false;
451 plane->InitializeStandardPlane(imageInMitk->
GetGeometry(), orientation, sliceindex, isFrontside, isRotated);
455 normal = plane->GetNormal();
459 origin += normal * 0.5;
461 plane->SetOrigin(origin);
487 axis0 = plane->GetAxisVector(0);
488 axis1 = plane->GetAxisVector(1);
492 unsigned char n1 = 7;
493 unsigned char n2 = 13;
496 testPoint3DInWorld = planeOrigin + (axis0 * n1) + (axis1 * n2);
499 ImageType::IndexType testPoint3DInIndex;
508 slicer->SetInput(imageInMitk);
509 slicer->SetWorldGeometry(plane);
516 slice->GetGeometry()->WorldToIndex(testPoint3DInWorld, testPoint2DInIndex);
519 p[0] = testPoint2DInIndex[0];
520 p[1] = testPoint2DInIndex[1];
521 p[2] = testPoint2DInIndex[2];
522 slice->GetGeometry()->IndexToWorld(p, sliceIndexToWorld);
524 p[0] = testPoint3DInIndex[0];
525 p[1] = testPoint3DInIndex[1];
526 p[2] = testPoint3DInIndex[2];
530 testPoint2DIn2DIndex[0] = testPoint2DInIndex[0];
531 testPoint2DIn2DIndex[1] = testPoint2DInIndex[1];
535 VolumeReadAccessorType VolumeReadAccessor(imageInMitk);
536 SliceReadAccessorType SliceReadAccessor(slice);
539 unsigned short valueAt3DVolume = VolumeReadAccessor.GetPixelByIndex(testPoint3DInIndex);
540 unsigned short valueAtSlice = SliceReadAccessor.GetPixelByIndex(testPoint2DIn2DIndex);
544 MITK_TEST_CONDITION(valueAt3DVolume == valueAtSlice,
"comparing pixelvalues for orthogonal plane");
546 vtkSmartPointer<vtkImageData> imageInVtk = imageInMitk->
GetVtkImageData();
547 vtkSmartPointer<vtkImageData> sliceInVtk = slice->GetVtkImageData();
549 double PixelvalueByMitkOutput = sliceInVtk->GetScalarComponentAsDouble(n1, n2, 0, 0);
557 slicerWithVtkOutput->SetInput(imageInMitk);
558 slicerWithVtkOutput->SetWorldGeometry(plane);
559 slicerWithVtkOutput->SetVtkOutputRequest(
true);
561 slicerWithVtkOutput->Update();
562 vtkSmartPointer<vtkImageData> vtkImageByVtkOutput = slicerWithVtkOutput->GetVtkOutput();
563 double PixelvalueByVtkOutput = vtkImageByVtkOutput->GetScalarComponentAsDouble(n1, n2, 0, 0);
566 "testing convertion of image output vtk->mitk by reslicer");
569 #ifdef EXTRACTOR_DEBUG 571 <<
"TESTINFO index: " << sliceindex <<
" orientation: " << orientation <<
" frontside: " << isFrontside
572 <<
" rotated: " << isRotated;
574 <<
"slice index to world: " << sliceIndexToWorld;
576 <<
"image index to world: " << imageIndexToWorld;
579 <<
"vtk: slice: " << PixelvalueByMitkOutput <<
", image: " << valueVTKinImage;
582 <<
"testPoint3D InWorld" << testPoint3DInWorld <<
" is " << testPoint2DInIndex <<
" in 2D";
584 <<
"randoms: " << ((int)n1) <<
", " << ((int)n2);
586 <<
"point is inside plane: " << plane->IsInside(testPoint3DInWorld)
590 <<
"volume idx: " << testPoint3DInIndex <<
" = " << valueAt3DVolume;
592 <<
"volume world: " << testPoint3DInWorld <<
" = " << valueAt3DVolumeByWorld;
594 <<
"slice idx: " << testPoint2DInIndex <<
" = " << valueAtSlice;
597 curr[0] = curr[1] = curr[2] = 0;
599 for (
int i = 0; i < 32; ++i)
601 for (
int j = 0; j < 32; ++j)
604 if (SliceReadAccessor.GetPixelByIndex(curr) == valueAt3DVolume)
606 MITK_INFO <<
"\n" << valueAt3DVolume <<
" MATCHED mitk " << curr;
613 typedef itk::Image<unsigned short, 2> Image2DType;
615 Image2DType::Pointer img = Image2DType::New();
617 typedef itk::ImageRegionConstIterator<Image2DType> Iterator2D;
619 Iterator2D iter(img, img->GetLargestPossibleRegion());
621 while (!iter.IsAtEnd())
623 if (img->GetPixel(iter.GetIndex()) == valueAt3DVolume)
624 MITK_INFO <<
"\n" << valueAt3DVolume <<
" MATCHED itk " << iter.GetIndex();
628 #endif // EXTRACTOR_DEBUG 632 static float randFloat()
634 return (((
float)rand() + 1.0) / ((
float)RAND_MAX + 1.0)) +
635 (((float)rand() + 1.0) / ((float)RAND_MAX + 1.0)) / ((
float)RAND_MAX + 1.0);
639 static void InitializeTestVolume()
644 ItkVolumeGeneration();
649 writer->SetInput(TestVolume);
653 std::ostringstream filename;
654 filename <<
"C:\\home\\schroedt\\MITK\\Modules\\ImageExtraction\\Testing\\Data\\sphere_";
655 filename << TestvolumeSize;
658 file = filename.str();
660 writer->SetFileName(file);
662 #endif // SAVE_VOLUME 666 #ifndef CREATE_VOLUME // read from file 670 std::string filename = locator->FindFile(
"sphere_512.nrrd.mhd",
"Modules/ImageExtraction/Testing/Data");
672 TestVolume = mitk::IOUtil::Load<mitk::Image>(filename);
676 #ifdef CALC_TESTFAILURE_DEVIATION 683 struct SliceProperties
685 double planeDistanceToSphereCenter;
687 double diameterInPixel;
688 double diameterCalculated;
689 double percentageRadiusToPixel;
690 double areaCalculated;
692 double percentageAreaCalcToPixel;
696 static double TestvolumeSize;
698 static std::string TestName;
699 static unsigned char pixelValueSet;
700 static SliceProperties testResults;
701 static double TestFailureDeviation;
707 static void ItkVolumeGeneration()
709 typedef itk::Image<unsigned char, 3> TestVolumeType;
711 typedef itk::ImageRegionConstIterator<TestVolumeType> ImageIterator;
713 TestVolumeType::Pointer sphereImage = TestVolumeType::New();
715 TestVolumeType::IndexType start;
716 start[0] = start[1] = start[2] = 0;
718 TestVolumeType::SizeType size;
719 size[0] = size[1] = size[2] = TestvolumeSize;
721 TestVolumeType::RegionType imgRegion;
722 imgRegion.SetSize(size);
723 imgRegion.SetIndex(start);
725 sphereImage->SetRegions(imgRegion);
726 sphereImage->SetSpacing(1.0);
727 sphereImage->Allocate();
729 sphereImage->FillBuffer(0);
732 center[0] = center[1] = center[2] = TestvolumeSize / 2.0;
734 double radius = TestvolumeSize / 4.0;
736 double pixelValue = pixelValueSet;
738 ImageIterator imageIterator(sphereImage, sphereImage->GetLargestPossibleRegion());
739 imageIterator.GoToBegin();
743 while (!imageIterator.IsAtEnd())
745 currentVoxelInIndex[0] = imageIterator.GetIndex()[0];
746 currentVoxelInIndex[1] = imageIterator.GetIndex()[1];
747 currentVoxelInIndex[2] = imageIterator.GetIndex()[2];
749 double distanceToCenter = (center + (currentVoxelInIndex * -1.0)).GetNorm();
752 if (distanceToCenter < radius)
754 sphereImage->SetPixel(imageIterator.GetIndex(), pixelValue);
766 template <
typename TPixel,
unsigned int VImageDimension>
767 static void CalcTestFailureDeviation(itk::Image<TPixel, VImageDimension> *inputImage)
770 typedef itk::ImageRegionConstIterator<InputImageType> ImageIterator;
772 ImageIterator iterator(inputImage, inputImage->GetLargestPossibleRegion());
773 iterator.GoToBegin();
775 int volumeInPixel = 0;
777 while (!iterator.IsAtEnd())
779 if (inputImage->GetPixel(iterator.GetIndex()) == pixelValueSet)
784 double diameter = TestvolumeSize / 2.0;
785 double volumeCalculated = (1.0 / 6.0) * 3.14159265358979 * std::pow(diameter, 3);
787 double volumeDeviation = std::abs(100 - (100 / volumeCalculated * volumeInPixel));
789 typename InputImageType::IndexType index;
790 index[0] = index[1] = TestvolumeSize / 2.0;
794 while (index[2] < TestvolumeSize)
796 if (inputImage->GetPixel(index) == pixelValueSet)
801 double diameterDeviation = std::abs(100 - (100 / diameter * sumpixels));
803 MITK_INFO <<
"volume deviation: " << volumeDeviation <<
" diameter deviation:" << diameterDeviation;
805 mitkExtractSliceFilterTestClass::TestFailureDeviation = (volumeDeviation + diameterDeviation) / 2.0;
812 double mitkExtractSliceFilterTestClass::TestvolumeSize = 256.0;
814 std::string mitkExtractSliceFilterTestClass::TestName =
"";
815 unsigned char mitkExtractSliceFilterTestClass::pixelValueSet = 255;
816 mitkExtractSliceFilterTestClass::SliceProperties mitkExtractSliceFilterTestClass::testResults = {
817 -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0};
818 double mitkExtractSliceFilterTestClass::TestFailureDeviation = 0.0;
827 mitkExtractSliceFilterTestClass::PixelvalueBasedTest();
830 mitkExtractSliceFilterTestClass::InitializeTestVolume();
832 mitk::Vector3D spacing = mitkExtractSliceFilterTestClass::TestVolume->GetGeometry()->GetSpacing();
835 double sphereCenter = mitkExtractSliceFilterTestClass::TestvolumeSize / 2.0;
837 double planeSize = mitkExtractSliceFilterTestClass::TestvolumeSize;
841 geometryAxial->InitializeStandardPlane(
843 geometryAxial->ChangeImageGeometryConsideringOriginOffset(
true);
847 normal = geometryAxial->GetNormal();
851 origin += normal * 0.5;
855 mitkExtractSliceFilterTestClass::TestSlice(geometryAxial,
"Testing axial plane");
860 geometrySagital->InitializeStandardPlane(
862 geometrySagital->ChangeImageGeometryConsideringOriginOffset(
true);
864 origin = geometrySagital->GetOrigin();
865 normal = geometrySagital->GetNormal();
869 origin += normal * 0.5;
873 mitkExtractSliceFilterTestClass::TestSlice(geometrySagital,
"Testing sagittal plane");
878 geometrySagitalShifted->InitializeStandardPlane(
880 geometrySagitalShifted->ChangeImageGeometryConsideringOriginOffset(
true);
882 origin = geometrySagitalShifted->GetOrigin();
883 normal = geometrySagitalShifted->GetNormal();
887 origin += normal * 0.5;
891 mitkExtractSliceFilterTestClass::TestSlice(geometrySagitalShifted,
"Testing sagittal plane shifted");
896 geometryCoronal->InitializeStandardPlane(
898 geometryCoronal->ChangeImageGeometryConsideringOriginOffset(
true);
900 origin = geometryCoronal->GetOrigin();
901 normal = geometryCoronal->GetNormal();
905 origin += normal * 0.5;
909 mitkExtractSliceFilterTestClass::TestSlice(geometryCoronal,
"Testing coronal plane");
914 obliquePlane->InitializeStandardPlane(
916 obliquePlane->ChangeImageGeometryConsideringOriginOffset(
true);
918 origin = obliquePlane->GetOrigin();
919 normal = obliquePlane->GetNormal();
923 origin += normal * 0.5;
928 rotationVector[0] = 0.2;
929 rotationVector[1] = 0.4;
930 rotationVector[2] = 0.62;
936 obliquePlane->ExecuteOperation(op);
939 mitkExtractSliceFilterTestClass::TestSlice(obliquePlane,
"Testing oblique plane");
942 #ifdef SHOW_SLICE_IN_RENDER_WINDOW 948 vtkSmartPointer<vtkImageReslice> slicer = vtkSmartPointer<vtkImageReslice>::New();
950 slicer->SetInput(pic->GetVtkImageData());
953 obliquePl->InitializeStandardPlane(
955 obliquePl->ChangeImageGeometryConsideringOriginOffset(
true);
959 n = obliquePl->GetNormal();
965 obliquePl->SetOrigin(origin2);
968 rotation[0] = 0.534307;
969 rotation[1] = 0.000439605;
970 rotation[2] = 0.423017;
975 obliquePl->ExecuteOperation(operation);
979 origin[0] = obliquePl->GetOrigin()[0];
980 origin[1] = obliquePl->GetOrigin()[1];
981 origin[2] = obliquePl->GetOrigin()[2];
982 slicer->SetResliceAxesOrigin(origin);
985 right = obliquePl->GetAxisVector(0);
986 bottom = obliquePl->GetAxisVector(1);
987 normal = obliquePl->GetNormal();
1001 slicer->SetResliceAxesDirectionCosines(cosines);
1003 slicer->SetOutputDimensionality(2);
1007 vtkSmartPointer<vtkPlaneSource> vtkPlane = vtkSmartPointer<vtkPlaneSource>::New();
1008 vtkPlane->SetOrigin(0.0, 0.0, 0.0);
1013 vtkPlane->SetPoint1(1.0, 0.0, 0.0);
1014 vtkPlane->SetPoint2(0.0, 1.0, 0.0);
1017 vtkSmartPointer<vtkPolyDataMapper> imageMapper = vtkSmartPointer<vtkPolyDataMapper>::New();
1018 imageMapper->SetInputConnection(vtkPlane->GetOutputPort());
1020 vtkSmartPointer<vtkLookupTable> lookupTable = vtkSmartPointer<vtkLookupTable>::New();
1023 lookupTable->SetRampToLinear();
1024 lookupTable->SetSaturationRange(0.0, 0.0);
1025 lookupTable->SetHueRange(0.0, 0.0);
1026 lookupTable->SetValueRange(0.0, 1.0);
1027 lookupTable->Build();
1029 lookupTable->SetTableValue(0, 0.0, 0.0, 0.0, 0.0);
1030 lookupTable->SetRange(-255.0, 255.0);
1033 vtkSmartPointer<vtkTexture> texture = vtkSmartPointer<vtkTexture>::New();
1035 texture->SetInput(slicer->GetOutput());
1037 texture->SetLookupTable(lookupTable);
1039 texture->SetMapColorScalarsThroughLookupTable(
true);
1041 vtkSmartPointer<vtkActor> imageActor = vtkSmartPointer<vtkActor>::New();
1042 imageActor->SetMapper(imageMapper);
1043 imageActor->SetTexture(texture);
1046 vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();
1047 renderer->AddActor(imageActor);
1050 vtkSmartPointer<vtkRenderWindow> renderWindow = vtkSmartPointer<vtkRenderWindow>::New();
1051 renderWindow->AddRenderer(renderer);
1054 vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor = vtkSmartPointer<vtkRenderWindowInteractor>::New();
1055 vtkSmartPointer<vtkInteractorStyleImage> style = vtkSmartPointer<vtkInteractorStyleImage>::New();
1056 renderWindowInteractor->SetInteractorStyle(style);
1059 renderWindowInteractor->SetRenderWindow(renderWindow);
1062 renderWindow->Render();
1063 renderWindowInteractor->Start();
1066 #endif // SHOW_SLICE_IN_RENDER_WINDOW void IndexToWorld(const mitk::Vector3D &vec_units, mitk::Vector3D &vec_mm) const
Convert (continuous or discrete) index coordinates of a vector vec_units to world coordinates (in mm)...
Gives locked and index-based read access for a particular image part. The class provides several set-...
#define AccessFixedDimensionByItk(mitkImage, itkImageTypeFunction, dimension)
Access a mitk-image with known dimension by an itk-image.
itk::Image< unsigned char, 3 > ImageType
bool IsInside(const mitk::Point3D &p) const
Test whether the point p (world coordinates in mm) is inside the bounding box.
#define MITK_TEST_CONDITION_REQUIRED(COND, MSG)
::mitk::Image InputImageType
virtual vtkImageData * GetVtkImageData(int t=0, int n=0)
Get a volume at a specific time t of channel n as a vtkImageData.
section GeneralTestsDeprecatedOldTestingStyle Deprecated macros All tests with MITK_TEST_BEGIN()
Constants for most interaction classes, due to the generic StateMachines.
#define MITK_TEST_CONDITION(COND, MSG)
void vnl2vtk(const vnl_vector< Tin > &in, Tout *out)
Image class for storing images.
mitk::Image::Pointer image
void WorldToIndex(const mitk::Point3D &pt_mm, mitk::Point3D &pt_units) const
Convert world coordinates (in mm) of a point to (continuous!) index coordinates.
void CastToMitkImage(const itk::SmartPointer< ItkOutputImageType > &itkimage, itk::SmartPointer< mitk::Image > &mitkoutputimage)
Cast an itk::Image (with a specific type) to an mitk::Image.
void MITKCORE_EXPORT CastToItkImage(const mitk::Image *mitkImage, itk::SmartPointer< ItkOutputImageType > &itkOutputImage)
Cast an mitk::Image to an itk::Image with a specific type.
Describes a two-dimensional, rectangular plane.
Operation, that holds everything necessary for an rotation operation on mitk::BaseData.
mitk::BaseGeometry * GetGeometry(int t=0) const
Return the geometry, which is a TimeGeometry, of the data as non-const pointer.
static StandardFileLocations * GetInstance()