RegionGrow

Synopsis

This module grows a region starting from a seed point. It works on 2D and 3D scalar and vector data. The region is grown by comparing the data values of seed point or the previous point with the point to check. The next point to check is one of the neighbouring points (4/9 points in 2D or 6/24 points in 3D).

Input Ports

Name Type Description

in_data Mesh+Node_Data input field to grow the region.
seed int[] integer array that provides the seed point

Parameters

Name Type Description Name

seed int[] array of integers that provide the seed point Sliders
out_value int data value for the output node data on points where the region is grown Field
out_label string Text label for the output node_data TextField
use_diagonals int toggle that decides if the region is grown using 4/6 or 9/24 neighbouring points Toggle Button
set_null_value int toggle that decides if the output Node_Data has the NULL value set Toggle Button
invert_region int toggle that decides if the regions is 'grown' or 'caved in' Toggle Button
and_precedence int toggle that decides how and combined and or combined groups are combined Toggle Button
combine_vec int[] list of toggle that allow to magnitude vector components Toggle Button
combine_and_or int[] list of toggles that allow to combine different data components Toggle Button (3 state)
delta float[] array of float values that provide the allowed difference between component value and the seed value Sliders
incremental int[] list of toggles that define if the data value is compared to the seed value or to its neighbour Toggle Button

Output Ports

Name Type Description

out Mesh+Node_Data Field that contains the input Mesh+Node_Data whith an addition al Node_Data component for the grown region
obj DataObject directly renderable object of out

Description

The RegionGrow module provides grows a region starting from a given seed point. The module works on the node data of a 2D or 3D Mesh. The node data can contain scalar and vector components of all numerical data types.

A region is grown by comparing the node data values of the seed point with a point to be checked. The point to be checked is stored in a list wich is generated by the algorithm. Starting from the seed point all its neighbours ar added to the list of points to be checked. When a point is used it is removed from the list. If the point belongs to the region it is marked in the new node data component and its neighbouring points are added to the list. The algorithm terminates when the list is empty. The criteria if a point belongs to the region is the difference between the point and the seed-point or, if incremental is selected, the point and its neighbour that added it to the list.

Different node data components can be combined with AND and OR to generate more complex criteria. Vector components can be used as several independent components (ie. the x componenent is used on its own) or in their magnitude as one single component.

Region grown from the Hydrogen data set
Figure 1: Region grown from the Hydrogen data set

Region grown from the Hydrogen data set inverting the output
Figure 2: Region grown from the Hydrogen data set inverting the output

Parameters

Inputs

in_data

Mesh+Node_Date input that provides on which the region is grown. The mesh information is used to define the dimensions for the algorithm and parameters (ie. if the mesh is 2D the seed point will be 2D). The Node_Data can contain multiple be scalar and vector components of all data types.

seed

This integer array is an optional input which is connected to the seed parameter. This allows a simple usage if the seed is provided by another AVS/Express Module.

Parameters

seed

This integer array defines the starting point (seed) for the region growing algorithm. The dimension of this array is defined by the dimension of the input mesh.

out_value

This integer defines the output value which is set if a point belongs (does not belong if invert_region is set) to the region. Values which are not set to out_value are set to 0 (if out_value is chosen to be 0 the other values will be set to -1).

out_label

This string is the node data label which is set for the additional node_data entry. The default label is Region_(out_value).

use_diagonals

If use_diagonals is set the algorithm is using 9 neighbouring pixel in 2D instead of 4, or 24 neighbouring voxels in 3D instead of 6.

set_null_value

This Toggle Button set the value wich is given to not grown elements (0 or -1) as the NULL value of the Node_Data.

invert_region

This Toggle Button decides if the regions is 'grown' or 'caved in'. If this toggle is set values that are in the region are set to 0 (or -1), all other values are set to out_value.

and_precedence

This toggle decides how AND combined and OR combined groups are combined. All data elements which have AND selected are combined logically by AND to one group. All data elements which have OR selected are combined logically by OR. If and_precedence is selected the two groups are combined by AND, otherwise they are combined by or.

combine_vec

This array contains the information about all vector components in the Node_Data. The vector components can either be used in there single subcomponents for the region growing or using the magnitude of the vector.

combine_and_or

This array contains the information if an element belongs to the AND group, the OR group or neither of the two groups (in the last case the node data value is ignored during the region growing).

delta

This array contains the float values that describe allowed difference between the seed point (or neighbouring point, if incremental is selected) and the point to be checked. If the difference between the two data values is less than delta the point is part of the region, otherwise it is not.

incremental

This array contains decides if the difference is taken between the seed point and the point to be checked, or the two neighbouring points. If this toggle is set the difference is taken between the two neighbouring points.

Outputs

out

out contains the newly generated Mesh+Node_Data. The node data contains all the node_data components of in_data plus an additional component that contains the grown region.

obj

obj contains a directly renderable object produced from the out output.

Example

The RegionGrowEg example application shows the usage of the RegionGrow on the bluntfin dataset demonstrating the usage of vector components.

The RegionGrowEg2 example application shows the usage of the RegionGrow on the hydrogen dataset.

Files

iac_proj/region/region.v

Creates the IAC_PROJ.Region library.

iac_proj/region/reg_mods.v

Creates the RegionGrowMods library containing the low-level module RegionGrowCore and the parameter group RegionGrowParams.

iac_proj/region/reg_macs.v

Creates the RegionGrowMacs library containing the high-level macros RegionGrowFunc, RegionGrowUI and RegionGrow. It also contains the support macros copy_on_change_array, VecCompPanel, OutputPanel, SeedPanel, CombineItem, CombinePanel, DeltaPanel, region_magnitude, RegionMagnitudeFunc, AddNodeData which are used by the high level macros.

iac_proj/region/reg_apps.v

Creates the RegionGrowApps library containing the examle applications RegionGrowEg and RegionGrowEg2.

Authors

Tobias Schiebeck
Manchester Visualization Centre

Brian Selle, Leon Thrane
Advanced Visual Systems, Inc.

Tim Naylor 
Manchester Visualization Centre

Contact

International AVS Centre
Manchester Visualization Centre
Kilburn Building
University of Manchester
Oxford Road
Manchester
United Kingdom
M13 9PL