[vtkusers] ImagePlaneWidget mapping ImageData with 3 scalars to rgb
DL I
inglis.dl at gmail.com
Wed Sep 30 15:00:46 EDT 2015
Hi Lars,
I think the problem is the vtkLookupTable is meant to take a single
component (scalar value) and map it to RGB.
So even though the image has 3 unsigned char components, only the first
component gets mapped through. What you want
to do in this case is just pass the image directly through without using a
lookup table. However, with 3D image data, you might
not be able to do window levelling: not sure, just a hunch at this point.
Also, you dont need to set a vtkLookupTable to
the vtkImageSlice's vtkImageProperty since the image is already 3 unsigned
char.
The following worked for me:
#include <vtkImageMapToColors.h>
#include <vtkImagePlaneWidget.h>
#include <vtkImageData.h>
#include <vtkSmartPointer.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkInteractorStyleImage.h>
#include <vtkRenderer.h>
#include <vtkImageMapper.h>
#include <vtkImageSliceMapper.h>
#include <vtkImageProperty.h>
#include <vtkImageSlice.h>
#include <vtkLookupTable.h>
#include <vtkJPEGReader.h>
int main(void) {
// Setup renderers
vtkSmartPointer<vtkRenderer> renderer =
vtkSmartPointer<vtkRenderer>::New();
// Setup render window
vtkSmartPointer<vtkRenderWindow> renderWindow =
vtkSmartPointer<vtkRenderWindow>::New();
renderWindow->SetSize(800, 800);
renderWindow->AddRenderer(renderer);
// Setup render window interactor
vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor =
vtkSmartPointer<vtkRenderWindowInteractor>::New();
renderWindowInteractor->SetRenderWindow(renderWindow);
// create input
vtkSmartPointer<vtkJPEGReader> reader =
vtkSmartPointer<vtkJPEGReader>::New();
reader->SetFileName("/home/dean/files/repository/VTKData/Data/beach.jpg");
vtkImageData* id = reader->GetOutput();
reader->Update();
int* dim = id->GetDimensions();
// image plane widget
vtkSmartPointer<vtkImagePlaneWidget> ipw =
vtkSmartPointer<vtkImagePlaneWidget>::New();
ipw->SetInteractor(renderWindowInteractor);
ipw->SetInput(reader->GetOutput());
ipw->SetPlaneOrientation(2);
ipw->GetColorMap()->SetLookupTable(NULL);
ipw->GetColorMap()->SetOutputFormatToRGB();
ipw->On();
// slice mapper
vtkSmartPointer<vtkImageSliceMapper> imageMapper =
vtkSmartPointer<vtkImageSliceMapper>::New();
imageMapper->SetInput(reader->GetOutput());
vtkSmartPointer<vtkImageSlice> image =
vtkSmartPointer<vtkImageSlice>::New();
image->SetMapper(imageMapper);
image->SetPosition(1.5 * dim[0], 0, 0); // shift in x direction
renderer->AddViewProp(image);
// proper initial display
renderer->ResetCamera();
// Render and start interaction
renderWindowInteractor->Initialize();
renderWindowInteractor->Start();
return EXIT_SUCCESS;
}
- Dean
1,5 Top
On Wed, Sep 30, 2015 at 3:44 AM, Lars Matthäus <lars.matthaeus at web.de>
wrote:
> Dear Dean,
>
> Thanks for your help! Unfortunately, it doesn't solve the problem. The
> image in the vtkImagePlaneWidget is still not like the original rgb. I
> attach again some screenshots for comparison (vtkImagePlaneWidget on the
> left, vtkImageSliceMapper on the right). Is there anything else I could
> try?
>
> Best,
> Lars
>
> Am 29.09.2015 um 15:22 schrieb DL I:
> > Lars,
> > try changing your value and saturation ranges to something else, like
> (1,1)
> > regards,
> > Dean
> >
> > On Mon, Sep 28, 2015 at 10:29 AM, Lars Matthäus <lars.matthaeus at web.de
> > <mailto:lars.matthaeus at web.de>> wrote:
> >
> > I have a DataSet with 3 scalar components, e.g. from loading a stack
> of
> > rgb images with the vtkJPEGReader. I want to slice through it using a
> > vtkImagePlaneWidget. Unfortunately, I cannot get the widget to
> display
> > the rgb image; I only get a grey image.
> >
> > I played with the vtkLookupTable::SetVectorModeToRGBColors
> successfully
> > to display the image as rgb using a vtkImageSliceMapper, but when I
> use
> > the same lookup table for the vtkImagePlaneWidget, I get a grey
> > image again.
> >
> > I attach some java sample code comparing the vtkImagePlaneWidget and
> the
> > vtkImageSliceMapper as well as the output of the program.
> >
> > Any help appreciated!
> > Lars
> >
> > _______________________________________________
> > Powered by www.kitware.com <http://www.kitware.com>
> >
> > Visit other Kitware open-source projects at
> > http://www.kitware.com/opensource/opensource.html
> >
> > Please keep messages on-topic and check the VTK FAQ at:
> > http://www.vtk.org/Wiki/VTK_FAQ
> >
> > Search the list archives at: http://markmail.org/search/?q=vtkusers
> >
> > Follow this link to subscribe/unsubscribe:
> > http://public.kitware.com/mailman/listinfo/vtkusers
> >
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/vtkusers/attachments/20150930/352e870b/attachment.html>
More information about the vtkusers
mailing list