Hi!
Some time ago I wrote something similar (and temporary) for manual testing
purposes and hence it is not very well written but if I remember correctly it
did the job. The following snippet extracts an a region of an image which
overlaps with a planar figure and converts it to an QImage. Interesting for you
might be the last part where you can see that you have to mirror the image and
swap the RGB channels in case of color images.
mitk::DataNode::Pointer imageDataNode =
m_Controls.imageComboBox->GetSelectedNode();
mitk::Image::Pointer image = Get<mitk::Image>(imageDataNode);
mitk::PlanarFigure::Pointer planarFigure =
Get<mitk::PlanarFigure>(m_CrossSection);
mitk::ExtractSliceFilter::Pointer extractSliceFilter =
mitk::ExtractSliceFilter::New();
extractSliceFilter->SetInterpolationMode(mitk::ExtractSliceFilter::RESLICE_CUBIC);
extractSliceFilter->SetResliceTransformByGeometry(image->GetGeometry());
extractSliceFilter->SetWorldGeometry(planarFigure->GetGeometry2D());
extractSliceFilter->SetVtkOutputRequest(true);
extractSliceFilter->SetInput(image);
extractSliceFilter->Update();
vtkImageData* imageData = extractSliceFilter->GetVtkOutput();
mitk::LevelWindow levelWindow;
imageDataNode->GetLevelWindow(levelWindow);
vtkSmartPointer<vtkLookupTable> lookupTable =
vtkSmartPointer<vtkLookupTable>::New();
lookupTable->SetRange(levelWindow.GetLowerWindowBound(),
levelWindow.GetUpperWindowBound());
lookupTable->SetSaturationRange(0.0, 0.0);
lookupTable->SetValueRange(0.0, 1.0);
lookupTable->SetHueRange(0.0, 0.0);
lookupTable->SetRampToLinear();
vtkSmartPointer<vtkMitkLevelWindowFilter> levelWindowFilter =
vtkSmartPointer<vtkMitkLevelWindowFilter>::New();
levelWindowFilter->SetLookupTable(lookupTable);
levelWindowFilter->SetInput(imageData);
levelWindowFilter->SetMinOpacity(0.0);
levelWindowFilter->SetMaxOpacity(1.0);
int dims[3];
imageData->GetDimensions(dims);
vtkFloatingPointType clippingBounds[] = { 0.0, dims[0], 0.0, dims[1] };
levelWindowFilter->SetClippingBounds(clippingBounds);
levelWindowFilter->Update();
imageData = levelWindowFilter->GetOutput();
QImage inspectImage(
reinterpret_cast<const unsigned char*>(imageData->GetScalarPointer()),
dims[0],
dims[1],
QImage::Format_ARGB32);
inspectImage = inspectImage.rgbSwapped().mirrored(false, true);
m_Controls.inspectLabel->setPixmap(QPixmap::fromImage(inspectImage));
Best,
Stefan
________________________________________
Von: Taylor Braun-Jones [[email protected]]
Gesendet: Dienstag, 17. Dezember 2013 04:10
An: [email protected]
Betreff: [mitk-users] mitk::Image to QImage adapter
Hi mitk-users,
I'm looking into creating a QImage thumbnail generator/cacher for all DataNodes
in a DataStorage. I was hoping I might find something like this in MITK Core or
Modules, but I don't see anything. Before I re-create something that's already
been done, has anyone else created something like this that they could share?
Or even just the mitk::Image to QImage adapter part.
Thanks!
Taylor
------------------------------------------------------------------------------
Rapidly troubleshoot problems before they affect your business. Most IT
organizations don't have a clear picture of how application performance
affects their revenue. With AppDynamics, you get 100% visibility into your
Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro!
http://pubads.g.doubleclick.net/gampad/clk?id=84349831&iu=/4140/ostg.clktrk
_______________________________________________
mitk-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mitk-users