You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: src/Plugins/SimplnxCore/docs/IdentifySampleFilter.md
+2Lines changed: 2 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -17,6 +17,8 @@ If *Fill Holes* is set to *true*:
17
17
18
18
*Note:* if there are in fact "holes" in the sample, then this **Filter** will "close" them (if *Fill Holes* is set to true) by calling all the **Cells** "inside" the sample *good*. If the user wants to reidentify those holes, then reuse the threshold **Filter** with the criteria of *GoodVoxels = 1* and whatever original criteria identified the "holes", as this will limit applying those original criteria to within the sample and not the outer border region.
19
19
20
+
*Additional Note:* Only completely water-tight, internal holes within the sample are addressed when *Fill Holes* is enabled. To fill in a contiguous group of good cells that includes holes located along the outer edge of the sample, try enabling *Process Data Slice-By-Slice*. For each slice of the chosen plane, this will search for the largest contiguous set of *good***Cells**, set all other *good***Cells** to be *bad***Cells**, and (if *Fill Holes* is enabled) fill all water-tight holes PER SLICE instead of the whole 3D volume at once. This option can be used to allow non water-tight holes to be filled without also accidentally filling the surrounding overscan area.
21
+
20
22
| Name | Description |
21
23
|------|-------------|
22
24
|| Good dataset to use this filter |
// In this loop over the data we are finding the biggest contiguous set of GoodVoxels and calling that the 'sample' All GoodVoxels that do not touch the 'sample'
56
54
// are flipped to be called 'bad' voxels or 'not sample'
params.insert(std::make_unique<BoolParameter>(k_FillHoles_Key, "Fill Holes in Largest Feature", "Whether to fill holes within sample after it is identified", true));
452
+
params.insertLinkableParameter(std::make_unique<BoolParameter>(k_SliceBySlice_Key, "Process Data Slice-By-Slice",
453
+
"Whether to identify the largest sample (and optionally fill holes) slice-by-slice. This option is useful if you have a sample that "
454
+
"is not water-tight and the holes open up to the overscan section, or if you have holes that sit on a boundary. The original "
455
+
"algorithm will not fill holes that have these characteristics, only holes that are completely enclosed by the sample and "
456
+
"water-tight. If you have holes that are not water-tight or sit on a boundary, choose this option and then pick the plane that will "
457
+
"allow the holes to be water-tight on each slice of that plane.",
"Set the plane that the data will be processed slice-by-slice. For example, if you pick the XY plane, the data will be processed in the Z direction.", 0,
462
+
ChoicesParameter::Choices{"XY", "XZ", "YZ"}));
463
+
260
464
params.insert(std::make_unique<GeometrySelectionParameter>(k_SelectedImageGeometryPath_Key, "Image Geometry", "DataPath to the target ImageGeom", DataPath(),
params.insert(std::make_unique<ArraySelectionParameter>(k_MaskArrayPath_Key, "Mask Array", "DataPath to the mask array defining what is sample and what is not", DataPath(),
0 commit comments