DIPlib Documentation - ©1995-2013 Quantitative Imaging Group, Delft University of Technology.

# MorphologicalRange

Morphological edge detector

## SYNOPSIS

`#include "dip_morphology.h"`

dip_Error dip_MorphologicalRange ( in, out, se, boundary, param, shape, edgeType )

## DATA TYPES

integer, float

## FUNCTION

Implements a morphological edge detector based on the difference of two complementary morphological operations. These can be chosen through the `edgeType` parameter.

The rectangular, elliptic and diamond structuring elements are "flat", i.e. these structuring elements have a constant value. For these structuring elements, `param` determines the sizes of the structuring elements.

When `shape` is `DIP_FLT_SHAPE_DISCRETE_LINE` or `DIP_FLT_SHAPE_INTERPOLATED_LINE`, the structuring element is a line. `param->array[0]` determines the length, `param->array[1]` the angle. This is currently only supported for 2D images. Interpolated lines use interpolation to obtain a more accurate result, but loose the strict increasingness and extensivity (these properties are satisfied only by approximation).

When `shape` is set to `DIP_FLT_SHAPE_PARABOLIC`, `params` specifies the curvature of the parabola.

When `shape` is set to `DIP_FLT_SHAPE_STRUCTURING_ELEMENT`, `se` is used as structuring element. It can be either a binary or a grey-value image. Its origin is the center, or one pixel to the left of the center if the size is even.

If `shape` is not equal to `DIP_FLT_SHAPE_STRUCTURING_ELEMENT`, `se` can be set to zero. When `shape` is set to `DIP_FLT_SHAPE_STRUCTURING_ELEMENT`, `param` is ignored, and can be set to zero.

## ARGUMENTS

Data type | Name | Description
`dip_Image` | `in` | Input
`dip_Image` | `out` | Output
`dip_Image` | `se` | Custom structuring element
`dip_BoundaryArray` | `boundary` | Boundary conditions
`dip_FloatArray` | `param` | Filter parameters
`dip_FilterShape` | `shape` | Structuring element
`dip_MphEdgeType` | `edgeType` | edgeType

The enumerator `dip_FilterShape` contains the following constants:

Name | Description
`DIP_FLT_SHAPE_DEFAULT` | Default filter window, same as `DIP_FLT_SHAPE_RECTANGULAR`
`DIP_FLT_SHAPE_RECTANGULAR` | Rectangular filter window, can be even in size
`DIP_FLT_SHAPE_ELLIPTIC` | Elliptic filter window, always odd in size
`DIP_FLT_SHAPE_DIAMOND` | Diamond-shaped filter window, always odd in size
`DIP_FLT_SHAPE_PARABOLIC` | Parabolic filter window (morphology only)
`DIP_FLT_SHAPE_DISCRETE_LINE` | Rotated line structuring element (morphology only)
`DIP_FLT_SHAPE_INTERPOLATED_LINE` | Rotated line structuring element, through interpolation (morphology only)
`DIP_FLT_SHAPE_PERIODIC_LINE` | (not implemented)
`DIP_FLT_SHAPE_STRUCTURING_ELEMENT` | Use `se` as filter window, can be any size

The enumerator `dip_MphEdgeType` contains the following constants:

Name | Description
`DIP_MPH_TEXTURE` | Response is limited to edges in texture
`DIP_MPH_OBJECT` | Response is limited to object edges
`DIP_MPH_BOTH` | All edges produce equal response

## SEE ALSO

`MorphologicalGradientMagnitude`, `Lee`, `MultiScaleMorphologicalGradient`, `Tophat`