[ITK-users] Problem writing RGB Nifti Image

Nicola Magnabosco nick.magnabosco at gmail.com
Tue May 13 06:34:21 EDT 2014


/Hi,
I've found some problems writing a Nifti Image. What I want to do, is to
read an RGB image (Nifti-3D), works separately on every channel and then
"merge" the three channels, composing a new output image.

For 2D image this approach works fine, but for Nifti images I get stuck on
writing. I can read the input image (.nii extension), separate the three
channels without problems (i can write every channels).

Some code of what I've done:/

/// CHANNEL types/
typedef itk::Image<float, 3> ImageType;
typedef itk::ImageFileWriter<ImageType> WriterType;
WriterType::Pointer writer = WriterType::New();

/// RGB types/
typedef itk::RGBPixel<unsigned char> RGBPixel; // problem also with float,
unsigned int/short
typedef itk::Image<RGBPixel,3> RGBImageType;
typedef itk::ImageFileReader<RGBImageType> RGBReaderType;
typedef itk::ImageFileWriter<RGBImageType> RGBWriterType;
typedef itk::NiftiImageIO NiftiIOType;

RGBReaderType::Pointer rgbreader = RGBReaderType::New();
RGBWriterType::Pointer rgbwriter = RGBWriterType::New();

NiftiIOType::Pointer niftiIO = NiftiIOType::New();
niftiIO->SetPixelType(itk::ImageIOBase::RGB);
niftiIO->SetComponentType(itk::ImageIOBase::UCHAR);

/// Read a nifti image/
rgbreader->SetFileName("brain.nii");
rgbreader->Update();

/// then I split the RGB image into three ImageType. I can write/view these
images without problems./
 ... ... ...
/// try to merge the three image into a new output RGB image/
...
RGBImageType::Pointer merged = RGBImageType::New();
merged->SetRegions(greenImage->GetLargestPossibleRegion());
merged->Allocate();
itk::ImageRegionIterator<RGBImageType> It(merged,
merged->GetLargestPossibleRegion());

for(It.GoToBegin(), redIt.GoToBegin(), greenIt.GoToBegin(),
blueIt.GoToBegin();
        !It.IsAtEnd();
        ++It, ++redIt, ++greenIt, ++blueIt, j++){

        RGBPixel onePixel;
        onePixel.Set(redIt.Get(),greenIt.Get(),blueIt.Get());
        It.Set(onePixel);
    }

// write output image without success
rgbwriter->SetFileName("vector.nii");
rgbwriter->SetImageIO(niftiIO);
rgbwriter->SetInput(merged);
rgbwriter->Update();


Thanks for anyone who will reply this post.
Nicola M



--
View this message in context: http://itk-insight-users.2283740.n2.nabble.com/Problem-writing-RGB-Nifti-Image-tp7585572.html
Sent from the ITK Insight Users mailing list archive at Nabble.com.


More information about the Insight-users mailing list