Medical Imaging Interaction Toolkit  2018.4.99-389bf124
Medical Imaging Interaction Toolkit
QmitkSemanticRelationsUIHelper.cpp
Go to the documentation of this file.
1 /*============================================================================
2 
3 The Medical Imaging Interaction Toolkit (MITK)
4 
5 Copyright (c) German Cancer Research Center (DKFZ)
6 All rights reserved.
7 
8 Use of this source code is governed by a 3-clause BSD license that can be
9 found in the LICENSE file.
10 
11 ============================================================================*/
12 
13 // semantic relations ui module
15 
16 // mitk core
17 #include <mitkExtractSliceFilter.h>
19 #include <mitkPlanarFigure.h>
20 #include <mitkPropertyNameHelper.h>
21 
22 // vtk
23 #include <vtkLookupTable.h>
24 
26 {
27  if (nullptr == dataNode)
28  {
29  return QPixmap();
30  }
31 
32  const mitk::Image* image = static_cast<const mitk::Image*>(dataNode->GetData());
33  if (nullptr == image || !image->IsInitialized())
34  {
35  return QPixmap();
36  }
37 
38  if (image->GetPixelType().GetNumberOfComponents() != 1) // for now only single component are allowed
39  {
40  return QPixmap();
41  }
42 
44  int sliceNumber = image->GetDimension(1) / 2;
45  sagittalPlaneGeometry->InitializeStandardPlane(image->GetGeometry(), mitk::PlaneGeometry::Sagittal, sliceNumber);
46 
48  extractSliceFilter->SetInput(image);
49  extractSliceFilter->SetInterpolationMode(mitk::ExtractSliceFilter::RESLICE_CUBIC);
50  extractSliceFilter->SetResliceTransformByGeometry(image->GetGeometry());
51  extractSliceFilter->SetWorldGeometry(sagittalPlaneGeometry);
52  extractSliceFilter->SetOutputDimensionality(2);
53  extractSliceFilter->SetVtkOutputRequest(true);
54  extractSliceFilter->Update();
55 
56  /*
57  mitk::Vector3D spacing;
58  mitk::FillVector3D(spacing,1.0,1.0,1.0);
59  slice->GetGeometry()->SetSpacing(spacing);
60  // save image slice
61  mitk::IOUtil::SaveImage( slice, d->m_Path + fileName + ".png" );
62  */
63 
64  vtkImageData* imageData = extractSliceFilter->GetVtkOutput();
65 
66  mitk::LevelWindow levelWindow;
67  dataNode->GetLevelWindow(levelWindow);
68  vtkSmartPointer<vtkLookupTable> lookupTable = vtkSmartPointer<vtkLookupTable>::New();
69  lookupTable->SetRange(levelWindow.GetLowerWindowBound(), levelWindow.GetUpperWindowBound());
70  lookupTable->SetSaturationRange(0.0, 0.0);
71  lookupTable->SetValueRange(0.0, 1.0);
72  lookupTable->SetHueRange(0.0, 0.0);
73  lookupTable->SetRampToLinear();
74 
75  vtkSmartPointer<vtkMitkLevelWindowFilter> levelWindowFilter = vtkSmartPointer<vtkMitkLevelWindowFilter>::New();
76  levelWindowFilter->SetLookupTable(lookupTable);
77  levelWindowFilter->SetInputData(imageData);
78  levelWindowFilter->SetMinOpacity(0.0);
79  levelWindowFilter->SetMaxOpacity(1.0);
80  int dims[3];
81  imageData->GetDimensions(dims);
82  double clippingBounds[] = { 0.0, static_cast<double>(dims[0]), 0.0, static_cast<double>(dims[1]) };
83  levelWindowFilter->SetClippingBounds(clippingBounds);
84  levelWindowFilter->Update();
85  imageData = levelWindowFilter->GetOutput();
86 
87  QImage thumbnailImage(reinterpret_cast<const unsigned char*>(imageData->GetScalarPointer()), dims[0], dims[1], QImage::Format_ARGB32);
88 
89  thumbnailImage = thumbnailImage.rgbSwapped().mirrored(false, true);
90  return QPixmap::fromImage(thumbnailImage);
91 }
const mitk::PixelType GetPixelType(int n=0) const
Returns the PixelType of channel n.
Definition: mitkImage.cpp:101
vcl_size_t GetNumberOfComponents() const
Get the number of components of which each element consists.
static Pointer New()
The LevelWindow class Class to store level/window values.
BaseData * GetData() const
Get the data object (instance of BaseData, e.g., an Image) managed by this DataNode.
unsigned int GetDimension() const
Get dimension of the image.
Definition: mitkImage.cpp:106
ScalarType GetUpperWindowBound() const
Image class for storing images.
Definition: mitkImage.h:72
MITKSEMANTICRELATIONSUI_EXPORT QPixmap GetPixmapFromImageNode(const mitk::DataNode *dataNode)
mitk::Image::Pointer image
virtual bool IsInitialized() const
Check whether the data has been initialized, i.e., at least the Geometry and other header data has be...
static Pointer New()
mitk::BaseGeometry * GetGeometry(int t=0) const
Return the geometry, which is a TimeGeometry, of the data as non-const pointer.
Definition: mitkBaseData.h:138
bool GetLevelWindow(mitk::LevelWindow &levelWindow, const mitk::BaseRenderer *renderer=nullptr, const char *propertyKey="levelwindow") const
Convenience access method for level-window properties (instances of LevelWindowProperty) ...
ScalarType GetLowerWindowBound() const
Class for nodes of the DataTree.
Definition: mitkDataNode.h:57