diff --git a/Core/Code/IO/mitkImageCreator.cpp b/Core/Code/IO/mitkImageCreator.cpp new file mode 100644 index 0000000000..e1deaa443f --- /dev/null +++ b/Core/Code/IO/mitkImageCreator.cpp @@ -0,0 +1,75 @@ +#include +#include +#include + +//creates a test image with given dimension filled with random values +//template +// static mitk::Image::Pointer mitk::ImageCreator::CreateTestImage(unsigned int dimX, +// unsigned int dimY, +// unsigned int dimZ, +// unsigned int dimT, +// unsigned int channels, +// const double randomMax, const double randMin) +//{ +// mitk::PixelType type; +// type.Initialize(typeid(TPixelType)); +// mitk::Image::Pointer output = mitk::Image::New(); +// unsigned int* dimensions = new unsigned int[4]; +// unsigned int numberOfDimensions = 0; +// unsigned int bufferSize = 0; +// bufferSize = dimX*dimY; + +// if(dimT == 0) +// { +// if(dimZ == 0) +// { +// numberOfDimensions = 2; +// } +// else +// { +// numberOfDimensions = 3; +// // bufferSize = dimX*dimY*dimZ; +// } +// } +// else +// { +// numberOfDimensions = 4; +// // bufferSize = dimX*dimY*dimZ*dimT; +// } + +// dimensions[0] = dimX; +// dimensions[1] = dimY; +// dimensions[2] = dimZ; +// dimensions[3] = dimT; + +// output->Initialize(type, numberOfDimensions, dimensions, channels); + +// TPixelType* imageBuffer = (TPixelType*)output->GetData(); +// itk::Statistics::MersenneTwisterRandomVariateGenerator::Pointer randomGenerator = itk::Statistics::MersenneTwisterRandomVariateGenerator::New(); + +// for(unsigned int t = 0; t < dimT; t++) +// { +// for(unsigned int s = 0; s < dimZ; s++) +// { +// for(unsigned int i = 0; i < bufferSize; i++) +// { +// if(type == typeid(int)) //call integer function +// { +// imageBuffer[i] = (TPixelType)randomGenerator->GetIntegerVariate((int)randomMax); +// //TODO random generator does not support integer values in a given range (e.g. from 5-10) +// //range is always [0, (int)randomMax] +// }else if((type == typeid(double)) || (type == typeid(float))) +// { +// imageBuffer[i] = (TPixelType)randomGenerator->GetUniformVariate(randMin,randomMax); +// }else if(type == typeid(unsigned char)) +// { +// imageBuffer[i] = ((TPixelType)randomGenerator->GetIntegerVariate((int)randomMax)) % 256; +// } +// //TODO call different methods for other datatypes +// } +// output->SetSlice(imageBuffer, s, t, channels); +// } +// } + +// return output; +//} diff --git a/Core/Code/IO/mitkImageCreator.h b/Core/Code/IO/mitkImageCreator.h new file mode 100644 index 0000000000..c227db1781 --- /dev/null +++ b/Core/Code/IO/mitkImageCreator.h @@ -0,0 +1,101 @@ +/*========================================================================= +Copyright (c) German Cancer Research Center, Division of Medical and +Biological Informatics. All rights reserved. +See MITKCopyright.txt or http://www.mitk.org/copyright.html for details. + +This software is distributed WITHOUT ANY WARRANTY; without even +the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +PURPOSE. See the above copyright notices for more information. + +=========================================================================*/ + +#ifndef ImageCreator_H_HEADER_INCLUDED +#define ImageCreator_H_HEADER_INCLUDED + +#include "mitkCommon.h" +#include "mitkImageSource.h" +#include +#include + +namespace mitk { + //##Documentation + //## @brief random generator for MITK images + //## @ingroup IO + class MITK_CORE_EXPORT ImageCreator + { + public: + template + static mitk::Image::Pointer CreateRandomImage(unsigned int dimX, + unsigned int dimY, + unsigned int dimZ = 1, + unsigned int dimT = 0, + unsigned int channels = 1, + const double randomMax = 1000.0f, const double randMin = 0.0f) + { + mitk::PixelType type; + type.Initialize(typeid(TPixelType)); + mitk::Image::Pointer output = mitk::Image::New(); + unsigned int* dimensions = new unsigned int[4]; + unsigned int numberOfDimensions = 0; + unsigned int bufferSize = 0; + bufferSize = dimX*dimY; + + if(dimT == 0) + { + if(dimZ == 0) + { + numberOfDimensions = 2; + } + else + { + numberOfDimensions = 3; + // bufferSize = dimX*dimY*dimZ; + } + } + else + { + numberOfDimensions = 4; + // bufferSize = dimX*dimY*dimZ*dimT; + } + + dimensions[0] = dimX; + dimensions[1] = dimY; + dimensions[2] = dimZ; + dimensions[3] = dimT; + + output->Initialize(type, numberOfDimensions, dimensions, channels); + + TPixelType* imageBuffer = (TPixelType*)output->GetData(); + itk::Statistics::MersenneTwisterRandomVariateGenerator::Pointer randomGenerator = itk::Statistics::MersenneTwisterRandomVariateGenerator::New(); + + for(unsigned int t = 0; t < dimT; t++) + { + for(unsigned int s = 0; s < dimZ; s++) + { + for(unsigned int i = 0; i < bufferSize; i++) + { + if(type == typeid(int)) //call integer function + { + imageBuffer[i] = (TPixelType)randomGenerator->GetIntegerVariate((int)randomMax); + //TODO random generator does not support integer values in a given range (e.g. from 5-10) + //range is always [0, (int)randomMax] + }else if((type == typeid(double)) || (type == typeid(float))) + { + imageBuffer[i] = (TPixelType)randomGenerator->GetUniformVariate(randMin,randomMax); + }else if(type == typeid(unsigned char)) + { + imageBuffer[i] = ((int)randomGenerator->GetIntegerVariate((int)randomMax)) % 256; + } + //TODO call different methods for other datatypes + } + output->SetSlice(imageBuffer, s, t, channels); + } + } + + return output; + } + + }; +} // namespace mitk + +#endif /* ImageCreator_H_HEADER_INCLUDED */ diff --git a/Core/Code/files.cmake b/Core/Code/files.cmake index 6784c9cc9e..dfab4303b2 100644 --- a/Core/Code/files.cmake +++ b/Core/Code/files.cmake @@ -1,225 +1,226 @@ SET(H_FILES Algorithms/itkLocalVariationImageFilter.h Algorithms/itkTotalVariationDenoisingImageFilter.h Algorithms/itkTotalVariationSingleIterationImageFilter.h DataManagement/mitkCommon.h Interactions/mitkEventMapperAddOn.h ) SET(CPP_FILES Algorithms/mitkBaseDataSource.cpp Algorithms/mitkBaseProcess.cpp Algorithms/mitkCoreObjectFactoryBase.cpp Algorithms/mitkCoreObjectFactory.cpp Algorithms/mitkDataNodeFactory.cpp Algorithms/mitkDataNodeSource.cpp Algorithms/mitkGeometry2DDataToSurfaceFilter.cpp Algorithms/mitkHistogramGenerator.cpp Algorithms/mitkImageCaster.cpp Algorithms/mitkImageCastPart1.cpp Algorithms/mitkImageCastPart2.cpp Algorithms/mitkImageCastPart3.cpp Algorithms/mitkImageCastPart4.cpp Algorithms/mitkImageChannelSelector.cpp Algorithms/mitkImageSliceSelector.cpp Algorithms/mitkImageSource.cpp Algorithms/mitkImageTimeSelector.cpp Algorithms/mitkImageToImageFilter.cpp Algorithms/mitkPointSetSource.cpp Algorithms/mitkPointSetToPointSetFilter.cpp Algorithms/mitkRGBToRGBACastImageFilter.cpp Algorithms/mitkSubImageSelector.cpp Algorithms/mitkSurfaceSource.cpp Algorithms/mitkSurfaceToSurfaceFilter.cpp Algorithms/mitkUIDGenerator.cpp Algorithms/mitkVolumeCalculator.cpp Controllers/mitkBaseController.cpp Controllers/mitkCallbackFromGUIThread.cpp Controllers/mitkCameraController.cpp Controllers/mitkCameraRotationController.cpp Controllers/mitkFocusManager.cpp Controllers/mitkLimitedLinearUndo.cpp Controllers/mitkOperationEvent.cpp Controllers/mitkProgressBar.cpp Controllers/mitkRenderingManager.cpp Controllers/mitkSliceNavigationController.cpp Controllers/mitkSlicesCoordinator.cpp Controllers/mitkSlicesRotator.cpp Controllers/mitkSlicesSwiveller.cpp Controllers/mitkStatusBar.cpp Controllers/mitkStepper.cpp Controllers/mitkTestManager.cpp Controllers/mitkUndoController.cpp Controllers/mitkVerboseLimitedLinearUndo.cpp Controllers/mitkVtkInteractorCameraController.cpp Controllers/mitkVtkLayerController.cpp DataManagement/mitkAbstractTransformGeometry.cpp DataManagement/mitkAnnotationProperty.cpp DataManagement/mitkApplicationCursor.cpp DataManagement/mitkBaseData.cpp DataManagement/mitkBaseProperty.cpp DataManagement/mitkClippingProperty.cpp DataManagement/mitkColorProperty.cpp DataManagement/mitkDataStorage.cpp #DataManagement/mitkDataTree.cpp DataManagement/mitkDataNode.cpp #DataManagement/mitkDataTreeStorage.cpp DataManagement/mitkDisplayGeometry.cpp DataManagement/mitkEnumerationProperty.cpp DataManagement/mitkGeometry2D.cpp DataManagement/mitkGeometry2DData.cpp DataManagement/mitkGeometry3D.cpp DataManagement/mitkGeometryData.cpp DataManagement/mitkGroupTagProperty.cpp DataManagement/mitkImage.cpp DataManagement/mitkImageDataItem.cpp DataManagement/mitkLandmarkBasedCurvedGeometry.cpp DataManagement/mitkLandmarkProjectorBasedCurvedGeometry.cpp DataManagement/mitkLandmarkProjector.cpp DataManagement/mitkLevelWindow.cpp DataManagement/mitkLevelWindowManager.cpp DataManagement/mitkLevelWindowPreset.cpp DataManagement/mitkLevelWindowProperty.cpp DataManagement/mitkLookupTable.cpp DataManagement/mitkLookupTables.cpp # specializations of GenericLookupTable DataManagement/mitkMemoryUtilities.cpp DataManagement/mitkModalityProperty.cpp DataManagement/mitkModeOperation.cpp DataManagement/mitkNodePredicateAnd.cpp DataManagement/mitkNodePredicateBase.cpp DataManagement/mitkNodePredicateCompositeBase.cpp DataManagement/mitkNodePredicateData.cpp DataManagement/mitkNodePredicateDataType.cpp DataManagement/mitkNodePredicateDimension.cpp DataManagement/mitkNodePredicateFirstLevel.cpp DataManagement/mitkNodePredicateNot.cpp DataManagement/mitkNodePredicateOr.cpp DataManagement/mitkNodePredicateProperty.cpp DataManagement/mitkNodePredicateSource.cpp DataManagement/mitkPlaneOrientationProperty.cpp DataManagement/mitkPlaneGeometry.cpp DataManagement/mitkPlaneOperation.cpp DataManagement/mitkPointOperation.cpp DataManagement/mitkPointSet.cpp DataManagement/mitkProperties.cpp DataManagement/mitkPropertyList.cpp DataManagement/mitkRotationOperation.cpp DataManagement/mitkSlicedData.cpp DataManagement/mitkSlicedGeometry3D.cpp DataManagement/mitkSmartPointerProperty.cpp DataManagement/mitkStandaloneDataStorage.cpp DataManagement/mitkStateTransitionOperation.cpp DataManagement/mitkStringProperty.cpp DataManagement/mitkSurface.cpp DataManagement/mitkSurfaceOperation.cpp DataManagement/mitkThinPlateSplineCurvedGeometry.cpp DataManagement/mitkTimeSlicedGeometry.cpp DataManagement/mitkTransferFunction.cpp DataManagement/mitkTransferFunctionInitializer.cpp DataManagement/mitkVector.cpp DataManagement/mitkVtkInterpolationProperty.cpp DataManagement/mitkVtkRepresentationProperty.cpp DataManagement/mitkVtkResliceInterpolationProperty.cpp DataManagement/mitkVtkScalarModeProperty.cpp DataManagement/mitkVtkVolumeRenderingProperty.cpp DataManagement/mitkWeakPointerProperty.cpp DataManagement/mitkShaderProperty.cpp DataManagement/mitkResliceMethodProperty.cpp DataManagement/mitkMaterial.cpp Interactions/mitkAction.cpp Interactions/mitkAffineInteractor.cpp Interactions/mitkCoordinateSupplier.cpp Interactions/mitkDisplayCoordinateOperation.cpp Interactions/mitkDisplayInteractor.cpp Interactions/mitkDisplayPositionEvent.cpp Interactions/mitkDisplayVectorInteractor.cpp Interactions/mitkDisplayVectorInteractorLevelWindow.cpp Interactions/mitkDisplayVectorInteractorScroll.cpp Interactions/mitkEvent.cpp Interactions/mitkEventDescription.cpp Interactions/mitkEventMapper.cpp Interactions/mitkGlobalInteraction.cpp Interactions/mitkInteractor.cpp Interactions/mitkMouseMovePointSetInteractor.cpp Interactions/mitkMoveSurfaceInteractor.cpp Interactions/mitkNodeDepententPointSetInteractor.cpp Interactions/mitkPointSetInteractor.cpp Interactions/mitkPositionEvent.cpp Interactions/mitkPositionTracker.cpp Interactions/mitkState.cpp Interactions/mitkStateEvent.cpp Interactions/mitkStateMachine.cpp Interactions/mitkStateMachineFactory.cpp Interactions/mitkTransition.cpp Interactions/mitkWheelEvent.cpp Interactions/mitkKeyEvent.cpp Interactions/mitkVtkEventAdapter.cpp IO/mitkBaseDataIOFactory.cpp IO/mitkDicomSeriesReader.cpp IO/mitkFileReader.cpp IO/mitkFileSeriesReader.cpp IO/mitkFileWriter.cpp IO/mitkIpPicGet.c + IO/mitkImageCreator.cpp IO/mitkImageWriter.cpp IO/mitkImageWriterFactory.cpp IO/mitkItkImageFileIOFactory.cpp IO/mitkItkImageFileReader.cpp IO/mitkItkPictureWrite.cpp IO/mitkLookupTableProperty.cpp IO/mitkOperation.cpp IO/mitkPicFileIOFactory.cpp IO/mitkPicFileReader.cpp IO/mitkPicFileWriter.cpp IO/mitkPicHelper.cpp IO/mitkPicVolumeTimeSeriesIOFactory.cpp IO/mitkPicVolumeTimeSeriesReader.cpp IO/mitkPixelType.cpp IO/mitkPointSetIOFactory.cpp IO/mitkPointSetReader.cpp IO/mitkPointSetWriter.cpp IO/mitkPointSetWriterFactory.cpp IO/mitkRawImageFileReader.cpp IO/mitkStandardFileLocations.cpp IO/mitkSTLFileIOFactory.cpp IO/mitkSTLFileReader.cpp IO/mitkSurfaceVtkWriter.cpp IO/mitkSurfaceVtkWriterFactory.cpp IO/mitkVtiFileIOFactory.cpp IO/mitkVtiFileReader.cpp IO/mitkVtkImageIOFactory.cpp IO/mitkVtkImageReader.cpp IO/mitkVtkSurfaceIOFactory.cpp IO/mitkVtkSurfaceReader.cpp IO/vtkPointSetXMLParser.cpp IO/mitkLog.cpp Rendering/mitkBaseRenderer.cpp Rendering/mitkVtkMapper2D.cpp Rendering/mitkVtkMapper3D.cpp Rendering/mitkRenderWindowFrame.cpp Rendering/mitkGeometry2DDataMapper2D.cpp Rendering/mitkGeometry2DDataVtkMapper3D.cpp Rendering/mitkGLMapper2D.cpp Rendering/mitkGradientBackground.cpp Rendering/mitkManufacturerLogo.cpp Rendering/mitkMapper2D.cpp Rendering/mitkMapper3D.cpp Rendering/mitkMapper.cpp Rendering/mitkPointSetGLMapper2D.cpp Rendering/mitkPointSetVtkMapper3D.cpp Rendering/mitkPolyDataGLMapper2D.cpp Rendering/mitkSurfaceGLMapper2D.cpp Rendering/mitkSurfaceVtkMapper3D.cpp Rendering/mitkVolumeDataVtkMapper3D.cpp Rendering/mitkVtkPropRenderer.cpp Rendering/mitkVtkWidgetRendering.cpp Rendering/vtkMitkRectangleProp.cpp Rendering/vtkMitkRenderProp.cpp Rendering/mitkVtkEventProvider.cpp Rendering/mitkRenderWindow.cpp Rendering/mitkRenderWindowBase.cpp Rendering/mitkShaderRepository.cpp Rendering/mitkImageMapperGL2D.cpp Rendering/vtkMitkThickSlicesFilter.cpp )