MorphoGraphX
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
StackProcessMorphology.hpp
1 #ifndef STACKPROCESSMORPHOLOGY_HPP
2 #define STACKPROCESSMORPHOLOGY_HPP
3 
4 #include <Process.hpp>
5 
6 namespace mgx {
7 namespace process {
10 
15 struct mgxBase_EXPORT EdgeDetectProcess : public StackProcess {
16 public:
17  EdgeDetectProcess(const StackProcess& process)
18  : Process(process)
19  , StackProcess(process)
20  {
21  }
22 
23  bool operator()(const QStringList& parms)
24  {
25  if(!checkState().store(STORE_NON_EMPTY | STORE_NON_LABEL))
26  return false;
27  Stack* stack = currentStack();
28  Store* store = stack->currentStore();
29  Store* work = stack->work();
30  bool res = (*this)(store, work, parms[0].toFloat(), parms[1].toFloat(), parms[2].toFloat(), parms[3].toUInt());
31  if(res) {
32  store->hide();
33  work->show();
34  }
35  return res;
36  }
37 
38  bool operator()(Store* input, Store* output, float threshold, float multiplier, float factor, uint fillValue);
39 
40  QString folder() const {
41  return "Morphology";
42  }
43  QString name() const {
44  return "Edge Detect";
45  }
47  {
48  return "Do a multipass edge detection in Z direction.\n"
49  "Stack is turned into a mask (0 or fill value)";
50  }
52  {
53  return QStringList() << "Threshold"
54  << "Multiplier"
55  << "Adapt Factor"
56  << "Fill Value";
57  }
59  {
60  return QStringList() << "Values of signal that should not belong to surface."
61  << "Multiplicative factor for the threshold."
62  << "Adaptative factor for threshold."
63  << "Value to fill the mask with.";
64  }
66  {
67  return QStringList() << "10000.0"
68  << "2.0"
69  << "0.3"
70  << "30000";
71  }
72  QIcon icon() const {
73  return QIcon(":/images/EdgeDetect.png");
74  }
75 };
76 
88 class mgxBase_EXPORT DilateStack : public StackProcess {
89 public:
90  DilateStack(const StackProcess& process)
91  : Process(process)
92  , StackProcess(process)
93  {
94  }
95 
96  bool operator()(const QStringList& parms)
97  {
98  if(!checkState().store(STORE_NON_EMPTY))
99  return false;
100  Stack* s = currentStack();
101  Store* input = s->currentStore();
102  Store* output = s->work();
103  bool res = (*this)(s, input, output, parms[0].toUInt(), parms[1].toUInt(), parms[2].toUInt(),
104  stringToBool(parms[3]));
105  if(res) {
106  input->hide();
107  output->show();
108  }
109  return res;
110  }
111  bool operator()(Stack* stack, const Store* input, Store* output, uint xradius, uint yradius, uint zradius,
112  bool auto_resize = true);
113 
114  QString folder() const {
115  return "Morphology";
116  }
117  QString name() const {
118  return "Dilate";
119  }
121  return "Morphological dilation (max filter) on stack";
122  }
124  {
125  return QStringList() << "X Radius"
126  << "Y Radius"
127  << "Z Radius"
128  << "Auto-Resize";
129  }
131  {
132  return QStringList() << "X Radius"
133  << "Y Radius"
134  << "Z Radius"
135  << "Auto-Resize";
136  }
138  {
139  return QStringList() << "1"
140  << "1"
141  << "1"
142  << "No";
143  }
145  {
146  ParmChoiceMap map;
147  map[3] = booleanChoice();
148  return map;
149  }
150  QIcon icon() const {
151  return QIcon(":/images/Dilate.png");
152  }
153 };
154 
166 class mgxBase_EXPORT ErodeStack : public StackProcess {
167 public:
168  ErodeStack(const StackProcess& process)
169  : Process(process)
170  , StackProcess(process)
171  {
172  }
173 
174  bool operator()(const QStringList& parms)
175  {
176  if(!checkState().store(STORE_NON_EMPTY))
177  return false;
178  Stack* s = currentStack();
179  Store* input = s->currentStore();
180  Store* output = s->work();
181  bool res = (*this)(s, input, output, parms[0].toUInt(), parms[1].toUInt(), parms[2].toUInt(),
182  stringToBool(parms[3]));
183  if(res) {
184  input->hide();
185  output->show();
186  }
187  return res;
188  }
189  bool operator()(Stack* stack, const Store* input, Store* output, uint xradius, uint yradius, uint zradius,
190  bool auto_resize = true);
191 
192  QString folder() const {
193  return "Morphology";
194  }
195  QString name() const {
196  return "Erode";
197  }
199  return "Morphological erosion on stack";
200  }
202  {
203  return QStringList() << "X Radius"
204  << "Y Radius"
205  << "Z Radius"
206  << "Auto-Resize";
207  }
209  {
210  return QStringList() << "X Radius"
211  << "Y Radius"
212  << "Z Radius"
213  << "Auto-Resize";
214  }
216  {
217  return QStringList() << "1"
218  << "1"
219  << "1"
220  << "No";
221  }
223  {
224  ParmChoiceMap map;
225  map[3] = booleanChoice();
226  return map;
227  }
228  QIcon icon() const {
229  return QIcon(":/images/Erode.png");
230  }
231 };
232 
242 class mgxBase_EXPORT ClosingStack : public StackProcess {
243 public:
244  ClosingStack(const StackProcess& process)
245  : Process(process)
246  , StackProcess(process)
247  {
248  }
249 
250  bool operator()(const QStringList& parms)
251  {
252  if(!checkState().store(STORE_NON_EMPTY))
253  return false;
254  Stack* s = currentStack();
255  Store* input = s->currentStore();
256  Store* output = s->work();
257  bool res = (*this)(s, input, output, parms[0].toUInt(), parms[1].toUInt(), parms[2].toUInt());
258  if(res) {
259  input->hide();
260  output->show();
261  }
262  return res;
263  }
264  bool operator()(Stack* stack, const Store* input, Store* output, uint xradius, uint yradius, uint zradius);
265 
266  QString folder() const {
267  return "Morphology";
268  }
269  QString name() const {
270  return "Closing";
271  }
273  return "Morphological closure (i.e. dilatation followed erosion) on stack";
274  }
276  {
277  return QStringList() << "X Radius"
278  << "Y Radius"
279  << "Z Radius";
280  }
282  {
283  return QStringList() << "X Radius"
284  << "Y Radius"
285  << "Z Radius";
286  }
288  {
289  return QStringList() << "1"
290  << "1"
291  << "1";
292  }
293  QIcon icon() const {
294  return QIcon(":/images/Closing.png");
295  }
296 };
297 
308 class mgxBase_EXPORT OpeningStack : public StackProcess {
309 public:
310  OpeningStack(const StackProcess& process)
311  : Process(process)
312  , StackProcess(process)
313  {
314  }
315 
316  bool operator()(const QStringList& parms)
317  {
318  if(!checkState().store(STORE_NON_EMPTY))
319  return false;
320  Stack* s = currentStack();
321  Store* input = s->currentStore();
322  Store* output = s->work();
323  bool res = (*this)(s, input, output, parms[0].toUInt(), parms[1].toUInt(), parms[2].toUInt());
324  if(res) {
325  input->hide();
326  output->show();
327  }
328  return res;
329  }
330  bool operator()(Stack* stack, const Store* input, Store* output, uint xradius, uint yradius, uint zradius);
331 
332  QString folder() const {
333  return "Morphology";
334  }
335  QString name() const {
336  return "Opening";
337  }
339  return "Morphological opening (i.e. erosion followed dilatation) on stack";
340  }
342  {
343  return QStringList() << "X Radius"
344  << "Y Radius"
345  << "Z Radius";
346  }
348  {
349  return QStringList() << "X Radius"
350  << "Y Radius"
351  << "Z Radius";
352  }
354  {
355  return QStringList() << "5"
356  << "5"
357  << "5";
358  }
359  QIcon icon() const {
360  return QIcon(":/images/Opening.png");
361  }
362 };
363 
364 class mgxBase_EXPORT FillHolesProcess : public StackProcess {
365 public:
366  FillHolesProcess(const StackProcess& process)
367  : Process(process)
368  , StackProcess(process)
369  {
370  }
371 
372  bool operator()(const QStringList& parms)
373  {
374  if(!checkState().store(STORE_NON_EMPTY | STORE_NON_LABEL))
375  return false;
376  Stack* s = currentStack();
377  Store* input = s->currentStore();
378  Store* output = s->work();
379  bool res = (*this)(input, output, parms[0].toUInt(), parms[1].toUInt(), parms[2].toUInt(), parms[3].toUInt());
380  if(res) {
381  input->hide();
382  output->show();
383  }
384  return res;
385  }
386  bool operator()(const Store* input, Store* output, uint xradius, uint yradius, uint threshold, uint fillValue);
387 
388  QString folder() const {
389  return "Morphology";
390  }
391  QString name() const {
392  return "Fill Holes";
393  }
395  {
396  return "Fill holes in stack.\n"
397  "Use after Edge Detect.";
398  }
400  {
401  return QStringList() << "X Radius"
402  << "Y Radius"
403  << "Threshold"
404  << "Fill Value";
405  }
407  {
408  return QStringList() << "X Radius of hole"
409  << "Y Radius of hole"
410  << "Minimal signal value to fill the hole."
411  << "Filling value. Usually same as Edge Detect.";
412  }
414  {
415  return QStringList() << "10"
416  << "10"
417  << "10000"
418  << "30000";
419  }
420  QIcon icon() const {
421  return QIcon(":/images/FillHoles.png");
422  }
423 };
424 
434 class mgxBase_EXPORT OpenStackLabel : public StackProcess {
435 public:
436  OpenStackLabel(const StackProcess& process)
437  : Process(process)
438  , StackProcess(process)
439  {
440  }
441 
442  bool operator()(const QStringList& parms)
443  {
444  if(!checkState().store(STORE_NON_EMPTY | STORE_LABEL))
445  return false;
446  Stack* s = currentStack();
447  Store* input = s->currentStore();
448  Store* output = s->work();
449  bool res = (*this)(s, input, output, parms[0].toUInt(), parms[1].toUInt(), parms[2].toUInt());
450  if(res) {
451  input->hide();
452  output->show();
453  }
454  return res;
455  }
456  bool operator()(Stack* stack, const Store* input, Store* output, uint xradius, uint yradius, uint zradius);
457 
458  QString folder() const {
459  return "Morphology";
460  }
461  QString name() const {
462  return "Open by label";
463  }
465  return "Morphological opening on a labeled stack";
466  }
468  {
469  return QStringList() << "X Radius"
470  << "Y Radius"
471  << "Z Radius";
472  }
474  {
475  return QStringList() << "X Radius"
476  << "Y Radius"
477  << "Z Radius";
478  }
480  {
481  return QStringList() << "1"
482  << "1"
483  << "1";
484  }
485  QIcon icon() const {
486  return QIcon(":/images/Opening.png");
487  }
488 };
489 
501 class mgxBase_EXPORT CloseStackLabel : public StackProcess {
502 public:
503  CloseStackLabel(const StackProcess& process)
504  : Process(process)
505  , StackProcess(process)
506  {
507  }
508 
509  bool operator()(const QStringList& parms)
510  {
511  if(!checkState().store(STORE_NON_EMPTY | STORE_LABEL))
512  return false;
513  Stack* s = currentStack();
514  Store* input = s->currentStore();
515  Store* output = s->work();
516  bool res = (*this)(s, input, output, parms[0].toUInt(), parms[1].toUInt(), parms[2].toUInt());
517  if(res) {
518  input->hide();
519  output->show();
520  }
521  return res;
522  }
523  bool operator()(Stack* stack, const Store* input, Store* output, uint xradius, uint yradius, uint zradius);
524 
525  QString folder() const {
526  return "Morphology";
527  }
528  QString name() const {
529  return "Close by label";
530  }
532  return "Morphological closure on a labeled stack";
533  }
535  {
536  return QStringList() << "X Radius"
537  << "Y Radius"
538  << "Z Radius";
539  }
541  {
542  return QStringList() << "X Radius"
543  << "Y Radius"
544  << "Z Radius";
545  }
547  {
548  return QStringList() << "1"
549  << "1"
550  << "1";
551  }
552  QIcon icon() const {
553  return QIcon(":/images/Closing.png");
554  }
555 };
556 
573 class mgxBase_EXPORT ApplyMaskToStack : public StackProcess {
574 public:
575  ApplyMaskToStack(const StackProcess& process)
576  : Process(process)
577  , StackProcess(process)
578  {
579  }
580 
581  bool operator()(const QStringList& parms)
582  {
583  if(!checkState().store(STORE_NON_EMPTY))
584  return false;
585  Stack* stack = currentStack();
586  Store* input = stack->main();
587  Store* output = stack->work();
588  bool res = (*this)(stack, input, output, parms[0], parms[1].toUInt());
589  if(res) {
590  input->hide();
591  output->show();
592  }
593  return res;
594  }
595  bool operator()(Stack* stack, const Store* input, Store* output, const QString& mode, uint threshold);
596 
597  QString folder() const {
598  return "Morphology";
599  }
600  QString name() const {
601  return "Apply Mask to Stack";
602  }
604  return "Apply the work mask to the main replacing work";
605  }
607  {
608  return QStringList() << "Mode"
609  << "Threshold";
610  }
612  {
613  return QStringList() << "Mode"
614  << "Threshold";
615  }
617  {
618  return QStringList() << "Normal"
619  << "0";
620  }
622  {
623  ParmChoiceMap map;
624  map[0] = QStringList() << "Normal"
625  << "Invert"
626  << "Combine";
627  return map;
628  }
629  QIcon icon() const {
630  return QIcon(":/images/Mask.png");
631  }
632 };
633 
645 class mgxBase_EXPORT ApplyMaskLabels : public StackProcess {
646 public:
647  ApplyMaskLabels(const StackProcess& process)
648  : Process(process)
649  , StackProcess(process)
650  {
651  }
652 
653  bool operator()(const QStringList& parms)
654  {
655  if(!checkState().store(STORE_NON_EMPTY))
656  return false;
657  Stack* stack = currentStack();
658  Store* input = stack->main();
659  Store* output = stack->work();
660  bool res = (*this)(stack, input, output, parms[0].toUInt(), stringToBool(parms[1]));
661  if(res) {
662  input->hide();
663  output->show();
664  output->setLabels(true);
665  }
666  return res;
667  }
668  bool operator()(Stack* stack, const Store* input, Store* output, bool invert, uint threshold);
669 
670  QString folder() const {
671  return "Morphology";
672  }
673  QString name() const {
674  return "Apply Mask to Labels";
675  }
677  return "Apply mask in work stack to labels in main stack, replacing work";
678  }
680  {
681  return QStringList() << "Invert"
682  << "Threshold";
683  }
685  {
686  return QStringList() << "Invert"
687  << "Threshold";
688  }
690  {
691  return QStringList() << "No"
692  << "1";
693  }
695  {
696  ParmChoiceMap map;
697  map[0] = booleanChoice();
698  return map;
699  }
700  QIcon icon() const {
701  return QIcon(":/images/MaskLabels.png");
702  }
703 };
705 } // namespace process
706 } // namespace mgx
707 
708 #endif
ParmChoiceMap parmChoice() const
Purely for GUI purposes, provides for some of the parms parameter a choice.
Definition: StackProcessMorphology.hpp:222
QStringList parmDefaults() const
List of default parms.
Definition: StackProcessMorphology.hpp:413
QString folder() const
Folder in which to place the process.
Definition: StackProcessMorphology.hpp:114
QString folder() const
Folder in which to place the process.
Definition: StackProcessMorphology.hpp:40
QStringList parmDefaults() const
List of default parms.
Definition: StackProcessMorphology.hpp:479
QIcon icon() const
Icon to use to represent the process in the GUI.
Definition: StackProcessMorphology.hpp:150
Close the gray-level stack using a cubic kernel.
Definition: StackProcessMorphology.hpp:242
QIcon icon() const
Icon to use to represent the process in the GUI.
Definition: StackProcessMorphology.hpp:420
QString folder() const
Folder in which to place the process.
Definition: StackProcessMorphology.hpp:332
ParmChoiceMap parmChoice() const
Purely for GUI purposes, provides for some of the parms parameter a choice.
Definition: StackProcessMorphology.hpp:621
QString description() const
Returns a description of the process for the GUI.
Definition: StackProcessMorphology.hpp:338
QStringList parmNames() const
List of named parameters.
Definition: StackProcessMorphology.hpp:275
QString name() const
Returns the name of the process.
Definition: StackProcessMorphology.hpp:117
QString folder() const
Folder in which to place the process.
Definition: StackProcessMorphology.hpp:192
QStringList parmNames() const
List of named parameters.
Definition: StackProcessMorphology.hpp:467
ParmChoiceMap parmChoice() const
Purely for GUI purposes, provides for some of the parms parameter a choice.
Definition: StackProcessMorphology.hpp:694
QString name() const
Returns the name of the process.
Definition: StackProcessMorphology.hpp:528
QStringList parmDescs() const
List of parameters descriptions.
Definition: StackProcessMorphology.hpp:684
QIcon icon() const
Icon to use to represent the process in the GUI.
Definition: StackProcessMorphology.hpp:700
bool operator()(const QStringList &parms)
Implementation of the process with generic arguments.
Definition: StackProcessMorphology.hpp:581
QIcon icon() const
Icon to use to represent the process in the GUI.
Definition: StackProcessMorphology.hpp:485
const Store * currentStore() const
Returns the current store.
Definition: Stack.hpp:112
Open the gray-level stack using a cubic kernel.
Definition: StackProcessMorphology.hpp:308
QStringList parmDefaults() const
List of default parms.
Definition: StackProcessMorphology.hpp:616
QStringList parmDescs() const
List of parameters descriptions.
Definition: StackProcessMorphology.hpp:347
QStringList parmDescs() const
List of parameters descriptions.
Definition: StackProcessMorphology.hpp:473
QStringList parmNames() const
List of named parameters.
Definition: StackProcessMorphology.hpp:341
QString name() const
Returns the name of the process.
Definition: StackProcessMorphology.hpp:673
QStringList parmDescs() const
List of parameters descriptions.
Definition: StackProcessMorphology.hpp:611
QIcon icon() const
Icon to use to represent the process in the GUI.
Definition: StackProcessMorphology.hpp:552
Definition: StackProcessMorphology.hpp:364
QString name() const
Returns the name of the process.
Definition: StackProcessMorphology.hpp:195
QStringList parmNames() const
List of named parameters.
Definition: StackProcessMorphology.hpp:679
QString description() const
Returns a description of the process for the GUI.
Definition: StackProcessMorphology.hpp:120
bool operator()(const QStringList &parms)
Implementation of the process with generic arguments.
Definition: StackProcessMorphology.hpp:509
QIcon icon() const
Icon to use to represent the process in the GUI.
Definition: StackProcessMorphology.hpp:629
QStringList parmDescs() const
List of parameters descriptions.
Definition: StackProcessMorphology.hpp:406
Apply a mask to labels.
Definition: StackProcessMorphology.hpp:645
QStringList parmNames() const
List of named parameters.
Definition: StackProcessMorphology.hpp:51
QString name() const
Returns the name of the process.
Definition: StackProcessMorphology.hpp:461
QStringList parmDefaults() const
List of default parms.
Definition: StackProcessMorphology.hpp:137
The Store class holds the actual 3D data and properties specific to it.
Definition: Store.hpp:25
Erode the gray-level stack using a cubic kernel.
Definition: StackProcessMorphology.hpp:166
QString name() const
Returns the name of the process.
Definition: StackProcessMorphology.hpp:335
QStringList parmDefaults() const
List of default parms.
Definition: StackProcessMorphology.hpp:353
QIcon icon() const
Icon to use to represent the process in the GUI.
Definition: StackProcessMorphology.hpp:359
QString name() const
Returns the name of the process.
Definition: StackProcessMorphology.hpp:600
QIcon icon() const
Icon to use to represent the process in the GUI.
Definition: StackProcessMorphology.hpp:228
QIcon icon() const
Icon to use to represent the process in the GUI.
Definition: StackProcessMorphology.hpp:293
QString folder() const
Folder in which to place the process.
Definition: StackProcessMorphology.hpp:266
ParmChoiceMap parmChoice() const
Purely for GUI purposes, provides for some of the parms parameter a choice.
Definition: StackProcessMorphology.hpp:144
QString description() const
Returns a description of the process for the GUI.
Definition: StackProcessMorphology.hpp:531
QString description() const
Returns a description of the process for the GUI.
Definition: StackProcessMorphology.hpp:46
QString folder() const
Folder in which to place the process.
Definition: StackProcessMorphology.hpp:670
TODO: This class needs documenting!
Definition: StackProcessMorphology.hpp:15
bool operator()(const QStringList &parms)
Implementation of the process with generic arguments.
Definition: StackProcessMorphology.hpp:96
QString description() const
Returns a description of the process for the GUI.
Definition: StackProcessMorphology.hpp:394
QStringList parmDescs() const
List of parameters descriptions.
Definition: StackProcessMorphology.hpp:208
QString name() const
Returns the name of the process.
Definition: StackProcessMorphology.hpp:43
QStringList parmDescs() const
List of parameters descriptions.
Definition: StackProcessMorphology.hpp:540
QStringList parmDescs() const
List of parameters descriptions.
Definition: StackProcessMorphology.hpp:281
QString folder() const
Folder in which to place the process.
Definition: StackProcessMorphology.hpp:458
Close a labeled stack.
Definition: StackProcessMorphology.hpp:501
QStringList parmNames() const
List of named parameters.
Definition: StackProcessMorphology.hpp:123
QString description() const
Returns a description of the process for the GUI.
Definition: StackProcessMorphology.hpp:464
QStringList parmDescs() const
List of parameters descriptions.
Definition: StackProcessMorphology.hpp:58
File containing the definition of a Process.
QStringList parmDefaults() const
List of default parms.
Definition: StackProcessMorphology.hpp:689
QString name() const
Returns the name of the process.
Definition: StackProcessMorphology.hpp:391
QString folder() const
Folder in which to place the process.
Definition: StackProcessMorphology.hpp:597
The Stack class represent the dimensions of the 3D data, and the frames transformations.
Definition: Stack.hpp:25
QStringList parmNames() const
List of named parameters.
Definition: StackProcessMorphology.hpp:399
QStringList parmNames() const
List of named parameters.
Definition: StackProcessMorphology.hpp:201
bool operator()(const QStringList &parms)
Implementation of the process with generic arguments.
Definition: StackProcessMorphology.hpp:653
This is the main process class, the one all process inherit from.
Definition: Process.hpp:248
QString folder() const
Folder in which to place the process.
Definition: StackProcessMorphology.hpp:388
bool operator()(const QStringList &parms)
Implementation of the process with generic arguments.
Definition: StackProcessMorphology.hpp:174
void hide()
Ask the user interface to hide this store.
Definition: Store.hpp:173
QString description() const
Returns a description of the process for the GUI.
Definition: StackProcessMorphology.hpp:198
mgx_EXPORT bool stringToBool(const QString &string)
Helper function converting a string into a boolean.
QStringList parmNames() const
List of named parameters.
Definition: StackProcessMorphology.hpp:606
Dilate the gray-level stack using a cubic kernel.
Definition: StackProcessMorphology.hpp:88
const Store * work() const
Access the work store.
Definition: Stack.hpp:93
QString name() const
Returns the name of the process.
Definition: StackProcessMorphology.hpp:269
QStringList parmDefaults() const
List of default parms.
Definition: StackProcessMorphology.hpp:546
Apply a mask to a grey-level image.
Definition: StackProcessMorphology.hpp:573
QString folder() const
Folder in which to place the process.
Definition: StackProcessMorphology.hpp:525
QStringList parmDefaults() const
List of default parms.
Definition: StackProcessMorphology.hpp:215
const Store * main() const
Access the main store.
Definition: Stack.hpp:74
QString description() const
Returns a description of the process for the GUI.
Definition: StackProcessMorphology.hpp:603
Stack processes have non-mutable access to meshes and mutable access to stacks.
Definition: Process.hpp:819
QIcon icon() const
Icon to use to represent the process in the GUI.
Definition: StackProcessMorphology.hpp:72
bool operator()(const QStringList &parms)
Implementation of the process with generic arguments.
Definition: StackProcessMorphology.hpp:250
QStringList parmDefaults() const
List of default parms.
Definition: StackProcessMorphology.hpp:65
bool operator()(const QStringList &parms)
Implementation of the process with generic arguments.
Definition: StackProcessMorphology.hpp:372
QString description() const
Returns a description of the process for the GUI.
Definition: StackProcessMorphology.hpp:676
QStringList parmNames() const
List of named parameters.
Definition: StackProcessMorphology.hpp:534
QStringList parmDescs() const
List of parameters descriptions.
Definition: StackProcessMorphology.hpp:130
bool operator()(const QStringList &parms)
Implementation of the process with generic arguments.
Definition: StackProcessMorphology.hpp:23
bool operator()(const QStringList &parms)
Implementation of the process with generic arguments.
Definition: StackProcessMorphology.hpp:442
bool operator()(const QStringList &parms)
Implementation of the process with generic arguments.
Definition: StackProcessMorphology.hpp:316
QString description() const
Returns a description of the process for the GUI.
Definition: StackProcessMorphology.hpp:272
QStringList parmDefaults() const
List of default parms.
Definition: StackProcessMorphology.hpp:287
Open a labeled stack.
Definition: StackProcessMorphology.hpp:434