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

Reply via email to