Herror ::interjacent (
    Hobject Region,
    Hobject *RegionInterjacent,
    const HTuple &Mode
)
HRegion HRegion::Interjacent (
    const HTuple &Mode
) const
HRegion HRegionArray::Interjacent (
    const HTuple &Mode
) const

Partition the image plane using given regions.

::interjacent partitions the image plane using the regions given in Region. The result is a region containing the extracted separating lines. The following modes of operation can be used:

  'medialaxis'
      This mode is used for regions that do not touch or overlap.
      The operator will find separating lines between the regions
      which partition the background evenly between the input
      regions.  This corresponds to the following calls:

                   complement('full',Region,Tmp)
                   skeleton(Tmp,Result)

  'border'
      If the input regions do not touch or overlap this mode is
      equivalent to boundary(Region,Result), i.e., it replaces
      each region by its boundary.  If regions touch they are
      aggregated into one region.  The corresponding output region
      then contains the boundary of the aggregated region, as well
      as the one pixel wide separating line between the original
      regions.  This corresponds to the following calls:

                   boundary(Region,Tmp1,'inner')
                   union1(Tmp1,Tmp2)
                   skeleton(Tmp2,Result)

  'mixed'
      In this mode the operator behaves like the mode 'medial_axis'
      for non-overlapping regions.  If regions touch or overlap,
      separating lines between the input regions are generated
      on output again, but this time including the ``touching line''
      between regions, i.e., touching regions are separated by a
      line in the output region.  This corresponds to the following
      calls:

                   erosion1(Region,Mask,Tmp1,1)
                   union1(Tmp1,Tmp2)
                   complement(full,Tmp2,Tmp3)
                   skeleton(Tmp3,Result)

      where Mask denotes the following ``cross mask'':

                          | . * . |
                   Mask = | * * * |
                          | . * . |


Parameters

Region (input_object)
region(-array) -> Hobject: HRegion(Array)
Regions for which the separating lines are to be determined.

RegionInterjacent (output_object)
region -> Hobject * : HRegion
Output region containing the separating lines.

Mode (input_control)
string -> HTuple.char *
Mode of operation.
Default value: 'mixed'
List of values: 'medial_axis', 'border', 'mixed'


Example
read_image(&Image,"wald1_rot") ;
mean(Image,&Mean,31,31) ;
dyn_threshold(Mean,&Seg,20) ;
interjacent(Seg,&Graph,"medial_axis") ;
disp_region(Graph,WindowHandle) ;

Result

::interjacent always returns the value H_MSG_TRUE. The behavior in case of empty input (no regions given) can be set via ::set_system('no_object_result',<Result>), the behavior in case of an empty input region via ::set_system('empty_region_result',<Result>), and the behavior in case of an empty result region via ::set_system('store_empty_region',<true/false>). If necessary, an exception handling is raised.


Possible Predecessors

::threshold, ::connection, ::regiongrowing, ::pouring


Possible Successors

::select_shape, ::disp_region


See also

::expand_region, ::junctions_skeleton, ::boundary


Module

Region processing



Copyright © 1996-2002 MVTec Software GmbH