CustusX  20.03-rc1
An IGT application
cxImageAlgorithms.h
Go to the documentation of this file.
1 /*=========================================================================
2 This file is part of CustusX, an Image Guided Therapy Application.
3 
4 Copyright (c) SINTEF Department of Medical Technology.
5 All rights reserved.
6 
7 CustusX is released under a BSD 3-Clause license.
8 
9 See Lisence.txt (https://github.com/SINTEFMedtek/CustusX/blob/master/License.txt) for details.
10 =========================================================================*/
11 
12 #ifndef CXIMAGEALGORITHMS_H_
13 #define CXIMAGEALGORITHMS_H_
14 
15 #include "cxResourceExport.h"
16 
17 #include <map>
18 #include <vector>
19 #include <QDateTime>
20 #include <QRegExp>
21 #include "cxForwardDeclarations.h"
22 #include "cxTransform3D.h"
23 #include "cxTypeConversions.h"
24 #include "vtkForwardDeclarations.h"
25 #include "cxBoundingBox3D.h"
26 
27 namespace cx
28 {
29 
41 cxResource_EXPORT ImagePtr resampleImage(PatientModelServicePtr dataManager, ImagePtr image, const Vector3D spacing, QString uid="", QString name="");
42 cxResource_EXPORT ImagePtr resampleImage(PatientModelServicePtr dataManager, ImagePtr image, Transform3D refMi);
43 cxResource_EXPORT vtkImageDataPtr cropImage(vtkImageDataPtr input, IntBoundingBox3D cropbox);
44 cxResource_EXPORT ImagePtr cropImage(PatientModelServicePtr dataManager, ImagePtr image);
45 cxResource_EXPORT ImagePtr duplicateImage(PatientModelServicePtr dataManager, ImagePtr image);
46 
47 cxResource_EXPORT QImage vtkImageDataToQImage(vtkImageDataPtr imageData, bool overlay = false, QColor overlayColor = QColor(255, 255, 0, 70));
48 cxResource_EXPORT QRgb convertToQColor(unsigned char *colorsPtr, bool overlay, QColor overlayColor);
49 cxResource_EXPORT bool isDark(unsigned char *colorsPtr);
50 cxResource_EXPORT QRgb modifyOverlayColor(unsigned char *colorsPtr, QColor overlayColor);
51 
63 cxResource_EXPORT vtkImageDataPtr createSlice(ImagePtr image, PLANE_TYPE planeType, Vector3D outputSpacing, Eigen::Array3i outputDimensions, ToolPtr sliceTool, PatientModelServicePtr patientModel, bool applyLUT);
64 
67 cxResource_EXPORT QDateTime extractTimestamp(QString text);
68 
73 template<class T>
74 std::vector<T> sortOnAcquisitionTime(std::map<QString, T> input)
75 {
76  typedef std::multimap<QDateTime,T> SortedMap;
77  SortedMap sorted;
78 
79  for (typename std::map<QString, T>::iterator iter=input.begin(); iter!=input.end(); ++iter)
80  {
81  sorted.insert(std::make_pair(iter->second->getAcquisitionTime(), iter->second));
82  }
83 
84  std::vector<T> retval;
85  for (typename SortedMap::iterator iter=sorted.begin(); iter!=sorted.end(); ++iter)
86  retval.push_back(iter->second);
87  return retval;
88 }
89 
94 template<class T>
95 std::vector<T> sortOnGroupsAndAcquisitionTime(std::map<QString, T> input)
96 {
97  typedef std::map<QString, T> DataMap;
98  std::map<QDateTime, DataMap> bin;
99 
100  for (typename DataMap::iterator iter=input.begin(); iter!=input.end(); ++iter)
101  {
102  QDateTime binTS = extractTimestamp(iter->second->getUid());
103  bin[binTS].insert(*iter);
104  }
105 
106 
107  std::vector<T> retval;
108 
109  for (typename std::map<QDateTime, DataMap>::iterator iter=bin.begin(); iter!=bin.end(); ++iter)
110  {
111  std::vector<T> localSorted = sortOnAcquisitionTime(iter->second);
112  std::copy(localSorted.begin(), localSorted.end(), back_inserter(retval));
113  }
114 
115  return retval;
116 }
117 
122 } // namespace cx
123 
124 
125 
126 #endif /* CXIMAGEALGORITHMS_H_ */
QRgb modifyOverlayColor(unsigned char *colorsPtr, QColor overlayColor)
ImagePtr resampleImage(PatientModelServicePtr dataManager, ImagePtr image, Transform3D qMd)
Transform3D Transform3D
Transform3D is a representation of an affine 3D transform.
QRgb convertToQColor(unsigned char *colorsPtr, bool overlay, QColor overlayColor)
vtkImageDataPtr cropImage(vtkImageDataPtr input, IntBoundingBox3D cropbox)
boost::shared_ptr< class Image > ImagePtr
Definition: cxDicomWidget.h:27
vtkImageDataPtr createSlice(ImagePtr image, PLANE_TYPE planeType, Vector3D outputSpacing, Eigen::Array3i outputDimensions, ToolPtr sliceTool, PatientModelServicePtr patientModel, bool applyLUT)
createSlice Creates a 2D slice through a 3D volume. Result slice will be oriented for radiological vi...
bool isDark(unsigned char *colorsPtr)
ImagePtr duplicateImage(PatientModelServicePtr dataManager, ImagePtr image)
std::vector< T > sortOnGroupsAndAcquisitionTime(std::map< QString, T > input)
boost::shared_ptr< class PatientModelService > PatientModelServicePtr
QImage vtkImageDataToQImage(vtkImageDataPtr imageData, bool overlay, QColor overlayColor)
Eigen::Vector3d Vector3D
Vector3D is a representation of a point or vector in 3D.
Definition: cxVector3D.h:42
std::vector< T > sortOnAcquisitionTime(std::map< QString, T > input)
QDateTime extractTimestamp(QString text)
vtkSmartPointer< class vtkImageData > vtkImageDataPtr
Namespace for all CustusX production code.
boost::shared_ptr< class Tool > ToolPtr