[Insight-users] Volume overlay

robert tamburo robert.tamburo at gmail.com
Thu Feb 10 14:09:47 EST 2011


You could create a blank RGB image, iterate the RGB image, then set pixels
one by one. Something like:

// initialize zero filled RGB image
rgbImage = RGBImageType::New();
RGBImageType::PixelType tempPixel;
tempPixel.Fill(0);
rgbImage->FillBuffer(tempPixel);

RGBImageType::PixelType rgbPixel;

// iterate RGB image
RGBIteratorType it(rgbImage, rgbImage->GetLargestPossibleRegion())
it.GoToBegin();
while(!it.IsAtEnd())
{
  if(labelImage1->GetPixel(it.GetIndex() != 0)
    {
    // set labelImage1 pixels to green
    rgbPixel[0] = 0; rgbPixel[1] = 255; rgbPixel[2] = 0;
    rgbImage->SetPixel(it.GetIndex(), rgbPixel);
    }
  else if(labelImage2->GetPixel(it.GetIndex() != 0)
    {
    // set labelImage2 pixels to blue
    rgbPixel[0] = 0; rgbPixel[1] = 0; rgbPixel[2] = 255;
    rgbImage->SetPixel(it.GetIndex(), rgbPixel);
    }
  else
    {
    // copy image data for non-label pixels
    rgbPixel.Fill(originalImage->GetPixel(it.GetIndex());
    rgbImage->SetPixel(it.GetIndex(), rgbPixel);
    }
++it;
}

Caveats: 1) images need to be of the same size and 2) above code was written
freehand without testing :)

On Thu, Feb 10, 2011 at 1:38 PM, Sara Rolfe <smrolfe at u.washington.edu>wrote:

> Hello,
>
> I'm attempting to overlay an image with color.  I've had trouble finding
> documentation on this, either in ITK or VTK.  The way I'm going about it is
> to scale the values of the image down and then use the add image filter to
> add the labels on top.  I could then use VTK to create a corresponding
> colormap.
>
> However, I'm getting stuck on something that should be very simple.  My
> operations to combine the two images are failing.  I think the problem is
> the SubtractConstantFromImageFilter.  I've checked the output and it looks
> like the constant is not being subtracted.  The input to this filter is an
> image with a value of 0 for the background and 255 for the object.  I'd like
> to change these to 0 and 1.  The pixel type is unsigned char.  I use the
> following:
>
> SubFilterType::Pointer subFilter = SubFilterType::New();
>  InputPixelType subValue = 254;
>  subFilter->SetConstant(subValue);
> subFilter->SetInput( imageInverter->GetOutput() );
>  subFilter->Update();
>
> But the output image is still 0 - 255.  Am I missing something simple?
>
> Also, is there a better way to accomplish this task, or any examples
> showing something similar?
>
> Thanks,
> Sara
>
> _____________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
>
> Kitware offers ITK Training Courses, for more information visit:
> http://www.kitware.com/products/protraining.html
>
> Please keep messages on-topic and check the ITK FAQ at:
> http://www.itk.org/Wiki/ITK_FAQ
>
> Follow this link to subscribe/unsubscribe:
> http://www.itk.org/mailman/listinfo/insight-users
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.itk.org/pipermail/insight-users/attachments/20110210/1fb07127/attachment.htm>


More information about the Insight-users mailing list