genre | Region |
authors | Jan-Martin Kuhnigk, Philipp Dressel |
package | MeVisLab/Standard |
dll | MLSegmentation |
definition | MLSegmentation.def |
see also | RegionGrowingMacro, Draw3D |
keywords | segmentation, fill, 3D, 4D, thresholding |
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.
Starting with all seed points, the module segments all voxels that are
- 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.
- See Internal Accuracy on details about the module's threshold accuracy and memory requirements.
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. In Auto-Update mode, the module updates on any input image or parameter change. In Auto-Clear, the module is auto-cleared when the input image changes.
Values:
Title | Name | Description |
---|---|---|
Auto-Clear | AutoClear | Auto-Clear on input image change. |
Auto-Update | AutoUpdate | Auto-Update on any input image or Parameter 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. See Size of Gray Value Interval (%) documentation on how this works.
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 | Description |
---|---|---|
2D-4-Neighborhood (x,y) | BNBH_2D_4_XY | Grows in 2D to four neighbors, i.e. from each point (X,Y,Z,T) to (X-1,Y,Z,T), (X+1,Y,Z,T) (X,Y-1,Z,T) and (X,Y+1,Z,T). |
3D-6-Neighborhood (x,y,z) | BNBH_3D_6_XYZ | Uses a 3D-6 Neighborhood, extending the 2D-4 neighborhood by looking at the direct neighbors in the Z-dimension (i.e. to (X,Y,Z-1,T), (X,Y,Z+1,T)). |
4D-8-Neighborhood (x,y,z,t) | BNBH_4D_8_XYZT | Uses a 4D-8 Neighborhood, extending the 3D-6 neighborhood by looking at the direct neighbors in the T-dimension (i.e. to (X,Y,Z,T-1), (X,Y,Z,T+1)). |
Defines the extended neighborhood type. The extended neighborhood allow:
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 |
Defines threshold accuracy but also memory consumption. Using 'Auto' is mostly the best choice.
Internally, the input image data is rescaled to an integer image on which the region growing is performed. This parameter can be used to specify the amount of bits that the module shall use to encode the image data.
This is the policy for the 'Auto' mode: 1. For integer input images, the smallest accuracy is used that is sufficient to capture the input image's min/max range (e.g. [0, 63] -> 6 Bit, [0, 64] -> 14 Bit). 2. For float input image it is not possible to automatically determine the required precision. We therefore use 30 bits for floats with 4-bytes (=32 bit) or less, else we use the maximum precision.
Thus, 'Auto' is usually best, but if you don't need the accuracy and want to save memory (e.g. for floating point images that only contain values of 0 and 1) it might be sometimes desirable to select a lower accuracy.
Values:
Title | Name |
---|---|
Auto-Detect | Auto |
6 Bit | 6Bit |
14 Bit | 14Bit |
30 Bit | 30Bit |
60 Bit | 60Bit |
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 intensity 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 intensity value difference of the input image (maximum intensity value minus minimum intensity value).
Be aware that: 1. this procedure may lead to an empty segmentation result if multiple seed points with significantly varying intensity values were selected and the specified percentage is too low. 2. the threshold range depends on the seed point positions, the values at these position, and the input image's image range (as detected from the properties, not the actual values!)