MeVisLab Toolbox Reference
mlTools.h
Go to the documentation of this file.
1 /*************************************************************************************
2 **
3 ** Copyright 2007, MeVis Medical Solutions AG
4 **
5 ** The user may use this file in accordance with the license agreement provided with
6 ** the Software or, alternatively, in accordance with the terms contained in a
7 ** written agreement between the user and MeVis Medical Solutions AG.
8 **
9 ** For further information use the contact form at https://www.mevislab.de/contact
10 **
11 **************************************************************************************/
12 
13 #ifndef ML_TOOLS_H
14 #define ML_TOOLS_H
15 
16 
18 
19 // ML-includes
20 #include "MLToolsSystem.h"
21 #include <mlModuleIncludes.h>
22 
23 // BitImage class.
24 #include "mlBitImage.h"
25 
26 // VirtualVolume class.
27 #include "mlVirtualVolume.h"
28 #include "mlTVirtualVolume.h"
29 
30 // Geometric primitives.
31 #include "mlDisc.h"
32 #include "mlSphere.h"
33 
34 // These are included from MLLinearAlgebra:
35 #include "mlLine.h"
36 #include "mlPlane.h"
37 #include "mlRotation.h"
38 
39 // Additional fields.
40 #include "mlMultiFields.h"
41 
42 ML_START_NAMESPACE
43 
44  //----------------------------------------------------------------------
47  //----------------------------------------------------------------------
49 
50  public:
51 
52  //----------------------------------------------------------------------
58  //----------------------------------------------------------------------
59  static MLErrorCode scanInput(Module *op, MLint inIdx,
60  MLdouble &stdMin, MLdouble &stdMax,
61  MLdouble &realMin, MLdouble &realMax);
62 
63  //----------------------------------------------------------------------
69  //----------------------------------------------------------------------
70  static MLErrorCode scanOutput(Module *op, MLint outIdx,
71  MLdouble &stdMin, MLdouble &stdMax,
72  MLdouble &realMin, MLdouble &realMax);
73 
74  //----------------------------------------------------------------------
81  //----------------------------------------------------------------------
83  MLdouble &stdMin, MLdouble &stdMax,
84  MLdouble &realMin, MLdouble &realMax,
85  MLRequestProgressCB* progressCallback = nullptr,
86  void* progressCallbackUserData = nullptr);
87 
88  //----------------------------------------------------------------------
94  //----------------------------------------------------------------------
95  static MLdouble calculateImageCheckSum(MLint outNum, Module &baseOp);
96 
97  //----------------------------------------------------------------------
108  //----------------------------------------------------------------------
109  static void separate(const std::string &stri, char sep, MLuint &num, std::string *&seps);
110 
111  //----------------------------------------------------------------------
113  //----------------------------------------------------------------------
114  static void replace(std::string& s, char sch, char rep);
115 
116  //----------------------------------------------------------------------
129  //----------------------------------------------------------------------
130  static std::string toHex(MLint64 val,
131  size_t minNumDigitSpace = 1,
132  bool useCapitals = true,
133  bool isSigned = false);
134 
135  //----------------------------------------------------------------------
154  //----------------------------------------------------------------------
155  static std::string toString(MLint64 val,
156  size_t minFieldSize = 1,
157  int align = 1,
158  size_t preSpaces = 0,
159  size_t postSpaces = 0,
160  int hex = 0,
161  size_t minNumDigitSpace = 8,
162  bool useCapitals = true);
163 
164  //-------------------------------------------------------------------------------
167  //-------------------------------------------------------------------------------
168  static bool appendToLog(const std::string &path, const std::string &logString);
169 
170  //-------------------------------------------------------------------------------
175  //-------------------------------------------------------------------------------
176  static bool clearLogFile(const std::string &path, bool remove=false);
177 
178  //-------------------------------------------------------------------------------
189  //-------------------------------------------------------------------------------
190 #ifndef BUILD_WITHOUT_DICOM_DEPENDENCY
192  double &slope, double &intercept, bool inverse = false);
193 #endif
194  //-------------------------------------------------------------------------------
198  //-------------------------------------------------------------------------------
199  static std::string getTypeInformation(MLDataType dt);
200 
201  //----------------------------------------------------------------------------------
216  //----------------------------------------------------------------------------------
217 
218  static void getLoopOrder(int dim,
219  const SubImageBox& calcBox,
220  std::vector<int>& loopOrder,
221  std::vector<int>& loopStart,
222  std::vector<int>& loopEnd);
223 
224  protected:
229  MLdouble &stdMin, MLdouble &stdMax,
230  MLdouble &realMin, MLdouble &realMax);
231 
234  MLdouble &stdMin, MLdouble &stdMax,
235  MLdouble &realMin, MLdouble &realMax,
236  MLRequestProgressCB* progressCallback = nullptr,
237  void* progressCallbackUserData = nullptr);
238 
239  //----------------------------------------------------------------------
243  //----------------------------------------------------------------------
244  static std::string _separateBuffer(const std::string &str,
245  const std::string &colSep,
246  const std::string &lineSep);
247 
248  };
249 
250 ML_END_NAMESPACE
251 
252 #endif // __mlTools_H
253 
#define MLTOOLS_EXPORT
Resolves system dependencies for this project.
Definition: MLToolsSystem.h:26
This class encapsulates basic medical image properties:
Base class for an image processing module of the ML.
Definition: mlModule.h:156
Class which represents an image, which manages properties of an image and image data which is located...
Definition: mlPagedImage.h:70
Class which collects some useful functions needed in many places of operator programming.
Definition: mlTools.h:48
static MLErrorCode scanInput(Module *op, MLint inIdx, MLdouble &stdMin, MLdouble &stdMax, MLdouble &realMin, MLdouble &realMax)
Analyzes the image at input inIdx of module op for min/max values with the scanImage function.
static std::string _separateBuffer(const std::string &str, const std::string &colSep, const std::string &lineSep)
Return a string from str separated with column and line separator strings colSep and lineSep replacin...
static MLErrorCode scanImageWithGetTile(PagedImage &img, MLdouble &stdMin, MLdouble &stdMax, MLdouble &realMin, MLdouble &realMax)
Helper method that scans image using getTile().
static void separate(const std::string &stri, char sep, MLuint &num, std::string *&seps)
Get a separation of the string into substrings which are separated by the character sep.
static std::string getTypeInformation(MLDataType dt)
Return a string representing an information table about the data type dt.
static MLErrorCode scanImageWithProcessAllPages(PagedImage &img, MLdouble &stdMin, MLdouble &stdMax, MLdouble &realMin, MLdouble &realMax, MLRequestProgressCB *progressCallback=nullptr, void *progressCallbackUserData=nullptr)
Helper method that is used by scanInput and that uses processAllPages.
static MLdouble calculateImageCheckSum(MLint outNum, Module &baseOp)
Compute a checksum of the output outNum of Module baseOp.
static bool getVoxelValueRescale(MedicalImageProperties *img, double &slope, double &intercept, bool inverse=false)
Return voxel value rescale parameters for img in slope and intercept, describing the transformation f...
static bool clearLogFile(const std::string &path, bool remove=false)
If remove is false then the contents of log file specified by path are cleared, i....
static MLErrorCode scanOutput(Module *op, MLint outIdx, MLdouble &stdMin, MLdouble &stdMax, MLdouble &realMin, MLdouble &realMax)
Analyzes the image at output outIdx of module op for min/max values with the scanImage function.
static void replace(std::string &s, char sch, char rep)
Replaces all occurrences of character sch in s by rep.
static std::string toHex(MLint64 val, size_t minNumDigitSpace=1, bool useCapitals=true, bool isSigned=false)
Returns hexadecimal string from val.
static bool appendToLog(const std::string &path, const std::string &logString)
Append message logString to the log file specified by path path.
static MLErrorCode scanImage(PagedImage &img, MLdouble &stdMin, MLdouble &stdMax, MLdouble &realMin, MLdouble &realMax, MLRequestProgressCB *progressCallback=nullptr, void *progressCallbackUserData=nullptr)
Analyzes the given image for min/max values.
static std::string toString(MLint64 val, size_t minFieldSize=1, int align=1, size_t preSpaces=0, size_t postSpaces=0, int hex=0, size_t minNumDigitSpace=8, bool useCapitals=true)
Returns val converted to a std::string.
static void getLoopOrder(int dim, const SubImageBox &calcBox, std::vector< int > &loopOrder, std::vector< int > &loopStart, std::vector< int > &loopEnd)
Return a suitable loop order, i.e., the order in which the six dimensions x,y,z,c,...
MLint32 MLDataType
MLDataType.
Definition: mlTypeDefs.h:684
MLint32 MLErrorCode
Type of an ML Error code.
Definition: mlTypeDefs.h:818
void MLRequestProgressCB(void *usrData, double progress)
Definition: mlTypeDefs.h:1318
MLuint64 MLuint
An unsigned ML integer type with at least 64 bits used for index calculations on very large images ev...
Definition: mlTypeDefs.h:594
double MLdouble
Definition: mlTypeDefs.h:223
INT64 MLint64
Include 64 bit integer support for Windows or Unix.
Definition: mlTypeDefs.h:500
MLint64 MLint
A signed ML integer type with at least 64 bits used for index calculations on very large images even ...
Definition: mlTypeDefs.h:578