| genre | Region |
| status | stable |
| authors | Jan-Martin Kuhnigk, Philipp Dressel |
| package | MeVisLab/Standard |
| dll | MLSegmentation |
| definition | MLSegmentation.def |
| see also | RegionGrowingMacro, Draw3D |
| keywords | segmentation, fill, region, growing, grow, 3D, 4D, thresholding, jmk |
The module RegionGrowing implements fast a threshold interval based 1D/2D/3D/4D region growing algorithm.
Specify a threshold interval and at least one seed point before starting.
- If you are using the SoView2DMarkerEditor to generate the markers for the operation and plan to activate auto-update, you better activate "React on button release event only" in the SoView2DMarkerEditor-Panel in order to avoid that those release events get lost while the operator is checking the abort button.
- Although only 2D, 3D and 4D growing is supported, you can technically perform a 2D, 3D or 4D region growing on 5D-6D datasets. The operator uses the c- and u-coordinate of the volume it finds the markers in.
- Be aware that the time used just to load the necessary input data can represent up to 90% of the total operation time. If you use input data with larger memory needs, you may notice that the segmentation of the same structure is significantly faster if it has a small extension within the z-dimension. This is due to the "per slice" nature of the algorithm. Because we load the whole slice into memory (which takes a little time) in the very moment we request a single pixel of it, the number of slices the structure intersects with is a significant factor of the total processing time.
Note that there is a macro wrapping this module: RegionGrowingMacro.
Shows information about the status of the module.
If pressed, the module invalidates its output images.
Defines the auto-update behavior of this module.
Values:
| Title | Name | Deprecated Name | Description |
|---|---|---|---|
| Off | Off | FALSE | The module does nothing on input or field changes. |
| Auto Clear | AutoClear | The module invalidates its output image on any field or input change. | |
| Auto Update | AutoUpdate | The module computes anew on any field or input image change. |
Sets the lower threshold value.
Sets the upper threshold value.
If checked, an automatically generated threshold interval will be used instead of the manually set one.
Defines the neighborhood relation that will be used during the growth process.
2D-neighborhood relations can also be used within 3D- and 4D-data, 3D-neighborhood relations can also be used in 4D-data.
By default, the growing will be performed in the x-y-plane, in other words, on a single slice.
If multiple seed points in multiple slices are selected, the growing will be done on each of those slices (in that case be aware that the thresholds are global). However, it is possible to grow within the x-z or y-z-plane.
Values:
| Title | Name |
|---|---|
| 2D-4-Neighborhood (x,y) | BNBH_2D_4_XY |
| 3D-6-Neighborhood (x,y,z) | BNBH_3D_6_XYZ |
| 4D-8-Neighborhood (x,y,z,t) | BNBH_4D_8_XYZT |
Defines the extended neighborhood type.
Values:
| Title | Name |
|---|---|
| 1D-2-Neighborhood (x) | ENBH_1D_2_X |
| 1D-2-Neighborhood (y) | ENBH_1D_2_Y |
| 1D-2-Neighborhood (z) | ENBH_1D_2_Z |
| 2D-4-Neighborhood (x,y) | ENBH_2D_4_XY |
| 2D-4-Neighborhood (x,z) | ENBH_2D_4_XZ |
| 2D-4-Neighborhood (y,z) | ENBH_2D_4_YZ |
| 2D-8-Neighborhood (x,y) | ENBH_2D_8_XY |
| 2D-8-Neighborhood (x,z) | ENBH_2D_8_XZ |
| 2D-8-Neighborhood (y,z) | ENBH_2D_8_YZ |
| 3D-5-Neighborhood (x-,y,z) | ENBH_3D_5_XmYZ |
| 3D-5-Neighborhood (x+,y,z) | ENBH_3D_5_XpYZ |
| 3D-5-Neighborhood (x,y-,z) | ENBH_3D_5_XYmZ |
| 3D-5-Neighborhood (x,y+,z) | ENBH_3D_5_XYpZ |
| 3D-5-Neighborhood (x,y,z-) | ENBH_3D_5_XYZm |
| 3D-5-Neighborhood (x,y,z+) | ENBH_3D_5_XYZp |
| 3D-6-Neighborhood (x,y,z) | ENBH_3D_6_XYZ |
| 3D-18-Neighborhood (x,y,z) | ENBH_3D_18_XYZ |
| 3D-26-Neighborhood (x,y,z) | ENBH_3D_26_XYZ |
| 4D-8-Neighborhood (x,y,z,t) | ENBH_4D_8_XYZT |
| 4D-56-Neighborhood (x,y,z,t) | ENBH_4D_56_XYZT |
| 4D-80-Neighborhood (x,y,z,t) | ENBH_4D_80_XYZT |
If checked, an additional seed point can be specified on the module's GUI.
Sets the position of the additional seed point.
Sets the type of the additional seed point.
Defines how the position of the additional seed point is interpreted.
Values:
| Title | Name |
|---|---|
| Voxel Coordinates | VoxelCoordinates |
| World Coordinates | WorldCoordinates |
Defines the incremental update mode.
Values:
| Title | Name | Description |
|---|---|---|
| Disable | Disable | Do not allow incremental updates, compute from scratch every time. Should only be used when Smart updating turns out to be significantly slower. This might occur for some objects with a large surface-to-inner-voxels ratio. It is also the safest way to get consistent results, since the Smart mode requires correctly typed marker events to ensure consistency. |
| Smart | Smart | The module tries to detect whether a parameter change allows an incremental update. The following situations provide consistent results using an incremental update:
All other (computation) parameter changes require complete recomputation. |
| Force | Force | Force incremental updates every time, even if it is unsure whether the result will be consistent with the parameter. This mode can be useful if multiple objects corresponding to different threshold intervals in the same source images are to be segmented. Note that this might not work as expected when those objects are directly connected (with respect to the specified neighborhood relation). |
If checked, the neighborhood relation is overwritten to be a non-standard one (might be slower!).
If checked, the module computes 2D and 3D boundary overlaps over all slices in all time points (2D) or all time points (3D).
Shows the maximum 2D boundary overlap over all volumes and time points.
Shows the maximum 3D boundary overlap over all time points.
Shows the average 2D boundary overlap over all volumes and time points.
Shows the average 3D boundary overlap over all time points.
Defines the interpretation of the specified threshold values.
Values:
| Title | Name |
|---|---|
| as gray value | UnitTypeGrayValue |
| in Hounsfield units | UnitTypeHounsfieldUnits |
If checked, the unit type (value interpretation) is set automatically.
Shows the number of segmented voxels.
Shows the volume of segmented voxels in ml.
Shows the time needed to compute the current result.
Sets the integer value indicating the marker type that will be accepted as segmentation seeds.
This might be useful if you want to specify markers for different operations with a single marker list editor.
If -1 is used, all markers will be accepted.
Shows whether the output is up-to-date.
Sets the positive grey value of the segmentation result.
If -1 is specified, the maximum grey value of the input image will be used.
Sets the negative grey value of the segmentation result.
If -1 is specified, the minimum grey value of the input image will be used.
If checked, the segmentation result will be inverted.
That means that the object areas will be filled with the fill value for the non-segmented area and its environment will be filled with the fill value for the segmented area.
Furthermore, everything except the object will be put out on the second output (the object itself will be filled with the negative fill value).
If checked, only the outer object boundaries are shown.
Sets a maximum volume in ml for the collected voxels.
If checked, the region growing algorithm is stopped if the so far collected voxel volume exceeds the ml value set in Stop If Volume Exceeds (ml).
Sets a value for the automatic threshold generation.
The threshold generation is very simple and works as follows: The mean grey value of all specified seed points will be computed. The upper/lower threshold is given as this mean value plus/minus the percentage specified in this field, multiplied with the maximum grey value difference of the input image (maximum grey value minus minimum grey value).
Be aware that this procedure may lead to an empty segmentation result if multiple seed points with significantly varying grey values were selected and the specified percentage is too low.