/*Maysa Macedo- maysa@ime.usp.br*/ //Como criar e imprimir uma imagem colorida no ITK /* -------------- DECLARAÇÃO----------------------------*/ enum { ImageDimension = 2 }; /** Dimension of the images to be registered */ typedef unsigned char OutputWriterPixelType; typedef itk::RGBPixel< OutputWriterPixelType > RGBPixelType; typedef itk::Image< RGBPixelType,ImageDimension > RGBImageType; typedef itk::ImageFileWriter RGBWriterType; RGBImageType::Pointer m_RGBImageOutput; RGBWriterType::Pointer m_RGBImageWriter; RGBImageType::IndexType rgbpixelIndex; RGBImageType::PixelType rgbpixelValue; RGBImageType::SizeType rgbsize; RGBImageType::RegionType rgbregion; //imagem original ou processada binária ou em nível de cinza //defina o InputPixelType typedef itk::Image InputImageType; /** Type of the input image */ /* --------------INICIALIZAÇÃO----------------------------*/ m_ImageInput = InputImageType::New(); m_RGBImageOutput = RGBImageType::New(); m_RGBImageWriter = RGBWriterType::New(); //****************************** //processe a imagem de entrada m_ImageInput // ... // .... //**************************** rgbpixelIndex[0] = 0; rgbpixelIndex[1] = 0; rgbsize = m_ImageInput->GetBufferedRegion().GetSize(); rgbregion.SetSize( rgbsize ); rgbregion.SetIndex( rgbpixelIndex ); m_RGBImageOutput->SetRegions( rgbregion ); m_RGBImageOutput->Allocate(); //imagem toda branca rgbpixelValue.SetRed(255); rgbpixelValue.SetGreen(255); rgbpixelValue.SetBlue(255); m_RGBImageOutput->FillBuffer( rgbpixelValue ); /* --------------PREENCHIMENTO COM COR----------------------------*/ IteratorType inputIt( m_ImageInput, m_ImageInput->GetRequestedRegion() ); IteratorRGBType outputIt( m_RGBImageOutput, m_RGBImageOutput->GetRequestedRegion() ); outputIt.GoToBegin(); for ( inputIt.GoToBegin(); !inputIt.IsAtEnd(); ++inputIt){ if (inputIt.Get() == 255) { //pixels de cor vermelha rgbpixelValue.SetRed(255); rgbpixelValue.SetGreen(0); rgbpixelValue.SetBlue(0); outputIt.Set(rgbpixelValue); } ++outputIt; } m_RGBImageWriter->SetFileName("imagemColorida.png"); m_RGBImageWriter->SetInput(m_RGBImageOutput); m_RGBImageWriter->Update(); /* -------- fim --------------- */