Click or drag to resize
OIV.ImageViz.Engines.MathematicalMorphology.HitOrMissAndSkeleton Namespace

The Hit-or-miss and Skeleton category contains engines used to produce simplified representations of the objects in an image, while preserving their geometrical structure.

Classes
  ClassDescription
Public classSoApplyMorphologicalLutProcessing2d Obsolete.

OIV.ImageViz.Engines.MathematicalMorphology.HitOrMissAndSkeleton.SoApplyMorphologicalLutProcessing2d engine allows to apply a morphological look up table on a 2D image.

Public classSoApplyMorphologicalLutProcessing3d Obsolete.

OIV.ImageViz.Engines.MathematicalMorphology.HitOrMissAndSkeleton.SoApplyMorphologicalLutProcessing3d engine allows to apply a morphological look up table on a 3D image.

Public classSoCentroidProcessing2d Obsolete.
Public classSoEndPointsProcessing2d Obsolete.
Public classSoEndPointsProcessing3d Obsolete.
Public classSoInfluenceZonesProcessing Obsolete.
Public classSoInteriorPointsProcessing2d Obsolete.
Public classSoIsolatedPointsProcessing2d Obsolete.
Public classSoIsolatedPointsProcessing3d Obsolete.
Public classSoPruneProcessing2d Obsolete.
Public classSoPruningProcessing2d Obsolete.
Public classSoPruningProcessing3d Obsolete.
Public classSoSkeletonProcessing2d Obsolete.
Public classSoTriplePointsProcessing2d Obsolete.
Structures
Enumerations
Remarks

The representations may then be used to calculate length, direction, etc. or to detect special topological structures such as end or triple points (number of crossings).

Morphological LUT

A morphological LUT (Look Up Table) allows to move in a binary image some predefined configurations of neighborhood and apply a criteria when this configuration matches or not.

Creating a morphological LUT

First a kernel has to be defined to test if a given pixel matches a criteria or not. The kernel is made of classical binary pixel values : 0, 1 and a specific one: 2 which means 'don't care'.

For example:

A LUT to convert a binary image from an 8 neighbors connexity to 4 neighbors connexity can be defined testing if a given pixel has a neighbour in the north east, north west, south west and south east directions.

These kernels have to be added one by one to build the LUT, using the addKernel method. The first kernel has to be inserted with the mode NEW, that indicates the LUT has to be reset before to add this kernel inside. Other kernels have to be ineserted with the mode OR to indicate to look for this kernels or one of the previous.

  • In the 2D case 2 power 9 configurations of neighborhood are possible. The addKernel method function fills an array of 512 elements to build the LUT.

  • In the 3D case 2 power 27 configurations of neighborhood are theorically possible. A 5 bits reduction is applied. The addKernel method function fills an array of 4194304 elements to build the LUT.

    Applying a morphological LUT

    Once the LUT is created, it has to be specified what has to be done with the pixels that match the LUT and those that do not. Two flag fields are available to specify the different actions: flagTrue if the pixel matches and flagFalse if it does not. There are 4 possible values :

  • OUTPUT_ZERO : Force the output value to zero

  • OUPUT_ONE : Force the output value to one

  • OUTPUT_CHANGE : invert the output value

  • OUPUT_UNCHANGE : let the output value unchanged.

For example : to change the connexity from 8 neighbors connexity to 4 , if the pixel matches the criteria the output value has to be forced to 0 and if it does not it has to be let unchanged. Therefore flagTrue = OUTPUT_ZERO and flagFalse = OUPUT_UNCHANGE.

Thinning, thickening and hit-or-miss operation with Morphological LUT

As a consequence morphological LUT's can be used to perform classical neighborhood operations such as thinning, thickening and hit-or-miss :

Skeletonization

A skeletonization is a transformation based on the thinning of connected components until a line is achieved. A skeleton is obtained by successive thinnings until convergence, using the L configuration and rotating it. The structuring element is: where means "don't care".

Point detectors

Once a skeleton is computed it may be useful to detect specific configurations of points. The point detectors uses hit-or-miss transforms (HMT) to select target points. The following engines are point detectors : OIV.ImageViz.Engines.MathematicalMorphology.HitOrMissAndSkeleton.SoEndPointsProcessing2d, OIV.ImageViz.Engines.MathematicalMorphology.HitOrMissAndSkeleton.SoInteriorPointsProcessing2d, OIV.ImageViz.Engines.MathematicalMorphology.HitOrMissAndSkeleton.SoIsolatedPointsProcessing2d.