11 #ifndef STACKPROCESSANALYSES_HPP
12 #define STACKPROCESSANALYSES_HPP
33 setName(
"Stack/Analyses/Compute Volumes");
34 setDesc(
"Compute the volumes of the labels, i.e. the number of voxels multiplied by the voxel size.");
35 setIcon(QIcon(
":/images/CellFiles3D.png"));
37 addParm(
"Filename",
"Filename",
"output.csv");
42 if(!checkState().store(STORE_NON_EMPTY | STORE_LABEL))
44 Store* input = currentStack()->currentStore();
45 return run(input, parm(
"Filename"));
48 bool run(
const Store* input, QString filename);
58 setName(
"Stack/Analyses/Export Voxel Count");
59 setDesc(
"Count the occurance of different voxel values along the z-axis and export it to a file");
60 setIcon(QIcon(
":/images/MakeHeatMap.png"));
62 addParm(
"Filename",
"Filename",
"");
68 Stack* s1 = currentStack();
72 return run(s1, store1, parm(
"Filename"));
74 bool run(
Stack* s1,
Store* store1, QString filename);
83 setName(
"Stack/Analyses/Export Histogram Circular");
84 setDesc(
"Computes a circular histogram in counter-clockwise direction of the active main store signal values around the given cartesian axis.");
85 setIcon(QIcon(
":/images/StackHistoCirc.png"));
87 addParm(
"Central Axis",
"Central Axis",
"Z", QStringList() <<
"X" <<
"Y" <<
"Z");
88 addParm(
"Bin Number",
"Number of bins for the whole circle",
"360");
89 addParm(
"Voxel Value Threshold (%)",
"Ignore voxels with values lower than this threshold (% from 16bit value). Set to 0 to include all. Ignoring low values can speed this process up significantly",
"1.0");
90 addParm(
"Voxel Distance Min (um)",
"Only consider voxels with a minimum distance to the Bezier larger than this. Set to -1 to include all.",
"-1");
91 addParm(
"Voxel Distance Max (um)",
"Only consider voxels with a maximum distance to the Bezier smaller than this. Set to -1 to include all.",
"-1");
92 addParm(
"Align at Max",
"Align at Max",
"No", QStringList() <<
"Align at Max of Signal Sum" <<
"Align at Signal Max" <<
"No");
93 addParm(
"Weight by Volume",
"Weight signal values by the voxel volume",
"Yes",booleanChoice());
94 addParm(
"Filename",
"Filename",
"");
95 addParm(
"Fill Labels in Other Store",
"Fill the other store with the bin labels of all voxels in range",
"No",booleanChoice());
98 bool initialize(QWidget* parent);
102 Stack* s1 = currentStack();
106 return run(s1, store1, store2, parm(
"Central Axis"), parm(
"Bin Number").toInt(), parm(
"Voxel Value Threshold (%)").toDouble(), parm(
"Voxel Distance Min (um)").toDouble(),
107 parm(
"Voxel Distance Max (um)").toDouble(), parm(
"Align at Max"),
stringToBool(parm(
"Weight by Volume")), parm(
"Filename"),
stringToBool(parm(
"Fill Labels in Other Store")));
109 bool run(
Stack* s1,
Store* store1,
Store* store2, QString centralAxis,
int binNumber,
double thresholdValue,
double minDis,
double maxDis, QString align,
bool weightVol, QString filename,
bool writeStack);
119 setName(
"Stack/Analyses/Export Histogram Bezier");
120 setDesc(
"Export a histogram of voxel (signal) values of the active main store binned according to coordinates along a Bezier line.");
121 setIcon(QIcon(
":/images/StackHistoLine.png"));
123 addParm(
"Bin Size (um)",
"Bin Size (um)",
"10");
124 addParm(
"Voxel Value Threshold (%)",
"Ignore voxels with values lower than this threshold (% from 16bit value). Set to 0 to include all. Ignoring low values can speed this process up significantly",
"1.0");
125 addParm(
"Voxel Distance Min (um)",
"Only consider voxels with a minimum distance to the Bezier larger than this. Set to -1 to include all.",
"-1");
126 addParm(
"Voxel Distance Max (um)",
"Only consider voxels with a maximum distance to the Bezier smaller than this. Set to -1 to include all.",
"-1");
127 addParm(
"Bezier Discretization",
"Bezier Discretization",
"100");
128 addParm(
"Filename",
"Filename",
"");
129 addParm(
"Fill Labels in Other Store",
"Fill the other store with the bin labels of all voxels in range",
"No",booleanChoice());
132 bool initialize(QWidget* parent);
136 Stack* s1 = currentStack();
140 Mesh* m = currentMesh();
141 return run(s1, store1, store2, m, parm(
"Bin Size (um)").toDouble(), parm(
"Voxel Value Threshold (%)").toDouble(), parm(
"Voxel Distance Min (um)").toDouble(),
142 parm(
"Voxel Distance Max (um)").toDouble(), parm(
"Bezier Discretization").toInt(), parm(
"Filename"),
stringToBool(parm(
"Fill Labels in Other Store")));
145 bool run(
Stack* s1,
Store* store1,
Store* store2,
Mesh* m,
double binSize,
double ignoreLow,
double minDis,
double maxDis,
int bezPoints, QString filename,
bool writeStack);
155 setName(
"Stack/Analyses/Border from Segmented Stack");
156 setDesc(
"From a segmented stack in the main stack border voxels are set to max in the work stack.");
157 setIcon(QIcon(
":/images/MakeHeatMap.png"));
159 addParm(
"Width",
"Width",
"1");
160 addParm(
"Ignore X",
"Ignore X",
"No",booleanChoice());
161 addParm(
"Ignore Y",
"Ignore Y",
"No",booleanChoice());
162 addParm(
"Ignore Z",
"Ignore Z",
"Yes",booleanChoice());
167 Stack* s1 = currentStack();
171 bool run(
Stack* s1,
Store* store1,
int width,
bool ignX,
bool ignY,
bool ignZ);