20 #include <itkImageFileReader.h> 21 #include <itkRawImageIO.h> 30 std::vector<std::string> pixelEnum;
42 std::vector<std::string> dimEnum;
43 dimEnum.push_back(
"2");
44 dimEnum.push_back(
"3");
48 std::vector<std::string> endianEnum;
70 std::vector<mitk::BaseData::Pointer> result;
88 if (dimensionality ==
"2")
91 result.push_back(TypedRead<signed char, 2>(path, endianity, dimensions));
93 result.push_back(TypedRead<unsigned char, 2>(path, endianity, dimensions));
95 result.push_back(TypedRead<signed short int, 2>(path, endianity, dimensions));
97 result.push_back(TypedRead<unsigned short int, 2>(path, endianity, dimensions));
99 result.push_back(TypedRead<unsigned int, 2>(path, endianity, dimensions));
101 result.push_back(TypedRead<signed int, 2>(path, endianity, dimensions));
103 result.push_back(TypedRead<float, 2>(path, endianity, dimensions));
105 result.push_back(TypedRead<double, 2>(path, endianity, dimensions));
108 MITK_INFO <<
"Error while reading raw file: Dimensionality or pixel type not supported or not properly set" 112 else if (dimensionality ==
"3")
115 result.push_back(TypedRead<signed char, 3>(path, endianity, dimensions));
117 result.push_back(TypedRead<unsigned char, 3>(path, endianity, dimensions));
119 result.push_back(TypedRead<signed short int, 3>(path, endianity, dimensions));
121 result.push_back(TypedRead<unsigned short int, 3>(path, endianity, dimensions));
123 result.push_back(TypedRead<unsigned int, 3>(path, endianity, dimensions));
125 result.push_back(TypedRead<signed int, 3>(path, endianity, dimensions));
127 result.push_back(TypedRead<float, 3>(path, endianity, dimensions));
129 result.push_back(TypedRead<double, 3>(path, endianity, dimensions));
132 MITK_INFO <<
"Error while reading raw file: Dimensionality or pixel type not supported or not properly set" 138 MITK_INFO <<
"Error while reading raw file: Dimensionality not supported" << std::endl;
144 template <
typename TPixel,
unsigned int VImageDimensions>
149 typedef itk::Image<TPixel, VImageDimensions>
ImageType;
150 typedef itk::ImageFileReader<ImageType> ReaderType;
151 typedef itk::RawImageIO<TPixel, VImageDimensions> IOType;
153 typename ReaderType::Pointer reader = ReaderType::New();
154 typename IOType::Pointer io = IOType::New();
156 io->SetFileDimensionality(VImageDimensions);
158 for (
unsigned short int dim = 0; dim < VImageDimensions; ++dim)
160 io->SetDimensions(dim, size[dim]);
165 io->SetByteOrderToLittleEndian();
167 else if (endianity ==
BIG)
169 io->SetByteOrderToBigEndian();
173 MITK_INFO <<
"Warning: endianity not properly set. Resulting image might be incorrect";
176 reader->SetImageIO(io);
177 reader->SetFileName(path);
183 catch (
const itk::ExceptionObject &err )
185 MITK_ERROR <<
"An error occurred during the raw image reading process: ";
186 MITK_INFO << err.GetDescription() << std::endl;
191 image->SetVolume(reader->GetOutput()->GetBufferPointer());
192 return image.GetPointer();
static std::string PIXEL_TYPE_USHORT()
static std::string PIXEL_TYPE_DOUBLE()
static std::string DIMENSION_ENUM()
static std::string ENDIANNESS_ENUM()
itk::Image< unsigned char, 3 > ImageType
ValueType * any_cast(Any *operand)
std::map< std::string, us::Any > Options
Options for reading or writing data.
static std::string PIXEL_TYPE_CHAR()
static std::string ENDIANNESS_BIG()
static std::string SIZE_Z()
The CustomMimeType class represents a custom mime-type which may be registered as a service object...
static std::string PIXEL_TYPE_UINT()
std::string GetLocalFileName() const
Get a local file name for reading.
void SetDefaultOptions(const Options &defaultOptions)
us::ServiceRegistration< IFileReader > RegisterService(us::ModuleContext *context=us::GetModuleContext())
static std::string PIXEL_TYPE_INT()
Options GetOptions() const override
returns a list of the supported options
mitk::Image::Pointer image
static std::string DIMENSION()
static std::string SIZE_X()
static std::string ENDIANNESS_LITTLE()
void CastToMitkImage(const itk::SmartPointer< ItkOutputImageType > &itkimage, itk::SmartPointer< mitk::Image > &mitkoutputimage)
Cast an itk::Image (with a specific type) to an mitk::Image.
RawImageFileReaderService()
Base class for creating mitk::BaseData objects from files or streams.
static std::string PIXEL_TYPE_SHORT()
static std::string ENDIANNESS()
std::vector< itk::SmartPointer< BaseData > > Read() override
Reads a path or stream and creates a list of BaseData objects.
static std::string PIXEL_TYPE_FLOAT()
static std::string SIZE_Y()
static std::string PIXEL_TYPE_UCHAR()
static std::string PIXEL_TYPE_ENUM()
static std::string PIXEL_TYPE()