# imregionalmax

Regional maxima

## Syntax

``BW = imregionalmax(I)``
``BW = imregionalmax(I,conn)``

## Description

````BW = imregionalmax(I)` returns the binary image `BW` that identifies the regional maxima in grayscale image `I`. Regional maxima are connected components of pixels with a constant intensity value, surrounded by pixels with a lower value.```

example

````BW = imregionalmax(I,conn)` specifies the pixel connectivity, `conn`.```

## Examples

collapse all

Create a simple sample image with several regional maxima.

```A = 10*ones(10,10); A(2:4,2:4) = 22; A(6:8,6:8) = 33; A(2,7) = 44; A(3,8) = 45; A(4,9) = 44```
```A = 10×10 10 10 10 10 10 10 10 10 10 10 10 22 22 22 10 10 44 10 10 10 10 22 22 22 10 10 10 45 10 10 10 22 22 22 10 10 10 10 44 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 33 33 33 10 10 10 10 10 10 10 33 33 33 10 10 10 10 10 10 10 33 33 33 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 ```

Find the regional maxima. Note that the result includes the regional maxima at (3,8).

`regmax = imregionalmax(A)`
```regmax = 10x10 logical array 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 1 1 0 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ```

## Input Arguments

collapse all

Grayscale image, specified as a numeric array of any dimension.

Example: `I = imread('cameraman.tif');`

Data Types: `single` | `double` | `int8` | `int16` | `int32` | `int64` | `uint8` | `uint16` | `uint32` | `uint64` | `logical`

Pixel connectivity, specified as one of the values in this table. The default connectivity is `8` for 2-D images, and `26` for 3-D images.

Value

Meaning

Two-Dimensional Connectivities

`4`

Pixels are connected if their edges touch. The neighborhood of a pixel are the adjacent pixels in the horizontal or vertical direction.

Current pixel is shown in gray.

`8`

Pixels are connected if their edges or corners touch. The neighborhood of a pixel are the adjacent pixels in the horizontal, vertical, or diagonal direction.

Current pixel is shown in gray.

Three-Dimensional Connectivities

`6`

Pixels are connected if their faces touch. The neighborhood of a pixel are the adjacent pixels in:

• One of these directions: in, out, left, right, up, and down

Current pixel is shown in gray.

`18`

Pixels are connected if their faces or edges touch. The neighborhood of a pixel are the adjacent pixels in:

• One of these directions: in, out, left, right, up, and down

• A combination of two directions, such as right-down or in-up

Current pixel is center of cube.

`26`

Pixels are connected if their faces, edges, or corners touch. The neighborhood of a pixel are the adjacent pixels in:

• One of these directions: in, out, left, right, up, and down

• A combination of two directions, such as right-down or in-up

• A combination of three directions, such as in-right-up or in-left-down

Current pixel is center of cube.

For higher dimensions, `imregionalmax` uses the default value `conndef(ndims(I),"maximal")`.

Connectivity can also be defined in a more general way for any dimension by specifying a 3-by-3-by- ... -by-3 matrix of `0`s and `1`s. The `1`-valued elements define neighborhood locations relative to the center element of `conn`. Note that `conn` must be symmetric about its center element. See Specifying Custom Connectivities for more information.

Data Types: `single` | `double` | `int8` | `int16` | `int32` | `int64` | `uint8` | `uint16` | `uint32` | `uint64`

## Output Arguments

collapse all

Locations of regional maxima, returned as a logical array of the same size as `I`. Pixels with the value `1` indicate regional maxima; all other pixels are set to `0`.

Data Types: `logical`

## Version History

Introduced before R2006a

expand all